CVE-2023-52739
Severity CVSS v4.0:
Pending analysis
Type:
CWE-415
Double Free
Publication date:
21/05/2024
Last modified:
23/09/2025
Description
In the Linux kernel, the following vulnerability has been resolved:<br />
<br />
Fix page corruption caused by racy check in __free_pages<br />
<br />
When we upgraded our kernel, we started seeing some page corruption like<br />
the following consistently:<br />
<br />
BUG: Bad page state in process ganesha.nfsd pfn:1304ca<br />
page:0000000022261c55 refcount:0 mapcount:-128 mapping:0000000000000000 index:0x0 pfn:0x1304ca<br />
flags: 0x17ffffc0000000()<br />
raw: 0017ffffc0000000 ffff8a513ffd4c98 ffffeee24b35ec08 0000000000000000<br />
raw: 0000000000000000 0000000000000001 00000000ffffff7f 0000000000000000<br />
page dumped because: nonzero mapcount<br />
CPU: 0 PID: 15567 Comm: ganesha.nfsd Kdump: loaded Tainted: P B O 5.10.158-1.nutanix.20221209.el7.x86_64 #1<br />
Hardware name: VMware, Inc. VMware Virtual Platform/440BX Desktop Reference Platform, BIOS 6.00 04/05/2016<br />
Call Trace:<br />
dump_stack+0x74/0x96<br />
bad_page.cold+0x63/0x94<br />
check_new_page_bad+0x6d/0x80<br />
rmqueue+0x46e/0x970<br />
get_page_from_freelist+0xcb/0x3f0<br />
? _cond_resched+0x19/0x40<br />
__alloc_pages_nodemask+0x164/0x300<br />
alloc_pages_current+0x87/0xf0<br />
skb_page_frag_refill+0x84/0x110<br />
...<br />
<br />
Sometimes, it would also show up as corruption in the free list pointer<br />
and cause crashes.<br />
<br />
After bisecting the issue, we found the issue started from commit<br />
e320d3012d25 ("mm/page_alloc.c: fix freeing non-compound pages"):<br />
<br />
if (put_page_testzero(page))<br />
free_the_page(page, order);<br />
else if (!PageHead(page))<br />
while (order-- > 0)<br />
free_the_page(page + (1
Impact
Base Score 3.x
5.50
Severity 3.x
MEDIUM
Vulnerable products and versions
| CPE | From | Up to |
|---|---|---|
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.9.2 (including) | 5.10.168 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.11 (including) | 5.15.94 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.16 (including) | 6.1.12 (excluding) |
| cpe:2.3:o:linux:linux_kernel:6.2:rc1:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:6.2:rc2:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:6.2:rc3:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:6.2:rc4:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:6.2:rc5:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:6.2:rc6:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:6.2:rc7:*:*:*:*:*:* |
To consult the complete list of CPE names with products and versions, see this page
References to Advisories, Solutions, and Tools
- https://git.kernel.org/stable/c/0a626e27f984dfbe96bd8e4fd08f20a2ede3ea23
- https://git.kernel.org/stable/c/3af734f3eac6f70ef8e272a80da40544b9d0f2b5
- https://git.kernel.org/stable/c/3b4c045a98f53a8890a94bb5846a390c8e39e673
- https://git.kernel.org/stable/c/462a8e08e0e6287e5ce13187257edbf24213ed03
- https://git.kernel.org/stable/c/0a626e27f984dfbe96bd8e4fd08f20a2ede3ea23
- https://git.kernel.org/stable/c/3af734f3eac6f70ef8e272a80da40544b9d0f2b5
- https://git.kernel.org/stable/c/3b4c045a98f53a8890a94bb5846a390c8e39e673
- https://git.kernel.org/stable/c/462a8e08e0e6287e5ce13187257edbf24213ed03



