Skip to contentSkip to conversation

macsec: missing dev_put() on error in macsec_newlink()

PATCH In review Dan Carpenter 2 participants 2 messages Mar 21, 2018 – Mar 22, 2018

Subsystems (4)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 macsec: missing dev_put() on error in macsec_newlink()

We moved the dev_hold(real_dev); call earlier in the function but forgot to update the error paths.

Fixes 0759e552bce7 ("macsec: fix negative refcnt on parent link")
drivers/net/macsec.c +3 -2
index 7de88b33d5b9..9cbb0c8a896a 100644
@@ -3277,7 +3277,7 @@ static int macsec_newlink(struct net *net, struct net_device *dev,
 
 	err = netdev_upper_dev_link(real_dev, dev, extack);
 	if (err < 0)
-		goto unregister;
+		goto put_dev;
 
 	/* need to be already registered so that ->init has run and
 	 * the MAC addr is set
@@ -3316,7 +3316,8 @@ static int macsec_newlink(struct net *net, struct net_device *dev,
 	macsec_del_dev(macsec);
 unlink:
 	netdev_upper_dev_unlink(real_dev, dev);
-unregister:
+put_dev:
+	dev_put(real_dev);
 	unregister_netdevice(dev);
 	return err;
 }
maintainer
#1 lore raw

From: Dan Carpenter <[email protected]>
Date: Wed, 21 Mar 2018 11:09:01 +0300

Quoted 5 lines

We moved the dev_hold(real_dev); call earlier in the function but forgot to update the error paths.

Fixes 0759e552bce7 ("macsec: fix negative refcnt on parent link")

Applied and queued up for -stable, thanks Dan.