|
@@ -2059,6 +2059,7 @@ static int netlink_dump(struct sock *sk)
|
|
struct netlink_callback *cb;
|
|
struct netlink_callback *cb;
|
|
struct sk_buff *skb = NULL;
|
|
struct sk_buff *skb = NULL;
|
|
struct nlmsghdr *nlh;
|
|
struct nlmsghdr *nlh;
|
|
|
|
+ struct module *module;
|
|
int len, err = -ENOBUFS;
|
|
int len, err = -ENOBUFS;
|
|
int alloc_min_size;
|
|
int alloc_min_size;
|
|
int alloc_size;
|
|
int alloc_size;
|
|
@@ -2134,9 +2135,11 @@ static int netlink_dump(struct sock *sk)
|
|
cb->done(cb);
|
|
cb->done(cb);
|
|
|
|
|
|
nlk->cb_running = false;
|
|
nlk->cb_running = false;
|
|
|
|
+ module = cb->module;
|
|
|
|
+ skb = cb->skb;
|
|
mutex_unlock(nlk->cb_mutex);
|
|
mutex_unlock(nlk->cb_mutex);
|
|
- module_put(cb->module);
|
|
|
|
- consume_skb(cb->skb);
|
|
|
|
|
|
+ module_put(module);
|
|
|
|
+ consume_skb(skb);
|
|
return 0;
|
|
return 0;
|
|
|
|
|
|
errout_skb:
|
|
errout_skb:
|