• Joel Slebodnick's avatar
    scsi: ufs: core: Free memory allocated for model before reinit · 135c6eb2
    Joel Slebodnick authored
    Under the conditions that a device is to be reinitialized within
    ufshcd_probe_hba(), the device must first be fully reset.
    
    Resetting the device should include freeing U8 model (member of dev_info)
    but does not, and this causes a memory leak.  ufs_put_device_desc() is
    responsible for freeing model.
    
    unreferenced object 0xffff3f63008bee60 (size 32):
      comm "kworker/u33:1", pid 60, jiffies 4294892642
      hex dump (first 32 bytes):
        54 48 47 4a 46 47 54 30 54 32 35 42 41 5a 5a 41  THGJFGT0T25BAZZA
        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
      backtrace (crc ed7ff1a9):
        [<ffffb86705f1243c>] kmemleak_alloc+0x34/0x40
        [<ffffb8670511cee4>] __kmalloc_noprof+0x1e4/0x2fc
        [<ffffb86705c247fc>] ufshcd_read_string_desc+0x94/0x190
        [<ffffb86705c26854>] ufshcd_device_init+0x480/0xdf8
        [<ffffb86705c27b68>] ufshcd_probe_hba+0x3c/0x404
        [<ffffb86705c29264>] ufshcd_async_scan+0x40/0x370
        [<ffffb86704f43e9c>] async_run_entry_fn+0x34/0xe0
        [<ffffb86704f34638>] process_one_work+0x154/0x298
        [<ffffb86704f34a74>] worker_thread+0x2f8/0x408
        [<ffffb86704f3cfa4>] kthread+0x114/0x118
        [<ffffb86704e955a0>] ret_from_fork+0x10/0x20
    
    Fixes: 96a7141d ("scsi: ufs: core: Add support for reinitializing the UFS device")
    Cc: <stable@vger.kernel.org>
    Reviewed-by: default avatarAndrew Halaney <ahalaney@redhat.com>
    Reviewed-by: default avatarBart Van Assche <bvanassche@acm.org>
    Signed-off-by: default avatarJoel Slebodnick <jslebodn@redhat.com>
    Link: https://lore.kernel.org/r/20240613200202.2524194-1-jslebodn@redhat.comSigned-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
    135c6eb2
ufshcd.c 288 KB