diff options
Diffstat (limited to 'net')
-rw-r--r-- | net/netlink/af_netlink.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/net/netlink/af_netlink.c b/net/netlink/af_netlink.c index aeefe127691a..627f898c05b9 100644 --- a/net/netlink/af_netlink.c +++ b/net/netlink/af_netlink.c | |||
@@ -2059,6 +2059,7 @@ static int netlink_dump(struct sock *sk) | |||
2059 | struct netlink_callback *cb; | 2059 | struct netlink_callback *cb; |
2060 | struct sk_buff *skb = NULL; | 2060 | struct sk_buff *skb = NULL; |
2061 | struct nlmsghdr *nlh; | 2061 | struct nlmsghdr *nlh; |
2062 | struct module *module; | ||
2062 | int len, err = -ENOBUFS; | 2063 | int len, err = -ENOBUFS; |
2063 | int alloc_min_size; | 2064 | int alloc_min_size; |
2064 | int alloc_size; | 2065 | int alloc_size; |
@@ -2134,9 +2135,11 @@ static int netlink_dump(struct sock *sk) | |||
2134 | cb->done(cb); | 2135 | cb->done(cb); |
2135 | 2136 | ||
2136 | nlk->cb_running = false; | 2137 | nlk->cb_running = false; |
2138 | module = cb->module; | ||
2139 | skb = cb->skb; | ||
2137 | mutex_unlock(nlk->cb_mutex); | 2140 | mutex_unlock(nlk->cb_mutex); |
2138 | module_put(cb->module); | 2141 | module_put(module); |
2139 | consume_skb(cb->skb); | 2142 | consume_skb(skb); |
2140 | return 0; | 2143 | return 0; |
2141 | 2144 | ||
2142 | errout_skb: | 2145 | errout_skb: |