Linux/linux ce1e022 — drivers/of irq.c base.c

Merge tag 'devicetree-fixes-for-7.3-2' of git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux

Pull devicetree fixes from Rob Herring:

 - Fix another case of refcount leaks in of_irq_init()

 - Avoid refcount leak in coreboot node check

 - Fix overlay handling of a root node target path

 - Various error path fixes in the overlay code

* tag 'devicetree-fixes-for-7.3-2' of git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux:
  of/irq: Fix remaining refcount leaks in of_irq_init()
  of: Put coreboot node after compatibility check
  of/overlay: don't create "//" paths for fragments targeting the root
  of/overlay: don't leak fragment references when changeset init fails
  of/overlay: only treat a positive changeset id as registered
  of/overlay: put property on deadprops only after changeset add succeeds
DeltaFile
+13-4drivers/of/overlay.c
+9-1drivers/of/base.c
+2-0drivers/of/irq.c
+24-53 files

Linux/linux 100638f — drivers/cpufreq cpufreq.c intel_pstate.c, include/linux cpufreq.h

Merge tag 'pm-7.3-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm

Pull power management fix from Rafael Wysocki:
 "Restore the previous behavior on systems where the cpufreq pressure
  was not visible in the scheduler and is not expected to be visible
  there.

  It became visible after a change made during the 7.2 development cycle
  that had gone too far"

* tag 'pm-7.3-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
  cpufreq: intel_pstate: Fix max_freq fallback in cpufreq_update_pressure()
DeltaFile
+10-0drivers/cpufreq/intel_pstate.c
+2-2drivers/cpufreq/cpufreq.c
+3-0include/linux/cpufreq.h
+15-23 files

Linux/linux bd35955 — arch/x86/crypto aesni-intel_glue.c, crypto aes.c

Merge tag 'libcrypto-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ebiggers/linux

Pull crypto library fixes from Eric Biggers:

 - Fix a performance regression in certain AES encryption modes on
   certain architectures, introduced this cycle

 - Fix a small performance regression in the x86_64 optimized AES-GCM
   code, introduced in 6.15

* tag 'libcrypto-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ebiggers/linux:
  crypto: aes - Fix undesired override of some optimized AES modes
  crypto: x86/aes-gcm - fix always true check for last AAD segment
DeltaFile
+47-4crypto/aes.c
+1-1arch/x86/crypto/aesni-intel_glue.c
+48-52 files

Linux/linux a940b03 — arch/arm64/kvm mmu.c, arch/x86/kvm/svm svm.c sev.c

Merge tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm

Pull kvm fixes from Paolo Bonzini:
 "The most intrusive change is reverting a commit from 7.3-rc1 that made
  struct kvm a bit too large, and fixing the same issue otherwise.

  There are again a lot of selftests lines; the sheer number of commits
  is not small but I don't expect much more for 7.3 due to people
  travelling to Plumbers next week.

  ARM:

   - Take a reference on the last IRQ loaded into an LR to prevent it
     from being freed while running the guest (Marc Zyngier)

   - Ensure that the ITS MOVALL command only affects LPIs that were
     previously affined to the source redistributor (Marc Zyngier)

   - Fix + test for honoring the host's trap configuration when running

    [55 lines not shown]
DeltaFile
+222-0tools/testing/selftests/kvm/x86/nested_x2apic_test.c
+184-0tools/testing/selftests/kvm/arm64/hidden_features.c
+29-28arch/x86/kvm/svm/sev.c
+6-41arch/arm64/kvm/mmu.c
+20-23arch/x86/kvm/svm/svm.c
+11-24virt/kvm/kvm_main.c
+472-11618 files not shown
+554-16524 files

Linux/linux f9bfc32 — arch/arm64/kvm mmu.c, arch/arm64/kvm/hyp/include/nvhe pkvm.h

Merge tag 'kvmarm-fixes-7.3-2' of https://git.kernel.org/pub/scm/linux/kernel/git/kvmarm/kvmarm into HEAD

