Skip to content

[RLC-10] Rebase Custom Changes to rlc-10/6.12.0-211.20.1.el10_2 with cve-2025-10263#1319

Open
PlaidCat wants to merge 24 commits into
rlc-10/6.12.0-211.20.1.el10_2from
jmaple_rlc-10/6.12.0-211.20.1.el10_2
Open

[RLC-10] Rebase Custom Changes to rlc-10/6.12.0-211.20.1.el10_2 with cve-2025-10263#1319
PlaidCat wants to merge 24 commits into
rlc-10/6.12.0-211.20.1.el10_2from
jmaple_rlc-10/6.12.0-211.20.1.el10_2

Conversation

@PlaidCat

Copy link
Copy Markdown
Collaborator

https://ciqinc.atlassian.net/browse/KERNEL-1123

Update process (This kernel CentOS base for 6.12.0-211.20.1.el10_2)

  • Rolling Release Rebase Process
  • Create rlc-10/6.12.0-211.20.1.el10_2 branch from rocky10_2
  • Cherry-pick all code from previous branch rlc-10/6.12.0-211.18.1.el10_2 into new branch (skipping unneeded code)
    • Fix conflicts as they arise
  • Build and Test

Rebase Log

Already on 'rlc-10/6.12.0-211.18.1.el10_2'
Already on 'jmaple_rlc-10/6.12.0-211.20.1.el10_2'
[rolling release update] Rolling Product:  rlc-10
[rolling release update] Checking out branch:  rlc-10/6.12.0-211.18.1.el10_2
[rolling release update] Gathering all the RESF kernel Tags
[rolling release update] Found 4 RESF kernel tags
[rolling release update] Checking out branch:  rocky10_2
[rolling release update] Gathering all the RESF kernel Tags
[rolling release update] Found 5 RESF kernel tags
[rolling release update] Common tag sha:  b'bda6623b0284'
"bda6623b028468a99327a7273d97b4971d98d3b5 Rebuild rocky10_2 with kernel-6.12.0-211.18.1.el10_2"
[rolling release update] Checking for FIPS protected changes between the common tag and HEAD
[rolling release update] Checking for FIPS protected changes
[rolling release update] Getting SHAS bda6623b0284..HEAD
[rolling release update] Number of commits to check:  40
[rolling release update] Checking modifications of shas
[rolling release update] Checked 4 of 40 commits
[rolling release update] Checked 8 of 40 commits
[rolling release update] Checked 12 of 40 commits
[rolling release update] Checked 16 of 40 commits
[rolling release update] Checked 20 of 40 commits
[rolling release update] Checked 24 of 40 commits
[rolling release update] Checked 28 of 40 commits
[rolling release update] Checked 32 of 40 commits
[rolling release update] Checked commit b'53b2077529cad8a75bd824835f01b940d5074452' touched 1 FIPS protected files
  - b'crypto/'
[rolling release update] Checked 36 of 40 commits
[rolling release update] Checked 40 of 40 commits
[rolling release update] 1 of 40 commits have FIPS protected changes
[rolling release update] Checking out old rolling branch:  rlc-10/6.12.0-211.18.1.el10_2
[rolling release update] Finding the CIQ Kernel and Associated Upstream commits between the last resf tag and HEAD
[rolling release update] Getting SHAS bda6623b0284..HEAD
[rolling release update] Last RESF tag sha:  b'bda6623b0284'
[rolling release update] Total commits in old branch: 19
[rolling release update] Checking out new base branch:  rocky10_2
[rolling release update] Finding the kernel version for the new rolling release
[rolling release update] New Branch to create: rlc-10/6.12.0-211.20.1.el10_2
[rolling release update] Creating new branch: rlc-10/6.12.0-211.20.1.el10_2
[rolling release update] Creating new branch for PR:  jmaple_rlc-10/6.12.0-211.20.1.el10_2
[rolling release update] Creating Map of all new commits from last rolling release fork
[rolling release update] Total commits in new branch: 39
[rolling release update] Checking if any of the commits from the old rolling release are already present in the new base branch
- Old commit 7e09e918ba08 backported upstream 3da1fdf4efbc
  Already in new base as 2cc445b88f26: smb: client: reject userspace cifs.spnego descriptions
