linux/fs/xfs
Linus Torvalds 71dfdfb020 vfs-7.2-rc2.fixes
Please consider pulling these changes from the signed vfs-7.2-rc2.fixes tag.
 
 Thanks!
 Christian
 -----BEGIN PGP SIGNATURE-----
 
 iHUEABYKAB0WIQRAhzRXHqcMeLMyaSiRxhvAZXjcogUCakeSGAAKCRCRxhvAZXjc
 opdAAQDCui7Q517Wxe59USK+wtnOVARMzCN0Tu6e/HodvbbIEAD/RmgGnQrYF13I
 3BuCwTMS9Q1lHQLUtIkd9WqqYa2rQws=
 =uL08
 -----END PGP SIGNATURE-----

Merge tag 'vfs-7.2-rc2.fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/vfs/vfs

Pull vfs fixes from Christian Brauner:

 - netfs:

    - fix the decision when to disallow write-streaming with fscache in
      use, handling of asynchronous cache object creation, a double fput
      in cachefiles, clearing S_KERNEL_FILE without the inode lock held,
      page extraction bugs in the iov_iter helpers (a potential
      underflow, a missing allocation failure check, a memory leak, and
      a folio offset miscalculation), writeback error and ENOMEM
      handling, DIO write retry for filesystems without a
      ->prepare_write() method, and the replacement of the wb_lock mutex
      with a bit lock plus writethrough collection offload so that
      multiple asynchronous writebacks don't interfere with each other.

    - Fix the barriering when walking the netfs subrequest list during
      retries as it was possible to see a subrequest that was just added
      by the application thread.

 - iomap:

    - Change iomap to submit read bios after each extent instead of
      building them up across extents. The old behavior was considered
      problematic for a while and now caused an actual erofs bug.

    - Guard the ioend io_size EOF trim in iomap against underflow when a
      concurrent truncate moves EOF below the start of the ioend,
      wrapping io_size to a huge value.

 - overlayfs

    - Fix a stale overlayfs comment about the locking order.

    - Store the linked-in upper dentry instead of the disconnected
      O_TMPFILE dentry during overlayfs tmpfile copy-up. With a FUSE or
      virtiofs upper layer ->d_revalidate() would try to look up "/" in
      the workdir and fail, causing persistent ESTALE errors that broke
      dpkg and apt.

 - vfs-bpf:

   Have the bpf_real_data_inode() kfunc take a struct file instead of a
   dentry so it is usable from the bprm_check_security, mmap_file, and
   file_mprotect hooks, and rename it from bpf_real_inode() to make the
   data-inode semantics explicit. The kfunc landed this cycle so the
   change is safe.

 - afs:

   NULL pointer dereferences in the callback service and in
   afs_get_tree(), several memory and refcount leaks, missing locking
   around the dynamic root inode numbers and premature cell exposure
   through /afs, a netns destruction hang caused by a misplaced
   increment of net->cells_outstanding, a bulk lookup malfunction caused
   by the dir_emit() API change, inode (re)initialisation issues, and
   assorted smaller fixes to error codes, seqlock handling, and debug
   output.

 - vfs:

   Refuse O_TMPFILE creation with an unmapped fsuid or fsgid and add a
   selftest for it.

 - vboxsf:

   Add Jori Koolstra as vboxsf maintainer, taking over from Hans de
   Goede.

 - dio:

   Release the pages attached to a short atomic dio bio; the REQ_ATOMIC
   size check error path leaked them.

 - procfs:

   Only bump the parent directory link count when registering
   directories in procfs. Registering regular files inflated the count
   and leaked a link on every create and remove cycle.

 - minix:

   Avoid an unsigned overflow in the minix bitmap block count
   calculation that let crafted images with huge inode or zone counts
   pass superblock validation and crash the kernel during mount.

 - cachefiles:

   Fix a double unlock in the cachefiles nomem_d_alloc error path left
   over from the start_creating() conversion.

 - fat:

   Stop fat from reading directory entries past the 0x00
   end-of-directory marker. If the trailing on-disk slots aren't
   zero-filled the driver surfaced arbitrary garbage as directory
   entries.

 - freexvfs:

   Don't BUG() on unknown typed-extent types in freevxfs, reachable via
   ioctl(FIBMAP) on a crafted image; fail with an I/O error instead.

 - orangefs:

   Keep the readdir entry size 64-bit in orangefs fill_from_part().
   Truncating it to __u32 bypassed the bounds check and led to
   out-of-bounds reads triggerable by the userspace client.

 - xfs:

   Fix the error unwind in xfs_open_devices() which released the rt
   device file twice and left dangling buftarg pointers behind that were
   freed again when the failed mount was torn down.

 - exec:

   Fix an off-by-one in the comment documenting the maximum binfmt
   rewrite depth in exec_binprm(). The code allows five rewrites, not
   four; restricting the code would break userspace so the comment is
   fixed instead.

 - file handles:

   Reject detached mounts in capable_wrt_mount(). A detached mount can
   be dissolved concurrently, leaving a NULL mount namespace that
   open_by_handle_at() would dereference.

