diff options
-rw-r--r-- | kernel/sched/core.c | 7 | ||||
-rw-r--r-- | net/core/dev.c | 4 |
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; |