diff options
author | Dan Carpenter <error27@gmail.com> | 2010-04-22 01:53:27 +0200 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2010-04-23 00:57:26 +0200 |
commit | 80032cffb95edff4fc216b1cb21682257be326b7 (patch) | |
tree | e058d007a9db28dcb61a5903b6d79e5e6b96f0c3 /net | |
parent | net: ipv6 bind to device issue (diff) | |
download | linux-80032cffb95edff4fc216b1cb21682257be326b7.tar.xz linux-80032cffb95edff4fc216b1cb21682257be326b7.zip |
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>
Diffstat (limited to 'net')
-rw-r--r-- | 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 4568120d8533..fe776c9ddeca 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) |