Skip to contentSkip to conversation

Linux 6.1.168

DISCUSSION Greg Kroah-Hartman 1 participant 2 messages Apr 11 Stable branch

lore
Share & tools
lore

Greg Kroah-Hartman

author maintainer
#0 lore raw

I'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

author maintainer
#1 lore raw
Documentation/admin-guide/kernel-parameters.txt +3 -0
index b026eb1c4c7d..33744e931489 100644
@@ -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
index fc4873deb76f..8f4759030a8c 100644
@@ -65,7 +65,7 @@ then:
   required:
     - refresh-rate-hz
 
-additionalProperties: false
+unevaluatedProperties: false
 
 examples:
   - |
Documentation/devicetree/bindings/gpio/microchip,mpfs-gpio.yaml +2 -2
index d481e78958a7..2c7355e9547a 100644
@@ -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
index 1c85a2af92bf..375f6d6e03a7 100644
@@ -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
index fe0422248dc5..266b62a46f49 100644
@@ -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
index 25ec9cedbde6..069f3a86181b 100644
@@ -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
index 3f1e49bfe38f..26e9119e8a1d 100644
@@ -63,6 +63,10 @@ expander2: gpio@27 {
 	};
 };
 
+&reg_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
index 9ea28941068d..0ed3475feb16 100644
@@ -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 = <&reg_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
index 54e00ee631a0..f11b993dece6 100644
@@ -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
index 4c2483f410c2..92b3778bb56f 100644
@@ -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
index 9da1fbe4a2d7..d9631f3b6460 100644
@@ -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
index dcb625404938..ebfed8705b57 100644
@@ -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
index 1d83b3696721..eb737c7a563b 100644
@@ -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
index 82de2a7c4160..94a7a4fea120 100644
@@ -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
index dc2355c623d6..05818f919d27 100644
@@ -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
index 143747c45206..48ddbc547bd9 100644
@@ -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
index 19c9087e2b84..e702e273f0df 100644
@@ -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
index 04d060f37053..ed5ba38bec86 100644
@@ -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
index e3b00f05a253..b0d0376940ba 100644
@@ -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
index a9697541d67f..f480b6ddba5e 100644
@@ -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
index c74e8273511a..c2418e9fb45a 100644
@@ -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
index d6f5dcdce748..435c32373cd6 100644
@@ -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
index 4b7a7d9e198e..1bb0ab702c98 100644
@@ -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
index 922f559a3e59..e4d4a4e744a4 100644
@@ -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
index fd6471e764f1..3c9e4a6f24aa 100644
@@ -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
index bc89790ff0de..6d8ed7683a38 100644
@@ -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
index cc5ce7a984f6..25d713856a10 100644
@@ -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
index 5abc01a2acf7..a5ef57b27bf2 100644
@@ -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
index ce4cde140518..01a406b885b3 100644
@@ -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
index 03ba2fd18a21..d066dc303520 100644
@@ -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
index 9aea02b86ed9..5fc95e92aff3 100644
@@ -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
index 076b15097afd..2f2ea029cffc 100644
@@ -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
index 9fa902529a8e..e01ab5311d23 100644
@@ -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
index b6bd0ff35323..efdcc4ab4334 100644
@@ -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
index c8bca3e77bce..00a26fa6292c 100644
@@ -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
index 168c23fd7fca..1462d59277bd 100644
@@ -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
index 9b07474f450b..622cc47c6a18 100644
@@ -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
index 188f6b8625f7..8b72e2664008 100644
@@ -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
index 0689464c4816..ea222e1654ab 100644
@@ -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
index 330d1404988c..d58c8e452ca3 100644
@@ -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
index 4f75a9efb610..6fb8be042ed7 100644
@@ -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
index 5d82891c3222..c3507ab2c35b 100644
@@ -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
index 74443f57f62d..8595f7e7fc34 100644
@@ -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
index 0dff3f557e63..742ff0c86e0f 100644
@@ -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
index ff301fd25725..a95e47ce6d1e 100644
@@ -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
index 99d0dbf62af3..d5df2745f3da 100644
@@ -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
index 474f563c23a4..e1bd1744bf30 100644
@@ -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
index b6c2cb7153fd..003950894362 100644
@@ -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
index 3837394f29a0..614f2adab563 100644
@@ -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
index 755926fa0bf7..58a103073fbc 100644
@@ -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
index 87d56f0fc888..e4eb7c0dbf83 100644
@@ -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
index 525238fefc1f..8ed1f6923ab5 100644
@@ -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
index 0bbb8ae9341c..19181e6e5efd 100644
@@ -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
index 4b73c7b27e9a..1715fafc4152 100644
@@ -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
index 52bee5de2988..12d5d7297b5c 100644
@@ -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
index 81b9d813655a..de91996886db 100644
@@ -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
index e50f9603d189..3dfdf91a5085 100644
@@ -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
index 850d76d9114c..7e25e6fb915a 100644
@@ -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
index fcee83ebad55..d81d7116aa26 100644
@@ -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
index f66d67402e43..69b6ba343032 100644
@@ -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
index 140a3164104f..8480d5604cf4 100644
@@ -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
index a77f1a8348ff..3e98a7110cbe 100644
@@ -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
index 98f17c29da69..7b58b418b8a8 100644
@@ -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
index f5a68059f0a6..4aba6f7dcd40 100644
@@ -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
index db954c6faa2f..05c9fe525154 100644
@@ -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
index 2522ff1cc462..49fbfe1cef68 100644
@@ -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
index 691b9ed7f759..f72863aefcad 100644
@@ -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
index d236e4a27ca9..98a3849c39bf 100644
@@ -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
index d0139a696d43..1eb219fa0d45 100644
@@ -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
index de0182a5652c..c2eb312b69f2 100644
@@ -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
index 5c3da910b5b2..a035b04b43ce 100644
@@ -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
index d492aa93a7c3..0cf55ec6d0b4 100644
@@ -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
index 775ab17e51f9..50f1d619d563 100644
@@ -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
index addb8f2d8939..ebcbe7165e96 100644
@@ -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
index 6876ec25bc51..b349d0c92e47 100644
@@ -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
index 6d549dbdb467..98c669ad5141 100644
@@ -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
index 8e5236142aac..5e8c11fc5912 100644
@@ -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
index 412a821148d7..f29dc2d36219 100644
@@ -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
index f66d22de5168..34e249e0e586 100644
@@ -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
index 7adc46aa75e6..24beffc893a0 100644
@@ -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
index c8369e3752b0..d4623a41f013 100644
@@ -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
index 99422c0b4a26..8cb4c759b165 100644
@@ -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
index bcaa2f66dd82..49c524304a41 100644
@@ -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
index bd31748aae1b..d442b386a664 100644
@@ -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
index 64dcfac9ce72..fbeea3e53910 100644
@@ -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
index b8feaf0f5c4c..a372cb13aa08 100644
@@ -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
index 07b5c86fc26a..67c1afc1df8f 100644
@@ -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
index 7ed77a8304e6..c15d7dfce21e 100644
@@ -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
index deb94c26c605..a27f10767867 100644
@@ -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
index 6234a3c711c5..8ebdf3977187 100644
@@ -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/usb/r8152.c +1 -0
index fef3e3fd26e6..15979cd7d15a 100644

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

