Linux filesystem development
 help / color / mirror / Atom feed
From: Al Viro <viro@zeniv.linux.org.uk>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Andreas Hindborg <a.hindborg@kernel.org>,
	Breno Leitao <leitao@debian.org>,
	Christian Brauner <brauner@kernel.org>, Jan Kara <jack@suse.cz>,
	linux-fsdevel@vger.kernel.org
Subject: [git pull] configfs cleanups and fixes
Date: Sun, 14 Jun 2026 23:36:25 +0100	[thread overview]
Message-ID: <20260614223625.GR2636677@ZenIV> (raw)
In-Reply-To: <20260603074815.3033766-1-viro@zeniv.linux.org.uk>

The following changes since commit e43ffb69e0438cddd72aaa30898b4dc446f664f8:

  Linux 7.1-rc6 (2026-05-31 15:14:24 -0700)

are available in the Git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs.git tags/pull-configfs

for you to fetch changes up to 45a62661733904e09b55afd078c815aed6f159a6:

  configfs_make_dirent(): remove redundant 'frag' argument (2026-06-08 14:55:43 -0400)

----------------------------------------------------------------
configfs work

A couple of fixes (UAF in configfs_lookup() and really old races
introduced when lseek() on configfs directories stopped locking those
directories; impact up to and including UAF).

Fixes aside, the main result is that configfs is finally switched
to tree-in-dcache machinery.  It's *not* making use of recursive removal
helpers yet, and it still does the bloody awful "build subtree in full
sight of userland, with possibility of failure halfway through and need
to unroll" that forces the locking model from hell; dealing with that
is a separate patch series, once this one is out of the way.  However,
it is using DCACHE_PERSISTENT properly now.  And apparmorfs is the sole
remaining user of __simple_{unlink,rmdir}() at that point.

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>

----------------------------------------------------------------
Al Viro (37):
      configfs_lookup(): don't leave ->s_dentry dangling on failure
      configfs: fix lockless traversals of ->s_children
      configfs_mkdir(): use take_dentry_name_snapshot()
      configfs_detach_prep(): pass configfs_dirent instead of dentry
      configfs_depend_prep(): pass configfs_dirent instead of dentry
      configfs_do_depend_item(): pass configfs_dirent instead of dentry
      configfs_detach_rollback(): pass configfs_dirent instead of dentry
      populate_group(): move cleanup on failure to the sole caller
      populate_attrs(): move cleanup to the sole caller
      configfs_remove_dir(), detach_attrs(): switch to passing dentry
      switch configfs_detach_{group,item}() to passing dentry
      configfs: dentry refcount needs to be pinned only once
      configfs: mark pinned dentries persistent
      kill configfs_drop_dentry()
      configfs_create(): lift parent timestamp updates into callers
      configs_attach_item(): drop unused parent_item argument
      configfs_attach_group(): drop the unused parent_item argument
      create_default_group(): pass parent's dentry instead of config_group
      configfs_remove_dirent(): switch to passing configfs_dirent
      configfs: don't leave dangling ->d_fsdata if creation fails
      new primitive: both_locked_recursive_removal()
      configfs_register_group(): expand the call of create_default_group()
      configfs: switch to locked_recursive_removal()
      kill fsnotify_rmdir()
      configfs_attach_group(): shrink the recursion loop
      unify configfs_attach_{item,group}()
      config_add_subtree(): new helper
      configfs_register_...(): switch to simple_{start,done}_creating()
      teach d_make_persistent(), ..._recursive_removal() to deal with detached trees
      configfs: attach the subtree only when it's completely built
      configfs: don't mess with locking inodes in configfs_attach()
      configfs: get rid of locking inodes when creating regular files
      kill configfs_dirent_is_ready()
      configfs: don't attach cursors until they are moved
      configfs: delay attaching the new configfs_dirent subtree
      now we no longer need to pass parent_sd when creating directories
      configfs_make_dirent(): remove redundant 'frag' argument

 Documentation/filesystems/porting.rst |   8 +
 fs/configfs/configfs_internal.h       |  14 +-
 fs/configfs/dir.c                     | 940 +++++++++++-----------------------
 fs/configfs/file.c                    |  43 --
 fs/configfs/inode.c                   |  66 +--
 fs/configfs/symlink.c                 |  15 +-
 fs/dcache.c                           |   2 +-
 fs/libfs.c                            |  61 ++-
 include/linux/fs.h                    |   2 +
 include/linux/fsnotify.h              |  13 -
 net/sunrpc/rpc_pipe.c                 |   2 +-
 11 files changed, 354 insertions(+), 812 deletions(-)

  parent reply	other threads:[~2026-06-14 22:36 UTC|newest]

