Input: iqs626a - prohibit inlining of channel parsing functions
Subsystems (2)
PATCH 1/1 Input: iqs626a - prohibit inlining of channel parsing functions
Some automated builds report a stack frame size in excess of 2 kB for iqs626_probe(); the culprit appears to be the call to iqs626_parse_prop().
To solve this problem, specify noinline_for_stack for all of the iqs626_parse_*() helper functions which are called inside a for loop within iqs626_parse_prop().
As a result, a build with '-Wframe-larger-than' as low as 512 is free of any such warnings.
--- drivers/input/misc/iqs626a.c | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-)
drivers/input/misc/iqs626a.c +12 -9
@@ -456,9 +456,10 @@ struct iqs626_private {unsigned int suspend_mode; }; -static int iqs626_parse_events (struct iqs626_private *iqs626, -const struct fwnode_handle *ch_node, -enum iqs626_ch_id ch_id) +static noinline_for_stack int +iqs626_parse_events (struct iqs626_private *iqs626, +const struct fwnode_handle *ch_node, +enum iqs626_ch_id ch_id) {struct iqs626_sys_reg *sys_reg = &iqs626->sys_reg;struct i2c_client *client = iqs626->client;
@@ -604,9 +605,10 @@ static int iqs626_parse_events(struct iqs626_private *iqs626,return 0 ; } -static int iqs626_parse_ati_target (struct iqs626_private *iqs626, -const struct fwnode_handle *ch_node, -enum iqs626_ch_id ch_id) +static noinline_for_stack int +iqs626_parse_ati_target (struct iqs626_private *iqs626, +const struct fwnode_handle *ch_node, +enum iqs626_ch_id ch_id) {struct iqs626_sys_reg *sys_reg = &iqs626->sys_reg;struct i2c_client *client = iqs626->client;
@@ -885,9 +887,10 @@ static int iqs626_parse_trackpad(struct iqs626_private *iqs626,return 0 ; } -static int iqs626_parse_channel (struct iqs626_private *iqs626, -const struct fwnode_handle *ch_node, -enum iqs626_ch_id ch_id) +static noinline_for_stack int +iqs626_parse_channel (struct iqs626_private *iqs626, +const struct fwnode_handle *ch_node, +enum iqs626_ch_id ch_id) {struct iqs626_sys_reg *sys_reg = &iqs626->sys_reg;struct i2c_client *client = iqs626->client;
Signature · 1 line
2.25.1
Quoted 8 lines · Jeff LaBundy
Some automated builds report a stack frame size in excess of 2 kB for
iqs626_probe(); the culprit appears to be the call toiqs626_parse_prop().To solve this problem, specify
noinline_for_stackfor all of the iqs626_parse_*() helper functions which are called inside a for loop withiniqs626_parse_prop().
Quoted 5 lines
As a result, a build with '-Wframe-larger-than' as low as 512 is free of any such warnings.
Reported-by kernel test robot <[email protected]>Signed-off-by Jeff LaBundy <[email protected]>
Applied, thank you.
Signature · 1 line
Dmitry