Skip to contentSkip to conversation

Linux 5.10.181

DISCUSSION Greg Kroah-Hartman 1 participant 2 messages May 30, 2023 Stable branch

lore
Share & tools
lore

Greg Kroah-Hartman

author maintainer
#0 lore raw

I'm announcing the release of the 5.10.181 kernel.

All users of the 5.10 kernel series must upgrade.

The updated 5.10.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-5.10.y
and can be browsed at the normal kernel.org git web browser:
https://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary

thanks,

greg k-h

------------

 Documentation/devicetree/bindings/usb/cdns,usb3.yaml        |    2 
 Makefile                                                    |    2 
 arch/arm/boot/dts/stm32mp15-pinctrl.dtsi                    |    2 
 arch/arm/mach-sa1100/jornada720_ssp.c                       |    5 
 arch/arm64/boot/dts/freescale/imx8mn-var-som.dtsi           |    8 
 arch/arm64/boot/dts/qcom/msm8996.dtsi                       |    3 
 arch/arm64/include/asm/hyp_image.h                          |    3 
 arch/arm64/kernel/image-vars.h                              |   11 
 arch/arm64/kvm/hyp/nvhe/Makefile                            |    4 
 arch/m68k/kernel/signal.c                                   |   14 
 arch/parisc/include/asm/cacheflush.h                        |    5 
 arch/parisc/kernel/cache.c                                  |    5 
 arch/parisc/kernel/process.c                                |   11 
 arch/parisc/kernel/traps.c                                  |    4 
 arch/powerpc/mm/book3s64/radix_pgtable.c                    |    4 
 arch/x86/include/asm/intel-family.h                         |    5 
 arch/x86/kernel/cpu/topology.c                              |    5 
 arch/x86/kernel/dumpstack.c                                 |    7 
 arch/x86/mm/init.c                                          |   25 +
 drivers/acpi/acpica/dbnames.c                               |    3 
 drivers/acpi/acpica/dswstate.c                              |   11 
 drivers/acpi/ec.c                                           |    1 
 drivers/base/core.c                                         |    7 
 drivers/base/regmap/regcache.c                              |    6 
 drivers/block/null_blk/main.c                               |    5 
 drivers/bluetooth/btbcm.c                                   |   47 ++
 drivers/char/tpm/tpm_tis.c                                  |   16 
 drivers/clk/tegra/clk-tegra20.c                             |   28 -
 drivers/firmware/arm_sdei.c                                 |   37 +
 drivers/gpio/gpio-mockup.c                                  |    2 
 drivers/gpu/drm/amd/display/dc/bios/bios_parser2.c          |    7 
 drivers/gpu/drm/amd/display/dc/dce/dce_transform.c          |    5 
 drivers/gpu/drm/drm_mipi_dsi.c                              |    2 
 drivers/gpu/drm/exynos/exynos_drm_g2d.h                     |    4 
 drivers/gpu/drm/i915/display/intel_dp.c                     |    5 
 drivers/gpu/drm/msm/disp/dpu1/dpu_hw_intf.c                 |    5 
 drivers/gpu/drm/msm/dp/dp_audio.c                           |   12 
 drivers/gpu/drm/msm/dp/dp_audio.h                           |    2 
 drivers/gpu/drm/msm/dp/dp_display.c                         |    1 
 drivers/gpu/drm/tegra/sor.c                                 |    2 
 drivers/hid/hid-logitech-hidpp.c                            |   53 ++
 drivers/hid/wacom.h                                         |    3 
 drivers/hid/wacom_sys.c                                     |    2 
 drivers/hid/wacom_wac.c                                     |   80 ++--
 drivers/hwtracing/coresight/coresight-tmc-etr.c             |    2 
 drivers/infiniband/core/user_mad.c                          |   23 -
 drivers/input/joystick/xpad.c                               |    5 
 drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c                 |   19 
 drivers/iommu/arm/arm-smmu/arm-smmu-qcom.c                  |   16 
 drivers/mcb/mcb-pci.c                                       |   27 +
 drivers/media/pci/netup_unidvb/netup_unidvb_core.c          |    2 
 drivers/media/radio/radio-shark.c                           |   10 
 drivers/media/radio/radio-shark2.c                          |   10 
 drivers/memstick/host/r592.c                                |    2 
 drivers/message/fusion/mptlan.c                             |    2 
 drivers/mfd/dln2.c                                          |    1 
 drivers/net/bonding/bond_main.c                             |    8 
 drivers/net/can/kvaser_pciefd.c                             |   51 +-
 drivers/net/ethernet/3com/3c589_cs.c                        |   11 
 drivers/net/ethernet/broadcom/genet/bcmgenet.c              |    9 
 drivers/net/ethernet/freescale/fec_main.c                   |   15 
 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c     |   15 
 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_tm.c       |    4 
 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_tm.h       |    5 
 drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c   |    5 
 drivers/net/ethernet/intel/igb/e1000_mac.c                  |    4 
 drivers/net/ethernet/marvell/octeontx2/nic/otx2_txrx.c      |    4 
 drivers/net/ethernet/mellanox/mlx5/core/en_txrx.c           |   16 
 drivers/net/ethernet/mellanox/mlx5/core/lib/devcom.c        |    3 
 drivers/net/ethernet/mellanox/mlx5/core/main.c              |    2 
 drivers/net/ethernet/mellanox/mlx5/core/steering/dr_ste.c   |    3 
 drivers/net/ethernet/nvidia/forcedeth.c                     |    1 
 drivers/net/ethernet/pasemi/pasemi_mac.c                    |    2 
 drivers/net/ethernet/sun/cassini.c                          |    2 
 drivers/net/ipvlan/ipvlan_core.c                            |    6 
 drivers/net/mdio/mdio-mvusb.c                               |   11 
 drivers/net/phy/dp83867.c                                   |   22 +
 drivers/net/phy/mscc/mscc_main.c                            |    1 
 drivers/net/tap.c                                           |   10 
 drivers/net/team/team.c                                     |    7 
 drivers/net/usb/cdc_ncm.c                                   |   24 -
 drivers/net/wireless/ath/ath.h                              |   12 
 drivers/net/wireless/ath/ath11k/dp_rx.c                     |    9 
 drivers/net/wireless/ath/key.c                              |    2 
 drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c |   13 
 drivers/net/wireless/intel/iwlwifi/dvm/sta.c                |    5 
 drivers/net/wireless/intel/iwlwifi/mvm/nvm.c                |   10 
 drivers/net/wireless/intel/iwlwifi/pcie/drv.c               |    3 
 drivers/net/wireless/intel/iwlwifi/pcie/trans.c             |    2 
 drivers/phy/st/phy-miphy28lp.c                              |   42 --
 drivers/power/supply/bq27xxx_battery.c                      |   41 +-
 drivers/power/supply/bq27xxx_battery_i2c.c                  |    3 
 drivers/power/supply/power_supply_leds.c                    |    5 
 drivers/power/supply/sbs-charger.c                          |    2 
 drivers/remoteproc/stm32_rproc.c                            |    8 
 drivers/s390/cio/qdio.h                                     |   25 -
 drivers/s390/cio/qdio_main.c                                |   62 +--
 drivers/scsi/lpfc/lpfc_debugfs.c                            |    7 
 drivers/scsi/storvsc_drv.c                                  |    8 
 drivers/spi/spi-fsl-cpm.c                                   |   23 +
 drivers/spi/spi-fsl-spi.c                                   |   53 +-
 drivers/spi/spi-imx.c                                       |   24 -
 drivers/staging/rtl8192e/rtl8192e/rtl_core.c                |    6 
 drivers/staging/rtl8192e/rtl8192e/rtl_core.h                |    5 
 drivers/target/iscsi/iscsi_target.c                         |    6 
 drivers/tty/serial/8250/8250_core.c                         |    1 
 drivers/tty/serial/8250/8250_exar.c                         |   68 ++-
 drivers/tty/serial/8250/8250_pci.c                          |    5 
 drivers/tty/serial/arc_uart.c                               |    7 
 drivers/tty/vt/vc_screen.c                                  |   11 
 drivers/usb/class/usbtmc.c                                  |    2 
 drivers/usb/core/usb.c                                      |   76 +++
 drivers/usb/dwc3/debugfs.c                                  |  109 +++++
 drivers/usb/gadget/function/u_ether.c                       |    3 
 drivers/usb/host/uhci-pci.c                                 |   10 
 drivers/usb/misc/sisusbvga/sisusb.c                         |   14 
 drivers/usb/storage/scsiglue.c                              |   28 +
 drivers/usb/typec/altmodes/displayport.c                    |    4 
 drivers/usb/typec/tcpm/tcpm.c                               |   16 
 drivers/video/fbdev/arcfb.c                                 |   15 
 drivers/video/fbdev/udlfb.c                                 |   13 
 drivers/watchdog/sp5100_tco.c                               |    4 
 drivers/xen/pvcalls-back.c                                  |    9 
 fs/btrfs/disk-io.c                                          |   64 +++
 fs/btrfs/disk-io.h                                          |    2 
 fs/btrfs/free-space-cache.c                                 |    7 
 fs/btrfs/inode-map.c                                        |   55 --
 fs/btrfs/inode-map.h                                        |    3 
 fs/btrfs/inode.c                                            |   12 
 fs/ceph/snap.c                                              |   13 
 fs/ext2/ext2.h                                              |    1 
 fs/ext2/super.c                                             |    7 
 fs/ext4/balloc.c                                            |   18 
 fs/ext4/ext4.h                                              |   25 -
 fs/ext4/ialloc.c                                            |   12 
 fs/ext4/mballoc.c                                           |  238 ++++++++----
 fs/ext4/mmp.c                                               |   39 +
 fs/ext4/super.c                                             |   28 -
 fs/ext4/sysfs.c                                             |    2 
 fs/f2fs/checkpoint.c                                        |   12 
 fs/f2fs/data.c                                              |    3 
 fs/gfs2/glops.c                                             |    3 
 fs/hfsplus/inode.c                                          |   28 +
 fs/nilfs2/inode.c                                           |   18 
 fs/ocfs2/namei.c                                            |    2 
 fs/ocfs2/xattr.c                                            |   30 +
 fs/statfs.c                                                 |    4 
 include/linux/cpuhotplug.h                                  |    1 
 include/linux/device.h                                      |    1 
 include/linux/dim.h                                         |    3 
 include/linux/fs.h                                          |   42 +-
 include/linux/if_team.h                                     |    1 
 include/linux/if_vlan.h                                     |   17 
 include/linux/power/bq27xxx_battery.h                       |    1 
 include/linux/sched/task_stack.h                            |    2 
 include/linux/usb.h                                         |    5 
 include/net/bonding.h                                       |    1 
 include/net/ip_vs.h                                         |    6 
 include/net/netns/ipv4.h                                    |    1 
 include/net/sch_generic.h                                   |    5 
 include/net/sock.h                                          |    2 
 include/net/tcp.h                                           |    1 
 include/net/xfrm.h                                          |    2 
 include/uapi/sound/skl-tplg-interface.h                     |    3 
 kernel/bpf/bpf_local_storage.c                              |   16 
 kernel/bpf/verifier.c                                       |    2 
 kernel/rcu/refscale.c                                       |    2 
 kernel/rcu/tree_exp.h                                       |    6 
 lib/cpu_rmap.c                                              |    5 
 lib/debugobjects.c                                          |    2 
 lib/dim/dim.c                                               |    5 
 lib/dim/net_dim.c                                           |    3 
 lib/dim/rdma_dim.c                                          |    3 
 mm/backing-dev.c                                            |    1 
 net/8021q/vlan_dev.c                                        |    4 
 net/bluetooth/l2cap_core.c                                  |    1 
 net/bridge/br_forward.c                                     |    2 
 net/bridge/br_private_tunnel.h                              |    8 
 net/can/isotp.c                                             |    2 
 net/can/j1939/socket.c                                      |    2 
 net/core/datagram.c                                         |   15 
 net/core/dev.c                                              |    4 
 net/core/skbuff.c                                           |    4 
 net/core/stream.c                                           |   12 
 net/ipv4/af_inet.c                                          |    2 
 net/ipv4/ip_output.c                                        |    2 
 net/ipv4/tcp.c                                              |   23 -
 net/ipv4/tcp_bpf.c                                          |    2 
 net/ipv4/tcp_input.c                                        |    4 
 net/ipv4/tcp_ipv4.c                                         |   68 +--
 net/ipv4/udplite.c                                          |    2 
 net/ipv6/exthdrs_core.c                                     |    2 
 net/ipv6/ip6_gre.c                                          |   13 
 net/ipv6/tcp_ipv6.c                                         |    5 
 net/ipv6/udplite.c                                          |    2 
 net/key/af_key.c                                            |   12 
 net/llc/af_llc.c                                            |    8 
 net/mac80211/trace.h                                        |    2 
 net/netfilter/core.c                                        |    6 
 net/netfilter/ipvs/ip_vs_sync.c                             |    2 
 net/netfilter/nf_conntrack_standalone.c                     |    3 
 net/netfilter/nft_set_rbtree.c                              |   20 -
 net/netlink/af_netlink.c                                    |    8 
 net/nsh/nsh.c                                               |    8 
 net/packet/af_packet.c                                      |    6 
 net/sched/act_mirred.c                                      |   44 +-
 net/smc/smc_close.c                                         |    4 
 net/smc/smc_rx.c                                            |    4 
 net/smc/smc_tx.c                                            |    4 
 net/socket.c                                                |    2 
 net/sunrpc/svc.c                                            |    2 
 net/tipc/bearer.c                                           |   17 
 net/tipc/bearer.h                                           |   13 
 net/tipc/crypto.h                                           |    6 
 net/tipc/link.c                                             |    9 
 net/tipc/name_distr.h                                       |    2 
 net/tipc/name_table.h                                       |    9 
 net/tipc/socket.c                                           |    4 
 net/tipc/subscr.h                                           |   11 
 net/tipc/udp_media.c                                        |    5 
 net/tls/tls_main.c                                          |    3 
 net/unix/af_unix.c                                          |   22 -
 net/vmw_vsock/af_vsock.c                                    |    2 
 net/xfrm/xfrm_interface.c                                   |   54 --
 net/xfrm/xfrm_policy.c                                      |    9 
 samples/bpf/hbm.c                                           |    1 
 scripts/recordmcount.c                                      |    6 
 sound/firewire/digi00x/digi00x-stream.c                     |    4 
 sound/hda/hdac_device.c                                     |    2 
 sound/pci/hda/hda_generic.c                                 |    7 
 sound/pci/hda/patch_ca0132.c                                |    1 
 sound/pci/hda/patch_hdmi.c                                  |    5 
 sound/pci/hda/patch_realtek.c                               |    7 
 sound/usb/format.c                                          |    1 
 tools/power/cpupower/utils/idle_monitor/mperf_monitor.c     |   31 -
 tools/testing/selftests/memfd/fuse_test.c                   |    1 
 tools/testing/selftests/net/fib_tests.sh                    |    2 
 tools/testing/selftests/net/forwarding/tc_actions.sh        |   48 ++
 238 files changed, 2059 insertions(+), 904 deletions(-)

Adam Stylinski (1):
ALSA: hda/ca0132: add quirk for EVGA X299 DARK

Ai Chao (1):
ALSA: hda/realtek: Add a quirk for HP EliteDesk 805

Alain Volmat (1):
phy: st: miphy28lp: use _poll_timeout functions for waits

Alan Stern (5):
USB: usbtmc: Fix direction for 0-length ioctl control messages
fbdev: udlfb: Fix endpoint check
USB: core: Add routines for endpoint checks in old drivers
USB: sisusbvga: Add endpoint checks
media: radio-shark: Add endpoint checks

Aleksandr Loktionov (1):
igb: fix bit_shift to be in [1..8] range

Alexander Stein (1):
regmap: cache: Return error in cache sync operations for REGCACHE_NONE

Andreas Gruenbacher (1):
gfs2: Fix inode height consistency check

Andrew Davis (1):
serial: 8250_exar: Add support for USR298x PCI Modems

Andy Shevchenko (1):
serial: 8250_exar: derive nr_ports from PCI ID for Acces I/O cards

Armin Wolf (1):
ACPI: EC: Fix oops when removing custom query handlers

Arnaud Pouliquen (1):
remoteproc: stm32_rproc: Add mutex protection for workqueue

Arnd Bergmann (3):
clk: tegra20: fix gcc-7 constant overflow warning drm/exynos: fix g2d_open/close helper function definitions
bridge: always declare tunnel functions

Austin Kim (1):
ext4: remove an unused variable warning with CONFIG_QUOTA=n

Badhri Jagan Sridharan (1):
usb: typec: altmodes/displayport: fix pin_assignment_show

Bastien Nocera (2):
HID: logitech-hidpp: Don't use the USB serial for USB devices
HID: logitech-hidpp: Reconcile USB and Unifying serials

Bin Li (1):
ALSA: hda/realtek: Enable headset onLenovo M70/M90

Cezary Rojewski (1):
ASoC: Intel: Skylake: Fix declaration of enum skl_ch_cfg

Chaitanya Kulkarni (1):
null_blk: Always check queue mode setting from configfs

Chao Yu (1):
f2fs: fix to drop all dirty pages during umount() if cp_error is set

Christophe JAILLET (4):
net: mdio: mvusb: Fix an error handling path in mvusb_mdio_probe()
cassini: Fix a memory leak in the error handling path of cas_init_one()
forcedeth: Fix an error handling path in nv_probe() 3c589_cs: Fix an error handling path in tc589_probe()

Christophe Leroy (2):
spi: fsl-spi: Re-organise transfer bits_per_word adaptation
spi: fsl-cpm: Use 16 bit mode for large transfers with even size

Chuck Lever (1):
SUNRPC: Fix trace_svc_register() call site

Chunguang Xu (1):
ext4: remove redundant mb_regenerate_buddy()

Daisuke Nojiri (1):
power: supply: sbs-charger: Fix INHIBITED bit for Status reg

Dan Carpenter (3):
ALSA: firewire-digi00x: prevent potential use after free
coresight: Fix signedness bug in tmc_etr_buf_insert_barrier_packet() xen/pvcalls-back: fix double frees with pvcalls_new_active_socket()

Daniel Gabay (1):
wifi: iwlwifi: pcie: fix possible NULL pointer dereference

Dave Hansen (1):
x86/mm: Avoid incomplete Global INVLPG flushes

David Epping (1):
net: phy: mscc: add VSC8502 to MODULE_DEVICE_TABLE

Davide Caratti (2):
net/sched: act_mirred: better wording on protection against excessive stack growth
act_mirred: use the backlog for nested calls to mirred ingress

Dmitry Bogdanov (1):
scsi: target: iscsit: Free cmds before session free

Dong Chenchen (1):
net: nsh: Use correct mac_offset to unwind gso skb in nsh_gso_segment()

Duoming Zhou (1):
media: netup_unidvb: fix use-after-free at del_timer()

Eli Cohen (1):

      lib: cpu_rmap: Avoid use after free on rmap->obj array entries

Erez Shitrit (1):
net/mlx5: DR, Fix crc32 calculation to work on big-endian (BE) CPUs

Eric Dumazet (9):
netlink: annotate accesses to nlk->cb_running
net: annotate sk->sk_err write from do_recvmmsg()
net: deal with most data-races in sk_wait_event()
net: add vlan_get_protocol_and_depth() helper
tcp: add annotations around sk->sk_shutdown accesses
net: datagram: fix data-races in datagram_poll() ipv4/tcp: do not use per netns ctl sockets
tcp: fix possible sk_priority leak in tcp_v4_send_reset()
vlan: fix a potential uninit-value in vlan_dev_hard_start_xmit()

