Skip to contentSkip to conversation

Linux 5.15.166

DISCUSSION Greg Kroah-Hartman 1 participant 2 messages Sep 4, 2024 Stable branch

lore
Share & tools
lore

Greg Kroah-Hartman

author maintainer
#0 lore raw

I'm announcing the release of the 5.15.166 kernel.

All users of the 5.15 kernel series must upgrade.

The updated 5.15.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-5.15.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

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

 Makefile                                                   |    2 
 arch/arm64/kernel/acpi_numa.c                              |    2 
 arch/arm64/kernel/setup.c                                  |    3 
 arch/arm64/kernel/smp.c                                    |    2 
 arch/arm64/kvm/sys_regs.c                                  |    6 
 arch/arm64/kvm/vgic/vgic.h                                 |    7 
 arch/mips/kernel/cpu-probe.c                               |    4 
 arch/mips/loongson64/reset.c                               |   38 +-
 arch/openrisc/kernel/setup.c                               |    6 
 arch/parisc/kernel/irq.c                                   |    4 
 arch/powerpc/boot/simple_alloc.c                           |    7 
 arch/powerpc/sysdev/xics/icp-native.c                      |    2 
 arch/s390/include/asm/uv.h                                 |    5 
 arch/s390/kernel/early.c                                   |   12 
 arch/s390/kernel/smp.c                                     |    4 
 arch/x86/kernel/process.c                                  |    5 
 drivers/ata/libata-core.c                                  |    3 
 drivers/atm/idt77252.c                                     |    9 
 drivers/bluetooth/hci_ldisc.c                              |    3 
 drivers/char/xillybus/xillyusb.c                           |   42 ++
 drivers/clocksource/arm_global_timer.c                     |   11 
 drivers/dma/dw/core.c                                      |   89 ++++-
 drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.c                    |    8 
 drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c                    |    3 
 drivers/gpu/drm/amd/amdgpu/jpeg_v2_0.c                     |    4 
 drivers/gpu/drm/amd/amdkfd/kfd_chardev.c                   |    5 
 drivers/gpu/drm/lima/lima_gp.c                             |   12 
 drivers/gpu/drm/msm/disp/dpu1/dpu_kms.h                    |   14 
 drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c                  |    3 
 drivers/gpu/drm/msm/dp/dp_ctrl.c                           |    2 
 drivers/hid/hid-ids.h                                      |   10 
 drivers/hid/hid-microsoft.c                                |   11 
 drivers/hid/wacom_wac.c                                    |    4 
 drivers/hwmon/ltc2992.c                                    |    8 
 drivers/i2c/busses/i2c-riic.c                              |    2 
 drivers/i3c/master/mipi-i3c-hci/dma.c                      |    5 
 drivers/infiniband/hw/hfi1/chip.c                          |    5 
 drivers/infiniband/ulp/rtrs/rtrs.c                         |    2 
 drivers/input/input-mt.c                                   |    3 
 drivers/irqchip/irq-gic-v3-its.c                           |    2 
 drivers/md/dm-clone-metadata.c                             |    5 
 drivers/md/dm-ioctl.c                                      |   22 +
 drivers/md/dm.c                                            |    4 
 drivers/md/md.c                                            |    5 
 drivers/md/persistent-data/dm-space-map-metadata.c         |    4 
 drivers/media/dvb-core/dvb_frontend.c                      |   12 
 drivers/media/pci/cx23885/cx23885-video.c                  |    8 
 drivers/media/pci/solo6x10/solo6x10-offsets.h              |   10 
 drivers/media/platform/qcom/venus/pm_helpers.c             |    2 
 drivers/media/radio/radio-isa.c                            |    2 
 drivers/memory/stm32-fmc2-ebi.c                            |  122 +++++--
 drivers/memory/tegra/tegra186.c                            |    3 
 drivers/mmc/core/mmc_test.c                                |    9 
 drivers/mmc/host/dw_mmc.c                                  |    8 
 drivers/net/bonding/bond_main.c                            |   21 -
 drivers/net/bonding/bond_options.c                         |    2 
 drivers/net/dsa/mv88e6xxx/Makefile                         |    4 
 drivers/net/dsa/mv88e6xxx/global1_atu.c                    |   82 ++++
 drivers/net/dsa/mv88e6xxx/trace.c                          |    6 
 drivers/net/dsa/mv88e6xxx/trace.h                          |   66 +++
 drivers/net/dsa/vitesse-vsc73xx-core.c                     |   69 +++-
 drivers/net/ethernet/chelsio/cxgb4/cxgb4_filter.c          |    3 
 drivers/net/ethernet/freescale/dpaa2/dpaa2-switch.c        |    7 
 drivers/net/ethernet/hisilicon/hns3/hns3_enet.c            |    3 
 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c    |    4 
 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_mbx.c     |    7 
 drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c  |    4 
 drivers/net/ethernet/i825xx/sun3_82586.c                   |    2 
 drivers/net/ethernet/intel/ice/ice_txrx.c                  |    2 
 drivers/net/ethernet/intel/igc/igc_base.c                  |   29 +
 drivers/net/ethernet/intel/igc/igc_base.h                  |    2 
 drivers/net/ethernet/intel/igc/igc_defines.h               |   16 
 drivers/net/ethernet/intel/igc/igc_main.c                  |   12 
 drivers/net/ethernet/intel/igc/igc_regs.h                  |    1 
 drivers/net/ethernet/intel/igc/igc_tsn.c                   |  113 +++++-
 drivers/net/ethernet/intel/igc/igc_tsn.h                   |    1 
 drivers/net/ethernet/mellanox/mlx5/core/en_fs_ethtool.c    |    2 
 drivers/net/ethernet/mellanox/mlxbf_gige/mlxbf_gige.h      |    9 
 drivers/net/ethernet/mellanox/mlxbf_gige/mlxbf_gige_main.c |   10 
 drivers/net/ethernet/mellanox/mlxbf_gige/mlxbf_gige_regs.h |    2 
 drivers/net/ethernet/mellanox/mlxbf_gige/mlxbf_gige_rx.c   |   50 ++-
 drivers/net/ethernet/microsoft/mana/hw_channel.c           |   62 ++-
 drivers/net/ethernet/microsoft/mana/mana.h                 |    1 
 drivers/net/ethernet/microsoft/mana/mana_en.c              |   24 -
 drivers/net/ethernet/xilinx/xilinx_axienet.h               |   17 -
 drivers/net/ethernet/xilinx/xilinx_axienet_main.c          |   25 -
 drivers/net/gtp.c                                          |    5 
 drivers/net/wireless/intel/iwlwifi/fw/debugfs.c            |    6 
 drivers/net/wireless/intel/iwlwifi/mvm/scan.c              |    2 
 drivers/net/wireless/marvell/mwifiex/cfg80211.c            |   32 +
 drivers/net/wireless/st/cw1200/txrx.c                      |    2 
 drivers/nfc/pn533/pn533.c                                  |    5 
 drivers/nvme/target/rdma.c                                 |   16 
 drivers/nvme/target/tcp.c                                  |    1 
 drivers/nvme/target/trace.c                                |    6 
 drivers/nvme/target/trace.h                                |   28 +
 drivers/phy/xilinx/phy-zynqmp.c                            |  152 ++++++---
 drivers/pinctrl/pinctrl-rockchip.c                         |    2 
 drivers/pinctrl/pinctrl-single.c                           |    2 
 drivers/platform/surface/aggregator/controller.c           |    3 
 drivers/platform/x86/lg-laptop.c                           |    2 
 drivers/s390/block/dasd.c                                  |   36 +-
 drivers/s390/block/dasd_3990_erp.c                         |   10 
 drivers/s390/block/dasd_eckd.c                             |   55 +--
 drivers/s390/block/dasd_int.h                              |    2 
 drivers/s390/cio/idset.c                                   |   12 
 drivers/scsi/aacraid/comminit.c                            |    2 
 drivers/scsi/lpfc/lpfc_sli.c                               |    2 
 drivers/scsi/scsi_transport_spi.c                          |    4 
 drivers/soc/qcom/cmd-db.c                                  |    2 
 drivers/soundwire/stream.c                                 |    8 
 drivers/ssb/main.c                                         |    2 
 drivers/staging/iio/resolver/ad2s1210.c                    |    7 
 drivers/staging/ks7010/ks7010_sdio.c                       |    4 
 drivers/thunderbolt/switch.c                               |    1 
 drivers/usb/cdns3/cdnsp-gadget.h                           |    3 
 drivers/usb/cdns3/cdnsp-ring.c                             |   30 +
 drivers/usb/class/cdc-acm.c                                |    3 
 drivers/usb/core/sysfs.c                                   |    1 
 drivers/usb/dwc3/core.c                                    |   21 +
 drivers/usb/dwc3/dwc3-omap.c                               |    4 
 drivers/usb/dwc3/dwc3-st.c                                 |   16 
 drivers/usb/gadget/udc/fsl_udc_core.c                      |    2 
 drivers/usb/host/xhci.c                                    |    8 
 drivers/usb/serial/option.c                                |    5 
 fs/afs/file.c                                              |    8 
 fs/binfmt_elf_fdpic.c                                      |    2 
 fs/binfmt_misc.c                                           |  216 ++++++++++---
 fs/btrfs/delayed-inode.c                                   |    2 
 fs/btrfs/free-space-cache.c                                |    8 
 fs/btrfs/inode.c                                           |    9 
 fs/btrfs/qgroup.c                                          |    4 
 fs/btrfs/send.c                                            |    9 
 fs/btrfs/tree-checker.c                                    |   69 ++++
 fs/ext4/extents.c                                          |    3 
 fs/ext4/mballoc.c                                          |    3 
 fs/f2fs/segment.c                                          |    5 
 fs/file.c                                                  |   30 -
 fs/fuse/cuse.c                                             |    3 
 fs/fuse/dev.c                                              |    6 
 fs/fuse/fuse_i.h                                           |    1 
 fs/fuse/inode.c                                            |   15 
 fs/fuse/virtio_fs.c                                        |   10 
 fs/gfs2/inode.c                                            |    2 
 fs/inode.c                                                 |   39 ++
 fs/lockd/svc.c                                             |    3 
 fs/nfs/callback.c                                          |    3 
 fs/nfs/pnfs.c                                              |    8 
 fs/nfsd/export.c                                           |   32 +
 fs/nfsd/export.h                                           |    4 
 fs/nfsd/netns.h                                            |   25 +
 fs/nfsd/nfs4proc.c                                         |    6 
 fs/nfsd/nfscache.c                                         |  200 +++++++-----
 fs/nfsd/nfsctl.c                                           |   24 -
 fs/nfsd/nfsd.h                                             |    1 
 fs/nfsd/nfsfh.c                                            |    3 
 fs/nfsd/nfssvc.c                                           |   24 -
 fs/nfsd/stats.c                                            |   52 +--
 fs/nfsd/stats.h                                            |   85 +----
 fs/nfsd/trace.h                                            |   22 +
 fs/nfsd/vfs.c                                              |    6 
 fs/ntfs3/bitmap.c                                          |    4 
 fs/ntfs3/fsntfs.c                                          |    2 
 fs/ntfs3/index.c                                           |   11 
 fs/ntfs3/ntfs_fs.h                                         |    4 
 fs/ntfs3/super.c                                           |    2 
 fs/quota/dquot.c                                           |    5 
 include/linux/bitmap.h                                     |   20 +
 include/linux/blkdev.h                                     |    2 
 include/linux/cpumask.h                                    |    2 
 include/linux/fs.h                                         |    5 
 include/linux/pm.h                                         |   55 ++-
 include/linux/pm_runtime.h                                 |   14 
 include/linux/sunrpc/svc.h                                 |    5 
 include/net/busy_poll.h                                    |    2 
 include/net/kcm.h                                          |    1 
 include/scsi/scsi_cmnd.h                                   |    2 
 kernel/cgroup/cpuset.c                                     |   13 
 kernel/time/clocksource.c                                  |   42 +-
 kernel/time/hrtimer.c                                      |    2 
 lib/math/prime_numbers.c                                   |    2 
 mm/huge_memory.c                                           |   30 -
 mm/memcontrol.c                                            |    7 
 mm/memory.c                                                |   29 -
 net/bluetooth/bnep/core.c                                  |    3 
 net/bluetooth/hci_core.c                                   |   19 -
 net/bluetooth/mgmt.c                                       |    4 
 net/bluetooth/smp.c                                        |  144 ++++----
 net/bridge/br_netfilter_hooks.c                            |    6 
 net/core/net-sysfs.c                                       |    2 
 net/ethtool/ioctl.c                                        |    3 
 net/ipv6/ip6_output.c                                      |   10 
 net/ipv6/ip6_tunnel.c                                      |   12 
 net/ipv6/netfilter/nf_conntrack_reasm.c                    |    4 
 net/iucv/iucv.c                                            |    3 
 net/kcm/kcmsock.c                                          |    4 
 net/mac80211/agg-tx.c                                      |    6 
 net/mac80211/driver-ops.c                                  |    3 
 net/mac80211/sta_info.c                                    |   14 
 net/mptcp/diag.c                                           |    2 
 net/mptcp/protocol.c                                       |    2 
 net/netfilter/nf_flow_table_inet.c                         |    3 
 net/netfilter/nf_flow_table_ip.c                           |    3 
 net/netfilter/nf_flow_table_offload.c                      |    2 
 net/netfilter/nfnetlink_queue.c                            |   35 +-
 net/netfilter/nft_counter.c                                |    9 
 net/netlink/af_netlink.c                                   |   13 
 net/rds/recv.c                                             |   13 
 net/sched/sch_netem.c                                      |   47 +-
 net/sunrpc/stats.c                                         |    2 
 net/sunrpc/svc.c                                           |   36 +-
 net/wireless/core.h                                        |    8 
 security/apparmor/policy_unpack_test.c                     |    6 
 security/selinux/avc.c                                     |    2 
 sound/core/timer.c                                         |    2 
 sound/pci/hda/patch_realtek.c                              |    1 
 sound/usb/quirks-table.h                                   |    1 
 sound/usb/quirks.c                                         |    2 
 tools/include/linux/align.h                                |   12 
 tools/include/linux/bitmap.h                               |    9 
 tools/testing/selftests/core/close_range_test.c            |   35 ++
 tools/testing/selftests/tc-testing/tdc.py                  |    1 
 222 files changed, 2387 insertions(+), 1046 deletions(-)

Abhinav Kumar (1):
drm/msm/dp: reset the link phy params before link training

Adrian Hunter (1):
clocksource: Make watchdog and suspend-timing multiplication overflow safe

Al Viro (4):
fix bitmap corruption on close_range() with CLOSE_RANGE_UNSHARE memcg_write_event_control(): fix a user-triggerable oops
afs: fix __afs_break_callback() / afs_drop_open_mmap() race
fuse: fix UAF in rcu pathwalks

Aleksandr Mishin (1):
nfc: pn533: Add poll mod list filling check

Alex Deucher (2):
drm/amdgpu/jpeg2: properly set atomics vmid field drm/amdkfd: don't allow mapping the MMIO HDP page with large pages

Alex Hung (2):
drm/amd/display: Validate hw_points_num before using it Revert "drm/amd/display: Validate hw_points_num before using it"

Alexander Gordeev (1):
s390/iucv: fix receive buffer virtual vs physical address confusion

Alexander Lobakin (5):
fs/ntfs3: add prefix to bitmap_size() and use BITS_TO_U64() s390/cio: rename bitmap_size() -> idset_bitmap_size()
btrfs: rename bitmap_set_bits() -> btrfs_bitmap_set_bits()
bitmap: introduce generic optimized bitmap_size()
tools: move alignment-related macros to new <linux/align.h>

Allison Henderson (1):
net:rds: Fix possible deadlock in rds_message_put

Andreas Gruenbacher (1):
gfs2: setattr_chown: Add missing initialization

Antoniu Miclaus (1):
hwmon: (ltc2992) Avoid division by zero

Ashish Mhetre (1):
memory: tegra: Skip SID programming if SID registers aren't set

Aurelien Jarno (1):
media: solo6x10: replace max(a, min(b, c)) by clamp(b, a, c)

Baokun Li (2):
ext4: do not trim the group with corrupted block bitmap
ext4: set the type of max_zeroout to unsigned int to avoid overflow

Bas Nieuwenhuizen (1):
drm/amdgpu: Actually check flags for all context ops.

Ben Hutchings (1):
scsi: aacraid: Fix double-free on probe failure

Ben Whitten (1):
mmc: dw_mmc: allow biu and ciu clocks to defer

Chaotian Jing (1):
scsi: core: Fix the return value of scsi_logical_block_count()

Chen Ridong (1):
cgroup/cpuset: Prevent UAF in proc_cpuset_show()

Chengfeng Ye (2):
staging: ks7010: disable bh on tx_dev_lock
IB/hfi1: Fix potential deadlock on &irq_src_lock and &dd->uctxt_lock

Christian Brauner (1):
binfmt_misc: cleanup on filesystem umount

Christophe Kerello (1):
memory: stm32-fmc2-ebi: check regmap_read return value

