]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
dax: bdev_direct_access() may sleep
authorMatthew Wilcox <matthew.r.wilcox@intel.com>
Fri, 3 Jul 2015 14:40:43 +0000 (10:40 -0400)
committerDan Duval <dan.duval@oracle.com>
Wed, 7 Dec 2016 17:18:58 +0000 (12:18 -0500)
Orabug: 22913653

The brd driver is the only in-tree driver that may sleep currently.
After some discussion on linux-fsdevel, we decided that any driver
may choose to sleep in its ->direct_access method.  To ensure that all
callers of bdev_direct_access() are prepared for this, add a call
to might_sleep().

Signed-off-by: Matthew Wilcox <matthew.r.wilcox@intel.com>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
(cherry picked from commit 43c3dd08da890e458f670b4fc0630513fb405620)
Signed-off-by: Dan Duval <dan.duval@oracle.com>
fs/block_dev.c

index 54f74eb10295475e000dbfed288c7295b47b1aaa..6774ff25a3961e87444765db38817de3cb6e287c 100644 (file)
@@ -445,6 +445,12 @@ long bdev_direct_access(struct block_device *bdev, sector_t sector,
        long avail;
        const struct block_device_operations *ops = bdev->bd_disk->fops;
 
+       /*
+        * The device driver is allowed to sleep, in order to make the
+        * memory directly accessible.
+        */
+       might_sleep();
+
        if (size < 0)
                return size;
        if (!ops->direct_access)