Bug 1227838 (CVE-2024-40950) - VUL-0: CVE-2024-40950: kernel: mm: huge_memory: fix misused mapping_large_folio_support() for anon folios
Summary: VUL-0: CVE-2024-40950: kernel: mm: huge_memory: fix misused mapping_large_fol...
Status: RESOLVED FIXED
Alias: CVE-2024-40950
Product: SUSE Security Incidents
Classification: Novell Products
Component: Incidents (show other bugs)
Version: unspecified
Hardware: Other Other
: P3 - Medium : Normal
Target Milestone: ---
Assignee: Kernel Bugs
QA Contact: Security Team bot
URL: https://smash.suse.de/issue/413877/
Whiteboard: CVSSv3.1:SUSE:CVE-2024-40950:5.5:(AV:...
Keywords:
Depends on:
Blocks:
 
Reported: 2024-07-15 14:11 UTC by SMASH SMASH
Modified: 2024-07-15 15:13 UTC (History)
1 user (show)

See Also:
Found By: Security Response Team
Services Priority:
Business Priority:
Blocker: ---
Marketing QA Status: ---
IT Deployment: ---


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description SMASH SMASH 2024-07-15 14:11:45 UTC
In the Linux kernel, the following vulnerability has been resolved:

mm: huge_memory: fix misused mapping_large_folio_support() for anon folios

When I did a large folios split test, a WARNING "[ 5059.122759][ T166]
Cannot split file folio to non-0 order" was triggered.  But the test cases
are only for anonmous folios.  while mapping_large_folio_support() is only
reasonable for page cache folios.

In split_huge_page_to_list_to_order(), the folio passed to
mapping_large_folio_support() maybe anonmous folio.  The folio_test_anon()
check is missing.  So the split of the anonmous THP is failed.  This is
also the same for shmem_mapping().  We'd better add a check for both.  But
the shmem_mapping() in __split_huge_page() is not involved, as for
anonmous folios, the end parameter is set to -1, so (head[i].index >= end)
is always false.  shmem_mapping() is not called.

Also add a VM_WARN_ON_ONCE() in mapping_large_folio_support() for anon
mapping, So we can detect the wrong use more easily.

THP folios maybe exist in the pagecache even the file system doesn't
support large folio, it is because when CONFIG_TRANSPARENT_HUGEPAGE is
enabled, khugepaged will try to collapse read-only file-backed pages to
THP.  But the mapping does not actually support multi order large folios
properly.

Using /sys/kernel/debug/split_huge_pages to verify this, with this patch,
large anon THP is successfully split and the warning is ceased.

References:
http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2024-40950
https://www.cve.org/CVERecord?id=CVE-2024-40950
https://git.kernel.org/stable/c/5df493a99fcf887133cf01d23cd4bebb6d385d3c
https://git.kernel.org/stable/c/6a50c9b512f7734bc356f4bd47885a6f7c98491a
https://git.kernel.org/pub/scm/linux/security/vulns.git/plain/cve/published/2024/CVE-2024-40950.mbox
Comment 1 Robert Frohl 2024-07-15 15:13:56 UTC
does not affect our kernels, closing