[pso] [IxiaChallenge] struct proto & struct kmem_cache

Lavinia Petrache lavinia.petrache at gmail.com
Sun May 8 13:12:22 EEST 2011


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
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://cursuri.cs.pub.ro/pipermail/pso/attachments/20110508/1ed56535/attachment.htm>


More information about the pso mailing list