Skip to content

[rocky9_7] History Rebuild through kernel-5.14.0-611.30.1.el9_7#875

Merged
PlaidCat merged 62 commits intorocky9_7from
rocky9_7_rebuild
Feb 13, 2026
Merged

[rocky9_7] History Rebuild through kernel-5.14.0-611.30.1.el9_7#875
PlaidCat merged 62 commits intorocky9_7from
rocky9_7_rebuild

Conversation

@PlaidCat
Copy link
Collaborator

@PlaidCat PlaidCat commented Feb 12, 2026

This is an automated kernel history rebuild using cron and internal tooling. It follows the same process used for previous history rebuilds:

  • Download all unprocessed src.rpm packages
  • For each src.rpm:
    • Identify all commits in the changelog up to the last known tag (5.14.0-611)
    • Replay commits in chronological order (oldest to newest in the changelog) using git cherry-pick
    • Replace the code in the branch with the output of rpmbuild -bp for the corresponding src.rpm
    • Tag the rebuild branch

JIRA Tickets

Rebuild Splat Inspection

kernel-5.14.0-611.30.1.el9_7

$ cat ciq/ciq_backports/kernel-5.14.0-611.30.1.el9_7/rebuild.details.txt
Rebuild_History BUILDABLE
Rebuilding Kernel from rpm changelog with Fuzz Limit: 87.50%
Number of commits in upstream range v5.14~1..kernel-mainline: 351590
Number of commits in rpm: 67
Number of commits matched with upstream: 61 (91.04%)
Number of commits in upstream but not in rpm: 351529
Number of commits NOT found in upstream: 6 (8.96%)

Rebuilding Kernel on Branch rocky9_7_rebuild_kernel-5.14.0-611.30.1.el9_7 for kernel-5.14.0-611.30.1.el9_7
Clean Cherry Picks: 43 (70.49%)
Empty Cherry Picks: 18 (29.51%)
_______________________________

__EMPTY COMMITS__________________________
64e2f60f355e556337fcffe80b9bcff1b22c9c42 s390: Disable ARCH_WANT_OPTIMIZE_HUGETLB_VMEMMAP
b64700d41bdc4e9f82f1346c15a3678ebb91a89c squashfs: fix memory leak in squashfs_fill_super
ce7a381697cb3958ffe0b45e5028ac69444e9288 net: bonding: add broadcast_neighbor option for 802.3ad
3d98ee52659c3f1d3913ae5b97f7743c5247752c net: bonding: add broadcast_neighbor netlink option
09eed1192cec1755967f2af8394207acdde579a1 neighbour: switch to standard rcu, instead of rcu_bh
ef1148d4487438a3408d6face2a8360d91b4af70 ipv6: remove nexthop_fib6_nh_bh()
88fe14253e181878c2ddb51a298ae8c468a63010 net: dst: add four helpers to annotate data-races around dst->dev
1dbf1d590d10a6d1978e8184f8dfe20af22d680a net: Add locking to protect skb->dev access in ip_output
139512191bd06f1b496117c76372b2ce372c9a41 ipv4: use RCU protection in __ip_rt_update_pmtu()
caedcc5b6df1b2e2b5f39079e3369c1d4d5c5f50 net: dst: introduce dst->dev_rcu
11709573cc4e48dc34c80fc7ab9ce5b159e29695 ipv6: use RCU in ip6_output()
9085e56501d93af9f2d7bd16f7fcfacdde47b99c ipv6: use RCU in ip6_xmit()
071d8012869b6af352acca346ade13e7be90a49f ipv4: use RCU protection in ip_dst_mtu_maybe_forward()
99a2ace61b211b0be861b07fbaa062fca4b58879 net: use dst_dev_rcu() in sk_setup_caps()
7f15ee35972dd3dee37704bfd0f136290f6d63d9 dpll: add reference-sync netlink attribute
58256a26bfb37a94738dd65618b1f31f460f8d91 dpll: add reference sync get/set
e28d5a68b6519ec6b2118a3f604295b5534eeb51 dpll: add phase_offset_avg_factor_get/set callback ops
41b70df5b38bc80967d2e0ed55cc3c3896bba781 io_uring/net: commit partial buffers on retry

__CHANGES NOT IN UPSTREAM________________
Replace sbat with Rocky Linux sbat
Change bug tracker URL
Ensure appended release in sbat is removed'
ice: prevent NULL deref in ice_lag_move_new_vf_nodes()
s390: mm: add stub for hugetlb_optimize_vmemmap_key
cifs: Fix deadlock in cifs_writepages during reconnect

BUILD

$ grep -E -B 5 -A 5 "\[TIMER\]|^Starting Build" $(ls -t kbuild* | head -n1)
/mnt/code/kernel-src-tree-build
Running make mrproper...
  CLEAN   scripts/basic
  CLEAN   scripts/kconfig
  CLEAN   include/config include/generated
[TIMER]{MRPROPER}: 6s
x86_64 architecture detected, copying config
'configs/kernel-x86_64-rhel.config' -> '.config'
Setting Local Version for build
CONFIG_LOCALVERSION="-rocky9_7_rebuild-03845562c1ae"
Making olddefconfig
--
  HOSTCC  scripts/kconfig/util.o
  HOSTLD  scripts/kconfig/conf
#
# configuration written to .config
#
Starting Build
  SYSHDR  arch/x86/include/generated/uapi/asm/unistd_32.h
  SYSHDR  arch/x86/include/generated/uapi/asm/unistd_64.h
  SYSHDR  arch/x86/include/generated/uapi/asm/unistd_x32.h
  SYSTBL  arch/x86/include/generated/asm/syscalls_32.h
  SYSHDR  arch/x86/include/generated/asm/unistd_32_ia32.h
--
  BTF [M] sound/usb/snd-usb-audio.ko
  BTF [M] sound/x86/snd-hdmi-lpe-audio.ko
  BTF [M] sound/virtio/virtio_snd.ko
  LD [M]  sound/xen/snd_xen_front.ko
  BTF [M] sound/xen/snd_xen_front.ko
[TIMER]{BUILD}: 1605s
Making Modules
  INSTALL /lib/modules/5.14.0-rocky9_7_rebuild-03845562c1ae/kernel/arch/x86/crypto/blake2s-x86_64.ko
  INSTALL /lib/modules/5.14.0-rocky9_7_rebuild-03845562c1ae/kernel/arch/x86/crypto/blowfish-x86_64.ko
  INSTALL /lib/modules/5.14.0-rocky9_7_rebuild-03845562c1ae/kernel/arch/x86/crypto/camellia-aesni-avx-x86_64.ko
  INSTALL /lib/modules/5.14.0-rocky9_7_rebuild-03845562c1ae/kernel/arch/x86/crypto/camellia-aesni-avx2.ko
--
  SIGN    /lib/modules/5.14.0-rocky9_7_rebuild-03845562c1ae/kernel/sound/virtio/virtio_snd.ko
  SIGN    /lib/modules/5.14.0-rocky9_7_rebuild-03845562c1ae/kernel/sound/x86/snd-hdmi-lpe-audio.ko
  SIGN    /lib/modules/5.14.0-rocky9_7_rebuild-03845562c1ae/kernel/sound/xen/snd_xen_front.ko
  SIGN    /lib/modules/5.14.0-rocky9_7_rebuild-03845562c1ae/kernel/sound/usb/snd-usb-audio.ko
  DEPMOD  /lib/modules/5.14.0-rocky9_7_rebuild-03845562c1ae
[TIMER]{MODULES}: 10s
Making Install
sh ./arch/x86/boot/install.sh 5.14.0-rocky9_7_rebuild-03845562c1ae \
	arch/x86/boot/bzImage System.map "/boot"
[TIMER]{INSTALL}: 22s
Checking kABI
kABI check passed
Setting Default Kernel to /boot/vmlinuz-5.14.0-rocky9_7_rebuild-03845562c1ae and Index to 0
Hopefully Grub2.0 took everything ... rebooting after time metrices
[TIMER]{MRPROPER}: 6s
[TIMER]{BUILD}: 1605s
[TIMER]{MODULES}: 10s
[TIMER]{INSTALL}: 22s
[TIMER]{TOTAL} 1648s
Rebooting in 10 seconds

KSelfTests

$ get_kselftest_diff.sh
kselftest.5.14.0-rocky9_7_rebuild-1b238987a0e3.log
313
kselftest.5.14.0-rocky9_7_rebuild-900797cbe586.log
313
kselftest.5.14.0-jmaple_rlc-9_5.14.0-611.27.1.el9_7-cb4ece4305cb+.log
366
kselftest.5.14.0-rocky9_7_rebuild-03845562c1ae.log
313
Before: kselftest.5.14.0-jmaple_rlc-9_5.14.0-611.27.1.el9_7-cb4ece4305cb+.log
After: kselftest.5.14.0-rocky9_7_rebuild-03845562c1ae.log
Diff:
-ok 11 selftests: net: netdevice.sh # SKIP
-ok 12 selftests: net: rtnetlink.sh # SKIP
-ok 12 selftests: x86: fsgsbase_restore_64
-ok 13 selftests: net: xfrm_policy.sh # SKIP
-ok 13 selftests: x86: sigaltstack_64
-ok 14 selftests: x86: fsgsbase_64
-ok 15 selftests: net: fib_tests.sh # SKIP
-ok 15 selftests: x86: sysret_rip_64
-ok 16 selftests: x86: syscall_numbering_64
-ok 17 selftests: x86: corrupt_xstate_header_64
-ok 1 selftests: capabilities: test_execve
-ok 1 selftests: clone3: clone3
+ok 1 selftests: filesystems: devpts_pts # SKIP
-ok 1 selftests: mm: run_vmtests.sh # SKIP
+ok 1 selftests: seccomp: seccomp_bpf
-ok 1 selftests: tty: tty_tstamp_update
+ok 1 selftests: tty: tty_tstamp_update # SKIP
-ok 21 selftests: net: fib_rule_tests.sh # SKIP
-ok 2 selftests: clone3: clone3_clear_sighand
-ok 2 selftests: iommu: iommufd_fail_nth
-ok 2 selftests: net: reuseport_bpf_cpu
-ok 2 selftests: x86: sysret_ss_attrs_64
-ok 35 selftests: net: fin_ack_lat.sh
-ok 37 selftests: net: fib_nexthops.sh # SKIP
-ok 39 selftests: net: altnames.sh # SKIP
-ok 3 selftests: clone3: clone3_set_tid
-ok 3 selftests: x86: syscall_nt_64
-ok 42 selftests: net: ip6_gre_headroom.sh
-ok 48 selftests: net: drop_monitor_tests.sh # SKIP
-ok 4 selftests: clone3: clone3_cap_checkpoint_restore
-ok 4 selftests: net: reuseport_dualstack
-ok 4 selftests: x86: test_mremap_vdso_64
-ok 50 selftests: net: bareudp.sh # SKIP
-ok 55 selftests: net: gre_gso.sh # SKIP
-ok 59 selftests: net: srv6_end_dt46_l3vpn_test.sh # SKIP
-ok 5 selftests: net: reuseaddr_conflict
-ok 5 selftests: x86: check_initial_reg_state_64
-ok 60 selftests: net: srv6_end_dt4_l3vpn_test.sh # SKIP
-ok 61 selftests: net: srv6_end_dt6_l3vpn_test.sh # SKIP
-ok 62 selftests: net: srv6_hencap_red_l3vpn_test.sh # SKIP
-ok 63 selftests: net: srv6_hl2encap_red_l2vpn_test.sh # SKIP
-ok 64 selftests: net: srv6_end_next_csid_l3vpn_test.sh # SKIP
-ok 65 selftests: net: srv6_end_x_next_csid_l3vpn_test.sh # SKIP
-ok 66 selftests: net: srv6_end_flavors_test.sh # SKIP
-ok 67 selftests: net: vrf_strict_mode_test.sh # SKIP
-ok 69 selftests: net: l2_tos_ttl_inherit.sh # SKIP
-ok 71 selftests: net: big_tcp.sh # SKIP
-ok 72 selftests: net: test_vxlan_vnifiltering.sh # SKIP
-ok 74 selftests: net: test_vxlan_mdb.sh # SKIP
-ok 75 selftests: net: test_bridge_neigh_suppress.sh # SKIP
-ok 76 selftests: net: test_vxlan_nolocalbypass.sh # SKIP
-ok 77 selftests: net: test_bridge_backup_port.sh # SKIP
-ok 7 selftests: landlock: scoped_test
-ok 7 selftests: x86: iopl_64
-ok 80 selftests: net: ipv6_route_update_soft_lockup.sh
-ok 8 selftests: net: run_netsocktests
-ok 8 selftests: x86: ioperm_64
-ok 9 selftests: net: run_afpackettests # SKIP
-ok 9 selftests: x86: test_vsyscall_64

