drm: Track clients by tgid and not tid
Thread group id (aka pid from userspace point of view) is a more interesting thing to show as an owner of a DRM fd, so track and show that instead of the thread id. In the next patch we will make the owner updated post file descriptor handover, which will also be tgid based to avoid ping-pong when multiple threads access the fd. Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Reviewed-by: Zack Rusin <zackr@vmware.com> Reviewed-by: Christian König <christian.koenig@amd.com> Signed-off-by: Christian König <christian.koenig@amd.com> Link: https://patchwork.freedesktop.org/patch/msgid/20230314141904.1210824-2-tvrtko.ursulin@linux.intel.com
This commit is contained in:
parent
e2945e6c51
commit
4230cea89c
@ -969,7 +969,7 @@ static int amdgpu_debugfs_gem_info_show(struct seq_file *m, void *unused)
|
|||||||
* Therefore, we need to protect this ->comm access using RCU.
|
* Therefore, we need to protect this ->comm access using RCU.
|
||||||
*/
|
*/
|
||||||
rcu_read_lock();
|
rcu_read_lock();
|
||||||
task = pid_task(file->pid, PIDTYPE_PID);
|
task = pid_task(file->pid, PIDTYPE_TGID);
|
||||||
seq_printf(m, "pid %8d command %s:\n", pid_nr(file->pid),
|
seq_printf(m, "pid %8d command %s:\n", pid_nr(file->pid),
|
||||||
task ? task->comm : "<unknown>");
|
task ? task->comm : "<unknown>");
|
||||||
rcu_read_unlock();
|
rcu_read_unlock();
|
||||||
|
@ -80,7 +80,7 @@ static int drm_clients_info(struct seq_file *m, void *data)
|
|||||||
seq_printf(m,
|
seq_printf(m,
|
||||||
"%20s %5s %3s master a %5s %10s\n",
|
"%20s %5s %3s master a %5s %10s\n",
|
||||||
"command",
|
"command",
|
||||||
"pid",
|
"tgid",
|
||||||
"dev",
|
"dev",
|
||||||
"uid",
|
"uid",
|
||||||
"magic");
|
"magic");
|
||||||
@ -94,7 +94,7 @@ static int drm_clients_info(struct seq_file *m, void *data)
|
|||||||
bool is_current_master = drm_is_current_master(priv);
|
bool is_current_master = drm_is_current_master(priv);
|
||||||
|
|
||||||
rcu_read_lock(); /* locks pid_task()->comm */
|
rcu_read_lock(); /* locks pid_task()->comm */
|
||||||
task = pid_task(priv->pid, PIDTYPE_PID);
|
task = pid_task(priv->pid, PIDTYPE_TGID);
|
||||||
uid = task ? __task_cred(task)->euid : GLOBAL_ROOT_UID;
|
uid = task ? __task_cred(task)->euid : GLOBAL_ROOT_UID;
|
||||||
seq_printf(m, "%20s %5d %3d %c %c %5d %10u\n",
|
seq_printf(m, "%20s %5d %3d %c %c %5d %10u\n",
|
||||||
task ? task->comm : "<unknown>",
|
task ? task->comm : "<unknown>",
|
||||||
|
@ -156,7 +156,7 @@ struct drm_file *drm_file_alloc(struct drm_minor *minor)
|
|||||||
if (!file)
|
if (!file)
|
||||||
return ERR_PTR(-ENOMEM);
|
return ERR_PTR(-ENOMEM);
|
||||||
|
|
||||||
file->pid = get_pid(task_pid(current));
|
file->pid = get_pid(task_tgid(current));
|
||||||
file->minor = minor;
|
file->minor = minor;
|
||||||
|
|
||||||
/* for compatibility root is always authenticated */
|
/* for compatibility root is always authenticated */
|
||||||
|
@ -241,7 +241,7 @@ static int vmw_debugfs_gem_info_show(struct seq_file *m, void *unused)
|
|||||||
* Therefore, we need to protect this ->comm access using RCU.
|
* Therefore, we need to protect this ->comm access using RCU.
|
||||||
*/
|
*/
|
||||||
rcu_read_lock();
|
rcu_read_lock();
|
||||||
task = pid_task(file->pid, PIDTYPE_PID);
|
task = pid_task(file->pid, PIDTYPE_TGID);
|
||||||
seq_printf(m, "pid %8d command %s:\n", pid_nr(file->pid),
|
seq_printf(m, "pid %8d command %s:\n", pid_nr(file->pid),
|
||||||
task ? task->comm : "<unknown>");
|
task ? task->comm : "<unknown>");
|
||||||
rcu_read_unlock();
|
rcu_read_unlock();
|
||||||
|
Loading…
Reference in New Issue
Block a user