Skip to content

[ciqlts8_6] Multiple patches tested (7 commits) - #1745

Merged
PlaidCat merged 7 commits into
ciqlts8_6from
{bmastbergen_cves_26_10_29}_ciqlts8_6
Oct 30, 2026
Merged

PlaidCat merged 7 commits into
ciqlts8_6from
{bmastbergen_cves_26_10_29}_ciqlts8_6

Conversation

@ciq-kernel-automation

@ciq-kernel-automation ciq-kernel-automation Bot commented Oct 30, 2026 •

Copy link
Copy Markdown

Summary

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

Commit Message(s)

netfilter: ipset: drop logically empty buckets in mtype_del

jira VULN-225195
cve CVE-2026-31418
commit-author Yifan Wu <yifanwucs@gmail.com>
commit 9862ef9ab0a116c6dca98842aab7de13a252ae02
upstream-diff | kept this kernel's pre-hregion accounting
	(set->ext_size/set->elements instead of t->hregion[r]) in the
	conflict hunk; only the drop condition line was changed, matching
	upstream.
netfilter: nf_tables: unconditionally bump set->nelems before insertion

jira VULN-178719
cve CVE-2026-23272
commit-author Pablo Neira Ayuso <pablo@netfilter.org>
commit def602e498a4f951da95c95b1b8ce8ae68aa733a
upstream-diff | adapted to this kernel's pre-catchall nftables:
	the bump keeps this kernel's limit expression (set->size +
	set->ndeact guarded by set->size, no NFT_SET_ELEM_CATCHALL or
	nft_set_maxsize here), the element is stored via
	nft_trans_elem(trans) and queued with list_add_tail(), and the
	v6.13 element timeout-update reroute (NFT_TRANS_UPD_*,
	nft_trans_container_elem) was dropped as absent.  The err unwind
	keeps this kernel's err_elem_expr chain with obj->use--.
tls: fix race between async notify and socket close

jira VULN-42479
cve CVE-2024-26583
commit-author Jakub Kicinski <kuba@kernel.org>
commit aec7961916f3f
upstream-diff | this kernel has no tls_{encrypt,decrypt}_async_wait
	helper functions (wait sites are inlined in tls_sw_sendmsg,
	tls_sw_recvmsg and tls_sw_release_resources_tx), so the helper
	transformations were applied inline at those three sites.
	DEBUG_NET_WARN_ON_ONCE (v5.17+ net_debug.h) is absent here and was
	dropped at its two sites.  The rx context's bool async_notify
	(removed alongside decrypt_compl_lock; upstream rx never had one)
	and the tx int async_notify are gone with the locks, and
	spin_lock_init is replaced by atomic_set(..._pending, 1) bias
	init as in upstream's stable backports.  This kernel's callback
	data conventions (tls_decrypt_done, skb) are unchanged.
ipv4: free inet_opt and ireq_opt after an RCU grace period

jira VULN-221323
cve CVE-2026-98432
commit-author Eric Dumazet <edumazet@kernel.org>
commit e3f33b0a1d89d
upstream-diff | conflict was context-only: this kernel's
	inet_sock_destruct() keeps its older dst_release lines
	(rcu_dereference_check, plain sk->sk_rx_dst, no psp_sk_assoc_free);
	only the kfree -> kfree_rcu(inet_opt) line was taken, matching
	upstream.
net: macvlan: fix memory leaks of macvlan_common_newlink

jira VULN-66115
cve CVE-2022-49853
commit-author Chuang Wang <nashuiliang@gmail.com>
commit 23569b5652ee8e8e55a12f7835f59af6f3cefc30
macvlan: fix error recovery in macvlan_common_newlink()

jira VULN-176347
cve CVE-2026-23209
commit-author Eric Dumazet <edumazet@google.com>
commit f8db6475a83649689c087a8f52486fcc53e627e9
macvlan: observe an RCU grace period in macvlan_common_newlink() error path

jira VULN-225796
cve CVE-2026-23273
commit-author Eric Dumazet <edumazet@google.com>
commit e3f000f0dee1bfab52e2e61ca6a3835d9e187e35

Test Results

✅ Build Stage

Architecture Build Time Total Time
x86_64 25m 24s 26m 22s
aarch64 9m 44s 10m 30s

✅ Boot Verification

✅ Kernel Selftests

Architecture Passed Failed Compared Against Status
x86_64 110 29 ciqlts8_6 ✅ No regressions
aarch64 64 23 ciqlts8_6 ✅ No regressions

✅ LTP Results

Architecture Passed Failed Compared Against Status
x86_64 1430 14 ciqlts8_6 ✅ No regressions
aarch64 1428 15 ciqlts8_6 ✅ No regressions

x86_64 newly passing:

  • dio15 (PASS)
  • dio16 (PASS)
  • dio17 (PASS)
  • dio18 (PASS)
  • dio19 (PASS)
  • dio20 (PASS)
  • dio21 (PASS)
  • dio22 (PASS)
  • dio23 (PASS)
  • dio24 (PASS)

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

@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 Oct 30, 2026
@github-actions

Copy link
Copy Markdown

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

@github-actions

Copy link
Copy Markdown

🔍 Diffofdiffs: All 3 backports differ from upstream

View the diffofdiffs report.

