2018-11-04 18:36:39

by Toralf Förster

[permalink] [raw]
Subject: may I ignore "net/core/rtnetlink.c:3156:1: warning: the frame size of 1280 bytes ..."?

compiling recent kernel (4.18.x, 4.19.1) at my server I do still get :


net/core/rtnetlink.c: In function ‘rtnl_newlink’:
net/core/rtnetlink.c:3156:1: warning: the frame size of 1280 bytes is larger than 1024 bytes [-Wframe-larger-than=]


with "gcc version 7.3.0 (Gentoo Hardened 7.3.0-r3 p1.4) " and do wonder whether it is safe to ignore it?


--
Toralf
PGP C4EACDDE 0076E94E


2018-11-04 19:23:01

by Joe Perches

[permalink] [raw]
Subject: Re: may I ignore "net/core/rtnetlink.c:3156:1: warning: the frame size of 1280 bytes ..."?

On Sun, 2018-11-04 at 17:14 +0100, Toralf Förster wrote:
> compiling recent kernel (4.18.x, 4.19.1) at my server I do still get :
>
>
> net/core/rtnetlink.c: In function ‘rtnl_newlink’:
> net/core/rtnetlink.c:3156:1: warning: the frame size of 1280 bytes is larger than 1024 bytes [-Wframe-larger-than=]
>
>
> with "gcc version 7.3.0 (Gentoo Hardened 7.3.0-r3 p1.4) " and do wonder whether it is safe to ignore it?
>

This was introduce by a desire to eliminate variable length array
declarations by

commit ccf8dbcd062a930e64741c939ca784d15316aa0c
Author: Kees Cook <
[email protected]>
Date: Wed May 30 15:20:52 2018 -0700

rtnetlink: Remove VLA usage

It does make the stack use here unfortunately obviously large, but
it could have been this large, just unreported.

Perhaps no obvious solution here as an alloc instead of stack use
may be costly.


2018-11-05 19:58:04

by David Ahern

[permalink] [raw]
Subject: Re: may I ignore "net/core/rtnetlink.c:3156:1: warning: the frame size of 1280 bytes ..."?

On 11/4/18 9:14 AM, Toralf Förster wrote:
> compiling recent kernel (4.18.x, 4.19.1) at my server I do still get :
>
>
> net/core/rtnetlink.c: In function ‘rtnl_newlink’:
> net/core/rtnetlink.c:3156:1: warning: the frame size of 1280 bytes is larger than 1024 bytes [-Wframe-larger-than=]
>
>
> with "gcc version 7.3.0 (Gentoo Hardened 7.3.0-r3 p1.4) " and do wonder whether it is safe to ignore it?
>
>

I believe the warning is coming from this part of rtnl_newlink():

if (1) {
struct nlattr *attr[RTNL_MAX_TYPE + 1];
struct nlattr *slave_attr[RTNL_SLAVE_MAX_TYPE + 1];
struct nlattr **data = NULL;
struct nlattr **slave_data = NULL;
struct net *dest_net, *link_net = NULL;

The heavy hitters are:
#define RTNL_MAX_TYPE 49
#define RTNL_SLAVE_MAX_TYPE 36

attr and slave_attr would amount to 696 bytes of that 1280. The earlier
defined:

struct nlattr *tb[IFLA_MAX+1];

Would be another 416, so those 3 are 1112 bytes of the warning.

I have been using CONFIG_FRAME_WARN=2048 for a while without a problem.