[rolling release update] Found 1 duplicate commits to remove
[rolling release update] Removing duplicate commits:
  - 7e09e918ba087cfc9fbe4e0c36c34aceca8f8280 smb: client: reject userspace cifs.spnego descriptions
[rolling release update] Applying 18 remaining commits to the new branch
  [1/18] 853c0da043b9 github actions: Add kernelCI for rlc-10
  [2/18] 78b977f0ba9b github actions: Use trigger for kernelCI
  [3/18] ec4098c3a9f9 github actions: Pin Checkout action to v6.0.2
  [4/18] 7b2ecdc9a963 github actions: set make to `nproc` rather than hardcoded
  [5/18] d65338e7e9d2 tools: hv: Enable debug logs for hv_kvp_daemon
  [6/18] b60dee5056b9 dcache: export shrink_dentry_list() and add new helper d_dispose_if_unused()
  [7/18] 09e3cf55a65e fuse: don't truncate cached, mutated symlink
  [8/18] ece6ad804353 fuse: add more control over cache invalidation behaviour
  [9/18] 314792109e1c fuse: fix possibly missing fuse_copy_finish() call in fuse_notify()
  [10/18] 4c2bdf45036d fs: fuse: add dev id to /dev/fuse fdinfo
  [11/18] 1e73a6929a45 fuse: respect FOPEN_KEEP_CACHE on opendir
  [12/18] 711d1406291b rxrpc: Fix potential UAF after skb_unshare() failure
  [13/18] 8989d6d15c26 rxrpc: Fix rxrpc_input_call_event() to only unshare DATA packets
  [14/18] 86709100b954 rxrpc: Also unshare DATA/RESPONSE packets when paged frags are present
  [15/18] 8cc53f213777 net: gro: don't merge zcopy skbs
  [16/18] 9bd152063077 KVM: arm64: vgic-its: Drop the translation cache reference only for the erased entry
  [17/18] 8345b426a83a KVM: arm64: Reassign nested_mmus array behind mmu_lock
  [18/18] 0e2488fcaa32 KVM: arm64: Take the SRCU lock for page table walks in fault injection and AT emulation
[rolling release update] Successfully applied all 18 commits

BUILD

$ egrep -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-30c0c4db8d22"
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
  LD [M]  virt/lib/irqbypass.ko
  BTF [M] net/qrtr/qrtr-mhi.ko
  BTF [M] virt/lib/irqbypass.ko
[TIMER]{BUILD}: 2244s
Making Modules
  SYMLINK /lib/modules/6.12.0-rocky10_2_rebuild-30c0c4db8d22+/build
  INSTALL /lib/modules/6.12.0-rocky10_2_rebuild-30c0c4db8d22+/modules.order
  INSTALL /lib/modules/6.12.0-rocky10_2_rebuild-30c0c4db8d22+/modules.builtin
  INSTALL /lib/modules/6.12.0-rocky10_2_rebuild-30c0c4db8d22+/modules.builtin.modinfo
--
  STRIP   /lib/modules/6.12.0-rocky10_2_rebuild-30c0c4db8d22+/kernel/virt/lib/irqbypass.ko
  SIGN    /lib/modules/6.12.0-rocky10_2_rebuild-30c0c4db8d22+/kernel/virt/lib/irqbypass.ko
  STRIP   /lib/modules/6.12.0-rocky10_2_rebuild-30c0c4db8d22+/kernel/net/vmw_vsock/vsock_loopback.ko
  SIGN    /lib/modules/6.12.0-rocky10_2_rebuild-30c0c4db8d22+/kernel/net/vmw_vsock/vsock_loopback.ko
  DEPMOD  /lib/modules/6.12.0-rocky10_2_rebuild-30c0c4db8d22+
[TIMER]{MODULES}: 13s
Making Install
  INSTALL /boot
[TIMER]{INSTALL}: 22s
Checking kABI
kABI check passed
Setting Default Kernel to /boot/vmlinuz-6.12.0-rocky10_2_rebuild-30c0c4db8d22+ and Index to 2
Hopefully Grub2.0 took everything ... rebooting after time metrices
[TIMER]{MRPROPER}: 6s
[TIMER]{BUILD}: 2244s
[TIMER]{MODULES}: 13s
[TIMER]{INSTALL}: 22s
[TIMER]{TOTAL} 2290s
Rebooting in 10 seconds

