Skip to content

[ciqlts9_2] Multiple patches tested (6 commits) - #1761

Open
ciq-kernel-automation[bot] wants to merge 6 commits into
ciqlts9_2from
{ciq_kernel_automation-41784704533}_ciqlts9_2
Open

ciq-kernel-automation[bot] wants to merge 6 commits into
ciqlts9_2from
{ciq_kernel_automation-41784704533}_ciqlts9_2

Conversation

@ciq-kernel-automation

Copy link
Copy Markdown

Summary

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

Commit Message(s)

ipv6: validate extension header length before copying to cmsg

jira VULN-193285
cve CVE-2026-63920
commit-author Qi Tang <tpluszz77@gmail.com>
commit dd433671fef381fdaf7b530c631e6b782d66e224
mac802154: llsec: add skb_cow_data() before in-place crypto

jira VULN-195748
cve CVE-2026-63831
commit-author Doruk Tan Ozturk <doruk@0sec.ai>
commit 84a04eb5b210643bd67aab81ff805d32f62aa865
selinux: check connect-related permissions on TCP Fast Open

jira VULN-201499
cve CVE-2026-72243
commit-author Stephen Smalley <stephen.smalley.work@gmail.com>
commit 44c74d27d1b9aaa99fa8a83640c1223575262b80
ALSA: usx2y: bound the hwdep mmap fault offset

jira VULN-204839
cve CVE-2026-74641
commit-author Baul Lee <baul.lee@xbow.com>
commit 2ca1eea3cd17930daffe9e429a7c89232036ec24
scsi: qla2xxx: Bound rsp_info_len to avoid OOB sense-data read

jira VULN-212443
cve CVE-2026-89846
commit-author Nilesh Javali <njavali@marvell.com>
commit ca6d880d6c70cb7946e7b3e05d7285f271b6d99e
ipv6: fix use-after-free in ip6_finish_output2()

jira VULN-216871
cve CVE-2026-80792
commit-author Luxiao Xu <rakukuip@gmail.com>
commit d0d48d999b0eee6bb176ef4e39d9be868fa80f7e

Test Results

✅ Build Stage

Architecture Build Time Total Time
x86_64 23m 16s 24m 7s
aarch64 13m 11s 13m 47s

✅ Boot Verification

✅ Kernel Selftests

Architecture Passed Failed Compared Against Status
x86_64 174 24 ciqlts9_2 ✅ No regressions
aarch64 139 29 ciqlts9_2 ✅ No regressions

✅ LTP Results

Architecture Passed Failed Compared Against Status
x86_64 1496 7 ciqlts9_2 ✅ No regressions
aarch64 1464 11 ciqlts9_2 ❌ 1 regressions

aarch64 regressions:

  • fcntl14_64 (PASS -> FAIL)

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

CIQ Kernel Automation added 6 commits November 4, 2026 06:43
jira VULN-193285
cve CVE-2026-63920
commit-author Qi Tang <tpluszz77@gmail.com>
commit dd43367

ip6_datagram_recv_specific_ctl() builds IPV6_{HOPOPTS,DSTOPTS,RTHDR}
cmsgs (and their IPV6_2292* legacy counterparts) by trusting the
on-wire hdrlen byte (ptr[1]) when computing the put_cmsg() length.
The length was validated only at parse time (ipv6_parse_hopopts(),
etc.).  An nftables payload-write expression can rewrite hdrlen after
parsing and before the skb reaches recvmsg; the write itself is
in-bounds but put_cmsg() then reads up to ((hdrlen+1) << 3) = 2040
bytes from an 8-byte header.  nftables is reachable from an
unprivileged user namespace, so this is an unprivileged
slab-out-of-bounds read:

  BUG: KASAN: slab-out-of-bounds in put_cmsg+0x3ac/0x540
   put_cmsg+0x3ac/0x540
   udpv6_recvmsg+0xca0/0x1250
   sock_recvmsg+0xdf/0x190
   ____sys_recvmsg+0x1b1/0x620

Add ipv6_get_exthdr_len() which validates that at least two bytes
are accessible before reading the hdrlen field, then checks the
computed length against skb_tail_pointer(skb), returning 0 on
failure.  Extension headers are kept in the linear skb area by
pskb_may_pull() during input, so skb_tail_pointer() is the correct
bound.

