[PATCH v3 3/3] fs: store real path instead of fake path in backing file f_path

Al Viro viro at zeniv.linux.org.uk
Tue Oct 10 17:41:46 UTC 2023


On Tue, Oct 10, 2023 at 05:55:04PM +0100, Al Viro wrote:
> On Tue, Oct 10, 2023 at 03:34:45PM +0200, Miklos Szeredi wrote:
> > On Tue, 10 Oct 2023 at 15:17, Amir Goldstein <amir73il at gmail.com> wrote:
> > 
> > > Sorry, you asked about ovl mount.
> > > To me it makes sense that if users observe ovl paths in writable mapped
> > > memory, that ovl should not be remounted RO.
> > > Anyway, I don't see a good reason to allow remount RO for ovl in that case.
> > > Is there?
> > 
> > Agreed.
> > 
> > But is preventing remount RO important enough to warrant special
> > casing of backing file in generic code?  I'm not convinced either
> > way...
> 
> You definitely want to guarantee that remounting filesystem r/o
> prevents the changes of visible contents; it's not just POSIX,
> it's a fairly basic common assumption about any local filesystems.

Incidentally, could we simply keep a reference to original struct file
instead of messing with path?

The only caller of backing_file_open() gets &file->f_path as user_path; how
about passing file instead, and having backing_file_open() do get_file()
on it and stash the sucker into your object?

And have put_file_access() do
	if (unlikely(file->f_mode & FMODE_BACKING))
		fput(backing_file(file)->file);
in the end.

No need to mess with write access in any special way and it's closer
to the semantics we have for normal mmap(), after all - it keeps the
file we'd passed to it open as long as mapping is there.

Comments?



More information about the Linux-security-module-archive mailing list