linux/drivers/s390/block
Jan Höppner dc96fde8fc s390/dasd: protect device queue against concurrent access
commit db46cd1e04 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>
History 2023-12-03 07:32:11 +01:00
..
dasd.c s390/dasd: protect device queue against concurrent access 2023-12-03 07:32:11 +01:00
dasd_3990_erp.c s390/dasd: use correct number of retries for ERP requests 2023-09-13 09:42:21 +02:00
dasd_alias.c s390/dasd: fix Oops in dasd_alias_get_start_dev due to missing pavgroup 2022-09-19 10:19:28 -06:00
dasd_devmap.c s390/dasd: fix string length handling 2023-09-13 09:43:03 +02:00
dasd_diag.c s390/dasd: use blk_mq_alloc_disk 2022-09-28 08:56:34 -06:00
dasd_diag.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
dasd_eckd.c s390/dasd: fix string length handling 2023-09-13 09:43:03 +02:00
dasd_eckd.h s390/dasd: add device ping attribute 2022-09-21 08:32:51 -06:00
dasd_eer.c s390: move from strlcpy with unused retval to strscpy 2022-08-30 22:00:33 +02:00
dasd_erp.c s390/dasd: handle request magic consistently as unsigned int 2021-10-20 08:10:41 -06:00
dasd_fba.c s390/dasd: use blk_mq_alloc_disk 2022-09-28 08:56:34 -06:00
dasd_fba.h s390/dasd: fix typo in copyright statement 2019-12-20 11:52:01 -07:00
dasd_genhd.c s390/dasd: use blk_mq_alloc_disk 2022-09-28 08:56:34 -06:00
dasd_int.h s390/dasd: fix string length handling 2023-09-13 09:43:03 +02:00
dasd_ioctl.c s390/dasd: fix hanging device after quiesce/resume 2023-08-03 10:24:16 +02:00
dasd_proc.c proc: convert everything to "struct proc_ops" 2020-02-04 03:05:26 +00:00
dcssblk.c s390/dcssblk: fix kernel crash with list_add corruption 2023-09-13 09:43:03 +02:00
Kconfig dax: remove CONFIG_DAX_DRIVER 2021-12-04 08:58:51 -08:00
Makefile s390: remove xpram device driver 2021-09-07 13:38:42 +02:00
scm_blk.c block: remove blk_cleanup_disk 2022-06-28 06:33:15 -06:00
scm_blk.h block: remove genhd.h 2022-02-02 07:49:59 -07:00
scm_drv.c s390/scm: Make struct scm_driver::remove return void 2021-07-21 11:53:42 +02:00