From 498bf715b77c68e54d0289fa66e3f112278f87dc Mon Sep 17 00:00:00 2001 From: Carlos Llamas Date: Fri, 3 Jun 2022 17:45:15 +0000 Subject: [PATCH] ANDROID: binder: fold common setup of node_prio The setup of node_prio is always the same, so just fold this logic into binder_transaction_priority() to avoid duplication. Let's pass the node reference instead, which also gives access to node->inherit_rt. There is no functional impact from this patch. Bug: 148101660 Signed-off-by: Carlos Llamas Change-Id: Ib390204556e69c4bc8492cd9cd873773f9cdce42 --- drivers/android/binder.c | 21 ++++++++------------- 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/drivers/android/binder.c b/drivers/android/binder.c index a15dbff3d856..394895775624 100644 --- a/drivers/android/binder.c +++ b/drivers/android/binder.c @@ -725,10 +725,13 @@ static void binder_restore_priority(struct task_struct *task, static void binder_transaction_priority(struct task_struct *task, struct binder_transaction *t, - struct binder_priority node_prio, - bool inherit_rt) + struct binder_node *node) { struct binder_priority desired_prio = t->priority; + const struct binder_priority node_prio = { + .sched_policy = node->sched_policy, + .prio = node->min_priority, + }; if (t->set_priority_called) return; @@ -737,7 +740,7 @@ static void binder_transaction_priority(struct task_struct *task, t->saved_priority.sched_policy = task->policy; t->saved_priority.prio = task->normal_prio; - if (!inherit_rt && is_rt_policy(desired_prio.sched_policy)) { + if (!node->inherit_rt && is_rt_policy(desired_prio.sched_policy)) { desired_prio.prio = NICE_TO_PRIO(0); desired_prio.sched_policy = SCHED_NORMAL; } @@ -2751,14 +2754,11 @@ static int binder_proc_transaction(struct binder_transaction *t, struct binder_thread *thread) { struct binder_node *node = t->buffer->target_node; - struct binder_priority node_prio; bool oneway = !!(t->flags & TF_ONE_WAY); bool pending_async = false; BUG_ON(!node); binder_node_lock(node); - node_prio.prio = node->min_priority; - node_prio.sched_policy = node->sched_policy; if (oneway) { BUG_ON(thread); @@ -2785,8 +2785,7 @@ static int binder_proc_transaction(struct binder_transaction *t, thread = binder_select_thread_ilocked(proc); if (thread) { - binder_transaction_priority(thread->task, t, node_prio, - node->inherit_rt); + binder_transaction_priority(thread->task, t, node); binder_enqueue_thread_work_ilocked(thread, &t->work); } else if (!pending_async) { binder_enqueue_work_ilocked(&t->work, &proc->todo); @@ -4550,14 +4549,10 @@ static int binder_thread_read(struct binder_proc *proc, BUG_ON(t->buffer == NULL); if (t->buffer->target_node) { struct binder_node *target_node = t->buffer->target_node; - struct binder_priority node_prio; trd->target.ptr = target_node->ptr; trd->cookie = target_node->cookie; - node_prio.sched_policy = target_node->sched_policy; - node_prio.prio = target_node->min_priority; - binder_transaction_priority(current, t, node_prio, - target_node->inherit_rt); + binder_transaction_priority(current, t, target_node); cmd = BR_TRANSACTION; } else { trd->target.ptr = 0;