|
@@ -2200,8 +2200,12 @@ static void binder_transaction(struct binder_proc *proc,
|
|
|
list_add_tail(&t->work.entry, target_list);
|
|
|
tcomplete->type = BINDER_WORK_TRANSACTION_COMPLETE;
|
|
|
list_add_tail(&tcomplete->entry, &thread->todo);
|
|
|
- if (target_wait)
|
|
|
- wake_up_interruptible(target_wait);
|
|
|
+ if (target_wait) {
|
|
|
+ if (reply || !(t->flags & TF_ONE_WAY))
|
|
|
+ wake_up_interruptible_sync(target_wait);
|
|
|
+ else
|
|
|
+ wake_up_interruptible(target_wait);
|
|
|
+ }
|
|
|
return;
|
|
|
|
|
|
err_translate_failed:
|