diff options
author | Jakub Kicinski <kuba@kernel.org> | 2024-02-01 14:33:26 -0800 |
---|---|---|
committer | Jakub Kicinski <kuba@kernel.org> | 2024-02-01 15:12:37 -0800 |
commit | cf244463a286ea57ea7e63c33614d302f776e62e (patch) | |
tree | caa068596cbfea621376822e30ab545c6516b2c7 /fs/erofs/decompressor_lzma.c | |
parent | cacfd6bfc381ce0e71dfb4ab902ca0fb0e1abe0f (diff) | |
parent | 41b9fb381a486360b2daaec0c7480f8e3ff72bc7 (diff) | |
download | linux-stable-cf244463a286ea57ea7e63c33614d302f776e62e.tar.gz linux-stable-cf244463a286ea57ea7e63c33614d302f776e62e.tar.bz2 linux-stable-cf244463a286ea57ea7e63c33614d302f776e62e.zip |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
Cross-merge networking fixes after downstream PR.
No conflicts or adjacent changes.
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Diffstat (limited to 'fs/erofs/decompressor_lzma.c')
-rw-r--r-- | fs/erofs/decompressor_lzma.c | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/fs/erofs/decompressor_lzma.c b/fs/erofs/decompressor_lzma.c index 2dd14f99c1dc..6ca357d83cfa 100644 --- a/fs/erofs/decompressor_lzma.c +++ b/fs/erofs/decompressor_lzma.c @@ -148,7 +148,7 @@ again: } int z_erofs_lzma_decompress(struct z_erofs_decompress_req *rq, - struct page **pagepool) + struct page **pgpl) { const unsigned int nrpages_out = PAGE_ALIGN(rq->pageofs_out + rq->outputsize) >> PAGE_SHIFT; @@ -215,8 +215,11 @@ again: PAGE_SIZE - pageofs); outlen -= strm->buf.out_size; if (!rq->out[no] && rq->fillgaps) { /* deduped */ - rq->out[no] = erofs_allocpage(pagepool, - GFP_KERNEL | __GFP_NOFAIL); + rq->out[no] = erofs_allocpage(pgpl, rq->gfp); + if (!rq->out[no]) { + err = -ENOMEM; + break; + } set_page_private(rq->out[no], Z_EROFS_SHORTLIVED_PAGE); } @@ -258,8 +261,11 @@ again: DBG_BUGON(erofs_page_is_managed(EROFS_SB(rq->sb), rq->in[j])); - tmppage = erofs_allocpage(pagepool, - GFP_KERNEL | __GFP_NOFAIL); + tmppage = erofs_allocpage(pgpl, rq->gfp); + if (!tmppage) { + err = -ENOMEM; + goto failed; + } set_page_private(tmppage, Z_EROFS_SHORTLIVED_PAGE); copy_highpage(tmppage, rq->in[j]); rq->in[j] = tmppage; @@ -277,6 +283,7 @@ again: break; } } +failed: if (no < nrpages_out && strm->buf.out) kunmap(rq->out[no]); if (ni < nrpages_in) |