jira KERNEL-619
cve CVE-2025-40141
Rebuild_History Non-Buildable kernel-5.14.0-611.30.1.el9_7
commit-author Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
commit 9950f09

This attempt to fix similar issue to sco_conn_free where if the
conn->sk is not set to NULL may lead to UAF on iso_conn_free.

Fixes: ccf74f2 ("Bluetooth: Add BTPROTO_ISO socket type")
	Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
(cherry picked from commit 9950f09)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-619
Rebuild_History Non-Buildable kernel-5.14.0-611.30.1.el9_7
commit-author Xiao Ni <xni@redhat.com>
commit 9e59d60

Now del_gendisk and put_disk are called asynchronously in workqueue work.
The asynchronous way has a problem that the device node can still exist
after mdadm --stop command returns in a short window. So udev rule can
open this device node and create the struct mddev in kernel again. So put
del_gendisk in control path and still leave put_disk in md_kobj_release
to avoid uaf of gendisk.

Function del_gendisk can't be called with reconfig_mutex. If it's called
with reconfig mutex, a deadlock can happen. del_gendisk waits all sysfs
files access to finish and sysfs file access waits reconfig mutex. So
put del_gendisk after releasing reconfig mutex.

But there is still a window that sysfs can be accessed between mddev_unlock
and del_gendisk. So some actions (add disk, change level, .e.g) can happen
which lead unexpected results. MD_DELETED is used to resolve this problem.
MD_DELETED is set before releasing reconfig mutex and it should be checked
for these sysfs access which need reconfig mutex. For sysfs access which
don't need reconfig mutex, del_gendisk will wait them to finish.

But it doesn't need to do this in function mddev_lock_nointr. There are
ten places that call it.
* Five of them are in dm raid which we don't need to care. MD_DELETED is
only used for md raid.
* stop_sync_thread, md_do_sync and md_start_sync are related sync request,
and it needs to wait sync thread to finish before stopping an array.
* md_ioctl: md_open is called before md_ioctl, so ->openers is added. It
will fail to stop the array. So it doesn't need to check MD_DELETED here
* md_set_readonly:
It needs to call mddev_set_closing_and_sync_blockdev when setting readonly
or read_auto. So it will fail to stop the array too because MD_CLOSING is
already set.

	Reviewed-by: Yu Kuai <yukuai3@huawei.com>
	Signed-off-by: Xiao Ni <xni@redhat.com>
Link: https://lore.kernel.org/linux-raid/20250611073108.25463-2-xni@redhat.com
	Signed-off-by: Yu Kuai <yukuai3@huawei.com>
(cherry picked from commit 9e59d60)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-619
Rebuild_History Non-Buildable kernel-5.14.0-611.30.1.el9_7
commit-author Yu Kuai <yukuai3@huawei.com>
commit 1df1fc8

Commit 9e59d60 ("md: call del_gendisk in control path") moves
setting MD_DELETED from __mddev_put() to do_md_stop(), however, for the
case create on open, mddev can be freed without do_md_stop():

1) open

md_probe
 md_alloc_and_put
  md_alloc
   mddev_alloc
   atomic_set(&mddev->active, 1);
   mddev->hold_active = UNTIL_IOCTL
  mddev_put
   atomic_dec_and_test(&mddev->active)
    if (mddev->hold_active)
    -> active is 0, hold_active is set
md_open
 mddev_get
  atomic_inc(&mddev->active);

2) ioctl that is not STOP_ARRAY, for example, GET_ARRAY_INFO:

md_ioctl
 mddev->hold_active = 0

3) close

md_release
 mddev_put(mddev);
  atomic_dec_and_lock(&mddev->active, &all_mddevs_lock)
  __mddev_put
  -> hold_active is cleared, mddev will be freed
  queue_work(md_misc_wq, &mddev->del_work)

Now that MD_DELETED is not set, before mddev is freed by
mddev_delayed_delete(), md_open can still succeed and break mddev
lifetime, causing mddev->kobj refcount underflow or mddev uaf
problem.

Fix this problem by setting MD_DELETED before queuing del_work.

	Reported-by: syzbot+9921e319bd6168140b40@syzkaller.appspotmail.com
Closes: https://lore.kernel.org/all/68894408.a00a0220.26d0e1.0012.GAE@google.com/
	Reported-by: syzbot+fa3a12519f0d3fd4ec16@syzkaller.appspotmail.com
Closes: https://lore.kernel.org/all/68894408.a00a0220.26d0e1.0013.GAE@google.com/
Fixes: 9e59d60 ("md: call del_gendisk in control path")
Link: https://lore.kernel.org/linux-raid/20250730073321.2583158-1-yukuai1@huaweicloud.com
	Signed-off-by: Yu Kuai <yukuai3@huawei.com>
	Reviewed-by: Paul Menzel <pmenzel@molgen.mpg.de>
	Reviewed-by: Xiao Ni <xni@redhat.com>
(cherry picked from commit 1df1fc8)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-619
Rebuild_History Non-Buildable kernel-5.14.0-611.30.1.el9_7
commit-author Xiao Ni <xni@redhat.com>
commit 5f286f3

