Commit 7612bfeecc197bbb6629842b5c6ff1967f0a9b70

Authored by Kees Cook
Committed by James Morris
1 parent d9875690d9

Yama: access task_struct->comm directly

The core ptrace access checking routine holds a task lock, and when
reporting a failure, Yama takes a separate task lock. To avoid a
potential deadlock with two ptracers taking the opposite locks, do not
use get_task_comm() and just use ->comm directly since accuracy is not
important for the report.

Reported-by: Fengguang Wu <fengguang.wu@intel.com>
Suggested-by: Oleg Nesterov <oleg@redhat.com>
CC: stable@vger.kernel.org
Signed-off-by: Kees Cook <keescook@chromium.org>
Acked-by: John Johansen <john.johansen@canonical.com>
Signed-off-by: James Morris <james.l.morris@oracle.com>

Showing 1 changed file with 2 additions and 8 deletions Side-by-side Diff

security/yama/yama_lsm.c
... ... @@ -279,12 +279,9 @@
279 279 }
280 280  
281 281 if (rc) {
282   - char name[sizeof(current->comm)];
283 282 printk_ratelimited(KERN_NOTICE
284 283 "ptrace of pid %d was attempted by: %s (pid %d)\n",
285   - child->pid,
286   - get_task_comm(name, current),
287   - current->pid);
  284 + child->pid, current->comm, current->pid);
288 285 }
289 286  
290 287 return rc;
291 288  
... ... @@ -319,12 +316,9 @@
319 316 }
320 317  
321 318 if (rc) {
322   - char name[sizeof(current->comm)];
323 319 printk_ratelimited(KERN_NOTICE
324 320 "ptraceme of pid %d was attempted by: %s (pid %d)\n",
325   - current->pid,
326   - get_task_comm(name, parent),
327   - parent->pid);
  321 + current->pid, parent->comm, parent->pid);
328 322 }
329 323  
330 324 return rc;