]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit
erofs: ensure valid f_path for page cache sharing
authorGao Xiang <xiang@kernel.org>
Mon, 27 Jul 2026 04:27:39 +0000 (12:27 +0800)
committerGao Xiang <xiang@kernel.org>
Mon, 27 Jul 2026 04:31:02 +0000 (12:31 +0800)
commit96b2dbbe58a1ea5df8d29c2fe24b5f04715f4443
tree46151ad1733894f066a8f38f904e108a743f7753
parent97ab5aa5177cfa8759bd3861d71e047ea084a829
erofs: ensure valid f_path for page cache sharing

Previously, backing files for page cache sharing were set up with
f_path left as NULL (only f_inode was valid).  It worked, but a recent
mincore fix relies on f_path.mnt and crashes (found by "erofs/028" on
7.2-rc4):

 BUG: kernel NULL pointer dereference, address: 0000000000000018
 #PF: supervisor read access in kernel mode
 #PF: error_code(0x0000) - not-present page
 PGD 0 P4D 0
 Oops: Oops: 0000 [#1] SMP PTI
 CPU: 3 UID: 0 PID: 675528 Comm: fincore Not tainted 7.2.0-rc4-00002-g[]-dirty #1 PREEMPT(lazy)
 Hardware name: Red Hat KVM, BIOS 1.16.0-4.al8 04/01/2014
 RIP: 0010:__do_sys_mincore+0xc0/0x2c0
 ...

Specify valid paths using valid disconnected dentries together with
erofs_ishare_mnt instead of leaving f_path empty, so they are more
like real backing files in a pseudo filesystem and standard
backing_file_open() can be used directly.

Fixes: e187bc02f8fa ("mm: do file ownership checks with the proper mount idmap")
Acked-by: Hongbo Li <hongbohbli@tencent.com>
Signed-off-by: Gao Xiang <xiang@kernel.org>
fs/erofs/Kconfig
fs/erofs/internal.h
fs/erofs/ishare.c