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>
Link: https://lore.kernel.org/r/20220323153952.1418560-1-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk>
 
        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))