Goal Reached Thanks to every supporter — we hit 100%!

Goal: 1000 CNY · Raised: 1336 CNY

100%

CVE-2024-53079— mm/thp: fix deferred split unqueue naming and locking

CVSS 7.8 · High EPSS 0.17% · P7

Possible ATT&CK Techniques 1AI

T1055 · Process Injection

Affected Version Matrix 8

VendorProductVersion RangeStatus
LinuxLinux87eaceb3faa59b9b4d940ec9554ce251325d83fe< fc4951c3e3358dd82ea508e893695b916c813f17affected
87eaceb3faa59b9b4d940ec9554ce251325d83fe< afb1352d06b1b6b2cfd1f901c766a430c87078b3affected
87eaceb3faa59b9b4d940ec9554ce251325d83fe< f8f931bba0f92052cf842b7e30917b1afcc77d5aaffected
5.4affected
< 5.4unaffected
6.6.62≤ 6.6.*unaffected
6.11.8≤ 6.11.*unaffected
6.12≤ *unaffected
Get alerts for future matching vulnerabilitiesLog in to subscribe

I. Basic Information for CVE-2024-53079

Vulnerability Information

Have questions about the vulnerability? See if Shenlong's analysis helps!
View Shenlong Deep Dive ↗

Although we use advanced large model technology, its output may still contain inaccurate or outdated information.Shenlong tries to ensure data accuracy, but please verify and judge based on the actual situation.