KSelfTest

$ ./kernel-tools/kernel_auto_rebuild/get_kselftest_diff.sh
kselftest.before.log: 477 passed
kselftest.after.log: 491 passed
selftest-6.12.0-jmaple_rlc-10_6.12.0-211.18.1.el10_2-46fae48c441d+-1.log: 491 passed
selftest-6.12.0-jmaple_rlc-10_6.12.0-211.20.1.el10_2-5865fafefaee+-1.log: 491 passed

Before: selftest-6.12.0-jmaple_rlc-10_6.12.0-211.18.1.el10_2-46fae48c441d+-1.log
After: selftest-6.12.0-jmaple_rlc-10_6.12.0-211.20.1.el10_2-5865fafefaee+-1.log
Diff:
+ok 14 selftests: net: bind_wildcard
-ok 2 selftests: seccomp: seccomp_benchmark

roxanan1996 and others added 24 commits June 10, 2026 12:41
Signed-off-by: Roxana Nicolescu <rnicolescu@ciq.com>
Signed-off-by: Roxana Nicolescu <rnicolescu@ciq.com>
jira LE-3207
feature tools_hv
commit-author Shradha Gupta <shradhagupta@linux.microsoft.com>
commit a9c0b33

Allow the KVP daemon to log the KVP updates triggered in the VM
with a new debug flag(-d).
When the daemon is started with this flag, it logs updates and debug
information in syslog with loglevel LOG_DEBUG. This information comes
in handy for debugging issues where the key-value pairs for certain
pools show mismatch/incorrect values.
The distro-vendors can further consume these changes and modify the
respective service files to redirect the logs to specific files as
needed.

	Signed-off-by: Shradha Gupta <shradhagupta@linux.microsoft.com>
	Reviewed-by: Naman Jain <namjain@linux.microsoft.com>
	Reviewed-by: Dexuan Cui <decui@microsoft.com>
Link: https://lore.kernel.org/r/1744715978-8185-1-git-send-email-shradhagupta@linux.microsoft.com
	Signed-off-by: Wei Liu <wei.liu@kernel.org>
Message-ID: <1744715978-8185-1-git-send-email-shradhagupta@linux.microsoft.com>
(cherry picked from commit a9c0b33)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
…nused()

jira SECO-468
commit-author Luis Henriques <luis@igalia.com>
commit 395b955

Add and export a new helper d_dispose_if_unused() which is simply a wrapper
around to_shrink_list(), to add an entry to a dispose list if it's not used
anymore.

Also export shrink_dentry_list() to kill all dentries in a dispose list.

	Suggested-by: Miklos Szeredi <miklos@szeredi.hu>
	Signed-off-by: Luis Henriques <luis@igalia.com>
	Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
(cherry picked from commit 395b955)
	Signed-off-by: Roxana Nicolescu <rnicolescu@ciq.com>
jira SECO-478
RFBugFix: FUSE
commit-author Miklos Szeredi <mszeredi@redhat.com>
commit b4c173d

Fuse allows the value of a symlink to change and this property is exploited
by some filesystems (e.g. CVMFS).

It has been observed, that sometimes after changing the symlink contents,
the value is truncated to the old size.

This is caused by fuse_getattr() racing with fuse_reverse_inval_inode().
fuse_reverse_inval_inode() updates the fuse_inode's attr_version, which
results in fuse_change_attributes() exiting before updating the cached
attributes

This is okay, as the cached attributes remain invalid and the next call to
fuse_change_attributes() will likely update the inode with the correct
values.

The reason this causes problems is that cached symlinks will be
returned through page_get_link(), which truncates the symlink to
inode->i_size.  This is correct for filesystems that don't mutate
symlinks, but in this case it causes bad behavior.

The solution is to just remove this truncation.  This can cause a
regression in a filesystem that relies on supplying a symlink larger than
the file size, but this is unlikely.  If that happens we'd need to make
this behavior conditional.

	Reported-by: Laura Promberger <laura.promberger@cern.ch>
	Tested-by: Sam Lewis <samclewis@google.com>
	Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
