Desenvolvedores do proxecto Grsecurity
No proceso de probar o parche, os desenvolvedores notaron que ao construír, o compilador mostra unha advertencia sobre a mestura de código e definicións (a estrutura definiuse despois do código asignando un valor a unha variable existente):
índice int = n;
if (n < HBP_NUM) { índice = array_index_nospec (índice, HBP_NUM); struct perf_event *bp = thread->ptrace_bps[índice];
Linus aceptou
if (n < HBP_NUM) { int índice = array_index_nospec (n, HBP_NUM); struct perf_event *bp = thread->ptrace_bps[índice];
En xullo, a corrección tamén foi portada ás ramas estables do núcleo 4.4, 4.9, 4.14, 4.19 e 5.2. Os mantedores estables tamén atoparon o aviso e, en lugar de comprobar se xa estaba solucionado na rama mestra de Linus, parchearon eles mesmos. O problema é que eles, sen pensar moito, só
índice int = n;
if (n < HBP_NUM ){ struct perf_event *bp = thread->ptrace_bps[índice];
índice = array_index_nospec (índice, HBP_NUM);
Fonte: opennet.ru