Before attempting to start a new batch the "monitor_todo" variable is
set to "false" and set back to "true" when a previous RCU batch is still
in progress.  This is at best confusing.
Thus change this variable to "false" only when a new batch has been
successfully queued, otherwise, just leave it be.
Signed-off-by: Uladzislau Rezki (Sony) <urezki@gmail.com>
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
                                          unsigned long flags)
 {
        // Attempt to start a new batch.
-       krcp->monitor_todo = false;
        if (queue_kfree_rcu_work(krcp)) {
                // Success! Our job is done here.
+               krcp->monitor_todo = false;
                raw_spin_unlock_irqrestore(&krcp->lock, flags);
                return;
        }
 
        // Previous RCU batch still in progress, try again later.
-       krcp->monitor_todo = true;
        schedule_delayed_work(&krcp->monitor_work, KFREE_DRAIN_JIFFIES);
        raw_spin_unlock_irqrestore(&krcp->lock, flags);
 }