Open to anyone signed in to GitHub. Report expires 2027-01-28 00:14 UTC.

# Subject Backport Upstream
1 netfilter: ipset: drop logically empty buckets in mtype_del 3d339348bc03 9862ef9ab0a1
2 netfilter: nf_tables: unconditionally bump set->nelems before insertion 2c260ae55afb def602e498a4
3 tls: fix race between async notify and socket close f55b05c33635 aec7961916f3

Checked PR revision f55b05c33635 against base dfcca6afde7c.

@github-actions

Copy link
Copy Markdown

JIRA PR Check Results

3 commit(s) with issues found:

Commit f55b05c33635

Summary: tls: fix race between async notify and socket close

⚠️ Warnings:

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

Commit 2c260ae55afb

Summary: netfilter: nf_tables: unconditionally bump set->nelems before insertion

⚠️ Warnings:

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

Commit 3d339348bc03

Summary: netfilter: ipset: drop logically empty buckets in mtype_del

❌ Errors:

  • VULN-XXXXXXX: Failed to retrieve ticket: JiraError HTTP 404 url: https://ciqinc.atlassian.net/rest/api/2/issue/VULN-XXXXXXX
    text: Issue does not exist or you do not have permission to see it.

    response headers = {'Content-Type': 'application/json;charset=UTF-8', 'Transfer-Encoding': 'chunked', 'Connection': 'keep-alive', 'Date': 'Fri, 30 Oct 2026 00:25:39 GMT', 'Server': 'AtlassianEdge', 'Timing-Allow-Origin': '*', 'X-Arequestid': '8e006cfc6bf618a97adb4430c48117ed', 'X-Aaccountid': '712020%3A43f5a558-0b78-4cc1-ad9e-a61d9b0317de', 'Cache-Control': 'no-cache, no-store, no-transform', 'Ratelimit-Policy': '"jira-burst-based";q=150;w=1', 'Ratelimit': '"jira-burst-based";r=397;t=1', 'X-Ratelimit-Limit': '400', 'X-Ratelimit-Remaining': '397', 'Content-Encoding': 'gzip', 'X-Content-Type-Options': 'nosniff', 'X-Xss-Protection': '1; mode=block', 'Atl-Traceid': 'b7f9cd83202b4536a8fa2b78e098a586', 'Atl-Request-Id': 'b7f9cd83-202b-4536-a8fa-2b78e098a586', 'Strict-Transport-Security': 'max-age=63072000; includeSubDomains; preload', 'Report-To': '{"endpoints": [{"url": "https://dz8aopenkvv6s.cloudfront.net"}], "group": "endpoint-1", "include_subdomains": true, "max_age": 600}', 'Nel': '{"failure_fraction": 0.01, "include_subdomains": true, "max_age": 600, "report_to": "endpoint-1"}', 'Set-Cookie': 'Atl-Ctx-Cloud-Service-Provider=AWS; Domain=.ciqinc.atlassian.net; Path=/; SameSite=Strict', 'Server-Timing': 'atl-edge;dur=68,atl-edge-internal;dur=14,atl-edge-upstream;dur=54,atl-edge-pop;desc="aws-us-west-2"', 'X-Cache': 'Error from cloudfront', 'Via': '1.1 1fac415a93bf9552cac3e94ae1ced256.cloudfront.net (CloudFront)', 'X-Amz-Cf-Pop': 'ORD56-P14', 'X-Amz-Cf-Id': 'rdzr_ckGqcHHjoivRlChbJj5v18b-zGfiKUKmVL4V1y3wL-O0qzv_A=='}
    response text = {"errorMessages":["Issue does not exist or you do not have permission to see it."],"errors":{}}


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/40979501779

@bmastbergen
bmastbergen marked this pull request as draft October 30, 2026 12:12
jira VULN-225195
cve CVE-2026-31418
commit-author Yifan Wu <yifanwucs@gmail.com>
commit 9862ef9
upstream-diff | kept this kernel's pre-hregion accounting
	(set->ext_size/set->elements instead of t->hregion[r]) in the
	conflict hunk; only the drop condition line was changed, matching
	upstream.

mtype_del() counts empty slots below n->pos in k, but it only drops the
bucket when both n->pos and k are zero. This misses buckets whose live
entries have all been removed while n->pos still points past deleted slots.

Treat a bucket as empty when all positions below n->pos are unused and
release it directly instead of shrinking it further.

Fixes: 8af1c6f ("netfilter: ipset: Fix forceadd evaluation path")
	Cc: stable@vger.kernel.org
	Reported-by: Juefei Pu <tomapufckgml@gmail.com>
	Reported-by: Xin Liu <dstsmallbird@foxmail.com>
	Signed-off-by: Yifan Wu <yifanwucs@gmail.com>
Co-developed-by: Yuan Tan <yuantan098@gmail.com>
	Signed-off-by: Yuan Tan <yuantan098@gmail.com>
	Reviewed-by: Phil Sutter <phil@nwl.cc>
	Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
(cherry picked from commit 9862ef9)
	Signed-off-by: Brett Mastbergen <bmastbergen@ciq.com>

