Linux/linux 453a4a5drivers/net/team team_core.c, net/bluetooth l2cap_core.c

Merge tag 'net-7.0-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net

Pull networking fixes from Paolo Abeni:
 "Including fixes from Bluetooth, CAN, IPsec and Netfilter.

  Notably, this includes the fix for the Bluetooth regression that you
  were notified about. I'm not aware of any other pending regressions.

  Current release - regressions:

    - bluetooth:
       - fix stack-out-of-bounds read in l2cap_ecred_conn_req
       - fix regressions caused by reusing ident

    - netfilter: revisit array resize logic

    - eth: ice: set max queues in alloc_etherdev_mqs()

  Previous releases - regressions:

    [66 lines not shown]
DeltaFile
+64-52net/xfrm/xfrm_state.c
+75-17net/netfilter/nft_set_rbtree.c
+40-35net/netfilter/nf_conntrack_netlink.c
+53-18net/bluetooth/l2cap_core.c
+69-1tools/testing/selftests/net/netfilter/nft_concat_range.sh
+64-1drivers/net/team/team_core.c
+365-12480 files not shown
+1,057-38786 files

Linux/linux 75c78a4drivers/pinctrl/mediatek pinctrl-mtk-common.c, drivers/pinctrl/qcom pinctrl-spmi-gpio.c

Merge tag 'pinctrl-v7.0-3' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl

Pull pin control fixes from Linus Walleij:

 - Implement .get_direction() in the spmi-gpio gpio_chip

   Recent changes makes this start to print warnings and it's not nice,
   let's just fix it

 - Clamp the return value of gpio_get() in the Renesas RZA1 driver

 - Add the GPIO_GENERIC dependency to the STM32 HDP driver

 - Modify the Mediatek driver to accept devices that do not use external
   interrupts (EINT) at all

 - Fix flag propagation in the Sunxi driver, so that we can fix an issue
   with uninitialized pins in a follow-up patch using said flags


    [9 lines not shown]
DeltaFile
+32-11drivers/pinctrl/sunxi/pinctrl-sunxi.c
+16-0drivers/pinctrl/qcom/pinctrl-spmi-gpio.c
+8-7drivers/pinctrl/renesas/pinctrl-rzt2h.c
+6-3drivers/pinctrl/mediatek/pinctrl-mtk-common.c
+3-1drivers/pinctrl/sunxi/pinctrl-sunxi.h
+1-1drivers/pinctrl/renesas/pinctrl-rza1.c
+66-231 files not shown
+67-237 files

Linux/linux dabb83eDocumentation/core-api dma-attributes.rst, drivers/iommu dma-iommu.c

Merge tag 'dma-mapping-7.0-2026-03-25' of git://git.kernel.org/pub/scm/linux/kernel/git/mszyprowski/linux

Pull dma-mapping fixes from Marek Szyprowski:
 "A set of fixes for DMA-mapping subsystem, which resolve false-
  positive warnings from KMSAN and DMA-API debug (Shigeru Yoshida
  and Leon Romanovsky) as well as a simple build fix (Miguel Ojeda)"

* tag 'dma-mapping-7.0-2026-03-25' of git://git.kernel.org/pub/scm/linux/kernel/git/mszyprowski/linux:
  dma-mapping: add missing `inline` for `dma_free_attrs`
  mm/hmm: Indicate that HMM requires DMA coherency
  RDMA/umem: Tell DMA mapping that UMEM requires coherency
  iommu/dma: add support for DMA_ATTR_REQUIRE_COHERENT attribute
  dma-direct: prevent SWIOTLB path when DMA_ATTR_REQUIRE_COHERENT is set
  dma-mapping: Introduce DMA require coherency attribute
  dma-mapping: Clarify valid conditions for CPU cache line overlap
  dma-mapping: handle DMA_ATTR_CPU_CACHE_CLEAN in trace output
  dma-debug: Allow multiple invocations of overlapping entries
  dma: swiotlb: add KMSAN annotations to swiotlb_bounce()
DeltaFile
+29-7Documentation/core-api/dma-attributes.rst
+19-2kernel/dma/swiotlb.c
+17-4drivers/iommu/dma-iommu.c
+13-6include/linux/dma-mapping.h
+5-5drivers/virtio/virtio_ring.c
+5-4kernel/dma/debug.c
+88-285 files not shown
+106-3611 files