UNTIL_STOP is used to avoid mddev is freed on the last close before adding
disks to mddev. And it should be cleared when stopping an array which is
mentioned in commit efeb53c ("md: Allow md devices to be created by
name."). So reset ->hold_active to 0 in md_clean.

And MD_CLOSING should be kept until mddev is freed to avoid reopen.

	Reviewed-by: Yu Kuai <yukuai3@huawei.com>
	Signed-off-by: Xiao Ni <xni@redhat.com>
Link: https://lore.kernel.org/linux-raid/20250611073108.25463-3-xni@redhat.com
	Signed-off-by: Yu Kuai <yukuai3@huawei.com>
(cherry picked from commit 5f286f3)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-619
Rebuild_History Non-Buildable kernel-5.14.0-611.30.1.el9_7
commit-author Xiao Ni <xni@redhat.com>
commit 25db5f2

commit 9e59d60 ("md: call del_gendisk in control path") changes the
async way to sync way of calling del_gendisk. But it breaks mdadm
--assemble command. The assemble command runs like this:
1. create the array
2. stop the array
3. access the sysfs files after stopping

The sync way calls del_gendisk in step 2, so all sysfs files are removed.
Now to avoid breaking mdadm assemble command, this patch adds the parameter
legacy_async_del_gendisk that can be used to choose which way. The default
is async way. In future, we plan to change default to sync way in kernel
7.0. Then users need to upgrade to mdadm 4.5+ which removes step 2.

Fixes: 9e59d60 ("md: call del_gendisk in control path")
	Reported-by: Mikulas Patocka <mpatocka@redhat.com>
Closes: https://lore.kernel.org/linux-raid/CAMw=ZnQ=ET2St-+hnhsuq34rRPnebqcXqP1QqaHW5Bh4aaaZ4g@mail.gmail.com/T/#t
Suggested-and-reviewed-by: Yu Kuai <yukuai3@huawei.com>
	Signed-off-by: Xiao Ni <xni@redhat.com>
	Reviewed-by: Paul Menzel <pmenzel@molgen.mpg.de>
Link: https://lore.kernel.org/linux-raid/20250813032929.54978-1-xni@redhat.com
	Signed-off-by: Yu Kuai <yukuai3@huawei.com>
(cherry picked from commit 25db5f2)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-619
Rebuild_History Non-Buildable kernel-5.14.0-611.30.1.el9_7
commit-author Xiao Ni <xni@redhat.com>
commit cc394b9

In sync del gendisk path, it deletes gendisk first and the directory
/sys/block/md is removed. Then it releases mddev kobj in a delayed work.
If we enable debug log in sysfs_remove_group, we can see the debug log
'sysfs group bitmap not found for kobject md'. It's the reason that the
parent kobj has been deleted, so it can't find parent directory.

In creating path, it allocs gendisk first, then adds mddev kobj. So it
should delete mddev kobj before deleting gendisk.

Before commit 9e59d60 ("md: call del_gendisk in control path"), it
releases mddev kobj first. If the kobj hasn't been deleted, it does clean
job and deletes the kobj. Then it calls del_gendisk and releases gendisk
kobj. So it doesn't need to call kobject_del to delete mddev kobj. After
this patch, in sync del gendisk path, the sequence changes. So it needs
to call kobject_del to delete mddev kobj.

After this patch, the sequence is:
1. kobject del mddev kobj
2. del_gendisk deletes gendisk kobj
3. mddev_delayed_delete releases mddev kobj
4. md_kobj_release releases gendisk kobj

Link: https://lore.kernel.org/linux-raid/20250928012424.61370-1-xni@redhat.com
Fixes: 9e59d60 ("md: call del_gendisk in control path")
	Signed-off-by: Xiao Ni <xni@redhat.com>
	Reviewed-by: Li Nan <linan122@huawei.com>
	Signed-off-by: Yu Kuai <yukuai@fnnas.com>
(cherry picked from commit cc394b9)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-619
Rebuild_History Non-Buildable kernel-5.14.0-611.30.1.el9_7
commit-author Xiao Ni <xni@redhat.com>
commit 90e3bb4

There is a uaf problem which is found by case 23rdev-lifetime:

Oops: general protection fault, probably for non-canonical address 0xdead000000000122
RIP: 0010:bdi_unregister+0x4b/0x170
Call Trace:
 <TASK>
 __del_gendisk+0x356/0x3e0
 mddev_unlock+0x351/0x360
 rdev_attr_store+0x217/0x280
 kernfs_fop_write_iter+0x14a/0x210
 vfs_write+0x29e/0x550
 ksys_write+0x74/0xf0
 do_syscall_64+0xbb/0x380
 entry_SYSCALL_64_after_hwframe+0x77/0x7f
RIP: 0033:0x7ff5250a177e

The sequence is:
1. rdev remove path gets reconfig_mutex
2. rdev remove path release reconfig_mutex in mddev_unlock
3. md stop calls do_md_stop and sets MD_DELETED
4. rdev remove path calls del_gendisk because MD_DELETED is set
5. md stop path release reconfig_mutex and calls del_gendisk again

So there is a race condition we should resolve. This patch adds a
flag MD_DO_DELETE to avoid the race condition.

Link: https://lore.kernel.org/linux-raid/20251029063419.21700-1-xni@redhat.com
Fixes: 9e59d60 ("md: call del_gendisk in control path")
	Signed-off-by: Xiao Ni <xni@redhat.com>
	Suggested-by: Yu Kuai <yukuai@fnnas.com>
	Reviewed-by: Li Nan <linan122@huawei.com>
	Signed-off-by: Yu Kuai <yukuai@fnnas.com>
(cherry picked from commit 90e3bb4)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-619
cve CVE-2025-37789
Rebuild_History Non-Buildable kernel-5.14.0-611.30.1.el9_7
commit-author Ilya Maximets <i.maximets@ovn.org>
commit 65d9119

It's not safe to access nla_len(ovs_key) if the data is smaller than
the netlink header.  Check that the attribute is OK first.

Fixes: ccb1352 ("net: Add Open vSwitch kernel components.")
	Reported-by: syzbot+b07a9da40df1576b8048@syzkaller.appspotmail.com
Closes: https://syzkaller.appspot.com/bug?extid=b07a9da40df1576b8048
	Tested-by: syzbot+b07a9da40df1576b8048@syzkaller.appspotmail.com
	Signed-off-by: Ilya Maximets <i.maximets@ovn.org>
	Reviewed-by: Eelco Chaudron <echaudro@redhat.com>
	Acked-by: Aaron Conole <aconole@redhat.com>
Link: https://patch.msgid.link/20250412104052.2073688-1-i.maximets@ovn.org
	Signed-off-by: Jakub Kicinski <kuba@kernel.org>
(cherry picked from commit 65d9119)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-619
cve CVE-2025-37819
Rebuild_History Non-Buildable kernel-5.14.0-611.30.1.el9_7
commit-author Suzuki K Poulose <suzuki.poulose@arm.com>
commit 3318dc2

With ACPI in place, gicv2m_get_fwnode() is registered with the pci
subsystem as pci_msi_get_fwnode_cb(), which may get invoked at runtime
during a PCI host bridge probe. But, the call back is wrongly marked as
__init, causing it to be freed, while being registered with the PCI
subsystem and could trigger:

 Unable to handle kernel paging request at virtual address ffff8000816c0400
  gicv2m_get_fwnode+0x0/0x58 (P)
  pci_set_bus_msi_domain+0x74/0x88
  pci_register_host_bridge+0x194/0x548

This is easily reproducible on a Juno board with ACPI boot.

Retain the function for later use.

Fixes: 0644b3d ("irqchip/gic-v2m: acpi: Introducing GICv2m ACPI support")
	Signed-off-by: Suzuki K Poulose <suzuki.poulose@arm.com>
	Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
	Signed-off-by: Ingo Molnar <mingo@kernel.org>
	Reviewed-by: Marc Zyngier <maz@kernel.org>
	Cc: stable@vger.kernel.org
(cherry picked from commit 3318dc2)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
…" problem

jira KERNEL-619
cve CVE-2025-38022
Rebuild_History Non-Buildable kernel-5.14.0-611.30.1.el9_7
commit-author Zhu Yanjun <yanjun.zhu@linux.dev>
commit d0706bf

Call Trace:

 __dump_stack lib/dump_stack.c:94 [inline]
 dump_stack_lvl+0x116/0x1f0 lib/dump_stack.c:120
 print_address_description mm/kasan/report.c:408 [inline]
 print_report+0xc3/0x670 mm/kasan/report.c:521
 kasan_report+0xe0/0x110 mm/kasan/report.c:634
 strlen+0x93/0xa0 lib/string.c:420
 __fortify_strlen include/linux/fortify-string.h:268 [inline]
 get_kobj_path_length lib/kobject.c:118 [inline]
 kobject_get_path+0x3f/0x2a0 lib/kobject.c:158
 kobject_uevent_env+0x289/0x1870 lib/kobject_uevent.c:545
 ib_register_device drivers/infiniband/core/device.c:1472 [inline]
 ib_register_device+0x8cf/0xe00 drivers/infiniband/core/device.c:1393
 rxe_register_device+0x275/0x320 drivers/infiniband/sw/rxe/rxe_verbs.c:1552
 rxe_net_add+0x8e/0xe0 drivers/infiniband/sw/rxe/rxe_net.c:550
 rxe_newlink+0x70/0x190 drivers/infiniband/sw/rxe/rxe.c:225
 nldev_newlink+0x3a3/0x680 drivers/infiniband/core/nldev.c:1796
 rdma_nl_rcv_msg+0x387/0x6e0 drivers/infiniband/core/netlink.c:195
 rdma_nl_rcv_skb.constprop.0.isra.0+0x2e5/0x450
 netlink_unicast_kernel net/netlink/af_netlink.c:1313 [inline]
 netlink_unicast+0x53a/0x7f0 net/netlink/af_netlink.c:1339
 netlink_sendmsg+0x8d1/0xdd0 net/netlink/af_netlink.c:1883
 sock_sendmsg_nosec net/socket.c:712 [inline]
 __sock_sendmsg net/socket.c:727 [inline]
 ____sys_sendmsg+0xa95/0xc70 net/socket.c:2566
 ___sys_sendmsg+0x134/0x1d0 net/socket.c:2620
 __sys_sendmsg+0x16d/0x220 net/socket.c:2652
 do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline]
 do_syscall_64+0xcd/0x260 arch/x86/entry/syscall_64.c:94
 entry_SYSCALL_64_after_hwframe+0x77/0x7f

This problem is similar to the problem that the
commit 1d6a9e7 ("RDMA/core: Fix use-after-free when rename device name")
fixes.

The root cause is: the function ib_device_rename() renames the name with
lock. But in the function kobject_uevent(), this name is accessed without
lock protection at the same time.

The solution is to add the lock protection when this name is accessed in
the function kobject_uevent().

Fixes: 779e0bf ("RDMA/core: Do not indicate device ready when device enablement fails")
Link: https://patch.msgid.link/r/20250506151008.75701-1-yanjun.zhu@linux.dev
	Reported-by: syzbot+e2ce9e275ecc70a30b72@syzkaller.appspotmail.com
Closes: https://syzkaller.appspot.com/bug?extid=e2ce9e275ecc70a30b72
	Signed-off-by: Zhu Yanjun <yanjun.zhu@linux.dev>
	Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
(cherry picked from commit d0706bf)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-619
cve CVE-2025-40318
Rebuild_History Non-Buildable kernel-5.14.0-611.30.1.el9_7
commit-author Cen Zhang <zzzccc427@163.com>
commit 09b0cd1

hci_cmd_sync_dequeue_once() does lookup and then cancel
the entry under two separate lock sections. Meanwhile,
hci_cmd_sync_work() can also delete the same entry,
leading to double list_del() and "UAF".

Fix this by holding cmd_sync_work_lock across both
lookup and cancel, so that the entry cannot be removed
concurrently.

Fixes: 505ea2b ("Bluetooth: hci_sync: Add helper functions to manipulate cmd_sync queue")
	Reported-by: Cen Zhang <zzzccc427@163.com>
	Signed-off-by: Cen Zhang <zzzccc427@163.com>
	Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
(cherry picked from commit 09b0cd1)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-619
cve CVE-2025-40271
Rebuild_History Non-Buildable kernel-5.14.0-611.30.1.el9_7
commit-author Wei Yang <albinwyang@tencent.com>
commit 895b4c0

Pde is erased from subdir rbtree through rb_erase(), but not set the node
to EMPTY, which may result in uaf access.  We should use RB_CLEAR_NODE()
set the erased node to EMPTY, then pde_subdir_next() will return NULL to
avoid uaf access.

We found an uaf issue while using stress-ng testing, need to run testcase
getdent and tun in the same time.  The steps of the issue is as follows:

1) use getdent to traverse dir /proc/pid/net/dev_snmp6/, and current
   pde is tun3;

2) in the [time windows] unregister netdevice tun3 and tun2, and erase
   them from rbtree.  erase tun3 first, and then erase tun2.  the
   pde(tun2) will be released to slab;

3) continue to getdent process, then pde_subdir_next() will return
   pde(tun2) which is released, it will case uaf access.

CPU 0                                      |    CPU 1
-------------------------------------------------------------------------
traverse dir /proc/pid/net/dev_snmp6/      |   unregister_netdevice(tun->dev)   //tun3 tun2
sys_getdents64()                           |
  iterate_dir()                            |
    proc_readdir()                         |
      proc_readdir_de()                    |     snmp6_unregister_dev()
        pde_get(de);                       |       proc_remove()
        read_unlock(&proc_subdir_lock);    |         remove_proc_subtree()
                                           |           write_lock(&proc_subdir_lock);
        [time window]                      |           rb_erase(&root->subdir_node, &parent->subdir);
                                           |           write_unlock(&proc_subdir_lock);
        read_lock(&proc_subdir_lock);      |
        next = pde_subdir_next(de);        |
        pde_put(de);                       |
        de = next;    //UAF                |

rbtree of dev_snmp6
                        |
                    pde(tun3)
                     /    \
                  NULL  pde(tun2)

Link: https://lkml.kernel.org/r/20251025024233.158363-1-albin_yang@163.com
	Signed-off-by: Wei Yang <albinwyang@tencent.com>
	Cc: Al Viro <viro@zeniv.linux.org.uk>
	Cc: Christian Brauner <brauner@kernel.org>
	Cc: wangzijie <wangzijie1@honor.com>
	Cc: Alexey Dobriyan <adobriyan@gmail.com>
	Cc: <stable@vger.kernel.org>
	Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
(cherry picked from commit 895b4c0)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-619
Rebuild_History Non-Buildable kernel-5.14.0-611.30.1.el9_7
commit-author Heiko Carstens <hca@linux.ibm.com>
commit 64e2f60
Empty-Commit: Cherry-Pick Conflicts during history rebuild.
Will be included in final tarball splat. Ref for failed cherry-pick at:
ciq/ciq_backports/kernel-5.14.0-611.30.1.el9_7/64e2f60f.failed

As reported by Luiz Capitulino enabling HVO on s390 leads to reproducible
crashes. The problem is that kernel page tables are modified without
flushing corresponding TLB entries.

Even if it looks like the empty flush_tlb_all() implementation on s390 is
the problem, it is actually a different problem: on s390 it is not allowed
to replace an active/valid page table entry with another valid page table
entry without the detour over an invalid entry. A direct replacement may
lead to random crashes and/or data corruption.

In order to invalidate an entry special instructions have to be used
(e.g. ipte or idte). Alternatively there are also special instructions
available which allow to replace a valid entry with a different valid
entry (e.g. crdte or cspg).

Given that the HVO code currently does not provide the hooks to allow for
an implementation which is compliant with the s390 architecture
requirements, disable ARCH_WANT_OPTIMIZE_HUGETLB_VMEMMAP again, which is
basically a revert of the original patch which enabled it.

	Reported-by: Luiz Capitulino <luizcap@redhat.com>
Closes: https://lore.kernel.org/all/20251028153930.37107-1-luizcap@redhat.com/
Fixes: 00a34d5 ("s390: select ARCH_WANT_HUGETLB_PAGE_OPTIMIZE_VMEMMAP")
	Cc: stable@vger.kernel.org
	Tested-by: Luiz Capitulino <luizcap@redhat.com>
	Reviewed-by: Gerald Schaefer <gerald.schaefer@linux.ibm.com>
	Reviewed-by: David Hildenbrand <david@redhat.com>
	Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
(cherry picked from commit 64e2f60)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>

# Conflicts:
#	arch/s390/Kconfig
jira KERNEL-619
cve CVE-2025-38024
Rebuild_History Non-Buildable kernel-5.14.0-611.30.1.el9_7
commit-author Zhu Yanjun <yanjun.zhu@linux.dev>
commit f81b335

Call Trace:
 <TASK>
 __dump_stack lib/dump_stack.c:94 [inline]
 dump_stack_lvl+0x7d/0xa0 lib/dump_stack.c:120
 print_address_description mm/kasan/report.c:378 [inline]
 print_report+0xcf/0x610 mm/kasan/report.c:489
 kasan_report+0xb5/0xe0 mm/kasan/report.c:602
 rxe_queue_cleanup+0xd0/0xe0 drivers/infiniband/sw/rxe/rxe_queue.c:195
 rxe_cq_cleanup+0x3f/0x50 drivers/infiniband/sw/rxe/rxe_cq.c:132
 __rxe_cleanup+0x168/0x300 drivers/infiniband/sw/rxe/rxe_pool.c:232
 rxe_create_cq+0x22e/0x3a0 drivers/infiniband/sw/rxe/rxe_verbs.c:1109
 create_cq+0x658/0xb90 drivers/infiniband/core/uverbs_cmd.c:1052
 ib_uverbs_create_cq+0xc7/0x120 drivers/infiniband/core/uverbs_cmd.c:1095
 ib_uverbs_write+0x969/0xc90 drivers/infiniband/core/uverbs_main.c:679
 vfs_write fs/read_write.c:677 [inline]
 vfs_write+0x26a/0xcc0 fs/read_write.c:659
 ksys_write+0x1b8/0x200 fs/read_write.c:731
 do_syscall_x64 arch/x86/entry/common.c:52 [inline]
 do_syscall_64+0xaa/0x1b0 arch/x86/entry/common.c:83
 entry_SYSCALL_64_after_hwframe+0x77/0x7f

In the function rxe_create_cq, when rxe_cq_from_init fails, the function
rxe_cleanup will be called to handle the allocated resources. In fact,
some memory resources have already been freed in the function
rxe_cq_from_init. Thus, this problem will occur.

The solution is to let rxe_cleanup do all the work.

Fixes: 8700e3e ("Soft RoCE driver")
Link: https://paste.ubuntu.com/p/tJgC42wDf6/
	Tested-by: liuyi <liuy22@mails.tsinghua.edu.cn>
	Signed-off-by: Zhu Yanjun <yanjun.zhu@linux.dev>
Link: https://patch.msgid.link/20250412075714.3257358-1-yanjun.zhu@linux.dev
	Reviewed-by: Daisuke Matsuda <matsuda-daisuke@fujitsu.com>
	Signed-off-by: Leon Romanovsky <leon@kernel.org>
(cherry picked from commit f81b335)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-619
cve CVE-2025-39760
Rebuild_History Non-Buildable kernel-5.14.0-611.30.1.el9_7
commit-author Xinyu Liu <katieeliu@tencent.com>
commit cf16f40

usb_parse_ss_endpoint_companion() checks descriptor type before length,
enabling a potentially odd read outside of the buffer size.

Fix this up by checking the size first before looking at any of the
fields in the descriptor.

	Signed-off-by: Xinyu Liu <katieeliu@tencent.com>
	Cc: stable <stable@kernel.org>
	Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
(cherry picked from commit cf16f40)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-619
cve CVE-2025-38415
Rebuild_History Non-Buildable kernel-5.14.0-611.30.1.el9_7
commit-author Phillip Lougher <phillip@squashfs.org.uk>
commit 734aa85

Syzkaller reports an "UBSAN: shift-out-of-bounds in squashfs_bio_read" bug.

Syzkaller forks multiple processes which after mounting the Squashfs
filesystem, issues an ioctl("/dev/loop0", LOOP_SET_BLOCK_SIZE, 0x8000).
Now if this ioctl occurs at the same time another process is in the
process of mounting a Squashfs filesystem on /dev/loop0, the failure
occurs.  When this happens the following code in squashfs_fill_super()
fails.

----
msblk->devblksize = sb_min_blocksize(sb, SQUASHFS_DEVBLK_SIZE);
msblk->devblksize_log2 = ffz(~msblk->devblksize);
----

sb_min_blocksize() returns 0, which means msblk->devblksize is set to 0.

As a result, ffz(~msblk->devblksize) returns 64, and msblk->devblksize_log2
is set to 64.

This subsequently causes the

UBSAN: shift-out-of-bounds in fs/squashfs/block.c:195:36
shift exponent 64 is too large for 64-bit type 'u64' (aka
'unsigned long long')

This commit adds a check for a 0 return by sb_min_blocksize().

Link: https://lkml.kernel.org/r/20250409024747.876480-1-phillip@squashfs.org.uk
Fixes: 0aa6661 ("Squashfs: super block operations")
	Reported-by: syzbot+65761fc25a137b9c8c6e@syzkaller.appspotmail.com
Closes: https://lore.kernel.org/all/67f0dd7a.050a0220.0a13.0230.GAE@google.com/
	Signed-off-by: Phillip Lougher <phillip@squashfs.org.uk>
	Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
(cherry picked from commit 734aa85)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-619
cve CVE-2025-38415
Rebuild_History Non-Buildable kernel-5.14.0-611.30.1.el9_7
commit-author Phillip Lougher <phillip@squashfs.org.uk>
commit b64700d
Empty-Commit: Cherry-Pick Conflicts during history rebuild.
Will be included in final tarball splat. Ref for failed cherry-pick at:
ciq/ciq_backports/kernel-5.14.0-611.30.1.el9_7/b64700d4.failed

If sb_min_blocksize returns 0, squashfs_fill_super exits without freeing
allocated memory (sb->s_fs_info).

Fix this by moving the call to sb_min_blocksize to before memory is
allocated.

Link: https://lkml.kernel.org/r/20250811223740.110392-1-phillip@squashfs.org.uk
Fixes: 734aa85 ("Squashfs: check return result of sb_min_blocksize")
	Signed-off-by: Phillip Lougher <phillip@squashfs.org.uk>
	Reported-by: Scott GUO <scottzhguo@tencent.com>
Closes: https://lore.kernel.org/all/20250811061921.3807353-1-scott_gzh@163.com
	Cc: <stable@vger.kernel.org>
	Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
(cherry picked from commit b64700d)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>

# Conflicts:
#	fs/squashfs/super.c
jira KERNEL-619
Rebuild_History Non-Buildable kernel-5.14.0-611.30.1.el9_7
commit-author Sagi Grimberg <sagi@grimberg.me>
commit 3219378

Since day-1 we are assigning the queue io_cpu very naively. We always
base the queue id (controller scope) and assign it its matching cpu
from the online mask. This works fine when the number of queues match
the number of cpu cores.

The problem starts when we have less queues than cpu cores. First, we
should take into account the mq_map and select a cpu within the cpus
that are assigned to this queue by the mq_map in order to minimize cross
numa cpu bouncing.

Second, even worse is that we don't take into account multiple
controllers may have assigned queues to a given cpu. As a result we may
simply compund more and more queues on the same set of cpus, which is
suboptimal.

We fix this by introducing global per-cpu counters that tracks the
number of queues assigned to each cpu, and we select the least used cpu
based on the mq_map and the per-cpu counters, and assign it as the queue
io_cpu.

The behavior for a single controller is slightly optimized by selecting
better cpu candidates by consulting with the mq_map, and multiple
controllers are spreading queues among cpu cores much better, resulting
in lower average cpu load, and less likelihood to hit hotspots.

Note that the accounting is not 100% perfect, but we don't need to be,
we're simply putting our best effort to select the best candidate cpu
core that we find at any given point.

Another byproduct is that every controller reset/reconnect may change
the queues io_cpu mapping, based on the current LRU accounting scheme.

Here is the baseline queue io_cpu assignment for 4 controllers, 2 queues
per controller, and 4 cpus on the host:
nvme1: queue 0: using cpu 0
nvme1: queue 1: using cpu 1
nvme2: queue 0: using cpu 0
nvme2: queue 1: using cpu 1
nvme3: queue 0: using cpu 0
nvme3: queue 1: using cpu 1
nvme4: queue 0: using cpu 0
nvme4: queue 1: using cpu 1

And this is the fixed io_cpu assignment:
nvme1: queue 0: using cpu 0
nvme1: queue 1: using cpu 2
nvme2: queue 0: using cpu 1
nvme2: queue 1: using cpu 3
nvme3: queue 0: using cpu 0
nvme3: queue 1: using cpu 2
nvme4: queue 0: using cpu 1
nvme4: queue 1: using cpu 3

Fixes: 3f2304f ("nvme-tcp: add NVMe over TCP host driver")
	Suggested-by: Hannes Reinecke <hare@kernel.org>
	Signed-off-by: Sagi Grimberg <sagi@grimberg.me>
	Reviewed-by: Chaitanya Kulkarni <kch@nvidia.com>
	Reviewed-by: Christoph Hellwig <hch@lst.de>
[fixed kbuild reported errors]
	Signed-off-by: Chaitanya Kulkarni <kch@nvidia.com>
	Signed-off-by: Keith Busch <kbusch@kernel.org>
(cherry picked from commit 3219378)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-619
Rebuild_History Non-Buildable kernel-5.14.0-611.30.1.el9_7
commit-author Damien Le Moal <dlemoal@kernel.org>
commit cd513e0

When compiling with W=1, a warning result for the function
nvme_tcp_set_queue_io_cpu():

host/tcp.c:1578: warning: Function parameter or struct member 'queue'
not described in 'nvme_tcp_set_queue_io_cpu'
host/tcp.c:1578: warning: expecting prototype for Track the number of
queues assigned to each cpu using a global per(). Prototype was for
nvme_tcp_set_queue_io_cpu() instead

Avoid this warning by using the regular comment format for the function
nvme_tcp_set_queue_io_cpu() instead of the kdoc comment format.

Fixes: 3219378 ("nvme-tcp: Fix I/O queue cpu spreading for multiple controllers")
	Signed-off-by: Damien Le Moal <dlemoal@kernel.org>
	Reviewed-by: Christoph Hellwig <hch@lst.de>
	Reviewed-by: Sagi Grimberg <sagi@grimberg.me>
	Signed-off-by: Keith Busch <kbusch@kernel.org>
(cherry picked from commit cd513e0)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-619
cve CVE-2025-40269
Rebuild_History Non-Buildable kernel-5.14.0-611.30.1.el9_7
commit-author Takashi Iwai <tiwai@suse.de>
commit 05a1fc5

The PCM stream data in USB-audio driver is transferred over USB URB
packet buffers, and each packet size is determined dynamically.  The
packet sizes are limited by some factors such as wMaxPacketSize USB
descriptor.  OTOH, in the current code, the actually used packet sizes
are determined only by the rate and the PPS, which may be bigger than
the size limit above.  This results in a buffer overflow, as reported
by syzbot.

Basically when the limit is smaller than the calculated packet size,
it implies that something is wrong, most likely a weird USB
descriptor.  So the best option would be just to return an error at
the parameter setup time before doing any further operations.

