1
0
Fork 0
remarkable-linux/drivers/s390/block
Jan Höppner 0f57c97f24 s390/dasd: Eliminate race condition in dasd_generic_set_offline()
Before we set a device offline, the open_count for the block device is
checked and certain flags are checked and set as well.
However, this is all done without holding any lock. Potentially, if the
open_count was checked but the DASD_FLAG_OFFLINE wasn't set yet, a
different process might want to increase the open_count depending on
whether DASD_FLAG_OFFLINE is set or not in the meanwhile.

This is quite racy and can lead to the loss of the device for that
process and subsequently lead to a panic.

Fix this by checking the open_count and setting the offline flags while
holding the ccwdev lock.

Reviewed-by: Stefan Haberland <sth@linux.vnet.ibm.com>
Signed-off-by: Jan Höppner <hoeppner@linux.vnet.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
2016-10-28 10:09:04 +02:00
..
Kconfig s390/scm_block: force cluster writes 2012-09-26 15:45:01 +02:00
Makefile s390/scm_block: force cluster writes 2012-09-26 15:45:01 +02:00
dasd.c s390/dasd: Eliminate race condition in dasd_generic_set_offline() 2016-10-28 10:09:04 +02:00
dasd_3990_erp.c s390/dasd: Add new ioctl BIODASDCHECKFMT 2016-04-15 18:16:39 +02:00
dasd_alias.c s390/dasd: reorder lcu and device lock 2016-03-17 13:18:25 +01:00
dasd_devmap.c s390/dasd: Make use of dasd_set_feature() more often 2016-10-28 10:09:03 +02:00
dasd_diag.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux 2016-03-16 10:47:45 -07:00
dasd_diag.h s390: remove 31 bit support 2015-03-25 11:49:33 +01:00
dasd_eckd.c s390/dasd: avoid undefined behaviour 2016-10-17 11:25:25 +02:00
dasd_eckd.h s390/dasd: Add new ioctl BIODASDCHECKFMT 2016-04-15 18:16:39 +02:00
dasd_eer.c s390/time: rename tod clock access functions 2013-02-14 15:55:10 +01:00
dasd_erp.c s390/dasd: add missing \n to end of dev_err messages 2016-09-28 09:18:48 +02:00
dasd_fba.c s390/dasd: remove casts to dasd_*_private 2016-03-07 13:12:02 +01:00
dasd_fba.h s390/comments: unify copyright messages and remove file names 2012-07-20 11:15:04 +02:00
dasd_genhd.c block: convert to device_add_disk() 2016-06-27 12:26:08 -07:00
dasd_int.h s390/dasd: fix panic during offline processing 2016-09-26 16:45:29 +02:00
dasd_ioctl.c s390/dasd: Add new ioctl BIODASDCHECKFMT 2016-04-15 18:16:39 +02:00
dasd_proc.c s390: Use pr_warn instead of pr_warning 2016-03-07 13:12:04 +01:00
dcssblk.c libnvdimm for 4.8 2016-07-28 17:38:16 -07:00
scm_blk.c block: convert to device_add_disk() 2016-06-27 12:26:08 -07:00
scm_blk.h s390/scm_block: make the number of reqs per HW req configurable 2014-12-08 09:42:47 +01:00
scm_blk_cluster.c s390/scm_block: fix off by one during cluster reservation 2015-02-26 09:24:47 +01:00
scm_drv.c s390/scm_block: fix printk format string 2013-03-21 13:35:37 +01:00
xpram.c block: change ->make_request_fn() and users to return a queue cookie 2015-11-07 10:40:46 -07:00