Skip to content

[rocky10_2] History Rebuild through kernel-6.12.0-211.37.1.el10_2 - #1462

Merged
PlaidCat merged 61 commits into
rocky10_2from
rocky10_2_rebuild
Jul 24, 2026
Merged

[rocky10_2] History Rebuild through kernel-6.12.0-211.37.1.el10_2#1462
PlaidCat merged 61 commits into
rocky10_2from
rocky10_2_rebuild

Conversation

@PlaidCat

@PlaidCat PlaidCat commented Jul 22, 2026

Copy link
Copy Markdown
Collaborator

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 (6.12.0-211)
    • 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-6.12.0-211.37.1.el10_2

$ cat ciq/ciq_backports/kernel-6.12.0-211.37.1.el10_2/rebuild.details.txt
Rebuild_History BUILDABLE
Rebuilding Kernel from rpm changelog with Fuzz Limit: 87.50%
Number of commits in upstream range v6.12~1..kernel-mainline: 138299
Number of commits in rpm: 64
Number of commits matched with upstream: 60 (93.75%)
Number of commits in upstream but not in rpm: 138239
Number of commits NOT found in upstream: 4 (6.25%)

Rebuilding Kernel on Branch rocky10_2_rebuild_kernel-6.12.0-211.37.1.el10_2 for kernel-6.12.0-211.37.1.el10_2
Clean Cherry Picks: 58 (96.67%)
Empty Cherry Picks: 2 (3.33%)
_______________________________

__EMPTY COMMITS__________________________
14acf9652e5690de3c7486c6db5fb8dafd0a32a3 xfrm: defensively unhash xfrm_state lists in __xfrm_state_delete
1a303baa715e6b78d6a406aaf335f87ff35acfcd ice: fix double-free of tx_buf skb

__CHANGES NOT IN UPSTREAM________________
Add partial riscv64 support for build root'
Provide basic VisionFive 2 support'
can: bcm: defer rx_op deallocation to workqueue to fix thrtimer UAF
redhat/configs: disable CONFIG_PT_RECLAIM

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="-rocky10_2_rebuild-784c133082f3"
Making olddefconfig
--
  HOSTCC  scripts/kconfig/util.o
  HOSTLD  scripts/kconfig/conf
#
# configuration written to .config
#
Starting Build
  GEN     arch/x86/include/generated/asm/orc_hash.h
  WRAP    arch/x86/include/generated/uapi/asm/bpf_perf_event.h
  WRAP    arch/x86/include/generated/uapi/asm/errno.h
  WRAP    arch/x86/include/generated/uapi/asm/fcntl.h
  WRAP    arch/x86/include/generated/uapi/asm/ioctl.h
--
  LD [M]  net/qrtr/qrtr-mhi.ko
  BTF [M] net/qrtr/qrtr.ko
  BTF [M] net/qrtr/qrtr-mhi.ko
  LD [M]  virt/lib/irqbypass.ko
  BTF [M] virt/lib/irqbypass.ko
[TIMER]{BUILD}: 2255s
Making Modules
  SYMLINK /lib/modules/6.12.0-rocky10_2_rebuild-784c133082f3+/build
  INSTALL /lib/modules/6.12.0-rocky10_2_rebuild-784c133082f3+/modules.order
  INSTALL /lib/modules/6.12.0-rocky10_2_rebuild-784c133082f3+/modules.builtin
  INSTALL /lib/modules/6.12.0-rocky10_2_rebuild-784c133082f3+/modules.builtin.modinfo
--
  SIGN    /lib/modules/6.12.0-rocky10_2_rebuild-784c133082f3+/kernel/net/qrtr/qrtr-mhi.ko
  INSTALL /lib/modules/6.12.0-rocky10_2_rebuild-784c133082f3+/kernel/virt/lib/irqbypass.ko
  STRIP   /lib/modules/6.12.0-rocky10_2_rebuild-784c133082f3+/kernel/virt/lib/irqbypass.ko
  SIGN    /lib/modules/6.12.0-rocky10_2_rebuild-784c133082f3+/kernel/virt/lib/irqbypass.ko
  DEPMOD  /lib/modules/6.12.0-rocky10_2_rebuild-784c133082f3+
[TIMER]{MODULES}: 16s
Making Install
  INSTALL /boot
[TIMER]{INSTALL}: 18s
Checking kABI
kABI check passed
Setting Default Kernel to /boot/vmlinuz-6.12.0-rocky10_2_rebuild-784c133082f3+ and Index to 2
Hopefully Grub2.0 took everything ... rebooting after time metrices
[TIMER]{MRPROPER}: 6s
[TIMER]{BUILD}: 2255s
[TIMER]{MODULES}: 16s
[TIMER]{INSTALL}: 18s
[TIMER]{TOTAL} 2300s
Rebooting in 10 seconds

KSelfTests

$ get_kselftest_diff.sh
kselftest.6.12.0-rocky10_2_rebuild-f1dd39adef4e+.log
491
kselftest.6.12.0-rocky10_2_rebuild-e103293a12c2+.log
492
kselftest.6.12.0-rocky10_2_rebuild-96b187348a06+.log
492
kselftest.6.12.0-rocky10_2_rebuild-784c133082f3+.log
491
Before: kselftest.6.12.0-rocky10_2_rebuild-96b187348a06+.log
After: kselftest.6.12.0-rocky10_2_rebuild-784c133082f3+.log
Diff:
-ok 2 selftests: seccomp: seccomp_benchmark

PlaidCat and others added 30 commits July 22, 2026 09:10
jira KERNEL-1355
Rebuild_History Non-Buildable kernel-6.12.0-211.37.1.el10_2
commit-author Ian Rogers <irogers@google.com>
commit 8c5b406

When building tools/perf the CFLAGS can contain a directory for the
installed headers.

As the headers may be being installed while building libperf.a this can
cause headers to be partially installed and found in the include path
while building an object file for libperf.a.

The installed header may reference other installed headers that are
missing given the partial nature of the install and then the build fails
with a missing header file.

Avoid this by ensuring the libperf source headers are always first in
the CFLAGS.

Fixes: 3143504 ("libperf: Make libperf.a part of the perf build")
	Signed-off-by: Ian Rogers <irogers@google.com>
	Cc: Adrian Hunter <adrian.hunter@intel.com>
	Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
	Cc: Ingo Molnar <mingo@redhat.com>
	Cc: James Clark <james.clark@linaro.org>
	Cc: Jiri Olsa <jolsa@kernel.org>
	Cc: Namhyung Kim <namhyung@kernel.org>
	Cc: Peter Zijlstra <peterz@infradead.org>
	Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
(cherry picked from commit 8c5b406)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-1355
cve CVE-2026-53071
Rebuild_History Non-Buildable kernel-6.12.0-211.37.1.el10_2
commit-author Dudu Lu <phx0fer@gmail.com>
commit 4277649

l2cap_ecred_reconf_rsp() calls l2cap_chan_del() without holding
l2cap_chan_lock(). Every other l2cap_chan_del() caller in the file
acquires the lock first. A remote BLE device can send a crafted
L2CAP ECRED reconfiguration response to corrupt the channel list
while another thread is iterating it.

Add l2cap_chan_hold() and l2cap_chan_lock() before l2cap_chan_del(),
and l2cap_chan_unlock() and l2cap_chan_put() after, matching the
pattern used in l2cap_ecred_conn_rsp() and l2cap_conn_del().

Fixes: 15f02b9 ("Bluetooth: L2CAP: Add initial code for Enhanced Credit Based Mode")
	Signed-off-by: Dudu Lu <phx0fer@gmail.com>
	Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
(cherry picked from commit 4277649)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-1355
cve CVE-2026-23168
Rebuild_History Non-Buildable kernel-6.12.0-211.37.1.el10_2
commit-author Jan Kara <jack@suse.cz>
commit dd9e2f5

Bernd has reported a lockdep splat from flexible proportions code that is
essentially complaining about the following race:

