summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2026-07-22pidfs: add pidfs_dentry_open() helperChristian Brauner
Both pidfs_alloc_file() and pidfs_export_open() need to force O_RDWR and reapply the pidfd flags that do_dentry_open() strips. Move the common logic into a helper. PIDFD_AUTOKILL is now part of the restore mask in the file handle path as well, but pidfs_export_permission() rejects O_TRUNC, so this is a no-op there. But warn nonetheless. Link: https://patch.msgid.link/20260722-esszimmer-umsetzen-nennt-ed5fc604300a@brauner Signed-off-by: Christian Brauner (Amutable) <brauner@kernel.org>
2026-07-22ARM: dts: aspeed: sanmiguel: fix PDB HSC shunt resistorMike Hsieh
Correct the shunt-resistor-micro-ohms values for the four TI LM5066i hot-swap controllers on the PDB. This ensures accurate current and power sensor readings from the hardware monitors. Signed-off-by: Mike Hsieh <mike.quanta.115@gmail.com> Link: https://patch.msgid.link/20260618-sanmiguel-dts-config-hsc-lm5066i-v1-1-cccf959c9b78@gmail.com Signed-off-by: Andrew Jeffery <andrew@codeconstruct.com.au>
2026-07-22PM: hibernate: Remove kernel-doc markings from helper descriptionsAdi Nata
Several helpers in snapshot.c are introduced with kernel-doc (/**) comment blocks but do not describe their parameters with @param tags.This emits warnings when building with extra warnings enabled (make W=1), for example: kernel/power/snapshot.c:469: warning: Function parameter or member 'zone' not described in 'add_rtree_block' kernel/power/snapshot.c:469: warning: Function parameter or member 'gfp_mask' not described in 'add_rtree_block' kernel/power/snapshot.c:469: warning: Function parameter or member 'safe_needed' not described in 'add_rtree_block' kernel/power/snapshot.c:469: warning: Function parameter or member 'ca' not described in 'add_rtree_block' These are file-local implementation details, not part of the exported kernel API documented under Documentation/. Replace the kernel-doc markers with plain block comments for the affected functions. Properly documented symbols such as alloc_rtree_node(), snapshot_read_next() and snapshot_write_next() remain unchanged. Signed-off-by: Adi Nata <adinata.softwareengineer@gmail.com> [ rjw: Subject rewrite ] Link: https://patch.msgid.link/20260609231626.38839-1-adinata.softwareengineer@gmail.com Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
2026-07-22Merge patch series "pidfs: preserve thread pidfds reopened by file handle"Christian Brauner
Li Chen <me@linux.beauty> says: Reopening a thread pidfd via open_by_handle_at() silently dropped PIDFD_THREAD because do_dentry_open() strips O_EXCL. Restore the flag and add a selftest check. * patches from https://patch.msgid.link/20260716052726.1032092-1-me@linux.beauty: selftests/pidfd: check PIDFD_THREAD survives open_by_handle_at() pidfs: preserve thread pidfds reopened by file handle Link: https://patch.msgid.link/20260716052726.1032092-1-me@linux.beauty Signed-off-by: Christian Brauner (Amutable) <brauner@kernel.org>
2026-07-22selftests/pidfd: check PIDFD_THREAD survives open_by_handle_at()Christian Brauner
Verify that a thread pidfd reopened via open_by_handle_at() still reports PIDFD_THREAD in F_GETFL. Signed-off-by: Li Chen <me@linux.beauty> Reviewed-by: Jan Kara <jack@suse.cz> Link: https://patch.msgid.link/20260716052726.1032092-1-me@linux.beauty Signed-off-by: Christian Brauner (Amutable) <brauner@kernel.org>
2026-07-22pidfs: preserve thread pidfds reopened by file handleChristian Brauner
PIDFD_THREAD shares O_EXCL. do_dentry_open() clears O_EXCL after pidfs_export_open() validates the flags, so open_by_handle_at() silently turns a thread pidfd into a process pidfd. Restore PIDFD_THREAD on the opened file, matching pidfs_alloc_file(). Signed-off-by: Li Chen <me@linux.beauty> Reviewed-by: Jan Kara <jack@suse.cz> Link: https://patch.msgid.link/20260716052726.1032092-1-me@linux.beauty Signed-off-by: Christian Brauner (Amutable) <brauner@kernel.org>
2026-07-22drm: fix missing header include for drm_panel_put()Neil Armstrong
Some DRM drivers lacked the drm_panel.h include to use drm_panel_put() after the commit b71a623598d3 ("drm/panel: of_drm_find_panel() return a counted reference"). Fixes: b71a623598d3 ("drm/panel: of_drm_find_panel() return a counted reference") Reviewed-by: Laurentiu Palcu <laurentiu.palcu@oss.nxp.com> Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de> Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org> Link: https://patch.msgid.link/20260722-panel-fix-kms-panel-put-v1-1-ebde56446ee5@linaro.org
2026-07-22Merge branch 'big-tcp-for-udp-tunnels'Paolo Abeni
Alice Mikityanska says: ==================== BIG TCP for UDP tunnels This series is a follow-up to "BIG TCP without HBH in IPv6", and it adds support for BIG TCP IPv4/IPv6 workloads in vxlan and geneve. Now that IPv6 BIG TCP doesn't require stripping the HBH in all various combinations in tunneled traffic, adding BIG TCP becomes feasible. Patch 01 adds accessors for the length field in the UDP header, as suggested by Paolo in review. The usage of udp_set_len is then added in the following patches that start using length=0 in BIG TCP UDP packets. Patches 02-04 close the gaps that prevent BIG TCP packets from going through UDP tunnel code. Patch 05 validates packets in udp_gro_receive to exclude packets with length=0 from GRO aggregation. Patch 06 is for proper formatting in tcpdump (set UDP len to 0 rather than a trimmed value on overflow). Patches 07-08 bump up tso_max_size for VXLAN and GENEVE. Patch 09 adds selftests. ====================$ Link: https://patch.msgid.link/20260710134242.216538-1-alice.kernel@fastmail.im Signed-off-by: Paolo Abeni <pabeni@redhat.com>
2026-07-22ovl: fix trusted xattr escape prefix matchingYichong Chen
In the trusted.* xattr namespace, ovl_is_escaped_xattr() compares one byte less than the escaped overlay xattr prefix length. This makes it match "trusted.overlay.overlay" without requiring the trailing dot. As a result, an xattr such as "trusted.overlay.overlayfoo" is incorrectly treated as an escaped overlay xattr. This can be reproduced by setting "trusted.overlay.overlayfoo" on a lower file and listing xattrs through an overlay mount. listxattr() then exposes it as "trusted.overlay.oo", and a following getxattr() on that listed name fails with ENODATA. Compare the full escaped prefix, including the trailing dot, so similarly-prefixed private xattrs are not misclassified. Fixes: dad02fad84cbc ("ovl: Support escaped overlay.* xattrs") Signed-off-by: Yichong Chen <chenyichong@uniontech.com> Link: https://patch.msgid.link/20260708082221.633602-1-chenyichong@uniontech.com Reviewed-by: Amir Goldstein <amir73il@gmail.com> Signed-off-by: Christian Brauner (Amutable) <brauner@kernel.org>
2026-07-22selftests: net: Add a test for BIG TCP in UDP tunnelsAlice Mikityanska
The test sets up VXLAN and GENEVE tunnels over IPv4 and IPv6 and runs IPv4 and IPv6 traffic through them with BIG TCP enabled. It checks that a non-negligible amount of big aggregated packets are seen by setting up iptables counters. Check the number of packets on both TX and RX sides to verify that GSO packets are valid and not dropped. Capture on the lower netdev (veth), when checksum offload is on, to verify that encapsulated BIG TCP packets can get to their destination. In the test with TX checksum offload off, software GSO splits aggregated VXLAN packets before passing them to veth, so capture inside the tunnel instead to check that the big packets are not dropped. Check that the amount of SACKs is negligible. On unsupported kernels, some amount of broken GSO packets bigger than 65536 bytes can be produced in VXLAN tunnels, but they don't reach the destination. Seeing TCP SACKs is a sign that such packets could have been dropped (in such cases, the amount of SACKs is a few times bigger than the number of attempts to send BIG TCP packets). Signed-off-by: Alice Mikityanska <alice@isovalent.com> Link: https://patch.msgid.link/20260710134242.216538-10-alice.kernel@fastmail.im Reviewed-by: Nikolay Aleksandrov <razor@blackwall.org> Signed-off-by: Paolo Abeni <pabeni@redhat.com>
2026-07-22geneve: Enable BIG TCP packetsAlice Mikityanska
From: Daniel Borkmann <daniel@iogearbox.net> In Cilium we do support BIG TCP, but so far the latter has only been enabled for direct routing use-cases. A lot of users rely on Cilium with vxlan/geneve tunneling though. The underlying kernel infra for tunneling has not been supporting BIG TCP up to this point. Given we do now, bump tso_max_size for geneve netdevs up to GSO_MAX_SIZE to allow the admin to use BIG TCP with geneve tunnels. BIG TCP on geneve disabled: Standard MTU: # netperf -H 10.1.0.2 -t TCP_STREAM -l60 MIGRATED TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 10.1.0.2 () port 0 AF_INET : demo Recv Send Send Socket Socket Message Elapsed Size Size Size Time Throughput bytes bytes bytes secs. 10^6bits/sec 131072 16384 16384 30.00 37391.34 8k MTU: # netperf -H 10.1.0.2 -t TCP_STREAM -l60 MIGRATED TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 10.1.0.2 () port 0 AF_INET : demo Recv Send Send Socket Socket Message Elapsed Size Size Size Time Throughput bytes bytes bytes secs. 10^6bits/sec 262144 32768 32768 60.00 58030.19 BIG TCP on geneve enabled: Standard MTU: # netperf -H 10.1.0.2 -t TCP_STREAM -l60 MIGRATED TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 10.1.0.2 () port 0 AF_INET : demo Recv Send Send Socket Socket Message Elapsed Size Size Size Time Throughput bytes bytes bytes secs. 10^6bits/sec 131072 16384 16384 30.00 40891.57 8k MTU: # netperf -H 10.1.0.2 -t TCP_STREAM -l60 MIGRATED TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 10.1.0.2 () port 0 AF_INET : demo Recv Send Send Socket Socket Message Elapsed Size Size Size Time Throughput bytes bytes bytes secs. 10^6bits/sec 262144 32768 32768 60.00 61458.39 Example receive side: swapper 0 [008] 3682.509996: net:netif_receive_skb: dev=geneve0 skbaddr=0xffff8f3b0a781800 len=129492 ffffffff8cfe3aaa __netif_receive_skb_core.constprop.0+0x6ca ([kernel.kallsyms]) ffffffff8cfe3aaa __netif_receive_skb_core.constprop.0+0x6ca ([kernel.kallsyms]) ffffffff8cfe47dd __netif_receive_skb_list_core+0xed ([kernel.kallsyms]) ffffffff8cfe4e52 netif_receive_skb_list_internal+0x1d2 ([kernel.kallsyms]) ffffffff8cfe573c napi_complete_done+0x7c ([kernel.kallsyms]) ffffffff8d046c23 gro_cell_poll+0x83 ([kernel.kallsyms]) ffffffff8cfe586d __napi_poll+0x2d ([kernel.kallsyms]) ffffffff8cfe5f8d net_rx_action+0x20d ([kernel.kallsyms]) ffffffff8c35d252 handle_softirqs+0xe2 ([kernel.kallsyms]) ffffffff8c35d556 __irq_exit_rcu+0xd6 ([kernel.kallsyms]) ffffffff8c35d81e irq_exit_rcu+0xe ([kernel.kallsyms]) ffffffff8d2602b8 common_interrupt+0x98 ([kernel.kallsyms]) ffffffff8c000da7 asm_common_interrupt+0x27 ([kernel.kallsyms]) ffffffff8d2645c5 cpuidle_enter_state+0xd5 ([kernel.kallsyms]) ffffffff8cf6358e cpuidle_enter+0x2e ([kernel.kallsyms]) ffffffff8c3ba932 call_cpuidle+0x22 ([kernel.kallsyms]) ffffffff8c3bfb5e do_idle+0x1ce ([kernel.kallsyms]) ffffffff8c3bfd79 cpu_startup_entry+0x29 ([kernel.kallsyms]) ffffffff8c30a6c2 start_secondary+0x112 ([kernel.kallsyms]) ffffffff8c2c142d common_startup_64+0x13e ([kernel.kallsyms]) Example transmit side: swapper 0 [002] 3403.688687: net:net_dev_xmit: dev=enp10s0f0np0 skbaddr=0xffff8af31d104ae8 len=129556 rc=0 ffffffffa75e19c3 dev_hard_start_xmit+0x173 ([kernel.kallsyms]) ffffffffa75e19c3 dev_hard_start_xmit+0x173 ([kernel.kallsyms]) ffffffffa7653823 sch_direct_xmit+0x143 ([kernel.kallsyms]) ffffffffa75e2780 __dev_queue_xmit+0xc70 ([kernel.kallsyms]) ffffffffa76a1205 ip_finish_output2+0x265 ([kernel.kallsyms]) ffffffffa76a1577 __ip_finish_output+0x87 ([kernel.kallsyms]) ffffffffa76a165b ip_finish_output+0x2b ([kernel.kallsyms]) ffffffffa76a179e ip_output+0x5e ([kernel.kallsyms]) ffffffffa76a19d5 ip_local_out+0x35 ([kernel.kallsyms]) ffffffffa770d0e5 iptunnel_xmit+0x185 ([kernel.kallsyms]) ffffffffc179634e nf_nat_used_tuple_new.cold+0x1129 ([kernel.kallsyms]) ffffffffc179d3e0 geneve_xmit+0x920 ([kernel.kallsyms]) ffffffffa75e18af dev_hard_start_xmit+0x5f ([kernel.kallsyms]) ffffffffa75e1d3f __dev_queue_xmit+0x22f ([kernel.kallsyms]) ffffffffa76a1205 ip_finish_output2+0x265 ([kernel.kallsyms]) ffffffffa76a1577 __ip_finish_output+0x87 ([kernel.kallsyms]) ffffffffa76a165b ip_finish_output+0x2b ([kernel.kallsyms]) ffffffffa76a179e ip_output+0x5e ([kernel.kallsyms]) ffffffffa76a1de2 __ip_queue_xmit+0x1b2 ([kernel.kallsyms]) ffffffffa76a2135 ip_queue_xmit+0x15 ([kernel.kallsyms]) ffffffffa76c70a2 __tcp_transmit_skb+0x522 ([kernel.kallsyms]) ffffffffa76c931a tcp_write_xmit+0x65a ([kernel.kallsyms]) ffffffffa76ca3b9 __tcp_push_pending_frames+0x39 ([kernel.kallsyms]) ffffffffa76c1fb6 tcp_rcv_established+0x276 ([kernel.kallsyms]) ffffffffa76d3957 tcp_v4_do_rcv+0x157 ([kernel.kallsyms]) ffffffffa76d6053 tcp_v4_rcv+0x1243 ([kernel.kallsyms]) ffffffffa769b8ea ip_protocol_deliver_rcu+0x2a ([kernel.kallsyms]) ffffffffa769bab7 ip_local_deliver_finish+0x77 ([kernel.kallsyms]) ffffffffa769bb4d ip_local_deliver+0x6d ([kernel.kallsyms]) ffffffffa769abe7 ip_sublist_rcv_finish+0x37 ([kernel.kallsyms]) ffffffffa769b713 ip_sublist_rcv+0x173 ([kernel.kallsyms]) ffffffffa769bde2 ip_list_rcv+0x102 ([kernel.kallsyms]) ffffffffa75e4868 __netif_receive_skb_list_core+0x178 ([kernel.kallsyms]) ffffffffa75e4e52 netif_receive_skb_list_internal+0x1d2 ([kernel.kallsyms]) ffffffffa75e573c napi_complete_done+0x7c ([kernel.kallsyms]) ffffffffa7646c23 gro_cell_poll+0x83 ([kernel.kallsyms]) ffffffffa75e586d __napi_poll+0x2d ([kernel.kallsyms]) ffffffffa75e5f8d net_rx_action+0x20d ([kernel.kallsyms]) ffffffffa695d252 handle_softirqs+0xe2 ([kernel.kallsyms]) ffffffffa695d556 __irq_exit_rcu+0xd6 ([kernel.kallsyms]) ffffffffa695d81e irq_exit_rcu+0xe ([kernel.kallsyms]) ffffffffa78602b8 common_interrupt+0x98 ([kernel.kallsyms]) ffffffffa6600da7 asm_common_interrupt+0x27 ([kernel.kallsyms]) ffffffffa78645c5 cpuidle_enter_state+0xd5 ([kernel.kallsyms]) ffffffffa756358e cpuidle_enter+0x2e ([kernel.kallsyms]) ffffffffa69ba932 call_cpuidle+0x22 ([kernel.kallsyms]) ffffffffa69bfb5e do_idle+0x1ce ([kernel.kallsyms]) ffffffffa69bfd79 cpu_startup_entry+0x29 ([kernel.kallsyms]) ffffffffa690a6c2 start_secondary+0x112 ([kernel.kallsyms]) ffffffffa68c142d common_startup_64+0x13e ([kernel.kallsyms]) Signed-off-by: Daniel Borkmann <daniel@iogearbox.net> Co-developed-by: Alice Mikityanska <alice@isovalent.com> Signed-off-by: Alice Mikityanska <alice@isovalent.com> Cc: Nikolay Aleksandrov <razor@blackwall.org> Reviewed-by: Willem de Bruijn <willemb@google.com> Link: https://patch.msgid.link/20260710134242.216538-9-alice.kernel@fastmail.im Reviewed-by: Nikolay Aleksandrov <razor@blackwall.org> Signed-off-by: Paolo Abeni <pabeni@redhat.com>
2026-07-22vxlan: Enable BIG TCP packetsAlice Mikityanska
In Cilium we do support BIG TCP, but so far the latter has only been enabled for direct routing use-cases. A lot of users rely on Cilium with vxlan/geneve tunneling though. The underlying kernel infra for tunneling has not been supporting BIG TCP up to this point. Given we do now, bump tso_max_size for vxlan netdevs up to GSO_MAX_SIZE to allow the admin to use BIG TCP with vxlan tunnels. BIG TCP on vxlan disabled: Standard MTU: # netperf -H 10.1.0.2 -t TCP_STREAM -l60 MIGRATED TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 10.1.0.2 () port 0 AF_INET : demo Recv Send Send Socket Socket Message Elapsed Size Size Size Time Throughput bytes bytes bytes secs. 10^6bits/sec 131072 16384 16384 30.00 34440.00 8k MTU: # netperf -H 10.1.0.2 -t TCP_STREAM -l60 MIGRATED TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 10.1.0.2 () port 0 AF_INET : demo Recv Send Send Socket Socket Message Elapsed Size Size Size Time Throughput bytes bytes bytes secs. 10^6bits/sec 262144 32768 32768 30.00 55684.26 BIG TCP on vxlan enabled: Standard MTU: # netperf -H 10.1.0.2 -t TCP_STREAM -l60 MIGRATED TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 10.1.0.2 () port 0 AF_INET : demo Recv Send Send Socket Socket Message Elapsed Size Size Size Time Throughput bytes bytes bytes secs. 10^6bits/sec 131072 16384 16384 30.00 39564.78 8k MTU: # netperf -H 10.1.0.2 -t TCP_STREAM -l60 MIGRATED TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 10.1.0.2 () port 0 AF_INET : demo Recv Send Send Socket Socket Message Elapsed Size Size Size Time Throughput bytes bytes bytes secs. 10^6bits/sec 262144 32768 32768 30.00 61466.47 When tunnel offloads are not enabled/exposed and we fully need to rely on SW-based segmentation on transmit (e.g. in case of Azure) then the more aggressive batching also has a visible effect. Below example was on the same setup as with above benchmarks but with HW support disabled: # ethtool -k enp10s0f0np0 | grep udp tx-udp_tnl-segmentation: off tx-udp_tnl-csum-segmentation: off tx-udp-segmentation: off rx-udp_tunnel-port-offload: off rx-udp-gro-forwarding: off Before: # netperf -H 10.1.0.2 -t TCP_STREAM -l60 MIGRATED TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 10.1.0.2 () port 0 AF_INET : demo Recv Send Send Socket Socket Message Elapsed Size Size Size Time Throughput bytes bytes bytes secs. 10^6bits/sec 131072 16384 16384 60.00 21820.82 After: # netperf -H 10.1.0.2 -t TCP_STREAM -l60 MIGRATED TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 10.1.0.2 () port 0 AF_INET : demo Recv Send Send Socket Socket Message Elapsed Size Size Size Time Throughput bytes bytes bytes secs. 10^6bits/sec 131072 16384 16384 60.00 29390.78 Example receive side: swapper 0 [002] 4712.645070: net:netif_receive_skb: dev=enp10s0f0np0 skbaddr=0xffff8f3b086e0200 len=129542 ffffffff8cfe3aaa __netif_receive_skb_core.constprop.0+0x6ca ([kernel.kallsyms]) ffffffff8cfe3aaa __netif_receive_skb_core.constprop.0+0x6ca ([kernel.kallsyms]) ffffffff8cfe47dd __netif_receive_skb_list_core+0xed ([kernel.kallsyms]) ffffffff8cfe4e52 netif_receive_skb_list_internal+0x1d2 ([kernel.kallsyms]) ffffffff8d0210d8 gro_complete.constprop.0+0x108 ([kernel.kallsyms]) ffffffff8d021724 dev_gro_receive+0x4e4 ([kernel.kallsyms]) ffffffff8d021a99 gro_receive_skb+0x89 ([kernel.kallsyms]) ffffffffc06edb71 mlx5e_handle_rx_cqe_mpwrq+0x131 ([kernel.kallsyms]) ffffffffc06ee38a mlx5e_poll_rx_cq+0x9a ([kernel.kallsyms]) ffffffffc06ef2c7 mlx5e_napi_poll+0x107 ([kernel.kallsyms]) ffffffff8cfe586d __napi_poll+0x2d ([kernel.kallsyms]) ffffffff8cfe5f8d net_rx_action+0x20d ([kernel.kallsyms]) ffffffff8c35d252 handle_softirqs+0xe2 ([kernel.kallsyms]) ffffffff8c35d556 __irq_exit_rcu+0xd6 ([kernel.kallsyms]) ffffffff8c35d81e irq_exit_rcu+0xe ([kernel.kallsyms]) ffffffff8d2602b8 common_interrupt+0x98 ([kernel.kallsyms]) ffffffff8c000da7 asm_common_interrupt+0x27 ([kernel.kallsyms]) ffffffff8d2645c5 cpuidle_enter_state+0xd5 ([kernel.kallsyms]) ffffffff8cf6358e cpuidle_enter+0x2e ([kernel.kallsyms]) ffffffff8c3ba932 call_cpuidle+0x22 ([kernel.kallsyms]) ffffffff8c3bfb5e do_idle+0x1ce ([kernel.kallsyms]) ffffffff8c3bfd79 cpu_startup_entry+0x29 ([kernel.kallsyms]) ffffffff8c30a6c2 start_secondary+0x112 ([kernel.kallsyms]) ffffffff8c2c142d common_startup_64+0x13e ([kernel.kallsyms]) Example transmit side: swapper 0 [005] 4768.021375: net:net_dev_xmit: dev=enp10s0f0np0 skbaddr=0xffff8af32ebe1200 len=129556 rc=0 ffffffffa75e19c3 dev_hard_start_xmit+0x173 ([kernel.kallsyms]) ffffffffa75e19c3 dev_hard_start_xmit+0x173 ([kernel.kallsyms]) ffffffffa7653823 sch_direct_xmit+0x143 ([kernel.kallsyms]) ffffffffa75e2780 __dev_queue_xmit+0xc70 ([kernel.kallsyms]) ffffffffa76a1205 ip_finish_output2+0x265 ([kernel.kallsyms]) ffffffffa76a1577 __ip_finish_output+0x87 ([kernel.kallsyms]) ffffffffa76a165b ip_finish_output+0x2b ([kernel.kallsyms]) ffffffffa76a179e ip_output+0x5e ([kernel.kallsyms]) ffffffffa76a19d5 ip_local_out+0x35 ([kernel.kallsyms]) ffffffffa770d0e5 iptunnel_xmit+0x185 ([kernel.kallsyms]) ffffffffc179634e nf_nat_used_tuple_new.cold+0x1129 ([kernel.kallsyms]) ffffffffc17a7301 vxlan_xmit_one+0xc21 ([kernel.kallsyms]) ffffffffc17a80a2 vxlan_xmit+0x4a2 ([kernel.kallsyms]) ffffffffa75e18af dev_hard_start_xmit+0x5f ([kernel.kallsyms]) ffffffffa75e1d3f __dev_queue_xmit+0x22f ([kernel.kallsyms]) ffffffffa76a1205 ip_finish_output2+0x265 ([kernel.kallsyms]) ffffffffa76a1577 __ip_finish_output+0x87 ([kernel.kallsyms]) ffffffffa76a165b ip_finish_output+0x2b ([kernel.kallsyms]) ffffffffa76a179e ip_output+0x5e ([kernel.kallsyms]) ffffffffa76a1de2 __ip_queue_xmit+0x1b2 ([kernel.kallsyms]) ffffffffa76a2135 ip_queue_xmit+0x15 ([kernel.kallsyms]) ffffffffa76c70a2 __tcp_transmit_skb+0x522 ([kernel.kallsyms]) ffffffffa76c931a tcp_write_xmit+0x65a ([kernel.kallsyms]) ffffffffa76cb42e tcp_tsq_write+0x5e ([kernel.kallsyms]) ffffffffa76cb7ef tcp_tasklet_func+0x10f ([kernel.kallsyms]) ffffffffa695d9f7 tasklet_action_common+0x107 ([kernel.kallsyms]) ffffffffa695db99 tasklet_action+0x29 ([kernel.kallsyms]) ffffffffa695d252 handle_softirqs+0xe2 ([kernel.kallsyms]) ffffffffa695d556 __irq_exit_rcu+0xd6 ([kernel.kallsyms]) ffffffffa695d81e irq_exit_rcu+0xe ([kernel.kallsyms]) ffffffffa78602b8 common_interrupt+0x98 ([kernel.kallsyms]) ffffffffa6600da7 asm_common_interrupt+0x27 ([kernel.kallsyms]) ffffffffa78645c5 cpuidle_enter_state+0xd5 ([kernel.kallsyms]) ffffffffa756358e cpuidle_enter+0x2e ([kernel.kallsyms]) ffffffffa69ba932 call_cpuidle+0x22 ([kernel.kallsyms]) ffffffffa69bfb5e do_idle+0x1ce ([kernel.kallsyms]) ffffffffa69bfd79 cpu_startup_entry+0x29 ([kernel.kallsyms]) ffffffffa690a6c2 start_secondary+0x112 ([kernel.kallsyms]) ffffffffa68c142d common_startup_64+0x13e ([kernel.kallsyms]) Signed-off-by: Alice Mikityanska <alice@isovalent.com> Co-developed-by: Daniel Borkmann <daniel@iogearbox.net> Signed-off-by: Daniel Borkmann <daniel@iogearbox.net> Cc: Nikolay Aleksandrov <razor@blackwall.org> Reviewed-by: Willem de Bruijn <willemb@google.com> Link: https://patch.msgid.link/20260710134242.216538-8-alice.kernel@fastmail.im Reviewed-by: Nikolay Aleksandrov <razor@blackwall.org> Signed-off-by: Paolo Abeni <pabeni@redhat.com>
2026-07-22udp: Set length in UDP header to 0 for big GSO packetsAlice Mikityanska
skb->len may be bigger than 65535 in UDP-based tunnels that have BIG TCP enabled. If GSO aggregates packets that large, set the length in the UDP header to 0, so that tcpdump can print such packets properly (treating them as RFC 2675 jumbograms). Later in the pipeline, __udp_gso_segment will set uh->len to the size of individual packets. Signed-off-by: Alice Mikityanska <alice@isovalent.com> Reviewed-by: Willem de Bruijn <willemb@google.com> Link: https://patch.msgid.link/20260710134242.216538-7-alice.kernel@fastmail.im Reviewed-by: Nikolay Aleksandrov <razor@blackwall.org> Signed-off-by: Paolo Abeni <pabeni@redhat.com>
2026-07-22udp: Validate UDP length in udp_gro_receiveAlice Mikityanska
In the previous commit we started using uh->len = 0 as a marker of a GRO packet bigger than 65536 bytes. Filter out malformed packets coming from the wire with len=0 at udp_gro_receive to exclude them from GRO. Note that a similar check was present in udp_gro_receive_segment, but not in the UDP socket gro_receive flow. By adding an early check to udp_gro_receive, the check in udp_gro_receive_segment can be dropped. Signed-off-by: Alice Mikityanska <alice@isovalent.com> Reviewed-by: Willem de Bruijn <willemb@google.com> Link: https://patch.msgid.link/20260710134242.216538-6-alice.kernel@fastmail.im Reviewed-by: Nikolay Aleksandrov <razor@blackwall.org> Signed-off-by: Paolo Abeni <pabeni@redhat.com>
2026-07-22udp: Support gro_ipv4_max_size > 65536Alice Mikityanska
Currently, gro_max_size and gro_ipv4_max_size can be set to values bigger than 65536, and GRO will happily aggregate UDP to the configured size (for example, with TCP traffic in VXLAN tunnels). However, udp_gro_complete uses the 16-bit length field in the UDP header to store the length of the aggregated packet. It leads to the packet truncation later in udp_rcv. Fix this by storing 0 to the UDP length field and by restoring the real length from skb->len in udp_rcv. IP GRO already can store 0 to the IP length field, and iph_totlen()/ipv6_payload_len() are capable of restoring the real length, because the relevant packets (BIG TCP tunneled in UDP tunnels) will have skb_is_gso_tcp == true. Additionally, restrict handling uh->len=0 in udpv6_rcv to BIG TCP and jumbograms only by using the udp_get_len helper. Signed-off-by: Alice Mikityanska <alice@isovalent.com> Reviewed-by: Willem de Bruijn <willemb@google.com> Link: https://patch.msgid.link/20260710134242.216538-5-alice.kernel@fastmail.im Reviewed-by: Nikolay Aleksandrov <razor@blackwall.org> Signed-off-by: Paolo Abeni <pabeni@redhat.com>
2026-07-22udp: Support BIG TCP GSO packets where they can occurAlice Mikityanska
Wherever a GSO packet can occur, and its length is used to fill the UDP header, use udp_set_len that assigns 0 if the length doesn't fit 16 bits, so that the packet can be properly parsed and segmented later, instead of having truncated length. Use udp_get_len in udp_validate_len to treat BIG TCP packets as valid. Signed-off-by: Alice Mikityanska <alice@isovalent.com> Reviewed-by: Willem de Bruijn <willemb@google.com> Link: https://patch.msgid.link/20260710134242.216538-4-alice.kernel@fastmail.im Reviewed-by: Nikolay Aleksandrov <razor@blackwall.org> Signed-off-by: Paolo Abeni <pabeni@redhat.com>
2026-07-22net: Enable BIG TCP with partial GSOAlice Mikityanska
skb_segment is called for partial GSO, when netif_needs_gso returns true in validate_xmit_skb. Partial GSO is needed, for example, when segmentation of tunneled traffic is offloaded to a NIC that only supports inner checksum offload. Currently, skb_segment clamps the segment length to 65534 bytes, because gso_size == 65535 is a special value GSO_BY_FRAGS, and we don't want to accidentally assign mss = 65535, as it would fall into the GSO_BY_FRAGS check further in the function. This implementation, however, artificially blocks len > 65534, which is possible since the introduction of BIG TCP. To allow bigger lengths and avoid resegmentation of BIG TCP packets, store the gso_by_frags flag in the beginning and don't use a special value of mss for this purpose after mss was modified. Signed-off-by: Alice Mikityanska <alice@isovalent.com> Reviewed-by: Willem de Bruijn <willemb@google.com> Link: https://patch.msgid.link/20260710134242.216538-3-alice.kernel@fastmail.im Reviewed-by: Nikolay Aleksandrov <razor@blackwall.org> Signed-off-by: Paolo Abeni <pabeni@redhat.com>
2026-07-22net: Use helpers to get/set UDP len tree-wideAlice Mikityanska
Since BIG TCP for UDP tunnels will start using len=0 in the UDP header as an indicator of a GSO packet bigger than 65535 bytes, this commit introduces the following getter and setters to use tree-wide, in order to explicitly mark places where len=0 may be expected, and handle them properly: 1. udp_set_len() sets uh->len to its real value if it's not bigger than 65535, and to 0 otherwise: to be used in GSO context with aggregated packets. 2. udp_set_len_short() is to be used when the length is known to fit 16 bits. It WARNs when the caller tries to assign a bigger value if CONFIG_DEBUG_NET=y. 3. udp_get_len_short() returns len in host byte order: to be used on the RX side to deal with non-aggregated packets, or to access the raw value of the len field. 4. udp_get_len() decodes uh->len set by udp_set_len(). It checks whether the packet is GSO to guard from malformed packets. At the moment udp_set_len() is not used, a following commit will start using it after enabling len>65535 for GSO. Raw uh->len (in network byte order) is still accessed in a few places for checksum calculation purposes, and to decode len=0 in udpv6_rcv for jumbograms. udp_rcv and udpv6_rcv will be addressed by the commit that starts using udp_set_len() to set UDP len=0 for BIG TCP packets in UDP tunnels. Signed-off-by: Alice Mikityanska <alice@isovalent.com> Reviewed-by: Willem de Bruijn <willemb@google.com> Acked-by: Jason A. Donenfeld <Jason@zx2c4.com> Link: https://patch.msgid.link/20260710134242.216538-2-alice.kernel@fastmail.im Reviewed-by: Nikolay Aleksandrov <razor@blackwall.org> Signed-off-by: Paolo Abeni <pabeni@redhat.com>
2026-07-22arm64: make huge_ptep_get handled unaligned addressesDev Jain
huge_ptep_get() can be handed a virtual address pointing to the middle of a contpmd/contpte mapped hugetlb folio (examples of callers are pagemap_hugetlb_range, page_mapped_in_vma). The arm64 helper rewalks the pgtables in find_num_contig to answer whether the huge pte we have maps a contpmd or a contpte hugetlb folio, and returns CONT_PMDS or CONT_PTES, so that it can collect a/d bits over the contiguous ptes. We can falsely return CONT_PTES instead of CONT_PMDS if the addr is not aligned. On systems where CONT_PTES != CONT_PMDS (meaning page size is 16K), we could collect excess A/D bit state, meaning extra work for the kernel. Even worse, we may iterate beyond the PTE table and dereference a garbage ptep pointer to access physical memory we don't own. Since the ptep pointer is a linear map address, we may run off the end of the linear map or into a hole, dereference a VA not mapped into the kernel pgtables and cause kernel panic. Fix this by aligning the pmdp pointer down to a contpmd base before checking equality with the passed huge pte pointer, to correctly answer whether the huge pte is the base of a contpmd block. Fixes: 29cb80519689 ("arm64: hugetlb: Cleanup huge_pte size discovery mechanisms") Cc: stable@vger.kernel.org Acked-by: David Hildenbrand (Arm) <david@kernel.org> Signed-off-by: Dev Jain <dev.jain@arm.com> Acked-by: Muchun Song <muchun.song@linux.dev> Signed-off-by: Will Deacon <will@kernel.org>
2026-07-22drm/panel: simple: Add Kyocera tcg070wvlq panelHeiko Schocher
Commit 922fb2db0287 ("dt-bindings: display: simple: Add Kyocera tcg070wvlq panel") added the compatible string for the Kyocera tcg070wvlq panel to the devicetree bindings documentation (panel-simple.yaml), but the corresponding entry was not added to the panel-simple driver. Add the missing compatible entry to the driver. Signed-off-by: Heiko Schocher <hs@nabladev.com> Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org> Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org> Link: https://patch.msgid.link/20260721041935.757240-1-hs@nabladev.com
2026-07-22drm/panel: osd101t2587: migrate to newer mipi_dsi* functionsRobert-Andrei Mercea
Migrate osd101t2587-53ts panel driver from deprecated mipi_dsi* functions to their *_multi variants for improved error handling, as specified in the GPU subsystem TODO list. Link: https://docs.kernel.org/gpu/todo.html#transition-away-from-using-deprecated-mipi-dsi-functions Signed-off-by: Robert-Andrei Mercea <robertandreimercea@gmail.com> Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org> Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org> Link: https://patch.msgid.link/20260720115126.666363-1-robertandreimercea@gmail.com
2026-07-22ALSA: hda/realtek: Add quirk for HP Pavilion All-in-One 27-ca1xxxZhang Heng
This HP All-in-One desktop (model 27-ca1xxx) uses an ALC274 codec and has no sound from either the internal speakers or the headphone jack. The audio output requires a combination of a specific verb setup and GPIO configuration to become functional. Additionally, the power_save feature must be disabled; otherwise, audible clicks or pops occur during power state transitions. Link: https://bugzilla.kernel.org/show_bug.cgi?id=220694 Signed-off-by: Zhang Heng <zhangheng@kylinos.cn> Link: https://patch.msgid.link/20260721113539.317561-1-zhangheng@kylinos.cn Signed-off-by: Takashi Iwai <tiwai@suse.de>
2026-07-22ALSA: usb-audio: Add iface reset and delay quirk for Generic USB HeadphoneLianqin Hu
Setting up the interface when suspended/resuming fails on this card. Adding a reset and delay quirk will eliminate this problem. usb 1-1: New USB device found, idVendor=0124, idProduct=0c21 usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3 usb 1-1: Product: USB Headphone usb 1-1: Manufacturer: Generic usb 1-1: SerialNumber: 20210726905926 Signed-off-by: Lianqin Hu <hulianqin@vivo.com> Signed-off-by: Takashi Iwai <tiwai@suse.de> Link: https://patch.msgid.link/TYUPR06MB6217CBB68C8F868C076A4353D2C12@TYUPR06MB6217.apcprd06.prod.outlook.com
2026-07-22ALSA: atmel: ac97c: use platform helpers and devm cleanupRosen Penev
Convert atmel_ac97c_probe() to the managed APIs. Replace the open-coded platform_get_resource() + ioremap() with devm_platform_ioremap_resource(), which requests and maps the AC97C register window in one call. Switch the clock to devm_clk_get_enabled(), the card to snd_devm_card_new(), and the interrupt to devm_request_irq(). The now-unnecessary error-path cleanup and the manual teardown in atmel_ac97c_remove() are dropped, since devm handles them. platform_get_irq() was already used; tighten its error check to irq < 0. Both resource and IRQ lookups are equivalent for a platform-backed device. The AC97C register window is owned solely by this driver, so the new region request cannot conflict with another claimant, and it is mapped exactly once (no double mapping). No functional change; built for ARM (allmodconfig + SND_ATMEL_AC97C) with LLVM=1 and sound/atmel/ac97c.o compiles cleanly. Assisted-by: opencode:hy3-free Signed-off-by: Rosen Penev <rosenp@gmail.com> Link: https://patch.msgid.link/20260721225411.815553-1-rosenp@gmail.com Signed-off-by: Takashi Iwai <tiwai@suse.de>
2026-07-22Merge back ACPI video bus driver changes for 7.3Rafael J. Wysocki
Merge the introduction of acpi_dev_is_video_device() along with some following driver updates related to it (from Andy Shevchenko). * acpi-video: platform/x86: thinkpad_acpi: Convert to use acpi_dev_is_video_device() helper PCI/VGA: Convert to use acpi_dev_is_video_device() helper i2c: acpi: Convert to use acpi_dev_is_video_device() helper ACPI: video: Convert to use acpi_dev_is_video_device() helper ACPI: scan: Convert to use acpi_dev_is_video_device() helper ACPI: utils: Introduce acpi_dev_is_video_device() helper
2026-07-22arm64: dts: nuvoton: npcm845: Reorder timer0 and PECI nodesTomer Maimon
Move the timer0 and PECI nodes so the APB children are ordered by ascending unit address. Signed-off-by: Tomer Maimon <tmaimon77@gmail.com> Link: https://patch.msgid.link/20260708165929.2233934-3-tmaimon77@gmail.com Signed-off-by: Andrew Jeffery <andrew@codeconstruct.com.au>
2026-07-22arm64: dts: nuvoton: npcm845: Drop redundant timer clock-namesTomer Maimon
The NPCM845 timer0 node references a single clock, but its clock-names property is not described by the timer binding. Drop the undocumented name so the DTS matches the binding. Signed-off-by: Tomer Maimon <tmaimon77@gmail.com> Link: https://patch.msgid.link/20260708165929.2233934-2-tmaimon77@gmail.com Signed-off-by: Andrew Jeffery <andrew@codeconstruct.com.au>
2026-07-22Merge branch 'icc-misc' into icc-nextGeorgi Djakov
* icc-misc interconnect: qcom: add COMPILE_TEST interconnect: qcom: simplify allocation interconnect: debugfs-client: add NULL check for platform_device_alloc interconnect: Fix use after free in icc_get() and of_icc_get_by_index() Signed-off-by: Georgi Djakov <djakov@kernel.org>
2026-07-22Merge branch 'icc-maili' into icc-nextGeorgi Djakov
Add interconnect bindings and RPMh-based interconnect driver support for the upcoming Qualcomm Maili SoC. * icc-maili dt-bindings: interconnect: qcom: document the RPMh Network-On-Chip interconnect in Maili SoC interconnect: qcom: add Maili interconnect provider driver Link: https://patch.msgid.link/20260622-maili_icc-v2-0-18b5ac08c04f@oss.qualcomm.com Signed-off-by: Georgi Djakov <djakov@kernel.org>
2026-07-22Merge branch 'icc-shikra' into icc-nextGeorgi Djakov
Add Epoch Subsystem (EPSS) L3 scaling support on Qualcomm Shikra SoC. EPSS hardware on Shikra is similar to other SoCs but supports only twelve L3 frequency entries (LUT). Reading the LUT beyond supported frequencies can expose incorrect frequencies. Introduce new compatible to represent this constrained variant of EPSS. * icc-shikra dt-bindings: interconnect: qcom,osm-l3: Add EPSS L3 DT binding for Qualcomm Shikra SoC interconnect: qcom: Add EPSS L3 scaling support for Shikra SoC Link: https://patch.msgid.link/20260603-shikra_epss_l3-v3-0-3c2e0b796e78@oss.qualcomm.com Signed-off-by: Georgi Djakov <djakov@kernel.org>
2026-07-22interconnect: Fix use after free in icc_get() and of_icc_get_by_index()Kuan-Wei Chiu
In of_icc_get_by_index() and icc_get(), if the dynamic allocation for path->name fails via kasprintf(), the error handling path directly calls kfree(path) to free the path object and returns an error. However, prior to this point, path_find() calls path_init(), which already links the path's requests into the req_list of the respective interconnect nodes via hlist_add_head(). Directly invoking kfree(path) leaves dangling pointers in the hlist. A subsequent call to icc_get() or icc_set_bw() will traverse or modify these corrupted lists, triggering a slab use afterfree. KASAN report showing the vulnerability when reproducing via debugfs: BUG: KASAN: slab-use-after-free in path_find+0x6f8/0xcfc Write of size 8 at addr fff000000d43f748 by task sh/1 ... Call trace: kasan_report+0xac/0xfc path_find+0x6f8/0xcfc icc_get+0x148/0x380 icc_get_set+0xf8/0x2d0 ... Freed by task 1: kfree+0x1a0/0x4a4 icc_get+0x2cc/0x380 icc_get_set+0xf8/0x2d0 Fix this by replacing kfree(path) with the proper teardown function, icc_put(path), which safely removes the requests from the req_list using hlist_del() and drops the provider usage references before freeing the memory. Additionally, in icc_get(), ensure that the icc_lock mutex is released prior to calling icc_put(path) to avoid a deadlock, as icc_put() internally acquires the same lock. Fixes: 3791163602f7 ("interconnect: Handle memory allocation errors") Cc: stable@vger.kernel.org Signed-off-by: Kuan-Wei Chiu <visitorckw@gmail.com> Link: https://patch.msgid.link/20260416190840.1753468-1-visitorckw@gmail.com Signed-off-by: Georgi Djakov <djakov@kernel.org>
2026-07-22firmware: arm_scmi: Fix requested device removal raceSudeep Holla
scmi_protocol_device_unrequest() drops scmi_requested_devices_mtx while notifying listeners but continues to retain the per-protocol list head. When two SCMI drivers for the same protocol unregister concurrently, one thread can remove the final request and free the list head while the other is running its notifier. The latter then dereferences the freed list head after reacquiring the mutex and can free it a second time. Complete the list and IDR updates, including freeing an empty list head, before dropping the mutex. Keep the blocking notifier outside the critical section and retain only the detached request across the callback. Fixes: d3cd7c525fd2 ("firmware: arm_scmi: Refactor protocol device creation") Reported-by: Sashiko <sashiko-bot@kernel.org> Link: https://patch.msgid.link/20260722095250.2011630-1-sudeep.holla@kernel.org Signed-off-by: Sudeep Holla <sudeep.holla@kernel.org>
2026-07-22RDMA/efa: Add Completion Counters supportMichael Margolin
Implement completion counters for the EFA device. Each completion counter is backed by two EFA event counters, one for success completions and one for error completions. The driver creates umem for counters from private descriptor ioctl attributes using core utility. Read operations are not implemented as the counter values are accessed directly from userspace through the mapped memory. Reviewed-by: Yonatan Nachum <ynachum@amazon.com> Signed-off-by: Michael Margolin <mrgolin@amazon.com> Link: https://patch.msgid.link/20260722083603.30334-7-mrgolin@amazon.com Signed-off-by: Leon Romanovsky <leon@kernel.org>
2026-07-22RDMA/efa: Update device interfaceMichael Margolin
Align device interface definitions. Reviewed-by: Daniel Kinsbursky <dkinsb@amazon.com> Reviewed-by: Yonatan Nachum <ynachum@amazon.com> Signed-off-by: Michael Margolin <mrgolin@amazon.com> Link: https://patch.msgid.link/20260722083603.30334-6-mrgolin@amazon.com Signed-off-by: Leon Romanovsky <leon@kernel.org>
2026-07-22RDMA/core: Add Completion Counters to resource trackingMichael Margolin
Track completion counter objects in the resource tracking database so they are visible through the rdma netlink interface. The rdma tool displays the comp_cntr count in the resource summary. Add RDMA_RESTRACK_COMP_CNTR type, embed rdma_restrack_entry in ib_comp_cntr, and add the res_to_dev mapping. Register the resource on create and remove it on destroy. Reviewed-by: Yonatan Nachum <ynachum@amazon.com> Signed-off-by: Michael Margolin <mrgolin@amazon.com> Link: https://patch.msgid.link/20260722083603.30334-5-mrgolin@amazon.com Signed-off-by: Leon Romanovsky <leon@kernel.org>
2026-07-22RDMA/core: Expose Completion Counter capabilities to userspaceMichael Margolin
Add a dedicated query interface for completion counter capabilities via UVERBS_METHOD_QUERY_COMP_CNTR_CAPS on the device object. The query returns the maximum number of counters, maximum counter value, and a bitmask of supported QP attach operations. Each field is an optional ioctl attribute, allowing userspace to request only the capabilities it needs. Drivers implement the query_comp_cntr_caps operation to report device-specific capabilities. Reviewed-by: Yonatan Nachum <ynachum@amazon.com> Signed-off-by: Michael Margolin <mrgolin@amazon.com> Link: https://patch.msgid.link/20260722083603.30334-4-mrgolin@amazon.com Signed-off-by: Leon Romanovsky <leon@kernel.org>
2026-07-22RDMA/core: Prevent destroying in-use completion countersMichael Margolin
Reject comp_cntr destroy while it is attached to any QP. Track attachments using an xarray in ib_qp keyed by the attach op_mask. Use op bitmask to reject overlapping attaches early. Reviewed-by: Yonatan Nachum <ynachum@amazon.com> Signed-off-by: Michael Margolin <mrgolin@amazon.com> Link: https://patch.msgid.link/20260722083603.30334-3-mrgolin@amazon.com Signed-off-by: Leon Romanovsky <leon@kernel.org>
2026-07-22RDMA/core: Add Completion Counters supportMichael Margolin
Add core infrastructure for Completion Counters, a light-weight alternative to polling CQ for tracking operation completions. Define the UVERBS_OBJECT_COMP_CNTR ioctl object with create, destroy, modify and read methods for both success and error counters. Add a QP attach method on the QP object to associate a completion counter with a queue pair. Add ib_comp_cntr struct, ib_comp_cntr_attach_attr, device ops, and DECLARE_RDMA_OBJ_SIZE for driver object allocation. Only userspace Completion Counters are supported at this stage. Reviewed-by: Yonatan Nachum <ynachum@amazon.com> Signed-off-by: Michael Margolin <mrgolin@amazon.com> Link: https://patch.msgid.link/20260722083603.30334-2-mrgolin@amazon.com Signed-off-by: Leon Romanovsky <leon@kernel.org>
2026-07-22RDMA/core: Fix potential use after free in ib_dealloc_pd_user()Patrisious Haddad
When accessing a PD via the netlink path the only synchronization mechanism for the said PD is rdma_restrack_get(). Currently, rdma_restrack_del() is invoked at the end of ib_dealloc_pd_user(), which is too late, since by that point vendor-specific resources associated with the PD might already be freed. This can leave a short window where the PD remains accessible through restrack, leading to a potential use-after-free. Fix this by moving the rdma_restrack_begin_del() call to the start of ib_dealloc_pd_user(), ensuring that the PD is removed from restrack before its internal resources are released. This guarantees that no new users hold references to a PD that is in the process of destruction. In addition, this change preserves the intended inverted order between create and destroy routines: resources are added to restrack at the end of successful creation, and hence shall be removed from the restrack first thing during the destruction flow, which keeps the lifecycle management consistent and predictable. Fixes: 91a7c58fce06 ("RDMA: Restore ability to fail on PD deallocate") Signed-off-by: Patrisious Haddad <phaddad@nvidia.com> Reviewed-by: Michael Guralnik <michaelgur@nvidia.com> Signed-off-by: Edward Srouji <edwards@nvidia.com> Link: https://patch.msgid.link/20260713-restrack-uaf-fix-resub-v2-8-bbe8bb270d51@nvidia.com Signed-off-by: Leon Romanovsky <leon@kernel.org>
2026-07-22RDMA/core: Fix potential use after free in uverbs_free_dmah()Patrisious Haddad
When accessing a dmah via the netlink path the only synchronization mechanism for the said dmah is rdma_restrack_get(). Currently, rdma_restrack_del() is invoked at the end of uverbs_free_dmah(), which is too late, since by that point vendor-specific resources associated with the dmah might already be freed. This can leave a short window where the dmah remains accessible through restrack, leading to a potential use-after-free. Fix this by moving the rdma_restrack_begin_del() call to the start of uverbs_free_dmah(), ensuring that the dmah is removed from restrack before its internal resources are released. This guarantees that no new users hold references to a dmah that is in the process of destruction. In addition, this change preserves the intended inverted order between create and destroy routines: resources are added to restrack at the end of successful creation, and hence shall be removed from the restrack first thing during the destruction flow, which keeps the lifecycle management consistent and predictable. Fixes: d83edab562a4 ("RDMA/core: Introduce a DMAH object and its alloc/free APIs") Signed-off-by: Patrisious Haddad <phaddad@nvidia.com> Reviewed-by: Michael Guralnik <michaelgur@nvidia.com> Signed-off-by: Edward Srouji <edwards@nvidia.com> Link: https://patch.msgid.link/20260713-restrack-uaf-fix-resub-v2-7-bbe8bb270d51@nvidia.com Signed-off-by: Leon Romanovsky <leon@kernel.org>
2026-07-22RDMA/core: Fix potential use after free in ib_free_cq()Patrisious Haddad
When accessing a CQ via the netlink path the only synchronization mechanism for the said CQ is rdma_restrack_get(). Currently, rdma_restrack_del() is invoked at the end of ib_free_cq(), which is too late, since by that point vendor-specific resources associated with the CQ might already be freed. This can leave a short window where the CQ remains accessible through restrack, leading to a potential use-after-free. Fix this by moving the rdma_restrack_del() call to be before the freeing of the vendor-specific resources ensuring that the CQ is removed from restrack before its internal resources are released. This guarantees that no new users hold references to a CQ that is in the process of destruction. Fixes: 43d781b9fa56 ("RDMA: Allow fail of destroy CQ") Signed-off-by: Patrisious Haddad <phaddad@nvidia.com> Reviewed-by: Michael Guralnik <michaelgur@nvidia.com> Signed-off-by: Edward Srouji <edwards@nvidia.com> Link: https://patch.msgid.link/20260713-restrack-uaf-fix-resub-v2-6-bbe8bb270d51@nvidia.com Signed-off-by: Leon Romanovsky <leon@kernel.org>
2026-07-22RDMA/core: Fix potential use after free in counter_release()Patrisious Haddad
When accessing a counter via the netlink path the only synchronization mechanism for the said counter is rdma_restrack_get(). Currently, rdma_restrack_del() is invoked at the end of counter_release(), which is too late, since by that point vendor-specific resources associated with the counter might already be freed. This can leave a short window where the counter remains accessible through restrack, leading to a potential use-after-free. Fix this by moving the rdma_restrack_del() call to be before the freeing of the vendor-specific resources, ensuring that the counter is removed from restrack before its internal resources are released. This guarantees that no new users hold references to a counter that is in the process of destruction. Fixes: 99fa331dc862 ("RDMA/counter: Add "auto" configuration mode support") Signed-off-by: Patrisious Haddad <phaddad@nvidia.com> Reviewed-by: Michael Guralnik <michaelgur@nvidia.com> Signed-off-by: Edward Srouji <edwards@nvidia.com> Link: https://patch.msgid.link/20260713-restrack-uaf-fix-resub-v2-5-bbe8bb270d51@nvidia.com Signed-off-by: Leon Romanovsky <leon@kernel.org>
2026-07-22RDMA/core: Fix potential use after free in ib_destroy_srq_user()Patrisious Haddad
When accessing a SRQ via the netlink path the only synchronization mechanism for the said SRQ is rdma_restrack_get(). Currently, rdma_restrack_del() is invoked at the end of ib_destroy_srq_user(), which is too late, since by that point vendor-specific resources associated with the SRQ might already be freed. This can leave a short window where the SRQ remains accessible through restrack, leading to a potential use-after-free. Fix this by moving the rdma_restrack_begin_del() call to the start of ib_destroy_srq_user(), ensuring that the SRQ is removed from restrack before its internal resources are released. This guarantees that no new users hold references to a SRQ that is in the process of destruction. In addition, this change preserves the intended inverted order between create and destroy routines: resources are added to restrack at the end of successful creation, and hence shall be removed from the restrack first thing during the destruction flow, which keeps the lifecycle management consistent and predictable. Fixes: 48f8a70e899f ("RDMA/restrack: Add support to get resource tracking for SRQ") Signed-off-by: Patrisious Haddad <phaddad@nvidia.com> Reviewed-by: Michael Guralnik <michaelgur@nvidia.com> Signed-off-by: Edward Srouji <edwards@nvidia.com> Link: https://patch.msgid.link/20260713-restrack-uaf-fix-resub-v2-4-bbe8bb270d51@nvidia.com Signed-off-by: Leon Romanovsky <leon@kernel.org>
2026-07-22RDMA/core: Fix potential use after free in ib_destroy_cq_user()Patrisious Haddad
When accessing a CQ via the netlink path the only synchronization mechanism for the said CQ is rdma_restrack_get(). Currently, rdma_restrack_del() is invoked at the end of ib_destroy_cq_user(), which is too late, since by that point vendor-specific resources associated with the CQ might already be freed. This can leave a short window where the CQ remains accessible through restrack, leading to a potential use-after-free. Fix this by moving the rdma_restrack_begin_del() call to the start of ib_destroy_cq_user(), ensuring that the CQ is removed from restrack before its internal resources are released. This guarantees that no new users hold references to a CQ that is in the process of destruction. In addition, this change preserves the intended inverted order between create and destroy routines: resources are added to restrack at the end of successful creation, and hence shall be removed from the restrack first thing during the destruction flow, which keeps the lifecycle management consistent and predictable. Fixes: 08f294a1524b ("RDMA/core: Add resource tracking for create and destroy CQs") Signed-off-by: Patrisious Haddad <phaddad@nvidia.com> Reviewed-by: Michael Guralnik <michaelgur@nvidia.com> Signed-off-by: Edward Srouji <edwards@nvidia.com> Link: https://patch.msgid.link/20260713-restrack-uaf-fix-resub-v2-3-bbe8bb270d51@nvidia.com Signed-off-by: Leon Romanovsky <leon@kernel.org>
2026-07-22RDMA/core: Fix use after free in ib_query_qp()Patrisious Haddad
When querying a QP via the netlink flow the only synchronization mechanism for the said QP is rdma_restrack_get(), meanwhile during the QP destroy path rdma_restrack_del() is called at the end of the ib_destroy_qp_user() function which is too late, since by then the vendor specific resources for said QP would already be destroyed, and till the rdma_restrack_del() is called this QP can still be accessed, which could cause the use after free below. Fix this by moving the rdma_restrack_begin_del() to the start of the ib_destroy_qp_user(), which in turn waits for all usages of the QP to be done then removes it from the database to prevent access to it while it is being destroyed. RIP: 0010:ib_query_qp+0x15/0x50 [ib_core] Code: 48 83 05 5d 8e b9 ff 01 eb b5 66 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 44 00 00 48 c7 46 40 00 00 00 00 48 c7 46 78 00 00 00 00 <48> 8b 07 48 8b 80 88 01 00 00 48 85 c0 74 1a 48 83 05 54 91 b9 ff RSP: 0018:ff11000108a8f2f0 EFLAGS: 00010202 RAX: 0000000000000000 RBX: ff11000108a8f370 RCX: ff11000108a8f370 RDX: 0000000000000000 RSI: ff11000108a8f3d8 RDI: 0000000000000000 RBP: ff1100010de5a000 R08: 0000000000000e80 R09: 0000000000000004 R10: ff110001057a604c R11: 0000000000000000 R12: ff11000108a8f370 R13: ff110001090e8000 R14: 0000000000000000 R15: ff110001057a602c FS: 00007f2ffd8db6c0(0000) GS:ff110008dc90b000(0000) knlGS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 CR2: 0000000000000000 CR3: 000000010b9a7004 CR4: 0000000000373eb0 Call Trace: <TASK> mlx5_ib_gsi_query_qp+0x21/0x50 [mlx5_ib] mlx5_ib_query_qp+0x689/0x9d0 [mlx5_ib] ib_query_qp+0x35/0x50 [ib_core] fill_res_qp_entry_query.isra.0+0x47/0x280 [ib_core] ? __wake_up+0x40/0x50 ? netlink_broadcast_filtered+0x15a/0x550 ? kobject_uevent_env+0x562/0x710 ? ep_poll_callback+0x242/0x270 ? __nla_put+0xc/0x20 ? nla_put+0x28/0x40 ? nla_put_string+0x2e/0x40 [ib_core] fill_res_qp_entry+0x138/0x190 [ib_core] res_get_common_dumpit+0x4a5/0x800 [ib_core] ? fill_res_qp_entry_query.isra.0+0x280/0x280 [ib_core] nldev_res_get_qp_dumpit+0x1e/0x30 [ib_core] netlink_dump+0x16f/0x450 __netlink_dump_start+0x1ce/0x2e0 rdma_nl_rcv_msg+0x1d3/0x330 [ib_core] ? nldev_res_get_qp_raw_dumpit+0x30/0x30 [ib_core] rdma_nl_rcv_skb.constprop.0.isra.0+0x108/0x180 [ib_core] rdma_nl_rcv+0x12/0x20 [ib_core] netlink_unicast+0x255/0x380 ? __alloc_skb+0xfa/0x1e0 netlink_sendmsg+0x1f3/0x420 __sock_sendmsg+0x38/0x60 ____sys_sendmsg+0x1e8/0x230 ? copy_msghdr_from_user+0xea/0x170 ___sys_sendmsg+0x7c/0xb0 ? __futex_wait+0x95/0xf0 ? __futex_wake_mark+0x40/0x40 ? futex_wait+0x67/0x100 ? futex_wake+0xac/0x1b0 __sys_sendmsg+0x5f/0xb0 do_syscall_64+0x55/0xb90 entry_SYSCALL_64_after_hwframe+0x4b/0x53 Fixes: 514aee660df4 ("RDMA: Globally allocate and release QP memory") Signed-off-by: Patrisious Haddad <phaddad@nvidia.com> Reviewed-by: Michael Guralnik <michaelgur@nvidia.com> Signed-off-by: Edward Srouji <edwards@nvidia.com> Link: https://patch.msgid.link/20260713-restrack-uaf-fix-resub-v2-2-bbe8bb270d51@nvidia.com Signed-off-by: Leon Romanovsky <leon@kernel.org>
2026-07-22RDMA/core: Add rdma_restrack_begin/abort/commit_del() operationsPatrisious Haddad
Add rdma_restrack_abort_del(), rdma_restrack_begin_del() and rdma_restrack_commit_del() functions to allow deleting a resource from the xarray to effectively prevent future access to it and wait for all current users to finish while preserving its index in the xarray to allow to re-insert it if needed with guaranteed success. This is a preparatory change for subsequent patches in the series which will use these functions to fix the cleanup flow. Signed-off-by: Patrisious Haddad <phaddad@nvidia.com> Reviewed-by: Michael Guralnik <michaelgur@nvidia.com> Signed-off-by: Edward Srouji <edwards@nvidia.com> Link: https://patch.msgid.link/20260713-restrack-uaf-fix-resub-v2-1-bbe8bb270d51@nvidia.com Signed-off-by: Leon Romanovsky <leon@kernel.org>
2026-07-22interconnect: debugfs-client: add NULL check for platform_device_allocLi Jun
platform_device_alloc() may return NULL when memory allocation fails. Add proper error handling to prevent a potential NULL pointer dereference when calling platform_device_add() with a NULL pointer. Signed-off-by: Li Jun <lijun01@kylinos.cn> Link: https://patch.msgid.link/20260602103120.2966458-1-lijun01@kylinos.cn Signed-off-by: Georgi Djakov <djakov@kernel.org>
2026-07-22RDMA/mana_ib: drain QP references after partial table insertionLeon Romanovsky
mana_table_store_ud_qp() publishes a QP at its send-queue id before inserting the receive-queue id, dropping the XArray lock between the two xa_insert_irq() calls. A concurrent completion handler can look up the QP and take a transient reference. When the second insertion fails, the rollback erased only the send-queue entry and returned, leaving both the initial table reference and the transient reference outstanding while RDMA core frees the QP, causing a use-after-free. Drain the reference as normal destruction does: drop the initial reference and wait for qp->free, releasing the QP only after every concurrent lookup returns its reference. Fixes: 8001e9257eca ("RDMA/mana_ib: extend mana QP table") Link: https://patch.msgid.link/20260721-if-mana-table-store-qp-qids-partiall-v1-1-8fb3d2d2b559@nvidia.com Reviewed-by: Konstantin Taranov <kotaranov@microsoft.com> Reviewed-by: Long Li <longli@microsoft.com> Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
2026-07-22USB: serial: io_edgeport: cap received transmit creditsSunho Park
The interrupt-status packet reports transmit credits returned by the device. edge_interrupt_callback() adds the 16-bit value to txCredits without checking maxTxCredits. edge_write() uses txCredits minus the software FIFO count as the amount of data that fits. Since the FIFO is allocated with maxTxCredits bytes, txCredits exceeding maxTxCredits can cause OOB write in ring buffer. Cap accumulated credits at maxTxCredits. Conforming devices should never hit the cap. Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2") Cc: stable@vger.kernel.org Assisted-by: Codex:GPT-5 Signed-off-by: Sunho Park <shpark061104@gmail.com> Signed-off-by: Johan Hovold <johan@kernel.org>
2026-07-22wifi: brcmfmac: fix 802.1X-SHA256 call trace warningShelley Yang
Based on wpa_auth as 1x_256 mode, need to set up "use_fwsup" with BRCMF_PROFILE_FWSUP_1X. Or it will happen trace warning when call brcmf_cfg80211_set_pmk(). [ 4481.831101] ------------[ cut here ]------------ [ 4481.831102] WARNING: CPU: 1 PID: 2997 at drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c:7242 brcmf_cfg80211_set_pmk+0x77/0xd0 [brcmfmac] [...] [ 4481.831202] Call Trace: [ 4481.831204]  <TASK> [ 4481.831205]  nl80211_set_pmk+0x183/0x250 [cfg80211] [ 4481.831233]  genl_family_rcv_msg_doit+0xea/0x150 [ 4481.831237]  genl_rcv_msg+0x104/0x240 [ 4481.831239]  ? cfg80211_probe_status+0x2c0/0x2c0 [cfg80211] [ 4481.831257]  ? genl_family_rcv_msg_doit+0x150/0x150 [ 4481.831259]  netlink_rcv_skb+0x4e/0x100 [ 4481.831261]  genl_rcv+0x24/0x40 [ 4481.831262]  netlink_unicast+0x236/0x380 [ 4481.831264]  netlink_sendmsg+0x250/0x4b0 [ 4481.831266]  sock_sendmsg+0x5c/0x70 [ 4481.831269]  ____sys_sendmsg+0x236/0x2b0 [ 4481.831271]  ? copy_msghdr_from_user+0x6d/0xa0 [ 4481.831272]  ___sys_sendmsg+0x86/0xd0 [ 4481.831274]  ? avc_has_perm+0x8c/0x1a0 [ 4481.831276]  ? preempt_count_add+0x6a/0xa0 [ 4481.831279]  ? sock_has_perm+0x82/0xa0 [ 4481.831280]  __sys_sendmsg+0x57/0xa0 [ 4481.831282]  do_syscall_64+0x38/0x90 [ 4481.831284]  entry_SYSCALL_64_after_hwframe+0x63/0xcd [ 4481.831286] RIP: 0033:0x7fd270d369b4 Fixes: 2526ff21aa77 ("brcmfmac: support 4-way handshake offloading for 802.1X") Signed-off-by: Shelley Yang <shelley.yang@infineon.com> Acked-by: Arend van Spriel <arend.vanspriel@broadcom.com> Link: https://patch.msgid.link/20260525083859.581246-1-shelley.yang@infineon.com Signed-off-by: Johannes Berg <johannes.berg@intel.com>