[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20170209.163123.1938061993523088894.davem@davemloft.net>
Date: Thu, 09 Feb 2017 16:31:23 -0500 (EST)
From: David Miller <davem@...emloft.net>
To: arnd@...db.de
Cc: David.Laight@...lab.com, netdev@...r.kernel.org,
johannes.berg@...el.com, aryabinin@...tuozzo.com,
glider@...gle.com, dvyukov@...gle.com, kasan-dev@...glegroups.com,
nicolas.dichtel@...nd.com, adobriyan@...il.com,
daniel@...earbox.net, tgraf@...g.ch, edumazet@...gle.com,
linux-kernel@...r.kernel.org
Subject: Re: [PATCH] netlink: move nla_put_{u8,u16,u32} out of line
From: Arnd Bergmann <arnd@...db.de>
Date: Wed, 8 Feb 2017 22:18:26 +0100
> When CONFIG_KASAN is enabled, the "--param asan-stack=1" causes rather large
> stack frames in some functions. This goes unnoticed normally because
> CONFIG_FRAME_WARN is disabled with CONFIG_KASAN by default as of commit
> 3f181b4d8652 ("lib/Kconfig.debug: disable -Wframe-larger-than warnings with
> KASAN=y").
>
> The kernelci.org build bot however has the warning enabled and that led
> me to investigate it a little further, as every build produces these warnings:
>
> net/wireless/nl80211.c:4389:1: warning: the frame size of 2240 bytes is larger than 2048 bytes [-Wframe-larger-than=]
> net/wireless/nl80211.c:1895:1: warning: the frame size of 3776 bytes is larger than 2048 bytes [-Wframe-larger-than=]
> net/wireless/nl80211.c:1410:1: warning: the frame size of 2208 bytes is larger than 2048 bytes [-Wframe-larger-than=]
> net/bridge/br_netlink.c:1282:1: warning: the frame size of 2544 bytes is larger than 2048 bytes [-Wframe-larger-than=]
>
> It turns out that there is a relatively simple workaround for the netlink
> users that currently use a local variable in order to do the type conversion:
> Moving the three functions (for each of the typical sizes) to lib/nlattr.c
> avoids using local variables in the caller, which drastically reduces the
> stack usage for nl80211 and br_netlink.
>
> It would be good if we could enable the frame size check after that again,
> but that should be a separate patch and it requires some more testing
> to see which the largest acceptable frame size should be.
>
> Cc: Andrey Ryabinin <aryabinin@...tuozzo.com>
> Cc: Alexander Potapenko <glider@...gle.com>
> Cc: Dmitry Vyukov <dvyukov@...gle.com>
> Cc: kasan-dev@...glegroups.com
> Signed-off-by: Arnd Bergmann <arnd@...db.de>
You should only extern these things when KASAN is enabled.
The reason is that uninlining these routines makes attribute emission
more expensive and for some applications performance of this matters.
Powered by blists - more mailing lists