net: Always poll at least one device in net_rx_action
We should only perform the softnet_break check after we have polled at least one device in net_rx_action. Otherwise a zero or negative setting of netdev_budget can lock up the whole system. Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
001ce546bb
commit
6bd373ebba
|
@ -4634,16 +4634,15 @@ static void net_rx_action(struct softirq_action *h)
|
|||
while (!list_empty(&list)) {
|
||||
struct napi_struct *n;
|
||||
|
||||
n = list_first_entry(&list, struct napi_struct, poll_list);
|
||||
budget -= napi_poll(n, &repoll);
|
||||
|
||||
/* If softirq window is exhausted then punt.
|
||||
* Allow this to run for 2 jiffies since which will allow
|
||||
* an average latency of 1.5/HZ.
|
||||
*/
|
||||
if (unlikely(budget <= 0 || time_after_eq(jiffies, time_limit)))
|
||||
goto softnet_break;
|
||||
|
||||
|
||||
n = list_first_entry(&list, struct napi_struct, poll_list);
|
||||
budget -= napi_poll(n, &repoll);
|
||||
}
|
||||
|
||||
if (!sd_has_rps_ipi_waiting(sd) &&
|
||||
|
|
Loading…
Reference in New Issue