diff mbox series

fs: do not pass __GFP_HIGHMEM to bio_alloc in do_mpage_readpage

Message ID 20220323153952.1418560-1-hch@lst.de (mailing list archive)
State New, archived
Headers show
Series fs: do not pass __GFP_HIGHMEM to bio_alloc in do_mpage_readpage | expand

Commit Message

Christoph Hellwig March 23, 2022, 3:39 p.m. UTC
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: 77c436de01c0 ("mpage: pass the operation to bio_alloc")
Reported-by: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: Christoph Hellwig <hch@lst.de>
Tested-by: Ryusuke Konishi <konishi.ryusuke@gmail.com>
---
 fs/mpage.c | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

Comments

Jens Axboe March 23, 2022, 3:42 p.m. UTC | #1
On Wed, 23 Mar 2022 16:39:52 +0100, Christoph Hellwig wrote:
> 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.
> 
> 

Applied, thanks!

[1/1] fs: do not pass __GFP_HIGHMEM to bio_alloc in do_mpage_readpage
      commit: 61285ff72ae59e1603f908b13363e99883d67e09

Best regards,
diff mbox series

Patch

diff --git a/fs/mpage.c b/fs/mpage.c
index 9ed1e58e8d70b..d465883edf719 100644
--- a/fs/mpage.c
+++ b/fs/mpage.c
@@ -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))