diff --git a/block/genhd.c b/block/genhd.c
index f71f8299143426533e32476be7293cbc85b29c40..a94952ae9e396ace31f569343d5546c431222f95 100644
--- a/block/genhd.c
+++ b/block/genhd.c
@@ -366,7 +366,8 @@ int disk_scan_partitions(struct gendisk *disk, blk_mode_t mode)
 	}
 
 	set_bit(GD_NEED_PART_SCAN, &disk->state);
-	bdev = blkdev_get_by_dev(disk_devt(disk), mode, NULL, NULL);
+	bdev = blkdev_get_by_dev(disk_devt(disk), mode & ~FMODE_EXEC, NULL,
+				 NULL);
 	if (IS_ERR(bdev))
 		ret =  PTR_ERR(bdev);
 	else