mbox series

[net,0/2] net: fix netpoll crash with bnxt

Message ID 20200826194007.1962762-1-kuba@kernel.org
Headers show
Series net: fix netpoll crash with bnxt | expand

Message

Jakub Kicinski Aug. 26, 2020, 7:40 p.m. UTC
Hi!

Rob run into crashes when using XDP on bnxt. Upon investigation
it turns out that during driver reconfig irq core produces
a warning message when IRQs are requested. This triggers netpoll,
which in turn accesses uninitialized driver state. Same crash can
also be triggered on this platform by changing the number of rings.

Looks like we have two missing pieces here, netif_napi_add() has
to make sure we start out with netpoll blocked. The driver also
has to be more careful about when napi gets enabled.

Tested XDP and channel count changes, the warning message no longer
causes a crash. Not sure if the memory barriers added in patch 1
are necessary, but it seems we should have them.

Jakub Kicinski (2):
  net: disable netpoll on fresh napis
  bnxt: don't enable NAPI until rings are ready

 drivers/net/ethernet/broadcom/bnxt/bnxt.c | 12 ++++--------
 net/core/dev.c                            |  3 ++-
 net/core/netpoll.c                        |  2 +-
 3 files changed, 7 insertions(+), 10 deletions(-)

Comments

David Miller Aug. 26, 2020, 11:17 p.m. UTC | #1
From: Jakub Kicinski <kuba@kernel.org>
Date: Wed, 26 Aug 2020 12:40:05 -0700

> Rob run into crashes when using XDP on bnxt. Upon investigation
> it turns out that during driver reconfig irq core produces
> a warning message when IRQs are requested. This triggers netpoll,
> which in turn accesses uninitialized driver state. Same crash can
> also be triggered on this platform by changing the number of rings.
> 
> Looks like we have two missing pieces here, netif_napi_add() has
> to make sure we start out with netpoll blocked. The driver also
> has to be more careful about when napi gets enabled.
> 
> Tested XDP and channel count changes, the warning message no longer
> causes a crash. Not sure if the memory barriers added in patch 1
> are necessary, but it seems we should have them.

Series applied and queued up for -stable, thanks Jakub.