All of lore.kernel.org
 help / color / mirror / Atom feed
From: David Newall <davidn@davidnewall.com>
To: Florian Westphal <fw@strlen.de>
Cc: Stephen Hemminger <stephen@networkplumber.org>,
	Netdev <netdev@vger.kernel.org>,
	bridge@lists.linux-foundation.org,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
Subject: Re: [Bridge] Revert 462fb2af9788a82a534f8184abfde31574e1cfa0 (bridge : Sanitize skb before it enters the IP stack)
Date: Mon, 19 May 2014 23:49:22 +0930	[thread overview]
Message-ID: <537A12EA.4060604@davidnewall.com> (raw)
In-Reply-To: <20140519140119.GA24523@breakpoint.cc>

Thanks for the reply.  I've been hanging out for it!

On 19/05/14 23:31, Florian Westphal wrote:
> Well, did you test what happens if we try to refrag a packet
> containing ip options after the revert?
>
> can happen e.g. when using netfilter conntrack on top of a bridge.

No.  I expect it would panic, as was reported prior to the commit.

I tried to persevere with the commit: I recalculated checksum, which 
left routes and times improperly updated in options.  Then I tried 
calling ip_forward_options, which looks like it would correctly update 
RR and TS (not to mention checksum)m but that bombed because skb_rtable 
returned NULL.  I think calling skb_set_dst would answer that, but I 
don't know how to get a valid dst.  (I asked for help but no answer.)

I see three ways to progress:

1. Possibly call ip_forward_option, but that requires somebody who 
understands this code to help;
2. Just recalculate the checksum, leaving crap in the options; or
3. Revert the commit.

Option 1 doesn't look like it's going to happen; option 2 is stupid; 
leaving option 3, and I begin to think that's the right way to go if 
bridge is supposed to be a bridge and not a router.  The idea that 
bridge is doing too much seems to have quite a lot of currency, so think 
of reversion as chopping off a canker.  Or we keep fixing bugs, adding 
to bridge, until it replicates all of IP.

How does a packet get fragmented in this case?  Does it only happen when 
bridging to a device with smaller MTU?  That scenario sounds quite 
un-bridge-like.  It also sounds like something that can be handled by 
real routing.

WARNING: multiple messages have this Message-ID (diff)
From: David Newall <davidn@davidnewall.com>
To: Florian Westphal <fw@strlen.de>
Cc: Stephen Hemminger <stephen@networkplumber.org>,
	Netdev <netdev@vger.kernel.org>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	bridge@lists.linux-foundation.org
Subject: Re: Revert 462fb2af9788a82a534f8184abfde31574e1cfa0 (bridge : Sanitize skb before it enters the IP stack)
Date: Mon, 19 May 2014 23:49:22 +0930	[thread overview]
Message-ID: <537A12EA.4060604@davidnewall.com> (raw)
In-Reply-To: <20140519140119.GA24523@breakpoint.cc>

Thanks for the reply.  I've been hanging out for it!

On 19/05/14 23:31, Florian Westphal wrote:
> Well, did you test what happens if we try to refrag a packet
> containing ip options after the revert?
>
> can happen e.g. when using netfilter conntrack on top of a bridge.

No.  I expect it would panic, as was reported prior to the commit.

I tried to persevere with the commit: I recalculated checksum, which 
left routes and times improperly updated in options.  Then I tried 
calling ip_forward_options, which looks like it would correctly update 
RR and TS (not to mention checksum)m but that bombed because skb_rtable 
returned NULL.  I think calling skb_set_dst would answer that, but I 
don't know how to get a valid dst.  (I asked for help but no answer.)

I see three ways to progress:

1. Possibly call ip_forward_option, but that requires somebody who 
understands this code to help;
2. Just recalculate the checksum, leaving crap in the options; or
3. Revert the commit.

Option 1 doesn't look like it's going to happen; option 2 is stupid; 
leaving option 3, and I begin to think that's the right way to go if 
bridge is supposed to be a bridge and not a router.  The idea that 
bridge is doing too much seems to have quite a lot of currency, so think 
of reversion as chopping off a canker.  Or we keep fixing bugs, adding 
to bridge, until it replicates all of IP.

How does a packet get fragmented in this case?  Does it only happen when 
bridging to a device with smaller MTU?  That scenario sounds quite 
un-bridge-like.  It also sounds like something that can be handled by 
real routing.

  reply	other threads:[~2014-05-19 14:19 UTC|newest]

