Skip to content

Commit 735668f

Browse files
hkallweitWolfram Sang
authored andcommitted
i2c: core: Allocate temp client on the stack in i2c_detect
The temp client is used only in scope of this function, so there's no benefit in dynamic allocation. Signed-off-by: Heiner Kallweit <[email protected]> Signed-off-by: Wolfram Sang <[email protected]>
1 parent 7fd9d28 commit 735668f

File tree

1 file changed

+5
-8
lines changed

1 file changed

+5
-8
lines changed

drivers/i2c/i2c-core-base.c

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2461,7 +2461,7 @@ static int i2c_detect_address(struct i2c_client *temp_client,
24612461
static int i2c_detect(struct i2c_adapter *adapter, struct i2c_driver *driver)
24622462
{
24632463
const unsigned short *address_list;
2464-
struct i2c_client *temp_client;
2464+
struct i2c_client temp_client;
24652465
int i, err = 0;
24662466

24672467
address_list = driver->address_list;
@@ -2482,22 +2482,19 @@ static int i2c_detect(struct i2c_adapter *adapter, struct i2c_driver *driver)
24822482
return 0;
24832483

24842484
/* Set up a temporary client to help detect callback */
2485-
temp_client = kzalloc(sizeof(struct i2c_client), GFP_KERNEL);
2486-
if (!temp_client)
2487-
return -ENOMEM;
2488-
temp_client->adapter = adapter;
2485+
memset(&temp_client, 0, sizeof(temp_client));
2486+
temp_client.adapter = adapter;
24892487

24902488
for (i = 0; address_list[i] != I2C_CLIENT_END; i += 1) {
24912489
dev_dbg(&adapter->dev,
24922490
"found normal entry for adapter %d, addr 0x%02x\n",
24932491
i2c_adapter_id(adapter), address_list[i]);
2494-
temp_client->addr = address_list[i];
2495-
err = i2c_detect_address(temp_client, driver);
2492+
temp_client.addr = address_list[i];
2493+
err = i2c_detect_address(&temp_client, driver);
24962494
if (unlikely(err))
24972495
break;
24982496
}
24992497

2500-
kfree(temp_client);
25012498
return err;
25022499
}
25032500

0 commit comments

Comments
 (0)