regulator: fix use after free bug
This is caused by dereferencing 'rdev' after device_unregister() in the regulator_unregister() function. 'rdev' is freed by device_unregister(), so it must not be dereferenced after this call. [Edited commit message for legibility -- broonie] Signed-off-by: Lothar Waßmann <LW@KARO-electronics.de> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
This commit is contained in:
parent
d4d6373c11
commit
58fb5cf5d1
@ -2799,8 +2799,8 @@ void regulator_unregister(struct regulator_dev *rdev)
|
|||||||
list_del(&rdev->list);
|
list_del(&rdev->list);
|
||||||
if (rdev->supply)
|
if (rdev->supply)
|
||||||
regulator_put(rdev->supply);
|
regulator_put(rdev->supply);
|
||||||
device_unregister(&rdev->dev);
|
|
||||||
kfree(rdev->constraints);
|
kfree(rdev->constraints);
|
||||||
|
device_unregister(&rdev->dev);
|
||||||
mutex_unlock(®ulator_list_mutex);
|
mutex_unlock(®ulator_list_mutex);
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(regulator_unregister);
|
EXPORT_SYMBOL_GPL(regulator_unregister);
|
||||||
|
Loading…
Reference in New Issue
Block a user