CVE-2026-31399
Description
In the Linux kernel, the following vulnerability has been resolved: nvdimm/bus: Fix potential use after free in asynchronous initialization Dingisoul with KASAN reports a use after free if device_add() fails in nd_async_device_register(). Commit b6eae0f61db2 ("libnvdimm: Hold reference on parent while scheduling async init") correctly added a reference on the parent device to be held until asynchronous initialization was complete. However, if device_add() results in an allocation failure the ref count of the device drops to 0 prior to the parent pointer being accessed. Thus resulting in use after free. The bug bot AI correctly identified the fix. Save a reference to the parent pointer to be used to drop the parent reference regardless of the outcome of device_add().
CVSS Details
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H Threat Intelligence
Weaknesses 1
Affected Products 15
| Vendor | Product | Version | Range |
|---|---|---|---|
| linux | linux_kernel | * | ≥4.4.164 – <4.5 |
| linux | linux_kernel | * | ≥4.9.137 – <4.10 |
| linux | linux_kernel | * | ≥4.14.81 – <4.15 |
| linux | linux_kernel | * | ≥4.18.19 – <4.19 |
| linux | linux_kernel | * | ≥4.19.2 – <5.10.253 |
| linux | linux_kernel | * | ≥5.11 – <5.15.203 |
| linux | linux_kernel | * | ≥5.16 – <6.1.167 |
| linux | linux_kernel | * | ≥6.2 – <6.6.130 |
| linux | linux_kernel | * | ≥6.7 – <6.12.78 |
| linux | linux_kernel | * | ≥6.13 – <6.18.20 |
| linux | linux_kernel | * | ≥6.19 – <6.19.10 |
| linux | linux_kernel | 7.0 | any |
| linux | linux_kernel | 7.0 | any |
| linux | linux_kernel | 7.0 | any |
| linux | linux_kernel | 7.0 | any |
References 8
- git.kernel.org https://git.kernel.org/stable/c/2c638259ad750833fd46a0cf57672a618542d84c
- git.kernel.org https://git.kernel.org/stable/c/6fc36c2a925ceaba203eb13d75a8f0879a2c121b
- git.kernel.org https://git.kernel.org/stable/c/84af19855d1abdee3c9d57c0684e2868e391793c
- git.kernel.org https://git.kernel.org/stable/c/9a0fb16ba5b372465a3a1ecd761c6fa911a4ab4d
- git.kernel.org https://git.kernel.org/stable/c/a226e5b49e5fe8c98b14f8507de670189d191348
- git.kernel.org https://git.kernel.org/stable/c/a36cf138500e56f50db9f9a33222df6969b38326
- git.kernel.org https://git.kernel.org/stable/c/a8aec14230322ed8f1e8042b6d656c1631d41163
- git.kernel.org https://git.kernel.org/stable/c/e48bf8f1d2b12c1c5ba1f609edbd4cde5dadc20e
Remediation
- git.kernel.org https://git.kernel.org/stable/c/2c638259ad750833fd46a0cf57672a618542d84c
- git.kernel.org https://git.kernel.org/stable/c/6fc36c2a925ceaba203eb13d75a8f0879a2c121b
- git.kernel.org https://git.kernel.org/stable/c/84af19855d1abdee3c9d57c0684e2868e391793c
- git.kernel.org https://git.kernel.org/stable/c/9a0fb16ba5b372465a3a1ecd761c6fa911a4ab4d
- git.kernel.org https://git.kernel.org/stable/c/a226e5b49e5fe8c98b14f8507de670189d191348
- git.kernel.org https://git.kernel.org/stable/c/a36cf138500e56f50db9f9a33222df6969b38326
- git.kernel.org https://git.kernel.org/stable/c/a8aec14230322ed8f1e8042b6d656c1631d41163
- git.kernel.org https://git.kernel.org/stable/c/e48bf8f1d2b12c1c5ba1f609edbd4cde5dadc20e