| Date | Wed, 16 Apr 2008 18:01:52 -0700 | From | Chris Wright <> | Subject | SUNGEM: Fix NAPI assertion failure. |
| |
-stable review patch. If anyone has any objections, please let us know. ---------------------
From: David S. Miller <davem@davemloft.net>
Upstream commit: da990a2402aeaee84837f29054c4628eb02f7493
As reported by Johannes Berg:
I started getting this warning with recent kernels:
[ 773.908927] ------------[ cut here ]------------ [ 773.908954] Badness at net/core/dev.c:2204 ...
If we loop more than once in gem_poll(), we'll use more than the real budget in our gem_rx() calls, thus eventually trigger the caller's assertions in net_rx_action().
Subtract "work_done" from "budget" for the second arg to gem_rx() to fix the bug.
Signed-off-by: David S. Miller <davem@davemloft.net> Signed-off-by: Chris Wright <chrisw@sous-sol.org> --- drivers/net/sungem.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
--- a/drivers/net/sungem.c +++ b/drivers/net/sungem.c @@ -910,7 +910,7 @@ static int gem_poll(struct napi_struct * * rx ring - must call napi_disable(), which * schedule_timeout()'s if polling is already disabled. */ - work_done += gem_rx(gp, budget); + work_done += gem_rx(gp, budget - work_done); if (work_done >= budget) return work_done; --
|