drivers/net/veth.c +1 -1
index ce90b093bb45..e1e8c825483a 100644

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

drivers/net/virtio_net.c +1 -0
index 9ee3465082c5..b62b76963137 100644

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

drivers/net/vxlan/vxlan_core.c +6 -4
index 9c3a12feb25d..6ad59c8afdcf 100644

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

drivers/net/wireless/intel/iwlwifi/mvm/d3.c +1 -1
index f8af851474e5..1425763fec4e 100644

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

drivers/net/wireless/microchip/wilc1000/hif.c +1 -1
index 420a3998d9ab..4dbd0f86a71e 100644

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

drivers/net/wireless/virt_wifi.c +0 -1
index fb4d95a027fe..eac4838807c7 100644

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

drivers/net/wwan/wwan_core.c +1 -1
index 7089cb103885..2b01fc351747 100644

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

drivers/nfc/pn533/uart.c +3 -0
index 07596bf5f7d6..026d5ef825b5 100644

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

drivers/nvme/host/apple.c +1 -0
index 262d2b60ac6d..c5fc293c2212 100644

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

drivers/nvme/host/core.c +14 -2
index 9df33b293ee3..09439fa7d083 100644

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

drivers/nvme/host/fabrics.c +2 -2
index fe621028a082..24d3c6f0580a 100644

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

