android_kernel_motorola_sm6225/drivers/s390
Jan Höppner f75617cc8d s390/dasd: protect device queue against concurrent access
commit db46cd1e0426f52999d50fa72cfa97fa39952885 upstream.

In dasd_profile_start() the amount of requests on the device queue are
counted. The access to the device queue is unprotected against
concurrent access. With a lot of parallel I/O, especially with alias
devices enabled, the device queue can change while dasd_profile_start()
is accessing the queue. In the worst case this leads to a kernel panic
due to incorrect pointer accesses.

Fix this by taking the device lock before accessing the queue and
counting the requests. Additionally the check for a valid profile data
pointer can be done earlier to avoid unnecessary locking in a hot path.

Cc:  <stable@vger.kernel.org>
Fixes: 4fa52aa7a8 ("[S390] dasd: add enhanced DASD statistics interface")
Reviewed-by: Stefan Haberland <sth@linux.ibm.com>
Signed-off-by: Jan Höppner <hoeppner@linux.ibm.com>
Signed-off-by: Stefan Haberland <sth@linux.ibm.com>
Link: https://lore.kernel.org/r/20231025132437.1223363-3-sth@linux.ibm.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2023-12-08 08:43:24 +01:00
..
block s390/dasd: protect device queue against concurrent access 2023-12-08 08:43:24 +01:00
char s390/zcore: fix race when reading from hardware system area 2022-08-25 11:15:23 +02:00
cio s390/cio: unregister device when the only path is gone 2023-06-28 10:15:31 +02:00
crypto s390/zcrypt: Fix ZCRYPT_PERDEV_REQCNT ioctl 2020-10-01 13:14:54 +02:00
net s390/lcs: Fix return type of lcs_start_xmit() 2023-01-18 11:30:35 +01:00
scsi scsi: zfcp: Fix a double put in zfcp_port_enqueue() 2023-10-10 21:45:00 +02:00
virtio virtio/s390: implement virtio-ccw revision 2 correctly 2021-03-07 12:18:53 +01:00
Makefile kbuild: rename built-in.o to built-in.a 2018-03-26 02:01:19 +09:00