On 11/21/18 6:07 PM, Alexis Bauvin wrote: > diff --git a/net/core/dev.c b/net/core/dev.c > index 93243479085f..12459036d0da 100644 > --- a/net/core/dev.c > +++ b/net/core/dev.c > @@ -7225,6 +7225,23 @@ void netdev_lower_state_changed(struct net_device > *lower_dev, > } > EXPORT_SYMBOL(netdev_lower_state_changed); > > +/** > + * netdev_is_upper_master - Test if a device is a master, direct or indirect, > + * of another one. > + * @dev: device to start looking from > + * @master: device to test if master of dev > + */ > +bool netdev_is_upper_master(struct net_device *dev, struct net_device > *master) > +{ > + if (!dev) > + return false; > + > + if (dev->ifindex == master->ifindex)
dev == master should work as well without the dereference. > + return true; > + return netdev_is_upper_master(netdev_master_upper_dev_get(dev), master); > +} > +EXPORT_SYMBOL(netdev_is_upper_master); > + > static void dev_change_rx_flags(struct net_device *dev, int flags) > { > const struct net_device_ops *ops = dev->netdev_ops; >