drivers/nvme/host/pci.c +16 -9
index 518f8c5012bd..91f3ed726e70 100644

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

drivers/phy/ti/phy-j721e-wiz.c +2 -0
index 6a63380f6a71..c4ff31d0df19 100644

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

drivers/pinctrl/mediatek/pinctrl-mtk-common.c +6 -3
index f25b3e09386b..096213d61883 100644

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

drivers/platform/olpc/olpc-xo175-ec.c +1 -1
index 4823bd2819f6..8ecb7048bcc4 100644

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

drivers/platform/x86/intel/hid.c +13 -0
index 051f2bb786e9..761d88929ef9 100644

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

drivers/platform/x86/touchscreen_dmi.c +18 -0
index 427c590102a1..4612370b4346 100644

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

drivers/scsi/ibmvscsi/ibmvfc.c +2 -1
index 013f5c05e9f3..214b63314831 100644

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

drivers/scsi/scsi_sysfs.c +1 -0
index 456b92c3a781..af81b2ba0c9b 100644

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

drivers/scsi/scsi_transport_sas.c +1 -1
index 5a19de2c7006..f11e74abb48c 100644

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

drivers/scsi/ses.c +1 -1
index 92b3fd10058d..38eac74f7f75 100644

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

drivers/spi/spi-fsl-lpspi.c +2 -1
index c0e15d8a913d..b3e6dcdb47f6 100644

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/thunderbolt/nhi.c +1 -1
index 342ca5bba5fe..e71ad464b5c0 100644

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

drivers/ufs/core/ufshcd.c +2 -0
index f72ba0b20643..a39ffc62d88a 100644

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

drivers/usb/cdns3/cdns3-gadget.c +4 -0
index c12d7f040171..19830cdf8588 100644

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

drivers/usb/class/cdc-acm.c +9 -0
index eaf5aa166510..852b06157bc5 100644

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

drivers/usb/class/cdc-acm.h +1 -0
index 76f73853a60b..25fd5329a878 100644

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

drivers/usb/class/usbtmc.c +3 -0
index 8cf341a24834..bf8690bb654f 100644

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

drivers/usb/common/ulpi.c +2 -3
index 1283c427cdf8..da543d7634ad 100644

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

drivers/usb/core/config.c +5 -1
index 4ca54506a1ac..de9e88556398 100644

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

drivers/usb/core/quirks.c +8 -0
index c12942a533ce..7442ac03f5ff 100644

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

drivers/usb/dwc2/gadget.c +2 -0
index d4ca1677ad23..cd80abdb02f7 100644

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

drivers/usb/gadget/function/f_rndis.c +6 -3
index 1dbda4e98ac4..57c2246d0a4a 100644

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

drivers/usb/gadget/function/f_subset.c +6 -0
index 51c1cae162d9..447e94c83c7b 100644

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

drivers/usb/gadget/function/f_uac1_legacy.c +37 -10

47 lines not on this page · raw message

drivers/usb/gadget/function/f_uvc.c +36 -3
index 4419b7972e78..fe306f7e42e0 100644

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

drivers/usb/gadget/function/uvc.h +3 -0
index 40226b1f7e14..5ba11ff387d7 100644

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

drivers/usb/gadget/function/uvc_v4l2.c +4 -1
index 5aeeaff7b283..6b646f3cf620 100644

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

drivers/usb/gadget/udc/dummy_hcd.c +26 -16

42 lines not on this page · raw message