<timer fires>
run_timer_softirq - we are in softirq context
  call_timer_fn
    writeout_period
      fprop_new_period
        write_seqcount_begin(&p->sequence);

        <hardirq is raised>
        ...
        blk_mq_end_request()
	  blk_update_request()
	    ext4_end_bio()
	      folio_end_writeback()
		__wb_writeout_add()
		  __fprop_add_percpu_max()
		    if (unlikely(max_frac < FPROP_FRAC_BASE)) {
		      fprop_fraction_percpu()
			seq = read_seqcount_begin(&p->sequence);
			  - sees odd sequence so loops indefinitely

Note that a deadlock like this is only possible if the bdi has configured
maximum fraction of writeout throughput which is very rare in general but
frequent for example for FUSE bdis.  To fix this problem we have to make
sure write section of the sequence counter is irqsafe.

Link: https://lkml.kernel.org/r/20260121112729.24463-2-jack@suse.cz
Fixes: a91befd ("lib/flex_proportions.c: remove local_irq_ops in fprop_new_period()")
	Signed-off-by: Jan Kara <jack@suse.cz>
	Reported-by: Bernd Schubert <bernd@bsbernd.com>
Link: https://lore.kernel.org/all/9b845a47-9aee-43dd-99bc-1a82bea00442@bsbernd.com/
	Reviewed-by: Matthew Wilcox (Oracle) <willy@infradead.org>
	Cc: Joanne Koong <joannelkoong@gmail.com>
	Cc: Miklos Szeredi <miklos@szeredi.hu>
	Cc: <stable@vger.kernel.org>
	Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
(cherry picked from commit dd9e2f5)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-1355
cve CVE-2026-31530
Rebuild_History Non-Buildable kernel-6.12.0-211.37.1.el10_2
commit-author Alison Schofield <alison.schofield@intel.com>
commit 19d2f0b

cxl_detach_ep() is called during bottom-up removal when all CXL memory
devices beneath a switch port have been removed. For each port in the
hierarchy it locks both the port and its parent, removes the endpoint,
and if the port is now empty, marks it dead and unregisters the port
by calling delete_switch_port(). There are two places during this work
where the parent_port may be used after freeing:

First, a concurrent detach may have already processed a port by the
time a second worker finds it via bus_find_device(). Without pinning
parent_port, it may already be freed when we discover port->dead and
attempt to unlock the parent_port. In a production kernel that's a
silent memory corruption, with lock debug, it looks like this:

[]DEBUG_LOCKS_WARN_ON(__owner_task(owner) != get_current())
[]WARNING: kernel/locking/mutex.c:949 at __mutex_unlock_slowpath+0x1ee/0x310
[]Call Trace:
[]mutex_unlock+0xd/0x20
[]cxl_detach_ep+0x180/0x400 [cxl_core]
[]devm_action_release+0x10/0x20
[]devres_release_all+0xa8/0xe0
[]device_unbind_cleanup+0xd/0xa0
[]really_probe+0x1a6/0x3e0

Second, delete_switch_port() releases three devm actions registered
against parent_port. The last of those is unregister_port() and it
calls device_unregister() on the child port, which can cascade. If
parent_port is now also empty the device core may unregister and free
it too. So by the time delete_switch_port() returns, parent_port may
be free, and the subsequent device_unlock(&parent_port->dev) operates
on freed memory. The kernel log looks same as above, with a different
offset in cxl_detach_ep().

Both of these issues stem from the absence of a lifetime guarantee
between a child port and its parent port.

Establish a lifetime rule for ports: child ports hold a reference to
their parent device until release. Take the reference when the port
is allocated and drop it when released. This ensures the parent is
valid for the full lifetime of the child and eliminates the use after
free window in cxl_detach_ep().

This is easily reproduced with a reload of cxl_acpi in QEMU with CXL
devices present.

Fixes: 2345df5 ("cxl/memdev: Fix endpoint port removal")
	Reviewed-by: Dave Jiang <dave.jiang@intel.com>
	Reviewed-by: Li Ming <ming.li@zohomail.com>
	Signed-off-by: Alison Schofield <alison.schofield@intel.com>
	Reviewed-by: Jonathan Cameron <jonathan.cameron@huawei.com>
Link: https://patch.msgid.link/20260226184439.1732841-1-alison.schofield@intel.com
	Signed-off-by: Dave Jiang <dave.jiang@intel.com>
(cherry picked from commit 19d2f0b)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
…nge_handle_ioctl()

jira KERNEL-1355
Rebuild_History Non-Buildable kernel-6.12.0-211.37.1.el10_2
commit-author Tvrtko Ursulin <tvrtko.ursulin@igalia.com>
commit 12f15d5

Since GEM bo handles are u32 in the uapi and the internal implementation
uses idr_alloc() which uses int ranges, passing a new handle larger than
INT_MAX trivially triggers a kernel warning:

idr_alloc():
...
	if (WARN_ON_ONCE(start < 0))
		return -EINVAL;
...

Fix it by rejecting new handles above INT_MAX and at the same time make
the end limit calculation more obvious by moving into int domain.

	Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@igalia.com>
	Reported-by: Zhi Wang <wangzhi@stu.xidian.edu.cn>
Fixes: 5309672 ("drm: Add DRM prime interface to reassign GEM handle")
	Cc: David Francis <David.Francis@amd.com>
	Cc: Felix Kuehling <felix.kuehling@amd.com>
	Cc: Christian König <christian.koenig@amd.com>
	Cc: <stable@vger.kernel.org> # v6.18+
	Tested-by: Harshit Mogalapalli <harshit.m.mogalapalli@oracle.com>
	Reviewed-by: Christian König <christian.koenig@amd.com>
	Signed-off-by: Tvrtko Ursulin <tursulin@ursulin.net>
Link: https://lore.kernel.org/r/20260123141540.76540-1-tvrtko.ursulin@igalia.com
(cherry picked from commit 12f15d5)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-1355
cve CVE-2026-46215
Rebuild_History Non-Buildable kernel-6.12.0-211.37.1.el10_2
commit-author Francis, David <David.Francis@amd.com>
commit 5e28b7b

There was a potential race condition in change_handle. The ioctl
briefly had a single object with two idr entries; a concurrent
gem_close could delete the object and remove one of the handles
while leaving the other one dangling, which could subsequently
be dereferenced for a use-after-free.

To fix this, do the same dance that gem_close itself does.
(f6cd7da drm: Release driver references to handle before making it available again)
First idr_replace the old handle to NULL. Later, if the prime
operations are successful, actually close it.

create_tail required a similar dance to avoid a similar problem.
(bd46cec drm/gem: Fix race in drm_gem_handle_create_tail())
It idr_allocs the new handle with NULL, then swaps in the correct
object later to avoid races. We don't need to do that here, since
the only operations that could race are drm_prime, and
change_handle holds the prime lock for the entire duration.

v2: cleanups of error paths

	Signed-off-by: David Francis <David.Francis@amd.com>
Co-authored-by: Dave Airlie <airlied@gmail.com>
	Reported-by: Puttimet Thammasaeng <pwn8official@gmail.com>
	Tested-by: Vitaly Prosyak <Vitaly.Prosyak@amd.com>
	Cc: Simona Vetter <simona@ffwll.ch>
	Cc: stable@vger.kernel.org
	Cc: Christian Koenig <Christian.Koenig@amd.com>
Fixes: 5309672 ("drm: Add DRM prime interface to reassign GEM handle")
	Signed-off-by: Dave Airlie <airlied@redhat.com>
(cherry picked from commit 5e28b7b)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-1355
Rebuild_History Non-Buildable kernel-6.12.0-211.37.1.el10_2
commit-author Edward Adam Davis <eadavis@qq.com>
commit dc36660

Commit 5e28b7b introduced a logical error by failing to replace the
newly generated IDR pointer to old id's pointer at the correct location
within the "change handle" logic; this resulted in the issue reported by
syzbot [1].

Specifically, the new IDR object pointer is intended to replace the original
id's pointer during the normal execution flow.

Additionally, an unnecessary conditional check for the ret exit path has
been removed.

[1]
!RB_EMPTY_ROOT(&prime_fpriv->dmabufs)
WARNING: drivers/gpu/drm/drm_prime.c:224 at drm_prime_destroy_file_private+0x48/0x60 drivers/gpu/drm/drm_prime.c:224, CPU#0: syz.0.17/5833
Call Trace:
 drm_file_free.part.0+0x7e6/0xcc0 drivers/gpu/drm/drm_file.c:269
 drm_file_free drivers/gpu/drm/drm_file.c:237 [inline]
 drm_close_helper.isra.0+0x186/0x200 drivers/gpu/drm/drm_file.c:290
 drm_release+0x1ab/0x360 drivers/gpu/drm/drm_file.c:438

Fixes: 5e28b7b ("drm: Set old handle to NULL before prime swap in change_handle")
	Reported-by: syzbot+d7c9eed171647e421013@syzkaller.appspotmail.com
Closes: https://syzkaller.appspot.com/bug?extid=d7c9eed171647e421013
	Cc: stable@vger.kernel.org
	Tested-by: syzbot+d7c9eed171647e421013@syzkaller.appspotmail.com
	Signed-off-by: Edward Adam Davis <eadavis@qq.com>
	Signed-off-by: Dave Airlie <airlied@redhat.com>
Link: https://patch.msgid.link/tencent_C267296443AAA4567771176886DFF364A305@qq.com
(cherry picked from commit dc36660)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-1355
Rebuild_History Non-Buildable kernel-6.12.0-211.37.1.el10_2
commit-author Zhenghang Xiao <kipreyyy@gmail.com>
commit 7164d78

drm_gem_change_handle_ioctl leaves the old handle live in the IDR
during the window between spin_unlock(table_lock) and the final
spin_lock(table_lock). A concurrent drm_gem_handle_delete on the old
handle succeeds in this window, decrements handle_count to 0, and frees
the GEM object while the new handle's IDR entry still references it.

NULL the old handle's IDR entry before dropping table_lock so that any
concurrent GEM_CLOSE on the old handle sees NULL and returns -EINVAL.
Restore the old entry on the prime-bookkeeping error path.

Fixes: 5e28b7b ("drm: Set old handle to NULL before prime swap in change_handle")
	Signed-off-by: Zhenghang Xiao <kipreyyy@gmail.com>
	Cc: stable@vger.kernel.org
	Signed-off-by: Dave Airlie <airlied@redhat.com>
Link: https://patch.msgid.link/20260526085313.26791-1-kipreyyy@gmail.com
(cherry picked from commit 7164d78)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-1355
Rebuild_History Non-Buildable kernel-6.12.0-211.37.1.el10_2
commit-author Simona Vetter <simona.vetter@ffwll.ch>
commit 1a4f03d

[airlied: just added some comments on how to reenable]
On-list because the cat is out of the bag and we're clearly not good
enough to figure this out in private. The story thus far:

5e28b7b ("drm: Set old handle to NULL before prime swap in
change_handle") tried to fix a race condition between the gem_close and
gem_change_handle ioctls, but got a few things wrong:

- There's a confusion with the local variable handle, which is actually
  the new handle, and so the two-stage trick was actually applied to the
  wrong idr slot. 7164d78 ("drm/gem: fix race between
  change_handle and handle_delete") tried to fix that by adding yet
  another code block, but forgot to add the error handling. Which meant
  we now have two paths, both kinda wrong.

- dc36660 ("drm: Replace old pointer to new idr") tried to apply
  another fix, but inconsistently, again because of the handle confusion
  - this would be the right fix (kinda, somewhat, it's a mess) if we'd
  do the two-stage approach for the new handle. Except that wasn't the
  intent of the original fix.

We also didn't have an igt merged for the original ioctl, which is a big
no-go. This was attempted to address off-list in the original bugfix,
and amd QA people claimed the bug was fixed now. Very clearly that's not
the case. Here's my attempt to sort this out:

- Rename the local variable to new_handle, the old aliasing with
  args->handle is just too dangerously confusing.

- Merge the gem obj lookup with the two-stage idr_replace so that we
  avoid getting ourselves confused there.

- This means we don't have a surplus temporary reference anymore, only
  an inherited from the idr. A concurrent gem_close on the new_handle
  could steal that. Fix that with the same two-stage approach
  create_tail uses. This is a bit overkill as documented in the comment,
  but I also don't trust my ability to understand this all correctly, so
  go with the established pattern we have from other ioctls instead for
  maximum paranoia.

- Adjust error paths. I've tried to make the error and success paths
  common, because they are identical except for which handle is removed
  and on which we call idr_replace to (re)install the object again. But
  that made things messier to read, so I've left it at the more verbose
  version, which unfortunately hides the symmetry in the entire code
  flow a bit.

- While at it, also replace the 7 space indent with 1 tab.

And finally, because I flat out don't trust my abilities here at all
anymore:

- Disable the ioctl until we have the igt situation and everything else
  sorted out on-list and with full consensus.

v2:

Sashiko noticed that I didn't handle the error path for idr_replace
correctly, it must be checked with IS_ERR_OR_NULL like in
gem_handle_delete. So yeah, definitely should just the existing paths
1:1 because this is endless amounts of tricky.

Also add the Fixes: line for the original ioctl, I forgot that too.

	Reported-by: DARKNAVY (@DarkNavyOrg) <vr@darknavy.com>
	Signed-off-by: Simona Vetter <simona.vetter@ffwll.ch>
Fixes: dc36660 ("drm: Replace old pointer to new idr")
	Cc: syzbot+d7c9eed171647e421013@syzkaller.appspotmail.com
	Cc: stable@vger.kernel.org
	Cc: Edward Adam Davis <eadavis@qq.com>
	Cc: Dave Airlie <airlied@redhat.com>
	Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
	Cc: Maxime Ripard <mripard@kernel.org>
	Cc: Thomas Zimmermann <tzimmermann@suse.de>
Fixes: 5e28b7b ("drm: Set old handle to NULL before prime swap in change_handle")
	Cc: David Francis <David.Francis@amd.com>
	Cc: Puttimet Thammasaeng <pwn8official@gmail.com>
	Cc: Christian Koenig <Christian.Koenig@amd.com>
Fixes: 7164d78 ("drm/gem: fix race between change_handle and handle_delete")
	Cc: Zhenghang Xiao <kipreyyy@gmail.com>
Fixes: 5e28b7b ("drm: Set old handle to NULL before prime swap in change_handle")
	Reviewed-by: David Francis <David.Francis@amd.com>
	Signed-off-by: Dave Airlie <airlied@redhat.com>
Link: https://patch.msgid.link/20260604194437.1725314-1-simona.vetter@ffwll.ch
(cherry picked from commit 1a4f03d)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-1355
Rebuild_History Non-Buildable kernel-6.12.0-211.37.1.el10_2
commit-author Olga Kornievskaia <okorniev@redhat.com>
commit d042406

If we are trying to unlock the filesystem via an administrative
interface and nfsd isn't running, it crashes the server. This
happens currently because nfsd4_revoke_states() access state
structures (eg., conf_id_hashtbl) that has been freed as a part
of the server shutdown.

[   59.465072] Call trace:
[   59.465308]  nfsd4_revoke_states+0x1b4/0x898 [nfsd] (P)
[   59.465830]  write_unlock_fs+0x258/0x440 [nfsd]
[   59.466278]  nfsctl_transaction_write+0xb0/0x120 [nfsd]
[   59.466780]  vfs_write+0x1f0/0x938
[   59.467088]  ksys_write+0xfc/0x1f8
[   59.467395]  __arm64_sys_write+0x74/0xb8
[   59.467746]  invoke_syscall.constprop.0+0xdc/0x1e8
[   59.468177]  do_el0_svc+0x154/0x1d8
[   59.468489]  el0_svc+0x40/0xe0
[   59.468767]  el0t_64_sync_handler+0xa0/0xe8
[   59.469138]  el0t_64_sync+0x1ac/0x1b0

Ensure this can't happen by taking the nfsd_mutex and checking that
the server is still up, and then holding the mutex across the call to
nfsd4_revoke_states().

	Reviewed-by: NeilBrown <neil@brown.name>
	Reviewed-by: Jeff Layton <jlayton@kernel.org>
Fixes: 1ac3629 ("nfsd: prepare for supporting admin-revocation of state")
	Cc: stable@vger.kernel.org
	Signed-off-by: Olga Kornievskaia <okorniev@redhat.com>
	Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
(cherry picked from commit d042406)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-1355
Rebuild_History Non-Buildable kernel-6.12.0-211.37.1.el10_2
commit-author NeilBrown <neil@brown.name>
commit fb32199

The loop in nfsd4_revoke_states() stops one too early because
the end value given is CLIENT_HASH_MASK where it should be
CLIENT_HASH_SIZE.

This means that an admin request to drop all locks for a filesystem will
miss locks held by clients which hash to the maximum possible hash value.

Fixes: 1ac3629 ("nfsd: prepare for supporting admin-revocation of state")
	Cc: stable@vger.kernel.org
	Signed-off-by: NeilBrown <neil@brown.name>
	Reviewed-by: Jeff Layton <jlayton@kernel.org>
	Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
(cherry picked from commit fb32199)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-1355
Rebuild_History Non-Buildable kernel-6.12.0-211.37.1.el10_2
commit-author Chuck Lever <chuck.lever@oracle.com>
commit 3daab31

Async COPY operations hold copy stateids that represent NFSv4 state.
Thus, when the NFS server administrator revokes all NFSv4 state for
a filesystem via the unlock_fs interface, ongoing async COPY
operations referencing that filesystem must also be canceled.

Each cancelled copy triggers a CB_OFFLOAD callback carrying the
NFS4ERR_ADMIN_REVOKED status to notify the client that the server
terminated the operation.

The static drop_client() function is renamed to nfsd4_put_client()
and exported. The function must be exported because both the new
nfsd4_cancel_copy_by_sb() and the CB_OFFLOAD release callback in
nfs4proc.c need to release client references.

	Reviewed-by: NeilBrown <neil@brown.name>
	Reviewed-by: Jeff Layton <jlayton@kernel.org>
	Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
(cherry picked from commit 3daab31)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-1355
Rebuild_History Non-Buildable kernel-6.12.0-211.37.1.el10_2
commit-author Shuicheng Lin <shuicheng.lin@intel.com>
commit a828eb1

When xe_dma_buf_init_obj() fails, the attachment from
dma_buf_dynamic_attach() is not detached. Add dma_buf_detach() before
returning the error. Note: we cannot use goto out_err here because
xe_dma_buf_init_obj() already frees bo on failure, and out_err would
double-free it.

Fixes: dd08ebf ("drm/xe: Introduce a new DRM driver for Intel GPUs")
	Cc: stable@vger.kernel.org
Assisted-by: Claude:claude-opus-4.6
	Reviewed-by: Mattheq Brost <matthew.brost@intel.com>
Link: https://patch.msgid.link/20260408175255.3402838-5-shuicheng.lin@intel.com
	Signed-off-by: Shuicheng Lin <shuicheng.lin@intel.com>
(cherry picked from commit a828eb1)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-1355
Rebuild_History Non-Buildable kernel-6.12.0-211.37.1.el10_2
commit-author Shuicheng Lin <shuicheng.lin@intel.com>
commit 78a6c5f

When drm_gpuvm_resv_object_alloc() fails, the pre-allocated storage bo
is not freed. Add xe_bo_free(storage) before returning the error.

xe_dma_buf_init_obj() calls xe_bo_init_locked(), which frees the bo on
error. Therefore, xe_dma_buf_init_obj() must also free the bo on its own
error paths. Otherwise, since xe_gem_prime_import() cannot distinguish
whether the failure originated from xe_dma_buf_init_obj() or from
xe_bo_init_locked(), it cannot safely decide whether the bo should be
freed.

Add comments documenting the ownership semantics: on success, ownership
of storage is transferred to the returned drm_gem_object; on failure,
storage is freed before returning.

v2: Add comments to explain the free logic.

Fixes: eb289a5 ("drm/xe: Convert xe_dma_buf.c for exhaustive eviction")
	Cc: stable@vger.kernel.org
Assisted-by: Claude:claude-opus-4.6
	Reviewed-by: Matthew Brost <matthew.brost@intel.com>
Link: https://patch.msgid.link/20260408175255.3402838-4-shuicheng.lin@intel.com
	Signed-off-by: Shuicheng Lin <shuicheng.lin@intel.com>
(cherry picked from commit 78a6c5f)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-1355
Rebuild_History Non-Buildable kernel-6.12.0-211.37.1.el10_2
commit-author Matthew Auld <matthew.auld@intel.com>
commit af1f2ad

There look to be some nasty races here when triggering the
invalidate_mappings hook:

1) We do xe_bo_alloc() followed by the attach, before the actual full bo
   init step in xe_dma_buf_init_obj(). However the bo is visible on the
   attachments list after the attach.  This is bad since exporter driver,
   say amdgpu, can at any time call back into our invalidate_mappings hook,
   with an empty/bogus bo, leading to potential bugs/crashes.

2) Similar to 1) but here we get a UAF, when the invalidate_mappings
   hook is triggered. For example, we get as far as xe_bo_init_locked()
   but this fails in some way. But here the bo will be freed on error, but
   we still have it attached from dma-buf pov, so if the
   invalidate_mappings is now triggered then the bo we access is gone and
   we trigger UAF and more bugs/crashes.

To fix this, move the attach step until after we actually have a fully
set up buffer object. Note that the bo is not published to userspace
until later, so not sure what the comment "Don't publish the bo
until we have a valid attachment", is referring to.

We have at least two different customers reporting hitting a NULL ptr
deref in evict_flags when importing something from amdgpu, followed by
triggering the evict flow. Hit rate is also pretty low, which would
hint at some kind of race, so something like 1) or 2) might explain
this.

