put net when input a invalid ifindex, otherwise it will be leaked

Fixes: 5fcd266a9f64("net/ipv4: Add support for dumping addresses for a specific 
device")
Cc: David Ahern <dsah...@gmail.com>
Signed-off-by: Zhang Yu <zhangy...@baidu.com>
Signed-off-by: Li RongQing <lirongq...@baidu.com>
---
 net/ipv4/devinet.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/net/ipv4/devinet.c b/net/ipv4/devinet.c
index 63d5b58fbfdb..fd0c5a47e742 100644
--- a/net/ipv4/devinet.c
+++ b/net/ipv4/devinet.c
@@ -1775,8 +1775,10 @@ static int inet_dump_ifaddr(struct sk_buff *skb, struct 
netlink_callback *cb)
 
                if (fillargs.ifindex) {
                        dev = __dev_get_by_index(tgt_net, fillargs.ifindex);
-                       if (!dev)
+                       if (!dev) {
+                               put_net(tgt_net);
                                return -ENODEV;
+                       }
 
                        in_dev = __in_dev_get_rtnl(dev);
                        if (in_dev) {
-- 
2.16.2

Reply via email to