Filipe Manana (1):
btrfs: fix space cache inconsistency after error loading it from disk

Finn Thain (1):
m68k: Move signal frame following exception on 68020/030

Florian Fainelli (2):
net: bcmgenet: Remove phy_stop() from bcmgenet_netif_stop()
net: bcmgenet: Restore phy_stop() depending upon suspend/close

Florian Westphal (2):
netfilter: conntrack: fix possible bug_on with enable_hooks=1
netfilter: nft_set_rbtree: fix null deref on element insertion

Frank Li (1):
dt-binding: cdns,usb3: Fix cdns,on-chip-buff-size type

Frank Wang (1):
usb: typec: tcpm: fix multiple times discover svids error

Gavrilov Ilia (1):
ipv6: Fix out-of-bounds access in ipv6_find_tlv()

George Kennedy (1):
vc_screen: reload load of struct vc_data pointer in vcs_write() to avoid UAF

Greg Kroah-Hartman (1):

      Linux 5.10.181

Greg Thelen (1):
writeback, cgroup: remove extra percpu_ref_exit()

Gregory Oakes (1):
watchdog: sp5100_tco: Immediately trigger upon starting.

Grygorii Strashko (1):
net: phy: dp83867: add w/a for packet errors seen with short cables

Gustavo A. R. Silva (1):
RDMA/core: Fix multiple -Warray-bounds warnings

Hans de Goede (6):
wifi: iwlwifi: dvm: Fix memcpy: detected field-spanning write backtrace
Bluetooth: hci_bcm: Fall back to getting bdaddr from EFI if not set
power: supply: leds: Fix blink to LED on transition
power: supply: bq27xxx: Fix bq27xxx_battery_update() race condition
power: supply: bq27xxx: Fix I2C IRQ race on remove
power: supply: bq27xxx: Fix poll_interval handling and races on remove

Hao Ge (1):
fs: fix undefined behavior in bit shift for SB_NOUSER

Hao Zeng (2):
samples/bpf: Fix fout leak in hbm's run_bpf_prog
recordmcount: Fix memory leaks in the uwrite function

Hardik Garg (1):
selftests/memfd: Fix unknown type name build failure

Harshad Shirwadkar (2):
ext4: drop s_mb_bal_lock and convert protected fields to atomic
ext4: add mballoc stats proc file

Hector Martin (1):
wifi: brcmfmac: cfg80211: Pass the PMK in binary instead of hex

Heiko Carstens (2):
s390/qdio: get rid of register asm s390/qdio: fix do_sqbs() inline assembly constraint

Helge Deller (3):
parisc: Handle kgdb breakpoints only in kernel context
parisc: Allow to reboot machine after system halt
parisc: Fix flush_dcache_page() for usage from irq context

Hugo Villeneuve (1):
arm64: dts: imx8mn-var-som: fix PHY detection bug by adding deassert delay

Hyunwoo Kim (1):
wifi: iwlwifi: pcie: Fix integer overflow in iwl_write_to_user_buf

Ilya Leoshkevich (1):
statfs: enforce statfs[64] structure initialization

Ioana Ciornei (1):
driver core: add a helper to setup both the of_node and fwnode of a device

Jakub Kicinski (1):
net/mlx5e: do as little as possible in napi poll when budget is 0

Jan Kara (2):
ext4: fix lockdep warning when enabling MMP
ext2: Check block size validity during mount

Jason Gerecke (2):
HID: wacom: generic: Set battery quirk only when we see battery data
HID: wacom: Force pen out of prox if no events have been received in a while

Jeremy Soller (1):
ALSA: hda/realtek: Add quirk for Clevo L140AU

Jerry Snitselaar (1):
tpm/tpm_tis: Disable interrupts for more Lenovo devices

Jie Wang (1):
net: hns3: fix reset delay time to avoid configuration timeout

Jijie Shao (1):
net: hns3: fix sending pfc frames after reset issue

Jimmy Assarsson (6):
can: kvaser_pciefd: Set CAN_STATE_STOPPED in kvaser_pciefd_stop()
can: kvaser_pciefd: Call request_irq() before enabling interrupts
can: kvaser_pciefd: Empty SRB buffer in probe
can: kvaser_pciefd: Clear listen-only bit if not explicitly requested
can: kvaser_pciefd: Do not send EFLUSH command on TFD interrupt
can: kvaser_pciefd: Disable interrupts in probe error path

Johannes Berg (2):
wifi: mac80211: fix min center freq offset tracing
wifi: iwlwifi: mvm: don't trust firmware n_channels

Josef Bacik (1):
btrfs: use nofs when cleaning up aborted transactions

Josh Poimboeuf (1):
sched: Fix KCSAN noinstr violation

Justin Tee (1):
scsi: lpfc: Prevent lpfc_debugfs_lockstat_write() buffer overflow

Ke Zhang (1):
serial: arc_uart: fix of_iomap leak in arc_serial_probe

Kees Cook (1):
wifi: ath: Silence memcpy run-time false positive warning

Kemeng Shi (2):
ext4: allow to find by goal if EXT4_MB_HINT_GOAL_ONLY is set
ext4: set goal start correctly in ext4_mb_normalize_request

Kevin Groeneveld (1):
spi: spi-imx: fix MX51_ECSPI_* macros when cs > 3

Konrad Dybcio (1):
arm64: dts: qcom: msm8996: Add missing DWC3 quirks

Konrad Gräfe (1):
usb: gadget: u_ether: Fix host MAC address case

Kumar Kartikeya Dwivedi (1):
bpf: Annotate data races in bpf_local_storage

Kuniyuki Iwashima (4):

      net: Fix load-tearing on sk->sk_stamp in sock_recv_cmsgs().
      af_unix: Fix a data race of sk->sk_receive_queue->qlen.
      af_unix: Fix data races around sk->sk_shutdown.
      udplite: Fix NULL pointer dereference in __sk_mem_raise_allocated().

Luke D. Jones (1):
ALSA: hda/realtek: Add quirk for 2nd ASUS GU603

Manivannan Sadhasivam (1):
iommu/arm-smmu-qcom: Limit the SMR groups to 128

Marijn Suijten (1):
drm/msm/dpu: Remove duplicate register defines from INTF

Mario Limonciello (1):
drm/amd: Fix an out of bounds error in BIOS parser

Martin Willi (1):
Revert "Fix XFRM-I support for nested ESP tunnels"

Matthew Howell (1):
serial: exar: Add support for Sealevel 7xxxC serial cards

Maxime Bizon (1):
usb-storage: fix deadlock when a scsi command timeouts more than once

Menglong Dong (1):
net: tap: check vlan with eth_type_vlan() method

Michael Ellerman (1):
powerpc/64s/radix: Fix soft dirty tracking

Michael Kelley (1):
scsi: storvsc: Don't pass unused PFNs to Hyper-V host

Min Li (1):
Bluetooth: L2CAP: fix "bad unlock balance" in l2cap_disconnect_rsp

Nagarajan Maran (1):
wifi: ath11k: Fix SKB corruption in REO destination ring

Nathan Chancellor (1):
net: pasemi: Fix return type of pasemi_mac_start_tx()

Nick Child (1):
net: Catch invalid index in XPS mapping

Nikhil Mahale (1):
ALSA: hda: Add NVIDIA codec IDs a3 through a7 to patch table

Nikita Zhandarovich (1):
drm/i915/dp: prevent potential div-by-zero

Nikolay Borisov (2):
btrfs: move btrfs_find_highest_objectid/btrfs_find_free_objectid to disk-io.c
btrfs: replace calls to btrfs_find_free_ino with btrfs_find_free_objectid

Nur Hussein (1):
drm/tegra: Avoid potential 32-bit integer overflow

Ojaswin Mujoo (1):
ext4: Fix best extent lstart adjustment logic in ext4_mb_new_inode_pa()

Oliver Hartkopp (2):
can: j1939: recvmsg(): allow MSG_CMSG_COMPAT flag
can: isotp: recvmsg(): allow MSG_CMSG_COMPAT flag

Olivier Moysan (1):
ARM: dts: stm32: fix AV96 board SAI2 pin muxing on stm32mp15

Paolo Abeni (1):
tcp: factor out __tcp_close() helper

Paul E. McKenney (1):
refscale: Move shutdown from wait_event() to wait_event_idle()

Philipp Hortmann (1):
staging: rtl8192e: Replace macro RTL_PCI_DEVICE with PCI_DEVICE

Pierre Gondois (1):
firmware: arm_sdei: Fix sleep from invalid context BUG

Ping Cheng (2):
HID: wacom: Add new Intuos Pro Small (PTH-460) device IDs
HID: wacom: add three styli to wacom_intuos_get_tool_type

Po-Hsu Lin (1):
selftests: fib_tests: mute cleanup error message

Pratyush Yadav (1):
net: fix skb leak in __skb_tstamp_tx()

Qiang Ning (1):
mfd: dln2: Fix memory leak in dln2_probe()

Randy Dunlap (2):
ARM: 9296/1: HP Jornada 7XX: fix kernel-doc warnings net/tipc: fix tipc header files for kernel-doc

Roberto Sassu (1):
ocfs2: Switch to security_inode_init_security()

Rodrigo Siqueira (1):
drm/amd/display: Use DC_LOG_DC in the trasform pixel function

Rodríguez Barbarin, José Javier (1):
mcb-pci: Reallocate memory region to avoid memory overlapping

Roi Dayan (1):
net/mlx5: Fix error message when failing to allocate device memory

Roy Novich (1):
linux/dim: Do nothing if no time delta between samples

Ryan C. Underwood (1):
ALSA: hda/realtek: Apply HP B&O top speaker profile to Pavilion 15

Ryusuke Konishi (1):
nilfs2: fix use-after-free bug of nilfs_root in nilfs_evict_inode()

Sabrina Dubroca (1):
xfrm: don't check the default policy if the policy allows the packet

Saravana Kannan (1):
drm/mipi-dsi: Set the fwnode for mipi_dsi_device

Shay Drory (1):
net/mlx5: Devcom, fix error flow in mlx5_devcom_register_device

Simon Horman (1):
ipvs: Update width of source for ip_vs_sync_conn_options

Srinivas Kandagatla (1):
drm/msm/dp: unregister audio driver during unbind

Sunil Goutham (1):
octeontx2-pf: Fix TSOv6 offload

Taehee Yoo (1):
net: fix stack overflow when LRO is disabled for virtual interfaces

Takashi Iwai (3):
ALSA: usb-audio: Add a sample rate workaround for Line6 Pod Go
ALSA: hda: Fix Oops by 9.1 surround channel names
ALSA: hda: Fix unhandled register update during auto-suspend period

Tamir Duberstein (1):
ACPICA: Avoid undefined behavior: applying zero offset to null pointer

Tetsuo Handa (2):
fs: hfsplus: remove WARN_ON() from hfsplus_cat_{read,write}_inode()
debugobjects: Don't wake up kswapd from fill_pool()

Theodore Ts'o (3):
ext4: reflect error codes from ext4_multi_mount_protect() to its callers
ext4: don't clear SB_RDONLY when remounting r/w until quota is re-enabled
ext4: allow ext4_get_group_info() to fail

Tobias Brunner (1):
af_key: Reject optional tunnel/BEET mode templates in outbound policies

Tomas Krcka (1):
iommu/arm-smmu-v3: Acknowledge pri/event queue overflow if any

Tony Lindgren (1):

      serial: 8250: Reinit port->pm on port specific driver unbind

Tudor Ambarus (1):
net: cdc_ncm: Deal with too low values of dwNtbOutMaxSize

Udipto Goswami (1):
usb: dwc3: debugfs: Resume dwc3 before accessing registers

Uwe Kleine-König (1):
net: fec: Better handle pm_runtime_get() failing in .remove()

Vernon Lovejoy (1):
x86/show_trace_log_lvl: Ensure stack pointer is aligned, again

Vicki Pfau (1):
Input: xpad - add constants for GIP interface numbers

Vitaliy Tomin (1):
serial: Add support for Advantech PCI-1611U card

Weitao Wang (1):
USB: UHCI: adjust zhaoxin UHCI controllers OverCurrent bit value

Will Deacon (2):
KVM: arm64: Link position-independent string routines into .hyp.text
bpf: Fix mask generation for 32-bit narrow loads of 64-bit fields

Wyes Karny (1):
cpupower: Make TSC read per CPU for Mperf monitor

Xin Long (4):
erspan: get the proto with the md version for collect_md
tipc: add tipc_bearer_min_mtu to calculate min mtu
tipc: do not update mtu if msg_max is too small in mtu negotiation
tipc: check the bearer min mtu properly when setting it by netlink

Xiubo Li (1):
ceph: force updating the msg pointer in non-split case

Zev Weiss (1):
gpio: mockup: Fix mode of debugfs files

Zhang Rui (1):
x86/topology: Fix erroneous smp_num_siblings on Intel Hybrid platforms

Zheng Wang (2):
memstick: r592: Fix UAF bug in r592_remove due to race condition
scsi: message: mptlan: Fix use after free bug in mptlan_remove() due to race condition

Zhuang Shengen (1):
vsock: avoid to close connected socket after the timeout

Zongjie Li (1):
fbdev: arcfb: Fix error handling in arcfb_probe()

Zqiang (1):

      rcu: Protect rcu_print_task_exp_stall() ->exp_tasks access

sewookseo (1):
net: Find dst with sk's xfrm policy not ctl_sk

t.feng (1):

      ipvlan:Fix out-of-bounds caused by unclear skb->cb

void0red (1):
ACPICA: ACPICA: check null return of ACPI_ALLOCATE_ZEROED in acpi_db_display_objects

wenxu (1):
net/sched: act_mirred: refactor the handle of xmit

author maintainer
#1 lore raw
Documentation/devicetree/bindings/usb/cdns,usb3.yaml +1 -1
index d6af2794d444..703921e6bcaf 100644
@@ -59,7 +59,7 @@ properties:
     description:
       size of memory intended as internal memory for endpoints
       buffers expressed in KB
-    $ref: /schemas/types.yaml#/definitions/uint32
+    $ref: /schemas/types.yaml#/definitions/uint16
 
   cdns,phyrst-a-enable:
     description: Enable resetting of PHY if Rx fail is detected
Makefile +1 -1
index c2f8e1644abd..4e8289113a81 100644
@@ -1,7 +1,7 @@
 # SPDX-License-Identifier: GPL-2.0
 VERSION = 5
 PATCHLEVEL = 10
-SUBLEVEL = 180
+SUBLEVEL = 181
 EXTRAVERSION =
 NAME = Dare mighty things
 
arch/arm/boot/dts/stm32mp15-pinctrl.dtsi +1 -1
index ccf66adbbf62..07c15c1ce9d4 100644
@@ -1102,7 +1102,7 @@ pins {
 		};
 	};
 
-	sai2a_sleep_pins_c: sai2a-2 {
+	sai2a_sleep_pins_c: sai2a-sleep-2 {
 		pins {
 			pinmux = <STM32_PINMUX('D', 13, ANALOG)>, /* SAI2_SCK_A */
 				 <STM32_PINMUX('D', 11, ANALOG)>, /* SAI2_SD_A */
arch/arm/mach-sa1100/jornada720_ssp.c +4 -1
index 1dbe98948ce3..9627c4cf3e41 100644
@@ -1,5 +1,5 @@
 // SPDX-License-Identifier: GPL-2.0-only
-/**
+/*
  *  arch/arm/mac-sa1100/jornada720_ssp.c
  *
  *  Copyright (C) 2006/2007 Kristoffer Ericson <[email protected]>
@@ -26,6 +26,7 @@ static unsigned long jornada_ssp_flags;
 
 /**
  * jornada_ssp_reverse - reverses input byte
+ * @byte: input byte to reverse
  *
  * we need to reverse all data we receive from the mcu due to its physical location
  * returns : 01110111 -> 11101110
@@ -46,6 +47,7 @@ EXPORT_SYMBOL(jornada_ssp_reverse);
 
 /**
  * jornada_ssp_byte - waits for ready ssp bus and sends byte
+ * @byte: input byte to transmit
  *
  * waits for fifo buffer to clear and then transmits, if it doesn't then we will
  * timeout after <timeout> rounds. Needs mcu running before its called.
@@ -77,6 +79,7 @@ EXPORT_SYMBOL(jornada_ssp_byte);
 
 /**
  * jornada_ssp_inout - decide if input is command or trading byte
+ * @byte: input byte to send (may be %TXDUMMY)
  *
  * returns : (jornada_ssp_byte(byte)) on success
  *         : %-ETIMEDOUT on timeout failure
arch/arm64/boot/dts/freescale/imx8mn-var-som.dtsi +7 -1
index f6287f174355..24f9e8fd0c8b 100644
@@ -98,11 +98,17 @@ mdio {
 		#address-cells = <1>;
 		#size-cells = <0>;
 
-		ethphy: ethernet-phy@4 {
+		ethphy: ethernet-phy@4 { /* AR8033 or ADIN1300 */
 			compatible = "ethernet-phy-ieee802.3-c22";
 			reg = <4>;
 			reset-gpios = <&gpio1 9 GPIO_ACTIVE_LOW>;
 			reset-assert-us = <10000>;
+			/*
+			 * Deassert delay:
+			 * ADIN1300 requires 5ms.
+			 * AR8033   requires 1ms.
+			 */
+			reset-deassert-us = <20000>;
 		};
 	};
 };
arch/arm64/boot/dts/qcom/msm8996.dtsi +3 -0
index 02b5f6f1d331..159cdd03e7c0 100644
@@ -1771,8 +1771,11 @@ dwc3@6a00000 {
 				interrupts = <0 131 IRQ_TYPE_LEVEL_HIGH>;
 				phys = <&hsusb_phy1>, <&ssusb_phy_0>;
 				phy-names = "usb2-phy", "usb3-phy";
+				snps,hird-threshold = /bits/ 8 <0>;
 				snps,dis_u2_susphy_quirk;
 				snps,dis_enblslpm_quirk;
+				snps,is-utmi-l1-suspend;
+				tx-fifo-resize;
 			};
 		};
 
arch/arm64/include/asm/hyp_image.h +3 -0
index daa1a1da539e..e06842756051 100644
@@ -31,6 +31,9 @@
  */
 #define KVM_NVHE_ALIAS(sym)	kvm_nvhe_sym(sym) = sym;
 
+/* Defines a linker script alias for KVM nVHE hyp symbols */
+#define KVM_NVHE_ALIAS_HYP(first, sec)	kvm_nvhe_sym(first) = kvm_nvhe_sym(sec);
+
 #endif /* LINKER_SCRIPT */
 
 #endif /* __ARM64_HYP_IMAGE_H__ */
arch/arm64/kernel/image-vars.h +11 -0
index c615b285ff5b..48e43b29a2d5 100644
@@ -103,6 +103,17 @@ KVM_NVHE_ALIAS(gic_nonsecure_priorities);
 KVM_NVHE_ALIAS(__start___kvm_ex_table);
 KVM_NVHE_ALIAS(__stop___kvm_ex_table);
 
+/* Position-independent library routines */
+KVM_NVHE_ALIAS_HYP(clear_page, __pi_clear_page);
+KVM_NVHE_ALIAS_HYP(copy_page, __pi_copy_page);
+KVM_NVHE_ALIAS_HYP(memcpy, __pi_memcpy);
+KVM_NVHE_ALIAS_HYP(memset, __pi_memset);
+
+#ifdef CONFIG_KASAN
+KVM_NVHE_ALIAS_HYP(__memcpy, __pi_memcpy);
+KVM_NVHE_ALIAS_HYP(__memset, __pi_memset);
+#endif
+
 #endif /* CONFIG_KVM */
 
 #endif /* __ARM64_KERNEL_IMAGE_VARS_H */
