Re: [PATCH] [stable-resend] regulator: core: if voltage scaling fails, restore original voltage values
On Tue, 2012-12-18 at 00:23 +0100, Paolo Pisati wrote: > Cc: sta...@vger.kernel.org > Signed-off-by: Paolo Pisati > Tested-by: Robert Nelson > Signed-off-by: Mark Brown Since this is not in Linus's tree, it is too early to request it be applied to stable trees. If it has gone into Mark's tree without the 'cc: stable' then it is probably too late to add that. You'll need to send a request after Linus has merged it. Ben. > --- > drivers/regulator/core.c | 16 ++-- > 1 file changed, 14 insertions(+), 2 deletions(-) > > diff --git a/drivers/regulator/core.c b/drivers/regulator/core.c > index e872c8b..c347fd0 100644 > --- a/drivers/regulator/core.c > +++ b/drivers/regulator/core.c > @@ -2250,6 +2250,7 @@ int regulator_set_voltage(struct regulator *regulator, > int min_uV, int max_uV) > { > struct regulator_dev *rdev = regulator->rdev; > int ret = 0; > + int old_min_uV, old_max_uV; > > mutex_lock(>mutex); > > @@ -2271,18 +2272,29 @@ int regulator_set_voltage(struct regulator > *regulator, int min_uV, int max_uV) > ret = regulator_check_voltage(rdev, _uV, _uV); > if (ret < 0) > goto out; > + > + /* restore original values in case of error */ > + old_min_uV = regulator->min_uV; > + old_max_uV = regulator->max_uV; > regulator->min_uV = min_uV; > regulator->max_uV = max_uV; > > ret = regulator_check_consumers(rdev, _uV, _uV); > if (ret < 0) > - goto out; > + goto out2; > > ret = _regulator_do_set_voltage(rdev, min_uV, max_uV); > - > + if (ret < 0) > + goto out2; > + > out: > mutex_unlock(>mutex); > return ret; > +out2: > + regulator->min_uV = old_min_uV; > + regulator->max_uV = old_max_uV; > + mutex_unlock(>mutex); > + return ret; > } > EXPORT_SYMBOL_GPL(regulator_set_voltage); > -- Ben Hutchings The world is coming to an end. Please log off. signature.asc Description: This is a digitally signed message part
Re: [PATCH] [stable-resend] regulator: core: if voltage scaling fails, restore original voltage values
On Tue, 2012-12-18 at 00:23 +0100, Paolo Pisati wrote: Cc: sta...@vger.kernel.org Signed-off-by: Paolo Pisati paolo.pis...@canonical.com Tested-by: Robert Nelson robertcnel...@gmail.com Signed-off-by: Mark Brown broo...@opensource.wolfsonmicro.com Since this is not in Linus's tree, it is too early to request it be applied to stable trees. If it has gone into Mark's tree without the 'cc: stable' then it is probably too late to add that. You'll need to send a request after Linus has merged it. Ben. --- drivers/regulator/core.c | 16 ++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/drivers/regulator/core.c b/drivers/regulator/core.c index e872c8b..c347fd0 100644 --- a/drivers/regulator/core.c +++ b/drivers/regulator/core.c @@ -2250,6 +2250,7 @@ int regulator_set_voltage(struct regulator *regulator, int min_uV, int max_uV) { struct regulator_dev *rdev = regulator-rdev; int ret = 0; + int old_min_uV, old_max_uV; mutex_lock(rdev-mutex); @@ -2271,18 +2272,29 @@ int regulator_set_voltage(struct regulator *regulator, int min_uV, int max_uV) ret = regulator_check_voltage(rdev, min_uV, max_uV); if (ret 0) goto out; + + /* restore original values in case of error */ + old_min_uV = regulator-min_uV; + old_max_uV = regulator-max_uV; regulator-min_uV = min_uV; regulator-max_uV = max_uV; ret = regulator_check_consumers(rdev, min_uV, max_uV); if (ret 0) - goto out; + goto out2; ret = _regulator_do_set_voltage(rdev, min_uV, max_uV); - + if (ret 0) + goto out2; + out: mutex_unlock(rdev-mutex); return ret; +out2: + regulator-min_uV = old_min_uV; + regulator-max_uV = old_max_uV; + mutex_unlock(rdev-mutex); + return ret; } EXPORT_SYMBOL_GPL(regulator_set_voltage); -- Ben Hutchings The world is coming to an end. Please log off. signature.asc Description: This is a digitally signed message part
[PATCH] [stable-resend] regulator: core: if voltage scaling fails, restore original voltage values
Cc: sta...@vger.kernel.org Signed-off-by: Paolo Pisati Tested-by: Robert Nelson Signed-off-by: Mark Brown --- drivers/regulator/core.c | 16 ++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/drivers/regulator/core.c b/drivers/regulator/core.c index e872c8b..c347fd0 100644 --- a/drivers/regulator/core.c +++ b/drivers/regulator/core.c @@ -2250,6 +2250,7 @@ int regulator_set_voltage(struct regulator *regulator, int min_uV, int max_uV) { struct regulator_dev *rdev = regulator->rdev; int ret = 0; + int old_min_uV, old_max_uV; mutex_lock(>mutex); @@ -2271,18 +2272,29 @@ int regulator_set_voltage(struct regulator *regulator, int min_uV, int max_uV) ret = regulator_check_voltage(rdev, _uV, _uV); if (ret < 0) goto out; + + /* restore original values in case of error */ + old_min_uV = regulator->min_uV; + old_max_uV = regulator->max_uV; regulator->min_uV = min_uV; regulator->max_uV = max_uV; ret = regulator_check_consumers(rdev, _uV, _uV); if (ret < 0) - goto out; + goto out2; ret = _regulator_do_set_voltage(rdev, min_uV, max_uV); - + if (ret < 0) + goto out2; + out: mutex_unlock(>mutex); return ret; +out2: + regulator->min_uV = old_min_uV; + regulator->max_uV = old_max_uV; + mutex_unlock(>mutex); + return ret; } EXPORT_SYMBOL_GPL(regulator_set_voltage); -- 1.7.10.4 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[PATCH] [stable-resend] regulator: core: if voltage scaling fails, restore original voltage values
Cc: sta...@vger.kernel.org Signed-off-by: Paolo Pisati paolo.pis...@canonical.com Tested-by: Robert Nelson robertcnel...@gmail.com Signed-off-by: Mark Brown broo...@opensource.wolfsonmicro.com --- drivers/regulator/core.c | 16 ++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/drivers/regulator/core.c b/drivers/regulator/core.c index e872c8b..c347fd0 100644 --- a/drivers/regulator/core.c +++ b/drivers/regulator/core.c @@ -2250,6 +2250,7 @@ int regulator_set_voltage(struct regulator *regulator, int min_uV, int max_uV) { struct regulator_dev *rdev = regulator-rdev; int ret = 0; + int old_min_uV, old_max_uV; mutex_lock(rdev-mutex); @@ -2271,18 +2272,29 @@ int regulator_set_voltage(struct regulator *regulator, int min_uV, int max_uV) ret = regulator_check_voltage(rdev, min_uV, max_uV); if (ret 0) goto out; + + /* restore original values in case of error */ + old_min_uV = regulator-min_uV; + old_max_uV = regulator-max_uV; regulator-min_uV = min_uV; regulator-max_uV = max_uV; ret = regulator_check_consumers(rdev, min_uV, max_uV); if (ret 0) - goto out; + goto out2; ret = _regulator_do_set_voltage(rdev, min_uV, max_uV); - + if (ret 0) + goto out2; + out: mutex_unlock(rdev-mutex); return ret; +out2: + regulator-min_uV = old_min_uV; + regulator-max_uV = old_max_uV; + mutex_unlock(rdev-mutex); + return ret; } EXPORT_SYMBOL_GPL(regulator_set_voltage); -- 1.7.10.4 -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/