lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Date:	Wed, 12 Mar 2008 17:27:16 +0200 (EET)
From:	"Ilpo Järvinen" <ilpo.jarvinen@...sinki.fi>
To:	Jan Engelhardt <jengelh@...putergmbh.de>
cc:	Patrick McHardy <kaber@...sh.net>, Netdev <netdev@...r.kernel.org>,
	LKML <linux-kernel@...r.kernel.org>,
	David Miller <davem@...emloft.net>,
	Arnaldo Carvalho de Melo <acme@...hat.com>
Subject: Re: [RFC PATCH 3/8] [NET]: uninline dev_alloc_skb, de-bloats a lot

On Thu, 21 Feb 2008, Ilpo Järvinen wrote:

> On Wed, 20 Feb 2008, Jan Engelhardt wrote:
> 
> > On Feb 20 2008 17:27, Patrick McHardy wrote:
> >
> > > __dev_alloc_skb() is also an inline function which performs
> > > some extra work. Which raises the question - if dev_alloc_skb()
> >
> > I'd like to see the results when {__dev_alloc_skb is externed
> > and dev_alloc_skb remains inlined}.
> 
> The results are right under your nose already... ;-)
> See from the list of the series introduction:
> 
>   http://marc.info/?l=linux-netdev&m=120351526210711&w=2
> 
> IMHO more interesting number (which I currently don't have) is the 
> _remaining_ benefits of uninlining __dev_alloc_skb after
> dev_alloc_skb was first uninlined.

I've measured this now... Without many debug CONFIGs (in v2.6.25-rc2-mm1), 
the dev_alloc_skb is much less than 23kB:

    382 funcs, 157 +, 12335 -, diff: -12178 --- dev_alloc_skb
    dev_alloc_skb                 |  +37

...and on top of that, I got only this:
    48 funcs, 111 +, 836 -, diff: -725 --- __dev_alloc_skb

Not that impressive compared with many much worse cases (wasn't a big 
surprise because there were fewer callsites for the latter).

Anyway, would I uninline it (or one some another function that has such 
two variants that are good candidates for uninlining), should I try to 
avoid deepening the call-chain by two functions? To me it seems that only 
way to fool gcc to do that for sure would be using some trick like this:
Rename __dev_alloc_skb to ___dev_alloc_skb in the header (with appropriate
don't ever call this due to bloat comment added) and both __dev_alloc_skb 
and dev_alloc_skb could then be made to call that one in .c file. 
Otherwise I'm not that sure gcc wouldn't try to be too clever if I just 
use inline in .c file.

-- 
 i.

Powered by blists - more mailing lists