* [GIT PULL] overlayfs update for 6.16 @ 2025-06-05 14:51 Miklos Szeredi 2025-06-05 19:34 ` Linus Torvalds 0 siblings, 1 reply; 6+ messages in thread From: Miklos Szeredi @ 2025-06-05 14:51 UTC (permalink / raw) To: Linus Torvalds; +Cc: overlayfs, linux-fsdevel, linux-kernel Hi Linus, Please pull from: git://git.kernel.org/pub/scm/linux/kernel/git/overlayfs/vfs.git tags/ovl-update-6.16 - Fix a regression in getting the path of an open file (e.g. in /proc/PID/maps) for a nested overlayfs setup (André Almeida) - The above fix contains a cast to non-const, which is not actually needed. So add the necessary helpers postfixed with _c that allow the cast to be removed (touches vfs files but only in trivial ways) - Support data-only layers and verity in a user namespace (unprivileged composefs use case) - Fix a gcc warning (Kees) - Cleanups Thanks, Miklos --- André Almeida (1): ovl: Fix nested backing file paths Kees Cook (1): ovl: Check for NULL d_inode() in ovl_dentry_upper() Miklos Szeredi (4): ovl: make redirect/metacopy rejection consistent ovl: relax redirect/metacopy requirements for lower -> data redirect ovl: don't require "metacopy=on" for "verity" vfs: change 'struct file *' argument to 'const struct file *' where possible Thorsten Blum (4): ovl: Use str_on_off() helper in ovl_show_options() ovl: Replace offsetof() with struct_size() in ovl_cache_entry_new() ovl: Replace offsetof() with struct_size() in ovl_stack_free() ovl: Annotate struct ovl_entry with __counted_by() --- Documentation/filesystems/overlayfs.rst | 7 +++ fs/file_table.c | 10 ++-- fs/internal.h | 1 + fs/overlayfs/file.c | 4 +- fs/overlayfs/namei.c | 98 ++++++++++++++++++++------------- fs/overlayfs/ovl_entry.h | 2 +- fs/overlayfs/params.c | 40 ++------------ fs/overlayfs/readdir.c | 4 +- fs/overlayfs/util.c | 9 ++- include/linux/fs.h | 12 ++-- 10 files changed, 97 insertions(+), 90 deletions(-) ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [GIT PULL] overlayfs update for 6.16 2025-06-05 14:51 [GIT PULL] overlayfs update for 6.16 Miklos Szeredi @ 2025-06-05 19:34 ` Linus Torvalds 2025-06-06 6:17 ` Amir Goldstein 0 siblings, 1 reply; 6+ messages in thread From: Linus Torvalds @ 2025-06-05 19:34 UTC (permalink / raw) To: Miklos Szeredi; +Cc: overlayfs, linux-fsdevel, linux-kernel On Thu, 5 Jun 2025 at 07:51, Miklos Szeredi <miklos@szeredi.hu> wrote: > > - The above fix contains a cast to non-const, which is not actually > needed. So add the necessary helpers postfixed with _c that allow the > cast to be removed (touches vfs files but only in trivial ways) Grr. I despise those "trivial ways". In particular, I despise how this renames the backing_file_user_path() helper to something actively *worse*. The "_c()" makes no sense as a name. Yes, I realize that the "c" stands for "const", but it still makes absolutely zero sense, since everybody wants the const version. The only user of the non-const version is the *ointernal* implementation that is never exported to other modules, and that could have the special name. Although I suspect it doesn't even need it, it could just use the backing_file(f) macro directly and that should just be moved to internal.h, and then the 'const'ness would come from the argument as required. In fact, most of the _internal_ vfs users don't even want the non-const version, ie as far as I can tell the user in file_get_write_access() would be perfectly happy with the const version too. So you made the *normal* case have an odd name, and then kept the old sane name for the case nobody else really wants to see. If anything, the internal non-const version is the one that should be renamed (and *not* using some crazy "_nc()" postfix nasty crud). Not the one that gets exported and that everybody wants. So I could fix up that last commit to not hate it, but honestly, I don't want that broken state in the kernel in the first place. Please do that thing properly. Not this hacky and bass-ackwards way. Linus ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [GIT PULL] overlayfs update for 6.16 2025-06-05 19:34 ` Linus Torvalds @ 2025-06-06 6:17 ` Amir Goldstein 2025-06-06 6:36 ` Miklos Szeredi 0 siblings, 1 reply; 6+ messages in thread From: Amir Goldstein @ 2025-06-06 6:17 UTC (permalink / raw) To: Linus Torvalds; +Cc: Miklos Szeredi, overlayfs, linux-fsdevel, linux-kernel [-- Attachment #1: Type: text/plain, Size: 2260 bytes --] On Thu, Jun 5, 2025 at 9:34 PM Linus Torvalds <torvalds@linux-foundation.org> wrote: > > On Thu, 5 Jun 2025 at 07:51, Miklos Szeredi <miklos@szeredi.hu> wrote: > > > > - The above fix contains a cast to non-const, which is not actually > > needed. So add the necessary helpers postfixed with _c that allow the > > cast to be removed (touches vfs files but only in trivial ways) > I must have snoozed the review of this one :-/ > Grr. > > I despise those "trivial ways". > > In particular, I despise how this renames the backing_file_user_path() > helper to something actively *worse*. > > The "_c()" makes no sense as a name. Yes, I realize that the "c" > stands for "const", but it still makes absolutely zero sense, since > everybody wants the const version. > > The only user of the non-const version is the *ointernal* > implementation that is never exported to other modules, and that could > have the special name. > > Although I suspect it doesn't even need it, it could just use the > backing_file(f) macro directly and that should just be moved to > internal.h, and then the 'const'ness would come from the argument as > required. > > In fact, most of the _internal_ vfs users don't even want the > non-const version, ie as far as I can tell the user in > file_get_write_access() would be perfectly happy with the const > version too. > > So you made the *normal* case have an odd name, and then kept the old > sane name for the case nobody else really wants to see. > > If anything, the internal non-const version is the one that should be > renamed (and *not* using some crazy "_nc()" postfix nasty crud). Not > the one that gets exported and that everybody wants. > IMO, it would be nicer to use backing_file_set_user_path() (patch attached). > So I could fix up that last commit to not hate it, but honestly, I > don't want that broken state in the kernel in the first place. > Would you consider pulling ovl-update-6.16^ and applying the attached patch [*]? Thanks, Amir. [*] I did not include the removal of non-const casting to keep this patch independent of the ovl PR. Feel free to add it to my patch or I can send the patch post merge or cleanup of casting post merge. [-- Attachment #2: fs-constify-file-ptr-in-backing_file_user_path.patch --] [-- Type: text/x-patch, Size: 3262 bytes --] From bc79491bf671b8a1d6603e0367963341339f943f Mon Sep 17 00:00:00 2001 From: Amir Goldstein <amir73il@gmail.com> Date: Fri, 6 Jun 2025 07:46:02 +0200 Subject: [PATCH] fs: constify file ptr in backing_file_user_path() Add internal helper backing_file_set_user_path() for the only two cases that need to modify user path. Signed-off-by: Amir Goldstein <amir73il@gmail.com> --- fs/backing-file.c | 4 ++-- fs/file_table.c | 13 ++++++++----- fs/internal.h | 1 + include/linux/fs.h | 2 +- 4 files changed, 12 insertions(+), 8 deletions(-) diff --git a/fs/backing-file.c b/fs/backing-file.c index 763fbe9b72b2..8c7396bff121 100644 --- a/fs/backing-file.c +++ b/fs/backing-file.c @@ -41,7 +41,7 @@ struct file *backing_file_open(const struct path *user_path, int flags, return f; path_get(user_path); - *backing_file_user_path(f) = *user_path; + backing_file_set_user_path(f, user_path); error = vfs_open(real_path, f); if (error) { fput(f); @@ -65,7 +65,7 @@ struct file *backing_tmpfile_open(const struct path *user_path, int flags, return f; path_get(user_path); - *backing_file_user_path(f) = *user_path; + backing_file_set_user_path(f, user_path); error = vfs_tmpfile(real_idmap, real_parentpath, f, mode); if (error) { fput(f); diff --git a/fs/file_table.c b/fs/file_table.c index c04ed94cdc4b..8ac2fbbd4f6d 100644 --- a/fs/file_table.c +++ b/fs/file_table.c @@ -52,17 +52,20 @@ struct backing_file { }; }; -static inline struct backing_file *backing_file(struct file *f) -{ - return container_of(f, struct backing_file, file); -} +#define backing_file(f) container_of(f, struct backing_file, file) -struct path *backing_file_user_path(struct file *f) +struct path *backing_file_user_path(const struct file *f) { return &backing_file(f)->user_path; } EXPORT_SYMBOL_GPL(backing_file_user_path); +void backing_file_set_user_path(struct file *f, const struct path *path) +{ + backing_file(f)->user_path = *path; +} +EXPORT_SYMBOL_GPL(backing_file_set_user_path); + static inline void file_free(struct file *f) { security_file_free(f); diff --git a/fs/internal.h b/fs/internal.h index 213bf3226213..3860b022e57c 100644 --- a/fs/internal.h +++ b/fs/internal.h @@ -101,6 +101,7 @@ extern void chroot_fs_refs(const struct path *, const struct path *); struct file *alloc_empty_file(int flags, const struct cred *cred); struct file *alloc_empty_file_noaccount(int flags, const struct cred *cred); struct file *alloc_empty_backing_file(int flags, const struct cred *cred); +void backing_file_set_user_path(struct file *f, const struct path *path); static inline void file_put_write_access(struct file *file) { diff --git a/include/linux/fs.h b/include/linux/fs.h index a4fd649e2c3f..c745aee9c88a 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h @@ -2813,7 +2813,7 @@ struct file *dentry_open_nonotify(const struct path *path, int flags, const struct cred *cred); struct file *dentry_create(const struct path *path, int flags, umode_t mode, const struct cred *cred); -struct path *backing_file_user_path(struct file *f); +struct path *backing_file_user_path(const struct file *f); /* * When mmapping a file on a stackable filesystem (e.g., overlayfs), the file -- 2.34.1 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [GIT PULL] overlayfs update for 6.16 2025-06-06 6:17 ` Amir Goldstein @ 2025-06-06 6:36 ` Miklos Szeredi 2025-06-06 9:33 ` Miklos Szeredi 0 siblings, 1 reply; 6+ messages in thread From: Miklos Szeredi @ 2025-06-06 6:36 UTC (permalink / raw) To: Amir Goldstein; +Cc: Linus Torvalds, overlayfs, linux-fsdevel, linux-kernel On Fri, 6 Jun 2025 at 08:17, Amir Goldstein <amir73il@gmail.com> wrote: > IMO, it would be nicer to use backing_file_set_user_path() > (patch attached). Looks nice, thanks. > Would you consider pulling ovl-update-6.16^ > and applying the attached patch [*]? > > Thanks, > Amir. > > [*] I did not include the removal of non-const casting to keep this > patch independent of the ovl PR. > Feel free to add it to my patch or I can send the patch post merge > or cleanup of casting post merge. I'll redo the PR with your patch. Thanks, Miklos ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [GIT PULL] overlayfs update for 6.16 2025-06-06 6:36 ` Miklos Szeredi @ 2025-06-06 9:33 ` Miklos Szeredi 2025-06-07 10:41 ` Amir Goldstein 0 siblings, 1 reply; 6+ messages in thread From: Miklos Szeredi @ 2025-06-06 9:33 UTC (permalink / raw) To: Amir Goldstein; +Cc: Linus Torvalds, overlayfs, linux-fsdevel, linux-kernel On Fri, 6 Jun 2025 at 08:36, Miklos Szeredi <miklos@szeredi.hu> wrote: > I'll redo the PR with your patch. Pushed to #overlayfs-next. I'll drop this from the PR, since it's just a cleanup. It still won't break anything (and that's what I meant by "trivial"), but it can wait a cycle or at least a few rc's. Thanks, Miklos ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [GIT PULL] overlayfs update for 6.16 2025-06-06 9:33 ` Miklos Szeredi @ 2025-06-07 10:41 ` Amir Goldstein 0 siblings, 0 replies; 6+ messages in thread From: Amir Goldstein @ 2025-06-07 10:41 UTC (permalink / raw) To: Miklos Szeredi; +Cc: Linus Torvalds, overlayfs, linux-fsdevel, linux-kernel On Fri, Jun 6, 2025 at 11:33 AM Miklos Szeredi <miklos@szeredi.hu> wrote: > > On Fri, 6 Jun 2025 at 08:36, Miklos Szeredi <miklos@szeredi.hu> wrote: > > > I'll redo the PR with your patch. > > Pushed to #overlayfs-next. > > I'll drop this from the PR, since it's just a cleanup. It still won't > break anything (and that's what I meant by "trivial"), but it can wait > a cycle or at least a few rc's. > I'll send the cleanup patch to Christian. It's best if it goes in via the vfs tree anyway. Thanks, Amir. ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2025-06-07 10:41 UTC | newest] Thread overview: 6+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2025-06-05 14:51 [GIT PULL] overlayfs update for 6.16 Miklos Szeredi 2025-06-05 19:34 ` Linus Torvalds 2025-06-06 6:17 ` Amir Goldstein 2025-06-06 6:36 ` Miklos Szeredi 2025-06-06 9:33 ` Miklos Szeredi 2025-06-07 10:41 ` Amir Goldstein
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).