]> Git Repo - linux.git/commitdiff
ixgbe: skip non IPv4 packets in ATR filter
authorGuillaume Gaudonville <[email protected]>
Tue, 29 Jun 2010 18:29:00 +0000 (18:29 +0000)
committerDavid S. Miller <[email protected]>
Wed, 30 Jun 2010 06:12:41 +0000 (23:12 -0700)
In driver ixgbe, ixgbe_atr may cause crashes for non-ipv4 packets. Just
add a test to check skb->protocol.  It may crash on short packets due
to ip_hdr() access.

Signed-off-by: Guillaume Gaudonville <[email protected]>
Acked-by: Peter P Waskiewicz Jr <[email protected]>
Signed-off-by: Don Skidmore <[email protected]>
Signed-off-by: Jeff Kirsher <[email protected]>
Signed-off-by: David S. Miller <[email protected]>
drivers/net/ixgbe/ixgbe_main.c

index 7ddd60e7d38904ac9d3a87ddad4776b470936fbf..a0b33165b989e41d8bcbba45d9e253545816ad04 100644 (file)
@@ -6024,7 +6024,6 @@ static void ixgbe_tx_queue(struct ixgbe_adapter *adapter,
 static void ixgbe_atr(struct ixgbe_adapter *adapter, struct sk_buff *skb,
                      int queue, u32 tx_flags)
 {
-       /* Right now, we support IPv4 only */
        struct ixgbe_atr_input atr_input;
        struct tcphdr *th;
        struct iphdr *iph = ip_hdr(skb);
@@ -6033,6 +6032,9 @@ static void ixgbe_atr(struct ixgbe_adapter *adapter, struct sk_buff *skb,
        u32 src_ipv4_addr, dst_ipv4_addr;
        u8 l4type = 0;
 
+       /* Right now, we support IPv4 only */
+       if (skb->protocol != htons(ETH_P_IP))
+               return;
        /* check if we're UDP or TCP */
        if (iph->protocol == IPPROTO_TCP) {
                th = tcp_hdr(skb);
This page took 0.064853 seconds and 4 git commands to generate.