V
Сканер-ВС
ГлавнаяКаталогИсточникиCWECAPECATT&CKМеры защитыПродуктыВендорыДокументация
CVE-2025-22034
CVE
Средний

В ядре Linux устранена следующая уязвимость: mm/gup: откажите FOLL_SPLIT_PMD с помощью огромных VMA Пластинчатая серия "мм: исправления для…

CVSS
5.5
Средний
EPSS
0.00
p11
Опубликовано
2025-01-01
Обновлено
2025-01-01
Описание

В ядре Linux устранена следующая уязвимость: mm/gup: откажите FOLL_SPLIT_PMD с помощью огромных VMA Пластинчатая серия "мм: исправления для устройств-эксклюзивных записей (хмм)", v2. Обсуждение вызова PageTail() в make_device_exclusive_range() с Вилли, я недавно обнаружил [1], что эксклюзивная обработка устройства не правильно работать с THP, делая самотесты хмм-тестов неудачными, если THPs Включено в систему. Глядя на более подробную информацию, я обнаружил, что hugetlb не огорожен должным образом, и я понял, что что-то, что беспокоит меня дольше - как эксклюзивные записи для устройств взаимодействуют с количеством карт - полностью ломается миграция/свалирование/расщепление/отказ от этих фолиантов, пока они Устройство-эксклюзивные PTE. Приведенная ниже программа может быть использована для выделения 1 GiB страниц и создания они устройства-эксклюзив на ясле с CONFIG_TEST_HMM. Как только они являются эксклюзивными для устройства, эти фолианты не могут быть обменены. (proc$pid/smaps_rollup всегда будет указывать 1 GiB RSS независимо от того, сколько один заставляет память восстанавливать), и когда у вас блок памяти онлайн ZONE_MOVABLE, пытаясь оффлайн, он будет петлять вечно и жаловаться на Неудачная миграция страницы, которая должна быть подвижной. # эхо-оффлайн > /sys/devices/system/memory/memory136/state # эхо online_movable > /sys/devices/system/memory/memory136/state # ./hmm-swap & ... подождите, пока все не станет эксклюзивным для устройства # эхо-оффлайн > /sys/devices/system/memory/memory136/state [ 285.193431][T14882] страница: пересчет:2 карт:0 картографирование:00000000000000000 индекс: 0x7f20671f7 pfn:0x442b6a [ 285.196618][T14882] memcg:fff88817928000 [ 285.198085][T14882] Анонные флаги: 0x5ff00000020091c(recienced|uptodate| грязный|актив|владелец_2|swapbacked|node=1|zone=3|lastcpud=0x7ff) [ 285.201734][T14882] сырой: ... [ 285.204464][T14882] сырой: ... [ 285.207196][T14882] страница сброшена из-за: миграционный сбой [ 285.209072][T14882] page_owner отслеживает страницу как выделенную [ 285.210915][T14882] страница, последняя выделенная по заказу 0, migratetype Движка, gfp_mask 0x140dca(GFP_HIGHUSER_MOVABLE|__GFP_COMP|_GFP_ZERO), id 14926, tgid 14926 (хмм-своп), ts 254506295376, free_ts 227402023774 [ 285.216765][T14882] Пост_аллок_квook+0x197/0х1b0 [ 285.218874][T14882] get_page_from_freelist+0x76e/0x3280 [ 285.220864][T14882] __alloc_frozen_pages_noprof+0x38e/0x2740 [ 285.223302][T14882] alloc_pages_mpol+0x1fc/0x540 [ 285.225130][T14882] folio_lloc_mpol_noprof+0x36/0x340 [ 285.227222][T14882] vma_alloc_folio_noprof+0xee/0x1a0 [ 285.229074][T14882] __рука_mm_fault+0x2b38/0x56a0 [ 285.230822][T14882] ручка_mm_fault+0x368/0x9f0 ... Эта серия исправит все проблемы, которые я обнаружил до сих пор. Нет простого способа исправить без большей переработки/очистки. У меня есть куча уборок сверху (некоторые предыдущий отправленный, некоторые результат обсуждения в v1), который я отправлю Отдельно, как только это приземлилось, и я доберусь до него. Я хотел бы, чтобы мы могли просто использовать некоторые специальные подарки PROT_NONE PTE вместо эти (ненастоящие, не-нет) поддельные записи; но это просто приводит к та же проблема, которую мы продолжаем иметь (отсутствие запасных биты PTE) и смотреть на Другие подобные поддельные записи, этот корабль отплыл. С этой серией make_device_exclusive() на самом деле не принадлежит mm/rap.c больше, но я оставлю это на другой день. Я тестировал эту серию только с помощью хмм-тестов из-за отсутствия HW, поэтому я был бы признателен за некоторые испытания, особенно если взаимодействие между двумя Графические процессоры, желающие ввести эксклюзивную для устройства, работают, как и ожидалось. <Программа> #include <stdio.h> #включите <fcntl.h> #include <stdint.h> #include <unistd.h> #включите <stdlib.h> #include <string.h> #include <sys/mman.h> #include <sys/ioctl.h> #include <linux/types.h> #include <linux/ioctl.h> #define HMM_DMIRROR_ЭКСКЛЮЗИВНЫЙ _IOWR('H', 0x05, struct hmm_dmirror_cmd) struct hmm_dmirror_cmd { __u64 аддр; __u64 птр; __u64 npages; __u64 cстраницы; __u64 неисправности; }; размер конст_t = 1 * 1024 * 1024 * 1024 * 1024; размер const_t chunk_size = 2 * 1024 * 1024; int m ---усеченный---

Затронутые продукты
LinuxLinuxLinuxLinuxLinuxLinuxLinuxLinuxLinuxLinuxLinuxLinuxLinux-5.10Linux-5.10Linux-allwinner-5.19Linux-awsLinux-awsLinux-awsLinux-awsLinux-aws
Вектор CVSS
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
Хронология
2025-01-01
Опубликована
2025-01-01
Обновлена
Разбор CVSS 3.1
Вектор атаки
AV: L
Локальная (L)
Сложность атаки
AC: L
Низкая (L)
Требуемые привилегии
PR: L
Низкие (L)
Взаимодействие с пользователем
UI: N
Отсутствует (N)
Область воздействия
S: U
Неизменная (U)
Воздействие на конфиденциальность
C: N
Отсутствует (N)
Воздействие на целостность
I: N
Отсутствует (N)
Воздействие на доступность
A: H
Высокое (H)
Индикаторы эксплуатации
EPSS
0.002 · p11
Известна эксплуатация (KEV)
Нет
Проверки Сканер-ВС
Проверок Сканер-ВС для этой уязвимости в базе пока нет.
Затронутые продукты
ПродуктВендорСтатус
linuxОтслеживается
linuxОтслеживается
linuxОтслеживается
linuxОтслеживается
linuxОтслеживается
linuxОтслеживается
linuxОтслеживается
linuxОтслеживается
linuxОтслеживается
linuxОтслеживается
linuxОтслеживается
linuxОтслеживается
linux-5.10Отслеживается
linux-5.10Отслеживается
linux-allwinner-5.19Отслеживается
linux-awsОтслеживается
linux-awsОтслеживается
linux-awsОтслеживается
linux-awsОтслеживается
linux-awsОтслеживается
Показаны первые 20 из 277