Skip to contentSkip to conversation

Fixes for RCU handling of sighand_struct

PATCH New Paul E. McKenney 1 participant 1 message Nov 1, 2005

Subsystems (4)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 Fixes for RCU handling of sighand_struct

Hello!

Some fixes to RCU usage for sighand_struct, adding a couple of needed rcu_assign_pointer() calls.

Signed-off-by <[email protected]>

---

fs/exec.c +1 -1
diff -urpNa linux-2.6.14-rc5-rt5/fs/exec.c linux-2.6.14-rc5-rt5-sighandRCUfix/fs/exec.c
@@ -777,7 +777,7 @@ no_thread_group:
 		spin_lock(&oldsighand->siglock);
 		spin_lock(&newsighand->siglock);
 
-		current->sighand = newsighand;
+		rcu_assign_pointer(current->sighand, newsighand);
 		recalc_sigpending();
 
 		spin_unlock(&newsighand->siglock);
kernel/fork.c +1 -1
diff -urpNa linux-2.6.14-rc5-rt5/kernel/fork.c linux-2.6.14-rc5-rt5-sighandRCUfix/kernel/fork.c
@@ -816,7 +816,7 @@ static inline int copy_sighand(unsigned 
 		return 0;
 	}
 	sig = kmem_cache_alloc(sighand_cachep, GFP_KERNEL);
-	tsk->sighand = sig;
+	rcu_assign_pointer(tsk->sighand, sig);
 	if (!sig)
 		return -ENOMEM;
 	spin_lock_init(&sig->siglock);