diff mbox

[1/4] X.25 remove bkl in listen

Message ID 1284507076.1742.51.camel@jaunty
State Accepted, archived
Delegated to: David Miller
Headers show

Commit Message

andrew hendry Sept. 14, 2010, 11:31 p.m. UTC
Listen updates socket values and needs lock_sock.

Signed-off-by: Andrew Hendry <andrew.hendry@gmail.com>

---
 net/x25/af_x25.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

Comments

David Miller Sept. 15, 2010, 3:40 a.m. UTC | #1
From: Andrew Hendry <andrew.hendry@gmail.com>
Date: Wed, 15 Sep 2010 09:31:16 +1000

> Listen updates socket values and needs lock_sock.
> 
> Signed-off-by: Andrew Hendry <andrew.hendry@gmail.com>

Applied.

Although you may want to think about whether we need to also hold the
x25_list_lock as a writer here so that scanners of the socket list see
consistent state changes.
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
andrew hendry Sept. 15, 2010, 3:43 a.m. UTC | #2
Thanks, I'll test that and have a close look at it for the next round.

On Wed, Sep 15, 2010 at 1:40 PM, David Miller <davem@davemloft.net> wrote:
> From: Andrew Hendry <andrew.hendry@gmail.com>
> Date: Wed, 15 Sep 2010 09:31:16 +1000
>
>> Listen updates socket values and needs lock_sock.
>>
>> Signed-off-by: Andrew Hendry <andrew.hendry@gmail.com>
>
> Applied.
>
> Although you may want to think about whether we need to also hold the
> x25_list_lock as a writer here so that scanners of the socket list see
> consistent state changes.
>
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/net/x25/af_x25.c b/net/x25/af_x25.c
index 5e86d4e..f6a8f17 100644
--- a/net/x25/af_x25.c
+++ b/net/x25/af_x25.c
@@ -507,14 +507,14 @@  static int x25_listen(struct socket *sock, int backlog)
 	struct sock *sk = sock->sk;
 	int rc = -EOPNOTSUPP;
 
-	lock_kernel();
+	lock_sock(sk);
 	if (sk->sk_state != TCP_LISTEN) {
 		memset(&x25_sk(sk)->dest_addr, 0, X25_ADDR_LEN);
 		sk->sk_max_ack_backlog = backlog;
 		sk->sk_state           = TCP_LISTEN;
 		rc = 0;
 	}
-	unlock_kernel();
+	release_sock(sk);
 
 	return rc;
 }