| 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> |
|---|---|---|
| ||
| Previous by Date: | [PATCH 2.4.26-pre1] Allow ebtables module to change protocol in netif_receive_skb, Simon Barber |
|---|---|
| Next by Date: | [PATCH][ATM]: [lec] timer cleanup, chas williams (contractor) |
| Previous by Thread: | [PATCH 2.4.26-pre1] Allow ebtables module to change protocol in netif_receive_skb, Simon Barber |
| Next by Thread: | [PATCH][ATM]: [lec] timer cleanup, chas williams (contractor) |
| Indexes: | [Date] [Thread] [Top] [All Lists] |