mirror of
https://github.com/torvalds/linux.git
synced 2024-11-28 23:21:31 +00:00
i2c: Check for address business before creating clients
We check for address business in i2c_probe_address(), i2c_detect_address() and i2c_new_probed_device(), but this isn't sufficient. Drivers can call i2c_attach_client() and i2c_new_device() on any address, so we must check the address there as well. This fixes bug #11239: http://bugzilla.kernel.org/show_bug.cgi?id=11239 Signed-off-by: Jean Delvare <khali@linux-fr.org>
This commit is contained in:
parent
8d24f8dcb7
commit
c1159f9e89
@ -813,7 +813,12 @@ static int i2c_check_addr(struct i2c_adapter *adapter, int addr)
|
||||
int i2c_attach_client(struct i2c_client *client)
|
||||
{
|
||||
struct i2c_adapter *adapter = client->adapter;
|
||||
int res = 0;
|
||||
int res;
|
||||
|
||||
/* Check for address business */
|
||||
res = i2c_check_addr(adapter, client->addr);
|
||||
if (res)
|
||||
return res;
|
||||
|
||||
client->dev.parent = &client->adapter->dev;
|
||||
client->dev.bus = &i2c_bus_type;
|
||||
|
Loading…
Reference in New Issue
Block a user