Twórcy projektu Grsecurity
Podczas testowania łatki twórcy zauważyli, że podczas budowania kompilator wyświetla ostrzeżenie o mieszaniu kodu i definicji (struktura została zdefiniowana po kodzie, przypisując wartość istniejącej zmiennej):
int indeks = n;
if (n < HBP_NUM) { indeks = array_index_nospec(indeks, HBP_NUM); struktura perf_event *bp = wątek->ptrace_bps[indeks];
Linus zgodził się
if (n < HBP_NUM) { int indeks = array_index_nospec(n, HBP_NUM); struktura perf_event *bp = wątek->ptrace_bps[indeks];
W lipcu poprawka została również przeniesiona do stabilnych gałęzi jądra 4.4, 4.9, 4.14, 4.19 i 5.2. Opiekunowie gałęzi stabilnych również spotkali się z ostrzeżeniem i zamiast sprawdzić, czy zostało to już naprawione w gałęzi głównej Linusa, sami ją naprawili. Problem w tym, że nawet o tym nie myśląc, po prostu
int indeks = n;
if (n < HBP_NUM ){ struct perf_event *bp = wątek->ptrace_bps[indeks];
indeks = tablica_indeks_nospec(indeks, HBP_NUM);
Źródło: opennet.ru