From: Pavel Emelyanov Date: Mon, 24 Mar 2008 19:29:52 +0000 (-0700) Subject: bsd_acct: plain current->real_parent access is not always safe X-Git-Tag: v2.6.25-rc7~14 X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a846a1954b6397e844fe1e258af7598897ec6159;p=linux-2.6 bsd_acct: plain current->real_parent access is not always safe This is minor, but dereferencing even current real_parent is not safe on debug kernels, since the memory, this points to, can be unmapped - RCU protection is required. Besides, the tgid field is deprecated and is to be replaced with task_tgid_xxx call (the 2nd patch), so RCU will be required anyway. Signed-off-by: Pavel Emelyanov Cc: Oleg Nesterov Cc: "Paul E. McKenney" Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds --- diff --git a/kernel/acct.c b/kernel/acct.c index 521dfa53cb..7ff5339a3f 100644 --- a/kernel/acct.c +++ b/kernel/acct.c @@ -482,7 +482,9 @@ static void do_acct_process(struct file *file) #endif #if ACCT_VERSION==3 ac.ac_pid = current->tgid; - ac.ac_ppid = current->real_parent->tgid; + rcu_read_lock(); + ac.ac_ppid = rcu_dereference(current->real_parent)->tgid; + rcu_read_unlock(); #endif spin_lock_irq(¤t->sighand->siglock);