This patch introduces such a sanity check, and returns -EINVAL when
the packet size is greater than maxpacksize.  The comparison with
ep->packsize[1] alone should suffice since it's always equal or
greater than ep->packsize[0].

	Reported-by: syzbot+bfd77469c8966de076f7@syzkaller.appspotmail.com
Closes: https://syzkaller.appspot.com/bug?extid=bfd77469c8966de076f7
Link: https://lore.kernel.org/690b6b46.050a0220.3d0d33.0054.GAE@google.com
	Cc: Lizhi Xu <lizhi.xu@windriver.com>
	Cc: <stable@vger.kernel.org>
Link: https://patch.msgid.link/20251109091211.12739-1-tiwai@suse.de
	Signed-off-by: Takashi Iwai <tiwai@suse.de>
(cherry picked from commit 05a1fc5)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
…g it

jira KERNEL-619
cve CVE-2025-38403
Rebuild_History Non-Buildable kernel-5.14.0-611.30.1.el9_7
commit-author HarshaVardhana S A <harshavardhana.sa@broadcom.com>
commit 223e228

In vmci_transport_packet_init memset the vmci_transport_packet before
populating the fields to avoid any uninitialised data being left in the
structure.

	Cc: Bryan Tan <bryan-bt.tan@broadcom.com>
	Cc: Vishnu Dasa <vishnu.dasa@broadcom.com>
	Cc: Broadcom internal kernel review list
	Cc: Stefano Garzarella <sgarzare@redhat.com>
	Cc: "David S. Miller" <davem@davemloft.net>
	Cc: Eric Dumazet <edumazet@google.com>
	Cc: Jakub Kicinski <kuba@kernel.org>
	Cc: Paolo Abeni <pabeni@redhat.com>
	Cc: Simon Horman <horms@kernel.org>
	Cc: virtualization@lists.linux.dev
	Cc: netdev@vger.kernel.org
	Cc: stable <stable@kernel.org>
	Signed-off-by: HarshaVardhana S A <harshavardhana.sa@broadcom.com>
	Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Fixes: d021c34 ("VSOCK: Introduce VM Sockets")
	Acked-by: Stefano Garzarella <sgarzare@redhat.com>
Link: https://patch.msgid.link/20250701122254.2397440-1-gregkh@linuxfoundation.org
	Signed-off-by: Paolo Abeni <pabeni@redhat.com>
(cherry picked from commit 223e228)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-619
Rebuild_History Non-Buildable kernel-5.14.0-611.30.1.el9_7
commit-author Tonghao Zhang <tonghao@bamaicloud.com>
commit ce7a381
Empty-Commit: Cherry-Pick Conflicts during history rebuild.
Will be included in final tarball splat. Ref for failed cherry-pick at:
ciq/ciq_backports/kernel-5.14.0-611.30.1.el9_7/ce7a3816.failed

Stacking technology is a type of technology used to expand ports on
Ethernet switches. It is widely used as a common access method in
large-scale Internet data center architectures. Years of practice
have proved that stacking technology has advantages and disadvantages
in high-reliability network architecture scenarios. For instance,
in stacking networking arch, conventional switch system upgrades
require multiple stacked devices to restart at the same time.
Therefore, it is inevitable that the business will be interrupted
for a while. It is for this reason that "no-stacking" in data centers
has become a trend. Additionally, when the stacking link connecting
the switches fails or is abnormal, the stack will split. Although it is
not common, it still happens in actual operation. The problem is that
after the split, it is equivalent to two switches with the same
configuration appearing in the network, causing network configuration
conflicts and ultimately interrupting the services carried by the
stacking system.

To improve network stability, "non-stacking" solutions have been
increasingly adopted, particularly by public cloud providers and
tech companies like Alibaba, Tencent, and Didi. "non-stacking" is
a method of mimicing switch stacking that convinces a LACP peer,
bonding in this case, connected to a set of "non-stacked" switches
that all of its ports are connected to a single switch
(i.e., LACP aggregator), as if those switches were stacked. This
enables the LACP peer's ports to aggregate together, and requires
(a) special switch configuration, described in the linked article,
and (b) modifications to the bonding 802.3ad (LACP) mode to send
all ARP/ND packets across all ports of the active aggregator.

Note that, with multiple aggregators, the current broadcast mode
logic will send only packets to the selected aggregator(s).

 +-----------+   +-----------+
 |  switch1  |   |  switch2  |
 +-----------+   +-----------+
         ^           ^
         |           |
      +-----------------+
      |   bond4 lacp    |
      +-----------------+
         |           |
         | NIC1      | NIC2
      +-----------------+
      |     server      |
      +-----------------+

- https://www.ruijie.com/fr-fr/support/tech-gallery/de-stack-data-center-network-architecture/

	Cc: Jay Vosburgh <jv@jvosburgh.net>
	Cc: "David S. Miller" <davem@davemloft.net>
	Cc: Eric Dumazet <edumazet@google.com>
	Cc: Jakub Kicinski <kuba@kernel.org>
	Cc: Paolo Abeni <pabeni@redhat.com>
	Cc: Simon Horman <horms@kernel.org>
	Cc: Jonathan Corbet <corbet@lwn.net>
	Cc: Andrew Lunn <andrew+netdev@lunn.ch>
	Cc: Steven Rostedt <rostedt@goodmis.org>
	Cc: Masami Hiramatsu <mhiramat@kernel.org>
	Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
	Cc: Nikolay Aleksandrov <razor@blackwall.org>
	Signed-off-by: Tonghao Zhang <tonghao@bamaicloud.com>
	Signed-off-by: Zengbing Tu <tuzengbing@didiglobal.com>
Link: https://patch.msgid.link/84d0a044514157bb856a10b6d03a1028c4883561.1751031306.git.tonghao@bamaicloud.com
	Signed-off-by: Paolo Abeni <pabeni@redhat.com>

(cherry picked from commit ce7a381)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>

# Conflicts:
#	drivers/net/bonding/bond_main.c
#	drivers/net/bonding/bond_options.c
#	include/net/bond_options.h
#	include/net/bonding.h
jira KERNEL-619
Rebuild_History Non-Buildable kernel-5.14.0-611.30.1.el9_7
commit-author Tonghao Zhang <tonghao@bamaicloud.com>
commit 3d98ee5
Empty-Commit: Cherry-Pick Conflicts during history rebuild.
Will be included in final tarball splat. Ref for failed cherry-pick at:
ciq/ciq_backports/kernel-5.14.0-611.30.1.el9_7/3d98ee52.failed

User can config or display the bonding broadcast_neighbor option via
iproute2/netlink.

	Cc: Jay Vosburgh <jv@jvosburgh.net>
	Cc: "David S. Miller" <davem@davemloft.net>
	Cc: Eric Dumazet <edumazet@google.com>
	Cc: Jakub Kicinski <kuba@kernel.org>
	Cc: Paolo Abeni <pabeni@redhat.com>
	Cc: Simon Horman <horms@kernel.org>
	Cc: Jonathan Corbet <corbet@lwn.net>
	Cc: Andrew Lunn <andrew+netdev@lunn.ch>
	Cc: Steven Rostedt <rostedt@goodmis.org>
	Cc: Masami Hiramatsu <mhiramat@kernel.org>
	Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
	Cc: Nikolay Aleksandrov <razor@blackwall.org>
	Signed-off-by: Tonghao Zhang <tonghao@bamaicloud.com>
	Signed-off-by: Zengbing Tu <tuzengbing@didiglobal.com>
	Reviewed-by: Nikolay Aleksandrov <razor@blackwall.org>
Link: https://patch.msgid.link/76b90700ba5b98027dfb51a2f3c5cfea0440a21b.1751031306.git.tonghao@bamaicloud.com
	Signed-off-by: Paolo Abeni <pabeni@redhat.com>

(cherry picked from commit 3d98ee5)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>

# Conflicts:
#	drivers/net/bonding/bond_netlink.c
#	include/uapi/linux/if_link.h
jira KERNEL-619
Rebuild_History Non-Buildable kernel-5.14.0-611.30.1.el9_7
commit-author Tonghao Zhang <tonghao@bamaicloud.com>
commit e0caeb2

This patch fixes ce7a381 ("net: bonding: add broadcast_neighbor option for 802.3ad").
Before this commit, on the broadcast mode, all devices were traversed using the
bond_for_each_slave_rcu. This patch supports traversing devices by using all_slaves.
Therefore, we need to update the slave array when enslave or release slave.

Fixes: ce7a381 ("net: bonding: add broadcast_neighbor option for 802.3ad")
	Cc: Simon Horman <horms@kernel.org>
	Cc: Jonathan Corbet <corbet@lwn.net>
	Cc: Andrew Lunn <andrew+netdev@lunn.ch>
	Cc: <stable@vger.kernel.org>
	Reported-by: Jiri Slaby <jirislaby@kernel.org>
	Tested-by: Jiri Slaby <jirislaby@kernel.org>
Link: https://lore.kernel.org/all/a97e6e1e-81bc-4a79-8352-9e4794b0d2ca@kernel.org/
	Signed-off-by: Tonghao Zhang <tonghao@bamaicloud.com>
	Reviewed-by: Hangbin Liu <liuhangbin@gmail.com>
	Reviewed-by: Nikolay Aleksandrov <razor@blackwall.org>
	Acked-by: Jay Vosburgh <jv@jvosburgh.net>
Link: https://patch.msgid.link/20251016125136.16568-1-tonghao@bamaicloud.com
	Signed-off-by: Jakub Kicinski <kuba@kernel.org>
(cherry picked from commit e0caeb2)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-619
Rebuild_History Non-Buildable kernel-5.14.0-611.30.1.el9_7
commit-author Yajun Deng <yajun.deng@linux.dev>
commit 1e84dc6

Add neigh_confirm() for the confirmed member in struct neighbour,
it can be called as an independent unit by other functions.

	Signed-off-by: Yajun Deng <yajun.deng@linux.dev>
	Reviewed-by: Eric Dumazet <edumazet@google.com>
	Signed-off-by: David S. Miller <davem@davemloft.net>
(cherry picked from commit 1e84dc6)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-619
Rebuild_History Non-Buildable kernel-5.14.0-611.30.1.el9_7
commit-author Eric Dumazet <edumazet@google.com>
commit c486640

rt6_check_neigh() uses read_lock() to protect n->nud_state reading.

This seems overkill and causes false sharing.

	Signed-off-by: Eric Dumazet <edumazet@google.com>
	Reviewed-by: David Ahern <dsahern@kernel.org>
	Reviewed-by: Martin KaFai Lau <martin.lau@kernel.org>
	Signed-off-by: Jakub Kicinski <kuba@kernel.org>
(cherry picked from commit c486640)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-619
Rebuild_History Non-Buildable kernel-5.14.0-611.30.1.el9_7
commit-author Eric Dumazet <edumazet@google.com>
commit 4c5c496

struct ip6_flowlabel are rcu managed, and call_rcu() is used
to delay fl_free_rcu() after RCU grace period.

There is no point disabling BH for pure RCU lookups.

	Signed-off-by: Eric Dumazet <edumazet@google.com>
	Signed-off-by: Jakub Kicinski <kuba@kernel.org>
(cherry picked from commit 4c5c496)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-619
Rebuild_History Non-Buildable kernel-5.14.0-611.30.1.el9_7
commit-author Eric Dumazet <edumazet@google.com>
commit 09eed11
Empty-Commit: Cherry-Pick Conflicts during history rebuild.
Will be included in final tarball splat. Ref for failed cherry-pick at:
ciq/ciq_backports/kernel-5.14.0-611.30.1.el9_7/09eed119.failed

