[so2] [Ixia Challenge] Obtinerea parametrului 'size'

Cosmin Paraschiv csmnprschv at gmail.com
Sat Mar 23 14:13:19 EET 2013


On 03/22/2013 09:31 PM, Stoica Cosmin wrote:
> Azi am incercat sa capteze si eu valorea care trebuie alocata de 
> __kmalloc si tot nu am reusit kretprobe. In schimb am observat ca daca 
> folosesc jprobe, dimensiunea nu este cea pe care o dau functiei 
> kmalloc, ci difera.
> Pentru testare am creat un modul care aloca memorie cu kmalloc si 
> afiseaza pidul procesului care foloseste functia kmalloc.
>     Ceva de genu :
>   for ( i = 0 ; i < 10; i++){
>        printk( "Fac alocarea %d\n", current->pid);
>         ptr = kmalloc( 3000, GFP_ATOMIC);
>    }

Tu ai creat un interceptor pentru apelul '__kmalloc'. Ergo, pe acesta 
trebuie sa il apelezi din modulul de test, nu pe 'kmalloc'. Trebuie 
tinut cont si de faptul ca 'module_exit' apeleaza 'cleanup_module', 
motiv pentru care o sa te trezesti cu cateva '__kmalloc'-uri si 
'kfree'-uri venite de nicaieri.

> PS:
>      Cam aceleasi valori obtin si pentru kretprobe pt registrul ax. In 
> acela se salveaza valoarea primului parametru sau bx?

Pentru kretprobe, In handler-ul de intrare, in registrul ax o sa gasesti 
primul parametru, adica dimensiunea, iar in handler-ul de intoarcere o 
sa gasesti adresa intoarsa de apelul '__kmalloc'.

P.S.: Nu imi dau seama daca exista o regula de plasare a parametrilor in 
registre. Parametrul 'flags', spre exemplu, este plasat in registrul dx, 
nu in bx.



More information about the so2 mailing list