KVM/arm64 fixes for 7.3, round #2

 - Take a reference on the last IRQ loaded into an LR to prevent it
   from being freed while running the guest (Marc Zyngier)

 - Ensure that the ITS MOVALL command only affects LPIs that were
   previously affined to the source redistributor (Marc Zyngier)

 - Fix + test for honoring the host's trap configuration when running
   non-protected VMs while KVM is in protected mode (Fuad Tabba)

 - Use the host stage-1 mapping granularity for VM_PFNMAP mappings at
   stage-2 (Mostafa Saleh)
DeltaFile
+184-0tools/testing/selftests/kvm/arm64/hidden_features.c
+6-41arch/arm64/kvm/mmu.c
+16-9arch/arm64/kvm/hyp/nvhe/pkvm.c
+16-5arch/arm64/kvm/vgic/vgic.c
+8-4arch/arm64/kvm/vgic/vgic-its.c
+9-0arch/arm64/kvm/hyp/include/nvhe/pkvm.h
+239-595 files not shown
+252-6911 files

Linux/linux 71cc2c6 — arch/arm64/kvm mmu.c

KVM: arm64: Use stage-1 leaf size for VM_PFNMAP

When commit 2aa53d68cee6 ("KVM: arm64: Try stage2 block mapping for
host device MMIO") added VM_PFNMAP support to get_vma_page_shift(),
stage-1 page tables did not support huge PFNMAP (as in VFIO-PCI
vfio_pci_mmap_huge_fault()) and transparent_hugepage_adjust() was
unsafe for MMIO as it dereferenced struct page.

Since commit 6011cf68c885 ("KVM: arm64: Walk userspace page tables to
compute the THP mapping size"), transparent_hugepage_adjust() instead
walks the host stage-1 page tables via get_user_mapping_size() without
touching struct page. Meanwhile, commit 3e509c9b03f9 ("mm/arm64:
support large pfn mappings") enabled stage-1 huge PFNMAP.

So. we can drop the VMA-based VM_PFNMAP size calculation in
get_vma_page_shift() and let transparent_hugepage_adjust() derive
the stage-2 mapping size directly from the populated stage-1 leaf
for non-cacheable mappings as well.


    [6 lines not shown]
DeltaFile
+6-41arch/arm64/kvm/mmu.c
+6-411 files

Linux/linux d24e8ac — drivers/net/ethernet/stmicro/stmmac stmmac_main.c, net/core dev.c

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

Pull networking fixes from Paolo Abeni:
 "Including fixes from Bluetooth, WiFi and netfilter.

  We are actively retargeting several non-urgent fixes towards next,
  but the traffic on the ML looks ever-increasing, and propagating the
  push-back towards subsystems is not immediate.

  No known outstanding regressions.

  Current release - regressions:

   - netfilter: nft_set_rbtree: skip transaction elements during GC

  Previous releases - regressions:

   - sched: cls_api: reclaim an empty proto on the error path


    [59 lines not shown]
DeltaFile
+378-0tools/testing/selftests/net/udp_splice_checksum.c
+117-23net/ipv6/seg6_local.c
+81-8net/mac80211/rc80211_minstrel_ht.c
+49-34drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
+55-23net/core/dev.c
+70-0net/mac80211/status.c
+750-88105 files not shown
+1,442-345111 files

Linux/linux 703033e — kernel sysctl.c, kernel/time jiffies.c

Merge tag 'sysctl-7.03-fixes-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/sysctl/sysctl

Pull sysctl fixes from Joel Granados:
 "Fix sysctl jiffies conversions errors introduced in 2dc164a48e6f
  ("sysctl: Create converter functions with two new macros")

   - Ensure that mult_hz does *not* wrap

   - Ensure we pass just the magnitude for the negative branch in
     proc_int_k2u_conv_kop"

* tag 'sysctl-7.03-fixes-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/sysctl/sysctl:
  time/jiffies: Saturate in mult_hz() instead of wrapping
  sysctl: Negate before converting in the int read path
DeltaFile
+1-1kernel/sysctl.c
+2-0kernel/time/jiffies.c
+3-12 files

Linux/linux e23a64e — net/mac80211 iface.c, net/netfilter nf_nat_core.c nft_flow_offload.c

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

Pablo Neira Ayuso says:

====================
Netfilter/IPVS fixes for net

The following batch contains Netfilter fixes for net. This batch
fixes crashes as recent feature regression, one of the due to a
dependency that has been pulled into -stable:

1) Expand existing ipset fix for bitmap sets to disallow comments
   updates from kernel-side adds, from Florian Westphal.

2) Drop flowtable reference if nf_ct_netns_get() fails, otherwise
   flowtable cannot ever be removed, from Aohan Mei.

3) nft_rbtree GC should collect end elements that contained in
   this transaction batch, new or deleted elements are never

    [44 lines not shown]
DeltaFile
+30-3net/netfilter/ipvs/ip_vs_sync.c
+5-9net/netfilter/nf_flow_table_offload.c
+6-1net/netfilter/nft_flow_offload.c
+6-1net/netfilter/nf_flow_table_core.c
+7-0net/mac80211/iface.c
+3-2net/netfilter/nf_nat_core.c
+57-1610 files not shown
+81-1916 files

Linux/linux 6e0022b — drivers/net/phy/aquantia aquantia_main.c

net: phy: aquantia: fix system interface type not updated in forced mode

aqr_gen1_read_status() decodes the MDIO_PHYXS_VEND_IF_STATUS register
to determine which SerDes interface the PHY is currently using on its
system side and stores the result in phydev->interface. phylink relies
on this value to configure the MAC.

The autoneg == AUTONEG_DISABLE check is not correct:
MDIO_PHYXS_VEND_IF_STATUS is set by the PHY firmware based on the
negotiated link speed, not based on whether autoneg was used to reach
it. When the link comes up at 1G in forced mode, the register correctly
reads SGMII, but the early return prevents phydev->interface from being
updated. It stays at whatever value it held before (typically 2500BASE-X
from the initial autoneg run), so phylink configures the MAC for the
wrong interface and the link cannot come up.

Remove the autoneg guard so that the system interface type is always
decoded when the link is up.


    [5 lines not shown]
DeltaFile
+4-1drivers/net/phy/aquantia/aquantia_main.c
+4-11 files

Linux/linux 5cd9813 — kernel audit_tree.c

Merge tag 'audit-pr-20260930' of git://git.kernel.org/pub/scm/linux/kernel/git/pcmoore/audit

Pull audit fix from Paul Moore:
 "A single audit fix for a potential UAF error in some audit filter
  configurations"

* tag 'audit-pr-20260930' of git://git.kernel.org/pub/scm/linux/kernel/git/pcmoore/audit:
  audit: fix exe mark UAF in kill_rules()
DeltaFile
+26-10kernel/audit_tree.c
+26-101 files

Linux/linux 7375d38 — drivers/net/usb qmi_wwan.c

net: usb: qmi_wwan: add Rolling Wireless RN947R

Add Rolling Wireless RN947R 0x9300 composition:

DIAG + ADB + NMEA + MODEM + RMNET + QDSS + ADPL

T:  Bus=01 Lev=01 Prnt=01 Port=02 Cnt=02 Dev#=  6 Spd=480  MxCh= 0
D:  Ver= 2.10 Cls=ef(misc ) Sub=02 Prot=01 MxPS=64 #Cfgs=  1
P:  Vendor=33f8 ProdID=9300 Rev= 0.00
S:  Manufacturer=Rolling Wireless
S:  Product=RN947R
S:  SerialNumber=xxxxxxxxxxx
C:* #Ifs= 7 Cfg#= 1 Atr=a0 MxPwr=500mA
I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=30 Driver=option
E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
I:* If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=42 Prot=01 Driver=usbfs
E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms

    [20 lines not shown]
DeltaFile
+1-0drivers/net/usb/qmi_wwan.c
+1-01 files

Linux/linux 8f1c2a1 — drivers/net/ethernet/marvell mvneta.c, include/net xdp.h

net: mvneta: clear XDP pfmemalloc flag between frames

