be2net: fix bad queue traversal in be_rx_q_clean()
Subsystems (2)
PATCH 2/3 be2net: fix bad queue traversal in be_rx_q_clean()
Using "for(tail != head)" to traverse a queue from tail to head fails in the case of a fully filled queue. Use "for(used != 0)" instead.
Signed-off-by Sathya Perla <[email protected]>
--- drivers/net/benet/be_main.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)
drivers/net/benet/be_main.c +1 -1
@@ -1010,7 +1010,7 @@ static void be_rx_q_clean(struct be_adapter *adapter)/* Then free posted rx buffer that were not used */ tail = (rxq->head + rxq->len -atomic_read (&rxq->used)) % rxq->len; -for (; tail != rxq->head;index_inc (&tail, rxq->len)) { +for (;atomic_read (&rxq->used) >0 ;index_inc (&tail, rxq->len)) { page_info =get_rx_page_info (adapter, tail);put_page (page_info->page);memset (page_info,0 ,sizeof (*page_info));
Signature · 1 line
1.6.0.4
From: Sathya Perla <[email protected]>
Date: Mon, 10 Aug 2009 19:13:23 +0530
Quoted 4 lines
Using "for(tail != head)" to traverse a queue from tail to head fails in the case of a fully filled queue. Use "for(used != 0)" instead.
Signed-off-by Sathya Perla <[email protected]>
Applied.