rcu_bh is no longer a win, especially for objects freed
with standard call_rcu().

Switch neighbour code to no longer disable BH when not necessary.

	Signed-off-by: Eric Dumazet <edumazet@google.com>
	Signed-off-by: Jakub Kicinski <kuba@kernel.org>
(cherry picked from commit 09eed11)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>

# Conflicts:
#	net/ipv6/addrconf.c
#	net/ipv6/ip6_output.c
jira KERNEL-619
Rebuild_History Non-Buildable kernel-5.14.0-611.30.1.el9_7
commit-author Eric Dumazet <edumazet@google.com>
commit fe602c8

This helper is no longer used in the tree.

	Signed-off-by: Eric Dumazet <edumazet@google.com>
	Signed-off-by: Jakub Kicinski <kuba@kernel.org>
(cherry picked from commit fe602c8)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-619
Rebuild_History Non-Buildable kernel-5.14.0-611.30.1.el9_7
commit-author Eric Dumazet <edumazet@google.com>
commit ef1148d
Empty-Commit: Cherry-Pick Conflicts during history rebuild.
Will be included in final tarball splat. Ref for failed cherry-pick at:
ciq/ciq_backports/kernel-5.14.0-611.30.1.el9_7/ef1148d4.failed

After blamed commit, nexthop_fib6_nh_bh() and nexthop_fib6_nh()
are the same.

Delete nexthop_fib6_nh_bh(), and convert /proc/net/ipv6_route
to standard rcu to avoid this splat:

[ 5723.180080] WARNING: suspicious RCU usage
[ 5723.180083] -----------------------------
[ 5723.180084] include/net/nexthop.h:516 suspicious rcu_dereference_check() usage!
[ 5723.180086]
other info that might help us debug this:

[ 5723.180087]
rcu_scheduler_active = 2, debug_locks = 1
[ 5723.180089] 2 locks held by cat/55856:
[ 5723.180091] #0: ffff9440a582afa8 (&p->lock){+.+.}-{3:3}, at: seq_read_iter (fs/seq_file.c:188)
[ 5723.180100] #1: ffffffffaac07040 (rcu_read_lock_bh){....}-{1:2}, at: rcu_lock_acquire (include/linux/rcupdate.h:326)
[ 5723.180109]
stack backtrace:
[ 5723.180111] CPU: 14 PID: 55856 Comm: cat Tainted: G S        I        6.3.0-dbx-DEV #528
[ 5723.180115] Call Trace:
[ 5723.180117]  <TASK>
[ 5723.180119] dump_stack_lvl (lib/dump_stack.c:107)
[ 5723.180124] dump_stack (lib/dump_stack.c:114)
[ 5723.180126] lockdep_rcu_suspicious (include/linux/context_tracking.h:122)
[ 5723.180132] ipv6_route_seq_show (include/net/nexthop.h:?)
[ 5723.180135] ? ipv6_route_seq_next (net/ipv6/ip6_fib.c:2605)
[ 5723.180140] seq_read_iter (fs/seq_file.c:272)
[ 5723.180145] seq_read (fs/seq_file.c:163)
[ 5723.180151] proc_reg_read (fs/proc/inode.c:316 fs/proc/inode.c:328)
[ 5723.180155] vfs_read (fs/read_write.c:468)
[ 5723.180160] ? up_read (kernel/locking/rwsem.c:1617)
[ 5723.180164] ksys_read (fs/read_write.c:613)
[ 5723.180168] __x64_sys_read (fs/read_write.c:621)
[ 5723.180170] do_syscall_64 (arch/x86/entry/common.c:?)
[ 5723.180174] entry_SYSCALL_64_after_hwframe (arch/x86/entry/entry_64.S:120)
[ 5723.180177] RIP: 0033:0x7fa455677d2a

Fixes: 09eed11 ("neighbour: switch to standard rcu, instead of rcu_bh")
	Reported-by: syzbot <syzkaller@googlegroups.com>
	Signed-off-by: Eric Dumazet <edumazet@google.com>
	Reviewed-by: David Ahern <dsahern@kernel.org>
Link: https://lore.kernel.org/r/20230510154646.370659-1-edumazet@google.com
	Signed-off-by: Jakub Kicinski <kuba@kernel.org>
(cherry picked from commit ef1148d)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>

# Conflicts:
#	include/net/nexthop.h
jira KERNEL-619
Rebuild_History Non-Buildable kernel-5.14.0-611.30.1.el9_7
commit-author Arkadiusz Kubalewski <arkadiusz.kubalewski@intel.com>
commit 7f15ee3
Empty-Commit: Cherry-Pick Conflicts during history rebuild.
Will be included in final tarball splat. Ref for failed cherry-pick at:
ciq/ciq_backports/kernel-5.14.0-611.30.1.el9_7/7f15ee35.failed

Add new netlink attribute to allow user space configuration of reference
sync pin pairs, where both pins are used to provide one clock signal
consisting of both: base frequency and sync signal.

	Reviewed-by: Przemek Kitszel <przemyslaw.kitszel@intel.com>
	Reviewed-by: Milena Olech <milena.olech@intel.com>
	Reviewed-by: Jiri Pirko <jiri@nvidia.com>
	Signed-off-by: Arkadiusz Kubalewski <arkadiusz.kubalewski@intel.com>
Link: https://patch.msgid.link/20250626135219.1769350-2-arkadiusz.kubalewski@intel.com
	Signed-off-by: Jakub Kicinski <kuba@kernel.org>
(cherry picked from commit 7f15ee3)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>

# Conflicts:
#	Documentation/netlink/specs/dpll.yaml
#	include/uapi/linux/dpll.h
jira KERNEL-619
Rebuild_History Non-Buildable kernel-5.14.0-611.30.1.el9_7
commit-author Arkadiusz Kubalewski <arkadiusz.kubalewski@intel.com>
commit 58256a2
Empty-Commit: Cherry-Pick Conflicts during history rebuild.
Will be included in final tarball splat. Ref for failed cherry-pick at:
ciq/ciq_backports/kernel-5.14.0-611.30.1.el9_7/58256a26.failed

Define function for reference sync pin registration and callback ops to
set/get current feature state.

Implement netlink handler to fill netlink messages with reference sync
pin configuration of capable pins (pin-get).

Implement netlink handler to call proper ops and configure reference
sync pin state (pin-set).

	Reviewed-by: Przemek Kitszel <przemyslaw.kitszel@intel.com>
	Reviewed-by: Milena Olech <milena.olech@intel.com>
	Reviewed-by: Jiri Pirko <jiri@nvidia.com>
	Signed-off-by: Arkadiusz Kubalewski <arkadiusz.kubalewski@intel.com>
Link: https://patch.msgid.link/20250626135219.1769350-3-arkadiusz.kubalewski@intel.com
	Signed-off-by: Jakub Kicinski <kuba@kernel.org>
(cherry picked from commit 58256a2)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>

# Conflicts:
#	include/linux/dpll.h
jira KERNEL-619
Rebuild_History Non-Buildable kernel-5.14.0-611.30.1.el9_7
commit-author Ivan Vecera <ivecera@redhat.com>
commit 70d9962

The DPLL_CLOCK_QUALITY_LEVEL_ITU_OPT1_EPRC is not reported via netlink
due to bug in dpll_msg_add_clock_quality_level(). The usage of
DPLL_CLOCK_QUALITY_LEVEL_MAX for both DECLARE_BITMAP() and
for_each_set_bit() is not correct because these macros requires bitmap
size and not the highest valid bit in the bitmap.

Use correct bitmap size to fix this issue.

Fixes: a1afb95 ("dpll: add clock quality level attribute and op")
	Signed-off-by: Ivan Vecera <ivecera@redhat.com>
	Reviewed-by: Arkadiusz Kubalewski <arkadiusz.kubalewski@intel.com>
Link: https://patch.msgid.link/20250912093331.862333-1-ivecera@redhat.com
	Signed-off-by: Jakub Kicinski <kuba@kernel.org>
(cherry picked from commit 70d9962)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-619
Rebuild_History Non-Buildable kernel-5.14.0-611.30.1.el9_7
commit-author Ivan Vecera <ivecera@redhat.com>
commit a680581

Add dpll device level attribute DPLL_A_PHASE_OFFSET_AVG_FACTOR to allow
control over a calculation of reported phase offset value. Attribute is
present, if the driver provides such capability, otherwise attribute
shall not be present.

	Signed-off-by: Ivan Vecera <ivecera@redhat.com>
	Reviewed-by: Vadim Fedorenko <vadim.fedorenko@linux.dev>
Link: https://patch.msgid.link/20250927084912.2343597-2-ivecera@redhat.com
	Signed-off-by: Jakub Kicinski <kuba@kernel.org>
(cherry picked from commit a680581)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-619
Rebuild_History Non-Buildable kernel-5.14.0-611.30.1.el9_7
commit-author Ivan Vecera <ivecera@redhat.com>
commit e28d5a6
Empty-Commit: Cherry-Pick Conflicts during history rebuild.
Will be included in final tarball splat. Ref for failed cherry-pick at:
ciq/ciq_backports/kernel-5.14.0-611.30.1.el9_7/e28d5a68.failed

Add new callback operations for a dpll device:
- phase_offset_avg_factor_get(...) - to obtain current phase offset
  averaging factor from dpll device,
- phase_offset_avg_factor_set(...) - to set phase offset averaging factor

Obtain the factor value using the get callback and provide it to the user
if the device driver implement this callback. Execute the set callback upon
user requests, if the driver implement it.

	Signed-off-by: Ivan Vecera <ivecera@redhat.com>
v2:
* do not require 'set' callback to retrieve current value
* always call 'set' callback regardless of current value
	Reviewed-by: Vadim Fedorenko <vadim.fedorenko@linux.dev>
Link: https://patch.msgid.link/20250927084912.2343597-3-ivecera@redhat.com
	Signed-off-by: Jakub Kicinski <kuba@kernel.org>
(cherry picked from commit e28d5a6)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>

# Conflicts:
#	include/linux/dpll.h
jira KERNEL-619
Rebuild_History Non-Buildable kernel-5.14.0-611.30.1.el9_7
commit-author Ivan Vecera <ivecera@redhat.com>
commit 9363b48

The DPLL phase measurement block uses an exponential moving average with
a configurable averaging factor. Measurements are taken at approximately
40 Hz or at the reference frequency, whichever is lower.

Currently, factor=2 is used to prioritize fast response for dynamic
phase changes. For applications needing a stable, precise average phase
offset where rapid changes are unlikely, a higher factor is recommended.

Implement the .phase_offset_avg_factor_get/set callbacks to allow a user
to adjust this factor.

	Signed-off-by: Ivan Vecera <ivecera@redhat.com>
	Reviewed-by: Vadim Fedorenko <vadim.fedorenko@linux.dev>
Link: https://patch.msgid.link/20250927084912.2343597-4-ivecera@redhat.com
	Signed-off-by: Jakub Kicinski <kuba@kernel.org>
(cherry picked from commit 9363b48)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-619
Rebuild_History Non-Buildable kernel-5.14.0-611.30.1.el9_7
commit-author Petr Oros <poros@redhat.com>
commit 520ad9e

