Wiki » History » Revision 8
« Previous |
Revision 8/14
(diff)
| Next »
Alexey Khoroshilov, 05/05/2022 12:27 PM
- Table of contents
- Статический анализ ядра
- Взаимодействие с международным сообществом
Статический анализ ядра¶
Инструкции по работе с интерфейсом разметки (SVACER) доступны в разделе файлы.
Для получения доступа к временному серверу для совместной работы над разметкой предупреждений SVACE пишите:
khoroshilov@ispras.ru
На этом сервере необходимо выбрать проект linux, ветка linux-5.10.y, в которой есть единственный снэпшот с результатами.
Для того, чтобы отфильтровать те предупреждения, которые относятся к выбранным подсистемам в режиме Review необходимо нажать на кнопку Filters->Basic...
и внизу в поле Files ввести список интересующих путей, например:
security/selinux;net/ipv4
При этом надо убедиться, что кнопка .* рядом с Files нажата. По результатам анализа
- Необходимо выставить вердикт:
- Confirmed -- ошибка, которую рекомендуется исправить
- Won't fix -- истинное срабатывание, которое по тем или иным причинам исправлять нецелесообразно
- False Positive - ложное срабатывание инструмента статического анализа
- Unclear - требуется дополнительный анализ
- На вкладке 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 · 8 revisions