linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: David Miller <davem@davemloft.net>
To: rjw@sisk.pl
Cc: linux-kernel@vger.kernel.org, kernel-testers@vger.kernel.org,
	sentiniate@tiscali.it, ilpo.jarvinen@helsinki.fi
Subject: Re: [Bug #11721] after upgrade to 2.6.27 i cannot navigate
Date: Sat, 25 Oct 2008 22:02:34 -0700 (PDT)	[thread overview]
Message-ID: <20081025.220234.25683542.davem@davemloft.net> (raw)
In-Reply-To: <gLTYxg3cC1.A.S3E.xJ6AJB@chimera>

From: "Rafael J. Wysocki" <rjw@sisk.pl>
Date: Sat, 25 Oct 2008 23:07:52 +0200 (CEST)

> This message has been generated automatically as a part of a report
> of regressions introduced between 2.6.26 and 2.6.27.
> 
> The following bug entry is on the current list of known regressions
> introduced between 2.6.26 and 2.6.27.  Please verify if it still should
> be listed and let me know (either way).
> 
> 
> Bug-Entry	: http://bugzilla.kernel.org/show_bug.cgi?id=11721
> Subject		: after upgrade to 2.6.27 i cannot navigate
> Submitter	: Aldo Maggi <sentiniate@tiscali.it>
> Date		: 2008-10-08 08:08 (18 days old)

Should be fixed by:

commit fd6149d332973bafa50f03ddb0ea9513e67f4517
Author: Ilpo Järvinen <ilpo.jarvinen@helsinki.fi>
Date:   Thu Oct 23 14:06:35 2008 -0700

    tcp: Restore ordering of TCP options for the sake of inter-operability
    
    This is not our bug! Sadly some devices cannot cope with the change
    of TCP option ordering which was a result of the recent rewrite of
    the option code (not that there was some particular reason steming
    from the rewrite for the reordering) though any ordering of TCP
    options is perfectly legal. Thus we restore the original ordering
    to allow interoperability with/through such broken devices and add
    some warning about this trap. Since the reordering just happened
    without any particular reason, this change shouldn't cost us
    anything.
    
    There are already couple of known failure reports (within close
    proximity of the last release), so the problem might be more
    wide-spread than a single device. And other reports which may
    be due to the same problem though the symptoms were less obvious.
    Analysis of one of the case revealed (with very high probability)
    that sack capability cannot be negotiated as the first option
    (SYN never got a response).
    
    Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@helsinki.fi>
    Reported-by: Aldo Maggi <sentiniate@tiscali.it>
    Tested-by: Aldo Maggi <sentiniate@tiscali.it>
    Signed-off-by: David S. Miller <davem@davemloft.net>

diff --git a/net/ipv4/tcp_output.c b/net/ipv4/tcp_output.c
index de54f02..e4c5ac9 100644
--- a/net/ipv4/tcp_output.c
+++ b/net/ipv4/tcp_output.c
@@ -362,6 +362,17 @@ struct tcp_out_options {
 	__u32 tsval, tsecr;	/* need to include OPTION_TS */
 };
 
+/* Beware: Something in the Internet is very sensitive to the ordering of
+ * TCP options, we learned this through the hard way, so be careful here.
+ * Luckily we can at least blame others for their non-compliance but from
+ * inter-operatibility perspective it seems that we're somewhat stuck with
+ * the ordering which we have been using if we want to keep working with
+ * those broken things (not that it currently hurts anybody as there isn't
+ * particular reason why the ordering would need to be changed).
+ *
+ * At least SACK_PERM as the first option is known to lead to a disaster
+ * (but it may well be that other scenarios fail similarly).
+ */
 static void tcp_options_write(__be32 *ptr, struct tcp_sock *tp,
 			      const struct tcp_out_options *opts,
 			      __u8 **md5_hash) {
@@ -376,6 +387,12 @@ static void tcp_options_write(__be32 *ptr, struct tcp_sock *tp,
 		*md5_hash = NULL;
 	}
 
+	if (unlikely(opts->mss)) {
+		*ptr++ = htonl((TCPOPT_MSS << 24) |
+			       (TCPOLEN_MSS << 16) |
+			       opts->mss);
+	}
+
 	if (likely(OPTION_TS & opts->options)) {
 		if (unlikely(OPTION_SACK_ADVERTISE & opts->options)) {
 			*ptr++ = htonl((TCPOPT_SACK_PERM << 24) |
@@ -392,12 +409,6 @@ static void tcp_options_write(__be32 *ptr, struct tcp_sock *tp,
 		*ptr++ = htonl(opts->tsecr);
 	}
 
-	if (unlikely(opts->mss)) {
-		*ptr++ = htonl((TCPOPT_MSS << 24) |
-			       (TCPOLEN_MSS << 16) |
-			       opts->mss);
-	}
-
 	if (unlikely(OPTION_SACK_ADVERTISE & opts->options &&
 		     !(OPTION_TS & opts->options))) {
 		*ptr++ = htonl((TCPOPT_NOP << 24) |

  reply	other threads:[~2008-10-26  5:03 UTC|newest]

Thread overview: 42+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-10-25 21:04 2.6.28-rc1-git1: Reported regressions 2.6.26 -> 2.6.27 Rafael J. Wysocki
2008-10-25 21:04 ` [Bug #11207] VolanoMark regression with 2.6.27-rc1 Rafael J. Wysocki
2008-10-25 21:07 ` [Bug #11264] Invalid op opcode in kernel/workqueue Rafael J. Wysocki
2008-10-25 21:07 ` [Bug #11210] libata badness Rafael J. Wysocki
2008-10-25 21:07 ` [Bug #11215] INFO: possible recursive locking detected ps2_command Rafael J. Wysocki
2008-10-25 21:07 ` [Bug #11209] 2.6.27-rc1 process time accounting Rafael J. Wysocki
2008-10-25 21:07 ` [Bug #11220] Screen stays black after resume Rafael J. Wysocki
2008-10-25 21:07 ` [Bug #11272] BUG: parport_serial in 2.6.27-rc1 for NetMos Technology PCI 9835 Rafael J. Wysocki
2008-10-25 21:07 ` [Bug #11308] tbench regression on each kernel release from 2.6.22 -&gt; 2.6.28 Rafael J. Wysocki
2008-10-25 21:07 ` [Bug #11340] LTP overnight run resulted in unusable box Rafael J. Wysocki
2008-10-25 21:07 ` [Bug #11271] BUG: fealnx in 2.6.27-rc1 Rafael J. Wysocki
2008-10-25 21:07 ` [Bug #11380] lockdep warning: cpu_add_remove_lock at:cpu_maps_update_begin+0x14/0x16 Rafael J. Wysocki
2008-10-25 21:07 ` [Bug #11407] suspend: unable to handle kernel paging request Rafael J. Wysocki
2008-10-25 21:07 ` [Bug #11404] BUG: in 2.6.23-rc3-git7 in do_cciss_intr Rafael J. Wysocki
2008-10-25 23:24   ` Randy Dunlap
2008-10-25 21:07 ` [Bug #11476] failure to associate after resume from suspend to ram Rafael J. Wysocki
2008-10-25 21:07 ` [Bug #11505] oltp ~10% regression with 2.6.27-rc5 on stoakley machine Rafael J. Wysocki
2008-10-25 21:07 ` [Bug #11543] kernel panic: softlockup in tick_periodic() ??? Rafael J. Wysocki
2008-10-26  7:11   ` Cyrill Gorcunov
2008-10-26 11:03     ` Rafael J. Wysocki
2008-10-26 11:20       ` Cyrill Gorcunov
2008-10-25 21:07 ` [Bug #11550] pnp: Huge number of "io resource overlap" messages Rafael J. Wysocki
2008-10-26 16:43   ` Frans Pop
2008-10-25 21:07 ` [Bug #11512] sort-of regression due to "kconfig: speed up all*config + randconfig" Rafael J. Wysocki
2008-10-25 21:07 ` [Bug #11569] Panic stop CPUs regression Rafael J. Wysocki
2008-10-25 21:07 ` [Bug #11669] when CPU hotplugging is disabled, nr_cpu_ids does not get set properly during boot Rafael J. Wysocki
2008-10-26 22:00   ` Chuck Ebbert
2008-10-26 22:20     ` Rafael J. Wysocki
2008-10-25 21:07 ` [Bug #11664] acpi errors and random freeze on sony vaio sr Rafael J. Wysocki
2008-10-25 21:07 ` [Bug #11608] 2.6.27-rc6 BUG: unable to handle kernel paging request Rafael J. Wysocki
2008-10-25 21:07 ` [Bug #11699] 2.6.27-rc-7: BUG: scheduling while atomic, c1e_idle+0x98/0xe0 Rafael J. Wysocki
2008-10-25 21:07 ` [Bug #11698] 2.6.27-rc7, freezes with &gt; 1 s2ram cycle Rafael J. Wysocki
2008-10-25 21:07 ` [Bug #11721] after upgrade to 2.6.27 i cannot navigate Rafael J. Wysocki
2008-10-26  5:02   ` David Miller [this message]
2008-10-25 21:07 ` [Bug #11830] disk statistics issue in 2.6.27 Rafael J. Wysocki
2008-10-25 21:07 ` [Bug #11831] NULL pointer derefence since 2.6.27 in (e)poll Rafael J. Wysocki
2008-10-25 21:07 ` [Bug #11820] 2.6.27: 0 MHz CPU and wrong system time on AMD Geode system Rafael J. Wysocki
2008-10-25 21:07 ` [Bug #11829] Kernel 2.6.26.5 -&gt; 2.6.27.2 [USB REGRESSION] (USB -&gt; D_STATE) Rafael J. Wysocki
2008-10-25 21:07 ` [Bug #11832] 2.6.27: "irq 18: nobody cared" on Toshiba Satellite A100 Rafael J. Wysocki
2008-10-25 21:07 ` [Bug #11836] Scheduler on C2D CPU and latest 2.6.27 kernel Rafael J. Wysocki
2008-10-25 21:07 ` [Bug #11843] usb hdd problems with 2.6.27.2 Rafael J. Wysocki
     [not found] ` <gLTYxg3cC1.A.Z_F.-K6AJB@chimera>
2008-10-25 23:55   ` [Bug #11504] reiserfs ????BUG in 2.6.27-rc5 Randy Dunlap

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=20081025.220234.25683542.davem@davemloft.net \
    --to=davem@davemloft.net \
    --cc=ilpo.jarvinen@helsinki.fi \
    --cc=kernel-testers@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=rjw@sisk.pl \
    --cc=sentiniate@tiscali.it \
    /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 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).