Merge tag 'fsverity-for-linus' of git://git.kernel.org/pub/scm/fs/fscrypt/fscrypt
authorLinus Torvalds <torvalds@linux-foundation.org>
Wed, 18 Sep 2019 23:59:14 +0000 (16:59 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Wed, 18 Sep 2019 23:59:14 +0000 (16:59 -0700)
Pull fs-verity support from Eric Biggers:
 "fs-verity is a filesystem feature that provides Merkle tree based
  hashing (similar to dm-verity) for individual readonly files, mainly
  for the purpose of efficient authenticity verification.

  This pull request includes:

   (a) The fs/verity/ support layer and documentation.

   (b) fs-verity support for ext4 and f2fs.

  Compared to the original fs-verity patchset from last year, the UAPI
  to enable fs-verity on a file has been greatly simplified. Lots of
  other things were cleaned up too.

  fs-verity is planned to be used by two different projects on Android;
  most of the userspace code is in place already. Another userspace tool
  ("fsverity-utils"), and xfstests, are also available. e2fsprogs and
  f2fs-tools already have fs-verity support. Other people have shown
  interest in using fs-verity too.

  I've tested this on ext4 and f2fs with xfstests, both the existing
  tests and the new fs-verity tests. This has also been in linux-next
  since July 30 with no reported issues except a couple minor ones I
  found myself and folded in fixes for.

  Ted and I will be co-maintaining fs-verity"

* tag 'fsverity-for-linus' of git://git.kernel.org/pub/scm/fs/fscrypt/fscrypt:
  f2fs: add fs-verity support
  ext4: update on-disk format documentation for fs-verity
  ext4: add fs-verity read support
  ext4: add basic fs-verity support
  fs-verity: support builtin file signatures
  fs-verity: add SHA-512 support
  fs-verity: implement FS_IOC_MEASURE_VERITY ioctl
  fs-verity: implement FS_IOC_ENABLE_VERITY ioctl
  fs-verity: add data verification hooks for ->readpages()
  fs-verity: add the hook for file ->setattr()
  fs-verity: add the hook for file ->open()
  fs-verity: add inode and superblock fields
  fs-verity: add Kconfig and the helper functions for hashing
  fs: uapi: define verity bit for FS_IOC_GETFLAGS
  fs-verity: add UAPI header
  fs-verity: add MAINTAINERS file entry
  fs-verity: add a documentation file

1  2 
Documentation/filesystems/index.rst
MAINTAINERS
fs/Kconfig
fs/Makefile
fs/ext4/inode.c
fs/ext4/ioctl.c
fs/ext4/super.c
fs/f2fs/file.c
fs/f2fs/super.c
include/linux/fs.h
include/uapi/linux/fs.h

@@@ -20,10 -20,6 +20,10 @@@ algorithms work
     path-lookup
     api-summary
     splice
 +   locking
 +   directory-locking
 +
 +   porting
  
  Filesystem support layers
  =========================
@@@ -36,3 -32,4 +36,4 @@@ filesystem implementations
  
     journalling
     fscrypt
+    fsverity
diff --combined MAINTAINERS
@@@ -183,7 -183,7 +183,7 @@@ M: Realtek linux nic maintainers <nic_s
  M:    Heiner Kallweit <hkallweit1@gmail.com>
  L:    netdev@vger.kernel.org
  S:    Maintained
 -F:    drivers/net/ethernet/realtek/r8169.c
 +F:    drivers/net/ethernet/realtek/r8169*
  
  8250/16?50 (AND CLONE UARTS) SERIAL DRIVER
  M:    Greg Kroah-Hartman <gregkh@linuxfoundation.org>
@@@ -517,6 -517,14 +517,6 @@@ W:        http://ez.analog.com/community/linux
  S:    Supported
  F:    drivers/video/backlight/adp8860_bl.c
  
 -ADS1015 HARDWARE MONITOR DRIVER
 -M:    Dirk Eibach <eibach@gdsys.de>
 -L:    linux-hwmon@vger.kernel.org
 -S:    Maintained
 -F:    Documentation/hwmon/ads1015.rst
 -F:    drivers/hwmon/ads1015.c
 -F:    include/linux/platform_data/ads1015.h
 -
  ADT746X FAN DRIVER
  M:    Colin Leroy <colin@colino.net>
  S:    Maintained
@@@ -641,12 -649,6 +641,12 @@@ M:       Lino Sanfilippo <LinoSanfilippo@gmx.
  S:    Maintained
  F:    drivers/net/ethernet/alacritech/*
  
 +FORCEDETH GIGABIT ETHERNET DRIVER
 +M:    Rain River <rain.1986.08.12@gmail.com>
 +L:    netdev@vger.kernel.org
 +S:    Maintained
 +F:    drivers/net/ethernet/nvidia/*
 +
  ALCATEL SPEEDTOUCH USB DRIVER
  M:    Duncan Sands <duncan.sands@free.fr>
  L:    linux-usb@vger.kernel.org
@@@ -664,7 -666,7 +664,7 @@@ ALI1563 I2C DRIVE
  M:    Rudolf Marek <r.marek@assembler.cz>
  L:    linux-i2c@vger.kernel.org
  S:    Maintained
 -F:    Documentation/i2c/busses/i2c-ali1563
 +F:    Documentation/i2c/busses/i2c-ali1563.rst
  F:    drivers/i2c/busses/i2c-ali1563.c
  
  ALLEGRO DVT VIDEO IP CORE DRIVER
@@@ -674,13 -676,6 +674,13 @@@ L:       linux-media@vger.kernel.or
  S:    Maintained
  F:    drivers/staging/media/allegro-dvt/
  
 +ALLWINNER CPUFREQ DRIVER
 +M:    Yangtao Li <tiny.windzz@gmail.com>
 +L:    linux-pm@vger.kernel.org
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/opp/sun50i-nvmem-cpufreq.txt
 +F:    drivers/cpufreq/sun50i-cpufreq-nvmem.c
 +
  ALLWINNER SECURITY SYSTEM
  M:    Corentin Labbe <clabbe.montjoie@gmail.com>
  L:    linux-crypto@vger.kernel.org
@@@ -688,7 -683,7 +688,7 @@@ S: Maintaine
  F:    drivers/crypto/sunxi-ss/
  
  ALLWINNER VPU DRIVER
 -M:    Maxime Ripard <maxime.ripard@bootlin.com>
 +M:    Maxime Ripard <mripard@kernel.org>
  M:    Paul Kocialkowski <paul.kocialkowski@bootlin.com>
  L:    linux-media@vger.kernel.org
  S:    Maintained
@@@ -908,12 -903,11 +908,12 @@@ F:      Documentation/devicetree/bindings/ii
  
  ANALOG DEVICES INC AD7606 DRIVER
  M:    Stefan Popa <stefan.popa@analog.com>
 +M:    Beniamin Bia <beniamin.bia@analog.com>
  L:    linux-iio@vger.kernel.org
  W:    http://ez.analog.com/community/linux-device-drivers
  S:    Supported
  F:    drivers/iio/adc/ad7606.c
 -F:    Documentation/devicetree/bindings/iio/adc/adi,ad7606.txt
 +F:    Documentation/devicetree/bindings/iio/adc/adi,ad7606.yaml
  
  ANALOG DEVICES INC AD7768-1 DRIVER
  M:    Stefan Popa <stefan.popa@analog.com>
@@@ -944,14 -938,6 +944,14 @@@ S:       Supporte
  F:    drivers/mux/adgs1408.c
  F:    Documentation/devicetree/bindings/mux/adi,adgs1408.txt
  
 +ANALOG DEVICES INC ADIN DRIVER
 +M:    Alexandru Ardelean <alexaundru.ardelean@analog.com>
 +L:    netdev@vger.kernel.org
 +W:    http://ez.analog.com/community/linux-device-drivers
 +S:    Supported
 +F:    drivers/net/phy/adin.c
 +F:    Documentation/devicetree/bindings/net/adi,adin.yaml
 +
  ANALOG DEVICES INC ADIS DRIVER LIBRARY
  M:    Alexandru Ardelean <alexandru.ardelean@analog.com>
  S:    Supported
@@@ -959,14 -945,6 +959,14 @@@ L:       linux-iio@vger.kernel.or
  F:    include/linux/iio/imu/adis.h
  F:    drivers/iio/imu/adis.c
  
 +ANALOG DEVICES INC ADIS16460 DRIVER
 +M:    Dragos Bogdan <dragos.bogdan@analog.com>
 +S:    Supported
 +L:    linux-iio@vger.kernel.org
 +W:    http://ez.analog.com/community/linux-device-drivers
 +F:    drivers/iio/imu/adis16460.c
 +F:    Documentation/devicetree/bindings/iio/imu/adi,adis16460.yaml
 +
  ANALOG DEVICES INC ADP5061 DRIVER
  M:    Stefan Popa <stefan.popa@analog.com>
  L:    linux-pm@vger.kernel.org
@@@ -1372,7 -1350,8 +1372,7 @@@ M:      Will Deacon <will@kernel.org
  R:    Robin Murphy <robin.murphy@arm.com>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
 -F:    drivers/iommu/arm-smmu.c
 -F:    drivers/iommu/arm-smmu-v3.c
 +F:    drivers/iommu/arm-smmu*
  F:    drivers/iommu/io-pgtable-arm.c
  F:    drivers/iommu/io-pgtable-arm-v7s.c
  
@@@ -1429,7 -1408,7 +1429,7 @@@ S:      Maintaine
  F:    drivers/clk/sunxi/
  
  ARM/Allwinner sunXi SoC support
 -M:    Maxime Ripard <maxime.ripard@bootlin.com>
 +M:    Maxime Ripard <mripard@kernel.org>
  M:    Chen-Yu Tsai <wens@csie.org>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
@@@ -1442,14 -1421,6 +1442,14 @@@ F:    drivers/pinctrl/sunxi
  F:    drivers/soc/sunxi/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/sunxi/linux.git
  
 +Allwinner A10 CSI driver
 +M:    Maxime Ripard <mripard@kernel.org>
 +L:    linux-media@vger.kernel.org
 +T:    git git://linuxtv.org/media_tree.git
 +F:    drivers/media/platform/sunxi/sun4i-csi/
 +F:    Documentation/devicetree/bindings/media/allwinner,sun4i-a10-csi.yaml
 +S:    Maintained
 +
  ARM/Amlogic Meson SoC CLOCK FRAMEWORK
  M:    Neil Armstrong <narmstrong@baylibre.com>
  M:    Jerome Brunet <jbrunet@baylibre.com>
@@@ -1500,7 -1471,6 +1500,7 @@@ F:      arch/arm/mach-artpe
  F:    arch/arm/boot/dts/artpec6*
  F:    drivers/clk/axis
  F:    drivers/crypto/axis
 +F:    drivers/mmc/host/usdhi6rol0.c
  F:    drivers/pinctrl/pinctrl-artpec*
  F:    Documentation/devicetree/bindings/pinctrl/axis,artpec6-pinctrl.txt
  
@@@ -1612,8 -1582,8 +1612,8 @@@ R:      Suzuki K Poulose <suzuki.poulose@arm
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
  F:    drivers/hwtracing/coresight/*
 -F:    Documentation/trace/coresight.txt
 -F:    Documentation/trace/coresight-cpu-debug.txt
 +F:    Documentation/trace/coresight.rst
 +F:    Documentation/trace/coresight-cpu-debug.rst
  F:    Documentation/devicetree/bindings/arm/coresight.txt
  F:    Documentation/devicetree/bindings/arm/coresight-cpu-debug.txt
  F:    Documentation/ABI/testing/sysfs-bus-coresight-devices-*
@@@ -1656,21 -1626,6 +1656,21 @@@ F:    drivers/clocksource/timer-atlas7.
  N:    [^a-z]sirf
  X:    drivers/gnss
  
 +ARM/CZ.NIC TURRIS MOX SUPPORT
 +M:    Marek Behun <marek.behun@nic.cz>
 +W:    http://mox.turris.cz
 +S:    Maintained
 +F:    Documentation/ABI/testing/debugfs-moxtet
 +F:    Documentation/ABI/testing/sysfs-bus-moxtet-devices
 +F:    Documentation/ABI/testing/sysfs-firmware-turris-mox-rwtm
 +F:    Documentation/devicetree/bindings/bus/moxtet.txt
 +F:    Documentation/devicetree/bindings/firmware/cznic,turris-mox-rwtm.txt
 +F:    Documentation/devicetree/bindings/gpio/gpio-moxtet.txt
 +F:    include/linux/moxtet.h
 +F:    drivers/bus/moxtet.c
 +F:    drivers/firmware/turris-mox-rwtm.c
 +F:    drivers/gpio/gpio-moxtet.c
 +
  ARM/EBSA110 MACHINE SUPPORT
  M:    Russell King <linux@armlinux.org.uk>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
@@@ -1794,11 -1749,20 +1794,11 @@@ L:   linux-arm-kernel@lists.infradead.or
  S:    Maintained
  F:    arch/arm/mach-pxa/colibri-pxa270-income.c
  
 -ARM/INTEL IOP13XX ARM ARCHITECTURE
 -M:    Lennert Buytenhek <kernel@wantstofly.org>
 -L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 -S:    Maintained
 -
  ARM/INTEL IOP32X ARM ARCHITECTURE
  M:    Lennert Buytenhek <kernel@wantstofly.org>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
  
 -ARM/INTEL IOP33X ARM ARCHITECTURE
 -L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 -S:    Orphan
 -
  ARM/INTEL IQ81342EX MACHINE SUPPORT
  M:    Lennert Buytenhek <kernel@wantstofly.org>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
@@@ -1957,6 -1921,12 +1957,6 @@@ S:     Maintaine
  F:    drivers/phy/mediatek/
  F:    Documentation/devicetree/bindings/phy/phy-mtk-*
  
 -ARM/MICREL KS8695 ARCHITECTURE
 -M:    Greg Ungerer <gerg@uclinux.org>
 -L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 -F:    arch/arm/mach-ks8695/
 -S:    Odd Fixes
 -
  ARM/Microchip (AT91) SoC support
  M:    Nicolas Ferre <nicolas.ferre@microchip.com>
  M:    Alexandre Belloni <alexandre.belloni@bootlin.com>
@@@ -1998,7 -1968,6 +1998,7 @@@ F:      Documentation/devicetree/bindings/i2
  F:    arch/arm/mach-nomadik/
  F:    arch/arm/mach-u300/
  F:    arch/arm/mach-ux500/
 +F:    drivers/soc/ux500/
  F:    arch/arm/boot/dts/ste-*
  F:    drivers/clk/clk-nomadik.c
  F:    drivers/clk/clk-u300.c
@@@ -2042,6 -2011,22 +2042,6 @@@ F:     drivers/*/*npcm
  F:    Documentation/devicetree/bindings/*/*npcm*
  F:    Documentation/devicetree/bindings/*/*/*npcm*
  
 -ARM/NUVOTON W90X900 ARM ARCHITECTURE
 -M:    Wan ZongShun <mcuos.com@gmail.com>
 -L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 -W:    http://www.mcuos.com
 -S:    Maintained
 -F:    arch/arm/mach-w90x900/
 -F:    drivers/input/keyboard/w90p910_keypad.c
 -F:    drivers/input/touchscreen/w90p910_ts.c
 -F:    drivers/watchdog/nuc900_wdt.c
 -F:    drivers/net/ethernet/nuvoton/w90p910_ether.c
 -F:    drivers/mtd/nand/raw/nuc900_nand.c
 -F:    drivers/rtc/rtc-nuc900.c
 -F:    drivers/spi/spi-nuc900.c
 -F:    drivers/usb/host/ehci-w90x900.c
 -F:    drivers/video/fbdev/nuc900fb.c
 -
  ARM/OPENMOKO NEO FREERUNNER (GTA02) MACHINE SUPPORT
  L:    openmoko-kernel@lists.openmoko.org (subscribers-only)
  W:    http://wiki.openmoko.org/wiki/Neo_FreeRunner
@@@ -2170,12 -2155,10 +2170,12 @@@ F:   Documentation/devicetree/bindings/ar
  
  ARM/RENESAS ARM64 ARCHITECTURE
  M:    Simon Horman <horms@verge.net.au>
 +M:    Geert Uytterhoeven <geert+renesas@glider.be>
  M:    Magnus Damm <magnus.damm@gmail.com>
  L:    linux-renesas-soc@vger.kernel.org
  Q:    http://patchwork.kernel.org/project/linux-renesas-soc/list/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/horms/renesas.git next
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/geert/renesas-devel.git next
  S:    Supported
  F:    arch/arm64/boot/dts/renesas/
  F:    Documentation/devicetree/bindings/arm/renesas.yaml
@@@ -2234,9 -2217,8 +2234,9 @@@ F:      drivers/*/*s3c24
  F:    drivers/*/*/*s3c24*
  F:    drivers/*/*s3c64xx*
  F:    drivers/*/*s5pv210*
 -F:    drivers/memory/samsung/*
 -F:    drivers/soc/samsung/*
 +F:    drivers/memory/samsung/
 +F:    drivers/soc/samsung/
 +F:    include/linux/soc/samsung/
  F:    Documentation/arm/samsung/
  F:    Documentation/devicetree/bindings/arm/samsung/
  F:    Documentation/devicetree/bindings/sram/samsung-sram.txt
@@@ -2287,12 -2269,10 +2287,12 @@@ F:   drivers/media/platform/s5p-mfc
  
  ARM/SHMOBILE ARM ARCHITECTURE
  M:    Simon Horman <horms@verge.net.au>
 +M:    Geert Uytterhoeven <geert+renesas@glider.be>
  M:    Magnus Damm <magnus.damm@gmail.com>
  L:    linux-renesas-soc@vger.kernel.org
  Q:    http://patchwork.kernel.org/project/linux-renesas-soc/list/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/horms/renesas.git next
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/geert/renesas-devel.git next
  S:    Supported
  F:    arch/arm/boot/dts/emev2*
  F:    arch/arm/boot/dts/gr-peach*
@@@ -2931,7 -2911,6 +2931,7 @@@ BATMAN ADVANCE
  M:    Marek Lindner <mareklindner@neomailbox.ch>
  M:    Simon Wunderlich <sw@simonwunderlich.de>
  M:    Antonio Quartulli <a@unstable.cc>
 +M:    Sven Eckelmann <sven@narfation.org>
  L:    b.a.t.m.a.n@lists.open-mesh.org (moderated for non-subscribers)
  W:    https://www.open-mesh.org/
  B:    https://www.open-mesh.org/projects/batman-adv/issues
@@@ -3594,7 -3573,7 +3594,7 @@@ F:      Documentation/filesystems/caching/ca
  F:    fs/cachefiles/
  
  CADENCE MIPI-CSI2 BRIDGES
 -M:    Maxime Ripard <maxime.ripard@bootlin.com>
 +M:    Maxime Ripard <mripard@kernel.org>
  L:    linux-media@vger.kernel.org
  S:    Maintained
  F:    Documentation/devicetree/bindings/media/cdns,*.txt
@@@ -3652,12 -3631,9 +3652,12 @@@ S:    Maintaine
  F:    Documentation/devicetree/bindings/net/can/
  F:    drivers/net/can/
  F:    include/linux/can/dev.h
 +F:    include/linux/can/led.h
 +F:    include/linux/can/rx-offload.h
  F:    include/linux/can/platform/
  F:    include/uapi/linux/can/error.h
  F:    include/uapi/linux/can/netlink.h
 +F:    include/uapi/linux/can/vxcan.h
  
  CAN NETWORK LAYER
  M:    Oliver Hartkopp <socketcan@hartkopp.net>
@@@ -3670,23 -3646,11 +3670,23 @@@ S:   Maintaine
  F:    Documentation/networking/can.rst
  F:    net/can/
  F:    include/linux/can/core.h
 +F:    include/linux/can/skb.h
 +F:    include/net/netns/can.h
  F:    include/uapi/linux/can.h
  F:    include/uapi/linux/can/bcm.h
  F:    include/uapi/linux/can/raw.h
  F:    include/uapi/linux/can/gw.h
  
 +CAN-J1939 NETWORK LAYER
 +M:    Robin van der Gracht <robin@protonic.nl>
 +M:    Oleksij Rempel <o.rempel@pengutronix.de>
 +R:    Pengutronix Kernel Team <kernel@pengutronix.de>
 +L:    linux-can@vger.kernel.org
 +S:    Maintained
 +F:    Documentation/networking/j1939.txt
 +F:    net/can/j1939/
 +F:    include/uapi/linux/can/j1939.h
 +
  CAPABILITIES
  M:    Serge Hallyn <serge@hallyn.com>
  L:    linux-security-module@vger.kernel.org
@@@ -3836,9 -3800,14 +3836,9 @@@ F:     scripts/sign-file.
  F:    scripts/extract-cert.c
  
  CERTIFIED WIRELESS USB (WUSB) SUBSYSTEM:
 -L:    linux-usb@vger.kernel.org
 -S:    Orphan
 -F:    Documentation/usb/wusb-design-overview.rst
 -F:    Documentation/usb/wusb-cbaf
 -F:    drivers/usb/host/hwa-hc.c
 -F:    drivers/usb/host/whci/
 -F:    drivers/usb/wusbcore/
 -F:    include/linux/usb/wusb*
 +L:    devel@driverdev.osuosl.org
 +S:    Obsolete
 +F:    drivers/staging/wusbcore/
  
  CFAG12864B LCD DRIVER
  M:    Miguel Ojeda Sandonis <miguel.ojeda.sandonis@gmail.com>
@@@ -4130,7 -4099,7 +4130,7 @@@ L:      samba-technical@lists.samba.org (mod
  W:    http://linux-cifs.samba.org/
  T:    git git://git.samba.org/sfrench/cifs-2.6.git
  S:    Supported
 -F:    Documentation/filesystems/cifs/
 +F:    Documentation/admin-guide/cifs/
  F:    fs/cifs/
  
  COMPACTPCI HOTPLUG CORE
@@@ -4317,14 -4286,6 +4317,14 @@@ S:    Supporte
  F:    drivers/cpuidle/cpuidle-exynos.c
  F:    arch/arm/mach-exynos/pm.c
  
 +CPUIDLE DRIVER - ARM PSCI
 +M:    Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
 +M:    Sudeep Holla <sudeep.holla@arm.com>
 +L:    linux-pm@vger.kernel.org
 +L:    linux-arm-kernel@lists.infradead.org
 +S:    Supported
 +F:    drivers/cpuidle/cpuidle-psci.c
 +
  CPU IDLE TIME MANAGEMENT FRAMEWORK
  M:    "Rafael J. Wysocki" <rjw@rjwysocki.net>
  M:    Daniel Lezcano <daniel.lezcano@linaro.org>
@@@ -4986,9 -4947,7 +4986,9 @@@ M:      Jonathan Corbet <corbet@lwn.net
  L:    linux-doc@vger.kernel.org
  S:    Maintained
  F:    Documentation/
 +F:    scripts/documentation-file-ref-check
  F:    scripts/kernel-doc
 +F:    scripts/sphinx-pre-install
  X:    Documentation/ABI/
  X:    Documentation/firmware-guide/acpi/
  X:    Documentation/devicetree/
@@@ -5004,14 -4963,6 +5004,14 @@@ L:    linux-doc@vger.kernel.or
  S:    Maintained
  F:    Documentation/translations/it_IT
  
 +DOCUMENTATION SCRIPTS
 +M:    Mauro Carvalho Chehab <mchehab@kernel.org>
 +L:    linux-doc@vger.kernel.org
 +S:    Maintained
 +F:    scripts/documentation-file-ref-check
 +F:    scripts/sphinx-pre-install
 +F:    Documentation/sphinx/parse-headers.pl
 +
  DONGWOON DW9714 LENS VOICE COIL DRIVER
  M:    Sakari Ailus <sakari.ailus@linux.intel.com>
  L:    linux-media@vger.kernel.org
@@@ -5340,7 -5291,7 +5340,7 @@@ F:      include/linux/vga
  
  DRM DRIVERS AND MISC GPU PATCHES
  M:    Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
 -M:    Maxime Ripard <maxime.ripard@bootlin.com>
 +M:    Maxime Ripard <mripard@kernel.org>
  M:    Sean Paul <sean@poorly.run>
  W:    https://01.org/linuxgraphics/gfx-docs/maintainer-tools/drm-misc.html
  S:    Maintained
@@@ -5353,7 -5304,7 +5353,7 @@@ F:      include/uapi/drm/drm
  F:    include/linux/vga*
  
  DRM DRIVERS FOR ALLWINNER A10
 -M:    Maxime Ripard  <maxime.ripard@bootlin.com>
 +M:    Maxime Ripard <mripard@kernel.org>
  L:    dri-devel@lists.freedesktop.org
  S:    Supported
  F:    drivers/gpu/drm/sun4i/
@@@ -5603,6 -5554,12 +5603,6 @@@ T:     git git://linuxtv.org/media_tree.gi
  S:    Maintained
  F:    drivers/media/radio/dsbr100.c
  
 -DSCC4 DRIVER
 -M:    Francois Romieu <romieu@fr.zoreil.com>
 -L:    netdev@vger.kernel.org
 -S:    Maintained
 -F:    drivers/net/wan/dscc4.c
 -
  DT3155 MEDIA DRIVER
  M:    Hans Verkuil <hverkuil@xs4all.nl>
  L:    linux-media@vger.kernel.org
@@@ -5800,11 -5757,6 +5800,11 @@@ S:    Supporte
  F:    drivers/edac/aspeed_edac.c
  F:    Documentation/devicetree/bindings/edac/aspeed-sdram-edac.txt
  
 +EDAC-BLUEFIELD
 +M:    Shravan Kumar Ramani <sramani@mellanox.com>
 +S:    Supported
 +F:    drivers/edac/bluefield_edac.c
 +
  EDAC-CALXEDA
  M:    Robert Richter <rric@kernel.org>
  L:    linux-edac@vger.kernel.org
@@@ -5829,11 -5781,10 +5829,11 @@@ F:   drivers/edac/thunderx_edac
  EDAC-CORE
  M:    Borislav Petkov <bp@alien8.de>
  M:    Mauro Carvalho Chehab <mchehab@kernel.org>
 +M:    Tony Luck <tony.luck@intel.com>
  R:    James Morse <james.morse@arm.com>
 +R:    Robert Richter <rrichter@marvell.com>
  L:    linux-edac@vger.kernel.org
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/bp/bp.git for-next
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-edac.git linux_next
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/ras/ras.git edac-for-next
  S:    Supported
  F:    Documentation/admin-guide/ras.rst
  F:    Documentation/driver-api/edac.rst
@@@ -6083,13 -6034,6 +6083,13 @@@ T:    git git://git.kernel.org/pub/scm/lin
  F:    drivers/video/fbdev/s1d13xxxfb.c
  F:    include/video/s1d13xxxfb.h
  
 +EROFS FILE SYSTEM
 +M:    Gao Xiang <gaoxiang25@huawei.com>
 +M:    Chao Yu <yuchao0@huawei.com>
 +L:    linux-erofs@lists.ozlabs.org
 +S:    Maintained
 +F:    fs/erofs/
 +
  ERRSEQ ERROR TRACKING INFRASTRUCTURE
  M:    Jeff Layton <jlayton@kernel.org>
  S:    Maintained
@@@ -6117,7 -6061,7 +6117,7 @@@ M:      Florian Fainelli <f.fainelli@gmail.c
  M:    Heiner Kallweit <hkallweit1@gmail.com>
  L:    netdev@vger.kernel.org
  S:    Maintained
 -F:    Documentation/ABI/testing/sysfs-bus-mdio
 +F:    Documentation/ABI/testing/sysfs-class-net-phydev
  F:    Documentation/devicetree/bindings/net/ethernet-phy.yaml
  F:    Documentation/devicetree/bindings/net/mdio*
  F:    Documentation/networking/phy.rst
@@@ -6134,11 -6078,6 +6134,11 @@@ F:    include/trace/events/mdio.
  F:    include/uapi/linux/mdio.h
  F:    include/uapi/linux/mii.h
  
 +EXFAT FILE SYSTEM
 +M:    Valdis Kletnieks <valdis.kletnieks@vt.edu>
 +S:    Maintained
 +F:    drivers/staging/exfat/
 +
  EXT2 FILE SYSTEM
  M:    Jan Kara <jack@suse.com>
  L:    linux-ext4@vger.kernel.org
@@@ -6325,14 -6264,12 +6325,14 @@@ S:   Maintaine
  F:    drivers/hwmon/f75375s.c
  F:    include/linux/f75375s.h
  
 -FIREWIRE AUDIO DRIVERS
 +FIREWIRE AUDIO DRIVERS and IEC 61883-1/6 PACKET STREAMING ENGINE
  M:    Clemens Ladisch <clemens@ladisch.de>
 +M:    Takashi Sakamoto <o-takashi@sakamocchi.jp>
  L:    alsa-devel@alsa-project.org (moderated for non-subscribers)
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git
  S:    Maintained
  F:    sound/firewire/
 +F:    include/uapi/sound/firewire.h
  
  FIREWIRE MEDIA DRIVERS (firedtv)
  M:    Stefan Richter <stefanr@s5r6.in-berlin.de>
@@@ -6380,21 -6317,29 +6380,21 @@@ FLEXTIMER FTM-QUADDEC DRIVE
  M:    Patrick Havelange <patrick.havelange@essensium.com>
  L:    linux-iio@vger.kernel.org
  S:    Maintained
 -F:    Documentation/ABI/testing/sysfs-bus-counter-ftm-quadddec
 +F:    Documentation/ABI/testing/sysfs-bus-counter-ftm-quaddec
  F:    Documentation/devicetree/bindings/counter/ftm-quaddec.txt
  F:    drivers/counter/ftm-quaddec.c
  
  FLOPPY DRIVER
 -S:    Orphan
 +M:    Denis Efremov <efremov@linux.com>
 +S:    Odd Fixes
  L:    linux-block@vger.kernel.org
  F:    drivers/block/floppy.c
  
 -FMC SUBSYSTEM
 -M:    Alessandro Rubini <rubini@gnudd.com>
 -W:    http://www.ohwr.org/projects/fmc-bus
 -S:    Supported
 -F:    drivers/fmc/
 -F:    include/linux/fmc*.h
 -F:    include/linux/ipmi-fru.h
 -K:    fmc_d.*register
 -
  FPGA MANAGER FRAMEWORK
  M:    Moritz Fischer <mdf@kernel.org>
  L:    linux-fpga@vger.kernel.org
  S:    Maintained
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/atull/linux-fpga.git
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/mdf/linux-fpga.git
  Q:    http://patchwork.kernel.org/project/linux-fpga/list/
  F:    Documentation/fpga/
  F:    Documentation/driver-api/fpga/
@@@ -6427,7 -6372,7 +6427,7 @@@ FRAMEBUFFER LAYE
  M:    Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
  L:    dri-devel@lists.freedesktop.org
  L:    linux-fbdev@vger.kernel.org
 -T:    git git://github.com/bzolnier/linux.git
 +T:    git git://anongit.freedesktop.org/drm/drm-misc
  Q:    http://patchwork.kernel.org/project/linux-fbdev/list/
  S:    Maintained
  F:    Documentation/fb/
@@@ -6489,17 -6434,8 +6489,17 @@@ M:    Frank Li <Frank.li@nxp.com
  L:    linux-arm-kernel@lists.infradead.org
  S:    Maintained
  F:    drivers/perf/fsl_imx8_ddr_perf.c
 +F:    Documentation/admin-guide/perf/imx-ddr.rst
  F:    Documentation/devicetree/bindings/perf/fsl-imx-ddr.txt
  
 +FREESCALE IMX I2C DRIVER
 +M:    Oleksij Rempel <o.rempel@pengutronix.de>
 +R:    Pengutronix Kernel Team <kernel@pengutronix.de>
 +L:    linux-i2c@vger.kernel.org
 +S:    Maintained
 +F:    drivers/i2c/busses/i2c-imx.c
 +F:    Documentation/devicetree/bindings/i2c/i2c-imx.txt
 +
  FREESCALE IMX LPI2C DRIVER
  M:    Dong Aisheng <aisheng.dong@nxp.com>
  L:    linux-i2c@vger.kernel.org
@@@ -6662,7 -6598,6 +6662,7 @@@ T:      git git://git.kernel.org/pub/scm/fs/
  S:    Supported
  F:    fs/crypto/
  F:    include/linux/fscrypt*.h
 +F:    include/uapi/linux/fscrypt.h
  F:    Documentation/filesystems/fscrypt.rst
  
  FSI SUBSYSTEM
@@@ -6694,6 -6629,18 +6694,18 @@@ S:    Maintaine
  F:    fs/notify/
  F:    include/linux/fsnotify*.h
  
+ FSVERITY: READ-ONLY FILE-BASED AUTHENTICITY PROTECTION
+ M:    Eric Biggers <ebiggers@kernel.org>
+ M:    Theodore Y. Ts'o <tytso@mit.edu>
+ L:    linux-fscrypt@vger.kernel.org
+ Q:    https://patchwork.kernel.org/project/linux-fscrypt/list/
+ T:    git git://git.kernel.org/pub/scm/fs/fscrypt/fscrypt.git fsverity
+ S:    Supported
+ F:    fs/verity/
+ F:    include/linux/fsverity.h
+ F:    include/uapi/linux/fsverity.h
+ F:    Documentation/filesystems/fsverity.rst
  FUJITSU LAPTOP EXTRAS
  M:    Jonathan Woithe <jwoithe@just42.net>
  L:    platform-driver-x86@vger.kernel.org
@@@ -6784,13 -6731,6 +6796,13 @@@ W:    https://linuxtv.or
  S:    Maintained
  F:    drivers/media/radio/radio-gemtek*
  
 +GENERIC ARCHITECTURE TOPOLOGY
 +M:    Sudeep Holla <sudeep.holla@arm.com>
 +L:    linux-kernel@vger.kernel.org
 +S:    Maintained
 +F:    drivers/base/arch_topology.c
 +F:    include/linux/arch_topology.h
 +
  GENERIC GPIO I2C DRIVER
  M:    Wolfram Sang <wsa+renesas@sang-engineering.com>
  S:    Supported
@@@ -6803,7 -6743,7 +6815,7 @@@ L:      linux-i2c@vger.kernel.or
  S:    Supported
  F:    drivers/i2c/muxes/i2c-mux-gpio.c
  F:    include/linux/platform_data/i2c-mux-gpio.h
 -F:    Documentation/i2c/muxes/i2c-mux-gpio
 +F:    Documentation/i2c/muxes/i2c-mux-gpio.rst
  
  GENERIC HDLC (WAN) DRIVERS
  M:    Krzysztof Halasa <khc@pm.waw.pl>
@@@ -6894,6 -6834,13 +6906,6 @@@ F:     Documentation/filesystems/gfs2*.tx
  F:    fs/gfs2/
  F:    include/uapi/linux/gfs2_ondisk.h
  
 -GIGASET ISDN DRIVERS
 -M:    Paul Bolle <pebolle@tiscali.nl>
 -L:    gigaset307x-common@lists.sourceforge.net
 -W:    http://gigaset307x.sourceforge.net/
 -S:    Odd Fixes
 -F:    drivers/staging/isdn/gigaset/
 -
  GNSS SUBSYSTEM
  M:    Johan Hovold <johan@kernel.org>
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/johan/gnss.git
@@@ -7047,9 -6994,6 +7059,9 @@@ M:      Alex Elder <elder@kernel.org
  M:    Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  S:    Maintained
  F:    drivers/staging/greybus/
 +F:    drivers/greybus/
 +F:    include/linux/greybus.h
 +F:    include/linux/greybus/
  L:    greybus-dev@lists.linaro.org (moderated for non-subscribers)
  
  GREYBUS UART PROTOCOLS DRIVERS
@@@ -7375,17 -7319,6 +7387,17 @@@ S:    Supporte
  F:    drivers/scsi/hisi_sas/
  F:    Documentation/devicetree/bindings/scsi/hisilicon-sas.txt
  
 +HISILICON QM AND ZIP Controller DRIVER
 +M:    Zhou Wang <wangzhou1@hisilicon.com>
 +L:    linux-crypto@vger.kernel.org
 +S:    Maintained
 +F:    drivers/crypto/hisilicon/qm.c
 +F:    drivers/crypto/hisilicon/qm.h
 +F:    drivers/crypto/hisilicon/sgl.c
 +F:    drivers/crypto/hisilicon/sgl.h
 +F:    drivers/crypto/hisilicon/zip/
 +F:    Documentation/ABI/testing/debugfs-hisi-zip
 +
  HMM - Heterogeneous Memory Management
  M:    Jérôme Glisse <jglisse@redhat.com>
  L:    linux-mm@kvack.org
@@@ -7529,12 -7462,11 +7541,12 @@@ F:   drivers/hid/hid-hyperv.
  F:    drivers/hv/
  F:    drivers/input/serio/hyperv-keyboard.c
  F:    drivers/pci/controller/pci-hyperv.c
 +F:    drivers/pci/controller/pci-hyperv-intf.c
  F:    drivers/net/hyperv/
  F:    drivers/scsi/storvsc_drv.c
  F:    drivers/uio/uio_hv_generic.c
  F:    drivers/video/fbdev/hyperv_fb.c
 -F:    drivers/iommu/hyperv_iommu.c
 +F:    drivers/iommu/hyperv-iommu.c
  F:    net/vmw_vsock/hyperv_transport.c
  F:    include/clocksource/hyperv_timer.h
  F:    include/linux/hyperv.h
@@@ -7567,14 -7499,14 +7579,14 @@@ I2C CONTROLLER DRIVER FOR NVIDIA GP
  M:    Ajay Gupta <ajayg@nvidia.com>
  L:    linux-i2c@vger.kernel.org
  S:    Maintained
 -F:    Documentation/i2c/busses/i2c-nvidia-gpu
 +F:    Documentation/i2c/busses/i2c-nvidia-gpu.rst
  F:    drivers/i2c/busses/i2c-nvidia-gpu.c
  
  I2C MUXES
  M:    Peter Rosin <peda@axentia.se>
  L:    linux-i2c@vger.kernel.org
  S:    Maintained
 -F:    Documentation/i2c/i2c-topology
 +F:    Documentation/i2c/i2c-topology.rst
  F:    Documentation/i2c/muxes/
  F:    Documentation/devicetree/bindings/i2c/i2c-mux*
  F:    Documentation/devicetree/bindings/i2c/i2c-arb*
@@@ -7587,15 -7519,15 +7599,15 @@@ I2C MV64XXX MARVELL AND ALLWINNER DRIVE
  M:    Gregory CLEMENT <gregory.clement@bootlin.com>
  L:    linux-i2c@vger.kernel.org
  S:    Maintained
 -F:    Documentation/devicetree/bindings/i2c/i2c-mv64xxx.txt
 +F:    Documentation/devicetree/bindings/i2c/marvell,mv64xxx-i2c.yaml
  F:    drivers/i2c/busses/i2c-mv64xxx.c
  
  I2C OVER PARALLEL PORT
  M:    Jean Delvare <jdelvare@suse.com>
  L:    linux-i2c@vger.kernel.org
  S:    Maintained
 -F:    Documentation/i2c/busses/i2c-parport
 -F:    Documentation/i2c/busses/i2c-parport-light
 +F:    Documentation/i2c/busses/i2c-parport.rst
 +F:    Documentation/i2c/busses/i2c-parport-light.rst
  F:    drivers/i2c/busses/i2c-parport.c
  F:    drivers/i2c/busses/i2c-parport-light.c
  
@@@ -7629,7 -7561,7 +7641,7 @@@ I2C-TAOS-EVM DRIVE
  M:    Jean Delvare <jdelvare@suse.com>
  L:    linux-i2c@vger.kernel.org
  S:    Maintained
 -F:    Documentation/i2c/busses/i2c-taos-evm
 +F:    Documentation/i2c/busses/i2c-taos-evm.rst
  F:    drivers/i2c/busses/i2c-taos-evm.c
  
  I2C-TINY-USB DRIVER
@@@ -7643,19 -7575,19 +7655,19 @@@ I2C/SMBUS CONTROLLER DRIVERS FOR P
  M:    Jean Delvare <jdelvare@suse.com>
  L:    linux-i2c@vger.kernel.org
  S:    Maintained
 -F:    Documentation/i2c/busses/i2c-ali1535
 -F:    Documentation/i2c/busses/i2c-ali1563
 -F:    Documentation/i2c/busses/i2c-ali15x3
 -F:    Documentation/i2c/busses/i2c-amd756
 -F:    Documentation/i2c/busses/i2c-amd8111
 -F:    Documentation/i2c/busses/i2c-i801
 -F:    Documentation/i2c/busses/i2c-nforce2
 -F:    Documentation/i2c/busses/i2c-piix4
 -F:    Documentation/i2c/busses/i2c-sis5595
 -F:    Documentation/i2c/busses/i2c-sis630
 -F:    Documentation/i2c/busses/i2c-sis96x
 -F:    Documentation/i2c/busses/i2c-via
 -F:    Documentation/i2c/busses/i2c-viapro
 +F:    Documentation/i2c/busses/i2c-ali1535.rst
 +F:    Documentation/i2c/busses/i2c-ali1563.rst
 +F:    Documentation/i2c/busses/i2c-ali15x3.rst
 +F:    Documentation/i2c/busses/i2c-amd756.rst
 +F:    Documentation/i2c/busses/i2c-amd8111.rst
 +F:    Documentation/i2c/busses/i2c-i801.rst
 +F:    Documentation/i2c/busses/i2c-nforce2.rst
 +F:    Documentation/i2c/busses/i2c-piix4.rst
 +F:    Documentation/i2c/busses/i2c-sis5595.rst
 +F:    Documentation/i2c/busses/i2c-sis630.rst
 +F:    Documentation/i2c/busses/i2c-sis96x.rst
 +F:    Documentation/i2c/busses/i2c-via.rst
 +F:    Documentation/i2c/busses/i2c-viapro.rst
  F:    drivers/i2c/busses/i2c-ali1535.c
  F:    drivers/i2c/busses/i2c-ali1563.c
  F:    drivers/i2c/busses/i2c-ali15x3.c
@@@ -7684,7 -7616,7 +7696,7 @@@ M:      Seth Heasley <seth.heasley@intel.com
  M:    Neil Horman <nhorman@tuxdriver.com>
  L:    linux-i2c@vger.kernel.org
  F:    drivers/i2c/busses/i2c-ismt.c
 -F:    Documentation/i2c/busses/i2c-ismt
 +F:    Documentation/i2c/busses/i2c-ismt.rst
  
  I2C/SMBUS STUB DRIVER
  M:    Jean Delvare <jdelvare@suse.com>
@@@ -7740,7 -7672,7 +7752,7 @@@ F:      drivers/crypto/nx/nx-aes
  F:    drivers/crypto/nx/nx-sha*
  F:    drivers/crypto/nx/nx.*
  F:    drivers/crypto/nx/nx_csbcpb.h
 -F:    drivers/crypto/nx/nx_debugfs.h
 +F:    drivers/crypto/nx/nx_debugfs.c
  
  IBM Power Linux RAID adapter
  M:    Brian King <brking@us.ibm.com>
@@@ -8124,7 -8056,6 +8136,7 @@@ S:      Maintaine
  F:    drivers/video/fbdev/i810/
  
  INTEL ASoC DRIVERS
 +M:    Cezary Rojewski <cezary.rojewski@intel.com>
  M:    Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
  M:    Liam Girdwood <liam.r.girdwood@linux.intel.com>
  M:    Jie Yang <yang.jie@linux.intel.com>
@@@ -8146,13 -8077,6 +8158,13 @@@ T:    git git://git.code.sf.net/p/intel-sa
  S:    Supported
  F:    drivers/scsi/isci/
  
 +INTEL CPU family model numbers
 +M:    Tony Luck <tony.luck@intel.com>
 +M:    x86@kernel.org
 +L:    linux-kernel@vger.kernel.org
 +S:    Supported
 +F:    arch/x86/include/asm/intel-family.h
 +
  INTEL DRM DRIVERS (excluding Poulsbo, Moorestown and derivative chipsets)
  M:    Jani Nikula <jani.nikula@linux.intel.com>
  M:    Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
@@@ -8397,17 -8321,6 +8409,17 @@@ F:    drivers/platform/x86/intel_speed_sel
  F:    tools/power/x86/intel-speed-select/
  F:    include/uapi/linux/isst_if.h
  
 +INTEL STRATIX10 FIRMWARE DRIVERS
 +M:    Richard Gong <richard.gong@linux.intel.com>
 +L:    linux-kernel@vger.kernel.org
 +S:    Maintained
 +F:    drivers/firmware/stratix10-rsu.c
 +F:    drivers/firmware/stratix10-svc.c
 +F:    include/linux/firmware/intel/stratix10-smc.h
 +F:    include/linux/firmware/intel/stratix10-svc-client.h
 +F:    Documentation/ABI/testing/sysfs-devices-platform-stratix10-rsu
 +F:    Documentation/devicetree/bindings/firmware/intel,stratix10-svc.txt
 +
  INTEL TELEMETRY DRIVER
  M:    Rajneesh Bhardwaj <rajneesh.bhardwaj@linux.intel.com>
  M:    "David E. Box" <david.e.box@linux.intel.com>
@@@ -8445,7 -8358,7 +8457,7 @@@ M:      linux-wimax@intel.co
  L:    wimax@linuxwimax.org (subscribers-only)
  S:    Supported
  W:    http://linuxwimax.org
 -F:    Documentation/wimax/README.i2400m
 +F:    Documentation/admin-guide/wimax/i2400m.rst
  F:    drivers/net/wimax/i2400m/
  F:    include/uapi/linux/wimax/i2400m.h
  
@@@ -8459,7 -8372,6 +8471,7 @@@ M:      Alexander Shishkin <alexander.shishk
  S:    Supported
  F:    Documentation/trace/intel_th.rst
  F:    drivers/hwtracing/intel_th/
 +F:    include/linux/intel_th.h
  
  INTEL(R) TRUSTED EXECUTION TECHNOLOGY (TXT)
  M:    Ning Sun <ning.sun@intel.com>
@@@ -8471,6 -8383,12 +8483,6 @@@ F:     Documentation/x86/intel_txt.rs
  F:    include/linux/tboot.h
  F:    arch/x86/kernel/tboot.c
  
 -INTEL-MID GPIO DRIVER
 -M:    David Cohen <david.a.cohen@linux.intel.com>
 -L:    linux-gpio@vger.kernel.org
 -S:    Maintained
 -F:    drivers/gpio/gpio-intel-mid.c
 -
  INTERCONNECT API
  M:    Georgi Djakov <georgi.djakov@linaro.org>
  L:    linux-pm@vger.kernel.org
@@@ -8495,6 -8413,12 +8507,6 @@@ L:     linux-mips@vger.kernel.or
  S:    Maintained
  F:    drivers/net/ethernet/sgi/ioc3-eth.c
  
 -IOC3 SERIAL DRIVER
 -M:    Pat Gefre <pfg@sgi.com>
 -L:    linux-serial@vger.kernel.org
 -S:    Maintained
 -F:    drivers/tty/serial/ioc3_serial.c
 -
  IOMAP FILESYSTEM LIBRARY
  M:    Christoph Hellwig <hch@infradead.org>
  M:    Darrick J. Wong <darrick.wong@oracle.com>
@@@ -8504,6 -8428,7 +8516,6 @@@ L:      linux-xfs@vger.kernel.or
  L:    linux-fsdevel@vger.kernel.org
  T:    git git://git.kernel.org/pub/scm/fs/xfs/xfs-linux.git
  S:    Supported
 -F:    fs/iomap.c
  F:    fs/iomap/
  F:    include/linux/iomap.h
  
@@@ -8528,6 -8453,11 +8540,6 @@@ S:     Maintaine
  F:    fs/io_uring.c
  F:    include/uapi/linux/io_uring.h
  
 -IP MASQUERADING
 -M:    Juanjo Ciarlante <jjciarla@raiz.uncu.edu.ar>
 -S:    Maintained
 -F:    net/ipv4/netfilter/ipt_MASQUERADE.c
 -
  IPMI SUBSYSTEM
  M:    Corey Minyard <minyard@acm.org>
  L:    openipmi-developer@lists.sourceforge.net (moderated for non-subscribers)
@@@ -8731,7 -8661,7 +8743,7 @@@ L:      jfs-discussion@lists.sourceforge.ne
  W:    http://jfs.sourceforge.net/
  T:    git git://github.com/kleikamp/linux-shaggy.git
  S:    Maintained
 -F:    Documentation/filesystems/jfs.txt
 +F:    Documentation/admin-guide/jfs.rst
  F:    fs/jfs/
  
  JME NETWORK DRIVER
@@@ -8901,6 -8831,14 +8913,6 @@@ F:     virt/kvm/
  F:    tools/kvm/
  F:    tools/testing/selftests/kvm/
  
 -KERNEL VIRTUAL MACHINE FOR AMD-V (KVM/amd)
 -M:    Joerg Roedel <joro@8bytes.org>
 -L:    kvm@vger.kernel.org
 -W:    http://www.linux-kvm.org/
 -S:    Maintained
 -F:    arch/x86/include/asm/svm.h
 -F:    arch/x86/kvm/svm.c
 -
  KERNEL VIRTUAL MACHINE FOR ARM/ARM64 (KVM/arm, KVM/arm64)
  M:    Marc Zyngier <maz@kernel.org>
  R:    James Morse <james.morse@arm.com>
@@@ -8943,7 -8881,7 +8955,7 @@@ M:      Christian Borntraeger <borntraeger@d
  M:    Janosch Frank <frankja@linux.ibm.com>
  R:    David Hildenbrand <david@redhat.com>
  R:    Cornelia Huck <cohuck@redhat.com>
 -L:    linux-s390@vger.kernel.org
 +L:    kvm@vger.kernel.org
  W:    http://www.ibm.com/developerworks/linux/linux390/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/kvms390/linux.git
  S:    Supported
@@@ -8958,11 -8896,6 +8970,11 @@@ F:    tools/testing/selftests/kvm/*/s390x
  KERNEL VIRTUAL MACHINE FOR X86 (KVM/x86)
  M:    Paolo Bonzini <pbonzini@redhat.com>
  M:    Radim Krčmář <rkrcmar@redhat.com>
 +R:    Sean Christopherson <sean.j.christopherson@intel.com>
 +R:    Vitaly Kuznetsov <vkuznets@redhat.com>
 +R:    Wanpeng Li <wanpengli@tencent.com>
 +R:    Jim Mattson <jmattson@google.com>
 +R:    Joerg Roedel <joro@8bytes.org>
  L:    kvm@vger.kernel.org
  W:    http://www.linux-kvm.org
  T:    git git://git.kernel.org/pub/scm/virt/kvm/kvm.git
@@@ -8970,12 -8903,8 +8982,12 @@@ S:    Supporte
  F:    arch/x86/kvm/
  F:    arch/x86/kvm/*/
  F:    arch/x86/include/uapi/asm/kvm*
 +F:    arch/x86/include/uapi/asm/vmx.h
 +F:    arch/x86/include/uapi/asm/svm.h
  F:    arch/x86/include/asm/kvm*
  F:    arch/x86/include/asm/pvclock-abi.h
 +F:    arch/x86/include/asm/svm.h
 +F:    arch/x86/include/asm/vmx.h
  F:    arch/x86/kernel/kvm.c
  F:    arch/x86/kernel/kvmclock.c
  
@@@ -9007,7 -8936,7 +9019,7 @@@ F:      security/keys/encrypted-keys
  
  KEYS-TRUSTED
  M:    James Bottomley <jejb@linux.ibm.com>
 -M:      Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
 +M:    Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
  M:    Mimi Zohar <zohar@linux.ibm.com>
  L:    linux-integrity@vger.kernel.org
  L:    keyrings@vger.kernel.org
@@@ -9074,7 -9003,7 +9086,7 @@@ F:      kernel/kprobes.
  KS0108 LCD CONTROLLER DRIVER
  M:    Miguel Ojeda Sandonis <miguel.ojeda.sandonis@gmail.com>
  S:    Maintained
 -F:    Documentation/auxdisplay/ks0108
 +F:    Documentation/admin-guide/auxdisplay/ks0108.rst
  F:    drivers/auxdisplay/ks0108.c
  F:    include/linux/ks0108.h
  
@@@ -9303,18 -9232,6 +9315,18 @@@ F:    include/linux/nd.
  F:    include/linux/libnvdimm.h
  F:    include/uapi/linux/ndctl.h
  
 +LICENSES and SPDX stuff
 +M:    Thomas Gleixner <tglx@linutronix.de>
 +M:    Greg Kroah-Hartman <gregkh@linuxfoundation.org>
 +L:    linux-spdx@vger.kernel.org
 +S:    Maintained
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/spdx.git
 +F:    COPYING
 +F:    Documentation/process/license-rules.rst
 +F:    LICENSES/
 +F:    scripts/spdxcheck-test.sh
 +F:    scripts/spdxcheck.py
 +
  LIGHTNVM PLATFORM SUPPORT
  M:    Matias Bjorling <mb@lightnvm.io>
  W:    http://github/OpenChannelSSD
@@@ -9421,7 -9338,7 +9433,7 @@@ F:      drivers/misc/lkdtm/
  
  LINUX KERNEL MEMORY CONSISTENCY MODEL (LKMM)
  M:    Alan Stern <stern@rowland.harvard.edu>
 -M:    Andrea Parri <andrea.parri@amarulasolutions.com>
 +M:    Andrea Parri <parri.andrea@gmail.com>
  M:    Will Deacon <will@kernel.org>
  M:    Peter Zijlstra <peterz@infradead.org>
  M:    Boqun Feng <boqun.feng@gmail.com>
@@@ -9429,7 -9346,7 +9441,7 @@@ M:      Nicholas Piggin <npiggin@gmail.com
  M:    David Howells <dhowells@redhat.com>
  M:    Jade Alglave <j.alglave@ucl.ac.uk>
  M:    Luc Maranget <luc.maranget@inria.fr>
 -M:    "Paul E. McKenney" <paulmck@linux.ibm.com>
 +M:    "Paul E. McKenney" <paulmck@kernel.org>
  R:    Akira Yokosawa <akiyks@gmail.com>
  R:    Daniel Lustig <dlustig@nvidia.com>
  L:    linux-kernel@vger.kernel.org
@@@ -9663,7 -9580,7 +9675,7 @@@ F:      Documentation/networking/mac80211-in
  F:    include/net/mac80211.h
  F:    net/mac80211/
  F:    drivers/net/wireless/mac80211_hwsim.[ch]
 -F:    Documentation/networking/mac80211_hwsim/README
 +F:    Documentation/networking/mac80211_hwsim/mac80211_hwsim.rst
  
  MAILBOX API
  M:    Jassi Brar <jassisinghbrar@gmail.com>
@@@ -10112,8 -10029,8 +10124,8 @@@ L:   linux-media@vger.kernel.or
  L:    linux-renesas-soc@vger.kernel.org
  T:    git git://linuxtv.org/media_tree.git
  S:    Supported
 -F:    Documentation/devicetree/bindings/media/renesas,rcar-csi2.txt
 -F:    Documentation/devicetree/bindings/media/rcar_vin.txt
 +F:    Documentation/devicetree/bindings/media/renesas,csi2.txt
 +F:    Documentation/devicetree/bindings/media/renesas,vin.txt
  F:    drivers/media/platform/rcar-vin/
  
  MEDIA DRIVERS FOR RENESAS - VSP1
@@@ -10440,7 -10357,7 +10452,7 @@@ L:   linux-i2c@vger.kernel.or
  S:    Supported
  F:    drivers/i2c/busses/i2c-mlxcpld.c
  F:    drivers/i2c/muxes/i2c-mux-mlxcpld.c
 -F:    Documentation/i2c/busses/i2c-mlxcpld
 +F:    Documentation/i2c/busses/i2c-mlxcpld.rst
  
  MELLANOX MLXCPLD LED DRIVER
  M:    Vadim Pasternak <vadimp@mellanox.com>
@@@ -10458,7 -10375,7 +10470,7 @@@ F:   drivers/platform/x86/mlx-platform.
  
  MEMBARRIER SUPPORT
  M:    Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
 -M:    "Paul E. McKenney" <paulmck@linux.ibm.com>
 +M:    "Paul E. McKenney" <paulmck@kernel.org>
  L:    linux-kernel@vger.kernel.org
  S:    Supported
  F:    kernel/sched/membarrier.c
@@@ -10710,6 -10627,12 +10722,6 @@@ M:  Nicolas Ferre <nicolas.ferre@microch
  S:    Supported
  F:    drivers/power/reset/at91-sama5d2_shdwc.c
  
 -MICROCHIP SAMA5D2-COMPATIBLE PIOBU GPIO
 -M:    Andrei Stefanescu <andrei.stefanescu@microchip.com>
 -L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 -L:    linux-gpio@vger.kernel.org
 -F:    drivers/gpio/gpio-sama5d2-piobu.c
 -
  MICROCHIP SPI DRIVER
  M:    Nicolas Ferre <nicolas.ferre@microchip.com>
  S:    Supported
@@@ -10722,6 -10645,13 +10734,6 @@@ S:  Supporte
  F:    drivers/misc/atmel-ssc.c
  F:    include/linux/atmel-ssc.h
  
 -MICROCHIP TIMER COUNTER (TC) AND CLOCKSOURCE DRIVERS
 -M:    Nicolas Ferre <nicolas.ferre@microchip.com>
 -L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 -S:    Supported
 -F:    drivers/misc/atmel_tclib.c
 -F:    drivers/clocksource/tcb_clksrc.c
 -
  MICROCHIP USBA UDC DRIVER
  M:    Cristian Birsan <cristian.birsan@microchip.com>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
@@@ -11154,7 -11084,7 +11166,7 @@@ NET_FAILOVER MODUL
  M:    Sridhar Samudrala <sridhar.samudrala@intel.com>
  L:    netdev@vger.kernel.org
  S:    Supported
 -F:    driver/net/net_failover.c
 +F:    drivers/net/net_failover.c
  F:    include/net/net_failover.h
  F:    Documentation/networking/net_failover.rst
  
@@@ -11226,8 -11156,6 +11238,8 @@@ L:   netdev@vger.kernel.or
  S:    Maintained
  W:    https://fedorahosted.org/dropwatch/
  F:    net/core/drop_monitor.c
 +F:    include/uapi/linux/net_dropmon.h
 +F:    include/net/drop_monitor.h
  
  NETWORKING DRIVERS
  M:    "David S. Miller" <davem@davemloft.net>
@@@ -11366,7 -11294,6 +11378,7 @@@ M:   Aviad Yehezkel <aviadye@mellanox.com
  M:    Dave Watson <davejwatson@fb.com>
  M:    John Fastabend <john.fastabend@gmail.com>
  M:    Daniel Borkmann <daniel@iogearbox.net>
 +M:    Jakub Kicinski <jakub.kicinski@netronome.com>
  L:    netdev@vger.kernel.org
  S:    Maintained
  F:    net/tls/*
@@@ -11407,6 -11334,7 +11419,6 @@@ F:   include/net/nfc
  F:    include/uapi/linux/nfc.h
  F:    drivers/nfc/
  F:    include/linux/platform_data/nfcmrvl.h
 -F:    include/linux/platform_data/nxp-nci.h
  F:    Documentation/devicetree/bindings/net/nfc/
  
  NFS, SUNRPC, AND LOCKD CLIENTS
@@@ -11929,21 -11857,6 +11941,21 @@@ T: git git://linuxtv.org/media_tree.gi
  S:    Maintained
  F:    drivers/media/i2c/ov5647.c
  
 +OMNIVISION OV5670 SENSOR DRIVER
 +M:    Chiranjeevi Rapolu <chiranjeevi.rapolu@intel.com>
 +M:    Hyungwoo Yang <hyungwoo.yang@intel.com>
 +L:    linux-media@vger.kernel.org
 +T:    git git://linuxtv.org/media_tree.git
 +S:    Maintained
 +F:    drivers/media/i2c/ov5670.c
 +
 +OMNIVISION OV5675 SENSOR DRIVER
 +M:    Shawn Tu <shawnx.tu@intel.com>
 +L:    linux-media@vger.kernel.org
 +T:    git git://linuxtv.org/media_tree.git
 +S:    Maintained
 +F:    drivers/media/i2c/ov5675.c
 +
  OMNIVISION OV5695 SENSOR DRIVER
  M:    Shunqian Zheng <zhengsq@rock-chips.com>
  L:    linux-media@vger.kernel.org
@@@ -12065,7 -11978,7 +12077,7 @@@ M:   Andrew Lunn <andrew@lunn.ch
  L:    linux-i2c@vger.kernel.org
  S:    Maintained
  F:    Documentation/devicetree/bindings/i2c/i2c-ocores.txt
 -F:    Documentation/i2c/busses/i2c-ocores
 +F:    Documentation/i2c/busses/i2c-ocores.rst
  F:    drivers/i2c/busses/i2c-ocores.c
  F:    include/linux/platform_data/i2c-ocores.h
  
@@@ -12188,7 -12101,7 +12200,7 @@@ L:   netdev@vger.kernel.or
  S:    Supported
  F:    lib/packing.c
  F:    include/linux/packing.h
 -F:    Documentation/packing.txt
 +F:    Documentation/core-api/packing.rst
  
  PADATA PARALLEL EXECUTION MECHANISM
  M:    Steffen Klassert <steffen.klassert@secunet.com>
@@@ -12669,14 -12582,6 +12681,14 @@@ L: platform-driver-x86@vger.kernel.or
  S:    Maintained
  F:    drivers/platform/x86/peaq-wmi.c
  
 +PENSANDO ETHERNET DRIVERS
 +M:    Shannon Nelson <snelson@pensando.io>
 +M:    Pensando Drivers <drivers@pensando.io>
 +L:    netdev@vger.kernel.org
 +S:    Supported
 +F:    Documentation/networking/device_drivers/pensando/ionic.rst
 +F:    drivers/net/ethernet/pensando/
 +
  PER-CPU MEMORY ALLOCATOR
  M:    Dennis Zhou <dennis@kernel.org>
  M:    Tejun Heo <tj@kernel.org>
@@@ -12697,7 -12602,6 +12709,7 @@@ PERFORMANCE EVENTS SUBSYSTE
  M:    Peter Zijlstra <peterz@infradead.org>
  M:    Ingo Molnar <mingo@redhat.com>
  M:    Arnaldo Carvalho de Melo <acme@kernel.org>
 +R:    Mark Rutland <mark.rutland@arm.com>
  R:    Alexander Shishkin <alexander.shishkin@linux.intel.com>
  R:    Jiri Olsa <jolsa@redhat.com>
  R:    Namhyung Kim <namhyung@kernel.org>
@@@ -12787,7 -12691,6 +12799,7 @@@ L:   linux-arm-kernel@lists.infradead.or
  L:    linux-gpio@vger.kernel.org
  S:    Supported
  F:    drivers/pinctrl/pinctrl-at91*
 +F:    drivers/gpio/gpio-sama5d2-piobu.c
  
  PIN CONTROLLER - FREESCALE
  M:    Dong Aisheng <aisheng.dong@nxp.com>
@@@ -12884,12 -12787,6 +12896,12 @@@ F: drivers/i2c/busses/i2c-puv3.
  F:    drivers/video/fbdev/fb-puv3.c
  F:    drivers/rtc/rtc-puv3.c
  
 +PLANTOWER PMS7003 AIR POLLUTION SENSOR DRIVER
 +M:    Tomasz Duszynski <tduszyns@gmail.com>
 +S:    Maintained
 +F:    drivers/iio/chemical/pms7003.c
 +F:    Documentation/devicetree/bindings/iio/chemical/plantower,pms7003.yaml
 +
  PMBUS HARDWARE MONITORING DRIVERS
  M:    Guenter Roeck <linux@roeck-us.net>
  L:    linux-hwmon@vger.kernel.org
@@@ -13332,7 -13229,7 +13344,7 @@@ M:   Manish Chopra <manishc@marvell.com
  M:    GR-Linux-NIC-Dev@marvell.com
  L:    netdev@vger.kernel.org
  S:    Supported
 -F:    drivers/net/ethernet/qlogic/qlge/
 +F:    drivers/staging/qlge/
  
  QM1D1B0004 MEDIA DRIVER
  M:    Akihiro Tsukada <tskd08@gmail.com>
@@@ -13400,8 -13297,8 +13412,8 @@@ QUALCOMM CPUFREQ DRIVER MSM8996/APQ809
  M:    Ilia Lin <ilia.lin@kernel.org>
  L:    linux-pm@vger.kernel.org
  S:    Maintained
 -F:    Documentation/devicetree/bindings/opp/kryo-cpufreq.txt
 -F:    drivers/cpufreq/qcom-cpufreq-kryo.c
 +F:    Documentation/devicetree/bindings/opp/qcom-nvmem-cpufreq.txt
 +F:    drivers/cpufreq/qcom-cpufreq-nvmem.c
  
  QUALCOMM EMAC GIGABIT ETHERNET DRIVER
  M:    Timur Tabi <timur@kernel.org>
@@@ -13591,7 -13488,7 +13603,7 @@@ S:   Orpha
  F:    drivers/net/wireless/ray*
  
  RCUTORTURE TEST FRAMEWORK
 -M:    "Paul E. McKenney" <paulmck@linux.ibm.com>
 +M:    "Paul E. McKenney" <paulmck@kernel.org>
  M:    Josh Triplett <josh@joshtriplett.org>
  R:    Steven Rostedt <rostedt@goodmis.org>
  R:    Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
@@@ -13638,7 -13535,7 +13650,7 @@@ F:   arch/x86/include/asm/resctrl_sched.
  F:    Documentation/x86/resctrl*
  
  READ-COPY UPDATE (RCU)
 -M:    "Paul E. McKenney" <paulmck@linux.ibm.com>
 +M:    "Paul E. McKenney" <paulmck@kernel.org>
  M:    Josh Triplett <josh@joshtriplett.org>
  R:    Steven Rostedt <rostedt@goodmis.org>
  R:    Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
@@@ -13796,7 -13693,7 +13808,7 @@@ F:   include/linux/reset-controller.
  RESTARTABLE SEQUENCES SUPPORT
  M:    Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
  M:    Peter Zijlstra <peterz@infradead.org>
 -M:    "Paul E. McKenney" <paulmck@linux.ibm.com>
 +M:    "Paul E. McKenney" <paulmck@kernel.org>
  M:    Boqun Feng <boqun.feng@gmail.com>
  L:    linux-kernel@vger.kernel.org
  S:    Supported
@@@ -13859,8 -13756,7 +13871,8 @@@ F:   include/linux/hid-roccat
  F:    Documentation/ABI/*/sysfs-driver-hid-roccat*
  
  ROCKCHIP RASTER 2D GRAPHIC ACCELERATION UNIT DRIVER
 -M:    Jacob chen <jacob2.chen@rock-chips.com>
 +M:    Jacob Chen <jacob-chen@iotwrt.com>
 +M:    Ezequiel Garcia <ezequiel@collabora.com>
  L:    linux-media@vger.kernel.org
  S:    Maintained
  F:    drivers/media/platform/rockchip/rga/
@@@ -13870,7 -13766,7 +13882,7 @@@ HANTRO VPU CODEC DRIVE
  M:    Ezequiel Garcia <ezequiel@collabora.com>
  L:    linux-media@vger.kernel.org
  S:    Maintained
 -F:    drivers/staging/media/platform/hantro/
 +F:    drivers/staging/media/hantro/
  F:    Documentation/devicetree/bindings/media/rockchip-vpu.txt
  
  ROCKER DRIVER
@@@ -14132,12 -14028,6 +14144,12 @@@ F: drivers/media/common/saa7146
  F:    drivers/media/pci/saa7146/
  F:    include/media/drv-intf/saa7146*
  
 +SAFESETID SECURITY MODULE
 +M:     Micah Morton <mortonm@chromium.org>
 +S:     Supported
 +F:     security/safesetid/
 +F:     Documentation/admin-guide/LSM/SafeSetID.rst
 +
  SAMSUNG AUDIO (ASoC) DRIVERS
  M:    Krzysztof Kozlowski <krzk@kernel.org>
  M:    Sangbeom Kim <sbkim73@samsung.com>
@@@ -14228,8 -14118,6 +14240,8 @@@ M:   Kamil Konieczny <k.konieczny@partner
  L:    linux-crypto@vger.kernel.org
  L:    linux-samsung-soc@vger.kernel.org
  S:    Maintained
 +F:    Documentation/devicetree/bindings/crypto/samsung-slimsss.txt
 +F:    Documentation/devicetree/bindings/crypto/samsung-sss.txt
  F:    drivers/crypto/s5p-sss.c
  
  SAMSUNG S5P/EXYNOS4 SOC SERIES CAMERA SUBSYSTEM DRIVERS
@@@ -14250,8 -14138,6 +14262,8 @@@ T:   git git://git.kernel.org/pub/scm/lin
  F:    drivers/clk/samsung/
  F:    include/dt-bindings/clock/exynos*.h
  F:    Documentation/devicetree/bindings/clock/exynos*.txt
 +F:    Documentation/devicetree/bindings/clock/samsung,s3c*
 +F:    Documentation/devicetree/bindings/clock/samsung,s5p*
  
  SAMSUNG SPI DRIVERS
  M:    Kukjin Kim <kgene@kernel.org>
@@@ -14302,12 -14188,6 +14314,12 @@@ F: drivers/watchdog/sc1200wdt.
  SCHEDULER
  M:    Ingo Molnar <mingo@redhat.com>
  M:    Peter Zijlstra <peterz@infradead.org>
 +M:    Juri Lelli <juri.lelli@redhat.com> (SCHED_DEADLINE)
 +M:    Vincent Guittot <vincent.guittot@linaro.org> (SCHED_NORMAL)
 +R:    Dietmar Eggemann <dietmar.eggemann@arm.com> (SCHED_NORMAL)
 +R:    Steven Rostedt <rostedt@goodmis.org> (SCHED_FIFO/SCHED_RR)
 +R:    Ben Segall <bsegall@google.com> (CONFIG_CFS_BANDWIDTH)
 +R:    Mel Gorman <mgorman@suse.de> (CONFIG_NUMA_BALANCING)
  L:    linux-kernel@vger.kernel.org
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git sched/core
  S:    Maintained
@@@ -14402,7 -14282,7 +14414,7 @@@ F:   net/sctp
  SCx200 CPU SUPPORT
  M:    Jim Cromie <jim.cromie@gmail.com>
  S:    Odd Fixes
 -F:    Documentation/i2c/busses/scx200_acb
 +F:    Documentation/i2c/busses/scx200_acb.rst
  F:    arch/x86/platform/scx200/
  F:    drivers/watchdog/scx200_wdt.c
  F:    drivers/i2c/busses/scx200*
@@@ -14588,7 -14468,6 +14600,7 @@@ F:   drivers/net/phy/phylink.
  F:    drivers/net/phy/sfp*
  F:    include/linux/phylink.h
  F:    include/linux/sfp.h
 +K:    phylink
  
  SGI GRU DRIVER
  M:    Dimitri Sivanich <sivanich@sgi.com>
@@@ -14843,7 -14722,7 +14855,7 @@@ F:   mm/sl?b
  
  SLEEPABLE READ-COPY UPDATE (SRCU)
  M:    Lai Jiangshan <jiangshanlai@gmail.com>
 -M:    "Paul E. McKenney" <paulmck@linux.ibm.com>
 +M:    "Paul E. McKenney" <paulmck@kernel.org>
  M:    Josh Triplett <josh@joshtriplett.org>
  R:    Steven Rostedt <rostedt@goodmis.org>
  R:    Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
@@@ -14994,9 -14873,9 +15006,9 @@@ F:   include/linux/arm_sdei.
  F:    include/uapi/linux/arm_sdei.h
  
  SOFTWARE RAID (Multiple Disks) SUPPORT
 -M:    Shaohua Li <shli@kernel.org>
 +M:    Song Liu <song@kernel.org>
  L:    linux-raid@vger.kernel.org
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/shli/md.git
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/song/md.git
  S:    Supported
  F:    drivers/md/Makefile
  F:    drivers/md/Kconfig
@@@ -15327,6 -15206,13 +15339,6 @@@ M:  H Hartley Sweeten <hsweeten@visionen
  S:    Odd Fixes
  F:    drivers/staging/comedi/
  
 -STAGING - EROFS FILE SYSTEM
 -M:    Gao Xiang <gaoxiang25@huawei.com>
 -M:    Chao Yu <yuchao0@huawei.com>
 -L:    linux-erofs@lists.ozlabs.org
 -S:    Maintained
 -F:    drivers/staging/erofs/
 -
  STAGING - FIELDBUS SUBSYSTEM
  M:    Sven Van Asbroeck <TheSven73@gmail.com>
  S:    Maintained
@@@ -15614,7 -15500,7 +15626,7 @@@ F:   Documentation/devicetree/bindings/gp
  SYNOPSYS DESIGNWARE AXI DMAC DRIVER
  M:    Eugeniy Paltsev <Eugeniy.Paltsev@synopsys.com>
  S:    Maintained
 -F:    drivers/dma/dwi-axi-dmac/
 +F:    drivers/dma/dw-axi-dmac/
  F:    Documentation/devicetree/bindings/dma/snps,dw-axi-dmac.txt
  
  SYNOPSYS DESIGNWARE DMAC DRIVER
@@@ -15671,7 -15557,6 +15683,7 @@@ F:   drivers/clk/clk-sc[mp]i.
  F:    drivers/cpufreq/sc[mp]i-cpufreq.c
  F:    drivers/firmware/arm_scpi.c
  F:    drivers/firmware/arm_scmi/
 +F:    drivers/reset/reset-scmi.c
  F:    include/linux/sc[mp]i_protocol.h
  
  SYSTEM RESET/SHUTDOWN DRIVERS
@@@ -15980,7 -15865,6 +15992,7 @@@ F:   drivers/firmware/ti_sci
  F:    include/linux/soc/ti/ti_sci_protocol.h
  F:    Documentation/devicetree/bindings/soc/ti/sci-pm-domain.txt
  F:    drivers/soc/ti/ti_sci_pm_domains.c
 +F:    include/dt-bindings/soc/ti,sci_pm_domain.h
  F:    Documentation/devicetree/bindings/reset/ti,sci-reset.txt
  F:    Documentation/devicetree/bindings/clock/ti,sci-clk.txt
  F:    drivers/clk/keystone/sci-clk.c
@@@ -16034,7 -15918,7 +16046,7 @@@ M:   Viresh Kumar <viresh.kumar@linaro.or
  M:    Javi Merino <javi.merino@kernel.org>
  L:    linux-pm@vger.kernel.org
  S:    Supported
 -F:    Documentation/thermal/cpu-cooling-api.rst
 +F:    Documentation/driver-api/thermal/cpu-cooling-api.rst
  F:    drivers/thermal/cpu_cooling.c
  F:    include/linux/cpu_cooling.h
  
@@@ -16206,7 -16090,7 +16218,7 @@@ S:   Maintaine
  F:    drivers/net/ethernet/ti/netcp*
  
  TI PCM3060 ASoC CODEC DRIVER
 -M:    Kirill Marinushkin <kmarinushkin@birdec.tech>
 +M:    Kirill Marinushkin <kmarinushkin@birdec.com>
  L:    alsa-devel@alsa-project.org (moderated for non-subscribers)
  S:    Maintained
  F:    Documentation/devicetree/bindings/sound/pcm3060.txt
@@@ -16335,7 -16219,7 +16347,7 @@@ F:   drivers/platform/x86/topstar-laptop.
  
  TORTURE-TEST MODULES
  M:    Davidlohr Bueso <dave@stgolabs.net>
 -M:    "Paul E. McKenney" <paulmck@linux.ibm.com>
 +M:    "Paul E. McKenney" <paulmck@kernel.org>
  M:    Josh Triplett <josh@joshtriplett.org>
  L:    linux-kernel@vger.kernel.org
  S:    Supported
@@@ -16557,7 -16441,7 +16569,7 @@@ F:   drivers/hid/hid-udraw-ps3.
  UFS FILESYSTEM
  M:    Evgeniy Dushistov <dushistov@mail.ru>
  S:    Maintained
 -F:    Documentation/filesystems/ufs.txt
 +F:    Documentation/admin-guide/ufs.rst
  F:    fs/ufs/
  
  UHID USERSPACE HID IO DRIVER:
@@@ -16575,9 -16459,11 +16587,9 @@@ F:  drivers/usb/common/ulpi.
  F:    include/linux/ulpi/
  
  ULTRA-WIDEBAND (UWB) SUBSYSTEM:
 -L:    linux-usb@vger.kernel.org
 -S:    Orphan
 -F:    drivers/uwb/
 -F:    include/linux/uwb.h
 -F:    include/linux/uwb/
 +L:    devel@driverdev.osuosl.org
 +S:    Obsolete
 +F:    drivers/staging/uwb/
  
  UNICODE SUBSYSTEM:
  M:    Gabriel Krisman Bertazi <krisman@collabora.com>
@@@ -17310,7 -17196,6 +17322,7 @@@ M:   "VMware, Inc." <pv-drivers@vmware.co
  L:    virtualization@lists.linux-foundation.org
  S:    Supported
  F:    arch/x86/kernel/cpu/vmware.c
 +F:    arch/x86/include/asm/vmware.h
  
  VMWARE PVRDMA DRIVER
  M:    Adit Ranadive <aditr@vmware.com>
@@@ -17360,7 -17245,6 +17372,7 @@@ F:   Documentation/power/regulator
  F:    drivers/regulator/
  F:    include/dt-bindings/regulator/
  F:    include/linux/regulator/
 +K:    regulator_get_optional
  
  VRF
  M:    David Ahern <dsa@cumulusnetworks.com>
@@@ -17475,7 -17359,7 +17487,7 @@@ M:   linux-wimax@intel.co
  L:    wimax@linuxwimax.org (subscribers-only)
  S:    Supported
  W:    http://linuxwimax.org
 -F:    Documentation/wimax/README.wimax
 +F:    Documentation/admin-guide/wimax/wimax.rst
  F:    include/linux/wimax/debug.h
  F:    include/net/wimax.h
  F:    include/uapi/linux/wimax.h
@@@ -17629,7 -17513,7 +17641,7 @@@ M:   Darren Hart <dvhart@infradead.org
  M:    Andy Shevchenko <andy@infradead.org>
  L:    platform-driver-x86@vger.kernel.org
  T:    git git://git.infradead.org/linux-platform-drivers-x86.git
 -S:    Maintained
 +S:    Odd Fixes
  F:    drivers/platform/x86/
  F:    drivers/platform/olpc/
  
@@@ -17682,6 -17566,7 +17694,6 @@@ M:   Jakub Kicinski <jakub.kicinski@netro
  M:    Jesper Dangaard Brouer <hawk@kernel.org>
  M:    John Fastabend <john.fastabend@gmail.com>
  L:    netdev@vger.kernel.org
 -L:    xdp-newbies@vger.kernel.org
  L:    bpf@vger.kernel.org
  S:    Supported
  F:    net/core/xdp.c
@@@ -17744,7 -17629,7 +17756,7 @@@ F:   Documentation/ABI/testing/sysfs-hype
  
  XEN NETWORK BACKEND DRIVER
  M:    Wei Liu <wei.liu@kernel.org>
 -M:    Paul Durrant <paul.durrant@citrix.com>
 +M:    Paul Durrant <paul@xen.org>
  L:    xen-devel@lists.xenproject.org (moderated for non-subscribers)
  L:    netdev@vger.kernel.org
  S:    Supported
@@@ -17797,7 -17682,8 +17809,7 @@@ F:   include/uapi/linux/dqblk_xfs.
  F:    include/uapi/linux/fsmap.h
  
  XILINX AXI ETHERNET DRIVER
 -M:    Anirudha Sarangi <anirudh@xilinx.com>
 -M:    John Linn <John.Linn@xilinx.com>
 +M:    Radhey Shyam Pandey <radhey.shyam.pandey@xilinx.com>
  S:    Maintained
  F:    drivers/net/ethernet/xilinx/xilinx_axienet*
  
@@@ -17817,17 -17703,6 +17829,17 @@@ F: Documentation/devicetree/bindings/me
  F:    drivers/media/platform/xilinx/
  F:    include/uapi/linux/xilinx-v4l2-controls.h
  
 +XILINX SD-FEC IP CORES
 +M:    Derek Kiernan <derek.kiernan@xilinx.com>
 +M:    Dragan Cvetic <dragan.cvetic@xilinx.com>
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/misc/xlnx,sd-fec.txt
 +F:    Documentation/misc-devices/xilinx_sdfec.rst
 +F:    drivers/misc/xilinx_sdfec.c
 +F:    drivers/misc/Kconfig
 +F:    drivers/misc/Makefile
 +F:    include/uapi/misc/xilinx_sdfec.h
 +
  XILLYBUS DRIVER
  M:    Eli Billauer <eli.billauer@gmail.com>
  L:    linux-kernel@vger.kernel.org
@@@ -17937,6 -17812,14 +17949,6 @@@ S:  Maintaine
  F:    mm/zpool.c
  F:    include/linux/zpool.h
  
 -ZR36067 VIDEO FOR LINUX DRIVER
 -L:    mjpeg-users@lists.sourceforge.net
 -L:    linux-media@vger.kernel.org
 -W:    http://mjpeg.sourceforge.net/driver-zoran/
 -T:    hg https://linuxtv.org/hg/v4l-dvb
 -S:    Odd Fixes
 -F:    drivers/staging/media/zoran/
 -
  ZRAM COMPRESSED RAM BLOCK DEVICE DRVIER
  M:    Minchan Kim <minchan@kernel.org>
  M:    Nitin Gupta <ngupta@vflare.org>
diff --combined fs/Kconfig
@@@ -112,6 -112,8 +112,8 @@@ config MANDATORY_FILE_LOCKIN
  
  source "fs/crypto/Kconfig"
  
+ source "fs/verity/Kconfig"
  source "fs/notify/Kconfig"
  
  source "fs/quota/Kconfig"
@@@ -261,7 -263,6 +263,7 @@@ source "fs/romfs/Kconfig
  source "fs/pstore/Kconfig"
  source "fs/sysv/Kconfig"
  source "fs/ufs/Kconfig"
 +source "fs/erofs/Kconfig"
  
  endif # MISC_FILESYSTEMS
  
diff --combined fs/Makefile
@@@ -34,6 -34,7 +34,7 @@@ obj-$(CONFIG_AIO)               += aio.
  obj-$(CONFIG_IO_URING)                += io_uring.o
  obj-$(CONFIG_FS_DAX)          += dax.o
  obj-$(CONFIG_FS_ENCRYPTION)   += crypto/
+ obj-$(CONFIG_FS_VERITY)               += verity/
  obj-$(CONFIG_FILE_LOCKING)      += locks.o
  obj-$(CONFIG_COMPAT)          += compat.o compat_ioctl.o
  obj-$(CONFIG_BINFMT_AOUT)     += binfmt_aout.o
@@@ -130,4 -131,3 +131,4 @@@ obj-$(CONFIG_F2FS_FS)              += f2fs
  obj-$(CONFIG_CEPH_FS)         += ceph/
  obj-$(CONFIG_PSTORE)          += pstore/
  obj-$(CONFIG_EFIVAR_FS)               += efivarfs/
 +obj-$(CONFIG_EROFS_FS)                += erofs/
diff --combined fs/ext4/inode.c
@@@ -1340,6 -1340,9 +1340,9 @@@ retry_journal
        }
  
        if (ret) {
+               bool extended = (pos + len > inode->i_size) &&
+                               !ext4_verity_in_progress(inode);
                unlock_page(page);
                /*
                 * __block_write_begin may have instantiated a few blocks
                 * Add inode to orphan list in case we crash before
                 * truncate finishes
                 */
-               if (pos + len > inode->i_size && ext4_can_truncate(inode))
+               if (extended && ext4_can_truncate(inode))
                        ext4_orphan_add(handle, inode);
  
                ext4_journal_stop(handle);
-               if (pos + len > inode->i_size) {
+               if (extended) {
                        ext4_truncate_failed_write(inode);
                        /*
                         * If truncate failed early the inode might
@@@ -1406,6 -1409,7 +1409,7 @@@ static int ext4_write_end(struct file *
        int ret = 0, ret2;
        int i_size_changed = 0;
        int inline_data = ext4_has_inline_data(inode);
+       bool verity = ext4_verity_in_progress(inode);
  
        trace_ext4_write_end(inode, pos, len, copied);
        if (inline_data) {
        /*
         * it's important to update i_size while still holding page lock:
         * page writeout could otherwise come in and zero beyond i_size.
+        *
+        * If FS_IOC_ENABLE_VERITY is running on this inode, then Merkle tree
+        * blocks are being written past EOF, so skip the i_size update.
         */
-       i_size_changed = ext4_update_inode_size(inode, pos + copied);
+       if (!verity)
+               i_size_changed = ext4_update_inode_size(inode, pos + copied);
        unlock_page(page);
        put_page(page);
  
-       if (old_size < pos)
+       if (old_size < pos && !verity)
                pagecache_isize_extended(inode, old_size, pos);
        /*
         * Don't mark the inode dirty under page lock. First, it unnecessarily
        if (i_size_changed || inline_data)
                ext4_mark_inode_dirty(handle, inode);
  
-       if (pos + len > inode->i_size && ext4_can_truncate(inode))
+       if (pos + len > inode->i_size && !verity && ext4_can_truncate(inode))
                /* if we have allocated more blocks and copied
                 * less. We will have blocks allocated outside
                 * inode->i_size. So truncate them
@@@ -1450,7 -1458,7 +1458,7 @@@ errout
        if (!ret)
                ret = ret2;
  
-       if (pos + len > inode->i_size) {
+       if (pos + len > inode->i_size && !verity) {
                ext4_truncate_failed_write(inode);
                /*
                 * If truncate failed early the inode might still be
@@@ -1511,6 -1519,7 +1519,7 @@@ static int ext4_journalled_write_end(st
        unsigned from, to;
        int size_changed = 0;
        int inline_data = ext4_has_inline_data(inode);
+       bool verity = ext4_verity_in_progress(inode);
  
        trace_ext4_journalled_write_end(inode, pos, len, copied);
        from = pos & (PAGE_SIZE - 1);
                if (!partial)
                        SetPageUptodate(page);
        }
-       size_changed = ext4_update_inode_size(inode, pos + copied);
+       if (!verity)
+               size_changed = ext4_update_inode_size(inode, pos + copied);
        ext4_set_inode_state(inode, EXT4_STATE_JDATA);
        EXT4_I(inode)->i_datasync_tid = handle->h_transaction->t_tid;
        unlock_page(page);
        put_page(page);
  
-       if (old_size < pos)
+       if (old_size < pos && !verity)
                pagecache_isize_extended(inode, old_size, pos);
  
        if (size_changed || inline_data) {
                        ret = ret2;
        }
  
-       if (pos + len > inode->i_size && ext4_can_truncate(inode))
+       if (pos + len > inode->i_size && !verity && ext4_can_truncate(inode))
                /* if we have allocated more blocks and copied
                 * less. We will have blocks allocated outside
                 * inode->i_size. So truncate them
@@@ -1566,7 -1576,7 +1576,7 @@@ errout
        ret2 = ext4_journal_stop(handle);
        if (!ret)
                ret = ret2;
-       if (pos + len > inode->i_size) {
+       if (pos + len > inode->i_size && !verity) {
                ext4_truncate_failed_write(inode);
                /*
                 * If truncate failed early the inode might still be
@@@ -2162,7 -2172,8 +2172,8 @@@ static int ext4_writepage(struct page *
  
        trace_ext4_writepage(page);
        size = i_size_read(inode);
-       if (page->index == size >> PAGE_SHIFT)
+       if (page->index == size >> PAGE_SHIFT &&
+           !ext4_verity_in_progress(inode))
                len = size & ~PAGE_MASK;
        else
                len = PAGE_SIZE;
@@@ -2246,7 -2257,8 +2257,8 @@@ static int mpage_submit_page(struct mpa
         * after page tables are updated.
         */
        size = i_size_read(mpd->inode);
-       if (page->index == size >> PAGE_SHIFT)
+       if (page->index == size >> PAGE_SHIFT &&
+           !ext4_verity_in_progress(mpd->inode))
                len = size & ~PAGE_MASK;
        else
                len = PAGE_SIZE;
@@@ -2345,6 -2357,9 +2357,9 @@@ static int mpage_process_page_bufs(stru
        ext4_lblk_t blocks = (i_size_read(inode) + i_blocksize(inode) - 1)
                                                        >> inode->i_blkbits;
  
+       if (ext4_verity_in_progress(inode))
+               blocks = EXT_MAX_BLOCKS;
        do {
                BUG_ON(buffer_locked(bh));
  
@@@ -3061,8 -3076,8 +3076,8 @@@ static int ext4_da_write_begin(struct f
  
        index = pos >> PAGE_SHIFT;
  
-       if (ext4_nonda_switch(inode->i_sb) ||
-           S_ISLNK(inode->i_mode)) {
+       if (ext4_nonda_switch(inode->i_sb) || S_ISLNK(inode->i_mode) ||
+           ext4_verity_in_progress(inode)) {
                *fsdata = (void *)FALL_BACK_TO_NONDELALLOC;
                return ext4_write_begin(file, mapping, pos,
                                        len, flags, pagep, fsdata);
@@@ -3897,6 -3912,8 +3912,8 @@@ static ssize_t ext4_direct_IO(struct ki
        if (IS_ENCRYPTED(inode) && S_ISREG(inode->i_mode))
                return 0;
  #endif
+       if (fsverity_active(inode))
+               return 0;
  
        /*
         * If we are doing data journalling we don't support O_DIRECT
@@@ -4586,6 -4603,7 +4603,6 @@@ static int __ext4_get_inode_loc(struct 
        struct buffer_head      *bh;
        struct super_block      *sb = inode->i_sb;
        ext4_fsblk_t            block;
 -      struct blk_plug         plug;
        int                     inodes_per_block, inode_offset;
  
        iloc->bh = NULL;
@@@ -4674,6 -4692,7 +4691,6 @@@ make_io
                 * If we need to do any I/O, try to pre-readahead extra
                 * blocks from the inode table.
                 */
 -              blk_start_plug(&plug);
                if (EXT4_SB(sb)->s_inode_readahead_blks) {
                        ext4_fsblk_t b, end, table;
                        unsigned num;
                get_bh(bh);
                bh->b_end_io = end_buffer_read_sync;
                submit_bh(REQ_OP_READ, REQ_META | REQ_PRIO, bh);
 -              blk_finish_plug(&plug);
                wait_on_buffer(bh);
                if (!buffer_uptodate(bh)) {
                        EXT4_ERROR_INODE_BLOCK(inode, block,
@@@ -4736,6 -4756,8 +4753,8 @@@ static bool ext4_should_use_dax(struct 
                return false;
        if (ext4_test_inode_flag(inode, EXT4_INODE_ENCRYPT))
                return false;
+       if (ext4_test_inode_flag(inode, EXT4_INODE_VERITY))
+               return false;
        return true;
  }
  
@@@ -4760,9 -4782,11 +4779,11 @@@ void ext4_set_inode_flags(struct inode 
                new_fl |= S_ENCRYPTED;
        if (flags & EXT4_CASEFOLD_FL)
                new_fl |= S_CASEFOLD;
+       if (flags & EXT4_VERITY_FL)
+               new_fl |= S_VERITY;
        inode_set_flags(inode, new_fl,
                        S_SYNC|S_APPEND|S_IMMUTABLE|S_NOATIME|S_DIRSYNC|S_DAX|
-                       S_ENCRYPTED|S_CASEFOLD);
+                       S_ENCRYPTED|S_CASEFOLD|S_VERITY);
  }
  
  static blkcnt_t ext4_inode_blocks(struct ext4_inode *raw_inode,
@@@ -5552,6 -5576,10 +5573,10 @@@ int ext4_setattr(struct dentry *dentry
        if (error)
                return error;
  
+       error = fsverity_prepare_setattr(dentry, attr);
+       if (error)
+               return error;
        if (is_quota_modification(inode, attr)) {
                error = dquot_initialize(inode);
                if (error)
diff --combined fs/ext4/ioctl.c
@@@ -1113,35 -1113,8 +1113,35 @@@ resizefs_out
  #endif
        }
        case EXT4_IOC_GET_ENCRYPTION_POLICY:
 +              if (!ext4_has_feature_encrypt(sb))
 +                      return -EOPNOTSUPP;
                return fscrypt_ioctl_get_policy(filp, (void __user *)arg);
  
 +      case FS_IOC_GET_ENCRYPTION_POLICY_EX:
 +              if (!ext4_has_feature_encrypt(sb))
 +                      return -EOPNOTSUPP;
 +              return fscrypt_ioctl_get_policy_ex(filp, (void __user *)arg);
 +
 +      case FS_IOC_ADD_ENCRYPTION_KEY:
 +              if (!ext4_has_feature_encrypt(sb))
 +                      return -EOPNOTSUPP;
 +              return fscrypt_ioctl_add_key(filp, (void __user *)arg);
 +
 +      case FS_IOC_REMOVE_ENCRYPTION_KEY:
 +              if (!ext4_has_feature_encrypt(sb))
 +                      return -EOPNOTSUPP;
 +              return fscrypt_ioctl_remove_key(filp, (void __user *)arg);
 +
 +      case FS_IOC_REMOVE_ENCRYPTION_KEY_ALL_USERS:
 +              if (!ext4_has_feature_encrypt(sb))
 +                      return -EOPNOTSUPP;
 +              return fscrypt_ioctl_remove_key_all_users(filp,
 +                                                        (void __user *)arg);
 +      case FS_IOC_GET_ENCRYPTION_KEY_STATUS:
 +              if (!ext4_has_feature_encrypt(sb))
 +                      return -EOPNOTSUPP;
 +              return fscrypt_ioctl_get_key_status(filp, (void __user *)arg);
 +
        case EXT4_IOC_FSGETXATTR:
        {
                struct fsxattr fa;
        }
        case EXT4_IOC_SHUTDOWN:
                return ext4_shutdown(sb, arg);
+       case FS_IOC_ENABLE_VERITY:
+               if (!ext4_has_feature_verity(sb))
+                       return -EOPNOTSUPP;
+               return fsverity_ioctl_enable(filp, (const void __user *)arg);
+       case FS_IOC_MEASURE_VERITY:
+               if (!ext4_has_feature_verity(sb))
+                       return -EOPNOTSUPP;
+               return fsverity_ioctl_measure(filp, (void __user *)arg);
        default:
                return -ENOTTY;
        }
@@@ -1258,13 -1242,10 +1269,15 @@@ long ext4_compat_ioctl(struct file *fil
        case EXT4_IOC_SET_ENCRYPTION_POLICY:
        case EXT4_IOC_GET_ENCRYPTION_PWSALT:
        case EXT4_IOC_GET_ENCRYPTION_POLICY:
 +      case FS_IOC_GET_ENCRYPTION_POLICY_EX:
 +      case FS_IOC_ADD_ENCRYPTION_KEY:
 +      case FS_IOC_REMOVE_ENCRYPTION_KEY:
 +      case FS_IOC_REMOVE_ENCRYPTION_KEY_ALL_USERS:
 +      case FS_IOC_GET_ENCRYPTION_KEY_STATUS:
        case EXT4_IOC_SHUTDOWN:
        case FS_IOC_GETFSMAP:
+       case FS_IOC_ENABLE_VERITY:
+       case FS_IOC_MEASURE_VERITY:
                break;
        default:
                return -ENOIOCTLCMD;
diff --combined fs/ext4/super.c
@@@ -1107,9 -1107,6 +1107,9 @@@ static int ext4_drop_inode(struct inod
  {
        int drop = generic_drop_inode(inode);
  
 +      if (!drop)
 +              drop = fscrypt_drop_inode(inode);
 +
        trace_ext4_drop_inode(inode, drop);
        return drop;
  }
@@@ -1182,6 -1179,7 +1182,7 @@@ void ext4_clear_inode(struct inode *ino
                EXT4_I(inode)->jinode = NULL;
        }
        fscrypt_put_encryption_info(inode);
+       fsverity_cleanup_inode(inode);
  }
  
  static struct inode *ext4_nfs_get_inode(struct super_block *sb,
@@@ -4275,6 -4273,9 +4276,9 @@@ static int ext4_fill_super(struct super
  #ifdef CONFIG_FS_ENCRYPTION
        sb->s_cop = &ext4_cryptops;
  #endif
+ #ifdef CONFIG_FS_VERITY
+       sb->s_vop = &ext4_verityops;
+ #endif
  #ifdef CONFIG_QUOTA
        sb->dq_op = &ext4_quota_operations;
        if (ext4_has_feature_quota(sb))
@@@ -4422,6 -4423,11 +4426,11 @@@ no_journal
                goto failed_mount_wq;
        }
  
+       if (ext4_has_feature_verity(sb) && blocksize != PAGE_SIZE) {
+               ext4_msg(sb, KERN_ERR, "Unsupported blocksize for fs-verity");
+               goto failed_mount_wq;
+       }
        if (DUMMY_ENCRYPTION_ENABLED(sbi) && !sb_rdonly(sb) &&
            !ext4_has_feature_encrypt(sb)) {
                ext4_set_feature_encrypt(sb);
@@@ -6097,6 -6103,10 +6106,10 @@@ static int __init ext4_init_fs(void
                return err;
  
        err = ext4_init_pending();
+       if (err)
+               goto out7;
+       err = ext4_init_post_read_processing();
        if (err)
                goto out6;
  
@@@ -6138,8 -6148,10 +6151,10 @@@ out3
  out4:
        ext4_exit_pageio();
  out5:
-       ext4_exit_pending();
+       ext4_exit_post_read_processing();
  out6:
+       ext4_exit_pending();
+ out7:
        ext4_exit_es();
  
        return err;
@@@ -6156,6 -6168,7 +6171,7 @@@ static void __exit ext4_exit_fs(void
        ext4_exit_sysfs();
        ext4_exit_system_zone();
        ext4_exit_pageio();
+       ext4_exit_post_read_processing();
        ext4_exit_es();
        ext4_exit_pending();
  }
diff --combined fs/f2fs/file.c
@@@ -493,6 -493,10 +493,10 @@@ static int f2fs_file_open(struct inode 
  {
        int err = fscrypt_file_open(inode, filp);
  
+       if (err)
+               return err;
+       err = fsverity_file_open(inode, filp);
        if (err)
                return err;
  
@@@ -778,6 -782,10 +782,10 @@@ int f2fs_setattr(struct dentry *dentry
        if (err)
                return err;
  
+       err = fsverity_prepare_setattr(dentry, attr);
+       if (err)
+               return err;
        if (is_quota_modification(inode, attr)) {
                err = dquot_initialize(inode);
                if (err)
@@@ -1653,12 -1661,19 +1661,12 @@@ static int f2fs_file_flush(struct file 
  static int f2fs_setflags_common(struct inode *inode, u32 iflags, u32 mask)
  {
        struct f2fs_inode_info *fi = F2FS_I(inode);
 -      u32 oldflags;
  
        /* Is it quota file? Do not allow user to mess with it */
        if (IS_NOQUOTA(inode))
                return -EPERM;
  
 -      oldflags = fi->i_flags;
 -
 -      if ((iflags ^ oldflags) & (F2FS_APPEND_FL | F2FS_IMMUTABLE_FL))
 -              if (!capable(CAP_LINUX_IMMUTABLE))
 -                      return -EPERM;
 -
 -      fi->i_flags = iflags | (oldflags & ~mask);
 +      fi->i_flags = iflags | (fi->i_flags & ~mask);
  
        if (fi->i_flags & F2FS_PROJINHERIT_FL)
                set_inode_flag(inode, FI_PROJ_INHERIT);
@@@ -1705,7 -1720,8 +1713,8 @@@ static const struct 
                FS_PROJINHERIT_FL |     \
                FS_ENCRYPT_FL |         \
                FS_INLINE_DATA_FL |     \
-               FS_NOCOW_FL)
+               FS_NOCOW_FL |           \
+               FS_VERITY_FL)
  
  #define F2FS_SETTABLE_FS_FL (         \
                FS_SYNC_FL |            \
@@@ -1750,6 -1766,8 +1759,8 @@@ static int f2fs_ioc_getflags(struct fil
  
        if (IS_ENCRYPTED(inode))
                fsflags |= FS_ENCRYPT_FL;
+       if (IS_VERITY(inode))
+               fsflags |= FS_VERITY_FL;
        if (f2fs_has_inline_data(inode) || f2fs_has_inline_dentry(inode))
                fsflags |= FS_INLINE_DATA_FL;
        if (is_inode_flag_set(inode, FI_PIN_FILE))
  static int f2fs_ioc_setflags(struct file *filp, unsigned long arg)
  {
        struct inode *inode = file_inode(filp);
 -      u32 fsflags;
 +      struct f2fs_inode_info *fi = F2FS_I(inode);
 +      u32 fsflags, old_fsflags;
        u32 iflags;
        int ret;
  
  
        inode_lock(inode);
  
 +      old_fsflags = f2fs_iflags_to_fsflags(fi->i_flags);
 +      ret = vfs_ioc_setflags_prepare(inode, old_fsflags, fsflags);
 +      if (ret)
 +              goto out;
 +
        ret = f2fs_setflags_common(inode, iflags,
                        f2fs_fsflags_to_iflags(F2FS_SETTABLE_FS_FL));
 +out:
        inode_unlock(inode);
        mnt_drop_write_file(filp);
        return ret;
@@@ -2184,49 -2195,6 +2195,49 @@@ out_err
        return err;
  }
  
 +static int f2fs_ioc_get_encryption_policy_ex(struct file *filp,
 +                                           unsigned long arg)
 +{
 +      if (!f2fs_sb_has_encrypt(F2FS_I_SB(file_inode(filp))))
 +              return -EOPNOTSUPP;
 +
 +      return fscrypt_ioctl_get_policy_ex(filp, (void __user *)arg);
 +}
 +
 +static int f2fs_ioc_add_encryption_key(struct file *filp, unsigned long arg)
 +{
 +      if (!f2fs_sb_has_encrypt(F2FS_I_SB(file_inode(filp))))
 +              return -EOPNOTSUPP;
 +
 +      return fscrypt_ioctl_add_key(filp, (void __user *)arg);
 +}
 +
 +static int f2fs_ioc_remove_encryption_key(struct file *filp, unsigned long arg)
 +{
 +      if (!f2fs_sb_has_encrypt(F2FS_I_SB(file_inode(filp))))
 +              return -EOPNOTSUPP;
 +
 +      return fscrypt_ioctl_remove_key(filp, (void __user *)arg);
 +}
 +
 +static int f2fs_ioc_remove_encryption_key_all_users(struct file *filp,
 +                                                  unsigned long arg)
 +{
 +      if (!f2fs_sb_has_encrypt(F2FS_I_SB(file_inode(filp))))
 +              return -EOPNOTSUPP;
 +
 +      return fscrypt_ioctl_remove_key_all_users(filp, (void __user *)arg);
 +}
 +
 +static int f2fs_ioc_get_encryption_key_status(struct file *filp,
 +                                            unsigned long arg)
 +{
 +      if (!f2fs_sb_has_encrypt(F2FS_I_SB(file_inode(filp))))
 +              return -EOPNOTSUPP;
 +
 +      return fscrypt_ioctl_get_key_status(filp, (void __user *)arg);
 +}
 +
  static int f2fs_ioc_gc(struct file *filp, unsigned long arg)
  {
        struct inode *inode = file_inode(filp);
@@@ -2898,32 -2866,52 +2909,32 @@@ static inline u32 f2fs_xflags_to_iflags
        return iflags;
  }
  
 -static int f2fs_ioc_fsgetxattr(struct file *filp, unsigned long arg)
 +static void f2fs_fill_fsxattr(struct inode *inode, struct fsxattr *fa)
  {
 -      struct inode *inode = file_inode(filp);
        struct f2fs_inode_info *fi = F2FS_I(inode);
 -      struct fsxattr fa;
  
 -      memset(&fa, 0, sizeof(struct fsxattr));
 -      fa.fsx_xflags = f2fs_iflags_to_xflags(fi->i_flags);
 +      simple_fill_fsxattr(fa, f2fs_iflags_to_xflags(fi->i_flags));
  
        if (f2fs_sb_has_project_quota(F2FS_I_SB(inode)))
 -              fa.fsx_projid = (__u32)from_kprojid(&init_user_ns,
 -                                                      fi->i_projid);
 -
 -      if (copy_to_user((struct fsxattr __user *)arg, &fa, sizeof(fa)))
 -              return -EFAULT;
 -      return 0;
 +              fa->fsx_projid = from_kprojid(&init_user_ns, fi->i_projid);
  }
  
 -static int f2fs_ioctl_check_project(struct inode *inode, struct fsxattr *fa)
 +static int f2fs_ioc_fsgetxattr(struct file *filp, unsigned long arg)
  {
 -      /*
 -       * Project Quota ID state is only allowed to change from within the init
 -       * namespace. Enforce that restriction only if we are trying to change
 -       * the quota ID state. Everything else is allowed in user namespaces.
 -       */
 -      if (current_user_ns() == &init_user_ns)
 -              return 0;
 +      struct inode *inode = file_inode(filp);
 +      struct fsxattr fa;
  
 -      if (__kprojid_val(F2FS_I(inode)->i_projid) != fa->fsx_projid)
 -              return -EINVAL;
 -
 -      if (F2FS_I(inode)->i_flags & F2FS_PROJINHERIT_FL) {
 -              if (!(fa->fsx_xflags & FS_XFLAG_PROJINHERIT))
 -                      return -EINVAL;
 -      } else {
 -              if (fa->fsx_xflags & FS_XFLAG_PROJINHERIT)
 -                      return -EINVAL;
 -      }
 +      f2fs_fill_fsxattr(inode, &fa);
  
 +      if (copy_to_user((struct fsxattr __user *)arg, &fa, sizeof(fa)))
 +              return -EFAULT;
        return 0;
  }
  
  static int f2fs_ioc_fssetxattr(struct file *filp, unsigned long arg)
  {
        struct inode *inode = file_inode(filp);
 -      struct fsxattr fa;
 +      struct fsxattr fa, old_fa;
        u32 iflags;
        int err;
  
                return err;
  
        inode_lock(inode);
 -      err = f2fs_ioctl_check_project(inode, &fa);
 +
 +      f2fs_fill_fsxattr(inode, &old_fa);
 +      err = vfs_ioc_fssetxattr_check(inode, &old_fa, &fa);
        if (err)
                goto out;
 +
        err = f2fs_setflags_common(inode, iflags,
                        f2fs_xflags_to_iflags(F2FS_SUPPORTED_XFLAGS));
        if (err)
@@@ -3103,6 -3088,30 +3114,30 @@@ static int f2fs_ioc_resize_fs(struct fi
        return ret;
  }
  
+ static int f2fs_ioc_enable_verity(struct file *filp, unsigned long arg)
+ {
+       struct inode *inode = file_inode(filp);
+       f2fs_update_time(F2FS_I_SB(inode), REQ_TIME);
+       if (!f2fs_sb_has_verity(F2FS_I_SB(inode))) {
+               f2fs_warn(F2FS_I_SB(inode),
+                         "Can't enable fs-verity on inode %lu: the verity feature is not enabled on this filesystem.\n",
+                         inode->i_ino);
+               return -EOPNOTSUPP;
+       }
+       return fsverity_ioctl_enable(filp, (const void __user *)arg);
+ }
+ static int f2fs_ioc_measure_verity(struct file *filp, unsigned long arg)
+ {
+       if (!f2fs_sb_has_verity(F2FS_I_SB(file_inode(filp))))
+               return -EOPNOTSUPP;
+       return fsverity_ioctl_measure(filp, (void __user *)arg);
+ }
  long f2fs_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
  {
        if (unlikely(f2fs_cp_error(F2FS_I_SB(file_inode(filp)))))
                return f2fs_ioc_get_encryption_policy(filp, arg);
        case F2FS_IOC_GET_ENCRYPTION_PWSALT:
                return f2fs_ioc_get_encryption_pwsalt(filp, arg);
 +      case FS_IOC_GET_ENCRYPTION_POLICY_EX:
 +              return f2fs_ioc_get_encryption_policy_ex(filp, arg);
 +      case FS_IOC_ADD_ENCRYPTION_KEY:
 +              return f2fs_ioc_add_encryption_key(filp, arg);
 +      case FS_IOC_REMOVE_ENCRYPTION_KEY:
 +              return f2fs_ioc_remove_encryption_key(filp, arg);
 +      case FS_IOC_REMOVE_ENCRYPTION_KEY_ALL_USERS:
 +              return f2fs_ioc_remove_encryption_key_all_users(filp, arg);
 +      case FS_IOC_GET_ENCRYPTION_KEY_STATUS:
 +              return f2fs_ioc_get_encryption_key_status(filp, arg);
        case F2FS_IOC_GARBAGE_COLLECT:
                return f2fs_ioc_gc(filp, arg);
        case F2FS_IOC_GARBAGE_COLLECT_RANGE:
                return f2fs_ioc_precache_extents(filp, arg);
        case F2FS_IOC_RESIZE_FS:
                return f2fs_ioc_resize_fs(filp, arg);
+       case FS_IOC_ENABLE_VERITY:
+               return f2fs_ioc_enable_verity(filp, arg);
+       case FS_IOC_MEASURE_VERITY:
+               return f2fs_ioc_measure_verity(filp, arg);
        default:
                return -ENOTTY;
        }
@@@ -3272,11 -3275,6 +3311,11 @@@ long f2fs_compat_ioctl(struct file *fil
        case F2FS_IOC_SET_ENCRYPTION_POLICY:
        case F2FS_IOC_GET_ENCRYPTION_PWSALT:
        case F2FS_IOC_GET_ENCRYPTION_POLICY:
 +      case FS_IOC_GET_ENCRYPTION_POLICY_EX:
 +      case FS_IOC_ADD_ENCRYPTION_KEY:
 +      case FS_IOC_REMOVE_ENCRYPTION_KEY:
 +      case FS_IOC_REMOVE_ENCRYPTION_KEY_ALL_USERS:
 +      case FS_IOC_GET_ENCRYPTION_KEY_STATUS:
        case F2FS_IOC_GARBAGE_COLLECT:
        case F2FS_IOC_GARBAGE_COLLECT_RANGE:
        case F2FS_IOC_WRITE_CHECKPOINT:
        case F2FS_IOC_SET_PIN_FILE:
        case F2FS_IOC_PRECACHE_EXTENTS:
        case F2FS_IOC_RESIZE_FS:
+       case FS_IOC_ENABLE_VERITY:
+       case FS_IOC_MEASURE_VERITY:
                break;
        default:
                return -ENOIOCTLCMD;
diff --combined fs/f2fs/super.c
@@@ -913,8 -913,6 +913,8 @@@ static int f2fs_drop_inode(struct inod
                return 0;
        }
        ret = generic_drop_inode(inode);
 +      if (!ret)
 +              ret = fscrypt_drop_inode(inode);
        trace_f2fs_drop_inode(inode, ret);
        return ret;
  }
@@@ -2424,12 -2422,6 +2424,12 @@@ static int sanity_check_raw_super(struc
        size_t crc_offset = 0;
        __u32 crc = 0;
  
 +      if (le32_to_cpu(raw_super->magic) != F2FS_SUPER_MAGIC) {
 +              f2fs_info(sbi, "Magic Mismatch, valid(0x%x) - read(0x%x)",
 +                        F2FS_SUPER_MAGIC, le32_to_cpu(raw_super->magic));
 +              return -EINVAL;
 +      }
 +
        /* Check checksum_offset and crc in superblock */
        if (__F2FS_HAS_FEATURE(raw_super, F2FS_FEATURE_SB_CHKSUM)) {
                crc_offset = le32_to_cpu(raw_super->checksum_offset);
                        offsetof(struct f2fs_super_block, crc)) {
                        f2fs_info(sbi, "Invalid SB checksum offset: %zu",
                                  crc_offset);
 -                      return 1;
 +                      return -EFSCORRUPTED;
                }
                crc = le32_to_cpu(raw_super->crc);
                if (!f2fs_crc_valid(sbi, crc, raw_super, crc_offset)) {
                        f2fs_info(sbi, "Invalid SB checksum value: %u", crc);
 -                      return 1;
 +                      return -EFSCORRUPTED;
                }
        }
  
 -      if (F2FS_SUPER_MAGIC != le32_to_cpu(raw_super->magic)) {
 -              f2fs_info(sbi, "Magic Mismatch, valid(0x%x) - read(0x%x)",
 -                        F2FS_SUPER_MAGIC, le32_to_cpu(raw_super->magic));
 -              return 1;
 -      }
 -
        /* Currently, support only 4KB page cache size */
        if (F2FS_BLKSIZE != PAGE_SIZE) {
                f2fs_info(sbi, "Invalid page_cache_size (%lu), supports only 4KB",
                          PAGE_SIZE);
 -              return 1;
 +              return -EFSCORRUPTED;
        }
  
        /* Currently, support only 4KB block size */
        if (blocksize != F2FS_BLKSIZE) {
                f2fs_info(sbi, "Invalid blocksize (%u), supports only 4KB",
                          blocksize);
 -              return 1;
 +              return -EFSCORRUPTED;
        }
  
        /* check log blocks per segment */
        if (le32_to_cpu(raw_super->log_blocks_per_seg) != 9) {
                f2fs_info(sbi, "Invalid log blocks per segment (%u)",
                          le32_to_cpu(raw_super->log_blocks_per_seg));
 -              return 1;
 +              return -EFSCORRUPTED;
        }
  
        /* Currently, support 512/1024/2048/4096 bytes sector size */
                                F2FS_MIN_LOG_SECTOR_SIZE) {
                f2fs_info(sbi, "Invalid log sectorsize (%u)",
                          le32_to_cpu(raw_super->log_sectorsize));
 -              return 1;
 +              return -EFSCORRUPTED;
        }
        if (le32_to_cpu(raw_super->log_sectors_per_block) +
                le32_to_cpu(raw_super->log_sectorsize) !=
                f2fs_info(sbi, "Invalid log sectors per block(%u) log sectorsize(%u)",
                          le32_to_cpu(raw_super->log_sectors_per_block),
                          le32_to_cpu(raw_super->log_sectorsize));
 -              return 1;
 +              return -EFSCORRUPTED;
        }
  
        segment_count = le32_to_cpu(raw_super->segment_count);
        if (segment_count > F2FS_MAX_SEGMENT ||
                                segment_count < F2FS_MIN_SEGMENTS) {
                f2fs_info(sbi, "Invalid segment count (%u)", segment_count);
 -              return 1;
 +              return -EFSCORRUPTED;
        }
  
        if (total_sections > segment_count ||
                        segs_per_sec > segment_count || !segs_per_sec) {
                f2fs_info(sbi, "Invalid segment/section count (%u, %u x %u)",
                          segment_count, total_sections, segs_per_sec);
 -              return 1;
 +              return -EFSCORRUPTED;
        }
  
        if ((segment_count / segs_per_sec) < total_sections) {
                f2fs_info(sbi, "Small segment_count (%u < %u * %u)",
                          segment_count, segs_per_sec, total_sections);
 -              return 1;
 +              return -EFSCORRUPTED;
        }
  
        if (segment_count > (le64_to_cpu(raw_super->block_count) >> 9)) {
                f2fs_info(sbi, "Wrong segment_count / block_count (%u > %llu)",
                          segment_count, le64_to_cpu(raw_super->block_count));
 -              return 1;
 +              return -EFSCORRUPTED;
        }
  
        if (secs_per_zone > total_sections || !secs_per_zone) {
                f2fs_info(sbi, "Wrong secs_per_zone / total_sections (%u, %u)",
                          secs_per_zone, total_sections);
 -              return 1;
 +              return -EFSCORRUPTED;
        }
        if (le32_to_cpu(raw_super->extension_count) > F2FS_MAX_EXTENSION ||
                        raw_super->hot_ext_count > F2FS_MAX_EXTENSION ||
                          le32_to_cpu(raw_super->extension_count),
                          raw_super->hot_ext_count,
                          F2FS_MAX_EXTENSION);
 -              return 1;
 +              return -EFSCORRUPTED;
        }
  
        if (le32_to_cpu(raw_super->cp_payload) >
                f2fs_info(sbi, "Insane cp_payload (%u > %u)",
                          le32_to_cpu(raw_super->cp_payload),
                          blocks_per_seg - F2FS_CP_PACKS);
 -              return 1;
 +              return -EFSCORRUPTED;
        }
  
        /* check reserved ino info */
                          le32_to_cpu(raw_super->node_ino),
                          le32_to_cpu(raw_super->meta_ino),
                          le32_to_cpu(raw_super->root_ino));
 -              return 1;
 +              return -EFSCORRUPTED;
        }
  
        /* check CP/SIT/NAT/SSA/MAIN_AREA area boundary */
        if (sanity_check_area_boundary(sbi, bh))
 -              return 1;
 +              return -EFSCORRUPTED;
  
        return 0;
  }
@@@ -2872,10 -2870,10 +2872,10 @@@ static int read_raw_super_block(struct 
                }
  
                /* sanity checking of raw super */
 -              if (sanity_check_raw_super(sbi, bh)) {
 +              err = sanity_check_raw_super(sbi, bh);
 +              if (err) {
                        f2fs_err(sbi, "Can't find valid F2FS filesystem in %dth superblock",
                                 block + 1);
 -                      err = -EFSCORRUPTED;
                        brelse(bh);
                        continue;
                }
@@@ -3145,6 -3143,9 +3145,9 @@@ try_onemore
        sb->s_op = &f2fs_sops;
  #ifdef CONFIG_FS_ENCRYPTION
        sb->s_cop = &f2fs_cryptops;
+ #endif
+ #ifdef CONFIG_FS_VERITY
+       sb->s_vop = &f2fs_verityops;
  #endif
        sb->s_xattr = f2fs_xattr_handlers;
        sb->s_export_op = &f2fs_export_ops;
diff --combined include/linux/fs.h
@@@ -64,6 -64,8 +64,8 @@@ struct workqueue_struct
  struct iov_iter;
  struct fscrypt_info;
  struct fscrypt_operations;
+ struct fsverity_info;
+ struct fsverity_operations;
  struct fs_context;
  struct fs_parameter_description;
  
@@@ -723,6 -725,10 +725,10 @@@ struct inode 
        struct fscrypt_info     *i_crypt_info;
  #endif
  
+ #ifdef CONFIG_FS_VERITY
+       struct fsverity_info    *i_verity_info;
+ #endif
        void                    *i_private; /* fs or device private pointer */
  } __randomize_layout;
  
@@@ -1427,7 -1433,9 +1433,10 @@@ struct super_block 
        const struct xattr_handler **s_xattr;
  #ifdef CONFIG_FS_ENCRYPTION
        const struct fscrypt_operations *s_cop;
 +      struct key              *s_master_keys; /* master crypto keys in use */
+ #endif
+ #ifdef CONFIG_FS_VERITY
+       const struct fsverity_operations *s_vop;
  #endif
        struct hlist_bl_head    s_roots;        /* alternate root dentries for NFS */
        struct list_head        s_mounts;       /* list of mounts; _not_ for fs use */
@@@ -1966,6 -1974,7 +1975,7 @@@ struct super_operations 
  #endif
  #define S_ENCRYPTED   16384   /* Encrypted file (using fs/crypto/) */
  #define S_CASEFOLD    32768   /* Casefolded file */
+ #define S_VERITY      65536   /* Verity file (using fs/verity/) */
  
  /*
   * Note that nosuid etc flags are inode-specific: setting some file-system
@@@ -2007,6 -2016,7 +2017,7 @@@ static inline bool sb_rdonly(const stru
  #define IS_DAX(inode)         ((inode)->i_flags & S_DAX)
  #define IS_ENCRYPTED(inode)   ((inode)->i_flags & S_ENCRYPTED)
  #define IS_CASEFOLDED(inode)  ((inode)->i_flags & S_CASEFOLD)
+ #define IS_VERITY(inode)      ((inode)->i_flags & S_VERITY)
  
  #define IS_WHITEOUT(inode)    (S_ISCHR(inode->i_mode) && \
                                 (inode)->i_rdev == WHITEOUT_DEV)
@@@ -2599,12 -2609,6 +2610,12 @@@ extern struct block_device *blkdev_get_
                                               void *holder);
  extern struct block_device *blkdev_get_by_dev(dev_t dev, fmode_t mode,
                                              void *holder);
 +extern struct block_device *bd_start_claiming(struct block_device *bdev,
 +                                            void *holder);
 +extern void bd_finish_claiming(struct block_device *bdev,
 +                             struct block_device *whole, void *holder);
 +extern void bd_abort_claiming(struct block_device *bdev,
 +                            struct block_device *whole, void *holder);
  extern void blkdev_put(struct block_device *bdev, fmode_t mode);
  extern int __blkdev_reread_part(struct block_device *bdev);
  extern int blkdev_reread_part(struct block_device *bdev);
diff --combined include/uapi/linux/fs.h
@@@ -13,9 -13,6 +13,9 @@@
  #include <linux/limits.h>
  #include <linux/ioctl.h>
  #include <linux/types.h>
 +#ifndef __KERNEL__
 +#include <linux/fscrypt.h>
 +#endif
  
  /* Use of MS_* flags within the kernel is restricted to core mount(2) code. */
  #if !defined(__KERNEL__)
@@@ -215,6 -212,57 +215,6 @@@ struct fsxattr 
  #define FS_IOC_GETFSLABEL             _IOR(0x94, 49, char[FSLABEL_MAX])
  #define FS_IOC_SETFSLABEL             _IOW(0x94, 50, char[FSLABEL_MAX])
  
 -/*
 - * File system encryption support
 - */
 -/* Policy provided via an ioctl on the topmost directory */
 -#define FS_KEY_DESCRIPTOR_SIZE        8
 -
 -#define FS_POLICY_FLAGS_PAD_4         0x00
 -#define FS_POLICY_FLAGS_PAD_8         0x01
 -#define FS_POLICY_FLAGS_PAD_16                0x02
 -#define FS_POLICY_FLAGS_PAD_32                0x03
 -#define FS_POLICY_FLAGS_PAD_MASK      0x03
 -#define FS_POLICY_FLAG_DIRECT_KEY     0x04    /* use master key directly */
 -#define FS_POLICY_FLAGS_VALID         0x07
 -
 -/* Encryption algorithms */
 -#define FS_ENCRYPTION_MODE_INVALID            0
 -#define FS_ENCRYPTION_MODE_AES_256_XTS                1
 -#define FS_ENCRYPTION_MODE_AES_256_GCM                2
 -#define FS_ENCRYPTION_MODE_AES_256_CBC                3
 -#define FS_ENCRYPTION_MODE_AES_256_CTS                4
 -#define FS_ENCRYPTION_MODE_AES_128_CBC                5
 -#define FS_ENCRYPTION_MODE_AES_128_CTS                6
 -#define FS_ENCRYPTION_MODE_SPECK128_256_XTS   7 /* Removed, do not use. */
 -#define FS_ENCRYPTION_MODE_SPECK128_256_CTS   8 /* Removed, do not use. */
 -#define FS_ENCRYPTION_MODE_ADIANTUM           9
 -
 -struct fscrypt_policy {
 -      __u8 version;
 -      __u8 contents_encryption_mode;
 -      __u8 filenames_encryption_mode;
 -      __u8 flags;
 -      __u8 master_key_descriptor[FS_KEY_DESCRIPTOR_SIZE];
 -};
 -
 -#define FS_IOC_SET_ENCRYPTION_POLICY  _IOR('f', 19, struct fscrypt_policy)
 -#define FS_IOC_GET_ENCRYPTION_PWSALT  _IOW('f', 20, __u8[16])
 -#define FS_IOC_GET_ENCRYPTION_POLICY  _IOW('f', 21, struct fscrypt_policy)
 -
 -/* Parameters for passing an encryption key into the kernel keyring */
 -#define FS_KEY_DESC_PREFIX            "fscrypt:"
 -#define FS_KEY_DESC_PREFIX_SIZE               8
 -
 -/* Structure that userspace passes to the kernel keyring */
 -#define FS_MAX_KEY_SIZE                       64
 -
 -struct fscrypt_key {
 -      __u32 mode;
 -      __u8 raw[FS_MAX_KEY_SIZE];
 -      __u32 size;
 -};
 -
  /*
   * Inode flags (FS_IOC_GETFLAGS / FS_IOC_SETFLAGS)
   *
  #define FS_TOPDIR_FL                  0x00020000 /* Top of directory hierarchies*/
  #define FS_HUGE_FILE_FL                       0x00040000 /* Reserved for ext4 */
  #define FS_EXTENT_FL                  0x00080000 /* Extents */
+ #define FS_VERITY_FL                  0x00100000 /* Verity protected inode */
  #define FS_EA_INODE_FL                        0x00200000 /* Inode used for large EA */
  #define FS_EOFBLOCKS_FL                       0x00400000 /* Reserved for ext4 */
  #define FS_NOCOW_FL                   0x00800000 /* Do not cow file */