netlink: Fix dump skb leak/double free
[deliverable/linux.git] / net / netlink / af_netlink.c
index aeefe127691a8f14f132a5c6db8ad3e8a68d546a..627f898c05b96552318a881ce995ccc3342e1576 100644 (file)
@@ -2059,6 +2059,7 @@ static int netlink_dump(struct sock *sk)
        struct netlink_callback *cb;
        struct sk_buff *skb = NULL;
        struct nlmsghdr *nlh;
+       struct module *module;
        int len, err = -ENOBUFS;
        int alloc_min_size;
        int alloc_size;
@@ -2134,9 +2135,11 @@ static int netlink_dump(struct sock *sk)
                cb->done(cb);
 
        nlk->cb_running = false;
+       module = cb->module;
+       skb = cb->skb;
        mutex_unlock(nlk->cb_mutex);
-       module_put(cb->module);
-       consume_skb(cb->skb);
+       module_put(module);
+       consume_skb(skb);
        return 0;
 
 errout_skb:
This page took 0.027938 seconds and 5 git commands to generate.