From 1972338232c99b8d46a1a76a7afcba65e4183db2 Mon Sep 17 00:00:00 2001 From: Sabrina Dubroca Date: Fri, 29 Jul 2016 15:37:55 +0200 Subject: [PATCH] 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: 4f0c7417cca8 ("macsec: introduce IEEE 802.1AE driver") Signed-off-by: Sabrina Dubroca Signed-off-by: David S. Miller --- drivers/net/macsec.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/net/macsec.c b/drivers/net/macsec.c index 7f5c5e0f9cf98..d13e6e15d7b5e 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: -- 2.39.5