• Breno Leitao's avatar
    icom: fix rmmod crash · 95caa0a9
    Breno Leitao authored
    Actually the icom driver is crashing when is being removed because
    the driver is kfreeing the adapter structure before calling
    pci_release_regions(), which result in the following error:
    
      Unable to handle kernel paging request for data at address 0x6b6b6b6b6b6b6d33
      Faulting instruction address: 0xc000000000246b80
      Oops: Kernel access of bad area, sig: 11 [#1]
      ....
      [c000000012d436a0] [c0000000001002d0] .kfree+0x120/0x34c (unreliable)
      [c000000012d43730] [c000000000246d60] .pci_release_selected_regions+0x3c/0x68
      [c000000012d437c0] [d000000002d54700] .icom_kref_release+0xf4/0x118 [icom]
      [c000000012d43850] [c000000000232e50] .kref_put+0x74/0x94
      [c000000012d438d0] [d000000002d56c58] .icom_remove+0x40/0xa4 [icom]
      [c000000012d43960] [c000000000249e48] .pci_device_remove+0x50/0x90
      [c000000012d439e0] [c0000000002d68d8] .__device_release_driver+0x94/0xd4
      [c000000012d43a70] [c0000000002d7104] .driver_detach+0xf8/0x12c
      [c000000012d43b00] [c0000000002d549c] .bus_remove_driver+0xbc/0x11c
      [c000000012d43b90] [c0000000002d71dc] .driver_unregister+0x60/0x80
      [c000000012d43c20] [c00000000024a07c] .pci_unregister_driver+0x44/0xe8
      [c000000012d43cb0] [d000000002d56bf4] .icom_exit+0x1c/0x40 [icom]
      [c000000012d43d30] [c000000000095fa8] .SyS_delete_module+0x214/0x2a8
      [c000000012d43e30] [c00000000000852c] syscall_exit+0x0/0x40
    Signed-off-by: default avatarBreno Leitao <leitao@linux.vnet.ibm.com>
    Cc: stable@kernel.org
    Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    95caa0a9
icom.c 43.4 KB