powerpc/mm: bail out early when flushing TLB page
MMU_NO_CONTEXT is conditionally defined as 0 or (unsigned int)-1. However, in __flush_tlb_page() a corresponding variable is only tested for open coded 0, which can cause NULL pointer dereference if `mm' argument was legitimately passed as such. Bail out early in case the first argument is NULL, thus eliminate confusion between different values of MMU_NO_CONTEXT and avoid disabling and then re-enabling preemption unnecessarily. Signed-off-by: Arseny Solokha <asolokha@kb.kras.ru> Signed-off-by: Scott Wood <scottwood@freescale.com>
This commit is contained in:
parent
c9111a41dc
commit
0dc294f717
@ -284,8 +284,11 @@ void __flush_tlb_page(struct mm_struct *mm, unsigned long vmaddr,
|
|||||||
struct cpumask *cpu_mask;
|
struct cpumask *cpu_mask;
|
||||||
unsigned int pid;
|
unsigned int pid;
|
||||||
|
|
||||||
|
if (unlikely(!mm))
|
||||||
|
return;
|
||||||
|
|
||||||
preempt_disable();
|
preempt_disable();
|
||||||
pid = mm ? mm->context.id : 0;
|
pid = mm->context.id;
|
||||||
if (unlikely(pid == MMU_NO_CONTEXT))
|
if (unlikely(pid == MMU_NO_CONTEXT))
|
||||||
goto bail;
|
goto bail;
|
||||||
cpu_mask = mm_cpumask(mm);
|
cpu_mask = mm_cpumask(mm);
|
||||||
|
Loading…
Reference in New Issue
Block a user