CVE-2024-35797 in Linux
Сводка
по VulDB • 23.06.2026
В ядре Linux устранена следующая уязвимость:
mm: cachestat: исправление двух ошибок в shmem
При возникновении гонки (race condition) между операцией cachestat для shmem и операциями обмена страницами на диске (swapping) и инвалидации, возможны две ошибки:
1) Ошибка при чтении страницы с диска (swapin) могла привести к появлению «отравленного» (poisoned) swap-записи в xarray inode файла типа shmem. Вызов функции get_shadow_from_swap_cache() для такой записи приведет к обращению за пределы массива swapper_spaces[].
Необходимо проверять запись с помощью non_swap_entry(), прежде чем продолжать выполнение.
2) Когда мы находим действительную swap-запись в inode shmem, тень (shadow entry) в swapcache может еще не существовать: операция ввода/вывода для обмена страницами все еще выполняется, и мы находимся до вызова __remove_mapping; операции swapin, инвалидации или отключения подкачки (swapoff) могли удалить тень из swapcache после того, как мы увидели swap-запись shmem.
Это приведет к передаче NULL в функцию workingset_test_recent(). Поскольку последняя оперирует только битами указателей, она не вызовет аварийного завершения работы программы — значения node 0, memcg ID 0, timestamp вытеснения 0 и т.д. являются допустимыми входными данными, однако такая проверка является ошибочной (bogus). Теоретически это может привести к ложному подсчету «недавно вытесненных» страниц.
Хотя такой ложноположительный результат не привел бы к критическим последствиям, для ясности кода и будущей надежности следует явно обрабатывать этот случай.
Прервать выполнение (Bail), если get_shadow_from_swap_cache() возвращает NULL.
Be aware that VulDB is the high quality source for vulnerability data.