The dpll.yaml spec incorrectly omitted module-name and clock-id from the
pin-get operation reply specification, even though the kernel DPLL
implementation has always included these attributes in pin-get responses
since the initial implementation.

This spec inconsistency caused issues with the C YNL code generator.
The generated dpll_pin_get_rsp structure was missing these fields.

Fix the spec by adding module-name and clock-id to the pin-attrs reply
specification to match the actual kernel behavior.

Fixes: 3badff3 ("dpll: spec: Add Netlink spec in YAML")
	Signed-off-by: Petr Oros <poros@redhat.com>
	Reviewed-by: Ivan Vecera <ivecera@redhat.com>
Link: https://patch.msgid.link/20251024185512.363376-1-poros@redhat.com
	Signed-off-by: Jakub Kicinski <kuba@kernel.org>
(cherry picked from commit 520ad9e)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-619
Rebuild_History Non-Buildable kernel-5.14.0-611.30.1.el9_7
commit-author Petr Oros <poros@redhat.com>
commit 36fedc4

The device-id-get and pin-id-get handlers were ignoring errors from
the find functions and sending empty replies instead of returning
error codes to userspace.

When dpll_device_find_from_nlattr() or dpll_pin_find_from_nlattr()
returned an error (e.g., -EINVAL for "multiple matches" or -ENODEV
for "not found"), the handlers checked `if (!IS_ERR(ptr))` and
skipped adding the device/pin handle to the message, but then still
sent the empty message as a successful reply.

This caused userspace tools to receive empty responses with id=0
instead of proper netlink errors with extack messages like
"multiple matches".

The bug is visible via strace, which shows the kernel sending TWO
netlink messages in response to a single request:

1. Empty reply (20 bytes, just header, no attributes):
   recvfrom(3, [{nlmsg_len=20, nlmsg_type=dpll, nlmsg_flags=0, ...},
                {cmd=0x7, version=1}], ...)

2. NLMSG_ERROR ACK with extack (because of NLM_F_ACK flag):
   recvfrom(3, [{nlmsg_len=60, nlmsg_type=NLMSG_ERROR,
                 nlmsg_flags=NLM_F_CAPPED|NLM_F_ACK_TLVS, ...},
                [{error=0, msg={...}},
                 [{nla_type=NLMSGERR_ATTR_MSG}, "multiple matches"]]], ...)

The C YNL library parses the first message, sees an empty response,
and creates a result object with calloc() which zero-initializes all
fields, resulting in id=0.

The Python YNL library parses both messages and displays the extack
from the second NLMSG_ERROR message.

Fix by checking `if (IS_ERR(ptr))` first and returning the error
code immediately, so that netlink properly sends only NLMSG_ERROR with
the extack message to userspace. After this fix, both C and Python
YNL tools receive only the NLMSG_ERROR and behave consistently.

This affects:
- DPLL_CMD_DEVICE_ID_GET: now properly returns error when multiple
  devices match the criteria (e.g., same module-name + clock-id)
- DPLL_CMD_PIN_ID_GET: now properly returns error when multiple pins
  match the criteria (e.g., same module-name)

Before fix:
  $ dpll pin id-get module-name ice
  0  (wrong - should be error, there are 17 pins with module-name "ice")

After fix:
  $ dpll pin id-get module-name ice
  Error: multiple matches
  (correct - kernel reports the ambiguity via extack)

Fixes: 9d71b54 ("dpll: netlink: Add DPLL framework base functions")
	Signed-off-by: Petr Oros <poros@redhat.com>
	Reviewed-by: Ivan Vecera <ivecera@redhat.com>
Link: https://patch.msgid.link/20251024190733.364101-1-poros@redhat.com
	Signed-off-by: Jakub Kicinski <kuba@kernel.org>
(cherry picked from commit 36fedc4)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-619
Rebuild_History Non-Buildable kernel-5.14.0-611.30.1.el9_7
commit-author Ivan Vecera <ivecera@redhat.com>
commit 58fb88d

The zl3073x_ref, zl3073x_out and zl3073x_synth structures
previously stored state that was parsed from register reads. This
included values like boolean 'enabled' flags, synthesizer selections,
and pre-calculated frequencies.

This commit refactors the state management to store the raw register
values directly in these structures. The various inline helper functions
are updated to parse these raw values on-demand using FIELD_GET.

	Reviewed-by: Petr Oros <poros@redhat.com>
	Tested-by: Prathosh Satish <Prathosh.Satish@microchip.com>
	Signed-off-by: Ivan Vecera <ivecera@redhat.com>
Link: https://patch.msgid.link/20251113074105.141379-2-ivecera@redhat.com
	Signed-off-by: Jakub Kicinski <kuba@kernel.org>
(cherry picked from commit 58fb88d)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-619
Rebuild_History Non-Buildable kernel-5.14.0-611.30.1.el9_7
commit-author Ivan Vecera <ivecera@redhat.com>
commit 607f2c0

Refactor the zl3073x driver by splitting the logic for input
references, outputs and synthesizers out of the monolithic
core.[ch] files.

Move the logic for each functional block into its own dedicated files:
ref.[ch], out.[ch] and synth.[ch].

Specifically:
- Move state structures (zl3073x_ref, zl3073x_out, zl3073x_synth)
  from core.h into their respective new headers
- Move state-fetching functions (..._state_fetch) from core.c to their
  new .c files
- Move the zl3073x_ref_freq_factorize helper from core.c to ref.c
- Introduce a new helper layer to decouple the core device logic from
  the state-parsing logic:
  1. Move the original inline helpers (e.g., zl3073x_ref_is_enabled)
     to the new headers (ref.h, etc.) and make them operate on a
     const struct ... * pointer.
  2. Create new zl3073x_dev_... prefixed functions in core.h
     (e.g., zl3073x_dev_ref_is_enabled) and Implement these _dev_ functions
     to fetch state using a new ..._state_get() helper and then call
     the non-prefixed helper.
  3. Update all driver-internal callers (in dpll.c, prop.c, etc.) to use
     the new zl3073x_dev_... functions.

	Reviewed-by: Petr Oros <poros@redhat.com>
	Tested-by: Prathosh Satish <Prathosh.Satish@microchip.com>
	Signed-off-by: Ivan Vecera <ivecera@redhat.com>
Link: https://patch.msgid.link/20251113074105.141379-3-ivecera@redhat.com
	Signed-off-by: Jakub Kicinski <kuba@kernel.org>
(cherry picked from commit 607f2c0)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-619
Rebuild_History Non-Buildable kernel-5.14.0-611.30.1.el9_7
commit-author Ivan Vecera <ivecera@redhat.com>
commit 5534a82

Instead of reading the ZL_REG_REF_MON_STATUS register every time
the reference status is needed, cache this value in the zl3073x_ref
struct.

This is achieved by:
* Adding a mon_status field to struct zl3073x_ref
* Introducing zl3073x_dev_ref_status_update() to read the status for
  all references into this new cache field
* Calling this update function from the periodic work handler
* Adding zl3073x_ref_is_status_ok() and zl3073x_dev_ref_is_status_ok()
  helpers to check the cached value
* Refactoring all callers in dpll.c to use the new
  zl3073x_dev_ref_is_status_ok() helper, removing direct register reads

This change consolidates all status register reads into a single periodic
function and reduces I/O bus traffic in dpll callbacks.

	Reviewed-by: Petr Oros <poros@redhat.com>
	Tested-by: Prathosh Satish <Prathosh.Satish@microchip.com>
	Signed-off-by: Ivan Vecera <ivecera@redhat.com>
Link: https://patch.msgid.link/20251113074105.141379-4-ivecera@redhat.com
	Signed-off-by: Jakub Kicinski <kuba@kernel.org>
(cherry picked from commit 5534a82)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-619
Rebuild_History Non-Buildable kernel-5.14.0-611.30.1.el9_7
commit-author Ivan Vecera <ivecera@redhat.com>
commit 5bc02b1

Expand the zl3073x_ref structure to cache all reference-related
hardware registers, including frequency components, embedded-sync
settings  and phase compensation. Previously, these registers were
read on-demand from various functions in dpll.c leading to frequent
mailbox operations.

Modify zl3073x_ref_state_fetch() to read and populate all these new
fields at once. Refactor all "getter" functions in dpll.c to read
from this new cached state instead of performing direct register
access.

Remove the standalone zl3073x_dpll_input_ref_frequency_get() helper,
as its functionality is now replaced by zl3073x_ref_freq_get() which
operates on the cached state and add a corresponding zl3073x_dev_...
wrapper.

Introduce a new function, zl3073x_ref_state_set(), to handle
writing changes back to the hardware. This function compares the
provided state with the current cached state and writes *only* the
modified register values to the device via a single mailbox sequence
before updating the local cache.

Refactor all dpll "setter" functions to modify a local copy of the
ref state and then call zl3073x_ref_state_set() to commit the changes.

As a cleanup, update callers in dpll.c that already have
a struct zl3073x_ref * to use the direct helpers instead of the
zl3073x_dev_... wrappers.

This change centralizes all reference-related register I/O into ref.c,
significantly reduces bus traffic, and simplifies the logic in dpll.c.

	Reviewed-by: Petr Oros <poros@redhat.com>
	Tested-by: Prathosh Satish <Prathosh.Satish@microchip.com>
	Signed-off-by: Ivan Vecera <ivecera@redhat.com>
Link: https://patch.msgid.link/20251113074105.141379-5-ivecera@redhat.com
	Signed-off-by: Jakub Kicinski <kuba@kernel.org>
(cherry picked from commit 5bc02b1)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-619
Rebuild_History Non-Buildable kernel-5.14.0-611.30.1.el9_7
commit-author Ivan Vecera <ivecera@redhat.com>
commit 5fb9b0d

Expand the zl3073x_out structure to cache all output-related
hardware registers, including divisors, widths, embedded-sync
parameters and phase compensation.

Modify zl3073x_out_state_fetch() to read and populate all these
new fields at once, including zero-divisor checks. Refactor all
dpll "getter" functions in dpll.c to read from this new
cached state instead of performing direct register access.

Introduce a new function, zl3073x_out_state_set(), to handle
writing changes back to the hardware. This function compares the
provided state with the current cached state and writes *only* the
modified register values via a single mailbox sequence before
updating the local cache.

Refactor all dpll "setter" functions to modify a local copy of
the output state and then call zl3073x_out_state_set() to
commit the changes.

This change centralizes all output-related register I/O into
out.c, significantly reduces bus traffic, and simplifies the logic
in dpll.c.

	Reviewed-by: Petr Oros <poros@redhat.com>
	Tested-by: Prathosh Satish <Prathosh.Satish@microchip.com>
	Signed-off-by: Ivan Vecera <ivecera@redhat.com>
Link: https://patch.msgid.link/20251113074105.141379-6-ivecera@redhat.com
	Signed-off-by: Jakub Kicinski <kuba@kernel.org>
(cherry picked from commit 5fb9b0d)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-619
Rebuild_History Non-Buildable kernel-5.14.0-611.30.1.el9_7
commit-author Ivan Vecera <ivecera@redhat.com>
commit 01e0e8b

Remove several zl3073x_dev_... inline wrapper functions from core.h
as they are no longer used by any callers.

Removed functions:
* zl3073x_dev_ref_ffo_get
* zl3073x_dev_ref_is_enabled
* zl3073x_dev_synth_dpll_get
* zl3073x_dev_synth_is_enabled
* zl3073x_dev_out_signal_format_get

