Skip to content

[ciqlts9_4] Multiple patches tested (3 commits)#1231

Merged
bmastbergen merged 3 commits into
ciqlts9_4from
{jmaple}_ciqlts9_4
May 14, 2026
Merged

[ciqlts9_4] Multiple patches tested (3 commits)#1231
bmastbergen merged 3 commits into
ciqlts9_4from
{jmaple}_ciqlts9_4

Conversation

@ciq-kernel-automation

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

Copy link
Copy Markdown

Summary

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

Commit Message(s)

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

This reverts commit 23c9b9fcd119d70428409641853f00e9695a9e07.
xfrm: esp: avoid in-place decrypt on shared skb frags

jira VULN-184825
cve CVE-2026-43284
commit-author Kuan-Ting Chen <h3xrabbit@gmail.com>
commit f4c50a4034e62ab75f1d5cdd191dd5f9c77fdff4
upstream-diff |
	While this kernel lacks MSG_SPLICE_PAGES, it still has udp_sendpage().
	Upstream didn't patch udp_sendpage() because sendpage was removed
	entirely in favor of MSG_SPLICE_PAGES. In this kernel, splice() can
	still attach a page cache page to an IPv4 datagram via sendpage.
	Therefore, udp_sendpage() must be patched instead.
        IPv6 does not have MSG_SPLICE_PAGES but the __ip_addend_data()
        path is exercisable in ipv6/esp6.c so we're including that
        block.
net: skbuff: propagate shared-frag marker through frag-transfer helpers

jira VULN-185347
cve CVE-2026-46300
commit-author Hyunwoo Kim <imv4bel@gmail.com>
commit -
commit-source https://lore.kernel.org/all/agW4vC0r8QOUKtRT@v4bel/
upstream-diff |
  The upstream v3 patch does not apply cleanly to 5.14 due to two
  code reorganization differences:
  1. skb_gro_receive_list() is in net/ipv4/udp_offload.c on 5.14,
     but was moved to net/core/gro.c in later kernels. The fix was
     applied to udp_offload.c instead.
  2. skb_shift() in net/core/skbuff.c uses manual skb->len/data_len
     adjustments on 5.14, whereas upstream uses skb_len_add(). The
     surrounding context differs, causing the hunk to fail. The fix
     was applied at the equivalent location.
  The actual code changes are identical to upstream.

Local Testing

[shreeya@localhost fragnesia]$ ./exp 
[*] uid=1000 euid=1000 gid=1000 egid=1000
[*] mode=xfrm_espintcp_pagecache_replace collateral=after

[*] target=/usr/bin/su size=57056
outer_write_open_denied=1 errno=13 (Permission denied)
userns_setup: outer_uid=1000 outer_gid=1000 ns_uid=0 ns_gid=0
netns_setup=1
loopback_up=1
[   62.385928] alg: No test for seqiv(rfc4106(gcm(aes))) (seqiv(rfc4106-gcm-aesni))
xfrm_espintcp_state_add=1
namespace_setup_complete=1
userns_root_mapped_to_outer_user_write_open_denied=1 errno=13 (Permission denied)

[*] timing: rx_pre_ulp=30000us tx_pre_splice=1000us rx_post_ulp=30000us
[*] range: offset=0x0 len=192 last=0xbf enc_len=4080 splice_len=4096
[*] union: transformed=0x0-0x10ae collateral_after=0xc0-0x10ae
[*] payload=7f454c4602010100000000000000000002003e0001000000780040000000000040000000000000000000000000000000000000004000380001000000000000000100000005000000000000000000000000004000000000000000400000000000b800000000000000b800000000000000001000000000000031ff31f631c0b06a0f05b0690f05b0740f056a00488d0512000000504889e2488d3d1200000031f66a3b580f055445524d3d787465726d002f62696e2f7368000000000000000000

stream0_table_entries=256

