diff options
author | Scott Bardone <sbardone@chelsio.com> | 2006-03-16 19:20:40 -0500 |
---|---|---|
committer | Jeff Garzik <jeff@garzik.org> | 2006-03-16 19:20:40 -0500 |
commit | 232a347a444e687b5f8cf0f6485704db1c6024d3 (patch) | |
tree | 7b538d45346c328cd143675c54d043eda25f618c | |
parent | c3d7a3a4eb5e8f290d7b1d61430eed1ebedeb936 (diff) |
[netdrvr] fix array overflows in Chelsio driver
Adrian Bunk wrote:
> The Coverity checker spotted the following two array overflows in
> drivers/net/chelsio/sge.c (in both cases, the arrays contain 3
> elements):
[snip]
This is a bug. The array should contain 2 elements. Here is the fix.
Signed-off-by: Scott Bardone <sbardone@chelsio.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
-rw-r--r-- | drivers/net/chelsio/sge.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/drivers/net/chelsio/sge.c b/drivers/net/chelsio/sge.c index 2c5b849b7ba4..30ff8ea1a402 100644 --- a/drivers/net/chelsio/sge.c +++ b/drivers/net/chelsio/sge.c | |||
@@ -1021,7 +1021,7 @@ static void restart_tx_queues(struct sge *sge) | |||
1021 | if (test_and_clear_bit(nd->if_port, | 1021 | if (test_and_clear_bit(nd->if_port, |
1022 | &sge->stopped_tx_queues) && | 1022 | &sge->stopped_tx_queues) && |
1023 | netif_running(nd)) { | 1023 | netif_running(nd)) { |
1024 | sge->stats.cmdQ_restarted[3]++; | 1024 | sge->stats.cmdQ_restarted[2]++; |
1025 | netif_wake_queue(nd); | 1025 | netif_wake_queue(nd); |
1026 | } | 1026 | } |
1027 | } | 1027 | } |
@@ -1350,7 +1350,7 @@ static int t1_sge_tx(struct sk_buff *skb, struct adapter *adapter, | |||
1350 | if (unlikely(credits < count)) { | 1350 | if (unlikely(credits < count)) { |
1351 | netif_stop_queue(dev); | 1351 | netif_stop_queue(dev); |
1352 | set_bit(dev->if_port, &sge->stopped_tx_queues); | 1352 | set_bit(dev->if_port, &sge->stopped_tx_queues); |
1353 | sge->stats.cmdQ_full[3]++; | 1353 | sge->stats.cmdQ_full[2]++; |
1354 | spin_unlock(&q->lock); | 1354 | spin_unlock(&q->lock); |
1355 | if (!netif_queue_stopped(dev)) | 1355 | if (!netif_queue_stopped(dev)) |
1356 | CH_ERR("%s: Tx ring full while queue awake!\n", | 1356 | CH_ERR("%s: Tx ring full while queue awake!\n", |
@@ -1358,7 +1358,7 @@ static int t1_sge_tx(struct sk_buff *skb, struct adapter *adapter, | |||
1358 | return NETDEV_TX_BUSY; | 1358 | return NETDEV_TX_BUSY; |
1359 | } | 1359 | } |
1360 | if (unlikely(credits - count < q->stop_thres)) { | 1360 | if (unlikely(credits - count < q->stop_thres)) { |
1361 | sge->stats.cmdQ_full[3]++; | 1361 | sge->stats.cmdQ_full[2]++; |
1362 | netif_stop_queue(dev); | 1362 | netif_stop_queue(dev); |
1363 | set_bit(dev->if_port, &sge->stopped_tx_queues); | 1363 | set_bit(dev->if_port, &sge->stopped_tx_queues); |
1364 | } | 1364 | } |