diff --git a/drivers/net/macsec.c b/drivers/net/macsec.c index 10a8ef2d025a16ad855f0978d96536c8ee44b7ff..a0f565814d30949777cfc8a47afc841c972f93bd 100644 --- a/drivers/net/macsec.c +++ b/drivers/net/macsec.c @@ -2783,6 +2783,9 @@ static int macsec_dev_init(struct net_device *dev) if (is_zero_ether_addr(dev->broadcast)) memcpy(dev->broadcast, real_dev->broadcast, dev->addr_len); + /* Get macsec's reference to real_dev */ + dev_hold(real_dev); + return 0; } @@ -3009,6 +3012,8 @@ static void macsec_free_netdev(struct net_device *dev) free_percpu(macsec->stats); free_percpu(macsec->secy.tx_sc.stats); + /* Get rid of the macsec's reference to real_dev */ + dev_put(macsec->real_dev); } static void macsec_setup(struct net_device *dev)