On Sun, 4 Aug 2024 at 00:56, Yafang Shao <laoar.shao@xxxxxxxxx> wrote: > > There is a BUILD_BUG_ON() inside get_task_comm(), so when you use > get_task_comm(), it implies that the BUILD_BUG_ON() is necessary. Let's just remove that silly BUILD_BUG_ON(). I don't think it adds any value, and honestly, it really only makes this patch-series uglier when reasonable uses suddenly pointlessly need that double-underscore version.. So let's aim at (a) documenting that the last byte in 'tsk->comm{}' is always guaranteed to be NUL, so that the thing can always just be treated as a string. Yes, it may change under us, but as long as we know there is always a stable NUL there *somewhere*, we really really don't care. (b) removing __get_task_comm() entirely, and replacing it with a plain 'str*cpy*()' functions The whole (a) thing is a requirement anyway, since the *bulk* of tsk->comm really just seems to be various '%s' things in printk strings etc. And once we just admit that we can use the string functions, all the get_task_comm() stuff is just unnecessary. And yes, some people may want to use the strscpy_pad() function because they want to fill the whole destination buffer. But that's entirely about the *destination* use, not the tsk->comm[] source, so it has nothing to do with any kind of "get_task_comm()" logic, and it was always wrong to care about the buffer sizes magically matching. Hmm? Linus