diff options
author | Geert Uytterhoeven <geert+renesas@glider.be> | 2015-06-26 11:14:14 +0200 |
---|---|---|
committer | Rafael J. Wysocki <rafael.j.wysocki@intel.com> | 2015-07-07 01:13:07 +0200 |
commit | 93af5e93544328285a6f65f7d47bbea8979b28fb (patch) | |
tree | 663bee85700a74fd773f2cf3a4860a0107af0160 /drivers/ata | |
parent | Linux 4.2-rc1 (diff) | |
download | linux-93af5e93544328285a6f65f7d47bbea8979b28fb.tar.xz linux-93af5e93544328285a6f65f7d47bbea8979b28fb.zip |
PM / Domains: Avoid infinite loops in attach/detach code
If pm_genpd_{add,remove}_device() keeps on failing with -EAGAIN, we end
up with an infinite loop in genpd_dev_pm_{at,de}tach().
This may happen due to a genpd.prepared_count imbalance. This is a bug
elsewhere, but it will result in a system lock up, possibly during
reboot of an otherwise functioning system.
To avoid this, put a limit on the maximum number of loop iterations,
using an exponential back-off mechanism. If the limit is reached, the
operation will just fail. An error message is already printed.
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Diffstat (limited to 'drivers/ata')
0 files changed, 0 insertions, 0 deletions