Skip to contentSkip to conversation

Linux 6.6.105

DISCUSSION Greg Kroah-Hartman 1 participant 2 messages Sep 9, 2025 Stable branch

lore
Share & tools
lore

Greg Kroah-Hartman

author maintainer
#0 lore raw

I'm announcing the release of the 6.6.105 kernel.

All users of the 6.6 kernel series must upgrade.

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

thanks,

greg k-h

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

 Documentation/userspace-api/netlink/specs.rst               |   18 
 Makefile                                                    |    2 
 arch/arm64/boot/dts/freescale/imx8mp-data-modul-edm-sbc.dts |    1 
 arch/arm64/boot/dts/freescale/imx8mp-dhcom-som.dtsi         |    1 
 arch/arm64/boot/dts/rockchip/rk3399-pinebook-pro.dts        |    1 
 arch/arm64/include/asm/module.h                             |    1 
 arch/arm64/include/asm/module.lds.h                         |    1 
 arch/arm64/kernel/ftrace.c                                  |   13 
 arch/arm64/kernel/module-plts.c                             |   12 
 arch/arm64/kernel/module.c                                  |   11 
 arch/loongarch/kernel/signal.c                              |   10 
 arch/riscv/include/asm/asm.h                                |    2 
 arch/x86/include/asm/pgtable_64_types.h                     |    3 
 arch/x86/mm/init_64.c                                       |   18 
 drivers/acpi/arm64/iort.c                                   |    4 
 drivers/bluetooth/hci_vhci.c                                |   57 -
 drivers/cpufreq/intel_pstate.c                              |  122 --
 drivers/dma/mediatek/mtk-cqdma.c                            |   10 
 drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c                     |  146 +-
 drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c                      |    6 
 drivers/gpu/drm/amd/amdgpu/dce_v10_0.c                      |    5 
 drivers/gpu/drm/amd/amdgpu/dce_v11_0.c                      |    5 
 drivers/gpu/drm/amd/amdgpu/dce_v6_0.c                       |    5 
 drivers/gpu/drm/amd/amdgpu/dce_v8_0.c                       |    5 
 drivers/gpu/drm/amd/display/dc/dce/dce_link_encoder.c       |    8 
 drivers/gpu/drm/bridge/ti-sn65dsi86.c                       |   11 
 drivers/gpu/drm/mediatek/mtk_drm_drv.c                      |   42 
 drivers/gpu/drm/mediatek/mtk_drm_drv.h                      |    8 
 drivers/gpu/drm/nouveau/nvkm/engine/fifo/base.c             |    2 
 drivers/gpu/drm/nouveau/nvkm/engine/fifo/ga100.c            |   23 
 drivers/gpu/drm/nouveau/nvkm/engine/fifo/ga102.c            |    1 
 drivers/gpu/drm/nouveau/nvkm/engine/fifo/priv.h             |    2 
 drivers/hwmon/mlxreg-fan.c                                  |    5 
 drivers/iio/chemical/pms7003.c                              |    5 
 drivers/iio/imu/inv_mpu6050/inv_mpu_ring.c                  |    2 
 drivers/iio/light/opt3001.c                                 |    5 
 drivers/iio/pressure/mprls0025pa.c                          |   10 
 drivers/isdn/mISDN/dsp_hwec.c                               |    6 
 drivers/net/ethernet/cadence/macb_main.c                    |   28 
 drivers/net/ethernet/cavium/thunder/thunder_bgx.c           |   20 
 drivers/net/ethernet/intel/e1000e/ethtool.c                 |   10 
 drivers/net/ethernet/intel/i40e/i40e_client.c               |    4 
 drivers/net/ethernet/mediatek/mtk_eth_soc.c                 |   10 
 drivers/net/ethernet/xircom/xirc2ps_cs.c                    |    2 
 drivers/net/macsec.c                                        |    8 
 drivers/net/pcs/pcs-rzn1-miic.c                             |    2 
 drivers/net/phy/mscc/mscc_ptp.c                             |   18 
 drivers/net/ppp/ppp_generic.c                               |    6 
 drivers/net/usb/cdc_ncm.c                                   |    7 
 drivers/net/vmxnet3/vmxnet3_drv.c                           |    5 
 drivers/net/wireless/ath/ath11k/core.h                      |    7 
 drivers/net/wireless/ath/ath11k/debugfs.c                   |    4 
 drivers/net/wireless/ath/ath11k/debugfs_sta.c               |   30 
 drivers/net/wireless/ath/ath11k/dp_rx.c                     |    8 
 drivers/net/wireless/ath/ath11k/dp_tx.c                     |    4 
 drivers/net/wireless/ath/ath11k/mac.c                       |  588 ++++++------
 drivers/net/wireless/ath/ath11k/peer.c                      |    2 
 drivers/net/wireless/ath/ath11k/wmi.c                       |    6 
 drivers/net/wireless/broadcom/brcm80211/brcmfmac/btcoex.c   |    6 
 drivers/net/wireless/marvell/libertas/cfg.c                 |    9 
 drivers/net/wireless/marvell/mwifiex/cfg80211.c             |    5 
 drivers/net/wireless/marvell/mwifiex/main.c                 |    4 
 drivers/net/wireless/mediatek/mt76/mt7996/mcu.c             |    4 
 drivers/net/wireless/st/cw1200/sta.c                        |    2 
 drivers/pci/msi/msi.c                                       |    3 
 drivers/pcmcia/omap_cf.c                                    |    2 
 drivers/pcmcia/rsrc_iodyn.c                                 |    3 
 drivers/pcmcia/rsrc_nonstatic.c                             |    4 
 drivers/platform/x86/amd/pmc/pmc-quirks.c                   |   14 
 drivers/scsi/lpfc/lpfc_nvmet.c                              |   10 
 drivers/soc/qcom/mdt_loader.c                               |   12 
 drivers/spi/spi-cadence-quadspi.c                           |    6 
 drivers/spi/spi-fsl-lpspi.c                                 |   24 
 drivers/spi/spi-fsl-qspi.c                                  |   36 
 drivers/tee/optee/ffa_abi.c                                 |    4 
 drivers/tee/tee_shm.c                                       |    6 
 drivers/thermal/mediatek/lvts_thermal.c                     |   50 -
 fs/btrfs/btrfs_inode.h                                      |    2 
 fs/btrfs/extent_io.c                                        |    2 
 fs/btrfs/inode.c                                            |    1 
 fs/btrfs/tree-log.c                                         |   78 +
 fs/fs-writeback.c                                           |    9 
 fs/ocfs2/inode.c                                            |    3 
 fs/proc/generic.c                                           |   38 
 fs/smb/client/cifs_unicode.c                                |    3 
 include/linux/bpf-cgroup.h                                  |    5 
 include/linux/bpf.h                                         |   60 -
 include/linux/pci.h                                         |    2 
 include/linux/pgtable.h                                     |   16 
 include/linux/vmalloc.h                                     |   16 
 include/net/netlink.h                                       |   69 +
 include/uapi/linux/netlink.h                                |    5 
 kernel/bpf/core.c                                           |   50 -
 kernel/bpf/syscall.c                                        |   20 
 kernel/sched/topology.c                                     |    2 
 lib/nlattr.c                                                |   22 
 mm/slub.c                                                   |   66 -
 net/atm/resources.c                                         |    6 
 net/ax25/ax25_in.c                                          |    4 
 net/batman-adv/network-coding.c                             |    7 
 net/bluetooth/hci_sync.c                                    |    2 
 net/bluetooth/l2cap_sock.c                                  |    3 
 net/bridge/br_netfilter_hooks.c                             |    3 
 net/dsa/tag_ksz.c                                           |   22 
 net/ipv4/devinet.c                                          |    7 
 net/ipv4/icmp.c                                             |    6 
 net/ipv6/ip6_icmp.c                                         |    6 
 net/mctp/af_mctp.c                                          |    2 
 net/netfilter/nf_conntrack_helper.c                         |    4 
 net/netlink/policy.c                                        |   14 
 net/smc/smc_clc.c                                           |    2 
 net/smc/smc_ib.c                                            |    3 
 net/wireless/scan.c                                         |    3 
 net/wireless/sme.c                                          |    5 
 sound/pci/hda/patch_hdmi.c                                  |    1 
 sound/pci/hda/patch_realtek.c                               |    5 
 sound/usb/mixer_quirks.c                                    |    2 
 tools/gpio/Makefile                                         |    4 
 tools/perf/util/bpf-event.c                                 |   39 
 tools/power/cpupower/utils/cpupower-set.c                   |    4 
 tools/testing/selftests/net/bind_bhash.c                    |    4 
 121 files changed, 1354 insertions(+), 835 deletions(-)

Aaron Erhardt (1):
ALSA: hda/realtek: Fix headset mic for TongFang X6[AF]R5xxY

Alex Deucher (2):
drm/amdgpu: drop hw access in non-DC audio fini Revert "drm/amdgpu: Avoid extra evict-restore process."

Alok Tiwari (2):
xirc2ps_cs: fix register access when enabling FullDuplex
mctp: return -ENOPROTOOPT for unknown getsockopt options

Baochen Qiang (2):
wifi: ath11k: rename ath11k_start_vdev_delay()
wifi: ath11k: avoid forward declaration of ath11k_mac_start_vdev_delay()

Bjorn Andersson (1):
soc: qcom: mdt_loader: Deal with zero e_shentsize

Chen Ni (1):
pcmcia: omap: Add missing check for platform_get_resource

Chengming Zhou (1):
slub: Reflow ___slab_alloc()

Chris Chiu (1):
ALSA: hda/realtek - Add new HP ZBook laptop with micmute led fixup

Christian Loehle (1):
sched: Fix sched_numa_find_nth_cpu() if mask offline

Christoffer Sandberg (1):
platform/x86/amd/pmc: Add TUXEDO IB Pro Gen10 AMD to spurious 8042 quirks list

Colin Ian King (1):
drm/amd/amdgpu: Fix missing error return on kzalloc failure

Cryolitia PukNgae (1):
ALSA: usb-audio: Add mute TLV for playback volumes on some devices

Dan Carpenter (4):
wifi: cw1200: cap SSID length in cw1200_do_join()
wifi: libertas: cap SSID len in lbs_associate()
wifi: cfg80211: sme: cap SSID length in __cfg80211_connect_result()
ipv4: Fix NULL vs error pointer check in inet_blackhole_dev_init()

Daniel Borkmann (4):
bpf: Add cookie object to bpf maps
bpf: Move cgroup iterator helpers to bpf.h
bpf: Move bpf map owner out of common struct
bpf: Fix oob access in cgroup local storage

Dave Airlie (1):
nouveau: fix disabling the nonstall irq due to storm code

David Lechner (3):
iio: imu: inv_mpu6050: align buffer for timestamp
iio: chemical: pms7003: use aligned_s64 for timestamp
iio: pressure: mprls0025pa: use aligned_s64 for timestamp

Dmitry Antipov (1):

      wifi: cfg80211: fix use-after-free in cmp_bss()

Duoming Zhou (1):
wifi: brcmfmac: fix use-after-free when rescheduling brcmf_btcoex_info work

Edward Adam Davis (1):
ocfs2: prevent release journal inode after journal shutdown

Eric Dumazet (1):
ax25: properly unshare skbs in ax25_kiss_rcv()

Fabian Bläse (1):
icmp: fix icmp_ndo_send address translation for reply direction

Felix Fietkau (1):
net: ethernet: mtk_eth_soc: fix tx vlan tag for llc packets

Filipe Manana (3):
btrfs: fix race between logging inode and checking if it was logged before
btrfs: fix race between setting last_dir_index_offset and inode logging
btrfs: avoid load/store tearing races when checking if an inode was logged

Greg Kroah-Hartman (1):

      Linux 6.6.105

Han Xu (1):
spi: fsl-qspi: use devm function instead of driver remove

Harry Yoo (2):
x86/mm/64: define ARCH_PAGE_TABLE_SYNC_MASK and arch_sync_kernel_mappings()
mm: move page table sync declarations to linux/pgtable.h

Hawking Zhang (1):
drm/amdgpu: Replace DRM_* with dev_* in amdgpu_psp.c

Horatiu Vultur (1):
phy: mscc: Stop taking ts_lock for tx_queue and use its own lock

Huacai Chen (1):
LoongArch: Save LBT before FPU in setup_sigcontext()

Ian Rogers (1):
perf bpf-event: Fix use-after-free in synthesis

Ivan Pravdin (1):
Bluetooth: vhci: Prevent use-after-free by removing debugfs files early

Jakob Unterwurzacher (1):
net: dsa: microchip: linearize skb for tail-tagging switches

Jakub Kicinski (1):
netlink: add variable-length / auto integers

Jason-JH.Lin (2):
drm/mediatek: Add crtc path enum for all_drm_priv array drm/mediatek: Fix using wrong drm private data to bind mediatek-drm

Jeff Johnson (1):
wifi: ath11k: Introduce and use ath11k_sta_to_arsta()

