diff options
| author | 2017-10-12 11:02:50 +0200 | |
|---|---|---|
| committer | 2017-10-12 11:02:50 +0200 | |
| commit | 331b57d14829c49d75076779cdc54d7e4537bbf0 (patch) | |
| tree | 79a70eadb04ed2fd65d3280021ec6ad5266d1cc1 /kernel/fork.c | |
| parent | x86/apic: Fix spelling mistake: "symmectic" -> "symmetric" (diff) | |
| parent | genirq/cpuhotplug: Enforce affinity setting on startup of managed irqs (diff) | |
Merge branch 'irq/urgent' into x86/apic
Pick up core changes which affect the vector rework.
Diffstat (limited to 'kernel/fork.c')
| -rw-r--r-- | kernel/fork.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/kernel/fork.c b/kernel/fork.c index 10646182440f..e702cb9ffbd8 100644 --- a/kernel/fork.c +++ b/kernel/fork.c @@ -946,6 +946,24 @@ void mmput(struct mm_struct *mm) } EXPORT_SYMBOL_GPL(mmput); +#ifdef CONFIG_MMU +static void mmput_async_fn(struct work_struct *work) +{ + struct mm_struct *mm = container_of(work, struct mm_struct, + async_put_work); + + __mmput(mm); +} + +void mmput_async(struct mm_struct *mm) +{ + if (atomic_dec_and_test(&mm->mm_users)) { + INIT_WORK(&mm->async_put_work, mmput_async_fn); + schedule_work(&mm->async_put_work); + } +} +#endif + /** * set_mm_exe_file - change a reference to the mm's executable file * |
