Skip to contentSkip to conversation

Linux 6.1.162

DISCUSSION Greg Kroah-Hartman 1 participant 2 messages Feb 6 Stable branch

lore
Share & tools
lore

Greg Kroah-Hartman

author maintainer
#0 lore raw

I'm announcing the release of the 6.1.162 kernel.

All users of the 6.1 kernel series must upgrade.

The updated 6.1.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-6.1.y
and can be browsed at the normal kernel.org git web browser:
https://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary

thanks,

greg k-h

------------

 Documentation/admin-guide/kernel-parameters.txt                |    3 
 Documentation/netlink/specs/fou.yaml                           |  130 
 Makefile                                                       |    2 
 arch/arm64/boot/dts/qcom/sc8280xp.dtsi                         |   16 
 arch/arm64/boot/dts/rockchip/rk3399-kobol-helios64.dts         |    1 
 arch/arm64/boot/dts/rockchip/rk3399-nanopi-r4s.dts             |    1 
 arch/arm64/kernel/hibernate.c                                  |    2 
 arch/arm64/kernel/signal.c                                     |   26 
 arch/loongarch/kernel/perf_event.c                             |   21 
 arch/riscv/include/asm/compat.h                                |    2 
 arch/x86/events/perf_event.h                                   |   13 
 arch/x86/include/asm/kfence.h                                  |   29 
 arch/x86/kernel/cpu/resctrl/core.c                             |   21 
 arch/x86/kernel/cpu/resctrl/internal.h                         |    3 
 arch/x86/kernel/fpu/core.c                                     |   32 
 arch/x86/kvm/x86.c                                             |    9 
 arch/x86/mm/fault.c                                            |   15 
 arch/x86/mm/kaslr.c                                            |   10 
 block/blk-cgroup.c                                             |    4 
 crypto/authencesn.c                                            |    6 
 drivers/ata/libata-core.c                                      |   62 
 drivers/ata/libata-scsi.c                                      |   30 
 drivers/base/regmap/regmap.c                                   |    4 
 drivers/block/xen-blkback/xenbus.c                             |    4 
 drivers/block/xen-blkfront.c                                   |    3 
 drivers/bluetooth/hci_ldisc.c                                  |    4 
 drivers/char/tpm/xen-tpmfront.c                                |    3 
 drivers/clocksource/timer-riscv.c                              |    3 
 drivers/comedi/comedi_fops.c                                   |    2 
 drivers/comedi/drivers/dmm32at.c                               |   32 
 drivers/comedi/range.c                                         |    2 
 drivers/crypto/qat/qat_common/adf_common_drv.h                 |    1 
 drivers/crypto/qat/qat_common/adf_init.c                       |    1 
 drivers/crypto/qat/qat_common/adf_isr.c                        |    5 
 drivers/dma/apple-admac.c                                      |    1 
 drivers/dma/at_hdmac.c                                         |    9 
 drivers/dma/bcm-sba-raid.c                                     |    6 
 drivers/dma/dw/rzn1-dmamux.c                                   |    4 
 drivers/dma/idxd/compat.c                                      |   23 
 drivers/dma/lpc18xx-dmamux.c                                   |   19 
 drivers/dma/qcom/gpi.c                                         |    6 
 drivers/dma/sh/rz-dmac.c                                       |    5 
 drivers/dma/stm32-dmamux.c                                     |   22 
 drivers/dma/tegra210-adma.c                                    |   10 
 drivers/dma/ti/dma-crossbar.c                                  |   18 
 drivers/dma/ti/k3-udma-private.c                               |    2 
 drivers/dma/ti/omap-dma.c                                      |    4 
 drivers/dma/xilinx/xilinx_dma.c                                |    7 
 drivers/edac/i3200_edac.c                                      |   11 
 drivers/edac/x38_edac.c                                        |    9 
 drivers/firmware/efi/cper.c                                    |    2 
 drivers/firmware/imx/imx-scu-irq.c                             |   24 
 drivers/gpio/gpio-rockchip.c                                   |    8 
 drivers/gpio/gpiolib-acpi.c                                    |    2 
 drivers/gpu/drm/amd/amdgpu/amdgpu_device.c                     |    2 
 drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c                       |    5 
 drivers/gpu/drm/amd/amdgpu/amdgpu_virt.h                       |    3 
 drivers/gpu/drm/amd/amdgpu/gfx_v10_0.c                         |    2 
 drivers/gpu/drm/amd/amdgpu/gfx_v11_0.c                         |    2 
 drivers/gpu/drm/amd/amdgpu/soc21.c                             |    8 
 drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c          |   18 
 drivers/gpu/drm/amd/display/dc/dce110/dce110_hw_sequencer.c    |    3 
 drivers/gpu/drm/amd/pm/legacy-dpm/si_dpm.c                     |   23 
 drivers/gpu/drm/imx/imx-tve.c                                  |   13 
 drivers/gpu/drm/nouveau/dispnv50/curs507a.c                    |    1 
 drivers/gpu/drm/panel/panel-simple.c                           |    1 
 drivers/gpu/drm/radeon/radeon_fence.c                          |    8 
 drivers/gpu/drm/vmwgfx/vmwgfx_shader.c                         |    4 
 drivers/gpu/drm/xen/xen_drm_front.c                            |    3 
 drivers/hid/usbhid/hid-core.c                                  |   17 
 drivers/hwtracing/intel_th/core.c                              |   19 
 drivers/iio/adc/ad7280a.c                                      |    4 
 drivers/iio/adc/ad9467.c                                       |    2 
 drivers/iio/adc/at91-sama5d2_adc.c                             |    1 
 drivers/iio/adc/exynos_adc.c                                   |   13 
 drivers/iio/chemical/scd4x.c                                   |    6 
 drivers/iio/dac/ad5686.c                                       |    6 
 drivers/input/misc/xen-kbdfront.c                              |    5 
 drivers/input/serio/i8042-acpipnpio.h                          |   18 
 drivers/irqchip/irq-gic-v3-its.c                               |    8 
 drivers/isdn/mISDN/timerdev.c                                  |   13 
 drivers/leds/led-class.c                                       |   10 
 drivers/misc/mei/mei-trace.h                                   |   18 
 drivers/misc/uacce/uacce.c                                     |   42 
 drivers/mmc/host/rtsx_pci_sdmmc.c                              |   41 
 drivers/mmc/host/sdhci-of-dwcmshc.c                            |   20 
 drivers/net/bonding/bond_main.c                                |   29 
 drivers/net/bonding/bond_options.c                             |    8 
 drivers/net/can/ctucanfd/ctucanfd_base.c                       |    2 
 drivers/net/can/usb/ems_usb.c                                  |    8 
 drivers/net/can/usb/esd_usb.c                                  |    9 
 drivers/net/can/usb/etas_es58x/es58x_core.c                    |    2 
 drivers/net/can/usb/gs_usb.c                                   |   11 
 drivers/net/can/usb/kvaser_usb/kvaser_usb_core.c               |    9 
 drivers/net/can/usb/mcba_usb.c                                 |    8 
 drivers/net/can/usb/usb_8dev.c                                 |    8 
 drivers/net/ethernet/amd/xgbe/xgbe-drv.c                       |    5 
 drivers/net/ethernet/emulex/benet/be_cmds.c                    |    3 
 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_cmd.h         |    2 
 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c        |    2 
 drivers/net/ethernet/intel/ice/ice_main.c                      |    1 
 drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c                 |    2 
 drivers/net/ethernet/marvell/octeontx2/af/rvu.c                |   86 
 drivers/net/ethernet/marvell/octeontx2/nic/cn10k_macsec.c      |    2 
 drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.h       |    7 
 drivers/net/ethernet/mellanox/mlx5/core/en_main.c              |   22 
 drivers/net/ethernet/mellanox/mlx5/core/esw/acl/ingress_lgcy.c |    2 
 drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c     |   19 
 drivers/net/ethernet/rocker/rocker_main.c                      |    5 
 drivers/net/ethernet/stmicro/stmmac/dwmac5.c                   |    5 
 drivers/net/ethernet/stmicro/stmmac/dwxgmac2_core.c            |    5 
 drivers/net/hyperv/hyperv_net.h                                |    5 
 drivers/net/hyperv/netvsc_drv.c                                |   13 
 drivers/net/hyperv/rndis_filter.c                              |   29 
 drivers/net/ipvlan/ipvlan.h                                    |    2 
 drivers/net/ipvlan/ipvlan_core.c                               |   16 
 drivers/net/ipvlan/ipvlan_main.c                               |   49 
 drivers/net/macvlan.c                                          |   20 
 drivers/net/netdevsim/bpf.c                                    |    6 
 drivers/net/netdevsim/dev.c                                    |    2 
 drivers/net/netdevsim/netdevsim.h                              |    1 
 drivers/net/team/team.c                                        |   23 
 drivers/net/usb/dm9601.c                                       |    4 
 drivers/net/usb/usbnet.c                                       |   11 
 drivers/net/wireless/ath/ath10k/ce.c                           |   16 
 drivers/net/wireless/marvell/mwifiex/11n_rxreorder.c           |    6 
 drivers/net/wireless/rsi/rsi_91x_mac80211.c                    |    1 
 drivers/net/wwan/t7xx/t7xx_hif_dpmaif_rx.c                     |    9 
 drivers/net/xen-netback/xenbus.c                               |    3 
 drivers/net/xen-netfront.c                                     |    4 
 drivers/nfc/virtual_ncidev.c                                   |    4 
 drivers/nvme/host/fabrics.c                                    |   15 
 drivers/nvme/host/fabrics.h                                    |    1 
 drivers/nvme/host/fc.c                                         |    5 
 drivers/nvme/host/nvme.h                                       |   14 
 drivers/nvme/host/pci.c                                        |   41 
 drivers/nvme/host/rdma.c                                       |    1 
 drivers/nvme/host/tcp.c                                        |    1 
 drivers/nvme/target/tcp.c                                      |   28 
 drivers/of/base.c                                              |    8 
 drivers/of/platform.c                                          |    2 
 drivers/pci/Kconfig                                            |    6 
 drivers/pci/xen-pcifront.c                                     |    4 
 drivers/phy/broadcom/phy-bcm-ns-usb3.c                         |    2 
 drivers/phy/freescale/phy-fsl-imx8m-pcie.c                     |    3 
 drivers/phy/rockchip/phy-rockchip-inno-usb2.c                  |   56 
 drivers/phy/st/phy-stm32-usbphyc.c                             |    2 
 drivers/phy/tegra/xusb-tegra186.c                              |    3 
 drivers/pinctrl/meson/pinctrl-meson.c                          |    2 
 drivers/pinctrl/pinctrl-rockchip.c                             |    9 
 drivers/pinctrl/qcom/pinctrl-lpass-lpi.c                       |   17 
 drivers/ptp/ptp_chardev.c                                      |   37 
 drivers/ptp/ptp_private.h                                      |   16 
 drivers/scsi/be2iscsi/be_mgmt.c                                |    1 
 drivers/scsi/qla2xxx/qla_os.c                                  |    2 
 drivers/scsi/scsi_error.c                                      |   35 
 drivers/scsi/scsi_lib.c                                        |    8 
 drivers/scsi/storvsc_drv.c                                     |    3 
 drivers/scsi/xen-scsifront.c                                   |    4 
 drivers/slimbus/core.c                                         |   19 
 drivers/soc/imx/imx8m-blk-ctrl.c                               |   11 
 drivers/spi/spi-sprd-adi.c                                     |   67 
 drivers/target/sbp/sbp_target.c                                |    4 
 drivers/tty/hvc/hvc_xen.c                                      |    4 
 drivers/tty/serial/8250/8250_pci.c                             |    2 
 drivers/usb/core/config.c                                      |    5 
 drivers/usb/core/quirks.c                                      |    3 
 drivers/usb/dwc3/core.c                                        |    2 
 drivers/usb/dwc3/core.h                                        |    1 
 drivers/usb/host/ohci-platform.c                               |    1 
 drivers/usb/host/uhci-platform.c                               |    1 
 drivers/usb/host/xen-hcd.c                                     |    4 
 drivers/usb/serial/ftdi_sio.c                                  |    1 
 drivers/usb/serial/ftdi_sio_ids.h                              |    2 
 drivers/usb/serial/option.c                                    |    1 
 drivers/vhost/scsi.c                                           |   24 
 drivers/video/fbdev/xen-fbfront.c                              |    6 
 drivers/w1/slaves/w1_therm.c                                   |   62 
 drivers/w1/w1.c                                                |    2 
 drivers/xen/pvcalls-back.c                                     |    3 
 drivers/xen/pvcalls-front.c                                    |    3 
 drivers/xen/xen-pciback/xenbus.c                               |    4 
 drivers/xen/xen-scsiback.c                                     |    5 
 fs/btrfs/block-group.c                                         |   60 
 fs/btrfs/ctree.h                                               |   59 
 fs/btrfs/delayed-inode.c                                       |    1 
 fs/btrfs/disk-io.c                                             |    2 
 fs/btrfs/inode-item.c                                          |    1 
 fs/btrfs/props.c                                               |    1 
 fs/btrfs/relocation.c                                          |   14 
 fs/btrfs/space-info.c                                          |   76 
 fs/btrfs/space-info.h                                          |   69 
 fs/btrfs/sysfs.c                                               |   18 
 fs/btrfs/transaction.c                                         |   11 
 fs/efivarfs/vars.c                                             |    2 
 fs/ext4/xattr.c                                                |    1 
 fs/fs-writeback.c                                              |   14 
 fs/gfs2/log.c                                                  |    3 
 fs/gfs2/lops.c                                                 |    2 
 fs/gfs2/super.c                                                |    4 
 fs/iomap/buffered-io.c                                         |    2 
 fs/nfs/flexfilelayout/flexfilelayoutdev.c                      |    2 
 fs/nfsd/nfsctl.c                                               |   17 
 fs/ntfs3/inode.c                                               |    7 
 fs/smb/server/mgmt/user_session.c                              |   35 
 fs/smb/server/mgmt/user_session.h                              |    1 
 fs/smb/server/smb2pdu.c                                        |    9 
 fs/smb/server/transport_ipc.c                                  |   12 
 fs/smb/server/transport_rdma.c                                 |   15 
 fs/xfs/libxfs/xfs_ialloc.c                                     |   11 
 include/linux/kfence.h                                         |    1 
 include/linux/libata.h                                         |   36 
 include/linux/nvme.h                                           |    3 
 include/linux/posix-clock.h                                    |   39 
 include/linux/textsearch.h                                     |    1 
 include/linux/usb/quirks.h                                     |    3 
 include/net/bonding.h                                          |   13 
 include/net/nfc/nfc.h                                          |    2 
 include/scsi/scsi_eh.h                                         |    6 
 include/sound/pcm.h                                            |    2 
 include/uapi/linux/comedi.h                                    |    2 
 include/xen/xenbus.h                                           |    2 
 io_uring/io_uring.c                                            |    8 
 kernel/bpf/cgroup.c                                            |    8 
 kernel/dma/pool.c                                              |    7 
 kernel/irq/irq_sim.c                                           |    2 
 kernel/time/hrtimer.c                                          |    2 
 kernel/time/posix-clock.c                                      |   53 
 lib/flex_proportions.c                                         |    5 
 mm/Kconfig                                                     |   12 
 mm/damon/sysfs.c                                               |   15 
 mm/kfence/core.c                                               |   23 
 mm/kmsan/shadow.c                                              |    3 
 mm/migrate.c                                                   |   12 
 mm/mprotect.c                                                  |  101 
 mm/page_alloc.c                                                |   47 
 mm/rmap.c                                                      |   20 
 net/9p/trans_xen.c                                             |    3 
 net/bpf/test_run.c                                             |    5 
 net/bridge/br_input.c                                          |    2 
 net/can/j1939/transport.c                                      |   10 
 net/core/dev.c                                                 |   25 
 net/core/filter.c                                              |   25 
 net/ipv4/Makefile                                              |    1 
 net/ipv4/esp4_offload.c                                        |    4 
 net/ipv4/fou.c                                                 | 1313 ----------
 net/ipv4/fou_core.c                                            | 1283 +++++++++
 net/ipv4/fou_nl.c                                              |   48 
 net/ipv4/fou_nl.h                                              |   25 
 net/ipv4/ip_gre.c                                              |   11 
 net/ipv6/addrconf.c                                            |    4 
 net/ipv6/esp6_offload.c                                        |    4 
 net/ipv6/icmp.c                                                |    4 
 net/ipv6/ip6_tunnel.c                                          |    2 
 net/ipv6/ndisc.c                                               |    4 
 net/l2tp/l2tp_core.c                                           |    4 
 net/mac80211/ibss.c                                            |    8 
 net/mac80211/ieee80211_i.h                                     |    6 
 net/mac80211/iface.c                                           |   10 
 net/mac80211/mesh.c                                            |   10 
 net/mac80211/mesh_hwmp.c                                       |    6 
 net/mac80211/mlme.c                                            |   13 
 net/mac80211/ocb.c                                             |    6 
 net/mac80211/rx.c                                              |    2 
 net/mac80211/scan.c                                            |    2 
 net/mac80211/status.c                                          |    6 
 net/mac80211/tdls.c                                            |   11 
 net/mac80211/util.c                                            |    2 
 net/mptcp/protocol.c                                           |   13 
 net/netrom/nr_route.c                                          |   13 
 net/nfc/core.c                                                 |   27 
 net/nfc/llcp_commands.c                                        |   17 
 net/nfc/llcp_core.c                                            |    4 
 net/nfc/nci/core.c                                             |    4 
 net/sched/act_ife.c                                            |   12 
 net/sched/sch_qfq.c                                            |    8 
 net/sched/sch_teql.c                                           |    5 
 net/sctp/input.c                                               |    2 
 net/sctp/sm_statefuns.c                                        |   10 
 net/vmw_vsock/virtio_transport_common.c                        |   30 
 scripts/generate_rust_analyzer.py                              |    2 
 sound/core/oss/pcm_oss.c                                       |    4 
 sound/core/pcm_native.c                                        |    9 
 sound/pci/ctxfi/ctamixer.c                                     |    2 
 sound/soc/amd/yc/acp6x-mach.c                                  |    8 
 sound/soc/codecs/tlv320adcx140.c                               |    8 
 sound/soc/codecs/wsa881x.c                                     |   54 
 sound/soc/codecs/wsa883x.c                                     |    9 
 sound/soc/fsl/imx-card.c                                       |    1 
 sound/soc/intel/boards/sof_es8336.c                            |    2 
 sound/usb/mixer.c                                              |   22 
 sound/usb/mixer_scarlett2.c                                    |    7 
 sound/xen/xen_snd_front.c                                      |    3 
 tools/testing/selftests/net/amt.sh                             |    7 
 tools/testing/selftests/net/toeplitz.c                         |    4 
 tools/testing/selftests/ptp/testptp.c                          |  194 +
 tools/testing/vsock/util.c                                     |   12 
 297 files changed, 3888 insertions(+), 2423 deletions(-)

Abdun Nihaal (1):
scsi: xen: scsiback: Fix potential memory leak in scsiback_remove()

Aboorva Devarajan (1):
mm/page_alloc: make percpu_pagelist_high_fraction reads lock-free

Aditya Garg (1):
net: hv_netvsc: reject RSS hash key programming without RX indirection table

Alex Deucher (3):
drm/amdgpu/soc21: fix xclk for APUs drm/amdgpu/gfx10: fix wptr reset in KGQ init drm/amdgpu/gfx11: fix wptr reset in KGQ init

Alex Hung (1):
drm/amd/display: Check dce_hwseq before dereferencing it

Alex Maftei (2):
selftests/ptp: Add -x option for testing PTP_SYS_OFFSET_EXTENDED selftests/ptp: Add -X option for testing PTP_SYS_OFFSET_PRECISE

Alexander Usyskin (1):
mei: trace: treat reg parameter as string

Alexis Lothoré (1):
net: stmmac: make sure that ptp_rate is not 0 before configuring EST

Alok Tiwari (1):
octeontx2: cn10k: fix RX flowid TCAM mask handling

Andreas Gruenbacher (2):
Revert "gfs2: Fix use of bio_chain"
gfs2: Fix NULL pointer dereference in gfs2_log_flush

Andrew Cooper (1):
x86/kfence: avoid writing L1TF-vulnerable PTEs

Andrew Davis (1):
spi: sprd: adi: Use devm_register_restart_handler()

Andrey Vatoropin (1):
be2net: Fix NULL pointer dereference in be_cmd_get_mac_from_list

Arnd Bergmann (1):
irqchip/gic-v3-its: Avoid truncating memory addresses

Arun Raghavan (1):
ALSA: usb: Increase volume range that triggers a warning

Bagas Sanjaya (2):
textsearch: describe @list member in ts_ops search mm, kfence: describe @slab parameter in __kfence_obj_info()

Bartlomiej Kubik (1):
fs/ntfs3: Initialize allocated memory before use

Bartosz Golaszewski (2):
pinctrl: meson: mark the GPIO controller as sleeping
pinctrl: lpass-lpi: implement .get_direction() for the GPIO driver

Benjamin Tissoires (1):
HID: usbhid: paper over wrong bNumDescriptor field

Berk Cem Goksel (1):
ALSA: usb-audio: Fix use-after-free in snd_usb_mixer_free()

Biju Das (1):
dmaengine: sh: rz-dmac: Fix rz_dmac_terminate_all()

Boris Burkov (1):
btrfs: store fs_info in space_info

Brian Foster (1):
xfs: set max_agbno to allow sparse alloc of last full inode chunk

Brian Kao (1):
scsi: core: Fix error handler encryption support

Cedric Xing (1):
x86: make page fault handling disable interrupts properly

Chen Ni (1):
net/sched: act_ife: convert comma to semicolon

Cheng-Yu Lee (1):
regmap: Fix race condition in hwspinlock irqsave routine

Chenghai Huang (1):
uacce: ensure safe queue release with state management

Damien Le Moal (3):
ata: libata: Introduce ata_ncq_supported()
ata: libata: cleanup fua support detection
ata: libata-core: Introduce ata_dev_config_lpm()

Dan Carpenter (2):
phy: stm32-usphyc: Fix off by one in probe()
wifi: mwifiex: Fix a loop in mwifiex_update_ampdu_rxwinsize()

Dan Williams (1):
x86/kaslr: Recognize all ZONE_DEVICE users as physaddr consumers

Daniel Borkmann (1):
bpf: Do not let BPF test infra emit invalid GSO types to stack

Daniel Wagner (1):
nvme-fc: rename free_ctrl callback to match name pattern

David Hildenbrand (Red Hat) (1):
mm/rmap: fix two comments related to huge_pmd_unshare()

David Jeffery (1):
scsi: core: Wake up the error handler when final completions race against each other

Dawei Li (1):
xen: make remove callback of xen driver void returned

Denis Sergeev (1):
gpiolib: acpi: use BIT_ULL() for u64 mask in address space handler

Dmitry Skorodumov (1):
ipvlan: Make the addrs_lock be per port

Dragan Simic (1):
phy: phy-rockchip-inno-usb2: Use dev_err_probe() in the probe path

Emil Svendsen (2):
ASoC: tlv320adcx140: fix null pointer
ASoC: tlv320adcx140: fix word length

Eric Dumazet (12):
ip6_tunnel: use skb_vlan_inet_prepare() in __ip6_tnl_rcv()
net: update netdev_lock_{type,name}
macvlan: fix possible UAF in macvlan_forward_source()
ipv4: ip_gre: make ipgre_header() robust
net/sched: sch_qfq: do not free existing class in qfq_change_class()
bonding: limit BOND_MODE_8023AD to Ethernet devices
l2tp: avoid one data-race in l2tp_tunnel_del_work()
mISDN: annotate data-race around dev->work
ipv6: annotate data-race in ndisc_router_discovery()
bonding: provide a net pointer to __skb_flow_dissect() net/sched: act_ife: avoid possible NULL deref
bonding: annotate data-races around slave->last_rx

Ethan Nelson-Moore (2):
USB: serial: ftdi_sio: add support for PICAXE AXE027 cable
net: usb: dm9601: remove broken SR9700 support

Fabio Estevam (1):
ASoC: fsl: imx-card: Do not force slot width to sample width

Felix Gu (1):
spi: spi-sprd-adi: Fix double free in probe error path

Fernand Sieber (1):
perf/x86/intel: Do not enable BTS for guests

Fernando Fernandez Mancera (1):
ipv6: use the right ifindex when replying to icmpv6 from localhost

Fiona Klute (1):
iio: chemical: scd4x: fix reported channel endianness

Gal Pressman (2):
selftests: drv-net: fix RPS mask handling for high CPU numbers net/mlx5e: Account for netdev stats in ndo_get_stats64

Gavin Li (1):
Revert "net/mlx5: Block entering switchdev mode with ns inconsistency"

Geraldo Nascimento (2):
arm64: dts: rockchip: remove dangerous max-link-speed from helios64
arm64: dts: rockchip: remove redundant max-link-speed from nanopi-r4s

Giovanni Cabiddu (1):
crypto: qat - flush misc workqueue during device shutdown