# Conflicts:
#	net/netfilter/ipset/ip_set_hash_gen.h
jira VULN-178719
cve CVE-2026-23272
commit-author Pablo Neira Ayuso <pablo@netfilter.org>
commit def602e
upstream-diff | adapted to this kernel's pre-catchall nftables:
	the bump keeps this kernel's limit expression (set->size +
	set->ndeact guarded by set->size, no NFT_SET_ELEM_CATCHALL or
	nft_set_maxsize here), the element is stored via
	nft_trans_elem(trans) and queued with list_add_tail(), and the
	v6.13 element timeout-update reroute (NFT_TRANS_UPD_*,
	nft_trans_container_elem) was dropped as absent.  The err unwind
	keeps this kernel's err_elem_expr chain with obj->use--.

In case that the set is full, a new element gets published then removed
without waiting for the RCU grace period, while RCU reader can be
walking over it already.

To address this issue, add the element transaction even if set is full,
but toggle the set_full flag to report -ENFILE so the abort path safely
unwinds the set to its previous state.

As for element updates, decrement set->nelems to restore it.

A simpler fix is to call synchronize_rcu() in the error path.
However, with a large batch adding elements to already maxed-out set,
this could cause noticeable slowdown of such batches.

Fixes: 35d0ac9 ("netfilter: nf_tables: fix set->nelems counting with no NLM_F_EXCL")
	Reported-by: Inseo An <y0un9sa@gmail.com>
	Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
	Signed-off-by: Florian Westphal <fw@strlen.de>
(cherry picked from commit def602e)
	Signed-off-by: Brett Mastbergen <bmastbergen@ciq.com>

# Conflicts:
#	net/netfilter/nf_tables_api.c
jira VULN-42479
cve CVE-2024-26583
commit-author Jakub Kicinski <kuba@kernel.org>
commit aec7961
upstream-diff | this kernel has no tls_{encrypt,decrypt}_async_wait
	helper functions (wait sites are inlined in tls_sw_sendmsg,
	tls_sw_recvmsg and tls_sw_release_resources_tx), so the helper
	transformations were applied inline at those three sites.
	DEBUG_NET_WARN_ON_ONCE (v5.17+ net_debug.h) is absent here and was
	dropped at its two sites.  The rx context's bool async_notify
	(removed alongside decrypt_compl_lock; upstream rx never had one)
	and the tx int async_notify are gone with the locks, and
	spin_lock_init is replaced by atomic_set(..._pending, 1) bias
	init as in upstream's stable backports.  This kernel's callback
	data conventions (tls_decrypt_done, skb) are unchanged.

The submitting thread (one which called recvmsg/sendmsg)
may exit as soon as the async crypto handler calls complete()
so any code past that point risks touching already freed data.

Try to avoid the locking and extra flags altogether.
Have the main thread hold an extra reference, this way
we can depend solely on the atomic ref counter for
synchronization.

Don't futz with reiniting the completion, either, we are now
tightly controlling when completion fires.

	Reported-by: valis <sec@valis.email>
Fixes: 0cada33 ("net/tls: fix race condition causing kernel panic")
	Signed-off-by: Jakub Kicinski <kuba@kernel.org>
	Reviewed-by: Simon Horman <horms@kernel.org>
	Reviewed-by: Eric Dumazet <edumazet@google.com>
	Reviewed-by: Sabrina Dubroca <sd@queasysnail.net>
	Signed-off-by: David S. Miller <davem@davemloft.net>
(cherry picked from commit aec7961)
	Signed-off-by: Brett Mastbergen <bmastbergen@ciq.com>
jira VULN-221323
cve CVE-2026-98432
commit-author Eric Dumazet <edumazet@kernel.org>
commit e3f33b0
upstream-diff | conflict was context-only: this kernel's
	inet_sock_destruct() keeps its older dst_release lines
	(rcu_dereference_check, plain sk->sk_rx_dst, no psp_sk_assoc_free);
	only the kfree -> kfree_rcu(inet_opt) line was taken, matching
	upstream.

tcp_v4_syn_recv_sock() transfers ownership of ireq->ireq_opt to the
child socket (newinet->inet_opt) without copying it.

Another cpu can concurrently process a retransmitted SYN for the same
request socket, and send a SYNACK from tcp_check_req().
tcp_v4_send_synack() and inet_csk_route_req() read ireq->ireq_opt
under rcu_read_lock() only, and ip_build_and_send_pkt() and
ip_options_build() then read opt->optlen twice.

Note that the SYNACK timer itself is not an issue: it holds a
reference on its request socket, and inet_csk_reqsk_queue_drop()
calls timer_delete_sync() before the child can be freed.

