{
  "cveId": "CVE-2025-38407",
  "url": "https://patchblox.com/security/cve/CVE-2025-38407",
  "summary": "CVE-2025-38407 is fixed in linux on 1 platform, first by DEBIAN-CVE-2025-38407, released July 25, 2025. It is not reported as exploited. Patch Radar priority: Routine.",
  "title": "linux: In the Linux kernel, the following vulnerability has been resolved:  riscv: cpu_ops_sbi: Use static array for boot_da...",
  "description": "In the Linux kernel, the following vulnerability has been resolved:  riscv: cpu_ops_sbi: Use static array for boot_data  Since commit 6b9f29b81b15 (\u0022riscv: Enable pcpu page first chunk allocator\u0022), if NUMA is enabled, the page percpu allocator may be used on very sparse configurations, or when requested on boot with percpu_alloc=page.  In that case, percpu data gets put in the vmalloc area. However, sbi_hsm_hart_start() needs the physical address of a sbi_hart_boot_data, and simply assumes that __pa() would work. This causes the just started hart to immediately access an invalid address and hang.  Fortunately, struct sbi_hart_boot_data is not too large, so we can simply allocate an array for boot_data statically, putting it in the kernel image.  This fixes NUMA=y SMP boot on Sophgo SG2042.  To reproduce on QEMU: Set CONFIG_NUMA=y and CONFIG_DEBUG_VIRTUAL=y, then run with:    qemu-system-riscv64 -M virt -smp 2 -nographic \\     -kernel arch/riscv/boot/Image \\     -append \u0022percpu_alloc=page\u0022  Kernel output:  [    0.000000] Booting Linux on hartid 0 [    0.000000] Linux version 6.16.0-rc1 (dram@sakuya) (riscv64-unknown-linux-gnu-gcc (GCC) 14.2.1 20250322, GNU ld (GNU Binutils) 2.44) #11 SMP Tue Jun 24 14:56:22 CST 2025 ... [    0.000000] percpu: 28 4K pages/cpu s85784 r8192 d20712 ... [    0.083192] smp: Bringing up secondary CPUs ... [    0.086722] ------------[ cut here ]------------ [    0.086849] virt_to_phys used for non-linear address: (____ptrval____) (0xff2000000001d080) [    0.088001] WARNING: CPU: 0 PID: 1 at arch/riscv/mm/physaddr.c:14 __virt_to_phys\u002B0xae/0xe8 [    0.088376] Modules linked in: [    0.088656] CPU: 0 UID: 0 PID: 1 Comm: swapper/0 Not tainted 6.16.0-rc1 #11 NONE [    0.088833] Hardware name: riscv-virtio,qemu (DT) [    0.088948] epc : __virt_to_phys\u002B0xae/0xe8 [    0.089001]  ra : __virt_to_phys\u002B0xae/0xe8 [    0.089037] epc : ffffffff80021eaa ra : ffffffff80021eaa sp : ff2000000004bbc0 [    0.089057]  gp : ffffffff817f49c0 tp : ff60000001d60000 t0 : 5f6f745f74726976 [    0.089076]  t1 : 0000000000000076 t2 : 705f6f745f747269 s0 : ff2000000004bbe0 [    0.089095]  s1 : ff2000000001d080 a0 : 0000000000000000 a1 : 0000000000000000 [    0.089113]  a2 : 0000000000000000 a3 : 0000000000000000 a4 : 0000000000000000 [    0.089131]  a5 : 0000000000000000 a6 : 0000000000000000 a7 : 0000000000000000 [    0.089155]  s2 : ffffffff8130dc00 s3 : 0000000000000001 s4 : 0000000000000001 [    0.089174]  s5 : ffffffff8185eff8 s6 : ff2000007f1eb000 s7 : ffffffff8002a2ec [    0.089193]  s8 : 0000000000000001 s9 : 0000000000000001 s10: 0000000000000000 [    0.089211]  s11: 0000000000000000 t3 : ffffffff8180a9f7 t4 : ffffffff8180a9f7 [    0.089960]  t5 : ffffffff8180a9f8 t6 : ff2000000004b9d8 [    0.089984] status: 0000000200000120 badaddr: ffffffff80021eaa cause: 0000000000000003 [    0.090101] [\u003Cffffffff80021eaa\u003E] __virt_to_phys\u002B0xae/0xe8 [    0.090228] [\u003Cffffffff8001d796\u003E] sbi_cpu_start\u002B0x6e/0xe8 [    0.090247] [\u003Cffffffff8001a5da\u003E] __cpu_up\u002B0x1e/0x8c [    0.090260] [\u003Cffffffff8002a32e\u003E] bringup_cpu\u002B0x42/0x258 [    0.090277] [\u003Cffffffff8002914c\u003E] cpuhp_invoke_callback\u002B0xe0/0x40c [    0.090292] [\u003Cffffffff800294e0\u003E] __cpuhp_invoke_callback_range\u002B0x68/0xfc [    0.090320] [\u003Cffffffff8002a96a\u003E] _cpu_up\u002B0x11a/0x244 [    0.090334] [\u003Cffffffff8002aae6\u003E] cpu_up\u002B0x52/0x90 [    0.090384] [\u003Cffffffff80c09350\u003E] bringup_nonboot_cpus\u002B0x78/0x118 [    0.090411] [\u003Cffffffff80c11060\u003E] smp_init\u002B0x34/0xb8 [    0.090425] [\u003Cffffffff80c01220\u003E] kernel_init_freeable\u002B0x148/0x2e4 [    0.090442] [\u003Cffffffff80b83802\u003E] kernel_init\u002B0x1e/0x14c [    0.090455] [\u003Cffffffff800124ca\u003E] ret_from_fork_kernel\u002B0xe/0xf0 [    0.090471] [\u003Cffffffff80b8d9c2\u003E] ret_from_fork_kernel_asm\u002B0x16/0x18 [    0.090560] ---[ end trace 0000000000000000 ]--- [    1.179875] CPU1: failed to come online [    1.190324] smp: Brought up 1 node, 1 CPU",
  "published": "2025-07-25T14:15:32Z",
  "severity": "medium",
  "cvss": 5.5,
  "cvssVector": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H",
  "epss": 0.00187,
  "epssPercentile": 0.0831,
  "priority": "Routine",
  "priorityTier": 4,
  "exploited": false,
  "vendorExploited": false,
  "disclosed": false,
  "fixes": [
    {
      "platform": "linux",
      "product": "linux",
      "release": "Debian 13.5 (trixie)",
      "fixedVersion": "6.12.37-1",
      "fix": "DEBIAN-CVE-2025-38407",
      "url": "https://patchblox.com/security/fix/linux/debian-cve-2025-38407",
      "released": "2025-07-25T14:15:32Z"
    },
    {
      "platform": "linux",
      "product": "linux",
      "release": "Debian 14",
      "fixedVersion": "6.12.37-1",
      "fix": "DEBIAN-CVE-2025-38407",
      "url": "https://patchblox.com/security/fix/linux/debian-cve-2025-38407",
      "released": "2025-07-25T14:15:32Z"
    }
  ],
  "noFixYet": [],
  "dataAsOf": "2026-11-08T13:06:02Z",
  "attribution": {
    "text": "Data: Patchblox Patch Radar",
    "url": "https://patchblox.com/security/patch-radar",
    "terms": "https://patchblox.com/security/patch-radar/use-the-data"
  }
}