Subject: Re: Socket Buffers and Memory Managment

From: Andi Kleen <[email-masked]>
Date: 20 Jul 2007 13:50:30 +0200

Evgeniy Polyakov <[email-masked]> writes:

> Hi.
> 
> On Wed, Jul 18, 2007 at 11:51:03PM -0700, vinay ravuri ([email-masked]) wrote:
> > How about the following approach:
> > 
> > I allocate an skb of 0 bytes and replace data element
> > of skb struct (i.e. skb.data = addr_given_by_hw) when
> > the h/w interrupts me with a packet.  I register for a
> > destructor for this skb and when the kernel is ready
> > to free the skb, I make sure that my free is invoked -
> > Ofcourse this is assuming that their is a facility in
> > linux socket buffers to be able to do destructors.  Is
> > this approach a viable, if so, are any gottcha's?
> 
> It will not work, since kfree_skb() eventually tries to free skb->head
> into kmem cache,

And in addition if the skbuff is ever passed towards the socket
layer the destructor will be overwritten

-Andi