On Fri, 14 Oct 2016 18:28:42 -0700 David Ahern <d...@cumulusnetworks.com> wrote:
> > /** > + * netdev_has_upper_dev_all - Check if device is linked to an upper device > + * @dev: device > + * @upper_dev: upper device to check > + * > + * Find out if a device is linked to specified upper device and return true > + * in case it is. Note that this checks the entire upper device chain. > + * The caller must hold rcu lock. > + */ > + > +static int __netdev_has_upper_dev(struct net_device *upper_dev, void *data) > +{ > + struct net_device *dev = (struct net_device *)data; > + > + if (upper_dev == dev) > + return 1; > + > + return 0; > +} > + > +bool netdev_has_upper_dev_all_rcu(struct net_device *dev, > + struct net_device *upper_dev) > +{ > + if (netdev_walk_all_upper_dev_rcu(dev, __netdev_has_upper_dev, > + upper_dev)) > + return true; > + > + return false; > +} > +EXPORT_SYMBOL(netdev_has_upper_dev_all_rcu); You should write this more succinctly as: static bool __netdev_has_upper_dev(struct net_device *upper_dev, void *data) { struct net_device *dev = data; return upper_dev == dev; } bool netdev_has_upper_dev_all_rcu(struct net_device *dev, struct net_device *upper_dev) { return netdev_walk_all_upper_dev_rcu(dev, __netdev_has_upper_dev, upper_dev); } No if/else needed. No cast of void * ptr need. Use const if possible?