From: Frans Pop <elendil@planet.nl>
To: "Ilpo Järvinen" <ilpo.jarvinen@helsinki.fi>
Cc: Matthias Andree <matthias.andree@gmx.de>,
Netdev <netdev@vger.kernel.org>,
David Miller <davem@davemloft.net>
Subject: Re: [PATCH v2] tcp: fix MSG_PEEK race check
Date: Mon, 11 May 2009 14:50:05 +0200 [thread overview]
Message-ID: <200905111450.06749.elendil@planet.nl> (raw)
In-Reply-To: <Pine.LNX.4.64.0905110926520.10047@wrl-59.cs.helsinki.fi>
On Monday 11 May 2009, Ilpo Järvinen wrote:
> I took my time to fix the urg_hole madness too. The patch below.
Hmm. I wonder if it wouldn't be better to keep the two issues separate.
The initial patch is a clear regression fix (4 people have reported it
against fetchmail for Debian). The URG part is IMO a separate issue which
I at least have never seen in practice.
And my Tested-by doesn't cover the additional change either.
That said, I have added the URG change (as an incremental patch) in my
local git repo and will give it a go when I next build a kernel (may take
a week). I don't expect to be able to confirm it fixes the URG race, but
I can at least check that it doesn't cause any false messages with my
(spectacularly unspectacular) network traffic. I'll report the result.
> --
> [PATCH v2] 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>
> ---
> net/ipv4/tcp.c | 5 ++++-
> 1 files changed, 4 insertions(+), 1 deletions(-)
>
> diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c
> index 1d7f49c..7a0f0b2 100644
> --- a/net/ipv4/tcp.c
> +++ b/net/ipv4/tcp.c
> @@ -1321,6 +1321,7 @@ int tcp_recvmsg(struct kiocb *iocb, struct sock
> *sk, struct msghdr *msg, struct task_struct *user_recv = NULL;
> int copied_early = 0;
> struct sk_buff *skb;
> + u32 urg_hole = 0;
>
> lock_sock(sk);
>
> @@ -1532,7 +1533,8 @@ do_prequeue:
> }
> }
> }
> - if ((flags & MSG_PEEK) && peek_seq != tp->copied_seq) {
> + if ((flags & MSG_PEEK) &&
> + (peek_seq - copied - urg_hole != tp->copied_seq)) {
> if (net_ratelimit())
> printk(KERN_DEBUG "TCP(%s:%d): Application bug, race in
> MSG_PEEK.\n", current->comm, task_pid_nr(current));
> @@ -1553,6 +1555,7 @@ do_prequeue:
> if (!urg_offset) {
> if (!sock_flag(sk, SOCK_URGINLINE)) {
> ++*seq;
> + urg_hole++;
> offset++;
> used--;
> if (!used)
next prev parent reply other threads:[~2009-05-11 12:50 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <200902262310.12791.elendil@planet.nl>
[not found] ` <200903091749.50818.elendil@planet.nl>
[not found] ` <op.uqjiqsol1e62zd@merlin.emma.line.org>
[not found] ` <200903141900.14498.elendil@planet.nl>
2009-05-06 16:15 ` Strange Application bug, race in MSG_PEEK complaints (was: Bug#513695: fetchmail: race in MSG_PEEK) Matthias Andree
2009-05-06 23:02 ` Matthias Andree
2009-05-07 6:48 ` Ilpo Järvinen
2009-05-07 17:16 ` Frans Pop
2009-05-07 18:48 ` Ilpo Järvinen
2009-05-07 20:43 ` Frans Pop
2009-05-09 18:14 ` Frans Pop
2009-05-11 6:32 ` [PATCH v2] tcp: fix MSG_PEEK race check Ilpo Järvinen
2009-05-11 12:50 ` Frans Pop [this message]
2009-05-11 13:32 ` Ilpo Järvinen
2009-05-11 13:54 ` Frans Pop
2009-05-11 14:57 ` Ilpo Järvinen
2009-05-17 22:31 ` David Miller
2009-05-18 8:02 ` Matthias Andree
2009-05-17 22:41 ` David Miller
2009-05-18 7:24 ` Ilpo Järvinen
2009-05-18 15:34 ` Matthias Andree
2009-05-18 22:04 ` David Miller
2009-05-19 4:33 ` Ilpo Järvinen
2009-05-19 4:40 ` David Miller
2009-05-19 9:05 ` Matthias Andree
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=200905111450.06749.elendil@planet.nl \
--to=elendil@planet.nl \
--cc=davem@davemloft.net \
--cc=ilpo.jarvinen@helsinki.fi \
--cc=matthias.andree@gmx.de \
--cc=netdev@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.