diff options
author | John W. Linville <linville@tuxdriver.com> | 2005-11-07 03:58:05 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2005-11-07 10:53:25 -0500 |
commit | 32fb5f06dbb6ca007f7886eb210b7b15545e2e15 (patch) | |
tree | c9a35e47f42aa54645f98d1e4d8e9d73ce411d19 | |
parent | d9e46de34e4212f472684b1561ba323aac54ea25 (diff) |
[PATCH] 3c59x: bounds checking for hw_checksums
Add bounds checking to usage of hw_checksums module parameter array.
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-rw-r--r-- | drivers/net/3c59x.c | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/drivers/net/3c59x.c b/drivers/net/3c59x.c index e1f773d07edb..78f90eb02b9c 100644 --- a/drivers/net/3c59x.c +++ b/drivers/net/3c59x.c | |||
@@ -1513,9 +1513,10 @@ static int __devinit vortex_probe1(struct device *gendev, | |||
1513 | dev->hard_start_xmit = boomerang_start_xmit; | 1513 | dev->hard_start_xmit = boomerang_start_xmit; |
1514 | /* Actually, it still should work with iommu. */ | 1514 | /* Actually, it still should work with iommu. */ |
1515 | dev->features |= NETIF_F_SG; | 1515 | dev->features |= NETIF_F_SG; |
1516 | if (((hw_checksums[card_idx] == -1) && (vp->drv_flags & HAS_HWCKSM)) || | 1516 | if (card_idx < MAX_UNITS && |
1517 | (hw_checksums[card_idx] == 1)) { | 1517 | ((hw_checksums[card_idx] == -1 && (vp->drv_flags & HAS_HWCKSM)) || |
1518 | dev->features |= NETIF_F_IP_CSUM; | 1518 | hw_checksums[card_idx] == 1)) { |
1519 | dev->features |= NETIF_F_IP_CSUM; | ||
1519 | } | 1520 | } |
1520 | } else { | 1521 | } else { |
1521 | dev->hard_start_xmit = vortex_start_xmit; | 1522 | dev->hard_start_xmit = vortex_start_xmit; |
@@ -2791,10 +2792,11 @@ vortex_close(struct net_device *dev) | |||
2791 | } | 2792 | } |
2792 | 2793 | ||
2793 | #if DO_ZEROCOPY | 2794 | #if DO_ZEROCOPY |
2794 | if ( vp->rx_csumhits && | 2795 | if (vp->rx_csumhits && |
2795 | ((vp->drv_flags & HAS_HWCKSM) == 0) && | 2796 | (vp->drv_flags & HAS_HWCKSM) == 0 && |
2796 | (hw_checksums[vp->card_idx] == -1)) { | 2797 | (vp->card_idx >= MAX_UNITS || hw_checksums[vp->card_idx] == -1)) { |
2797 | printk(KERN_WARNING "%s supports hardware checksums, and we're not using them!\n", dev->name); | 2798 | printk(KERN_WARNING "%s supports hardware checksums, and we're " |
2799 | "not using them!\n", dev->name); | ||
2798 | } | 2800 | } |
2799 | #endif | 2801 | #endif |
2800 | 2802 | ||