v2:
  - Shuffle the order of the ops slightly (no functional change)
  - Improve the comment to better explain the ordering (Matt B)

Assisted-by: Gemini:gemini-3 #debug
Link: https://gitlab.freedesktop.org/drm/xe/kernel/-/work_items/7903
Link: https://gitlab.freedesktop.org/drm/xe/kernel/-/work_items/4055
Fixes: dd08ebf ("drm/xe: Introduce a new DRM driver for Intel GPUs")
	Signed-off-by: Matthew Auld <matthew.auld@intel.com>
	Cc: Thomas Hellström <thomas.hellstrom@linux.intel.com>
	Cc: Matthew Brost <matthew.brost@intel.com>
	Cc: <stable@vger.kernel.org> # v6.8+
	Reviewed-by: Matthew Brost <matthew.brost@intel.com>
	Acked-by: Thomas Hellström <thomas.hellstrom@linux.intel.com>
Link: https://patch.msgid.link/20260508102635.149172-3-matthew.auld@intel.com
(cherry picked from commit af1f2ad)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-1355
cve CVE-2026-52950
Rebuild_History Non-Buildable kernel-6.12.0-211.37.1.el10_2
commit-author Matthew Auld <matthew.auld@intel.com>
commit 4796694

Retry doesn't work here, since bo will be freed on error, leading to
UAF. However, now that we do the alloc & init before the attach, we can
now combine this as one unit and have the init do the alloc for us. This
should make the retry safe.

