]> Git Repo - linux.git/commitdiff
Merge tag 'for-6.7/dm-changes' of git://git.kernel.org/pub/scm/linux/kernel/git/devic...
authorLinus Torvalds <[email protected]>
Wed, 1 Nov 2023 22:55:54 +0000 (12:55 -1000)
committerLinus Torvalds <[email protected]>
Wed, 1 Nov 2023 22:55:54 +0000 (12:55 -1000)
Pull device mapper updates from Mike Snitzer:

 - Update DM core to directly call the map function for both the linear
   and stripe targets; which are provided by DM core

 - Various updates to use new safer string functions

 - Update DM core to respect REQ_NOWAIT flag in normal bios so that
   memory allocations are always attempted with GFP_NOWAIT

 - Add Mikulas Patocka to MAINTAINERS as a DM maintainer!

 - Improve DM delay target's handling of short delays (< 50ms) by using
   a kthread to check expiration of IOs rather than timers and a wq

 - Update the DM error target so that it works with zoned storage. This
   helps xfstests to provide proper IO error handling coverage when
   testing a filesystem with native zoned storage support

 - Update both DM crypt and integrity targets to improve performance by
   using crypto_shash_digest() rather than init+update+final sequence

 - Fix DM crypt target by backfilling missing memory allocation
   accounting for compound pages

* tag 'for-6.7/dm-changes' of git://git.kernel.org/pub/scm/linux/kernel/git/device-mapper/linux-dm:
  dm crypt: account large pages in cc->n_allocated_pages
  dm integrity: use crypto_shash_digest() in sb_mac()
  dm crypt: use crypto_shash_digest() in crypt_iv_tcw_whitening()
  dm error: Add support for zoned block devices
  dm delay: for short delays, use kthread instead of timers and wq
  MAINTAINERS: add Mikulas Patocka as a DM maintainer
  dm: respect REQ_NOWAIT flag in normal bios issued to DM
  dm: enhance alloc_multiple_bios() to be more versatile
  dm: make __send_duplicate_bios return unsigned int
  dm log userspace: replace deprecated strncpy with strscpy
  dm ioctl: replace deprecated strncpy with strscpy_pad
  dm crypt: replace open-coded kmemdup_nul
  dm cache metadata: replace deprecated strncpy with strscpy
  dm: shortcut the calls to linear_map and stripe_map

1  2 
MAINTAINERS
drivers/md/dm-crypt.c
drivers/md/dm-stripe.c
drivers/md/dm.c

diff --combined MAINTAINERS
index ca67fd0ed5bf78685e3bd9d31722082eeb8a1125,ce3f9099bf2383dd28c4c7e5b2017721424fc83c..9e9b36732b1b0ee11da663754713d1c6a7d68b4d
@@@ -378,9 -378,8 +378,9 @@@ F: drivers/acpi/viot.
  F:    include/linux/acpi_viot.h
  
  ACPI WMI DRIVER
 +M:    Armin Wolf <[email protected]>
  L:    [email protected]
 -S:    Orphan
 +S:    Maintained
  F:    Documentation/driver-api/wmi.rst
  F:    Documentation/wmi/
  F:    drivers/platform/x86/wmi.c
@@@ -471,6 -470,7 +471,6 @@@ F: drivers/hwmon/adm1029.
  ADM8211 WIRELESS DRIVER
  L:    [email protected]
  S:    Orphan
 -W:    https://wireless.wiki.kernel.org/
  F:    drivers/net/wireless/admtek/adm8211.*
  
  ADP1653 FLASH CONTROLLER DRIVER
@@@ -1460,6 -1460,7 +1460,6 @@@ F:      drivers/hwmon/applesmc.
  APPLETALK NETWORK LAYER
  L:    [email protected]
  S:    Odd fixes
 -F:    drivers/net/appletalk/
  F:    include/linux/atalk.h
  F:    include/uapi/linux/atalk.h
  F:    net/appletalk/
@@@ -1584,17 -1585,6 +1584,17 @@@ F:    arch/arm/include/asm/arch_timer.
  F:    arch/arm64/include/asm/arch_timer.h
  F:    drivers/clocksource/arm_arch_timer.c
  
 +ARM GENERIC INTERRUPT CONTROLLER DRIVERS
 +M:    Marc Zyngier <[email protected]>
 +L:    [email protected] (moderated for non-subscribers)
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/interrupt-controller/arm,gic*
 +F:    arch/arm/include/asm/arch_gicv3.h
 +F:    arch/arm64/include/asm/arch_gicv3.h
 +F:    drivers/irqchip/irq-gic*.[ch]
 +F:    include/linux/irqchip/arm-gic*.h
 +F:    include/linux/irqchip/arm-vgic-info.h
 +
  ARM HDLCD DRM DRIVER
  M:    Liviu Dudau <[email protected]>
  S:    Supported
@@@ -1636,13 -1626,13 +1636,13 @@@ F:   drivers/gpu/drm/arm/display/include
  F:    drivers/gpu/drm/arm/display/komeda/
  
  ARM MALI PANFROST DRM DRIVER
 +M:    Boris Brezillon <[email protected]>
  M:    Rob Herring <[email protected]>
 -M:    Tomeu Vizoso <[email protected]>
  R:    Steven Price <[email protected]>
 -R:    Alyssa Rosenzweig <[email protected]>
  L:    [email protected]
  S:    Supported
  T:    git git://anongit.freedesktop.org/drm/drm-misc
 +F:    Documentation/gpu/panfrost.rst
  F:    drivers/gpu/drm/panfrost/
  F:    include/uapi/drm/panfrost_drm.h
  
@@@ -1672,7 -1662,7 +1672,7 @@@ F:      arch/arm*/include/asm/perf_event.
  F:    arch/arm*/kernel/hw_breakpoint.c
  F:    arch/arm*/kernel/perf_*
  F:    drivers/perf/
 -F:    include/linux/perf/arm_pmu.h
 +F:    include/linux/perf/arm_pmu*.h
  
  ARM PORT
  M:    Russell King <[email protected]>
@@@ -1973,12 -1963,12 +1973,12 @@@ F:   drivers/irqchip/irq-aspeed-i2c-ic.
  
  ARM/ASPEED MACHINE SUPPORT
  M:    Joel Stanley <[email protected]>
 -R:    Andrew Jeffery <andrew@aj.id.au>
 +R:    Andrew Jeffery <andrew@codeconstruct.com.au>
  L:    [email protected] (moderated for non-subscribers)
  L:    [email protected] (moderated for non-subscribers)
  S:    Supported
  Q:    https://patchwork.ozlabs.org/project/linux-aspeed/list/
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/joel/aspeed.git
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/joel/bmc.git
  F:    Documentation/devicetree/bindings/arm/aspeed/
  F:    arch/arm/boot/dts/aspeed/
  F:    arch/arm/mach-aspeed/
@@@ -2221,28 -2211,21 +2221,28 @@@ F:   arch/arm/boot/dts/ti/omap/omap3-igep
  ARM/INTEL IXP4XX ARM ARCHITECTURE
  M:    Linus Walleij <[email protected]>
  M:    Imre Kaloz <[email protected]>
 -M:    Krzysztof Halasa <[email protected]>
  L:    [email protected] (moderated for non-subscribers)
  S:    Maintained
  F:    Documentation/devicetree/bindings/arm/intel-ixp4xx.yaml
 -F:    Documentation/devicetree/bindings/gpio/intel,ixp4xx-gpio.txt
 +F:    Documentation/devicetree/bindings/gpio/intel,ixp4xx-gpio.yaml
  F:    Documentation/devicetree/bindings/interrupt-controller/intel,ixp4xx-interrupt.yaml
  F:    Documentation/devicetree/bindings/memory-controllers/intel,ixp4xx-expansion*
 +F:    Documentation/devicetree/bindings/rng/intel,ixp46x-rng.yaml
  F:    Documentation/devicetree/bindings/timer/intel,ixp4xx-timer.yaml
  F:    arch/arm/boot/dts/intel/ixp/
  F:    arch/arm/mach-ixp4xx/
  F:    drivers/bus/intel-ixp4xx-eb.c
 +F:    drivers/char/hw_random/ixp4xx-rng.c
  F:    drivers/clocksource/timer-ixp4xx.c
  F:    drivers/crypto/intel/ixp4xx/ixp4xx_crypto.c
  F:    drivers/gpio/gpio-ixp4xx.c
  F:    drivers/irqchip/irq-ixp4xx.c
 +F:    drivers/net/ethernet/xscale/ixp4xx_eth.c
 +F:    drivers/net/wan/ixp4xx_hss.c
 +F:    drivers/soc/ixp4xx/ixp4xx-npe.c
 +F:    drivers/soc/ixp4xx/ixp4xx-qmgr.c
 +F:    include/linux/soc/ixp4xx/npe.h
 +F:    include/linux/soc/ixp4xx/qmgr.h
  
  ARM/INTEL KEEMBAY ARCHITECTURE
  M:    Paul J. Murphy <[email protected]>
