From: Andi Kleen <andi@firstfloor.org>
To: William Allen Simpson <william.allen.simpson@gmail.com>
Cc: Andi Kleen <andi@firstfloor.org>,
Linux Kernel Developers <linux-kernel@vger.kernel.org>,
Linux Kernel Network Developers <netdev@vger.kernel.org>,
Andrew Morton <akpm@linux-foundation.org>,
David Miller <davem@davemloft.net>
Subject: Re: [PATCH v4 4/7] tcp: input header length, prediction, and timestamp bugs
Date: Mon, 15 Feb 2010 20:15:48 +0100 [thread overview]
Message-ID: <20100215191548.GH21783@one.firstfloor.org> (raw)
In-Reply-To: <4B799A86.8040303@gmail.com>
On Mon, Feb 15, 2010 at 02:03:34PM -0500, William Allen Simpson wrote:
> Andi Kleen wrote:
> >On Mon, Feb 15, 2010 at 07:31:11AM -0500, William Allen Simpson wrote:
> >>Don't use output calculated tp->tcp_header_len for input decisions.
> >>While the output header is usually the same as the input (same options
> >>in both directions), that's a poor assumption. In particular, Sack will
> >>be different. Newer options are not guaranteed.
> >
> >Is this a bug fix?
> >
> Yes. One of many, all inter-related.
>
> I don't know how much description folks want in the patch "summary", so
A good way to find out is to read some of the existing (newer) changelogs.
> simply used declarative statements that are one-to-one with the order of
> the patch, but it took me a bit to grok this problem!
It's useful to distingush bug fixes from cleanups from optimizations etc.
>
> 1) unknown options can be stripped out of the header in middleware, see
> RFC 1122 section 4.2.2.5.
>
> 2) new options Cookie Pair and 64-bit Timestamps (defined in patch 7).
>
> 3) stripping them leaves a Sack covering 1 segment, which has the exact
> same word count as 32-bit Timestamps. Boom! All the silly checks
Boom == the code would use sack data as time stamp?
> against the size of the options field (instead of the proper saw_tstamp)
> start setting fields based on completely useless data!
>
> 4) and of course, using the size of the previous output to predict the
> expected input header size is a poor assumption (to be generous).
Invalid fast path heuristics are probably not bugs in the strict sense,
as long as they do not lead to actually incorrect behaviour.
>
> There are 29+ options these days, not 4 or 5. There are options that
> are only sent one way. There are options that have different data in
> different directions.
>
> Yes, it was originally for TCPCT, but fixes a broad spectrum of bugs.
It would be good if you could extract the pure bug fixes from the rest.
Normally there's a "fast path" in patch submission for bug fixes
(e.g. might still go in for the current kernel). The other stuff
goes in slower.
>
>
> >>Stand-alone patch, originally developed for TCPCT.
> >
> >Normally it would be better to split this into smaller patches
> >that do one thing at a time (typically this requires getting
> >used to patch stack tools like "quilt")
> >
> >But it's not too bad here.
> >
> There are small efficiency patches included, but it would be likely
> impossible to split them from the bug fixes without re-writing the same
> code over and over again. And I'm doing these patch splits by hand....
That's the problem. Get the right tools. Splitting patches by hand
is usually the wrong approach for anything non trivial.
> I did recently learn how to maintain branches that are branches on top of
> each other, so I've got tcpct1, tcpct2, and tcpct3 for the 3 parts. But
> it's a pain to keep updated with git fetch, and checkout, and rebase,
> for each branch.
I personally use quilt for such patchkits, it's much easier.
For git I believe there are several extensions that implement quilt
like patch stacking.
But there are different ways to skin a cat and people do it differently.
-Andi
--
ak@linux.intel.com -- Speaking for myself only.
next prev parent reply other threads:[~2010-02-15 19:15 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-02-15 12:23 [PATCH 0/7] tcp: bugs and cleanup updated to 2.6.33-rc8 (again) William Allen Simpson
2010-02-15 12:25 ` [PATCH v3 1/7] net: tcp_header_len_th and tcp_option_len_th William Allen Simpson
2010-02-15 12:27 ` [PATCH v3 2/7] net: remove old tcp_optlen function William Allen Simpson
2010-02-15 12:28 ` [PATCH v5 3/7] tcp: harmonize tcp_vx_rcv header length assumptions William Allen Simpson
2010-02-15 12:48 ` Andi Kleen
2010-02-15 12:59 ` William Allen Simpson
2010-02-15 12:31 ` [PATCH v4 4/7] tcp: input header length, prediction, and timestamp bugs William Allen Simpson
2010-02-15 15:10 ` Andi Kleen
2010-02-15 19:03 ` William Allen Simpson
2010-02-15 19:15 ` Andi Kleen [this message]
2010-02-15 21:24 ` William Allen Simpson
2010-02-15 21:24 ` [PATCH v5 " William Allen Simpson
2010-02-15 12:34 ` [PATCH v3 5/7] TCPCT part 2e: accept SYNACK data William Allen Simpson
2010-02-15 12:41 ` [PATCH v5 6/7] TCPCT part 2f: cleanup tcp_parse_options William Allen Simpson
2010-02-15 12:45 ` [PATCH v7 7/7] TCPCT part 2g: parse cookie pair and 64-bit timestamp William Allen Simpson
-- strict thread matches above, loose matches on Subject: below --
2010-02-14 6:01 [PATCH 0/7] tcp: bugs and cleanup updated to 2.6.33-rc8 William Allen Simpson
2010-02-14 6:21 ` [PATCH v4 4/7] tcp: input header length, prediction, and timestamp bugs William Allen Simpson
2010-02-17 23:50 ` David Miller
2010-02-02 16:08 [PATCH 0/7] tcp: bugs and cleanup updated to 2.6.33-rc6 William Allen Simpson
2010-02-02 16:28 ` [PATCH v4 4/7] tcp: input header length, prediction, and timestamp bugs William Allen Simpson
2010-01-23 5:27 [PATCH 0/7] tcp: bugs and cleanup updated to 2.6.33-rc5 William Allen Simpson
2010-01-23 6:02 ` [PATCH v4 4/7] tcp: input header length, prediction, and timestamp bugs William Allen Simpson
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=20100215191548.GH21783@one.firstfloor.org \
--to=andi@firstfloor.org \
--cc=akpm@linux-foundation.org \
--cc=davem@davemloft.net \
--cc=linux-kernel@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=william.allen.simpson@gmail.com \
/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.