Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1577974

Re: [PATCH] netlink: move nla_put_{u8,u16,u32} out of line

From David Miller <davem@davemloft.net>
Newsgroups linux.kernel
Subject Re: [PATCH] netlink: move nla_put_{u8,u16,u32} out of line
Date 2017-02-09 22:40 +0100
Message-ID <t94BA-2X8-9@gated-at.bofh.it> (permalink)
References <t8I83-5Aj-39@gated-at.bofh.it>
Organization linux.* mail to news gateway

Show all headers | View raw


From: Arnd Bergmann <arnd@arndb.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@virtuozzo.com>
> Cc: Alexander Potapenko <glider@google.com>
> Cc: Dmitry Vyukov <dvyukov@google.com>
> Cc: kasan-dev@googlegroups.com
> Signed-off-by: Arnd Bergmann <arnd@arndb.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.

Back to linux.kernel | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

[PATCH] netlink: move nla_put_{u8,u16,u32} out of line Arnd Bergmann <arnd@arndb.de> - 2017-02-08 22:40 +0100
  Re: [PATCH] netlink: move nla_put_{u8,u16,u32} out of line Dmitry Vyukov <dvyukov@google.com> - 2017-02-09 12:40 +0100
    Re: [PATCH] netlink: move nla_put_{u8,u16,u32} out of line Arnd Bergmann <arnd@arndb.de> - 2017-02-09 13:00 +0100
      Re: [PATCH] netlink: move nla_put_{u8,u16,u32} out of line Dmitry Vyukov <dvyukov@google.com> - 2017-02-09 13:50 +0100
        Re: [PATCH] netlink: move nla_put_{u8,u16,u32} out of line Arnd Bergmann <arnd@arndb.de> - 2017-02-09 15:50 +0100
          Re: [PATCH] netlink: move nla_put_{u8,u16,u32} out of line Dmitry Vyukov <dvyukov@google.com> - 2017-02-09 18:00 +0100
            Re: [PATCH] netlink: move nla_put_{u8,u16,u32} out of line Arnd Bergmann <arnd@arndb.de> - 2017-02-09 18:10 +0100
              Re: [PATCH] netlink: move nla_put_{u8,u16,u32} out of line Arnd Bergmann <arnd@arndb.de> - 2017-02-10 14:40 +0100
                Re: [PATCH] netlink: move nla_put_{u8,u16,u32} out of line Arnd Bergmann <arnd@arndb.de> - 2017-02-13 17:20 +0100
  Re: [PATCH] netlink: move nla_put_{u8,u16,u32} out of line David Miller <davem@davemloft.net> - 2017-02-09 22:40 +0100
    RE: [PATCH] netlink: move nla_put_{u8,u16,u32} out of line David Laight <David.Laight@ACULAB.COM> - 2017-02-10 13:10 +0100

csiph-web