]> err.no Git - linux-2.6/commitdiff
[POWERPC] Fix oops related to 4xx flush_tlb_page modification
authorKumar Gala <galak@kernel.crashing.org>
Fri, 9 Nov 2007 09:51:14 +0000 (03:51 -0600)
committerKumar Gala <galak@kernel.crashing.org>
Fri, 9 Nov 2007 09:51:14 +0000 (03:51 -0600)
kmap_atomic calls flush_tlb_page with a NULL VMA and thus we end
up dereferencing a NULL pointer to try and get the context.id.

If the VMA is null use the global pid value of 0.

Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
include/asm-powerpc/tlbflush.h

index e7b4c0d298aecff4ff708d7ef3be46bbb0608dd8..5c91081476441277c968d0f55067442d4cd20640 100644 (file)
@@ -44,13 +44,13 @@ static inline void flush_tlb_mm(struct mm_struct *mm)
 static inline void flush_tlb_page(struct vm_area_struct *vma,
                                  unsigned long vmaddr)
 {
-       _tlbie(vmaddr, vma->vm_mm->context.id);
+       _tlbie(vmaddr, vma ? vma->vm_mm->context.id : 0);
 }
 
 static inline void flush_tlb_page_nohash(struct vm_area_struct *vma,
                                         unsigned long vmaddr)
 {
-       _tlbie(vmaddr, vma->vm_mm->context.id);
+       _tlbie(vmaddr, vma ? vma->vm_mm->context.id : 0);
 }
 
 static inline void flush_tlb_range(struct vm_area_struct *vma,