brd: re-enable __GFP_HIGHMEM in brd_insert_page()
authorHou Tao <houtao1@huawei.com>
Mon, 22 Apr 2019 13:23:21 +0000 (21:23 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 25 May 2019 16:23:24 +0000 (18:23 +0200)
commit f6b50160a06d4a0d6a3999ab0c5aec4f52dba248 upstream.

__GFP_HIGHMEM is disabled if dax is enabled on brd, however
dax support for brd has been removed since commit (7a862fbbdec6
"brd: remove dax support"), so restore __GFP_HIGHMEM in
brd_insert_page().

Also remove the no longer applicable comments about DAX and highmem.

Cc: stable@vger.kernel.org
Fixes: 7a862fbbdec6 ("brd: remove dax support")
Signed-off-by: Hou Tao <houtao1@huawei.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/block/brd.c

index c18586f..17defbf 100644 (file)
@@ -96,13 +96,8 @@ static struct page *brd_insert_page(struct brd_device *brd, sector_t sector)
        /*
         * Must use NOIO because we don't want to recurse back into the
         * block or filesystem layers from page reclaim.
-        *
-        * Cannot support DAX and highmem, because our ->direct_access
-        * routine for DAX must return memory that is always addressable.
-        * If DAX was reworked to use pfns and kmap throughout, this
-        * restriction might be able to be lifted.
         */
-       gfp_flags = GFP_NOIO | __GFP_ZERO;
+       gfp_flags = GFP_NOIO | __GFP_ZERO | __GFP_HIGHMEM;
        page = alloc_page(gfp_flags);
        if (!page)
                return NULL;