Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1666311

[RFC] rcu: use killable versions of swait

From "Luis R. Rodriguez" <mcgrof@kernel.org>
Newsgroups linux.kernel
Subject [RFC] rcu: use killable versions of swait
Date 2017-06-15 01:10 +0200
Message-ID <tSpAd-34c-7@gated-at.bofh.it> (permalink)
Organization linux.* mail to news gateway

Show all headers | View raw


These waits don't even check for the return value for interruption,
using the non-killable variants means we could be killed by other
signals than SIGKILL, this is fragile.

Signed-off-by: Luis R. Rodriguez <mcgrof@kernel.org>
---

The killable swaits were just posted [1] as part of a series where SIGCHLD
was detected as interrupting and killing kernel calls waiting using
non-killable swaits [1]. The fragility here made curious about other callers
and seeing if they really meant to use such broad wait which captures a lot
of signals.

I can't see why we'd want to have these killed by other signals, specialy
since it seems we don't even check for the return value... Granted to abort
properly we'd have to check for the return value for -ERESTARTSYS, but yeah,
none of this is done, so it would seem we don't want fragile signals
interrupting these ?

Also can someone confirm if the original change of to swait_event_timeout()
from wait_event_interruptible_timeout() was actually intentional on
synchronize_sched_expedited_wait() on commit abedf8e2419fb ("rcu: Use simple
wait queues where possible in rcutree") ? I can't easily confirm.

[0] https://lkml.kernel.org/r/20170614222017.14653-3-mcgrof@kernel.org
[1] https://lkml.kernel.org/r/20170614222017.14653-1-mcgrof@kernel.org

 kernel/rcu/tree.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c
index 695fee7cafe0..9a8d06486a3c 100644
--- a/kernel/rcu/tree.c
+++ b/kernel/rcu/tree.c
@@ -2191,7 +2191,7 @@ static int __noreturn rcu_gp_kthread(void *arg)
 					       READ_ONCE(rsp->gpnum),
 					       TPS("reqwait"));
 			rsp->gp_state = RCU_GP_WAIT_GPS;
-			swait_event_interruptible(rsp->gp_wq,
+			swait_event_killable(rsp->gp_wq,
 						 READ_ONCE(rsp->gp_flags) &
 						 RCU_GP_FLAG_INIT);
 			rsp->gp_state = RCU_GP_DONE_GPS;
@@ -2224,7 +2224,7 @@ static int __noreturn rcu_gp_kthread(void *arg)
 					       READ_ONCE(rsp->gpnum),
 					       TPS("fqswait"));
 			rsp->gp_state = RCU_GP_WAIT_FQS;
-			ret = swait_event_interruptible_timeout(rsp->gp_wq,
+			ret = swait_event_killable_timeout(rsp->gp_wq,
 					rcu_gp_fqs_check_wake(rsp, &gf), j);
 			rsp->gp_state = RCU_GP_DOING_FQS;
 			/* Locking provides needed memory barriers. */
-- 
2.11.0

Back to linux.kernel | Previous | NextNext in thread | Find similar | Unroll thread


Thread

[RFC] rcu: use killable versions of swait "Luis R. Rodriguez" <mcgrof@kernel.org> - 2017-06-15 01:10 +0200
  Re: [RFC] rcu: use killable versions of swait "Paul E. McKenney" <paulmck@linux.vnet.ibm.com> - 2017-06-15 01:50 +0200
    Re: [RFC] rcu: use killable versions of swait "Luis R. Rodriguez" <mcgrof@kernel.org> - 2017-06-15 18:00 +0200
      Re: [RFC] rcu: use killable versions of swait "Paul E. McKenney" <paulmck@linux.vnet.ibm.com> - 2017-06-15 18:30 +0200
        Re: [RFC] rcu: use killable versions of swait "Luis R. Rodriguez" <mcgrof@kernel.org> - 2017-06-15 18:40 +0200
          Re: [RFC] rcu: use killable versions of swait ebiederm@xmission.com (Eric W. Biederman) - 2017-06-15 19:10 +0200
            [RFC v2 0/2] swait: add idle to make idle-hacks on kthreads explicit "Luis R. Rodriguez" <mcgrof@kernel.org> - 2017-06-15 20:50 +0200
              [RFC v2 1/2] swait: add idle variants which don't contribute to load average "Luis R. Rodriguez" <mcgrof@kernel.org> - 2017-06-15 20:50 +0200
                Re: [RFC v2 1/2] swait: add idle variants which don't contribute to  load average Boqun Feng <boqun.feng@gmail.com> - 2017-06-16 02:50 +0200
                Re: [RFC v2 1/2] swait: add idle variants which don't contribute to load average ebiederm@xmission.com (Eric W. Biederman) - 2017-06-16 22:40 +0200
                Re: [RFC v2 1/2] swait: add idle variants which don't contribute to  load average "Paul E. McKenney" <paulmck@linux.vnet.ibm.com> - 2017-06-19 20:00 +0200
              [RFC v2 2/2] rcu: use idle versions of swait to make idle-hack clear "Luis R. Rodriguez" <mcgrof@kernel.org> - 2017-06-15 20:50 +0200
              Re: [RFC v2 0/2] swait: add idle to make idle-hacks on kthreads  explicit "Paul E. McKenney" <paulmck@linux.vnet.ibm.com> - 2017-06-16 00:00 +0200
                Re: [RFC v2 0/2] swait: add idle to make idle-hacks on kthreads  explicit "Luis R. Rodriguez" <mcgrof@kernel.org> - 2017-06-16 01:30 +0200
                Re: [RFC v2 0/2] swait: add idle to make idle-hacks on kthreads  explicit "Paul E. McKenney" <paulmck@linux.vnet.ibm.com> - 2017-06-16 01:50 +0200
                Re: [RFC v2 0/2] swait: add idle to make idle-hacks on kthreads explicit ebiederm@xmission.com (Eric W. Biederman) - 2017-06-16 22:50 +0200
                Re: [RFC v2 0/2] swait: add idle to make idle-hacks on kthreads  explicit "Paul E. McKenney" <paulmck@linux.vnet.ibm.com> - 2017-06-19 20:00 +0200
          Re: [RFC] rcu: use killable versions of swait "Paul E. McKenney" <paulmck@linux.vnet.ibm.com> - 2017-06-15 19:40 +0200

csiph-web