netpoll: Drop budget parameter from NAPI polling call hierarchy
authorAlexander Duyck <aduyck@mirantis.com>
Mon, 28 Sep 2015 16:16:17 +0000 (09:16 -0700)
committerDavid S. Miller <davem@davemloft.net>
Tue, 29 Sep 2015 21:57:16 +0000 (14:57 -0700)
commit822d54b9c2c18271239ad7d928f1e9c702676592
tree5cbe32bb53daf8660e890a32fbdf06820ad5e029
parent2594e9064a57634efc146ff4e89a5de562e05011
netpoll: Drop budget parameter from NAPI polling call hierarchy

For some reason we were carrying the budget value around between the
various calls to napi->poll.  If for example one of the drivers called had
a bug in which it returned a non-zero value for work this could result in
the budget value becoming negative.

Rather than carry around a value of budget that is 0 or less we can instead
just loop through and pass 0 to each napi->poll call.  If any driver
returns a value for work done that is non-zero then we can report that
driver and continue rather than allowing a bad actor to make the budget
value negative and pass that negative value to napi->poll.

Note, the only actual change here is that instead of letting budget become
negative we are keeping it at 0 regardless of the value returned for work
since it should not be possible for the polling routine to do any actual
work with a budget of 0.  So if the polling routine returns a non-0 value
we are just reporting it and continuing with a budget of 0 rather than
letting that work value be subtracted from the budget of 0.

Signed-off-by: Alexander Duyck <aduyck@mirantis.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/core/netpoll.c