Project

General

Profile

Actions

Wiki » History » Revision 8

« Previous | Revision 8/14 (diff) | Next »
Alexey Khoroshilov, 05/05/2022 12:27 PM


Статический анализ ядра

Инструкции по работе с интерфейсом разметки (SVACER) доступны в разделе файлы.

Для получения доступа к временному серверу для совместной работы над разметкой предупреждений SVACE пишите:

На этом сервере необходимо выбрать проект linux, ветка linux-5.10.y, в которой есть единственный снэпшот с результатами.

Для того, чтобы отфильтровать те предупреждения, которые относятся к выбранным подсистемам в режиме Review необходимо нажать на кнопку Filters->Basic...
и внизу в поле Files ввести список интересующих путей, например:

security/selinux;net/ipv4

При этом надо убедиться, что кнопка .* рядом с Files нажата.

По результатам анализа
  1. Необходимо выставить вердикт:
    • Confirmed -- ошибка, которую рекомендуется исправить
    • Won't fix -- истинное срабатывание, которое по тем или иным причинам исправлять нецелесообразно
    • False Positive - ложное срабатывание инструмента статического анализа
    • Unclear - требуется дополнительный анализ
  2. На вкладке Comment необходимо оставить комментарий, поясняющий вердикт.
    Сейчас это обязательно хотя бы в самом коротком виде, т.к. это единственный способ увидеть автора проведённого исследования предупреждения.

Типовые ситуации при разметке предупреждений в ядре

Защитное программирование

Например, чекеры вида UNREACHABLE_CODE.ENUM сообщают о недостижимости кода в switch для ветки по умолчанию, в которой содержится та или иная отладочная печать, например:

  switch () {
  case ENUM1:
  ...
  default:
    dev_dbg(ice_pf_to_dev(pf), "Invalid container type %d\n", c_type);
    return -EINVAL;
  }

Этот код, действительно, недостижим при нормальной работе ядра. Тем не менее, его как правило имеет смысл оставить, чтобы при возникновении нештатных ситуаций, управление пошло по более контролируемой логике и в журнале появилась информация об обнаружении нештатной ситуации.

В этом случае рекомендуется выставить вердикт Won't fix и написать комментарий Защитное программирование.

Недостижимый код, зависящий от конфигурации

Чекеры вида UNREACHABLE_CODE.* сообщают о недостижимости кода, в который, действительно, недостижим в конфигурации, которая подвержалась статическому анализу, но может быть достижим в другой конфигурации. В SVACE в будущем планируется поддержать выявление таких ситуаций и подавлять предупреждения.

До тех пор при разметке предупреждений рекомендуется выставить вердикт Won't fix и написать комментарий Код достижим в другой конфигурации.

Взаимодействие с международным сообществом

Для отправки патчей в основную ветку ядра следуйте следующим инструкциям:
Отправка патчей в ядро.

Updated by Alexey Khoroshilov over 2 years ago · 14 revisions