From d3618f6db8b4b1e76d2ee3fe92256959d7b0c398 Mon Sep 17 00:00:00 2001 From: Hendrik Brueckner Date: Wed, 16 Sep 2009 04:37:27 +0000 Subject: [PATCH] --- yaml --- r: 162921 b: refs/heads/master c: 7514bab04e567c9408fe0facbde4277f09d5eb74 h: refs/heads/master i: 162919: 8e272b43418fab3ef1af5fe8a2b0a612f0828422 v: v3 --- [refs] | 2 +- trunk/net/iucv/af_iucv.c | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/[refs] b/[refs] index fcb4483dbad2..a9813ecadb75 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 56a73de3889383b70ed1fef06aaab0677731b0ea +refs/heads/master: 7514bab04e567c9408fe0facbde4277f09d5eb74 diff --git a/trunk/net/iucv/af_iucv.c b/trunk/net/iucv/af_iucv.c index a48fd2871532..c23ed4ff04c6 100644 --- a/trunk/net/iucv/af_iucv.c +++ b/trunk/net/iucv/af_iucv.c @@ -361,10 +361,9 @@ static void iucv_sock_cleanup_listen(struct sock *parent) } parent->sk_state = IUCV_CLOSED; - sock_set_flag(parent, SOCK_ZAPPED); } -/* Kill socket */ +/* Kill socket (only if zapped and orphaned) */ static void iucv_sock_kill(struct sock *sk) { if (!sock_flag(sk, SOCK_ZAPPED) || sk->sk_socket) @@ -426,17 +425,18 @@ static void iucv_sock_close(struct sock *sk) skb_queue_purge(&iucv->send_skb_q); skb_queue_purge(&iucv->backlog_skb_q); - - sock_set_flag(sk, SOCK_ZAPPED); break; default: sock_set_flag(sk, SOCK_ZAPPED); + /* nothing to do here */ break; } + /* mark socket for deletion by iucv_sock_kill() */ + sock_set_flag(sk, SOCK_ZAPPED); + release_sock(sk); - iucv_sock_kill(sk); } static void iucv_sock_init(struct sock *sk, struct sock *parent)