В ядре Linux устранена следующая уязвимость: perf/x86: Исправить доступ к событиям FULL и потенциальный рекордный убыток PEBS Когда intel_p…
В ядре Linux устранена следующая уязвимость: perf/x86: Исправить доступ к событиям FULL и потенциальный рекордный убыток PEBS Когда intel_pmu_drain_pebs_icl() призвано истощить записи PEBS, perf_event_overflow() можно позвонить для обработки последней записи PEBS. В то время как perf_event_overflow() может вызвать дроссельную заслону и остановить все события группы, как то, что показывает цепочка вызовов ниже. perf_event_overflow() -> __perf_event_overflow() ->___perf_event_account_interrupt() -> perf_event_throttle_group() -> perf_event_throttle() -> событие->pmu->stop() -> x86_pmu_stop() Побочным эффектом остановки событий является то, что все соответствующее событие указатели в cpuc->события[] массиве очищаются до NULL. Допустим, в группе есть два события PEBS (событие a и событие b). Когда intel_pmu_drain_pebs_icl() звонит perf_event_overflow() для обработки последний запись ПЭБС события ПЭБС a, прерывание дроссельная засранка срабатывает и все указатели события a и события b очищаются в NULL. Тогда intel_pmu_drain_pebs_icl() пытается обработать последнюю запись PEBS событие b и встречает NULL указатель доступа. Чтобы избежать этой проблемы, переместите cpuc->events[] очистку от x86_pmu_stop() к x86_pmu_del(). Это безопасно с cpuc->active_mask или cpuc->pebs_enabled всегда проверяется перед доступом к указательу события от cpuc->событий[].
| Продукт | Вендор | Статус |
|---|---|---|
| linux | Отслеживается | |
| linux | Отслеживается | |
| linux | Отслеживается | |
| linux | Отслеживается | |
| linux-allwinner-5.19 | Отслеживается | |
| linux-aws-5.19 | Отслеживается | |
| linux-aws-6.2 | Отслеживается | |
| linux-aws-6.5 | Отслеживается | |
| linux-azure-5.19 | Отслеживается | |
| linux-azure-6.11 | Отслеживается | |
| linux-azure-6.2 | Отслеживается | |
| linux-azure-6.5 | Отслеживается | |
| linux-azure-fde-5.19 | Отслеживается | |
| linux-azure-fde-6.2 | Отслеживается | |
| linux-gcp-5.19 | Отслеживается | |
| linux-gcp-6.11 | Отслеживается | |
| linux-gcp-6.2 | Отслеживается | |
| linux-gcp-6.5 | Отслеживается | |
| linux-hwe-5.19 | Отслеживается | |
| linux-hwe-6.11 | Отслеживается |