* [linux-stable-rc:linux-4.19.y 405/611] drivers/android/binder.c:3633: Error: unrecognized keyword/register name `l.lwz ?ap, 4(r21)'
@ 2021-07-01 14:49 kernel test robot
2021-07-01 23:26 ` Stafford Horne
0 siblings, 1 reply; 2+ messages in thread
From: kernel test robot @ 2021-07-01 14:49 UTC (permalink / raw)
To: kbuild-all
[-- Attachment #1: Type: text/plain, Size: 59025 bytes --]
tree: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-4.19.y
head: a834132bd465f9d7f4049be65648e01cf2533cb8
commit: 74e42c22f2125bb07ffd9b0cccef120815e68725 [405/611] binder: Prevent context manager from incrementing ref 0
config: openrisc-randconfig-r021-20210630 (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.git/commit/?id=74e42c22f2125bb07ffd9b0cccef120815e68725
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-4.19.y
git checkout 74e42c22f2125bb07ffd9b0cccef120815e68725
# save the attached .config to linux build tree
mkdir build_dir
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross O=build_dir ARCH=openrisc SHELL=/bin/bash drivers/android/
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
All errors (new ones prefixed by >>):
drivers/android/binder.c: Assembler messages:
>> drivers/android/binder.c:3633: Error: unrecognized keyword/register name `l.lwz ?ap,4(r21)'
drivers/android/binder.c:3638: Error: unrecognized keyword/register name `l.addi ?ap,r0,0'
vim +3633 drivers/android/binder.c
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3331
fb07ebc3e82a98 drivers/staging/android/binder.c Bojan Prtvar 2013-09-02 3332 static int binder_thread_write(struct binder_proc *proc,
fb07ebc3e82a98 drivers/staging/android/binder.c Bojan Prtvar 2013-09-02 3333 struct binder_thread *thread,
da49889deb34d3 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3334 binder_uintptr_t binder_buffer, size_t size,
da49889deb34d3 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3335 binder_size_t *consumed)
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3336 {
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3337 uint32_t cmd;
342e5c90b60134 drivers/android/binder.c Martijn Coenen 2017-02-03 3338 struct binder_context *context = proc->context;
da49889deb34d3 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3339 void __user *buffer = (void __user *)(uintptr_t)binder_buffer;
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3340 void __user *ptr = buffer + *consumed;
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3341 void __user *end = buffer + size;
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3342
26549d17741035 drivers/android/binder.c Todd Kjos 2017-06-29 3343 while (ptr < end && thread->return_error.cmd == BR_OK) {
372e3147df7016 drivers/android/binder.c Todd Kjos 2017-06-29 3344 int ret;
372e3147df7016 drivers/android/binder.c Todd Kjos 2017-06-29 3345
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3346 if (get_user(cmd, (uint32_t __user *)ptr))
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3347 return -EFAULT;
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3348 ptr += sizeof(uint32_t);
975a1ac9a9fe65 drivers/staging/android/binder.c Arve Hjønnevåg 2012-10-16 3349 trace_binder_command(cmd);
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3350 if (_IOC_NR(cmd) < ARRAY_SIZE(binder_stats.bc)) {
0953c7976c36ce drivers/android/binder.c Badhri Jagan Sridharan 2017-06-29 3351 atomic_inc(&binder_stats.bc[_IOC_NR(cmd)]);
0953c7976c36ce drivers/android/binder.c Badhri Jagan Sridharan 2017-06-29 3352 atomic_inc(&proc->stats.bc[_IOC_NR(cmd)]);
0953c7976c36ce drivers/android/binder.c Badhri Jagan Sridharan 2017-06-29 3353 atomic_inc(&thread->stats.bc[_IOC_NR(cmd)]);
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3354 }
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3355 switch (cmd) {
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3356 case BC_INCREFS:
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3357 case BC_ACQUIRE:
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3358 case BC_RELEASE:
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3359 case BC_DECREFS: {
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3360 uint32_t target;
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3361 const char *debug_string;
372e3147df7016 drivers/android/binder.c Todd Kjos 2017-06-29 3362 bool strong = cmd == BC_ACQUIRE || cmd == BC_RELEASE;
372e3147df7016 drivers/android/binder.c Todd Kjos 2017-06-29 3363 bool increment = cmd == BC_INCREFS || cmd == BC_ACQUIRE;
372e3147df7016 drivers/android/binder.c Todd Kjos 2017-06-29 3364 struct binder_ref_data rdata;
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3365
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3366 if (get_user(target, (uint32_t __user *)ptr))
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3367 return -EFAULT;
c44b1231ff1170 drivers/android/binder.c Todd Kjos 2017-06-29 3368
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3369 ptr += sizeof(uint32_t);
372e3147df7016 drivers/android/binder.c Todd Kjos 2017-06-29 3370 ret = -1;
372e3147df7016 drivers/android/binder.c Todd Kjos 2017-06-29 3371 if (increment && !target) {
c44b1231ff1170 drivers/android/binder.c Todd Kjos 2017-06-29 3372 struct binder_node *ctx_mgr_node;
c44b1231ff1170 drivers/android/binder.c Todd Kjos 2017-06-29 3373 mutex_lock(&context->context_mgr_node_lock);
c44b1231ff1170 drivers/android/binder.c Todd Kjos 2017-06-29 3374 ctx_mgr_node = context->binder_context_mgr_node;
74e42c22f2125b drivers/android/binder.c Jann Horn 2020-07-27 3375 if (ctx_mgr_node) {
74e42c22f2125b drivers/android/binder.c Jann Horn 2020-07-27 3376 if (ctx_mgr_node->proc == proc) {
74e42c22f2125b drivers/android/binder.c Jann Horn 2020-07-27 3377 binder_user_error("%d:%d context manager tried to acquire desc 0\n",
74e42c22f2125b drivers/android/binder.c Jann Horn 2020-07-27 3378 proc->pid, thread->pid);
74e42c22f2125b drivers/android/binder.c Jann Horn 2020-07-27 3379 mutex_unlock(&context->context_mgr_node_lock);
74e42c22f2125b drivers/android/binder.c Jann Horn 2020-07-27 3380 return -EINVAL;
74e42c22f2125b drivers/android/binder.c Jann Horn 2020-07-27 3381 }
372e3147df7016 drivers/android/binder.c Todd Kjos 2017-06-29 3382 ret = binder_inc_ref_for_node(
372e3147df7016 drivers/android/binder.c Todd Kjos 2017-06-29 3383 proc, ctx_mgr_node,
372e3147df7016 drivers/android/binder.c Todd Kjos 2017-06-29 3384 strong, NULL, &rdata);
74e42c22f2125b drivers/android/binder.c Jann Horn 2020-07-27 3385 }
c44b1231ff1170 drivers/android/binder.c Todd Kjos 2017-06-29 3386 mutex_unlock(&context->context_mgr_node_lock);
c44b1231ff1170 drivers/android/binder.c Todd Kjos 2017-06-29 3387 }
372e3147df7016 drivers/android/binder.c Todd Kjos 2017-06-29 3388 if (ret)
372e3147df7016 drivers/android/binder.c Todd Kjos 2017-06-29 3389 ret = binder_update_ref_for_handle(
372e3147df7016 drivers/android/binder.c Todd Kjos 2017-06-29 3390 proc, target, increment, strong,
372e3147df7016 drivers/android/binder.c Todd Kjos 2017-06-29 3391 &rdata);
372e3147df7016 drivers/android/binder.c Todd Kjos 2017-06-29 3392 if (!ret && rdata.desc != target) {
372e3147df7016 drivers/android/binder.c Todd Kjos 2017-06-29 3393 binder_user_error("%d:%d tried to acquire reference to desc %d, got %d instead\n",
372e3147df7016 drivers/android/binder.c Todd Kjos 2017-06-29 3394 proc->pid, thread->pid,
372e3147df7016 drivers/android/binder.c Todd Kjos 2017-06-29 3395 target, rdata.desc);
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3396 }
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3397 switch (cmd) {
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3398 case BC_INCREFS:
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3399 debug_string = "IncRefs";
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3400 break;
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3401 case BC_ACQUIRE:
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3402 debug_string = "Acquire";
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3403 break;
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3404 case BC_RELEASE:
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3405 debug_string = "Release";
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3406 break;
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3407 case BC_DECREFS:
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3408 default:
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3409 debug_string = "DecRefs";
372e3147df7016 drivers/android/binder.c Todd Kjos 2017-06-29 3410 break;
372e3147df7016 drivers/android/binder.c Todd Kjos 2017-06-29 3411 }
372e3147df7016 drivers/android/binder.c Todd Kjos 2017-06-29 3412 if (ret) {
372e3147df7016 drivers/android/binder.c Todd Kjos 2017-06-29 3413 binder_user_error("%d:%d %s %d refcount change on invalid ref %d ret %d\n",
372e3147df7016 drivers/android/binder.c Todd Kjos 2017-06-29 3414 proc->pid, thread->pid, debug_string,
372e3147df7016 drivers/android/binder.c Todd Kjos 2017-06-29 3415 strong, target, ret);
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3416 break;
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3417 }
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3418 binder_debug(BINDER_DEBUG_USER_REFS,
372e3147df7016 drivers/android/binder.c Todd Kjos 2017-06-29 3419 "%d:%d %s ref %d desc %d s %d w %d\n",
372e3147df7016 drivers/android/binder.c Todd Kjos 2017-06-29 3420 proc->pid, thread->pid, debug_string,
372e3147df7016 drivers/android/binder.c Todd Kjos 2017-06-29 3421 rdata.debug_id, rdata.desc, rdata.strong,
372e3147df7016 drivers/android/binder.c Todd Kjos 2017-06-29 3422 rdata.weak);
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3423 break;
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3424 }
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3425 case BC_INCREFS_DONE:
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3426 case BC_ACQUIRE_DONE: {
da49889deb34d3 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3427 binder_uintptr_t node_ptr;
da49889deb34d3 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3428 binder_uintptr_t cookie;
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3429 struct binder_node *node;
673068eee8560d drivers/android/binder.c Todd Kjos 2017-06-29 3430 bool free_node;
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3431
da49889deb34d3 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3432 if (get_user(node_ptr, (binder_uintptr_t __user *)ptr))
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3433 return -EFAULT;
da49889deb34d3 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3434 ptr += sizeof(binder_uintptr_t);
da49889deb34d3 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3435 if (get_user(cookie, (binder_uintptr_t __user *)ptr))
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3436 return -EFAULT;
da49889deb34d3 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3437 ptr += sizeof(binder_uintptr_t);
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3438 node = binder_get_node(proc, node_ptr);
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3439 if (node == NULL) {
da49889deb34d3 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3440 binder_user_error("%d:%d %s u%016llx no match\n",
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3441 proc->pid, thread->pid,
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3442 cmd == BC_INCREFS_DONE ?
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3443 "BC_INCREFS_DONE" :
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3444 "BC_ACQUIRE_DONE",
da49889deb34d3 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3445 (u64)node_ptr);
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3446 break;
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3447 }
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3448 if (cookie != node->cookie) {
da49889deb34d3 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3449 binder_user_error("%d:%d %s u%016llx node %d cookie mismatch %016llx != %016llx\n",
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3450 proc->pid, thread->pid,
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3451 cmd == BC_INCREFS_DONE ?
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3452 "BC_INCREFS_DONE" : "BC_ACQUIRE_DONE",
da49889deb34d3 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3453 (u64)node_ptr, node->debug_id,
da49889deb34d3 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3454 (u64)cookie, (u64)node->cookie);
adc1884222276d drivers/android/binder.c Todd Kjos 2017-06-29 3455 binder_put_node(node);
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3456 break;
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3457 }
673068eee8560d drivers/android/binder.c Todd Kjos 2017-06-29 3458 binder_node_inner_lock(node);
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3459 if (cmd == BC_ACQUIRE_DONE) {
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3460 if (node->pending_strong_ref == 0) {
56b468fc709b2b drivers/staging/android/binder.c Anmol Sarma 2012-10-30 3461 binder_user_error("%d:%d BC_ACQUIRE_DONE node %d has no pending acquire request\n",
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3462 proc->pid, thread->pid,
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3463 node->debug_id);
673068eee8560d drivers/android/binder.c Todd Kjos 2017-06-29 3464 binder_node_inner_unlock(node);
adc1884222276d drivers/android/binder.c Todd Kjos 2017-06-29 3465 binder_put_node(node);
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3466 break;
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3467 }
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3468 node->pending_strong_ref = 0;
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3469 } else {
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3470 if (node->pending_weak_ref == 0) {
56b468fc709b2b drivers/staging/android/binder.c Anmol Sarma 2012-10-30 3471 binder_user_error("%d:%d BC_INCREFS_DONE node %d has no pending increfs request\n",
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3472 proc->pid, thread->pid,
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3473 node->debug_id);
673068eee8560d drivers/android/binder.c Todd Kjos 2017-06-29 3474 binder_node_inner_unlock(node);
adc1884222276d drivers/android/binder.c Todd Kjos 2017-06-29 3475 binder_put_node(node);
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3476 break;
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3477 }
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3478 node->pending_weak_ref = 0;
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3479 }
673068eee8560d drivers/android/binder.c Todd Kjos 2017-06-29 3480 free_node = binder_dec_node_nilocked(node,
673068eee8560d drivers/android/binder.c Todd Kjos 2017-06-29 3481 cmd == BC_ACQUIRE_DONE, 0);
673068eee8560d drivers/android/binder.c Todd Kjos 2017-06-29 3482 WARN_ON(free_node);
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3483 binder_debug(BINDER_DEBUG_USER_REFS,
adc1884222276d drivers/android/binder.c Todd Kjos 2017-06-29 3484 "%d:%d %s node %d ls %d lw %d tr %d\n",
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3485 proc->pid, thread->pid,
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3486 cmd == BC_INCREFS_DONE ? "BC_INCREFS_DONE" : "BC_ACQUIRE_DONE",
adc1884222276d drivers/android/binder.c Todd Kjos 2017-06-29 3487 node->debug_id, node->local_strong_refs,
adc1884222276d drivers/android/binder.c Todd Kjos 2017-06-29 3488 node->local_weak_refs, node->tmp_refs);
673068eee8560d drivers/android/binder.c Todd Kjos 2017-06-29 3489 binder_node_inner_unlock(node);
adc1884222276d drivers/android/binder.c Todd Kjos 2017-06-29 3490 binder_put_node(node);
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3491 break;
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3492 }
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3493 case BC_ATTEMPT_ACQUIRE:
56b468fc709b2b drivers/staging/android/binder.c Anmol Sarma 2012-10-30 3494 pr_err("BC_ATTEMPT_ACQUIRE not supported\n");
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3495 return -EINVAL;
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3496 case BC_ACQUIRE_RESULT:
56b468fc709b2b drivers/staging/android/binder.c Anmol Sarma 2012-10-30 3497 pr_err("BC_ACQUIRE_RESULT not supported\n");
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3498 return -EINVAL;
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3499
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3500 case BC_FREE_BUFFER: {
da49889deb34d3 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3501 binder_uintptr_t data_ptr;
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3502 struct binder_buffer *buffer;
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3503
da49889deb34d3 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3504 if (get_user(data_ptr, (binder_uintptr_t __user *)ptr))
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3505 return -EFAULT;
da49889deb34d3 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3506 ptr += sizeof(binder_uintptr_t);
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3507
53d311cfa19ad3 drivers/android/binder.c Todd Kjos 2017-06-29 3508 buffer = binder_alloc_prepare_to_free(&proc->alloc,
19c987241ca121 drivers/android/binder.c Todd Kjos 2017-06-29 3509 data_ptr);
553927d6aab993 drivers/android/binder.c Todd Kjos 2018-11-06 3510 if (IS_ERR_OR_NULL(buffer)) {
553927d6aab993 drivers/android/binder.c Todd Kjos 2018-11-06 3511 if (PTR_ERR(buffer) == -EPERM) {
553927d6aab993 drivers/android/binder.c Todd Kjos 2018-11-06 3512 binder_user_error(
553927d6aab993 drivers/android/binder.c Todd Kjos 2018-11-06 3513 "%d:%d BC_FREE_BUFFER u%016llx matched unreturned or currently freeing buffer\n",
553927d6aab993 drivers/android/binder.c Todd Kjos 2018-11-06 3514 proc->pid, thread->pid,
553927d6aab993 drivers/android/binder.c Todd Kjos 2018-11-06 3515 (u64)data_ptr);
553927d6aab993 drivers/android/binder.c Todd Kjos 2018-11-06 3516 } else {
553927d6aab993 drivers/android/binder.c Todd Kjos 2018-11-06 3517 binder_user_error(
553927d6aab993 drivers/android/binder.c Todd Kjos 2018-11-06 3518 "%d:%d BC_FREE_BUFFER u%016llx no match\n",
553927d6aab993 drivers/android/binder.c Todd Kjos 2018-11-06 3519 proc->pid, thread->pid,
553927d6aab993 drivers/android/binder.c Todd Kjos 2018-11-06 3520 (u64)data_ptr);
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3521 }
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3522 break;
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3523 }
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3524 binder_debug(BINDER_DEBUG_FREE_BUFFER,
da49889deb34d3 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3525 "%d:%d BC_FREE_BUFFER u%016llx found buffer %d for %s transaction\n",
da49889deb34d3 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3526 proc->pid, thread->pid, (u64)data_ptr,
da49889deb34d3 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3527 buffer->debug_id,
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3528 buffer->transaction ? "active" : "finished");
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3529
22068d49d09d2b drivers/android/binder.c Todd Kjos 2019-06-12 3530 binder_inner_proc_lock(proc);
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3531 if (buffer->transaction) {
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3532 buffer->transaction->buffer = NULL;
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3533 buffer->transaction = NULL;
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3534 }
22068d49d09d2b drivers/android/binder.c Todd Kjos 2019-06-12 3535 binder_inner_proc_unlock(proc);
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3536 if (buffer->async_transaction && buffer->target_node) {
72196393a5e3d2 drivers/android/binder.c Todd Kjos 2017-06-29 3537 struct binder_node *buf_node;
72196393a5e3d2 drivers/android/binder.c Todd Kjos 2017-06-29 3538 struct binder_work *w;
72196393a5e3d2 drivers/android/binder.c Todd Kjos 2017-06-29 3539
72196393a5e3d2 drivers/android/binder.c Todd Kjos 2017-06-29 3540 buf_node = buffer->target_node;
673068eee8560d drivers/android/binder.c Todd Kjos 2017-06-29 3541 binder_node_inner_lock(buf_node);
72196393a5e3d2 drivers/android/binder.c Todd Kjos 2017-06-29 3542 BUG_ON(!buf_node->has_async_transaction);
72196393a5e3d2 drivers/android/binder.c Todd Kjos 2017-06-29 3543 BUG_ON(buf_node->proc != proc);
72196393a5e3d2 drivers/android/binder.c Todd Kjos 2017-06-29 3544 w = binder_dequeue_work_head_ilocked(
72196393a5e3d2 drivers/android/binder.c Todd Kjos 2017-06-29 3545 &buf_node->async_todo);
3a6430ce462172 drivers/android/binder.c Martijn Coenen 2017-08-31 3546 if (!w) {
197410ad884eb1 drivers/android/binder.c Gustavo A. R. Silva 2018-01-23 3547 buf_node->has_async_transaction = false;
3a6430ce462172 drivers/android/binder.c Martijn Coenen 2017-08-31 3548 } else {
72196393a5e3d2 drivers/android/binder.c Todd Kjos 2017-06-29 3549 binder_enqueue_work_ilocked(
3a6430ce462172 drivers/android/binder.c Martijn Coenen 2017-08-31 3550 w, &proc->todo);
3a6430ce462172 drivers/android/binder.c Martijn Coenen 2017-08-31 3551 binder_wakeup_proc_ilocked(proc);
3a6430ce462172 drivers/android/binder.c Martijn Coenen 2017-08-31 3552 }
673068eee8560d drivers/android/binder.c Todd Kjos 2017-06-29 3553 binder_node_inner_unlock(buf_node);
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3554 }
975a1ac9a9fe65 drivers/staging/android/binder.c Arve Hjønnevåg 2012-10-16 3555 trace_binder_transaction_buffer_release(buffer);
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3556 binder_transaction_buffer_release(proc, buffer, NULL);
19c987241ca121 drivers/android/binder.c Todd Kjos 2017-06-29 3557 binder_alloc_free_buf(&proc->alloc, buffer);
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3558 break;
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3559 }
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3560
7980240b6d63e0 drivers/android/binder.c Martijn Coenen 2017-02-03 3561 case BC_TRANSACTION_SG:
7980240b6d63e0 drivers/android/binder.c Martijn Coenen 2017-02-03 3562 case BC_REPLY_SG: {
7980240b6d63e0 drivers/android/binder.c Martijn Coenen 2017-02-03 3563 struct binder_transaction_data_sg tr;
7980240b6d63e0 drivers/android/binder.c Martijn Coenen 2017-02-03 3564
7980240b6d63e0 drivers/android/binder.c Martijn Coenen 2017-02-03 3565 if (copy_from_user(&tr, ptr, sizeof(tr)))
7980240b6d63e0 drivers/android/binder.c Martijn Coenen 2017-02-03 3566 return -EFAULT;
7980240b6d63e0 drivers/android/binder.c Martijn Coenen 2017-02-03 3567 ptr += sizeof(tr);
7980240b6d63e0 drivers/android/binder.c Martijn Coenen 2017-02-03 3568 binder_transaction(proc, thread, &tr.transaction_data,
7980240b6d63e0 drivers/android/binder.c Martijn Coenen 2017-02-03 3569 cmd == BC_REPLY_SG, tr.buffers_size);
7980240b6d63e0 drivers/android/binder.c Martijn Coenen 2017-02-03 3570 break;
7980240b6d63e0 drivers/android/binder.c Martijn Coenen 2017-02-03 3571 }
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3572 case BC_TRANSACTION:
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3573 case BC_REPLY: {
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3574 struct binder_transaction_data tr;
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3575
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3576 if (copy_from_user(&tr, ptr, sizeof(tr)))
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3577 return -EFAULT;
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3578 ptr += sizeof(tr);
4bfac80af3a63f drivers/android/binder.c Martijn Coenen 2017-02-03 3579 binder_transaction(proc, thread, &tr,
4bfac80af3a63f drivers/android/binder.c Martijn Coenen 2017-02-03 3580 cmd == BC_REPLY, 0);
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3581 break;
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3582 }
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3583
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3584 case BC_REGISTER_LOOPER:
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3585 binder_debug(BINDER_DEBUG_THREADS,
56b468fc709b2b drivers/staging/android/binder.c Anmol Sarma 2012-10-30 3586 "%d:%d BC_REGISTER_LOOPER\n",
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3587 proc->pid, thread->pid);
b3e6861283790d drivers/android/binder.c Todd Kjos 2017-06-29 3588 binder_inner_proc_lock(proc);
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3589 if (thread->looper & BINDER_LOOPER_STATE_ENTERED) {
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3590 thread->looper |= BINDER_LOOPER_STATE_INVALID;
56b468fc709b2b drivers/staging/android/binder.c Anmol Sarma 2012-10-30 3591 binder_user_error("%d:%d ERROR: BC_REGISTER_LOOPER called after BC_ENTER_LOOPER\n",
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3592 proc->pid, thread->pid);
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3593 } else if (proc->requested_threads == 0) {
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3594 thread->looper |= BINDER_LOOPER_STATE_INVALID;
56b468fc709b2b drivers/staging/android/binder.c Anmol Sarma 2012-10-30 3595 binder_user_error("%d:%d ERROR: BC_REGISTER_LOOPER called without request\n",
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3596 proc->pid, thread->pid);
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3597 } else {
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3598 proc->requested_threads--;
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3599 proc->requested_threads_started++;
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3600 }
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3601 thread->looper |= BINDER_LOOPER_STATE_REGISTERED;
b3e6861283790d drivers/android/binder.c Todd Kjos 2017-06-29 3602 binder_inner_proc_unlock(proc);
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3603 break;
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3604 case BC_ENTER_LOOPER:
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3605 binder_debug(BINDER_DEBUG_THREADS,
56b468fc709b2b drivers/staging/android/binder.c Anmol Sarma 2012-10-30 3606 "%d:%d BC_ENTER_LOOPER\n",
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3607 proc->pid, thread->pid);
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3608 if (thread->looper & BINDER_LOOPER_STATE_REGISTERED) {
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3609 thread->looper |= BINDER_LOOPER_STATE_INVALID;
56b468fc709b2b drivers/staging/android/binder.c Anmol Sarma 2012-10-30 3610 binder_user_error("%d:%d ERROR: BC_ENTER_LOOPER called after BC_REGISTER_LOOPER\n",
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3611 proc->pid, thread->pid);
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3612 }
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3613 thread->looper |= BINDER_LOOPER_STATE_ENTERED;
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3614 break;
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3615 case BC_EXIT_LOOPER:
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3616 binder_debug(BINDER_DEBUG_THREADS,
56b468fc709b2b drivers/staging/android/binder.c Anmol Sarma 2012-10-30 3617 "%d:%d BC_EXIT_LOOPER\n",
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3618 proc->pid, thread->pid);
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3619 thread->looper |= BINDER_LOOPER_STATE_EXITED;
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3620 break;
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3621
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3622 case BC_REQUEST_DEATH_NOTIFICATION:
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3623 case BC_CLEAR_DEATH_NOTIFICATION: {
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3624 uint32_t target;
da49889deb34d3 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3625 binder_uintptr_t cookie;
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3626 struct binder_ref *ref;
2c1838dc6817dd drivers/android/binder.c Todd Kjos 2017-06-29 3627 struct binder_ref_death *death = NULL;
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3628
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3629 if (get_user(target, (uint32_t __user *)ptr))
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3630 return -EFAULT;
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3631 ptr += sizeof(uint32_t);
da49889deb34d3 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3632 if (get_user(cookie, (binder_uintptr_t __user *)ptr))
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 @3633 return -EFAULT;
da49889deb34d3 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3634 ptr += sizeof(binder_uintptr_t);
2c1838dc6817dd drivers/android/binder.c Todd Kjos 2017-06-29 3635 if (cmd == BC_REQUEST_DEATH_NOTIFICATION) {
2c1838dc6817dd drivers/android/binder.c Todd Kjos 2017-06-29 3636 /*
2c1838dc6817dd drivers/android/binder.c Todd Kjos 2017-06-29 3637 * Allocate memory for death notification
2c1838dc6817dd drivers/android/binder.c Todd Kjos 2017-06-29 3638 * before taking lock
2c1838dc6817dd drivers/android/binder.c Todd Kjos 2017-06-29 3639 */
2c1838dc6817dd drivers/android/binder.c Todd Kjos 2017-06-29 3640 death = kzalloc(sizeof(*death), GFP_KERNEL);
2c1838dc6817dd drivers/android/binder.c Todd Kjos 2017-06-29 3641 if (death == NULL) {
2c1838dc6817dd drivers/android/binder.c Todd Kjos 2017-06-29 3642 WARN_ON(thread->return_error.cmd !=
2c1838dc6817dd drivers/android/binder.c Todd Kjos 2017-06-29 3643 BR_OK);
2c1838dc6817dd drivers/android/binder.c Todd Kjos 2017-06-29 3644 thread->return_error.cmd = BR_ERROR;
148ade2c4d4f46 drivers/android/binder.c Martijn Coenen 2017-11-15 3645 binder_enqueue_thread_work(
148ade2c4d4f46 drivers/android/binder.c Martijn Coenen 2017-11-15 3646 thread,
148ade2c4d4f46 drivers/android/binder.c Martijn Coenen 2017-11-15 3647 &thread->return_error.work);
2c1838dc6817dd drivers/android/binder.c Todd Kjos 2017-06-29 3648 binder_debug(
2c1838dc6817dd drivers/android/binder.c Todd Kjos 2017-06-29 3649 BINDER_DEBUG_FAILED_TRANSACTION,
2c1838dc6817dd drivers/android/binder.c Todd Kjos 2017-06-29 3650 "%d:%d BC_REQUEST_DEATH_NOTIFICATION failed\n",
2c1838dc6817dd drivers/android/binder.c Todd Kjos 2017-06-29 3651 proc->pid, thread->pid);
2c1838dc6817dd drivers/android/binder.c Todd Kjos 2017-06-29 3652 break;
2c1838dc6817dd drivers/android/binder.c Todd Kjos 2017-06-29 3653 }
2c1838dc6817dd drivers/android/binder.c Todd Kjos 2017-06-29 3654 }
2c1838dc6817dd drivers/android/binder.c Todd Kjos 2017-06-29 3655 binder_proc_lock(proc);
2c1838dc6817dd drivers/android/binder.c Todd Kjos 2017-06-29 3656 ref = binder_get_ref_olocked(proc, target, false);
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3657 if (ref == NULL) {
56b468fc709b2b drivers/staging/android/binder.c Anmol Sarma 2012-10-30 3658 binder_user_error("%d:%d %s invalid ref %d\n",
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3659 proc->pid, thread->pid,
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3660 cmd == BC_REQUEST_DEATH_NOTIFICATION ?
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3661 "BC_REQUEST_DEATH_NOTIFICATION" :
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3662 "BC_CLEAR_DEATH_NOTIFICATION",
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3663 target);
2c1838dc6817dd drivers/android/binder.c Todd Kjos 2017-06-29 3664 binder_proc_unlock(proc);
2c1838dc6817dd drivers/android/binder.c Todd Kjos 2017-06-29 3665 kfree(death);
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3666 break;
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3667 }
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3668
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3669 binder_debug(BINDER_DEBUG_DEATH_NOTIFICATION,
da49889deb34d3 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3670 "%d:%d %s %016llx ref %d desc %d s %d w %d for node %d\n",
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3671 proc->pid, thread->pid,
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3672 cmd == BC_REQUEST_DEATH_NOTIFICATION ?
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3673 "BC_REQUEST_DEATH_NOTIFICATION" :
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3674 "BC_CLEAR_DEATH_NOTIFICATION",
372e3147df7016 drivers/android/binder.c Todd Kjos 2017-06-29 3675 (u64)cookie, ref->data.debug_id,
372e3147df7016 drivers/android/binder.c Todd Kjos 2017-06-29 3676 ref->data.desc, ref->data.strong,
372e3147df7016 drivers/android/binder.c Todd Kjos 2017-06-29 3677 ref->data.weak, ref->node->debug_id);
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3678
ab51ec6bdf0b7a drivers/android/binder.c Martijn Coenen 2017-06-29 3679 binder_node_lock(ref->node);
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3680 if (cmd == BC_REQUEST_DEATH_NOTIFICATION) {
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3681 if (ref->death) {
56b468fc709b2b drivers/staging/android/binder.c Anmol Sarma 2012-10-30 3682 binder_user_error("%d:%d BC_REQUEST_DEATH_NOTIFICATION death notification already set\n",
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3683 proc->pid, thread->pid);
ab51ec6bdf0b7a drivers/android/binder.c Martijn Coenen 2017-06-29 3684 binder_node_unlock(ref->node);
2c1838dc6817dd drivers/android/binder.c Todd Kjos 2017-06-29 3685 binder_proc_unlock(proc);
2c1838dc6817dd drivers/android/binder.c Todd Kjos 2017-06-29 3686 kfree(death);
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3687 break;
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3688 }
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3689 binder_stats_created(BINDER_STAT_DEATH);
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3690 INIT_LIST_HEAD(&death->work.entry);
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3691 death->cookie = cookie;
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3692 ref->death = death;
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3693 if (ref->node->proc == NULL) {
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3694 ref->death->work.type = BINDER_WORK_DEAD_BINDER;
bb74562a7f8398 drivers/android/binder.c Martijn Coenen 2017-08-31 3695
1b77e9dcc3da93 drivers/android/binder.c Martijn Coenen 2017-08-31 3696 binder_inner_proc_lock(proc);
1b77e9dcc3da93 drivers/android/binder.c Martijn Coenen 2017-08-31 3697 binder_enqueue_work_ilocked(
bb74562a7f8398 drivers/android/binder.c Martijn Coenen 2017-08-31 3698 &ref->death->work, &proc->todo);
bb74562a7f8398 drivers/android/binder.c Martijn Coenen 2017-08-31 3699 binder_wakeup_proc_ilocked(proc);
1b77e9dcc3da93 drivers/android/binder.c Martijn Coenen 2017-08-31 3700 binder_inner_proc_unlock(proc);
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3701 }
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3702 } else {
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3703 if (ref->death == NULL) {
56b468fc709b2b drivers/staging/android/binder.c Anmol Sarma 2012-10-30 3704 binder_user_error("%d:%d BC_CLEAR_DEATH_NOTIFICATION death notification not active\n",
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3705 proc->pid, thread->pid);
673068eee8560d drivers/android/binder.c Todd Kjos 2017-06-29 3706 binder_node_unlock(ref->node);
2c1838dc6817dd drivers/android/binder.c Todd Kjos 2017-06-29 3707 binder_proc_unlock(proc);
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3708 break;
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3709 }
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3710 death = ref->death;
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3711 if (death->cookie != cookie) {
da49889deb34d3 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3712 binder_user_error("%d:%d BC_CLEAR_DEATH_NOTIFICATION death notification cookie mismatch %016llx != %016llx\n",
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3713 proc->pid, thread->pid,
da49889deb34d3 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3714 (u64)death->cookie,
da49889deb34d3 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3715 (u64)cookie);
673068eee8560d drivers/android/binder.c Todd Kjos 2017-06-29 3716 binder_node_unlock(ref->node);
2c1838dc6817dd drivers/android/binder.c Todd Kjos 2017-06-29 3717 binder_proc_unlock(proc);
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3718 break;
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3719 }
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3720 ref->death = NULL;
72196393a5e3d2 drivers/android/binder.c Todd Kjos 2017-06-29 3721 binder_inner_proc_lock(proc);
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3722 if (list_empty(&death->work.entry)) {
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3723 death->work.type = BINDER_WORK_CLEAR_DEATH_NOTIFICATION;
72196393a5e3d2 drivers/android/binder.c Todd Kjos 2017-06-29 3724 if (thread->looper &
72196393a5e3d2 drivers/android/binder.c Todd Kjos 2017-06-29 3725 (BINDER_LOOPER_STATE_REGISTERED |
72196393a5e3d2 drivers/android/binder.c Todd Kjos 2017-06-29 3726 BINDER_LOOPER_STATE_ENTERED))
148ade2c4d4f46 drivers/android/binder.c Martijn Coenen 2017-11-15 3727 binder_enqueue_thread_work_ilocked(
148ade2c4d4f46 drivers/android/binder.c Martijn Coenen 2017-11-15 3728 thread,
148ade2c4d4f46 drivers/android/binder.c Martijn Coenen 2017-11-15 3729 &death->work);
72196393a5e3d2 drivers/android/binder.c Todd Kjos 2017-06-29 3730 else {
72196393a5e3d2 drivers/android/binder.c Todd Kjos 2017-06-29 3731 binder_enqueue_work_ilocked(
72196393a5e3d2 drivers/android/binder.c Todd Kjos 2017-06-29 3732 &death->work,
72196393a5e3d2 drivers/android/binder.c Todd Kjos 2017-06-29 3733 &proc->todo);
1b77e9dcc3da93 drivers/android/binder.c Martijn Coenen 2017-08-31 3734 binder_wakeup_proc_ilocked(
408c68b17aea2f drivers/android/binder.c Martijn Coenen 2017-08-31 3735 proc);
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3736 }
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3737 } else {
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3738 BUG_ON(death->work.type != BINDER_WORK_DEAD_BINDER);
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3739 death->work.type = BINDER_WORK_DEAD_BINDER_AND_CLEAR;
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3740 }
72196393a5e3d2 drivers/android/binder.c Todd Kjos 2017-06-29 3741 binder_inner_proc_unlock(proc);
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3742 }
ab51ec6bdf0b7a drivers/android/binder.c Martijn Coenen 2017-06-29 3743 binder_node_unlock(ref->node);
2c1838dc6817dd drivers/android/binder.c Todd Kjos 2017-06-29 3744 binder_proc_unlock(proc);
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3745 } break;
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3746 case BC_DEAD_BINDER_DONE: {
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3747 struct binder_work *w;
da49889deb34d3 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3748 binder_uintptr_t cookie;
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3749 struct binder_ref_death *death = NULL;
10f62861b4a2f2 drivers/staging/android/binder.c Seunghun Lee 2014-05-01 3750
da49889deb34d3 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3751 if (get_user(cookie, (binder_uintptr_t __user *)ptr))
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3752 return -EFAULT;
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3753
7a64cd887fdb97 drivers/android/binder.c Lisa Du 2016-02-17 3754 ptr += sizeof(cookie);
72196393a5e3d2 drivers/android/binder.c Todd Kjos 2017-06-29 3755 binder_inner_proc_lock(proc);
72196393a5e3d2 drivers/android/binder.c Todd Kjos 2017-06-29 3756 list_for_each_entry(w, &proc->delivered_death,
72196393a5e3d2 drivers/android/binder.c Todd Kjos 2017-06-29 3757 entry) {
72196393a5e3d2 drivers/android/binder.c Todd Kjos 2017-06-29 3758 struct binder_ref_death *tmp_death =
72196393a5e3d2 drivers/android/binder.c Todd Kjos 2017-06-29 3759 container_of(w,
72196393a5e3d2 drivers/android/binder.c Todd Kjos 2017-06-29 3760 struct binder_ref_death,
72196393a5e3d2 drivers/android/binder.c Todd Kjos 2017-06-29 3761 work);
10f62861b4a2f2 drivers/staging/android/binder.c Seunghun Lee 2014-05-01 3762
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3763 if (tmp_death->cookie == cookie) {
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3764 death = tmp_death;
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3765 break;
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3766 }
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3767 }
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3768 binder_debug(BINDER_DEBUG_DEAD_BINDER,
8ca86f1639ec58 drivers/android/binder.c Todd Kjos 2018-02-07 3769 "%d:%d BC_DEAD_BINDER_DONE %016llx found %pK\n",
da49889deb34d3 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3770 proc->pid, thread->pid, (u64)cookie,
da49889deb34d3 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3771 death);
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3772 if (death == NULL) {
da49889deb34d3 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3773 binder_user_error("%d:%d BC_DEAD_BINDER_DONE %016llx not found\n",
da49889deb34d3 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3774 proc->pid, thread->pid, (u64)cookie);
72196393a5e3d2 drivers/android/binder.c Todd Kjos 2017-06-29 3775 binder_inner_proc_unlock(proc);
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3776 break;
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3777 }
72196393a5e3d2 drivers/android/binder.c Todd Kjos 2017-06-29 3778 binder_dequeue_work_ilocked(&death->work);
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3779 if (death->work.type == BINDER_WORK_DEAD_BINDER_AND_CLEAR) {
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3780 death->work.type = BINDER_WORK_CLEAR_DEATH_NOTIFICATION;
72196393a5e3d2 drivers/android/binder.c Todd Kjos 2017-06-29 3781 if (thread->looper &
72196393a5e3d2 drivers/android/binder.c Todd Kjos 2017-06-29 3782 (BINDER_LOOPER_STATE_REGISTERED |
72196393a5e3d2 drivers/android/binder.c Todd Kjos 2017-06-29 3783 BINDER_LOOPER_STATE_ENTERED))
148ade2c4d4f46 drivers/android/binder.c Martijn Coenen 2017-11-15 3784 binder_enqueue_thread_work_ilocked(
148ade2c4d4f46 drivers/android/binder.c Martijn Coenen 2017-11-15 3785 thread, &death->work);
72196393a5e3d2 drivers/android/binder.c Todd Kjos 2017-06-29 3786 else {
72196393a5e3d2 drivers/android/binder.c Todd Kjos 2017-06-29 3787 binder_enqueue_work_ilocked(
72196393a5e3d2 drivers/android/binder.c Todd Kjos 2017-06-29 3788 &death->work,
72196393a5e3d2 drivers/android/binder.c Todd Kjos 2017-06-29 3789 &proc->todo);
408c68b17aea2f drivers/android/binder.c Martijn Coenen 2017-08-31 3790 binder_wakeup_proc_ilocked(proc);
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3791 }
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3792 }
72196393a5e3d2 drivers/android/binder.c Todd Kjos 2017-06-29 3793 binder_inner_proc_unlock(proc);
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3794 } break;
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3795
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3796 default:
56b468fc709b2b drivers/staging/android/binder.c Anmol Sarma 2012-10-30 3797 pr_err("%d:%d unknown command %d\n",
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3798 proc->pid, thread->pid, cmd);
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3799 return -EINVAL;
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3800 }
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3801 *consumed = ptr - buffer;
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3802 }
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3803 return 0;
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3804 }
355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3805
:::::: The code at line 3633 was first introduced by commit
:::::: 355b0502f6efea0ff9492753888772c96972d2a3 Revert "Staging: android: delete android drivers"
:::::: TO: Greg Kroah-Hartman <gregkh@suse.de>
:::::: CC: Greg Kroah-Hartman <gregkh@suse.de>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 17594 bytes --]
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [linux-stable-rc:linux-4.19.y 405/611] drivers/android/binder.c:3633: Error: unrecognized keyword/register name `l.lwz ?ap, 4(r21)'
2021-07-01 14:49 [linux-stable-rc:linux-4.19.y 405/611] drivers/android/binder.c:3633: Error: unrecognized keyword/register name `l.lwz ?ap, 4(r21)' kernel test robot
@ 2021-07-01 23:26 ` Stafford Horne
0 siblings, 0 replies; 2+ messages in thread
From: Stafford Horne @ 2021-07-01 23:26 UTC (permalink / raw)
To: kbuild-all
[-- Attachment #1: Type: text/plain, Size: 60583 bytes --]
On Thu, Jul 01, 2021 at 10:49:07PM +0800, kernel test robot wrote:
> tree: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-4.19.y
> head: a834132bd465f9d7f4049be65648e01cf2533cb8
> commit: 74e42c22f2125bb07ffd9b0cccef120815e68725 [405/611] binder: Prevent context manager from incrementing ref 0
> config: openrisc-randconfig-r021-20210630 (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.git/commit/?id=74e42c22f2125bb07ffd9b0cccef120815e68725
> 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-4.19.y
> git checkout 74e42c22f2125bb07ffd9b0cccef120815e68725
> # save the attached .config to linux build tree
> mkdir build_dir
> COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross O=build_dir ARCH=openrisc SHELL=/bin/bash drivers/android/
>
> If you fix the issue, kindly add following tag as appropriate
> Reported-by: kernel test robot <lkp@intel.com>
>
> All errors (new ones prefixed by >>):
>
> drivers/android/binder.c: Assembler messages:
> >> drivers/android/binder.c:3633: Error: unrecognized keyword/register name `l.lwz ?ap,4(r21)'
> drivers/android/binder.c:3638: Error: unrecognized keyword/register name `l.addi ?ap,r0,0'
This is fixed by d877322bc1adcab9850732275670409e8bcca4c4 upstream.
It seems it hasn't been backported to this branch yet. It did make it to 5.8
and 5.4 stable trees.
The backported patch sent to stable as:
Message-Id: <20201018201651.2604140-2-shorne@gmail.com>
-Stafford
> vim +3633 drivers/android/binder.c
>
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3331
> fb07ebc3e82a98 drivers/staging/android/binder.c Bojan Prtvar 2013-09-02 3332 static int binder_thread_write(struct binder_proc *proc,
> fb07ebc3e82a98 drivers/staging/android/binder.c Bojan Prtvar 2013-09-02 3333 struct binder_thread *thread,
> da49889deb34d3 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3334 binder_uintptr_t binder_buffer, size_t size,
> da49889deb34d3 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3335 binder_size_t *consumed)
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3336 {
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3337 uint32_t cmd;
> 342e5c90b60134 drivers/android/binder.c Martijn Coenen 2017-02-03 3338 struct binder_context *context = proc->context;
> da49889deb34d3 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3339 void __user *buffer = (void __user *)(uintptr_t)binder_buffer;
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3340 void __user *ptr = buffer + *consumed;
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3341 void __user *end = buffer + size;
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3342
> 26549d17741035 drivers/android/binder.c Todd Kjos 2017-06-29 3343 while (ptr < end && thread->return_error.cmd == BR_OK) {
> 372e3147df7016 drivers/android/binder.c Todd Kjos 2017-06-29 3344 int ret;
> 372e3147df7016 drivers/android/binder.c Todd Kjos 2017-06-29 3345
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3346 if (get_user(cmd, (uint32_t __user *)ptr))
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3347 return -EFAULT;
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3348 ptr += sizeof(uint32_t);
> 975a1ac9a9fe65 drivers/staging/android/binder.c Arve Hjønnevåg 2012-10-16 3349 trace_binder_command(cmd);
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3350 if (_IOC_NR(cmd) < ARRAY_SIZE(binder_stats.bc)) {
> 0953c7976c36ce drivers/android/binder.c Badhri Jagan Sridharan 2017-06-29 3351 atomic_inc(&binder_stats.bc[_IOC_NR(cmd)]);
> 0953c7976c36ce drivers/android/binder.c Badhri Jagan Sridharan 2017-06-29 3352 atomic_inc(&proc->stats.bc[_IOC_NR(cmd)]);
> 0953c7976c36ce drivers/android/binder.c Badhri Jagan Sridharan 2017-06-29 3353 atomic_inc(&thread->stats.bc[_IOC_NR(cmd)]);
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3354 }
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3355 switch (cmd) {
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3356 case BC_INCREFS:
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3357 case BC_ACQUIRE:
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3358 case BC_RELEASE:
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3359 case BC_DECREFS: {
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3360 uint32_t target;
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3361 const char *debug_string;
> 372e3147df7016 drivers/android/binder.c Todd Kjos 2017-06-29 3362 bool strong = cmd == BC_ACQUIRE || cmd == BC_RELEASE;
> 372e3147df7016 drivers/android/binder.c Todd Kjos 2017-06-29 3363 bool increment = cmd == BC_INCREFS || cmd == BC_ACQUIRE;
> 372e3147df7016 drivers/android/binder.c Todd Kjos 2017-06-29 3364 struct binder_ref_data rdata;
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3365
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3366 if (get_user(target, (uint32_t __user *)ptr))
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3367 return -EFAULT;
> c44b1231ff1170 drivers/android/binder.c Todd Kjos 2017-06-29 3368
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3369 ptr += sizeof(uint32_t);
> 372e3147df7016 drivers/android/binder.c Todd Kjos 2017-06-29 3370 ret = -1;
> 372e3147df7016 drivers/android/binder.c Todd Kjos 2017-06-29 3371 if (increment && !target) {
> c44b1231ff1170 drivers/android/binder.c Todd Kjos 2017-06-29 3372 struct binder_node *ctx_mgr_node;
> c44b1231ff1170 drivers/android/binder.c Todd Kjos 2017-06-29 3373 mutex_lock(&context->context_mgr_node_lock);
> c44b1231ff1170 drivers/android/binder.c Todd Kjos 2017-06-29 3374 ctx_mgr_node = context->binder_context_mgr_node;
> 74e42c22f2125b drivers/android/binder.c Jann Horn 2020-07-27 3375 if (ctx_mgr_node) {
> 74e42c22f2125b drivers/android/binder.c Jann Horn 2020-07-27 3376 if (ctx_mgr_node->proc == proc) {
> 74e42c22f2125b drivers/android/binder.c Jann Horn 2020-07-27 3377 binder_user_error("%d:%d context manager tried to acquire desc 0\n",
> 74e42c22f2125b drivers/android/binder.c Jann Horn 2020-07-27 3378 proc->pid, thread->pid);
> 74e42c22f2125b drivers/android/binder.c Jann Horn 2020-07-27 3379 mutex_unlock(&context->context_mgr_node_lock);
> 74e42c22f2125b drivers/android/binder.c Jann Horn 2020-07-27 3380 return -EINVAL;
> 74e42c22f2125b drivers/android/binder.c Jann Horn 2020-07-27 3381 }
> 372e3147df7016 drivers/android/binder.c Todd Kjos 2017-06-29 3382 ret = binder_inc_ref_for_node(
> 372e3147df7016 drivers/android/binder.c Todd Kjos 2017-06-29 3383 proc, ctx_mgr_node,
> 372e3147df7016 drivers/android/binder.c Todd Kjos 2017-06-29 3384 strong, NULL, &rdata);
> 74e42c22f2125b drivers/android/binder.c Jann Horn 2020-07-27 3385 }
> c44b1231ff1170 drivers/android/binder.c Todd Kjos 2017-06-29 3386 mutex_unlock(&context->context_mgr_node_lock);
> c44b1231ff1170 drivers/android/binder.c Todd Kjos 2017-06-29 3387 }
> 372e3147df7016 drivers/android/binder.c Todd Kjos 2017-06-29 3388 if (ret)
> 372e3147df7016 drivers/android/binder.c Todd Kjos 2017-06-29 3389 ret = binder_update_ref_for_handle(
> 372e3147df7016 drivers/android/binder.c Todd Kjos 2017-06-29 3390 proc, target, increment, strong,
> 372e3147df7016 drivers/android/binder.c Todd Kjos 2017-06-29 3391 &rdata);
> 372e3147df7016 drivers/android/binder.c Todd Kjos 2017-06-29 3392 if (!ret && rdata.desc != target) {
> 372e3147df7016 drivers/android/binder.c Todd Kjos 2017-06-29 3393 binder_user_error("%d:%d tried to acquire reference to desc %d, got %d instead\n",
> 372e3147df7016 drivers/android/binder.c Todd Kjos 2017-06-29 3394 proc->pid, thread->pid,
> 372e3147df7016 drivers/android/binder.c Todd Kjos 2017-06-29 3395 target, rdata.desc);
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3396 }
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3397 switch (cmd) {
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3398 case BC_INCREFS:
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3399 debug_string = "IncRefs";
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3400 break;
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3401 case BC_ACQUIRE:
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3402 debug_string = "Acquire";
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3403 break;
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3404 case BC_RELEASE:
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3405 debug_string = "Release";
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3406 break;
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3407 case BC_DECREFS:
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3408 default:
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3409 debug_string = "DecRefs";
> 372e3147df7016 drivers/android/binder.c Todd Kjos 2017-06-29 3410 break;
> 372e3147df7016 drivers/android/binder.c Todd Kjos 2017-06-29 3411 }
> 372e3147df7016 drivers/android/binder.c Todd Kjos 2017-06-29 3412 if (ret) {
> 372e3147df7016 drivers/android/binder.c Todd Kjos 2017-06-29 3413 binder_user_error("%d:%d %s %d refcount change on invalid ref %d ret %d\n",
> 372e3147df7016 drivers/android/binder.c Todd Kjos 2017-06-29 3414 proc->pid, thread->pid, debug_string,
> 372e3147df7016 drivers/android/binder.c Todd Kjos 2017-06-29 3415 strong, target, ret);
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3416 break;
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3417 }
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3418 binder_debug(BINDER_DEBUG_USER_REFS,
> 372e3147df7016 drivers/android/binder.c Todd Kjos 2017-06-29 3419 "%d:%d %s ref %d desc %d s %d w %d\n",
> 372e3147df7016 drivers/android/binder.c Todd Kjos 2017-06-29 3420 proc->pid, thread->pid, debug_string,
> 372e3147df7016 drivers/android/binder.c Todd Kjos 2017-06-29 3421 rdata.debug_id, rdata.desc, rdata.strong,
> 372e3147df7016 drivers/android/binder.c Todd Kjos 2017-06-29 3422 rdata.weak);
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3423 break;
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3424 }
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3425 case BC_INCREFS_DONE:
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3426 case BC_ACQUIRE_DONE: {
> da49889deb34d3 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3427 binder_uintptr_t node_ptr;
> da49889deb34d3 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3428 binder_uintptr_t cookie;
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3429 struct binder_node *node;
> 673068eee8560d drivers/android/binder.c Todd Kjos 2017-06-29 3430 bool free_node;
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3431
> da49889deb34d3 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3432 if (get_user(node_ptr, (binder_uintptr_t __user *)ptr))
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3433 return -EFAULT;
> da49889deb34d3 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3434 ptr += sizeof(binder_uintptr_t);
> da49889deb34d3 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3435 if (get_user(cookie, (binder_uintptr_t __user *)ptr))
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3436 return -EFAULT;
> da49889deb34d3 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3437 ptr += sizeof(binder_uintptr_t);
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3438 node = binder_get_node(proc, node_ptr);
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3439 if (node == NULL) {
> da49889deb34d3 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3440 binder_user_error("%d:%d %s u%016llx no match\n",
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3441 proc->pid, thread->pid,
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3442 cmd == BC_INCREFS_DONE ?
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3443 "BC_INCREFS_DONE" :
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3444 "BC_ACQUIRE_DONE",
> da49889deb34d3 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3445 (u64)node_ptr);
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3446 break;
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3447 }
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3448 if (cookie != node->cookie) {
> da49889deb34d3 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3449 binder_user_error("%d:%d %s u%016llx node %d cookie mismatch %016llx != %016llx\n",
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3450 proc->pid, thread->pid,
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3451 cmd == BC_INCREFS_DONE ?
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3452 "BC_INCREFS_DONE" : "BC_ACQUIRE_DONE",
> da49889deb34d3 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3453 (u64)node_ptr, node->debug_id,
> da49889deb34d3 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3454 (u64)cookie, (u64)node->cookie);
> adc1884222276d drivers/android/binder.c Todd Kjos 2017-06-29 3455 binder_put_node(node);
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3456 break;
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3457 }
> 673068eee8560d drivers/android/binder.c Todd Kjos 2017-06-29 3458 binder_node_inner_lock(node);
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3459 if (cmd == BC_ACQUIRE_DONE) {
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3460 if (node->pending_strong_ref == 0) {
> 56b468fc709b2b drivers/staging/android/binder.c Anmol Sarma 2012-10-30 3461 binder_user_error("%d:%d BC_ACQUIRE_DONE node %d has no pending acquire request\n",
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3462 proc->pid, thread->pid,
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3463 node->debug_id);
> 673068eee8560d drivers/android/binder.c Todd Kjos 2017-06-29 3464 binder_node_inner_unlock(node);
> adc1884222276d drivers/android/binder.c Todd Kjos 2017-06-29 3465 binder_put_node(node);
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3466 break;
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3467 }
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3468 node->pending_strong_ref = 0;
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3469 } else {
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3470 if (node->pending_weak_ref == 0) {
> 56b468fc709b2b drivers/staging/android/binder.c Anmol Sarma 2012-10-30 3471 binder_user_error("%d:%d BC_INCREFS_DONE node %d has no pending increfs request\n",
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3472 proc->pid, thread->pid,
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3473 node->debug_id);
> 673068eee8560d drivers/android/binder.c Todd Kjos 2017-06-29 3474 binder_node_inner_unlock(node);
> adc1884222276d drivers/android/binder.c Todd Kjos 2017-06-29 3475 binder_put_node(node);
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3476 break;
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3477 }
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3478 node->pending_weak_ref = 0;
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3479 }
> 673068eee8560d drivers/android/binder.c Todd Kjos 2017-06-29 3480 free_node = binder_dec_node_nilocked(node,
> 673068eee8560d drivers/android/binder.c Todd Kjos 2017-06-29 3481 cmd == BC_ACQUIRE_DONE, 0);
> 673068eee8560d drivers/android/binder.c Todd Kjos 2017-06-29 3482 WARN_ON(free_node);
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3483 binder_debug(BINDER_DEBUG_USER_REFS,
> adc1884222276d drivers/android/binder.c Todd Kjos 2017-06-29 3484 "%d:%d %s node %d ls %d lw %d tr %d\n",
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3485 proc->pid, thread->pid,
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3486 cmd == BC_INCREFS_DONE ? "BC_INCREFS_DONE" : "BC_ACQUIRE_DONE",
> adc1884222276d drivers/android/binder.c Todd Kjos 2017-06-29 3487 node->debug_id, node->local_strong_refs,
> adc1884222276d drivers/android/binder.c Todd Kjos 2017-06-29 3488 node->local_weak_refs, node->tmp_refs);
> 673068eee8560d drivers/android/binder.c Todd Kjos 2017-06-29 3489 binder_node_inner_unlock(node);
> adc1884222276d drivers/android/binder.c Todd Kjos 2017-06-29 3490 binder_put_node(node);
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3491 break;
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3492 }
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3493 case BC_ATTEMPT_ACQUIRE:
> 56b468fc709b2b drivers/staging/android/binder.c Anmol Sarma 2012-10-30 3494 pr_err("BC_ATTEMPT_ACQUIRE not supported\n");
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3495 return -EINVAL;
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3496 case BC_ACQUIRE_RESULT:
> 56b468fc709b2b drivers/staging/android/binder.c Anmol Sarma 2012-10-30 3497 pr_err("BC_ACQUIRE_RESULT not supported\n");
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3498 return -EINVAL;
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3499
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3500 case BC_FREE_BUFFER: {
> da49889deb34d3 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3501 binder_uintptr_t data_ptr;
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3502 struct binder_buffer *buffer;
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3503
> da49889deb34d3 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3504 if (get_user(data_ptr, (binder_uintptr_t __user *)ptr))
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3505 return -EFAULT;
> da49889deb34d3 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3506 ptr += sizeof(binder_uintptr_t);
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3507
> 53d311cfa19ad3 drivers/android/binder.c Todd Kjos 2017-06-29 3508 buffer = binder_alloc_prepare_to_free(&proc->alloc,
> 19c987241ca121 drivers/android/binder.c Todd Kjos 2017-06-29 3509 data_ptr);
> 553927d6aab993 drivers/android/binder.c Todd Kjos 2018-11-06 3510 if (IS_ERR_OR_NULL(buffer)) {
> 553927d6aab993 drivers/android/binder.c Todd Kjos 2018-11-06 3511 if (PTR_ERR(buffer) == -EPERM) {
> 553927d6aab993 drivers/android/binder.c Todd Kjos 2018-11-06 3512 binder_user_error(
> 553927d6aab993 drivers/android/binder.c Todd Kjos 2018-11-06 3513 "%d:%d BC_FREE_BUFFER u%016llx matched unreturned or currently freeing buffer\n",
> 553927d6aab993 drivers/android/binder.c Todd Kjos 2018-11-06 3514 proc->pid, thread->pid,
> 553927d6aab993 drivers/android/binder.c Todd Kjos 2018-11-06 3515 (u64)data_ptr);
> 553927d6aab993 drivers/android/binder.c Todd Kjos 2018-11-06 3516 } else {
> 553927d6aab993 drivers/android/binder.c Todd Kjos 2018-11-06 3517 binder_user_error(
> 553927d6aab993 drivers/android/binder.c Todd Kjos 2018-11-06 3518 "%d:%d BC_FREE_BUFFER u%016llx no match\n",
> 553927d6aab993 drivers/android/binder.c Todd Kjos 2018-11-06 3519 proc->pid, thread->pid,
> 553927d6aab993 drivers/android/binder.c Todd Kjos 2018-11-06 3520 (u64)data_ptr);
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3521 }
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3522 break;
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3523 }
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3524 binder_debug(BINDER_DEBUG_FREE_BUFFER,
> da49889deb34d3 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3525 "%d:%d BC_FREE_BUFFER u%016llx found buffer %d for %s transaction\n",
> da49889deb34d3 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3526 proc->pid, thread->pid, (u64)data_ptr,
> da49889deb34d3 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3527 buffer->debug_id,
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3528 buffer->transaction ? "active" : "finished");
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3529
> 22068d49d09d2b drivers/android/binder.c Todd Kjos 2019-06-12 3530 binder_inner_proc_lock(proc);
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3531 if (buffer->transaction) {
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3532 buffer->transaction->buffer = NULL;
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3533 buffer->transaction = NULL;
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3534 }
> 22068d49d09d2b drivers/android/binder.c Todd Kjos 2019-06-12 3535 binder_inner_proc_unlock(proc);
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3536 if (buffer->async_transaction && buffer->target_node) {
> 72196393a5e3d2 drivers/android/binder.c Todd Kjos 2017-06-29 3537 struct binder_node *buf_node;
> 72196393a5e3d2 drivers/android/binder.c Todd Kjos 2017-06-29 3538 struct binder_work *w;
> 72196393a5e3d2 drivers/android/binder.c Todd Kjos 2017-06-29 3539
> 72196393a5e3d2 drivers/android/binder.c Todd Kjos 2017-06-29 3540 buf_node = buffer->target_node;
> 673068eee8560d drivers/android/binder.c Todd Kjos 2017-06-29 3541 binder_node_inner_lock(buf_node);
> 72196393a5e3d2 drivers/android/binder.c Todd Kjos 2017-06-29 3542 BUG_ON(!buf_node->has_async_transaction);
> 72196393a5e3d2 drivers/android/binder.c Todd Kjos 2017-06-29 3543 BUG_ON(buf_node->proc != proc);
> 72196393a5e3d2 drivers/android/binder.c Todd Kjos 2017-06-29 3544 w = binder_dequeue_work_head_ilocked(
> 72196393a5e3d2 drivers/android/binder.c Todd Kjos 2017-06-29 3545 &buf_node->async_todo);
> 3a6430ce462172 drivers/android/binder.c Martijn Coenen 2017-08-31 3546 if (!w) {
> 197410ad884eb1 drivers/android/binder.c Gustavo A. R. Silva 2018-01-23 3547 buf_node->has_async_transaction = false;
> 3a6430ce462172 drivers/android/binder.c Martijn Coenen 2017-08-31 3548 } else {
> 72196393a5e3d2 drivers/android/binder.c Todd Kjos 2017-06-29 3549 binder_enqueue_work_ilocked(
> 3a6430ce462172 drivers/android/binder.c Martijn Coenen 2017-08-31 3550 w, &proc->todo);
> 3a6430ce462172 drivers/android/binder.c Martijn Coenen 2017-08-31 3551 binder_wakeup_proc_ilocked(proc);
> 3a6430ce462172 drivers/android/binder.c Martijn Coenen 2017-08-31 3552 }
> 673068eee8560d drivers/android/binder.c Todd Kjos 2017-06-29 3553 binder_node_inner_unlock(buf_node);
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3554 }
> 975a1ac9a9fe65 drivers/staging/android/binder.c Arve Hjønnevåg 2012-10-16 3555 trace_binder_transaction_buffer_release(buffer);
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3556 binder_transaction_buffer_release(proc, buffer, NULL);
> 19c987241ca121 drivers/android/binder.c Todd Kjos 2017-06-29 3557 binder_alloc_free_buf(&proc->alloc, buffer);
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3558 break;
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3559 }
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3560
> 7980240b6d63e0 drivers/android/binder.c Martijn Coenen 2017-02-03 3561 case BC_TRANSACTION_SG:
> 7980240b6d63e0 drivers/android/binder.c Martijn Coenen 2017-02-03 3562 case BC_REPLY_SG: {
> 7980240b6d63e0 drivers/android/binder.c Martijn Coenen 2017-02-03 3563 struct binder_transaction_data_sg tr;
> 7980240b6d63e0 drivers/android/binder.c Martijn Coenen 2017-02-03 3564
> 7980240b6d63e0 drivers/android/binder.c Martijn Coenen 2017-02-03 3565 if (copy_from_user(&tr, ptr, sizeof(tr)))
> 7980240b6d63e0 drivers/android/binder.c Martijn Coenen 2017-02-03 3566 return -EFAULT;
> 7980240b6d63e0 drivers/android/binder.c Martijn Coenen 2017-02-03 3567 ptr += sizeof(tr);
> 7980240b6d63e0 drivers/android/binder.c Martijn Coenen 2017-02-03 3568 binder_transaction(proc, thread, &tr.transaction_data,
> 7980240b6d63e0 drivers/android/binder.c Martijn Coenen 2017-02-03 3569 cmd == BC_REPLY_SG, tr.buffers_size);
> 7980240b6d63e0 drivers/android/binder.c Martijn Coenen 2017-02-03 3570 break;
> 7980240b6d63e0 drivers/android/binder.c Martijn Coenen 2017-02-03 3571 }
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3572 case BC_TRANSACTION:
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3573 case BC_REPLY: {
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3574 struct binder_transaction_data tr;
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3575
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3576 if (copy_from_user(&tr, ptr, sizeof(tr)))
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3577 return -EFAULT;
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3578 ptr += sizeof(tr);
> 4bfac80af3a63f drivers/android/binder.c Martijn Coenen 2017-02-03 3579 binder_transaction(proc, thread, &tr,
> 4bfac80af3a63f drivers/android/binder.c Martijn Coenen 2017-02-03 3580 cmd == BC_REPLY, 0);
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3581 break;
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3582 }
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3583
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3584 case BC_REGISTER_LOOPER:
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3585 binder_debug(BINDER_DEBUG_THREADS,
> 56b468fc709b2b drivers/staging/android/binder.c Anmol Sarma 2012-10-30 3586 "%d:%d BC_REGISTER_LOOPER\n",
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3587 proc->pid, thread->pid);
> b3e6861283790d drivers/android/binder.c Todd Kjos 2017-06-29 3588 binder_inner_proc_lock(proc);
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3589 if (thread->looper & BINDER_LOOPER_STATE_ENTERED) {
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3590 thread->looper |= BINDER_LOOPER_STATE_INVALID;
> 56b468fc709b2b drivers/staging/android/binder.c Anmol Sarma 2012-10-30 3591 binder_user_error("%d:%d ERROR: BC_REGISTER_LOOPER called after BC_ENTER_LOOPER\n",
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3592 proc->pid, thread->pid);
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3593 } else if (proc->requested_threads == 0) {
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3594 thread->looper |= BINDER_LOOPER_STATE_INVALID;
> 56b468fc709b2b drivers/staging/android/binder.c Anmol Sarma 2012-10-30 3595 binder_user_error("%d:%d ERROR: BC_REGISTER_LOOPER called without request\n",
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3596 proc->pid, thread->pid);
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3597 } else {
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3598 proc->requested_threads--;
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3599 proc->requested_threads_started++;
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3600 }
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3601 thread->looper |= BINDER_LOOPER_STATE_REGISTERED;
> b3e6861283790d drivers/android/binder.c Todd Kjos 2017-06-29 3602 binder_inner_proc_unlock(proc);
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3603 break;
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3604 case BC_ENTER_LOOPER:
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3605 binder_debug(BINDER_DEBUG_THREADS,
> 56b468fc709b2b drivers/staging/android/binder.c Anmol Sarma 2012-10-30 3606 "%d:%d BC_ENTER_LOOPER\n",
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3607 proc->pid, thread->pid);
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3608 if (thread->looper & BINDER_LOOPER_STATE_REGISTERED) {
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3609 thread->looper |= BINDER_LOOPER_STATE_INVALID;
> 56b468fc709b2b drivers/staging/android/binder.c Anmol Sarma 2012-10-30 3610 binder_user_error("%d:%d ERROR: BC_ENTER_LOOPER called after BC_REGISTER_LOOPER\n",
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3611 proc->pid, thread->pid);
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3612 }
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3613 thread->looper |= BINDER_LOOPER_STATE_ENTERED;
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3614 break;
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3615 case BC_EXIT_LOOPER:
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3616 binder_debug(BINDER_DEBUG_THREADS,
> 56b468fc709b2b drivers/staging/android/binder.c Anmol Sarma 2012-10-30 3617 "%d:%d BC_EXIT_LOOPER\n",
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3618 proc->pid, thread->pid);
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3619 thread->looper |= BINDER_LOOPER_STATE_EXITED;
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3620 break;
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3621
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3622 case BC_REQUEST_DEATH_NOTIFICATION:
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3623 case BC_CLEAR_DEATH_NOTIFICATION: {
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3624 uint32_t target;
> da49889deb34d3 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3625 binder_uintptr_t cookie;
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3626 struct binder_ref *ref;
> 2c1838dc6817dd drivers/android/binder.c Todd Kjos 2017-06-29 3627 struct binder_ref_death *death = NULL;
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3628
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3629 if (get_user(target, (uint32_t __user *)ptr))
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3630 return -EFAULT;
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3631 ptr += sizeof(uint32_t);
> da49889deb34d3 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3632 if (get_user(cookie, (binder_uintptr_t __user *)ptr))
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 @3633 return -EFAULT;
> da49889deb34d3 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3634 ptr += sizeof(binder_uintptr_t);
> 2c1838dc6817dd drivers/android/binder.c Todd Kjos 2017-06-29 3635 if (cmd == BC_REQUEST_DEATH_NOTIFICATION) {
> 2c1838dc6817dd drivers/android/binder.c Todd Kjos 2017-06-29 3636 /*
> 2c1838dc6817dd drivers/android/binder.c Todd Kjos 2017-06-29 3637 * Allocate memory for death notification
> 2c1838dc6817dd drivers/android/binder.c Todd Kjos 2017-06-29 3638 * before taking lock
> 2c1838dc6817dd drivers/android/binder.c Todd Kjos 2017-06-29 3639 */
> 2c1838dc6817dd drivers/android/binder.c Todd Kjos 2017-06-29 3640 death = kzalloc(sizeof(*death), GFP_KERNEL);
> 2c1838dc6817dd drivers/android/binder.c Todd Kjos 2017-06-29 3641 if (death == NULL) {
> 2c1838dc6817dd drivers/android/binder.c Todd Kjos 2017-06-29 3642 WARN_ON(thread->return_error.cmd !=
> 2c1838dc6817dd drivers/android/binder.c Todd Kjos 2017-06-29 3643 BR_OK);
> 2c1838dc6817dd drivers/android/binder.c Todd Kjos 2017-06-29 3644 thread->return_error.cmd = BR_ERROR;
> 148ade2c4d4f46 drivers/android/binder.c Martijn Coenen 2017-11-15 3645 binder_enqueue_thread_work(
> 148ade2c4d4f46 drivers/android/binder.c Martijn Coenen 2017-11-15 3646 thread,
> 148ade2c4d4f46 drivers/android/binder.c Martijn Coenen 2017-11-15 3647 &thread->return_error.work);
> 2c1838dc6817dd drivers/android/binder.c Todd Kjos 2017-06-29 3648 binder_debug(
> 2c1838dc6817dd drivers/android/binder.c Todd Kjos 2017-06-29 3649 BINDER_DEBUG_FAILED_TRANSACTION,
> 2c1838dc6817dd drivers/android/binder.c Todd Kjos 2017-06-29 3650 "%d:%d BC_REQUEST_DEATH_NOTIFICATION failed\n",
> 2c1838dc6817dd drivers/android/binder.c Todd Kjos 2017-06-29 3651 proc->pid, thread->pid);
> 2c1838dc6817dd drivers/android/binder.c Todd Kjos 2017-06-29 3652 break;
> 2c1838dc6817dd drivers/android/binder.c Todd Kjos 2017-06-29 3653 }
> 2c1838dc6817dd drivers/android/binder.c Todd Kjos 2017-06-29 3654 }
> 2c1838dc6817dd drivers/android/binder.c Todd Kjos 2017-06-29 3655 binder_proc_lock(proc);
> 2c1838dc6817dd drivers/android/binder.c Todd Kjos 2017-06-29 3656 ref = binder_get_ref_olocked(proc, target, false);
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3657 if (ref == NULL) {
> 56b468fc709b2b drivers/staging/android/binder.c Anmol Sarma 2012-10-30 3658 binder_user_error("%d:%d %s invalid ref %d\n",
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3659 proc->pid, thread->pid,
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3660 cmd == BC_REQUEST_DEATH_NOTIFICATION ?
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3661 "BC_REQUEST_DEATH_NOTIFICATION" :
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3662 "BC_CLEAR_DEATH_NOTIFICATION",
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3663 target);
> 2c1838dc6817dd drivers/android/binder.c Todd Kjos 2017-06-29 3664 binder_proc_unlock(proc);
> 2c1838dc6817dd drivers/android/binder.c Todd Kjos 2017-06-29 3665 kfree(death);
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3666 break;
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3667 }
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3668
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3669 binder_debug(BINDER_DEBUG_DEATH_NOTIFICATION,
> da49889deb34d3 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3670 "%d:%d %s %016llx ref %d desc %d s %d w %d for node %d\n",
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3671 proc->pid, thread->pid,
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3672 cmd == BC_REQUEST_DEATH_NOTIFICATION ?
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3673 "BC_REQUEST_DEATH_NOTIFICATION" :
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3674 "BC_CLEAR_DEATH_NOTIFICATION",
> 372e3147df7016 drivers/android/binder.c Todd Kjos 2017-06-29 3675 (u64)cookie, ref->data.debug_id,
> 372e3147df7016 drivers/android/binder.c Todd Kjos 2017-06-29 3676 ref->data.desc, ref->data.strong,
> 372e3147df7016 drivers/android/binder.c Todd Kjos 2017-06-29 3677 ref->data.weak, ref->node->debug_id);
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3678
> ab51ec6bdf0b7a drivers/android/binder.c Martijn Coenen 2017-06-29 3679 binder_node_lock(ref->node);
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3680 if (cmd == BC_REQUEST_DEATH_NOTIFICATION) {
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3681 if (ref->death) {
> 56b468fc709b2b drivers/staging/android/binder.c Anmol Sarma 2012-10-30 3682 binder_user_error("%d:%d BC_REQUEST_DEATH_NOTIFICATION death notification already set\n",
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3683 proc->pid, thread->pid);
> ab51ec6bdf0b7a drivers/android/binder.c Martijn Coenen 2017-06-29 3684 binder_node_unlock(ref->node);
> 2c1838dc6817dd drivers/android/binder.c Todd Kjos 2017-06-29 3685 binder_proc_unlock(proc);
> 2c1838dc6817dd drivers/android/binder.c Todd Kjos 2017-06-29 3686 kfree(death);
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3687 break;
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3688 }
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3689 binder_stats_created(BINDER_STAT_DEATH);
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3690 INIT_LIST_HEAD(&death->work.entry);
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3691 death->cookie = cookie;
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3692 ref->death = death;
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3693 if (ref->node->proc == NULL) {
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3694 ref->death->work.type = BINDER_WORK_DEAD_BINDER;
> bb74562a7f8398 drivers/android/binder.c Martijn Coenen 2017-08-31 3695
> 1b77e9dcc3da93 drivers/android/binder.c Martijn Coenen 2017-08-31 3696 binder_inner_proc_lock(proc);
> 1b77e9dcc3da93 drivers/android/binder.c Martijn Coenen 2017-08-31 3697 binder_enqueue_work_ilocked(
> bb74562a7f8398 drivers/android/binder.c Martijn Coenen 2017-08-31 3698 &ref->death->work, &proc->todo);
> bb74562a7f8398 drivers/android/binder.c Martijn Coenen 2017-08-31 3699 binder_wakeup_proc_ilocked(proc);
> 1b77e9dcc3da93 drivers/android/binder.c Martijn Coenen 2017-08-31 3700 binder_inner_proc_unlock(proc);
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3701 }
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3702 } else {
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3703 if (ref->death == NULL) {
> 56b468fc709b2b drivers/staging/android/binder.c Anmol Sarma 2012-10-30 3704 binder_user_error("%d:%d BC_CLEAR_DEATH_NOTIFICATION death notification not active\n",
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3705 proc->pid, thread->pid);
> 673068eee8560d drivers/android/binder.c Todd Kjos 2017-06-29 3706 binder_node_unlock(ref->node);
> 2c1838dc6817dd drivers/android/binder.c Todd Kjos 2017-06-29 3707 binder_proc_unlock(proc);
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3708 break;
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3709 }
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3710 death = ref->death;
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3711 if (death->cookie != cookie) {
> da49889deb34d3 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3712 binder_user_error("%d:%d BC_CLEAR_DEATH_NOTIFICATION death notification cookie mismatch %016llx != %016llx\n",
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3713 proc->pid, thread->pid,
> da49889deb34d3 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3714 (u64)death->cookie,
> da49889deb34d3 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3715 (u64)cookie);
> 673068eee8560d drivers/android/binder.c Todd Kjos 2017-06-29 3716 binder_node_unlock(ref->node);
> 2c1838dc6817dd drivers/android/binder.c Todd Kjos 2017-06-29 3717 binder_proc_unlock(proc);
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3718 break;
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3719 }
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3720 ref->death = NULL;
> 72196393a5e3d2 drivers/android/binder.c Todd Kjos 2017-06-29 3721 binder_inner_proc_lock(proc);
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3722 if (list_empty(&death->work.entry)) {
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3723 death->work.type = BINDER_WORK_CLEAR_DEATH_NOTIFICATION;
> 72196393a5e3d2 drivers/android/binder.c Todd Kjos 2017-06-29 3724 if (thread->looper &
> 72196393a5e3d2 drivers/android/binder.c Todd Kjos 2017-06-29 3725 (BINDER_LOOPER_STATE_REGISTERED |
> 72196393a5e3d2 drivers/android/binder.c Todd Kjos 2017-06-29 3726 BINDER_LOOPER_STATE_ENTERED))
> 148ade2c4d4f46 drivers/android/binder.c Martijn Coenen 2017-11-15 3727 binder_enqueue_thread_work_ilocked(
> 148ade2c4d4f46 drivers/android/binder.c Martijn Coenen 2017-11-15 3728 thread,
> 148ade2c4d4f46 drivers/android/binder.c Martijn Coenen 2017-11-15 3729 &death->work);
> 72196393a5e3d2 drivers/android/binder.c Todd Kjos 2017-06-29 3730 else {
> 72196393a5e3d2 drivers/android/binder.c Todd Kjos 2017-06-29 3731 binder_enqueue_work_ilocked(
> 72196393a5e3d2 drivers/android/binder.c Todd Kjos 2017-06-29 3732 &death->work,
> 72196393a5e3d2 drivers/android/binder.c Todd Kjos 2017-06-29 3733 &proc->todo);
> 1b77e9dcc3da93 drivers/android/binder.c Martijn Coenen 2017-08-31 3734 binder_wakeup_proc_ilocked(
> 408c68b17aea2f drivers/android/binder.c Martijn Coenen 2017-08-31 3735 proc);
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3736 }
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3737 } else {
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3738 BUG_ON(death->work.type != BINDER_WORK_DEAD_BINDER);
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3739 death->work.type = BINDER_WORK_DEAD_BINDER_AND_CLEAR;
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3740 }
> 72196393a5e3d2 drivers/android/binder.c Todd Kjos 2017-06-29 3741 binder_inner_proc_unlock(proc);
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3742 }
> ab51ec6bdf0b7a drivers/android/binder.c Martijn Coenen 2017-06-29 3743 binder_node_unlock(ref->node);
> 2c1838dc6817dd drivers/android/binder.c Todd Kjos 2017-06-29 3744 binder_proc_unlock(proc);
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3745 } break;
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3746 case BC_DEAD_BINDER_DONE: {
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3747 struct binder_work *w;
> da49889deb34d3 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3748 binder_uintptr_t cookie;
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3749 struct binder_ref_death *death = NULL;
> 10f62861b4a2f2 drivers/staging/android/binder.c Seunghun Lee 2014-05-01 3750
> da49889deb34d3 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3751 if (get_user(cookie, (binder_uintptr_t __user *)ptr))
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3752 return -EFAULT;
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3753
> 7a64cd887fdb97 drivers/android/binder.c Lisa Du 2016-02-17 3754 ptr += sizeof(cookie);
> 72196393a5e3d2 drivers/android/binder.c Todd Kjos 2017-06-29 3755 binder_inner_proc_lock(proc);
> 72196393a5e3d2 drivers/android/binder.c Todd Kjos 2017-06-29 3756 list_for_each_entry(w, &proc->delivered_death,
> 72196393a5e3d2 drivers/android/binder.c Todd Kjos 2017-06-29 3757 entry) {
> 72196393a5e3d2 drivers/android/binder.c Todd Kjos 2017-06-29 3758 struct binder_ref_death *tmp_death =
> 72196393a5e3d2 drivers/android/binder.c Todd Kjos 2017-06-29 3759 container_of(w,
> 72196393a5e3d2 drivers/android/binder.c Todd Kjos 2017-06-29 3760 struct binder_ref_death,
> 72196393a5e3d2 drivers/android/binder.c Todd Kjos 2017-06-29 3761 work);
> 10f62861b4a2f2 drivers/staging/android/binder.c Seunghun Lee 2014-05-01 3762
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3763 if (tmp_death->cookie == cookie) {
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3764 death = tmp_death;
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3765 break;
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3766 }
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3767 }
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3768 binder_debug(BINDER_DEBUG_DEAD_BINDER,
> 8ca86f1639ec58 drivers/android/binder.c Todd Kjos 2018-02-07 3769 "%d:%d BC_DEAD_BINDER_DONE %016llx found %pK\n",
> da49889deb34d3 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3770 proc->pid, thread->pid, (u64)cookie,
> da49889deb34d3 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3771 death);
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3772 if (death == NULL) {
> da49889deb34d3 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3773 binder_user_error("%d:%d BC_DEAD_BINDER_DONE %016llx not found\n",
> da49889deb34d3 drivers/staging/android/binder.c Arve Hjønnevåg 2014-02-21 3774 proc->pid, thread->pid, (u64)cookie);
> 72196393a5e3d2 drivers/android/binder.c Todd Kjos 2017-06-29 3775 binder_inner_proc_unlock(proc);
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3776 break;
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3777 }
> 72196393a5e3d2 drivers/android/binder.c Todd Kjos 2017-06-29 3778 binder_dequeue_work_ilocked(&death->work);
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3779 if (death->work.type == BINDER_WORK_DEAD_BINDER_AND_CLEAR) {
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3780 death->work.type = BINDER_WORK_CLEAR_DEATH_NOTIFICATION;
> 72196393a5e3d2 drivers/android/binder.c Todd Kjos 2017-06-29 3781 if (thread->looper &
> 72196393a5e3d2 drivers/android/binder.c Todd Kjos 2017-06-29 3782 (BINDER_LOOPER_STATE_REGISTERED |
> 72196393a5e3d2 drivers/android/binder.c Todd Kjos 2017-06-29 3783 BINDER_LOOPER_STATE_ENTERED))
> 148ade2c4d4f46 drivers/android/binder.c Martijn Coenen 2017-11-15 3784 binder_enqueue_thread_work_ilocked(
> 148ade2c4d4f46 drivers/android/binder.c Martijn Coenen 2017-11-15 3785 thread, &death->work);
> 72196393a5e3d2 drivers/android/binder.c Todd Kjos 2017-06-29 3786 else {
> 72196393a5e3d2 drivers/android/binder.c Todd Kjos 2017-06-29 3787 binder_enqueue_work_ilocked(
> 72196393a5e3d2 drivers/android/binder.c Todd Kjos 2017-06-29 3788 &death->work,
> 72196393a5e3d2 drivers/android/binder.c Todd Kjos 2017-06-29 3789 &proc->todo);
> 408c68b17aea2f drivers/android/binder.c Martijn Coenen 2017-08-31 3790 binder_wakeup_proc_ilocked(proc);
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3791 }
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3792 }
> 72196393a5e3d2 drivers/android/binder.c Todd Kjos 2017-06-29 3793 binder_inner_proc_unlock(proc);
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3794 } break;
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3795
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3796 default:
> 56b468fc709b2b drivers/staging/android/binder.c Anmol Sarma 2012-10-30 3797 pr_err("%d:%d unknown command %d\n",
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3798 proc->pid, thread->pid, cmd);
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3799 return -EINVAL;
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3800 }
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3801 *consumed = ptr - buffer;
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3802 }
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3803 return 0;
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3804 }
> 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011-11-30 3805
>
> :::::: The code at line 3633 was first introduced by commit
> :::::: 355b0502f6efea0ff9492753888772c96972d2a3 Revert "Staging: android: delete android drivers"
>
> :::::: TO: Greg Kroah-Hartman <gregkh@suse.de>
> :::::: CC: Greg Kroah-Hartman <gregkh@suse.de>
>
> ---
> 0-DAY CI Kernel Test Service, Intel Corporation
> https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
> _______________________________________________
> kbuild-all mailing list -- kbuild-all(a)lists.01.org
> To unsubscribe send an email to kbuild-all-leave(a)lists.01.org
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2021-07-01 23:26 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-07-01 14:49 [linux-stable-rc:linux-4.19.y 405/611] drivers/android/binder.c:3633: Error: unrecognized keyword/register name `l.lwz ?ap, 4(r21)' kernel test robot
2021-07-01 23:26 ` Stafford Horne
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.