]> git.hungrycats.org Git - linux/commitdiff
ipx: call ipxitf_put() in ioctl error path
authorDan Carpenter <dan.carpenter@oracle.com>
Tue, 2 May 2017 10:58:53 +0000 (13:58 +0300)
committerBen Hutchings <ben@decadent.org.uk>
Mon, 5 Jun 2017 20:17:23 +0000 (21:17 +0100)
commit ee0d8d8482345ff97a75a7d747efc309f13b0d80 upstream.

We should call ipxitf_put() if the copy_to_user() fails.

Reported-by: 李强 <liqiang6-s@360.cn>
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
net/ipx/af_ipx.c

index 1b095ca37aa46bd86a534a5d7eff4824d65b2ef2..bc043dc9896370edfd210d6f3e22e7d7733a0f21 100644 (file)
@@ -1168,11 +1168,10 @@ static int ipxitf_ioctl(unsigned int cmd, void __user *arg)
                sipx->sipx_network      = ipxif->if_netnum;
                memcpy(sipx->sipx_node, ipxif->if_node,
                        sizeof(sipx->sipx_node));
-               rc = -EFAULT;
+               rc = 0;
                if (copy_to_user(arg, &ifr, sizeof(ifr)))
-                       break;
+                       rc = -EFAULT;
                ipxitf_put(ipxif);
-               rc = 0;
                break;
        }
        case SIOCAIPXITFCRT: