qla2xxx: Allow vref count to timeout on vport delete.
This commit fixed a panic could be triggered with following steps:
1.create vhba
#virsh nodedev-create vhba.xml
2.destroy vhba
#virsh nodedev-destroy scsi_host9
Content of file vhba.xml:
<device>
<parent>scsi_host7</parent>
<capability type='scsi_host'>
<capability type='fc_host'>
</capability>
</capability>
</device>
Call trace of panic:
[ 207.683754] BUG: unable to handle kernel NULL pointer dereference at
0000000000000410
[ 207.683805] IP: [<
ffffffffa0221d0f>] qla24xx_vport_delete+0xdf/0x180 [qla2xxx]
[ 207.683850] PGD 0
[ 207.683863] Oops: 0000 [#1] SMP
[ 207.684391] CPU: 0 PID: 2029 Comm: libvirtd Not tainted 4.1.12-94.2.1.el7uek.x86_64 #2
[ 207.684418] Hardware name: Oracle Corporation ORACLE SERVER X5-2/ASM,MOTHERBOARD,1U, BIOS
30100400 12/26/2016
[ 207.684454] task:
ffff88026fc31c00 ti:
ffff88007278c000 task.ti:
ffff88007278c000
[ 207.684491] RIP: 0010:[<
ffffffffa0221d0f>] [<
ffffffffa0221d0f>] qla24xx_vport_delete+0xdf/0x180 [qla2xxx]
[ 207.684535] RSP: 0018:
ffff88007278fcf8 EFLAGS:
00010202
[ 207.684555] RAX:
0000000000000001 RBX:
ffff8802729c17f8 RCX:
ffffffffa0258e80
[ 207.684578] RDX:
0000000000007086 RSI:
0000000000000000 RDI:
ffff88026fef0360
[ 207.684601] RBP:
ffff88007278fd18 R08:
0000000000000001 R09:
ffff88027741ad80
[ 207.684625] R10:
ffffea0009bbbc00 R11:
0000000000000000 R12:
ffff88026fef0000
[ 207.684649] R13:
0000000000000001 R14:
ffff88026fef0360 R15:
0000000000000021
[ 207.684673] FS:
00007f24f538d700(0000) GS:
ffff880277400000(0000) knlGS:
0000000000000000
[ 207.684699] CS: 0010 DS: 0000 ES: 0000 CR0:
0000000080050033
[ 207.684719] CR2:
0000000000000410 CR3:
00000002731e7000 CR4:
00000000001406f0
[ 207.684744] Stack:
[ 207.684755]
ffff8802733dd800 ffff8802728fd000 ffff880474d3f000 ffff880474d3f648
[ 207.684785]
ffff88007278fd58 ffffffffa000d344 ffff8804714f4000 ffff8802728fd000
[ 207.684814]
ffff8802728fd000 ffff8802733dd800 0000000000000021 ffff880474d3f648
[ 207.684861] Call Trace:
[ 207.684897] [<
ffffffffa000d344>] fc_vport_terminate+0x44/0x150 [scsi_transport_fc]
[ 207.684927] [<
ffffffffa000d594>] store_fc_host_vport_delete+0x144/0x180 [scsi_transport_fc]
[ 207.684959] [<
ffffffff81489798>] dev_attr_store+0x18/0x30
[ 207.684996] [<
ffffffff81294fbd>] sysfs_kf_write+0x3d/0x50
[ 207.685017] [<
ffffffff8129446a>] kernfs_fop_write+0x12a/0x180
[ 207.685040] [<
ffffffff812129b7>] __vfs_write+0x37/0x120
[ 207.685061] [<
ffffffff812158d8>] ? __sb_start_write+0x58/0x110
[ 207.685084] [<
ffffffff812c1743>] ? security_file_permission+0x23/0xa0
[ 207.685107] [<
ffffffff812130f9>] vfs_write+0xa9/0x1b0
[ 207.685128] [<
ffffffff81736c16>] ? mutex_lock+0x16/0x37
[ 207.685147] [<
ffffffff81213fe5>] SyS_write+0x55/0xd0
[ 207.685179] [<
ffffffff81738c6e>] system_call_fastpath+0x12/0x71
[ 207.685200] Code: 07 00 00 01 0f b7 83 b0 01 00 00 f0 49 0f b3 84 24 30 07 00 00 4c 89 f7 e8 5f 4d 51 e1 48 8b b3 b8 01 00 00 0f b7 83 b0 01 00 00 <66> 39 86 10 04 00 00 74 68 45 0f b7 c5 48 89 de 31 c0 48 c7 c1
[ 207.686827] RIP [<
ffffffffa0221d0f>] qla24xx_vport_delete+0xdf/0x180 [qla2xxx]
[ 207.687634] RSP <
ffff88007278fcf8>
[ 207.688391] CR2:
0000000000000410
Cc: <stable@vger.kernel.org>
Signed-off-by: Joe Carnuccio <joe.carnuccio@cavium.com>
Signed-off-by: Himanshu Madhani <himanshu.madhani@cavium.com>
Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
(cherry picked from commit
c4a9b538ab2a109c5f9798bea1f8f4bf93aadfb9)
Orabug:
26021151
Signed-off-by: Ethan Zhao <ethan.zhao@oracle.com>
Conflicts:
drivers/scsi/qla2xxx/qla_attr.c
drivers/scsi/qla2xxx/qla_def.h
drivers/scsi/qla2xxx/qla_os.c