From: Arnd Bergmann <arnd@kernel.org>
To: Wolfram Sang <wsa+renesas@sang-engineering.com>,
Heiner Kallweit <hkallweit1@gmail.com>
Cc: "Arnd Bergmann" <arnd@arndb.de>,
"Andi Shyti" <andi.shyti@kernel.org>,
"Greg Kroah-Hartman" <gregkh@linuxfoundation.org>,
"Guenter Roeck" <linux@roeck-us.net>,
"Joe Hattori" <joe@pf.is.s.u-tokyo.ac.jp>,
"Uwe Kleine-König" <u.kleine-koenig@baylibre.com>,
"Hans de Goede" <hdegoede@redhat.com>,
linux-i2c@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: [PATCH] Revert "i2c: core: Allocate temp client on the stack in i2c_detect"
Date: Fri, 21 Feb 2025 21:54:40 +0100 [thread overview]
Message-ID: <20250221205449.3838714-1-arnd@kernel.org> (raw)
From: Arnd Bergmann <arnd@arndb.de>
struct i2c_client is way too large to be put on the kernel stack, and depending
on the kernel configuration, this can exceed the compile-time warning limit:
drivers/i2c/i2c-core-base.c:1420:12: error: stack frame size (1040) exceeds limit (1024) in 'i2c_do_add_adapter' [-Werror,-Wframe-larger-than]
1420 | static int i2c_do_add_adapter(struct i2c_driver *driver,
| ^
The current version is the result of a cleanup patch that does not appear
to be a requirement for anything else, so address the problem through a
simple revert.
Fixes: 735668f8e5c9 ("i2c: core: Allocate temp client on the stack in i2c_detect")
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
drivers/i2c/i2c-core-base.c | 13 ++++++++-----
1 file changed, 8 insertions(+), 5 deletions(-)
diff --git a/drivers/i2c/i2c-core-base.c b/drivers/i2c/i2c-core-base.c
index 35a221e2c11c..5c9419e95044 100644
--- a/drivers/i2c/i2c-core-base.c
+++ b/drivers/i2c/i2c-core-base.c
@@ -2506,7 +2506,7 @@ static int i2c_detect_address(struct i2c_client *temp_client,
static int i2c_detect(struct i2c_adapter *adapter, struct i2c_driver *driver)
{
const unsigned short *address_list;
- struct i2c_client temp_client;
+ struct i2c_client *temp_client;
int i, err = 0;
address_list = driver->address_list;
@@ -2527,19 +2527,22 @@ static int i2c_detect(struct i2c_adapter *adapter, struct i2c_driver *driver)
return 0;
/* Set up a temporary client to help detect callback */
- memset(&temp_client, 0, sizeof(temp_client));
- temp_client.adapter = adapter;
+ temp_client = kzalloc(sizeof(struct i2c_client), GFP_KERNEL);
+ if (!temp_client)
+ return -ENOMEM;
+ temp_client->adapter = adapter;
for (i = 0; address_list[i] != I2C_CLIENT_END; i += 1) {
dev_dbg(&adapter->dev,
"found normal entry for adapter %d, addr 0x%02x\n",
i2c_adapter_id(adapter), address_list[i]);
- temp_client.addr = address_list[i];
- err = i2c_detect_address(&temp_client, driver);
+ temp_client->addr = address_list[i];
+ err = i2c_detect_address(temp_client, driver);
if (unlikely(err))
break;
}
+ kfree(temp_client);
return err;
}
--
2.39.5
next reply other threads:[~2025-02-21 20:54 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-02-21 20:54 Arnd Bergmann [this message]
2025-02-21 21:29 ` [PATCH] Revert "i2c: core: Allocate temp client on the stack in i2c_detect" Guenter Roeck
2025-02-22 9:32 ` Wolfram Sang
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20250221205449.3838714-1-arnd@kernel.org \
--to=arnd@kernel.org \
--cc=andi.shyti@kernel.org \
--cc=arnd@arndb.de \
--cc=gregkh@linuxfoundation.org \
--cc=hdegoede@redhat.com \
--cc=hkallweit1@gmail.com \
--cc=joe@pf.is.s.u-tokyo.ac.jp \
--cc=linux-i2c@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux@roeck-us.net \
--cc=u.kleine-koenig@baylibre.com \
--cc=wsa+renesas@sang-engineering.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.