[bug report] drm: add DRM_SET_CLIENT_NAME ioctl
Pierre-Eric Pelloux-Prayer
pierre-eric at damsy.net
Fri Oct 11 08:20:03 UTC 2024
Hi,
Le 10/10/2024 à 12:02, Dan Carpenter a écrit :
> Hello Pierre-Eric Pelloux-Prayer,
>
> Commit 56c594d8df64 ("drm: add DRM_SET_CLIENT_NAME ioctl") from Oct
> 3, 2024 (linux-next), leads to the following Smatch static checker
> warning:
>
> drivers/gpu/drm/drm_debugfs.c:104 drm_clients_info()
> warn: was precision intended? '64'
>
> drivers/gpu/drm/drm_debugfs.c
> 73 static int drm_clients_info(struct seq_file *m, void *data)
> 74 {
> 75 struct drm_debugfs_entry *entry = m->private;
> 76 struct drm_device *dev = entry->dev;
> 77 struct drm_file *priv;
> 78 kuid_t uid;
> 79
> 80 seq_printf(m,
> 81 "%20s %5s %3s master a %5s %10s %*s\n",
> ^^^
> this was probably intended to be %.*s
No. The intent is to right-align the string, similar to what is done for the other
string fields.
It could have been written %64s, but since DRM_CLIENT_NAME_MAX_LEN exist, I've used
the %*s syntax.
Pierre-Eric
>
> 82 "command",
> 83 "tgid",
> 84 "dev",
> 85 "uid",
> 86 "magic",
> 87 DRM_CLIENT_NAME_MAX_LEN,
> 88 "name");
> 89
> 90 /* dev->filelist is sorted youngest first, but we want to present
> 91 * oldest first (i.e. kernel, servers, clients), so walk backwardss.
> 92 */
> 93 mutex_lock(&dev->filelist_mutex);
> 94 list_for_each_entry_reverse(priv, &dev->filelist, lhead) {
> 95 bool is_current_master = drm_is_current_master(priv);
> 96 struct task_struct *task;
> 97 struct pid *pid;
> 98
> 99 mutex_lock(&priv->client_name_lock);
> 100 rcu_read_lock(); /* Locks priv->pid and pid_task()->comm! */
> 101 pid = rcu_dereference(priv->pid);
> 102 task = pid_task(pid, PIDTYPE_TGID);
> 103 uid = task ? __task_cred(task)->euid : GLOBAL_ROOT_UID;
> --> 104 seq_printf(m, "%20s %5d %3d %c %c %5d %10u %*s\n",
> ^^
> And this as well. But why bother? We know these strings are NUL terminated.
>
> 105 task ? task->comm : "<unknown>",
> 106 pid_vnr(pid),
> 107 priv->minor->index,
> 108 is_current_master ? 'y' : 'n',
> 109 priv->authenticated ? 'y' : 'n',
> 110 from_kuid_munged(seq_user_ns(m), uid),
> 111 priv->magic,
> 112 DRM_CLIENT_NAME_MAX_LEN,
> 113 priv->client_name ? priv->client_name : "<unset>");
> 114 rcu_read_unlock();
> 115 mutex_unlock(&priv->client_name_lock);
> 116 }
> 117 mutex_unlock(&dev->filelist_mutex);
> 118 return 0;
> 119 }
>
> regards,
> dan carpenter
More information about the dri-devel
mailing list