The binder_deferred_release() function has many levels of indentation
which makes it difficult to read. This patch moves the code which deals
with disposing of a binder node to a separate binder_node_deferred_release()
function, thus removing one level of indentation and allowing the code to
fit in 80 columns.

Signed-off-by: Mirsal Ennaime <mir...@mirsal.fr>
---
 drivers/staging/android/binder.c |   80 +++++++++++++++++++++++---------------
 1 file changed, 49 insertions(+), 31 deletions(-)

diff --git a/drivers/staging/android/binder.c b/drivers/staging/android/binder.c
index 24456a0..11b3f7b 100644
--- a/drivers/staging/android/binder.c
+++ b/drivers/staging/android/binder.c
@@ -2878,11 +2878,57 @@ static int binder_release(struct inode *nodp, struct 
file *filp)
        return 0;
 }
 
+static int binder_node_deferred_release(struct binder_node *node, int refs)
+{
+       struct binder_ref *ref;
+       int death = 0;
+
+       list_del_init(&node->work.entry);
+       binder_release_work(&node->async_todo);
+
+       if (hlist_empty(&node->refs)) {
+               kfree(node);
+               binder_stats_deleted(BINDER_STAT_NODE);
+
+               return refs;
+       }
+
+       node->proc = NULL;
+       node->local_strong_refs = 0;
+       node->local_weak_refs = 0;
+       hlist_add_head(&node->dead_node, &binder_dead_nodes);
+
+       hlist_for_each_entry(ref, &node->refs, node_entry) {
+               refs++;
+
+               if (!ref->death)
+                       goto out;
+
+               death++;
+
+               if (list_empty(&ref->death->work.entry)) {
+                       ref->death->work.type = BINDER_WORK_DEAD_BINDER;
+                       list_add_tail(&ref->death->work.entry,
+                               &ref->proc->todo);
+                       wake_up_interruptible(&ref->proc->wait);
+               } else
+                       BUG();
+       }
+
+out:
+       binder_debug(BINDER_DEBUG_DEAD_BINDER,
+               "node %d now dead, refs %d, death %d\n",
+               node->debug_id, refs, death);
+
+       return refs;
+}
+
 static void binder_deferred_release(struct binder_proc *proc)
 {
        struct binder_transaction *t;
        struct rb_node *n;
-       int threads, nodes, incoming_refs, outgoing_refs, buffers, 
active_transactions, page_count;
+       int threads, nodes, incoming_refs, outgoing_refs, nd_refs,
+               buffers, active_transactions, page_count;
 
        BUG_ON(proc->vma);
        BUG_ON(proc->files);
@@ -2909,36 +2955,8 @@ static void binder_deferred_release(struct binder_proc 
*proc)
 
                nodes++;
                rb_erase(&node->rb_node, &proc->nodes);
-               list_del_init(&node->work.entry);
-               binder_release_work(&node->async_todo);
-               if (hlist_empty(&node->refs)) {
-                       kfree(node);
-                       binder_stats_deleted(BINDER_STAT_NODE);
-               } else {
-                       struct binder_ref *ref;
-                       int death = 0;
-
-                       node->proc = NULL;
-                       node->local_strong_refs = 0;
-                       node->local_weak_refs = 0;
-                       hlist_add_head(&node->dead_node, &binder_dead_nodes);
-
-                       hlist_for_each_entry(ref, &node->refs, node_entry) {
-                               incoming_refs++;
-                               if (ref->death) {
-                                       death++;
-                                       if 
(list_empty(&ref->death->work.entry)) {
-                                               ref->death->work.type = 
BINDER_WORK_DEAD_BINDER;
-                                               
list_add_tail(&ref->death->work.entry, &ref->proc->todo);
-                                               
wake_up_interruptible(&ref->proc->wait);
-                                       } else
-                                               BUG();
-                               }
-                       }
-                       binder_debug(BINDER_DEBUG_DEAD_BINDER,
-                                    "node %d now dead, refs %d, death %d\n",
-                                     node->debug_id, incoming_refs, death);
-               }
+               nd_refs = binder_node_deferred_release(node, incoming_refs);
+               incoming_refs = nd_refs;
        }
        outgoing_refs = 0;
        while ((n = rb_first(&proc->refs_by_desc))) {
-- 
1.7.10.4

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to