Commit e1f5e848 authored by Jeff LaBundy's avatar Jeff LaBundy Committed by Dmitry Torokhov

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.
Reported-by: default avatarkernel test robot <lkp@intel.com>
Signed-off-by: default avatarJeff LaBundy <jeff@labundy.com>
Link: https://lore.kernel.org/r/20211129004104.453930-1-jeff@labundy.comSigned-off-by: default avatarDmitry Torokhov <dmitry.torokhov@gmail.com>
parent 9222ba68
...@@ -456,9 +456,10 @@ struct iqs626_private { ...@@ -456,9 +456,10 @@ struct iqs626_private {
unsigned int suspend_mode; unsigned int suspend_mode;
}; };
static int iqs626_parse_events(struct iqs626_private *iqs626, static noinline_for_stack int
const struct fwnode_handle *ch_node, iqs626_parse_events(struct iqs626_private *iqs626,
enum iqs626_ch_id ch_id) const struct fwnode_handle *ch_node,
enum iqs626_ch_id ch_id)
{ {
struct iqs626_sys_reg *sys_reg = &iqs626->sys_reg; struct iqs626_sys_reg *sys_reg = &iqs626->sys_reg;
struct i2c_client *client = iqs626->client; struct i2c_client *client = iqs626->client;
...@@ -604,9 +605,10 @@ static int iqs626_parse_events(struct iqs626_private *iqs626, ...@@ -604,9 +605,10 @@ static int iqs626_parse_events(struct iqs626_private *iqs626,
return 0; return 0;
} }
static int iqs626_parse_ati_target(struct iqs626_private *iqs626, static noinline_for_stack int
const struct fwnode_handle *ch_node, iqs626_parse_ati_target(struct iqs626_private *iqs626,
enum iqs626_ch_id ch_id) const struct fwnode_handle *ch_node,
enum iqs626_ch_id ch_id)
{ {
struct iqs626_sys_reg *sys_reg = &iqs626->sys_reg; struct iqs626_sys_reg *sys_reg = &iqs626->sys_reg;
struct i2c_client *client = iqs626->client; struct i2c_client *client = iqs626->client;
...@@ -885,9 +887,10 @@ static int iqs626_parse_trackpad(struct iqs626_private *iqs626, ...@@ -885,9 +887,10 @@ static int iqs626_parse_trackpad(struct iqs626_private *iqs626,
return 0; return 0;
} }
static int iqs626_parse_channel(struct iqs626_private *iqs626, static noinline_for_stack int
const struct fwnode_handle *ch_node, iqs626_parse_channel(struct iqs626_private *iqs626,
enum iqs626_ch_id ch_id) const struct fwnode_handle *ch_node,
enum iqs626_ch_id ch_id)
{ {
struct iqs626_sys_reg *sys_reg = &iqs626->sys_reg; struct iqs626_sys_reg *sys_reg = &iqs626->sys_reg;
struct i2c_client *client = iqs626->client; struct i2c_client *client = iqs626->client;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment