Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4eaa63a8 authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "staging: android: binder: Add cmd == CMD_NAME handling"

parents aa4dd178 ab24a041
Loading
Loading
Loading
Loading
+18 −17
Original line number Diff line number Diff line
@@ -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: {