]> git.baikalelectronics.ru Git - kernel.git/commit
regulator: core: fix use_count leakage when handling boot-on
authorRui Zhang <zr.zhang@vivo.com>
Thu, 1 Dec 2022 03:38:06 +0000 (11:38 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 18 Jan 2023 10:41:38 +0000 (11:41 +0100)
commitc50d705e92fde1850a9e8131d659265fc456f56a
treea5ef6cb04271792276ec6410898a91b537de9c8e
parent9df6217327d2854ee1191cec3758a591458a4c0e
regulator: core: fix use_count leakage when handling boot-on

[ Upstream commit 5cbb58ac27b03ab68f4b08f6ab4d535e2de333f1 ]

I found a use_count leakage towards supply regulator of rdev with
boot-on option.

┌───────────────────┐           ┌───────────────────┐
│  regulator_dev A  │           │  regulator_dev B  │
│     (boot-on)     │           │     (boot-on)     │
│    use_count=0    │◀──supply──│    use_count=1    │
│                   │           │                   │
└───────────────────┘           └───────────────────┘

In case of rdev(A) configured with `regulator-boot-on', the use_count
of supplying regulator(B) will increment inside
regulator_enable(rdev->supply).

Thus, B will acts like always-on, and further balanced
regulator_enable/disable cannot actually disable it anymore.

However, B was also configured with `regulator-boot-on', we wish it
could be disabled afterwards.

Signed-off-by: Rui Zhang <zr.zhang@vivo.com>
Link: https://lore.kernel.org/r/20221201033806.2567812-1-zr.zhang@vivo.com
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/regulator/core.c