lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20240510-vfs-misc-22ed27ba6cd7@brauner>
Date: Fri, 10 May 2024 13:46:24 +0200
From: Christian Brauner <brauner@...nel.org>
To: Linus Torvalds <torvalds@...ux-foundation.org>
Cc: Christian Brauner <brauner@...nel.org>,
	linux-fsdevel@...r.kernel.org,
	linux-kernel@...r.kernel.org
Subject: [GIT PULL] vfs misc

Hey Linus,

/* Summary */
This contains the usual miscellaneous features, cleanups, and fixes for
vfs and individual fses.

Features
========

* Free up FMODE_* bits. I've freed up bits 6, 7, 8, and 24. That means
  we now have six free FMODE_* bits in total.

* Add FOP_HUGE_PAGES flag (follow-up to FMODE_* cleanup).

* Add fd_raw cleanup class so we can make use of automatic cleanup
  provided by CLASS(fd_raw, f)(fd) for O_PATH fds as well.

* Optimize seq_puts().

* Simplify __seq_puts().

* Add new anon_inode_getfile_fmode() api to allow specifying f_mode
  instead of open-coding it in multiple places.

* Annotate struct file_handle with __counted_by() and use struct_size().

* Warn in get_file() whether f_count resurrection from zero is
  attempted (epoll/drm discussion).

* Folio-sophize aio.

* Export the subvolume id in statx() for both btrfs and bcachefs.

* Relax linkat(AT_EMPTY_PATH) requirements.

* Add F_DUPFD_QUERY fcntl() allowing to compare two file descriptors for
  dup*() equality replacing kcmp().

Cleanups
========

* Compile out swapfile inode checks when swap isn't enabled.

* Use (0 << n) notation for FMODE_* bitshifts for clarity.

* Remove redundant variable assignment in fs/direct-io

* Cleanup uses of strncpy in orangefs.

* Speed up and cleanup writeback.

* Move fsparam_string_empty() helper into header since it's currently
  open-coded in multiple places.

* Add kernel-doc comments to proc_create_net_data_write().

* Don't needlessly read dentry->d_flags twice.

Fixes
=====

* Fix out-of-range warning in nilfs2.

* Fix ecryptfs overflow due to wrong encryption packet size calculation.

* Fix overly long line in xfs file_operations.
  (follow-up to FMODE_* cleanup)

* Don't raise FOP_BUFFER_{R,W}ASYNC for directories in xfs.
  (follow-up to FMODE_* cleanup)

* Don't call xfs_file_open from xfs_dir_open (follow-up to FMODE_* cleanup)

* Fix stable offset api to prevent endless loops.

* Fix afs file server rotations.

* Prevent xattr node from overflowing the eraseblock in jffs2.

* Move fdinfo PTRACE_MODE_READ procfs check into the inode .permission operation
  instead of open operation since this causes userspace regressions.

/* Testing */
clang: Debian clang version 16.0.6 (26)
gcc: (Debian 13.2.0-24)

All patches are based on v6.9-rc1 and have been sitting in linux-next.
No build failures or warnings were observed.

/* Conflicts */

Merge conflicts with other trees
================================

[1] linux-next: manual merge of the vfs-brauner tree with the ext4 tree
    https://lore.kernel.org/linux-next/20240508103436.589bb440@canb.auug.org.au

[2] linux-next: manual merge of the block tree with the vfs-brauner, vfs trees
    https://lore.kernel.org/linux-next/20240416124426.624cfaf9@canb.auug.org.au

[3] linux-next: manual merge of the block tree with the vfs-brauner tree
    https://lore.kernel.org/linux-next/20240402112137.1ee85957@canb.auug.org.au

Merge conflicts with mainline
=============================

There'll be a merge conflict with mainline stemming from the addition of
FMODE_WRITE_RESTRICTED and the conversion of FMODE_* flags to (1 << n)
bit shitfs. The conflict can be resolved as follows:

