mirror of
https://github.com/torvalds/linux.git
synced 2024-12-12 06:02:38 +00:00
Input: lm8323 - do not leave dangling client data pointer
Do not leave dangling client data pointers when unbinding device from the driver or when binding fails for some reason. Signed-off-by: Wolfram Sang <w.sang@pengutronix.de> Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
This commit is contained in:
parent
d6372b706e
commit
a5b33e6a20
@ -670,8 +670,6 @@ static int __devinit lm8323_probe(struct i2c_client *client,
|
||||
goto fail1;
|
||||
}
|
||||
|
||||
i2c_set_clientdata(client, lm);
|
||||
|
||||
lm->client = client;
|
||||
lm->idev = idev;
|
||||
mutex_init(&lm->lock);
|
||||
@ -753,6 +751,8 @@ static int __devinit lm8323_probe(struct i2c_client *client,
|
||||
goto fail4;
|
||||
}
|
||||
|
||||
i2c_set_clientdata(client, lm);
|
||||
|
||||
device_init_wakeup(&client->dev, 1);
|
||||
enable_irq_wake(client->irq);
|
||||
|
||||
@ -778,6 +778,8 @@ static int __devexit lm8323_remove(struct i2c_client *client)
|
||||
struct lm8323_chip *lm = i2c_get_clientdata(client);
|
||||
int i;
|
||||
|
||||
i2c_set_clientdata(client, NULL);
|
||||
|
||||
disable_irq_wake(client->irq);
|
||||
free_irq(client->irq, lm);
|
||||
cancel_work_sync(&lm->work);
|
||||
|
Loading…
Reference in New Issue
Block a user