Patchwork tcp: fix a panic on UP machines in reqsk_fastopen_remove

login
register
mail settings
Submitter Eric Dumazet
Date Jan. 14, 2013, 4:21 a.m.
Message ID <1358137311.8744.1590.camel@edumazet-glaptop>
Download mbox | patch
Permalink /patch/211701/
State Accepted
Delegated to: David Miller
Headers show

Comments

Eric Dumazet - Jan. 14, 2013, 4:21 a.m.
From: Eric Dumazet <edumazet@google.com>

spin_is_locked() on a non !SMP build is kind of useless.

BUG_ON(!spin_is_locked(xx)) is guaranteed to crash.

Just remove this check in reqsk_fastopen_remove() as
the callers do hold the socket lock.

Reported-by: Ketan Kulkarni <ketkulka@gmail.com>
Signed-off-by: Eric Dumazet <edumazet@google.com>
Cc: Jerry Chu <hkchu@google.com>
Cc: Yuchung Cheng <ycheng@google.com>
Cc: Dave Taht <dave.taht@gmail.com>
---
 net/core/request_sock.c |    2 --
 1 file changed, 2 deletions(-)



--
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
Jerry Chu - Jan. 14, 2013, 8:26 a.m.
On Sun, Jan 13, 2013 at 8:21 PM, Eric Dumazet <eric.dumazet@gmail.com> wrote:
> From: Eric Dumazet <edumazet@google.com>
>
> spin_is_locked() on a non !SMP build is kind of useless.
>
> BUG_ON(!spin_is_locked(xx)) is guaranteed to crash.
>
> Just remove this check in reqsk_fastopen_remove() as
> the callers do hold the socket lock.
>
> Reported-by: Ketan Kulkarni <ketkulka@gmail.com>
> Signed-off-by: Eric Dumazet <edumazet@google.com>
> Cc: Jerry Chu <hkchu@google.com>
> Cc: Yuchung Cheng <ycheng@google.com>
> Cc: Dave Taht <dave.taht@gmail.com>
> ---
>  net/core/request_sock.c |    2 --
>  1 file changed, 2 deletions(-)
>
> diff --git a/net/core/request_sock.c b/net/core/request_sock.c
> index c31d9e8..4425148 100644
> --- a/net/core/request_sock.c
> +++ b/net/core/request_sock.c
> @@ -186,8 +186,6 @@ void reqsk_fastopen_remove(struct sock *sk, struct request_sock *req,
>         struct fastopen_queue *fastopenq =
>             inet_csk(lsk)->icsk_accept_queue.fastopenq;
>
> -       BUG_ON(!spin_is_locked(&sk->sk_lock.slock) && !sock_owned_by_user(sk));
> -
>         tcp_sk(sk)->fastopen_rsk = NULL;
>         spin_lock_bh(&fastopenq->lock);
>         fastopenq->qlen--;
>
>

Thanks, Eric. (I thought the assertion would be transparent to UP...)

Acked-by: H.K. Jerry Chu <hkchu@google.com>
--
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
David Miller - Jan. 14, 2013, 11:10 p.m.
From: Jerry Chu <hkchu@google.com>
Date: Mon, 14 Jan 2013 00:26:26 -0800

> On Sun, Jan 13, 2013 at 8:21 PM, Eric Dumazet <eric.dumazet@gmail.com> wrote:
>> From: Eric Dumazet <edumazet@google.com>
>>
>> spin_is_locked() on a non !SMP build is kind of useless.
>>
>> BUG_ON(!spin_is_locked(xx)) is guaranteed to crash.
>>
>> Just remove this check in reqsk_fastopen_remove() as
>> the callers do hold the socket lock.
>>
>> Reported-by: Ketan Kulkarni <ketkulka@gmail.com>
>> Signed-off-by: Eric Dumazet <edumazet@google.com>
 ...
> Thanks, Eric. (I thought the assertion would be transparent to UP...)
> 
> Acked-by: H.K. Jerry Chu <hkchu@google.com>
> 

Applied, thanks.
--
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

Patch

diff --git a/net/core/request_sock.c b/net/core/request_sock.c
index c31d9e8..4425148 100644
--- a/net/core/request_sock.c
+++ b/net/core/request_sock.c
@@ -186,8 +186,6 @@  void reqsk_fastopen_remove(struct sock *sk, struct request_sock *req,
 	struct fastopen_queue *fastopenq =
 	    inet_csk(lsk)->icsk_accept_queue.fastopenq;
 
-	BUG_ON(!spin_is_locked(&sk->sk_lock.slock) && !sock_owned_by_user(sk));
-
 	tcp_sk(sk)->fastopen_rsk = NULL;
 	spin_lock_bh(&fastopenq->lock);
 	fastopenq->qlen--;