Thread (29 messages) 29 messages, 8 authors, 2023-02-13

Re: [PATCH v2 4/7] fs/binfmt_elf: replace open-coded string copy with get_task_comm

From: Yafang Shao <hidden>
Date: 2021-11-30 03:02:05
Also in: bpf, linux-fsdevel, linux-mm, linux-perf-users, lkml

On Tue, Nov 30, 2021 at 12:01 AM Steven Rostedt [off-list ref] wrote:
On Sat, 20 Nov 2021 11:27:35 +0000
Yafang Shao [off-list ref] wrote:
quoted
diff --git a/include/linux/elfcore-compat.h b/include/linux/elfcore-compat.h
index e272c3d452ce..54feb64e9b5d 100644
--- a/include/linux/elfcore-compat.h
+++ b/include/linux/elfcore-compat.h
@@ -43,6 +43,11 @@ struct compat_elf_prpsinfo
      __compat_uid_t                  pr_uid;
      __compat_gid_t                  pr_gid;
      compat_pid_t                    pr_pid, pr_ppid, pr_pgrp, pr_sid;
+     /*
+      * The hard-coded 16 is derived from TASK_COMM_LEN, but it can't be
+      * changed as it is exposed to userspace. We'd better make it hard-coded
+      * here.
Didn't I once suggest having a macro called something like:

  TASK_COMM_LEN_16 ?


https://lore.kernel.org/all/20211014221409.5da58a42@oasis.local.home/ (local)
Hi Steven,

TASK_COMM_LEN_16 is a good idea, but not all hard-coded 16 can be
replaced by this macro (which is defined in include/sched.h).
For example,  the comm[16] in include/uapi/linux/cn_proc.h can't be
replaced as it is a uapi header which can't include  linux/sched.h.
That's why I prefer to keep the hard-coded 16 as-is.

There are three options,
- option 1
  comment on all the hard-coded 16 to explain why it is hard-coded
- option 2
  replace the hard-coded 16 that can be replaced and comment on the
others which can't be replaced.
- option 3
   replace the hard-coded 16 that can be replaced and specifically
define TASK_COMM_LEN_16 in other files which can't include
linux/sched.h.

Which one do you prefer ?

quoted
+      */
      char                            pr_fname[16];
      char                            pr_psargs[ELF_PRARGSZ];
 };
diff --git a/include/linux/elfcore.h b/include/linux/elfcore.h
index 957ebec35aad..746e081879a5 100644
--- a/include/linux/elfcore.h
+++ b/include/linux/elfcore.h
@@ -65,6 +65,11 @@ struct elf_prpsinfo
      __kernel_gid_t  pr_gid;
      pid_t   pr_pid, pr_ppid, pr_pgrp, pr_sid;
      /* Lots missing */
+     /*
+      * The hard-coded 16 is derived from TASK_COMM_LEN, but it can't be
+      * changed as it is exposed to userspace. We'd better make it hard-coded
+      * here.
+      */
      char    pr_fname[16];   /* filename of executable */
      char    pr_psargs[ELF_PRARGSZ]; /* initial part of arg list */
 };


-- 
Thanks
Yafang
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help