Jinfeng Wang (2):
Revert "spi: cadence-quadspi: fix cleanup of rx_chan on failure paths" Revert "spi: spi-cadence-quadspi: Fix pm runtime unbalance"

Jiufei Xue (1):
fs: writeback: fix use-after-free in __mark_inode_dirty()

John Evans (1):
scsi: lpfc: Fix buffer free/clear order in deferred receive path

Jonathan Currier (1):
PCI/MSI: Add an option to write MSIX ENTRY_DATA before any reads

Josef Bacik (1):
btrfs: adjust subpage bit start based on sectorsize

Kevin Hao (1):
spi: fsl-qspi: Fix double cleanup in probe error path

Kuniyuki Iwashima (2):
Bluetooth: Fix use-after-free in l2cap_sock_cleanup_listen()
selftest: net: Fix weird setsockopt() in bind_bhash.c.

Lad Prabhakar (1):
net: pcs: rzn1-miic: Correct MODCTRL register offset

Larisa Grigore (4):
spi: spi-fsl-lpspi: Fix transmissions when using CONT
spi: spi-fsl-lpspi: Set correct chip-select polarity bit
spi: spi-fsl-lpspi: Reset FIFO and disable module on transfer abort
spi: spi-fsl-lpspi: Clear status register after disabling the module

Li Qiong (1):
mm/slub: avoid accessing metadata when pointer is invalid in object_err()

Liu Jian (1):
net/smc: fix one NULL pointer dereference in smc_ib_is_sg_need_sync()

Lubomir Rintel (1):
cdc_ncm: Flag Intel OEM version of Fibocom L850-GL as WWAN

Luca Ceresoli (1):
iio: light: opt3001: fix deadlock due to concurrent flag access

Ma Ke (2):
pcmcia: Fix a NULL pointer dereference in __iodyn_find_io_region() drm/mediatek: Fix device/node reference count leaks in mtk_drm_get_all_drm_priv

Mahanta Jambigi (1):
net/smc: Remove validation of reserved bits in CLC Decline message

Makar Semyonov (1):
cifs: prevent NULL pointer dereference in UTF16 conversion

Marek Vasut (2):
arm64: dts: imx8mp: Fix missing microSD slot vqmmc on DH electronics i.MX8M Plus DHCOM
arm64: dts: imx8mp: Fix missing microSD slot vqmmc on Data Modul i.MX8M Plus eDM SBC

Miaoqian Lin (2):
mISDN: Fix memory leak in dsp_hwec_enable() ACPI/IORT: Fix memory leak in iort_rmr_alloc_sids()

Michael Walle (1):
drm/bridge: ti-sn65dsi86: fix REFCLK setting

Nathan Chancellor (1):
wifi: mt76: mt7996: Initialize hdr before passing to skb_put_data()

Nícolas F. R. A. Prado (1):
thermal/drivers/mediatek/lvts: Disable low offset IRQ for minimum threshold

Pei Xiao (1):
tee: fix NULL pointer dereference in tee_shm_put

Peter Robinson (1):
arm64: dts: rockchip: Add vcc-supply to SPI flash on rk3399-pinebook-pro

Phil Sutter (1):
netfilter: conntrack: helper: Replace -EEXIST by -EBUSY

Pieter Van Trappen (1):
net: dsa: microchip: update tag_ksz masks for KSZ9477 family

Qianfeng Rong (1):
wifi: mwifiex: Initialize the chan_stats array to zero

Qingfang Deng (1):
ppp: fix memory leak in pad_compress_skb

Qiu-ji Chen (2):
dmaengine: mediatek: Fix a possible deadlock error in mtk_cqdma_tx_status()
dmaengine: mediatek: Fix a flag reuse error in mtk_cqdma_tx_status()

Radim Krčmář (1):
riscv: use lw when reading int cpu in asm_per_cpu

Rafael J. Wysocki (5):
cpufreq: intel_pstate: Fold intel_pstate_max_within_limits() into caller
cpufreq: intel_pstate: Do not update global.turbo_disabled after initialization
cpufreq: intel_pstate: Rearrange show_no_turbo() and store_no_turbo()
cpufreq: intel_pstate: Read global.no_turbo under READ_ONCE()
cpufreq: intel_pstate: Check turbo_is_disabled() in store_no_turbo()

Rameshkumar Sundaram (1):
wifi: ath11k: fix group data packet drops during rekey

Ronak Doshi (1):
vmxnet3: update MTU after device quiesce

Rosen Penev (2):
net: thunder_bgx: add a missing of_node_put
net: thunder_bgx: decrement cleanup index before use

Sabrina Dubroca (1):
macsec: read MACSEC_SA_ATTR_PN with nla_get_uint

Sean Anderson (1):
net: macb: Fix tx_ptr_lock locking

Shinji Nomoto (1):
cpupower: Fix a bug where the -t option of the set subcommand was not working.

Srinivas Pandruvada (2):
cpufreq: intel_pstate: Revise global turbo disable check
cpufreq: intel_pstate: Unchecked MSR aceess in legacy mode

Stanislav Fort (1):
batman-adv: fix OOB read/write in network-coding decode

Stefan Binding (1):
ALSA: hda/realtek: Add support for HP Agusta using CS35L41 HDA

Sungbae Yoo (1):
tee: optee: ffa: fix a typo of "optee_ffa_api_is_compatible"

Takashi Iwai (1):
ALSA: hda/hdmi: Add pin fix for another HP EliteDesk 800 G4 model

Timur Kristóf (1):
drm/amd/display: Don't warn when missing DCE encoder caps

Vadim Pasternak (1):
hwmon: mlxreg-fan: Prevent fans from getting stuck at 0 RPM

Vitaly Lifshits (1):
e1000e: fix heap overflow in e1000_set_eeprom

Wang Liang (2):
netfilter: br_netfilter: do not check confirmed bit in br_nf_local_in() after confirm
net: atm: fix memory leak in atm_register_sysfs when device_register fail

Wentao Liang (1):
pcmcia: Add error handling for add_interval() in do_validate_mem()

Yang Li (1):
Bluetooth: hci_sync: Avoid adding default advertising on startup

Zhen Ni (1):
i40e: Fix potential invalid access when MAC list is empty

panfan (1):
arm64: ftrace: fix unreachable PLT for ftrace_caller in init_module with CONFIG_DYNAMIC_FTRACE

wangzijie (1):
proc: fix missing pde_set_flags() for net proc files

yangshiguang (1):
mm: slub: avoid wake up kswapd in set_track_prepare

zhang jiao (1):
tools: gpio: remove the include directory on make clean

zhangjiao (1):
tools: gpio: rm .*.cmd on make clean

author maintainer
#1 lore raw
Documentation/userspace-api/netlink/specs.rst +16 -2
index cc4e2430997e..a8218284e67a 100644
@@ -408,10 +408,21 @@ This section describes the attribute types supported by the ``genetlink``
 compatibility level. Refer to documentation of different levels for additional
 attribute types.
 
-Scalar integer types
+Common integer types
 --------------------
 
-Fixed-width integer types:
+``sint`` and ``uint`` represent signed and unsigned 64 bit integers.
+If the value can fit on 32 bits only 32 bits are carried in netlink
+messages, otherwise full 64 bits are carried. Note that the payload
+is only aligned to 4B, so the full 64 bit value may be unaligned!
+
+Common integer types should be preferred over fix-width types in majority
+of cases.
+
+Fix-width integer types
+-----------------------
+
+Fixed-width integer types include:
 ``u8``, ``u16``, ``u32``, ``u64``, ``s8``, ``s16``, ``s32``, ``s64``.
 
 Note that types smaller than 32 bit should be avoided as using them
@@ -421,6 +432,9 @@ See :ref:`pad_type` for padding of 64 bit attributes.
 The payload of the attribute is the integer in host order unless ``byte-order``
 specifies otherwise.
 
+64 bit values are usually aligned by the kernel but it is recommended
+that the user space is able to deal with unaligned values.
+
 .. _pad_type:
 
 pad
Makefile +1 -1
index ae57f816375e..2b7f67d7b641 100644
@@ -1,7 +1,7 @@
 # SPDX-License-Identifier: GPL-2.0
 VERSION = 6
 PATCHLEVEL = 6
-SUBLEVEL = 104
+SUBLEVEL = 105
 EXTRAVERSION =
 NAME = Pinguïn Aangedreven
 
arch/arm64/boot/dts/freescale/imx8mp-data-modul-edm-sbc.dts +1 -0
index cd44bf83745c..678ecc9f81db 100644
@@ -442,6 +442,7 @@ &usdhc2 {
 	pinctrl-2 = <&pinctrl_usdhc2_200mhz>, <&pinctrl_usdhc2_gpio>;
 	cd-gpios = <&gpio2 12 GPIO_ACTIVE_LOW>;
 	vmmc-supply = <&reg_usdhc2_vmmc>;
+	vqmmc-supply = <&ldo5>;
 	bus-width = <4>;
 	status = "okay";
 };
arch/arm64/boot/dts/freescale/imx8mp-dhcom-som.dtsi +1 -0
index eae39c1cb985..2e93d922c861 100644
@@ -571,6 +571,7 @@ &usdhc2 {
 	pinctrl-2 = <&pinctrl_usdhc2_200mhz>, <&pinctrl_usdhc2_gpio>;
 	cd-gpios = <&gpio2 12 GPIO_ACTIVE_LOW>;
 	vmmc-supply = <&reg_usdhc2_vmmc>;
+	vqmmc-supply = <&ldo5>;
 	bus-width = <4>;
 	status = "okay";
 };
arch/arm64/boot/dts/rockchip/rk3399-pinebook-pro.dts +1 -0
index f5e124b235c8..fb3012a6c9fc 100644
@@ -967,6 +967,7 @@ spiflash: flash@0 {
 		reg = <0>;
 		m25p,fast-read;
 		spi-max-frequency = <10000000>;
+		vcc-supply = <&vcc_3v0>;
 	};
 };
 