Link: https://lore.kernel.org/r/20250220100258.793363-1-mszeredi@redhat.com
	Reviewed-by: Bernd Schubert <bschubert@ddn.com>
	Signed-off-by: Christian Brauner <brauner@kernel.org>
(cherry picked from commit b4c173d)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira SECO-478
RFBugFix: FUSE
commit-author Luis Henriques <luis@igalia.com>
commit 2396356
upstream-diff | conflict in fs/fuse/dir.c due to missing this piece:
       d701902 - fuse: return correct dentry for ->mkdir
       Which is a part of a larger changeset here that we're not going to
       take: https://lore.kernel.org/all/20250227013949.536172-1-neilb@suse.de/
       | Additionally this bumps the Kernel FUSE API minor version from 41
       to 44.  The interface into via fuse3 currently in Rocky 10.1 is
       limited to API 38 anyways at 3.16.2.
       | There is a build conflict due to a major rewrite of the d_revalidate
       calls which now includes the parent directory being passed.
       5be1fa8 Pass parent directory inode and expected name to ->d_revalidate()
       In this case we can use the dentry->i_sb because we only need the
       superblock for get_fuse_conn_super().

Currently userspace is able to notify the kernel to invalidate the cache
for an inode.  This means that, if all the inodes in a filesystem need to
be invalidated, then userspace needs to iterate through all of them and do
this kernel notification separately.

This patch adds the concept of 'epoch': each fuse connection will have the
current epoch initialized and every new dentry will have it's d_time set to
the current epoch value.  A new operation will then allow userspace to
increment the epoch value.  Every time a dentry is d_revalidate()'ed, it's
epoch is compared with the current connection epoch and invalidated if it's
value is different.

	Signed-off-by: Luis Henriques <luis@igalia.com>
	Tested-by: Laura Promberger <laura.promberger@cern.ch>
	Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
(cherry picked from commit 2396356)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>

build fix: fuse: add more control over cache invalidation behaviour
jira SECO-478
BUGFIX: FUSE
commit-author Miklos Szeredi <mszeredi@redhat.com>
commit 0b563aa

In case of FUSE_NOTIFY_RESEND and FUSE_NOTIFY_INC_EPOCH fuse_copy_finish()
isn't called.

Fix by always calling fuse_copy_finish() after fuse_notify().  It's a no-op
if called a second time.

Fixes: 760eac7 ("fuse: Introduce a new notification type for resend pending requests")
Fixes: 2396356 ("fuse: add more control over cache invalidation behaviour")
	Cc: <stable@vger.kernel.org> # v6.9
	Reviewed-by: Joanne Koong <joannelkoong@gmail.com>
	Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
(cherry picked from commit 0b563aa)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira SECO-511
commit-author Chen Linxuan <chenlinxuan@uniontech.com>
commit f092229
upstream-diff | There were conflicts seen while applying
this patch due to the following missing commit :-
786412a ("fuse: enable fuse-over-io-uring")

This commit add fuse connection device id to
fdinfo of opened /dev/fuse files.

Related discussions can be found at links below.

Link: https://lore.kernel.org/all/CAJfpegvEYUgEbpATpQx8NqVR33Mv-VK96C+gbTag1CEUeBqvnA@mail.gmail.com/
	Signed-off-by: Chen Linxuan <chenlinxuan@uniontech.com>
	Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
(cherry picked from commit f092229)
	Signed-off-by: Shreeya Patel <spatel@ciq.com>
jira SECO-518
commit-author Amir Goldstein <amir73il@gmail.com>
commit 03f275a

The re-factoring of fuse_dir_open() missed the need to invalidate
directory inode page cache with open flag FOPEN_KEEP_CACHE.

Fixes: 7de64d5 ("fuse: break up fuse_open_common()")
	Reported-by: Prince Kumar <princer@google.com>
Closes: https://lore.kernel.org/linux-fsdevel/CAEW=TRr7CYb4LtsvQPLj-zx5Y+EYBmGfM24SuzwyDoGVNoKm7w@mail.gmail.com/
	Signed-off-by: Amir Goldstein <amir73il@gmail.com>
