Skip to contentSkip to conversation

Linux 5.18.6

DISCUSSION Greg Kroah-Hartman 1 participant 2 messages Jun 22, 2022 Stable branch

lore
Share & tools
lore

Greg Kroah-Hartman

author maintainer
#0 lore raw

I'm announcing the release of the 5.18.6 kernel.

All users of the 5.18 kernel series must upgrade.

The updated 5.18.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-5.18.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/ABI/testing/sysfs-driver-bd9571mwv-regulator          |    2 
 Documentation/devicetree/bindings/cpufreq/brcm,stb-avs-cpu-freq.txt |    2 
 Documentation/filesystems/netfs_library.rst                         |   37 +-
 Makefile                                                            |    6 
 arch/arm64/boot/dts/freescale/imx8mm-beacon-baseboard.dtsi          |    3 
 arch/arm64/boot/dts/freescale/imx8mn-beacon-baseboard.dtsi          |    3 
 arch/arm64/kernel/ftrace.c                                          |  137 +++----
 arch/arm64/kvm/fpsimd.c                                             |    1 
 arch/arm64/kvm/vgic/vgic-mmio-v2.c                                  |    4 
 arch/arm64/kvm/vgic/vgic-mmio.c                                     |   19 -
 arch/arm64/kvm/vgic/vgic-mmio.h                                     |    3 
 arch/arm64/mm/cache.S                                               |    2 
 arch/powerpc/kernel/process.c                                       |    4 
 arch/powerpc/mm/nohash/kaslr_booke.c                                |    8 
 arch/riscv/boot/dts/microchip/microchip-mpfs.dtsi                   |    9 
 arch/s390/Kconfig                                                   |    1 
 arch/s390/Makefile                                                  |   10 
 arch/x86/kernel/Makefile                                            |    4 
 arch/x86/kernel/ftrace_64.S                                         |   11 
 block/blk-mq.c                                                      |    2 
 certs/blacklist_hashes.c                                            |    2 
 crypto/Kconfig                                                      |    1 
 crypto/Makefile                                                     |    2 
 crypto/memneq.c                                                     |  176 ----------
 drivers/ata/libata-core.c                                           |    4 
 drivers/base/init.c                                                 |    2 
 drivers/bus/fsl-mc/fsl-mc-bus.c                                     |    6 
 drivers/char/Kconfig                                                |   50 +-
 drivers/clk/imx/clk-imx8mp.c                                        |    2 
 drivers/clocksource/hyperv_timer.c                                  |    1 
 drivers/comedi/drivers/vmk80xx.c                                    |    2 
 drivers/gpio/gpio-dwapb.c                                           |    7 
 drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c                    |   13 
 drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c                             |    9 
 drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c                             |    2 
 drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c                             |   27 +
 drivers/gpu/drm/amd/amdkfd/kfd_svm.c                                |    3 
 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c                   |    8 
 drivers/gpu/drm/amd/display/dc/dcn31/dcn31_dio_link_encoder.c       |    4 
 drivers/gpu/drm/amd/display/dc/dcn31/dcn31_resource.c               |    6 
 drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c                            |    2 
 drivers/gpu/drm/i915/i915_sysfs.c                                   |   15 
 drivers/hv/channel_mgmt.c                                           |    1 
 drivers/i2c/busses/i2c-designware-common.c                          |    3 
 drivers/i2c/busses/i2c-designware-platdrv.c                         |   13 
 drivers/i2c/busses/i2c-mt65xx.c                                     |    9 
 drivers/i2c/busses/i2c-npcm7xx.c                                    |    3 
 drivers/input/misc/soc_button_array.c                               |    4 
 drivers/irqchip/irq-apple-aic.c                                     |    2 
 drivers/irqchip/irq-gic-realview.c                                  |    1 
 drivers/irqchip/irq-gic-v3.c                                        |    7 
 drivers/irqchip/irq-realtek-rtl.c                                   |    2 
 drivers/isdn/mISDN/socket.c                                         |    2 
 drivers/md/dm-core.h                                                |   11 
 drivers/md/dm-log.c                                                 |    3 
 drivers/md/dm-rq.c                                                  |    2 
 drivers/md/dm-table.c                                               |   11 
 drivers/md/dm.c                                                     |   87 +---
 drivers/md/dm.h                                                     |    2 
 drivers/md/raid5-ppl.c                                              |    4 
 drivers/misc/atmel-ssc.c                                            |    4 
 drivers/misc/mei/hbm.c                                              |    3 
 drivers/misc/mei/hw-me-regs.h                                       |    2 
 drivers/misc/mei/pci-me.c                                           |    2 
 drivers/net/ethernet/broadcom/bgmac-bcma.c                          |    1 
 drivers/net/ethernet/hisilicon/hns3/hnae3.h                         |    1 
 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c             |   18 -
 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_tm.c               |  101 +++--
 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_tm.h               |    1 
 drivers/net/ethernet/intel/i40e/i40e_ethtool.c                      |   25 -
 drivers/net/ethernet/intel/i40e/i40e_main.c                         |    5 
 drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c                  |    2 
 drivers/net/ethernet/intel/iavf/iavf_main.c                         |    2 
 drivers/net/ethernet/intel/ice/ice_main.c                           |   49 +-
 drivers/net/ethernet/intel/ice/ice_ptp.c                            |    2 
 drivers/net/ethernet/intel/ice/ice_ptp.h                            |   31 +
 drivers/net/ethernet/intel/ice/ice_vf_lib.c                         |    5 
 drivers/net/ethernet/intel/ice/ice_virtchnl.c                       |   53 +--
 drivers/net/ethernet/mediatek/mtk_eth_soc.c                         |   21 +
 drivers/net/ethernet/mellanox/mlx5/core/lag/lag.c                   |    2 
 drivers/net/ethernet/mellanox/mlxsw/spectrum_cnt.h                  |    2 
 drivers/net/ppp/pppoe.c                                             |    3 
 drivers/nfc/nfcmrvl/usb.c                                           |   16 
 drivers/nvme/host/core.c                                            |    4 
 drivers/platform/mips/Kconfig                                       |    2 
 drivers/platform/x86/gigabyte-wmi.c                                 |    2 
 drivers/platform/x86/intel/hid.c                                    |    6 
 drivers/platform/x86/intel/pmc/core.c                               |    1 
 drivers/platform/x86/intel/pmt/crashlog.c                           |    2 
 drivers/scsi/ipr.c                                                  |    4 
 drivers/scsi/lpfc/lpfc_els.c                                        |   18 -
 drivers/scsi/lpfc/lpfc_hw4.h                                        |    3 
 drivers/scsi/lpfc/lpfc_nportdisc.c                                  |    3 
 drivers/scsi/lpfc/lpfc_nvme.c                                       |   11 
 drivers/scsi/mpt3sas/mpt3sas_base.c                                 |   23 -
 drivers/scsi/pmcraid.c                                              |    2 
 drivers/scsi/vmw_pvscsi.h                                           |    4 
 drivers/staging/r8188eu/core/rtw_xmit.c                             |   20 -
 drivers/staging/r8188eu/os_dep/ioctl_linux.c                        |    2 
 drivers/tty/goldfish.c                                              |    2 
 drivers/tty/n_gsm.c                                                 |    2 
 drivers/tty/serial/8250/8250_port.c                                 |    2 
 drivers/usb/cdns3/cdnsp-ring.c                                      |   19 -
 drivers/usb/dwc2/hcd.c                                              |    2 
 drivers/usb/dwc3/dwc3-pci.c                                         |    1 
 drivers/usb/dwc3/gadget.c                                           |   26 -
 drivers/usb/gadget/function/f_fs.c                                  |   40 +-
 drivers/usb/gadget/function/u_ether.c                               |   12 
 drivers/usb/gadget/udc/lpc32xx_udc.c                                |    1 
 drivers/usb/serial/io_ti.c                                          |    2 
 drivers/usb/serial/io_usbvend.h                                     |    1 
 drivers/usb/serial/option.c                                         |    6 
 drivers/virtio/virtio_mmio.c                                        |    1 
 drivers/virtio/virtio_pci_common.c                                  |    3 
 fs/9p/cache.c                                                       |    4 
 fs/9p/v9fs.c                                                        |    2 
 fs/9p/v9fs.h                                                        |   10 
 fs/9p/vfs_addr.c                                                    |    2 
 fs/9p/vfs_inode.c                                                   |    4 
 fs/afs/callback.c                                                   |    2 
 fs/afs/dir.c                                                        |   32 -
 fs/afs/dir_edit.c                                                   |   10 
 fs/afs/dir_silly.c                                                  |    4 
 fs/afs/dynroot.c                                                    |    2 
 fs/afs/file.c                                                       |    4 
 fs/afs/fs_operation.c                                               |    6 
 fs/afs/inode.c                                                      |   38 +-
 fs/afs/internal.h                                                   |   23 -
 fs/afs/super.c                                                      |    6 
 fs/afs/write.c                                                      |   21 -
 fs/attr.c                                                           |   26 +
 fs/ceph/addr.c                                                      |    4 
 fs/ceph/cache.c                                                     |    4 
 fs/ceph/cache.h                                                     |    2 
 fs/ceph/caps.c                                                      |  104 ++---
 fs/ceph/file.c                                                      |    2 
 fs/ceph/inode.c                                                     |   10 
 fs/ceph/mds_client.c                                                |    4 
 fs/ceph/snap.c                                                      |    8 
 fs/ceph/super.c                                                     |    2 
 fs/ceph/super.h                                                     |   10 
 fs/ceph/xattr.c                                                     |   14 
 fs/cifs/cifsfs.c                                                    |    8 
 fs/cifs/cifsglob.h                                                  |   12 
 fs/cifs/file.c                                                      |    8 
 fs/cifs/fscache.c                                                   |    8 
 fs/cifs/fscache.h                                                   |    8 
 fs/cifs/inode.c                                                     |    4 
 fs/cifs/misc.c                                                      |    4 
 fs/cifs/smb2ops.c                                                   |    8 
 fs/ext4/mballoc.c                                                   |    9 
 fs/ext4/namei.c                                                     |    3 
 fs/ext4/resize.c                                                    |   10 
 fs/ext4/super.c                                                     |   16 
 fs/io_uring.c                                                       |   97 ++++-
 fs/netfs/buffered_read.c                                            |    6 
 fs/netfs/internal.h                                                 |    2 
 fs/netfs/objects.c                                                  |    2 
 fs/nfs/callback_proc.c                                              |    1 
 fs/nfs/pnfs.c                                                       |   21 -
 fs/nfs/pnfs.h                                                       |    1 
 fs/quota/dquot.c                                                    |   10 
 include/linux/backing-dev.h                                         |    2 
 include/linux/netfs.h                                               |   41 --
 include/linux/objtool.h                                             |    6 
 include/linux/skbuff.h                                              |    3 
 include/net/ipv6.h                                                  |    4 
 init/Kconfig                                                        |    9 
 kernel/auditsc.c                                                    |    2 
 kernel/cfi.c                                                        |   22 -
 kernel/dma/debug.c                                                  |    2 
 kernel/sched/core.c                                                 |   36 +-
 kernel/sched/sched.h                                                |    5 
 kernel/trace/bpf_trace.c                                            |    4 
 lib/Kconfig                                                         |    3 
 lib/Makefile                                                        |    1 
 lib/crypto/Kconfig                                                  |    1 
 lib/memneq.c                                                        |  176 ++++++++++
 mm/backing-dev.c                                                    |   11 
 net/appletalk/ddp.c                                                 |    3 
 net/atm/common.c                                                    |    2 
 net/ax25/af_ax25.c                                                  |   34 +
 net/bluetooth/af_bluetooth.c                                        |    3 
 net/bluetooth/hci_sock.c                                            |    3 
 net/caif/caif_socket.c                                              |    2 
 net/can/bcm.c                                                       |    5 
 net/can/isotp.c                                                     |    4 
 net/can/j1939/socket.c                                              |    2 
 net/can/raw.c                                                       |    6 
 net/core/datagram.c                                                 |    5 
 net/ieee802154/socket.c                                             |    6 
 net/ipv4/ping.c                                                     |    3 
 net/ipv4/raw.c                                                      |    3 
 net/ipv6/ip6_output.c                                               |    6 
 net/ipv6/raw.c                                                      |    3 
 net/iucv/af_iucv.c                                                  |    3 
 net/key/af_key.c                                                    |    2 
 net/l2tp/l2tp_ip.c                                                  |    3 
 net/l2tp/l2tp_ip6.c                                                 |    8 
 net/l2tp/l2tp_ppp.c                                                 |    3 
 net/mctp/af_mctp.c                                                  |    2 
 net/mctp/test/route-test.c                                          |    8 
 net/netlink/af_netlink.c                                            |    3 
 net/netrom/af_netrom.c                                              |    3 
 net/nfc/llcp_sock.c                                                 |    3 
 net/nfc/rawsock.c                                                   |    3 
 net/packet/af_packet.c                                              |    2 
 net/phonet/datagram.c                                               |    3 
 net/phonet/pep.c                                                    |    6 
 net/qrtr/af_qrtr.c                                                  |    3 
 net/rose/af_rose.c                                                  |    3 
 net/sunrpc/clnt.c                                                   |    1 
 net/unix/af_unix.c                                                  |    5 
 net/vmw_vsock/vmci_transport.c                                      |    5 
 net/x25/af_x25.c                                                    |    3 
 scripts/faddr2line                                                  |   45 +-
 security/selinux/hooks.c                                            |   11 
 sound/hda/hdac_device.c                                             |    1 
 sound/pci/hda/hda_intel.c                                           |    3 
 sound/pci/hda/patch_hdmi.c                                          |    1 
 sound/pci/hda/patch_realtek.c                                       |   14 
 sound/soc/codecs/cs35l36.c                                          |    3 
 sound/soc/codecs/cs42l51.c                                          |    2 
 sound/soc/codecs/cs42l52.c                                          |    8 
 sound/soc/codecs/cs42l56.c                                          |    4 
 sound/soc/codecs/cs53l30.c                                          |   16 
 sound/soc/codecs/es8328.c                                           |    5 
 sound/soc/codecs/nau8822.c                                          |    4 
 sound/soc/codecs/nau8822.h                                          |    3 
 sound/soc/codecs/wm8962.c                                           |    1 
 sound/soc/codecs/wm_adsp.c                                          |    2 
 sound/soc/intel/boards/sof_cirrus_common.c                          |   40 ++
 sound/soc/qcom/lpass-platform.c                                     |    2 
 tools/include/linux/objtool.h                                       |    6 
 234 files changed, 1539 insertions(+), 1077 deletions(-)

Adam Ford (3):
arm64: dts: imx8mm-beacon: Enable RTS-CTS on UART3
arm64: dts: imx8mn-beacon: Enable RTS-CTS on UART3
ASoC: wm8962: Fix suspend while playing music

Alan Previn (1):
drm/i915/reset: Fix error_state_read ptr + offset use

Aleksandr Loktionov (1):
i40e: Fix call trace in setup_tx_descriptors

Alexander Usyskin (2):
mei: hbm: drop capability response on early shutdown
mei: me: add raptor lake point S DID

August Wikerfors (1):
platform/x86: gigabyte-wmi: Add support for B450M DS3H-CF

Baokun Li (1):
ext4: fix bug_on ext4_mb_use_inode_pa

Bart Van Assche (1):
block: Fix handling of offline queues in blk_mq_alloc_request_hctx()

Benjamin Marzinski (1):
dm: fix race in dm_start_io_acct

Candice Li (1):
drm/amdgpu: Resolve RAS GFX error count issue after cold boot on Arcturus

Charles Keepax (6):
ASoC: cs42l52: Fix TLV scales for mixer controls
ASoC: cs35l36: Update digital volume TLV
ASoC: cs53l30: Correct number of volume levels on SX controls
ASoC: cs42l52: Correct TLV for Bypass Volume
ASoC: cs42l56: Correct typo in minimum level for SX volume controls
ASoC: cs42l51: Correct minimum value for SX volume control

Chen Lin (1):
net: ethernet: mtk_eth_soc: fix misuse of mem alloc interface netdev[napi]_alloc_frag

Chengguang Xu (2):
scsi: ipr: Fix missing/incorrect resource cleanup in error case
scsi: pmcraid: Fix missing resource cleanup in error case

Christian Brauner (1):
fs: account for group membership

Christian Göttsche (2):
audit: free module name
selinux: free contexts previously transferred in selinux_add_opt()

Christoph Hellwig (1):
dm: fix bio_set allocation

Christophe JAILLET (2):
net: bgmac: Fix an erroneous kfree() in bgmac_remove()
i2c: mediatek: Fix an error handling path in mtk_i2c_probe()

Conor Dooley (1):
riscv: dts: microchip: re-add pdma to mpfs device tree

Dan Carpenter (1):
bpf: Use safer kvmalloc_array() where possible

David Arcari (1):
platform/x86/intel: Fix pmt_crashlog array reference

David Howells (1):
netfs: Fix gcc-12 warning by embedding vfs inode in netfs_i_context

Ding Xiang (1):
ext4: make variable "count" signed

Duke Lee (1):
platform/x86/intel: hid: Add Surface Go to VGBS allow list

Duoming Zhou (1):
net: ax25: Fix deadlock caused by skb_recv_datagram in ax25_recvmsg

George D Sworo (1):
platform/x86/intel: pmc: Support Intel Raptorlake P

Greg Kroah-Hartman (1):

      Linux 5.18.6

Grzegorz Szczurek (2):
i40e: Fix adding ADQ filter to TC0
i40e: Fix calculating the number of queue pairs

Guangbin Huang (3):
net: hns3: set port base vlan tbl_sta to false before removing old vlan
net: hns3: restore tm priority/qset to default settings when tc disabled
net: hns3: fix tm port shapping of fibre port is incorrect after driver initialization

He Ying (1):
powerpc/kasan: Silence KASAN warnings in __get_wchan()

Helge Deller (1):
scsi: mpt3sas: Fix out-of-bounds compiler warning

Hui Wang (1):
ASoC: nau8822: Add operation for internal PLL off and on

Ian Abbott (1):

      comedi: vmk80xx: fix expression for tx buffer size

Ilpo Järvinen (1):
serial: 8250: Store to lsr_save_flags after lsr read

James Smart (3):
scsi: lpfc: Resolve NULL ptr dereference after an ELS LOGO is aborted
scsi: lpfc: Fix port stuck in bypassed state after LIP in PT2PT topology
scsi: lpfc: Allow reduced polling rate for nvme_admin_async_event cmd completion

Jan Kara (1):
init: Initialize noop_backing_dev_info early

Jani Nikula (1):
drm/i915/uc: remove accidental static from a local variable

Jason A. Donenfeld (2):
random: credit cpu and bootloader seeds by default
crypto: memneq - move into lib/

Jens Axboe (1):
io_uring: reinstate the inflight tracking

Jian Shen (1):
net: hns3: don't push link state to VF if unalive

Jiasheng Jiang (1):
i2c: npcm7xx: Add check for platform_driver_register

Jie Wang (1):
net: hns3: fix PF rss size initialization bug

Jing Leng (1):
usb: cdnsp: Fixed setting last_trb incorrectly

Josh Poimboeuf (2):
faddr2line: Fix overlapping text section failures, the sequel x86/ftrace: Remove OBJECT_FILES_NON_STANDARD usage

Lang Yu (1):
drm/amdkfd: add pinned BOs to kfd_bo_list

Larry Finger (1):
staging: r8188eu: Fix warning of array overflow in ioctl_linux.c

Linus Torvalds (4):
gcc-12: disable '-Wdangling-pointer' warning for now
mellanox: mlx5: avoid uninitialized variable warning with gcc-12
gcc-12: disable '-Warray-bounds' universally for now
netfs: gcc-12: temporarily disable '-Wattribute-warning' for now

Linyu Yuan (2):

      usb: gadget: f_fs: change ep->status safe in ffs_epfile_io()
      usb: gadget: f_fs: change ep->ep safe in ffs_epfile_io()

Logan Gunthorpe (1):
md/raid5-ppl: Fix argument order in bio_alloc_bioset()

Marc Zyngier (2):
KVM: arm64: Always start with clearing SVE flag on load
KVM: arm64: Don't read a HW interrupt pending state in user context

Marian Postevca (1):
usb: gadget: u_ether: fix regression in setting fixed MAC address

Marius Hoch (1):
Input: soc_button_array - also add Lenovo Yoga Tablet2 1051F to dmi_use_low_level_irq

