From d1b83dd27f1ec80da678d2db00a54ff07de9a5fd Mon Sep 17 00:00:00 2001 From: Serban Constantinescu Date: Wed, 4 Dec 2013 18:09:35 +0000 Subject: [PATCH] staging: android: binder: Add cmd == CMD_NAME handling This patch modifies the functions that need to be passed the explicit command to use a boolean flag. This way we can reuse the code for 64bit compat commands. Signed-off-by: Serban Constantinescu Signed-off-by: John Stultz --- drivers/staging/android/binder.c | 35 ++++++++++++++++---------------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/drivers/staging/android/binder.c b/drivers/staging/android/binder.c index 7d6f0b150e40..392283d4b21c 100644 --- a/drivers/staging/android/binder.c +++ b/drivers/staging/android/binder.c @@ -1719,7 +1719,7 @@ err_no_context_mgr_node: } static void bc_increfs_done(struct binder_proc *proc, - struct binder_thread *thread, uint32_t cmd, + struct binder_thread *thread, bool acquire, void __user *node_ptr, void __user *cookie) { struct binder_node *node; @@ -1728,22 +1728,22 @@ static void bc_increfs_done(struct binder_proc *proc, if (node == NULL) { binder_user_error("%d:%d %s u%p no match\n", proc->pid, thread->pid, - cmd == BC_INCREFS_DONE ? - "BC_INCREFS_DONE" : - "BC_ACQUIRE_DONE", + acquire ? + "BC_ACQUIRE_DONE" : + "BC_INCREFS_DONE", node_ptr); return; } if (cookie != node->cookie) { binder_user_error("%d:%d %s u%p node %d cookie mismatch %p != %p\n", proc->pid, thread->pid, - cmd == BC_INCREFS_DONE ? - "BC_INCREFS_DONE" : "BC_ACQUIRE_DONE", + acquire ? + "BC_ACQUIRE_DONE" : "BC_INCREFS_DONE", node_ptr, node->debug_id, cookie, node->cookie); return; } - if (cmd == BC_ACQUIRE_DONE) { + if (acquire) { if (node->pending_strong_ref == 0) { binder_user_error("%d:%d BC_ACQUIRE_DONE node %d has no pending acquire request\n", proc->pid, thread->pid, @@ -1760,13 +1760,13 @@ static void bc_increfs_done(struct binder_proc *proc, } node->pending_weak_ref = 0; } - binder_dec_node(node, cmd == BC_ACQUIRE_DONE, 0); + binder_dec_node(node, acquire, 0); binder_debug(BINDER_DEBUG_USER_REFS, "%d:%d %s node %d ls %d lw %d\n", proc->pid, thread->pid, - cmd == BC_INCREFS_DONE ? - "BC_INCREFS_DONE" : - "BC_ACQUIRE_DONE", + acquire ? + "BC_ACQUIRE_DONE" : + "BC_INCREFS_DONE", node->debug_id, node->local_strong_refs, node->local_weak_refs); return; @@ -1811,7 +1811,7 @@ static void bc_free_buffer(struct binder_proc *proc, } static void bc_clear_death_notif(struct binder_proc *proc, - struct binder_thread *thread, uint32_t cmd, + struct binder_thread *thread, bool request, uint32_t target, void __user *cookie) { struct binder_ref *ref; @@ -1821,7 +1821,7 @@ static void bc_clear_death_notif(struct binder_proc *proc, if (ref == NULL) { binder_user_error("%d:%d %s invalid ref %d\n", proc->pid, thread->pid, - cmd == BC_REQUEST_DEATH_NOTIFICATION ? + request ? "BC_REQUEST_DEATH_NOTIFICATION" : "BC_CLEAR_DEATH_NOTIFICATION", target); @@ -1831,13 +1831,13 @@ static void bc_clear_death_notif(struct binder_proc *proc, binder_debug(BINDER_DEBUG_DEATH_NOTIFICATION, "%d:%d %s %p ref %d desc %d s %d w %d for node %d\n", proc->pid, thread->pid, - cmd == BC_REQUEST_DEATH_NOTIFICATION ? + request ? "BC_REQUEST_DEATH_NOTIFICATION" : "BC_CLEAR_DEATH_NOTIFICATION", cookie, ref->debug_id, ref->desc, ref->strong, ref->weak, ref->node->debug_id); - if (cmd == BC_REQUEST_DEATH_NOTIFICATION) { + if (request) { if (ref->death) { binder_user_error("%d:%d BC_REQUEST_DEATH_NOTIFICATION death notification already set\n", proc->pid, thread->pid); @@ -2011,7 +2011,7 @@ static int binder_thread_write(struct binder_proc *proc, if (get_user(cookie, (void * __user *)ptr)) return -EFAULT; ptr += sizeof(void *); - bc_increfs_done(proc, thread, cmd, node_ptr, cookie); + bc_increfs_done(proc, thread, cmd == BC_ACQUIRE_DONE, node_ptr, cookie); break; } case BC_ATTEMPT_ACQUIRE: @@ -2089,7 +2089,8 @@ static int binder_thread_write(struct binder_proc *proc, if (get_user(cookie, (void __user * __user *)ptr)) return -EFAULT; ptr += sizeof(void *); - bc_clear_death_notif(proc, thread, cmd, target, cookie); + bc_clear_death_notif(proc, thread, cmd == BC_REQUEST_DEATH_NOTIFICATION, + target, cookie); break; } case BC_DEAD_BINDER_DONE: { -- 2.34.1