]> git.baikalelectronics.ru Git - kernel.git/commit
s390/dcssblk: fix deadlock when adding a DCSS
authorGerald Schaefer <gerald.schaefer@linux.ibm.com>
Thu, 27 Oct 2022 14:19:38 +0000 (16:19 +0200)
committerAlexander Gordeev <agordeev@linux.ibm.com>
Wed, 16 Nov 2022 10:39:11 +0000 (11:39 +0100)
commit261f46294e4639d8e7b2d5a99ddb17449036e403
treece68fae9954386e4727b35ae45ddc8e12b3cbeea
parentc7f50ae8ea88dcca3c4ae040353972b5dcee8560
s390/dcssblk: fix deadlock when adding a DCSS

After the rework from commit 7a673834a3dd ("block: remove
GENHD_FL_EXT_DEVT"), when calling device_add_disk(), dcssblk will end up
in disk_scan_partitions(), and not break out early w/o GENHD_FL_NO_PART.
This will trigger implicit open/release via blkdev_get/put_whole()
later. dcssblk_release() will then deadlock on dcssblk_devices_sem
semaphore, which is already held from dcssblk_add_store() when calling
device_add_disk().

dcssblk does not support partitions (DCSSBLK_MINORS_PER_DISK == 1), and
never scanned partitions before. Therefore restore the previous
behavior, and explicitly disallow partition scanning by setting the
GENHD_FL_NO_PART flag. This will also prevent this deadlock scenario.

Fixes: 7a673834a3dd ("block: remove GENHD_FL_EXT_DEVT")
Cc: <stable@vger.kernel.org> # 5.17+
Signed-off-by: Gerald Schaefer <gerald.schaefer@linux.ibm.com>
Acked-by: Heiko Carstens <hca@linux.ibm.com>
Signed-off-by: Alexander Gordeev <agordeev@linux.ibm.com>
drivers/s390/block/dcssblk.c