All of lore.kernel.org
 help / color / mirror / Atom feed
* [linux-stable-rc:linux-5.4.y 665/2391] drivers/android/binder.c:3776: Error: unrecognized keyword/register name `l.lwz
@ 2020-10-15 21:28 kernel test robot
  2020-10-15 21:46   ` Jann Horn
  0 siblings, 1 reply; 11+ messages in thread
From: kernel test robot @ 2020-10-15 21:28 UTC (permalink / raw)
  To: kbuild-all

[-- Attachment #1: Type: text/plain, Size: 56008 bytes --]

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-5.4.y
head:   85b0841aab15c12948af951d477183ab3df7de14
commit: c5665cafbedd2e2a523fe933e452391a02d3adb3 [665/2391] binder: Prevent context manager from incrementing ref 0
config: openrisc-randconfig-r002-20201014 (attached as .config)
compiler: or1k-linux-gcc (GCC) 9.3.0
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git/commit/?id=c5665cafbedd2e2a523fe933e452391a02d3adb3
        git remote add linux-stable-rc https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git
        git fetch --no-tags linux-stable-rc linux-5.4.y
        git checkout c5665cafbedd2e2a523fe933e452391a02d3adb3
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=openrisc 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All errors (new ones prefixed by >>):

   drivers/android/binder.c: Assembler messages:
>> drivers/android/binder.c:3776: Error: unrecognized keyword/register name `l.lwz ?ap,4(r25)'
   drivers/android/binder.c:3781: Error: unrecognized keyword/register name `l.addi ?ap,r0,0'

vim +3776 drivers/android/binder.c

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

:::::: The code at line 3776 was first introduced by commit
:::::: 355b0502f6efea0ff9492753888772c96972d2a3 Revert "Staging: android: delete android drivers"

:::::: TO: Greg Kroah-Hartman <gregkh@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: 24838 bytes --]

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [linux-stable-rc:linux-5.4.y 665/2391] drivers/android/binder.c:3776: Error: unrecognized keyword/register name `l.lwz
  2020-10-15 21:28 [linux-stable-rc:linux-5.4.y 665/2391] drivers/android/binder.c:3776: Error: unrecognized keyword/register name `l.lwz kernel test robot
@ 2020-10-15 21:46   ` Jann Horn
  0 siblings, 0 replies; 11+ messages in thread
From: Jann Horn @ 2020-10-15 21:46 UTC (permalink / raw)
  To: kbuild-all

[-- Attachment #1: Type: text/plain, Size: 3431 bytes --]

+openrisc folks

On Thu, Oct 15, 2020 at 11:28 PM kernel test robot <lkp@intel.com> wrote:
> tree:   https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-5.4.y
> head:   85b0841aab15c12948af951d477183ab3df7de14
> commit: c5665cafbedd2e2a523fe933e452391a02d3adb3 [665/2391] binder: Prevent context manager from incrementing ref 0
> config: openrisc-randconfig-r002-20201014 (attached as .config)
> compiler: or1k-linux-gcc (GCC) 9.3.0
> reproduce (this is a W=1 build):
>         wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
>         chmod +x ~/bin/make.cross
>         # https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git/commit/?id=c5665cafbedd2e2a523fe933e452391a02d3adb3
>         git remote add linux-stable-rc https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git
>         git fetch --no-tags linux-stable-rc linux-5.4.y
>         git checkout c5665cafbedd2e2a523fe933e452391a02d3adb3
>         # save the attached .config to linux build tree
>         COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=openrisc
>
> If you fix the issue, kindly add following tag as appropriate
> Reported-by: kernel test robot <lkp@intel.com>
>
> All errors (new ones prefixed by >>):
>
>    drivers/android/binder.c: Assembler messages:
> >> drivers/android/binder.c:3776: Error: unrecognized keyword/register name `l.lwz ?ap,4(r25)'
>    drivers/android/binder.c:3781: Error: unrecognized keyword/register name `l.addi ?ap,r0,0'

binder is basically doing this:

u64 data_ptr;
if (get_user(data_ptr, (u64 __user *)ptr))
  return -EFAULT;

and GCC complains that that doesn't turn into valid assembly on
openrisc, where get_user() of size 8 expands into this:

#define __get_user_asm2(x, addr, err)                   \
{                                                       \
        unsigned long long __gu_tmp;                    \
        __asm__ __volatile__(                           \
                "1:     l.lwz %1,0(%2)\n"               \
                "2:     l.lwz %H1,4(%2)\n"              \
                "3:\n"                                  \
                ".section .fixup,\"ax\"\n"              \
                "4:     l.addi %0,r0,%3\n"              \
                "       l.addi %1,r0,0\n"               \
                "       l.addi %H1,r0,0\n"              \
                "       l.j 3b\n"                       \
                "       l.nop\n"                        \
                ".previous\n"                           \
                ".section __ex_table,\"a\"\n"           \
                "       .align 2\n"                     \
                "       .long 1b,4b\n"                  \
                "       .long 2b,4b\n"                  \
                ".previous"                             \
                : "=r"(err), "=&r"(__gu_tmp)            \
                : "r"(addr), "i"(-EFAULT), "0"(err));   \
        (x) = (__typeof__(*(addr)))(                    \
                (__typeof__((x)-(x)))__gu_tmp);         \
}

and apparently the "l.lwz %H1,4(%2)" and "l.addi %H1,r0,0" don't turn
into valid assembly when %H1 expands to "?ap"?

I don't know anything about OpenRISC, but this seems like it's
probably an issue in the get_user() implementation.

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [linux-stable-rc:linux-5.4.y 665/2391] drivers/android/binder.c:3776: Error: unrecognized keyword/register name `l.lwz
@ 2020-10-15 21:46   ` Jann Horn
  0 siblings, 0 replies; 11+ messages in thread
From: Jann Horn @ 2020-10-15 21:46 UTC (permalink / raw)
  To: Jonas Bonn, Stefan Kristiansson, Stafford Horne, openrisc
  Cc: kbuild-all, Greg Kroah-Hartman, Martijn Coenen, kernel test robot,
	kernel list

+openrisc folks

On Thu, Oct 15, 2020 at 11:28 PM kernel test robot <lkp@intel.com> wrote:
> tree:   https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-5.4.y
> head:   85b0841aab15c12948af951d477183ab3df7de14
> commit: c5665cafbedd2e2a523fe933e452391a02d3adb3 [665/2391] binder: Prevent context manager from incrementing ref 0
> config: openrisc-randconfig-r002-20201014 (attached as .config)
> compiler: or1k-linux-gcc (GCC) 9.3.0
> reproduce (this is a W=1 build):
>         wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
>         chmod +x ~/bin/make.cross
>         # https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git/commit/?id=c5665cafbedd2e2a523fe933e452391a02d3adb3
>         git remote add linux-stable-rc https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git
>         git fetch --no-tags linux-stable-rc linux-5.4.y
>         git checkout c5665cafbedd2e2a523fe933e452391a02d3adb3
>         # save the attached .config to linux build tree
>         COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=openrisc
>
> If you fix the issue, kindly add following tag as appropriate
> Reported-by: kernel test robot <lkp@intel.com>
>
> All errors (new ones prefixed by >>):
>
>    drivers/android/binder.c: Assembler messages:
> >> drivers/android/binder.c:3776: Error: unrecognized keyword/register name `l.lwz ?ap,4(r25)'
>    drivers/android/binder.c:3781: Error: unrecognized keyword/register name `l.addi ?ap,r0,0'

binder is basically doing this:

u64 data_ptr;
if (get_user(data_ptr, (u64 __user *)ptr))
  return -EFAULT;

and GCC complains that that doesn't turn into valid assembly on
openrisc, where get_user() of size 8 expands into this:

#define __get_user_asm2(x, addr, err)                   \
{                                                       \
        unsigned long long __gu_tmp;                    \
        __asm__ __volatile__(                           \
                "1:     l.lwz %1,0(%2)\n"               \
                "2:     l.lwz %H1,4(%2)\n"              \
                "3:\n"                                  \
                ".section .fixup,\"ax\"\n"              \
                "4:     l.addi %0,r0,%3\n"              \
                "       l.addi %1,r0,0\n"               \
                "       l.addi %H1,r0,0\n"              \
                "       l.j 3b\n"                       \
                "       l.nop\n"                        \
                ".previous\n"                           \
                ".section __ex_table,\"a\"\n"           \
                "       .align 2\n"                     \
                "       .long 1b,4b\n"                  \
                "       .long 2b,4b\n"                  \
                ".previous"                             \
                : "=r"(err), "=&r"(__gu_tmp)            \
                : "r"(addr), "i"(-EFAULT), "0"(err));   \
        (x) = (__typeof__(*(addr)))(                    \
                (__typeof__((x)-(x)))__gu_tmp);         \
}

and apparently the "l.lwz %H1,4(%2)" and "l.addi %H1,r0,0" don't turn
into valid assembly when %H1 expands to "?ap"?

I don't know anything about OpenRISC, but this seems like it's
probably an issue in the get_user() implementation.

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [linux-stable-rc:linux-5.4.y 665/2391] drivers/android/binder.c:3776: Error: unrecognized keyword/register name `l.lwz
  2020-10-15 21:46   ` Jann Horn
@ 2020-10-15 23:05     ` Stafford Horne
  -1 siblings, 0 replies; 11+ messages in thread
