All of lore.kernel.org
 help / color / mirror / Atom feed
* [GIT PULL] xfs: make attr forks permanent
@ 2022-07-14 16:43 Darrick J. Wong
  0 siblings, 0 replies; only message in thread
From: Darrick J. Wong @ 2022-07-14 16:43 UTC (permalink / raw)
  To: xfs

Hi me,

Here's a pull request to fix that attr fork UAF problem and preparing
for a future where files always have xattrs by making the forks
permanent installations.

--D
------
The following changes since commit 0f38063d7a38015a47ca1488406bf21e0effe80e:

  xfs: removed useless condition in function xfs_attr_node_get (2022-07-09 10:56:02 -0700)

are available in the Git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/djwong/xfs-linux.git tags/make-attr-fork-permanent-5.20_2022-07-14

for you to fetch changes up to c01147d929899f02a0a8b15e406d12784768ca72:

  xfs: replace inode fork size macros with functions (2022-07-12 11:17:27 -0700)

----------------------------------------------------------------
xfs: make attr forks permanent

This series fixes a use-after-free bug that syzbot uncovered.  The UAF
itself is a result of a race condition between getxattr and removexattr
because callers to getxattr do not necessarily take any sort of locks
before calling into the filesystem.

Although the race condition itself can be fixed through clever use of a
memory barrier, further consideration of the use cases of extended
attributes shows that most files always have at least one attribute, so
we might as well make them permanent.

v2: Minor tweaks suggested by Dave, and convert some more macros to
helper functions.

Signed-off-by: Darrick J. Wong <djwong@kernel.org>

----------------------------------------------------------------
Darrick J. Wong (5):
      xfs: convert XFS_IFORK_PTR to a static inline helper
      xfs: make inode attribute forks a permanent part of struct xfs_inode
      xfs: use XFS_IFORK_Q to determine the presence of an xattr fork
      xfs: replace XFS_IFORK_Q with a proper predicate function
      xfs: replace inode fork size macros with functions

 fs/xfs/libxfs/xfs_attr.c           | 20 +++++-----
 fs/xfs/libxfs/xfs_attr.h           | 10 ++---
 fs/xfs/libxfs/xfs_attr_leaf.c      | 29 +++++++-------
 fs/xfs/libxfs/xfs_bmap.c           | 81 +++++++++++++++++++-------------------
 fs/xfs/libxfs/xfs_bmap_btree.c     | 10 ++---
 fs/xfs/libxfs/xfs_btree.c          |  4 +-
 fs/xfs/libxfs/xfs_dir2.c           |  2 +-
 fs/xfs/libxfs/xfs_dir2_block.c     |  6 +--
 fs/xfs/libxfs/xfs_dir2_sf.c        |  8 ++--
 fs/xfs/libxfs/xfs_inode_buf.c      |  7 ++--
 fs/xfs/libxfs/xfs_inode_fork.c     | 65 ++++++++++++++++--------------
 fs/xfs/libxfs/xfs_inode_fork.h     | 27 ++-----------
 fs/xfs/libxfs/xfs_symlink_remote.c |  2 +-
 fs/xfs/scrub/bmap.c                | 14 +++----
 fs/xfs/scrub/btree.c               |  2 +-
 fs/xfs/scrub/dabtree.c             |  2 +-
 fs/xfs/scrub/dir.c                 |  2 +-
 fs/xfs/scrub/quota.c               |  2 +-
 fs/xfs/scrub/symlink.c             |  6 +--
 fs/xfs/xfs_attr_inactive.c         | 16 +++-----
 fs/xfs/xfs_attr_list.c             |  9 ++---
 fs/xfs/xfs_bmap_util.c             | 22 +++++------
 fs/xfs/xfs_dir2_readdir.c          |  2 +-
 fs/xfs/xfs_icache.c                | 12 +++---
 fs/xfs/xfs_inode.c                 | 24 +++++------
 fs/xfs/xfs_inode.h                 | 62 ++++++++++++++++++++++++++++-
 fs/xfs/xfs_inode_item.c            | 58 +++++++++++++--------------
 fs/xfs/xfs_ioctl.c                 |  2 +-
 fs/xfs/xfs_iomap.c                 |  8 ++--
 fs/xfs/xfs_iops.c                  |  2 +-
 fs/xfs/xfs_itable.c                |  4 +-
 fs/xfs/xfs_qm.c                    |  2 +-
 fs/xfs/xfs_reflink.c               |  6 +--
 fs/xfs/xfs_symlink.c               |  2 +-
 fs/xfs/xfs_trace.h                 |  2 +-
 35 files changed, 285 insertions(+), 247 deletions(-)

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2022-07-14 16:45 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-07-14 16:43 [GIT PULL] xfs: make attr forks permanent Darrick J. Wong

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.