diff options
Diffstat (limited to 'drivers/video/vfb.c')
| -rw-r--r-- | drivers/video/vfb.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/video/vfb.c b/drivers/video/vfb.c index 8bc1f9398945..ee5985efa15c 100644 --- a/drivers/video/vfb.c +++ b/drivers/video/vfb.c | |||
| @@ -420,9 +420,12 @@ static int vfb_mmap(struct fb_info *info, | |||
| 420 | unsigned long offset = vma->vm_pgoff << PAGE_SHIFT; | 420 | unsigned long offset = vma->vm_pgoff << PAGE_SHIFT; |
| 421 | unsigned long page, pos; | 421 | unsigned long page, pos; |
| 422 | 422 | ||
| 423 | if (offset + size > info->fix.smem_len) { | 423 | if (vma->vm_pgoff > (~0UL >> PAGE_SHIFT)) |
| 424 | return -EINVAL; | ||
| 425 | if (size > info->fix.smem_len) | ||
| 426 | return -EINVAL; | ||
| 427 | if (offset > info->fix.smem_len - size) | ||
| 424 | return -EINVAL; | 428 | return -EINVAL; |
| 425 | } | ||
| 426 | 429 | ||
| 427 | pos = (unsigned long)info->fix.smem_start + offset; | 430 | pos = (unsigned long)info->fix.smem_start + offset; |
| 428 | 431 | ||
