summaryrefslogtreecommitdiff
path: root/drivers/gpu/msm/kgsl_debugfs.c
diff options
context:
space:
mode:
authorArchana Sriram <apsrir@codeaurora.org>2020-10-18 23:34:04 +0530
committerKamal Agrawal <kamaagra@codeaurora.org>2020-11-10 08:22:19 +0530
commit703cccfc832e2c42abdfb3eb03e7645059f0b7c2 (patch)
tree207fd0847e05dfb40365a86957a7b8e2b47edb8f /drivers/gpu/msm/kgsl_debugfs.c
parentb81c4ac933f0bcbfa2bad5886c4013f8da52c86a (diff)
msm: kgsl: Compare pid pointer instead of TGID for a new process
There is a possibility of sharing process_private between two unrelated processes due to PID wrapping. In kgsl_process_private_new(), instead of checking numeric TGID, compare the unique pid pointer of the current process with that of the existing processes in kgsl process list to allow sharing of process_private data judiciously. Also, in all required functions get TGID/PID of a process from its struct pid. Change-Id: I0e3d5d79275cdb3f3c304fb36322ad56b0d0b227 Signed-off-by: Archana Sriram <apsrir@codeaurora.org> Signed-off-by: Kamal Agrawal <kamaagra@codeaurora.org>
Diffstat (limited to 'drivers/gpu/msm/kgsl_debugfs.c')
-rw-r--r--drivers/gpu/msm/kgsl_debugfs.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/drivers/gpu/msm/kgsl_debugfs.c b/drivers/gpu/msm/kgsl_debugfs.c
index 592257a332d1..30769de41a70 100644
--- a/drivers/gpu/msm/kgsl_debugfs.c
+++ b/drivers/gpu/msm/kgsl_debugfs.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2002,2008-2017, The Linux Foundation. All rights reserved.
+/* Copyright (c) 2002,2008-2017,2020, The Linux Foundation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
@@ -393,7 +393,7 @@ void kgsl_process_init_debugfs(struct kgsl_process_private *private)
unsigned char name[16];
struct dentry *dentry;
- snprintf(name, sizeof(name), "%d", private->pid);
+ snprintf(name, sizeof(name), "%d", pid_nr(private->pid));
private->debug_root = debugfs_create_dir(name, proc_d_debugfs);
@@ -413,14 +413,15 @@ void kgsl_process_init_debugfs(struct kgsl_process_private *private)
}
dentry = debugfs_create_file("mem", 0444, private->debug_root,
- (void *) ((unsigned long) private->pid), &process_mem_fops);
+ (void *) ((unsigned long) pid_nr(private->pid)),
+ &process_mem_fops);
if (IS_ERR_OR_NULL(dentry))
WARN((dentry == NULL),
"Unable to create 'mem' file for %s\n", name);
dentry = debugfs_create_file("sparse_mem", 0444, private->debug_root,
- (void *) ((unsigned long) private->pid),
+ (void *) ((unsigned long) pid_nr(private->pid)),
&process_sparse_mem_fops);
if (IS_ERR_OR_NULL(dentry))