OSDN Git Service

FROMLIST: binder: use inner lock to sync work dq and node counts
authorTodd Kjos <tkjos@google.com>
Tue, 21 Mar 2017 20:06:01 +0000 (13:06 -0700)
committerTodd Kjos <tkjos@google.com>
Thu, 13 Jul 2017 15:16:51 +0000 (15:16 +0000)
commitf73f378b52e81acdb9654a5bf81661d9ae461e62
treecb993595eecfe509693648955e8f8d12770e2279
parentb0f59d6d045c31a10cc0175fdb34ba5ae067b5b2
FROMLIST: binder: use inner lock to sync work dq and node counts

(from https://patchwork.kernel.org/patch/9817789/)

For correct behavior we need to hold the inner lock when
dequeuing and processing node work in binder_thread_read.
We now hold the inner lock when we enter the switch statement
and release it after processing anything that might be
affected by other threads.

We also need to hold the inner lock to protect the node
weak/strong ref tracking fields as long as node->proc
is non-NULL (if it is NULL then we are guaranteed that
we don't have any node work queued).

This means that other functions that manipulate these fields
must hold the inner lock. Refactored these functions to use
the inner lock.

Change-Id: I02c5cfdd3ab6dadea7f07f2a275faf3e27be77ad
Test: tested manually
Signed-off-by: Todd Kjos <tkjos@google.com>
drivers/android/binder.c