Reported by Sashiko.

v2: Fix up the error unwind (CI)

Closes: https://sashiko.dev/#/patchset/20260506184332.86743-2-matthew.auld%40intel.com
Fixes: eb289a5 ("drm/xe: Convert xe_dma_buf.c for exhaustive eviction")
	Signed-off-by: Matthew Auld <matthew.auld@intel.com>
	Cc: Thomas Hellström <thomas.hellstrom@linux.intel.com>
	Cc: Matthew Brost <matthew.brost@intel.com>
	Cc: <stable@vger.kernel.org> # v6.18+
	Reviewed-by: Thomas Hellström <thomas.hellstrom@linux.intel.com>
Link: https://patch.msgid.link/20260508102635.149172-4-matthew.auld@intel.com
(cherry picked from commit 4796694)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-1355
cve CVE-2026-46116
Rebuild_History Non-Buildable kernel-6.12.0-211.37.1.el10_2
commit-author Michal Kosiorek <mkosiorek121@gmail.com>
commit 14acf96
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-6.12.0-211.37.1.el10_2/14acf965.failed

KASAN reproduces a slab-use-after-free in __xfrm_state_delete()'s
hlist_del_rcu calls under syzkaller load on linux-6.12.y stable
(reproduced on 6.12.47, also reachable via the same code path on
torvalds/master and on the ipsec tree). Nine unique signatures cluster
in the xfrm_state lifecycle, the load-bearing one being:

  BUG: KASAN: slab-use-after-free in __hlist_del include/linux/list.h:990 [inline]
  BUG: KASAN: slab-use-after-free in hlist_del_rcu include/linux/rculist.h:516 [inline]
  BUG: KASAN: slab-use-after-free in __xfrm_state_delete net/xfrm/xfrm_state.c
  Write of size 8 at addr ffff8881198bcb70 by task kworker/u8:9/435

  Workqueue: netns cleanup_net
  Call Trace:
   __hlist_del / hlist_del_rcu
   __xfrm_state_delete
   xfrm_state_delete
   xfrm_state_flush
   xfrm_state_fini
   ops_exit_list
   cleanup_net

The other observed signatures hit the same slab object from
__xfrm_state_lookup, xfrm_alloc_spi, __xfrm_state_insert and an OOB
write variant of __xfrm_state_delete, all on the byseq/byspi
hash chains.

__xfrm_state_delete() guards its byseq and byspi unhashes with
value-based predicates:

	if (x->km.seq)
		hlist_del_rcu(&x->byseq);
	if (x->id.spi)
		hlist_del_rcu(&x->byspi);

while everywhere else in the file (e.g. state_cache, state_cache_input)
the safer hlist_unhashed() check is used. xfrm_alloc_spi() sets
x->id.spi = newspi inside xfrm_state_lock and then immediately inserts
into byspi, but a path that observes x->id.spi != 0 outside of
xfrm_state_lock can still skip-or-hit the byspi unhash inconsistently
with whether x is actually on the list. The same holds for x->km.seq
versus byseq, and the bydst/bysrc unhashes have no predicate at all,
so a second __xfrm_state_delete() on the same object writes through
LIST_POISON pprev.

The defensive change here:

  - Use hlist_del_init_rcu() instead of hlist_del_rcu() on bydst,
    bysrc, byseq and byspi so a second deletion is a no-op rather
    than a write through LIST_POISON pprev. The byseq/byspi nodes
    are already initialised in xfrm_state_alloc().
  - Test hlist_unhashed() rather than the value predicate for
    byseq/byspi, so the unhash decision tracks list state rather than
    mutable scalar fields.

Empirical verification: applied this patch on top of v6.12.47, rebuilt,
and re-ran the same syzkaller harness for 1h16m on a previously-crashy
configuration that produced ~100 hits each of slab-use-after-free
Read in xfrm_alloc_spi / Read in __xfrm_state_lookup / Write in
__xfrm_state_delete. After the patch, 7.1M execs across 32 VMs at
~1550 exec/sec produced zero xfrm_state UAF/OOB hits. /proc/slabinfo
confirms the xfrm_state slab is actively allocated and freed during
the run (~143 KiB resident), so the fuzzer is still exercising those
code paths -- they just no longer crash.

Reproduction:

  - Linux 6.12.47 x86_64 + KASAN_GENERIC + KASAN_INLINE + KCOV
  - syzkaller @ 746545b8b1e4c3a128db8652b340d3df90ce61db
  - 32 QEMU/KVM VMs x 2 vCPU on AWS c5.metal bare metal
  - 9 unique signatures collected in ~9h, all within xfrm_state
    lifecycle

Fixes: fe9f1d8 ("xfrm: add state hashtable keyed by seq")
Fixes: 7b4dc36 ("[XFRM]: Do not add a state whose SPI is zero to the SPI hash.")
	Reported-by: Michal Kosiorek <mkosiorek121@gmail.com>
	Tested-by: Michal Kosiorek <mkosiorek121@gmail.com>
	Cc: stable@vger.kernel.org
	Signed-off-by: Michal Kosiorek <mkosiorek121@gmail.com>
	Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
(cherry picked from commit 14acf96)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>

# Conflicts:
#	net/xfrm/xfrm_state.c
jira KERNEL-1355
cve CVE-2026-52976
Rebuild_History Non-Buildable kernel-6.12.0-211.37.1.el10_2
commit-author Shuicheng Lin <shuicheng.lin@intel.com>
commit 37c831f

Two error handling issues exist in xe_exec_queue_create_ioctl():

1. When xe_hw_engine_group_add_exec_queue() fails, the error path jumps
   to put_exec_queue which skips xe_exec_queue_kill(). If the VM is in
   preempt fence mode, xe_vm_add_compute_exec_queue() has already added
   the queue to the VM's compute exec queue list. Skipping the kill
   leaves the queue on that list, leading to a dangling pointer after
   the queue is freed.

2. When xa_alloc() fails after xe_hw_engine_group_add_exec_queue() has
   succeeded, the error path does not call
   xe_hw_engine_group_del_exec_queue() to remove the queue from the hw
   engine group list. The queue is then freed while still linked into
   the hw engine group, causing a use-after-free.

Fix both by:
- Changing the xe_hw_engine_group_add_exec_queue() failure path to jump
  to kill_exec_queue so that xe_exec_queue_kill() properly removes the
  queue from the VM's compute list.
- Adding a del_hw_engine_group label before kill_exec_queue for the
  xa_alloc() failure path, which removes the queue from the hw engine
  group before proceeding with the rest of the cleanup.

Fixes: 7970cb3 ("'drm/xe/hw_engine_group: Register hw engine group's exec queues")
	Cc: Francois Dugast <francois.dugast@intel.com>
	Cc: Matthew Brost <matthew.brost@intel.com>
	Cc: Niranjana Vishwanathapura <niranjana.vishwanathapura@intel.com>
Assisted-by: Claude:claude-opus-4.6
	Reviewed-by: Matthew Brost <matthew.brost@intel.com>
Link: https://patch.msgid.link/20260408020647.3397933-1-shuicheng.lin@intel.com
	Signed-off-by: Shuicheng Lin <shuicheng.lin@intel.com>