drivers/usb/host/ehci-brcm.c +2 -2
index 6a0f64c9e5e8..be21c85ab2ef 100644

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

drivers/usb/serial/io_edgeport.c +3 -0
index 67c0c51603e5..408b774cc223 100644

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

drivers/usb/serial/io_usbvend.h +1 -0
index 9a6f742ad3ab..c82a275e8e76 100644

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

drivers/usb/serial/option.c +4 -0
index 12be1ed6a56c..66fe2a1d03fb 100644

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

fs/btrfs/block-group.c +1 -1
index 880288d7358e..1f9fbec887c0 100644

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

fs/btrfs/disk-io.c +2 -2
index cf124944302f..203ff9bbad43 100644

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

fs/btrfs/inode.c +5 -1
index 2b4a66736722..6a5364b466be 100644

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

fs/btrfs/ioctl.c +7 -0
index e491c7f3ec35..835ce2030410 100644

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

fs/btrfs/tree-checker.c +17 -0
index cafd7055ab09..0b1ab9b6b84b 100644

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

fs/btrfs/volumes.c +3 -2
index d06709ced0f3..9f5d5f5c5313 100644

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

fs/btrfs/zoned.c +4 -2
index ba03ea17a10f..4e2ed51297ea 100644

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

fs/erofs/data.c +2 -0
index 7b648bec61fd..302e824827fc 100644

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

fs/erofs/zdata.c +38 -32

70 lines not on this page · raw message

fs/ext4/crypto.c +8 -1
index 453d4da5de52..8292494a9b6c 100644

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

fs/ext4/ext4.h +5 -5
index 7449777fabc3..b1a4fcfdb548 100644

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

fs/ext4/extents.c +140 -172

312 lines not on this page · raw message

fs/ext4/extents_status.c +6 -6
index 862a8308cd9b..592229027af7 100644

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

fs/ext4/extents_status.h +2 -2
index 1d1247bbfd47..481ec4381bee 100644

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

fs/ext4/fast_commit.c +14 -11
index 83a0a78a124a..49076dedd591 100644

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

fs/ext4/ialloc.c +6 -0
index dcaa716d02fc..be057f7ddc24 100644

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

fs/ext4/inline.c +10 -2
index c15ea7589945..a1fb99d2b472 100644

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

fs/ext4/inode.c +29 -6
index 79619f3db984..2d30d0a9473d 100644

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

fs/ext4/mballoc.c +15 -15
index e204f16e33ad..df6fa0a56855 100644

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

fs/ext4/migrate.c +2 -3
index 7a0e429507cf..0be0467ae6dd 100644

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

fs/ext4/move_extent.c +3 -4
index 0aff07c570a4..e01632462db9 100644

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

fs/ext4/super.c +85 -79

164 lines not on this page · raw message

fs/ext4/sysfs.c +9 -1
index e2b8b3437c58..6facefe42c06 100644

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

fs/gfs2/lock_dlm.c +5 -5
index 588760c1a5da..4f44173e8a36 100644

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

fs/jbd2/checkpoint.c +13 -2
index 2c1751c637c8..10ce0b6b4ffa 100644

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

fs/smb/server/smb2pdu.c +52 -20

72 lines not on this page · raw message

fs/xfs/xfs_attr_item.c +2 -2
index 4a712f1565c1..f947b58e9af4 100644

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

fs/xfs/xfs_dquot_item.c +7 -2
index 7d19091215b0..74449aec81ed 100644

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

fs/xfs/xfs_inode_item.c +7 -2
index a734ca8d8f03..36f25a138e3b 100644

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

fs/xfs/xfs_mount.c +4 -3
index fb87ffb48f7f..f54545fdc306 100644

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

fs/xfs/xfs_trace.c +1 -0
index d269ef57ff01..dcf9af0108c1 100644

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

fs/xfs/xfs_trace.h +32 -4
index a9e3081b6625..a7245de495a5 100644

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

fs/xfs/xfs_trans_ail.c +19 -7
index f51df7d94ef7..fc2cbac4a8b7 100644

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

