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
1 changed files with 6 additions and 1 deletions
|
@ -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 a new issue