fuse fixes for 5.16-rc3
-----BEGIN PGP SIGNATURE----- iHUEABYIAB0WIQSQHSd0lITzzeNWNm3h3BK/laaZPAUCYZ+ZHwAKCRDh3BK/laaZ PFcKAQC/1E+WRv8MT7BmtS3FBnnuH0hSBJe5KTVL+sQI72NC2AD/eKeX3FKXpimt C3hrTAEegduHSRNMCZn+4juHZGFRtAw= =n755 -----END PGP SIGNATURE----- Merge tag 'fuse-fixes-5.16-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/fuse Pull fuse fix from Miklos Szeredi: "Fix a regression caused by a bugfix in the previous release. The symptom is a VM_BUG_ON triggered from splice to the fuse device. Unfortunately the original bugfix was already backported to a number of stable releases, so this fix-fix will need to be backported as well" * tag 'fuse-fixes-5.16-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/fuse: fuse: release pipe buf after last use
This commit is contained in:
commit
925c94371c
|
@ -847,17 +847,17 @@ static int fuse_try_move_page(struct fuse_copy_state *cs, struct page **pagep)
|
||||||
|
|
||||||
replace_page_cache_page(oldpage, newpage);
|
replace_page_cache_page(oldpage, newpage);
|
||||||
|
|
||||||
|
get_page(newpage);
|
||||||
|
|
||||||
|
if (!(buf->flags & PIPE_BUF_FLAG_LRU))
|
||||||
|
lru_cache_add(newpage);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Release while we have extra ref on stolen page. Otherwise
|
* Release while we have extra ref on stolen page. Otherwise
|
||||||
* anon_pipe_buf_release() might think the page can be reused.
|
* anon_pipe_buf_release() might think the page can be reused.
|
||||||
*/
|
*/
|
||||||
pipe_buf_release(cs->pipe, buf);
|
pipe_buf_release(cs->pipe, buf);
|
||||||
|
|
||||||
get_page(newpage);
|
|
||||||
|
|
||||||
if (!(buf->flags & PIPE_BUF_FLAG_LRU))
|
|
||||||
lru_cache_add(newpage);
|
|
||||||
|
|
||||||
err = 0;
|
err = 0;
|
||||||
spin_lock(&cs->req->waitq.lock);
|
spin_lock(&cs->req->waitq.lock);
|
||||||
if (test_bit(FR_ABORTED, &cs->req->flags))
|
if (test_bit(FR_ABORTED, &cs->req->flags))
|
||||||
|
|
Loading…
Reference in New Issue