firmware: arm_sdei: fix possible double-lock on hibernate error path
authorLiguang Zhang <zhangliguang@linux.alibaba.com>
Fri, 21 Feb 2020 16:35:07 +0000 (16:35 +0000)
committerCatalin Marinas <catalin.marinas@arm.com>
Thu, 27 Feb 2020 17:14:14 +0000 (17:14 +0000)
commitc66d52b1026717135c5030c65e344750161d159b
tree4f8a3fe1c45ec321e2e4a9e5473bbc6725ec4638
parent6ded0b61cf638bf9f8efe60ab8ba23db60ea9763
firmware: arm_sdei: fix possible double-lock on hibernate error path

We call sdei_reregister_event() with sdei_list_lock held, if the register
fails we call sdei_event_destroy() which also acquires sdei_list_lock
thus creating A-A deadlock.

Add '_llocked' to sdei_reregister_event(), to indicate the list lock
is held, and add a _llocked variant of sdei_event_destroy().

Fixes: da351827240e ("firmware: arm_sdei: Add support for CPU and system power states")
Signed-off-by: Liguang Zhang <zhangliguang@linux.alibaba.com>
[expanded subject, added wrappers instead of duplicating contents]
Signed-off-by: James Morse <james.morse@arm.com>
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
drivers/firmware/arm_sdei.c