Thread overview: 72+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-05-19  7:06 [RFC PATCH 00/14] configfs cleanups and fixes Al Viro
2026-05-19  7:06 ` [RFC PATCH 01/14] configfs_lookup(): don't leave ->s_dentry dangling on failure Al Viro
2026-05-19  9:57   ` Jan Kara
2026-05-21 16:38   ` Breno Leitao
2026-05-19  7:06 ` [RFC PATCH 02/14] configfs_mkdir(): use take_dentry_name_snapshot() Al Viro
2026-05-19  9:59   ` Jan Kara
2026-05-21 16:54   ` Breno Leitao
2026-05-19  7:06 ` [RFC PATCH 03/14] configfs_detach_prep(): pass configfs_dirent instead of dentry Al Viro
2026-05-19 10:12   ` Jan Kara
2026-05-21 17:03   ` Breno Leitao
2026-05-19  7:06 ` [RFC PATCH 04/14] configfs_depend_prep(): " Al Viro
2026-05-19 10:18   ` Jan Kara
2026-05-19  7:06 ` [RFC PATCH 05/14] configfs_do_depend_item(): " Al Viro
2026-05-19 10:25   ` Jan Kara
2026-05-19  7:06 ` [RFC PATCH 06/14] configfs_detach_rollback(): " Al Viro
2026-05-19 10:26   ` Jan Kara
2026-05-19  7:06 ` [RFC PATCH 07/14] populate_group(): move cleanup on failure to the sole caller Al Viro
2026-05-19 10:29   ` Jan Kara
2026-05-19  7:06 ` [RFC PATCH 08/14] populate_attrs(): move cleanup " Al Viro
2026-05-19 10:31   ` Jan Kara
2026-05-19  7:06 ` [RFC PATCH 09/14] configfs_remove_dir(), detach_attrs(): switch to passing dentry Al Viro
2026-05-19 10:42   ` Jan Kara
2026-05-19  7:06 ` [RFC PATCH 10/14] switch configfs_detach_{group,item}() " Al Viro
2026-05-19 12:10   ` Jan Kara
2026-05-19  7:06 ` [RFC PATCH 11/14] configfs: dentry refcount needs to be pinned only once Al Viro
2026-05-19 13:21   ` Jan Kara
2026-05-19  7:06 ` [RFC PATCH 12/14] configfs: mark pinned dentries persistent Al Viro
2026-05-19 13:03   ` Jan Kara
2026-05-19  7:06 ` [RFC PATCH 13/14] kill configfs_drop_dentry() Al Viro
2026-05-19 13:12   ` Jan Kara
2026-05-19 14:44     ` Linus Torvalds
2026-05-19 15:37     ` Al Viro
2026-05-19 21:06       ` Jan Kara
2026-05-19  7:06 ` [RFC PATCH 14/14] configfs_create(): lift parent timestamp updates into callers Al Viro
2026-05-19 13:23   ` Jan Kara
2026-06-03  7:47 ` [PATCH v2 00/18] configfs cleanups and fixes Al Viro
2026-06-03  7:47   ` [PATCH v2 01/18] configfs_lookup(): don't leave ->s_dentry dangling on failure Al Viro
2026-06-03  7:47   ` [PATCH v2 1/3] get rid of impossible checks in detach_attrs()/configfs_detach_item() Al Viro
2026-06-03  7:53     ` Al Viro
2026-06-03  8:09       ` Christian Brauner
2026-06-03  8:28         ` Al Viro
2026-06-03  7:47   ` [PATCH v2 2/3] configfs_detach_item(): victim is never negative Al Viro
2026-06-03  7:47   ` [PATCH v2 02/18] configfs: fix lockless traversals of ->s_children Al Viro
2026-06-08 12:40     ` Jan Kara
2026-06-03  7:47   ` [PATCH v2 3/3] configfs: expand the call of simple_rmdir() Al Viro
2026-06-03  7:48   ` [PATCH v2 03/18] configfs_mkdir(): use take_dentry_name_snapshot() Al Viro
2026-06-03  7:48   ` [PATCH v2 04/18] configfs_detach_prep(): pass configfs_dirent instead of dentry Al Viro
2026-06-03  7:48   ` [PATCH v2 05/18] configfs_depend_prep(): " Al Viro
2026-06-03  7:48   ` [PATCH v2 06/18] configfs_do_depend_item(): " Al Viro
2026-06-03  7:48   ` [PATCH v2 07/18] configfs_detach_rollback(): " Al Viro
2026-06-03  7:48   ` [PATCH v2 08/18] populate_group(): move cleanup on failure to the sole caller Al Viro
2026-06-03  7:48   ` [PATCH v2 09/18] populate_attrs(): move cleanup " Al Viro
2026-06-03  7:48   ` [PATCH v2 10/18] configfs_remove_dir(), detach_attrs(): switch to passing dentry Al Viro
2026-06-03  7:48   ` [PATCH v2 11/18] switch configfs_detach_{group,item}() " Al Viro
2026-06-03  7:48   ` [PATCH v2 12/18] configfs: dentry refcount needs to be pinned only once Al Viro
2026-06-03  7:48   ` [PATCH v2 13/18] configfs: mark pinned dentries persistent Al Viro
2026-06-03  7:48   ` [PATCH v2 14/18] kill configfs_drop_dentry() Al Viro
2026-06-08 12:46     ` Jan Kara
2026-06-03  7:48   ` [PATCH v2 15/18] configfs_create(): lift parent timestamp updates into callers Al Viro
2026-06-03  7:48   ` [PATCH v2 16/18] configs_attach_item(): drop unused parent_item argument Al Viro
2026-06-08 12:42     ` Jan Kara
2026-06-03  7:48   ` [PATCH v2 17/18] configfs_attach_group(): drop the " Al Viro
2026-06-08 12:43     ` Jan Kara
2026-06-03  7:48   ` [PATCH v2 18/18] create_default_group(): pass parent's dentry instead of config_group Al Viro
2026-06-08 12:43     ` Jan Kara
2026-06-14 22:36   ` Al Viro [this message]
2026-06-14 22:39     ` [git pull] configfs cleanups and fixes Al Viro
2026-06-14 22:44       ` [git pull] configfs cleanups and fixes (with tag on correct branch now) Al Viro
2026-06-15  3:45         ` pr-tracker-bot
2026-06-15  9:44           ` Andreas Hindborg
2026-06-15 19:25             ` Al Viro
2026-06-14 22:52       ` [git pull] configfs cleanups and fixes Al Viro

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20260614223625.GR2636677@ZenIV \
    --to=viro@zeniv.linux.org.uk \
    --cc=a.hindborg@kernel.org \
    --cc=brauner@kernel.org \
    --cc=jack@suse.cz \
    --cc=leitao@debian.org \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=torvalds@linux-foundation.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox