Linux/linux af32da4 — drivers/net/ethernet/broadcom/bnxt bnxt.c, drivers/net/ethernet/intel/iavf iavf_virtchnl.c

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

Pull networking fixes from Jakub Kicinski:
 "Including fixes from wireless, wireguard, CAN and Bluetooth.
  We have one known regression to wrap up in VLAN handling.

  Current release - regressions:

   - Bluetooth: RFCOMM: fix deadlock on rfcomm_mutex

  Previous releases - regressions:

   - can: fix regression in handling RPS after migrating metadata to skb_ext

   - eth:
      - iavf: fix regressions in reconfig impacting bonding
      - mana: fix packet forwarding performance regression
      - stmmac: remove buggy VLAN acceleration support


    [37 lines not shown]
DeltaFile
+125-74drivers/net/ethernet/broadcom/bnxt/bnxt.c
+136-0tools/testing/selftests/net/tun.c
+88-46drivers/net/wireless/mediatek/mt76/mt792x_acpi_sar.c
+95-39net/bluetooth/rfcomm/core.c
+126-0lib/dim/dim_kunit.c
+89-10drivers/net/ethernet/intel/iavf/iavf_virtchnl.c
+659-169143 files not shown
+2,074-824149 files

Linux/linux 37f1244 — drivers/net/ethernet/cadence macb_main.c

Merge branch 'net-macb-fix-software-fcs-handling-of-shared-and-requeued-skbs'

Nicolai Buchwitz says:

====================
net: macb: fix software FCS handling of shared and requeued skbs

While testing the genet MTU series I used a Raspberry Pi CM5 (RP1 GEM)
as pktgen source for the CM4. With clone_skb the CM5 rebooted after a
few seconds. Further investigation showed that macb_pad_and_fcs()
appends the FCS in place, so the shared skb grows with every transmit
until BQL completes more than was queued and dql_completed() hits its
BUG_ON.

The same code also modifies the skb before the TX ring check, so a
NETDEV_TX_BUSY retry gets an skb that was already replaced or grown.

Patch 1 checks the ring first, patch 2 copies shared skbs.


    [6 lines not shown]
DeltaFile
+49-31drivers/net/ethernet/cadence/macb_main.c
+49-311 files

Linux/linux 6b48ed8 — drivers/net/ethernet/cadence macb_main.c

net: macb: check TX ring before modifying skb

macb_pad_and_fcs() replaces or extends the skb before the ring space
check. On NETDEV_TX_BUSY the stack requeues an skb that is already freed
or grown.

Check the ring first, using the padded length for the descriptor count.
Nonlinear skbs always take the copy path so the count can assume a
linear skb.

Fixes: 653e92a9175e ("net: macb: add support for padding and fcs computation")
Signed-off-by: Nicolai Buchwitz <nb at tipi-net.de>
Link: https://patch.msgid.link/20261006-nb-macb-shared-skb-net-v1-1-a80641479041@tipi-net.de
Signed-off-by: Jakub Kicinski <kuba at kernel.org>
DeltaFile
+46-30drivers/net/ethernet/cadence/macb_main.c
+46-301 files

Linux/linux 9151d6c — drivers/net/ethernet/cadence macb_main.c

net: macb: copy shared skbs before appending the FCS

macb_pad_and_fcs() appends the FCS in place when the skb has tailroom.
A shared skb, as pktgen sends in clone_skb mode, grows by one FCS per
transmit. BQL then completes more bytes than were queued and
dql_completed() hits its BUG_ON.

On a Raspberry Pi CM5 (RP1 GEM) pktgen with clone_skb 1000 burst 32 at
60 bytes kills the box within seconds.

Copy shared skbs before appending the FCS. Clearing IFF_TX_SKB_SHARING
would also fix it but makes pktgen refuse clone_skb on macb.

Fixes: 653e92a9175e ("net: macb: add support for padding and fcs computation")
Signed-off-by: Nicolai Buchwitz <nb at tipi-net.de>
Link: https://patch.msgid.link/20261006-nb-macb-shared-skb-net-v1-2-a80641479041@tipi-net.de
Signed-off-by: Jakub Kicinski <kuba at kernel.org>
DeltaFile
+4-2drivers/net/ethernet/cadence/macb_main.c
+4-21 files

Linux/linux 7c24a4e — net/vmw_vsock af_vsock.c

vsock: Fix memory leak in vmci_transport_recv_dgram_cb()

During the closure of a datagram socket, the vmci_transport_recv_dgram_cb()
function may be called, which will add the packets
to the socket's backlog; then, after the receive queue is cleared,
the __release_sock() function will move the packet back from the socket's
backlog to the receive queue, which will lead to a memory leak.

sock_close
  __sock_release
    __vsock_release
      // take ownership by user-space
      lock_sock_nested
      sock_set_flag(sk, SOCK_DEAD)
      vmci_transport_release
                                      vmci_dispatch_dgs
                                        vmci_datagram_invoke_guest_handler
                                          vmci_transport_recv_dgram_cb
                                            sk_receive_skb

    [49 lines not shown]
DeltaFile
+2-0net/vmw_vsock/af_vsock.c
+2-01 files

Linux/linux fe4167b — drivers/net/wireguard queueing.h noise.c

Merge branch 'wireguard-fixes-for-7-3-rc7'

Jason A. Donenfeld says:

====================
WireGuard fixes for 7.3-rc7

This series contains two important WireGuard fixes

1) Stop zeroing out skb->tstamp_type when encapsulating packets, so that
   fq behaves correctly, from Ramses de Norre.

2) Make sure handshake state isn't swapped out while locks are
   released, reported by Jérémy Jean.
====================

Link: https://patch.msgid.link/20261008130124.724119-1-Jason@zx2c4.com
Signed-off-by: Jakub Kicinski <kuba at kernel.org>
DeltaFile
+4-3drivers/net/wireguard/noise.c
+2-0drivers/net/wireguard/queueing.h
+6-32 files

Linux/linux 65ab9de — drivers/net/wireguard queueing.h

wireguard: queueing: preserve tstamp_type when encapsulating packet

Sending traffic through a wireguard tunnel on a host using the fq
qdisc fills the log with:

  fq: likely mono tstamp with tstamp_type 0

An skb carries a timestamp in skb->tstamp and, separately, a
skb->tstamp_type field recording which clock that timestamp came from.
The two have to agree.

When wireguard encapsulates a packet it calls wg_reset_packet(), which
clears the fields that must not leak from the inner packet into the
tunnel packet. It does so in two steps:

  skb_scrub_packet(skb, true);
  memset(&skb->headers, 0, sizeof(skb->headers));

skb_scrub_packet() deliberately keeps skb->tstamp when it holds a

    [25 lines not shown]
DeltaFile
+2-0drivers/net/wireguard/queueing.h
+2-01 files

Linux/linux d0305f8 — drivers/net/wireguard noise.c

wireguard: noise: reject response consumption after intermediate initiation

Two threads begin processing the identical response message, received
twice. The first thread, A, runs. While it's running, the second one,
B, gets partway through, and during that slow calculation, or even while
blocking on down_write(), A completes and then also a handshake
initiation that's already been queued up runs in thread C, which itself
takes that same down_write(). The handshake initiation creation
succeeds, and sets the state back to waiting-for-response, and calls
up_write(), at which point thread B resumes, because either its finished
its calculations or was finally allowed to acquire down_write(). Thread
B then copies the state back to the peer, and begins a new session,
using that state, which is the same session as the one made in thread A.

Thread A                        Thread B                        Thread C

down_read()
 sA = handshake->state
 memcpy(cA, handshake->crypto)

    [49 lines not shown]
DeltaFile
+4-3drivers/net/wireguard/noise.c
+4-31 files

Linux/linux 3c6a4b1 — net/openvswitch actions.c

net: openvswitch: validate transport header presence in set_ipv6_addr

When executing IPv6 address rewrite actions on IPv6 fragments,
set_ipv6_addr() calls update_ipv6_checksum(). If parse_ipv6hdr()
processes a non-first IPv6 fragment, it sets key->ip.proto to
NEXTHDR_FRAGMENT and returns early without calling
skb_set_transport_header().

update_ipv6_checksum() unconditionally evaluates skb_transport_offset()
on entry before checking l4_proto.  Because skb->transport_header is
uninitialized, this triggers a warning under CONFIG_DEBUG_NET=y although
it is completely harmless.

Fix this by returning early in update_ipv6_checksum() if l4_proto is
NEXTHDR_FRAGMENT. This avoids reading the uninitialized transport offset
for fragments while preserving the debug warning for any other protocol
where the transport header is unexpectedly missing.

See the syzbot trace:

    [33 lines not shown]
DeltaFile
+6-1net/openvswitch/actions.c
+6-11 files

Linux/linux 64a6b36 — net/smc af_smc.c

net/smc: protect clcsock lifetime in smc_getname

smc_getname() dereferences smc->clcsock without holding
clcsock_release_lock. Link-group termination can release the CLC socket
through smc_close_active_abort() while the SMC socket is still open,
for example after shutdown(SHUT_WR).

A getsockname() caller can load smc->clcsock, then the termination worker
can clear the pointer and call sock_release() before the caller accesses
clcsock->ops or invokes getname(). This causes a use-after-free; if the
worker clears the pointer before the load, it causes a NULL dereference.
The syscall's file reference keeps the SMC socket alive but does not
prevent asynchronous release of its CLC socket.

KASAN reported the following with test-only timing instrumentation:

  BUG: KASAN: slab-use-after-free in smc_getname+0x19e/0x1b0
  Read of size 8 at addr ffff888109abb4e0 by task poc/103
  Call Trace:

    [32 lines not shown]
DeltaFile
+6-1net/smc/af_smc.c
+6-11 files

Linux/linux d578802 — net/ipv4 fib_trie.c, net/ipv6 route.c

Merge branch 'ipv4-ipv6-do-not-warn-on-route-notification-size-races'

Daehyeon Ko says:

====================
ipv4/ipv6: do not warn on route notification size races

A nexthop group can grow between route notification sizing and filling.
Both IPv4 and IPv6 can then legitimately return -EMSGSIZE, so remove the
stale warnings while preserving their existing error paths.

Patch 1 is unchanged from v1.  Patch 2 adds the IPv6 counterpart requested
by Ido.  No new build or runtime test was run; both changes only delete the
stale comment and WARN_ON().
====================

Link: https://patch.msgid.link/cover.1791423190.git.4ncienth@gmail.com
Signed-off-by: Jakub Kicinski <kuba at kernel.org>
DeltaFile
+0-2net/ipv6/route.c
+0-2net/ipv4/fib_trie.c
+0-42 files

Linux/linux c97426e — net/ipv6 route.c

ipv6: do not warn on route notification size race

fib6_info_hw_flags_set() sizes the skb with rt6_nlmsg_size() and later
fills it with rt6_fill_node().  With nexthop compatibility mode enabled,
a concurrent replacement can grow the group between these independent
snapshots.  rt6_fill_node() can then legitimately return -EMSGSIZE, so
the warning does not prove a sizing bug.

Remove the warning.  The existing error path still frees the skb and
reports the error to listeners.

Fixes: 907eea486888 ("net: ipv6: Emit notification when fib hardware flags are changed")
Reported-by: Ido Schimmel <idosch at nvidia.com>
Link: https://lore.kernel.org/netdev/20261007114003.GA1011260@shredder/
Suggested-by: Ido Schimmel <idosch at nvidia.com>
Cc: stable at vger.kernel.org
Signed-off-by: Daehyeon Ko <4ncienth at gmail.com>
Link: https://patch.msgid.link/4012604727e5ba80b69ccd4d08796511397ddaef.1791423190.git.4ncienth@gmail.com
Signed-off-by: Jakub Kicinski <kuba at kernel.org>
DeltaFile
+0-2net/ipv6/route.c
+0-21 files

Linux/linux e02a5b6 — net/ipv4 fib_trie.c

ipv4: do not warn on route notification size race

Commit 680aea08e78c ("net: ipv4: Emit notification when fib hardware
flags are changed") added asynchronous route notifications for hardware
flag changes.

fib_alias_hw_flags_set() sizes the skb with fib_nlmsg_size() and later
fills it with fib_dump_info() while holding only RCU.  With nexthop
compatibility mode enabled, a concurrent replacement can grow the group
between these independent snapshots.  fib_dump_info() can then
legitimately return -EMSGSIZE, so the warning does not prove a sizing bug.

Remove the warning.  The existing error path still frees the skb and
reports the error to listeners.

Fixes: 680aea08e78c ("net: ipv4: Emit notification when fib hardware flags are changed")
Reported-by: Ido Schimmel <idosch at nvidia.com>
Link: https://lore.kernel.org/netdev/20261004082043.GB92032@shredder/
Suggested-by: Ido Schimmel <idosch at nvidia.com>

    [4 lines not shown]
DeltaFile
+0-2net/ipv4/fib_trie.c
+0-21 files

Linux/linux 6785011 — include/net ip.h, net/bridge/netfilter nf_conntrack_bridge.c

ipv4: validate checksum_start before completing checksum

If a packet with bad checksum metadata gets into the ipv4 stack,
skb_checksum_help can corrupt the network header and cause a bunch of
mischief.

This was discovered and reported by Paulos, and has been reporoduced
by others independently since.

We really shouldn't allow such packets in, but as a defence
in depth measure, let's also check before we complete the checksum.

A more complete validation at input is forthcoming, but needs more work.

Cc: stable at vger.kernel.org
Fixes: f43798c27684 ("tun: Allow GSO using virtio_net_hdr")
Fixes: bfd5f4a3d605 ("packet: Add GSO/csum offload support.")
Reported-by: Paulos Yibelo <habte.yibelo at gmail.com>
Closes: https://lore.kernel.org/netdev/20260922030310.8684-2-habte.yibelo@gmail.com/

    [4 lines not shown]
DeltaFile
+11-5net/xfrm/xfrm_output.c
+7-3net/ipv4/ip_output.c
+7-3net/bridge/netfilter/nf_conntrack_bridge.c
+7-0net/netfilter/nfnetlink_queue.c
+7-0include/net/ip.h
+5-1net/netfilter/xt_CHECKSUM.c
+44-126 files

Linux/linux f8c8bd1 — drivers/ptp ptp_ocp.c

ptp: ocp: fix PCIe delay estimation calculation

The commit in fixes introduced a high cap for delayas U64_MAX value
while ktime_t is actually s64. This is wrong cap as it becomes negative
value and any comparison to a real delay will fail to update delay
value. Use KTIME_MAX constant as correct max cap for PCIe delay.

The issue was hit in production (a negative value is observed):

  # cat /sys/class/timecard/ocp0/ts_window_adjust
  -3

Fixes: aa05fe67bcd64 ("ptp: ocp: Improve PCIe delay estimation")
Signed-off-by: Vadim Fedorenko <vadim.fedorenko at linux.dev>
Reviewed-by: Daniel Machon <daniel.machon at microchip.com>
Link: https://patch.msgid.link/20261007203359.417270-1-vadim.fedorenko@linux.dev
Signed-off-by: Jakub Kicinski <kuba at kernel.org>
DeltaFile
+1-1drivers/ptp/ptp_ocp.c
+1-11 files

Linux/linux 93ccaf1 — drivers/net xen-netfront.c

xen/netfront: don't leak the skb when xennet_fill_frags() fails

When a response chain has more slots than fit in the skb's frags,
xennet_fill_frags() returns an error and xennet_poll() jumps to its
error path.  That path moves what's left on tmpq to errq to be freed,
but the skb being filled was already dequeued from tmpq, so it's never
freed.  Each chain that overflows leaks the skb and the pages attached
to it as frags, and the backend decides how many slots it sends.

Put the skb back on tmpq before taking the error path, like the
xennet_set_skb_gso() failure just above it does.

Fixes: ad4f15dc2c70 ("xen/netfront: don't bug in case of too many frags")
Cc: stable at vger.kernel.org
Signed-off-by: Josef Bacik <josef at toxicpanda.com>
Reviewed-by: Juergen Gross <jgross at suse.com>
Link: https://patch.msgid.link/20261007-b4-xen-netfront-fill-frags-leak-v1-1-a8a01ff9cd52@toxicpanda.com
Signed-off-by: Jakub Kicinski <kuba at kernel.org>
DeltaFile
+3-1drivers/net/xen-netfront.c
+3-11 files

Linux/linux 513e238 — net/packet af_packet.c

net/packet: call packet_parse_headers after virtio_net_hdr_to_skb

SOCK_RAW packet sockets incorrectly drop VLAN-tagged GSO packets
without VIRTIO_NET_HDR_F_NEEDS_CSUM.

packet_parse_headers() sets skb->protocol to VLAN but advances
skb->network_header past the VLAN tags. virtio_net_hdr_to_skb()
then flow dissects these packets, which parses the network header as a
VLAN tag, and fails.

Call packet_parse_headers() after virtio_net_hdr_to_skb() instead.

This matches tun_get_user() and tap_get_user() and thus simplifies
overall complexity.

Commit 01fdecc0480d ("net: packet: fix wrong transport_header when
sending VLAN-tagged frame") fixed the same issue for the transport
header probe in packet_parse_headers(). That probe is now skipped if
virtio_net_hdr_to_skb() already set the transport header, avoiding a

    [16 lines not shown]
DeltaFile
+15-10net/packet/af_packet.c
+15-101 files

Linux/linux 089e588 — drivers/net xen-netfront.c

xen/netfront: drop RX packets with a short Ethernet header

handle_incoming_queue() pulls pull_to bytes into the head before
calling eth_type_trans().  pull_to is the length of the first RX slot,
capped at RX_COPY_THRESHOLD, and that length comes from the backend.
Nothing checks it against ETH_HLEN.

If the first slot is shorter than ETH_HLEN and more slots follow, the
head ends up shorter than an Ethernet header while skb->len is longer,
and eth_type_trans() BUG()s in __skb_pull().  If the whole packet is
shorter than ETH_HLEN, eth_type_trans() reads the header past the end
of the data instead.

Pull at least ETH_HLEN, and drop the packet if that fails, which also
drops packets too short to hold an Ethernet header.  This also checks
the return value of the pull, which was ignored.

Fixes: 0d160211965b ("xen: add virtual network device driver")
Cc: stable at vger.kernel.org

    [3 lines not shown]
DeltaFile
+10-2drivers/net/xen-netfront.c
+10-21 files

Linux/linux ab9414e — net/core skbuff.c

net: skbuff: don't leave stale bytes in skb_copy_and_csum_bits()

When skb_copy_and_csum_bits() reaches unreadable frags it returns 0
after copying only the linear part, and the rest of the caller's buffer
is left as it was.  The callers copy into a buffer that is about to go
out on the wire: an ICMP error quoting the offending packet, or a
driver's TX bounce buffer in skb_copy_and_csum_dev().  Neither buffer
is zeroed beforehand, so whatever was in memory there gets sent.

Zero the part of the buffer we didn't fill.  The checksum usually
won't match the data any more, so the receiver will usually drop the
packet, but either way it no longer carries anything it shouldn't.
Only zero for a positive @len, a negative one from a broken caller must
not turn into a huge memset().

Fixes: 65249feb6b3d ("net: add support for skbs with unreadable frags")
Cc: stable at vger.kernel.org
Signed-off-by: Josef Bacik <josef at toxicpanda.com>
Reviewed-by: Mina Almasry <almasrymina at google.com>

    [2 lines not shown]
DeltaFile
+5-1net/core/skbuff.c
+5-11 files

Linux/linux 2b82e16 — drivers/net/ethernet/microchip/sparx5 sparx5_tc_matchall.c

net: sparx5: free the matchall entry on destroy

sparx5_tc_matchall_replace() allocates a struct sparx5_mall_entry for
every offloaded matchall filter and adds it to sparx5->mall_entries.
sparx5_tc_matchall_destroy() removes the entry from the list, but never
frees it, so the entry of every deleted mirror and goto matchall filter
is leaked.

Free the entry after unlinking it.

The leak was discovered by an AI code review agent, and reproduced with
kmemleak on a lan969x EV board (EV23X71A) by repeatedly adding and
deleting matchall mirror and goto filters. With the fix, kmemleak no
longer reports the leak.

Cc: stable at vger.kernel.org
Fixes: 1ede4acf045c ("net: sparx5: add bookkeeping code for matchall rules")
Signed-off-by: Daniel Machon <daniel.machon at microchip.com>
Link: https://patch.msgid.link/20261007-sparx5-matchall-kfree-net-v1-1-c8918685b337@microchip.com
Signed-off-by: Jakub Kicinski <kuba at kernel.org>
DeltaFile
+1-0drivers/net/ethernet/microchip/sparx5/sparx5_tc_matchall.c
+1-01 files

Linux/linux ff6f515 — drivers/net/ethernet/mellanox/mlxsw spectrum.h spectrum_flower.c, tools/testing/selftests/drivers/net/mlxsw port_range_occ.sh

Merge branch 'mlxsw-fix-port-range-register-leak'

Petr Machata says:

====================
mlxsw: Fix port range register leak

When the mlxsw driver parses a port range template rule, it acquires the
actual port range registers. The parsing is only done to determine the
element usage, so the registers can be deallocated right away, but this is
never done, and the registers are leaked. Plug this leak and add a selftest
that would have caught it.
====================

Link: https://patch.msgid.link/cover.1791294384.git.petrm@nvidia.com
Signed-off-by: Jakub Kicinski <kuba at kernel.org>
DeltaFile
+26-0tools/testing/selftests/drivers/net/mlxsw/port_range_occ.sh
+8-2drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
+7-2drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c
+2-0drivers/net/ethernet/mellanox/mlxsw/spectrum.h
+43-44 files

Linux/linux 7ea07af — drivers/net/ethernet/mellanox/mlxsw spectrum.h spectrum_flower.c

mlxsw: spectrum_flower: Fix port range register leak in tmplt_create()

mlxsw_sp_flower_tmplt_create() parses a flow_cls_offload template
into a stack-local struct mlxsw_sp_acl_rule_info purely to compute
rulei.values.elusage. Parsing can acquire port range registers via
mlxsw_sp_flower_parse_ports_range(), but since this rulei never goes
through mlxsw_sp_acl_rulei_destroy(), those registers were never
released, including through chain template deletion.

Factor out of mlxsw_sp_acl_rulei_destroy() the code to actually
release the necessary resources and call from
mlxsw_sp_flower_tmplt_create() to plug the leak.

The issue was found during a review of Wentao Liang's patch referenced
below.

Fixes: fe22f7410527 ("mlxsw: spectrum_flower: Add ability to match on port ranges")
Reported-by: Wentao Liang <vulab at iscas.ac.cn>
Closes: https://lore.kernel.org/netdev/20260917113236.2149095-1-vulab@iscas.ac.cn/

    [5 lines not shown]
DeltaFile
+8-2drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
+7-2drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c
+2-0drivers/net/ethernet/mellanox/mlxsw/spectrum.h
+17-43 files

Linux/linux 71198b5 — tools/testing/selftests/drivers/net/mlxsw port_range_occ.sh

selftests: mlxsw: Test port range occupancy on template create

Add a test that creates a tc chain template matching on both source and
destination port ranges and verifies via devlink-resource occupancy that
this does not leak port range registers, neither while the template
exists nor after it is deleted.

Reviewed-by: Ido Schimmel <idosch at nvidia.com>
Signed-off-by: Petr Machata <petrm at nvidia.com>
Reviewed-by: Jacob Keller <jacob.e.keller at intel.com>
Link: https://patch.msgid.link/e7b37b80adb7ac8b0ef20a22d7654a6656c1c545.1791294384.git.petrm@nvidia.com
Signed-off-by: Jakub Kicinski <kuba at kernel.org>
DeltaFile
+26-0tools/testing/selftests/drivers/net/mlxsw/port_range_occ.sh
+26-01 files

Linux/linux fc13ba4 — drivers/net/dsa/microchip ksz_common.h

net: dsa: microchip: fix KSZ8765 fiber detection

The KSZ8765 is similar to the KSZ8795 but has two fiber ports.

KSZ8_PORT_STATUS_0 is used to detect fiber mode. It is currently
defined as 0x08, which is the Global Control 6 MIB Control register
and has bit 7 defined as Flush Counter.

Set KSZ8_PORT_STATUS_0 to 0x18, which is the Port 1 Status 0 register
where bit 7 is the Fiber Mode bit.

This issue was discovered when upgrading an embedded device from kernel
5.10 to 6.16. The device was using a KSZ8765 device tree configuration
and the corresponding hardware, but during boot the kernel incorrectly
detected it as a KSZ8795. The relevant boot messages were:

  ksz-switch spi0.0: found switch: KSZ8795, rev 0
  ksz-switch spi0.0: Device tree specifies chip KSZ8765 but found KSZ8795, please fix it!


    [6 lines not shown]
DeltaFile
+1-1drivers/net/dsa/microchip/ksz_common.h
+1-11 files

Linux/linux b056ca4 — drivers/net/ethernet/mellanox/mlx5/core en_rx.c

net/mlx5e: Order ICOSQ cc update after CQ doorbell

mlx5e_poll_ico_cq() requires sq->cc to be updated only after
mlx5_cqwq_update_db_record(), otherwise a CQ overrun may occur.

The current implementation updates sq->cc before the CQ doorbell
record, violating this ordering requirement.

Update the CQ doorbell record first and use dma_wmb() before updating
sq->cc. This ensures that the CQ space is released to the device
before the corresponding ICOSQ consumer index is updated by software.

Fixes: fd9b4be8002c ("net/mlx5e: RX, Support multiple outstanding UMR posts")
Signed-off-by: Li RongQing <lirongqing at baidu.com>
Reviewed-by: Dragos Tatulea <dtatulea at nvidia.com>
Signed-off-by: Tariq Toukan <tariqt at nvidia.com>
Reviewed-by: Daniel Machon <daniel.machon at microchip.com>
Link: https://patch.msgid.link/20261006105820.257208-1-tariqt@nvidia.com
Signed-off-by: Jakub Kicinski <kuba at kernel.org>
DeltaFile
+4-2drivers/net/ethernet/mellanox/mlx5/core/en_rx.c
+4-21 files

Linux/linux 726be6a — drivers/net veth.c, tools/testing/selftests/net veth.sh

Merge branch 'veth-fix-peer-netdev_xdp_act_ndo_xmit-after-gro-is-toggled-while-down'

Tianyi Gao says:

====================
veth: fix peer NETDEV_XDP_ACT_NDO_XMIT after GRO is toggled while down

Toggling GRO on a veth device while it is down leaves its peer's
NETDEV_XDP_ACT_NDO_XMIT flag stale once the device comes up. XDP
redirects into the peer are then rejected with -EOPNOTSUPP, or, if GRO
was turned off, accepted and then dropped with -ENXIO. Patch 1 refreshes
the peer's flags in veth_open().

Patch 2 extends veth.sh to check the peer's flag after GRO is toggled
while the device is down, in both directions.
====================

Link: https://patch.msgid.link/20261006173241.65945-1-tianyi@cloudflare.com
Signed-off-by: Jakub Kicinski <kuba at kernel.org>
DeltaFile
+46-0tools/testing/selftests/net/veth.sh
+1-0drivers/net/veth.c
+47-02 files

Linux/linux c017800 — tools/testing/selftests/net veth.sh

selftests: net: veth: test peer ndo-xmit after GRO toggle while down

Test that toggling GRO on a veth device while it is down updates the
peer's ndo-xmit XDP feature once the device comes up, for both GRO on
and GRO off.

xdp-features is only visible through netlink, so read it with the ynl
CLI, as double_udp_encap.sh does. Skip the checks if the CLI is not
found, as in an installed kselftest tree.

Signed-off-by: Tianyi Gao <tianyi at cloudflare.com>
Link: https://patch.msgid.link/20261006173241.65945-3-tianyi@cloudflare.com
Signed-off-by: Jakub Kicinski <kuba at kernel.org>
DeltaFile
+46-0tools/testing/selftests/net/veth.sh
+46-01 files

Linux/linux 3f09003 — drivers/net veth.c

veth: fix peer NETDEV_XDP_ACT_NDO_XMIT after GRO is toggled while down

A veth device advertises NETDEV_XDP_ACT_NDO_XMIT only if its peer has an
XDP program attached or GRO enabled, that is, only if the peer will have
NAPI to receive the frames.

veth_set_features() updates the peer's flag when GRO is toggled, but
returns early if the device is down, and veth_open() only refreshes the
flags of the device being opened. Toggling GRO while the device is down
therefore leaves the peer's flag stale after the device comes up.

If GRO was enabled while down, the device comes up with NAPI but the
peer does not advertise NDO_XMIT, and devmap rejects redirects to the
peer with -EOPNOTSUPP. If GRO was disabled while down, the device comes
up without NAPI but the peer still advertises NDO_XMIT, so redirects are
accepted and then dropped in veth_xdp_xmit() with -ENXIO.

Commit 7a6102aa6df0 ("veth: Update XDP feature set when bringing up
device") made veth_open() refresh the device's own flags. Refresh the

    [11 lines not shown]
DeltaFile
+1-0drivers/net/veth.c
+1-01 files

Linux/linux 259c4a5 — drivers/net/ethernet/microsoft/mana mana_bpf.c mana_ethtool.c, include/net/mana mana.h

net: mana: reserve RX buffer headroom to fix forwarding performance

Commit 730ff06d3f5c ("net: mana: Use page pool fragments for RX buffers
instead of full pages to improve memory efficiency.") started handing
out RX buffers with zero headroom so that two buffers fit into one page
at the default MTU.

The MANA TX path, however, stores the per scatter-gather entry DMA
mappings in `struct mana_skb_head` at skb->head, and mana_start_xmit()
therefore calls skb_cow_head(skb, MANA_HEADROOM). The port advertises
this requirement as ndev->needed_headroom = MANA_HEADROOM.

As a result every packet that is received and then forwarded out of a
MANA port fails the skb_cow() in ip_forward() and gets reallocated and
copied by pskb_expand_head(). This is invisible to a plain RX or TX
workload, but it puts a full skb reallocation plus memcpy on the hot
path of every single forwarded packet, which is exactly what a
router/NVA workload does.


    [38 lines not shown]
DeltaFile
+46-17drivers/net/ethernet/microsoft/mana/mana_en.c
+13-1include/net/mana/mana.h
+5-5drivers/net/ethernet/microsoft/mana/mana_ethtool.c
+4-4drivers/net/ethernet/microsoft/mana/mana_bpf.c
+68-274 files

Linux/linux 6c377d1 — . MAINTAINERS, Documentation/admin-guide ext4.rst

Merge tag 'ext4_for_linus-7.3-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4

Pull ext4 fixes from Ted Ts'o:
 "Mark the ext4 data=journal feature as being deprecated and will be
  removed in 2028.

  Also designate the primary branch that Sashiko and other tools use to
  find the primary development branch in the ext4 tree"

* tag 'ext4_for_linus-7.3-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4:
  ext4: mark data=journal as deprecated and will be removed in January 2028.
  MAINTAINERS: name the ext4 dev branch
DeltaFile
+4-2Documentation/admin-guide/ext4.rst
+1-1MAINTAINERS
+1-0fs/ext4/super.c
+6-33 files