include/acpi/acpixf.h +74 -60

134 lines not on this page · raw message

include/linux/dma-mapping.h +2 -2
index af3f39ecc1b8..5846e43779dc 100644

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

include/linux/netdevice.h +0 -2
index 1c47ab59a2c7..e0df5fc67279 100644

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

include/linux/netfilter/ipset/ip_set.h +1 -1
index 0b217d4ae2a4..d82413e6098a 100644

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

include/linux/rtnetlink.h +5 -4
index f532d1eda761..9494b7647e81 100644

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

include/linux/swapops.h +15 -5
index 1f59f9edcc24..7de89a03b72e 100644

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

include/linux/usb/quirks.h +3 -0
index 2f7bd2fdc616..b3cc7beab4a3 100644

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

include/linux/usb/r8152.h +1 -0
index 2ca60828f28b..1502b2a355f9 100644

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

include/net/inet_hashtables.h +14 -0
index ddfa2e67fdb5..ce58cf10ecb4 100644

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

include/net/netfilter/nf_conntrack_expect.h +27 -11
index f642a87ea330..e9a8350e7ccf 100644

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

include/net/netlink.h +14 -7
index a686c9041ddc..df8012ef85f1 100644

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

include/net/rtnetlink.h +3 -2
index fdc7b4ce0ef7..0bd400be3f8d 100644

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

include/uapi/linux/dma-buf.h +1 -0
index 5a6fda66d9ad..e827c9d20c5d 100644

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

include/uapi/linux/netfilter/nf_conntrack_common.h +4 -0
index 26071021e986..56b6b60a814f 100644

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

kernel/bpf/btf.c +20 -4
index 9f9996cdb6e2..d9f6ad515d89 100644

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

kernel/bpf/verifier.c +8 -2
index 74c56ed5ddcb..d8d3616abceb 100644

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

kernel/dma/swiotlb.c +19 -2
index db89ac94e7db..b5c8ba23ff62 100644

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

kernel/futex/pi.c +2 -1
index ce2889f12375..9496084b6dcd 100644

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

kernel/module/main.c +7 -0
index 3269f6c46814..6b3cffd9f8a8 100644

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

kernel/sysctl.c +1 -1
index c6d9dec11b74..eaa2691caf49 100644

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

kernel/time/alarmtimer.c +1 -1
index 7e5dff602585..217271324f6d 100644

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

kernel/trace/trace_osnoise.c +4 -4
index e5929cb3840f..676d9a3e65cd 100644

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

lib/nlattr.c +6 -0
index 86344df0ccf7..cf5f0dc3e47d 100644

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

mm/damon/sysfs.c +3 -0
index a5a1e90e53e7..bdcf895a29a7 100644

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/atm/lec.h +1 -1
index be0e2667bd8c..ec85709bf818 100644

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

net/bluetooth/eir.c +4 -3
index 3e1713673ecc..3f72111ba651 100644

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

net/bluetooth/eir.h +1 -1
index 0df19f2f4af9..4497f8fd5fef 100644

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

net/bluetooth/hci_event.c +20 -13
index f713a9a27e93..1f05204ae1fe 100644

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

net/bluetooth/hci_sync.c +3 -2
index 01b23fc71e61..c6f9d07a4819 100644

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

net/bluetooth/l2cap_core.c +21 -7
index 3dfaf7044edd..8a2d36f5cf33 100644

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

net/bluetooth/l2cap_sock.c +3 -0
index fbad03527905..a054cc2d05b6 100644

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

net/bluetooth/mgmt.c +14 -3
index b89c3fc364b8..c4f5268d5c50 100644

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

net/bluetooth/sco.c +28 -8
index cf53d483dd07..eebbbe6deacd 100644

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

net/bluetooth/smp.c +6 -5
index 4241d39393f3..85bd00479a74 100644

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

net/bridge/br_arp_nd_proxy.c +11 -7
index b45c00c01dea..f507437e784f 100644

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

net/can/af_can.c +2 -2
index bbd8e959137d..851d2c90901c 100644

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

