[pso] [Tema 1] Race acceptabil?

Octavian Voicu octavian.voicu at gmail.com
Mon Mar 29 12:06:59 EEST 2010


2010/3/29 Vladimir-Andrei Olteanu <kooliva at gmail.com>:
> Salut!
>
> E acceptabil urmatorul scenariu?
>
> T1: interceptare apel de sistem monitorizat (neterminata)
> T2: cerere de oprire a monitorizarii (terminata)
> T3: aparitia mesajului
>
> Apelarea functiei originale intr-o zona protejata cu un spinlock poate cauza
> probleme. (De ex: pe Linux poate ca face sleep; pe Windows se schimba
> IRQL-ul si primul acces la memoria din userspace = BSOD).

Nu ai nevoie sa apelezi functia din spinlock (si da, ar fi gresit sa
faci asta). In mod normal ai un backup al tabelei de syscall-uri (pe
windows e clonata, pe linux poti face backup la inserarea modulului).
Daca faci backup al handler-ului vechi abia in momentul interceptarii
(si la deinterceptare il setezi pe null), poti folosi abordarea lui
Alex cu salvarea pointerului la syscall in zona critica.

> Tester-ul de pe Windows asteapta aparitia mesajelor intr-o bucla infinita
> (deci nu pot aparea probleme). Cel de pe Linux apeleaza dmesg doar odata si
> declara testul picat daca nu gaseste ceea ce cauta (dar asta nu mi s-a
> intamplat inca).

Nu se poate intampla asta. Testerul apeleaza dmesg abia dupa ce s-a
revenit din syscall, deci in acel moment interceptorul tau trebuia sa
fi logat deja mesajul.

Octavian


More information about the pso mailing list