Skip to contentSkip to conversation

Linux 5.15.140

DISCUSSION Greg Kroah-Hartman 1 participant 2 messages Nov 28, 2023 Stable branch

lore
Share & tools
lore

Greg Kroah-Hartman

author maintainer
#0 lore raw

I'm announcing the release of the 5.15.140 kernel.

All users of the 5.15 kernel series must upgrade.

The updated 5.15.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-5.15.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

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

 Makefile                                                   |    2 
 arch/arm/include/asm/exception.h                           |    4 
 arch/arm64/Kconfig                                         |    2 
 arch/arm64/boot/dts/freescale/fsl-ls208xa.dtsi             |   46 +-
 arch/arm64/boot/dts/qcom/ipq6018.dtsi                      |   15 
 arch/parisc/include/uapi/asm/pdc.h                         |    1 
 arch/parisc/kernel/entry.S                                 |    7 
 arch/parisc/kernel/head.S                                  |    5 
 arch/powerpc/perf/core-book3s.c                            |    5 
 arch/powerpc/platforms/powernv/opal-prd.c                  |   17 
 arch/powerpc/platforms/pseries/iommu.c                     |   11 
 arch/riscv/kernel/probes/simulate-insn.c                   |    2 
 arch/s390/mm/page-states.c                                 |    6 
 arch/x86/crypto/sha1_ssse3_glue.c                          |   12 
 arch/x86/crypto/sha256_ssse3_glue.c                        |   12 
 arch/x86/include/asm/msr-index.h                           |    1 
 arch/x86/include/asm/numa.h                                |    7 
 arch/x86/kernel/cpu/hygon.c                                |    8 
 arch/x86/kvm/hyperv.c                                      |   10 
 arch/x86/kvm/x86.c                                         |    2 
 arch/x86/mm/numa.c                                         |    7 
 crypto/pcrypt.c                                            |    4 
 drivers/acpi/acpi_fpdt.c                                   |   45 ++
 drivers/acpi/resource.c                                    |   12 
 drivers/atm/iphase.c                                       |   20 -
 drivers/base/dd.c                                          |    4 
 drivers/base/regmap/regcache.c                             |   30 +
 drivers/block/virtio_blk.c                                 |    4 
 drivers/bluetooth/btusb.c                                  |   15 
 drivers/clk/qcom/gcc-ipq6018.c                             |    6 
 drivers/clk/qcom/gcc-ipq8074.c                             |    6 
 drivers/clk/socfpga/stratix10-clk.h                        |    4 
 drivers/clocksource/timer-atmel-tcb.c                      |    1 
 drivers/clocksource/timer-imx-gpt.c                        |   18 -
 drivers/cpufreq/cpufreq_stats.c                            |   14 
 drivers/dma/stm32-mdma.c                                   |    4 
 drivers/firmware/qcom_scm.c                                |    7 
 drivers/gpu/drm/amd/amdgpu/amdgpu_bios.c                   |    5 
 drivers/gpu/drm/amd/amdgpu/amdgpu_bo_list.c                |    1 
 drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c                |    6 
 drivers/gpu/drm/amd/amdgpu/amdgpu_device.c                 |    3 
 drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c                    |    9 
 drivers/gpu/drm/amd/amdgpu/amdgpu_vkms.c                   |    2 
 drivers/gpu/drm/amd/amdkfd/kfd_svm.c                       |   13 
 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c          |   13 
 drivers/gpu/drm/amd/display/dc/core/dc.c                   |   12 
 drivers/gpu/drm/amd/display/dc/core/dc_stream.c            |    4 
 drivers/gpu/drm/amd/display/dc/dc.h                        |    5 
 drivers/gpu/drm/amd/display/dmub/dmub_srv.h                |   22 -
 drivers/gpu/drm/amd/display/dmub/src/dmub_srv.c            |   32 +
 drivers/gpu/drm/amd/include/pptable.h                      |    4 
 drivers/gpu/drm/amd/pm/amdgpu_pm.c                         |    8 
 drivers/gpu/drm/amd/pm/powerplay/hwmgr/pptable_v1_0.h      |   16 
 drivers/gpu/drm/arm/display/komeda/komeda_pipeline_state.c |    9 
 drivers/gpu/drm/i915/gem/i915_gem_context.c                |    1 
 drivers/gpu/drm/i915/i915_perf.c                           |   15 
 drivers/gpu/drm/msm/dp/dp_panel.c                          |   21 -
 drivers/gpu/drm/panel/panel-arm-versatile.c                |    2 
 drivers/gpu/drm/panel/panel-sitronix-st7703.c              |   25 -
 drivers/gpu/drm/panel/panel-tpo-tpg110.c                   |    2 
 drivers/gpu/drm/qxl/qxl_display.c                          |    3 
 drivers/gpu/drm/vmwgfx/vmwgfx_surface.c                    |    4 
 drivers/hid/hid-ids.h                                      |    1 
 drivers/hid/hid-lenovo.c                                   |   68 ++-
 drivers/hid/hid-quirks.c                                   |    1 
 drivers/i2c/busses/i2c-designware-master.c                 |   19 -
 drivers/i2c/busses/i2c-i801.c                              |   19 -
 drivers/i2c/busses/i2c-pxa.c                               |   76 +++-
 drivers/i2c/busses/i2c-sun6i-p2wi.c                        |    5 
 drivers/i2c/i2c-core.h                                     |    2 
 drivers/i2c/i2c-dev.c                                      |    4 
 drivers/i3c/master/i3c-master-cdns.c                       |    6 
 drivers/i3c/master/mipi-i3c-hci/dat_v1.c                   |   29 +
 drivers/i3c/master/mipi-i3c-hci/dma.c                      |    2 
 drivers/i3c/master/svc-i3c-master.c                        |   45 ++
 drivers/infiniband/hw/hfi1/pcie.c                          |    9 
 drivers/input/joystick/xpad.c                              |    1 
 drivers/mcb/mcb-core.c                                     |    1 
 drivers/mcb/mcb-parse.c                                    |    2 
 drivers/media/cec/platform/Makefile                        |    2 
 drivers/media/i2c/ccs/ccs-core.c                           |    2 
 drivers/media/i2c/ccs/ccs-quirk.h                          |    4 
 drivers/media/pci/cobalt/cobalt-driver.c                   |   11 
 drivers/media/platform/cadence/cdns-csi2rx.c               |    7 
 drivers/media/platform/qcom/camss/camss-vfe-170.c          |   22 -
 drivers/media/platform/qcom/camss/camss-vfe.c              |    5 
 drivers/media/platform/qcom/camss/camss.c                  |   12 
 drivers/media/platform/qcom/venus/hfi_msgs.c               |    2 
 drivers/media/platform/qcom/venus/hfi_parser.c             |   15 
 drivers/media/platform/qcom/venus/hfi_venus.c              |   10 
 drivers/media/rc/imon.c                                    |    6 
 drivers/media/rc/ir-sharp-decoder.c                        |    8 
 drivers/media/rc/lirc_dev.c                                |    6 
 drivers/media/test-drivers/vivid/vivid-rds-gen.c           |    2 
 drivers/media/usb/gspca/cpia1.c                            |    3 
 drivers/misc/pci_endpoint_test.c                           |    4 
 drivers/mmc/host/meson-gx-mmc.c                            |    1 
 drivers/mmc/host/sdhci-pci-gli.c                           |   22 +
 drivers/mmc/host/sdhci_am654.c                             |    2 
 drivers/mmc/host/vub300.c                                  |    1 
 drivers/mtd/chips/cfi_cmdset_0001.c                        |   20 +
 drivers/net/bonding/bond_main.c                            |    6 
 drivers/net/dsa/lan9303_mdio.c                             |    4 
 drivers/net/ethernet/atheros/atl1c/atl1c.h                 |    3 
 drivers/net/ethernet/atheros/atl1c/atl1c_main.c            |   67 ---
 drivers/net/ethernet/cortina/gemini.c                      |   45 +-
 drivers/net/ethernet/cortina/gemini.h                      |    4 
 drivers/net/ethernet/hisilicon/hns3/hclge_mbx.h            |   47 ++
 drivers/net/ethernet/hisilicon/hns3/hns3_enet.c            |    2 
 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c    |   33 +
 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_mbx.c     |   62 +--
 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_trace.h   |    2 
 drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c  |   29 +
 drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.h  |    3 
 drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_mbx.c   |   87 ++--
 drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_trace.h |    2 
 drivers/net/ethernet/mellanox/mlx5/core/en/mod_hdr.c       |   47 ++
 drivers/net/ethernet/mellanox/mlx5/core/en/mod_hdr.h       |   13 
 drivers/net/ethernet/mellanox/mlx5/core/en/reporter_rx.c   |    4 
 drivers/net/ethernet/mellanox/mlx5/core/en/tc/sample.c     |    5 
 drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c         |   25 -
 drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun.c        |   30 -
 drivers/net/ethernet/mellanox/mlx5/core/en_rep.c           |   12 
 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c            |  234 +++++--------
 drivers/net/ethernet/mellanox/mlx5/core/en_tc.h            |    5 
 drivers/net/ethernet/mellanox/mlx5/core/esw/indir_table.c  |    5 
 drivers/net/ethernet/realtek/r8169_main.c                  |   10 
 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c          |    2 
 drivers/net/ipvlan/ipvlan_core.c                           |   41 +-
 drivers/net/macvlan.c                                      |    2 
 drivers/net/phy/phylink.c                                  |    1 
 drivers/net/ppp/ppp_synctty.c                              |    6 
 drivers/net/wireless/ath/ath10k/debug.c                    |    2 
 drivers/net/wireless/ath/ath10k/snoc.c                     |   18 -
 drivers/net/wireless/ath/ath11k/dp_rx.c                    |    8 
 drivers/net/wireless/ath/ath11k/wmi.c                      |   12 
 drivers/net/wireless/ath/ath9k/debug.c                     |    2 
 drivers/net/wireless/ath/ath9k/htc_drv_debug.c             |    2 
 drivers/net/wireless/intel/iwlwifi/mvm/tx.c                |   14 
 drivers/net/wireless/mac80211_hwsim.c                      |    2 
 drivers/net/wireless/microchip/wilc1000/wlan.c             |    2 
 drivers/pci/controller/dwc/pci-exynos.c                    |    4 
 drivers/pci/controller/dwc/pci-keystone.c                  |    8 
 drivers/pci/controller/dwc/pcie-tegra194.c                 |    9 
 drivers/pci/pci-acpi.c                                     |    2 
 drivers/pci/pci-sysfs.c                                    |   10 
 drivers/pci/pci.c                                          |   13 
 drivers/pci/pcie/aspm.c                                    |    2 
 drivers/pci/quirks.c                                       |   35 +
 drivers/platform/x86/thinkpad_acpi.c                       |    1 
 drivers/ptp/ptp_chardev.c                                  |    3 
 drivers/ptp/ptp_clock.c                                    |    5 
 drivers/ptp/ptp_private.h                                  |    8 
 drivers/ptp/ptp_sysfs.c                                    |    3 
 drivers/s390/crypto/ap_bus.c                               |    4 
 drivers/scsi/hisi_sas/hisi_sas_v3_hw.c                     |   13 
 drivers/scsi/ibmvscsi/ibmvfc.c                             |  124 ++++++
 drivers/scsi/libfc/fc_lport.c                              |    6 
 drivers/scsi/megaraid/megaraid_sas_base.c                  |    4 
 drivers/scsi/mpt3sas/mpt3sas_base.c                        |    4 
 drivers/scsi/qla2xxx/qla_os.c                              |   12 
 drivers/tty/hvc/hvc_xen.c                                  |   39 +-
 drivers/tty/serial/meson_uart.c                            |   25 -
 drivers/tty/sysrq.c                                        |    3 
 drivers/tty/vcc.c                                          |   16 
 drivers/usb/gadget/function/f_ncm.c                        |   27 -
 drivers/usb/host/xhci-pci.c                                |    4 
 drivers/watchdog/sbsa_gwdt.c                               |    4 
 drivers/xen/events/events_base.c                           |    4 
 fs/9p/xattr.c                                              |    5 
 fs/btrfs/delalloc-space.c                                  |    3 
 fs/cifs/cifs_spnego.c                                      |    4 
 fs/cifs/smb2transport.c                                    |    5 
 fs/exfat/namei.c                                           |   29 +
 fs/ext4/acl.h                                              |    5 
 fs/ext4/extents_status.c                                   |    4 
 fs/ext4/resize.c                                           |   23 -
 fs/f2fs/compress.c                                         |    2 
 fs/gfs2/inode.c                                            |   14 
 fs/gfs2/quota.c                                            |   11 
 fs/gfs2/super.c                                            |    2 
 fs/jbd2/recovery.c                                         |    8 
 fs/jfs/jfs_dmap.c                                          |   23 +
 fs/jfs/jfs_imap.c                                          |    5 
 fs/ksmbd/smbacl.c                                          |   29 +
 fs/nfs/nfs4proc.c                                          |    5 
 fs/nfsd/nfs4state.c                                        |    2 
 fs/overlayfs/super.c                                       |    2 
 fs/proc/proc_sysctl.c                                      |    1 
 fs/quota/dquot.c                                           |   14 
 fs/xfs/libxfs/xfs_dir2_leaf.c                              |    9 
 fs/xfs/libxfs/xfs_inode_fork.c                             |    1 
 fs/xfs/libxfs/xfs_log_recover.h                            |   14 
 fs/xfs/libxfs/xfs_trans_resv.c                             |    2 
 fs/xfs/xfs_attr_inactive.c                                 |    8 
 fs/xfs/xfs_buf_item_recover.c                              |   66 +++
 fs/xfs/xfs_error.c                                         |    9 
 fs/xfs/xfs_inode.c                                         |    4 
 fs/xfs/xfs_log.c                                           |    9 
 fs/xfs/xfs_log_priv.h                                      |    3 
 fs/xfs/xfs_log_recover.c                                   |   44 +-
 fs/xfs/xfs_qm.c                                            |    7 
 fs/xfs/xfs_reflink.c                                       |  197 +++++++++-
 fs/xfs/xfs_sysfs.h                                         |    7 
 include/linux/ethtool.h                                    |    4 
 include/linux/lsm_hook_defs.h                              |    4 
 include/linux/preempt.h                                    |   36 +-
 include/linux/pwm.h                                        |    4 
 include/linux/string.h                                     |   40 ++
 include/linux/sunrpc/clnt.h                                |    1 
 include/linux/trace_events.h                               |    4 
 include/linux/trace_recursion.h                            |    8 
 include/linux/workqueue.h                                  |   46 ++
 include/net/inet_connection_sock.h                         |    2 
 include/net/inet_hashtables.h                              |   42 --
 include/net/netfilter/nf_tables.h                          |   19 -
 include/net/sock.h                                         |   26 +
 include/sound/soc-card.h                                   |   37 ++
 include/sound/soc.h                                        |   11 
 io_uring/io_uring.c                                        |   18 -
 kernel/audit_watch.c                                       |    9 
 kernel/bpf/core.c                                          |    6 
 kernel/bpf/verifier.c                                      |    9 
 kernel/debug/debug_core.c                                  |    3 
 kernel/events/internal.h                                   |    7 
 kernel/events/ring_buffer.c                                |    6 
 kernel/irq/generic-chip.c                                  |   25 +
 kernel/kexec.c                                             |    2 
 kernel/locking/test-ww_mutex.c                             |   20 -
 kernel/padata.c                                            |    2 
 kernel/power/snapshot.c                                    |   16 
 kernel/rcu/tree.c                                          |   21 +
 kernel/rcu/tree.h                                          |    4 
 kernel/rcu/tree_stall.h                                    |   20 +
 kernel/reboot.c                                            |    1 
 kernel/trace/ring_buffer.c                                 |    9 
 kernel/trace/trace.c                                       |   15 
 kernel/trace/trace.h                                       |    3 
 kernel/trace/trace_events.c                                |   43 +-
 kernel/trace/trace_events_filter.c                         |    3 
 kernel/trace/trace_events_synth.c                          |    2 
 kernel/watch_queue.c                                       |    2 
 kernel/watchdog.c                                          |    7 
 kernel/workqueue.c                                         |   20 -
 mm/cma.c                                                   |    2 
 mm/memcontrol.c                                            |    3 
 mm/memory_hotplug.c                                        |    2 
 net/9p/client.c                                            |    2 
 net/9p/trans_fd.c                                          |   13 
 net/bluetooth/hci_conn.c                                   |    6 
 net/bluetooth/hci_sysfs.c                                  |   23 -
 net/bridge/netfilter/nf_conntrack_bridge.c                 |    2 
 net/bridge/netfilter/nft_meta_bridge.c                     |    2 
 net/core/sock.c                                            |    2 
 net/dccp/proto.c                                           |    1 
 net/ipv4/inet_diag.c                                       |    5 
 net/ipv4/inet_hashtables.c                                 |  121 +-----
 net/ipv4/tcp.c                                             |    1 
 net/ipv4/tcp_ipv4.c                                        |   21 -
 net/ipv4/tcp_output.c                                      |    2 
 net/ipv6/inet6_hashtables.c                                |    5 
 net/mac80211/cfg.c                                         |    4 
 net/mptcp/mptcp_diag.c                                     |  105 +++++
 net/ncsi/ncsi-aen.c                                        |    5 
 net/netfilter/nf_tables_api.c                              |   53 ++
 net/netfilter/nft_byteorder.c                              |    6 
 net/netfilter/nft_meta.c                                   |    2 
 net/netfilter/nft_osf.c                                    |    2 
 net/netfilter/nft_socket.c                                 |    8 
 net/netfilter/nft_tproxy.c                                 |    6 
 net/netfilter/nft_xfrm.c                                   |    8 
 net/sunrpc/clnt.c                                          |    7 
 net/sunrpc/rpcb_clnt.c                                     |    4 
 net/sunrpc/xprtrdma/svc_rdma_recvfrom.c                    |    3 
 net/tipc/netlink_compat.c                                  |    1 
 net/unix/af_unix.c                                         |    9 
 scripts/gcc-plugins/randomize_layout_plugin.c              |   11 
 security/integrity/iint.c                                  |   48 ++
 security/integrity/ima/ima_api.c                           |    5 
 security/integrity/ima/ima_main.c                          |   16 
 security/integrity/integrity.h                             |    2 
 security/keys/trusted-keys/trusted_core.c                  |   20 -
 sound/core/info.c                                          |   21 -
 sound/hda/hdac_stream.c                                    |    6 
 sound/pci/hda/patch_realtek.c                              |   20 -
 sound/soc/codecs/lpass-wsa-macro.c                         |    3 
 sound/soc/ti/omap-mcbsp.c                                  |    6 
 tools/power/x86/turbostat/turbostat.c                      |    3 
 tools/testing/selftests/efivarfs/create-read.c             |    2 
 tools/testing/selftests/resctrl/cmt_test.c                 |    3 
 tools/testing/selftests/resctrl/mba_test.c                 |    2 
 tools/testing/selftests/resctrl/mbm_test.c                 |    2 
 292 files changed, 2756 insertions(+), 1345 deletions(-)

Ajay Singh (1):
wifi: wilc1000: use vmm_table as array in wilc struct

Al Viro (1):
gfs2: fix an oops in gfs2_permission

Alain Volmat (1):
dmaengine: stm32-mdma: correct desc prep when channel running

Alex Deucher (1):
drm/amdgpu: don't use ATRM for external devices

Alexander Sverdlin (1):
net: dsa: lan9303: consequently nested-lock physical MDIO

Alexey Kardashevskiy (1):
powerpc/pseries/ddw: simplify enable_ddw()

Amir Goldstein (1):
ima: annotate iint mutex to avoid lockdep false positive warnings

Anastasia Belova (1):
cifs: spnego: add ';' in HOST_KEY_LEN

Andreas Gruenbacher (1):
gfs2: Silence "suspicious RCU usage in gfs2_permission" warning

Andrew Lunn (1):
net: ethtool: Fix documentation of ethtool_sprintf()

Artem Lukyanov (1):

      Bluetooth: btusb: Add Realtek RTL8852BE support ID 0x0cb8:0xc559

Axel Lin (1):
i2c: sun6i-p2wi: Prevent potential division by zero

Bartosz Pawlowski (2):
PCI: Extract ATS disabling to a helper function
PCI: Disable ATS for specific Intel IPU E2000 devices

Baruch Siach (1):
net: stmmac: fix rx budget limit check

Bas Nieuwenhuizen (1):
drm/amd/pm: Handle non-terminated overdrive commands.

Basavaraj Natikar (1):
xhci: Enable RPM on controllers that support low-power states

Benjamin Bara (2):
kernel/reboot: emergency_restart: Set correct system_state
i2c: core: Run atomic i2c xfer when !preemptible

Billy Tsai (1):
i3c: master: mipi-i3c-hci: Fix a kernel panic for accessing DAT_data.

Bjorn Helgaas (1):
PCI: Use FIELD_GET() in Sapphire RX 5600 XT Pulse quirk

Bob Peterson (1):
gfs2: ignore negated quota changes

Brian Geffon (2):
PM: hibernate: Use __get_safe_page() rather than touching the list
PM: hibernate: Clean up sync_read handling in snapshot_write_next()

Bryan O'Donoghue (4):
media: qcom: camss: Fix pm_domain_on sequence in probe
media: qcom: camss: Fix vfe_get() error jump
media: qcom: camss: Fix VFE-17x vfe_disable_output()
media: qcom: camss: Fix missing vfe_lite clocks check

Catalin Marinas (1):
rcu: kmemleak: Ignore kmemleak false positives when RCU-freeing objects

Cezary Rojewski (1):
ALSA: hda: Fix possible null-ptr-deref when assigning a stream

Chandan Babu R (1):
xfs: Fix false ENOSPC when performing direct write on a delalloc extent in cow fork

Chandradeep Dey (1):
ALSA: hda/realtek - Enable internal speaker of ASUS K6500ZC

Chandrakanth patil (1):
scsi: megaraid_sas: Increase register read retry rount from 3 to 30 for selected registers

Chen Yu (1):
tools/power/turbostat: Enable the C-state Pre-wake printing

Christian König (1):
drm/amdgpu: fix error handling in amdgpu_bo_list_get()

Christian Marangi (1):
cpufreq: stats: Fix buffer overflow detection in trans_stats()

Chuck Lever (1):
svcrdma: Drop connection after an RDMA Read error

ChunHao Lin (1):
r8169: fix network lost after resume on DASH systems

Dan Carpenter (4):
pwm: Fix double shift bug
SUNRPC: Add an IS_ERR() check back to where it was
netfilter: nf_tables: fix pointer math issue in nft_byteorder_eval()
mmc: vub300: fix an error code

Darren Hart (1):
sbsa_gwdt: Calculate timeout with 64-bit math

Darrick J. Wong (8):
xfs: refactor buffer cancellation table allocation
xfs: don't leak xfs_buf_cancel structures when recovery fails
xfs: convert buf_cancel_table allocation to kmalloc_array
xfs: prevent a UAF when log IO errors race with unmount
xfs: fix use-after-free in xattr node block inactivation
xfs: don't leak memory when attr fork loading fails
xfs: fix intermittent hang during quotacheck
xfs: avoid a UAF when log intent item recovery fails

David Woodhouse (3):
hvc/xen: fix console unplug
hvc/xen: fix error path in xen_hvc_init() to always register frontend driver hvc/xen: fix event channel handling for secondary consoles

Dmitry Antipov (3):
wifi: mac80211_hwsim: fix clang-specific fortify warning
wifi: ath9k: fix clang-specific fortify warnings
wifi: ath10k: fix clang-specific fortify warning

