Commit 913292c9 authored by Madhuparna Bhowmik's avatar Madhuparna Bhowmik Committed by Christian Brauner
Browse files

sched.h: Annotate sighand_struct with __rcu



This patch fixes the following sparse errors by annotating the
sighand_struct with __rcu

kernel/fork.c:1511:9: error: incompatible types in comparison expression
kernel/exit.c:100:19: error: incompatible types in comparison expression
kernel/signal.c:1370:27: error: incompatible types in comparison expression

This fix introduces the following sparse error in signal.c due to
checking the sighand pointer without rcu primitives:

kernel/signal.c:1386:21: error: incompatible types in comparison expression

This new sparse error is also fixed in this patch.

Signed-off-by: default avatarMadhuparna Bhowmik <madhuparnabhowmik10@gmail.com>
Acked-by: default avatarPaul E. McKenney <paulmck@kernel.org>
Link: https://lore.kernel.org/r/20200124045908.26389-1-madhuparnabhowmik10@gmail.com


Signed-off-by: default avatarChristian Brauner <christian.brauner@ubuntu.com>
parent 873dfd78
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -917,7 +917,7 @@ struct task_struct {

	/* Signal handlers: */
	struct signal_struct		*signal;
	struct sighand_struct		*sighand;
	struct sighand_struct __rcu		*sighand;
	sigset_t			blocked;
	sigset_t			real_blocked;
	/* Restored if set_restore_sigmask() was used: */
+1 −1
Original line number Diff line number Diff line
@@ -1383,7 +1383,7 @@ struct sighand_struct *__lock_task_sighand(struct task_struct *tsk,
		 * must see ->sighand == NULL.
		 */
		spin_lock_irqsave(&sighand->siglock, *flags);
		if (likely(sighand == tsk->sighand))
		if (likely(sighand == rcu_access_pointer(tsk->sighand)))
			break;
		spin_unlock_irqrestore(&sighand->siglock, *flags);
	}