Chuck Lever (6):
NFSD: Refactor nfsd_reply_cache_free_locked()
NFSD: Rename nfsd_reply_cache_alloc()
NFSD: Replace nfsd_prune_bucket()
NFSD: Refactor the duplicate reply cache shrinker
NFSD: Rewrite synopsis of nfsd_percpu_counters_init()
NFSD: Fix frame size warning in svc_export_parse()

Claudio Imbrenda (1):
s390/uv: Panic for set and remove shared access UVC errors

Cong Wang (1):
gtp: fix a potential NULL pointer dereference

Cosmin Ratiu (1):
net/mlx5e: Correctly report errors for ethtool rx flows

Dan Carpenter (3):
atm: idt77252: prevent use after free in dequeue_rx()
dpaa2-switch: Fix error checking in dpaa2_switch_seed_bp()
mmc: mmc_test: Fix NULL dereference on allocation failure

Daniel Wagner (1):
nvmet-trace: avoid dereferencing pointer too early

David Lechner (1):
staging: iio: resolver: ad2s1210: fix use before initialization

David Sterba (5):
btrfs: change BUG_ON to assertion when checking for delayed_node root
btrfs: handle invalid root reference found in may_destroy_subvol()
btrfs: send: handle unexpected data in header buffer in begin_cmd()
btrfs: change BUG_ON to assertion in tree_move_down()
btrfs: delete pointless BUG_ON check on quota root in btrfs_qgroup_account_extent()

David Thompson (1):
mlxbf_gige: disable RX filters until RX path initialized

Dmitry Baryshkov (2):
drm/msm/dpu: don't play tricks with debug macros drm/msm/dpu: cleanup FB if dpu_format_populate_layout fails

Donald Hunter (1):
netfilter: flowtable: initialise extack before use

Eli Billauer (3):
char: xillybus: Don't destroy workqueue from work item running on it
char: xillybus: Refine workqueue handling
char: xillybus: Check USB endpoints when probing device

Eric Dumazet (6):
netlink: hold nlk->cb_mutex longer in __netlink_dump_start()
gtp: pull network headers in gtp_dev_xmit()
ipv6: prevent UAF in ip6_send_skb()
ipv6: fix possible UAF in ip6_finish_output2()
ipv6: prevent possible UAF in ip6_xmit()
net: busy-poll: use ktime_get_ns() instead of local_clock()

Erico Nunes (1):
drm/lima: set gp bus_stop bit before hard reset

Eugene Syromiatnikov (1):
mptcp: correct MPTCP_SUBFLOW_ATTR_SSN_OFFSET reserved size

Faizal Rahim (3):
igc: Fix packet still tx after gate close by reducing i226 MAC retry buffer
igc: Fix reset adapter logics when tx mode change
igc: Fix qbv tx latency by setting gtxoffset

Florian Westphal (1):
netfilter: nf_queue: drop packets with cloned unconfirmed conntracks

Gergo Koteles (1):
platform/x86: lg-laptop: fix %s null argument warning

Greg Kroah-Hartman (2):
Revert "MIPS: Loongson64: reset: Prioritise firmware service" Linux 5.15.166

Griffin Kroah-Hartman (1):
Bluetooth: MGMT: Add error handling to pair_device()

Guanrui Huang (1):
irqchip/gic-v3-its: Remove BUG_ON in its_vpe_irq_domain_alloc

Guenter Roeck (1):
apparmor: fix policy_unpack_test on big endian systems

Haibo Xu (1):
arm64: ACPI: NUMA: initialize all values of acpi_early_node_map to NUMA_NO_NODE

Haiyang Zhang (1):
net: mana: Fix race of mana_hwc_post_rx_wqe and new hwc response

Hannes Reinecke (1):
nvmet-tcp: do not continue for invalid icreq

Hans J. Schultz (1):
net: dsa: mv88e6xxx: read FID when handling ATU violations

Hans Verkuil (3):
media: radio-isa: use dev_name to fill in bus_info
media: qcom: venus: fix incorrect return value
media: pci: cx23885: check cx23885_vdev_init() return

Heiko Carstens (1):
s390/smp,mcck: fix early IPI handling

Helge Deller (1):
parisc: Use irq_enter_rcu() to fix warning at kernel/context_tracking.c:367

Huang-Huang Bao (1):
pinctrl: rockchip: correct RK3328 iomux width flag for GPIO2-B pins

Ian Ray (1):
cdc-acm: Add DISABLE_ECHO quirk for GE HealthCare UI Controller

Jamie Bainbridge (1):
ethtool: check device is present when getting link settings

Jan Kara (1):
quota: Remove BUG_ON from dqget()

Jann Horn (1):
fuse: Initialize beyond-EOF page contents before setting uptodate

Jarkko Nikula (2):
i3c: mipi-i3c-hci: Remove BUG() when Ring Abort request times out
i3c: mipi-i3c-hci: Do not unmap region not mapped for transfer

Jason Gerecke (1):
HID: wacom: Defer calculation of resolution until resolution_code is known

Javier Carrasco (1):

      hwmon: (ltc2992) Fix memory leak in ltc2992_parse_dt()

Jeff Johnson (1):
wifi: cw1200: Avoid processing an invalid TIM IE

Jeff Layton (2):
nfsd: move reply cache initialization into nfsd startup
nfsd: move init of percpu reply_cache_stats counters back to nfsd_init_net

Jesse Zhang (1):
drm/amdgpu: Using uninitialized value *size when calling amdgpu_vce_cs_reloc

Jian Shen (1):
net: hns3: add checking for vf id of mailbox

Jiaxun Yang (1):
MIPS: Loongson64: Set timer mode in cpu-probe

Jie Wang (2):
net: hns3: fix wrong use of semaphore up
net: hns3: fix a deadlock problem when config TC during resetting

Johannes Berg (2):
wifi: cfg80211: check wiphy mutex is held for wdev mutex
wifi: mac80211: fix BA session teardown race

Josef Bacik (11):
sunrpc: don't change ->sv_stats if it doesn't exist
nfsd: stop setting ->pg_stats for unused stats
sunrpc: pass in the sv_stats struct through svc_create_pooled
sunrpc: remove ->pg_stats from svc_program
sunrpc: use the struct net as the svc proc private
nfsd: rename NFSD_NET_* to NFSD_STATS_*
nfsd: expose /proc/net/sunrpc/nfsd in net namespaces
nfsd: make all of the nfsd stats per-network namespace
nfsd: remove nfsd_stats, make th_cnt a global counter
nfsd: make svc_stat per-network namespace instead of global
btrfs: run delayed iputs when flushing delalloc

Joseph Huang (1):
net: dsa: mv88e6xxx: Fix out-of-bound access

Juan José Arboleda (1):
ALSA: usb-audio: Support Yamaha P-125 quirk entry

Justin Tee (1):
scsi: lpfc: Initialize status local variable in lpfc_sli4_repost_sgl_list()

Kees Cook (2):
net/sun3_82586: Avoid reading past buffer in debug output
x86: Increase brk randomness entropy for 64-bit systems

Khazhismel Kumykov (1):
dm resume: don't return EINVAL when signalled

Krishna Kurapati (1):
usb: dwc3: core: Skip setting event buffers for host only controllers

Krzysztof Kozlowski (4):
soundwire: stream: fix programming slave ports for non-continous port maps
usb: dwc3: omap: add missing depopulate in probe error path
usb: dwc3: st: fix probed platform device ref count on probe error path
usb: dwc3: st: add missing depopulate in probe error path

Kuniyuki Iwashima (1):
kcm: Serialise kcm_sendmsg() for the same socket.

Kunwu Chan (1):
powerpc/xics: Check return value of kasprintf in icp_native_map_one_cpu

Lee, Chun-Yi (1):
Bluetooth: hci_ldisc: check HCI_UART_PROTO_READY flag in HCIUARTGETPROTO

Li Nan (1):
md: clean up invalid BUG_ON in md_ioctl

Li zeming (1):
powerpc/boot: Handle allocation failure in simple_realloc()

Lianqin Hu (1):
ALSA: usb-audio: Add delay quirk for VIVO USB-C-XE710 HEADSET

Long Li (1):
net: mana: Fix doorbell out of order violation and avoid unnecessary doorbell rings

Luiz Augusto von Dentz (3):
Bluetooth: bnep: Fix out-of-bound access
Bluetooth: hci_core: Fix LE quote calculation
Bluetooth: SMP: Fix assumption of Central always being Initiator

Ma Ke (1):
pinctrl: single: fix potential NULL dereference in pcs_get_function()

Maciej Fijalkowski (1):
ice: fix ICE_LAST_OFFSET formula

Marc Zyngier (1):
KVM: arm64: Make ICC_*SGI*_EL1 undef in the absence of a vGICv3

Martin Blumenstingl (1):
clocksource/drivers/arm_global_timer: Guard against division by zero

Mathias Nyman (1):
xhci: Fix Panther point NULL pointer deref at full-speed re-enumeration

Matthieu Baerts (NGI0) (1):
mptcp: sched: check both backup in retrans

Max Filippov (1):
fs: binfmt_elf_efpic: don't use missing interpreter's properties

Maximilian Luz (1):
platform/surface: aggregator: Fix warning when controller is destroyed in probe

Michael Ellerman (1):
powerpc/boot: Only free if realloc() succeeds

Mika Westerberg (1):
thunderbolt: Mark XDomain as unplugged when router is removed

Mike Christie (1):
scsi: spi: Fix sshdr use

Mikulas Patocka (2):
dm persistent data: fix memory allocation failure dm suspend: return -ERESTARTSYS instead of -EINTR

Miri Korenblit (1):
wifi: iwlwifi: abort scan when rfkill on but device enabled

Muhammad Husaini Zulkifli (2):
igc: Correct the launchtime offset
igc: remove I226 Qbv BaseTime restriction

Mukesh Sisodiya (1):
wifi: iwlwifi: fw: Fix debugfs command sending

NeilBrown (1):
NFS: avoid infinite loop in pnfs_update_layout.

Niklas Cassel (1):
ata: libata-core: Fix null pointer dereference on error

Nikolay Aleksandrov (4):
bonding: fix bond_ipsec_offload_ok return type
bonding: fix null pointer deref in bond_ipsec_offload_ok
bonding: fix xfrm real_dev null pointer dereference
bonding: fix xfrm state handling when clearing active slave

Nikolay Kuratov (1):
cxgb4: add forgotten u64 ivlan cast before shift

Oreoluwa Babatunde (1):
openrisc: Call setup_memory() earlier in the init sequence

Pablo Neira Ayuso (1):
netfilter: flowtable: validate vlan header

Parsa Poorshikhian (1):
ALSA: hda/realtek: Fix noise from speakers on Lenovo IdeaPad 3 15IAU7

Paul Cercueil (3):
PM: core: Remove DEFINE_UNIVERSAL_DEV_PM_OPS() macro
PM: core: Add EXPORT[_GPL]_SIMPLE_DEV_PM_OPS macros
PM: runtime: Add DEFINE_RUNTIME_DEV_PM_OPS() macro

Pawel Dembicki (3):
net: dsa: vsc73xx: pass value in phy_write operation
net: dsa: vsc73xx: use read_poll_timeout instead delay loop
net: dsa: vsc73xx: check busy flag in MDIO operations

Pawel Laszczak (2):
usb: cdnsp: fix incorrect index in cdnsp_get_hw_deq function
usb: cdnsp: fix for Link TRB with TC

Phil Chang (1):
hrtimer: Prevent queuing of hrtimer without a function callback

Philipp Stanner (1):
media: drivers/media/dvb-core: copy user arrays safely

Piyush Mehta (3):
phy: xilinx: add runtime PM support
phy: xilinx: phy-zynqmp: dynamic clock support for power-save
phy: xilinx: phy-zynqmp: Fix SGMII linkup failure on resume

Qu Wenruo (1):
btrfs: tree-checker: add dev extent item checks

Radhey Shyam Pandey (1):
net: axienet: Fix register defines comment description

Rand Deeb (1):
ssb: Fix division by zero issue in ssb_calc_clock_rate

Sagi Grimberg (1):
nvmet-rdma: fix possible bad dereference when freeing rsps

Samuel Holland (1):
arm64: Fix KASAN random tag seed initialization

Sascha Hauer (1):
wifi: mwifiex: duplicate static structs used in driver instances

Sean Anderson (3):
net: xilinx: axienet: Always disable promiscuous mode
net: xilinx: axienet: Fix dangling multicast addresses
phy: zynqmp: Enable reference clock correctly

Sebastian Andrzej Siewior (2):
netfilter: nft_counter: Disable BH in nft_counter_offload_stats().
netfilter: nft_counter: Synchronize nft_counter_reset() against reader.

Selvarasu Ganesan (1):
usb: dwc3: core: Prevent USB core invalid event buffer address access

Serge Semin (2):
dmaengine: dw: Add peripheral bus width verification
dmaengine: dw: Add memory bus width verification

Siarhei Vishniakou (1):
HID: microsoft: Add rumble support to latest xbox controllers

Simon Horman (1):
tc-testing: don't access non-existent variable on exception

Stefan Haberland (1):
s390/dasd: fix error recovery leading to data corruption on ESE devices

Stefan Hajnoczi (1):
virtiofs: forbid newlines in tags

Stephen Hemminger (1):
netem: fix return value if duplicate enqueue fails

Takashi Iwai (1):
ALSA: timer: Relax start tick time check for slave timer elements

Tetsuo Handa (2):
block: use "unsigned long" for blk_validate_block_size().
Input: MT - limit max slots

Thomas Bogendoerfer (1):
ip6_tunnel: Fix broken GRO

Tom Hughes (1):
netfilter: allow ipv6 fragments to arrive on different devices

Uwe Kleine-König (1):
usb: gadget: fsl: Increase size of name buffer for endpoints

Vladimir Oltean (1):
net: dsa: mv88e6xxx: replace ATU violation prints with trace points

Volodymyr Babchuk (1):
soc: qcom: cmd-db: Map shared memory as WC, not WB

Wolfram Sang (1):
i2c: riic: avoid potential division by zero

Yue Haibing (1):
mlxbf_gige: Remove two unused function declarations

ZHANG Yuntian (1):
USB: serial: option: add MeiG Smart SRM825L

Zhen Lei (1):
selinux: fix potential counting error in avc_add_xperms_decision()

Zhiguo Niu (1):
f2fs: fix to do sanity check in update_sit_entry

Zhihao Cheng (1):
vfs: Don't evict inode under the inode lru traversing context

Zhu Yanjun (1):
RDMA/rtrs: Fix the problem of variable not initialized fully

Zi Yan (2):
mm/numa: no task_numa_fault() call if PMD is changed mm/numa: no task_numa_fault() call if PTE is changed

Zijun Hu (1):
usb: core: sysfs: Unmerge @usb3_hardware_lpm_attr_group in remove_power_attributes()

author maintainer
#1 lore raw
Makefile +1 -1
index 2105600c8d7c..747bfa4f1a8b 100644
@@ -1,7 +1,7 @@
 # SPDX-License-Identifier: GPL-2.0
 VERSION = 5
 PATCHLEVEL = 15
-SUBLEVEL = 165
+SUBLEVEL = 166
 EXTRAVERSION =
 NAME = Trick or Treat
 
arch/arm64/kernel/acpi_numa.c +1 -1
index fdfecf0991ce..5d88ae2ae490 100644
@@ -27,7 +27,7 @@
 
 #include <asm/numa.h>
 
-static int acpi_early_node_map[NR_CPUS] __initdata = { NUMA_NO_NODE };
+static int acpi_early_node_map[NR_CPUS] __initdata = { [0 ... NR_CPUS - 1] = NUMA_NO_NODE };
 
 int __init acpi_numa_get_nid(unsigned int cpu)
 {
arch/arm64/kernel/setup.c +0 -3
index be5f85b0a24d..6a9028bfd043 100644
@@ -364,9 +364,6 @@ void __init __no_sanitize_address setup_arch(char **cmdline_p)
 	smp_init_cpus();
 	smp_build_mpidr_hash();
 
-	/* Init percpu seeds for random tags after cpus are set up. */
-	kasan_init_sw_tags();
-
 #ifdef CONFIG_ARM64_SW_TTBR0_PAN
 	/*
 	 * Make sure init_thread_info.ttbr0 always generates translation
arch/arm64/kernel/smp.c +2 -0
index bc29cc044a4d..47684a03c42f 100644
@@ -464,6 +464,8 @@ void __init smp_prepare_boot_cpu(void)
 		init_gic_priority_masking();
 
 	kasan_init_hw_tags();
+	/* Init percpu seeds for random tags after cpus are set up. */
+	kasan_init_sw_tags();
 }
 
 static u64 __init of_get_cpu_mpidr(struct device_node *dn)
arch/arm64/kvm/sys_regs.c +6 -0
index d00170d7ddf5..1732a804069c 100644
@@ -30,6 +30,7 @@
 #include <trace/events/kvm.h>
 
 #include "sys_regs.h"
+#include "vgic/vgic.h"
 
 #include "trace.h"
 
