• Nicholas Bellinger's avatar
    target: Fix v4.1 UNIT_ATTENTION se_node_acl->device_list[] NULL pointer · 35afa656
    Nicholas Bellinger authored
    This patch fixes a v4.1 only regression bug as reported by Martin
    where UNIT_ATTENTION checking for pre v4.2-rc1 RCU conversion code
    legacy se_node_acl->device_list[] was hitting a NULL pointer
    dereference in:
    
    [ 1858.639654] CPU: 2 PID: 1293 Comm: kworker/2:1 Tainted: G          I 4.1.6-fixxcopy+ #1
    [ 1858.639699] Hardware name: Dell Inc. PowerEdge R410/0N83VF, BIOS 1.11.0 07/20/2012
    [ 1858.639747] Workqueue: xcopy_wq target_xcopy_do_work [target_core_mod]
    [ 1858.639782] task: ffff880036f0cbe0 ti: ffff880317940000 task.ti: ffff880317940000
    [ 1858.639822] RIP: 0010:[<ffffffffa01d3774>]  [<ffffffffa01d3774>] target_scsi3_ua_check+0x24/0x60 [target_core_mod]
    [ 1858.639884] RSP: 0018:ffff880317943ce0  EFLAGS: 00010282
    [ 1858.639913] RAX: 0000000000000000 RBX: ffff880317943dc0 RCX: 0000000000000000
    [ 1858.639950] RDX: 0000000000000000 RSI: ffff880317943dd0 RDI: ffff88030eaee408
    [ 1858.639987] RBP: ffff88030eaee408 R08: 0000000000000001 R09: 0000000000000001
    [ 1858.640025] R10: 0000000000000000 R11: 00000000000706e0 R12: ffff880315e0a000
    [ 1858.640062] R13: ffff88030eaee408 R14: 0000000000000001 R15: ffff88030eaee408
    [ 1858.640100] FS:  0000000000000000(0000) GS:ffff880322e80000(0000) knlGS:0000000000000000
    [ 1858.640143] CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b
    [ 1858.640173] CR2: 0000000000000000 CR3: 000000000180d000 CR4: 00000000000006e0
    [ 1858.640210] Stack:
    [ 1858.640223]  ffffffffa01cadfa ffff88030eaee400 ffff880318e7c340 ffff880315e0a000
    [ 1858.640267]  ffffffffa01d8c25 ffff8800cae809e0 0000000000000400 0000000000000400
    [ 1858.640310]  ffff880318e7c3d0 0000000006b75800 0000000000080000 ffff88030eaee400
    [ 1858.640354] Call Trace:
    [ 1858.640379]  [<ffffffffa01cadfa>] ? target_setup_cmd_from_cdb+0x13a/0x2c0 [target_core_mod]
    [ 1858.640429]  [<ffffffffa01d8c25>] ? target_xcopy_setup_pt_cmd+0x85/0x320 [target_core_mod]
    [ 1858.640479]  [<ffffffffa01d9424>] ? target_xcopy_do_work+0x264/0x700 [target_core_mod]
    [ 1858.640526]  [<ffffffff810ac3a0>] ? pick_next_task_fair+0x720/0x8f0
    [ 1858.640562]  [<ffffffff8108b3fb>] ? process_one_work+0x14b/0x430
    [ 1858.640595]  [<ffffffff8108bf5b>] ? worker_thread+0x6b/0x560
    [ 1858.640627]  [<ffffffff8108bef0>] ? rescuer_thread+0x390/0x390
    [ 1858.640661]  [<ffffffff810913b3>] ? kthread+0xd3/0xf0
    [ 1858.640689]  [<ffffffff810912e0>] ? kthread_create_on_node+0x180/0x180
    
    Also, check for the same se_node_acl->device_list[] during EXTENDED_COPY
    operation as a non-holding persistent reservation port.
    Reported-by: default avatarMartin Svec <martin,svec@zoner.cz>
    Tested-by: default avatarMartin Svec <martin,svec@zoner.cz>
    Cc: Martin Svec <martin,svec@zoner.cz>
    Cc: Alex Gorbachev <ag@iss-integration.com>
    Signed-off-by: default avatarNicholas Bellinger <nab@linux-iscsi.org>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    35afa656
target_core_ua.c 8.85 KB