• Bart Van Assche's avatar
    scsi: scsi_dh_alua: Check scsi_device_get() return value · 625fe857
    Bart Van Assche authored
    Do not queue ALUA work nor call scsi_device_put() if the
    scsi_device_get() call fails. This patch fixes the following crash:
    
    general protection fault: 0000 [#1] SMP
    RIP: 0010:scsi_device_put+0xb/0x30
    Call Trace:
     scsi_disk_put+0x2d/0x40
     sd_release+0x3d/0xb0
     __blkdev_put+0x29e/0x360
     blkdev_put+0x49/0x170
     dm_put_table_device+0x58/0xc0 [dm_mod]
     dm_put_device+0x70/0xc0 [dm_mod]
     free_priority_group+0x92/0xc0 [dm_multipath]
     free_multipath+0x70/0xc0 [dm_multipath]
     multipath_dtr+0x19/0x20 [dm_multipath]
     dm_table_destroy+0x67/0x120 [dm_mod]
     dev_suspend+0xde/0x240 [dm_mod]
     ctl_ioctl+0x1f5/0x520 [dm_mod]
     dm_ctl_ioctl+0xe/0x20 [dm_mod]
     do_vfs_ioctl+0x8f/0x700
     SyS_ioctl+0x3c/0x70
     entry_SYSCALL_64_fastpath+0x18/0xad
    
    Fixes: commit 03197b61 ("scsi_dh_alua: Use workqueue for RTPG")
    Signed-off-by: default avatarBart Van Assche <bart.vanassche@sandisk.com>
    Cc: Hannes Reinecke <hare@suse.de>
    Cc: Tang Junhui <tang.junhui@zte.com.cn>
    Cc: <stable@vger.kernel.org>
    Reviewed-by: default avatarHannes Reinecke <hare@suse.de>
    Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
    625fe857
scsi_dh_alua.c 30.6 KB