[*] smashing 192 bytes into read-only page cache  changed=0  skipped=16  remaining=176
  0000  7f 45 4c 46 02 01 01 00  00 00 00 00 00 00 00 00 
  0010 [03]00 3e 00 01 00 00 00  78 00 40 00 00 00 00 00 
  0020  40 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 
  0030  00 00 00 00 40 00 38 00  01 00 00 00 00 00 00 00 
  0040  01 00 00 00 05 00 00 00  00 00 00 00 00 00 00 00 
  0050  00 00 40 00 00 00 00 00  00 00 40 00 00 00 00 00 
  0060  b8 00 00 00 00 00 00 00  b8 00 00 00 00 00 00 00 
  0070  00 10 00 00 00 00 00 00  31 ff 31 f6 31 c0 b0 6a 
  0080  0f 05 b0 69 0f 05 b0 74  0f 05 6a 00 48 8d 05 12 
  0090  00 00 00 50 48 89 e2 48  8d 3d 12 00 00 00 31 f6 
  00a0  6a 3b 58 0f 05 54 45 52  4d 3d 78 74 65 72 6d 00 
  00b0  2f 62 69 6e 2f 73 68 00  00 00 00 00 00 00 00 00 
  [====----------------------------------------------] 16/192 (8%)
────────────────────────────────────────────────────────────
byte_flip_nonce=27 stream_byte=01p
byte_flip_packet_iv=cccccccc0000001b
[*] [17/192] +0010  03 -> 02  xor=01 seq=2 nonce=27
 firing espintcp splice...
sender_ns_uid=0 euid=0 prefix_send=18 splice_to_tcp=4096 file_off=16 file_off_next=4112
receiver_ns_uid=0 euid=0 espintcp_enabled_after_queue=1
sender_status=0 [   62.964335] process 'exp' launched '/usr/bin/su' with NULL argv: empty string added
receiver_status=0
[-] fixed behavior: byte unchanged at index=16 offset=16
: cannot set groups: Operation not permitted



[shreeya@localhost fragnesia]$ ./gro
[*] uid=1000 euid=1000 gid=1000 egid=1000
[*] mode=gro_espinudp_pagecache_replace

[*] target=/usr/bin/su size=57056
[*] stream_table=256 entries at ciphertext position 0
[   68.693112] IPv6: ADDRCONF(NETDEV_CHANGE): veth1: link becomes ready
[   68.693632] IPv6: ADDRCONF(NETDEV_CHANGE): veth0: link becomes ready
[   68.701836] netem: version 1.3
[*] replacing 192 bytes starting at offset 0
[-] byte 182/192  0x00 -> 0x00 (want 0x68) MISS
[*] pass 1: 0 ok, 80 still wrong, delay now 40ms, retrying
[-] byte 182/192  0x00 -> 0x00 (want 0x68) MISS
[*] pass 2: 0 ok, 80 still wrong, delay now 80ms, retrying
[-] byte 182/192  0x00 -> 0x00 (want 0x68) MISS
[*] pass 3: 0 ok, 80 still wrong, delay now 160ms, retrying
[-] byte 182/192  0x00 -> 0x00 (want 0x68) MISS
[!] 80 bytes stuck after 30s without progress


FIXED: 0/192 bytes changed
[shreeya@localhost fragnesia]$ 
[shreeya@localhost fragnesia]$ uname -r
5.14.0-jmaple_ciqlts9_4-cf57ec3f50d3+
[shreeya@localhost fragnesia]$ 

Test Results

✅ Build Stage

Architecture Build Time Total Time
x86_64 28m 6s 29m 0s
aarch64 15m 52s 16m 39s

✅ Boot Verification

✅ Kernel Selftests

Architecture Passed Failed Compared Against Status
x86_64 189 28 ciqlts9_4 ✅ No regressions
aarch64 145 30 ciqlts9_4 ✅ No regressions

✅ LTP Results

Architecture Passed Failed Compared Against Status
x86_64 1447 81 ciqlts9_4 ✅ No regressions
aarch64 1413 87 ciqlts9_4 ❌ 5 regressions

aarch64 regressions:

  • af_alg04 (PASS -> FAIL)
  • fcntl14 (PASS -> FAIL)
  • fcntl14_64 (PASS -> FAIL)
  • fork14 (PASS -> FAIL)
  • mmap16 (PASS -> FAIL)

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

