Skip to content

[rlc-10/6.12.0-124.55.1.el10_1] Multiple patches tested (4 commits)#1206

Merged
PlaidCat merged 4 commits intorlc-10/6.12.0-124.55.1.el10_1from
{shreeya_rxrpc_esp}_rlc-10/6.12.0-124.55.1.el10_1
May 8, 2026
Merged

[rlc-10/6.12.0-124.55.1.el10_1] Multiple patches tested (4 commits)#1206
PlaidCat merged 4 commits intorlc-10/6.12.0-124.55.1.el10_1from
{shreeya_rxrpc_esp}_rlc-10/6.12.0-124.55.1.el10_1

Conversation

@ciq-kernel-automation
Copy link
Copy Markdown

@ciq-kernel-automation ciq-kernel-automation Bot commented May 8, 2026

Summary

This PR has been automatically created after successful completion of all CI stages.

Commit Message(s)

xfrm: esp: avoid in-place decrypt on shared skb frags

cve CVE-2026-43284
commit-author Kuan-Ting Chen <h3xrabbit@gmail.com>
commit f4c50a4034e62ab75f1d5cdd191dd5f9c77fdff4
rxrpc: Fix potential UAF after skb_unshare() failure

cve-pre CVE-2026-43500
commit-author David Howells <dhowells@redhat.com>
commit 1f2740150f904bfa60e4bad74d65add3ccb5e7f8
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.
rxrpc: Fix rxrpc_input_call_event() to only unshare DATA packets

cve-pre CVE-2026-43500
commit-author David Howells <dhowells@redhat.com>
commit 55b2984c96c37f909bbfe8851f13152693951382
rxrpc: Also unshare DATA/RESPONSE packets when paged frags are present

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.

Test Results

✅ Build Stage

Architecture Build Time Total Time
x86_64 36m 35s 37m 23s
aarch64 22m 8s 22m 41s

✅ Boot Verification

✅ Kernel Selftests

Architecture Passed Failed Compared Against Status
x86_64 395 59 rlc-10/6.12.0-124.55.1.el10_1 ✅ No regressions
aarch64 347 53 rlc-10/6.12.0-124.55.1.el10_1 ✅ No regressions

✅ LTP Results

Architecture Passed Failed Compared Against Status
x86_64 1480 80 rlc-10/6.12.0-124.55.1.el10_1 ✅ No regressions
aarch64 1451 81 rlc-10/6.12.0-124.55.1.el10_1 ✅ No regressions

🤖 This PR was automatically generated by GitHub Actions
Run ID: 25573884272

@ciq-kernel-automation ciq-kernel-automation Bot added the created-by-kernelci Tag PRs that were automatically created when a user branch was pushed to the repo (kernelCI) label May 8, 2026
@shreeya-patel98 shreeya-patel98 changed the title [rlc-10/6.12.0-124.55.1.el10_1] Multiple patches tested (4 commits) [[rlc-10/6.12.0-124.55.1.el10_1] Multiple patches tested (4 commits) May 8, 2026
@shreeya-patel98 shreeya-patel98 changed the title [[rlc-10/6.12.0-124.55.1.el10_1] Multiple patches tested (4 commits) [rlc-10/6.12.0-124.55.1.el10_1] Multiple patches tested (4 commits) (Do not review) May 8, 2026
@shreeya-patel98
Copy link
Copy Markdown
Collaborator

This is not the final PR, other CI is still running which wil update this one.

@roxanan1996
Copy link
Copy Markdown
Contributor

This is not the final PR, other CI is still running which wil update this one.

nooo :(( I was so entusiastic

@PlaidCat
Copy link
Copy Markdown
Collaborator

PlaidCat commented May 8, 2026

This is not the final PR, other CI is still running which wil update this one.

Is this the commit header updates?

@roxanan1996
Copy link
Copy Markdown
Contributor

This is not the final PR, other CI is still running which wil update this one.

Is this the commit header updates?

No. I am not sure if I should it now, it may interfere with the pipeline running. I am a bit confused tbh

HexRabbit and others added 4 commits May 8, 2026 18:15
cve CVE-2026-43284
commit-author Kuan-Ting Chen <h3xrabbit@gmail.com>
commit f4c50a4

MSG_SPLICE_PAGES can attach pages from a pipe directly to an skb. TCP
marks such skbs with SKBFL_SHARED_FRAG after skb_splice_from_iter(),
so later paths that may modify packet data can first make a private
copy. The IPv4/IPv6 datagram append paths did not set this flag when
splicing pages into UDP skbs.

That leaves an ESP-in-UDP packet made from shared pipe pages looking
like an ordinary uncloned nonlinear skb. ESP input then takes the no-COW
fast path for uncloned skbs without a frag_list and decrypts in place
over data that is not owned privately by the skb.

Mark IPv4/IPv6 datagram splice frags with SKBFL_SHARED_FRAG, matching
TCP. Also make ESP input fall back to skb_cow_data() when the flag is
present, so ESP does not decrypt externally backed frags in place.
Private nonlinear skb frags still use the existing fast path.

This intentionally does not change ESP output. In esp_output_head(),
the path that appends the ESP trailer to existing skb tailroom without
calling skb_cow_data() is not reachable for nonlinear skbs:
skb_tailroom() returns zero when skb->data_len is nonzero, while ESP
tailen is positive. Thus ESP output will either use the separate
destination-frag path or fall back to skb_cow_data().

Fixes: cac2661 ("esp4: Avoid skb_cow_data whenever possible")
Fixes: 03e2a30 ("esp6: Avoid skb_cow_data whenever possible")
Fixes: 7da0dde ("ip, udp: Support MSG_SPLICE_PAGES")
Fixes: 6d8192b ("ip6, udp6: Support MSG_SPLICE_PAGES")
	Reported-by: Hyunwoo Kim <imv4bel@gmail.com>
	Reported-by: Kuan-Ting Chen <h3xrabbit@gmail.com>
	Tested-by: Hyunwoo Kim <imv4bel@gmail.com>
	Cc: stable@vger.kernel.org
	Signed-off-by: Kuan-Ting Chen <h3xrabbit@gmail.com>
	Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
(cherry picked from commit f4c50a4)
	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>
Copy link
Copy Markdown
Contributor

@roxanan1996 roxanan1996 left a comment

Choose a reason for hiding this comment

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

Changes look correct to me (content wise)

@roxanan1996 roxanan1996 force-pushed the {shreeya_rxrpc_esp}_rlc-10/6.12.0-124.55.1.el10_1 branch from 947f5f0 to d988a0f Compare May 8, 2026 18:58
@roxanan1996
Copy link
Copy Markdown
Contributor

I updated the commit messages.
Last pipeline is still not finished https://github.com/ctrliq/kernel-src-tree/actions/runs/25559699607.

@roxanan1996 roxanan1996 requested a review from a team May 8, 2026 18:59
Copy link
Copy Markdown
Collaborator

@PlaidCat PlaidCat left a comment

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 4b79b34 into rlc-10/6.12.0-124.55.1.el10_1 May 8, 2026
5 of 7 checks passed
@PlaidCat PlaidCat changed the title [rlc-10/6.12.0-124.55.1.el10_1] Multiple patches tested (4 commits) (Do not review) [rlc-10/6.12.0-124.55.1.el10_1] Multiple patches tested (4 commits) May 8, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

created-by-kernelci Tag PRs that were automatically created when a user branch was pushed to the repo (kernelCI)

Development

Successfully merging this pull request may close these issues.

6 participants