lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <365f58ae-d6c5-c9b3-631b-7e9266e91db5@infradead.org>
Date:   Sat, 5 Jun 2021 21:55:14 -0700
From:   Randy Dunlap <rdunlap@...radead.org>
To:     Dmitry Torokhov <dmitry.torokhov@...il.com>,
        kernel test robot <lkp@...el.com>
Cc:     Jeff LaBundy <jeff@...undy.com>, kbuild-all@...ts.01.org,
        clang-built-linux@...glegroups.com, linux-kernel@...r.kernel.org
Subject: Re: drivers/input/misc/iqs626a.c:1645:12: warning: stack frame size
 of 2560 bytes in function 'iqs626_probe'

On 6/5/21 9:43 PM, Dmitry Torokhov wrote:
> On Sun, Jun 06, 2021 at 12:37:43PM +0800, kernel test robot wrote:
>> Hi Jeff,
>>
>> FYI, the error/warning still remains.
> 
> I have no idea how it happens... 
> 
>>> 1645	static int iqs626_probe(struct i2c_client *client)
>>   1646	{
>>   1647		struct iqs626_ver_info ver_info;
> 
> This is 4 bytes.
> 
>>   1648		struct iqs626_private *iqs626;
> 
> This is 4 or 8.
> 
>>   1649		int error;
> 
> And another 4. And that is it. The bloat must be coming from elsewhere.

In my experience, this stack usage comes from a compiler deciding to
inline some called function(s) that has(have) more stack usage...

Aha, I see that Paul just referred another stack frame size report to
a commit that uses 'noinline' for some called function(s):

https://lore.kernel.org/lkml/20210606044926.GJ4397@paulmck-ThinkPad-P17-Gen-1/T/#m4a6ab160a5d9d974cf9ac524836a6292d73128e2


>>   1650	
>>   1651		iqs626 = devm_kzalloc(&client->dev, sizeof(*iqs626), GFP_KERNEL);
>>   1652		if (!iqs626)
>>   1653			return -ENOMEM;
>>   1654	
>>   1655		i2c_set_clientdata(client, iqs626);
>>   1656		iqs626->client = client;
>>   1657	
>>   1658		iqs626->regmap = devm_regmap_init_i2c(client, &iqs626_regmap_config);
>>   1659		if (IS_ERR(iqs626->regmap)) {
>>   1660			error = PTR_ERR(iqs626->regmap);
>>   1661			dev_err(&client->dev, "Failed to initialize register map: %d\n",
>>   1662				error);
>>   1663			return error;
>>   1664		}
>>   1665	
>>   1666		init_completion(&iqs626->ati_done);
>>   1667	
>>   1668		error = regmap_raw_read(iqs626->regmap, IQS626_VER_INFO, &ver_info,
>>   1669					sizeof(ver_info));
>>   1670		if (error)
>>   1671			return error;
>>   1672	
>>   1673		if (ver_info.prod_num != IQS626_VER_INFO_PROD_NUM) {
>>   1674			dev_err(&client->dev, "Unrecognized product number: 0x%02X\n",
>>   1675				ver_info.prod_num);
>>   1676			return -EINVAL;
>>   1677		}
>>   1678	
>>   1679		error = iqs626_parse_prop(iqs626);
>>   1680		if (error)
>>   1681			return error;
>>   1682	
>>   1683		error = iqs626_input_init(iqs626);
>>   1684		if (error)
>>   1685			return error;
>>   1686	
>>   1687		error = devm_request_threaded_irq(&client->dev, client->irq,
>>   1688						  NULL, iqs626_irq, IRQF_ONESHOT,
>>   1689						  client->name, iqs626);
>>   1690		if (error) {
>>   1691			dev_err(&client->dev, "Failed to request IRQ: %d\n", error);
>>   1692			return error;
>>   1693		}
>>   1694	
>>   1695		if (!wait_for_completion_timeout(&iqs626->ati_done,
>>   1696						 msecs_to_jiffies(2000))) {
>>   1697			dev_err(&client->dev, "Failed to complete ATI\n");
>>   1698			return -ETIMEDOUT;
>>   1699		}
>>   1700	
>>   1701		/*
>>   1702		 * The keypad may include one or more switches and is not registered
>>   1703		 * until ATI is complete and the initial switch states are read.
>>   1704		 */
>>   1705		error = input_register_device(iqs626->keypad);
>>   1706		if (error)
>>   1707			dev_err(&client->dev, "Failed to register keypad: %d\n", error);
>>   1708	
>>   1709		return error;
>>   1710	}
>>   1711	
> 
> Thanks.
> 


-- 
~Randy

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