PlaidCat and others added 2 commits May 13, 2026 19:43
jira VULN-184825
cve CVE-2026-43284
commit-author Kuan-Ting Chen <h3xrabbit@gmail.com>
commit f4c50a4
upstream-diff |
	While this kernel lacks MSG_SPLICE_PAGES, it still has udp_sendpage().
	Upstream didn't patch udp_sendpage() because sendpage was removed
	entirely in favor of MSG_SPLICE_PAGES. In this kernel, splice() can
	still attach a page cache page to an IPv4 datagram via sendpage.
	Therefore, udp_sendpage() must be patched instead.
        IPv6 does not have MSG_SPLICE_PAGES but the __ip_addend_data()
        path is exercisable in ipv6/esp6.c so we're including that
        block.

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>
Signed-off-by: Jonathan Maple <jonathan.l.maple@gmail.com>
@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 14, 2026
@github-actions

Copy link
Copy Markdown

🤖 Validation Checks In Progress Workflow run: https://github.com/ctrliq/kernel-src-tree/actions/runs/25842602045

@github-actions

Copy link
Copy Markdown

🔍 Interdiff Analysis

  • ⚠️ PR commit a3e4b24694f (xfrm: esp: avoid in-place decrypt on shared skb frags) → upstream f4c50a4034e6
    Differences found:
================================================================================
*    DELTA DIFFERENCES - code changes that differ between the patches          *
================================================================================

--- b/net/ipv4/ip_output.c
+++ b/net/ipv4/ip_output.c
@@ -1462,9 +1462,6 @@
 			goto error;
 		}
 
-		if (!(flags & MSG_NO_SHARED_FRAGS))
-			skb_shinfo(skb)->flags |= SKBFL_SHARED_FRAG;
-
 		if (skb->ip_summed == CHECKSUM_NONE) {
 			__wsum csum;
 			csum = csum_page(page, offset, len);
--- b/net/ipv6/esp6.c
+++ b/net/ipv6/esp6.c
@@ -961,7 +961,7 @@
 
 			goto skip_cow;
 		} else if (!skb_has_frag_list(skb) &&
-                   !skb_has_shared_frag(skb)) {
+			   !skb_has_shared_frag(skb)) {
 			nfrags = skb_shinfo(skb)->nr_frags;
 			nfrags++;
 

################################################################################
!    REJECTED PATCH2 HUNKS - could not be compared; manual review needed       !
################################################################################

--- b/net/ipv4/ip_output.c
+++ b/net/ipv4/ip_output.c
@@ -1233,6 +1233,8 @@
 			if (err < 0)
 				goto error;
 			copy = err;
+			if (!(flags & MSG_NO_SHARED_FRAGS))
+				skb_shinfo(skb)->flags |= SKBFL_SHARED_FRAG;
 			wmem_alloc_delta += copy;
 		} else if (!zc) {
 			int i = skb_shinfo(skb)->nr_frags;

================================================================================
*    CONTEXT DIFFERENCES - surrounding code differences between the patches    *
================================================================================

--- b/net/ipv4/ip_output.c
+++ b/net/ipv4/ip_output.c
@@ -1230,6 +1230,6 @@
-			goto error;
-		}
-
-		if (skb->ip_summed == CHECKSUM_NONE) {
-			__wsum csum;
-			csum = csum_page(page, offset, len);
+			if (err < 0)
+				goto error;
+			copy = err;
+			wmem_alloc_delta += copy;
+		} else if (!zc) {
+			int i = skb_shinfo(skb)->nr_frags;

================================================================================
*    ONLY IN PATCH2 - files not modified by patch1                             *
================================================================================

--- a/net/ipv6/ip6_output.c
+++ b/net/ipv6/ip6_output.c
@@ -1794,6 +1794,8 @@ alloc_new_skb:
 			if (err < 0)
 				goto error;
 			copy = err;
+			if (!(flags & MSG_NO_SHARED_FRAGS))
+				skb_shinfo(skb)->flags |= SKBFL_SHARED_FRAG;
 			wmem_alloc_delta += copy;
 		} else if (!zc) {
 			int i = skb_shinfo(skb)->nr_frags;

This is an automated interdiff check for backported commits.

@github-actions

Copy link
Copy Markdown

JIRA PR Check Results

2 commit(s) with issues found:

Commit 142056e70517

Summary: net: skbuff: propagate shared-frag marker through frag-transfer helpers

❌ Errors:

  • VULN-185347: Status is 'To Do', expected 'In Progress'

⚠️ Warnings:

  • VULN-185347: No time logged - please log time manually

Commit a3e4b24694fe

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

❌ Errors:

  • VULN-184825: Status is 'Done', expected 'In Progress'

Summary: Checked 3 commit(s) total.

@github-actions

Copy link
Copy Markdown

Validation checks completed with issues View full results: https://github.com/ctrliq/kernel-src-tree/actions/runs/25842602045

@github-actions

Copy link
Copy Markdown

🤖 Validation Checks In Progress Workflow run: https://github.com/ctrliq/kernel-src-tree/actions/runs/25852019421

@github-actions

Copy link
Copy Markdown

🔍 Interdiff Analysis

  • ⚠️ PR commit a3e4b24694f (xfrm: esp: avoid in-place decrypt on shared skb frags) → upstream f4c50a4034e6
    Differences found:
================================================================================
*    DELTA DIFFERENCES - code changes that differ between the patches          *
================================================================================

--- b/net/ipv4/ip_output.c
+++ b/net/ipv4/ip_output.c
@@ -1462,9 +1462,6 @@
 			goto error;
 		}
 
