netdev
[Top] [All Lists]

Re: [PATCH] NETLINK: Use SKB_MAXORDER to calculate NLMSG_GOODSIZE

To: Thomas Graf <tgraf@xxxxxxx>
Subject: Re: [PATCH] NETLINK: Use SKB_MAXORDER to calculate NLMSG_GOODSIZE
From: "David S. Miller" <davem@xxxxxxxxxxxxx>
Date: Sun, 6 Feb 2005 22:27:12 -0800
Cc: herbert@xxxxxxxxxxxxxxxxxxx, kuznet@xxxxxxxxxxxxx, netdev@xxxxxxxxxxx
In-reply-to: <20050128234022.GW31837@xxxxxxxxxxxxxx>
References: <20050128230327.GV31837@xxxxxxxxxxxxxx> <E1CufRB-0000zf-00@xxxxxxxxxxxxxxxxxxxxxxxx> <20050128234022.GW31837@xxxxxxxxxxxxxx>
Sender: netdev-bounce@xxxxxxxxxxx
On Sat, 29 Jan 2005 00:40:22 +0100
Thomas Graf <tgraf@xxxxxxx> wrote:

> > > Using SKB_MAXORDER solves this potential leak at the cost of
> > > slightly smaller but safer sizes for some architectures.
> > 
> > At first glance it's not clear which of sk_buff or skb_shared_info
> > is bigger.  So it might even end up being bigger :)
> 
> skb_shared_info is 160 bytes and sk_buff is 196 bytes on my box (x86)
> but that's not the point. We need to take SMP_CACHE_BYTES alignment into
> account which tends to be quite big. The original NLMSG_GOODSIZE
> results in 3908 on my box and gets pumped up to 4128 by skb_alloc
> (ALIGN(...,SMP_CACHE_BYTES) + sizeof(struct skb_shared_info)) having
> SMP_CACHE_BYTES at 128. 

Furthermore, it's not sk_buff that's ever the issue.  The SKB data
area size is where the skb_shared_info gets tacked onto, sk_buff's
size is never added to this calculation.

<Prev in Thread] Current Thread [Next in Thread>