lpfc use-after-free

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi James,

If I unload the FC driver at the target side then the lpfc driver at the
initiator side triggers a KASAN complaint. Can you have a look at this?

Thanks,

Bart.

==================================================================
BUG: KASAN: use-after-free in lpfc_sli_def_mbox_cmpl+0x285/0x530 [lpfc]
Read of size 4 at addr ffff8880cc1116a0 by task lpfc_worker_1/188
CPU: 1 PID: 188 Comm: lpfc_worker_1 Tainted: G        W  O      5.0.0-rc6-dbg+ #3
Hardware name: Bochs Bochs, BIOS Bochs 01/01/2011
Call Trace:
 dump_stack+0x86/0xca
 print_address_description+0x71/0x239
 kasan_report.cold.3+0x1b/0x3b
 __asan_load4+0x78/0x80
 lpfc_sli_def_mbox_cmpl+0x285/0x530 [lpfc]
 lpfc_sli_handle_mb_event+0x455/0x8b0 [lpfc]
 lpfc_do_work+0x15a7/0x2630 [lpfc]
 kthread+0x1d2/0x1f0
 ret_from_fork+0x3a/0x50

Allocated by task 188:
 save_stack+0x43/0xd0
 __kasan_kmalloc.constprop.6+0xcb/0xd0
 kasan_kmalloc+0x9/0x10
 __kmalloc+0x135/0x310
 mempool_kmalloc+0x15/0x20
 mempool_alloc+0xf9/0x270
 lpfc_nlp_init+0x62/0x460 [lpfc]
 lpfc_els_unsol_buffer+0x15ca/0x4ba0 [lpfc]
 lpfc_els_unsol_event+0x184/0x350 [lpfc]
 lpfc_complete_unsol_iocb+0x101/0x150 [lpfc]
 lpfc_sli4_handle_received_buffer+0x10ad/0x1900 [lpfc]
 lpfc_sli_handle_slow_ring_event_s4+0x27d/0x3b0 [lpfc]
 lpfc_sli_handle_slow_ring_event+0x32/0x40 [lpfc]
 lpfc_do_work+0x1472/0x2630 [lpfc]
 kthread+0x1d2/0x1f0
 ret_from_fork+0x3a/0x50

Freed by task 5931:
 save_stack+0x43/0xd0
 __kasan_slab_free+0x139/0x190
 kasan_slab_free+0xe/0x10
 kfree+0xe5/0x2c0
 mempool_kfree+0xe/0x10
 mempool_free+0x65/0x160
 lpfc_nlp_put.part.17+0x97a/0x10d0 [lpfc]
 lpfc_nlp_put+0x13/0x20 [lpfc]
 lpfc_disc_state_machine+0x167/0x360 [lpfc]
 lpfc_cleanup+0x173/0x390 [lpfc]
 lpfc_pci_remove_one+0x4f5/0xc70 [lpfc]
 pci_device_remove+0xd9/0x1e0
 device_release_driver_internal+0x28b/0x3a0
 driver_detach+0x9a/0xfa
 bus_remove_driver+0xca/0x14a
 driver_unregister+0x43/0x60
 pci_unregister_driver+0x29/0x110
 lpfc_exit+0x1c/0xf0a [lpfc]
 __x64_sys_delete_module+0x215/0x2e0
 do_syscall_64+0x77/0x220
 entry_SYSCALL_64_after_hwframe+0x49/0xbe

The buggy address belongs to the object at ffff8880cc111680
 which belongs to the cache kmalloc-512 of size 512
The buggy address is located 32 bytes inside of
 512-byte region [ffff8880cc111680, ffff8880cc111880)
The buggy address belongs to the page:
page:ffffea0003304400 count:1 mapcount:0 mapping:ffff88811ff46c00 index:0xffff8880cc113980 compound_mapcount: 0
flags: 0x1000000000010200(slab|head)
raw: 1000000000010200 ffffea00028cf308 ffffea0000d05c08 ffff88811ff46c00
raw: ffff8880cc113980 0000000000190010 00000001ffffffff 0000000000000000
page dumped because: kasan: bad access detected

Memory state around the buggy address:
 ffff8880cc111580: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
 ffff8880cc111600: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
>ffff8880cc111680: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
                               ^
 ffff8880cc111700: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
 ffff8880cc111780: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
==================================================================

(gdb) list *(lpfc_sli_def_mbox_cmpl+0x285)
0x2e25 is in lpfc_sli_def_mbox_cmpl (drivers/scsi/lpfc/lpfc_sli.c:2505).
2500            if (pmb->u.mb.mbxCommand == MBX_UNREG_LOGIN) {
2501                    ndlp = (struct lpfc_nodelist *)pmb->ctx_ndlp;
2502
2503                    /* Check to see if there are any deferred events to process */
2504                    if (ndlp) {
2505                            lpfc_printf_vlog(
2506                                    vport,
2507                                    KERN_INFO, LOG_MBOX | LOG_DISCOVERY,
2508                                    "1438 UNREG cmpl deferred mbox x%x "
2509                                    "on NPort x%x Data: x%x x%x %p\n",



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [SCSI Target Devel]     [Linux SCSI Target Infrastructure]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Samba]     [Device Mapper]

  Powered by Linux