-		if (!(flags & MSG_NO_SHARED_FRAGS))
-			skb_shinfo(skb)->flags |= SKBFL_SHARED_FRAG;
-
 		if (skb->ip_summed == CHECKSUM_NONE) {
 			__wsum csum;
 			csum = csum_page(page, offset, len);
--- b/net/ipv6/esp6.c
+++ b/net/ipv6/esp6.c
@@ -961,7 +961,7 @@
 
 			goto skip_cow;
 		} else if (!skb_has_frag_list(skb) &&
-                   !skb_has_shared_frag(skb)) {
+			   !skb_has_shared_frag(skb)) {
 			nfrags = skb_shinfo(skb)->nr_frags;
 			nfrags++;
 

################################################################################
!    REJECTED PATCH2 HUNKS - could not be compared; manual review needed       !
################################################################################

--- b/net/ipv4/ip_output.c
+++ b/net/ipv4/ip_output.c
@@ -1233,6 +1233,8 @@
 			if (err < 0)
 				goto error;
 			copy = err;
+			if (!(flags & MSG_NO_SHARED_FRAGS))
+				skb_shinfo(skb)->flags |= SKBFL_SHARED_FRAG;
 			wmem_alloc_delta += copy;
 		} else if (!zc) {
 			int i = skb_shinfo(skb)->nr_frags;

================================================================================
*    CONTEXT DIFFERENCES - surrounding code differences between the patches    *
================================================================================

--- b/net/ipv4/ip_output.c
+++ b/net/ipv4/ip_output.c
@@ -1230,6 +1230,6 @@
-			goto error;
-		}
-
-		if (skb->ip_summed == CHECKSUM_NONE) {
-			__wsum csum;
-			csum = csum_page(page, offset, len);
+			if (err < 0)
+				goto error;
+			copy = err;
+			wmem_alloc_delta += copy;
+		} else if (!zc) {
+			int i = skb_shinfo(skb)->nr_frags;

================================================================================
*    ONLY IN PATCH2 - files not modified by patch1                             *
================================================================================

--- a/net/ipv6/ip6_output.c
+++ b/net/ipv6/ip6_output.c
@@ -1794,6 +1794,8 @@ alloc_new_skb:
 			if (err < 0)
 				goto error;
 			copy = err;
+			if (!(flags & MSG_NO_SHARED_FRAGS))
+				skb_shinfo(skb)->flags |= SKBFL_SHARED_FRAG;
 			wmem_alloc_delta += copy;
 		} else if (!zc) {
 			int i = skb_shinfo(skb)->nr_frags;

This is an automated interdiff check for backported commits.

@github-actions

Copy link
Copy Markdown

JIRA PR Check Results

2 commit(s) with issues found:

Commit 142056e70517

Summary: net: skbuff: propagate shared-frag marker through frag-transfer helpers

❌ Errors:

  • VULN-185347: Status is 'To Do', expected 'In Progress'

⚠️ Warnings:

  • VULN-185347: No time logged - please log time manually

Commit a3e4b24694fe

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

❌ Errors:

  • VULN-184825: Status is 'Done', expected 'In Progress'

Summary: Checked 4 commit(s) total.

@github-actions

Copy link
Copy Markdown

Validation checks completed with issues View full results: https://github.com/ctrliq/kernel-src-tree/actions/runs/25852019421

@ciq-kernel-automation ciq-kernel-automation Bot changed the title [ciqlts9_4] Multiple patches tested (3 commits) [ciqlts9_4] Multiple patches tested (4 commits) May 14, 2026
jira VULN-185347
cve CVE-2026-46300
commit-author Hyunwoo Kim <imv4bel@gmail.com>
commit -
commit-source https://lore.kernel.org/all/agW4vC0r8QOUKtRT@v4bel/
upstream-diff |
  The upstream v3 patch does not apply cleanly to 5.14 due to two
  code reorganization differences:
  1. skb_gro_receive_list() is in net/ipv4/udp_offload.c on 5.14,
     but was moved to net/core/gro.c in later kernels. The fix was
     applied to udp_offload.c instead.
  2. skb_shift() in net/core/skbuff.c uses manual skb->len/data_len
     adjustments on 5.14, whereas upstream uses skb_len_add(). The
     surrounding context differs, causing the hunk to fail. The fix
     was applied at the equivalent location.
  The actual code changes are identical to upstream.

Three frag-transfer helpers (__pskb_copy_fclone(), skb_try_coalesce(),
and skb_shift()) fail to propagate the SKBFL_SHARED_FRAG bit in
skb_shinfo()->flags when moving frags from source to destination.
__pskb_copy_fclone() defers the rest of the shinfo metadata to
skb_copy_header() after copying frag descriptors, but that helper
only carries over gso_{size,segs,type} and never touches
skb_shinfo()->flags; skb_try_coalesce() and skb_shift() move frag
descriptors directly and leave flags untouched.  As a result, the
destination skb keeps a reference to the same externally-owned or
page-cache-backed pages while reporting skb_has_shared_frag() as
false.

The mismatch is harmful in any in-place writer that uses
skb_has_shared_frag() to decide whether shared pages must be detoured
through skb_cow_data().  ESP input is one such writer (esp4.c,
esp6.c), and a single nft 'dup to <local>' rule -- or any other
nf_dup_ipv4() / xt_TEE caller -- is enough to land a pskb_copy()'d
skb in esp_input() with the marker stripped, letting an unprivileged
user write into the page cache of a root-owned read-only file via
authencesn-ESN stray writes.

Set SKBFL_SHARED_FRAG on the destination whenever frag descriptors
were actually moved from the source.  skb_copy() and skb_copy_expand()
share skb_copy_header() too but linearize all paged data into freshly
allocated head storage and emerge with nr_frags == 0, so
skb_has_shared_frag() returns false on its own; they need no change.

The same omission exists in skb_gro_receive() and skb_gro_receive_list().
The former moves the incoming skb's frag descriptors into the
accumulator's last sub-skb via two paths (a direct frag-move loop and
the head_frag + memcpy path); the latter chains the incoming skb whole
onto p's frag_list.  Downstream skb_segment() reads only
skb_shinfo(p)->flags, and skb_segment_list() reuses each sub-skb's
shinfo as the nskb -- both p and lp must carry the marker.

