diff options
| author | Linus Torvalds <torvalds@home.osdl.org> | 2003-07-10 05:46:56 -0700 |
|---|---|---|
| committer | Linus Torvalds <torvalds@home.osdl.org> | 2003-07-10 05:46:56 -0700 |
| commit | ee4cad495d0f14155a6f2a3d4b4695db7fa635e0 (patch) | |
| tree | 342f6d7e1411a4f6b0744a4b014714b32a77d879 | |
| parent | 06dd43c447ac5b1a1f9c66a8346add36dcfe6afa (diff) | |
Avoid mmap() overflow case if TASK_SIZE is the
full range of an "unsigned long" (sparc64).
| -rw-r--r-- | mm/mmap.c | 6 |
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) |