Dominique Martinet (1):
9p: v9fs_listxattr: fix %s null argument warning

Douglas Anderson (2):
wifi: ath10k: Don't touch the CE interrupt registers after power up
kgdb: Flush console before entering kgdb on panic

Dust Li (1):
net/mlx5e: fix double free of encap_header

Ekaterina Esina (1):
cifs: fix check of rc in function generate_smb3signingkey

Eric Biggers (1):
quota: explicitly forbid quota files from being encrypted

Eric Dumazet (6):
net: annotate data-races around sk->sk_tx_queue_mapping
net: annotate data-races around sk->sk_dst_pending_confirm
ipvlan: add ipvlan_route_v6_outbound() helper
ptp: annotate data-race around q->head and q->tail
bonding: stop the device in bond_setup_by_slave()
af_unix: fix use-after-free in unix_stream_read_actor()

Finn Thain (1):
sched/core: Optimize in_task() and in_interrupt() a bit

Florian Westphal (4):
mptcp: diag: switch to context structure
mptcp: listen diag dump support
netfilter: nf_tables: use the correct get/put helpers
netfilter: nf_tables: add and use BE register load-store helpers

Frank Li (5):
i3c: master: svc: fix race condition in ibi work thread
i3c: master: svc: fix wrong data return when IBI happen during start frame
i3c: master: svc: fix ibi may not return mandatory data byte
i3c: master: svc: fix check wrong status register in irq handler
i3c: master: svc: fix SDA keep low when polling IBIWON timeout happen

Frederic Weisbecker (1):
workqueue: Provide one lock class key per work_on_cpu() callsite

Gao Xiang (1):

      xfs: add missing cmap->br_state = XFS_EXT_NORM update

Gavin Li (1):
net/mlx5e: fix double free of encap_header in update funcs

Greg Kroah-Hartman (1):

      Linux 5.15.140

Guan Wentao (1):
Bluetooth: btusb: Add 0bda:b85b for Fn-Link RTL8852BE

Guo Xuenan (1):
xfs: fix exception caused by unexpected illegal bestcount in leaf dir

Gustavo A. R. Silva (1):
clk: socfpga: Fix undefined behavior bug in struct stratix10_clock_data

Hans Verkuil (1):
media: vivid: avoid integer overflow

Hao Sun (1):
bpf: Fix check_stack_write_fixed_off() to correctly spill imm

Harald Freudenberger (1):
s390/ap: fix AP bus crash on early config change callback invocation

Hardik Gajjar (1):
usb: gadget: f_ncm: Always set current gadget in ncm_bind()

Harshit Mogalapalli (1):
i915/perf: Fix NULL deref bugs with drm_dbg() calls

Heiko Carstens (1):
s390/cmma: fix detection of DAT pages

Heiner Kallweit (3):
PCI/ASPM: Fix L1 substate handling in aspm_attr_store_common()
i2c: i801: fix potential race in i801_block_transaction_byte_by_byte Revert "net: r8169: Disable multicast filter for RTL8168H and RTL8107E"

Helge Deller (3):
parisc/pdc: Add width field to struct pdc_model
parisc: Prevent booting 64-bit kernels on PA1.x machines parisc/pgtable: Do not drop upper 5 address bits of physical address

Herve Codina (1):
genirq/generic_chip: Make irq_remove_generic_chip() irqdomain aware

Ilpo Järvinen (7):
RDMA/hfi1: Use FIELD_GET() to extract Link Width
PCI: tegra194: Use FIELD_GET()/FIELD_PREP() with Link Width fields
atm: iphase: Do PCI error checks on own line
PCI: Use FIELD_GET() to extract Link Width
media: cobalt: Use FIELD_GET() to extract Link Width selftests/resctrl: Remove duplicate feature check from CMT test selftests/resctrl: Reduce failures due to outliers in MBA/MBM tests

Jacky Bai (1):
clocksource/drivers/timer-imx-gpt: Fix potential memory leak

Jani Nikula (1):
drm/msm/dp: skip validity check for DP CTS EDID checksum

Jarkko Nikula (1):
i3c: mipi-i3c-hci: Fix out of bounds access in hci_dma_irq_handler

Jarkko Sakkinen (1):
KEYS: trusted: Rollback init_trusted() consistently

Jens Axboe (1):
io_uring/fdinfo: lock SQ thread while retrieving thread cpu/pid

Jesse Zhang (1):
drm/amdkfd: Fix shift out-of-bounds issue

Jian Shen (3):
net: hns3: fix add VLAN fail issue
net: hns3: refine the definition for struct hclge_pf_to_vf_msg
net: hns3: fix incorrect capability bit display for copper port

Jie Wang (1):
net: hns3: add byte order conversion for PF to VF mailbox message

Jijie Shao (2):
net: hns3: fix VF reset fail issue
net: hns3: fix VF wrong speed and duplex issue

Jiri Kosina (1):
HID: Add quirk for Dell Pro Wireless Keyboard and Mouse KM5221W

Joel Fernandes (Google) (1):
rcu/tree: Defer setting of jiffies during stall reset

Johan Hovold (3):
wifi: ath11k: fix temperature event locking
wifi: ath11k: fix dfs radar event locking
wifi: ath11k: fix htt pktlog locking

John Stultz (1):
locking/ww_mutex/test: Fix potential workqueue corruption

Johnathan Mantey (1):
Revert ncsi: Propagate carrier gain/loss events to the NCSI controller

Josef Bacik (1):
btrfs: don't arbitrarily slow down delalloc if we're committing

Joshua Yeong (1):
i3c: master: cdns: Fix reading status register

Juergen Gross (1):
xen/events: fix delayed eoi list handling

Juntong Deng (2):
fs/jfs: Add check for negative db_l2nbperpage fs/jfs: Add validity check for db_maxag and db_agpref

Kailang Yang (1):
ALSA: hda/realtek - Add Dell ALC295 to pin fall back table

Kaixu Xia (1):
xfs: use invalidate_lock to check the state of mmap_lock

Kathiravan Thirumoorthy (3):
clk: qcom: ipq8074: drop the CLK_SET_RATE_PARENT flag from PLL clocks
clk: qcom: ipq6018: drop the CLK_SET_RATE_PARENT flag from PLL clocks
firmware: qcom_scm: use 64-bit calling convention only when client is 64-bit

Kees Cook (1):
randstruct: Fix gcc-plugin performance mode to stay in group

Kemeng Shi (4):
ext4: correct offset of gdb backup in non meta_bg group to update_backups
ext4: correct return value of ext4_convert_meta_bg
ext4: remove gdb backup copy for meta bg in setup_new_flex_group_blocks
ext4: add missed brelse in update_backups

Klaus Kudielka (1):
net: phylink: initialize carrier state at creation

Krister Johansen (1):
watchdog: move softlockup_panic back to early_param

Krzysztof Kozlowski (2):
ASoC: codecs: wsa-macro: fix uninitialized stack variables with name prefix
arm64: dts: qcom: ipq6018: switch TCSR mutex to MMIO

Kumar Kartikeya Dwivedi (1):

      bpf: Detect IP == ksym.end as part of BPF program

Kunwu Chan (1):
drm/i915: Fix potential spectre vulnerability

Lad Prabhakar (1):
serial: meson: Use platform_get_irq() to get the interrupt

Larry Finger (2):
bluetooth: Add device 0bda:887b to device tables
bluetooth: Add device 13d3:3571 to device tables

Laurentiu Tudor (1):
arm64: dts: ls208xa: use a pseudo-bus to constrain usb dma size

Lewis Huang (1):
drm/amd/display: Change the DMCUB mailbox memory location from FB to inbox

Li Zetao (1):
xfs: Fix unreferenced object reported by kmemleak in xfs_sysfs_init()

Linkui Xiao (1):
netfilter: nf_conntrack_bridge: initialize err to 0

Linus Walleij (4):
net: ethernet: cortina: Fix max RX frame define
net: ethernet: cortina: Handle large frames
net: ethernet: cortina: Fix MTU max setting
mtd: cfi_cmdset_0001: Byte swap OTP info

Lu Jialin (1):
crypto: pcrypt - Fix hungtask for PADATA_RESET

Lukas Wunner (1):
PCI/sysfs: Protect driver's D3cold preference from user space

Ma Ke (3):
drm/panel: fix a possible null pointer dereference drm/panel/panel-tpo-tpg110: fix a possible null pointer dereference drm/amdgpu/vkms: fix a possible null pointer dereference

Maciej S. Szmigiero (1):
KVM: x86: Ignore MSR_AMD64_TW_CFG access

Mahmoud Adam (1):
nfsd: fix file memleak on client_opens_release

Manas Ghandat (2):
jfs: fix array-index-out-of-bounds in dbFindLeaf
jfs: fix array-index-out-of-bounds in diAlloc

Marco Elver (1):
9p/trans_fd: Annotate data-racy writes to file::f_flags

Marek Szyprowski (1):
media: cec: meson: always include meson sub-directory in Makefile

Mario Limonciello (2):
drm/amd: Fix UBSAN array-index-out-of-bounds for SMU7 drm/amd: Fix UBSAN array-index-out-of-bounds for Polaris and Tonga

Mark Brown (1):
regmap: Ensure range selector registers are updated after cache sync

Martin KaFai Lau (3):
net: inet: Remove count from inet_listen_hashbucket
net: inet: Open code inet_hash2 and inet_unhash2
net: inet: Retire port only listening_hash

Masum Reza (1):
Bluetooth: btusb: Add RTW8852BE device 13d3:3570 to device tables

Max Kellermann (1):
ext4: apply umask if ACL support is disabled

Michael Ellerman (1):
powerpc/powernv: Fix fortify source warnings in opal-prd.c

Mike Rapoport (IBM) (1):
x86/mm: Drop the 4 MB restriction on minimal NUMA node memory size

Mikhail Khvainitski (1):
HID: lenovo: Detect quirk-free fw on cptkbd and stop applying workaround

Mimi Zohar (1):
ima: detect changes to the backing overlay file

Miri Korenblit (1):
wifi: iwlwifi: Use FW rate for non-data frames

Muhammad Usama Anjum (1):
tty/sysrq: replace smp_processor_id() with get_cpu()

Nam Cao (1):
riscv: kprobes: allow writing to x0

Namjae Jeon (1):
ksmbd: fix slab out of bounds write in smb_inherit_dacl()

Nathan Chancellor (1):
arm64: Restrict CPU_BIG_ENDIAN to GNU as or LLVM IAS 15.x or newer

Nicholas Piggin (1):
powerpc/perf: Fix disabling BHRB and instruction sampling

Nicolas Saenz Julienne (1):
KVM: x86: hyper-v: Don't auto-enable stimer on write from user-space

Nitin Yadav (1):
mmc: sdhci_am654: fix start loop index for TAP value parsing

Olga Kornievskaia (1):
NFSv4.1: fix SP4_MACH_CRED protection for pnfs IO

Olli Asikainen (1):
platform/x86: thinkpad_acpi: Add battery quirk for Thinkpad X120e

Ondrej Jirman (1):
drm/panel: st7703: Pick different reset sequence

Ondrej Mosnacek (2):
lsm: fix default return value for vm_enough_memory
lsm: fix default return value for inode_getsecctx

Pablo Neira Ayuso (2):
netfilter: nf_tables: remove catchall element in GC sync path
netfilter: nf_tables: split async and sync catchall in two functions

Paul Blakey (1):
net/mlx5e: Refactor mod header management API

Paul Moore (2):
audit: don't take task_lock() in audit_exe_compare() code path
audit: don't WARN_ON_ONCE(!current->mm) in audit_exe_compare()

Pavel Krasavin (1):
tty: serial: meson: fix hard LOCKUP on crtscts mode

Philipp Stanner (5):
string.h: add array-wrappers for (v)memdup_user()
kernel: kexec: copy user-array safely
kernel: watch_queue: copy user-array safely
drm: vmwgfx_surface.c: copy user-array safely
i2c: dev: copy userspace array safely

Ping-Ke Shih (1):

      wifi: mac80211: don't return unset power in ieee80211_get_tx_power()

Pratyush Yadav (1):
media: cadence: csi2rx: Unregister v4l2 async notifier

Pu Wen (1):
x86/cpu/hygon: Fix the CPU topology evaluation for real

Qu Huang (1):
drm/amdgpu: Fix a null pointer access when the smc_rreg pointer is NULL

Quinn Tran (1):
scsi: qla2xxx: Fix system crash due to bad pointer access

Rahul Rameshbabu (1):
net/mlx5e: Check return value of snprintf writing to fw_version buffer for representors

Rajeshwar R Shinde (1):
media: gspca: cpia1: shift-out-of-bounds in set_flicker

Ranjan Kumar (1):
scsi: mpt3sas: Fix loop logic

Richard Fitzgerald (1):
ASoC: soc-card: Add storage for PCI SSID

Robert Marko (1):
Revert "i2c: pxa: move to generic GPIO recovery"

Roi Dayan (2):
net/mlx5e: Remove incorrect addition of action fwd flag net/mlx5e: Move mod hdr allocation to a single place

Roman Gushchin (1):
mm: kmem: drop __GFP_NOFAIL when allocating objcg vectors

Ronald Wahl (1):
clocksource/drivers/timer-atmel-tcb: Fix initialization on SAM9 hardware

Rong Chen (1):
mmc: meson-gx: Remove setting of CMD_CFG_ERROR

Roxana Nicolescu (1):
crypto: x86/sha - load modules based on CPU features

Saeed Mahameed (1):
net/mlx5e: Reduce the size of icosq_str

Sakari Ailus (2):
media: ccs: Fix driver quirk struct documentation
media: ccs: Correctly initialise try compose rectangle

Sanjuán García, Jorge (1):
mcb: fix error handling for different scenarios when parsing

Saravana Kannan (1):
driver core: Release all resources during unbind before updating device links

Sean Young (2):
media: lirc: drop trailing space from scancode transmit
media: sharp: fix sharp encoding

Shigeru Yoshida (2):
tty: Fix uninit-value access in ppp_sync_receive()
tipc: Fix kernel-infoleak due to uninitialized TLV value

Shuai Xue (1):
perf/core: Bail out early if the request AUX area is out of bound

Shung-Hsi Yu (1):
bpf: Fix precision tracking for BPF_ALU | BPF_TO_BE | BPF_END

Sieng-Piaw Liew (1):
atl1c: Work around the DMA RX overflow issue

Stanislav Fomichev (1):
net: set SOCK_RCU_FREE before inserting socket into hashtable

Stanley.Yang (1):
drm/amdgpu: Fix potential null pointer derefernce

Steven Rostedt (Google) (2):
tracing: Have the user copy of synthetic event address use correct context
tracing: Have trace_event_file have ref counters

Steven Rostedt (VMware) (2):
tracing: Reuse logic from perf's get_recursion_context() tracing/perf: Add interrupt_context_level() helper

Su Hui (1):
f2fs: avoid format-overflow warning

Takashi Iwai (2):
media: imon: fix access to invalid resource for the second interface
ALSA: info: Fix potential deadlock at disconnection

Tam Nguyen (1):
i2c: designware: Disable TX_EMPTY irq while waiting for block length byte

Tony Lindgren (1):
ASoC: ti: omap-mcbsp: Fix runtime PM underflow warnings

Trond Myklebust (1):
SUNRPC: ECONNRESET might require a rebind

Tyrel Datwyler (1):
scsi: ibmvfc: Remove BUG_ON in the case of an empty event pool

Uwe Kleine-König (3):
PCI: exynos: Don't discard .remove() callback
PCI: keystone: Don't discard .remove() callback
PCI: keystone: Don't discard .probe() callback

Vasily Khoruzhick (1):
ACPI: FPDT: properly handle invalid FPDT subtables

Vicki Pfau (1):
Input: xpad - add VID for Turtle Beach controllers

Victor Shih (2):
mmc: sdhci-pci-gli: A workaround to allow GL9750 to enter ASPM L1.2
mmc: sdhci-pci-gli: GL9750: Mask the replay timer timeout of AER

Vignesh Viswanathan (2):
arm64: dts: qcom: ipq6018: Fix hwlock index for SMEM
arm64: dts: qcom: ipq6018: Fix tcsr_mutex register size

Vikash Garodia (4):
media: venus: hfi: add checks to perform sanity on queue pointers
media: venus: hfi_parser: Add check to keep the number of codecs within range
media: venus: hfi: fix the check to handle session buffer requirement
media: venus: hfi: add checks to handle capabilities from firmware

Vincent Whitchurch (1):
ARM: 9320/1: fix stack depot IRQ stack filter

Vitaly Prosyak (1):
drm/amdgpu: fix software pci_unplug on some chips

Vlad Buslov (2):
net/mlx5e: Fix pedit endianness
macvlan: Don't propagate promisc change to lower dev in passthru

Wayne Lin (1):
drm/amd/display: Avoid NULL dereference of timing generator

Wenchao Hao (1):
scsi: libfc: Fix potential NULL pointer dereference in fc_lport_ptp_setup()

Wenjing Liu (1):
drm/amd/display: use full update for clip size increase of large plane source

Werner Sembach (1):
ACPI: resource: Do IRQ override on TongFang GMxXGxx

Willem de Bruijn (1):
ppp: limit MRU to 64K

Xiaogang Chen (1):
drm/amdkfd: Fix a race condition of vram buffer unref in svm code

Yi Yang (1):
tty: vcc: Add check for kstrdup() in vcc_probe()

Yihang Li (1):
scsi: hisi_sas: Set debugfs_dir pointer to NULL after removing debugfs

Yonglong Liu (2):
net: hns3: add barrier in vf mailbox reply process
net: hns3: fix variable may not initialized problem in hns3_init_mac_addr()

Yoshihiro Shimoda (1):
misc: pci_endpoint_test: Add Device ID for R-Car S4-8 PCIe controller

Yuezhang Mo (1):
exfat: support handle zero-size directory

Zeng Heng (1):
xfs: fix memory leak in xfs_errortag_init

Zhang Rui (1):
tools/power/turbostat: Fix a knl bug

Zhang Yi (2):
xfs: flush inode gc workqueue before clearing agi bucket
ext4: correct the start block of counting reserved clusters

ZhengHan Wang (1):
Bluetooth: Fix double free in hci_conn_cleanup

Zhihao Cheng (1):
jbd2: fix potential data lost in recovering journal raced with synchronizing fs bdev

Zi Yan (2):
mm/cma: use nth_page() in place of direct struct page manipulation mm/memory_hotplug: use pfn math in place of direct struct page manipulation

Zongmin Zhou (1):
drm/qxl: prevent memory leak

baozhu.liu (1):
drm/komeda: drop all currently held locks if deadlock happens

felix (1):
SUNRPC: Fix RPC client cleaned up the freed pipefs dentries

hexiaole (1):
xfs: fix inode reservation space for removing transaction

youwan Wang (1):

      Bluetooth: btusb: Add date->evt_skb is NULL check

zhenwei pi (1):
virtio-blk: fix implicit overflow on virtio_max_dma_size

zhujun2 (1):
selftests/efivarfs: create-read: fix a resource leak

author maintainer
#1 lore raw
Makefile +1 -1
index 2acf6ff74c95..90d878daaba6 100644
@@ -1,7 +1,7 @@
 # SPDX-License-Identifier: GPL-2.0
 VERSION = 5
 PATCHLEVEL = 15
-SUBLEVEL = 139
+SUBLEVEL = 140
 EXTRAVERSION =
 NAME = Trick or Treat
 
arch/arm/include/asm/exception.h +0 -4
index 58e039a851af..3c82975d46db 100644
@@ -10,10 +10,6 @@
 
 #include <linux/interrupt.h>
 
-#ifdef CONFIG_FUNCTION_GRAPH_TRACER
 #define __exception_irq_entry	__irq_entry
-#else
-#define __exception_irq_entry
-#endif
 
 #endif /* __ASM_ARM_EXCEPTION_H */
arch/arm64/Kconfig +2 -0
index 5ab4b0520eab..68874d3856b9 100644
@@ -1153,6 +1153,8 @@ choice
 config CPU_BIG_ENDIAN
 	bool "Build big-endian kernel"
 	depends on !LD_IS_LLD || LLD_VERSION >= 130000
+	# https://github.com/llvm/llvm-project/commit/1379b150991f70a5782e9a143c2ba5308da1161c
+	depends on AS_IS_GNU || AS_VERSION >= 150000
 	help
 	  Say Y if you plan on running a kernel with a big-endian userspace.
 
arch/arm64/boot/dts/freescale/fsl-ls208xa.dtsi +27 -19

53 lines not on this page · raw message

arch/arm64/boot/dts/qcom/ipq6018.dtsi +5 -10
index 3ca198f866c3..dde6fde10f8d 100644
@@ -129,12 +129,6 @@ scm {
 		};
 	};
 