Vulnerability Title
mm/thp: fix deferred split unqueue naming and locking
Source: CVE Program / CVE List V5
Vulnerability Description
In the Linux kernel, the following vulnerability has been resolved: mm/thp: fix deferred split unqueue naming and locking Recent changes are putting more pressure on THP deferred split queues: under load revealing long-standing races, causing list_del corruptions, "Bad page state"s and worse (I keep BUGs in both of those, so usually don't get to see how badly they end up without). The relevant recent changes being 6.8's mTHP, 6.10's mTHP swapout, and 6.12's mTHP swapin, improved swap allocation, and underused THP splitting. Before fixing locking: rename misleading folio_undo_large_rmappable(), which does not undo large_rmappable, to folio_unqueue_deferred_split(), which is what it does. But that and its out-of-line __callee are mm internals of very limited usability: add comment and WARN_ON_ONCEs to check usage; and return a bool to say if a deferred split was unqueued, which can then be used in WARN_ON_ONCEs around safety checks (sparing callers the arcane conditionals in __folio_unqueue_deferred_split()). Just omit the folio_unqueue_deferred_split() from free_unref_folios(), all of whose callers now call it beforehand (and if any forget then bad_page() will tell) - except for its caller put_pages_list(), which itself no longer has any callers (and will be deleted separately). Swapout: mem_cgroup_swapout() has been resetting folio->memcg_data 0 without checking and unqueueing a THP folio from deferred split list; which is unfortunate, since the split_queue_lock depends on the memcg (when memcg is enabled); so swapout has been unqueueing such THPs later, when freeing the folio, using the pgdat's lock instead: potentially corrupting the memcg's list. __remove_mapping() has frozen refcount to 0 here, so no problem with calling folio_unqueue_deferred_split() before resetting memcg_data. That goes back to 5.4 commit 87eaceb3faa5 ("mm: thp: make deferred split shrinker memcg aware"): which included a check on swapcache before adding to deferred queue, but no check on deferred queue before adding THP to swapcache. That worked fine with the usual sequence of events in reclaim (though there were a couple of rare ways in which a THP on deferred queue could have been swapped out), but 6.12 commit dafff3f4c850 ("mm: split underused THPs") avoids splitting underused THPs in reclaim, which makes swapcache THPs on deferred queue commonplace. Keep the check on swapcache before adding to deferred queue? Yes: it is no longer essential, but preserves the existing behaviour, and is likely to be a worthwhile optimization (vmstat showed much more traffic on the queue under swapping load if the check was removed); update its comment. Memcg-v1 move (deprecated): mem_cgroup_move_account() has been changing folio->memcg_data without checking and unqueueing a THP folio from the deferred list, sometimes corrupting "from" memcg's list, like swapout. Refcount is non-zero here, so folio_unqueue_deferred_split() can only be used in a WARN_ON_ONCE to validate the fix, which must be done earlier: mem_cgroup_move_charge_pte_range() first try to split the THP (splitting of course unqueues), or skip it if that fails. Not ideal, but moving charge has been requested, and khugepaged should repair the THP later: nobody wants new custom unqueueing code just for this deprecated case. The 87eaceb3faa5 commit did have the code to move from one deferred list to another (but was not conscious of its unsafety while refcount non-0); but that was removed by 5.6 commit fac0516b5534 ("mm: thp: don't need care deferred split queue in memcg charge move path"), which argued that the existence of a PMD mapping guarantees that the THP cannot be on a deferred list. As above, false in rare cases, and now commonly false. Backport to 6.11 should be straightforward. Earlier backports must take care that other _deferred_list fixes and dependencies are included. There is not a strong case for backports, but they can fix cornercases.
Source: CVE Program / CVE List V5
CVSS Information
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
Source: CVE Program / CVE List V5
Vulnerability Type
N/A
Source: CVE Program / CVE List V5
Vulnerability Title
Linux kernel 安全漏洞
Source: CNNVD (China National Vulnerability Database)
Vulnerability Description
Linux kernel是美国Linux基金会的开源操作系统Linux所使用的内核。 Linux kernel存在安全漏洞,该漏洞源于存在延迟分割队列命名和锁定问题。
Source: CNNVD (China National Vulnerability Database)
CVSS Information
N/A
Source: CNNVD (China National Vulnerability Database)
Vulnerability Type
N/A
Source: CNNVD (China National Vulnerability Database)

Affected Products

VendorProductAffected VersionsCPESubscribe
LinuxLinux 87eaceb3faa59b9b4d940ec9554ce251325d83fe ~ fc4951c3e3358dd82ea508e893695b916c813f17 -
LinuxLinux 5.4 -

II. Public POCs for CVE-2024-53079

#POC DescriptionSource LinkShenlong Link
AI-Generated POCPremium

No public POC found.

Login to generate AI POC

III. Intelligence Information for CVE-2024-53079

登录查看更多情报信息。

Patches & Fixes for CVE-2024-53079 (3)

Same Patch Batch · Linux · 2024-11-19 · 88 CVEs total

CVE-2024-502839.8 CRITICALksmbd: fix slab-use-after-free in smb3_preauth_hash_rsp
CVE-2024-502769.8 CRITICALnet: vertexcom: mse102x: Fix possible double free of TX skb
CVE-2024-530669.8 CRITICALnfs: Fix KMSAN warning in decode_getfattr_attrs()
CVE-2024-502869.8 CRITICALksmbd: fix slab-use-after-free in ksmbd_smb2_session_create
CVE-2024-530589.4 CRITICALnet: stmmac: TSO: Fix unbalanced DMA map/unmap for non-paged SKB data
CVE-2024-530828.4 HIGHvirtio_net: Add hash_key_length check
CVE-2024-502998.2 HIGHsctp: properly validate chunk size in sctp_sf_ootb()
CVE-2024-530577.8 HIGHnet/sched: stop qdisc_tree_reduce_backlog on TC_H_ROOT
CVE-2024-503007.8 HIGHregulator: rtq2208: Fix uninitialized use of regulator_config
CVE-2024-502647.8 HIGHvsock/virtio: Initialization of the dangling pointer occurring in vsk->trans
CVE-2024-530447.8 HIGHnet/sched: sch_api: fix xa_insert() error path in tcf_block_get_ext()
CVE-2024-530767.8 HIGHiio: gts-helper: Fix memory leaks for the error path of iio_gts_build_avail_scale_table()
CVE-2024-530807.8 HIGHdrm/panthor: Lock XArray when getting entries for the VM
CVE-2024-530887.8 HIGHi40e: fix race condition by adding filter's intermediate sync state
CVE-2024-530637.8 HIGHmedia: dvbdev: prevent the risk of out of memory access
CVE-2024-503017.8 HIGHsecurity/keys: fix slab-out-of-bounds in key_task_permission
CVE-2024-502947.8 HIGHrxrpc: Fix missing locking causing hanging calls
CVE-2024-502937.8 HIGHnet/smc: do not leave a dangling sk pointer in __smc_create()
CVE-2024-502917.8 HIGHmedia: dvb-core: add missing buffer index check
CVE-2024-502887.8 HIGHmedia: vivid: fix buffer overwrite when using > 32 buffers

Showing top 20 of 88 CVEs. View all on vendor page &rarr; →

IV. Related Vulnerabilities

V. Comments for CVE-2024-53079

Anonymous User
2026-06-25 15:22:28

Just here to explore discussions, exchange ideas, and learn something new along the way. I like learning from different perspectives and sharing my input when it's helpful. Always open to new ideas and building connections. Here is my web-site:<a href="https://automisto24.com.ua/">AutoMisto24</a> https://automisto24.com.ua/


Leave a comment