net: make sure net_rx_action() calls skb_defer_free_flush()
I missed a stray return; in net_rx_action(), which very well
is taken whenever trigger_rx_softirq() has been called on
a cpu that is no longer receiving network packets,
or receiving too few of them.
Fixes: 68822bdf76
("net: generalize skb freeing deferral to per-cpu lists")
Signed-off-by: Eric Dumazet <edumazet@google.com>
Reported-by: Ido Schimmel <idosch@nvidia.com>
Tested-by: Ido Schimmel <idosch@nvidia.com>
Link: https://lore.kernel.org/r/20220427204147.1310161-1-eric.dumazet@gmail.com
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
This commit is contained in:
Родитель
be5fd933f8
Коммит
f3412b3879
|
@ -6617,7 +6617,7 @@ static __latent_entropy void net_rx_action(struct softirq_action *h)
|
||||||
|
|
||||||
if (list_empty(&list)) {
|
if (list_empty(&list)) {
|
||||||
if (!sd_has_rps_ipi_waiting(sd) && list_empty(&repoll))
|
if (!sd_has_rps_ipi_waiting(sd) && list_empty(&repoll))
|
||||||
return;
|
goto end;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -6644,6 +6644,7 @@ static __latent_entropy void net_rx_action(struct softirq_action *h)
|
||||||
__raise_softirq_irqoff(NET_RX_SOFTIRQ);
|
__raise_softirq_irqoff(NET_RX_SOFTIRQ);
|
||||||
|
|
||||||
net_rps_action_and_irq_enable(sd);
|
net_rps_action_and_irq_enable(sd);
|
||||||
|
end:
|
||||||
skb_defer_free_flush(sd);
|
skb_defer_free_flush(sd);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче