]> git.hungrycats.org Git - linux/commit
regulator: Fix deadlock during regulator registration
authorJon Hunter <jonathanh@nvidia.com>
Wed, 30 Mar 2016 16:09:13 +0000 (17:09 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 8 Jun 2016 01:23:43 +0000 (18:23 -0700)
commit18055cbc5e852cda2b1dc7486f85e8af626d8a02
treea525464277a2825e079abcf4812efad718a722cb
parent55d37507a61b889945fac08f3ea7b3a0c8d95522
regulator: Fix deadlock during regulator registration

commit a2151374230820a3a6e654f2998b2a44dbfae4e1 upstream.

Commit 5e3ca2b349b1 ("regulator: Try to resolve regulators supplies on
registration") added a call to regulator_resolve_supply() within
regulator_register() where the regulator_list_mutex is held. This causes
a deadlock to occur on the Tegra114 Dalmore board when the palmas PMIC
is registered because regulator_register_resolve_supply() calls
regulator_dev_lookup() which may try to acquire the regulator_list_mutex
again.

Fix this by releasing the mutex before calling
regulator_register_resolve_supply() and update the error exit path to
ensure the mutex is released on an error.

[Made commit message more legible -- broonie]

Signed-off-by: Jon Hunter <jonathanh@nvidia.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/regulator/core.c