@@ -203,6 +204,11 @@ static bool access_gic_sgi(struct kvm_vcpu *vcpu,
 {
 	bool g1;
 
+	if (!kvm_has_gicv3(vcpu->kvm)) {
+		kvm_inject_undefined(vcpu);
+		return false;
+	}
+
 	if (!p->is_write)
 		return read_from_write_only(vcpu, p, r);
 
arch/arm64/kvm/vgic/vgic.h +7 -0
index 640249950acf..2be4b0759f5b 100644
@@ -324,4 +324,11 @@ void vgic_v4_configure_vsgis(struct kvm *kvm);
 void vgic_v4_get_vlpi_state(struct vgic_irq *irq, bool *val);
 int vgic_v4_request_vpe_irq(struct kvm_vcpu *vcpu, int irq);
 
+static inline bool kvm_has_gicv3(struct kvm *kvm)
+{
+	return (static_branch_unlikely(&kvm_vgic_global_state.gicv3_cpuif) &&
+		irqchip_in_kernel(kvm) &&
+		kvm->arch.vgic.vgic_model == KVM_DEV_TYPE_ARM_VGIC_V3);
+}
+
 #endif
arch/mips/kernel/cpu-probe.c +4 -0
index 8ebcc298bf75..f258c5f15f90 100644
@@ -1782,12 +1782,16 @@ static inline void cpu_probe_loongson(struct cpuinfo_mips *c, unsigned int cpu)
 		c->ases |= (MIPS_ASE_LOONGSON_MMI | MIPS_ASE_LOONGSON_CAM |
 			MIPS_ASE_LOONGSON_EXT | MIPS_ASE_LOONGSON_EXT2);
 		c->ases &= ~MIPS_ASE_VZ; /* VZ of Loongson-3A2000/3000 is incomplete */
+		change_c0_config6(LOONGSON_CONF6_EXTIMER | LOONGSON_CONF6_INTIMER,
+				  LOONGSON_CONF6_INTIMER);
 		break;
 	case PRID_IMP_LOONGSON_64G:
 		__cpu_name[cpu] = "ICT Loongson-3";
 		set_elf_platform(cpu, "loongson3a");
 		set_isa(c, MIPS_CPU_ISA_M64R2);
 		decode_cpucfg(c);
+		change_c0_config6(LOONGSON_CONF6_EXTIMER | LOONGSON_CONF6_INTIMER,
+				  LOONGSON_CONF6_INTIMER);
 		break;
 	default:
 		panic("Unknown Loongson Processor ID!");
arch/mips/loongson64/reset.c +22 -16
index 2a8e4cd72605..e420800043b0 100644
@@ -11,7 +11,6 @@
 #include <linux/init.h>
 #include <linux/kexec.h>
 #include <linux/pm.h>
-#include <linux/reboot.h>
 #include <linux/slab.h>
 
 #include <asm/bootinfo.h>
@@ -22,21 +21,36 @@
 #include <loongson.h>
 #include <boot_param.h>
 
-static int firmware_restart(struct sys_off_data *unusedd)
+static void loongson_restart(char *command)
 {
 
 	void (*fw_restart)(void) = (void *)loongson_sysconf.restart_addr;
 
 	fw_restart();
-	return NOTIFY_DONE;
+	while (1) {
+		if (cpu_wait)
+			cpu_wait();
+	}
 }
 
-static int firmware_poweroff(struct sys_off_data *unused)
+static void loongson_poweroff(void)
 {
 	void (*fw_poweroff)(void) = (void *)loongson_sysconf.poweroff_addr;
 
 	fw_poweroff();
-	return NOTIFY_DONE;
+	while (1) {
+		if (cpu_wait)
+			cpu_wait();
+	}
+}
+
+static void loongson_halt(void)
+{
+	pr_notice("\n\n** You can safely turn off the power now **\n\n");
+	while (1) {
+		if (cpu_wait)
+			cpu_wait();
+	}
 }
 
 #ifdef CONFIG_KEXEC
@@ -140,17 +154,9 @@ static void loongson_crash_shutdown(struct pt_regs *regs)
 
 static int __init mips_reboot_setup(void)
 {
-	if (loongson_sysconf.restart_addr) {
-		register_sys_off_handler(SYS_OFF_MODE_RESTART,
-				 SYS_OFF_PRIO_FIRMWARE,
-				 firmware_restart, NULL);
-	}
-
-	if (loongson_sysconf.poweroff_addr) {
-		register_sys_off_handler(SYS_OFF_MODE_POWER_OFF,
-				 SYS_OFF_PRIO_FIRMWARE,
-				 firmware_poweroff, NULL);
-	}
+	_machine_restart = loongson_restart;
+	_machine_halt = loongson_halt;
+	pm_power_off = loongson_poweroff;
 
 #ifdef CONFIG_KEXEC
 	kexec_argv = kmalloc(KEXEC_ARGV_SIZE, GFP_KERNEL);
arch/openrisc/kernel/setup.c +3 -3
index 0cd04d936a7a..f2fe45d3094d 100644
@@ -270,6 +270,9 @@ void calibrate_delay(void)
 
 void __init setup_arch(char **cmdline_p)
 {
+	/* setup memblock allocator */
+	setup_memory();
+
 	unflatten_and_copy_device_tree();
 
 	setup_cpuinfo();
@@ -293,9 +296,6 @@ void __init setup_arch(char **cmdline_p)
 	}
 #endif
 
-	/* setup memblock allocator */
-	setup_memory();
-
 	/* paging_init() sets up the MMU and marks all pages as reserved */
 	paging_init();
 
arch/parisc/kernel/irq.c +2 -2
index 5d9044e65a1a..04127377b7be 100644
@@ -518,7 +518,7 @@ void do_cpu_irq_mask(struct pt_regs *regs)
 
 	old_regs = set_irq_regs(regs);
 	local_irq_disable();
-	irq_enter();
+	irq_enter_rcu();
 
 	eirr_val = mfctl(23) & cpu_eiem & per_cpu(local_ack_eiem, cpu);
 	if (!eirr_val)
@@ -553,7 +553,7 @@ void do_cpu_irq_mask(struct pt_regs *regs)
 #endif /* CONFIG_IRQSTACKS */
 
  out:
-	irq_exit();
+	irq_exit_rcu();
 	set_irq_regs(old_regs);
 	return;
 
arch/powerpc/boot/simple_alloc.c +5 -2
index 65ec135d0157..bc99f75b8582 100644
@@ -114,8 +114,11 @@ static void *simple_realloc(void *ptr, unsigned long size)
 		return ptr;
 
 	new = simple_malloc(size);
-	memcpy(new, ptr, p->size);
-	simple_free(ptr);
+	if (new) {
+		memcpy(new, ptr, p->size);
+		simple_free(ptr);
+	}
+
 	return new;
 }
 
arch/powerpc/sysdev/xics/icp-native.c +2 -0
index 7d13d2ef5a90..66de291b27d0 100644
@@ -235,6 +235,8 @@ static int __init icp_native_map_one_cpu(int hw_id, unsigned long addr,
 	rname = kasprintf(GFP_KERNEL, "CPU %d [0x%x] Interrupt Presentation",
 			  cpu, hw_id);
 
+	if (!rname)
+		return -ENOMEM;
 	if (!request_mem_region(addr, size, rname)) {
 		pr_warn("icp_native: Could not reserve ICP MMIO for CPU %d, interrupt server #0x%x\n",
 			cpu, hw_id);
arch/s390/include/asm/uv.h +4 -1
index fe92a4caf5ec..56df0bc01e3a 100644
@@ -312,7 +312,10 @@ static inline int share(unsigned long addr, u16 cmd)
 
 	if (!uv_call(0, (u64)&uvcb))
 		return 0;
-	return -EINVAL;
+	pr_err("%s UVC failed (rc: 0x%x, rrc: 0x%x), possible hypervisor bug.\n",
+	       uvcb.header.cmd == UVC_CMD_SET_SHARED_ACCESS ? "Share" : "Unshare",
+	       uvcb.header.rc, uvcb.header.rrc);
+	panic("System security cannot be guaranteed unless the system panics now.\n");
 }
 
 /*
arch/s390/kernel/early.c +3 -9
index 9857cb046726..9898582f44da 100644
@@ -250,15 +250,9 @@ static inline void save_vector_registers(void)
 #endif
 }
 
-static inline void setup_control_registers(void)
+static inline void setup_low_address_protection(void)
 {
-	unsigned long reg;
-
-	__ctl_store(reg, 0, 0);
-	reg |= CR0_LOW_ADDRESS_PROTECTION;
-	reg |= CR0_EMERGENCY_SIGNAL_SUBMASK;
-	reg |= CR0_EXTERNAL_CALL_SUBMASK;
-	__ctl_load(reg, 0, 0);
+	__ctl_set_bit(0, 28);
 }
 
 static inline void setup_access_registers(void)
@@ -311,7 +305,7 @@ void __init startup_init(void)
 	save_vector_registers();
 	setup_topology();
 	sclp_early_detect();
-	setup_control_registers();
+	setup_low_address_protection();
 	setup_access_registers();
 	lockdep_on();
 }
arch/s390/kernel/smp.c +2 -2
index 35af70ed58fc..48f67a69d119 100644
@@ -1003,12 +1003,12 @@ void __init smp_fill_possible_mask(void)
 
 void __init smp_prepare_cpus(unsigned int max_cpus)
 {
-	/* request the 0x1201 emergency signal external interrupt */
 	if (register_external_irq(EXT_IRQ_EMERGENCY_SIG, do_ext_call_interrupt))
 		panic("Couldn't request external interrupt 0x1201");
-	/* request the 0x1202 external call external interrupt */
+	ctl_set_bit(0, 14);
 	if (register_external_irq(EXT_IRQ_EXTERNAL_CALL, do_ext_call_interrupt))
 		panic("Couldn't request external interrupt 0x1202");
+	ctl_set_bit(0, 13);
 }
 
 void __init smp_prepare_boot_cpu(void)
arch/x86/kernel/process.c +4 -1
index e6b28c689e9a..720d99520316 100644
@@ -937,7 +937,10 @@ unsigned long arch_align_stack(unsigned long sp)
 
 unsigned long arch_randomize_brk(struct mm_struct *mm)
 {
-	return randomize_page(mm->brk, 0x02000000);
+	if (mmap_is_ia32())
+		return randomize_page(mm->brk, SZ_32M);
+
+	return randomize_page(mm->brk, SZ_1G);
 }
 
 /*
drivers/ata/libata-core.c +3 -0
index 31a0818b4440..8c85d2250899 100644
@@ -5391,6 +5391,9 @@ static void ata_host_release(struct kref *kref)
 	for (i = 0; i < host->n_ports; i++) {
 		struct ata_port *ap = host->ports[i];
 
+		if (!ap)
+			continue;
+
 		kfree(ap->pmp_link);
 		kfree(ap->slave_link);
 		kfree(ap);
drivers/atm/idt77252.c +5 -4
index 2daf50d4cd47..7810f974b2ca 100644
@@ -1118,8 +1118,8 @@ dequeue_rx(struct idt77252_dev *card, struct rsq_entry *rsqe)
 	rpp->len += skb->len;
 
 	if (stat & SAR_RSQE_EPDU) {
+		unsigned int len, truesize;
 		unsigned char *l1l2;
-		unsigned int len;
 
 		l1l2 = (unsigned char *) ((unsigned long) skb->data + skb->len - 6);
 
@@ -1189,14 +1189,15 @@ dequeue_rx(struct idt77252_dev *card, struct rsq_entry *rsqe)
 		ATM_SKB(skb)->vcc = vcc;
 		__net_timestamp(skb);
 
+		truesize = skb->truesize;
 		vcc->push(vcc, skb);
 		atomic_inc(&vcc->stats->rx);
 
-		if (skb->truesize > SAR_FB_SIZE_3)
+		if (truesize > SAR_FB_SIZE_3)
 			add_rx_skb(card, 3, SAR_FB_SIZE_3, 1);
-		else if (skb->truesize > SAR_FB_SIZE_2)
+		else if (truesize > SAR_FB_SIZE_2)
 			add_rx_skb(card, 2, SAR_FB_SIZE_2, 1);
-		else if (skb->truesize > SAR_FB_SIZE_1)
+		else if (truesize > SAR_FB_SIZE_1)
 			add_rx_skb(card, 1, SAR_FB_SIZE_1, 1);
 		else
 			add_rx_skb(card, 0, SAR_FB_SIZE_0, 1);
drivers/bluetooth/hci_ldisc.c +2 -1
index 2d960a5e3679..be51528afed9 100644
@@ -768,7 +768,8 @@ static int hci_uart_tty_ioctl(struct tty_struct *tty, struct file *file,
 		break;
 
 	case HCIUARTGETPROTO:
-		if (test_bit(HCI_UART_PROTO_SET, &hu->flags))
+		if (test_bit(HCI_UART_PROTO_SET, &hu->flags) &&
+		    test_bit(HCI_UART_PROTO_READY, &hu->flags))
 			err = hu->proto->id;
 		else
 			err = -EUNATCH;
drivers/char/xillybus/xillyusb.c +34 -8

116 lines not on this page · raw message

drivers/clocksource/arm_global_timer.c +5 -6
index e1c773bb5535..22a58d35a41f 100644
@@ -290,18 +290,17 @@ static int gt_clk_rate_change_cb(struct notifier_block *nb,
 	switch (event) {
 	case PRE_RATE_CHANGE:
 	{
-		int psv;
+		unsigned long psv;
 
-		psv = DIV_ROUND_CLOSEST(ndata->new_rate,
-					gt_target_rate);
-
-		if (abs(gt_target_rate - (ndata->new_rate / psv)) > MAX_F_ERR)
+		psv = DIV_ROUND_CLOSEST(ndata->new_rate, gt_target_rate);
+		if (!psv ||
+		    abs(gt_target_rate - (ndata->new_rate / psv)) > MAX_F_ERR)
 			return NOTIFY_BAD;
 
 		psv--;
 
 		/* prescaler within legal range? */
-		if (psv < 0 || psv > GT_CONTROL_PRESCALER_MAX)
+		if (psv > GT_CONTROL_PRESCALER_MAX)
 			return NOTIFY_BAD;
 
 		/*
drivers/dma/dw/core.c +82 -7

131 lines not on this page · raw message

drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.c +8 -0
index e7a010b7ca1f..347e97b4b51b 100644
@@ -413,16 +413,24 @@ int amdgpu_ctx_ioctl(struct drm_device *dev, void *data,
 
 	switch (args->in.op) {
 	case AMDGPU_CTX_OP_ALLOC_CTX:
+		if (args->in.flags)
+			return -EINVAL;
 		r = amdgpu_ctx_alloc(adev, fpriv, filp, priority, &id);
 		args->out.alloc.ctx_id = id;
 		break;
 	case AMDGPU_CTX_OP_FREE_CTX:
+		if (args->in.flags)
+			return -EINVAL;
 		r = amdgpu_ctx_free(fpriv, id);
 		break;
 	case AMDGPU_CTX_OP_QUERY_STATE:
+		if (args->in.flags)
+			return -EINVAL;
 		r = amdgpu_ctx_query(adev, fpriv, id, &args->out);
 		break;
 	case AMDGPU_CTX_OP_QUERY_STATE2:
+		if (args->in.flags)
+			return -EINVAL;
 		r = amdgpu_ctx_query2(adev, fpriv, id, &args->out);
 		break;
 	default:
drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c +2 -1
index 8e8dee9fac9f..9f7450a8d004 100644
@@ -733,7 +733,8 @@ int amdgpu_vce_ring_parse_cs(struct amdgpu_cs_parser *p, uint32_t ib_idx)
 	uint32_t created = 0;
 	uint32_t allocated = 0;
 	uint32_t tmp, handle = 0;
-	uint32_t *size = &tmp;
+	uint32_t dummy = 0xffffffff;
+	uint32_t *size = &dummy;
 	unsigned idx;
 	int i, r = 0;
 
drivers/gpu/drm/amd/amdgpu/jpeg_v2_0.c +2 -2
index 85967a5570cb..df52190b7e8b 100644
@@ -557,11 +557,11 @@ void jpeg_v2_0_dec_ring_emit_ib(struct amdgpu_ring *ring,
 
 	amdgpu_ring_write(ring, PACKETJ(mmUVD_LMI_JRBC_IB_VMID_INTERNAL_OFFSET,
 		0, 0, PACKETJ_TYPE0));
-	amdgpu_ring_write(ring, (vmid | (vmid << 4)));
+	amdgpu_ring_write(ring, (vmid | (vmid << 4) | (vmid << 8)));
 
 	amdgpu_ring_write(ring, PACKETJ(mmUVD_LMI_JPEG_VMID_INTERNAL_OFFSET,
 		0, 0, PACKETJ_TYPE0));
-	amdgpu_ring_write(ring, (vmid | (vmid << 4)));
+	amdgpu_ring_write(ring, (vmid | (vmid << 4) | (vmid << 8)));
 
 	amdgpu_ring_write(ring,	PACKETJ(mmUVD_LMI_JRBC_IB_64BIT_BAR_LOW_INTERNAL_OFFSET,
 		0, 0, PACKETJ_TYPE0));
drivers/gpu/drm/amd/amdkfd/kfd_chardev.c +4 -1
index 88f9e1aa51f8..34c466e8eee9 100644
@@ -1290,7 +1290,7 @@ static int kfd_ioctl_alloc_memory_of_gpu(struct file *filep,
 			goto err_unlock;
 		}
 		offset = amdgpu_amdkfd_get_mmio_remap_phys_addr(dev->kgd);
-		if (!offset) {
+		if (!offset || (PAGE_SIZE > 4096)) {
 			err = -ENOMEM;
 			goto err_unlock;
 		}
@@ -2029,6 +2029,9 @@ static int kfd_mmio_mmap(struct kfd_dev *dev, struct kfd_process *process,
 	if (vma->vm_end - vma->vm_start != PAGE_SIZE)
 		return -EINVAL;
 
+	if (PAGE_SIZE > 4096)
+		return -EINVAL;
+
 	address = amdgpu_amdkfd_get_mmio_remap_phys_addr(dev->kgd);
 
 	vma->vm_flags |= VM_IO | VM_DONTCOPY | VM_DONTEXPAND | VM_NORESERVE |
drivers/gpu/drm/lima/lima_gp.c +12 -0
index ca3842f71984..82071835ec9e 100644
@@ -166,6 +166,11 @@ static void lima_gp_task_run(struct lima_sched_pipe *pipe,
 	gp_write(LIMA_GP_CMD, cmd);
 }
 
+static int lima_gp_bus_stop_poll(struct lima_ip *ip)
+{
+	return !!(gp_read(LIMA_GP_STATUS) & LIMA_GP_STATUS_BUS_STOPPED);
+}
+
 static int lima_gp_hard_reset_poll(struct lima_ip *ip)
 {
 	gp_write(LIMA_GP_PERF_CNT_0_LIMIT, 0xC01A0000);
@@ -179,6 +184,13 @@ static int lima_gp_hard_reset(struct lima_ip *ip)
 
 	gp_write(LIMA_GP_PERF_CNT_0_LIMIT, 0xC0FFE000);
 	gp_write(LIMA_GP_INT_MASK, 0);
+
+	gp_write(LIMA_GP_CMD, LIMA_GP_CMD_STOP_BUS);
+	ret = lima_poll_timeout(ip, lima_gp_bus_stop_poll, 10, 100);
+	if (ret) {
+		dev_err(dev->dev, "%s bus stop timeout\n", lima_ip_name(ip));
+		return ret;
+	}
 	gp_write(LIMA_GP_CMD, LIMA_GP_CMD_RESET);
 	ret = lima_poll_timeout(ip, lima_gp_hard_reset_poll, 10, 100);
 	if (ret) {
drivers/gpu/drm/msm/disp/dpu1/dpu_kms.h +2 -12
index 170b3e9dd4b0..73aef80a8556 100644
@@ -32,24 +32,14 @@
  * @fmt: Pointer to format string
  */
 #define DPU_DEBUG(fmt, ...)                                                \
-	do {                                                               \
-		if (drm_debug_enabled(DRM_UT_KMS))                         \
-			DRM_DEBUG(fmt, ##__VA_ARGS__); \
-		else                                                       \
-			pr_debug(fmt, ##__VA_ARGS__);                      \
-	} while (0)
+	DRM_DEBUG_DRIVER(fmt, ##__VA_ARGS__)
 
 /**
  * DPU_DEBUG_DRIVER - macro for hardware driver logging
  * @fmt: Pointer to format string
  */
 #define DPU_DEBUG_DRIVER(fmt, ...)                                         \
-	do {                                                               \
-		if (drm_debug_enabled(DRM_UT_DRIVER))                      \
-			DRM_ERROR(fmt, ##__VA_ARGS__); \
-		else                                                       \
-			pr_debug(fmt, ##__VA_ARGS__);                      \
-	} while (0)
+	DRM_DEBUG_DRIVER(fmt, ##__VA_ARGS__)
 
 #define DPU_ERROR(fmt, ...) pr_err("[dpu error]" fmt, ##__VA_ARGS__)
 #define DPU_ERROR_RATELIMITED(fmt, ...) pr_err_ratelimited("[dpu error]" fmt, ##__VA_ARGS__)
drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c +3 -0
index 9c30ab106b0a..3ee9a92ffed5 100644
@@ -906,6 +906,9 @@ static int dpu_plane_prepare_fb(struct drm_plane *plane,
 			new_state->fb, &layout);
 	if (ret) {
 		DPU_ERROR_PLANE(pdpu, "failed to get format layout, %d\n", ret);
+		if (pstate->aspace)
+			msm_framebuffer_cleanup(new_state->fb, pstate->aspace,
+						pstate->needs_dirtyfb);
 		return ret;
 	}
 
drivers/gpu/drm/msm/dp/dp_ctrl.c +2 -0
index 854173df6701..85f86afc5505 100644
@@ -1237,6 +1237,8 @@ static int dp_ctrl_link_train(struct dp_ctrl_private *ctrl,
 	link_info.rate = ctrl->link->link_params.rate;
 	link_info.capabilities = DP_LINK_CAP_ENHANCED_FRAMING;
 
+	dp_link_reset_phy_params_vx_px(ctrl->link);
+
 	dp_aux_link_configure(ctrl->aux, &link_info);
 	drm_dp_dpcd_write(ctrl->aux, DP_MAIN_LINK_CHANNEL_CODING_SET,
 				&encoding, 1);
drivers/hid/hid-ids.h +9 -1
index 0504bdd46501..5988d9c67a30 100644
@@ -894,7 +894,15 @@
 #define USB_DEVICE_ID_MS_TYPE_COVER_2    0x07a9
 #define USB_DEVICE_ID_MS_POWER_COVER     0x07da
 #define USB_DEVICE_ID_MS_SURFACE3_COVER		0x07de
-#define USB_DEVICE_ID_MS_XBOX_ONE_S_CONTROLLER	0x02fd
+/*
+ * For a description of the Xbox controller models, refer to:
+ * https://en.wikipedia.org/wiki/Xbox_Wireless_Controller#Summary
+ */
+#define USB_DEVICE_ID_MS_XBOX_CONTROLLER_MODEL_1708	0x02fd
+#define USB_DEVICE_ID_MS_XBOX_CONTROLLER_MODEL_1708_BLE	0x0b20
+#define USB_DEVICE_ID_MS_XBOX_CONTROLLER_MODEL_1914	0x0b13
+#define USB_DEVICE_ID_MS_XBOX_CONTROLLER_MODEL_1797	0x0b05
+#define USB_DEVICE_ID_MS_XBOX_CONTROLLER_MODEL_1797_BLE	0x0b22
 #define USB_DEVICE_ID_MS_PIXART_MOUSE    0x00cb
 #define USB_DEVICE_ID_8BITDO_SN30_PRO_PLUS      0x02e0
 #define USB_DEVICE_ID_MS_MOUSE_0783      0x0783
drivers/hid/hid-microsoft.c +10 -1
index 071fd093a5f4..9345e2bfd56e 100644
@@ -446,7 +446,16 @@ static const struct hid_device_id ms_devices[] = {
 		.driver_data = MS_PRESENTER },
 	{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_MICROSOFT, 0x091B),
 		.driver_data = MS_SURFACE_DIAL },
-	{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_XBOX_ONE_S_CONTROLLER),
+
+	{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_XBOX_CONTROLLER_MODEL_1708),
+		.driver_data = MS_QUIRK_FF },
+	{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_XBOX_CONTROLLER_MODEL_1708_BLE),
+		.driver_data = MS_QUIRK_FF },
+	{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_XBOX_CONTROLLER_MODEL_1914),
+		.driver_data = MS_QUIRK_FF },
+	{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_XBOX_CONTROLLER_MODEL_1797),
+		.driver_data = MS_QUIRK_FF },
+	{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_XBOX_CONTROLLER_MODEL_1797_BLE),
 		.driver_data = MS_QUIRK_FF },
 	{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_8BITDO_SN30_PRO_PLUS),
 		.driver_data = MS_QUIRK_FF },
drivers/hid/wacom_wac.c +3 -1
index 11d15c83f502..438c9f6d21d9 100644
@@ -1924,12 +1924,14 @@ static void wacom_map_usage(struct input_dev *input, struct hid_usage *usage,
 	int fmax = field->logical_maximum;
 	unsigned int equivalent_usage = wacom_equivalent_usage(usage->hid);
 	int resolution_code = code;
-	int resolution = hidinput_calc_abs_res(field, resolution_code);
+	int resolution;
 
 	if (equivalent_usage == HID_DG_TWIST) {
 		resolution_code = ABS_RZ;
 	}
 
+	resolution = hidinput_calc_abs_res(field, resolution_code);
+
 	if (equivalent_usage == HID_GD_X) {
 		fmin += features->offset_left;
 		fmax -= features->offset_right;
drivers/hwmon/ltc2992.c +7 -1
index 009a0a5af923..838b679a12d4 100644
@@ -912,8 +912,14 @@ static int ltc2992_parse_dt(struct ltc2992_state *st)
 		}
 
 		ret = fwnode_property_read_u32(child, "shunt-resistor-micro-ohms", &val);
-		if (!ret)
+		if (!ret) {
+			if (!val) {
+				fwnode_handle_put(child);
+				return dev_err_probe(&st->client->dev, -EINVAL,
+						     "shunt resistor value cannot be zero\n");
+			}
 			st->r_sense_uohm[addr] = val;
+		}
 	}
 
 	return 0;
drivers/i2c/busses/i2c-riic.c +1 -1
index 78b84445ee6a..1d3dbc1bfc25 100644
@@ -319,7 +319,7 @@ static int riic_init_hw(struct riic_dev *riic, struct i2c_timings *t)
 	 * frequency with only 62 clock ticks max (31 high, 31 low).
 	 * Aim for a duty of 60% LOW, 40% HIGH.
 	 */
-	total_ticks = DIV_ROUND_UP(rate, t->bus_freq_hz);
+	total_ticks = DIV_ROUND_UP(rate, t->bus_freq_hz ?: 1);
 
 	for (cks = 0; cks < 7; cks++) {
 		/*
drivers/i3c/master/mipi-i3c-hci/dma.c +3 -2
index dd2dc0039960..5e3f0ee1cfd0 100644
@@ -345,6 +345,8 @@ static void hci_dma_unmap_xfer(struct i3c_hci *hci,
 
 	for (i = 0; i < n; i++) {
 		xfer = xfer_list + i;
+		if (!xfer->data)
+			continue;
 		dma_unmap_single(&hci->master.dev,
 				 xfer->data_dma, xfer->data_len,
 				 xfer->rnw ? DMA_FROM_DEVICE : DMA_TO_DEVICE);
@@ -450,10 +452,9 @@ static bool hci_dma_dequeue_xfer(struct i3c_hci *hci,
 		/*
 		 * We're deep in it if ever this condition is ever met.
 		 * Hardware might still be writing to memory, etc.
-		 * Better suspend the world than risking silent corruption.
 		 */
 		dev_crit(&hci->master.dev, "unable to abort the ring\n");
-		BUG();
+		WARN_ON(1);
 	}
 
 	for (i = 0; i < n; i++) {
drivers/infiniband/hw/hfi1/chip.c +3 -2
index b69dd618146e..c6d9a828050d 100644
@@ -13182,15 +13182,16 @@ static void read_mod_write(struct hfi1_devdata *dd, u16 src, u64 bits,
 {
 	u64 reg;
 	u16 idx = src / BITS_PER_REGISTER;
+	unsigned long flags;
 
-	spin_lock(&dd->irq_src_lock);
+	spin_lock_irqsave(&dd->irq_src_lock, flags);
 	reg = read_csr(dd, CCE_INT_MASK + (8 * idx));
 	if (set)
 		reg |= bits;
 	else
 		reg &= ~bits;
 	write_csr(dd, CCE_INT_MASK + (8 * idx), reg);
-	spin_unlock(&dd->irq_src_lock);
+	spin_unlock_irqrestore(&dd->irq_src_lock, flags);
 }
 
 /**
drivers/infiniband/ulp/rtrs/rtrs.c +1 -1
index 4745f33d7104..7f0f3ce8f115 100644
@@ -255,7 +255,7 @@ static int create_cq(struct rtrs_con *con, int cq_vector, int nr_cqe,
 static int create_qp(struct rtrs_con *con, struct ib_pd *pd,
 		     u32 max_send_wr, u32 max_recv_wr, u32 max_sge)
 {
-	struct ib_qp_init_attr init_attr = {NULL};
+	struct ib_qp_init_attr init_attr = {};
 	struct rdma_cm_id *cm_id = con->cm_id;
 	int ret;
 
drivers/input/input-mt.c +3 -0
index 44fe6f2f063c..d0f8c31d7cc0 100644
@@ -45,6 +45,9 @@ int input_mt_init_slots(struct input_dev *dev, unsigned int num_slots,
 		return 0;
 	if (mt)
 		return mt->num_slots != num_slots ? -EINVAL : 0;
+	/* Arbitrary limit for avoiding too large memory allocation. */
+	if (num_slots > 1024)
+		return -EINVAL;
 
 	mt = kzalloc(struct_size(mt, slots, num_slots), GFP_KERNEL);
 	if (!mt)
drivers/irqchip/irq-gic-v3-its.c +0 -2
index fa89e590c133..3fa6c7184326 100644
@@ -4491,8 +4491,6 @@ static int its_vpe_irq_domain_alloc(struct irq_domain *domain, unsigned int virq
 	struct page *vprop_page;
 	int base, nr_ids, i, err = 0;
 
-	BUG_ON(!vm);
-
 	bitmap = its_lpi_alloc(roundup_pow_of_two(nr_irqs), &base, &nr_ids);
 	if (!bitmap)
 		return -ENOMEM;
drivers/md/dm-clone-metadata.c +0 -5
index c43d55672bce..47c1fa7aad8b 100644
@@ -465,11 +465,6 @@ static void __destroy_persistent_data_structures(struct dm_clone_metadata *cmd)
 
 /*---------------------------------------------------------------------------*/
 
-static size_t bitmap_size(unsigned long nr_bits)
-{
-	return BITS_TO_LONGS(nr_bits) * sizeof(long);
-}
-
 static int __dirty_map_init(struct dirty_map *dmap, unsigned long nr_words,
 			    unsigned long nr_regions)
 {
drivers/md/dm-ioctl.c +20 -2
index c1bcc857c1b6..fb0987e71611 100644
@@ -1151,8 +1151,26 @@ static int do_resume(struct dm_ioctl *param)
 			suspend_flags &= ~DM_SUSPEND_LOCKFS_FLAG;
 		if (param->flags & DM_NOFLUSH_FLAG)
 			suspend_flags |= DM_SUSPEND_NOFLUSH_FLAG;
-		if (!dm_suspended_md(md))
-			dm_suspend(md, suspend_flags);
+		if (!dm_suspended_md(md)) {
+			r = dm_suspend(md, suspend_flags);
+			if (r) {
+				down_write(&_hash_lock);
+				hc = dm_get_mdptr(md);
+				if (hc && !hc->new_map) {
+					hc->new_map = new_map;
+					new_map = NULL;
+				} else {
+					r = -ENXIO;
+				}
+				up_write(&_hash_lock);
+				if (new_map) {
+					dm_sync_table(md);
+					dm_table_destroy(new_map);
+				}
+				dm_put(md);
+				return r;
+			}
+		}
 
 		old_size = dm_get_size(md);
 		old_map = dm_swap_table(md, new_map);
drivers/md/dm.c +2 -2
index fd9bb8b53219..8199166ca862 100644
@@ -2255,7 +2255,7 @@ static int dm_wait_for_bios_completion(struct mapped_device *md, unsigned int ta
 			break;
 
 		if (signal_pending_state(task_state, current)) {
-			r = -EINTR;
+			r = -ERESTARTSYS;
 			break;
 		}
 
@@ -2280,7 +2280,7 @@ static int dm_wait_for_completion(struct mapped_device *md, unsigned int task_st
 			break;
 
 		if (signal_pending_state(task_state, current)) {
-			r = -EINTR;
+			r = -ERESTARTSYS;
 			break;
 		}
 
drivers/md/md.c +0 -5
index 5b6c366587d5..332458ad9663 100644
@@ -7589,11 +7589,6 @@ static int md_ioctl(struct block_device *bdev, fmode_t mode,
 
 	mddev = bdev->bd_disk->private_data;
 
-	if (!mddev) {
-		BUG();
-		goto out;
-	}
-
 	/* Some actions do not requires the mutex */
 	switch (cmd) {
 	case GET_ARRAY_INFO:
drivers/md/persistent-data/dm-space-map-metadata.c +2 -2
index 392ae26134a4..c8451ffd23a3 100644
@@ -274,7 +274,7 @@ static void sm_metadata_destroy(struct dm_space_map *sm)
 {
 	struct sm_metadata *smm = container_of(sm, struct sm_metadata, sm);
 
-	kfree(smm);
+	kvfree(smm);
 }
 
 static int sm_metadata_get_nr_blocks(struct dm_space_map *sm, dm_block_t *count)
@@ -768,7 +768,7 @@ struct dm_space_map *dm_sm_metadata_init(void)
 {
 	struct sm_metadata *smm;
 
-	smm = kmalloc(sizeof(*smm), GFP_KERNEL);
+	smm = kvmalloc(sizeof(*smm), GFP_KERNEL);
 	if (!smm)
 		return ERR_PTR(-ENOMEM);
 
drivers/media/dvb-core/dvb_frontend.c +8 -4
index fea62bce9746..d76ac3ec93c2 100644
@@ -2160,7 +2160,8 @@ static int dvb_frontend_handle_compat_ioctl(struct file *file, unsigned int cmd,
 		if (!tvps->num || (tvps->num > DTV_IOCTL_MAX_MSGS))
 			return -EINVAL;
 
-		tvp = memdup_user(compat_ptr(tvps->props), tvps->num * sizeof(*tvp));
+		tvp = memdup_array_user(compat_ptr(tvps->props),
+					tvps->num, sizeof(*tvp));
 		if (IS_ERR(tvp))
 			return PTR_ERR(tvp);
 
@@ -2191,7 +2192,8 @@ static int dvb_frontend_handle_compat_ioctl(struct file *file, unsigned int cmd,
 		if (!tvps->num || (tvps->num > DTV_IOCTL_MAX_MSGS))
 			return -EINVAL;
 
-		tvp = memdup_user(compat_ptr(tvps->props), tvps->num * sizeof(*tvp));
+		tvp = memdup_array_user(compat_ptr(tvps->props),
+					tvps->num, sizeof(*tvp));
 		if (IS_ERR(tvp))
 			return PTR_ERR(tvp);
 
@@ -2368,7 +2370,8 @@ static int dvb_get_property(struct dvb_frontend *fe, struct file *file,
 	if (!tvps->num || tvps->num > DTV_IOCTL_MAX_MSGS)
 		return -EINVAL;
 
-	tvp = memdup_user((void __user *)tvps->props, tvps->num * sizeof(*tvp));
+	tvp = memdup_array_user((void __user *)tvps->props,
+				tvps->num, sizeof(*tvp));
 	if (IS_ERR(tvp))
 		return PTR_ERR(tvp);
 
@@ -2446,7 +2449,8 @@ static int dvb_frontend_handle_ioctl(struct file *file,
 		if (!tvps->num || (tvps->num > DTV_IOCTL_MAX_MSGS))
 			return -EINVAL;
 
-		tvp = memdup_user((void __user *)tvps->props, tvps->num * sizeof(*tvp));
+		tvp = memdup_array_user((void __user *)tvps->props,
+					tvps->num, sizeof(*tvp));
 		if (IS_ERR(tvp))
 			return PTR_ERR(tvp);
 
drivers/media/pci/cx23885/cx23885-video.c +8 -0
index 6851e01da1c5..7a696aea52f1 100644
@@ -1354,6 +1354,10 @@ int cx23885_video_register(struct cx23885_dev *dev)
 	/* register Video device */
 	dev->video_dev = cx23885_vdev_init(dev, dev->pci,
 		&cx23885_video_template, "video");
+	if (!dev->video_dev) {
+		err = -ENOMEM;
+		goto fail_unreg;
+	}
 	dev->video_dev->queue = &dev->vb2_vidq;
 	dev->video_dev->device_caps = V4L2_CAP_READWRITE | V4L2_CAP_STREAMING |
 				      V4L2_CAP_AUDIO | V4L2_CAP_VIDEO_CAPTURE;
@@ -1382,6 +1386,10 @@ int cx23885_video_register(struct cx23885_dev *dev)
 	/* register VBI device */
 	dev->vbi_dev = cx23885_vdev_init(dev, dev->pci,
 		&cx23885_vbi_template, "vbi");
+	if (!dev->vbi_dev) {
+		err = -ENOMEM;
+		goto fail_unreg;
+	}
 	dev->vbi_dev->queue = &dev->vb2_vbiq;
 	dev->vbi_dev->device_caps = V4L2_CAP_READWRITE | V4L2_CAP_STREAMING |
 				    V4L2_CAP_AUDIO | V4L2_CAP_VBI_CAPTURE;
drivers/media/pci/solo6x10/solo6x10-offsets.h +5 -5
index f414ee1316f2..fdbb817e6360 100644
@@ -57,16 +57,16 @@
 #define SOLO_MP4E_EXT_ADDR(__solo) \
 	(SOLO_EREF_EXT_ADDR(__solo) + SOLO_EREF_EXT_AREA(__solo))
 #define SOLO_MP4E_EXT_SIZE(__solo) \
-	max((__solo->nr_chans * 0x00080000),				\
-	    min(((__solo->sdram_size - SOLO_MP4E_EXT_ADDR(__solo)) -	\
-		 __SOLO_JPEG_MIN_SIZE(__solo)), 0x00ff0000))
+	clamp(__solo->sdram_size - SOLO_MP4E_EXT_ADDR(__solo) -	\
+	      __SOLO_JPEG_MIN_SIZE(__solo),			\
+	      __solo->nr_chans * 0x00080000, 0x00ff0000)
 
 #define __SOLO_JPEG_MIN_SIZE(__solo)		(__solo->nr_chans * 0x00080000)
 #define SOLO_JPEG_EXT_ADDR(__solo) \
 		(SOLO_MP4E_EXT_ADDR(__solo) + SOLO_MP4E_EXT_SIZE(__solo))
 #define SOLO_JPEG_EXT_SIZE(__solo) \
-	max(__SOLO_JPEG_MIN_SIZE(__solo),				\
-	    min((__solo->sdram_size - SOLO_JPEG_EXT_ADDR(__solo)), 0x00ff0000))
+	clamp(__solo->sdram_size - SOLO_JPEG_EXT_ADDR(__solo),	\
+	      __SOLO_JPEG_MIN_SIZE(__solo), 0x00ff0000)
 
 #define SOLO_SDRAM_END(__solo) \
 	(SOLO_JPEG_EXT_ADDR(__solo) + SOLO_JPEG_EXT_SIZE(__solo))
drivers/media/platform/qcom/venus/pm_helpers.c +1 -1
index 055513a7301f..656c17986c1c 100644
@@ -870,7 +870,7 @@ static int vcodec_domains_get(struct venus_core *core)
 		pd = dev_pm_domain_attach_by_name(dev,
 						  res->vcodec_pmdomains[i]);
 		if (IS_ERR_OR_NULL(pd))
-			return PTR_ERR(pd) ? : -ENODATA;
+			return pd ? PTR_ERR(pd) : -ENODATA;
 		core->pmdomains[i] = pd;
 	}
 
drivers/media/radio/radio-isa.c +1 -1
index c591c0851fa2..ad49151f5ff0 100644
@@ -36,7 +36,7 @@ static int radio_isa_querycap(struct file *file, void  *priv,
 
 	strscpy(v->driver, isa->drv->driver.driver.name, sizeof(v->driver));
 	strscpy(v->card, isa->drv->card, sizeof(v->card));
-	snprintf(v->bus_info, sizeof(v->bus_info), "ISA:%s", isa->v4l2_dev.name);
+	snprintf(v->bus_info, sizeof(v->bus_info), "ISA:%s", dev_name(isa->v4l2_dev.dev));
 	return 0;
 }
 
drivers/memory/stm32-fmc2-ebi.c +88 -34

242 lines not on this page · raw message

drivers/memory/tegra/tegra186.c +3 -0
index 4bed0e54fd45..2ff586c6b102 100644
@@ -43,6 +43,9 @@ static void tegra186_mc_client_sid_override(struct tegra_mc *mc,
 {
 	u32 value, old;
 
+	if (client->regs.sid.security == 0 && client->regs.sid.override == 0)
+		return;
+
 	value = readl(mc->regs + client->regs.sid.security);
 	if ((value & MC_SID_STREAMID_SECURITY_OVERRIDE) == 0) {
 		/*
drivers/mmc/core/mmc_test.c +5 -4
index 4052f828f75e..e03d4405cda3 100644
@@ -3111,13 +3111,13 @@ static ssize_t mtf_test_write(struct file *file, const char __user *buf,
 	test->buffer = kzalloc(BUFFER_SIZE, GFP_KERNEL);
 #ifdef CONFIG_HIGHMEM
 	test->highmem = alloc_pages(GFP_KERNEL | __GFP_HIGHMEM, BUFFER_ORDER);
+	if (!test->highmem) {
+		count = -ENOMEM;
+		goto free_test_buffer;
+	}
 #endif
 
-#ifdef CONFIG_HIGHMEM
-	if (test->buffer && test->highmem) {
-#else
 	if (test->buffer) {
-#endif
 		mutex_lock(&mmc_test_lock);
 		mmc_test_run(test, testcase);
 		mutex_unlock(&mmc_test_lock);
@@ -3125,6 +3125,7 @@ static ssize_t mtf_test_write(struct file *file, const char __user *buf,
 
 #ifdef CONFIG_HIGHMEM
 	__free_pages(test->highmem, BUFFER_ORDER);
+free_test_buffer:
 #endif
 	kfree(test->buffer);
 	kfree(test);
drivers/mmc/host/dw_mmc.c +8 -0
index 1e8f1bb3cad7..32927e66b60c 100644
@@ -3246,6 +3246,10 @@ int dw_mci_probe(struct dw_mci *host)
 	host->biu_clk = devm_clk_get(host->dev, "biu");
 	if (IS_ERR(host->biu_clk)) {
 		dev_dbg(host->dev, "biu clock not available\n");
+		ret = PTR_ERR(host->biu_clk);
+		if (ret == -EPROBE_DEFER)
+			return ret;
+
 	} else {
 		ret = clk_prepare_enable(host->biu_clk);
 		if (ret) {
@@ -3257,6 +3261,10 @@ int dw_mci_probe(struct dw_mci *host)
 	host->ciu_clk = devm_clk_get(host->dev, "ciu");
 	if (IS_ERR(host->ciu_clk)) {
 		dev_dbg(host->dev, "ciu clock not available\n");
+		ret = PTR_ERR(host->ciu_clk);
+		if (ret == -EPROBE_DEFER)
+			goto err_clk_biu;
+
 		host->bus_hz = host->pdata->bus_hz;
 	} else {
 		ret = clk_prepare_enable(host->ciu_clk);
drivers/net/bonding/bond_main.c +8 -13
index 6a91229b0e05..fd0667e1d10a 100644
@@ -575,7 +575,6 @@ static void bond_ipsec_del_sa_all(struct bonding *bond)
 		} else {
 			slave->dev->xfrmdev_ops->xdo_dev_state_delete(ipsec->xs);
 		}
-		ipsec->xs->xso.real_dev = NULL;
 	}
 	spin_unlock_bh(&bond->ipsec_lock);
 	rcu_read_unlock();
@@ -592,34 +591,30 @@ static bool bond_ipsec_offload_ok(struct sk_buff *skb, struct xfrm_state *xs)
 	struct net_device *real_dev;
 	struct slave *curr_active;
 	struct bonding *bond;
-	int err;
+	bool ok = false;
 
 	bond = netdev_priv(bond_dev);
 	rcu_read_lock();
 	curr_active = rcu_dereference(bond->curr_active_slave);
+	if (!curr_active)
+		goto out;
 	real_dev = curr_active->dev;
 
-	if (BOND_MODE(bond) != BOND_MODE_ACTIVEBACKUP) {
-		err = false;
+	if (BOND_MODE(bond) != BOND_MODE_ACTIVEBACKUP)
 		goto out;
-	}
 
-	if (!xs->xso.real_dev) {
-		err = false;
+	if (!xs->xso.real_dev)
 		goto out;
-	}
 
 	if (!real_dev->xfrmdev_ops ||
 	    !real_dev->xfrmdev_ops->xdo_dev_offload_ok ||
-	    netif_is_bond_master(real_dev)) {
-		err = false;
+	    netif_is_bond_master(real_dev))
 		goto out;
-	}
 
-	err = real_dev->xfrmdev_ops->xdo_dev_offload_ok(skb, xs);
+	ok = real_dev->xfrmdev_ops->xdo_dev_offload_ok(skb, xs);
 out:
 	rcu_read_unlock();
-	return err;
+	return ok;
 }
 
 static const struct xfrmdev_ops bond_xfrmdev_ops = {
drivers/net/bonding/bond_options.c +1 -1
index 1f8f7537e8eb..5da4599377e1 100644
@@ -893,7 +893,7 @@ static int bond_option_active_slave_set(struct bonding *bond,
 	/* check to see if we are clearing active */
 	if (!slave_dev) {
 		netdev_dbg(bond->dev, "Clearing current active slave\n");
-		RCU_INIT_POINTER(bond->curr_active_slave, NULL);
+		bond_change_active_slave(bond, NULL);
 		bond_select_active_slave(bond);
 	} else {
 		struct slave *old_active = rtnl_dereference(bond->curr_active_slave);
drivers/net/dsa/mv88e6xxx/Makefile +4 -0
index c8eca2b6f959..49bf358b9c4f 100644
@@ -15,3 +15,7 @@ mv88e6xxx-objs += port_hidden.o
 mv88e6xxx-$(CONFIG_NET_DSA_MV88E6XXX_PTP) += ptp.o
 mv88e6xxx-objs += serdes.o
 mv88e6xxx-objs += smi.o
+mv88e6xxx-objs += trace.o
+
+# for tracing framework to find trace.h
+CFLAGS_trace.o := -I$(src)
drivers/net/dsa/mv88e6xxx/global1_atu.c +67 -15

129 lines not on this page · raw message

drivers/net/dsa/mv88e6xxx/trace.c new file +6 -0
new file mode 100644
index 000000000000..7833cb50ca5d
@@ -0,0 +1,6 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+/* Copyright 2022 NXP
+ */
+
+#define CREATE_TRACE_POINTS
+#include "trace.h"
drivers/net/dsa/mv88e6xxx/trace.h new file +66 -0

66 lines not on this page · raw message

drivers/net/dsa/vitesse-vsc73xx-core.c +53 -16

134 lines not on this page · raw message

drivers/net/ethernet/chelsio/cxgb4/cxgb4_filter.c +2 -1
index 786ceae34488..dd9e68465e69 100644
@@ -1244,7 +1244,8 @@ static u64 hash_filter_ntuple(struct ch_filter_specification *fs,
 	 * in the Compressed Filter Tuple.
 	 */
 	if (tp->vlan_shift >= 0 && fs->mask.ivlan)
-		ntuple |= (FT_VLAN_VLD_F | fs->val.ivlan) << tp->vlan_shift;
+		ntuple |= (u64)(FT_VLAN_VLD_F |
+				fs->val.ivlan) << tp->vlan_shift;
 
 	if (tp->port_shift >= 0 && fs->mask.iport)
 		ntuple |= (u64)fs->val.iport << tp->port_shift;
drivers/net/ethernet/freescale/dpaa2/dpaa2-switch.c +4 -3
index 175f15c46842..2b6a6a997d75 100644
@@ -2585,13 +2585,14 @@ static int dpaa2_switch_refill_bp(struct ethsw_core *ethsw)
 
 static int dpaa2_switch_seed_bp(struct ethsw_core *ethsw)
 {
-	int *count, i;
+	int *count, ret, i;
 
 	for (i = 0; i < DPAA2_ETHSW_NUM_BUFS; i += BUFS_PER_CMD) {
+		ret = dpaa2_switch_add_bufs(ethsw, ethsw->bpid);
 		count = &ethsw->buf_count;
-		*count += dpaa2_switch_add_bufs(ethsw, ethsw->bpid);
+		*count += ret;
 
-		if (unlikely(*count < BUFS_PER_CMD))
+		if (unlikely(ret < BUFS_PER_CMD))
 			return -ENOMEM;
 	}
 
drivers/net/ethernet/hisilicon/hns3/hns3_enet.c +3 -0
index e48d33927c17..d6bdcd9f285b 100644
@@ -5504,6 +5504,9 @@ static int hns3_reset_notify_uninit_enet(struct hnae3_handle *handle)
 	struct net_device *netdev = handle->kinfo.netdev;
 	struct hns3_nic_priv *priv = netdev_priv(netdev);
 
+	if (!test_bit(HNS3_NIC_STATE_DOWN, &priv->state))
+		hns3_nic_net_stop(netdev);
+
 	if (!test_and_clear_bit(HNS3_NIC_STATE_INITED, &priv->state)) {
 		netdev_warn(netdev, "already uninitialized\n");
 		return 0;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c +2 -2
index c3690e49c3d9..eb902e80a815 100644
@@ -11636,8 +11636,8 @@ static void hclge_reset_done(struct hnae3_ae_dev *ae_dev)
 		dev_err(&hdev->pdev->dev, "fail to rebuild, ret=%d\n", ret);
 
 	hdev->reset_type = HNAE3_NONE_RESET;
-	clear_bit(HCLGE_STATE_RST_HANDLING, &hdev->state);
-	up(&hdev->reset_sem);
+	if (test_and_clear_bit(HCLGE_STATE_RST_HANDLING, &hdev->state))
+		up(&hdev->reset_sem);
 }
 
 static void hclge_clear_resetting_state(struct hclge_dev *hdev)
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_mbx.c +4 -3
index 77c432ab7856..e2fe41d3972f 100644
@@ -1066,10 +1066,11 @@ void hclge_mbx_handler(struct hclge_dev *hdev)
 		req = (struct hclge_mbx_vf_to_pf_cmd *)desc->data;
 
 		flag = le16_to_cpu(crq->desc[crq->next_to_use].flag);
-		if (unlikely(!hnae3_get_bit(flag, HCLGE_CMDQ_RX_OUTVLD_B))) {
+		if (unlikely(!hnae3_get_bit(flag, HCLGE_CMDQ_RX_OUTVLD_B) ||
+			     req->mbx_src_vfid > hdev->num_req_vfs)) {
 			dev_warn(&hdev->pdev->dev,
-				 "dropped invalid mailbox message, code = %u\n",
-				 req->msg.code);
+				 "dropped invalid mailbox message, code = %u, vfid = %u\n",
+				 req->msg.code, req->mbx_src_vfid);
 
 			/* dropping/not processing this invalid message */
 			crq->desc[crq->next_to_use].flag = 0;
drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c +2 -2
index a41e04796b0b..5b861a2a3e73 100644
@@ -2217,8 +2217,8 @@ static void hclgevf_reset_done(struct hnae3_ae_dev *ae_dev)
 			 ret);
 
 	hdev->reset_type = HNAE3_NONE_RESET;
-	clear_bit(HCLGEVF_STATE_RST_HANDLING, &hdev->state);
-	up(&hdev->reset_sem);
+	if (test_and_clear_bit(HCLGEVF_STATE_RST_HANDLING, &hdev->state))
+		up(&hdev->reset_sem);
 }
 
 static u32 hclgevf_get_fw_version(struct hnae3_handle *handle)
drivers/net/ethernet/i825xx/sun3_82586.c +1 -1
index 18d32302c3c7..6c89aa7eaa22 100644
@@ -987,7 +987,7 @@ static void sun3_82586_timeout(struct net_device *dev, unsigned int txqueue)
 	{
 #ifdef DEBUG
 		printk("%s: xmitter timed out, try to restart! stat: %02x\n",dev->name,p->scb->cus);
-		printk("%s: command-stats: %04x %04x\n",dev->name,swab16(p->xmit_cmds[0]->cmd_status),swab16(p->xmit_cmds[1]->cmd_status));
+		printk("%s: command-stats: %04x\n", dev->name, swab16(p->xmit_cmds[0]->cmd_status));
 		printk("%s: check, whether you set the right interrupt number!\n",dev->name);
 #endif
 		sun3_82586_close(dev);
drivers/net/ethernet/intel/ice/ice_txrx.c +1 -1
index 6ee8e0032d52..b09d89cdb001 100644
@@ -765,7 +765,7 @@ ice_can_reuse_rx_page(struct ice_rx_buf *rx_buf, int rx_buf_pgcnt)
 		return false;
 #else
 #define ICE_LAST_OFFSET \
-	(SKB_WITH_OVERHEAD(PAGE_SIZE) - ICE_RXBUF_2048)
+	(SKB_WITH_OVERHEAD(PAGE_SIZE) - ICE_RXBUF_3072)
 	if (rx_buf->page_offset > ICE_LAST_OFFSET)
 		return false;
 #endif /* PAGE_SIZE < 8192) */
drivers/net/ethernet/intel/igc/igc_base.c +29 -0
index 84f142f5e472..be095c6531b6 100644
@@ -402,6 +402,35 @@ void igc_rx_fifo_flush_base(struct igc_hw *hw)
 	rd32(IGC_MPC);
 }
 
+bool igc_is_device_id_i225(struct igc_hw *hw)
+{
+	switch (hw->device_id) {
+	case IGC_DEV_ID_I225_LM:
+	case IGC_DEV_ID_I225_V:
+	case IGC_DEV_ID_I225_I:
+	case IGC_DEV_ID_I225_K:
+	case IGC_DEV_ID_I225_K2:
+	case IGC_DEV_ID_I225_LMVP:
+	case IGC_DEV_ID_I225_IT:
+		return true;
+	default:
+		return false;
+	}
+}
+
+bool igc_is_device_id_i226(struct igc_hw *hw)
+{
+	switch (hw->device_id) {
+	case IGC_DEV_ID_I226_LM:
+	case IGC_DEV_ID_I226_V:
+	case IGC_DEV_ID_I226_K:
+	case IGC_DEV_ID_I226_IT:
+		return true;
+	default:
+		return false;
+	}
+}
+
 static struct igc_mac_operations igc_mac_ops_base = {
 	.init_hw		= igc_init_hw_base,
 	.check_for_link		= igc_check_for_copper_link,
drivers/net/ethernet/intel/igc/igc_base.h +2 -0
index 52849f5e8048..9f3827eda157 100644
@@ -7,6 +7,8 @@
 /* forward declaration */
 void igc_rx_fifo_flush_base(struct igc_hw *hw);
 void igc_power_down_phy_copper_base(struct igc_hw *hw);
+bool igc_is_device_id_i225(struct igc_hw *hw);
+bool igc_is_device_id_i226(struct igc_hw *hw);
 
 /* Transmit Descriptor - Advanced */
 union igc_adv_tx_desc {
drivers/net/ethernet/intel/igc/igc_defines.h +16 -0
index 703b62c5f79b..d5acee27894e 100644
@@ -405,6 +405,21 @@
 #define IGC_DTXMXPKTSZ_TSN	0x19 /* 1600 bytes of max TX DMA packet size */
 #define IGC_DTXMXPKTSZ_DEFAULT	0x98 /* 9728-byte Jumbo frames */
 
+/* Retry Buffer Control */
+#define IGC_RETX_CTL			0x041C
+#define IGC_RETX_CTL_WATERMARK_MASK	0xF
+#define IGC_RETX_CTL_QBVFULLTH_SHIFT	8 /* QBV Retry Buffer Full Threshold */
+#define IGC_RETX_CTL_QBVFULLEN	0x1000 /* Enable QBV Retry Buffer Full Threshold */
+
+/* Transmit Scheduling Latency */
+/* Latency between transmission scheduling (LaunchTime) and the time
+ * the packet is transmitted to the network in nanosecond.
+ */
+#define IGC_TXOFFSET_SPEED_10	0x000034BC
+#define IGC_TXOFFSET_SPEED_100	0x00000578
+#define IGC_TXOFFSET_SPEED_1000	0x0000012C
+#define IGC_TXOFFSET_SPEED_2500	0x00000578
+
 /* Time Sync Interrupt Causes */
 #define IGC_TSICR_SYS_WRAP	BIT(0) /* SYSTIM Wrap around. */
 #define IGC_TSICR_TXTS		BIT(1) /* Transmit Timestamp. */
@@ -518,6 +533,7 @@
 /* Transmit Scheduling */
 #define IGC_TQAVCTRL_TRANSMIT_MODE_TSN	0x00000001
 #define IGC_TQAVCTRL_ENHANCED_QAV	0x00000008
+#define IGC_TQAVCTRL_FUTSCDDIS		0x00000080
 
 #define IGC_TXQCTL_QUEUE_MODE_LAUNCHT	0x00000001
 #define IGC_TXQCTL_STRICT_CYCLE		0x00000002
drivers/net/ethernet/intel/igc/igc_main.c +11 -1
index 6185566fbb98..7605115e6a1b 100644
@@ -5532,6 +5532,13 @@ static void igc_watchdog_task(struct work_struct *work)
 				break;
 			}
 
+			/* Once the launch time has been set on the wire, there
+			 * is a delay before the link speed can be determined
+			 * based on link-up activity. Write into the register
+			 * as soon as we know the correct link speed.
+			 */
+			igc_tsn_adjust_txtime_offset(adapter);
+
 			if (adapter->link_speed != SPEED_1000)
 				goto no_wait;
 
@@ -5984,6 +5991,7 @@ static bool validate_schedule(struct igc_adapter *adapter,
 			      const struct tc_taprio_qopt_offload *qopt)
 {
 	int queue_uses[IGC_MAX_TX_QUEUES] = { };
+	struct igc_hw *hw = &adapter->hw;
 	struct timespec64 now;
 	size_t n;
 
@@ -5996,8 +6004,10 @@ static bool validate_schedule(struct igc_adapter *adapter,
 	 * in the future, it will hold all the packets until that
 	 * time, causing a lot of TX Hangs, so to avoid that, we
 	 * reject schedules that would start in the future.
+	 * Note: Limitation above is no longer in i226.
 	 */
-	if (!is_base_time_past(qopt->base_time, &now))
+	if (!is_base_time_past(qopt->base_time, &now) &&
+	    igc_is_device_id_i225(hw))
 		return false;
 
 	for (n = 0; n < qopt->num_entries; n++) {
drivers/net/ethernet/intel/igc/igc_regs.h +1 -0
index 026c3b65fc37..0e9c1298f36f 100644
@@ -227,6 +227,7 @@
 /* Transmit Scheduling Registers */
 #define IGC_TQAVCTRL		0x3570
 #define IGC_TXQCTL(_n)		(0x3344 + 0x4 * (_n))
+#define IGC_GTXOFFSET		0x3310
 #define IGC_BASET_L		0x3314
 #define IGC_BASET_H		0x3318
 #define IGC_QBVCYCLET		0x331C
drivers/net/ethernet/intel/igc/igc_tsn.c +99 -14

169 lines not on this page · raw message

drivers/net/ethernet/intel/igc/igc_tsn.h +1 -0
index 1512307f5a52..b53e6af560b7 100644
@@ -6,5 +6,6 @@
 
 int igc_tsn_offload_apply(struct igc_adapter *adapter);
 int igc_tsn_reset(struct igc_adapter *adapter);
+void igc_tsn_adjust_txtime_offset(struct igc_adapter *adapter);
 
 #endif /* _IGC_BASE_H */
drivers/net/ethernet/mellanox/mlx5/core/en_fs_ethtool.c +1 -1
index d32b70c62c94..32212bc41df3 100644
@@ -727,7 +727,7 @@ mlx5e_ethtool_flow_replace(struct mlx5e_priv *priv,
 	if (num_tuples <= 0) {
 		netdev_warn(priv->netdev, "%s: flow is not valid %d\n",
 			    __func__, num_tuples);
-		return num_tuples;
+		return num_tuples < 0 ? num_tuples : -EINVAL;
 	}
 
 	eth_ft = get_flow_table(priv, fs, num_tuples);
drivers/net/ethernet/mellanox/mlxbf_gige/mlxbf_gige.h +7 -2
index 0fdf2c8ca480..0e4ece5ab797 100644
@@ -39,6 +39,7 @@
  */
 #define MLXBF_GIGE_BCAST_MAC_FILTER_IDX 0
 #define MLXBF_GIGE_LOCAL_MAC_FILTER_IDX 1
+#define MLXBF_GIGE_MAX_FILTER_IDX       3
 
 /* Define for broadcast MAC literal */
 #define BCAST_MAC_ADDR 0xFFFFFFFFFFFF
@@ -151,9 +152,13 @@ enum mlxbf_gige_res {
 int mlxbf_gige_mdio_probe(struct platform_device *pdev,
 			  struct mlxbf_gige *priv);
 void mlxbf_gige_mdio_remove(struct mlxbf_gige *priv);
-irqreturn_t mlxbf_gige_mdio_handle_phy_interrupt(int irq, void *dev_id);
-void mlxbf_gige_mdio_enable_phy_int(struct mlxbf_gige *priv);
 
+void mlxbf_gige_enable_multicast_rx(struct mlxbf_gige *priv);
+void mlxbf_gige_disable_multicast_rx(struct mlxbf_gige *priv);
+void mlxbf_gige_enable_mac_rx_filter(struct mlxbf_gige *priv,
+				     unsigned int index);
+void mlxbf_gige_disable_mac_rx_filter(struct mlxbf_gige *priv,
+				      unsigned int index);
 void mlxbf_gige_set_mac_rx_filter(struct mlxbf_gige *priv,
 				  unsigned int index, u64 dmac);
 void mlxbf_gige_get_mac_rx_filter(struct mlxbf_gige *priv,
drivers/net/ethernet/mellanox/mlxbf_gige/mlxbf_gige_main.c +10 -0
index c644ee78e0b4..60cea337fe8e 100644
@@ -170,6 +170,10 @@ static int mlxbf_gige_open(struct net_device *netdev)
 	if (err)
 		goto napi_deinit;
 
+	mlxbf_gige_enable_mac_rx_filter(priv, MLXBF_GIGE_BCAST_MAC_FILTER_IDX);
+	mlxbf_gige_enable_mac_rx_filter(priv, MLXBF_GIGE_LOCAL_MAC_FILTER_IDX);
+	mlxbf_gige_enable_multicast_rx(priv);
+
 	/* Set bits in INT_EN that we care about */
 	int_en = MLXBF_GIGE_INT_EN_HW_ACCESS_ERROR |
 		 MLXBF_GIGE_INT_EN_TX_CHECKSUM_INPUTS |
@@ -295,6 +299,7 @@ static int mlxbf_gige_probe(struct platform_device *pdev)
 	void __iomem *plu_base;
 	void __iomem *base;
 	int addr, phy_irq;
+	unsigned int i;
 	int err;
 
 	base = devm_platform_ioremap_resource(pdev, MLXBF_GIGE_RES_MAC);
@@ -337,6 +342,11 @@ static int mlxbf_gige_probe(struct platform_device *pdev)
 	priv->rx_q_entries = MLXBF_GIGE_DEFAULT_RXQ_SZ;
 	priv->tx_q_entries = MLXBF_GIGE_DEFAULT_TXQ_SZ;
 
+	for (i = 0; i <= MLXBF_GIGE_MAX_FILTER_IDX; i++)
+		mlxbf_gige_disable_mac_rx_filter(priv, i);
+	mlxbf_gige_disable_multicast_rx(priv);
+	mlxbf_gige_disable_promisc(priv);
+
 	/* Write initial MAC address to hardware */
 	mlxbf_gige_initial_mac(priv);
 
drivers/net/ethernet/mellanox/mlxbf_gige/mlxbf_gige_regs.h +2 -0
index 7be3a793984d..d27535a1fb86 100644
@@ -59,6 +59,8 @@
 #define MLXBF_GIGE_TX_STATUS_DATA_FIFO_FULL           BIT(1)
 #define MLXBF_GIGE_RX_MAC_FILTER_DMAC_RANGE_START     0x0520
 #define MLXBF_GIGE_RX_MAC_FILTER_DMAC_RANGE_END       0x0528
+#define MLXBF_GIGE_RX_MAC_FILTER_GENERAL              0x0530
+#define MLXBF_GIGE_RX_MAC_FILTER_EN_MULTICAST         BIT(1)
 #define MLXBF_GIGE_RX_MAC_FILTER_COUNT_DISC           0x0540
 #define MLXBF_GIGE_RX_MAC_FILTER_COUNT_DISC_EN        BIT(0)
 #define MLXBF_GIGE_RX_MAC_FILTER_COUNT_PASS           0x0548
drivers/net/ethernet/mellanox/mlxbf_gige/mlxbf_gige_rx.c +44 -6

65 lines not on this page · raw message

drivers/net/ethernet/microsoft/mana/hw_channel.c +34 -28

93 lines not on this page · raw message

drivers/net/ethernet/microsoft/mana/mana.h +1 -0
index fc98a5ba5ed0..35e937a7079c 100644
@@ -252,6 +252,7 @@ struct mana_cq {
 	/* NAPI data */
 	struct napi_struct napi;
 	int work_done;
+	int work_done_since_doorbell;
 	int budget;
 };
 
drivers/net/ethernet/microsoft/mana/mana_en.c +15 -9
index 6224b7c21e0a..b0963fda4d9f 100644
@@ -1074,7 +1074,6 @@ static void mana_poll_rx_cq(struct mana_cq *cq)
 static int mana_cq_handler(void *context, struct gdma_queue *gdma_queue)
 {
 	struct mana_cq *cq = context;
-	u8 arm_bit;
 	int w;
 
 	WARN_ON_ONCE(cq->gdma_cq != gdma_queue);
@@ -1085,16 +1084,23 @@ static int mana_cq_handler(void *context, struct gdma_queue *gdma_queue)
 		mana_poll_tx_cq(cq);
 
 	w = cq->work_done;
-
-	if (w < cq->budget &&
-	    napi_complete_done(&cq->napi, w)) {
-		arm_bit = SET_ARM_BIT;
-	} else {
-		arm_bit = 0;
+	cq->work_done_since_doorbell += w;
+
+	if (w < cq->budget) {
+		mana_gd_ring_cq(gdma_queue, SET_ARM_BIT);
+		cq->work_done_since_doorbell = 0;
+		napi_complete_done(&cq->napi, w);
+	} else if (cq->work_done_since_doorbell >
+		   cq->gdma_cq->queue_size / COMP_ENTRY_SIZE * 4) {
+		/* MANA hardware requires at least one doorbell ring every 8
+		 * wraparounds of CQ even if there is no need to arm the CQ.
+		 * This driver rings the doorbell as soon as we have exceeded
+		 * 4 wraparounds.
+		 */
+		mana_gd_ring_cq(gdma_queue, 0);
+		cq->work_done_since_doorbell = 0;
 	}
 
-	mana_gd_ring_cq(gdma_queue, arm_bit);
-
 	return w;
 }
 
drivers/net/ethernet/xilinx/xilinx_axienet.h +9 -8
index 5b4d153b1492..bdda83611509 100644
@@ -159,16 +159,17 @@
 #define XAE_RCW1_OFFSET		0x00000404 /* Rx Configuration Word 1 */
 #define XAE_TC_OFFSET		0x00000408 /* Tx Configuration */
 #define XAE_FCC_OFFSET		0x0000040C /* Flow Control Configuration */
-#define XAE_EMMC_OFFSET		0x00000410 /* EMAC mode configuration */
-#define XAE_PHYC_OFFSET		0x00000414 /* RGMII/SGMII configuration */
+#define XAE_EMMC_OFFSET		0x00000410 /* MAC speed configuration */
+#define XAE_PHYC_OFFSET		0x00000414 /* RX Max Frame Configuration */
 #define XAE_ID_OFFSET		0x000004F8 /* Identification register */
-#define XAE_MDIO_MC_OFFSET	0x00000500 /* MII Management Config */
-#define XAE_MDIO_MCR_OFFSET	0x00000504 /* MII Management Control */
-#define XAE_MDIO_MWD_OFFSET	0x00000508 /* MII Management Write Data */
-#define XAE_MDIO_MRD_OFFSET	0x0000050C /* MII Management Read Data */
+#define XAE_MDIO_MC_OFFSET	0x00000500 /* MDIO Setup */
+#define XAE_MDIO_MCR_OFFSET	0x00000504 /* MDIO Control */
+#define XAE_MDIO_MWD_OFFSET	0x00000508 /* MDIO Write Data */
+#define XAE_MDIO_MRD_OFFSET	0x0000050C /* MDIO Read Data */
 #define XAE_UAW0_OFFSET		0x00000700 /* Unicast address word 0 */
 #define XAE_UAW1_OFFSET		0x00000704 /* Unicast address word 1 */
-#define XAE_FMI_OFFSET		0x00000708 /* Filter Mask Index */
+#define XAE_FMI_OFFSET		0x00000708 /* Frame Filter Control */
+#define XAE_FFE_OFFSET		0x0000070C /* Frame Filter Enable */
 #define XAE_AF0_OFFSET		0x00000710 /* Address Filter 0 */
 #define XAE_AF1_OFFSET		0x00000714 /* Address Filter 1 */
 
@@ -307,7 +308,7 @@
  */
 #define XAE_UAW1_UNICASTADDR_MASK	0x0000FFFF
 
-/* Bit masks for Axi Ethernet FMI register */
+/* Bit masks for Axi Ethernet FMC register */
 #define XAE_FMI_PM_MASK			0x80000000 /* Promis. mode enable */
 #define XAE_FMI_IND_MASK		0x00000003 /* Index Mask */
 
drivers/net/ethernet/xilinx/xilinx_axienet_main.c +13 -12
index 63f33126d02f..0ca350faa484 100644
@@ -409,7 +409,7 @@ static int netdev_set_mac_address(struct net_device *ndev, void *p)
  */
 static void axienet_set_multicast_list(struct net_device *ndev)
 {
-	int i;
+	int i = 0;
 	u32 reg, af0reg, af1reg;
 	struct axienet_local *lp = netdev_priv(ndev);
 
@@ -427,7 +427,10 @@ static void axienet_set_multicast_list(struct net_device *ndev)
 	} else if (!netdev_mc_empty(ndev)) {
 		struct netdev_hw_addr *ha;
 
-		i = 0;
+		reg = axienet_ior(lp, XAE_FMI_OFFSET);
+		reg &= ~XAE_FMI_PM_MASK;
+		axienet_iow(lp, XAE_FMI_OFFSET, reg);
+
 		netdev_for_each_mc_addr(ha, ndev) {
 			if (i >= XAE_MULTICAST_CAM_TABLE_NUM)
 				break;
@@ -446,6 +449,7 @@ static void axienet_set_multicast_list(struct net_device *ndev)
 			axienet_iow(lp, XAE_FMI_OFFSET, reg);
 			axienet_iow(lp, XAE_AF0_OFFSET, af0reg);
 			axienet_iow(lp, XAE_AF1_OFFSET, af1reg);
+			axienet_iow(lp, XAE_FFE_OFFSET, 1);
 			i++;
 		}
 	} else {
@@ -453,18 +457,15 @@ static void axienet_set_multicast_list(struct net_device *ndev)
 		reg &= ~XAE_FMI_PM_MASK;
 
 		axienet_iow(lp, XAE_FMI_OFFSET, reg);
-
-		for (i = 0; i < XAE_MULTICAST_CAM_TABLE_NUM; i++) {
-			reg = axienet_ior(lp, XAE_FMI_OFFSET) & 0xFFFFFF00;
-			reg |= i;
-
-			axienet_iow(lp, XAE_FMI_OFFSET, reg);
-			axienet_iow(lp, XAE_AF0_OFFSET, 0);
-			axienet_iow(lp, XAE_AF1_OFFSET, 0);
-		}
-
 		dev_info(&ndev->dev, "Promiscuous mode disabled.\n");
 	}
+
+	for (; i < XAE_MULTICAST_CAM_TABLE_NUM; i++) {
+		reg = axienet_ior(lp, XAE_FMI_OFFSET) & 0xFFFFFF00;
+		reg |= i;
+		axienet_iow(lp, XAE_FMI_OFFSET, reg);
+		axienet_iow(lp, XAE_FFE_OFFSET, 0);
+	}
 }
 
 /**
drivers/net/gtp.c +4 -1
index 3271428e64b8..40c94df382e5 100644
@@ -572,6 +572,9 @@ static netdev_tx_t gtp_dev_xmit(struct sk_buff *skb, struct net_device *dev)
 	if (skb_cow_head(skb, dev->needed_headroom))
 		goto tx_err;
 
+	if (!pskb_inet_may_pull(skb))
+		goto tx_err;
+
 	skb_reset_inner_headers(skb);
 
 	/* PDP context lookups in gtp_build_skb_*() need rcu read-side lock. */
@@ -814,7 +817,7 @@ static struct sock *gtp_encap_enable_socket(int fd, int type,
 	sock = sockfd_lookup(fd, &err);
 	if (!sock) {
 		pr_debug("gtp socket fd=%d not found\n", fd);
-		return NULL;
+		return ERR_PTR(err);
 	}
 
 	sk = sock->sk;
drivers/net/wireless/intel/iwlwifi/fw/debugfs.c +5 -1
index e372f935f698..6419fbfec5ac 100644
@@ -163,7 +163,11 @@ static int iwl_dbgfs_enabled_severities_write(struct iwl_fw_runtime *fwrt,
 
 	event_cfg.enabled_severities = cpu_to_le32(enabled_severities);
 
-	ret = iwl_trans_send_cmd(fwrt->trans, &hcmd);
+	if (fwrt->ops && fwrt->ops->send_hcmd)
+		ret = fwrt->ops->send_hcmd(fwrt->ops_ctx, &hcmd);
+	else
+		ret = -EPERM;
+
 	IWL_INFO(fwrt,
 		 "sent host event cfg with enabled_severities: %u, ret: %d\n",
 		 enabled_severities, ret);
drivers/net/wireless/intel/iwlwifi/mvm/scan.c +1 -1
index 8179a7395bca..4bab14ceef5f 100644
@@ -3068,7 +3068,7 @@ int iwl_mvm_scan_stop(struct iwl_mvm *mvm, int type, bool notify)
 	if (!(mvm->scan_status & type))
 		return 0;
 
-	if (iwl_mvm_is_radio_killed(mvm)) {
+	if (!test_bit(STATUS_DEVICE_ENABLED, &mvm->trans->status)) {
 		ret = 0;
 		goto out;
 	}
drivers/net/wireless/marvell/mwifiex/cfg80211.c +26 -6
index 4257b4ca7d6e..0273d3e5e0b5 100644
@@ -4328,11 +4328,27 @@ int mwifiex_register_cfg80211(struct mwifiex_adapter *adapter)
 	if (ISSUPP_ADHOC_ENABLED(adapter->fw_cap_info))
 		wiphy->interface_modes |= BIT(NL80211_IFTYPE_ADHOC);
 
-	wiphy->bands[NL80211_BAND_2GHZ] = &mwifiex_band_2ghz;
-	if (adapter->config_bands & BAND_A)
-		wiphy->bands[NL80211_BAND_5GHZ] = &mwifiex_band_5ghz;
-	else
+	wiphy->bands[NL80211_BAND_2GHZ] = devm_kmemdup(adapter->dev,
+						       &mwifiex_band_2ghz,
+						       sizeof(mwifiex_band_2ghz),
+						       GFP_KERNEL);
+	if (!wiphy->bands[NL80211_BAND_2GHZ]) {
+		ret = -ENOMEM;
+		goto err;
+	}
+
+	if (adapter->config_bands & BAND_A) {
+		wiphy->bands[NL80211_BAND_5GHZ] = devm_kmemdup(adapter->dev,
+							       &mwifiex_band_5ghz,
+							       sizeof(mwifiex_band_5ghz),
+							       GFP_KERNEL);
+		if (!wiphy->bands[NL80211_BAND_5GHZ]) {
+			ret = -ENOMEM;
+			goto err;
+		}
+	} else {
 		wiphy->bands[NL80211_BAND_5GHZ] = NULL;
+	}
 
 	if (adapter->drcs_enabled && ISSUPP_DRCS_ENABLED(adapter->fw_cap_info))
 		wiphy->iface_combinations = &mwifiex_iface_comb_ap_sta_drcs;
@@ -4425,8 +4441,7 @@ int mwifiex_register_cfg80211(struct mwifiex_adapter *adapter)
 	if (ret < 0) {
 		mwifiex_dbg(adapter, ERROR,
 			    "%s: wiphy_register failed: %d\n", __func__, ret);
-		wiphy_free(wiphy);
-		return ret;
+		goto err;
 	}
 
 	if (!adapter->regd) {
@@ -4468,4 +4483,9 @@ int mwifiex_register_cfg80211(struct mwifiex_adapter *adapter)
 
 	adapter->wiphy = wiphy;
 	return ret;
+
+err:
+	wiphy_free(wiphy);
+
+	return ret;
 }
drivers/net/wireless/st/cw1200/txrx.c +1 -1
index 7de666b90ff5..9c998f4ac4a9 100644
@@ -1170,7 +1170,7 @@ void cw1200_rx_cb(struct cw1200_common *priv,
 		size_t ies_len = skb->len - (ies - (u8 *)(skb->data));
 
 		tim_ie = cfg80211_find_ie(WLAN_EID_TIM, ies, ies_len);
-		if (tim_ie) {
+		if (tim_ie && tim_ie[1] >= sizeof(struct ieee80211_tim_ie)) {
 			struct ieee80211_tim_ie *tim =
 				(struct ieee80211_tim_ie *)&tim_ie[2];
 
drivers/nfc/pn533/pn533.c +5 -0
index 939d27652a4c..fceae9c12760 100644
@@ -1725,6 +1725,11 @@ static int pn533_start_poll(struct nfc_dev *nfc_dev,
 	}
 
 	pn533_poll_create_mod_list(dev, im_protocols, tm_protocols);
+	if (!dev->poll_mod_count) {
+		nfc_err(dev->dev,
+			"Poll mod list is empty\n");
+		return -EINVAL;
+	}
 
 	/* Do not always start polling from the same modulation */
 	get_random_bytes(&rand_mod, sizeof(rand_mod));
drivers/nvme/target/rdma.c +4 -12
index 18e082091c82..9561ba3d4313 100644
@@ -472,12 +472,8 @@ nvmet_rdma_alloc_rsps(struct nvmet_rdma_queue *queue)
 	return 0;
 
 out_free:
-	while (--i >= 0) {
-		struct nvmet_rdma_rsp *rsp = &queue->rsps[i];
-
-		list_del(&rsp->free_list);
-		nvmet_rdma_free_rsp(ndev, rsp);
-	}
+	while (--i >= 0)
+		nvmet_rdma_free_rsp(ndev, &queue->rsps[i]);
 	kfree(queue->rsps);
 out:
 	return ret;
@@ -488,12 +484,8 @@ static void nvmet_rdma_free_rsps(struct nvmet_rdma_queue *queue)
 	struct nvmet_rdma_device *ndev = queue->dev;
 	int i, nr_rsps = queue->recv_queue_size * 2;
 
-	for (i = 0; i < nr_rsps; i++) {
-		struct nvmet_rdma_rsp *rsp = &queue->rsps[i];
-
-		list_del(&rsp->free_list);
-		nvmet_rdma_free_rsp(ndev, rsp);
-	}
+	for (i = 0; i < nr_rsps; i++)
+		nvmet_rdma_free_rsp(ndev, &queue->rsps[i]);
 	kfree(queue->rsps);
 }
 
drivers/nvme/target/tcp.c +1 -0
index 8468a41322f2..df044a79a734 100644
@@ -858,6 +858,7 @@ static int nvmet_tcp_handle_icreq(struct nvmet_tcp_queue *queue)
 		pr_err("bad nvme-tcp pdu length (%d)\n",
 			le32_to_cpu(icreq->hdr.plen));
 		nvmet_tcp_fatal_error(queue);
+		return -EPROTO;
 	}
 
 	if (icreq->pfv != NVME_TCP_PFV_1_0) {
drivers/nvme/target/trace.c +3 -3
index bff454d46255..6ee1f3db81d0 100644
@@ -211,7 +211,7 @@ const char *nvmet_trace_disk_name(struct trace_seq *p, char *name)
 	return ret;
 }
 
-const char *nvmet_trace_ctrl_name(struct trace_seq *p, struct nvmet_ctrl *ctrl)
+const char *nvmet_trace_ctrl_id(struct trace_seq *p, u16 ctrl_id)
 {
 	const char *ret = trace_seq_buffer_ptr(p);
 
@@ -224,8 +224,8 @@ const char *nvmet_trace_ctrl_name(struct trace_seq *p, struct nvmet_ctrl *ctrl)
 	 * If we can know the extra data of the connect command in this stage,
 	 * we can update this print statement later.
 	 */
-	if (ctrl)
-		trace_seq_printf(p, "%d", ctrl->cntlid);
+	if (ctrl_id)
+		trace_seq_printf(p, "%d", ctrl_id);
 	else
 		trace_seq_printf(p, "_");
 	trace_seq_putc(p, 0);
drivers/nvme/target/trace.h +17 -11
index 155334ddc13f..89020018a0e3 100644
@@ -32,18 +32,24 @@ const char *nvmet_trace_parse_fabrics_cmd(struct trace_seq *p, u8 fctype,
 	 nvmet_trace_parse_nvm_cmd(p, opcode, cdw10) :			\
 	 nvmet_trace_parse_admin_cmd(p, opcode, cdw10)))
 
-const char *nvmet_trace_ctrl_name(struct trace_seq *p, struct nvmet_ctrl *ctrl);
-#define __print_ctrl_name(ctrl)				\
-	nvmet_trace_ctrl_name(p, ctrl)
+const char *nvmet_trace_ctrl_id(struct trace_seq *p, u16 ctrl_id);
+#define __print_ctrl_id(ctrl_id)			\
+	nvmet_trace_ctrl_id(p, ctrl_id)
 
 const char *nvmet_trace_disk_name(struct trace_seq *p, char *name);
 #define __print_disk_name(name)				\
 	nvmet_trace_disk_name(p, name)
 
 #ifndef TRACE_HEADER_MULTI_READ
-static inline struct nvmet_ctrl *nvmet_req_to_ctrl(struct nvmet_req *req)
+static inline u16 nvmet_req_to_ctrl_id(struct nvmet_req *req)
 {
-	return req->sq->ctrl;
+	/*
+	 * The queue and controller pointers are not valid until an association
+	 * has been established.
+	 */
+	if (!req->sq || !req->sq->ctrl)
+		return 0;
+	return req->sq->ctrl->cntlid;
 }
 
 static inline void __assign_req_name(char *name, struct nvmet_req *req)
@@ -62,7 +68,7 @@ TRACE_EVENT(nvmet_req_init,
 	TP_ARGS(req, cmd),
 	TP_STRUCT__entry(
 		__field(struct nvme_command *, cmd)
-		__field(struct nvmet_ctrl *, ctrl)
+		__field(u16, ctrl_id)
 		__array(char, disk, DISK_NAME_LEN)
 		__field(int, qid)
 		__field(u16, cid)
@@ -75,7 +81,7 @@ TRACE_EVENT(nvmet_req_init,
 	),
 	TP_fast_assign(
 		__entry->cmd = cmd;
-		__entry->ctrl = nvmet_req_to_ctrl(req);
+		__entry->ctrl_id = nvmet_req_to_ctrl_id(req);
 		__assign_req_name(__entry->disk, req);
 		__entry->qid = req->sq->qid;
 		__entry->cid = cmd->common.command_id;
@@ -89,7 +95,7 @@ TRACE_EVENT(nvmet_req_init,
 	),
 	TP_printk("nvmet%s: %sqid=%d, cmdid=%u, nsid=%u, flags=%#x, "
 		  "meta=%#llx, cmd=(%s, %s)",
-		__print_ctrl_name(__entry->ctrl),
+		__print_ctrl_id(__entry->ctrl_id),
 		__print_disk_name(__entry->disk),
 		__entry->qid, __entry->cid, __entry->nsid,
 		__entry->flags, __entry->metadata,
@@ -103,7 +109,7 @@ TRACE_EVENT(nvmet_req_complete,
 	TP_PROTO(struct nvmet_req *req),
 	TP_ARGS(req),
 	TP_STRUCT__entry(
-		__field(struct nvmet_ctrl *, ctrl)
+		__field(u16, ctrl_id)
 		__array(char, disk, DISK_NAME_LEN)
 		__field(int, qid)
 		__field(int, cid)
@@ -111,7 +117,7 @@ TRACE_EVENT(nvmet_req_complete,
 		__field(u16, status)
 	),
 	TP_fast_assign(
-		__entry->ctrl = nvmet_req_to_ctrl(req);
+		__entry->ctrl_id = nvmet_req_to_ctrl_id(req);
 		__entry->qid = req->cq->qid;
 		__entry->cid = req->cqe->command_id;
 		__entry->result = le64_to_cpu(req->cqe->result.u64);
@@ -119,7 +125,7 @@ TRACE_EVENT(nvmet_req_complete,
 		__assign_req_name(__entry->disk, req);
 	),
 	TP_printk("nvmet%s: %sqid=%d, cmdid=%u, res=%#llx, status=%#x",
-		__print_ctrl_name(__entry->ctrl),
+		__print_ctrl_id(__entry->ctrl_id),
 		__print_disk_name(__entry->disk),
 		__entry->qid, __entry->cid, __entry->result, __entry->status)
 
drivers/phy/xilinx/phy-zynqmp.c +100 -52

300 lines not on this page · raw message

drivers/pinctrl/pinctrl-rockchip.c +1 -1
index 790467dcde4f..f473585d93d2 100644
@@ -3218,7 +3218,7 @@ static struct rockchip_pin_bank rk3328_pin_banks[] = {
 	PIN_BANK_IOMUX_FLAGS(0, 32, "gpio0", 0, 0, 0, 0),
 	PIN_BANK_IOMUX_FLAGS(1, 32, "gpio1", 0, 0, 0, 0),
 	PIN_BANK_IOMUX_FLAGS(2, 32, "gpio2", 0,
-			     0,
+			     IOMUX_WIDTH_2BIT,
 			     IOMUX_WIDTH_3BIT,
 			     0),
 	PIN_BANK_IOMUX_FLAGS(3, 32, "gpio3",
drivers/pinctrl/pinctrl-single.c +2 -0
index cd23479f352a..d32d5c5e99bc 100644
@@ -350,6 +350,8 @@ static int pcs_get_function(struct pinctrl_dev *pctldev, unsigned pin,
 		return -ENOTSUPP;
 	fselector = setting->func;
 	function = pinmux_generic_get_function(pctldev, fselector);
+	if (!function)
+		return -EINVAL;
 	*func = function->data;
 	if (!(*func)) {
 		dev_err(pcs->dev, "%s could not find function%i\n",
drivers/platform/surface/aggregator/controller.c +2 -1
index 5542b768890c..cc78687d6874 100644
@@ -1354,7 +1354,8 @@ void ssam_controller_destroy(struct ssam_controller *ctrl)
 	if (ctrl->state == SSAM_CONTROLLER_UNINITIALIZED)
 		return;
 
-	WARN_ON(ctrl->state != SSAM_CONTROLLER_STOPPED);
+	WARN_ON(ctrl->state != SSAM_CONTROLLER_STOPPED &&
+		ctrl->state != SSAM_CONTROLLER_INITIALIZED);
 
 	/*
 	 * Note: New events could still have been received after the previous
drivers/platform/x86/lg-laptop.c +1 -1
index 5f9fbea8fc3c..b374b0c7c62f 100644
@@ -665,7 +665,7 @@ static int acpi_add(struct acpi_device *device)
 		default:
 			year = 2019;
 		}
-	pr_info("product: %s  year: %d\n", product, year);
+	pr_info("product: %s  year: %d\n", product ?: "unknown", year);
 
 	if (year >= 2019)
 		battery_limit_use_wmbb = 1;
drivers/s390/block/dasd.c +23 -13
index fc3347427111..f5e7929d1dc2 100644
@@ -1622,9 +1622,15 @@ static int dasd_ese_needs_format(struct dasd_block *block, struct irb *irb)
 	if (!sense)
 		return 0;
 
[… more lines in the raw message]

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

drivers/s390/block/dasd_3990_erp.c +2 -8
index c2d4ea74e0d0..845f088ce97b 100644

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

drivers/s390/block/dasd_eckd.c +24 -31

55 lines not on this page · raw message

drivers/s390/block/dasd_int.h +1 -1
index 744e14a81cc4..c71e44d49b1d 100644

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

drivers/s390/cio/idset.c +7 -5
index 45f9c0736be4..e5f28370a903 100644

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

drivers/scsi/aacraid/comminit.c +2 -0
index 355b16f0b145..34e45c87cae0 100644

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

drivers/scsi/lpfc/lpfc_sli.c +1 -1
index 30bc72324f06..68b015bb6d15 100644

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

drivers/scsi/scsi_transport_spi.c +2 -2
index bd72c38d7bfc..5c43d0ec95a7 100644

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

drivers/soc/qcom/cmd-db.c +1 -1
index b4803f2fde5e..6cb5e3956fc5 100644

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

drivers/soundwire/stream.c +4 -4
index 8f9f4ee7860c..558725e50121 100644

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

drivers/ssb/main.c +1 -1
index 8a93c83cb6f8..d52e91258e98 100644

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

drivers/staging/iio/resolver/ad2s1210.c +4 -3
index a19cfb2998c9..f19bb5c796cf 100644

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

drivers/staging/ks7010/ks7010_sdio.c +2 -2
index 98d759e7cc95..a4f3a7a79422 100644

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

drivers/thunderbolt/switch.c +1 -0
index fdfed54e62f3..b9bdbc8b7b18 100644

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

drivers/usb/cdns3/cdnsp-gadget.h +3 -0
index f740fa6089d8..a61aef0dc273 100644

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

drivers/usb/cdns3/cdnsp-ring.c +29 -1
index 8a2cc0405a4a..04e8db773a82 100644

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

drivers/usb/class/cdc-acm.c +3 -0
index f21fd809e44f..2957a17b185e 100644

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

drivers/usb/core/sysfs.c +1 -0
index c9501907f7eb..585ef71b9318 100644

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

drivers/usb/dwc3/core.c +21 -0
index 1dc417da1a0f..de9b638c207a 100644

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

drivers/usb/dwc3/dwc3-omap.c +3 -1
index efaf0db595f4..6b59bbb22da4 100644

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

drivers/usb/dwc3/dwc3-st.c +7 -9
index 166b5bde45cb..14c86fe00648 100644

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

drivers/usb/gadget/udc/fsl_udc_core.c +1 -1
index 29fcb9b461d7..abe7c9a6ce23 100644

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

drivers/usb/host/xhci.c +5 -3
index 2539d97b90c3..fa1efed0a5fc 100644

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

drivers/usb/serial/option.c +5 -0
index cb0eb7fd2542..d34458f11d82 100644

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

fs/afs/file.c +6 -2
index b165377179c3..6774e1fcf7c5 100644

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

fs/binfmt_elf_fdpic.c +1 -1
index f51f6e4d1a32..a7084a720b28 100644

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

fs/binfmt_misc.c +168 -48

216 lines not on this page · raw message

fs/btrfs/delayed-inode.c +1 -1
index 8d8b45599236..fa4a5053ca89 100644

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

fs/btrfs/free-space-cache.c +4 -4
index 0004488eeb06..ed8729c99088 100644

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

fs/btrfs/inode.c +8 -1
index 07c6ab4ba0d4..66b56ddf3f4c 100644

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

fs/btrfs/qgroup.c +2 -2
index 1f5ab51e18dc..6cff41c46d02 100644

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

fs/btrfs/send.c +7 -2
index c2842e892e4e..577980b33aeb 100644

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

fs/btrfs/tree-checker.c +69 -0

69 lines not on this page · raw message

fs/ext4/extents.c +2 -1
index 6c41bf322315..a3869e9c71b9 100644

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

fs/ext4/mballoc.c +3 -0
index 630a5e5a380e..a48c9cc5aa6e 100644

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

fs/f2fs/segment.c +3 -2
index 1c69dc91c329..dc33b4e5c07b 100644

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

fs/file.c +13 -17
index 0669cc0f1809..72fe61e550cd 100644

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

fs/fuse/cuse.c +1 -2
index c7d882a9fe33..295344a462e1 100644

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

fs/fuse/dev.c +4 -2
index d6b5339c56e2..86416f7b8b55 100644

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

fs/fuse/fuse_i.h +1 -0
index 55b7ca26fb8a..ac655c7a15db 100644

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

fs/fuse/inode.c +11 -4
index 396866f9d72c..40a4c7680bd7 100644

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

fs/fuse/virtio_fs.c +10 -0
index 94fc874f5de7..a4deacc6f78c 100644

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

fs/gfs2/inode.c +1 -1
index 462e957eda8b..763d8dccdfc1 100644

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

fs/inode.c +37 -2
index ec41a11e2f8f..f957c130c7a6 100644

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

fs/lockd/svc.c +0 -3
index 5579e67da17d..c33f78513f00 100644

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

fs/nfs/callback.c +0 -3
index 8fe143cad4a2..f00fff3633f6 100644

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

fs/nfs/pnfs.c +8 -0
index 9f6776c7062e..e13f1c762951 100644

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

fs/nfsd/export.c +23 -9
index 668c7527b17e..16fadade86cc 100644

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

fs/nfsd/export.h +2 -2
index d03f7f6a8642..f73e23bb24a1 100644

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

fs/nfsd/netns.h +21 -4
index 51a4b7885cae..548422b24a7d 100644

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

fs/nfsd/nfs4proc.c +3 -3
index e0ff2212866a..11dcf3debb1d 100644

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

fs/nfsd/nfscache.c +119 -81

200 lines not on this page · raw message

fs/nfsd/nfsctl.c +11 -13
index f77f00c93172..2feaa49fb9fe 100644

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

fs/nfsd/nfsd.h +1 -0
index 013bfa24ced2..996f3f62335b 100644

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

fs/nfsd/nfsfh.c +2 -1
index 3a2ad88ae648..e73e9d44f1b0 100644

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

fs/nfsd/nfssvc.c +14 -10
index 3d4fd40c987b..6b4f7977f86d 100644

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

fs/nfsd/stats.c +21 -31

52 lines not on this page · raw message

fs/nfsd/stats.h +32 -53

85 lines not on this page · raw message

fs/nfsd/trace.h +22 -0
index 276420ea3b8d..91e9921db725 100644

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

fs/nfsd/vfs.c +4 -2
index 0f430548bfbb..871649030152 100644

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

fs/ntfs3/bitmap.c +2 -2
index 95589a496f0f..7dccff6c9983 100644

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

fs/ntfs3/fsntfs.c +1 -1
index 4bd3e6718ee6..abf28c0db71a 100644

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

fs/ntfs3/index.c +6 -5
index 13f492d0d971..9cffd59e9735 100644

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

fs/ntfs3/ntfs_fs.h +2 -2
index e67bef401807..b4c09b99edd1 100644

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

fs/ntfs3/super.c +1 -1
index 0a71075042bb..2ce26062e55e 100644

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

fs/quota/dquot.c +2 -3
index edb414d3fd16..3b62fbcefa8c 100644

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

include/linux/bitmap.h +17 -3
index 37f36dad18bd..ce03547d69f4 100644

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

include/linux/blkdev.h +1 -1
index 905844172cfd..c6d57814988d 100644

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

include/linux/cpumask.h +1 -1
index b3c230dea071..4555a4cb4632 100644

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

include/linux/fs.h +5 -0
index 61e86502fe65..27da89d0ed5a 100644

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

include/linux/pm.h +40 -15

55 lines not on this page · raw message

include/linux/pm_runtime.h +14 -0
index 7efb10518313..9a10b6bac4a7 100644

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

include/linux/sunrpc/svc.h +3 -2
index 6e48c1c88f1b..57e0d9b7553b 100644

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

include/net/busy_poll.h +1 -1
index 3459a04a3d61..2c37aa0a4ccb 100644

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

include/net/kcm.h +1 -0
index 2d704f8f4905..8e8252e08a9c 100644

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

include/scsi/scsi_cmnd.h +1 -1
index e1180771604d..fb39edba3dea 100644

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

kernel/cgroup/cpuset.c +9 -4
index 82df5a07a869..d6e70aa7e151 100644

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

kernel/time/clocksource.c +20 -22

42 lines not on this page · raw message

kernel/time/hrtimer.c +2 -0
index 5502c687bd40..bdd9041d595e 100644

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

lib/math/prime_numbers.c +0 -2
index d42cebf7407f..d3b64b10da1c 100644

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

mm/huge_memory.c +13 -17
index 98ff57c8eda6..9139da4baa39 100644

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

mm/memcontrol.c +5 -2
index 6f969ba0d688..69dd12a79942 100644

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

mm/memory.c +14 -15
index 99d15abe4a06..4d6eda1cdb6d 100644

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

net/bluetooth/bnep/core.c +2 -1
index a796d72c7dba..8bb6c8ad1131 100644

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

net/bluetooth/hci_core.c +7 -12
index fc4e02b3f26a..7dff3f1a2a9e 100644

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

net/bluetooth/mgmt.c +4 -0
index 8f1162961836..f59775973cdf 100644

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

net/bluetooth/smp.c +72 -72

144 lines not on this page · raw message

net/bridge/br_netfilter_hooks.c +5 -1
index 9981e0dfdd4d..d0d41dbbfe38 100644

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

net/core/net-sysfs.c +1 -1
index e9ea0695efb4..173ea92124f8 100644

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

net/ethtool/ioctl.c +3 -0
index 53e2ef6ada8f..1e9e70a633d1 100644

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

net/ipv6/ip6_output.c +10 -0
index ce37c8345579..b37121f872bc 100644

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

net/ipv6/ip6_tunnel.c +7 -5
index d370a71c9752..5955fca601b3 100644

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

net/ipv6/netfilter/nf_conntrack_reasm.c +4 -0
index 5c47be29b9ee..2e5b090d7c89 100644

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

net/iucv/iucv.c +1 -2
index 30fc78236050..1a88ed72a7a9 100644

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

net/kcm/kcmsock.c +4 -0
index 5457ca190980..a3b281f7a99b 100644

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

net/mac80211/agg-tx.c +1 -5
index a4d3fa14f76b..1deb3d874a4b 100644

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

net/mac80211/driver-ops.c +0 -3
index 120bd9cdf7df..48322e45e7dd 100644

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

net/mac80211/sta_info.c +14 -0
index 6d2b42cb3ad5..d1460b870ed5 100644

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

net/mptcp/diag.c +1 -1
index d7ca71c59754..23bd18084c8a 100644

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

net/mptcp/protocol.c +1 -1
index 9273316cdbde..148da412ee76 100644

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

net/netfilter/nf_flow_table_inet.c +3 -0
index 6783ea220f8f..7f746acb4b02 100644

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

net/netfilter/nf_flow_table_ip.c +3 -0
index f3227f931696..8fa16be0def2 100644

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

net/netfilter/nf_flow_table_offload.c +1 -1
index 6ac1ebe17456..d8cb304f809e 100644

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

net/netfilter/nfnetlink_queue.c +33 -2
index 89b16d36da9c..d5f5b93a99a0 100644

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

net/netfilter/nft_counter.c +7 -2
index 1b468a16b523..30b24d002c3d 100644

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

net/netlink/af_netlink.c +6 -7
index 18a38db2b27e..258d885548ae 100644

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

net/rds/recv.c +11 -2
index 5b426dc3634d..a316180d3c32 100644

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

net/sched/sch_netem.c +29 -18

47 lines not on this page · raw message

net/sunrpc/stats.c +1 -1
index c964b48eaaba..a004c3ef35c0 100644

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

net/sunrpc/svc.c +23 -13
index 8d5897ed2816..92d88aac2adf 100644

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

net/wireless/core.h +7 -1
index 1720abf36f92..be186b5a15f3 100644

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

security/apparmor/policy_unpack_test.c +3 -3
index 533137f45361..4951d9bef579 100644

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

security/selinux/avc.c +1 -1
index 97f4c944a20f..5e0ed154669b 100644

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

sound/core/timer.c +1 -1
index 38f3b30efae7..ecad57a1bc5b 100644

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

sound/pci/hda/patch_realtek.c +0 -1
index 8729896c7f9c..05fb686ae250 100644

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

sound/usb/quirks-table.h +1 -0
index b03d671f218d..7a15cc260f74 100644

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

sound/usb/quirks.c +2 -0
index cf1ba2837d10..cae8eb5d611b 100644

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

tools/include/linux/align.h new file +12 -0
new file mode 100644
index 000000000000..14e34ace80dd

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

tools/include/linux/bitmap.h +5 -4
index 95611df1d26e..a83ffdf1e211 100644

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

tools/testing/selftests/core/close_range_test.c +35 -0
index aa7d13d91963..03db3d9cd94b 100644

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

tools/testing/selftests/tc-testing/tdc.py +0 -1
index a3e43189d940..d6a9d97f73c2 100755

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

The rest of this diff is not shown. View the raw message.

Part of the diff is not shown here. View the raw message.