Project

General

Profile

Wiki » History » Revision 8

Revision 7 (Alexey Khoroshilov, 02/22/2022 09:32 PM) → Revision 8/14 (Alexey Khoroshilov, 05/05/2022 12:27 PM)

{{toc}} 

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

 Инструкции по работе с интерфейсом разметки (SVACER) доступны в разделе "файлы":https://forge.ispras.ru/projects/lvc/files. 


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

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

 Для того, чтобы отфильтровать те предупреждения, которые относятся к выбранным подсистемам в режиме Review необходимо нажать на кнопку Filters->Basic... 
 и внизу в поле Files ввести список интересующих путей, например: 
 <pre> 
 security/selinux;net/ipv4 
 </pre> 
 При этом надо убедиться, что кнопка .* рядом с Files нажата. 

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

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

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

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

 <pre><code class="c"> 
   switch () { 
   case ENUM1: 
   ... 
   default: 
     dev_dbg(ice_pf_to_dev(pf), "Invalid container type %d\n", c_type); 
     return -EINVAL; 
   } 
 </code></pre> 

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

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

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

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

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

 


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

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