tree:
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git
linux-5.4.y
head: 85b0841aab15c12948af951d477183ab3df7de14
commit: c5665cafbedd2e2a523fe933e452391a02d3adb3 [665/2391] binder: Prevent context
manager from incrementing ref 0
config: openrisc-randconfig-r002-20201014 (attached as .config)
compiler: or1k-linux-gcc (GCC) 9.3.0
reproduce (this is a W=1 build):
wget
https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O
~/bin/make.cross
chmod +x ~/bin/make.cross
#
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.gi...
git remote add linux-stable-rc
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git
git fetch --no-tags linux-stable-rc linux-5.4.y
git checkout c5665cafbedd2e2a523fe933e452391a02d3adb3
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=openrisc
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
All errors (new ones prefixed by >>):
drivers/android/binder.c: Assembler messages:
> drivers/android/binder.c:3776: Error: unrecognized
keyword/register name `l.lwz ?ap,4(r25)'
drivers/android/binder.c:3781:
Error: unrecognized keyword/register name `l.addi ?ap,r0,0'
vim +3776 drivers/android/binder.c
44d8047f1d87adc drivers/android/binder.c Todd Kjos 2018-08-28 3602
fb07ebc3e82a98a drivers/staging/android/binder.c Bojan Prtvar 2013-09-02 3603
static int binder_thread_write(struct binder_proc *proc,
fb07ebc3e82a98a drivers/staging/android/binder.c Bojan Prtvar 2013-09-02 3604
struct binder_thread *thread,
da49889deb34d35 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3605
binder_uintptr_t binder_buffer, size_t size,
da49889deb34d35 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3606
binder_size_t *consumed)
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3607
{
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3608
uint32_t cmd;
342e5c90b60134d drivers/android/binder.c Martijn Coenen 2017-02-03 3609
struct binder_context *context = proc->context;
da49889deb34d35 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3610
void __user *buffer = (void __user *)(uintptr_t)binder_buffer;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3611
void __user *ptr = buffer + *consumed;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3612
void __user *end = buffer + size;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3613
26549d17741035b drivers/android/binder.c Todd Kjos 2017-06-29 3614
while (ptr < end && thread->return_error.cmd == BR_OK) {
372e3147df7016e drivers/android/binder.c Todd Kjos 2017-06-29 3615
int ret;
372e3147df7016e drivers/android/binder.c Todd Kjos 2017-06-29 3616
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3617
if (get_user(cmd, (uint32_t __user *)ptr))
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3618
return -EFAULT;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3619
ptr += sizeof(uint32_t);
975a1ac9a9fe65d drivers/staging/android/binder.c Arve Hjønnevåg 2012-10-16 3620
trace_binder_command(cmd);
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3621
if (_IOC_NR(cmd) < ARRAY_SIZE(binder_stats.bc)) {
0953c7976c36ce0 drivers/android/binder.c Badhri Jagan Sridharan 2017-06-29 3622
atomic_inc(&binder_stats.bc[_IOC_NR(cmd)]);
0953c7976c36ce0 drivers/android/binder.c Badhri Jagan Sridharan 2017-06-29 3623
atomic_inc(&proc->stats.bc[_IOC_NR(cmd)]);
0953c7976c36ce0 drivers/android/binder.c Badhri Jagan Sridharan 2017-06-29 3624
atomic_inc(&thread->stats.bc[_IOC_NR(cmd)]);
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3625
}
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3626
switch (cmd) {
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3627
case BC_INCREFS:
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3628
case BC_ACQUIRE:
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3629
case BC_RELEASE:
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3630
case BC_DECREFS: {
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3631
uint32_t target;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3632
const char *debug_string;
372e3147df7016e drivers/android/binder.c Todd Kjos 2017-06-29 3633
bool strong = cmd == BC_ACQUIRE || cmd == BC_RELEASE;
372e3147df7016e drivers/android/binder.c Todd Kjos 2017-06-29 3634
bool increment = cmd == BC_INCREFS || cmd == BC_ACQUIRE;
372e3147df7016e drivers/android/binder.c Todd Kjos 2017-06-29 3635
struct binder_ref_data rdata;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3636
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3637
if (get_user(target, (uint32_t __user *)ptr))
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3638
return -EFAULT;
c44b1231ff11709 drivers/android/binder.c Todd Kjos 2017-06-29 3639
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3640
ptr += sizeof(uint32_t);
372e3147df7016e drivers/android/binder.c Todd Kjos 2017-06-29 3641
ret = -1;
372e3147df7016e drivers/android/binder.c Todd Kjos 2017-06-29 3642
if (increment && !target) {
c44b1231ff11709 drivers/android/binder.c Todd Kjos 2017-06-29 3643
struct binder_node *ctx_mgr_node;
c44b1231ff11709 drivers/android/binder.c Todd Kjos 2017-06-29 3644
mutex_lock(&context->context_mgr_node_lock);
c44b1231ff11709 drivers/android/binder.c Todd Kjos 2017-06-29 3645
ctx_mgr_node = context->binder_context_mgr_node;
c5665cafbedd2e2 drivers/android/binder.c Jann Horn 2020-07-27 3646
if (ctx_mgr_node) {
c5665cafbedd2e2 drivers/android/binder.c Jann Horn 2020-07-27 3647
if (ctx_mgr_node->proc == proc) {
c5665cafbedd2e2 drivers/android/binder.c Jann Horn 2020-07-27 3648
binder_user_error("%d:%d context manager tried to acquire desc 0\n",
c5665cafbedd2e2 drivers/android/binder.c Jann Horn 2020-07-27 3649
proc->pid, thread->pid);
c5665cafbedd2e2 drivers/android/binder.c Jann Horn 2020-07-27 3650
mutex_unlock(&context->context_mgr_node_lock);
c5665cafbedd2e2 drivers/android/binder.c Jann Horn 2020-07-27 3651
return -EINVAL;
c5665cafbedd2e2 drivers/android/binder.c Jann Horn 2020-07-27 3652
}
372e3147df7016e drivers/android/binder.c Todd Kjos 2017-06-29 3653
ret = binder_inc_ref_for_node(
372e3147df7016e drivers/android/binder.c Todd Kjos 2017-06-29 3654
proc, ctx_mgr_node,
372e3147df7016e drivers/android/binder.c Todd Kjos 2017-06-29 3655
strong, NULL, &rdata);
c5665cafbedd2e2 drivers/android/binder.c Jann Horn 2020-07-27 3656
}
c44b1231ff11709 drivers/android/binder.c Todd Kjos 2017-06-29 3657
mutex_unlock(&context->context_mgr_node_lock);
c44b1231ff11709 drivers/android/binder.c Todd Kjos 2017-06-29 3658
}
372e3147df7016e drivers/android/binder.c Todd Kjos 2017-06-29 3659
if (ret)
372e3147df7016e drivers/android/binder.c Todd Kjos 2017-06-29 3660
ret = binder_update_ref_for_handle(
372e3147df7016e drivers/android/binder.c Todd Kjos 2017-06-29 3661
proc, target, increment, strong,
372e3147df7016e drivers/android/binder.c Todd Kjos 2017-06-29 3662
&rdata);
372e3147df7016e drivers/android/binder.c Todd Kjos 2017-06-29 3663
if (!ret && rdata.desc != target) {
372e3147df7016e drivers/android/binder.c Todd Kjos 2017-06-29 3664
binder_user_error("%d:%d tried to acquire reference to desc %d, got %d
instead\n",
372e3147df7016e drivers/android/binder.c Todd Kjos 2017-06-29 3665
proc->pid, thread->pid,
372e3147df7016e drivers/android/binder.c Todd Kjos 2017-06-29 3666
target, rdata.desc);
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3667
}
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3668
switch (cmd) {
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3669
case BC_INCREFS:
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3670
debug_string = "IncRefs";
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3671
break;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3672
case BC_ACQUIRE:
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3673
debug_string = "Acquire";
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3674
break;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3675
case BC_RELEASE:
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3676
debug_string = "Release";
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3677
break;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3678
case BC_DECREFS:
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3679
default:
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3680
debug_string = "DecRefs";
372e3147df7016e drivers/android/binder.c Todd Kjos 2017-06-29 3681
break;
372e3147df7016e drivers/android/binder.c Todd Kjos 2017-06-29 3682
}
372e3147df7016e drivers/android/binder.c Todd Kjos 2017-06-29 3683
if (ret) {
372e3147df7016e drivers/android/binder.c Todd Kjos 2017-06-29 3684
binder_user_error("%d:%d %s %d refcount change on invalid ref %d ret %d\n",
372e3147df7016e drivers/android/binder.c Todd Kjos 2017-06-29 3685
proc->pid, thread->pid, debug_string,
372e3147df7016e drivers/android/binder.c Todd Kjos 2017-06-29 3686
strong, target, ret);
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3687
break;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3688
}
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3689
binder_debug(BINDER_DEBUG_USER_REFS,
372e3147df7016e drivers/android/binder.c Todd Kjos 2017-06-29 3690
"%d:%d %s ref %d desc %d s %d w %d\n",
372e3147df7016e drivers/android/binder.c Todd Kjos 2017-06-29 3691
proc->pid, thread->pid, debug_string,
372e3147df7016e drivers/android/binder.c Todd Kjos 2017-06-29 3692
rdata.debug_id, rdata.desc, rdata.strong,
372e3147df7016e drivers/android/binder.c Todd Kjos 2017-06-29 3693
rdata.weak);
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3694
break;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3695
}
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3696
case BC_INCREFS_DONE:
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3697
case BC_ACQUIRE_DONE: {
da49889deb34d35 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3698
binder_uintptr_t node_ptr;
da49889deb34d35 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3699
binder_uintptr_t cookie;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3700
struct binder_node *node;
673068eee8560d5 drivers/android/binder.c Todd Kjos 2017-06-29 3701
bool free_node;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3702
da49889deb34d35 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3703
if (get_user(node_ptr, (binder_uintptr_t __user *)ptr))
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3704
return -EFAULT;
da49889deb34d35 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3705
ptr += sizeof(binder_uintptr_t);
da49889deb34d35 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3706
if (get_user(cookie, (binder_uintptr_t __user *)ptr))
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3707
return -EFAULT;
da49889deb34d35 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3708
ptr += sizeof(binder_uintptr_t);
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3709
node = binder_get_node(proc, node_ptr);
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3710
if (node == NULL) {
da49889deb34d35 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3711
binder_user_error("%d:%d %s u%016llx no match\n",
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3712
proc->pid, thread->pid,
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3713
cmd == BC_INCREFS_DONE ?
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3714
"BC_INCREFS_DONE" :
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3715
"BC_ACQUIRE_DONE",
da49889deb34d35 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3716
(u64)node_ptr);
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3717
break;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3718
}
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3719
if (cookie != node->cookie) {
da49889deb34d35 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3720
binder_user_error("%d:%d %s u%016llx node %d cookie mismatch %016llx !=
%016llx\n",
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3721
proc->pid, thread->pid,
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3722
cmd == BC_INCREFS_DONE ?
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3723
"BC_INCREFS_DONE" : "BC_ACQUIRE_DONE",
da49889deb34d35 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3724
(u64)node_ptr, node->debug_id,
da49889deb34d35 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3725
(u64)cookie, (u64)node->cookie);
adc1884222276df drivers/android/binder.c Todd Kjos 2017-06-29 3726
binder_put_node(node);
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3727
break;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3728
}
673068eee8560d5 drivers/android/binder.c Todd Kjos 2017-06-29 3729
binder_node_inner_lock(node);
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3730
if (cmd == BC_ACQUIRE_DONE) {
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3731
if (node->pending_strong_ref == 0) {
56b468fc709b2b9 drivers/staging/android/binder.c Anmol Sarma 2012-10-30 3732
binder_user_error("%d:%d BC_ACQUIRE_DONE node %d has no pending acquire
request\n",
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3733
proc->pid, thread->pid,
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3734
node->debug_id);
673068eee8560d5 drivers/android/binder.c Todd Kjos 2017-06-29 3735
binder_node_inner_unlock(node);
adc1884222276df drivers/android/binder.c Todd Kjos 2017-06-29 3736
binder_put_node(node);
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3737
break;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3738
}
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3739
node->pending_strong_ref = 0;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3740
} else {
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3741
if (node->pending_weak_ref == 0) {
56b468fc709b2b9 drivers/staging/android/binder.c Anmol Sarma 2012-10-30 3742
binder_user_error("%d:%d BC_INCREFS_DONE node %d has no pending increfs
request\n",
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3743
proc->pid, thread->pid,
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3744
node->debug_id);
673068eee8560d5 drivers/android/binder.c Todd Kjos 2017-06-29 3745
binder_node_inner_unlock(node);
adc1884222276df drivers/android/binder.c Todd Kjos 2017-06-29 3746
binder_put_node(node);
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3747
break;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3748
}
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3749
node->pending_weak_ref = 0;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3750
}
673068eee8560d5 drivers/android/binder.c Todd Kjos 2017-06-29 3751
free_node = binder_dec_node_nilocked(node,
673068eee8560d5 drivers/android/binder.c Todd Kjos 2017-06-29 3752
cmd == BC_ACQUIRE_DONE, 0);
673068eee8560d5 drivers/android/binder.c Todd Kjos 2017-06-29 3753
WARN_ON(free_node);
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3754
binder_debug(BINDER_DEBUG_USER_REFS,
adc1884222276df drivers/android/binder.c Todd Kjos 2017-06-29 3755
"%d:%d %s node %d ls %d lw %d tr %d\n",
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3756
proc->pid, thread->pid,
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3757
cmd == BC_INCREFS_DONE ? "BC_INCREFS_DONE" :
"BC_ACQUIRE_DONE",
adc1884222276df drivers/android/binder.c Todd Kjos 2017-06-29 3758
node->debug_id, node->local_strong_refs,
adc1884222276df drivers/android/binder.c Todd Kjos 2017-06-29 3759
node->local_weak_refs, node->tmp_refs);
673068eee8560d5 drivers/android/binder.c Todd Kjos 2017-06-29 3760
binder_node_inner_unlock(node);
adc1884222276df drivers/android/binder.c Todd Kjos 2017-06-29 3761
binder_put_node(node);
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3762
break;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3763
}
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3764
case BC_ATTEMPT_ACQUIRE:
56b468fc709b2b9 drivers/staging/android/binder.c Anmol Sarma 2012-10-30 3765
pr_err("BC_ATTEMPT_ACQUIRE not supported\n");
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3766
return -EINVAL;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3767
case BC_ACQUIRE_RESULT:
56b468fc709b2b9 drivers/staging/android/binder.c Anmol Sarma 2012-10-30 3768
pr_err("BC_ACQUIRE_RESULT not supported\n");
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3769
return -EINVAL;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3770
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3771
case BC_FREE_BUFFER: {
da49889deb34d35 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3772
binder_uintptr_t data_ptr;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3773
struct binder_buffer *buffer;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3774
da49889deb34d35 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3775
if (get_user(data_ptr, (binder_uintptr_t __user *)ptr))
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 @3776
return -EFAULT;
da49889deb34d35 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3777
ptr += sizeof(binder_uintptr_t);
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3778
53d311cfa19ad35 drivers/android/binder.c Todd Kjos 2017-06-29 3779
buffer = binder_alloc_prepare_to_free(&proc->alloc,
19c987241ca1216 drivers/android/binder.c Todd Kjos 2017-06-29 3780
data_ptr);
7bada55ab506978 drivers/android/binder.c Todd Kjos 2018-11-06 3781
if (IS_ERR_OR_NULL(buffer)) {
7bada55ab506978 drivers/android/binder.c Todd Kjos 2018-11-06 3782
if (PTR_ERR(buffer) == -EPERM) {
7bada55ab506978 drivers/android/binder.c Todd Kjos 2018-11-06 3783
binder_user_error(
7bada55ab506978 drivers/android/binder.c Todd Kjos 2018-11-06 3784
"%d:%d BC_FREE_BUFFER u%016llx matched unreturned or currently freeing
buffer\n",
7bada55ab506978 drivers/android/binder.c Todd Kjos 2018-11-06 3785
proc->pid, thread->pid,
7bada55ab506978 drivers/android/binder.c Todd Kjos 2018-11-06 3786
(u64)data_ptr);
7bada55ab506978 drivers/android/binder.c Todd Kjos 2018-11-06 3787
} else {
7bada55ab506978 drivers/android/binder.c Todd Kjos 2018-11-06 3788
binder_user_error(
7bada55ab506978 drivers/android/binder.c Todd Kjos 2018-11-06 3789
"%d:%d BC_FREE_BUFFER u%016llx no match\n",
7bada55ab506978 drivers/android/binder.c Todd Kjos 2018-11-06 3790
proc->pid, thread->pid,
7bada55ab506978 drivers/android/binder.c Todd Kjos 2018-11-06 3791
(u64)data_ptr);
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3792
}
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3793
break;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3794
}
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3795
binder_debug(BINDER_DEBUG_FREE_BUFFER,
da49889deb34d35 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3796
"%d:%d BC_FREE_BUFFER u%016llx found buffer %d for %s transaction\n",
da49889deb34d35 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3797
proc->pid, thread->pid, (u64)data_ptr,
da49889deb34d35 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3798
buffer->debug_id,
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3799
buffer->transaction ? "active" : "finished");
44d8047f1d87adc drivers/android/binder.c Todd Kjos 2018-08-28 3800
binder_free_buf(proc, buffer);
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3801
break;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3802
}
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3803
7980240b6d63e06 drivers/android/binder.c Martijn Coenen 2017-02-03 3804
case BC_TRANSACTION_SG:
7980240b6d63e06 drivers/android/binder.c Martijn Coenen 2017-02-03 3805
case BC_REPLY_SG: {
7980240b6d63e06 drivers/android/binder.c Martijn Coenen 2017-02-03 3806
struct binder_transaction_data_sg tr;
7980240b6d63e06 drivers/android/binder.c Martijn Coenen 2017-02-03 3807
7980240b6d63e06 drivers/android/binder.c Martijn Coenen 2017-02-03 3808
if (copy_from_user(&tr, ptr, sizeof(tr)))
7980240b6d63e06 drivers/android/binder.c Martijn Coenen 2017-02-03 3809
return -EFAULT;
7980240b6d63e06 drivers/android/binder.c Martijn Coenen 2017-02-03 3810
ptr += sizeof(tr);
7980240b6d63e06 drivers/android/binder.c Martijn Coenen 2017-02-03 3811
binder_transaction(proc, thread, &tr.transaction_data,
7980240b6d63e06 drivers/android/binder.c Martijn Coenen 2017-02-03 3812
cmd == BC_REPLY_SG, tr.buffers_size);
7980240b6d63e06 drivers/android/binder.c Martijn Coenen 2017-02-03 3813
break;
7980240b6d63e06 drivers/android/binder.c Martijn Coenen 2017-02-03 3814
}
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3815
case BC_TRANSACTION:
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3816
case BC_REPLY: {
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3817
struct binder_transaction_data tr;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3818
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3819
if (copy_from_user(&tr, ptr, sizeof(tr)))
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3820
return -EFAULT;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3821
ptr += sizeof(tr);
4bfac80af3a63f2 drivers/android/binder.c Martijn Coenen 2017-02-03 3822
binder_transaction(proc, thread, &tr,
4bfac80af3a63f2 drivers/android/binder.c Martijn Coenen 2017-02-03 3823
cmd == BC_REPLY, 0);
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3824
break;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3825
}
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3826
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3827
case BC_REGISTER_LOOPER:
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3828
binder_debug(BINDER_DEBUG_THREADS,
56b468fc709b2b9 drivers/staging/android/binder.c Anmol Sarma 2012-10-30 3829
"%d:%d BC_REGISTER_LOOPER\n",
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3830
proc->pid, thread->pid);
b3e6861283790d7 drivers/android/binder.c Todd Kjos 2017-06-29 3831
binder_inner_proc_lock(proc);
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3832
if (thread->looper & BINDER_LOOPER_STATE_ENTERED) {
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3833
thread->looper |= BINDER_LOOPER_STATE_INVALID;
56b468fc709b2b9 drivers/staging/android/binder.c Anmol Sarma 2012-10-30 3834
binder_user_error("%d:%d ERROR: BC_REGISTER_LOOPER called after
BC_ENTER_LOOPER\n",
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3835
proc->pid, thread->pid);
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3836
} else if (proc->requested_threads == 0) {
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3837
thread->looper |= BINDER_LOOPER_STATE_INVALID;
56b468fc709b2b9 drivers/staging/android/binder.c Anmol Sarma 2012-10-30 3838
binder_user_error("%d:%d ERROR: BC_REGISTER_LOOPER called without
request\n",
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3839
proc->pid, thread->pid);
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3840
} else {
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3841
proc->requested_threads--;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3842
proc->requested_threads_started++;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3843
}
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3844
thread->looper |= BINDER_LOOPER_STATE_REGISTERED;
b3e6861283790d7 drivers/android/binder.c Todd Kjos 2017-06-29 3845
binder_inner_proc_unlock(proc);
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3846
break;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3847
case BC_ENTER_LOOPER:
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3848
binder_debug(BINDER_DEBUG_THREADS,
56b468fc709b2b9 drivers/staging/android/binder.c Anmol Sarma 2012-10-30 3849
"%d:%d BC_ENTER_LOOPER\n",
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3850
proc->pid, thread->pid);
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3851
if (thread->looper & BINDER_LOOPER_STATE_REGISTERED) {
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3852
thread->looper |= BINDER_LOOPER_STATE_INVALID;
56b468fc709b2b9 drivers/staging/android/binder.c Anmol Sarma 2012-10-30 3853
binder_user_error("%d:%d ERROR: BC_ENTER_LOOPER called after
BC_REGISTER_LOOPER\n",
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3854
proc->pid, thread->pid);
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3855
}
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3856
thread->looper |= BINDER_LOOPER_STATE_ENTERED;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3857
break;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3858
case BC_EXIT_LOOPER:
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3859
binder_debug(BINDER_DEBUG_THREADS,
56b468fc709b2b9 drivers/staging/android/binder.c Anmol Sarma 2012-10-30 3860
"%d:%d BC_EXIT_LOOPER\n",
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3861
proc->pid, thread->pid);
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3862
thread->looper |= BINDER_LOOPER_STATE_EXITED;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3863
break;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3864
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3865
case BC_REQUEST_DEATH_NOTIFICATION:
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3866
case BC_CLEAR_DEATH_NOTIFICATION: {
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3867
uint32_t target;
da49889deb34d35 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3868
binder_uintptr_t cookie;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3869
struct binder_ref *ref;
2c1838dc6817dd2 drivers/android/binder.c Todd Kjos 2017-06-29 3870
struct binder_ref_death *death = NULL;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3871
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3872
if (get_user(target, (uint32_t __user *)ptr))
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3873
return -EFAULT;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3874
ptr += sizeof(uint32_t);
da49889deb34d35 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3875
if (get_user(cookie, (binder_uintptr_t __user *)ptr))
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3876
return -EFAULT;
da49889deb34d35 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3877
ptr += sizeof(binder_uintptr_t);
2c1838dc6817dd2 drivers/android/binder.c Todd Kjos 2017-06-29 3878
if (cmd == BC_REQUEST_DEATH_NOTIFICATION) {
2c1838dc6817dd2 drivers/android/binder.c Todd Kjos 2017-06-29 3879
/*
2c1838dc6817dd2 drivers/android/binder.c Todd Kjos 2017-06-29 3880
* Allocate memory for death notification
2c1838dc6817dd2 drivers/android/binder.c Todd Kjos 2017-06-29 3881
* before taking lock
2c1838dc6817dd2 drivers/android/binder.c Todd Kjos 2017-06-29 3882
*/
2c1838dc6817dd2 drivers/android/binder.c Todd Kjos 2017-06-29 3883
death = kzalloc(sizeof(*death), GFP_KERNEL);
2c1838dc6817dd2 drivers/android/binder.c Todd Kjos 2017-06-29 3884
if (death == NULL) {
2c1838dc6817dd2 drivers/android/binder.c Todd Kjos 2017-06-29 3885
WARN_ON(thread->return_error.cmd !=
2c1838dc6817dd2 drivers/android/binder.c Todd Kjos 2017-06-29 3886
BR_OK);
2c1838dc6817dd2 drivers/android/binder.c Todd Kjos 2017-06-29 3887
thread->return_error.cmd = BR_ERROR;
148ade2c4d4f46b drivers/android/binder.c Martijn Coenen 2017-11-15 3888
binder_enqueue_thread_work(
148ade2c4d4f46b drivers/android/binder.c Martijn Coenen 2017-11-15 3889
thread,
148ade2c4d4f46b drivers/android/binder.c Martijn Coenen 2017-11-15 3890
&thread->return_error.work);
2c1838dc6817dd2 drivers/android/binder.c Todd Kjos 2017-06-29 3891
binder_debug(
2c1838dc6817dd2 drivers/android/binder.c Todd Kjos 2017-06-29 3892
BINDER_DEBUG_FAILED_TRANSACTION,
2c1838dc6817dd2 drivers/android/binder.c Todd Kjos 2017-06-29 3893
"%d:%d BC_REQUEST_DEATH_NOTIFICATION failed\n",
2c1838dc6817dd2 drivers/android/binder.c Todd Kjos 2017-06-29 3894
proc->pid, thread->pid);
2c1838dc6817dd2 drivers/android/binder.c Todd Kjos 2017-06-29 3895
break;
2c1838dc6817dd2 drivers/android/binder.c Todd Kjos 2017-06-29 3896
}
2c1838dc6817dd2 drivers/android/binder.c Todd Kjos 2017-06-29 3897
}
2c1838dc6817dd2 drivers/android/binder.c Todd Kjos 2017-06-29 3898
binder_proc_lock(proc);
2c1838dc6817dd2 drivers/android/binder.c Todd Kjos 2017-06-29 3899
ref = binder_get_ref_olocked(proc, target, false);
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3900
if (ref == NULL) {
56b468fc709b2b9 drivers/staging/android/binder.c Anmol Sarma 2012-10-30 3901
binder_user_error("%d:%d %s invalid ref %d\n",
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3902
proc->pid, thread->pid,
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3903
cmd == BC_REQUEST_DEATH_NOTIFICATION ?
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3904
"BC_REQUEST_DEATH_NOTIFICATION" :
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3905
"BC_CLEAR_DEATH_NOTIFICATION",
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3906
target);
2c1838dc6817dd2 drivers/android/binder.c Todd Kjos 2017-06-29 3907
binder_proc_unlock(proc);
2c1838dc6817dd2 drivers/android/binder.c Todd Kjos 2017-06-29 3908
kfree(death);
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3909
break;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3910
}
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3911
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3912
binder_debug(BINDER_DEBUG_DEATH_NOTIFICATION,
da49889deb34d35 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3913
"%d:%d %s %016llx ref %d desc %d s %d w %d for node %d\n",
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3914
proc->pid, thread->pid,
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3915
cmd == BC_REQUEST_DEATH_NOTIFICATION ?
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3916
"BC_REQUEST_DEATH_NOTIFICATION" :
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3917
"BC_CLEAR_DEATH_NOTIFICATION",
372e3147df7016e drivers/android/binder.c Todd Kjos 2017-06-29 3918
(u64)cookie, ref->data.debug_id,
372e3147df7016e drivers/android/binder.c Todd Kjos 2017-06-29 3919
ref->data.desc, ref->data.strong,
372e3147df7016e drivers/android/binder.c Todd Kjos 2017-06-29 3920
ref->data.weak, ref->node->debug_id);
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3921
ab51ec6bdf0b7af drivers/android/binder.c Martijn Coenen 2017-06-29 3922
binder_node_lock(ref->node);
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3923
if (cmd == BC_REQUEST_DEATH_NOTIFICATION) {
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3924
if (ref->death) {
56b468fc709b2b9 drivers/staging/android/binder.c Anmol Sarma 2012-10-30 3925
binder_user_error("%d:%d BC_REQUEST_DEATH_NOTIFICATION death notification
already set\n",
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3926
proc->pid, thread->pid);
ab51ec6bdf0b7af drivers/android/binder.c Martijn Coenen 2017-06-29 3927
binder_node_unlock(ref->node);
2c1838dc6817dd2 drivers/android/binder.c Todd Kjos 2017-06-29 3928
binder_proc_unlock(proc);
2c1838dc6817dd2 drivers/android/binder.c Todd Kjos 2017-06-29 3929
kfree(death);
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3930
break;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3931
}
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3932
binder_stats_created(BINDER_STAT_DEATH);
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3933
INIT_LIST_HEAD(&death->work.entry);
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3934
death->cookie = cookie;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3935
ref->death = death;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3936
if (ref->node->proc == NULL) {
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3937
ref->death->work.type = BINDER_WORK_DEAD_BINDER;
bb74562a7f83982 drivers/android/binder.c Martijn Coenen 2017-08-31 3938
1b77e9dcc3da935 drivers/android/binder.c Martijn Coenen 2017-08-31 3939
binder_inner_proc_lock(proc);
1b77e9dcc3da935 drivers/android/binder.c Martijn Coenen 2017-08-31 3940
binder_enqueue_work_ilocked(
bb74562a7f83982 drivers/android/binder.c Martijn Coenen 2017-08-31 3941
&ref->death->work, &proc->todo);
bb74562a7f83982 drivers/android/binder.c Martijn Coenen 2017-08-31 3942
binder_wakeup_proc_ilocked(proc);
1b77e9dcc3da935 drivers/android/binder.c Martijn Coenen 2017-08-31 3943
binder_inner_proc_unlock(proc);
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3944
}
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3945
} else {
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3946
if (ref->death == NULL) {
56b468fc709b2b9 drivers/staging/android/binder.c Anmol Sarma 2012-10-30 3947
binder_user_error("%d:%d BC_CLEAR_DEATH_NOTIFICATION death notification not
active\n",
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3948
proc->pid, thread->pid);
673068eee8560d5 drivers/android/binder.c Todd Kjos 2017-06-29 3949
binder_node_unlock(ref->node);
2c1838dc6817dd2 drivers/android/binder.c Todd Kjos 2017-06-29 3950
binder_proc_unlock(proc);
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3951
break;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3952
}
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3953
death = ref->death;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3954
if (death->cookie != cookie) {
da49889deb34d35 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3955
binder_user_error("%d:%d BC_CLEAR_DEATH_NOTIFICATION death notification cookie
mismatch %016llx != %016llx\n",
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3956
proc->pid, thread->pid,
da49889deb34d35 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3957
(u64)death->cookie,
da49889deb34d35 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3958
(u64)cookie);
673068eee8560d5 drivers/android/binder.c Todd Kjos 2017-06-29 3959
binder_node_unlock(ref->node);
2c1838dc6817dd2 drivers/android/binder.c Todd Kjos 2017-06-29 3960
binder_proc_unlock(proc);
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3961
break;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3962
}
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3963
ref->death = NULL;
72196393a5e3d28 drivers/android/binder.c Todd Kjos 2017-06-29 3964
binder_inner_proc_lock(proc);
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3965
if (list_empty(&death->work.entry)) {
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3966
death->work.type = BINDER_WORK_CLEAR_DEATH_NOTIFICATION;
72196393a5e3d28 drivers/android/binder.c Todd Kjos 2017-06-29 3967
if (thread->looper &
72196393a5e3d28 drivers/android/binder.c Todd Kjos 2017-06-29 3968
(BINDER_LOOPER_STATE_REGISTERED |
72196393a5e3d28 drivers/android/binder.c Todd Kjos 2017-06-29 3969
BINDER_LOOPER_STATE_ENTERED))
148ade2c4d4f46b drivers/android/binder.c Martijn Coenen 2017-11-15 3970
binder_enqueue_thread_work_ilocked(
148ade2c4d4f46b drivers/android/binder.c Martijn Coenen 2017-11-15 3971
thread,
148ade2c4d4f46b drivers/android/binder.c Martijn Coenen 2017-11-15 3972
&death->work);
72196393a5e3d28 drivers/android/binder.c Todd Kjos 2017-06-29 3973
else {
72196393a5e3d28 drivers/android/binder.c Todd Kjos 2017-06-29 3974
binder_enqueue_work_ilocked(
72196393a5e3d28 drivers/android/binder.c Todd Kjos 2017-06-29 3975
&death->work,
72196393a5e3d28 drivers/android/binder.c Todd Kjos 2017-06-29 3976
&proc->todo);
1b77e9dcc3da935 drivers/android/binder.c Martijn Coenen 2017-08-31 3977
binder_wakeup_proc_ilocked(
408c68b17aea2f2 drivers/android/binder.c Martijn Coenen 2017-08-31 3978
proc);
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3979
}
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3980
} else {
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3981
BUG_ON(death->work.type != BINDER_WORK_DEAD_BINDER);
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3982
death->work.type = BINDER_WORK_DEAD_BINDER_AND_CLEAR;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3983
}
72196393a5e3d28 drivers/android/binder.c Todd Kjos 2017-06-29 3984
binder_inner_proc_unlock(proc);
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3985
}
ab51ec6bdf0b7af drivers/android/binder.c Martijn Coenen 2017-06-29 3986
binder_node_unlock(ref->node);
2c1838dc6817dd2 drivers/android/binder.c Todd Kjos 2017-06-29 3987
binder_proc_unlock(proc);
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3988
} break;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3989
case BC_DEAD_BINDER_DONE: {
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3990
struct binder_work *w;
da49889deb34d35 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3991
binder_uintptr_t cookie;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3992
struct binder_ref_death *death = NULL;
10f62861b4a2f22 drivers/staging/android/binder.c Seunghun Lee 2014-05-01 3993
da49889deb34d35 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3994
if (get_user(cookie, (binder_uintptr_t __user *)ptr))
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3995
return -EFAULT;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3996
7a64cd887fdb97f drivers/android/binder.c Lisa Du 2016-02-17 3997
ptr += sizeof(cookie);
72196393a5e3d28 drivers/android/binder.c Todd Kjos 2017-06-29 3998
binder_inner_proc_lock(proc);
72196393a5e3d28 drivers/android/binder.c Todd Kjos 2017-06-29 3999
list_for_each_entry(w, &proc->delivered_death,
72196393a5e3d28 drivers/android/binder.c Todd Kjos 2017-06-29 4000
entry) {
72196393a5e3d28 drivers/android/binder.c Todd Kjos 2017-06-29 4001
struct binder_ref_death *tmp_death =
72196393a5e3d28 drivers/android/binder.c Todd Kjos 2017-06-29 4002
container_of(w,
72196393a5e3d28 drivers/android/binder.c Todd Kjos 2017-06-29 4003
struct binder_ref_death,
72196393a5e3d28 drivers/android/binder.c Todd Kjos 2017-06-29 4004
work);
10f62861b4a2f22 drivers/staging/android/binder.c Seunghun Lee 2014-05-01 4005
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 4006
if (tmp_death->cookie == cookie) {
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 4007
death = tmp_death;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 4008
break;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 4009
}
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 4010
}
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 4011
binder_debug(BINDER_DEBUG_DEAD_BINDER,
8ca86f1639ec589 drivers/android/binder.c Todd Kjos 2018-02-07 4012
"%d:%d BC_DEAD_BINDER_DONE %016llx found %pK\n",
da49889deb34d35 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 4013
proc->pid, thread->pid, (u64)cookie,
da49889deb34d35 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 4014
death);
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 4015
if (death == NULL) {
da49889deb34d35 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 4016
binder_user_error("%d:%d BC_DEAD_BINDER_DONE %016llx not found\n",
da49889deb34d35 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 4017
proc->pid, thread->pid, (u64)cookie);
72196393a5e3d28 drivers/android/binder.c Todd Kjos 2017-06-29 4018
binder_inner_proc_unlock(proc);
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 4019
break;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 4020
}
72196393a5e3d28 drivers/android/binder.c Todd Kjos 2017-06-29 4021
binder_dequeue_work_ilocked(&death->work);
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 4022
if (death->work.type == BINDER_WORK_DEAD_BINDER_AND_CLEAR) {
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 4023
death->work.type = BINDER_WORK_CLEAR_DEATH_NOTIFICATION;
72196393a5e3d28 drivers/android/binder.c Todd Kjos 2017-06-29 4024
if (thread->looper &
72196393a5e3d28 drivers/android/binder.c Todd Kjos 2017-06-29 4025
(BINDER_LOOPER_STATE_REGISTERED |
72196393a5e3d28 drivers/android/binder.c Todd Kjos 2017-06-29 4026
BINDER_LOOPER_STATE_ENTERED))
148ade2c4d4f46b drivers/android/binder.c Martijn Coenen 2017-11-15 4027
binder_enqueue_thread_work_ilocked(
148ade2c4d4f46b drivers/android/binder.c Martijn Coenen 2017-11-15 4028
thread, &death->work);
72196393a5e3d28 drivers/android/binder.c Todd Kjos 2017-06-29 4029
else {
72196393a5e3d28 drivers/android/binder.c Todd Kjos 2017-06-29 4030
binder_enqueue_work_ilocked(
72196393a5e3d28 drivers/android/binder.c Todd Kjos 2017-06-29 4031
&death->work,
72196393a5e3d28 drivers/android/binder.c Todd Kjos 2017-06-29 4032
&proc->todo);
408c68b17aea2f2 drivers/android/binder.c Martijn Coenen 2017-08-31 4033
binder_wakeup_proc_ilocked(proc);
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 4034
}
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 4035
}
72196393a5e3d28 drivers/android/binder.c Todd Kjos 2017-06-29 4036
binder_inner_proc_unlock(proc);
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 4037
} break;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 4038
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 4039
default:
56b468fc709b2b9 drivers/staging/android/binder.c Anmol Sarma 2012-10-30 4040
pr_err("%d:%d unknown command %d\n",
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 4041
proc->pid, thread->pid, cmd);
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 4042
return -EINVAL;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 4043
}
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 4044
*consumed = ptr - buffer;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 4045
}
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 4046
return 0;
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 4047
}
355b0502f6efea0 drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 4048
:::::: The code at line 3776 was first introduced by commit
:::::: 355b0502f6efea0ff9492753888772c96972d2a3 Revert "Staging: android: delete
android drivers"
:::::: TO: Greg Kroah-Hartman <gregkh(a)suse.de>
:::::: CC: Greg Kroah-Hartman <gregkh(a)suse.de>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org