Linux/linux db472c3include/net/netfilter nf_conntrack_expect.h, net/netfilter nft_set_rbtree.c nf_conntrack_netlink.c

Merge tag 'nf-26-03-26' of git://git.kernel.org/pub/scm/linux/kernel/git/netfilter/nf

Pablo Neira Ayuso says:

====================
Netfilter for net

This is v3, I kept back an ipset fix and another to tigthen the xtables
interface to reject invalid combinations with the NFPROTO_ARP family.
They need a bit more discussion. I fixed the issues reported by AI on
patch 9 (add #ifdef to access ct zone, update nf_conntrack_broadcast
and patch 10 (use better Fixes: tag). Thanks!

The following patchset contains Netfilter fixes for *net*.

Note that most bugs fixed here stem from 2.6 days, the large PR is not
due to an increase in regressions.

1) Fix incorrect reject of set updates with nf_tables pipapo set

    [45 lines not shown]
DeltaFile
+75-17net/netfilter/nft_set_rbtree.c
+40-35net/netfilter/nf_conntrack_netlink.c
+69-1tools/testing/selftests/net/netfilter/nft_concat_range.sh
+34-5net/netfilter/nf_conntrack_expect.c
+18-2include/net/netfilter/nf_conntrack_expect.h
+10-10net/netfilter/nft_set_pipapo_avx2.c
+246-7010 files not shown
+296-10216 files

Linux/linux deec4f7drivers/net/ethernet/intel/iavf iavf_ethtool.c, drivers/net/ethernet/intel/ice ice_ethtool.c ice.h

Merge branch '100GbE' of git://git.kernel.org/pub/scm/linux/kernel/git/tnguy/net-queue

Tony Nguyen says:

====================
For ice:
Michal corrects call to alloc_etherdev_mqs() to provide maximum number
of queues supported rather than currently allocated number of queues.

Petr Oros fixes issues related to some ethtool operations in switchdev
mode.

For iavf:
Kohei Enju corrects number of reported queues for ethtool statistics to
absolute max as using current number could race and cause out-of-bounds
issues.

For idpf:
Josh NULLs cdev_info pointer after freeing to prevent possible subsequent

    [14 lines not shown]
DeltaFile
+11-21drivers/net/ethernet/intel/ice/ice_ethtool.c
+15-16drivers/net/ethernet/intel/iavf/iavf_ethtool.c
+22-0drivers/net/ethernet/intel/ice/ice.h
+4-2drivers/net/ethernet/intel/idpf/idpf_idc.c
+3-2drivers/net/ethernet/intel/ice/ice_repr.c
+2-2drivers/net/ethernet/intel/ice/ice_main.c
+57-433 files not shown
+60-469 files

Linux/linux 72d96e4drivers/net/ethernet/cadence macb_main.c

net: macb: use the current queue number for stats

There's a potential mismatch between the memory reserved for statistics
and the amount of memory written.

gem_get_sset_count() correctly computes the number of stats based on the
active queues, whereas gem_get_ethtool_stats() indiscriminately copies
data using the maximum number of queues, and in the case the number of
active queues is less than MACB_MAX_QUEUES, this results in a OOB write
as observed in the KASAN splat.

==================================================================
BUG: KASAN: vmalloc-out-of-bounds in gem_get_ethtool_stats+0x54/0x78
  [macb]
Write of size 760 at addr ffff80008080b000 by task ethtool/1027

CPU: [...]
Tainted: [E]=UNSIGNED_MODULE
Hardware name: raspberrypi rpi/rpi, BIOS 2025.10 10/01/2025

    [48 lines not shown]
DeltaFile
+1-1drivers/net/ethernet/cadence/macb_main.c
+1-11 files

Linux/linux aa637b2drivers/bluetooth btintel.c btusb.c, net/bluetooth l2cap_core.c

Merge tag 'for-net-2026-03-25' of git://git.kernel.org/pub/scm/linux/kernel/git/bluetooth/bluetooth

Luiz Augusto von Dentz says:

====================
bluetooth pull request for net:

 - L2CAP: Fix deadlock in l2cap_conn_del()
 - L2CAP: Fix ERTM re-init and zero pdu_len infinite loop
 - L2CAP: Fix send LE flow credits in ACL link
 - btintel: serialize btintel_hw_error() with hci_req_sync_lock
 - btusb: clamp SCO altsetting table indices

