[<prev] [next>] [day] [month] [year] [list]
Message-ID: <2025061839-CVE-2025-38072-a259@gregkh>
Date: Wed, 18 Jun 2025 11:34:07 +0200
From: Greg Kroah-Hartman <gregkh@...uxfoundation.org>
To: linux-cve-announce@...r.kernel.org
Cc: Greg Kroah-Hartman <gregkh@...nel.org>
Subject: CVE-2025-38072: libnvdimm/labels: Fix divide error in nd_label_data_init()
From: Greg Kroah-Hartman <gregkh@...nel.org>
Description
===========
In the Linux kernel, the following vulnerability has been resolved:
libnvdimm/labels: Fix divide error in nd_label_data_init()
If a faulty CXL memory device returns a broken zero LSA size in its
memory device information (Identify Memory Device (Opcode 4000h), CXL
spec. 3.1, 8.2.9.9.1.1), a divide error occurs in the libnvdimm
driver:
Oops: divide error: 0000 [#1] PREEMPT SMP NOPTI
RIP: 0010:nd_label_data_init+0x10e/0x800 [libnvdimm]
Code and flow:
1) CXL Command 4000h returns LSA size = 0
2) config_size is assigned to zero LSA size (CXL pmem driver):
drivers/cxl/pmem.c: .config_size = mds->lsa_size,
3) max_xfer is set to zero (nvdimm driver):
drivers/nvdimm/label.c: max_xfer = min_t(size_t, ndd->nsarea.max_xfer, config_size);
4) A subsequent DIV_ROUND_UP() causes a division by zero:
drivers/nvdimm/label.c: /* Make our initial read size a multiple of max_xfer size */
drivers/nvdimm/label.c: read_size = min(DIV_ROUND_UP(read_size, max_xfer) * max_xfer,
drivers/nvdimm/label.c- config_size);
Fix this by checking the config size parameter by extending an
existing check.
The Linux kernel CVE team has assigned CVE-2025-38072 to this issue.
Affected and fixed versions
===========================
Fixed in 5.4.294 with commit 2bd4a938d2eda96ab7288b8fa5aae84a1de8c4ca
Fixed in 5.10.238 with commit 396c46d3f59a18ebcc500640e749f16e197d472b
Fixed in 5.15.185 with commit f49c337037df029440a8390380dd35d2cf5924d3
Fixed in 6.1.141 with commit db1aef51b8e66a77f76b1250b914589c31a0a0ed
Fixed in 6.6.93 with commit ea3d95e05e97ea20fd6513f647393add16fce3b2
Fixed in 6.12.31 with commit 1d1e1efad1cf049e888bf175a5c6be85d792620c
Fixed in 6.14.9 with commit e14347f647ca6d76fe1509b6703e340f2d5e2716
Fixed in 6.15 with commit ef1d3455bbc1922f94a91ed58d3d7db440652959
Please see https://www.kernel.org for a full list of currently supported
kernel versions by the kernel community.
Unaffected versions might change over time as fixes are backported to
older supported kernel versions. The official CVE entry at
https://cve.org/CVERecord/?id=CVE-2025-38072
will be updated if fixes are backported, please check that for the most
up to date information about this issue.
Affected files
==============
The file(s) affected by this issue are:
drivers/nvdimm/label.c
Mitigation
==========
The Linux kernel CVE team recommends that you update to the latest
stable kernel version for this, and many other bugfixes. Individual
changes are never tested alone, but rather are part of a larger kernel
release. Cherry-picking individual commits is not recommended or
supported by the Linux kernel community at all. If however, updating to
the latest release is impossible, the individual changes to resolve this
issue can be found at these commits:
https://git.kernel.org/stable/c/2bd4a938d2eda96ab7288b8fa5aae84a1de8c4ca
https://git.kernel.org/stable/c/396c46d3f59a18ebcc500640e749f16e197d472b
https://git.kernel.org/stable/c/f49c337037df029440a8390380dd35d2cf5924d3
https://git.kernel.org/stable/c/db1aef51b8e66a77f76b1250b914589c31a0a0ed
https://git.kernel.org/stable/c/ea3d95e05e97ea20fd6513f647393add16fce3b2
https://git.kernel.org/stable/c/1d1e1efad1cf049e888bf175a5c6be85d792620c
https://git.kernel.org/stable/c/e14347f647ca6d76fe1509b6703e340f2d5e2716
https://git.kernel.org/stable/c/ef1d3455bbc1922f94a91ed58d3d7db440652959
Powered by blists - more mailing lists