From: Greg Kroah-Hartman Date: Mon, 29 Nov 2021 16:13:49 +0000 (+0100) Subject: 5.4-stable patches X-Git-Tag: v5.15.6~15 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=97efbf74a8417c4a1fb1f7e2ac4f14050a9c373e;p=thirdparty%2Fkernel%2Fstable-queue.git 5.4-stable patches added patches: fuse-release-pipe-buf-after-last-use.patch --- diff --git a/queue-5.4/fuse-release-pipe-buf-after-last-use.patch b/queue-5.4/fuse-release-pipe-buf-after-last-use.patch new file mode 100644 index 00000000000..a3e6512616b --- /dev/null +++ b/queue-5.4/fuse-release-pipe-buf-after-last-use.patch @@ -0,0 +1,51 @@ +From 473441720c8616dfaf4451f9c7ea14f0eb5e5d65 Mon Sep 17 00:00:00 2001 +From: Miklos Szeredi +Date: Thu, 25 Nov 2021 14:05:18 +0100 +Subject: fuse: release pipe buf after last use + +From: Miklos Szeredi + +commit 473441720c8616dfaf4451f9c7ea14f0eb5e5d65 upstream. + +Checking buf->flags should be done before the pipe_buf_release() is called +on the pipe buffer, since releasing the buffer might modify the flags. + +This is exactly what page_cache_pipe_buf_release() does, and which results +in the same VM_BUG_ON_PAGE(PageLRU(page)) that the original patch was +trying to fix. + +Reported-by: Justin Forbes +Fixes: 712a951025c0 ("fuse: fix page stealing") +Cc: # v2.6.35 +Signed-off-by: Miklos Szeredi +Signed-off-by: Greg Kroah-Hartman + +--- + fs/fuse/dev.c | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +--- a/fs/fuse/dev.c ++++ b/fs/fuse/dev.c +@@ -839,17 +839,17 @@ static int fuse_try_move_page(struct fus + goto out_put_old; + } + ++ get_page(newpage); ++ ++ if (!(buf->flags & PIPE_BUF_FLAG_LRU)) ++ lru_cache_add_file(newpage); ++ + /* + * Release while we have extra ref on stolen page. Otherwise + * anon_pipe_buf_release() might think the page can be reused. + */ + pipe_buf_release(cs->pipe, buf); + +- get_page(newpage); +- +- if (!(buf->flags & PIPE_BUF_FLAG_LRU)) +- lru_cache_add_file(newpage); +- + err = 0; + spin_lock(&cs->req->waitq.lock); + if (test_bit(FR_ABORTED, &cs->req->flags)) diff --git a/queue-5.4/series b/queue-5.4/series index a46e9f4a2e7..97f8d65989d 100644 --- a/queue-5.4/series +++ b/queue-5.4/series @@ -80,3 +80,4 @@ tracing-check-pid-filtering-when-creating-events.patch s390-mm-validate-vma-in-pgste-manipulation-functions.patch shm-extend-forced-shm-destroy-to-support-objects-from-several-ipc-nses.patch nfc-add-nci_unreg-flag-to-eliminate-the-race.patch +fuse-release-pipe-buf-after-last-use.patch