summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@home.osdl.org>2003-07-10 05:46:56 -0700
committerLinus Torvalds <torvalds@home.osdl.org>2003-07-10 05:46:56 -0700
commitee4cad495d0f14155a6f2a3d4b4695db7fa635e0 (patch)
tree342f6d7e1411a4f6b0744a4b014714b32a77d879
parent06dd43c447ac5b1a1f9c66a8346add36dcfe6afa (diff)
Avoid mmap() overflow case if TASK_SIZE is the
full range of an "unsigned long" (sparc64).
-rw-r--r--mm/mmap.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/mm/mmap.c b/mm/mmap.c
index 1052f84a82a2..bcc28864eab6 100644
--- a/mm/mmap.c
+++ b/mm/mmap.c
@@ -476,10 +476,10 @@ unsigned long do_mmap_pgoff(struct file * file, unsigned long addr,
if (!len)
return addr;
- if (len > TASK_SIZE)
- return -EINVAL;
-
+ /* Careful about overflows.. */
len = PAGE_ALIGN(len);
+ if (!len || len > TASK_SIZE)
+ return -EINVAL;
/* offset overflow? */
if ((pgoff + (len >> PAGE_SHIFT)) < pgoff)