mirror of
https://github.com/tbsdtv/linux_media.git
synced 2025-07-23 12:43:29 +02:00
Merge tag 'powerpc-6.4-5' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux
Pull powerpc fix from Michael Ellerman: - Disable IRQs when switching mm in exit_lazy_flush_tlb() called from exit_mmap() Thanks to Nicholas Piggin and Sachin Sant. * tag 'powerpc-6.4-5' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux: powerpc/64s/radix: Fix exit lazy tlb mm switch with irqs enabled
This commit is contained in:
@@ -795,12 +795,20 @@ void exit_lazy_flush_tlb(struct mm_struct *mm, bool always_flush)
|
||||
goto out;
|
||||
|
||||
if (current->active_mm == mm) {
|
||||
unsigned long flags;
|
||||
|
||||
WARN_ON_ONCE(current->mm != NULL);
|
||||
/* Is a kernel thread and is using mm as the lazy tlb */
|
||||
/*
|
||||
* It is a kernel thread and is using mm as the lazy tlb, so
|
||||
* switch it to init_mm. This is not always called from IPI
|
||||
* (e.g., flush_type_needed), so must disable irqs.
|
||||
*/
|
||||
local_irq_save(flags);
|
||||
mmgrab_lazy_tlb(&init_mm);
|
||||
current->active_mm = &init_mm;
|
||||
switch_mm_irqs_off(mm, &init_mm, current);
|
||||
mmdrop_lazy_tlb(mm);
|
||||
local_irq_restore(flags);
|
||||
}
|
||||
|
||||
/*
|
||||
|
Reference in New Issue
Block a user