arch/arm64/kvm/hyp/nvhe/Makefile +4 -0
index ddde15fe85f2..230bba1a6716 100644
@@ -6,9 +6,13 @@
 asflags-y := -D__KVM_NVHE_HYPERVISOR__
 ccflags-y := -D__KVM_NVHE_HYPERVISOR__
 
+lib-objs := clear_page.o copy_page.o memcpy.o memset.o
+lib-objs := $(addprefix ../../../lib/, $(lib-objs))
+
 obj-y := timer-sr.o sysreg-sr.o debug-sr.o switch.o tlb.o hyp-init.o host.o hyp-main.o
 obj-y += ../vgic-v3-sr.o ../aarch32.o ../vgic-v2-cpuif-proxy.o ../entry.o \
 	 ../fpsimd.o ../hyp-entry.o
+obj-y += $(lib-objs)
 
 ##
 ## Build rules for compiling nVHE hyp code
arch/m68k/kernel/signal.c +10 -4
index 5d12736b4b28..131e87a55cbb 100644
@@ -882,11 +882,17 @@ static inline int rt_setup_ucontext(struct ucontext __user *uc, struct pt_regs *
 }
 
 static inline void __user *
-get_sigframe(struct ksignal *ksig, size_t frame_size)
+get_sigframe(struct ksignal *ksig, struct pt_regs *tregs, size_t frame_size)
 {
 	unsigned long usp = sigsp(rdusp(), ksig);
+	unsigned long gap = 0;
 
-	return (void __user *)((usp - frame_size) & -8UL);
+	if (CPU_IS_020_OR_030 && tregs->format == 0xb) {
+		/* USP is unreliable so use worst-case value */
+		gap = 256;
+	}
+
+	return (void __user *)((usp - gap - frame_size) & -8UL);
 }
 
 static int setup_frame(struct ksignal *ksig, sigset_t *set,
@@ -904,7 +910,7 @@ static int setup_frame(struct ksignal *ksig, sigset_t *set,
 		return -EFAULT;
 	}
 
-	frame = get_sigframe(ksig, sizeof(*frame) + fsize);
+	frame = get_sigframe(ksig, tregs, sizeof(*frame) + fsize);
 
 	if (fsize)
 		err |= copy_to_user (frame + 1, regs + 1, fsize);
@@ -976,7 +982,7 @@ static int setup_rt_frame(struct ksignal *ksig, sigset_t *set,
 		return -EFAULT;
 	}
 
-	frame = get_sigframe(ksig, sizeof(*frame));
+	frame = get_sigframe(ksig, tregs, sizeof(*frame));
 
 	if (fsize)
 		err |= copy_to_user (&frame->uc.uc_extra, regs + 1, fsize);
arch/parisc/include/asm/cacheflush.h +5 -0
index 99663fc1f997..cc9d096d5cc4 100644
@@ -57,6 +57,11 @@ extern void flush_dcache_page(struct page *page);
 
 #define flush_dcache_mmap_lock(mapping)		xa_lock_irq(&mapping->i_pages)
 #define flush_dcache_mmap_unlock(mapping)	xa_unlock_irq(&mapping->i_pages)
+#define flush_dcache_mmap_lock_irqsave(mapping, flags)		\
+		xa_lock_irqsave(&mapping->i_pages, flags)
+#define flush_dcache_mmap_unlock_irqrestore(mapping, flags)	\
+		xa_unlock_irqrestore(&mapping->i_pages, flags)
+
 
 #define flush_icache_page(vma,page)	do { 		\
 	flush_kernel_dcache_page(page);			\
arch/parisc/kernel/cache.c +3 -2
index c81ab0cb8925..efa8d2a678a3 100644
@@ -327,6 +327,7 @@ void flush_dcache_page(struct page *page)
 	struct vm_area_struct *mpnt;
 	unsigned long offset;
 	unsigned long addr, old_addr = 0;
+	unsigned long flags;
 	pgoff_t pgoff;
 
 	if (mapping && !mapping_mapped(mapping)) {
@@ -346,7 +347,7 @@ void flush_dcache_page(struct page *page)
 	 * declared as MAP_PRIVATE or MAP_SHARED), so we only need
 	 * to flush one address here for them all to become coherent */
 
-	flush_dcache_mmap_lock(mapping);
+	flush_dcache_mmap_lock_irqsave(mapping, flags);
 	vma_interval_tree_foreach(mpnt, &mapping->i_mmap, pgoff, pgoff) {
 		offset = (pgoff - mpnt->vm_pgoff) << PAGE_SHIFT;
 		addr = mpnt->vm_start + offset;
@@ -369,7 +370,7 @@ void flush_dcache_page(struct page *page)
 			old_addr = addr;
 		}
 	}
-	flush_dcache_mmap_unlock(mapping);
+	flush_dcache_mmap_unlock_irqrestore(mapping, flags);
 }
 EXPORT_SYMBOL(flush_dcache_page);
 
arch/parisc/kernel/process.c +8 -3
index 5e4381280c97..c14ee40302d8 100644
@@ -123,13 +123,18 @@ void machine_power_off(void)
 	/* It seems we have no way to power the system off via
 	 * software. The user has to press the button himself. */
 
-	printk(KERN_EMERG "System shut down completed.\n"
-	       "Please power this system off now.");
+	printk("Power off or press RETURN to reboot.\n");
 
 	/* prevent soft lockup/stalled CPU messages for endless loop. */
 	rcu_sysrq_start();
 	lockup_detector_soft_poweroff();
-	for (;;);
+	while (1) {
+		/* reboot if user presses RETURN key */
+		if (pdc_iodc_getc() == 13) {
+			printk("Rebooting...\n");
+			machine_restart(NULL);
+		}
+	}
 }
 
 void (*pm_power_off)(void);
arch/parisc/kernel/traps.c +2 -2
index 2fad7867af10..bd09050dc0af 100644
@@ -305,8 +305,8 @@ static void handle_break(struct pt_regs *regs)
 #endif
 
 #ifdef CONFIG_KGDB
