• Gerald Schaefer's avatar
    s390/dcssblk: fix deadlock when adding a DCSS · a41a11b4
    Gerald Schaefer authored
    After the rework from commit 1ebe2e5f ("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: 1ebe2e5f ("block: remove GENHD_FL_EXT_DEVT")
    Cc: <stable@vger.kernel.org> # 5.17+
    Signed-off-by: default avatarGerald Schaefer <gerald.schaefer@linux.ibm.com>
    Acked-by: default avatarHeiko Carstens <hca@linux.ibm.com>
    Signed-off-by: default avatarAlexander Gordeev <agordeev@linux.ibm.com>
    a41a11b4
dcssblk.c 25.3 KB