From: Eric Dumazet Date: Tue, 22 Mar 2011 01:16:39 +0000 (-0700) Subject: ipx: fix ipx_release() X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=674f2115995b7b588cbf3540c9f9b2448a8c7ea8;p=GitHub%2Fmoto-9609%2Fandroid_kernel_motorola_exynos9610.git ipx: fix ipx_release() Commit b0d0d915d1d1a0 (remove the BKL) added a regression, because sock_put() can free memory while we are going to use it later. Fix is to delay sock_put() _after_ release_sock(). Reported-by: Ingo Molnar Tested-by: Ingo Molnar Signed-off-by: Eric Dumazet Acked-by: Arnd Bergmann Signed-off-by: David S. Miller --- diff --git a/net/ipx/af_ipx.c b/net/ipx/af_ipx.c index 2731b51923d1..9680226640ef 100644 --- a/net/ipx/af_ipx.c +++ b/net/ipx/af_ipx.c @@ -148,7 +148,6 @@ static void ipx_destroy_socket(struct sock *sk) ipx_remove_socket(sk); skb_queue_purge(&sk->sk_receive_queue); sk_refcnt_debug_dec(sk); - sock_put(sk); } /* @@ -1404,6 +1403,7 @@ static int ipx_release(struct socket *sock) sk_refcnt_debug_release(sk); ipx_destroy_socket(sk); release_sock(sk); + sock_put(sk); out: return 0; }