Неприятная ошибка драйвера Linux 6.3 Nouveau, похоже, была устранена

В продолжение потенциально опасной ошибки драйвера NVIDIA «Nouveau» с открытым исходным кодом в Linux 6.3, проблема, как полагают, была решена, и в настоящее время готовится патч, который, похоже, устранит ее.

Несколько дней назад было разослано предупреждение о необходимости избегать использования Nouveau в текущей стабильной серии Linux 6.3 из-за проблемы use-after-free в этом графическом драйвере ядра. Проблема use-after-free может привести к повреждению памяти ядра, что в свою очередь может вызвать повреждение файловой системы или другие системные проблемы, не говоря уже о возможных проблемах безопасности.

Дэвид Эйрли из Red Hat считает, что теперь он разобрался с проблемой из сообщения об ошибке месячной давности. Вчера Эйрли опубликовал патч в качестве предлагаемого исправления. На данный момент и разработчик Nouveau Кароль Хербст из Red Hat, и другой пользователь, ранее столкнувшийся с этой проблемой, сообщили, что проблема использования после освобождения теперь исключена.

Эйрли объяснил, когда размещал патч на dri-devel:

«Похоже, это существовало всегда, но теперь стало более очевидным после 9bff18d13473a9fdf81d5158248472a9d8ecf2bd (drm/ttm: use per BO cleanup workers).

Мой анализ:
запущено два потока, один в irq, сигнализирующий об ограждении, в dma_fence_signal_timestamp_locked, он выполнил установку DMA_FENCE_FLAG_SIGNALLED_BIT, но еще не дошел до обратных вызовов.

второй поток в nouveau_cli_work_ready, где он видит, что сигнализируется забор, поэтому ставит забор, очищает объект и освобождает рабочий элемент, который содержит обратный вызов.

первый поток снова пытается вызвать обратный вызов и вызывает use-after-free.

Предлагаемое исправление:
заблокировать проверку сигнала ограждения в nouveau_cli_work_ready, чтобы либо обратные вызовы были выполнены, либо память была освобождена.»

С помощью нескольких строк кода проблема, будем надеяться, решена.

На данный момент патч все еще находится в списке рассылки, но предположительно будет отправлен в следующий раунд отправки DRM-исправлений для основного ядра.

Linux 6.4 исправляет проблему использования после свободного доступа драйвера NVIDIA с открытым исходным кодом

В продолжение исправление теперь слито в Linux 6.4 Git и, в свою очередь, должно быть подхвачено в предстоящем точечном релизе Linux 6.3.

В пятницу вечером Линус Торвальдс объединил drm-fixes-2023-06-17, который содержит ряд исправлений для AMDGPU плюс исправление Nouveau. В ближайшие дни это исправление также должно быть подхвачено стабильной серией Linux 6.3 в следующем точечном выпуске или двух.

Также есть ряд исправлений AMDGPU, которые были объединены этим PR в преддверии воскресного релиза Linux 6.4-rc7.

Один мальчик подписался на телеграм-канал Игры в Linux и получил бесплатную игру в Steam! Новости из мира игр в Linux, свежие обзоры игр и полезные инструкции всегда под рукой!

Источник
Константин Дьяченко

Автор и основатель сайта Игры в Linux с 2010 года. Пользователь Linux с 2002. Старый злобный сисадмин с 1997.

Если Вам интересна тематика сайта и вы хотите каким-то образом поучаствовать в жизни сайта и его сообществ - напишите мне! Все контакты в разделе о сайте.

Игры в Linux
Добавить комментарий

Поля email и сайт не являются обязательными. Оставляя комментарий вы соглашаетесь с политикой конфиденциальности сайта.