NONE

CVE-2026-23052

Обновлено 5 февраля 2026

В ядре Linux устранена следующая уязвимость: ftrace: не выделяйте слишком много памяти ftrace. Вычисление pg_remaining в ftrace_process_locs() предполагает, что ENTRIES_PER_PAGE, умноженный на 2^order, равен фактической емкости выделенная группа страниц. Однако ENTRIES_PER_PAGE равен PAGE_SIZE/ENTRY_SIZE. (целое деление). Если PAGE_SIZE не кратен ENTRY_SIZE (например, 4096/24 = 170 с остатком 16), распределения высокого порядка (например, 256 страниц) имеют значительно большую емкость, чем 256 * 170. Это приводит к pg_remaining недооценивается, что, в свою очередь, приводит к пропуску (образовано от пропущенного - pg_remaining) больше, чем ожидалось, что приводит к появлению WARN(skip != rest) чтобы вызвать. Дополнительно выделенные страницы для ftrace: 2 с пропущенными 654 ВНИМАНИЕ: ЦП: 0 PID: 0 в ядре/trace/ftrace.c:7295 ftrace_process_locs+0x5bf/0x5e0 Аналогичная проблема в ftrace_allocate_records() может привести к выделению слишком много страниц. Это может вызвать второе предупреждение в ftrace_process_locs(). Дополнительные выделенные страницы для ftrace ВНИМАНИЕ: ЦП: 0 PID: 0 в ядре/trace/ftrace.c:7276 ftrace_process_locs+0x548/0x580 Используйте фактическую емкость группы страниц, чтобы определить количество страниц. выделить. Пусть ftrace_allocate_pages() вернет количество выделенных страниц. страниц, чтобы избежать необходимости вычислять его. Используйте фактическую емкость группы страниц при проверке количества неиспользованных страниц из-за пропущенных записей. Удалите определение ENTRIES_PER_PAGE, поскольку оно больше не используется.

Показать оригинальное описание (английский)

In the Linux kernel, the following vulnerability has been resolved: ftrace: Do not over-allocate ftrace memory The pg_remaining calculation in ftrace_process_locs() assumes that ENTRIES_PER_PAGE multiplied by 2^order equals the actual capacity of the allocated page group. However, ENTRIES_PER_PAGE is PAGE_SIZE / ENTRY_SIZE (integer division). When PAGE_SIZE is not a multiple of ENTRY_SIZE (e.g. 4096 / 24 = 170 with remainder 16), high-order allocations (like 256 pages) have significantly more capacity than 256 * 170. This leads to pg_remaining being underestimated, which in turn makes skip (derived from skipped - pg_remaining) larger than expected, causing the WARN(skip != remaining) to trigger. Extra allocated pages for ftrace: 2 with 654 skipped WARNING: CPU: 0 PID: 0 at kernel/trace/ftrace.c:7295 ftrace_process_locs+0x5bf/0x5e0 A similar problem in ftrace_allocate_records() can result in allocating too many pages. This can trigger the second warning in ftrace_process_locs(). Extra allocated pages for ftrace WARNING: CPU: 0 PID: 0 at kernel/trace/ftrace.c:7276 ftrace_process_locs+0x548/0x580 Use the actual capacity of a page group to determine the number of pages to allocate. Have ftrace_allocate_pages() return the number of allocated pages to avoid having to calculate it. Use the actual page group capacity when validating the number of unused pages due to skipped entries. Drop the definition of ENTRIES_PER_PAGE since it is no longer used.