Linux 6.19.12
Greg Kroah-Hartman
maintainerI'm announcing the release of the 6.19.12 kernel.
All users of the 6.19 kernel series must upgrade.
The updated 6.19.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-6.19.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/auxdisplay/holtek,ht16k33.yaml | 2 Documentation/devicetree/bindings/connector/usb-connector.yaml | 1 Documentation/devicetree/bindings/gpio/microchip,mpfs-gpio.yaml | 4 Makefile | 2 arch/arm64/kernel/pi/patch-scs.c | 8 arch/mips/lib/multi3.c | 6 arch/mips/mm/cache.c | 3 arch/mips/mm/tlb-r4k.c | 2 arch/mips/ralink/clk.c | 8 arch/riscv/kernel/kgdb.c | 7 arch/riscv/kernel/process.c | 4 arch/s390/kernel/perf_cpum_sf.c | 6 arch/x86/events/intel/core.c | 6 arch/x86/kernel/Makefile | 14 arch/x86/mm/Makefile | 2 crypto/af_alg.c | 53 -- crypto/algif_aead.c | 100 ----- crypto/algif_skcipher.c | 6 crypto/authencesn.c | 48 +- crypto/deflate.c | 11 drivers/accel/qaic/qaic_control.c | 47 ++ drivers/acpi/riscv/rimt.c | 7 drivers/android/binder/page_range.rs | 8 drivers/android/binder/rust_binder_main.rs | 2 drivers/auxdisplay/line-display.c | 2 drivers/bluetooth/hci_h4.c | 3 drivers/comedi/comedi_fops.c | 8 drivers/comedi/drivers.c | 8 drivers/comedi/drivers/dt2815.c | 12 drivers/comedi/drivers/me4000.c | 16 drivers/comedi/drivers/me_daq.c | 35 - drivers/comedi/drivers/ni_atmio16d.c | 3 drivers/counter/rz-mtu3-cnt.c | 67 +-- drivers/cpufreq/cpufreq_governor.c | 6 drivers/crypto/caam/caamalg_qi2.c | 3 drivers/crypto/caam/caamhash.c | 3 drivers/crypto/tegra/tegra-se-aes.c | 11 drivers/crypto/tegra/tegra-se-hash.c | 30 - drivers/firmware/microchip/mpfs-auto-update.c | 10 drivers/gpib/Kconfig | 1 drivers/gpib/common/gpib_os.c | 96 +++- drivers/gpib/include/gpib_types.h | 8 drivers/gpib/lpvo_usb_gpib/lpvo_usb_gpib.c | 4 drivers/gpio/gpio-mxc.c | 10 drivers/gpio/gpio-qixis-fpga.c | 4 drivers/gpio/gpiolib-shared.c | 57 ++ drivers/gpio/gpiolib-shared.h | 11 drivers/gpio/gpiolib.c | 113 ++--- drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 8 drivers/gpu/drm/amd/amdgpu/amdgpu_ids.c | 5 drivers/gpu/drm/amd/amdgpu/amdgpu_userq.c | 7 drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h | 2 drivers/gpu/drm/amd/amdgpu/psp_v11_0.c | 3 drivers/gpu/drm/amd/amdkfd/kfd_priv.h | 4 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_colorop.c | 6 drivers/gpu/drm/amd/display/dc/hwss/dcn401/dcn401_hwseq.c | 17 drivers/gpu/drm/amd/pm/swsmu/smu11/smu_v11_0.c | 1 drivers/gpu/drm/amd/pm/swsmu/smu12/smu_v12_0.c | 1 drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_0_ppt.c | 33 + drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_7_ppt.c | 33 + drivers/gpu/drm/amd/pm/swsmu/smu14/smu_v14_0.c | 1 drivers/gpu/drm/ast/ast_dp501.c | 2 drivers/gpu/drm/drm_bridge.c | 16 drivers/gpu/drm/drm_file.c | 5 drivers/gpu/drm/drm_ioc32.c | 2 drivers/gpu/drm/drm_mode_config.c | 9 drivers/gpu/drm/i915/display/g4x_dp.c | 2 drivers/gpu/drm/i915/display/icl_dsi.c | 4 drivers/gpu/drm/i915/display/intel_cdclk.c | 54 ++ drivers/gpu/drm/sysfb/efidrm.c | 46 +- drivers/gpu/drm/xe/xe_pagefault.c | 6 drivers/gpu/drm/xe/xe_pxp.c | 11 drivers/hid/hid-appletb-kbd.c | 5 drivers/hid/hid-core.c | 7 drivers/hid/hid-logitech-hidpp.c | 6 drivers/hid/hid-multitouch.c | 7 drivers/hid/wacom_wac.c | 10 drivers/hv/mshv_regions.c | 6 drivers/hwmon/asus-ec-sensors.c | 7 drivers/hwmon/occ/common.c | 19 drivers/hwmon/pmbus/ltc4286.c | 1 drivers/hwmon/pmbus/pxe1610.c | 5 drivers/hwmon/pmbus/tps53679.c | 10 drivers/i2c/busses/Kconfig | 2 drivers/i2c/busses/i2c-tegra.c | 5 drivers/iio/accel/adxl313_core.c | 2 drivers/iio/accel/adxl355_core.c | 2 drivers/iio/accel/adxl380.c | 2 drivers/iio/adc/ade9000.c | 12 drivers/iio/adc/aspeed_adc.c | 1 drivers/iio/adc/ti-adc161s626.c | 41 +- drivers/iio/adc/ti-ads1119.c | 11 drivers/iio/adc/ti-ads7950.c | 8 drivers/iio/dac/ad5770r.c | 2 drivers/iio/gyro/mpu3050-core.c | 32 + drivers/iio/imu/adis16550.c | 8 drivers/iio/imu/bmi160/bmi160_core.c | 15 drivers/iio/imu/bno055/bno055.c | 2 drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_buffer.c | 15 drivers/iio/light/vcnl4035.c | 18 drivers/iio/light/veml6070.c | 4 drivers/iio/orientation/hid-sensor-rotation.c | 24 + drivers/input/joystick/xpad.c | 5 drivers/input/mouse/bcm5974.c | 42 ++ drivers/input/rmi4/rmi_f54.c | 4 drivers/input/serio/i8042-acpipnpio.h | 7 drivers/interconnect/qcom/sm8450.c | 4 drivers/iommu/generic_pt/fmt/amdv1.h | 2 drivers/iommu/generic_pt/iommu_pt.h | 2 drivers/irqchip/irq-riscv-aplic-main.c | 4 drivers/misc/fastrpc.c | 5 drivers/misc/mei/hw-me.c | 14 drivers/net/bonding/bond_main.c | 2 drivers/net/ethernet/airoha/airoha_eth.c | 18 drivers/net/ethernet/broadcom/bnxt/bnxt.c | 76 ++- drivers/net/ethernet/broadcom/bnxt/bnxt.h | 1 drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c | 5 drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c | 5 drivers/net/ethernet/broadcom/tg3.c | 13 drivers/net/ethernet/cadence/macb_pci.c | 10 drivers/net/ethernet/faraday/ftgmac100.c | 28 + drivers/net/ethernet/freescale/enetc/enetc.c | 13 drivers/net/ethernet/freescale/enetc/enetc4_hw.h | 11 drivers/net/ethernet/freescale/enetc/enetc4_pf.c | 118 +++++- drivers/net/ethernet/freescale/enetc/enetc_ethtool.c | 10 drivers/net/ethernet/freescale/fec_ptp.c | 3 drivers/net/ethernet/mediatek/mtk_ppe_offload.c | 21 + drivers/net/ethernet/mellanox/mlx5/core/devlink.c | 4 drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c | 2 drivers/net/ethernet/mellanox/mlx5/core/fw.c | 53 +- drivers/net/ethernet/mellanox/mlx5/core/lag/debugfs.c | 3 drivers/net/ethernet/mellanox/mlx5/core/mlx5_core.h | 4 drivers/net/ethernet/meta/fbnic/fbnic_txrx.c | 6 drivers/net/ethernet/meta/fbnic/fbnic_txrx.h | 2 drivers/net/ethernet/microsoft/mana/mana_en.c | 13 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 14 drivers/net/ethernet/ti/icssg/icssg_common.c | 2 drivers/net/ethernet/xilinx/xilinx_axienet.h | 4 drivers/net/ethernet/xilinx/xilinx_axienet_main.c | 9 drivers/net/phy/sfp.c | 7 drivers/net/virtio_net.c | 20 - drivers/net/vxlan/vxlan_core.c | 6 drivers/net/wireless/ath/ath11k/dp_rx.c | 15 drivers/net/wireless/intel/iwlwifi/fw/api/commands.h | 5 drivers/net/wireless/intel/iwlwifi/fw/api/scan.h | 10 drivers/net/wireless/intel/iwlwifi/mld/iface.c | 101 +++-- drivers/net/wireless/intel/iwlwifi/mld/mac80211.c | 19 drivers/net/wireless/intel/iwlwifi/mld/mld.c | 1 drivers/net/wireless/intel/iwlwifi/mld/mlo.c | 4 drivers/net/wireless/intel/iwlwifi/mld/notif.c | 5 drivers/net/wireless/intel/iwlwifi/mld/scan.c | 30 + drivers/net/wireless/intel/iwlwifi/mld/scan.h | 9 drivers/net/wireless/intel/iwlwifi/mvm/d3.c | 2 drivers/net/wireless/intel/iwlwifi/mvm/fw.c | 3 drivers/net/wireless/microchip/wilc1000/hif.c | 2 drivers/net/wireless/virtual/virt_wifi.c | 1 drivers/nfc/pn533/uart.c | 3 drivers/nvmem/imx-ocotp-ele.c | 1 drivers/nvmem/imx-ocotp.c | 1 drivers/nvmem/zynqmp_nvmem.c | 8 drivers/reset/core.c | 1 drivers/s390/crypto/zcrypt_msgtype6.c | 32 - drivers/spi/spi-amlogic-spifc-a4.c | 12 drivers/spi/spi-cadence-quadspi.c | 17 drivers/spi/spi-geni-qcom.c | 9 drivers/spi/spi-stm32-ospi.c | 9 drivers/target/loopback/tcm_loop.c | 52 ++ drivers/target/target_core_file.c | 2 drivers/thermal/thermal_core.c | 32 + drivers/thunderbolt/nhi.c | 2 drivers/tty/vt/vt.c | 18 drivers/usb/cdns3/cdns3-gadget.c | 4 drivers/usb/class/cdc-acm.c | 9 drivers/usb/class/cdc-acm.h | 1 drivers/usb/class/usbtmc.c | 3 drivers/usb/common/ulpi.c | 5 drivers/usb/core/driver.c | 23 - drivers/usb/core/offload.c | 102 +++-- drivers/usb/core/phy.c | 12 drivers/usb/core/quirks.c | 3 drivers/usb/core/usb.c | 1 drivers/usb/dwc2/gadget.c | 2 drivers/usb/gadget/function/f_ecm.c | 37 + drivers/usb/gadget/function/f_eem.c | 59 +-- drivers/usb/gadget/function/f_hid.c | 19 drivers/usb/gadget/function/f_rndis.c | 51 +- drivers/usb/gadget/function/f_subset.c | 63 +-- drivers/usb/gadget/function/f_uac1_legacy.c | 47 +- drivers/usb/gadget/function/f_uvc.c | 39 + drivers/usb/gadget/function/u_ecm.h | 21 - drivers/usb/gadget/function/u_eem.h | 21 - drivers/usb/gadget/function/u_ether.c | 16 drivers/usb/gadget/function/u_gether.h | 22 - drivers/usb/gadget/function/u_rndis.h | 31 + drivers/usb/gadget/function/uvc.h | 3 drivers/usb/gadget/function/uvc_v4l2.c | 5 drivers/usb/gadget/udc/dummy_hcd.c | 42 +- drivers/usb/host/ehci-brcm.c | 4 drivers/usb/host/xhci-sideband.c | 18 drivers/usb/misc/usbio.c | 7 drivers/usb/serial/io_edgeport.c | 3 drivers/usb/serial/io_usbvend.h | 1 drivers/usb/serial/option.c | 4 drivers/usb/typec/altmodes/thunderbolt.c | 44 +- drivers/usb/typec/ucsi/ucsi.c | 9 fs/btrfs/ioctl.c | 12 fs/btrfs/tree-checker.c | 17 fs/btrfs/zoned.c | 6 fs/smb/client/cifsglob.h | 6 fs/smb/client/file.c | 1 fs/smb/client/inode.c | 21 - fs/smb/client/smb2ops.c | 20 - fs/smb/server/smb2pdu.c | 121 ++++-- fs/smb/server/smbacl.c | 43 ++ fs/smb/server/smbacl.h | 2 fs/xfs/libxfs/xfs_attr_leaf.c | 22 + fs/xfs/libxfs/xfs_attr_leaf.h | 3 fs/xfs/libxfs/xfs_da_btree.c | 53 ++ fs/xfs/libxfs/xfs_da_btree.h | 2 fs/xfs/xfs_attr_inactive.c | 95 ++-- fs/xfs/xfs_inode.c | 3 include/crypto/if_alg.h | 5 include/linux/cgroup-defs.h | 3 include/linux/iio/iio.h | 12 include/linux/netdevice.h | 3 include/linux/netfilter/ipset/ip_set.h | 2 include/linux/skbuff.h | 1 include/linux/usb.h | 10 include/net/bluetooth/bluetooth.h | 39 + include/net/bluetooth/hci.h | 9 include/net/bluetooth/hci_core.h | 1 include/net/bluetooth/hci_sync.h | 3 include/net/netfilter/nf_conntrack_expect.h | 20 - include/net/netns/mpls.h | 1 io_uring/io_uring.c | 62 ++- io_uring/io_uring.h | 34 + io_uring/net.c | 4 io_uring/rsrc.c | 4 kernel/bpf/verifier.c | 37 + kernel/cgroup/cgroup.c | 88 ++++ kernel/kallsyms.c | 64 ++- kernel/power/em_netlink.c | 2 kernel/sched/debug.c | 4 kernel/sched/ext.c | 144 +++++-- kernel/sched/ext_idle.c | 33 + kernel/sched/fair.c | 10 kernel/sched/sched.h | 3 kernel/trace/bpf_trace.c | 4 lib/crypto/chacha-block-generic.c | 4 net/atm/lec.c | 72 ++- net/atm/lec.h | 2 net/bluetooth/hci_conn.c | 113 +++++ net/bluetooth/hci_event.c | 153 ++++--- net/bluetooth/hci_sync.c | 152 ++++++- net/bluetooth/l2cap_sock.c | 20 - net/bluetooth/mgmt.c | 17 net/bluetooth/sco.c | 26 + net/bluetooth/smp.c | 11 net/bridge/br_arp_nd_proxy.c | 18 net/bridge/br_mrp_netlink.c | 4 net/core/dev.c | 38 + net/core/skmsg.c | 13 net/hsr/hsr_device.c | 32 - net/ipv6/addrconf.c | 6 net/ipv6/datagram.c | 10 net/ipv6/icmp.c | 3 net/ipv6/ioam6.c | 4 net/ipv6/ip6_flowlabel.c | 5 net/ipv6/ip6_tunnel.c | 5 net/ipv6/ndisc.c | 3 net/mac80211/tdls.c | 2 net/mpls/af_mpls.c | 29 + net/mptcp/protocol.c | 30 + net/netfilter/ipset/ip_set_core.c | 4 net/netfilter/ipset/ip_set_hash_gen.h | 2 net/netfilter/ipset/ip_set_list_set.c | 4 net/netfilter/nf_conntrack_broadcast.c | 8 net/netfilter/nf_conntrack_expect.c | 25 + net/netfilter/nf_conntrack_h323_main.c | 12 net/netfilter/nf_conntrack_helper.c | 13 net/netfilter/nf_conntrack_netlink.c | 87 +--- net/netfilter/nf_conntrack_sip.c | 4 net/netfilter/nf_flow_table_offload.c | 196 ++++++---- net/netfilter/nf_tables_api.c | 7 net/netfilter/nfnetlink_log.c | 2 net/netfilter/x_tables.c | 23 + net/netfilter/xt_cgroup.c | 6 net/netfilter/xt_rateest.c | 5 net/qrtr/af_qrtr.c | 31 - net/rds/ib_rdma.c | 7 net/sched/cls_api.c | 1 net/sched/cls_flow.c | 10 net/sched/cls_fw.c | 14 net/sched/sch_hfsc.c | 4 net/sched/sch_netem.c | 5 net/x25/x25_in.c | 9 net/x25/x25_subr.c | 1 sound/hda/codecs/realtek/alc269.c | 12 sound/pci/ctxfi/ctatc.c | 10 sound/pci/ctxfi/ctdaio.c | 86 ++-- sound/soc/cirrus/ep93xx-i2s.c | 34 + sound/soc/intel/boards/Kconfig | 2 sound/usb/caiaq/device.c | 2 sound/usb/qcom/qc_audio_offload.c | 10 sound/usb/quirks.c | 2 tools/objtool/check.c | 5 tools/objtool/elf.c | 23 - tools/testing/selftests/cgroup/lib/cgroup_util.c | 15 tools/testing/selftests/cgroup/lib/include/cgroup_util.h | 2 tools/testing/selftests/cgroup/test_core.c | 3 tools/testing/selftests/cgroup/test_kill.c | 7 311 files changed, 3899 insertions(+), 1749 deletions(-)
Adam Crosser (1):
gpib: fix use-after-free in IO ioctl handlers
Aditya Garg (1):
HID: appletb-kbd: add .resume method in PM
Adrian Freund (1):
HID: logitech-hidpp: Enable MX Master 4 over bluetooth
Alan Stern (2):
USB: dummy-hcd: Fix locking/synchronization error
USB: dummy-hcd: Fix interrupt synchronization error
Aldo Conte (1):
iio: light: veml6070: fix veml6070_read() return value
Aleksandr Nogikh (1):
x86/kexec: Disable KCOV instrumentation after load_segments()
Alex Deucher (1):
drm/amdgpu/pm: drop SMU driver if version not matched messages
Alex Hung (1):
drm/amd/display: Fix gamma 2.2 colorop TFs
Alexander Popov (1):
wifi: virt_wifi: remove SET_NETDEV_DEV to avoid use-after-free
Alexander Usyskin (1):
mei: me: reduce the scope on unexpected reset
Alexei Starovoitov (1):
bpf: Fix regsafe() for pointers to packet
Alexey Velichayshiy (1):
wifi: iwlwifi: mvm: fix potential out-of-bounds read in iwl_mvm_nd_match_info_handler()
Alice Ryhl (1):
rust_binder: use AssertSync for BINDER_VM_OPS
Andrea Righi (1):
sched_ext: Fix stale direct dispatch state in ddsp_dsq_id
Andrei Kuchynski (1):
usb: typec: thunderbolt: Set enter_vdo during initialization
Antoniu Miclaus (5):
iio: adc: ade9000: move mutex init before IRQ registration
iio: accel: adxl380: fix FIFO watermark bit 8 always written as 0
iio: accel: adxl313: add missing error check in predisable
iio: dac: ad5770r: fix error return in ad5770r_read_raw()
iio: imu: adis16550: fix swapped gyro/accel filter functions
Asim Viladi Oglu Manizada (1):
ksmbd: fix OOB write in QUERY_INFO for compound requests
Barnabás Pőcze (1):
gpiolib: clear requested flag if line is invalid
Bart Van Assche (1):
Input: synaptics-rmi4 - fix a locking bug in an error path
Bartosz Golaszewski (3):
gpio: shared: call gpio_chip::of_xlate() if set
gpio: shared: handle pins shared by child nodes of devices
gpio: shared: shorten the critical section in gpiochip_setup_shared()
Benoît Sevens (1):
HID: wacom: fix out-of-bounds read in wacom_intuos_bt_irq
Berk Cem Goksel (1):
ALSA: caiaq: fix stack out-of-bounds read in init_card
Billy Tsai (1):
iio: adc: aspeed: clear reference voltage bits before configuring vref
Buday Csaba (1):
net: fec: fix the PTP periodic output sysfs interface
Cen Zhang (1):
Bluetooth: SCO: fix race conditions in sco_sock_connect()
Changwoo Min (2):
PM: EM: Fix NULL pointer dereference when perf domain ID is not found
sched_ext: Fix is_bpf_migration_disabled() false negative on non-PREEMPT_RCU
Chen Ni (1):
drm/sysfb: Fix efidrm error handling and memory type mismatch
Cheng-Yang Chou (1):
sched_ext: Fix inconsistent NUMA node lookup in scx_select_cpu_dfl()
Christian Eggers (1):
nvmem: imx: assign nvmem_cell_info::raw_len
Christoffer Sandberg (1):
Input: i8042 - add TUXEDO InfinityBook Max 16 Gen10 AMD to i8042 quirk table
Conor Dooley (1):
firmware: microchip: fail auto-update probe if no flash found
Corey Hickey (1):
hwmon: (asus-ec-sensors) Fix T_Sensor for PRIME X670E-PRO WIFI
Cosmin Tanislav (2):
counter: rz-mtu3-cnt: prevent counter from being toggled multiple times
counter: rz-mtu3-cnt: do not use struct rz_mtu3_channel's dev member
Dag Smedberg (1):
ALSA: usb-audio: Exclude Scarlett Solo 1st Gen from SKIP_IFACE_SETUP
Daniel Borkmann (1):
bpf: Fix incorrect pruning due to atomic fetch precision tracking
Daniele Ceraolo Spurio (3):
drm/xe/pxp: Clean up termination status on failure drm/xe/pxp: Remove incorrect handling of impossible state during suspend drm/xe/pxp: Clear restart flag in pxp_start after jumping back
Dave Penkler (1):
gpib: Fix fluke driver s390 compile issue
David Carlier (1):
net: ti: icssg-prueth: fix missing data copy and wrong recycle in ZC RX dispatch
David Lechner (7):
iio: imu: bno055: fix BNO055_SCAN_CH_COUNT off by one
iio: add IIO_DECLARE_QUATERNION() macro
iio: orientation: hid-sensor-rotation: fix quaternion alignment
iio: orientation: hid-sensor-rotation: add timestamp hack to not break userspace
iio: adc: ti-adc161s626: fix buffer read on big-endian
iio: adc: ti-adc161s626: use DMA-safe memory for spi_read()
iio: light: vcnl4035: fix scan buffer on big-endian
Deepanshu Kartikey (3):
wifi: mac80211: check tdls flag in ieee80211_tdls_oper
atm: lec: fix use-after-free in sock_def_readable()
comedi: dt2815: add hardware detection to prevent crash
Dimitri Daskalakis (2):
eth: fbnic: Account for page fragments when updating BDQ tail
eth: fbnic: Increase FBNIC_QUEUE_SIZE_MIN to 64
Dipayaan Roy (1):
net: mana: Fix RX skb truesize accounting
Dmitry Torokhov (2):
iio: adc: ti-ads7950: normalize return value of gpio_get
iio: adc: ti-ads7950: do not clobber gpio state in ti_ads7950_get()
Donet Tom (1):
drm/amdgpu: Change AMDGPU_VA_RESERVED_TRAP_SIZE to 64KB
Edward Adam Davis (1):
comedi: runflags cannot determine whether to reclaim chanlist
Emanuele Ghidoli (1):
spi: cadence-qspi: Fix exec_mem_op error handling
Emmanuel Grumbach (1):
wifi: iwlwifi: mvm: don't send a 6E related command when not supported
Eric Biggers (2):
lib/crypto: chacha: Zeroize permuted_state before it leaves scope
crypto: tegra - Add missing CRYPTO_ALG_ASYNC
Eric Dumazet (3):
ipv6: icmp: clear skb2->cb[] in ip6_err_gen_icmpv6_unreach()
ip6_tunnel: clear skb2->cb[] in ip4ip6_err()
ipv6: avoid overflows in ip6_datagram_send_ctl()Ernestas Kulik (1):
USB: serial: option: add MeiG Smart SRM825WN
Ethan Tidmore (4):
iio: gyro: mpu3050: Fix incorrect free_irq() variable
iio: gyro: mpu3050: Fix irq resource leak
iio: gyro: mpu3050: Move iio_device_register() to correct location
iio: gyro: mpu3050: Fix out-of-sequence free_irq()
Fedor Pchelkin (2):
net: macb: fix clk handling on PCI glue driver removal
net: macb: properly unregister fixed rate clocks
Felix Gu (8):
gpio: qixis-fpga: Fix error handling for devm_regmap_init_mmio()
spi: stm32-ospi: Fix resource leak in remove() callback
spi: stm32-ospi: Fix reset control leak on probe error
spi: amlogic: spifc-a4: unregister ECC engine on probe failure and remove() callback
iio: adc: ti-ads1119: Fix unbalanced pm reference count in ds1119_single_conversion()
iio: adc: ti-ads1119: Reinit completion before wait_for_completion_timeout()
iio: adc: ti-ads1119: Replace IRQF_ONESHOT with IRQF_NO_THREAD
usb: misc: usbio: Fix URB memory leak on submit failure
Filipe Manana (1):
btrfs: reserve enough transaction items for qgroup ioctls
Florian Westphal (3):
netfilter: nfnetlink_log: account for netlink header size
netfilter: x_tables: ensure names are nul-terminated
netfilter: ipset: use nla_strcmp for IPSET_ATTR_NAME attr
Francesco Lavra (2):
iio: imu: st_lsm6dsx: Set FIFO ODR for accelerometer and gyroscope only
iio: imu: st_lsm6dsx: Set buffer sampling frequency for accelerometer only
Frank Li (1):
dt-bindings: auxdisplay: ht16k33: Use unevaluatedProperties to fix common property warning
Frej Drejhammar (1):
USB: serial: io_edgeport: add support for Blackbox IC135A
Gabor Juhos (1):
usb: core: phy: avoid double use of 'usb3-phy'
Geliang Tang (1):
mptcp: add eat_recv_skb helper
Geoffrey D. Bennett (1):
ALSA: usb-audio: Exclude Scarlett 2i2 1st Gen (8016) from SKIP_IFACE_SETUP
Giorgi Tchankvetadze (2):
iio: adc: ade9000: fix wrong return type in streaming push
iio: adc: ade9000: fix wrong register in CALIBBIAS case for active power
Greg Kroah-Hartman (2):
drm/ioc32: stop speculation on the drm_compat_ioctl path Linux 6.19.12
Guan-Yu Lin (2):
usb: host: xhci-sideband: delegate offload_usage tracking to class drivers
usb: core: use dedicated spinlock for offload state
Guangshuo Li (5):
net: mana: fix use-after-free in add_adev() error path
usb: ulpi: fix double free in ulpi_register_interface() error path
auxdisplay: line-display: fix NULL dereference in linedisp_release
reset: gpio: fix double free in reset_add_gpio_aux_device() error path
cpufreq: governor: fix double free in cpufreq_dbs_governor_init() error path
Guoyu Su (1):
net: use skb_header_pointer() for TCPv4 GSO frag_off check
Harald Freudenberger (1):
s390/zcrypt: Fix memory leak with CCA cards used as accelerator
Heitor Alves de Siqueira (1):
usb: usbtmc: Flush anchored URBs in usbtmc_release
Herbert Xu (2):
crypto: algif_aead - Revert to operating out-of-place
crypto: authencesn - Do not place hiseq at end of dst for out-of-place decryption
Horia Geantă (2):
crypto: caam - fix DMA corruption on long hmac keys
crypto: caam - fix overflow on long hmac keys
Ian Abbott (4):
comedi: Reinit dev->spinlock between attachments to low-level drivers
comedi: ni_atmio16d: Fix invalid clean-up after failed attach
comedi: me_daq: Fix potential overrun of firmware buffer
comedi: me4000: Fix potential overrun of firmware buffer
Ian Rogers (1):
perf/x86: Fix potential bad container_of in intel_pmu_hw_config
Ivan Vera (1):
nvmem: zynqmp_nvmem: Fix buffer size in DMA and memcpy
JP Hein (1):
USB: core: add NO_LPM quirk for Razer Kiyo Pro webcam
Jamie Gibbons (1):
dt-bindings: gpio: fix microchip #interrupt-cells
Jason Gunthorpe (1):
iommupt: Fix short gather if the unmap goes into a large mapping
Jens Axboe (1):
io_uring: protect remaining lockless ctx->rings accesses with RCU
Jessica Liu (1):
irqchip/riscv-aplic: Restrict genpd notifier to device tree only
Jiayuan Chen (1):
net: qrtr: replace qrtr_tx_flow radix_tree with xarray to fix memory leak
Jihed Chaibi (1):
ASoC: ep93xx: Fix unchecked clk_prepare_enable() and add rollback on failure
Jimmy Hu (1):
usb: gadget: uvc: fix NULL pointer dereference during unbind race
Joe Lawrence (1):
objtool/klp: fix mkstemp() failure with long paths
Johan Hovold (1):
gpib: lpvo_usb: fix memory leak on disconnect
Johannes Berg (1):
wifi: iwlwifi: mld: correctly set wifi generation data
Johannes Thumshirn (1):
btrfs: don't take device_list_mutex when querying zone info
Jonathan Cavitt (1):
drm/xe/xe_pagefault: Disallow writes to read-only VMAs
Jonathan Rissanen (1):
Bluetooth: hci_h4: Fix race during initialization
Josef Bacik (1):
scsi: target: tcm_loop: Drain commands in target_reset handler
Josh Poimboeuf (2):
objtool: Fix Clang jump table detection
iio: imu: bmi160: Remove potential undefined behavior in bmi160_config_pin()
Julian Braha (1):
ASoC: Intel: boards: fix unmet dependency on PINCTRL
Juno Choi (1):
usb: dwc2: gadget: Fix spin_lock/unlock mismatch in dwc2_hsotg_udc_stop()
Junrui Luo (1):
drm/amdgpu: validate doorbell_offset in user queue creation
Junxi Qian (1):
io_uring/net: fix slab-out-of-bounds read in io_bundle_nbufs()
Justin Chen (1):
usb: ehci-brcm: fix sleep during atomic
Keenan Dong (2):
Bluetooth: MGMT: validate LTK enc_size on load
Bluetooth: MGMT: validate mesh send advertising payload length
Konrad Dybcio (1):
thunderbolt: Fix property read in nhi_wake_supported()
Kuen-Han Tsai (8):
usb: gadget: u_ether: Fix race between gether_disconnect and eth_stop
usb: gadget: u_ether: Fix NULL pointer deref in eth_get_drvinfo
usb: gadget: f_subset: Fix unbalanced refcnt in geth_free
usb: gadget: f_rndis: Protect RNDIS options with mutex
usb: gadget: f_ecm: Fix net_device lifecycle with device_move
usb: gadget: f_eem: Fix net_device lifecycle with device_move
usb: gadget: f_subset: Fix net_device lifecycle with device_move
usb: gadget: f_rndis: Fix net_device lifecycle with device_move
Kuniyuki Iwashima (1):
bpf: sockmap: Fix use-after-free of sk->sk_socket in sk_psock_verdict_data_ready().
Lee Jones (3):
HID: logitech-hidpp: Prevent use-after-free on force feedback initialisation failure
HID: core: Mitigate potential OOB by removing bogus memset()
HID: multitouch: Check to ensure report responses match the request
Li Xiasong (1):
mptcp: fix soft lockup in mptcp_recvmsg()
Liam Mitchell (1):
Input: bcm5974 - recover from failed mode switch
Liav Mordouch (1):
vt: discard stale unicode buffer on alt screen exit after resize
Lijo Lazar (1):
drm/amdgpu: Fix wait after reset sequence in S4
Liu Ying (1):
drm/bridge: Fix refcount shown via debugfs for encoder_bridges_show()
Long Li (4):
xfs: only assert new size for datafork during truncate extents
xfs: factor out xfs_attr3_node_entry_remove
xfs: factor out xfs_attr3_leaf_init
xfs: close crash window in attr dabtree inactivation
Lorenzo Bianconi (1):
net: airoha: Add missing cleanup bits in airoha_qdma_cleanup_rx_queue()
Luiz Augusto von Dentz (2):
Bluetooth: L2CAP: Add support for setting BT_PHY
Bluetooth: hci_sync: Fix UAF in le_read_features_complete
Luka Gejak (1):
net: hsr: fix VLAN add unwind on slave errors
Maarten Lankhorst (1):
Revert "drm: Fix use-after-free on framebuffers and property blobs when calling drm_dev_unplug"
Maciej W. Rozycki (2):
MIPS: SiByte: Bring back cache initialisation
MIPS: Fix the GCC version check for `__multi3' workaround
Marek Behún (1):
net: sfp: Fix Ubiquiti U-Fiber Instant SFP module on mvneta
Martin Schiller (2):
net/x25: Fix potential double free of skb net/x25: Fix overflow when accumulating packets
Miao Li (1):
usb: quirks: add DELAY_INIT quirk for another Silicon Motion flash drive
Michael Chan (2):
bnxt_en: Refactor some basic ring setup and adjustment logic
bnxt_en: Don't assume XDP is never enabled in bnxt_init_dflt_ring_mode()
Michael Zimmermann (1):
usb: gadget: f_hid: move list and spinlock inits from bind to alloc
Michal Piekos (1):
net: stmmac: skip VLAN restore when VLAN hash ops are missing
Mikko Perttunen (1):
i2c: tegra: Don't mark devices with pins as IRQ safe
Mikulas Patocka (1):
crypto: deflate - fix spurious -ENOSPC
Nathan Rebello (1):
usb: typec: ucsi: validate connector number in ucsi_notify_common()
Nicolas Pitre (1):
vt: resize saved unicode buffer on alt screen exit after resize
Norbert Szetei (1):
crypto: af-alg - fix NULL pointer dereference in scatterwalk
Oleh Konko (3):
Bluetooth: SMP: derive legacy responder STK authentication from MITM state
Bluetooth: SMP: force responder MITM requirements before building the pairing response
Bluetooth: hci_event: move wake reason storage into validated event handlers
Oliver Neukum (1):
cdc-acm: new quirk for EPSON HMD
Pablo Neira Ayuso (7):
netfilter: flowtable: strictly check for maximum number of actions
netfilter: nf_conntrack_expect: honor expectation helper field
netfilter: nf_conntrack_expect: use expect->helper
netfilter: nf_conntrack_expect: store netns and zone in expectation
netfilter: ctnetlink: ignore explicit helper on new expectations
netfilter: x_tables: restrict xt_check_match/xt_check_target extensions for NFPROTO_ARP
netfilter: nf_tables: reject immediate NF_QUEUE verdict
Pagadala Yesu Anjaneyulu (1):
wifi: iwlwifi: mld: Fix MLO scan timing
Paolo Abeni (2):
ipv6: prevent possible UaF in addrconf_permanent_addr()
net: introduce mangleid_features
Paul SAGE (1):
tg3: replace placeholder MAC address with device property
Paul Walmsley (1):
riscv: kgdb: fix several debug register assignment bugs
Pauli Virtanen (5):
Bluetooth: hci_sync: call destroy in hci_cmd_sync_run if immediate
Bluetooth: hci_sync: hci_cmd_sync_queue_once() return -EEXIST if exists
Bluetooth: hci_sync: fix leaks when hci_cmd_sync_queue_once fails
Bluetooth: hci_conn: fix potential UAF in set_cig_params_sync
Bluetooth: hci_event: fix potential UAF in hci_le_remote_conn_param_req_evt
Paulo Alcantara (1):
smb: client: fix generic/694 due to wrong ->i_blocks
Pavan Chebbi (1):
bnxt_en: Restore default stat ctxs for ULP when resource is available
Pengpeng Hou (3):
net/ipv6: ioam6: prevent schema length wraparound in trace fill
bnxt_en: set backing store type from query type
NFC: pn533: bound the UART receive buffer
Pepper Gray (1):
arm64/scs: Fix handling of advance_loc4
Peter Zijlstra (2):
sched/fair: Fix zero_vruntime tracking fix
sched/debug: Fix avg_vruntime() usage
Petr Mladek (4):
kallsyms: clean up @namebuf initialization in kallsyms_lookup_buildid()
kallsyms: clean up modname and modbuildid initialization in kallsyms_lookup_buildid()
kallsyms: cleanup code for appending the module buildid
kallsyms: prevent module removal when printing module name and buildid
Praveen Talari (1):
spi: geni-qcom: Check DMA interrupts early in ISR
Prike Liang (1):
drm/amdgpu: fix the idr allocation flags
Qi Tang (4):
netfilter: nf_conntrack_helper: pass helper to expect cleanup
netfilter: ctnetlink: zero expect NAT fields when CTA_EXPECT_NAT absent
bpf: reject direct access to nullable PTR_TO_BUF pointers io_uring/rsrc: reject zero-length fixed buffer import
Qingfang Deng (1):
netdevsim: fix build if SKB_EXTENSIONS=n
Rafael J. Wysocki (2):
thermal: core: Address thermal zone removal races with resume
thermal: core: Fix thermal zone device registration error path
Reshma Immaculate Rajkumar (1):
wifi: ath11k: Pass the correct value of each TID during a stop AMPDU session
Sabrina Dubroca (1):
mpls: add seqcount to protect the platform_label{,s} pair
Saeed Mahameed (2):
net/mlx5: Avoid "No data available" when FW version queries fail net/mlx5: Fix switchdev mode rollback in case of failure
Sanman Pradhan (6):
hwmon: (tps53679) Fix array access with zero-length block read
hwmon: (pxe1610) Check return value of page-select write in probe
hwmon: (ltc4286) Add missing MODULE_IMPORT_NS("PMBUS")
hwmon: (tps53679) Fix device ID comparison and printing in tps53676_identify()
hwmon: (occ) Fix missing newline in occ_show_extended()
hwmon: (occ) Fix division by zero in occ_show_power_1()
Sebastian Urban (1):
usb: gadget: dummy_hcd: fix premature URB completion when ZLP follows partial transfer
Shay Drory (1):
net/mlx5: lag: Check for LAG device before creating debugfs
Shengyu Qu (1):
Input: xpad - add support for BETOP BTP-KP50B/C controller's wireless mode
Shenwei Wang (1):
gpio: mxc: map Both Edge pad wakeup to Rising Edge
Sherry Yang (1):
iommupt/amdv1: mark amdv1pt_install_leaf_entry as __always_inline
Shiji Yang (1):
mips: ralink: update CPU clock index
Sourav Nayak (1):
ALSA: hda/realtek: add quirk for HP Victus 15-fb0xxx
Srinivasan Shanmugam (1):
drm/amd/display: Fix NULL pointer dereference in dcn401_init_hw()
Srujana Challa (1):
virtio_net: clamp rss_max_key_size to NETDEV_RSS_KEY_LEN
Stanislav Kinsburskii (1):
mshv: Fix error handling in mshv_region_pin
Stefan Wiehler (1):
mips: mm: Allocate tlb_vpn array atomically
Sunil V L (1):
ACPI: RIMT: Add dependency between iommu and devices
Suraj Gupta (2):
net: xilinx: axienet: Correct BD length masks to match AXIDMA IP spec
net: xilinx: axienet: Fix BQL accounting for multi-BD TX packets
Sven Eckelmann (Plasma Cloud) (1):
net: ethernet: mtk_ppe: avoid NULL deref when gmac0 is disabled
Taegu Ha (1):
usb: gadget: f_uac1_legacy: validate control request size
Takashi Iwai (3):
ALSA: ctxfi: Check the error for index mapping
ALSA: ctxfi: Fix missing SPDIFI1 index handling
ALSA: ctxfi: Don't enumerate SPDIF1 at DAIO initialization
Tejun Heo (4):
cgroup: Wait for dying tasks to leave on rmdir selftests/cgroup: Don't require synchronous populated update on task exit
cgroup: Fix cgroup_drain_dying() testing the wrong condition
sched_ext: Fix SCX_KICK_WAIT deadlock by deferring wait to balance callback
Thinh Nguyen (1):
scsi: target: file: Use kzalloc_flex for aio_cmd
Thomas Bogendoerfer (1):
tg3: Fix race for querying speed/duplex
Thomas Richter (1):
s390/cpum_sf: Cap sampling rate to prevent lsctl exception
Thomas Zimmermann (1):
drm/ast: dp501: Fix initialization of SCU2C
Tzung-Bi Shih (1):
gpio: Fix resource leaks on errors in gpiochip_add_data_with_key()
Valek Andrej (1):
iio: accel: fix ADXL355 temperature signature value
Varun R Mallya (1):
bpf: Reject sleepable kprobe_multi programs at attach time
Ville Syrjälä (3):
drm/i915/dsi: Don't do DSC horizontal timing adjustments in command mode drm/i915/dp: Use crtc_state->enhanced_framing properly on ivb/hsw CPU eDP drm/i915/cdclk: Do the full CDCLK dance for min_voltage_level changes
Vladimir Zapolskiy (1):
interconnect: qcom: sm8450: Fix NULL pointer dereference in icc_link_nodes()
Wanquan Zhong (1):
USB: serial: option: add support for Rolling Wireless RW135R-GL
Wei Fang (5):
net: enetc: reset PIR and CIR if they are not equal when initializing TX ring
net: enetc: add graceful stop to safely reinitialize the TX Ring
net: enetc: do not access non-existent registers on pseudo MAC
net: enetc: check whether the RSS algorithm is Toeplitz
net: enetc: do not allow VF to configure the RSS key
Weiming Shi (1):
rds: ib: reject FRMR registration before IB connection is established
Willem de Bruijn (1):
net: correctly handle tunneled traffic on IPV6_CSUM GSO fallback
Xiang Mei (5):
net/sched: sch_hfsc: fix divide-by-zero in rtsc_min()
net: bonding: fix use-after-free in bond_xmit_broadcast()
bridge: mrp: reject zero test interval to avoid OOM panic net/sched: cls_fw: fix NULL pointer dereference on shared blocks net/sched: cls_flow: fix NULL pointer dereference on shared blocks
Xingjing Deng (2):
misc: fastrpc: possible double-free of cctx->remote_heap
misc: fastrpc: check qcom_scm_assign_mem() return in rpmsg_probe
Xu Yang (1):
dt-bindings: connector: add pd-disable dependency
Yang Wang (1):
drm/amd/pm: disable OD_FAN_CURVE if temp or pwm range invalid for smu v13
Yang Yang (3):
bridge: br_nd_send: linearize skb before parsing ND options
bridge: br_nd_send: validate ND option lengths
vxlan: validate ND option lengths in vxlan_na_create
Yasuaki Torimaru (1):
wifi: wilc1000: fix u8 overflow in SSID scan buffer size calculation
Yifan Wu (1):
netfilter: ipset: drop logically empty buckets in mtype_del
Yochai Eisenrich (2):
net: ipv6: ndisc: fix ndisc_ra_useropt to initialize nduseropt_padX fields to zero to prevent an info-leak
net: sched: cls_api: fix tc_chain_fill_node to initialize tcm_info to zero to prevent an info-leak
Yongchao Wu (2):
usb: cdns3: gadget: fix NULL pointer dereference in ep_queue
usb: cdns3: gadget: fix state inconsistency on gadget init failure
Youssef Samir (1):
accel/qaic: Handle DBC deactivation if the owner went away
Yucheng Lu (1):
net/sched: sch_netem: fix out-of-bounds access in packet corruption
Yufan Chen (1):
net: ftgmac100: fix ring allocation unwind on open failure
Zhang Heng (3):
ALSA: hda/realtek: add quirk for Acer Swift SFG14-73
ALSA: hda/realtek: Add quirk for ASUS ROG Strix SCAR 15
ALSA: hda/realtek: change quirk for HP OmniBook 7 Laptop 16-bh0xxx
ZhengYuan Huang (1):
btrfs: reject root items with drop_progress and zero drop_level
Zhengchuan Liang (1):
net: ipv6: flowlabel: defer exclusive option free until RCU teardown
Zishun Yi (1):
riscv: Reset pmm when PR_TAGGED_ADDR_ENABLE is not set
Zoltan Illes (1):
Input: xpad - add support for Razer Wolverine V3 Pro
hkbinbin (1):
Bluetooth: hci_sync: fix stack buffer overflow in hci_le_big_create_sync
Greg Kroah-Hartman
maintainerDocumentation/devicetree/bindings/auxdisplay/holtek,ht16k33.yaml +1 -1
@@ -66,7 +66,7 @@ then: required: - refresh-rate-hz -additionalProperties: false +unevaluatedProperties: false examples: - |
Documentation/devicetree/bindings/connector/usb-connector.yaml +1 -0
@@ -301,6 +301,7 @@ properties: maxItems: 4 dependencies: + pd-disable: [typec-power-opmode] sink-vdos-v1: [ sink-vdos ] sink-vdos: [ sink-vdos-v1 ]
Documentation/devicetree/bindings/gpio/microchip,mpfs-gpio.yaml +2 -2
@@ -37,7 +37,7 @@ properties: const: 2 "#interrupt-cells": - const: 1 + const: 2 ngpios: description:
@@ -86,7 +86,7 @@ examples: gpio-controller; #gpio-cells = <2>; interrupt-controller; - #interrupt-cells = <1>; + #interrupt-cells = <2>; interrupts = <53>, <53>, <53>, <53>, <53>, <53>, <53>, <53>, <53>, <53>, <53>, <53>,
Makefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 6 PATCHLEVEL = 19 -SUBLEVEL = 11 +SUBLEVEL = 12 EXTRAVERSION = NAME = Baby Opossum Posse
arch/arm64/kernel/pi/patch-scs.c +8 -0
@@ -192,6 +192,14 @@ static int scs_handle_fde_frame(const struct eh_frame *frame, size -=2 ;break ; +case DW_CFA_advance_loc4: + loc += *opcode++ * code_alignment_factor; + loc += (*opcode++ <<8 ) * code_alignment_factor; + loc += (*opcode++ <<16 ) * code_alignment_factor; + loc += (*opcode++ <<24 ) * code_alignment_factor; + size -=4 ; +break ; +case DW_CFA_def_cfa:case DW_CFA_offset_extended: size =skip_xleb128 (&opcode, size);
arch/mips/lib/multi3.c +3 -3
@@ -4,12 +4,12 @@#include "libgcc.h" /* -* GCC 7 & older can suboptimally generate __multi3 calls for mips64r6, so for +* GCC 9 & older can suboptimally generate __multi3 calls for mips64r6, so for * that specific case only we implement that intrinsic here. * * See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82981 */ -#if defined(CONFIG_64BIT ) && defined(CONFIG_CPU_MIPSR6 ) && (__GNUC__ <8 ) +#if defined(CONFIG_64BIT ) && defined(CONFIG_CPU_MIPSR6 ) && (__GNUC__ <10 )/* multiply 64-bit values, low 64-bits returned */ static inline long long notrace dmulu (long long a,long long b)
@@ -51,4 +51,4 @@ ti_type notrace __multi3(ti_type a, ti_type b) }EXPORT_SYMBOL (__multi3); -#endif /* 64BIT && CPU_MIPSR6 && GCC7 */ +#endif /* 64BIT && CPU_MIPSR6 && GCC9 */
arch/mips/mm/cache.c +2 -1
@@ -207,7 +207,8 @@ void cpu_cache_init(void) {if (IS_ENABLED (CONFIG_CPU_R3000 ) && cpu_has_3k_cache)r3k_cache_init (); -if (IS_ENABLED (CONFIG_CPU_R4K_CACHE_TLB ) && cpu_has_4k_cache) +if ((IS_ENABLED (CONFIG_CPU_R4K_CACHE_TLB ) || +IS_ENABLED (CONFIG_CPU_SB1 )) && cpu_has_4k_cache)r4k_cache_init ();if (IS_ENABLED (CONFIG_CPU_CAVIUM_OCTEON ) && cpu_has_octeon_cache)
arch/mips/mm/tlb-r4k.c +1 -1
@@ -538,7 +538,7 @@ static void __ref r4k_tlb_uniquify(void) tlb_vpn_size = tlbsize *sizeof (*tlb_vpns); tlb_vpns = (use_slab ? -kmalloc (tlb_vpn_size,GFP_KERNEL ) : +kmalloc (tlb_vpn_size,GFP_ATOMIC ) :memblock_alloc_raw (tlb_vpn_size,sizeof (*tlb_vpns)));if (WARN_ON (!tlb_vpns))return ;/* Pray local_flush_tlb_all() is good enough. */
arch/mips/ralink/clk.c +4 -4
@@ -21,16 +21,16 @@ static const char *clk_cpu(int *idx) {switch (ralink_soc) {case RT2880_SOC : - *idx =0 ; + *idx =1 ;return "ralink,rt2880-sysc" ;case RT3883_SOC : - *idx =0 ; + *idx =1 ;return "ralink,rt3883-sysc" ;case RT305X_SOC_RT3050 : - *idx =0 ; + *idx =1 ;return "ralink,rt3050-sysc" ;case RT305X_SOC_RT3052 : - *idx =0 ; + *idx =1 ;return "ralink,rt3052-sysc" ;case RT305X_SOC_RT3350 : *idx =1 ;
arch/riscv/kernel/kgdb.c +4 -3
@@ -175,7 +175,7 @@ struct dbg_reg_def_t dbg_reg_def[DBG_MAX_REG_NUM] = { {DBG_REG_T1, GDB_SIZEOF_REG, offsetof(struct pt_regs, t1)}, {DBG_REG_T2, GDB_SIZEOF_REG, offsetof(struct pt_regs, t2)}, {DBG_REG_FP, GDB_SIZEOF_REG, offsetof(struct pt_regs, s0)}, - {DBG_REG_S1, GDB_SIZEOF_REG, offsetof(struct pt_regs, a1)}, + {DBG_REG_S1, GDB_SIZEOF_REG, offsetof(struct pt_regs, s1)}, {DBG_REG_A0, GDB_SIZEOF_REG, offsetof(struct pt_regs, a0)}, {DBG_REG_A1, GDB_SIZEOF_REG, offsetof(struct pt_regs, a1)}, {DBG_REG_A2, GDB_SIZEOF_REG, offsetof(struct pt_regs, a2)},
@@ -244,8 +244,9 @@ sleeping_thread_to_gdb_regs(unsigned long *gdb_regs, struct task_struct *task) gdb_regs[DBG_REG_S6_OFF ] = task->thread.s[6 ]; gdb_regs[DBG_REG_S7_OFF ] = task->thread.s[7 ]; gdb_regs[DBG_REG_S8_OFF ] = task->thread.s[8 ]; - gdb_regs[DBG_REG_S9_OFF ] = task->thread.s[10 ]; - gdb_regs[DBG_REG_S10_OFF ] = task->thread.s[11 ]; + gdb_regs[DBG_REG_S9_OFF ] = task->thread.s[9 ]; + gdb_regs[DBG_REG_S10_OFF ] = task->thread.s[10 ]; + gdb_regs[DBG_REG_S11_OFF ] = task->thread.s[11 ]; gdb_regs[DBG_REG_EPC_OFF ] = task->thread.ra; }
arch/riscv/kernel/process.c +3 -1
@@ -324,8 +324,10 @@ long set_tagged_addr_ctrl(struct task_struct *task, unsigned long arg)if (arg &PR_TAGGED_ADDR_ENABLE && (tagged_addr_disabled || !pmlen))return -EINVAL ; -if (!(arg &PR_TAGGED_ADDR_ENABLE )) +if (!(arg &PR_TAGGED_ADDR_ENABLE )) { pmlen =PMLEN_0 ; + pmm =ENVCFG_PMM_PMLEN_0 ; + }if (mmap_write_lock_killable (mm))return -EINTR ;
arch/s390/kernel/perf_cpum_sf.c +5 -1
@@ -1168,6 +1168,7 @@ static void hw_collect_samples(struct perf_event *event, unsigned long *sdbt,static void hw_perf_event_update (struct perf_event *event,int flush_all) {unsigned long long event_overflow, sampl_overflow, num_sdb; +struct cpu_hw_sf *cpuhw =this_cpu_ptr (&cpu_hw_sf);struct hw_perf_event *hwc = &event->hw;union hws_trailer_header prev, new;struct hws_trailer_entry *te;
@@ -1247,8 +1248,11 @@ static void hw_perf_event_update(struct perf_event *event, int flush_all)* are dropped. * Slightly increase the interval to avoid hitting this limit. */ -if (event_overflow) +if (event_overflow) {SAMPL_RATE (hwc) +=DIV_ROUND_UP (SAMPL_RATE (hwc),10 ); +if (SAMPL_RATE (hwc) > cpuhw->qsi.max_sampl_rate) +SAMPL_RATE (hwc) = cpuhw->qsi.max_sampl_rate; + } } static inline unsigned long aux_sdb_index(struct aux_buffer *aux,
arch/x86/events/intel/core.c +4 -2
@@ -4594,8 +4594,10 @@ static int intel_pmu_hw_config(struct perf_event *event)intel_pmu_set_acr_caused_constr (leader, idx++, cause_mask);if (leader->nr_siblings) { -for_each_sibling_event (sibling, leader) -intel_pmu_set_acr_caused_constr (sibling, idx++, cause_mask); +for_each_sibling_event (sibling, leader) { +if (is_x86_event (sibling)) +intel_pmu_set_acr_caused_constr (sibling, idx++, cause_mask); + } }if (leader != event)
arch/x86/kernel/Makefile +14 -0
@@ -44,6 +44,20 @@ KCOV_INSTRUMENT_unwind_orc.o := n KCOV_INSTRUMENT_unwind_frame.o := n KCOV_INSTRUMENT_unwind_guess.o := n +# Disable KCOV to prevent crashes during kexec: load_segments() invalidates +# the GS base, which KCOV relies on for per-CPU data. +# +# As KCOV and KEXEC compatibility should be preserved (e.g. syzkaller is +# using it to collect crash dumps during kernel fuzzing), disabling +# KCOV for KEXEC kernels is not an option. Selectively disabling KCOV +# instrumentation for individual affected functions can be fragile, while +# adding more checks to KCOV would slow it down. +# +# As a compromise solution, disable KCOV instrumentation for the whole +# source code file. If its coverage is ever needed, other approaches +# should be considered. +KCOV_INSTRUMENT_machine_kexec_64.o := n + CFLAGS_head32.o := -fno-stack-protector CFLAGS_head64.o := -fno-stack-protector CFLAGS_irq.o := -I $(src)/../include/asm/trace
arch/x86/mm/Makefile +2 -0
@@ -4,6 +4,8 @@ KCOV_INSTRUMENT_tlb.o := n KCOV_INSTRUMENT_mem_encrypt.o := n KCOV_INSTRUMENT_mem_encrypt_amd.o := n KCOV_INSTRUMENT_pgprot.o := n +# See the "Disable KCOV" comment in arch/x86/kernel/Makefile. +KCOV_INSTRUMENT_physaddr.o := n KASAN_SANITIZE_mem_encrypt.o := n KASAN_SANITIZE_mem_encrypt_amd.o := n
crypto/af_alg.c +13 -40
98 lines not on this page · raw message
crypto/algif_aead.c +19 -81
141 lines not on this page · raw message
crypto/algif_skcipher.c +3 -3
@@ -138,7 +138,7 @@ static int _skcipher_recvmsg(struct socket *sock, struct msghdr *msg,* Create a per request TX SGL for this request which tracks the * SG entries from the global TX SGL. */ - areq->tsgl_entries =af_alg_count_tsgl (sk, len,0 ); + areq->tsgl_entries =af_alg_count_tsgl (sk, len);if (!areq->tsgl_entries) areq->tsgl_entries =1 ; areq->tsgl = sock_kmalloc(sk, array_size(sizeof(*areq->tsgl),
@@ -149,7 +149,7 @@ static int _skcipher_recvmsg(struct socket *sock, struct msghdr *msg, goto free; }sg_init_table (areq->tsgl, areq->tsgl_entries); -af_alg_pull_tsgl (sk, len, areq->tsgl,0 ); +af_alg_pull_tsgl (sk, len, areq->tsgl);/* Initialize the crypto operation */ skcipher_request_set_tfm (&areq->cra_u.skcipher_req, tfm);
@@ -363,7 +363,7 @@ static void skcipher_sock_destruct(struct sock *sk)struct alg_sock *pask =alg_sk (psk);struct crypto_skcipher *tfm = pask->private; -af_alg_pull_tsgl (sk, ctx->used,NULL ,0 ); +af_alg_pull_tsgl (sk, ctx->used,NULL );sock_kzfree_s (sk, ctx->iv,crypto_skcipher_ivsize (tfm));if (ctx->state)sock_kzfree_s (sk, ctx->state,crypto_skcipher_statesize (tfm));
crypto/authencesn.c +29 -19
88 lines not on this page · raw message
crypto/deflate.c +7 -4
@@ -164,18 +164,21 @@ static int deflate_decompress_one(struct acomp_req *req,do {unsigned int dcur; +unsigned long avail_in; dcur =acomp_walk_next_dst (&walk); -if (!dcur) { - out_of_space = true; -break ; - } stream->avail_out = dcur; stream->next_out = walk.dst.virt.addr; + avail_in = stream->avail_in; ret =zlib_inflate (stream,Z_NO_FLUSH ); +if (!dcur && avail_in == stream->avail_in) { + out_of_space = true; +break ; + } + dcur -= stream->avail_out;acomp_walk_done_dst (&walk, dcur); }while (ret ==Z_OK && stream->avail_in);
drivers/accel/qaic/qaic_control.c +45 -2
67 lines not on this page · raw message
drivers/acpi/riscv/rimt.c +7 -0
@@ -263,6 +263,13 @@ static int rimt_iommu_xlate(struct device *dev, struct acpi_rimt_node *node, u32if (!rimt_fwnode)return -EPROBE_DEFER ; +/* +* EPROBE_DEFER ensures IOMMU is probed before the devices that +* depend on them. During shutdown, however, the IOMMU may be removed +* first, leading to issues. To avoid this, a device link is added +* which enforces the correct removal order. +*/ +device_link_add (dev, rimt_fwnode->dev,DL_FLAG_AUTOREMOVE_CONSUMER );return acpi_iommu_fwspec_init (dev, deviceid, rimt_fwnode); }
drivers/android/binder/page_range.rs +5 -3
@@ -13,6 +13,8 @@// // The shrinker will use trylock methods because it locks them in a different order. +use crate ::AssertSync ; +use core::{ marker::PhantomPinned , mem::{size_of, size_of_val,MaybeUninit },
@@ -143,14 +145,14 @@ pub(crate) struct ShrinkablePageRange { }// We do not define any ops. For now, used only to check identity of vmas. -static BINDER_VM_OPS : bindings::vm_operations_struct = pin_init::zeroed (); +static BINDER_VM_OPS :AssertSync <bindings::vm_operations_struct > =AssertSync (pin_init::zeroed ());// To ensure that we do not accidentally install pages into or zap pages from the wrong vma, we // check its vm_ops and private data before using it. fn check_vma (vma: &virt::VmaRef , owner: *const ShrinkablePageRange ) ->Option <&virt::VmaMixedMap > {// SAFETY: Just reading the vm_ops pointer of any active vma is safe. let vm_ops =unsafe { (*vma.as_ptr ()).vm_ops }; -if !ptr::eq (vm_ops, &BINDER_VM_OPS ) { +if !ptr::eq (vm_ops, &BINDER_VM_OPS .0 ) {return None ; }
@@ -342,7 +344,7 @@ pub(crate) fn register_with_vma(&self, vma: &virt::VmaNew) -> Result<usize> {// SAFETY: We own the vma, and we don't use any methods on VmaNew that rely on // `vm_ops`. -unsafe { (*vma.as_ptr ()).vm_ops = &BINDER_VM_OPS }; +unsafe { (*vma.as_ptr ()).vm_ops = &BINDER_VM_OPS .0 };Ok (num_pages) }
drivers/android/binder/rust_binder_main.rs +1 -1
@@ -300,7 +300,7 @@ fn init(_module: &'static kernel::ThisModule) -> Result<Self> {/// Makes the inner type Sync. #[repr(transparent)] pub struct AssertSync <T >(T ); -// SAFETY: Used only to insert `file_operations` into a global, which is safe. +// SAFETY: Used only to insert C bindings types into globals, which is safe. unsafe impl <T >Sync for AssertSync <T > {}/// File operations that rust_binderfs.c can use.
drivers/auxdisplay/line-display.c +1 -1
@@ -365,7 +365,7 @@ static DEFINE_IDA(linedisp_id);static void linedisp_release (struct device *dev) { -struct linedisp *linedisp =to_linedisp (dev); + struct linedisp *linedisp = container_of(dev, struct linedisp, dev);kfree (linedisp->map);kfree (linedisp->message);
drivers/bluetooth/hci_h4.c +0 -3
@@ -109,9 +109,6 @@ static int h4_recv(struct hci_uart *hu, const void *data, int count) {struct h4_struct *h4 = hu->priv; -if (!test_bit (HCI_UART_REGISTERED , &hu->flags)) -return -EUNATCH ; - h4->rx_skb =h4_recv_buf (hu, h4->rx_skb, data, count, h4_recv_pkts,ARRAY_SIZE (h4_recv_pkts));if (IS_ERR (h4->rx_skb)) {
drivers/comedi/comedi_fops.c +5 -3
@@ -793,13 +793,15 @@ static void do_become_nonbusy(struct comedi_device *dev,__comedi_clear_subdevice_runflags (s,COMEDI_SRF_RUNNING |COMEDI_SRF_BUSY );spin_unlock_irqrestore (&s->spin_lock, flags); -if (comedi_is_runflags_busy (runflags)) { +if (async) {/* * "Run active" counter was set to 1 when setting up the * command. Decrement it and wait for it to become 0. */ -comedi_put_is_subdevice_running (s); -wait_for_completion (&async->run_complete); +if (comedi_is_runflags_busy (runflags)) { +comedi_put_is_subdevice_running (s); +wait_for_completion (&async->run_complete); + }comedi_buf_reset (s); async->inttrig =NULL ;kfree (async->cmd.chanlist);
drivers/comedi/drivers.c +8 -0
@@ -1063,6 +1063,14 @@ int comedi_device_attach(struct comedi_device *dev, struct comedi_devconfig *it) ret = -EIO ; goto out; } +if (IS_ENABLED (CONFIG_LOCKDEP )) { +/* +* dev->spinlock is for private use by the attached low-level +* driver. Reinitialize it to stop lock-dependency tracking +* between attachments to different low-level drivers. +*/ +spin_lock_init (&dev->spinlock); + } dev->driver = driv; dev->board_name = dev->board_ptr ? *(const char **)dev->board_ptr : dev->driver->driver_name;
drivers/comedi/drivers/dt2815.c +12 -0
@@ -175,6 +175,18 @@ static int dt2815_attach(struct comedi_device *dev, struct comedi_devconfig *it) ? current_range_type : voltage_range_type; } +/* +* Check if hardware is present before attempting any I/O operations. +* Reading 0xff from status register typically indicates no hardware +* on the bus (floating bus reads as all 1s). +*/ +if (inb (dev->iobase +DT2815_STATUS ) ==0xff ) { +dev_err (dev->class_dev, +"No hardware detected at I/O base 0x%lx\n" , + dev->iobase); +return -ENODEV ; + } +/* Init the 2815 */ outb (0x00 , dev->iobase +DT2815_STATUS );for (i =0 ; i <100 ; i++) {
drivers/comedi/drivers/me4000.c +12 -4
@@ -315,6 +315,18 @@ static int me4000_xilinx_download(struct comedi_device *dev,unsigned int val;unsigned int i; +/* Get data stream length from header. */ +if (size >=4 ) { + file_length = (((unsigned int )data[0 ] &0xff ) <<24 ) + + (((unsigned int )data[1 ] &0xff ) <<16 ) + + (((unsigned int )data[2 ] &0xff ) <<8 ) + + ((unsigned int )data[3 ] &0xff ); + } +if (size <16 || file_length > size -16 ) { +dev_err (dev->class_dev,"Firmware length inconsistency\n" ); +return -EINVAL ; + } +if (!xilinx_iobase)return -ENODEV ;
@@ -346,10 +358,6 @@ static int me4000_xilinx_download(struct comedi_device *dev,outl (val, devpriv->plx_regbase +PLX9052_CNTRL );/* Download Xilinx firmware */ - file_length = (((unsigned int )data[0 ] &0xff ) <<24 ) + - (((unsigned int )data[1 ] &0xff ) <<16 ) + - (((unsigned int )data[2 ] &0xff ) <<8 ) + - ((unsigned int )data[3 ] &0xff );usleep_range (10 ,1000 );for (i =0 ; i < file_length; i++) {
drivers/comedi/drivers/me_daq.c +19 -16
@@ -344,6 +344,25 @@ static int me2600_xilinx_download(struct comedi_device *dev,unsigned int file_length;unsigned int i; +/* +* Format of the firmware +* Build longs from the byte-wise coded header +* Byte 1-3: length of the array +* Byte 4-7: version +* Byte 8-11: date +* Byte 12-15: reserved +*/ +if (size >=4 ) { + file_length = (((unsigned int )data[0 ] &0xff ) <<24 ) + + (((unsigned int )data[1 ] &0xff ) <<16 ) + + (((unsigned int )data[2 ] &0xff ) <<8 ) + + ((unsigned int )data[3 ] &0xff ); + } +if (size <16 || file_length > size -16 ) { +dev_err (dev->class_dev,"Firmware length inconsistency\n" ); +return -EINVAL ; + } +/* disable irq's on PLX */ writel (0x00 , devpriv->plx_regbase +PLX9052_INTCSR );
@@ -357,22 +376,6 @@ static int me2600_xilinx_download(struct comedi_device *dev,writeb (0x00 , dev->mmio +0x0 );sleep (1 ); -/* -* Format of the firmware -* Build longs from the byte-wise coded header -* Byte 1-3: length of the array -* Byte 4-7: version -* Byte 8-11: date -* Byte 12-15: reserved -*/ -if (size <16 ) -return -EINVAL ; - - file_length = (((unsigned int )data[0 ] &0xff ) <<24 ) + - (((unsigned int )data[1 ] &0xff ) <<16 ) + - (((unsigned int )data[2 ] &0xff ) <<8 ) + - ((unsigned int )data[3 ] &0xff ); -/* * Loop for writing firmware byte by byte to xilinx * Firmware data start at offset 16
drivers/comedi/drivers/ni_atmio16d.c +2 -1
@@ -698,7 +698,8 @@ static int atmio16d_attach(struct comedi_device *dev,static void atmio16d_detach (struct comedi_device *dev) { -reset_atmio16d (dev); +if (dev->private) +reset_atmio16d (dev);comedi_legacy_detach (dev); }
drivers/counter/rz-mtu3-cnt.c +35 -32
192 lines not on this page · raw message
drivers/cpufreq/cpufreq_governor.c +3 -3
@@ -468,13 +468,13 @@ int cpufreq_dbs_governor_init(struct cpufreq_policy *policy)/* Failure, so roll back. */ pr_err ("initialization failed (dbs_data kobject init error %d)\n" , ret); -kobject_put (&dbs_data->attr_set.kobj); - policy->governor_data =NULL ;if (!have_governor_per_policy ()) gov->gdbs_data =NULL ; - gov->exit (dbs_data); + +kobject_put (&dbs_data->attr_set.kobj); + goto free_policy_dbs_info; free_dbs_data:kfree (dbs_data);
drivers/crypto/caam/caamalg_qi2.c +2 -1
@@ -3326,9 +3326,10 @@ static int ahash_setkey(struct crypto_ahash *ahash, const u8 *key,if (aligned_len < keylen)return -EOVERFLOW ; - hashed_key =kmemdup (key, aligned_len,GFP_KERNEL ); + hashed_key =kmalloc (aligned_len,GFP_KERNEL );if (!hashed_key)return -ENOMEM ; +memcpy (hashed_key, key, keylen); ret =hash_digest_key (ctx, &keylen, hashed_key, digestsize);if (ret) goto bad_free_key;
drivers/crypto/caam/caamhash.c +2 -1
@@ -441,9 +441,10 @@ static int ahash_setkey(struct crypto_ahash *ahash,if (aligned_len < keylen)return -EOVERFLOW ; - hashed_key =kmemdup (key, keylen,GFP_KERNEL ); + hashed_key =kmalloc (aligned_len,GFP_KERNEL );if (!hashed_key)return -ENOMEM ; +memcpy (hashed_key, key, keylen); ret =hash_digest_key (ctx, &keylen, hashed_key, digestsize);if (ret) goto bad_free_key;
drivers/crypto/tegra/tegra-se-aes.c +7 -4
@@ -529,7 +529,7 @@ static struct tegra_se_alg tegra_aes_algs[] = { .cra_name = "cbc(aes)", .cra_driver_name = "cbc-aes-tegra", .cra_priority = 500, - .cra_flags = CRYPTO_ALG_TYPE_SKCIPHER | CRYPTO_ALG_ASYNC, + .cra_flags = CRYPTO_ALG_ASYNC, .cra_blocksize = AES_BLOCK_SIZE, .cra_ctxsize = sizeof(struct tegra_aes_ctx), .cra_alignmask = 0xf,
@@ -550,7 +550,7 @@ static struct tegra_se_alg tegra_aes_algs[] = { .cra_name = "ecb(aes)", .cra_driver_name = "ecb-aes-tegra", .cra_priority = 500, - .cra_flags = CRYPTO_ALG_TYPE_SKCIPHER | CRYPTO_ALG_ASYNC, + .cra_flags = CRYPTO_ALG_ASYNC, .cra_blocksize = AES_BLOCK_SIZE, .cra_ctxsize = sizeof(struct tegra_aes_ctx), .cra_alignmask = 0xf,
@@ -572,7 +572,7 @@ static struct tegra_se_alg tegra_aes_algs[] = { .cra_name = "ctr(aes)", .cra_driver_name = "ctr-aes-tegra", .cra_priority = 500, - .cra_flags = CRYPTO_ALG_TYPE_SKCIPHER | CRYPTO_ALG_ASYNC, + .cra_flags = CRYPTO_ALG_ASYNC, .cra_blocksize = 1, .cra_ctxsize = sizeof(struct tegra_aes_ctx), .cra_alignmask = 0xf,
@@ -594,6 +594,7 @@ static struct tegra_se_alg tegra_aes_algs[] = { .cra_name = "xts(aes)", .cra_driver_name = "xts-aes-tegra", .cra_priority = 500, + .cra_flags = CRYPTO_ALG_ASYNC, .cra_blocksize = AES_BLOCK_SIZE, .cra_ctxsize = sizeof(struct tegra_aes_ctx), .cra_alignmask = (__alignof__(u64) - 1),
@@ -1922,6 +1923,7 @@ static struct tegra_se_alg tegra_aead_algs[] = { .cra_name = "gcm(aes)", .cra_driver_name = "gcm-aes-tegra", .cra_priority = 500, + .cra_flags = CRYPTO_ALG_ASYNC, .cra_blocksize = 1, .cra_ctxsize = sizeof(struct tegra_aead_ctx), .cra_alignmask = 0xf,
@@ -1944,6 +1946,7 @@ static struct tegra_se_alg tegra_aead_algs[] = { .cra_name = "ccm(aes)", .cra_driver_name = "ccm-aes-tegra", .cra_priority = 500, + .cra_flags = CRYPTO_ALG_ASYNC, .cra_blocksize = 1, .cra_ctxsize = sizeof(struct tegra_aead_ctx), .cra_alignmask = 0xf,
@@ -1971,7 +1974,7 @@ static struct tegra_se_alg tegra_cmac_algs[] = { .cra_name = "cmac(aes)", .cra_driver_name = "tegra-se-cmac", .cra_priority = 300, - .cra_flags = CRYPTO_ALG_TYPE_AHASH, + .cra_flags = CRYPTO_ALG_ASYNC, .cra_blocksize = AES_BLOCK_SIZE, .cra_ctxsize = sizeof(struct tegra_cmac_ctx), .cra_alignmask = 0,
drivers/crypto/tegra/tegra-se-hash.c +17 -13
@@ -761,7 +761,7 @@ static struct tegra_se_alg tegra_hash_algs[] = { .cra_name = "sha1", .cra_driver_name = "tegra-se-sha1", .cra_priority = 300, - .cra_flags = CRYPTO_ALG_TYPE_AHASH, + .cra_flags = CRYPTO_ALG_ASYNC, .cra_blocksize = SHA1_BLOCK_SIZE, .cra_ctxsize = sizeof(struct tegra_sha_ctx), .cra_alignmask = 0,
@@ -786,7 +786,7 @@ static struct tegra_se_alg tegra_hash_algs[] = { .cra_name = "sha224", .cra_driver_name = "tegra-se-sha224", .cra_priority = 300, - .cra_flags = CRYPTO_ALG_TYPE_AHASH, + .cra_flags = CRYPTO_ALG_ASYNC, .cra_blocksize = SHA224_BLOCK_SIZE, .cra_ctxsize = sizeof(struct tegra_sha_ctx), .cra_alignmask = 0,
@@ -811,7 +811,7 @@ static struct tegra_se_alg tegra_hash_algs[] = { .cra_name = "sha256", .cra_driver_name = "tegra-se-sha256", .cra_priority = 300, - .cra_flags = CRYPTO_ALG_TYPE_AHASH, + .cra_flags = CRYPTO_ALG_ASYNC, .cra_blocksize = SHA256_BLOCK_SIZE, .cra_ctxsize = sizeof(struct tegra_sha_ctx), .cra_alignmask = 0,
@@ -836,7 +836,7 @@ static struct tegra_se_alg tegra_hash_algs[] = { .cra_name = "sha384", .cra_driver_name = "tegra-se-sha384", .cra_priority = 300, - .cra_flags = CRYPTO_ALG_TYPE_AHASH, + .cra_flags = CRYPTO_ALG_ASYNC, .cra_blocksize = SHA384_BLOCK_SIZE, .cra_ctxsize = sizeof(struct tegra_sha_ctx), .cra_alignmask = 0,
@@ -861,7 +861,7 @@ static struct tegra_se_alg tegra_hash_algs[] = { .cra_name = "sha512", .cra_driver_name = "tegra-se-sha512", .cra_priority = 300, - .cra_flags = CRYPTO_ALG_TYPE_AHASH, + .cra_flags = CRYPTO_ALG_ASYNC, .cra_blocksize = SHA512_BLOCK_SIZE, .cra_ctxsize = sizeof(struct tegra_sha_ctx), .cra_alignmask = 0,
@@ -886,7 +886,7 @@ static struct tegra_se_alg tegra_hash_algs[] = { .cra_name = "sha3-224", .cra_driver_name = "tegra-se-sha3-224", .cra_priority = 300, - .cra_flags = CRYPTO_ALG_TYPE_AHASH, + .cra_flags = CRYPTO_ALG_ASYNC, .cra_blocksize = SHA3_224_BLOCK_SIZE, .cra_ctxsize = sizeof(struct tegra_sha_ctx), .cra_alignmask = 0,
@@ -911,7 +911,7 @@ static struct tegra_se_alg tegra_hash_algs[] = { .cra_name = "sha3-256", .cra_driver_name = "tegra-se-sha3-256", .cra_priority = 300, - .cra_flags = CRYPTO_ALG_TYPE_AHASH, + .cra_flags = CRYPTO_ALG_ASYNC, .cra_blocksize = SHA3_256_BLOCK_SIZE, .cra_ctxsize = sizeof(struct tegra_sha_ctx), .cra_alignmask = 0,
@@ -936,7 +936,7 @@ static struct tegra_se_alg tegra_hash_algs[] = { .cra_name = "sha3-384", .cra_driver_name = "tegra-se-sha3-384", .cra_priority = 300, - .cra_flags = CRYPTO_ALG_TYPE_AHASH, + .cra_flags = CRYPTO_ALG_ASYNC, .cra_blocksize = SHA3_384_BLOCK_SIZE, .cra_ctxsize = sizeof(struct tegra_sha_ctx), .cra_alignmask = 0,
@@ -961,7 +961,7 @@ static struct tegra_se_alg tegra_hash_algs[] = { .cra_name = "sha3-512", .cra_driver_name = "tegra-se-sha3-512", .cra_priority = 300, - .cra_flags = CRYPTO_ALG_TYPE_AHASH, + .cra_flags = CRYPTO_ALG_ASYNC, .cra_blocksize = SHA3_512_BLOCK_SIZE, .cra_ctxsize = sizeof(struct tegra_sha_ctx), .cra_alignmask = 0,
@@ -988,7 +988,8 @@ static struct tegra_se_alg tegra_hash_algs[] = { .cra_name = "hmac(sha224)", .cra_driver_name = "tegra-se-hmac-sha224", .cra_priority = 300, - .cra_flags = CRYPTO_ALG_TYPE_AHASH | CRYPTO_ALG_NEED_FALLBACK, + .cra_flags =CRYPTO_ALG_ASYNC | + CRYPTO_ALG_NEED_FALLBACK, .cra_blocksize = SHA224_BLOCK_SIZE, .cra_ctxsize = sizeof(struct tegra_sha_ctx), .cra_alignmask = 0,
@@ -1015,7 +1016,8 @@ static struct tegra_se_alg tegra_hash_algs[] = { .cra_name = "hmac(sha256)", .cra_driver_name = "tegra-se-hmac-sha256", .cra_priority = 300, - .cra_flags = CRYPTO_ALG_TYPE_AHASH | CRYPTO_ALG_NEED_FALLBACK, + .cra_flags =CRYPTO_ALG_ASYNC | + CRYPTO_ALG_NEED_FALLBACK, .cra_blocksize = SHA256_BLOCK_SIZE, .cra_ctxsize = sizeof(struct tegra_sha_ctx), .cra_alignmask = 0,
@@ -1042,7 +1044,8 @@ static struct tegra_se_alg tegra_hash_algs[] = { .cra_name = "hmac(sha384)", .cra_driver_name = "tegra-se-hmac-sha384", .cra_priority = 300, - .cra_flags = CRYPTO_ALG_TYPE_AHASH | CRYPTO_ALG_NEED_FALLBACK, + .cra_flags =CRYPTO_ALG_ASYNC | + CRYPTO_ALG_NEED_FALLBACK, .cra_blocksize = SHA384_BLOCK_SIZE, .cra_ctxsize = sizeof(struct tegra_sha_ctx), .cra_alignmask = 0,
@@ -1069,7 +1072,8 @@ static struct tegra_se_alg tegra_hash_algs[] = { .cra_name = "hmac(sha512)", .cra_driver_name = "tegra-se-hmac-sha512", .cra_priority = 300, - .cra_flags = CRYPTO_ALG_TYPE_AHASH | CRYPTO_ALG_NEED_FALLBACK, + .cra_flags =CRYPTO_ALG_ASYNC | + CRYPTO_ALG_NEED_FALLBACK, .cra_blocksize = SHA512_BLOCK_SIZE, .cra_ctxsize = sizeof(struct tegra_sha_ctx), .cra_alignmask = 0,
drivers/firmware/microchip/mpfs-auto-update.c +6 -4
@@ -113,10 +113,6 @@ static enum fw_upload_err mpfs_auto_update_prepare(struct fw_upload *fw_uploader* be added here. */ - priv->flash =mpfs_sys_controller_get_flash (priv->sys_controller); -if (!priv->flash) -return FW_UPLOAD_ERR_HW_ERROR ; - erase_size =round_up (erase_size, (u64 )priv->flash->erasesize);/*
@@ -427,6 +423,12 @@ static int mpfs_auto_update_probe(struct platform_device *pdev)return dev_err_probe (dev,PTR_ERR (priv->sys_controller),"Could not register as a sub device of the system controller\n" ); + priv->flash =mpfs_sys_controller_get_flash (priv->sys_controller); +if (IS_ERR_OR_NULL (priv->flash)) { +dev_dbg (dev,"No flash connected to the system controller, auto-update not supported\n" ); +return -ENODEV ; + } + priv->dev = dev;platform_set_drvdata (pdev, priv);
drivers/gpib/Kconfig +1 -0
@@ -122,6 +122,7 @@ config GPIB_FLUKE depends on OF select GPIB_COMMON select GPIB_NEC7210 + depends on HAS_IOMEM help GPIB driver for Fluke based cda devices.
drivers/gpib/common/gpib_os.c +73 -23
188 lines not on this page · raw message
drivers/gpib/include/gpib_types.h +8 -0
@@ -364,6 +364,14 @@ struct gpib_descriptor {unsigned int pad;/* primary gpib address */ int sad;/* secondary gpib address (negative means disabled) */ atomic_t io_in_progress; +/* +* Kernel-only reference count to prevent descriptor from being +* freed while IO handlers hold a pointer to it. Incremented +* before each IO operation, decremented when done. Unlike +* io_in_progress, this cannot be modified from userspace via +* general_ibstatus(). +*/ +atomic_t descriptor_busy; unsigned is_board : 1; unsigned autopoll_enabled : 1; };
drivers/gpib/lpvo_usb_gpib/lpvo_usb_gpib.c +2 -2
@@ -406,7 +406,7 @@ static int usb_gpib_attach(struct gpib_board *board, const struct gpib_board_confor (j =0 ; j <MAX_DEV ; j++) {if ((assigned_usb_minors &1 << j) ==0 )continue ; - udev =usb_get_dev (interface_to_usbdev (lpvo_usb_interfaces[j])); + udev =interface_to_usbdev (lpvo_usb_interfaces[j]); device_path =kobject_get_path (&udev->dev.kobj,GFP_KERNEL ); match =gpib_match_device_path (&lpvo_usb_interfaces[j]->dev, config->device_path);
@@ -421,7 +421,7 @@ static int usb_gpib_attach(struct gpib_board *board, const struct gpib_board_confor (j =0 ; j <MAX_DEV ; j++) {if ((assigned_usb_minors &1 << j) ==0 )continue ; - udev =usb_get_dev (interface_to_usbdev (lpvo_usb_interfaces[j])); + udev =interface_to_usbdev (lpvo_usb_interfaces[j]);DIA_LOG (1 ,"dev. %d: bus %d -> %d dev: %d -> %d\n" , j, udev->bus->busnum, config->pci_bus, udev->devnum, config->pci_slot); if (config->pci_bus == udev->bus->busnum &&
drivers/gpio/gpio-mxc.c +9 -1
@@ -584,12 +584,13 @@ static bool mxc_gpio_set_pad_wakeup(struct mxc_gpio_port *port, bool enable)unsigned long config;bool ret = false;int i, type; +bool is_imx8qm =of_device_is_compatible (port->dev->of_node,"fsl,imx8qm-gpio" );static const u32 pad_type_map[] = {IMX_SCU_WAKEUP_OFF ,/* 0 */ IMX_SCU_WAKEUP_RISE_EDGE ,/* IRQ_TYPE_EDGE_RISING */ IMX_SCU_WAKEUP_FALL_EDGE ,/* IRQ_TYPE_EDGE_FALLING */ -IMX_SCU_WAKEUP_FALL_EDGE ,/* IRQ_TYPE_EDGE_BOTH */ +IMX_SCU_WAKEUP_RISE_EDGE ,/* IRQ_TYPE_EDGE_BOTH */ IMX_SCU_WAKEUP_HIGH_LVL ,/* IRQ_TYPE_LEVEL_HIGH */ IMX_SCU_WAKEUP_OFF ,/* 5 */ IMX_SCU_WAKEUP_OFF ,/* 6 */
@@ -604,6 +605,13 @@ static bool mxc_gpio_set_pad_wakeup(struct mxc_gpio_port *port, bool enable) config = pad_type_map[type]; else config =IMX_SCU_WAKEUP_OFF ; + +if (is_imx8qm && config ==IMX_SCU_WAKEUP_FALL_EDGE ) { +dev_warn_once (port->dev, +"No falling-edge support for wakeup on i.MX8QM\n" ); + config =IMX_SCU_WAKEUP_OFF ; + } + ret |=mxc_gpio_generic_config (port, i, config); } }
drivers/gpio/gpio-qixis-fpga.c +2 -2
@@ -60,8 +60,8 @@ static int qixis_cpld_gpio_probe(struct platform_device *pdev)return PTR_ERR (reg); regmap =devm_regmap_init_mmio (&pdev->dev, reg, ®map_config_8r_8v); -if (!regmap) -return -ENODEV ; +if (IS_ERR (regmap)) +return PTR_ERR (regmap);/* In this case, the offset of our register is 0 inside the * regmap area that we just created.
drivers/gpio/gpiolib-shared.c +41 -16
90 lines not on this page · raw message
drivers/gpio/gpiolib-shared.h +7 -4
@@ -11,17 +11,19 @@struct gpio_device ;struct gpio_desc ;struct device ; +struct fwnode_handle ;#if IS_ENABLED (CONFIG_GPIO_SHARED ) -int gpio_device_setup_shared (struct gpio_device *gdev); +int gpiochip_setup_shared (struct gpio_chip *gc);void gpio_device_teardown_shared (struct gpio_device *gdev); -int gpio_shared_add_proxy_lookup (struct device *consumer,const char *con_id, -unsigned long lflags); +int gpio_shared_add_proxy_lookup (struct device *consumer, +struct fwnode_handle *fwnode, +const char *con_id,unsigned long lflags);#else -static inline int gpio_device_setup_shared (struct gpio_device *gdev) +static inline int gpiochip_setup_shared (struct gpio_chip *gc) {return 0 ; }
@@ -29,6 +31,7 @@ static inline int gpio_device_setup_shared(struct gpio_device *gdev)static inline void gpio_device_teardown_shared (struct gpio_device *gdev) { }static inline int gpio_shared_add_proxy_lookup (struct device *consumer, +struct fwnode_handle *fwnode,const char *con_id,unsigned long lflags) {
drivers/gpio/gpiolib.c +55 -58
217 lines not on this page · raw message
drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c +6 -2
@@ -2703,8 +2703,12 @@ static int amdgpu_pmops_freeze(struct device *dev)if (r)return r; -if (amdgpu_acpi_should_gpu_reset (adev)) -return amdgpu_asic_reset (adev); +if (amdgpu_acpi_should_gpu_reset (adev)) { +amdgpu_device_lock_reset_domain (adev->reset_domain); + r =amdgpu_asic_reset (adev); +amdgpu_device_unlock_reset_domain (adev->reset_domain); +return r; + }return 0 ; }
drivers/gpu/drm/amd/amdgpu/amdgpu_ids.c +4 -1
@@ -68,8 +68,11 @@ int amdgpu_pasid_alloc(unsigned int bits)return -EINVAL ;spin_lock (&amdgpu_pasid_idr_lock); +/* TODO: Need to replace the idr with an xarry, and then +* handle the internal locking with ATOMIC safe paths. +*/ pasid =idr_alloc_cyclic (&amdgpu_pasid_idr,NULL ,1 , -1U << bits,GFP_KERNEL ); +1U << bits,GFP_ATOMIC );spin_unlock (&amdgpu_pasid_idr_lock);if (pasid >=0 )
drivers/gpu/drm/amd/amdgpu/amdgpu_userq.c +7 -0
@@ -550,6 +550,13 @@ amdgpu_userq_get_doorbell_index(struct amdgpu_userq_mgr *uq_mgr, goto unpin_bo; } +/* Validate doorbell_offset is within the doorbell BO */ +if ((u64 )db_info->doorbell_offset * db_size + db_size > +amdgpu_bo_size (db_obj->obj)) { + r = -EINVAL ; + goto unpin_bo; + } + index =amdgpu_doorbell_index_on_bar (uq_mgr->adev, db_obj->obj, db_info->doorbell_offset, db_size); drm_dbg_driver(adev_to_drm(uq_mgr->adev),
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h +1 -1
@@ -172,7 +172,7 @@ struct amdgpu_bo_vm;#define AMDGPU_VA_RESERVED_SEQ64_SIZE (2ULL << 20)#define AMDGPU_VA_RESERVED_SEQ64_START (adev) (AMDGPU_VA_RESERVED_CSA_START(adev) \ - AMDGPU_VA_RESERVED_SEQ64_SIZE) -#define AMDGPU_VA_RESERVED_TRAP_SIZE (2ULL << 12) +#define AMDGPU_VA_RESERVED_TRAP_SIZE (1ULL << 16)#define AMDGPU_VA_RESERVED_TRAP_START (adev) (AMDGPU_VA_RESERVED_SEQ64_START(adev) \ - AMDGPU_VA_RESERVED_TRAP_SIZE)#define AMDGPU_VA_RESERVED_BOTTOM (1ULL << 16)
drivers/gpu/drm/amd/amdgpu/psp_v11_0.c +2 -1
@@ -170,7 +170,8 @@ static int psp_v11_0_wait_for_bootloader(struct psp_context *psp)int retry_loop;/* For a reset done at the end of S3, only wait for TOS to be unloaded */ -if (adev->in_s3 && !(adev->flags &AMD_IS_APU ) &&amdgpu_in_reset (adev)) +if ((adev->in_s4 || adev->in_s3) && !(adev->flags &AMD_IS_APU ) && +amdgpu_in_reset (adev))return psp_v11_wait_for_tos_unload (psp);for (retry_loop =0 ; retry_loop <20 ; retry_loop++) {
drivers/gpu/drm/amd/amdkfd/kfd_priv.h +2 -2
@@ -102,8 +102,8 @@* The first chunk is the TBA used for the CWSR ISA code. The second * chunk is used as TMA for user-mode trap handler setup in daisy-chain mode. */ -#define KFD_CWSR_TBA_TMA_SIZE (PAGE_SIZE * 2) -#define KFD_CWSR_TMA_OFFSET (PAGE_SIZE + 2048) +#define KFD_CWSR_TBA_TMA_SIZE (AMDGPU_GPU_PAGE_SIZE * 2) +#define KFD_CWSR_TMA_OFFSET (AMDGPU_GPU_PAGE_SIZE + 2048)#define KFD_MAX_NUM_OF_QUEUES_PER_DEVICE \ (KFD_MAX_NUM_OF_PROCESSES * \
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_colorop.c +3 -3
@@ -37,19 +37,19 @@ const u64 amdgpu_dm_supported_degam_tfs =BIT (DRM_COLOROP_1D_CURVE_SRGB_EOTF ) |BIT (DRM_COLOROP_1D_CURVE_PQ_125_EOTF ) |BIT (DRM_COLOROP_1D_CURVE_BT2020_INV_OETF ) | -BIT (DRM_COLOROP_1D_CURVE_GAMMA22_INV ); +BIT (DRM_COLOROP_1D_CURVE_GAMMA22 );const u64 amdgpu_dm_supported_shaper_tfs =BIT (DRM_COLOROP_1D_CURVE_SRGB_INV_EOTF ) |BIT (DRM_COLOROP_1D_CURVE_PQ_125_INV_EOTF ) |BIT (DRM_COLOROP_1D_CURVE_BT2020_OETF ) | -BIT (DRM_COLOROP_1D_CURVE_GAMMA22 ); +BIT (DRM_COLOROP_1D_CURVE_GAMMA22_INV );const u64 amdgpu_dm_supported_blnd_tfs =BIT (DRM_COLOROP_1D_CURVE_SRGB_EOTF ) |BIT (DRM_COLOROP_1D_CURVE_PQ_125_EOTF ) |BIT (DRM_COLOROP_1D_CURVE_BT2020_INV_OETF ) | -BIT (DRM_COLOROP_1D_CURVE_GAMMA22_INV ); +BIT (DRM_COLOROP_1D_CURVE_GAMMA22 );#define MAX_COLOR_PIPELINE_OPS 10
drivers/gpu/drm/amd/display/dc/hwss/dcn401/dcn401_hwseq.c +11 -6
@@ -146,6 +146,7 @@ void dcn401_init_hw(struct dc *dc)int edp_num;uint32_t backlight =MAX_BACKLIGHT_LEVEL ;uint32_t user_level =MAX_BACKLIGHT_LEVEL ; +bool dchub_ref_freq_changed;int current_dchub_ref_freq =0 ;if (dc->clk_mgr && dc->clk_mgr->funcs && dc->clk_mgr->funcs->init_clocks) {
@@ -359,14 +360,18 @@ void dcn401_init_hw(struct dc *dc) dc->caps.dmub_caps.psr = dc->ctx->dmub_srv->dmub->feature_caps.psr; dc->caps.dmub_caps.mclk_sw = dc->ctx->dmub_srv->dmub->feature_caps.fw_assisted_mclk_switch_ver >0 ; dc->caps.dmub_caps.fams_ver = dc->ctx->dmub_srv->dmub->feature_caps.fw_assisted_mclk_switch_ver; + +/* sw and fw FAMS versions must match for support */ dc->debug.fams2_config.bits.enable &= - dc->caps.dmub_caps.fams_ver == dc->debug.fams_version.ver;// sw & fw fams versions must match for support -if ((!dc->debug.fams2_config.bits.enable && dc->res_pool->funcs->update_bw_bounding_box) - || res_pool->ref_clocks.dchub_ref_clock_inKhz /1000 != current_dchub_ref_freq) { + dc->caps.dmub_caps.fams_ver == dc->debug.fams_version.ver; + dchub_ref_freq_changed = + res_pool->ref_clocks.dchub_ref_clock_inKhz /1000 != current_dchub_ref_freq; +if ((!dc->debug.fams2_config.bits.enable || dchub_ref_freq_changed) && + dc->res_pool->funcs->update_bw_bounding_box && + dc->clk_mgr && dc->clk_mgr->bw_params) {/* update bounding box if FAMS2 disabled, or if dchub clk has changed */ -if (dc->clk_mgr) - dc->res_pool->funcs->update_bw_bounding_box (dc, - dc->clk_mgr->bw_params); + dc->res_pool->funcs->update_bw_bounding_box (dc, + dc->clk_mgr->bw_params); } } }
drivers/gpu/drm/amd/pm/swsmu/smu11/smu_v11_0.c +0 -1
@@ -262,7 +262,6 @@ int smu_v11_0_check_fw_version(struct smu_context *smu)"smu fw program = %d, version = 0x%08x (%d.%d.%d)\n" , smu->smc_driver_if_version, if_version, smu_program, smu_version, smu_major, smu_minor, smu_debug); -dev_info (smu->adev->dev,"SMU driver if version not matched\n" ); }return ret;
drivers/gpu/drm/amd/pm/swsmu/smu12/smu_v12_0.c +0 -1
@@ -101,7 +101,6 @@ int smu_v12_0_check_fw_version(struct smu_context *smu)"smu fw program = %d, smu fw version = 0x%08x (%d.%d.%d)\n" , smu->smc_driver_if_version, if_version, smu_program, smu_version, smu_major, smu_minor, smu_debug); -dev_info (smu->adev->dev,"SMU driver if version not matched\n" ); }return ret;
drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_0_ppt.c +32 -1
@@ -59,6 +59,10 @@#define to_amdgpu_device (x) (container_of(x, struct amdgpu_device, pm.smu_i2c)) +static void smu_v13_0_0_get_od_setting_limits (struct smu_context *smu, +int od_feature_bit, +int32_t *min,int32_t *max); +#define FEATURE_MASK (feature) (1ULL << feature)#define SMC_DPM_FEATURE ( \ FEATURE_MASK(FEATURE_DPM_GFXCLK_BIT) | \
@@ -1061,8 +1065,35 @@ static bool smu_v13_0_0_is_od_feature_supported(struct smu_context *smu,PPTable_t *pptable = smu->smu_table.driver_pptable;const OverDriveLimits_t *const overdrive_upperlimits = &pptable->SkuTable.OverDriveLimitsBasicMax; +int32_t min_value, max_value; +bool feature_enabled; -return overdrive_upperlimits->FeatureCtrlMask & (1U << od_feature_bit); +switch (od_feature_bit) { +case PP_OD_FEATURE_FAN_CURVE_BIT : + feature_enabled = !!(overdrive_upperlimits->FeatureCtrlMask & (1U << od_feature_bit)); +if (feature_enabled) { +smu_v13_0_0_get_od_setting_limits (smu,PP_OD_FEATURE_FAN_CURVE_TEMP , + &min_value, &max_value); +if (!min_value && !max_value) { + feature_enabled = false; + goto out; + } + +smu_v13_0_0_get_od_setting_limits (smu,PP_OD_FEATURE_FAN_CURVE_PWM , + &min_value, &max_value); +if (!min_value && !max_value) { + feature_enabled = false; + goto out; + } + } +break ; +default : + feature_enabled = !!(overdrive_upperlimits->FeatureCtrlMask & (1U << od_feature_bit)); +break ; + } + +out: +return feature_enabled; } static void smu_v13_0_0_get_od_setting_limits(struct smu_context *smu,
drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_7_ppt.c +32 -1
@@ -59,6 +59,10 @@#define to_amdgpu_device (x) (container_of(x, struct amdgpu_device, pm.smu_i2c)) +static void smu_v13_0_7_get_od_setting_limits (struct smu_context *smu, +int od_feature_bit, +int32_t *min,int32_t *max); +#define FEATURE_MASK (feature) (1ULL << feature)#define SMC_DPM_FEATURE ( \ FEATURE_MASK(FEATURE_DPM_GFXCLK_BIT) | \
@@ -1050,8 +1054,35 @@ static bool smu_v13_0_7_is_od_feature_supported(struct smu_context *smu,PPTable_t *pptable = smu->smu_table.driver_pptable;const OverDriveLimits_t *const overdrive_upperlimits = &pptable->SkuTable.OverDriveLimitsBasicMax; +int32_t min_value, max_value; +bool feature_enabled; -return overdrive_upperlimits->FeatureCtrlMask & (1U << od_feature_bit); +switch (od_feature_bit) { +case PP_OD_FEATURE_FAN_CURVE_BIT : + feature_enabled = !!(overdrive_upperlimits->FeatureCtrlMask & (1U << od_feature_bit)); +if (feature_enabled) { +smu_v13_0_7_get_od_setting_limits (smu,PP_OD_FEATURE_FAN_CURVE_TEMP , + &min_value, &max_value); +if (!min_value && !max_value) { + feature_enabled = false; + goto out; + } + +smu_v13_0_7_get_od_setting_limits (smu,PP_OD_FEATURE_FAN_CURVE_PWM , + &min_value, &max_value); +if (!min_value && !max_value) { + feature_enabled = false; + goto out; + } + } +break ; +default : + feature_enabled = !!(overdrive_upperlimits->FeatureCtrlMask & (1U << od_feature_bit)); +break ; + } + +out: +return feature_enabled; } static void smu_v13_0_7_get_od_setting_limits(struct smu_context *smu,
drivers/gpu/drm/amd/pm/swsmu/smu14/smu_v14_0.c +0 -1
@@ -284,7 +284,6 @@ int smu_v14_0_check_fw_version(struct smu_context *smu)"smu fw program = %d, smu fw version = 0x%08x (%d.%d.%d)\n" , smu->smc_driver_if_version, if_version, smu_program, smu_version, smu_major, smu_minor, smu_debug); -dev_info (adev->dev,"SMU driver if version not matched\n" ); }return ret;
drivers/gpu/drm/ast/ast_dp501.c +1 -1
@@ -436,7 +436,7 @@ static void ast_init_analog(struct ast_device *ast)/* Finally, clear bits [17:16] of SCU2c */ data =ast_read32 (ast,0x1202c ); data &=0xfffcffff ; -ast_write32 (ast,0 , data); +ast_write32 (ast,0x1202c , data);/* Disable DVO */ ast_set_index_reg_mask (ast,AST_IO_VGACRI ,0xa3 ,0xcf ,0x00 );
drivers/gpu/drm/drm_bridge.c +11 -5
@@ -1465,11 +1465,17 @@ EXPORT_SYMBOL(devm_drm_put_bridge);static void drm_bridge_debugfs_show_bridge (struct drm_printer *p,struct drm_bridge *bridge,unsigned int idx, -bool lingering) +bool lingering, +bool scoped) { +unsigned int refcount =kref_read (&bridge->refcount); + +if (scoped) + refcount--; +drm_printf (p,"bridge[%u]: %ps\n" , idx, bridge->funcs); -drm_printf (p,"\trefcount: %u%s\n" ,kref_read (&bridge->refcount), +drm_printf (p,"\trefcount: %u%s\n" , refcount, lingering ?" [lingering]" :"" ); drm_printf(p, "\ttype: [%d] %s\n",
@@ -1503,10 +1509,10 @@ static int allbridges_show(struct seq_file *m, void *data)mutex_lock (&bridge_lock);list_for_each_entry (bridge, &bridge_list, list) -drm_bridge_debugfs_show_bridge (&p, bridge, idx++, false); +drm_bridge_debugfs_show_bridge (&p, bridge, idx++, false, false);list_for_each_entry (bridge, &bridge_lingering_list, list) -drm_bridge_debugfs_show_bridge (&p, bridge, idx++, true); +drm_bridge_debugfs_show_bridge (&p, bridge, idx++, true, false);mutex_unlock (&bridge_lock);
@@ -1521,7 +1527,7 @@ static int encoder_bridges_show(struct seq_file *m, void *data)unsigned int idx =0 ;drm_for_each_bridge_in_chain_scoped (encoder, bridge) -drm_bridge_debugfs_show_bridge (&p, bridge, idx++, false); +drm_bridge_debugfs_show_bridge (&p, bridge, idx++, false, true);return 0 ; }
drivers/gpu/drm/drm_file.c +1 -4
@@ -233,7 +233,6 @@ static void drm_events_release(struct drm_file *file_priv)void drm_file_free (struct drm_file *file) {struct drm_device *dev; -int idx;if (!file)return ;
@@ -250,11 +249,9 @@ void drm_file_free(struct drm_file *file)drm_events_release (file); -if (drm_core_check_feature (dev,DRIVER_MODESET ) && -drm_dev_enter (dev, &idx)) { +if (drm_core_check_feature (dev,DRIVER_MODESET )) {drm_fb_release (file);drm_property_destroy_user_blobs (dev, file); -drm_dev_exit (idx); }if (drm_core_check_feature (dev,DRIVER_SYNCOBJ ))
drivers/gpu/drm/drm_ioc32.c +2 -0
@@ -28,6 +28,7 @@* IN THE SOFTWARE. */ #include <linux/compat.h> +#include <linux/nospec.h> #include <linux/ratelimit.h> #include <linux/export.h>
@@ -374,6 +375,7 @@ long drm_compat_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)if (nr >=ARRAY_SIZE (drm_compat_ioctls))return drm_ioctl (filp, cmd, arg); + nr =array_index_nospec (nr,ARRAY_SIZE (drm_compat_ioctls)); fn = drm_compat_ioctls[nr].fn;if (!fn)return drm_ioctl (filp, cmd, arg);
drivers/gpu/drm/drm_mode_config.c +3 -6
@@ -577,13 +577,10 @@ void drm_mode_config_cleanup(struct drm_device *dev)*/ WARN_ON (!list_empty (&dev->mode_config.fb_list));list_for_each_entry_safe (fb, fbt, &dev->mode_config.fb_list, head) { -if (list_empty (&fb->filp_head) ||drm_framebuffer_read_refcount (fb) >1 ) { -struct drm_printer p =drm_dbg_printer (dev,DRM_UT_KMS ,"[leaked fb]" ); +struct drm_printer p =drm_dbg_printer (dev,DRM_UT_KMS ,"[leaked fb]" ); -drm_printf (&p,"framebuffer[%u]:\n" , fb->base.id); -drm_framebuffer_print_info (&p,1 , fb); - } -list_del_init (&fb->filp_head); +drm_printf (&p,"framebuffer[%u]:\n" , fb->base.id); +drm_framebuffer_print_info (&p,1 , fb);drm_framebuffer_free (&fb->base.refcount); }
drivers/gpu/drm/i915/display/g4x_dp.c +1 -1
@@ -137,7 +137,7 @@ static void intel_dp_prepare(struct intel_encoder *encoder, intel_dp->DP |=DP_SYNC_VS_HIGH ; intel_dp->DP |=DP_LINK_TRAIN_OFF_CPT ; -if (drm_dp_enhanced_frame_cap (intel_dp->dpcd)) +if (pipe_config->enhanced_framing) intel_dp->DP |=DP_ENHANCED_FRAMING ; intel_dp->DP |=DP_PIPE_SEL_IVB (crtc->pipe);
drivers/gpu/drm/i915/display/icl_dsi.c +2 -2
@@ -889,7 +889,7 @@ gen11_dsi_set_transcoder_timings(struct intel_encoder *encoder,* non-compressed link speeds, and simplifies down to the ratio between * compressed and non-compressed bpp. */ -if (crtc_state->dsc.compression_enable) { +if (is_vid_mode (intel_dsi) && crtc_state->dsc.compression_enable) { mul =fxp_q4_to_int (crtc_state->dsc.compressed_bpp_x16); div =mipi_dsi_pixel_format_to_bpp (intel_dsi->pixel_format); }
@@ -1503,7 +1503,7 @@ static void gen11_dsi_get_timings(struct intel_encoder *encoder,struct drm_display_mode *adjusted_mode = &pipe_config->hw.adjusted_mode; -if (pipe_config->dsc.compressed_bpp_x16) { +if (is_vid_mode (intel_dsi) && pipe_config->dsc.compressed_bpp_x16) {int div =fxp_q4_to_int (pipe_config->dsc.compressed_bpp_x16);int mul =mipi_dsi_pixel_format_to_bpp (intel_dsi->pixel_format);
drivers/gpu/drm/i915/display/intel_cdclk.c +54 -0
66 lines not on this page · raw message
drivers/gpu/drm/sysfb/efidrm.c +31 -15
59 lines not on this page · raw message
drivers/gpu/drm/xe/xe_pagefault.c +6 -0
@@ -187,6 +187,12 @@ static int xe_pagefault_service(struct xe_pagefault *pf) goto unlock_vm; } +if (xe_vma_read_only (vma) && + pf->consumer.access_type !=XE_PAGEFAULT_ACCESS_TYPE_READ ) { + err = -EPERM ; + goto unlock_vm; + } + atomic =xe_pagefault_access_is_atomic (pf->consumer.access_type);if (xe_vma_is_cpu_addr_mirror (vma))
drivers/gpu/drm/xe/xe_pxp.c +4 -7
@@ -532,7 +532,7 @@ static int __exec_queue_add(struct xe_pxp *pxp, struct xe_exec_queue *q)static int pxp_start (struct xe_pxp *pxp,u8 type) {int ret =0 ; -bool restart = false; +bool restart;if (!xe_pxp_is_enabled (pxp))return -ENODEV ;
@@ -561,6 +561,8 @@ static int pxp_start(struct xe_pxp *pxp, u8 type) msecs_to_jiffies(PXP_ACTIVATION_TIMEOUT_MS)))return -ETIMEDOUT ; + restart = false; +mutex_lock (&pxp->mutex);/* If PXP is not already active, turn it on */
@@ -603,6 +605,7 @@ static int pxp_start(struct xe_pxp *pxp, u8 type)drm_err (&pxp->xe->drm,"PXP termination failed before start\n" );mutex_lock (&pxp->mutex); pxp->status =XE_PXP_ERROR ; +complete_all (&pxp->termination); goto out_unlock; }
@@ -890,11 +893,6 @@ int xe_pxp_pm_suspend(struct xe_pxp *pxp) pxp->key_instance++; needs_queue_inval = true;break ; -default : -drm_err (&pxp->xe->drm,"unexpected state during PXP suspend: %u" , - pxp->status); - ret = -EIO ; - goto out; }/*
@@ -919,7 +917,6 @@ int xe_pxp_pm_suspend(struct xe_pxp *pxp) pxp->last_suspend_key_instance = pxp->key_instance; -out:return ret; }
drivers/hid/hid-appletb-kbd.c +3 -2
@@ -477,7 +477,7 @@ static int appletb_kbd_suspend(struct hid_device *hdev, pm_message_t msg)return 0 ; } -static int appletb_kbd_reset_resume (struct hid_device *hdev) +static int appletb_kbd_resume (struct hid_device *hdev) {struct appletb_kbd *kbd =hid_get_drvdata (hdev);
@@ -503,7 +503,8 @@ static struct hid_driver appletb_kbd_hid_driver = { .input_configured = appletb_kbd_input_configured, #ifdef CONFIG_PM .suspend = appletb_kbd_suspend, - .reset_resume = appletb_kbd_reset_resume, + .resume = appletb_kbd_resume, + .reset_resume = appletb_kbd_resume, #endif .driver.dev_groups = appletb_kbd_groups, };
drivers/hid/hid-core.c +4 -3
@@ -2057,9 +2057,10 @@ int hid_report_raw_event(struct hid_device *hid, enum hid_report_type type, u8 * rsize = max_buffer_size;if (csize < rsize) { -dbg_hid ("report %d is too short, (%d < %d)\n" , report->id, - csize, rsize); -memset (cdata + csize,0 , rsize - csize); +hid_warn_ratelimited (hid,"Event data for report %d was too short (%d vs %d)\n" , + report->id, rsize, csize); + ret = -EINVAL ; + goto out; }if ((hid->claimed &HID_CLAIMED_HIDDEV ) && hid->hiddev_report_event)
drivers/hid/hid-logitech-hidpp.c +5 -1
@@ -4487,10 +4487,12 @@ static int hidpp_probe(struct hid_device *hdev, const struct hid_device_id *id)if (!ret) ret =hidpp_ff_init (hidpp, &data); -if (ret) +if (ret) {hid_warn (hidpp->hid_dev,"Unable to initialize force feedback support, errno %d\n" , ret); + ret =0 ; + } }/*
@@ -4668,6 +4670,8 @@ static const struct hid_device_id hidpp_devices[] = { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_LOGITECH, 0xb038) }, {/* Slim Solar+ K980 Keyboard over Bluetooth */ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_LOGITECH, 0xb391) }, + { /* MX Master 4 mouse over Bluetooth */ + HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_LOGITECH, 0xb042) }, {} };
drivers/hid/hid-multitouch.c +7 -0
@@ -526,12 +526,19 @@ static void mt_get_feature(struct hid_device *hdev, struct hid_report *report)dev_warn (&hdev->dev,"failed to fetch feature %d\n" , report->id); }else { +/* The report ID in the request and the response should match */ +if (report->id != buf[0 ]) { +hid_err (hdev,"Returned feature report did not match the request\n" ); + goto free; + } + ret =hid_report_raw_event (hdev,HID_FEATURE_REPORT , buf, size,0 );if (ret)dev_warn (&hdev->dev,"failed to report feature\n" ); } +free:kfree (buf); }
drivers/hid/wacom_wac.c +10 -0
@@ -1208,10 +1208,20 @@ static int wacom_intuos_bt_irq(struct wacom_wac *wacom, size_t len)switch (data[0 ]) {case 0x04 : +if (len <32 ) { +dev_warn (wacom->pen_input->dev.parent, +"Report 0x04 too short: %zu bytes\n" , len); +break ; + }wacom_intuos_bt_process_data (wacom, data + i); i +=10 ; fallthrough;case 0x03 : +if (i ==1 && len <22 ) { +dev_warn (wacom->pen_input->dev.parent, +"Report 0x03 too short: %zu bytes\n" , len); +break ; + }wacom_intuos_bt_process_data (wacom, data + i); i +=10 ;wacom_intuos_bt_process_data (wacom, data + i);
drivers/hv/mshv_regions.c +4 -2
@@ -314,15 +314,17 @@ int mshv_region_pin(struct mshv_mem_region *region) ret =pin_user_pages_fast (userspace_addr, nr_pages,FOLL_WRITE |FOLL_LONGTERM , pages); -if (ret <0 ) +if (ret != nr_pages) goto release_pages; }return 0 ; release_pages: +if (ret >0 ) + done_count += ret;mshv_region_invalidate_pages (region,0 , done_count); -return ret; +return ret <0 ? ret : -ENOMEM ; } static int mshv_region_chunk_unmap(struct mshv_mem_region *region,
drivers/hwmon/asus-ec-sensors.c +6 -1
@@ -111,6 +111,8 @@ enum ec_sensors { ec_sensor_temp_mb,/* "T_Sensor" temperature sensor reading [℃] */ ec_sensor_temp_t_sensor, +/* like ec_sensor_temp_t_sensor, but at an alternate address [℃] */ + ec_sensor_temp_t_sensor_alt1,/* VRM temperature [℃] */ ec_sensor_temp_vrm,/* VRM east (right) temperature [℃] */
@@ -160,6 +162,7 @@ enum ec_sensors {#define SENSOR_TEMP_CPU_PACKAGE BIT(ec_sensor_temp_cpu_package)#define SENSOR_TEMP_MB BIT(ec_sensor_temp_mb)#define SENSOR_TEMP_T_SENSOR BIT(ec_sensor_temp_t_sensor) +#define SENSOR_TEMP_T_SENSOR_ALT1 BIT(ec_sensor_temp_t_sensor_alt1)#define SENSOR_TEMP_VRM BIT(ec_sensor_temp_vrm)#define SENSOR_TEMP_VRME BIT(ec_sensor_temp_vrme)#define SENSOR_TEMP_VRMW BIT(ec_sensor_temp_vrmw)
@@ -279,6 +282,8 @@ static const struct ec_sensor_info sensors_family_amd_600[] = { EC_SENSOR("VRM", hwmon_temp, 1, 0x00, 0x33), [ec_sensor_temp_t_sensor] = EC_SENSOR("T_Sensor", hwmon_temp, 1, 0x00, 0x36), + [ec_sensor_temp_t_sensor_alt1] = + EC_SENSOR("T_Sensor", hwmon_temp, 1, 0x00, 0x37), [ec_sensor_fan_cpu_opt] = EC_SENSOR("CPU_Opt", hwmon_fan, 2, 0x00, 0xb0), [ec_sensor_temp_water_in] =
@@ -509,7 +514,7 @@ static const struct ec_board_info board_info_prime_x570_pro = {static const struct ec_board_info board_info_prime_x670e_pro_wifi = { .sensors =SENSOR_TEMP_CPU |SENSOR_TEMP_CPU_PACKAGE |SENSOR_TEMP_MB |SENSOR_TEMP_VRM | -SENSOR_TEMP_T_SENSOR |SENSOR_FAN_CPU_OPT , +SENSOR_TEMP_T_SENSOR_ALT1 |SENSOR_FAN_CPU_OPT , .mutex_path =ACPI_GLOBAL_LOCK_PSEUDO_PATH , .family = family_amd_600_series, };
drivers/hwmon/occ/common.c +9 -10
@@ -420,6 +420,12 @@ static ssize_t occ_show_freq_2(struct device *dev,return sysfs_emit (buf,"%u\n" , val); } +static u64 occ_get_powr_avg (u64 accum,u32 samples) +{ +return (samples ==0 ) ?0 : +mul_u64_u32_div (accum,1000000UL , samples); +} +static ssize_t occ_show_power_1 (struct device *dev,struct device_attribute *attr,char *buf) {
@@ -441,9 +447,8 @@ static ssize_t occ_show_power_1(struct device *dev, val =get_unaligned_be16 (&power->sensor_id);break ;case 1 : - val =get_unaligned_be32 (&power->accumulator) / -get_unaligned_be32 (&power->update_tag); - val *=1000000ULL ; + val =occ_get_powr_avg (get_unaligned_be32 (&power->accumulator), +get_unaligned_be32 (&power->update_tag));break ;case 2 : val = (u64)get_unaligned_be32(&power->update_tag) *
@@ -459,12 +464,6 @@ static ssize_t occ_show_power_1(struct device *dev,return sysfs_emit (buf,"%llu\n" , val); } -static u64 occ_get_powr_avg (u64 accum,u32 samples) -{ -return (samples ==0 ) ?0 : -mul_u64_u32_div (accum,1000000UL , samples); -} -static ssize_t occ_show_power_2 (struct device *dev,struct device_attribute *attr,char *buf) {
@@ -725,7 +724,7 @@ static ssize_t occ_show_extended(struct device *dev,switch (sattr->nr) {case 0 :if (extn->flags &EXTN_FLAG_SENSOR_ID ) { - rc =sysfs_emit (buf,"%u" , + rc =sysfs_emit (buf,"%u\n" ,get_unaligned_be32 (&extn->sensor_id)); }else { rc =sysfs_emit (buf,"%4phN\n" , extn->name);
drivers/hwmon/pmbus/ltc4286.c +1 -0
@@ -173,3 +173,4 @@ module_i2c_driver(ltc4286_driver);MODULE_AUTHOR ("Delphine CC Chiu <[email protected]>" );MODULE_DESCRIPTION ("PMBUS driver for LTC4286 and compatibles" );MODULE_LICENSE ("GPL" ); +MODULE_IMPORT_NS ("PMBUS" );
drivers/hwmon/pmbus/pxe1610.c +4 -1
@@ -104,7 +104,10 @@ static int pxe1610_probe(struct i2c_client *client)* By default this device doesn't boot to page 0, so set page 0 * to access all pmbus registers. */ -i2c_smbus_write_byte_data (client,PMBUS_PAGE ,0 ); + ret =i2c_smbus_write_byte_data (client,PMBUS_PAGE ,0 ); +if (ret <0 ) +return dev_err_probe (&client->dev, ret, +"Failed to set page 0\n" );/* Read Manufacturer id */ ret =i2c_smbus_read_block_data (client,PMBUS_MFR_ID , buf);
drivers/hwmon/pmbus/tps53679.c +5 -5
@@ -103,10 +103,10 @@ static int tps53679_identify_chip(struct i2c_client *client, } ret =i2c_smbus_read_block_data (client,PMBUS_IC_DEVICE_ID , buf); -if (ret <0 ) -return ret; +if (ret <=0 ) +return ret <0 ? ret : -EIO ; -/* Adjust length if null terminator if present */ +/* Adjust length if null terminator is present */ buf_len = (buf[ret -1 ] !='\x00' ? ret : ret -1 ); id_len =strlen (id);
@@ -175,8 +175,8 @@ static int tps53676_identify(struct i2c_client *client, ret =i2c_smbus_read_block_data (client,PMBUS_IC_DEVICE_ID , buf);if (ret <0 )return ret; -if (strncmp ("TI\x53\x67\x60" , buf,5 )) { -dev_err (&client->dev,"Unexpected device ID: %s\n" , buf); +if (ret !=6 ||memcmp (buf,"TI\x53\x67\x60\x00" ,6 )) { +dev_err (&client->dev,"Unexpected device ID: %*ph\n" , ret, buf);return -ENODEV ; }
drivers/i2c/busses/Kconfig +2 -0
@@ -1220,6 +1220,8 @@ config I2C_TEGRA tristate "NVIDIA Tegra internal I2C controller" depends on ARCH_TEGRA || (COMPILE_TEST && (ARC || ARM || ARM64 || M68K || RISCV || SUPERH || SPARC)) # COMPILE_TEST needs architectures with readsX()/writesX() primitives + depends on PINCTRL + # ARCH_TEGRA implies PINCTRL, but the COMPILE_TEST side doesn't. help If you say yes to this option, support will be included for the I2C controller embedded in NVIDIA Tegra SOCs
drivers/i2c/busses/i2c-tegra.c +4 -1
@@ -1837,8 +1837,11 @@ static int tegra_i2c_probe(struct platform_device *pdev)* * VI I2C device shouldn't be marked as IRQ-safe because VI I2C won't * be used for atomic transfers. ACPI device is not IRQ safe also. +* +* Devices with pinctrl states cannot be marked IRQ-safe as the pinctrl +* state transitions during runtime PM require mutexes. */ -if (!IS_VI (i2c_dev) && !has_acpi_companion (i2c_dev->dev)) +if (!IS_VI (i2c_dev) && !has_acpi_companion (i2c_dev->dev) && !i2c_dev->dev->pins)pm_runtime_irq_safe (i2c_dev->dev);pm_runtime_enable (i2c_dev->dev);
drivers/iio/accel/adxl313_core.c +2 -0
@@ -998,6 +998,8 @@ static int adxl313_buffer_predisable(struct iio_dev *indio_dev) ret =regmap_write (data->regmap,ADXL313_REG_FIFO_CTL ,FIELD_PREP (ADXL313_REG_FIFO_CTL_MODE_MSK ,ADXL313_FIFO_BYPASS )); +if (ret) +return ret; ret =regmap_write (data->regmap,ADXL313_REG_INT_ENABLE ,0 );if (ret)
drivers/iio/accel/adxl355_core.c +1 -1
@@ -745,7 +745,7 @@ static const struct iio_chan_spec adxl355_channels[] = {BIT (IIO_CHAN_INFO_OFFSET ), .scan_index = 3, .scan_type = { - .sign ='s' , + .sign ='u' , .realbits =12 , .storagebits =16 , .endianness =IIO_BE ,
drivers/iio/accel/adxl380.c +1 -1
@@ -860,7 +860,7 @@ static int adxl380_set_fifo_samples(struct adxl380_state *st) ret =regmap_update_bits (st->regmap,ADXL380_FIFO_CONFIG_0_REG ,ADXL380_FIFO_SAMPLES_8_MSK ,FIELD_PREP (ADXL380_FIFO_SAMPLES_8_MSK , - (fifo_samples &BIT (8 )))); + !!(fifo_samples &BIT (8 ))));if (ret)return ret;
drivers/iio/adc/ade9000.c +6 -6
@@ -787,7 +787,7 @@ static int ade9000_iio_push_streaming(struct iio_dev *indio_dev) ADE9000_MIDDLE_PAGE_BIT);if (ret) {dev_err_ratelimited (dev,"IRQ0 WFB write fail" ); -return IRQ_HANDLED ; +return ret; }ade9000_configure_scan (indio_dev,ADE9000_REG_WF_BUFF );
@@ -1123,7 +1123,7 @@ static int ade9000_write_raw(struct iio_dev *indio_dev, tmp &= ~ADE9000_PHASE_C_POS_BIT ;switch (tmp) { -case ADE9000_REG_AWATTOS : +case ADE9000_REG_AWATT :return regmap_write (st->regmap,ADE9000_ADDR_ADJUST (ADE9000_REG_AWATTOS , chan->channel), val);
@@ -1706,19 +1706,19 @@ static int ade9000_probe(struct spi_device *spi)init_completion (&st->reset_completion); - ret =ade9000_request_irq (dev,"irq0" , ade9000_irq0_thread, indio_dev); + ret =devm_mutex_init (dev, &st->lock);if (ret)return ret; - ret =ade9000_request_irq (dev,"irq1" , ade9000_irq1_thread, indio_dev); + ret =ade9000_request_irq (dev,"irq0" , ade9000_irq0_thread, indio_dev);if (ret)return ret; - ret =ade9000_request_irq (dev,"dready" , ade9000_dready_thread, indio_dev); + ret =ade9000_request_irq (dev,"irq1" , ade9000_irq1_thread, indio_dev);if (ret)return ret; - ret =devm_mutex_init (dev, &st->lock); + ret =ade9000_request_irq (dev,"dready" , ade9000_dready_thread, indio_dev);if (ret)return ret;
drivers/iio/adc/aspeed_adc.c +1 -0
@@ -415,6 +415,7 @@ static int aspeed_adc_vref_config(struct iio_dev *indio_dev) } adc_engine_control_reg_val =readl (data->base +ASPEED_REG_ENGINE_CONTROL ); + adc_engine_control_reg_val &= ~ASPEED_ADC_REF_VOLTAGE ; ret =devm_regulator_get_enable_read_voltage (data->dev,"vref" );if (ret <0 && ret != -ENODEV )
drivers/iio/adc/ti-adc161s626.c +20 -21
75 lines not on this page · raw message
drivers/iio/adc/ti-ads1119.c +6 -5
@@ -274,12 +274,15 @@ static int ads1119_single_conversion(struct ads1119_state *st, ret =pm_runtime_resume_and_get (dev);if (ret) - goto pdown; +return ret; ret =ads1119_configure_channel (st, mux, gain, datarate);if (ret) goto pdown; +if (st->client->irq) +reinit_completion (&st->completion); + ret =i2c_smbus_write_byte (st->client,ADS1119_CMD_START_SYNC );if (ret) goto pdown;
@@ -735,10 +738,8 @@ static int ads1119_probe(struct i2c_client *client)return dev_err_probe (dev, ret,"Failed to setup IIO buffer\n" );if (client->irq >0 ) { - ret =devm_request_threaded_irq (dev, client->irq, - ads1119_irq_handler, -NULL ,IRQF_ONESHOT , -"ads1119" , indio_dev); + ret =devm_request_irq (dev, client->irq, ads1119_irq_handler, +IRQF_NO_THREAD ,"ads1119" , indio_dev);if (ret)return dev_err_probe (dev, ret,"Failed to allocate irq\n" );
drivers/iio/adc/ti-ads7950.c +5 -3
@@ -427,13 +427,15 @@ static int ti_ads7950_set(struct gpio_chip *chip, unsigned int offset,static int ti_ads7950_get (struct gpio_chip *chip,unsigned int offset) {struct ti_ads7950_state *st =gpiochip_get_data (chip); +bool state;int ret;mutex_lock (&st->slock);/* If set as output, return the output */ if (st->gpio_cmd_settings_bitmask &BIT (offset)) { - ret = st->cmd_settings_bitmask &BIT (offset); + state = st->cmd_settings_bitmask &BIT (offset); + ret =0 ; goto out; }
@@ -444,7 +446,7 @@ static int ti_ads7950_get(struct gpio_chip *chip, unsigned int offset)if (ret) goto out; - ret = ((st->single_rx >>12 ) &BIT (offset)) ?1 :0 ; + state = (st->single_rx >>12 ) &BIT (offset);/* Revert back to original settings */ st->cmd_settings_bitmask &= ~TI_ADS7950_CR_GPIO_DATA ;
@@ -456,7 +458,7 @@ static int ti_ads7950_get(struct gpio_chip *chip, unsigned int offset) out:mutex_unlock (&st->slock); -return ret; +return ret ?: state; } static int ti_ads7950_get_direction(struct gpio_chip *chip,
drivers/iio/dac/ad5770r.c +1 -1
@@ -322,7 +322,7 @@ static int ad5770r_read_raw(struct iio_dev *indio_dev, chan->address, st->transf_buf, 2);if (ret) -return 0 ; +return ret; buf16 =get_unaligned_le16 (st->transf_buf); *val = buf16 >>2 ;
drivers/iio/gyro/mpu3050-core.c +21 -11
@@ -1129,11 +1129,16 @@ static int mpu3050_trigger_probe(struct iio_dev *indio_dev, int irq) ret =iio_trigger_register (mpu3050->trig);if (ret) -return ret; + goto err_iio_trigger; indio_dev->trig =iio_trigger_get (mpu3050->trig);return 0 ; + +err_iio_trigger: +free_irq (mpu3050->irq, mpu3050->trig); + +return ret; } int mpu3050_common_probe(struct device *dev,
@@ -1221,12 +1226,6 @@ int mpu3050_common_probe(struct device *dev, goto err_power_down; } - ret =iio_device_register (indio_dev); -if (ret) { -dev_err (dev,"device register failed\n" ); - goto err_cleanup_buffer; - } -dev_set_drvdata (dev, indio_dev);/* Check if we have an assigned IRQ to use as trigger */
@@ -1249,9 +1248,20 @@ int mpu3050_common_probe(struct device *dev,pm_runtime_use_autosuspend (dev);pm_runtime_put (dev); + ret =iio_device_register (indio_dev); +if (ret) { +dev_err (dev,"device register failed\n" ); + goto err_iio_device_register; + } +return 0 ; -err_cleanup_buffer: +err_iio_device_register: +pm_runtime_get_sync (dev); +pm_runtime_put_noidle (dev); +pm_runtime_disable (dev); +if (irq) +free_irq (mpu3050->irq, mpu3050->trig);iio_triggered_buffer_cleanup (indio_dev); err_power_down:mpu3050_power_down (mpu3050);
@@ -1264,13 +1274,13 @@ void mpu3050_common_remove(struct device *dev)struct iio_dev *indio_dev =dev_get_drvdata (dev);struct mpu3050 *mpu3050 =iio_priv (indio_dev); +iio_device_unregister (indio_dev);pm_runtime_get_sync (dev);pm_runtime_put_noidle (dev);pm_runtime_disable (dev); -iio_triggered_buffer_cleanup (indio_dev);if (mpu3050->irq) -free_irq (mpu3050->irq, mpu3050); -iio_device_unregister (indio_dev); +free_irq (mpu3050->irq, mpu3050->trig); +iio_triggered_buffer_cleanup (indio_dev);mpu3050_power_down (mpu3050); }
drivers/iio/imu/adis16550.c +4 -4
@@ -643,12 +643,12 @@ static int adis16550_read_raw(struct iio_dev *indio_dev,case IIO_CHAN_INFO_LOW_PASS_FILTER_3DB_FREQUENCY :switch (chan->type) {case IIO_ANGL_VEL : - ret =adis16550_get_accl_filter_freq (st, val); + ret =adis16550_get_gyro_filter_freq (st, val);if (ret)return ret;return IIO_VAL_INT ;case IIO_ACCEL : - ret =adis16550_get_gyro_filter_freq (st, val); + ret =adis16550_get_accl_filter_freq (st, val);if (ret)return ret;return IIO_VAL_INT ;
@@ -681,9 +681,9 @@ static int adis16550_write_raw(struct iio_dev *indio_dev,case IIO_CHAN_INFO_LOW_PASS_FILTER_3DB_FREQUENCY :switch (chan->type) {case IIO_ANGL_VEL : -return adis16550_set_accl_filter_freq (st, val); -case IIO_ACCEL :return adis16550_set_gyro_filter_freq (st, val); +case IIO_ACCEL : +return adis16550_set_accl_filter_freq (st, val);default :return -EINVAL ; }
drivers/iio/imu/bmi160/bmi160_core.c +5 -10
@@ -573,12 +573,16 @@ static int bmi160_config_pin(struct regmap *regmap, enum bmi160_int_pin pin, int_out_ctrl_shift =BMI160_INT1_OUT_CTRL_SHIFT ; int_latch_mask =BMI160_INT1_LATCH_MASK ; int_map_mask =BMI160_INT1_MAP_DRDY_EN ; + pin_name ="INT1" ;break ;case BMI160_PIN_INT2 : int_out_ctrl_shift =BMI160_INT2_OUT_CTRL_SHIFT ; int_latch_mask =BMI160_INT2_LATCH_MASK ; int_map_mask =BMI160_INT2_MAP_DRDY_EN ; + pin_name ="INT2" ;break ; +default : +return -EINVAL ; } int_out_ctrl_mask =BMI160_INT_OUT_CTRL_MASK << int_out_ctrl_shift;
@@ -612,17 +616,8 @@ static int bmi160_config_pin(struct regmap *regmap, enum bmi160_int_pin pin, ret =bmi160_write_conf_reg (regmap,BMI160_REG_INT_MAP , int_map_mask, int_map_mask, write_usleep); -if (ret) { -switch (pin) { -case BMI160_PIN_INT1 : - pin_name ="INT1" ; -break ; -case BMI160_PIN_INT2 : - pin_name ="INT2" ; -break ; - } +if (ret)dev_err (dev,"Failed to configure %s IRQ pin" , pin_name); - }return ret; }
drivers/iio/imu/bno055/bno055.c +1 -1
@@ -64,7 +64,7 @@#define BNO055_GRAVITY_DATA_X_LSB_REG 0x2E#define BNO055_GRAVITY_DATA_Y_LSB_REG 0x30#define BNO055_GRAVITY_DATA_Z_LSB_REG 0x32 -#define BNO055_SCAN_CH_COUNT ((BNO055_GRAVITY_DATA_Z_LSB_REG - BNO055_ACC_DATA_X_LSB_REG) / 2) +#define BNO055_SCAN_CH_COUNT ((BNO055_GRAVITY_DATA_Z_LSB_REG - BNO055_ACC_DATA_X_LSB_REG) / 2 + 1)#define BNO055_TEMP_REG 0x34#define BNO055_CALIB_STAT_REG 0x35#define BNO055_CALIB_STAT_MAGN_SHIFT 0
drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_buffer.c +14 -1
@@ -225,6 +225,10 @@ static int st_lsm6dsx_set_fifo_odr(struct st_lsm6dsx_sensor *sensor,const struct st_lsm6dsx_reg *batch_reg;u8 data; +/* Only internal sensors have a FIFO ODR configuration register. */ +if (sensor->id >=ARRAY_SIZE (hw->settings->batch)) +return 0 ; + batch_reg = &hw->settings->batch[sensor->id];if (batch_reg->addr) {int val;
@@ -858,12 +862,21 @@ int st_lsm6dsx_fifo_setup(struct st_lsm6dsx_hw *hw)int i, ret;for (i =0 ; i <ST_LSM6DSX_ID_MAX ; i++) { +const struct iio_dev_attr **attrs; +if (!hw->iio_devs[i])continue ; +/* +* For the accelerometer, allow setting FIFO sampling frequency +* values different from the sensor sampling frequency, which +* may be needed to keep FIFO data rate low while sampling +* acceleration data at high rates for accurate event detection. +*/ + attrs = i ==ST_LSM6DSX_ID_ACC ? st_lsm6dsx_buffer_attrs :NULL ; ret = devm_iio_kfifo_buffer_setup_ext(hw->dev, hw->iio_devs[i],
Lines of this file are not shown. View the raw message.
drivers/iio/orientation/hid-sensor-rotation.c +20 -4
Lines of this file are not shown. View the raw message.
drivers/input/mouse/bcm5974.c +41 -1
42 lines not on this page · raw message
drivers/net/ethernet/airoha/airoha_eth.c +17 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/broadcom/bnxt/bnxt.c +52 -24
76 lines not on this page · raw message
drivers/net/ethernet/broadcom/bnxt/bnxt.h +1 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c +1 -4
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c +2 -3
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/cadence/macb_pci.c +6 -4
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/faraday/ftgmac100.c +24 -4
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/freescale/enetc/enetc.c +12 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/freescale/enetc/enetc4_hw.h +11 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/freescale/enetc/enetc4_pf.c +104 -14
118 lines not on this page · raw message
drivers/net/ethernet/freescale/enetc/enetc_ethtool.c +9 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/freescale/fec_ptp.c +0 -3
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mediatek/mtk_ppe_offload.c +20 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/devlink.c +1 -3
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c +2 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/fw.c +34 -19
53 lines not on this page · raw message
drivers/net/ethernet/mellanox/mlx5/core/lag/debugfs.c +3 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/mlx5_core.h +2 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/meta/fbnic/fbnic_txrx.c +3 -3
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/meta/fbnic/fbnic_txrx.h +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/microsoft/mana/mana_en.c +11 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +4 -10
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/ti/icssg/icssg_common.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/xilinx/xilinx_axienet.h +2 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/xilinx/xilinx_axienet_main.c +4 -5
Lines of this file are not shown. View the raw message.
drivers/net/wireless/ath/ath11k/dp_rx.c +7 -8
Lines of this file are not shown. View the raw message.
drivers/net/wireless/intel/iwlwifi/fw/api/commands.h +5 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/intel/iwlwifi/fw/api/scan.h +10 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/intel/iwlwifi/mld/iface.c +69 -32
101 lines not on this page · raw message
drivers/net/wireless/intel/iwlwifi/mld/mac80211.c +19 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/intel/iwlwifi/mld/mld.c +1 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/intel/iwlwifi/mld/mlo.c +2 -2
Lines of this file are not shown. View the raw message.
drivers/net/wireless/intel/iwlwifi/mld/notif.c +5 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/intel/iwlwifi/mld/scan.c +27 -3
Lines of this file are not shown. View the raw message.
drivers/net/wireless/intel/iwlwifi/mld/scan.h +6 -3
Lines of this file are not shown. View the raw message.
drivers/net/wireless/intel/iwlwifi/mvm/d3.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/intel/iwlwifi/mvm/fw.c +2 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/microchip/wilc1000/hif.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/virtual/virt_wifi.c +0 -1
Lines of this file are not shown. View the raw message.
drivers/s390/crypto/zcrypt_msgtype6.c +14 -18
Lines of this file are not shown. View the raw message.
drivers/target/loopback/tcm_loop.c +46 -6
52 lines not on this page · raw message
drivers/usb/core/offload.c +59 -43
102 lines not on this page · raw message
drivers/usb/gadget/function/f_eem.c +31 -28
59 lines not on this page · raw message
drivers/usb/gadget/function/f_rndis.c +31 -20
51 lines not on this page · raw message
drivers/usb/gadget/function/f_subset.c +35 -28
63 lines not on this page · raw message
drivers/usb/gadget/function/f_uac1_legacy.c +37 -10
47 lines not on this page · raw message
drivers/usb/gadget/function/u_gether.h +15 -7
Lines of this file are not shown. View the raw message.
drivers/usb/gadget/udc/dummy_hcd.c +26 -16
42 lines not on this page · raw message
drivers/usb/typec/altmodes/thunderbolt.c +22 -22
44 lines not on this page · raw message
fs/smb/server/smb2pdu.c +89 -32
121 lines not on this page · raw message
fs/smb/server/smbacl.c +43 -0
43 lines not on this page · raw message
fs/xfs/libxfs/xfs_da_btree.c +42 -11
53 lines not on this page · raw message
fs/xfs/xfs_attr_inactive.c +57 -38
95 lines not on this page · raw message
include/net/netfilter/nf_conntrack_expect.h +18 -2
Lines of this file are not shown. View the raw message.
io_uring/io_uring.c +40 -22
62 lines not on this page · raw message
kernel/cgroup/cgroup.c +85 -3
88 lines not on this page · raw message
kernel/kallsyms.c +50 -14
64 lines not on this page · raw message
kernel/sched/ext.c +105 -39
144 lines not on this page · raw message
net/atm/lec.c +47 -25
72 lines not on this page · raw message
net/bluetooth/hci_conn.c +112 -1
113 lines not on this page · raw message
net/bluetooth/hci_event.c +81 -72
153 lines not on this page · raw message
net/bluetooth/hci_sync.c +130 -22
152 lines not on this page · raw message
net/netfilter/nf_conntrack_netlink.c +29 -58
87 lines not on this page · raw message
net/netfilter/nf_flow_table_offload.c +130 -66
196 lines not on this page · raw message
sound/pci/ctxfi/ctdaio.c +53 -33
86 lines not on this page · raw message
tools/testing/selftests/cgroup/lib/cgroup_util.c +15 -0
Lines of this file are not shown. View the raw message.
tools/testing/selftests/cgroup/lib/include/cgroup_util.h +2 -0
Lines of this file are not shown. View the raw message.
tools/testing/selftests/cgroup/test_core.c +2 -1
Lines of this file are not shown. View the raw message.
tools/testing/selftests/cgroup/test_kill.c +4 -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.