[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Date: Tue, 14 Sep 2010 20:40:49 -0700 (PDT)
From: David Miller <davem@...emloft.net>
To: andrew.hendry@...il.com
Cc: netdev@...r.kernel.org
Subject: Re: [PATCH 3/4] X.25 remove bkl in accept
From: Andrew Hendry <andrew.hendry@...il.com>
Date: Wed, 15 Sep 2010 09:31:50 +1000
> Accept already has socket locking.
>
> Signed-off-by: Andrew Hendry <andrew.hendry@...il.com>
Applied, but I took the liberty of moving the socket locking
above the TCP_LISTEN state check as follows:
--------------------
X.25 remove bkl in accept
Accept already has socket locking.
[ Extend socket locking over TCP_LISTEN state test. -DaveM ]
Signed-off-by: Andrew Hendry <andrew.hendry@...il.com>
Signed-off-by: David S. Miller <davem@...emloft.net>
---
net/x25/af_x25.c | 8 +++++---
1 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/net/x25/af_x25.c b/net/x25/af_x25.c
index bd6fce3..04321ee 100644
--- a/net/x25/af_x25.c
+++ b/net/x25/af_x25.c
@@ -869,8 +869,7 @@ static int x25_accept(struct socket *sock, struct socket *newsock, int flags)
struct sk_buff *skb;
int rc = -EINVAL;
- lock_kernel();
- if (!sk || sk->sk_state != TCP_LISTEN)
+ if (!sk)
goto out;
rc = -EOPNOTSUPP;
@@ -878,6 +877,10 @@ static int x25_accept(struct socket *sock, struct socket *newsock, int flags)
goto out;
lock_sock(sk);
+ rc = -EINVAL;
+ if (sk->sk_state != TCP_LISTEN)
+ goto out2;
+
rc = x25_wait_for_data(sk, sk->sk_rcvtimeo);
if (rc)
goto out2;
@@ -897,7 +900,6 @@ static int x25_accept(struct socket *sock, struct socket *newsock, int flags)
out2:
release_sock(sk);
out:
- unlock_kernel();
return rc;
}
--
1.7.2.2
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists