aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--kernel/sched/core.c7
-rw-r--r--net/core/dev.c4
2 files changed, 6 insertions, 5 deletions
diff --git a/kernel/sched/core.c b/kernel/sched/core.c
index 218b93a31000..c62dbf9eebdf 100644
--- a/kernel/sched/core.c
+++ b/kernel/sched/core.c
@@ -5702,11 +5702,8 @@ void idle_task_exit(void)
switch_mm(mm, &init_mm, current);
finish_arch_post_lock_switch();
}
- /*
- * Defer the cleanup to an alive cpu. On RT we can neither
- * call mmdrop() nor mmdrop_delayed() from here.
- */
- per_cpu(idle_last_mm, smp_processor_id()) = mm;
+
+ /* finish_cpu(), as ran on the BP, will clean up the active_mm state */
}
/*
diff --git a/net/core/dev.c b/net/core/dev.c
index 6f7e36ef026b..17343961fa24 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -3834,7 +3834,11 @@ static int __dev_queue_xmit(struct sk_buff *skb, struct net_device *sb_dev)
if (dev->flags & IFF_UP) {
int cpu = smp_processor_id(); /* ok because BHs are off */
+#ifdef CONFIG_PREEMPT_RT_FULL
+ if (txq->xmit_lock_owner != current) {
+#else
if (txq->xmit_lock_owner != cpu) {
+#endif
if (dev_xmit_recursion())
goto recursion_alert;