* tag 'for-net-2026-03-25' of git://git.kernel.org/pub/scm/linux/kernel/git/bluetooth/bluetooth:
  Bluetooth: btusb: clamp SCO altsetting table indices
  Bluetooth: L2CAP: Fix ERTM re-init and zero pdu_len infinite loop
  Bluetooth: L2CAP: Fix deadlock in l2cap_conn_del()
  Bluetooth: btintel: serialize btintel_hw_error() with hci_req_sync_lock
  Bluetooth: L2CAP: Fix send LE flow credits in ACL link

    [4 lines not shown]
DeltaFile
+19-12net/bluetooth/l2cap_core.c
+8-3drivers/bluetooth/btintel.c
+4-1drivers/bluetooth/btusb.c
+31-163 files

Linux/linux 6a2b724net/netfilter nf_conntrack_sip.c

netfilter: nf_conntrack_sip: fix use of uninitialized rtp_addr in process_sdp

process_sdp() declares union nf_inet_addr rtp_addr on the stack and
passes it to the nf_nat_sip sdp_session hook after walking the SDP
media descriptions. However rtp_addr is only initialized inside the
media loop when a recognized media type with a non-zero port is found.

If the SDP body contains no m= lines, only inactive media sections
(m=audio 0 ...) or only unrecognized media types, rtp_addr is never
assigned. Despite that, the function still calls hooks->sdp_session()
with &rtp_addr, causing nf_nat_sdp_session() to format the stale stack
value as an IP address and rewrite the SDP session owner and connection
lines with it.

With CONFIG_INIT_STACK_ALL_ZERO (default on most distributions) this
results in the session-level o= and c= addresses being rewritten to
0.0.0.0 for inactive SDP sessions. Without stack auto-init the
rewritten address is whatever happened to be on the stack.


    [10 lines not shown]
DeltaFile
+10-4net/netfilter/nf_conntrack_sip.c
+10-41 files

Linux/linux 8f15b50include/uapi/linux/netfilter nf_conntrack_common.h, net/netfilter nf_conntrack_netlink.c nf_conntrack_proto_tcp.c

netfilter: ctnetlink: use netlink policy range checks

Replace manual range and mask validations with netlink policy
annotations in ctnetlink code paths, so that the netlink core rejects
invalid values early and can generate extack errors.

- CTA_PROTOINFO_TCP_STATE: reject values > TCP_CONNTRACK_SYN_SENT2 at
  policy level, removing the manual >= TCP_CONNTRACK_MAX check.
- CTA_PROTOINFO_TCP_WSCALE_ORIGINAL/REPLY: reject values > TCP_MAX_WSCALE
  (14). The normal TCP option parsing path already clamps to this value,
  but the ctnetlink path accepted 0-255, causing undefined behavior when
  used as a u32 shift count.
- CTA_FILTER_ORIG_FLAGS/REPLY_FLAGS: use NLA_POLICY_MASK with
  CTA_FILTER_F_ALL, removing the manual mask checks.
- CTA_EXPECT_FLAGS: use NLA_POLICY_MASK with NF_CT_EXPECT_MASK, adding
  a new mask define grouping all valid expect flags.

Extracted from a broader nf-next patch by Florian Westphal, scoped to
ctnetlink for the fixes tree.

    [5 lines not shown]
DeltaFile
+5-11net/netfilter/nf_conntrack_netlink.c
+3-7net/netfilter/nf_conntrack_proto_tcp.c
+4-0include/uapi/linux/netfilter/nf_conntrack_common.h
+12-183 files

Linux/linux 3db5647net/netfilter nf_conntrack_expect.c

netfilter: nf_conntrack_expect: skip expectations in other netns via proc

Skip expectations that do not reside in this netns.