-	tcsr_mutex: hwlock {
-		compatible = "qcom,tcsr-mutex";
-		syscon = <&tcsr_mutex_regs 0 0x80>;
-		#hwlock-cells = <1>;
-	};
-
 	pmuv8: pmu {
 		compatible = "arm,cortex-a53-pmu";
 		interrupts = <GIC_PPI 7 (GIC_CPU_MASK_SIMPLE(4) |
@@ -175,7 +169,7 @@ q6_region: memory@4ab00000 {
 	smem {
 		compatible = "qcom,smem";
 		memory-region = <&smem_region>;
-		hwlocks = <&tcsr_mutex 0>;
+		hwlocks = <&tcsr_mutex 3>;
 	};
 
 	soc: soc {
@@ -253,9 +247,10 @@ gcc: gcc@1800000 {
 			#reset-cells = <1>;
 		};
 
-		tcsr_mutex_regs: syscon@1905000 {
-			compatible = "syscon";
-			reg = <0x0 0x01905000 0x0 0x8000>;
+		tcsr_mutex: hwlock@1905000 {
+			compatible = "qcom,ipq6018-tcsr-mutex", "qcom,tcsr-mutex";
+			reg = <0x0 0x01905000 0x0 0x20000>;
+			#hwlock-cells = <1>;
 		};
 
 		tcsr: syscon@1937000 {
arch/parisc/include/uapi/asm/pdc.h +1 -0
index 15211723ebf5..ee903551ae10 100644
@@ -465,6 +465,7 @@ struct pdc_model {		/* for PDC_MODEL */
 	unsigned long arch_rev;
 	unsigned long pot_key;
 	unsigned long curr_key;
+	unsigned long width;	/* default of PSW_W bit (1=enabled) */
 };
 
 struct pdc_cache_cf {		/* for PDC_CACHE  (I/D-caches) */
arch/parisc/kernel/entry.S +3 -4
index 437c8d31f390..02e849a65aa8 100644
@@ -497,13 +497,13 @@
 	 * to a CPU TLB 4k PFN (4k => 12 bits to shift) */
 	#define PAGE_ADD_SHIFT		(PAGE_SHIFT-12)
 	#define PAGE_ADD_HUGE_SHIFT	(REAL_HPAGE_SHIFT-12)
+	#define PFN_START_BIT	(63-ASM_PFN_PTE_SHIFT+(63-58)-PAGE_ADD_SHIFT)
 
 	/* Drop prot bits and convert to page addr for iitlbt and idtlbt */
 	.macro		convert_for_tlb_insert20 pte,tmp
 #ifdef CONFIG_HUGETLB_PAGE
 	copy		\pte,\tmp
-	extrd,u		\tmp,(63-ASM_PFN_PTE_SHIFT)+(63-58)+PAGE_ADD_SHIFT,\
-				64-PAGE_SHIFT-PAGE_ADD_SHIFT,\pte
+	extrd,u		\tmp,PFN_START_BIT,PFN_START_BIT+1,\pte
 
 	depdi		_PAGE_SIZE_ENCODING_DEFAULT,63,\
 				(63-58)+PAGE_ADD_SHIFT,\pte
@@ -511,8 +511,7 @@
 	depdi		_HUGE_PAGE_SIZE_ENCODING_DEFAULT,63,\
 				(63-58)+PAGE_ADD_HUGE_SHIFT,\pte
 #else /* Huge pages disabled */
-	extrd,u		\pte,(63-ASM_PFN_PTE_SHIFT)+(63-58)+PAGE_ADD_SHIFT,\
-				64-PAGE_SHIFT-PAGE_ADD_SHIFT,\pte
+	extrd,u		\pte,PFN_START_BIT,PFN_START_BIT+1,\pte
 	depdi		_PAGE_SIZE_ENCODING_DEFAULT,63,\
 				(63-58)+PAGE_ADD_SHIFT,\pte
 #endif
arch/parisc/kernel/head.S +2 -3
index 598d0938449d..2f95c2429f77 100644
@@ -69,9 +69,8 @@ $bss_loop:
 	stw,ma          %arg2,4(%r1)
 	stw,ma          %arg3,4(%r1)
 
-#if !defined(CONFIG_64BIT) && defined(CONFIG_PA20)
-	/* This 32-bit kernel was compiled for PA2.0 CPUs. Check current CPU
-	 * and halt kernel if we detect a PA1.x CPU. */
+#if defined(CONFIG_PA20)
+	/* check for 64-bit capable CPU as required by current kernel */
 	ldi		32,%r10
 	mtctl		%r10,%cr11
 	.level 2.0
arch/powerpc/perf/core-book3s.c +2 -3
index 1078784b74c9..c9fc0edf56b1 100644
@@ -1342,8 +1342,7 @@ static void power_pmu_disable(struct pmu *pmu)
 		/*
 		 * Disable instruction sampling if it was enabled
 		 */
-		if (cpuhw->mmcr.mmcra & MMCRA_SAMPLE_ENABLE)
-			val &= ~MMCRA_SAMPLE_ENABLE;
+		val &= ~MMCRA_SAMPLE_ENABLE;
 
 		/* Disable BHRB via mmcra (BHRBRD) for p10 */
 		if (ppmu->flags & PPMU_ARCH_31)
@@ -1354,7 +1353,7 @@ static void power_pmu_disable(struct pmu *pmu)
 		 * instruction sampling or BHRB.
 		 */
 		if (val != mmcra) {
-			mtspr(SPRN_MMCRA, mmcra);
+			mtspr(SPRN_MMCRA, val);
 			mb();
 			isync();
 		}
arch/powerpc/platforms/powernv/opal-prd.c +12 -5
index 113bdb151f68..40e26e9f318f 100644
@@ -24,13 +24,20 @@
 #include <linux/uaccess.h>
 
 
+struct opal_prd_msg {
+	union {
+		struct opal_prd_msg_header header;
+		DECLARE_FLEX_ARRAY(u8, data);
+	};
+};
+
 /*
  * The msg member must be at the end of the struct, as it's followed by the
  * message data.
  */
 struct opal_prd_msg_queue_item {
-	struct list_head		list;
-	struct opal_prd_msg_header	msg;
+	struct list_head	list;
+	struct opal_prd_msg	msg;
 };
 
 static struct device_node *prd_node;
@@ -156,7 +163,7 @@ static ssize_t opal_prd_read(struct file *file, char __user *buf,
 	int rc;
 
 	/* we need at least a header's worth of data */
-	if (count < sizeof(item->msg))
+	if (count < sizeof(item->msg.header))
 		return -EINVAL;
 
 	if (*ppos)
@@ -186,7 +193,7 @@ static ssize_t opal_prd_read(struct file *file, char __user *buf,
 			return -EINTR;
 	}
 
-	size = be16_to_cpu(item->msg.size);
+	size = be16_to_cpu(item->msg.header.size);
 	if (size > count) {
 		err = -EINVAL;
 		goto err_requeue;
@@ -352,7 +359,7 @@ static int opal_prd_msg_notifier(struct notifier_block *nb,
 	if (!item)
 		return -ENOMEM;
 
-	memcpy(&item->msg, msg->params, msg_size);
+	memcpy(&item->msg.data, msg->params, msg_size);
 
 	spin_lock_irqsave(&opal_prd_msg_queue_lock, flags);
 	list_add_tail(&item->list, &opal_prd_msg_queue);
arch/powerpc/platforms/pseries/iommu.c +4 -7
index ec5d84b4958c..aa5f8074e9b1 100644
@@ -1241,7 +1241,6 @@ static bool enable_ddw(struct pci_dev *dev, struct device_node *pdn)
 	u32 ddw_avail[DDW_APPLICABLE_SIZE];
 	struct dma_win *window;
 	struct property *win64;
-	bool ddw_enabled = false;
 	struct failed_ddw_pdn *fpdn;
 	bool default_win_removed = false, direct_mapping = false;
 	bool pmem_present;
@@ -1256,7 +1255,6 @@ static bool enable_ddw(struct pci_dev *dev, struct device_node *pdn)
 
 	if (find_existing_ddw(pdn, &dev->dev.archdata.dma_offset, &len)) {
 		direct_mapping = (len >= max_ram_len);
-		ddw_enabled = true;
 		goto out_unlock;
 	}
 
@@ -1411,8 +1409,8 @@ static bool enable_ddw(struct pci_dev *dev, struct device_node *pdn)
 			dev_info(&dev->dev, "failed to map DMA window for %pOF: %d\n",
 				 dn, ret);
 
-		/* Make sure to clean DDW if any TCE was set*/
-		clean_dma_window(pdn, win64->value);
+			/* Make sure to clean DDW if any TCE was set*/
+			clean_dma_window(pdn, win64->value);
 			goto out_del_list;
 		}
 	} else {
@@ -1459,7 +1457,6 @@ static bool enable_ddw(struct pci_dev *dev, struct device_node *pdn)
 	spin_unlock(&dma_win_list_lock);
 
 	dev->dev.archdata.dma_offset = win_addr;
-	ddw_enabled = true;
 	goto out_unlock;
 
 out_del_list:
@@ -1495,10 +1492,10 @@ static bool enable_ddw(struct pci_dev *dev, struct device_node *pdn)
 	 * as RAM, then we failed to create a window to cover persistent
 	 * memory and need to set the DMA limit.
 	 */
-	if (pmem_present && ddw_enabled && direct_mapping && len == max_ram_len)
+	if (pmem_present && direct_mapping && len == max_ram_len)
 		dev->dev.bus_dma_limit = dev->dev.archdata.dma_offset + (1ULL << len);
 
-    return ddw_enabled && direct_mapping;
+	return direct_mapping;
 }
 
 static void pci_dma_dev_setup_pSeriesLP(struct pci_dev *dev)
arch/riscv/kernel/probes/simulate-insn.c +1 -1
index a20568bd1f1a..41bf1eb0110d 100644
@@ -24,7 +24,7 @@ static inline bool rv_insn_reg_set_val(struct pt_regs *regs, u32 index,
 				       unsigned long val)
 {
 	if (index == 0)
-		return false;
+		return true;
 	else if (index <= 31)
 		*((unsigned long *)regs + index) = val;
 	else
arch/s390/mm/page-states.c +3 -3
index 18a6381097a9..627767fdc85e 100644
@@ -131,7 +131,7 @@ static void mark_kernel_pud(p4d_t *p4d, unsigned long addr, unsigned long end)
 			continue;
 		if (!pud_folded(*pud)) {
 			page = phys_to_page(pud_val(*pud));
-			for (i = 0; i < 3; i++)
+			for (i = 0; i < 4; i++)
 				set_bit(PG_arch_1, &page[i].flags);
 		}
 		mark_kernel_pmd(pud, addr, next);
@@ -152,7 +152,7 @@ static void mark_kernel_p4d(pgd_t *pgd, unsigned long addr, unsigned long end)
 			continue;
 		if (!p4d_folded(*p4d)) {
 			page = phys_to_page(p4d_val(*p4d));
-			for (i = 0; i < 3; i++)
+			for (i = 0; i < 4; i++)
 				set_bit(PG_arch_1, &page[i].flags);
 		}
 		mark_kernel_pud(p4d, addr, next);
@@ -174,7 +174,7 @@ static void mark_kernel_pgd(void)
 			continue;
 		if (!pgd_folded(*pgd)) {
 			page = phys_to_page(pgd_val(*pgd));
-			for (i = 0; i < 3; i++)
+			for (i = 0; i < 4; i++)
 				set_bit(PG_arch_1, &page[i].flags);
 		}
 		mark_kernel_p4d(pgd, addr, next);
arch/x86/crypto/sha1_ssse3_glue.c +12 -0
index 44340a1139e0..959afa705e95 100644
@@ -24,8 +24,17 @@
 #include <linux/types.h>
 #include <crypto/sha1.h>
 #include <crypto/sha1_base.h>
+#include <asm/cpu_device_id.h>
 #include <asm/simd.h>
 
+static const struct x86_cpu_id module_cpu_ids[] = {
+	X86_MATCH_FEATURE(X86_FEATURE_AVX2, NULL),
+	X86_MATCH_FEATURE(X86_FEATURE_AVX, NULL),
+	X86_MATCH_FEATURE(X86_FEATURE_SSSE3, NULL),
+	{}
+};
+MODULE_DEVICE_TABLE(x86cpu, module_cpu_ids);
+
 static int sha1_update(struct shash_desc *desc, const u8 *data,
 			     unsigned int len, sha1_block_fn *sha1_xform)
 {
@@ -301,6 +310,9 @@ static inline void unregister_sha1_ni(void) { }
 
 static int __init sha1_ssse3_mod_init(void)
 {
+	if (!x86_match_cpu(module_cpu_ids))
+		return -ENODEV;
+
 	if (register_sha1_ssse3())
 		goto fail;
 
arch/x86/crypto/sha256_ssse3_glue.c +12 -0
index 3a5f6be7dbba..d25235f0ccaf 100644
@@ -38,11 +38,20 @@
 #include <crypto/sha2.h>
 #include <crypto/sha256_base.h>
 #include <linux/string.h>
+#include <asm/cpu_device_id.h>
 #include <asm/simd.h>
 
 asmlinkage void sha256_transform_ssse3(struct sha256_state *state,
 				       const u8 *data, int blocks);
 
+static const struct x86_cpu_id module_cpu_ids[] = {
+	X86_MATCH_FEATURE(X86_FEATURE_AVX2, NULL),
+	X86_MATCH_FEATURE(X86_FEATURE_AVX, NULL),
+	X86_MATCH_FEATURE(X86_FEATURE_SSSE3, NULL),
+	{}
+};
+MODULE_DEVICE_TABLE(x86cpu, module_cpu_ids);
+
 static int _sha256_update(struct shash_desc *desc, const u8 *data,
 			  unsigned int len, sha256_block_fn *sha256_xform)
 {
@@ -366,6 +375,9 @@ static inline void unregister_sha256_ni(void) { }
 
 static int __init sha256_ssse3_mod_init(void)
 {
+	if (!x86_match_cpu(module_cpu_ids))
+		return -ENODEV;
+
 	if (register_sha256_ssse3())
 		goto fail;
 
arch/x86/include/asm/msr-index.h +1 -0
index 5d929e413282..5672ccb80eb1 100644
@@ -511,6 +511,7 @@
 #define MSR_AMD64_CPUID_FN_1		0xc0011004
 #define MSR_AMD64_LS_CFG		0xc0011020
 #define MSR_AMD64_DC_CFG		0xc0011022
+#define MSR_AMD64_TW_CFG		0xc0011023
 
 #define MSR_AMD64_DE_CFG		0xc0011029
 #define MSR_AMD64_DE_CFG_LFENCE_SERIALIZE_BIT	 1
arch/x86/include/asm/numa.h +0 -7
index e3bae2b60a0d..ef2844d69173 100644
@@ -12,13 +12,6 @@
 
 #define NR_NODE_MEMBLKS		(MAX_NUMNODES*2)
 
-/*
- * Too small node sizes may confuse the VM badly. Usually they
- * result from BIOS bugs. So dont recognize nodes as standalone
- * NUMA entities that have less than this amount of RAM listed:
- */
-#define NODE_MIN_SIZE (4*1024*1024)
-
 extern int numa_off;
 
 /*
arch/x86/kernel/cpu/hygon.c +6 -2
index c393b8773ace..9e8380bd4fb9 100644
@@ -86,8 +86,12 @@ static void hygon_get_topology(struct cpuinfo_x86 *c)
 		if (!err)
 			c->x86_coreid_bits = get_count_order(c->x86_max_cores);
 
-		/* Socket ID is ApicId[6] for these processors. */
-		c->phys_proc_id = c->apicid >> APICID_SOCKET_ID_BIT;
+		/*
+		 * Socket ID is ApicId[6] for the processors with model <= 0x3
+		 * when running on host.
+		 */
+		if (!boot_cpu_has(X86_FEATURE_HYPERVISOR) && c->x86_model <= 0x3)
+			c->phys_proc_id = c->apicid >> APICID_SOCKET_ID_BIT;
 
 		cacheinfo_hygon_init_llc_id(c, cpu);
 	} else if (cpu_has(c, X86_FEATURE_NODEID_MSR)) {
arch/x86/kvm/hyperv.c +6 -4
index a067c7ce8e19..29a96d1c7e2b 100644
@@ -701,10 +701,12 @@ static int stimer_set_count(struct kvm_vcpu_hv_stimer *stimer, u64 count,
 
 	stimer_cleanup(stimer);
 	stimer->count = count;
-	if (stimer->count == 0)
-		stimer->config.enable = 0;
-	else if (stimer->config.auto_enable)
-		stimer->config.enable = 1;
+	if (!host) {
+		if (stimer->count == 0)
+			stimer->config.enable = 0;
+		else if (stimer->config.auto_enable)
+			stimer->config.enable = 1;
+	}
 
 	if (stimer->config.enable)
 		stimer_mark_pending(stimer, false);
arch/x86/kvm/x86.c +2 -0
index 7e9b61565306..aa6f700f8c5f 100644
@@ -3393,6 +3393,7 @@ int kvm_set_msr_common(struct kvm_vcpu *vcpu, struct msr_data *msr_info)
 	case MSR_AMD64_PATCH_LOADER:
 	case MSR_AMD64_BU_CFG2:
 	case MSR_AMD64_DC_CFG:
+	case MSR_AMD64_TW_CFG:
 	case MSR_F15H_EX_CFG:
 		break;
 
@@ -3733,6 +3734,7 @@ int kvm_get_msr_common(struct kvm_vcpu *vcpu, struct msr_data *msr_info)
 	case MSR_AMD64_BU_CFG2:
 	case MSR_IA32_PERF_CTL:
 	case MSR_AMD64_DC_CFG:
+	case MSR_AMD64_TW_CFG:
 	case MSR_F15H_EX_CFG:
 	/*
 	 * Intel Sandy Bridge CPUs must support the RAPL (running average power
arch/x86/mm/numa.c +0 -7
index e360c6892a58..1a1c0c242f27 100644
@@ -601,13 +601,6 @@ static int __init numa_register_memblks(struct numa_meminfo *mi)
 		if (start >= end)
 			continue;
 
-		/*
-		 * Don't confuse VM with a node that doesn't have the
-		 * minimum amount of memory:
-		 */
-		if (end && (end - start) < NODE_MIN_SIZE)
-			continue;
-
 		alloc_node_data(nid);
 	}
 
crypto/pcrypt.c +4 -0
index 9d10b846ccf7..005a36cb21bc 100644
@@ -117,6 +117,8 @@ static int pcrypt_aead_encrypt(struct aead_request *req)
 	err = padata_do_parallel(ictx->psenc, padata, &ctx->cb_cpu);
 	if (!err)
 		return -EINPROGRESS;
+	if (err == -EBUSY)
+		return -EAGAIN;
 
 	return err;
 }
@@ -164,6 +166,8 @@ static int pcrypt_aead_decrypt(struct aead_request *req)
 	err = padata_do_parallel(ictx->psdec, padata, &ctx->cb_cpu);
 	if (!err)
 		return -EINPROGRESS;
+	if (err == -EBUSY)
+		return -EAGAIN;
 
 	return err;
 }
drivers/acpi/acpi_fpdt.c +37 -8

110 lines not on this page · raw message

drivers/acpi/resource.c +12 -0
index a404dcebc0f9..fa91ca32b9af 100644
@@ -467,6 +467,18 @@ static const struct dmi_system_id maingear_laptop[] = {
 			DMI_MATCH(DMI_PRODUCT_NAME, "MG-VCP2-15A3070T"),
 		}
 	},
+	{
+		/* TongFang GMxXGxx/TUXEDO Polaris 15 Gen5 AMD */
+		.matches = {
+			DMI_MATCH(DMI_BOARD_NAME, "GMxXGxx"),
+		},
+	},
+	{
+		/* TongFang GM6XGxX/TUXEDO Stellaris 16 Gen5 AMD */
+		.matches = {
+			DMI_MATCH(DMI_BOARD_NAME, "GM6XGxX"),
+		},
+	},
 	{
 		.ident = "MAINGEAR Vector Pro 2 17",
 		.matches = {
drivers/atm/iphase.c +11 -9
index bc8e8d9f176b..ce56306eeb6c 100644
@@ -2293,19 +2293,21 @@ static int get_esi(struct atm_dev *dev)
 static int reset_sar(struct atm_dev *dev)  
 {  
 	IADEV *iadev;  
-	int i, error = 1;  
+	int i, error;
 	unsigned int pci[64];  
 	  
 	iadev = INPH_IA_DEV(dev);  
-	for(i=0; i<64; i++)  
-	  if ((error = pci_read_config_dword(iadev->pci,  
-				i*4, &pci[i])) != PCIBIOS_SUCCESSFUL)  
-  	      return error;  
+	for (i = 0; i < 64; i++) {
+		error = pci_read_config_dword(iadev->pci, i * 4, &pci[i]);
+		if (error != PCIBIOS_SUCCESSFUL)
+			return error;
+	}
 	writel(0, iadev->reg+IPHASE5575_EXT_RESET);  
-	for(i=0; i<64; i++)  
-	  if ((error = pci_write_config_dword(iadev->pci,  
-					i*4, pci[i])) != PCIBIOS_SUCCESSFUL)  
-	    return error;  
+	for (i = 0; i < 64; i++) {
+		error = pci_write_config_dword(iadev->pci, i * 4, pci[i]);
+		if (error != PCIBIOS_SUCCESSFUL)
+			return error;
+	}
 	udelay(5);  
 	return 0;  
 }  
drivers/base/dd.c +2 -2
index ab0b2eb5fa07..0bd166ad6f13 100644
@@ -1228,8 +1228,6 @@ static void __device_release_driver(struct device *dev, struct device *parent)
 		else if (drv->remove)
 			drv->remove(dev);
 
-		device_links_driver_cleanup(dev);
-
 		devres_release_all(dev);
 		arch_teardown_dma_ops(dev);
 		kfree(dev->dma_range_map);
@@ -1241,6 +1239,8 @@ static void __device_release_driver(struct device *dev, struct device *parent)
 		pm_runtime_reinit(dev);
 		dev_pm_set_driver_flags(dev, 0);
 
+		device_links_driver_cleanup(dev);
+
 		klist_remove(&dev->p->knode_driver);
 		device_pm_check_callbacks(dev);
 		if (dev->bus)
drivers/base/regmap/regcache.c +30 -0
index 0b517a83c449..b04e8c90aca2 100644
@@ -325,6 +325,11 @@ static int regcache_default_sync(struct regmap *map, unsigned int min,
 	return 0;
 }
 
+static int rbtree_all(const void *key, const struct rb_node *node)
+{
+	return 0;
+}
+
 /**
  * regcache_sync - Sync the register cache with the hardware.
  *
@@ -342,6 +347,7 @@ int regcache_sync(struct regmap *map)
 	unsigned int i;
 	const char *name;
 	bool bypass;
+	struct rb_node *node;
 
 	if (WARN_ON(map->cache_type == REGCACHE_NONE))
 		return -EINVAL;
@@ -386,6 +392,30 @@ int regcache_sync(struct regmap *map)
 	map->async = false;
 	map->cache_bypass = bypass;
 	map->no_sync_defaults = false;
+
+	/*
+	 * If we did any paging with cache bypassed and a cached
+	 * paging register then the register and cache state might
+	 * have gone out of sync, force writes of all the paging
+	 * registers.
+	 */
+	rb_for_each(node, 0, &map->range_tree, rbtree_all) {
+		struct regmap_range_node *this =
+			rb_entry(node, struct regmap_range_node, node);
+
+		/* If there's nothing in the cache there's nothing to sync */
+		ret = regcache_read(map, this->selector_reg, &i);
+		if (ret != 0)
+			continue;
+
+		ret = _regmap_write(map, this->selector_reg, i);
+		if (ret != 0) {
+			dev_err(map->dev, "Failed to write %x = %x: %d\n",
+				this->selector_reg, i, ret);
+			break;
+		}
+	}
+
 	map->unlock(map->lock_arg);
 
 	regmap_async_complete(map);
drivers/block/virtio_blk.c +3 -1
index d2ba849bb8d1..affeca0dbc7e 100644
@@ -743,6 +743,7 @@ static int virtblk_probe(struct virtio_device *vdev)
 	u16 min_io_size;
 	u8 physical_block_exp, alignment_offset;
 	unsigned int queue_depth;
+	size_t max_dma_size;
 
 	if (!vdev->config->get) {
 		dev_err(&vdev->dev, "%s failure: config access disabled\n",
@@ -844,7 +845,8 @@ static int virtblk_probe(struct virtio_device *vdev)
 	/* No real sector limit. */
 	blk_queue_max_hw_sectors(q, -1U);
 
-	max_size = virtio_max_dma_size(vdev);
+	max_dma_size = virtio_max_dma_size(vdev);
+	max_size = max_dma_size > U32_MAX ? U32_MAX : max_dma_size;
 
 	/* Host can optionally specify maximum segment size and number of
 	 * segments. */
drivers/bluetooth/btusb.c +15 -0
index c01d02f41bcb..a862f859f7a5 100644
@@ -436,6 +436,18 @@ static const struct usb_device_id blacklist_table[] = {
 	{ USB_DEVICE(0x13d3, 0x3586), .driver_info = BTUSB_REALTEK |
 						     BTUSB_WIDEBAND_SPEECH },
 
+	/* Realtek 8852BE Bluetooth devices */
+	{ USB_DEVICE(0x0cb8, 0xc559), .driver_info = BTUSB_REALTEK |
+						     BTUSB_WIDEBAND_SPEECH },
+	{ USB_DEVICE(0x0bda, 0x887b), .driver_info = BTUSB_REALTEK |
+						     BTUSB_WIDEBAND_SPEECH },
+	{ USB_DEVICE(0x0bda, 0xb85b), .driver_info = BTUSB_REALTEK |
+						     BTUSB_WIDEBAND_SPEECH },
+	{ USB_DEVICE(0x13d3, 0x3570), .driver_info = BTUSB_REALTEK |
+						     BTUSB_WIDEBAND_SPEECH },
+	{ USB_DEVICE(0x13d3, 0x3571), .driver_info = BTUSB_REALTEK |
+						     BTUSB_WIDEBAND_SPEECH },
+
 	/* Realtek Bluetooth devices */
 	{ USB_VENDOR_AND_INTERFACE_INFO(0x0bda, 0xe0, 0x01, 0x01),
 	  .driver_info = BTUSB_REALTEK },
@@ -2497,6 +2509,9 @@ static int btusb_mtk_hci_wmt_sync(struct hci_dev *hdev,
 		goto err_free_wc;
 	}
 
+	if (data->evt_skb == NULL)
+		goto err_free_wc;
+
 	/* Parse and handle the return WMT event */
 	wmt_evt = (struct btmtk_hci_wmt_evt *)data->evt_skb->data;
 	if (wmt_evt->whdr.op != hdr->op) {
drivers/clk/qcom/gcc-ipq6018.c +0 -6
index cde62a11f573..4c5c7a8f41d0 100644
@@ -75,7 +75,6 @@ static struct clk_fixed_factor gpll0_out_main_div2 = {
 				&gpll0_main.clkr.hw },
 		.num_parents = 1,
 		.ops = &clk_fixed_factor_ops,
-		.flags = CLK_SET_RATE_PARENT,
 	},
 };
 
@@ -89,7 +88,6 @@ static struct clk_alpha_pll_postdiv gpll0 = {
 				&gpll0_main.clkr.hw },
 		.num_parents = 1,
 		.ops = &clk_alpha_pll_postdiv_ro_ops,
-		.flags = CLK_SET_RATE_PARENT,
 	},
 };
 
@@ -164,7 +162,6 @@ static struct clk_alpha_pll_postdiv gpll6 = {
 				&gpll6_main.clkr.hw },
 		.num_parents = 1,
 		.ops = &clk_alpha_pll_postdiv_ro_ops,
-		.flags = CLK_SET_RATE_PARENT,
 	},
 };
 
@@ -195,7 +192,6 @@ static struct clk_alpha_pll_postdiv gpll4 = {
 				&gpll4_main.clkr.hw },
 		.num_parents = 1,
 		.ops = &clk_alpha_pll_postdiv_ro_ops,
-		.flags = CLK_SET_RATE_PARENT,
 	},
 };
 
@@ -246,7 +242,6 @@ static struct clk_alpha_pll_postdiv gpll2 = {
 				&gpll2_main.clkr.hw },
 		.num_parents = 1,
 		.ops = &clk_alpha_pll_postdiv_ro_ops,
-		.flags = CLK_SET_RATE_PARENT,
 	},
 };
 
@@ -277,7 +272,6 @@ static struct clk_alpha_pll_postdiv nss_crypto_pll = {
 				&nss_crypto_pll_main.clkr.hw },
 		.num_parents = 1,
 		.ops = &clk_alpha_pll_postdiv_ro_ops,
-		.flags = CLK_SET_RATE_PARENT,
 	},
 };
 
drivers/clk/qcom/gcc-ipq8074.c +0 -6
index d6d5defb82c9..0393154fea2f 100644
@@ -418,7 +418,6 @@ static struct clk_fixed_factor gpll0_out_main_div2 = {
 		},
 		.num_parents = 1,
 		.ops = &clk_fixed_factor_ops,
-		.flags = CLK_SET_RATE_PARENT,
 	},
 };
 
@@ -465,7 +464,6 @@ static struct clk_alpha_pll_postdiv gpll2 = {
 		},
 		.num_parents = 1,
 		.ops = &clk_alpha_pll_postdiv_ro_ops,
-		.flags = CLK_SET_RATE_PARENT,
 	},
 };
 
