The buffer's transaction has already been freed before
binder_deferred_release. No need to do it again.

Signed-off-by: Todd Kjos <tk...@google.com>
---
 drivers/android/binder.c | 11 ++---------
 1 file changed, 2 insertions(+), 9 deletions(-)

diff --git a/drivers/android/binder.c b/drivers/android/binder.c
index 1097d056ea6b..2cbd7558fc3f 100644
--- a/drivers/android/binder.c
+++ b/drivers/android/binder.c
@@ -3631,7 +3631,6 @@ static int binder_node_release(struct binder_node *node, 
int refs)
 
 static void binder_deferred_release(struct binder_proc *proc)
 {
-       struct binder_transaction *t;
        struct binder_context *context = proc->context;
        struct rb_node *n;
        int threads, nodes, incoming_refs, outgoing_refs, buffers,
@@ -3689,14 +3688,8 @@ static void binder_deferred_release(struct binder_proc 
*proc)
 
                buffer = rb_entry(n, struct binder_buffer, rb_node);
 
-               t = buffer->transaction;
-               if (t) {
-                       t->buffer = NULL;
-                       buffer->transaction = NULL;
-                       pr_err("release proc %d, transaction %d, not freed\n",
-                              proc->pid, t->debug_id);
-                       /*BUG();*/
-               }
+               /* Transaction should already have been freed */
+               BUG_ON(buffer->transaction);
 
                binder_free_buf(proc, buffer);
                buffers++;
-- 
2.13.2.725.g09c95d1e9-goog

Reply via email to