Fixes: cef401d ("net: fix possible wrong checksum generation")
Fixes: f4c50a4 ("xfrm: esp: avoid in-place decrypt on shared skb frags")
Reported-by: William Bowling <vakzz@zellic.io>
Reported-by: Hyunwoo Kim <imv4bel@gmail.com>
Cc: stable@vger.kernel.org
Signed-off-by: Hyunwoo Kim <imv4bel@gmail.com>
Signed-off-by: Brett Mastbergen <bmastbergen@ciq.com>
@bmastbergen bmastbergen force-pushed the {jmaple}_ciqlts9_4 branch from 678b76f to cf57ec3 Compare May 14, 2026 14:07
@bmastbergen bmastbergen changed the title [ciqlts9_4] Multiple patches tested (4 commits) [ciqlts9_4] Multiple patches tested (3 commits) May 14, 2026
@github-actions

Copy link
Copy Markdown

🤖 Validation Checks In Progress Workflow run: https://github.com/ctrliq/kernel-src-tree/actions/runs/25865074039

@github-actions

Copy link
Copy Markdown

🔍 Interdiff Analysis

  • ⚠️ PR commit a3e4b24694f (xfrm: esp: avoid in-place decrypt on shared skb frags) → upstream f4c50a4034e6
    Differences found:
