Linux 6.1.97
Greg Kroah-Hartman
maintainerI'm announcing the release of the 6.1.97 kernel.
All users of the 6.1 kernel series must upgrade.
The updated 6.1.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-6.1.y
and can be browsed at the normal kernel.org git web browser:
https://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary
thanks,
greg k-h
------------
Documentation/devicetree/bindings/i2c/amlogic,meson6-i2c.yaml | 4 Documentation/devicetree/bindings/i2c/apple,i2c.yaml | 4 Documentation/devicetree/bindings/i2c/atmel,at91sam-i2c.yaml | 2 Documentation/devicetree/bindings/i2c/cdns,i2c-r1p10.yaml | 4 Documentation/devicetree/bindings/i2c/i2c-mux-gpio.yaml | 4 Documentation/devicetree/bindings/i2c/qcom,i2c-geni-qcom.yaml | 4 Documentation/devicetree/bindings/i2c/st,stm32-i2c.yaml | 2 Documentation/devicetree/bindings/i2c/xlnx,xps-iic-2.00.a.yaml | 4 Makefile | 2 arch/arm/boot/dts/rk3066a.dtsi | 1 arch/arm64/boot/dts/rockchip/rk3308-rock-pi-s.dts | 18 arch/arm64/boot/dts/rockchip/rk3328-rock-pi-e.dts | 4 arch/arm64/boot/dts/rockchip/rk3368.dtsi | 3 arch/arm64/include/asm/unistd32.h | 2 arch/arm64/kernel/syscall.c | 16 arch/csky/include/uapi/asm/unistd.h | 1 arch/hexagon/include/asm/syscalls.h | 6 arch/hexagon/include/uapi/asm/unistd.h | 1 arch/hexagon/kernel/syscalltab.c | 7 arch/mips/kernel/syscalls/syscall_n32.tbl | 2 arch/mips/kernel/syscalls/syscall_o32.tbl | 2 arch/parisc/Kconfig | 1 arch/parisc/kernel/sys_parisc32.c | 9 arch/parisc/kernel/syscalls/syscall.tbl | 6 arch/powerpc/kernel/syscalls/syscall.tbl | 6 arch/riscv/kernel/stacktrace.c | 2 arch/s390/include/asm/entry-common.h | 2 arch/s390/kernel/syscalls/syscall.tbl | 2 arch/s390/pci/pci_irq.c | 2 arch/sh/kernel/sys_sh32.c | 11 arch/sh/kernel/syscalls/syscall.tbl | 3 arch/sparc/kernel/sys32.S | 221 -------- arch/sparc/kernel/syscalls/syscall.tbl | 8 arch/x86/entry/syscalls/syscall_32.tbl | 2 arch/x86/include/asm/efi.h | 11 arch/x86/include/asm/entry-common.h | 15 arch/x86/kernel/fpu/core.c | 4 arch/x86/kernel/time.c | 20 arch/x86/platform/efi/Makefile | 3 arch/x86/platform/efi/efi.c | 8 arch/x86/platform/efi/memmap.c | 249 ++++++++++ crypto/ecdh.c | 2 drivers/acpi/x86/utils.c | 23 drivers/ata/ahci.c | 17 drivers/ata/libata-core.c | 8 drivers/counter/ti-eqep.c | 6 drivers/cpufreq/amd-pstate.c | 2 drivers/cpufreq/intel_pstate.c | 13 drivers/firmware/efi/fdtparams.c | 4 drivers/firmware/efi/memmap.c | 238 --------- drivers/gpio/gpio-davinci.c | 5 drivers/gpio/gpiolib-cdev.c | 16 drivers/gpu/drm/amd/amdgpu/amdgpu_atomfirmware.c | 2 drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 68 +- drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 2 drivers/gpu/drm/amd/amdgpu/amdgpu_vkms.c | 18 drivers/gpu/drm/i915/gt/intel_ggtt_fencing.c | 1 drivers/gpu/drm/nouveau/dispnv04/tvnv17.c | 6 drivers/gpu/drm/panel/panel-ilitek-ili9881c.c | 6 drivers/gpu/drm/panel/panel-simple.c | 1 drivers/gpu/drm/radeon/radeon.h | 1 drivers/gpu/drm/radeon/radeon_display.c | 8 drivers/i2c/i2c-slave-testunit.c | 5 drivers/iio/accel/Kconfig | 2 drivers/iio/adc/ad7266.c | 2 drivers/iio/adc/xilinx-ams.c | 8 drivers/iio/chemical/bme680.h | 2 drivers/iio/chemical/bme680_core.c | 62 ++ drivers/infiniband/core/restrack.c | 51 -- drivers/input/touchscreen/ili210x.c | 4 drivers/irqchip/irq-loongson-liointc.c | 4 drivers/media/dvb-core/dvbdev.c | 2 drivers/mmc/host/sdhci-brcmstb.c | 4 drivers/mmc/host/sdhci-pci-core.c | 11 drivers/mmc/host/sdhci.c | 25 - drivers/mtd/parsers/redboot.c | 2 drivers/net/can/spi/mcp251xfd/mcp251xfd-core.c | 14 drivers/net/can/spi/mcp251xfd/mcp251xfd-tx.c | 55 +- drivers/net/can/spi/mcp251xfd/mcp251xfd.h | 5 drivers/net/dsa/microchip/ksz9477.c | 10 drivers/net/dsa/microchip/ksz9477_reg.h | 1 drivers/net/dsa/microchip/ksz_common.c | 2 drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c | 14 drivers/net/ethernet/ibm/ibmvnic.c | 6 drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c | 20 drivers/net/phy/micrel.c | 1 drivers/net/usb/ax88179_178a.c | 6 drivers/pinctrl/core.c | 2 drivers/pinctrl/pinctrl-rockchip.c | 68 ++ drivers/pinctrl/pinctrl-rockchip.h | 1 drivers/pinctrl/qcom/pinctrl-spmi-gpio.c | 1 drivers/pwm/pwm-stm32.c | 3 drivers/soc/ti/wkup_m3_ipc.c | 7 drivers/tty/serial/8250/8250_omap.c | 22 drivers/tty/serial/imx.c | 10 drivers/tty/serial/mcf.c | 2 drivers/usb/atm/cxacru.c | 14 drivers/usb/dwc3/core.c | 6 drivers/usb/gadget/function/f_printer.c | 40 + drivers/usb/gadget/udc/aspeed_udc.c | 4 drivers/usb/musb/da8xx.c | 8 drivers/usb/typec/ucsi/ucsi.c | 55 +- drivers/usb/typec/ucsi/ucsi_stm32g0.c | 19 drivers/vdpa/vdpa_user/vduse_dev.c | 14 fs/btrfs/free-space-cache.c | 2 fs/gfs2/super.c | 2 fs/nfs/direct.c | 2 fs/ocfs2/aops.c | 5 fs/ocfs2/journal.c | 17 fs/ocfs2/journal.h | 2 fs/ocfs2/ocfs2_trace.h | 2 fs/open.c | 4 include/linux/compat.h | 2 include/linux/efi.h | 10 include/linux/filter.h | 5 include/linux/ieee80211.h | 2 include/linux/mmzone.h | 9 include/linux/nvme.h | 4 include/linux/syscalls.h | 8 include/net/inet_connection_sock.h | 2 include/net/netfilter/nf_tables.h | 21 include/trace/events/qdisc.h | 4 include/uapi/asm-generic/unistd.h | 2 kernel/bpf/core.c | 6 kernel/bpf/ringbuf.c | 31 + kernel/bpf/verifier.c | 8 kernel/cpu.c | 8 kernel/sys_ni.c | 2 mm/page_alloc.c | 8 net/batman-adv/originator.c | 27 + net/can/j1939/main.c | 6 net/can/j1939/transport.c | 21 net/core/filter.c | 3 net/core/xdp.c | 4 net/dccp/ipv4.c | 7 net/dccp/ipv6.c | 7 net/ipv4/inet_connection_sock.c | 17 net/ipv4/tcp_input.c | 45 + net/iucv/iucv.c | 26 - net/netfilter/nf_tables_api.c | 12 net/netfilter/nft_lookup.c | 3 net/netfilter/nft_set_hash.c | 8 net/netfilter/nft_set_pipapo.c | 18 net/netfilter/nft_set_rbtree.c | 6 scripts/Makefile.dtbinst | 2 security/integrity/ima/ima_api.c | 16 security/integrity/ima/ima_template_lib.c | 17 sound/pci/hda/patch_realtek.c | 3 sound/soc/amd/acp/acp-i2s.c | 8 sound/soc/fsl/fsl-asoc-card.c | 3 sound/soc/rockchip/rockchip_i2s_tdm.c | 13 sound/synth/emux/soundfont.c | 17 152 files changed, 1233 insertions(+), 943 deletions(-)
Adrian Hunter (2):
mmc: sdhci: Do not invert write-protect twice
mmc: sdhci: Do not lock spinlock around mmc_gpio_get_ro()
Aleksandr Mishin (1):
gpio: davinci: Validate the obtained number of IRQs
Alex Bee (1):
arm64: dts: rockchip: Add sound-dai-cells for RK3368
Alex Deucher (1):
drm/amdgpu/atomfirmware: fix parsing of vram_info
Alexander Sverdlin (1):
iio: accel: fxls8962af: select IIO_BUFFER & IIO_KFIFO_BUF
Alibek Omarov (1):
ASoC: rockchip: i2s-tdm: Fix trcm mode by setting clock on right mclk
Andrew Davis (1):
soc: ti: wkup_m3_ipc: Send NULL dummy message instead of pointer message
Andy Chiu (1):
riscv: stacktrace: convert arch_stack_walk() to noinstr
Anton Protopopov (1):
bpf: Add a check for struct bpf_fib_lookup size
Ard Biesheuvel (3):
efi: memmap: Move manipulation routines into x86 arch tree
efi: xen: Set EFI_PARAVIRT for Xen dom0 boot on all architectures efi/x86: Free EFI memory map only when installing a new one.
Arnd Bergmann (11):
sparc: fix old compat_sys_select()
sparc: fix compat recv/recvfrom syscalls
parisc: use correct compat recv/recvfrom syscalls
powerpc: restore some missing spu syscalls
parisc: use generic sys_fanotify_mark implementation
sh: rework sync_file_range ABI
csky, hexagon: fix broken sys_sync_file_range
hexagon: fix fadvise64_64 calling conventions
ftruncate: pass a signed offset
syscalls: fix compat_sys_io_pgetevents_time64 usage
syscalls: fix sys_fanotify_mark prototype
Christian A. Ehrhardt (1):
usb: typec: ucsi: Never send a lone connector change ack
Christoph Hellwig (1):
nfs: drop the incorrect assertion in nfs_swap_rw()
Christophe Leroy (1):
bpf: Take return from set_memory_ro() into account with bpf_prog_lock_ro()
Dan Carpenter (1):
usb: musb: da8xx: fix a resource leak in probe()
Daniel Borkmann (1):
bpf: Fix overrunning reservations in ringbuf
Daniil Dulov (1):
xdp: Remove WARN() from __xdp_reg_mem_model()
David Lechner (1):
counter: ti-eqep: enable clock at probe
Dawei Li (2):
net/iucv: Avoid explicit cpumask var allocation on stack net/dpaa2: Avoid explicit cpumask var allocation on stack
Denis Arefev (1):
mtd: partitions: redboot: Added conversion of operands to a larger type
Dirk Su (1):
ALSA: hda/realtek: fix mute/micmute LEDs don't work for EliteBook 645/665 G11.
Dragan Simic (1):
kbuild: Install dtb files as 0644 in Makefile.dtbinst
Elinor Montmasson (1):
ASoC: fsl-asoc-card: set priv->pdev before using it
Enguerrand de Ribaucourt (2):
net: phy: micrel: add Microchip KSZ 9477 to the device table
net: dsa: microchip: use collision based back pressure mode
Erick Archer (1):
drm/radeon/radeon_display: Decrease the size of allocated memory
FUKAUMI Naoki (1):
arm64: dts: rockchip: fix PMIC interrupt pin on ROCK Pi E
Fabrice Gasnier (1):
usb: ucsi: stm32: fix command completion handling
Fernando Yang (1):
iio: adc: ad7266: Fix variable checking bug
Greg Kroah-Hartman (2):
Revert "cpufreq: amd-pstate: Fix the inconsistency in max frequency units" Linux 6.1.97
Hagar Hemdan (1):
pinctrl: fix deadlock in create_pinctrl() when handling -EPROBE_DEFER
Hannes Reinecke (1):
nvme: fixup comment for nvme RDMA Provider Type
Heikki Krogerus (1):
usb: typec: ucsi: Ack also failed Get Error commands
Huacai Chen (1):
irqchip/loongson-liointc: Set different ISRs for different cores
Huang-Huang Bao (4):
pinctrl: rockchip: fix pinmux bits for RK3328 GPIO2-B pins
pinctrl: rockchip: fix pinmux bits for RK3328 GPIO3-B pins
pinctrl: rockchip: use dedicated pinctrl type for RK3328
pinctrl: rockchip: fix pinmux reset in rockchip_pmx_set
Ido Schimmel (1):
mlxsw: spectrum_buffers: Fix memory corruptions on Spectrum-4 systems
Ilpo Järvinen (1):
mmc: sdhci-pci: Convert PCIBIOS_* return codes to errnos
Jan Kara (1):
ocfs2: fix DIO failure due to insufficient transaction credits
Janusz Krzysztofik (1):
drm/i915/gt: Fix potential UAF by revoke of fence registers
Jean-Michel Hautbois (1):
tty: mcf: MCF54418 has 10 UARTS
Jeremy Kerr (1):
usb: gadget: aspeed_udc: fix device address configuration
Joachim Vandersmissen (1):
crypto: ecdh - explicitly zeroize private_key
Johan Hovold (1):
pinctrl: qcom: spmi-gpio: drop broken pm8008 support
Johan Jonker (1):
ARM: dts: rockchip: rk3066a: add #sound-dai-cells to hdmi node
Johannes Berg (1):
wifi: ieee80211: check for NULL in ieee80211_mle_size_ok()
John Keeping (1):
Input: ili210x - fix ili251x_read_touch_data() return value
Jonas Karlman (2):
arm64: dts: rockchip: Fix SD NAND and eMMC init on rk3308-rock-pi-s
arm64: dts: rockchip: Rename LED related pinctrl nodes on rk3308-rock-pi-s
Jose Ignacio Tornos Martinez (1):
net: usb: ax88179_178a: improve link status logs
Julia Zhang (1):
drm/amdgpu: avoid using null object of framebuffer
Juntong Deng (1):
gfs2: Fix slab-use-after-free in gfs2_qd_dealloc
Kamal Dasu (1):
mmc: sdhci-brcmstb: check R1_STATUS for erase/trim/discard
Kees Cook (1):
randomize_kstack: Remove non-functional per-arch entropy filtering
Kent Gibson (1):
gpiolib: cdev: Disallow reconfiguration without direction (uAPI v1)
Krzysztof Kozlowski (1):
dt-bindings: i2c: atmel,at91sam: correct path to i2c-controller schema
Laurent Pinchart (1):
drm/panel: ilitek-ili9881c: Fix warning with GPIO controllers that sleep
Lijo Lazar (1):
drm/amdgpu: Fix pci state save during mode-1 reset
Linus Torvalds (1):
x86: stop playing stack games in profile_pc()
Liu Ying (1):
drm/panel: simple: Add missing display timing flags for KOE TX26D202VM0BWA
Ma Ke (2):
drm/nouveau/dispnv04: fix null pointer dereference in nv17_tv_get_ld_modes drm/nouveau/dispnv04: fix null pointer dereference in nv17_tv_get_hd_modes
Mario Limonciello (2):
ACPI: x86: utils: Add Picasso to the list for forcing StorageD3Enable
ACPI: x86: Force StorageD3Enable on more products
Martin KaFai Lau (1):
bpf: Mark bpf prog stack with kmsan_unposion_memory in interpreter mode
Martin Schiller (1):
MIPS: pci: lantiq: restore reset gpio polarity
Maxime Coquelin (2):
vduse: validate block features only with block devices
vduse: Temporarily fail if control queue feature requested
Meng Li (1):
usb: dwc3: core: remove lock of otg mode during gadget suspend/resume to avoid deadlock
Naohiro Aota (1):
btrfs: zoned: fix initial free space detection
Neal Cardwell (1):
tcp: fix tcp_rcv_fastopen_synack() to enter TCP_CA_Loss for failed TFO
Nick Child (1):
ibmvnic: Free any outstanding tx skbs during scrq reset
Nikita Zhandarovich (1):
usb: atm: cxacru: fix endpoint checking in cxacru_bind()
Niklas Cassel (2):
ata: ahci: Clean up sysfs file on error
ata: libata-core: Fix double free on error
Niklas Schnelle (1):
s390/pci: Add missing virt_to_phys() for directed DIBV
Oleksij Rempel (2):
net: can: j1939: recover socket queue on CAN bus error during BAM transmission
net: can: j1939: enhanced error handling for tightly received RTS messages in xtp_rx_rts_session_new
Oliver Neukum (2):
usb: gadget: printer: SS+ support
usb: gadget: printer: fix races against disable
Oswald Buddenhagen (1):
ALSA: emux: improve patch ioctl data validation
Pablo Neira Ayuso (2):
netfilter: nf_tables: use timestamp to check for set element timeout
netfilter: nf_tables: fully validate NFT_DATA_VALUE on store to data registers
Rafael J. Wysocki (1):
cpufreq: intel_pstate: Use HWP to initialize ITMT if CPPC is missing
Ricardo Ribalda (1):
media: dvbdev: Initialize sbuf
Rob Herring (1):
dt-bindings: i2c: Drop unneeded quotes
Sean Anderson (1):
iio: xilinx-ams: Don't include ams_ctrl_channels in scan_mask
Shigeru Yoshida (1):
net: can: j1939: Initialize unused data in j1939_send_one()
Srinivasan Shanmugam (1):
drm/amd/amdgpu: Fix style errors in amdgpu_drv.c & amdgpu_device.c
Stefan Berger (1):
ima: Fix use-after-free on a dentry's dname.name
Stefan Eichenberger (2):
serial: imx: set receiver level before starting uart
serial: imx: only set receiver level if it is zero
Sven Eckelmann (1):
batman-adv: Don't accept TT entries for out-of-spec VIDs
Thomas Bogendoerfer (1):
Revert "MIPS: pci: lantiq: restore reset gpio polarity"
Tristram Ha (2):
net: dsa: microchip: fix initial port flush problem
net: dsa: microchip: fix wrong register write when masking interrupt
Udit Kumar (2):
serial: 8250_omap: Implementation of Errata i2310
serial: 8250_omap: Fix Errata i2310 with RX FIFO level check
Uros Bizjak (1):
x86/fpu: Fix AMD X86_BUG_FXSAVE_LEAK fixup
Uwe Kleine-König (1):
pwm: stm32: Refuse too small period requests
Vasileios Amoiridis (4):
iio: chemical: bme680: Fix pressure value output
iio: chemical: bme680: Fix calibration data variable
iio: chemical: bme680: Fix overflows in compensate() functions
iio: chemical: bme680: Fix sensor data read operation
Vijendar Mukunda (1):
ASoC: amd: acp: remove i2s configuration check in acp_i2s_probe()
Vitor Soares (1):
can: mcp251xfd: fix infinite loop when xmit fails
Wenchao Hao (1):
RDMA/restrack: Fix potential invalid address access
Wolfram Sang (2):
i2c: testunit: don't erase registers after STOP
i2c: testunit: discard write requests while old command is running
Yunseong Kim (1):
tracing/net_sched: NULL pointer dereference in perf_trace_qdisc_reset()
Yuntao Wang (1):
cpu/hotplug: Fix dynstate assignment in __cpuhp_setup_state_cpuslocked()
luoxuanqiang (1):
Fix race for duplicate reqsk on identical SYN
yangge (1):
mm/page_alloc: Separate THP PCP into movable and non-movable categories
Greg Kroah-Hartman
maintainerDocumentation/devicetree/bindings/i2c/amlogic,meson6-i2c.yaml +2 -2
@@ -2,8 +2,8 @@ # Copyright 2019 BayLibre, SAS %YAML 1.2 --- -$id: "http://devicetree.org/schemas/i2c/amlogic,meson6-i2c.yaml#" -$schema: "http://devicetree.org/meta-schemas/core.yaml#" +$id: http://devicetree.org/schemas/i2c/amlogic,meson6-i2c.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# title: Amlogic Meson I2C Controller
Documentation/devicetree/bindings/i2c/apple,i2c.yaml +2 -2
@@ -1,8 +1,8 @@ # SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) %YAML 1.2 --- -$id: "http://devicetree.org/schemas/i2c/apple,i2c.yaml#" -$schema: "http://devicetree.org/meta-schemas/core.yaml#" +$id: http://devicetree.org/schemas/i2c/apple,i2c.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# title: Apple/PASemi I2C controller
Documentation/devicetree/bindings/i2c/atmel,at91sam-i2c.yaml +1 -1
@@ -75,7 +75,7 @@ required: - clocks allOf: - - $ref: "i2c-controller.yaml" + - $ref: /schemas/i2c/i2c-controller.yaml# - if: properties: compatible:
Documentation/devicetree/bindings/i2c/cdns,i2c-r1p10.yaml +2 -2
@@ -1,8 +1,8 @@ # SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) %YAML 1.2 --- -$id: "http://devicetree.org/schemas/i2c/cdns,i2c-r1p10.yaml#" -$schema: "http://devicetree.org/meta-schemas/core.yaml#" +$id: http://devicetree.org/schemas/i2c/cdns,i2c-r1p10.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# title: Cadence I2C controller
Documentation/devicetree/bindings/i2c/i2c-mux-gpio.yaml +2 -2
@@ -45,7 +45,7 @@ properties: i2c-parent: description: phandle of the I2C bus that this multiplexer's master-side port is connected to - $ref: "/schemas/types.yaml#/definitions/phandle" + $ref: /schemas/types.yaml#/definitions/phandle mux-gpios: description: list of GPIOs used to control the muxer
@@ -55,7 +55,7 @@ properties: idle-state: description: Value to set the muxer to when idle. When no value is given, it defaults to the last value used. - $ref: "/schemas/types.yaml#/definitions/uint32" + $ref: /schemas/types.yaml#/definitions/uint32 allOf: - $ref: i2c-mux.yaml
Documentation/devicetree/bindings/i2c/qcom,i2c-geni-qcom.yaml +2 -2
@@ -1,8 +1,8 @@ # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) %YAML 1.2 --- -$id: "http://devicetree.org/schemas/i2c/qcom,i2c-geni-qcom.yaml#" -$schema: "http://devicetree.org/meta-schemas/core.yaml#" +$id: http://devicetree.org/schemas/i2c/qcom,i2c-geni-qcom.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# title: Qualcomm Geni based QUP I2C Controller
Documentation/devicetree/bindings/i2c/st,stm32-i2c.yaml +1 -1
@@ -90,7 +90,7 @@ properties: st,syscfg-fmp: description: Use to set Fast Mode Plus bit within SYSCFG when Fast Mode Plus speed is selected by slave. - $ref: "/schemas/types.yaml#/definitions/phandle-array" + $ref: /schemas/types.yaml#/definitions/phandle-array items: - items: - description: phandle to syscfg
Documentation/devicetree/bindings/i2c/xlnx,xps-iic-2.00.a.yaml +2 -2
@@ -1,8 +1,8 @@ # SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) %YAML 1.2 --- -$id: "http://devicetree.org/schemas/i2c/xlnx,xps-iic-2.00.a.yaml#" -$schema: "http://devicetree.org/meta-schemas/core.yaml#" +$id: http://devicetree.org/schemas/i2c/xlnx,xps-iic-2.00.a.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# title: Xilinx IIC controller
Makefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 6 PATCHLEVEL = 1 -SUBLEVEL = 96 +SUBLEVEL = 97 EXTRAVERSION = NAME = Curry Ramen
arch/arm/boot/dts/rk3066a.dtsi +1 -0
@@ -123,6 +123,7 @@ hdmi: hdmi@10116000 { pinctrl-0 = <&hdmii2c_xfer>, <&hdmi_hpd>; power-domains = <&power RK3066_PD_VIO>; rockchip,grf = <&grf>; + #sound-dai-cells = <0>; status = "disabled"; ports {
arch/arm64/boot/dts/rockchip/rk3308-rock-pi-s.dts +13 -5
@@ -5,6 +5,8 @@ */ /dts-v1/; + +#include <dt-bindings/leds/common.h> #include "rk3308.dtsi" / {
@@ -24,17 +26,21 @@ chosen { leds { compatible = "gpio-leds"; pinctrl-names = "default"; - pinctrl-0 = <&green_led_gio>, <&heartbeat_led_gpio>; + pinctrl-0 = <&green_led>, <&heartbeat_led>; green-led { + color = <LED_COLOR_ID_GREEN>; default-state = "on"; + function = LED_FUNCTION_POWER; gpios = <&gpio0 RK_PA6 GPIO_ACTIVE_HIGH>; label = "rockpis:green:power"; linux,default-trigger = "default-on"; }; blue-led { + color = <LED_COLOR_ID_BLUE>; default-state = "on"; + function = LED_FUNCTION_HEARTBEAT; gpios = <&gpio0 RK_PA5 GPIO_ACTIVE_HIGH>; label = "rockpis:blue:user"; linux,default-trigger = "heartbeat";
@@ -127,10 +133,12 @@ &cpu0 { }; &emmc { - bus-width = <4>; cap-mmc-highspeed; - mmc-hs200-1_8v; + cap-sd-highspeed; + no-sdio; non-removable; + pinctrl-names = "default"; + pinctrl-0 = <&emmc_bus8 &emmc_clk &emmc_cmd>; vmmc-supply = <&vcc_io>; status = "okay"; };
@@ -153,11 +161,11 @@ &pinctrl { pinctrl-0 = <&rtc_32k>; leds { - green_led_gio: green-led-gpio { + green_led: green-led { rockchip,pins = <0 RK_PA6 RK_FUNC_GPIO &pcfg_pull_none>; }; - heartbeat_led_gpio: heartbeat-led-gpio { + heartbeat_led: heartbeat-led { rockchip,pins = <0 RK_PA5 RK_FUNC_GPIO &pcfg_pull_none>; }; };
arch/arm64/boot/dts/rockchip/rk3328-rock-pi-e.dts +2 -2
@@ -186,8 +186,8 @@ &i2c1 { rk805: pmic@18 { compatible = "rockchip,rk805"; reg = <0x18>; - interrupt-parent = <&gpio2>; - interrupts = <6 IRQ_TYPE_LEVEL_LOW>; + interrupt-parent = <&gpio0>; + interrupts = <2 IRQ_TYPE_LEVEL_LOW>; #clock-cells = <1>; clock-output-names = "xin32k", "rk805-clkout2"; gpio-controller;
arch/arm64/boot/dts/rockchip/rk3368.dtsi +3 -0
@@ -790,6 +790,7 @@ spdif: spdif@ff880000 { dma-names = "tx"; pinctrl-names = "default"; pinctrl-0 = <&spdif_tx>; + #sound-dai-cells = <0>; status = "disabled"; };
@@ -801,6 +802,7 @@ i2s_2ch: i2s-2ch@ff890000 { clocks = <&cru SCLK_I2S_2CH>, <&cru HCLK_I2S_2CH>; dmas = <&dmac_bus 6>, <&dmac_bus 7>; dma-names = "tx", "rx"; + #sound-dai-cells = <0>; status = "disabled"; };
@@ -814,6 +816,7 @@ i2s_8ch: i2s-8ch@ff898000 { dma-names = "tx", "rx"; pinctrl-names = "default"; pinctrl-0 = <&i2s_8ch_bus>; + #sound-dai-cells = <0>; status = "disabled"; };
arch/arm64/include/asm/unistd32.h +1 -1
@@ -840,7 +840,7 @@ __SYSCALL(__NR_pselect6_time64, compat_sys_pselect6_time64)#define __NR_ppoll_time64 414 __SYSCALL(__NR_ppoll_time64, compat_sys_ppoll_time64)#define __NR_io_pgetevents_time64 416 -__SYSCALL(__NR_io_pgetevents_time64, sys_io_pgetevents) +__SYSCALL(__NR_io_pgetevents_time64, compat_sys_io_pgetevents_time64)#define __NR_recvmmsg_time64 417 __SYSCALL(__NR_recvmmsg_time64, compat_sys_recvmmsg_time64)#define __NR_mq_timedsend_time64 418
arch/arm64/kernel/syscall.c +7 -9
@@ -57,17 +57,15 @@ static void invoke_syscall(struct pt_regs *regs, unsigned int scno,syscall_set_return_value (current, regs,0 , ret);/* -* Ultimately, this value will get limited by KSTACK_OFFSET_MAX(), -* but not enough for arm64 stack utilization comfort. To keep -* reasonable stack head room, reduce the maximum offset to 9 bits. +* This value will get limited by KSTACK_OFFSET_MAX(), which is 10 +* bits. The actual entropy will be further reduced by the compiler +* when applying stack alignment constraints: the AAPCS mandates a +* 16-byte aligned SP at function boundaries, which will remove the +* 4 low bits from any entropy chosen here. * -* The actual entropy will be further reduced by the compiler when -* applying stack alignment constraints: the AAPCS mandates a -* 16-byte (i.e. 4-bit) aligned SP at function boundaries. -* -* The resulting 5 bits of entropy is seen in SP[8:4]. +* The resulting 6 bits of entropy is seen in SP[9:4]. */ -choose_random_kstack_offset (get_random_u16 () &0x1FF ); +choose_random_kstack_offset (get_random_u16 ()); }static inline bool has_syscall_work (unsigned long flags)
arch/csky/include/uapi/asm/unistd.h +1 -0
@@ -6,6 +6,7 @@#define __ARCH_WANT_SYS_CLONE3#define __ARCH_WANT_SET_GET_RLIMIT#define __ARCH_WANT_TIME32_SYSCALLS +#define __ARCH_WANT_SYNC_FILE_RANGE2#include <asm-generic/unistd.h> #define __NR_set_thread_area (__NR_arch_specific_syscall + 0)
arch/hexagon/include/asm/syscalls.h new file +6 -0
@@ -0,0 +1,6 @@ +/* SPDX-License-Identifier: GPL-2.0 */ + +#include <asm-generic/syscalls.h> + +asmlinkage long sys_hexagon_fadvise64_64 (int fd,int advice, +u32 a2,u32 a3,u32 a4,u32 a5);
arch/hexagon/include/uapi/asm/unistd.h +1 -0
@@ -36,5 +36,6 @@#define __ARCH_WANT_SYS_VFORK#define __ARCH_WANT_SYS_FORK#define __ARCH_WANT_TIME32_SYSCALLS +#define __ARCH_WANT_SYNC_FILE_RANGE2#include <asm-generic/unistd.h>
arch/hexagon/kernel/syscalltab.c +7 -0
@@ -14,6 +14,13 @@#undef __SYSCALL#define __SYSCALL (nr, call) [nr] = (call), +SYSCALL_DEFINE6 (hexagon_fadvise64_64, int, fd, int, advice, + SC_ARG64(offset), SC_ARG64(len)) +{ +return ksys_fadvise64_64 (fd,SC_VAL64 (loff_t, offset),SC_VAL64 (loff_t, len), advice); +} +#define sys_fadvise64_64 sys_hexagon_fadvise64_64 + void *sys_call_table[__NR_syscalls] = {#include <asm/unistd.h> };
arch/mips/kernel/syscalls/syscall_n32.tbl +1 -1
@@ -354,7 +354,7 @@ 412 n32 utimensat_time64 sys_utimensat 413 n32 pselect6_time64 compat_sys_pselect6_time64 414 n32 ppoll_time64 compat_sys_ppoll_time64 -416 n32 io_pgetevents_time64 sys_io_pgetevents +416 n32 io_pgetevents_time64 compat_sys_io_pgetevents_time64 417 n32 recvmmsg_time64 compat_sys_recvmmsg_time64 418 n32 mq_timedsend_time64 sys_mq_timedsend 419 n32 mq_timedreceive_time64 sys_mq_timedreceive
arch/mips/kernel/syscalls/syscall_o32.tbl +1 -1
@@ -403,7 +403,7 @@ 412 o32 utimensat_time64 sys_utimensat sys_utimensat 413 o32 pselect6_time64 sys_pselect6 compat_sys_pselect6_time64 414 o32 ppoll_time64 sys_ppoll compat_sys_ppoll_time64 -416 o32 io_pgetevents_time64 sys_io_pgetevents sys_io_pgetevents +416 o32 io_pgetevents_time64 sys_io_pgetevents compat_sys_io_pgetevents_time64 417 o32 recvmmsg_time64 sys_recvmmsg compat_sys_recvmmsg_time64 418 o32 mq_timedsend_time64 sys_mq_timedsend sys_mq_timedsend 419 o32 mq_timedreceive_time64 sys_mq_timedreceive sys_mq_timedreceive
arch/parisc/Kconfig +1 -0
@@ -14,6 +14,7 @@ config PARISC select ARCH_HAS_UBSAN_SANITIZE_ALL select ARCH_HAS_PTE_SPECIAL select ARCH_NO_SG_CHAIN + select ARCH_SPLIT_ARG64 if !64BIT select ARCH_SUPPORTS_HUGETLBFS if PA20 select ARCH_SUPPORTS_MEMORY_FAILURE select ARCH_STACKWALK
arch/parisc/kernel/sys_parisc32.c +0 -9
@@ -23,12 +23,3 @@ asmlinkage long sys32_unimplemented(int r26, int r25, int r24, int r23, current->comm, current->pid, r20);return -ENOSYS ; } - -asmlinkage long sys32_fanotify_mark (compat_int_t fanotify_fd,compat_uint_t flags, -compat_uint_t mask0,compat_uint_t mask1,compat_int_t dfd, -const char __user * pathname) -{ -return sys_fanotify_mark (fanotify_fd, flags, - ((__u64 )mask1 <<32 ) | mask0, - dfd, pathname); -}
arch/parisc/kernel/syscalls/syscall.tbl +3 -3
@@ -108,7 +108,7 @@ 95 common fchown sys_fchown 96 common getpriority sys_getpriority 97 common setpriority sys_setpriority -98 common recv sys_recv +98 common recv sys_recv compat_sys_recv 99 common statfs sys_statfs compat_sys_statfs 100 common fstatfs sys_fstatfs compat_sys_fstatfs 101 common stat64 sys_stat64
@@ -135,7 +135,7 @@ 120 common clone sys_clone_wrapper 121 common setdomainname sys_setdomainname 122 common sendfile sys_sendfile compat_sys_sendfile -123 common recvfrom sys_recvfrom +123 common recvfrom sys_recvfrom compat_sys_recvfrom 124 32 adjtimex sys_adjtimex_time32 124 64 adjtimex sys_adjtimex 125 common mprotect sys_mprotect
@@ -364,7 +364,7 @@ 320 common accept4 sys_accept4 321 common prlimit64 sys_prlimit64 322 common fanotify_init sys_fanotify_init -323 common fanotify_mark sys_fanotify_mark sys32_fanotify_mark +323 common fanotify_mark sys_fanotify_mark compat_sys_fanotify_mark 324 32 clock_adjtime sys_clock_adjtime32 324 64 clock_adjtime sys_clock_adjtime 325 common name_to_handle_at sys_name_to_handle_at
arch/powerpc/kernel/syscalls/syscall.tbl +5 -1
@@ -230,8 +230,10 @@ 178 nospu rt_sigsuspend sys_rt_sigsuspend compat_sys_rt_sigsuspend 179 32 pread64 sys_ppc_pread64 compat_sys_ppc_pread64 179 64 pread64 sys_pread64 +179 spu pread64 sys_pread64 180 32 pwrite64 sys_ppc_pwrite64 compat_sys_ppc_pwrite64 180 64 pwrite64 sys_pwrite64 +180 spu pwrite64 sys_pwrite64 181 common chown sys_chown 182 common getcwd sys_getcwd 183 common capget sys_capget
@@ -246,6 +248,7 @@ 190 common ugetrlimit sys_getrlimit compat_sys_getrlimit 191 32 readahead sys_ppc_readahead compat_sys_ppc_readahead 191 64 readahead sys_readahead +191 spu readahead sys_readahead 192 32 mmap2 sys_mmap2 compat_sys_mmap2 193 32 truncate64 sys_ppc_truncate64 compat_sys_ppc_truncate64 194 32 ftruncate64 sys_ppc_ftruncate64 compat_sys_ppc_ftruncate64
@@ -293,6 +296,7 @@ 232 nospu set_tid_address sys_set_tid_address 233 32 fadvise64 sys_ppc32_fadvise64 compat_sys_ppc32_fadvise64 233 64 fadvise64 sys_fadvise64 +233 spu fadvise64 sys_fadvise64 234 nospu exit_group sys_exit_group 235 nospu lookup_dcookie sys_lookup_dcookie compat_sys_lookup_dcookie 236 common epoll_create sys_epoll_create
@@ -502,7 +506,7 @@ 412 32 utimensat_time64 sys_utimensat sys_utimensat 413 32 pselect6_time64 sys_pselect6 compat_sys_pselect6_time64 414 32 ppoll_time64 sys_ppoll compat_sys_ppoll_time64 -416 32 io_pgetevents_time64 sys_io_pgetevents sys_io_pgetevents +416 32 io_pgetevents_time64 sys_io_pgetevents compat_sys_io_pgetevents_time64 417 32 recvmmsg_time64 sys_recvmmsg compat_sys_recvmmsg_time64 418 32 mq_timedsend_time64 sys_mq_timedsend sys_mq_timedsend 419 32 mq_timedreceive_time64 sys_mq_timedreceive sys_mq_timedreceive
arch/riscv/kernel/stacktrace.c +1 -1
@@ -156,7 +156,7 @@ unsigned long __get_wchan(struct task_struct *task)return pc; } -noinline void arch_stack_walk(stack_trace_consume_fn consume_entry, void *cookie, +noinline noinstr void arch_stack_walk(stack_trace_consume_fn consume_entry, void *cookie,struct task_struct *task,struct pt_regs *regs) {walk_stackframe (task, regs, consume_entry, cookie);
arch/s390/include/asm/entry-common.h +1 -1
@@ -55,7 +55,7 @@ static __always_inline void arch_exit_to_user_mode(void)static inline void arch_exit_to_user_mode_prepare (struct pt_regs *regs,unsigned long ti_work) { -choose_random_kstack_offset (get_tod_clock_fast () &0xff ); +choose_random_kstack_offset (get_tod_clock_fast ()); }#define arch_exit_to_user_mode_prepare arch_exit_to_user_mode_prepare
arch/s390/kernel/syscalls/syscall.tbl +1 -1
@@ -418,7 +418,7 @@ 412 32 utimensat_time64 - sys_utimensat 413 32 pselect6_time64 - compat_sys_pselect6_time64 414 32 ppoll_time64 - compat_sys_ppoll_time64 -416 32 io_pgetevents_time64 - sys_io_pgetevents +416 32 io_pgetevents_time64 - compat_sys_io_pgetevents_time64 417 32 recvmmsg_time64 - compat_sys_recvmmsg_time64 418 32 mq_timedsend_time64 - sys_mq_timedsend 419 32 mq_timedreceive_time64 - sys_mq_timedreceive
arch/s390/pci/pci_irq.c +1 -1
@@ -410,7 +410,7 @@ static void __init cpu_enable_directed_irq(void *unused)union zpci_sic_iib iib = {{0 }};union zpci_sic_iib ziib = {{0 }}; - iib.cdiib.dibv_addr = (u64 ) zpci_ibv[smp_processor_id ()]->vector; + iib.cdiib.dibv_addr =virt_to_phys (zpci_ibv[smp_processor_id ()]->vector);zpci_set_irq_ctrl (SIC_IRQ_MODE_SET_CPU ,0 , &iib);zpci_set_irq_ctrl (SIC_IRQ_MODE_D_SINGLE ,PCI_ISC , &ziib);
arch/sh/kernel/sys_sh32.c +11 -0
@@ -59,3 +59,14 @@ asmlinkage int sys_fadvise64_64_wrapper(int fd, u32 offset0, u32 offset1, (u64)len0 << 32 | len1, advice);#endif } + +/* +* swap the arguments the way that libc wants them instead of +* moving flags ahead of the 64-bit nbytes argument +*/ +SYSCALL_DEFINE6 (sh_sync_file_range6, int, fd,SC_ARG64 (offset), + SC_ARG64(nbytes), unsigned int, flags) +{ +return ksys_sync_file_range (fd,SC_VAL64 (loff_t, offset), +SC_VAL64 (loff_t, nbytes), flags); +}
arch/sh/kernel/syscalls/syscall.tbl +2 -1
@@ -321,7 +321,7 @@ 311 common set_robust_list sys_set_robust_list 312 common get_robust_list sys_get_robust_list 313 common splice sys_splice -314 common sync_file_range sys_sync_file_range +314 common sync_file_range sys_sh_sync_file_range6 315 common tee sys_tee 316 common vmsplice sys_vmsplice 317 common move_pages sys_move_pages
@@ -395,6 +395,7 @@ 385 common pkey_alloc sys_pkey_alloc 386 common pkey_free sys_pkey_free 387 common rseq sys_rseq +388 common sync_file_range2 sys_sync_file_range2 # room for arch specific syscalls 393 common semget sys_semget 394 common semctl sys_semctl
arch/sparc/kernel/sys32.S +0 -221
224 lines not on this page · raw message
arch/sparc/kernel/syscalls/syscall.tbl +4 -4
@@ -117,7 +117,7 @@ 90 common dup2 sys_dup2 91 32 setfsuid32 sys_setfsuid 92 common fcntl sys_fcntl compat_sys_fcntl -93 common select sys_select +93 common select sys_select compat_sys_select 94 32 setfsgid32 sys_setfsgid 95 common fsync sys_fsync 96 common setpriority sys_setpriority
@@ -155,7 +155,7 @@ 123 32 fchown sys_fchown16 123 64 fchown sys_fchown 124 common fchmod sys_fchmod -125 common recvfrom sys_recvfrom +125 common recvfrom sys_recvfrom compat_sys_recvfrom 126 32 setreuid sys_setreuid16 126 64 setreuid sys_setreuid 127 32 setregid sys_setregid16
@@ -247,7 +247,7 @@ 204 32 readdir sys_old_readdir compat_sys_old_readdir 204 64 readdir sys_nis_syscall 205 common readahead sys_readahead compat_sys_readahead -206 common socketcall sys_socketcall sys32_socketcall +206 common socketcall sys_socketcall compat_sys_socketcall 207 common syslog sys_syslog 208 common lookup_dcookie sys_lookup_dcookie compat_sys_lookup_dcookie 209 common fadvise64 sys_fadvise64 compat_sys_fadvise64
@@ -461,7 +461,7 @@ 412 32 utimensat_time64 sys_utimensat sys_utimensat 413 32 pselect6_time64 sys_pselect6 compat_sys_pselect6_time64 414 32 ppoll_time64 sys_ppoll compat_sys_ppoll_time64 -416 32 io_pgetevents_time64 sys_io_pgetevents sys_io_pgetevents +416 32 io_pgetevents_time64 sys_io_pgetevents compat_sys_io_pgetevents_time64 417 32 recvmmsg_time64 sys_recvmmsg compat_sys_recvmmsg_time64 418 32 mq_timedsend_time64 sys_mq_timedsend sys_mq_timedsend 419 32 mq_timedreceive_time64 sys_mq_timedreceive sys_mq_timedreceive
arch/x86/entry/syscalls/syscall_32.tbl +1 -1
@@ -420,7 +420,7 @@ 412 i386 utimensat_time64 sys_utimensat 413 i386 pselect6_time64 sys_pselect6 compat_sys_pselect6_time64 414 i386 ppoll_time64 sys_ppoll compat_sys_ppoll_time64 -416 i386 io_pgetevents_time64 sys_io_pgetevents +416 i386 io_pgetevents_time64 sys_io_pgetevents compat_sys_io_pgetevents_time64 417 i386 recvmmsg_time64 sys_recvmmsg compat_sys_recvmmsg_time64 418 i386 mq_timedsend_time64 sys_mq_timedsend 419 i386 mq_timedreceive_time64 sys_mq_timedreceive
arch/x86/include/asm/efi.h +11 -0
@@ -416,6 +416,17 @@ static inline void efi_fake_memmap_early(void) }#endif +extern int __init efi_memmap_alloc (unsigned int num_entries, +struct efi_memory_map_data *data); +extern void __efi_memmap_free (u64 phys,unsigned long size, +unsigned long flags); + +extern int __init efi_memmap_install (struct efi_memory_map_data *data); +extern int __init efi_memmap_split_count (efi_memory_desc_t *md, +struct range *range); +extern void __init efi_memmap_insert (struct efi_memory_map *old_memmap, +void *buf,struct efi_mem_range *mem); +#define arch_ima_efi_boot_mode \ ({ extern struct boot_params boot_params; boot_params.secure_boot; })
arch/x86/include/asm/entry-common.h +6 -9
@@ -73,19 +73,16 @@ static inline void arch_exit_to_user_mode_prepare(struct pt_regs *regs,#endif /* -* Ultimately, this value will get limited by KSTACK_OFFSET_MAX(), -* but not enough for x86 stack utilization comfort. To keep -* reasonable stack head room, reduce the maximum offset to 8 bits. -* -* The actual entropy will be further reduced by the compiler when -* applying stack alignment constraints (see cc_stack_align4/8 in +* This value will get limited by KSTACK_OFFSET_MAX(), which is 10 +* bits. The actual entropy will be further reduced by the compiler +* when applying stack alignment constraints (see cc_stack_align4/8 in * arch/x86/Makefile), which will remove the 3 (x86_64) or 2 (ia32) * low bits from any entropy chosen here. * -* Therefore, final stack offset entropy will be 5 (x86_64) or -* 6 (ia32) bits. +* Therefore, final stack offset entropy will be 7 (x86_64) or +* 8 (ia32) bits. */ -choose_random_kstack_offset (rdtsc () &0xFF ); +choose_random_kstack_offset (rdtsc ()); }#define arch_exit_to_user_mode_prepare arch_exit_to_user_mode_prepare
arch/x86/kernel/fpu/core.c +2 -2
@@ -145,8 +145,8 @@ void restore_fpregs_from_fpstate(struct fpstate *fpstate, u64 mask) asmvolatile ("fnclex\n\t" "emms\n\t" -"fildl %P[addr]" /* set F?P to defined value */ - : : [addr]"m" (fpstate)); +"fildl %[addr]" /* set F?P to defined value */ + : : [addr]"m" (*fpstate)); }if (use_xsave ()) {
arch/x86/kernel/time.c +1 -19
@@ -27,25 +27,7 @@unsigned long profile_pc (struct pt_regs *regs) { -unsigned long pc =instruction_pointer (regs); - -if (!user_mode (regs) &&in_lock_functions (pc)) { -#ifdef CONFIG_FRAME_POINTER -return *(unsigned long *)(regs->bp +sizeof (long )); -#else -unsigned long *sp = (unsigned long *)regs->sp; -/* -* Return address is either directly at stack pointer -* or above a saved flags. Eflags has bits 22-31 zero, -* kernel addresses don't. -*/ -if (sp[0 ] >>22 ) -return sp[0 ]; -if (sp[1 ] >>22 ) -return sp[1 ]; -#endif - } -return pc; +return instruction_pointer (regs); }EXPORT_SYMBOL (profile_pc);
arch/x86/platform/efi/Makefile +2 -1
@@ -2,5 +2,6 @@ KASAN_SANITIZE := n GCOV_PROFILE := n -obj-$(CONFIG_EFI) += quirks.o efi.o efi_$(BITS).o efi_stub_$(BITS).o +obj-$(CONFIG_EFI) += memmap.o quirks.o efi.o efi_$(BITS).o \ + efi_stub_$(BITS).o obj-$(CONFIG_EFI_MIXED) += efi_thunk_$(BITS).o
arch/x86/platform/efi/efi.c +5 -3
@@ -214,9 +214,11 @@ int __init efi_memblock_x86_reserve_range(void) data.desc_size = e->efi_memdesc_size; data.desc_version = e->efi_memdesc_version; - rv =efi_memmap_init_early (&data); -if (rv) -return rv; +if (!efi_enabled (EFI_PARAVIRT )) { + rv =efi_memmap_init_early (&data); +if (rv) +return rv; + }if (add_efi_memmap ||do_efi_soft_reserve ())do_add_efi_memmap ();
arch/x86/platform/efi/memmap.c new file +249 -0
249 lines not on this page · raw message
crypto/ecdh.c +2 -0
@@ -33,6 +33,8 @@ static int ecdh_set_secret(struct crypto_kpp *tfm, const void *buf, params.key_size > sizeof(u64) * ctx->ndigits)return -EINVAL ; +memset (ctx->private_key,0 ,sizeof (ctx->private_key)); +if (!params.key || !params.key_size)return ecc_gen_privkey (ctx->curve_id, ctx->ndigits, ctx->private_key);
drivers/acpi/x86/utils.c +10 -13
@@ -188,16 +188,16 @@ bool acpi_device_override_status(struct acpi_device *adev, unsigned long long *s }/* -* AMD systems from Renoir and Lucienne *require* that the NVME controller +* AMD systems from Renoir onwards *require* that the NVME controller * is put into D3 over a Modern Standby / suspend-to-idle cycle. * * This is "typically" accomplished using the `StorageD3Enable` * property in the _DSD that is checked via the `acpi_storage_d3` function -* but this property was introduced after many of these systems launched -* and most OEM systems don't have it in their BIOS. +* but some OEM systems still don't have it in their BIOS. * * The Microsoft documentation for StorageD3Enable mentioned that Windows has -* a hardcoded allowlist for D3 support, which was used for these platforms. +* a hardcoded allowlist for D3 support as well as a registry key to override +* the BIOS, which has been used for these cases. * * This allows quirking on Linux in a similar fashion. *
@@ -210,18 +210,15 @@ bool acpi_device_override_status(struct acpi_device *adev, unsigned long long *s* https://bugzilla.kernel.org/show_bug.cgi?id=216773 * https://bugzilla.kernel.org/show_bug.cgi?id=217003 * 2) On at least one HP system StorageD3Enable is missing on the second NVME -disk in the system. +* disk in the system. +* 3) On at least one HP Rembrandt system StorageD3Enable is missing on the only +* NVME device. */ -static const struct x86_cpu_id storage_d3_cpu_ids[] = { -X86_MATCH_VENDOR_FAM_MODEL (AMD ,23 ,96 ,NULL ),/* Renoir */ -X86_MATCH_VENDOR_FAM_MODEL (AMD ,23 ,104 ,NULL ),/* Lucienne */ -X86_MATCH_VENDOR_FAM_MODEL (AMD ,25 ,80 ,NULL ),/* Cezanne */ - {} -}; -bool force_storage_d3 (void ) { -return x86_match_cpu (storage_d3_cpu_ids); +if (!cpu_feature_enabled (X86_FEATURE_ZEN )) +return false; +return acpi_gbl_FADT.flags &ACPI_FADT_LOW_POWER_S0 ; }/*
drivers/ata/ahci.c +12 -5
@@ -1891,8 +1891,10 @@ static int ahci_init_one(struct pci_dev *pdev, const struct pci_device_id *ent) n_ports =max (ahci_nr_ports (hpriv->cap),fls (hpriv->port_map)); host =ata_host_alloc_pinfo (&pdev->dev, ppi, n_ports); -if (!host) -return -ENOMEM ; +if (!host) { + rc = -ENOMEM ; + goto err_rm_sysfs_file; + } host->private_data = hpriv;if (ahci_init_msi (pdev, n_ports, hpriv) <0 ) {
@@ -1945,11 +1947,11 @@ static int ahci_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)/* initialize adapter */ rc =ahci_configure_dma_masks (pdev, hpriv);if (rc) -return rc; + goto err_rm_sysfs_file; rc =ahci_pci_reset_controller (host);if (rc) -return rc; + goto err_rm_sysfs_file;ahci_pci_init_controller (host);ahci_pci_print_info (host);
@@ -1958,10 +1960,15 @@ static int ahci_init_one(struct pci_dev *pdev, const struct pci_device_id *ent) rc =ahci_host_activate (host, &ahci_sht);if (rc) -return rc; + goto err_rm_sysfs_file;pm_runtime_put_noidle (&pdev->dev);return 0 ; + +err_rm_sysfs_file: +sysfs_remove_file_from_group (&pdev->dev.kobj, + &dev_attr_remapped_nvme.attr,NULL ); +return rc; }static void ahci_shutdown_one (struct pci_dev *pdev)
drivers/ata/libata-core.c +4 -4
@@ -5523,8 +5523,10 @@ struct ata_host *ata_host_alloc(struct device *dev, int max_ports)if (!host)return NULL ; -if (!devres_open_group (dev,NULL ,GFP_KERNEL )) - goto err_free; +if (!devres_open_group (dev,NULL ,GFP_KERNEL )) { +kfree (host); +return NULL ; + } dr =devres_alloc (ata_devres_release,0 ,GFP_KERNEL );if (!dr)
@@ -5556,8 +5558,6 @@ struct ata_host *ata_host_alloc(struct device *dev, int max_ports) err_out:devres_release_group (dev,NULL ); - err_free: -kfree (host);return NULL ; }EXPORT_SYMBOL_GPL (ata_host_alloc);
drivers/counter/ti-eqep.c +6 -0
@@ -6,6 +6,7 @@*/ #include <linux/bitops.h> +#include <linux/clk.h> #include <linux/counter.h> #include <linux/kernel.h> #include <linux/mod_devicetable.h>
@@ -376,6 +377,7 @@ static int ti_eqep_probe(struct platform_device *pdev)struct counter_device *counter;struct ti_eqep_cnt *priv;void __iomem *base; +struct clk *clk;int err; counter =devm_counter_alloc (dev,sizeof (*priv));
@@ -415,6 +417,10 @@ static int ti_eqep_probe(struct platform_device *pdev)pm_runtime_enable (dev);pm_runtime_get_sync (dev); + clk =devm_clk_get_enabled (dev,NULL ); +if (IS_ERR (clk)) +return dev_err_probe (dev,PTR_ERR (clk),"failed to enable clock\n" ); + err =counter_add (counter);if (err <0 ) {pm_runtime_put_sync (dev);
drivers/cpufreq/amd-pstate.c +1 -1
@@ -424,7 +424,7 @@ static int amd_pstate_set_boost(struct cpufreq_policy *policy, int state)if (state) policy->cpuinfo.max_freq = cpudata->max_freq;else - policy->cpuinfo.max_freq = cpudata->nominal_freq *1000 ; + policy->cpuinfo.max_freq = cpudata->nominal_freq; policy->max = policy->cpuinfo.max_freq;
drivers/cpufreq/intel_pstate.c +6 -7
@@ -348,15 +348,14 @@ static void intel_pstate_set_itmt_prio(int cpu)int ret; ret =cppc_get_perf_caps (cpu, &cppc_perf); -if (ret) -return ; -/* -* On some systems with overclocking enabled, CPPC.highest_perf is hardcoded to 0xff. -* In this case we can't use CPPC.highest_perf to enable ITMT. -* In this case we can look at MSR_HWP_CAPABILITIES bits [8:0] to decide. +* If CPPC is not available, fall back to MSR_HWP_CAPABILITIES bits [8:0]. +* +* Also, on some systems with overclocking enabled, CPPC.highest_perf is +* hardcoded to 0xff, so CPPC.highest_perf cannot be used to enable ITMT. +* Fall back to MSR_HWP_CAPABILITIES then too. */ -if (cppc_perf.highest_perf ==CPPC_MAX_PERF ) +if (ret || cppc_perf.highest_perf ==CPPC_MAX_PERF ) cppc_perf.highest_perf =HWP_HIGHEST_PERF (READ_ONCE (all_cpu_data[cpu]->hwp_cap_cached));/*
drivers/firmware/efi/fdtparams.c +4 -0
@@ -30,11 +30,13 @@ static __initconst const char name[][22] = {static __initconst const struct {const char path[17 ]; +u8 paravirt;const char params[PARAMCOUNT ][26 ]; } dt_params[] = { { #ifdef CONFIG_XEN // <-------17------> .path ="/hypervisor/uefi" , + .paravirt =1 , .params = { [SYSTAB ] ="xen,uefi-system-table" , [MMBASE ] ="xen,uefi-mmap-start" ,
@@ -121,6 +123,8 @@ u64 __init efi_get_fdt_params(struct efi_memory_map_data *mm)pr_err ("Can't find property '%s' in DT!\n" , pname);return 0 ; } +if (dt_params[i].paravirt) +set_bit (EFI_PARAVIRT , &efi.flags);return systab; } notfound:
drivers/firmware/efi/memmap.c +3 -235
266 lines not on this page · raw message
drivers/gpio/gpio-davinci.c +5 -0
@@ -230,6 +230,11 @@ static int davinci_gpio_probe(struct platform_device *pdev)else nirq =DIV_ROUND_UP (ngpio,16 ); +if (nirq >MAX_INT_PER_BANK ) { +dev_err (dev,"Too many IRQs!\n" ); +return -EINVAL ; + } + chips =devm_kzalloc (dev,sizeof (*chips),GFP_KERNEL );if (!chips)return -ENOMEM ;
drivers/gpio/gpiolib-cdev.c +10 -6
@@ -132,6 +132,10 @@ struct linehandle_state { GPIOHANDLE_REQUEST_OPEN_DRAIN | \ GPIOHANDLE_REQUEST_OPEN_SOURCE) +#define GPIOHANDLE_REQUEST_DIRECTION_FLAGS \ + (GPIOHANDLE_REQUEST_INPUT | \ + GPIOHANDLE_REQUEST_OUTPUT) +static int linehandle_validate_flags (u32 flags) {/* Return an error if an unknown flag is set */
@@ -212,21 +216,21 @@ static long linehandle_set_config(struct linehandle_state *lh,if (ret)return ret; +/* Lines must be reconfigured explicitly as input or output. */ +if (!(lflags &GPIOHANDLE_REQUEST_DIRECTION_FLAGS )) +return -EINVAL ; +for (i =0 ; i < lh->num_descs; i++) { desc = lh->descs[i]; -linehandle_flags_to_desc_flags (gcnf.flags, &desc->flags); +linehandle_flags_to_desc_flags (lflags, &desc->flags); -/* -* Lines have to be requested explicitly for input -* or output, else the line will be treated "as is". -*/ if (lflags &GPIOHANDLE_REQUEST_OUTPUT ) {int val = !!gcnf.default_values[i]; ret =gpiod_direction_output (desc, val);if (ret)return ret; - }else if (lflags &GPIOHANDLE_REQUEST_INPUT ) { + }else { ret =gpiod_direction_input (desc);if (ret)return ret;
drivers/gpu/drm/amd/amdgpu/amdgpu_atomfirmware.c +1 -1
@@ -387,7 +387,7 @@ amdgpu_atomfirmware_get_vram_info(struct amdgpu_device *adev, mem_channel_number = vram_info->v30.channel_num; mem_channel_width = vram_info->v30.channel_width;if (vram_width) - *vram_width = mem_channel_number * (1 << mem_channel_width); + *vram_width = mem_channel_number *16 ;break ;default :return -EINVAL ;
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c +36 -32
114 lines not on this page · raw message
drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c +1 -1
@@ -1662,7 +1662,7 @@ static const u16 amdgpu_unsupported_pciidlist[] = { };static const struct pci_device_id pciidlist[] = { -#ifdef CONFIG_DRM_AMDGPU_SI +#ifdef CONFIG_DRM_AMDGPU_SI {0x1002 ,0x6780 ,PCI_ANY_ID ,PCI_ANY_ID ,0 ,0 ,CHIP_TAHITI }, {0x1002 ,0x6784 ,PCI_ANY_ID ,PCI_ANY_ID ,0 ,0 ,CHIP_TAHITI }, {0x1002, 0x6788, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_TAHITI},
drivers/gpu/drm/amd/amdgpu/amdgpu_vkms.c +16 -2
@@ -2,6 +2,7 @@#include <drm/drm_atomic_helper.h> #include <drm/drm_simple_kms_helper.h> +#include <drm/drm_gem_framebuffer_helper.h> #include <drm/drm_vblank.h> #include "amdgpu.h"
@@ -313,7 +314,13 @@ static int amdgpu_vkms_prepare_fb(struct drm_plane *plane,return 0 ; } afb =to_amdgpu_framebuffer (new_state->fb); - obj = new_state->fb->obj[0 ]; + + obj =drm_gem_fb_get_obj (new_state->fb,0 ); +if (!obj) { +DRM_ERROR ("Failed to get obj from framebuffer\n" ); +return -EINVAL ; + } + rbo =gem_to_amdgpu_bo (obj); adev =amdgpu_ttm_adev (rbo->tbo.bdev);
@@ -367,12 +374,19 @@ static void amdgpu_vkms_cleanup_fb(struct drm_plane *plane, struct drm_plane_state *old_state) {struct amdgpu_bo *rbo; +struct drm_gem_object *obj;int r;if (!old_state->fb)return ; - rbo =gem_to_amdgpu_bo (old_state->fb->obj[0 ]); + obj =drm_gem_fb_get_obj (old_state->fb,0 ); +if (!obj) { +DRM_ERROR ("Failed to get obj from framebuffer\n" ); +return ; + } + + rbo =gem_to_amdgpu_bo (obj); r =amdgpu_bo_reserve (rbo, false);if (unlikely (r)) {DRM_ERROR ("failed to reserve rbo before unpin\n" );
drivers/gpu/drm/i915/gt/intel_ggtt_fencing.c +1 -0
@@ -296,6 +296,7 @@ void i915_vma_revoke_fence(struct i915_vma *vma)return ;GEM_BUG_ON (fence->vma != vma); +i915_active_wait (&fence->active);GEM_BUG_ON (!i915_active_is_idle (&fence->active));GEM_BUG_ON (atomic_read (&fence->pin_count));
drivers/gpu/drm/nouveau/dispnv04/tvnv17.c +6 -0
@@ -208,6 +208,8 @@ static int nv17_tv_get_ld_modes(struct drm_encoder *encoder,struct drm_display_mode *mode; mode =drm_mode_duplicate (encoder->dev, tv_mode); +if (!mode) +continue ; mode->clock = tv_norm->tv_enc_mode.vrefresh * mode->htotal / 1000 *
@@ -257,6 +259,8 @@ static int nv17_tv_get_hd_modes(struct drm_encoder *encoder,if (modes[i].hdisplay == output_mode->hdisplay && modes[i].vdisplay == output_mode->vdisplay) { mode =drm_mode_duplicate (encoder->dev, output_mode); +if (!mode) +continue ; mode->type |=DRM_MODE_TYPE_PREFERRED ; }else {
@@ -264,6 +268,8 @@ static int nv17_tv_get_hd_modes(struct drm_encoder *encoder, modes[i].vdisplay,60 , false, (output_mode->flags & DRM_MODE_FLAG_INTERLACE), false); +if (!mode) +continue ; }/* CVT modes are sometimes unsuitable... */
drivers/gpu/drm/panel/panel-ilitek-ili9881c.c +3 -3
@@ -716,10 +716,10 @@ static int ili9881c_prepare(struct drm_panel *panel)msleep (5 );/* And reset it */ -gpiod_set_value (ctx->reset,1 ); +gpiod_set_value_cansleep (ctx->reset,1 );msleep (20 ); -gpiod_set_value (ctx->reset,0 ); +gpiod_set_value_cansleep (ctx->reset,0 );msleep (20 );for (i =0 ; i < ctx->desc->init_length; i++) {
@@ -774,7 +774,7 @@ static int ili9881c_unprepare(struct drm_panel *panel)mipi_dsi_dcs_enter_sleep_mode (ctx->dsi);regulator_disable (ctx->power); -gpiod_set_value (ctx->reset,1 ); +gpiod_set_value_cansleep (ctx->reset,1 );return 0 ; }
drivers/gpu/drm/panel/panel-simple.c +1 -0
@@ -2371,6 +2371,7 @@ static const struct display_timing koe_tx26d202vm0bwa_timing = { .vfront_porch = { 3, 5, 10 }, .vback_porch = { 2, 5, 10 }, .vsync_len = { 5, 5, 5 }, + .flags = DISPLAY_FLAGS_DE_HIGH, }; static const struct panel_desc koe_tx26d202vm0bwa = {
drivers/gpu/drm/radeon/radeon.h +0 -1
@@ -131,7 +131,6 @@ extern int radeon_cik_support;/* RADEON_IB_POOL_SIZE must be a power of 2 */ #define RADEON_IB_POOL_SIZE 16#define RADEON_DEBUGFS_MAX_COMPONENTS 32 -#define RADEONFB_CONN_LIMIT 4#define RADEON_BIOS_NUM_SCRATCH 8/* internal ring indices */
drivers/gpu/drm/radeon/radeon_display.c +1 -7
@@ -683,7 +683,7 @@ static void radeon_crtc_init(struct drm_device *dev, int index)struct radeon_device *rdev = dev->dev_private;struct radeon_crtc *radeon_crtc; - radeon_crtc =kzalloc (sizeof (struct radeon_crtc ) + (RADEONFB_CONN_LIMIT *sizeof (struct drm_connector *)),GFP_KERNEL ); + radeon_crtc =kzalloc (sizeof (*radeon_crtc),GFP_KERNEL );if (radeon_crtc ==NULL )return ;
@@ -709,12 +709,6 @@ static void radeon_crtc_init(struct drm_device *dev, int index) dev->mode_config.cursor_width = radeon_crtc->max_cursor_width; dev->mode_config.cursor_height = radeon_crtc->max_cursor_height; -#if 0 - radeon_crtc->mode_set.crtc = &radeon_crtc->base; - radeon_crtc->mode_set.connectors = (struct drm_connector **)(radeon_crtc +1 ); - radeon_crtc->mode_set.num_connectors =0 ; -#endif -if (rdev->is_atom_bios && (ASIC_IS_AVIVO (rdev) || radeon_r4xx_atom))radeon_atombios_init_crtc (dev, radeon_crtc);else
drivers/i2c/i2c-slave-testunit.c +4 -1
@@ -118,9 +118,12 @@ static int i2c_slave_testunit_slave_cb(struct i2c_client *client,queue_delayed_work (system_long_wq, &tu->worker,msecs_to_jiffies (10 * tu->regs[TU_REG_DELAY ])); } - fallthrough; +break ;case I2C_SLAVE_WRITE_REQUESTED : +if (test_bit (TU_FLAG_IN_PROCESS , &tu->flags)) +return -EBUSY ; +memset (tu->regs,0 ,TU_NUM_REGS ); tu->reg_idx =0 ;break ;
drivers/iio/accel/Kconfig +2 -0
@@ -325,6 +325,8 @@ config DMARD10 config FXLS8962AF tristate depends on I2C || !I2C # cannot be built-in for modular I2C + select IIO_BUFFER + select IIO_KFIFO_BUF config FXLS8962AF_I2C tristate "NXP FXLS8962AF/FXLS8964AF Accelerometer I2C Driver"
drivers/iio/adc/ad7266.c +2 -0
@@ -157,6 +157,8 @@ static int ad7266_read_raw(struct iio_dev *indio_dev, ret =ad7266_read_single (st, val, chan->address);iio_device_release_direct_mode (indio_dev); +if (ret <0 ) +return ret; *val = (*val >>2 ) &0xfff ;if (chan->scan_type.sign =='s' ) *val = sign_extend32(*val,
drivers/iio/adc/xilinx-ams.c +6 -2
@@ -414,8 +414,12 @@ static void ams_enable_channel_sequence(struct iio_dev *indio_dev)/* Run calibration of PS & PL as part of the sequence */ scan_mask =BIT (0 ) |BIT (AMS_PS_SEQ_MAX ); -for (i =0 ; i < indio_dev->num_channels; i++) - scan_mask |=BIT_ULL (indio_dev->channels[i].scan_index); +for (i =0 ; i < indio_dev->num_channels; i++) { +const struct iio_chan_spec *chan = &indio_dev->channels[i]; + +if (chan->scan_index <AMS_CTRL_SEQ_BASE ) + scan_mask |=BIT_ULL (chan->scan_index); + }if (ams->ps_base) {/* put sysmon in a soft reset to change the sequence */
drivers/iio/chemical/bme680.h +2 -0
@@ -54,7 +54,9 @@#define BME680_NB_CONV_MASK GENMASK(3, 0)#define BME680_REG_MEAS_STAT_0 0x1D +#define BME680_NEW_DATA_BIT BIT(7)#define BME680_GAS_MEAS_BIT BIT(6) +#define BME680_MEAS_BIT BIT(5)/* Calibration Parameters */ #define BME680_T2_LSB_REG 0x8A
drivers/iio/chemical/bme680_core.c +54 -8
125 lines not on this page · raw message
drivers/infiniband/core/restrack.c +1 -50
70 lines not on this page · raw message
drivers/input/touchscreen/ili210x.c +2 -2
@@ -261,8 +261,8 @@ static int ili251x_read_touch_data(struct i2c_client *client, u8 *data)if (!error && data[0 ] ==2 ) { error =i2c_master_recv (client, data +ILI251X_DATA_SIZE1 ,ILI251X_DATA_SIZE2 ); -if (error >=0 && error !=ILI251X_DATA_SIZE2 ) - error = -EIO ; +if (error >=0 ) + error = error ==ILI251X_DATA_SIZE2 ?0 : -EIO ; }return error;
drivers/irqchip/irq-loongson-liointc.c +2 -2
@@ -28,7 +28,7 @@#define LIOINTC_INTC_CHIP_START 0x20 -#define LIOINTC_REG_INTC_STATUS (LIOINTC_INTC_CHIP_START + 0x20) +#define LIOINTC_REG_INTC_STATUS (core) (LIOINTC_INTC_CHIP_START + 0x20 + (core) * 8)#define LIOINTC_REG_INTC_EN_STATUS (LIOINTC_INTC_CHIP_START + 0x04)#define LIOINTC_REG_INTC_ENABLE (LIOINTC_INTC_CHIP_START + 0x08)#define LIOINTC_REG_INTC_DISABLE (LIOINTC_INTC_CHIP_START + 0x0c)
@@ -196,7 +196,7 @@ static int liointc_init(phys_addr_t addr, unsigned long size, int revision, goto out_free_priv;for (i =0 ; i <LIOINTC_NUM_CORES ; i++) - priv->core_isr[i] = base +LIOINTC_REG_INTC_STATUS ; + priv->core_isr[i] = base +LIOINTC_REG_INTC_STATUS (i);for (i =0 ; i <LIOINTC_NUM_PARENT ; i++) priv->handler[i].parent_int_map = parent_int_map[i];
drivers/media/dvb-core/dvbdev.c +1 -1
@@ -964,7 +964,7 @@ int dvb_usercopy(struct file *file,int (*func)(struct file *file, unsigned int cmd, void *arg)) { -char sbuf[128 ]; +char sbuf[128 ] = {};void *mbuf =NULL ;void *parg =NULL ;int err = -EINVAL ;
drivers/mmc/host/sdhci-brcmstb.c +4 -0
@@ -23,6 +23,7 @@#define BRCMSTB_MATCH_FLAGS_NO_64BIT BIT(0)#define BRCMSTB_MATCH_FLAGS_BROKEN_TIMEOUT BIT(1)#define BRCMSTB_MATCH_FLAGS_HAS_CLOCK_GATE BIT(2) +#define BRCMSTB_MATCH_FLAGS_USE_CARD_BUSY BIT(4)#define BRCMSTB_PRIV_FLAGS_HAS_CQE BIT(0)#define BRCMSTB_PRIV_FLAGS_GATE_CLOCK BIT(1)
@@ -335,6 +336,9 @@ static int sdhci_brcmstb_probe(struct platform_device *pdev)if (match_priv->flags &BRCMSTB_MATCH_FLAGS_BROKEN_TIMEOUT ) host->quirks |=SDHCI_QUIRK_BROKEN_TIMEOUT_VAL ; +if (!(match_priv->flags &BRCMSTB_MATCH_FLAGS_USE_CARD_BUSY )) + host->mmc_host_ops.card_busy =NULL ; +/* Change the base clock frequency if the DT property exists */ if (device_property_read_u32 (&pdev->dev,"clock-frequency" , &priv->base_freq_hz) !=0 )
drivers/mmc/host/sdhci-pci-core.c +7 -4
@@ -1330,7 +1330,7 @@ static int jmicron_pmos(struct sdhci_pci_chip *chip, int on) ret =pci_read_config_byte (chip->pdev,0xAE , &scratch);if (ret) -return ret; + goto fail;/* * Turn PMOS on [bit 0], set over current detection to 2.4 V
@@ -1341,7 +1341,10 @@ static int jmicron_pmos(struct sdhci_pci_chip *chip, int on)else scratch &= ~0x47 ; -return pci_write_config_byte (chip->pdev,0xAE , scratch); + ret =pci_write_config_byte (chip->pdev,0xAE , scratch); + +fail: +return pcibios_err_to_errno (ret); }static int jmicron_probe (struct sdhci_pci_chip *chip)
@@ -2201,7 +2204,7 @@ static int sdhci_pci_probe(struct pci_dev *pdev, ret =pci_read_config_byte (pdev,PCI_SLOT_INFO , &slots);if (ret) -return ret; +return pcibios_err_to_errno (ret); slots =PCI_SLOT_INFO_SLOTS (slots) +1 ;dev_dbg (&pdev->dev,"found %d slot(s)\n" , slots);
@@ -2210,7 +2213,7 @@ static int sdhci_pci_probe(struct pci_dev *pdev, ret =pci_read_config_byte (pdev,PCI_SLOT_INFO , &first_bar);if (ret) -return ret; +return pcibios_err_to_errno (ret); first_bar &=PCI_SLOT_INFO_FIRST_BAR_MASK ;
drivers/mmc/host/sdhci.c +14 -11
@@ -2539,26 +2539,29 @@ EXPORT_SYMBOL_GPL(sdhci_get_cd_nogpio);static int sdhci_check_ro (struct sdhci_host *host) { -unsigned long flags; +bool allow_invert = false;int is_readonly; -spin_lock_irqsave (&host->lock, flags); - -if (host->flags &SDHCI_DEVICE_DEAD ) +if (host->flags &SDHCI_DEVICE_DEAD ) { is_readonly =0 ; -else if (host->ops->get_ro) + }else if (host->ops->get_ro) { is_readonly = host->ops->get_ro (host); -else if (mmc_can_gpio_ro (host->mmc)) + }else if (mmc_can_gpio_ro (host->mmc)) { is_readonly =mmc_gpio_get_ro (host->mmc); -else +/* Do not invert twice */ + allow_invert = !(host->mmc->caps2 &MMC_CAP2_RO_ACTIVE_HIGH ); + }else { is_readonly = !(sdhci_readl (host,SDHCI_PRESENT_STATE ) &SDHCI_WRITE_PROTECT ); + allow_invert = true; + } -spin_unlock_irqrestore (&host->lock, flags); +if (is_readonly >=0 && + allow_invert && + (host->quirks &SDHCI_QUIRK_INVERTED_WRITE_PROTECT )) + is_readonly = !is_readonly; -/* This quirk needs to be replaced by a callback-function later */ -return host->quirks &SDHCI_QUIRK_INVERTED_WRITE_PROTECT ? - !is_readonly : is_readonly; +return is_readonly; }#define SAMPLE_COUNT 5
drivers/mtd/parsers/redboot.c +1 -1
@@ -102,7 +102,7 @@ static int parse_redboot_partitions(struct mtd_info *master, offset -= master->erasesize; } }else { - offset = directory * master->erasesize; + offset = (unsigned long ) directory * master->erasesize;while (mtd_block_isbad (master, offset)) { offset += master->erasesize;if (offset == master->size)
drivers/net/can/spi/mcp251xfd/mcp251xfd-core.c +13 -1
@@ -1618,11 +1618,20 @@ static int mcp251xfd_open(struct net_device *ndev)clear_bit (MCP251XFD_FLAGS_DOWN , priv->flags);can_rx_offload_enable (&priv->offload); + priv->wq =alloc_ordered_workqueue ("%s-mcp251xfd_wq" , +WQ_FREEZABLE |WQ_MEM_RECLAIM , +dev_name (&spi->dev)); +if (!priv->wq) { + err = -ENOMEM ; + goto out_can_rx_offload_disable; + } +INIT_WORK (&priv->tx_work, mcp251xfd_tx_obj_write_sync); + err =request_threaded_irq (spi->irq,NULL , mcp251xfd_irq,IRQF_SHARED |IRQF_ONESHOT ,dev_name (&spi->dev), priv);if (err) - goto out_can_rx_offload_disable; + goto out_destroy_workqueue; err =mcp251xfd_chip_interrupts_enable (priv);if (err)
@@ -1634,6 +1643,8 @@ static int mcp251xfd_open(struct net_device *ndev) out_free_irq:free_irq (spi->irq, priv); + out_destroy_workqueue: +destroy_workqueue (priv->wq); out_can_rx_offload_disable:can_rx_offload_disable (&priv->offload);set_bit (MCP251XFD_FLAGS_DOWN , priv->flags);
@@ -1661,6 +1672,7 @@ static int mcp251xfd_stop(struct net_device *ndev)hrtimer_cancel (&priv->tx_irq_timer);mcp251xfd_chip_interrupts_disable (priv);free_irq (ndev->irq, priv); +destroy_workqueue (priv->wq);can_rx_offload_disable (&priv->offload);mcp251xfd_timestamp_stop (priv);mcp251xfd_chip_stop (priv,CAN_STATE_STOPPED );
drivers/net/can/spi/mcp251xfd/mcp251xfd-tx.c +47 -8
79 lines not on this page · raw message
drivers/net/can/spi/mcp251xfd/mcp251xfd.h +5 -0
@@ -628,6 +628,10 @@ struct mcp251xfd_priv {struct mcp251xfd_rx_ring *rx[MCP251XFD_FIFO_RX_NUM ];struct mcp251xfd_tx_ring tx[MCP251XFD_FIFO_TX_NUM ]; +struct workqueue_struct *wq; +struct work_struct tx_work; +struct mcp251xfd_tx_obj *tx_work_obj; +DECLARE_BITMAP (flags, __MCP251XFD_FLAGS_SIZE__);u8 rx_ring_num;
@@ -934,6 +938,7 @@ void mcp251xfd_skb_set_timestamp(const struct mcp251xfd_priv *priv,void mcp251xfd_timestamp_init (struct mcp251xfd_priv *priv);void mcp251xfd_timestamp_stop (struct mcp251xfd_priv *priv); +void mcp251xfd_tx_obj_write_sync (struct work_struct *work);netdev_tx_t mcp251xfd_start_xmit (struct sk_buff *skb,struct net_device *ndev);
drivers/net/dsa/microchip/ksz9477.c +6 -4
@@ -183,10 +183,8 @@ int ksz9477_reset_switch(struct ksz_device *dev) SPI_AUTO_EDGE_DETECTION, 0);/* default configuration */ -ksz_read8 (dev,REG_SW_LUE_CTRL_1 , &data8); - data8 =SW_AGING_ENABLE |SW_LINK_AUTO_AGING | -SW_SRC_ADDR_FILTER |SW_FLUSH_STP_TABLE |SW_FLUSH_MSTP_TABLE ; -ksz_write8 (dev,REG_SW_LUE_CTRL_1 , data8); +ksz_write8 (dev,REG_SW_LUE_CTRL_1 , +SW_AGING_ENABLE |SW_LINK_AUTO_AGING |SW_SRC_ADDR_FILTER );/* disable interrupts */ ksz_write32 (dev,REG_SW_INT_MASK__4 ,SWITCH_INT_MASK );
@@ -1152,6 +1150,10 @@ int ksz9477_setup(struct dsa_switch *ds)/* Enable REG_SW_MTU__2 reg by setting SW_JUMBO_PACKET */ ksz_cfg (dev,REG_SW_MAC_CTRL_1 ,SW_JUMBO_PACKET , true); +/* Use collision based back pressure mode. */ +ksz_cfg (dev,REG_SW_MAC_CTRL_1 ,SW_BACK_PRESSURE , +SW_BACK_PRESSURE_COLLISION ); +/* Now we can configure default MTU value */ ret =regmap_update_bits (dev->regmap[1 ],REG_SW_MTU__2 ,REG_SW_MTU_MASK ,VLAN_ETH_FRAME_LEN +ETH_FCS_LEN );
drivers/net/dsa/microchip/ksz9477_reg.h +1 -0
@@ -267,6 +267,7 @@#define REG_SW_MAC_CTRL_1 0x0331#define SW_BACK_PRESSURE BIT(5) +#define SW_BACK_PRESSURE_COLLISION 0#define FAIR_FLOW_CTRL BIT(4)#define NO_EXC_COLLISION_DROP BIT(3)#define SW_JUMBO_PACKET BIT(2)
drivers/net/dsa/microchip/ksz_common.c +1 -1
@@ -1790,7 +1790,7 @@ static void ksz_irq_bus_sync_unlock(struct irq_data *d)struct ksz_device *dev = kirq->dev;int ret; - ret =ksz_write32 (dev, kirq->reg_mask, kirq->masked); + ret =ksz_write8 (dev, kirq->reg_mask, kirq->masked);if (ret)dev_err (dev->dev,"failed to change IRQ mask\n" );
drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c +9 -5
@@ -2754,11 +2754,14 @@ static int dpaa2_eth_xdp_xmit(struct net_device *net_dev, int n,static int update_xps (struct dpaa2_eth_priv *priv) {struct net_device *net_dev = priv->net_dev; -struct cpumask xps_mask; -struct dpaa2_eth_fq *fq;int i, num_queues, netdev_queues; +struct dpaa2_eth_fq *fq; +cpumask_var_t xps_mask;int err =0 ; +if (!alloc_cpumask_var (&xps_mask,GFP_KERNEL )) +return -ENOMEM ; + num_queues =dpaa2_eth_queue_count (priv); netdev_queues = (net_dev->num_tc ? :1 ) * num_queues;
@@ -2768,16 +2771,17 @@ static int update_xps(struct dpaa2_eth_priv *priv)for (i =0 ; i < netdev_queues; i++) { fq = &priv->fq[i % num_queues]; -cpumask_clear (&xps_mask); -cpumask_set_cpu (fq->target_cpu, &xps_mask); +cpumask_clear (xps_mask); +cpumask_set_cpu (fq->target_cpu, xps_mask); - err =netif_set_xps_queue (net_dev, &xps_mask, i); + err =netif_set_xps_queue (net_dev, xps_mask, i);if (err) {netdev_warn_once (net_dev,"Error setting XPS queue\n" );break ; } } +free_cpumask_var (xps_mask);return err; }
drivers/net/ethernet/ibm/ibmvnic.c +6 -0
@@ -3859,6 +3859,12 @@ static void release_sub_crqs(struct ibmvnic_adapter *adapter, bool do_h_free) adapter->num_active_tx_scrqs =0 ; } +/* Clean any remaining outstanding SKBs +* we freed the irq so we won't be hearing +* from them +*/ +clean_tx_pools (adapter); +if (adapter->rx_scrq) {for (i =0 ; i < adapter->num_active_rx_scrqs; i++) {if (!adapter->rx_scrq[i])
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c +14 -6
@@ -1607,8 +1607,8 @@ static void mlxsw_sp_sb_sr_occ_query_cb(struct mlxsw_core *mlxsw_core,int mlxsw_sp_sb_occ_snapshot (struct mlxsw_core *mlxsw_core,unsigned int sb_index) { +u16 local_port, local_port_1, first_local_port, last_local_port;struct mlxsw_sp *mlxsw_sp =mlxsw_core_driver_priv (mlxsw_core); -u16 local_port, local_port_1, last_local_port;struct mlxsw_sp_sb_sr_occ_query_cb_ctx cb_ctx;u8 masked_count, current_page =0 ;unsigned long cb_priv =0 ;
@@ -1628,6 +1628,7 @@ int mlxsw_sp_sb_occ_snapshot(struct mlxsw_core *mlxsw_core, masked_count =0 ;mlxsw_reg_sbsr_pack (sbsr_pl, false);mlxsw_reg_sbsr_port_page_set (sbsr_pl, current_page); + first_local_port = current_page *MLXSW_REG_SBSR_NUM_PORTS_IN_PAGE ; last_local_port = current_page *MLXSW_REG_SBSR_NUM_PORTS_IN_PAGE +MLXSW_REG_SBSR_NUM_PORTS_IN_PAGE -1 ;
@@ -1645,9 +1646,12 @@ int mlxsw_sp_sb_occ_snapshot(struct mlxsw_core *mlxsw_core,if (local_port !=MLXSW_PORT_CPU_PORT ) {/* Ingress quotas are not supported for the CPU port */ mlxsw_reg_sbsr_ingress_port_mask_set (sbsr_pl, - local_port,1 ); + local_port - first_local_port, +1 ); } -mlxsw_reg_sbsr_egress_port_mask_set (sbsr_pl, local_port,1 ); +mlxsw_reg_sbsr_egress_port_mask_set (sbsr_pl, + local_port - first_local_port, +1 );for (i =0 ; i < mlxsw_sp->sb_vals->pool_count; i++) { err =mlxsw_sp_sb_pm_occ_query (mlxsw_sp, local_port, i, &bulk_list);
@@ -1684,7 +1688,7 @@ int mlxsw_sp_sb_occ_max_clear(struct mlxsw_core *mlxsw_core, unsigned int sb_index) {struct mlxsw_sp *mlxsw_sp =mlxsw_core_driver_priv (mlxsw_core); -u16 local_port, last_local_port; +u16 local_port, first_local_port, last_local_port;LIST_HEAD (bulk_list);unsigned int masked_count;u8 current_page =0 ;
@@ -1702,6 +1706,7 @@ int mlxsw_sp_sb_occ_max_clear(struct mlxsw_core *mlxsw_core, masked_count =0 ;mlxsw_reg_sbsr_pack (sbsr_pl, true);mlxsw_reg_sbsr_port_page_set (sbsr_pl, current_page); + first_local_port = current_page *MLXSW_REG_SBSR_NUM_PORTS_IN_PAGE ; last_local_port = current_page *MLXSW_REG_SBSR_NUM_PORTS_IN_PAGE +MLXSW_REG_SBSR_NUM_PORTS_IN_PAGE -1 ;
@@ -1719,9 +1724,12 @@ int mlxsw_sp_sb_occ_max_clear(struct mlxsw_core *mlxsw_core,if (local_port !=MLXSW_PORT_CPU_PORT ) {/* Ingress quotas are not supported for the CPU port */ mlxsw_reg_sbsr_ingress_port_mask_set (sbsr_pl, - local_port,1 ); + local_port - first_local_port, +1 ); } -mlxsw_reg_sbsr_egress_port_mask_set (sbsr_pl, local_port,1 ); +mlxsw_reg_sbsr_egress_port_mask_set (sbsr_pl, + local_port - first_local_port, +1 );for (i =0 ; i < mlxsw_sp->sb_vals->pool_count; i++) { err =mlxsw_sp_sb_pm_occ_clear (mlxsw_sp, local_port, i, &bulk_list);
drivers/net/phy/micrel.c +1 -0
@@ -3405,6 +3405,7 @@ static struct mdio_device_id __maybe_unused micrel_tbl[] = { { PHY_ID_KSZ8081, MICREL_PHY_ID_MASK }, { PHY_ID_KSZ8873MLL, MICREL_PHY_ID_MASK }, { PHY_ID_KSZ886X, MICREL_PHY_ID_MASK }, + { PHY_ID_KSZ9477, MICREL_PHY_ID_MASK }, { PHY_ID_LAN8814, MICREL_PHY_ID_MASK }, { PHY_ID_LAN8804, MICREL_PHY_ID_MASK }, { }
drivers/net/usb/ax88179_178a.c +5 -1
@@ -326,7 +326,8 @@ static void ax88179_status(struct usbnet *dev, struct urb *urb)if (netif_carrier_ok (dev->net) != link) {usbnet_link_change (dev, link,1 ); -netdev_info (dev->net,"ax88179 - Link status is: %d\n" , link); +if (!link) +netdev_info (dev->net,"ax88179 - Link status is: 0\n" ); } }
@@ -1540,6 +1541,7 @@ static int ax88179_link_reset(struct usbnet *dev) GMII_PHY_PHYSR, 2, &tmp16);if (!(tmp16 &GMII_PHY_PHYSR_LINK )) { +netdev_info (dev->net,"ax88179 - Link status is: 0\n" );return 0 ; }else if (GMII_PHY_PHYSR_GIGA == (tmp16 &GMII_PHY_PHYSR_SMASK )) { mode |=AX_MEDIUM_GIGAMODE |AX_MEDIUM_EN_125MHZ ;
@@ -1577,6 +1579,8 @@ static int ax88179_link_reset(struct usbnet *dev)netif_carrier_on (dev->net); +netdev_info (dev->net,"ax88179 - Link status is: 1\n" ); +return 0 ; }
drivers/pinctrl/core.c +1 -1
@@ -1092,8 +1092,8 @@ static struct pinctrl *create_pinctrl(struct device *dev,* an -EPROBE_DEFER later, as that is the worst case. */ if (ret == -EPROBE_DEFER ) { -pinctrl_free (p, false);mutex_unlock (&pinctrl_maps_mutex); +pinctrl_free (p, false);return ERR_PTR (ret); } }
drivers/pinctrl/pinctrl-rockchip.c +59 -9
122 lines not on this page · raw message
drivers/pinctrl/pinctrl-rockchip.h +1 -0
@@ -193,6 +193,7 @@ enum rockchip_pinctrl_type {RK3188 ,RK3288 ,RK3308 , +RK3328 ,RK3368 ,RK3399 , RK3568,
drivers/pinctrl/qcom/pinctrl-spmi-gpio.c +0 -1
@@ -1204,7 +1204,6 @@ static const struct of_device_id pmic_gpio_of_match[] = { { .compatible = "qcom,pm7250b-gpio", .data = (void *) 12 }, { .compatible = "qcom,pm7325-gpio", .data = (void *) 10 }, { .compatible = "qcom,pm8005-gpio", .data = (void *) 4 }, - { .compatible = "qcom,pm8008-gpio", .data = (void *) 2 }, { .compatible = "qcom,pm8019-gpio", .data = (void *) 6 }, /* pm8150 has 10 GPIOs with holes on 2, 5, 7 and 8 */ { .compatible = "qcom,pm8150-gpio", .data = (void *) 10 },
drivers/pwm/pwm-stm32.c +3 -0
@@ -340,6 +340,9 @@ static int stm32_pwm_config(struct stm32_pwm *priv, int ch, prd = div; +if (!prd) +return -EINVAL ; +if (prescaler >MAX_TIM_PSC )return -EINVAL ;
drivers/soc/ti/wkup_m3_ipc.c +2 -5
@@ -16,7 +16,6 @@#include <linux/irq.h> #include <linux/module.h> #include <linux/of.h> -#include <linux/omap-mailbox.h> #include <linux/platform_device.h> #include <linux/remoteproc.h> #include <linux/suspend.h>
@@ -314,7 +313,6 @@ static irqreturn_t wkup_m3_txev_handler(int irq, void *ipc_data)static int wkup_m3_ping (struct wkup_m3_ipc *m3_ipc) {struct device *dev = m3_ipc->dev; -mbox_msg_t dummy_msg =0 ;int ret;if (!m3_ipc->mbox) {
@@ -330,7 +328,7 @@ static int wkup_m3_ping(struct wkup_m3_ipc *m3_ipc)* the RX callback to avoid multiple interrupts being received * by the CM3. */ - ret =mbox_send_message (m3_ipc->mbox, &dummy_msg); + ret =mbox_send_message (m3_ipc->mbox,NULL );if (ret <0 ) {dev_err (dev,"%s: mbox_send_message() failed: %d\n" , __func__, ret);
@@ -352,7 +350,6 @@ static int wkup_m3_ping(struct wkup_m3_ipc *m3_ipc)static int wkup_m3_ping_noirq (struct wkup_m3_ipc *m3_ipc) {struct device *dev = m3_ipc->dev; -mbox_msg_t dummy_msg =0 ;int ret;if (!m3_ipc->mbox) {
@@ -361,7 +358,7 @@ static int wkup_m3_ping_noirq(struct wkup_m3_ipc *m3_ipc)return -EIO ; } - ret =mbox_send_message (m3_ipc->mbox, &dummy_msg); + ret =mbox_send_message (m3_ipc->mbox,NULL );if (ret <0 ) {dev_err (dev,"%s: mbox_send_message() failed: %d\n" , __func__, ret);
drivers/tty/serial/8250/8250_omap.c +19 -3
@@ -159,6 +159,10 @@ static u32 uart_read(struct omap8250_priv *priv, u32 reg)return readl (priv->membase + (reg <<OMAP_UART_REGSHIFT )); } +/* Timeout low and High */ +#define UART_OMAP_TO_L 0x26 +#define UART_OMAP_TO_H 0x27 +/* * Called on runtime PM resume path from omap8250_restore_regs(), and * omap8250_set_mctrl().
@@ -628,13 +632,25 @@ static irqreturn_t omap8250_irq(int irq, void *dev_id)/* * On K3 SoCs, it is observed that RX TIMEOUT is signalled after -* FIFO has been drained, in which case a dummy read of RX FIFO -* is required to clear RX TIMEOUT condition. +* FIFO has been drained or erroneously. +* So apply solution of Errata i2310 as mentioned in +* https://www.ti.com/lit/pdf/sprz536 */ if (priv->habit &UART_RX_TIMEOUT_QUIRK && (iir &UART_IIR_RX_TIMEOUT ) ==UART_IIR_RX_TIMEOUT &&serial_port_in (port,UART_OMAP_RX_LVL ) ==0 ) { -serial_port_in (port,UART_RX ); +unsigned char efr2, timeout_h, timeout_l; + + efr2 =serial_in (up,UART_OMAP_EFR2 ); + timeout_h =serial_in (up,UART_OMAP_TO_H ); + timeout_l =serial_in (up,UART_OMAP_TO_L ); +serial_out (up,UART_OMAP_TO_H ,0xFF ); +serial_out (up,UART_OMAP_TO_L ,0xFF ); +serial_out (up,UART_OMAP_EFR2 ,UART_OMAP_EFR2_TIMEOUT_BEHAVE ); +serial_in (up,UART_IIR ); +serial_out (up,UART_OMAP_EFR2 , efr2); +serial_out (up,UART_OMAP_TO_H , timeout_h); +serial_out (up,UART_OMAP_TO_L , timeout_l); }/* Stop processing interrupts on input overrun */
drivers/tty/serial/imx.c +8 -2
@@ -120,6 +120,7 @@#define UCR4_OREN (1<<1)/* Receiver overrun interrupt enable */ #define UCR4_DREN (1<<0)/* Recv data ready interrupt enable */ #define UFCR_RXTL_SHF 0/* Receiver trigger level shift */ +#define UFCR_RXTL_MASK 0x3F/* Receiver trigger 6 bits wide */ #define UFCR_DCEDTE (1<<6)/* DCE/DTE mode select */ #define UFCR_RFDIV (7<<7)/* Reference freq divider mask */ #define UFCR_RFDIV_REG (x) (((x) < 7 ? 6 - (x) : 6) << 7)
@@ -1959,7 +1960,7 @@ static int imx_uart_rs485_config(struct uart_port *port, struct ktermios *termio struct serial_rs485 *rs485conf) {struct imx_port *sport = (struct imx_port *)port; -u32 ucr2; +u32 ucr2, ufcr;if (rs485conf->flags &SER_RS485_ENABLED ) {/* Enable receiver if low-active RTS signal is requested */
@@ -1978,8 +1979,13 @@ static int imx_uart_rs485_config(struct uart_port *port, struct ktermios *termio/* Make sure Rx is enabled in case Tx is active with Rx disabled */ if (!(rs485conf->flags &SER_RS485_ENABLED ) || - rs485conf->flags &SER_RS485_RX_DURING_TX ) + rs485conf->flags &SER_RS485_RX_DURING_TX ) { +/* If the receiver trigger is 0, set it to a default value */ + ufcr =imx_uart_readl (sport,UFCR ); +if ((ufcr &UFCR_RXTL_MASK ) ==0 ) +imx_uart_setup_ufcr (sport,TXTL_DEFAULT ,RXTL_DEFAULT );imx_uart_start_rx (port); + }return 0 ; }
drivers/tty/serial/mcf.c +1 -1
@@ -480,7 +480,7 @@ static const struct uart_ops mcf_uart_ops = { .verify_port = mcf_verify_port, }; -static struct mcf_uart mcf_ports[4 ]; +static struct mcf_uart mcf_ports[10 ];#define MCF_MAXPORTS ARRAY_SIZE(mcf_ports)
drivers/usb/atm/cxacru.c +14 -0
@@ -1131,6 +1131,7 @@ static int cxacru_bind(struct usbatm_data *usbatm_instance,struct cxacru_data *instance;struct usb_device *usb_dev =interface_to_usbdev (intf);struct usb_host_endpoint *cmd_ep = usb_dev->ep_in[CXACRU_EP_CMD ]; +struct usb_endpoint_descriptor *in, *out;int ret;/* instance init */
@@ -1177,6 +1178,19 @@ static int cxacru_bind(struct usbatm_data *usbatm_instance, goto fail; } +if (usb_endpoint_xfer_int (&cmd_ep->desc)) + ret =usb_find_common_endpoints (intf->cur_altsetting, +NULL ,NULL , &in, &out); +else + ret =usb_find_common_endpoints (intf->cur_altsetting, + &in, &out,NULL ,NULL ); + +if (ret) { +usb_err (usbatm_instance,"cxacru_bind: interface has incorrect endpoints\n" ); + ret = -ENODEV ; + goto fail; + } +if ((cmd_ep->desc.bmAttributes &USB_ENDPOINT_XFERTYPE_MASK ) ==USB_ENDPOINT_XFER_INT ) { usb_fill_int_urb(instance->rcv_urb,
drivers/usb/dwc3/core.c +0 -6
@@ -2087,7 +2087,6 @@ static int dwc3_core_init_for_resume(struct dwc3 *dwc)static int dwc3_suspend_common (struct dwc3 *dwc,pm_message_t msg) { -unsigned long flags;u32 reg;switch (dwc->current_dr_role) {
@@ -2125,9 +2124,7 @@ static int dwc3_suspend_common(struct dwc3 *dwc, pm_message_t msg)break ;if (dwc->current_otg_role ==DWC3_OTG_ROLE_DEVICE ) { -spin_lock_irqsave (&dwc->lock, flags);dwc3_gadget_suspend (dwc); -spin_unlock_irqrestore (&dwc->lock, flags);synchronize_irq (dwc->irq_gadget); }
@@ -2144,7 +2141,6 @@ static int dwc3_suspend_common(struct dwc3 *dwc, pm_message_t msg)static int dwc3_resume_common (struct dwc3 *dwc,pm_message_t msg) { -unsigned long flags;int ret;u32 reg;
@@ -2193,9 +2189,7 @@ static int dwc3_resume_common(struct dwc3 *dwc, pm_message_t msg)if (dwc->current_otg_role ==DWC3_OTG_ROLE_HOST ) {dwc3_otg_host_init (dwc); }else if (dwc->current_otg_role ==DWC3_OTG_ROLE_DEVICE ) { -spin_lock_irqsave (&dwc->lock, flags);dwc3_gadget_resume (dwc); -spin_unlock_irqrestore (&dwc->lock, flags); }break ;
drivers/usb/gadget/function/f_printer.c +30 -10
@@ -210,6 +210,7 @@ static inline struct usb_endpoint_descriptor *ep_desc(struct usb_gadget *gadget, struct usb_endpoint_descriptor *ss) {switch (gadget->speed) { +case USB_SPEED_SUPER_PLUS :case USB_SPEED_SUPER :return ss;case USB_SPEED_HIGH :
@@ -447,11 +448,8 @@ printer_read(struct file *fd, char __user *buf, size_t len, loff_t *ptr)mutex_lock (&dev->lock_printer_io);spin_lock_irqsave (&dev->lock, flags); -if (dev->interface <0 ) { -spin_unlock_irqrestore (&dev->lock, flags); -mutex_unlock (&dev->lock_printer_io); -return -ENODEV ; - } +if (dev->interface <0 ) + goto out_disabled;/* We will use this flag later to check if a printer reset happened * after we turn interrupts back on.
@@ -459,6 +457,9 @@ printer_read(struct file *fd, char __user *buf, size_t len, loff_t *ptr) dev->reset_printer =0 ;setup_rx_reqs (dev); +/* this dropped the lock - need to retest */ +if (dev->interface <0 ) + goto out_disabled; bytes_copied =0 ; current_rx_req = dev->current_rx_req;
@@ -492,6 +493,8 @@ printer_read(struct file *fd, char __user *buf, size_t len, loff_t *ptr)wait_event_interruptible (dev->rx_wait, (likely (!list_empty (&dev->rx_buffers))));spin_lock_irqsave (&dev->lock, flags); +if (dev->interface <0 ) + goto out_disabled; }/* We have data to return then copy it to the caller's buffer.*/
@@ -535,6 +538,9 @@ printer_read(struct file *fd, char __user *buf, size_t len, loff_t *ptr)return -EAGAIN ; } +if (dev->interface <0 ) + goto out_disabled; +/* If we not returning all the data left in this RX request * buffer then adjust the amount of data left in the buffer. * Othewise if we are done with this RX request buffer then
@@ -564,6 +570,11 @@ printer_read(struct file *fd, char __user *buf, size_t len, loff_t *ptr)return bytes_copied; else return -EAGAIN; + +out_disabled: +spin_unlock_irqrestore (&dev->lock, flags); +mutex_unlock (&dev->lock_printer_io); +return -ENODEV ; } static ssize_t
@@ -584,11 +595,8 @@ printer_write(struct file *fd, const char __user *buf, size_t len, loff_t *ptr)mutex_lock (&dev->lock_printer_io);spin_lock_irqsave (&dev->lock, flags); -if (dev->interface <0 ) { -spin_unlock_irqrestore (&dev->lock, flags); -mutex_unlock (&dev->lock_printer_io); -return -ENODEV ; - } +if (dev->interface <0 ) + goto out_disabled;/* Check if a printer reset happens while we have interrupts on */ dev->reset_printer =0 ;
@@ -611,6 +619,8 @@ printer_write(struct file *fd, const char __user *buf, size_t len, loff_t *ptr)wait_event_interruptible (dev->tx_wait, (likely (!list_empty (&dev->tx_reqs))));spin_lock_irqsave (&dev->lock, flags); +if (dev->interface <0 ) + goto out_disabled; }while (likely (!list_empty (&dev->tx_reqs)) && len) {
@@ -660,6 +670,9 @@ printer_write(struct file *fd, const char __user *buf, size_t len, loff_t *ptr)return -EAGAIN ; } +if (dev->interface <0 ) + goto out_disabled; +list_add (&req->list, &dev->tx_reqs_active);/* here, we unlock, and only unlock, to avoid deadlock. */
@@ -672,6 +685,8 @@ printer_write(struct file *fd, const char __user *buf, size_t len, loff_t *ptr)mutex_unlock (&dev->lock_printer_io);return -EAGAIN ; } +if (dev->interface <0 ) + goto out_disabled; }spin_unlock_irqrestore (&dev->lock, flags);
@@ -683,6 +698,11 @@ printer_write(struct file *fd, const char __user *buf, size_t len, loff_t *ptr)return bytes_copied; else return -EAGAIN; + +out_disabled: +spin_unlock_irqrestore (&dev->lock, flags); +mutex_unlock (&dev->lock_printer_io); +return -ENODEV ; } static int
drivers/usb/gadget/udc/aspeed_udc.c +2 -2
@@ -66,8 +66,8 @@#define USB_UPSTREAM_EN BIT(0)/* Main config reg */ -#define UDC_CFG_SET_ADDR (x) ((x) & 0x3f) -#define UDC_CFG_ADDR_MASK (0x3f) +#define UDC_CFG_SET_ADDR (x) ((x) & UDC_CFG_ADDR_MASK) +#define UDC_CFG_ADDR_MASK GENMASK(6, 0)/* Interrupt ctrl & status reg */ #define UDC_IRQ_EP_POOL_NAK BIT(17)
drivers/usb/musb/da8xx.c +6 -2
@@ -553,7 +553,7 @@ static int da8xx_probe(struct platform_device *pdev) ret =of_platform_populate (pdev->dev.of_node,NULL , da8xx_auxdata_lookup, &pdev->dev);if (ret) -return ret; + goto err_unregister_phy; pinfo = da8xx_dev_info; pinfo.parent = &pdev->dev;
@@ -568,9 +568,13 @@ static int da8xx_probe(struct platform_device *pdev) ret =PTR_ERR_OR_ZERO (glue->musb);if (ret) {dev_err (&pdev->dev,"failed to register musb device: %d\n" , ret); -usb_phy_generic_unregister (glue->usb_phy); + goto err_unregister_phy; } +return 0 ; + +err_unregister_phy: +usb_phy_generic_unregister (glue->usb_phy);return ret; }
drivers/usb/typec/ucsi/ucsi.c +27 -28
81 lines not on this page · raw message
net/ipv4/tcp_input.c +33 -12
45 lines not on this page · raw message
security/integrity/ima/ima_template_lib.c +14 -3
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.