Messages in this thread | | | From | Yafang Shao <> | Subject | [PATCH v4 0/5] task_struct: extend task comm from 16 to 24 for CONFIG_BASE_FULL | Date | Wed, 13 Oct 2021 10:23:41 +0000 |
| |
This patchset changes files among many subsystems. I don't know which tree it should be applied to, so I just base it on Linus's tree.
When I was implementing a new per-cpu kthread cfs_migration, I found the comm of it "cfs_migration/%u" is truncated due to the limitation of TASK_COMM_LEN. For example, the comm of the percpu thread on CPU10~19 are all with the same name "cfs_migration/1", which will confuse the user. This issue is not critical, because we can get the corresponding CPU from the task's Cpus_allowed. But for kthreads correspoinding to other hardware devices, it is not easy to get the detailed device info from task comm, for example,
jbd2/nvme0n1p2- xfs-reclaim/sdf
We can also shorten the name to work around this problem, but I find there are so many truncated kthreads:
rcu_tasks_kthre rcu_tasks_rude_ rcu_tasks_trace poll_mpt3sas0_s ext4-rsv-conver xfs-reclaim/sd{a, b, c, ...} xfs-blockgc/sd{a, b, c, ...} xfs-inodegc/sd{a, b, c, ...} audit_send_repl ecryptfs-kthrea vfio-irqfd-clea jbd2/nvme0n1p2- ...
We should improve this problem fundamentally.
This patch extends the size of task comm to 24 bytes, which is the same length with workqueue's, for the CONFIG_BASE_FULL case. And for the CONFIG_BASE_SMALL case, the size of task comm is still kept as 16 bytes.
After this patchset, the truncated kthreads listed above will be displayed as:
rcu_tasks_kthread rcu_tasks_rude_kthread rcu_tasks_trace_kthread poll_mpt3sas0_statu ext4-rsv-conversion xfs-reclaim/sdf1 xfs-blockgc/sdf1 xfs-inodegc/sdf1 audit_send_reply ecryptfs-kthread vfio-irqfd-cleanup jbd2/nvme0n1p2-8
If the kthread's comm is still truncated, a warning will be printed. Below is the result of my test case:
truncated kthread comm:I-am-a-kthread-with-lon, pid:14 by 6 characters
Changes since v3: - fixes -Wstringop-truncation warning reported by kernel test robot
Changes since v2: - avoid change UAPI code per Kees - remove the description of out of tree code from commit log per Peter
Changes since v1: - extend task comm to 24bytes, per Petr - improve the warning per Petr - make the checkpatch warning a separate patch
Yafang Shao (5): elfcore: use TASK_COMM_LEN instead of 16 in prpsinfo connector: use __get_task_comm in proc_comm_connector fs/exec: use strscpy instead of strlcpy in __set_task_comm sched.h: extend task comm from 16 to 24 for CONFIG_BASE_FULL kernel/kthread: show a warning if kthread's comm is truncated
drivers/connector/cn_proc.c | 5 ++++- fs/exec.c | 2 +- include/linux/elfcore-compat.h | 2 +- include/linux/elfcore.h | 4 ++-- include/linux/sched.h | 4 ++++ kernel/kthread.c | 7 ++++++- 6 files changed, 18 insertions(+), 6 deletions(-)
-- 2.17.1
| |