netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Re: [PATCH 1/2] net: Fix the condition passed to sk_wait_event()
@ 2010-10-02 12:08 Nagendra Tomar
  2010-10-02 20:26 ` David Miller
  0 siblings, 1 reply; 7+ messages in thread
From: Nagendra Tomar @ 2010-10-02 12:08 UTC (permalink / raw)
  To: netdev; +Cc: linux-kernel, davem

This is the first part of the split up patch submitted in http://www.spinics.net/lists/netdev/msg142617.html

This patch fixes the sk_wait_event() condition in the sk_stream_wait_connect() function. With this change, we correctly check for the TCPF_ESTABLISHED and TCPF_CLOSE_WAIT states and avoid potentially returning success when there is an error on the socket.

Signed-off-by: Nagendra Singh Tomar <tomer_iisc@yahoo.com>
---
--- linux-2.6.35.7/net/core/stream.c.orig	2010-03-24 09:30:00.000000000 +0530
+++ linux-2.6.35.7/net/core/stream.c	2010-03-24 09:30:17.000000000 +0530
@@ -73,9 +73,8 @@ int sk_stream_wait_connect(struct sock *
 		prepare_to_wait(sk_sleep(sk), &wait, TASK_INTERRUPTIBLE);
 		sk->sk_write_pending++;
 		done = sk_wait_event(sk, timeo_p,
-				     !sk->sk_err &&
-				     !((1 << sk->sk_state) &
-				       ~(TCPF_ESTABLISHED | TCPF_CLOSE_WAIT)));
+				     ((1 << sk->sk_state) &
+				       (TCPF_ESTABLISHED | TCPF_CLOSE_WAIT)));
 		finish_wait(sk_sleep(sk), &wait);
 		sk->sk_write_pending--;
 	} while (!done);

^ permalink raw reply	[flat|nested] 7+ messages in thread
* [PATCH 1/2] net: Fix the condition passed to sk_wait_event()
@ 2010-10-02 23:49 Nagendra Tomar
  0 siblings, 0 replies; 7+ messages in thread
From: Nagendra Tomar @ 2010-10-02 23:49 UTC (permalink / raw)
  To: netdev; +Cc: linux-kernel, davem

This patch fixes the sk_wait_event() condition in the sk_stream_wait_connect() 
function. With this change, we correctly check for the TCPF_ESTABLISHED and 
TCPF_CLOSE_WAIT states and avoid potentially returning success when there
might be an error on the socket.

Signed-off-by: Nagendra Singh Tomar <tomer_iisc@xxxxxxxxx>
---
--- linux-2.6.35.7/net/core/stream.c.orig	2010-03-24 09:30:00.000000000 +0530
+++ linux-2.6.35.7/net/core/stream.c	2010-03-24 09:30:17.000000000 +0530
@@ -73,9 +73,8 @@ int sk_stream_wait_connect(struct sock *
 		prepare_to_wait(sk_sleep(sk), &wait, TASK_INTERRUPTIBLE);
 		sk->sk_write_pending++;
 		done = sk_wait_event(sk, timeo_p,
-				     !sk->sk_err &&
-				     !((1 << sk->sk_state) &
-				       ~(TCPF_ESTABLISHED | TCPF_CLOSE_WAIT)));
+				     ((1 << sk->sk_state) &
+				       (TCPF_ESTABLISHED | TCPF_CLOSE_WAIT)));
 		finish_wait(sk_sleep(sk), &wait);
 		sk->sk_write_pending--;
 	} while (!done);

---



      

^ permalink raw reply	[flat|nested] 7+ messages in thread
* Re: [PATCH 1/2] net: Fix the condition passed to sk_wait_event()
@ 2010-10-03  1:30 Nagendra Tomar
  0 siblings, 0 replies; 7+ messages in thread
From: Nagendra Tomar @ 2010-10-03  1:30 UTC (permalink / raw)
  To: netdev; +Cc: linux-kernel, davem

Dave,
     Thinking more about it, we need to check for sk->sk_err, thus the 
existing code behaves fine. Just that we might incur an additional sleep
even while we know that the socket already has an error, but that should
be ok.
We only need the other patch. Pls ignore this, and sorry for the confusion.

Thanks,
Tomar

--- On Sun, 3/10/10, Nagendra Tomar <tomer_iisc@yahoo.com> wrote:

> From: Nagendra Tomar <tomer_iisc@yahoo.com>
> Subject: [PATCH 1/2] net: Fix the condition passed to sk_wait_event()
> To: netdev@vger.kernel.org
> Cc: linux-kernel@vger.kernel.org, davem@davemloft.net
> Date: Sunday, 3 October, 2010, 5:19
> This patch fixes the sk_wait_event()
> condition in the sk_stream_wait_connect() 
> function. With this change, we correctly check for the
> TCPF_ESTABLISHED and 
> TCPF_CLOSE_WAIT states and avoid potentially returning
> success when there
> might be an error on the socket.
> 
> Signed-off-by: Nagendra Singh Tomar
> <tomer_iisc@xxxxxxxxx>
> ---
> --- linux-2.6.35.7/net/core/stream.c.orig   
> 2010-03-24 09:30:00.000000000 +0530
> +++ linux-2.6.35.7/net/core/stream.c   
> 2010-03-24 09:30:17.000000000 +0530
> @@ -73,9 +73,8 @@ int sk_stream_wait_connect(struct sock *
>         
> prepare_to_wait(sk_sleep(sk), &wait,
> TASK_INTERRUPTIBLE);
>         
> sk->sk_write_pending++;
>          done =
> sk_wait_event(sk, timeo_p,
> -           
>          !sk->sk_err
> &&
> -           
>          !((1 <<
> sk->sk_state) &
> -           
>        
>    ~(TCPF_ESTABLISHED | TCPF_CLOSE_WAIT)));
> +           
>          ((1 <<
> sk->sk_state) &
> +           
>        
>    (TCPF_ESTABLISHED | TCPF_CLOSE_WAIT)));
>         
> finish_wait(sk_sleep(sk), &wait);
>         
> sk->sk_write_pending--;
>      } while (!done);
> 
> ---
> 
> 
> 
> 
> 



      

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2010-10-03  4:53 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-10-02 12:08 [PATCH 1/2] net: Fix the condition passed to sk_wait_event() Nagendra Tomar
2010-10-02 20:26 ` David Miller
2010-10-02 23:54   ` Nagendra Tomar
2010-10-03  0:06     ` David Miller
2010-10-03  4:53       ` Eric Dumazet
  -- strict thread matches above, loose matches on Subject: below --
2010-10-02 23:49 Nagendra Tomar
2010-10-03  1:30 Nagendra Tomar

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).