* tag 'vfs-7.2-rc2.fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/vfs/vfs: (57 commits)
  netfs: Fix barriering when walking subrequest list
  iomap: submit read bio after each extent
  fuse: call fuse_send_readpages explicitly from fuse_readahead
  iomap: consolidate bio submission
  fhandle: reject detached mounts in capable_wrt_mount()
  netfs: Fix DIO write retry for filesystems without a ->prepare_write()
  netfs: Fix folio state after ENOMEM whilst under writeback iteration
  netfs: Fix writeback error handling
  netfs: Fix writethrough to use collection offload
  netfs: Replace wb_lock with a bit lock for asynchronicity
  netfs: Fix kdoc warning
  scatterlist: Fix offset in folio calc in extract_xarray_to_sg()
  iov_iter: Remove unused variable in kunit_iov_iter.c
  iov_iter: Fix a memory leak in iov_iter_extract_user_pages()
  iov_iter: Fix missing alloc fail check in iov_iter_extract_bvec_pages()
  iov_iter: Fix potential underflow in iov_iter_extract_xarray_pages()
  cachefiles: Fix file burial to take lock when unsetting S_KERNEL_FILE
  cachefiles: Fix double fput
  netfs: Fix netfs_create_write_req() to handle async cache object creation
  netfs: Fix decision whether to disallow write-streaming due to fscache use
  ...