-	if (unlikely(iir == PARISC_KGDB_COMPILED_BREAK_INSN ||
-		iir == PARISC_KGDB_BREAK_INSN)) {
+	if (unlikely((iir == PARISC_KGDB_COMPILED_BREAK_INSN ||
+		iir == PARISC_KGDB_BREAK_INSN)) && !user_mode(regs)) {
 		kgdb_handle_exception(9, SIGTRAP, 0, regs);
 		return;
 	}
arch/powerpc/mm/book3s64/radix_pgtable.c +2 -2
index ae4ba6a6745d..5f0a2fa611fa 100644
@@ -1064,8 +1064,8 @@ void radix__ptep_set_access_flags(struct vm_area_struct *vma, pte_t *ptep,
 				  pte_t entry, unsigned long address, int psize)
 {
 	struct mm_struct *mm = vma->vm_mm;
-	unsigned long set = pte_val(entry) & (_PAGE_DIRTY | _PAGE_ACCESSED |
-					      _PAGE_RW | _PAGE_EXEC);
+	unsigned long set = pte_val(entry) & (_PAGE_DIRTY | _PAGE_SOFT_DIRTY |
+					      _PAGE_ACCESSED | _PAGE_RW | _PAGE_EXEC);
 
 	unsigned long change = pte_val(entry) ^ pte_val(*ptep);
 	/*
arch/x86/include/asm/intel-family.h +5 -0
index 9abe842dbd84..14b52718917f 100644
@@ -98,6 +98,11 @@
 #define	INTEL_FAM6_LAKEFIELD		0x8A
 #define INTEL_FAM6_ALDERLAKE		0x97
 #define INTEL_FAM6_ALDERLAKE_L		0x9A
+#define INTEL_FAM6_ALDERLAKE_N		0xBE
+
+#define INTEL_FAM6_RAPTORLAKE		0xB7
+#define INTEL_FAM6_RAPTORLAKE_P		0xBA
+#define INTEL_FAM6_RAPTORLAKE_S		0xBF
 
 /* "Small Core" Processors (Atom) */
 
arch/x86/kernel/cpu/topology.c +3 -2
index 37d48ab3d077..58d17c01d459 100644
@@ -79,7 +79,7 @@ int detect_extended_topology_early(struct cpuinfo_x86 *c)
 	 * initial apic id, which also represents 32-bit extended x2apic id.
 	 */
 	c->initial_apicid = edx;
-	smp_num_siblings = LEVEL_MAX_SIBLINGS(ebx);
+	smp_num_siblings = max_t(int, smp_num_siblings, LEVEL_MAX_SIBLINGS(ebx));
 #endif
 	return 0;
 }
@@ -109,7 +109,8 @@ int detect_extended_topology(struct cpuinfo_x86 *c)
 	 */
 	cpuid_count(leaf, SMT_LEVEL, &eax, &ebx, &ecx, &edx);
 	c->initial_apicid = edx;
-	core_level_siblings = smp_num_siblings = LEVEL_MAX_SIBLINGS(ebx);
+	core_level_siblings = LEVEL_MAX_SIBLINGS(ebx);
+	smp_num_siblings = max_t(int, smp_num_siblings, LEVEL_MAX_SIBLINGS(ebx));
 	core_plus_mask_width = ht_mask_width = BITS_SHIFT_NEXT_LEVEL(eax);
 	die_level_siblings = LEVEL_MAX_SIBLINGS(ebx);
 	pkg_mask_width = die_plus_mask_width = BITS_SHIFT_NEXT_LEVEL(eax);
arch/x86/kernel/dumpstack.c +5 -2
index b4964300153a..b9736aac20ee 100644
@@ -195,7 +195,6 @@ void show_trace_log_lvl(struct task_struct *task, struct pt_regs *regs,
 	printk("%sCall Trace:\n", log_lvl);
 
 	unwind_start(&state, task, regs, stack);
-	stack = stack ? : get_stack_pointer(task, regs);
 	regs = unwind_get_entry_regs(&state, &partial);
 
 	/*
@@ -214,9 +213,13 @@ void show_trace_log_lvl(struct task_struct *task, struct pt_regs *regs,
 	 * - hardirq stack
 	 * - entry stack
 	 */
-	for ( ; stack; stack = PTR_ALIGN(stack_info.next_sp, sizeof(long))) {
+	for (stack = stack ?: get_stack_pointer(task, regs);
+	     stack;
+	     stack = stack_info.next_sp) {
 		const char *stack_name;
 
+		stack = PTR_ALIGN(stack, sizeof(long));
+
 		if (get_stack_info(stack, task, &stack_info, &visit_mask)) {
 			/*
 			 * We weren't on a valid stack.  It's possible that
arch/x86/mm/init.c +25 -0
index 63d8c6c7d125..ff3b0d8fe048 100644
@@ -9,6 +9,7 @@
 #include <linux/sched/task.h>
 
 #include <asm/set_memory.h>
+#include <asm/cpu_device_id.h>
 #include <asm/e820/api.h>
 #include <asm/init.h>
 #include <asm/page.h>
@@ -254,6 +255,24 @@ static void __init probe_page_size_mask(void)
 	}
 }
 
+#define INTEL_MATCH(_model) { .vendor  = X86_VENDOR_INTEL,	\
+			      .family  = 6,			\
+			      .model = _model,			\
+			    }
+/*
+ * INVLPG may not properly flush Global entries
+ * on these CPUs when PCIDs are enabled.
+ */
+static const struct x86_cpu_id invlpg_miss_ids[] = {
+	INTEL_MATCH(INTEL_FAM6_ALDERLAKE   ),
+	INTEL_MATCH(INTEL_FAM6_ALDERLAKE_L ),
+	INTEL_MATCH(INTEL_FAM6_ALDERLAKE_N ),
+	INTEL_MATCH(INTEL_FAM6_RAPTORLAKE  ),
+	INTEL_MATCH(INTEL_FAM6_RAPTORLAKE_P),
+	INTEL_MATCH(INTEL_FAM6_RAPTORLAKE_S),
+	{}
+};
+
 static void setup_pcid(void)
 {
 	if (!IS_ENABLED(CONFIG_X86_64))
@@ -262,6 +281,12 @@ static void setup_pcid(void)
 	if (!boot_cpu_has(X86_FEATURE_PCID))
 		return;
 
+	if (x86_match_cpu(invlpg_miss_ids)) {
+		pr_info("Incomplete global flushes, disabling PCID");
+		setup_clear_cpu_cap(X86_FEATURE_PCID);
+		return;
+	}
+
 	if (boot_cpu_has(X86_FEATURE_PGE)) {
 		/*
 		 * This can't be cr4_set_bits_and_update_boot() -- the
drivers/acpi/acpica/dbnames.c +3 -0
index 3615e1a6efd8..b91155ea9c34 100644
@@ -652,6 +652,9 @@ acpi_status acpi_db_display_objects(char *obj_type_arg, char *display_count_arg)
 		object_info =
 		    ACPI_ALLOCATE_ZEROED(sizeof(struct acpi_object_info));
 
+		if (!object_info)
+			return (AE_NO_MEMORY);
+
 		/* Walk the namespace from the root */
 
 		(void)acpi_walk_namespace(ACPI_TYPE_ANY, ACPI_ROOT_OBJECT,
drivers/acpi/acpica/dswstate.c +8 -3
index 809a0c0536b5..f9ba7695be14 100644
@@ -576,9 +576,14 @@ acpi_ds_init_aml_walk(struct acpi_walk_state *walk_state,
 	ACPI_FUNCTION_TRACE(ds_init_aml_walk);
 
 	walk_state->parser_state.aml =
-	    walk_state->parser_state.aml_start = aml_start;
-	walk_state->parser_state.aml_end =
-	    walk_state->parser_state.pkg_end = aml_start + aml_length;
+	    walk_state->parser_state.aml_start =
+	    walk_state->parser_state.aml_end =
+	    walk_state->parser_state.pkg_end = aml_start;
+	/* Avoid undefined behavior: applying zero offset to null pointer */
+	if (aml_length != 0) {
+		walk_state->parser_state.aml_end += aml_length;
+		walk_state->parser_state.pkg_end += aml_length;
+	}
 
 	/* The next_op of the next_walk will be the beginning of the method */
 
drivers/acpi/ec.c +1 -0
index 4707d1808ca5..487884420fb0 100644
@@ -1114,6 +1114,7 @@ static void acpi_ec_remove_query_handlers(struct acpi_ec *ec,
 void acpi_ec_remove_query_handler(struct acpi_ec *ec, u8 query_bit)
 {
 	acpi_ec_remove_query_handlers(ec, false, query_bit);
+	flush_workqueue(ec_query_wq);
 }
 EXPORT_SYMBOL_GPL(acpi_ec_remove_query_handler);
 
drivers/base/core.c +7 -0
index 9a874a58d690..cb859febd03c 100644
@@ -4352,6 +4352,13 @@ void device_set_of_node_from_dev(struct device *dev, const struct device *dev2)
 }
 EXPORT_SYMBOL_GPL(device_set_of_node_from_dev);
 
+void device_set_node(struct device *dev, struct fwnode_handle *fwnode)
+{
+	dev->fwnode = fwnode;
+	dev->of_node = to_of_node(fwnode);
+}
+EXPORT_SYMBOL_GPL(device_set_node);
+
 int device_match_name(struct device *dev, const void *name)
 {
 	return sysfs_streq(dev_name(dev), name);
drivers/base/regmap/regcache.c +6 -0
index 7f4b3b62492c..7fdd702e564a 100644
@@ -343,6 +343,9 @@ int regcache_sync(struct regmap *map)
 	const char *name;
 	bool bypass;
 
+	if (WARN_ON(map->cache_type == REGCACHE_NONE))
+		return -EINVAL;
+
 	BUG_ON(!map->cache_ops);
 
 	map->lock(map->lock_arg);
@@ -412,6 +415,9 @@ int regcache_sync_region(struct regmap *map, unsigned int min,
 	const char *name;
 	bool bypass;
 
+	if (WARN_ON(map->cache_type == REGCACHE_NONE))
+		return -EINVAL;
+
 	BUG_ON(!map->cache_ops);
 
 	map->lock(map->lock_arg);
drivers/block/null_blk/main.c +5 -0
index 25db095e943b..35b390a785dd 100644
@@ -1738,6 +1738,11 @@ static int null_init_tag_set(struct nullb *nullb, struct blk_mq_tag_set *set)
 
 static int null_validate_conf(struct nullb_device *dev)
 {
+	if (dev->queue_mode == NULL_Q_RQ) {
+		pr_err("legacy IO path is no longer available\n");
+		return -EINVAL;
+	}
+
 	dev->blocksize = round_down(dev->blocksize, 512);
 	dev->blocksize = clamp_t(unsigned int, dev->blocksize, 512, 4096);
 
drivers/bluetooth/btbcm.c +44 -3

65 lines not on this page · raw message

drivers/char/tpm/tpm_tis.c +16 -0
index 14fad16d371f..3e1bb28b7efd 100644
@@ -83,6 +83,22 @@ static const struct dmi_system_id tpm_tis_dmi_table[] = {
 			DMI_MATCH(DMI_PRODUCT_VERSION, "ThinkPad T490s"),
 		},
 	},
+	{
+		.callback = tpm_tis_disable_irq,
+		.ident = "ThinkStation P360 Tiny",
+		.matches = {
+			DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"),
+			DMI_MATCH(DMI_PRODUCT_VERSION, "ThinkStation P360 Tiny"),
+		},
+	},
+	{
+		.callback = tpm_tis_disable_irq,
+		.ident = "ThinkPad L490",
+		.matches = {
+			DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"),
+			DMI_MATCH(DMI_PRODUCT_VERSION, "ThinkPad L490"),
+		},
+	},
 	{}
 };
 
drivers/clk/tegra/clk-tegra20.c +14 -14
index d60ee6e318a5..fb1da5d63f4b 100644
@@ -18,24 +18,24 @@
 #define MISC_CLK_ENB 0x48
 
 #define OSC_CTRL 0x50
-#define OSC_CTRL_OSC_FREQ_MASK (3<<30)
-#define OSC_CTRL_OSC_FREQ_13MHZ (0<<30)
-#define OSC_CTRL_OSC_FREQ_19_2MHZ (1<<30)
-#define OSC_CTRL_OSC_FREQ_12MHZ (2<<30)
-#define OSC_CTRL_OSC_FREQ_26MHZ (3<<30)
-#define OSC_CTRL_MASK (0x3f2 | OSC_CTRL_OSC_FREQ_MASK)
-
-#define OSC_CTRL_PLL_REF_DIV_MASK (3<<28)
-#define OSC_CTRL_PLL_REF_DIV_1		(0<<28)
-#define OSC_CTRL_PLL_REF_DIV_2		(1<<28)
-#define OSC_CTRL_PLL_REF_DIV_4		(2<<28)
+#define OSC_CTRL_OSC_FREQ_MASK (3u<<30)
+#define OSC_CTRL_OSC_FREQ_13MHZ (0u<<30)
+#define OSC_CTRL_OSC_FREQ_19_2MHZ (1u<<30)
+#define OSC_CTRL_OSC_FREQ_12MHZ (2u<<30)
+#define OSC_CTRL_OSC_FREQ_26MHZ (3u<<30)
+#define OSC_CTRL_MASK (0x3f2u | OSC_CTRL_OSC_FREQ_MASK)
+
+#define OSC_CTRL_PLL_REF_DIV_MASK	(3u<<28)
+#define OSC_CTRL_PLL_REF_DIV_1		(0u<<28)
+#define OSC_CTRL_PLL_REF_DIV_2		(1u<<28)
+#define OSC_CTRL_PLL_REF_DIV_4		(2u<<28)
 
 #define OSC_FREQ_DET 0x58
-#define OSC_FREQ_DET_TRIG (1<<31)
+#define OSC_FREQ_DET_TRIG (1u<<31)
 
 #define OSC_FREQ_DET_STATUS 0x5c
-#define OSC_FREQ_DET_BUSY (1<<31)
-#define OSC_FREQ_DET_CNT_MASK 0xFFFF
+#define OSC_FREQ_DET_BUSYu (1<<31)
+#define OSC_FREQ_DET_CNT_MASK 0xFFFFu
 
 #define TEGRA20_CLK_PERIPH_BANKS	3
 
drivers/firmware/arm_sdei.c +20 -17
index 840754dcc6ca..5a877d76078f 100644
@@ -44,6 +44,8 @@ static asmlinkage void (*sdei_firmware_call)(unsigned long function_id,
 /* entry point from firmware to arch asm code */
 static unsigned long sdei_entry_point;
 
+static int sdei_hp_state;
+
 struct sdei_event {
 	/* These three are protected by the sdei_list_lock */
 	struct list_head	list;
@@ -302,8 +304,6 @@ int sdei_mask_local_cpu(void)
 {
 	int err;
 
-	WARN_ON_ONCE(preemptible());
-
 	err = invoke_sdei_fn(SDEI_1_0_FN_SDEI_PE_MASK, 0, 0, 0, 0, 0, NULL);
 	if (err && err != -EIO) {
 		pr_warn_once("failed to mask CPU[%u]: %d\n",
@@ -316,6 +316,7 @@ int sdei_mask_local_cpu(void)
 
 static void _ipi_mask_cpu(void *ignored)
 {
+	WARN_ON_ONCE(preemptible());
 	sdei_mask_local_cpu();
 }
 
@@ -323,8 +324,6 @@ int sdei_unmask_local_cpu(void)
 {
 	int err;
 
-	WARN_ON_ONCE(preemptible());
-
 	err = invoke_sdei_fn(SDEI_1_0_FN_SDEI_PE_UNMASK, 0, 0, 0, 0, 0, NULL);
 	if (err && err != -EIO) {
 		pr_warn_once("failed to unmask CPU[%u]: %d\n",
@@ -337,6 +336,7 @@ int sdei_unmask_local_cpu(void)
 
 static void _ipi_unmask_cpu(void *ignored)
 {
+	WARN_ON_ONCE(preemptible());
 	sdei_unmask_local_cpu();
 }
 
@@ -344,6 +344,8 @@ static void _ipi_private_reset(void *ignored)
 {
 	int err;
 
+	WARN_ON_ONCE(preemptible());
+
 	err = invoke_sdei_fn(SDEI_1_0_FN_SDEI_PRIVATE_RESET, 0, 0, 0, 0, 0,
 			     NULL);
 	if (err && err != -EIO)
@@ -390,8 +392,6 @@ static void _local_event_enable(void *data)
 	int err;
 	struct sdei_crosscall_args *arg = data;
 
-	WARN_ON_ONCE(preemptible());
-
 	err = sdei_api_event_enable(arg->event->event_num);
 
 	sdei_cross_call_return(arg, err);
@@ -480,8 +480,6 @@ static void _local_event_unregister(void *data)
 	int err;
 	struct sdei_crosscall_args *arg = data;
 
-	WARN_ON_ONCE(preemptible());
-
 	err = sdei_api_event_unregister(arg->event->event_num);
 
 	sdei_cross_call_return(arg, err);
@@ -562,8 +560,6 @@ static void _local_event_register(void *data)
 	struct sdei_registered_event *reg;
 	struct sdei_crosscall_args *arg = data;
 
-	WARN_ON(preemptible());
-
 	reg = per_cpu_ptr(arg->event->private_registered, smp_processor_id());
 	err = sdei_api_event_register(arg->event->event_num, sdei_entry_point,
 				      reg, 0, 0);
@@ -718,6 +714,8 @@ static int sdei_pm_notifier(struct notifier_block *nb, unsigned long action,
 {
 	int rv;
 
+	WARN_ON_ONCE(preemptible());
+
 	switch (action) {
 	case CPU_PM_ENTER:
 		rv = sdei_mask_local_cpu();
@@ -766,7 +764,7 @@ static int sdei_device_freeze(struct device *dev)
 	int err;
 
 	/* unregister private events */
-	cpuhp_remove_state(CPUHP_AP_ARM_SDEI_STARTING);
+	cpuhp_remove_state(sdei_entry_point);
 
 	err = sdei_unregister_shared();
 	if (err)
@@ -787,12 +785,15 @@ static int sdei_device_thaw(struct device *dev)
 		return err;
 	}
 
-	err = cpuhp_setup_state(CPUHP_AP_ARM_SDEI_STARTING, "SDEI",
+	err = cpuhp_setup_state(CPUHP_AP_ONLINE_DYN, "SDEI",
 				&sdei_cpuhp_up, &sdei_cpuhp_down);
-	if (err)
+	if (err < 0) {
 		pr_warn("Failed to re-register CPU hotplug notifier...\n");
+		return err;
+	}
 
-	return err;
+	sdei_hp_state = err;
+	return 0;
 }
 
 static int sdei_device_restore(struct device *dev)
@@ -824,7 +825,7 @@ static int sdei_reboot_notifier(struct notifier_block *nb, unsigned long action,
 	 * We are going to reset the interface, after this there is no point
 	 * doing work when we take CPUs offline.
 	 */
-	cpuhp_remove_state(CPUHP_AP_ARM_SDEI_STARTING);
+	cpuhp_remove_state(sdei_hp_state);
 
 	sdei_platform_reset();
 
@@ -1004,13 +1005,15 @@ static int sdei_probe(struct platform_device *pdev)
 		goto remove_cpupm;
 	}
 
-	err = cpuhp_setup_state(CPUHP_AP_ARM_SDEI_STARTING, "SDEI",
+	err = cpuhp_setup_state(CPUHP_AP_ONLINE_DYN, "SDEI",
 				&sdei_cpuhp_up, &sdei_cpuhp_down);
-	if (err) {
+	if (err < 0) {
 		pr_warn("Failed to register CPU hotplug notifier...\n");
 		goto remove_reboot;
 	}
 
+	sdei_hp_state = err;
+
 	return 0;
 
 remove_reboot:
drivers/gpio/gpio-mockup.c +1 -1
index 876027fdefc9..e20b60432e01 100644
@@ -370,7 +370,7 @@ static void gpio_mockup_debugfs_setup(struct device *dev,
 		priv->offset = i;
 		priv->desc = &gc->gpiodev->descs[i];
 
-		debugfs_create_file(name, 0200, chip->dbg_dir, priv,
+		debugfs_create_file(name, 0600, chip->dbg_dir, priv,
 				    &gpio_mockup_debugfs_ops);
 	}
 }
drivers/gpu/drm/amd/display/dc/bios/bios_parser2.c +2 -5
index 930d2b7d3448..9dd41eaf32cb 100644
@@ -406,11 +406,8 @@ static enum bp_result get_gpio_i2c_info(
 	info->i2c_slave_address = record->i2c_slave_addr;
 
 	/* TODO: check how to get register offset for en, Y, etc. */
-	info->gpio_info.clk_a_register_index =
-			le16_to_cpu(
-			header->gpio_pin[table_index].data_a_reg_index);
-	info->gpio_info.clk_a_shift =
-			header->gpio_pin[table_index].gpio_bitshift;
+	info->gpio_info.clk_a_register_index = le16_to_cpu(pin->data_a_reg_index);
+	info->gpio_info.clk_a_shift = pin->gpio_bitshift;
 
 	return BP_RESULT_OK;
 }
drivers/gpu/drm/amd/display/dc/dce/dce_transform.c +2 -3
index e2e79025825f..a54a30987924 100644
@@ -1011,7 +1011,7 @@ static void dce_transform_set_pixel_storage_depth(
 		color_depth = COLOR_DEPTH_101010;
 		pixel_depth = 0;
 		expan_mode  = 1;
-		BREAK_TO_DEBUGGER();
+		DC_LOG_DC("The pixel depth %d is not valid, set COLOR_DEPTH_101010 instead.", depth);
 		break;
 	}
 
@@ -1025,8 +1025,7 @@ static void dce_transform_set_pixel_storage_depth(
 	if (!(xfm_dce->lb_pixel_depth_supported & depth)) {
 		/*we should use unsupported capabilities
 		 *  unless it is required by w/a*/
-		DC_LOG_WARNING("%s: Capability not supported",
-			__func__);
+		DC_LOG_DC("%s: Capability not supported", __func__);
 	}
 }
 
drivers/gpu/drm/drm_mipi_dsi.c +1 -1
index 19fb1d93a4f0..0c806e99e869 100644
@@ -221,7 +221,7 @@ mipi_dsi_device_register_full(struct mipi_dsi_host *host,
 		return dsi;
 	}
 
-	dsi->dev.of_node = info->node;
+	device_set_node(&dsi->dev, of_fwnode_handle(info->node));
 	dsi->channel = info->channel;
 	strlcpy(dsi->name, info->type, sizeof(dsi->name));
 
drivers/gpu/drm/exynos/exynos_drm_g2d.h +2 -2
index 74ea3c26dead..1a5ae781b56c 100644
@@ -34,11 +34,11 @@ static inline int exynos_g2d_exec_ioctl(struct drm_device *dev, void *data,
 	return -ENODEV;
 }
 
-int g2d_open(struct drm_device *drm_dev, struct drm_file *file)
+static inline int g2d_open(struct drm_device *drm_dev, struct drm_file *file)
 {
 	return 0;
 }
 
-void g2d_close(struct drm_device *drm_dev, struct drm_file *file)
+static inline void g2d_close(struct drm_device *drm_dev, struct drm_file *file)
 { }
 #endif
drivers/gpu/drm/i915/display/intel_dp.c +5 -0
index 1c1931f5c958..7f633f8b3239 100644
@@ -2281,6 +2281,11 @@ static int intel_dp_dsc_compute_config(struct intel_dp *intel_dp,
 		pipe_config->dsc.slice_count =
 			drm_dp_dsc_sink_max_slice_count(intel_dp->dsc_dpcd,
 							true);
+		if (!pipe_config->dsc.slice_count) {
+			drm_dbg_kms(&dev_priv->drm, "Unsupported Slice Count %d\n",
+				    pipe_config->dsc.slice_count);
+			return -EINVAL;
+		}
 	} else {
 		u16 dsc_max_output_bpp;
 		u8 dsc_dp_slice_count;
drivers/gpu/drm/msm/disp/dpu1/dpu_hw_intf.c +0 -5
index 108882bbd2b8..7aa6accb74ad 100644
@@ -51,11 +51,6 @@
 #define   INTF_TPG_RGB_MAPPING          0x11C
 #define   INTF_PROG_FETCH_START         0x170
 #define   INTF_PROG_ROT_START           0x174
-
-#define   INTF_FRAME_LINE_COUNT_EN      0x0A8
-#define   INTF_FRAME_COUNT              0x0AC
-#define   INTF_LINE_COUNT               0x0B0
-
 #define   INTF_MUX                      0x25C
 
 static const struct dpu_intf_cfg *_intf_offset(enum dpu_intf intf,
drivers/gpu/drm/msm/dp/dp_audio.c +12 -0
index d7e4a39a904e..0eaaaa94563a 100644
@@ -577,6 +577,18 @@ static struct hdmi_codec_pdata codec_data = {
 	.i2s = 1,
 };
 
+void dp_unregister_audio_driver(struct device *dev, struct dp_audio *dp_audio)
+{
+	struct dp_audio_private *audio_priv;
+
+	audio_priv = container_of(dp_audio, struct dp_audio_private, dp_audio);
+
+	if (audio_priv->audio_pdev) {
+		platform_device_unregister(audio_priv->audio_pdev);
+		audio_priv->audio_pdev = NULL;
+	}
+}
+
 int dp_register_audio_driver(struct device *dev,
 		struct dp_audio *dp_audio)
 {
drivers/gpu/drm/msm/dp/dp_audio.h +2 -0
index 84e5f4a5d26b..4ab78880af82 100644
@@ -53,6 +53,8 @@ struct dp_audio *dp_audio_get(struct platform_device *pdev,
 int dp_register_audio_driver(struct device *dev,
 		struct dp_audio *dp_audio);
 
+void dp_unregister_audio_driver(struct device *dev, struct dp_audio *dp_audio);
+
 /**
  * dp_audio_put()
  *
drivers/gpu/drm/msm/dp/dp_display.c +1 -0
index 1c3dcbc6cce8..0bcccf422192 100644
@@ -276,6 +276,7 @@ static void dp_display_unbind(struct device *dev, struct device *master,
 	kthread_stop(dp->ev_tsk);
 
 	dp_power_client_deinit(dp->power);
+	dp_unregister_audio_driver(dev, dp->audio);
 	dp_aux_unregister(dp->aux);
 	priv->dp = NULL;
 }
drivers/gpu/drm/tegra/sor.c +1 -1
index 32c83f2e386c..9d60d1c4cfce 100644
@@ -1153,7 +1153,7 @@ static int tegra_sor_compute_config(struct tegra_sor *sor,
 				    struct drm_dp_link *link)
 {
 	const u64 f = 100000, link_rate = link->rate * 1000;
-	const u64 pclk = mode->clock * 1000;
+	const u64 pclk = (u64)mode->clock * 1000;
 	u64 input, output, watermark, num;
 	struct tegra_sor_params params;
 	u32 num_syms_per_line;
drivers/hid/hid-logitech-hidpp.c +51 -2

71 lines not on this page · raw message

drivers/hid/wacom.h +3 -0
index 203d27d198b8..3f8b24a57014 100644
@@ -91,6 +91,7 @@
 #include <linux/leds.h>
 #include <linux/usb/input.h>
 #include <linux/power_supply.h>
+#include <linux/timer.h>
 #include <asm/unaligned.h>
 
 /*
@@ -167,6 +168,7 @@ struct wacom {
 	struct delayed_work init_work;
 	struct wacom_remote *remote;
 	struct work_struct mode_change_work;
+	struct timer_list idleprox_timer;
 	bool generic_has_leds;
 	struct wacom_leds {
 		struct wacom_group_leds *groups;
@@ -239,4 +241,5 @@ struct wacom_led *wacom_led_find(struct wacom *wacom, unsigned int group,
 struct wacom_led *wacom_led_next(struct wacom *wacom, struct wacom_led *cur);
 int wacom_equivalent_usage(int usage);
 int wacom_initialize_leds(struct wacom *wacom);
+void wacom_idleprox_timeout(struct timer_list *list);
 #endif
drivers/hid/wacom_sys.c +2 -0
index b42785fdf7ed..a93070f5b214 100644
@@ -2781,6 +2781,7 @@ static int wacom_probe(struct hid_device *hdev,
 	INIT_WORK(&wacom->battery_work, wacom_battery_work);
 	INIT_WORK(&wacom->remote_work, wacom_remote_work);
 	INIT_WORK(&wacom->mode_change_work, wacom_mode_change_work);
+	timer_setup(&wacom->idleprox_timer, &wacom_idleprox_timeout, TIMER_DEFERRABLE);
 
 	/* ask for the report descriptor to be loaded by HID */
 	error = hid_parse(hdev);
@@ -2825,6 +2826,7 @@ static void wacom_remove(struct hid_device *hdev)
 	cancel_work_sync(&wacom->battery_work);
 	cancel_work_sync(&wacom->remote_work);
 	cancel_work_sync(&wacom->mode_change_work);
+	del_timer_sync(&wacom->idleprox_timer);
 	if (hdev->bus == BUS_BLUETOOTH)
 		device_remove_file(&hdev->dev, &dev_attr_speed);
 
drivers/hid/wacom_wac.c +58 -22

153 lines not on this page · raw message

drivers/hwtracing/coresight/coresight-tmc-etr.c +1 -1
index 3309b1344ffc..3e74f5aed20d 100644
@@ -926,7 +926,7 @@ tmc_etr_buf_insert_barrier_packet(struct etr_buf *etr_buf, u64 offset)
 
 	len = tmc_etr_buf_get_data(etr_buf, offset,
 				   CORESIGHT_BARRIER_PKT_SIZE, &bufp);
-	if (WARN_ON(len < CORESIGHT_BARRIER_PKT_SIZE))
+	if (WARN_ON(len < 0 || len < CORESIGHT_BARRIER_PKT_SIZE))
 		return -EINVAL;
 	coresight_insert_barrier_packet(bufp);
 	return offset + CORESIGHT_BARRIER_PKT_SIZE;
drivers/infiniband/core/user_mad.c +14 -9
index 4688a6657c87..3bd0dcde8576 100644
@@ -131,6 +131,11 @@ struct ib_umad_packet {
 	struct ib_user_mad mad;
 };
 
+struct ib_rmpp_mad_hdr {
+	struct ib_mad_hdr	mad_hdr;
+	struct ib_rmpp_hdr      rmpp_hdr;
+} __packed;
+
 #define CREATE_TRACE_POINTS
 #include <trace/events/ib_umad.h>
 
@@ -494,11 +499,11 @@ static ssize_t ib_umad_write(struct file *filp, const char __user *buf,
 			     size_t count, loff_t *pos)
 {
 	struct ib_umad_file *file = filp->private_data;
+	struct ib_rmpp_mad_hdr *rmpp_mad_hdr;
 	struct ib_umad_packet *packet;
 	struct ib_mad_agent *agent;
 	struct rdma_ah_attr ah_attr;
 	struct ib_ah *ah;
-	struct ib_rmpp_mad *rmpp_mad;
 	__be64 *tid;
 	int ret, data_len, hdr_len, copy_offset, rmpp_active;
 	u8 base_version;
@@ -506,7 +511,7 @@ static ssize_t ib_umad_write(struct file *filp, const char __user *buf,
 	if (count < hdr_size(file) + IB_MGMT_RMPP_HDR)
 		return -EINVAL;
 
-	packet = kzalloc(sizeof *packet + IB_MGMT_RMPP_HDR, GFP_KERNEL);
+	packet = kzalloc(sizeof(*packet) + IB_MGMT_RMPP_HDR, GFP_KERNEL);
 	if (!packet)
 		return -ENOMEM;
 
@@ -560,13 +565,13 @@ static ssize_t ib_umad_write(struct file *filp, const char __user *buf,
 		goto err_up;
 	}
 
-	rmpp_mad = (struct ib_rmpp_mad *) packet->mad.data;
-	hdr_len = ib_get_mad_data_offset(rmpp_mad->mad_hdr.mgmt_class);
+	rmpp_mad_hdr = (struct ib_rmpp_mad_hdr *)packet->mad.data;
+	hdr_len = ib_get_mad_data_offset(rmpp_mad_hdr->mad_hdr.mgmt_class);
 
-	if (ib_is_mad_class_rmpp(rmpp_mad->mad_hdr.mgmt_class)
+	if (ib_is_mad_class_rmpp(rmpp_mad_hdr->mad_hdr.mgmt_class)
 	    && ib_mad_kernel_rmpp_agent(agent)) {
 		copy_offset = IB_MGMT_RMPP_HDR;
-		rmpp_active = ib_get_rmpp_flags(&rmpp_mad->rmpp_hdr) &
+		rmpp_active = ib_get_rmpp_flags(&rmpp_mad_hdr->rmpp_hdr) &
 						IB_MGMT_RMPP_FLAG_ACTIVE;
 	} else {
 		copy_offset = IB_MGMT_MAD_HDR;
@@ -615,12 +620,12 @@ static ssize_t ib_umad_write(struct file *filp, const char __user *buf,
 		tid = &((struct ib_mad_hdr *) packet->msg->mad)->tid;
 		*tid = cpu_to_be64(((u64) agent->hi_tid) << 32 |
 				   (be64_to_cpup(tid) & 0xffffffff));
-		rmpp_mad->mad_hdr.tid = *tid;
+		rmpp_mad_hdr->mad_hdr.tid = *tid;
 	}
 
 	if (!ib_mad_kernel_rmpp_agent(agent)
-	   && ib_is_mad_class_rmpp(rmpp_mad->mad_hdr.mgmt_class)
-	   && (ib_get_rmpp_flags(&rmpp_mad->rmpp_hdr) & IB_MGMT_RMPP_FLAG_ACTIVE)) {
+	    && ib_is_mad_class_rmpp(rmpp_mad_hdr->mad_hdr.mgmt_class)
+	    && (ib_get_rmpp_flags(&rmpp_mad_hdr->rmpp_hdr) & IB_MGMT_RMPP_FLAG_ACTIVE)) {
 		spin_lock_irq(&file->send_lock);
 		list_add_tail(&packet->list, &file->send_list);
 		spin_unlock_irq(&file->send_lock);
drivers/input/joystick/xpad.c +4 -1
index 70dedc0f7827..0bd55e1fca37 100644
@@ -489,6 +489,9 @@ struct xboxone_init_packet {
 	}
 
 
+#define GIP_WIRED_INTF_DATA 0
+#define GIP_WIRED_INTF_AUDIO 1
+
 /*
  * This packet is required for all Xbox One pads with 2015
  * or later firmware installed (or present from the factory).
@@ -1813,7 +1816,7 @@ static int xpad_probe(struct usb_interface *intf, const struct usb_device_id *id
 	}
 
 	if (xpad->xtype == XTYPE_XBOXONE &&
-	    intf->cur_altsetting->desc.bInterfaceNumber != 0) {
+	    intf->cur_altsetting->desc.bInterfaceNumber != GIP_WIRED_INTF_DATA) {
 		/*
 		 * The Xbox One controller lists three interfaces all with the
 		 * same interface class, subclass and protocol. Differentiate by
drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c +14 -5
index bc4cbc7542ce..982c42c87310 100644
@@ -162,6 +162,18 @@ static void queue_inc_cons(struct arm_smmu_ll_queue *q)
 	q->cons = Q_OVF(q->cons) | Q_WRP(q, cons) | Q_IDX(q, cons);
 }
 
+static void queue_sync_cons_ovf(struct arm_smmu_queue *q)
+{
+	struct arm_smmu_ll_queue *llq = &q->llq;
+
+	if (likely(Q_OVF(llq->prod) == Q_OVF(llq->cons)))
+		return;
+
+	llq->cons = Q_OVF(llq->prod) | Q_WRP(llq, llq->cons) |
+		      Q_IDX(llq, llq->cons);
+	queue_sync_cons_out(q);
+}
+
 static int queue_sync_prod_in(struct arm_smmu_queue *q)
 {
 	u32 prod;
@@ -1380,8 +1392,7 @@ static irqreturn_t arm_smmu_evtq_thread(int irq, void *dev)
 	} while (!queue_empty(llq));
 
 	/* Sync our overflow flag, as we believe we're up to speed */
-	llq->cons = Q_OVF(llq->prod) | Q_WRP(llq, llq->cons) |
-		    Q_IDX(llq, llq->cons);
+	queue_sync_cons_ovf(q);
 	return IRQ_HANDLED;
 }
 
@@ -1439,9 +1450,7 @@ static irqreturn_t arm_smmu_priq_thread(int irq, void *dev)
 	} while (!queue_empty(llq));
 
 	/* Sync our overflow flag, as we believe we're up to speed */
-	llq->cons = Q_OVF(llq->prod) | Q_WRP(llq, llq->cons) |
-		      Q_IDX(llq, llq->cons);
-	queue_sync_cons_out(q);
+	queue_sync_cons_ovf(q);
 	return IRQ_HANDLED;
 }
 
drivers/iommu/arm/arm-smmu/arm-smmu-qcom.c +15 -1
index 63f7173b241f..1598a1ddbf69 100644
@@ -32,12 +32,26 @@ static const struct of_device_id qcom_smmu_client_of_match[] __maybe_unused = {
 
 static int qcom_smmu_cfg_probe(struct arm_smmu_device *smmu)
 {
-	unsigned int last_s2cr = ARM_SMMU_GR0_S2CR(smmu->num_mapping_groups - 1);
 	struct qcom_smmu *qsmmu = to_qcom_smmu(smmu);
+	unsigned int last_s2cr;
 	u32 reg;
 	u32 smr;
 	int i;
 
+	/*
+	 * Some platforms support more than the Arm SMMU architected maximum of
+	 * 128 stream matching groups. For unknown reasons, the additional
+	 * groups don't exhibit the same behavior as the architected registers,
+	 * so limit the groups to 128 until the behavior is fixed for the other
+	 * groups.
+	 */
+	if (smmu->num_mapping_groups > 128) {
+		dev_notice(smmu->dev, "\tLimiting the stream matching groups to 128\n");
+		smmu->num_mapping_groups = 128;
+	}
+
+	last_s2cr = ARM_SMMU_GR0_S2CR(smmu->num_mapping_groups - 1);
+
 	/*
 	 * With some firmware versions writes to S2CR of type FAULT are
 	 * ignored, and writing BYPASS will end up written as FAULT in the
drivers/mcb/mcb-pci.c +25 -2
index dc88232d9af8..53d9202ff9a7 100644
@@ -31,7 +31,7 @@ static int mcb_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id)
 {
 	struct resource *res;
 	struct priv *priv;
-	int ret;
+	int ret, table_size;
 	unsigned long flags;
 
 	priv = devm_kzalloc(&pdev->dev, sizeof(struct priv), GFP_KERNEL);
@@ -90,7 +90,30 @@ static int mcb_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id)
 	if (ret < 0)
 		goto out_mcb_bus;
 
-	dev_dbg(&pdev->dev, "Found %d cells\n", ret);
+	table_size = ret;
+
+	if (table_size < CHAM_HEADER_SIZE) {
+		/* Release the previous resources */
+		devm_iounmap(&pdev->dev, priv->base);
+		devm_release_mem_region(&pdev->dev, priv->mapbase, CHAM_HEADER_SIZE);
+
+		/* Then, allocate it again with the actual chameleon table size */
+		res = devm_request_mem_region(&pdev->dev, priv->mapbase,
+						table_size,
+						KBUILD_MODNAME);
+		if (!res) {
+			dev_err(&pdev->dev, "Failed to request PCI memory\n");
+			ret = -EBUSY;
+			goto out_mcb_bus;
+		}
+
+		priv->base = devm_ioremap(&pdev->dev, priv->mapbase, table_size);
+		if (!priv->base) {
+			dev_err(&pdev->dev, "Cannot ioremap\n");
+			ret = -ENOMEM;
+			goto out_mcb_bus;
+		}
+	}
 
 	mcb_bus_add_devices(priv->bus);
 
drivers/media/pci/netup_unidvb/netup_unidvb_core.c +1 -1
index 77bae1468551..a71814e2772d 100644
@@ -697,7 +697,7 @@ static void netup_unidvb_dma_fini(struct netup_unidvb_dev *ndev, int num)
 	netup_unidvb_dma_enable(dma, 0);
 	msleep(50);
 	cancel_work_sync(&dma->work);
-	del_timer(&dma->timeout);
+	del_timer_sync(&dma->timeout);
 }
 
 static int netup_unidvb_dma_setup(struct netup_unidvb_dev *ndev)
drivers/media/radio/radio-shark.c +10 -0
index 8230da828d0e..127a3be0e0f0 100644
@@ -316,6 +316,16 @@ static int usb_shark_probe(struct usb_interface *intf,
 {
 	struct shark_device *shark;
 	int retval = -ENOMEM;
+	static const u8 ep_addresses[] = {
+		SHARK_IN_EP | USB_DIR_IN,
+		SHARK_OUT_EP | USB_DIR_OUT,
+		0};
+
+	/* Are the expected endpoints present? */
+	if (!usb_check_int_endpoints(intf, ep_addresses)) {
+		dev_err(&intf->dev, "Invalid radioSHARK device\n");
+		return -EINVAL;
+	}
 
 	shark = kzalloc(sizeof(struct shark_device), GFP_KERNEL);
 	if (!shark)
drivers/media/radio/radio-shark2.c +10 -0
index d150f12382c6..f1c5c0a6a335 100644
@@ -282,6 +282,16 @@ static int usb_shark_probe(struct usb_interface *intf,
 {
 	struct shark_device *shark;
 	int retval = -ENOMEM;
+	static const u8 ep_addresses[] = {
+		SHARK_IN_EP | USB_DIR_IN,
+		SHARK_OUT_EP | USB_DIR_OUT,
+		0};
+
+	/* Are the expected endpoints present? */
+	if (!usb_check_int_endpoints(intf, ep_addresses)) {
+		dev_err(&intf->dev, "Invalid radioSHARK2 device\n");
+		return -EINVAL;
+	}
 
 	shark = kzalloc(sizeof(struct shark_device), GFP_KERNEL);
 	if (!shark)
drivers/memstick/host/r592.c +1 -1
index eaa2a94d18be..dd06c18495eb 100644
@@ -828,7 +828,7 @@ static void r592_remove(struct pci_dev *pdev)
 	/* Stop the processing thread.
 	That ensures that we won't take any more requests */
 	kthread_stop(dev->io_thread);
-
+	del_timer_sync(&dev->detect_timer);
 	r592_enable_device(dev, false);
 
 	while (!error && dev->req) {
drivers/message/fusion/mptlan.c +2 -0
index 7d3784aa20e5..90cc3cd49a5e 100644
@@ -1430,7 +1430,9 @@ mptlan_remove(struct pci_dev *pdev)
 {
 	MPT_ADAPTER 		*ioc = pci_get_drvdata(pdev);
 	struct net_device	*dev = ioc->netdev;
+	struct mpt_lan_priv *priv = netdev_priv(dev);
 
+	cancel_delayed_work_sync(&priv->post_buckets_task);
 	if(dev != NULL) {
 		unregister_netdev(dev);
 		free_netdev(dev);
drivers/mfd/dln2.c +1 -0
index 852129ea0766..fc65f9e25fda 100644
@@ -836,6 +836,7 @@ static int dln2_probe(struct usb_interface *interface,
 	dln2_stop_rx_urbs(dln2);
 
 out_free:
+	usb_put_dev(dln2->usb_dev);
 	dln2_free(dln2);
 
 	return ret;
drivers/net/bonding/bond_main.c +7 -1
index c40b92f8d16b..381e6cdd603a 100644
@@ -3537,7 +3537,11 @@ static int bond_slave_netdev_event(unsigned long event,
 		unblock_netpoll_tx();
 		break;
 	case NETDEV_FEAT_CHANGE:
-		bond_compute_features(bond);
+		if (!bond->notifier_ctx) {
+			bond->notifier_ctx = true;
+			bond_compute_features(bond);
+			bond->notifier_ctx = false;
+		}
 		break;
 	case NETDEV_RESEND_IGMP:
 		/* Propagate to master device */
@@ -5360,6 +5364,8 @@ static int bond_init(struct net_device *bond_dev)
 	if (!bond->wq)
 		return -ENOMEM;
 
+	bond->notifier_ctx = false;
+
 	spin_lock_init(&bond->stats_lock);
 	netdev_lockdep_set_classes(bond_dev);
 
drivers/net/can/kvaser_pciefd.c +29 -22

145 lines not on this page · raw message

drivers/net/ethernet/3com/3c589_cs.c +10 -1
index 09816e84314d..0197ef6f1582 100644
@@ -195,6 +195,7 @@ static int tc589_probe(struct pcmcia_device *link)
 {
 	struct el3_private *lp;
 	struct net_device *dev;
+	int ret;
 
 	dev_dbg(&link->dev, "3c589_attach()\n");
 
@@ -218,7 +219,15 @@ static int tc589_probe(struct pcmcia_device *link)
 
 	dev->ethtool_ops = &netdev_ethtool_ops;
 
-	return tc589_config(link);
+	ret = tc589_config(link);
+	if (ret)
+		goto err_free_netdev;
+
+	return 0;
+
+err_free_netdev:
+	free_netdev(dev);
+	return ret;
 }
 
 static void tc589_detach(struct pcmcia_device *link)
drivers/net/ethernet/broadcom/genet/bcmgenet.c +5 -4
index 7667cbb5adfd..145488449f13 100644
@@ -3397,7 +3397,7 @@ static int bcmgenet_open(struct net_device *dev)
 	return ret;
 }
 
-static void bcmgenet_netif_stop(struct net_device *dev)
+static void bcmgenet_netif_stop(struct net_device *dev, bool stop_phy)
 {
 	struct bcmgenet_priv *priv = netdev_priv(dev);
 
@@ -3412,7 +3412,8 @@ static void bcmgenet_netif_stop(struct net_device *dev)
 	/* Disable MAC transmit. TX DMA disabled must be done before this */
 	umac_enable_set(priv, CMD_TX_EN, false);
 
-	phy_stop(dev->phydev);
+	if (stop_phy)
+		phy_stop(dev->phydev);
 	bcmgenet_disable_rx_napi(priv);
 	bcmgenet_intr_disable(priv);
 
@@ -3438,7 +3439,7 @@ static int bcmgenet_close(struct net_device *dev)
 
 	netif_dbg(priv, ifdown, dev, "bcmgenet_close\n");
 
-	bcmgenet_netif_stop(dev);
+	bcmgenet_netif_stop(dev, false);
 
 	/* Really kill the PHY state machine and disconnect from it */
 	phy_disconnect(dev->phydev);
@@ -4240,7 +4241,7 @@ static int bcmgenet_suspend(struct device *d)
 
 	netif_device_detach(dev);
 
-	bcmgenet_netif_stop(dev);
+	bcmgenet_netif_stop(dev, true);
 
 	if (!device_may_wakeup(d))
 		phy_suspend(dev->phydev);
drivers/net/ethernet/freescale/fec_main.c +11 -4
index 686bb873125c..e18b3b72fc0d 100644
@@ -3850,9 +3850,11 @@ fec_drv_remove(struct platform_device *pdev)
 	struct device_node *np = pdev->dev.of_node;
 	int ret;
 
-	ret = pm_runtime_resume_and_get(&pdev->dev);
+	ret = pm_runtime_get_sync(&pdev->dev);
 	if (ret < 0)
-		return ret;
+		dev_err(&pdev->dev,
+			"Failed to resume device in remove callback (%pe)\n",
+			ERR_PTR(ret));
 
 	cancel_work_sync(&fep->tx_timeout_work);
 	fec_ptp_stop(pdev);
@@ -3865,8 +3867,13 @@ fec_drv_remove(struct platform_device *pdev)
 		of_phy_deregister_fixed_link(np);
 	of_node_put(fep->phy_node);
 
-	clk_disable_unprepare(fep->clk_ahb);
-	clk_disable_unprepare(fep->clk_ipg);
+	/* After pm_runtime_get_sync() failed, the clks are still off, so skip
+	 * disabling them again.
+	 */
+	if (ret >= 0) {
+		clk_disable_unprepare(fep->clk_ahb);
+		clk_disable_unprepare(fep->clk_ipg);
+	}
 	pm_runtime_put_noidle(&pdev->dev);
 	pm_runtime_disable(&pdev->dev);
 
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c +9 -6
index 2070e26a3a35..1ec1709446ba 100644
@@ -7023,12 +7023,15 @@ static void hclge_ae_stop(struct hnae3_handle *handle)
 	/* If it is not PF reset or FLR, the firmware will disable the MAC,
 	 * so it only need to stop phy here.
 	 */
-	if (test_bit(HCLGE_STATE_RST_HANDLING, &hdev->state) &&
-	    hdev->reset_type != HNAE3_FUNC_RESET &&
-	    hdev->reset_type != HNAE3_FLR_RESET) {
-		hclge_mac_stop_phy(hdev);
-		hclge_update_link_status(hdev);
-		return;
+	if (test_bit(HCLGE_STATE_RST_HANDLING, &hdev->state)) {
+		hclge_pfc_pause_en_cfg(hdev, HCLGE_PFC_TX_RX_DISABLE,
+				       HCLGE_PFC_DISABLE);
+		if (hdev->reset_type != HNAE3_FUNC_RESET &&
+		    hdev->reset_type != HNAE3_FLR_RESET) {
+			hclge_mac_stop_phy(hdev);
+			hclge_update_link_status(hdev);
+			return;
+		}
 	}
 
 	for (i = 0; i < handle->kinfo.num_tqps; i++)
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_tm.c +2 -2
index 9168e39b6364..b3ceaaaeacae 100644
@@ -169,8 +169,8 @@ int hclge_mac_pause_en_cfg(struct hclge_dev *hdev, bool tx, bool rx)
 	return hclge_cmd_send(&hdev->hw, &desc, 1);
 }
 
-static int hclge_pfc_pause_en_cfg(struct hclge_dev *hdev, u8 tx_rx_bitmap,
-				  u8 pfc_bitmap)
+int hclge_pfc_pause_en_cfg(struct hclge_dev *hdev, u8 tx_rx_bitmap,
+			   u8 pfc_bitmap)
 {
 	struct hclge_desc desc;
 	struct hclge_pfc_en_cmd *pfc = (struct hclge_pfc_en_cmd *)desc.data;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_tm.h +5 -0
index bb2a2d8e9259..42932c879b36 100644
@@ -117,6 +117,9 @@ struct hclge_bp_to_qs_map_cmd {
 	u32 rsvd1;
 };
 
+#define HCLGE_PFC_DISABLE	0
+#define HCLGE_PFC_TX_RX_DISABLE	0
+
 struct hclge_pfc_en_cmd {
 	u8 tx_rx_en_bitmap;
 	u8 pri_en_bitmap;
@@ -164,6 +167,8 @@ void hclge_tm_schd_info_update(struct hclge_dev *hdev, u8 num_tc);
 void hclge_tm_pfc_info_update(struct hclge_dev *hdev);
 int hclge_tm_dwrr_cfg(struct hclge_dev *hdev);
 int hclge_tm_init_hw(struct hclge_dev *hdev, bool init);
+int hclge_pfc_pause_en_cfg(struct hclge_dev *hdev, u8 tx_rx_bitmap,
+			   u8 pfc_bitmap);
 int hclge_mac_pause_en_cfg(struct hclge_dev *hdev, bool tx, bool rx);
 int hclge_pause_addr_cfg(struct hclge_dev *hdev, const u8 *mac_addr);
 int hclge_pfc_rx_stats_get(struct hclge_dev *hdev, u64 *stats);
drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c +4 -1
index f7f3e4bbc477..7d05915c35e3 100644
@@ -1772,7 +1772,10 @@ static int hclgevf_reset_wait(struct hclgevf_dev *hdev)
 	 * might happen in case reset assertion was made by PF. Yes, this also
 	 * means we might end up waiting bit more even for VF reset.
 	 */
-	msleep(5000);
+	if (hdev->reset_type == HNAE3_VF_FULL_RESET)
+		msleep(5000);
+	else
+		msleep(500);
 
 	return 0;
 }
drivers/net/ethernet/intel/igb/e1000_mac.c +2 -2
index fd8eb2f9ab9d..57e813405b31 100644
@@ -426,7 +426,7 @@ void igb_mta_set(struct e1000_hw *hw, u32 hash_value)
 static u32 igb_hash_mc_addr(struct e1000_hw *hw, u8 *mc_addr)
 {
 	u32 hash_value, hash_mask;
-	u8 bit_shift = 0;
+	u8 bit_shift = 1;
 
 	/* Register count multiplied by bits per register */
 	hash_mask = (hw->mac.mta_reg_count * 32) - 1;
@@ -434,7 +434,7 @@ static u32 igb_hash_mc_addr(struct e1000_hw *hw, u8 *mc_addr)
 	/* For a mc_filter_type of 0, bit_shift is the number of left-shifts
 	 * where 0xFF would still fall within the hash mask.
 	 */
-	while (hash_mask >> bit_shift != 0xFF)
+	while (hash_mask >> bit_shift != 0xFF && bit_shift < 4)
 		bit_shift++;
 
 	/* The portion of the address that is used for the hash table
drivers/net/ethernet/marvell/octeontx2/nic/otx2_txrx.c +1 -3
index d5d7a2f37493..a0a6dadbcc90 100644
@@ -526,9 +526,7 @@ static void otx2_sqe_add_ext(struct otx2_nic *pfvf, struct otx2_snd_queue *sq,
 				htons(ext->lso_sb - skb_network_offset(skb));
 		} else if (skb_shinfo(skb)->gso_type & SKB_GSO_TCPV6) {
 			ext->lso_format = pfvf->hw.lso_tsov6_idx;
-
-			ipv6_hdr(skb)->payload_len =
-				htons(ext->lso_sb - skb_network_offset(skb));
+			ipv6_hdr(skb)->payload_len = htons(tcp_hdrlen(skb));
 		} else if (skb_shinfo(skb)->gso_type & SKB_GSO_UDP_L4) {
 			__be16 l3_proto = vlan_get_protocol(skb);
 			struct udphdr *udph = udp_hdr(skb);
drivers/net/ethernet/mellanox/mlx5/core/en_txrx.c +9 -7
index d5868670f8a5..53ac2383327e 100644
@@ -137,20 +137,22 @@ int mlx5e_napi_poll(struct napi_struct *napi, int budget)
 	for (i = 0; i < c->num_tc; i++)
 		busy |= mlx5e_poll_tx_cq(&c->sq[i].cq, budget);
 
+	/* budget=0 means we may be in IRQ context, do as little as possible */
+	if (unlikely(!budget))
+		goto out;
+
 	busy |= mlx5e_poll_xdpsq_cq(&c->xdpsq.cq);
 
 	if (c->xdp)
 		busy |= mlx5e_poll_xdpsq_cq(&c->rq_xdpsq.cq);
 
-	if (likely(budget)) { /* budget=0 means: don't poll rx rings */
-		if (xsk_open)
-			work_done = mlx5e_poll_rx_cq(&xskrq->cq, budget);
+	if (xsk_open)
+		work_done = mlx5e_poll_rx_cq(&xskrq->cq, budget);
 
-		if (likely(budget - work_done))
-			work_done += mlx5e_poll_rx_cq(&rq->cq, budget - work_done);
+	if (likely(budget - work_done))
+		work_done += mlx5e_poll_rx_cq(&rq->cq, budget - work_done);
 
-		busy |= work_done == budget;
-	}
+	busy |= work_done == budget;
 
 	mlx5e_poll_ico_cq(&c->icosq.cq);
 	if (mlx5e_poll_ico_cq(&c->async_icosq.cq))
drivers/net/ethernet/mellanox/mlx5/core/lib/devcom.c +2 -1
index bced2efe9bef..abd066e95228 100644
@@ -110,7 +110,8 @@ struct mlx5_devcom *mlx5_devcom_register_device(struct mlx5_core_dev *dev)
 	priv->devs[idx] = dev;
 	devcom = mlx5_devcom_alloc(priv, idx);
 	if (!devcom) {
-		kfree(priv);
+		if (new_priv)
+			kfree(priv);
 		return ERR_PTR(-ENOMEM);
 	}
 
drivers/net/ethernet/mellanox/mlx5/core/main.c +1 -1
index 112eaef186e1..da4ca0f67e9c 100644
@@ -887,7 +887,7 @@ static int mlx5_init_once(struct mlx5_core_dev *dev)
 
 	dev->dm = mlx5_dm_create(dev);
 	if (IS_ERR(dev->dm))
-		mlx5_core_warn(dev, "Failed to init device memory%d\n", err);
+		mlx5_core_warn(dev, "Failed to init device memory %ld\n", PTR_ERR(dev->dm));
 
 	dev->tracer = mlx5_fw_tracer_create(dev);
 	dev->hv_vhca = mlx5_hv_vhca_create(dev);
drivers/net/ethernet/mellanox/mlx5/core/steering/dr_ste.c +2 -1
index b01aaec75622..3b5deb0fe7eb 100644
@@ -112,7 +112,8 @@ static u32 dr_ste_crc32_calc(const void *input_data, size_t length)
 {
 	u32 crc = crc32(0, input_data, length);
 
-	return (__force u32)htonl(crc);
+	return (__force u32)((crc >> 24) & 0xff) | ((crc << 8) & 0xff0000) |
+			    ((crc >> 8) & 0xff00) | ((crc << 24) & 0xff000000);
 }
 
 u32 mlx5dr_ste_calc_hash_index(u8 *hw_ste_p, struct mlx5dr_ste_htbl *htbl)
drivers/net/ethernet/nvidia/forcedeth.c +1 -0
index 2fc10a36afa4..e14dd1051e58 100644
@@ -6138,6 +6138,7 @@ static int nv_probe(struct pci_dev *pci_dev, const struct pci_device_id *id)
 	return 0;
 
 out_error:
+	nv_mgmt_release_sema(dev);
 	if (phystate_orig)
 		writel(phystate|NVREG_ADAPTCTL_RUNNING, base + NvRegAdapterControl);
 out_freering:
drivers/net/ethernet/pasemi/pasemi_mac.c +1 -1
index 040a15a828b4..c1d7bd168f1d 100644
@@ -1423,7 +1423,7 @@ static void pasemi_mac_queue_csdesc(const struct sk_buff *skb,
 	write_dma_reg(PAS_DMA_TXCHAN_INCR(txring->chan.chno), 2);
 }
 
-static int pasemi_mac_start_tx(struct sk_buff *skb, struct net_device *dev)
+static netdev_tx_t pasemi_mac_start_tx(struct sk_buff *skb, struct net_device *dev)
 {
 	struct pasemi_mac * const mac = netdev_priv(dev);
 	struct pasemi_mac_txring * const txring = tx_ring(mac);
drivers/net/ethernet/sun/cassini.c +2 -0
index 9ff894ba8d3e..d245f6e21e8c 100644
@@ -5122,6 +5122,8 @@ static int cas_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
 		cas_shutdown(cp);
 	mutex_unlock(&cp->pm_mutex);
 
+	vfree(cp->fw_data);
+
 	pci_iounmap(pdev, cp->regs);
 
 
drivers/net/ipvlan/ipvlan_core.c +6 -0
index a33149ee0ddc..0a5b5ff597c6 100644
@@ -437,6 +437,9 @@ static int ipvlan_process_v4_outbound(struct sk_buff *skb)
 		goto err;
 	}
 	skb_dst_set(skb, &rt->dst);
+
+	memset(IPCB(skb), 0, sizeof(*IPCB(skb)));
+
 	err = ip_local_out(net, skb->sk, skb);
 	if (unlikely(net_xmit_eval(err)))
 		dev->stats.tx_errors++;
@@ -475,6 +478,9 @@ static int ipvlan_process_v6_outbound(struct sk_buff *skb)
 		goto err;
 	}
 	skb_dst_set(skb, dst);
+
+	memset(IP6CB(skb), 0, sizeof(*IP6CB(skb)));
+
 	err = ip6_local_out(net, skb->sk, skb);
 	if (unlikely(net_xmit_eval(err)))
 		dev->stats.tx_errors++;
drivers/net/mdio/mdio-mvusb.c +10 -1
index d5eabddfdf51..11e048136ac2 100644
@@ -73,6 +73,7 @@ static int mvusb_mdio_probe(struct usb_interface *interface,
 	struct device *dev = &interface->dev;
 	struct mvusb_mdio *mvusb;
 	struct mii_bus *mdio;
+	int ret;
 
 	mdio = devm_mdiobus_alloc_size(dev, sizeof(*mvusb));
 	if (!mdio)
@@ -93,7 +94,15 @@ static int mvusb_mdio_probe(struct usb_interface *interface,
 	mdio->write = mvusb_mdio_write;
 
 	usb_set_intfdata(interface, mvusb);
-	return of_mdiobus_register(mdio, dev->of_node);
+	ret = of_mdiobus_register(mdio, dev->of_node);
+	if (ret)
+		goto put_dev;
+
+	return 0;
+
+put_dev:
+	usb_put_dev(mvusb->udev);
+	return ret;
 }
 
 static void mvusb_mdio_disconnect(struct usb_interface *interface)
drivers/net/phy/dp83867.c +21 -1
index c8031e297faf..5fabcd15ef77 100644
@@ -41,6 +41,7 @@
 #define DP83867_STRAP_STS1	0x006E
 #define DP83867_STRAP_STS2	0x006f
 #define DP83867_RGMIIDCTL	0x0086
+#define DP83867_DSP_FFE_CFG	0x012c
 #define DP83867_RXFCFG		0x0134
 #define DP83867_RXFPMD1	0x0136
 #define DP83867_RXFPMD2	0x0137
@@ -807,8 +808,27 @@ static int dp83867_phy_reset(struct phy_device *phydev)
 
 	usleep_range(10, 20);
 
-	return phy_modify(phydev, MII_DP83867_PHYCTRL,
+	err = phy_modify(phydev, MII_DP83867_PHYCTRL,
 			 DP83867_PHYCR_FORCE_LINK_GOOD, 0);
+	if (err < 0)
+		return err;
+
+	/* Configure the DSP Feedforward Equalizer Configuration register to
+	 * improve short cable (< 1 meter) performance. This will not affect
+	 * long cable performance.
+	 */
+	err = phy_write_mmd(phydev, DP83867_DEVADDR, DP83867_DSP_FFE_CFG,
+			    0x0e81);
+	if (err < 0)
+		return err;
+
+	err = phy_write(phydev, DP83867_CTRL, DP83867_SW_RESTART);
+	if (err < 0)
+		return err;
+
+	usleep_range(10, 20);
+
+	return 0;
 }
 
 static void dp83867_link_change_notify(struct phy_device *phydev)
drivers/net/phy/mscc/mscc_main.c +1 -0
index e14fa72791b0..ffac713afa55 100644
@@ -2563,6 +2563,7 @@ static struct phy_driver vsc85xx_driver[] = {
 module_phy_driver(vsc85xx_driver);
 
 static struct mdio_device_id __maybe_unused vsc85xx_tbl[] = {
+	{ PHY_ID_VSC8502, 0xfffffff0, },
 	{ PHY_ID_VSC8504, 0xfffffff0, },
 	{ PHY_ID_VSC8514, 0xfffffff0, },
 	{ PHY_ID_VSC8530, 0xfffffff0, },
drivers/net/tap.c +4 -6
index d9018d9fe310..f9b3eb2d8d8b 100644
@@ -713,9 +713,8 @@ static ssize_t tap_get_user(struct tap_queue *q, void *msg_control,
 	skb_probe_transport_header(skb);
 
 	/* Move network header to the right position for VLAN tagged packets */
-	if ((skb->protocol == htons(ETH_P_8021Q) ||
-	     skb->protocol == htons(ETH_P_8021AD)) &&
-	    __vlan_get_protocol(skb, skb->protocol, &depth) != 0)
+	if (eth_type_vlan(skb->protocol) &&
+	    vlan_get_protocol_and_depth(skb, skb->protocol, &depth) != 0)
 		skb_set_network_header(skb, depth);
 
 	rcu_read_lock();
@@ -1165,9 +1164,8 @@ static int tap_get_user_xdp(struct tap_queue *q, struct xdp_buff *xdp)
 	}
 
 	/* Move network header to the right position for VLAN tagged packets */
-	if ((skb->protocol == htons(ETH_P_8021Q) ||
-	     skb->protocol == htons(ETH_P_8021AD)) &&
-	    __vlan_get_protocol(skb, skb->protocol, &depth) != 0)
+	if (eth_type_vlan(skb->protocol) &&
+	    vlan_get_protocol_and_depth(skb, skb->protocol, &depth) != 0)
 		skb_set_network_header(skb, depth);
 
 	rcu_read_lock();
drivers/net/team/team.c +6 -1
index 7117d559a32e..8a1619695421 100644
@@ -1624,6 +1624,7 @@ static int team_init(struct net_device *dev)
 
 	team->dev = dev;
 	team_set_no_mode(team);
+	team->notifier_ctx = false;
 
 	team->pcpu_stats = netdev_alloc_pcpu_stats(struct team_pcpu_stats);
 	if (!team->pcpu_stats)
@@ -3016,7 +3017,11 @@ static int team_device_event(struct notifier_block *unused,
 		team_del_slave(port->team->dev, dev);
 		break;
 	case NETDEV_FEAT_CHANGE:
-		team_compute_features(port->team);
+		if (!port->team->notifier_ctx) {
+			port->team->notifier_ctx = true;
+			team_compute_features(port->team);
+			port->team->notifier_ctx = false;
+		}
 		break;
 	case NETDEV_PRECHANGEMTU:
 		/* Forbid to change mtu of underlaying device */
drivers/net/usb/cdc_ncm.c +15 -9
index ab91fa5b0194..57b1e6dc62f0 100644
@@ -180,9 +180,12 @@ static u32 cdc_ncm_check_tx_max(struct usbnet *dev, u32 new_tx)
 	else
 		min = ctx->max_datagram_size + ctx->max_ndp_size + sizeof(struct usb_cdc_ncm_nth32);
 
-	max = min_t(u32, CDC_NCM_NTB_MAX_SIZE_TX, le32_to_cpu(ctx->ncm_parm.dwNtbOutMaxSize));
-	if (max == 0)
+	if (le32_to_cpu(ctx->ncm_parm.dwNtbOutMaxSize) == 0)
 		max = CDC_NCM_NTB_MAX_SIZE_TX; /* dwNtbOutMaxSize not set */
+	else
+		max = clamp_t(u32, le32_to_cpu(ctx->ncm_parm.dwNtbOutMaxSize),
+			      USB_CDC_NCM_NTB_MIN_OUT_SIZE,
+			      CDC_NCM_NTB_MAX_SIZE_TX);
 
 	/* some devices set dwNtbOutMaxSize too low for the above default */
 	min = min(min, max);
@@ -1230,6 +1233,9 @@ cdc_ncm_fill_tx_frame(struct usbnet *dev, struct sk_buff *skb, __le32 sign)
 			 * further.
 			 */
 			if (skb_out == NULL) {
+				/* If even the smallest allocation fails, abort. */
+				if (ctx->tx_curr_size == USB_CDC_NCM_NTB_MIN_OUT_SIZE)
+					goto alloc_failed;
 				ctx->tx_low_mem_max_cnt = min(ctx->tx_low_mem_max_cnt + 1,
 							      (unsigned)CDC_NCM_LOW_MEM_MAX_CNT);
 				ctx->tx_low_mem_val = ctx->tx_low_mem_max_cnt;
@@ -1248,13 +1254,8 @@ cdc_ncm_fill_tx_frame(struct usbnet *dev, struct sk_buff *skb, __le32 sign)
 			skb_out = alloc_skb(ctx->tx_curr_size, GFP_ATOMIC);
 
 			/* No allocation possible so we will abort */
-			if (skb_out == NULL) {
-				if (skb != NULL) {
-					dev_kfree_skb_any(skb);
-					dev->net->stats.tx_dropped++;
-				}
-				goto exit_no_skb;
-			}
+			if (!skb_out)
+				goto alloc_failed;
 			ctx->tx_low_mem_val--;
 		}
 		if (ctx->is_ndp16) {
@@ -1447,6 +1448,11 @@ cdc_ncm_fill_tx_frame(struct usbnet *dev, struct sk_buff *skb, __le32 sign)
 
 	return skb_out;
 
+alloc_failed:
+	if (skb) {
+		dev_kfree_skb_any(skb);
+		dev->net->stats.tx_dropped++;
+	}
 exit_no_skb:
 	/* Start timer, if there is a remaining non-empty skb */
 	if (ctx->tx_curr_skb != NULL && n > 0)
drivers/net/wireless/ath/ath.h +7 -5
index f083fb9038c3..f02a308a9ffc 100644
@@ -96,11 +96,13 @@ struct ath_keyval {
 	u8 kv_type;
 	u8 kv_pad;
 	u16 kv_len;
-	u8 kv_val[16]; /* TK */
-	u8 kv_mic[8]; /* Michael MIC key */
-	u8 kv_txmic[8]; /* Michael MIC TX key (used only if the hardware
-			 * supports both MIC keys in the same key cache entry;
-			 * in that case, kv_mic is the RX key) */
+	struct_group(kv_values,
+		u8 kv_val[16]; /* TK */
+		u8 kv_mic[8]; /* Michael MIC key */
+		u8 kv_txmic[8]; /* Michael MIC TX key (used only if the hardware
+				 * supports both MIC keys in the same key cache entry;
+				 * in that case, kv_mic is the RX key) */
+	);
 };
 
 enum ath_cipher {
drivers/net/wireless/ath/ath11k/dp_rx.c +6 -3
index 578fdc446bc0..583bcf148403 100644
@@ -324,10 +324,10 @@ int ath11k_dp_rxbufs_replenish(struct ath11k_base *ab, int mac_id,
 			goto fail_free_skb;
 
 		spin_lock_bh(&rx_ring->idr_lock);
-		buf_id = idr_alloc(&rx_ring->bufs_idr, skb, 0,
-				   rx_ring->bufs_max * 3, GFP_ATOMIC);
+		buf_id = idr_alloc(&rx_ring->bufs_idr, skb, 1,
+				   (rx_ring->bufs_max * 3) + 1, GFP_ATOMIC);
 		spin_unlock_bh(&rx_ring->idr_lock);
-		if (buf_id < 0)
+		if (buf_id <= 0)
 			goto fail_dma_unmap;
 
 		desc = ath11k_hal_srng_src_get_next_entry(ab, srng);
@@ -2564,6 +2564,9 @@ int ath11k_dp_process_rx(struct ath11k_base *ab, int ring_id,
 				   cookie);
 		mac_id = FIELD_GET(DP_RXDMA_BUF_COOKIE_PDEV_ID, cookie);
 
+		if (unlikely(buf_id == 0))
+			continue;
+
 		ar = ab->pdevs[mac_id].ar;
 		rx_ring = &ar->dp.rx_refill_buf_ring;
 		spin_lock_bh(&rx_ring->idr_lock);
drivers/net/wireless/ath/key.c +1 -1
index 61b59a804e30..b7b61d4f02ba 100644
@@ -503,7 +503,7 @@ int ath_key_config(struct ath_common *common,
 
 	hk.kv_len = key->keylen;
 	if (key->keylen)
-		memcpy(hk.kv_val, key->key, key->keylen);
+		memcpy(&hk.kv_values, key->key, key->keylen);
 
 	if (!(key->flags & IEEE80211_KEY_FLAG_PAIRWISE)) {
 		switch (vif->type) {
drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c +7 -6
index df5970619712..baf5f0afe802 100644
@@ -1350,13 +1350,14 @@ static int brcmf_set_pmk(struct brcmf_if *ifp, const u8 *pmk_data, u16 pmk_len)
 {
 	struct brcmf_pub *drvr = ifp->drvr;
 	struct brcmf_wsec_pmk_le pmk;
-	int i, err;
+	int err;
+
+	memset(&pmk, 0, sizeof(pmk));
 
-	/* convert to firmware key format */
-	pmk.key_len = cpu_to_le16(pmk_len << 1);
-	pmk.flags = cpu_to_le16(BRCMF_WSEC_PASSPHRASE);
-	for (i = 0; i < pmk_len; i++)
-		snprintf(&pmk.key[2 * i], 3, "%02x", pmk_data[i]);
+	/* pass pmk directly */
+	pmk.key_len = cpu_to_le16(pmk_len);
+	pmk.flags = cpu_to_le16(0);
+	memcpy(pmk.key, pmk_data, pmk_len);
 
 	/* store psk in firmware */
 	err = brcmf_fil_cmd_data_set(ifp, BRCMF_C_SET_WSEC_PMK,
drivers/net/wireless/intel/iwlwifi/dvm/sta.c +4 -1
index e622948661fa..b307f0e52777 100644
@@ -1086,6 +1086,7 @@ static int iwlagn_send_sta_key(struct iwl_priv *priv,
 {
 	__le16 key_flags;
 	struct iwl_addsta_cmd sta_cmd;
+	size_t to_copy;
 	int i;
 
 	spin_lock_bh(&priv->sta_lock);
@@ -1105,7 +1106,9 @@ static int iwlagn_send_sta_key(struct iwl_priv *priv,
 		sta_cmd.key.tkip_rx_tsc_byte2 = tkip_iv32;
 		for (i = 0; i < 5; i++)
 			sta_cmd.key.tkip_rx_ttak[i] = cpu_to_le16(tkip_p1k[i]);
-		memcpy(sta_cmd.key.key, keyconf->key, keyconf->keylen);
+		/* keyconf may contain MIC rx/tx keys which iwl does not use */
+		to_copy = min_t(size_t, sizeof(sta_cmd.key.key), keyconf->keylen);
+		memcpy(sta_cmd.key.key, keyconf->key, to_copy);
 		break;
 	case WLAN_CIPHER_SUITE_WEP104:
 		key_flags |= STA_KEY_FLG_KEY_SIZE_MSK;
drivers/net/wireless/intel/iwlwifi/mvm/nvm.c +10 -0
index 60296a754af2..34be3f75c2e9 100644
@@ -502,6 +502,11 @@ iwl_mvm_update_mcc(struct iwl_mvm *mvm, const char *alpha2,
 		struct iwl_mcc_update_resp *mcc_resp = (void *)pkt->data;
 
 		n_channels =  __le32_to_cpu(mcc_resp->n_channels);
+		if (iwl_rx_packet_payload_len(pkt) !=
+		    struct_size(mcc_resp, channels, n_channels)) {
+			resp_cp = ERR_PTR(-EINVAL);
+			goto exit;
+		}
 		resp_len = sizeof(struct iwl_mcc_update_resp) +
 			   n_channels * sizeof(__le32);
 		resp_cp = kmemdup(mcc_resp, resp_len, GFP_KERNEL);
@@ -513,6 +518,11 @@ iwl_mvm_update_mcc(struct iwl_mvm *mvm, const char *alpha2,
 		struct iwl_mcc_update_resp_v3 *mcc_resp_v3 = (void *)pkt->data;
 
 		n_channels =  __le32_to_cpu(mcc_resp_v3->n_channels);
+		if (iwl_rx_packet_payload_len(pkt) !=
+		    struct_size(mcc_resp_v3, channels, n_channels)) {
+			resp_cp = ERR_PTR(-EINVAL);
+			goto exit;
+		}
 		resp_len = sizeof(struct iwl_mcc_update_resp) +
 			   n_channels * sizeof(__le32);
 		resp_cp = kzalloc(resp_len, GFP_KERNEL);
drivers/net/wireless/intel/iwlwifi/pcie/drv.c +3 -0
index 4e43efd5d1ea..dc0a507213ca 100644
@@ -1214,6 +1214,9 @@ static void iwl_pci_remove(struct pci_dev *pdev)
 {
 	struct iwl_trans *trans = pci_get_drvdata(pdev);
 
+	if (!trans)
+		return;
+
 	iwl_drv_stop(trans->drv);
 
 	iwl_trans_pcie_free(trans);
drivers/net/wireless/intel/iwlwifi/pcie/trans.c +1 -1
index 7f8b7f7697cf..fac7cc75bc31 100644
@@ -2835,7 +2835,7 @@ static bool iwl_write_to_user_buf(char __user *user_buf, ssize_t count,
 				  void *buf, ssize_t *size,
 				  ssize_t *bytes_copied)
 {
-	int buf_size_left = count - *bytes_copied;
+	ssize_t buf_size_left = count - *bytes_copied;
 
 	buf_size_left = buf_size_left - (buf_size_left % sizeof(u32));
 	if (*size > buf_size_left)
drivers/phy/st/phy-miphy28lp.c +10 -32

80 lines not on this page · raw message

drivers/power/supply/bq27xxx_battery.c +21 -20

75 lines not on this page · raw message

drivers/power/supply/bq27xxx_battery_i2c.c +2 -1
index 3012eb13a08c..0e32efb10ee7 100644
@@ -179,7 +179,7 @@ static int bq27xxx_battery_i2c_probe(struct i2c_client *client,
 	i2c_set_clientdata(client, di);
 
 	if (client->irq) {
-		ret = devm_request_threaded_irq(&client->dev, client->irq,
+		ret = request_threaded_irq(client->irq,
 				NULL, bq27xxx_battery_irq_handler_thread,
 				IRQF_ONESHOT,
 				di->name, di);
@@ -209,6 +209,7 @@ static int bq27xxx_battery_i2c_remove(struct i2c_client *client)
 {
 	struct bq27xxx_device_info *di = i2c_get_clientdata(client);
 
+	free_irq(client->irq, di);
 	bq27xxx_battery_teardown(di);
 
 	mutex_lock(&battery_mutex);
drivers/power/supply/power_supply_leds.c +3 -2
index d69880cc3593..b7a2778f878d 100644
@@ -34,8 +34,9 @@ static void power_supply_update_bat_leds(struct power_supply *psy)
 		led_trigger_event(psy->charging_full_trig, LED_FULL);
 		led_trigger_event(psy->charging_trig, LED_OFF);
 		led_trigger_event(psy->full_trig, LED_FULL);
-		led_trigger_event(psy->charging_blink_full_solid_trig,
-			LED_FULL);
+		/* Going from blink to LED on requires a LED_OFF event to stop blink */
+		led_trigger_event(psy->charging_blink_full_solid_trig, LED_OFF);
+		led_trigger_event(psy->charging_blink_full_solid_trig, LED_FULL);
 		break;
 	case POWER_SUPPLY_STATUS_CHARGING:
 		led_trigger_event(psy->charging_full_trig, LED_FULL);
drivers/power/supply/sbs-charger.c +1 -1
index fbfb6a620961..a30eb42e379a 100644
@@ -25,7 +25,7 @@
 #define SBS_CHARGER_REG_STATUS			0x13
 #define SBS_CHARGER_REG_ALARM_WARNING		0x16
 
-#define SBS_CHARGER_STATUS_CHARGE_INHIBITED	BIT(1)
+#define SBS_CHARGER_STATUS_CHARGE_INHIBITED	BIT(0)
 #define SBS_CHARGER_STATUS_RES_COLD		BIT(9)
 #define SBS_CHARGER_STATUS_RES_HOT		BIT(10)
 #define SBS_CHARGER_STATUS_BATTERY_PRESENT	BIT(14)
drivers/remoteproc/stm32_rproc.c +8 -0
index 24760d8ea637..df784fec124f 100644
@@ -301,8 +301,16 @@ static void stm32_rproc_mb_vq_work(struct work_struct *work)
 	struct stm32_mbox *mb = container_of(work, struct stm32_mbox, vq_work);
 	struct rproc *rproc = dev_get_drvdata(mb->client.dev);
 
+	mutex_lock(&rproc->lock);
+
+	if (rproc->state != RPROC_RUNNING)
+		goto unlock_mutex;
+
 	if (rproc_vq_interrupt(rproc, mb->vq_id) == IRQ_NONE)
 		dev_dbg(&rproc->dev, "no message found in vq%d\n", mb->vq_id);
+
+unlock_mutex:
+	mutex_unlock(&rproc->lock);
 }
 
 static void stm32_rproc_mb_callback(struct mbox_client *cl, void *data)
drivers/s390/cio/qdio.h +13 -12
index cd2df4ff8e0e..919d10614166 100644
@@ -88,15 +88,15 @@ enum qdio_irq_states {
 static inline int do_sqbs(u64 token, unsigned char state, int queue,
 			  int *start, int *count)
 {
-	register unsigned long _ccq asm ("0") = *count;
-	register unsigned long _token asm ("1") = token;
 	unsigned long _queuestart = ((unsigned long)queue << 32) | *start;
+	unsigned long _ccq = *count;
 
 	asm volatile(
-		"	.insn	rsy,0xeb000000008A,%1,0,0(%2)"
-		: "+d" (_ccq), "+d" (_queuestart)
-		: "d" ((unsigned long)state), "d" (_token)
-		: "memory", "cc");
+		"	lgr	1,%[token]\n"
+		"	.insn	rsy,0xeb000000008a,%[qs],%[ccq],0(%[state])"
+		: [ccq] "+&d" (_ccq), [qs] "+&d" (_queuestart)
+		: [state] "a" ((unsigned long)state), [token] "d" (token)
+		: "memory", "cc", "1");
 	*count = _ccq & 0xff;
 	*start = _queuestart & 0xff;
 
@@ -106,16 +106,17 @@ static inline int do_sqbs(u64 token, unsigned char state, int queue,
 static inline int do_eqbs(u64 token, unsigned char *state, int queue,
 			  int *start, int *count, int ack)
 {
-	register unsigned long _ccq asm ("0") = *count;
-	register unsigned long _token asm ("1") = token;
 	unsigned long _queuestart = ((unsigned long)queue << 32) | *start;
 	unsigned long _state = (unsigned long)ack << 63;
+	unsigned long _ccq = *count;
 
 	asm volatile(
-		"	.insn	rrf,0xB99c0000,%1,%2,0,0"
-		: "+d" (_ccq), "+d" (_queuestart), "+d" (_state)
-		: "d" (_token)
-		: "memory", "cc");
+		"	lgr	1,%[token]\n"
+		"	.insn	rrf,0xb99c0000,%[qs],%[state],%[ccq],0"
+		: [ccq] "+&d" (_ccq), [qs] "+&d" (_queuestart),
+		  [state] "+&d" (_state)
+		: [token] "d" (token)
+		: "memory", "cc", "1");
 	*count = _ccq & 0xff;
 	*start = _queuestart & 0xff;
 	*state = _state & 0xff;
drivers/s390/cio/qdio_main.c +33 -29

94 lines not on this page · raw message

drivers/scsi/lpfc/lpfc_debugfs.c +5 -2
index fbc76d69ea0b..2b77cbbcdccb 100644
@@ -2159,10 +2159,13 @@ lpfc_debugfs_lockstat_write(struct file *file, const char __user *buf,
 	char mybuf[64];
 	char *pbuf;
 	int i;
+	size_t bsize;
 
 	memset(mybuf, 0, sizeof(mybuf));
 
-	if (copy_from_user(mybuf, buf, nbytes))
+	bsize = min(nbytes, (sizeof(mybuf) - 1));
+
+	if (copy_from_user(mybuf, buf, bsize))
 		return -EFAULT;
 	pbuf = &mybuf[0];
 
@@ -2183,7 +2186,7 @@ lpfc_debugfs_lockstat_write(struct file *file, const char __user *buf,
 			qp->lock_conflict.wq_access = 0;
 		}
 	}
-	return nbytes;
+	return bsize;
 }
 #endif
 
drivers/scsi/storvsc_drv.c +4 -4
index e38aebcabb26..70b4868fe2f7 100644
@@ -1756,7 +1756,7 @@ static int storvsc_queuecommand(struct Scsi_Host *host, struct scsi_cmnd *scmnd)
 
 	length = scsi_bufflen(scmnd);
 	payload = (struct vmbus_packet_mpb_array *)&cmd_request->mpb;
-	payload_sz = sizeof(cmd_request->mpb);
+	payload_sz = 0;
 
 	if (sg_count) {
 		unsigned int hvpgoff = 0;
@@ -1764,10 +1764,10 @@ static int storvsc_queuecommand(struct Scsi_Host *host, struct scsi_cmnd *scmnd)
 		unsigned int hvpg_count = HVPFN_UP(offset_in_hvpg + length);
 		u64 hvpfn;
 
-		if (hvpg_count > MAX_PAGE_BUFFER_COUNT) {
+		payload_sz = (hvpg_count * sizeof(u64) +
+			      sizeof(struct vmbus_packet_mpb_array));
 
-			payload_sz = (hvpg_count * sizeof(u64) +
-				      sizeof(struct vmbus_packet_mpb_array));
+		if (hvpg_count > MAX_PAGE_BUFFER_COUNT) {
 			payload = kzalloc(payload_sz, GFP_ATOMIC);
 			if (!payload)
 				return SCSI_MLQUEUE_DEVICE_BUSY;
drivers/spi/spi-fsl-cpm.c +23 -0
index ee905880769e..7832ce330b29 100644
@@ -21,6 +21,7 @@
 #include <linux/spi/spi.h>
 #include <linux/types.h>
 #include <linux/platform_device.h>
+#include <linux/byteorder/generic.h>
 
 #include "spi-fsl-cpm.h"
 #include "spi-fsl-lib.h"
@@ -120,6 +121,21 @@ int fsl_spi_cpm_bufs(struct mpc8xxx_spi *mspi,
 		mspi->rx_dma = mspi->dma_dummy_rx;
 		mspi->map_rx_dma = 0;
 	}
+	if (t->bits_per_word == 16 && t->tx_buf) {
+		const u16 *src = t->tx_buf;
+		u16 *dst;
+		int i;
+
+		dst = kmalloc(t->len, GFP_KERNEL);
+		if (!dst)
+			return -ENOMEM;
+
+		for (i = 0; i < t->len >> 1; i++)
+			dst[i] = cpu_to_le16p(src + i);
+
+		mspi->tx = dst;
+		mspi->map_tx_dma = 1;
+	}
 
 	if (mspi->map_tx_dma) {
 		void *nonconst_tx = (void *)mspi->tx; /* shut up gcc */
@@ -173,6 +189,13 @@ void fsl_spi_cpm_bufs_complete(struct mpc8xxx_spi *mspi)
 	if (mspi->map_rx_dma)
 		dma_unmap_single(dev, mspi->rx_dma, t->len, DMA_FROM_DEVICE);
 	mspi->xfer_in_progress = NULL;
+
+	if (t->bits_per_word == 16 && t->rx_buf) {
+		int i;
+
+		for (i = 0; i < t->len; i += 2)
+			le16_to_cpus(t->rx_buf + i);
+	}
 }
 EXPORT_SYMBOL_GPL(fsl_spi_cpm_bufs_complete);
 
drivers/spi/spi-fsl-spi.c +26 -27

83 lines not on this page · raw message

drivers/spi/spi-imx.c +18 -6
index bbc420865f0f..21297cc62571 100644
@@ -242,6 +242,18 @@ static bool spi_imx_can_dma(struct spi_master *master, struct spi_device *spi,
 	return true;
 }
 
+/*
+ * Note the number of natively supported chip selects for MX51 is 4. Some
+ * devices may have less actual SS pins but the register map supports 4. When
+ * using gpio chip selects the cs values passed into the macros below can go
+ * outside the range 0 - 3. We therefore need to limit the cs value to avoid
+ * corrupting bits outside the allocated locations.
+ *
+ * The simplest way to do this is to just mask the cs bits to 2 bits. This
+ * still allows all 4 native chip selects to work as well as gpio chip selects
+ * (which can use any of the 4 chip select configurations).
+ */
+
 #define MX51_ECSPI_CTRL		0x08
 #define MX51_ECSPI_CTRL_ENABLE		(1 <<  0)
 #define MX51_ECSPI_CTRL_XCH		(1 <<  2)
@@ -250,16 +262,16 @@ static bool spi_imx_can_dma(struct spi_master *master, struct spi_device *spi,
 #define MX51_ECSPI_CTRL_DRCTL(drctl)	((drctl) << 16)
 #define MX51_ECSPI_CTRL_POSTDIV_OFFSET	8
 #define MX51_ECSPI_CTRL_PREDIV_OFFSET	12
-#define MX51_ECSPI_CTRL_CS(cs)		((cs) << 18)
+#define MX51_ECSPI_CTRL_CS(cs)		((cs & 3) << 18)
 #define MX51_ECSPI_CTRL_BL_OFFSET	20
 #define MX51_ECSPI_CTRL_BL_MASK		(0xfff << 20)
 
 #define MX51_ECSPI_CONFIG	0x0c
-#define MX51_ECSPI_CONFIG_SCLKPHA(cs)	(1 << ((cs) +  0))
-#define MX51_ECSPI_CONFIG_SCLKPOL(cs)	(1 << ((cs) +  4))
-#define MX51_ECSPI_CONFIG_SBBCTRL(cs)	(1 << ((cs) +  8))
-#define MX51_ECSPI_CONFIG_SSBPOL(cs)	(1 << ((cs) + 12))
-#define MX51_ECSPI_CONFIG_SCLKCTL(cs)	(1 << ((cs) + 20))
+#define MX51_ECSPI_CONFIG_SCLKPHA(cs)	(1 << ((cs & 3) +  0))
+#define MX51_ECSPI_CONFIG_SCLKPOL(cs)	(1 << ((cs & 3) +  4))
+#define MX51_ECSPI_CONFIG_SBBCTRL(cs)	(1 << ((cs & 3) +  8))
+#define MX51_ECSPI_CONFIG_SSBPOL(cs)	(1 << ((cs & 3) + 12))
+#define MX51_ECSPI_CONFIG_SCLKCTL(cs)	(1 << ((cs & 3) + 20))
 
 #define MX51_ECSPI_INT		0x10
 #define MX51_ECSPI_INT_TEEN		(1 <<  0)
drivers/staging/rtl8192e/rtl8192e/rtl_core.c +3 -3
index 291f98251f7f..4c201679fc08 100644
@@ -50,9 +50,9 @@ static const struct rtl819x_ops rtl819xp_ops = {
 };
 
 static struct pci_device_id rtl8192_pci_id_tbl[] = {
-	{RTL_PCI_DEVICE(0x10ec, 0x8192, rtl819xp_ops)},
-	{RTL_PCI_DEVICE(0x07aa, 0x0044, rtl819xp_ops)},
-	{RTL_PCI_DEVICE(0x07aa, 0x0047, rtl819xp_ops)},
+	{PCI_DEVICE(0x10ec, 0x8192)},
+	{PCI_DEVICE(0x07aa, 0x0044)},
+	{PCI_DEVICE(0x07aa, 0x0047)},
 	{}
 };
 
drivers/staging/rtl8192e/rtl8192e/rtl_core.h +0 -5
index 736f1a824cd2..7bbd884aa5f1 100644
@@ -55,11 +55,6 @@
 #define IS_HARDWARE_TYPE_8192SE(_priv)		\
 	(((struct r8192_priv *)rtllib_priv(dev))->card_8192 == NIC_8192SE)
 
-#define RTL_PCI_DEVICE(vend, dev, cfg) \
-	.vendor = (vend), .device = (dev), \
-	.subvendor = PCI_ANY_ID, .subdevice = PCI_ANY_ID, \
-	.driver_data = (kernel_ulong_t)&(cfg)
-
 #define TOTAL_CAM_ENTRY		32
 #define CAM_CONTENT_COUNT	8
 
drivers/target/iscsi/iscsi_target.c +3 -3
index 6bb840358072..075e2a6fb474 100644
@@ -4385,6 +4385,9 @@ int iscsit_close_session(struct iscsi_session *sess)
 	iscsit_stop_time2retain_timer(sess);
 	spin_unlock_bh(&se_tpg->session_lock);
 
+	if (sess->sess_ops->ErrorRecoveryLevel == 2)
+		iscsit_free_connection_recovery_entries(sess);
+
 	/*
 	 * transport_deregister_session_configfs() will clear the
 	 * struct se_node_acl->nacl_sess pointer now as a iscsi_np process context
@@ -4412,9 +4415,6 @@ int iscsit_close_session(struct iscsi_session *sess)
 
 	transport_deregister_session(sess->se_sess);
 
-	if (sess->sess_ops->ErrorRecoveryLevel == 2)
-		iscsit_free_connection_recovery_entries(sess);
-
 	iscsit_free_all_ooo_cmdsns(sess);
 
 	spin_lock_bh(&se_tpg->session_lock);
drivers/tty/serial/8250/8250_core.c +1 -0
index 0a7e9491b4d1..43f2eed6df78 100644
@@ -1165,6 +1165,7 @@ void serial8250_unregister_port(int line)
 		uart->port.type = PORT_UNKNOWN;
 		uart->port.dev = &serial8250_isa_devs->dev;
 		uart->capabilities = 0;
+		serial8250_init_port(uart);
 		serial8250_apply_quirks(uart);
 		uart_add_one_port(&serial8250_reg, &uart->port);
 	} else {
drivers/tty/serial/8250/8250_exar.c +44 -24

108 lines not on this page · raw message

drivers/tty/serial/8250/8250_pci.c +5 -0
index b6656898699d..9617f7ad332d 100644
@@ -1839,6 +1839,8 @@ pci_moxa_setup(struct serial_private *priv,
 #define PCI_SUBDEVICE_ID_SIIG_DUAL_30	0x2530
 #define PCI_VENDOR_ID_ADVANTECH		0x13fe
 #define PCI_DEVICE_ID_INTEL_CE4100_UART 0x2e66
+#define PCI_DEVICE_ID_ADVANTECH_PCI1600	0x1600
+#define PCI_DEVICE_ID_ADVANTECH_PCI1600_1611	0x1611
 #define PCI_DEVICE_ID_ADVANTECH_PCI3620	0x3620
 #define PCI_DEVICE_ID_ADVANTECH_PCI3618	0x3618
 #define PCI_DEVICE_ID_ADVANTECH_PCIf618	0xf618
@@ -4185,6 +4187,9 @@ static SIMPLE_DEV_PM_OPS(pciserial_pm_ops, pciserial_suspend_one,
 			 pciserial_resume_one);
 
 static const struct pci_device_id serial_pci_tbl[] = {
+	{	PCI_VENDOR_ID_ADVANTECH, PCI_DEVICE_ID_ADVANTECH_PCI1600,
+		PCI_DEVICE_ID_ADVANTECH_PCI1600_1611, PCI_ANY_ID, 0, 0,
+		pbn_b0_4_921600 },
 	/* Advantech use PCI_DEVICE_ID_ADVANTECH_PCI3620 (0x3620) as 'PCI_SUBVENDOR_ID' */
 	{	PCI_VENDOR_ID_ADVANTECH, PCI_DEVICE_ID_ADVANTECH_PCI3620,
 		PCI_DEVICE_ID_ADVANTECH_PCI3620, 0x0001, 0, 0,
drivers/tty/serial/arc_uart.c +4 -3
index 17c3fc398fc6..6f7a7d2dcf3a 100644
@@ -609,10 +609,11 @@ static int arc_serial_probe(struct platform_device *pdev)
 	}
 	uart->baud = val;
 
-	port->membase = of_iomap(np, 0);
-	if (!port->membase)
+	port->membase = devm_platform_ioremap_resource(pdev, 0);
+	if (IS_ERR(port->membase)) {
 		/* No point of dev_err since UART itself is hosed here */
-		return -ENXIO;
+		return PTR_ERR(port->membase);
+	}
 
 	port->irq = irq_of_parse_and_map(np, 0);
 
drivers/tty/vt/vc_screen.c +9 -2
index 1dc07f9214d5..01c96537fa36 100644
@@ -656,10 +656,17 @@ vcs_write(struct file *file, const char __user *buf, size_t count, loff_t *ppos)
 			}
 		}
 
-		/* The vcs_size might have changed while we slept to grab
-		 * the user buffer, so recheck.
+		/* The vc might have been freed or vcs_size might have changed
+		 * while we slept to grab the user buffer, so recheck.
 		 * Return data written up to now on failure.
 		 */
+		vc = vcs_vc(inode, &viewed);
+		if (!vc) {
+			if (written)
+				break;
+			ret = -ENXIO;
+			goto unlock_out;
+		}
 		size = vcs_size(vc, attr, false);
 		if (size < 0) {
 			if (written)
drivers/usb/class/usbtmc.c +2 -0
index 49f59d53b4b2..76ff182427bc 100644
@@ -1898,6 +1898,8 @@ static int usbtmc_ioctl_request(struct usbtmc_device_data *data,
 
 	if (request.req.wLength > USBTMC_BUFSIZE)
 		return -EMSGSIZE;
+	if (request.req.wLength == 0)	/* Length-0 requests are never IN */
+		request.req.bRequestType &= ~USB_DIR_IN;
 
 	is_in = request.req.bRequestType & USB_DIR_IN;
 
drivers/usb/core/usb.c +76 -0

82 lines not on this page · raw message

drivers/usb/dwc3/debugfs.c +109 -0

161 lines not on this page · raw message

drivers/usb/gadget/function/u_ether.c +3 -0
index 64ef97ab9274..5e5f699a434f 100644

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

drivers/usb/host/uhci-pci.c +6 -4
index 9b88745d247f..3316533b8bc2 100644

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

drivers/usb/misc/sisusbvga/sisusb.c +14 -0
index f08de33d9ff3..8ed803c4a251 100644

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

drivers/usb/storage/scsiglue.c +21 -7
index e5a971b83e3f..b8e1109f0e0d 100644

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

drivers/usb/typec/altmodes/displayport.c +4 -0
index 07b656172068..0d4b1c0eeefb 100644

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

drivers/usb/typec/tcpm/tcpm.c +15 -1
index 8333c80b5f7c..cf0e6a80815a 100644

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

drivers/video/fbdev/arcfb.c +9 -6
index 1447324ed0b6..08da436265d9 100644

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

drivers/video/fbdev/udlfb.c +8 -5
index d9eec1b60e66..0de7b867714a 100644

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

drivers/watchdog/sp5100_tco.c +4 -0
index a730ecbf78cd..0db77c90b4b6 100644

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

drivers/xen/pvcalls-back.c +4 -5
index 3b5a8e2c4d47..3c435e1bca12 100644

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

fs/btrfs/disk-io.c +64 -0

64 lines not on this page · raw message

fs/btrfs/disk-io.h +2 -0
index 182540bdcea0..e3b96944ce10 100644

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

fs/btrfs/free-space-cache.c +4 -3
index ba280707d5ec..4989c60b1df9 100644

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

fs/btrfs/inode-map.c +0 -55

55 lines not on this page · raw message

fs/btrfs/inode-map.h +0 -3
index 7a962811dffe..629baf9aefb1 100644

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

fs/btrfs/inode.c +6 -6
index 779b7745cdc4..c900a39666e3 100644

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

fs/ceph/snap.c +13 -0
index 734873be56a7..8e6fc45ccc9e 100644

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

fs/ext2/ext2.h +1 -0
index 5136b7289e8d..f06367cfd764 100644

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

fs/ext2/super.c +7 -0
index 9a6475b2ab28..ab01ec7ac48c 100644

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

fs/ext4/balloc.c +17 -1
index 50a0e90e8af9..a43167042b6b 100644

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

fs/ext4/ext4.h +9 -16
index 246573a4e804..84a240025aa4 100644

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

fs/ext4/ialloc.c +8 -4
index c53c9b132204..d178543ca13f 100644

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

fs/ext4/mballoc.c +173 -65

238 lines not on this page · raw message

fs/ext4/mmp.c +29 -10
index bc364c119af6..7a9a8ed1de66 100644

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

fs/ext4/super.c +19 -9
index 8694be513241..d89750e90bc4 100644

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

fs/ext4/sysfs.c +2 -0
index ce74cde6d8fa..b0bb4a92c9c9 100644

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

fs/f2fs/checkpoint.c +10 -2
index cd46a64ace1b..8ca549cc975e 100644

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

fs/f2fs/data.c +2 -1
index e9481c940895..e0533cffbb07 100644

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

fs/gfs2/glops.c +2 -1
index db28c240dae3..87f811088466 100644

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

fs/hfsplus/inode.c +23 -5
index c60d5ceb0d31..7e1d889dcc07 100644

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

fs/nilfs2/inode.c +18 -0
index fb594edc0837..042f4512e47d 100644

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

fs/ocfs2/namei.c +2 -0
index df1f6b7aa797..d6a0e719b1ad 100644

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

fs/ocfs2/xattr.c +26 -4
index 9ccd19d8f7b1..10df2e1dfef7 100644

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

fs/statfs.c +2 -2
index 59f33752c131..d42b44dc0e49 100644

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

include/linux/cpuhotplug.h +0 -1
index fc945f9df2c1..cb87247da5ba 100644

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

include/linux/device.h +1 -0
index 5dc0f81e4f9d..4f7e0c85e11f 100644

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

include/linux/dim.h +2 -1
index 6c5733981563..f343bc9aa2ec 100644

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

include/linux/fs.h +21 -21

42 lines not on this page · raw message

include/linux/if_team.h +1 -0
index add607943c95..5dd1657947b7 100644

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

include/linux/if_vlan.h +17 -0
index 41a518336673..4e7e72f3da5b 100644

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

include/linux/power/bq27xxx_battery.h +1 -0
index 8d5f4f40fb41..705b94bd091e 100644

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

include/linux/sched/task_stack.h +1 -1
index d10150587d81..f24575942dab 100644

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

include/linux/usb.h +5 -0
index 568be613bdb3..bc5923772703 100644

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

include/net/bonding.h +1 -0
index d9cc3f5602fb..a248caff969f 100644

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

include/net/ip_vs.h +4 -2
index d609e957a3ec..c02c3bb0fe09 100644

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

include/net/netns/ipv4.h +0 -1
index d8b320cf54ba..4a4a5270ff6f 100644

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

include/net/sch_generic.h +0 -5
index 61cd19ee51f4..a62677be7452 100644

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

include/net/sock.h +1 -1
index 1d8529311d6f..651dc0a7bbd5 100644

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

include/net/tcp.h +1 -0
index 9a8d98639b20..d213b86a4822 100644

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

include/net/xfrm.h +2 -0
index 8a9943d935f1..726a2dbb407f 100644

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

include/uapi/sound/skl-tplg-interface.h +2 -1
index a93c0decfdd5..215ce16b37d2 100644

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

kernel/bpf/bpf_local_storage.c +13 -3
index 8aaaaef99f09..f75396572620 100644

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

kernel/bpf/verifier.c +1 -1
index 6876796a8de0..fd2082a9bf81 100644

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

kernel/rcu/refscale.c +1 -1
index 952595c678b3..4e419ca6d611 100644

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

kernel/rcu/tree_exp.h +4 -2
index ef6570137dcd..401c1f331caf 100644

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

lib/cpu_rmap.c +4 -1
index f08d9c56f712..e77f12bb3c77 100644

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

lib/debugobjects.c +1 -1
index 824337ec36aa..4c39678c03ee 100644

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

lib/dim/dim.c +3 -2
index 38045d6d0538..e89aaf07bde5 100644

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

lib/dim/net_dim.c +2 -1
index dae3b51ac3d9..0e4f3a686f1d 100644

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

lib/dim/rdma_dim.c +2 -1
index f7e26c7b4749..d32c8b105adc 100644

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

mm/backing-dev.c +0 -1
index b28f629c3527..dd08ab928e07 100644

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

net/8021q/vlan_dev.c +2 -2
index 929f85c6cf11..8edac9307868 100644

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

net/bluetooth/l2cap_core.c +0 -1
index f9d2ce9cee36..b85ce276e2a3 100644

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

net/bridge/br_forward.c +1 -1
index e28ffadd1371..4610f3a13966 100644

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

net/bridge/br_private_tunnel.h +4 -4
index c54cc26211d7..f6c65dc088d6 100644

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

net/can/isotp.c +1 -1
index 4360f33278c1..4fcd8162fad4 100644

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

net/can/j1939/socket.c +1 -1
index 709141abd131..76cd5f43faf7 100644

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

net/core/datagram.c +10 -5
index bc92683fdcdb..9e77695d1bdc 100644

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

net/core/dev.c +3 -1
index 413c2a08d79d..29e6e11c481c 100644

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

net/core/skbuff.c +3 -1
index fb6b3f2ae192..e203172b9b9e 100644

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

net/core/stream.c +6 -6
index cd60746877b1..422ee97e4f2b 100644

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

net/ipv4/af_inet.c +1 -1
index 8dab0d311aba..800c2c7607e1 100644

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

net/ipv4/ip_output.c +1 -1
index 1e07df282177..6fd04f2f8b40 100644

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

net/ipv4/tcp.c +15 -8
index 6a0560a735ce..eecce63ba25e 100644

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

net/ipv4/tcp_bpf.c +1 -1
index 926e29e84b40..d0ca1fc325cd 100644

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

net/ipv4/tcp_input.c +2 -2
index 541758cd0b81..b98b7920c402 100644

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

net/ipv4/tcp_ipv4.c +32 -36

68 lines not on this page · raw message

net/ipv4/udplite.c +2 -0
index cfb36655a5fd..edf82a400163 100644

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

net/ipv6/exthdrs_core.c +2 -0
index da46c4284676..49e31e4ae7b7 100644

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

net/ipv6/ip6_gre.c +8 -5
index 2332b5b81c55..7b50e1811678 100644

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

net/ipv6/tcp_ipv6.c +4 -1
index 2347740d3cc7..fe29bc66aeac 100644

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

net/ipv6/udplite.c +2 -0
index b6482e04dad0..26199f743791 100644

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

net/key/af_key.c +8 -4
index 8bc7d399987b..fff2bd5f03e3 100644

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

net/llc/af_llc.c +5 -3
index 99a37c411323..01e26698285a 100644

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

net/mac80211/trace.h +1 -1
index 89723907a094..5ddaa7c82477 100644

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

net/netfilter/core.c +4 -2
index 60332fdb6dd4..5b7578adbf0f 100644

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

net/netfilter/ipvs/ip_vs_sync.c +1 -1
index daab857c52a8..fc8db03d3efc 100644

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

net/netfilter/nf_conntrack_standalone.c +2 -1
index e12b52019a55..b613de96ad85 100644

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

net/netfilter/nft_set_rbtree.c +13 -7
index 4b9a499fe8f4..1ffb24f4c74c 100644

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

net/netlink/af_netlink.c +4 -4
index eedb16517f16..651f8ca912af 100644

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

net/nsh/nsh.c +3 -5
index e9ca007718b7..0f23e5e8e03e 100644

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

net/packet/af_packet.c +2 -4
index 2e766490a739..3c05414cd3f8 100644

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

net/sched/act_mirred.c +30 -14

44 lines not on this page · raw message

net/smc/smc_close.c +2 -2
index 84102db5bb31..149a59ecd299 100644

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

net/smc/smc_rx.c +2 -2
index 7f7e983e42b1..3757aff6c2f0 100644

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

net/smc/smc_tx.c +2 -2
index 52ef1fca0b60..2429f9fc7e0e 100644

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

net/socket.c +1 -1
index 8657112a687a..84223419da86 100644

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

net/sunrpc/svc.c +1 -1
index af657a482ad2..495ebe7fad6d 100644

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

net/tipc/bearer.c +15 -2
index 72c31ef985eb..91e678fa3feb 100644

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

net/tipc/bearer.h +10 -3
index bc0023119da2..711a50f44993 100644

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

net/tipc/crypto.h +3 -3
index e71193bd5e36..ce7d4cc8a9e0 100644

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

net/tipc/link.c +6 -3
index c1e56d1f21b3..dbb1bc722ba9 100644

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

net/tipc/name_distr.h +1 -1
index 092323158f06..e231e6964d61 100644

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

net/tipc/name_table.h +6 -3
index 8064e1986e2c..5a82a01369d6 100644

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

net/tipc/socket.c +2 -2
index 8f3c9fbb9916..7cf9b40b5c73 100644

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

net/tipc/subscr.h +7 -4
index 6ebbec1bedd1..63bdce9358fe 100644

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

net/tipc/udp_media.c +3 -2
index a23628108272..3e47501f024f 100644

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

net/tls/tls_main.c +2 -1
index 54863e68f304..7ee3c8b03a39 100644

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

net/unix/af_unix.c +13 -9
index 28721e9575b7..2fe0efcbfed1 100644

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

net/vmw_vsock/af_vsock.c +1 -1
index 7829a5018ef9..ce14374bbaca 100644

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

net/xfrm/xfrm_interface.c +4 -50

54 lines not on this page · raw message

net/xfrm/xfrm_policy.c +0 -9
index d15aa62887de..295685492853 100644

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

samples/bpf/hbm.c +1 -0
index ff4c533dfac2..8e48489b96ae 100644

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

scripts/recordmcount.c +5 -1
index cce12e1971d8..ec692af8ce9e 100644

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

sound/firewire/digi00x/digi00x-stream.c +3 -1
index 405d6903bfbc..62a54f5ab84d 100644

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

sound/hda/hdac_device.c +1 -1
index b7e5032b61c9..bfd858577676 100644

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

sound/pci/hda/hda_generic.c +4 -3
index 8ee3be7bbd24..35113fa84a0f 100644

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

sound/pci/hda/patch_ca0132.c +1 -0
index 6057084da4cf..6d67cca4cfa6 100644

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

sound/pci/hda/patch_hdmi.c +5 -0
index 1afe9cddb69e..e4366fea9e27 100644

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

sound/pci/hda/patch_realtek.c +6 -1
index 18309fa17fb8..21c8b474a4df 100644

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

sound/usb/format.c +1 -0
index e0fda244a942..29ed301c6f06 100644

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

tools/power/cpupower/utils/idle_monitor/mperf_monitor.c +14 -17
index e7d48cb563c0..ae6af354a81d 100644

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

tools/testing/selftests/memfd/fuse_test.c +1 -0
index b018e835737d..cda63164d9d3 100644

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

tools/testing/selftests/net/fib_tests.sh +1 -1
index 8f42e17db5d0..168101637307 100755

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

tools/testing/selftests/net/forwarding/tc_actions.sh +47 -1

48 lines not on this page · 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.