In the Linux kernel, the following vulnerability has been resolved:mm/vmscan: fix hwpoisoned large folio handling in shrink_folio_listIn shrink_folio_list(), the hwpoisoned folio may be large folio, whichcan't be handled by unmap_poisoned_folio(). For THP, try_to_unmap_one()must be passed with TTU_SPLIT_HUGE_PMD to split huge PMD first and thenretry. Without TTU_SPLIT_HUGE_PMD, we will trigger null-ptr deref ofpvmw.pte. Even we passed TTU_SPLIT_HUGE_PMD, we will trigger aWARN_ON_ONCE due to the page isn't in swapcache.Since UCE is rare in real world, and race with reclaimation is more rare,just skipping the hwpoisoned large folio is enough. memory_failure() willhandle it if the UCE is triggered again.This happens when memory reclaim for large folio races withmemory_failure(), and will lead to kernel panic. The race is asfollows:cpu0 cpu1 shrink_folio_list memory_failure TestSetPageHWPoison unmap_poisoned_folio --> trigger BUG_ON due to unmap_poisoned_folio couldn't handle large folio[tujinjiang@huawei.com: add comment to unmap_poisoned_folio()]
No PoCs from references.
- https://github.com/fkie-cad/nvd-json-data-feeds