Skip to content

Conversation

@roxanan1996
Copy link
Contributor

@roxanan1996 roxanan1996 commented Jan 15, 2026

DESCRIPTION

Clean cherry picks done automatically.
Picked up an extra one that turned out to be a CVE
"scsi: ses: Fix possible addl_desc_ptr out-of-bounds accesses"
to address some interdiff complains for
"scsi: ses: Fix possible desc_ptr out-of-bounds accesses"

COMMITS

scsi: qla2xxx: Wait for io return on terminate rport

jira VULN-155083
cve CVE-2023-53322
commit-author Quinn Tran <qutran@marvell.com>
commit fc0cba0c7be8261a1625098bd1d695077ec621c9
nbd: fix incomplete validation of ioctl arg

jira VULN-157127
cve CVE-2023-53513
commit-author Zhong Jinghua <zhongjinghua@huawei.com>
commit 55793ea54d77719a071b1ccc05a05056e3b5e009
NFSD: Avoid calling OPDESC() with ops->opnum == OP_ILLEGAL

jira VULN-158467
cve CVE-2023-53680
commit-author Chuck Lever <chuck.lever@oracle.com>
commit 804d8e0a6e54427268790472781e03bc243f4ee3
smb: client: Fix use-after-free in cifs_fill_dirent

jira VULN-70855
cve CVE-2025-38051
commit-author Wang Zhaolong <wangzhaolong1@huawei.com>
commit a7a8fe56e932a36f43e031b398aef92341bf5ea0
libceph: fix potential use-after-free in have_mon_and_osd_map()

jira VULN-170009
cve CVE-2025-68285
commit-author Ilya Dryomov <idryomov@gmail.com>
commit 076381c261374c587700b3accf410bdd2dba334e
scsi: ses: Fix possible addl_desc_ptr out-of-bounds accesses

jira VULN-159493
cve CVE-2023-7324
commit-author Tomas Henzl <thenzl@redhat.com>
commit db95d4df71cb55506425b6e4a5f8d68e3a765b63
scsi: ses: Fix possible desc_ptr out-of-bounds accesses

jira VULN-158435
cve CVE-2023-53675
commit-author Tomas Henzl <thenzl@redhat.com>
commit 801ab13d50cf3d26170ee073ea8bb4eececb76ab

TESTING

BUILD

> grep -E -B 5 -A 5 '\[TIMER\]|^Starting Build' /home/rnicolescu/ciq/kernels/lts-8.6/kernel-build-after.log
  CLEAN   scripts/selinux/genheaders
  CLEAN   scripts/selinux/mdp
  CLEAN   scripts
  CLEAN   include/config include/generated arch/x86/include/generated
  CLEAN   .config .config.old
[TIMER]{MRPROPER}: 4s
x86_64 architecture detected, copying config
'configs/kernel-x86_64.config' -> '.config'
Setting Local Version for build
CONFIG_LOCALVERSION="-rnicolescu_ciqlts8_6-43e810d4139b8"
Making olddefconfig
--
  HOSTLD  scripts/kconfig/conf
scripts/kconfig/conf  --olddefconfig Kconfig
#
# configuration written to .config
#
Starting Build
scripts/kconfig/conf  --syncconfig Kconfig
  SYSTBL  arch/x86/include/generated/asm/syscalls_32.h
  SYSHDR  arch/x86/include/generated/asm/unistd_32_ia32.h
  SYSHDR  arch/x86/include/generated/asm/unistd_64_x32.h
  SYSTBL  arch/x86/include/generated/asm/syscalls_64.h
--
  LD [M]  sound/usb/usx2y/snd-usb-usx2y.ko
  LD [M]  sound/virtio/virtio_snd.ko
  LD [M]  sound/x86/snd-hdmi-lpe-audio.ko
  LD [M]  sound/xen/snd_xen_front.ko
  LD [M]  virt/lib/irqbypass.ko