net/can/af_can.h +1 -1
index 22f3352c77fe..87887014f562 100644

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

net/can/gw.c +3 -3
index 5933423663cd..67189a6c2bba 100644

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

net/can/proc.c +2 -1
index 25fdf060e30d..2f78ea8ac30b 100644

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

net/core/dev.c +45 -25

70 lines not on this page · raw message

net/core/dev.h +7 -0
index db9ff8cd8d46..c1e4a39c4078 100644

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

net/core/rtnetlink.c +29 -22

51 lines not on this page · raw message

net/hsr/hsr_device.c +17 -15
index 81eaae4c19da..48f34ad9219f 100644

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

net/ipv4/esp4.c +7 -4
index a40f78a6474c..95575bf78d5c 100644

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

net/ipv4/inet_connection_sock.c +30 -38

68 lines not on this page · raw message

net/ipv4/inet_hashtables.c +2 -1
index 24e4bec52bb2..de0f16ae35b3 100644

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

net/ipv4/ip_gre.c +1 -1
index b90241aff93c..2c1228ddaa22 100644

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

net/ipv4/udp.c +1 -1
index da96252dd8a1..d50c2b67c08d 100644

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

net/ipv6/addrconf.c +3 -3
index d6a33452dd36..801ecec3c15b 100644

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

net/ipv6/datagram.c +10 -0
index e70ace403bbd..4b8b9626428c 100644

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

net/ipv6/esp6.c +7 -4
index 48963fc9057b..76699ec88370 100644

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

net/ipv6/icmp.c +3 -0
index ea1cdacbdcf1..80eabb22d144 100644

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

net/ipv6/ioam6.c +2 -2
index a35b6fdbc93e..a1953cf6131b 100644

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

net/ipv6/ip6_flowlabel.c +0 -5
index 18481eb76a0a..eb0d517aa6cb 100644

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

net/ipv6/ip6_tunnel.c +5 -0
index 8ce36fcc3dd5..a1a2e785063c 100644

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

net/ipv6/ndisc.c +3 -0
index affbf12d44f5..f1c4c4dbefb0 100644

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

net/ipv6/netfilter/ip6t_rt.c +4 -0
index 4ad8b2032f1f..5561bd9cea81 100644

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

net/ipv6/xfrm6_output.c +2 -2
index ad07904642ca..ff183bd76c99 100644

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

net/key/af_key.c +12 -7
index 0fcd348c249f..169045f59563 100644

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

net/mptcp/pm_netlink.c +1 -1
index 5d8dada1dbbb..92ca81a5df67 100644

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

net/netfilter/ipset/ip_set_core.c +2 -2
index 56215fb63b64..f4f65fa948ff 100644

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

net/netfilter/ipset/ip_set_hash_gen.h +1 -1
index 1f9ca5040982..da7956e2f8d8 100644

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

net/netfilter/ipset/ip_set_list_set.c +2 -2
index 5cc35b553a04..7d1ba6ad514f 100644

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

net/netfilter/nf_conntrack_broadcast.c +6 -2
index 9fb9b8031298..d44d9379a8a0 100644

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

net/netfilter/nf_conntrack_expect.c +25 -4
index 81ca348915c9..70bcddfc17cc 100644

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

net/netfilter/nf_conntrack_h323_main.c +6 -6
index ed983421e2eb..791aafe9f396 100644

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

net/netfilter/nf_conntrack_helper.c +7 -6
index 5545016c107d..6a2ad31ac62f 100644

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

net/netfilter/nf_conntrack_netlink.c +34 -69

103 lines not on this page · raw message

net/netfilter/nf_conntrack_proto_tcp.c +3 -7
index 9480e638e5d1..8bce2191873a 100644

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

net/netfilter/nf_conntrack_sip.c +12 -6
index 657839a58782..fda6fc1fc4c5 100644

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

net/netfilter/nf_flow_table_offload.c +130 -66

196 lines not on this page · raw message

net/netfilter/nf_tables_api.c +5 -2
index 7a862290f1b2..fb3d529ebf5a 100644

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

