<div dir="ltr"><br><div class="gmail_extra"><br><br><div class="gmail_quote">On Tue, Mar 11, 2014 at 11:03 AM, Iulia Manda <span dir="ltr"><<a href="mailto:iulia.manda21@gmail.com" target="_blank">iulia.manda21@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Protect use of jiffies_stall in tree.c and also some warnings from <a href="http://checkpatch.pl" target="_blank">checkpatch.pl</a>.<br>

<br>
Signed-off-by: Iulia Manda <<a href="mailto:iulia.manda21@gmail.com">iulia.manda21@gmail.com</a>><br>
---<br>
 kernel/rcu/tree.c |   24 +++++++++++++-----------<br>
 1 file changed, 13 insertions(+), 11 deletions(-)<br>
<br>
diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c<br>
index b3d116c..2090a94 100644<br>
--- a/kernel/rcu/tree.c<br>
+++ b/kernel/rcu/tree.c<br>
@@ -195,7 +195,8 @@ void rcu_sched_qs(int cpu)<br>
        struct rcu_data *rdp = &per_cpu(rcu_sched_data, cpu);<br>
<br>
        if (rdp->passed_quiesce == 0)<br>
-               trace_rcu_grace_period(TPS("rcu_sched"), rdp->gpnum, TPS("cpuqs"));<br>
+               trace_rcu_grace_period(TPS("rcu_sched"),<br>
+                       rdp->gpnum, TPS("cpuqs"));<br>
        rdp->passed_quiesce = 1;<br>
 }<br>
<br>
@@ -377,7 +378,8 @@ static void rcu_eqs_enter_common(struct rcu_dynticks *rdtp, long long oldval,<br>
                struct task_struct *idle __maybe_unused =<br>
                        idle_task(smp_processor_id());<br>
<br>
-               trace_rcu_dyntick(TPS("Error on entry: not idle task"), oldval, 0);<br>
+               trace_rcu_dyntick(TPS("Error on entry: not idle task"),<br>
+                       oldval, 0);<br>
                ftrace_dump(DUMP_ORIG);<br>
                WARN_ONCE(1, "Current pid: %d comm: %s / Idle pid: %d comm: %s",<br>
                          current->pid, current->comm,<br>
@@ -767,7 +769,6 @@ static int dyntick_save_progress_counter(struct rcu_data *rdp,<br>
  * This function really isn't for public consumption, but RCU is special in<br>
  * that context switches can allow the state machine to make progress.<br>
  */<br>
-extern void resched_cpu(int cpu);<br>
<br>
 /*<br>
  * Return true if the specified CPU has passed through a quiescent<br>
@@ -853,7 +854,7 @@ static void record_gp_stall_check_time(struct rcu_state *rsp)<br>
        rsp->gp_start = j;<br>
        smp_wmb(); /* Record start time before stall time. */<br>
        j1 = rcu_jiffies_till_stall_check();<br>
-       rsp->jiffies_stall = j + j1;<br>
+       ACCESS_ONCE(rsp->jiffies_stall) = j + j1;<br>
        rsp->jiffies_resched = j + j1 / 2;<br>
 }<br>
<br>
@@ -892,12 +893,13 @@ static void print_other_cpu_stall(struct rcu_state *rsp)<br>
        /* Only let one CPU complain about others per time interval. */<br>
<br>
        raw_spin_lock_irqsave(&rnp->lock, flags);<br>
-       delta = jiffies - rsp->jiffies_stall;<br>
+       delta = jiffies - ACCESS_ONCE(rsp->jiffies_stall);<br>
        if (delta < RCU_STALL_RAT_DELAY || !rcu_gp_in_progress(rsp)) {<br>
                raw_spin_unlock_irqrestore(&rnp->lock, flags);<br>
                return;<br>
        }<br>
-       rsp->jiffies_stall = jiffies + 3 * rcu_jiffies_till_stall_check() + 3;<br>
+       rsp->jiffies_stall = jiffies +<br>
+               3 * rcu_jiffies_till_stall_check() + 3;<br>
        raw_spin_unlock_irqrestore(&rnp->lock, flags);<br>
<br>
        /*<br>
@@ -953,7 +955,6 @@ static void print_other_cpu_stall(struct rcu_state *rsp)<br>
  * This function really isn't for public consumption, but RCU is special in<br>
  * that context switches can allow the state machine to make progress.<br>
  */<br>
-extern void resched_cpu(int cpu);<br>
<br>
 static void print_cpu_stall(struct rcu_state *rsp)<br>
 {<br>
@@ -979,8 +980,8 @@ static void print_cpu_stall(struct rcu_state *rsp)<br>
                dump_stack();<br>
<br>
        raw_spin_lock_irqsave(&rnp->lock, flags);<br>
-       if (ULONG_CMP_GE(jiffies, rsp->jiffies_stall))<br>
-               rsp->jiffies_stall = jiffies +<br>
+       if (ULONG_CMP_GE(jiffies, ACCESS_ONCE(rsp->jiffies_stall)))<br>
+               ACCESS_ONCE(rsp->jiffies_stall) = jiffies +<br>
                                     3 * rcu_jiffies_till_stall_check() + 3;<br>
        raw_spin_unlock_irqrestore(&rnp->lock, flags);<br>
<br>
@@ -1064,7 +1065,7 @@ void rcu_cpu_stall_reset(void)<br>
        struct rcu_state *rsp;<br>
<br>
        for_each_rcu_flavor(rsp)<br>
-               rsp->jiffies_stall = jiffies + ULONG_MAX / 2;<br>
+               ACCESS_ONCE(rsp->jiffies_stall) = jiffies + ULONG_MAX / 2;<br>
 }<br>
<br>
 /*<br>
@@ -1293,7 +1294,8 @@ static void rcu_accelerate_cbs(struct rcu_state *rsp, struct rcu_node *rnp,<br>
        if (!*rdp->nxttail[RCU_WAIT_TAIL])<br>
                trace_rcu_grace_period(rsp->name, rdp->gpnum, TPS("AccWaitCB"));<br>
        else<br>
-               trace_rcu_grace_period(rsp->name, rdp->gpnum, TPS("AccReadyCB"));<br>
+               trace_rcu_grace_period(rsp->name, rdp->gpnum,<br>
+                       TPS("AccReadyCB"));<br>
 }<br>
<br>
 /*<br><span class="HOEnZb"><font color="#888888"><br></font></span></blockquote><div><br></div><div>Hi,</div><div><br></div><div>A patch should focus on one thing only. Thus, you can't add jiffies_stall protection and fix <a href="http://checkpatch.pl">checkpatch.pl</a> in the same patch. Please split them accordingly.</div>
<div><br></div><div>As a side note, when working on <a href="http://checkpatch.pl">checkpatch.pl</a>, it's recommended that you either:</div><div>a) fix one type of error - only trailing whitespaces or split lines over 80 characters</div>
<div>b) fix everything in the given file :)</div><div><br></div><div>Same goes for sparse errors such as functions that should be declared as static.</div><div><br></div><div>Thanks,</div><div>Valentina</div></div><br></div>
</div>