Commit 61285ff7 authored by Christoph Hellwig's avatar Christoph Hellwig Committed by Jens Axboe
Browse files

fs: do not pass __GFP_HIGHMEM to bio_alloc in do_mpage_readpage



The mpage bio alloc cleanup accidentally removed clearing ~GFP_KERNEL
bits from the mask passed to bio_alloc.  Fix this up in a slightly
less obsfucated way that mirrors what iomap does in its readpage code.

Fixes: 77c436de ("mpage: pass the operation to bio_alloc")
Reported-by: default avatarGuenter Roeck <linux@roeck-us.net>
Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
Tested-by: default avatarRyusuke Konishi <konishi.ryusuke@gmail.com>
Link: https://lore.kernel.org/r/20220323153952.1418560-1-hch@lst.de


Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
parent 64bf0eef
Loading
Loading
Loading
Loading
+2 −4
Original line number Diff line number Diff line
@@ -148,13 +148,11 @@ static struct bio *do_mpage_readpage(struct mpage_readpage_args *args)
	int op = REQ_OP_READ;
	unsigned nblocks;
	unsigned relative_block;
	gfp_t gfp;
	gfp_t gfp = mapping_gfp_constraint(page->mapping, GFP_KERNEL);

	if (args->is_readahead) {
		op |= REQ_RAHEAD;
		gfp = readahead_gfp_mask(page->mapping);
	} else {
		gfp = mapping_gfp_constraint(page->mapping, GFP_KERNEL);
		gfp |= __GFP_NORETRY | __GFP_NOWARN;
	}

	if (page_has_buffers(page))