/* Summary */ This contains fixes for this merge window: cachefiles: - Export an existing and add a new cachefile helper to be used in filesystems to fix reference count bugs. - Use the newly added fscache_ty_get_volume() helper to get a reference count on an fscache_volume to handle volumes that are about to be removed cleanly. - After withdrawing a fscache_cache via FSCACHE_CACHE_IS_WITHDRAWN wait for all ongoing cookie lookups to complete and for the object count to reach zero. - Propagate errors from vfs_getxattr() to avoid an infinite loop in cachefiles_check_volume_xattr() because it keeps seeing ESTALE. - Don't send new requests when an object is dropped by raising CACHEFILES_ONDEMAND_OJBSTATE_DROPPING. - Cancel all requests for an object that is about to be dropped. - Wait for the ondemand_boject_worker to finish before dropping a cachefiles object to prevent use-after-free. - Use cyclic allocation for message ids to better handle id recycling. - Add missing lock protection when iterating through the xarray when polling. netfs: - Use standard logging helpers for debug logging. VFS: - Fix potential use-after-free in file locks during trace_posix_lock_inode(). The tracepoint could fire while another task raced it and freed the lock that was requested to be traced. - Only increment the nr_dentry_negative counter for dentries that are present on the superblock LRU. Currently, DCACHE_LRU_LIST list is used to detect this case. However, the flag is also raised in combination with DCACHE_SHRINK_LIST to indicate that dentry->d_lru is used. So checking only DCACHE_LRU_LIST will lead to wrong nr_dentry_negative count. Fix the check to not count dentries that are on a shrink related list. Misc: - hfsplus: fix an uninitialized value issue in copy_name. - minix: fix minixfs_rename with HIGHMEM. It still uses kunmap() even though we switched it to kmap_local_page() a while ago. /* Testing */ clang: Debian clang version 16.0.6 (27) gcc: (Debian 13.2.0-25) 13.2.0 All patches are based on v6.10-rc6. No build failures or warnings were observed. /* Conflicts */ No known conflicts. The following changes since commit 22a40d14b572deb80c0648557f4bd502d7e83826: Linux 6.10-rc6 (2024-06-30 14:40:44 -0700) are available in the Git repository at: git@xxxxxxxxxxxxxxxxxxx:pub/scm/linux/kernel/git/vfs/vfs tags/vfs-6.10-rc8.fixes for you to fetch changes up to 3d1bec293378700dddc087d4d862306702276c23: minixfs: Fix minixfs_rename with HIGHMEM (2024-07-10 07:15:36 +0200) Please consider pulling these changes from the signed vfs-6.10-rc8.fixes tag. Thanks! Christian ---------------------------------------------------------------- vfs-6.10-rc8.fixes ---------------------------------------------------------------- Baokun Li (7): netfs, fscache: export fscache_put_volume() and add fscache_try_get_volume() cachefiles: fix slab-use-after-free in fscache_withdraw_volume() cachefiles: fix slab-use-after-free in cachefiles_withdraw_cookie() cachefiles: propagate errors from vfs_getxattr() to avoid infinite loop cachefiles: stop sending new request when dropping object cachefiles: cancel all requests for the object that is being dropped cachefiles: cyclic allocation of msg_id to avoid reuse Brian Foster (1): vfs: don't mod negative dentry count when on shrinker list Christian Brauner (1): Merge patch series "cachefiles: random bugfixes" Edward Adam Davis (1): hfsplus: fix uninit-value in copy_name Hou Tao (1): cachefiles: wait for ondemand_object_worker to finish when dropping object Jeff Layton (1): filelock: fix potential use-after-free in posix_lock_inode Jingbo Xu (1): cachefiles: add missing lock protection when polling Matthew Wilcox (Oracle) (1): minixfs: Fix minixfs_rename with HIGHMEM Uwe Kleine-König (1): netfs: Switch debug logging to pr_debug() fs/cachefiles/cache.c | 45 +++++++++++++++++++++++++++++++++++- fs/cachefiles/daemon.c | 4 ++-- fs/cachefiles/internal.h | 3 +++ fs/cachefiles/ondemand.c | 52 +++++++++++++++++++++++++++++++++++++----- fs/cachefiles/volume.c | 1 - fs/cachefiles/xattr.c | 5 +++- fs/dcache.c | 12 +++++++--- fs/hfsplus/xattr.c | 2 +- fs/locks.c | 2 +- fs/minix/namei.c | 3 +-- fs/netfs/buffered_read.c | 14 ++++++------ fs/netfs/buffered_write.c | 12 +++++----- fs/netfs/direct_read.c | 2 +- fs/netfs/direct_write.c | 8 +++---- fs/netfs/fscache_cache.c | 4 ++-- fs/netfs/fscache_cookie.c | 28 +++++++++++------------ fs/netfs/fscache_io.c | 12 +++++----- fs/netfs/fscache_main.c | 2 +- fs/netfs/fscache_volume.c | 18 +++++++++++++-- fs/netfs/internal.h | 35 +--------------------------- fs/netfs/io.c | 12 +++++----- fs/netfs/main.c | 4 ---- fs/netfs/misc.c | 4 ++-- fs/netfs/write_collect.c | 16 ++++++------- fs/netfs/write_issue.c | 36 ++++++++++++++--------------- include/linux/fscache-cache.h | 6 +++++ include/trace/events/fscache.h | 4 ++++ 27 files changed, 213 insertions(+), 133 deletions(-)