diff --git a/[refs] b/[refs] index 999c5292143e..52d4ff8b3531 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 3363c9b0ed8f6b5a241d63018cad242ae458cdf9 +refs/heads/master: f81cff0d4067e41fd7383d9c013cc82da7c169d2 diff --git a/trunk/mm/nommu.c b/trunk/mm/nommu.c index 8bdde9508f3b..6a2a8aada401 100644 --- a/trunk/mm/nommu.c +++ b/trunk/mm/nommu.c @@ -497,15 +497,17 @@ static int validate_mmap_request(struct file *file, (flags & MAP_TYPE) != MAP_SHARED) return -EINVAL; - if (PAGE_ALIGN(len) == 0) - return addr; - - if (len > TASK_SIZE) + if (!len) return -EINVAL; + /* Careful about overflows.. */ + len = PAGE_ALIGN(len); + if (!len || len > TASK_SIZE) + return -ENOMEM; + /* offset overflow? */ if ((pgoff + (len >> PAGE_SHIFT)) < pgoff) - return -EINVAL; + return -EOVERFLOW; if (file) { /* validate file mapping requests */