Thread overview: 76+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-05-11 14:41 Bad checksum on bridge with IP options David Newall
2014-05-11 19:42 ` Lukas Tribus
2014-05-12  8:14   ` David Newall
2014-05-12 10:15     ` Lukas Tribus
2014-05-12 10:25       ` David Newall
2014-05-12 10:31         ` Lukas Tribus
2014-05-12 10:48           ` David Newall
2014-05-12 13:23 ` David Newall
2014-05-12 13:51   ` Florian Westphal
2014-05-12 14:19     ` David Newall
2014-05-12 18:54   ` Lukas Tribus
2014-05-12 23:46     ` David Newall
2014-05-14 13:08       ` David Newall
2014-05-16 14:33         ` Revert 462fb2af9788a82a534f8184abfde31574e1cfa0 (bridge : Sanitize skb before it enters the IP stack) David Newall
2014-05-16 15:19           ` Eric Dumazet
2014-05-16 15:23             ` David Newall
2014-05-16 15:24             ` David Newall
2014-05-19 12:58           ` [Bridge] " David Newall
2014-05-19 12:58             ` David Newall
2014-05-19 14:01             ` [Bridge] " Florian Westphal
2014-05-19 14:01               ` Florian Westphal
2014-05-19 14:19               ` David Newall [this message]
2014-05-19 14:19                 ` David Newall
2014-05-19 17:09                 ` [Bridge] " Florian Westphal
2014-05-19 17:09                   ` Florian Westphal
2014-05-19 20:49                   ` [Bridge] " Bart De Schuymer
2014-05-19 20:49                     ` Bart De Schuymer
2014-05-21  7:49                     ` [Bridge] " David Newall
2014-05-21  7:49                       ` David Newall
2014-05-21 18:51                       ` [Bridge] " Bart De Schuymer
2014-05-21 18:51                         ` Bart De Schuymer
2014-05-21 20:18                         ` [Bridge] " David Miller
2014-05-21 20:18                           ` David Miller
2014-05-22 18:57                           ` [Bridge] " Bart De Schuymer
2014-05-22 18:57                             ` Bart De Schuymer
2014-05-24 18:00                             ` [Bridge] " David Miller
2014-05-24 18:00                               ` David Miller
2014-05-24  5:56                           ` [Bridge] " David Newall
2014-05-24  5:56                             ` David Newall
2014-05-24 17:43                             ` [Bridge] " David Miller
2014-05-24 17:43                               ` David Miller
2014-05-25  2:32                               ` [Bridge] " David Newall
2014-05-25  2:32                                 ` David Newall
2014-05-25  3:02                                 ` [Bridge] " David Miller
2014-05-25  3:02                                   ` David Miller
2014-05-25  6:37                                   ` [Bridge] " David Newall
2014-05-25  6:37                                     ` David Newall
2014-05-27  8:55                                 ` [Bridge] " David Laight
2014-05-27  8:55                                   ` David Laight
2014-05-29 22:34                                 ` [Bridge] " David Miller
2014-05-29 22:34                                   ` David Miller
2014-05-30  9:17                                   ` [Bridge] " David Newall
2014-05-30  9:17                                     ` David Newall
2014-05-31  0:46                                     ` [Bridge] " David Miller
2014-05-31  0:46                                       ` David Miller
2014-05-31  6:13                                       ` [Bridge] " David Newall
2014-05-31  6:13                                         ` David Newall
2014-05-31  6:37                                         ` [Bridge] " David Miller
2014-05-31  6:37                                           ` David Miller
2014-05-22  3:50                         ` [Bridge] " David Newall
2014-05-22  3:50                           ` David Newall
2014-05-22 18:57                           ` [Bridge] " Bart De Schuymer
2014-05-22 18:57                             ` Bart De Schuymer
2014-05-20  3:57                   ` [Bridge] " David Newall
2014-05-20  3:57                     ` David Newall
2014-05-20  4:55                 ` [Bridge] " Valdis.Kletnieks
2014-05-20  4:55                   ` Valdis.Kletnieks
2014-05-20 16:05                   ` [Bridge] " Vlad Yasevich
2014-05-20 16:05                     ` Vlad Yasevich
2014-05-20 16:05                     ` Vlad Yasevich
2014-05-21  8:10                   ` [Bridge] " David Newall
2014-05-21  8:10                     ` David Newall
2014-05-21 20:14                     ` [Bridge] " David Miller
2014-05-21 20:14                       ` David Miller
2014-05-21 20:14                       ` David Miller
2014-05-22 20:06           ` Bandan Das

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=537A12EA.4060604@davidnewall.com \
    --to=davidn@davidnewall.com \
    --cc=bridge@lists.linux-foundation.org \
    --cc=fw@strlen.de \
    --cc=linux-kernel@vger.kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=stephen@networkplumber.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.