Link: https://lore.kernel.org/r/20250101130037.96680-1-amir73il@gmail.com
	Reviewed-by: Bernd Schubert <bernd.schubert@fastmail.fm>
	Signed-off-by: Christian Brauner <brauner@kernel.org>
(cherry picked from commit 03f275a)
	Signed-off-by: Shreeya Patel <spatel@ciq.com>
cve-pre CVE-2026-43500
commit-author David Howells <dhowells@redhat.com>
commit 1f27401
upstream-diff |
	Trace-header conflict in include/trace/events/rxrpc.h: upstream's
	patch context refers to three trace constants that don't exist in
	this kernel — rxrpc_skb_put_purge_oob, rxrpc_skb_put_response, and
	rxrpc_skb_put_response_copy. They were added by earlier upstream
	rxrpc OOB/response work not present here, plus the dirty-frag fix
	itself for response_copy. The contested constants were dropped
	from the resolution since the code that would emit them isn't in
	this tree (no rxrpc_verify_response wrapper, no OOB-purge path).
	The constants this patch's new code actually uses
	(rxrpc_skb_put_call_rx, rxrpc_skb_see_unshare_nomem) applied
	cleanly. The other four files (ar-internal.h, call_event.c,
	io_thread.c, skbuff.c) merged with no conflicts.

If skb_unshare() fails to unshare a packet due to allocation failure in
rxrpc_input_packet(), the skb pointer in the parent (rxrpc_io_thread())
will be NULL'd out.  This will likely cause the call to
trace_rxrpc_rx_done() to oops.

Fix this by moving the unsharing down to where rxrpc_input_call_event()
calls rxrpc_input_call_packet().  There are a number of places prior to
that where we ignore DATA packets for a variety of reasons (such as the
call already being complete) for which an unshare is then avoided.

And with that, rxrpc_input_packet() doesn't need to take a pointer to the
pointer to the packet, so change that to just a pointer.

Fixes: 2d1faf7 ("rxrpc: Simplify skbuff accounting in receive path")
Closes: https://sashiko.dev/#/patchset/20260408121252.2249051-1-dhowells%40redhat.com
	Signed-off-by: David Howells <dhowells@redhat.com>
	cc: Marc Dionne <marc.dionne@auristor.com>
	cc: Jeffrey Altman <jaltman@auristor.com>
	cc: Simon Horman <horms@kernel.org>
	cc: linux-afs@lists.infradead.org
	cc: stable@kernel.org
Link: https://patch.msgid.link/20260422161438.2593376-4-dhowells@redhat.com
	Signed-off-by: Jakub Kicinski <kuba@kernel.org>
(cherry picked from commit 1f27401)
	Signed-off-by: Shreeya Patel <spatel@ciq.com>
cve-pre CVE-2026-43500
commit-author David Howells <dhowells@redhat.com>
commit 55b2984

Fix rxrpc_input_call_event() to only unshare DATA packets and not ACK,
ABORT, etc..

And with that, rxrpc_input_packet() doesn't need to take a pointer to the
pointer to the packet, so change that to just a pointer.

Fixes: 1f27401 ("rxrpc: Fix potential UAF after skb_unshare() failure")
Closes: https://sashiko.dev/#/patchset/20260422161438.2593376-4-dhowells@redhat.com
	Signed-off-by: David Howells <dhowells@redhat.com>
	cc: Marc Dionne <marc.dionne@auristor.com>
	cc: Jeffrey Altman <jaltman@auristor.com>
	cc: Simon Horman <horms@kernel.org>
	cc: linux-afs@lists.infradead.org
	cc: stable@kernel.org
Link: https://patch.msgid.link/20260423200909.3049438-2-dhowells@redhat.com
	Signed-off-by: Jakub Kicinski <kuba@kernel.org>
(cherry picked from commit 55b2984)
	Signed-off-by: Shreeya Patel <spatel@ciq.com>
