On Sat, Sep 28, 2024 at 02:46:36PM -0700, Andrew Morton wrote: > On Sat, 28 Sep 2024 14:39:45 -0700 Kees Cook <k...@kernel.org> wrote: > > > On Sat, Sep 28, 2024 at 02:35:32PM -0700, Andrew Morton wrote: > > > On Sat, 28 Sep 2024 14:08:31 -0700 Kees Cook <k...@kernel.org> wrote: > > > > > > > The 'comm' member will always be NUL terminated, > > > > > > Why is this? I thought this is only true if the caller holds task_lock()? > > > > Because it's always written with strscpy_pad(). The final byte will > > always be NUL. (And this has been true for a very long time.) > > So why does __get_task_comm() need to take task_lock()?
That was to make sure we didn't end up with garbled results, but discussions have determined that we don't care: https://lore.kernel.org/all/20240828030321.20688-1-laoar.s...@gmail.com/ But just for safety's sake, I'll change this memcpy to: memcpy_and_pad(comm, sizeof(comm), current->comm, sizeof(comm) - 1, 0); -- Kees Cook