This is a cleanup after recent refactoring, as the remaining callers
now fetch the state object and use the base helpers directly.

	Reviewed-by: Petr Oros <poros@redhat.com>
	Tested-by: Prathosh Satish <Prathosh.Satish@microchip.com>
	Signed-off-by: Ivan Vecera <ivecera@redhat.com>
Link: https://patch.msgid.link/20251113074105.141379-7-ivecera@redhat.com
	Signed-off-by: Jakub Kicinski <kuba@kernel.org>
(cherry picked from commit 01e0e8b)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-619
cve CVE-2025-38459
Rebuild_History Non-Buildable kernel-5.14.0-611.30.1.el9_7
commit-author Kuniyuki Iwashima <kuniyu@google.com>
commit c489f32

syzbot reported the splat below. [0]

This happens if we call ioctl(ATMARP_MKIP) more than once.

During the first call, clip_mkip() sets clip_push() to vcc->push(),
and the second call copies it to clip_vcc->old_push().

Later, when the socket is close()d, vcc_destroy_socket() passes
NULL skb to clip_push(), which calls clip_vcc->old_push(),
triggering the infinite recursion.

Let's prevent the second ioctl(ATMARP_MKIP) by checking
vcc->user_back, which is allocated by the first call as clip_vcc.

Note also that we use lock_sock() to prevent racy calls.

[0]:
BUG: TASK stack guard page was hit at ffffc9000d66fff8 (stack is ffffc9000d670000..ffffc9000d678000)
Oops: stack guard page: 0000 [#1] SMP KASAN NOPTI
CPU: 0 UID: 0 PID: 5322 Comm: syz.0.0 Not tainted 6.16.0-rc4-syzkaller #0 PREEMPT(full)
Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.3-debian-1.16.3-2~bpo12+1 04/01/2014
RIP: 0010:clip_push+0x5/0x720 net/atm/clip.c:191
Code: e0 8f aa 8c e8 1c ad 5b fa eb ae 66 2e 0f 1f 84 00 00 00 00 00 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 f3 0f 1e fa 55 <41> 57 41 56 41 55 41 54 53 48 83 ec 20 48 89 f3 49 89 fd 48 bd 00
RSP: 0018:ffffc9000d670000 EFLAGS: 00010246
RAX: 1ffff1100235a4a5 RBX: ffff888011ad2508 RCX: ffff8880003c0000
RDX: 0000000000000000 RSI: 0000000000000000 RDI: ffff888037f01000
RBP: dffffc0000000000 R08: ffffffff8fa104f7 R09: 1ffffffff1f4209e
R10: dffffc0000000000 R11: ffffffff8a99b300 R12: ffffffff8a99b300
R13: ffff888037f01000 R14: ffff888011ad2500 R15: ffff888037f01578
FS:  000055557ab6d500(0000) GS:ffff88808d250000(0000) knlGS:0000000000000000
CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: ffffc9000d66fff8 CR3: 0000000043172000 CR4: 0000000000352ef0
Call Trace:
 <TASK>
 clip_push+0x6dc/0x720 net/atm/clip.c:200
 clip_push+0x6dc/0x720 net/atm/clip.c:200
 clip_push+0x6dc/0x720 net/atm/clip.c:200
...
 clip_push+0x6dc/0x720 net/atm/clip.c:200
 clip_push+0x6dc/0x720 net/atm/clip.c:200
 clip_push+0x6dc/0x720 net/atm/clip.c:200
 vcc_destroy_socket net/atm/common.c:183 [inline]
 vcc_release+0x157/0x460 net/atm/common.c:205
 __sock_release net/socket.c:647 [inline]
 sock_close+0xc0/0x240 net/socket.c:1391
 __fput+0x449/0xa70 fs/file_table.c:465
 task_work_run+0x1d1/0x260 kernel/task_work.c:227
 resume_user_mode_work include/linux/resume_user_mode.h:50 [inline]
 exit_to_user_mode_loop+0xec/0x110 kernel/entry/common.c:114
 exit_to_user_mode_prepare include/linux/entry-common.h:330 [inline]
 syscall_exit_to_user_mode_work include/linux/entry-common.h:414 [inline]
 syscall_exit_to_user_mode include/linux/entry-common.h:449 [inline]
 do_syscall_64+0x2bd/0x3b0 arch/x86/entry/syscall_64.c:100
 entry_SYSCALL_64_after_hwframe+0x77/0x7f
RIP: 0033:0x7ff31c98e929
Code: ff ff c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 40 00 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 c7 c1 a8 ff ff ff f7 d8 64 89 01 48
RSP: 002b:00007fffb5aa1f78 EFLAGS: 00000246 ORIG_RAX: 00000000000001b4
RAX: 0000000000000000 RBX: 0000000000012747 RCX: 00007ff31c98e929
RDX: 0000000000000000 RSI: 000000000000001e RDI: 0000000000000003
RBP: 00007ff31cbb7ba0 R08: 0000000000000001 R09: 0000000db5aa226f
R10: 00007ff31c7ff030 R11: 0000000000000246 R12: 00007ff31cbb608c
R13: 00007ff31cbb6080 R14: ffffffffffffffff R15: 00007fffb5aa2090
 </TASK>
Modules linked in:

Fixes: 1da177e ("Linux-2.6.12-rc2")
	Reported-by: syzbot+0c77cccd6b7cd917b35a@syzkaller.appspotmail.com
Closes: https://syzkaller.appspot.com/bug?extid=2371d94d248d126c1eb1
	Signed-off-by: Kuniyuki Iwashima <kuniyu@google.com>
	Reviewed-by: Simon Horman <horms@kernel.org>
Link: https://patch.msgid.link/20250704062416.1613927-4-kuniyu@google.com
	Signed-off-by: Jakub Kicinski <kuba@kernel.org>
(cherry picked from commit c489f32)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-619
Rebuild_History Non-Buildable kernel-5.14.0-611.30.1.el9_7
commit-author Toke Høiland-Jørgensen <toke@redhat.com>
commit 5498227

The openvswitch teardown code will immediately call
ovs_netdev_detach_dev() in response to a NETDEV_UNREGISTER notification.
It will then start the dp_notify_work workqueue, which will later end up
calling the vport destroy() callback. This callback takes the RTNL to do
another ovs_netdev_detach_port(), which in this case is unnecessary.
This causes extra pressure on the RTNL, in some cases leading to
"unregister_netdevice: waiting for XX to become free" warnings on
teardown.

We can straight-forwardly avoid the extra RTNL lock acquisition by
checking the device flags before taking the lock, and skip the locking
altogether if the IFF_OVS_DATAPATH flag has already been unset.

Fixes: b07c265 ("openvswitch: fix vport-netdev unregister")
	Tested-by: Adrian Moreno <amorenoz@redhat.com>
	Signed-off-by: Toke Høiland-Jørgensen <toke@redhat.com>
	Acked-by: Eelco Chaudron <echaudro@redhat.com>
	Acked-by: Aaron Conole <aconole@redhat.com>
Link: https://patch.msgid.link/20251211115006.228876-1-toke@redhat.com
	Signed-off-by: Paolo Abeni <pabeni@redhat.com>
(cherry picked from commit 5498227)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-619
Rebuild_History Non-Buildable kernel-5.14.0-611.30.1.el9_7
commit-author Jens Axboe <axboe@kernel.dk>
commit 03e02e8

req->buf_list is assigned higher up and is safe to use as we remain
within a locked region, as is the 'bl' variable itself from which it
was assigned. To improve readability, use 'bl' directly rather than
get it from the io_kiocb, if we need to increment the head directly
in the buffer selection path. This makes it readily apparent that
it's the same io_buffer_list being used.

	Signed-off-by: Jens Axboe <axboe@kernel.dk>
(cherry picked from commit 03e02e8)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-619
Rebuild_History Non-Buildable kernel-5.14.0-611.30.1.el9_7
commit-author Jens Axboe <axboe@kernel.dk>
commit ecd5c9b

Committing the selected ring buffer is currently done in three different
spots, combine it into a helper and just call that.

	Signed-off-by: Jens Axboe <axboe@kernel.dk>
(cherry picked from commit ecd5c9b)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-619
cve CVE-2025-38730
Rebuild_History Non-Buildable kernel-5.14.0-611.30.1.el9_7
commit-author Jens Axboe <axboe@kernel.dk>
commit 41b70df
Empty-Commit: Cherry-Pick Conflicts during history rebuild.
Will be included in final tarball splat. Ref for failed cherry-pick at:
ciq/ciq_backports/kernel-5.14.0-611.30.1.el9_7/41b70df5.failed

Ring provided buffers are potentially only valid within the single
execution context in which they were acquired. io_uring deals with this
and invalidates them on retry. But on the networking side, if
MSG_WAITALL is set, or if the socket is of the streaming type and too
little was processed, then it will hang on to the buffer rather than
recycle or commit it. This is problematic for two reasons:

1) If someone unregisters the provided buffer ring before a later retry,
   then the req->buf_list will no longer be valid.

2) If multiple sockers are using the same buffer group, then multiple
   receives can consume the same memory. This can cause data corruption
   in the application, as either receive could land in the same
   userspace buffer.

Fix this by disallowing partial retries from pinning a provided buffer
across multiple executions, if ring provided buffers are used.

	Cc: stable@vger.kernel.org
	Reported-by: pt x <superman.xpt@gmail.com>
Fixes: c56e022 ("io_uring: add support for user mapped provided buffer ring")
	Signed-off-by: Jens Axboe <axboe@kernel.dk>
(cherry picked from commit 41b70df)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>

# Conflicts:
#	io_uring/net.c
Rebuild_History BUILDABLE
Rebuilding Kernel from rpm changelog with Fuzz Limit: 87.50%
Number of commits in upstream range v5.14~1..kernel-mainline: 351590
Number of commits in rpm: 67
Number of commits matched with upstream: 61 (91.04%)
Number of commits in upstream but not in rpm: 351529
Number of commits NOT found in upstream: 6 (8.96%)

Rebuilding Kernel on Branch rocky9_7_rebuild_kernel-5.14.0-611.30.1.el9_7 for kernel-5.14.0-611.30.1.el9_7
Clean Cherry Picks: 43 (70.49%)
Empty Cherry Picks: 18 (29.51%)
_______________________________

Full Details Located here:
ciq/ciq_backports/kernel-5.14.0-611.30.1.el9_7/rebuild.details.txt

Includes:
* git commit header above
* Empty Commits with upstream SHA
* RPM ChangeLog Entries that could not be matched

Individual Empty Commit failures contained in the same containing directory.
The git message for empty commits will have the path for the failed commit.
File names are the first 8 characters of the upstream SHA
@PlaidCat PlaidCat self-assigned this Feb 12, 2026
@PlaidCat PlaidCat requested review from a team February 12, 2026 23:56
@jdieter
Copy link

jdieter commented Feb 13, 2026

We seem to be down ~50 passing kselftests. Is that expected?

@PlaidCat
Copy link
Collaborator Author

Yeah its a change in RLC testing versus this testing ... it was the same workspace difference in kselftest invocations

@PlaidCat PlaidCat requested a review from a team February 13, 2026 13:40
@PlaidCat PlaidCat merged commit 0384556 into rocky9_7 Feb 13, 2026
4 checks passed
@PlaidCat PlaidCat deleted the rocky9_7_rebuild branch February 13, 2026 19:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

3 participants