(cherry picked from commit 37c831f)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-1355
cve CVE-2025-71113
Rebuild_History Non-Buildable kernel-6.12.0-211.37.1.el10_2
commit-author Shivani Agarwal <shivani.agarwal@broadcom.com>
commit 6f6e309

Several crypto user API contexts and requests allocated with
sock_kmalloc() were left uninitialized, relying on callers to
set fields explicitly. This resulted in the use of uninitialized
data in certain error paths or when new fields are added in the
future.

The ACVP patches also contain two user-space interface files:
algif_kpp.c and algif_akcipher.c. These too rely on proper
initialization of their context structures.

A particular issue has been observed with the newly added
'inflight' variable introduced in af_alg_ctx by commit:

  67b164a ("crypto: af_alg - Disallow multiple in-flight AIO requests")

Because the context is not memset to zero after allocation,
the inflight variable has contained garbage values. As a result,
af_alg_alloc_areq() has incorrectly returned -EBUSY randomly when
the garbage value was interpreted as true:

  https://github.com/gregkh/linux/blame/master/crypto/af_alg.c#L1209

The check directly tests ctx->inflight without explicitly
comparing against true/false. Since inflight is only ever set to
true or false later, an uninitialized value has triggered
-EBUSY failures. Zero-initializing memory allocated with
sock_kmalloc() ensures inflight and other fields start in a known
state, removing random issues caused by uninitialized data.

Fixes: fe869cd ("crypto: algif_hash - User-space interface for hash operations")
Fixes: 5afdfd2 ("crypto: algif_rng - add random number generator support")
Fixes: 2d97591 ("crypto: af_alg - consolidation of duplicate code")
Fixes: 67b164a ("crypto: af_alg - Disallow multiple in-flight AIO requests")
	Cc: stable@vger.kernel.org
	Signed-off-by: Shivani Agarwal <shivani.agarwal@broadcom.com>
	Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
(cherry picked from commit 6f6e309)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-1355
cve CVE-2025-71147
Rebuild_History Non-Buildable kernel-6.12.0-211.37.1.el10_2
commit-author Jarkko Sakkinen <jarkko@kernel.org>
commit 62cd5d4

'tpm2_load_cmd' allocates a tempoary blob indirectly via 'tpm2_key_decode'
but it is not freed in the failure paths. Address this by wrapping the blob
into with a cleanup helper.

	Cc: stable@vger.kernel.org # v5.13+
Fixes: f221974 ("security: keys: trusted: use ASN.1 TPM2 key format for the blobs")
	Signed-off-by: Jarkko Sakkinen <jarkko@kernel.org>
(cherry picked from commit 62cd5d4)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-1355
Rebuild_History Non-Buildable kernel-6.12.0-211.37.1.el10_2
commit-author Geert Uytterhoeven <geert+renesas@glider.be>
commit 7a77edf

"include/asm-<arch>" was replaced by "arch/<arch>/include/asm" a long time
ago.

Link: https://lkml.kernel.org/r/541258219b0441fa1da890e2f8458a7ac18c2ef9.1733404444.git.geert+renesas@glider.be
	Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
	Cc: Andy Whitcroft <apw@canonical.com>
	Cc: Arnd Bergmann <arnd@arndb.de>
	Cc: Dwaipayan Ray <dwaipayanray1@gmail.com>
	Cc: Joe Perches <joe@perches.com>
	Cc: Lukas Bulwahn <lukas.bulwahn@gmail.com>
	Cc: Masahiro Yamada <masahiroy@kernel.org>
	Cc: Nathan Chancellor <nathan@kernel.org>
	Cc: Nicolas Schier <nicolas@fjasle.eu>
	Cc: Oleg Nesterov <oleg@redhat.com>
	Cc: Rasmus Villemoes <linux@rasmusvillemoes.dk>
	Cc: Yury Norov <yury.norov@gmail.com>
	Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
(cherry picked from commit 7a77edf)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-1355
Rebuild_History Non-Buildable kernel-6.12.0-211.37.1.el10_2
commit-author Tamir Duberstein <tamird@gmail.com>
commit 158e9d2

This has been unused since commit 3aa5688 ("bitmap: replace
bitmap_{from,to}_u32array") in 2018.

	Signed-off-by: Tamir Duberstein <tamird@gmail.com>
	Reviewed-by: David Gow <davidgow@google.com>
	Signed-off-by: Yury Norov <yury.norov@gmail.com>
(cherry picked from commit 158e9d2)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-1355
Rebuild_History Non-Buildable kernel-6.12.0-211.37.1.el10_2
commit-author Andy Shevchenko <andriy.shevchenko@linux.intel.com>
commit f54af4a

The bitmap_scatter() mistakenly refers to itself for detailed explanation
about the relationships of two. Instead of simply fixing this, align text
in both making a cross-reference.

Fixes: de5f843 ("lib/bitmap: Introduce bitmap_scatter() and bitmap_gather() helpers")
	Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
	Signed-off-by: Yury Norov <yury.norov@gmail.com>
(cherry picked from commit f54af4a)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-1355
Rebuild_History Non-Buildable kernel-6.12.0-211.37.1.el10_2
commit-author Thomas Gleixner <tglx@linutronix.de>
commit 437cb3d

CID management OR's two cpumasks and then calculates the weight on the
result. That's inefficient as that has to walk the same stuff twice. As
this is done with runqueue lock held, there is a real benefit of speeding
this up. Depending on the system this results in 10-20% less cycles spent
with runqueue lock held for a 4K cpumask.

Provide cpumask_weighted_or() and the corresponding bitmap functions which
return the weight of the OR result right away.

	Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
	Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
	Reviewed-by: Yury Norov (NVIDIA) <yury.norov@gmail.com>
	Reviewed-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Link: https://patch.msgid.link/20251119172549.448263340@linutronix.de
(cherry picked from commit 437cb3d)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-1355
Rebuild_History Non-Buildable kernel-6.12.0-211.37.1.el10_2
commit-author Andy Shevchenko <andriy.shevchenko@linux.intel.com>
commit 6b5a4b6

Make sure that bitmap_scatter() and bitmap_gather() do not modify
the bits outside of the given nbits span.

	Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
	Signed-off-by: Yury Norov <ynorov@nvidia.com>
(cherry picked from commit 6b5a4b6)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-1355
Rebuild_History Non-Buildable kernel-6.12.0-211.37.1.el10_2
commit-author Yury Norov <ynorov@nvidia.com>
commit d1a4379

scnprintf("%*pbl") is more verbose than bitmap_print_to_pagebuf().
Switch the test to using it. This also improves the test output
because bitmap_print_to_pagebuf() adds \n at the end of the printed
bitmap, which breaks the test format.

	Signed-off-by: Yury Norov <ynorov@nvidia.com>
(cherry picked from commit d1a4379)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-1355
Rebuild_History Non-Buildable kernel-6.12.0-211.37.1.el10_2
commit-author Yury Norov <ynorov@nvidia.com>
commit e63375d

Different subtests print output in slightly different formats. Unify the
format for better visual representation.

The test output before:

[    0.553474] test_bitmap: parselist: 14: input is '0-2047:128/256' OK, Time: 202
[    0.555121] test_bitmap: bitmap_print_to_pagebuf: input is '0-32767
[    0.555121] ', Time: 1278
[    0.578392] test_bitmap: Time spent in test_bitmap_read_perf:	427864
[    0.580137] test_bitmap: Time spent in test_bitmap_write_perf:	793554
[    0.581957] test_bitmap: all 390447 tests passed

And after:

[    0.314982] test_bitmap: parselist('0-2047:128/256'):	135
[    0.315517] test_bitmap: scnprintf("%*pbl", '0-32767'):	342
[    0.330045] test_bitmap: test_bitmap_read_perf:		252294
[    0.331132] test_bitmap: test_bitmap_write_perf:		539001
[    0.332163] test_bitmap: all 390447 tests passed

	Signed-off-by: Yury Norov <ynorov@nvidia.com>
(cherry picked from commit e63375d)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-1355
Rebuild_History Non-Buildable kernel-6.12.0-211.37.1.el10_2
commit-author Yury Norov <ynorov@nvidia.com>
commit bf31ddc

The function calculates a Hamming weight of a bitmap starting from an
arbitrary bit.

	Signed-off-by: Yury Norov <ynorov@nvidia.com>
(cherry picked from commit bf31ddc)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-1355
Rebuild_History Non-Buildable kernel-6.12.0-211.37.1.el10_2
commit-author Yury Norov <ynorov@nvidia.com>
commit e9cf8f8

Test the function for correctness when some bits are set in the last word
of bitmap beyond nbits. This is motivated by commit a9dadc1
("powerpc/xive: Fix the size of the cpumask used in
xive_find_target_in_mask()").

	Signed-off-by: Yury Norov <ynorov@nvidia.com>
(cherry picked from commit e9cf8f8)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-1355
Rebuild_History Non-Buildable kernel-6.12.0-211.37.1.el10_2
commit-author Yury Norov <ynorov@nvidia.com>
commit 2a4d370

Bitmap API handles nbits == 0 in most cases correctly, i.e. it doesn't
dereferene underlying bitmap and returns a sane value where convenient,
or implementation defined, or undef.

Implicitly testing nbits == 0 case, however, may make an impression that
this is a regular case. This is wrong. In most cases nbits == 0 is a
sign of an error on a client side. The tests should not make such an
implression.

This patch reworks the existing tests to not test nbits == 0. The
following patch adds an explicit test for it with an appropriate
precaution.

	Signed-off-by: Yury Norov <ynorov@nvidia.com>
(cherry picked from commit 2a4d370)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
PlaidCat added 21 commits July 22, 2026 09:10
jira KERNEL-1355
Rebuild_History Non-Buildable kernel-6.12.0-211.37.1.el10_2
commit-author Jesse Brandeburg <jbrandeburg@cloudflare.com>
commit 05faf2c

Since the beginning, the Intel ice driver has counted receive checksum
offload mismatches into the rx_errors member of the rtnl_link_stats64
struct. In ethtool -S these show up as rx_csum_bad.nic.

I believe counting these in rx_errors is fundamentally wrong, as it's
pretty clear from the comments in if_link.h and from every other statistic
the driver is summing into rx_errors, that all of them would cause a
"hardware drop" except for the UDP checksum mismatch, as well as the fact
that all the other causes for rx_errors are L2 reasons, and this L4 UDP
"mismatch" is an outlier.

A last nail in the coffin is that rx_errors is monitored in production and
can indicate a bad NIC/cable/Switch port, but instead some random series of
UDP packets with bad checksums will now trigger this alert. This false
positive makes the alert useless and affects us as well as other companies.

This packet with presumably a bad UDP checksum is *already* passed to the
stack, just not marked as offloaded by the hardware/driver. If it is
dropped by the stack it will show up as UDP_MIB_CSUMERRORS.

And one more thing, none of the other Intel drivers, and at least bnxt_en
and mlx5 both don't appear to count UDP offload mismatches as rx_errors.

Here is a related customer complaint:
https://community.intel.com/t5/Ethernet-Products/ice-rx-errros-is-too-sensitive-to-IP-TCP-attack-packets-Intel/td-p/1662125

Fixes: 4f1fe43 ("ice: Add more Rx errors to netdev's rx_error counter")
	Cc: Tony Nguyen <anthony.l.nguyen@intel.com>
	Cc: Jake Keller <jacob.e.keller@intel.com>
	Cc: IWL <intel-wired-lan@lists.osuosl.org>
	Signed-off-by: Jesse Brandeburg <jbrandeburg@cloudflare.com>
	Acked-by: Jacob Keller <jacob.e.keller@intel.com>
	Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
(cherry picked from commit 05faf2c)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-1355
Rebuild_History Non-Buildable kernel-6.12.0-211.37.1.el10_2
commit-author Grzegorz Nitka <grzegorz.nitka@intel.com>
commit 99854c1

Modify PTP (Precision Time Protocol) configuration on link down flow.
Previously, PHY_REG_TX_OFFSET_READY register was cleared in such case.
This register is used to determine if the timestamp is valid or not on
the hardware side.
However, there is a possibility that there is still the packet in the
HW queue which originally was supposed to be timestamped but the link
is already down and given register is cleared.
This potentially might lead to the situation in which that 'delayed'
packet's timestamp is treated as invalid one when the link is up
again.
This in turn leads to the situation in which the driver is not able to
effectively clean timestamp memory and interrupt configuration.
From the hardware perspective, that 'old' interrupt was not handled
properly and even if new timestamp packets are processed, no new
interrupts is generated. As a result, providing timestamps to the user
applications (like ptp4l) is not possible.
The solution for this problem is implemented at the driver level rather
than the firmware, and maintains the tx_ready bit high, even during
link down events. This avoids entering a potential inconsistent state
between the driver and the timestamp hardware.

Testing hints:
- run PTP traffic at higher rate (like 16 PTP messages per second)
- observe ptp4l behaviour at the client side in the following
  conditions:
	a) trigger link toggle events. It needs to be physiscal
           link down/up events
	b) link speed change
