binder: make binder_last_id an atomic
authorTodd Kjos <tkjos@android.com>
Thu, 29 Jun 2017 19:01:45 +0000 (12:01 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 17 Jul 2017 12:47:29 +0000 (14:47 +0200)
Use an atomic for binder_last_id to avoid locking it

Signed-off-by: Todd Kjos <tkjos@google.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/android/binder.c

index cd4191d027e1f7d787875c65b8deecf9b453cdfb..25f30d81c7d0cc126dbb2eead4a6b1048554269a 100644 (file)
@@ -59,7 +59,7 @@ static DEFINE_SPINLOCK(binder_dead_nodes_lock);
 
 static struct dentry *binder_debugfs_dir_entry_root;
 static struct dentry *binder_debugfs_dir_entry_proc;
-static int binder_last_id;
+static atomic_t binder_last_id;
 
 #define BINDER_DEBUG_ENTRY(name) \
 static int binder_##name##_open(struct inode *inode, struct file *file) \
@@ -496,7 +496,7 @@ static struct binder_node *binder_new_node(struct binder_proc *proc,
        binder_stats_created(BINDER_STAT_NODE);
        rb_link_node(&node->rb_node, parent, p);
        rb_insert_color(&node->rb_node, &proc->nodes);
-       node->debug_id = ++binder_last_id;
+       node->debug_id = atomic_inc_return(&binder_last_id);
        node->proc = proc;
        node->ptr = ptr;
        node->cookie = cookie;
@@ -639,7 +639,7 @@ static struct binder_ref *binder_get_ref_for_node(struct binder_proc *proc,
        if (new_ref == NULL)
                return NULL;
        binder_stats_created(BINDER_STAT_REF);
-       new_ref->debug_id = ++binder_last_id;
+       new_ref->debug_id = atomic_inc_return(&binder_last_id);
        new_ref->proc = proc;
        new_ref->node = node;
        rb_link_node(&new_ref->rb_node_node, parent, p);
@@ -1527,7 +1527,7 @@ static void binder_transaction(struct binder_proc *proc,
        }
        binder_stats_created(BINDER_STAT_TRANSACTION_COMPLETE);
 
-       t->debug_id = ++binder_last_id;
+       t->debug_id = atomic_inc_return(&binder_last_id);
        e->debug_id = t->debug_id;
 
        if (reply)