Subject: Re: [PATCH] net: do not pass vlan pkts to real dev pkt handler also

From: Jiri Pirko <[email-masked]>
Date: Mon, 12 Dec 2011 23:56:23 +0100

Mon, Dec 12, 2011 at 11:19:23PM CET, [email-masked] wrote:
>The orig_dev has to be updated before going another round
>for vlan pkts, otherwise currently unmodified real orig_dev
>causes vlan pkt delivered to real orig_dev also.
>
>The fcoe stack doesn't expects its vlan pkts on real dev
>and it causes crash in fcoe stack.

Could you please provide more info on where exactly it would crash and
why?

Thanks.

Jirka

>
>This wasn't issue untill __netif_receive_skb recursive calling
>was removed with this commit 0dfe178, so this patch restores
>orig_dev uses as it was prior to that commit but still w/o
>recursive calling to __netif_receive_skb.
>
>Signed-off-by: Vasu Dev <[email-masked]>
>---
>
> net/core/dev.c |    5 +++--
> 1 files changed, 3 insertions(+), 2 deletions(-)
>
>diff --git a/net/core/dev.c b/net/core/dev.c
>index f494675..adbcd7a 100644
>--- a/net/core/dev.c
>+++ b/net/core/dev.c
>@@ -3222,9 +3222,10 @@ ncls:
> 			ret = deliver_skb(skb, pt_prev, orig_dev);
> 			pt_prev = NULL;
> 		}
>-		if (vlan_do_receive(&skb, !rx_handler))
>+		if (vlan_do_receive(&skb, !rx_handler)) {
>+			orig_dev = skb->dev;
> 			goto another_round;
>-		else if (unlikely(!skb))
>+		} else if (unlikely(!skb))
> 			goto out;
> 	}
> 
>