[TIMER]{BUILD}: 1449s
Making Modules
  INSTALL arch/x86/crypto/blowfish-x86_64.ko
  INSTALL arch/x86/crypto/camellia-aesni-avx-x86_64.ko
  INSTALL arch/x86/crypto/camellia-aesni-avx2.ko
  INSTALL arch/x86/crypto/camellia-x86_64.ko
--
  INSTALL sound/virtio/virtio_snd.ko
  INSTALL sound/x86/snd-hdmi-lpe-audio.ko
  INSTALL sound/xen/snd_xen_front.ko
  INSTALL virt/lib/irqbypass.ko
  DEPMOD  4.18.0-rnicolescu_ciqlts8_6-43e810d4139b8+
[TIMER]{MODULES}: 10s
Making Install
sh ./arch/x86/boot/install.sh 4.18.0-rnicolescu_ciqlts8_6-43e810d4139b8+ arch/x86/boot/bzImage \
	System.map "/boot"
[TIMER]{INSTALL}: 30s
Checking kABI
kABI check passed
Setting Default Kernel to /boot/vmlinuz-4.18.0-rnicolescu_ciqlts8_6-43e810d4139b8+ and Index to 2
The default is /boot/loader/entries/db8e05a5e32544a39ba6a1a354048e4a-4.18.0-rnicolescu_ciqlts8_6-43e810d4139b8+.conf with index 2 and kernel /boot/vmlinuz-4.18.0-rnicolescu_ciqlts8_6-43e810d4139b8+
The default is /boot/loader/entries/db8e05a5e32544a39ba6a1a354048e4a-4.18.0-rnicolescu_ciqlts8_6-43e810d4139b8+.conf with index 2 and kernel /boot/vmlinuz-4.18.0-rnicolescu_ciqlts8_6-43e810d4139b8+
Generating grub configuration file ...
done
Hopefully Grub2.0 took everything ... rebooting after time metrices
[TIMER]{MRPROPER}: 4s
[TIMER]{BUILD}: 1449s
[TIMER]{MODULES}: 10s
[TIMER]{INSTALL}: 30s
[TIMER]{TOTAL} 1498s

kernel-build-after.log

Kselftests

kselftest-after.log
kselftest-before.log

> /home/rnicolescu/ciq/kernel-tools/kselftest-diff.sh /home/rnicolescu/ciq/kernels/lts-8.6
/home/rnicolescu/ciq/kernels/lts-8.6/kselftest-after.log
230
/home/rnicolescu/ciq/kernels/lts-8.6/kselftest-before.log
231
Before: /home/rnicolescu/ciq/kernels/lts-8.6/kselftest-after.log
After: /home/rnicolescu/ciq/kernels/lts-8.6/kselftest-before.log
Diff:
+ok 24 selftests: net: reuseport_addr_any.sh

Check_kernel_commits

> python3 /home/rnicolescu/ciq/kernel-src-tree-tools/check_kernel_commits.py --repo /home/rnicolescu/ciq/kernels/lts-8.6/kernel-src-tree --pr_branch {rnicolescu}_ciqlts8_6 --base_branch origin/ciqlts8_6 --check-cves
All referenced commits exist upstream and have no Fixes: tags.

Run interdiff

> python3 /home/rnicolescu/ciq/kernel-src-tree-tools/run_interdiff.py --repo /home/rnicolescu/ciq/kernels/lts-8.6/kernel-src-tree --pr_branch {rnicolescu}_ciqlts8_6 --base_branch origin/ciqlts8_6
[DIFF] PR commit fa82fa0668079 (nbd: fix incomplete validation of ioctl arg) → upstream 55793ea54d77
Differences found:

  diff -u b/drivers/block/nbd.c b/drivers/block/nbd.c
  --- b/drivers/block/nbd.c
  +++ b/drivers/block/nbd.c
  @@ -317,9 +317,9 @@
  -	if (blk_validate_block_size(blksize))
  +	if (blksize < 512 || blksize > PAGE_SIZE || !is_power_of_2(blksize))
   		return -EINVAL;

   	if (bytesize < 0)
   		return -EINVAL;

   	nbd->config->bytesize = bytesize;
  -	nbd->config->blksize_bits = __ffs(blksize);
  +	nbd->config->blksize = blksize;

