)]}'
{
  "commit": "1c3e8cef79ea5f1415cff0d3c507e2e07b71ade8",
  "tree": "250813712d5f13fe5cb38a9923d8a70ee0043aab",
  "parents": [
    "ab5ed08f2d8396fb8e3942569bbbd5cd569a753e",
    "dcacab904fe78d60840ba947a104993ee9ded887"
  ],
  "author": {
    "name": "Linus Torvalds",
    "email": "torvalds@linux-foundation.org",
    "time": "Mon Aug 17 12:56:12 2026 -0700"
  },
  "committer": {
    "name": "Linus Torvalds",
    "email": "torvalds@linux-foundation.org",
    "time": "Mon Aug 17 12:56:12 2026 -0700"
  },
  "message": "Merge tag \u0027vfs-7.3-rc1.misc\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/vfs/vfs\n\nPull misc vfs updates from Christian Brauner:\n \"Bigger cleanups:\n\n   - The lockref dead-count handling is tidied up.\n\n     The open-coded check for a count below zero as the dead marker\n     relies on information the caller should not have.\n\n   - make put_mnt_ns() leave mounts connected. Destroying a mount\n     namespace disconnected its mounts from their mount points. So a\n     file descriptor still open on the parent of a mount point could be\n     used to peek under it.\n\n     Locked mounts were already kept connected to prevent exactly that.\n     But a mount is only locked when its tree is copied across a user\n     namespace boundary. So a mount namespace set up by a privileged\n     component had no locked mounts and its mounts were disconnected.\n     Passing UMOUNT_CONNECTED keeps every mount connected and prevents\n     that bug.\n\n   - vfs_prepare_mode() passes S_IFDIR for directories. I meant to fix\n     that ago but didn\u0027t get to it. So now someone finally did it.\n\n     This kills the exception where the mode could be 0 when a directory\n     was created whereas every other creation operation passed it\n     explicitly already.\n\n   - move long delayed work for ufs, jffs2, hfsplus, hfs and affs from\n     the per-cpu system_long_wq to the new unbound system_dfl_long_wq.\n\n     None of that work relies on per-cpu state and the work item is\n     enqueued with queue_delayed_work() whose timer is global anyway. So\n     it may as well benefit from scheduler task placement.\n\n  Smaller fixes and cleanups:\n\n   - unlock_buffer() and journal_end_buffer_io_sync() use\n     clear_and_wake_up_bit()\n\n   - the pipe page pools are unified into a single per-pipe pool and the\n     extra wake_up(rd_wait) is limited to EPOLLET consumers\n\n   - eventpoll now computes its timer slack lazily in ep_poll()\n\n   - shrink_dcache_for_umount() keeps making progress on busy roots\n\n   - excess xarray nodes are freed in clear_inode()\n\n   - romfs detects hard link cycles\n\n   - the user path of nested backing files is fixed\n\n   - pidfd holds exec_update_lock around the namespace ioctl\n\n   - non-memcg-aware nr_cached_objects is skipped during memcg slab\n     shrink\n\n   - iomap_write_iter() always returns status\n\n   - mangle_path() is renamed to seq_mangle_path()\n\n   - inode timestamp accessors are annotated\n\n   - new regression test for pipe-\u003epoll_usage.\n\n   - a few documentation, kernel-doc and selftest fixes\"\n\n* tag \u0027vfs-7.3-rc1.misc\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/vfs/vfs: (67 commits)\n  selftests/namespaces: Fix racy pipe handshake in timens and pidns_separate\n  selftests/epoll: add a regression test for pipe-\u003epoll_usage\n  pipe: only enable the extra wake_up(rd_wait) for EPOLLET consumers\n  pidfd: hold exec_update_lock around namespace ioctl\n  fs: fix user path of nested backing files\n  fs: remove stale inode_insert5() kernel-doc parameter\n  fs: fix switch/case indentation in sysfs() syscall\n  fs: document semantics of kstat::{uid,gid} fields\n  dcache: keep shrink_dcache_for_umount() making progress on busy roots\n  seq_file: rename mangle_path to seq_mangle_path\n  nstree: add/fix struct ns_id_req kernel-doc member fields\n  dcache: use lockref routines for dead count checks\n  lockref: tidy up dead count handling\n  initramfs: fix typo in reserve_initrd_mem comment\n  fs/pipe: unify the page pools into a single per-pipe pool\n  fs: annotate inode timestamp accessors\n  eventpoll: compute timer slack lazily in ep_poll()\n  selftests/filesystems: add mntns cleanup test\n  put_mnt_ns(): leave mounts connected\n  affs: Move long delayed work on system_dfl_long_wq\n  ...\n",
  "tree_diff": []
}
