[ovs-dev] [PATCH 1/5] datapath: hide clang frame-overflow warnings

Yi-Hung Wei yihung.wei at gmail.com
Tue Oct 15 18:05:51 UTC 2019


On Wed, Oct 9, 2019 at 2:23 PM Greg Rose <gvrose8192 at gmail.com> wrote:
>
> From: Arnd Bergmann <arnd at arndb.de>
>
> Upstream commit:
>     commit 260637903f47f20c5918bb5c1eea52b2a28ea863
>     Author: Arnd Bergmann <arnd at arndb.de>
>     Date:   Mon Jul 22 17:00:01 2019 +0200
>
>     ovs: datapath: hide clang frame-overflow warnings
>
>     Some functions in the datapath code are factored out so that each
>     one has a stack frame smaller than 1024 bytes with gcc. However,
>     when compiling with clang, the functions are inlined more aggressively
>     and combined again so we get
>
>     net/openvswitch/datapath.c:1124:12: error: stack frame size of 1528 bytes in function 'ovs_flow_cmd_set' [-Werror,-Wframe-larger-than=]
>
>     Marking both get_flow_actions() and ovs_nla_init_match_and_action()
>     as 'noinline_for_stack' gives us the same behavior that we see with
>     gcc, and no warning. Note that this does not mean we actually use
>     less stack, as the functions call each other, and we still get
>     three copies of the large 'struct sw_flow_key' type on the stack.
>
>     The comment tells us that this was previously considered safe,
>     presumably since the netlink parsing functions are called with
>     a known backchain that does not also use a lot of stack space.
>
>     Fixes: 9cc9a5cb176c ("datapath: Avoid using stack larger than 1024.")
>     Signed-off-by: Arnd Bergmann <arnd at arndb.de>
>     Signed-off-by: David S. Miller <davem at davemloft.net>
>
> Cc: Arnd Bergmann <arnd at arndb.de>
> Signed-off-by: Greg Rose <gvrose8192 at gmail.com>
> ---
Looks good to me.

Acked-by: Yi-Hung Wei <yihung.wei at gmail.com>


More information about the dev mailing list