diff options
Diffstat (limited to 'drivers/firmware/xilinx/zynqmp-debug.c')
| -rw-r--r-- | drivers/firmware/xilinx/zynqmp-debug.c | 18 | 
1 files changed, 4 insertions, 14 deletions
diff --git a/drivers/firmware/xilinx/zynqmp-debug.c b/drivers/firmware/xilinx/zynqmp-debug.c index 2771df6df379..c6d0724da4db 100644 --- a/drivers/firmware/xilinx/zynqmp-debug.c +++ b/drivers/firmware/xilinx/zynqmp-debug.c @@ -90,9 +90,6 @@ static int process_api_request(u32 pm_id, u64 *pm_api_arg, u32 *pm_api_ret)  	int ret;  	struct zynqmp_pm_query_data qdata = {0}; -	if (!eemi_ops) -		return -ENXIO; -  	switch (pm_id) {  	case PM_GET_API_VERSION:  		ret = eemi_ops->get_api_version(&pm_api_version); @@ -163,21 +160,14 @@ static ssize_t zynqmp_pm_debugfs_api_write(struct file *file,  	strcpy(debugfs_buf, ""); -	if (*off != 0 || len == 0) +	if (*off != 0 || len <= 1 || len > PAGE_SIZE - 1)  		return -EINVAL; -	kern_buff = kzalloc(len, GFP_KERNEL); -	if (!kern_buff) -		return -ENOMEM; - +	kern_buff = memdup_user_nul(ptr, len); +	if (IS_ERR(kern_buff)) +		return PTR_ERR(kern_buff);  	tmp_buff = kern_buff; -	ret = strncpy_from_user(kern_buff, ptr, len); -	if (ret < 0) { -		ret = -EFAULT; -		goto err; -	} -  	/* Read the API name from a user request */  	pm_api_req = strsep(&kern_buff, " ");  |