Linux 6.1.168
Greg Kroah-Hartman
maintainerI'm announcing the release of the 6.1.168 kernel.
All users of the 6.1 kernel series must upgrade.
The updated 6.1.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-6.1.y
and can be browsed at the normal kernel.org git web browser:
https://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary
thanks,
greg k-h
------------
Documentation/admin-guide/kernel-parameters.txt | 3 Documentation/devicetree/bindings/auxdisplay/holtek,ht16k33.yaml | 2 Documentation/devicetree/bindings/gpio/microchip,mpfs-gpio.yaml | 4 Documentation/hwmon/adm1177.rst | 8 Documentation/hwmon/peci-cputemp.rst | 10 Makefile | 2 arch/arm64/boot/dts/freescale/imx8mn-tqma8mqnl-mba8mx.dts | 13 arch/arm64/boot/dts/freescale/imx8mn-tqma8mqnl.dtsi | 22 arch/arm64/kvm/reset.c | 14 arch/loongarch/pci/pci.c | 80 ++ arch/mips/lib/multi3.c | 6 arch/mips/mm/tlb-r4k.c | 2 arch/powerpc/net/bpf_jit_comp64.c | 23 arch/riscv/kernel/kgdb.c | 7 arch/s390/include/asm/barrier.h | 4 arch/s390/kernel/syscall.c | 2 arch/sh/drivers/platform_early.c | 4 arch/x86/kernel/cpu/common.c | 18 arch/x86/kvm/mmu/mmu.c | 15 arch/x86/platform/efi/quirks.c | 2 block/blk-mq.c | 9 block/blk-sysfs.c | 2 block/bsg-lib.c | 2 crypto/af_alg.c | 4 drivers/acpi/acpica/acevents.h | 4 drivers/acpi/acpica/evregion.c | 6 drivers/acpi/acpica/evxfregn.c | 146 ++++ drivers/acpi/ec.c | 52 + drivers/base/regmap/regmap.c | 30 drivers/bluetooth/btusb.c | 5 drivers/bluetooth/hci_ll.c | 2 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/cpufreq/cpufreq_conservative.c | 12 drivers/cpufreq/cpufreq_governor.c | 13 drivers/cpufreq/cpufreq_governor.h | 1 drivers/dma/idxd/cdev.c | 10 drivers/dma/idxd/device.c | 3 drivers/dma/idxd/sysfs.c | 1 drivers/dma/sh/rz-dmac.c | 66 +- drivers/dma/xilinx/xilinx_dma.c | 66 +- drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c | 4 drivers/gpu/drm/ast/ast_dp501.c | 2 drivers/gpu/drm/drm_ioc32.c | 2 drivers/gpu/drm/i915/display/intel_gmbus.c | 4 drivers/hid/hid-apple.c | 4 drivers/hid/hid-asus.c | 15 drivers/hid/hid-magicmouse.c | 6 drivers/hid/hid-mcp2221.c | 2 drivers/hid/hid-multitouch.c | 7 drivers/hid/wacom_wac.c | 10 drivers/hwmon/adm1177.c | 54 - drivers/hwmon/occ/common.c | 19 drivers/hwmon/peci/cputemp.c | 4 drivers/hwmon/pmbus/isl68137.c | 21 drivers/hwmon/pmbus/pmbus.h | 2 drivers/hwmon/pmbus/pmbus_core.c | 30 drivers/hwmon/pmbus/pxe1610.c | 5 drivers/hwmon/pmbus/tps53679.c | 4 drivers/i2c/busses/Kconfig | 2 drivers/i2c/busses/i2c-tegra.c | 5 drivers/iio/accel/adxl355_core.c | 2 drivers/iio/adc/ti-adc161s626.c | 41 - drivers/iio/dac/ad5770r.c | 2 drivers/iio/gyro/mpu3050-core.c | 32 - drivers/iio/imu/bmi160/bmi160_core.c | 15 drivers/iio/imu/bno055/bno055.c | 2 drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_buffer.c | 4 drivers/iio/light/vcnl4035.c | 18 drivers/infiniband/core/rw.c | 21 drivers/infiniband/hw/irdma/cm.c | 29 drivers/infiniband/hw/irdma/utils.c | 2 drivers/infiniband/hw/irdma/verbs.c | 9 drivers/input/joystick/xpad.c | 2 drivers/input/rmi4/rmi_f54.c | 4 drivers/input/serio/i8042-acpipnpio.h | 7 drivers/irqchip/irq-qcom-mpm.c | 3 drivers/media/mc/mc-request.c | 5 drivers/media/v4l2-core/v4l2-ioctl.c | 5 drivers/mtd/spi-nor/core.c | 145 ++++ drivers/net/can/vxcan.c | 2 drivers/net/ethernet/broadcom/tg3.c | 13 drivers/net/ethernet/cadence/macb_main.c | 17 drivers/net/ethernet/cadence/macb_pci.c | 10 drivers/net/ethernet/faraday/ftgmac100.c | 28 drivers/net/ethernet/freescale/enetc/enetc_ethtool.c | 2 drivers/net/ethernet/freescale/enetc/enetc_pf.c | 2 drivers/net/ethernet/intel/ice/ice_ethtool.c | 14 drivers/net/ethernet/intel/ice/ice_repr.c | 3 drivers/net/ethernet/mellanox/mlx5/core/devlink.c | 4 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/pensando/ionic/ionic_lif.c | 17 drivers/net/ethernet/xilinx/xilinx_axienet.h | 4 drivers/net/geneve.c | 2 drivers/net/phy/phy_device.c | 58 + drivers/net/usb/r8152.c | 1 drivers/net/veth.c | 2 drivers/net/virtio_net.c | 1 drivers/net/vxlan/vxlan_core.c | 10 drivers/net/wireless/intel/iwlwifi/mvm/d3.c | 2 drivers/net/wireless/microchip/wilc1000/hif.c | 2 drivers/net/wireless/virt_wifi.c | 1 drivers/net/wwan/wwan_core.c | 2 drivers/nfc/pn533/uart.c | 3 drivers/nvme/host/apple.c | 1 drivers/nvme/host/core.c | 16 drivers/nvme/host/fabrics.c | 4 drivers/nvme/host/pci.c | 25 drivers/phy/ti/phy-j721e-wiz.c | 2 drivers/pinctrl/mediatek/pinctrl-mtk-common.c | 9 drivers/platform/olpc/olpc-xo175-ec.c | 2 drivers/platform/x86/intel/hid.c | 13 drivers/platform/x86/touchscreen_dmi.c | 18 drivers/scsi/ibmvscsi/ibmvfc.c | 3 drivers/scsi/scsi_sysfs.c | 1 drivers/scsi/scsi_transport_sas.c | 2 drivers/scsi/ses.c | 2 drivers/spi/spi-fsl-lpspi.c | 3 drivers/target/loopback/tcm_loop.c | 52 + drivers/thunderbolt/nhi.c | 2 drivers/ufs/core/ufshcd.c | 2 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/config.c | 6 drivers/usb/core/quirks.c | 8 drivers/usb/dwc2/gadget.c | 2 drivers/usb/gadget/function/f_rndis.c | 9 drivers/usb/gadget/function/f_subset.c | 6 drivers/usb/gadget/function/f_uac1_legacy.c | 47 + drivers/usb/gadget/function/f_uvc.c | 39 + 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/serial/io_edgeport.c | 3 drivers/usb/serial/io_usbvend.h | 1 drivers/usb/serial/option.c | 4 fs/btrfs/block-group.c | 2 fs/btrfs/disk-io.c | 4 fs/btrfs/inode.c | 6 fs/btrfs/ioctl.c | 7 fs/btrfs/tree-checker.c | 17 fs/btrfs/volumes.c | 5 fs/btrfs/zoned.c | 6 fs/erofs/data.c | 2 fs/erofs/zdata.c | 70 +- fs/ext4/crypto.c | 9 fs/ext4/ext4.h | 10 fs/ext4/extents.c | 312 ++++------ fs/ext4/extents_status.c | 12 fs/ext4/extents_status.h | 4 fs/ext4/fast_commit.c | 25 fs/ext4/ialloc.c | 6 fs/ext4/inline.c | 12 fs/ext4/inode.c | 35 - fs/ext4/mballoc.c | 30 fs/ext4/migrate.c | 5 fs/ext4/move_extent.c | 7 fs/ext4/super.c | 164 ++--- fs/ext4/sysfs.c | 10 fs/gfs2/lock_dlm.c | 10 fs/jbd2/checkpoint.c | 15 fs/smb/server/smb2pdu.c | 72 +- fs/xfs/xfs_attr_item.c | 4 fs/xfs/xfs_dquot_item.c | 9 fs/xfs/xfs_inode_item.c | 9 fs/xfs/xfs_mount.c | 7 fs/xfs/xfs_trace.c | 1 fs/xfs/xfs_trace.h | 36 + fs/xfs/xfs_trans_ail.c | 26 include/acpi/acpixf.h | 134 ++-- include/linux/dma-mapping.h | 4 include/linux/netdevice.h | 2 include/linux/netfilter/ipset/ip_set.h | 2 include/linux/rtnetlink.h | 9 include/linux/swapops.h | 20 include/linux/usb/quirks.h | 3 include/linux/usb/r8152.h | 1 include/net/inet_hashtables.h | 14 include/net/netfilter/nf_conntrack_expect.h | 38 - include/net/netlink.h | 21 include/net/rtnetlink.h | 5 include/uapi/linux/dma-buf.h | 1 include/uapi/linux/netfilter/nf_conntrack_common.h | 4 kernel/bpf/btf.c | 24 kernel/bpf/verifier.c | 10 kernel/dma/swiotlb.c | 21 kernel/futex/pi.c | 3 kernel/module/main.c | 7 kernel/sysctl.c | 2 kernel/time/alarmtimer.c | 2 kernel/trace/trace_osnoise.c | 8 lib/nlattr.c | 6 mm/damon/sysfs.c | 3 net/atm/lec.c | 72 +- net/atm/lec.h | 2 net/bluetooth/eir.c | 7 net/bluetooth/eir.h | 2 net/bluetooth/hci_event.c | 33 - net/bluetooth/hci_sync.c | 5 net/bluetooth/l2cap_core.c | 28 net/bluetooth/l2cap_sock.c | 3 net/bluetooth/mgmt.c | 17 net/bluetooth/sco.c | 36 - net/bluetooth/smp.c | 11 net/bridge/br_arp_nd_proxy.c | 18 net/can/af_can.c | 4 net/can/af_can.h | 2 net/can/gw.c | 6 net/can/proc.c | 3 net/core/dev.c | 70 +- net/core/dev.h | 7 net/core/rtnetlink.c | 51 - net/hsr/hsr_device.c | 32 - net/ipv4/esp4.c | 11 net/ipv4/inet_connection_sock.c | 68 -- net/ipv4/inet_hashtables.c | 3 net/ipv4/ip_gre.c | 2 net/ipv4/udp.c | 2 net/ipv6/addrconf.c | 6 net/ipv6/datagram.c | 10 net/ipv6/esp6.c | 11 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/ipv6/netfilter/ip6t_rt.c | 4 net/ipv6/xfrm6_output.c | 4 net/key/af_key.c | 19 net/mptcp/pm_netlink.c | 2 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 | 29 net/netfilter/nf_conntrack_h323_main.c | 12 net/netfilter/nf_conntrack_helper.c | 13 net/netfilter/nf_conntrack_netlink.c | 103 +-- net/netfilter/nf_conntrack_proto_tcp.c | 10 net/netfilter/nf_conntrack_sip.c | 18 net/netfilter/nf_flow_table_offload.c | 196 ++++-- net/netfilter/nf_tables_api.c | 7 net/netfilter/nfnetlink_log.c | 10 net/netfilter/x_tables.c | 23 net/netfilter/xt_cgroup.c | 6 net/netfilter/xt_rateest.c | 5 net/nfc/nci/core.c | 10 net/openvswitch/flow_netlink.c | 2 net/openvswitch/vport-geneve.c | 2 net/openvswitch/vport-gre.c | 2 net/openvswitch/vport-netdev.c | 13 net/openvswitch/vport-vxlan.c | 2 net/packet/af_packet.c | 1 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/smc/smc_rx.c | 9 net/tls/tls_sw.c | 2 net/x25/x25_in.c | 9 net/x25/x25_subr.c | 1 net/xfrm/xfrm_interface_core.c | 2 net/xfrm/xfrm_output.c | 7 net/xfrm/xfrm_policy.c | 2 net/xfrm/xfrm_state.c | 1 sound/pci/ctxfi/ctdaio.c | 1 sound/pci/hda/patch_realtek.c | 2 sound/soc/cirrus/ep93xx-i2s.c | 40 + sound/soc/codecs/adau1372.c | 34 - sound/soc/fsl/fsl_easrc.c | 14 sound/soc/intel/catpt/device.c | 10 sound/soc/intel/catpt/dsp.c | 3 sound/usb/caiaq/device.c | 2 tools/objtool/check.c | 5 tools/testing/selftests/net/mptcp/mptcp_join.sh | 14 286 files changed, 3057 insertions(+), 1431 deletions(-)
Alan Stern (2):
USB: dummy-hcd: Fix locking/synchronization error
USB: dummy-hcd: Fix interrupt synchronization error
Alexander Popov (1):
wifi: virt_wifi: remove SET_NETDEV_DEV to avoid use-after-free
Alexander Sverdlin (1):
ASoC: ep93xx: i2s: move enable call to startup callback
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()
Ali Norouzi (1):
can: gw: fix OOB heap access in cgw_csum_crc8_rel()
Alok Tiwari (1):
platform/olpc: olpc-xo175-ec: Fix overflow error message to print inlen
Anas Iqbal (1):
Bluetooth: hci_ll: Fix firmware leak on error path
Andreas Gruenbacher (1):
gfs2: Fix unlikely race in gdlm_put_lock
Andy Shevchenko (1):
regmap: Synchronize cache for the page selector
Anil Samal (1):
RDMA/irdma: Fix deadlock during netdev reset with active connections
Antoniu Miclaus (1):
iio: dac: ad5770r: fix error return in ad5770r_read_raw()
Baokun Li (1):
ext4: fix iloc.bh leak in ext4_fc_replay_inode() error paths
Bart Van Assche (2):
Input: synaptics-rmi4 - fix a locking bug in an error path
block: Fix the blk_mq_destroy_queue() documentation
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
Boris Burkov (1):
btrfs: set BTRFS_ROOT_ORPHAN_CLEANUP during subvol create
Cen Zhang (1):
Bluetooth: SCO: fix race conditions in sco_sock_connect()
Cezary Rojewski (1):
ASoC: Intel: catpt: Fix the device initialization
Christoffer Sandberg (1):
Input: i8042 - add TUXEDO InfinityBook Max 16 Gen10 AMD to i8042 quirk table
Christoph Hellwig (3):
blk-mq: move the call to blk_put_queue out of blk_mq_destroy_queue
nvme-pci: remove an extra queue reference
nvme-pci: put the admin queue in nvme_dev_remove_admin
Christophe JAILLET (2):
dmaengine: idxd: Remove usage of the deprecated ida_simple_xx() API
netfilter: Reorder fields in 'struct nf_conntrack_expect'
Chuck Lever (2):
tls: Purge async_hold in tls_decrypt_async_wait() RDMA/rw: Fall back to direct SGE on MR pool exhaustion
Claudiu Beznea (2):
dmaengine: sh: rz-dmac: Protect the driver specific lists
dmaengine: sh: rz-dmac: Move CHCTRL updates under spinlock
Daniel Hodges (1):
nvme-fabrics: use kfree_sensitive() for DHCHAP secrets
Danilo Krummrich (1):
sh: platform_early: remove pdev->driver_override check
David Carlier (1):
netfilter: ctnetlink: use netlink policy range checks
David Lechner (4):
iio: imu: bno055: fix BNO055_SCAN_CH_COUNT off by one
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
Davidlohr Bueso (1):
futex: Clear stale exiting pointer in futex_lock_pi() retry path
Deepanshu Kartikey (3):
ext4: convert inline data to extents when truncate exceeds inline size
atm: lec: fix use-after-free in sock_def_readable()
comedi: dt2815: add hardware detection to prevent crash
Denis Arefev (1):
erofs: Fix the slab-out-of-bounds in drop_buffers()
Eddie James (1):
hwmon: (pmbus/core) Add lock and unlock functions
Edward Adam Davis (1):
ext4: avoid infinite loops caused by residual data
Eric Dumazet (5):
af_key: validate families in pfkey_send_migrate()
tcp: optimize inet_use_bhash2_on_bind()
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 (1):
phy: ti: j721e-wiz: Fix device node reference leak in wiz_get_lane_phy_types()
Filipe Manana (2):
btrfs: fix lost error when running device stats on multiple devices fs
btrfs: do not free data reservation in fallback from inline due to -ENOSPC
Florian Westphal (4):
netlink: allow be16 and be32 types in all uint policy checks
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 (1):
iio: imu: st_lsm6dsx: Set FIFO ODR for accelerometer and gyroscope 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
Gao Xiang (2):
erofs: handle overlapped pclusters out of crafted images properly
erofs: fix PSI memstall accounting
Greg Kroah-Hartman (4):
s390/syscalls: Add spectre boundary for syscall dispatch table
scsi: ses: Handle positive SCSI error from ses_recv_diag() drm/ioc32: stop speculation on the drm_compat_ioctl path Linux 6.1.168
Guangshuo Li (2):
usb: ulpi: fix double free in ulpi_register_interface() error path
cpufreq: governor: fix double free in cpufreq_dbs_governor_init() error path
Günther Noack (3):
HID: asus: avoid memory leak in asus_report_fixup()
HID: magicmouse: avoid memory leak in magicmouse_report_fixup()
HID: apple: avoid memory leak in apple_report_fixup()
Hangbin Liu (3):
rtnetlink: pass netlink message header and portid to rtnl_configure_link()
net: add new helper unregister_netdevice_many_notify
rtnetlink: Honour NLM_F_ECHO flag in rtnl_delete_link
Hans de Goede (5):
platform/x86: touchscreen_dmi: Add quirk for y-inverted Goodix touchscreen on SUPI S10
ACPICA: include/acpi/acpixf.h: Fix indentation
ACPICA: Allow address_space_handler Install and _REG execution as 2 separate steps
ACPI: EC: Fix EC address space handler unregistration
ACPI: EC: Fix ECDT probe ordering issues
Hari Bathini (1):
powerpc64/bpf: do not increment tailcall count when prog is NULL
Heitor Alves de Siqueira (1):
usb: usbtmc: Flush anchored URBs in usbtmc_release
Helen Koike (2):
Bluetooth: L2CAP: Fix null-ptr-deref on l2cap_sock_ready_cb
ext4: reject mount if bigalloc with s_first_data_block != 0
Heyne, Maximilian (1):
Revert "nvme: fix admin request_queue lifetime"
Huacai Chen (1):
LoongArch: Workaround LS2K/LS7A GPU DMA hang bug
Hyunwoo Kim (4):
Bluetooth: L2CAP: Validate PDU length before reading SDU length in l2cap_ecred_data_rcv()
Bluetooth: SCO: Fix use-after-free in sco_recv_frame() due to missing sock_hold
Bluetooth: L2CAP: Fix ERTM re-init and zero pdu_len infinite loop
ksmbd: do not expire session on binding failure
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
Ihor Solodrai (1):
module: Fix kernel panic when a symbol st_shndx is out of bounds
Isaac J. Manjarres (1):
dma-buf: Include ioctl.h in UAPI header
Ivan Barrera (1):
RDMA/irdma: Clean up unnecessary dereference of event->cm_node
JP Hein (1):
USB: core: add NO_LPM quirk for Razer Kiyo Pro webcam
Jacob Moroni (1):
RDMA/irdma: Initialize free_qp completion before using it
Jakub Kicinski (1):
nfc: nci: fix circular locking dependency in nci_close_device
Jamie Gibbons (1):
dt-bindings: gpio: fix microchip #interrupt-cells
Jan Kara (1):
ext4: make recently_deleted() properly work with lazy itable initialization
Jason Yan (3):
ext4: factor out ext4_percpu_param_init() and ext4_percpu_param_destroy()
ext4: use ext4_group_desc_free() in ext4_put_super() to save some duplicated code
ext4: factor out ext4_flex_groups_free()
Jassi Brar (1):
irqchip/qcom-mpm: Add missing mailbox TX done acknowledgment
Jiayuan Chen (2):
net: qrtr: replace qrtr_tx_flow radix_tree with xarray to fix memory leak
ext4: fix use-after-free in update_super_work when racing with umount
Jie Deng (1):
usb: core: new quirk to handle devices with zero configurations
Jihed Chaibi (3):
ASoC: adau1372: Fix unchecked clk_prepare_enable() return value
ASoC: adau1372: Fix clock leak on PLL lock failure
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
Jinjiang Tu (1):
mm/huge_memory: fix folio isn't locked in softleaf_to_folio()
Jiucheng Xu (1):
erofs: add GFP_NOIO in the bio completion if needed
Johannes Thumshirn (1):
btrfs: don't take device_list_mutex when querying zone info
Josef Bacik (1):
scsi: target: tcm_loop: Drain commands in target_reset handler
Josh Law (1):
mm/damon/sysfs: check contexts->nr before accessing contexts_arr[0]
Josh Poimboeuf (2):
objtool: Fix Clang jump table detection
iio: imu: bmi160: Remove potential undefined behavior in bmi160_config_pin()
Julius Lehmann (1):
HID: magicmouse: fix battery reporting for Apple Magic Trackpad 2
Juno Choi (1):
usb: dwc2: gadget: Fix spin_lock/unlock mismatch in dwc2_hsotg_udc_stop()
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
Keith Busch (3):
nvme-pci: cap queue creation to used queues
nvme-pci: ensure we're polling a polled queue
nvme: fix admin request_queue lifetime
Kevin Hao (2):
net: macb: Use dev_consume_skb_any() to free TX SKBs
net: macb: Move devm_{free,request}_irq() out of spin lock area
Konrad Dybcio (1):
thunderbolt: Fix property read in nhi_wake_supported()
Kuen-Han Tsai (2):
usb: gadget: f_subset: Fix unbalanced refcnt in geth_free
usb: gadget: f_rndis: Protect RNDIS options with mutex
Kumar Kartikeya Dwivedi (1):
bpf: Release module BTF IDR before module unload
Kuniyuki Iwashima (3):
tcp: Use bhash2 for v4-mapped-v6 non-wildcard address.
tcp: Rearrange tests in inet_csk_bind_conflict().
tcp: Fix bind() regression for v6-only wildcard and v4-mapped-v6 non-wildcard addresses.
Lee Jones (1):
HID: multitouch: Check to ensure report responses match the request
Leif Skunberg (1):
platform/x86: intel-hid: Enable 5-button array on ThinkPad X1 Fold 16 Gen 1
Li Chen (1):
ext4: publish jinode after initialization
Li Xiasong (1):
MPTCP: fix lock class name family in pm_nl_create_listen_socket
Liao Chang (1):
cpufreq: governor: Free dbs_data directly when gov->init() fails
Liucheng Lu (1):
ALSA: hda/realtek: add HP Laptop 14s-dr5xxx mute LED quirk
Long Li (1):
xfs: fix ri_total validation in xlog_recover_attri_commit_pass2
Luca Leonardo Scorcia (1):
pinctrl: mediatek: common: Fix probe failure for devices without EINT
Luiz Augusto von Dentz (1):
Bluetooth: eir: Fix possible crashes on eir_create_adv_data
Luka Gejak (1):
net: hsr: fix VLAN add unwind on slave errors
Luo Haiyang (1):
tracing: Fix potential deadlock in cpu hotplug with osnoise
Maciej W. Rozycki (1):
MIPS: Fix the GCC version check for `__multi3' workaround
Marc Buerg (1):
sysctl: fix uninitialized variable in proc_do_large_bitmap
Marc Kleine-Budde (1):
spi: spi-fsl-lpspi: fix teardown order issue (UAF)
Marc Zyngier (1):
KVM: arm64: Discard PC update state on vcpu reset
Marek Vasut (3):
dmaengine: xilinx: xilinx_dma: Fix dma_device directions
dmaengine: xilinx: xilinx_dma: Fix residue calculation for cyclic DMA
dmaengine: xilinx: xilinx_dma: Fix unmasked residue subtraction
Mark Brown (2):
ASoC: fsl_easrc: Fix event generation in fsl_easrc_iec958_set_reg()
ASoC: fsl_easrc: Fix event generation in fsl_easrc_iec958_put_bits()
Mark Harmstone (1):
btrfs: fix super block offset in error message in btrfs_validate_super()
Markus Niebel (1):
arm64: dts: imx8mn-tqma8mqnl: fix LDO5 power off
Martin KaFai Lau (1):
udp: Fix wildcard bind conflict check when using hash2
Martin Schiller (2):
net/x25: Fix potential double free of skb net/x25: Fix overflow when accumulating packets
Matthieu Baerts (NGI0) (2):
selftests: mptcp: join: implicit: stop transfer after last check
selftests: mptcp: join: check removing signal+subflow endp
Miao Li (1):
usb: quirks: add DELAY_INIT quirk for another Silicon Motion flash drive
Miguel Ojeda (1):
dma-mapping: add missing inline for dma_free_attrs
Mike Rapoport (Microsoft) (1):
x86/efi: efi_unmap_boot_services: fix calculation of ranges_to_free size
Mikko Perttunen (1):
i2c: tegra: Don't mark devices with pins as IRQ safe
Milos Nikic (1):
jbd2: gracefully abort on checkpointing state corruptions
Ming Lei (1):
nvme: fix admin queue leak on controller reset
Mohammad Heib (1):
ionic: fix persistent MAC address override on PF
Namjae Jeon (2):
ksmbd: replace hardcoded hdr2_len with offsetof() in smb2_calc_max_out_buf_len()
ksmbd: fix potencial OOB in get_file_all_info() for compound requests
Nathan Chancellor (1):
ext4: fix unused iterator variable warnings
Nikunj A Dadhania (1):
x86/cpu: Enable FSGSBASE early in cpu_init_exception_handling()
Norbert Szetei (1):
crypto: af-alg - fix NULL pointer dereference in scatterwalk
Oleh Konko (2):
Bluetooth: SMP: derive legacy responder STK authentication from MITM state
Bluetooth: SMP: force responder MITM requirements before building the pairing response
Oliver Hartkopp (1):
can: statistics: add missing atomic access in hot path
Oliver Neukum (1):
cdc-acm: new quirk for EPSON HMD
Pablo Neira Ayuso (8):
netfilter: nf_conntrack_expect: skip expectations in other netns via proc
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
Paolo Abeni (1):
ipv6: prevent possible UaF in addrconf_permanent_addr()
Paolo Valerio (1):
net: macb: use the current queue number for stats
Paul SAGE (1):
tg3: replace placeholder MAC address with device property
Paul Walmsley (1):
riscv: kgdb: fix several debug register assignment bugs
Pauli Virtanen (1):
Bluetooth: hci_event: fix potential UAF in hci_le_remote_conn_param_req_evt
Pengpeng Hou (3):
Bluetooth: btusb: clamp SCO altsetting table indices net/ipv6: ioam6: prevent schema length wraparound in trace fill
NFC: pn533: bound the UART receive buffer
Peter Metz (1):
platform/x86: intel-hid: Add Dell 14 Plus 2-in-1 to dmi_vgbs_allow_list
Petr Oros (1):
ice: use ice_update_eth_stats() for representor stats
Pratyush Yadav (2):
mtd: spi-nor: core: avoid odd length/address reads on 8D-8D-8D mode
mtd: spi-nor: core: avoid odd length/address writes in 8D-8D-8D mode
Qi Tang (4):
net/smc: fix double-free of smc_spd_priv when tee() duplicates splice pipe buffer
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
Qu Wenruo (1):
btrfs: fix the qgroup data free range for inline data extents
Radhey Shyam Pandey (1):
dmaengine: xilinx_dma: Program interrupt delay timeout
Rafael J. Wysocki (2):
ACPI: EC: Install address space handler at the namespace root
ACPI: EC: Evaluate orphan _REG under EC device
Ren Wei (1):
netfilter: ip6t_rt: reject oversized addrnr in rt_mt6_check()
Romain Sioen (1):
HID: mcp2221: cancel last I2C command on read error
Russell King (Oracle) (1):
net: phy: fix phy_uses_state_machine()
Sabrina Dubroca (3):
xfrm: call xdo_dev_state_delete during state update
esp: fix skb leak with espintcp and async crypto
rtnetlink: count IFLA_INFO_SLAVE_KIND in if_nlmsg_size
Saeed Mahameed (1):
net/mlx5: Avoid "No data available" when FW version queries fail
Samasth Norway Ananda (1):
drm/i915/gmbus: fix spurious timeout on 512-byte burst reads
Sanman Pradhan (8):
hwmon: (adm1177) fix sysfs ABI violation and current unit conversion
hwmon: (peci/cputemp) Fix crit_hyst returning delta instead of absolute temperature
hwmon: (peci/cputemp) Fix off-by-one in cputemp_is_visible()
hwmon: (pxe1610) Check return value of page-select write in probe
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()
hwmon: (pmbus/isl68137) Add mutex protection for AVS enable sysfs attributes
Sasha Levin (10):
Revert "ext4: avoid infinite loops caused by residual data" Revert "ext4: drop extent cache when splitting extent fails" Revert "ext4: drop extent cache after doing PARTIAL_VALID1 zeroout" Revert "ext4: don't zero the entire extent if EXT4_EXT_DATA_PARTIAL_VALID1" Revert "ext4: subdivide EXT4_EXT_DATA_VALID1"
Revert "ext4: get rid of ppath in ext4_split_extent_at()" Revert "ext4: get rid of ppath in ext4_ext_insert_extent()" Revert "ext4: get rid of ppath in ext4_ext_create_new_leaf()" Revert "ext4: get rid of ppath in ext4_find_extent()"
Revert "ext4: make ext4_es_remove_extent() return void"
Sean Christopherson (1):
KVM: x86/mmu: Drop/zap existing present SPTE even when creating an MMIO SPTE
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
Shigeru Yoshida (1):
dma: swiotlb: add KMSAN annotations to swiotlb_bounce()
Shin'ichiro Kawasaki (1):
btrfs: fix leak of kobject name for sub-group space_info
Simon Weber (1):
ext4: fix journal credit check when setting fscrypt context
Srinivasan Shanmugam (1):
drm/amdgpu: Fix fence put before wait in amdgpu_amdkfd_submit_ib
Stefan Wiehler (1):
mips: mm: Allocate tlb_vpn array atomically
Steffen Klassert (1):
xfrm: Fix the usage of skb->sk
Suraj Gupta (1):
net: xilinx: axienet: Correct BD length masks to match AXIDMA IP spec
Taegu Ha (1):
usb: gadget: f_uac1_legacy: validate control request size
Takashi Iwai (1):
ALSA: ctxfi: Fix missing SPDIFI1 index handling
Tatyana Nikolova (4):
RDMA/irdma: Update ibqp state to error if QP is already in error state RDMA/irdma: Remove a NOP wait_event() in irdma_modify_qp_roce() RDMA/irdma: Remove reset check from irdma_modify_qp_to_err() RDMA/irdma: Return EINVAL for invalid arp index error
Theodore Ts'o (3):
ext4: always drain queued discard work in ext4_mb_release()
ext4: handle wraparound when searching for blocks for indirect mapped blocks
ext4: fix lost error code reporting in __ext4_fill_super()
Thomas Bogendoerfer (1):
tg3: Fix race for querying speed/duplex
Thomas Zimmermann (1):
drm/ast: dp501: Fix initialization of SCU2C
Toke Høiland-Jørgensen (1):
net: openvswitch: Avoid releasing netdev before teardown completes
Tomi Valkeinen (1):
dmaengine: xilinx_dma: Fix reset related timeout with two-channel AXIDMA
Tyllis Xu (1):
scsi: ibmvfc: Fix OOB access in ibmvfc_discover_targets_done()
Uzair Mughal (1):
ALSA: hda/realtek: Add headset jack quirk for Thinkpad X390
Valek Andrej (1):
iio: accel: fix ADXL355 temperature signature value
Valentin Spreckels (1):
net: usb: r8152: add TRENDnet TUC-ET2G
Vasily Gorbik (1):
s390/barrier: Make array_index_mask_nospec() __always_inline
Vinicius Costa Gomes (3):
dmaengine: idxd: Fix not releasing workqueue on .release()
dmaengine: idxd: Fix memory leak when a wq is reset
dmaengine: idxd: Fix freeing the allocated ida too late
Viresh Kumar (1):
cpufreq: conservative: Reset requested_freq on limits change
Vladimir Oltean (3):
net: enetc: fix PF !of_device_is_available() teardown path
net: phy: move phy_link_change() prior to mdio_bus_phy_may_suspend()
net: phy: allow MDIO bus PM ops to start/stop state machine for phylink-controlled PHY
Wanquan Zhong (1):
USB: serial: option: add support for Rolling Wireless RW135R-GL
Wei Fang (1):
net: enetc: fix the output issue of 'ethtool --show-ring'
Weiming Shi (4):
netfilter: nfnetlink_log: fix uninitialized padding leak in NFULA_PAYLOAD
netfilter: nf_conntrack_sip: fix use of uninitialized rtp_addr in process_sdp
ACPI: EC: clean up handlers on probe failure in acpi_ec_setup()
rds: ib: reject FRMR registration before IB connection is established
Werner Kasselman (1):
ksmbd: fix memory leaks and NULL deref in smb2_lock()
Willem de Bruijn (1):
net: correctly handle tunneled traffic on IPV6_CSUM GSO fallback
Xiang Mei (3):
net/sched: sch_hfsc: fix divide-by-zero in rtsc_min() net/sched: cls_fw: fix NULL pointer dereference on shared blocks net/sched: cls_flow: fix NULL pointer dereference on shared blocks
Yang Yang (5):
openvswitch: defer tunnel netdev_put to RCU release
openvswitch: validate MPLS set/set_masked payload length
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
Ye Bin (1):
ext4: avoid allocate block from corrupted group in ext4_mb_find_by_goal()
Yifan Wu (1):
netfilter: ipset: drop logically empty buckets in mtype_del
Yihang Li (1):
scsi: scsi_transport_sas: Fix the maximum channel scanning issue
Yochai Eisenrich (3):
net: fix fanout UAF in packet_release() via NETDEV_UP race
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
Yuchan Nam (1):
media: mc, v4l2: serialize REINIT and REQBUFS with req_queue_mutex
Yufan Chen (1):
net: ftgmac100: fix ring allocation unwind on open failure
Yuto Ohnuki (3):
xfs: stop reclaim before pushing AIL during unmount
xfs: avoid dereferencing log items after push callbacks
xfs: save ailp before dropping the AIL lock in push callbacks
Zhan Xusheng (1):
alarmtimer: Fix argument order in alarm_timer_forward()
Zhang Chen (1):
Bluetooth: L2CAP: Fix send LE flow credits in ACL link
Zheng Qixing (1):
block: fix resource leak in blk_register_queue() error path
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
Zoltan Illes (1):
Input: xpad - add support for Razer Wolverine V3 Pro
Zqiang (1):
ext4: fix the might_sleep() warnings in kvfree()
xietangxin (1):
virtio_net: Fix UAF on dst_ops when IFF_XMIT_DST_RELEASE is cleared and napi_tx is false
Greg Kroah-Hartman
maintainerDocumentation/admin-guide/kernel-parameters.txt +3 -0
@@ -6643,6 +6643,9 @@ p = USB_QUIRK_SHORT_SET_ADDRESS_REQ_TIMEOUT (Reduce timeout of the SET_ADDRESS request from 5000 ms to 500 ms); + q = USB_QUIRK_FORCE_ONE_CONFIG (Device + claims zero configurations, + forcing to 1); Example: quirks=0781:5580:bk,0a5c:5834:gij usbhid.mousepoll=
Documentation/devicetree/bindings/auxdisplay/holtek,ht16k33.yaml +1 -1
@@ -65,7 +65,7 @@ then: required: - refresh-rate-hz -additionalProperties: false +unevaluatedProperties: false examples: - |
Documentation/devicetree/bindings/gpio/microchip,mpfs-gpio.yaml +2 -2
@@ -33,7 +33,7 @@ properties: const: 2 "#interrupt-cells": - const: 1 + const: 2 ngpios: description:
@@ -84,7 +84,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>,
Documentation/hwmon/adm1177.rst +4 -4
@@ -27,10 +27,10 @@ for details. Sysfs entries ------------- -The following attributes are supported. Current maxim attribute +The following attributes are supported. Current maximum attribute is read-write, all other attributes are read-only. -in0_input Measured voltage in microvolts. +in0_input Measured voltage in millivolts. -curr1_input Measured current in microamperes. -curr1_max_alarm Overcurrent alarm in microamperes. +curr1_input Measured current in milliamperes. +curr1_max Overcurrent shutdown threshold in milliamperes.
Documentation/hwmon/peci-cputemp.rst +6 -4
@@ -51,8 +51,9 @@ temp1_max Provides thermal control temperature of the CPU package temp1_crit Provides shutdown temperature of the CPU package which is also known as the maximum processor junction temperature, Tjmax or Tprochot. -temp1_crit_hyst Provides the hysteresis value from Tcontrol to Tjmax of - the CPU package. +temp1_crit_hyst Provides the hysteresis temperature of the CPU + package. Returns Tcontrol, the temperature at which + the critical condition clears. temp2_label "DTS" temp2_input Provides current temperature of the CPU package scaled
@@ -62,8 +63,9 @@ temp2_max Provides thermal control temperature of the CPU package temp2_crit Provides shutdown temperature of the CPU package which is also known as the maximum processor junction temperature, Tjmax or Tprochot. -temp2_crit_hyst Provides the hysteresis value from Tcontrol to Tjmax of - the CPU package. +temp2_crit_hyst Provides the hysteresis temperature of the CPU + package. Returns Tcontrol, the temperature at which + the critical condition clears. temp3_label "Tcontrol" temp3_input Provides current Tcontrol temperature of the CPU
Makefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 6 PATCHLEVEL = 1 -SUBLEVEL = 167 +SUBLEVEL = 168 EXTRAVERSION = NAME = Curry Ramen
arch/arm64/boot/dts/freescale/imx8mn-tqma8mqnl-mba8mx.dts +7 -6
@@ -63,6 +63,10 @@ expander2: gpio@27 { }; }; +®_usdhc2_vqmmc { + status = "okay"; +}; + &sai3 { assigned-clocks = <&clk IMX8MN_CLK_SAI3>; assigned-clock-parents = <&clk IMX8MN_AUDIO_PLL1_OUT>;
@@ -207,8 +211,7 @@ pinctrl_usdhc2: usdhc2grp { <MX8MN_IOMUXC_SD2_DATA0_USDHC2_DATA0 0x1d4>, <MX8MN_IOMUXC_SD2_DATA1_USDHC2_DATA1 0x1d4>, <MX8MN_IOMUXC_SD2_DATA2_USDHC2_DATA2 0x1d4>, - <MX8MN_IOMUXC_SD2_DATA3_USDHC2_DATA3 0x1d4>, - <MX8MN_IOMUXC_GPIO1_IO04_USDHC2_VSELECT 0x84>; + <MX8MN_IOMUXC_SD2_DATA3_USDHC2_DATA3 0x1d4>; }; pinctrl_usdhc2_100mhz: usdhc2-100mhzgrp {
@@ -217,8 +220,7 @@ pinctrl_usdhc2_100mhz: usdhc2-100mhzgrp { <MX8MN_IOMUXC_SD2_DATA0_USDHC2_DATA0 0x1d4>, <MX8MN_IOMUXC_SD2_DATA1_USDHC2_DATA1 0x1d4>, <MX8MN_IOMUXC_SD2_DATA2_USDHC2_DATA2 0x1d4>, - <MX8MN_IOMUXC_SD2_DATA3_USDHC2_DATA3 0x1d4>, - <MX8MN_IOMUXC_GPIO1_IO04_USDHC2_VSELECT 0x84>; + <MX8MN_IOMUXC_SD2_DATA3_USDHC2_DATA3 0x1d4>; }; pinctrl_usdhc2_200mhz: usdhc2-200mhzgrp {
@@ -227,8 +229,7 @@ pinctrl_usdhc2_200mhz: usdhc2-200mhzgrp { <MX8MN_IOMUXC_SD2_DATA0_USDHC2_DATA0 0x1d4>, <MX8MN_IOMUXC_SD2_DATA1_USDHC2_DATA1 0x1d4>, <MX8MN_IOMUXC_SD2_DATA2_USDHC2_DATA2 0x1d4>, - <MX8MN_IOMUXC_SD2_DATA3_USDHC2_DATA3 0x1d4>, - <MX8MN_IOMUXC_GPIO1_IO04_USDHC2_VSELECT 0x84>; + <MX8MN_IOMUXC_SD2_DATA3_USDHC2_DATA3 0x1d4>; }; pinctrl_usdhc2_gpio: usdhc2-gpiogrp {
arch/arm64/boot/dts/freescale/imx8mn-tqma8mqnl.dtsi +22 -0
@@ -30,6 +30,20 @@ reg_vcc3v3: regulator-vcc3v3 { regulator-max-microvolt = <3300000>; }; + reg_usdhc2_vqmmc: regulator-usdhc2-vqmmc { + compatible = "regulator-gpio"; + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_reg_usdhc2_vqmmc>; + regulator-name = "V_SD2"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <3300000>; + gpios = <&gpio1 4 GPIO_ACTIVE_HIGH>; + states = <1800000 0x1>, + <3300000 0x0>; + vin-supply = <&ldo5_reg>; + status = "disabled"; + }; + reserved-memory { #address-cells = <2>; #size-cells = <2>;
@@ -217,6 +231,10 @@ eeprom0: eeprom@57 { }; }; +&usdhc2 { + vqmmc-supply = <®_usdhc2_vqmmc>; +}; + &usdhc3 { pinctrl-names = "default", "state_100mhz", "state_200mhz"; pinctrl-0 = <&pinctrl_usdhc3>;
@@ -271,6 +289,10 @@ pinctrl_reg_usdhc2_vmmc: regusdhc2vmmcgrp { fsl,pins = <MX8MN_IOMUXC_SD2_RESET_B_GPIO2_IO19 0x84>; }; + pinctrl_reg_usdhc2_vqmmc: regusdhc2vqmmcgrp { + fsl,pins = <MX8MN_IOMUXC_GPIO1_IO04_GPIO1_IO4 0xc0>; + }; + pinctrl_usdhc3: usdhc3grp { fsl,pins = <MX8MN_IOMUXC_NAND_WE_B_USDHC3_CLK 0x1d4>, <MX8MN_IOMUXC_NAND_WP_B_USDHC3_CMD 0x1d2>,
arch/arm64/kvm/reset.c +14 -0
@@ -339,6 +339,20 @@ int kvm_reset_vcpu(struct kvm_vcpu *vcpu)kvm_vcpu_set_be (vcpu); *vcpu_pc (vcpu) = target_pc; + +/* +* We may come from a state where either a PC update was +* pending (SMC call resulting in PC being increpented to +* skip the SMC) or a pending exception. Make sure we get +* rid of all that, as this cannot be valid out of reset. +* +* Note that clearing the exception mask also clears PC +* updates, but that's an implementation detail, and we +* really want to make it explicit. +*/ +vcpu_clear_flag (vcpu,PENDING_EXCEPTION ); +vcpu_clear_flag (vcpu,EXCEPT_MASK ); +vcpu_clear_flag (vcpu,INCREMENT_PC );vcpu_set_reg (vcpu,0 , reset_state.r0); }
arch/loongarch/pci/pci.c +80 -0
98 lines not on this page · raw message
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/tlb-r4k.c +1 -1
@@ -528,7 +528,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/powerpc/net/bpf_jit_comp64.c +14 -9
@@ -288,27 +288,32 @@ static int bpf_jit_emit_tail_call(u32 *image, struct codegen_context *ctx, u32 o/* * tail_call_cnt++; +* Writeback this updated value only if tailcall succeeds. */ EMIT (PPC_RAW_ADDI (bpf_to_ppc (TMP_REG_1 ),bpf_to_ppc (TMP_REG_1 ),1 )); -EMIT (PPC_RAW_STD (bpf_to_ppc (TMP_REG_1 ), _R1,bpf_jit_stack_tailcallcnt (ctx)));/* prog = array->ptrs[index]; */ -EMIT (PPC_RAW_MULI (bpf_to_ppc (TMP_REG_1 ), b2p_index,8 )); -EMIT (PPC_RAW_ADD (bpf_to_ppc (TMP_REG_1 ),bpf_to_ppc (TMP_REG_1 ), b2p_bpf_array)); -EMIT (PPC_RAW_LD (bpf_to_ppc (TMP_REG_1 ),bpf_to_ppc (TMP_REG_1 ), offsetof(struct bpf_array , ptrs))); +EMIT (PPC_RAW_MULI (bpf_to_ppc (TMP_REG_2 ), b2p_index,8 )); +EMIT (PPC_RAW_ADD (bpf_to_ppc (TMP_REG_2 ),bpf_to_ppc (TMP_REG_2 ), b2p_bpf_array)); +EMIT (PPC_RAW_LD (bpf_to_ppc (TMP_REG_2 ),bpf_to_ppc (TMP_REG_2 ), + offsetof(struct bpf_array , ptrs)));/* * if (prog == NULL) * goto out; */ -EMIT (PPC_RAW_CMPLDI (bpf_to_ppc (TMP_REG_1 ),0 )); +EMIT (PPC_RAW_CMPLDI (bpf_to_ppc (TMP_REG_2 ),0 ));PPC_BCC_SHORT (COND_EQ , out);/* goto *(prog->bpf_func + prologue_size); */ -EMIT (PPC_RAW_LD (bpf_to_ppc (TMP_REG_1 ),bpf_to_ppc (TMP_REG_1 ), offsetof(struct bpf_prog , bpf_func))); -EMIT (PPC_RAW_ADDI (bpf_to_ppc (TMP_REG_1 ),bpf_to_ppc (TMP_REG_1 ), -FUNCTION_DESCR_SIZE + bpf_tailcall_prologue_size)); -EMIT (PPC_RAW_MTCTR (bpf_to_ppc (TMP_REG_1 ))); +EMIT (PPC_RAW_LD (bpf_to_ppc (TMP_REG_2 ),bpf_to_ppc (TMP_REG_2 ), + offsetof(struct bpf_prog , bpf_func))); +EMIT (PPC_RAW_ADDI (bpf_to_ppc (TMP_REG_2 ),bpf_to_ppc (TMP_REG_2 ), +FUNCTION_DESCR_SIZE + bpf_tailcall_prologue_size)); +EMIT (PPC_RAW_MTCTR (bpf_to_ppc (TMP_REG_2 ))); + +/* Writeback updated tailcall count */ +EMIT (PPC_RAW_STD (bpf_to_ppc (TMP_REG_1 ), _R1,bpf_jit_stack_tailcallcnt (ctx)));/* tear down stack, restore NVRs, ... */ bpf_jit_emit_common_epilogue (image, ctx);
arch/riscv/kernel/kgdb.c +4 -3
@@ -194,7 +194,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)},
@@ -263,8 +263,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/s390/include/asm/barrier.h +2 -2
@@ -60,8 +60,8 @@ do { \* @size: number of elements in array */ #define array_index_mask_nospec array_index_mask_nospec -static inline unsigned long array_index_mask_nospec (unsigned long index, -unsigned long size) +static __always_inline unsigned long array_index_mask_nospec (unsigned long index, +unsigned long size) {unsigned long mask;
arch/s390/kernel/syscall.c +2 -0
@@ -13,6 +13,7 @@*/ #include <linux/errno.h> +#include <linux/nospec.h> #include <linux/sched.h> #include <linux/mm.h> #include <linux/fs.h>
@@ -141,6 +142,7 @@ static void do_syscall(struct pt_regs *regs)if (likely (nr >= NR_syscalls)) goto out;do { + nr =array_index_nospec (nr, NR_syscalls); regs->gprs[2 ] = current->thread.sys_call_table[nr](regs); }while (test_and_clear_pt_regs_flag (regs,PIF_EXECVE_PGSTE_RESTART )); out:
arch/sh/drivers/platform_early.c +0 -4
@@ -26,10 +26,6 @@ static int platform_match(struct device *dev, struct device_driver *drv)struct platform_device *pdev =to_platform_device (dev);struct platform_driver *pdrv =to_platform_driver (drv); -/* When driver_override is set, only bind to the matching driver */ -if (pdev->driver_override) -return !strcmp (pdev->driver_override, drv->name); -/* Then try to match against the id table */ if (pdrv->id_table)return platform_match_id (pdrv->id_table, pdev) !=NULL ;
arch/x86/kernel/cpu/common.c +12 -6
@@ -1992,12 +1992,6 @@ static void identify_cpu(struct cpuinfo_x86 *c)setup_smap (c);setup_umip (c); -/* Enable FSGSBASE instructions if available. */ -if (cpu_has (c,X86_FEATURE_FSGSBASE )) { -cr4_set_bits (X86_CR4_FSGSBASE ); - elf_hwcap2 |=HWCAP2_FSGSBASE ; - } -/* * The vendor-specific functions might have changed features. * Now we do "generic changes."
@@ -2384,6 +2378,18 @@ void cpu_init_exception_handling(void)/* GHCB needs to be setup to handle #VC. */ setup_ghcb (); +/* +* On CPUs with FSGSBASE support, paranoid_entry() uses +* ALTERNATIVE-patched RDGSBASE/WRGSBASE instructions. Secondary CPUs +* boot after alternatives are patched globally, so early exceptions +* execute patched code that depends on FSGSBASE. Enable the feature +* before any exceptions occur. +*/ +if (cpu_feature_enabled (X86_FEATURE_FSGSBASE )) { +cr4_set_bits (X86_CR4_FSGSBASE ); + elf_hwcap2 |=HWCAP2_FSGSBASE ; + } +/* Finally load the IDT */ load_current_idt (); }
arch/x86/kvm/mmu/mmu.c +9 -6
@@ -2814,12 +2814,6 @@ static int mmu_set_spte(struct kvm_vcpu *vcpu, struct kvm_memory_slot *slot,pgprintk ("%s: spte %llx write_fault %d gfn %llx\n" , __func__, *sptep, write_fault, gfn); -if (unlikely (is_noslot_pfn (pfn))) { - vcpu->stat.pf_mmio_spte_created++; -mark_mmio_spte (vcpu, sptep, gfn, pte_access); -return RET_PF_EMULATE ; - } -if (is_shadow_present_pte (*sptep)) {/* * If we overwrite a PTE page pointer with a 2MB PMD, unlink
@@ -2841,6 +2835,15 @@ static int mmu_set_spte(struct kvm_vcpu *vcpu, struct kvm_memory_slot *slot, was_rmapped =1 ; } +if (unlikely (is_noslot_pfn (pfn))) { + vcpu->stat.pf_mmio_spte_created++; +mark_mmio_spte (vcpu, sptep, gfn, pte_access); +if (flush) +kvm_flush_remote_tlbs_with_address (vcpu->kvm, gfn, +KVM_PAGES_PER_HPAGE (level)); +return RET_PF_EMULATE ; + } + wrprot =make_spte (vcpu, sp, slot, pte_access, gfn, pfn, *sptep, prefetch, true, host_writable, &spte);
arch/x86/platform/efi/quirks.c +1 -1
@@ -416,7 +416,7 @@ void __init efi_unmap_boot_services(void)if (efi_enabled (EFI_DBG ))return ; - sz =sizeof (*ranges_to_free) * efi.memmap.nr_map +1 ; + sz =sizeof (*ranges_to_free) * (efi.memmap.nr_map +1 ); ranges_to_free =kzalloc (sz,GFP_KERNEL );if (!ranges_to_free) {pr_err ("Failed to allocate storage for freeable EFI regions\n" );
block/blk-mq.c +4 -5
@@ -4175,8 +4175,9 @@ EXPORT_SYMBOL(blk_mq_init_queue);* blk_mq_destroy_queue - shutdown a request queue * @q: request queue to shutdown * -* This shuts down a request queue allocated by blk_mq_init_queue() and drops -* the initial reference. All future requests will failed with -ENODEV. +* This shuts down a request queue allocated by blk_mq_init_queue(). All future +* requests will be failed with -ENODEV. The caller is responsible for dropping +* the reference from blk_mq_init_queue() by calling blk_put_queue(). * * Context: can sleep */
@@ -4194,9 +4195,6 @@ void blk_mq_destroy_queue(struct request_queue *q)blk_sync_queue (q);blk_mq_cancel_work_sync (q);blk_mq_exit_queue (q); - -/* @q is and will stay empty, shutdown and put */ -blk_put_queue (q); }EXPORT_SYMBOL (blk_mq_destroy_queue);
@@ -4213,6 +4211,7 @@ struct gendisk *__blk_mq_alloc_disk(struct blk_mq_tag_set *set, void *queuedata, disk =__alloc_disk_node (q, set->numa_node, lkclass);if (!disk) {blk_mq_destroy_queue (q); +blk_put_queue (q);return ERR_PTR (-ENOMEM ); }set_bit (GD_OWNS_QUEUE , &disk->state);
block/blk-sysfs.c +2 -0
@@ -867,6 +867,8 @@ int blk_register_queue(struct gendisk *disk)elv_unregister_queue (q);disk_unregister_independent_access_ranges (disk);mutex_unlock (&q->sysfs_lock); +if (queue_is_mq (q)) +blk_mq_sysfs_unregister (disk);mutex_unlock (&q->sysfs_dir_lock);kobject_del (&q->kobj);
block/bsg-lib.c +2 -0
@@ -325,6 +325,7 @@ void bsg_remove_queue(struct request_queue *q)bsg_unregister_queue (bset->bd);blk_mq_destroy_queue (q); +blk_put_queue (q);blk_mq_free_tag_set (&bset->tag_set);kfree (bset); }
@@ -400,6 +401,7 @@ struct request_queue *bsg_setup_queue(struct device *dev, const char *name,return q; out_cleanup_queue:blk_mq_destroy_queue (q); +blk_put_queue (q); out_queue:blk_mq_free_tag_set (set); out_tag_set:
crypto/af_alg.c +3 -1
@@ -512,8 +512,10 @@ static int af_alg_alloc_tsgl(struct sock *sk)sg_init_table (sgl->sg,MAX_SGL_ENTS +1 ); sgl->cur =0 ; -if (sg) +if (sg) { +sg_unmark_end (sg +MAX_SGL_ENTS -1 );sg_chain (sg,MAX_SGL_ENTS +1 , sgl->sg); + }list_add_tail (&sgl->list, &ctx->tsgl_list); }
drivers/acpi/acpica/acevents.h +4 -0
@@ -191,6 +191,10 @@ void acpi_ev_execute_reg_methods(struct acpi_namespace_node *node, acpi_adr_space_type space_id, u32 function); +void +acpi_ev_execute_orphan_reg_method (struct acpi_namespace_node *node, +acpi_adr_space_type space_id); +acpi_status acpi_ev_execute_reg_method (union acpi_operand_object *region_obj,u32 function);
drivers/acpi/acpica/evregion.c +1 -5
@@ -20,10 +20,6 @@ extern u8 acpi_gbl_default_address_spaces[];/* Local prototypes */ -static void -acpi_ev_execute_orphan_reg_method (struct acpi_namespace_node *device_node, -acpi_adr_space_type space_id); -static acpi_status acpi_ev_reg_run (acpi_handle obj_handle,u32 level,void *context,void **return_value);
@@ -811,7 +807,7 @@ acpi_ev_reg_run(acpi_handle obj_handle,* ******************************************************************************/ -static void +void acpi_ev_execute_orphan_reg_method (struct acpi_namespace_node *device_node,acpi_adr_space_type space_id) {
drivers/acpi/acpica/evxfregn.c +139 -7
182 lines not on this page · raw message
drivers/acpi/ec.c +37 -15
121 lines not on this page · raw message
drivers/base/regmap/regmap.c +26 -4
@@ -1634,6 +1634,7 @@ static int _regmap_select_page(struct regmap *map, unsigned int *reg, unsigned int val_num) {void *orig_work_buf; +unsigned int selector_reg;unsigned int win_offset;unsigned int win_page;bool page_chg;
@@ -1652,10 +1653,31 @@ static int _regmap_select_page(struct regmap *map, unsigned int *reg,return -EINVAL ; } -/* It is possible to have selector register inside data window. -In that case, selector register is located on every page and -it needs no page switching, when accessed alone. */ +/* +* Calculate the address of the selector register in the corresponding +* data window if it is located on every page. +*/ + page_chg =in_range (range->selector_reg, range->window_start, range->window_len); +if (page_chg) + selector_reg = range->range_min + win_page * range->window_len + + range->selector_reg - range->window_start; + +/* +* It is possible to have selector register inside data window. +* In that case, selector register is located on every page and it +* needs no page switching, when accessed alone. +* +* Nevertheless we should synchronize the cache values for it. +* This can't be properly achieved if the selector register is +* the first and the only one to be read inside the data window. +* That's why we update it in that case as well. +* +* However, we specifically avoid updating it for the default page, +* when it's overlapped with the real data window, to prevent from +* infinite looping. +*/ if (val_num >1 || + (page_chg && selector_reg != range->selector_reg) || range->window_start + win_offset != range->selector_reg) {/* Use separate work_buf during page switching */ orig_work_buf = map->work_buf;
@@ -1664,7 +1686,7 @@ static int _regmap_select_page(struct regmap *map, unsigned int *reg, ret =_regmap_update_bits (map, range->selector_reg, range->selector_mask, win_page << range->selector_shift, - &page_chg, false); +NULL , false); map->work_buf = orig_work_buf;
drivers/bluetooth/btusb.c +4 -1
@@ -2096,8 +2096,11 @@ static void btusb_work(struct work_struct *work)if (data->air_mode ==HCI_NOTIFY_ENABLE_SCO_CVSD ) {if (hdev->voice_setting &0x0020 ) {static const int alts[3 ] = {2 ,4 ,5 }; +unsigned int sco_idx; - new_alts = alts[data->sco_num -1 ]; + sco_idx = min_t(unsigned int, data->sco_num - 1, +ARRAY_SIZE (alts) -1 ); + new_alts = alts[sco_idx]; }else { new_alts = data->sco_num; }
drivers/bluetooth/hci_ll.c +2 -0
@@ -541,6 +541,8 @@ static int download_firmware(struct ll_device *lldev)if (err || !fw->data || !fw->size) {bt_dev_err (lldev->hu.hdev,"request_firmware failed(errno %d) for %s" , err, bts_scr_name); +if (!err) +release_firmware (fw);return -EINVAL ; } ptr = (void *)fw->data;
drivers/comedi/drivers.c +8 -0
@@ -1000,6 +1000,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/cpufreq/cpufreq_conservative.c +12 -0
@@ -314,6 +314,17 @@ static void cs_start(struct cpufreq_policy *policy) dbs_info->requested_freq = policy->cur; } +static void cs_limits (struct cpufreq_policy *policy) +{ +struct cs_policy_dbs_info *dbs_info =to_dbs_info (policy->governor_data); + +/* +* The limits have changed, so may have the current frequency. Reset +* requested_freq to avoid any unintended outcomes due to the mismatch. +*/ + dbs_info->requested_freq = policy->cur; +} +static struct dbs_governor cs_governor = { .gov =CPUFREQ_DBS_GOVERNOR_INITIALIZER ("conservative" ), .kobj_type = { .default_groups = cs_groups },
@@ -323,6 +334,7 @@ static struct dbs_governor cs_governor = { .init = cs_init, .exit = cs_exit, .start = cs_start, + .limits = cs_limits, };#define CPU_FREQ_GOV_CONSERVATIVE (cs_governor.gov)
drivers/cpufreq/cpufreq_governor.c +9 -4
@@ -440,7 +440,7 @@ int cpufreq_dbs_governor_init(struct cpufreq_policy *policy) ret = gov->init (dbs_data);if (ret) - goto free_policy_dbs_info; + goto free_dbs_data;/* * The sampling interval should not be less than the transition latency
@@ -468,13 +468,15 @@ 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); free_policy_dbs_info:
@@ -561,6 +563,7 @@ EXPORT_SYMBOL_GPL(cpufreq_dbs_governor_stop);void cpufreq_dbs_governor_limits (struct cpufreq_policy *policy) { +struct dbs_governor *gov =dbs_governor_of (policy);struct policy_dbs_info *policy_dbs;/* Protect gov->gdbs_data against cpufreq_dbs_governor_exit() */
@@ -572,6 +575,8 @@ void cpufreq_dbs_governor_limits(struct cpufreq_policy *policy)mutex_lock (&policy_dbs->update_mutex);cpufreq_policy_apply_limits (policy);gov_update_sample_delay (policy_dbs,0 ); +if (gov->limits) + gov->limits (policy);mutex_unlock (&policy_dbs->update_mutex); out:
drivers/cpufreq/cpufreq_governor.h +1 -0
@@ -138,6 +138,7 @@ struct dbs_governor {int (*init)(struct dbs_data *dbs_data);void (*exit)(struct dbs_data *dbs_data);void (*start)(struct cpufreq_policy *policy); +void (*limits)(struct cpufreq_policy *policy); };static inline struct dbs_governor *dbs_governor_of (struct cpufreq_policy *policy)
drivers/dma/idxd/cdev.c +5 -5
@@ -45,11 +45,7 @@ struct idxd_user_context {static void idxd_cdev_dev_release (struct device *dev) {struct idxd_cdev *idxd_cdev =dev_to_cdev (dev); -struct idxd_cdev_context *cdev_ctx; -struct idxd_wq *wq = idxd_cdev->wq; - cdev_ctx = &ictx[wq->idxd->data->type]; -ida_simple_remove (&cdev_ctx->minor_ida, idxd_cdev->minor);kfree (idxd_cdev); }
@@ -375,7 +371,7 @@ int idxd_wq_add_cdev(struct idxd_wq *wq) cdev = &idxd_cdev->cdev; dev =cdev_dev (idxd_cdev); cdev_ctx = &ictx[wq->idxd->data->type]; - minor =ida_simple_get (&cdev_ctx->minor_ida,0 ,MINORMASK ,GFP_KERNEL ); + minor =ida_alloc_max (&cdev_ctx->minor_ida,MINORMASK ,GFP_KERNEL );if (minor <0 ) {kfree (idxd_cdev);return minor;
@@ -410,11 +406,15 @@ int idxd_wq_add_cdev(struct idxd_wq *wq)void idxd_wq_del_cdev (struct idxd_wq *wq) { +struct idxd_cdev_context *cdev_ctx;struct idxd_cdev *idxd_cdev; idxd_cdev = wq->idxd_cdev; wq->idxd_cdev =NULL ;cdev_device_del (&idxd_cdev->cdev,cdev_dev (idxd_cdev)); + + cdev_ctx = &ictx[wq->idxd->data->type]; +ida_free (&cdev_ctx->minor_ida, idxd_cdev->minor);put_device (cdev_dev (idxd_cdev)); }
drivers/dma/idxd/device.c +1 -2
@@ -174,6 +174,7 @@ void idxd_wq_free_resources(struct idxd_wq *wq)free_descs (wq);dma_free_coherent (dev, wq->compls_size, wq->compls, wq->compls_addr);sbitmap_queue_free (&wq->sbq); + wq->type =IDXD_WQT_NONE ; }int idxd_wq_enable (struct idxd_wq *wq)
@@ -381,7 +382,6 @@ static void idxd_wq_disable_cleanup(struct idxd_wq *wq)lockdep_assert_held (&wq->wq_lock); wq->state =IDXD_WQ_DISABLED ;memset (wq->wqcfg,0 , idxd->wqcfg_size); - wq->type =IDXD_WQT_NONE ; wq->threshold =0 ; wq->priority =0 ; wq->enqcmds_retries =IDXD_ENQCMDS_RETRIES ;
@@ -1426,7 +1426,6 @@ void drv_disable_wq(struct idxd_wq *wq)idxd_wq_reset (wq);idxd_wq_free_resources (wq);percpu_ref_exit (&wq->wq_active); - wq->type =IDXD_WQT_NONE ; wq->client_count =0 ; }
drivers/dma/idxd/sysfs.c +1 -0
@@ -1663,6 +1663,7 @@ static void idxd_conf_device_release(struct device *dev) {struct idxd_device *idxd =confdev_to_idxd (dev); +destroy_workqueue (idxd->wq);kfree (idxd->groups);bitmap_free (idxd->wq_enable_map);kfree (idxd->wqs);
drivers/dma/sh/rz-dmac.c +36 -30
121 lines not on this page · raw message
drivers/dma/xilinx/xilinx_dma.c +41 -25
141 lines not on this page · raw message
drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c +2 -2
@@ -694,9 +694,9 @@ int amdgpu_amdkfd_submit_ib(struct amdgpu_device *adev, goto err_ib_sched; } -/* Drop the initial kref_init count (see drm_sched_main as example) */ -dma_fence_put (f); ret =dma_fence_wait (f, false); +/* Drop the returned fence reference after the wait completes */ +dma_fence_put (f); err_ib_sched:amdgpu_job_free (job);
drivers/gpu/drm/ast/ast_dp501.c +1 -1
@@ -426,7 +426,7 @@ static void ast_init_analog(struct drm_device *dev)/* 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_CRTC_PORT ,0xa3 ,0xcf ,0x00 );
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>
@@ -982,6 +983,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/i915/display/intel_gmbus.c +3 -1
@@ -470,8 +470,10 @@ gmbus_xfer_read_chunk(struct drm_i915_private *i915, val =intel_de_read_fw (i915,GMBUS3 (i915)); do { - if (extra_byte_added && len == 1) + if (extra_byte_added && len == 1) { + len--; break; + } *buf++ = val & 0xff; val >>= 8;
drivers/hid/hid-apple.c +1 -3
@@ -611,9 +611,7 @@ static __u8 *apple_report_fixup(struct hid_device *hdev, __u8 *rdesc,hid_info (hdev,"fixing up Magic Keyboard battery report descriptor\n" ); *rsize = *rsize -1 ; - rdesc =kmemdup (rdesc +1 , *rsize,GFP_KERNEL ); -if (!rdesc) -return NULL ; + rdesc = rdesc +1 ; rdesc[0 ] =0x05 ; rdesc[1 ] =0x01 ;
drivers/hid/hid-asus.c +11 -4
@@ -1206,14 +1206,21 @@ static __u8 *asus_report_fixup(struct hid_device *hdev, __u8 *rdesc,*/ if (*rsize == rsize_orig && rdesc[offs] ==0x09 && rdesc[offs +1 ] ==0x76 ) { - *rsize = rsize_orig +1 ; - rdesc =kmemdup (rdesc, *rsize,GFP_KERNEL ); -if (!rdesc) -return NULL ; +__u8 *new_rdesc; + + new_rdesc =devm_kzalloc (&hdev->dev, rsize_orig +1 , +GFP_KERNEL ); +if (!new_rdesc) +return rdesc;hid_info (hdev,"Fixing up %s keyb report descriptor\n" , drvdata->quirks &QUIRK_T100CHI ?"T100CHI" :"T90CHI" ); + +memcpy (new_rdesc, rdesc, rsize_orig); + *rsize = rsize_orig +1 ; + rdesc = new_rdesc; +memmove (rdesc + offs +4 , rdesc + offs +2 ,12 ); rdesc[offs] =0x19 ; rdesc[offs +1 ] =0x00 ;
drivers/hid/hid-magicmouse.c +2 -4
@@ -963,13 +963,11 @@ static __u8 *magicmouse_report_fixup(struct hid_device *hdev, __u8 *rdesc,*/ if ((is_usb_magicmouse2 (hdev->vendor, hdev->product) ||is_usb_magictrackpad2 (hdev->vendor, hdev->product)) && - *rsize ==83 && rdesc[46 ] ==0x84 && rdesc[58 ] ==0x85 ) { + *rsize >=83 && rdesc[46 ] ==0x84 && rdesc[58 ] ==0x85 ) {hid_info (hdev,"fixing up magicmouse battery report descriptor\n" ); *rsize = *rsize -1 ; - rdesc =kmemdup (rdesc +1 , *rsize,GFP_KERNEL ); -if (!rdesc) -return NULL ; + rdesc = rdesc +1 ; rdesc[0 ] =0x05 ; rdesc[1 ] =0x01 ;
drivers/hid/hid-mcp2221.c +2 -0
@@ -319,6 +319,8 @@ static int mcp_i2c_smbus_read(struct mcp2221 *mcp,usleep_range (90 ,100 ); retries++; }else { +usleep_range (980 ,1000 ); +mcp_cancel_last_cmd (mcp);return ret; } }else {
drivers/hid/hid-multitouch.c +7 -0
@@ -472,12 +472,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
@@ -1253,10 +1253,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/hwmon/adm1177.c +31 -23
111 lines not on this page · raw message
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/peci/cputemp.c +2 -2
@@ -133,7 +133,7 @@ static int get_temp_target(struct peci_cputemp *priv, enum peci_temp_target_type *val = priv->temp.target.tjmax;break ;case crit_hyst_type: - *val = priv->temp.target.tjmax - priv->temp.target.tcontrol; + *val = priv->temp.target.tcontrol;break ;default : ret = -EOPNOTSUPP ;
@@ -339,7 +339,7 @@ static umode_t cputemp_is_visible(const void *data, enum hwmon_sensor_types type {const struct peci_cputemp *priv = data; -if (channel >CPUTEMP_CHANNEL_NUMS ) +if (channel >=CPUTEMP_CHANNEL_NUMS )return 0 ;if (channel < channel_core)
drivers/hwmon/pmbus/isl68137.c +18 -3
@@ -78,7 +78,15 @@ static ssize_t isl68137_avs_enable_show_page(struct i2c_client *client,int page, char *buf) { - int val = pmbus_read_byte_data(client, page, PMBUS_OPERATION); + int val; + + val =pmbus_lock_interruptible (client); +if (val) +return val; + + val =pmbus_read_byte_data (client, page,PMBUS_OPERATION ); + +pmbus_unlock (client);if (val <0 )return val;
@@ -100,6 +108,10 @@ static ssize_t isl68137_avs_enable_store_page(struct i2c_client *client, op_val = result ?ISL68137_VOUT_AVS :0 ; + rc =pmbus_lock_interruptible (client); +if (rc) +return rc; +/* * Writes to VOUT setpoint over AVSBus will persist after the VRM is * switched to PMBus control. Switching back to AVSBus control
@@ -111,17 +123,20 @@ static ssize_t isl68137_avs_enable_store_page(struct i2c_client *client, rc =pmbus_read_word_data (client, page,0xff ,PMBUS_VOUT_COMMAND );if (rc <0 ) -return rc; + goto unlock; rc =pmbus_write_word_data (client, page,PMBUS_VOUT_COMMAND , rc);if (rc <0 ) -return rc; + goto unlock; } rc =pmbus_update_byte_data (client, page,PMBUS_OPERATION ,ISL68137_VOUT_AVS , op_val); +unlock: +pmbus_unlock (client); +return (rc <0 ) ? rc : count; }
drivers/hwmon/pmbus/pmbus.h +2 -0
@@ -510,6 +510,8 @@ int pmbus_get_fan_rate_device(struct i2c_client *client, int page, int id, enum pmbus_fan_mode mode);int pmbus_get_fan_rate_cached (struct i2c_client *client,int page,int id,enum pmbus_fan_mode mode); +int pmbus_lock_interruptible (struct i2c_client *client); +void pmbus_unlock (struct i2c_client *client);int pmbus_update_fan (struct i2c_client *client,int page,int id,u8 config,u8 mask,u16 command);struct dentry *pmbus_get_debugfs_dir (struct i2c_client *client);
drivers/hwmon/pmbus/pmbus_core.c +30 -0
@@ -3049,8 +3049,13 @@ static int pmbus_debugfs_get(void *data, u64 *val) {int rc;struct pmbus_debugfs_entry *entry = data; +struct pmbus_data *pdata =i2c_get_clientdata (entry->client); + rc =mutex_lock_interruptible (&pdata->update_lock); +if (rc) +return rc; rc =_pmbus_read_byte_data (entry->client, entry->page, entry->reg); +mutex_unlock (&pdata->update_lock);if (rc <0 )return rc;
@@ -3067,7 +3072,11 @@ static int pmbus_debugfs_get_status(void *data, u64 *val)struct pmbus_debugfs_entry *entry = data;struct pmbus_data *pdata =i2c_get_clientdata (entry->client); + rc =mutex_lock_interruptible (&pdata->update_lock); +if (rc) +return rc; rc = pdata->read_status (entry->client, entry->page); +mutex_unlock (&pdata->update_lock);if (rc <0 )return rc;
@@ -3083,10 +3092,15 @@ static ssize_t pmbus_debugfs_mfr_read(struct file *file, char __user *buf, {int rc;struct pmbus_debugfs_entry *entry = file->private_data; +struct pmbus_data *pdata =i2c_get_clientdata (entry->client);char data[I2C_SMBUS_BLOCK_MAX +2 ] = {0 }; + rc =mutex_lock_interruptible (&pdata->update_lock); +if (rc) +return rc; rc =pmbus_read_block_data (entry->client, entry->page, entry->reg, data); +mutex_unlock (&pdata->update_lock);if (rc <0 )return rc;
@@ -3420,6 +3434,22 @@ struct dentry *pmbus_get_debugfs_dir(struct i2c_client *client) }EXPORT_SYMBOL_NS_GPL (pmbus_get_debugfs_dir,PMBUS ); +int pmbus_lock_interruptible (struct i2c_client *client) +{ +struct pmbus_data *data =i2c_get_clientdata (client); + +return mutex_lock_interruptible (&data->update_lock); +} +EXPORT_SYMBOL_NS_GPL (pmbus_lock_interruptible,PMBUS ); + +void pmbus_unlock (struct i2c_client *client) +{ +struct pmbus_data *data =i2c_get_clientdata (client); + +mutex_unlock (&data->update_lock); +} +EXPORT_SYMBOL_NS_GPL (pmbus_unlock,PMBUS ); +static int __init pmbus_core_init (void ) { pmbus_debugfs_dir =debugfs_create_dir ("pmbus" ,NULL );
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 +2 -2
@@ -156,8 +156,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
@@ -1114,6 +1114,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
@@ -1816,8 +1816,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/adxl355_core.c +1 -1
@@ -699,7 +699,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/adc/ti-adc161s626.c +20 -21
75 lines not on this page · raw message
drivers/iio/dac/ad5770r.c +1 -1
@@ -323,7 +323,7 @@ static int ad5770r_read_raw(struct iio_dev *indio_dev, chan->address, st->transf_buf, 2);if (ret) -return 0 ; +return ret; buf16 = st->transf_buf[0 ] + (st->transf_buf[1 ] <<8 ); *val = buf16 >>2 ;
drivers/iio/gyro/mpu3050-core.c +21 -11
@@ -1139,11 +1139,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,
@@ -1231,12 +1236,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 */
@@ -1259,9 +1258,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);
@@ -1274,13 +1284,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/bmi160/bmi160_core.c +5 -10
@@ -568,12 +568,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;
@@ -607,17 +611,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 +4 -0
@@ -202,6 +202,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;
drivers/iio/light/vcnl4035.c +12 -6
@@ -105,17 +105,23 @@ static irqreturn_t vcnl4035_trigger_consumer_handler(int irq, void *p)struct iio_dev *indio_dev = pf->indio_dev;struct vcnl4035_data *data =iio_priv (indio_dev);/* Ensure naturally aligned timestamp */ -u8 buffer[ALIGN (sizeof (u16),sizeof (s64)) +sizeof (s64)]__aligned(8) = { }; +struct { +u16 als_data; +aligned_s64 timestamp; + } buffer = { }; +unsigned int val;int ret; - ret =regmap_read (data->regmap,VCNL4035_ALS_DATA , (int *)buffer); + ret =regmap_read (data->regmap,VCNL4035_ALS_DATA , &val);if (ret <0 ) {dev_err (&data->client->dev,"Trigger consumer can't read from sensor.\n" ); goto fail_read; } -iio_push_to_buffers_with_timestamp (indio_dev, buffer, -iio_get_time_ns (indio_dev)); + + buffer.als_data = val; +iio_push_to_buffers_with_timestamp (indio_dev, &buffer, +iio_get_time_ns (indio_dev)); fail_read:iio_trigger_notify_done (indio_dev->trig);
@@ -378,7 +384,7 @@ static const struct iio_chan_spec vcnl4035_channels[] = { .sign = 'u', .realbits = 16, .storagebits = 16, - .endianness = IIO_LE, + .endianness = IIO_CPU, }, }, {
@@ -392,7 +398,7 @@ static const struct iio_chan_spec vcnl4035_channels[] = { .sign = 'u', .realbits = 16, .storagebits = 16, - .endianness = IIO_LE, + .endianness = IIO_CPU, }, }, };
drivers/infiniband/core/rw.c +18 -3
@@ -326,14 +326,29 @@ int rdma_rw_ctx_init(struct rdma_rw_ctx *ctx, struct ib_qp *qp, u32 port_num,if (rdma_rw_io_needs_mr (qp->device, port_num, dir, sg_cnt)) { ret =rdma_rw_init_mr_wrs (ctx, qp, port_num, sg, sg_cnt, sg_offset, remote_addr, rkey, dir); - }else if (sg_cnt >1 ) { +/* +* If MR init succeeded or failed for a reason other +* than pool exhaustion, that result is final. +* +* Pool exhaustion (-EAGAIN) from the max_sgl_rd +* optimization is recoverable: fall back to +* direct SGE posting. iWARP and force_mr require +* MRs unconditionally, so -EAGAIN is terminal. +*/ +if (ret != -EAGAIN || +rdma_protocol_iwarp (qp->device, port_num) || +unlikely (rdma_rw_force_mr)) + goto out; + } + +if (sg_cnt >1 ) ret =rdma_rw_init_map_wrs (ctx, qp, sg, sg_cnt, sg_offset, remote_addr, rkey, dir); - }else { +else ret =rdma_rw_init_single_wr (ctx, qp, sg, sg_offset, remote_addr, rkey, dir); - } +out:if (ret <0 ) goto out_unmap_sg;return ret;
drivers/infiniband/hw/irdma/cm.c +16 -13
@@ -2196,11 +2196,12 @@ irdma_make_cm_node(struct irdma_cm_core *cm_core, struct irdma_device *iwdev,int oldarpindex;int arpindex;struct net_device *netdev = iwdev->netdev; +int ret;/* create an hte and cm_node for this instance */ cm_node =kzalloc (sizeof (*cm_node),GFP_ATOMIC );if (!cm_node) -return NULL ; +return ERR_PTR (-ENOMEM );/* set our node specific transport info */ cm_node->ipv4 = cm_info->ipv4;
@@ -2299,8 +2300,10 @@ irdma_make_cm_node(struct irdma_cm_core *cm_core, struct irdma_device *iwdev, arpindex = -EINVAL ; } -if (arpindex <0 ) +if (arpindex <0 ) { + ret = -EINVAL ; goto err; + }ether_addr_copy (cm_node->rem_mac, iwdev->rf->arp_table[arpindex].mac_addr);
@@ -2311,7 +2314,7 @@ irdma_make_cm_node(struct irdma_cm_core *cm_core, struct irdma_device *iwdev, err:kfree (cm_node); -return NULL ; +return ERR_PTR (ret); }static void irdma_destroy_connection (struct irdma_cm_node *cm_node)
@@ -2972,8 +2975,8 @@ static int irdma_create_cm_node(struct irdma_cm_core *cm_core,/* create a CM connection node */ cm_node =irdma_make_cm_node (cm_core, iwdev, cm_info,NULL ); -if (!cm_node) -return -ENOMEM ; +if (IS_ERR (cm_node)) +return PTR_ERR (cm_node);/* set our node side to client (active) side */ cm_node->tcp_cntxt.client =1 ;
@@ -3170,9 +3173,9 @@ void irdma_receive_ilq(struct irdma_sc_vsi *vsi, struct irdma_puda_buf *rbuf) cm_info.cm_id = listener->cm_id; cm_node =irdma_make_cm_node (cm_core, iwdev, &cm_info, listener); -if (!cm_node) { +if (IS_ERR (cm_node)) {ibdev_dbg (&cm_core->iwdev->ibdev, -"CM: allocate node failed\n" ); +"CM: allocate node failed ret=%ld\n" ,PTR_ERR (cm_node));refcount_dec (&listener->refcnt);return ; }
@@ -4181,21 +4184,21 @@ static void irdma_cm_event_handler(struct work_struct *work)irdma_cm_event_reset (event);break ;case IRDMA_CM_EVENT_CONNECTED : -if (!event->cm_node->cm_id || - event->cm_node->state !=IRDMA_CM_STATE_OFFLOADED ) +if (!cm_node->cm_id || + cm_node->state !=IRDMA_CM_STATE_OFFLOADED )break ;irdma_cm_event_connected (event);break ;case IRDMA_CM_EVENT_MPA_REJECT : -if (!event->cm_node->cm_id || +if (!cm_node->cm_id || cm_node->state ==IRDMA_CM_STATE_OFFLOADED )break ;irdma_send_cm_event (cm_node, cm_node->cm_id,IW_CM_EVENT_CONNECT_REPLY , -ECONNREFUSED );break ;case IRDMA_CM_EVENT_ABORTED : -if (!event->cm_node->cm_id || - event->cm_node->state ==IRDMA_CM_STATE_OFFLOADED ) +if (!cm_node->cm_id || + cm_node->state ==IRDMA_CM_STATE_OFFLOADED )break ;irdma_event_connect_error (event);break ;
@@ -4205,7 +4208,7 @@ static void irdma_cm_event_handler(struct work_struct *work)break ; } -irdma_rem_ref_cm_node (event->cm_node); +irdma_rem_ref_cm_node (cm_node);kfree (event); }
drivers/infiniband/hw/irdma/utils.c +0 -2
@@ -2456,8 +2456,6 @@ void irdma_modify_qp_to_err(struct irdma_sc_qp *sc_qp)struct irdma_qp *qp = sc_qp->qp_uk.back_qp;struct ib_qp_attr attr; -if (qp->iwdev->rf->reset) -return ; attr.qp_state =IB_QPS_ERR ;if (rdma_protocol_roce (qp->ibqp.device,1 ))
drivers/infiniband/hw/irdma/verbs.c +5 -4
@@ -534,7 +534,8 @@ static int irdma_destroy_qp(struct ib_qp *ibqp, struct ib_udata *udata) }irdma_qp_rem_ref (&iwqp->ibqp); -wait_for_completion (&iwqp->free_qp); +if (!iwdev->rf->reset) +wait_for_completion (&iwqp->free_qp);irdma_free_lsmm_rsrc (iwqp);irdma_cqp_qp_destroy_cmd (&iwdev->rf->sc_dev, &iwqp->sc_qp);
@@ -1005,6 +1006,7 @@ static int irdma_create_qp(struct ib_qp *ibqp,spin_lock_init (&iwqp->sc_qp.pfpdu.lock); iwqp->sig_all = (init_attr->sq_sig_type ==IB_SIGNAL_ALL_WR ) ?1 :0 ; rf->qp_table[qp_num] = iwqp; +init_completion (&iwqp->free_qp);if (rdma_protocol_roce (&iwdev->ibdev,1 )) {if (dev->ws_add (&iwdev->vsi,0 )) {
@@ -1039,7 +1041,6 @@ static int irdma_create_qp(struct ib_qp *ibqp, } } -init_completion (&iwqp->free_qp);return 0 ; error:
@@ -1341,8 +1342,6 @@ int irdma_modify_qp_roce(struct ib_qp *ibqp, struct ib_qp_attr *attr, roce_info->rd_en = true; } -wait_event (iwqp->mod_qp_waitq, !atomic_read (&iwqp->hw_mod_qp_pend)); - ibdev_dbg(&iwdev->ibdev, "VERBS: caller: %pS qp_id=%d to_ibqpstate=%d ibqpstate=%d irdma_qpstate=%d attr_mask=0x%x\n", __builtin_return_address(0), ibqp->qp_num, attr->qp_state,
@@ -1419,6 +1418,7 @@ int irdma_modify_qp_roce(struct ib_qp *ibqp, struct ib_qp_attr *attr,case IB_QPS_ERR :case IB_QPS_RESET :if (iwqp->iwarp_state ==IRDMA_QP_STATE_ERROR ) { + iwqp->ibqp_state = attr->qp_state;spin_unlock_irqrestore (&iwqp->lock, flags);if (udata && udata->inlen) { if (ib_copy_from_udata(&ureq, udata,
@@ -1624,6 +1624,7 @@ int irdma_modify_qp(struct ib_qp *ibqp, struct ib_qp_attr *attr, int attr_mask,case IB_QPS_ERR :case IB_QPS_RESET :if (iwqp->iwarp_state ==IRDMA_QP_STATE_ERROR ) { + iwqp->ibqp_state = attr->qp_state;spin_unlock_irqrestore (&iwqp->lock, flags);if (udata && udata->inlen) { if (ib_copy_from_udata(&ureq, udata,
drivers/input/joystick/xpad.c +2 -0
@@ -289,6 +289,8 @@ static const struct xpad_device { { 0x1532, 0x0a00, "Razer Atrox Arcade Stick", MAP_TRIGGERS_TO_BUTTONS, XTYPE_XBOXONE }, { 0x1532, 0x0a03, "Razer Wildcat", 0, XTYPE_XBOXONE }, { 0x1532, 0x0a29, "Razer Wolverine V2", 0, XTYPE_XBOXONE }, + { 0x1532, 0x0a57, "Razer Wolverine V3 Pro (Wired)", 0, XTYPE_XBOX360 }, + { 0x1532, 0x0a59, "Razer Wolverine V3 Pro (2.4 GHz Dongle)", 0, XTYPE_XBOX360 }, { 0x15e4, 0x3f00, "Power A Mini Pro Elite", 0, XTYPE_XBOX360 }, { 0x15e4, 0x3f0a, "Xbox Airflo wired controller", 0, XTYPE_XBOX360 }, { 0x15e4, 0x3f10, "Batarang Xbox 360 controller", 0, XTYPE_XBOX360 },
drivers/input/rmi4/rmi_f54.c +2 -2
@@ -540,6 +540,8 @@ static void rmi_f54_work(struct work_struct *work)int error;int i; +mutex_lock (&f54->data_mutex); + report_size =rmi_f54_get_report_size (f54);if (report_size ==0 ) { dev_err(&fn->dev, "Bad report size, report type=%d\n",
@@ -548,8 +550,6 @@ static void rmi_f54_work(struct work_struct *work) goto error;/* retry won't help */ } -mutex_lock (&f54->data_mutex); -/* * Need to check if command has completed. * If not try again later.
drivers/input/serio/i8042-acpipnpio.h +7 -0
@@ -1187,6 +1187,13 @@ static const struct dmi_system_id i8042_dmi_quirk_table[] __initconst = { .driver_data = (void *)(SERIO_QUIRK_NOMUX | SERIO_QUIRK_RESET_ALWAYS | SERIO_QUIRK_NOLOOP | SERIO_QUIRK_NOPNP) }, + { + .matches = { + DMI_MATCH(DMI_BOARD_NAME, "X6KK45xU_X6SP45xU"), + }, + .driver_data = (void *)(SERIO_QUIRK_NOMUX |SERIO_QUIRK_RESET_ALWAYS | +SERIO_QUIRK_NOLOOP |SERIO_QUIRK_NOPNP ) + }, { .matches = { DMI_MATCH(DMI_BOARD_NAME, "WUJIE Series-X5SP4NAG"),
drivers/irqchip/irq-qcom-mpm.c +3 -0
@@ -305,6 +305,8 @@ static int mpm_pd_power_off(struct generic_pm_domain *genpd)if (ret <0 )return ret; +mbox_client_txdone (priv->mbox_chan,0 ); +return 0 ; }
@@ -414,6 +416,7 @@ static int qcom_mpm_init(struct device_node *np, struct device_node *parent) } priv->mbox_client.dev = dev; + priv->mbox_client.knows_txdone = true; priv->mbox_chan =mbox_request_channel (&priv->mbox_client,0 );if (IS_ERR (priv->mbox_chan)) { ret =PTR_ERR (priv->mbox_chan);
drivers/media/mc/mc-request.c +5 -0
@@ -190,6 +190,8 @@ static long media_request_ioctl_reinit(struct media_request *req)struct media_device *mdev = req->mdev;unsigned long flags; +mutex_lock (&mdev->req_queue_mutex); +spin_lock_irqsave (&req->lock, flags);if (req->state !=MEDIA_REQUEST_STATE_IDLE && req->state !=MEDIA_REQUEST_STATE_COMPLETE ) {
@@ -197,6 +199,7 @@ static long media_request_ioctl_reinit(struct media_request *req)"request: %s not in idle or complete state, cannot reinit\n" , req->debug_str);spin_unlock_irqrestore (&req->lock, flags); +mutex_unlock (&mdev->req_queue_mutex);return -EBUSY ; }if (req->access_count) {
@@ -204,6 +207,7 @@ static long media_request_ioctl_reinit(struct media_request *req)"request: %s is being accessed, cannot reinit\n" , req->debug_str);spin_unlock_irqrestore (&req->lock, flags); +mutex_unlock (&mdev->req_queue_mutex);return -EBUSY ; } req->state =MEDIA_REQUEST_STATE_CLEANING ;
@@ -214,6 +218,7 @@ static long media_request_ioctl_reinit(struct media_request *req)spin_lock_irqsave (&req->lock, flags); req->state =MEDIA_REQUEST_STATE_IDLE ;spin_unlock_irqrestore (&req->lock, flags); +mutex_unlock (&mdev->req_queue_mutex);return 0 ; }
drivers/media/v4l2-core/v4l2-ioctl.c +3 -2
@@ -2987,13 +2987,14 @@ static long __video_do_ioctl(struct file *file, vfh = file->private_data;/* -* We need to serialize streamon/off with queueing new requests. +* We need to serialize streamon/off/reqbufs with queueing new requests. * These ioctls may trigger the cancellation of a streaming * operation, and that should not be mixed with queueing a new * request at the same time. */ if (v4l2_device_supports_requests (vfd->v4l2_dev) && - (cmd ==VIDIOC_STREAMON || cmd ==VIDIOC_STREAMOFF )) { + (cmd ==VIDIOC_STREAMON || cmd ==VIDIOC_STREAMOFF || + cmd ==VIDIOC_REQBUFS )) { req_queue_lock = &vfd->v4l2_dev->mdev->req_queue_mutex;if (mutex_lock_interruptible (req_queue_lock))
drivers/mtd/spi-nor/core.c +143 -2
169 lines not on this page · raw message
drivers/net/can/vxcan.c +1 -1
@@ -231,7 +231,7 @@ static int vxcan_newlink(struct net *net, struct net_device *dev,netif_carrier_off (peer); - err =rtnl_configure_link (peer, ifmp); + err =rtnl_configure_link (peer, ifmp,0 ,NULL );if (err <0 ) goto unregister_network_device;
drivers/net/ethernet/broadcom/tg3.c +12 -1
@@ -12217,7 +12217,7 @@ static int tg3_get_link_ksettings(struct net_device *dev,ethtool_convert_legacy_u32_to_link_mode (cmd->link_modes.advertising, advertising); -if (netif_running (dev) && tp->link_up) { +if (netif_running (dev) &&netif_carrier_ok (dev)) { cmd->base.speed = tp->link_config.active_speed; cmd->base.duplex = tp->link_config.active_duplex; ethtool_convert_legacy_u32_to_link_mode(
@@ -16950,6 +16950,13 @@ static int tg3_get_invariants(struct tg3 *tp, const struct pci_device_id *ent)return err; } +static int tg3_is_default_mac_address (u8 *addr) +{ +static const u8 default_mac_address[ETH_ALEN ] = {0x00 ,0x10 ,0x18 ,0x00 ,0x00 ,0x00 }; + +return ether_addr_equal (default_mac_address, addr); +} +static int tg3_get_device_address (struct tg3 *tp,u8 *addr) {u32 hi, lo, mac_offset;
@@ -17021,6 +17028,10 @@ static int tg3_get_device_address(struct tg3 *tp, u8 *addr)if (!is_valid_ether_addr (addr))return -EINVAL ; + +if (tg3_is_default_mac_address (addr)) +return device_get_mac_address (&tp->pdev->dev, addr); +return 0 ; }
drivers/net/ethernet/cadence/macb_main.c +10 -7
@@ -1075,7 +1075,7 @@ static void macb_tx_unmap(struct macb *bp, struct macb_tx_skb *tx_skb, int budge }if (tx_skb->skb) { -napi_consume_skb (tx_skb->skb, budget); +dev_consume_skb_any (tx_skb->skb); tx_skb->skb =NULL ; } }
@@ -3170,7 +3170,7 @@ static void gem_get_ethtool_stats(struct net_device *dev,spin_lock_irq (&bp->stats_lock);gem_update_stats (bp);memcpy (data, &bp->ethtool_stats,sizeof (u64) - * (GEM_STATS_LEN +QUEUE_STATS_LEN *MACB_MAX_QUEUES )); + * (GEM_STATS_LEN +QUEUE_STATS_LEN * bp->num_queues));spin_unlock_irq (&bp->stats_lock); }
@@ -5270,6 +5270,8 @@ static int __maybe_unused macb_suspend(struct device *dev)macb_writel (bp,TSR ,-1 );macb_writel (bp,RSR ,-1 ); +spin_unlock_irqrestore (&bp->lock, flags); +/* Change interrupt handler and * Enable WoL IRQ on queue 0 */
@@ -5281,11 +5283,12 @@ static int __maybe_unused macb_suspend(struct device *dev)dev_err (dev,"Unable to request IRQ %d (error %d)\n" , bp->queues[0 ].irq, err); -spin_unlock_irqrestore (&bp->lock, flags);return err; } +spin_lock_irqsave (&bp->lock, flags);queue_writel (bp->queues,IER ,GEM_BIT (WOL ));gem_writel (bp,WOL ,MACB_BIT (MAG )); +spin_unlock_irqrestore (&bp->lock, flags); }else { err =devm_request_irq (dev, bp->queues[0 ].irq, macb_wol_interrupt,IRQF_SHARED , netdev->name, bp->queues);
@@ -5293,13 +5296,13 @@ static int __maybe_unused macb_suspend(struct device *dev)dev_err (dev,"Unable to request IRQ %d (error %d)\n" , bp->queues[0 ].irq, err); -spin_unlock_irqrestore (&bp->lock, flags);return err; } +spin_lock_irqsave (&bp->lock, flags);queue_writel (bp->queues,IER ,MACB_BIT (WOL ));macb_writel (bp,WOL ,MACB_BIT (MAG )); +spin_unlock_irqrestore (&bp->lock, flags); } -spin_unlock_irqrestore (&bp->lock, flags);enable_irq_wake (bp->queues[0 ].irq); }
@@ -5366,6 +5369,8 @@ static int __maybe_unused macb_resume(struct device *dev)queue_readl (bp->queues,ISR );if (bp->caps &MACB_CAPS_ISR_CLEAR_ON_WRITE )queue_writel (bp->queues,ISR ,-1 ); +spin_unlock_irqrestore (&bp->lock, flags); +/* Replace interrupt handler on queue 0 */ devm_free_irq (dev, bp->queues[0 ].irq, bp->queues); err = devm_request_irq(dev, bp->queues[0].irq, macb_interrupt,
@@ -5374,10 +5379,8 @@ static int __maybe_unused macb_resume(struct device *dev)dev_err (dev,"Unable to request IRQ %d (error %d)\n" , bp->queues[0 ].irq, err); -spin_unlock_irqrestore (&bp->lock, flags);return err; } -spin_unlock_irqrestore (&bp->lock, flags);disable_irq_wake (bp->queues[0 ].irq);
drivers/net/ethernet/cadence/macb_pci.c +6 -4
@@ -97,10 +97,10 @@ static int macb_probe(struct pci_dev *pdev, const struct pci_device_id *id)return 0 ; err_plat_dev_register: -clk_unregister (plat_data.hclk); +clk_unregister_fixed_rate (plat_data.hclk); err_hclk_register: -clk_unregister (plat_data.pclk); +clk_unregister_fixed_rate (plat_data.pclk); err_pclk_register:return err;
@@ -110,10 +110,12 @@ static void macb_remove(struct pci_dev *pdev) {struct platform_device *plat_dev =pci_get_drvdata (pdev);struct macb_platform_data *plat_data =dev_get_platdata (&plat_dev->dev); +struct clk *pclk = plat_data->pclk; +struct clk *hclk = plat_data->hclk; -clk_unregister (plat_data->pclk); -clk_unregister (plat_data->hclk);platform_device_unregister (plat_dev); +clk_unregister_fixed_rate (pclk); +clk_unregister_fixed_rate (hclk); }static const struct pci_device_id dev_id_table[] = {
drivers/net/ethernet/faraday/ftgmac100.c +24 -4
@@ -928,19 +928,19 @@ static int ftgmac100_alloc_rings(struct ftgmac100 *priv) priv->tx_skbs =kcalloc (MAX_TX_QUEUE_ENTRIES ,sizeof (void *),GFP_KERNEL );if (!priv->tx_skbs) -return -ENOMEM ; + goto err_free_rx_skbs;/* Allocate descriptors */ priv->rxdes =dma_alloc_coherent (priv->dev,MAX_RX_QUEUE_ENTRIES *sizeof (struct ftgmac100_rxdes ), &priv->rxdes_dma,GFP_KERNEL );if (!priv->rxdes) -return -ENOMEM ; + goto err_free_tx_skbs; priv->txdes =dma_alloc_coherent (priv->dev,MAX_TX_QUEUE_ENTRIES *sizeof (struct ftgmac100_txdes ), &priv->txdes_dma,GFP_KERNEL );if (!priv->txdes) -return -ENOMEM ; + goto err_free_rxdes;/* Allocate scratch packet buffer */ priv->rx_scratch = dma_alloc_coherent(priv->dev,
@@ -948,9 +948,29 @@ static int ftgmac100_alloc_rings(struct ftgmac100 *priv) &priv->rx_scratch_dma, GFP_KERNEL);if (!priv->rx_scratch) -return -ENOMEM ; + goto err_free_txdes;return 0 ; + +err_free_txdes: +dma_free_coherent (priv->dev, +MAX_TX_QUEUE_ENTRIES * +sizeof (struct ftgmac100_txdes ), + priv->txdes, priv->txdes_dma); + priv->txdes =NULL ; +err_free_rxdes: +dma_free_coherent (priv->dev, +MAX_RX_QUEUE_ENTRIES * +sizeof (struct ftgmac100_rxdes ), + priv->rxdes, priv->rxdes_dma); + priv->rxdes =NULL ; +err_free_tx_skbs: +kfree (priv->tx_skbs); + priv->tx_skbs =NULL ; +err_free_rx_skbs: +kfree (priv->rx_skbs); + priv->rx_skbs =NULL ; +return -ENOMEM ; }static void ftgmac100_init_rings (struct ftgmac100 *priv)
drivers/net/ethernet/freescale/enetc/enetc_ethtool.c +2 -0
@@ -677,6 +677,8 @@ static void enetc_get_ringparam(struct net_device *ndev, {struct enetc_ndev_priv *priv =netdev_priv (ndev); + ring->rx_max_pending = priv->rx_bd_count; + ring->tx_max_pending = priv->tx_bd_count; ring->rx_pending = priv->rx_bd_count; ring->tx_pending = priv->tx_bd_count;
drivers/net/ethernet/freescale/enetc/enetc_pf.c +1 -1
@@ -1393,10 +1393,10 @@ static int enetc_pf_probe(struct pci_dev *pdev, si->ndev =NULL ;free_netdev (ndev); err_alloc_netdev: -err_device_disabled: err_setup_mac_addresses:kfree (pf->vf_state); err_alloc_vf_state: +err_device_disabled:enetc_psi_destroy (pdev); err_psi_create:return err;
drivers/net/ethernet/intel/ice/ice_ethtool.c +11 -3
@@ -1358,6 +1358,17 @@ __ice_get_ethtool_stats(struct net_device *netdev,int i =0 ;char *p; +if (ice_is_port_repr_netdev (netdev)) { +ice_update_eth_stats (vsi); + +for (j =0 ; j <ICE_VSI_STATS_LEN ; j++) { + p = (char *)vsi + ice_gstrings_vsi_stats[j].stat_offset; + data[i++] = (ice_gstrings_vsi_stats[j].sizeof_stat == +sizeof (u64)) ? *(u64 *)p : *(u32 *)p; + } +return ; + } +ice_update_pf_stats (pf);ice_update_vsi_stats (vsi);
@@ -1367,9 +1378,6 @@ __ice_get_ethtool_stats(struct net_device *netdev, sizeof(u64)) ? *(u64 *)p : *(u32 *)p; } -if (ice_is_port_repr_netdev (netdev)) -return ; -/* populate per queue stats */ rcu_read_lock ();
drivers/net/ethernet/intel/ice/ice_repr.c +2 -1
@@ -2,6 +2,7 @@/* Copyright (C) 2019-2021, Intel Corporation. */ #include "ice.h" +#include "ice_lib.h" #include "ice_eswitch.h" #include "ice_devlink.h" #include "ice_sriov.h"
@@ -56,7 +57,7 @@ ice_repr_get_stats64(struct net_device *netdev, struct rtnl_link_stats64 *stats)return ; vsi = np->repr->src_vsi; -ice_update_vsi_stats (vsi); +ice_update_eth_stats (vsi); eth_stats = &vsi->eth_stats; stats->tx_packets = eth_stats->tx_unicast + eth_stats->tx_broadcast +
drivers/net/ethernet/mellanox/mlx5/core/devlink.c +1 -3
@@ -54,9 +54,7 @@ mlx5_devlink_info_get(struct devlink *devlink, struct devlink_info_req *req,if (err)return err; - err =mlx5_fw_version_query (dev, &running_fw, &stored_fw); -if (err) -return err; +mlx5_fw_version_query (dev, &running_fw, &stored_fw); snprintf(version_str, sizeof(version_str), "%d.%d.%04d", mlx5_fw_ver_major(running_fw), mlx5_fw_ver_minor(running_fw),
drivers/net/ethernet/mellanox/mlx5/core/fw.c +34 -19
82 lines not on this page · raw message
drivers/net/ethernet/mellanox/mlx5/core/lag/debugfs.c +3 -0
@@ -163,8 +163,11 @@ DEFINE_SHOW_ATTRIBUTE(members);void mlx5_ldev_add_debugfs (struct mlx5_core_dev *dev) { +struct mlx5_lag *ldev =mlx5_lag_dev (dev);struct dentry *dbg; +if (!ldev) +return ; dbg =debugfs_create_dir ("lag" ,mlx5_debugfs_get_dev_root (dev)); dev->priv.dbg.lag_debugfs = dbg;
drivers/net/ethernet/mellanox/mlx5/core/mlx5_core.h +2 -2
@@ -262,8 +262,8 @@ void mlx5_dm_cleanup(struct mlx5_core_dev *dev);int mlx5_firmware_flash (struct mlx5_core_dev *dev,const struct firmware *fw,struct netlink_ext_ack *extack); -int mlx5_fw_version_query (struct mlx5_core_dev *dev, -u32 *running_ver,u32 *stored_ver); +void mlx5_fw_version_query (struct mlx5_core_dev *dev,u32 *running_ver, +u32 *stored_ver);#ifdef CONFIG_MLX5_CORE_EN int mlx5e_init (void );
drivers/net/ethernet/pensando/ionic/ionic_lif.c +11 -6
@@ -1665,13 +1665,18 @@ static int ionic_set_mac_address(struct net_device *netdev, void *sa)if (ether_addr_equal (netdev->dev_addr, mac))return 0 ; - err =ionic_program_mac (lif, mac); -if (err <0 ) -return err; +/* Only program macs for virtual functions to avoid losing the permanent +* Mac across warm reset/reboot. +*/ +if (lif->ionic->pdev->is_virtfn) { + err =ionic_program_mac (lif, mac); +if (err <0 ) +return err; -if (err >0 ) -netdev_dbg (netdev,"%s: SET and GET ATTR Mac are not equal-due to old FW running\n" , - __func__); +if (err >0 ) +netdev_dbg (netdev,"%s: SET and GET ATTR Mac are not equal-due to old FW running\n" , + __func__); + } err =eth_prepare_mac_addr_change (netdev, addr);if (err)
drivers/net/ethernet/xilinx/xilinx_axienet.h +2 -2
@@ -103,7 +103,7 @@#define XAXIDMA_BD_HAS_DRE_MASK 0xF00/* Whether has DRE mask */ #define XAXIDMA_BD_WORDLEN_MASK 0xFF/* Whether has DRE mask */ -#define XAXIDMA_BD_CTRL_LENGTH_MASK 0x007FFFFF/* Requested len */ +#define XAXIDMA_BD_CTRL_LENGTH_MASK GENMASK(25, 0)/* Requested len */ #define XAXIDMA_BD_CTRL_TXSOF_MASK 0x08000000/* First tx packet */ #define XAXIDMA_BD_CTRL_TXEOF_MASK 0x04000000/* Last tx packet */ #define XAXIDMA_BD_CTRL_ALL_MASK 0x0C000000/* All control bits */
@@ -129,7 +129,7 @@#define XAXIDMA_BD_CTRL_TXEOF_MASK 0x04000000/* Last tx packet */ #define XAXIDMA_BD_CTRL_ALL_MASK 0x0C000000/* All control bits */ -#define XAXIDMA_BD_STS_ACTUAL_LEN_MASK 0x007FFFFF/* Actual len */ +#define XAXIDMA_BD_STS_ACTUAL_LEN_MASK GENMASK(25, 0)/* Actual len */ #define XAXIDMA_BD_STS_COMPLETE_MASK 0x80000000/* Completed */ #define XAXIDMA_BD_STS_DEC_ERR_MASK 0x40000000/* Decode error */ #define XAXIDMA_BD_STS_SLV_ERR_MASK 0x20000000/* Slave error */
drivers/net/geneve.c +1 -1
@@ -1924,7 +1924,7 @@ struct net_device *geneve_dev_create_fb(struct net *net, const char *name,if (err) goto err; - err =rtnl_configure_link (dev,NULL ); + err =rtnl_configure_link (dev,NULL ,0 ,NULL );if (err <0 ) goto err;
drivers/net/phy/phy_device.c +43 -15
3 lines not on this page · 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/microchip/wilc1000/hif.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/pinctrl/mediatek/pinctrl-mtk-common.c +6 -3
Lines of this file are not shown. View the raw message.
drivers/platform/x86/touchscreen_dmi.c +18 -0
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/gadget/function/f_uac1_legacy.c +37 -10
47 lines not on this page · raw message
drivers/usb/gadget/udc/dummy_hcd.c +26 -16
42 lines not on this page · raw message
fs/erofs/zdata.c +38 -32
70 lines not on this page · raw message
fs/ext4/extents.c +140 -172
312 lines not on this page · raw message
fs/ext4/super.c +85 -79
164 lines not on this page · raw message
fs/smb/server/smb2pdu.c +52 -20
72 lines not on this page · raw message
include/acpi/acpixf.h +74 -60
134 lines not on this page · raw message
include/net/netfilter/nf_conntrack_expect.h +27 -11
Lines of this file are not shown. View the raw message.
include/uapi/linux/netfilter/nf_conntrack_common.h +4 -0
Lines of this file are not shown. View the raw message.
net/atm/lec.c +47 -25
72 lines not on this page · raw message
net/core/dev.c +45 -25
70 lines not on this page · raw message
net/core/rtnetlink.c +29 -22
51 lines not on this page · raw message
net/ipv4/inet_connection_sock.c +30 -38
68 lines not on this page · raw message
net/netfilter/nf_conntrack_netlink.c +34 -69
103 lines not on this page · raw message
net/netfilter/nf_flow_table_offload.c +130 -66
196 lines not on this page · raw message
tools/testing/selftests/net/mptcp/mptcp_join.sh +14 -0
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.