diff options
author | Wolfram Sang <w.sang@pengutronix.de> | 2010-03-20 10:12:54 -0400 |
---|---|---|
committer | Samuel Ortiz <sameo@linux.intel.com> | 2010-05-27 19:37:28 -0400 |
commit | f322d5f0097333343bfd92b47258ee997c889263 (patch) | |
tree | d6f0d4b0e0f6e6a8fa778a73c740916ca5616dd2 /drivers/mfd/ab3100-core.c | |
parent | d84027bc4d176a0c06e8f62a9f7a002bdd444012 (diff) |
mfd: Fix dangling pointers
Fix I2C-drivers which missed setting clientdata to NULL before freeing the
structure it points to. Also fix drivers which do this _after_ the structure
was freed already.
Signed-off-by: Wolfram Sang <w.sang@pengutronix.de>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
Diffstat (limited to 'drivers/mfd/ab3100-core.c')
-rw-r--r-- | drivers/mfd/ab3100-core.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/mfd/ab3100-core.c b/drivers/mfd/ab3100-core.c index e4ca5909e42..16898211cd1 100644 --- a/drivers/mfd/ab3100-core.c +++ b/drivers/mfd/ab3100-core.c | |||
@@ -920,6 +920,7 @@ static int __init ab3100_probe(struct i2c_client *client, | |||
920 | i2c_unregister_device(ab3100->testreg_client); | 920 | i2c_unregister_device(ab3100->testreg_client); |
921 | exit_no_testreg_client: | 921 | exit_no_testreg_client: |
922 | exit_no_detect: | 922 | exit_no_detect: |
923 | i2c_set_clientdata(client, NULL); | ||
923 | kfree(ab3100); | 924 | kfree(ab3100); |
924 | return err; | 925 | return err; |
925 | } | 926 | } |
@@ -941,6 +942,7 @@ static int __exit ab3100_remove(struct i2c_client *client) | |||
941 | * their notifiers so deactivate IRQ | 942 | * their notifiers so deactivate IRQ |
942 | */ | 943 | */ |
943 | free_irq(client->irq, ab3100); | 944 | free_irq(client->irq, ab3100); |
945 | i2c_set_clientdata(client, NULL); | ||
944 | kfree(ab3100); | 946 | kfree(ab3100); |
945 | return 0; | 947 | return 0; |
946 | } | 948 | } |