• Xi Wang's avatar
    net: hns3: Fixes kernel panic issue during rmmod hns3 driver · 7bb572fd
    Xi Wang authored
    If CONFIG_ARM_SMMU_V3 is enabled, arm64's dma_ops will replace
    arm64_swiotlb_dma_ops with iommu_dma_ops. When releasing contiguous
    dma memory, the new ops will call the vunmap function which cannot
    be run in interrupt context.
    
    Currently, spin_lock_bh is called before vunmap is executed. This
    disables BH and causes the interrupt context to be detected to
    generate a kernel panic like below:
    
    [ 2831.573400] kernel BUG at mm/vmalloc.c:1621!
    [ 2831.577659] Internal error: Oops - BUG: 0 [#1] PREEMPT SMP
    ...
    [ 2831.699907] Process rmmod (pid: 1893, stack limit = 0x0000000055103ee2)
    [ 2831.706507] Call trace:
    [ 2831.708941]  vunmap+0x48/0x50
    [ 2831.711897]  dma_common_free_remap+0x78/0x88
    [ 2831.716155]  __iommu_free_attrs+0xa8/0x1c0
    [ 2831.720255]  hclge_free_cmd_desc+0xc8/0x118 [hclge]
    [ 2831.725128]  hclge_destroy_cmd_queue+0x34/0x68 [hclge]
    [ 2831.730261]  hclge_uninit_ae_dev+0x90/0x100 [hclge]
    [ 2831.735127]  hnae3_unregister_ae_dev+0xb0/0x868 [hnae3]
    [ 2831.740345]  hns3_remove+0x3c/0x90 [hns3]
    [ 2831.744344]  pci_device_remove+0x48/0x108
    [ 2831.748342]  device_release_driver_internal+0x164/0x200
    [ 2831.753553]  driver_detach+0x4c/0x88
    [ 2831.757116]  bus_remove_driver+0x60/0xc0
    [ 2831.761026]  driver_unregister+0x34/0x60
    [ 2831.764935]  pci_unregister_driver+0x30/0xb0
    [ 2831.769197]  hns3_exit_module+0x10/0x978 [hns3]
    [ 2831.773715]  SyS_delete_module+0x1f8/0x248
    [ 2831.777799]  el0_svc_naked+0x30/0x34
    
    This patch fixes it by using spin_lock instead of spin_lock_bh.
    
    Fixes: 68c0a5c7 ("net: hns3: Add HNS3 IMP(Integrated Mgmt Proc) Cmd Interface Support")
    Signed-off-by: default avatarXi Wang <wangxi11@huawei.com>
    Signed-off-by: default avatarPeng Li <lipeng321@huawei.com>
    Signed-off-by: default avatarSalil Mehta <salil.mehta@huawei.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    7bb572fd
hclge_cmd.c 9.72 KB