diff options
| -rw-r--r-- | drivers/video/fbdev/omap2/omapfb/omapfb-ioctl.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/video/fbdev/omap2/omapfb/omapfb-ioctl.c b/drivers/video/fbdev/omap2/omapfb/omapfb-ioctl.c index ef69273074ba..a3edb20ea4c3 100644 --- a/drivers/video/fbdev/omap2/omapfb/omapfb-ioctl.c +++ b/drivers/video/fbdev/omap2/omapfb/omapfb-ioctl.c | |||
| @@ -496,6 +496,9 @@ static int omapfb_memory_read(struct fb_info *fbi, | |||
| 496 | if (!access_ok(VERIFY_WRITE, mr->buffer, mr->buffer_size)) | 496 | if (!access_ok(VERIFY_WRITE, mr->buffer, mr->buffer_size)) |
| 497 | return -EFAULT; | 497 | return -EFAULT; |
| 498 | 498 | ||
| 499 | if (mr->w > 4096 || mr->h > 4096) | ||
| 500 | return -EINVAL; | ||
| 501 | |||
| 499 | if (mr->w * mr->h * 3 > mr->buffer_size) | 502 | if (mr->w * mr->h * 3 > mr->buffer_size) |
| 500 | return -EINVAL; | 503 | return -EINVAL; |
| 501 | 504 | ||
| @@ -509,7 +512,7 @@ static int omapfb_memory_read(struct fb_info *fbi, | |||
| 509 | mr->x, mr->y, mr->w, mr->h); | 512 | mr->x, mr->y, mr->w, mr->h); |
| 510 | 513 | ||
| 511 | if (r > 0) { | 514 | if (r > 0) { |
| 512 | if (copy_to_user(mr->buffer, buf, mr->buffer_size)) | 515 | if (copy_to_user(mr->buffer, buf, r)) |
| 513 | r = -EFAULT; | 516 | r = -EFAULT; |
| 514 | } | 517 | } |
| 515 | 518 | ||
