Skip to contentSkip to conversation

Bsd_acct: plain current->real_parent access is not always safe

PATCH In review Pavel Emelyanov 1 participant 1 message Mar 17, 2008

lore
Share & tools
lore
#0 lore raw

PATCH 1/2 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.

---
 kernel/acct.c |    4 +++-
 1 files changed, 3 insertions(+), 1 deletions(-)
kernel/acct.c +3 -1
index 521dfa5..7ff5339 100644
@@ -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(&current->sighand->siglock);
Signature · 1 line
1.5.3.4