Greg Kroah-Hartman (1):

      Linux 6.1.162

Gyeyoung Baek (1):
genirq/irq_sim: Initialize work context pointers properly

Han Gao (1):
riscv: compat: fix COMPAT_UTS_MACHINE definition

Hans de Goede (1):
leds: led-class: Only Add LED to leds_list when it is fully ready

Haotian Zhang (1):
dmaengine: omap-dma: fix dma_pool resource leak in error paths

Haoxiang Li (6):
EDAC/x38: Fix a resource leak in x38_probe1() EDAC/i3200: Fix a resource leak in i3200_probe1() drm/vmwgfx: Fix an error return check in vmw_compat_shader_add()
w1: fix redundant counter decrement in w1_attach_slave_device()
scsi: be2iscsi: Fix a memory leak in beiscsi_boot_get_sinfo() drm/amdkfd: fix a memory leak in device_queue_manager_init()

Harry Yoo (1):
Revert "mm/mprotect: delete pmd_none_or_clear_bad_unless_trans_huge()"

Huacai Chen (1):
USB: OHCI/UHCI: Add soft dependencies on ehci_platform

Ian Abbott (2):
comedi: dmm32at: serialize use of paged registers
comedi: Fix getting range information for subdevices 16 to 255

Ilikara Zheng (1):
nvme-pci: disable secondary temp for Wodposit WPBSNM8

JP Kobryn (1):
btrfs: prevent use-after-free on page private data in btrfs_subpage_clear_uptodate()

Jakub Kicinski (3):
netlink: add a proto specification for FOU
net: fou: rename the source for linking
net: fou: use policy and operation tables generated from the spec

Jamal Hadi Salim (2):
net/sched: Enforce that teql can only be used as root qdisc
net/sched: qfq: Use cl_is_active to determine whether class is active in qfq_rm_from_ag

Jan Kara (1):
flex_proportions: make fprop_new_period() hardirq safe

Janne Grunau (1):
dmaengine: apple-admac: Add "apple,t8103-admac" compatible

Jaroslav Kysela (1):
ALSA: pcm: Improve the fix for race of buffer access at PCM OSS layer

Jeongjun Park (1):
netrom: fix double-free in nr_route_frame()

Jesse Brandeburg (1):
ice: stop counting UDP csum mismatch as rx_errors

Jia-Hong Su (1):
Bluetooth: hci_uart: fix null-ptr-deref in hci_uart_write_work

Jianbo Liu (1):
xfrm: Fix inner mode lookup in tunnel mode GSO segmentation

Jiasheng Jiang (1):
btrfs: fix memory leaks in create_space_info() error paths

Jijie Shao (2):
net: hns3: fix wrong GENMASK() for HCLGE_FD_AD_COUNTER_NUM_M
net: hns3: fix the HCLGE_FD_AD_NXT_KEY error setting issue

Johan Hovold (17):
dmaengine: at_hdmac: fix device leak on of_dma_xlate()
dmaengine: bcm-sba-raid: fix device leak on probe
dmaengine: dw: dmamux: fix OF node leak on route allocation failure
dmaengine: idxd: fix device leaks on compat bind and unbind
dmaengine: lpc18xx-dmamux: fix device leak on route allocation
dmaengine: ti: dma-crossbar: fix device leak on dra7x route allocation
dmaengine: ti: dma-crossbar: fix device leak on am335x route allocation
dmaengine: ti: k3-udma: fix device leak on udma lookup
slimbus: core: fix runtime PM imbalance on report present
slimbus: core: fix device reference leak on report present
intel_th: fix device leak on output open()
dmaengine: stm32: dmamux: fix OF node leak on route allocation failure
dmaengine: stm32: dmamux: fix device leak on route allocation
iio: adc: exynos_adc: fix OF populate on driver rebind
ASoC: codecs: wsa881x: fix unnecessary initialisation
ASoC: codecs: wsa883x: fix unnecessary initialisation drm/imx/tve: fix probe device leak

Johannes Berg (2):
wifi: mac80211: use wiphy work for sdata->work
wifi: mac80211: move TDLS work to wiphy work

Johannes Brüderl (1):
usb: core: add USB_QUIRK_NO_BOS for devices that hang on BOS descriptor

Josef Bacik (1):
btrfs: move flush related definitions to space-info.h

Keith Busch (1):
nvme-pci: do not directly handle subsys reset fallout

Kery Qi (3):
net: wwan: t7xx: fix potential skb->frags overflow in RX path
rocker: fix memory leak in rocker_world_port_post_fini()
scsi: firewire: sbp-target: Fix overflow in sbp_make_tpg()

Kohei Enju (1):
efivarfs: fix error propagation in efivar_entry_get()

Konrad Dybcio (1):

      arm64: dts: qcom: sc8280xp: Add missing VDD_MXC links

Krzysztof Kozlowski (4):
phy: broadcom: ns-usb3: Fix Wvoid-pointer-to-enum-cast warning (again)
ASoC: codecs: wsa881x: Simplify &pdev->dev in probe
ASoC: codecs: wsa881x: Use proper shutdown GPIO polarity
ASoC: codecs: wsa881x: Drop unused version readout

Kuniyuki Iwashima (5):
ipv6: Fix use-after-free in inet6_addr_del().
gue: Fix skb memleak with inner IP protocol 0.
fou: Don't allow 0 for FOU_ATTR_IPPROTO.
nfc: llcp: Fix memleak in nfc_llcp_send_ui_frame().
nfc: nci: Fix race between rfkill and nci_unregister_device().

Kübrich, Andreas (1):

      iio: dac: ad5686: add AD5695R to ad5686_chip_info_tbl

Laurent Vivier (1):
usbnet: limit max_mtu based on device's hard_mtu

Laveesh Bansal (1):
writeback: fix 100% CPU usage when dirtytime_expire_interval is 0

Linus Torvalds (1):
Fix memory leak in posix_clock_open()

Lisa Robinson (1):
LoongArch: Fix PMU counter allocation for mixed-type event groups

Long Li (1):
scsi: storvsc: Process unsupported MODE_SENSE_10

Louis Chauvet (1):
phy: rockchip: inno-usb2: fix disconnection in gadget mode

Luca Ceresoli (1):
phy: rockchip: inno-usb2: fix communication disruption in gadget mode

Lyude Paul (1):
drm/nouveau/disp/nv50-: Set lock_core in curs507a_prepare

Mahesh Bandewar (1):
selftest/ptp: update ptp selftest to exercise the gettimex options

Maninder Singh (1):
NFSD: fix race between nfsd registration and exports_proc

Marc Kleine-Budde (8):
can: gs_usb: gs_usb_receive_bulk_callback(): fix URB memory leak
can: gs_usb: gs_usb_receive_bulk_callback(): unanchor URL on usb_submit_urb() error
can: ems_usb: ems_usb_read_bulk_callback(): fix URB memory leak
can: kvaser_usb: kvaser_usb_read_bulk_callback(): fix URB memory leak
can: mcba_usb: mcba_usb_read_bulk_callback(): fix URB memory leak
can: usb_8dev: usb_8dev_read_bulk_callback(): fix URB memory leak
can: gs_usb: gs_usb_receive_bulk_callback(): fix error message
can: esd_usb: esd_usb_read_bulk_callback(): fix URB memory leak

Marek Vasut (2):
drm/panel-simple: fix connector type for DataImage SCF0700C48GGU18 panel
wifi: rsi: Fix memory corruption due to not set vif driver data size

Marios Makassikis (1):
ksmbd: fix recursive locking in RPC handle list access

Mark Harmstone (1):
btrfs: fix missing fields in superblock backup with BLOCK_GROUP_TREE

Mark Rutland (2):
arm64/fpsimd: signal: Allocate SSVE storage when restoring ZA arm64/fpsimd: signal: Fix restoration of SVE context

Marnix Rijnart (1):

      serial: 8250_pci: Fix broken RS485 for F81504/508/512

Martin Kaiser (1):
net: bridge: fix static key check

Matthew Schwartz (1):
mmc: rtsx_pci_sdmmc: implement sdmmc_card_busy function

Matthew Wilcox (Oracle) (1):
migrate: correct lock ordering for hugetlb file folios

Matthieu Baerts (NGI0) (2):
mptcp: only reset subflow errors when propagated
mptcp: avoid dup SUB_CLOSED events after disconnect

Maurizio Lombardi (1):
nvmet-tcp: remove boilerplate code

Melbin K Mathew (2):
vsock/virtio: fix potential underflow in virtio_transport_get_credit() vsock/virtio: cap TX credit to local buffer size

Miaoqian Lin (1):
dmaengine: qcom: gpi: Fix memory leak in gpi_peripheral_config()

Mike Christie (1):
vhost-scsi: Fix handling of multiple calls to vhost_scsi_set_endpoint

Ming Lei (1):
io_uring: move local task_work in exit cancel loop

Ming Qian (1):
pmdomain: imx8m-blk-ctrl: Remove separate rst and clk mask for 8mq vpu

Morduan Zang (1):
efi/cper: Fix cper_bits_to_str buffer handling and return value

Namjae Jeon (1):
ksmbd: fix use-after-free in ksmbd_session_rpc_open

Naohiko Shimizu (1):
riscv: clocksource: Fix stimecmp update hazard on RV32

Naohiro Aota (3):
btrfs: factor out init_space_info() from create_space_info()
btrfs: factor out check_removing_space_info() from btrfs_free_block_groups()
btrfs: introduce btrfs_space_info sub-group

Niklas Cassel (3):
ata: libata: Add cpr_log to ata_dev_print_features() early return
ata: libata: Call ata_dev_config_lpm() for ATAPI devices
ata: libata: Print features also for ATAPI devices

Nikola Z. Ivanov (1):
team: Move team device type change at the end of team_port_add

Nilay Shroff (1):
nvme: fix PCIe subsystem reset controller state transition

Ondrej Ille (1):
can: ctucanfd: fix SSP_SRC in cases when bit-rate is higher than 1 MBit.

Paul Chaignon (1):
bpf: Reject narrower access to pointer ctx fields

Pavel Zhigulin (1):
iio: adc: ad7280a: handle spi_setup() errors in probe()

Pei Xiao (1):
iio: adc: at91-sama5d2_adc: Fix potential use-after-free in sama5d2_adc driver

Peng Fan (1):
firmware: imx: scu-irq: Set mu_resource_id before get handle

Pimyn Girgis (1):
mm/kfence: randomize the freelist on initialization

Rafael Beims (1):
phy: freescale: imx8m-pcie: assert phy reset during power on

Rahul Rameshbabu (1):
testptp: Add support for testing ptp_clock_info .adjphase callback

Raju Rangoju (1):
amd-xgbe: avoid misleading per-packet error log

Ratheesh Kannoth (1):
octeontx2-af: Fix error handling

Ritesh Harjani (IBM) (1):
iomap: Fix possible overflow condition in iomap_write_delalloc_scan

Rob Herring (Arm) (1):
of: platform: Use default match table for /firmware

Robbie Ko (1):
btrfs: fix deadlock in wait_current_trans() due to ignored transaction type

Robert McClinton (1):
drm/radeon: delete radeon_fence_process in is_signaled, no deadlock

Robin Murphy (1):
gpio: rockchip: Stop calling pinctrl for set_direction

Ryan Roberts (1):
mm: kmsan: fix poisoning of high-order non-compound pages

Saeed Mahameed (1):
net/mlx5e: Restore destroying state bit after profile cleanup

Sai Sree Kartheek Adivi (1):
dma/pool: distinguish between missing and exhausted atomic pools

Samasth Norway Ananda (1):
ALSA: scarlett2: Fix buffer overflow in config retrieval

Sean Christopherson (1):
x86/fpu: Clear XSTATE_BV[i] in guest XSAVE state whenever XFD[i]=1

Sebastian Reichel (1):
phy: phy-rockchip-inno-usb2: simplify phy clock handling

SeongJae Park (3):
mm/damon/sysfs: cleanup attrs subdirs on context dir setup failure mm/damon/sysfs-scheme: cleanup quotas subdirs on scheme dir setup failure mm/damon/sysfs-scheme: cleanup access_pattern subdirs on scheme dir setup failure

Shawn Lin (2):
mmc: sdhci-of-dwcmshc: Update DLL and pre-change delay for rockchip platform
mmc: sdhci-of-dwcmshc: Prevent illegal clock reduction in HS200/HS400 mode

Sheetal (1):
dmaengine: tegra-adma: Fix use-after-free

Shivam Kumar (1):
nvme-tcp: fix NULL pointer dereferences in nvmet_tcp_build_pdu_iovec

Shradha Gupta (1):
hv_netvsc: Allocate rx indirection table size dynamically

Srinivasan Shanmugam (1):
drm/amdgpu: Replace Mutex with Spinlock for RLCG register access to avoid Priority Inversion in SRIOV

Stefano Garzarella (1):
vsock/test: add a final full barrier after run all tests

Suraj Gupta (1):
dmaengine: xilinx_dma: Fix uninitialized addr_width when "xlnx,addrwidth" property is missing

Szymon Wilczek (1):
can: etas_es58x: allow partial RX URB allocation to succeed

Taehee Yoo (1):
selftests: net: amt: wait longer for connection before sending packets

Taeyang Lee (1):
crypto: authencesn - reject too-short AAD (assoclen<8) to match ESP/ESN spec

Tagir Garaev (1):
ASoC: Intel: sof_es8336: fix headphone GPIO logic inversion

Takashi Iwai (1):
ALSA: ctxfi: Fix potential OOB access in audio mixer handling

Tamir Duberstein (1):

      scripts: generate_rust_analyzer: Add compiler_builtins -> core dep

Tetsuo Handa (1):
net: can: j1939: j1939_xtp_rx_rts_session_active(): deactivate session upon receiving the second rts

Thadeu Lima de Souza Cascardo (1):
Revert "nfc/nci: Add the inconsistency check between the input data length and count"

Thinh Nguyen (1):
usb: dwc3: Check for USB4 IP_NAME

Thomas Fourier (4):
wifi: ath10k: fix dma_free_coherent() pointer
octeontx2: Fix otx2_dma_map_page() error return code
scsi: qla2xxx: edif: Fix dma_free_coherent() size
ksmbd: smbd: fix dma_unmap_sg() nents

Thomas Weißschuh (1):
hrtimer: Fix softirq base check in update_needs_ipi()

Thorsten Blum (1):
w1: therm: Fix off-by-one buffer overflow in alarms_store

Timur Kristóf (2):
drm/amd/pm: Don't clear SI SMC table when setting power limit drm/amd/pm: Workaround SI powertune issue on Radeon 430 (v2)

Tomas Melin (1):

      iio: adc: ad9467: fix ad9434 vref mask

Ulrich Mohr (1):
USB: serial: option: add Telit LE910 MBIM composition

Uwe Kleine-König (1):
spi: sprd-adi: Convert to platform remove callback returning void

Vlastimil Babka (1):
mm/page_alloc: prevent pcp corruption with SMP=n

Waiman Long (1):
blk-cgroup: Reinit blkg_iostat_set after clearing in blkcg_reset_stats()

Wayne Chang (1):

      phy: tegra: xusb: Explicitly configure HS_DISCON_LEVEL to 0x7

Weigang He (1):
of: fix reference count leak in of_alias_scan()

Wenkai Lin (1):
uacce: fix cdev handling in the cleanup path

Wentao Liang (1):
phy: rockchip: inno-usb2: Fix a double free bug in rockchip_usb2phy_probe()

Wojtek Wasko (3):
posix-clock: Store file pointer in struct posix_clock_context
ptp: Add PHC file mode checks. Allow RO adjtime() without FMODE_WRITE.
testptp: Add option to open PHC in readonly mode

Xabier Marquiegui (2):
posix-clock: introduce posix_clock_context concept
ptp: add testptp mask test

Xiaochen Shen (2):
x86/resctrl: Add missing resctrl initialization for Hygon x86/resctrl: Fix memory bandwidth counter width for Hygon

Xin Long (2):
sctp: move SCTP_CMD_ASSOC_SHKEY right after SCTP_CMD_PEER_INIT
sctp: linearize cloned gso packets in sctp_rcv

Yafang Shao (1):
net/mlx5e: Report rx_discards_phy via rx_dropped

Yang Erkun (1):
ext4: fix iloc.bh leak in ext4_xattr_inode_update_ref

Yang Li (1):
spi: sprd-adi: Use devm_platform_get_and_ioremap_resource()

Yang Shen (1):
uacce: implement mremap in uacce_vm_ops to return -EPERM

Yang Yingliang (1):
spi: sprd-adi: switch to use spi_alloc_host()

Yun Lu (1):
netdevsim: fix a race issue related to the operation on bpf_bound_progs list

Yunseong Kim (1):
ksmbd: Fix race condition in RPC handle list access

Zhang Heng (1):
ASoC: amd: yc: Add DMI quirk for Acer TravelMate P216-41-TCO

Zhaoyang Huang (1):
arm64: Set __nocfi on swsusp_arch_resume()

Zilin Guan (3):
pnfs/flexfiles: Fix memory leak in nfs4_ff_alloc_deviceid_node() net/mlx5: Fix memory leak in esw_acl_ingress_lgcy_setup()
net: mvpp2: cls: Fix memory leak in mvpp2_ethtool_cls_rule_ins()

Zqiang (1):
usbnet: Fix using smp_processor_id() in preemptible code warnings

feng (1):
Input: i8042 - add quirk for ASUS Zenbook UX425QA_UM425QA

gongqi (1):
Input: i8042 - add quirks for MECHREVO Wujie 15X Pro

author maintainer
#1 lore raw
Documentation/admin-guide/kernel-parameters.txt +3 -0
index 05ab068c1cc6..b026eb1c4c7d 100644
@@ -2852,6 +2852,9 @@
 			* [no]setxfer: Indicate if transfer speed mode setting
 			  should be skipped.
 
+			* [no]fua: Disable or enable FUA (Force Unit Access)
+			  support for devices supporting this feature.
+
 			* dump_id: Dump IDENTIFY data.
 
 			* disable: Disable this device.
Documentation/netlink/specs/fou.yaml new file +130 -0

130 lines not on this page · raw message

Makefile +1 -1
index 1f4696571746..7ae0fee5b79d 100644
@@ -1,7 +1,7 @@
 # SPDX-License-Identifier: GPL-2.0
 VERSION = 6
 PATCHLEVEL = 1
-SUBLEVEL = 161
+SUBLEVEL = 162
 EXTRAVERSION =
 NAME = Curry Ramen
 
