From: Gao Xiang Date: Thu, 22 Oct 2020 14:57:21 +0000 (+0800) Subject: erofs: fix setting up pcluster for temporary pages X-Git-Tag: v5.9.9~73 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=877c8cb029a582bdafa1ddbaeeeab5c6e67a5f79;p=thirdparty%2Fkernel%2Fstable.git erofs: fix setting up pcluster for temporary pages commit a30573b3cdc77b8533d004ece1ea7c0146b437a0 upstream. pcluster should be only set up for all managed pages instead of temporary pages. Since it currently uses page->mapping to identify, the impact is minor for now. [ Update: Vladimir reported the kernel log becomes polluted because PAGE_FLAGS_CHECK_AT_FREE flag(s) set if the page allocation debug option is enabled. ] Link: https://lore.kernel.org/r/20201022145724.27284-1-hsiangkao@aol.com Fixes: 5ddcee1f3a1c ("erofs: get rid of __stagingpage_alloc helper") Cc: # 5.5+ Tested-by: Vladimir Zapolskiy Reviewed-by: Chao Yu Signed-off-by: Gao Xiang Signed-off-by: Greg Kroah-Hartman --- diff --git a/fs/erofs/zdata.c b/fs/erofs/zdata.c index 6c939def00f95..118d9fe02c4e2 100644 --- a/fs/erofs/zdata.c +++ b/fs/erofs/zdata.c @@ -1080,8 +1080,11 @@ out_allocpage: cond_resched(); goto repeat; } - set_page_private(page, (unsigned long)pcl); - SetPagePrivate(page); + + if (tocache) { + set_page_private(page, (unsigned long)pcl); + SetPagePrivate(page); + } out: /* the only exit (for tracing and debugging) */ return page; }