diff --cc include/linux/fs.h
index 8dfd53b52744,5b351c1e6f58..000000000000
--- a/include/linux/fs.h
+++ b/include/linux/fs.h
@@@ -110,23 -110,24 +110,26 @@@ typedef int (dio_iodone_t)(struct kioc
   */

  /* file is open for reading */
- #define FMODE_READ            ((__force fmode_t)0x1)
+ #define FMODE_READ            ((__force fmode_t)(1 << 0))
  /* file is open for writing */
- #define FMODE_WRITE           ((__force fmode_t)0x2)
+ #define FMODE_WRITE           ((__force fmode_t)(1 << 1))
  /* file is seekable */
- #define FMODE_LSEEK           ((__force fmode_t)0x4)
+ #define FMODE_LSEEK           ((__force fmode_t)(1 << 2))
  /* file can be accessed using pread */
- #define FMODE_PREAD           ((__force fmode_t)0x8)
+ #define FMODE_PREAD           ((__force fmode_t)(1 << 3))
  /* file can be accessed using pwrite */
- #define FMODE_PWRITE          ((__force fmode_t)0x10)
+ #define FMODE_PWRITE          ((__force fmode_t)(1 << 4))
  /* File is opened for execution with sys_execve / sys_uselib */
- #define FMODE_EXEC            ((__force fmode_t)0x20)
+ #define FMODE_EXEC            ((__force fmode_t)(1 << 5))
 +/* File writes are restricted (block device specific) */
- #define FMODE_WRITE_RESTRICTED  ((__force fmode_t)0x40)
++#define FMODE_WRITE_RESTRICTED  ((__force fmode_t)(1 << 6))
+
 -/* FMODE_* bits 6 to 8 */
++/* FMODE_* bits 7 to 8 */
+
  /* 32bit hashes as llseek() offset (for directories) */
- #define FMODE_32BITHASH         ((__force fmode_t)0x200)
+ #define FMODE_32BITHASH         ((__force fmode_t)(1 << 9))
  /* 64bit hashes as llseek() offset (for directories) */
- #define FMODE_64BITHASH         ((__force fmode_t)0x400)
+ #define FMODE_64BITHASH         ((__force fmode_t)(1 << 10))

  /*
   * Don't update ctime and mtime.

The following changes since commit 4cece764965020c22cff7665b18a012006359095:

  Linux 6.9-rc1 (2024-03-24 14:10:05 -0700)

are available in the Git repository at:

  git@...olite.kernel.org:pub/scm/linux/kernel/git/vfs/vfs tags/vfs-6.10.misc

for you to fetch changes up to da0e01cc7079124cb1e86a2c35dd90ba12897e1a:

  afs: Fix fileserver rotation getting stuck (2024-05-10 08:49:17 +0200)

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

Thanks!
Christian

----------------------------------------------------------------
vfs-6.10.misc

----------------------------------------------------------------
Alexey Dobriyan (1):
      vfs, swap: compile out IS_SWAPFILE() on swapless configs

Arnd Bergmann (1):
      nilfs2: fix out-of-range warning

Brian Kubisiak (1):
      ecryptfs: Fix buffer size for tag 66 packet

Christian Brauner (7):
      Merge series 'Fixes and cleanups to fs-writeback' of https://lore.kernel.org/r/20240228091958.288260-1-shikemeng@huaweicloud.com
      Merge patch series 'fs: aio: more folio conversion' of https://lore.kernel.org/r/20240321131640.948634-1-wangkefeng.wang@huawei.com
      fs: claw back a few FMODE_* bits
      fs: use bit shifts for FMODE_* flags
      Merge patch series 'Fix shmem_rename2 directory offset calculation' of https://lore.kernel.org/r/20240415152057.4605-1-cel@kernel.org
      file: add fd_raw cleanup class
      selftests: add F_DUPDFD_QUERY selftests

Christoph Hellwig (3):
      xfs: fix overly long line in the file_operations
      xfs: drop fop_flags for directories
      xfs: don't call xfs_file_open from xfs_dir_open

Christophe JAILLET (2):
      seq_file: Optimize seq_puts()
      seq_file: Simplify __seq_puts()

Chuck Lever (3):
      libfs: Fix simple_offset_rename_exchange()
      libfs: Add simple_offset_rename() API
      shmem: Fix shmem_rename2()

Colin Ian King (1):
      fs/direct-io: remove redundant assignment to variable retval

David Howells (1):
      afs: Fix fileserver rotation getting stuck

Dawid Osuchowski (1):
      fs: Create anon_inode_getfile_fmode()

Gustavo A. R. Silva (1):
      fs: Annotate struct file_handle with __counted_by() and use struct_size()

Ilya Denisyev (1):
      jffs2: prevent xattr node from overflowing the eraseblock

Justin Stitt (1):
      orangefs: cleanup uses of strncpy

Kees Cook (1):
      fs: WARN when f_count resurrection is attempted

Kefeng Wang (3):
      fs: aio: use a folio in aio_setup_ring()
      fs: aio: use a folio in aio_free_ring()
      fs: aio: convert to ring_folios and internal_folios

Kemeng Shi (6):
      fs/writeback: avoid to writeback non-expired inode in kupdate writeback
      fs/writeback: bail out if there is no more inodes for IO and queued once
      fs/writeback: remove unused parameter wb of finish_writeback_work
      fs/writeback: only calculate dirtied_before when b_io is empty
      fs/writeback: correct comment of __wakeup_flusher_threads_bdi
      fs/writeback: remove unnecessary return in writeback_inodes_sb

Kent Overstreet (1):
      statx: stx_subvol

Linus Torvalds (2):
      vfs: relax linkat() AT_EMPTY_PATH - aka flink() - requirements
      fcntl: add F_DUPFD_QUERY fcntl()

Luis Henriques (SUSE) (1):
      fs_parser: move fsparam_string_empty() helper into header

Matthew Wilcox (Oracle) (1):
      fs: Add FOP_HUGE_PAGES

Tyler Hicks (Microsoft) (1):
      proc: Move fdinfo PTRACE_MODE_READ check into the inode .permission operation

Yang Li (1):
      fs: Add kernel-doc comments to proc_create_net_data_write()

linke li (1):
      fs/dcache: Re-use value stored to dentry->d_flags instead of re-reading

 block/bdev.c                                    |  2 +-
 block/fops.c                                    |  1 +
 drivers/dax/device.c                            |  2 +-
 fs/afs/rotate.c                                 |  8 ++-
 fs/aio.c                                        | 91 ++++++++++++------------
 fs/anon_inodes.c                                | 33 +++++++++
 fs/bcachefs/fs.c                                |  3 +
 fs/btrfs/file.c                                 |  4 +-
 fs/btrfs/inode.c                                |  3 +
 fs/dcache.c                                     |  2 +-
 fs/direct-io.c                                  |  1 -
 fs/ecryptfs/keystore.c                          |  4 +-
 fs/ext4/file.c                                  |  6 +-
 fs/ext4/super.c                                 |  4 --
 fs/f2fs/file.c                                  |  3 +-
 fs/fcntl.c                                      | 20 ++++++
 fs/fhandle.c                                    |  6 +-
 fs/fs-writeback.c                               | 57 ++++++++-------
 fs/hugetlbfs/inode.c                            |  5 +-
 fs/jffs2/xattr.c                                |  3 +
 fs/libfs.c                                      | 55 +++++++++++++--
 fs/namei.c                                      | 19 +++--
 fs/nilfs2/ioctl.c                               |  2 +-
 fs/orangefs/dcache.c                            |  4 +-
 fs/orangefs/namei.c                             | 26 +++----
 fs/orangefs/super.c                             | 17 ++---
 fs/overlayfs/params.c                           |  4 --
 fs/proc/fd.c                                    | 42 ++++++-----
 fs/proc/proc_net.c                              |  1 +
 fs/read_write.c                                 |  2 +-
 fs/seq_file.c                                   | 13 +---
 fs/stat.c                                       |  1 +
 fs/xfs/xfs_file.c                               | 10 +--
 include/linux/anon_inodes.h                     |  5 ++
 include/linux/file.h                            |  1 +
 include/linux/fs.h                              | 92 +++++++++++++++----------
 include/linux/fs_parser.h                       |  4 ++
 include/linux/hugetlb.h                         |  8 +--
 include/linux/namei.h                           |  1 +
 include/linux/seq_file.h                        | 13 +++-
 include/linux/shm.h                             |  5 --
 include/linux/stat.h                            |  1 +
 include/uapi/linux/fcntl.h                      | 14 ++--
 include/uapi/linux/stat.h                       |  4 +-
 io_uring/io_uring.c                             |  2 +-
 io_uring/rw.c                                   |  9 +--
 ipc/shm.c                                       | 10 +--
 mm/mmap.c                                       |  4 +-
 mm/shmem.c                                      |  3 +-
 tools/testing/selftests/core/close_range_test.c | 55 ++++++++++++++-
 50 files changed, 437 insertions(+), 248 deletions(-)

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