Commit 58fb5cf5 authored by Lothar Waßmann's avatar Lothar Waßmann Committed by Mark Brown

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: default avatarLothar Waßmann <LW@KARO-electronics.de>
Signed-off-by: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
parent d4d6373c
...@@ -2799,8 +2799,8 @@ void regulator_unregister(struct regulator_dev *rdev) ...@@ -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(&regulator_list_mutex); mutex_unlock(&regulator_list_mutex);
} }
EXPORT_SYMBOL_GPL(regulator_unregister); EXPORT_SYMBOL_GPL(regulator_unregister);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment