reset: fix shared reset triggered_count decrement on error
authorJerome Brunet <jbrunet@baylibre.com>
Wed, 15 Feb 2017 18:15:51 +0000 (19:15 +0100)
committerPhilipp Zabel <p.zabel@pengutronix.de>
Fri, 17 Feb 2017 07:11:47 +0000 (08:11 +0100)
For a shared reset, when the reset is successful, the triggered_count is
incremented when trying to call the reset callback, so that another device
sharing the same reset line won't trigger it again. If the reset has not
been triggered successfully, the trigger_count should be decremented.

The code does the opposite, and decrements the trigger_count on success.
As a consequence, another device sharing the reset will be able to trigger
it again.

Fixed be removing negation in from of the error code of the reset function.

Fixes: 7da33a37b48f ("reset: allow using reset_control_reset with shared reset")
Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
Acked-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
drivers/reset/core.c

index 10368ed8fd136230d1d9a13492bf557bd063a669..b6f5f1e1826c15c0e7f6db0a9af599dba39d5878 100644 (file)
@@ -163,7 +163,7 @@ int reset_control_reset(struct reset_control *rstc)
        }
 
        ret = rstc->rcdev->ops->reset(rstc->rcdev, rstc->id);
-       if (rstc->shared && !ret)
+       if (rstc->shared && ret)
                atomic_dec(&rstc->triggered_count);
 
        return ret;