@@@ -2344,7 -2327,7 +2344,7 @@@ F:      drivers/rtc/rtc-mt7622.
  
  ARM/Mediatek SoC support
  M:    Matthias Brugger <[email protected]>
 -R:    AngeloGioacchino Del Regno <[email protected]>
 +M:    AngeloGioacchino Del Regno <[email protected]>
  L:    [email protected]
  L:    [email protected] (moderated for non-subscribers)
  L:    [email protected] (moderated for non-subscribers)
@@@ -3075,7 -3058,7 +3075,7 @@@ F:      Documentation/devicetree/bindings/pe
  F:    drivers/peci/controller/peci-aspeed.c
  
  ASPEED PINCTRL DRIVERS
 -M:    Andrew Jeffery <andrew@aj.id.au>
 +M:    Andrew Jeffery <andrew@codeconstruct.com.au>
  L:    [email protected] (moderated for non-subscribers)
  L:    [email protected] (moderated for non-subscribers)
  L:    [email protected]
@@@ -3092,7 -3075,7 +3092,7 @@@ F:      drivers/irqchip/irq-aspeed-scu-ic.
  F:    include/dt-bindings/interrupt-controller/aspeed-scu-ic.h
  
  ASPEED SD/MMC DRIVER
 -M:    Andrew Jeffery <andrew@aj.id.au>
 +M:    Andrew Jeffery <andrew@codeconstruct.com.au>
  L:    [email protected] (moderated for non-subscribers)
  L:    [email protected] (moderated for non-subscribers)
  L:    [email protected]
@@@ -3361,7 -3344,7 +3361,7 @@@ AX.25 NETWORK LAYE
  M:    Ralf Baechle <[email protected]>
  L:    [email protected]
  S:    Maintained
 -W:    http://www.linux-ax25.org/
 +W:    https://linux-ax25.in-berlin.de
  F:    include/net/ax25.h
  F:    include/uapi/linux/ax25.h
  F:    net/ax25/
@@@ -3481,14 -3464,6 +3481,14 @@@ W:    http://bcache.evilpiepirate.or
  C:    irc://irc.oftc.net/bcache
  F:    drivers/md/bcache/
  
 +BCACHEFS
 +M:    Kent Overstreet <[email protected]>
 +R:    Brian Foster <[email protected]>
 +L:    [email protected]
 +S:    Supported
 +C:    irc://irc.oftc.net/bcache
 +F:    fs/bcachefs/
 +
  BDISP ST MEDIA DRIVER
  M:    Fabien Dessenne <[email protected]>
  L:    [email protected]
@@@ -3621,10 -3596,9 +3621,10 @@@ F:    Documentation/devicetree/bindings/ii
  F:    drivers/iio/accel/bma400*
  
  BPF JIT for ARM
 -M:    Shubham Bansal <[email protected]>
 +M:    Russell King <[email protected]>
 +M:    Puranjay Mohan <[email protected]>
  L:    [email protected]
 -S:    Odd Fixes
 +S:    Maintained
  F:    arch/arm/net/
  
  BPF JIT for ARM64
  S:    Odd Fixes
  K:    (?:\b|_)bpf(?:\b|_)
  
 +BPF [NETKIT] (BPF-programmable network device)
 +M:    Daniel Borkmann <[email protected]>
 +M:    Nikolay Aleksandrov <[email protected]>
 +L:    [email protected]
 +L:    [email protected]
 +S:    Supported
 +F:    drivers/net/netkit.c
 +F:    include/net/netkit.h
 +
  BPF [NETWORKING] (struct_ops, reuseport)
  M:    Martin KaFai Lau <[email protected]>
  L:    [email protected]
@@@ -4117,7 -4082,7 +4117,7 @@@ F:      drivers/net/wireless/broadcom/brcm80
  
  BROADCOM BRCMSTB GPIO DRIVER
  M:    Doug Berger <[email protected]>
 -M:    Florian Fainelli <florian.fainelli@broadcom>
 +M:    Florian Fainelli <florian.fainelli@broadcom.com>
  R:    Broadcom internal kernel review list <[email protected]>
  S:    Supported
  F:    Documentation/devicetree/bindings/gpio/brcm,brcmstb-gpio.yaml
@@@ -4355,7 -4320,8 +4355,7 @@@ F:      drivers/net/ethernet/broadcom/bcmsys
  F:    drivers/net/ethernet/broadcom/unimac.h
  
  BROADCOM TG3 GIGABIT ETHERNET DRIVER
 -M:    Siva Reddy Kallam <[email protected]>
 -M:    Prashant Sreedharan <[email protected]>
 +M:    Pavan Chebbi <[email protected]>
  M:    Michael Chan <[email protected]>
  L:    [email protected]
  S:    Supported
@@@ -4828,13 -4794,6 +4828,13 @@@ X:    drivers/char/ipmi
  X:    drivers/char/random.c
  X:    drivers/char/tpm/
  
 +CHARGERLAB POWER-Z HARDWARE MONITOR DRIVER
 +M:    Thomas Weißschuh <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    Documentation/hwmon/powerz.rst
 +F:    drivers/hwmon/powerz.c
 +
  CHECKPATCH
  M:    Andy Whitcroft <[email protected]>
  M:    Joe Perches <[email protected]>
@@@ -5091,14 -5050,6 +5091,14 @@@ T:    git git://git.kernel.org/pub/scm/lin
  F:    Documentation/devicetree/bindings/timer/
  F:    drivers/clocksource/
  
 +CLOSURES
 +M:    Kent Overstreet <[email protected]>
 +L:    [email protected]
 +S:    Supported
 +C:    irc://irc.oftc.net/bcache
 +F:    include/linux/closure.h
 +F:    lib/closure.c
 +
  CMPC ACPI DRIVER
  M:    Thadeu Lima de Souza Cascardo <[email protected]>
  M:    Daniel Oliveira Nascimento <[email protected]>
@@@ -5358,6 -5309,12 +5358,6 @@@ M:     Bence Csókás <[email protected]
  S:    Maintained
  F:    drivers/i2c/busses/i2c-cp2615.c
  
 -CPMAC ETHERNET DRIVER
 -M:    Florian Fainelli <[email protected]>
 -L:    [email protected]
 -S:    Maintained
 -F:    drivers/net/ethernet/ti/cpmac.c
 -
  CPU FREQUENCY DRIVERS - VEXPRESS SPC ARM BIG LITTLE
  M:    Viresh Kumar <[email protected]>
  M:    Sudeep Holla <[email protected]>
@@@ -6028,6 -5985,7 +6028,7 @@@ F:      include/linux/devm-helpers.
  DEVICE-MAPPER  (LVM)
  M:    Alasdair Kergon <[email protected]>
  M:    Mike Snitzer <[email protected]>
+ M:    Mikulas Patocka <[email protected]>
  M:    [email protected]
  L:    [email protected]
  S:    Maintained
