From: Sathya Perla Date: Mon, 22 Aug 2011 19:41:51 +0000 (+0000) Subject: be2net: Fix race in posting rx buffers. X-Git-Url: http://git.cdn.openwrt.org/?a=commitdiff_plain;h=857c99059e441d0a8afdfa0bc687463e8e61a761;p=openwrt%2Fstaging%2Fblogic.git be2net: Fix race in posting rx buffers. There is a possibility of be_post_rx_frags() being called simultaneously from both be_worker() (when rx_post_starved) and be_poll_rx() (when rxq->used is 0). This can be avoided by posting rx buffers only when some completions have been reaped. Signed-off-by: Sathya Perla Signed-off-by: David S. Miller --- diff --git a/drivers/net/ethernet/emulex/benet/be_main.c b/drivers/net/ethernet/emulex/benet/be_main.c index ef62594a19cd..09eb6998e4d8 100644 --- a/drivers/net/ethernet/emulex/benet/be_main.c +++ b/drivers/net/ethernet/emulex/benet/be_main.c @@ -1862,7 +1862,7 @@ loop_continue: } /* Refill the queue */ - if (atomic_read(&rxo->q.used) < RX_FRAGS_REFILL_WM) + if (work_done && atomic_read(&rxo->q.used) < RX_FRAGS_REFILL_WM) be_post_rx_frags(rxo, GFP_ATOMIC); /* All consumed */