drm/evdi: Log process executable name along with PID

Log task 'command' from 'struct task_struct' for easier tracking access
to EVDI card.

TEST=manual
BUG=chromium:903791

Change-Id: Id0b4d2ae71479459e0bf4150efcb79132ed6d6c4
Signed-off-by: Dawid Kurek <dawid.kurek@displaylink.com>
Reviewed-on: https://chromium-review.googlesource.com/1411580
Reviewed-by: Dominik Behr <dbehr@chromium.org>
Reviewed-by: Stéphane Marchesin <marcheu@chromium.org>
diff --git a/drivers/gpu/drm/evdi/evdi_debug.c b/drivers/gpu/drm/evdi/evdi_debug.c
index 848f323f..432439e 100644
--- a/drivers/gpu/drm/evdi/evdi_debug.c
+++ b/drivers/gpu/drm/evdi/evdi_debug.c
@@ -8,6 +8,7 @@
 
 #include <linux/module.h>
 #include <linux/moduleparam.h>
+#include <linux/sched.h>
 
 #include "evdi_debug.h"
 
@@ -15,3 +16,26 @@
 
 module_param_named(initial_loglevel, evdi_loglevel, int, 0400);
 MODULE_PARM_DESC(initial_loglevel, "Initial log level");
+
+void evdi_log_process(void)
+{
+	int task_pid = (int)task_pid_nr(current);
+	char task_comm[TASK_COMM_LEN] = { 0 };
+
+	get_task_comm(task_comm, current);
+
+	if (current->group_leader) {
+		char process_comm[TASK_COMM_LEN] = { 0 };
+
+		get_task_comm(process_comm, current->group_leader);
+		EVDI_INFO("Task %d (%s) of process %d (%s)\n",
+			  task_pid,
+			  task_comm,
+			  (int)task_pid_nr(current->group_leader),
+			  process_comm);
+	} else {
+		EVDI_INFO("Task %d (%s)\n",
+			  task_pid,
+			  task_comm);
+	}
+}
diff --git a/drivers/gpu/drm/evdi/evdi_debug.h b/drivers/gpu/drm/evdi/evdi_debug.h
index 86c384a..3d748eb 100644
--- a/drivers/gpu/drm/evdi/evdi_debug.h
+++ b/drivers/gpu/drm/evdi/evdi_debug.h
@@ -53,5 +53,7 @@
 #define EVDI_ENTER() EVDI_VERBOSE("enter\n")
 #define EVDI_EXIT() EVDI_VERBOSE("exit\n")
 
+void evdi_log_process(void);
+
 #endif /* EVDI_DEBUG_H */
 
diff --git a/drivers/gpu/drm/evdi/evdi_main.c b/drivers/gpu/drm/evdi/evdi_main.c
index 04e9799..386b1f6 100644
--- a/drivers/gpu/drm/evdi/evdi_main.c
+++ b/drivers/gpu/drm/evdi/evdi_main.c
@@ -117,8 +117,10 @@
 {
 	struct evdi_device *evdi = drm_dev->dev_private;
 
-	EVDI_DEBUG("(dev=%d) process %d tries to close us, postclose\n",
-		   evdi ? evdi->dev_index : -1, (int)task_pid_nr(current));
+	EVDI_DEBUG("(dev=%d) Process tries to close us, postclose\n",
+		   evdi ? evdi->dev_index : -1);
+	evdi_log_process();
+
 	evdi_driver_close(drm_dev, file);
 }
 
diff --git a/drivers/gpu/drm/evdi/evdi_painter.c b/drivers/gpu/drm/evdi/evdi_painter.c
index 80f17f5..babdd17 100644
--- a/drivers/gpu/drm/evdi/evdi_painter.c
+++ b/drivers/gpu/drm/evdi/evdi_painter.c
@@ -504,9 +504,9 @@
 	struct edid *new_edid = NULL;
 	int expected_edid_size = 0;
 
-	EVDI_CHECKPT();
-	EVDI_DEBUG("(dev=%d) process %d trying to connect\n", evdi->dev_index,
-		   (int)task_pid_nr(current));
+	EVDI_DEBUG("(dev=%d) Process is trying to connect\n",
+		   evdi->dev_index);
+	evdi_log_process();
 
 	if (edid_length < sizeof(struct edid)) {
 		EVDI_ERROR("Edid length too small\n");