В ядре Linux устранена следующая уязвимость:
mm/huge_memory: сохранить pmd_swp_uffd_wp при переходе на более раннюю версию PMD, частную для устройства.
Change_non_present_huge_pmd() переписывает доступный для записи обмен PMD на личное устройство
вход в читаемый файл без переноса pmd_swp_uffd_wp().
Change_softleaf_pte() на уровне PTE делает это правильно; отрази это здесь,
соответствие тому, что copy_huge_pmd() делает для пути разветвления. Без переноски,
простой mprotect() над частным THP устройства с пометкой UFFD_WP удаляет бит
и ловушка обходится при подкачке.
Показать оригинальное описание (EN)
In the Linux kernel, the following vulnerability has been resolved: mm/huge_memory: preserve pmd_swp_uffd_wp on device-private PMD downgrade change_non_present_huge_pmd() rewrites a writable device-private PMD swap entry into a readable one without carrying pmd_swp_uffd_wp() across. The PTE-level change_softleaf_pte() does this correctly; mirror that here, matching what copy_huge_pmd() does for the fork path. Without the carry, a plain mprotect() over a UFFD_WP-marked device-private THP strips the bit and the trap is bypassed on swap-in.