mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-12-27 12:21:22 -05:00
mfd: cs42l43: Fix issues in probe error paths
The error path in cs42l43_boot_work() will lead to an unbalanced regulator put, when the driver is removed. Fix this by relying on remove to power down the device. Also the boot work needs to be synchronised with driver remove, to ensure the work is not still running after the driver has been removed. Add the required cancel_work_sync(). Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com> Link: https://lore.kernel.org/r/20241002121311.162691-1-ckeepax@opensource.cirrus.com Signed-off-by: Lee Jones <lee@kernel.org>
This commit is contained in:
committed by
Lee Jones
parent
bf231e5feb
commit
e59148b784
@@ -967,7 +967,6 @@ static void cs42l43_boot_work(struct work_struct *work)
|
||||
|
||||
err:
|
||||
pm_runtime_put_sync(cs42l43->dev);
|
||||
cs42l43_dev_remove(cs42l43);
|
||||
}
|
||||
|
||||
static int cs42l43_power_up(struct cs42l43 *cs42l43)
|
||||
@@ -1101,6 +1100,8 @@ EXPORT_SYMBOL_NS_GPL(cs42l43_dev_probe, MFD_CS42L43);
|
||||
|
||||
void cs42l43_dev_remove(struct cs42l43 *cs42l43)
|
||||
{
|
||||
cancel_work_sync(&cs42l43->boot_work);
|
||||
|
||||
cs42l43_power_down(cs42l43);
|
||||
}
|
||||
EXPORT_SYMBOL_NS_GPL(cs42l43_dev_remove, MFD_CS42L43);
|
||||
|
||||
Reference in New Issue
Block a user