diff --git a/block/genhd.c b/block/genhd.c
index 3e2b57b55e3849a115b86def7b77a74b7bf53cf5..c91a2dac6b6b282f5104c781b8f9509dda42f38d 100644
--- a/block/genhd.c
+++ b/block/genhd.c
@@ -1494,7 +1494,7 @@ void disk_block_events(struct gendisk *disk)
 void disk_unblock_events(struct gendisk *disk)
 {
 	if (disk->ev)
-		__disk_unblock_events(disk, true);
+		__disk_unblock_events(disk, false);
 }
 
 /**
diff --git a/fs/block_dev.c b/fs/block_dev.c
index 889287019599a861d90a51d6808cfb2d032fc255..fffdf86c17574862e5fc445bcc4f47cee507d53e 100644
--- a/fs/block_dev.c
+++ b/fs/block_dev.c
@@ -1446,6 +1446,7 @@ int blkdev_put(struct block_device *bdev, fmode_t mode)
 		if (bdev_free) {
 			if (bdev->bd_write_holder) {
 				disk_unblock_events(bdev->bd_disk);
+				disk_check_events(bdev->bd_disk);
 				bdev->bd_write_holder = false;
 			} else
 				disk_check_events(bdev->bd_disk);