Use ipv6_get_exthdr_len() at all non-AH call sites: the five
standalone cmsg blocks (HbH, 2292HbH, 2292DSTOPTS x2, 2292RTHDR)
and the three standard cases in the extension-header walk loop
(DSTOPTS, ROUTING, default).  AH retains an inline bounds check
because its length formula differs ((ptr[1]+2)<<2).

The walk loop also gets a pre-read bounds check at the top to
validate ptr before any case accesses ptr[0] or ptr[1].

When the walk loop detects a corrupted header, return from the
function instead of continuing to process later socket options.

	Cc: stable@vger.kernel.org
Fixes: 1da177e ("Linux-2.6.12-rc2")
	Signed-off-by: Qi Tang <tpluszz77@gmail.com>
	Reviewed-by: Willem de Bruijn <willemb@google.com>
Link: https://patch.msgid.link/20260523143245.2281415-1-tpluszz77@gmail.com
	Signed-off-by: Jakub Kicinski <kuba@kernel.org>
(cherry picked from commit dd43367)
Signed-off-by: CIQ Kernel Automation <ciq_kernel_automation@ciq.com>
jira VULN-195748
cve CVE-2026-63831
commit-author Doruk Tan Ozturk <doruk@0sec.ai>
commit 84a04eb

llsec_do_encrypt_unauth(), llsec_do_encrypt_auth(),
llsec_do_decrypt_unauth(), and llsec_do_decrypt_auth() all perform
in-place cryptographic transformations on skb data.  They build a
scatterlist with sg_init_one() pointing into the skb's linear data area
and then pass the same scatterlist as both src and dst to the crypto API
(e.g. crypto_skcipher_encrypt/decrypt, crypto_aead_encrypt/decrypt).

On the RX path, __ieee802154_rx_handle_packet() clones the received skb
before handing it to each subscriber via ieee802154_subif_frame().  The
cloned skb shares the same underlying data buffer via reference
counting.  When llsec_do_decrypt() subsequently modifies this shared
buffer in place, it corrupts data that other clones -- potentially
belonging to other sockets or subsystems -- still reference.

On the TX path, similar data sharing can occur when an skb's head has
been cloned (skb_cloned() returns true).

The fix is to call skb_cow_data() before performing any in-place crypto
operation.  skb_cow_data() ensures that the skb's data area is not
shared: if the skb head is cloned or the data spans multiple fragments,
it copies the data into a private buffer that can be safely modified in
place.  This is the same pattern used by:

  - ESP (net/ipv4/esp4.c, net/ipv6/esp6.c)
  - MACsec (drivers/net/macsec.c)
  - WireGuard (drivers/net/wireguard/receive.c)
  - TIPC (net/tipc/crypto.c)

Without this guard, in-place crypto on shared skb data leads to:
  - Silent data corruption of other skb clones
  - Use-after-free when the crypto API scatterwalk writes through a
    page that has already been freed by another clone's kfree_skb()
  - Kernel crashes under concurrent 802.15.4 traffic with security
    enabled (KASAN/KMSAN reports slab-use-after-free)