net/netfilter/nfnetlink_log.c +3 -7
index 200a82a8f943..6bf7d7bea1fc 100644

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

net/netfilter/x_tables.c +23 -0
index c842ec693dad..650cb725ba27 100644

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

net/netfilter/xt_cgroup.c +6 -0
index c0f5e9a4f3c6..bfc98719684e 100644

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

net/netfilter/xt_rateest.c +5 -0
index 72324bd976af..b1d736c15fcb 100644

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

net/nfc/nci/core.c +6 -4
index cdc1aa866254..ed629c6880b7 100644

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

net/openvswitch/flow_netlink.c +2 -0
index d4c8b4aa98b1..d85432d977f2 100644

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

net/openvswitch/vport-geneve.c +1 -1
index 89a8e1501809..b10e1602c6b1 100644

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

net/openvswitch/vport-gre.c +1 -1
index e6b5e76a962a..4014c9b5eb79 100644

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

net/openvswitch/vport-netdev.c +9 -4
index 7126ff104550..68d38c12427c 100644

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

net/openvswitch/vport-vxlan.c +1 -1
index 188e9c1360a1..0b881b043bcf 100644

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

net/packet/af_packet.c +1 -0
index 8c06e3e6b52b..502d2f6de18a 100644

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

net/qrtr/af_qrtr.c +13 -18
index a59e1b2fea1c..3831eb25e240 100644

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

net/rds/ib_rdma.c +6 -1
index 8f070ee7e742..30fca2169aa7 100644

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

net/sched/cls_api.c +1 -0
index e5d4e64ce479..0ccd8bf57a93 100644

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

net/sched/cls_flow.c +9 -1
index 7657d86ad142..64b281cca6ae 100644

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

net/sched/cls_fw.c +12 -2
index 6160ef7d646a..366bcc960e43 100644

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

net/sched/sch_hfsc.c +2 -2
index 302413e0acef..a01ff859cc03 100644

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

net/smc/smc_rx.c +8 -1
index e57002d2ac37..8f838ddeaafe 100644

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

net/tls/tls_sw.c +1 -1
index e7f151c98eb9..4948af3bad13 100644

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

net/x25/x25_in.c +6 -3
index b981a4828d08..e47ebd8acd21 100644

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

net/x25/x25_subr.c +1 -0
index 0285aaa1e93c..159708d9ad20 100644

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

net/xfrm/xfrm_interface_core.c +1 -1
index 45466fa4ace4..87983f963f4f 100644

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

net/xfrm/xfrm_output.c +4 -3
index c59c548d8fc1..290059d9e08e 100644

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

net/xfrm/xfrm_policy.c +1 -1
index e015ff225b27..cd534803a0e4 100644

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

net/xfrm/xfrm_state.c +1 -0
index 38d9b0b5cc5d..7dd536d5f43f 100644

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

sound/pci/ctxfi/ctdaio.c +1 -0
index 7fc720046ce2..4e4c780bfa9d 100644

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

sound/pci/hda/patch_realtek.c +2 -0
index 89410d40561d..9d6b3a6b8ed2 100644

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

sound/soc/cirrus/ep93xx-i2s.c +32 -8
index 982151330c89..f5034b03740f 100644

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

sound/soc/codecs/adau1372.c +24 -10
index a9f89e8565ec..1a4ab7c993d2 100644

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

sound/soc/fsl/fsl_easrc.c +10 -4
index 210ca7199ada..cbe1f48a58d2 100644

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

sound/soc/intel/catpt/device.c +9 -1
index d5d08bd766c7..4783876ed56f 100644

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

sound/soc/intel/catpt/dsp.c +0 -3
index 346bec000306..3cde6b7ae923 100644

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

sound/usb/caiaq/device.c +1 -1
index d5c01d3f126e..910b2ee83a17 100644

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

tools/objtool/check.c +2 -3
index bf75628c5389..2754e46f0e5a 100644

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

tools/testing/selftests/net/mptcp/mptcp_join.sh +14 -0
index 80497053fe2f..973f76557f23 100755

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.