mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-24 17:23:25 -05:00
arch, mm: Allow arch_dup_mmap() to fail
In order to sanitize the LDT initialization on x86 arch_dup_mmap() must be allowed to fail. Fix up all instances. Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org> Cc: Andy Lutomirski <luto@kernel.org> Cc: Andy Lutomirsky <luto@kernel.org> Cc: Boris Ostrovsky <boris.ostrovsky@oracle.com> Cc: Borislav Petkov <bp@alien8.de> Cc: Borislav Petkov <bpetkov@suse.de> Cc: Brian Gerst <brgerst@gmail.com> Cc: Dave Hansen <dave.hansen@intel.com> Cc: Dave Hansen <dave.hansen@linux.intel.com> Cc: David Laight <David.Laight@aculab.com> Cc: Denys Vlasenko <dvlasenk@redhat.com> Cc: Eduardo Valentin <eduval@amazon.com> Cc: Greg KH <gregkh@linuxfoundation.org> Cc: H. Peter Anvin <hpa@zytor.com> Cc: Josh Poimboeuf <jpoimboe@redhat.com> Cc: Juergen Gross <jgross@suse.com> Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Will Deacon <will.deacon@arm.com> Cc: aliguori@amazon.com Cc: dan.j.williams@intel.com Cc: hughd@google.com Cc: keescook@google.com Cc: kirill.shutemov@linux.intel.com Cc: linux-mm@kvack.org Signed-off-by: Ingo Molnar <mingo@kernel.org>
This commit is contained in:
parent
4831b77940
commit
c10e83f598
6 changed files with 14 additions and 11 deletions
|
@ -114,9 +114,10 @@ static inline void enter_lazy_tlb(struct mm_struct *mm,
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void arch_dup_mmap(struct mm_struct *oldmm,
|
static inline int arch_dup_mmap(struct mm_struct *oldmm,
|
||||||
struct mm_struct *mm)
|
struct mm_struct *mm)
|
||||||
{
|
{
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void arch_exit_mmap(struct mm_struct *mm)
|
static inline void arch_exit_mmap(struct mm_struct *mm)
|
||||||
|
|
|
@ -15,9 +15,10 @@ extern void uml_setup_stubs(struct mm_struct *mm);
|
||||||
/*
|
/*
|
||||||
* Needed since we do not use the asm-generic/mm_hooks.h:
|
* Needed since we do not use the asm-generic/mm_hooks.h:
|
||||||
*/
|
*/
|
||||||
static inline void arch_dup_mmap(struct mm_struct *oldmm, struct mm_struct *mm)
|
static inline int arch_dup_mmap(struct mm_struct *oldmm, struct mm_struct *mm)
|
||||||
{
|
{
|
||||||
uml_setup_stubs(mm);
|
uml_setup_stubs(mm);
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
extern void arch_exit_mmap(struct mm_struct *mm);
|
extern void arch_exit_mmap(struct mm_struct *mm);
|
||||||
static inline void arch_unmap(struct mm_struct *mm,
|
static inline void arch_unmap(struct mm_struct *mm,
|
||||||
|
|
|
@ -81,9 +81,10 @@ do { \
|
||||||
} \
|
} \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
static inline void arch_dup_mmap(struct mm_struct *oldmm,
|
static inline int arch_dup_mmap(struct mm_struct *oldmm,
|
||||||
struct mm_struct *mm)
|
struct mm_struct *mm)
|
||||||
{
|
{
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void arch_unmap(struct mm_struct *mm,
|
static inline void arch_unmap(struct mm_struct *mm,
|
||||||
|
|
|
@ -176,10 +176,10 @@ do { \
|
||||||
} while (0)
|
} while (0)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static inline void arch_dup_mmap(struct mm_struct *oldmm,
|
static inline int arch_dup_mmap(struct mm_struct *oldmm, struct mm_struct *mm)
|
||||||
struct mm_struct *mm)
|
|
||||||
{
|
{
|
||||||
paravirt_arch_dup_mmap(oldmm, mm);
|
paravirt_arch_dup_mmap(oldmm, mm);
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void arch_exit_mmap(struct mm_struct *mm)
|
static inline void arch_exit_mmap(struct mm_struct *mm)
|
||||||
|
|
|
@ -7,9 +7,10 @@
|
||||||
#ifndef _ASM_GENERIC_MM_HOOKS_H
|
#ifndef _ASM_GENERIC_MM_HOOKS_H
|
||||||
#define _ASM_GENERIC_MM_HOOKS_H
|
#define _ASM_GENERIC_MM_HOOKS_H
|
||||||
|
|
||||||
static inline void arch_dup_mmap(struct mm_struct *oldmm,
|
static inline int arch_dup_mmap(struct mm_struct *oldmm,
|
||||||
struct mm_struct *mm)
|
struct mm_struct *mm)
|
||||||
{
|
{
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void arch_exit_mmap(struct mm_struct *mm)
|
static inline void arch_exit_mmap(struct mm_struct *mm)
|
||||||
|
|
|
@ -721,8 +721,7 @@ static __latent_entropy int dup_mmap(struct mm_struct *mm,
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
/* a new mm has just been created */
|
/* a new mm has just been created */
|
||||||
arch_dup_mmap(oldmm, mm);
|
retval = arch_dup_mmap(oldmm, mm);
|
||||||
retval = 0;
|
|
||||||
out:
|
out:
|
||||||
up_write(&mm->mmap_sem);
|
up_write(&mm->mmap_sem);
|
||||||
flush_tlb_mm(oldmm);
|
flush_tlb_mm(oldmm);
|
||||||
|
|
Loading…
Add table
Reference in a new issue