================================================================================
*    DELTA DIFFERENCES - code changes that differ between the patches          *
================================================================================

--- b/net/ipv4/ip_output.c
+++ b/net/ipv4/ip_output.c
@@ -1462,9 +1462,6 @@
 			goto error;
 		}
 
-		if (!(flags & MSG_NO_SHARED_FRAGS))
-			skb_shinfo(skb)->flags |= SKBFL_SHARED_FRAG;
-
 		if (skb->ip_summed == CHECKSUM_NONE) {
 			__wsum csum;
 			csum = csum_page(page, offset, len);
--- b/net/ipv6/esp6.c
+++ b/net/ipv6/esp6.c
@@ -961,7 +961,7 @@
 
 			goto skip_cow;
 		} else if (!skb_has_frag_list(skb) &&
-                   !skb_has_shared_frag(skb)) {
+			   !skb_has_shared_frag(skb)) {
 			nfrags = skb_shinfo(skb)->nr_frags;
 			nfrags++;
 

################################################################################
!    REJECTED PATCH2 HUNKS - could not be compared; manual review needed       !
################################################################################

--- b/net/ipv4/ip_output.c
+++ b/net/ipv4/ip_output.c
@@ -1233,6 +1233,8 @@
 			if (err < 0)
 				goto error;
 			copy = err;
+			if (!(flags & MSG_NO_SHARED_FRAGS))
+				skb_shinfo(skb)->flags |= SKBFL_SHARED_FRAG;
 			wmem_alloc_delta += copy;
 		} else if (!zc) {
 			int i = skb_shinfo(skb)->nr_frags;

================================================================================
*    CONTEXT DIFFERENCES - surrounding code differences between the patches    *
================================================================================

--- b/net/ipv4/ip_output.c
+++ b/net/ipv4/ip_output.c
@@ -1230,6 +1230,6 @@
-			goto error;
-		}
-
-		if (skb->ip_summed == CHECKSUM_NONE) {
-			__wsum csum;
-			csum = csum_page(page, offset, len);
+			if (err < 0)
+				goto error;
+			copy = err;
+			wmem_alloc_delta += copy;
+		} else if (!zc) {
+			int i = skb_shinfo(skb)->nr_frags;

================================================================================
*    ONLY IN PATCH2 - files not modified by patch1                             *
================================================================================

--- a/net/ipv6/ip6_output.c
+++ b/net/ipv6/ip6_output.c
@@ -1794,6 +1794,8 @@ alloc_new_skb:
 			if (err < 0)
 				goto error;
 			copy = err;
+			if (!(flags & MSG_NO_SHARED_FRAGS))
+				skb_shinfo(skb)->flags |= SKBFL_SHARED_FRAG;
 			wmem_alloc_delta += copy;
 		} else if (!zc) {
 			int i = skb_shinfo(skb)->nr_frags;

This is an automated interdiff check for backported commits.

@github-actions

Copy link
Copy Markdown

JIRA PR Check Results

2 commit(s) with issues found:

Commit cf57ec3f50d3

Summary: net: skbuff: propagate shared-frag marker through frag-transfer helpers

❌ Errors:

  • VULN-185347: Status is 'To Do', expected 'In Progress'

⚠️ Warnings:

  • VULN-185347: No time logged - please log time manually

Commit a3e4b24694fe

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

❌ Errors:

  • VULN-184825: Status is 'Done', expected 'In Progress'

Summary: Checked 3 commit(s) total.

@github-actions

Copy link
Copy Markdown

Validation checks completed with issues View full results: https://github.com/ctrliq/kernel-src-tree/actions/runs/25865074039

@github-actions

Copy link
Copy Markdown

🤖 Validation Checks In Progress Workflow run: https://github.com/ctrliq/kernel-src-tree/actions/runs/25869057388

@github-actions

Copy link
Copy Markdown

🔍 Interdiff Analysis

  • ⚠️ PR commit a3e4b24694f (xfrm: esp: avoid in-place decrypt on shared skb frags) → upstream f4c50a4034e6
    Differences found:
================================================================================
*    DELTA DIFFERENCES - code changes that differ between the patches          *
================================================================================

--- b/net/ipv4/ip_output.c
+++ b/net/ipv4/ip_output.c
@@ -1462,9 +1462,6 @@
 			goto error;
 		}
 