arch/arm64/include/asm/module.h +1 -0
index bfa6638b4c93..8f7ac23c404d 100644
@@ -19,6 +19,7 @@ struct mod_arch_specific {
 
 	/* for CONFIG_DYNAMIC_FTRACE */
 	struct plt_entry	*ftrace_trampolines;
+	struct plt_entry	*init_ftrace_trampolines;
 };
 
 u64 module_emit_plt_entry(struct module *mod, Elf64_Shdr *sechdrs,
arch/arm64/include/asm/module.lds.h +1 -0
index b9ae8349e35d..fb944b46846d 100644
@@ -2,6 +2,7 @@ SECTIONS {
 	.plt 0 : { BYTE(0) }
 	.init.plt 0 : { BYTE(0) }
 	.text.ftrace_trampoline 0 : { BYTE(0) }
+	.init.text.ftrace_trampoline 0 : { BYTE(0) }
 
 #ifdef CONFIG_KASAN_SW_TAGS
 	/*
arch/arm64/kernel/ftrace.c +10 -3
index a650f5e11fc5..b657f058bf4d 100644
@@ -195,10 +195,17 @@ int ftrace_update_ftrace_func(ftrace_func_t func)
 	return ftrace_modify_code(pc, 0, new, false);
 }
 
-static struct plt_entry *get_ftrace_plt(struct module *mod)
+static struct plt_entry *get_ftrace_plt(struct module *mod, unsigned long addr)
 {
 #ifdef CONFIG_MODULES
-	struct plt_entry *plt = mod->arch.ftrace_trampolines;
+	struct plt_entry *plt = NULL;
+
+	if (within_module_mem_type(addr, mod, MOD_INIT_TEXT))
+		plt = mod->arch.init_ftrace_trampolines;
+	else if (within_module_mem_type(addr, mod, MOD_TEXT))
+		plt = mod->arch.ftrace_trampolines;
+	else
+		return NULL;
 
 	return &plt[FTRACE_PLT_IDX];
 #else
@@ -270,7 +277,7 @@ static bool ftrace_find_callable_addr(struct dyn_ftrace *rec,
 	if (WARN_ON(!mod))
 		return false;
 
-	plt = get_ftrace_plt(mod);
+	plt = get_ftrace_plt(mod, pc);
 	if (!plt) {
 		pr_err("ftrace: no module PLT for %ps\n", (void *)*addr);
 		return false;
arch/arm64/kernel/module-plts.c +11 -1
index 79200f21e123..e4ddb1642ee2 100644
@@ -284,7 +284,7 @@ int module_frob_arch_sections(Elf_Ehdr *ehdr, Elf_Shdr *sechdrs,
 	unsigned long core_plts = 0;
 	unsigned long init_plts = 0;
 	Elf64_Sym *syms = NULL;
-	Elf_Shdr *pltsec, *tramp = NULL;
+	Elf_Shdr *pltsec, *tramp = NULL, *init_tramp = NULL;
 	int i;
 
 	/*
@@ -299,6 +299,9 @@ int module_frob_arch_sections(Elf_Ehdr *ehdr, Elf_Shdr *sechdrs,
 		else if (!strcmp(secstrings + sechdrs[i].sh_name,
 				 ".text.ftrace_trampoline"))
 			tramp = sechdrs + i;
+		else if (!strcmp(secstrings + sechdrs[i].sh_name,
+				 ".init.text.ftrace_trampoline"))
+			init_tramp = sechdrs + i;
 		else if (sechdrs[i].sh_type == SHT_SYMTAB)
 			syms = (Elf64_Sym *)sechdrs[i].sh_addr;
 	}
@@ -364,5 +367,12 @@ int module_frob_arch_sections(Elf_Ehdr *ehdr, Elf_Shdr *sechdrs,
 		tramp->sh_size = NR_FTRACE_PLTS * sizeof(struct plt_entry);
 	}
 
+	if (init_tramp) {
+		init_tramp->sh_type = SHT_NOBITS;
+		init_tramp->sh_flags = SHF_EXECINSTR | SHF_ALLOC;
+		init_tramp->sh_addralign = __alignof__(struct plt_entry);
+		init_tramp->sh_size = NR_FTRACE_PLTS * sizeof(struct plt_entry);
+	}
+
 	return 0;
 }
arch/arm64/kernel/module.c +11 -0
index dd851297596e..adaf2920773b 100644
@@ -579,6 +579,17 @@ static int module_init_ftrace_plt(const Elf_Ehdr *hdr,
 	__init_plt(&plts[FTRACE_PLT_IDX], FTRACE_ADDR);
 
 	mod->arch.ftrace_trampolines = plts;
+
+	s = find_section(hdr, sechdrs, ".init.text.ftrace_trampoline");
+	if (!s)
+		return -ENOEXEC;
+
+	plts = (void *)s->sh_addr;
+
+	__init_plt(&plts[FTRACE_PLT_IDX], FTRACE_ADDR);
+
+	mod->arch.init_ftrace_trampolines = plts;
+
 #endif
 	return 0;
 }
arch/loongarch/kernel/signal.c +5 -5
index 4a3686d13349..0e90cd2df0ea 100644
@@ -697,6 +697,11 @@ static int setup_sigcontext(struct pt_regs *regs, struct sigcontext __user *sc,
 	for (i = 1; i < 32; i++)
 		err |= __put_user(regs->regs[i], &sc->sc_regs[i]);
 
+#ifdef CONFIG_CPU_HAS_LBT
+	if (extctx->lbt.addr)
+		err |= protected_save_lbt_context(extctx);
+#endif
+
 	if (extctx->lasx.addr)
 		err |= protected_save_lasx_context(extctx);
 	else if (extctx->lsx.addr)
@@ -704,11 +709,6 @@ static int setup_sigcontext(struct pt_regs *regs, struct sigcontext __user *sc,
 	else if (extctx->fpu.addr)
 		err |= protected_save_fpu_context(extctx);
 
-#ifdef CONFIG_CPU_HAS_LBT
-	if (extctx->lbt.addr)
-		err |= protected_save_lbt_context(extctx);
-#endif
-
 	/* Set the "end" magic */
 	info = (struct sctx_info *)extctx->end.addr;
 	err |= __put_user(0, &info->magic);
arch/riscv/include/asm/asm.h +1 -1
index b5b84c6be01e..da818b39a24c 100644
@@ -90,7 +90,7 @@
 #endif
 
 .macro asm_per_cpu dst sym tmp
-	REG_L \tmp, TASK_TI_CPU_NUM(tp)
+	lw    \tmp, TASK_TI_CPU_NUM(tp)
 	slli  \tmp, \tmp, PER_CPU_OFFSET_SHIFT
 	la    \dst, __per_cpu_offset
 	add   \dst, \dst, \tmp
arch/x86/include/asm/pgtable_64_types.h +3 -0
index 35c416f06155..ea95303ab15b 100644
@@ -41,6 +41,9 @@ static inline bool pgtable_l5_enabled(void)
 #define pgtable_l5_enabled() 0
 #endif /* CONFIG_X86_5LEVEL */
 
+#define ARCH_PAGE_TABLE_SYNC_MASK \
+	(pgtable_l5_enabled() ? PGTBL_PGD_MODIFIED : PGTBL_P4D_MODIFIED)
+
 extern unsigned int pgdir_shift;
 extern unsigned int ptrs_per_p4d;
 
arch/x86/mm/init_64.c +18 -0
index 11eb93e13ce1..cf080c96b7dd 100644
@@ -223,6 +223,24 @@ static void sync_global_pgds(unsigned long start, unsigned long end)
 		sync_global_pgds_l4(start, end);
 }
 
+/*
+ * Make kernel mappings visible in all page tables in the system.
+ * This is necessary except when the init task populates kernel mappings
+ * during the boot process. In that case, all processes originating from
+ * the init task copies the kernel mappings, so there is no issue.
+ * Otherwise, missing synchronization could lead to kernel crashes due
+ * to missing page table entries for certain kernel mappings.
+ *
+ * Synchronization is performed at the top level, which is the PGD in
+ * 5-level paging systems. But in 4-level paging systems, however,
+ * pgd_populate() is a no-op, so synchronization is done at the P4D level.
+ * sync_global_pgds() handles this difference between paging levels.
+ */
+void arch_sync_kernel_mappings(unsigned long start, unsigned long end)
+{
+	sync_global_pgds(start, end);
+}
+
 /*
  * NOTE: This function is marked __ref because it calls __init function
  * (alloc_bootmem_pages). It's safe to do it ONLY when after_bootmem == 0.
drivers/acpi/arm64/iort.c +3 -1
index 1a31106a14e4..6ee8382a3230 100644
@@ -937,8 +937,10 @@ static u32 *iort_rmr_alloc_sids(u32 *sids, u32 count, u32 id_start,
 
 	new_sids = krealloc_array(sids, count + new_count,
 				  sizeof(*new_sids), GFP_KERNEL);
-	if (!new_sids)
+	if (!new_sids) {
+		kfree(sids);
 		return NULL;
+	}
 
 	for (i = count; i < total_count; i++)
 		new_sids[i] = id_start++;
drivers/bluetooth/hci_vhci.c +41 -16

81 lines not on this page · raw message

drivers/cpufreq/intel_pstate.c +44 -78

274 lines not on this page · raw message

drivers/dma/mediatek/mtk-cqdma.c +4 -6
index 324b7387b1b9..525bb92ced8f 100644
@@ -420,15 +420,11 @@ static struct virt_dma_desc *mtk_cqdma_find_active_desc(struct dma_chan *c,
 {
 	struct mtk_cqdma_vchan *cvc = to_cqdma_vchan(c);
 	struct virt_dma_desc *vd;
-	unsigned long flags;
 
-	spin_lock_irqsave(&cvc->pc->lock, flags);
 	list_for_each_entry(vd, &cvc->pc->queue, node)
 		if (vd->tx.cookie == cookie) {
-			spin_unlock_irqrestore(&cvc->pc->lock, flags);
 			return vd;
 		}
-	spin_unlock_irqrestore(&cvc->pc->lock, flags);
 
 	list_for_each_entry(vd, &cvc->vc.desc_issued, node)
 		if (vd->tx.cookie == cookie)
@@ -452,9 +448,11 @@ static enum dma_status mtk_cqdma_tx_status(struct dma_chan *c,
 	if (ret == DMA_COMPLETE || !txstate)
 		return ret;
 
-	spin_lock_irqsave(&cvc->vc.lock, flags);
+	spin_lock_irqsave(&cvc->pc->lock, flags);
+	spin_lock(&cvc->vc.lock);
 	vd = mtk_cqdma_find_active_desc(c, cookie);
-	spin_unlock_irqrestore(&cvc->vc.lock, flags);
+	spin_unlock(&cvc->vc.lock);
+	spin_unlock_irqrestore(&cvc->pc->lock, flags);
 
 	if (vd) {
 		cvd = to_cqdma_vdesc(vd);
drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c +76 -70

491 lines not on this page · raw message

drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c +4 -2
index fded8902346f..2992ce494e00 100644
@@ -2125,11 +2125,13 @@ void amdgpu_vm_adjust_size(struct amdgpu_device *adev, uint32_t min_vm_size,
  */
 long amdgpu_vm_wait_idle(struct amdgpu_vm *vm, long timeout)
 {
-	timeout = drm_sched_entity_flush(&vm->immediate, timeout);
+	timeout = dma_resv_wait_timeout(vm->root.bo->tbo.base.resv,
+					DMA_RESV_USAGE_BOOKKEEP,
+					true, timeout);
 	if (timeout <= 0)
 		return timeout;
 
-	return drm_sched_entity_flush(&vm->delayed, timeout);
+	return dma_fence_wait_timeout(vm->last_unlocked, true, timeout);
 }
 
 /**
drivers/gpu/drm/amd/amdgpu/dce_v10_0.c +0 -5
index 584cd5277f92..e2dd7d4361cf 100644
@@ -1459,17 +1459,12 @@ static int dce_v10_0_audio_init(struct amdgpu_device *adev)
 
 static void dce_v10_0_audio_fini(struct amdgpu_device *adev)
 {
-	int i;
-
 	if (!amdgpu_audio)
 		return;
 
 	if (!adev->mode_info.audio.enabled)
 		return;
 
-	for (i = 0; i < adev->mode_info.audio.num_pins; i++)
-		dce_v10_0_audio_enable(adev, &adev->mode_info.audio.pin[i], false);
-
 	adev->mode_info.audio.enabled = false;
 }
 
drivers/gpu/drm/amd/amdgpu/dce_v11_0.c +0 -5
index c14b70350a51..7ce89654e12b 100644
@@ -1508,17 +1508,12 @@ static int dce_v11_0_audio_init(struct amdgpu_device *adev)
 
 static void dce_v11_0_audio_fini(struct amdgpu_device *adev)
 {
-	int i;
-
 	if (!amdgpu_audio)
 		return;
 
 	if (!adev->mode_info.audio.enabled)
 		return;
 
-	for (i = 0; i < adev->mode_info.audio.num_pins; i++)
-		dce_v11_0_audio_enable(adev, &adev->mode_info.audio.pin[i], false);
-
 	adev->mode_info.audio.enabled = false;
 }
 
drivers/gpu/drm/amd/amdgpu/dce_v6_0.c +0 -5
index 7f85ba5b726f..c3d05ab7b12f 100644
@@ -1377,17 +1377,12 @@ static int dce_v6_0_audio_init(struct amdgpu_device *adev)
 
 static void dce_v6_0_audio_fini(struct amdgpu_device *adev)
 {
-	int i;
-
 	if (!amdgpu_audio)
 		return;
 
 	if (!adev->mode_info.audio.enabled)
 		return;
 
-	for (i = 0; i < adev->mode_info.audio.num_pins; i++)
-		dce_v6_0_audio_enable(adev, &adev->mode_info.audio.pin[i], false);
-
 	adev->mode_info.audio.enabled = false;
 }
 
drivers/gpu/drm/amd/amdgpu/dce_v8_0.c +0 -5
index f2b3cb5ed6be..ce2300c3c36b 100644
@@ -1426,17 +1426,12 @@ static int dce_v8_0_audio_init(struct amdgpu_device *adev)
 
 static void dce_v8_0_audio_fini(struct amdgpu_device *adev)
 {
-	int i;
-
 	if (!amdgpu_audio)
 		return;
 
 	if (!adev->mode_info.audio.enabled)
 		return;
 
-	for (i = 0; i < adev->mode_info.audio.num_pins; i++)
-		dce_v8_0_audio_enable(adev, &adev->mode_info.audio.pin[i], false);
-
 	adev->mode_info.audio.enabled = false;
 }
 
drivers/gpu/drm/amd/display/dc/dce/dce_link_encoder.c +4 -4
index 136bd93c3b65..0a33f8f117e9 100644
@@ -896,13 +896,13 @@ void dce110_link_encoder_construct(
 						enc110->base.id, &bp_cap_info);
 
 	/* Override features with DCE-specific values */
-	if (BP_RESULT_OK == result) {
+	if (result == BP_RESULT_OK) {
 		enc110->base.features.flags.bits.IS_HBR2_CAPABLE =
 				bp_cap_info.DP_HBR2_EN;
 		enc110->base.features.flags.bits.IS_HBR3_CAPABLE =
 				bp_cap_info.DP_HBR3_EN;
 		enc110->base.features.flags.bits.HDMI_6GB_EN = bp_cap_info.HDMI_6GB_EN;
-	} else {
+	} else if (result != BP_RESULT_NORECORD) {
 		DC_LOG_WARNING("%s: Failed to get encoder_cap_info from VBIOS with error code %d!\n",
 				__func__,
 				result);
@@ -1795,13 +1795,13 @@ void dce60_link_encoder_construct(
 						enc110->base.id, &bp_cap_info);
 
 	/* Override features with DCE-specific values */
-	if (BP_RESULT_OK == result) {
+	if (result == BP_RESULT_OK) {
 		enc110->base.features.flags.bits.IS_HBR2_CAPABLE =
 				bp_cap_info.DP_HBR2_EN;
 		enc110->base.features.flags.bits.IS_HBR3_CAPABLE =
 				bp_cap_info.DP_HBR3_EN;
 		enc110->base.features.flags.bits.HDMI_6GB_EN = bp_cap_info.HDMI_6GB_EN;
-	} else {
+	} else if (result != BP_RESULT_NORECORD) {
 		DC_LOG_WARNING("%s: Failed to get encoder_cap_info from VBIOS with error code %d!\n",
 				__func__,
 				result);
drivers/gpu/drm/bridge/ti-sn65dsi86.c +11 -0
index 59cbff209acd..560935f2e8cb 100644
@@ -375,6 +375,17 @@ static int __maybe_unused ti_sn65dsi86_resume(struct device *dev)
 
 	gpiod_set_value_cansleep(pdata->enable_gpio, 1);
 
+	/*
+	 * After EN is deasserted and an external clock is detected, the bridge
+	 * will sample GPIO3:1 to determine its frequency. The driver will
+	 * overwrite this setting in ti_sn_bridge_set_refclk_freq(). But this is
+	 * racy. Thus we have to wait a couple of us. According to the datasheet
+	 * the GPIO lines has to be stable at least 5 us (td5) but it seems that
+	 * is not enough and the refclk frequency value is still lost or
+	 * overwritten by the bridge itself. Waiting for 20us seems to work.
+	 */
+	usleep_range(20, 30);
+
 	/*
 	 * If we have a reference clock we can enable communication w/ the
 	 * panel (including the aux channel) w/out any need for an input clock
drivers/gpu/drm/mediatek/mtk_drm_drv.c +30 -12

81 lines not on this page · raw message

drivers/gpu/drm/mediatek/mtk_drm_drv.h +7 -1
index eb2fd45941f0..f4de8bb27685 100644
@@ -9,11 +9,17 @@
 #include <linux/io.h>
 #include "mtk_drm_ddp_comp.h"
 
-#define MAX_CRTC	3
 #define MAX_CONNECTOR	2
 #define DDP_COMPONENT_DRM_OVL_ADAPTOR (DDP_COMPONENT_ID_MAX + 1)
 #define DDP_COMPONENT_DRM_ID_MAX (DDP_COMPONENT_DRM_OVL_ADAPTOR + 1)
 
+enum mtk_drm_crtc_path {
+	CRTC_MAIN,
+	CRTC_EXT,
+	CRTC_THIRD,
+	MAX_CRTC,
+};
+
 struct device;
 struct device_node;
 struct drm_crtc;
drivers/gpu/drm/nouveau/nvkm/engine/fifo/base.c +2 -0
index 5db37247dc29..572c54a37091 100644
@@ -348,6 +348,8 @@ nvkm_fifo_dtor(struct nvkm_engine *engine)
 	nvkm_chid_unref(&fifo->chid);
 
 	nvkm_event_fini(&fifo->nonstall.event);
+	if (fifo->func->nonstall_dtor)
+		fifo->func->nonstall_dtor(fifo);
 	mutex_destroy(&fifo->mutex);
 	return fifo;
 }
drivers/gpu/drm/nouveau/nvkm/engine/fifo/ga100.c +15 -8
index c56d2a839efb..686a2c9fec46 100644
@@ -516,19 +516,11 @@ ga100_fifo_nonstall_intr(struct nvkm_inth *inth)
 static void
 ga100_fifo_nonstall_block(struct nvkm_event *event, int type, int index)
 {
-	struct nvkm_fifo *fifo = container_of(event, typeof(*fifo), nonstall.event);
-	struct nvkm_runl *runl = nvkm_runl_get(fifo, index, 0);
-
-	nvkm_inth_block(&runl->nonstall.inth);
 }
 
 static void
 ga100_fifo_nonstall_allow(struct nvkm_event *event, int type, int index)
 {
-	struct nvkm_fifo *fifo = container_of(event, typeof(*fifo), nonstall.event);
-	struct nvkm_runl *runl = nvkm_runl_get(fifo, index, 0);
-
-	nvkm_inth_allow(&runl->nonstall.inth);
 }
 
 const struct nvkm_event_func
@@ -559,12 +551,26 @@ ga100_fifo_nonstall_ctor(struct nvkm_fifo *fifo)
 		if (ret)
 			return ret;
 
+		nvkm_inth_allow(&runl->nonstall.inth);
+
 		nr = max(nr, runl->id + 1);
 	}
 
 	return nr;
 }
 
+void
+ga100_fifo_nonstall_dtor(struct nvkm_fifo *fifo)
+{
+	struct nvkm_runl *runl;
+
+	nvkm_runl_foreach(runl, fifo) {
+		if (runl->nonstall.vector < 0)
+			continue;
+		nvkm_inth_block(&runl->nonstall.inth);
+	}
+}
+
 int
 ga100_fifo_runl_ctor(struct nvkm_fifo *fifo)
 {
@@ -594,6 +600,7 @@ ga100_fifo = {
 	.runl_ctor = ga100_fifo_runl_ctor,
 	.mmu_fault = &tu102_fifo_mmu_fault,
 	.nonstall_ctor = ga100_fifo_nonstall_ctor,
+	.nonstall_dtor = ga100_fifo_nonstall_dtor,
 	.nonstall = &ga100_fifo_nonstall,
 	.runl = &ga100_runl,
 	.runq = &ga100_runq,
drivers/gpu/drm/nouveau/nvkm/engine/fifo/ga102.c +1 -0
index 2cdf5da339b6..dccf38101fd9 100644
@@ -28,6 +28,7 @@ ga102_fifo = {
 	.runl_ctor = ga100_fifo_runl_ctor,
 	.mmu_fault = &tu102_fifo_mmu_fault,
 	.nonstall_ctor = ga100_fifo_nonstall_ctor,
+	.nonstall_dtor = ga100_fifo_nonstall_dtor,
 	.nonstall = &ga100_fifo_nonstall,
 	.runl = &ga100_runl,
 	.runq = &ga100_runq,
drivers/gpu/drm/nouveau/nvkm/engine/fifo/priv.h +2 -0
index 4d448be19224..b4ccf6b8bd21 100644
@@ -38,6 +38,7 @@ struct nvkm_fifo_func {
 	void (*start)(struct nvkm_fifo *, unsigned long *);
 
 	int (*nonstall_ctor)(struct nvkm_fifo *);
+	void (*nonstall_dtor)(struct nvkm_fifo *);
 	const struct nvkm_event_func *nonstall;
 
 	const struct nvkm_runl_func *runl;
@@ -194,6 +195,7 @@ extern const struct nvkm_fifo_func_mmu_fault tu102_fifo_mmu_fault;
 
 int ga100_fifo_runl_ctor(struct nvkm_fifo *);
 int ga100_fifo_nonstall_ctor(struct nvkm_fifo *);
+void ga100_fifo_nonstall_dtor(struct nvkm_fifo *);
 extern const struct nvkm_event_func ga100_fifo_nonstall;
 extern const struct nvkm_runl_func ga100_runl;
 extern const struct nvkm_runq_func ga100_runq;
drivers/hwmon/mlxreg-fan.c +2 -3
index a5f89aab3fb4..c25a54d5b39a 100644
@@ -561,15 +561,14 @@ static int mlxreg_fan_cooling_config(struct device *dev, struct mlxreg_fan *fan)
 		if (!pwm->connected)
 			continue;
 		pwm->fan = fan;
+		/* Set minimal PWM speed. */
+		pwm->last_hwmon_state = MLXREG_FAN_PWM_DUTY2STATE(MLXREG_FAN_MIN_DUTY);
 		pwm->cdev = devm_thermal_of_cooling_device_register(dev, NULL, mlxreg_fan_name[i],
 								    pwm, &mlxreg_fan_cooling_ops);
 		if (IS_ERR(pwm->cdev)) {
 			dev_err(dev, "Failed to register cooling device\n");
 			return PTR_ERR(pwm->cdev);
 		}
-
-		/* Set minimal PWM speed. */
-		pwm->last_hwmon_state = MLXREG_FAN_PWM_DUTY2STATE(MLXREG_FAN_MIN_DUTY);
 	}
 
 	return 0;
drivers/iio/chemical/pms7003.c +3 -2
index e9857d93b307..70c92cbfc9f1 100644
@@ -5,7 +5,6 @@
  * Copyright (c) Tomasz Duszynski <[email protected]>
  */
 
-#include <asm/unaligned.h>
 #include <linux/completion.h>
 #include <linux/device.h>
 #include <linux/errno.h>
@@ -19,6 +18,8 @@
 #include <linux/module.h>
 #include <linux/mutex.h>
 #include <linux/serdev.h>
+#include <linux/types.h>
+#include <asm/unaligned.h>
 
 #define PMS7003_DRIVER_NAME "pms7003"
 
@@ -76,7 +77,7 @@ struct pms7003_state {
 	/* Used to construct scan to push to the IIO buffer */
 	struct {
 		u16 data[3]; /* PM1, PM2P5, PM10 */
-		s64 ts;
+		aligned_s64 ts;
 	} scan;
 };
 
drivers/iio/imu/inv_mpu6050/inv_mpu_ring.c +1 -1
index d4f9b5d8d28d..ace3ce4faea7 100644
@@ -52,7 +52,7 @@ irqreturn_t inv_mpu6050_read_fifo(int irq, void *p)
 	u16 fifo_count;
 	u32 fifo_period;
 	s64 timestamp;
-	u8 data[INV_MPU6050_OUTPUT_DATA_SIZE];
+	u8 data[INV_MPU6050_OUTPUT_DATA_SIZE] __aligned(8);
 	int int_status;
 	size_t i, nb;
 
drivers/iio/light/opt3001.c +3 -2
index dc529cbe3805..25a45c4251fb 100644
@@ -692,8 +692,9 @@ static irqreturn_t opt3001_irq(int irq, void *_iio)
 	struct opt3001 *opt = iio_priv(iio);
 	int ret;
 	bool wake_result_ready_queue = false;
+	bool ok_to_ignore_lock = opt->ok_to_ignore_lock;
 
-	if (!opt->ok_to_ignore_lock)
+	if (!ok_to_ignore_lock)
 		mutex_lock(&opt->lock);
 
 	ret = i2c_smbus_read_word_swapped(opt->client, OPT3001_CONFIGURATION);
@@ -730,7 +731,7 @@ static irqreturn_t opt3001_irq(int irq, void *_iio)
 	}
 
 out:
-	if (!opt->ok_to_ignore_lock)
+	if (!ok_to_ignore_lock)
 		mutex_unlock(&opt->lock);
 
 	if (wake_result_ready_queue)
drivers/iio/pressure/mprls0025pa.c +4 -6
index e3f0de020a40..829c472812e4 100644
@@ -87,11 +87,6 @@ static const struct mpr_func_spec mpr_func_spec[] = {
 	[MPR_FUNCTION_C] = {.output_min = 3355443, .output_max = 13421773},
 };
 
-struct mpr_chan {
-	s32			pres;		/* pressure value */
-	s64			ts;		/* timestamp */
-};
-
 struct mpr_data {
 	struct i2c_client	*client;
 	struct mutex		lock;		/*
@@ -120,7 +115,10 @@ struct mpr_data {
 						 * loop until data is ready
 						 */
 	struct completion	completion;	/* handshake from irq to read */
-	struct mpr_chan		chan;		/*
+	struct {
+		s32 pres;			/* pressure value */
+		aligned_s64 ts;			/* timestamp */
+	} chan;				/*
 						 * channel values for buffered
 						 * mode
 						 */
drivers/isdn/mISDN/dsp_hwec.c +3 -3
index 0b3f29195330..0cd216e28f00 100644
@@ -51,14 +51,14 @@ void dsp_hwec_enable(struct dsp *dsp, const char *arg)
 		goto _do;
 
 	{
-		char *dup, *tok, *name, *val;
+		char *dup, *next, *tok, *name, *val;
 		int tmp;
 
-		dup = kstrdup(arg, GFP_ATOMIC);
+		dup = next = kstrdup(arg, GFP_ATOMIC);
 		if (!dup)
 			return;
 
-		while ((tok = strsep(&dup, ","))) {
+		while ((tok = strsep(&next, ","))) {
 			if (!strlen(tok))
 				continue;
 			name = strsep(&tok, "=");
drivers/net/ethernet/cadence/macb_main.c +16 -12
index 534e7f7bca4c..b836ab2a649a 100644
@@ -1234,11 +1234,12 @@ static int macb_tx_complete(struct macb_queue *queue, int budget)
 {
 	struct macb *bp = queue->bp;
 	u16 queue_index = queue - bp->queues;
+	unsigned long flags;
 	unsigned int tail;
 	unsigned int head;
 	int packets = 0;
 
-	spin_lock(&queue->tx_ptr_lock);
+	spin_lock_irqsave(&queue->tx_ptr_lock, flags);
 	head = queue->tx_head;
 	for (tail = queue->tx_tail; tail != head && packets < budget; tail++) {
 		struct macb_tx_skb	*tx_skb;
@@ -1297,7 +1298,7 @@ static int macb_tx_complete(struct macb_queue *queue, int budget)
 	    CIRC_CNT(queue->tx_head, queue->tx_tail,
 		     bp->tx_ring_size) <= MACB_TX_WAKEUP_THRESH(bp))
 		netif_wake_subqueue(bp->dev, queue_index);
-	spin_unlock(&queue->tx_ptr_lock);
+	spin_unlock_irqrestore(&queue->tx_ptr_lock, flags);
 
 	return packets;
 }
@@ -1713,8 +1714,9 @@ static void macb_tx_restart(struct macb_queue *queue)
 {
 	struct macb *bp = queue->bp;
 	unsigned int head_idx, tbqp;
+	unsigned long flags;
 
-	spin_lock(&queue->tx_ptr_lock);
+	spin_lock_irqsave(&queue->tx_ptr_lock, flags);
 
 	if (queue->tx_head == queue->tx_tail)
 		goto out_tx_ptr_unlock;
@@ -1726,19 +1728,20 @@ static void macb_tx_restart(struct macb_queue *queue)
 	if (tbqp == head_idx)
 		goto out_tx_ptr_unlock;
 
-	spin_lock_irq(&bp->lock);
+	spin_lock(&bp->lock);
 	macb_writel(bp, NCR, macb_readl(bp, NCR) | MACB_BIT(TSTART));
-	spin_unlock_irq(&bp->lock);
+	spin_unlock(&bp->lock);
 
 out_tx_ptr_unlock:
-	spin_unlock(&queue->tx_ptr_lock);
+	spin_unlock_irqrestore(&queue->tx_ptr_lock, flags);
 }
 
 static bool macb_tx_complete_pending(struct macb_queue *queue)
 {
 	bool retval = false;
+	unsigned long flags;
 
-	spin_lock(&queue->tx_ptr_lock);
+	spin_lock_irqsave(&queue->tx_ptr_lock, flags);
 	if (queue->tx_head != queue->tx_tail) {
 		/* Make hw descriptor updates visible to CPU */
 		rmb();
@@ -1746,7 +1749,7 @@ static bool macb_tx_complete_pending(struct macb_queue *queue)
 		if (macb_tx_desc(queue, queue->tx_tail)->ctrl & MACB_BIT(TX_USED))
 			retval = true;
 	}
-	spin_unlock(&queue->tx_ptr_lock);
+	spin_unlock_irqrestore(&queue->tx_ptr_lock, flags);
 	return retval;
 }
 
@@ -2314,6 +2317,7 @@ static netdev_tx_t macb_start_xmit(struct sk_buff *skb, struct net_device *dev)
 	struct macb_queue *queue = &bp->queues[queue_index];
 	unsigned int desc_cnt, nr_frags, frag_size, f;
 	unsigned int hdrlen;
+	unsigned long flags;
 	bool is_lso;
 	netdev_tx_t ret = NETDEV_TX_OK;
 
@@ -2374,7 +2378,7 @@ static netdev_tx_t macb_start_xmit(struct sk_buff *skb, struct net_device *dev)
 		desc_cnt += DIV_ROUND_UP(frag_size, bp->max_tx_length);
 	}
 
-	spin_lock_bh(&queue->tx_ptr_lock);
+	spin_lock_irqsave(&queue->tx_ptr_lock, flags);
 
 	/* This is a hard error, log it. */
 	if (CIRC_SPACE(queue->tx_head, queue->tx_tail,
@@ -2396,15 +2400,15 @@ static netdev_tx_t macb_start_xmit(struct sk_buff *skb, struct net_device *dev)
 	wmb();
 	skb_tx_timestamp(skb);
 
-	spin_lock_irq(&bp->lock);
+	spin_lock(&bp->lock);
 	macb_writel(bp, NCR, macb_readl(bp, NCR) | MACB_BIT(TSTART));
-	spin_unlock_irq(&bp->lock);
+	spin_unlock(&bp->lock);
 
 	if (CIRC_SPACE(queue->tx_head, queue->tx_tail, bp->tx_ring_size) < 1)
 		netif_stop_subqueue(dev, queue_index);
 
 unlock:
-	spin_unlock_bh(&queue->tx_ptr_lock);
+	spin_unlock_irqrestore(&queue->tx_ptr_lock, flags);
 
 	return ret;
 }
drivers/net/ethernet/cavium/thunder/thunder_bgx.c +12 -8
index 087d4c2b3efd..a423a9388211 100644
@@ -1491,13 +1491,17 @@ static int bgx_init_of_phy(struct bgx *bgx)
 		 * this cortina phy, for which there is no driver
 		 * support, ignore it.
 		 */
-		if (phy_np &&
-		    !of_device_is_compatible(phy_np, "cortina,cs4223-slice")) {
-			/* Wait until the phy drivers are available */
-			pd = of_phy_find_device(phy_np);
-			if (!pd)
-				goto defer;
-			bgx->lmac[lmac].phydev = pd;
+		if (phy_np) {
+			if (!of_device_is_compatible(phy_np, "cortina,cs4223-slice")) {
+				/* Wait until the phy drivers are available */
+				pd = of_phy_find_device(phy_np);
+				if (!pd) {
+					of_node_put(phy_np);
+					goto defer;
+				}
+				bgx->lmac[lmac].phydev = pd;
+			}
+			of_node_put(phy_np);
 		}
 
 		lmac++;
@@ -1513,11 +1517,11 @@ static int bgx_init_of_phy(struct bgx *bgx)
 	 * for phy devices we may have already found.
 	 */
 	while (lmac) {
+		lmac--;
 		if (bgx->lmac[lmac].phydev) {
 			put_device(&bgx->lmac[lmac].phydev->mdio.dev);
 			bgx->lmac[lmac].phydev = NULL;
 		}
-		lmac--;
 	}
 	of_node_put(node);
 	return -EPROBE_DEFER;
drivers/net/ethernet/intel/e1000e/ethtool.c +7 -3
index fc0f98ea6133..a1abc51584a1 100644
@@ -567,12 +567,12 @@ static int e1000_set_eeprom(struct net_device *netdev,
 {
 	struct e1000_adapter *adapter = netdev_priv(netdev);
 	struct e1000_hw *hw = &adapter->hw;
+	size_t total_len, max_len;
 	u16 *eeprom_buff;
-	void *ptr;
-	int max_len;
+	int ret_val = 0;
 	int first_word;
 	int last_word;
-	int ret_val = 0;
+	void *ptr;
 	u16 i;
 
 	if (eeprom->len == 0)
@@ -587,6 +587,10 @@ static int e1000_set_eeprom(struct net_device *netdev,
 
 	max_len = hw->nvm.word_size * 2;
 
+	if (check_add_overflow(eeprom->offset, eeprom->len, &total_len) ||
+	    total_len > max_len)
+		return -EFBIG;
+
 	first_word = eeprom->offset >> 1;
 	last_word = (eeprom->offset + eeprom->len - 1) >> 1;
 	eeprom_buff = kmalloc(max_len, GFP_KERNEL);
drivers/net/ethernet/intel/i40e/i40e_client.c +2 -2
index 306758428aef..a569d2fcc90a 100644
@@ -361,8 +361,8 @@ static void i40e_client_add_instance(struct i40e_pf *pf)
 	if (i40e_client_get_params(vsi, &cdev->lan_info.params))
 		goto free_cdev;
 
-	mac = list_first_entry(&cdev->lan_info.netdev->dev_addrs.list,
-			       struct netdev_hw_addr, list);
+	mac = list_first_entry_or_null(&cdev->lan_info.netdev->dev_addrs.list,
+				       struct netdev_hw_addr, list);
 	if (mac)
 		ether_addr_copy(cdev->lan_info.lanmac, mac->addr);
 	else
drivers/net/ethernet/mediatek/mtk_eth_soc.c +9 -1
index cb8efc952dfd..aefe2af6f01d 100644
@@ -1586,6 +1586,13 @@ static netdev_tx_t mtk_start_xmit(struct sk_buff *skb, struct net_device *dev)
 	bool gso = false;
 	int tx_num;
 
+	if (skb_vlan_tag_present(skb) &&
+	    !eth_proto_is_802_3(eth_hdr(skb)->h_proto)) {
+		skb = __vlan_hwaccel_push_inside(skb);
+		if (!skb)
+			goto dropped;
+	}
+
 	/* normally we can rely on the stack not calling this more than once,
 	 * however we have 2 queues running on the same ring so we need to lock
 	 * the ring access
@@ -1631,8 +1638,9 @@ static netdev_tx_t mtk_start_xmit(struct sk_buff *skb, struct net_device *dev)
 
 drop:
 	spin_unlock(&eth->page_lock);
-	stats->tx_dropped++;
 	dev_kfree_skb_any(skb);
+dropped:
+	stats->tx_dropped++;
 	return NETDEV_TX_OK;
 }
 
drivers/net/ethernet/xircom/xirc2ps_cs.c +1 -1
index 9f505cf02d96..2dc1cfcd7ce9 100644
@@ -1578,7 +1578,7 @@ do_reset(struct net_device *dev, int full)
 	    msleep(40);			/* wait 40 msec to let it complete */
 	}
 	if (full_duplex)
-	    PutByte(XIRCREG1_ECR, GetByte(XIRCREG1_ECR | FullDuplex));
+	    PutByte(XIRCREG1_ECR, GetByte(XIRCREG1_ECR) | FullDuplex);
     } else {  /* No MII */
 	SelectPage(0);
 	value = GetByte(XIRCREG_ESR);	 /* read the ESR */
drivers/net/macsec.c +4 -4
index 767053d6c6b6..af6cc3e90ef7 100644
@@ -1840,7 +1840,7 @@ static int macsec_add_rxsa(struct sk_buff *skb, struct genl_info *info)
 
 	if (tb_sa[MACSEC_SA_ATTR_PN]) {
 		spin_lock_bh(&rx_sa->lock);
-		rx_sa->next_pn = nla_get_u64(tb_sa[MACSEC_SA_ATTR_PN]);
+		rx_sa->next_pn = nla_get_uint(tb_sa[MACSEC_SA_ATTR_PN]);
 		spin_unlock_bh(&rx_sa->lock);
 	}
 
@@ -2082,7 +2082,7 @@ static int macsec_add_txsa(struct sk_buff *skb, struct genl_info *info)
 	}
 
 	spin_lock_bh(&tx_sa->lock);
-	tx_sa->next_pn = nla_get_u64(tb_sa[MACSEC_SA_ATTR_PN]);
+	tx_sa->next_pn = nla_get_uint(tb_sa[MACSEC_SA_ATTR_PN]);
 	spin_unlock_bh(&tx_sa->lock);
 
 	if (tb_sa[MACSEC_SA_ATTR_ACTIVE])
@@ -2394,7 +2394,7 @@ static int macsec_upd_txsa(struct sk_buff *skb, struct genl_info *info)
 
 		spin_lock_bh(&tx_sa->lock);
 		prev_pn = tx_sa->next_pn_halves;
-		tx_sa->next_pn = nla_get_u64(tb_sa[MACSEC_SA_ATTR_PN]);
+		tx_sa->next_pn = nla_get_uint(tb_sa[MACSEC_SA_ATTR_PN]);
 		spin_unlock_bh(&tx_sa->lock);
 	}
 
@@ -2492,7 +2492,7 @@ static int macsec_upd_rxsa(struct sk_buff *skb, struct genl_info *info)
 
 		spin_lock_bh(&rx_sa->lock);
 		prev_pn = rx_sa->next_pn_halves;
-		rx_sa->next_pn = nla_get_u64(tb_sa[MACSEC_SA_ATTR_PN]);
+		rx_sa->next_pn = nla_get_uint(tb_sa[MACSEC_SA_ATTR_PN]);
 		spin_unlock_bh(&rx_sa->lock);
 	}
 
drivers/net/pcs/pcs-rzn1-miic.c +1 -1
index 97139c07130f..b65682b8b6cd 100644
@@ -19,7 +19,7 @@
 #define MIIC_PRCMD			0x0
 #define MIIC_ESID_CODE			0x4
 
-#define MIIC_MODCTRL			0x20
+#define MIIC_MODCTRL			0x8
 #define MIIC_MODCTRL_SW_MODE		GENMASK(4, 0)
 
 #define MIIC_CONVCTRL(port)		(0x100 + (port) * 4)
drivers/net/phy/mscc/mscc_ptp.c +8 -10
index 1f6237705b44..939a8a17595e 100644
@@ -455,12 +455,12 @@ static void vsc85xx_dequeue_skb(struct vsc85xx_ptp *ptp)
 		*p++ = (reg >> 24) & 0xff;
 	}
 
-	len = skb_queue_len(&ptp->tx_queue);
+	len = skb_queue_len_lockless(&ptp->tx_queue);
 	if (len < 1)
 		return;
 
 	while (len--) {
-		skb = __skb_dequeue(&ptp->tx_queue);
+		skb = skb_dequeue(&ptp->tx_queue);
 		if (!skb)
 			return;
 
@@ -485,7 +485,7 @@ static void vsc85xx_dequeue_skb(struct vsc85xx_ptp *ptp)
 		 * packet in the FIFO right now, reschedule it for later
 		 * packets.
 		 */
-		__skb_queue_tail(&ptp->tx_queue, skb);
+		skb_queue_tail(&ptp->tx_queue, skb);
 	}
 }
 
@@ -1067,6 +1067,7 @@ static int vsc85xx_hwtstamp(struct mii_timestamper *mii_ts, struct ifreq *ifr)
 	case HWTSTAMP_TX_ON:
 		break;
 	case HWTSTAMP_TX_OFF:
+		skb_queue_purge(&vsc8531->ptp->tx_queue);
 		break;
 	default:
 		return -ERANGE;
@@ -1091,9 +1092,6 @@ static int vsc85xx_hwtstamp(struct mii_timestamper *mii_ts, struct ifreq *ifr)
 
 	mutex_lock(&vsc8531->ts_lock);
 
-	__skb_queue_purge(&vsc8531->ptp->tx_queue);
-	__skb_queue_head_init(&vsc8531->ptp->tx_queue);
-
 	/* Disable predictor while configuring the 1588 block */
 	val = vsc85xx_ts_read_csr(phydev, PROCESSOR,
 				  MSCC_PHY_PTP_INGR_PREDICTOR);
@@ -1179,9 +1177,7 @@ static void vsc85xx_txtstamp(struct mii_timestamper *mii_ts,
 
 	skb_shinfo(skb)->tx_flags |= SKBTX_IN_PROGRESS;
 
-	mutex_lock(&vsc8531->ts_lock);
-	__skb_queue_tail(&vsc8531->ptp->tx_queue, skb);
-	mutex_unlock(&vsc8531->ts_lock);
+	skb_queue_tail(&vsc8531->ptp->tx_queue, skb);
 	return;
 
 out:
@@ -1547,6 +1543,7 @@ void vsc8584_ptp_deinit(struct phy_device *phydev)
 	if (vsc8531->ptp->ptp_clock) {
 		ptp_clock_unregister(vsc8531->ptp->ptp_clock);
 		skb_queue_purge(&vsc8531->rx_skbs_list);
+		skb_queue_purge(&vsc8531->ptp->tx_queue);
 	}
 }
 
@@ -1570,7 +1567,7 @@ irqreturn_t vsc8584_handle_ts_interrupt(struct phy_device *phydev)
 	if (rc & VSC85XX_1588_INT_FIFO_ADD) {
 		vsc85xx_get_tx_ts(priv->ptp);
 	} else if (rc & VSC85XX_1588_INT_FIFO_OVERFLOW) {
-		__skb_queue_purge(&priv->ptp->tx_queue);
+		skb_queue_purge(&priv->ptp->tx_queue);
 		vsc85xx_ts_reset_fifo(phydev);
 	}
 
@@ -1590,6 +1587,7 @@ int vsc8584_ptp_probe(struct phy_device *phydev)
 	mutex_init(&vsc8531->phc_lock);
 	mutex_init(&vsc8531->ts_lock);
 	skb_queue_head_init(&vsc8531->rx_skbs_list);
+	skb_queue_head_init(&vsc8531->ptp->tx_queue);
 
 	/* Retrieve the shared load/save GPIO. Request it as non exclusive as
 	 * the same GPIO can be requested by all the PHYs of the same package.
drivers/net/ppp/ppp_generic.c +3 -3
index 28b894bcd7a9..46ac51217114 100644
@@ -1753,7 +1753,6 @@ pad_compress_skb(struct ppp *ppp, struct sk_buff *skb)
 		 */
 		if (net_ratelimit())
 			netdev_err(ppp->dev, "ppp: compressor dropped pkt\n");
-		kfree_skb(skb);
 		consume_skb(new_skb);
 		new_skb = NULL;
 	}
@@ -1855,9 +1854,10 @@ ppp_send_frame(struct ppp *ppp, struct sk_buff *skb)
 					   "down - pkt dropped.\n");
 			goto drop;
 		}
-		skb = pad_compress_skb(ppp, skb);
-		if (!skb)
+		new_skb = pad_compress_skb(ppp, skb);
+		if (!new_skb)
 			goto drop;
+		skb = new_skb;
 	}
 
 	/*
drivers/net/usb/cdc_ncm.c +7 -0
index d9792fd515a9..22554daaf6ff 100644
@@ -2043,6 +2043,13 @@ static const struct usb_device_id cdc_devs[] = {
 	  .driver_info = (unsigned long)&wwan_info,
 	},
 
+	/* Intel modem (label from OEM reads Fibocom L850-GL) */
+	{ USB_DEVICE_AND_INTERFACE_INFO(0x8087, 0x095a,
+		USB_CLASS_COMM,
+		USB_CDC_SUBCLASS_NCM, USB_CDC_PROTO_NONE),
+	  .driver_info = (unsigned long)&wwan_info,
+	},
+
 	/* DisplayLink docking stations */
 	{ .match_flags = USB_DEVICE_ID_MATCH_INT_INFO
 		| USB_DEVICE_ID_MATCH_VENDOR,
drivers/net/vmxnet3/vmxnet3_drv.c +3 -2
index afd78324f3aa..6e4023791b47 100644
@@ -3483,8 +3483,6 @@ vmxnet3_change_mtu(struct net_device *netdev, int new_mtu)
 	struct vmxnet3_adapter *adapter = netdev_priv(netdev);
 	int err = 0;
 
-	netdev->mtu = new_mtu;
-
 	/*
 	 * Reset_work may be in the middle of resetting the device, wait for its
 	 * completion.
@@ -3498,6 +3496,7 @@ vmxnet3_change_mtu(struct net_device *netdev, int new_mtu)
 
 		/* we need to re-create the rx queue based on the new mtu */
 		vmxnet3_rq_destroy_all(adapter);
+		netdev->mtu = new_mtu;
 		vmxnet3_adjust_rx_ring_size(adapter);
 		err = vmxnet3_rq_create_all(adapter);
 		if (err) {
@@ -3514,6 +3513,8 @@ vmxnet3_change_mtu(struct net_device *netdev, int new_mtu)
 				   "Closing it\n", err);
 			goto out;
 		}
