Skip to content

[ciqlts9_6] Multiple patches tested (5 commits) - #1632

Merged
PlaidCat merged 5 commits into
ciqlts9_6from
{ciq_kernel_automation}_ciqlts9_6
Sep 22, 2026
Merged

PlaidCat merged 5 commits into
ciqlts9_6from
{ciq_kernel_automation}_ciqlts9_6

Conversation

@ciq-kernel-automation

@ciq-kernel-automation ciq-kernel-automation Bot commented Sep 21, 2026

Copy link
Copy Markdown

Summary

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

Commit Message(s)

netfilter: nat: use kfree_rcu to release ops

jira VULN-189460
cve CVE-2026-53000
commit-author Pablo Neira Ayuso <pablo@netfilter.org>
commit 6eda0d771f94267f73f57c94630aa47e90957915
upstream-diff Upstream's kfree_rcu(ops, rcu) relies on the rcu member
  of struct nf_hook_ops, which was added by 73319a8ee18b9 ("netfilter:
  nf_tables: Have a list of nf_hook_ops in nft_hook") and is not
  backported to this tree, as that commit reworks nft netdev hooks to
  keep a list of multiple nf_hook_ops. Add struct rcu_head rcu to
  struct nf_hook_ops in include/linux/netfilter.h so kfree_rcu(ops,
  rcu) compiles. This matches the CentOS Stream 9 backport of this
  commit, 688314e5aacd7, which added the same member as a conflict
  resolution.
scsi: target: iscsi: Bound iscsi_encode_text_output() appends to rsp_buf

jira VULN-193212
cve CVE-2026-63887
commit-author Michael Bommarito <michael.bommarito@gmail.com>
commit bf33e01f88388c43e285492a63e539df6ffed64c
RDMA/siw: bound Read Response placement to the RREAD length

jira VULN-194432
cve CVE-2026-64268
commit-author Michael Bommarito <michael.bommarito@gmail.com>
commit 7d29f7e9dbd844cae4d3e559cf78324b9642fd6b
smb: client: fix double-free in SMB2_open() replay

jira VULN-195323
cve CVE-2026-64382
commit-author Henrique Carvalho <henrique.carvalho@suse.com>
commit b55e182f2324bc6a604c21a47aa6c448f719a532
smb: client: fix query directory replay double-free

jira VULN-194646
cve CVE-2026-64387
commit-author Henrique Carvalho <henrique.carvalho@suse.com>
commit 9647492b5e41954be59d5157eddbcd4cdc1656f7

Test Results

✅ Build Stage

Architecture Build Time Total Time
x86_64 33m 2s 33m 55s
aarch64 19m 38s 20m 23s

✅ Boot Verification

✅ Kernel Selftests

Architecture Passed Failed Compared Against Status
x86_64 207 42 ciqlts9_6 ✅ No regressions
aarch64 153 46 ciqlts9_6 ✅ No regressions

✅ LTP Results

Architecture Passed Failed Compared Against Status
x86_64 1453 82 ciqlts9_6 ✅ No regressions
aarch64 1426 83 ciqlts9_6 ✅ No regressions

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

@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 Sep 21, 2026
@bmastbergen
bmastbergen requested a review from a team September 21, 2026 19:58
@PlaidCat

Copy link
Copy Markdown
Collaborator

I"m rebasing this so we can get a commit validation run

CIQ Kernel Automation added 5 commits September 21, 2026 16:35
jira VULN-189460
cve CVE-2026-53000
commit-author Pablo Neira Ayuso <pablo@netfilter.org>
commit 6eda0d7
upstream-diff Upstream's kfree_rcu(ops, rcu) relies on the rcu member
  of struct nf_hook_ops, which was added by 73319a8 ("netfilter:
  nf_tables: Have a list of nf_hook_ops in nft_hook") and is not
  backported to this tree, as that commit reworks nft netdev hooks to
  keep a list of multiple nf_hook_ops. Add struct rcu_head rcu to
  struct nf_hook_ops in include/linux/netfilter.h so kfree_rcu(ops,
  rcu) compiles. This matches the CentOS Stream 9 backport of this
  commit, 688314e, which added the same member as a conflict
  resolution.

Florian Westphal says:

"Historically this is not an issue, even for normal base hooks: the data
path doesn't use the original nf_hook_ops that are used to register the
callbacks.

However, in v5.14 I added the ability to dump the active netfilter
hooks from userspace.

This code will peek back into the nf_hook_ops that are available
at the tail of the pointer-array blob used by the datapath.

The nat hooks are special, because they are called indirectly from
the central nat dispatcher hook. They are currently invisible to
the nfnl hook dump subsystem though.

But once that changes the nat ops structures have to be deferred too."

Update nf_nat_register_fn() to deal with partial exposition of the hooks
from error path which can be also an issue for nfnetlink_hook.

Fixes: e2cf17d ("netfilter: add new hook nfnl subsystem")
	Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
(cherry picked from commit 6eda0d7)
	Signed-off-by: CIQ Kernel Automation <ciq_kernel_automation@ciq.com>
jira VULN-193212
cve CVE-2026-63887
commit-author Michael Bommarito <michael.bommarito@gmail.com>
commit bf33e01

iscsi_encode_text_output() concatenates "key=value\0" records into
login->rsp_buf, an 8192-byte kzalloc(MAX_KEY_VALUE_PAIRS) buffer
allocated in iscsit_alloc_login_setup_buffer(). The three sprintf() call
sites in this function (lines 1398, 1411, 1424 in v7.1-rc2) never check
the remaining buffer capacity:

	*length += sprintf(output_buf, "%s=%s", er->key, er->value);
	*length += 1;
	output_buf = textbuf + *length;

The 8192-byte ceiling at iscsi_target_check_login_request() bounds the
*input* Login PDU payload, but a single PDU can carry up to 2048 minimal
four-byte "a=b\0" pairs, each unknown key expanding to a 16-byte
"a=NotUnderstood\0" output record via iscsi_add_notunderstood_response().
2048 * 16 = 32 KiB of output into an 8 KiB buffer, producing a ~24 KiB
heap overrun in the kmalloc-8k slab.

The fix introduces a static iscsi_encode_text_record() helper that uses
snprintf() with a per-call bounds check against the remaining buffer,
and threads a u32 textbuf_size parameter through
iscsi_encode_text_output(). Both call sites in
iscsi_target_handle_csg_zero() (PHASE_SECURITY) and
iscsi_target_handle_csg_one() (PHASE_OPERATIONAL) pass
MAX_KEY_VALUE_PAIRS. On overflow the encoder logs the condition, calls
iscsi_release_extra_responses() to drop queued records, and returns -1;
both caller sites now emit ISCSI_STATUS_CLS_INITIATOR_ERR /
ISCSI_LOGIN_STATUS_INIT_ERR via iscsit_tx_login_rsp() before returning,
so the initiator sees an explicit failed-login response rather than a
silent connection drop. (Prior to this patch only the PHASE_OPERATIONAL
caller did that; the PHASE_SECURITY caller is converted to the same
shape.)

Fixes: e48354c ("iscsi-target: Add iSCSI fabric support for target v4.1")
	Cc: stable@vger.kernel.org
Assisted-by: Claude:claude-opus-4-7
	Signed-off-by: Michael Bommarito <michael.bommarito@gmail.com>
	Tested-by: John Garry <john.g.garry@oracle.com>
	Reviewed-by: John Garry <john.g.garry@oracle.com>
	Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
(cherry picked from commit bf33e01)
	Signed-off-by: CIQ Kernel Automation <ciq_kernel_automation@ciq.com>
jira VULN-194432
cve CVE-2026-64268
commit-author Michael Bommarito <michael.bommarito@gmail.com>
commit 7d29f7e

In drivers/infiniband/sw/siw/siw_qp_rx.c, siw_proc_rresp() places each
inbound Read Response DDP segment at sge->laddr + wqe->processed and then
accumulates wqe->processed, but it never checks the running total against
the sink buffer length on continuation segments. siw_check_sge() resolves
and validates the sink memory only on the first fragment (the if (!*mem)
branch), and siw_rresp_check_ntoh() compares the cumulative length against
wqe->bytes only on the final segment (the !frx->more_ddp_segs guard).

A connected siw peer that answers an outstanding RREAD with Read Response
segments that keep the DDP Last flag clear, carrying more total payload
than the RREAD requested, drives wqe->processed past the validated sink
buffer; the next siw_rx_data() call writes out of bounds at
sge->laddr + wqe->processed. siw runs iWARP over ordinary routable TCP,
so the peer is the remote end of an established RDMA connection and needs
no local privilege.

Bound every segment before placement, exactly as siw_proc_send() and
siw_proc_write() already do for their tagged and untagged paths, and
terminate the connection with a base-or-bounds DDP error when the
Read Response would overrun the sink buffer.

This is the second receive-path length fix for this file. A separate
change rejects an MPA FPDU length that underflows the per-fragment
remainder in the header decode; that guard does not cover this case,
because here each individual segment length is self-consistent and only
the accumulated placement offset overruns the buffer.

Fixes: 8b6a361 ("rdma/siw: receive path")
Link: https://patch.msgid.link/r/20260602194700.2273758-1-michael.bommarito@gmail.com
	Cc: stable@vger.kernel.org
Assisted-by: Claude:claude-opus-4-8
	Signed-off-by: Michael Bommarito <michael.bommarito@gmail.com>
	Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
(cherry picked from commit 7d29f7e)
	Signed-off-by: CIQ Kernel Automation <ciq_kernel_automation@ciq.com>
jira VULN-195323
cve CVE-2026-64382
commit-author Henrique Carvalho <henrique.carvalho@suse.com>
commit b55e182

A response-bearing attempt can return a replayable error and free its
response buffer. If SMB2_open_init() fails before the next send, cleanup
retains the previous buffer type and frees that response again.

Reset response bookkeeping before each attempt to prevent the stale free.

Fixes: 4f1fffa ("cifs: commands that are retried should have replay flag set")
	Cc: stable@vger.kernel.org
	Signed-off-by: Henrique Carvalho <henrique.carvalho@suse.com>
	Signed-off-by: Steve French <stfrench@microsoft.com>
(cherry picked from commit b55e182)
	Signed-off-by: CIQ Kernel Automation <ciq_kernel_automation@ciq.com>
jira VULN-194646
cve CVE-2026-64387
commit-author Henrique Carvalho <henrique.carvalho@suse.com>
commit 9647492

A response-bearing attempt can return a replayable error and free its
response buffer. If SMB2_query_directory_init() fails before the next send,
cleanup retains the previous buffer type and frees that response again.

Reset response bookkeeping before each attempt to prevent the stale free.

Fixes: 4f1fffa ("cifs: commands that are retried should have replay flag set")
	Cc: stable@vger.kernel.org
	Signed-off-by: Henrique Carvalho <henrique.carvalho@suse.com>
	Signed-off-by: Steve French <stfrench@microsoft.com>
(cherry picked from commit 9647492)
	Signed-off-by: CIQ Kernel Automation <ciq_kernel_automation@ciq.com>
@PlaidCat
PlaidCat force-pushed the {ciq_kernel_automation}_ciqlts9_6 branch from e52c5ec to 358608b Compare September 21, 2026 20:36

@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 requested a review from a team September 21, 2026 20:36
@PlaidCat
PlaidCat requested review from a team and removed request for a team September 21, 2026 20:36
@github-actions

Copy link
Copy Markdown

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

@github-actions

Copy link
Copy Markdown

🔍 Interdiff Analysis

  • ⚠️ PR commit 816ac9e3165 (netfilter: nat: use kfree_rcu to release ops) → upstream 6eda0d771f94
    Differences found:
================================================================================
*    CONTEXT DIFFERENCES - surrounding code differences between the patches    *
================================================================================

--- b/net/ipv4/netfilter/iptable_nat.c
+++ b/net/ipv4/netfilter/iptable_nat.c
@@ -113,4 +103,4 @@
 	kfree(ops);
 }
 
-static int __net_init iptable_nat_table_init(struct net *net)
+static int iptable_nat_table_init(struct net *net)
--- b/net/ipv6/netfilter/ip6table_nat.c
+++ b/net/ipv6/netfilter/ip6table_nat.c
@@ -115,4 +105,4 @@
 	kfree(ops);
 }
 
