[pso] [IxiaChallenge] struct proto & struct kmem_cache

Lavinia Petrache lavinia.petrache at gmail.com
Sun May 8 19:00:58 EEST 2011


Protocolul este intregistrat cu proto_register(&stp_prot, 0). Stack trace nu
stiu cum sa printez pentru ca imediat cum se apeleaza create apuca sa
printeze doar Unable to handle kernel bug, apoi freezuieste totul. De unde
as putea sa iau informatia asta dupa un reset?

Lavinia

2011/5/8 Cosmin Ratiu <cosminratiu at gmail.com>

> 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
> >
> _______________________________________________
> http://elf.cs.pub.ro/so2/wiki/resurse/lista-discutii
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://cursuri.cs.pub.ro/pipermail/pso/attachments/20110508/11568034/attachment-0001.htm>


More information about the pso mailing list