]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/blame - releases/4.14.60/scsi-zfcp-assert-that-the-erp-lock-is-held-when-tracing-a-recovery-trigger.patch
Fixes for 5.10
[thirdparty/kernel/stable-queue.git] / releases / 4.14.60 / scsi-zfcp-assert-that-the-erp-lock-is-held-when-tracing-a-recovery-trigger.patch
CommitLineData
a65d4bac
GKH
1From foo@baz Sat Jul 28 10:25:26 CEST 2018
2From: Jens Remus <jremus@linux.ibm.com>
3Date: Thu, 17 May 2018 19:15:05 +0200
4Subject: scsi: zfcp: assert that the ERP lock is held when tracing a recovery trigger
5
6From: Jens Remus <jremus@linux.ibm.com>
7
8[ Upstream commit 9e156c54ace310ce7fb1cd960e62416947f3d47c ]
9
10Otherwise iterating with list_for_each() over the adapter->erp_ready_head
11and adapter->erp_running_head lists can lead to an infinite loop. See commit
12"zfcp: fix infinite iteration on erp_ready_head list".
13
14The run-time check is only performed for debug kernels which have the kernel
15lock validator enabled. Following is an example of the warning that is
16reported, if the ERP lock is not held when calling zfcp_dbf_rec_trig():
17
18WARNING: CPU: 0 PID: 604 at drivers/s390/scsi/zfcp_dbf.c:288 zfcp_dbf_rec_trig+0x172/0x188
19Modules linked in: ...
20CPU: 0 PID: 604 Comm: kworker/u128:3 Not tainted 4.16.0-... #1
21Hardware name: IBM 2964 N96 702 (z/VM 6.4.0)
22Workqueue: zfcp_q_0.0.1906 zfcp_scsi_rport_work
23Krnl PSW : 00000000330fdbf9 00000000367e9728 (zfcp_dbf_rec_trig+0x172/0x188)
24 R:0 T:1 IO:1 EX:1 Key:0 M:1 W:0 P:0 AS:3 CC:3 PM:0 RI:0 EA:3
25Krnl GPRS: 00000000c57a5d99 3288200000000000 0000000000000000 000000006cc82740
26 00000000009d09d6 0000000000000000 00000000000000ff 0000000000000000
27 0000000000000000 0000000000e1b5fe 000000006de01d38 0000000076130958
28 000000006cc82548 000000006de01a98 00000000009d09d6 000000006a6d3c80
29Krnl Code: 00000000009d0ad2: eb7ff0b80004 lmg %r7,%r15,184(%r15)
30 00000000009d0ad8: c0f4000d7dd0 brcl 15,b80678
31 #00000000009d0ade: a7f40001 brc 15,9d0ae0
32 >00000000009d0ae2: a7f4ff7d brc 15,9d09dc
33 00000000009d0ae6: e340f0f00004 lg %r4,240(%r15)
34 00000000009d0aec: eb7ff0b80004 lmg %r7,%r15,184(%r15)
35 00000000009d0af2: 07f4 bcr 15,%r4
36 00000000009d0af4: 0707 bcr 0,%r7
37Call Trace:
38([<00000000009d09d6>] zfcp_dbf_rec_trig+0x66/0x188)
39 [<00000000009dd740>] zfcp_scsi_rport_work+0x98/0x190
40 [<0000000000169b34>] process_one_work+0x3d4/0x6f8
41 [<000000000016a08a>] worker_thread+0x232/0x418
42 [<000000000017219e>] kthread+0x166/0x178
43 [<0000000000b815ea>] kernel_thread_starter+0x6/0xc
44 [<0000000000b815e4>] kernel_thread_starter+0x0/0xc
452 locks held by kworker/u128:3/604:
46 #0: ((wq_completion)name){+.+.}, at: [<0000000082af1024>] process_one_work+0x1dc/0x6f8
47 #1: ((work_completion)(&port->rport_work)){+.+.}, at: [<0000000082af1024>] process_one_work+0x1dc/0x6f8
48Last Breaking-Event-Address:
49 [<00000000009d0ade>] zfcp_dbf_rec_trig+0x16e/0x188
50---[ end trace b2f4020572e2c124 ]---
51
52Suggested-by: Steffen Maier <maier@linux.ibm.com>
53Signed-off-by: Jens Remus <jremus@linux.ibm.com>
54Reviewed-by: Benjamin Block <bblock@linux.ibm.com>
55Reviewed-by: Steffen Maier <maier@linux.ibm.com>
56Signed-off-by: Steffen Maier <maier@linux.ibm.com>
57Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
58
59Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
60Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
61---
62 drivers/s390/scsi/zfcp_dbf.c | 2 ++
63 1 file changed, 2 insertions(+)
64
65--- a/drivers/s390/scsi/zfcp_dbf.c
66+++ b/drivers/s390/scsi/zfcp_dbf.c
67@@ -285,6 +285,8 @@ void zfcp_dbf_rec_trig(char *tag, struct
68 struct list_head *entry;
69 unsigned long flags;
70
71+ lockdep_assert_held(&adapter->erp_lock);
72+
73 if (unlikely(!debug_level_enabled(dbf->rec, level)))
74 return;
75