-static int __net_init ip6table_nat_table_init(struct net *net)
+static int ip6table_nat_table_init(struct net *net)

================================================================================
*    ONLY IN PATCH1 - files not modified by patch2                             *
================================================================================

--- b/include/linux/netfilter.h
+++ a/include/linux/netfilter.h
@@ -94,8 +94,6 @@
 };
 
 struct nf_hook_ops {
-	struct rcu_head		rcu;
-
 	/* User fills in from here down. */
 	nf_hookfn		*hook;
 	struct net_device	*dev;
  • ⚠️ PR commit 3dd41ac10a2 (RDMA/siw: bound Read Response placement to the RREAD length) → upstream 7d29f7e9dbd8
    Differences found:
================================================================================
*    CONTEXT DIFFERENCES - surrounding code differences between the patches    *
================================================================================

--- b/drivers/infiniband/sw/siw/siw_qp_rx.c
+++ b/drivers/infiniband/sw/siw/siw_qp_rx.c
@@ -841,6 +841,6 @@
 	}
 	mem_p = *mem;
 
 	bytes = min(srx->fpdu_part_rem, srx->skb_new);
-
-	if (mem_p->mem_obj == NULL)
+	rv = siw_rx_data(mem_p, srx, &frx->pbl_idx,
+			 sge->laddr + wqe->processed, bytes);

This is an automated interdiff check for backported commits.

@github-actions

Copy link
Copy Markdown

Validation checks completed successfully View full results: https://github.com/ctrliq/kernel-src-tree/actions/runs/35653048521

@bmastbergen

Copy link
Copy Markdown
Collaborator

🔍 Interdiff Analysis

  • ⚠️ PR commit 816ac9e3165 (netfilter: nat: use kfree_rcu to release ops) → upstream 6eda0d771f94
    Differences found:

================================================================================
*    ONLY IN PATCH1 - files not modified by patch2                             *
================================================================================

--- b/include/linux/netfilter.h
+++ a/include/linux/netfilter.h
@@ -94,8 +94,6 @@
 };
 
 struct nf_hook_ops {
-	struct rcu_head		rcu;
-
 	/* User fills in from here down. */
 	nf_hookfn		*hook;
 	struct net_device	*dev;

Expected. We added this on purpose.

@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 merged commit 6847763 into ciqlts9_6 Sep 22, 2026
6 of 8 checks passed
@PlaidCat
PlaidCat deleted the {ciq_kernel_automation}_ciqlts9_6 branch September 22, 2026 14:09
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.

2 participants