page_base &= page_level_mask(l);
/*
- * Preemption is now disabled to prevent process switch during
- * single stepping. We can only handle one active kmmio trace
+ * Hold the RCU read lock over single stepping to avoid looking
+ * up the probe and kmmio_fault_page again. The rcu_read_lock_sched()
+ * also disables preemption and prevents process switch during
+ * the single stepping. We can only handle one active kmmio trace
* per cpu, so ensure that we finish it before something else
- * gets to run. We also hold the RCU read lock over single
- * stepping to avoid looking up the probe and kmmio_fault_page
- * again.
+ * gets to run.
*/
- preempt_disable();
rcu_read_lock_sched_notrace();
faultpage = get_kmmio_fault_page(page_base);
no_kmmio:
rcu_read_unlock_sched_notrace();
- preempt_enable_no_resched();
return ret;
}
ctx->active--;
BUG_ON(ctx->active);
rcu_read_unlock_sched_notrace();
- preempt_enable_no_resched();
/*
* if somebody else is singlestepping across a probe point, flags