2026-07-03 05:48:05 -10:00
..
libxfs xfs: fix memory leak in xfs_dqinode_metadir_create() 2026-07-01 11:37:54 +02:00
scrub xfs: fix AGFL extent count calculation in xrep_agfl_fill 2026-06-29 09:54:22 +02:00
Kconfig xfs: XFS_ONLINE_SCRUB_STATS should depend on DEBUG_FS 2025-10-21 09:52:59 +02:00
Makefile xfs: add media verification ioctl 2026-01-20 18:06:52 -08:00
xfs_acl.c xfs: directly include xfs_platform.h 2026-01-21 12:57:16 +01:00
xfs_acl.h
xfs_aops.c iomap: consolidate bio submission 2026-07-01 15:26:47 +02:00
xfs_aops.h xfs: implement direct writes to zoned RT devices 2025-03-03 08:17:07 -07:00
xfs_attr_inactive.c xfs: close crash window in attr dabtree inactivation 2026-03-23 10:47:28 +01:00
xfs_attr_item.c xfs: remove the i_ino field in struct xfs_inode 2026-06-09 09:14:41 +02:00
xfs_attr_item.h xfs: don't use a xfs_log_iovec for attr_item names and values 2025-07-24 17:30:15 +02:00
xfs_attr_list.c xfs: remove the i_ino field in struct xfs_inode 2026-06-09 09:14:41 +02:00
xfs_bio_io.c xfs: directly include xfs_platform.h 2026-01-21 12:57:16 +01:00
xfs_bmap_item.c xfs: remove the i_ino field in struct xfs_inode 2026-06-09 09:14:41 +02:00
xfs_bmap_item.h xfs: add helpers to compute log item overhead 2025-05-07 14:25:30 -07:00
xfs_bmap_util.c xfs: remove the i_ino field in struct xfs_inode 2026-06-09 09:14:41 +02:00
xfs_bmap_util.h xfs: implement buffered writes to zoned RT devices 2025-03-03 08:17:07 -07:00
xfs_buf_item_recover.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
xfs_buf_item.c xfs: improve the xfs_buf_ioend_fail calling convention 2026-07-01 12:29:50 +02:00
xfs_buf_item.h xfs: don't use a xfs_log_iovec for ri_buf in log recovery 2025-07-24 17:30:15 +02:00
xfs_buf_mem.c xfs: switch (back) to a per-buftarg buffer hash 2026-03-30 16:34:05 +02:00
xfs_buf_mem.h xfs: cleanup mapping tmpfs folios into the buffer cache 2025-03-10 14:29:44 +01:00
xfs_buf.c xfs: simplify __xfs_buf_ioend 2026-07-01 12:29:50 +02:00
xfs_buf.h xfs: improve the xfs_buf_ioend_fail calling convention 2026-07-01 12:29:50 +02:00
xfs_dahash_test.c xfs: directly include xfs_platform.h 2026-01-21 12:57:16 +01:00
xfs_dahash_test.h
xfs_dir2_readdir.c xfs: remove the i_ino field in struct xfs_inode 2026-06-09 09:14:41 +02:00
xfs_discard.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
xfs_discard.h xfs: ignore discard return value 2025-12-16 08:49:56 +01:00
xfs_dquot_item_recover.c xfs: directly include xfs_platform.h 2026-01-21 12:57:16 +01:00
xfs_dquot_item.c xfs: save ailp before dropping the AIL lock in push callbacks 2026-03-18 09:40:31 +01:00
xfs_dquot_item.h xfs: attach dquot buffer to dquot log item buffer 2024-12-12 17:45:11 -08:00
xfs_dquot.c xfs: fix unreachable BIGTIME check in dquot flush validation 2026-06-09 09:14:41 +02:00
xfs_dquot.h xfs: remove xfs_qm_dqput and optimize dropping dquot references 2025-11-11 11:45:58 +01:00
xfs_drain.c xfs: directly include xfs_platform.h 2026-01-21 12:57:16 +01:00
xfs_drain.h xfs: allow queued realtime intents to drain before scrubbing 2024-12-23 13:06:06 -08:00
xfs_error.c xfs: remove the i_ino field in struct xfs_inode 2026-06-09 09:14:41 +02:00
xfs_error.h xfs: allow setting errortags at mount time 2026-01-30 10:41:42 +01:00
xfs_exchmaps_item.c xfs: remove the i_ino field in struct xfs_inode 2026-06-09 09:14:41 +02:00
xfs_exchmaps_item.h
xfs_exchrange.c xfs: remove the i_ino field in struct xfs_inode 2026-06-09 09:14:41 +02:00
xfs_exchrange.h
xfs_export.c xfs: new code for Linux 7.2 2026-06-16 11:50:40 +05:30
xfs_export.h
xfs_extent_busy.c xfs: fix integer overflow in busy extent sort comparator 2026-04-07 13:08:27 +02:00
xfs_extent_busy.h xfs: don't allocate the xfs_extent_busy structure for zoned RTGs 2025-07-18 17:42:31 +02:00
xfs_extfree_item.c xfs: fix integer overflow in deferred intent sort comparators 2026-04-07 13:08:27 +02:00
xfs_extfree_item.h xfs: remove the xfs_efd_log_format_t typedef 2025-09-16 12:25:05 +02:00
xfs_file.c xfs: flush eof folio before insert range size update 2026-03-23 11:07:59 +01:00
xfs_file.h
xfs_filestream.c xfs: remove the i_ino field in struct xfs_inode 2026-06-09 09:14:41 +02:00
xfs_filestream.h
xfs_fsmap.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
xfs_fsmap.h xfs: clean up xfs_getfsmap_helper arguments 2024-11-05 13:38:35 -08:00
xfs_fsops.c xfs: cleanup xfs_growfs_compute_deltas 2026-06-10 12:21:52 +02:00
xfs_fsops.h xfs: support reserved blocks for the rt extent counter 2025-03-03 08:16:43 -07:00
xfs_globals.c xfs: directly include xfs_platform.h 2026-01-21 12:57:16 +01:00
xfs_handle.c xfs: remove the i_ino field in struct xfs_inode 2026-06-09 09:14:41 +02:00
xfs_handle.h
xfs_health.c xfs: don't report half-built inodes to fserror 2026-02-25 13:58:49 +01:00
xfs_healthmon.c xfs: remove the i_ino field in struct xfs_inode 2026-06-09 09:14:41 +02:00
xfs_healthmon.h xfs: convey file I/O errors to the health monitor 2026-01-20 18:06:50 -08:00
xfs_hooks.c xfs: directly include xfs_platform.h 2026-01-21 12:57:16 +01:00
xfs_hooks.h
xfs_icache.c xfs: store an agbno in struct xfs_imap 2026-06-09 09:14:42 +02:00
xfs_icache.h
xfs_icreate_item.c xfs: directly include xfs_platform.h 2026-01-21 12:57:16 +01:00
xfs_icreate_item.h
xfs_inode_item_recover.c xfs: remove the i_ino field in struct xfs_inode 2026-06-09 09:14:41 +02:00
xfs_inode_item.c xfs: store an agbno in struct xfs_imap 2026-06-09 09:14:42 +02:00
xfs_inode_item.h xfs: rework datasync tracking and execution 2025-09-23 15:12:43 +02:00
xfs_inode.c xfs: improve the xfs_buf_ioend_fail calling convention 2026-07-01 12:29:50 +02:00
xfs_inode.h xfs: remove the i_ino field in struct xfs_inode 2026-06-09 09:14:41 +02:00
xfs_ioctl.c xfs: new code for Linux 7.2 2026-06-16 11:50:40 +05:30
xfs_ioctl.h tree-wide: s/struct fileattr/struct file_kattr/g 2025-07-04 16:14:39 +02:00
xfs_ioctl32.c xfs: directly include xfs_platform.h 2026-01-21 12:57:16 +01:00
xfs_ioctl32.h
xfs_iomap.c xfs: initialize iomap->flags earlier in xfs_bmbt_to_iomap 2026-06-10 12:21:52 +02:00
xfs_iomap.h iomap: replace iomap_folio_ops with iomap_write_ops 2025-07-14 10:51:33 +02:00
xfs_iops.c xfs: remove the i_ino field in struct xfs_inode 2026-06-09 09:14:41 +02:00
xfs_iops.h xfs: refine atomic write size check in xfs_file_write_iter() 2025-05-07 14:25:31 -07:00
xfs_itable.c xfs: store an agbno in struct xfs_imap 2026-06-09 09:14:42 +02:00
xfs_itable.h xfs: remove XFS_IBULK_SAME_AG 2025-08-11 14:03:31 +02:00
xfs_iunlink_item.c xfs: store an agbno in struct xfs_imap 2026-06-09 09:14:42 +02:00
xfs_iunlink_item.h
xfs_iwalk.c treewide: Replace kmalloc with kmalloc_obj for non-scalar types 2026-02-21 01:02:28 -08:00
xfs_iwalk.h xfs: factor out a xfs_iwalk_args helper 2024-11-05 13:38:27 -08:00
xfs_log_cil.c treewide: Replace kmalloc with kmalloc_obj for non-scalar types 2026-02-21 01:02:28 -08:00
xfs_log_priv.h xfs: move struct xfs_log_vec to xfs_log_priv.h 2026-01-21 12:57:16 +01:00
xfs_log_recover.c xfs: use null daddr for unset first bad log block 2026-07-01 11:39:32 +02:00
xfs_log.c xfs: fix undersized l_iclog_roundoff values 2026-03-10 16:19:31 +01:00
xfs_log.h xfs: move XFS_LSN_CMP to xfs_log_format.h 2026-06-12 09:54:20 +02:00
xfs_message.c xfs: drop the experimental warning for the zoned allocator 2026-06-09 09:14:41 +02:00
xfs_message.h xfs: drop the experimental warning for the zoned allocator 2026-06-09 09:14:41 +02:00
xfs_mount.c xfs: shut down the filesystem on a failed mount 2026-06-12 09:57:02 +02:00
xfs_mount.h xfs: drop the experimental warning for the zoned allocator 2026-06-09 09:14:41 +02:00
xfs_mru_cache.c treewide: Replace kmalloc with kmalloc_obj for non-scalar types 2026-02-21 01:02:28 -08:00
xfs_mru_cache.h
xfs_notify_failure.c xfs: Fix typo in comment 2026-05-11 12:58:38 +02:00
xfs_notify_failure.h xfs: react to fsdax failure notifications on the rt device 2024-12-23 13:06:09 -08:00
xfs_platform.h xfs: Add comments for usages of some macros. 2026-02-25 13:58:49 +01:00
xfs_pnfs.c vfs-7.2-rc1.exportfs 2026-06-15 02:38:54 +05:30
xfs_pnfs.h exportfs: split out the ops for layout-based block device access 2026-05-11 11:11:48 +02:00
xfs_pwork.c xfs: directly include xfs_platform.h 2026-01-21 12:57:16 +01:00
xfs_pwork.h
xfs_qm_bhv.c xfs: directly include xfs_platform.h 2026-01-21 12:57:16 +01:00
xfs_qm_syscalls.c xfs: return default quota limits for IDs without a dquot 2026-03-31 12:51:41 +02:00
xfs_qm.c xfs: release dquot buffer after dqflush failure 2026-07-01 11:35:50 +02:00
xfs_qm.h xfs: make qi_dquots a 64-bit value 2025-11-11 11:45:57 +01:00
xfs_quota.h xfs: prepare to reuse the dquot pointer space in struct xfs_inode 2024-12-23 13:06:03 -08:00
xfs_quotaops.c xfs: remove the i_ino field in struct xfs_inode 2026-06-09 09:14:41 +02:00
xfs_refcount_item.c xfs: fix integer overflow in deferred intent sort comparators 2026-04-07 13:08:27 +02:00
xfs_refcount_item.h xfs: add helpers to compute log item overhead 2025-05-07 14:25:30 -07:00
xfs_reflink.c xfs: remove the i_ino field in struct xfs_inode 2026-06-09 09:14:41 +02:00
xfs_reflink.h xfs: use the new ->i_state accessors 2025-10-20 20:22:27 +02:00
xfs_rmap_item.c xfs: fix integer overflow in deferred intent sort comparators 2026-04-07 13:08:27 +02:00
xfs_rmap_item.h xfs: add helpers to compute log item overhead 2025-05-07 14:25:30 -07:00
xfs_rtalloc.c xfs: only log freed extents for the current RTG in zoned growfs 2026-06-10 12:21:40 +02:00
xfs_rtalloc.h xfs: make metabtree reservations global 2025-03-03 08:16:43 -07:00
xfs_stats.c xfs: remove metafile inodes from the active inode stat 2026-02-25 13:58:48 +01:00
xfs_stats.h xfs: remove metafile inodes from the active inode stat 2026-02-25 13:58:48 +01:00
xfs_super.c xfs: fix the error unwind in xfs_open_devices() 2026-07-01 15:26:27 +02:00
xfs_super.h xfs: react to fsdax failure notifications on the rt device 2024-12-23 13:06:09 -08:00
xfs_symlink.c xfs: remove the i_ino field in struct xfs_inode 2026-06-09 09:14:41 +02:00
xfs_symlink.h
xfs_sysctl.c xfs: directly include xfs_platform.h 2026-01-21 12:57:16 +01:00
xfs_sysctl.h xfs: remove deprecated sysctl knobs 2025-09-05 08:48:23 -07:00
xfs_sysfs.c xfs: expose the number of open zones in sysfs 2026-04-07 13:28:47 +02:00
xfs_sysfs.h xfs: contain more sysfs code in xfs_sysfs.c 2025-03-03 08:17:10 -07:00
xfs_trace.c xfs: autonomous self healing of filesystems [v7] 2026-01-28 10:02:20 +01:00
xfs_trace.h xfs: new code for Linux 7.2 2026-06-16 11:50:40 +05:30
xfs_trans_ail.c xfs: refactor xfsaild_push loop into helper 2026-03-18 09:40:31 +01:00
xfs_trans_buf.c xfs: remove the call to xfs_buf_reverify in xfs_trans_read_buf_map 2026-06-09 09:14:41 +02:00
xfs_trans_dquot.c xfs: remove the i_ino field in struct xfs_inode 2026-06-09 09:14:41 +02:00
xfs_trans_priv.h xfs: remove the leftover xfs_{set,clear}_li_failed infrastructure 2025-04-14 10:24:30 +02:00
xfs_trans.c xfs: remove the i_ino field in struct xfs_inode 2026-06-09 09:14:41 +02:00
xfs_trans.h xfs: fix incorrect context handling in xfs_trans_roll 2026-01-21 12:59:10 +01:00
xfs_verify_media.c xfs: cleanup buftarg handling in XFS_IOC_VERIFY_MEDIA 2026-03-18 09:52:33 +01:00
xfs_verify_media.h xfs: add media verification ioctl 2026-01-20 18:06:52 -08:00
xfs_xattr.c xfs: remove the i_ino field in struct xfs_inode 2026-06-09 09:14:41 +02:00
xfs_xattr.h
xfs_zone_alloc.c xfs: factor out a xfs_zone_mark_free helper 2026-06-10 08:25:13 +02:00
xfs_zone_alloc.h xfs: factor out a xfs_zone_mark_free helper 2026-06-10 08:25:13 +02:00
xfs_zone_gc.c xfs: factor out a xfs_zone_mark_free helper 2026-06-10 08:25:13 +02:00
xfs_zone_info.c xfs: untangle the open zones reporting in mountinfo 2026-04-07 13:28:47 +02:00
xfs_zone_priv.h xfs: reduce special casing for the open GC zone 2026-04-07 13:28:47 +02:00
xfs_zone_space_resv.c xfs: directly include xfs_platform.h 2026-01-21 12:57:16 +01:00