[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