+	} else {
+		netdev->mtu = new_mtu;
 	}
 
 out:
drivers/net/wireless/ath/ath11k/core.h +7 -0
index 812a174f74c0..4bb36dc6ae08 100644
@@ -365,6 +365,8 @@ struct ath11k_vif {
 	struct ieee80211_chanctx_conf chanctx;
 	struct ath11k_arp_ns_offload arp_ns_offload;
 	struct ath11k_rekey_data rekey_data;
+	u32 num_stations;
+	bool reinstall_group_keys;
 
 #ifdef CONFIG_ATH11K_DEBUGFS
 	struct dentry *debugfs_twt;
@@ -1234,6 +1236,11 @@ static inline struct ath11k_vif *ath11k_vif_to_arvif(struct ieee80211_vif *vif)
 	return (struct ath11k_vif *)vif->drv_priv;
 }
 
+static inline struct ath11k_sta *ath11k_sta_to_arsta(struct ieee80211_sta *sta)
+{
+	return (struct ath11k_sta *)sta->drv_priv;
+}
+
 static inline struct ath11k *ath11k_ab_to_ar(struct ath11k_base *ab,
 					     int mac_id)
 {
drivers/net/wireless/ath/ath11k/debugfs.c +2 -2
index 50bc17127e68..4304fed44d58 100644
@@ -1452,7 +1452,7 @@ static void ath11k_reset_peer_ps_duration(void *data,
 					  struct ieee80211_sta *sta)
 {
 	struct ath11k *ar = data;
-	struct ath11k_sta *arsta = (struct ath11k_sta *)sta->drv_priv;
+	struct ath11k_sta *arsta = ath11k_sta_to_arsta(sta);
 
 	spin_lock_bh(&ar->data_lock);
 	arsta->ps_total_duration = 0;
@@ -1503,7 +1503,7 @@ static void ath11k_peer_ps_state_disable(void *data,
 					 struct ieee80211_sta *sta)
 {
 	struct ath11k *ar = data;
-	struct ath11k_sta *arsta = (struct ath11k_sta *)sta->drv_priv;
+	struct ath11k_sta *arsta = ath11k_sta_to_arsta(sta);
 
 	spin_lock_bh(&ar->data_lock);
 	arsta->peer_ps_state = WMI_PEER_PS_STATE_DISABLED;
drivers/net/wireless/ath/ath11k/debugfs_sta.c +15 -15
index 168879a380cb..f56a24b6c8da 100644
@@ -137,7 +137,7 @@ static ssize_t ath11k_dbg_sta_dump_tx_stats(struct file *file,
 					    size_t count, loff_t *ppos)
 {
 	struct ieee80211_sta *sta = file->private_data;
-	struct ath11k_sta *arsta = (struct ath11k_sta *)sta->drv_priv;
+	struct ath11k_sta *arsta = ath11k_sta_to_arsta(sta);
 	struct ath11k *ar = arsta->arvif->ar;
 	struct ath11k_htt_data_stats *stats;
 	static const char *str_name[ATH11K_STATS_TYPE_MAX] = {"succ", "fail",
@@ -244,7 +244,7 @@ static ssize_t ath11k_dbg_sta_dump_rx_stats(struct file *file,
 					    size_t count, loff_t *ppos)
 {
 	struct ieee80211_sta *sta = file->private_data;
-	struct ath11k_sta *arsta = (struct ath11k_sta *)sta->drv_priv;
+	struct ath11k_sta *arsta = ath11k_sta_to_arsta(sta);
 	struct ath11k *ar = arsta->arvif->ar;
 	struct ath11k_rx_peer_stats *rx_stats = arsta->rx_stats;
 	int len = 0, i, retval = 0;
@@ -341,7 +341,7 @@ static int
 ath11k_dbg_sta_open_htt_peer_stats(struct inode *inode, struct file *file)
 {
 	struct ieee80211_sta *sta = inode->i_private;
-	struct ath11k_sta *arsta = (struct ath11k_sta *)sta->drv_priv;
+	struct ath11k_sta *arsta = ath11k_sta_to_arsta(sta);
 	struct ath11k *ar = arsta->arvif->ar;
 	struct debug_htt_stats_req *stats_req;
 	int type = ar->debug.htt_stats.type;
@@ -377,7 +377,7 @@ static int
 ath11k_dbg_sta_release_htt_peer_stats(struct inode *inode, struct file *file)
 {
 	struct ieee80211_sta *sta = inode->i_private;
-	struct ath11k_sta *arsta = (struct ath11k_sta *)sta->drv_priv;
+	struct ath11k_sta *arsta = ath11k_sta_to_arsta(sta);
 	struct ath11k *ar = arsta->arvif->ar;
 
 	mutex_lock(&ar->conf_mutex);
@@ -414,7 +414,7 @@ static ssize_t ath11k_dbg_sta_write_peer_pktlog(struct file *file,
 						size_t count, loff_t *ppos)
 {
 	struct ieee80211_sta *sta = file->private_data;
-	struct ath11k_sta *arsta = (struct ath11k_sta *)sta->drv_priv;
+	struct ath11k_sta *arsta = ath11k_sta_to_arsta(sta);
 	struct ath11k *ar = arsta->arvif->ar;
 	int ret, enable;
 
@@ -454,7 +454,7 @@ static ssize_t ath11k_dbg_sta_read_peer_pktlog(struct file *file,
 					       size_t count, loff_t *ppos)
 {
 	struct ieee80211_sta *sta = file->private_data;
-	struct ath11k_sta *arsta = (struct ath11k_sta *)sta->drv_priv;
+	struct ath11k_sta *arsta = ath11k_sta_to_arsta(sta);
 	struct ath11k *ar = arsta->arvif->ar;
 	char buf[32] = {0};
 	int len;
@@ -481,7 +481,7 @@ static ssize_t ath11k_dbg_sta_write_delba(struct file *file,
 					  size_t count, loff_t *ppos)
 {
 	struct ieee80211_sta *sta = file->private_data;
-	struct ath11k_sta *arsta = (struct ath11k_sta *)sta->drv_priv;
+	struct ath11k_sta *arsta = ath11k_sta_to_arsta(sta);
 	struct ath11k *ar = arsta->arvif->ar;
 	u32 tid, initiator, reason;
 	int ret;
@@ -532,7 +532,7 @@ static ssize_t ath11k_dbg_sta_write_addba_resp(struct file *file,
 					       size_t count, loff_t *ppos)
 {
 	struct ieee80211_sta *sta = file->private_data;
-	struct ath11k_sta *arsta = (struct ath11k_sta *)sta->drv_priv;
+	struct ath11k_sta *arsta = ath11k_sta_to_arsta(sta);
 	struct ath11k *ar = arsta->arvif->ar;
 	u32 tid, status;
 	int ret;
@@ -582,7 +582,7 @@ static ssize_t ath11k_dbg_sta_write_addba(struct file *file,
 					  size_t count, loff_t *ppos)
 {
 	struct ieee80211_sta *sta = file->private_data;
-	struct ath11k_sta *arsta = (struct ath11k_sta *)sta->drv_priv;
+	struct ath11k_sta *arsta = ath11k_sta_to_arsta(sta);
 	struct ath11k *ar = arsta->arvif->ar;
 	u32 tid, buf_size;
 	int ret;
@@ -633,7 +633,7 @@ static ssize_t ath11k_dbg_sta_read_aggr_mode(struct file *file,
 					     size_t count, loff_t *ppos)
 {
 	struct ieee80211_sta *sta = file->private_data;
-	struct ath11k_sta *arsta = (struct ath11k_sta *)sta->drv_priv;
+	struct ath11k_sta *arsta = ath11k_sta_to_arsta(sta);
 	struct ath11k *ar = arsta->arvif->ar;
 	char buf[64];
 	int len = 0;
@@ -653,7 +653,7 @@ static ssize_t ath11k_dbg_sta_write_aggr_mode(struct file *file,
 					      size_t count, loff_t *ppos)
 {
 	struct ieee80211_sta *sta = file->private_data;
-	struct ath11k_sta *arsta = (struct ath11k_sta *)sta->drv_priv;
+	struct ath11k_sta *arsta = ath11k_sta_to_arsta(sta);
 	struct ath11k *ar = arsta->arvif->ar;
 	u32 aggr_mode;
 	int ret;
@@ -698,7 +698,7 @@ ath11k_write_htt_peer_stats_reset(struct file *file,
 				  size_t count, loff_t *ppos)
 {
 	struct ieee80211_sta *sta = file->private_data;
-	struct ath11k_sta *arsta = (struct ath11k_sta *)sta->drv_priv;
+	struct ath11k_sta *arsta = ath11k_sta_to_arsta(sta);
 	struct ath11k *ar = arsta->arvif->ar;
 	struct htt_ext_stats_cfg_params cfg_params = { 0 };
 	int ret;
@@ -757,7 +757,7 @@ static ssize_t ath11k_dbg_sta_read_peer_ps_state(struct file *file,
 						 size_t count, loff_t *ppos)
 {
 	struct ieee80211_sta *sta = file->private_data;
-	struct ath11k_sta *arsta = (struct ath11k_sta *)sta->drv_priv;
+	struct ath11k_sta *arsta = ath11k_sta_to_arsta(sta);
 	struct ath11k *ar = arsta->arvif->ar;
 	char buf[20];
 	int len;
@@ -784,7 +784,7 @@ static ssize_t ath11k_dbg_sta_read_current_ps_duration(struct file *file,
 						       loff_t *ppos)
 {
 	struct ieee80211_sta *sta = file->private_data;
-	struct ath11k_sta *arsta = (struct ath11k_sta *)sta->drv_priv;
+	struct ath11k_sta *arsta = ath11k_sta_to_arsta(sta);
 	struct ath11k *ar = arsta->arvif->ar;
 	u64 time_since_station_in_power_save;
 	char buf[20];
@@ -818,7 +818,7 @@ static ssize_t ath11k_dbg_sta_read_total_ps_duration(struct file *file,
 						     size_t count, loff_t *ppos)
 {
 	struct ieee80211_sta *sta = file->private_data;
-	struct ath11k_sta *arsta = (struct ath11k_sta *)sta->drv_priv;
+	struct ath11k_sta *arsta = ath11k_sta_to_arsta(sta);
 	struct ath11k *ar = arsta->arvif->ar;
 	char buf[20];
 	u64 power_save_duration;
drivers/net/wireless/ath/ath11k/dp_rx.c +4 -4
index 33b9764eaa91..8cc51ab699de 100644
@@ -1100,7 +1100,7 @@ int ath11k_dp_rx_ampdu_start(struct ath11k *ar,
 			     struct ieee80211_ampdu_params *params)
 {
 	struct ath11k_base *ab = ar->ab;
-	struct ath11k_sta *arsta = (void *)params->sta->drv_priv;
+	struct ath11k_sta *arsta = ath11k_sta_to_arsta(params->sta);
 	int vdev_id = arsta->arvif->vdev_id;
 	int ret;
 
@@ -1118,7 +1118,7 @@ int ath11k_dp_rx_ampdu_stop(struct ath11k *ar,
 {
 	struct ath11k_base *ab = ar->ab;
 	struct ath11k_peer *peer;
-	struct ath11k_sta *arsta = (void *)params->sta->drv_priv;
+	struct ath11k_sta *arsta = ath11k_sta_to_arsta(params->sta);
 	int vdev_id = arsta->arvif->vdev_id;
 	dma_addr_t paddr;
 	bool active;
@@ -1460,7 +1460,7 @@ ath11k_update_per_peer_tx_stats(struct ath11k *ar,
 	}
 
 	sta = peer->sta;
-	arsta = (struct ath11k_sta *)sta->drv_priv;
+	arsta = ath11k_sta_to_arsta(sta);
 
 	memset(&arsta->txrate, 0, sizeof(arsta->txrate));
 
@@ -5269,7 +5269,7 @@ int ath11k_dp_rx_process_mon_status(struct ath11k_base *ab, int mac_id,
 			goto next_skb;
 		}
 
-		arsta = (struct ath11k_sta *)peer->sta->drv_priv;
+		arsta = ath11k_sta_to_arsta(peer->sta);
 		ath11k_dp_rx_update_peer_stats(arsta, ppdu_info);
 
 		if (ath11k_debugfs_is_pktlog_peer_valid(ar, peer->addr))
drivers/net/wireless/ath/ath11k/dp_tx.c +2 -2
index 7dd1ee589801..c1072e66e3e8 100644
@@ -467,7 +467,7 @@ void ath11k_dp_tx_update_txcompl(struct ath11k *ar, struct hal_tx_status *ts)
 	}
 
 	sta = peer->sta;
-	arsta = (struct ath11k_sta *)sta->drv_priv;
+	arsta = ath11k_sta_to_arsta(sta);
 
 	memset(&arsta->txrate, 0, sizeof(arsta->txrate));
 	pkt_type = FIELD_GET(HAL_TX_RATE_STATS_INFO0_PKT_TYPE,
@@ -627,7 +627,7 @@ static void ath11k_dp_tx_complete_msdu(struct ath11k *ar,
 		ieee80211_free_txskb(ar->hw, msdu);
 		return;
 	}
-	arsta = (struct ath11k_sta *)peer->sta->drv_priv;
+	arsta = ath11k_sta_to_arsta(peer->sta);
 	status.sta = peer->sta;
 	status.skb = msdu;
 	status.info = info;
drivers/net/wireless/ath/ath11k/mac.c +339 -249

685 lines not on this page · raw message

drivers/net/wireless/ath/ath11k/peer.c +1 -1
index ca719eb3f7f8..6d0126c39301 100644
@@ -446,7 +446,7 @@ int ath11k_peer_create(struct ath11k *ar, struct ath11k_vif *arvif,
 	peer->sec_type_grp = HAL_ENCRYPT_TYPE_OPEN;
 
 	if (sta) {
-		arsta = (struct ath11k_sta *)sta->drv_priv;
+		arsta = ath11k_sta_to_arsta(sta);
 		arsta->tcl_metadata |= FIELD_PREP(HTT_TCL_META_DATA_TYPE, 0) |
 				       FIELD_PREP(HTT_TCL_META_DATA_PEER_ID,
 						  peer->peer_id);
drivers/net/wireless/ath/ath11k/wmi.c +3 -3
index 9a829b828242..31dbabc9eaf3 100644
@@ -6452,7 +6452,7 @@ static int ath11k_wmi_tlv_rssi_chain_parse(struct ath11k_base *ab,
 		goto exit;
 	}
 
-	arsta = (struct ath11k_sta *)sta->drv_priv;
+	arsta = ath11k_sta_to_arsta(sta);
 
 	BUILD_BUG_ON(ARRAY_SIZE(arsta->chain_signal) >
 		     ARRAY_SIZE(stats_rssi->rssi_avg_beacon));
@@ -6540,7 +6540,7 @@ static int ath11k_wmi_tlv_fw_stats_data_parse(struct ath11k_base *ab,
 							   arvif->bssid,
 							   NULL);
 			if (sta) {
-				arsta = (struct ath11k_sta *)sta->drv_priv;
+				arsta = ath11k_sta_to_arsta(sta);
 				arsta->rssi_beacon = src->beacon_snr;
 				ath11k_dbg(ab, ATH11K_DBG_WMI,
 					   "stats vdev id %d snr %d\n",
@@ -7469,7 +7469,7 @@ static void ath11k_wmi_event_peer_sta_ps_state_chg(struct ath11k_base *ab,
 		goto exit;
 	}
 
-	arsta = (struct ath11k_sta *)sta->drv_priv;
+	arsta = ath11k_sta_to_arsta(sta);
 
 	spin_lock_bh(&ar->data_lock);
 
drivers/net/wireless/broadcom/brcm80211/brcmfmac/btcoex.c +2 -4
index 00794086cc7c..bf80675667ba 100644
@@ -392,10 +392,8 @@ void brcmf_btcoex_detach(struct brcmf_cfg80211_info *cfg)
 	if (!cfg->btcoex)
 		return;
 
-	if (cfg->btcoex->timer_on) {
-		cfg->btcoex->timer_on = false;
-		timer_shutdown_sync(&cfg->btcoex->timer);
-	}
+	timer_shutdown_sync(&cfg->btcoex->timer);
+	cfg->btcoex->timer_on = false;
 
 	cancel_work_sync(&cfg->btcoex->work);
 
drivers/net/wireless/marvell/libertas/cfg.c +6 -3
index b700c213d10c..38ad49033d0b 100644
@@ -1150,10 +1150,13 @@ static int lbs_associate(struct lbs_private *priv,
 	/* add SSID TLV */
 	rcu_read_lock();
 	ssid_eid = ieee80211_bss_get_ie(bss, WLAN_EID_SSID);
-	if (ssid_eid)
-		pos += lbs_add_ssid_tlv(pos, ssid_eid + 2, ssid_eid[1]);
-	else
+	if (ssid_eid) {
+		u32 ssid_len = min(ssid_eid[1], IEEE80211_MAX_SSID_LEN);
+
+		pos += lbs_add_ssid_tlv(pos, ssid_eid + 2, ssid_len);
+	} else {
 		lbs_deb_assoc("no SSID\n");
+	}
 	rcu_read_unlock();
 
 	/* add DS param TLV */
drivers/net/wireless/marvell/mwifiex/cfg80211.c +3 -2
index b7ead0cd0045..69eea0628e67 100644
@@ -4316,8 +4316,9 @@ int mwifiex_init_channel_scan_gap(struct mwifiex_adapter *adapter)
 	 * additional active scan request for hidden SSIDs on passive channels.
 	 */
 	adapter->num_in_chan_stats = 2 * (n_channels_bg + n_channels_a);
-	adapter->chan_stats = vmalloc(array_size(sizeof(*adapter->chan_stats),
-						 adapter->num_in_chan_stats));
+	adapter->chan_stats = kcalloc(adapter->num_in_chan_stats,
+				      sizeof(*adapter->chan_stats),
+				      GFP_KERNEL);
 
 	if (!adapter->chan_stats)
 		return -ENOMEM;
drivers/net/wireless/marvell/mwifiex/main.c +2 -2
index 6c60a4c21a31..685dcab11a48 100644
@@ -664,7 +664,7 @@ static int _mwifiex_fw_dpc(const struct firmware *firmware, void *context)
 	goto done;
 
 err_add_intf:
-	vfree(adapter->chan_stats);
+	kfree(adapter->chan_stats);
 err_init_chan_scan:
 	wiphy_unregister(adapter->wiphy);
 	wiphy_free(adapter->wiphy);
@@ -1481,7 +1481,7 @@ static void mwifiex_uninit_sw(struct mwifiex_adapter *adapter)
 	wiphy_free(adapter->wiphy);
 	adapter->wiphy = NULL;
 
-	vfree(adapter->chan_stats);
+	kfree(adapter->chan_stats);
 	mwifiex_free_cmd_buffers(adapter);
 }
 
drivers/net/wireless/mediatek/mt76/mt7996/mcu.c +2 -2
index 65a5f24e5313..8ab55fc705f0 100644
@@ -1616,8 +1616,8 @@ mt7996_mcu_get_mmps_mode(enum ieee80211_smps_mode smps)
 int mt7996_mcu_set_fixed_rate_ctrl(struct mt7996_dev *dev,
 				   void *data, u16 version)
 {
+	struct uni_header hdr = {};
 	struct ra_fixed_rate *req;
-	struct uni_header hdr;
 	struct sk_buff *skb;
 	struct tlv *tlv;
 	int len;
@@ -2638,7 +2638,7 @@ int mt7996_mcu_set_hdr_trans(struct mt7996_dev *dev, bool hdr_trans)
 {
 	struct {
 		u8 __rsv[4];
-	} __packed hdr;
+	} __packed hdr = {};
 	struct hdr_trans_blacklist *req_blacklist;
 	struct hdr_trans_en *req_en;
 	struct sk_buff *skb;
drivers/net/wireless/st/cw1200/sta.c +1 -1
index 8ef1d06b9bbd..121d810c8839 100644
@@ -1290,7 +1290,7 @@ static void cw1200_do_join(struct cw1200_common *priv)
 		rcu_read_lock();
 		ssidie = ieee80211_bss_get_ie(bss, WLAN_EID_SSID);
 		if (ssidie) {
-			join.ssid_len = ssidie[1];
+			join.ssid_len = min(ssidie[1], IEEE80211_MAX_SSID_LEN);
 			memcpy(join.ssid, &ssidie[2], join.ssid_len);
 		}
 		rcu_read_unlock();
drivers/pci/msi/msi.c +3 -0
index 053bb9fac6e3..b638731aa5ff 100644
@@ -610,6 +610,9 @@ void msix_prepare_msi_desc(struct pci_dev *dev, struct msi_desc *desc)
 	if (desc->pci.msi_attrib.can_mask) {
 		void __iomem *addr = pci_msix_desc_addr(desc);
 
+		/* Workaround for SUN NIU insanity, which requires write before read */
+		if (dev->dev_flags & PCI_DEV_FLAGS_MSIX_TOUCH_ENTRY_DATA_FIRST)
+			writel(0, addr + PCI_MSIX_ENTRY_DATA);
 		desc->pci.msix_ctrl = readl(addr + PCI_MSIX_ENTRY_VECTOR_CTRL);
 	}
 }
drivers/pcmcia/omap_cf.c +2 -0
index e613818dc0bc..25382612e48a 100644
@@ -215,6 +215,8 @@ static int __init omap_cf_probe(struct platform_device *pdev)
 		return -EINVAL;
 
 	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+	if (!res)
+		return -EINVAL;
 
 	cf = kzalloc(sizeof *cf, GFP_KERNEL);
 	if (!cf)
drivers/pcmcia/rsrc_iodyn.c +3 -0
index b04b16496b0c..2677b577c1f8 100644
@@ -62,6 +62,9 @@ static struct resource *__iodyn_find_io_region(struct pcmcia_socket *s,
 	unsigned long min = base;
 	int ret;
 
+	if (!res)
+		return NULL;
+
 	data.mask = align - 1;
 	data.offset = base & data.mask;
 
drivers/pcmcia/rsrc_nonstatic.c +3 -1
index bf9d070a4496..da494fe451ba 100644
@@ -375,7 +375,9 @@ static int do_validate_mem(struct pcmcia_socket *s,
 
 	if (validate && !s->fake_cis) {
 		/* move it to the validated data set */
-		add_interval(&s_data->mem_db_valid, base, size);
+		ret = add_interval(&s_data->mem_db_valid, base, size);
+		if (ret)
+			return ret;
 		sub_interval(&s_data->mem_db, base, size);
 	}
 
drivers/platform/x86/amd/pmc/pmc-quirks.c +14 -0
index 04686ae1e976..6f5437d210a6 100644
@@ -242,6 +242,20 @@ static const struct dmi_system_id fwbug_list[] = {
 			DMI_MATCH(DMI_PRODUCT_NAME, "Lafite Pro V 14M"),
 		}
 	},
+	{
+		.ident = "TUXEDO InfinityBook Pro 14/15 AMD Gen10",
+		.driver_data = &quirk_spurious_8042,
+		.matches = {
+			DMI_MATCH(DMI_BOARD_NAME, "XxHP4NAx"),
+		}
+	},
+	{
+		.ident = "TUXEDO InfinityBook Pro 14/15 AMD Gen10",
+		.driver_data = &quirk_spurious_8042,
+		.matches = {
+			DMI_MATCH(DMI_BOARD_NAME, "XxKK4NAx_XxSP4NAx"),
+		}
+	},
 	{}
 };
 
drivers/scsi/lpfc/lpfc_nvmet.c +6 -4
index d41fea53e41e..502be061cc65 100644
@@ -1243,7 +1243,7 @@ lpfc_nvmet_defer_rcv(struct nvmet_fc_target_port *tgtport,
 	struct lpfc_nvmet_tgtport *tgtp;
 	struct lpfc_async_xchg_ctx *ctxp =
 		container_of(rsp, struct lpfc_async_xchg_ctx, hdlrctx.fcp_req);
-	struct rqb_dmabuf *nvmebuf = ctxp->rqb_buffer;
+	struct rqb_dmabuf *nvmebuf;
 	struct lpfc_hba *phba = ctxp->phba;
 	unsigned long iflag;
 
@@ -1251,13 +1251,18 @@ lpfc_nvmet_defer_rcv(struct nvmet_fc_target_port *tgtport,
 	lpfc_nvmeio_data(phba, "NVMET DEFERRCV: xri x%x sz %d CPU %02x\n",
 			 ctxp->oxid, ctxp->size, raw_smp_processor_id());
 
+	spin_lock_irqsave(&ctxp->ctxlock, iflag);
+	nvmebuf = ctxp->rqb_buffer;
 	if (!nvmebuf) {
+		spin_unlock_irqrestore(&ctxp->ctxlock, iflag);
 		lpfc_printf_log(phba, KERN_INFO, LOG_NVME_IOERR,
 				"6425 Defer rcv: no buffer oxid x%x: "
 				"flg %x ste %x\n",
 				ctxp->oxid, ctxp->flag, ctxp->state);
 		return;
 	}
+	ctxp->rqb_buffer = NULL;
+	spin_unlock_irqrestore(&ctxp->ctxlock, iflag);
 
 	tgtp = phba->targetport->private;
 	if (tgtp)
@@ -1265,9 +1270,6 @@ lpfc_nvmet_defer_rcv(struct nvmet_fc_target_port *tgtport,
 
 	/* Free the nvmebuf since a new buffer already replaced it */
 	nvmebuf->hrq->rqbp->rqb_free_buffer(phba, nvmebuf);
-	spin_lock_irqsave(&ctxp->ctxlock, iflag);
-	ctxp->rqb_buffer = NULL;
-	spin_unlock_irqrestore(&ctxp->ctxlock, iflag);
 }
 
 /**
drivers/soc/qcom/mdt_loader.c +7 -5
index a6773075bfe3..0afecda0bfaa 100644
@@ -38,12 +38,14 @@ static bool mdt_header_valid(const struct firmware *fw)
 	if (phend > fw->size)
 		return false;
 
-	if (ehdr->e_shentsize != sizeof(struct elf32_shdr))
-		return false;
+	if (ehdr->e_shentsize || ehdr->e_shnum) {
+		if (ehdr->e_shentsize != sizeof(struct elf32_shdr))
+			return false;
 
-	shend = size_add(size_mul(sizeof(struct elf32_shdr), ehdr->e_shnum), ehdr->e_shoff);
-	if (shend > fw->size)
-		return false;
+		shend = size_add(size_mul(sizeof(struct elf32_shdr), ehdr->e_shnum), ehdr->e_shoff);
+		if (shend > fw->size)
+			return false;
+	}
 
 	return true;
 }
drivers/spi/spi-cadence-quadspi.c +1 -5
index 7c17b8c0425e..bf9b816637d0 100644
@@ -1868,8 +1868,6 @@ static int cqspi_probe(struct platform_device *pdev)
 			goto probe_setup_failed;
 	}
 
-	pm_runtime_enable(dev);
-
 	ret = spi_register_controller(host);
 	if (ret) {
 		dev_err(&pdev->dev, "failed to register SPI ctlr %d\n", ret);
@@ -1879,7 +1877,6 @@ static int cqspi_probe(struct platform_device *pdev)
 	return 0;
 probe_setup_failed:
 	cqspi_controller_enable(cqspi, 0);
-	pm_runtime_disable(dev);
 probe_reset_failed:
 	if (cqspi->is_jh7110)
 		cqspi_jh7110_disable_clk(pdev, cqspi);
@@ -1901,8 +1898,7 @@ static void cqspi_remove(struct platform_device *pdev)
 	if (cqspi->rx_chan)
[… more lines in the raw message]

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

drivers/spi/spi-fsl-lpspi.c +13 -11
index fa899ab2014c..8ef82a11ebb0 100644

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

drivers/spi/spi-fsl-qspi.c +18 -18
index 79bac30e79af..21e357966d2a 100644

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

drivers/tee/optee/ffa_abi.c +2 -2
index b8ba360e863e..927c3d7947f9 100644

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

drivers/tee/tee_shm.c +5 -1
index 673cf0359494..426b818f2dd7 100644

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

drivers/thermal/mediatek/lvts_thermal.c +36 -14

50 lines not on this page · raw message

fs/btrfs/btrfs_inode.h +1 -1
index c4968efc3fc4..a2e471d51a8f 100644

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

fs/btrfs/extent_io.c +1 -1
index ed08d8e5639f..48b06459bc48 100644

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

fs/btrfs/inode.c +1 -0
index 4502a474a81d..ee5ffeab85bb 100644

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

fs/btrfs/tree-log.c +53 -25

78 lines not on this page · raw message

fs/fs-writeback.c +5 -4
index 0a498bc60f55..ed110568d612 100644

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

fs/ocfs2/inode.c +3 -0
index 999111bfc271..c561a8a6493e 100644

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

fs/proc/generic.c +21 -17
index 2187d9ca351c..db3f2c6abc16 100644

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

fs/smb/client/cifs_unicode.c +3 -0
index 4cc6e0896fad..f8659d36793f 100644

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

include/linux/bpf-cgroup.h +0 -5
index 2331cd8174fe..684c4822f76a 100644

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

include/linux/bpf.h +40 -20

60 lines not on this page · raw message

include/linux/pci.h +2 -0
index ac5bd1718af2..0511f6f9a4e6 100644

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

include/linux/pgtable.h +16 -0
index e2c9a0c259df..e42388b6998b 100644

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

include/linux/vmalloc.h +0 -16
index c720be70c8dd..897f2109f6ad 100644

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

include/net/netlink.h +67 -2

69 lines not on this page · raw message

include/uapi/linux/netlink.h +5 -0
index e2ae82e3f9f7..f87aaf28a649 100644

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

kernel/bpf/core.c +33 -17

50 lines not on this page · raw message

kernel/bpf/syscall.c +13 -7
index b66349f892f2..98f3f206d112 100644

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

kernel/sched/topology.c +2 -0
index c61698cff0f3..b87426b74eec 100644

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

lib/nlattr.c +22 -0
index ba698a097fc8..0319e811bb10 100644

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

mm/slub.c +40 -26

66 lines not on this page · raw message

net/atm/resources.c +4 -2
index b19d851e1f44..7c6fdedbcf4e 100644

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

net/ax25/ax25_in.c +4 -0
index 1cac25aca637..f2d66af86359 100644

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

net/batman-adv/network-coding.c +6 -1
index 71ebd0284f95..0adc783fb83c 100644

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

net/bluetooth/hci_sync.c +1 -1
index 020f1809fc99..7f3f700faebc 100644

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

net/bluetooth/l2cap_sock.c +3 -0
index 9a906977c872..59630dbeda20 100644

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

net/bridge/br_netfilter_hooks.c +0 -3
index 2a4958e995f2..e6962d693359 100644

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

net/dsa/tag_ksz.c +17 -5
index ea100bd25939..0a16c04c4bfc 100644

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

net/ipv4/devinet.c +3 -4
index c33b1ecc591e..798497c8b192 100644

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

net/ipv4/icmp.c +4 -2
index 94501bb30c43..b17549c4e5de 100644

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

net/ipv6/ip6_icmp.c +4 -2
index 9e3574880cb0..233914b63bdb 100644

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

net/mctp/af_mctp.c +1 -1
index 5f9592fb57ad..805f7376cebe 100644

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

net/netfilter/nf_conntrack_helper.c +2 -2
index f22691f83853..10f72b5b4e1a 100644

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

net/netlink/policy.c +11 -3
index 87e3de0fde89..ef542a142b98 100644

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

net/smc/smc_clc.c +0 -2
index dbce904c03cf..4f485b9b31b2 100644

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

net/smc/smc_ib.c +3 -0
index 598ac9ead64b..6df543e083fb 100644

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

net/wireless/scan.c +2 -1
index 6db8c9a2a7a2..c1d64e250454 100644

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

net/wireless/sme.c +4 -1
index 70881782c25c..5904c869085c 100644

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

sound/pci/hda/patch_hdmi.c +1 -0
index f2c03fbf892f..80c015af09ef 100644

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

sound/pci/hda/patch_realtek.c +5 -0
index d4bc80780a1f..6aae06223f26 100644

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

sound/usb/mixer_quirks.c +2 -0
index f2cce15be4e2..68c82e344d3b 100644

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

tools/gpio/Makefile +2 -2
index d29c9c49e251..342e056c8c66 100644

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

tools/perf/util/bpf-event.c +27 -12
index b94b4f16a60a..1573d6b6478d 100644

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

tools/power/cpupower/utils/cpupower-set.c +2 -2
index 0677b58374ab..59ace394cf3e 100644

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

tools/testing/selftests/net/bind_bhash.c +2 -2
index 57ff67a3751e..da04b0b19b73 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.