mvneta_swbm_add_rx_fragment() sets XDP_FLAGS_FRAGS_PF_MEMALLOC on the
xdp_buff when a fragment page is a pfmemalloc one (page under memory
pressure). The xdp_buff is reused for the next frame, but only the
XDP_FLAGS_HAS_FRAGS bit was cleared at frame start, so the pfmemalloc
bit leaked from one frame into the following ones. mvneta_swbm_build_skb()
propagates the flag to skb->pfmemalloc through xdp_update_skb_frags_info(),
so the skb of a subsequent fragmented frame could be wrongly marked as
pfmemalloc even if none of its pages are under pressure.

Clear all the xdp_buff flags in mvneta_swbm_rx_frame(), which is invoked
for each new frame, instead of just the XDP_FLAGS_HAS_FRAGS bit.

Fixes: ed7a58cb40bd ("net: marvell: rely on xdp_update_skb_shared_info utility routine")
Reviewed-by: Simon Horman <horms at kernel.org>
Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi at oss.qualcomm.com>
Reviewed-by: Toke Høiland-Jørgensen <toke at redhat.com>
Link: https://patch.msgid.link/20260929-mvneta-xdp-clear-frag-fix-v4-1-1e63b25eeed8@oss.qualcomm.com
Signed-off-by: Jakub Kicinski <kuba at kernel.org>
DeltaFile
+5-0include/net/xdp.h
+1-1drivers/net/ethernet/marvell/mvneta.c
+6-12 files

Linux/linux 8ec454d — net/ipv6 seg6_iptunnel.c

ipv6: sr: use skb_get_hash_net() in seg6_make_flowlabel()

