diff options
author | Bharat Nihalani <bnihalani@nvidia.com> | 2014-06-24 15:45:10 +0530 |
---|---|---|
committer | Harshada Kale <hkale@nvidia.com> | 2014-06-26 09:32:29 -0700 |
commit | 72988f78bb521e1c4cfe17c02271d2837a66bf04 (patch) | |
tree | e093814d0600d0e8acba06d9750ca9f2adf63069 /mm | |
parent | 8b0376e7bf00b8b5baad201097217b3b78b3313c (diff) |
mm: Add NULL check before de-referencing vma
This prevents the following crash seen during boot-up:
Unable to handle kernel NULL pointer dereference at virtual address 00000041
pgd = ffffffc037f68000
[00000041] *pgd=0000000000000000
Internal error: Oops: 96000005 [#1] PREEMPT SMP
Modules linked in: inv_bmp180 inv_ak8975 inv_mpu
CPU: 0 PID: 1457 Comm: IntentService[F Not tainted 3.10.40-g4abcb3f #1
task: ffffffc0393e0080 ti: ffffffc0393e8000 task.ti: ffffffc0393e8000
PC is at follow_page_mask+0x1c/0x378
LR is at __get_user_pages.part.88+0x124/0x700
pc : [<ffffffc00016c314>] lr : [<ffffffc00016e1d4>] pstate: 40000045
Bug 1525355
Change-Id: Ieed6942d7beb32964484f97d5cc671b42c4b60cb
Signed-off-by: Bharat Nihalani <bnihalani@nvidia.com>
Reviewed-on: http://git-master/r/427723
Tested-by: Vandana Salve <vsalve@nvidia.com>
Reviewed-by: Krishna Reddy <vdumpa@nvidia.com>
Diffstat (limited to 'mm')
-rw-r--r-- | mm/memory.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/mm/memory.c b/mm/memory.c index 8e101b74df71..07e1987979d9 100644 --- a/mm/memory.c +++ b/mm/memory.c @@ -1485,7 +1485,12 @@ struct page *follow_page_mask(struct vm_area_struct *vma, pte_t *ptep, pte; spinlock_t *ptl; struct page *page; - struct mm_struct *mm = vma->vm_mm; + struct mm_struct *mm; + + if (WARN_ON(!vma)) + return NULL; + + mm = vma->vm_mm; *page_mask = 0; |