@@@ -6175,7 -6133,6 +6176,7 @@@ L:      [email protected] (mode
  S:    Maintained
  T:    git git://anongit.freedesktop.org/drm/drm-misc
  F:    Documentation/driver-api/dma-buf.rst
 +F:    Documentation/userspace-api/dma-buf-alloc-exchange.rst
  F:    drivers/dma-buf/
  F:    include/linux/*fence.h
  F:    include/linux/dma-buf.h
@@@ -6378,17 -6335,6 +6379,17 @@@ F:    Documentation/networking/device_driv
  F:    drivers/net/ethernet/freescale/dpaa2/dpaa2-switch*
  F:    drivers/net/ethernet/freescale/dpaa2/dpsw*
  
 +DPLL SUBSYSTEM
 +M:    Vadim Fedorenko <[email protected]>
 +M:    Arkadiusz Kubalewski <[email protected]>
 +M:    Jiri Pirko <[email protected]>
 +L:    [email protected]
 +S:    Supported
 +F:    Documentation/driver-api/dpll.rst
 +F:    drivers/dpll/*
 +F:    include/linux/dpll.h
 +F:    include/uapi/linux/dpll.h
 +
  DRBD DRIVER
  M:    Philipp Reisner <[email protected]>
  M:    Lars Ellenberg <[email protected]>
@@@ -6668,7 -6614,6 +6669,7 @@@ S:      Maintaine
  B:    https://gitlab.freedesktop.org/drm/msm/-/issues
  T:    git https://gitlab.freedesktop.org/drm/msm.git
  F:    Documentation/devicetree/bindings/display/msm/
 +F:    drivers/gpu/drm/ci/xfails/msm*
  F:    drivers/gpu/drm/msm/
  F:    include/uapi/drm/msm_drm.h
  
@@@ -6701,9 -6646,9 +6702,9 @@@ F:      Documentation/devicetree/bindings/di
  F:    drivers/gpu/drm/panel/panel-novatek-nt36672a.c
  
  DRM DRIVER FOR NVIDIA GEFORCE/QUADRO GPUS
 -M:    Ben Skeggs <[email protected]>
  M:    Karol Herbst <[email protected]>
  M:    Lyude Paul <[email protected]>
 +M:    Danilo Krummrich <[email protected]>
  L:    [email protected]
  L:    [email protected]
  S:    Supported
@@@ -6804,7 -6749,7 +6805,7 @@@ F:      drivers/gpu/drm/panel/panel-sitronix
  DRM DRIVER FOR SITRONIX ST7703 PANELS
  M:    Guido Günther <[email protected]>
  R:    Purism Kernel Team <[email protected]>
 -R:    Ondrej Jirman <meg[email protected]>
 +R:    Ondrej Jirman <meg[email protected]>
  S:    Maintained
  F:    Documentation/devicetree/bindings/display/panel/rocktech,jh057n00900.yaml
  F:    drivers/gpu/drm/panel/panel-sitronix-st7703.c
@@@ -6820,8 -6765,7 +6821,8 @@@ DRM DRIVER FOR SOLOMON SSD130X OLED DIS
  M:    Javier Martinez Canillas <[email protected]>
  S:    Maintained
  T:    git git://anongit.freedesktop.org/drm/drm-misc
 -F:    Documentation/devicetree/bindings/display/solomon,ssd1307fb.yaml
 +F:    Documentation/devicetree/bindings/display/solomon,ssd-common.yaml
 +F:    Documentation/devicetree/bindings/display/solomon,ssd13*.yaml
  F:    drivers/gpu/drm/solomon/ssd130x*
  
  DRM DRIVER FOR ST-ERICSSON MCDE
@@@ -6916,26 -6860,12 +6917,26 @@@ M:   Thomas Zimmermann <tzimmermann@suse.
  S:    Maintained
  W:    https://01.org/linuxgraphics/gfx-docs/maintainer-tools/drm-misc.html
  T:    git git://anongit.freedesktop.org/drm/drm-misc
 +F:    Documentation/devicetree/bindings/display/
 +F:    Documentation/devicetree/bindings/gpu/
  F:    Documentation/gpu/
 -F:    drivers/gpu/drm/*
 +F:    drivers/gpu/drm/
  F:    drivers/gpu/vga/
 -F:    include/drm/drm*
 +F:    include/drm/drm
  F:    include/linux/vga*
 -F:    include/uapi/drm/drm*
 +F:    include/uapi/drm/
 +X:    drivers/gpu/drm/amd/
 +X:    drivers/gpu/drm/armada/
 +X:    drivers/gpu/drm/etnaviv/
 +X:    drivers/gpu/drm/exynos/
 +X:    drivers/gpu/drm/i915/
 +X:    drivers/gpu/drm/kmb/
 +X:    drivers/gpu/drm/mediatek/
 +X:    drivers/gpu/drm/msm/
 +X:    drivers/gpu/drm/nouveau/
 +X:    drivers/gpu/drm/radeon/
 +X:    drivers/gpu/drm/renesas/
 +X:    drivers/gpu/drm/tegra/
  
  DRM DRIVERS FOR ALLWINNER A10
  M:    Maxime Ripard <[email protected]>
@@@ -6956,7 -6886,6 +6957,7 @@@ T:      git git://anongit.freedesktop.org/dr
  F:    Documentation/devicetree/bindings/display/amlogic,meson-dw-hdmi.yaml
  F:    Documentation/devicetree/bindings/display/amlogic,meson-vpu.yaml
  F:    Documentation/gpu/meson.rst
 +F:    drivers/gpu/drm/ci/xfails/meson*
  F:    drivers/gpu/drm/meson/
  
  DRM DRIVERS FOR ATMEL HLCDC
@@@ -6980,9 -6909,7 +6981,9 @@@ T:      git git://anongit.freedesktop.org/dr
  F:    Documentation/devicetree/bindings/display/bridge/
  F:    drivers/gpu/drm/bridge/
  F:    drivers/gpu/drm/drm_bridge.c
 +F:    drivers/gpu/drm/drm_bridge_connector.c
  F:    include/drm/drm_bridge.h
 +F:    include/drm/drm_bridge_connector.h
  
  DRM DRIVERS FOR EXYNOS
  M:    Inki Dae <[email protected]>
@@@ -7006,12 -6933,10 +7007,12 @@@ F:   Documentation/devicetree/bindings/di
  F:    Documentation/devicetree/bindings/display/fsl,tcon.txt
  F:    drivers/gpu/drm/fsl-dcu/
  
 -DRM DRIVERS FOR FREESCALE IMX
 +DRM DRIVERS FOR FREESCALE IMX 5/6
  M:    Philipp Zabel <[email protected]>
  L:    [email protected]
  S:    Maintained
 +T:    git git://anongit.freedesktop.org/drm/drm-misc
 +T:    git git://git.pengutronix.de/git/pza/linux
  F:    Documentation/devicetree/bindings/display/imx/
  F:    drivers/gpu/drm/imx/ipuv3/
  F:    drivers/gpu/ipu-v3/
@@@ -7030,7 -6955,7 +7031,7 @@@ DRM DRIVERS FOR GMA500 (Poulsbo, Moores
  M:    Patrik Jakobsson <[email protected]>
  L:    [email protected]
  S:    Maintained
 -T:    git git://github.com/patjak/drm-gma500
 +T:    git git://anongit.freedesktop.org/drm/drm-misc
  F:    drivers/gpu/drm/gma500/
  
  DRM DRIVERS FOR HISILICON
@@@ -7069,7 -6994,6 +7070,7 @@@ L:      [email protected]
  L:    [email protected] (moderated for non-subscribers)
  S:    Supported
  F:    Documentation/devicetree/bindings/display/mediatek/
 +F:    drivers/gpu/drm/ci/xfails/mediatek*
  F:    drivers/gpu/drm/mediatek/
  F:    drivers/phy/mediatek/phy-mtk-dp.c
  F:    drivers/phy/mediatek/phy-mtk-hdmi*
@@@ -7110,7 -7034,6 +7111,7 @@@ L:      [email protected]
  S:    Maintained
  T:    git git://anongit.freedesktop.org/drm/drm-misc
  F:    Documentation/devicetree/bindings/display/rockchip/
 +F:    drivers/gpu/drm/ci/xfails/rockchip*
  F:    drivers/gpu/drm/rockchip/
  
  DRM DRIVERS FOR STI
@@@ -7207,7 -7130,7 +7208,7 @@@ F:      Documentation/devicetree/bindings/di
  F:    drivers/gpu/drm/xlnx/
  
  DRM GPU SCHEDULER
 -M:    Luben Tuikov <luben.tuikov@amd.com>
 +M:    Luben Tuikov <ltuikov89@gmail.com>
  L:    [email protected]
  S:    Maintained
  T:    git git://anongit.freedesktop.org/drm/drm-misc
@@@ -7216,7 -7139,6 +7217,7 @@@ F:      include/drm/gpu_scheduler.
  
  DRM PANEL DRIVERS
  M:    Neil Armstrong <[email protected]>
 +R:    Jessica Zhang <[email protected]>
  R:    Sam Ravnborg <[email protected]>
  L:    [email protected]
  S:    Maintained
@@@ -8172,7 -8094,7 +8173,7 @@@ F:      include/linux/arm_ffa.
  
  FIRMWARE LOADER (request_firmware)
  M:    Luis Chamberlain <[email protected]>
 -M:    Russ Weight <russ[email protected]>
 +M:    Russ Weight <russ[email protected]>
  L:    [email protected]
  S:    Maintained
  F:    Documentation/firmware_class/
@@@ -8694,8 -8616,6 +8695,8 @@@ L:      [email protected]
  S:    Maintained
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux.git for-next/hardening
  F:    Documentation/kbuild/gcc-plugins.rst
 +F:    include/linux/stackleak.h
 +F:    kernel/stackleak.c
  F:    scripts/Makefile.gcc-plugins
  F:    scripts/gcc-plugins/
  
@@@ -8811,13 -8731,6 +8812,13 @@@ S:    Supporte
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/ulfh/linux-pm.git
  F:    drivers/pmdomain/
  
 +GENERIC RADIX TREE
 +M:    Kent Overstreet <[email protected]>
 +S:    Supported
 +C:    irc://irc.oftc.net/bcache
 +F:    include/linux/generic-radix-tree.h
 +F:    lib/generic-radix-tree.c
 +
  GENERIC RESISTIVE TOUCHSCREEN ADC DRIVER
  M:    Eugen Hristev <[email protected]>
  L:    [email protected]
@@@ -8962,7 -8875,7 +8963,7 @@@ F:      drivers/gpio/gpio-mockup.
  F:    tools/testing/selftests/gpio/
  
  GPIO REGMAP
 -R:    Michael Walle <[email protected]>
 +M:    Michael Walle <[email protected]>
  S:    Maintained
  F:    drivers/gpio/gpio-regmap.c
  F:    include/linux/gpio/regmap.h
@@@ -9154,7 -9067,6 +9155,7 @@@ T:      git https://git.kernel.org/pub/scm/l
  F:    Documentation/ABI/testing/debugfs-driver-habanalabs
  F:    Documentation/ABI/testing/sysfs-driver-habanalabs
  F:    drivers/accel/habanalabs/
 +F:    include/linux/habanalabs/
  F:    include/trace/events/habanalabs.h
  F:    include/uapi/drm/habanalabs_accel.h
  
@@@ -9620,8 -9532,10 +9621,8 @@@ F:     Documentation/devicetree/bindings/ii
  F:    drivers/iio/pressure/mprls0025pa.c
  
  HOST AP DRIVER
 -M:    Jouni Malinen <[email protected]>
  L:    [email protected]
  S:    Obsolete
 -W:    http://w1.fi/hostap-driver.html
  F:    drivers/net/wireless/intersil/hostap/
  
  HP BIOSCFG DRIVER
@@@ -10522,6 -10436,7 +10523,6 @@@ F:   drivers/platform/x86/intel/atomisp2/
  
  INTEL BIOS SAR INT1092 DRIVER
  M:    Shravan Sudhakar <[email protected]>
 -M:    Intel Corporation <[email protected]>
  L:    [email protected]
  S:    Maintained
  F:    drivers/platform/x86/intel/int1092/
@@@ -10561,7 -10476,6 +10562,7 @@@ C:   irc://irc.oftc.net/intel-gf
  T:    git git://anongit.freedesktop.org/drm-intel
  F:    Documentation/ABI/testing/sysfs-driver-intel-i915-hwmon
  F:    Documentation/gpu/i915.rst
 +F:    drivers/gpu/drm/ci/xfails/i915*
  F:    drivers/gpu/drm/i915/
  F:    include/drm/i915*
  F:    include/uapi/drm/i915_drm.h
  S:    Maintained
  F:    drivers/crypto/intel/ixp4xx/ixp4xx_crypto.c
  
 -INTEL IXP4XX QMGR, NPE, ETHERNET and HSS SUPPORT
 -M:    Krzysztof Halasa <[email protected]>
 -S:    Maintained
 -F:    drivers/net/ethernet/xscale/ixp4xx_eth.c
 -F:    drivers/net/wan/ixp4xx_hss.c
 -F:    drivers/soc/ixp4xx/ixp4xx-npe.c
 -F:    drivers/soc/ixp4xx/ixp4xx-qmgr.c
 -F:    include/linux/soc/ixp4xx/npe.h
 -F:    include/linux/soc/ixp4xx/qmgr.h
 -
 -INTEL IXP4XX RANDOM NUMBER GENERATOR SUPPORT
 -M:    Deepak Saxena <[email protected]>
 -S:    Maintained
 -F:    Documentation/devicetree/bindings/rng/intel,ixp46x-rng.yaml
 -F:    drivers/char/hw_random/ixp4xx-rng.c
 -
  INTEL KEEM BAY DRM DRIVER
  M:    Anitha Chrisanthus <[email protected]>
  M:    Edmund Dea <[email protected]>
@@@ -10772,7 -10702,7 +10773,7 @@@ F:   drivers/mfd/intel-m10-bmc
  F:    include/linux/mfd/intel-m10-bmc.h
  
  INTEL MAX10 BMC SECURE UPDATES
 -M:    Russ Weight <russell.h.weight@intel.com>
 +M:    Peter Colberg <peter.colberg@intel.com>
  L:    [email protected]
  S:    Maintained
  F:    Documentation/ABI/testing/sysfs-driver-intel-m10-bmc-sec-update
@@@ -10952,6 -10882,7 +10953,6 @@@ F:   drivers/platform/x86/intel/wmi/thund
  
  INTEL WWAN IOSM DRIVER
  M:    M Chetan Kumar <[email protected]>
 -M:    Intel Corporation <[email protected]>
  L:    [email protected]
  S:    Maintained
  F:    drivers/net/wwan/iosm/
@@@ -11133,7 -11064,7 +11134,7 @@@ F:   Documentation/devicetree/bindings/so
  F:    sound/soc/codecs/sma*
  
  IRQ DOMAINS (IRQ NUMBER MAPPING LIBRARY)
 -M:    Marc Zyngier <[email protected]>
 +M:    Thomas Gleixner <[email protected]>
  S:    Maintained
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git irq/core
  F:    Documentation/core-api/irq/irq-domain.rst
@@@ -11152,6 -11083,7 +11153,6 @@@ F:   lib/group_cpus.
  
  IRQCHIP DRIVERS
  M:    Thomas Gleixner <[email protected]>
 -M:    Marc Zyngier <[email protected]>
  L:    [email protected]
  S:    Maintained
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git irq/core
@@@ -11462,20 -11394,16 +11463,20 @@@ F:        usr
  
  KERNEL HARDENING (not covered by other areas)
  M:    Kees Cook <[email protected]>
 +R:    Gustavo A. R. Silva <[email protected]>
  L:    [email protected]
  S:    Supported
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux.git for-next/hardening
  F:    Documentation/ABI/testing/sysfs-kernel-oops_count
  F:    Documentation/ABI/testing/sysfs-kernel-warn_count
 +F:    arch/*/configs/hardening.config
  F:    include/linux/overflow.h
  F:    include/linux/randomize_kstack.h
 +F:    kernel/configs/hardening.config
  F:    mm/usercopy.c
  K:    \b(add|choose)_random_kstack_offset\b
  K:    \b__check_(object_size|heap_object)\b
 +K:    \b__counted_by\b
  
  KERNEL JANITORS
  L:    [email protected]
@@@ -12525,14 -12453,6 +12526,14 @@@ F: drivers/hwmon/ltc2947-i2c.
  F:    drivers/hwmon/ltc2947-spi.c
  F:    drivers/hwmon/ltc2947.h
  
 +LTC2991 HARDWARE MONITOR DRIVER
 +M:    Antoniu Miclaus <[email protected]>
 +L:    [email protected]
 +S:    Supported
 +W:    https://ez.analog.com/linux-software-drivers
 +F:    Documentation/devicetree/bindings/hwmon/adi,ltc2991.yaml
 +F:    drivers/hwmon/ltc2991.c
 +
  LTC2983 IIO TEMPERATURE DRIVER
  M:    Nuno Sá <[email protected]>
  L:    [email protected]
@@@ -13584,6 -13504,7 +13585,6 @@@ F:   net/dsa/tag_mtk.
  
  MEDIATEK T7XX 5G WWAN MODEM DRIVER
  M:    Chandrashekar Devegowda <[email protected]>
 -M:    Intel Corporation <[email protected]>
  R:    Chiranjeevi Rapolu <[email protected]>
  R:    Liu Haijun <[email protected]>
  R:    M Chetan Kumar <[email protected]>
@@@ -13604,7 -13525,7 +13605,7 @@@ F:   drivers/usb/mtu3
  
  MEGACHIPS STDPXXXX-GE-B850V3-FW LVDS/DP++ BRIDGES
  M:    Peter Senna Tschudin <[email protected]>
 -M:    Martin Donnelly <martin.donnell[email protected]>
 +M:    Ian Ray <ian.ra[email protected]>
  M:    Martyn Welch <[email protected]>
  S:    Maintained
  F:    Documentation/devicetree/bindings/display/bridge/megachips-stdpxxxx-ge-b850v3-fw.txt
@@@ -13696,7 -13617,6 +13697,7 @@@ F:   drivers/net/ethernet/mellanox/mlxfw
  
  MELLANOX HARDWARE PLATFORM SUPPORT
  M:    Hans de Goede <[email protected]>
 +M:    Ilpo Järvinen <[email protected]>
  M:    Mark Gross <[email protected]>
  M:    Vadim Pasternak <[email protected]>
  L:    [email protected]
@@@ -13927,10 -13847,9 +13928,10 @@@ F: Documentation/devicetree/bindings/me
  F:    drivers/staging/media/meson/vdec/
  
  METHODE UDPU SUPPORT
 -M:    Vladimir Vid <vladimir.vid@sartura.hr>
 +M:    Robert Marko <robert.marko@sartura.hr>
  S:    Maintained
 -F:    arch/arm64/boot/dts/marvell/armada-3720-uDPU.dts
 +F:    arch/arm64/boot/dts/marvell/armada-3720-eDPU.dts
 +F:    arch/arm64/boot/dts/marvell/armada-3720-uDPU.*
  
  MHI BUS
  M:    Manivannan Sadhasivam <[email protected]>
@@@ -14292,7 -14211,6 +14293,7 @@@ F:   drivers/platform/surface/surface_gpe
  
  MICROSOFT SURFACE HARDWARE PLATFORM SUPPORT
  M:    Hans de Goede <[email protected]>
 +M:    Ilpo Järvinen <[email protected]>
  M:    Mark Gross <[email protected]>
  M:    Maximilian Luz <[email protected]>
  L:    [email protected]
@@@ -14428,11 -14346,9 +14429,11 @@@ MIPS/LOONGSON1 ARCHITECTUR
  M:    Keguang Zhang <[email protected]>
  L:    [email protected]
  S:    Maintained
 +F:    Documentation/devicetree/bindings/*/loongson,ls1*.yaml
  F:    arch/mips/include/asm/mach-loongson32/
  F:    arch/mips/loongson32/
  F:    drivers/*/*loongson1*
 +F:    drivers/net/ethernet/stmicro/stmmac/dwmac-loongson1.c
  
  MIPS/LOONGSON2EF ARCHITECTURE
  M:    Jiaxun Yang <[email protected]>
@@@ -14460,11 -14376,6 +14461,11 @@@ W: https://linuxtv.or
  T:    git git://linuxtv.org/media_tree.git
  F:    drivers/media/radio/radio-miropcm20*
  
 +MITSUMI MM8013 FG DRIVER
 +M:    Konrad Dybcio <[email protected]>
 +F:    Documentation/devicetree/bindings/power/supply/mitsumi,mm8013.yaml
 +F:    drivers/power/supply/mm8013.c
 +
  MMP SUPPORT
  R:    Lubomir Rintel <[email protected]>
  L:    [email protected] (moderated for non-subscribers)
@@@ -14846,7 -14757,7 +14847,7 @@@ NETROM NETWORK LAYE
  M:    Ralf Baechle <[email protected]>
  L:    [email protected]
  S:    Maintained
 -W:    http://www.linux-ax25.org/
 +W:    https://linux-ax25.in-berlin.de
  F:    include/net/netrom.h
  F:    include/uapi/linux/netrom.h
  F:    net/netrom/
@@@ -15035,7 -14946,7 +15036,7 @@@ K:   macse
  K:    \bmdo_
  
  NETWORKING [MPTCP]
 -M:    Matthieu Baerts <matt[email protected]>
 +M:    Matthieu Baerts <matt[email protected]>
  M:    Mat Martineau <[email protected]>
  L:    [email protected]
  L:    [email protected]
@@@ -15044,11 -14955,10 +15045,11 @@@ W:        https://github.com/multipath-tcp/mpt
  B:    https://github.com/multipath-tcp/mptcp_net-next/issues
  T:    git https://github.com/multipath-tcp/mptcp_net-next.git export-net
  T:    git https://github.com/multipath-tcp/mptcp_net-next.git export
 +F:    Documentation/netlink/specs/mptcp.yaml
  F:    Documentation/networking/mptcp-sysctl.rst
  F:    include/net/mptcp.h
  F:    include/trace/events/mptcp.h
 -F:    include/uapi/linux/mptcp.h
 +F:    include/uapi/linux/mptcp*.h
  F:    net/mptcp/
  F:    tools/testing/selftests/bpf/*/*mptcp*.c
  F:    tools/testing/selftests/net/mptcp/
@@@ -15221,7 -15131,7 +15222,7 @@@ NOLIBC HEADER FIL
  M:    Willy Tarreau <[email protected]>
  M:    Thomas Weißschuh <[email protected]>
  S:    Maintained
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/wtarreau/nolibc.git
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/nolibc/linux-nolibc.git
  F:    tools/include/nolibc/
  F:    tools/testing/selftests/nolibc/
  
@@@ -15441,7 -15351,6 +15442,7 @@@ M:   Laurentiu Palcu <laurentiu.palcu@oss
  R:    Lucas Stach <[email protected]>
  L:    [email protected]
  S:    Maintained
 +T:    git git://anongit.freedesktop.org/drm/drm-misc
  F:    Documentation/devicetree/bindings/display/imx/nxp,imx8mq-dcss.yaml
  F:    drivers/gpu/drm/imx/dcss/
  
@@@ -16062,7 -15971,6 +16063,7 @@@ F:   Documentation/ABI/testing/sysfs-firm
  F:    drivers/of/
  F:    include/linux/of*.h
  F:    scripts/dtc/
 +F:    tools/testing/selftests/dt/
  K:    of_overlay_notifier_
  K:    of_overlay_fdt_apply
  K:    of_overlay_remove
@@@ -17693,7 -17601,6 +17694,7 @@@ M:   Kalle Valo <[email protected]
  M:    Jeff Johnson <[email protected]>
  L:    [email protected]
  S:    Supported
 +W:    https://wireless.wiki.kernel.org/en/users/Drivers/ath12k
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git
  F:    drivers/net/wireless/ath/ath12k/
  
@@@ -17955,7 -17862,6 +17956,7 @@@ C:   irc://irc.oftc.net/radeo
  T:    git https://gitlab.freedesktop.org/agd5f/linux.git
  F:    Documentation/gpu/amdgpu/
  F:    drivers/gpu/drm/amd/
 +F:    drivers/gpu/drm/ci/xfails/amd*
  F:    drivers/gpu/drm/radeon/
  F:    include/uapi/drm/amdgpu_drm.h
  F:    include/uapi/drm/radeon_drm.h
@@@ -18020,6 -17926,7 +18021,6 @@@ F:   arch/mips/boot/dts/ralink/mt7621
  
  RALINK RT2X00 WIRELESS LAN DRIVER
  M:    Stanislaw Gruszka <[email protected]>
 -M:    Helmut Schaa <[email protected]>
  L:    [email protected]
  S:    Maintained
  F:    drivers/net/wireless/ralink/rt2x00/
@@@ -18224,6 -18131,8 +18225,6 @@@ REALTEK WIRELESS DRIVER (rtlwifi family
  M:    Ping-Ke Shih <[email protected]>
  L:    [email protected]
  S:    Maintained
 -W:    https://wireless.wiki.kernel.org/
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-testing.git
  F:    drivers/net/wireless/realtek/rtlwifi/
  
  REALTEK WIRELESS DRIVER (rtw88)
@@@ -18699,7 -18608,7 +18700,7 @@@ ROSE NETWORK LAYE
  M:    Ralf Baechle <[email protected]>
  L:    [email protected]
  S:    Maintained
 -W:    http://www.linux-ax25.org/
 +W:    https://linux-ax25.in-berlin.de
  F:    include/net/rose.h
  F:    include/uapi/linux/rose.h
  F:    net/rose/
@@@ -18751,6 -18660,7 +18752,6 @@@ F:   drivers/media/dvb-frontends/rtl2832_
  RTL8180 WIRELESS DRIVER
  L:    [email protected]
  S:    Orphan
 -W:    https://wireless.wiki.kernel.org/
  F:    drivers/net/wireless/realtek/rtl818x/rtl8180/
  
  RTL8187 WIRELESS DRIVER
@@@ -18758,12 -18668,14 +18759,12 @@@ M:        Hin-Tak Leung <[email protected]
  M:    Larry Finger <[email protected]>
  L:    [email protected]
  S:    Maintained
 -W:    https://wireless.wiki.kernel.org/
  F:    drivers/net/wireless/realtek/rtl818x/rtl8187/
  
  RTL8XXXU WIRELESS DRIVER (rtl8xxxu)
  M:    Jes Sorensen <[email protected]>
  L:    [email protected]
  S:    Maintained
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/jes/linux.git rtl8xxxu-devel
  F:    drivers/net/wireless/realtek/rtl8xxxu/
  
  RTRS TRANSPORT DRIVERS
@@@ -18796,10 -18708,9 +18797,10 @@@ R: Andreas Hindborg <a.hindborg@samsung
  R:    Alice Ryhl <[email protected]>
  L:    [email protected]
  S:    Supported
 -W:    https://github.com/Rust-for-Linux/linux
 +W:    https://rust-for-linux.com
  B:    https://github.com/Rust-for-Linux/linux/issues
  C:    zulip://rust-for-linux.zulipchat.com
 +P:    https://rust-for-linux.com/contributing
  T:    git https://github.com/Rust-for-Linux/linux.git rust-next
  F:    Documentation/rust/
  F:    rust/
@@@ -19491,7 -19402,6 +19492,7 @@@ F:   drivers/net/ethernet/sfc
  
  SFCTEMP HWMON DRIVER
  M:    Emil Renner Berthing <[email protected]>
 +M:    Hal Feng <[email protected]>
  L:    [email protected]
  S:    Maintained
  F:    Documentation/devicetree/bindings/hwmon/starfive,jh71x0-temp.yaml
@@@ -20579,7 -20489,6 +20580,7 @@@ F:   include/dt-bindings/clock/starfive?j
  STARFIVE JH71X0 PINCTRL DRIVERS
  M:    Emil Renner Berthing <[email protected]>
  M:    Jianlong Huang <[email protected]>
 +M:    Hal Feng <[email protected]>
  L:    [email protected]
  S:    Maintained
  F:    Documentation/devicetree/bindings/pinctrl/starfive,jh71*.yaml
@@@ -21453,8 -21362,8 +21454,8 @@@ F:   drivers/media/radio/radio-raremono.
  THERMAL
  M:    Rafael J. Wysocki <[email protected]>
  M:    Daniel Lezcano <[email protected]>
 -R:    Amit Kucheria <[email protected]>
  R:    Zhang Rui <[email protected]>
 +R:    Lukasz Luba <[email protected]>
  L:    [email protected]
  S:    Supported
  Q:    https://patchwork.kernel.org/project/linux-pm/list/
  S:    Orphan
  W:    https://wireless.wiki.kernel.org/en/users/Drivers/wl12xx
  W:    https://wireless.wiki.kernel.org/en/users/Drivers/wl1251
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/luca/wl12xx.git
  F:    drivers/net/wireless/ti/
  
  TIMEKEEPING, CLOCKSOURCE CORE, NTP, ALARMTIMER
  L:    [email protected]
  S:    Maintained
  T:    git git://anongit.freedesktop.org/drm/drm-misc
 +F:    drivers/gpu/drm/ci/xfails/virtio*
  F:    drivers/gpu/drm/virtio/
  F:    include/uapi/linux/virtio_gpu.h
  
@@@ -23130,7 -23039,7 +23131,7 @@@ F:   drivers/scsi/vmw_pvscsi.
  F:    drivers/scsi/vmw_pvscsi.h
  
  VMWARE VIRTUAL PTP CLOCK DRIVER
 -M:    Deep Shah <sdeep@vmware.com>
 +M:    Jeff Sipek <jsipek@vmware.com>
  R:    Ajay Kaher <[email protected]>
  R:    Alexey Makhalov <[email protected]>
  R:    VMware PV-Drivers Reviewers <[email protected]>
@@@ -23515,11 -23424,9 +23516,11 @@@ F: drivers/platform/x86/x86-android-tab
  
  X86 PLATFORM DRIVERS
  M:    Hans de Goede <[email protected]>
 +M:    Ilpo Järvinen <[email protected]>
  M:    Mark Gross <[email protected]>
  L:    [email protected]
  S:    Maintained
 +Q:    https://patchwork.kernel.org/project/platform-driver-x86/list/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/pdx86/platform-drivers-x86.git
  F:    drivers/platform/olpc/
  F:    drivers/platform/x86/
@@@ -23777,11 -23684,6 +23778,11 @@@ F: Documentation/devicetree/bindings/gp
  F:    drivers/gpio/gpio-xilinx.c
  F:    drivers/gpio/gpio-zynq.c
  
 +XILINX LL TEMAC ETHERNET DRIVER
 +L:    [email protected]
 +S:    Orphan
 +F:    drivers/net/ethernet/xilinx/ll_temac*
 +
  XILINX PWM DRIVER
  M:    Sean Anderson <[email protected]>
  S:    Maintained
@@@ -23814,13 -23716,6 +23815,13 @@@ F: Documentation/devicetree/bindings/me
  F:    drivers/media/platform/xilinx/
  F:    include/uapi/linux/xilinx-v4l2-controls.h
  
 +XILINX VERSAL EDAC DRIVER
 +M:    Shubhrajyoti Datta <[email protected]>
 +M:    Sai Krishna Potthuri <[email protected]>
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/memory-controllers/xlnx,versal-ddrmc-edac.yaml
 +F:    drivers/edac/versal_edac.c
 +
  XILINX WATCHDOG DRIVER
  M:    Srinivas Neeli <[email protected]>
  R:    Shubhrajyoti Datta <[email protected]>
diff --combined drivers/md/dm-crypt.c
index be32a290c90acd0a5ca428c8f301326851fdb897,37dcc113baa10063b73fdd87a749848dee6d747c..6de107aff331947910dc3478510a9c4fa05e341d
@@@ -224,7 -224,7 +224,7 @@@ struct crypt_config 
        struct mutex bio_alloc_lock;
  
        u8 *authenc_key; /* space for keys in authenc() format (if used) */
 -      u8 key[];
 +      u8 key[] __counted_by(key_size);
  };
  
  #define MIN_IOS               64
