summaryrefslogtreecommitdiffstats
path: root/security
diff options
context:
space:
mode:
authorAl Viro <viro@zeniv.linux.org.uk>2012-06-30 03:55:24 -0400
committerAl Viro <viro@zeniv.linux.org.uk>2012-07-22 15:58:01 -0400
commitd35abdb28824cf74f0a106a0f9c6f3ff700a35bf (patch)
tree860bbe5c9e2d42293698cd93c32299b2c6dac5a2 /security
parent6120d3dbb1220792ebea88cd475e1ec8f8620a93 (diff)
hold task_lock around checks in keyctl
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'security')
-rw-r--r--security/keys/keyctl.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/security/keys/keyctl.c b/security/keys/keyctl.c
index 0291b3f9397c..f1b59ae39d7e 100644
--- a/security/keys/keyctl.c
+++ b/security/keys/keyctl.c
@@ -1486,6 +1486,7 @@ long keyctl_session_to_parent(void)
1486 oldwork = NULL; 1486 oldwork = NULL;
1487 parent = me->real_parent; 1487 parent = me->real_parent;
1488 1488
1489 task_lock(parent);
1489 /* the parent mustn't be init and mustn't be a kernel thread */ 1490 /* the parent mustn't be init and mustn't be a kernel thread */
1490 if (parent->pid <= 1 || !parent->mm) 1491 if (parent->pid <= 1 || !parent->mm)
1491 goto unlock; 1492 goto unlock;
@@ -1529,6 +1530,7 @@ long keyctl_session_to_parent(void)
1529 if (!ret) 1530 if (!ret)
1530 newwork = NULL; 1531 newwork = NULL;
1531unlock: 1532unlock:
1533 task_unlock(parent);
1532 write_unlock_irq(&tasklist_lock); 1534 write_unlock_irq(&tasklist_lock);
1533 rcu_read_unlock(); 1535 rcu_read_unlock();
1534 if (oldwork) 1536 if (oldwork)