Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit cc681776 authored by qctecmdr's avatar qctecmdr Committed by Gerrit - the friendly Code Review server
Browse files

Merge "msm: kgsl: Avoid copying aux_command_generic struct twice"

parents fbabbd22 ff9b4c4a
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -2018,7 +2018,7 @@ long kgsl_ioctl_gpu_aux_command(struct kgsl_device_private *dev_priv,
			}

			ret = kgsl_drawobj_add_timeline(dev_priv, timelineobj,
				cmdlist, param->cmdsize);
				u64_to_user_ptr(generic.priv), generic.size);
			if (ret)
				goto err;

+2 −25
Original line number Diff line number Diff line
@@ -820,25 +820,6 @@ static int drawobj_init(struct kgsl_device *device,
	return 0;
}

static int get_aux_command(void __user *ptr, u64 generic_size,
		int type, void *auxcmd, size_t auxcmd_size)
{
	struct kgsl_gpu_aux_command_generic generic;
	u64 size;

	if (copy_struct_from_user(&generic, sizeof(generic), ptr, generic_size))
		return -EFAULT;

	if (generic.type != type)
		return -EINVAL;

	size = min_t(u64, auxcmd_size, generic.size);
	if (copy_from_user(auxcmd, u64_to_user_ptr(generic.priv), size))
		return -EFAULT;

	return 0;
}

struct kgsl_drawobj_timeline *
kgsl_drawobj_timeline_create(struct kgsl_device *device,
		struct kgsl_context *context)
@@ -870,12 +851,8 @@ int kgsl_drawobj_add_timeline(struct kgsl_device_private *dev_priv,
	struct kgsl_gpu_aux_command_timeline cmd;
	int i, ret;

	memset(&cmd, 0, sizeof(cmd));

	ret = get_aux_command(src, cmdsize,
		KGSL_GPU_AUX_COMMAND_TIMELINE, &cmd, sizeof(cmd));
	if (ret)
		return ret;
	if (copy_struct_from_user(&cmd, sizeof(cmd), src, cmdsize))
		return -EFAULT;

	if (!cmd.count)
		return -EINVAL;