First chunk due to missing
c4318d6 ("nbd: Use blk_validate_block_size() to validate block size")

Second chunk due to missing
41e76c6 ("nbd: use shifts rather than multiplies")
These are not cves and do not interfere with this patch.

[DIFF] PR commit 5b336e1567fa9 (NFSD: Avoid calling OPDESC() with ops->opnum == OP_ILLEGAL) → upstream 804d8e0a6e54
Differences found:

  diff -u b/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c
  --- b/fs/nfsd/nfs4xdr.c
  +++ b/fs/nfsd/nfs4xdr.c
  @@ -2168,8 +2168,9 @@
   		op = &argp->ops[i];
   		op->replay = NULL;

  -		if (xdr_stream_decode_u32(argp->xdr, &op->opnum) < 0)
  -			return false;
  +		READ_BUF(4);
  +		op->opnum = be32_to_cpup(p++);
  +
   		if (nfsd4_opnum_in_range(argp, op)) {
   			op->status = nfsd4_dec_ops[op->opnum](argp, &op->u);
   			if (op->status != nfs_ok)
  @@ -2170,8 +2170,9 @@ INTERDIFF: rejected hunk from patch1, cannot diff context
   	for (i = 0; i < argp->opcnt; i++) {
   		op = &argp->ops[i];
   		op->replay = NULL;
  +		op->opdesc = NULL;

   		READ_BUF(4);
   		op->opnum = be32_to_cpup(p++);

   		if (nfsd4_opnum_in_range(argp, op)) {
  @@ -2175,6 +2176,7 @@ INTERDIFF: rejected hunk from patch1, cannot diff context
   		op->opnum = be32_to_cpup(p++);

   		if (nfsd4_opnum_in_range(argp, op)) {
  +			op->opdesc = OPDESC(op);
   			op->status = nfsd4_dec_ops[op->opnum](argp, &op->u);
   			if (op->status != nfs_ok)
   				trace_nfsd_compound_decode_err(argp->rqstp,
  @@ -2476,7 +2476,8 @@ INTERDIFF: rejected hunk from patch2, cannot diff context
   	for (i = 0; i < argp->opcnt; i++) {
   		op = &argp->ops[i];
   		op->replay = NULL;
  +		op->opdesc = NULL;

   		if (xdr_stream_decode_u32(argp->xdr, &op->opnum) < 0)
   			return false;
   		if (nfsd4_opnum_in_range(argp, op)) {
  @@ -2480,6 +2481,7 @@ INTERDIFF: rejected hunk from patch2, cannot diff context
   		if (xdr_stream_decode_u32(argp->xdr, &op->opnum) < 0)
   			return false;
   		if (nfsd4_opnum_in_range(argp, op)) {
  +			op->opdesc = OPDESC(op);
   			op->status = nfsd4_dec_ops[op->opnum](argp, &op->u);
   			if (op->status != nfs_ok)
   				trace_nfsd_compound_decode_err(argp->rqstp,

There's a lot of noise here.
There are some changes missing (I did not check every commit description)
but based on the complete diff they do not interfere with the fix of this CVE.

Run jira_pr_check

> python3 /home/rnicolescu/ciq/kernel-src-tree-tools/jira_pr_check.py --kernel-src-tree /home/rnicolescu/ciq/kernels/lts-8.6/kernel-src-tree --merge-target ciqlts8_6 --pr-branch {rnicolescu}_ciqlts8_6

## JIRA PR Check Results

✅ **No issues found!**


---
**Summary:** Checked 7 commit(s) total.

jira VULN-155083
cve CVE-2023-53322
commit-author Quinn Tran <qutran@marvell.com>
commit fc0cba0

System crash due to use after free.
Current code allows terminate_rport_io to exit before making
sure all IOs has returned. For FCP-2 device, IO's can hang
on in HW because driver has not tear down the session in FW at
first sign of cable pull. When dev_loss_tmo timer pops,
terminate_rport_io is called and upper layer is about to
free various resources. Terminate_rport_io trigger qla to do
the final cleanup, but the cleanup might not be fast enough where it
leave qla still holding on to the same resource.

Wait for IO's to return to upper layer before resources are freed.

	Cc: stable@vger.kernel.org
	Signed-off-by: Quinn Tran <qutran@marvell.com>
	Signed-off-by: Nilesh Javali <njavali@marvell.com>
Link: https://lore.kernel.org/r/20230428075339.32551-7-njavali@marvell.com
	Reviewed-by: Himanshu Madhani <himanshu.madhani@oracle.com>
	Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
(cherry picked from commit fc0cba0)
	Signed-off-by: Roxana Nicolescu <rnicolescu@ciq.com>
jira VULN-157127
cve CVE-2023-53513
commit-author Zhong Jinghua <zhongjinghua@huawei.com>
commit 55793ea

We tested and found an alarm caused by nbd_ioctl arg without verification.
The UBSAN warning calltrace like below:

UBSAN: Undefined behaviour in fs/buffer.c:1709:35
signed integer overflow:
-9223372036854775808 - 1 cannot be represented in type 'long long int'
CPU: 3 PID: 2523 Comm: syz-executor.0 Not tainted 4.19.90 #1
Hardware name: linux,dummy-virt (DT)
Call trace:
 dump_backtrace+0x0/0x3f0 arch/arm64/kernel/time.c:78
 show_stack+0x28/0x38 arch/arm64/kernel/traps.c:158
 __dump_stack lib/dump_stack.c:77 [inline]
 dump_stack+0x170/0x1dc lib/dump_stack.c:118
 ubsan_epilogue+0x18/0xb4 lib/ubsan.c:161
 handle_overflow+0x188/0x1dc lib/ubsan.c:192
 __ubsan_handle_sub_overflow+0x34/0x44 lib/ubsan.c:206
 __block_write_full_page+0x94c/0xa20 fs/buffer.c:1709
 block_write_full_page+0x1f0/0x280 fs/buffer.c:2934
 blkdev_writepage+0x34/0x40 fs/block_dev.c:607
 __writepage+0x68/0xe8 mm/page-writeback.c:2305
 write_cache_pages+0x44c/0xc70 mm/page-writeback.c:2240
 generic_writepages+0xdc/0x148 mm/page-writeback.c:2329
 blkdev_writepages+0x2c/0x38 fs/block_dev.c:2114
 do_writepages+0xd4/0x250 mm/page-writeback.c:2344

The reason for triggering this warning is __block_write_full_page()
-> i_size_read(inode) - 1 overflow.
inode->i_size is assigned in __nbd_ioctl() -> nbd_set_size() -> bytesize.
We think it is necessary to limit the size of arg to prevent errors.

Moreover, __nbd_ioctl() -> nbd_add_socket(), arg will be cast to int.
Assuming the value of arg is 0x80000000000000001) (on a 64-bit machine),
it will become 1 after the coercion, which will return unexpected results.

Fix it by adding checks to prevent passing in too large numbers.

	Signed-off-by: Zhong Jinghua <zhongjinghua@huawei.com>
	Reviewed-by: Yu Kuai <yukuai3@huawei.com>
	Reviewed-by: Josef Bacik <josef@toxicpanda.com>
Link: https://lore.kernel.org/r/20230206145805.2645671-1-zhongjinghua@huawei.com
	Signed-off-by: Jens Axboe <axboe@kernel.dk>
(cherry picked from commit 55793ea)
	Signed-off-by: Roxana Nicolescu <rnicolescu@ciq.com>
jira VULN-158467
cve CVE-2023-53680
commit-author Chuck Lever <chuck.lever@oracle.com>
commit 804d8e0

OPDESC() simply indexes into nfsd4_ops[] by the op's operation
number, without range checking that value. It assumes callers are
careful to avoid calling it with an out-of-bounds opnum value.

nfsd4_decode_compound() is not so careful, and can invoke OPDESC()
with opnum set to OP_ILLEGAL, which is 10044 -- well beyond the end
of nfsd4_ops[].

	Reported-by: Jeff Layton <jlayton@kernel.org>
Fixes: f4f9ef4 ("nfsd4: opdesc will be useful outside nfs4proc.c")
	Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
(cherry picked from commit 804d8e0)
	Signed-off-by: Roxana Nicolescu <rnicolescu@ciq.com>
jira VULN-70855
cve CVE-2025-38051
commit-author Wang Zhaolong <wangzhaolong1@huawei.com>
commit a7a8fe5

There is a race condition in the readdir concurrency process, which may
access the rsp buffer after it has been released, triggering the
following KASAN warning.

 ==================================================================
 BUG: KASAN: slab-use-after-free in cifs_fill_dirent+0xb03/0xb60 [cifs]
 Read of size 4 at addr ffff8880099b819c by task a.out/342975

 CPU: 2 UID: 0 PID: 342975 Comm: a.out Not tainted 6.15.0-rc6+ #240 PREEMPT(full)
 Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.1-2.fc37 04/01/2014
 Call Trace:
  <TASK>
  dump_stack_lvl+0x53/0x70
  print_report+0xce/0x640
  kasan_report+0xb8/0xf0
  cifs_fill_dirent+0xb03/0xb60 [cifs]
  cifs_readdir+0x12cb/0x3190 [cifs]
  iterate_dir+0x1a1/0x520
  __x64_sys_getdents+0x134/0x220
  do_syscall_64+0x4b/0x110
  entry_SYSCALL_64_after_hwframe+0x76/0x7e
 RIP: 0033:0x7f996f64b9f9
 Code: ff c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 44 00 00 48 89 f8 48 89
 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01
 f0 ff ff  0d f7 c3 0c 00 f7 d8 64 89 8
 RSP: 002b:00007f996f53de78 EFLAGS: 00000207 ORIG_RAX: 000000000000004e
 RAX: ffffffffffffffda RBX: 00007f996f53ecdc RCX: 00007f996f64b9f9
 RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000000000003
 RBP: 00007f996f53dea0 R08: 0000000000000000 R09: 0000000000000000
 R10: 0000000000000000 R11: 0000000000000207 R12: ffffffffffffff88
 R13: 0000000000000000 R14: 00007ffc8cd9a500 R15: 00007f996f51e000
  </TASK>

 Allocated by task 408:
  kasan_save_stack+0x20/0x40
  kasan_save_track+0x14/0x30
  __kasan_slab_alloc+0x6e/0x70
  kmem_cache_alloc_noprof+0x117/0x3d0
  mempool_alloc_noprof+0xf2/0x2c0
  cifs_buf_get+0x36/0x80 [cifs]
  allocate_buffers+0x1d2/0x330 [cifs]
  cifs_demultiplex_thread+0x22b/0x2690 [cifs]
  kthread+0x394/0x720
  ret_from_fork+0x34/0x70
  ret_from_fork_asm+0x1a/0x30

 Freed by task 342979:
  kasan_save_stack+0x20/0x40
  kasan_save_track+0x14/0x30
  kasan_save_free_info+0x3b/0x60
  __kasan_slab_free+0x37/0x50
  kmem_cache_free+0x2b8/0x500
  cifs_buf_release+0x3c/0x70 [cifs]
  cifs_readdir+0x1c97/0x3190 [cifs]
  iterate_dir+0x1a1/0x520
  __x64_sys_getdents64+0x134/0x220
  do_syscall_64+0x4b/0x110
  entry_SYSCALL_64_after_hwframe+0x76/0x7e

 The buggy address belongs to the object at ffff8880099b8000
  which belongs to the cache cifs_request of size 16588
 The buggy address is located 412 bytes inside of
  freed 16588-byte region [ffff8880099b8000, ffff8880099bc0cc)

 The buggy address belongs to the physical page:
 page: refcount:0 mapcount:0 mapping:0000000000000000 index:0x0 pfn:0x99b8
 head: order:3 mapcount:0 entire_mapcount:0 nr_pages_mapped:0 pincount:0
 anon flags: 0x80000000000040(head|node=0|zone=1)
 page_type: f5(slab)
 raw: 0080000000000040 ffff888001e03400 0000000000000000 dead000000000001
 raw: 0000000000000000 0000000000010001 00000000f5000000 0000000000000000
 head: 0080000000000040 ffff888001e03400 0000000000000000 dead000000000001
 head: 0000000000000000 0000000000010001 00000000f5000000 0000000000000000
 head: 0080000000000003 ffffea0000266e01 00000000ffffffff 00000000ffffffff
 head: ffffffffffffffff 0000000000000000 00000000ffffffff 0000000000000008
 page dumped because: kasan: bad access detected

 Memory state around the buggy address:
  ffff8880099b8080: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
  ffff8880099b8100: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
 >ffff8880099b8180: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
                             ^
  ffff8880099b8200: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
  ffff8880099b8280: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
 ==================================================================

POC is available in the link [1].

The problem triggering process is as follows:

Process 1                       Process 2
-----------------------------------------------------------------
cifs_readdir
  /* file->private_data == NULL */
  initiate_cifs_search
    cifsFile = kzalloc(sizeof(struct cifsFileInfo), GFP_KERNEL);
    smb2_query_dir_first ->query_dir_first()
      SMB2_query_directory
        SMB2_query_directory_init
        cifs_send_recv
        smb2_parse_query_directory
          srch_inf->ntwrk_buf_start = (char *)rsp;
          srch_inf->srch_entries_start = (char *)rsp + ...
          srch_inf->last_entry = (char *)rsp + ...
          srch_inf->smallBuf = true;
  find_cifs_entry
    /* if (cfile->srch_inf.ntwrk_buf_start) */
    cifs_small_buf_release(cfile->srch_inf // free

                        cifs_readdir  ->iterate_shared()
                          /* file->private_data != NULL */
                          find_cifs_entry
                            /* in while (...) loop */
                            smb2_query_dir_next  ->query_dir_next()
                              SMB2_query_directory
                                SMB2_query_directory_init
                                cifs_send_recv
                                  compound_send_recv
                                    smb_send_rqst
                                    __smb_send_rqst
                                      rc = -ERESTARTSYS;
                                      /* if (fatal_signal_pending()) */
                                      goto out;
                                      return rc
                            /* if (cfile->srch_inf.last_entry) */
                            cifs_save_resume_key()
                              cifs_fill_dirent // UAF
                            /* if (rc) */
                            return -ENOENT;

Fix this by ensuring the return code is checked before using pointers
from the srch_inf.

Link: https://bugzilla.kernel.org/show_bug.cgi?id=220131 [1]
Fixes: a364bc0 ("[CIFS] fix saving of resume key before CIFSFindNext")
	Cc: stable@vger.kernel.org
	Reviewed-by: Paulo Alcantara (Red Hat) <pc@manguebit.com>
	Signed-off-by: Wang Zhaolong <wangzhaolong1@huawei.com>
	Signed-off-by: Steve French <stfrench@microsoft.com>
(cherry picked from commit a7a8fe5)
	Signed-off-by: Roxana Nicolescu <rnicolescu@ciq.com>
jira VULN-170009
cve CVE-2025-68285
commit-author Ilya Dryomov <idryomov@gmail.com>
commit 076381c

The wait loop in __ceph_open_session() can race with the client
receiving a new monmap or osdmap shortly after the initial map is
received.  Both ceph_monc_handle_map() and handle_one_map() install
a new map immediately after freeing the old one

    kfree(monc->monmap);
    monc->monmap = monmap;

    ceph_osdmap_destroy(osdc->osdmap);
    osdc->osdmap = newmap;

under client->monc.mutex and client->osdc.lock respectively, but
because neither is taken in have_mon_and_osd_map() it's possible for
client->monc.monmap->epoch and client->osdc.osdmap->epoch arms in

    client->monc.monmap && client->monc.monmap->epoch &&
        client->osdc.osdmap && client->osdc.osdmap->epoch;

condition to dereference an already freed map.  This happens to be
reproducible with generic/395 and generic/397 with KASAN enabled:

    BUG: KASAN: slab-use-after-free in have_mon_and_osd_map+0x56/0x70
    Read of size 4 at addr ffff88811012d810 by task mount.ceph/13305
    CPU: 2 UID: 0 PID: 13305 Comm: mount.ceph Not tainted 6.14.0-rc2-build2+ #1266
    ...
    Call Trace:
    <TASK>
    have_mon_and_osd_map+0x56/0x70
    ceph_open_session+0x182/0x290
    ceph_get_tree+0x333/0x680
    vfs_get_tree+0x49/0x180
    do_new_mount+0x1a3/0x2d0
    path_mount+0x6dd/0x730
    do_mount+0x99/0xe0
    __do_sys_mount+0x141/0x180
    do_syscall_64+0x9f/0x100
    entry_SYSCALL_64_after_hwframe+0x76/0x7e
    </TASK>

    Allocated by task 13305:
    ceph_osdmap_alloc+0x16/0x130
    ceph_osdc_init+0x27a/0x4c0
    ceph_create_client+0x153/0x190
    create_fs_client+0x50/0x2a0
    ceph_get_tree+0xff/0x680
    vfs_get_tree+0x49/0x180
    do_new_mount+0x1a3/0x2d0
    path_mount+0x6dd/0x730
    do_mount+0x99/0xe0
    __do_sys_mount+0x141/0x180
    do_syscall_64+0x9f/0x100
    entry_SYSCALL_64_after_hwframe+0x76/0x7e

    Freed by task 9475:
    kfree+0x212/0x290
    handle_one_map+0x23c/0x3b0
    ceph_osdc_handle_map+0x3c9/0x590
    mon_dispatch+0x655/0x6f0
    ceph_con_process_message+0xc3/0xe0
    ceph_con_v1_try_read+0x614/0x760
    ceph_con_workfn+0x2de/0x650
    process_one_work+0x486/0x7c0
    process_scheduled_works+0x73/0x90
    worker_thread+0x1c8/0x2a0
    kthread+0x2ec/0x300
    ret_from_fork+0x24/0x40
    ret_from_fork_asm+0x1a/0x30

Rewrite the wait loop to check the above condition directly with
client->monc.mutex and client->osdc.lock taken as appropriate.  While
at it, improve the timeout handling (previously mount_timeout could be
exceeded in case wait_event_interruptible_timeout() slept more than
once) and access client->auth_err under client->monc.mutex to match
how it's set in finish_auth().

monmap_show() and osdmap_show() now take the respective lock before
accessing the map as well.

	Cc: stable@vger.kernel.org
	Reported-by: David Howells <dhowells@redhat.com>
	Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
	Reviewed-by: Viacheslav Dubeyko <Slava.Dubeyko@ibm.com>
(cherry picked from commit 076381c)
	Signed-off-by: Roxana Nicolescu <rnicolescu@ciq.com>
jira VULN-159493
cve CVE-2023-7324
commit-author Tomas Henzl <thenzl@redhat.com>
commit db95d4d

Sanitize possible addl_desc_ptr out-of-bounds accesses in
ses_enclosure_data_process().

Link: https://lore.kernel.org/r/20230202162451.15346-3-thenzl@redhat.com
	Cc: stable@vger.kernel.org
	Signed-off-by: Tomas Henzl <thenzl@redhat.com>
	Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
(cherry picked from commit db95d4d)
	Signed-off-by: Roxana Nicolescu <rnicolescu@ciq.com>
jira VULN-158435
cve CVE-2023-53675
commit-author Tomas Henzl <thenzl@redhat.com>
commit 801ab13

Sanitize possible desc_ptr out-of-bounds accesses in
ses_enclosure_data_process().

Link: https://lore.kernel.org/r/20230202162451.15346-4-thenzl@redhat.com
	Cc: stable@vger.kernel.org
	Signed-off-by: Tomas Henzl <thenzl@redhat.com>
	Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
(cherry picked from commit 801ab13)
	Signed-off-by: Roxana Nicolescu <rnicolescu@ciq.com>
@roxanan1996 roxanan1996 requested a review from a team January 15, 2026 12:56
@github-actions
Copy link

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

@github-actions
Copy link

🔍 Interdiff Analysis

  • ⚠️ PR commit fa82fa066807 (nbd: fix incomplete validation of ioctl arg) → upstream 55793ea54d77
    Differences found:
diff -u b/drivers/block/nbd.c b/drivers/block/nbd.c
--- b/drivers/block/nbd.c
+++ b/drivers/block/nbd.c
@@ -317,9 +317,9 @@
-	if (blk_validate_block_size(blksize))
+	if (blksize < 512 || blksize > PAGE_SIZE || !is_power_of_2(blksize))
 		return -EINVAL;
 
 	if (bytesize < 0)
 		return -EINVAL;
 
 	nbd->config->bytesize = bytesize;
-	nbd->config->blksize_bits = __ffs(blksize);
+	nbd->config->blksize = blksize;
  • ⚠️ PR commit 5b336e1567fa (NFSD: Avoid calling OPDESC() with ops->opnum == OP_ILLEGAL) → upstream 804d8e0a6e54
    Differences found:
diff -u b/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c
--- b/fs/nfsd/nfs4xdr.c
+++ b/fs/nfsd/nfs4xdr.c
@@ -2168,8 +2168,9 @@
 		op = &argp->ops[i];
 		op->replay = NULL;
 
-		if (xdr_stream_decode_u32(argp->xdr, &op->opnum) < 0)
-			return false;
+		READ_BUF(4);
+		op->opnum = be32_to_cpup(p++);
+
 		if (nfsd4_opnum_in_range(argp, op)) {
 			op->status = nfsd4_dec_ops[op->opnum](argp, &op->u);
 			if (op->status != nfs_ok)
@@ -2170,8 +2170,9 @@ INTERDIFF: rejected hunk from patch1, cannot diff context
 	for (i = 0; i < argp->opcnt; i++) {
 		op = &argp->ops[i];
 		op->replay = NULL;
+		op->opdesc = NULL;
 
 		READ_BUF(4);
 		op->opnum = be32_to_cpup(p++);
 
 		if (nfsd4_opnum_in_range(argp, op)) {
@@ -2175,6 +2176,7 @@ INTERDIFF: rejected hunk from patch1, cannot diff context
 		op->opnum = be32_to_cpup(p++);
 
 		if (nfsd4_opnum_in_range(argp, op)) {
+			op->opdesc = OPDESC(op);
 			op->status = nfsd4_dec_ops[op->opnum](argp, &op->u);
 			if (op->status != nfs_ok)
 				trace_nfsd_compound_decode_err(argp->rqstp,
@@ -2476,7 +2476,8 @@ INTERDIFF: rejected hunk from patch2, cannot diff context
 	for (i = 0; i < argp->opcnt; i++) {
 		op = &argp->ops[i];
 		op->replay = NULL;
+		op->opdesc = NULL;
 
 		if (xdr_stream_decode_u32(argp->xdr, &op->opnum) < 0)
 			return false;
 		if (nfsd4_opnum_in_range(argp, op)) {
@@ -2480,6 +2481,7 @@ INTERDIFF: rejected hunk from patch2, cannot diff context
 		if (xdr_stream_decode_u32(argp->xdr, &op->opnum) < 0)
 			return false;
 		if (nfsd4_opnum_in_range(argp, op)) {
+			op->opdesc = OPDESC(op);
 			op->status = nfsd4_dec_ops[op->opnum](argp, &op->u);
 			if (op->status != nfs_ok)
 				trace_nfsd_compound_decode_err(argp->rqstp,

This is an automated interdiff check for backported commits.

@github-actions
Copy link

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

Copy link
Collaborator

@bmastbergen bmastbergen left a comment

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 January 15, 2026 16:05
@roxanan1996 roxanan1996 merged commit d07a8bb into ciqlts8_6 Jan 16, 2026
3 checks passed
@roxanan1996 roxanan1996 deleted the {rnicolescu}_ciqlts8_6 branch January 16, 2026 10:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

4 participants