Hi Andrew, On Wed, Jan 23, 2019 at 06:08:16PM +0100, Andrew Lunn wrote: > > +int phy_macsec(struct phy_device *phydev, struct netdev_macsec *macsec) > > +{ > > + int ret = -EOPNOTSUPP; > > + > > + if (!phydev->drv) > > + return -EIO; > > + > > + mutex_lock(&phydev->lock); > > + > > + if (phydev->drv->macsec) > > + ret = phydev->drv->macsec(phydev, macsec); > > + > > + mutex_unlock(&phydev->lock); > > + return ret; > > +} > > +EXPORT_SYMBOL_GPL(phy_macsec); > > + > > > @@ -630,6 +634,10 @@ struct phy_driver { > > struct ethtool_tunable *tuna, > > const void *data); > > int (*set_loopback)(struct phy_device *dev, bool enable); > > + > > +#ifdef CONFIG_MACSEC > > + int (*macsec)(struct phy_device *dev, struct netdev_macsec *macsec); > > +#endif > > > So the member only exists if CONFIG_MACSEC is defined. So i think you > need similar protection in phy_macsec() or you are going to try to > access a member which sometimes does not exist.
Right, I'll fix that and protect the phy_macsec definition within an '#ifdef CONFIG_MACSEC'. Thanks! Antoine -- Antoine Ténart, Bootlin Embedded Linux and Kernel engineering https://bootlin.com