@@ -498,7 +496,6 @@ static struct clk_alpha_pll_postdiv gpll4 = {
 		},
 		.num_parents = 1,
 		.ops = &clk_alpha_pll_postdiv_ro_ops,
-		.flags = CLK_SET_RATE_PARENT,
 	},
 };
 
@@ -532,7 +529,6 @@ static struct clk_alpha_pll_postdiv gpll6 = {
 		},
 		.num_parents = 1,
 		.ops = &clk_alpha_pll_postdiv_ro_ops,
-		.flags = CLK_SET_RATE_PARENT,
 	},
 };
 
@@ -546,7 +542,6 @@ static struct clk_fixed_factor gpll6_out_main_div2 = {
 		},
 		.num_parents = 1,
 		.ops = &clk_fixed_factor_ops,
-		.flags = CLK_SET_RATE_PARENT,
 	},
 };
 
@@ -611,7 +606,6 @@ static struct clk_alpha_pll_postdiv nss_crypto_pll = {
 		},
 		.num_parents = 1,
 		.ops = &clk_alpha_pll_postdiv_ro_ops,
-		.flags = CLK_SET_RATE_PARENT,
 	},
 };
 
drivers/clk/socfpga/stratix10-clk.h +3 -1
index 75234e0783e1..83fe4eb3133c 100644
@@ -7,8 +7,10 @@
 #define	__STRATIX10_CLK_H
 
 struct stratix10_clock_data {
-	struct clk_hw_onecell_data	clk_data;
 	void __iomem		*base;
+
+	/* Must be last */
+	struct clk_hw_onecell_data	clk_data;
 };
 
 struct stratix10_pll_clock {
drivers/clocksource/timer-atmel-tcb.c +1 -0
index 27af17c99590..2a90c92a9182 100644
@@ -315,6 +315,7 @@ static void __init tcb_setup_dual_chan(struct atmel_tc *tc, int mck_divisor_idx)
 	writel(mck_divisor_idx			/* likely divide-by-8 */
 			| ATMEL_TC_WAVE
 			| ATMEL_TC_WAVESEL_UP		/* free-run */
+			| ATMEL_TC_ASWTRG_SET		/* TIOA0 rises at software trigger */
 			| ATMEL_TC_ACPA_SET		/* TIOA0 rises at 0 */
 			| ATMEL_TC_ACPC_CLEAR,		/* (duty cycle 50%) */
 			tcaddr + ATMEL_TC_REG(0, CMR));
drivers/clocksource/timer-imx-gpt.c +13 -5
index 7b2c70f2f353..fabff69e52e5 100644
@@ -454,12 +454,16 @@ static int __init mxc_timer_init_dt(struct device_node *np,  enum imx_gpt_type t
 		return -ENOMEM;
 
 	imxtm->base = of_iomap(np, 0);
-	if (!imxtm->base)
-		return -ENXIO;
+	if (!imxtm->base) {
+		ret = -ENXIO;
+		goto err_kfree;
+	}
 
 	imxtm->irq = irq_of_parse_and_map(np, 0);
-	if (imxtm->irq <= 0)
-		return -EINVAL;
+	if (imxtm->irq <= 0) {
+		ret = -EINVAL;
+		goto err_kfree;
+	}
 
 	imxtm->clk_ipg = of_clk_get_by_name(np, "ipg");
 
@@ -472,11 +476,15 @@ static int __init mxc_timer_init_dt(struct device_node *np,  enum imx_gpt_type t
 
 	ret = _mxc_timer_init(imxtm);
 	if (ret)
-		return ret;
+		goto err_kfree;
 
 	initialized = 1;
 
 	return 0;
+
+err_kfree:
+	kfree(imxtm);
+	return ret;
 }
 
 static int __init imx1_timer_init_dt(struct device_node *np)
drivers/cpufreq/cpufreq_stats.c +7 -7
index 1570d6f3e75d..6e57df7a2249 100644
@@ -131,25 +131,25 @@ static ssize_t show_trans_table(struct cpufreq_policy *policy, char *buf)
 	len += scnprintf(buf + len, PAGE_SIZE - len, "   From  :    To\n");
 	len += scnprintf(buf + len, PAGE_SIZE - len, "         : ");
 	for (i = 0; i < stats->state_num; i++) {
-		if (len >= PAGE_SIZE)
+		if (len >= PAGE_SIZE - 1)
 			break;
 		len += scnprintf(buf + len, PAGE_SIZE - len, "%9u ",
 				stats->freq_table[i]);
 	}
-	if (len >= PAGE_SIZE)
-		return PAGE_SIZE;
+	if (len >= PAGE_SIZE - 1)
+		return PAGE_SIZE - 1;
 
 	len += scnprintf(buf + len, PAGE_SIZE - len, "\n");
 
 	for (i = 0; i < stats->state_num; i++) {
-		if (len >= PAGE_SIZE)
+		if (len >= PAGE_SIZE - 1)
 			break;
 
 		len += scnprintf(buf + len, PAGE_SIZE - len, "%9u: ",
 				stats->freq_table[i]);
 
 		for (j = 0; j < stats->state_num; j++) {
-			if (len >= PAGE_SIZE)
+			if (len >= PAGE_SIZE - 1)
 				break;
 
 			if (pending)
@@ -159,12 +159,12 @@ static ssize_t show_trans_table(struct cpufreq_policy *policy, char *buf)
 
 			len += scnprintf(buf + len, PAGE_SIZE - len, "%9u ", count);
 		}
-		if (len >= PAGE_SIZE)
+		if (len >= PAGE_SIZE - 1)
 			break;
 		len += scnprintf(buf + len, PAGE_SIZE - len, "\n");
 	}
 
-	if (len >= PAGE_SIZE) {
+	if (len >= PAGE_SIZE - 1) {
 		pr_warn_once("cpufreq transition table exceeds PAGE_SIZE. Disabling\n");
 		return -EFBIG;
 	}
drivers/dma/stm32-mdma.c +2 -2
index 58248c8c25a7..76202029a3f0 100644
@@ -509,7 +509,7 @@ static int stm32_mdma_set_xfer_param(struct stm32_mdma_chan *chan,
 	src_maxburst = chan->dma_config.src_maxburst;
 	dst_maxburst = chan->dma_config.dst_maxburst;
 
-	ccr = stm32_mdma_read(dmadev, STM32_MDMA_CCR(chan->id));
+	ccr = stm32_mdma_read(dmadev, STM32_MDMA_CCR(chan->id)) & ~STM32_MDMA_CCR_EN;
 	ctcr = stm32_mdma_read(dmadev, STM32_MDMA_CTCR(chan->id));
 	ctbr = stm32_mdma_read(dmadev, STM32_MDMA_CTBR(chan->id));
 
@@ -937,7 +937,7 @@ stm32_mdma_prep_dma_memcpy(struct dma_chan *c, dma_addr_t dest, dma_addr_t src,
 	if (!desc)
 		return NULL;
 
-	ccr = stm32_mdma_read(dmadev, STM32_MDMA_CCR(chan->id));
+	ccr = stm32_mdma_read(dmadev, STM32_MDMA_CCR(chan->id)) & ~STM32_MDMA_CCR_EN;
 	ctcr = stm32_mdma_read(dmadev, STM32_MDMA_CTCR(chan->id));
 	ctbr = stm32_mdma_read(dmadev, STM32_MDMA_CTBR(chan->id));
 	cbndtr = stm32_mdma_read(dmadev, STM32_MDMA_CBNDTR(chan->id));
drivers/firmware/qcom_scm.c +7 -0
index 18e1a4b80401..139c8c401254 100644
@@ -136,6 +136,12 @@ static enum qcom_scm_convention __get_convention(void)
 	if (likely(qcom_scm_convention != SMC_CONVENTION_UNKNOWN))
 		return qcom_scm_convention;
 
+	/*
+	 * Per the "SMC calling convention specification", the 64-bit calling
+	 * convention can only be used when the client is 64-bit, otherwise
+	 * system will encounter the undefined behaviour.
+	 */
+#if IS_ENABLED(CONFIG_ARM64)
 	/*
 	 * Device isn't required as there is only one argument - no device
 	 * needed to dma_map_single to secure world
@@ -156,6 +162,7 @@ static enum qcom_scm_convention __get_convention(void)
 		forced = true;
 		goto found;
 	}
+#endif
 
 	probed_convention = SMC_CONVENTION_ARM_32;
 	ret = __scm_smc_call(NULL, &desc, probed_convention, &res, true);
drivers/gpu/drm/amd/amdgpu/amdgpu_bios.c +5 -0
index 71354f505b84..1f916adf74dd 100644
@@ -29,6 +29,7 @@
 #include "amdgpu.h"
 #include "atom.h"
 
+#include <linux/device.h>
 #include <linux/pci.h>
 #include <linux/slab.h>
 #include <linux/acpi.h>
@@ -289,6 +290,10 @@ static bool amdgpu_atrm_get_bios(struct amdgpu_device *adev)
 	if (adev->flags & AMD_IS_APU)
 		return false;
 
+	/* ATRM is for on-platform devices only */
+	if (dev_is_removable(&adev->pdev->dev))
+		return false;
+
 	while ((pdev = pci_get_class(PCI_CLASS_DISPLAY_VGA << 8, pdev)) != NULL) {
 		dhandle = ACPI_HANDLE(&pdev->dev);
 		if (!dhandle)
drivers/gpu/drm/amd/amdgpu/amdgpu_bo_list.c +1 -0
index 714178f1b6c6..9fb8012007e2 100644
@@ -178,6 +178,7 @@ int amdgpu_bo_list_get(struct amdgpu_fpriv *fpriv, int id,
 	}
 
 	rcu_read_unlock();
+	*result = NULL;
 	return -ENOENT;
 }
 
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c +6 -0
index 348629ea0e15..beb199d13451 100644
@@ -458,6 +458,9 @@ static ssize_t amdgpu_debugfs_regs_smc_read(struct file *f, char __user *buf,
 	ssize_t result = 0;
 	int r;
 
+	if (!adev->smc_rreg)
+		return -EPERM;
+
 	if (size & 0x3 || *pos & 0x3)
 		return -EINVAL;
 
@@ -517,6 +520,9 @@ static ssize_t amdgpu_debugfs_regs_smc_write(struct file *f, const char __user *
 	ssize_t result = 0;
 	int r;
 
+	if (!adev->smc_wreg)
+		return -EPERM;
+
 	if (size & 0x3 || *pos & 0x3)
 		return -EINVAL;
 
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c +2 -1
index f57334fff7fc..19e32f38a4c4 100644
@@ -5116,7 +5116,8 @@ int amdgpu_device_gpu_recover(struct amdgpu_device *adev,
 	 * Flush RAM to disk so that after reboot
 	 * the user can read log and see why the system rebooted.
 	 */
-	if (need_emergency_restart && amdgpu_ras_get_context(adev)->reboot) {
+	if (need_emergency_restart && amdgpu_ras_get_context(adev) &&
+		amdgpu_ras_get_context(adev)->reboot) {
 		DRM_WARN("Emergency reboot.");
 
 		ksys_sync_helper();
drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c +6 -3
index 96a8fd0ca1df..439ea256ed25 100644
@@ -1192,7 +1192,8 @@ static void amdgpu_ras_sysfs_remove_bad_page_node(struct amdgpu_device *adev)
 {
 	struct amdgpu_ras *con = amdgpu_ras_get_context(adev);
 
-	sysfs_remove_file_from_group(&adev->dev->kobj,
+	if (adev->dev->kobj.sd)
+		sysfs_remove_file_from_group(&adev->dev->kobj,
 				&con->badpages_attr.attr,
 				RAS_FS_NAME);
 }
@@ -1209,7 +1210,8 @@ static int amdgpu_ras_sysfs_remove_feature_node(struct amdgpu_device *adev)
 		.attrs = attrs,
 	};
 
-	sysfs_remove_group(&adev->dev->kobj, &group);
+	if (adev->dev->kobj.sd)
+		sysfs_remove_group(&adev->dev->kobj, &group);
 
 	return 0;
 }
@@ -1257,7 +1259,8 @@ int amdgpu_ras_sysfs_remove(struct amdgpu_device *adev,
 	if (!obj || !obj->attr_inuse)
 		return -EINVAL;
 
-	sysfs_remove_file_from_group(&adev->dev->kobj,
+	if (adev->dev->kobj.sd)
+		sysfs_remove_file_from_group(&adev->dev->kobj,
 				&obj->sysfs_attr.attr,
 				RAS_FS_NAME);
 	obj->attr_inuse = 0;
drivers/gpu/drm/amd/amdgpu/amdgpu_vkms.c +2 -0
index 4e8274de8fc0..083f9c637a82 100644
@@ -238,6 +238,8 @@ static int amdgpu_vkms_conn_get_modes(struct drm_connector *connector)
 
 	for (i = 0; i < ARRAY_SIZE(common_modes); i++) {
 		mode = drm_cvt_mode(dev, common_modes[i].w, common_modes[i].h, 60, false, false, false);
+		if (!mode)
+			continue;
 		drm_mode_probed_add(connector, mode);
 	}
 
drivers/gpu/drm/amd/amdkfd/kfd_svm.c +10 -3
index 86135ca33e5b..2cbe8ea16f24 100644
@@ -550,8 +550,15 @@ svm_range_vram_node_new(struct amdgpu_device *adev, struct svm_range *prange,
 
 void svm_range_vram_node_free(struct svm_range *prange)
 {
-	svm_range_bo_unref(prange->svm_bo);
-	prange->ttm_res = NULL;
+	/* serialize prange->svm_bo unref */
+	mutex_lock(&prange->lock);
+	/* prange->svm_bo has not been unref */
+	if (prange->ttm_res) {
+		prange->ttm_res = NULL;
+		mutex_unlock(&prange->lock);
+		svm_range_bo_unref(prange->svm_bo);
+	} else
+		mutex_unlock(&prange->lock);
 }
 
 struct amdgpu_device *
@@ -691,7 +698,7 @@ svm_range_apply_attrs(struct kfd_process *p, struct svm_range *prange,
 			prange->flags &= ~attrs[i].value;
 			break;
 		case KFD_IOCTL_SVM_ATTR_GRANULARITY:
-			prange->granularity = attrs[i].value;
+			prange->granularity = min_t(uint32_t, attrs[i].value, 0x3F);
 			break;
 		default:
 			WARN_ONCE(1, "svm_range_check_attrs wasn't called?");
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +7 -6
index 317ddc807158..f5b257cb32cb 100644
@@ -1911,7 +1911,7 @@ static int dm_dmub_sw_init(struct amdgpu_device *adev)
 	struct dmub_srv_create_params create_params;
 	struct dmub_srv_region_params region_params;
 	struct dmub_srv_region_info region_info;
-	struct dmub_srv_fb_params fb_params;
+	struct dmub_srv_memory_params memory_params;
 	struct dmub_srv_fb_info *fb_info;
 	struct dmub_srv *dmub_srv;
 	const struct dmcub_firmware_header_v1_0 *hdr;
@@ -2021,6 +2021,7 @@ static int dm_dmub_sw_init(struct amdgpu_device *adev)
 		adev->dm.dmub_fw->data +
 		le32_to_cpu(hdr->header.ucode_array_offset_bytes) +
 		PSP_HEADER_BYTES;
+	region_params.is_mailbox_in_inbox = false;
 
 	status = dmub_srv_calc_region_info(dmub_srv, &region_params,
 					   &region_info);
@@ -2042,10 +2043,10 @@ static int dm_dmub_sw_init(struct amdgpu_device *adev)
 		return r;
 
 	/* Rebase the regions on the framebuffer address. */
-	memset(&fb_params, 0, sizeof(fb_params));
-	fb_params.cpu_addr = adev->dm.dmub_bo_cpu_addr;
-	fb_params.gpu_addr = adev->dm.dmub_bo_gpu_addr;
-	fb_params.region_info = &region_info;
+	memset(&memory_params, 0, sizeof(memory_params));
+	memory_params.cpu_fb_addr = adev->dm.dmub_bo_cpu_addr;
+	memory_params.gpu_fb_addr = adev->dm.dmub_bo_gpu_addr;
+	memory_params.region_info = &region_info;
 
 	adev->dm.dmub_fb_info =
 		kzalloc(sizeof(*adev->dm.dmub_fb_info), GFP_KERNEL);
@@ -2057,7 +2058,7 @@ static int dm_dmub_sw_init(struct amdgpu_device *adev)
 		return -ENOMEM;
 	}
 
-	status = dmub_srv_calc_fb_info(dmub_srv, &fb_params, fb_info);
+	status = dmub_srv_calc_mem_info(dmub_srv, &memory_params, fb_info);
 	if (status != DMUB_STATUS_OK) {
 		DRM_ERROR("Error calculating DMUB FB info: %d\n", status);
 		return -EINVAL;
drivers/gpu/drm/amd/display/dc/core/dc.c +10 -2
index ffe7479a047d..3919e75fec16 100644
@@ -886,7 +886,8 @@ static bool dc_construct(struct dc *dc,
 	/* set i2c speed if not done by the respective dcnxxx__resource.c */
 	if (dc->caps.i2c_speed_in_khz_hdcp == 0)
 		dc->caps.i2c_speed_in_khz_hdcp = dc->caps.i2c_speed_in_khz;
-
+	if (dc->caps.max_optimizable_video_width == 0)
+		dc->caps.max_optimizable_video_width = 5120;
 	dc->clk_mgr = dc_clk_mgr_create(dc->ctx, dc->res_pool->pp_smu, dc->res_pool->dccg);
 	if (!dc->clk_mgr)
 		goto fail;
@@ -2053,6 +2054,7 @@ static enum surface_update_type get_plane_info_update_type(const struct dc_surfa
 }
 
 static enum surface_update_type get_scaling_info_update_type(
+		const struct dc *dc,
 		const struct dc_surface_update *u)
 {
 	union surface_update_flags *update_flags = &u->surface->update_flags;
@@ -2087,6 +2089,12 @@ static enum surface_update_type get_scaling_info_update_type(
 			update_flags->bits.clock_change = 1;
 	}
 
+	if (u->scaling_info->src_rect.width > dc->caps.max_optimizable_video_width &&
+		(u->scaling_info->clip_rect.width > u->surface->clip_rect.width ||
+		 u->scaling_info->clip_rect.height > u->surface->clip_rect.height))
+		 /* Changing clip size of a large surface may result in MPC slice count change */
+		update_flags->bits.bandwidth_change = 1;
+
 	if (u->scaling_info->src_rect.x != u->surface->src_rect.x
 			|| u->scaling_info->src_rect.y != u->surface->src_rect.y
 			|| u->scaling_info->clip_rect.x != u->surface->clip_rect.x
@@ -2124,7 +2132,7 @@ static enum surface_update_type det_surface_update(const struct dc *dc,
 	type = get_plane_info_update_type(u);
 	elevate_update_type(&overall_type, type);
 
-	type = get_scaling_info_update_type(u);
+	type = get_scaling_info_update_type(dc, u);
 	elevate_update_type(&overall_type, type);
 
 	if (u->flip_addr)
drivers/gpu/drm/amd/display/dc/core/dc_stream.c +2 -2
index f0f54f4d3d9b..5dd57cf170f5 100644
@@ -562,7 +562,7 @@ uint32_t dc_stream_get_vblank_counter(const struct dc_stream_state *stream)
 	for (i = 0; i < MAX_PIPES; i++) {
 		struct timing_generator *tg = res_ctx->pipe_ctx[i].stream_res.tg;
 
-		if (res_ctx->pipe_ctx[i].stream != stream)
+		if (res_ctx->pipe_ctx[i].stream != stream || !tg)
 			continue;
 
 		return tg->funcs->get_frame_count(tg);
@@ -621,7 +621,7 @@ bool dc_stream_get_scanoutpos(const struct dc_stream_state *stream,
 	for (i = 0; i < MAX_PIPES; i++) {
 		struct timing_generator *tg = res_ctx->pipe_ctx[i].stream_res.tg;
 
-		if (res_ctx->pipe_ctx[i].stream != stream)
+		if (res_ctx->pipe_ctx[i].stream != stream || !tg)
 			continue;
 
 		tg->funcs->get_scanoutpos(tg,
drivers/gpu/drm/amd/display/dc/dc.h +5 -0
index e0f58fab5e8e..09a8726c2639 100644
@@ -164,6 +164,11 @@ struct dc_caps {
 	uint32_t dmdata_alloc_size;
 	unsigned int max_cursor_size;
 	unsigned int max_video_width;
+	/*
+	 * max video plane width that can be safely assumed to be always
+	 * supported by single DPP pipe.
+	 */
+	unsigned int max_optimizable_video_width;
 	unsigned int min_horizontal_blanking_period;
 	int linear_pitch_alignment;
 	bool dcc_const_color;
drivers/gpu/drm/amd/display/dmub/dmub_srv.h +14 -8
index 0fc4f90d9e3e..96ceae1e199f 100644
@@ -166,6 +166,7 @@ struct dmub_srv_region_params {
 	uint32_t vbios_size;
 	const uint8_t *fw_inst_const;
 	const uint8_t *fw_bss_data;
+	bool is_mailbox_in_inbox;
 };
 
 /**
@@ -185,20 +186,25 @@ struct dmub_srv_region_params {
  */
 struct dmub_srv_region_info {
 	uint32_t fb_size;
+	uint32_t inbox_size;
 	uint8_t num_regions;
 	struct dmub_region regions[DMUB_WINDOW_TOTAL];
 };
 
 /**
- * struct dmub_srv_fb_params - parameters used for driver fb setup
+ * struct dmub_srv_memory_params - parameters used for driver fb setup
  * @region_info: region info calculated by dmub service
- * @cpu_addr: base cpu address for the framebuffer
- * @gpu_addr: base gpu virtual address for the framebuffer
+ * @cpu_fb_addr: base cpu address for the framebuffer
+ * @cpu_inbox_addr: base cpu address for the gart
+ * @gpu_fb_addr: base gpu virtual address for the framebuffer
+ * @gpu_inbox_addr: base gpu virtual address for the gart
  */
-struct dmub_srv_fb_params {
+struct dmub_srv_memory_params {
 	const struct dmub_srv_region_info *region_info;
-	void *cpu_addr;
-	uint64_t gpu_addr;
+	void *cpu_fb_addr;
+	void *cpu_inbox_addr;
+	uint64_t gpu_fb_addr;
+	uint64_t gpu_inbox_addr;
 };
 
 /**
@@ -496,8 +502,8 @@ dmub_srv_calc_region_info(struct dmub_srv *dmub,
  *   DMUB_STATUS_OK - success
  *   DMUB_STATUS_INVALID - unspecified error
  */
-enum dmub_status dmub_srv_calc_fb_info(struct dmub_srv *dmub,
-				       const struct dmub_srv_fb_params *params,
+enum dmub_status dmub_srv_calc_mem_info(struct dmub_srv *dmub,
+				       const struct dmub_srv_memory_params *params,
 				       struct dmub_srv_fb_info *out);
 
 /**
drivers/gpu/drm/amd/display/dmub/src/dmub_srv.c +24 -8
index 75a91cfaf036..dc4ecbfbd4e8 100644
@@ -318,7 +318,7 @@ dmub_srv_calc_region_info(struct dmub_srv *dmub,
 	uint32_t fw_state_size = DMUB_FW_STATE_SIZE;
 	uint32_t trace_buffer_size = DMUB_TRACE_BUFFER_SIZE;
 	uint32_t scratch_mem_size = DMUB_SCRATCH_MEM_SIZE;
-
+	uint32_t previous_top = 0;
 	if (!dmub->sw_init)
 		return DMUB_STATUS_INVALID;
 
@@ -343,8 +343,15 @@ dmub_srv_calc_region_info(struct dmub_srv *dmub,
 	bios->base = dmub_align(stack->top, 256);
 	bios->top = bios->base + params->vbios_size;
 
-	mail->base = dmub_align(bios->top, 256);
-	mail->top = mail->base + DMUB_MAILBOX_SIZE;
+	if (params->is_mailbox_in_inbox) {
+		mail->base = 0;
+		mail->top = mail->base + DMUB_MAILBOX_SIZE;
+		previous_top = bios->top;
+	} else {
+		mail->base = dmub_align(bios->top, 256);
+		mail->top = mail->base + DMUB_MAILBOX_SIZE;
+		previous_top = mail->top;
+	}
 
 	fw_info = dmub_get_fw_meta_info(params);
 
@@ -363,7 +370,7 @@ dmub_srv_calc_region_info(struct dmub_srv *dmub,
 			dmub->fw_version = fw_info->fw_version;
 	}
 
-	trace_buff->base = dmub_align(mail->top, 256);
+	trace_buff->base = dmub_align(previous_top, 256);
 	trace_buff->top = trace_buff->base + dmub_align(trace_buffer_size, 64);
 
 	fw_state->base = dmub_align(trace_buff->top, 256);
@@ -374,11 +381,14 @@ dmub_srv_calc_region_info(struct dmub_srv *dmub,
 
 	out->fb_size = dmub_align(scratch_mem->top, 4096);
 
+	if (params->is_mailbox_in_inbox)
+		out->inbox_size = dmub_align(mail->top, 4096);
+
 	return DMUB_STATUS_OK;
 }
 
-enum dmub_status dmub_srv_calc_fb_info(struct dmub_srv *dmub,
-				       const struct dmub_srv_fb_params *params,
+enum dmub_status dmub_srv_calc_mem_info(struct dmub_srv *dmub,
+				       const struct dmub_srv_memory_params *params,
 				       struct dmub_srv_fb_info *out)
 {
 	uint8_t *cpu_base;
@@ -393,8 +403,8 @@ enum dmub_status dmub_srv_calc_fb_info(struct dmub_srv *dmub,
 	if (params->region_info->num_regions != DMUB_NUM_WINDOWS)
 		return DMUB_STATUS_INVALID;
 
-	cpu_base = (uint8_t *)params->cpu_addr;
-	gpu_base = params->gpu_addr;
+	cpu_base = (uint8_t *)params->cpu_fb_addr;
+	gpu_base = params->gpu_fb_addr;
 
 	for (i = 0; i < DMUB_NUM_WINDOWS; ++i) {
 		const struct dmub_region *reg =
@@ -402,6 +412,12 @@ enum dmub_status dmub_srv_calc_fb_info(struct dmub_srv *dmub,
 
 		out->fb[i].cpu_addr = cpu_base + reg->base;
 		out->fb[i].gpu_addr = gpu_base + reg->base;
+
+		if (i == DMUB_WINDOW_4_MAILBOX && params->cpu_inbox_addr != 0) {
+			out->fb[i].cpu_addr = (uint8_t *)params->cpu_inbox_addr + reg->base;
+			out->fb[i].gpu_addr = params->gpu_inbox_addr + reg->base;
+		}
+
 		out->fb[i].size = reg->top - reg->base;
 	}
 
drivers/gpu/drm/amd/include/pptable.h +2 -2
index 0b6a057e0a4c..5aac8d545bdc 100644
@@ -78,7 +78,7 @@ typedef struct _ATOM_PPLIB_THERMALCONTROLLER
 typedef struct _ATOM_PPLIB_STATE
 {
     UCHAR ucNonClockStateIndex;
-    UCHAR ucClockStateIndices[1]; // variable-sized
+    UCHAR ucClockStateIndices[]; // variable-sized
 } ATOM_PPLIB_STATE;
 
 
@@ -473,7 +473,7 @@ typedef struct _ATOM_PPLIB_STATE_V2
       /**
       * Driver will read the first ucNumDPMLevels in this array
       */
-      UCHAR clockInfoIndex[1];
+      UCHAR clockInfoIndex[];
 } ATOM_PPLIB_STATE_V2;
 
 typedef struct _StateArray{
drivers/gpu/drm/amd/pm/amdgpu_pm.c +6 -2
index 73794c1c1208..23f3cd9f2e8b 100644
@@ -807,7 +807,7 @@ static ssize_t amdgpu_set_pp_od_clk_voltage(struct device *dev,
 	if (adev->in_suspend && !adev->in_runpm)
 		return -EPERM;
 
-	if (count > 127)
+	if (count > 127 || count == 0)
 		return -EINVAL;
 
 	if (*buf == 's')
@@ -827,7 +827,8 @@ static ssize_t amdgpu_set_pp_od_clk_voltage(struct device *dev,
 	else
 		return -EINVAL;
 
-	memcpy(buf_cpy, buf, count+1);
+	memcpy(buf_cpy, buf, count);
+	buf_cpy[count] = 0;
 
 	tmp_str = buf_cpy;
 
@@ -844,6 +845,9 @@ static ssize_t amdgpu_set_pp_od_clk_voltage(struct device *dev,
 			return -EINVAL;
 		parameter_size++;
 
+		if (!tmp_str)
+			break;
+
 		while (isspace(*tmp_str))
 			tmp_str++;
 	}
drivers/gpu/drm/amd/pm/powerplay/hwmgr/pptable_v1_0.h +8 -8
index b0ac4d121adc..e0e40b054c08 100644
@@ -164,7 +164,7 @@ typedef struct _ATOM_Tonga_State {
 typedef struct _ATOM_Tonga_State_Array {
 	UCHAR ucRevId;
 	UCHAR ucNumEntries;		/* Number of entries. */
-	ATOM_Tonga_State entries[1];	/* Dynamically allocate entries. */
+	ATOM_Tonga_State entries[];	/* Dynamically allocate entries. */
 } ATOM_Tonga_State_Array;
 
 typedef struct _ATOM_Tonga_MCLK_Dependency_Record {
@@ -179,7 +179,7 @@ typedef struct _ATOM_Tonga_MCLK_Dependency_Record {
 typedef struct _ATOM_Tonga_MCLK_Dependency_Table {
 	UCHAR ucRevId;
 	UCHAR ucNumEntries; 										/* Number of entries. */
-	ATOM_Tonga_MCLK_Dependency_Record entries[1];				/* Dynamically allocate entries. */
+	ATOM_Tonga_MCLK_Dependency_Record entries[];				/* Dynamically allocate entries. */
 } ATOM_Tonga_MCLK_Dependency_Table;
 
 typedef struct _ATOM_Tonga_SCLK_Dependency_Record {
@@ -194,7 +194,7 @@ typedef struct _ATOM_Tonga_SCLK_Dependency_Record {
 typedef struct _ATOM_Tonga_SCLK_Dependency_Table {
 	UCHAR ucRevId;
 	UCHAR ucNumEntries; 										/* Number of entries. */
-	ATOM_Tonga_SCLK_Dependency_Record entries[1];				 /* Dynamically allocate entries. */
+	ATOM_Tonga_SCLK_Dependency_Record entries[];				 /* Dynamically allocate entries. */
 } ATOM_Tonga_SCLK_Dependency_Table;
 
 typedef struct _ATOM_Polaris_SCLK_Dependency_Record {
@@ -210,7 +210,7 @@ typedef struct _ATOM_Polaris_SCLK_Dependency_Record {
 typedef struct _ATOM_Polaris_SCLK_Dependency_Table {
 	UCHAR ucRevId;
 	UCHAR ucNumEntries;							/* Number of entries. */
-	ATOM_Polaris_SCLK_Dependency_Record entries[1];				 /* Dynamically allocate entries. */
+	ATOM_Polaris_SCLK_Dependency_Record entries[];				 /* Dynamically allocate entries. */
 } ATOM_Polaris_SCLK_Dependency_Table;
 
 typedef struct _ATOM_Tonga_PCIE_Record {
@@ -222,7 +222,7 @@ typedef struct _ATOM_Tonga_PCIE_Record {
 typedef struct _ATOM_Tonga_PCIE_Table {
 	UCHAR ucRevId;
 	UCHAR ucNumEntries; 										/* Number of entries. */
-	ATOM_Tonga_PCIE_Record entries[1];							/* Dynamically allocate entries. */
+	ATOM_Tonga_PCIE_Record entries[];							/* Dynamically allocate entries. */
 } ATOM_Tonga_PCIE_Table;
 
 typedef struct _ATOM_Polaris10_PCIE_Record {
@@ -235,7 +235,7 @@ typedef struct _ATOM_Polaris10_PCIE_Record {
 typedef struct _ATOM_Polaris10_PCIE_Table {
 	UCHAR ucRevId;
 	UCHAR ucNumEntries;                                         /* Number of entries. */
-	ATOM_Polaris10_PCIE_Record entries[1];                      /* Dynamically allocate entries. */
+	ATOM_Polaris10_PCIE_Record entries[];                      /* Dynamically allocate entries. */
 } ATOM_Polaris10_PCIE_Table;
 
 
@@ -252,7 +252,7 @@ typedef struct _ATOM_Tonga_MM_Dependency_Record {
 typedef struct _ATOM_Tonga_MM_Dependency_Table {
 	UCHAR ucRevId;
 	UCHAR ucNumEntries; 										/* Number of entries. */
-	ATOM_Tonga_MM_Dependency_Record entries[1]; 			   /* Dynamically allocate entries. */
+	ATOM_Tonga_MM_Dependency_Record entries[]; 			   /* Dynamically allocate entries. */
 } ATOM_Tonga_MM_Dependency_Table;
 
 typedef struct _ATOM_Tonga_Voltage_Lookup_Record {
@@ -265,7 +265,7 @@ typedef struct _ATOM_Tonga_Voltage_Lookup_Record {
 typedef struct _ATOM_Tonga_Voltage_Lookup_Table {
 	UCHAR ucRevId;
 	UCHAR ucNumEntries; 										/* Number of entries. */
-	ATOM_Tonga_Voltage_Lookup_Record entries[1];				/* Dynamically allocate entries. */
+	ATOM_Tonga_Voltage_Lookup_Record entries[];				/* Dynamically allocate entries. */
 } ATOM_Tonga_Voltage_Lookup_Table;
 
 typedef struct _ATOM_Tonga_Fan_Table {
drivers/gpu/drm/arm/display/komeda/komeda_pipeline_state.c +6 -3
index e672b9cffee3..88b58153f9d6 100644
@@ -1223,7 +1223,7 @@ int komeda_build_display_data_flow(struct komeda_crtc *kcrtc,
 	return 0;
 }
 
-static void
+static int
 komeda_pipeline_unbound_components(struct komeda_pipeline *pipe,
 				   struct komeda_pipeline_state *new)
 {
@@ -1243,8 +1243,12 @@ komeda_pipeline_unbound_components(struct komeda_pipeline *pipe,
 		c = komeda_pipeline_get_component(pipe, id);
 		c_st = komeda_component_get_state_and_set_user(c,
 				drm_st, NULL, new->crtc);
+		if (PTR_ERR(c_st) == -EDEADLK)
+			return -EDEADLK;
 		WARN_ON(IS_ERR(c_st));
 	}
+
+	return 0;
 }
 
 /* release unclaimed pipeline resource */
@@ -1266,9 +1270,8 @@ int komeda_release_unclaimed_resources(struct komeda_pipeline *pipe,
 	if (WARN_ON(IS_ERR_OR_NULL(st)))
 		return -EINVAL;
 
-	komeda_pipeline_unbound_components(pipe, st);
+	return komeda_pipeline_unbound_components(pipe, st);
 
-	return 0;
 }
 
 /* Since standalong disabled components must be disabled separately and in the
drivers/gpu/drm/i915/gem/i915_gem_context.c +1 -0
index 60f6a731f1bf..0eb4a0739fa2 100644
@@ -642,6 +642,7 @@ static int set_proto_ctx_sseu(struct drm_i915_file_private *fpriv,
 		if (idx >= pc->num_user_engines)
 			return -EINVAL;
 
+		idx = array_index_nospec(idx, pc->num_user_engines);
 		pe = &pc->user_engines[idx];
 
 		/* Only render engine supports RPCS configuration. */
drivers/gpu/drm/i915/i915_perf.c +3 -12
index 774d45142091..f4d27ceafdce 100644
@@ -3795,11 +3795,8 @@ int i915_perf_open_ioctl(struct drm_device *dev, void *data,
 	u32 known_open_flags;
 	int ret;
 
-	if (!perf->i915) {
-		drm_dbg(&perf->i915->drm,
-			"i915 perf interface not available for this system\n");
+	if (!perf->i915)
 		return -ENOTSUPP;
-	}
 
 	known_open_flags = I915_PERF_FLAG_FD_CLOEXEC |
 			   I915_PERF_FLAG_FD_NONBLOCK |
@@ -4090,11 +4087,8 @@ int i915_perf_add_config_ioctl(struct drm_device *dev, void *data,
 	struct i915_oa_reg *regs;
 	int err, id;
 
-	if (!perf->i915) {
-		drm_dbg(&perf->i915->drm,
-			"i915 perf interface not available for this system\n");
+	if (!perf->i915)
 		return -ENOTSUPP;
-	}
 
 	if (!perf->metrics_kobj) {
 		drm_dbg(&perf->i915->drm,
@@ -4256,11 +4250,8 @@ int i915_perf_remove_config_ioctl(struct drm_device *dev, void *data,
 	struct i915_oa_config *oa_config;
 	int ret;
 
-	if (!perf->i915) {
-		drm_dbg(&perf->i915->drm,
-			"i915 perf interface not available for this system\n");
+	if (!perf->i915)
 		return -ENOTSUPP;
-	}
 
 	if (i915_perf_stream_paranoid && !perfmon_capable()) {
 		drm_dbg(&perf->i915->drm,
drivers/gpu/drm/msm/dp/dp_panel.c +2 -19
index 62b742e701d2..f9d31069f484 100644
@@ -263,26 +263,9 @@ int dp_panel_get_modes(struct dp_panel *dp_panel,
 
 static u8 dp_panel_get_edid_checksum(struct edid *edid)
 {
-	struct edid *last_block;
-	u8 *raw_edid;
-	bool is_edid_corrupt = false;
+	edid += edid->extensions;
 
-	if (!edid) {
-		DRM_ERROR("invalid edid input\n");
-		return 0;
-	}
-
-	raw_edid = (u8 *)edid;
-	raw_edid += (edid->extensions * EDID_LENGTH);
-	last_block = (struct edid *)raw_edid;
-
-	/* block type extension */
-	drm_edid_block_valid(raw_edid, 1, false, &is_edid_corrupt);
-	if (!is_edid_corrupt)
-		return last_block->checksum;
-
-	DRM_ERROR("Invalid block, no checksum\n");
-	return 0;
+	return edid->checksum;
 }
 
 void dp_panel_handle_sink_request(struct dp_panel *dp_panel)
drivers/gpu/drm/panel/panel-arm-versatile.c +2 -0
index abb0788843c6..503ecea72c5e 100644
@@ -267,6 +267,8 @@ static int versatile_panel_get_modes(struct drm_panel *panel,
 	connector->display_info.bus_flags = vpanel->panel_type->bus_flags;
 
 	mode = drm_mode_duplicate(connector->dev, &vpanel->panel_type->mode);
+	if (!mode)
+		return -ENOMEM;
 	drm_mode_set_name(mode);
 	mode->type = DRM_MODE_TYPE_DRIVER | DRM_MODE_TYPE_PREFERRED;
 
drivers/gpu/drm/panel/panel-sitronix-st7703.c +13 -12
index a2c303e5732c..f50cc70e6337 100644
@@ -428,29 +428,30 @@ static int st7703_prepare(struct drm_panel *panel)
 		return 0;
 
 	dev_dbg(ctx->dev, "Resetting the panel\n");
-	ret = regulator_enable(ctx->vcc);
+	gpiod_set_value_cansleep(ctx->reset_gpio, 1);
+
+	ret = regulator_enable(ctx->iovcc);
 	if (ret < 0) {
-		dev_err(ctx->dev, "Failed to enable vcc supply: %d\n", ret);
+		dev_err(ctx->dev, "Failed to enable iovcc supply: %d\n", ret);
 		return ret;
 	}
-	ret = regulator_enable(ctx->iovcc);
+
+	ret = regulator_enable(ctx->vcc);
 	if (ret < 0) {
-		dev_err(ctx->dev, "Failed to enable iovcc supply: %d\n", ret);
-		goto disable_vcc;
+		dev_err(ctx->dev, "Failed to enable vcc supply: %d\n", ret);
+		regulator_disable(ctx->iovcc);
+		return ret;
 	}
 
-	gpiod_set_value_cansleep(ctx->reset_gpio, 1);
-	usleep_range(20, 40);
+	/* Give power supplies time to stabilize before deasserting reset. */
+	usleep_range(10000, 20000);
+
 	gpiod_set_value_cansleep(ctx->reset_gpio, 0);
-	msleep(20);
+	usleep_range(15000, 20000);
 
 	ctx->prepared = true;
 
 	return 0;
-
-disable_vcc:
-	regulator_disable(ctx->vcc);
-	return ret;
 }
 
 static int st7703_get_modes(struct drm_panel *panel,
drivers/gpu/drm/panel/panel-tpo-tpg110.c +2 -0
index e3791dad6830..3360e7ccb0a7 100644
@@ -379,6 +379,8 @@ static int tpg110_get_modes(struct drm_panel *panel,
 	connector->display_info.bus_flags = tpg->panel_mode->bus_flags;
 
 	mode = drm_mode_duplicate(connector->dev, &tpg->panel_mode->mode);
+	if (!mode)
+		return -ENOMEM;
 	drm_mode_set_name(mode);
 	mode->type = DRM_MODE_TYPE_DRIVER | DRM_MODE_TYPE_PREFERRED;
 
drivers/gpu/drm/qxl/qxl_display.c +3 -0
index 9e0a1e836011..dc04412784a0 100644
@@ -1221,6 +1221,9 @@ int qxl_destroy_monitors_object(struct qxl_device *qdev)
 	if (!qdev->monitors_config_bo)
 		return 0;
 
+	kfree(qdev->dumb_heads);
+	qdev->dumb_heads = NULL;
+
 	qdev->monitors_config = NULL;
 	qdev->ram_header->monitors_config = 0;
 
drivers/gpu/drm/vmwgfx/vmwgfx_surface.c +2 -2
index 5d53a5f9d123..872af7d4b3fc 100644
@@ -807,9 +807,9 @@ int vmw_surface_define_ioctl(struct drm_device *dev, void *data,
 	metadata->num_sizes = num_sizes;
 	user_srf->size = size;
 	metadata->sizes =
-		memdup_user((struct drm_vmw_size __user *)(unsigned long)
+		memdup_array_user((struct drm_vmw_size __user *)(unsigned long)
 			    req->size_addr,
-			    sizeof(*metadata->sizes) * metadata->num_sizes);
+			    metadata->num_sizes, sizeof(*metadata->sizes));
 	if (IS_ERR(metadata->sizes)) {
 		ret = PTR_ERR(metadata->sizes);
 		goto out_no_sizes;
drivers/hid/hid-ids.h +1 -0
index 5fceefb3c707..caca5d6e95d6 100644
@@ -349,6 +349,7 @@
 
 #define USB_VENDOR_ID_DELL				0x413c
 #define USB_DEVICE_ID_DELL_PIXART_USB_OPTICAL_MOUSE	0x301a
+#define USB_DEVICE_ID_DELL_PRO_WIRELESS_KM5221W		0x4503
 
 #define USB_VENDOR_ID_DELORME		0x1163
 #define USB_DEVICE_ID_DELORME_EARTHMATE	0x0100
drivers/hid/hid-lenovo.c +45 -23

83 lines not on this page · raw message

drivers/hid/hid-quirks.c +1 -0
index 96ca7d981ee2..225138a39d32 100644
@@ -66,6 +66,7 @@ static const struct hid_device_id hid_quirks[] = {
 	{ HID_USB_DEVICE(USB_VENDOR_ID_CORSAIR, USB_DEVICE_ID_CORSAIR_STRAFE), HID_QUIRK_NO_INIT_REPORTS | HID_QUIRK_ALWAYS_POLL },
 	{ HID_USB_DEVICE(USB_VENDOR_ID_CREATIVELABS, USB_DEVICE_ID_CREATIVE_SB_OMNI_SURROUND_51), HID_QUIRK_NOGET },
 	{ HID_USB_DEVICE(USB_VENDOR_ID_DELL, USB_DEVICE_ID_DELL_PIXART_USB_OPTICAL_MOUSE), HID_QUIRK_ALWAYS_POLL },
+	{ HID_USB_DEVICE(USB_VENDOR_ID_DELL, USB_DEVICE_ID_DELL_PRO_WIRELESS_KM5221W), HID_QUIRK_ALWAYS_POLL },
 	{ HID_USB_DEVICE(USB_VENDOR_ID_DMI, USB_DEVICE_ID_DMI_ENC), HID_QUIRK_NOGET },
 	{ HID_USB_DEVICE(USB_VENDOR_ID_DRACAL_RAPHNET, USB_DEVICE_ID_RAPHNET_2NES2SNES), HID_QUIRK_MULTI_INPUT },
 	{ HID_USB_DEVICE(USB_VENDOR_ID_DRACAL_RAPHNET, USB_DEVICE_ID_RAPHNET_4NES4SNES), HID_QUIRK_MULTI_INPUT },
drivers/i2c/busses/i2c-designware-master.c +16 -3
index b79e1380ff68..5ceb81319634 100644
@@ -456,10 +456,16 @@ i2c_dw_xfer_msg(struct dw_i2c_dev *dev)
 
 		/*
 		 * Because we don't know the buffer length in the
-		 * I2C_FUNC_SMBUS_BLOCK_DATA case, we can't stop
-		 * the transaction here.
+		 * I2C_FUNC_SMBUS_BLOCK_DATA case, we can't stop the
+		 * transaction here. Also disable the TX_EMPTY IRQ
+		 * while waiting for the data length byte to avoid the
+		 * bogus interrupts flood.
 		 */
-		if (buf_len > 0 || flags & I2C_M_RECV_LEN) {
+		if (flags & I2C_M_RECV_LEN) {
+			dev->status |= STATUS_WRITE_IN_PROGRESS;
+			intr_mask &= ~DW_IC_INTR_TX_EMPTY;
+			break;
+		} else if (buf_len > 0) {
 			/* more bytes to be written */
 			dev->status |= STATUS_WRITE_IN_PROGRESS;
 			break;
@@ -495,6 +501,13 @@ i2c_dw_recv_len(struct dw_i2c_dev *dev, u8 len)
 	msgs[dev->msg_read_idx].len = len;
 	msgs[dev->msg_read_idx].flags &= ~I2C_M_RECV_LEN;
 
+	/*
+	 * Received buffer length, re-enable TX_EMPTY interrupt
+	 * to resume the SMBUS transaction.
+	 */
+	regmap_update_bits(dev->map, DW_IC_INTR_MASK, DW_IC_INTR_TX_EMPTY,
+			   DW_IC_INTR_TX_EMPTY);
+
 	return len;
 }
 
drivers/i2c/busses/i2c-i801.c +9 -10
index 656e2acf3cd9..30b725d11178 100644
@@ -702,15 +702,11 @@ static int i801_block_transaction_byte_by_byte(struct i801_priv *priv,
 		return i801_check_post(priv, result ? priv->status : -ETIMEDOUT);
 	}
 
-	for (i = 1; i <= len; i++) {
-		if (i == len && read_write == I2C_SMBUS_READ)
-			smbcmd |= SMBHSTCNT_LAST_BYTE;
-		outb_p(smbcmd, SMBHSTCNT(priv));
-
-		if (i == 1)
-			outb_p(inb(SMBHSTCNT(priv)) | SMBHSTCNT_START,
-			       SMBHSTCNT(priv));
+	if (len == 1 && read_write == I2C_SMBUS_READ)
+		smbcmd |= SMBHSTCNT_LAST_BYTE;
+	outb_p(smbcmd | SMBHSTCNT_START, SMBHSTCNT(priv));
 
+	for (i = 1; i <= len; i++) {
 		status = i801_wait_byte_done(priv);
 		if (status)
 			goto exit;
@@ -733,9 +729,12 @@ static int i801_block_transaction_byte_by_byte(struct i801_priv *priv,
 			data->block[0] = len;
 		}
 
-		/* Retrieve/store value in SMBBLKDAT */
-		if (read_write == I2C_SMBUS_READ)
+		if (read_write == I2C_SMBUS_READ) {
 			data->block[i] = inb_p(SMBBLKDAT(priv));
+			if (i == len - 1)
+				outb_p(smbcmd | SMBHSTCNT_LAST_BYTE, SMBHSTCNT(priv));
+		}
+
 		if (read_write == I2C_SMBUS_WRITE && i+1 <= len)
 			outb_p(data->block[i+1], SMBBLKDAT(priv));
 
drivers/i2c/busses/i2c-pxa.c +68 -8

113 lines not on this page · raw message

drivers/i2c/busses/i2c-sun6i-p2wi.c +5 -0
index 9e3483f507ff..f2ed13b55108 100644
@@ -201,6 +201,11 @@ static int p2wi_probe(struct platform_device *pdev)
 		return -EINVAL;
 	}
 
+	if (clk_freq == 0) {
+		dev_err(dev, "clock-frequency is set to 0 in DT\n");
+		return -EINVAL;
+	}
+
 	if (of_get_child_count(np) > 1) {
 		dev_err(dev, "P2WI only supports one slave device\n");
 		return -EINVAL;
drivers/i2c/i2c-core.h +1 -1
index 8ce261167a2d..ea17f13b44c8 100644
@@ -29,7 +29,7 @@ int i2c_dev_irq_from_resources(const struct resource *resources,
  */
 static inline bool i2c_in_atomic_xfer_mode(void)
 {
-	return system_state > SYSTEM_RUNNING && irqs_disabled();
+	return system_state > SYSTEM_RUNNING && !preemptible();
 }
 
 static inline int __i2c_lock_bus_helper(struct i2c_adapter *adap)
drivers/i2c/i2c-dev.c +2 -2
index 6fd2b6718b08..9fefceb3a95d 100644
@@ -450,8 +450,8 @@ static long i2cdev_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
 		if (rdwr_arg.nmsgs > I2C_RDWR_IOCTL_MAX_MSGS)
 			return -EINVAL;
 
-		rdwr_pa = memdup_user(rdwr_arg.msgs,
-				      rdwr_arg.nmsgs * sizeof(struct i2c_msg));
+		rdwr_pa = memdup_array_user(rdwr_arg.msgs,
+					    rdwr_arg.nmsgs, sizeof(struct i2c_msg));
 		if (IS_ERR(rdwr_pa))
 			return PTR_ERR(rdwr_pa);
 
drivers/i3c/master/i3c-master-cdns.c +3 -3
index 5b37ffe5ad5b..4a49c75a9408 100644
@@ -192,7 +192,7 @@
 #define SLV_STATUS1_HJ_DIS		BIT(18)
 #define SLV_STATUS1_MR_DIS		BIT(17)
 #define SLV_STATUS1_PROT_ERR		BIT(16)
-#define SLV_STATUS1_DA(x)		(((s) & GENMASK(15, 9)) >> 9)
+#define SLV_STATUS1_DA(s)		(((s) & GENMASK(15, 9)) >> 9)
 #define SLV_STATUS1_HAS_DA		BIT(8)
 #define SLV_STATUS1_DDR_RX_FULL		BIT(7)
 #define SLV_STATUS1_DDR_TX_FULL		BIT(6)
@@ -1624,13 +1624,13 @@ static int cdns_i3c_master_probe(struct platform_device *pdev)
 	/* Device ID0 is reserved to describe this master. */
 	master->maxdevs = CONF_STATUS0_DEVS_NUM(val);
 	master->free_rr_slots = GENMASK(master->maxdevs, 1);
+	master->caps.ibirfifodepth = CONF_STATUS0_IBIR_DEPTH(val);
+	master->caps.cmdrfifodepth = CONF_STATUS0_CMDR_DEPTH(val);
 
 	val = readl(master->regs + CONF_STATUS1);
 	master->caps.cmdfifodepth = CONF_STATUS1_CMD_DEPTH(val);
 	master->caps.rxfifodepth = CONF_STATUS1_RX_DEPTH(val);
 	master->caps.txfifodepth = CONF_STATUS1_TX_DEPTH(val);
-	master->caps.ibirfifodepth = CONF_STATUS0_IBIR_DEPTH(val);
-	master->caps.cmdrfifodepth = CONF_STATUS0_CMDR_DEPTH(val);
 
 	spin_lock_init(&master->ibi.lock);
 	master->ibi.num_slots = CONF_STATUS1_IBI_HW_RES(val);
drivers/i3c/master/mipi-i3c-hci/dat_v1.c +19 -10
index 97bb49ff5b53..47b9b4d4ed3f 100644
@@ -64,15 +64,17 @@ static int hci_dat_v1_init(struct i3c_hci *hci)
 		return -EOPNOTSUPP;
 	}
 
-	/* use a bitmap for faster free slot search */
-	hci->DAT_data = bitmap_zalloc(hci->DAT_entries, GFP_KERNEL);
-	if (!hci->DAT_data)
-		return -ENOMEM;
-
-	/* clear them */
-	for (dat_idx = 0; dat_idx < hci->DAT_entries; dat_idx++) {
-		dat_w0_write(dat_idx, 0);
-		dat_w1_write(dat_idx, 0);
+	if (!hci->DAT_data) {
+		/* use a bitmap for faster free slot search */
+		hci->DAT_data = bitmap_zalloc(hci->DAT_entries, GFP_KERNEL);
+		if (!hci->DAT_data)
+			return -ENOMEM;
+
+		/* clear them */
+		for (dat_idx = 0; dat_idx < hci->DAT_entries; dat_idx++) {
+			dat_w0_write(dat_idx, 0);
+			dat_w1_write(dat_idx, 0);
+		}
 	}
 
 	return 0;
@@ -87,7 +89,13 @@ static void hci_dat_v1_cleanup(struct i3c_hci *hci)
 static int hci_dat_v1_alloc_entry(struct i3c_hci *hci)
 {
 	unsigned int dat_idx;
+	int ret;
 
+	if (!hci->DAT_data) {
+		ret = hci_dat_v1_init(hci);
+		if (ret)
+			return ret;
+	}
 	dat_idx = find_first_zero_bit(hci->DAT_data, hci->DAT_entries);
 	if (dat_idx >= hci->DAT_entries)
 		return -ENOENT;
@@ -103,7 +111,8 @@ static void hci_dat_v1_free_entry(struct i3c_hci *hci, unsigned int dat_idx)
 {
 	dat_w0_write(dat_idx, 0);
 	dat_w1_write(dat_idx, 0);
-	__clear_bit(dat_idx, hci->DAT_data);
+	if (hci->DAT_data)
+		__clear_bit(dat_idx, hci->DAT_data);
 }
 
 static void hci_dat_v1_set_dynamic_addr(struct i3c_hci *hci,
drivers/i3c/master/mipi-i3c-hci/dma.c +1 -1
index af873a9be050..dd2dc0039960 100644
@@ -734,7 +734,7 @@ static bool hci_dma_irq_handler(struct i3c_hci *hci, unsigned int mask)
 	unsigned int i;
 	bool handled = false;
 
-	for (i = 0; mask && i < 8; i++) {
+	for (i = 0; mask && i < rings->total; i++) {
 		struct hci_rh_data *rh;
 		u32 status;
 
drivers/i3c/master/svc-i3c-master.c +44 -1

146 lines not on this page · raw message

drivers/infiniband/hw/hfi1/pcie.c +2 -7
index a0802332c8cb..5395cf56fbd9 100644
@@ -3,6 +3,7 @@
  * Copyright(c) 2015 - 2019 Intel Corporation.
  */
 
+#include <linux/bitfield.h>
 #include <linux/pci.h>
 #include <linux/io.h>
 #include <linux/delay.h>
@@ -212,12 +213,6 @@ static u32 extract_speed(u16 linkstat)
 	return speed;
 }
 
-/* return the PCIe link speed from the given link status */
-static u32 extract_width(u16 linkstat)
-{
-	return (linkstat & PCI_EXP_LNKSTA_NLW) >> PCI_EXP_LNKSTA_NLW_SHIFT;
-}
-
 /* read the link status and set dd->{lbus_width,lbus_speed,lbus_info} */
 static void update_lbus_info(struct hfi1_devdata *dd)
 {
@@ -230,7 +225,7 @@ static void update_lbus_info(struct hfi1_devdata *dd)
 		return;
 	}
 
-	dd->lbus_width = extract_width(linkstat);
+	dd->lbus_width = FIELD_GET(PCI_EXP_LNKSTA_NLW, linkstat);
 	dd->lbus_speed = extract_speed(linkstat);
 	snprintf(dd->lbus_info, sizeof(dd->lbus_info),
 		 "PCIe,%uMHz,x%u", dd->lbus_speed, dd->lbus_width);
drivers/input/joystick/xpad.c +1 -0
index 8341ea7c4eb6..a87af6a89508 100644
@@ -449,6 +449,7 @@ static const struct usb_device_id xpad_table[] = {
 	XPAD_XBOX360_VENDOR(0x0f0d),		/* Hori Controllers */
 	XPAD_XBOXONE_VENDOR(0x0f0d),		/* Hori Controllers */
 	XPAD_XBOX360_VENDOR(0x1038),		/* SteelSeries Controllers */
+	XPAD_XBOXONE_VENDOR(0x10f5),		/* Turtle Beach Controllers */
 	XPAD_XBOX360_VENDOR(0x11c9),		/* Nacon GC100XF */
 	XPAD_XBOX360_VENDOR(0x11ff),		/* PXN V900 */
 	XPAD_XBOX360_VENDOR(0x1209),		/* Ardwiino Controllers */
drivers/mcb/mcb-core.c +1 -0
index ce58d34b06d0..5f949e26d837 100644
@@ -246,6 +246,7 @@ int mcb_device_register(struct mcb_bus *bus, struct mcb_device *dev)
 	return 0;
 
 out:
+	put_device(&dev->dev);
 
 	return ret;
 }
drivers/mcb/mcb-parse.c +1 -1
index 656b6b71c768..1ae37e693de0 100644
@@ -106,7 +106,7 @@ static int chameleon_parse_gdd(struct mcb_bus *bus,
 	return 0;
 
 err:
-	put_device(&mdev->dev);
+	mcb_free_dev(mdev);
 
 	return ret;
 }
drivers/media/cec/platform/Makefile +1 -1
index ea6f8ee8161c..e5e441faa0ba 100644
@@ -6,7 +6,7 @@
 # Please keep it in alphabetic order
 obj-$(CONFIG_CEC_CROS_EC)	+= cros-ec/
 obj-$(CONFIG_CEC_GPIO)		+= cec-gpio/
-obj-$(CONFIG_CEC_MESON_AO)	+= meson/
+obj-y				+= meson/
 obj-$(CONFIG_CEC_SAMSUNG_S5P)	+= s5p/
 obj-$(CONFIG_CEC_SECO)		+= seco/
 obj-$(CONFIG_CEC_STI)		+= sti/
drivers/media/i2c/ccs/ccs-core.c +1 -1
index 67bb770ed63f..9dc5d42b3199 100644
@@ -3089,7 +3089,7 @@ static int ccs_open(struct v4l2_subdev *sd, struct v4l2_subdev_fh *fh)
 		try_fmt->code = sensor->internal_csi_format->code;
 		try_fmt->field = V4L2_FIELD_NONE;
 
-		if (ssd != sensor->pixel_array)
+		if (ssd == sensor->pixel_array)
 			continue;
 
 		try_comp = v4l2_subdev_get_try_compose(sd, fh->state, i);
drivers/media/i2c/ccs/ccs-quirk.h +1 -3
index 5838fcda92fd..0b1a64958d71 100644
@@ -32,12 +32,10 @@ struct ccs_sensor;
  *		@reg: Pointer to the register to access
  *		@value: Register value, set by the caller on write, or
  *			by the quirk on read
- *
- * @flags: Quirk flags
- *
  *		@return: 0 on success, -ENOIOCTLCMD if no register
  *			 access may be done by the caller (default read
  *			 value is zero), else negative error code on error
+ * @flags: Quirk flags
  */
 struct ccs_quirk {
 	int (*limits)(struct ccs_sensor *sensor);
drivers/media/pci/cobalt/cobalt-driver.c +6 -5
index 16af58f2f93c..f9cee061517b 100644
@@ -8,6 +8,7 @@
  *  All rights reserved.
  */
 
+#include <linux/bitfield.h>
 #include <linux/delay.h>
 #include <media/i2c/adv7604.h>
 #include <media/i2c/adv7842.h>
@@ -210,17 +211,17 @@ void cobalt_pcie_status_show(struct cobalt *cobalt)
 	pcie_capability_read_word(pci_dev, PCI_EXP_LNKSTA, &stat);
 	cobalt_info("PCIe link capability 0x%08x: %s per lane and %u lanes\n",
 			capa, get_link_speed(capa),
-			(capa & PCI_EXP_LNKCAP_MLW) >> 4);
+			FIELD_GET(PCI_EXP_LNKCAP_MLW, capa));
 	cobalt_info("PCIe link control 0x%04x\n", ctrl);
 	cobalt_info("PCIe link status 0x%04x: %s per lane and %u lanes\n",
 		    stat, get_link_speed(stat),
-		    (stat & PCI_EXP_LNKSTA_NLW) >> 4);
+		    FIELD_GET(PCI_EXP_LNKSTA_NLW, stat));
 
 	/* Bus */
 	pcie_capability_read_dword(pci_bus_dev, PCI_EXP_LNKCAP, &capa);
 	cobalt_info("PCIe bus link capability 0x%08x: %s per lane and %u lanes\n",
 			capa, get_link_speed(capa),
-			(capa & PCI_EXP_LNKCAP_MLW) >> 4);
+			FIELD_GET(PCI_EXP_LNKCAP_MLW, capa));
 
 	/* Slot */
 	pcie_capability_read_dword(pci_dev, PCI_EXP_SLTCAP, &capa);
@@ -239,7 +240,7 @@ static unsigned pcie_link_get_lanes(struct cobalt *cobalt)
 	if (!pci_is_pcie(pci_dev))
 		return 0;
 	pcie_capability_read_word(pci_dev, PCI_EXP_LNKSTA, &link);
-	return (link & PCI_EXP_LNKSTA_NLW) >> 4;
+	return FIELD_GET(PCI_EXP_LNKSTA_NLW, link);
 }
 
 static unsigned pcie_bus_link_get_lanes(struct cobalt *cobalt)
@@ -250,7 +251,7 @@ static unsigned pcie_bus_link_get_lanes(struct cobalt *cobalt)
 	if (!pci_is_pcie(pci_dev))
 		return 0;
 	pcie_capability_read_dword(pci_dev, PCI_EXP_LNKCAP, &link);
-	return (link & PCI_EXP_LNKCAP_MLW) >> 4;
+	return FIELD_GET(PCI_EXP_LNKCAP_MLW, link);
 }
 
 static void msi_config_show(struct cobalt *cobalt, struct pci_dev *pci_dev)
drivers/media/platform/cadence/cdns-csi2rx.c +6 -1
index f2b4ddd31177..292061090444 100644
@@ -407,8 +407,10 @@ static int csi2rx_parse_dt(struct csi2rx_priv *csi2rx)
 							   fwh,
 							   struct v4l2_async_subdev);
 	of_node_put(ep);
-	if (IS_ERR(asd))
+	if (IS_ERR(asd)) {
+		v4l2_async_notifier_cleanup(&csi2rx->notifier);
 		return PTR_ERR(asd);
+	}
 
 	csi2rx->notifier.ops = &csi2rx_notifier_ops;
 
@@ -471,6 +473,7 @@ static int csi2rx_probe(struct platform_device *pdev)
 	return 0;
 
 err_cleanup:
+	v4l2_async_notifier_unregister(&csi2rx->notifier);
 	v4l2_async_notifier_cleanup(&csi2rx->notifier);
 err_free_priv:
 	kfree(csi2rx);
@@ -481,6 +484,8 @@ static int csi2rx_remove(struct platform_device *pdev)
 {
 	struct csi2rx_priv *csi2rx = platform_get_drvdata(pdev);
 
+	v4l2_async_notifier_unregister(&csi2rx->notifier);
+	v4l2_async_notifier_cleanup(&csi2rx->notifier);
 	v4l2_async_unregister_subdev(&csi2rx->subdev);
 	kfree(csi2rx);
 
drivers/media/platform/qcom/camss/camss-vfe-170.c +3 -19
index 02cb8005504a..af264c1f7b0e 100644
@@ -7,7 +7,6 @@
  * Copyright (C) 2020-2021 Linaro Ltd.
  */
 
-#include <linux/delay.h>
 #include <linux/interrupt.h>
 #include <linux/io.h>
 #include <linux/iopoll.h>
@@ -498,35 +497,20 @@ static int vfe_enable_output(struct vfe_line *line)
 	return 0;
 }
 
-static int vfe_disable_output(struct vfe_line *line)
+static void vfe_disable_output(struct vfe_line *line)
 {
 	struct vfe_device *vfe = to_vfe(line);
 	struct vfe_output *output = &line->output;
 	unsigned long flags;
 	unsigned int i;
-	bool done;
-	int timeout = 0;
-
-	do {
-		spin_lock_irqsave(&vfe->output_lock, flags);
-		done = !output->gen2.active_num;
-		spin_unlock_irqrestore(&vfe->output_lock, flags);
-		usleep_range(10000, 20000);
-
-		if (timeout++ == 100) {
-			dev_err(vfe->camss->dev, "VFE idle timeout - resetting\n");
-			vfe_reset(vfe);
-			output->gen2.active_num = 0;
-			return 0;
-		}
-	} while (!done);
 
 	spin_lock_irqsave(&vfe->output_lock, flags);
 	for (i = 0; i < output->wm_num; i++)
 		vfe_wm_stop(vfe, output->wm_idx[i]);
+	output->gen2.active_num = 0;
 	spin_unlock_irqrestore(&vfe->output_lock, flags);
 
-	return 0;
+	vfe_reset(vfe);
 }
 
 /*
drivers/media/platform/qcom/camss/camss-vfe.c +3 -2
index e0f3a36f3f3f..8beea27004ca 100644
@@ -533,7 +533,8 @@ static int vfe_check_clock_rates(struct vfe_device *vfe)
 		struct camss_clock *clock = &vfe->clock[i];
 
 		if (!strcmp(clock->name, "vfe0") ||
-		    !strcmp(clock->name, "vfe1")) {
+		    !strcmp(clock->name, "vfe1") ||
+		    !strcmp(clock->name, "vfe_lite")) {
 			u64 min_rate = 0;
 			unsigned long rate;
 
@@ -607,7 +608,7 @@ static int vfe_get(struct vfe_device *vfe)
 	} else {
 		ret = vfe_check_clock_rates(vfe);
 		if (ret < 0)
-			goto error_pm_runtime_get;
+			goto error_pm_domain;
 	}
 	vfe->power_count++;
 
drivers/media/platform/qcom/camss/camss.c +6 -6
index ef100d5f7763..e53f575b32f5 100644
@@ -1369,6 +1369,12 @@ static int camss_probe(struct platform_device *pdev)
 		goto err_cleanup;
 	}
 
+	ret = camss_configure_pd(camss);
+	if (ret < 0) {
+		dev_err(dev, "Failed to configure power domains: %d\n", ret);
+		goto err_cleanup;
+	}
+
 	ret = camss_init_subdevices(camss);
 	if (ret < 0)
 		goto err_cleanup;
@@ -1421,12 +1427,6 @@ static int camss_probe(struct platform_device *pdev)
 		}
 	}
 
-	ret = camss_configure_pd(camss);
-	if (ret < 0) {
-		dev_err(dev, "Failed to configure power domains: %d\n", ret);
-		return ret;
-	}
-
 	pm_runtime_enable(dev);
 
 	return 0;
drivers/media/platform/qcom/venus/hfi_msgs.c +1 -1
index 9a2bdb002edc..68f208e3071d 100644
@@ -367,7 +367,7 @@ session_get_prop_buf_req(struct hfi_msg_session_property_info_pkt *pkt,
 		memcpy(&bufreq[idx], buf_req, sizeof(*bufreq));
 		idx++;
 
-		if (idx > HFI_BUFFER_TYPE_MAX)
+		if (idx >= HFI_BUFFER_TYPE_MAX)
 			return HFI_ERR_SESSION_INVALID_PARAMETER;
 
 		req_bytes -= sizeof(struct hfi_buffer_requirements);
drivers/media/platform/qcom/venus/hfi_parser.c +15 -0
index 5b8389b98299..a04673d2c3ed 100644
@@ -19,6 +19,9 @@ static void init_codecs(struct venus_core *core)
 	struct hfi_plat_caps *caps = core->caps, *cap;
 	unsigned long bit;
 
+	if (hweight_long(core->dec_codecs) + hweight_long(core->enc_codecs) > MAX_CODEC_NUM)
+		return;
+
 	for_each_set_bit(bit, &core->dec_codecs, MAX_CODEC_NUM) {
 		cap = &caps[core->codecs_count++];
 		cap->codec = BIT(bit);
@@ -86,6 +89,9 @@ static void fill_profile_level(struct hfi_plat_caps *cap, const void *data,
 {
 	const struct hfi_profile_level *pl = data;
 
+	if (cap->num_pl + num >= HFI_MAX_PROFILE_COUNT)
+		return;
+
 	memcpy(&cap->pl[cap->num_pl], pl, num * sizeof(*pl));
 	cap->num_pl += num;
 }
@@ -111,6 +117,9 @@ fill_caps(struct hfi_plat_caps *cap, const void *data, unsigned int num)
 {
 	const struct hfi_capability *caps = data;
 
+	if (cap->num_caps + num >= MAX_CAP_ENTRIES)
+		return;
+
 	memcpy(&cap->caps[cap->num_caps], caps, num * sizeof(*caps));
 	cap->num_caps += num;
 }
@@ -137,6 +146,9 @@ static void fill_raw_fmts(struct hfi_plat_caps *cap, const void *fmts,
 {
 	const struct raw_formats *formats = fmts;
 
+	if (cap->num_fmts + num_fmts >= MAX_FMT_ENTRIES)
+		return;
+
 	memcpy(&cap->fmts[cap->num_fmts], formats, num_fmts * sizeof(*formats));
 	cap->num_fmts += num_fmts;
 }
@@ -159,6 +171,9 @@ parse_raw_formats(struct venus_core *core, u32 codecs, u32 domain, void *data)
 		rawfmts[i].buftype = fmt->buffer_type;
 		i++;
 
+		if (i >= MAX_FMT_ENTRIES)
+			return;
+
 		if (pinfo->num_planes > MAX_PLANES)
 			break;
 
drivers/media/platform/qcom/venus/hfi_venus.c +10 -0
index c1e44cd2ef6d..9dd715af2379 100644
@@ -205,6 +205,11 @@ static int venus_write_queue(struct venus_hfi_device *hdev,
 
 	new_wr_idx = wr_idx + dwords;
 	wr_ptr = (u32 *)(queue->qmem.kva + (wr_idx << 2));
+
+	if (wr_ptr < (u32 *)queue->qmem.kva ||
+	    wr_ptr > (u32 *)(queue->qmem.kva + queue->qmem.size - sizeof(*wr_ptr)))
+		return -EINVAL;
+
 	if (new_wr_idx < qsize) {
 		memcpy(wr_ptr, packet, dwords << 2);
 	} else {
@@ -272,6 +277,11 @@ static int venus_read_queue(struct venus_hfi_device *hdev,
 	}
 
 	rd_ptr = (u32 *)(queue->qmem.kva + (rd_idx << 2));
+
+	if (rd_ptr < (u32 *)queue->qmem.kva ||
+	    rd_ptr > (u32 *)(queue->qmem.kva + queue->qmem.size - sizeof(*rd_ptr)))
+		return -EINVAL;
+
 	dwords = *rd_ptr >> 2;
 	if (!dwords)
 		return -EINVAL;
drivers/media/rc/imon.c +6 -0
index 72e4bb0fb71e..4e7c3d889d5c 100644
@@ -2427,6 +2427,12 @@ static int imon_probe(struct usb_interface *interface,
 		goto fail;
 	}
 
+	if (first_if->dev.driver != interface->dev.driver) {
+		dev_err(&interface->dev, "inconsistent driver matching\n");
+		ret = -EINVAL;
+		goto fail;
+	}
+
 	if (ifnum == 0) {
 		ictx = imon_init_intf0(interface, id);
 		if (!ictx) {
drivers/media/rc/ir-sharp-decoder.c +5 -3
index d09c38c07dbd..053151cd8f21 100644
@@ -15,7 +15,9 @@
 #define SHARP_UNIT		40  /* us */
 #define SHARP_BIT_PULSE		(8    * SHARP_UNIT) /* 320us */
 #define SHARP_BIT_0_PERIOD	(25   * SHARP_UNIT) /* 1ms (680us space) */
-#define SHARP_BIT_1_PERIOD	(50   * SHARP_UNIT) /* 2ms (1680ms space) */
+#define SHARP_BIT_1_PERIOD	(50   * SHARP_UNIT) /* 2ms (1680us space) */
+#define SHARP_BIT_0_SPACE	(17   * SHARP_UNIT) /* 680us space */
+#define SHARP_BIT_1_SPACE	(42   * SHARP_UNIT) /* 1680us space */
 #define SHARP_ECHO_SPACE	(1000 * SHARP_UNIT) /* 40 ms */
 #define SHARP_TRAILER_SPACE	(125  * SHARP_UNIT) /* 5 ms (even longer) */
 
@@ -168,8 +170,8 @@ static const struct ir_raw_timings_pd ir_sharp_timings = {
 	.header_pulse  = 0,
 	.header_space  = 0,
 	.bit_pulse     = SHARP_BIT_PULSE,
-	.bit_space[0]  = SHARP_BIT_0_PERIOD,
-	.bit_space[1]  = SHARP_BIT_1_PERIOD,
+	.bit_space[0]  = SHARP_BIT_0_SPACE,
+	.bit_space[1]  = SHARP_BIT_1_SPACE,
 	.trailer_pulse = SHARP_BIT_PULSE,
 	.trailer_space = SHARP_ECHO_SPACE,
 	.msb_first     = 1,
drivers/media/rc/lirc_dev.c +5 -1
index 7f591ff5269d..888177b91152 100644
@@ -287,7 +287,11 @@ static ssize_t lirc_transmit(struct file *file, const char __user *buf,
 		if (ret < 0)
 			goto out_kfree_raw;
 
-		count = ret;
+		/* drop trailing space */
+		if (!(ret % 2))
+			count = ret - 1;
+		else
+			count = ret;
 
 		txbuf = kmalloc_array(count, sizeof(unsigned int), GFP_KERNEL);
 		if (!txbuf) {
drivers/media/test-drivers/vivid/vivid-rds-gen.c +1 -1
index b5b104ee64c9..c57771119a34 100644
@@ -145,7 +145,7 @@ void vivid_rds_gen_fill(struct vivid_rds_gen *rds, unsigned freq,
 	rds->ta = alt;
 	rds->ms = true;
 	snprintf(rds->psname, sizeof(rds->psname), "%6d.%1d",
-		 freq / 16, ((freq & 0xf) * 10) / 16);
+		 (freq / 16) % 1000000, (((freq & 0xf) * 10) / 16) % 10);
 	if (alt)
 		strscpy(rds->radiotext,
 			" The Radio Data System can switch between different Radio Texts ",
drivers/media/usb/gspca/cpia1.c +3 -0
index 46ed95483e22..5f5fa851ca64 100644
@@ -18,6 +18,7 @@
 
 #include <linux/input.h>
 #include <linux/sched/signal.h>
+#include <linux/bitops.h>
 
 #include "gspca.h"
 
@@ -1028,6 +1029,8 @@ static int set_flicker(struct gspca_dev *gspca_dev, int on, int apply)
 			sd->params.exposure.expMode = 2;
 			sd->exposure_status = EXPOSURE_NORMAL;
 		}
+		if (sd->params.exposure.gain >= BITS_PER_TYPE(currentexp))
+			return -EINVAL;
 		currentexp = currentexp << sd->params.exposure.gain;
 		sd->params.exposure.gain = 0;
 		/* round down current exposure to nearest value */
drivers/misc/pci_endpoint_test.c +4 -0
index 3382cf4905de..0223e96aae47 100644
@@ -81,6 +81,7 @@
 #define PCI_DEVICE_ID_RENESAS_R8A774B1		0x002b
 #define PCI_DEVICE_ID_RENESAS_R8A774C0		0x002d
 #define PCI_DEVICE_ID_RENESAS_R8A774E1		0x0025
+#define PCI_DEVICE_ID_RENESAS_R8A779F0		0x0031
 
 static DEFINE_IDA(pci_endpoint_test_ida);
 
@@ -996,6 +997,9 @@ static const struct pci_device_id pci_endpoint_test_tbl[] = {
 	{ PCI_DEVICE(PCI_VENDOR_ID_RENESAS, PCI_DEVICE_ID_RENESAS_R8A774B1),},
 	{ PCI_DEVICE(PCI_VENDOR_ID_RENESAS, PCI_DEVICE_ID_RENESAS_R8A774C0),},
 	{ PCI_DEVICE(PCI_VENDOR_ID_RENESAS, PCI_DEVICE_ID_RENESAS_R8A774E1),},
+	{ PCI_DEVICE(PCI_VENDOR_ID_RENESAS, PCI_DEVICE_ID_RENESAS_R8A779F0),
+	  .driver_data = (kernel_ulong_t)&default_data,
+	},
 	{ PCI_DEVICE(PCI_VENDOR_ID_TI, PCI_DEVICE_ID_TI_J721E),
 	  .driver_data = (kernel_ulong_t)&j721e_data,
 	},
drivers/mmc/host/meson-gx-mmc.c +0 -1
index 287705729064..db2491d9a95c 100644
@@ -811,7 +811,6 @@ static void meson_mmc_start_cmd(struct mmc_host *mmc, struct mmc_command *cmd)
 
 	cmd_cfg |= FIELD_PREP(CMD_CFG_CMD_INDEX_MASK, cmd->opcode);
 	cmd_cfg |= CMD_CFG_OWNER;  /* owned by CPU */
-	cmd_cfg |= CMD_CFG_ERROR; /* stop in case of error */
 
 	meson_mmc_set_response_bits(cmd, &cmd_cfg);
 
drivers/mmc/host/sdhci-pci-gli.c +22 -0
index ad50f16658fe..c40dec3da890 100644
@@ -23,6 +23,12 @@
 #define   GLI_9750_WT_EN_ON	    0x1
 #define   GLI_9750_WT_EN_OFF	    0x0
 
+#define PCI_GLI_9750_PM_CTRL	0xFC
+#define   PCI_GLI_9750_PM_STATE	  GENMASK(1, 0)
+
+#define PCI_GLI_9750_CORRERR_MASK				0x214
+#define   PCI_GLI_9750_CORRERR_MASK_REPLAY_TIMER_TIMEOUT	  BIT(12)
+
 #define SDHCI_GLI_9750_CFG2          0x848
 #define   SDHCI_GLI_9750_CFG2_L1DLY    GENMASK(28, 24)
 #define   GLI_9750_CFG2_L1DLY_VALUE    0x1F
@@ -421,8 +427,12 @@ static void sdhci_gl9750_set_clock(struct sdhci_host *host, unsigned int clock)
 
 static void gl9750_hw_setting(struct sdhci_host *host)
 {
+	struct sdhci_pci_slot *slot = sdhci_priv(host);
+	struct pci_dev *pdev;
 	u32 value;
 
+	pdev = slot->chip->pdev;
+
 	gl9750_wt_on(host);
 
 	value = sdhci_readl(host, SDHCI_GLI_9750_CFG2);
@@ -432,6 +442,18 @@ static void gl9750_hw_setting(struct sdhci_host *host)
 			    GLI_9750_CFG2_L1DLY_VALUE);
 	sdhci_writel(host, value, SDHCI_GLI_9750_CFG2);
 
+	/* toggle PM state to allow GL9750 to enter ASPM L1.2 */
+	pci_read_config_dword(pdev, PCI_GLI_9750_PM_CTRL, &value);
+	value |= PCI_GLI_9750_PM_STATE;
+	pci_write_config_dword(pdev, PCI_GLI_9750_PM_CTRL, value);
+	value &= ~PCI_GLI_9750_PM_STATE;
+	pci_write_config_dword(pdev, PCI_GLI_9750_PM_CTRL, value);
+
+	/* mask the replay timer timeout of AER */
+	pci_read_config_dword(pdev, PCI_GLI_9750_CORRERR_MASK, &value);
+	value |= PCI_GLI_9750_CORRERR_MASK_REPLAY_TIMER_TIMEOUT;
+	pci_write_config_dword(pdev, PCI_GLI_9750_CORRERR_MASK, value);
+
 	gl9750_wt_off(host);
 }
 
drivers/mmc/host/sdhci_am654.c +1 -1
index 0158b2b1507d..210701e4fc13 100644
@@ -600,7 +600,7 @@ static int sdhci_am654_get_otap_delay(struct sdhci_host *host,
 		return 0;
 	}
 
-	for (i = MMC_TIMING_MMC_HS; i <= MMC_TIMING_MMC_HS400; i++) {
+	for (i = MMC_TIMING_LEGACY; i <= MMC_TIMING_MMC_HS400; i++) {
 
 		ret = device_property_read_u32(dev, td[i].otap_binding,
 					       &sdhci_am654->otap_del_sel[i]);
drivers/mmc/host/vub300.c +1 -0
index 7dc0e91dabfc..05ffd5bf5a6f 100644
@@ -2311,6 +2311,7 @@ static int vub300_probe(struct usb_interface *interface,
 		vub300->read_only =
 			(0x0010 & vub300->system_port_status.port_flags) ? 1 : 0;
 	} else {
+		retval = -EINVAL;
 		goto error5;
 	}
 	usb_set_intfdata(interface, vub300);
drivers/mtd/chips/cfi_cmdset_0001.c +18 -2
index 54f92d09d9cf..02aaf09d6f5c 100644
@@ -421,9 +421,25 @@ read_pri_intelext(struct map_info *map, __u16 adr)
 		extra_size = 0;
 
 		/* Protection Register info */
-		if (extp->NumProtectionFields)
+		if (extp->NumProtectionFields) {
+			struct cfi_intelext_otpinfo *otp =
+				(struct cfi_intelext_otpinfo *)&extp->extra[0];
+
 			extra_size += (extp->NumProtectionFields - 1) *
-				      sizeof(struct cfi_intelext_otpinfo);
+				sizeof(struct cfi_intelext_otpinfo);
+
+			if (extp_size >= sizeof(*extp) + extra_size) {
+				int i;
+
+				/* Do some byteswapping if necessary */
+				for (i = 0; i < extp->NumProtectionFields - 1; i++) {
+					otp->ProtRegAddr = le32_to_cpu(otp->ProtRegAddr);
+					otp->FactGroups = le16_to_cpu(otp->FactGroups);
+					otp->UserGroups = le16_to_cpu(otp->UserGroups);
+					otp++;
+				}
+			}
+		}
 	}
 
 	if (extp->MinorVersion >= '1') {
drivers/net/bonding/bond_main.c +6 -0
index 80e42852ffef..9aed194d308d 100644
@@ -1473,6 +1473,10 @@ static void bond_compute_features(struct bonding *bond)
 static void bond_setup_by_slave(struct net_device *bond_dev,
 				struct net_device *slave_dev)
 {
+	bool was_up = !!(bond_dev->flags & IFF_UP);
+
+	dev_close(bond_dev);
+
 	bond_dev->header_ops	    = slave_dev->header_ops;
 
 	bond_dev->type		    = slave_dev->type;
@@ -1487,6 +1491,8 @@ static void bond_setup_by_slave(struct net_device *bond_dev,
 		bond_dev->flags &= ~(IFF_BROADCAST | IFF_MULTICAST);
 		bond_dev->flags |= (IFF_POINTOPOINT | IFF_NOARP);
 	}
+	if (was_up)
+		dev_open(bond_dev, NULL);
 }
 
 /* On bonding slaves other than the currently active slave, suppress
drivers/net/dsa/lan9303_mdio.c +2 -2
index bbb7032409ba..25c55fba5803 100644
@@ -32,7 +32,7 @@ static int lan9303_mdio_write(void *ctx, uint32_t reg, uint32_t val)
 	struct lan9303_mdio *sw_dev = (struct lan9303_mdio *)ctx;
 
 	reg <<= 2; /* reg num to offset */
-	mutex_lock(&sw_dev->device->bus->mdio_lock);
+	mutex_lock_nested(&sw_dev->device->bus->mdio_lock, MDIO_MUTEX_NESTED);
 	lan9303_mdio_real_write(sw_dev->device, reg, val & 0xffff);
 	lan9303_mdio_real_write(sw_dev->device, reg + 2, (val >> 16) & 0xffff);
 	mutex_unlock(&sw_dev->device->bus->mdio_lock);
@@ -50,7 +50,7 @@ static int lan9303_mdio_read(void *ctx, uint32_t reg, uint32_t *val)
 	struct lan9303_mdio *sw_dev = (struct lan9303_mdio *)ctx;
 
 	reg <<= 2; /* reg num to offset */
-	mutex_lock(&sw_dev->device->bus->mdio_lock);
+	mutex_lock_nested(&sw_dev->device->bus->mdio_lock, MDIO_MUTEX_NESTED);
 	*val = lan9303_mdio_real_read(sw_dev->device, reg);
 	*val |= (lan9303_mdio_real_read(sw_dev->device, reg + 2) << 16);
 	mutex_unlock(&sw_dev->device->bus->mdio_lock);
drivers/net/ethernet/atheros/atl1c/atl1c.h +0 -3
index 43d821fe7a54..63ba64dbb731 100644
@@ -504,15 +504,12 @@ struct atl1c_rrd_ring {
 	u16 next_to_use;
 	u16 next_to_clean;
 	struct napi_struct napi;
-	struct page *rx_page;
-	unsigned int rx_page_offset;
 };
 
 /* board specific private data structure */
 struct atl1c_adapter {
 	struct net_device   *netdev;
 	struct pci_dev      *pdev;
-	unsigned int	    rx_frag_size;
 	struct atl1c_hw        hw;
 	struct atl1c_hw_stats  hw_stats;
 	struct mii_if_info  mii;    /* MII interface info */
drivers/net/ethernet/atheros/atl1c/atl1c_main.c +16 -51

111 lines not on this page · raw message

drivers/net/ethernet/cortina/gemini.c +29 -16

85 lines not on this page · raw message

drivers/net/ethernet/cortina/gemini.h +2 -2
index 9fdf77d5eb37..24bb989981f2 100644
@@ -502,7 +502,7 @@ union gmac_txdesc_3 {
 #define SOF_BIT			0x80000000
 #define EOF_BIT			0x40000000
 #define EOFIE_BIT		BIT(29)
-#define MTU_SIZE_BIT_MASK	0x1fff
+#define MTU_SIZE_BIT_MASK	0x7ff /* Max MTU 2047 bytes */
 
 /* GMAC Tx Descriptor */
 struct gmac_txdesc {
@@ -787,7 +787,7 @@ union gmac_config0 {
 #define  CONFIG0_MAXLEN_1536	0
 #define  CONFIG0_MAXLEN_1518	1
 #define  CONFIG0_MAXLEN_1522	2
-#define  CONFIG0_MAXLEN_1542	3
+#define  CONFIG0_MAXLEN_1548	3
 #define  CONFIG0_MAXLEN_9k	4	/* 9212 */
 #define  CONFIG0_MAXLEN_10k	5	/* 10236 */
 #define  CONFIG0_MAXLEN_1518__6	6
drivers/net/ethernet/hisilicon/hns3/hclge_mbx.h +39 -8

77 lines not on this page · raw message

drivers/net/ethernet/hisilicon/hns3/hns3_enet.c +1 -1
index fde1ff358045..60e610ab976d 100644
@@ -4915,7 +4915,7 @@ static int hns3_init_mac_addr(struct net_device *netdev)
 	struct hns3_nic_priv *priv = netdev_priv(netdev);
 	char format_mac_addr[HNAE3_FORMAT_MAC_ADDR_LEN];
 	struct hnae3_handle *h = priv->ae_handle;
-	u8 mac_addr_temp[ETH_ALEN];
+	u8 mac_addr_temp[ETH_ALEN] = {0};
 	int ret = 0;
 
 	if (h->ae_algo->ops->get_mac_addr)
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c +25 -8
index ca59e1cd992e..9e33f0f0b75d 100644
@@ -72,6 +72,7 @@ static void hclge_sync_promisc_mode(struct hclge_dev *hdev);
 static void hclge_sync_fd_table(struct hclge_dev *hdev);
 static int hclge_mac_link_status_wait(struct hclge_dev *hdev, int link_ret,
 				      int wait_cnt);
+static int hclge_update_port_info(struct hclge_dev *hdev);
 
 static struct hnae3_ae_algo ae_algo;
 
@@ -2950,6 +2951,9 @@ static void hclge_update_link_status(struct hclge_dev *hdev)
 
 	if (state != hdev->hw.mac.link) {
 		hdev->hw.mac.link = state;
+		if (state == HCLGE_LINK_STATUS_UP)
+			hclge_update_port_info(hdev);
+
 		client->ops->link_status_change(handle, state);
 		hclge_config_mac_tnl_int(hdev, state);
 		if (rclient && rclient->ops->link_status_change)
@@ -10196,8 +10200,6 @@ static void hclge_rm_vport_vlan_table(struct hclge_vport *vport, u16 vlan_id,
 	struct hclge_vport_vlan_cfg *vlan, *tmp;
 	struct hclge_dev *hdev = vport->back;
 
-	mutex_lock(&hdev->vport_lock);
-
 	list_for_each_entry_safe(vlan, tmp, &vport->vlan_list, node) {
 		if (vlan->vlan_id == vlan_id) {
 			if (is_write_tbl && vlan->hd_tbl_status)
@@ -10212,8 +10214,6 @@ static void hclge_rm_vport_vlan_table(struct hclge_vport *vport, u16 vlan_id,
 			break;
 		}
 	}
-
-	mutex_unlock(&hdev->vport_lock);
 }
 
 void hclge_rm_vport_all_vlan_table(struct hclge_vport *vport, bool is_del_list)
@@ -10618,11 +10618,16 @@ int hclge_set_vlan_filter(struct hnae3_handle *handle, __be16 proto,
 	 * handle mailbox. Just record the vlan id, and remove it after
 	 * reset finished.
 	 */
+	mutex_lock(&hdev->vport_lock);
 	if ((test_bit(HCLGE_STATE_RST_HANDLING, &hdev->state) ||
 	     test_bit(HCLGE_STATE_RST_FAIL, &hdev->state)) && is_kill) {
 		set_bit(vlan_id, vport->vlan_del_fail_bmap);
+		mutex_unlock(&hdev->vport_lock);
 		return -EBUSY;
+	} else if (!is_kill && test_bit(vlan_id, vport->vlan_del_fail_bmap)) {
+		clear_bit(vlan_id, vport->vlan_del_fail_bmap);
 	}
+	mutex_unlock(&hdev->vport_lock);
 
 	/* when port base vlan enabled, we use port base vlan as the vlan
 	 * filter entry. In this case, we don't update vlan filter table
@@ -10637,17 +10642,22 @@ int hclge_set_vlan_filter(struct hnae3_handle *handle, __be16 proto,
 	}
 
 	if (!ret) {
-		if (!is_kill)
+		if (!is_kill) {
 			hclge_add_vport_vlan_table(vport, vlan_id,
 						   writen_to_tbl);
-		else if (is_kill && vlan_id != 0)
+		} else if (is_kill && vlan_id != 0) {
+			mutex_lock(&hdev->vport_lock);
 			hclge_rm_vport_vlan_table(vport, vlan_id, false);
+			mutex_unlock(&hdev->vport_lock);
+		}
 	} else if (is_kill) {
 		/* when remove hw vlan filter failed, record the vlan id,
 		 * and try to remove it from hw later, to be consistence
 		 * with stack
 		 */
+		mutex_lock(&hdev->vport_lock);
 		set_bit(vlan_id, vport->vlan_del_fail_bmap);
+		mutex_unlock(&hdev->vport_lock);
 	}
 
 	hclge_set_vport_vlan_fltr_change(vport);
@@ -10687,6 +10697,7 @@ static void hclge_sync_vlan_filter(struct hclge_dev *hdev)
 	int i, ret, sync_cnt = 0;
 	u16 vlan_id;
 
+	mutex_lock(&hdev->vport_lock);
 	/* start from vport 1 for PF is always alive */
 	for (i = 0; i < hdev->num_alloc_vport; i++) {
 		struct hclge_vport *vport = &hdev->vport[i];
@@ -10697,21 +10708,26 @@ static void hclge_sync_vlan_filter(struct hclge_dev *hdev)
 			ret = hclge_set_vlan_filter_hw(hdev, htons(ETH_P_8021Q),
 						       vport->vport_id, vlan_id,
 						       true);
-			if (ret && ret != -EINVAL)
+			if (ret && ret != -EINVAL) {
+				mutex_unlock(&hdev->vport_lock);
 				return;
+			}
 
 			clear_bit(vlan_id, vport->vlan_del_fail_bmap);
 			hclge_rm_vport_vlan_table(vport, vlan_id, false);
 			hclge_set_vport_vlan_fltr_change(vport);
 
 			sync_cnt++;
-			if (sync_cnt >= HCLGE_MAX_SYNC_COUNT)
+			if (sync_cnt >= HCLGE_MAX_SYNC_COUNT) {
+				mutex_unlock(&hdev->vport_lock);
 				return;
+			}
 
 			vlan_id = find_first_bit(vport->vlan_del_fail_bmap,
 						 VLAN_N_VID);
 		}
 	}
+	mutex_unlock(&hdev->vport_lock);
 
 	hclge_sync_vlan_fltr_state(hdev);
[… more lines in the raw message]

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

drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_mbx.c +30 -32

62 lines not on this page · raw message

drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_trace.h +1 -1
index 5b0b71bd6120..8510b88d4982 100644

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

drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c +24 -5
index bc140e3620d6..880feeac0637 100644

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

drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.h +2 -1
index f6f736c0091c..5c7538ca36a7 100644

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

drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_mbx.c +53 -34

87 lines not on this page · raw message

drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_trace.h +1 -1
index e4bfb6191fef..5d4895bb57a1 100644

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

drivers/net/ethernet/mellanox/mlx5/core/en/mod_hdr.c +47 -0

47 lines not on this page · raw message

drivers/net/ethernet/mellanox/mlx5/core/en/mod_hdr.h +13 -0
index 33b23d8f9182..b8cd1a7a31be 100644

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

drivers/net/ethernet/mellanox/mlx5/core/en/reporter_rx.c +2 -2
index 899a9a73eef6..a4c12c5bb0dc 100644

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

drivers/net/ethernet/mellanox/mlx5/core/en/tc/sample.c +3 -2
index 6552ecee3f9b..d08723a444e3 100644

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

drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c +9 -16
index 94200f2dd92b..80a49d7af05d 100644

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

drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun.c +14 -16
index d90c6dc41c9f..303e6e7a5c44 100644

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

drivers/net/ethernet/mellanox/mlx5/core/en_rep.c +8 -4
index 3d614bf5cff9..7a00faa62d99 100644

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

drivers/net/ethernet/mellanox/mlx5/core/en_tc.c +95 -139

234 lines not on this page · raw message

drivers/net/ethernet/mellanox/mlx5/core/en_tc.h +0 -5
index f48af82781f8..26a85a11eb6c 100644

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

drivers/net/ethernet/mellanox/mlx5/core/esw/indir_table.c +3 -2
index 425c91814b34..c275fe028b6d 100644

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

drivers/net/ethernet/realtek/r8169_main.c +7 -3
index 4cb2510f6fac..d4de5ec690e5 100644

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

drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +1 -1
index a43628dd1f4c..2b4c30a5ffcd 100644

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

drivers/net/ipvlan/ipvlan_core.c +25 -16

41 lines not on this page · raw message

drivers/net/macvlan.c +1 -1
index 3dd1528dde02..6f0b6c924d72 100644

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

drivers/net/phy/phylink.c +1 -0
index 422dc92ecac9..514e7f9e0339 100644

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

drivers/net/ppp/ppp_synctty.c +5 -1
index af3e048695b6..692c558beed5 100644

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

drivers/net/wireless/ath/ath10k/debug.c +1 -1
index 39378e3f9b2b..6e1b65b8ae65 100644

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

drivers/net/wireless/ath/ath10k/snoc.c +14 -4
index 73fe77e7824b..439df8a404d8 100644

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

drivers/net/wireless/ath/ath11k/dp_rx.c +7 -1
index 357abd87d549..dfdb2eeaf040 100644

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

drivers/net/wireless/ath/ath11k/wmi.c +10 -2
index b11070cf159c..28b4527b993f 100644

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

drivers/net/wireless/ath/ath9k/debug.c +1 -1
index 4c81b1d7f417..6a043a49dfe6 100644

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

drivers/net/wireless/ath/ath9k/htc_drv_debug.c +1 -1
index c55aab01fff5..e79bbcd3279a 100644

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

drivers/net/wireless/intel/iwlwifi/mvm/tx.c +9 -5
index 4375da00f7cf..08dd227bad4b 100644

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

drivers/net/wireless/mac80211_hwsim.c +1 -1
index 6eb3c845640b..7d7350258683 100644

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

drivers/net/wireless/microchip/wilc1000/wlan.c +1 -1
index 380699983a75..e2cd1589818f 100644

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

drivers/pci/controller/dwc/pci-exynos.c +2 -2
index c24dab383654..2696a4544f10 100644

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

drivers/pci/controller/dwc/pci-keystone.c +4 -4
index 865258d8c53c..eacdcb0a8771 100644

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

drivers/pci/controller/dwc/pcie-tegra194.c +4 -5
index 765abe073228..2f82da76e371 100644

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

drivers/pci/pci-acpi.c +1 -1
index 813e0d25e841..8f4a4fc48efa 100644

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

drivers/pci/pci-sysfs.c +3 -7
index f2909ae93f2f..9cf79afc0ec7 100644

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

drivers/pci/pci.c +6 -7
index 244c1c2e0876..cc3f620b73bd 100644

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

drivers/pci/pcie/aspm.c +2 -0
index 4a2c229205fd..233e42ddaa9d 100644

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

drivers/pci/quirks.c +28 -7
index 5955e682c434..5d8768cd7c50 100644

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

drivers/platform/x86/thinkpad_acpi.c +1 -0
index 3dc055ce6e61..99c19a0b9151 100644

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

drivers/ptp/ptp_chardev.c +2 -1
index af3bc65c4595..9311f3d09c8f 100644

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

drivers/ptp/ptp_clock.c +3 -2
index 8a652a367625..e70c6dec3a3a 100644

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

drivers/ptp/ptp_private.h +6 -2
index dba6be477067..b336c12bb697 100644

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

drivers/ptp/ptp_sysfs.c +2 -1
index 9233bfedeb17..0bdfdd4bb0fa 100644

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

drivers/s390/crypto/ap_bus.c +4 -0
index d9b804943d19..4968964ac5de 100644

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

drivers/scsi/hisi_sas/hisi_sas_v3_hw.c +7 -6
index b8a12d3ad5f2..d1c07e7cb60d 100644

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

drivers/scsi/ibmvscsi/ibmvfc.c +122 -2

124 lines not on this page · raw message

drivers/scsi/libfc/fc_lport.c +6 -0
index 19cd4a95d354..d158c5eff059 100644

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

drivers/scsi/megaraid/megaraid_sas_base.c +2 -2
index 00b8b7a85388..c2c247a49ce9 100644

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

drivers/scsi/mpt3sas/mpt3sas_base.c +2 -2
index d7dabf53a0d5..e524e1fc53fa 100644

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

drivers/scsi/qla2xxx/qla_os.c +10 -2
index 1b175e5c0cfc..a2d3f8bb63a0 100644

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

drivers/tty/hvc/hvc_xen.c +28 -11
index f2f066ce8d9e..141acc662eba 100644

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

drivers/tty/serial/meson_uart.c +17 -8
index 62e6c1af1344..7e653d681ac0 100644

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

drivers/tty/sysrq.c +2 -1
index 4ffed77f8001..a3d54a1bd8ac 100644

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

drivers/tty/vcc.c +13 -3
index e11383ae1e7e..71356d9684ba 100644

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

drivers/usb/gadget/function/f_ncm.c +11 -16
index aabaedb2e069..bd095ae569ed 100644

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

drivers/usb/host/xhci-pci.c +3 -1
index d0223facb92a..af5b5b4fa5d1 100644

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

drivers/watchdog/sbsa_gwdt.c +2 -2
index 63862803421f..7bf28545b47a 100644

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

drivers/xen/events/events_base.c +3 -1
index 9339f2aad567..ee691b20d4a3 100644

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

fs/9p/xattr.c +3 -2
index ee331845e2c7..31799ac10e33 100644

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

fs/btrfs/delalloc-space.c +0 -3
index b934429c2435..4feddabe40a4 100644

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

fs/cifs/cifs_spnego.c +2 -2
index 353bd0dd7026..66b4413b94f7 100644

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

fs/cifs/smb2transport.c +2 -3
index 390cc5e8c746..0f2e0ce84a03 100644

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

fs/exfat/namei.c +22 -7
index b22d6c984f8c..cfa46d8cf5b3 100644

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

fs/ext4/acl.h +5 -0
index 3219669732bf..0db6ae0ca936 100644

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

fs/ext4/extents_status.c +2 -2
index fee54ab42bba..7806adcc41a7 100644

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

fs/ext4/resize.c +10 -13
index 589ed99856f3..d0c41343a5c4 100644

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

fs/f2fs/compress.c +1 -1
index 455fac164fda..3982b4a7618c 100644

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

fs/gfs2/inode.c +11 -3
index 97ee17843b4d..462e957eda8b 100644

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

fs/gfs2/quota.c +11 -0
index dc77080a82bb..c381580095ba 100644

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

fs/gfs2/super.c +1 -1
index 51b44da4a0d6..268651ac9fc8 100644

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

fs/jbd2/recovery.c +8 -0
index cce36a76fd02..8a960c6edb6e 100644

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

fs/jfs/jfs_dmap.c +18 -5
index da4f9c3b714f..5b01026fff9b 100644

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

fs/jfs/jfs_imap.c +4 -1
index 4899663996d8..6ed2e1d4c894 100644

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

fs/ksmbd/smbacl.c +26 -3
index 3781bca2c8fc..83f805248a81 100644

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

fs/nfs/nfs4proc.c +3 -2
index 565d11a21f5e..d65af9a60c35 100644

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

fs/nfsd/nfs4state.c +1 -1
index f54ef526f25d..9b660491f393 100644

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

fs/overlayfs/super.c +1 -1
index e18025b5c887..5310271cf2e3 100644

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

fs/proc/proc_sysctl.c +0 -1
index 0b7a00ed6c49..caa421ba078f 100644

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

fs/quota/dquot.c +14 -0
index 6088d73d29ce..75e593b1c03e 100644

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

fs/xfs/libxfs/xfs_dir2_leaf.c +7 -2
index d9b66306a9a7..cb9e950a911d 100644

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

fs/xfs/libxfs/xfs_inode_fork.c +1 -0
index 20095233d7bc..c1f965af8432 100644

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

fs/xfs/libxfs/xfs_log_recover.h +8 -6
index ff69a0000817..81a065b0b571 100644

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

fs/xfs/libxfs/xfs_trans_resv.c +1 -1
index 5e300daa2559..2db9d9d12344 100644

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

fs/xfs/xfs_attr_inactive.c +3 -5
index 2b5da6218977..2afa6d9a7f8f 100644

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

fs/xfs/xfs_buf_item_recover.c +66 -0

66 lines not on this page · raw message

fs/xfs/xfs_error.c +7 -2
index 81c445e9489b..b0ccec92e015 100644

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

fs/xfs/xfs_inode.c +2 -2
index b2ea85318214..df64b902842d 100644

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

fs/xfs/xfs_log.c +7 -2
index 0fb7d05ca308..eba295f666ac 100644

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

fs/xfs/xfs_log_priv.h +0 -3
index f3d68ca39f45..03393595676f 100644

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

fs/xfs/xfs_log_recover.c +19 -25

44 lines not on this page · raw message

fs/xfs/xfs_qm.c +7 -0
index 623244650a2f..792736e29a37 100644

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

fs/xfs/xfs_reflink.c +164 -33

197 lines not on this page · raw message

fs/xfs/xfs_sysfs.h +6 -1
index 43585850f154..513095e353a5 100644

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

include/linux/ethtool.h +2 -2
index 3fad741df53e..c998f9c139ed 100644

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

include/linux/lsm_hook_defs.h +2 -2
index 61590c1f2d33..c4f245262f98 100644

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

include/linux/preempt.h +34 -2
index 4d244e295e85..9c4534a69a8f 100644

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

include/linux/pwm.h +2 -2
index c7bfa64aeb14..03c42e742dfe 100644

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

include/linux/string.h +40 -0
index d68097b4f600..3b9f5abe5ee8 100644

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

include/linux/sunrpc/clnt.h +1 -0
index 9fcf5ffc4f9a..71ec22b1df86 100644

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

include/linux/trace_events.h +4 -0
index 9c91c3531d83..d3cbe4bf4fab 100644

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

include/linux/trace_recursion.h +2 -6
index fe95f0922526..816d7a0d2aad 100644

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

include/linux/workqueue.h +39 -7

46 lines not on this page · raw message

include/net/inet_connection_sock.h +0 -2
index 695ed45841f0..d31a18824cd5 100644

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

include/net/inet_hashtables.h +1 -41

42 lines not on this page · raw message

include/net/netfilter/nf_tables.h +17 -2
index a0b47f2b896e..8e9c5bc1a9e6 100644

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

include/net/sock.h +19 -7
index 640bd7a36777..e19eebaf59f7 100644

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

include/sound/soc-card.h +37 -0
index 4f2cc4fb56b7..9a5429260ece 100644

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

include/sound/soc.h +11 -0
index 5872a8864f3b..3f0369aae2fa 100644

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

io_uring/io_uring.c +12 -6
index d00bedfdadbb..e26292d8b845 100644

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

kernel/audit_watch.c +8 -1
index 2acf7ca49154..edbeffee64b8 100644

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

kernel/bpf/core.c +5 -1
index f7c27c1cc593..36c2896ee45f 100644

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

kernel/bpf/verifier.c +7 -2
index a4be7c1c11aa..5d8f352faebd 100644

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

kernel/debug/debug_core.c +3 -0
index 7beceb447211..f40ca4f09afc 100644

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

kernel/events/internal.h +1 -6
index aa23ffdaf819..5150d5f84c03 100644

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

kernel/events/ring_buffer.c +6 -0
index f40da32f5e75..6808873555f0 100644

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

kernel/irq/generic-chip.c +19 -6
index cc7cdd26e23e..e7b8168e8513 100644

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

kernel/kexec.c +1 -1
index cb8e6e6f983c..5ff1dcc4acb7 100644

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

kernel/locking/test-ww_mutex.c +12 -8
index 3e82f449b4ff..da36997d8742 100644

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

kernel/padata.c +1 -1
index c6025a48fb49..47f146f061fb 100644

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

kernel/power/snapshot.c +7 -9
index 475d630e650f..2b063e0a15c6 100644

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

kernel/rcu/tree.c +21 -0
index df016f6d0662..66c1ca01dd0e 100644

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

kernel/rcu/tree.h +4 -0
index 305cf6aeb408..2da96d8b894a 100644

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

kernel/rcu/tree_stall.h +18 -2
index 677ee3d8671b..6c1234fd927c 100644

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

kernel/reboot.c +1 -0
index f7440c0c7e43..c0271417dbed 100644

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

kernel/trace/ring_buffer.c +2 -7
index e5dc7b5a261c..a930a9d7d834 100644

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

kernel/trace/trace.c +15 -0
index 7453840c77be..c35c805e4ab1 100644

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

kernel/trace/trace.h +3 -0
index a4a90bd3373b..c6eb116dc279 100644

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

kernel/trace/trace_events.c +28 -15

43 lines not on this page · raw message

kernel/trace/trace_events_filter.c +3 -0
index 06d6318ee537..60c34fc44a63 100644

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

kernel/trace/trace_events_synth.c +1 -1
index 1e02bb431dcb..43da364737a0 100644

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

kernel/watch_queue.c +1 -1
index 54cbaa971139..ae31bf8d2feb 100644

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

kernel/watchdog.c +7 -0
index 1cfa269bd448..271a015d2b85 100644

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

kernel/workqueue.c +12 -8
index 19868cf58877..962ee27ec7d7 100644

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

mm/cma.c +1 -1
index a972c3440c40..26967c70e9c7 100644

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

mm/memcontrol.c +2 -1
index b68b2fe639fd..6f969ba0d688 100644

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

mm/memory_hotplug.c +1 -1
index 81f2a97c886c..bf611c55fc66 100644

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

net/9p/client.c +1 -1
index 9fdcaa956c00..ead458486fdc 100644

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

net/9p/trans_fd.c +10 -3
index f359cfdc1858..b44b77d3b35d 100644

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

net/bluetooth/hci_conn.c +2 -4
index 5f1e388c2b95..ce538dbe89d1 100644

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

net/bluetooth/hci_sysfs.c +12 -11
index 08542dfc2dc5..633b82d54272 100644

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

net/bridge/netfilter/nf_conntrack_bridge.c +1 -1
index fdbed3158555..d14b2dbbd1df 100644

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

net/bridge/netfilter/nft_meta_bridge.c +1 -1
index 97805ec424c1..1967fd063cfb 100644

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

net/core/sock.c +1 -1
index 8faa0f9cc083..662cd6d54ac7 100644

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

net/dccp/proto.c +0 -1
index 0b0567a692a8..1b285a57c7aa 100644

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

net/ipv4/inet_diag.c +3 -2
index ae70e07c5244..09cabed358fd 100644

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

net/ipv4/inet_hashtables.c +32 -89

121 lines not on this page · raw message

net/ipv4/tcp.c +0 -1
index 6dcb77a2bde6..86dff7abdfd6 100644

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

net/ipv4/tcp_ipv4.c +9 -12
index f89cb184649e..0666be6b9ec9 100644

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

net/ipv4/tcp_output.c +1 -1
index 9d5e652c9bba..8032ccb69463 100644

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

net/ipv6/inet6_hashtables.c +2 -3
index b4a5e01e1201..c40cbdfc6247 100644

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

net/mac80211/cfg.c +4 -0
index 4fa216a108ae..02bd90a53705 100644

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

net/mptcp/mptcp_diag.c +102 -3

105 lines not on this page · raw message

net/ncsi/ncsi-aen.c +0 -5
index f8854bff286c..62fb1031763d 100644

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

net/netfilter/nf_tables_api.c +36 -17

53 lines not on this page · raw message

net/netfilter/nft_byteorder.c +4 -2
index 7b0b8fecb220..adf208b7929f 100644

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

net/netfilter/nft_meta.c +1 -1
index 14412f69a34e..35aba304a25b 100644

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

net/netfilter/nft_osf.c +1 -1
index 720dc9fba6d4..c9c124200a4d 100644

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

net/netfilter/nft_socket.c +4 -4
index 9ad9cc0d1d27..1725e7349f3d 100644

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

net/netfilter/nft_tproxy.c +3 -3
index 9fea90ed79d4..e9679cb4afbe 100644

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

net/netfilter/nft_xfrm.c +4 -4
index cbbbc4ecad3a..3553f89fd057 100644

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

net/sunrpc/clnt.c +5 -2
index 7756c62e0c3e..af1ca707c3d3 100644

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

net/sunrpc/rpcb_clnt.c +4 -0
index 647b323cc1d5..638b14f28101 100644

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

net/sunrpc/xprtrdma/svc_rdma_recvfrom.c +2 -1
index 0377679678f9..9a80d3be1f63 100644

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

net/tipc/netlink_compat.c +1 -0
index ce00f271ca6b..116a97e30144 100644

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

net/unix/af_unix.c +5 -4
index 748769f4ba05..16b04e553a6c 100644

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

scripts/gcc-plugins/randomize_layout_plugin.c +8 -3
index 334741a31d0a..60e9359a71a5 100644

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

security/integrity/iint.c +37 -11

48 lines not on this page · raw message

security/integrity/ima/ima_api.c +5 -0
index 2c6c3a5228b5..04b9e465463b 100644

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

security/integrity/ima/ima_main.c +15 -1
index e9a361109dd2..7cd9df849929 100644

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

security/integrity/integrity.h +2 -0
index 547425c20e11..06b0cb5ebaf4 100644

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

security/keys/trusted-keys/trusted_core.c +10 -10
index 386e5f6e368a..a2d301d1a4b3 100644

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

sound/core/info.c +13 -8
index 9f6714e29bbc..63252abf9998 100644

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

sound/hda/hdac_stream.c +4 -2
index eea22cf72aef..ec95d0449bfe 100644

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

sound/pci/hda/patch_realtek.c +4 -16
index 59e11a070c20..4ab3cbef72e8 100644

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

sound/soc/codecs/lpass-wsa-macro.c +3 -0
index dd1a8b7bc794..8973f439123f 100644

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

sound/soc/ti/omap-mcbsp.c +4 -2
index 4479d74f0a45..81d2be87e973 100644

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

tools/power/x86/turbostat/turbostat.c +2 -1
index a3197efe52c6..65ada8065cfc 100644

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

tools/testing/selftests/efivarfs/create-read.c +2 -0
index 9674a19396a3..7bc7af4eb2c1 100644

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

tools/testing/selftests/resctrl/cmt_test.c +0 -3
index 3b0454e7fc82..dd9f9db70af4 100644

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

tools/testing/selftests/resctrl/mba_test.c +1 -1
index 97dc98c0c949..ff8b588b63ed 100644

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

tools/testing/selftests/resctrl/mbm_test.c +1 -1
index 280187628054..5dc1dce89733 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.