cve CVE-2026-43500
commit-author Hyunwoo Kim <imv4bel@gmail.com>
commit -
commit-source https://lore.kernel.org/all/af2kdW2F1gJ9U-Gg@v4bel
upstream-diff |
        The conn_event.c hunk is dropped entirely. Upstream wraps the
        conn->security->verify_response() call inside a new
        rxrpc_verify_response() function that copies non-linear skbs before
        in-place decryption. This kernel doesn't have that wrapper; the
        security op is called directly from rxrpc_process_event(), so there
        is no call site to patch. Additionally, the rxkad_verify_response()
        implementation in this tree already pulls the response and ticket
        out via skb_copy_bits() into kmalloc'd local buffers and decrypts
        those buffers (not the skb backing pages), so the RESPONSE-packet
        vector that v3 closes upstream is not reachable here. The
        call_event.c hunk applies as-is.

The DATA-packet handler in rxrpc_input_call_event() and the RESPONSE
handler in rxrpc_verify_response() copy the skb to a linear one before
calling into the security ops only when skb_cloned() is true.  An skb
that is not cloned but still carries externally-owned paged fragments
(e.g. SKBFL_SHARED_FRAG set by splice() into a UDP socket via
__ip_append_data, or a chained skb_has_frag_list()) falls through to
the in-place decryption path, which binds the frag pages directly into
the AEAD/skcipher SGL via skb_to_sgvec().

Extend the gate to also unshare when skb_has_frag_list() or
skb_has_shared_frag() is true.  This catches the splice-loopback vector
and other externally-shared frag sources while preserving the
zero-copy fast path for skbs whose frags are kernel-private (e.g. NIC
page_pool RX, GRO).  The OOM/trace handling already in place is reused.

Fixes: d0d5c0c ("rxrpc: Use skb_unshare() rather than skb_cow_data()")
	Cc: stable@vger.kernel.org
	Signed-off-by: Hyunwoo Kim <imv4bel@gmail.com>
(cherry picked from commit 544687651fe57721c5e4e76380ed8ef8fdfdc98b)
	Signed-off-by: Shreeya Patel <spatel@ciq.com>
cve CVE-Pending
commit-author Sabrina Dubroca <sd@queasysnail.net>
commit 4db79a3

skb_gro_receive() can currently copy frags between the source and GRO
skb, without checking the zerocopy status, and in particular the
SKBFL_MANAGED_FRAG_REFS flag.

When SKBFL_MANAGED_FRAG_REFS is set, the skb doesn't hold a reference
on the pages in shinfo->frags. Appending those frags to another skb's
frags without fixing up the page refcount can lead to UAF.

When either the last skb in the GRO chain (the one we would append
frags to) or the source skb is zerocopy, don't merge the skbs.

Fixes: 753f1ca ("net: introduce managed frags infrastructure")
Reported-by: Huzaifa Sidhpurwala <huzaifas@redhat.com>
Signed-off-by: Sabrina Dubroca <sd@queasysnail.net>
Reviewed-by: Willem de Bruijn <willemb@google.com>
Link: https://patch.msgid.link/c3b7f906bbfcbdfd7b4fa9d6c18a438870df85be.1779307748.git.sd@queasysnail.net
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Shreeya Patel <spatel@ciq.com>
…he erased entry

cve CVE-2026-46316
commit-author Hyunwoo Kim <imv4bel@gmail.com>
commit 13031fb

vgic_its_invalidate_cache() walks the per-ITS translation cache with
xa_for_each() and drops the cache's reference on each entry with
vgic_put_irq(). It puts the iterated pointer, though, rather than the
value returned by xa_erase().

The function is called from contexts that do not exclude one another: the
ITS command handlers hold its_lock, the GITS_CTLR write path holds
cmd_lock, and the path that clears EnableLPIs in a redistributor's
GICR_CTLR holds neither. Two or more of them can drain the same cache
concurrently, and if each one observes the same entry, erases it and then
puts it, the single reference the cache holds on that entry is dropped
more than once. The entry can then be freed while an ITE still maps it.

xa_erase() is atomic and returns the previous entry, so put only the entry
that this context actually removed. The cache reference is then dropped
exactly once per entry even when the invalidations run concurrently, and
the behavior is unchanged when only one context runs.

Fixes: 8201d10 ("KVM: arm64: vgic-its: Maintain a translation cache per ITS")
	Signed-off-by: Hyunwoo Kim <imv4bel@gmail.com>
	Reviewed-by: Oliver Upton <oupton@kernel.org>