Since commit d58e468b1112 ("flow_dissector: implements flow dissector
BPF hook") __skb_flow_dissect() needs a net pointer, either from
skb->dev, skb->sk, or since commit 3cbf4ffba5ee ("net: plumb network
namespace into __skb_flow_dissect") a caller provided pointer.

syzbot was able to reach seg6_make_flowlabel() with an skb having
neither skb->dev nor skb->sk set: a TIPC UDP bearer sends a discovery
message through an IPv4 route using seg6 encap, while
net.ipv6.seg6_flowlabel is set to 1.

seg6_make_flowlabel() already has a net pointer, use skb_get_hash_net().

WARNING: net/core/flow_dissector.c:1131 at __skb_flow_dissect+0x910/0x5368 net/core/flow_dissector.c:1126, CPU#0: syz.0.17/4930
Call trace:
  __skb_flow_dissect+0x910/0x5368 net/core/flow_dissector.c:1126 (P)
  __skb_get_hash_net+0xe0/0x29c net/core/flow_dissector.c:1903
  skb_get_hash include/linux/skbuff.h:1663 [inline]

    [26 lines not shown]
DeltaFile
+1-1net/ipv6/seg6_iptunnel.c
+1-11 files

Linux/linux 7b97273 — drivers/net/ethernet/mellanox/mlx5/core/en xdp.c

net/mlx5e: Fix AF_XDP TX timestamp teardown NULL dereference

During XSK TX queue teardown, outstanding descriptors are completed
without a CQE. If one requested a TX timestamp, the completion path
passes that NULL CQE to mlx5e_xsk_fill_timestamp(), which dereferences
it.

Return zero when no CQE is available, indicating that teardown did not
produce a TX timestamp.

Fixes: ec706a860eba ("net/mlx5e: Implement AF_XDP TX timestamp and checksum offload")
Signed-off-by: Prathamesh Deshpande <prathameshdeshpande7 at gmail.com>
Reviewed-by: Tariq Toukan <tariqt at nvidia.com>
Link: https://patch.msgid.link/20260926165402.5902-1-prathameshdeshpande7@gmail.com
Signed-off-by: Jakub Kicinski <kuba at kernel.org>
DeltaFile
+3-0drivers/net/ethernet/mellanox/mlx5/core/en/xdp.c
+3-01 files

Linux/linux 3cdeaef — drivers/net/ethernet/realtek r8169_main.c

r8169: disable EEE on RTL8168h/8111h

Force EEE off on the RTL8168h/8111h (RTL_GIGA_MAC_VER_46) at PHY connect
with phy_disable_eee().

Commit 202fef9bbbf5 ("net: phy: realtek: fix EEE advertisement write on
the internal PHY MMD path") made EEE actually advertise on the generic
Realtek PHY; the write had been a no-op before. On the RTL8168h that
un-masks a latent defect: once EEE negotiates, RX silently stalls after
~7-20 minutes. The carrier stays up, no counter or dmesg moves, and only
"ip link set down/up" recovers it; disabling EEE keeps the link stable.

Root-causing the RTL8168h LPI/RX path needs hardware not available now, so
disable EEE for this version. Use phy_disable_eee() rather than dropping
the version from rtl_supports_eee(): the latter also skips
rtl_enable_tx_lpi(), whose disable branch clears the MAC TX-LPI bits (ERI
0x1b0[1:0]) on link up. rtl_hw_start_8168h_1() does not clear them (the
RTL8402/RTL8106e init does), so a warm reboot from an EEE-active state
could otherwise leave TX-LPI asserted while the PHY no longer negotiates

    [10 lines not shown]
DeltaFile
+6-0drivers/net/ethernet/realtek/r8169_main.c
+6-01 files

Linux/linux 9e79290 — drivers/net/ethernet/marvell/octeontx2/nic otx2_common.c

octeontx2-pf: Fix RSS indirection table size

The conversion to the dedicated RSS context operations replaced the
pointer to struct otx2_rss_ctx with an inline u32 ind_tbl[] array.
However, otx2_rss_init() still uses sizeof(*rss->ind_tbl) to set rss_size.
This now yields the size of one u32 (4), rather than the 256 entries in
the indirection table.

The RSS initialization and hardware programming loops use rss_size,
so only four entries are initialized and programmed despite the NIX LF
being allocated a 256-entry table. On an OCTEON CN102 with eight RX
queues, the table contained 0, 1, 2, 3 followed by zeros. Traffic was
concentrated on queue 0 and ethtool -X equal 8 did not correct the table.

Use ARRAY_SIZE() to count the indirection table entries. On the same
hardware, this restores the full table repeating queue numbers 0 through
7, and bidirectional multi-flow traffic increments multiple RX queues.

Runtime testing on an Asterfusion ET2500 (OCTEON CN102 A0).

    [8 lines not shown]
DeltaFile
+1-1drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.c
+1-11 files

Linux/linux 4f1da63 — net/sctp socket.c

sctp: check RCV_SHUTDOWN after the sendmsg connect wait

sctp_wait_for_connect() drops the socket lock while it sleeps. An
out-of-the-blue ABORT can then be processed from the socket backlog and
unlink the association. If a concurrent shutdown(fd, SHUT_RD) sets
RCV_SHUTDOWN, the waiter breaks with err == 0 before checking
asoc->base.dead. Its final sctp_association_put() can then free the
association, leaving sctp_sendmsg_to_asoc() to continue with a dangling
pointer.

Check RCV_SHUTDOWN along with the wait error in sctp_sendmsg_to_asoc()
before using the association again. The check only accesses the socket,
so it needs no additional association reference. Return the existing
-ESRCH so that sctp_sendmsg() skips freeing a new association that may
already have been destroyed.

Keep sctp_wait_for_connect() unchanged to preserve its behavior for the
connect() caller.


    [7 lines not shown]
DeltaFile
+1-1net/sctp/socket.c
+1-11 files

Linux/linux 5642b16 — drivers/net/ethernet/microchip/sparx5 sparx5_netdev.c sparx5_main.h

net: sparx5: make ports inherit the switch base mac address type

When the switch uses a random base MAC address it does not mark each
port's address as random:

  $ dmesg | grep "MAC addr"
  sparx5-switch e00c0000.switch: MAC addr was not set, use random MAC
  $ cat /sys/class/net/eth0/addr_assign_type
  0

0 is NET_ADDR_PERM, so userspace thinks this is a stable address.

With a random MAC reported as NET_ADDR_PERM, systemd's
MACAddressPolicy=persistent [1] leaves it unchanged, so a DHCP client
gets a new IP address every boot and a static reservation can't be used.
Reporting it as NET_ADDR_RANDOM makes systemd replace it with a stable
address derived from the interface name and machine-id.

Fixes: f3cad2611a77 ("net: sparx5: add hostmode with phylink support")

    [5 lines not shown]
DeltaFile
+1-0drivers/net/ethernet/microchip/sparx5/sparx5_netdev.c
+1-0drivers/net/ethernet/microchip/sparx5/sparx5_main.h
+1-0drivers/net/ethernet/microchip/sparx5/sparx5_main.c
+3-03 files

Linux/linux 3072454 — drivers/of irq.c

of/irq: Fix remaining refcount leaks in of_irq_init()

Successfully initialized controllers are moved to intc_parent_list,
but the final cleanup only frees the descriptors. The device node
references taken with of_node_get() and the interrupt parent
references are therefore leaked on the normal return path. Drop both
before kfree(), as the intc_desc_list cleanup already does.

Fixes: 8363ccb917c6 ("of/irq: add missing of_node_put")
Cc: stable at vger.kernel.org
Signed-off-by: Wentao Liang <vulab at iscas.ac.cn>
Link: https://patch.msgid.link/20260917124247.2151674-1-vulab@iscas.ac.cn
Signed-off-by: Rob Herring (Arm) <robh at kernel.org>
DeltaFile
+2-0drivers/of/irq.c
+2-01 files

Linux/linux be35a3e — drivers/net/wireless/intersil/p54 fwio.c, net/mac80211 mesh_pathtbl.c tx.c

Merge tag 'wireless-2026-09-30' of https://git.kernel.org/pub/scm/linux/kernel/git/wireless/wireless

Johannes Berg says:

====================
Still more fixes coming in, notably:
 - ath11k: avoid running out of stations on HW restart
 - mac80211:
   - drop too large fragmented MPDUs
   - mesh path handling fixes
   - validation improvements
   - reject CSA with bad 320 MHz bandwidth
 - cfg80211: fix RTS for single radio devices

* tag 'wireless-2026-09-30' of https://git.kernel.org/pub/scm/linux/kernel/git/wireless/wireless: (27 commits)
  wifi: mac80211: fix slab-out-of-bounds read in ieee80211_monitor_select_queue()
  wifi: mac80211: reject invalid 320 MHz CSA bandwidth
  wifi: mac80211: set info->band for 802.3 encap offload frames
  wifi: mac80211: prevent AP VLAN tx from other interfaces

    [21 lines not shown]
DeltaFile
+81-8net/mac80211/rc80211_minstrel_ht.c
+70-0net/mac80211/status.c
+41-9net/mac80211/chan.c
+31-14net/mac80211/tx.c
+37-5drivers/net/wireless/intersil/p54/fwio.c
+25-5net/mac80211/mesh_pathtbl.c
+285-4123 files not shown
+395-9929 files

Linux/linux 77f21a5 — drivers/of base.c

of: Put coreboot node after compatibility check

of_find_compatible_node() returns a referenced device node, but
EXCLUDED_DEFAULT_CELLS_PLATFORMS used the result only as a boolean and
discarded the reference. This leaked a reference each time the
address-cells or size-cells warning condition was evaluated on a
coreboot system.

Use a helper that checks for the coreboot node with a scoped reference,
so the reference is dropped once the check is done.

Fixes: 8600058ba28a7 ("of: Add coreboot firmware to excluded default cells list")
Signed-off-by: Yuho Choi <oss.patchbox at gmail.com>
Link: https://patch.msgid.link/20260924011358.734722-1-oss.patchbox@gmail.com
Signed-off-by: Rob Herring (Arm) <robh at kernel.org>
DeltaFile
+9-1drivers/of/base.c
+9-11 files

Linux/linux 572af68 — crypto aes.c

crypto: aes - Fix undesired override of some optimized AES modes

The new library APIs for AES encryption modes were wired up to the
traditional crypto API via crypto/aes.c.  However, for now the kernel is
still in a transitional state where various architectures still have
architecture-optimized implementations of AES modes in arch/*/crypto/,
wired up to the traditional crypto API only.  Because of that, the
crypto/aes.c algorithms were given a cra_priority of only 110 to prevent
them from overriding arch/*/crypto/ in the traditional crypto API.

However, because of how the traditional crypto API works, the
cra_priority trick doesn't work in cases where the relevant algorithm
isn't directly implemented by arch/*/crypto/ but rather is provided by a
template instance using other code in arch/*/crypto/.

For example, x86 doesn't have its own "ccm(aes)" but rather relies on
the "ccm" template constructing it from the x86-optimized "ctr(aes)".
The existence of the library-based "ccm(aes)" prevents that, even though
its priority is lower than what the template would produce.

    [21 lines not shown]
DeltaFile
+47-4crypto/aes.c
+47-41 files

Linux/linux 99b43ed — drivers/net/ethernet/microchip/vcap vcap_api.c

net: microchip: vcap: stop scanning after deleting key field

The only call outside the KUnit tests is in
sparx5_tc_add_rule_copy(), which passes a fixed key list with no
duplicate entries. Therefore, the potential double-free is not
currently reachable in tree.

However, vcap_filter_rule_keys() is exported and does not require its
key list entries to be unique. If a future or external caller supplies
the same key at another position that the inner loop visits, it calls
list_del() and kfree() a second time on the freed field, leading to a
potential double-free.

Break the inner loop after removing a matching field. The outer safe
list traversal continues to process the remaining rule fields.

Fixes: 465a38a269e9 ("net: microchip: sparx5: Support for copying and modifying rules in the API")
Reported-by: Dan Carpenter <error27 at gmail.com>
Closes: https://lore.kernel.org/all/ahs-lCAXXikkaHky@stanley.mountain/

    [3 lines not shown]
DeltaFile
+1-1drivers/net/ethernet/microchip/vcap/vcap_api.c
+1-11 files

Linux/linux 747928b — net/netfilter nft_flow_offload.c

netfilter: nft_flow_offload: drop flowtable reference on init error path

nft_flow_offload_init() bumps the flowtable use count with
nft_use_inc() before calling nf_ct_netns_get().  When the latter
fails, the error is returned as-is and the reference is leaked.

The upper layers do not balance it either: nf_tables_newexpr()
clears expr->ops when the expression init callback fails, so the
nft_expr_more() iteration in nft_rule_expr_deactivate() and
nf_tables_rule_destroy() stops right before the failed expression
and its ->destroy callback, which would drop the reference, never
runs.

Each failed rule addition therefore leaks one flowtable reference
and the flowtable can no longer be removed: NFT_MSG_DELFLOWTABLE
keeps reporting -EBUSY even though no rule references it.

Save the nf_ct_netns_get() return value and undo the nft_use_inc()
when it fails, restoring the inc/dec pairing within

    [8 lines not shown]
DeltaFile
+6-1net/netfilter/nft_flow_offload.c
+6-11 files

Linux/linux 16d4640 — net/netfilter nf_nat_bpf.c nf_nat_core.c

netfilter: bpf: reject invalid NAT manipulation types

As bpf_ct_set_nat_info() is not validating the NAT manipulation type a
wrong value can be passed directly to nf_nat_setup_info(). This triggers
the WARN_ON() at nf_nat_setup_info() and if panic_on_warn isn't set,
then IPS_SRC_NAT_DONE is set without adding nat_bysource and conntrack
cleanup tries to unlink an uninitialized hlist node.

Fix this by checking that NAT manipulation type is correct before
calling nf_nat_setup_info(). In addition, if the WARN_ON is hit, return
NF_DROP instead of continuing with the processing to avoid similar
situations in the future.

Reported-by: VEGA <vega at nebusec.ai>
Fixes: 0fabd2aa199f ("net: netfilter: add bpf_ct_set_nat_info kfunc helper")
Signed-off-by: Fernando Fernandez Mancera <fmancera at suse.de>
Signed-off-by: Pablo Neira Ayuso <pablo at netfilter.org>
DeltaFile
+3-2net/netfilter/nf_nat_core.c
+3-0net/netfilter/nf_nat_bpf.c
+6-22 files

Linux/linux 7c549fb — include/net/netfilter nf_flow_table.h, net/netfilter nf_flow_table_core.c nf_flow_table_offload.c

netfilter: flowtable: generalize pending status bit

Rename NF_FLOW_HW_PENDING to NF_FLOW_PENDING and use it to inhibit the
flowtable GC worker until pending hw offload work has been completed.

Apparently, nf_flow_offload_stats() can schedule work to retrieve stats
while the flow is being removed by GC.

And this bit can also be used in a follow up patch to disable GC until
the flow has been fully added in both directions.

Revert the reordering done in commit d644b23afe1e ("netfilter:
flowtable: publish HW_DEAD after worker is done") to prevent a race
between GC and hw offload handler.

Fixes: 2c8897953f3b ("netfilter: flowtable: Add pending bit for offload work")
Signed-off-by: Pablo Neira Ayuso <pablo at netfilter.org>
DeltaFile
+5-9net/netfilter/nf_flow_table_offload.c
+6-1net/netfilter/nf_flow_table_core.c
+1-1net/sched/act_ct.c
+1-1include/net/netfilter/nf_flow_table.h
+13-124 files

Linux/linux 3ae37ea — include/linux netdevice.h, net/mac80211 iface.c

netfilter: flowtable: restore ieee80211 forward path

Before commit 871df5007eda ("netfilter: flowtable: bail out if forward
path cannot be discovered"), there was a fallback to set up a forward
path in case .ndo_fill_forward_path fails or DEV_PATH_MTK_WDMA was used.
Such fallback was used by commit d787a3e38f01 ("mac80211: add support
for .ndo_fill_forward_path").

One possibility is to handle DEV_PATH_MTK_WDMA from the flowtable
forward path discovery. However, this is only used internally by drivers
to retrieve mtk_wdma information to set up hardware offload. Felix
decided to use the .fill_forward_path interface for this purpose due to
the lack of a better interface at that time.

Add a new DEV_PATH_IEEE80211 path which is offered if the new ieee80211
flag is set on in the struct net_device_path_ctx to restore the
flowtable with a ieee80211 netdevice. Handle this new DEV_PATH_IEEE80211
path just like DEV_PATH_ETHERNET and DEV_PATH_DSA, ie. this is the last
netdevice in the stack.

    [6 lines not shown]
DeltaFile
+7-0net/mac80211/iface.c
+3-0net/netfilter/nf_flow_table_path.c
+3-0include/linux/netdevice.h
+13-03 files

Linux/linux 86b6471 — net/netfilter nft_set_rbtree.c

netfilter: nft_set_rbtree: skip transaction elements during GC

Since nft_set_commit_update() runs set commit callbacks before processing
NEWSETELEM transactions, nft_rbtree_gc_scan() can observe elements added by
the transaction being committed.

The scan records an interval end in rbe_end without checking the element's
transaction state. A later, unrelated expired start then moves both
elements to the expired list. The synchronous GC queue can free the new end
element before the transaction subsequently activates it, causing a
use-after-free.

Only consider elements that are fully active in both generations. This
keeps transaction-state elements out of the GC scan and preserves interval
pairing across skipped elements.

KASAN reports:

  BUG: KASAN: slab-use-after-free in nft_setelem_activate

    [16 lines not shown]
DeltaFile
+2-0net/netfilter/nft_set_rbtree.c
+2-01 files

Linux/linux bdac177 — net/netfilter/ipvs ip_vs_lblc.c

ipvs: fix missing counter decrement in lblc

LBLC may delete cache entries for destinations that are
removed or overloaded and replace them with available ones.
But ip_vs_lblc_new() forgets to decrement the tbl->entries
counter after calling ip_vs_lblc_del(). This can lead to
increased shrinking of the cache with every new garbage
collection.

Fixes: 2f3d771a35fe ("ipvs: do not use dest after ip_vs_dest_put in LBLC")
Link: https://sashiko.dev/#/patchset/0bdd5abe9968ded7ca2b9cb6844ba83d94cc8d53.1787318053.git.zhilinz%40nebusec.ai
Signed-off-by: Julian Anastasov <ja at ssi.bg>
Signed-off-by: Pablo Neira Ayuso <pablo at netfilter.org>
DeltaFile
+1-0net/netfilter/ipvs/ip_vs_lblc.c
+1-01 files