Commit f3412b38 authored by Eric Dumazet's avatar Eric Dumazet Committed by Paolo Abeni
Browse files

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: 68822bdf ("net: generalize skb freeing deferral to per-cpu lists")
Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
Reported-by: default avatarIdo Schimmel <idosch@nvidia.com>
Tested-by: default avatarIdo Schimmel <idosch@nvidia.com>
Link: https://lore.kernel.org/r/20220427204147.1310161-1-eric.dumazet@gmail.com


Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
parent be5fd933
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -6617,7 +6617,7 @@ static __latent_entropy void net_rx_action(struct softirq_action *h)

		if (list_empty(&list)) {
			if (!sd_has_rps_ipi_waiting(sd) && list_empty(&repoll))
				return;
				goto end;
			break;
		}

@@ -6644,6 +6644,7 @@ static __latent_entropy void net_rx_action(struct softirq_action *h)
		__raise_softirq_irqoff(NET_RX_SOFTIRQ);

	net_rps_action_and_irq_enable(sd);
end:
	skb_defer_free_flush(sd);
}