Since commit 079096f ("tcp/dccp: install syn_recv requests
into ehash table"), request sockets are processed without holding
the listener lock, so nothing prevents the child socket from being
freed while the SYNACK is still being built. TCP child sockets do
not have SOCK_RCU_FREE, and inet_sock_destruct() frees inet_opt
with a plain kfree(), leading to a use-after-free in
ip_options_build().

A similar issue exists with request socket migration
(net.ipv4.tcp_migrate_req=1, or a BPF_SK_REUSEPORT_SELECT_OR_MIGRATE
program). reqsk_timer_handler() clones the request socket with
inet_reqsk_clone(), so that the old request socket and its clone
share the same ireq_opt, then reqsk_migrate_reset() clears the
pointer in the old one. Another cpu holding a reference on the old
request socket can still be using these options (sending a SYNACK,
or creating a child in tcp_v4_syn_recv_sock()) when the clone is
freed, and tcp_v4_reqsk_destructor() also uses a plain kfree().

Readers already use RCU, and other paths replacing inet_opt
(do_ip_setsockopt(), cipso_v4_sock_setattr()...) already use
kfree_rcu(). Use kfree_rcu() in inet_sock_destruct() and
tcp_v4_reqsk_destructor() as well.

IPv6 is not affected by the first issue, because tcp_v6_syn_recv_sock()
duplicates the options. tcp_v6_reqsk_destructor() has the same
migration issue with ipv6_opt, which is only set by CALIPSO. This
will be addressed in a separate patch.

Fixes: 079096f ("tcp/dccp: install syn_recv requests into ehash table")
Fixes: c905dee ("tcp: Migrate TCP_NEW_SYN_RECV requests at retransmitting SYN+ACKs.")
	Reported-by: Xinyang Ge <xinyang@anthropic.com>
	Signed-off-by: Eric Dumazet <edumazet@kernel.org>
	Reviewed-by: Kuniyuki Iwashima <kuniyu@google.com>
Link: https://patch.msgid.link/20261001221253.2964024-1-edumazet@kernel.org
	Signed-off-by: Jakub Kicinski <kuba@kernel.org>
(cherry picked from commit e3f33b0)
	Signed-off-by: Brett Mastbergen <bmastbergen@ciq.com>
@bmastbergen
bmastbergen force-pushed the {bmastbergen_cves_26_10_29}_ciqlts8_6 branch from 1a2618c to 460fe14 Compare October 30, 2026 13:04
@github-actions

Copy link
Copy Markdown

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

@github-actions

Copy link
Copy Markdown

🔍 Diffofdiffs: All 4 backports differ from upstream

View the diffofdiffs report.

Open to anyone signed in to GitHub. Report expires 2027-01-28 13:02 UTC.

# Subject Backport Upstream
1 netfilter: ipset: drop logically empty buckets in mtype_del 3d339348bc03 9862ef9ab0a1
2 netfilter: nf_tables: unconditionally bump set->nelems before insertion 2c260ae55afb def602e498a4
3 tls: fix race between async notify and socket close f55b05c33635 aec7961916f3
4 ipv4: free inet_opt and ireq_opt after an RCU grace period 1a2618c3e313 e3f33b0a1d89

Checked PR revision 1a2618c3e313 against base dfcca6afde7c.

@github-actions

Copy link
Copy Markdown

JIRA PR Check Results

3 commit(s) with issues found:

Commit f55b05c33635

Summary: tls: fix race between async notify and socket close

⚠️ Warnings:

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

Commit 2c260ae55afb

Summary: netfilter: nf_tables: unconditionally bump set->nelems before insertion

⚠️ Warnings:

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

Commit 3d339348bc03

Summary: netfilter: ipset: drop logically empty buckets in mtype_del

❌ Errors:

  • VULN-XXXXXXX: Failed to retrieve ticket: JiraError HTTP 404 url: https://ciqinc.atlassian.net/rest/api/2/issue/VULN-XXXXXXX
    text: Issue does not exist or you do not have permission to see it.

    response headers = {'Content-Type': 'application/json;charset=UTF-8', 'Transfer-Encoding': 'chunked', 'Connection': 'keep-alive', 'Date': 'Fri, 30 Oct 2026 13:12:06 GMT', 'Server': 'AtlassianEdge', 'Timing-Allow-Origin': '*', 'X-Arequestid': '0b80cf95c96d8db31c4dad4c49b90c91', 'X-Aaccountid': '712020%3A43f5a558-0b78-4cc1-ad9e-a61d9b0317de', 'Cache-Control': 'no-cache, no-store, no-transform', 'Ratelimit-Policy': '"jira-burst-based";q=150;w=1', 'Ratelimit': '"jira-burst-based";r=398;t=1', 'X-Ratelimit-Limit': '400', 'X-Ratelimit-Remaining': '398', 'Content-Encoding': 'gzip', 'X-Content-Type-Options': 'nosniff', 'X-Xss-Protection': '1; mode=block', 'Atl-Traceid': '3218cdbea606409780da51e493b8b4db', 'Atl-Request-Id': '3218cdbe-a606-4097-80da-51e493b8b4db', 'Strict-Transport-Security': 'max-age=63072000; includeSubDomains; preload', 'Report-To': '{"endpoints": [{"url": "https://dz8aopenkvv6s.cloudfront.net"}], "group": "endpoint-1", "include_subdomains": true, "max_age": 600}', 'Nel': '{"failure_fraction": 0.01, "include_subdomains": true, "max_age": 600, "report_to": "endpoint-1"}', 'Set-Cookie': 'Atl-Ctx-Cloud-Service-Provider=AWS; Domain=.ciqinc.atlassian.net; Path=/; SameSite=Strict', 'Server-Timing': 'atl-edge;dur=65,atl-edge-internal;dur=14,atl-edge-upstream;dur=51,atl-edge-pop;desc="aws-us-west-2"', 'X-Cache': 'Error from cloudfront', 'Via': '1.1 01b6d83a9b2cdd6c2a5f42b34f1e78dc.cloudfront.net (CloudFront)', 'X-Amz-Cf-Pop': 'DFW56-P4', 'X-Amz-Cf-Id': 'JojP8Z2EbRZYhDx3XTjrvXMU3kxppUJXe08iE4IufQEl2WIGPmhMpQ=='}
    response text = {"errorMessages":["Issue does not exist or you do not have permission to see it."],"errors":{}}


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/41061107100

@github-actions

Copy link
Copy Markdown

🔍 Diffofdiffs: All 4 backports differ from upstream

View the diffofdiffs report.

Open to anyone signed in to GitHub. Report expires 2027-01-28 13:04 UTC.

# Subject Backport Upstream
1 netfilter: ipset: drop logically empty buckets in mtype_del 8e8c4c260145 9862ef9ab0a1
2 netfilter: nf_tables: unconditionally bump set->nelems before insertion 25722ba01670 def602e498a4
3 tls: fix race between async notify and socket close 691df499d06f aec7961916f3
4 ipv4: free inet_opt and ireq_opt after an RCU grace period 460fe14bd22c e3f33b0a1d89

Checked PR revision 460fe14bd22c against base dfcca6afde7c.

@github-actions

Copy link
Copy Markdown

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

@github-actions

Copy link
Copy Markdown

JIRA PR Check Results

2 commit(s) with issues found:

Commit 691df499d06f

Summary: tls: fix race between async notify and socket close

⚠️ Warnings:

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

Commit 25722ba01670

Summary: netfilter: nf_tables: unconditionally bump set->nelems before insertion

⚠️ Warnings:

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

Summary: Checked 4 commit(s) total.

@github-actions

Copy link
Copy Markdown

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

@github-actions

Copy link
Copy Markdown

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

@github-actions

Copy link
Copy Markdown

🔍 Diffofdiffs: 5 of 6 backports differ from upstream

View the diffofdiffs report.

Open to anyone signed in to GitHub. Report expires 2027-01-28 13:16 UTC.

# Subject Backport Upstream
1 netfilter: ipset: drop logically empty buckets in mtype_del 8e8c4c260145 9862ef9ab0a1
2 netfilter: nf_tables: unconditionally bump set->nelems before insertion 25722ba01670 def602e498a4
3 tls: fix race between async notify and socket close 691df499d06f aec7961916f3
4 ipv4: free inet_opt and ireq_opt after an RCU grace period 460fe14bd22c e3f33b0a1d89
5 macvlan: fix error recovery in macvlan_common_newlink() 5f32b4dbaca2 f8db6475a836

Checked PR revision 6a2afc4a1778 against base dfcca6afde7c.

@github-actions

Copy link
Copy Markdown

JIRA PR Check Results

3 commit(s) with issues found:

Commit 6a2afc4a1778

Summary: macvlan: observe an RCU grace period in macvlan_common_newlink() error path

❌ Errors:

  • VULN-XXXXXXX: Failed to retrieve ticket: JiraError HTTP 404 url: https://ciqinc.atlassian.net/rest/api/2/issue/VULN-XXXXXXX
    text: Issue does not exist or you do not have permission to see it.

    response headers = {'Content-Type': 'application/json;charset=UTF-8', 'Transfer-Encoding': 'chunked', 'Connection': 'keep-alive', 'Date': 'Fri, 30 Oct 2026 13:27:26 GMT', 'Server': 'AtlassianEdge', 'Timing-Allow-Origin': '*', 'X-Arequestid': 'b3b26442c49147619ca3e062c167a6ee', 'X-Aaccountid': '712020%3A43f5a558-0b78-4cc1-ad9e-a61d9b0317de', 'Cache-Control': 'no-cache, no-store, no-transform', 'Ratelimit-Policy': '"jira-burst-based";q=150;w=1', 'Ratelimit': '"jira-burst-based";r=399;t=1', 'X-Ratelimit-Limit': '400', 'X-Ratelimit-Remaining': '399', 'Content-Encoding': 'gzip', 'X-Content-Type-Options': 'nosniff', 'X-Xss-Protection': '1; mode=block', 'Atl-Traceid': '80f0bda9ea384fdfb6dbe8433f17015c', 'Atl-Request-Id': '80f0bda9-ea38-4fdf-b6db-e8433f17015c', 'Strict-Transport-Security': 'max-age=63072000; includeSubDomains; preload', 'Report-To': '{"endpoints": [{"url": "https://dz8aopenkvv6s.cloudfront.net"}], "group": "endpoint-1", "include_subdomains": true, "max_age": 600}', 'Nel': '{"failure_fraction": 0.01, "include_subdomains": true, "max_age": 600, "report_to": "endpoint-1"}', 'Set-Cookie': 'Atl-Ctx-Cloud-Service-Provider=AWS; Domain=.ciqinc.atlassian.net; Path=/; SameSite=Strict', 'Server-Timing': 'atl-edge;dur=57,atl-edge-internal;dur=13,atl-edge-upstream;dur=44,atl-edge-pop;desc="aws-us-west-2"', 'X-Cache': 'Error from cloudfront', 'Via': '1.1 8b1ca38f6b0e2c14ce8c202175f971a6.cloudfront.net (CloudFront)', 'X-Amz-Cf-Pop': 'IAD55-P1', 'X-Amz-Cf-Id': '3qndUhbh98PyDPsH7eocawkxlzZJaJUEehF3xhMVtMlj-LcprTF8qQ=='}
    response text = {"errorMessages":["Issue does not exist or you do not have permission to see it."],"errors":{}}

Commit 691df499d06f

Summary: tls: fix race between async notify and socket close

⚠️ Warnings:

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

Commit 25722ba01670

Summary: netfilter: nf_tables: unconditionally bump set->nelems before insertion

⚠️ Warnings:

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

Summary: Checked 6 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/41063235248

@bmastbergen
bmastbergen force-pushed the {bmastbergen_cves_26_10_29}_ciqlts8_6 branch from 6a2afc4 to 20f3148 Compare October 30, 2026 13:41
@github-actions

Copy link
Copy Markdown

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

@github-actions

Copy link
Copy Markdown

🔍 Diffofdiffs: 5 of 6 backports differ from upstream

View the diffofdiffs report.

Open to anyone signed in to GitHub. Report expires 2027-01-28 13:41 UTC.

# Subject Backport Upstream
1 netfilter: ipset: drop logically empty buckets in mtype_del 8e8c4c260145 9862ef9ab0a1
2 netfilter: nf_tables: unconditionally bump set->nelems before insertion 25722ba01670 def602e498a4
3 tls: fix race between async notify and socket close 691df499d06f aec7961916f3
4 ipv4: free inet_opt and ireq_opt after an RCU grace period 460fe14bd22c e3f33b0a1d89
5 macvlan: fix error recovery in macvlan_common_newlink() 5f32b4dbaca2 f8db6475a836

Checked PR revision 20f314840470 against base dfcca6afde7c.

@github-actions

Copy link
Copy Markdown

JIRA PR Check Results

2 commit(s) with issues found:

Commit 691df499d06f

Summary: tls: fix race between async notify and socket close

⚠️ Warnings:

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

Commit 25722ba01670

Summary: netfilter: nf_tables: unconditionally bump set->nelems before insertion

⚠️ Warnings:

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

Summary: Checked 6 commit(s) total.

@github-actions

Copy link
Copy Markdown

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

@bmastbergen

Copy link
Copy Markdown
Collaborator

closing to let Kernel CI open an updated PR

@ciq-kernel-automation ciq-kernel-automation Bot changed the title [ciqlts8_6] Multiple patches tested (3 commits) [ciqlts8_6] Multiple patches tested (6 commits) Oct 30, 2026
@bmastbergen

Copy link
Copy Markdown
Collaborator

reopening as this has been updated by Kernel CI

@bmastbergen bmastbergen reopened this Oct 30, 2026
@bmastbergen
bmastbergen marked this pull request as ready for review October 30, 2026 18:51
@PlaidCat
PlaidCat requested a review from a team October 30, 2026 18:52
@github-actions

Copy link
Copy Markdown

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

@github-actions

Copy link
Copy Markdown

🔍 Diffofdiffs: 5 of 6 backports differ from upstream

View the diffofdiffs report.

Open to anyone signed in to GitHub. Report expires 2027-01-28 18:48 UTC.

# Subject Backport Upstream
1 netfilter: ipset: drop logically empty buckets in mtype_del 8e8c4c260145 9862ef9ab0a1
2 netfilter: nf_tables: unconditionally bump set->nelems before insertion 25722ba01670 def602e498a4
3 tls: fix race between async notify and socket close 691df499d06f aec7961916f3
4 ipv4: free inet_opt and ireq_opt after an RCU grace period 460fe14bd22c e3f33b0a1d89
5 macvlan: fix error recovery in macvlan_common_newlink() 5f32b4dbaca2 f8db6475a836

Checked PR revision 20f314840470 against base dfcca6afde7c.

@github-actions

Copy link
Copy Markdown

JIRA PR Check Results

2 commit(s) with issues found:

Commit 691df499d06f

Summary: tls: fix race between async notify and socket close

⚠️ Warnings:

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

Commit 25722ba01670

Summary: netfilter: nf_tables: unconditionally bump set->nelems before insertion

⚠️ Warnings:

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

Summary: Checked 6 commit(s) total.

@github-actions

Copy link
Copy Markdown

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

@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 October 30, 2026 19:50
PlaidCat and others added 3 commits October 30, 2026 17:57
jira VULN-66115
cve CVE-2022-49853
commit-author Chuang Wang <nashuiliang@gmail.com>
commit 23569b5

kmemleak reports memory leaks in macvlan_common_newlink, as follows:

 ip link add link eth0 name .. type macvlan mode source macaddr add
 <MAC-ADDR>

kmemleak reports:

unreferenced object 0xffff8880109bb140 (size 64):
  comm "ip", pid 284, jiffies 4294986150 (age 430.108s)
  hex dump (first 32 bytes):
    00 00 00 00 00 00 00 00 b8 aa 5a 12 80 88 ff ff  ..........Z.....
    80 1b fa 0d 80 88 ff ff 1e ff ac af c7 c1 6b 6b  ..............kk
  backtrace:
    [<ffffffff813e06a7>] kmem_cache_alloc_trace+0x1c7/0x300
    [<ffffffff81b66025>] macvlan_hash_add_source+0x45/0xc0
    [<ffffffff81b66a67>] macvlan_changelink_sources+0xd7/0x170
    [<ffffffff81b6775c>] macvlan_common_newlink+0x38c/0x5a0
    [<ffffffff81b6797e>] macvlan_newlink+0xe/0x20
    [<ffffffff81d97f8f>] __rtnl_newlink+0x7af/0xa50
    [<ffffffff81d98278>] rtnl_newlink+0x48/0x70
    ...

In the scenario where the macvlan mode is configured as 'source',
macvlan_changelink_sources() will be execured to reconfigure list of
remote source mac addresses, at the same time, if register_netdevice()
return an error, the resource generated by macvlan_changelink_sources()
is not cleaned up.

Using this patch, in the case of an error, it will execute
macvlan_flush_sources() to ensure that the resource is cleaned up.

Fixes: aa5fd0f ("driver: macvlan: Destroy new macvlan port if macvlan_common_newlink failed.")
	Signed-off-by: Chuang Wang <nashuiliang@gmail.com>
Link: https://lore.kernel.org/r/20221109090735.690500-1-nashuiliang@gmail.com
	Signed-off-by: Paolo Abeni <pabeni@redhat.com>
(cherry picked from commit 23569b5)
Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira VULN-176347
cve CVE-2026-23209
commit-author Eric Dumazet <edumazet@google.com>
commit f8db647

valis provided a nice repro to crash the kernel:

ip link add p1 type veth peer p2
ip link set address 00:00:00:00:00:20 dev p1
ip link set up dev p1
ip link set up dev p2

ip link add mv0 link p2 type macvlan mode source
ip link add invalid% link p2 type macvlan mode source macaddr add 00:00:00:00:00:20

ping -c1 -I p1 1.2.3.4

He also gave a very detailed analysis:

<quote valis>

The issue is triggered when a new macvlan link is created  with
MACVLAN_MODE_SOURCE mode and MACVLAN_MACADDR_ADD (or
MACVLAN_MACADDR_SET) parameter, lower device already has a macvlan
port and register_netdevice() called from macvlan_common_newlink()
fails (e.g. because of the invalid link name).

In this case macvlan_hash_add_source is called from
macvlan_change_sources() / macvlan_common_newlink():

This adds a reference to vlan to the port's vlan_source_hash using
macvlan_source_entry.

vlan is a pointer to the priv data of the link that is being created.

When register_netdevice() fails, the error is returned from
macvlan_newlink() to rtnl_newlink_create():

        if (ops->newlink)
                err = ops->newlink(dev, &params, extack);
        else
                err = register_netdevice(dev);
        if (err < 0) {
                free_netdev(dev);
                goto out;
        }

and free_netdev() is called, causing a kvfree() on the struct
net_device that is still referenced in the source entry attached to
the lower device's macvlan port.

Now all packets sent on the macvlan port with a matching source mac
address will trigger a use-after-free in macvlan_forward_source().

</quote valis>

With all that, my fix is to make sure we call macvlan_flush_sources()
regardless of @create value whenever "goto destroy_macvlan_port;"
path is taken.

Many thanks to valis for following up on this issue.

Fixes: aa5fd0f ("driver: macvlan: Destroy new macvlan port if macvlan_common_newlink failed.")
	Signed-off-by: Eric Dumazet <edumazet@google.com>
	Reported-by: valis <sec@valis.email>
	Reported-by: syzbot+7182fbe91e58602ec1fe@syzkaller.appspotmail.com
Closes: https: //lore.kernel.org/netdev/695fb1e8.050a0220.1c677c.039f.GAE@google.com/T/#u
	Cc: Boudewijn van der Heide <boudewijn@delta-utec.com>
Link: https://patch.msgid.link/20260129204359.632556-1-edumazet@google.com
	Signed-off-by: Jakub Kicinski <kuba@kernel.org>
(cherry picked from commit f8db647)
	Signed-off-by: Brett Mastbergen <bmastbergen@ciq.com>
…r path

jira VULN-225796
cve CVE-2026-23273
commit-author Eric Dumazet <edumazet@google.com>
commit e3f000f

valis reported that a race condition still happens after my prior patch.

macvlan_common_newlink() might have made @dev visible before
detecting an error, and its caller will directly call free_netdev(dev).

We must respect an RCU period, either in macvlan or the core networking
stack.

After adding a temporary mdelay(1000) in macvlan_forward_source_one()
to open the race window, valis repro was:

ip link add p1 type veth peer p2
ip link set address 00:00:00:00:00:20 dev p1
ip link set up dev p1
ip link set up dev p2
ip link add mv0 link p2 type macvlan mode source

(ip link add invalid% link p2 type macvlan mode source macaddr add
00:00:00:00:00:20 &) ; sleep 0.5 ; ping -c1 -I p1 1.2.3.4
PING 1.2.3.4 (1.2.3.4): 56 data bytes
RTNETLINK answers: Invalid argument

BUG: KASAN: slab-use-after-free in macvlan_forward_source
(drivers/net/macvlan.c:408 drivers/net/macvlan.c:444)
Read of size 8 at addr ffff888016bb89c0 by task e/175

CPU: 1 UID: 1000 PID: 175 Comm: e Not tainted 6.19.0-rc8+ #33 NONE
Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.14.0-2 04/01/2014
Call Trace:
<IRQ>
dump_stack_lvl (lib/dump_stack.c:123)
print_report (mm/kasan/report.c:379 mm/kasan/report.c:482)
? macvlan_forward_source (drivers/net/macvlan.c:408 drivers/net/macvlan.c:444)
kasan_report (mm/kasan/report.c:597)
? macvlan_forward_source (drivers/net/macvlan.c:408 drivers/net/macvlan.c:444)
macvlan_forward_source (drivers/net/macvlan.c:408 drivers/net/macvlan.c:444)
? tasklet_init (kernel/softirq.c:983)
macvlan_handle_frame (drivers/net/macvlan.c:501)

Allocated by task 169:
kasan_save_stack (mm/kasan/common.c:58)
kasan_save_track (./arch/x86/include/asm/current.h:25
mm/kasan/common.c:70 mm/kasan/common.c:79)
__kasan_kmalloc (mm/kasan/common.c:419)
__kvmalloc_node_noprof (./include/linux/kasan.h:263 mm/slub.c:5657
mm/slub.c:7140)
alloc_netdev_mqs (net/core/dev.c:12012)
rtnl_create_link (net/core/rtnetlink.c:3648)
rtnl_newlink (net/core/rtnetlink.c:3830 net/core/rtnetlink.c:3957
net/core/rtnetlink.c:4072)
rtnetlink_rcv_msg (net/core/rtnetlink.c:6958)
netlink_rcv_skb (net/netlink/af_netlink.c:2550)
netlink_unicast (net/netlink/af_netlink.c:1319 net/netlink/af_netlink.c:1344)
netlink_sendmsg (net/netlink/af_netlink.c:1894)
__sys_sendto (net/socket.c:727 net/socket.c:742 net/socket.c:2206)
__x64_sys_sendto (net/socket.c:2209)
do_syscall_64 (arch/x86/entry/syscall_64.c:63 arch/x86/entry/syscall_64.c:94)
entry_SYSCALL_64_after_hwframe (arch/x86/entry/entry_64.S:131)

Freed by task 169:
kasan_save_stack (mm/kasan/common.c:58)
kasan_save_track (./arch/x86/include/asm/current.h:25
mm/kasan/common.c:70 mm/kasan/common.c:79)
kasan_save_free_info (mm/kasan/generic.c:587)
__kasan_slab_free (mm/kasan/common.c:287)
kfree (mm/slub.c:6674 mm/slub.c:6882)
rtnl_newlink (net/core/rtnetlink.c:3845 net/core/rtnetlink.c:3957
net/core/rtnetlink.c:4072)
rtnetlink_rcv_msg (net/core/rtnetlink.c:6958)
netlink_rcv_skb (net/netlink/af_netlink.c:2550)
netlink_unicast (net/netlink/af_netlink.c:1319 net/netlink/af_netlink.c:1344)
netlink_sendmsg (net/netlink/af_netlink.c:1894)
__sys_sendto (net/socket.c:727 net/socket.c:742 net/socket.c:2206)
__x64_sys_sendto (net/socket.c:2209)
do_syscall_64 (arch/x86/entry/syscall_64.c:63 arch/x86/entry/syscall_64.c:94)
entry_SYSCALL_64_after_hwframe (arch/x86/entry/entry_64.S:131)

Fixes: f8db647 ("macvlan: fix error recovery in macvlan_common_newlink()")
	Signed-off-by: Eric Dumazet <edumazet@google.com>
	Reported-by: valis <sec@valis.email>
Link: https://patch.msgid.link/20260213142557.3059043-1-edumazet@google.com
	Signed-off-by: Jakub Kicinski <kuba@kernel.org>
(cherry picked from commit e3f000f)
	Signed-off-by: Brett Mastbergen <bmastbergen@ciq.com>
@PlaidCat
PlaidCat force-pushed the {bmastbergen_cves_26_10_29}_ciqlts8_6 branch from 20f3148 to 202b6db Compare October 30, 2026 22:04

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

@github-actions

Copy link
Copy Markdown

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

@github-actions

Copy link
Copy Markdown

🔍 Diffofdiffs: 4 of 7 backports differ from upstream

View the diffofdiffs report.

Open to anyone signed in to GitHub. Report expires 2027-01-28 22:04 UTC.

# Subject Backport Upstream
1 netfilter: ipset: drop logically empty buckets in mtype_del 8e8c4c260145 9862ef9ab0a1
2 netfilter: nf_tables: unconditionally bump set->nelems before insertion 25722ba01670 def602e498a4
3 tls: fix race between async notify and socket close 691df499d06f aec7961916f3
4 ipv4: free inet_opt and ireq_opt after an RCU grace period 460fe14bd22c e3f33b0a1d89

Checked PR revision 202b6db398b2 against base dfcca6afde7c.

@github-actions

Copy link
Copy Markdown

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

@PlaidCat
PlaidCat merged commit 845181a into ciqlts8_6 Oct 30, 2026
5 of 6 checks passed
@PlaidCat
PlaidCat deleted the {bmastbergen_cves_26_10_29}_ciqlts8_6 branch October 30, 2026 22:43
@ciq-kernel-automation ciq-kernel-automation Bot changed the title [ciqlts8_6] Multiple patches tested (6 commits) [ciqlts8_6] Multiple patches tested (7 commits) Oct 30, 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.

4 participants