• Todd Kjos's avatar
    binder: refactor binder ref inc/dec for thread safety · 372e3147
    Todd Kjos authored
    Once locks are added, binder_ref's will only be accessed
    safely with the proc lock held. Refactor the inc/dec paths
    to make them atomic with the binder_get_ref* paths and
    node inc/dec. For example, instead of:
    
      ref = binder_get_ref(proc, handle, strong);
      ...
      binder_dec_ref(ref, strong);
    
    we now have:
    
      ret = binder_dec_ref_for_handle(proc, handle, strong, &rdata);
    
    Since the actual ref is no longer exposed to callers, a
    new struct binder_ref_data is introduced which can be used
    to return a copy of ref state.
    Signed-off-by: default avatarTodd Kjos <tkjos@google.com>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    372e3147
binder.c 121 KB