In all above cases, PTP processing at ptp4l application should resume
always. In failure case, the following permanent error message in ptp4l
log was observed:
controller-0 ptp4l: err [6175.116] ptp4l-legacy timed out while polling
	for tx timestamp

Fixes: 7cab44f ("ice: Introduce ETH56G PHY model for E825C products")
	Reviewed-by: Aleksandr Loktionov <aleksandr.loktionov@intel.com>
	Signed-off-by: Grzegorz Nitka <grzegorz.nitka@intel.com>
	Tested-by: Sunitha Mekala <sunithax.d.mekala@intel.com> (A Contingent worker at Intel)
	Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
(cherry picked from commit 99854c1)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-1355
Rebuild_History Non-Buildable kernel-6.12.0-211.37.1.el10_2
commit-author Aaron Ma <aaron.ma@canonical.com>
commit 6aa07e2

Fix IRDMA hardware initialization timeout (-110) after resume by
separating VSI-dependent configuration from RDMA resource allocation,
ensuring VSI is rebuilt before IRDMA accesses it.

After resume from suspend, IRDMA hardware initialization fails:
  ice: IRDMA hardware initialization FAILED init_state=4 status=-110

Separate RDMA initialization into two phases:
1. ice_init_rdma() - Allocate resources only (no VSI/QoS access, no plug)
2. ice_rdma_finalize_setup() - Assign VSI/QoS info and plug device

This allows:
- ice_init_rdma() to stay in ice_resume() (mirrors ice_deinit_rdma()
  in ice_suspend())
- VSI assignment deferred until after ice_vsi_rebuild() completes
- QoS info updated after ice_dcb_rebuild() completes
- Device plugged only when control queues, VSI, and DCB are all ready

Fixes: bc69ad7 ("ice: avoid IRQ collision to fix init failure on ACPI S3 resume")
	Reviewed-by: Aleksandr Loktionov <aleksandr.loktionov@intel.com>
	Signed-off-by: Aaron Ma <aaron.ma@canonical.com>
	Reviewed-by: Simon Horman <horms@kernel.org>
	Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
(cherry picked from commit 6aa07e2)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-1355
Rebuild_History Non-Buildable kernel-6.12.0-211.37.1.el10_2
commit-author Larysa Zaremba <larysa.zaremba@intel.com>
commit eef33aa

The referenced commit came from a misunderstanding of the FW LLDP filter
AQ (Admin Queue) command due to the error in the internal documentation.
Contrary to the assumptions in the original commit, VFs can be added and
deleted from this filter without any problems. Introduced dev_info message
proved to be useful, so reverting the whole commit does not make sense.

Without this fix, trusted VFs do not receive LLDP traffic, if there is an
AQ LLDP filter on PF. When trusted VF attempts to add an LLDP multicast
MAC address, the following message can be seen in dmesg on host:

ice 0000:33:00.0: Failed to add Rx LLDP rule on VSI 20 error: -95

Revert checking VSI type when adding LLDP filter through AQ.

Fixes: 4d5a1c4 ("ice: do not add LLDP-specific filter if not necessary")
	Reviewed-by: Aleksandr Loktionov <aleksandr.loktionov@intel.com>
	Signed-off-by: Larysa Zaremba <larysa.zaremba@intel.com>
	Tested-by: Rafal Romanowski <rafal.romanowski@intel.com>
	Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
(cherry picked from commit eef33aa)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-1355
Rebuild_History Non-Buildable kernel-6.12.0-211.37.1.el10_2
commit-author Jakub Staniszewski <jakub.staniszewski@linux.intel.com>
commit 326256c

Add retry mechanism for indirect Admin Queue (AQ) commands. To do so we
need to keep the command buffer.

This technically reverts commit 43a630e
("ice: remove unused buffer copy code in ice_sq_send_cmd_retry()"),
but combines it with a fix in the logic by using a kmemdup() call,
making it more robust and less likely to break in the future due to
programmer error.

	Cc: Michal Schmidt <mschmidt@redhat.com>
	Cc: stable@vger.kernel.org
Fixes: 3056df9 ("ice: Re-send some AQ commands, as result of EBUSY AQ error")
	Signed-off-by: Jakub Staniszewski <jakub.staniszewski@linux.intel.com>
Co-developed-by: Dawid Osuchowski <dawid.osuchowski@linux.intel.com>
	Signed-off-by: Dawid Osuchowski <dawid.osuchowski@linux.intel.com>
	Reviewed-by: Aleksandr Loktionov <aleksandr.loktionov@intel.com>
	Reviewed-by: Przemek Kitszel <przemyslaw.kitszel@intel.com>
	Reviewed-by: Paul Menzel <pmenzel@molgen.mpg.de>
	Tested-by: Rinitha S <sx.rinitha@intel.com> (A Contingent worker at Intel)
	Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
(cherry picked from commit 326256c)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-1355
Rebuild_History Non-Buildable kernel-6.12.0-211.37.1.el10_2
commit-author Jakub Staniszewski <jakub.staniszewski@linux.intel.com>
commit fb4903b

Executing ethtool -m can fail reporting a netlink I/O error while firmware
link management holds the i2c bus used to communicate with the module.

According to Intel(R) Ethernet Controller E810 Datasheet Rev 2.8 [1]
Section 3.3.10.4 Read/Write SFF EEPROM (0x06EE)
request should to be retried upon receiving EBUSY from firmware.

Commit e9c9692 ("ice: Reimplement module reads used by ethtool")
implemented it only for part of ice_get_module_eeprom(), leaving all other
calls to ice_aq_sff_eeprom() vulnerable to returning early on getting
EBUSY without retrying.

Remove the retry loop from ice_get_module_eeprom() and add Admin Queue
(AQ) command with opcode 0x06EE to the list of commands that should be
retried on receiving EBUSY from firmware.

	Cc: stable@vger.kernel.org
Fixes: e9c9692 ("ice: Reimplement module reads used by ethtool")
	Signed-off-by: Jakub Staniszewski <jakub.staniszewski@linux.intel.com>
Co-developed-by: Dawid Osuchowski <dawid.osuchowski@linux.intel.com>
	Signed-off-by: Dawid Osuchowski <dawid.osuchowski@linux.intel.com>
	Reviewed-by: Aleksandr Loktionov <aleksandr.loktionov@intel.com>
	Reviewed-by: Przemek Kitszel <przemyslaw.kitszel@intel.com>
