В ядре Linux устранена следующая уязвимость:
x86/mce: настройте таймер опроса перед обнаружением CMCI.
На одной из моих машин я нажал следующее:
mce: CPU0 BANK15 CMCI унаследовал шторм
------------[вырезать здесь]------------
ODEBUG: Assert_init недоступен (активное состояние 0) объект: (____ptrval____) тип объекта: подсказка timer_list: 0x0
ВНИМАНИЕ: lib/debugobjects.c:632 в debug_object_assert_init+0x178/0x230, CPU#0: swapper/0/0
ЦП: 0 UID: 0 PID: 0 Связь: swapper/0 Не повреждено 7.2.0-rc5 #3 PREEMPTLAZY
RIP: 0010:debug_object_assert_init+0x18f/0x230
Отслеживание вызова:
<ЗАДАЧА>
__mod_timer
mce_timer_kick
cmci_discover
intel_init_cmci
mce_intel_feature_init
mcheck_cpu_init
идентифицировать_процессор
идентификация_boot_cpu
Arch_cpu_finalize_init
start_kernel
Сразу после этого следует второй удар, когда timer_setup() обнаруживает то же самое.
таймер уже в очереди:
ODEBUG: init active (активное состояние 0) объект: (____ptrval____) тип объекта: timer_list подсказка: stub_timer+0x0/0x10
Это происходит потому, что обнаружение шторма CMCI пытается изменить таймер.
до того, как последний был правильно настроен.
Сначала установите таймер. __mcheck_cpu_setup_timer() вызывает только timer_setup(),
и не зависит ни от универсального, ни от поставщика init.
[ bp: Сообщение о фиксации сообщения. ]
Показать оригинальное описание (EN)
In the Linux kernel, the following vulnerability has been resolved: x86/mce: Set up the polling timer before CMCI discovery I hit the following on one of my machines: mce: CPU0 BANK15 CMCI inherited storm ------------[ cut here ]------------ ODEBUG: assert_init not available (active state 0) object: (____ptrval____) object type: timer_list hint: 0x0 WARNING: lib/debugobjects.c:632 at debug_object_assert_init+0x178/0x230, CPU#0: swapper/0/0 CPU: 0 UID: 0 PID: 0 Comm: swapper/0 Not tainted 7.2.0-rc5 #3 PREEMPTLAZY RIP: 0010:debug_object_assert_init+0x18f/0x230 Call Trace: <TASK> __mod_timer mce_timer_kick cmci_discover intel_init_cmci mce_intel_feature_init mcheck_cpu_init identify_cpu identify_boot_cpu arch_cpu_finalize_init start_kernel A second splat follows right after, from timer_setup() finding that same timer already queued: ODEBUG: init active (active state 0) object: (____ptrval____) object type: timer_list hint: stub_timer+0x0/0x10 This is happening because CMCI storm detection is trying to modify the timer before latter was properly set up. Set up the timer first. __mcheck_cpu_setup_timer() only calls timer_setup(), and depends on neither the generic nor the vendor init. [ bp: Massage commit message. ]