On Thu, Feb 7, 2019 at 12:27 PM Eric Dumazet <eduma...@google.com> wrote:
>
> netif_rx() must be called under a strict contract.
>
> At device dismantle phase, core networking clears IFF_UP
> and flush_all_backlogs() is called after rcu grace period
> to make sure no incoming packet might be in a cpu backlog
> and still referencing the device.
>
> Most drivers call netif_rx() from their interrupt handler,
> and since the interrupts are disabled at device dismantle,
> netif_rx() does not have to check dev->flags & IFF_UP
>
> Virtual drivers do not have this guarantee, and must
> therefore make the check themselves.

Since other netif_rx() callers seem to have the same issue, I wonder
if we simply could add a generic check.

Most high performance drivers no longer call netif_rx() so an extra check
in it wont be a problem.

Reply via email to