netdev
[Top] [All Lists]

[PATCH 2.6.3-bk7] Allow ebtables module to change protocol in netif_rece

To: "Kernel Mailing List" <linux-kernel@xxxxxxxxxxxxxxx>, <netdev@xxxxxxxxxxx>
Subject: [PATCH 2.6.3-bk7] Allow ebtables module to change protocol in netif_receive_skb
From: "Simon Barber" <simon@xxxxxxxxxxxxxx>
Date: Wed, 25 Feb 2004 14:49:32 -0800
Cc: "Bart De Schuymer" <bdschuym@xxxxxxxxxx>
Sender: netdev-bounce@xxxxxxxxxxx
Thread-index: AcP7H8r7liQMqexhSF+8GCI1T/Fy6gA0P82A
Thread-topic: [PATCH 2.6.3-bk7] Allow ebtables module to change protocol in netif_receive_skb
Currently skb->protocol is read before the bridge is called, even though
it's not used until after. Hence if an ebtables module changes the
protocol of a frame the wrong protocol is interpreted.

Simon Barber

--- linux-2.6.3-bk7.orig/net/core/dev.c 2004-02-25 04:19:07.000000000
-0800
+++ linux-2.6.3-bk7/net/core/dev.c      2004-02-25 06:42:11.000000000
-0800
@@ -1725,7 +1725,7 @@
 {
        struct packet_type *ptype, *pt_prev;
        int ret = NET_RX_DROP;
-       unsigned short type = skb->protocol;
+       unsigned short type;
 
        if (!skb->stamp.tv_sec)
                do_gettimeofday(&skb->stamp);
@@ -1759,6 +1759,7 @@
        if (__handle_bridge(skb, &pt_prev, &ret))
                goto out;
 
+       type = skb->protocol;
        list_for_each_entry_rcu(ptype, &ptype_base[ntohs(type)&15],
list) {
                if (ptype->type == type &&
                    (!ptype->dev || ptype->dev == skb->dev)) {


<Prev in Thread] Current Thread [Next in Thread>
  • [PATCH 2.6.3-bk7] Allow ebtables module to change protocol in netif_receive_skb, Simon Barber <=