diff options
author | yixuanjiang <yixuanjiang@google.com> | 2021-11-19 17:08:50 +0800 |
---|---|---|
committer | Bart Van Assche <bvanassche@google.com> | 2022-03-17 09:20:57 -0700 |
commit | b151ca1e770d9b215350210c7cd3aacb9e8e387a (patch) | |
tree | ab243971bd6a8cd16af948e3978f0d0eee940053 | |
parent | 32b45e2e08bcb3b6306ec9796d1f50ef44d0d514 (diff) | |
download | aoc-b151ca1e770d9b215350210c7cd3aacb9e8e387a.tar.gz |
aoc: Fix a potential sleep BUG in IRQ handleandroid-s-qpr3-beta-3_r0.5android-12.1.0_r0.35android-12.1.0_r0.28android-gs-raviole-5.10-s-qpr3-beta-3android-gs-raviole-5.10-android12-qpr3
cancel_delayed_work_sync might sleep
but IRQ handle must not sleep.
Modify the aoc monitor cancel flow to prevent it.
Bug: 204814582
Signed-off-by: yixuanjiang <yixuanjiang@google.com>
Change-Id: I12f8c8d268e9fa0e209e73afb54a60cf7cc53bdd
-rw-r--r-- | aoc.c | 3 |
1 files changed, 2 insertions, 1 deletions
@@ -519,7 +519,6 @@ static void aoc_mbox_rx_callback(struct mbox_client *cl, void *mssg) case AOC_STATE_FIRMWARE_LOADED: if (aoc_fw_ready()) { aoc_state = AOC_STATE_STARTING; - cancel_delayed_work_sync(&prvdata->monitor_work); schedule_work(&prvdata->online_work); } break; @@ -2055,6 +2054,8 @@ static void aoc_did_become_online(struct work_struct *work) struct device *dev = prvdata->dev; int i, s; + cancel_delayed_work_sync(&prvdata->monitor_work); + mutex_lock(&aoc_service_lock); s = aoc_num_services(); |