Similar to e77e6ff502ea ("netfilter: conntrack: do not dump other netns's
conntrack entries via proc").

Fixes: 9b03f38d0487 ("netfilter: netns nf_conntrack: per-netns expectations")
Signed-off-by: Florian Westphal <fw at strlen.de>
Signed-off-by: Pablo Neira Ayuso <pablo at netfilter.org>
DeltaFile
+4-0net/netfilter/nf_conntrack_expect.c
+4-01 files

Linux/linux 02a3231include/net/netfilter nf_conntrack_expect.h, net/netfilter nf_conntrack_expect.c nf_conntrack_broadcast.c

netfilter: nf_conntrack_expect: store netns and zone in expectation

__nf_ct_expect_find() and nf_ct_expect_find_get() are called under
rcu_read_lock() but they dereference the master conntrack via
exp->master.

Since the expectation does not hold a reference on the master conntrack,
this could be dying conntrack or different recycled conntrack than the
real master due to SLAB_TYPESAFE_RCU.

Store the netns, the master_tuple and the zone in struct
nf_conntrack_expect as a safety measure.

This patch is required by the follow up fix not to dump expectations
that do not belong to this netns.

Signed-off-by: Florian Westphal <fw at strlen.de>
Signed-off-by: Pablo Neira Ayuso <pablo at netfilter.org>
DeltaFile
+17-1include/net/netfilter/nf_conntrack_expect.h
+7-2net/netfilter/nf_conntrack_expect.c
+5-1net/netfilter/nf_conntrack_broadcast.c
+5-0net/netfilter/nf_conntrack_netlink.c
+34-44 files

Linux/linux bffcaadinclude/net/netfilter nf_conntrack_core.h, net/netfilter nf_conntrack_netlink.c nf_conntrack_expect.c

netfilter: ctnetlink: ensure safe access to master conntrack

Holding reference on the expectation is not sufficient, the master
conntrack object can just go away, making exp->master invalid.

To access exp->master safely:

- Grab the nf_conntrack_expect_lock, this gets serialized with
  clean_from_lists() which also holds this lock when the master
  conntrack goes away.

- Hold reference on master conntrack via nf_conntrack_find_get().
  Not so easy since the master tuple to look up for the master conntrack
  is not available in the existing problematic paths.

This patch goes for extending the nf_conntrack_expect_lock section
to address this issue for simplicity, in the cases that are described
below this is just slightly extending the lock section.


    [24 lines not shown]
DeltaFile
+19-9net/netfilter/nf_conntrack_netlink.c
+9-1net/netfilter/nf_conntrack_expect.c
+5-0include/net/netfilter/nf_conntrack_core.h
+2-0net/netfilter/nf_conntrack_ecache.c
+35-104 files

Linux/linux f017941net/netfilter nf_conntrack_netlink.c nf_conntrack_helper.c

netfilter: nf_conntrack_expect: use expect->helper

Use expect->helper in ctnetlink and /proc to dump the helper name.
Using nfct_help() without holding a reference to the master conntrack
is unsafe.

Use exp->master->helper in ctnetlink path if userspace does not provide
an explicit helper when creating an expectation to retain the existing
behaviour. The ctnetlink expectation path holds the reference on the
master conntrack and nf_conntrack_expect lock and the nfnetlink glue
path refers to the master ct that is attached to the skb.

Reported-by: Hyunwoo Kim <imv4bel at gmail.com>
Signed-off-by: Florian Westphal <fw at strlen.de>
Signed-off-by: Pablo Neira Ayuso <pablo at netfilter.org>
DeltaFile
+10-14net/netfilter/nf_conntrack_netlink.c
+1-5net/netfilter/nf_conntrack_helper.c
+1-1net/netfilter/nf_conntrack_expect.c
+1-1net/netfilter/nf_conntrack_sip.c
+13-214 files

Linux/linux fafdd92net/netfilter nft_set_rbtree.c

netfilter: nft_set_rbtree: revisit array resize logic

Chris Arges reports high memory consumption with thousands of
containers, this patch revisits the array allocation logic.

For anonymous sets, start by 16 slots (which takes 256 bytes on x86_64).
Expand it by x2 until threshold of 512 slots is reached, over that
threshold, expand it by x1.5.

For non-anonymous set, start by 1024 slots in the array (which takes 16
Kbytes initially on x86_64). Expand it by x1.5.

Use set->ndeact to subtract deactivated elements when calculating the
number of the slots in the array, otherwise the array size array gets
increased artifically. Add special case shrink logic to deal with flush
set too.

The shrink logic is skipped by anonymous sets.


    [9 lines not shown]
DeltaFile
+75-17net/netfilter/nft_set_rbtree.c
+75-171 files

Linux/linux 9d3f027net/ipv6/netfilter ip6t_rt.c

netfilter: ip6t_rt: reject oversized addrnr in rt_mt6_check()

Reject rt match rules whose addrnr exceeds IP6T_RT_HOPS.

rt_mt6() expects addrnr to stay within the bounds of rtinfo->addrs[].
Validate addrnr during rule installation so malformed rules are rejected
before the match logic can use an out-of-range value.

Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
Reported-by: Yifan Wu <yifanwucs at gmail.com>
Reported-by: Juefei Pu <tomapufckgml at gmail.com>
Co-developed-by: Yuan Tan <yuantan098 at gmail.com>
Signed-off-by: Yuan Tan <yuantan098 at gmail.com>
Suggested-by: Xin Liu <bird at lzu.edu.cn>
Tested-by: Yuhang Zheng <z1652074432 at gmail.com>
Signed-off-by: Ren Wei <n05ec at lzu.edu.cn>
Signed-off-by: Florian Westphal <fw at strlen.de>
Signed-off-by: Pablo Neira Ayuso <pablo at netfilter.org>
DeltaFile
+4-0net/ipv6/netfilter/ip6t_rt.c
+4-01 files

Linux/linux 9c42bc9include/net/netfilter nf_conntrack_expect.h, net/netfilter nf_conntrack_expect.c nf_conntrack_h323_main.c

netfilter: nf_conntrack_expect: honor expectation helper field

The expectation helper field is mostly unused. As a result, the
netfilter codebase relies on accessing the helper through exp->master.

Always set on the expectation helper field so it can be used to reach
the helper.

nf_ct_expect_init() is called from packet path where the skb owns
the ct object, therefore accessing exp->master for the newly created
expectation is safe. This saves a lot of updates in all callsites
to pass the ct object as parameter to nf_ct_expect_init().

This is a preparation patches for follow up fixes.

Signed-off-by: Florian Westphal <fw at strlen.de>
Signed-off-by: Pablo Neira Ayuso <pablo at netfilter.org>
DeltaFile
+13-1net/netfilter/nf_conntrack_expect.c
+6-6net/netfilter/nf_conntrack_h323_main.c
+6-1net/netfilter/nf_conntrack_helper.c
+1-1include/net/netfilter/nf_conntrack_expect.h
+1-1net/netfilter/nf_conntrack_broadcast.c
+1-1net/netfilter/nf_conntrack_netlink.c
+28-111 files not shown
+29-127 files

Linux/linux 52025ebnet/netfilter nfnetlink_log.c

netfilter: nfnetlink_log: fix uninitialized padding leak in NFULA_PAYLOAD

__build_packet_message() manually constructs the NFULA_PAYLOAD netlink
attribute using skb_put() and skb_copy_bits(), bypassing the standard
nla_reserve()/nla_put() helpers. While nla_total_size(data_len) bytes
are allocated (including NLA alignment padding), only data_len bytes
of actual packet data are copied. The trailing nla_padlen(data_len)
bytes (1-3 when data_len is not 4-byte aligned) are never initialized,
leaking stale heap contents to userspace via the NFLOG netlink socket.

Replace the manual attribute construction with nla_reserve(), which
handles the tailroom check, header setup, and padding zeroing via
__nla_reserve(). The subsequent skb_copy_bits() fills in the payload
data on top of the properly initialized attribute.

Fixes: df6fb868d611 ("[NETFILTER]: nfnetlink: convert to generic netlink attribute functions")
Reported-by: Xiang Mei <xmei5 at asu.edu>
Signed-off-by: Weiming Shi <bestswngs at gmail.com>
Signed-off-by: Florian Westphal <fw at strlen.de>
Signed-off-by: Pablo Neira Ayuso <pablo at netfilter.org>
DeltaFile
+2-6net/netfilter/nfnetlink_log.c
+2-61 files

Linux/linux 84a8335net/tls tls_sw.c

tls: Purge async_hold in tls_decrypt_async_wait()

The async_hold queue pins encrypted input skbs while
the AEAD engine references their scatterlist data. Once
tls_decrypt_async_wait() returns, every AEAD operation
has completed and the engine no longer references those
skbs, so they can be freed unconditionally.

A subsequent patch adds batch async decryption to
tls_sw_read_sock(), introducing a new call site that
must drain pending AEAD operations and release held
skbs. Move __skb_queue_purge(&ctx->async_hold) into
tls_decrypt_async_wait() so the purge is centralized
and every caller -- recvmsg's drain path, the -EBUSY
fallback in tls_do_decryption(), and the new read_sock
batch path -- releases held skbs on synchronization
without each site managing the purge independently.

This fixes a leak when tls_strp_msg_hold() fails part-way through,

    [12 lines not shown]
DeltaFile
+1-1net/tls/tls_sw.c
+1-11 files

Linux/linux 0138af2fs/erofs Kconfig ishare.c

Merge tag 'erofs-for-7.0-rc6-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/xiang/erofs

Pull erofs fixes from Gao Xiang:

 - Mark I/Os as failed when encountering short reads on file-backed
   mounts

 - Label GFP_NOIO in the BIO completion when the completion is in the
   process context, and directly call into the decompression to avoid
   deadlocks

 - Improve Kconfig descriptions to better highlight the overall efforts

 - Fix .fadvise() for page cache sharing

* tag 'erofs-for-7.0-rc6-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/xiang/erofs:
  erofs: fix .fadvise() for page cache sharing
  erofs: update the Kconfig description
  erofs: add GFP_NOIO in the bio completion if needed
  erofs: set fileio bio failed in short read case
DeltaFile
+29-14fs/erofs/Kconfig
+13-2fs/erofs/ishare.c
+2-4fs/erofs/fileio.c
+3-0fs/erofs/zdata.c
+47-204 files

Linux/linux aba9da0include/linux srcutree.h srcutiny.h, kernel/rcu srcutree.c srcutiny.c

Merge tag 'rcu-fixes.v7.0-20260325a' of git://git.kernel.org/pub/scm/linux/kernel/git/rcu/linux

Pull RCU fixes from Boqun Feng:
 "Fix a regression introduced by commit c27cea4416a3 ("rcu: Re-implement
  RCU Tasks Trace in terms of SRCU-fast"): BPF contexts can run with
  preemption disabled or scheduler locks held, so call_srcu() must work
  in all such contexts.

  Fix this by converting SRCU's spinlocks to raw spinlocks and avoiding
  scheduler lock acquisition in call_srcu() by deferring to an irq_work
  (similar to call_rcu_tasks_generic()), for both tree SRCU and tiny
  SRCU.

  Also fix a follow-on lockdep splat caused by srcu_node allocation
  under the newly introduced raw spinlock by deferring the allocation to
  grace-period worker context"

* tag 'rcu-fixes.v7.0-20260325a' of git://git.kernel.org/pub/scm/linux/kernel/git/rcu/linux:
  srcu: Use irq_work to start GP in tiny SRCU

    [3 lines not shown]
DeltaFile
+102-109kernel/rcu/srcutree.c
+18-1kernel/rcu/srcutiny.c
+5-4include/linux/srcutree.h
+9-0kernel/rcu/rcu.h
+4-0include/linux/srcutiny.h
+138-1145 files

Linux/linux d2a43e7init Kconfig, scripts/coccinelle/api kmalloc_objs.cocci

Merge tag 'hardening-v7.0-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux

Pull hardening fixes from Kees Cook:

 - fix required Clang version for CC_HAS_COUNTED_BY_PTR (Nathan
   Chancellor)

 - update Coccinelle script used for kmalloc_obj

* tag 'hardening-v7.0-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux:
  init/Kconfig: Require a release version of clang-22 for CC_HAS_COUNTED_BY_PTR
  coccinelle: kmalloc_obj: Remove default GFP_KERNEL arg
DeltaFile
+11-0scripts/coccinelle/api/kmalloc_objs.cocci
+1-1init/Kconfig
+12-12 files

Linux/linux 51088b9drivers/platform/olpc olpc-xo175-ec.c, drivers/platform/x86 asus-armoury.h asus-nb-wmi.c

Merge tag 'platform-drivers-x86-v7.0-3' of git://git.kernel.org/pub/scm/linux/kernel/git/pdx86/platform-drivers-x86

Pull x86 platform driver fixes from Ilpo Järvinen:
 "Fixes and New HW Support. The trivial drop of unused gz_chain_head is
  not exactly fixes material but it allows other work to avoid problems
  so I decided to take it in along with the fixes.

   - amd/hsmp: Fix typo in error message

   - asus-armoury: Add support for G614FP, GA503QM, GZ302EAC, and GZ302EAC

   - asus-nb-wmi: Add DMI quirk for ASUS ROG Flow Z13-KJP GZ302EAC

   - hp-wmi: Support for Omen 16-k0xxx, 16-wf1xxx, 16-xf0xxx

   - intel-hid: Disable wakeup_mode during hibernation

   - ISST:
      - Check HWP support before MSR access

    [21 lines not shown]
DeltaFile
+77-0drivers/platform/x86/asus-armoury.h
+19-0drivers/platform/x86/hp/hp-wmi.c
+9-1drivers/platform/x86/intel/hid.c
+4-1drivers/platform/x86/intel/speed_select_if/isst_tpmi_core.c
+1-1drivers/platform/x86/asus-nb-wmi.c
+1-1drivers/platform/olpc/olpc-xo175-ec.c
+111-43 files not shown
+113-89 files

Linux/linux 6caefcdtools/testing/selftests/net/netfilter nft_concat_range.sh

selftests: netfilter: nft_concat_range.sh: add check for flush+reload bug

This test will fail without
the preceding commit ("netfilter: nft_set_pipapo_avx2: fix match retart if found element is expired"):

  reject overlapping range on add       0s                              [ OK ]
  reload with flush                 /dev/stdin:59:32-52: Error: Could not process rule: File exists
add element inet filter test { 10.0.0.29 . 10.0.2.29 }

Reviewed-by: Stefano Brivio <sbrivio at redhat.com>
Signed-off-by: Florian Westphal <fw at strlen.de>
Signed-off-by: Pablo Neira Ayuso <pablo at netfilter.org>
DeltaFile
+69-1tools/testing/selftests/net/netfilter/nft_concat_range.sh
+69-11 files

Linux/linux d3c0037net/netfilter nft_set_pipapo_avx2.c

netfilter: nft_set_pipapo_avx2: don't return non-matching entry on expiry

New test case fails unexpectedly when avx2 matching functions are used.

The test first loads a ranomly generated pipapo set
with 'ipv4 . port' key, i.e.  nft -f foo.

This works.  Then, it reloads the set after a flush:
(echo flush set t s; cat foo) | nft -f -

This is expected to work, because its the same set after all and it was
already loaded once.

But with avx2, this fails: nft reports a clashing element.

The reported clash is of following form:

    We successfully re-inserted
      a . b

    [32 lines not shown]
DeltaFile
+10-10net/netfilter/nft_set_pipapo_avx2.c
+10-101 files

Linux/linux 129fa60drivers/bluetooth btusb.c

Bluetooth: btusb: clamp SCO altsetting table indices

btusb_work() maps the number of active SCO links to USB alternate
settings through a three-entry lookup table when CVSD traffic uses
transparent voice settings. The lookup currently indexes alts[] with
data->sco_num - 1 without first constraining sco_num to the number of
available table entries.

While the table only defines alternate settings for up to three SCO
links, data->sco_num comes from hci_conn_num() and is used directly.
Cap the lookup to the last table entry before indexing it so the
driver keeps selecting the highest supported alternate setting without
reading past alts[].

Fixes: baac6276c0a9 ("Bluetooth: btusb: handle mSBC audio over USB Endpoints")
Signed-off-by: Pengpeng Hou <pengpeng at iscas.ac.cn>
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz at intel.com>
DeltaFile
+4-1drivers/bluetooth/btusb.c
+4-11 files

Linux/linux 25f420anet/bluetooth l2cap_core.c

Bluetooth: L2CAP: Fix ERTM re-init and zero pdu_len infinite loop

l2cap_config_req() processes CONFIG_REQ for channels in BT_CONNECTED
state to support L2CAP reconfiguration (e.g. MTU changes). However,
since both CONF_INPUT_DONE and CONF_OUTPUT_DONE are already set from
the initial configuration, the reconfiguration path falls through to
l2cap_ertm_init(), which re-initializes tx_q, srej_q, srej_list, and
retrans_list without freeing the previous allocations and sets
chan->sdu to NULL without freeing the existing skb. This leaks all
previously allocated ERTM resources.

Additionally, l2cap_parse_conf_req() does not validate the minimum
value of remote_mps derived from the RFC max_pdu_size option. A zero
value propagates to l2cap_segment_sdu() where pdu_len becomes zero,
causing the while loop to never terminate since len is never
decremented, exhausting all available memory.

Fix the double-init by skipping l2cap_ertm_init() and
l2cap_chan_ready() when the channel is already in BT_CONNECTED state,

    [7 lines not shown]
DeltaFile
+12-7net/bluetooth/l2cap_core.c
+12-71 files

Linux/linux 00fdebbnet/bluetooth l2cap_core.c

Bluetooth: L2CAP: Fix deadlock in l2cap_conn_del()

l2cap_conn_del() calls cancel_delayed_work_sync() for both info_timer
and id_addr_timer while holding conn->lock. However, the work functions
l2cap_info_timeout() and l2cap_conn_update_id_addr() both acquire
conn->lock, creating a potential AB-BA deadlock if the work is already
executing when l2cap_conn_del() takes the lock.

Move the work cancellations before acquiring conn->lock and use
disable_delayed_work_sync() to additionally prevent the works from
being rearmed after cancellation, consistent with the pattern used in
hci_conn_del().

Fixes: ab4eedb790ca ("Bluetooth: L2CAP: Fix corrupted list in hci_chan_del")
Signed-off-by: Hyunwoo Kim <imv4bel at gmail.com>
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz at intel.com>
DeltaFile
+3-5net/bluetooth/l2cap_core.c
+3-51 files

Linux/linux 94d8e6fdrivers/bluetooth btintel.c

Bluetooth: btintel: serialize btintel_hw_error() with hci_req_sync_lock

btintel_hw_error() issues two __hci_cmd_sync() calls (HCI_OP_RESET
and Intel exception-info retrieval) without holding
hci_req_sync_lock().  This lets it race against
hci_dev_do_close() -> btintel_shutdown_combined(), which also runs
__hci_cmd_sync() under the same lock.  When both paths manipulate
hdev->req_status/req_rsp concurrently, the close path may free the
response skb first, and the still-running hw_error path hits a
slab-use-after-free in kfree_skb().

Wrap the whole recovery sequence in hci_req_sync_lock/unlock so it
is serialized with every other synchronous HCI command issuer.

Below is the data race report and the kasan report:

  BUG: data-race in __hci_cmd_sync_sk / btintel_shutdown_combined

  read of hdev->req_rsp at net/bluetooth/hci_sync.c:199

    [23 lines not shown]
DeltaFile
+8-3drivers/bluetooth/btintel.c
+8-31 files

Linux/linux f39f905net/bluetooth l2cap_core.c

Bluetooth: L2CAP: Fix send LE flow credits in ACL link

When the L2CAP channel mode is L2CAP_MODE_ERTM/L2CAP_MODE_STREAMING,
l2cap_publish_rx_avail will be called and le flow credits will be sent in
l2cap_chan_rx_avail, even though the link type is ACL.

The logs in question as follows:
> ACL Data RX: Handle 129 flags 0x02 dlen 12
      L2CAP: Unknown (0x16) ident 4 len 4
        40 00 ed 05
< ACL Data TX: Handle 129 flags 0x00 dlen 10
      L2CAP: Command Reject (0x01) ident 4 len 2
        Reason: Command not understood (0x0000)

Bluetooth: Unknown BR/EDR signaling command 0x16
Bluetooth: Wrong link type (-22)

Fixes: ce60b9231b66 ("Bluetooth: compute LE flow credits based on recvbuf space")
Signed-off-by: Zhang Chen <zhangchen01 at kylinos.cn>
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz at intel.com>
DeltaFile
+4-0net/bluetooth/l2cap_core.c
+4-01 files

Linux/linux a6fc88binclude/linux srcutiny.h, kernel/rcu srcutiny.c

srcu: Use irq_work to start GP in tiny SRCU

Tiny SRCU's srcu_gp_start_if_needed() directly calls schedule_work(),
which acquires the workqueue pool->lock.

This causes a lockdep splat when call_srcu() is called with a scheduler
lock held, due to:

  call_srcu() [holding pi_lock]
    srcu_gp_start_if_needed()
      schedule_work() -> pool->lock

  workqueue_init() / create_worker() [holding pool->lock]
    wake_up_process() -> try_to_wake_up() -> pi_lock

Also add irq_work_sync() to cleanup_srcu_struct() to prevent a
use-after-free if a queued irq_work fires after cleanup begins.

Tested with rcutorture SRCU-T and no lockdep warnings.

    [7 lines not shown]
DeltaFile
+18-1kernel/rcu/srcutiny.c
+4-0include/linux/srcutiny.h
+22-12 files