• Shu Wang's avatar
    scsi: megaraid_sas: fix memleak in megasas_alloc_cmdlist_fusion · 70c54e21
    Shu Wang authored
    Found this issue by kmemleak, a few kb mem was leaked in
    megasas_alloc_cmdlist_fusion when kzalloc failed for one
    megasas_cmd_fusion allocation.
    
    unreferenced object 0xffff88045dbd2000 (size 8192):
      comm "systemd-udevd", pid 323, jiffies 4294671759 (age 49.008s)
      backtrace:
        [<ffffffff8176166a>] kmemleak_alloc+0x4a/0xa0
        [<ffffffff812186a8>] __kmalloc+0xe8/0x220
        [<ffffffffc0060594>] megasas_alloc_cmdlist_fusion+0x34/0xe0 [megaraid_sas]
    (gdb) list *megasas_alloc_cmdlist_fusion+0x34
    0xd5c4 is in megasas_alloc_cmdlist_fusion
                   (drivers/scsi/megaraid/megaraid_sas_fusion.c:443).
        [<ffffffffc0060ca5>] megasas_alloc_cmds_fusion+0x25/0x410 [megaraid_sas]
        [<ffffffffc0061edf>] megasas_init_adapter_fusion+0x21f/0x640 [megaraid_sas]
        [<ffffffffc005df17>] megasas_init_fw+0x357/0xd30 [megaraid_sas]
        [<ffffffffc005ef26>] megasas_probe_one.part.33+0x636/0x1100 [megaraid_sas]
        [<ffffffffc005fa36>] megasas_probe_one+0x46/0xc0 [megaraid_sas]
        [<ffffffff813d2ca5>] local_pci_probe+0x45/0xa0
        [<ffffffff813d4222>] pci_device_probe+0x192/0x1b0
        [<ffffffff814e3658>] driver_probe_device+0x2a8/0x460
        [<ffffffff814e38ed>] __driver_attach+0xdd/0xe0
        [<ffffffff814e124c>] bus_for_each_dev+0x6c/0xc0
        [<ffffffff814e2dde>] driver_attach+0x1e/0x20
        [<ffffffff814e2775>] bus_add_driver+0x45/0x270
        [<ffffffff814e4400>] driver_register+0x60/0xe0
    unreferenced object 0xffff880454ce3600 (size 192):
      backtrace:
        [<ffffffff8176166a>] kmemleak_alloc+0x4a/0xa0
        [<ffffffff8121801a>] kmem_cache_alloc_trace+0xca/0x1d0
        [<ffffffffc00605d7>] megasas_alloc_cmdlist_fusion+0x77/0xe0 [megaraid_sas]
    (gdb) list *megasas_alloc_cmdlist_fusion+0x77
    0xd607 is in megasas_alloc_cmdlist_fusion
                    (drivers/scsi/megaraid/megaraid_sas_fusion.c:450).
        [<ffffffffc0060ca5>] megasas_alloc_cmds_fusion+0x25/0x410 [megaraid_sas]
        [<ffffffffc0061edf>] megasas_init_adapter_fusion+0x21f/0x640 [megaraid_sas]
        [<ffffffffc005df17>] megasas_init_fw+0x357/0xd30 [megaraid_sas]
        [<ffffffffc005ef26>] megasas_probe_one.part.33+0x636/0x1100 [megaraid_sas]
        [<ffffffffc005fa36>] megasas_probe_one+0x46/0xc0 [megaraid_sas]
        [<ffffffff813d2ca5>] local_pci_probe+0x45/0xa0
        [<ffffffff813d4222>] pci_device_probe+0x192/0x1b0
        [<ffffffff814e3658>] driver_probe_device+0x2a8/0x460
        [<ffffffff814e38ed>] __driver_attach+0xdd/0xe0
        [<ffffffff814e124c>] bus_for_each_dev+0x6c/0xc0
        [<ffffffff814e2dde>] driver_attach+0x1e/0x20
        [<ffffffff814e2775>] bus_add_driver+0x45/0x270
        [<ffffffff814e4400>] driver_register+0x60/0xe0
    Signed-off-by: default avatarShu Wang <shuwang@redhat.com>
    Acked-by: default avatarSumit Saxena <sumit.saxena@broadcom.com>
    Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
    70c54e21
megaraid_sas_fusion.c 133 KB