rtnetlink: potential ERR_PTR dereference

Previous thread: ipv6: allow to send packet after receiving ICMPv6 Too Big message with MTU field less than IPV6_MIN_MTU by Linux Kernel Mailing List on Saturday, April 24, 2010 - 3:59 pm. (1 message)

Next thread: net: ipv6 bind to device issue by Linux Kernel Mailing List on Saturday, April 24, 2010 - 3:59 pm. (1 message)
From: Linux Kernel Mailing List
Date: Saturday, April 24, 2010 - 3:59 pm

Gitweb:     http://git.kernel.org/linus/80032cffb95edff4fc216b1cb21682257be326b7
Commit:     80032cffb95edff4fc216b1cb21682257be326b7
Parent:     f4f914b58019f0e50d521bbbadfaee260d766f95
Author:     Dan Carpenter <error27@gmail.com>
AuthorDate: Wed Apr 21 23:53:27 2010 +0000
Committer:  David S. Miller <davem@davemloft.net>
CommitDate: Thu Apr 22 15:57:26 2010 -0700

    rtnetlink: potential ERR_PTR dereference
    
    In the original code, if rtnl_create_link() returned an ERR_PTR then that
    would get passed to rtnl_configure_link() which dereferences it.
    
    Signed-off-by: Dan Carpenter <error27@gmail.com>
    Acked-by: Patrick McHardy <kaber@trash.net>
    Signed-off-by: David S. Miller <davem@davemloft.net>
---
 net/core/rtnetlink.c |    5 +++--
 1 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/net/core/rtnetlink.c b/net/core/rtnetlink.c
index 4568120..fe776c9 100644
--- a/net/core/rtnetlink.c
+++ b/net/core/rtnetlink.c
@@ -1270,10 +1270,11 @@ replay:
 			err = ops->newlink(net, dev, tb, data);
 		else
 			err = register_netdevice(dev);
-		if (err < 0 && !IS_ERR(dev)) {
+
+		if (err < 0 && !IS_ERR(dev))
 			free_netdev(dev);
+		if (err < 0)
 			goto out;
-		}
 
 		err = rtnl_configure_link(dev, ifm);
 		if (err < 0)
--

Previous thread: ipv6: allow to send packet after receiving ICMPv6 Too Big message with MTU field less than IPV6_MIN_MTU by Linux Kernel Mailing List on Saturday, April 24, 2010 - 3:59 pm. (1 message)

Next thread: net: ipv6 bind to device issue by Linux Kernel Mailing List on Saturday, April 24, 2010 - 3:59 pm. (1 message)