From: ebiederm@xmission.com (Eric W. Biederman)
To: Changli Gao <xiaosuo@gmail.com>
Cc: David Miller <davem@davemloft.net>,
shemminger@linux-foundation.org, greearb@candelatech.com,
nicolas.2p.debian@gmail.com, jpirko@redhat.com,
netdev@vger.kernel.org, kaber@trash.net, fubar@us.ibm.com,
eric.dumazet@gmail.com, andy@greyhouse.net, jesse@nicira.com
Subject: Re: [PATCH] vlan: Fix the ingress VLAN_FLAG_REORDER_HDR check v2
Date: Thu, 02 Jun 2011 08:26:51 -0700 [thread overview]
Message-ID: <m1ipsob6f8.fsf@fess.ebiederm.org> (raw)
In-Reply-To: <BANLkTimjfHKh3dpPEzznKiK=Md4v0iTD9A@mail.gmail.com> (Changli Gao's message of "Thu, 2 Jun 2011 22:54:50 +0800")
Changli Gao <xiaosuo@gmail.com> writes:
> On Thu, Jun 2, 2011 at 9:03 PM, Eric W. Biederman <ebiederm@xmission.com> wrote:
>>
>> -static struct sk_buff *vlan_check_reorder_header(struct sk_buff *skb)
>> +static struct sk_buff *vlan_reorder_header(struct sk_buff *skb)
>> {
>> - if (vlan_dev_info(skb->dev)->flags & VLAN_FLAG_REORDER_HDR) {
>> - if (skb_cow(skb, skb_headroom(skb)) < 0)
>> - skb = NULL;
>> - if (skb) {
>> - /* Lifted from Gleb's VLAN code... */
>> - memmove(skb->data - ETH_HLEN,
>> - skb->data - VLAN_ETH_HLEN, 12);
>> - skb->mac_header += VLAN_HLEN;
>> - }
>> + if (skb_cow(skb, skb_headroom(skb)) < 0)
>> + skb = NULL;
>> + if (skb) {
>
> I think an else branch maybe more readable here.
Probably most readable would be simply returning NULL immediately on
error. In this patch I just removed the if statement, and I would like
to avoid mixing different bug fixes in the same patch if possible.
>> + /* Lifted from Gleb's VLAN code... */
>> + memmove(skb->data - ETH_HLEN,
>> + skb->data - VLAN_ETH_HLEN, 12);
>> + skb->mac_header += VLAN_HLEN;
>
> skb->mac_len should be adjusted too.
Given how vlan_untag is called at the moment it does appear
that the skb->mac_len = skb->network_header - skb->mac_header
in __netif_receive_skb that used to handle this for is no longer
doing this for us.
My feel is that either we need to do all of the header resets and the
vlan_untagging together. So we either need this all together before or
after the another_round label:
So the proper fix is probably something like this.
diff --git a/net/core/dev.c b/net/core/dev.c
index bcb05cb..8fe50d4 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -3102,9 +3102,6 @@ static int __netif_receive_skb(struct sk_buff *skb)
skb->skb_iif = skb->dev->ifindex;
orig_dev = skb->dev;
- skb_reset_network_header(skb);
- skb_reset_transport_header(skb);
- skb->mac_len = skb->network_header - skb->mac_header;
pt_prev = NULL;
@@ -3119,6 +3116,9 @@ another_round:
if (unlikely(!skb))
goto out;
}
+ skb_reset_network_header(skb);
+ skb_reset_transport_header(skb);
+ skb->mac_len = skb->network_header - skb->mac_header;
#ifdef CONFIG_NET_CLS_ACT
if (skb->tc_verd & TC_NCLS) {
next prev parent reply other threads:[~2011-06-02 15:27 UTC|newest]
Thread overview: 92+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-04-08 5:48 [patch net-next-2.6 v2] net: vlan: make non-hw-accel rx path similar to hw-accel Jiri Pirko
2011-04-12 21:16 ` David Miller
2011-05-21 1:11 ` Changli Gao
2011-05-21 7:29 ` Jiri Pirko
2011-05-21 10:43 ` Changli Gao
2011-05-21 13:17 ` Nicolas de Pesloüan
2011-05-21 17:54 ` Jesse Gross
2011-05-21 22:15 ` Stephen Hemminger
2011-05-22 2:59 ` Nicolas de Pesloüan
2011-05-22 6:29 ` Jiri Pirko
2011-05-22 6:34 ` Eric W. Biederman
2011-05-22 8:34 ` Nicolas de Pesloüan
2011-05-22 8:52 ` Michał Mirosław
2011-05-22 9:10 ` Nicolas de Pesloüan
2011-05-22 9:20 ` Michał Mirosław
2011-05-22 9:36 ` Jiri Pirko
2011-05-22 9:53 ` Nicolas de Pesloüan
2011-05-22 10:04 ` Michał Mirosław
2011-05-22 16:11 ` Jesse Gross
2011-05-22 18:24 ` Eric W. Biederman
2011-05-22 19:33 ` Eric W. Biederman
2011-05-22 19:39 ` [PATCH 1/3] vlan: Do not support clearing VLAN_FLAG_REORDER_HDR Eric W. Biederman
2011-05-22 19:40 ` [PATCH 2/3] vlan: Always strip the vlan header in vlan_untag Eric W. Biederman
2011-05-22 19:42 ` [PATCH 3/3] vlan: Simplify the code now that VLAN_FLAG_REORDER_HDR is always set Eric W. Biederman
2011-06-09 10:59 ` Jiri Pirko
2011-06-12 6:17 ` Eric W. Biederman
2011-05-22 21:04 ` [PATCH 1/3] vlan: Do not support clearing VLAN_FLAG_REORDER_HDR Ben Greear
2011-05-22 22:38 ` Eric W. Biederman
2011-05-23 0:38 ` Changli Gao
2011-05-23 1:26 ` Changli Gao
2011-05-23 1:45 ` Eric W. Biederman
2011-05-23 2:14 ` Changli Gao
2011-05-23 9:41 ` Eric W. Biederman
2011-05-23 10:43 ` Jiri Pirko
2011-05-23 19:48 ` Nicolas de Pesloüan
2011-05-24 5:58 ` Jiri Pirko
2011-05-24 7:19 ` Nicolas de Pesloüan
2011-05-23 1:39 ` Eric W. Biederman
2011-05-23 6:01 ` Ben Greear
2011-05-23 9:00 ` Eric W. Biederman
2011-05-23 16:33 ` Ben Greear
2011-05-23 19:36 ` Nicolas de Pesloüan
2011-05-23 20:24 ` Ben Greear
2011-05-23 21:00 ` Stephen Hemminger
2011-05-23 21:20 ` David Miller
2011-05-23 22:05 ` Eric W. Biederman
2011-05-23 22:16 ` Stephen Hemminger
2011-05-23 22:48 ` Eric W. Biederman
2011-05-23 22:23 ` Ben Greear
2011-05-23 23:02 ` Eric W. Biederman
2011-05-24 4:20 ` Ben Greear
2011-05-24 7:11 ` Nicolas de Pesloüan
2011-05-24 7:44 ` Michał Mirosław
2011-05-24 15:17 ` Ben Greear
2011-05-24 5:19 ` David Miller
2011-05-24 7:56 ` Eric W. Biederman
2011-05-24 15:44 ` Ben Greear
2011-05-24 0:11 ` [PATCH] vlan: Fix the b0rked ingress VLAN_FLAG_REORDER_HDR check Eric W. Biederman
2011-05-24 4:54 ` David Miller
2011-05-24 6:18 ` Eric W. Biederman
2011-05-24 6:24 ` David Miller
2011-05-24 7:38 ` Eric W. Biederman
2011-06-02 3:59 ` David Miller
2011-06-02 13:03 ` [PATCH] vlan: Fix the ingress VLAN_FLAG_REORDER_HDR check v2 Eric W. Biederman
2011-06-02 13:15 ` Jiri Pirko
2011-06-02 14:54 ` Changli Gao
2011-06-02 15:26 ` Eric W. Biederman [this message]
2011-06-02 23:18 ` Changli Gao
2011-06-06 14:48 ` Jiri Pirko
2011-06-03 3:34 ` padmanabh ratnakar
2011-06-03 3:59 ` Changli Gao
2011-06-05 21:14 ` David Miller
2011-06-10 8:35 ` [PATCH v3] vlan: Fix the ingress VLAN_FLAG_REORDER_HDR check Jiri Pirko
2011-06-10 9:26 ` Changli Gao
2011-06-10 9:34 ` Jiri Pirko
2011-06-10 9:49 ` Changli Gao
2011-06-10 10:35 ` Jiri Pirko
2011-06-10 11:20 ` Changli Gao
2011-06-10 12:12 ` Jiri Pirko
2011-06-10 16:56 ` Jiri Pirko
2011-06-11 0:05 ` Changli Gao
2011-06-11 23:16 ` David Miller
2011-06-08 16:28 ` [PATCH] vlan: Fix the ingress VLAN_FLAG_REORDER_HDR check v2 Jiri Pirko
2011-06-08 23:08 ` Changli Gao
2011-06-09 6:01 ` Jiri Pirko
2011-06-09 11:00 ` [PATCH 1/3] vlan: Do not support clearing VLAN_FLAG_REORDER_HDR Jiri Pirko
2011-05-22 8:38 ` [patch net-next-2.6 v2] net: vlan: make non-hw-accel rx path similar to hw-accel Changli Gao
2011-05-22 9:37 ` Jiri Pirko
2011-05-22 10:17 ` Changli Gao
2011-05-22 10:26 ` Eric W. Biederman
2011-05-22 10:40 ` Changli Gao
2011-05-22 13:16 ` Jiri Pirko
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=m1ipsob6f8.fsf@fess.ebiederm.org \
--to=ebiederm@xmission.com \
--cc=andy@greyhouse.net \
--cc=davem@davemloft.net \
--cc=eric.dumazet@gmail.com \
--cc=fubar@us.ibm.com \
--cc=greearb@candelatech.com \
--cc=jesse@nicira.com \
--cc=jpirko@redhat.com \
--cc=kaber@trash.net \
--cc=netdev@vger.kernel.org \
--cc=nicolas.2p.debian@gmail.com \
--cc=shemminger@linux-foundation.org \
--cc=xiaosuo@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.