@@@ -652,13 -652,7 +652,7 @@@ static int crypt_iv_tcw_whitening(struc
        /* calculate crc32 for every 32bit part and xor it */
        desc->tfm = tcw->crc32_tfm;
        for (i = 0; i < 4; i++) {
-               r = crypto_shash_init(desc);
-               if (r)
-                       goto out;
-               r = crypto_shash_update(desc, &buf[i * 4], 4);
-               if (r)
-                       goto out;
-               r = crypto_shash_final(desc, &buf[i * 4]);
+               r = crypto_shash_digest(desc, &buf[i * 4], 4, &buf[i * 4]);
                if (r)
                        goto out;
        }
@@@ -753,8 -747,7 +747,8 @@@ static int crypt_iv_eboiv_gen(struct cr
        int err;
        u8 *buf;
  
 -      reqsize = ALIGN(crypto_skcipher_reqsize(tfm), __alignof__(__le64));
 +      reqsize = sizeof(*req) + crypto_skcipher_reqsize(tfm);
 +      reqsize = ALIGN(reqsize, __alignof__(__le64));
  
        req = kmalloc(reqsize + cc->iv_size, GFP_NOIO);
        if (!req)
@@@ -1699,11 -1692,17 +1693,17 @@@ retry
                order = min(order, remaining_order);
  
                while (order > 0) {
+                       if (unlikely(percpu_counter_read_positive(&cc->n_allocated_pages) +
+                                       (1 << order) > dm_crypt_pages_per_client))
+                               goto decrease_order;
                        pages = alloc_pages(gfp_mask
                                | __GFP_NOMEMALLOC | __GFP_NORETRY | __GFP_NOWARN | __GFP_COMP,
                                order);
-                       if (likely(pages != NULL))
+                       if (likely(pages != NULL)) {
+                               percpu_counter_add(&cc->n_allocated_pages, 1 << order);
                                goto have_pages;
+                       }
+ decrease_order:
                        order--;
                }
  
@@@ -1741,10 -1740,13 +1741,13 @@@ static void crypt_free_buffer_pages(str
  
        if (clone->bi_vcnt > 0) { /* bio_for_each_folio_all crashes with an empty bio */
                bio_for_each_folio_all(fi, clone) {
-                       if (folio_test_large(fi.folio))
+                       if (folio_test_large(fi.folio)) {
+                               percpu_counter_sub(&cc->n_allocated_pages,
+                                               1 << folio_order(fi.folio));
                                folio_put(fi.folio);
-                       else
+                       } else {
                                mempool_free(&fi.folio->page, &cc->page_pool);
+                       }
                }
        }
  }
@@@ -2859,10 -2861,9 +2862,9 @@@ static int crypt_ctr_auth_cipher(struc
        if (!start || !end || ++start > end)
                return -EINVAL;
  
-       mac_alg = kzalloc(end - start + 1, GFP_KERNEL);
+       mac_alg = kmemdup_nul(start, end - start, GFP_KERNEL);
        if (!mac_alg)
                return -ENOMEM;
-       strncpy(mac_alg, start, end - start);
  
        mac = crypto_alloc_ahash(mac_alg, 0, CRYPTO_ALG_ALLOCATES_MEMORY);
        kfree(mac_alg);
diff --combined drivers/md/dm-stripe.c
index 5e70f5ae394d0bd63e98ed9302946a574dac129c,c11619d82a7e1bd367fd0d74a9c16f388d1f5030..16b93ae51d964d8268e01eaa493684a6a70d18a3
@@@ -44,7 -44,7 +44,7 @@@ struct stripe_c 
        /* Work struct used for triggering events*/
        struct work_struct trigger_event;
  
 -      struct stripe stripe[];
 +      struct stripe stripe[] __counted_by(stripes);
  };
  
  /*
@@@ -268,7 -268,7 +268,7 @@@ static int stripe_map_range(struct stri
        return DM_MAPIO_SUBMITTED;
  }
  
static int stripe_map(struct dm_target *ti, struct bio *bio)
+ int stripe_map(struct dm_target *ti, struct bio *bio)
  {
        struct stripe_c *sc = ti->private;
        uint32_t stripe;
diff --combined drivers/md/dm.c
index f7212e8fc27f0fe317097219298530f19ce9b8bb,0dd8ddf40006b947a5a62c7bfd7b8ca091cb2b63..23c32cd1f1d8864cf5b664cecd610aa7a91e8e36
@@@ -570,13 -570,15 +570,15 @@@ static void dm_end_io_acct(struct dm_i
        dm_io_acct(io, true);
  }
  
- static struct dm_io *alloc_io(struct mapped_device *md, struct bio *bio)
+ static struct dm_io *alloc_io(struct mapped_device *md, struct bio *bio, gfp_t gfp_mask)
  {
        struct dm_io *io;
        struct dm_target_io *tio;
        struct bio *clone;
  
-       clone = bio_alloc_clone(NULL, bio, GFP_NOIO, &md->mempools->io_bs);
+       clone = bio_alloc_clone(NULL, bio, gfp_mask, &md->mempools->io_bs);
+       if (unlikely(!clone))
+               return NULL;
        tio = clone_to_tio(clone);
        tio->flags = 0;
        dm_tio_set_flag(tio, DM_TIO_INSIDE_DM_IO);
@@@ -724,7 -726,7 +726,7 @@@ static struct table_device *open_table_
                dev_t dev, blk_mode_t mode)
  {
        struct table_device *td;
 -      struct block_device *bdev;
 +      struct bdev_handle *bdev_handle;
        u64 part_off;
        int r;
  
                return ERR_PTR(-ENOMEM);
        refcount_set(&td->count, 1);
  
 -      bdev = blkdev_get_by_dev(dev, mode, _dm_claim_ptr, NULL);
 -      if (IS_ERR(bdev)) {
 -              r = PTR_ERR(bdev);
 +      bdev_handle = bdev_open_by_dev(dev, mode, _dm_claim_ptr, NULL);
 +      if (IS_ERR(bdev_handle)) {
 +              r = PTR_ERR(bdev_handle);
                goto out_free_td;
        }
  
         * called.
         */
        if (md->disk->slave_dir) {
 -              r = bd_link_disk_holder(bdev, md->disk);
 +              r = bd_link_disk_holder(bdev_handle->bdev, md->disk);
                if (r)
                        goto out_blkdev_put;
        }
  
        td->dm_dev.mode = mode;
 -      td->dm_dev.bdev = bdev;
 -      td->dm_dev.dax_dev = fs_dax_get_by_bdev(bdev, &part_off, NULL, NULL);
 +      td->dm_dev.bdev = bdev_handle->bdev;
 +      td->dm_dev.bdev_handle = bdev_handle;
 +      td->dm_dev.dax_dev = fs_dax_get_by_bdev(bdev_handle->bdev, &part_off,
 +                                              NULL, NULL);
        format_dev_t(td->dm_dev.name, dev);
        list_add(&td->list, &md->table_devices);
        return td;
  
  out_blkdev_put:
 -      blkdev_put(bdev, _dm_claim_ptr);
 +      bdev_release(bdev_handle);
  out_free_td:
        kfree(td);
        return ERR_PTR(r);
@@@ -773,7 -773,7 +775,7 @@@ static void close_table_device(struct t
  {
        if (md->disk->slave_dir)
                bd_unlink_disk_holder(td->dm_dev.bdev, md->disk);
 -      blkdev_put(td->dm_dev.bdev, _dm_claim_ptr);
 +      bdev_release(td->dm_dev.bdev_handle);
        put_dax(td->dm_dev.dax_dev);
        list_del(&td->list);
        kfree(td);
@@@ -1425,10 -1425,17 +1427,17 @@@ static void __map_bio(struct bio *clone
                 */
                if (unlikely(dm_emulate_zone_append(md)))
                        r = dm_zone_map_bio(tio);
+               else
+                       goto do_map;
+       } else {
+ do_map:
+               if (likely(ti->type->map == linear_map))
+                       r = linear_map(ti, clone);
+               else if (ti->type->map == stripe_map)
+                       r = stripe_map(ti, clone);
                else
                        r = ti->type->map(ti, clone);
-       } else
-               r = ti->type->map(ti, clone);
+       }
  
        switch (r) {
        case DM_MAPIO_SUBMITTED:
@@@ -1473,15 -1480,15 +1482,15 @@@ static void setup_split_accounting(stru
  
  static void alloc_multiple_bios(struct bio_list *blist, struct clone_info *ci,
                                struct dm_target *ti, unsigned int num_bios,
-                               unsigned *len)
+                               unsigned *len, gfp_t gfp_flag)
  {
        struct bio *bio;
-       int try;
+       int try = (gfp_flag & GFP_NOWAIT) ? 0 : 1;
  
-       for (try = 0; try < 2; try++) {
+       for (; try < 2; try++) {
                int bio_nr;
  
-               if (try)
+               if (try && num_bios > 1)
                        mutex_lock(&ci->io->md->table_devices_lock);
                for (bio_nr = 0; bio_nr < num_bios; bio_nr++) {
                        bio = alloc_tio(ci, ti, bio_nr, len,
  
                        bio_list_add(blist, bio);
                }
-               if (try)
+               if (try && num_bios > 1)
                        mutex_unlock(&ci->io->md->table_devices_lock);
                if (bio_nr == num_bios)
                        return;
        }
  }
  
- static int __send_duplicate_bios(struct clone_info *ci, struct dm_target *ti,
-                                unsigned int num_bios, unsigned int *len)
+ static unsigned int __send_duplicate_bios(struct clone_info *ci, struct dm_target *ti,
+                                         unsigned int num_bios, unsigned int *len,
+                                         gfp_t gfp_flag)
  {
        struct bio_list blist = BIO_EMPTY_LIST;
        struct bio *clone;
        unsigned int ret = 0;
  
-       switch (num_bios) {
-       case 0:
-               break;
-       case 1:
-               if (len)
-                       setup_split_accounting(ci, *len);
-               clone = alloc_tio(ci, ti, 0, len, GFP_NOIO);
-               __map_bio(clone);
-               ret = 1;
-               break;
-       default:
-               if (len)
-                       setup_split_accounting(ci, *len);
-               /* dm_accept_partial_bio() is not supported with shared tio->len_ptr */
-               alloc_multiple_bios(&blist, ci, ti, num_bios, len);
-               while ((clone = bio_list_pop(&blist))) {
+       if (WARN_ON_ONCE(num_bios == 0)) /* num_bios = 0 is a bug in caller */
+               return 0;
+       /* dm_accept_partial_bio() is not supported with shared tio->len_ptr */
+       if (len)
+               setup_split_accounting(ci, *len);
+       /*
+        * Using alloc_multiple_bios(), even if num_bios is 1, to consistently
+        * support allocating using GFP_NOWAIT with GFP_NOIO fallback.
+        */
+       alloc_multiple_bios(&blist, ci, ti, num_bios, len, gfp_flag);
+       while ((clone = bio_list_pop(&blist))) {
+               if (num_bios > 1)
                        dm_tio_set_flag(clone_to_tio(clone), DM_TIO_IS_DUPLICATE_BIO);
-                       __map_bio(clone);
-                       ret += 1;
-               }
-               break;
+               __map_bio(clone);
+               ret += 1;
        }
  
        return ret;
@@@ -1555,8 -1559,12 +1561,12 @@@ static void __send_empty_flush(struct c
                unsigned int bios;
                struct dm_target *ti = dm_table_get_target(t, i);
  
+               if (unlikely(ti->num_flush_bios == 0))
+                       continue;
                atomic_add(ti->num_flush_bios, &ci->io->io_count);
-               bios = __send_duplicate_bios(ci, ti, ti->num_flush_bios, NULL);
+               bios = __send_duplicate_bios(ci, ti, ti->num_flush_bios,
+                                            NULL, GFP_NOWAIT);
                atomic_sub(ti->num_flush_bios - bios, &ci->io->io_count);
        }
  
        bio_uninit(ci->bio);
  }
  
- static void __send_changing_extent_only(struct clone_info *ci, struct dm_target *ti,
-                                       unsigned int num_bios,
-                                       unsigned int max_granularity,
-                                       unsigned int max_sectors)
+ static void __send_abnormal_io(struct clone_info *ci, struct dm_target *ti,
+                              unsigned int num_bios, unsigned int max_granularity,
+                              unsigned int max_sectors)
  {
        unsigned int len, bios;
  
                    __max_io_len(ti, ci->sector, max_granularity, max_sectors));
  
        atomic_add(num_bios, &ci->io->io_count);
-       bios = __send_duplicate_bios(ci, ti, num_bios, &len);
+       bios = __send_duplicate_bios(ci, ti, num_bios, &len, GFP_NOIO);
        /*
         * alloc_io() takes one extra reference for submission, so the
         * reference won't reach 0 without the following (+1) subtraction
@@@ -1649,8 -1656,8 +1658,8 @@@ static blk_status_t __process_abnormal_
        if (unlikely(!num_bios))
                return BLK_STS_NOTSUPP;
  
-       __send_changing_extent_only(ci, ti, num_bios,
-                                   max_granularity, max_sectors);
+       __send_abnormal_io(ci, ti, num_bios, max_granularity, max_sectors);
        return BLK_STS_OK;
  }
  
@@@ -1709,10 -1716,6 +1718,6 @@@ static blk_status_t __split_and_process
        if (unlikely(!ti))
                return BLK_STS_IOERR;
  
-       if (unlikely((ci->bio->bi_opf & REQ_NOWAIT) != 0) &&
-           unlikely(!dm_target_supports_nowait(ti->type)))
-               return BLK_STS_NOTSUPP;
        if (unlikely(ci->is_abnormal_io))
                return __process_abnormal_io(ci, ti);
  
  
        len = min_t(sector_t, max_io_len(ti, ci->sector), ci->sector_count);
        setup_split_accounting(ci, len);
-       clone = alloc_tio(ci, ti, 0, &len, GFP_NOIO);
+       if (unlikely(ci->bio->bi_opf & REQ_NOWAIT)) {
+               if (unlikely(!dm_target_supports_nowait(ti->type)))
+                       return BLK_STS_NOTSUPP;
+               clone = alloc_tio(ci, ti, 0, &len, GFP_NOWAIT);
+               if (unlikely(!clone))
+                       return BLK_STS_AGAIN;
+       } else {
+               clone = alloc_tio(ci, ti, 0, &len, GFP_NOIO);
+       }
        __map_bio(clone);
  
        ci->sector += len;
        return BLK_STS_OK;
  }
  
- static void init_clone_info(struct clone_info *ci, struct mapped_device *md,
+ static void init_clone_info(struct clone_info *ci, struct dm_io *io,
                            struct dm_table *map, struct bio *bio, bool is_abnormal)
  {
        ci->map = map;
-       ci->io = alloc_io(md, bio);
+       ci->io = io;
        ci->bio = bio;
        ci->is_abnormal_io = is_abnormal;
        ci->submit_as_polled = false;
@@@ -1772,8 -1785,18 +1787,18 @@@ static void dm_split_and_process_bio(st
                        return;
        }
  
-       init_clone_info(&ci, md, map, bio, is_abnormal);
-       io = ci.io;
+       /* Only support nowait for normal IO */
+       if (unlikely(bio->bi_opf & REQ_NOWAIT) && !is_abnormal) {
+               io = alloc_io(md, bio, GFP_NOWAIT);
+               if (unlikely(!io)) {
+                       /* Unable to do anything without dm_io. */
+                       bio_wouldblock_error(bio);
+                       return;
+               }
+       } else {
+               io = alloc_io(md, bio, GFP_NOIO);
+       }
+       init_clone_info(&ci, io, map, bio, is_abnormal);
  
        if (bio->bi_opf & REQ_PREFLUSH) {
                __send_empty_flush(&ci);
This page took 0.229638 seconds and 4 git commands to generate.