diff options
author | Sathya Perla <sathya.perla@emulex.com> | 2011-08-22 21:41:51 +0200 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2011-08-25 01:19:28 +0200 |
commit | 857c99059e441d0a8afdfa0bc687463e8e61a761 (patch) | |
tree | e625a4b0527c32cdbd22d9eb905be80149c8b085 /drivers | |
parent | rps: support IPIP encapsulation (diff) | |
download | linux-857c99059e441d0a8afdfa0bc687463e8e61a761.tar.xz linux-857c99059e441d0a8afdfa0bc687463e8e61a761.zip |
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 <sathya.perla@emulex.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/net/ethernet/emulex/benet/be_main.c | 2 |
1 files changed, 1 insertions, 1 deletions
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 */ |