arch/arm64/boot/dts/qcom/sc8280xp.dtsi +12 -4
index 6b0d4bc6c541..e502360de601 100644
@@ -1819,8 +1819,12 @@ remoteproc_nsp0: remoteproc@1b300000 {
 			clocks = <&rpmhcc RPMH_CXO_CLK>;
 			clock-names = "xo";
 
-			power-domains = <&rpmhpd SC8280XP_NSP>;
-			power-domain-names = "nsp";
+			power-domains = <&rpmhpd SC8280XP_NSP>,
+					<&rpmhpd SC8280XP_CX>,
+					<&rpmhpd SC8280XP_MXC>;
+			power-domain-names = "nsp",
+					     "cx",
+					     "mxc";
 
 			memory-region = <&pil_nsp0_mem>;
 
@@ -1950,8 +1954,12 @@ remoteproc_nsp1: remoteproc@21300000 {
 			clocks = <&rpmhcc RPMH_CXO_CLK>;
 			clock-names = "xo";
 
-			power-domains = <&rpmhpd SC8280XP_NSP>;
-			power-domain-names = "nsp";
+			power-domains = <&rpmhpd SC8280XP_NSP>,
+					<&rpmhpd SC8280XP_CX>,
+					<&rpmhpd SC8280XP_MXC>;
+			power-domain-names = "nsp",
+					     "cx",
+					     "mxc";
 
 			memory-region = <&pil_nsp1_mem>;
 
arch/arm64/boot/dts/rockchip/rk3399-kobol-helios64.dts +0 -1
index 1eb287a3f8c0..f3d419799708 100644
@@ -427,7 +427,6 @@ &pcie_phy {
 
 &pcie0 {
 	ep-gpios = <&gpio2 RK_PD4 GPIO_ACTIVE_HIGH>;
-	max-link-speed = <2>;
 	num-lanes = <2>;
 	pinctrl-names = "default";
 	status = "okay";
arch/arm64/boot/dts/rockchip/rk3399-nanopi-r4s.dts +0 -1
index 6a6b36c36ce2..0a55aa44effe 100644
@@ -73,7 +73,6 @@ &i2c4 {
 };
 
 &pcie0 {
-	max-link-speed = <1>;
 	num-lanes = <1>;
 	vpcie3v3-supply = <&vcc3v3_sys>;
 };
arch/arm64/kernel/hibernate.c +1 -1
index 788597a6b6a2..aa51a4091c93 100644
@@ -397,7 +397,7 @@ int swsusp_arch_suspend(void)
  * Memory allocated by get_safe_page() will be dealt with by the hibernate code,
  * we don't need to free it here.
  */
-int swsusp_arch_resume(void)
+int __nocfi swsusp_arch_resume(void)
 {
 	int rc;
 	void *zero_page;
arch/arm64/kernel/signal.c +20 -6
index 2461bbffe7d4..9fd7f78d11d1 100644
@@ -317,12 +317,28 @@ static int restore_sve_fpsimd_context(struct user_ctxs *user)
 	fpsimd_flush_task_state(current);
 	/* From now, fpsimd_thread_switch() won't touch thread.sve_state */
 
+	if (sve.flags & SVE_SIG_FLAG_SM) {
+		sme_alloc(current, false);
+		if (!current->thread.za_state)
+			return -ENOMEM;
+	}
+
 	sve_alloc(current, true);
 	if (!current->thread.sve_state) {
 		clear_thread_flag(TIF_SVE);
 		return -ENOMEM;
 	}
 
+	if (sve.flags & SVE_SIG_FLAG_SM) {
+		current->thread.svcr |= SVCR_SM_MASK;
+		set_thread_flag(TIF_SME);
+	} else {
+		current->thread.svcr &= ~SVCR_SM_MASK;
+		set_thread_flag(TIF_SVE);
+	}
+
+	current->thread.fp_type = FP_STATE_SVE;
+
 	err = __copy_from_user(current->thread.sve_state,
 			       (char __user const *)user->sve +
 					SVE_SIG_REGS_OFFSET,
@@ -330,12 +346,6 @@ static int restore_sve_fpsimd_context(struct user_ctxs *user)
 	if (err)
 		return -EFAULT;
 
-	if (sve.flags & SVE_SIG_FLAG_SM)
-		current->thread.svcr |= SVCR_SM_MASK;
-	else
-		set_thread_flag(TIF_SVE);
-	current->thread.fp_type = FP_STATE_SVE;
-
 fpsimd_only:
 	/* copy the FP and status/control registers */
 	/* restore_sigframe() already checked that user->fpsimd != NULL. */
@@ -433,6 +443,10 @@ static int restore_za_context(struct user_ctxs *user)
 	fpsimd_flush_task_state(current);
 	/* From now, fpsimd_thread_switch() won't touch thread.sve_state */
 
+	sve_alloc(current, false);
+	if (!current->thread.sve_state)
+		return -ENOMEM;
+
 	sme_alloc(current, true);
 	if (!current->thread.za_state) {
 		current->thread.svcr &= ~SVCR_ZA_MASK;
arch/loongarch/kernel/perf_event.c +18 -3
index 1563bf47f3e2..bcc296b1583a 100644
@@ -637,6 +637,18 @@ static const struct loongarch_perf_event *loongarch_pmu_map_cache_event(u64 conf
 	return pev;
 }
 
+static inline bool loongarch_pmu_event_requires_counter(const struct perf_event *event)
+{
+	switch (event->attr.type) {
+	case PERF_TYPE_HARDWARE:
+	case PERF_TYPE_HW_CACHE:
+	case PERF_TYPE_RAW:
+		return true;
+	default:
+		return false;
+	}
+}
+
 static int validate_group(struct perf_event *event)
 {
 	struct cpu_hw_events fake_cpuc;
@@ -644,15 +656,18 @@ static int validate_group(struct perf_event *event)
 
 	memset(&fake_cpuc, 0, sizeof(fake_cpuc));
 
-	if (loongarch_pmu_alloc_counter(&fake_cpuc, &leader->hw) < 0)
+	if (loongarch_pmu_event_requires_counter(leader) &&
+	    loongarch_pmu_alloc_counter(&fake_cpuc, &leader->hw) < 0)
 		return -EINVAL;
 
 	for_each_sibling_event(sibling, leader) {
-		if (loongarch_pmu_alloc_counter(&fake_cpuc, &sibling->hw) < 0)
+		if (loongarch_pmu_event_requires_counter(sibling) &&
+		    loongarch_pmu_alloc_counter(&fake_cpuc, &sibling->hw) < 0)
 			return -EINVAL;
 	}
 
-	if (loongarch_pmu_alloc_counter(&fake_cpuc, &event->hw) < 0)
+	if (loongarch_pmu_event_requires_counter(event) &&
+	    loongarch_pmu_alloc_counter(&fake_cpuc, &event->hw) < 0)
 		return -EINVAL;
 
 	return 0;
arch/riscv/include/asm/compat.h +1 -1
index 2ac955b51148..c790ac7bfdd8 100644
@@ -2,7 +2,7 @@
 #ifndef __ASM_COMPAT_H
 #define __ASM_COMPAT_H
 
-#define COMPAT_UTS_MACHINE	"riscv\0\0"
+#define COMPAT_UTS_MACHINE	"riscv32\0\0"
 
 /*
  * Architecture specific compatibility types
arch/x86/events/perf_event.h +11 -2
index a3e1da86181f..b95cab9846dd 100644
@@ -1421,13 +1421,22 @@ static inline bool intel_pmu_has_bts_period(struct perf_event *event, u64 period
 	struct hw_perf_event *hwc = &event->hw;
 	unsigned int hw_event, bts_event;
 
-	if (event->attr.freq)
+	/*
+	 * Only use BTS for fixed rate period==1 events.
+	 */
+	if (event->attr.freq || period != 1)
+		return false;
+
+	/*
+	 * BTS doesn't virtualize.
+	 */
+	if (event->attr.exclude_host)
 		return false;
 
 	hw_event = hwc->config & INTEL_ARCH_EVENT_MASK;
 	bts_event = x86_pmu.event_map(PERF_COUNT_HW_BRANCH_INSTRUCTIONS);
 
-	return hw_event == bts_event && period == 1;
+	return hw_event == bts_event;
 }
 
 static inline bool intel_pmu_has_bts(struct perf_event *event)
arch/x86/include/asm/kfence.h +24 -5
index ff5c7134a37a..acf9ffa1a171 100644
@@ -42,10 +42,34 @@ static inline bool kfence_protect_page(unsigned long addr, bool protect)
 {
 	unsigned int level;
 	pte_t *pte = lookup_address(addr, &level);
+	pteval_t val;
 
 	if (WARN_ON(!pte || level != PG_LEVEL_4K))
 		return false;
 
+	val = pte_val(*pte);
+
+	/*
+	 * protect requires making the page not-present.  If the PTE is
+	 * already in the right state, there's nothing to do.
+	 */
+	if (protect != !!(val & _PAGE_PRESENT))
+		return true;
+
+	/*
+	 * Otherwise, invert the entire PTE.  This avoids writing out an
+	 * L1TF-vulnerable PTE (not present, without the high address bits
+	 * set).
+	 */
+	set_pte(pte, __pte(~val));
+
+	/*
+	 * If the page was protected (non-present) and we're making it
+	 * present, there is no need to flush the TLB at all.
+	 */
+	if (!protect)
+		return true;
+
 	/*
 	 * We need to avoid IPIs, as we may get KFENCE allocations or faults
 	 * with interrupts disabled. Therefore, the below is best-effort, and
@@ -53,11 +77,6 @@ static inline bool kfence_protect_page(unsigned long addr, bool protect)
 	 * lazy fault handling takes care of faults after the page is PRESENT.
 	 */
 
-	if (protect)
-		set_pte(pte, __pte(pte_val(*pte) & ~_PAGE_PRESENT));
-	else
-		set_pte(pte, __pte(pte_val(*pte) | _PAGE_PRESENT));
-
 	/*
 	 * Flush this CPU's TLB, assuming whoever did the allocation/free is
 	 * likely to continue running on this CPU.
arch/x86/kernel/cpu/resctrl/core.c +17 -4
index 72c33ec07ba7..6a52b217cfe2 100644
@@ -728,7 +728,8 @@ static __init bool get_mem_config(void)
 
 	if (boot_cpu_data.x86_vendor == X86_VENDOR_INTEL)
 		return __get_mem_config_intel(&hw_res->r_resctrl);
-	else if (boot_cpu_data.x86_vendor == X86_VENDOR_AMD)
+	else if (boot_cpu_data.x86_vendor == X86_VENDOR_AMD ||
+		 boot_cpu_data.x86_vendor == X86_VENDOR_HYGON)
 		return __rdt_get_mem_config_amd(&hw_res->r_resctrl);
 
 	return false;
@@ -863,7 +864,8 @@ static __init void rdt_init_res_defs(void)
 {
 	if (boot_cpu_data.x86_vendor == X86_VENDOR_INTEL)
 		rdt_init_res_defs_intel();
-	else if (boot_cpu_data.x86_vendor == X86_VENDOR_AMD)
+	else if (boot_cpu_data.x86_vendor == X86_VENDOR_AMD ||
+		 boot_cpu_data.x86_vendor == X86_VENDOR_HYGON)
 		rdt_init_res_defs_amd();
 }
 
@@ -894,8 +896,19 @@ void resctrl_cpu_detect(struct cpuinfo_x86 *c)
 		c->x86_cache_occ_scale = ebx;
 		c->x86_cache_mbm_width_offset = eax & 0xff;
 
-		if (c->x86_vendor == X86_VENDOR_AMD && !c->x86_cache_mbm_width_offset)
-			c->x86_cache_mbm_width_offset = MBM_CNTR_WIDTH_OFFSET_AMD;
+		if (!c->x86_cache_mbm_width_offset) {
+			switch (c->x86_vendor) {
+			case X86_VENDOR_AMD:
+				c->x86_cache_mbm_width_offset = MBM_CNTR_WIDTH_OFFSET_AMD;
+				break;
+			case X86_VENDOR_HYGON:
+				c->x86_cache_mbm_width_offset = MBM_CNTR_WIDTH_OFFSET_HYGON;
+				break;
+			default:
+				/* Leave c->x86_cache_mbm_width_offset as 0 */
+				break;
+			}
+		}
 	}
 }
 
arch/x86/kernel/cpu/resctrl/internal.h +3 -0
index 4761d489a117..c699f3a035cc 100644
@@ -31,6 +31,9 @@
 #define MAX_MBA_BW_AMD			0x800
 #define MBM_CNTR_WIDTH_OFFSET_AMD	20
 
+/* Hygon MBM counter width as an offset from MBM_CNTR_WIDTH_BASE */
+#define MBM_CNTR_WIDTH_OFFSET_HYGON	8
+
 #define RMID_VAL_ERROR			BIT_ULL(63)
 #define RMID_VAL_UNAVAIL		BIT_ULL(62)
 /*
arch/x86/kernel/fpu/core.c +29 -3
index 0068648cb7fb..2805ce8f0259 100644
@@ -294,10 +294,29 @@ EXPORT_SYMBOL_GPL(fpu_enable_guest_xfd_features);
 #ifdef CONFIG_X86_64
 void fpu_update_guest_xfd(struct fpu_guest *guest_fpu, u64 xfd)
 {
+	struct fpstate *fpstate = guest_fpu->fpstate;
+
 	fpregs_lock();
-	guest_fpu->fpstate->xfd = xfd;
-	if (guest_fpu->fpstate->in_use)
-		xfd_update_state(guest_fpu->fpstate);
+
+	/*
+	 * KVM's guest ABI is that setting XFD[i]=1 *can* immediately revert the
+	 * save state to its initial configuration.  Likewise, KVM_GET_XSAVE does
+	 * the same as XSAVE and returns XSTATE_BV[i]=0 whenever XFD[i]=1.
+	 *
+	 * If the guest's FPU state is in hardware, just update XFD: the XSAVE
+	 * in fpu_swap_kvm_fpstate will clear XSTATE_BV[i] whenever XFD[i]=1.
+	 *
+	 * If however the guest's FPU state is NOT resident in hardware, clear
+	 * disabled components in XSTATE_BV now, or a subsequent XRSTOR will
+	 * attempt to load disabled components and generate #NM _in the host_.
+	 */
+	if (xfd && test_thread_flag(TIF_NEED_FPU_LOAD))
+		fpstate->regs.xsave.header.xfeatures &= ~xfd;
+
+	fpstate->xfd = xfd;
+	if (fpstate->in_use)
+		xfd_update_state(fpstate);
+
 	fpregs_unlock();
 }
 EXPORT_SYMBOL_GPL(fpu_update_guest_xfd);
@@ -405,6 +424,13 @@ int fpu_copy_uabi_to_guest_fpstate(struct fpu_guest *gfpu, const void *buf,
 	if (ustate->xsave.header.xfeatures & ~xcr0)
 		return -EINVAL;
 
+	/*
+	 * Disabled features must be in their initial state, otherwise XRSTOR
+	 * causes an exception.
+	 */
+	if (WARN_ON_ONCE(ustate->xsave.header.xfeatures & kstate->xfd))
+		return -EINVAL;
+
 	/*
 	 * Nullify @vpkru to preserve its current value if PKRU's bit isn't set
 	 * in the header.  KVM's odd ABI is to leave PKRU untouched in this
arch/x86/kvm/x86.c +9 -0
index 1eb685d4b452..3d63609b91de 100644
@@ -5341,9 +5341,18 @@ static void kvm_vcpu_ioctl_x86_get_xsave(struct kvm_vcpu *vcpu,
 static int kvm_vcpu_ioctl_x86_set_xsave(struct kvm_vcpu *vcpu,
 					struct kvm_xsave *guest_xsave)
 {
+	union fpregs_state *xstate = (union fpregs_state *)guest_xsave->region;
+
 	if (fpstate_is_confidential(&vcpu->arch.guest_fpu))
 		return 0;
 
+	/*
+	 * For backwards compatibility, do not expect disabled features to be in
+	 * their initial state.  XSTATE_BV[i] must still be cleared whenever
+	 * XFD[i]=1, or XRSTOR would cause a #NM.
+	 */
+	xstate->xsave.header.xfeatures &= ~vcpu->arch.guest_fpu.fpstate->xfd;
+
 	return fpu_copy_uabi_to_guest_fpstate(&vcpu->arch.guest_fpu,
 					      guest_xsave->region,
 					      kvm_caps.supported_xcr0,
arch/x86/mm/fault.c +5 -10
index 2fc007752ceb..54f8fe0ea5a9 100644
@@ -835,8 +835,6 @@ __bad_area_nosemaphore(struct pt_regs *regs, unsigned long error_code,
 		force_sig_pkuerr((void __user *)address, pkey);
 	else
 		force_sig_fault(SIGSEGV, si_code, (void __user *)address);
-
-	local_irq_disable();
 }
 
 static noinline void
@@ -1429,15 +1427,12 @@ handle_page_fault(struct pt_regs *regs, unsigned long error_code,
 		do_kern_addr_fault(regs, error_code, address);
 	} else {
 		do_user_addr_fault(regs, error_code, address);
-		/*
-		 * User address page fault handling might have reenabled
-		 * interrupts. Fixing up all potential exit points of
-		 * do_user_addr_fault() and its leaf functions is just not
-		 * doable w/o creating an unholy mess or turning the code
-		 * upside down.
-		 */
-		local_irq_disable();
 	}
+	/*
+	 * page fault handling might have reenabled interrupts,
+	 * make sure to disable them again.
+	 */
+	local_irq_disable();
 }
 
 DEFINE_IDTENTRY_RAW_ERRORCODE(exc_page_fault)
arch/x86/mm/kaslr.c +5 -5
index e0b0ec0f8245..7e3dc0cead96 100644
@@ -111,12 +111,12 @@ void __init kernel_randomize_memory(void)
 
 	/*
 	 * Adapt physical memory region size based on available memory,
-	 * except when CONFIG_PCI_P2PDMA is enabled. P2PDMA exposes the
-	 * device BAR space assuming the direct map space is large enough
-	 * for creating a ZONE_DEVICE mapping in the direct map corresponding
-	 * to the physical BAR address.
+	 * except when CONFIG_ZONE_DEVICE is enabled. ZONE_DEVICE wants to map
+	 * any physical address into the direct-map. KASLR wants to reliably
+	 * steal some physical address bits. Those design choices are in direct
+	 * conflict.
 	 */
-	if (!IS_ENABLED(CONFIG_PCI_P2PDMA) && (memory_tb < kaslr_regions[0].size_tb))
+	if (!IS_ENABLED(CONFIG_ZONE_DEVICE) && (memory_tb < kaslr_regions[0].size_tb))
 		kaslr_regions[0].size_tb = memory_tb;
 
 	/*
block/blk-cgroup.c +4 -0
index ef596fc10465..f314192b6de8 100644
@@ -531,8 +531,12 @@ static int blkcg_reset_stats(struct cgroup_subsys_state *css,
 			struct blkg_iostat_set *bis =
 				per_cpu_ptr(blkg->iostat_cpu, cpu);
 			memset(bis, 0, sizeof(*bis));
+
+			/* Re-initialize the cleared blkg_iostat_set */
+			u64_stats_init(&bis->sync);
 		}
 		memset(&blkg->iostat, 0, sizeof(blkg->iostat));
+		u64_stats_init(&blkg->iostat.sync);
 
 		for (i = 0; i < BLKCG_MAX_POLS; i++) {
 			struct blkcg_policy *pol = blkcg_policy[i];
crypto/authencesn.c +6 -0
index b60e61b1904c..6487b35851d5 100644
@@ -191,6 +191,9 @@ static int crypto_authenc_esn_encrypt(struct aead_request *req)
 	struct scatterlist *src, *dst;
 	int err;
 
+	if (assoclen < 8)
+		return -EINVAL;
+
 	sg_init_table(areq_ctx->src, 2);
 	src = scatterwalk_ffwd(areq_ctx->src, req->src, assoclen);
 	dst = src;
@@ -284,6 +287,9 @@ static int crypto_authenc_esn_decrypt(struct aead_request *req)
 	u32 tmp[2];
 	int err;
 
+	if (assoclen < 8)
+		return -EINVAL;
+
 	cryptlen -= authsize;
 
 	if (req->src != dst) {
drivers/ata/libata-core.c +60 -2

103 lines not on this page · raw message

drivers/ata/libata-scsi.c +2 -28
index c838bc8cc4f3..430970db482a 100644
@@ -2283,30 +2283,6 @@ static unsigned int ata_msense_rw_recovery(u8 *buf, bool changeable)
 	return sizeof(def_rw_recovery_mpage);
 }
 
-/*
- * We can turn this into a real blacklist if it's needed, for now just
- * blacklist any Maxtor BANC1G10 revision firmware
- */
-static int ata_dev_supports_fua(u16 *id)
-{
-	unsigned char model[ATA_ID_PROD_LEN + 1], fw[ATA_ID_FW_REV_LEN + 1];
-
-	if (!libata_fua)
-		return 0;
-	if (!ata_id_has_fua(id))
-		return 0;
-
-	ata_id_c_string(id, model, ATA_ID_PROD, sizeof(model));
-	ata_id_c_string(id, fw, ATA_ID_FW_REV, sizeof(fw));
-
-	if (strcmp(model, "Maxtor"))
-		return 1;
-	if (strcmp(fw, "BANC1G10"))
-		return 1;
-
-	return 0; /* blacklisted */
-}
-
 /**
  *	ata_scsiop_mode_sense - Simulate MODE SENSE 6, 10 commands
  *	@args: device IDENTIFY data / SCSI command of interest.
@@ -2330,7 +2306,7 @@ static unsigned int ata_scsiop_mode_sense(struct ata_scsi_args *args, u8 *rbuf)
 	};
 	u8 pg, spg;
 	unsigned int ebd, page_control, six_byte;
-	u8 dpofua, bp = 0xff;
+	u8 dpofua = 0, bp = 0xff;
 	u16 fp;
 
 	six_byte = (scsicmd[0] == MODE_SENSE);
@@ -2393,9 +2369,7 @@ static unsigned int ata_scsiop_mode_sense(struct ata_scsi_args *args, u8 *rbuf)
 		goto invalid_fld;
 	}
 
-	dpofua = 0;
-	if (ata_dev_supports_fua(args->id) && (dev->flags & ATA_DFLAG_LBA48) &&
-	    (!(dev->flags & ATA_DFLAG_PIO) || dev->multi_count))
+	if (dev->flags & ATA_DFLAG_FUA)
 		dpofua = 1 << 4;
 
 	if (six_byte) {
drivers/base/regmap/regmap.c +3 -1
index bdbde64e4b21..bc89790ff0de 100644
@@ -462,9 +462,11 @@ static void regmap_lock_hwlock_irq(void *__map)
 static void regmap_lock_hwlock_irqsave(void *__map)
 {
 	struct regmap *map = __map;
+	unsigned long flags = 0;
 
 	hwspin_lock_timeout_irqsave(map->hwlock, UINT_MAX,
-				    &map->spinlock_flags);
+				    &flags);
+	map->spinlock_flags = flags;
 }
 
 static void regmap_unlock_hwlock(void *__map)
drivers/block/xen-blkback/xenbus.c +1 -3
index c0227dfa4688..4807af1d5805 100644
@@ -524,7 +524,7 @@ static int xen_vbd_create(struct xen_blkif *blkif, blkif_vdev_t handle,
 	return 0;
 }
 
-static int xen_blkbk_remove(struct xenbus_device *dev)
+static void xen_blkbk_remove(struct xenbus_device *dev)
 {
 	struct backend_info *be = dev_get_drvdata(&dev->dev);
 
@@ -547,8 +547,6 @@ static int xen_blkbk_remove(struct xenbus_device *dev)
 		/* Put the reference we set in xen_blkif_alloc(). */
 		xen_blkif_put(be->blkif);
 	}
-
-	return 0;
 }
 
 int xen_blkbk_flush_diskcache(struct xenbus_transaction xbt,
drivers/block/xen-blkfront.c +1 -2
index 5ddf393aa390..8f91c48cbd37 100644
@@ -2469,7 +2469,7 @@ static void blkback_changed(struct xenbus_device *dev,
 	}
 }
 
-static int blkfront_remove(struct xenbus_device *xbdev)
+static void blkfront_remove(struct xenbus_device *xbdev)
 {
 	struct blkfront_info *info = dev_get_drvdata(&xbdev->dev);
 
@@ -2490,7 +2490,6 @@ static int blkfront_remove(struct xenbus_device *xbdev)
 	}
 
 	kfree(info);
-	return 0;
 }
 
 static int blkfront_is_ready(struct xenbus_device *dev)
drivers/bluetooth/hci_ldisc.c +2 -2
index 6a90fc69ef44..2752857dbccf 100644
@@ -687,6 +687,8 @@ static int hci_uart_register_dev(struct hci_uart *hu)
 		return err;
 	}
 
+	set_bit(HCI_UART_PROTO_INIT, &hu->flags);
+
 	if (test_bit(HCI_UART_INIT_PENDING, &hu->hdev_flags))
 		return 0;
 
@@ -714,8 +716,6 @@ static int hci_uart_set_proto(struct hci_uart *hu, int id)
 
 	hu->proto = p;
 