Mark Brown (2):
ASoC: es8328: Fix event generation for deemphasis control
ASoC: wm_adsp: Fix event generation for wm_adsp_fw_put()

Mark Rutland (2):
arm64: ftrace: fix branch range checks
arm64: ftrace: consistently handle PLTs.

Masahiro Yamada (3):
clocksource: hyper-v: unexport __init-annotated hv_init_clocksource() certs/blacklist_hashes.c: fix const confusion in certs blacklist powerpc/book3e: get rid of #include <generated/compile.h>

Matthew Wilcox (Oracle) (1):
quota: Prevent memory allocation recursion while holding dq_lock

Mauro Carvalho Chehab (2):
dt-bindings: mfd: bd9571mwv: update rohm,bd9571mwv.yaml reference
dt-bindings: interrupt-controller: update brcm,l2-intc.yaml reference

Miaoqian Lin (9):
misc: atmel-ssc: Fix IRQ check in ssc_probe irqchip/gic/realview: Fix refcount leak in realview_gic_of_init irqchip/apple-aic: Fix refcount leak in build_fiq_affinity irqchip/apple-aic: Fix refcount leak in aic_of_ic_init irqchip/gic-v3: Fix error handling in gic_populate_ppi_partitions irqchip/gic-v3: Fix refcount leak in gic_populate_ppi_partitions irqchip/realtek-rtl: Fix refcount leak in map_interrupts
usb: dwc2: Fix memory leak in dwc2_hcd_init
usb: gadget: lpc32xx_udc: Fix refcount leak in lpc32xx_udc_probe

Michal Michalik (1):
ice: Fix PTP TX timestamp offset calculation

Michal Wilczynski (1):
iavf: Fix issue with MAC address of VF shown as zero

Michel Dänzer (1):
drm/amdgpu: Fix GTT size reporting in amdgpu_ioctl

Mikulas Patocka (1):
dm mirror log: round up region bitmap size to BITS_PER_LONG

Murilo Opsfelder Araujo (1):
virtio-pci: Remove wrong address verification in vp_del_vqs()

Oliver Hartkopp (1):
net: remove noblock parameter from skb_recv_datagram()

Pavel Begunkov (2):
io_uring: fix races with file table unregister
io_uring: fix races with buffer table unregister

Peng Fan (1):
clk: imx8mp: fix usb_root_clk parent

Peter Zijlstra (1):
sched: Fix balance_push() vs __sched_setscheduler()

Petr Machata (1):
mlxsw: spectrum_cnt: Reorder counter pools

Philip Yang (1):
drm/amdkfd: Use mmget_not_zero in MMU notifier

Phillip Potter (1):
staging: r8188eu: fix rtw_alloc_hwxmits error detection for now

Piotr Chmura (1):
platform/x86: gigabyte-wmi: Add Z690M AORUS ELITE AX DDR4 support

Przemyslaw Patynowski (2):
ice: Fix queue config fail handling
ice: Fix memory corruption in VF driver

Rob Clark (1):
dma-debug: make things less spammy under memory pressure

Robert Eckelmann (1):
USB: serial: io_ti: add Agilent E5805A support

Roman Li (1):
drm/amd/display: Cap OLED brightness per max frame-average luminance

Roman Storozhenko (1):
ice: Sync VLAN filtering features for DVM

Sami Tolvanen (1):
cfi: Fix __cfi_slowpath_diag RCU usage with cpuidle

Saurabh Sengar (1):
Drivers: hv: vmbus: Release cpu lock in error case

Scott Mayhew (1):
sunrpc: set cl_max_connect when cloning an rpc_clnt

Serge Semin (2):
gpio: dwapb: Don't print error on -EPROBE_DEFER
i2c: designware: Use standard optional ref clock implementation

Sergey Shtylyov (1):
ata: libata-core: fix NULL pointer deref in ata_host_alloc_pinfo()

Sherry Wang (1):
drm/amd/display: Read Golden Settings Table from VBIOS

Shin'ichiro Kawasaki (1):
bus: fsl-mc-bus: fix KASAN use-after-free in fsl_mc_bus_remove()

Slark Xiao (1):
USB: serial: option: add support for Cinterion MV31 with new baseline

Srinivasa Rao Mandadapu (1):
ASoC: qcom: lpass-platform: Update VMA access permissions in mmap callback

Stephan Gerhold (1):
usb: dwc3: pci: Restore line lost in merge conflict resolution

Stylon Wang (1):
Revert "drm/amd/display: Fix DCN3 B0 DP Alt Mapping"

Thomas Weißschuh (1):
nvme: add device name to warning in uuid_show()

Tony Lindgren (1):
tty: n_gsm: Debug output allocation must use GFP_ATOMIC

Trond Myklebust (2):
pNFS: Don't keep retrying if the server replied NFS4ERR_LAYOUTUNAVAILABLE
pNFS: Avoid a live lock condition in pnfs_update_layout()

Vincent Whitchurch (1):
tty: goldfish: Fix free_irq() on remove

Wang Yufen (2):
ipv6: Fix signed integer overflow in __ip6_append_data
ipv6: Fix signed integer overflow in l2tp_ip6_sendmsg

Wentao Wang (1):
scsi: vmw_pvscsi: Expand vcpuHint to 16 bits

Wesley Cheng (1):
usb: dwc3: gadget: Fix IN endpoint max packet size allocation

Will Deacon (1):
arm64: mm: Don't invalidate FROM_DEVICE buffers at start of DMA transfer

Xiaohui Zhang (1):
nfc: nfcmrvl: Fix memory leak in nfcmrvl_play_deferred

Ye Bin (1):
ext4: fix super block checksum incorrect after mount

Yong Zhi (1):
ALSA: hda: MTL: add HD Audio PCI ID and HDMI codec vendor ID

Yupeng Li (1):
MIPS: Loongson-3: fix compile mips cpu_hwmon as module build error.

Zhang Yi (1):
ext4: add reserved GDT blocks check

chengkaitao (1):
virtio-mmio: fix missing put_device() when vm_cmdline_parent registration failed

huangwenhui (1):
ALSA: hda/realtek - Add HW8326 support

xliu (1):
ASoC: Intel: cirrus-common: fix incorrect channel mapping

author maintainer
#1 lore raw
Documentation/ABI/testing/sysfs-driver-bd9571mwv-regulator +1 -1
index 42214b4ff14a..90596d8bb51c 100644
@@ -26,6 +26,6 @@ Description:	Read/write the current state of DDR Backup Mode, which controls
 		     DDR Backup Mode must be explicitly enabled by the user,
 		     to invoke step 1.
 
-		See also Documentation/devicetree/bindings/mfd/bd9571mwv.txt.
+		See also Documentation/devicetree/bindings/mfd/rohm,bd9571mwv.yaml.
 Users:		User space applications for embedded boards equipped with a
 		BD9571MWV PMIC.
Documentation/devicetree/bindings/cpufreq/brcm,stb-avs-cpu-freq.txt +1 -1
index 73470ecd1f12..ce91a9197697 100644
@@ -16,7 +16,7 @@ has been processed. See [2] for more information on the brcm,l2-intc node.
 firmware. On some SoCs, this firmware supports DFS and DVFS in addition to
 Adaptive Voltage Scaling.
 
-[2] Documentation/devicetree/bindings/interrupt-controller/brcm,l2-intc.txt
+[2] Documentation/devicetree/bindings/interrupt-controller/brcm,l2-intc.yaml
 
 
 Node brcm,avs-cpu-data-mem
Documentation/filesystems/netfs_library.rst +18 -19
index 69f00179fdfe..0483abcafcb0 100644
@@ -37,30 +37,31 @@ The network filesystem helper library needs a place to store a bit of state for
 its use on each netfs inode it is helping to manage.  To this end, a context
 structure is defined::
 
-	struct netfs_i_context {
+	struct netfs_inode {
+		struct inode inode;
 		const struct netfs_request_ops *ops;
-		struct fscache_cookie	*cache;
+		struct fscache_cookie *cache;
 	};
 
-A network filesystem that wants to use netfs lib must place one of these
-directly after the VFS ``struct inode`` it allocates, usually as part of its
-own struct.  This can be done in a way similar to the following::
+A network filesystem that wants to use netfs lib must place one of these in its
+inode wrapper struct instead of the VFS ``struct inode``.  This can be done in
+a way similar to the following::
 
 	struct my_inode {
-		struct {
-			/* These must be contiguous */
-			struct inode		vfs_inode;
-			struct netfs_i_context  netfs_ctx;
-		};
+		struct netfs_inode netfs; /* Netfslib context and vfs inode */
 		...
 	};
 
-This allows netfslib to find its state by simple offset from the inode pointer,
-thereby allowing the netfslib helper functions to be pointed to directly by the
-VFS/VM operation tables.
+This allows netfslib to find its state by using ``container_of()`` from the
+inode pointer, thereby allowing the netfslib helper functions to be pointed to
+directly by the VFS/VM operation tables.
 
 The structure contains the following fields:
 
+ * ``inode``
+
+   The VFS inode structure.
+
  * ``ops``
 
    The set of operations provided by the network filesystem to netfslib.
@@ -78,14 +79,12 @@ To help deal with the per-inode context, a number helper functions are
 provided.  Firstly, a function to perform basic initialisation on a context and
 set the operations table pointer::
 
-	void netfs_i_context_init(struct inode *inode,
-				  const struct netfs_request_ops *ops);
+	void netfs_inode_init(struct inode *inode,
+			      const struct netfs_request_ops *ops);
 
-then two functions to cast between the VFS inode structure and the netfs
-context::
+then a function to cast from the VFS inode structure to the netfs context::
 
-	struct netfs_i_context *netfs_i_context(struct inode *inode);
-	struct inode *netfs_inode(struct netfs_i_context *ctx);
+	struct netfs_inode *netfs_node(struct inode *inode);
 
 and finally, a function to get the cache cookie pointer from the context
 attached to an inode (or NULL if fscache is disabled)::
Makefile +5 -1
index 34bfb76d6333..27850d452d65 100644
@@ -1,7 +1,7 @@
 # SPDX-License-Identifier: GPL-2.0
 VERSION = 5
 PATCHLEVEL = 18
-SUBLEVEL = 5
+SUBLEVEL = 6
 EXTRAVERSION =
 NAME = Superb Owl
 
@@ -787,6 +787,7 @@ stackp-flags-$(CONFIG_STACKPROTECTOR_STRONG)      := -fstack-protector-strong
 KBUILD_CFLAGS += $(stackp-flags-y)
 
 KBUILD_CFLAGS-$(CONFIG_WERROR) += -Werror
+KBUILD_CFLAGS-$(CONFIG_CC_NO_ARRAY_BOUNDS) += -Wno-array-bounds
 KBUILD_CFLAGS += $(KBUILD_CFLAGS-y) $(CONFIG_CC_IMPLICIT_FALLTHROUGH)
 
 ifdef CONFIG_CC_IS_CLANG
@@ -804,6 +805,9 @@ endif
 KBUILD_CFLAGS += $(call cc-disable-warning, unused-but-set-variable)
 KBUILD_CFLAGS += $(call cc-disable-warning, unused-const-variable)
 
+# These result in bogus false positives
+KBUILD_CFLAGS += $(call cc-disable-warning, dangling-pointer)
+
 ifdef CONFIG_FRAME_POINTER
 KBUILD_CFLAGS	+= -fno-omit-frame-pointer -fno-optimize-sibling-calls
 else
arch/arm64/boot/dts/freescale/imx8mm-beacon-baseboard.dtsi +3 -0
index ec3f2c177035..f338a886d811 100644
@@ -278,6 +278,7 @@ &uart3 {
 	pinctrl-0 = <&pinctrl_uart3>;
 	assigned-clocks = <&clk IMX8MM_CLK_UART3>;
 	assigned-clock-parents = <&clk IMX8MM_SYS_PLL1_80M>;
+	uart-has-rtscts;
 	status = "okay";
 };
 
@@ -386,6 +387,8 @@ pinctrl_uart3: uart3grp {
 		fsl,pins = <
 			MX8MM_IOMUXC_ECSPI1_SCLK_UART3_DCE_RX	0x40
 			MX8MM_IOMUXC_ECSPI1_MOSI_UART3_DCE_TX	0x40
+			MX8MM_IOMUXC_ECSPI1_MISO_UART3_DCE_CTS_B	0x40
+			MX8MM_IOMUXC_ECSPI1_SS0_UART3_DCE_RTS_B	0x40
 		>;
 	};
 
arch/arm64/boot/dts/freescale/imx8mn-beacon-baseboard.dtsi +3 -0
index 0f40b43ac091..02f37dcda7ed 100644
@@ -175,6 +175,7 @@ &uart3 {
 	pinctrl-0 = <&pinctrl_uart3>;
 	assigned-clocks = <&clk IMX8MN_CLK_UART3>;
 	assigned-clock-parents = <&clk IMX8MN_SYS_PLL1_80M>;
+	uart-has-rtscts;
 	status = "okay";
 };
 
@@ -258,6 +259,8 @@ pinctrl_uart3: uart3grp {
 		fsl,pins = <
 			MX8MN_IOMUXC_ECSPI1_SCLK_UART3_DCE_RX	0x40
 			MX8MN_IOMUXC_ECSPI1_MOSI_UART3_DCE_TX	0x40
+			MX8MN_IOMUXC_ECSPI1_MISO_UART3_DCE_CTS_B	0x40
+			MX8MN_IOMUXC_ECSPI1_SS0_UART3_DCE_RTS_B	0x40
 		>;
 	};
 
arch/arm64/kernel/ftrace.c +66 -71

173 lines not on this page · raw message

arch/arm64/kvm/fpsimd.c +1 -0
index 397fdac75cb1..7fe29bf6d193 100644
@@ -80,6 +80,7 @@ void kvm_arch_vcpu_load_fp(struct kvm_vcpu *vcpu)
 	vcpu->arch.flags &= ~KVM_ARM64_FP_ENABLED;
 	vcpu->arch.flags |= KVM_ARM64_FP_HOST;
 
+	vcpu->arch.flags &= ~KVM_ARM64_HOST_SVE_ENABLED;
 	if (read_sysreg(cpacr_el1) & CPACR_EL1_ZEN_EL0EN)
 		vcpu->arch.flags |= KVM_ARM64_HOST_SVE_ENABLED;
 }
