diff --git a/kernel/sched/core.c b/kernel/sched/core.c
index ea2213b07d9d..4adcd237c545 100644
--- a/kernel/sched/core.c
+++ b/kernel/sched/core.c
@@ -3570,6 +3570,7 @@ asmlinkage void __sched preempt_schedule_irq(void)
 	/* Catch callers which need to be fixed */
 	BUG_ON(ti->preempt_count || !irqs_disabled());
 
+	rcu_user_exit();
 	do {
 		add_preempt_count(PREEMPT_ACTIVE);
 		local_irq_enable();