From a68fc5228994e5d13868746631a8ed05fa812cb9 Mon Sep 17 00:00:00 2001 From: Jarek Poplawski Date: Tue, 1 Apr 2008 23:56:17 -0700 Subject: [PATCH] --- yaml --- r: 88039 b: refs/heads/master c: 4965291acf8cc2c31dcb2fc7d292a04ee08da2dd h: refs/heads/master i: 88037: fba01b497badbae019f9e8a278985d6ea6a4609e 88035: a206463850b379fb2a22e94334f07af1d137e2ad 88031: 4b8b5cc63a23cc32528e3e145aa8d9378ddc801f v: v3 --- [refs] | 2 +- trunk/net/rose/af_rose.c | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 09fcda8ac9fa..500e99d71b79 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: d43c7b37ad787173d08683f05eadeea0398fefdf +refs/heads/master: 4965291acf8cc2c31dcb2fc7d292a04ee08da2dd diff --git a/trunk/net/rose/af_rose.c b/trunk/net/rose/af_rose.c index 4a31a81059ab..063cbc5c26b1 100644 --- a/trunk/net/rose/af_rose.c +++ b/trunk/net/rose/af_rose.c @@ -598,17 +598,24 @@ static int rose_release(struct socket *sock) if (sk == NULL) return 0; + sock_hold(sk); + sock_orphan(sk); + lock_sock(sk); rose = rose_sk(sk); switch (rose->state) { case ROSE_STATE_0: + release_sock(sk); rose_disconnect(sk, 0, -1, -1); + lock_sock(sk); rose_destroy_socket(sk); break; case ROSE_STATE_2: rose->neighbour->use--; + release_sock(sk); rose_disconnect(sk, 0, -1, -1); + lock_sock(sk); rose_destroy_socket(sk); break; @@ -633,6 +640,8 @@ static int rose_release(struct socket *sock) } sock->sk = NULL; + release_sock(sk); + sock_put(sk); return 0; }