--- x/block/bdev.c +++ y/block/bdev.c @@ -1137,12 +1137,12 @@ void bdev_release(struct file *bdev_file * from userland - e.g. eject(1). */ disk_flush_events(disk, DISK_EVENT_MEDIA_CHANGE); + mutex_unlock(&disk->open_mutex); if (bdev_is_partition(bdev)) blkdev_put_part(bdev); else blkdev_put_whole(bdev); - mutex_unlock(&disk->open_mutex); module_put(disk->fops->owner); put_no_open: