diff options
author | Sabrina Dubroca <sd@queasysnail.net> | 2016-07-29 15:37:55 +0200 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2016-07-30 21:11:08 -0700 |
commit | 0759e552bce7257db542e203a01a9ef8843c751e (patch) | |
tree | 93c36c2d45305788c3c869bd9d636dbaaa3a70f7 /drivers/net | |
parent | 36b232c880c99fc03e135198c7c08d3d4b4f83ab (diff) | |
download | linux-0759e552bce7257db542e203a01a9ef8843c751e.tar.gz linux-0759e552bce7257db542e203a01a9ef8843c751e.tar.bz2 linux-0759e552bce7257db542e203a01a9ef8843c751e.zip |
macsec: fix negative refcnt on parent link
When creation of a macsec device fails because an identical device
already exists on this link, the current code decrements the refcnt on
the parent link (in ->destructor for the macsec device), but it had not
been incremented yet.
Move the dev_hold(parent_link) call earlier during macsec device
creation.
Fixes: c09440f7dcb3 ("macsec: introduce IEEE 802.1AE driver")
Signed-off-by: Sabrina Dubroca <sd@queasysnail.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net')
-rw-r--r-- | drivers/net/macsec.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/net/macsec.c b/drivers/net/macsec.c index 7f5c5e0f9cf9..d13e6e15d7b5 100644 --- a/drivers/net/macsec.c +++ b/drivers/net/macsec.c @@ -3179,6 +3179,8 @@ static int macsec_newlink(struct net *net, struct net_device *dev, if (err < 0) return err; + dev_hold(real_dev); + /* need to be already registered so that ->init has run and * the MAC addr is set */ @@ -3207,8 +3209,6 @@ static int macsec_newlink(struct net *net, struct net_device *dev, macsec_generation++; - dev_hold(real_dev); - return 0; del_dev: |