Quote:
Originariamente inviato da SkyLinx
|
Sì, l'esempio è chiaro in tutte le sue parti. Però quello è l'esempio del Meltdown mentre il mio è del Spectre. Comunque se tu od altri avete capito Meltdown allora vi siete chiesti se forse per risolvere il problema quell'istruzione di accesso alla kernel memory dell'esempio:
w = kern_mem[address] # if we get here crash
dovesse essere eseguita in maniera *non* speculativa? Questo perché non appartiene al set di istruzioni permesse dalla modalità utente, quindi non doveva essere riempito il registro w_ e neppure x_ e neppure doveva esserci l'accesso alla memoria user_mem[x_].
Con questo vincolo il programma sarebbe diventato:
Codice:
t = a+b
u = t+c
v = u+d
if v:
w = kern_mem[address] # if we get here crash
x = w&0x100
y = user_mem[x]
senza alcuna possibilità di out of order e di esecuzione speculativa e cioè non sarebbe stato eseguita la micidiale:
Codice:
t, w_ = a+b, kern_mem[address]
u, x_ = t+c, w_&0x100
v, y_ = u+d, user_mem[x_]
if v:
# crash
w, x, y = w_, x_, y_ # we never get here
Concordi?