Link: https://www.intel.com/content/www/us/en/content-details/613875/intel-ethernet-controller-e810-datasheet.html [1]
	Reviewed-by: Paul Menzel <pmenzel@molgen.mpg.de>
	Tested-by: Rinitha S <sx.rinitha@intel.com> (A Contingent worker at Intel)
	Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
(cherry picked from commit fb4903b)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-1355
Rebuild_History Non-Buildable kernel-6.12.0-211.37.1.el10_2
commit-author Larysa Zaremba <larysa.zaremba@intel.com>
commit 02852b4

XDP RxQ info contains frag_size, which depends on the MTU. This makes the
old way of registering RxQ info before calculating new buffer sizes
invalid. Currently, it leads to frag_size being outdated, making it
sometimes impossible to grow tailroom in a mbuf packet. E.g. fragments are
actually 3K+, but frag size is still as if MTU was 1500.

Always register new XDP RxQ info after reconfiguring memory pools.

Fixes: 2fba7dc ("ice: Add support for XDP multi-buffer on Rx side")
	Reviewed-by: Aleksandr Loktionov <aleksandr.loktionov@intel.com>
	Signed-off-by: Larysa Zaremba <larysa.zaremba@intel.com>
Link: https://patch.msgid.link/20260305111253.2317394-4-larysa.zaremba@intel.com
	Signed-off-by: Jakub Kicinski <kuba@kernel.org>
(cherry picked from commit 02852b4)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-1355
Rebuild_History Non-Buildable kernel-6.12.0-211.37.1.el10_2
commit-author Nikolay Aleksandrov <razor@blackwall.org>
commit bd98c62

If CONFIG_IRDMA isn't enabled but there are ice NICs in the system, the
driver will prevent full devlink dev param show dump because its rdma get
callbacks return ENODEV and stop the dump. For example:
 $ devlink dev param show
 pci/0000:82:00.0:
   name msix_vec_per_pf_max type generic
     values:
       cmode driverinit value 2
   name msix_vec_per_pf_min type generic
     values:
       cmode driverinit value 2
 kernel answers: No such device

Returning EOPNOTSUPP allows the dump to continue so we can see all devices'
devlink parameters.

Fixes: c24a65b ("iidc/ice/irdma: Update IDC to support multiple consumers")
	Signed-off-by: Nikolay Aleksandrov <nikolay@nvidia.com>
	Tested-by: Rinitha S <sx.rinitha@intel.com> (A Contingent worker at Intel)
	Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
(cherry picked from commit bd98c62)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-1355
Rebuild_History Non-Buildable kernel-6.12.0-211.37.1.el10_2
commit-author Petr Oros <poros@redhat.com>
commit ad85de0

Commit 0f00a89 ("ice: check if SF is ready in ethtool ops")
refactored the VF readiness check into a generic repr->ops.ready()
callback but implemented ice_repr_ready_vf() with inverted logic:

  return !ice_check_vf_ready_for_cfg(repr->vf);

ice_check_vf_ready_for_cfg() returns 0 on success, so the negation
makes ready() return non-zero when the VF is ready. All callers treat
non-zero as "not ready, skip", causing ndo_get_stats64, get_drvinfo,
get_strings and get_ethtool_stats to always bail out in switchdev mode.

Remove the erroneous negation. The SF variant ice_repr_ready_sf() is
already correct (returns !active, i.e. non-zero when not active).

Fixes: 0f00a89 ("ice: check if SF is ready in ethtool ops")
	Signed-off-by: Petr Oros <poros@redhat.com>
	Reviewed-by: Aleksandr Loktionov <aleksandr.loktionov@intel.com>
	Reviewed-by: Michal Swiatkowski <michal.swiatkowski@linux.intel.com>
	Tested-by: Patryk Holda <patryk.holda@intel.com>
	Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
(cherry picked from commit ad85de0)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-1355
Rebuild_History Non-Buildable kernel-6.12.0-211.37.1.el10_2
commit-author Petr Oros <poros@redhat.com>
commit 2526e44

ice_repr_get_stats64() and __ice_get_ethtool_stats() call
ice_update_vsi_stats() on the VF's src_vsi. This always returns early
because ICE_VSI_DOWN is permanently set for VF VSIs - ice_up() is never
called on them since queues are managed by iavf through virtchnl.

In __ice_get_ethtool_stats() the original code called
ice_update_vsi_stats() for all VSIs including representors, iterated
over ice_gstrings_vsi_stats[] to populate the data, and then bailed out
with an early return before the per-queue ring stats section. That early
return was necessary because representor VSIs have no rings on the PF
side - the rings belong to the VF driver (iavf), so accessing per-queue
stats would be invalid.

Move the representor handling to the top of __ice_get_ethtool_stats()
and call ice_update_eth_stats() directly to read the hardware GLV_*
counters. This matches ice_get_vf_stats() which already uses
ice_update_eth_stats() for the same VF VSI in legacy mode. Apply the
same fix to ice_repr_get_stats64().

Note that ice_gstrings_vsi_stats[] contains five software ring counters
(rx_buf_failed, rx_page_failed, tx_linearize, tx_busy, tx_restart) that
are always zero for representors since the PF never processes packets on
VF rings. This is pre-existing behavior unchanged by this patch.

Fixes: 7aae80c ("ice: add port representor ethtool ops and stats")
	Signed-off-by: Petr Oros <poros@redhat.com>
	Reviewed-by: Aleksandr Loktionov <aleksandr.loktionov@intel.com>
	Tested-by: Patryk Holda <patryk.holda@intel.com>
	Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
(cherry picked from commit 2526e44)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-1355
cve CVE-2026-43346
Rebuild_History Non-Buildable kernel-6.12.0-211.37.1.el10_2
commit-author Kohei Enju <kohei@enjuk.jp>
commit bb3f21e

In VFIO passthrough setups, it is possible to pass through only a PF
which doesn't own the source timer. In that case the PTP controlling PF
(adapter->ctrl_pf) is never initialized in the VM, so ice_get_ctrl_ptp()
returns NULL and triggers WARN_ON() in ice_ptp_setup_pf().

Since this is an expected behavior in that configuration, replace
WARN_ON() with an informational message and return -EOPNOTSUPP.

Fixes: e800654 ("ice: Use ice_adapter for PTP shared data instead of auxdev")
	Signed-off-by: Kohei Enju <kohei@enjuk.jp>
	Reviewed-by: Aleksandr Loktionov <aleksandr.loktionov@intel.com>
	Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
(cherry picked from commit bb3f21e)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-1355
Rebuild_History Non-Buildable kernel-6.12.0-211.37.1.el10_2
commit-author Petr Oros <poros@redhat.com>
commit bf6dbad