Found by 0sec (https://0sec.ai) using automated source analysis.

Fixes: 4c14a2f ("mac802154: add llsec decryption method")
Fixes: 03556e4 ("mac802154: add llsec encryption method")
	Cc: stable@vger.kernel.org
	Reported-by: Doruk Tan Ozturk <doruk@0sec.ai>
Closes: https://lore.kernel.org/linux-wpan/20260525161806.96158-1-doruk@0sec.ai/
	Reviewed-by: Alexander Lobakin <aleksander.lobakin@intel.com>
	Signed-off-by: Doruk Tan Ozturk <doruk@0sec.ai>
Closes: <link to your mail on lore>
Link: https://lore.kernel.org/20260526183726.56100-1-doruk@0sec.ai
	Signed-off-by: Stefan Schmidt <stefan@datenfreihafen.org>
(cherry picked from commit 84a04eb)
Signed-off-by: CIQ Kernel Automation <ciq_kernel_automation@ciq.com>
jira VULN-201499
cve CVE-2026-72243
commit-author Stephen Smalley <stephen.smalley.work@gmail.com>
commit 44c74d2

Similar to Landlock, SELinux was not updated when TCP Fast Open
support was introduced to ensure connect-related permissions are
checked when using TCP Fast Open. Update its socket_sendmsg() hook to
call selinux_socket_connect() when MSG_FASTOPEN is passed.

	Cc: stable@vger.kernel.org
Link: https://lore.kernel.org/linux-security-module/20260616201615.275032-1-hexlabsecurity@proton.me/
Link: https://lore.kernel.org/linux-security-module/20260617180526.15627-2-matthieu@buffet.re/
	Reported-by: Bryam Vargas <hexlabsecurity@proton.me>
	Reported-by: Matthieu Buffet <matthieu@buffet.re>
	Reported-by: Mikhail Ivanov <ivanov.mikhail1@huawei-partners.com>
	Signed-off-by: Stephen Smalley <stephen.smalley.work@gmail.com>
	Tested-by: Bryam Vargas <hexlabsecurity@proton.me>
	Signed-off-by: Paul Moore <paul@paul-moore.com>
(cherry picked from commit 44c74d2)
Signed-off-by: CIQ Kernel Automation <ciq_kernel_automation@ciq.com>
jira VULN-204839
cve CVE-2026-74641
commit-author Baul Lee <baul.lee@xbow.com>
commit 2ca1eea

snd_us428ctls_vm_fault() turns the faulting page offset into a kernel
address with no bound of any kind:

	offset = vmf->pgoff << PAGE_SHIFT;
	vaddr = (char *)(...)->us428ctls_sharedmem + offset;
	page = virt_to_page(vaddr);
	get_page(page);
	vmf->page = page;

	return 0;

snd_us428ctls_mmap() checks only the length of the mapping, never the
offset, and us428ctls_sharedmem is a single page from
alloc_pages_exact().  For a character device file_mmap_size_max()
returns ULONG_MAX, so the mm layer imposes no ceiling either.  Every page
offset above zero resolves to a struct page outside the object, and the
handler installs it into the caller's address space read-write; the vma
is not marked read-only.

The caller picks the page frame with a single mmap() argument and gets
read-write access to a page of kernel memory it does not own; an offset
that lands in an unpopulated vmemmap region oopses instead.

A process that can open the hwdep node of an attached US-X2Y reaches
this after loading the FPGA image through the same node; no capability
check is involved.

On 7.2.0-rc5 (arm64), mmap() with a large offset:

  Unable to handle kernel paging request at virtual address fffffdffc45d5ac8
  pc : snd_us428ctls_vm_fault+0x68/0x140 [snd_usb_usx2y]
  Call trace:
   snd_us428ctls_vm_fault+0x68/0x140 [snd_usb_usx2y]
   __do_fault
   __handle_mm_fault
   handle_mm_fault
   el0_da

Reject any offset outside the shared region.  The pcm hwdep handler in
usx2yhwdeppcm.c computes its address the same way and needs the same
bound.

Discovered by XBOW, triaged by Baul Lee <baul.lee@xbow.com>

Fixes: 1da177e ("Linux-2.6.12-rc2")
	Reported-by: Federico Kirschbaum <federico.kirschbaum@xbow.com>
	Reported-by: Baul Lee <baul.lee@xbow.com>
	Cc: stable@vger.kernel.org
	Signed-off-by: Baul Lee <baul.lee@xbow.com>
Link: https://patch.msgid.link/20260805013445.38283-1-baul.lee@xbow.com
	Signed-off-by: Takashi Iwai <tiwai@suse.de>
(cherry picked from commit 2ca1eea)
Signed-off-by: CIQ Kernel Automation <ciq_kernel_automation@ciq.com>
jira VULN-212443
cve CVE-2026-89846
commit-author Nilesh Javali <njavali@marvell.com>
commit ca6d880

In qla2x00_status_entry(), the FWI2 status path advances sense_data and
shrinks par_sense_len by rsp_info_len:

	if (IS_FWI2_CAPABLE(ha)) {
		sense_data += rsp_info_len;
		par_sense_len -= rsp_info_len;
	}

rsp_info_len is a 32-bit value taken directly from the target's FCP
response (sf.rsp_data_len), while par_sense_len is the IOCB data area
size (28 bytes for 24xx, 60 bytes for 29xx). A hostile or buggy target
reporting an rsp_info_len larger than par_sense_len makes the unsigned
subtraction underflow to a huge value and advances sense_data out of
bounds.

The underflowed par_sense_len then defeats the cap in
qla2x00_handle_sense():

	if (sense_len > par_sense_len)
		sense_len = par_sense_len;
	memcpy(cp->sense_buffer, sense_data, sense_len);

so the memcpy reads up to SCSI_SENSE_BUFFERSIZE bytes from the
out-of-bounds sense_data pointer, leaking adjacent response-ring/heap
memory into the command's sense buffer.

Clamp rsp_info_len to par_sense_len before the subtraction so
par_sense_len can never underflow and sense_data stays within the IOCB
data area. The fix sits before the comp_status switch, covering both
qla2x00_handle_sense() call sites.

Fixes: 5544213 ("[SCSI] qla2xxx: Correct extended sense-data handling.")
	Cc: stable@vger.kernel.org
	Reported-by: Sashiko <sashiko-dev@google.com>
	Signed-off-by: Nilesh Javali <njavali@marvell.com>
Link: https://patch.msgid.link/20260730155838.2119230-16-njavali@marvell.com
	Signed-off-by: Martin K. Petersen (Oracle) <mkp@kernel.org>
(cherry picked from commit ca6d880)
Signed-off-by: CIQ Kernel Automation <ciq_kernel_automation@ciq.com>
jira VULN-216871
cve CVE-2026-80792
commit-author Luxiao Xu <rakukuip@gmail.com>
commit d0d48d9

ip6_finish_output2() caches a pointer to the IPv6 destination
address (daddr) before invoking lwtunnel_xmit().  The LWT-BPF
transmit path or other encapsulation operations within
lwtunnel_xmit() can reallocate the skb head, freeing the memory
that daddr points to.  When lwtunnel_xmit() returns
LWTUNNEL_XMIT_CONTINUE, the function continues to use the stale
daddr pointer to compute the nexthop and to look up or create the
neighbour entry.  This results in a use-after-free read, which can
leak sensitive kernel data, pollute the neighbour table with
arbitrary values, misdirect traffic, or crash the system.

Fix this by re-fetching the IPv6 header and the destination
address pointer after lwtunnel_xmit() returns
LWTUNNEL_XMIT_CONTINUE, ensuring that the subsequent nexthop
computation and neighbour lookup operate on valid memory.

Fixes: e415ed3 ("ipv6: use skb_expand_head in ip6_finish_output2")
	Cc: stable@vger.kernel.org
	Reported-by: Vega <vega@nebusec.ai>
	Signed-off-by: Luxiao Xu <rakukuip@gmail.com>
	Signed-off-by: Ren Wei <weir@nebusec.ai>
	Reviewed-by: Vadim Fedorenko <vadim.fedorenko@linux.dev>
	Reviewed-by: Ido Schimmel <idosch@nvidia.com>
Link: https://patch.msgid.link/4aa3f53bc44e79572c6dd2340ec7b68ef1a3d87d.1786516730.git.rakukuip@gmail.com
	Signed-off-by: Jakub Kicinski <kuba@kernel.org>
(cherry picked from commit d0d48d9)
Signed-off-by: CIQ Kernel Automation <ciq_kernel_automation@ciq.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 Nov 4, 2026
@github-actions

github-actions Bot commented Nov 4, 2026

Copy link
Copy Markdown

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

@github-actions

github-actions Bot commented Nov 4, 2026

Copy link
Copy Markdown

🔍 Diffofdiffs: 2 of 6 backports differ from upstream

View the diffofdiffs report.

Open to anyone signed in to GitHub. Report expires 2027-02-02 11:49 UTC.

# Subject Backport Upstream
1 ALSA: usx2y: bound the hwdep mmap fault offset 808dbbfd7c1b 2ca1eea3cd17
2 ipv6: fix use-after-free in ip6_finish_output2() 64a3acdbf9e2 d0d48d999b0e

Checked PR revision 64a3acdbf9e2 against base 10996d605032.

@github-actions

github-actions Bot commented Nov 4, 2026

Copy link
Copy Markdown

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

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.

0 participants