linux/drivers/s390/cio
Alexandra Winter d2b59bd4b0 s390/qeth: fix deadlock during failing recovery
Commit 0b9902c1fc ("s390/qeth: fix deadlock during recovery") removed
taking discipline_mutex inside qeth_do_reset(), fixing potential
deadlocks. An error path was missed though, that still takes
discipline_mutex and thus has the original deadlock potential.

Intermittent deadlocks were seen when a qeth channel path is configured
offline, causing a race between qeth_do_reset and ccwgroup_remove.
Call qeth_set_offline() directly in the qeth_do_reset() error case and
then a new variant of ccwgroup_set_offline(), without taking
discipline_mutex.

Fixes: b41b554c1e ("s390/qeth: fix locking for discipline setup / removal")
Signed-off-by: Alexandra Winter <wintera@linux.ibm.com>
Reviewed-by: Julian Wiedmann <jwi@linux.ibm.com>
Signed-off-by: Julian Wiedmann <jwi@linux.ibm.com>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
2021-09-21 20:02:24 -07:00
..
airq.c s390: add struct tpi_info to struct pt_regs 2021-06-07 17:07:01 +02:00
blacklist.c s390/cio: dont unregister subchannel from child-drivers 2021-08-31 14:54:14 +02:00
blacklist.h
ccwgroup.c s390/qeth: fix deadlock during failing recovery 2021-09-21 20:02:24 -07:00
ccwreq.c
chp.c s390/cio: dont call css_wait_for_slow_path() inside a lock 2021-06-18 16:41:19 +02:00
chp.h
chsc_sch.c s390/cio: Make struct css_driver::remove return void 2021-07-21 11:53:41 +02:00
chsc_sch.h
chsc.c s390/cio: dont call css_wait_for_slow_path() inside a lock 2021-06-18 16:41:19 +02:00
chsc.h
cio_debug.h
cio_debugfs.c
cio_inject.c s390/cio: add CRW inject functionality 2021-03-22 11:36:04 +01:00
cio_inject.h s390/cio: add CRW inject functionality 2021-03-22 11:36:04 +01:00
cio.c s390: add struct tpi_info to struct pt_regs 2021-06-07 17:07:01 +02:00
cio.h s390/cio: add tpi.h header file 2021-06-07 17:07:01 +02:00
cmf.c s390/cmf: get rid of register asm 2021-06-28 11:18:28 +02:00
crw.c
css.c Driver core update for 5.15-rc1 2021-09-01 08:44:42 -07:00
css.h s390/cio: Make struct css_driver::remove return void 2021-07-21 11:53:41 +02:00
device_fsm.c
device_id.c s390/cio: fix kernel doc comment 2021-09-07 13:38:42 +02:00
device_ops.c
device_pgid.c
device_status.c
device.c 2nd batch of s390 updates for 5.15 merge window 2021-09-09 12:55:12 -07:00
device.h
eadm_sch.c s390/cio: Make struct css_driver::remove return void 2021-07-21 11:53:41 +02:00
eadm_sch.h
fcx.c
idset.c
idset.h
io_sch.h
ioasm.c s390/ioasm: use symbolic names for asm operands 2021-06-28 11:18:29 +02:00
ioasm.h
isc.c
itcw.c
Makefile s390/cio: add CRW inject functionality 2021-03-22 11:36:04 +01:00
orb.h
qdio_debug.c s390/qdio: remove remaining tasklet & timer code 2021-07-27 09:39:18 +02:00
qdio_debug.h
qdio_main.c s390/qdio: remove unused support for SLIB parameters 2021-08-18 10:01:28 +02:00
qdio_setup.c s390/qdio: remove unused support for SLIB parameters 2021-08-18 10:01:28 +02:00
qdio_thinint.c
qdio.h s390/qdio: clean up SIGA capability tracking 2021-08-18 10:01:28 +02:00
scm.c bus: Make remove callback return void 2021-07-21 11:53:42 +02:00
trace.c
trace.h s390: use struct tpi_info in lowcore.h 2021-06-07 17:07:01 +02:00
vfio_ccw_async.c
vfio_ccw_chp.c
vfio_ccw_cp.c vfio-ccw: Check initialized flag in cp_init() 2021-05-12 12:59:50 +02:00
vfio_ccw_cp.h
vfio_ccw_drv.c s390/cio: Make struct css_driver::remove return void 2021-07-21 11:53:41 +02:00
vfio_ccw_fsm.c vfio-ccw: Reset FSM state to IDLE inside FSM 2021-05-12 12:59:50 +02:00
vfio_ccw_ops.c vfio/ap,ccw: Fix open/close when multiple device FDs are open 2021-08-11 09:50:11 -06:00
vfio_ccw_private.h
vfio_ccw_trace.c
vfio_ccw_trace.h