arch/arm64/kvm/vgic/vgic-mmio-v2.c +2 -2
index 12e4c223e6b8..54167fcfb605 100644
@@ -417,11 +417,11 @@ static const struct vgic_register_region vgic_v2_dist_registers[] = {
 		VGIC_ACCESS_32bit),
 	REGISTER_DESC_WITH_BITS_PER_IRQ(GIC_DIST_PENDING_SET,
 		vgic_mmio_read_pending, vgic_mmio_write_spending,
-		NULL, vgic_uaccess_write_spending, 1,
+		vgic_uaccess_read_pending, vgic_uaccess_write_spending, 1,
 		VGIC_ACCESS_32bit),
 	REGISTER_DESC_WITH_BITS_PER_IRQ(GIC_DIST_PENDING_CLEAR,
 		vgic_mmio_read_pending, vgic_mmio_write_cpending,
-		NULL, vgic_uaccess_write_cpending, 1,
+		vgic_uaccess_read_pending, vgic_uaccess_write_cpending, 1,
 		VGIC_ACCESS_32bit),
 	REGISTER_DESC_WITH_BITS_PER_IRQ(GIC_DIST_ACTIVE_SET,
 		vgic_mmio_read_active, vgic_mmio_write_sactive,
arch/arm64/kvm/vgic/vgic-mmio.c +16 -3
index 49837d3a3ef5..dc8c52487e47 100644
@@ -226,8 +226,9 @@ int vgic_uaccess_write_cenable(struct kvm_vcpu *vcpu,
 	return 0;
 }
 
-unsigned long vgic_mmio_read_pending(struct kvm_vcpu *vcpu,
-				     gpa_t addr, unsigned int len)
+static unsigned long __read_pending(struct kvm_vcpu *vcpu,
+				    gpa_t addr, unsigned int len,
+				    bool is_user)
 {
 	u32 intid = VGIC_ADDR_TO_INTID(addr, 1);
 	u32 value = 0;
@@ -248,7 +249,7 @@ unsigned long vgic_mmio_read_pending(struct kvm_vcpu *vcpu,
 						    IRQCHIP_STATE_PENDING,
 						    &val);
 			WARN_RATELIMIT(err, "IRQ %d", irq->host_irq);
-		} else if (vgic_irq_is_mapped_level(irq)) {
+		} else if (!is_user && vgic_irq_is_mapped_level(irq)) {
 			val = vgic_get_phys_line_level(irq);
 		} else {
 			val = irq_is_pending(irq);
@@ -263,6 +264,18 @@ unsigned long vgic_mmio_read_pending(struct kvm_vcpu *vcpu,
 	return value;
 }
 
+unsigned long vgic_mmio_read_pending(struct kvm_vcpu *vcpu,
+				     gpa_t addr, unsigned int len)
+{
+	return __read_pending(vcpu, addr, len, false);
+}
+
+unsigned long vgic_uaccess_read_pending(struct kvm_vcpu *vcpu,
+					gpa_t addr, unsigned int len)
+{
+	return __read_pending(vcpu, addr, len, true);
+}
+
 static bool is_vgic_v2_sgi(struct kvm_vcpu *vcpu, struct vgic_irq *irq)
 {
 	return (vgic_irq_is_sgi(irq->intid) &&
arch/arm64/kvm/vgic/vgic-mmio.h +3 -0
index 3fa696f198a3..6082d4b66d39 100644
@@ -149,6 +149,9 @@ int vgic_uaccess_write_cenable(struct kvm_vcpu *vcpu,
 unsigned long vgic_mmio_read_pending(struct kvm_vcpu *vcpu,
 				     gpa_t addr, unsigned int len);
 
+unsigned long vgic_uaccess_read_pending(struct kvm_vcpu *vcpu,
+					gpa_t addr, unsigned int len);
+
 void vgic_mmio_write_spending(struct kvm_vcpu *vcpu,
 			      gpa_t addr, unsigned int len,
 			      unsigned long val);
arch/arm64/mm/cache.S +0 -2
index 0ea6cc25dc66..21c907987080 100644
@@ -218,8 +218,6 @@ SYM_FUNC_ALIAS(__dma_flush_area, __pi___dma_flush_area)
  */
 SYM_FUNC_START(__pi___dma_map_area)
 	add	x1, x0, x1
-	cmp	w2, #DMA_FROM_DEVICE
-	b.eq	__pi_dcache_inval_poc
 	b	__pi_dcache_clean_poc
 SYM_FUNC_END(__pi___dma_map_area)
 SYM_FUNC_ALIAS(__dma_map_area, __pi___dma_map_area)
arch/powerpc/kernel/process.c +2 -2
index 984813a4d5dc..a75d20f23dac 100644
@@ -2160,12 +2160,12 @@ static unsigned long ___get_wchan(struct task_struct *p)
 		return 0;
 
 	do {
-		sp = *(unsigned long *)sp;
+		sp = READ_ONCE_NOCHECK(*(unsigned long *)sp);
 		if (!validate_sp(sp, p, STACK_FRAME_OVERHEAD) ||
 		    task_is_running(p))
 			return 0;
 		if (count > 0) {
-			ip = ((unsigned long *)sp)[STACK_FRAME_LR_SAVE];
+			ip = READ_ONCE_NOCHECK(((unsigned long *)sp)[STACK_FRAME_LR_SAVE]);
 			if (!in_sched_functions(ip))
 				return ip;
 		}
arch/powerpc/mm/nohash/kaslr_booke.c +2 -6
index 96c38f971603..5f81c076621f 100644
@@ -18,7 +18,6 @@
 #include <asm/prom.h>
 #include <asm/kdump.h>
 #include <mm/mmu_decl.h>
-#include <generated/compile.h>
 #include <generated/utsrelease.h>
 
 struct regions {
@@ -36,10 +35,6 @@ struct regions {
 	int reserved_mem_size_cells;
 };
 
-/* Simplified build-specific string for starting entropy. */
-static const char build_str[] = UTS_RELEASE " (" LINUX_COMPILE_BY "@"
-		LINUX_COMPILE_HOST ") (" LINUX_COMPILER ") " UTS_VERSION;
-
 struct regions __initdata regions;
 
 static __init void kaslr_get_cmdline(void *fdt)
@@ -70,7 +65,8 @@ static unsigned long __init get_boot_seed(void *fdt)
 {
 	unsigned long hash = 0;
 
-	hash = rotate_xor(hash, build_str, sizeof(build_str));
+	/* build-specific string for starting entropy. */
+	hash = rotate_xor(hash, linux_banner, strlen(linux_banner));
 	hash = rotate_xor(hash, fdt, fdt_totalsize(fdt));
 
 	return hash;
arch/riscv/boot/dts/microchip/microchip-mpfs.dtsi +9 -0
index cf2f55e1dcb6..f44fce1fe080 100644
@@ -188,6 +188,15 @@ plic: interrupt-controller@c000000 {
 			riscv,ndev = <186>;
 		};
 
+		pdma: dma-controller@3000000 {
+			compatible = "sifive,fu540-c000-pdma", "sifive,pdma0";
+			reg = <0x0 0x3000000 0x0 0x8000>;
+			interrupt-parent = <&plic>;
+			interrupts = <5 6>, <7 8>, <9 10>, <11 12>;
+			dma-channels = <4>;
+			#dma-cells = <1>;
+		};
+
 		clkcfg: clkcfg@20002000 {
 			compatible = "microchip,mpfs-clkcfg";
 			reg = <0x0 0x20002000 0x0 0x1000>, <0x0 0x3E001000 0x0 0x1000>;
arch/s390/Kconfig +1 -0
index e084c72104f8..359b0cc0dc35 100644
@@ -125,6 +125,7 @@ config S390
 	select CLONE_BACKWARDS2
 	select DMA_OPS if PCI
 	select DYNAMIC_FTRACE if FUNCTION_TRACER
+	select GCC12_NO_ARRAY_BOUNDS
 	select GENERIC_ALLOCATOR
 	select GENERIC_CPU_AUTOPROBE
 	select GENERIC_CPU_VULNERABILITIES
arch/s390/Makefile +1 -9
index df325eacf62d..eba70d585cb2 100644
@@ -30,15 +30,7 @@ KBUILD_CFLAGS_DECOMPRESSOR += -fno-stack-protector
 KBUILD_CFLAGS_DECOMPRESSOR += $(call cc-disable-warning, address-of-packed-member)
 KBUILD_CFLAGS_DECOMPRESSOR += $(if $(CONFIG_DEBUG_INFO),-g)
 KBUILD_CFLAGS_DECOMPRESSOR += $(if $(CONFIG_DEBUG_INFO_DWARF4), $(call cc-option, -gdwarf-4,))
-
-ifdef CONFIG_CC_IS_GCC
-	ifeq ($(call cc-ifversion, -ge, 1200, y), y)
-		ifeq ($(call cc-ifversion, -lt, 1300, y), y)
-			KBUILD_CFLAGS += $(call cc-disable-warning, array-bounds)
-			KBUILD_CFLAGS_DECOMPRESSOR += $(call cc-disable-warning, array-bounds)
-		endif
-	endif
-endif
+KBUILD_CFLAGS_DECOMPRESSOR += $(if $(CONFIG_CC_NO_ARRAY_BOUNDS),-Wno-array-bounds)
 
 UTS_MACHINE	:= s390x
 STACK_SIZE	:= $(if $(CONFIG_KASAN),65536,16384)
arch/x86/kernel/Makefile +0 -4
index c41ef42adbe8..25828e4c6237 100644
@@ -36,10 +36,6 @@ KCSAN_SANITIZE := n
 
 OBJECT_FILES_NON_STANDARD_test_nx.o			:= y
 
-ifdef CONFIG_FRAME_POINTER
-OBJECT_FILES_NON_STANDARD_ftrace_$(BITS).o		:= y
-endif
-
 # If instrumentation of this dir is enabled, boot hangs during first second.
 # Probably could be more selective here, but note that files related to irqs,
 # boot, dumpstack/stacktrace, etc are either non-interesting or can lead to
arch/x86/kernel/ftrace_64.S +8 -3
index 4ec13608d3c6..dfeb227de561 100644
@@ -175,6 +175,7 @@ SYM_INNER_LABEL(ftrace_caller_end, SYM_L_GLOBAL)
 
 	jmp ftrace_epilogue
 SYM_FUNC_END(ftrace_caller);
+STACK_FRAME_NON_STANDARD_FP(ftrace_caller)
 
 SYM_FUNC_START(ftrace_epilogue)
 /*
@@ -282,6 +283,7 @@ SYM_INNER_LABEL(ftrace_regs_caller_end, SYM_L_GLOBAL)
 	jmp	ftrace_epilogue
 
 SYM_FUNC_END(ftrace_regs_caller)
+STACK_FRAME_NON_STANDARD_FP(ftrace_regs_caller)
 
 
 #else /* ! CONFIG_DYNAMIC_FTRACE */
@@ -311,10 +313,14 @@ trace:
 	jmp ftrace_stub
 SYM_FUNC_END(__fentry__)
 EXPORT_SYMBOL(__fentry__)
+STACK_FRAME_NON_STANDARD_FP(__fentry__)
+
 #endif /* CONFIG_DYNAMIC_FTRACE */
 
 #ifdef CONFIG_FUNCTION_GRAPH_TRACER
-SYM_FUNC_START(return_to_handler)
+SYM_CODE_START(return_to_handler)
+	UNWIND_HINT_EMPTY
+	ANNOTATE_NOENDBR
 	subq  $16, %rsp
 
 	/* Save the return values */
@@ -339,7 +345,6 @@ SYM_FUNC_START(return_to_handler)
 	int3
 .Ldo_rop:
 	mov %rdi, (%rsp)
-	UNWIND_HINT_FUNC
 	RET
-SYM_FUNC_END(return_to_handler)
+SYM_CODE_END(return_to_handler)
 #endif
block/blk-mq.c +2 -0
index de7fc6957271..631fb87b4976 100644
@@ -579,6 +579,8 @@ struct request *blk_mq_alloc_request_hctx(struct request_queue *q,
 	if (!blk_mq_hw_queue_mapped(data.hctx))
 		goto out_queue_exit;
 	cpu = cpumask_first_and(data.hctx->cpumask, cpu_online_mask);
+	if (cpu >= nr_cpu_ids)
+		goto out_queue_exit;
 	data.ctx = __blk_mq_get_ctx(q, cpu);
 
 	if (!q->elevator)
certs/blacklist_hashes.c +1 -1
index 344892337be0..d5961aa3d338 100644
@@ -1,7 +1,7 @@
 // SPDX-License-Identifier: GPL-2.0
 #include "blacklist.h"
 
-const char __initdata *const blacklist_hashes[] = {
+const char __initconst *const blacklist_hashes[] = {
 #include CONFIG_SYSTEM_BLACKLIST_HASH_LIST
 	, NULL
 };
crypto/Kconfig +1 -0
index 41068811fd0e..b4e00a7a046b 100644
@@ -15,6 +15,7 @@ source "crypto/async_tx/Kconfig"
 #
 menuconfig CRYPTO
 	tristate "Cryptographic API"
+	select LIB_MEMNEQ
 	help
 	  This option provides the core Cryptographic API.
 
crypto/Makefile +1 -1
index f754c4d17d6b..a40e6d5fb2c8 100644
@@ -4,7 +4,7 @@
 #
 
 obj-$(CONFIG_CRYPTO) += crypto.o
-crypto-y := api.o cipher.o compress.o memneq.o
+crypto-y := api.o cipher.o compress.o
 
 obj-$(CONFIG_CRYPTO_ENGINE) += crypto_engine.o
 obj-$(CONFIG_CRYPTO_FIPS) += fips.o
crypto/memneq.c deleted +0 -176

176 lines not on this page · raw message

drivers/ata/libata-core.c +2 -2
index 3d57fa84e2be..ea9671821258 100644
@@ -5506,7 +5506,7 @@ struct ata_host *ata_host_alloc_pinfo(struct device *dev,
 				      const struct ata_port_info * const * ppi,
 				      int n_ports)
 {
-	const struct ata_port_info *pi;
+	const struct ata_port_info *pi = &ata_dummy_port_info;
 	struct ata_host *host;
 	int i, j;
 
@@ -5514,7 +5514,7 @@ struct ata_host *ata_host_alloc_pinfo(struct device *dev,
 	if (!host)
 		return NULL;
 
-	for (i = 0, j = 0, pi = NULL; i < host->n_ports; i++) {
+	for (i = 0, j = 0; i < host->n_ports; i++) {
 		struct ata_port *ap = host->ports[i];
 
 		if (ppi[j])
drivers/base/init.c +2 -0
index d8d0fe687111..397eb9880cec 100644
@@ -8,6 +8,7 @@
 #include <linux/init.h>
 #include <linux/memory.h>
 #include <linux/of.h>
+#include <linux/backing-dev.h>
 
 #include "base.h"
 
@@ -20,6 +21,7 @@
 void __init driver_init(void)
 {
 	/* These are the core pieces */
+	bdi_init(&noop_backing_dev_info);
 	devtmpfs_init();
 	devices_init();
 	buses_init();
drivers/bus/fsl-mc/fsl-mc-bus.c +3 -3
index 8fd4a356a86e..74593a1722fe 100644
@@ -1236,14 +1236,14 @@ static int fsl_mc_bus_probe(struct platform_device *pdev)
 static int fsl_mc_bus_remove(struct platform_device *pdev)
 {
 	struct fsl_mc *mc = platform_get_drvdata(pdev);
+	struct fsl_mc_io *mc_io;
 
 	if (!fsl_mc_is_root_dprc(&mc->root_mc_bus_dev->dev))
 		return -EINVAL;
 
+	mc_io = mc->root_mc_bus_dev->mc_io;
 	fsl_mc_device_remove(mc->root_mc_bus_dev);
-
-	fsl_destroy_mc_io(mc->root_mc_bus_dev->mc_io);
-	mc->root_mc_bus_dev->mc_io = NULL;
+	fsl_destroy_mc_io(mc_io);
 
 	bus_unregister_notifier(&fsl_mc_bus_type, &fsl_mc_nb);
 
drivers/char/Kconfig +31 -19

59 lines not on this page · raw message

drivers/clk/imx/clk-imx8mp.c +1 -1
index 18f5b7c3ca9d..74dabcdf81ab 100644
@@ -659,7 +659,7 @@ static int imx8mp_clocks_probe(struct platform_device *pdev)
 	hws[IMX8MP_CLK_UART2_ROOT] = imx_clk_hw_gate4("uart2_root_clk", "uart2", ccm_base + 0x44a0, 0);
 	hws[IMX8MP_CLK_UART3_ROOT] = imx_clk_hw_gate4("uart3_root_clk", "uart3", ccm_base + 0x44b0, 0);
 	hws[IMX8MP_CLK_UART4_ROOT] = imx_clk_hw_gate4("uart4_root_clk", "uart4", ccm_base + 0x44c0, 0);
-	hws[IMX8MP_CLK_USB_ROOT] = imx_clk_hw_gate4("usb_root_clk", "osc_32k", ccm_base + 0x44d0, 0);
+	hws[IMX8MP_CLK_USB_ROOT] = imx_clk_hw_gate4("usb_root_clk", "hsio_axi", ccm_base + 0x44d0, 0);
 	hws[IMX8MP_CLK_USB_PHY_ROOT] = imx_clk_hw_gate4("usb_phy_root_clk", "usb_phy_ref", ccm_base + 0x44f0, 0);
 	hws[IMX8MP_CLK_USDHC1_ROOT] = imx_clk_hw_gate4("usdhc1_root_clk", "usdhc1", ccm_base + 0x4510, 0);
 	hws[IMX8MP_CLK_USDHC2_ROOT] = imx_clk_hw_gate4("usdhc2_root_clk", "usdhc2", ccm_base + 0x4520, 0);
drivers/clocksource/hyperv_timer.c +0 -1
index ff188ab68496..bb47610bbd1c 100644
@@ -565,4 +565,3 @@ void __init hv_init_clocksource(void)
 	hv_sched_clock_offset = hv_read_reference_counter();
 	hv_setup_sched_clock(read_hv_sched_clock_msr);
 }
-EXPORT_SYMBOL_GPL(hv_init_clocksource);
drivers/comedi/drivers/vmk80xx.c +1 -1
index 46023adc5395..4536ed43f65b 100644
@@ -684,7 +684,7 @@ static int vmk80xx_alloc_usb_buffers(struct comedi_device *dev)
 	if (!devpriv->usb_rx_buf)
 		return -ENOMEM;
 
-	size = max(usb_endpoint_maxp(devpriv->ep_rx), MIN_BUF_SIZE);
+	size = max(usb_endpoint_maxp(devpriv->ep_tx), MIN_BUF_SIZE);
 	devpriv->usb_tx_buf = kzalloc(size, GFP_KERNEL);
 	if (!devpriv->usb_tx_buf)
 		return -ENOMEM;
drivers/gpio/gpio-dwapb.c +3 -4
index b0f3aca61974..9467d695a33e 100644
@@ -652,10 +652,9 @@ static int dwapb_get_clks(struct dwapb_gpio *gpio)
 	gpio->clks[1].id = "db";
 	err = devm_clk_bulk_get_optional(gpio->dev, DWAPB_NR_CLOCKS,
 					 gpio->clks);
-	if (err) {
-		dev_err(gpio->dev, "Cannot get APB/Debounce clocks\n");
-		return err;
-	}
+	if (err)
+		return dev_err_probe(gpio->dev, err,
+				     "Cannot get APB/Debounce clocks\n");
 
 	err = clk_bulk_prepare_enable(DWAPB_NR_CLOCKS, gpio->clks);
 	if (err) {
drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c +6 -7
index cd89d2e46852..f4509656ea8c 100644
@@ -1955,9 +1955,6 @@ int amdgpu_amdkfd_gpuvm_map_gtt_bo_to_kernel(struct amdgpu_device *adev,
 		return -EINVAL;
 	}
 
-	/* delete kgd_mem from kfd_bo_list to avoid re-validating
-	 * this BO in BO's restoring after eviction.
-	 */
 	mutex_lock(&mem->process_info->lock);
 
 	ret = amdgpu_bo_reserve(bo, true);
@@ -1980,7 +1977,6 @@ int amdgpu_amdkfd_gpuvm_map_gtt_bo_to_kernel(struct amdgpu_device *adev,
 
 	amdgpu_amdkfd_remove_eviction_fence(
 		bo, mem->process_info->eviction_fence);
-	list_del_init(&mem->validate_list.head);
 
 	if (size)
 		*size = amdgpu_bo_size(bo);
@@ -2544,12 +2540,15 @@ int amdgpu_amdkfd_gpuvm_restore_process_bos(void *info, struct dma_fence **ef)
 	process_info->eviction_fence = new_fence;
 	*ef = dma_fence_get(&new_fence->base);
 
-	/* Attach new eviction fence to all BOs */
+	/* Attach new eviction fence to all BOs except pinned ones */
 	list_for_each_entry(mem, &process_info->kfd_bo_list,
-		validate_list.head)
+		validate_list.head) {
+		if (mem->bo->tbo.pin_count)
+			continue;
+
 		amdgpu_bo_fence(mem->bo,
 			&process_info->eviction_fence->base, true);
-
+	}
 	/* Attach eviction fence to PD / PT BOs */
 	list_for_each_entry(peer_vm, &process_info->vm_list_head,
 			    vm_list_node) {
drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c +6 -3
index 28a736c507bb..bd3b32e5ba9e 100644
@@ -625,17 +625,20 @@ int amdgpu_get_gfx_off_status(struct amdgpu_device *adev, uint32_t *value)
 int amdgpu_gfx_ras_late_init(struct amdgpu_device *adev, struct ras_common_if *ras_block)
 {
 	int r;
-	r = amdgpu_ras_block_late_init(adev, ras_block);
-	if (r)
-		return r;
 
 	if (amdgpu_ras_is_supported(adev, ras_block->block)) {
 		if (!amdgpu_persistent_edc_harvesting_supported(adev))
 			amdgpu_ras_reset_error_status(adev, AMDGPU_RAS_BLOCK__GFX);
 
+		r = amdgpu_ras_block_late_init(adev, ras_block);
+		if (r)
+			return r;
+
 		r = amdgpu_irq_get(adev, &adev->gfx.cp_ecc_error_irq, 0);
 		if (r)
 			goto late_fini;
+	} else {
+		amdgpu_ras_feature_enable_on_boot(adev, ras_block, 0);
 	}
 
 	return 0;
drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c +0 -2
index 6b626c293e72..49c55d82cba8 100644
@@ -634,7 +634,6 @@ int amdgpu_info_ioctl(struct drm_device *dev, void *data, struct drm_file *filp)
 			    atomic64_read(&adev->visible_pin_size),
 			    vram_gtt.vram_size);
 		vram_gtt.gtt_size = ttm_manager_type(&adev->mman.bdev, TTM_PL_TT)->size;
-		vram_gtt.gtt_size *= PAGE_SIZE;
 		vram_gtt.gtt_size -= atomic64_read(&adev->gart_pin_size);
 		return copy_to_user(out, &vram_gtt,
 				    min((size_t)size, sizeof(vram_gtt))) ? -EFAULT : 0;
@@ -667,7 +666,6 @@ int amdgpu_info_ioctl(struct drm_device *dev, void *data, struct drm_file *filp)
 			mem.cpu_accessible_vram.usable_heap_size * 3 / 4;
 
 		mem.gtt.total_heap_size = gtt_man->size;
-		mem.gtt.total_heap_size *= PAGE_SIZE;
 		mem.gtt.usable_heap_size = mem.gtt.total_heap_size -
 			atomic64_read(&adev->gart_pin_size);
 		mem.gtt.heap_usage = ttm_resource_manager_usage(gtt_man);
drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c +22 -5
index 424c22a841f4..3f96dadf2698 100644
@@ -195,6 +195,13 @@ static ssize_t amdgpu_ras_debugfs_read(struct file *f, char __user *buf,
 	if (amdgpu_ras_query_error_status(obj->adev, &info))
 		return -EINVAL;
 
+	/* Hardware counter will be reset automatically after the query on Vega20 and Arcturus */
+	if (obj->adev->ip_versions[MP0_HWIP][0] != IP_VERSION(11, 0, 2) &&
+	    obj->adev->ip_versions[MP0_HWIP][0] != IP_VERSION(11, 0, 4)) {
+		if (amdgpu_ras_reset_error_status(obj->adev, info.head.block))
+			dev_warn(obj->adev->dev, "Failed to reset error counter and error status");
+	}
+
 	s = snprintf(val, sizeof(val), "%s: %lu\n%s: %lu\n",
 			"ue", info.ue_count,
 			"ce", info.ce_count);
@@ -548,9 +555,10 @@ static ssize_t amdgpu_ras_sysfs_read(struct device *dev,
 	if (amdgpu_ras_query_error_status(obj->adev, &info))
 		return -EINVAL;
 
-	if (obj->adev->asic_type == CHIP_ALDEBARAN) {
+	if (obj->adev->ip_versions[MP0_HWIP][0] != IP_VERSION(11, 0, 2) &&
+	    obj->adev->ip_versions[MP0_HWIP][0] != IP_VERSION(11, 0, 4)) {
 		if (amdgpu_ras_reset_error_status(obj->adev, info.head.block))
-			DRM_WARN("Failed to reset error counter and error status");
+			dev_warn(obj->adev->dev, "Failed to reset error counter and error status");
 	}
 
 	return sysfs_emit(buf, "%s: %lu\n%s: %lu\n", "ue", info.ue_count,
@@ -1023,9 +1031,6 @@ int amdgpu_ras_query_error_status(struct amdgpu_device *adev,
 		}
 	}
 
-	if (!amdgpu_persistent_edc_harvesting_supported(adev))
-		amdgpu_ras_reset_error_status(adev, info->head.block);
-
 	return 0;
 }
 
@@ -1145,6 +1150,12 @@ int amdgpu_ras_query_error_count(struct amdgpu_device *adev,
 		if (res)
 			return res;
 
+		if (adev->ip_versions[MP0_HWIP][0] != IP_VERSION(11, 0, 2) &&
+		    adev->ip_versions[MP0_HWIP][0] != IP_VERSION(11, 0, 4)) {
+			if (amdgpu_ras_reset_error_status(adev, info.head.block))
+				dev_warn(adev->dev, "Failed to reset error counter and error status");
+		}
+
 		ce += info.ce_count;
 		ue += info.ue_count;
 	}
@@ -1705,6 +1716,12 @@ static void amdgpu_ras_log_on_err_counter(struct amdgpu_device *adev)
 			continue;
 
 		amdgpu_ras_query_error_status(adev, &info);
+
+		if (adev->ip_versions[MP0_HWIP][0] != IP_VERSION(11, 0, 2) &&
+		    adev->ip_versions[MP0_HWIP][0] != IP_VERSION(11, 0, 4)) {
+			if (amdgpu_ras_reset_error_status(adev, info.head.block))
+				dev_warn(adev->dev, "Failed to reset error counter and error status");
+		}
 	}
 }
 
drivers/gpu/drm/amd/amdkfd/kfd_svm.c +3 -0
index 3b8856b4cece..5979335d7afd 100644
@@ -2286,6 +2286,8 @@ svm_range_cpu_invalidate_pagetables(struct mmu_interval_notifier *mni,
 
 	if (range->event == MMU_NOTIFY_RELEASE)
 		return true;
+	if (!mmget_not_zero(mni->mm))
+		return true;
 
 	start = mni->interval_tree.start;
 	last = mni->interval_tree.last;
@@ -2312,6 +2314,7 @@ svm_range_cpu_invalidate_pagetables(struct mmu_interval_notifier *mni,
 	}
 
 	svm_range_unlock(prange);
+	mmput(mni->mm);
 
 	return true;
 }
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +4 -4
index 8dd03de7c277..78a38c3b7d66 100644
@@ -2835,7 +2835,7 @@ static struct drm_mode_config_helper_funcs amdgpu_dm_mode_config_helperfuncs = {
 
 static void update_connector_ext_caps(struct amdgpu_dm_connector *aconnector)
 {
-	u32 max_cll, min_cll, max, min, q, r;
+	u32 max_avg, min_cll, max, min, q, r;
 	struct amdgpu_dm_backlight_caps *caps;
 	struct amdgpu_display_manager *dm;
 	struct drm_connector *conn_base;
@@ -2865,7 +2865,7 @@ static void update_connector_ext_caps(struct amdgpu_dm_connector *aconnector)
 	caps = &dm->backlight_caps[i];
 	caps->ext_caps = &aconnector->dc_link->dpcd_sink_ext_caps;
 	caps->aux_support = false;
-	max_cll = conn_base->hdr_sink_metadata.hdmi_type1.max_cll;
+	max_avg = conn_base->hdr_sink_metadata.hdmi_type1.max_fall;
 	min_cll = conn_base->hdr_sink_metadata.hdmi_type1.min_cll;
 
 	if (caps->ext_caps->bits.oled == 1 /*||
@@ -2893,8 +2893,8 @@ static void update_connector_ext_caps(struct amdgpu_dm_connector *aconnector)
 	 * The results of the above expressions can be verified at
 	 * pre_computed_values.
 	 */
-	q = max_cll >> 5;
-	r = max_cll % 32;
+	q = max_avg >> 5;
+	r = max_avg % 32;
 	max = (1 << q) * pre_computed_values[r];
 
 	// min luminance: maxLum * (CV/255)^2 / 100
drivers/gpu/drm/amd/display/dc/dcn31/dcn31_dio_link_encoder.c +1 -3
index d94fd1010deb..8b12b4111c88 100644
@@ -230,9 +230,7 @@ static void enc31_hw_init(struct link_encoder *enc)
 	AUX_RX_PHASE_DETECT_LEN,  [21,20] = 0x3 default is 3
 	AUX_RX_DETECTION_THRESHOLD [30:28] = 1
 */
-	AUX_REG_WRITE(AUX_DPHY_RX_CONTROL0, 0x103d1110);
-
-	AUX_REG_WRITE(AUX_DPHY_TX_CONTROL, 0x21c7a);
+	// dmub will read AUX_DPHY_RX_CONTROL0/AUX_DPHY_TX_CONTROL from vbios table in dp_aux_init
 
 	//AUX_DPHY_TX_REF_CONTROL'AUX_TX_REF_DIV HW default is 0x32;
 	// Set AUX_TX_REF_DIV Divider to generate 2 MHz reference from refclk
drivers/gpu/drm/amd/display/dc/dcn31/dcn31_resource.c +0 -6
index d71e625cc476..559cf10831be 100644
@@ -1392,12 +1392,6 @@ static struct stream_encoder *dcn31_stream_encoder_create(
 		return NULL;
 	}
 
-	if (ctx->asic_id.chip_family == FAMILY_YELLOW_CARP &&
-			ctx->asic_id.hw_internal_rev == YELLOW_CARP_B0) {
-		if ((eng_id == ENGINE_ID_DIGC) || (eng_id == ENGINE_ID_DIGD))
-			eng_id = eng_id + 3; // For B0 only. C->F, D->G.
-	}
-
 	dcn30_dio_stream_encoder_construct(enc1, ctx, ctx->dc_bios,
 					eng_id, vpg, afmt,
 					&stream_enc_regs[eng_id],
drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c +1 -1
index c88113044494..9b6fbad47646 100644
@@ -154,7 +154,7 @@ __uc_fw_auto_select(struct drm_i915_private *i915, struct intel_uc_fw *uc_fw)
 		[INTEL_UC_FW_TYPE_GUC] = { blobs_guc, ARRAY_SIZE(blobs_guc) },
 		[INTEL_UC_FW_TYPE_HUC] = { blobs_huc, ARRAY_SIZE(blobs_huc) },
 	};
-	static const struct uc_fw_platform_requirement *fw_blobs;
+	const struct uc_fw_platform_requirement *fw_blobs;
 	enum intel_platform p = INTEL_INFO(i915)->platform;
 	u32 fw_count;
 	u8 rev = INTEL_REVID(i915);
drivers/gpu/drm/i915/i915_sysfs.c +12 -3
index a4d1759375b9..66a8880eaf19 100644
@@ -432,7 +432,14 @@ static ssize_t error_state_read(struct file *filp, struct kobject *kobj,
 	struct device *kdev = kobj_to_dev(kobj);
 	struct drm_i915_private *i915 = kdev_minor_to_i915(kdev);
 	struct i915_gpu_coredump *gpu;
-	ssize_t ret;
+	ssize_t ret = 0;
+
+	/*
+	 * FIXME: Concurrent clients triggering resets and reading + clearing
+	 * dumps can cause inconsistent sysfs reads when a user calls in with a
+	 * non-zero offset to complete a prior partial read but the
+	 * gpu_coredump has been cleared or replaced.
+	 */
 
 	gpu = i915_first_error_state(i915);
 	if (IS_ERR(gpu)) {
@@ -444,8 +451,10 @@ static ssize_t error_state_read(struct file *filp, struct kobject *kobj,
 		const char *str = "No error state collected\n";
 		size_t len = strlen(str);
 
-		ret = min_t(size_t, count, len - off);
-		memcpy(buf, str + off, ret);
+		if (off < len) {
+			ret = min_t(size_t, count, len - off);
+			memcpy(buf, str + off, ret);
+		}
 	}
 
 	return ret;
drivers/hv/channel_mgmt.c +1 -0
index 85a2142c9384..073ff9b6f535 100644
@@ -637,6 +637,7 @@ static void vmbus_process_offer(struct vmbus_channel *newchannel)
 		 */
 		if (newchannel->offermsg.offer.sub_channel_index == 0) {
 			mutex_unlock(&vmbus_connection.channel_mutex);
+			cpus_read_unlock();
 			/*
 			 * Don't call free_channel(), because newchannel->kobj
 			 * is not initialized yet.
drivers/i2c/busses/i2c-designware-common.c +0 -3
index 9f8574320eb2..b08e5bc2b64c 100644
@@ -477,9 +477,6 @@ int i2c_dw_prepare_clk(struct dw_i2c_dev *dev, bool prepare)
 {
 	int ret;
 
-	if (IS_ERR(dev->clk))
-		return PTR_ERR(dev->clk);
-
 	if (prepare) {
 		/* Optional interface clock */
 		ret = clk_prepare_enable(dev->pclk);
drivers/i2c/busses/i2c-designware-platdrv.c +11 -2
index 70ade5306e45..ba043b547393 100644
@@ -320,8 +320,17 @@ static int dw_i2c_plat_probe(struct platform_device *pdev)
 		goto exit_reset;
 	}
 
-	dev->clk = devm_clk_get(&pdev->dev, NULL);
-	if (!i2c_dw_prepare_clk(dev, true)) {
+	dev->clk = devm_clk_get_optional(&pdev->dev, NULL);
+	if (IS_ERR(dev->clk)) {
+		ret = PTR_ERR(dev->clk);
+		goto exit_reset;
+	}
+
+	ret = i2c_dw_prepare_clk(dev, true);
+	if (ret)
+		goto exit_reset;
+
+	if (dev->clk) {
 		u64 clk_khz;
 
 		dev->get_clk_rate_khz = i2c_dw_get_clk_rate_khz;
drivers/i2c/busses/i2c-mt65xx.c +7 -2
index bdecb78bfc26..8e6985354fd5 100644
@@ -1420,17 +1420,22 @@ static int mtk_i2c_probe(struct platform_device *pdev)
 	if (ret < 0) {
 		dev_err(&pdev->dev,
 			"Request I2C IRQ %d fail\n", irq);
-		return ret;
+		goto err_bulk_unprepare;
 	}
 
 	i2c_set_adapdata(&i2c->adap, i2c);
 	ret = i2c_add_adapter(&i2c->adap);
 	if (ret)
-		return ret;
+		goto err_bulk_unprepare;
 
 	platform_set_drvdata(pdev, i2c);
 
 	return 0;
+
+err_bulk_unprepare:
+	clk_bulk_unprepare(I2C_MT65XX_CLK_MAX, i2c->clocks);
+
+	return ret;
 }
 
 static int mtk_i2c_remove(struct platform_device *pdev)
drivers/i2c/busses/i2c-npcm7xx.c +1 -2
index c638f2efb97c..743ac20a405c 100644
@@ -2369,8 +2369,7 @@ static struct platform_driver npcm_i2c_bus_driver = {
 static int __init npcm_i2c_init(void)
 {
 	npcm_i2c_debugfs_dir = debugfs_create_dir("npcm_i2c", NULL);
-	platform_driver_register(&npcm_i2c_bus_driver);
-	return 0;
+	return platform_driver_register(&npcm_i2c_bus_driver);
 }
 module_init(npcm_i2c_init);
 
drivers/input/misc/soc_button_array.c +2 -2
index cbb1599a520e..480476121c01 100644
@@ -85,13 +85,13 @@ static const struct dmi_system_id dmi_use_low_level_irq[] = {
 	},
 	{
 		/*
-		 * Lenovo Yoga Tab2 1051L, something messes with the home-button
+		 * Lenovo Yoga Tab2 1051F/1051L, something messes with the home-button
 		 * IRQ settings, leading to a non working home-button.
 		 */
 		.matches = {
 			DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"),
 			DMI_MATCH(DMI_PRODUCT_NAME, "60073"),
-			DMI_MATCH(DMI_PRODUCT_VERSION, "1051L"),
+			DMI_MATCH(DMI_PRODUCT_VERSION, "1051"),
 		},
 	},
 	{} /* Terminating entry */
drivers/irqchip/irq-apple-aic.c +2 -0
index 12dd48727a15..5ac83185ff47 100644
@@ -1035,6 +1035,7 @@ static void build_fiq_affinity(struct aic_irq_chip *ic, struct device_node *aff)
 			continue;
 
 		cpu = of_cpu_node_to_id(cpu_node);
+		of_node_put(cpu_node);
 		if (WARN_ON(cpu < 0))
 			continue;
 
@@ -1143,6 +1144,7 @@ static int __init aic_of_ic_init(struct device_node *node, struct device_node *p
 		for_each_child_of_node(affs, chld)
 			build_fiq_affinity(irqc, chld);
 	}
+	of_node_put(affs);
 
 	set_handle_irq(aic_handle_irq);
 	set_handle_fiq(aic_handle_fiq);
drivers/irqchip/irq-gic-realview.c +1 -0
index b4c1924f0255..38fab02ffe9d 100644
@@ -57,6 +57,7 @@ realview_gic_of_init(struct device_node *node, struct device_node *parent)
 
 	/* The PB11MPCore GIC needs to be configured in the syscon */
 	map = syscon_node_to_regmap(np);
+	of_node_put(np);
 	if (!IS_ERR(map)) {
 		/* new irq mode with no DCC */
 		regmap_write(map, REALVIEW_SYS_LOCK_OFFSET,
drivers/irqchip/irq-gic-v3.c +5 -2
index 1af2b50f36f3..d5420f9d6219 100644
@@ -1922,7 +1922,7 @@ static void __init gic_populate_ppi_partitions(struct device_node *gic_node)
 
 	gic_data.ppi_descs = kcalloc(gic_data.ppi_nr, sizeof(*gic_data.ppi_descs), GFP_KERNEL);
 	if (!gic_data.ppi_descs)
-		return;
+		goto out_put_node;
 
 	nr_parts = of_get_child_count(parts_node);
 
@@ -1963,12 +1963,15 @@ static void __init gic_populate_ppi_partitions(struct device_node *gic_node)
 				continue;
 
 			cpu = of_cpu_node_to_id(cpu_node);
-			if (WARN_ON(cpu < 0))
+			if (WARN_ON(cpu < 0)) {
+				of_node_put(cpu_node);
 				continue;
+			}
 
 			pr_cont("%pOF[%d] ", cpu_node, cpu);
 
 			cpumask_set_cpu(cpu, &part->mask);
+			of_node_put(cpu_node);
 		}
 
 		pr_cont("}\n");
drivers/irqchip/irq-realtek-rtl.c +1 -1
index 50a56820c99b..56bf502d9c67 100644
@@ -134,9 +134,9 @@ static int __init map_interrupts(struct device_node *node, struct irq_domain *do
 		if (!cpu_ictl)
 			return -EINVAL;
 		ret = of_property_read_u32(cpu_ictl, "#interrupt-cells", &tmp);
+		of_node_put(cpu_ictl);
 		if (ret || tmp != 1)
 			return -EINVAL;
-		of_node_put(cpu_ictl);
 
 		cpu_int = be32_to_cpup(imap + 2);
 		if (cpu_int > 7 || cpu_int < 2)
drivers/isdn/mISDN/socket.c +1 -1
index a6606736d8c5..2776ca5fc33f 100644
@@ -121,7 +121,7 @@ mISDN_sock_recvmsg(struct socket *sock, struct msghdr *msg, size_t len,
 	if (sk->sk_state == MISDN_CLOSED)
 		return 0;
 
-	skb = skb_recv_datagram(sk, flags, flags & MSG_DONTWAIT, &err);
+	skb = skb_recv_datagram(sk, flags, &err);
 	if (!skb)
 		return err;
 
drivers/md/dm-core.h +9 -2
index 4277853c7535..3cd78f1e82a4 100644
@@ -32,6 +32,14 @@ struct dm_kobject_holder {
  * access their members!
  */
 
+/*
+ * For mempools pre-allocation at the table loading time.
+ */
+struct dm_md_mempools {
+	struct bio_set bs;
+	struct bio_set io_bs;
+};
+
 struct mapped_device {
 	struct mutex suspend_lock;
 
@@ -109,8 +117,7 @@ struct mapped_device {
 	/*
 	 * io objects are allocated from here.
 	 */
-	struct bio_set io_bs;
-	struct bio_set bs;
+	struct dm_md_mempools *mempools;
 
 	/* kobject and completion */
 	struct dm_kobject_holder kobj_holder;
drivers/md/dm-log.c +1 -2
index 06f328928a7f..2dda05aada23 100644
@@ -415,8 +415,7 @@ static int create_log_context(struct dm_dirty_log *log, struct dm_target *ti,
 	/*
 	 * Work out how many "unsigned long"s we need to hold the bitset.
 	 */
-	bitset_size = dm_round_up(region_count,
-				  sizeof(*lc->clean_bits) << BYTE_SHIFT);
+	bitset_size = dm_round_up(region_count, BITS_PER_LONG);
 	bitset_size >>= BYTE_SHIFT;
 
 	lc->bitset_uint32_count = bitset_size / sizeof(*lc->clean_bits);
drivers/md/dm-rq.c +1 -1
index 6087cdcaad46..a83b98a8d2a9 100644
@@ -319,7 +319,7 @@ static int setup_clone(struct request *clone, struct request *rq,
 {
 	int r;
 
-	r = blk_rq_prep_clone(clone, rq, &tio->md->bs, gfp_mask,
+	r = blk_rq_prep_clone(clone, rq, &tio->md->mempools->bs, gfp_mask,
 			      dm_rq_bio_constructor, tio);
 	if (r)
 		return r;
drivers/md/dm-table.c +0 -11
index 03541cfc2317..4b5cf3372699 100644
@@ -1030,17 +1030,6 @@ static int dm_table_alloc_md_mempools(struct dm_table *t, struct mapped_device *
 	return 0;
 }
 
-void dm_table_free_md_mempools(struct dm_table *t)
-{
-	dm_free_md_mempools(t->mempools);
-	t->mempools = NULL;
-}
-
-struct dm_md_mempools *dm_table_get_md_mempools(struct dm_table *t)
-{
-	return t->mempools;
-}
-
 static int setup_indexes(struct dm_table *t)
 {
 	int i;
drivers/md/dm.c +28 -59

130 lines not on this page · raw message

drivers/md/dm.h +0 -2
index 9013dc1a7b00..968199b95fd1 100644
@@ -71,8 +71,6 @@ struct dm_target *dm_table_get_immutable_target(struct dm_table *t);
 struct dm_target *dm_table_get_wildcard_target(struct dm_table *t);
 bool dm_table_bio_based(struct dm_table *t);
 bool dm_table_request_based(struct dm_table *t);
-void dm_table_free_md_mempools(struct dm_table *t);
-struct dm_md_mempools *dm_table_get_md_mempools(struct dm_table *t);
 
 void dm_lock_md_type(struct mapped_device *md);
 void dm_unlock_md_type(struct mapped_device *md);
drivers/md/raid5-ppl.c +2 -2
index d3962d92df18..18acbbed8f0c 100644
@@ -629,9 +629,9 @@ static void ppl_do_flush(struct ppl_io_unit *io)
 		if (bdev) {
 			struct bio *bio;
 
-			bio = bio_alloc_bioset(bdev, 0, GFP_NOIO,
+			bio = bio_alloc_bioset(bdev, 0,
 					       REQ_OP_WRITE | REQ_PREFLUSH,
-					       &ppl_conf->flush_bs);
+					       GFP_NOIO, &ppl_conf->flush_bs);
 			bio->bi_private = io;
 			bio->bi_end_io = ppl_flush_endio;
 
drivers/misc/atmel-ssc.c +2 -2
index d6cd5537126c..69f9b0336410 100644
@@ -232,9 +232,9 @@ static int ssc_probe(struct platform_device *pdev)
 	clk_disable_unprepare(ssc->clk);
 
 	ssc->irq = platform_get_irq(pdev, 0);
-	if (!ssc->irq) {
+	if (ssc->irq < 0) {
 		dev_dbg(&pdev->dev, "could not get irq\n");
-		return -ENXIO;
+		return ssc->irq;
 	}
 
 	mutex_lock(&user_lock);
drivers/misc/mei/hbm.c +2 -1
index cebcca6d6d3e..cf2b8261da14 100644
@@ -1351,7 +1351,8 @@ int mei_hbm_dispatch(struct mei_device *dev, struct mei_msg_hdr *hdr)
 
 		if (dev->dev_state != MEI_DEV_INIT_CLIENTS ||
 		    dev->hbm_state != MEI_HBM_CAP_SETUP) {
-			if (dev->dev_state == MEI_DEV_POWER_DOWN) {
+			if (dev->dev_state == MEI_DEV_POWER_DOWN ||
+			    dev->dev_state == MEI_DEV_POWERING_DOWN) {
 				dev_dbg(dev->dev, "hbm: capabilities response: on shutdown, ignoring\n");
 				return 0;
 			}
drivers/misc/mei/hw-me-regs.h +2 -0
index 64ce3f830262..15e8e2b322b1 100644
@@ -109,6 +109,8 @@
 #define MEI_DEV_ID_ADP_P      0x51E0  /* Alder Lake Point P */
 #define MEI_DEV_ID_ADP_N      0x54E0  /* Alder Lake Point N */
 
+#define MEI_DEV_ID_RPL_S      0x7A68  /* Raptor Lake Point S */
+
 /*
  * MEI HW Section
  */
drivers/misc/mei/pci-me.c +2 -0
index 33e58821e478..5435604327a7 100644
@@ -116,6 +116,8 @@ static const struct pci_device_id mei_me_pci_tbl[] = {
 	{MEI_PCI_DEVICE(MEI_DEV_ID_ADP_P, MEI_ME_PCH15_CFG)},
 	{MEI_PCI_DEVICE(MEI_DEV_ID_ADP_N, MEI_ME_PCH15_CFG)},
 
+	{MEI_PCI_DEVICE(MEI_DEV_ID_RPL_S, MEI_ME_PCH15_CFG)},
+
 	/* required last entry */
 	{0, }
 };
drivers/net/ethernet/broadcom/bgmac-bcma.c +0 -1
index e6f48786949c..02bd3cf9a260 100644
@@ -332,7 +332,6 @@ static void bgmac_remove(struct bcma_device *core)
 	bcma_mdio_mii_unregister(bgmac->mii_bus);
 	bgmac_enet_remove(bgmac);
 	bcma_set_drvdata(core, NULL);
-	kfree(bgmac);
 }
 
 static struct bcma_driver bgmac_bcma_driver = {
drivers/net/ethernet/hisilicon/hns3/hnae3.h +1 -0
index 79c64f4e67d2..3affcdb34c91 100644
@@ -765,6 +765,7 @@ struct hnae3_tc_info {
 	u8 prio_tc[HNAE3_MAX_USER_PRIO]; /* TC indexed by prio */
 	u16 tqp_count[HNAE3_MAX_TC];
 	u16 tqp_offset[HNAE3_MAX_TC];
+	u8 max_tc; /* Total number of TCs */
 	u8 num_tc; /* Total number of enabled TCs */
 	bool mqprio_active;
 };
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c +15 -3
index 8cebb180c812..c0b4ff73128f 100644
@@ -3276,7 +3276,7 @@ static int hclge_tp_port_init(struct hclge_dev *hdev)
 static int hclge_update_port_info(struct hclge_dev *hdev)
 {
 	struct hclge_mac *mac = &hdev->hw.mac;
-	int speed = HCLGE_MAC_SPEED_UNKNOWN;
+	int speed;
 	int ret;
 
 	/* get the port info from SFP cmd if not copper port */
@@ -3287,10 +3287,13 @@ static int hclge_update_port_info(struct hclge_dev *hdev)
 	if (!hdev->support_sfp_query)
 		return 0;
 
-	if (hdev->ae_dev->dev_version >= HNAE3_DEVICE_VERSION_V2)
+	if (hdev->ae_dev->dev_version >= HNAE3_DEVICE_VERSION_V2) {
+		speed = mac->speed;
 		ret = hclge_get_sfp_info(hdev, mac);
-	else
+	} else {
+		speed = HCLGE_MAC_SPEED_UNKNOWN;
 		ret = hclge_get_sfp_speed(hdev, &speed);
+	}
 
 	if (ret == -EOPNOTSUPP) {
 		hdev->support_sfp_query = false;
@@ -3302,6 +3305,8 @@ static int hclge_update_port_info(struct hclge_dev *hdev)
 	if (hdev->ae_dev->dev_version >= HNAE3_DEVICE_VERSION_V2) {
 		if (mac->speed_type == QUERY_ACTIVE_SPEED) {
 			hclge_update_port_capability(hdev, mac);
+			if (mac->speed != speed)
+				(void)hclge_tm_port_shaper_cfg(hdev);
 			return 0;
 		}
 		return hclge_cfg_mac_speed_dup(hdev, mac->speed,
@@ -3384,6 +3389,12 @@ static int hclge_set_vf_link_state(struct hnae3_handle *handle, int vf,
 	link_state_old = vport->vf_info.link_state;
 	vport->vf_info.link_state = link_state;
 
+	/* return success directly if the VF is unalive, VF will
+	 * query link state itself when it starts work.
+	 */
+	if (!test_bit(HCLGE_VPORT_STATE_ALIVE, &vport->state))
+		return 0;
+
 	ret = hclge_push_vf_link_status(vport);
 	if (ret) {
 		vport->vf_info.link_state = link_state_old;
@@ -10136,6 +10147,7 @@ static int hclge_modify_port_base_vlan_tag(struct hclge_vport *vport,
 	if (ret)
 		return ret;
 
+	vport->port_base_vlan_cfg.tbl_sta = false;
 	/* remove old VLAN tag */
 	if (old_info->vlan_tag == 0)
 		ret = hclge_set_vf_vlan_common(hdev, vport->vport_id,
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_tm.c +68 -33

210 lines not on this page · raw message

drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_tm.h +1 -0
index 619cc30a2dfc..d943943912f7 100644
@@ -237,6 +237,7 @@ int hclge_pause_addr_cfg(struct hclge_dev *hdev, const u8 *mac_addr);
 void hclge_pfc_rx_stats_get(struct hclge_dev *hdev, u64 *stats);
 void hclge_pfc_tx_stats_get(struct hclge_dev *hdev, u64 *stats);
 int hclge_tm_qs_shaper_cfg(struct hclge_vport *vport, int max_tx_rate);
+int hclge_tm_port_shaper_cfg(struct hclge_dev *hdev);
 int hclge_tm_get_qset_num(struct hclge_dev *hdev, u16 *qset_num);
 int hclge_tm_get_pri_num(struct hclge_dev *hdev, u8 *pri_num);
 int hclge_tm_get_qset_map_pri(struct hclge_dev *hdev, u16 qset_id, u8 *priority,
drivers/net/ethernet/intel/i40e/i40e_ethtool.c +17 -8
index e48499624d22..06c05a6b8b71 100644
@@ -2584,15 +2584,16 @@ static void i40e_diag_test(struct net_device *netdev,
 
 		set_bit(__I40E_TESTING, pf->state);
 
+		if (test_bit(__I40E_RESET_RECOVERY_PENDING, pf->state) ||
+		    test_bit(__I40E_RESET_INTR_RECEIVED, pf->state)) {
+			dev_warn(&pf->pdev->dev,
+				 "Cannot start offline testing when PF is in reset state.\n");
+			goto skip_ol_tests;
+		}
+
 		if (i40e_active_vfs(pf) || i40e_active_vmdqs(pf)) {
 			dev_warn(&pf->pdev->dev,
 				 "Please take active VFs and Netqueues offline and restart the adapter before running NIC diagnostics\n");
-			data[I40E_ETH_TEST_REG]		= 1;
-			data[I40E_ETH_TEST_EEPROM]	= 1;
-			data[I40E_ETH_TEST_INTR]	= 1;
-			data[I40E_ETH_TEST_LINK]	= 1;
-			eth_test->flags |= ETH_TEST_FL_FAILED;
-			clear_bit(__I40E_TESTING, pf->state);
 			goto skip_ol_tests;
 		}
 
@@ -2639,9 +2640,17 @@ static void i40e_diag_test(struct net_device *netdev,
 		data[I40E_ETH_TEST_INTR] = 0;
 	}
 
-skip_ol_tests:
-
 	netif_info(pf, drv, netdev, "testing finished\n");
+	return;
+
+skip_ol_tests:
+	data[I40E_ETH_TEST_REG]		= 1;
+	data[I40E_ETH_TEST_EEPROM]	= 1;
+	data[I40E_ETH_TEST_INTR]	= 1;
+	data[I40E_ETH_TEST_LINK]	= 1;
+	eth_test->flags |= ETH_TEST_FL_FAILED;
+	clear_bit(__I40E_TESTING, pf->state);
+	netif_info(pf, drv, netdev, "testing failed\n");
 }
 
 static void i40e_get_wol(struct net_device *netdev,
drivers/net/ethernet/intel/i40e/i40e_main.c +5 -0
index 98871f014994..46bb1169a004 100644
@@ -8537,6 +8537,11 @@ static int i40e_configure_clsflower(struct i40e_vsi *vsi,
 		return -EOPNOTSUPP;
 	}
 
+	if (!tc) {
+		dev_err(&pf->pdev->dev, "Unable to add filter because of invalid destination");
+		return -EINVAL;
+	}
+
 	if (test_bit(__I40E_RESET_RECOVERY_PENDING, pf->state) ||
 	    test_bit(__I40E_RESET_INTR_RECEIVED, pf->state))
 		return -EBUSY;
drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c +1 -1
index 2606e8f0f19b..033ea71763e3 100644
@@ -2282,7 +2282,7 @@ static int i40e_vc_config_queues_msg(struct i40e_vf *vf, u8 *msg)
 	}
 
 	if (vf->adq_enabled) {
-		for (i = 0; i < I40E_MAX_VF_VSI; i++)
+		for (i = 0; i < vf->num_tc; i++)
 			num_qps_all += vf->ch[i].num_qps;
 		if (num_qps_all != qci->num_queue_pairs) {
 			aq_ret = I40E_ERR_PARAM;
drivers/net/ethernet/intel/iavf/iavf_main.c +1 -1
index 7dfcf78b57fb..f3ecb3bca33d 100644
@@ -984,7 +984,7 @@ struct iavf_mac_filter *iavf_add_filter(struct iavf_adapter *adapter,
 		list_add_tail(&f->list, &adapter->mac_filter_list);
 		f->add = true;
 		f->is_new_mac = true;
-		f->is_primary = false;
+		f->is_primary = ether_addr_equal(macaddr, adapter->hw.mac.addr);
 		adapter->aq_required |= IAVF_FLAG_AQ_ADD_MAC_FILTER;
 	} else {
 		f->remove = false;
drivers/net/ethernet/intel/ice/ice_main.c +31 -18

56 lines not on this page · raw message

drivers/net/ethernet/intel/ice/ice_ptp.c +1 -1
index 662947c882e8..ef9344ef0d8e 100644
@@ -2271,7 +2271,7 @@ static int
 ice_ptp_init_tx_e822(struct ice_pf *pf, struct ice_ptp_tx *tx, u8 port)
 {
 	tx->quad = port / ICE_PORTS_PER_QUAD;
-	tx->quad_offset = tx->quad * INDEX_PER_PORT;
+	tx->quad_offset = (port % ICE_PORTS_PER_QUAD) * INDEX_PER_PORT;
 	tx->len = INDEX_PER_PORT;
 
 	return ice_ptp_alloc_tx_tracker(tx);
drivers/net/ethernet/intel/ice/ice_ptp.h +31 -0
index afd048d69959..10e396abf130 100644
@@ -49,6 +49,37 @@ struct ice_perout_channel {
  * To allow multiple ports to access the shared register block independently,
  * the blocks are split up so that indexes are assigned to each port based on
  * hardware logical port number.
+ *
+ * The timestamp blocks are handled differently for E810- and E822-based
+ * devices. In E810 devices, each port has its own block of timestamps, while in
+ * E822 there is a need to logically break the block of registers into smaller
+ * chunks based on the port number to avoid collisions.
+ *
+ * Example for port 5 in E810:
+ *  +--------+--------+--------+--------+--------+--------+--------+--------+
+ *  |register|register|register|register|register|register|register|register|
+ *  | block  | block  | block  | block  | block  | block  | block  | block  |
+ *  |  for   |  for   |  for   |  for   |  for   |  for   |  for   |  for   |
+ *  | port 0 | port 1 | port 2 | port 3 | port 4 | port 5 | port 6 | port 7 |
+ *  +--------+--------+--------+--------+--------+--------+--------+--------+
+ *                                               ^^
+ *                                               ||
+ *                                               |---  quad offset is always 0
+ *                                               ---- quad number
+ *
+ * Example for port 5 in E822:
+ * +-----------------------------+-----------------------------+
+ * |  register block for quad 0  |  register block for quad 1  |
+ * |+------+------+------+------+|+------+------+------+------+|
+ * ||port 0|port 1|port 2|port 3|||port 0|port 1|port 2|port 3||
+ * |+------+------+------+------+|+------+------+------+------+|
+ * +-----------------------------+-------^---------------------+
+ *                                ^      |
+ *                                |      --- quad offset*
+ *                                ---- quad number
+ *
+ *   * PHY port 5 is port 1 in quad 1
+ *
  */
 
 /**
drivers/net/ethernet/intel/ice/ice_vf_lib.c +5 -0
index aefd66a4db80..9790df872c2a 100644
@@ -504,6 +504,11 @@ int ice_reset_vf(struct ice_vf *vf, u32 flags)
 	}
 
 	if (ice_is_vf_disabled(vf)) {
+		vsi = ice_get_vf_vsi(vf);
+		if (WARN_ON(!vsi))
+			return -EINVAL;
+		ice_vsi_stop_lan_tx_rings(vsi, ICE_NO_RESET, vf->vf_id);
+		ice_vsi_stop_all_rx_rings(vsi);
 		dev_dbg(dev, "VF is already disabled, there is no need for resetting it, telling VM, all is fine %d\n",
 			vf->vf_id);
 		return 0;
drivers/net/ethernet/intel/ice/ice_virtchnl.c +26 -27

122 lines not on this page · raw message

drivers/net/ethernet/mediatek/mtk_eth_soc.c +19 -2
index a50090e62c8f..c075670bc562 100644
@@ -778,6 +778,17 @@ static inline bool mtk_rx_get_desc(struct mtk_rx_dma *rxd,
 	return true;
 }
 
+static void *mtk_max_lro_buf_alloc(gfp_t gfp_mask)
+{
+	unsigned int size = mtk_max_frag_size(MTK_MAX_LRO_RX_LENGTH);
+	unsigned long data;
+
+	data = __get_free_pages(gfp_mask | __GFP_COMP | __GFP_NOWARN,
+				get_order(size));
+
+	return (void *)data;
+}
+
 /* the qdma core needs scratch memory to be setup */
 static int mtk_init_fq_dma(struct mtk_eth *eth)
 {
@@ -1269,7 +1280,10 @@ static int mtk_poll_rx(struct napi_struct *napi, int budget,
 			goto release_desc;
 
 		/* alloc new buffer */
-		new_data = napi_alloc_frag(ring->frag_size);
+		if (ring->frag_size <= PAGE_SIZE)
+			new_data = napi_alloc_frag(ring->frag_size);
+		else
+			new_data = mtk_max_lro_buf_alloc(GFP_ATOMIC);
 		if (unlikely(!new_data)) {
 			netdev->stats.rx_dropped++;
 			goto release_desc;
@@ -1683,7 +1697,10 @@ static int mtk_rx_alloc(struct mtk_eth *eth, int ring_no, int rx_flag)
 		return -ENOMEM;
 
 	for (i = 0; i < rx_dma_size; i++) {
-		ring->data[i] = netdev_alloc_frag(ring->frag_size);
+		if (ring->frag_size <= PAGE_SIZE)
+			ring->data[i] = netdev_alloc_frag(ring->frag_size);
+		else
+			ring->data[i] = mtk_max_lro_buf_alloc(GFP_KERNEL);
 		if (!ring->data[i])
 			return -ENOMEM;
 	}
drivers/net/ethernet/mellanox/mlx5/core/lag/lag.c +1 -1
index a8b98242edb1..a1e9d3051533 100644
@@ -561,7 +561,7 @@ static void mlx5_do_bond(struct mlx5_lag *ldev)
 {
 	struct mlx5_core_dev *dev0 = ldev->pf[MLX5_LAG_P1].dev;
 	struct mlx5_core_dev *dev1 = ldev->pf[MLX5_LAG_P2].dev;
-	struct lag_tracker tracker;
+	struct lag_tracker tracker = { };
 	bool do_bond, roce_lag;
 	int err;
 
drivers/net/ethernet/mellanox/mlxsw/spectrum_cnt.h +1 -1
index a68d931090dd..15c8d4de8350 100644
@@ -8,8 +8,8 @@
 #include "spectrum.h"
 
 enum mlxsw_sp_counter_sub_pool_id {
-	MLXSW_SP_COUNTER_SUB_POOL_FLOW,
 	MLXSW_SP_COUNTER_SUB_POOL_RIF,
+	MLXSW_SP_COUNTER_SUB_POOL_FLOW,
 };
 
 int mlxsw_sp_counter_alloc(struct mlxsw_sp *mlxsw_sp,
drivers/net/ppp/pppoe.c +1 -2
index e172743948ed..ce2cbb5903d7 100644
@@ -1012,8 +1012,7 @@ static int pppoe_recvmsg(struct socket *sock, struct msghdr *m,
 		goto end;
 	}
 
-	skb = skb_recv_datagram(sk, flags & ~MSG_DONTWAIT,
-				flags & MSG_DONTWAIT, &error);
+	skb = skb_recv_datagram(sk, flags, &error);
 	if (error < 0)
 		goto end;
 
drivers/nfc/nfcmrvl/usb.c +14 -2
index a99aedff795d..ea7309453096 100644
@@ -388,13 +388,25 @@ static void nfcmrvl_play_deferred(struct nfcmrvl_usb_drv_data *drv_data)
 	int err;
 
 	while ((urb = usb_get_from_anchor(&drv_data->deferred))) {
+		usb_anchor_urb(urb, &drv_data->tx_anchor);
+
 		err = usb_submit_urb(urb, GFP_ATOMIC);
-		if (err)
+		if (err) {
+			kfree(urb->setup_packet);
+			usb_unanchor_urb(urb);
+			usb_free_urb(urb);
 			break;
+		}
 
 		drv_data->tx_in_flight++;
+		usb_free_urb(urb);
+	}
+
+	/* Cleanup the rest deferred urbs. */
+	while ((urb = usb_get_from_anchor(&drv_data->deferred))) {
+		kfree(urb->setup_packet);
+		usb_free_urb(urb);
 	}
-	usb_scuttle_anchored_urbs(&drv_data->deferred);
 }
 
 static int nfcmrvl_resume(struct usb_interface *intf)
drivers/nvme/host/core.c +2 -2
index 2d6a01853109..1ea85c88d795 100644
@@ -3226,8 +3226,8 @@ static ssize_t uuid_show(struct device *dev, struct device_attribute *attr,
 	 * we have no UUID set
 	 */
 	if (uuid_is_null(&ids->uuid)) {
-		printk_ratelimited(KERN_WARNING
-				   "No UUID available providing old NGUID\n");
+		dev_warn_ratelimited(dev,
+			"No UUID available providing old NGUID\n");
 		return sysfs_emit(buf, "%pU\n", ids->nguid);
 	}
 	return sysfs_emit(buf, "%pU\n", &ids->uuid);
drivers/platform/mips/Kconfig +1 -1
index d421e1482395..6b51ad01f791 100644
@@ -17,7 +17,7 @@ menuconfig MIPS_PLATFORM_DEVICES
 if MIPS_PLATFORM_DEVICES
 
 config CPU_HWMON
-	tristate "Loongson-3 CPU HWMon Driver"
+	bool "Loongson-3 CPU HWMon Driver"
 	depends on MACH_LOONGSON64
 	select HWMON
 	default y
drivers/platform/x86/gigabyte-wmi.c +2 -0
index e87a931eab1e..78446b1953f7 100644
@@ -140,6 +140,7 @@ static u8 gigabyte_wmi_detect_sensor_usability(struct wmi_device *wdev)
 	}}
 
 static const struct dmi_system_id gigabyte_wmi_known_working_platforms[] = {
+	DMI_EXACT_MATCH_GIGABYTE_BOARD_NAME("B450M DS3H-CF"),
 	DMI_EXACT_MATCH_GIGABYTE_BOARD_NAME("B450M S2H V2"),
 	DMI_EXACT_MATCH_GIGABYTE_BOARD_NAME("B550 AORUS ELITE AX V2"),
 	DMI_EXACT_MATCH_GIGABYTE_BOARD_NAME("B550 AORUS ELITE"),
@@ -154,6 +155,7 @@ static const struct dmi_system_id gigabyte_wmi_known_working_platforms[] = {
 	DMI_EXACT_MATCH_GIGABYTE_BOARD_NAME("X570 GAMING X"),
 	DMI_EXACT_MATCH_GIGABYTE_BOARD_NAME("X570 I AORUS PRO WIFI"),
 	DMI_EXACT_MATCH_GIGABYTE_BOARD_NAME("X570 UD"),
+	DMI_EXACT_MATCH_GIGABYTE_BOARD_NAME("Z690M AORUS ELITE AX DDR4"),
 	{ }
 };
 
drivers/platform/x86/intel/hid.c +6 -0
index 216d31e3403d..79cff1fc675c 100644
@@ -122,6 +122,12 @@ static const struct dmi_system_id dmi_vgbs_allow_list[] = {
 			DMI_MATCH(DMI_PRODUCT_NAME, "HP Spectre x360 Convertible 15-df0xxx"),
 		},
 	},
+	{
+		.matches = {
+			DMI_MATCH(DMI_SYS_VENDOR, "Microsoft Corporation"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "Surface Go"),
+		},
+	},
 	{ }
 };
 
drivers/platform/x86/intel/pmc/core.c +1 -0
index ac19fcc9abbf..8ee15a7252c7 100644
@@ -1912,6 +1912,7 @@ static const struct x86_cpu_id intel_pmc_core_ids[] = {
 	X86_MATCH_INTEL_FAM6_MODEL(ROCKETLAKE,		&tgl_reg_map),
 	X86_MATCH_INTEL_FAM6_MODEL(ALDERLAKE_L,		&tgl_reg_map),
 	X86_MATCH_INTEL_FAM6_MODEL(ALDERLAKE,		&adl_reg_map),
+	X86_MATCH_INTEL_FAM6_MODEL(RAPTORLAKE_P,        &tgl_reg_map),
 	{}
 };
 
drivers/platform/x86/intel/pmt/crashlog.c +1 -1
index 34daf9df168b..ace1239bc0a0 100644
@@ -282,7 +282,7 @@ static int pmt_crashlog_probe(struct auxiliary_device *auxdev,
 	auxiliary_set_drvdata(auxdev, priv);
 
 	for (i = 0; i < intel_vsec_dev->num_resources; i++) {
-		struct intel_pmt_entry *entry = &priv->entry[i].entry;
+		struct intel_pmt_entry *entry = &priv->entry[priv->num_entries].entry;
 
 		ret = intel_pmt_dev_create(entry, &pmt_crashlog_ns, intel_vsec_dev, i);
 		if (ret < 0)
drivers/scsi/ipr.c +2 -2
index 104bee9b3a9d..00593d8953f1 100644
@@ -9795,7 +9795,7 @@ static int ipr_alloc_mem(struct ipr_ioa_cfg *ioa_cfg)
 					GFP_KERNEL);
 
 		if (!ioa_cfg->hrrq[i].host_rrq)  {
-			while (--i > 0)
+			while (--i >= 0)
 				dma_free_coherent(&pdev->dev,
 					sizeof(u32) * ioa_cfg->hrrq[i].size,
 					ioa_cfg->hrrq[i].host_rrq,
@@ -10068,7 +10068,7 @@ static int ipr_request_other_msi_irqs(struct ipr_ioa_cfg *ioa_cfg,
 			ioa_cfg->vectors_info[i].desc,
 			&ioa_cfg->hrrq[i]);
 		if (rc) {
-			while (--i >= 0)
+			while (--i > 0)
 				free_irq(pci_irq_vector(pdev, i),
 					&ioa_cfg->hrrq[i]);
 			return rc;
drivers/scsi/lpfc/lpfc_els.c +9 -9
index 892b3da1ba45..9e3899580039 100644
@@ -3035,18 +3035,10 @@ lpfc_cmpl_els_logo(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb,
 		spin_unlock_irq(&ndlp->lock);
 		lpfc_disc_state_machine(vport, ndlp, cmdiocb,
 					NLP_EVT_DEVICE_RM);
-		lpfc_els_free_iocb(phba, cmdiocb);
-		lpfc_nlp_put(ndlp);
-
-		/* Presume the node was released. */
-		return;
+		goto out_rsrc_free;
 	}
 
 out:
-	/* Driver is done with the IO.  */
-	lpfc_els_free_iocb(phba, cmdiocb);
-	lpfc_nlp_put(ndlp);
-
 	/* At this point, the LOGO processing is complete. NOTE: For a
 	 * pt2pt topology, we are assuming the NPortID will only change
 	 * on link up processing. For a LOGO / PLOGI initiated by the
@@ -3073,6 +3065,10 @@ lpfc_cmpl_els_logo(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb,
 				 ndlp->nlp_DID, ulp_status,
 				 ulp_word4, tmo,
 				 vport->num_disc_nodes);
+
+		lpfc_els_free_iocb(phba, cmdiocb);
+		lpfc_nlp_put(ndlp);
+
 		lpfc_disc_start(vport);
 		return;
 	}
@@ -3089,6 +3085,10 @@ lpfc_cmpl_els_logo(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb,
 		lpfc_disc_state_machine(vport, ndlp, cmdiocb,
 					NLP_EVT_DEVICE_RM);
 	}
+out_rsrc_free:
+	/* Driver is done with the I/O. */
+	lpfc_els_free_iocb(phba, cmdiocb);
+	lpfc_nlp_put(ndlp);
 }
 
 /**
drivers/scsi/lpfc/lpfc_hw4.h +3 -0
index 02e230ed6280..e7daef550095 100644
@@ -4488,6 +4488,9 @@ struct wqe_common {
 #define wqe_sup_SHIFT         6
 #define wqe_sup_MASK          0x00000001
 #define wqe_sup_WORD          word11
+#define wqe_ffrq_SHIFT         6
+#define wqe_ffrq_MASK          0x00000001
+#define wqe_ffrq_WORD          word11
 #define wqe_wqec_SHIFT        7
 #define wqe_wqec_MASK         0x00000001
 #define wqe_wqec_WORD         word11
drivers/scsi/lpfc/lpfc_nportdisc.c +2 -1
index 4b065c51ee1b..f5de88877ffe 100644
@@ -835,7 +835,8 @@ lpfc_rcv_logo(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp,
 		lpfc_nvmet_invalidate_host(phba, ndlp);
 
 	if (ndlp->nlp_DID == Fabric_DID) {
-		if (vport->port_state <= LPFC_FDISC)
+		if (vport->port_state <= LPFC_FDISC ||
+		    vport->fc_flag & FC_PT2PT)
 			goto out;
 		lpfc_linkdown_port(vport);
 		spin_lock_irq(shost->host_lock);
drivers/scsi/lpfc/lpfc_nvme.c +9 -2
index d3a542466e98..49f44d9d04ea 100644
@@ -1194,7 +1194,8 @@ lpfc_nvme_prep_io_cmd(struct lpfc_vport *vport,
 {
 	struct lpfc_hba *phba = vport->phba;
 	struct nvmefc_fcp_req *nCmd = lpfc_ncmd->nvmeCmd;
-	struct lpfc_iocbq *pwqeq = &(lpfc_ncmd->cur_iocbq);
+	struct nvme_common_command *sqe;
+	struct lpfc_iocbq *pwqeq = &lpfc_ncmd->cur_iocbq;
 	union lpfc_wqe128 *wqe = &pwqeq->wqe;
 	uint32_t req_len;
 
@@ -1251,8 +1252,14 @@ lpfc_nvme_prep_io_cmd(struct lpfc_vport *vport,
 		cstat->control_requests++;
 	}
 
-	if (pnode->nlp_nvme_info & NLP_NVME_NSLER)
+	if (pnode->nlp_nvme_info & NLP_NVME_NSLER) {
 		bf_set(wqe_erp, &wqe->generic.wqe_com, 1);
+		sqe = &((struct nvme_fc_cmd_iu *)
+			nCmd->cmdaddr)->sqe.common;
+		if (sqe->opcode == nvme_admin_async_event)
+			bf_set(wqe_ffrq, &wqe->generic.wqe_com, 1);
+	}
+
 	/*
 	 * Finish initializing those WQE fields that are independent
 	 * of the nvme_cmnd request_buffer
drivers/scsi/mpt3sas/mpt3sas_base.c +12 -11
index 538d2c0cd971..aa142052ebe4 100644
@@ -5368,6 +5368,7 @@ static int _base_assign_fw_reported_qd(struct MPT3SAS_ADAPTER *ioc)
 	Mpi2ConfigReply_t mpi_reply;
 	Mpi2SasIOUnitPage1_t *sas_iounit_pg1 = NULL;
 	Mpi26PCIeIOUnitPage1_t pcie_iounit_pg1;
+	u16 depth;
 	int sz;
 	int rc = 0;
 
@@ -5379,7 +5380,7 @@ static int _base_assign_fw_reported_qd(struct MPT3SAS_ADAPTER *ioc)
 		goto out;
 	/* sas iounit page 1 */
 	sz = offsetof(Mpi2SasIOUnitPage1_t, PhyData);
-	sas_iounit_pg1 = kzalloc(sz, GFP_KERNEL);
+	sas_iounit_pg1 = kzalloc(sizeof(Mpi2SasIOUnitPage1_t), GFP_KERNEL);
 	if (!sas_iounit_pg1) {
 		pr_err("%s: failure at %s:%d/%s()!\n",
 		    ioc->name, __FILE__, __LINE__, __func__);
@@ -5392,16 +5393,16 @@ static int _base_assign_fw_reported_qd(struct MPT3SAS_ADAPTER *ioc)
 		    ioc->name, __FILE__, __LINE__, __func__);
 		goto out;
 	}
-	ioc->max_wideport_qd =
-	    (le16_to_cpu(sas_iounit_pg1->SASWideMaxQueueDepth)) ?
-	    le16_to_cpu(sas_iounit_pg1->SASWideMaxQueueDepth) :
-	    MPT3SAS_SAS_QUEUE_DEPTH;
-	ioc->max_narrowport_qd =
-	    (le16_to_cpu(sas_iounit_pg1->SASNarrowMaxQueueDepth)) ?
-	    le16_to_cpu(sas_iounit_pg1->SASNarrowMaxQueueDepth) :
-	    MPT3SAS_SAS_QUEUE_DEPTH;
-	ioc->max_sata_qd = (sas_iounit_pg1->SATAMaxQDepth) ?
-	    sas_iounit_pg1->SATAMaxQDepth : MPT3SAS_SATA_QUEUE_DEPTH;
+
+	depth = le16_to_cpu(sas_iounit_pg1->SASWideMaxQueueDepth);
+	ioc->max_wideport_qd = (depth ? depth : MPT3SAS_SAS_QUEUE_DEPTH);
+
+	depth = le16_to_cpu(sas_iounit_pg1->SASNarrowMaxQueueDepth);
+	ioc->max_narrowport_qd = (depth ? depth : MPT3SAS_SAS_QUEUE_DEPTH);
+
+	depth = sas_iounit_pg1->SATAMaxQDepth;
+	ioc->max_sata_qd = (depth ? depth : MPT3SAS_SATA_QUEUE_DEPTH);
+
 	/* pcie iounit page 1 */
 	rc = mpt3sas_config_get_pcie_iounit_pg1(ioc, &mpi_reply,
 	    &pcie_iounit_pg1, sizeof(Mpi26PCIeIOUnitPage1_t));
drivers/scsi/pmcraid.c +1 -1
index fd674ed1febe..6d94837c9049 100644
@@ -4031,7 +4031,7 @@ pmcraid_register_interrupt_handler(struct pmcraid_instance *pinstance)
 	return 0;
 
 out_unwind:
-	while (--i > 0)
+	while (--i >= 0)
 		free_irq(pci_irq_vector(pdev, i), &pinstance->hrrq_vector[i]);
 	pci_free_irq_vectors(pdev);
 	return rc;
drivers/scsi/vmw_pvscsi.h +2 -2
index 51a82f7803d3..9d16cf925483 100644
@@ -331,8 +331,8 @@ struct PVSCSIRingReqDesc {
 	u8	tag;
 	u8	bus;
 	u8	target;
-	u8	vcpuHint;
-	u8	unused[59];
+	u16	vcpuHint;
+	u8	unused[58];
 } __packed;
 
 /*
drivers/staging/r8188eu/core/rtw_xmit.c +5 -15
index 2ee92bbe66a0..ea5c88904961 100644
@@ -178,8 +178,7 @@ s32	_rtw_init_xmit_priv(struct xmit_priv *pxmitpriv, struct adapter *padapter)
 
 	pxmitpriv->free_xmit_extbuf_cnt = num_xmit_extbuf;
 
-	res = rtw_alloc_hwxmits(padapter);
-	if (res) {
+	if (rtw_alloc_hwxmits(padapter)) {
 		res = _FAIL;
 		goto exit;
 	}
@@ -1492,19 +1491,10 @@ int rtw_alloc_hwxmits(struct adapter *padapter)
 
 	hwxmits = pxmitpriv->hwxmits;
 
-	if (pxmitpriv->hwxmit_entry == 5) {
-		hwxmits[0] .sta_queue = &pxmitpriv->bm_pending;
-		hwxmits[1] .sta_queue = &pxmitpriv->vo_pending;
-		hwxmits[2] .sta_queue = &pxmitpriv->vi_pending;
-		hwxmits[3] .sta_queue = &pxmitpriv->bk_pending;
-		hwxmits[4] .sta_queue = &pxmitpriv->be_pending;
-	} else if (pxmitpriv->hwxmit_entry == 4) {
-		hwxmits[0] .sta_queue = &pxmitpriv->vo_pending;
-		hwxmits[1] .sta_queue = &pxmitpriv->vi_pending;
-		hwxmits[2] .sta_queue = &pxmitpriv->be_pending;
-		hwxmits[3] .sta_queue = &pxmitpriv->bk_pending;
-	} else {
-	}
+	hwxmits[0].sta_queue = &pxmitpriv->vo_pending;
+	hwxmits[1].sta_queue = &pxmitpriv->vi_pending;
+	hwxmits[2].sta_queue = &pxmitpriv->be_pending;
+	hwxmits[3].sta_queue = &pxmitpriv->bk_pending;
 
 	return 0;
 }
drivers/staging/r8188eu/os_dep/ioctl_linux.c +1 -1
index 60bd1cc2b3af..607c5e1eb320 100644
@@ -404,7 +404,7 @@ static int wpa_set_encryption(struct net_device *dev, struct ieee_param *param,
 
 		if (wep_key_len > 0) {
 			wep_key_len = wep_key_len <= 5 ? 5 : 13;
-			wep_total_len = wep_key_len + FIELD_OFFSET(struct ndis_802_11_wep, KeyMaterial);
+			wep_total_len = wep_key_len + sizeof(*pwep);
 			pwep = kzalloc(wep_total_len, GFP_KERNEL);
 			if (!pwep)
 				goto exit;
drivers/tty/goldfish.c +1 -1
index c7968aecd870..d02de3f0326f 100644
@@ -426,7 +426,7 @@ static int goldfish_tty_remove(struct platform_device *pdev)
 	tty_unregister_device(goldfish_tty_driver, qtty->console.index);
 	iounmap(qtty->base);
 	qtty->base = NULL;
-	free_irq(qtty->irq, pdev);
+	free_irq(qtty->irq, qtty);
 	tty_port_destroy(&qtty->port);
 	goldfish_tty_current_line_count--;
 	if (goldfish_tty_current_line_count == 0)
drivers/tty/n_gsm.c +1 -1
index ea5381dedb07..9f2a8c0e1e33 100644
@@ -455,7 +455,7 @@ static void gsm_hex_dump_bytes(const char *fname, const u8 *data,
 		return;
 	}
 
-	prefix = kasprintf(GFP_KERNEL, "%s: ", fname);
+	prefix = kasprintf(GFP_ATOMIC, "%s: ", fname);
 	if (!prefix)
 		return;
 	print_hex_dump(KERN_INFO, prefix, DUMP_PREFIX_OFFSET, 16, 1, data, len,
drivers/tty/serial/8250/8250_port.c +2 -0
index 1fbd5bf264be..7e295d2701b2 100644
@@ -1535,6 +1535,8 @@ static inline void __stop_tx(struct uart_8250_port *p)
 
 	if (em485) {
 		unsigned char lsr = serial_in(p, UART_LSR);
+		p->lsr_saved_flags |= lsr & LSR_SAVE_FLAGS;
+
 		/*
 		 * To provide required timeing and allow FIFO transfer,
 		 * __stop_tx_rs485() must be called only when both FIFO and
drivers/usb/cdns3/cdnsp-ring.c +11 -8
index e45c3d6e1536..794e413800ae 100644
@@ -1941,13 +1941,16 @@ int cdnsp_queue_bulk_tx(struct cdnsp_device *pdev, struct cdnsp_request *preq)
 		}
 
 		if (enqd_len + trb_buff_len >= full_len) {
-			if (need_zero_pkt)
-				zero_len_trb = !zero_len_trb;
-
-			field &= ~TRB_CHAIN;
-			field |= TRB_IOC;
-			more_trbs_coming = false;
-			preq->td.last_trb = ring->enqueue;
+			if (need_zero_pkt && !zero_len_trb) {
+				zero_len_trb = true;
+			} else {
+				zero_len_trb = false;
+				field &= ~TRB_CHAIN;
+				field |= TRB_IOC;
+				more_trbs_coming = false;
+				need_zero_pkt = false;
+				preq->td.last_trb = ring->enqueue;
+			}
 		}
 
 		/* Only set interrupt on short packet for OUT endpoints. */
@@ -1962,7 +1965,7 @@ int cdnsp_queue_bulk_tx(struct cdnsp_device *pdev, struct cdnsp_request *preq)
 		length_field = TRB_LEN(trb_buff_len) | TRB_TD_SIZE(remainder) |
 			TRB_INTR_TARGET(0);
 
-		cdnsp_queue_trb(pdev, ring, more_trbs_coming | zero_len_trb,
+		cdnsp_queue_trb(pdev, ring, more_trbs_coming,
 				lower_32_bits(send_addr),
 				upper_32_bits(send_addr),
 				length_field,
drivers/usb/dwc2/hcd.c +1 -1
index f63a27d11fac..3f107a06817d 100644
@@ -5190,7 +5190,7 @@ int dwc2_hcd_init(struct dwc2_hsotg *hsotg)
 	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
 	if (!res) {
 		retval = -EINVAL;
-		goto error1;
+		goto error2;
 	}
 	hcd->rsrc_start = res->start;
 	hcd->rsrc_len = resource_size(res);
drivers/usb/dwc3/dwc3-pci.c +1 -0
index ba51de7dd760..6b018048fe2e 100644
@@ -127,6 +127,7 @@ static const struct property_entry dwc3_pci_intel_phy_charger_detect_properties[
 	PROPERTY_ENTRY_STRING("dr_mode", "peripheral"),
 	PROPERTY_ENTRY_BOOL("snps,dis_u2_susphy_quirk"),
 	PROPERTY_ENTRY_BOOL("linux,phy_charger_detect"),
+	PROPERTY_ENTRY_BOOL("linux,sysdev_is_parent"),
 	{}
 };
 
drivers/usb/dwc3/gadget.c +15 -11
index bf2eaa09d73c..0a6633e7edce 100644
@@ -2984,6 +2984,7 @@ static int dwc3_gadget_init_in_endpoint(struct dwc3_ep *dep)
 	struct dwc3 *dwc = dep->dwc;
 	u32 mdwidth;
 	int size;
+	int maxpacket;
 
 	mdwidth = dwc3_mdwidth(dwc);
 
@@ -2996,21 +2997,24 @@ static int dwc3_gadget_init_in_endpoint(struct dwc3_ep *dep)
 	else
 		size = DWC31_GTXFIFOSIZ_TXFDEP(size);
 
-	/* FIFO Depth is in MDWDITH bytes. Multiply */
-	size *= mdwidth;
-
 	/*
-	 * To meet performance requirement, a minimum TxFIFO size of 3x
-	 * MaxPacketSize is recommended for endpoints that support burst and a
-	 * minimum TxFIFO size of 2x MaxPacketSize for endpoints that don't
-	 * support burst. Use those numbers and we can calculate the max packet
-	 * limit as below.
+	 * maxpacket size is determined as part of the following, after assuming
+	 * a mult value of one maxpacket:
+	 * DWC3 revision 280A and prior:
+	 * fifo_size = mult * (max_packet / mdwidth) + 1;
+	 * maxpacket = mdwidth * (fifo_size - 1);
+	 *
+	 * DWC3 revision 290A and onwards:
+	 * fifo_size = mult * ((max_packet + mdwidth)/mdwidth + 1) + 1
+	 * maxpacket = mdwidth * ((fifo_size - 1) - 1) - mdwidth;
 	 */
-	if (dwc->maximum_speed >= USB_SPEED_SUPER)
-		size /= 3;
+	if (DWC3_VER_IS_PRIOR(DWC3, 290A))
+		maxpacket = mdwidth * (size - 1);
 	else
-		size /= 2;
+		maxpacket = mdwidth * ((size - 1) - 1) - mdwidth;
 
+	/* Functionally, space for one max packet is sufficient */
+	size = min_t(int, maxpacket, 1024);
 	usb_ep_set_maxpacket_limit(&dep->endpoint, size);
 
 	dep->endpoint.max_streams = 16;
drivers/usb/gadget/function/f_fs.c +25 -15
index 4585ee3a444a..e0fa4b186ec6 100644
@@ -122,8 +122,6 @@ struct ffs_ep {
 	struct usb_endpoint_descriptor	*descs[3];
 
 	u8				num;
-
-	int				status;	/* P: epfile->mutex */
 };
 
 struct ffs_epfile {
@@ -227,6 +225,9 @@ struct ffs_io_data {
 	bool use_sg;
 
 	struct ffs_data *ffs;
+
+	int status;
+	struct completion done;
 };
 
 struct ffs_desc_helper {
@@ -707,12 +708,15 @@ static const struct file_operations ffs_ep0_operations = {
 
 static void ffs_epfile_io_complete(struct usb_ep *_ep, struct usb_request *req)
 {
+	struct ffs_io_data *io_data = req->context;
+
 	ENTER();
-	if (req->context) {
-		struct ffs_ep *ep = _ep->driver_data;
-		ep->status = req->status ? req->status : req->actual;
-		complete(req->context);
-	}
+	if (req->status)
+		io_data->status = req->status;
+	else
+		io_data->status = req->actual;
+
+	complete(&io_data->done);
 }
 
 static ssize_t ffs_copy_to_iter(void *data, int data_len, struct iov_iter *iter)
@@ -1050,7 +1054,6 @@ static ssize_t ffs_epfile_io(struct file *file, struct ffs_io_data *io_data)
 		WARN(1, "%s: data_len == -EINVAL\n", __func__);
 		ret = -EINVAL;
 	} else if (!io_data->aio) {
-		DECLARE_COMPLETION_ONSTACK(done);
 		bool interrupted = false;
 
 		req = ep->req;
@@ -1066,7 +1069,8 @@ static ssize_t ffs_epfile_io(struct file *file, struct ffs_io_data *io_data)
 
 		io_data->buf = data;
 
-		req->context  = &done;
+		init_completion(&io_data->done);
+		req->context  = io_data;
 		req->complete = ffs_epfile_io_complete;
 
 		ret = usb_ep_queue(ep->ep, req, GFP_ATOMIC);
@@ -1075,7 +1079,12 @@ static ssize_t ffs_epfile_io(struct file *file, struct ffs_io_data *io_data)
 
 		spin_unlock_irq(&epfile->ffs->eps_lock);
 
-		if (wait_for_completion_interruptible(&done)) {
+		if (wait_for_completion_interruptible(&io_data->done)) {
+			spin_lock_irq(&epfile->ffs->eps_lock);
+			if (epfile->ep != ep) {
+				ret = -ESHUTDOWN;
+				goto error_lock;
+			}
 			/*
 			 * To avoid race condition with ffs_epfile_io_complete,
 			 * dequeue the request first then check
@@ -1083,17 +1092,18 @@ static ssize_t ffs_epfile_io(struct file *file, struct ffs_io_data *io_data)
 			 * condition with req->complete callback.
 			 */
 			usb_ep_dequeue(ep->ep, req);
-			wait_for_completion(&done);
-			interrupted = ep->status < 0;
+			spin_unlock_irq(&epfile->ffs->eps_lock);
+			wait_for_completion(&io_data->done);
+			interrupted = io_data->status < 0;
 		}
 
 		if (interrupted)
 			ret = -EINTR;
-		else if (io_data->read && ep->status > 0)
-			ret = __ffs_epfile_read_data(epfile, data, ep->status,
+		else if (io_data->read && io_data->status > 0)
+			ret = __ffs_epfile_read_data(epfile, data, io_data->status,
 						     &io_data->data);
 		else
-			ret = ep->status;
+			ret = io_data->status;
 		goto error_mutex;
 	} else if (!(req = usb_ep_alloc_request(ep->ep, GFP_ATOMIC))) {
 		ret = -ENOMEM;
drivers/usb/gadget/function/u_ether.c +10 -2
index 6f5d45ef2e39..f51694f29de9 100644
@@ -775,9 +775,13 @@ struct eth_dev *gether_setup_name(struct usb_gadget *g,
 	dev->qmult = qmult;
 	snprintf(net->name, sizeof(net->name), "%s%%d", netname);
 
-	if (get_ether_addr(dev_addr, addr))
+	if (get_ether_addr(dev_addr, addr)) {
+		net->addr_assign_type = NET_ADDR_RANDOM;
 		dev_warn(&g->dev,
 			"using random %s ethernet address\n", "self");
+	} else {
+		net->addr_assign_type = NET_ADDR_SET;
+	}
 	eth_hw_addr_set(net, addr);
 	if (get_ether_addr(host_addr, dev->host_mac))
 		dev_warn(&g->dev,
@@ -844,6 +848,10 @@ struct net_device *gether_setup_name_default(const char *netname)
 
 	eth_random_addr(dev->dev_mac);
 	pr_warn("using random %s ethernet address\n", "self");
+
+	/* by default we always have a random MAC address */
+	net->addr_assign_type = NET_ADDR_RANDOM;
+
 	eth_random_addr(dev->host_mac);
 	pr_warn("using random %s ethernet address\n", "host");
 
@@ -871,7 +879,6 @@ int gether_register_netdev(struct net_device *net)
 	dev = netdev_priv(net);
 	g = dev->gadget;
 
-	net->addr_assign_type = NET_ADDR_RANDOM;
 	eth_hw_addr_set(net, dev->dev_mac);
 
 	status = register_netdev(net);
@@ -912,6 +919,7 @@ int gether_set_dev_addr(struct net_device *net, const char *dev_addr)
 	if (get_ether_addr(dev_addr, new_addr))
 		return -EINVAL;
 	memcpy(dev->dev_mac, new_addr, ETH_ALEN);
+	net->addr_assign_type = NET_ADDR_SET;
 	return 0;
 }
 EXPORT_SYMBOL_GPL(gether_set_dev_addr);
drivers/usb/gadget/udc/lpc32xx_udc.c +1 -0
index 6117ae8e7242..cea10cdb83ae 100644
@@ -3016,6 +3016,7 @@ static int lpc32xx_udc_probe(struct platform_device *pdev)
 	}
 
 	udc->isp1301_i2c_client = isp1301_get_client(isp1301_node);
+	of_node_put(isp1301_node);
 	if (!udc->isp1301_i2c_client) {
 		return -EPROBE_DEFER;
 	}
drivers/usb/serial/io_ti.c +2 -0
index a7b3c15957ba..feba2a8d1233 100644
@@ -166,6 +166,7 @@ static const struct usb_device_id edgeport_2port_id_table[] = {
 	{ USB_DEVICE(USB_VENDOR_ID_ION, ION_DEVICE_ID_TI_EDGEPORT_8S) },
 	{ USB_DEVICE(USB_VENDOR_ID_ION, ION_DEVICE_ID_TI_EDGEPORT_416) },
 	{ USB_DEVICE(USB_VENDOR_ID_ION, ION_DEVICE_ID_TI_EDGEPORT_416B) },
+	{ USB_DEVICE(USB_VENDOR_ID_ION, ION_DEVICE_ID_E5805A) },
 	{ }
 };
 
@@ -204,6 +205,7 @@ static const struct usb_device_id id_table_combined[] = {
 	{ USB_DEVICE(USB_VENDOR_ID_ION, ION_DEVICE_ID_TI_EDGEPORT_8S) },
 	{ USB_DEVICE(USB_VENDOR_ID_ION, ION_DEVICE_ID_TI_EDGEPORT_416) },
 	{ USB_DEVICE(USB_VENDOR_ID_ION, ION_DEVICE_ID_TI_EDGEPORT_416B) },
+	{ USB_DEVICE(USB_VENDOR_ID_ION, ION_DEVICE_ID_E5805A) },
 	{ }
 };
 
drivers/usb/serial/io_usbvend.h +1 -0
index 52cbc353051f..9a6f742ad3ab 100644
@@ -212,6 +212,7 @@
 //
 // Definitions for other product IDs
 #define ION_DEVICE_ID_MT4X56USB			0x1403	// OEM device
+#define ION_DEVICE_ID_E5805A			0x1A01  // OEM device (rebranded Edgeport/4)
 
 
 #define	GENERATION_ID_FROM_USB_PRODUCT_ID(ProductId)				\
drivers/usb/serial/option.c +6 -0
index e60425bbf537..ed1e50d83cca 100644
@@ -432,6 +432,8 @@ static void option_instat_callback(struct urb *urb);
 #define CINTERION_PRODUCT_CLS8			0x00b0
 #define CINTERION_PRODUCT_MV31_MBIM		0x00b3
 #define CINTERION_PRODUCT_MV31_RMNET		0x00b7
+#define CINTERION_PRODUCT_MV31_2_MBIM		0x00b8
+#define CINTERION_PRODUCT_MV31_2_RMNET		0x00b9
 #define CINTERION_PRODUCT_MV32_WA		0x00f1
 #define CINTERION_PRODUCT_MV32_WB		0x00f2
 
@@ -1979,6 +1981,10 @@ static const struct usb_device_id option_ids[] = {
 	  .driver_info = RSVD(3)},
 	{ USB_DEVICE_INTERFACE_CLASS(CINTERION_VENDOR_ID, CINTERION_PRODUCT_MV31_RMNET, 0xff),
 	  .driver_info = RSVD(0)},
+	{ USB_DEVICE_INTERFACE_CLASS(CINTERION_VENDOR_ID, CINTERION_PRODUCT_MV31_2_MBIM, 0xff),
+	  .driver_info = RSVD(3)},
+	{ USB_DEVICE_INTERFACE_CLASS(CINTERION_VENDOR_ID, CINTERION_PRODUCT_MV31_2_RMNET, 0xff),
+	  .driver_info = RSVD(0)},
 	{ USB_DEVICE_INTERFACE_CLASS(CINTERION_VENDOR_ID, CINTERION_PRODUCT_MV32_WA, 0xff),
 	  .driver_info = RSVD(3)},
 	{ USB_DEVICE_INTERFACE_CLASS(CINTERION_VENDOR_ID, CINTERION_PRODUCT_MV32_WB, 0xff),
drivers/virtio/virtio_mmio.c +1 -0
index 56128b9c46eb..1dd396d4bebb 100644
@@ -688,6 +688,7 @@ static int vm_cmdline_set(const char *device,
 	if (!vm_cmdline_parent_registered) {
 		err = device_register(&vm_cmdline_parent);
 		if (err) {
+			put_device(&vm_cmdline_parent);
 			pr_err("Failed to register parent device!\n");
 			return err;
 		}
drivers/virtio/virtio_pci_common.c +1 -2
index d724f676608b..5046efcffb4c 100644
@@ -254,8 +254,7 @@ void vp_del_vqs(struct virtio_device *vdev)
 
 	if (vp_dev->msix_affinity_masks) {
 		for (i = 0; i < vp_dev->msix_vectors; i++)
-			if (vp_dev->msix_affinity_masks[i])
-				free_cpumask_var(vp_dev->msix_affinity_masks[i]);
+			free_cpumask_var(vp_dev->msix_affinity_masks[i]);
 	}
 
 	if (vp_dev->msix_enabled) {
fs/9p/cache.c +2 -2
index 1c8dc696d516..cebba4eaa0b5 100644
@@ -62,12 +62,12 @@ void v9fs_cache_inode_get_cookie(struct inode *inode)
 	version = cpu_to_le32(v9inode->qid.version);
 	path = cpu_to_le64(v9inode->qid.path);
 	v9ses = v9fs_inode2v9ses(inode);
-	v9inode->netfs_ctx.cache =
+	v9inode->netfs.cache =
 		fscache_acquire_cookie(v9fs_session_cache(v9ses),
 				       0,
 				       &path, sizeof(path),
 				       &version, sizeof(version),
-				       i_size_read(&v9inode->vfs_inode));
+				       i_size_read(&v9inode->netfs.inode));
 
 	p9_debug(P9_DEBUG_FSC, "inode %p get cookie %p\n",
 		 inode, v9fs_inode_cookie(v9inode));
fs/9p/v9fs.c +1 -1
index e28ddf763b3b..0129de2ea31a 100644
@@ -625,7 +625,7 @@ static void v9fs_inode_init_once(void *foo)
 	struct v9fs_inode *v9inode = (struct v9fs_inode *)foo;
 
 	memset(&v9inode->qid, 0, sizeof(v9inode->qid));
-	inode_init_once(&v9inode->vfs_inode);
+	inode_init_once(&v9inode->netfs.inode);
 }
 
 /**
fs/9p/v9fs.h +3 -7
index ec0e8df3b2eb..1b219c21d15e 100644
@@ -109,11 +109,7 @@ struct v9fs_session_info {
 #define V9FS_INO_INVALID_ATTR 0x01
 
 struct v9fs_inode {
-	struct {
-		/* These must be contiguous */
-		struct inode	vfs_inode;	/* the VFS's inode record */
-		struct netfs_i_context netfs_ctx; /* Netfslib context */
-	};
+	struct netfs_inode netfs; /* Netfslib context and vfs inode */
 	struct p9_qid qid;
 	unsigned int cache_validity;
 	struct p9_fid *writeback_fid;
@@ -122,13 +118,13 @@ struct v9fs_inode {
 
 static inline struct v9fs_inode *V9FS_I(const struct inode *inode)
 {
-	return container_of(inode, struct v9fs_inode, vfs_inode);
+	return container_of(inode, struct v9fs_inode, netfs.inode);
 }
 
 static inline struct fscache_cookie *v9fs_inode_cookie(struct v9fs_inode *v9inode)
 {
 #ifdef CONFIG_9P_FSCACHE
-	return netfs_i_cookie(&v9inode->vfs_inode);
+	return netfs_i_cookie(&v9inode->netfs.inode);
 #else
 	return NULL;
 #endif
fs/9p/vfs_addr.c +1 -1
index 501128188343..595875228672 100644
@@ -141,7 +141,7 @@ static void v9fs_write_to_cache_done(void *priv, ssize_t transferred_or_error,
 	    transferred_or_error != -ENOBUFS) {
 		version = cpu_to_le32(v9inode->qid.version);
 		fscache_invalidate(v9fs_inode_cookie(v9inode), &version,
-				   i_size_read(&v9inode->vfs_inode), 0);
+				   i_size_read(&v9inode->netfs.inode), 0);
 	}
 }
 
fs/9p/vfs_inode.c +2 -2
index 55367ecb9442..e660c6348b9d 100644
@@ -234,7 +234,7 @@ struct inode *v9fs_alloc_inode(struct super_block *sb)
 	v9inode->writeback_fid = NULL;
 	v9inode->cache_validity = 0;
 	mutex_init(&v9inode->v_mutex);
-	return &v9inode->vfs_inode;
+	return &v9inode->netfs.inode;
 }
 
 /**
@@ -252,7 +252,7 @@ void v9fs_free_inode(struct inode *inode)
  */
 static void v9fs_set_netfs_context(struct inode *inode)
 {
-	netfs_i_context_init(inode, &v9fs_req_ops);
+	netfs_inode_init(inode, &v9fs_req_ops);
 }
 
 int v9fs_init_inode(struct v9fs_session_info *v9ses,
fs/afs/callback.c +1 -1
index 1b4d5809808d..a484fa642808 100644
@@ -30,7 +30,7 @@ void afs_invalidate_mmap_work(struct work_struct *work)
 {
 	struct afs_vnode *vnode = container_of(work, struct afs_vnode, cb_work);
 
-	unmap_mapping_pages(vnode->vfs_inode.i_mapping, 0, 0, false);
+	unmap_mapping_pages(vnode->netfs.inode.i_mapping, 0, 0, false);
 }
 
 void afs_server_init_callback_work(struct work_struct *work)
fs/afs/dir.c +16 -16
index bdac73554e6e..5cbb5234f7ce 100644
@@ -109,7 +109,7 @@ struct afs_lookup_cookie {
  */
 static void afs_dir_read_cleanup(struct afs_read *req)
 {
-	struct address_space *mapping = req->vnode->vfs_inode.i_mapping;
+	struct address_space *mapping = req->vnode->netfs.inode.i_mapping;
 	struct folio *folio;
 	pgoff_t last = req->nr_pages - 1;
 
@@ -153,7 +153,7 @@ static bool afs_dir_check_folio(struct afs_vnode *dvnode, struct folio *folio,
 		block = kmap_local_folio(folio, offset);
 		if (block->hdr.magic != AFS_DIR_MAGIC) {
 			printk("kAFS: %s(%lx): [%llx] bad magic %zx/%zx is %04hx\n",
-			       __func__, dvnode->vfs_inode.i_ino,
+			       __func__, dvnode->netfs.inode.i_ino,
 			       pos, offset, size, ntohs(block->hdr.magic));
 			trace_afs_dir_check_failed(dvnode, pos + offset, i_size);
 			kunmap_local(block);
@@ -183,7 +183,7 @@ static bool afs_dir_check_folio(struct afs_vnode *dvnode, struct folio *folio,
 static void afs_dir_dump(struct afs_vnode *dvnode, struct afs_read *req)
 {
 	union afs_xdr_dir_block *block;
-	struct address_space *mapping = dvnode->vfs_inode.i_mapping;
+	struct address_space *mapping = dvnode->netfs.inode.i_mapping;
 	struct folio *folio;
 	pgoff_t last = req->nr_pages - 1;
 	size_t offset, size;
@@ -217,7 +217,7 @@ static void afs_dir_dump(struct afs_vnode *dvnode, struct afs_read *req)
  */
 static int afs_dir_check(struct afs_vnode *dvnode, struct afs_read *req)
 {
-	struct address_space *mapping = dvnode->vfs_inode.i_mapping;
+	struct address_space *mapping = dvnode->netfs.inode.i_mapping;
 	struct folio *folio;
 	pgoff_t last = req->nr_pages - 1;
 	int ret = 0;
@@ -269,7 +269,7 @@ static int afs_dir_open(struct inode *inode, struct file *file)
 static struct afs_read *afs_read_dir(struct afs_vnode *dvnode, struct key *key)
 	__acquires(&dvnode->validate_lock)
 {
-	struct address_space *mapping = dvnode->vfs_inode.i_mapping;
+	struct address_space *mapping = dvnode->netfs.inode.i_mapping;
 	struct afs_read *req;
 	loff_t i_size;
 	int nr_pages, i;
@@ -287,7 +287,7 @@ static struct afs_read *afs_read_dir(struct afs_vnode *dvnode, struct key *key)
 	req->cleanup = afs_dir_read_cleanup;
 
 expand:
-	i_size = i_size_read(&dvnode->vfs_inode);
+	i_size = i_size_read(&dvnode->netfs.inode);
 	if (i_size < 2048) {
 		ret = afs_bad(dvnode, afs_file_error_dir_small);
 		goto error;
@@ -305,7 +305,7 @@ static struct afs_read *afs_read_dir(struct afs_vnode *dvnode, struct key *key)
 	req->actual_len = i_size; /* May change */
 	req->len = nr_pages * PAGE_SIZE; /* We can ask for more than there is */
 	req->data_version = dvnode->status.data_version; /* May change */
-	iov_iter_xarray(&req->def_iter, READ, &dvnode->vfs_inode.i_mapping->i_pages,
+	iov_iter_xarray(&req->def_iter, READ, &dvnode->netfs.inode.i_mapping->i_pages,
 			0, i_size);
 	req->iter = &req->def_iter;
 
@@ -897,7 +897,7 @@ static struct inode *afs_do_lookup(struct inode *dir, struct dentry *dentry,
 
 out_op:
 	if (op->error == 0) {
-		inode = &op->file[1].vnode->vfs_inode;
+		inode = &op->file[1].vnode->netfs.inode;
 		op->file[1].vnode = NULL;
 	}
 
@@ -1139,7 +1139,7 @@ static int afs_d_revalidate(struct dentry *dentry, unsigned int flags)
 	afs_stat_v(dir, n_reval);
 
 	/* search the directory for this vnode */
-	ret = afs_do_lookup_one(&dir->vfs_inode, dentry, &fid, key, &dir_version);
+	ret = afs_do_lookup_one(&dir->netfs.inode, dentry, &fid, key, &dir_version);
 	switch (ret) {
 	case 0:
 		/* the filename maps to something */
@@ -1170,7 +1170,7 @@ static int afs_d_revalidate(struct dentry *dentry, unsigned int flags)
 			_debug("%pd: file deleted (uq %u -> %u I:%u)",
 			       dentry, fid.unique,
 			       vnode->fid.unique,
-			       vnode->vfs_inode.i_generation);
+			       vnode->netfs.inode.i_generation);
 			goto not_found;
 		}
 		goto out_valid;
@@ -1368,7 +1368,7 @@ static void afs_dir_remove_subdir(struct dentry *dentry)
 	if (d_really_is_positive(dentry)) {
 		struct afs_vnode *vnode = AFS_FS_I(d_inode(dentry));
 
-		clear_nlink(&vnode->vfs_inode);
+		clear_nlink(&vnode->netfs.inode);
 		set_bit(AFS_VNODE_DELETED, &vnode->flags);
 		clear_bit(AFS_VNODE_CB_PROMISED, &vnode->flags);
 		clear_bit(AFS_VNODE_DIR_VALID, &vnode->flags);
@@ -1487,8 +1487,8 @@ static void afs_dir_remove_link(struct afs_operation *op)
 		/* Already done */
 	} else if (test_bit(AFS_VNODE_DIR_VALID, &dvnode->flags)) {
 		write_seqlock(&vnode->cb_lock);
-		drop_nlink(&vnode->vfs_inode);
-		if (vnode->vfs_inode.i_nlink == 0) {
+		drop_nlink(&vnode->netfs.inode);
+		if (vnode->netfs.inode.i_nlink == 0) {
 			set_bit(AFS_VNODE_DELETED, &vnode->flags);
 			__afs_break_callback(vnode, afs_cb_break_for_unlink);
 		}
@@ -1504,7 +1504,7 @@ static void afs_dir_remove_link(struct afs_operation *op)
 			op->error = ret;
 	}
 
-	_debug("nlink %d [val %d]", vnode->vfs_inode.i_nlink, op->error);
+	_debug("nlink %d [val %d]", vnode->netfs.inode.i_nlink, op->error);
 }
 
 static void afs_unlink_success(struct afs_operation *op)
@@ -1680,8 +1680,8 @@ static void afs_link_success(struct afs_operation *op)
 	afs_update_dentry_version(op, dvp, op->dentry);
 	if (op->dentry_2->d_parent == op->dentry->d_parent)
 		afs_update_dentry_version(op, dvp, op->dentry_2);
-	ihold(&vp->vnode->vfs_inode);
-	d_instantiate(op->dentry, &vp->vnode->vfs_inode);
+	ihold(&vp->vnode->netfs.inode);
+	d_instantiate(op->dentry, &vp->vnode->netfs.inode);
 }
 
 static void afs_link_put(struct afs_operation *op)
fs/afs/dir_edit.c +5 -5
index d98e109ecee9..0ab7752d1b75 100644
@@ -109,7 +109,7 @@ static void afs_clear_contig_bits(union afs_xdr_dir_block *block,
  */
 static struct folio *afs_dir_get_folio(struct afs_vnode *vnode, pgoff_t index)
 {
-	struct address_space *mapping = vnode->vfs_inode.i_mapping;
+	struct address_space *mapping = vnode->netfs.inode.i_mapping;
 	struct folio *folio;
 
 	folio = __filemap_get_folio(mapping, index,
@@ -216,7 +216,7 @@ void afs_edit_dir_add(struct afs_vnode *vnode,
 
 	_enter(",,{%d,%s},", name->len, name->name);
 
-	i_size = i_size_read(&vnode->vfs_inode);
+	i_size = i_size_read(&vnode->netfs.inode);
 	if (i_size > AFS_DIR_BLOCK_SIZE * AFS_DIR_MAX_BLOCKS ||
 	    (i_size & (AFS_DIR_BLOCK_SIZE - 1))) {
 		clear_bit(AFS_VNODE_DIR_VALID, &vnode->flags);
@@ -336,7 +336,7 @@ void afs_edit_dir_add(struct afs_vnode *vnode,
 	if (b < AFS_DIR_BLOCKS_WITH_CTR)
 		meta->meta.alloc_ctrs[b] -= need_slots;
 
-	inode_inc_iversion_raw(&vnode->vfs_inode);
+	inode_inc_iversion_raw(&vnode->netfs.inode);
 	afs_stat_v(vnode, n_dir_cr);
 	_debug("Insert %s in %u[%u]", name->name, b, slot);
 
@@ -383,7 +383,7 @@ void afs_edit_dir_remove(struct afs_vnode *vnode,
 
 	_enter(",,{%d,%s},", name->len, name->name);
 
-	i_size = i_size_read(&vnode->vfs_inode);
+	i_size = i_size_read(&vnode->netfs.inode);
 	if (i_size < AFS_DIR_BLOCK_SIZE ||
 	    i_size > AFS_DIR_BLOCK_SIZE * AFS_DIR_MAX_BLOCKS ||
 	    (i_size & (AFS_DIR_BLOCK_SIZE - 1))) {
@@ -463,7 +463,7 @@ void afs_edit_dir_remove(struct afs_vnode *vnode,
 	if (b < AFS_DIR_BLOCKS_WITH_CTR)
 		meta->meta.alloc_ctrs[b] += need_slots;
 
-	inode_set_iversion_raw(&vnode->vfs_inode, vnode->status.data_version);
+	inode_set_iversion_raw(&vnode->netfs.inode, vnode->status.data_version);
 	afs_stat_v(vnode, n_dir_rm);
 	_debug("Remove %s from %u[%u]", name->name, b, slot);
 
fs/afs/dir_silly.c +2 -2
index 45cfd50a9521..bb5807e87fa4 100644
@@ -131,7 +131,7 @@ int afs_sillyrename(struct afs_vnode *dvnode, struct afs_vnode *vnode,
 			goto out;
 	} while (!d_is_negative(sdentry));
 
-	ihold(&vnode->vfs_inode);
+	ihold(&vnode->netfs.inode);
 
 	ret = afs_do_silly_rename(dvnode, vnode, dentry, sdentry, key);
 	switch (ret) {
@@ -148,7 +148,7 @@ int afs_sillyrename(struct afs_vnode *dvnode, struct afs_vnode *vnode,
 		d_drop(sdentry);
 	}
 
-	iput(&vnode->vfs_inode);
+	iput(&vnode->netfs.inode);
 	dput(sdentry);
 out:
 	_leave(" = %d", ret);
fs/afs/dynroot.c +1 -1
index f120bcb8bf73..3a5bbffdf053 100644
@@ -76,7 +76,7 @@ struct inode *afs_iget_pseudo_dir(struct super_block *sb, bool root)
 	/* there shouldn't be an existing inode */
 	BUG_ON(!(inode->i_state & I_NEW));
 
-	netfs_i_context_init(inode, NULL);
+	netfs_inode_init(inode, NULL);
 	inode->i_size		= 0;
 	inode->i_mode		= S_IFDIR | S_IRUGO | S_IXUGO;
 	if (root) {
fs/afs/file.c +2 -2
index 26292a110a8f..fab8324833ba 100644
@@ -194,7 +194,7 @@ int afs_release(struct inode *inode, struct file *file)
 		afs_put_wb_key(af->wb);
 
 	if ((file->f_mode & FMODE_WRITE)) {
-		i_size = i_size_read(&vnode->vfs_inode);
+		i_size = i_size_read(&vnode->netfs.inode);
 		afs_set_cache_aux(vnode, &aux);
 		fscache_unuse_cookie(afs_vnode_cache(vnode), &aux, &i_size);
 	} else {
@@ -325,7 +325,7 @@ static void afs_issue_read(struct netfs_io_subrequest *subreq)
 	fsreq->iter	= &fsreq->def_iter;
 
 	iov_iter_xarray(&fsreq->def_iter, READ,
-			&fsreq->vnode->vfs_inode.i_mapping->i_pages,
+			&fsreq->vnode->netfs.inode.i_mapping->i_pages,
 			fsreq->pos, fsreq->len);
 
 	afs_fetch_data(fsreq->vnode, fsreq);
fs/afs/fs_operation.c +3 -3
index d222dfbe976b..7a3803ce3a22 100644
@@ -232,14 +232,14 @@ int afs_put_operation(struct afs_operation *op)
 	if (op->file[1].modification && op->file[1].vnode != op->file[0].vnode)
 		clear_bit(AFS_VNODE_MODIFYING, &op->file[1].vnode->flags);
 	if (op->file[0].put_vnode)
-		iput(&op->file[0].vnode->vfs_inode);
+		iput(&op->file[0].vnode->netfs.inode);
 	if (op->file[1].put_vnode)
-		iput(&op->file[1].vnode->vfs_inode);
+		iput(&op->file[1].vnode->netfs.inode);
 
 	if (op->more_files) {
 		for (i = 0; i < op->nr_files - 2; i++)
 			if (op->more_files[i].put_vnode)
-				iput(&op->more_files[i].vnode->vfs_inode);
+				iput(&op->more_files[i].vnode->netfs.inode);
 		kfree(op->more_files);
 	}
 
fs/afs/inode.c +19 -19
index 30b066299d39..22811e9eacf5 100644
@@ -58,7 +58,7 @@ static noinline void dump_vnode(struct afs_vnode *vnode, struct afs_vnode *paren
  */
 static void afs_set_netfs_context(struct afs_vnode *vnode)
 {
-	netfs_i_context_init(&vnode->vfs_inode, &afs_req_ops);
+	netfs_inode_init(&vnode->netfs.inode, &afs_req_ops);
 }
 
 /*
@@ -96,7 +96,7 @@ static int afs_inode_init_from_status(struct afs_operation *op,
 	inode->i_flags |= S_NOATIME;
 	inode->i_uid = make_kuid(&init_user_ns, status->owner);
 	inode->i_gid = make_kgid(&init_user_ns, status->group);
[… more lines in the raw message]

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

fs/afs/internal.h +9 -14
index 7b7ef945dc78..40518b585760 100644

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

fs/afs/super.c +3 -3
index 1fea195b0b27..95d713074dc8 100644

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

fs/afs/write.c +10 -11
index c1bc52ac7de1..270e41ac9af4 100644

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

fs/attr.c +20 -6
index 66899b6e9bd8..dbe996b0dedf 100644

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

fs/ceph/addr.c +2 -2
index adef10a6e5c7..11dbb1133a21 100644

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

fs/ceph/cache.c +2 -2
index ddea99922073..177d8e8d73fe 100644

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

fs/ceph/cache.h +1 -1
index 7255b790a4c1..26c6ae06e2f4 100644

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

fs/ceph/caps.c +52 -52

104 lines not on this page · raw message

fs/ceph/file.c +1 -1
index 8c8226c0feac..da59e836a06e 100644

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

fs/ceph/inode.c +5 -5
index 63113e2a4890..f7a99a7e53c2 100644

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

fs/ceph/mds_client.c +2 -2
index 8c249511344d..3f72ba137ff8 100644

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

fs/ceph/snap.c +4 -4
index 322ee5add942..864cdaa0d2bd 100644

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

fs/ceph/super.c +1 -1
index e6987d295079..612d8bc73ea9 100644

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

fs/ceph/super.h +3 -7
index 20ceab74e871..755a1ad26016 100644

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

fs/ceph/xattr.c +7 -7
index 8c2dc2c762a4..f141f5246163 100644

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

fs/cifs/cifsfs.c +4 -4
index 9b4fd7686699..26f0210d04bd 100644

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

fs/cifs/cifsglob.h +4 -8
index a6cade2aebd9..4247910682c4 100644

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

fs/cifs/file.c +4 -4
index d511a78383c3..58dce567ceaf 100644

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

fs/cifs/fscache.c +4 -4
index a638b29e9062..23ef56f55ce5 100644

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

fs/cifs/fscache.h +4 -4
index 52355c0912ae..ab9a51d0125c 100644

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

fs/cifs/inode.c +2 -2
index 2f9e7d2f81b6..81da81e18553 100644

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

fs/cifs/misc.c +2 -2
index 4abf36b3b345..14e8dfc83c7e 100644

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

fs/cifs/smb2ops.c +4 -4
index 6e26edbffc48..19f957785a73 100644

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

fs/ext4/mballoc.c +9 -0
index 87d85ce04d58..816448041db8 100644

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

fs/ext4/namei.c +2 -1
index e9cba12e5e12..4f0420b1ff3e 100644

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

fs/ext4/resize.c +10 -0
index 90a941d20dff..8b70a4701293 100644

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

fs/ext4/super.c +8 -8
index a0c79304f92f..552285de2c7b 100644

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

fs/io_uring.c +71 -26

97 lines not on this page · raw message

fs/netfs/buffered_read.c +3 -3
index 281a88a5b8dc..e8e3359a4c54 100644

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

fs/netfs/internal.h +1 -1
index b7b0e3d18d9e..43fac1b14e40 100644

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

fs/netfs/objects.c +1 -1
index e86107b30ba4..c6afa605b63b 100644

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

fs/nfs/callback_proc.c +1 -0
index c8520284dda7..c1eda73254e1 100644

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

fs/nfs/pnfs.c +15 -6
index 68a87be3e6f9..41a9b6b58fb9 100644

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

fs/nfs/pnfs.h +1 -0
index 07f11489e4e9..f331f067691b 100644

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

fs/quota/dquot.c +10 -0
index a74aef99bd3d..09d1307959d0 100644

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

include/linux/backing-dev.h +2 -0
index 87ce24d238f3..8c2eed1b69c1 100644

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

include/linux/netfs.h +16 -25

41 lines not on this page · raw message

include/linux/objtool.h +6 -0
index 586d35720f13..c81ea2264ad8 100644

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

include/linux/skbuff.h +1 -2
index 3a30cae8b0a5..2394441fa3dd 100644

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

include/net/ipv6.h +2 -2
index 213612f1680c..023435ce1606 100644

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

init/Kconfig +9 -0
index b19e2eeaae80..fa63cc019ebf 100644

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

kernel/auditsc.c +1 -1
index f3a2abd6d1a1..3a8c9d744800 100644

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

kernel/cfi.c +16 -6
index 9594cfd1cf2c..08102d19ec15 100644

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

kernel/dma/debug.c +1 -1
index ac740630c79c..2caafd13f8aa 100644

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

kernel/sched/core.c +33 -3
index e58d894df207..dd11daa7a84b 100644

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

kernel/sched/sched.h +5 -0
index 0d2b6b758f32..84bba67c92dc 100644

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

kernel/trace/bpf_trace.c +2 -2
index 6b58fc6813df..41d0d9657fa1 100644

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

lib/Kconfig +3 -0
index 087e06b4cdfd..55f0bba8f8c0 100644

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

lib/Makefile +1 -0
index 08053df16c7c..60843ab661ba 100644

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

lib/crypto/Kconfig +1 -0
index 379a66d7f504..017cba125386 100644

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

lib/memneq.c new file +176 -0

176 lines not on this page · raw message

mm/backing-dev.c +2 -9
index 7176af65b103..e262739a0a23 100644

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

net/appletalk/ddp.c +1 -2
index bf5736c1d458..a06f4d4a6f47 100644

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

net/atm/common.c +1 -1
index 1cfa9bf1d187..d0c8ab7ff8f6 100644

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

net/ax25/af_ax25.c +28 -6
index 289f355e1853..4c7030ed8d33 100644

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

net/bluetooth/af_bluetooth.c +1 -2
index a0cb2e3da8d4..62705734343b 100644

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

net/bluetooth/hci_sock.c +1 -2
index 33b3c0ffc339..189e3115c8c6 100644

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

net/caif/caif_socket.c +1 -1
index 2b8892d502f7..251e666ba9a2 100644

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

net/can/bcm.c +1 -4
index 95d209b52e6a..64c07e650bb4 100644

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

net/can/isotp.c +1 -3
index 1e7c6a460ef9..35a1ae61744c 100644

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

net/can/j1939/socket.c +1 -1
index 6dff4510687a..0bb4fd3f6264 100644

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

net/can/raw.c +1 -5
index 7105fa4824e4..0cf728dcff36 100644

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

net/core/datagram.c +2 -3
index ee290776c661..70126d15ca6e 100644

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

net/ieee802154/socket.c +4 -2
index 3b2366a88c3c..a725dd9bbda8 100644

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

net/ipv4/ping.c +2 -1
index aa9a11b20d18..4e5ceca7ff7f 100644

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

net/ipv4/raw.c +2 -1
index 9f97b9cbf7b3..c9dd9603f2e7 100644

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

net/ipv6/ip6_output.c +3 -3
index fa63ef2bd99c..87067e0ddaa3 100644

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

net/ipv6/raw.c +2 -1
index c51d5ce3711c..8bb41f3b246a 100644

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

net/iucv/af_iucv.c +1 -2
index a1760add5bf1..a0385ddbffcf 100644

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

net/key/af_key.c +1 -1
index d93bde657359..c249b84efbb2 100644

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

net/l2tp/l2tp_ip.c +2 -1
index b3edafa5fba4..c6a5cc2d88e7 100644

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

net/l2tp/l2tp_ip6.c +5 -3
index 96f975777438..8f76e647adbb 100644

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

net/l2tp/l2tp_ppp.c +1 -2
index bf35710127dd..8be1fdc68a0b 100644

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

net/mctp/af_mctp.c +1 -1
index e22b0cbb2f35..221863afc4b1 100644

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

net/mctp/test/route-test.c +4 -4
index 61205cf40074..24df29e135ed 100644

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

net/netlink/af_netlink.c +1 -2
index 73e9c0a9c187..0cd91f813a3b 100644

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

net/netrom/af_netrom.c +2 -1
index fa9dc2ba3941..6f7f4392cffb 100644

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

net/nfc/llcp_sock.c +1 -2
index 4ca35791c93b..77642d18a3b4 100644

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

net/nfc/rawsock.c +1 -2
index 0ca214ab5aef..8dd569765f96 100644

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

net/packet/af_packet.c +1 -1
index 002d2b9c69dd..243566129784 100644

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

net/phonet/datagram.c +2 -1
index 393e6aa7a592..3f2e62b63dd4 100644

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

net/phonet/pep.c +4 -2
index 65d463ad8770..441a26706592 100644

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

net/qrtr/af_qrtr.c +1 -2
index ec2322529727..5c2fb992803b 100644

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

net/rose/af_rose.c +2 -1
index 30a1cf4c16c6..bf2d986a6bc3 100644

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

net/sunrpc/clnt.c +1 -0
index e2c6eca0271b..b6781ada3aa8 100644

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

net/unix/af_unix.c +3 -2
index 4aed12e94221..6114d69b8a2d 100644

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

net/vmw_vsock/vmci_transport.c +1 -4
index b17dc9745188..b14f0ed7427b 100644

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

net/x25/af_x25.c +1 -2
index 3a171828638b..6bc2ac8d8146 100644

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

scripts/faddr2line +34 -11

45 lines not on this page · raw message

security/selinux/hooks.c +4 -7
index e9e959343de9..cac9368be4ce 100644

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

sound/hda/hdac_device.c +1 -0
index 3e9e9ac804f6..b7e5032b61c9 100644

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

sound/pci/hda/hda_intel.c +3 -0
index 0a83eb6b88b1..a77165bd92a9 100644

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

sound/pci/hda/patch_hdmi.c +1 -0
index 31fe41795571..6c209cd26c0c 100644

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

sound/pci/hda/patch_realtek.c +14 -0
index 8d2d29880716..588d4a59c8d9 100644

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

sound/soc/codecs/cs35l36.c +2 -1
index d83c1b318c1c..0accdb45ed72 100644

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

sound/soc/codecs/cs42l51.c +1 -1
index e9c3cb4e2bfc..b9c262a15edf 100644

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

sound/soc/codecs/cs42l52.c +5 -3
index 80161151b3f2..c19ad3c24702 100644

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

sound/soc/codecs/cs42l56.c +2 -2
index 3cf8a0b4478c..b39c25409c23 100644

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

sound/soc/codecs/cs53l30.c +8 -8
index f2087bd38dbc..c2912ad3851b 100644

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

sound/soc/codecs/es8328.c +4 -1
index 3f00ead97006..dd53dfd87b04 100644

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

sound/soc/codecs/nau8822.c +4 -0
index 58123390c7a3..b436e532993d 100644

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

sound/soc/codecs/nau8822.h +3 -0
index 489191ff187e..b45d42c15de6 100644

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

sound/soc/codecs/wm8962.c +1 -0
index 2c41d31956aa..f622a6bbd2fb 100644

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

sound/soc/codecs/wm_adsp.c +1 -1
index e32c8ded181d..9cfd4f18493f 100644

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

sound/soc/intel/boards/sof_cirrus_common.c +36 -4
index e71d74ec1b0b..f4192df962d6 100644

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

sound/soc/qcom/lpass-platform.c +1 -1
index 74d62f377dfd..ae2a7837e5cc 100644

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

tools/include/linux/objtool.h +6 -0
index 586d35720f13..c81ea2264ad8 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.