Entwickler des Grsecurity-Projekts
Beim Testen des Patches stellten die Entwickler fest, dass der Compiler beim Erstellen eine Warnung über die Vermischung von Code und Definitionen anzeigt (die Struktur wurde nach dem Code definiert und einer vorhandenen Variablen einen Wert zugewiesen):
int index = n;
if (n < HBP_NUM) { index = array_index_nospec(index, HBP_NUM); struct perf_event *bp = thread->ptrace_bps[index];
Linus akzeptierte
if (n < HBP_NUM) { int index = array_index_nospec(n, HBP_NUM); struct perf_event *bp = thread->ptrace_bps[index];
Im Juli wurde der Fix auch auf die stabilen Kernel-Zweige 4.4, 4.9, 4.14, 4.19 und 5.2 portiert. Auch die Betreuer der stabilen Zweige stießen auf die Warnung und anstatt zu überprüfen, ob sie bereits im Hauptzweig von Linus behoben wurde, führten sie selbst eine Korrektur durch. Das Problem ist, dass sie, ohne wirklich darüber nachzudenken, einfach
int index = n;
if (n < HBP_NUM ){ struct perf_event *bp = thread->ptrace_bps[index];
index = array_index_nospec(index, HBP_NUM);
Source: opennet.ru