FAILED: patch "[PATCH] regulator: avoid resolve_supply() infinite recursion" failed to apply to 4.9-stable tree
Subsystems (2)
[email protected]
maintainerThe patch below does not apply to the 4.9-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From 4b639e254d3d4f15ee4ff2b890a447204cfbeea9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Micha=C5=82=20Miros=C5=82aw?= <[email protected]>
Date: Fri, 13 Nov 2020 01:20:28 +0100
Subject: [PATCH] regulator: avoid resolve_supply() infinite recursion
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
When a regulator's name equals its supply's name the regulator_resolve_supply() recurses indefinitely. Add a check so that debugging the problem is easier. The "fixed" commit just exposed the problem.
drivers/regulator/core.c +6 -0
@@ -1841,6 +1841,12 @@ static int regulator_resolve_supply(struct regulator_dev *rdev) } } +if (r == rdev) { +dev_err (dev,"Supply for %s (%s) resolved to itself\n" , + rdev->desc->name, rdev->supply_name); +return -EINVAL ; + } +/* * If the supply's parent device is not the same as the * regulator's parent device, then ensure the parent device
Sudip Mukherjee
Tested-by Ahmad FatoumHi Greg,
Quoted 5 lines · On Mon, Nov 23, 2020 at 10:20:02AM +0100, [email protected] wrote:
The patch below does not apply to the 4.9-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
Here is the backport.
--
Regards
Sudip
From 3ef096ea5d9ec8353a23109cd4d8a326743c7905 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Micha=C5=82=20Miros=C5=82aw?= <[email protected]>
Date: Fri, 13 Nov 2020 01:20:28 +0100
Subject: [PATCH] regulator: avoid resolve_supply() infinite recursion
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
commit 4b639e254d3d4f15ee4ff2b890a447204cfbeea9 upstream
When a regulator's name equals its supply's name the regulator_resolve_supply() recurses indefinitely. Add a check so that debugging the problem is easier. The "fixed" commit just exposed the problem.
--- drivers/regulator/core.c | 6 ++++++ 1 file changed, 6 insertions(+)
drivers/regulator/core.c +6 -0
@@ -1550,6 +1550,12 @@ static int regulator_resolve_supply(struct regulator_dev *rdev) } } +if (r == rdev) { +dev_err (dev,"Supply for %s (%s) resolved to itself\n" , + rdev->desc->name, rdev->supply_name); +return -EINVAL ; + } +/* Recursively resolve the supply of the supply */ ret =regulator_resolve_supply (r);if (ret <0 ) {
Signature · 1 line
2.11.0