-	set_bit(HCI_UART_PROTO_INIT, &hu->flags);
-
 	err = hci_uart_register_dev(hu);
 	if (err) {
 		return err;
drivers/char/tpm/xen-tpmfront.c +1 -2
index 379291826261..80cca3b83b22 100644
@@ -360,14 +360,13 @@ static int tpmfront_probe(struct xenbus_device *dev,
 	return tpm_chip_register(priv->chip);
 }
 
-static int tpmfront_remove(struct xenbus_device *dev)
+static void tpmfront_remove(struct xenbus_device *dev)
 {
 	struct tpm_chip *chip = dev_get_drvdata(&dev->dev);
 	struct tpm_private *priv = dev_get_drvdata(&chip->dev);
 	tpm_chip_unregister(chip);
 	ring_free(priv);
 	dev_set_drvdata(&chip->dev, NULL);
-	return 0;
 }
 
 static int tpmfront_resume(struct xenbus_device *dev)
drivers/clocksource/timer-riscv.c +2 -1
index a01c2bd24134..e36cecede518 100644
@@ -37,8 +37,9 @@ static int riscv_clock_next_event(unsigned long delta,
 	csr_set(CSR_IE, IE_TIE);
 	if (static_branch_likely(&riscv_sstc_available)) {
 #if defined(CONFIG_32BIT)
-		csr_write(CSR_STIMECMP, next_tval & 0xFFFFFFFF);
+		csr_write(CSR_STIMECMP, ULONG_MAX);
 		csr_write(CSR_STIMECMPH, next_tval >> 32);
+		csr_write(CSR_STIMECMP, next_tval & 0xFFFFFFFF);
 #else
 		csr_write(CSR_STIMECMP, next_tval);
 #endif
drivers/comedi/comedi_fops.c +1 -1
index e68e6d527b87..3937d7317d2c 100644
@@ -1095,7 +1095,7 @@ static int do_chaninfo_ioctl(struct comedi_device *dev,
 		for (i = 0; i < s->n_chan; i++) {
 			int x;
 
-			x = (dev->minor << 28) | (it->subdev << 24) | (i << 16) |
+			x = (it->subdev << 24) | (i << 16) |
 			    (s->range_table_list[i]->length);
 			if (put_user(x, it->rangelist + i))
 				return -EFAULT;
drivers/comedi/drivers/dmm32at.c +30 -2
index fe023c722aa3..d17cba93578c 100644
@@ -330,6 +330,7 @@ static int dmm32at_ai_cmdtest(struct comedi_device *dev,
 
 static void dmm32at_setaitimer(struct comedi_device *dev, unsigned int nansec)
 {
+	unsigned long irq_flags;
 	unsigned char lo1, lo2, hi2;
 	unsigned short both2;
 
@@ -342,6 +343,9 @@ static void dmm32at_setaitimer(struct comedi_device *dev, unsigned int nansec)
 	/* set counter clocks to 10MHz, disable all aux dio */
 	outb(0, dev->iobase + DMM32AT_CTRDIO_CFG_REG);
 
+	/* serialize access to control register and paged registers */
+	spin_lock_irqsave(&dev->spinlock, irq_flags);
+
 	/* get access to the clock regs */
 	outb(DMM32AT_CTRL_PAGE_8254, dev->iobase + DMM32AT_CTRL_REG);
 
@@ -354,6 +358,8 @@ static void dmm32at_setaitimer(struct comedi_device *dev, unsigned int nansec)
 	outb(lo2, dev->iobase + DMM32AT_CLK2);
 	outb(hi2, dev->iobase + DMM32AT_CLK2);
 
+	spin_unlock_irqrestore(&dev->spinlock, irq_flags);
+
 	/* enable the ai conversion interrupt and the clock to start scans */
 	outb(DMM32AT_INTCLK_ADINT |
 	     DMM32AT_INTCLK_CLKEN | DMM32AT_INTCLK_CLKSEL,
@@ -363,13 +369,19 @@ static void dmm32at_setaitimer(struct comedi_device *dev, unsigned int nansec)
 static int dmm32at_ai_cmd(struct comedi_device *dev, struct comedi_subdevice *s)
 {
 	struct comedi_cmd *cmd = &s->async->cmd;
+	unsigned long irq_flags;
 	int ret;
 
 	dmm32at_ai_set_chanspec(dev, s, cmd->chanlist[0], cmd->chanlist_len);
 
+	/* serialize access to control register and paged registers */
+	spin_lock_irqsave(&dev->spinlock, irq_flags);
+
 	/* reset the interrupt just in case */
 	outb(DMM32AT_CTRL_INTRST, dev->iobase + DMM32AT_CTRL_REG);
 
+	spin_unlock_irqrestore(&dev->spinlock, irq_flags);
+
 	/*
 	 * wait for circuit to settle
 	 * we don't have the 'insn' here but it's not needed
@@ -429,8 +441,13 @@ static irqreturn_t dmm32at_isr(int irq, void *d)
 		comedi_handle_events(dev, s);
 	}
 
+	/* serialize access to control register and paged registers */
+	spin_lock(&dev->spinlock);
+
 	/* reset the interrupt */
 	outb(DMM32AT_CTRL_INTRST, dev->iobase + DMM32AT_CTRL_REG);
+
+	spin_unlock(&dev->spinlock);
 	return IRQ_HANDLED;
 }
 
@@ -481,14 +498,25 @@ static int dmm32at_ao_insn_write(struct comedi_device *dev,
 static int dmm32at_8255_io(struct comedi_device *dev,
 			   int dir, int port, int data, unsigned long regbase)
 {
+	unsigned long irq_flags;
+	int ret;
+
+	/* serialize access to control register and paged registers */
+	spin_lock_irqsave(&dev->spinlock, irq_flags);
+
 	/* get access to the DIO regs */
 	outb(DMM32AT_CTRL_PAGE_8255, dev->iobase + DMM32AT_CTRL_REG);
 
 	if (dir) {
 		outb(data, dev->iobase + regbase + port);
-		return 0;
+		ret = 0;
+	} else {
+		ret = inb(dev->iobase + regbase + port);
 	}
-	return inb(dev->iobase + regbase + port);
+
+	spin_unlock_irqrestore(&dev->spinlock, irq_flags);
+
+	return ret;
 }
 
 /* Make sure the board is there and put it to a known state */
drivers/comedi/range.c +1 -1
index 8f43cf88d784..5b8f662365e3 100644
@@ -52,7 +52,7 @@ int do_rangeinfo_ioctl(struct comedi_device *dev,
 	const struct comedi_lrange *lr;
 	struct comedi_subdevice *s;
 
-	subd = (it->range_type >> 24) & 0xf;
+	subd = (it->range_type >> 24) & 0xff;
 	chan = (it->range_type >> 16) & 0xff;
 
 	if (!dev->attached)
drivers/crypto/qat/qat_common/adf_common_drv.h +1 -0
index d2bc2361cd06..86aebe07db44 100644
@@ -194,6 +194,7 @@ int qat_uclo_set_cfg_ae_mask(struct icp_qat_fw_loader_handle *handle,
 int adf_init_misc_wq(void);
 void adf_exit_misc_wq(void);
 bool adf_misc_wq_queue_work(struct work_struct *work);
+void adf_misc_wq_flush(void);
 #if defined(CONFIG_PCI_IOV)
 int adf_sriov_configure(struct pci_dev *pdev, int numvfs);
 void adf_disable_sriov(struct adf_accel_dev *accel_dev);
drivers/crypto/qat/qat_common/adf_init.c +1 -0
index 49f07584f8c9..9d54dc3beafd 100644
@@ -337,6 +337,7 @@ void adf_dev_shutdown(struct adf_accel_dev *accel_dev)
 		hw_data->exit_admin_comms(accel_dev);
 
 	adf_cleanup_etr_data(accel_dev);
+	adf_misc_wq_flush();
 	adf_dev_restore(accel_dev);
 }
 EXPORT_SYMBOL_GPL(adf_dev_shutdown);
drivers/crypto/qat/qat_common/adf_isr.c +5 -0
index ad9e135b8560..e41ae70d69ed 100644
@@ -380,3 +380,8 @@ bool adf_misc_wq_queue_work(struct work_struct *work)
 {
 	return queue_work(adf_misc_wq, work);
 }
+
+void adf_misc_wq_flush(void)
+{
+	flush_workqueue(adf_misc_wq);
+}
drivers/dma/apple-admac.c +1 -0
index 1e6d13278c5a..65c18da33c59 100644
@@ -937,6 +937,7 @@ static int admac_remove(struct platform_device *pdev)
 }
 
 static const struct of_device_id admac_of_match[] = {
+	{ .compatible = "apple,t8103-admac", },
 	{ .compatible = "apple,admac", },
 	{ }
 };
drivers/dma/at_hdmac.c +7 -2
index 858bd64f1313..0f5134103f91 100644
@@ -1586,6 +1586,7 @@ static void atc_free_chan_resources(struct dma_chan *chan)
 {
 	struct at_dma_chan	*atchan = to_at_dma_chan(chan);
 	struct at_dma		*atdma = to_at_dma(chan->device);
+	struct at_dma_slave	*atslave;
 	struct at_desc		*desc, *_desc;
 	LIST_HEAD(list);
 
@@ -1606,8 +1607,12 @@ static void atc_free_chan_resources(struct dma_chan *chan)
 	/*
 	 * Free atslave allocated in at_dma_xlate()
 	 */
-	kfree(chan->private);
-	chan->private = NULL;
+	atslave = chan->private;
+	if (atslave) {
+		put_device(atslave->dma_dev);
+		kfree(atslave);
+		chan->private = NULL;
+	}
 
 	dev_vdbg(chan2dev(chan), "free_chan_resources: done\n");
 }
drivers/dma/bcm-sba-raid.c +5 -1
index 064761289a73..788a89c8c7d6 100644
@@ -1697,7 +1697,7 @@ static int sba_probe(struct platform_device *pdev)
 	/* Prealloc channel resource */
 	ret = sba_prealloc_channel_resources(sba);
 	if (ret)
-		goto fail_free_mchan;
+		goto fail_put_mbox;
 
 	/* Check availability of debugfs */
 	if (!debugfs_initialized())
@@ -1727,6 +1727,8 @@ static int sba_probe(struct platform_device *pdev)
 fail_free_resources:
 	debugfs_remove_recursive(sba->root);
 	sba_freeup_channel_resources(sba);
+fail_put_mbox:
+	put_device(sba->mbox_dev);
 fail_free_mchan:
 	mbox_free_channel(sba->mchan);
 	return ret;
@@ -1742,6 +1744,8 @@ static int sba_remove(struct platform_device *pdev)
 
 	sba_freeup_channel_resources(sba);
 
+	put_device(sba->mbox_dev);
+
 	mbox_free_channel(sba->mchan);
 
 	return 0;
drivers/dma/dw/rzn1-dmamux.c +3 -1
index e7d87d952648..e548446e7e25 100644
@@ -88,7 +88,7 @@ static void *rzn1_dmamux_route_allocate(struct of_phandle_args *dma_spec,
 
 	if (test_and_set_bit(map->req_idx, dmamux->used_chans)) {
 		ret = -EBUSY;
-		goto free_map;
+		goto put_dma_spec_np;
 	}
 
 	mask = BIT(map->req_idx);
@@ -101,6 +101,8 @@ static void *rzn1_dmamux_route_allocate(struct of_phandle_args *dma_spec,
 
 clear_bitmap:
 	clear_bit(map->req_idx, dmamux->used_chans);
+put_dma_spec_np:
+	of_node_put(dma_spec->np);
 free_map:
 	kfree(map);
 put_device:
drivers/dma/idxd/compat.c +19 -4
index 3df21615f888..940a4996b1cb 100644
@@ -21,11 +21,16 @@ static ssize_t unbind_store(struct device_driver *drv, const char *buf, size_t c
 	int rc = -ENODEV;
 
 	dev = bus_find_device_by_name(bus, NULL, buf);
-	if (dev && dev->driver) {
+	if (!dev)
+		return -ENODEV;
+
+	if (dev->driver) {
 		device_driver_detach(dev);
 		rc = count;
 	}
 
+	put_device(dev);
+
 	return rc;
 }
 static DRIVER_ATTR_IGNORE_LOCKDEP(unbind, 0200, NULL, unbind_store);
@@ -39,9 +44,12 @@ static ssize_t bind_store(struct device_driver *drv, const char *buf, size_t cou
 	struct idxd_dev *idxd_dev;
 
 	dev = bus_find_device_by_name(bus, NULL, buf);
-	if (!dev || dev->driver || drv != &dsa_drv.drv)
+	if (!dev)
 		return -ENODEV;
 
+	if (dev->driver || drv != &dsa_drv.drv)
+		goto err_put_dev;
+
 	idxd_dev = confdev_to_idxd_dev(dev);
 	if (is_idxd_dev(idxd_dev)) {
 		alt_drv = driver_find("idxd", bus);
@@ -54,13 +62,20 @@ static ssize_t bind_store(struct device_driver *drv, const char *buf, size_t cou
 			alt_drv = driver_find("user", bus);
 	}
 	if (!alt_drv)
-		return -ENODEV;
+		goto err_put_dev;
 
 	rc = device_driver_attach(alt_drv, dev);
 	if (rc < 0)
-		return rc;
+		goto err_put_dev;
+
+	put_device(dev);
 
 	return count;
+
+err_put_dev:
+	put_device(dev);
+
+	return rc;
 }
 static DRIVER_ATTR_IGNORE_LOCKDEP(bind, 0200, NULL, bind_store);
 
drivers/dma/lpc18xx-dmamux.c +14 -5
index df98cae8792b..96b51125cfa7 100644
@@ -55,30 +55,31 @@ static void *lpc18xx_dmamux_reserve(struct of_phandle_args *dma_spec,
 	struct lpc18xx_dmamux_data *dmamux = platform_get_drvdata(pdev);
 	unsigned long flags;
 	unsigned mux;
+	int ret = -EINVAL;
 
 	if (dma_spec->args_count != 3) {
 		dev_err(&pdev->dev, "invalid number of dma mux args\n");
-		return ERR_PTR(-EINVAL);
+		goto err_put_pdev;
 	}
 
 	mux = dma_spec->args[0];
 	if (mux >= dmamux->dma_master_requests) {
 		dev_err(&pdev->dev, "invalid mux number: %d\n",
 			dma_spec->args[0]);
-		return ERR_PTR(-EINVAL);
+		goto err_put_pdev;
 	}
 
 	if (dma_spec->args[1] > LPC18XX_DMAMUX_MAX_VAL) {
 		dev_err(&pdev->dev, "invalid dma mux value: %d\n",
 			dma_spec->args[1]);
-		return ERR_PTR(-EINVAL);
+		goto err_put_pdev;
 	}
 
 	/* The of_node_put() will be done in the core for the node */
 	dma_spec->np = of_parse_phandle(ofdma->of_node, "dma-masters", 0);
 	if (!dma_spec->np) {
 		dev_err(&pdev->dev, "can't get dma master\n");
-		return ERR_PTR(-EINVAL);
+		goto err_put_pdev;
 	}
 
 	spin_lock_irqsave(&dmamux->lock, flags);
@@ -87,7 +88,8 @@ static void *lpc18xx_dmamux_reserve(struct of_phandle_args *dma_spec,
 		dev_err(&pdev->dev, "dma request %u busy with %u.%u\n",
 			mux, mux, dmamux->muxes[mux].value);
 		of_node_put(dma_spec->np);
-		return ERR_PTR(-EBUSY);
+		ret = -EBUSY;
+		goto err_put_pdev;
 	}
 
 	dmamux->muxes[mux].busy = true;
@@ -104,7 +106,14 @@ static void *lpc18xx_dmamux_reserve(struct of_phandle_args *dma_spec,
 	dev_dbg(&pdev->dev, "mapping dmamux %u.%u to dma request %u\n", mux,
 		dmamux->muxes[mux].value, mux);
 
+	put_device(&pdev->dev);
+
 	return &dmamux->muxes[mux];
+
+err_put_pdev:
+	put_device(&pdev->dev);
+
+	return ERR_PTR(ret);
 }
 
 static int lpc18xx_dmamux_probe(struct platform_device *pdev)
drivers/dma/qcom/gpi.c +4 -2
index db6d0dc308d2..846b532d77a5 100644
@@ -1621,14 +1621,16 @@ static int
 gpi_peripheral_config(struct dma_chan *chan, struct dma_slave_config *config)
 {
 	struct gchan *gchan = to_gchan(chan);
+	void *new_config;
 
 	if (!config->peripheral_config)
 		return -EINVAL;
 
-	gchan->config = krealloc(gchan->config, config->peripheral_size, GFP_NOWAIT);
-	if (!gchan->config)
+	new_config = krealloc(gchan->config, config->peripheral_size, GFP_NOWAIT);
+	if (!new_config)
 		return -ENOMEM;
 
+	gchan->config = new_config;
 	memcpy(gchan->config, config->peripheral_config, config->peripheral_size);
 
 	return 0;
drivers/dma/sh/rz-dmac.c +5 -0
index 2967141f4e7b..2f40e8df64b2 100644
@@ -533,11 +533,16 @@ rz_dmac_prep_slave_sg(struct dma_chan *chan, struct scatterlist *sgl,
 static int rz_dmac_terminate_all(struct dma_chan *chan)
 {
 	struct rz_dmac_chan *channel = to_rz_dmac_chan(chan);
+	struct rz_lmdesc *lmdesc = channel->lmdesc.base;
 	unsigned long flags;
+	unsigned int i;
 	LIST_HEAD(head);
 
 	rz_dmac_disable_hw(channel);
 	spin_lock_irqsave(&channel->vc.lock, flags);
+	for (i = 0; i < DMAC_NR_LMDESC; i++)
+		lmdesc[i].header = 0;
+
 	list_splice_tail_init(&channel->ld_active, &channel->ld_free);
 	list_splice_tail_init(&channel->ld_queue, &channel->ld_free);
 	spin_unlock_irqrestore(&channel->vc.lock, flags);
drivers/dma/stm32-dmamux.c +15 -7
index ee3cbbf51006..1802ea915776 100644
@@ -88,23 +88,25 @@ static void *stm32_dmamux_route_allocate(struct of_phandle_args *dma_spec,
 	struct stm32_dmamux_data *dmamux = platform_get_drvdata(pdev);
 	struct stm32_dmamux *mux;
 	u32 i, min, max;
-	int ret;
+	int ret = -EINVAL;
 	unsigned long flags;
 
 	if (dma_spec->args_count != 3) {
 		dev_err(&pdev->dev, "invalid number of dma mux args\n");
-		return ERR_PTR(-EINVAL);
+		goto err_put_pdev;
 	}
 
 	if (dma_spec->args[0] > dmamux->dmamux_requests) {
 		dev_err(&pdev->dev, "invalid mux request number: %d\n",
 			dma_spec->args[0]);
-		return ERR_PTR(-EINVAL);
+		goto err_put_pdev;
 	}
 
 	mux = kzalloc(sizeof(*mux), GFP_KERNEL);
-	if (!mux)
-		return ERR_PTR(-ENOMEM);
+	if (!mux) {
+		ret = -ENOMEM;
+		goto err_put_pdev;
+	}
 
 	spin_lock_irqsave(&dmamux->lock, flags);
 	mux->chan_id = find_first_zero_bit(dmamux->dma_inuse,
@@ -131,7 +133,6 @@ static void *stm32_dmamux_route_allocate(struct of_phandle_args *dma_spec,
 	dma_spec->np = of_parse_phandle(ofdma->of_node, "dma-masters", i - 1);
 	if (!dma_spec->np) {
 		dev_err(&pdev->dev, "can't get dma master\n");
-		ret = -EINVAL;
 		goto error;
 	}
 
@@ -140,7 +141,7 @@ static void *stm32_dmamux_route_allocate(struct of_phandle_args *dma_spec,
 	ret = pm_runtime_resume_and_get(&pdev->dev);
 	if (ret < 0) {
 		spin_unlock_irqrestore(&dmamux->lock, flags);
-		goto error;
+		goto err_put_dma_spec_np;
 	}
 	spin_unlock_irqrestore(&dmamux->lock, flags);
 
@@ -158,13 +159,20 @@ static void *stm32_dmamux_route_allocate(struct of_phandle_args *dma_spec,
 	dev_dbg(&pdev->dev, "Mapping DMAMUX(%u) to DMA%u(%u)\n",
 		mux->request, mux->master, mux->chan_id);
 
+	put_device(&pdev->dev);
+
 	return mux;
 
+err_put_dma_spec_np:
+	of_node_put(dma_spec->np);
 error:
 	clear_bit(mux->chan_id, dmamux->dma_inuse);
 
 error_chan_id:
 	kfree(mux);
+err_put_pdev:
+	put_device(&pdev->dev);
+
 	return ERR_PTR(ret);
 }
 
drivers/dma/tegra210-adma.c +9 -1
index 79da93cc77b6..db79e92f5e61 100644
@@ -341,10 +341,17 @@ static void tegra_adma_stop(struct tegra_adma_chan *tdc)
 		return;
 	}
 
-	kfree(tdc->desc);
+	vchan_terminate_vdesc(&tdc->desc->vd);
 	tdc->desc = NULL;
 }
 
+static void tegra_adma_synchronize(struct dma_chan *dc)
+{
+	struct tegra_adma_chan *tdc = to_tegra_adma_chan(dc);
+
+	vchan_synchronize(&tdc->vc);
+}
+
 static void tegra_adma_start(struct tegra_adma_chan *tdc)
 {
 	struct virt_dma_desc *vd = vchan_next_desc(&tdc->vc);
@@ -910,6 +917,7 @@ static int tegra_adma_probe(struct platform_device *pdev)
 	tdma->dma_dev.device_config = tegra_adma_slave_config;
 	tdma->dma_dev.device_tx_status = tegra_adma_tx_status;
 	tdma->dma_dev.device_terminate_all = tegra_adma_terminate_all;
+	tdma->dma_dev.device_synchronize = tegra_adma_synchronize;
 	tdma->dma_dev.src_addr_widths = BIT(DMA_SLAVE_BUSWIDTH_4_BYTES);
 	tdma->dma_dev.dst_addr_widths = BIT(DMA_SLAVE_BUSWIDTH_4_BYTES);
 	tdma->dma_dev.directions = BIT(DMA_DEV_TO_MEM) | BIT(DMA_MEM_TO_DEV);
drivers/dma/ti/dma-crossbar.c +12 -6
index f744ddbbbad7..d1a25524aa70 100644
@@ -78,34 +78,35 @@ static void *ti_am335x_xbar_route_allocate(struct of_phandle_args *dma_spec,
 {
 	struct platform_device *pdev = of_find_device_by_node(ofdma->of_node);
 	struct ti_am335x_xbar_data *xbar = platform_get_drvdata(pdev);
-	struct ti_am335x_xbar_map *map;
+	struct ti_am335x_xbar_map *map = ERR_PTR(-EINVAL);
 
 	if (dma_spec->args_count != 3)
-		return ERR_PTR(-EINVAL);
+		goto out_put_pdev;
 
 	if (dma_spec->args[2] >= xbar->xbar_events) {
 		dev_err(&pdev->dev, "Invalid XBAR event number: %d\n",
 			dma_spec->args[2]);
-		return ERR_PTR(-EINVAL);
+		goto out_put_pdev;
 	}
 
 	if (dma_spec->args[0] >= xbar->dma_requests) {
 		dev_err(&pdev->dev, "Invalid DMA request line number: %d\n",
 			dma_spec->args[0]);
-		return ERR_PTR(-EINVAL);
+		goto out_put_pdev;
 	}
 
 	/* The of_node_put() will be done in the core for the node */
 	dma_spec->np = of_parse_phandle(ofdma->of_node, "dma-masters", 0);
 	if (!dma_spec->np) {
 		dev_err(&pdev->dev, "Can't get DMA master\n");
-		return ERR_PTR(-EINVAL);
+		goto out_put_pdev;
 	}
 
 	map = kzalloc(sizeof(*map), GFP_KERNEL);
 	if (!map) {
 		of_node_put(dma_spec->np);
-		return ERR_PTR(-ENOMEM);
+		map = ERR_PTR(-ENOMEM);
+		goto out_put_pdev;
 	}
 
 	map->dma_line = (u16)dma_spec->args[0];
@@ -119,6 +120,9 @@ static void *ti_am335x_xbar_route_allocate(struct of_phandle_args *dma_spec,
 
 	ti_am335x_xbar_write(xbar->iomem, map->dma_line, map->mux_val);
 
+out_put_pdev:
+	put_device(&pdev->dev);
+
 	return map;
 }
 
@@ -287,6 +291,8 @@ static void *ti_dra7_xbar_route_allocate(struct of_phandle_args *dma_spec,
 
 	ti_dra7_xbar_write(xbar->iomem, map->xbar_out, map->xbar_in);
 
+	put_device(&pdev->dev);
+
 	return map;
 }
 
drivers/dma/ti/k3-udma-private.c +1 -1
index 85e00701473c..463bec5a01a7 100644
@@ -40,9 +40,9 @@ struct udma_dev *of_xudma_dev_get(struct device_node *np, const char *property)
 	}
 
 	ud = platform_get_drvdata(pdev);
+	put_device(&pdev->dev);
 	if (!ud) {
 		pr_debug("UDMA has not been probed\n");
-		put_device(&pdev->dev);
 		return ERR_PTR(-EPROBE_DEFER);
 	}
 
drivers/dma/ti/omap-dma.c +4 -0
index 27f5019bdc1e..7755a79b429f 100644
@@ -1811,6 +1811,8 @@ static int omap_dma_probe(struct platform_device *pdev)
 	if (rc) {
 		pr_warn("OMAP-DMA: failed to register slave DMA engine device: %d\n",
 			rc);
+		if (od->ll123_supported)
+			dma_pool_destroy(od->desc_pool);
 		omap_dma_free(od);
 		return rc;
 	}
@@ -1826,6 +1828,8 @@ static int omap_dma_probe(struct platform_device *pdev)
 		if (rc) {
 			pr_warn("OMAP-DMA: failed to register DMA controller\n");
 			dma_async_device_unregister(&od->ddev);
+			if (od->ll123_supported)
+				dma_pool_destroy(od->desc_pool);
 			omap_dma_free(od);
 		}
 	}
drivers/dma/xilinx/xilinx_dma.c +5 -2
index e2175651f979..8402dc3d3a35 100644
@@ -128,6 +128,7 @@
 #define XILINX_MCDMA_MAX_CHANS_PER_DEVICE	0x20
 #define XILINX_DMA_MAX_CHANS_PER_DEVICE		0x2
 #define XILINX_CDMA_MAX_CHANS_PER_DEVICE	0x1
+#define XILINX_DMA_DFAULT_ADDRWIDTH		0x20
 
 #define XILINX_DMA_DMAXR_ALL_IRQ_MASK	\
 		(XILINX_DMA_DMASR_FRM_CNT_IRQ | \
@@ -3016,7 +3017,7 @@ static int xilinx_dma_probe(struct platform_device *pdev)
 	struct device_node *node = pdev->dev.of_node;
 	struct xilinx_dma_device *xdev;
 	struct device_node *child, *np = pdev->dev.of_node;
-	u32 num_frames, addr_width, len_width;
+	u32 num_frames, addr_width = XILINX_DMA_DFAULT_ADDRWIDTH, len_width;
 	int i, err;
 
 	/* Allocate and initialize the DMA engine structure */
@@ -3085,7 +3086,9 @@ static int xilinx_dma_probe(struct platform_device *pdev)
 
 	err = of_property_read_u32(node, "xlnx,addrwidth", &addr_width);
 	if (err < 0)
-		dev_warn(xdev->dev, "missing xlnx,addrwidth property\n");
+		dev_warn(xdev->dev,
+			 "missing xlnx,addrwidth property, using default value %d\n",
+			 XILINX_DMA_DFAULT_ADDRWIDTH);
 
 	if (addr_width > 32)
 		xdev->ext_addr = true;
drivers/edac/i3200_edac.c +6 -5
index afccdebf5ac1..6cade6d7ceff 100644
@@ -358,10 +358,11 @@ static int i3200_probe1(struct pci_dev *pdev, int dev_idx)
 	layers[1].type = EDAC_MC_LAYER_CHANNEL;
 	layers[1].size = nr_channels;
 	layers[1].is_virt_csrow = false;
-	mci = edac_mc_alloc(0, ARRAY_SIZE(layers), layers,
-			    sizeof(struct i3200_priv));
+
+	rc = -ENOMEM;
+	mci = edac_mc_alloc(0, ARRAY_SIZE(layers), layers, sizeof(struct i3200_priv));
 	if (!mci)
-		return -ENOMEM;
+		goto unmap;
 
 	edac_dbg(3, "MC: init mci\n");
 
@@ -421,9 +422,9 @@ static int i3200_probe1(struct pci_dev *pdev, int dev_idx)
 	return 0;
 
 fail:
+	edac_mc_free(mci);
+unmap:
 	iounmap(window);
-	if (mci)
-		edac_mc_free(mci);
 
 	return rc;
 }
drivers/edac/x38_edac.c +6 -3
index 49ab5721aab2..292dda754c23 100644
@@ -341,9 +341,12 @@ static int x38_probe1(struct pci_dev *pdev, int dev_idx)
 	layers[1].type = EDAC_MC_LAYER_CHANNEL;
 	layers[1].size = x38_channel_num;
 	layers[1].is_virt_csrow = false;
+
+
+	rc = -ENOMEM;
 	mci = edac_mc_alloc(0, ARRAY_SIZE(layers), layers, 0);
 	if (!mci)
-		return -ENOMEM;
+		goto unmap;
 
 	edac_dbg(3, "MC: init mci\n");
 
@@ -403,9 +406,9 @@ static int x38_probe1(struct pci_dev *pdev, int dev_idx)
 	return 0;
 
 fail:
+	edac_mc_free(mci);
+unmap:
 	iounmap(window);
-	if (mci)
-		edac_mc_free(mci);
 
 	return rc;
 }
drivers/firmware/efi/cper.c +1 -1
index eb5e67af6927..9d6650f50ffe 100644
@@ -161,7 +161,7 @@ int cper_bits_to_str(char *buf, int buf_size, unsigned long bits,
 		len -= size;
 		str += size;
 	}
-	return len - buf_size;
+	return buf_size - len;
 }
 EXPORT_SYMBOL_GPL(cper_bits_to_str);
 
drivers/firmware/imx/imx-scu-irq.c +12 -12
index 06c49a61a079..1f08b708e83d 100644
@@ -137,6 +137,18 @@ int imx_scu_enable_general_irq_channel(struct device *dev)
 	struct mbox_chan *ch;
 	int ret = 0, i = 0;
 
+	if (!of_parse_phandle_with_args(dev->of_node, "mboxes",
+				       "#mbox-cells", 0, &spec)) {
+		i = of_alias_get_id(spec.np, "mu");
+		of_node_put(spec.np);
+	}
+
+	/* use mu1 as general mu irq channel if failed */
+	if (i < 0)
+		i = 1;
+
+	mu_resource_id = IMX_SC_R_MU_0A + i;
+
 	ret = imx_scu_get_handle(&imx_sc_irq_ipc_handle);
 	if (ret)
 		return ret;
@@ -159,18 +171,6 @@ int imx_scu_enable_general_irq_channel(struct device *dev)
 		return ret;
 	}
 
-	if (!of_parse_phandle_with_args(dev->of_node, "mboxes",
-				       "#mbox-cells", 0, &spec)) {
-		i = of_alias_get_id(spec.np, "mu");
-		of_node_put(spec.np);
-	}
-
-	/* use mu1 as general mu irq channel if failed */
-	if (i < 0)
-		i = 1;
-
-	mu_resource_id = IMX_SC_R_MU_0A + i;
-
 	return ret;
 }
 EXPORT_SYMBOL(imx_scu_enable_general_irq_channel);
drivers/gpio/gpio-rockchip.c +0 -8
index 3c1abb02f562..bf301b2d18b8 100644
@@ -19,7 +19,6 @@
 #include <linux/of_address.h>
 #include <linux/of_device.h>
 #include <linux/of_irq.h>
-#include <linux/pinctrl/consumer.h>
 #include <linux/pinctrl/pinconf-generic.h>
 #include <linux/regmap.h>
 
@@ -157,12 +156,6 @@ static int rockchip_gpio_set_direction(struct gpio_chip *chip,
 	unsigned long flags;
 	u32 data = input ? 0 : 1;
 
-
-	if (input)
-		pinctrl_gpio_direction_input(bank->pin_base + offset);
-	else
-		pinctrl_gpio_direction_output(bank->pin_base + offset);
-
 	raw_spin_lock_irqsave(&bank->slock, flags);
 	rockchip_gpio_writel_bit(bank, offset, data, bank->gpio_regs->port_ddr);
 	raw_spin_unlock_irqrestore(&bank->slock, flags);
@@ -584,7 +577,6 @@ static int rockchip_gpiolib_register(struct rockchip_pin_bank *bank)
 	gc->ngpio = bank->nr_pins;
 	gc->label = bank->name;
 	gc->parent = bank->dev;
-	gc->can_sleep = true;
 
 	ret = gpiochip_add_data(gc, bank);
 	if (ret) {
drivers/gpio/gpiolib-acpi.c +1 -1
index baa77a8e8365..11338f47d884 100644
@@ -1184,7 +1184,7 @@ acpi_gpio_adr_space_handler(u32 function, acpi_physical_address address,
 		mutex_unlock(&achip->conn_lock);
 
 		if (function == ACPI_WRITE)
-			gpiod_set_raw_value_cansleep(desc, !!(*value & BIT(i)));
+			gpiod_set_raw_value_cansleep(desc, !!(*value & BIT_ULL(i)));
 		else
 			*value |= (u64)gpiod_get_raw_value_cansleep(desc) << i;
 	}
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c +1 -1
index 38b81ae236cb..535cc74c5880 100644
@@ -3652,7 +3652,6 @@ int amdgpu_device_init(struct amdgpu_device *adev,
 	mutex_init(&adev->grbm_idx_mutex);
 	mutex_init(&adev->mn_lock);
 	mutex_init(&adev->virt.vf_errors.lock);
-	mutex_init(&adev->virt.rlcg_reg_lock);
 	hash_init(adev->mn_hash);
 	mutex_init(&adev->psp.mutex);
 	mutex_init(&adev->notifier_lock);
@@ -3674,6 +3673,7 @@ int amdgpu_device_init(struct amdgpu_device *adev,
 	spin_lock_init(&adev->se_cac_idx_lock);
 	spin_lock_init(&adev->audio_endpt_idx_lock);
 	spin_lock_init(&adev->mm_stats.lock);
+	spin_lock_init(&adev->virt.rlcg_reg_lock);
 
 	INIT_LIST_HEAD(&adev->shadow_list);
 	mutex_init(&adev->shadow_list_lock);
drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c +3 -2
index c626ed88e642..d300f7710ebb 100644
@@ -965,6 +965,7 @@ static u32 amdgpu_virt_rlcg_reg_rw(struct amdgpu_device *adev, u32 offset, u32 v
 	void *scratch_reg2;
 	void *scratch_reg3;
 	void *spare_int;
+	unsigned long flags;
 
 	if (!adev->gfx.rlc.rlcg_reg_access_supported) {
 		dev_err(adev->dev,
@@ -978,7 +979,7 @@ static u32 amdgpu_virt_rlcg_reg_rw(struct amdgpu_device *adev, u32 offset, u32 v
 	scratch_reg2 = (void __iomem *)adev->rmmio + 4 * reg_access_ctrl->scratch_reg2;
 	scratch_reg3 = (void __iomem *)adev->rmmio + 4 * reg_access_ctrl->scratch_reg3;
 
-	mutex_lock(&adev->virt.rlcg_reg_lock);
+	spin_lock_irqsave(&adev->virt.rlcg_reg_lock, flags);
 
 	if (reg_access_ctrl->spare_int)
 		spare_int = (void __iomem *)adev->rmmio + 4 * reg_access_ctrl->spare_int;
@@ -1034,7 +1035,7 @@ static u32 amdgpu_virt_rlcg_reg_rw(struct amdgpu_device *adev, u32 offset, u32 v
 
 	ret = readl(scratch_reg0);
 
-	mutex_unlock(&adev->virt.rlcg_reg_lock);
+	spin_unlock_irqrestore(&adev->virt.rlcg_reg_lock, flags);
 
 	return ret;
 }
drivers/gpu/drm/amd/amdgpu/amdgpu_virt.h +2 -1
index fc2859726f0a..9267e792c4cf 100644
@@ -264,7 +264,8 @@ struct amdgpu_virt {
 	/* the ucode id to signal the autoload */
 	uint32_t autoload_ucode_id;
 
-	struct mutex rlcg_reg_lock;
+	/* Spinlock to protect access to the RLCG register interface */
+	spinlock_t rlcg_reg_lock;
 };
 
 struct amdgpu_video_codec_info;
drivers/gpu/drm/amd/amdgpu/gfx_v10_0.c +1 -1
index f8382b227ad4..48462beddccf 100644
@@ -6584,7 +6584,7 @@ static int gfx_v10_0_gfx_init_queue(struct amdgpu_ring *ring)
 			memcpy(mqd, adev->gfx.me.mqd_backup[mqd_idx], sizeof(*mqd));
 		/* reset the ring */
 		ring->wptr = 0;
-		*ring->wptr_cpu_addr = 0;
+		atomic64_set((atomic64_t *)ring->wptr_cpu_addr, 0);
 		amdgpu_ring_clear_ring(ring);
 #ifdef BRING_UP_DEBUG
 		mutex_lock(&adev->srbm_mutex);
drivers/gpu/drm/amd/amdgpu/gfx_v11_0.c +1 -1
index 0f8ae0ecd712..37f793f7d4d2 100644
@@ -3716,7 +3716,7 @@ static int gfx_v11_0_gfx_init_queue(struct amdgpu_ring *ring)
 			memcpy(mqd, adev->gfx.me.mqd_backup[mqd_idx], sizeof(*mqd));
 		/* reset the ring */
 		ring->wptr = 0;
-		*ring->wptr_cpu_addr = 0;
+		atomic64_set((atomic64_t *)ring->wptr_cpu_addr, 0);
 		amdgpu_ring_clear_ring(ring);
 #ifdef BRING_UP_DEBUG
 		mutex_lock(&adev->srbm_mutex);
drivers/gpu/drm/amd/amdgpu/soc21.c +7 -1
index 56cc59629d96..1b12eb1d0b80 100644
@@ -202,7 +202,13 @@ static u32 soc21_get_config_memsize(struct amdgpu_device *adev)
 
 static u32 soc21_get_xclk(struct amdgpu_device *adev)
 {
-	return adev->clock.spll.reference_freq;
+	u32 reference_clock = adev->clock.spll.reference_freq;
+
+	/* reference clock is actually 99.81 Mhz rather than 100 Mhz */
+	if ((adev->flags & AMD_IS_APU) && reference_clock == 10000)
+		return 9981;
+
+	return reference_clock;
 }
 
 
drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c +10 -8
index 3ab0a796af06..4e754e47bff3 100644
@@ -2257,6 +2257,14 @@ static int allocate_hiq_sdma_mqd(struct device_queue_manager *dqm)
 	return retval;
 }
 
+static void deallocate_hiq_sdma_mqd(struct kfd_dev *dev,
+				    struct kfd_mem_obj *mqd)
+{
+	WARN(!mqd, "No hiq sdma mqd trunk to free");
+
+	amdgpu_amdkfd_free_gtt_mem(dev->adev, &mqd->gtt_mem);
+}
+
 struct device_queue_manager *device_queue_manager_init(struct kfd_dev *dev)
 {
 	struct device_queue_manager *dqm;
@@ -2382,19 +2390,13 @@ struct device_queue_manager *device_queue_manager_init(struct kfd_dev *dev)
 	if (!dqm->ops.initialize(dqm))
 		return dqm;
 
+	deallocate_hiq_sdma_mqd(dev, &dqm->hiq_sdma_mqd);
+
 out_free:
 	kfree(dqm);
 	return NULL;
 }
 
-static void deallocate_hiq_sdma_mqd(struct kfd_dev *dev,
-				    struct kfd_mem_obj *mqd)
-{
-	WARN(!mqd, "No hiq sdma mqd trunk to free");
-
-	amdgpu_amdkfd_free_gtt_mem(dev->adev, &mqd->gtt_mem);
-}
-
 void device_queue_manager_uninit(struct device_queue_manager *dqm)
 {
 	dqm->ops.uninitialize(dqm);
drivers/gpu/drm/amd/display/dc/dce110/dce110_hw_sequencer.c +2 -1
index 508f5fe26848..c542d2ab9160 100644
@@ -1233,7 +1233,8 @@ void dce110_blank_stream(struct pipe_ctx *pipe_ctx)
 	struct dce_hwseq *hws = link->dc->hwseq;
 
 	if (link->local_sink && link->local_sink->sink_signal == SIGNAL_TYPE_EDP) {
-		hws->funcs.edp_backlight_control(link, false);
+		if (hws)
+			hws->funcs.edp_backlight_control(link, false);
 		link->dc->hwss.set_abm_immediate_disable(pipe_ctx);
 	}
 
drivers/gpu/drm/amd/pm/legacy-dpm/si_dpm.c +12 -11
index 2395d0a83184..bcc4d9fa5b0d 100644
@@ -2257,8 +2257,6 @@ static int si_populate_smc_tdp_limits(struct amdgpu_device *adev,
 		if (scaling_factor == 0)
 			return -EINVAL;
 
-		memset(smc_table, 0, sizeof(SISLANDS_SMC_STATETABLE));
-
 		ret = si_calculate_adjusted_tdp_limits(adev,
 						       false, /* ??? */
 						       adev->pm.dpm.tdp_adjustment,
@@ -2267,6 +2265,12 @@ static int si_populate_smc_tdp_limits(struct amdgpu_device *adev,
 		if (ret)
 			return ret;
 
+		if (adev->pdev->device == 0x6611 && adev->pdev->revision == 0x87) {
+			/* Workaround buggy powertune on Radeon 430 and 520. */
+			tdp_limit = 32;
+			near_tdp_limit = 28;
+		}
+
 		smc_table->dpm2Params.TDPLimit =
 			cpu_to_be32(si_scale_power_for_smc(tdp_limit, scaling_factor) * 1000);
 		smc_table->dpm2Params.NearTDPLimit =
@@ -2312,16 +2316,8 @@ static int si_populate_smc_tdp_limits_2(struct amdgpu_device *adev,
 
 	if (ni_pi->enable_power_containment) {
 		SISLANDS_SMC_STATETABLE *smc_table = &si_pi->smc_statetable;
-		u32 scaling_factor = si_get_smc_power_scaling_factor(adev);
 		int ret;
 
-		memset(smc_table, 0, sizeof(SISLANDS_SMC_STATETABLE));
-
-		smc_table->dpm2Params.NearTDPLimit =
-			cpu_to_be32(si_scale_power_for_smc(adev->pm.dpm.near_tdp_limit_adjusted, scaling_factor) * 1000);
-		smc_table->dpm2Params.SafePowerLimit =
-			cpu_to_be32(si_scale_power_for_smc((adev->pm.dpm.near_tdp_limit_adjusted * SISLANDS_DPM2_TDP_SAFE_LIMIT_PERCENT) / 100, scaling_factor) * 1000);
-
 		ret = amdgpu_si_copy_bytes_to_smc(adev,
 						  (si_pi->state_table_start +
 						   offsetof(SISLANDS_SMC_STATETABLE, dpm2Params) +
@@ -3458,10 +3454,15 @@ static void si_apply_state_adjust_rules(struct amdgpu_device *adev,
 		    (adev->pdev->revision == 0x80) ||
 		    (adev->pdev->revision == 0x81) ||
 		    (adev->pdev->revision == 0x83) ||
-		    (adev->pdev->revision == 0x87) ||
+		    (adev->pdev->revision == 0x87 &&
+				adev->pdev->device != 0x6611) ||
 		    (adev->pdev->device == 0x6604) ||
 		    (adev->pdev->device == 0x6605)) {
 			max_sclk = 75000;
+		} else if (adev->pdev->revision == 0x87 &&
+				adev->pdev->device == 0x6611) {
+			/* Radeon 430 and 520 */
+			max_sclk = 78000;
 		}
 	}
 
drivers/gpu/drm/imx/imx-tve.c +13 -0
index ab4d1c878fda..f56597567684 100644
@@ -522,6 +522,13 @@ static const struct component_ops imx_tve_ops = {
 	.bind	= imx_tve_bind,
 };
 
+static void imx_tve_put_device(void *_dev)
+{
+	struct device *dev = _dev;
+
+	put_device(dev);
+}
+
 static int imx_tve_probe(struct platform_device *pdev)
 {
 	struct device *dev = &pdev->dev;
@@ -543,6 +550,12 @@ static int imx_tve_probe(struct platform_device *pdev)
 	if (ddc_node) {
 		tve->ddc = of_find_i2c_adapter_by_node(ddc_node);
 		of_node_put(ddc_node);
+		if (tve->ddc) {
+			ret = devm_add_action_or_reset(dev, imx_tve_put_device,
+						       &tve->ddc->dev);
+			if (ret)
+				return ret;
+		}
 	}
 
 	tve->mode = of_get_tve_mode(np);
drivers/gpu/drm/nouveau/dispnv50/curs507a.c +1 -0
index 78ee32da01c8..122d095c2a82 100644
@@ -83,6 +83,7 @@ curs507a_prepare(struct nv50_wndw *wndw, struct nv50_head_atom *asyh,
 		asyh->curs.handle = handle;
 		asyh->curs.offset = offset;
 		asyh->set.curs = asyh->curs.visible;
+		nv50_atom(asyh->state.state)->lock_core = true;
 	}
 }
 
drivers/gpu/drm/panel/panel-simple.c +1 -0
index 8a86f5d5c708..3f41fd5edc33 100644
@@ -1518,6 +1518,7 @@ static const struct panel_desc dataimage_scf0700c48ggu18 = {
 	},
 	.bus_format = MEDIA_BUS_FMT_RGB888_1X24,
 	.bus_flags = DRM_BUS_FLAG_DE_HIGH | DRM_BUS_FLAG_PIXDATA_DRIVE_POSEDGE,
+	.connector_type = DRM_MODE_CONNECTOR_DPI,
 };
 
 static const struct display_timing dlc_dlc0700yzg_1_timing = {
drivers/gpu/drm/radeon/radeon_fence.c +0 -8
index 73e3117420bf..1f2a12a43dd3 100644
@@ -362,14 +362,6 @@ static bool radeon_fence_is_signaled(struct dma_fence *f)
 		return true;
 	}
 
-	if (down_read_trylock(&rdev->exclusive_lock)) {
-		radeon_fence_process(rdev, ring);
-		up_read(&rdev->exclusive_lock);
-
-		if (atomic64_read(&rdev->fence_drv[ring].last_seq) >= seq) {
-			return true;
-		}
-	}
 	return false;
 }
 
drivers/gpu/drm/vmwgfx/vmwgfx_shader.c +3 -1
index 303f7a82f350..8325feda175d 100644
@@ -917,8 +917,10 @@ int vmw_compat_shader_add(struct vmw_private *dev_priv,
 	ttm_bo_unreserve(&buf->base);
 
 	res = vmw_shader_alloc(dev_priv, buf, size, 0, shader_type);
-	if (unlikely(ret != 0))
+	if (IS_ERR(res)) {
+		ret = PTR_ERR(res);
 		goto no_reserve;
+	}
 
 	ret = vmw_cmdbuf_res_add(man, vmw_cmdbuf_res_shader,
 				 vmw_shader_key(user_key, shader_type),
drivers/gpu/drm/xen/xen_drm_front.c +1 -2
index 0d8e6bd1ccbf..90996c108146 100644
@@ -717,7 +717,7 @@ static int xen_drv_probe(struct xenbus_device *xb_dev,
 	return xenbus_switch_state(xb_dev, XenbusStateInitialising);
 }
 
-static int xen_drv_remove(struct xenbus_device *dev)
+static void xen_drv_remove(struct xenbus_device *dev)
 {
 	struct xen_drm_front_info *front_info = dev_get_drvdata(&dev->dev);
 	int to = 100;
@@ -751,7 +751,6 @@ static int xen_drv_remove(struct xenbus_device *dev)
 
 	xen_drm_drv_fini(front_info);
 	xenbus_frontend_closed(dev);
-	return 0;
 }
 
 static const struct xenbus_device_id xen_driver_ids[] = {
drivers/hid/usbhid/hid-core.c +16 -1
index eb6841d1957f..352c9327d08b 100644
@@ -983,6 +983,7 @@ static int usbhid_parse(struct hid_device *hid)
 	struct usb_device *dev = interface_to_usbdev (intf);
 	struct hid_descriptor *hdesc;
 	struct hid_class_descriptor *hcdesc;
+	__u8 fixed_opt_descriptors_size;
 	u32 quirks = 0;
 	unsigned int rsize = 0;
 	char *rdesc;
@@ -1013,7 +1014,21 @@ static int usbhid_parse(struct hid_device *hid)
 			      (hdesc->bNumDescriptors - 1) * sizeof(*hcdesc)) {
 		dbg_hid("hid descriptor invalid, bLen=%hhu bNum=%hhu\n",
 			hdesc->bLength, hdesc->bNumDescriptors);
-		return -EINVAL;
+
+		/*
+		 * Some devices may expose a wrong number of descriptors compared
+		 * to the provided length.
+		 * However, we ignore the optional hid class descriptors entirely
+		 * so we can safely recompute the proper field.
+		 */
+		if (hdesc->bLength >= sizeof(*hdesc)) {
+			fixed_opt_descriptors_size = hdesc->bLength - sizeof(*hdesc);
+
+			hid_warn(intf, "fixing wrong optional hid class descriptors count\n");
+			hdesc->bNumDescriptors = fixed_opt_descriptors_size / sizeof(*hcdesc) + 1;
+		} else {
+			return -EINVAL;
+		}
 	}
 
 	hid->version = le16_to_cpu(hdesc->bcdHID);
drivers/hwtracing/intel_th/core.c +16 -3
index 2a821f0e3b70..4efd64a6755f 100644
@@ -810,9 +810,12 @@ static int intel_th_output_open(struct inode *inode, struct file *file)
 	int err;
 
 	dev = bus_find_device_by_devt(&intel_th_bus, inode->i_rdev);
-	if (!dev || !dev->driver) {
+	if (!dev)
+		return -ENODEV;
+
+	if (!dev->driver) {
 		err = -ENODEV;
-		goto out_no_device;
+		goto out_put_device;
 	}
 
 	thdrv = to_intel_th_driver(dev->driver);
@@ -836,12 +839,22 @@ static int intel_th_output_open(struct inode *inode, struct file *file)
 
 out_put_device:
 	put_device(dev);
-out_no_device:
+
 	return err;
 }
 
+static int intel_th_output_release(struct inode *inode, struct file *file)
+{
+	struct intel_th_device *thdev = file->private_data;
+
+	put_device(&thdev->dev);
+
+	return 0;
+}
+
 static const struct file_operations intel_th_output_fops = {
 	.open	= intel_th_output_open,
+	.release = intel_th_output_release,
 	.llseek	= noop_llseek,
 };
 
drivers/iio/adc/ad7280a.c +3 -1
index 9080c795dcb7..10cc623bf62a 100644
@@ -1028,7 +1028,9 @@ static int ad7280_probe(struct spi_device *spi)
 
 	st->spi->max_speed_hz = AD7280A_MAX_SPI_CLK_HZ;
 	st->spi->mode = SPI_MODE_1;
-	spi_setup(st->spi);
+	ret = spi_setup(st->spi);
+	if (ret < 0)
+		return ret;
 
 	st->ctrl_lb = FIELD_PREP(AD7280A_CTRL_LB_ACQ_TIME_MSK, st->acquisition_time) |
 		FIELD_PREP(AD7280A_CTRL_LB_THERMISTOR_MSK, st->thermistor_term_en);
drivers/iio/adc/ad9467.c +1 -1
index 5edc2a3e687d..aa98f61d1930 100644
@@ -90,7 +90,7 @@
 
 #define CHIPID_AD9434			0x6A
 #define AD9434_DEF_OUTPUT_MODE		0x00
-#define AD9434_REG_VREF_MASK		0xC0
+#define AD9434_REG_VREF_MASK		GENMASK(4, 0)
 
 /*
  * Analog Devices AD9467 16-Bit, 200/250 MSPS ADC
drivers/iio/adc/at91-sama5d2_adc.c +1 -0
index 7bd180d48cb6..e53c32c7bb58 100644
@@ -2521,6 +2521,7 @@ static int at91_adc_remove(struct platform_device *pdev)
 	struct at91_adc_state *st = iio_priv(indio_dev);
 
 	iio_device_unregister(indio_dev);
+	cancel_work_sync(&st->touch_st.workq);
 
 	at91_adc_dma_disable(st);
 
drivers/iio/adc/exynos_adc.c +2 -11
index 43c8af41b4a9..a935ef1840a6 100644
@@ -721,14 +721,7 @@ static const struct iio_chan_spec exynos_adc_iio_channels[] = {
 	ADC_CHANNEL(9, "adc9"),
 };
 
-static int exynos_adc_remove_devices(struct device *dev, void *c)
-{
-	struct platform_device *pdev = to_platform_device(dev);
-
-	platform_device_unregister(pdev);
 
-	return 0;
-}
 
 static int exynos_adc_ts_open(struct input_dev *dev)
 {
@@ -929,8 +922,7 @@ static int exynos_adc_probe(struct platform_device *pdev)
 	return 0;
 
 err_of_populate:
-	device_for_each_child(&indio_dev->dev, NULL,
-				exynos_adc_remove_devices);
+	of_platform_depopulate(&indio_dev->dev);
 	if (has_ts) {
 		input_unregister_device(info->input);
 		free_irq(info->tsirq, info);
@@ -959,8 +951,7 @@ static int exynos_adc_remove(struct platform_device *pdev)
 		free_irq(info->tsirq, info);
 		input_unregister_device(info->input);
 	}
-	device_for_each_child(&indio_dev->dev, NULL,
-				exynos_adc_remove_devices);
+	of_platform_depopulate(&indio_dev->dev);
 	iio_device_unregister(indio_dev);
 	free_irq(info->irq, info);
 	if (info->data->exit_hw)
drivers/iio/chemical/scd4x.c +3 -3
index 54066532ea45..690c70b94a57 100644
@@ -518,7 +518,7 @@ static const struct iio_chan_spec scd4x_channels[] = {
 			.sign = 'u',
 			.realbits = 16,
 			.storagebits = 16,
-			.endianness = IIO_BE,
+			.endianness = IIO_CPU,
 		},
 	},
 	{
@@ -533,7 +533,7 @@ static const struct iio_chan_spec scd4x_channels[] = {
 			.sign = 'u',
 			.realbits = 16,
 			.storagebits = 16,
-			.endianness = IIO_BE,
+			.endianness = IIO_CPU,
 		},
 	},
 	{
@@ -546,7 +546,7 @@ static const struct iio_chan_spec scd4x_channels[] = {
 			.sign = 'u',
 			.realbits = 16,
 			.storagebits = 16,
-			.endianness = IIO_BE,
+			.endianness = IIO_CPU,
 		},
 	},
 };
drivers/iio/dac/ad5686.c +6 -0
index 15361d8bbf94..7d1b2b83172d 100644
@@ -427,6 +427,12 @@ static const struct ad5686_chip_info ad5686_chip_info_tbl[] = {
 		.num_channels = 4,
 		.regmap_type = AD5686_REGMAP,
 	},
+	[ID_AD5695R] = {
+		.channels = ad5685r_channels,
+		.int_vref_mv = 2500,
+		.num_channels = 4,
+		.regmap_type = AD5686_REGMAP,
+	},
 	[ID_AD5696] = {
 		.channels = ad5686_channels,
 		.num_channels = 4,
drivers/input/misc/xen-kbdfront.c +2 -3
index 8d8ebdc2039b..67f1c7364c95 100644
@@ -51,7 +51,7 @@ module_param_array(ptr_size, int, NULL, 0444);
 MODULE_PARM_DESC(ptr_size,
 	"Pointing device width, height in pixels (default 800,600)");
 
-static int xenkbd_remove(struct xenbus_device *);
+static void xenkbd_remove(struct xenbus_device *);
 static int xenkbd_connect_backend(struct xenbus_device *, struct xenkbd_info *);
 static void xenkbd_disconnect_backend(struct xenkbd_info *);
 
@@ -404,7 +404,7 @@ static int xenkbd_resume(struct xenbus_device *dev)
 	return xenkbd_connect_backend(dev, info);
 }
 
-static int xenkbd_remove(struct xenbus_device *dev)
+static void xenkbd_remove(struct xenbus_device *dev)
 {
 	struct xenkbd_info *info = dev_get_drvdata(&dev->dev);
 
@@ -417,7 +417,6 @@ static int xenkbd_remove(struct xenbus_device *dev)
 		input_unregister_device(info->mtouch);
 	free_page((unsigned long)info->page);
 	kfree(info);
-	return 0;
 }
 
 static int xenkbd_connect_backend(struct xenbus_device *dev,
drivers/input/serio/i8042-acpipnpio.h +18 -0
index b24127e923db..d492aa93a7c3 100644
@@ -115,6 +115,17 @@ static const struct dmi_system_id i8042_dmi_quirk_table[] __initconst = {
 		},
 		.driver_data = (void *)(SERIO_QUIRK_NOMUX | SERIO_QUIRK_RESET_NEVER)
 	},
+	{
+		/*
+		 * ASUS Zenbook UX425QA_UM425QA
+		 * Some Zenbooks report "Zenbook" with a lowercase b.
+		 */
+		.matches = {
+			DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."),
+			DMI_MATCH(DMI_PRODUCT_NAME, "Zenbook UX425QA_UM425QA"),
+		},
+		.driver_data = (void *)(SERIO_QUIRK_PROBE_DEFER | SERIO_QUIRK_RESET_NEVER)
+	},
 	{
 		/* ASUS ZenBook UX425UA/QA */
 		.matches = {
@@ -1176,6 +1187,13 @@ static const struct dmi_system_id i8042_dmi_quirk_table[] __initconst = {
 		.driver_data = (void *)(SERIO_QUIRK_NOMUX | SERIO_QUIRK_RESET_ALWAYS |
 					SERIO_QUIRK_NOLOOP | SERIO_QUIRK_NOPNP)
 	},
+	{
+		.matches = {
+			DMI_MATCH(DMI_BOARD_NAME, "WUJIE Series-X5SP4NAG"),
+		},
+		.driver_data = (void *)(SERIO_QUIRK_NOMUX | SERIO_QUIRK_RESET_ALWAYS |
+					SERIO_QUIRK_NOLOOP | SERIO_QUIRK_NOPNP)
+	},
 	/*
 	 * A lot of modern Clevo barebones have touchpad and/or keyboard issues
 	 * after suspend fixable with the forcenorestore quirk.
drivers/irqchip/irq-gic-v3-its.c +4 -4
index 4f8512385870..902e68102ee6 100644
@@ -613,7 +613,7 @@ static struct its_collection *its_build_mapd_cmd(struct its_node *its,
 						 struct its_cmd_block *cmd,
 						 struct its_cmd_desc *desc)
 {
-	unsigned long itt_addr;
+	phys_addr_t itt_addr;
 	u8 size = ilog2(desc->its_mapd_cmd.dev->nr_ites);
 
 	itt_addr = virt_to_phys(desc->its_mapd_cmd.dev->itt);
@@ -784,7 +784,7 @@ static struct its_vpe *its_build_vmapp_cmd(struct its_node *its,
 					   struct its_cmd_desc *desc)
 {
 	struct its_vpe *vpe = valid_vpe(its, desc->its_vmapp_cmd.vpe);
-	unsigned long vpt_addr, vconf_addr;
+	phys_addr_t vpt_addr, vconf_addr;
 	u64 target;
 	bool alloc;
 
@@ -2399,10 +2399,10 @@ static int its_setup_baser(struct its_node *its, struct its_baser *baser,
 	baser->psz = psz;
 	tmp = indirect ? GITS_LVL1_ENTRY_SIZE : esz;
 
-	pr_info("ITS@%pa: allocated %d %s @%lx (%s, esz %d, psz %dK, shr %d)\n",
+	pr_info("ITS@%pa: allocated %d %s @%llx (%s, esz %d, psz %dK, shr %d)\n",
 		&its->phys_base, (int)(PAGE_ORDER_TO_SIZE(order) / (int)tmp),
 		its_base_type_string[type],
-		(unsigned long)virt_to_phys(base),
+		(u64)virt_to_phys(base),
 		indirect ? "indirect" : "flat", (int)esz,
 		psz / SZ_1K, (int)shr >> GITS_BASER_SHAREABILITY_SHIFT);
 
drivers/isdn/mISDN/timerdev.c +8 -5
index abdf36ac3bee..74d6ed49dc36 100644
@@ -109,14 +109,14 @@ mISDN_read(struct file *filep, char __user *buf, size_t count, loff_t *off)
 		spin_unlock_irq(&dev->lock);
 		if (filep->f_flags & O_NONBLOCK)
 			return -EAGAIN;
-		wait_event_interruptible(dev->wait, (dev->work ||
+		wait_event_interruptible(dev->wait, (READ_ONCE(dev->work) ||
 						     !list_empty(list)));
 		if (signal_pending(current))
 			return -ERESTARTSYS;
 		spin_lock_irq(&dev->lock);
 	}
 	if (dev->work)
-		dev->work = 0;
+		WRITE_ONCE(dev->work, 0);
 	if (!list_empty(list)) {
 		timer = list_first_entry(list, struct mISDNtimer, list);
 		list_del(&timer->list);
@@ -141,13 +141,16 @@ mISDN_poll(struct file *filep, poll_table *wait)
 	if (*debug & DEBUG_TIMER)
 		printk(KERN_DEBUG "%s(%p, %p)\n", __func__, filep, wait);
 	if (dev) {
+		u32 work;
+
 		poll_wait(filep, &dev->wait, wait);
 		mask = 0;
-		if (dev->work || !list_empty(&dev->expired))
+		work = READ_ONCE(dev->work);
+		if (work || !list_empty(&dev->expired))
 			mask |= (EPOLLIN | EPOLLRDNORM);
 		if (*debug & DEBUG_TIMER)
 			printk(KERN_DEBUG "%s work(%d) empty(%d)\n", __func__,
-			       dev->work, list_empty(&dev->expired));
+			       work, list_empty(&dev->expired));
 	}
 	return mask;
 }
@@ -172,7 +175,7 @@ misdn_add_timer(struct mISDNtimerdev *dev, int timeout)
 	struct mISDNtimer	*timer;
 
 	if (!timeout) {
-		dev->work = 1;
+		WRITE_ONCE(dev->work, 1);
 		wake_up_interruptible(&dev->wait);
 		id = 0;
 	} else {
drivers/leds/led-class.c +5 -5
index 923138c808ca..0d27f2aba048 100644
@@ -410,11 +410,6 @@ int led_classdev_register_ext(struct device *parent,
 #ifdef CONFIG_LEDS_BRIGHTNESS_HW_CHANGED
 	led_cdev->brightness_hw_changed = -1;
 #endif
-	/* add to the list of leds */
-	down_write(&leds_list_lock);
-	list_add_tail(&led_cdev->node, &leds_list);
-	up_write(&leds_list_lock);
-
 	if (!led_cdev->max_brightness)
 		led_cdev->max_brightness = LED_FULL;
 
@@ -422,6 +417,11 @@ int led_classdev_register_ext(struct device *parent,
 
 	led_init_core(led_cdev);
 
+	/* add to the list of leds */
+	down_write(&leds_list_lock);
+	list_add_tail(&led_cdev->node, &leds_list);
+	up_write(&leds_list_lock);
+
 #ifdef CONFIG_LEDS_TRIGGERS
 	led_trigger_set_default(led_cdev);
 #endif
drivers/misc/mei/mei-trace.h +9 -9
index fe46ff2b9d69..770e7897b88c 100644
@@ -21,18 +21,18 @@ TRACE_EVENT(mei_reg_read,
 	TP_ARGS(dev, reg, offs, val),
 	TP_STRUCT__entry(
 		__string(dev, dev_name(dev))
-		__field(const char *, reg)
+		__string(reg, reg)
 		__field(u32, offs)
 		__field(u32, val)
 	),
 	TP_fast_assign(
 		__assign_str(dev, dev_name(dev));
-		__entry->reg  = reg;
+		__assign_str(reg, reg);
 		__entry->offs = offs;
 		__entry->val = val;
 	),
 	TP_printk("[%s] read %s:[%#x] = %#x",
-		  __get_str(dev), __entry->reg, __entry->offs, __entry->val)
+		  __get_str(dev), __get_str(reg), __entry->offs, __entry->val)
 );
 
 TRACE_EVENT(mei_reg_write,
@@ -40,18 +40,18 @@ TRACE_EVENT(mei_reg_write,
 	TP_ARGS(dev, reg, offs, val),
 	TP_STRUCT__entry(
 		__string(dev, dev_name(dev))
-		__field(const char *, reg)
+		__string(reg, reg)
 		__field(u32, offs)
 		__field(u32, val)
 	),
 	TP_fast_assign(
 		__assign_str(dev, dev_name(dev));
-		__entry->reg = reg;
+		__assign_str(reg, reg);
 		__entry->offs = offs;
 		__entry->val = val;
 	),
 	TP_printk("[%s] write %s[%#x] = %#x",
-		  __get_str(dev), __entry->reg,  __entry->offs, __entry->val)
+		  __get_str(dev), __get_str(reg),  __entry->offs, __entry->val)
 );
 
 TRACE_EVENT(mei_pci_cfg_read,
@@ -59,18 +59,18 @@ TRACE_EVENT(mei_pci_cfg_read,
 	TP_ARGS(dev, reg, offs, val),
 	TP_STRUCT__entry(
 		__string(dev, dev_name(dev))
-		__field(const char *, reg)
+		__string(reg, reg)
 		__field(u32, offs)
 		__field(u32, val)
 	),
 	TP_fast_assign(
 		__assign_str(dev, dev_name(dev));
-		__entry->reg  = reg;
+		__assign_str(reg, reg);
 		__entry->offs = offs;
 		__entry->val = val;
 	),
 	TP_printk("[%s] pci cfg read %s:[%#x] = %#x",
-		  __get_str(dev), __entry->reg, __entry->offs, __entry->val)
+		  __get_str(dev), __get_str(reg), __entry->offs, __entry->val)
 );
 
 #endif /* _MEI_TRACE_H_ */
drivers/misc/uacce/uacce.c +34 -8

82 lines not on this page · raw message

drivers/mmc/host/rtsx_pci_sdmmc.c +41 -0

53 lines not on this page · raw message

drivers/mmc/host/sdhci-of-dwcmshc.c +16 -4
index b07c73759355..aa68c63f7024 100644
@@ -48,6 +48,7 @@
 #define DWCMSHC_EMMC_DLL_RXCLK_SRCSEL	29
 #define DWCMSHC_EMMC_DLL_START_POINT	16
 #define DWCMSHC_EMMC_DLL_INC		8
+#define DWCMSHC_EMMC_DLL_BYPASS		BIT(24)
 #define DWCMSHC_EMMC_DLL_DLYENA		BIT(27)
 #define DLL_TXCLK_TAPNUM_DEFAULT	0x10
 #define DLL_TXCLK_TAPNUM_90_DEGREES	0xA
@@ -60,6 +61,7 @@
 #define DLL_RXCLK_NO_INVERTER		1
 #define DLL_RXCLK_INVERTER		0
 #define DLL_CMDOUT_TAPNUM_90_DEGREES	0x8
+#define DLL_RXCLK_ORI_GATE		BIT(31)
 #define DLL_CMDOUT_TAPNUM_FROM_SW	BIT(24)
 #define DLL_CMDOUT_SRC_CLK_NEG		BIT(28)
 #define DLL_CMDOUT_EN_SRC_CLK_NEG	BIT(29)
@@ -234,9 +236,19 @@ static void dwcmshc_rk3568_set_clock(struct sdhci_host *host, unsigned int clock
 	sdhci_writel(host, extra, reg);
 
 	if (clock <= 52000000) {
-		/* Disable DLL and reset both of sample and drive clock */
-		sdhci_writel(host, 0, DWCMSHC_EMMC_DLL_CTRL);
-		sdhci_writel(host, 0, DWCMSHC_EMMC_DLL_RXCLK);
+		if (host->mmc->ios.timing == MMC_TIMING_MMC_HS200 ||
+		    host->mmc->ios.timing == MMC_TIMING_MMC_HS400) {
+			dev_err(mmc_dev(host->mmc),
+				"Can't reduce the clock below 52MHz in HS200/HS400 mode");
+			return;
+		}
+
+		/*
+		 * Disable DLL and reset both of sample and drive clock.
+		 * The bypass bit and start bit need to be set if DLL is not locked.
+		 */
+		sdhci_writel(host, DWCMSHC_EMMC_DLL_BYPASS | DWCMSHC_EMMC_DLL_START, DWCMSHC_EMMC_DLL_CTRL);
+		sdhci_writel(host, DLL_RXCLK_ORI_GATE, DWCMSHC_EMMC_DLL_RXCLK);
 		sdhci_writel(host, 0, DWCMSHC_EMMC_DLL_TXCLK);
 		sdhci_writel(host, 0, DECMSHC_EMMC_DLL_CMDOUT);
 		/*
@@ -279,7 +291,7 @@ static void dwcmshc_rk3568_set_clock(struct sdhci_host *host, unsigned int clock
 	}
 
 	extra = 0x1 << 16 | /* tune clock stop en */
-		0x2 << 17 | /* pre-change delay */
+		0x3 << 17 | /* pre-change delay */
 		0x3 << 19;  /* post-change delay */
 	sdhci_writel(host, extra, dwc_priv->vendor_specific_area1 + DWCMSHC_EMMC_ATCTRL);
 
drivers/net/bonding/bond_main.c +19 -10
index cefe37c447a2..71912ddfa714 100644
@@ -1906,6 +1906,12 @@ int bond_enslave(struct net_device *bond_dev, struct net_device *slave_dev,
 	 */
 	if (!bond_has_slaves(bond)) {
 		if (bond_dev->type != slave_dev->type) {
+			if (slave_dev->type != ARPHRD_ETHER &&
+			    BOND_MODE(bond) == BOND_MODE_8023AD) {
+				SLAVE_NL_ERR(bond_dev, slave_dev, extack,
+					     "8023AD mode requires Ethernet devices");
+				return -EINVAL;
+			}
 			slave_dbg(bond_dev, slave_dev, "change device type from %d to %d\n",
 				  bond_dev->type, slave_dev->type);
 
@@ -3076,8 +3082,8 @@ static void bond_validate_arp(struct bonding *bond, struct slave *slave, __be32
 			   __func__, &sip);
 		return;
 	}
-	slave->last_rx = jiffies;
-	slave->target_last_arp_rx[i] = jiffies;
+	WRITE_ONCE(slave->last_rx, jiffies);
+	WRITE_ONCE(slave->target_last_arp_rx[i], jiffies);
 }
 
 static int bond_arp_rcv(const struct sk_buff *skb, struct bonding *bond,
@@ -3296,8 +3302,8 @@ static void bond_validate_na(struct bonding *bond, struct slave *slave,
 			  __func__, saddr);
 		return;
 	}
-	slave->last_rx = jiffies;
-	slave->target_last_arp_rx[i] = jiffies;
+	WRITE_ONCE(slave->last_rx, jiffies);
+	WRITE_ONCE(slave->target_last_arp_rx[i], jiffies);
 }
 
 static int bond_na_rcv(const struct sk_buff *skb, struct bonding *bond,
@@ -3367,7 +3373,7 @@ int bond_rcv_validate(const struct sk_buff *skb, struct bonding *bond,
 		    (slave_do_arp_validate_only(bond) && is_ipv6) ||
 #endif
 		    !slave_do_arp_validate_only(bond))
-			slave->last_rx = jiffies;
+			WRITE_ONCE(slave->last_rx, jiffies);
 		return RX_HANDLER_ANOTHER;
 	} else if (is_arp) {
 		return bond_arp_rcv(skb, bond, slave);
@@ -3435,7 +3441,7 @@ static void bond_loadbalance_arp_mon(struct bonding *bond)
 
 		if (slave->link != BOND_LINK_UP) {
 			if (bond_time_in_interval(bond, last_tx, 1) &&
-			    bond_time_in_interval(bond, slave->last_rx, 1)) {
+			    bond_time_in_interval(bond, READ_ONCE(slave->last_rx), 1)) {
 
 				bond_propose_link_state(slave, BOND_LINK_UP);
 				slave_state_changed = 1;
@@ -3459,8 +3465,10 @@ static void bond_loadbalance_arp_mon(struct bonding *bond)
 			 * when the source ip is 0, so don't take the link down
 			 * if we don't know our ip yet
 			 */
-			if (!bond_time_in_interval(bond, last_tx, bond->params.missed_max) ||
-			    !bond_time_in_interval(bond, slave->last_rx, bond->params.missed_max)) {
+			if (!bond_time_in_interval(bond, last_tx,
+						   bond->params.missed_max) ||
+			    !bond_time_in_interval(bond, READ_ONCE(slave->last_rx),
+						   bond->params.missed_max)) {
 
 				bond_propose_link_state(slave, BOND_LINK_DOWN);
 				slave_state_changed = 1;
@@ -4122,8 +4130,9 @@ static bool bond_flow_dissect(struct bonding *bond, struct sk_buff *skb, const v
 	case BOND_XMIT_POLICY_ENCAP23:
 	case BOND_XMIT_POLICY_ENCAP34:
 		memset(fk, 0, sizeof(*fk));
-		return __skb_flow_dissect(NULL, skb, &flow_keys_bonding,
-					  fk, data, l2_proto, nhoff, hlen, 0);
+		return __skb_flow_dissect(dev_net(bond->dev), skb,
+					  &flow_keys_bonding, fk, data,
+					  l2_proto, nhoff, hlen, 0);
 	default:
 		break;
 	}
drivers/net/bonding/bond_options.c +4 -4
index 1235878d8715..9473e76c6dc9 100644
@@ -1133,7 +1133,7 @@ static void _bond_options_arp_ip_target_set(struct bonding *bond, int slot,
 
 	if (slot >= 0 && slot < BOND_MAX_ARP_TARGETS) {
 		bond_for_each_slave(bond, slave, iter)
-			slave->target_last_arp_rx[slot] = last_rx;
+			WRITE_ONCE(slave->target_last_arp_rx[slot], last_rx);
 		targets[slot] = target;
 	}
 }
@@ -1202,8 +1202,8 @@ static int bond_option_arp_ip_target_rem(struct bonding *bond, __be32 target)
 	bond_for_each_slave(bond, slave, iter) {
 		targets_rx = slave->target_last_arp_rx;
 		for (i = ind; (i < BOND_MAX_ARP_TARGETS-1) && targets[i+1]; i++)
-			targets_rx[i] = targets_rx[i+1];
-		targets_rx[i] = 0;
+			WRITE_ONCE(targets_rx[i], READ_ONCE(targets_rx[i+1]));
+		WRITE_ONCE(targets_rx[i], 0);
 	}
 	for (i = ind; (i < BOND_MAX_ARP_TARGETS-1) && targets[i+1]; i++)
 		targets[i] = targets[i+1];
@@ -1358,7 +1358,7 @@ static void _bond_options_ns_ip6_target_set(struct bonding *bond, int slot,
 
 	if (slot >= 0 && slot < BOND_MAX_NS_TARGETS) {
 		bond_for_each_slave(bond, slave, iter) {
-			slave->target_last_arp_rx[slot] = last_rx;
+			WRITE_ONCE(slave->target_last_arp_rx[slot], last_rx);
 			slave_set_ns_maddr(bond, slave, target, &targets[slot]);
 		}
 		targets[slot] = *target;
drivers/net/can/ctucanfd/ctucanfd_base.c +1 -1
index f65c1a1e05cc..0d40564febee 100644
@@ -310,7 +310,7 @@ static int ctucan_set_secondary_sample_point(struct net_device *ndev)
 		}
 
 		ssp_cfg = FIELD_PREP(REG_TRV_DELAY_SSP_OFFSET, ssp_offset);
-		ssp_cfg |= FIELD_PREP(REG_TRV_DELAY_SSP_SRC, 0x1);
+		ssp_cfg |= FIELD_PREP(REG_TRV_DELAY_SSP_SRC, 0x0);
 	}
 
 	ctucan_write32(priv, CTUCANFD_TRV_DELAY, ssp_cfg);
drivers/net/can/usb/ems_usb.c +7 -1
index 5355bac4dccb..fac8ac79df59 100644
@@ -486,11 +486,17 @@ static void ems_usb_read_bulk_callback(struct urb *urb)
 			  urb->transfer_buffer, RX_BUFFER_SIZE,
 			  ems_usb_read_bulk_callback, dev);
 
+	usb_anchor_urb(urb, &dev->rx_submitted);
+
 	retval = usb_submit_urb(urb, GFP_ATOMIC);
+	if (!retval)
+		return;
+
+	usb_unanchor_urb(urb);
 
 	if (retval == -ENODEV)
 		netif_device_detach(netdev);
-	else if (retval)
+	else
 		netdev_err(netdev,
 			   "failed resubmitting read bulk urb: %d\n", retval);
 }
drivers/net/can/usb/esd_usb.c +8 -1
index 578b25f873e5..155f5460c7ea 100644
@@ -447,13 +447,20 @@ static void esd_usb_read_bulk_callback(struct urb *urb)
 			  urb->transfer_buffer, RX_BUFFER_SIZE,
 			  esd_usb_read_bulk_callback, dev);
 
+	usb_anchor_urb(urb, &dev->rx_submitted);
+
 	retval = usb_submit_urb(urb, GFP_ATOMIC);
+	if (!retval)
+		return;
+
+	usb_unanchor_urb(urb);
+
 	if (retval == -ENODEV) {
 		for (i = 0; i < dev->net_count; i++) {
 			if (dev->nets[i])
 				netif_device_detach(dev->nets[i]->netdev);
 		}
-	} else if (retval) {
+	} else {
 		dev_err(dev->udev->dev.parent,
 			"failed resubmitting read bulk urb: %d\n", retval);
 	}
drivers/net/can/usb/etas_es58x/es58x_core.c +1 -1
index 41bea531234d..6995fbce829a 100644
@@ -1735,7 +1735,7 @@ static int es58x_alloc_rx_urbs(struct es58x_device *es58x_dev)
 	dev_dbg(dev, "%s: Allocated %d rx URBs each of size %u\n",
 		__func__, i, rx_buf_len);
 
-	return ret;
+	return 0;
 }
 
 /**
drivers/net/can/usb/gs_usb.c +10 -1
index bf9e13bd21de..8859e65d4470 100644
@@ -526,7 +526,7 @@ static void gs_usb_receive_bulk_callback(struct urb *urb)
 {
 	struct gs_usb *parent = urb->context;
 	struct gs_can *dev;
-	struct net_device *netdev;
+	struct net_device *netdev = NULL;
 	int rc;
 	struct net_device_stats *stats;
 	struct gs_host_frame *hf = urb->transfer_buffer;
@@ -657,7 +657,13 @@ static void gs_usb_receive_bulk_callback(struct urb *urb)
 			  hf, parent->hf_size_rx,
 			  gs_usb_receive_bulk_callback, parent);
 
+	usb_anchor_urb(urb, &parent->rx_submitted);
+
 	rc = usb_submit_urb(urb, GFP_ATOMIC);
+	if (!rc)
+		return;
+
+	usb_unanchor_urb(urb);
 
 	/* USB failure take down all interfaces */
 	if (rc == -ENODEV) {
@@ -666,6 +672,9 @@ static void gs_usb_receive_bulk_callback(struct urb *urb)
 			if (parent->canch[rc])
 				netif_device_detach(parent->canch[rc]->netdev);
 		}
+	} else if (rc != -ESHUTDOWN && net_ratelimit()) {
+		netdev_info(netdev, "failed to re-submit IN URB: %pe\n",
+			    ERR_PTR(rc));
 	}
 }
 
drivers/net/can/usb/kvaser_usb/kvaser_usb_core.c +8 -1
index 57e5cb3c39c5..57f07727e6d7 100644
@@ -349,7 +349,14 @@ static void kvaser_usb_read_bulk_callback(struct urb *urb)
 			  urb->transfer_buffer, KVASER_USB_RX_BUFFER_SIZE,
 			  kvaser_usb_read_bulk_callback, dev);
 
+	usb_anchor_urb(urb, &dev->rx_submitted);
+
 	err = usb_submit_urb(urb, GFP_ATOMIC);
+	if (!err)
+		return;
+
+	usb_unanchor_urb(urb);
+
 	if (err == -ENODEV) {
 		for (i = 0; i < dev->nchannels; i++) {
 			if (!dev->nets[i])
@@ -357,7 +364,7 @@ static void kvaser_usb_read_bulk_callback(struct urb *urb)
 
 			netif_device_detach(dev->nets[i]->netdev);
 		}
-	} else if (err) {
+	} else {
 		dev_err(&dev->intf->dev,
 			"Failed resubmitting read bulk urb: %d\n", err);
 	}
drivers/net/can/usb/mcba_usb.c +7 -1
index ecc489afb841..b0fceff59b32 100644
@@ -608,11 +608,17 @@ static void mcba_usb_read_bulk_callback(struct urb *urb)
 			  urb->transfer_buffer, MCBA_USB_RX_BUFF_SIZE,
 			  mcba_usb_read_bulk_callback, priv);
 
+	usb_anchor_urb(urb, &priv->rx_submitted);
+
 	retval = usb_submit_urb(urb, GFP_ATOMIC);
+	if (!retval)
+		return;
+
+	usb_unanchor_urb(urb);
 
 	if (retval == -ENODEV)
 		netif_device_detach(netdev);
-	else if (retval)
+	else
 		netdev_err(netdev, "failed resubmitting read bulk urb: %d\n",
 			   retval);
 }
drivers/net/can/usb/usb_8dev.c +7 -1
index 8a5596ce4e46..0fedfc287f1f 100644
@@ -541,11 +541,17 @@ static void usb_8dev_read_bulk_callback(struct urb *urb)
 			  urb->transfer_buffer, RX_BUFFER_SIZE,
 			  usb_8dev_read_bulk_callback, priv);
 
+	usb_anchor_urb(urb, &priv->rx_submitted);
+
 	retval = usb_submit_urb(urb, GFP_ATOMIC);
+	if (!retval)
+		return;
+
+	usb_unanchor_urb(urb);
 
 	if (retval == -ENODEV)
 		netif_device_detach(netdev);
-	else if (retval)
+	else
 		netdev_err(netdev,
 			"failed resubmitting read bulk urb: %d\n", retval);
 }
drivers/net/ethernet/amd/xgbe/xgbe-drv.c +1 -4
index b4d57da71de2..3d6f8f3a8336 100644
@@ -2105,7 +2105,7 @@ static void xgbe_get_stats64(struct net_device *netdev,
 	s->multicast = pstats->rxmulticastframes_g;
 	s->rx_length_errors = pstats->rxlengtherror;
 	s->rx_crc_errors = pstats->rxcrcerror;
-	s->rx_fifo_errors = pstats->rxfifooverflow;
+	s->rx_over_errors = pstats->rxfifooverflow;
 
 	s->tx_packets = pstats->txframecount_gb;
 	s->tx_bytes = pstats->txoctetcount_gb;
@@ -2559,9 +2559,6 @@ static int xgbe_rx_poll(struct xgbe_channel *channel, int budget)
 			goto read_again;
 
 		if (error || packet->errors) {
-			if (packet->errors)
-				netif_err(pdata, rx_err, netdev,
-					  "error in received packet\n");
 			dev_kfree_skb(skb);
 			goto next_packet;
 		}
drivers/net/ethernet/emulex/benet/be_cmds.c +2 -1
index e764d2be4948..12c48ad9a32d 100644
@@ -3796,6 +3796,7 @@ int be_cmd_get_perm_mac(struct be_adapter *adapter, u8 *mac)
 {
 	int status;
 	bool pmac_valid = false;
+	u32 pmac_id;
 
 	eth_zero_addr(mac);
 
@@ -3808,7 +3809,7 @@ int be_cmd_get_perm_mac(struct be_adapter *adapter, u8 *mac)
 						       adapter->if_handle, 0);
 	} else {
 		status = be_cmd_get_mac_from_list(adapter, mac, &pmac_valid,
-						  NULL, adapter->if_handle, 0);
+						  &pmac_id, adapter->if_handle, 0);
 	}
 
 	return status;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_cmd.h +1 -1
index 43cada51d8cb..0b9d3fc749b9 100644
@@ -731,7 +731,7 @@ struct hclge_fd_tcam_config_3_cmd {
 #define HCLGE_FD_AD_QID_M		GENMASK(11, 2)
 #define HCLGE_FD_AD_USE_COUNTER_B	12
 #define HCLGE_FD_AD_COUNTER_NUM_S	13
-#define HCLGE_FD_AD_COUNTER_NUM_M	GENMASK(20, 13)
+#define HCLGE_FD_AD_COUNTER_NUM_M	GENMASK(19, 13)
 #define HCLGE_FD_AD_NXT_STEP_B		20
 #define HCLGE_FD_AD_NXT_KEY_S		21
 #define HCLGE_FD_AD_NXT_KEY_M		GENMASK(25, 21)
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c +1 -1
index a92f056b2561..42173a076163 100644
@@ -5717,7 +5717,7 @@ static int hclge_fd_ad_config(struct hclge_dev *hdev, u8 stage, int loc,
 			HCLGE_FD_AD_COUNTER_NUM_S, action->counter_id);
 	hnae3_set_bit(ad_data, HCLGE_FD_AD_NXT_STEP_B, action->use_next_stage);
 	hnae3_set_field(ad_data, HCLGE_FD_AD_NXT_KEY_M, HCLGE_FD_AD_NXT_KEY_S,
-			action->counter_id);
+			action->next_input_key);
 
 	req->ad_data = cpu_to_le64(ad_data);
 	ret = hclge_cmd_send(&hdev->hw, &desc, 1);
drivers/net/ethernet/intel/ice/ice_main.c +0 -1
index 9a540b85756f..2737050aae21 100644
@@ -6546,7 +6546,6 @@ void ice_update_vsi_stats(struct ice_vsi *vsi)
 				    pf->stats.illegal_bytes +
 				    pf->stats.rx_len_errors +
 				    pf->stats.rx_undersize +
-				    pf->hw_csum_rx_error +
 				    pf->stats.rx_jabber +
 				    pf->stats.rx_fragments +
 				    pf->stats.rx_oversize;
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c +1 -1
index d2757cc11613..038382a0b8e9 100644
@@ -1389,7 +1389,7 @@ int mvpp2_ethtool_cls_rule_ins(struct mvpp2_port *port,
 	efs->rule.flow_type = mvpp2_cls_ethtool_flow_to_type(info->fs.flow_type);
 	if (efs->rule.flow_type < 0) {
 		ret = efs->rule.flow_type;
-		goto clean_rule;
+		goto clean_eth_rule;
 	}
 
 	ret = mvpp2_cls_rfs_parse_rule(&efs->rule);
drivers/net/ethernet/marvell/octeontx2/af/rvu.c +64 -22

154 lines not on this page · raw message

drivers/net/ethernet/marvell/octeontx2/nic/cn10k_macsec.c +1 -1
index 6da8d8f2a870..60425e6ce076 100644
@@ -265,7 +265,7 @@ static int cn10k_mcs_write_rx_flowid(struct otx2_nic *pfvf,
 
 	req->data[0] = FIELD_PREP(MCS_TCAM0_MAC_DA_MASK, mac_da);
 	req->mask[0] = ~0ULL;
-	req->mask[0] = ~MCS_TCAM0_MAC_DA_MASK;
+	req->mask[0] &= ~MCS_TCAM0_MAC_DA_MASK;
 
 	req->data[1] = FIELD_PREP(MCS_TCAM1_ETYPE_MASK, ETH_P_MACSEC);
 	req->mask[1] = ~0ULL;
drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.h +1 -6
index 1d3c4180d341..ec0728e1355b 100644
@@ -864,13 +864,8 @@ static inline dma_addr_t otx2_dma_map_page(struct otx2_nic *pfvf,
 					   size_t offset, size_t size,
 					   enum dma_data_direction dir)
 {
-	dma_addr_t iova;
-
-	iova = dma_map_page_attrs(pfvf->dev, page,
+	return dma_map_page_attrs(pfvf->dev, page,
 				  offset, size, dir, DMA_ATTR_SKIP_CPU_SYNC);
-	if (unlikely(dma_mapping_error(pfvf->dev, iova)))
-		return (dma_addr_t)NULL;
-	return iova;
 }
 
 static inline void otx2_dma_unmap_page(struct otx2_nic *pfvf,
drivers/net/ethernet/mellanox/mlx5/core/en_main.c +14 -8
index 0c1f89196f6c..2d0b57583ea3 100644
@@ -3650,6 +3650,8 @@ mlx5e_get_stats(struct net_device *dev, struct rtnl_link_stats64 *stats)
 		mlx5e_queue_update_stats(priv);
 	}
 
+	netdev_stats_to_stats64(stats, &dev->stats);
+
 	if (mlx5e_is_uplink_rep(priv)) {
 		struct mlx5e_vport_stats *vstats = &priv->stats.vport;
 
@@ -3666,20 +3668,21 @@ mlx5e_get_stats(struct net_device *dev, struct rtnl_link_stats64 *stats)
 		mlx5e_fold_sw_stats64(priv, stats);
 	}
 
-	stats->rx_missed_errors = priv->stats.qcnt.rx_out_of_buffer;
+	stats->rx_missed_errors += priv->stats.qcnt.rx_out_of_buffer;
+	stats->rx_dropped += PPORT_2863_GET(pstats, if_in_discards);
 
-	stats->rx_length_errors =
+	stats->rx_length_errors +=
 		PPORT_802_3_GET(pstats, a_in_range_length_errors) +
 		PPORT_802_3_GET(pstats, a_out_of_range_length_field) +
 		PPORT_802_3_GET(pstats, a_frame_too_long_errors) +
 		VNIC_ENV_GET(&priv->stats.vnic, eth_wqe_too_small);
-	stats->rx_crc_errors =
+	stats->rx_crc_errors +=
 		PPORT_802_3_GET(pstats, a_frame_check_sequence_errors);
-	stats->rx_frame_errors = PPORT_802_3_GET(pstats, a_alignment_errors);
-	stats->tx_aborted_errors = PPORT_2863_GET(pstats, if_out_discards);
-	stats->rx_errors = stats->rx_length_errors + stats->rx_crc_errors +
-			   stats->rx_frame_errors;
-	stats->tx_errors = stats->tx_aborted_errors + stats->tx_carrier_errors;
+	stats->rx_frame_errors += PPORT_802_3_GET(pstats, a_alignment_errors);
+	stats->tx_aborted_errors += PPORT_2863_GET(pstats, if_out_discards);
+	stats->rx_errors += stats->rx_length_errors + stats->rx_crc_errors +
+			    stats->rx_frame_errors;
+	stats->tx_errors += stats->tx_aborted_errors + stats->tx_carrier_errors;
 }
 
 static void mlx5e_nic_set_rx_mode(struct mlx5e_priv *priv)
@@ -5566,6 +5569,7 @@ int mlx5e_priv_init(struct mlx5e_priv *priv,
 
 void mlx5e_priv_cleanup(struct mlx5e_priv *priv)
 {
+	bool destroying = test_bit(MLX5E_STATE_DESTROYING, &priv->state);
 	int i;
 
 	/* bail if change profile failed and also rollback failed */
@@ -5591,6 +5595,8 @@ void mlx5e_priv_cleanup(struct mlx5e_priv *priv)
 	}
 
 	memset(priv, 0, sizeof(*priv));
+	if (destroying) /* restore destroying bit, to allow unload */
+		set_bit(MLX5E_STATE_DESTROYING, &priv->state);
 }
 
 static unsigned int mlx5e_get_max_num_txqs(struct mlx5_core_dev *mdev,
drivers/net/ethernet/mellanox/mlx5/core/esw/acl/ingress_lgcy.c +1 -1
index 093ed86a0acd..db51c500ed35 100644
@@ -188,7 +188,7 @@ int esw_acl_ingress_lgcy_setup(struct mlx5_eswitch *esw,
 		if (IS_ERR(vport->ingress.acl)) {
 			err = PTR_ERR(vport->ingress.acl);
 			vport->ingress.acl = NULL;
-			return err;
+			goto out;
 		}
 
 		err = esw_acl_ingress_lgcy_groups_create(esw, vport);
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c +0 -19
index 5237abbdcda1..f7f1eae998b5 100644
@@ -3493,18 +3493,6 @@ static int esw_inline_mode_to_devlink(u8 mlx5_mode, u8 *mode)
 	return 0;
 }
 
-static bool esw_offloads_devlink_ns_eq_netdev_ns(struct devlink *devlink)
-{
-	struct net *devl_net, *netdev_net;
-	struct mlx5_eswitch *esw;
-
-	esw = mlx5_devlink_eswitch_get(devlink);
-	netdev_net = dev_net(esw->dev->mlx5e_res.uplink_netdev);
-	devl_net = devlink_net(devlink);
-
-	return net_eq(devl_net, netdev_net);
-}
-
 int mlx5_devlink_eswitch_mode_set(struct devlink *devlink, u16 mode,
 				  struct netlink_ext_ack *extack)
 {
@@ -3519,13 +3507,6 @@ int mlx5_devlink_eswitch_mode_set(struct devlink *devlink, u16 mode,
 	if (esw_mode_from_devlink(mode, &mlx5_mode))
 		return -EINVAL;
 
-	if (mode == DEVLINK_ESWITCH_MODE_SWITCHDEV &&
-	    !esw_offloads_devlink_ns_eq_netdev_ns(devlink)) {
-		NL_SET_ERR_MSG_MOD(extack,
-				   "Can't change E-Switch mode to switchdev when netdev net namespace has diverged from the devlink's.");
-		return -EPERM;
-	}
-
 	mlx5_lag_disable_change(esw->dev);
 	err = mlx5_esw_try_lock(esw);
 	if (err < 0) {
drivers/net/ethernet/rocker/rocker_main.c +2 -3
index 2e2826c901fc..b741d335b1dc 100644
@@ -1525,9 +1525,8 @@ static void rocker_world_port_post_fini(struct rocker_port *rocker_port)
 {
 	struct rocker_world_ops *wops = rocker_port->rocker->wops;
 
-	if (!wops->port_post_fini)
-		return;
-	wops->port_post_fini(rocker_port);
+	if (wops->port_post_fini)
+		wops->port_post_fini(rocker_port);
 	kfree(rocker_port->wpriv);
 }
 
drivers/net/ethernet/stmicro/stmmac/dwmac5.c +5 -0
index 8fd167501fa0..0afd4644a985 100644
@@ -597,6 +597,11 @@ int dwmac5_est_configure(void __iomem *ioaddr, struct stmmac_est *cfg,
 	int i, ret = 0x0;
 	u32 ctrl;
 
+	if (!ptp_rate) {
+		pr_warn("Dwmac5: Invalid PTP rate");
+		return -EINVAL;
+	}
+
 	ret |= dwmac5_est_write(ioaddr, BTR_LOW, cfg->btr[0], false);
 	ret |= dwmac5_est_write(ioaddr, BTR_HIGH, cfg->btr[1], false);
 	ret |= dwmac5_est_write(ioaddr, TER, cfg->ter, false);
drivers/net/ethernet/stmicro/stmmac/dwxgmac2_core.c +5 -0
index d0e2748a0ed2..b73c8dcfacee 100644
@@ -1497,6 +1497,11 @@ static int dwxgmac3_est_configure(void __iomem *ioaddr, struct stmmac_est *cfg,
 	int i, ret = 0x0;
 	u32 ctrl;
 
+	if (!ptp_rate) {
+		pr_warn("Dwxgmac2: Invalid PTP rate");
+		return -EINVAL;
+	}
+
 	ret |= dwxgmac3_est_write(ioaddr, XGMAC_BTR_LOW, cfg->btr[0], false);
 	ret |= dwxgmac3_est_write(ioaddr, XGMAC_BTR_HIGH, cfg->btr[1], false);
 	ret |= dwxgmac3_est_write(ioaddr, XGMAC_TER, cfg->ter, false);
drivers/net/hyperv/hyperv_net.h +4 -1
index ea9cb1ac4bbe..97952229a7b7 100644
@@ -74,6 +74,7 @@ struct ndis_recv_scale_cap { /* NDIS_RECEIVE_SCALE_CAPABILITIES */
 #define NDIS_RSS_HASH_SECRET_KEY_MAX_SIZE_REVISION_2   40
 
 #define ITAB_NUM 128
+#define ITAB_NUM_MAX 256
 
 struct ndis_recv_scale_param { /* NDIS_RECEIVE_SCALE_PARAMETERS */
 	struct ndis_obj_header hdr;
@@ -1045,7 +1046,9 @@ struct net_device_context {
 
 	u32 tx_table[VRSS_SEND_TAB_SIZE];
 
-	u16 rx_table[ITAB_NUM];
+	u16 *rx_table;
+
+	u32 rx_table_sz;
 
 	/* Ethtool settings */
 	u8 duplex;
drivers/net/hyperv/netvsc_drv.c +9 -4
index 7433fe769943..20c584f46ec0 100644
@@ -1717,7 +1717,9 @@ static u32 netvsc_get_rxfh_key_size(struct net_device *dev)
 
 static u32 netvsc_rss_indir_size(struct net_device *dev)
 {
-	return ITAB_NUM;
+	struct net_device_context *ndc = netdev_priv(dev);
+
+	return ndc->rx_table_sz;
 }
 
 static int netvsc_get_rxfh(struct net_device *dev, u32 *indir, u8 *key,
@@ -1736,7 +1738,7 @@ static int netvsc_get_rxfh(struct net_device *dev, u32 *indir, u8 *key,
 
 	rndis_dev = ndev->extension;
 	if (indir) {
-		for (i = 0; i < ITAB_NUM; i++)
+		for (i = 0; i < ndc->rx_table_sz; i++)
 			indir[i] = ndc->rx_table[i];
 	}
 
@@ -1760,13 +1762,16 @@ static int netvsc_set_rxfh(struct net_device *dev, const u32 *indir,
 	if (hfunc != ETH_RSS_HASH_NO_CHANGE && hfunc != ETH_RSS_HASH_TOP)
 		return -EOPNOTSUPP;
 
+	if (!ndc->rx_table_sz)
+		return -EOPNOTSUPP;
+
 	rndis_dev = ndev->extension;
 	if (indir) {
-		for (i = 0; i < ITAB_NUM; i++)
+		for (i = 0; i < ndc->rx_table_sz; i++)
 			if (indir[i] >= ndev->num_chn)
 				return -EINVAL;
 
-		for (i = 0; i < ITAB_NUM; i++)
+		for (i = 0; i < ndc->rx_table_sz; i++)
 			ndc->rx_table[i] = indir[i];
 	}
 
drivers/net/hyperv/rndis_filter.c +25 -4
index bb656ea09773..09144f0ec2aa 100644
@@ -21,6 +21,7 @@
 #include <linux/rtnetlink.h>
 #include <linux/ucs2_string.h>
 #include <linux/string.h>
+#include <linux/slab.h>
 
 #include "hyperv_net.h"
 #include "netvsc_trace.h"
@@ -913,7 +914,7 @@ static int rndis_set_rss_param_msg(struct rndis_device *rdev,
 	struct rndis_set_request *set;
 	struct rndis_set_complete *set_complete;
 	u32 extlen = sizeof(struct ndis_recv_scale_param) +
-		     4 * ITAB_NUM + NETVSC_HASH_KEYLEN;
+		     4 * ndc->rx_table_sz + NETVSC_HASH_KEYLEN;
 	struct ndis_recv_scale_param *rssp;
 	u32 *itab;
 	u8 *keyp;
@@ -939,7 +940,7 @@ static int rndis_set_rss_param_msg(struct rndis_device *rdev,
 	rssp->hashinfo = NDIS_HASH_FUNC_TOEPLITZ | NDIS_HASH_IPV4 |
 			 NDIS_HASH_TCP_IPV4 | NDIS_HASH_IPV6 |
 			 NDIS_HASH_TCP_IPV6;
-	rssp->indirect_tabsize = 4*ITAB_NUM;
+	rssp->indirect_tabsize = 4 * ndc->rx_table_sz;
 	rssp->indirect_taboffset = sizeof(struct ndis_recv_scale_param);
 	rssp->hashkey_size = NETVSC_HASH_KEYLEN;
 	rssp->hashkey_offset = rssp->indirect_taboffset +
@@ -947,7 +948,7 @@ static int rndis_set_rss_param_msg(struct rndis_device *rdev,
 
 	/* Set indirection table entries */
 	itab = (u32 *)(rssp + 1);
-	for (i = 0; i < ITAB_NUM; i++)
+	for (i = 0; i < ndc->rx_table_sz; i++)
 		itab[i] = ndc->rx_table[i];
 
 	/* Set hask key values */
@@ -1534,6 +1535,18 @@ struct netvsc_device *rndis_filter_device_add(struct hv_device *dev,
 	if (ret || rsscap.num_recv_que < 2)
 		goto out;
 
+	if (rsscap.num_indirect_tabent &&
+	    rsscap.num_indirect_tabent <= ITAB_NUM_MAX)
+		ndc->rx_table_sz = rsscap.num_indirect_tabent;
+	else
+		ndc->rx_table_sz = ITAB_NUM;
+
+	ndc->rx_table = kcalloc(ndc->rx_table_sz, sizeof(u16), GFP_KERNEL);
+	if (!ndc->rx_table) {
+		ret = -ENOMEM;
+		goto err_dev_remv;
+	}
+
 	/* This guarantees that num_possible_rss_qs <= num_online_cpus */
 	num_possible_rss_qs = min_t(u32, num_online_cpus(),
 				    rsscap.num_recv_que);
@@ -1544,7 +1557,7 @@ struct netvsc_device *rndis_filter_device_add(struct hv_device *dev,
 	net_device->num_chn = min(net_device->max_chn, device_info->num_chn);
 
 	if (!netif_is_rxfh_configured(net)) {
-		for (i = 0; i < ITAB_NUM; i++)
+		for (i = 0; i < ndc->rx_table_sz; i++)
 			ndc->rx_table[i] = ethtool_rxfh_indir_default(
 						i, net_device->num_chn);
 	}
@@ -1582,11 +1595,19 @@ void rndis_filter_device_remove(struct hv_device *dev,
 				struct netvsc_device *net_dev)
 {
 	struct rndis_device *rndis_dev = net_dev->extension;
+	struct net_device *net = hv_get_drvdata(dev);
+	struct net_device_context *ndc;
+
+	ndc = netdev_priv(net);
 
 	/* Halt and release the rndis device */
 	rndis_filter_halt_device(net_dev, rndis_dev);
 
 	netvsc_device_remove(dev);
+
+	ndc->rx_table_sz = 0;
+	kfree(ndc->rx_table);
+	ndc->rx_table = NULL;
 }
 
 int rndis_filter_open(struct netvsc_device *nvdev)
drivers/net/ipvlan/ipvlan.h +1 -1
index 025e0c19ec25..fce3ced90bd3 100644
@@ -69,7 +69,6 @@ struct ipvl_dev {
 	DECLARE_BITMAP(mac_filters, IPVLAN_MAC_FILTER_SIZE);
 	netdev_features_t	sfeatures;
 	u32			msg_enable;
-	spinlock_t		addrs_lock;
 };
 
 struct ipvl_addr {
@@ -90,6 +89,7 @@ struct ipvl_port {
 	struct net_device	*dev;
 	possible_net_t		pnet;
 	struct hlist_head	hlhead[IPVLAN_HASH_SIZE];
+	spinlock_t		addrs_lock; /* guards hash-table and addrs */
 	struct list_head	ipvlans;
 	u16			mode;
 	u16			flags;
drivers/net/ipvlan/ipvlan_core.c +7 -9
index a8017424ab53..bf57e4427eb4 100644
@@ -107,17 +107,15 @@ void ipvlan_ht_addr_del(struct ipvl_addr *addr)
 struct ipvl_addr *ipvlan_find_addr(const struct ipvl_dev *ipvlan,
 				   const void *iaddr, bool is_v6)
 {
-	struct ipvl_addr *addr, *ret = NULL;
+	struct ipvl_addr *addr;
 
-	rcu_read_lock();
-	list_for_each_entry_rcu(addr, &ipvlan->addrs, anode) {
-		if (addr_equal(is_v6, addr, iaddr)) {
-			ret = addr;
-			break;
-		}
+	assert_spin_locked(&ipvlan->port->addrs_lock);
+
[… more lines in the raw message]

Lines of this file are not shown. View the raw message.

drivers/net/ipvlan/ipvlan_main.c +29 -20

49 lines not on this page · raw message

drivers/net/macvlan.c +13 -7
index 012830d12fde..428b139822cf 100644

Lines of this file are not shown. View the raw message.

drivers/net/netdevsim/bpf.c +6 -0
index 50854265864d..7064a3397be2 100644

Lines of this file are not shown. View the raw message.

drivers/net/netdevsim/dev.c +2 -0
index cdf7a70d6659..971796b30605 100644

Lines of this file are not shown. View the raw message.

drivers/net/netdevsim/netdevsim.h +1 -0
index 02e3518e9a7e..c28f5a9f9230 100644

Lines of this file are not shown. View the raw message.

drivers/net/team/team.c +15 -8
index e315a1d3a9e9..ea2a7cea3f6a 100644

Lines of this file are not shown. View the raw message.

drivers/net/usb/dm9601.c +0 -4
index 8b6d6a1b3c2e..2b4716ccf0c5 100644

Lines of this file are not shown. View the raw message.

drivers/net/usb/usbnet.c +8 -3
index 6bdf035e35f5..f9a1b2a441d5 100644

Lines of this file are not shown. View the raw message.

drivers/net/wireless/ath/ath10k/ce.c +8 -8
index 59926227bd49..ed39c0291f8e 100644

Lines of this file are not shown. View the raw message.

drivers/net/wireless/marvell/mwifiex/11n_rxreorder.c +3 -3
index 4ab3a14567b6..a0d596c74c72 100644

Lines of this file are not shown. View the raw message.

drivers/net/wireless/rsi/rsi_91x_mac80211.c +1 -0
index 2fbec51c8f94..80ad871f028c 100644

Lines of this file are not shown. View the raw message.

drivers/net/wwan/t7xx/t7xx_hif_dpmaif_rx.c +7 -2
index f4f924d75103..bdf1451fbc87 100644

Lines of this file are not shown. View the raw message.

drivers/net/xen-netback/xenbus.c +1 -2
index c1ba4294f364..001636901dda 100644

Lines of this file are not shown. View the raw message.

drivers/net/xen-netfront.c +1 -3
index 74925e166462..dd40e0d98d7e 100644

Lines of this file are not shown. View the raw message.

drivers/nfc/virtual_ncidev.c +0 -4
index 9fffd4421ad5..85c06dbb2c44 100644

Lines of this file are not shown. View the raw message.

drivers/nvme/host/fabrics.c +15 -0
index ce27276f552d..fe621028a082 100644

Lines of this file are not shown. View the raw message.

drivers/nvme/host/fabrics.h +1 -0
index 60c238caf7a9..be2388ecc91b 100644

Lines of this file are not shown. View the raw message.

drivers/nvme/host/fc.c +3 -2
index 87a9801ac9f2..dc84cade703d 100644

Lines of this file are not shown. View the raw message.

drivers/nvme/host/nvme.h +3 -11
index 0f49b779dec6..8c97777ba629 100644

Lines of this file are not shown. View the raw message.

drivers/nvme/host/pci.c +41 -0

41 lines not on this page · raw message

drivers/nvme/host/rdma.c +1 -0
index aa1734e2fd44..47fbf561c01e 100644

Lines of this file are not shown. View the raw message.

drivers/nvme/host/tcp.c +1 -0
index 4e1b91c0416b..441cacad4498 100644

Lines of this file are not shown. View the raw message.

drivers/nvme/target/tcp.c +20 -8
index eee052dbf80c..7fae0103a515 100644

Lines of this file are not shown. View the raw message.

drivers/of/base.c +6 -2
index 90c934bb91da..17d5b3759fcb 100644

Lines of this file are not shown. View the raw message.

drivers/of/platform.c +1 -1
index bf96862cb700..28ae47fcf3bf 100644

Lines of this file are not shown. View the raw message.

drivers/pci/Kconfig +0 -6
index c4f9ac5c00c1..55c028af4bd9 100644

Lines of this file are not shown. View the raw message.

drivers/pci/xen-pcifront.c +1 -3
index 7378e2f3e525..fcd029ca2eb1 100644

Lines of this file are not shown. View the raw message.

drivers/phy/broadcom/phy-bcm-ns-usb3.c +1 -1
index 2c8b1b7dda5b..5c2710597df2 100644

Lines of this file are not shown. View the raw message.

drivers/phy/freescale/phy-fsl-imx8m-pcie.c +2 -1
index 4f334ac5a7a9..f539676fbabd 100644

Lines of this file are not shown. View the raw message.

drivers/phy/rockchip/phy-rockchip-inno-usb2.c +23 -33

56 lines not on this page · raw message

drivers/phy/st/phy-stm32-usbphyc.c +1 -1
index 5bb9647b078f..c2947159e8b4 100644

Lines of this file are not shown. View the raw message.

drivers/phy/tegra/xusb-tegra186.c +3 -0
index 1dac290e5457..b36c1e954f31 100644

Lines of this file are not shown. View the raw message.

drivers/pinctrl/meson/pinctrl-meson.c +1 -1
index 1f05f7f1a9ae..1555d26df6cd 100644

Lines of this file are not shown. View the raw message.

drivers/pinctrl/pinctrl-rockchip.c +4 -5
index ca5a01c11ce6..36ab233d2e88 100644

Lines of this file are not shown. View the raw message.

drivers/pinctrl/qcom/pinctrl-lpass-lpi.c +17 -0
index 35f46ca4cf9f..c90bc60b3386 100644

Lines of this file are not shown. View the raw message.

drivers/ptp/ptp_chardev.c +29 -8
index 6b3600356797..aa38a518e3d7 100644

Lines of this file are not shown. View the raw message.

drivers/ptp/ptp_private.h +9 -7
index a54124269c2f..a431eb79fe77 100644

Lines of this file are not shown. View the raw message.

drivers/scsi/be2iscsi/be_mgmt.c +1 -0
index 4e899ec1477d..b1cba986f0fb 100644

Lines of this file are not shown. View the raw message.

drivers/scsi/qla2xxx/qla_os.c +1 -1
index c9655b6a7f97..6f3996409968 100644

Lines of this file are not shown. View the raw message.

drivers/scsi/scsi_error.c +34 -1
index cfa6f0edff17..79dc157661ce 100644

Lines of this file are not shown. View the raw message.

drivers/scsi/scsi_lib.c +8 -0
index df61d7b90665..ddc986ff5161 100644

Lines of this file are not shown. View the raw message.

drivers/scsi/storvsc_drv.c +2 -1
index 8bdad9c4a71a..ae9258347106 100644

Lines of this file are not shown. View the raw message.

drivers/scsi/xen-scsifront.c +1 -3
index 66b316d173b0..71a3bb83984c 100644

Lines of this file are not shown. View the raw message.

drivers/slimbus/core.c +12 -7
index 37fd655994ef..1a227781d6eb 100644

Lines of this file are not shown. View the raw message.

drivers/soc/imx/imx8m-blk-ctrl.c +7 -4
index 00879615a701..a430c14ce16d 100644

Lines of this file are not shown. View the raw message.

drivers/spi/spi-sprd-adi.c +19 -48

67 lines not on this page · raw message

drivers/target/sbp/sbp_target.c +2 -2
index 504670994fb4..97a5565fb14e 100644

Lines of this file are not shown. View the raw message.

drivers/tty/hvc/hvc_xen.c +2 -2
index 281bc83acfad..34c01874f45b 100644

Lines of this file are not shown. View the raw message.

drivers/tty/serial/8250/8250_pci.c +1 -1
index 6a30c08733ef..89a68cecbc64 100644

Lines of this file are not shown. View the raw message.

drivers/usb/core/config.c +5 -0
index 4d9ac04a49cc..4ca54506a1ac 100644

Lines of this file are not shown. View the raw message.

drivers/usb/core/quirks.c +3 -0
index c322d0c1d965..323a949bbb05 100644

Lines of this file are not shown. View the raw message.

drivers/usb/dwc3/core.c +2 -0
index 5736d21df471..6c8a0f0620d5 100644

Lines of this file are not shown. View the raw message.

drivers/usb/dwc3/core.h +1 -0
index 9a3cc6214569..933a208c3aab 100644

Lines of this file are not shown. View the raw message.

drivers/usb/host/ohci-platform.c +1 -0
index a84305091c43..523428967fe6 100644

Lines of this file are not shown. View the raw message.

drivers/usb/host/uhci-platform.c +1 -0
index 53d2fbee76e2..132013bac43b 100644

Lines of this file are not shown. View the raw message.

drivers/usb/host/xen-hcd.c +1 -3
index de1b09158318..46fdab940092 100644

Lines of this file are not shown. View the raw message.

drivers/usb/serial/ftdi_sio.c +1 -0
index a5a2fc7e6d98..6d21dd340d46 100644

Lines of this file are not shown. View the raw message.

drivers/usb/serial/ftdi_sio_ids.h +2 -0
index 2539b9e2f712..6c76cfebfd0e 100644

Lines of this file are not shown. View the raw message.

drivers/usb/serial/option.c +1 -0
index 476c82662162..506a26c12e1a 100644

Lines of this file are not shown. View the raw message.

drivers/vhost/scsi.c +13 -11
index de6f108a50a9..f9ef17c3e566 100644

Lines of this file are not shown. View the raw message.

drivers/video/fbdev/xen-fbfront.c +2 -4
index 4d2694d904aa..ae8a50ecdbd3 100644

Lines of this file are not shown. View the raw message.

drivers/w1/slaves/w1_therm.c +20 -42

62 lines not on this page · raw message

drivers/w1/w1.c +0 -2
index 2eee26b7fc4a..d800f062acd1 100644

Lines of this file are not shown. View the raw message.

drivers/xen/pvcalls-back.c +1 -2
index 0bff02ac0045..c633ebcf1163 100644

Lines of this file are not shown. View the raw message.

drivers/xen/pvcalls-front.c +1 -2
index 9b569278788a..d5d589bda243 100644

Lines of this file are not shown. View the raw message.

drivers/xen/xen-pciback/xenbus.c +1 -3
index d171091eec12..b11e401f1b1e 100644

Lines of this file are not shown. View the raw message.

drivers/xen/xen-scsiback.c +2 -3
index 6106ed93817d..dcc9d15504df 100644

Lines of this file are not shown. View the raw message.

fs/btrfs/block-group.c +38 -22

60 lines not on this page · raw message

fs/btrfs/ctree.h +0 -59

59 lines not on this page · raw message

fs/btrfs/delayed-inode.c +1 -0
index 052112d0daa7..214168868ac0 100644

Lines of this file are not shown. View the raw message.

fs/btrfs/disk-io.c +1 -1
index 8576ba4aa0b7..52e083b63070 100644

Lines of this file are not shown. View the raw message.

fs/btrfs/inode-item.c +1 -0
index 5add022d3534..ce5c51ffdc0d 100644

Lines of this file are not shown. View the raw message.

fs/btrfs/props.c +1 -0
index 055a631276ce..07f62e3ba6a5 100644

Lines of this file are not shown. View the raw message.

fs/btrfs/relocation.c +14 -0
index 3fdf5519336f..93916c52b50e 100644

Lines of this file are not shown. View the raw message.

fs/btrfs/space-info.c +62 -14

76 lines not on this page · raw message

fs/btrfs/space-info.h +69 -0

69 lines not on this page · raw message

fs/btrfs/sysfs.c +15 -3
index 44a94ac21e2f..693ae7870568 100644

Lines of this file are not shown. View the raw message.

fs/btrfs/transaction.c +6 -5
index 54894a950c6f..b22b8e68672c 100644

Lines of this file are not shown. View the raw message.

fs/efivarfs/vars.c +1 -1
index 13bc60698955..b10aa5afd7f7 100644

Lines of this file are not shown. View the raw message.

fs/ext4/xattr.c +1 -0
index 030a7725d215..aa03de8e675c 100644

Lines of this file are not shown. View the raw message.

fs/fs-writeback.c +10 -4
index 75e8c102c5ee..0a36fc5e1bf2 100644

Lines of this file are not shown. View the raw message.

fs/gfs2/log.c +2 -1
index 8fd8bb860486..45f519ececd9 100644

Lines of this file are not shown. View the raw message.

fs/gfs2/lops.c +1 -1
index 5656851b9240..1902413d5d12 100644

Lines of this file are not shown. View the raw message.

fs/gfs2/super.c +4 -0
index 8d90a5e48147..14b3f66938ea 100644

Lines of this file are not shown. View the raw message.

fs/iomap/buffered-io.c +1 -1
index 70e246f7e8fe..e4f58d1e12d4 100644

Lines of this file are not shown. View the raw message.

fs/nfs/flexfilelayout/flexfilelayoutdev.c +1 -1
index 95d5dca67145..ed18e9e87c25 100644

Lines of this file are not shown. View the raw message.

fs/nfsd/nfsctl.c +8 -9
index 07e5b1b23c91..ba2eaf3744ef 100644

Lines of this file are not shown. View the raw message.

fs/ntfs3/inode.c +3 -4
index e47eec61f237..b8ac0943e932 100644

Lines of this file are not shown. View the raw message.

fs/smb/server/mgmt/user_session.c +24 -11
index f78820afd354..1b5ac28d7e66 100644

Lines of this file are not shown. View the raw message.

fs/smb/server/mgmt/user_session.h +1 -0
index f4da293c4dbb..011362e975b0 100644

Lines of this file are not shown. View the raw message.

fs/smb/server/smb2pdu.c +8 -1
index 623db96669d9..100016298f87 100644

Lines of this file are not shown. View the raw message.

fs/smb/server/transport_ipc.c +12 -0
index 143bd4b3a6b4..ed423d0ca99d 100644

Lines of this file are not shown. View the raw message.

fs/smb/server/transport_rdma.c +7 -8
index 81da8a5c1e0d..1290c0fa7dd1 100644

Lines of this file are not shown. View the raw message.

fs/xfs/libxfs/xfs_ialloc.c +6 -5
index d1472cbd48ff..4b2894c85cea 100644

Lines of this file are not shown. View the raw message.

include/linux/kfence.h +1 -0
index 726857a4b680..d5258c63ffd7 100644

Lines of this file are not shown. View the raw message.

include/linux/libata.h +26 -10
index 363462d3f077..d7f86de11d18 100644

Lines of this file are not shown. View the raw message.

include/linux/nvme.h +3 -0
index 15086715632e..0d6153fc9b01 100644

Lines of this file are not shown. View the raw message.

include/linux/posix-clock.h +31 -8
index 468328b1e1dd..a500d3160fe8 100644

Lines of this file are not shown. View the raw message.

include/linux/textsearch.h +1 -0
index 6673e4d4ac2e..4933777404d6 100644

Lines of this file are not shown. View the raw message.

include/linux/usb/quirks.h +3 -0
index 59409c1fc3de..2f7bd2fdc616 100644

Lines of this file are not shown. View the raw message.

include/net/bonding.h +7 -6
index bfd3e4e58f86..bdfbe77c1842 100644

Lines of this file are not shown. View the raw message.

include/net/nfc/nfc.h +2 -0
index 5dee575fbe86..b82f4f2a27fb 100644

Lines of this file are not shown. View the raw message.

include/scsi/scsi_eh.h +6 -0
index 1ae08e81339f..15679be90c5c 100644

Lines of this file are not shown. View the raw message.

include/sound/pcm.h +1 -1
index 51881ffbd155..296bd28aa157 100644

Lines of this file are not shown. View the raw message.

include/uapi/linux/comedi.h +1 -1
index 7314e5ee0a1e..798ec9a39e12 100644

Lines of this file are not shown. View the raw message.

include/xen/xenbus.h +1 -1
index eaa932b99d8a..ad4fb4eab753 100644

Lines of this file are not shown. View the raw message.

io_uring/io_uring.c +4 -4
index 2aae0de6169c..d0d9ff6b87a0 100644

Lines of this file are not shown. View the raw message.

kernel/bpf/cgroup.c +4 -4
index 2cb04e0e118d..0024b1a59209 100644

Lines of this file are not shown. View the raw message.

kernel/dma/pool.c +6 -1
index 1e9d4cb01869..8fc6e3b8f837 100644

Lines of this file are not shown. View the raw message.

kernel/irq/irq_sim.c +1 -1
index dd76323ea3fd..bde31468c19d 100644

Lines of this file are not shown. View the raw message.

kernel/time/hrtimer.c +1 -1
index 8aa7ede57e71..049dd5b37274 100644

Lines of this file are not shown. View the raw message.

kernel/time/posix-clock.c +37 -16

53 lines not on this page · raw message

lib/flex_proportions.c +3 -2
index 83332fefa6f4..27193fa008f6 100644

Lines of this file are not shown. View the raw message.

mm/Kconfig +8 -4
index cf782e047491..a83a42108847 100644

Lines of this file are not shown. View the raw message.

mm/damon/sysfs.c +9 -6
index 18f459a3c9ff..a5a1e90e53e7 100644

Lines of this file are not shown. View the raw message.

mm/kfence/core.c +19 -4
index 799d8503f35f..edf6deb382b6 100644

Lines of this file are not shown. View the raw message.

mm/kmsan/shadow.c +1 -2
index b8bb95eea5e3..f9e62f28d647 100644

Lines of this file are not shown. View the raw message.

mm/migrate.c +6 -6
index 7b986c9f4032..c58fc73e85fd 100644

Lines of this file are not shown. View the raw message.

mm/mprotect.c +58 -43

101 lines not on this page · raw message

mm/page_alloc.c +42 -5

47 lines not on this page · raw message

mm/rmap.c +4 -16
index 7d7bacd37ff4..49d48a427f08 100644

Lines of this file are not shown. View the raw message.

net/9p/trans_xen.c +1 -2
index 4ad7e7a269ca..36f432ca4cd5 100644

Lines of this file are not shown. View the raw message.

net/bpf/test_run.c +5 -0
index ab8d21372b7d..9cbdfb9fd674 100644

Lines of this file are not shown. View the raw message.

net/bridge/br_input.c +1 -1
index f11345720c27..e33500771b30 100644

Lines of this file are not shown. View the raw message.

net/can/j1939/transport.c +9 -1
index 0522c223570c..e17a166a73c4 100644

Lines of this file are not shown. View the raw message.

net/core/dev.c +19 -6
index 114fc8bc37f8..69bb7ac73d04 100644

Lines of this file are not shown. View the raw message.

net/core/filter.c +16 -9
index ac84e70cf543..305c38636b32 100644

Lines of this file are not shown. View the raw message.

net/ipv4/Makefile +1 -0
index bbdd9c44f14e..d1c8d4beb77d 100644

Lines of this file are not shown. View the raw message.

net/ipv4/esp4_offload.c +2 -2
index cbfc8b5b15bd..8d6a40054eaa 100644

Lines of this file are not shown. View the raw message.

net/ipv4/fou.c deleted +0 -1313

1,313 lines not on this page · raw message

net/ipv4/fou_core.c new file +1283 -0

1,283 lines not on this page · raw message

net/ipv4/fou_nl.c new file +48 -0

48 lines not on this page · raw message

net/ipv4/fou_nl.h new file +25 -0
new file mode 100644
index 000000000000..b7a68121ce6f

Lines of this file are not shown. View the raw message.

net/ipv4/ip_gre.c +9 -2
index 2c311ed84a3b..b90241aff93c 100644

Lines of this file are not shown. View the raw message.

net/ipv6/addrconf.c +2 -2
index 03961f808075..d6a33452dd36 100644

Lines of this file are not shown. View the raw message.

net/ipv6/esp6_offload.c +2 -2
index 65d628e50005..460cf1dab9da 100644

Lines of this file are not shown. View the raw message.

net/ipv6/icmp.c +3 -1
index 7d88fd314c39..7ba3c642ab3c 100644

Lines of this file are not shown. View the raw message.

net/ipv6/ip6_tunnel.c +1 -1
index dfca22c6d345..8ce36fcc3dd5 100644

Lines of this file are not shown. View the raw message.

net/ipv6/ndisc.c +2 -2
index 1a6408a24d21..affbf12d44f5 100644

Lines of this file are not shown. View the raw message.

net/l2tp/l2tp_core.c +2 -2
index 70da78ab9520..e0ca08ebd16a 100644

Lines of this file are not shown. View the raw message.

net/mac80211/ibss.c +4 -4
index 79d2c5505289..363e7e4fdd02 100644

Lines of this file are not shown. View the raw message.

net/mac80211/ieee80211_i.h +3 -3
index 64f8d8f2b799..e94a370da4c4 100644

Lines of this file are not shown. View the raw message.

net/mac80211/iface.c +5 -5
index e691ecdd2ad5..6818c9d852e8 100644

Lines of this file are not shown. View the raw message.

net/mac80211/mesh.c +5 -5
index 9c9b47d153c2..434efb30c75f 100644

Lines of this file are not shown. View the raw message.

net/mac80211/mesh_hwmp.c +3 -3
index da9e152a7aab..50dba479246b 100644

Lines of this file are not shown. View the raw message.

net/mac80211/mlme.c +7 -6
index 1fb41e5cc577..30db27df6b79 100644

Lines of this file are not shown. View the raw message.

net/mac80211/ocb.c +3 -3
index a57dcbe99a0d..fcc326913391 100644

Lines of this file are not shown. View the raw message.

net/mac80211/rx.c +1 -1
index 42dd7d1dda39..a6636e9f5c08 100644

Lines of this file are not shown. View the raw message.

net/mac80211/scan.c +1 -1
index f1147d156c1f..58da59836884 100644

Lines of this file are not shown. View the raw message.

net/mac80211/status.c +3 -3
index 3a96aa306616..9a8fca897d9f 100644

Lines of this file are not shown. View the raw message.

net/mac80211/tdls.c +6 -5
index 04531d18fa93..1f07b598a6a1 100644

Lines of this file are not shown. View the raw message.

net/mac80211/util.c +1 -1
index e60c8607e4b6..116a3e70582b 100644

Lines of this file are not shown. View the raw message.

net/mptcp/protocol.c +7 -6
index 423243d0d27a..2d107a1f2ef9 100644

Lines of this file are not shown. View the raw message.

net/netrom/nr_route.c +9 -4
index 0b270893ee14..89e4bf4aa652 100644

Lines of this file are not shown. View the raw message.

net/nfc/core.c +24 -3
index 5352571b6214..a02ede8b067b 100644

Lines of this file are not shown. View the raw message.

net/nfc/llcp_commands.c +16 -1
index e2680a3bef79..b652323bc2c1 100644

Lines of this file are not shown. View the raw message.

net/nfc/llcp_core.c +3 -1
index 18be13fb9b75..ced99d2a90cc 100644

Lines of this file are not shown. View the raw message.

net/nfc/nci/core.c +3 -1
index 6196bb512dfc..2ffdbbf90eb7 100644

Lines of this file are not shown. View the raw message.

net/sched/act_ife.c +7 -5
index a4505b926a1e..1f243ea65443 100644

Lines of this file are not shown. View the raw message.

net/sched/sch_qfq.c +5 -3
index 80a7173843b9..51d962e5113b 100644

Lines of this file are not shown. View the raw message.

net/sched/sch_teql.c +5 -0
index 7721239c185f..0a7856e14a97 100644

Lines of this file are not shown. View the raw message.

net/sctp/input.c +1 -1
index 4ee9374dcfb9..182898cb754a 100644

Lines of this file are not shown. View the raw message.

net/sctp/sm_statefuns.c +5 -5
index beae92ad25bb..80a6b9fc964e 100644

Lines of this file are not shown. View the raw message.

net/vmw_vsock/virtio_transport_common.c +21 -9
index a65da57fe26f..bb44a95b43d5 100644

Lines of this file are not shown. View the raw message.

scripts/generate_rust_analyzer.py +1 -1
index 1093c540e324..dadb1edf87e7 100755

Lines of this file are not shown. View the raw message.

sound/core/oss/pcm_oss.c +3 -1
index 2b9fada97532..80dae370a0d5 100644

Lines of this file are not shown. View the raw message.

sound/core/pcm_native.c +7 -2
index 900525df53f0..cfd072a41fef 100644

Lines of this file are not shown. View the raw message.

sound/pci/ctxfi/ctamixer.c +2 -0
index d074727c3e21..5922b9dc5890 100644

Lines of this file are not shown. View the raw message.

sound/soc/amd/yc/acp6x-mach.c +8 -0
index cbb2a1d1a823..6bbbcf77fc52 100644

Lines of this file are not shown. View the raw message.

sound/soc/codecs/tlv320adcx140.c +3 -5
index 530f321d08e9..67eef894d0c2 100644

Lines of this file are not shown. View the raw message.

sound/soc/codecs/wsa881x.c +43 -11

54 lines not on this page · raw message

sound/soc/codecs/wsa883x.c +9 -0
index 639fb77170ac..94ac6729cb01 100644

Lines of this file are not shown. View the raw message.

sound/soc/fsl/imx-card.c +0 -1
index 11430f9f4996..0a7e17325e85 100644

Lines of this file are not shown. View the raw message.

sound/soc/intel/boards/sof_es8336.c +1 -1
index e22d767b6e97..41dab5dcf79a 100644

Lines of this file are not shown. View the raw message.

sound/usb/mixer.c +17 -5
index 1540e9f1c2e3..a1990cb76be9 100644

Lines of this file are not shown. View the raw message.

sound/usb/mixer_scarlett2.c +6 -1
index fa2bfa102ab5..ddb8f8d62584 100644

Lines of this file are not shown. View the raw message.

sound/xen/xen_snd_front.c +1 -2
index 4041748c12e5..b66e037710d0 100644

Lines of this file are not shown. View the raw message.

tools/testing/selftests/net/amt.sh +5 -2
index 7e7ed6c558da..ea40b469a8c1 100755

Lines of this file are not shown. View the raw message.

tools/testing/selftests/net/toeplitz.c +2 -2
index 9ba03164d73a..5099157f01b9 100644

Lines of this file are not shown. View the raw message.

tools/testing/selftests/ptp/testptp.c +179 -15

194 lines not on this page · raw message

tools/testing/vsock/util.c +12 -0
index 2acbb7703c6a..259d33ae6293 100644

Lines of this file are not shown. View the raw message.

The rest of this diff is not shown. View the raw message.

Part of the diff is not shown here. View the raw message.