Linux 5.10.168
Greg Kroah-Hartman
maintainerI'm announcing the release of the 5.10.168 kernel.
All users of the 5.10 kernel series must upgrade.
The updated 5.10.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-5.10.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/arm64/boot/dts/amlogic/meson-axg.dtsi | 4 arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi | 6 arch/arm64/boot/dts/amlogic/meson-gx.dtsi | 6 arch/arm64/boot/dts/freescale/imx8mm-pinfunc.h | 2 arch/parisc/kernel/firmware.c | 5 arch/parisc/kernel/ptrace.c | 15 arch/powerpc/perf/imc-pmu.c | 14 arch/riscv/Makefile | 3 arch/riscv/mm/cacheflush.c | 4 arch/x86/include/asm/debugreg.h | 26 drivers/ata/libata-core.c | 2 drivers/bus/sunxi-rsb.c | 8 drivers/firewire/core-cdev.c | 4 drivers/firmware/efi/efi.c | 2 drivers/firmware/efi/memattr.c | 2 drivers/fpga/stratix10-soc.c | 4 drivers/fsi/fsi-sbefifo.c | 6 drivers/gpu/drm/i915/gem/i915_gem_tiling.c | 9 drivers/gpu/drm/vc4/vc4_hdmi.c | 3 drivers/i2c/busses/i2c-mxs.c | 4 drivers/i2c/busses/i2c-rk3x.c | 44 drivers/iio/accel/hid-sensor-accel-3d.c | 1 drivers/iio/adc/berlin2-adc.c | 4 drivers/iio/adc/stm32-dfsdm-adc.c | 1 drivers/iio/adc/twl6030-gpadc.c | 32 drivers/iio/imu/fxos8700_core.c | 111 - drivers/infiniband/hw/hfi1/file_ops.c | 7 drivers/infiniband/hw/usnic/usnic_uiom.c | 8 drivers/infiniband/ulp/ipoib/ipoib_main.c | 8 drivers/infiniband/ulp/rtrs/rtrs-clt.c | 2 drivers/input/serio/i8042-x86ia64io.h | 1188 +++++++----- drivers/net/bonding/bond_debugfs.c | 2 drivers/net/ethernet/intel/ice/ice_main.c | 2 drivers/net/ethernet/intel/igc/igc_ptp.c | 14 drivers/net/ethernet/mellanox/mlx5/core/diag/fw_tracer.c | 3 drivers/net/ethernet/mellanox/mlx5/core/ipoib/ethtool.c | 13 drivers/net/ethernet/mscc/ocelot_flower.c | 24 drivers/net/ethernet/pensando/ionic/ionic_lif.c | 15 drivers/net/ethernet/qlogic/qede/qede_fp.c | 10 drivers/net/ethernet/sfc/efx.c | 5 drivers/net/phy/dp83822.c | 6 drivers/net/phy/meson-gxl.c | 4 drivers/net/usb/plusb.c | 4 drivers/net/virtio_net.c | 8 drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c | 17 drivers/nvmem/core.c | 8 drivers/nvmem/qcom-spmi-sdam.c | 1 drivers/of/address.c | 21 drivers/pinctrl/aspeed/pinctrl-aspeed.c | 2 drivers/pinctrl/intel/pinctrl-intel.c | 16 drivers/pinctrl/pinctrl-single.c | 2 drivers/platform/x86/dell-wmi.c | 3 drivers/scsi/iscsi_tcp.c | 9 drivers/scsi/scsi_scan.c | 7 drivers/spi/spi-dw-core.c | 2 drivers/target/target_core_file.c | 4 drivers/target/target_core_tmr.c | 4 drivers/tty/serial/8250/8250_dma.c | 26 drivers/tty/vt/vc_screen.c | 9 drivers/usb/core/quirks.c | 3 drivers/usb/dwc3/dwc3-qcom.c | 10 drivers/usb/gadget/function/f_fs.c | 4 drivers/usb/typec/altmodes/displayport.c | 8 drivers/vhost/net.c | 3 drivers/vhost/vhost.c | 3 drivers/vhost/vhost.h | 1 drivers/video/fbdev/core/fbcon.c | 7 drivers/video/fbdev/smscufx.c | 46 drivers/watchdog/diag288_wdt.c | 15 drivers/xen/pvcalls-back.c | 8 fs/btrfs/volumes.c | 22 fs/btrfs/zlib.c | 2 fs/ceph/mds_client.c | 6 fs/cifs/file.c | 4 fs/f2fs/gc.c | 18 fs/proc/task_mmu.c | 4 fs/squashfs/squashfs_fs.h | 2 fs/squashfs/squashfs_fs_sb.h | 2 fs/squashfs/xattr.h | 4 fs/squashfs/xattr_id.c | 4 include/linux/hugetlb.h | 19 include/linux/nvmem-provider.h | 4 include/linux/util_macros.h | 12 include/uapi/linux/ip.h | 1 include/uapi/linux/ipv6.h | 1 kernel/bpf/verifier.c | 102 - kernel/trace/bpf_trace.c | 3 kernel/trace/trace.c | 3 mm/gup.c | 2 mm/hugetlb.c | 6 mm/memory-failure.c | 2 mm/memory_hotplug.c | 2 mm/mempolicy.c | 5 mm/migrate.c | 7 mm/page_alloc.c | 5 mm/swapfile.c | 1 net/bridge/br_netfilter_hooks.c | 1 net/can/j1939/address-claim.c | 40 net/can/j1939/transport.c | 4 net/ipv4/tcp_bpf.c | 4 net/netrom/af_netrom.c | 5 net/openvswitch/datapath.c | 12 net/qrtr/ns.c | 5 net/rds/message.c | 6 net/x25/af_x25.c | 6 net/xfrm/xfrm_compat.c | 4 net/xfrm/xfrm_input.c | 3 sound/pci/hda/patch_realtek.c | 3 sound/pci/hda/patch_via.c | 3 sound/pci/lx6464es/lx_core.c | 11 sound/synth/emux/emux_nrpn.c | 3 tools/testing/selftests/net/forwarding/lib.sh | 4 tools/testing/selftests/net/udpgso_bench.sh | 24 tools/testing/selftests/net/udpgso_bench_rx.c | 4 tools/testing/selftests/net/udpgso_bench_tx.c | 36 116 files changed, 1510 insertions(+), 797 deletions(-)
Al Viro (4):
WRITE is "data source", not destination...
READ is "data destination", not source...
fix iov_iter_bvec() "direction" argument
fix "direction" argument of iov_iter_kvec()
Alan Stern (1):
net: USB: Fix wrong-direction WARNING in plusb.c
Alexander Egorenkov (2):
watchdog: diag288_wdt: do not use stack buffers for hardware data
watchdog: diag288_wdt: fix __diag288() inline assembly
Alexander Potapenko (1):
btrfs: zlib: zero-initialize zlib workspace
Anand Jain (1):
btrfs: free device in btrfs_close_devices for a single device filesystem
Anastasia Belova (1):
xfrm: compat: change expression for switch in xfrm_xlate64
Andre Kalb (1):
net: phy: dp83822: Fix null pointer access on DP83825/DP83826 devices
Andreas Kemnade (2):
iio:adc:twl6030: Enable measurements of VUSB, VBAT and others iio:adc:twl6030: Enable measurement of VAC
Andreas Schwab (1):
riscv: disable generation of unwind tables
Andrei Gherzan (4):
selftests: net: udpgso_bench_rx: Fix 'used uninitialized' compiler warning
selftests: net: udpgso_bench_rx/tx: Stop when wrong CLI args are provided
selftests: net: udpgso_bench: Fix racing bug between the rx/tx programs
selftests: net: udpgso_bench_tx: Cater for pending datagrams zerocopy benchmarking
Andy Shevchenko (1):
pinctrl: intel: Restore the pins that used to be in Direct IRQ mode
Anirudh Venkataramanan (1):
ice: Do not use WQ_MEM_RECLAIM flag for workqueue
Anton Gusev (1):
efi: fix potential NULL deref in efi_mem_reserve_persistent
Ard Biesheuvel (1):
efi: Accept version 2 of memory attributes table
Artemii Karasev (2):
ALSA: hda/via: Avoid potential array out-of-bound in add_secret_dac_path()
ALSA: emux: Avoid potential array out-of-bound in snd_emux_xg_control()
Bhaskar Upadhaya (1):
qede: add netpoll support for qede driver
Carlos Song (9):
iio: imu: fxos8700: fix ACCEL measurement range selection
iio: imu: fxos8700: fix incomplete ACCEL and MAGN channels readback
iio: imu: fxos8700: fix IMU data bits returned to user space
iio: imu: fxos8700: fix map label of channel type to MAGN sensor
iio: imu: fxos8700: fix swapped ACCEL and MAGN channels readback
iio: imu: fxos8700: fix incorrect ODR mode readback
iio: imu: fxos8700: fix failed initialization ODR mode assignment
iio: imu: fxos8700: remove definition FXOS8700_CTRL_ODR_MIN
iio: imu: fxos8700: fix MAGN sensor scale and unit
Chao Yu (1):
f2fs: fix to do sanity check on i_extra_isize in is_alive()
Chris Healy (1):
net: phy: meson-gxl: Add generic dummy stubs for MMD register access
Christian Hopps (1):
xfrm: fix bug with DSCP copy to v6 from v4 tunnel
Christophe Kerello (1):
nvmem: core: Fix a conflict between MTD and NVMEM on wp-gpios property
Damien Le Moal (1):
ata: libata: Fix sata_down_spd_limit() when no link speed is reported
Dan Carpenter (1):
ALSA: pci: lx6464es: fix a debug loop
David Chen (1):
Fix page corruption caused by racy check in __free_pages
Dean Luick (1):
IB/hfi1: Restore allocated resources on failed copyout
Devid Antonio Filoni (1):
can: j1939: do not wait 250 ms if the same addr was already claimed
Dmitry Perchanov (1):
iio: hid: fix the retval in accel_3d_capture_sample
Dongliang Mu (1):
fbdev: smscufx: fix error handling code in ufx_usb_probe
Dragos Tatulea (2):
IB/IPoIB: Fix legacy IPoIB due to wrong number of queues net/mlx5e: IPoIB, Show unknown speed instead of error
Edson Juliano Drosdeck (1):
ALSA: hda/realtek: Add Positivo N14KP6-TG
Eduard Zingerman (1):
bpf: Fix to preserve reg parent/live fields when copying range info
Eric Auger (1):
vhost/net: Clear the pending messages when the backend is removed
Eric Dumazet (1):
xfrm/compat: prevent potential spectre v1 gadget in xfrm_xlate32_attr()
Fedor Pchelkin (2):
squashfs: harden sanity check in squashfs_read_xattr_id_table
net: openvswitch: fix flow memory leak in ovs_flow_cmd_new
Florian Westphal (1):
netfilter: br_netfilter: disable sabotage_in hook after first suppression
George Kennedy (1):
vc_screen: move load of struct vc_data pointer in vcs_read() to avoid UAF
Greg Kroah-Hartman (1):
Linux 5.10.168
Guillaume Pinot (1):
ALSA: hda/realtek: Fix the speaker output on Samsung Galaxy Book2 Pro 360
Guo Ren (1):
riscv: Fixup race condition on PG_dcache_clean in flush_icache_pte
Hangbin Liu (1):
selftests: forwarding: lib: quote the sysctl values
Hans Verkuil (1):
drm/vc4: hdmi: make CEC adapter name unique
Heiner Kallweit (4):
net: phy: meson-gxl: use MMD access dummy stubs for GXL, internal PHY
arm64: dts: meson-gx: Make mmc host controller interrupts level-sensitive
arm64: dts: meson-g12-common: Make mmc host controller interrupts level-sensitive
arm64: dts: meson-axg: Make mmc host controller interrupts level-sensitive
Helge Deller (2):
parisc: Fix return code of pdc_iodc_print()
parisc: Wire up PTRACE_GETREGS/PTRACE_SETREGS for compat case
Herton R. Krzesinski (1):
uapi: add missing ip/ipv6 header dependencies for linux/stddef.h
Hyunwoo Kim (2):
netrom: Fix use-after-free caused by accept on already connected socket net/x25: Fix to not accept on connected socket
Ilpo Järvinen (2):
serial: 8250_dma: Fix DMA Rx completion race
serial: 8250_dma: Fix DMA Rx rearm race
Jakub Sitnicki (1):
bpf, sockmap: Check for any of tcp_bpf_prots when cloning a listener
Joel Stanley (1):
pinctrl: aspeed: Fix confusing types in return value
Joerg Roedel (1):
x86/debug: Fix stack recursion caused by wrongly ordered DR7 accesses
Johan Hovold (1):
nvmem: qcom-spmi-sdam: fix module autoloading
Josef Bacik (1):
btrfs: limit device extents to the device size
Koba Ko (1):
platform/x86: dell-wmi: Add a keymap for KEY_MUTE in type 0x0010 table
Longlong Xia (1):
mm/swapfile: add cond_resched() in get_swap_pages()
Magnus Karlsson (2):
virtio-net: execute xdp_do_flush() before napi_complete_done()
qede: execute xdp_do_flush() before napi_complete_done()
Mark Brown (1):
of/address: Return an error when no valid dma-ranges are found
Mark Pearson (1):
usb: core: add quirk for Alcor Link AK9563 smartcard reader
Martin K. Petersen (1):
scsi: Revert "scsi: core: map PQ=1, PDT=other values to SCSI_SCAN_TARGET_PRESENT"
Martin KaFai Lau (2):
bpf: Support <8-byte scalar spill and refill
bpf: Do not reject when the stack read size is different from the tracked scalar size
Maurizio Lombardi (1):
scsi: target: core: Fix warning on RT kernels
Maxim Korotkov (1):
pinctrl: single: fix potential NULL dereference
Miaohe Lin (1):
mm/migration: return errno when isolate_huge_page failed
Michael Ellerman (1):
powerpc/imc-pmu: Revert nest_init_lock to being a mutex
Michael Walle (1):
nvmem: core: fix cell removal on error
Mike Christie (1):
scsi: iscsi_tcp: Fix UAF during login when accessing the shost ipaddress
Mike Kravetz (2):
mm: hugetlb: proc: check for hugetlb shared PMD in /proc/PID/smaps
migrate: hugetlb: check for hugetlb shared PMD in node migration
Minsuk Kang (1):
wifi: brcmfmac: Check the count value of channel spec to prevent out-of-bounds reads
Natalia Petrova (1):
net: qrtr: free memory on error path in radix_tree_insert()
Neel Patel (1):
ionic: clean interrupt before enabling queue to avoid credit race
Neil Armstrong (1):
usb: dwc3: qcom: enable vbus override when in OTG dr-mode
Olivier Moysan (1):
iio: adc: stm32-dfsdm: fill module aliases
Parav Pandit (1):
virtio-net: Keep stop() to follow mirror sequence of open()
Paul Chaignon (1):
bpf: Fix incorrect state pruning for <8B spill/fill
Phillip Lougher (1):
Squashfs: fix handling and sanity checking of xattr_ids count
Pierluigi Passaro (1):
arm64: dts: imx8mm: Fix pad control for UART1_DTE_RX
Pietro Borrello (1):
rds: rds_rm_zerocopy_callback() use list_first_entry()
Prashant Malani (1):
usb: typec: altmodes/displayport: Fix probe pin assign check
Qi Zheng (1):
bonding: fix error checking in bond_debug_reregister()
Randy Dunlap (1):
i2c: rk3x: fix a bunch of kernel-doc warnings
Rob Clark (1):
drm/i915: Fix potential bit_17 double-free
Russell King (Oracle) (1):
nvmem: core: initialise nvmem->id early
Samuel Thibault (1):
fbcon: Check font dimension limits
Serge Semin (1):
spi: dw: Fix wrong FIFO level setting for long xfers
Shay Drory (2):
net/mlx5: fw_tracer, Clear load bit when freeing string DBs buffers net/mlx5: fw_tracer, Zero consumer index when reloading the tracer
Shiju Jose (1):
tracing: Fix poll() and select() do not work on per_cpu trace_pipe and trace_pipe_raw
Stefan Wahren (1):
i2c: mxs: suppress probe-deferral error message
Takashi Sakamoto (1):
firewire: fix memory leak for payload of request subaction to IEC 61883-1 FCP region
Tom Rix (1):
igc: return an error if the mac type is unknown in igc_ptp_systim_to_hwtstamp()
Udipto Goswami (1):
usb: gadget: f_fs: Fix unbalanced spinlock in __ffs_ep0_queue_wait
Victor Shyba (1):
ALSA: hda/realtek: Add Acer Predator PH315-54
Vladimir Oltean (1):
net: mscc: ocelot: fix VCAP filters not matching on MAC with "protocol 802.1Q"
Werner Sembach (4):
Input: i8042 - move __initconst to fix code styling warning
Input: i8042 - merge quirk tables
Input: i8042 - add TUXEDO devices to i8042 quirk tables
Input: i8042 - add Clevo PCX0DX to i8042 quirk table
Wesley Cheng (1):
usb: dwc3: dwc3-qcom: Fix typo in the dwc3 vbus override API
Xiongfeng Wang (1):
iio: adc: berlin2-adc: Add missing of_node_put() in error path
Xiubo Li (1):
ceph: flush cap releases when the session is flushed
Yang Yingliang (1):
RDMA/usnic: use iommu_map_atomic() under spin_lock()
Yonghong Song (1):
bpf: Fix a possible task gone issue with bpf_send_signal[_thread]() helpers
Yuan Can (1):
bus: sunxi-rsb: Fix error handling in sunxi_rsb_init()
ZhaoLong Wang (1):
cifs: Fix use-after-free in rdata->read_into_pages()
Zheng Yongjun (1):
fpga: stratix10-soc: Fix return value check in s10_ops_write_init()
Ziyang Xuan (1):
can: j1939: fix errant WARN_ON_ONCE in j1939_session_deactivate
Íñigo Huguet (1):
sfc: correctly advertise tunneled IPv6 segmentation
Greg Kroah-Hartman
maintainerMakefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 5 PATCHLEVEL = 10 -SUBLEVEL = 167 +SUBLEVEL = 168 EXTRAVERSION = NAME = Dare mighty things
arch/arm64/boot/dts/amlogic/meson-axg.dtsi +2 -2
@@ -1754,7 +1754,7 @@ apb: bus@ffe00000 { sd_emmc_b: sd@5000 { compatible = "amlogic,meson-axg-mmc"; reg = <0x0 0x5000 0x0 0x800>; - interrupts = <GIC_SPI 217 IRQ_TYPE_EDGE_RISING>; + interrupts = <GIC_SPI 217 IRQ_TYPE_LEVEL_HIGH>; status = "disabled"; clocks = <&clkc CLKID_SD_EMMC_B>, <&clkc CLKID_SD_EMMC_B_CLK0>,
@@ -1766,7 +1766,7 @@ sd_emmc_b: sd@5000 { sd_emmc_c: mmc@7000 { compatible = "amlogic,meson-axg-mmc"; reg = <0x0 0x7000 0x0 0x800>; - interrupts = <GIC_SPI 218 IRQ_TYPE_EDGE_RISING>; + interrupts = <GIC_SPI 218 IRQ_TYPE_LEVEL_HIGH>; status = "disabled"; clocks = <&clkc CLKID_SD_EMMC_C>, <&clkc CLKID_SD_EMMC_C_CLK0>,
arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi +3 -3
@@ -2317,7 +2317,7 @@ uart_A: serial@24000 { sd_emmc_a: sd@ffe03000 { compatible = "amlogic,meson-axg-mmc"; reg = <0x0 0xffe03000 0x0 0x800>; - interrupts = <GIC_SPI 189 IRQ_TYPE_EDGE_RISING>; + interrupts = <GIC_SPI 189 IRQ_TYPE_LEVEL_HIGH>; status = "disabled"; clocks = <&clkc CLKID_SD_EMMC_A>, <&clkc CLKID_SD_EMMC_A_CLK0>,
@@ -2329,7 +2329,7 @@ sd_emmc_a: sd@ffe03000 { sd_emmc_b: sd@ffe05000 { compatible = "amlogic,meson-axg-mmc"; reg = <0x0 0xffe05000 0x0 0x800>; - interrupts = <GIC_SPI 190 IRQ_TYPE_EDGE_RISING>; + interrupts = <GIC_SPI 190 IRQ_TYPE_LEVEL_HIGH>; status = "disabled"; clocks = <&clkc CLKID_SD_EMMC_B>, <&clkc CLKID_SD_EMMC_B_CLK0>,
@@ -2341,7 +2341,7 @@ sd_emmc_b: sd@ffe05000 { sd_emmc_c: mmc@ffe07000 { compatible = "amlogic,meson-axg-mmc"; reg = <0x0 0xffe07000 0x0 0x800>; - interrupts = <GIC_SPI 191 IRQ_TYPE_EDGE_RISING>; + interrupts = <GIC_SPI 191 IRQ_TYPE_LEVEL_HIGH>; status = "disabled"; clocks = <&clkc CLKID_SD_EMMC_C>, <&clkc CLKID_SD_EMMC_C_CLK0>,
arch/arm64/boot/dts/amlogic/meson-gx.dtsi +3 -3
@@ -595,21 +595,21 @@ apb: apb@d0000000 { sd_emmc_a: mmc@70000 { compatible = "amlogic,meson-gx-mmc", "amlogic,meson-gxbb-mmc"; reg = <0x0 0x70000 0x0 0x800>; - interrupts = <GIC_SPI 216 IRQ_TYPE_EDGE_RISING>; + interrupts = <GIC_SPI 216 IRQ_TYPE_LEVEL_HIGH>; status = "disabled"; }; sd_emmc_b: mmc@72000 { compatible = "amlogic,meson-gx-mmc", "amlogic,meson-gxbb-mmc"; reg = <0x0 0x72000 0x0 0x800>; - interrupts = <GIC_SPI 217 IRQ_TYPE_EDGE_RISING>; + interrupts = <GIC_SPI 217 IRQ_TYPE_LEVEL_HIGH>; status = "disabled"; }; sd_emmc_c: mmc@74000 { compatible = "amlogic,meson-gx-mmc", "amlogic,meson-gxbb-mmc"; reg = <0x0 0x74000 0x0 0x800>; - interrupts = <GIC_SPI 218 IRQ_TYPE_EDGE_RISING>; + interrupts = <GIC_SPI 218 IRQ_TYPE_LEVEL_HIGH>; status = "disabled"; }; };
arch/arm64/boot/dts/freescale/imx8mm-pinfunc.h +1 -1
@@ -601,7 +601,7 @@#define MX8MM_IOMUXC_UART1_RXD_GPIO5_IO22 0x234 0x49C 0x000 0x5 0x0#define MX8MM_IOMUXC_UART1_RXD_TPSMP_HDATA24 0x234 0x49C 0x000 0x7 0x0#define MX8MM_IOMUXC_UART1_TXD_UART1_DCE_TX 0x238 0x4A0 0x000 0x0 0x0 -#define MX8MM_IOMUXC_UART1_TXD_UART1_DTE_RX 0x238 0x4A0 0x4F4 0x0 0x0 +#define MX8MM_IOMUXC_UART1_TXD_UART1_DTE_RX 0x238 0x4A0 0x4F4 0x0 0x1#define MX8MM_IOMUXC_UART1_TXD_ECSPI3_MOSI 0x238 0x4A0 0x000 0x1 0x0#define MX8MM_IOMUXC_UART1_TXD_GPIO5_IO23 0x238 0x4A0 0x000 0x5 0x0#define MX8MM_IOMUXC_UART1_TXD_TPSMP_HDATA25 0x238 0x4A0 0x000 0x7 0x0
arch/parisc/kernel/firmware.c +3 -2
@@ -1230,7 +1230,7 @@ static char __attribute__((aligned(64))) iodc_dbuf[4096];*/ int pdc_iodc_print (const unsigned char *str,unsigned count) { -unsigned int i; +unsigned int i, found =0 ;unsigned long flags;for (i =0 ; i < count;) {
@@ -1239,6 +1239,7 @@ int pdc_iodc_print(const unsigned char *str, unsigned count) iodc_dbuf[i+0 ] ='\r' ; iodc_dbuf[i+1 ] ='\n' ; i +=2 ; + found =1 ; goto print;default : iodc_dbuf[i] = str[i];
@@ -1255,7 +1256,7 @@ int pdc_iodc_print(const unsigned char *str, unsigned count) __pa(iodc_retbuf), 0, __pa(iodc_dbuf), i, 0);spin_unlock_irqrestore (&pdc_lock, flags); -return i; +return i - found; }#if !defined(BOOTLOADER )
arch/parisc/kernel/ptrace.c +13 -2
@@ -127,6 +127,12 @@ long arch_ptrace(struct task_struct *child, long request,unsigned long tmp;long ret = -EIO ; +unsigned long user_regs_struct_size =sizeof (struct user_regs_struct ); +#ifdef CONFIG_64BIT +if (is_compat_task ()) + user_regs_struct_size /=2 ; +#endif +switch (request) {/* Read the word at location addr in the USER area. For ptraced
@@ -182,14 +188,14 @@ long arch_ptrace(struct task_struct *child, long request,return copy_regset_to_user (child,task_user_regset_view (current),REGSET_GENERAL , -0 ,sizeof (struct user_regs_struct ), +0 , user_regs_struct_size, datap);case PTRACE_SETREGS :/* Set all gp regs in the child. */ return copy_regset_from_user (child,task_user_regset_view (current),REGSET_GENERAL , -0 ,sizeof (struct user_regs_struct ), +0 , user_regs_struct_size, datap);case PTRACE_GETFPREGS :/* Get the child FPU state. */
@@ -303,6 +309,11 @@ long compat_arch_ptrace(struct task_struct *child, compat_long_t request, } }break ; +case PTRACE_GETREGS : +case PTRACE_SETREGS : +case PTRACE_GETFPREGS : +case PTRACE_SETFPREGS : +return arch_ptrace (child, request, addr, data);default : ret =compat_ptrace_request (child, request, addr, data);
arch/powerpc/perf/imc-pmu.c +7 -7
@@ -21,7 +21,7 @@* Used to avoid races in counting the nest-pmu units during hotplug * register and unregister */ -static DEFINE_SPINLOCK (nest_init_lock); +static DEFINE_MUTEX (nest_init_lock); static DEFINE_PER_CPU(struct imc_pmu_ref *, local_nest_imc_refc);static struct imc_pmu **per_nest_pmu_arr;static cpumask_t nest_imc_cpumask;
@@ -1621,7 +1621,7 @@ static void imc_common_mem_free(struct imc_pmu *pmu_ptr)static void imc_common_cpuhp_mem_free (struct imc_pmu *pmu_ptr) {if (pmu_ptr->domain ==IMC_DOMAIN_NEST ) { -spin_lock (&nest_init_lock); +mutex_lock (&nest_init_lock);if (nest_pmus ==1 ) {cpuhp_remove_state (CPUHP_AP_PERF_POWERPC_NEST_IMC_ONLINE );kfree (nest_imc_refc);
@@ -1631,7 +1631,7 @@ static void imc_common_cpuhp_mem_free(struct imc_pmu *pmu_ptr)if (nest_pmus >0 ) nest_pmus--; -spin_unlock (&nest_init_lock); +mutex_unlock (&nest_init_lock); }/* Free core_imc memory */
@@ -1788,11 +1788,11 @@ int init_imc_pmu(struct device_node *parent, struct imc_pmu *pmu_ptr, int pmu_id* rest. To handle the cpuhotplug callback unregister, we track * the number of nest pmus in "nest_pmus". */ -spin_lock (&nest_init_lock); +mutex_lock (&nest_init_lock);if (nest_pmus ==0 ) { ret =init_nest_pmu_ref ();if (ret) { -spin_unlock (&nest_init_lock); +mutex_unlock (&nest_init_lock);kfree (per_nest_pmu_arr); per_nest_pmu_arr =NULL ; goto err_free_mem;
@@ -1800,7 +1800,7 @@ int init_imc_pmu(struct device_node *parent, struct imc_pmu *pmu_ptr, int pmu_id/* Register for cpu hotplug notification. */ ret =nest_pmu_cpumask_init ();if (ret) { -spin_unlock (&nest_init_lock); +mutex_unlock (&nest_init_lock);kfree (nest_imc_refc);kfree (per_nest_pmu_arr); per_nest_pmu_arr =NULL ;
@@ -1808,7 +1808,7 @@ int init_imc_pmu(struct device_node *parent, struct imc_pmu *pmu_ptr, int pmu_id } } nest_pmus++; -spin_unlock (&nest_init_lock); +mutex_unlock (&nest_init_lock);break ;case IMC_DOMAIN_CORE : ret =core_imc_pmu_cpumask_init ();
arch/riscv/Makefile +3 -0
@@ -74,6 +74,9 @@ ifeq ($(CONFIG_PERF_EVENTS),y) KBUILD_CFLAGS += -fno-omit-frame-pointer endif +# Avoid generating .eh_frame sections. +KBUILD_CFLAGS += -fno-asynchronous-unwind-tables -fno-unwind-tables + KBUILD_CFLAGS_MODULE += $(call cc-option,-mno-relax) KBUILD_AFLAGS_MODULE += $(call as-option,-Wa$(comma)-mno-relax)
arch/riscv/mm/cacheflush.c +3 -1
@@ -85,7 +85,9 @@ void flush_icache_pte(pte_t pte) {struct page *page =pte_page (pte); -if (!test_and_set_bit (PG_dcache_clean, &page->flags)) +if (!test_bit (PG_dcache_clean, &page->flags)) {flush_icache_all (); +set_bit (PG_dcache_clean, &page->flags); + } }#endif /* CONFIG_MMU */
arch/x86/include/asm/debugreg.h +24 -2
@@ -39,7 +39,20 @@ static __always_inline unsigned long native_get_debugreg(int regno) asm("mov %%db6, %0" :"=r" (val));break ;case 7 : - asm("mov %%db7, %0" :"=r" (val)); +/* +* Apply __FORCE_ORDER to DR7 reads to forbid re-ordering them +* with other code. +* +* This is needed because a DR7 access can cause a #VC exception +* when running under SEV-ES. Taking a #VC exception is not a +* safe thing to do just anywhere in the entry code and +* re-ordering might place the access into an unsafe location. +* +* This happened in the NMI handler, where the DR7 read was +* re-ordered to happen before the call to sev_es_ist_enter(), +* causing stack recursion. +*/ + asm volatile("mov %%db7, %0" : "=r" (val) : __FORCE_ORDER);break ;default :BUG ();
@@ -66,7 +79,16 @@ static __always_inline void native_set_debugreg(int regno, unsigned long value) asm("mov %0, %%db6" ::"r" (value));break ;case 7 : - asm("mov %0, %%db7" ::"r" (value)); +/* +* Apply __FORCE_ORDER to DR7 writes to forbid re-ordering them +* with other code. +* +* While is didn't happen with a DR7 write (see the DR7 read +* comment above which explains where it happened), add the +* __FORCE_ORDER here too to avoid similar problems in the +* future. +*/ + asm volatile("mov %0, %%db7" ::"r" (value), __FORCE_ORDER);break ;default :BUG ();
drivers/ata/libata-core.c +1 -1
@@ -3051,7 +3051,7 @@ int sata_down_spd_limit(struct ata_link *link, u32 spd_limit)*/ if (spd >1 ) mask &= (1 << (spd -1 )) -1 ; -else +else if (link->sata_spd)return -EINVAL ;/* were we already at the bottom? */
drivers/bus/sunxi-rsb.c +7 -1
@@ -781,7 +781,13 @@ static int __init sunxi_rsb_init(void)return ret; } -return platform_driver_register (&sunxi_rsb_driver); + ret =platform_driver_register (&sunxi_rsb_driver); +if (ret) { +bus_unregister (&sunxi_rsb_bus); +return ret; + } + +return 0 ; }module_init (sunxi_rsb_init);
drivers/firewire/core-cdev.c +3 -1
@@ -818,8 +818,10 @@ static int ioctl_send_response(struct client *client, union ioctl_arg *arg) r = container_of(resource, struct inbound_transaction_resource, resource); -if (is_fcp_request (r->request)) +if (is_fcp_request (r->request)) { +kfree (r->data); goto out; + }if (a->length !=fw_get_response_length (r->request)) { ret = -EINVAL ;
drivers/firmware/efi/efi.c +2 -0
@@ -950,6 +950,8 @@ int __ref efi_mem_reserve_persistent(phys_addr_t addr, u64 size)/* first try to find a slot in an existing linked list entry */ for (prsv = efi_memreserve_root->next; prsv; ) { rsv =memremap (prsv,sizeof (*rsv),MEMREMAP_WB ); +if (!rsv) +return -ENOMEM ; index =atomic_fetch_add_unless (&rsv->count,1 , rsv->size);if (index < rsv->size) { rsv->entry[index].base = addr;
drivers/firmware/efi/memattr.c +1 -1
@@ -33,7 +33,7 @@ int __init efi_memattr_init(void)return -ENOMEM ; } -if (tbl->version >1 ) { +if (tbl->version >2 ) {pr_warn ("Unexpected EFI Memory Attributes table version %d\n" , tbl->version); goto unmap;
drivers/fpga/stratix10-soc.c +2 -2
@@ -213,9 +213,9 @@ static int s10_ops_write_init(struct fpga_manager *mgr,/* Allocate buffers from the service layer's pool. */ for (i =0 ; i <NUM_SVC_BUFS ; i++) { kbuf =stratix10_svc_allocate_memory (priv->chan,SVC_BUF_SIZE ); -if (!kbuf) { +if (IS_ERR (kbuf)) {s10_free_buffers (mgr); - ret = -ENOMEM ; + ret =PTR_ERR (kbuf); goto init_done; }
drivers/fsi/fsi-sbefifo.c +3 -3
@@ -640,7 +640,7 @@ static void sbefifo_collect_async_ffdc(struct sbefifo *sbefifo) } ffdc_iov.iov_base = ffdc; ffdc_iov.iov_len =SBEFIFO_MAX_FFDC_SIZE ; -iov_iter_kvec (&ffdc_iter,WRITE , &ffdc_iov,1 ,SBEFIFO_MAX_FFDC_SIZE ); +iov_iter_kvec (&ffdc_iter,READ , &ffdc_iov,1 ,SBEFIFO_MAX_FFDC_SIZE ); cmd[0 ] =cpu_to_be32 (2 ); cmd[1 ] =cpu_to_be32 (SBEFIFO_CMD_GET_SBE_FFDC ); rc =sbefifo_do_command (sbefifo, cmd,2 , &ffdc_iter);
@@ -737,7 +737,7 @@ int sbefifo_submit(struct device *dev, const __be32 *command, size_t cmd_len, rbytes = (*resp_len) *sizeof (__be32); resp_iov.iov_base = response; resp_iov.iov_len = rbytes; -iov_iter_kvec (&resp_iter,WRITE , &resp_iov,1 , rbytes); +iov_iter_kvec (&resp_iter,READ , &resp_iov,1 , rbytes);/* Perform the command */ mutex_lock (&sbefifo->lock);
@@ -817,7 +817,7 @@ static ssize_t sbefifo_user_read(struct file *file, char __user *buf,/* Prepare iov iterator */ resp_iov.iov_base = buf; resp_iov.iov_len = len; -iov_iter_init (&resp_iter,WRITE , &resp_iov,1 , len); +iov_iter_init (&resp_iter,READ , &resp_iov,1 , len);/* Perform the command */ mutex_lock (&sbefifo->lock);
drivers/gpu/drm/i915/gem/i915_gem_tiling.c +5 -4
@@ -296,10 +296,6 @@ i915_gem_object_set_tiling(struct drm_i915_gem_object *obj,spin_unlock (&obj->vma.lock); obj->tiling_and_stride = tiling | stride; -i915_gem_object_unlock (obj); - -/* Force the fence to be reacquired for GTT access */ -i915_gem_object_release_mmap_gtt (obj);/* Try to preallocate memory required to save swizzling on put-pages */ if (i915_gem_object_needs_bit17_swizzle (obj)) {
@@ -312,6 +308,11 @@ i915_gem_object_set_tiling(struct drm_i915_gem_object *obj, obj->bit_17 =NULL ; } +i915_gem_object_unlock (obj); + +/* Force the fence to be reacquired for GTT access */ +i915_gem_object_release_mmap_gtt (obj); +return 0 ; }
drivers/gpu/drm/vc4/vc4_hdmi.c +2 -1
@@ -1491,7 +1491,8 @@ static int vc4_hdmi_cec_init(struct vc4_hdmi *vc4_hdmi)return 0 ; vc4_hdmi->cec_adap =cec_allocate_adapter (&vc4_hdmi_cec_adap_ops, - vc4_hdmi,"vc4" , + vc4_hdmi, + vc4_hdmi->variant->card_name,CEC_CAP_DEFAULTS |CEC_CAP_CONNECTOR_INFO ,1 ); ret =PTR_ERR_OR_ZERO (vc4_hdmi->cec_adap);
drivers/i2c/busses/i2c-mxs.c +2 -2
@@ -842,8 +842,8 @@ static int mxs_i2c_probe(struct platform_device *pdev)/* Setup the DMA */ i2c->dmach =dma_request_chan (dev,"rx-tx" );if (IS_ERR (i2c->dmach)) { -dev_err (dev,"Failed to request dma\n" ); -return PTR_ERR (i2c->dmach); +return dev_err_probe (dev,PTR_ERR (i2c->dmach), +"Failed to request dma\n" ); }platform_set_drvdata (pdev, i2c);
drivers/i2c/busses/i2c-rk3x.c +22 -22
123 lines not on this page · raw message
drivers/iio/accel/hid-sensor-accel-3d.c +1 -0
@@ -277,6 +277,7 @@ static int accel_3d_capture_sample(struct hid_sensor_hub_device *hsdev,hid_sensor_convert_timestamp ( &accel_state->common_attributes, *(int64_t *)raw_data); + ret =0 ;break ;default :break ;
drivers/iio/adc/berlin2-adc.c +3 -1
@@ -289,8 +289,10 @@ static int berlin2_adc_probe(struct platform_device *pdev)int ret; indio_dev =devm_iio_device_alloc (&pdev->dev,sizeof (*priv)); -if (!indio_dev) +if (!indio_dev) { +of_node_put (parent_np);return -ENOMEM ; + } priv =iio_priv (indio_dev);platform_set_drvdata (pdev, indio_dev);
drivers/iio/adc/stm32-dfsdm-adc.c +1 -0
@@ -1521,6 +1521,7 @@ static const struct of_device_id stm32_dfsdm_adc_match[] = { }, {} }; +MODULE_DEVICE_TABLE (of, stm32_dfsdm_adc_match);static int stm32_dfsdm_adc_probe (struct platform_device *pdev) {
drivers/iio/adc/twl6030-gpadc.c +32 -0
@@ -57,6 +57,18 @@#define TWL6030_GPADCS BIT(1)#define TWL6030_GPADCR BIT(0) +#define USB_VBUS_CTRL_SET 0x04 +#define USB_ID_CTRL_SET 0x06 + +#define TWL6030_MISC1 0xE4 +#define VBUS_MEAS 0x01 +#define ID_MEAS 0x01 + +#define VAC_MEAS 0x04 +#define VBAT_MEAS 0x02 +#define BB_MEAS 0x01 + +/** * struct twl6030_chnl_calib - channel calibration * @gain: slope coefficient for ideal curve
@@ -927,6 +939,26 @@ static int twl6030_gpadc_probe(struct platform_device *pdev)return ret; } + ret =twl_i2c_write_u8 (TWL_MODULE_USB ,VBUS_MEAS ,USB_VBUS_CTRL_SET ); +if (ret <0 ) { +dev_err (dev,"failed to wire up inputs\n" ); +return ret; + } + + ret =twl_i2c_write_u8 (TWL_MODULE_USB ,ID_MEAS ,USB_ID_CTRL_SET ); +if (ret <0 ) { +dev_err (dev,"failed to wire up inputs\n" ); +return ret; + } + + ret =twl_i2c_write_u8 (TWL6030_MODULE_ID0 , +VBAT_MEAS |BB_MEAS |VAC_MEAS , +TWL6030_MISC1 ); +if (ret <0 ) { +dev_err (dev,"failed to wire up inputs\n" ); +return ret; + } + indio_dev->name =DRIVER_NAME ; indio_dev->info = &twl6030_gpadc_iio_info; indio_dev->modes =INDIO_DIRECT_MODE ;
drivers/iio/imu/fxos8700_core.c +89 -22
201 lines not on this page · raw message
drivers/infiniband/hw/hfi1/file_ops.c +5 -2
@@ -1359,12 +1359,15 @@ static int user_exp_rcv_setup(struct hfi1_filedata *fd, unsigned long arg, addr = arg + offsetof(struct hfi1_tid_info , tidcnt);if (copy_to_user ((void __user *)addr, &tinfo.tidcnt,sizeof (tinfo.tidcnt))) -return -EFAULT ; + ret = -EFAULT ; addr = arg + offsetof(struct hfi1_tid_info , length); -if (copy_to_user ((void __user *)addr, &tinfo.length, +if (!ret &©_to_user ((void __user *)addr, &tinfo.length,sizeof (tinfo.length))) ret = -EFAULT ; + +if (ret) +hfi1_user_exp_rcv_invalid (fd, &tinfo); }return ret;
drivers/infiniband/hw/usnic/usnic_uiom.c +4 -4
@@ -281,8 +281,8 @@ static int usnic_uiom_map_sorted_intervals(struct list_head *intervals, size = pa_end - pa_start +PAGE_SIZE ;usnic_dbg ("va 0x%lx pa %pa size 0x%zx flags 0x%x" , va_start, &pa_start, size, flags); - err =iommu_map (pd->domain, va_start, pa_start, - size, flags); + err =iommu_map_atomic (pd->domain, va_start, + pa_start, size, flags);if (err) {usnic_err ("Failed to map va 0x%lx pa %pa size 0x%zx with err %d\n" , va_start, &pa_start, size, err);
@@ -298,8 +298,8 @@ static int usnic_uiom_map_sorted_intervals(struct list_head *intervals, size = pa - pa_start +PAGE_SIZE ;usnic_dbg ("va 0x%lx pa %pa size 0x%zx flags 0x%x\n" , va_start, &pa_start, size, flags); - err =iommu_map (pd->domain, va_start, pa_start, - size, flags); + err =iommu_map_atomic (pd->domain, va_start, + pa_start, size, flags);if (err) {usnic_err ("Failed to map va 0x%lx pa %pa size 0x%zx with err %d\n" , va_start, &pa_start, size, err);
drivers/infiniband/ulp/ipoib/ipoib_main.c +8 -0
@@ -2188,6 +2188,14 @@ int ipoib_intf_init(struct ib_device *hca, u8 port, const char *name, rn->attach_mcast = ipoib_mcast_attach; rn->detach_mcast = ipoib_mcast_detach; rn->hca = hca; + + rc =netif_set_real_num_tx_queues (dev,1 ); +if (rc) + goto out; + + rc =netif_set_real_num_rx_queues (dev,1 ); +if (rc) + goto out; } priv->rn_ops = dev->netdev_ops;
drivers/infiniband/ulp/rtrs/rtrs-clt.c +1 -1
@@ -902,7 +902,7 @@ static void rtrs_clt_init_req(struct rtrs_clt_io_req *req, req->need_inv_comp = false; req->inv_errno =0 ; -iov_iter_kvec (&iter,READ , vec,1 , usr_len); +iov_iter_kvec (&iter,WRITE , vec,1 , usr_len); len =_copy_from_iter (req->iu->buf, usr_len, &iter);WARN_ON (len != usr_len);
drivers/input/serio/i8042-x86ia64io.h +707 -481
1,715 lines not on this page · raw message
drivers/net/bonding/bond_debugfs.c +1 -1
@@ -76,7 +76,7 @@ void bond_debug_reregister(struct bonding *bond) d =debugfs_rename (bonding_debug_root, bond->debug_dir, bonding_debug_root, bond->dev->name); -if (d) { +if (!IS_ERR (d)) { bond->debug_dir = d; }else {netdev_warn (bond->dev,"failed to reregister, so just unregister old one\n" );
drivers/net/ethernet/intel/ice/ice_main.c +1 -1
@@ -4853,7 +4853,7 @@ static int __init ice_module_init(void)pr_info ("%s\n" , ice_driver_string);pr_info ("%s\n" , ice_copyright); - ice_wq =alloc_workqueue ("%s" ,WQ_MEM_RECLAIM ,0 ,KBUILD_MODNAME ); + ice_wq =alloc_workqueue ("%s" ,0 ,0 ,KBUILD_MODNAME );if (!ice_wq) {pr_err ("Failed to create workqueue\n" );return -ENOMEM ;
drivers/net/ethernet/intel/igc/igc_ptp.c +9 -5
@@ -134,10 +134,12 @@ static int igc_ptp_feature_enable_i225(struct ptp_clock_info *ptp,* * We need to convert the system time value stored in the RX/TXSTMP registers * into a hwtstamp which can be used by the upper level timestamping functions. +* +* Returns 0 on success. **/ -static void igc_ptp_systim_to_hwtstamp (struct igc_adapter *adapter, -struct skb_shared_hwtstamps *hwtstamps, -u64 systim) +static int igc_ptp_systim_to_hwtstamp (struct igc_adapter *adapter, +struct skb_shared_hwtstamps *hwtstamps, +u64 systim) {switch (adapter->hw.mac.type) {case igc_i225:
@@ -147,8 +149,9 @@ static void igc_ptp_systim_to_hwtstamp(struct igc_adapter *adapter, systim & 0xFFFFFFFF);break ;default : -break ; +return -EINVAL ; } +return 0 ; }/**
@@ -372,7 +375,8 @@ static void igc_ptp_tx_hwtstamp(struct igc_adapter *adapter) regval =rd32 (IGC_TXSTMPL ); regval |= (u64 )rd32 (IGC_TXSTMPH ) <<32 ; -igc_ptp_systim_to_hwtstamp (adapter, &shhwtstamps, regval); +if (igc_ptp_systim_to_hwtstamp (adapter, &shhwtstamps, regval)) +return ;switch (adapter->link_speed) {case SPEED_10 :
drivers/net/ethernet/mellanox/mlx5/core/diag/fw_tracer.c +2 -1
@@ -64,6 +64,7 @@ static int mlx5_query_mtrc_caps(struct mlx5_fw_tracer *tracer)MLX5_GET (mtrc_cap, out, num_string_trace); tracer->str_db.num_string_db =MLX5_GET (mtrc_cap, out, num_string_db); tracer->owner = !!MLX5_GET (mtrc_cap, out, trace_owner); + tracer->str_db.loaded = false;for (i =0 ; i < tracer->str_db.num_string_db; i++) { mtrc_cap_sp =MLX5_ADDR_OF (mtrc_cap, out, string_db_param[i]);
@@ -756,6 +757,7 @@ static int mlx5_fw_tracer_set_mtrc_conf(struct mlx5_fw_tracer *tracer)if (err)mlx5_core_warn (dev,"FWTracer: Failed to set tracer configurations %d\n" , err); + tracer->buff.consumer_index =0 ;return err; }
@@ -820,7 +822,6 @@ static void mlx5_fw_tracer_ownership_change(struct work_struct *work)mlx5_core_dbg (tracer->dev,"FWTracer: ownership changed, current=(%d)\n" , tracer->owner);if (tracer->owner) { tracer->owner = false; - tracer->buff.consumer_index =0 ;return ; }
drivers/net/ethernet/mellanox/mlx5/core/ipoib/ethtool.c +5 -8
@@ -166,16 +166,16 @@ static inline int mlx5_ptys_rate_enum_to_int(enum mlx5_ptys_rate rate) } } -static int mlx5i_get_speed_settings (u16 ib_link_width_oper,u16 ib_proto_oper) +static u32 mlx5i_get_speed_settings (u16 ib_link_width_oper,u16 ib_proto_oper) {int rate, width; rate =mlx5_ptys_rate_enum_to_int (ib_proto_oper);if (rate <0 ) -return -EINVAL ; +return SPEED_UNKNOWN ; width =mlx5_ptys_width_enum_to_int (ib_link_width_oper);if (width <0 ) -return -EINVAL ; +return SPEED_UNKNOWN ;return rate * width; }
@@ -198,16 +198,13 @@ static int mlx5i_get_link_ksettings(struct net_device *netdev,ethtool_link_ksettings_zero_link_mode (link_ksettings, advertising); speed =mlx5i_get_speed_settings (ib_link_width_oper, ib_proto_oper); -if (speed <0 ) -return -EINVAL ; + link_ksettings->base.speed = speed; + link_ksettings->base.duplex = speed ==SPEED_UNKNOWN ?DUPLEX_UNKNOWN :DUPLEX_FULL ; - link_ksettings->base.duplex =DUPLEX_FULL ; link_ksettings->base.port =PORT_OTHER ; link_ksettings->base.autoneg =AUTONEG_DISABLE ; - link_ksettings->base.speed = speed; -return 0 ; }
drivers/net/ethernet/mscc/ocelot_flower.c +12 -12
@@ -468,6 +468,18 @@ ocelot_flower_parse_key(struct ocelot *ocelot, int port, bool ingress,flow_rule_match_control (rule, &match); } +if (flow_rule_match_key (rule,FLOW_DISSECTOR_KEY_VLAN )) { +struct flow_match_vlan match; + +flow_rule_match_vlan (rule, &match); + filter->key_type =OCELOT_VCAP_KEY_ANY ; + filter->vlan.vid.value = match.key->vlan_id; + filter->vlan.vid.mask = match.mask->vlan_id; + filter->vlan.pcp.value[0 ] = match.key->vlan_priority; + filter->vlan.pcp.mask[0 ] = match.mask->vlan_priority; + match_protocol = false; + } +if (flow_rule_match_key (rule,FLOW_DISSECTOR_KEY_ETH_ADDRS )) {struct flow_match_eth_addrs match;
@@ -600,18 +612,6 @@ ocelot_flower_parse_key(struct ocelot *ocelot, int port, bool ingress, match_protocol = false; } -if (flow_rule_match_key (rule,FLOW_DISSECTOR_KEY_VLAN )) { -struct flow_match_vlan match; - -flow_rule_match_vlan (rule, &match); - filter->key_type =OCELOT_VCAP_KEY_ANY ; - filter->vlan.vid.value = match.key->vlan_id; - filter->vlan.vid.mask = match.mask->vlan_id; - filter->vlan.pcp.value[0 ] = match.key->vlan_priority; - filter->vlan.pcp.mask[0 ] = match.mask->vlan_priority; - match_protocol = false; - } - finished_key_parsing:if (match_protocol && proto !=ETH_P_ALL ) {if (filter->block_id ==VCAP_ES0 ) {
drivers/net/ethernet/pensando/ionic/ionic_lif.c +12 -3
@@ -257,6 +257,7 @@ static int ionic_qcq_enable(struct ionic_qcq *qcq) .oper = IONIC_Q_ENABLE, }, }; +int ret; idev = &lif->ionic->idev; dev = lif->ionic->dev;
@@ -264,16 +265,24 @@ static int ionic_qcq_enable(struct ionic_qcq *qcq)dev_dbg (dev,"q_enable.index %d q_enable.qtype %d\n" , ctx.cmd.q_control.index, ctx.cmd.q_control.type); +if (qcq->flags &IONIC_QCQ_F_INTR ) +ionic_intr_clean (idev->intr_ctrl, qcq->intr.index); + + ret =ionic_adminq_post_wait (lif, &ctx); +if (ret) +return ret; + +if (qcq->napi.poll) +napi_enable (&qcq->napi); +if (qcq->flags &IONIC_QCQ_F_INTR ) {irq_set_affinity_hint (qcq->intr.vector, &qcq->intr.affinity_mask); -napi_enable (&qcq->napi); -ionic_intr_clean (idev->intr_ctrl, qcq->intr.index);ionic_intr_mask (idev->intr_ctrl, qcq->intr.index,IONIC_INTR_MASK_CLEAR ); } -return ionic_adminq_post_wait (lif, &ctx); +return 0 ; }static int ionic_qcq_disable (struct ionic_qcq *qcq,bool send_to_hw)
drivers/net/ethernet/qlogic/qede/qede_fp.c +6 -4
@@ -1456,7 +1456,12 @@ int qede_poll(struct napi_struct *napi, int budget) rx_work_done = (likely (fp->type &QEDE_FASTPATH_RX ) &&qede_has_rx_work (fp->rxq)) ?qede_rx_int (fp, budget) :0 ; -if (rx_work_done < budget) { + +if (fp->xdp_xmit &QEDE_XDP_REDIRECT ) +xdp_do_flush (); + +/* Handle case where we are called by netpoll with a budget of 0 */ +if (rx_work_done < budget || !budget) {if (!qede_poll_is_more_work (fp)) {napi_complete_done (napi, rx_work_done);
@@ -1474,9 +1479,6 @@ int qede_poll(struct napi_struct *napi, int budget)qede_update_tx_producer (fp->xdp_tx); } -if (fp->xdp_xmit &QEDE_XDP_REDIRECT ) -xdp_do_flush_map (); -return rx_work_done; }
drivers/net/ethernet/sfc/efx.c +4 -1
@@ -1047,8 +1047,11 @@ static int efx_pci_probe_post_io(struct efx_nic *efx)/* Determine netdevice features */ net_dev->features |= (efx->type->offload_features |NETIF_F_SG |NETIF_F_TSO |NETIF_F_RXCSUM |NETIF_F_RXALL ); -if (efx->type->offload_features & (NETIF_F_IPV6_CSUM |NETIF_F_HW_CSUM )) +if (efx->type->offload_features & (NETIF_F_IPV6_CSUM |NETIF_F_HW_CSUM )) { net_dev->features |=NETIF_F_TSO6 ; +if (efx_has_cap (efx,TX_TSO_V2_ENCAP )) + net_dev->hw_enc_features |=NETIF_F_TSO6 ; + }/* Check whether device supports TSO */ if (!efx->type->tso_versions || !efx->type->tso_versions (efx)) net_dev->features &= ~NETIF_F_ALL_TSO ;
drivers/net/phy/dp83822.c +4 -2
@@ -247,7 +247,8 @@ static int dp83822_config_intr(struct phy_device *phydev)DP83822_ENERGY_DET_INT_EN | DP83822_LINK_QUAL_INT_EN); -if (!dp83822->fx_enabled) +/* Private data pointer is NULL on DP83825/26 */ +if (!dp83822 || !dp83822->fx_enabled) misr_status |=DP83822_ANEG_COMPLETE_INT_EN |DP83822_DUP_MODE_CHANGE_INT_EN |DP83822_SPEED_CHANGED_INT_EN ;
@@ -267,7 +268,8 @@ static int dp83822_config_intr(struct phy_device *phydev)DP83822_PAGE_RX_INT_EN | DP83822_EEE_ERROR_CHANGE_INT_EN); -if (!dp83822->fx_enabled) +/* Private data pointer is NULL on DP83825/26 */ +if (!dp83822 || !dp83822->fx_enabled) misr_status |=DP83822_ANEG_ERR_INT_EN |DP83822_WOL_PKT_INT_EN ;
drivers/net/phy/meson-gxl.c +4 -0
@@ -235,6 +235,8 @@ static struct phy_driver meson_gxl_phy[] = { .config_intr = meson_gxl_config_intr, .suspend = genphy_suspend, .resume = genphy_resume, + .read_mmd = genphy_read_mmd_unsupported, + .write_mmd = genphy_write_mmd_unsupported, }, { PHY_ID_MATCH_EXACT(0x01803301), .name = "Meson G12A Internal PHY",
@@ -245,6 +247,8 @@ static struct phy_driver meson_gxl_phy[] = { .config_intr = meson_gxl_config_intr, .suspend = genphy_suspend, .resume = genphy_resume, + .read_mmd = genphy_read_mmd_unsupported, + .write_mmd = genphy_write_mmd_unsupported, }, };
drivers/net/usb/plusb.c +1 -3
@@ -57,9 +57,7 @@static inline int pl_vendor_req (struct usbnet *dev,u8 req,u8 val,u8 index) { -return usbnet_read_cmd (dev, req, -USB_DIR_IN |USB_TYPE_VENDOR | -USB_RECIP_DEVICE , +return usbnet_write_cmd (dev, req,USB_TYPE_VENDOR |USB_RECIP_DEVICE , val, index,NULL ,0 ); }
drivers/net/virtio_net.c +4 -4
@@ -1525,13 +1525,13 @@ static int virtnet_poll(struct napi_struct *napi, int budget) received =virtnet_receive (rq, budget, &xdp_xmit); +if (xdp_xmit &VIRTIO_XDP_REDIR ) +xdp_do_flush (); +/* Out of packets? */ if (received < budget)virtqueue_napi_complete (napi, rq->vq, received); -if (xdp_xmit &VIRTIO_XDP_REDIR ) -xdp_do_flush (); -if (xdp_xmit &VIRTIO_XDP_TX ) { sq =virtnet_xdp_get_sq (vi);if (virtqueue_kick_prepare (sq->vq) &&virtqueue_notify (sq->vq)) {
@@ -1928,8 +1928,8 @@ static int virtnet_close(struct net_device *dev)cancel_delayed_work_sync (&vi->refill);for (i =0 ; i < vi->max_queue_pairs; i++) { -xdp_rxq_info_unreg (&vi->rq[i].xdp_rxq);napi_disable (&vi->rq[i].napi); +xdp_rxq_info_unreg (&vi->rq[i].xdp_rxq);virtnet_napi_tx_disable (&vi->sq[i].napi); }
drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c +17 -0
@@ -90,6 +90,9 @@#define BRCMF_ASSOC_PARAMS_FIXED_SIZE \ (sizeof(struct brcmf_assoc_params_le) - sizeof(u16)) +#define BRCMF_MAX_CHANSPEC_LIST \ + (BRCMF_DCMD_MEDLEN / sizeof(__le32) - 1) +static bool check_vif_up (struct brcmf_cfg80211_vif *vif) {if (!test_bit (BRCMF_VIF_STATUS_READY , &vif->sme_state)) {
@@ -6459,6 +6462,13 @@ static int brcmf_construct_chaninfo(struct brcmf_cfg80211_info *cfg, band->channels[i].flags =IEEE80211_CHAN_DISABLED ; total =le32_to_cpu (list->count); +if (total >BRCMF_MAX_CHANSPEC_LIST ) { +bphy_err (drvr,"Invalid count of channel Spec. (%u)\n" , + total); + err = -EINVAL ; + goto fail_pbuf; + } +for (i =0 ; i < total; i++) { ch.chspec = (u16 )le32_to_cpu (list->element[i]); cfg->d11inf.decchspec (&ch);
@@ -6604,6 +6614,13 @@ static int brcmf_enable_bw40_2g(struct brcmf_cfg80211_info *cfg) band =cfg_to_wiphy (cfg)->bands[NL80211_BAND_2GHZ ]; list = (struct brcmf_chanspec_list *)pbuf; num_chan =le32_to_cpu (list->count); +if (num_chan >BRCMF_MAX_CHANSPEC_LIST ) { +bphy_err (drvr,"Invalid count of channel Spec. (%u)\n" , + num_chan); +kfree (pbuf); +return -EINVAL ; + } +for (i =0 ; i < num_chan; i++) { ch.chspec = (u16 )le32_to_cpu (list->element[i]); cfg->d11inf.decchspec (&ch);
drivers/nvmem/core.c +4 -4
@@ -625,9 +625,11 @@ struct nvmem_device *nvmem_register(const struct nvmem_config *config)return ERR_PTR (rval); } + nvmem->id = rval; +if (config->wp_gpio) nvmem->wp_gpio = config->wp_gpio; -else +else if (!config->ignore_wp) nvmem->wp_gpio =gpiod_get_optional (config->dev,"wp" ,GPIOD_OUT_HIGH );if (IS_ERR (nvmem->wp_gpio)) {
@@ -640,7 +642,6 @@ struct nvmem_device *nvmem_register(const struct nvmem_config *config)kref_init (&nvmem->refcnt);INIT_LIST_HEAD (&nvmem->cells); - nvmem->id = rval; nvmem->owner = config->owner;if (!nvmem->owner && config->dev->driver) nvmem->owner = config->dev->driver->owner;
@@ -694,7 +695,7 @@ struct nvmem_device *nvmem_register(const struct nvmem_config *config)if (config->cells) { rval =nvmem_add_cells (nvmem, config->cells, config->ncells);if (rval) - goto err_teardown_compat; + goto err_remove_cells; } rval =nvmem_add_cells_from_table (nvmem);
@@ -711,7 +712,6 @@ struct nvmem_device *nvmem_register(const struct nvmem_config *config) err_remove_cells:nvmem_device_remove_all_cells (nvmem); -err_teardown_compat:if (config->compat)nvmem_sysfs_remove_compat (nvmem, config); err_device_del:
drivers/nvmem/qcom-spmi-sdam.c +1 -0
@@ -166,6 +166,7 @@ static const struct of_device_id sdam_match_table[] = { { .compatible = "qcom,spmi-sdam" }, {}, }; +MODULE_DEVICE_TABLE (of, sdam_match_table);static struct platform_driver sdam_driver = { .driver = {
drivers/of/address.c +15 -6
@@ -990,8 +990,19 @@ int of_dma_get_range(struct device_node *np, const struct bus_dma_region **map) }of_dma_range_parser_init (&parser, node); -for_each_of_range (&parser, &range) +for_each_of_range (&parser, &range) { +if (range.cpu_addr ==OF_BAD_ADDR ) { +pr_err ("translation of DMA address(%llx) to CPU address failed node(%pOF)\n" , + range.bus_addr, node); +continue ; + } num_ranges++; + } + +if (!num_ranges) { + ret = -EINVAL ; + goto out; + } r =kcalloc (num_ranges +1 ,sizeof (*r),GFP_KERNEL );if (!r) {
@@ -1000,18 +1011,16 @@ int of_dma_get_range(struct device_node *np, const struct bus_dma_region **map) }/* -* Record all info in the generic DMA ranges array for struct device. +* Record all info in the generic DMA ranges array for struct device, +* returning an error if we don't find any parsable ranges. */ *map = r;of_dma_range_parser_init (&parser, node);for_each_of_range (&parser, &range) {pr_debug ("dma_addr(%llx) cpu_addr(%llx) size(%llx)\n" , range.bus_addr, range.cpu_addr, range.size); -if (range.cpu_addr ==OF_BAD_ADDR ) { -pr_err ("translation of DMA address(%llx) to CPU address failed node(%pOF)\n" , - range.bus_addr, node); +if (range.cpu_addr ==OF_BAD_ADDR )continue ; - } r->cpu_start = range.cpu_addr; r->dma_start = range.bus_addr; r->size = range.size;
drivers/pinctrl/aspeed/pinctrl-aspeed.c +1 -1
@@ -121,7 +121,7 @@ static int aspeed_disable_sig(struct aspeed_pinmux_data *ctx,int ret =0 ;if (!exprs) -return true; +return -EINVAL ;while (*exprs && !ret) { ret =aspeed_sig_expr_disable (ctx, *exprs);
drivers/pinctrl/intel/pinctrl-intel.c +13 -3
@@ -1606,6 +1606,12 @@ const struct intel_pinctrl_soc_data *intel_pinctrl_get_soc_data(struct platform_EXPORT_SYMBOL_GPL (intel_pinctrl_get_soc_data);#ifdef CONFIG_PM_SLEEP +static bool __intel_gpio_is_direct_irq (u32 value) +{ +return (value &PADCFG0_GPIROUTIOXAPIC ) && (value &PADCFG0_GPIOTXDIS ) && + (__intel_gpio_get_gpio_mode (value) ==PADCFG0_PMODE_GPIO ); +} +static bool intel_pinctrl_should_save (struct intel_pinctrl *pctrl,unsigned int pin) {const struct pin_desc *pd =pin_desc_get (pctrl->pctldev, pin);
@@ -1639,8 +1645,7 @@ static bool intel_pinctrl_should_save(struct intel_pinctrl *pctrl, unsigned int* See https://bugzilla.kernel.org/show_bug.cgi?id=214749. */ value =readl (intel_get_padcfg (pctrl, pin,PADCFG0 )); -if ((value &PADCFG0_GPIROUTIOXAPIC ) && (value &PADCFG0_GPIOTXDIS ) && - (__intel_gpio_get_gpio_mode (value) ==PADCFG0_PMODE_GPIO )) +if (__intel_gpio_is_direct_irq (value))return true;return false;
@@ -1770,7 +1775,12 @@ int intel_pinctrl_resume_noirq(struct device *dev)for (i =0 ; i < pctrl->soc->npins; i++) {const struct pinctrl_pin_desc *desc = &pctrl->soc->pins[i]; -if (!intel_pinctrl_should_save (pctrl, desc->number)) +if (!(intel_pinctrl_should_save (pctrl, desc->number) || +/* +* If the firmware mangled the register contents too much, +* check the saved value for the Direct IRQ mode. +*/ +__intel_gpio_is_direct_irq (pads[i].padcfg0)))continue ;intel_restore_padcfg (pctrl, desc->number,PADCFG0 , pads[i].padcfg0);
drivers/pinctrl/pinctrl-single.c +2 -0
@@ -372,6 +372,8 @@ static int pcs_set_mux(struct pinctrl_dev *pctldev, unsigned fselector,if (!pcs->fmask)return 0 ; function =pinmux_generic_get_function (pctldev, fselector); +if (!function) +return -EINVAL ; func = function->data;if (!func)return -EINVAL ;
drivers/platform/x86/dell-wmi.c +3 -0
@@ -259,6 +259,9 @@ static const struct key_entry dell_wmi_keymap_type_0010[] = { { KE_KEY, 0x57, { KEY_BRIGHTNESSDOWN } }, { KE_KEY, 0x58, { KEY_BRIGHTNESSUP } }, +/*Speaker Mute*/ + { KE_KEY, 0x109, { KEY_MUTE} }, +/* Mic mute */ { KE_KEY, 0x150, { KEY_MICMUTE } },
drivers/usb/typec/altmodes/displayport.c +4 -4
Lines of this file are not shown. View the raw message.
drivers/video/fbdev/smscufx.c +31 -15
46 lines not on this page · raw message
kernel/bpf/verifier.c +70 -32
102 lines not on this page · raw message
tools/testing/selftests/net/forwarding/lib.sh +2 -2
Lines of this file are not shown. View the raw message.
tools/testing/selftests/net/udpgso_bench.sh +20 -4
Lines of this file are not shown. View the raw message.
tools/testing/selftests/net/udpgso_bench_rx.c +3 -1
Lines of this file are not shown. View the raw message.
tools/testing/selftests/net/udpgso_bench_tx.c +29 -7
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.