• Jakub Kicinski's avatar
    bnxt: don't enable NAPI until rings are ready · 96ecdcc9
    Jakub Kicinski authored
    Netpoll can try to poll napi as soon as napi_enable() is called.
    It crashes trying to access a doorbell which is still NULL:
    
     BUG: kernel NULL pointer dereference, address: 0000000000000000
     CPU: 59 PID: 6039 Comm: ethtool Kdump: loaded Tainted: G S                5.9.0-rc1-00469-g5fd99b5d-dirty #26
     RIP: 0010:bnxt_poll+0x121/0x1c0
     Code: c4 20 44 89 e0 5b 5d 41 5c 41 5d 41 5e 41 5f c3 41 8b 86 a0 01 00 00 41 23 85 18 01 00 00 49 8b 96 a8 01 00 00 0d 00 00 00 24 <89> 02
    41 f6 45 77 02 74 cb 49 8b ae d8 01 00 00 31 c0 c7 44 24 1a
      netpoll_poll_dev+0xbd/0x1a0
      __netpoll_send_skb+0x1b2/0x210
      netpoll_send_udp+0x2c9/0x406
      write_ext_msg+0x1d7/0x1f0
      console_unlock+0x23c/0x520
      vprintk_emit+0xe0/0x1d0
      printk+0x58/0x6f
      x86_vector_activate.cold+0xf/0x46
      __irq_domain_activate_irq+0x50/0x80
      __irq_domain_activate_irq+0x32/0x80
      __irq_domain_activate_irq+0x32/0x80
      irq_domain_activate_irq+0x25/0x40
      __setup_irq+0x2d2/0x700
      request_threaded_irq+0xfb/0x160
      __bnxt_open_nic+0x3b1/0x750
      bnxt_open_nic+0x19/0x30
      ethtool_set_channels+0x1ac/0x220
      dev_ethtool+0x11ba/0x2240
      dev_ioctl+0x1cf/0x390
      sock_do_ioctl+0x95/0x130
    Reported-by: default avatarRob Sherwood <rsher@fb.com>
    Fixes: c0c050c5 ("bnxt_en: New Broadcom ethernet driver.")
    Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
    Reviewed-by: default avatarMichael Chan <michael.chan@broadcom.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    96ecdcc9
bnxt.c 332 KB