linux/drivers/s390
Vineeth Vijayan 0c6924c262 s390/cio: introduce locking for register/unregister functions
Unbinding an I/O subchannel with a child-CCW device in disconnected
state sometimes causes a kernel-panic. The race condition was seen
mostly during testing, when setting all the CHPIDs of a device to
offline and at the same time, the unbinding the I/O subchannel driver.

The kernel-panic occurs because of double delete, the I/O subchannel
driver calls device_del on the CCW device while another device_del
invocation for the same device is in-flight.  For instance, disabling
all the CHPIDs will trigger the ccw_device_remove function, which will
call a ccw_device_unregister(), which ends up calling the device_del()
which is asynchronous via cdev's todo workqueue. And unbinding the I/O
subchannel driver calls io_subchannel_remove() function which calls the
ccw_device_unregister() and device_del().

This double delete can be prevented by serializing all CCW device
registration/unregistration calls into the driver core. This patch
introduces a mutex which will be used for this purpose.

Signed-off-by: Vineeth Vijayan <vneethv@linux.ibm.com>
Reported-by: Boris Fiuczynski <fiuczy@linux.ibm.com>
Reviewed-by: Peter Oberparleiter <oberpar@linux.ibm.com>
Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
2023-01-31 18:56:36 +01:00
..
block block: handle bio_split_to_limits() NULL return 2023-01-04 09:05:23 -07:00
char s390/early: fix sclp_early_sccb variable lifetime 2023-01-13 14:15:04 +01:00
cio s390/cio: introduce locking for register/unregister functions 2023-01-31 18:56:36 +01:00
crypto s390/vfio_ap: increase max wait time for reset verification 2023-01-22 18:42:36 +01:00
net s390/qeth: convert sysfs snprintf to sysfs_emit 2022-12-28 12:10:42 +00:00
scsi Random number generator updates for Linux 6.2-rc1. 2022-12-12 16:22:22 -08:00
virtio virtio: Revert "virtio: find_vqs() add arg sizes" 2022-08-16 01:40:24 -04:00
Makefile s390: remove pointless drivers-y in drivers/s390/Makefile 2019-09-16 13:21:51 +02:00