[pso] [IxiaChallenge] struct proto & struct kmem_cache

Cosmin Ratiu cosminratiu at gmail.com
Sun May 8 17:34:55 EEST 2011


Ar trebui sa mearga.
Singura chestie la care ma gandesc este ca poate nu ai facut
proto_register la stp_prot?

In orice caz, poti posta te rog stack trace + detalii? Ca sa nu ne mai
tot invartim in jurul problemei...

Cosmin.

2011/5/8 Lavinia Petrache <lavinia.petrache at gmail.com>:
> Am copiat gresit din codul meu: in stp_sock este "struct sock sk;". Problema
> e in continuare valabila.
>
> 2011/5/8 Lavinia Petrache <lavinia.petrache at gmail.com>
>>
>> Buna,
>> Aveam initial sizeof(struct sock). Am inlocuit cum mi-ai sugerat, iar acum
>> primesc kernel bug "unable to handle the kernel". Postez aici fragmentul de
>> cod pentru ca nici nu mai stiu ce indicii sa dau referitoare la problema:
>> struct stp_sock {
>> struct sock;
>> int extra;
>> };
>> static struct proto stp_prot = {
>> .name = STP_PROTO_NAME,
>> .owner = THIS_MODULE,
>> .obj_size = sizeof(struct stp_sock),
>> };
>> sk = sk_alloc(net, PF_STP, GFP_KERNEL, &stp_prot);
>> In stp_sock ar trebui sa pun ceva mai util inca de la inceput ca sa
>> functioneze?
>> Lavinia
>> 2011/5/8 Cosmin Ratiu <cosminratiu at gmail.com>
>>>
>>> Salut,
>>>
>>> Asigura-te ca ai o structura 'struct stp_sock' care sa contina ca
>>> primul membru 'struct sock'. obj_size trebuie sa fie dimensiunea
>>> structurii stp_sock.
>>>
>>> Cosmin.
>>>
>>>
>>> 2011/5/8 Lavinia Petrache <lavinia.petrache at gmail.com>:
>>> > Salut din nou!
>>> > In continuare am probleme la struct sock . Cand apelez sk_alloc, crapa
>>> > complet iar stack trace imi spune ca pica la functia
>>> > kmem_cache_alloc_notrace, pe care nu am reusit sa o depistez. Am
>>> > incercat sa
>>> > ocolesc oarecum problema si am alocat sk folosind kmalloc, insa cand am
>>> > apelat functia sock_init_data s-a intamplat la fel.
>>> > De la ce ar putea sa fie problema? In struct proto am initializat
>>> > campurile
>>> > name, owner si obj_size. Mai trebuie adaugat si altceva pe langa
>>> > acestea? La
>>> > cat trebuie initializat obj_size? Presimt ca fac ceva fundamental
>>> > gresit...
>>> > In speranta ca poate mai exista lume treaza,
>>> > Lavinia
>>> >
>>> > 2011/5/7 Lavinia Petrache <lavinia.petrache at gmail.com>
>>> >>
>>> >> Multumesc, intr-adevar de la asta era, nu m-am uitat prea bine pe unde
>>> >> o
>>> >> lua functia de alocare :)
>>> >>
>>> >> Lavinia
>>> >>
>>> >> 2011/5/7 Vlad Dogaru <ddvlad at rosedu.org>
>>> >>>
>>> >>> On 5/7/2011 4:37 PM, Lavinia Petrache wrote:
>>> >>> > Buna!
>>> >>> >
>>> >>> > Am inregistrat o structura struct proto pentru a putea avea
>>> >>> > intrarea
>>> >>> > protocolului in tabela din /proc/net/protocols. In continuare, am
>>> >>> > observat (sau cel putin presupun) ca imi trebuie aceasta structura
>>> >>> > in
>>> >>> > functia create a structurii net_proto_family. Intampin insa
>>> >>> > urmatoarea
>>> >>> > problema: cand aloc memorie pentru struct sock cu sk_alloc, aceasta
>>> >>> > functie primeste ca parametru adresa structurii protocolului. Cum
>>> >>> > ar
>>> >>> > trebui sa initializez restul campurilor din structura? Initial imi
>>> >>> > crapa
>>> >>> > deoarece nu aveam initializat campul slab din ea.
>>> >>>
>>> >>> Poți să nu declari un slab separat, se va folosi kmalloc dacă
>>> >>> prot->slab
>>> >>> e NULL [1]. S-ar putea să crape pentru că nu ai setat prot->obj_size
>>> >>> (e
>>> >>> folosit tot la [1]).
>>> >>>
>>> >>> [1] http://lxr.linux.no/#linux+v2.6.38/net/core/sock.c#L1043
>>> >>>
>>> >>> Vlad
>>> >>> _______________________________________________
>>> >>> http://elf.cs.pub.ro/so2/wiki/resurse/lista-discutii
>>> >
>>> >
>>> > _______________________________________________
>>> > http://elf.cs.pub.ro/so2/wiki/resurse/lista-discutii
>>> >
>>> _______________________________________________
>>> http://elf.cs.pub.ro/so2/wiki/resurse/lista-discutii
>
>
> _______________________________________________
> http://elf.cs.pub.ro/so2/wiki/resurse/lista-discutii
>


More information about the pso mailing list