diff --git a/drivers/gpu/msm/kgsl_sharedmem.c b/drivers/gpu/msm/kgsl_sharedmem.c index 76d51be3834c..ce05655c1687 100644 --- a/drivers/gpu/msm/kgsl_sharedmem.c +++ b/drivers/gpu/msm/kgsl_sharedmem.c @@ -366,8 +366,12 @@ static vm_fault_t kgsl_paged_vmfault(struct kgsl_memdesc *memdesc, struct vm_fault *vmf) { int pgoff; + unsigned int offset = vmf->address - vma->vm_start; - pgoff = (vmf->address - vma->vm_start) >> PAGE_SHIFT; + if (offset >= memdesc->size) + return VM_FAULT_SIGBUS; + + pgoff = offset >> PAGE_SHIFT; return vmf_insert_page(vma, vmf->address, memdesc->pages[pgoff]); }