diff options
author | Eilon Greenstein <eilong@broadcom.com> | 2009-01-14 06:44:10 +0000 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2009-01-19 16:20:11 -0800 |
commit | 632da4d66324b5baf947a048dd1f1e9093b6dd90 (patch) | |
tree | 11e07d6db660761d36d0ff12ec6088b28a053bba | |
parent | 2add3acb11a26cc14b54669433ae6ace6406cbf2 (diff) | |
download | linux-3.10-632da4d66324b5baf947a048dd1f1e9093b6dd90.tar.gz linux-3.10-632da4d66324b5baf947a048dd1f1e9093b6dd90.tar.bz2 linux-3.10-632da4d66324b5baf947a048dd1f1e9093b6dd90.zip |
bnx2x: Overstepping array bounds
If the page size is > 8KB this violation happens
Signed-off-by: Eilon Greenstein <eilong@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | drivers/net/bnx2x_main.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/net/bnx2x_main.c b/drivers/net/bnx2x_main.c index ca5090c3341..2e00da6ab17 100644 --- a/drivers/net/bnx2x_main.c +++ b/drivers/net/bnx2x_main.c @@ -9427,6 +9427,7 @@ static inline u32 bnx2x_xmit_type(struct bnx2x *bp, struct sk_buff *skb) return rc; } +#if (MAX_SKB_FRAGS >= MAX_FETCH_BD - 3) /* check if packet requires linearization (packet is too fragmented) */ static int bnx2x_pkt_req_lin(struct bnx2x *bp, struct sk_buff *skb, u32 xmit_type) @@ -9504,6 +9505,7 @@ exit_lbl: return to_copy; } +#endif /* called with netif_tx_lock * bnx2x_tx_int() runs without netif_tx_lock unless it needs to call @@ -9544,6 +9546,7 @@ static int bnx2x_start_xmit(struct sk_buff *skb, struct net_device *dev) skb->ip_summed, skb->protocol, ipv6_hdr(skb)->nexthdr, ip_hdr(skb)->protocol, skb_shinfo(skb)->gso_type, xmit_type); +#if (MAX_SKB_FRAGS >= MAX_FETCH_BD - 3) /* First, check if we need to linearize the skb (due to FW restrictions) */ if (bnx2x_pkt_req_lin(bp, skb, xmit_type)) { @@ -9556,6 +9559,7 @@ static int bnx2x_start_xmit(struct sk_buff *skb, struct net_device *dev) return NETDEV_TX_OK; } } +#endif /* Please read carefully. First we use one BD which we mark as start, |