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

Commit 45cf9621 authored by Carter Cooper's avatar Carter Cooper
Browse files

msm: kgsl: Set process information before printing trace information



Using ftrace from mem_map and mem_free before the process information
is stored in the entry will cause ftrace to dereference NULL. Wait for
this information to be set before tracing.

Change-Id: I5a5b67f2c019fe87a9697923847d4cd42fe5939f
Signed-off-by: default avatarCarter Cooper <ccooper@codeaurora.org>
parent 148a0a8b
Loading
Loading
Loading
Loading
+9 −5
Original line number Diff line number Diff line
@@ -2120,7 +2120,8 @@ static long _gpuobj_map_useraddr(struct kgsl_device *device,
static long _gpuobj_map_dma_buf(struct kgsl_device *device,
		struct kgsl_pagetable *pagetable,
		struct kgsl_mem_entry *entry,
		struct kgsl_gpuobj_import *param)
		struct kgsl_gpuobj_import *param,
		int *fd)
{
	struct kgsl_gpuobj_import_dma_buf buf;
	struct dma_buf *dmabuf;
@@ -2148,6 +2149,7 @@ static long _gpuobj_map_dma_buf(struct kgsl_device *device,
	if (buf.fd == 0)
		return -EINVAL;

	*fd = buf.fd;
	dmabuf = dma_buf_get(buf.fd);

	if (IS_ERR_OR_NULL(dmabuf))
@@ -2157,14 +2159,14 @@ static long _gpuobj_map_dma_buf(struct kgsl_device *device,
	if (ret)
		dma_buf_put(dmabuf);

	trace_kgsl_mem_map(entry, buf.fd);
	return ret;
}
#else
static long _gpuobj_map_dma_buf(struct kgsl_device *device,
		struct kgsl_pagetable *pagetable,
		struct kgsl_mem_entry *entry,
		struct kgsl_gpuobj_import *param)
		struct kgsl_gpuobj_import *param,
		int *fd)
{
	return -EINVAL;
}
@@ -2176,7 +2178,7 @@ long kgsl_ioctl_gpuobj_import(struct kgsl_device_private *dev_priv,
	struct kgsl_process_private *private = dev_priv->process_priv;
	struct kgsl_gpuobj_import *param = data;
	struct kgsl_mem_entry *entry;
	int ret;
	int ret, fd = -1;

	entry = kgsl_mem_entry_create();
	if (entry == NULL)
@@ -2195,7 +2197,7 @@ long kgsl_ioctl_gpuobj_import(struct kgsl_device_private *dev_priv,
			entry, param);
	else if (param->type == KGSL_USER_MEM_TYPE_DMABUF)
		ret = _gpuobj_map_dma_buf(dev_priv->device, private->pagetable,
			entry, param);
			entry, param, &fd);
	else
		ret = -ENOTSUPP;

@@ -2222,6 +2224,8 @@ long kgsl_ioctl_gpuobj_import(struct kgsl_device_private *dev_priv,
		kgsl_memdesc_usermem_type(&entry->memdesc),
		entry->memdesc.size);

	trace_kgsl_mem_map(entry, fd);

	return 0;

unmap: