Patch "scsi: bfa: Fix use-after-free in bfad_im_module_exit()" has been added to the 5.15-stable tree

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

 



This is a note to let you know that I've just added the patch titled

    scsi: bfa: Fix use-after-free in bfad_im_module_exit()

to the 5.15-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     scsi-bfa-fix-use-after-free-in-bfad_im_module_exit.patch
and it can be found in the queue-5.15 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 2d6d36595de7c2d984846bf785fde4298102a6e9
Author: Ye Bin <yebin10@xxxxxxxxxx>
Date:   Wed Oct 23 09:18:09 2024 +0800

    scsi: bfa: Fix use-after-free in bfad_im_module_exit()
    
    [ Upstream commit 178b8f38932d635e90f5f0e9af1986c6f4a89271 ]
    
    BUG: KASAN: slab-use-after-free in __lock_acquire+0x2aca/0x3a20
    Read of size 8 at addr ffff8881082d80c8 by task modprobe/25303
    
    Call Trace:
     <TASK>
     dump_stack_lvl+0x95/0xe0
     print_report+0xcb/0x620
     kasan_report+0xbd/0xf0
     __lock_acquire+0x2aca/0x3a20
     lock_acquire+0x19b/0x520
     _raw_spin_lock+0x2b/0x40
     attribute_container_unregister+0x30/0x160
     fc_release_transport+0x19/0x90 [scsi_transport_fc]
     bfad_im_module_exit+0x23/0x60 [bfa]
     bfad_init+0xdb/0xff0 [bfa]
     do_one_initcall+0xdc/0x550
     do_init_module+0x22d/0x6b0
     load_module+0x4e96/0x5ff0
     init_module_from_file+0xcd/0x130
     idempotent_init_module+0x330/0x620
     __x64_sys_finit_module+0xb3/0x110
     do_syscall_64+0xc1/0x1d0
     entry_SYSCALL_64_after_hwframe+0x77/0x7f
     </TASK>
    
    Allocated by task 25303:
     kasan_save_stack+0x24/0x50
     kasan_save_track+0x14/0x30
     __kasan_kmalloc+0x7f/0x90
     fc_attach_transport+0x4f/0x4740 [scsi_transport_fc]
     bfad_im_module_init+0x17/0x80 [bfa]
     bfad_init+0x23/0xff0 [bfa]
     do_one_initcall+0xdc/0x550
     do_init_module+0x22d/0x6b0
     load_module+0x4e96/0x5ff0
     init_module_from_file+0xcd/0x130
     idempotent_init_module+0x330/0x620
     __x64_sys_finit_module+0xb3/0x110
     do_syscall_64+0xc1/0x1d0
     entry_SYSCALL_64_after_hwframe+0x77/0x7f
    
    Freed by task 25303:
     kasan_save_stack+0x24/0x50
     kasan_save_track+0x14/0x30
     kasan_save_free_info+0x3b/0x60
     __kasan_slab_free+0x38/0x50
     kfree+0x212/0x480
     bfad_im_module_init+0x7e/0x80 [bfa]
     bfad_init+0x23/0xff0 [bfa]
     do_one_initcall+0xdc/0x550
     do_init_module+0x22d/0x6b0
     load_module+0x4e96/0x5ff0
     init_module_from_file+0xcd/0x130
     idempotent_init_module+0x330/0x620
     __x64_sys_finit_module+0xb3/0x110
     do_syscall_64+0xc1/0x1d0
     entry_SYSCALL_64_after_hwframe+0x77/0x7f
    
    Above issue happens as follows:
    
    bfad_init
      error = bfad_im_module_init()
        fc_release_transport(bfad_im_scsi_transport_template);
      if (error)
        goto ext;
    
    ext:
      bfad_im_module_exit();
        fc_release_transport(bfad_im_scsi_transport_template);
        --> Trigger double release
    
    Don't call bfad_im_module_exit() if bfad_im_module_init() failed.
    
    Fixes: 7725ccfda597 ("[SCSI] bfa: Brocade BFA FC SCSI driver")
    Signed-off-by: Ye Bin <yebin10@xxxxxxxxxx>
    Link: https://lore.kernel.org/r/20241023011809.63466-1-yebin@xxxxxxxxxxxxxxx
    Signed-off-by: Martin K. Petersen <martin.petersen@xxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/scsi/bfa/bfad.c b/drivers/scsi/bfa/bfad.c
index 440ef32be048f..45b5f83ad6da1 100644
--- a/drivers/scsi/bfa/bfad.c
+++ b/drivers/scsi/bfa/bfad.c
@@ -1705,9 +1705,8 @@ bfad_init(void)
 
 	error = bfad_im_module_init();
 	if (error) {
-		error = -ENOMEM;
 		printk(KERN_WARNING "bfad_im_module_init failure\n");
-		goto ext;
+		return -ENOMEM;
 	}
 
 	if (strcmp(FCPI_NAME, " fcpim") == 0)




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux