OSDN Git Service
(root)
/
tomoyo
/
tomoyo-test1.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
15a93de
)
scsi: qedf: Add check for offload before flushing I/Os for target
author
Chad Dupuis
<chad.dupuis@cavium.com>
Wed, 25 Apr 2018 13:08:49 +0000
(06:08 -0700)
committer
Martin K. Petersen
<martin.petersen@oracle.com>
Tue, 8 May 2018 04:57:10 +0000
(
00:57
-0400)
We need to check that a fcport is offloaded before we try to flush any
requests. No doing so could lead to undefined results and most likely a
crash.
Fixes the oops:
[ 343.971886] [0000:42:00.3]:[qedf_execute_tmf:2070]:8: wait for tm_cmpl timeout!
[ 343.971933] BUG: unable to handle kernel paging request at
00000000000024a8
[ 343.971949] IP: [<
ffffffffa06b8cc6
>] qedf_flush_active_ios+0x46/0x260 [qedf]
[ 343.971952] PGD
42c569067
PUD
4160fe067
PMD 0
[ 343.971954] Oops: 0000 [#1] SMP
[ 343.972008] Modules linked in: qedf(OEX) qed(OEX) bnx2i cnic fuse af_packet iscsi_ibft msr xfs intel_rapl sb_edac edac_core x86_pkg_temp_thermal bnx2x geneve intel_powerclamp vxlan coretemp ipmi_ssif ipmi_devintf kvm_intel kvm libiscsi joydev irqbypass crct10dif_pclmul crc32_pclmul ghash_clmulni_intel tg3 ip6_udp_tunnel udp_tunnel mdio libcrc32c iTCO_wdt scsi_transport_iscsi uio drbg iTCO_vendor_support iscsi_boot_sysfs dcdbas(X) ipmi_si ansi_cprng aesni_intel aes_x86_64 lrw gf128mul glue_helper ablk_helper ptp pps_core pcspkr libphy lpc_ich mfd_core cryptd fjes wmi ipmi_msghandler button crc8 libfcoe libfc scsi_transport_fc mei_me mei shpchp processor acpi_pad btrfs xor hid_generic usbhid raid6_pq sd_mod sr_mod cdrom mgag200 crc32c_intel i2c_algo_bit drm_kms_helper syscopyarea sysfillrect sysimgblt
[ 343.972020] fb_sys_fops ttm ahci ehci_pci libahci ehci_hcd drm libata usbcore megaraid_sas usb_common sg dm_multipath dm_mod scsi_dh_rdac scsi_dh_emc scsi_dh_alua scsi_mod autofs4 [last unloaded: qedf]
[ 343.972022] Supported: Yes, External
[ 343.972026] CPU: 30 PID: 12777 Comm: sg_reset Tainted: G W OE X 4.4.73-5-default #1
[ 343.972027] Hardware name: Dell Inc. PowerEdge R720/0X3D66, BIOS 2.1.3 11/20/2013
[ 343.972029] task:
ffff88018dfc0e80
ti:
ffff88042bd7c000
task.ti:
ffff88042bd7c000
[ 343.972036] RIP: 0010:[<
ffffffffa06b8cc6
>] [<
ffffffffa06b8cc6
>] qedf_flush_active_ios+0x46/0x260 [qedf]
[ 343.972038] RSP: 0018:
ffff88042bd7fbe0
EFLAGS:
00010286
[ 343.972039] RAX:
0000000000000000
RBX:
ffff88042ce37800
RCX:
0000000000000400
[ 343.972040] RDX:
000000000000060e
RSI:
ffffffffa06be830
RDI:
ffff8807e5072cc0
[ 343.972041] RBP:
0000000000001000
R08:
ffffffffa06bff4d
R09:
ffff88018dd84580
[ 343.972042] R10:
000000000000018b
R11:
0000000000000002
R12:
0000000000002003
[ 343.972043] R13:
0000000000000000
R14:
0000000000000000
R15:
ffff8807e5072cc0
[ 343.972046] FS:
00007fc1c8809700
(0000) GS:
ffff88042fbc0000
(0000) knlGS:
0000000000000000
[ 343.972048] CS: 0010 DS: 0000 ES: 0000 CR0:
0000000080050033
[ 343.972049] CR2:
00000000000024a8
CR3:
00000004236ec000
CR4:
00000000001406e0
[ 343.972050] Stack:
[ 343.972053]
504c78750607e154
ffffffff810a7d10
ffff88042ce37800
0000000000000010
[ 343.972055]
0000000000002003
ffff8807ff480c48
ffff8807e5072cc0
ffffc90004ec4ff8
[ 343.972057]
ffffffffa06b9b86
ffff880800000010
0000000000000282
ffff88042ce37800
[ 343.972058] Call Trace:
[ 343.972094] [<
ffffffffa06b9b86
>] qedf_initiate_tmf+0x346/0x3e0 [qedf]
[ 343.972120] [<
ffffffffa000fa06
>] scsi_try_bus_device_reset+0x26/0x40 [scsi_mod]
[ 343.972133] [<
ffffffffa001038e
>] scsi_ioctl_reset+0x13e/0x260 [scsi_mod]
[ 343.972145] [<
ffffffffa000f416
>] scsi_ioctl+0x136/0x3d0 [scsi_mod]
[ 343.972154] [<
ffffffff812ff6eb
>] blkdev_ioctl+0x6bb/0x950
[ 343.972164] [<
ffffffff8123cfed
>] block_ioctl+0x3d/0x40
[ 343.972170] [<
ffffffff81217e2d
>] do_vfs_ioctl+0x2cd/0x4a0
[ 343.972186] [<
ffffffff81218074
>] SyS_ioctl+0x74/0x80
[ 343.972193] [<
ffffffff8160916e
>] entry_SYSCALL_64_fastpath+0x12/0x6d
[ 343.975285] DWARF2 unwinder stuck at entry_SYSCALL_64_fastpath+0x12/0x6d
Signed-off-by: Chad Dupuis <chad.dupuis@cavium.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/qedf/qedf_io.c
patch
|
blob
|
history
diff --git
a/drivers/scsi/qedf/qedf_io.c
b/drivers/scsi/qedf/qedf_io.c
index
50a50c4
..
94d6455
100644
(file)
--- a/
drivers/scsi/qedf/qedf_io.c
+++ b/
drivers/scsi/qedf/qedf_io.c
@@
-1414,6
+1414,12
@@
void qedf_flush_active_ios(struct qedf_rport *fcport, int lun)
if (!fcport)
return;
+ /* Check that fcport is still offloaded */
+ if (!test_bit(QEDF_RPORT_SESSION_READY, &fcport->flags)) {
+ QEDF_ERR(NULL, "fcport is no longer offloaded.\n");
+ return;
+ }
+
qedf = fcport->qedf;
cmd_mgr = qedf->cmd_mgr;