The E825C SyncE support added in commit ad1df4f ("ice: dpll:
Support E825-C SyncE and dynamic pin discovery") introduced a SyncE
reconfiguration block in ice_ptp_link_change() that prevents
ice_ptp_port_phy_restart() from being called in several error paths.
Without the PHY restart, PTP timestamps stop working after any link
change event.

There are three ways the PHY restart gets blocked:

1. When DPLL initialization fails (e.g. missing ACPI firmware node
   properties), ICE_FLAG_DPLL is not set and the function returns early
   before reaching the PHY restart.

2. When ice_tspll_bypass_mux_active_e825c() fails to read the CGU
   register, WARN_ON_ONCE fires and the function returns early.

3. When ice_tspll_cfg_synce_ethdiv_e825c() fails to configure the
   clock divider for an active pin, same early return.

SyncE and PTP are independent features. SyncE reconfiguration failures
must not prevent the PTP PHY restart that is essential for timestamp
recovery after link changes.

Fix by making the entire SyncE block conditional on ICE_FLAG_DPLL
without an early return, and replacing the WARN_ON_ONCE + return error
handling inside the loop with dev_err_once + break. The function always
proceeds to ice_ptp_port_phy_restart() regardless of SyncE errors.

Fixes: ad1df4f ("ice: dpll: Support E825-C SyncE and dynamic pin discovery")
	Signed-off-by: Petr Oros <poros@redhat.com>
	Reviewed-by: Grzegorz Nitka <grzegorz.nitka@intel.com>
	Reviewed-by: Aleksandr Loktionov <aleksandr.loktionov@intel.com>
	Tested-by: Sunitha Mekala <sunithax.d.mekala@intel.com> (A Contingent worker at Intel)
	Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
(cherry picked from commit bf6dbad)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-1355
Rebuild_History Non-Buildable kernel-6.12.0-211.37.1.el10_2
commit-author Simon Horman <horms@kernel.org>
commit dc0cdb7

The name member of struct ice_cgu_pin_desc never modified.
Make it const.

Found by inspection.
Compile tested only.

	Signed-off-by: Simon Horman <horms@kernel.org>
	Reviewed-by: Paul Menzel <pmenzel@molgen.mpg.de>
	Reviewed-by: Aleksandr Loktionov <aleksandr.loktionov@intel.com>
	Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
(cherry picked from commit dc0cdb7)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-1355
Rebuild_History Non-Buildable kernel-6.12.0-211.37.1.el10_2
commit-author Yury Norov <ynorov@nvidia.com>
commit bdeaa65

Use the right helper and save one bitmaps traverse.

	Reviewed-by: Aleksandr Loktionov <aleksandr.loktionov@intel.com>
	Reviewed-by: Jacob Keller <jacob.e.keller@intel.com>
	Tested-by: Rinitha S <sx.rinitha@intel.com> (A Contingent worker at Intel)
	Signed-off-by: Yury Norov <ynorov@nvidia.com>
(cherry picked from commit bdeaa65)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-1355
Rebuild_History Non-Buildable kernel-6.12.0-211.37.1.el10_2
commit-author Yury Norov <ynorov@nvidia.com>
commit 82e68aa

bitmap_empty() is more verbose and efficient, as it stops traversing
{r,t}xq_ena as soon as the 1st set bit found.

	Tested-by: Rafal Romanowski <rafal.romanowski@intel.com>
	Reviewed-by: Aleksandr Loktionov <aleksandr.loktionov@intel.com>
	Reviewed-by: Jacob Keller <jacob.e.keller@intel.com>
	Signed-off-by: Yury Norov <ynorov@nvidia.com>
(cherry picked from commit 82e68aa)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-1355
Rebuild_History Non-Buildable kernel-6.12.0-211.37.1.el10_2
commit-author Grzegorz Nitka <grzegorz.nitka@intel.com>
commit 885c5e5

Fix incorrect 'adjust the timer' programming sequence for E830 devices
series. Only shadow registers GLTSYN_SHADJ were programmed in the
current implementation. According to the specification [1], write to
command GLTSYN_CMD register is also required with CMD field set to
"Adjust the Time" value, for the timer adjustment to take the effect.

The flow was broken for the adjustment less than S32_MAX/MIN range
(around +/- 2 seconds). For bigger adjustment, non-atomic programming
flow is used, involving set timer programming. Non-atomic flow is
implemented correctly.

Testing hints:
Run command:
	phc_ctl /dev/ptpX get adj 2 get
Expected result:
	Returned timestamps differ at least by 2 seconds

[1] Intel® Ethernet Controller E830 Datasheet rev 1.3, chapter 9.7.5.4
https://cdrdv2.intel.com/v1/dl/getContent/787353?explicitVersion=true

Fixes: f003075 ("ice: Implement PTP support for E830 devices")
	Reviewed-by: Aleksandr Loktionov <aleksandr.loktionov@intel.com>
	Signed-off-by: Grzegorz Nitka <grzegorz.nitka@intel.com>
	Reviewed-by: Simon Horman <horms@kernel.org>
	Tested-by: Rinitha S <sx.rinitha@intel.com>
	Reviewed-by: Jacob Keller <jacob.e.keller@intel.com>
	Signed-off-by: Jacob Keller <jacob.e.keller@intel.com>
Link: https://patch.msgid.link/20260416-iwl-net-submission-2026-04-14-v2-1-686c33c9828d@intel.com
	Signed-off-by: Jakub Kicinski <kuba@kernel.org>
(cherry picked from commit 885c5e5)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-1355
Rebuild_History Non-Buildable kernel-6.12.0-211.37.1.el10_2
commit-author Grzegorz Nitka <grzegorz.nitka@intel.com>
commit 05567e4

Update MAC Rx/Tx offset registers settings (PHY_MAC_[RX|TX]_OFFSET
registers) with the data obtained with the latest research. It applies
to PCS latency settings for the following speeds/modes:
* 10Gb NO-FEC
        - TX latency changed from 71.25 ns to 73 ns
        - RX latency changed from -25.6 ns to -28 ns
* 25Gb NO-FEC
	- TX latency changed from 28.17 ns to 33 ns
        - RX latency changed from -12.45 ns to -12 ns
* 25Gb RS-FEC
        - TX latency changed from 64.5 ns to 69 ns
        - RX latency changed from -3.6 ns to -3 ns

The original data came from simulation and pre-production hardware.
The new data measures the actual delays and as such is more accurate.

Fixes: 7cab44f ("ice: Introduce ETH56G PHY model for E825C products")
Co-developed-by: Zoltan Fodor <zoltan.fodor@intel.com>
	Signed-off-by: Zoltan Fodor <zoltan.fodor@intel.com>
	Reviewed-by: Aleksandr Loktionov <aleksandr.loktionov@intel.com>
	Reviewed-by: Jacob Keller <jacob.e.keller@intel.com>
	Signed-off-by: Grzegorz Nitka <grzegorz.nitka@intel.com>
	Tested-by: Sunitha Mekala <sunithax.d.mekala@intel.com>
	Signed-off-by: Jacob Keller <jacob.e.keller@intel.com>
Link: https://patch.msgid.link/20260416-iwl-net-submission-2026-04-14-v2-2-686c33c9828d@intel.com
	Signed-off-by: Jakub Kicinski <kuba@kernel.org>
(cherry picked from commit 05567e4)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-1355
cve CVE-2026-46162
Rebuild_History Non-Buildable kernel-6.12.0-211.37.1.el10_2
commit-author Guangshuo Li <lgs201920130244@gmail.com>
commit 9aab1c3

When auxiliary_device_add() fails, ice_sf_eth_activate() jumps to
aux_dev_uninit and calls auxiliary_device_uninit(&sf_dev->adev).

The device release callback ice_sf_dev_release() frees sf_dev, but
the current error path falls through to sf_dev_free and calls
kfree(sf_dev) again, causing a double free.

Keep kfree(sf_dev) for the auxiliary_device_init() failure path, but
avoid falling through to sf_dev_free after auxiliary_device_uninit().

Fixes: 13acc5c ("ice: subfunction activation and base devlink ops")
	Cc: stable@vger.kernel.org
	Reviewed-by: Aleksandr Loktionov <aleksandr.loktionov@intel.com>
	Signed-off-by: Guangshuo Li <lgs201920130244@gmail.com>
	Reviewed-by: Simon Horman <horms@kernel.org>
	Signed-off-by: Jacob Keller <jacob.e.keller@intel.com>
Link: https://patch.msgid.link/20260416-iwl-net-submission-2026-04-14-v2-3-686c33c9828d@intel.com
	Signed-off-by: Jakub Kicinski <kuba@kernel.org>
(cherry picked from commit 9aab1c3)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-1355
cve CVE-2026-53009
Rebuild_History Non-Buildable kernel-6.12.0-211.37.1.el10_2
commit-author Michal Schmidt <mschmidt@redhat.com>
commit 1a303ba
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-6.12.0-211.37.1.el10_2/1a303baa.failed

If ice_tso() or ice_tx_csum() fail, the error path in
ice_xmit_frame_ring() frees the skb, but the 'first' tx_buf still points
to it and is marked as valid (ICE_TX_BUF_SKB).
'next_to_use' remains unchanged, so the potential problem will
likely fix itself when the next packet is transmitted and the tx_buf
gets overwritten. But if there is no next packet and the interface is
brought down instead, ice_clean_tx_ring() -> ice_unmap_and_free_tx_buf()
will find the tx_buf and free the skb for the second time.

The fix is to reset the tx_buf type to ICE_TX_BUF_EMPTY in the error
path, so that ice_unmap_and_free_tx_buf().
Move the initialization of 'first' up, to ensure it's already valid in
case we hit the linearization error path.

The bug was spotted by AI while I had it looking for something else.
It also proposed an initial version of the patch.

I reproduced the bug and tested the fix by adding code to inject
failures, on a build with KASAN.

I looked for similar bugs in related Intel drivers and did not find any.

Fixes: d76a60b ("ice: Add support for VLANs and offloads")
Assisted-by: Claude:claude-4.6-opus-high Cursor
	Signed-off-by: Michal Schmidt <mschmidt@redhat.com>
	Signed-off-by: Jacob Keller <jacob.e.keller@intel.com>
Link: https://patch.msgid.link/20260416-iwl-net-submission-2026-04-14-v2-4-686c33c9828d@intel.com
	Signed-off-by: Jakub Kicinski <kuba@kernel.org>
(cherry picked from commit 1a303ba)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>

# Conflicts:
#	drivers/net/ethernet/intel/ice/ice_txrx.c
jira KERNEL-1355
cve CVE-2026-46150
Rebuild_History Non-Buildable kernel-6.12.0-211.37.1.el10_2
commit-author Miklos Szeredi <mszeredi@redhat.com>
commit 7746e3b

fsnotify_get_mark_safe() may return false for a mark on an unrelated group,
which results in bypassing the permission check.

Fix by skipping over detached marks that are not in the current group.

CC: stable@vger.kernel.org
Fixes: abc7757 ("fsnotify: Provide framework for dropping SRCU lock in ->handle_event")
	Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
Link: https://patch.msgid.link/20260410144950.156160-1-mszeredi@redhat.com
	Signed-off-by: Jan Kara <jack@suse.cz>
(cherry picked from commit 7746e3b)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
Rebuild_History BUILDABLE
Rebuilding Kernel from rpm changelog with Fuzz Limit: 87.50%
Number of commits in upstream range v6.12~1..kernel-mainline: 138299
Number of commits in rpm: 64
Number of commits matched with upstream: 60 (93.75%)
Number of commits in upstream but not in rpm: 138239
Number of commits NOT found in upstream: 4 (6.25%)

Rebuilding Kernel on Branch rocky10_2_rebuild_kernel-6.12.0-211.37.1.el10_2 for kernel-6.12.0-211.37.1.el10_2
Clean Cherry Picks: 58 (96.67%)
Empty Cherry Picks: 2 (3.33%)
_______________________________

Full Details Located here:
ciq/ciq_backports/kernel-6.12.0-211.37.1.el10_2/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 Jul 22, 2026
@PlaidCat
PlaidCat requested review from a team July 22, 2026 14:24

@bmastbergen bmastbergen left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🥌

@PlaidCat
PlaidCat requested review from a team July 23, 2026 18:46

@kerneltoast kerneltoast left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

:shipit:

@PlaidCat
PlaidCat merged commit 784c133 into rocky10_2 Jul 24, 2026
4 checks passed
@PlaidCat
PlaidCat deleted the rocky10_2_rebuild branch July 24, 2026 20:34
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