mbox series

[v5,0/4] ovl: Add support for fs-verity checking of lowerdata

Message ID cover.1687345663.git.alexl@redhat.com (mailing list archive)
Headers show
Series ovl: Add support for fs-verity checking of lowerdata | expand

Message

Alexander Larsson June 21, 2023, 11:18 a.m. UTC
This patchset adds support for using fs-verity to validate lowerdata
files by specifying an overlay.verity xattr on the metacopy
files.

This is primarily motivated by the Composefs usecase, where there will
be a read-only EROFS layer that contains redirect into a base data
layer which has fs-verity enabled on all files. However, it is also
useful in general if you want to ensure that the lowerdata files
matches the expected content over time.

I have also added some tests for this feature to xfstests[1].

This series depends on commits from overlay-next, fs-verity-next and
vfs.all, so I based it on:

  https://github.com/amir73il/linux/tree/next

Which contains all of these

This series is also available in git here:
  https://github.com/alexlarsson/linux/tree/overlay-verity

Changes since v4:
 * Rebased also on vfs.all

 * Refactored patch series with the new overlay.metadata versioned
   xattr header in its own patch.

 * Some documentation updates

 * Fixes for issues reported in review from Amir.

Changes since v3:
 * Instead of using a overlay.digest xattr we extend the current
   overlay.metacopy xattr with version, flags and digest. This makes
   it flexible for later changes and allows us to use the existing
   xattr lookup to know ahead of time whether a file needs to have
   verity validated.

   I've done some performance checks on this new layout, and the
   results are essentially the same as before.

 * This is rebased on top of the latest overlayfs-next, which includes
   the changes to the new mount API, so that part has been redone.

 * The documentation changes have been rewritten to try to be more
   clear about the behaviour of i/o verification when verity is used.

Changes since v2:
 * Rebased on top of overlayfs-next
 * We now alway do verity verification the first time the file content
   is used, rather than doing it at lookup time for the non-lazy lookup
   case.

Changes since v1:
 * Rebased on v2 lazy lowerdata series
 * Dropped the "validate" mount option variant. We now only support
   "off", "on" and "require", where "off" is the default.
 * We now store the digest algorithm used in the overlay.verity xattr.
 * Dropped ability to configure default verity options, as this could
   cause problems moving layers between machines.
 * We now properly resolve dependent mount options by automatically
   enabling metacopy and redirect_dir if verity is on, or failing
   if the specified options conflict.
 * Streamlined and fixed the handling of creds in ovl_ensure_verity_loaded().
 * Renamed new helpers from ovl_entry_path_ to ovl_e_path_

[1] https://github.com/alexlarsson/xfstests/commits/verity-tests

Alexander Larsson (4):
  ovl: Add framework for verity support
  ovl: Add versioned header for overlay.metacopy xattr
  ovl: Validate verity xattr when resolving lowerdata
  ovl: Handle verity during copy-up

 Documentation/filesystems/fsverity.rst  |   2 +
 Documentation/filesystems/overlayfs.rst |  47 +++++++
 fs/overlayfs/copy_up.c                  |  47 ++++++-
 fs/overlayfs/file.c                     |   8 +-
 fs/overlayfs/namei.c                    |  82 +++++++++++-
 fs/overlayfs/overlayfs.h                |  44 ++++++-
 fs/overlayfs/ovl_entry.h                |   1 +
 fs/overlayfs/super.c                    |  66 +++++++++-
 fs/overlayfs/util.c                     | 158 +++++++++++++++++++++++-
 9 files changed, 432 insertions(+), 23 deletions(-)