tcp: fix MSG_PEEK race check
authorIlpo Järvinen <ilpo.jarvinen@helsinki.fi>
Sun, 10 May 2009 20:32:34 +0000 (20:32 +0000)
committerDavid S. Miller <davem@davemloft.net>
Mon, 18 May 2009 22:05:40 +0000 (15:05 -0700)
commit775273131810caa41dfc7f9e552ea5d8508caf40
tree38ee8e4815d614c483be352524134c6f7fc163c3
parent705efc3b03cbee449e4d83b230423894152f7982
tcp: fix MSG_PEEK race check

Commit 518a09ef11 (tcp: Fix recvmsg MSG_PEEK influence of
blocking behavior) lets the loop run longer than the race check
did previously expect, so we need to be more careful with this
check and consider the work we have been doing.

I tried my best to deal with urg hole madness too which happens
here:
if (!sock_flag(sk, SOCK_URGINLINE)) {
++*seq;
...
by using additional offset by one but I certainly have very
little interest in testing that part.

Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@helsinki.fi>
Tested-by: Frans Pop <elendil@planet.nl>
Tested-by: Ian Zimmermann <itz@buug.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv4/tcp.c