CVE-2023-54323 (GCVE-0-2023-54323)
Vulnerability from cvelistv5 – Published: 2025-12-30 12:37 – Updated: 2025-12-30 12:37
VLAI?
Title
cxl/pmem: Fix nvdimm registration races
Summary
In the Linux kernel, the following vulnerability has been resolved:
cxl/pmem: Fix nvdimm registration races
A loop of the form:
while true; do modprobe cxl_pci; modprobe -r cxl_pci; done
...fails with the following crash signature:
BUG: kernel NULL pointer dereference, address: 0000000000000040
[..]
RIP: 0010:cxl_internal_send_cmd+0x5/0xb0 [cxl_core]
[..]
Call Trace:
<TASK>
cxl_pmem_ctl+0x121/0x240 [cxl_pmem]
nvdimm_get_config_data+0xd6/0x1a0 [libnvdimm]
nd_label_data_init+0x135/0x7e0 [libnvdimm]
nvdimm_probe+0xd6/0x1c0 [libnvdimm]
nvdimm_bus_probe+0x7a/0x1e0 [libnvdimm]
really_probe+0xde/0x380
__driver_probe_device+0x78/0x170
driver_probe_device+0x1f/0x90
__device_attach_driver+0x85/0x110
bus_for_each_drv+0x7d/0xc0
__device_attach+0xb4/0x1e0
bus_probe_device+0x9f/0xc0
device_add+0x445/0x9c0
nd_async_device_register+0xe/0x40 [libnvdimm]
async_run_entry_fn+0x30/0x130
...namely that the bottom half of async nvdimm device registration runs
after the CXL has already torn down the context that cxl_pmem_ctl()
needs. Unlike the ACPI NFIT case that benefits from launching multiple
nvdimm device registrations in parallel from those listed in the table,
CXL is already marked PROBE_PREFER_ASYNCHRONOUS. So provide for a
synchronous registration path to preclude this scenario.
Severity ?
No CVSS data available.
Assigner
References
Impacted products
| Vendor | Product | Version | ||
|---|---|---|---|---|
| Linux | Linux |
Affected:
21083f51521fb0f60dbac591f175c3ed48435af4 , < a371788d4f4a7f59eecd22644331d599979fd283
(git)
Affected: 21083f51521fb0f60dbac591f175c3ed48435af4 , < 18c65667fa9104780eeaa0dc1bc240f0c2094772 (git) Affected: 21083f51521fb0f60dbac591f175c3ed48435af4 , < f57aec443c24d2e8e1f3b5b4856aea12ddda4254 (git) |
||
{
"containers": {
"cna": {
"affected": [
{
"defaultStatus": "unaffected",
"product": "Linux",
"programFiles": [
"drivers/cxl/pmem.c",
"drivers/nvdimm/bus.c",
"drivers/nvdimm/dimm_devs.c",
"drivers/nvdimm/nd-core.h",
"include/linux/libnvdimm.h"
],
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"vendor": "Linux",
"versions": [
{
"lessThan": "a371788d4f4a7f59eecd22644331d599979fd283",
"status": "affected",
"version": "21083f51521fb0f60dbac591f175c3ed48435af4",
"versionType": "git"
},
{
"lessThan": "18c65667fa9104780eeaa0dc1bc240f0c2094772",
"status": "affected",
"version": "21083f51521fb0f60dbac591f175c3ed48435af4",
"versionType": "git"
},
{
"lessThan": "f57aec443c24d2e8e1f3b5b4856aea12ddda4254",
"status": "affected",
"version": "21083f51521fb0f60dbac591f175c3ed48435af4",
"versionType": "git"
}
]
},
{
"defaultStatus": "affected",
"product": "Linux",
"programFiles": [
"drivers/cxl/pmem.c",
"drivers/nvdimm/bus.c",
"drivers/nvdimm/dimm_devs.c",
"drivers/nvdimm/nd-core.h",
"include/linux/libnvdimm.h"
],
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"vendor": "Linux",
"versions": [
{
"status": "affected",
"version": "5.14"
},
{
"lessThan": "5.14",
"status": "unaffected",
"version": "0",
"versionType": "semver"
},
{
"lessThanOrEqual": "6.1.*",
"status": "unaffected",
"version": "6.1.16",
"versionType": "semver"
},
{
"lessThanOrEqual": "6.2.*",
"status": "unaffected",
"version": "6.2.3",
"versionType": "semver"
},
{
"lessThanOrEqual": "*",
"status": "unaffected",
"version": "6.3",
"versionType": "original_commit_for_fix"
}
]
}
],
"cpeApplicability": [
{
"nodes": [
{
"cpeMatch": [
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "6.1.16",
"versionStartIncluding": "5.14",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "6.2.3",
"versionStartIncluding": "5.14",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "6.3",
"versionStartIncluding": "5.14",
"vulnerable": true
}
],
"negate": false,
"operator": "OR"
}
]
}
],
"descriptions": [
{
"lang": "en",
"value": "In the Linux kernel, the following vulnerability has been resolved:\n\ncxl/pmem: Fix nvdimm registration races\n\nA loop of the form:\n\n while true; do modprobe cxl_pci; modprobe -r cxl_pci; done\n\n...fails with the following crash signature:\n\n BUG: kernel NULL pointer dereference, address: 0000000000000040\n [..]\n RIP: 0010:cxl_internal_send_cmd+0x5/0xb0 [cxl_core]\n [..]\n Call Trace:\n \u003cTASK\u003e\n cxl_pmem_ctl+0x121/0x240 [cxl_pmem]\n nvdimm_get_config_data+0xd6/0x1a0 [libnvdimm]\n nd_label_data_init+0x135/0x7e0 [libnvdimm]\n nvdimm_probe+0xd6/0x1c0 [libnvdimm]\n nvdimm_bus_probe+0x7a/0x1e0 [libnvdimm]\n really_probe+0xde/0x380\n __driver_probe_device+0x78/0x170\n driver_probe_device+0x1f/0x90\n __device_attach_driver+0x85/0x110\n bus_for_each_drv+0x7d/0xc0\n __device_attach+0xb4/0x1e0\n bus_probe_device+0x9f/0xc0\n device_add+0x445/0x9c0\n nd_async_device_register+0xe/0x40 [libnvdimm]\n async_run_entry_fn+0x30/0x130\n\n...namely that the bottom half of async nvdimm device registration runs\nafter the CXL has already torn down the context that cxl_pmem_ctl()\nneeds. Unlike the ACPI NFIT case that benefits from launching multiple\nnvdimm device registrations in parallel from those listed in the table,\nCXL is already marked PROBE_PREFER_ASYNCHRONOUS. So provide for a\nsynchronous registration path to preclude this scenario."
}
],
"providerMetadata": {
"dateUpdated": "2025-12-30T12:37:07.656Z",
"orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"shortName": "Linux"
},
"references": [
{
"url": "https://git.kernel.org/stable/c/a371788d4f4a7f59eecd22644331d599979fd283"
},
{
"url": "https://git.kernel.org/stable/c/18c65667fa9104780eeaa0dc1bc240f0c2094772"
},
{
"url": "https://git.kernel.org/stable/c/f57aec443c24d2e8e1f3b5b4856aea12ddda4254"
}
],
"title": "cxl/pmem: Fix nvdimm registration races",
"x_generator": {
"engine": "bippy-1.2.0"
}
}
},
"cveMetadata": {
"assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"assignerShortName": "Linux",
"cveId": "CVE-2023-54323",
"datePublished": "2025-12-30T12:37:07.656Z",
"dateReserved": "2025-12-30T12:35:56.209Z",
"dateUpdated": "2025-12-30T12:37:07.656Z",
"state": "PUBLISHED"
},
"dataType": "CVE_RECORD",
"dataVersion": "5.2",
"vulnerability-lookup:meta": {
"nvd": "{\"cve\":{\"id\":\"CVE-2023-54323\",\"sourceIdentifier\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"published\":\"2025-12-30T13:16:21.627\",\"lastModified\":\"2025-12-30T13:16:21.627\",\"vulnStatus\":\"Received\",\"cveTags\":[],\"descriptions\":[{\"lang\":\"en\",\"value\":\"In the Linux kernel, the following vulnerability has been resolved:\\n\\ncxl/pmem: Fix nvdimm registration races\\n\\nA loop of the form:\\n\\n while true; do modprobe cxl_pci; modprobe -r cxl_pci; done\\n\\n...fails with the following crash signature:\\n\\n BUG: kernel NULL pointer dereference, address: 0000000000000040\\n [..]\\n RIP: 0010:cxl_internal_send_cmd+0x5/0xb0 [cxl_core]\\n [..]\\n Call Trace:\\n \u003cTASK\u003e\\n cxl_pmem_ctl+0x121/0x240 [cxl_pmem]\\n nvdimm_get_config_data+0xd6/0x1a0 [libnvdimm]\\n nd_label_data_init+0x135/0x7e0 [libnvdimm]\\n nvdimm_probe+0xd6/0x1c0 [libnvdimm]\\n nvdimm_bus_probe+0x7a/0x1e0 [libnvdimm]\\n really_probe+0xde/0x380\\n __driver_probe_device+0x78/0x170\\n driver_probe_device+0x1f/0x90\\n __device_attach_driver+0x85/0x110\\n bus_for_each_drv+0x7d/0xc0\\n __device_attach+0xb4/0x1e0\\n bus_probe_device+0x9f/0xc0\\n device_add+0x445/0x9c0\\n nd_async_device_register+0xe/0x40 [libnvdimm]\\n async_run_entry_fn+0x30/0x130\\n\\n...namely that the bottom half of async nvdimm device registration runs\\nafter the CXL has already torn down the context that cxl_pmem_ctl()\\nneeds. Unlike the ACPI NFIT case that benefits from launching multiple\\nnvdimm device registrations in parallel from those listed in the table,\\nCXL is already marked PROBE_PREFER_ASYNCHRONOUS. So provide for a\\nsynchronous registration path to preclude this scenario.\"}],\"metrics\":{},\"references\":[{\"url\":\"https://git.kernel.org/stable/c/18c65667fa9104780eeaa0dc1bc240f0c2094772\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/a371788d4f4a7f59eecd22644331d599979fd283\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/f57aec443c24d2e8e1f3b5b4856aea12ddda4254\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"}]}}"
}
}
Loading…
Loading…
Sightings
| Author | Source | Type | Date |
|---|
Nomenclature
- Seen: The vulnerability was mentioned, discussed, or observed by the user.
- Confirmed: The vulnerability has been validated from an analyst's perspective.
- Published Proof of Concept: A public proof of concept is available for this vulnerability.
- Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
- Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
- Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
- Not confirmed: The user expressed doubt about the validity of the vulnerability.
- Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.
Loading…
Loading…