Re: mac80211 truesize bugs

David Miller
2008-05-01T09:56:39Z

From: Johannes Berg <johannes@sipsolutions.net>
Date: Thu, 01 May 2008 11:48:19 +0200

> > Signed-off-by: David S. Miller <davem@davemloft.net>
>
> > + /* This is safe because the buffer has been orphaned. */
> > + skb->truesize += sizeof(*rthdr);
>
> Hmm. The disconnect between truesize and skb->len+sizeof(*skb) was
> usually 17 or 19 bytes and sizeof(*rthdr) is only 11. On the other hand,
> I don't see where the other bytes should be coming from. I'll give this
> a try, thanks.

Grrr, I bet it's coming from a combination of the
skb_set_mac_header(skb, 0); call done by mac80211 and the skb_push()
calls in net/packet/af_packet.c

davem@sunset:~/src/GIT/net-2.6$ egrep skb_push net/packet/af_packet.c
skb_push(skb, skb->data - skb_mac_header(skb));
skb_push(skb, skb->data - skb_mac_header(skb));
skb_push(skb, skb->data - skb_mac_header(skb));
davem@sunset:~/src/GIT/net-2.6$