Link: https://patch.msgid.link/ah2c5lu4JbUg7dj-@v4bel
	Signed-off-by: Marc Zyngier <maz@kernel.org>
	Cc: stable@vger.kernel.org
(cherry picked from commit 13031fb)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
cve CVE-2026-46317
commit-author Hyunwoo Kim <imv4bel@gmail.com>
commit 7054335

kvm->arch.nested_mmus[] is walked under kvm->mmu_lock, including from the
MMU notifier path (kvm_unmap_gfn_range() -> kvm_nested_s2_unmap()), which
can run at any time. kvm_vcpu_init_nested() reallocates the array and frees
the old buffer while holding only kvm->arch.config_lock, so such a walker
can reference the freed array.

Allocate the new array outside of mmu_lock, as the allocation can sleep.
Under the lock, copy the existing entries, fix up the back pointers and
reassign the array. Free the old buffer after dropping the lock, as
kvfree() can sleep as well.

Fixes: 4f128f8 ("KVM: arm64: nv: Support multiple nested Stage-2 mmu structures")
	Signed-off-by: Hyunwoo Kim <imv4bel@gmail.com>
	Reviewed-by: Oliver Upton <oupton@kernel.org>
Link: https://patch.msgid.link/aiKIVVeIr1aAB1yp@v4bel
	Signed-off-by: Marc Zyngier <maz@kernel.org>
	Cc: stable@vger,kernel.org
(cherry picked from commit 7054335)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
…n and AT emulation

bugfix aarch64 kvm
commit-author Hyunwoo Kim <imv4bel@gmail.com>
commit f2ca45b

walk_s1() and kvm_walk_nested_s2() expect to be called while holding
kvm->srcu to guard against memslot changes. While this is generally
the case, __kvm_at_s12() and __kvm_find_s1_desc_level() call into the
respective walkers without taking kvm->srcu.

Fix by acquiring kvm->srcu prior to the table walk in both instances.

	Cc: stable@vger.kernel.org
Fixes: 50f77dc ("KVM: arm64: Populate level on S1PTW SEA injection")
Fixes: be04ceb ("KVM: arm64: nv: Add emulation of AT S12E{0,1}{R,W}")
	Suggested-by: Oliver Upton <oupton@kernel.org>
	Signed-off-by: Hyunwoo Kim <imv4bel@gmail.com>
	Reviewed-by: Oliver Upton <oupton@kernel.org>
Link: https://patch.msgid.link/aiAZfdeyanIvP8SD@v4bel
	Signed-off-by: Marc Zyngier <maz@kernel.org>
(cherry picked from commit f2ca45b)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
cve-pre CVE-2025-10263
commit-author Catalin Marinas <catalin.marinas@arm.com>
commit 2c99561

Add cputype definitions for C1-Pro. These will be used for errata
detection in subsequent patches.

These values can be found in "Table A-303: MIDR_EL1 bit descriptions" in
issue 07 of the C1-Pro TRM:

  https://documentation-service.arm.com/static/6930126730f8f55a656570af

Acked-by: Mark Rutland <mark.rutland@arm.com>
Cc: Will Deacon <will@kernel.org>
Cc: James Morse <james.morse@arm.com>
Reviewed-by: Will Deacon <will@kernel.org>
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
(cherry picked from commit 2c99561)
Signed-off-by: Brett Mastbergen <bmastbergen@ciq.com>
cve-pre CVE-2025-10263
commit-author Mark Rutland <mark.rutland@arm.com>
commit -
commit-source https://lore.kernel.org/all/20260609101203.1512409-2-mark.rutland@arm.com/

Add cputype definitions for C1-Ultra. These will be used for errata
detection in subsequent patches.

These values can be found in the C1-Ultra TRM:

  https://developer.arm.com/documentation/108014/0100/

... in section A.5.1 ("MIDR_EL1, Main ID Register").

Signed-off-by: Mark Rutland <mark.rutland@arm.com>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will@kernel.org>
Signed-off-by: Brett Mastbergen <bmastbergen@ciq.com>
cve-pre CVE-2025-10263
commit-author Mark Rutland <mark.rutland@arm.com>
commit -
commit-source https://lore.kernel.org/all/20260609101203.1512409-3-mark.rutland@arm.com/

