mirror of
https://github.com/torvalds/linux.git
synced 2024-12-26 12:52:30 +00:00
livepatch: Replace synchronize_sched() with synchronize_rcu()
Now that synchronize_rcu() waits for preempt-disable regions of code as well as RCU read-side critical sections, synchronize_sched() can be replaced by synchronize_rcu(). This commit therefore makes this change, even though it is but a comment. Signed-off-by: Paul E. McKenney <paulmck@linux.ibm.com>
This commit is contained in:
parent
2af3024cd7
commit
6932689e41
@ -61,7 +61,7 @@ static void notrace klp_ftrace_handler(unsigned long ip,
|
|||||||
ops = container_of(fops, struct klp_ops, fops);
|
ops = container_of(fops, struct klp_ops, fops);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* A variant of synchronize_sched() is used to allow patching functions
|
* A variant of synchronize_rcu() is used to allow patching functions
|
||||||
* where RCU is not watching, see klp_synchronize_transition().
|
* where RCU is not watching, see klp_synchronize_transition().
|
||||||
*/
|
*/
|
||||||
preempt_disable_notrace();
|
preempt_disable_notrace();
|
||||||
@ -72,7 +72,7 @@ static void notrace klp_ftrace_handler(unsigned long ip,
|
|||||||
/*
|
/*
|
||||||
* func should never be NULL because preemption should be disabled here
|
* func should never be NULL because preemption should be disabled here
|
||||||
* and unregister_ftrace_function() does the equivalent of a
|
* and unregister_ftrace_function() does the equivalent of a
|
||||||
* synchronize_sched() before the func_stack removal.
|
* synchronize_rcu() before the func_stack removal.
|
||||||
*/
|
*/
|
||||||
if (WARN_ON_ONCE(!func))
|
if (WARN_ON_ONCE(!func))
|
||||||
goto unlock;
|
goto unlock;
|
||||||
|
@ -52,7 +52,7 @@ static DECLARE_DELAYED_WORK(klp_transition_work, klp_transition_work_fn);
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* This function is just a stub to implement a hard force
|
* This function is just a stub to implement a hard force
|
||||||
* of synchronize_sched(). This requires synchronizing
|
* of synchronize_rcu(). This requires synchronizing
|
||||||
* tasks even in userspace and idle.
|
* tasks even in userspace and idle.
|
||||||
*/
|
*/
|
||||||
static void klp_sync(struct work_struct *work)
|
static void klp_sync(struct work_struct *work)
|
||||||
@ -175,7 +175,7 @@ void klp_cancel_transition(void)
|
|||||||
void klp_update_patch_state(struct task_struct *task)
|
void klp_update_patch_state(struct task_struct *task)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
* A variant of synchronize_sched() is used to allow patching functions
|
* A variant of synchronize_rcu() is used to allow patching functions
|
||||||
* where RCU is not watching, see klp_synchronize_transition().
|
* where RCU is not watching, see klp_synchronize_transition().
|
||||||
*/
|
*/
|
||||||
preempt_disable_notrace();
|
preempt_disable_notrace();
|
||||||
|
Loading…
Reference in New Issue
Block a user