Commit 45efe847 authored by Wolfram Sang's avatar Wolfram Sang Committed by Grant Likely

misc/at24: add more sanity checks for parameters

Side-effects happen when passing 0 to either io_limit or page_size. Give
an error in case of this misconfiguration.
Signed-off-by: default avatarWolfram Sang <w.sang@pengutronix.de>
Signed-off-by: default avatarGrant Likely <grant.likely@secretlab.ca>
parent 9ed030d7
...@@ -517,6 +517,11 @@ static int at24_probe(struct i2c_client *client, const struct i2c_device_id *id) ...@@ -517,6 +517,11 @@ static int at24_probe(struct i2c_client *client, const struct i2c_device_id *id)
if (!is_power_of_2(chip.byte_len)) if (!is_power_of_2(chip.byte_len))
dev_warn(&client->dev, dev_warn(&client->dev,
"byte_len looks suspicious (no power of 2)!\n"); "byte_len looks suspicious (no power of 2)!\n");
if (!chip.page_size) {
dev_err(&client->dev, "page_size must not be 0!\n");
err = -EINVAL;
goto err_out;
}
if (!is_power_of_2(chip.page_size)) if (!is_power_of_2(chip.page_size))
dev_warn(&client->dev, dev_warn(&client->dev,
"page_size looks suspicious (no power of 2)!\n"); "page_size looks suspicious (no power of 2)!\n");
...@@ -681,6 +686,11 @@ static struct i2c_driver at24_driver = { ...@@ -681,6 +686,11 @@ static struct i2c_driver at24_driver = {
static int __init at24_init(void) static int __init at24_init(void)
{ {
if (!io_limit) {
pr_err("at24: io_limit must not be 0!\n");
return -EINVAL;
}
io_limit = rounddown_pow_of_two(io_limit); io_limit = rounddown_pow_of_two(io_limit);
return i2c_add_driver(&at24_driver); return i2c_add_driver(&at24_driver);
} }
......
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