Add cputype definitions for C1-Premium. These will be used for errata
detection in subsequent patches.

These values can be found in the C1-Premium TRM:

  https://developer.arm.com/documentation/109416/0100/

... in section A.5.1 ("MIDR_EL1, Main ID Register").

Signed-off-by: Mark Rutland <mark.rutland@arm.com>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will@kernel.org>
Signed-off-by: Brett Mastbergen <bmastbergen@ciq.com>
cve CVE-2025-10263
commit-author Mark Rutland <mark.rutland@arm.com>
commit -
commit-source https://lore.kernel.org/all/20260609101203.1512409-4-mark.rutland@arm.com/
upstream-diff silicon-errata.rst required manual conflict resolution due to
  condensed table formatting in our branch vs multi-line entries upstream.
  Content is identical;

A number of CPUs developed by Arm suffer from errata whereby a broadcast
TLBI;DSB sequence may complete before the global observation of writes
which are translated by an affected TLB entry.

These errata ONLY affect the completion of memory accesses which have
been translated by an invalidated TLB entry, and these errata DO NOT
affect the actual invalidation of TLB entries. TLB entries are removed
correctly.

This issue has been assigned CVE ID CVE-2025-10263.

To mitigate this issue, Arm recommends that software follows any
affected TLBI;DSB sequence with an additional TLBI;DSB, which will
ensure that all memory write effects affected by the first TLBI have
been globally observed. The additional TLBI can use any operation that
is broadcast to affected CPUs, and the additional DSB can use any option
that is sufficient to complete the additional TLBI.

The ARM64_WORKAROUND_REPEAT_TLBI workaround is sufficient to mitigate
the issue. Enable this workaround for affected CPUs, and update the
silicon errata documentation accordingly.

Note that due to the manner in which Arm develops IP and tracks errata,
some CPUs share a common erratum number.

Signed-off-by: Mark Rutland <mark.rutland@arm.com>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will@kernel.org>
Signed-off-by: Brett Mastbergen <bmastbergen@ciq.com>
cve CVE-2025-10263
commit-author Shanker Donthineni <sdonthineni@nvidia.com>
commit ec7216f92e4ebd485b1c6dc6aa3f6064b71a5768

NVIDIA Olympus CPU core is affected by the same TLBI errata as several
ARM CPU cores. The TLBI;DSB sequence might complete before the global
observation of writes which are translated by an affected TLB entry,
identified as erratum T410-OLY-1029. This has been assigned CVE ID
CVE-2025-10263.

Leverage the existing ARM64_ERRATUM_4118414 mitigation, which enables
the ARM64_WORKAROUND_REPEAT_TLBI capability for affected CPUs, to
ensure memory write effects are globally observed.

Signed-off-by: Shanker Donthineni <sdonthineni@nvidia.com>
Acked-by: Mark Rutland <mark.rutland@arm.com>
Signed-off-by: Will Deacon <will@kernel.org>
(cherry picked from commit ec7216f92e4ebd485b1c6dc6aa3f6064b71a5768)
Signed-off-by: Brett Mastbergen <bmastbergen@ciq.com>
cve CVE-2025-10263
commit-author Will Deacon <will@kernel.org>
commit 1940e70a8144bf75e6df26bf6f600862ea7f7ea1

The Microsoft Azure Cobalt 100 CPU is based on the Arm Neoverse N2, so
enable the fix for the latest broadcast TLB invalidation bug on these
parts.

Signed-off-by: Will Deacon <will@kernel.org>
(cherry picked from commit 1940e70a8144bf75e6df26bf6f600862ea7f7ea1)
Signed-off-by: Brett Mastbergen <bmastbergen@ciq.com>
@PlaidCat PlaidCat changed the title [RLC-10] Rebase Custom Changes to rlc-10/6.12.0-211.20.1.el10_2 [RLC-10] Rebase Custom Changes to rlc-10/6.12.0-211.20.1.el10_2 with cve-2025-10263 Jun 10, 2026
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.

7 participants