-		if (!(flags & MSG_NO_SHARED_FRAGS))
-			skb_shinfo(skb)->flags |= SKBFL_SHARED_FRAG;
-
 		if (skb->ip_summed == CHECKSUM_NONE) {
 			__wsum csum;
 			csum = csum_page(page, offset, len);
--- b/net/ipv6/esp6.c
+++ b/net/ipv6/esp6.c
@@ -961,7 +961,7 @@
 
 			goto skip_cow;
 		} else if (!skb_has_frag_list(skb) &&
-                   !skb_has_shared_frag(skb)) {
+			   !skb_has_shared_frag(skb)) {
 			nfrags = skb_shinfo(skb)->nr_frags;
 			nfrags++;
 

################################################################################
!    REJECTED PATCH2 HUNKS - could not be compared; manual review needed       !
################################################################################

--- b/net/ipv4/ip_output.c
+++ b/net/ipv4/ip_output.c
@@ -1233,6 +1233,8 @@
 			if (err < 0)
 				goto error;
 			copy = err;
+			if (!(flags & MSG_NO_SHARED_FRAGS))
+				skb_shinfo(skb)->flags |= SKBFL_SHARED_FRAG;
 			wmem_alloc_delta += copy;
 		} else if (!zc) {
 			int i = skb_shinfo(skb)->nr_frags;

================================================================================
*    CONTEXT DIFFERENCES - surrounding code differences between the patches    *
================================================================================

--- b/net/ipv4/ip_output.c
+++ b/net/ipv4/ip_output.c
@@ -1230,6 +1230,6 @@
-			goto error;
-		}
-
-		if (skb->ip_summed == CHECKSUM_NONE) {
-			__wsum csum;
-			csum = csum_page(page, offset, len);
+			if (err < 0)
+				goto error;
+			copy = err;
+			wmem_alloc_delta += copy;
+		} else if (!zc) {
+			int i = skb_shinfo(skb)->nr_frags;

================================================================================
*    ONLY IN PATCH2 - files not modified by patch1                             *
================================================================================

--- a/net/ipv6/ip6_output.c
+++ b/net/ipv6/ip6_output.c
@@ -1794,6 +1794,8 @@ alloc_new_skb:
 			if (err < 0)
 				goto error;
 			copy = err;
+			if (!(flags & MSG_NO_SHARED_FRAGS))
+				skb_shinfo(skb)->flags |= SKBFL_SHARED_FRAG;
 			wmem_alloc_delta += copy;
 		} else if (!zc) {
 			int i = skb_shinfo(skb)->nr_frags;

This is an automated interdiff check for backported commits.

@github-actions

Copy link
Copy Markdown

JIRA PR Check Results

1 commit(s) with issues found:

Commit a3e4b24694fe

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

❌ Errors:

  • VULN-184825: Status is 'Done', expected 'In Progress'

Summary: Checked 3 commit(s) total.

@github-actions

Copy link
Copy Markdown

Validation checks completed with issues View full results: https://github.com/ctrliq/kernel-src-tree/actions/runs/25869057388

@PlaidCat PlaidCat 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 requested a review from a team May 14, 2026 16:17

@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.

🥌

@bmastbergen bmastbergen merged commit 71aef04 into ciqlts9_4 May 14, 2026
7 of 8 checks passed
@bmastbergen bmastbergen deleted the {jmaple}_ciqlts9_4 branch May 14, 2026 16:56
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.

3 participants