• Bart Van Assche's avatar
    IB/srp: Fix race conditions related to task management · 35065a1f
    Bart Van Assche authored
    commit 0a6fdbde upstream.
    
    Avoid that srp_process_rsp() overwrites the status information
    in ch if the SRP target response timed out and processing of
    another task management function has already started. Avoid that
    issuing multiple task management functions concurrently triggers
    list corruption. This patch prevents that the following stack
    trace appears in the system log:
    
    WARNING: CPU: 8 PID: 9269 at lib/list_debug.c:52 __list_del_entry_valid+0xbc/0xc0
    list_del corruption. prev->next should be ffffc90004bb7b00, but was ffff8804052ecc68
    CPU: 8 PID: 9269 Comm: sg_reset Tainted: G        W       4.10.0-rc7-dbg+ #3
    Call Trace:
     dump_stack+0x68/0x93
     __warn+0xc6/0xe0
     warn_slowpath_fmt+0x4a/0x50
     __list_del_entry_valid+0xbc/0xc0
     wait_for_completion_timeout+0x12e/0x170
     srp_send_tsk_mgmt+0x1ef/0x2d0 [ib_srp]
     srp_reset_device+0x5b/0x110 [ib_srp]
     scsi_ioctl_reset+0x1c7/0x290
     scsi_ioctl+0x12a/0x420
     sd_ioctl+0x9d/0x100
     blkdev_ioctl+0x51e/0x9f0
     block_ioctl+0x38/0x40
     do_vfs_ioctl+0x8f/0x700
     SyS_ioctl+0x3c/0x70
     entry_SYSCALL_64_fastpath+0x18/0xad
    Signed-off-by: default avatarBart Van Assche <bart.vanassche@sandisk.com>
    Cc: Israel Rukshin <israelr@mellanox.com>
    Cc: Max Gurtovoy <maxg@mellanox.com>
    Cc: Laurence Oberman <loberman@redhat.com>
    Cc: Steve Feeley <Steve.Feeley@sandisk.com>
    Signed-off-by: default avatarDoug Ledford <dledford@redhat.com>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    35065a1f
ib_srp.c 98.5 KB