From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: multipart/mixed; boundary="===============8853662601122656266==" MIME-Version: 1.0 From: kernel test robot To: kbuild-all@lists.01.org Subject: [linux-stable-rc:linux-4.19.y 405/611] drivers/android/binder.c:3633: Error: unrecognized keyword/register name `l.lwz ?ap, 4(r21)' Date: Thu, 01 Jul 2021 22:49:07 +0800 Message-ID: <202107012249.7xHMpc5s-lkp@intel.com> List-Id: --===============8853662601122656266== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=3D1 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-stab= le-rc.git/commit/?id=3D74e42c22f2125bb07ffd9b0cccef120815e68725 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=3D$HOME/0day COMPILER=3Dgcc-9.3.0 make.cross = O=3Dbuild_dir ARCH=3Dopenrisc SHELL=3D/bin/bash drivers/android/ If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot 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=C3=B8nnev=C3=A5g = 2014-02-21 3334 binder_uintptr_t binder_buffer, size_t size, da49889deb34d3 drivers/staging/android/binder.c Arve Hj=C3=B8nnev=C3=A5g = 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 =3D proc->context; da49889deb34d3 drivers/staging/android/binder.c Arve Hj=C3=B8nnev=C3=A5g = 2014-02-21 3339 void __user *buffer =3D (void __user *)(uintptr_t)= binder_buffer; 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011= -11-30 3340 void __user *ptr =3D buffer + *consumed; 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011= -11-30 3341 void __user *end =3D 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 =3D=3D 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 +=3D sizeof(uint32_t); 975a1ac9a9fe65 drivers/staging/android/binder.c Arve Hj=C3=B8nnev=C3=A5g = 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 =3D cmd =3D=3D BC_ACQUIRE || cmd =3D=3D BC_REL= EASE; 372e3147df7016 drivers/android/binder.c Todd Kjos 2017= -06-29 3363 bool increment =3D cmd =3D=3D BC_INCREFS || cmd =3D=3D 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 +=3D sizeof(uint32_t); 372e3147df7016 drivers/android/binder.c Todd Kjos 2017= -06-29 3370 ret =3D -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 =3D 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 =3D=3D proc) { 74e42c22f2125b drivers/android/binder.c Jann Horn 2020= -07-27 3377 binder_user_error("%d:%d context manager tried to acqui= re 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 =3D 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 =3D 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 !=3D target) { 372e3147df7016 drivers/android/binder.c Todd Kjos 2017= -06-29 3393 binder_user_error("%d:%d tried to acquire reference to de= sc %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 =3D "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 =3D "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 =3D "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 =3D "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=C3=B8nnev=C3=A5g = 2014-02-21 3427 binder_uintptr_t node_ptr; da49889deb34d3 drivers/staging/android/binder.c Arve Hj=C3=B8nnev=C3=A5g = 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=C3=B8nnev=C3=A5g = 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=C3=B8nnev=C3=A5g = 2014-02-21 3434 ptr +=3D sizeof(binder_uintptr_t); da49889deb34d3 drivers/staging/android/binder.c Arve Hj=C3=B8nnev=C3=A5g = 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=C3=B8nnev=C3=A5g = 2014-02-21 3437 ptr +=3D sizeof(binder_uintptr_t); 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011= -11-30 3438 node =3D binder_get_node(proc, node_ptr); 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011= -11-30 3439 if (node =3D=3D NULL) { da49889deb34d3 drivers/staging/android/binder.c Arve Hj=C3=B8nnev=C3=A5g = 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 =3D=3D 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=C3=B8nnev=C3=A5g = 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 !=3D node->cookie) { da49889deb34d3 drivers/staging/android/binder.c Arve Hj=C3=B8nnev=C3=A5g = 2014-02-21 3449 binder_user_error("%d:%d %s u%016llx node %d co= okie mismatch %016llx !=3D %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 =3D=3D 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=C3=B8nnev=C3=A5g = 2014-02-21 3453 (u64)node_ptr, node->debug_id, da49889deb34d3 drivers/staging/android/binder.c Arve Hj=C3=B8nnev=C3=A5g = 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 =3D=3D BC_ACQUIRE_DONE) { 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011= -11-30 3460 if (node->pending_strong_ref =3D=3D 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 =3D 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 =3D=3D 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 =3D 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 =3D binder_dec_node_nilocked(node, 673068eee8560d drivers/android/binder.c Todd Kjos 2017= -06-29 3481 cmd =3D=3D 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 =3D=3D 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=C3=B8nnev=C3=A5g = 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=C3=B8nnev=C3=A5g = 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=C3=B8nnev=C3=A5g = 2014-02-21 3506 ptr +=3D 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 =3D 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) =3D=3D -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 cu= rrently 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=C3=B8nnev=C3=A5g = 2014-02-21 3525 "%d:%d BC_FREE_BUFFER u%016llx found buffe= r %d for %s transaction\n", da49889deb34d3 drivers/staging/android/binder.c Arve Hj=C3=B8nnev=C3=A5g = 2014-02-21 3526 proc->pid, thread->pid, (u64)data_ptr, da49889deb34d3 drivers/staging/android/binder.c Arve Hj=C3=B8nnev=C3=A5g = 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 =3D NULL; 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011= -11-30 3533 buffer->transaction =3D 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 =3D 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 !=3D proc); 72196393a5e3d2 drivers/android/binder.c Todd Kjos 2017= -06-29 3544 w =3D 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 =3D 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=C3=B8nnev=C3=A5g = 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 +=3D 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 =3D=3D 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 +=3D 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 =3D=3D 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 |=3D 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 =3D=3D 0) { 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011= -11-30 3594 thread->looper |=3D 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 |=3D 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 |=3D 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 af= ter 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 |=3D 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 |=3D 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=C3=B8nnev=C3=A5g = 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 =3D 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 +=3D sizeof(uint32_t); da49889deb34d3 drivers/staging/android/binder.c Arve Hj=C3=B8nnev=C3=A5g = 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=C3=B8nnev=C3=A5g = 2014-02-21 3634 ptr +=3D sizeof(binder_uintptr_t); 2c1838dc6817dd drivers/android/binder.c Todd Kjos 2017= -06-29 3635 if (cmd =3D=3D 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 =3D kzalloc(sizeof(*death), GFP_KERNEL); 2c1838dc6817dd drivers/android/binder.c Todd Kjos 2017= -06-29 3641 if (death =3D=3D NULL) { 2c1838dc6817dd drivers/android/binder.c Todd Kjos 2017= -06-29 3642 WARN_ON(thread->return_error.cmd !=3D 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 =3D 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 =3D binder_get_ref_olocked(proc, target, false); 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011= -11-30 3657 if (ref =3D=3D 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 =3D=3D 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=C3=B8nnev=C3=A5g = 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 =3D=3D 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 =3D=3D 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 d= eath 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 =3D cookie; 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011= -11-30 3692 ref->death =3D death; 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011= -11-30 3693 if (ref->node->proc =3D=3D NULL) { 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011= -11-30 3694 ref->death->work.type =3D 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 =3D=3D NULL) { 56b468fc709b2b drivers/staging/android/binder.c Anmol Sarma 2012= -10-30 3704 binder_user_error("%d:%d BC_CLEAR_DEATH_NOTIFICATION dea= th 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 =3D ref->death; 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011= -11-30 3711 if (death->cookie !=3D cookie) { da49889deb34d3 drivers/staging/android/binder.c Arve Hj=C3=B8nnev=C3=A5g = 2014-02-21 3712 binder_user_error("%d:%d BC_CLEAR_DEATH_NOTIFI= CATION death notification cookie mismatch %016llx !=3D %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=C3=B8nnev=C3=A5g = 2014-02-21 3714 (u64)death->cookie, da49889deb34d3 drivers/staging/android/binder.c Arve Hj=C3=B8nnev=C3=A5g = 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 =3D 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 =3D BINDER_WORK_CLEAR_DEATH_NOTIFICATIO= N; 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 !=3D BINDER_WORK_DEAD_BINDER); 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011= -11-30 3739 death->work.type =3D 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=C3=B8nnev=C3=A5g = 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 =3D NULL; 10f62861b4a2f2 drivers/staging/android/binder.c Seunghun Lee 2014= -05-01 3750 = da49889deb34d3 drivers/staging/android/binder.c Arve Hj=C3=B8nnev=C3=A5g = 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 +=3D 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 =3D 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 =3D=3D cookie) { 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011= -11-30 3764 death =3D 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=C3=B8nnev=C3=A5g = 2014-02-21 3770 proc->pid, thread->pid, (u64)cookie, da49889deb34d3 drivers/staging/android/binder.c Arve Hj=C3=B8nnev=C3=A5g = 2014-02-21 3771 death); 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011= -11-30 3772 if (death =3D=3D NULL) { da49889deb34d3 drivers/staging/android/binder.c Arve Hj=C3=B8nnev=C3=A5g = 2014-02-21 3773 binder_user_error("%d:%d BC_DEAD_BINDER_DONE %0= 16llx not found\n", da49889deb34d3 drivers/staging/android/binder.c Arve Hj=C3=B8nnev=C3=A5g = 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 =3D=3D BINDER_WORK_DEAD_BINDER_AND_CL= EAR) { 355b0502f6efea drivers/staging/android/binder.c Greg Kroah-Hartman 2011= -11-30 3780 death->work.type =3D 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 =3D 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: d= elete android drivers" :::::: TO: Greg Kroah-Hartman :::::: CC: Greg Kroah-Hartman --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org --===============8853662601122656266== Content-Type: application/gzip MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="config.gz" 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 --===============8853662601122656266==--