linux/fs/configfs
Linus Torvalds de02909ae8 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>
 -----BEGIN PGP SIGNATURE-----
 
 iHUEABYKAB0WIQQqUNBr3gm4hGXdBJlZ7Krx/gZQ6wUCai8uagAKCRBZ7Krx/gZQ
 68DcAQCrG0zPl8BwHlKVVlylAzgjK2lY120bHX36a4+qLmFE4AD9HTeSgqoZ8vAv
 XkZl3FY9nwgDhkTJGU1kubt974BnRAA=
 =NCvS
 -----END PGP SIGNATURE-----

Merge tag 'pull-configfs-fixed' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs

Pull configfs updates from Al Viro:
 "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"

* tag 'pull-configfs-fixed' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
  create_default_group(): pass parent's dentry instead of config_group
  configfs_attach_group(): drop the unused parent_item argument
  configs_attach_item(): drop unused parent_item argument
  configfs_create(): lift parent timestamp updates into callers
  kill configfs_drop_dentry()
  configfs: mark pinned dentries persistent
  configfs: dentry refcount needs to be pinned only once
  switch configfs_detach_{group,item}() to passing dentry
  configfs_remove_dir(), detach_attrs(): switch to passing dentry
  populate_attrs(): move cleanup to the sole caller
  populate_group(): move cleanup on failure to the sole caller
  configfs_detach_rollback(): pass configfs_dirent instead of dentry
  configfs_do_depend_item(): pass configfs_dirent instead of dentry
  configfs_depend_prep(): pass configfs_dirent instead of dentry
  configfs_detach_prep(): pass configfs_dirent instead of dentry
  configfs_mkdir(): use take_dentry_name_snapshot()
  configfs: fix lockless traversals of ->s_children
  configfs_lookup(): don't leave ->s_dentry dangling on failure
2026-06-15 04:28:20 +05:30
..
configfs_internal.h kill configfs_drop_dentry() 2026-06-08 14:53:14 -04:00
dir.c configfs work 2026-06-15 04:28:20 +05:30
file.c configfs: replace __get_free_pages() with kzalloc() 2026-05-28 13:58:14 +02:00
inode.c configfs_create(): lift parent timestamp updates into callers 2026-06-08 14:53:41 -04:00
item.c configfs: Correct error value returned by API config_item_set_name() 2025-05-09 10:11:13 +02:00
Kconfig crash_dump, nvme: select CONFIGFS_FS as built-in 2025-05-27 19:40:33 -07:00
Makefile treewide: Add SPDX license identifier - Makefile/Kconfig 2019-05-21 10:50:46 +02:00
mount.c configfs, securityfs: kill_litter_super() not needed 2025-11-16 01:35:02 -05:00
symlink.c configfs: mark pinned dentries persistent 2026-06-08 14:53:09 -04:00