From: Stafford Horne @ 2020-10-15 23:05 UTC (permalink / raw)
  To: kbuild-all

[-- Attachment #1: Type: text/plain, Size: 3881 bytes --]

On Fri, Oct 16, 2020, 6:46 AM Jann Horn <jannh@google.com> wrote:

> +openrisc folks
>
> On Thu, Oct 15, 2020 at 11:28 PM kernel test robot <lkp@intel.com> wrote:
> > tree:
> https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git
> linux-5.4.y
> > head:   85b0841aab15c12948af951d477183ab3df7de14
> > commit: c5665cafbedd2e2a523fe933e452391a02d3adb3 [665/2391] binder:
> Prevent context manager from incrementing ref 0
> > config: openrisc-randconfig-r002-20201014 (attached as .config)
> > compiler: or1k-linux-gcc (GCC) 9.3.0
> > reproduce (this is a W=1 build):
> >         wget
> https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross
> -O ~/bin/make.cross
> >         chmod +x ~/bin/make.cross
> >         #
> https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git/commit/?id=c5665cafbedd2e2a523fe933e452391a02d3adb3
> >         git remote add linux-stable-rc
> https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git
> >         git fetch --no-tags linux-stable-rc linux-5.4.y
> >         git checkout c5665cafbedd2e2a523fe933e452391a02d3adb3
> >         # save the attached .config to linux build tree
> >         COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross
> ARCH=openrisc
> >
> > If you fix the issue, kindly add following tag as appropriate
> > Reported-by: kernel test robot <lkp@intel.com>
> >
> > All errors (new ones prefixed by >>):
> >
> >    drivers/android/binder.c: Assembler messages:
> > >> drivers/android/binder.c:3776: Error: unrecognized keyword/register
> name `l.lwz ?ap,4(r25)'
> >    drivers/android/binder.c:3781: Error: unrecognized keyword/register
> name `l.addi ?ap,r0,0'
>
> binder is basically doing this:
>
> u64 data_ptr;
> if (get_user(data_ptr, (u64 __user *)ptr))
>   return -EFAULT;
>
> and GCC complains that that doesn't turn into valid assembly on
> openrisc, where get_user() of size 8 expands into this:
>
> #define __get_user_asm2(x, addr, err)                   \
> {                                                       \
>         unsigned long long __gu_tmp;                    \
>         __asm__ __volatile__(                           \
>                 "1:     l.lwz %1,0(%2)\n"               \
>                 "2:     l.lwz %H1,4(%2)\n"              \
>                 "3:\n"                                  \
>                 ".section .fixup,\"ax\"\n"              \
>                 "4:     l.addi %0,r0,%3\n"              \
>                 "       l.addi %1,r0,0\n"               \
>                 "       l.addi %H1,r0,0\n"              \
>                 "       l.j 3b\n"                       \
>                 "       l.nop\n"                        \
>                 ".previous\n"                           \
>                 ".section __ex_table,\"a\"\n"           \
>                 "       .align 2\n"                     \
>                 "       .long 1b,4b\n"                  \
>                 "       .long 2b,4b\n"                  \
>                 ".previous"                             \
>                 : "=r"(err), "=&r"(__gu_tmp)            \
>                 : "r"(addr), "i"(-EFAULT), "0"(err));   \
>         (x) = (__typeof__(*(addr)))(                    \
>                 (__typeof__((x)-(x)))__gu_tmp);         \
> }
>
> and apparently the "l.lwz %H1,4(%2)" and "l.addi %H1,r0,0" don't turn
> into valid assembly when %H1 expands to "?ap"?
>
> I don't know anything about OpenRISC, but this seems like it's
> probably an issue in the get_user() implementation.
>

This is fixed in 5.9.  I think the patch can be cherry picked by itself.

https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/arch/openrisc?h=v5.9&id=d877322bc1adcab9850732275670409e8bcca4c4

>

[-- Attachment #2: attachment.htm --]
[-- Type: text/html, Size: 6177 bytes --]

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [OpenRISC] [linux-stable-rc:linux-5.4.y 665/2391] drivers/android/binder.c:3776: Error: unrecognized keyword/register name `l.lwz
@ 2020-10-15 23:05     ` Stafford Horne
  0 siblings, 0 replies; 11+ messages in thread
From: Stafford Horne @ 2020-10-15 23:05 UTC (permalink / raw)
  To: openrisc

On Fri, Oct 16, 2020, 6:46 AM Jann Horn <jannh@google.com> wrote:

> +openrisc folks
>
> On Thu, Oct 15, 2020 at 11:28 PM kernel test robot <lkp@intel.com> wrote:
> > tree:
> https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git
> linux-5.4.y
> > head:   85b0841aab15c12948af951d477183ab3df7de14
> > commit: c5665cafbedd2e2a523fe933e452391a02d3adb3 [665/2391] binder:
> Prevent context manager from incrementing ref 0
> > config: openrisc-randconfig-r002-20201014 (attached as .config)
> > compiler: or1k-linux-gcc (GCC) 9.3.0
> > reproduce (this is a W=1 build):
> >         wget
> https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross
> -O ~/bin/make.cross
> >         chmod +x ~/bin/make.cross
> >         #
> https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git/commit/?id=c5665cafbedd2e2a523fe933e452391a02d3adb3
> >         git remote add linux-stable-rc
> https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git
> >         git fetch --no-tags linux-stable-rc linux-5.4.y
> >         git checkout c5665cafbedd2e2a523fe933e452391a02d3adb3
> >         # save the attached .config to linux build tree
> >         COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross
> ARCH=openrisc
> >
> > If you fix the issue, kindly add following tag as appropriate
> > Reported-by: kernel test robot <lkp@intel.com>
> >
> > All errors (new ones prefixed by >>):
> >
> >    drivers/android/binder.c: Assembler messages:
> > >> drivers/android/binder.c:3776: Error: unrecognized keyword/register
> name `l.lwz ?ap,4(r25)'
> >    drivers/android/binder.c:3781: Error: unrecognized keyword/register
> name `l.addi ?ap,r0,0'
>
> binder is basically doing this:
>
> u64 data_ptr;
> if (get_user(data_ptr, (u64 __user *)ptr))
>   return -EFAULT;
>
> and GCC complains that that doesn't turn into valid assembly on
> openrisc, where get_user() of size 8 expands into this:
>
> #define __get_user_asm2(x, addr, err)                   \
> {                                                       \
>         unsigned long long __gu_tmp;                    \
>         __asm__ __volatile__(                           \
>                 "1:     l.lwz %1,0(%2)\n"               \
>                 "2:     l.lwz %H1,4(%2)\n"              \
>                 "3:\n"                                  \
>                 ".section .fixup,\"ax\"\n"              \
>                 "4:     l.addi %0,r0,%3\n"              \
>                 "       l.addi %1,r0,0\n"               \
>                 "       l.addi %H1,r0,0\n"              \
>                 "       l.j 3b\n"                       \
>                 "       l.nop\n"                        \
>                 ".previous\n"                           \
>                 ".section __ex_table,\"a\"\n"           \
>                 "       .align 2\n"                     \
>                 "       .long 1b,4b\n"                  \
>                 "       .long 2b,4b\n"                  \
>                 ".previous"                             \
>                 : "=r"(err), "=&r"(__gu_tmp)            \
>                 : "r"(addr), "i"(-EFAULT), "0"(err));   \
>         (x) = (__typeof__(*(addr)))(                    \
>                 (__typeof__((x)-(x)))__gu_tmp);         \
> }
>
> and apparently the "l.lwz %H1,4(%2)" and "l.addi %H1,r0,0" don't turn
> into valid assembly when %H1 expands to "?ap"?
>
> I don't know anything about OpenRISC, but this seems like it's
> probably an issue in the get_user() implementation.
>

This is fixed in 5.9.  I think the patch can be cherry picked by itself.

https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/arch/openrisc?h=v5.9&id=d877322bc1adcab9850732275670409e8bcca4c4

>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.librecores.org/pipermail/openrisc/attachments/20201016/37c41a87/attachment.htm>

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [linux-stable-rc:linux-5.4.y 665/2391] drivers/android/binder.c:3776: Error: unrecognized keyword/register name `l.lwz
  2020-10-15 23:05     ` [OpenRISC] " Stafford Horne
  (?)
@ 2020-10-16  9:06       ` Greg Kroah-Hartman
  -1 siblings, 0 replies; 11+ messages in thread
From: Greg Kroah-Hartman @ 2020-10-16  9:06 UTC (permalink / raw)
  To: kbuild-all

[-- Attachment #1: Type: text/plain, Size: 4255 bytes --]

On Fri, Oct 16, 2020 at 08:05:17AM +0900, Stafford Horne wrote:
> On Fri, Oct 16, 2020, 6:46 AM Jann Horn <jannh@google.com> wrote:
> 
> > +openrisc folks
> >
> > On Thu, Oct 15, 2020 at 11:28 PM kernel test robot <lkp@intel.com> wrote:
> > > tree:
> > https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git
> > linux-5.4.y
> > > head:   85b0841aab15c12948af951d477183ab3df7de14
> > > commit: c5665cafbedd2e2a523fe933e452391a02d3adb3 [665/2391] binder:
> > Prevent context manager from incrementing ref 0
> > > config: openrisc-randconfig-r002-20201014 (attached as .config)
> > > compiler: or1k-linux-gcc (GCC) 9.3.0
> > > reproduce (this is a W=1 build):
> > >         wget
> > https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross
> > -O ~/bin/make.cross
> > >         chmod +x ~/bin/make.cross
> > >         #
> > https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git/commit/?id=c5665cafbedd2e2a523fe933e452391a02d3adb3
> > >         git remote add linux-stable-rc
> > https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git
> > >         git fetch --no-tags linux-stable-rc linux-5.4.y
> > >         git checkout c5665cafbedd2e2a523fe933e452391a02d3adb3
> > >         # save the attached .config to linux build tree
> > >         COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross
> > ARCH=openrisc
> > >
> > > If you fix the issue, kindly add following tag as appropriate
> > > Reported-by: kernel test robot <lkp@intel.com>
> > >
> > > All errors (new ones prefixed by >>):
> > >
> > >    drivers/android/binder.c: Assembler messages:
> > > >> drivers/android/binder.c:3776: Error: unrecognized keyword/register
> > name `l.lwz ?ap,4(r25)'
> > >    drivers/android/binder.c:3781: Error: unrecognized keyword/register
> > name `l.addi ?ap,r0,0'
> >
> > binder is basically doing this:
> >
> > u64 data_ptr;
> > if (get_user(data_ptr, (u64 __user *)ptr))
> >   return -EFAULT;
> >
> > and GCC complains that that doesn't turn into valid assembly on
> > openrisc, where get_user() of size 8 expands into this:
> >
> > #define __get_user_asm2(x, addr, err)                   \
> > {                                                       \
> >         unsigned long long __gu_tmp;                    \
> >         __asm__ __volatile__(                           \
> >                 "1:     l.lwz %1,0(%2)\n"               \
> >                 "2:     l.lwz %H1,4(%2)\n"              \
> >                 "3:\n"                                  \
> >                 ".section .fixup,\"ax\"\n"              \
> >                 "4:     l.addi %0,r0,%3\n"              \
> >                 "       l.addi %1,r0,0\n"               \
> >                 "       l.addi %H1,r0,0\n"              \
> >                 "       l.j 3b\n"                       \
> >                 "       l.nop\n"                        \
> >                 ".previous\n"                           \
> >                 ".section __ex_table,\"a\"\n"           \
> >                 "       .align 2\n"                     \
> >                 "       .long 1b,4b\n"                  \
> >                 "       .long 2b,4b\n"                  \
> >                 ".previous"                             \
> >                 : "=r"(err), "=&r"(__gu_tmp)            \
> >                 : "r"(addr), "i"(-EFAULT), "0"(err));   \
> >         (x) = (__typeof__(*(addr)))(                    \
> >                 (__typeof__((x)-(x)))__gu_tmp);         \
> > }
> >
> > and apparently the "l.lwz %H1,4(%2)" and "l.addi %H1,r0,0" don't turn
> > into valid assembly when %H1 expands to "?ap"?
> >
> > I don't know anything about OpenRISC, but this seems like it's
> > probably an issue in the get_user() implementation.
> >
> 
> This is fixed in 5.9.  I think the patch can be cherry picked by itself.
> 
> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/arch/openrisc?h=v5.9&id=d877322bc1adcab9850732275670409e8bcca4c4

Does not apply cleanly to 5.8.y or 5.4.y, can someone please properly
backport it and send it to stable(a)vger.kernel.org?

thanks,

greg k-h

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [OpenRISC] [linux-stable-rc:linux-5.4.y 665/2391] drivers/android/binder.c:3776: Error: unrecognized keyword/register name `l.lwz
@ 2020-10-16  9:06       ` Greg Kroah-Hartman
  0 siblings, 0 replies; 11+ messages in thread
From: Greg Kroah-Hartman @ 2020-10-16  9:06 UTC (permalink / raw)
  To: openrisc

On Fri, Oct 16, 2020 at 08:05:17AM +0900, Stafford Horne wrote:
> On Fri, Oct 16, 2020, 6:46 AM Jann Horn <jannh@google.com> wrote:
> 
> > +openrisc folks
> >
> > On Thu, Oct 15, 2020 at 11:28 PM kernel test robot <lkp@intel.com> wrote:
> > > tree:
> > https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git
> > linux-5.4.y
> > > head:   85b0841aab15c12948af951d477183ab3df7de14
> > > commit: c5665cafbedd2e2a523fe933e452391a02d3adb3 [665/2391] binder:
> > Prevent context manager from incrementing ref 0
> > > config: openrisc-randconfig-r002-20201014 (attached as .config)
> > > compiler: or1k-linux-gcc (GCC) 9.3.0
> > > reproduce (this is a W=1 build):
> > >         wget
> > https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross
> > -O ~/bin/make.cross
> > >         chmod +x ~/bin/make.cross
> > >         #
> > https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git/commit/?id=c5665cafbedd2e2a523fe933e452391a02d3adb3
> > >         git remote add linux-stable-rc
> > https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git
> > >         git fetch --no-tags linux-stable-rc linux-5.4.y
> > >         git checkout c5665cafbedd2e2a523fe933e452391a02d3adb3
> > >         # save the attached .config to linux build tree
> > >         COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross
> > ARCH=openrisc
> > >
> > > If you fix the issue, kindly add following tag as appropriate
> > > Reported-by: kernel test robot <lkp@intel.com>
> > >
> > > All errors (new ones prefixed by >>):
> > >
> > >    drivers/android/binder.c: Assembler messages:
> > > >> drivers/android/binder.c:3776: Error: unrecognized keyword/register
> > name `l.lwz ?ap,4(r25)'
> > >    drivers/android/binder.c:3781: Error: unrecognized keyword/register
> > name `l.addi ?ap,r0,0'
> >
> > binder is basically doing this:
> >
> > u64 data_ptr;
> > if (get_user(data_ptr, (u64 __user *)ptr))
> >   return -EFAULT;
> >
> > and GCC complains that that doesn't turn into valid assembly on
> > openrisc, where get_user() of size 8 expands into this:
> >
> > #define __get_user_asm2(x, addr, err)                   \
> > {                                                       \
> >         unsigned long long __gu_tmp;                    \
> >         __asm__ __volatile__(                           \
> >                 "1:     l.lwz %1,0(%2)\n"               \
> >                 "2:     l.lwz %H1,4(%2)\n"              \
> >                 "3:\n"                                  \
> >                 ".section .fixup,\"ax\"\n"              \
> >                 "4:     l.addi %0,r0,%3\n"              \
> >                 "       l.addi %1,r0,0\n"               \
> >                 "       l.addi %H1,r0,0\n"              \
> >                 "       l.j 3b\n"                       \
> >                 "       l.nop\n"                        \
> >                 ".previous\n"                           \
> >                 ".section __ex_table,\"a\"\n"           \
> >                 "       .align 2\n"                     \
> >                 "       .long 1b,4b\n"                  \
> >                 "       .long 2b,4b\n"                  \
> >                 ".previous"                             \
> >                 : "=r"(err), "=&r"(__gu_tmp)            \
> >                 : "r"(addr), "i"(-EFAULT), "0"(err));   \
> >         (x) = (__typeof__(*(addr)))(                    \
> >                 (__typeof__((x)-(x)))__gu_tmp);         \
> > }
> >
> > and apparently the "l.lwz %H1,4(%2)" and "l.addi %H1,r0,0" don't turn
> > into valid assembly when %H1 expands to "?ap"?
> >
> > I don't know anything about OpenRISC, but this seems like it's
> > probably an issue in the get_user() implementation.
> >
> 
> This is fixed in 5.9.  I think the patch can be cherry picked by itself.
> 
> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/arch/openrisc?h=v5.9&id=d877322bc1adcab9850732275670409e8bcca4c4

Does not apply cleanly to 5.8.y or 5.4.y, can someone please properly
backport it and send it to stable at vger.kernel.org?

thanks,

greg k-h

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [linux-stable-rc:linux-5.4.y 665/2391] drivers/android/binder.c:3776: Error: unrecognized keyword/register name `l.lwz
@ 2020-10-16  9:06       ` Greg Kroah-Hartman
  0 siblings, 0 replies; 11+ messages in thread
From: Greg Kroah-Hartman @ 2020-10-16  9:06 UTC (permalink / raw)
  To: Stafford Horne
  Cc: Jann Horn, Jonas Bonn, Stefan Kristiansson, openrisc, kbuild-all,
	Martijn Coenen, kernel test robot, kernel list

On Fri, Oct 16, 2020 at 08:05:17AM +0900, Stafford Horne wrote:
> On Fri, Oct 16, 2020, 6:46 AM Jann Horn <jannh@google.com> wrote:
> 
> > +openrisc folks
> >
> > On Thu, Oct 15, 2020 at 11:28 PM kernel test robot <lkp@intel.com> wrote:
> > > tree:
> > https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git
> > linux-5.4.y
> > > head:   85b0841aab15c12948af951d477183ab3df7de14
> > > commit: c5665cafbedd2e2a523fe933e452391a02d3adb3 [665/2391] binder:
> > Prevent context manager from incrementing ref 0
> > > config: openrisc-randconfig-r002-20201014 (attached as .config)
> > > compiler: or1k-linux-gcc (GCC) 9.3.0
> > > reproduce (this is a W=1 build):
> > >         wget
> > https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross
> > -O ~/bin/make.cross
> > >         chmod +x ~/bin/make.cross
> > >         #
> > https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git/commit/?id=c5665cafbedd2e2a523fe933e452391a02d3adb3
> > >         git remote add linux-stable-rc
> > https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git
> > >         git fetch --no-tags linux-stable-rc linux-5.4.y
> > >         git checkout c5665cafbedd2e2a523fe933e452391a02d3adb3
> > >         # save the attached .config to linux build tree
> > >         COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross
> > ARCH=openrisc
> > >
> > > If you fix the issue, kindly add following tag as appropriate
> > > Reported-by: kernel test robot <lkp@intel.com>
> > >
> > > All errors (new ones prefixed by >>):
> > >
> > >    drivers/android/binder.c: Assembler messages:
> > > >> drivers/android/binder.c:3776: Error: unrecognized keyword/register
> > name `l.lwz ?ap,4(r25)'
> > >    drivers/android/binder.c:3781: Error: unrecognized keyword/register
> > name `l.addi ?ap,r0,0'
> >
> > binder is basically doing this:
> >
> > u64 data_ptr;
> > if (get_user(data_ptr, (u64 __user *)ptr))
> >   return -EFAULT;
> >
> > and GCC complains that that doesn't turn into valid assembly on
> > openrisc, where get_user() of size 8 expands into this:
> >
> > #define __get_user_asm2(x, addr, err)                   \
> > {                                                       \
> >         unsigned long long __gu_tmp;                    \
> >         __asm__ __volatile__(                           \
> >                 "1:     l.lwz %1,0(%2)\n"               \
> >                 "2:     l.lwz %H1,4(%2)\n"              \
> >                 "3:\n"                                  \
> >                 ".section .fixup,\"ax\"\n"              \
> >                 "4:     l.addi %0,r0,%3\n"              \
> >                 "       l.addi %1,r0,0\n"               \
> >                 "       l.addi %H1,r0,0\n"              \
> >                 "       l.j 3b\n"                       \
> >                 "       l.nop\n"                        \
> >                 ".previous\n"                           \
> >                 ".section __ex_table,\"a\"\n"           \
> >                 "       .align 2\n"                     \
> >                 "       .long 1b,4b\n"                  \
> >                 "       .long 2b,4b\n"                  \
> >                 ".previous"                             \
> >                 : "=r"(err), "=&r"(__gu_tmp)            \
> >                 : "r"(addr), "i"(-EFAULT), "0"(err));   \
> >         (x) = (__typeof__(*(addr)))(                    \
> >                 (__typeof__((x)-(x)))__gu_tmp);         \
> > }
> >
> > and apparently the "l.lwz %H1,4(%2)" and "l.addi %H1,r0,0" don't turn
> > into valid assembly when %H1 expands to "?ap"?
> >
> > I don't know anything about OpenRISC, but this seems like it's
> > probably an issue in the get_user() implementation.
> >
> 
> This is fixed in 5.9.  I think the patch can be cherry picked by itself.
> 
> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/arch/openrisc?h=v5.9&id=d877322bc1adcab9850732275670409e8bcca4c4

Does not apply cleanly to 5.8.y or 5.4.y, can someone please properly
backport it and send it to stable@vger.kernel.org?

thanks,

greg k-h

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [linux-stable-rc:linux-5.4.y 665/2391] drivers/android/binder.c:3776: Error: unrecognized keyword/register name `l.lwz
  2020-10-16  9:06       ` [OpenRISC] " Greg Kroah-Hartman
  (?)
@ 2020-10-17 21:08         ` Stafford Horne
  -1 siblings, 0 replies; 11+ messages in thread
From: Stafford Horne @ 2020-10-17 21:08 UTC (permalink / raw)
  To: kbuild-all

[-- Attachment #1: Type: text/plain, Size: 4505 bytes --]

On Fri, Oct 16, 2020 at 11:06:38AM +0200, Greg Kroah-Hartman wrote:
> On Fri, Oct 16, 2020 at 08:05:17AM +0900, Stafford Horne wrote:
> > On Fri, Oct 16, 2020, 6:46 AM Jann Horn <jannh@google.com> wrote:
> > 
> > > +openrisc folks
> > >
> > > On Thu, Oct 15, 2020 at 11:28 PM kernel test robot <lkp@intel.com> wrote:
> > > > tree:
> > > https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git
> > > linux-5.4.y
> > > > head:   85b0841aab15c12948af951d477183ab3df7de14
> > > > commit: c5665cafbedd2e2a523fe933e452391a02d3adb3 [665/2391] binder:
> > > Prevent context manager from incrementing ref 0
> > > > config: openrisc-randconfig-r002-20201014 (attached as .config)
> > > > compiler: or1k-linux-gcc (GCC) 9.3.0
> > > > reproduce (this is a W=1 build):
> > > >         wget
> > > https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross
> > > -O ~/bin/make.cross
> > > >         chmod +x ~/bin/make.cross
> > > >         #
> > > https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git/commit/?id=c5665cafbedd2e2a523fe933e452391a02d3adb3
> > > >         git remote add linux-stable-rc
> > > https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git
> > > >         git fetch --no-tags linux-stable-rc linux-5.4.y
> > > >         git checkout c5665cafbedd2e2a523fe933e452391a02d3adb3
> > > >         # save the attached .config to linux build tree
> > > >         COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross
> > > ARCH=openrisc
> > > >
> > > > If you fix the issue, kindly add following tag as appropriate
> > > > Reported-by: kernel test robot <lkp@intel.com>
> > > >
> > > > All errors (new ones prefixed by >>):
> > > >
> > > >    drivers/android/binder.c: Assembler messages:
> > > > >> drivers/android/binder.c:3776: Error: unrecognized keyword/register
> > > name `l.lwz ?ap,4(r25)'
> > > >    drivers/android/binder.c:3781: Error: unrecognized keyword/register
> > > name `l.addi ?ap,r0,0'
> > >
> > > binder is basically doing this:
> > >
> > > u64 data_ptr;
> > > if (get_user(data_ptr, (u64 __user *)ptr))
> > >   return -EFAULT;
> > >
> > > and GCC complains that that doesn't turn into valid assembly on
> > > openrisc, where get_user() of size 8 expands into this:
> > >
> > > #define __get_user_asm2(x, addr, err)                   \
> > > {                                                       \
> > >         unsigned long long __gu_tmp;                    \
> > >         __asm__ __volatile__(                           \
> > >                 "1:     l.lwz %1,0(%2)\n"               \
> > >                 "2:     l.lwz %H1,4(%2)\n"              \
> > >                 "3:\n"                                  \
> > >                 ".section .fixup,\"ax\"\n"              \
> > >                 "4:     l.addi %0,r0,%3\n"              \
> > >                 "       l.addi %1,r0,0\n"               \
> > >                 "       l.addi %H1,r0,0\n"              \
> > >                 "       l.j 3b\n"                       \
> > >                 "       l.nop\n"                        \
> > >                 ".previous\n"                           \
> > >                 ".section __ex_table,\"a\"\n"           \
> > >                 "       .align 2\n"                     \
> > >                 "       .long 1b,4b\n"                  \
> > >                 "       .long 2b,4b\n"                  \
> > >                 ".previous"                             \
> > >                 : "=r"(err), "=&r"(__gu_tmp)            \
> > >                 : "r"(addr), "i"(-EFAULT), "0"(err));   \
> > >         (x) = (__typeof__(*(addr)))(                    \
> > >                 (__typeof__((x)-(x)))__gu_tmp);         \
> > > }
> > >
> > > and apparently the "l.lwz %H1,4(%2)" and "l.addi %H1,r0,0" don't turn
> > > into valid assembly when %H1 expands to "?ap"?
> > >
> > > I don't know anything about OpenRISC, but this seems like it's
> > > probably an issue in the get_user() implementation.
> > >
> > 
> > This is fixed in 5.9.  I think the patch can be cherry picked by itself.
> > 
> > https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/arch/openrisc?h=v5.9&id=d877322bc1adcab9850732275670409e8bcca4c4
> 
> Does not apply cleanly to 5.8.y or 5.4.y, can someone please properly
> backport it and send it to stable(a)vger.kernel.org?

I will do it.

-Stafford

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [OpenRISC] [linux-stable-rc:linux-5.4.y 665/2391] drivers/android/binder.c:3776: Error: unrecognized keyword/register name `l.lwz
@ 2020-10-17 21:08         ` Stafford Horne
  0 siblings, 0 replies; 11+ messages in thread
From: Stafford Horne @ 2020-10-17 21:08 UTC (permalink / raw)
  To: openrisc

On Fri, Oct 16, 2020 at 11:06:38AM +0200, Greg Kroah-Hartman wrote:
> On Fri, Oct 16, 2020 at 08:05:17AM +0900, Stafford Horne wrote:
> > On Fri, Oct 16, 2020, 6:46 AM Jann Horn <jannh@google.com> wrote:
> > 
> > > +openrisc folks
> > >
> > > On Thu, Oct 15, 2020 at 11:28 PM kernel test robot <lkp@intel.com> wrote:
> > > > tree:
> > > https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git
> > > linux-5.4.y
> > > > head:   85b0841aab15c12948af951d477183ab3df7de14
> > > > commit: c5665cafbedd2e2a523fe933e452391a02d3adb3 [665/2391] binder:
> > > Prevent context manager from incrementing ref 0
> > > > config: openrisc-randconfig-r002-20201014 (attached as .config)
> > > > compiler: or1k-linux-gcc (GCC) 9.3.0
> > > > reproduce (this is a W=1 build):
> > > >         wget
> > > https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross
> > > -O ~/bin/make.cross
> > > >         chmod +x ~/bin/make.cross
> > > >         #
> > > https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git/commit/?id=c5665cafbedd2e2a523fe933e452391a02d3adb3
> > > >         git remote add linux-stable-rc
> > > https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git
> > > >         git fetch --no-tags linux-stable-rc linux-5.4.y
> > > >         git checkout c5665cafbedd2e2a523fe933e452391a02d3adb3
> > > >         # save the attached .config to linux build tree
> > > >         COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross
> > > ARCH=openrisc
> > > >
> > > > If you fix the issue, kindly add following tag as appropriate
> > > > Reported-by: kernel test robot <lkp@intel.com>
> > > >
> > > > All errors (new ones prefixed by >>):
> > > >
> > > >    drivers/android/binder.c: Assembler messages:
> > > > >> drivers/android/binder.c:3776: Error: unrecognized keyword/register
> > > name `l.lwz ?ap,4(r25)'
> > > >    drivers/android/binder.c:3781: Error: unrecognized keyword/register
> > > name `l.addi ?ap,r0,0'
> > >
> > > binder is basically doing this:
> > >
> > > u64 data_ptr;
> > > if (get_user(data_ptr, (u64 __user *)ptr))
> > >   return -EFAULT;
> > >
> > > and GCC complains that that doesn't turn into valid assembly on
> > > openrisc, where get_user() of size 8 expands into this:
> > >
> > > #define __get_user_asm2(x, addr, err)                   \
> > > {                                                       \
> > >         unsigned long long __gu_tmp;                    \
> > >         __asm__ __volatile__(                           \
> > >                 "1:     l.lwz %1,0(%2)\n"               \
> > >                 "2:     l.lwz %H1,4(%2)\n"              \
> > >                 "3:\n"                                  \
> > >                 ".section .fixup,\"ax\"\n"              \
> > >                 "4:     l.addi %0,r0,%3\n"              \
> > >                 "       l.addi %1,r0,0\n"               \
> > >                 "       l.addi %H1,r0,0\n"              \
> > >                 "       l.j 3b\n"                       \
> > >                 "       l.nop\n"                        \
> > >                 ".previous\n"                           \
> > >                 ".section __ex_table,\"a\"\n"           \
> > >                 "       .align 2\n"                     \
> > >                 "       .long 1b,4b\n"                  \
> > >                 "       .long 2b,4b\n"                  \
> > >                 ".previous"                             \
> > >                 : "=r"(err), "=&r"(__gu_tmp)            \
> > >                 : "r"(addr), "i"(-EFAULT), "0"(err));   \
> > >         (x) = (__typeof__(*(addr)))(                    \
> > >                 (__typeof__((x)-(x)))__gu_tmp);         \
> > > }
> > >
> > > and apparently the "l.lwz %H1,4(%2)" and "l.addi %H1,r0,0" don't turn
> > > into valid assembly when %H1 expands to "?ap"?
> > >
> > > I don't know anything about OpenRISC, but this seems like it's
> > > probably an issue in the get_user() implementation.
> > >
> > 
> > This is fixed in 5.9.  I think the patch can be cherry picked by itself.
> > 
> > https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/arch/openrisc?h=v5.9&id=d877322bc1adcab9850732275670409e8bcca4c4
> 
> Does not apply cleanly to 5.8.y or 5.4.y, can someone please properly
> backport it and send it to stable at vger.kernel.org?

I will do it.

-Stafford

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [linux-stable-rc:linux-5.4.y 665/2391] drivers/android/binder.c:3776: Error: unrecognized keyword/register name `l.lwz
@ 2020-10-17 21:08         ` Stafford Horne
  0 siblings, 0 replies; 11+ messages in thread
From: Stafford Horne @ 2020-10-17 21:08 UTC (permalink / raw)
  To: Greg Kroah-Hartman
  Cc: Jann Horn, Jonas Bonn, Stefan Kristiansson, openrisc, kbuild-all,
	Martijn Coenen, kernel test robot, kernel list

On Fri, Oct 16, 2020 at 11:06:38AM +0200, Greg Kroah-Hartman wrote:
> On Fri, Oct 16, 2020 at 08:05:17AM +0900, Stafford Horne wrote:
> > On Fri, Oct 16, 2020, 6:46 AM Jann Horn <jannh@google.com> wrote:
> > 
> > > +openrisc folks
> > >
> > > On Thu, Oct 15, 2020 at 11:28 PM kernel test robot <lkp@intel.com> wrote:
> > > > tree:
> > > https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git
> > > linux-5.4.y
> > > > head:   85b0841aab15c12948af951d477183ab3df7de14
> > > > commit: c5665cafbedd2e2a523fe933e452391a02d3adb3 [665/2391] binder:
> > > Prevent context manager from incrementing ref 0
> > > > config: openrisc-randconfig-r002-20201014 (attached as .config)
> > > > compiler: or1k-linux-gcc (GCC) 9.3.0
> > > > reproduce (this is a W=1 build):
> > > >         wget
> > > https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross
> > > -O ~/bin/make.cross
> > > >         chmod +x ~/bin/make.cross
> > > >         #
> > > https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git/commit/?id=c5665cafbedd2e2a523fe933e452391a02d3adb3
> > > >         git remote add linux-stable-rc
> > > https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git
> > > >         git fetch --no-tags linux-stable-rc linux-5.4.y
> > > >         git checkout c5665cafbedd2e2a523fe933e452391a02d3adb3
> > > >         # save the attached .config to linux build tree
> > > >         COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross
> > > ARCH=openrisc
> > > >
> > > > If you fix the issue, kindly add following tag as appropriate
> > > > Reported-by: kernel test robot <lkp@intel.com>
> > > >
> > > > All errors (new ones prefixed by >>):
> > > >
> > > >    drivers/android/binder.c: Assembler messages:
> > > > >> drivers/android/binder.c:3776: Error: unrecognized keyword/register
> > > name `l.lwz ?ap,4(r25)'
> > > >    drivers/android/binder.c:3781: Error: unrecognized keyword/register
> > > name `l.addi ?ap,r0,0'
> > >
> > > binder is basically doing this:
> > >
> > > u64 data_ptr;
> > > if (get_user(data_ptr, (u64 __user *)ptr))
> > >   return -EFAULT;
> > >
> > > and GCC complains that that doesn't turn into valid assembly on
> > > openrisc, where get_user() of size 8 expands into this:
> > >
> > > #define __get_user_asm2(x, addr, err)                   \
> > > {                                                       \
> > >         unsigned long long __gu_tmp;                    \
> > >         __asm__ __volatile__(                           \
> > >                 "1:     l.lwz %1,0(%2)\n"               \
> > >                 "2:     l.lwz %H1,4(%2)\n"              \
> > >                 "3:\n"                                  \
> > >                 ".section .fixup,\"ax\"\n"              \
> > >                 "4:     l.addi %0,r0,%3\n"              \
> > >                 "       l.addi %1,r0,0\n"               \
> > >                 "       l.addi %H1,r0,0\n"              \
> > >                 "       l.j 3b\n"                       \
> > >                 "       l.nop\n"                        \
> > >                 ".previous\n"                           \
> > >                 ".section __ex_table,\"a\"\n"           \
> > >                 "       .align 2\n"                     \
> > >                 "       .long 1b,4b\n"                  \
> > >                 "       .long 2b,4b\n"                  \
> > >                 ".previous"                             \
> > >                 : "=r"(err), "=&r"(__gu_tmp)            \
> > >                 : "r"(addr), "i"(-EFAULT), "0"(err));   \
> > >         (x) = (__typeof__(*(addr)))(                    \
> > >                 (__typeof__((x)-(x)))__gu_tmp);         \
> > > }
> > >
> > > and apparently the "l.lwz %H1,4(%2)" and "l.addi %H1,r0,0" don't turn
> > > into valid assembly when %H1 expands to "?ap"?
> > >
> > > I don't know anything about OpenRISC, but this seems like it's
> > > probably an issue in the get_user() implementation.
> > >
> > 
> > This is fixed in 5.9.  I think the patch can be cherry picked by itself.
> > 
> > https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/arch/openrisc?h=v5.9&id=d877322bc1adcab9850732275670409e8bcca4c4
> 
> Does not apply cleanly to 5.8.y or 5.4.y, can someone please properly
> backport it and send it to stable@vger.kernel.org?

I will do it.

-Stafford

^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2020-10-17 21:08 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-10-15 21:28 [linux-stable-rc:linux-5.4.y 665/2391] drivers/android/binder.c:3776: Error: unrecognized keyword/register name `l.lwz kernel test robot
2020-10-15 21:46 ` Jann Horn
2020-10-15 21:46   ` Jann Horn
2020-10-15 23:05   ` Stafford Horne
2020-10-15 23:05     ` [OpenRISC] " Stafford Horne
2020-10-16  9:06     ` Greg Kroah-Hartman
2020-10-16  9:06       ` Greg Kroah-Hartman
2020-10-16  9:06       ` [OpenRISC] " Greg Kroah-Hartman
2020-10-17 21:08       ` Stafford Horne
2020-10-17 21:08         ` Stafford Horne
2020-10-17 21:08         ` [OpenRISC] " 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.