Messages in this thread | | | Date | Wed, 15 Aug 2012 11:30:12 -0700 | Subject | Re: yama_ptrace_access_check(): possible recursive locking detected | From | Kees Cook <> |
| |
On Wed, Aug 15, 2012 at 11:17 AM, Oleg Nesterov <oleg@redhat.com> wrote: > On 08/15, Kees Cook wrote: >> >> It sounds like get_task_comm shouldn't have locking at all then? It >> should just do a length-limited copy > > Without task_lock() get_task_comm() can copy incomplete new name. > > Honestly, I do not know any user which "strictly" needs the correct > name. may be proc.
Right, which is my point -- if the race to read against set_task_comm() isn't useful to anything, why lock in get_task_comm at all?
> >> and make sure there is a trailing >> 0-byte? > > get_task_comm()->strncpy() should always see (and copy) 0-byte. > comm[TASK_COMM_LEN - 1] == '\0' and this byte is never changed. > > set_task_comm()->strlcpy() can write to this byte, but it can > only write 0 again.
Right, and set_task_comm even does a memset() of 0 over the whole area before the strlcpy too.
Regardless, it sounds like just using ->comm directly is fine; I'll send a patch.
-Kees
-- Kees Cook Chrome OS Security
| |