[GIT PULL] vfs fixes

From: Christian Brauner
Date: Mon Jun 10 2024 - 10:11:33 EST


Hey Linus,

/* Summary */
This contains fixes for this merge window:

* Restore debugfs behavior of ignoring unknown mount options.
* Fix kernel doc for netfs_wait_for_oustanding_io().
* Remove unneeded fdtable.h include in cachefiles.
* Fix struct statx comment after new addition for this cycle.
* Fix data zeroing behavior when an extent spans the block that contains i_size.
* Restore i_size increasing in iomap_write_end() for now to avoid stale data
exposure on xfs with a realtime device.
* Fix a check in find_next_fd().
* Improve trace output for cachefiles_obj_{get,put}_ondemand_fd().
* Remove requests from the request list in cachefiles to prevent accessing
already freed requests.
* Fix UAF when issuing restore command while the daemon is still alive by
adding an additional reference count to cachefile requests.
* Fix UAF in cachefiles by grabbing a reference during xarray lookup with
xa_lock() held.
* Simplify error handling in cachefiles_ondemand_daemon_read().
* Add consistency checks to cachefiles read and open requests to avoid crashes.
* Add a spinlock to protect ondemand_id variable which is used to determine
whether an anonymous cachefiles fd has already been closed.
* Make on-demand reads for cachefiles killable allowing to handle broken
cachefiles daemon better.
* Flush all requests after the kernel has been marked dead via CACHEFILES_DEAD
to avoid hung-tasks.
* Ensure that closed requests are marked as such to avoid reusing them with a
reopen request.
* Defer fd_install() until after copy_to_user() succeeded in cachefiles and
thereby get rid of having to use close_fd().
* Ensure that anonymous cachefiles on-demand fds are reused while they are
valid to avoid pinning already freed cookies.

/* Testing */
clang: Debian clang version 16.0.6 (27)
gcc: (Debian 13.2.0-25) 13.2.0

All patches are based on mainline. No build failures or warnings were observed.

/* Conflicts */
No known conflicts.

The following changes since commit 2bfcfd584ff5ccc8bb7acde19b42570414bf880b:

Merge tag 'pmdomain-v6.10-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/ulfh/linux-pm (2024-05-27 08:18:31 -0700)

are available in the Git repository at:

git@xxxxxxxxxxxxxxxxxxx:pub/scm/linux/kernel/git/vfs/vfs tags/vfs-6.10-rc4.fixes

for you to fetch changes up to f5ceb1bbc98c69536d4673a97315e8427e67de1b:

iomap: Fix iomap_adjust_read_range for plen calculation (2024-06-05 17:27:03 +0200)

Please consider pulling these changes from the signed vfs-6.10-rc4.fixes tag.

Thanks!
Christian

----------------------------------------------------------------
vfs-6.10-rc4.fixes

----------------------------------------------------------------
Baokun Li (11):
cachefiles: add output string to cachefiles_obj_[get|put]_ondemand_fd
cachefiles: remove requests from xarray during flushing requests
cachefiles: fix slab-use-after-free in cachefiles_ondemand_get_fd()
cachefiles: fix slab-use-after-free in cachefiles_ondemand_daemon_read()
cachefiles: remove err_put_fd label in cachefiles_ondemand_daemon_read()
cachefiles: add consistency check for copen/cread
cachefiles: add spin_lock for cachefiles_ondemand_info
cachefiles: never get a new anonymous fd if ondemand_id is valid
cachefiles: defer exposing anon_fd until after copy_to_user() succeeds
cachefiles: flush all requests after setting CACHEFILES_DEAD
cachefiles: make on-demand read killable

Christian Brauner (3):
debugfs: continue to ignore unknown mount options
netfs: fix kernel doc for nets_wait_for_outstanding_io()
Merge patch series "cachefiles: some bugfixes and cleanups for ondemand requests"

Gao Xiang (1):
cachefiles: remove unneeded include of <linux/fdtable.h>

John Garry (1):
statx: Update offset commentary for struct statx

Ritesh Harjani (IBM) (1):
iomap: Fix iomap_adjust_read_range for plen calculation

Yuntao Wang (1):
fs/file: fix the check in find_next_fd()

Zhang Yi (1):
iomap: keep on increasing i_size in iomap_write_end()

Zizhi Wo (1):
cachefiles: Set object to close if ondemand_id < 0 in copen

fs/cachefiles/daemon.c | 3 +-
fs/cachefiles/internal.h | 5 +
fs/cachefiles/ondemand.c | 218 ++++++++++++++++++++++++++++----------
fs/debugfs/inode.c | 10 +-
fs/file.c | 4 +-
fs/iomap/buffered-io.c | 56 +++++-----
include/linux/netfs.h | 2 +-
include/trace/events/cachefiles.h | 8 +-
include/uapi/linux/stat.h | 2 +-
9 files changed, 215 insertions(+), 93 deletions(-)