diff options
| -rw-r--r-- | mm/fremap.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/mm/fremap.c b/mm/fremap.c index 7b7f852848de..ec520c7b28df 100644 --- a/mm/fremap.c +++ b/mm/fremap.c | |||
| @@ -141,6 +141,10 @@ SYSCALL_DEFINE5(remap_file_pages, unsigned long, start, unsigned long, size, | |||
| 141 | if (start + size <= start) | 141 | if (start + size <= start) |
| 142 | return err; | 142 | return err; |
| 143 | 143 | ||
| 144 | /* Does pgoff wrap? */ | ||
| 145 | if (pgoff + (size >> PAGE_SHIFT) < pgoff) | ||
| 146 | return err; | ||
| 147 | |||
| 144 | /* Can we represent this offset inside this architecture's pte's? */ | 148 | /* Can we represent this offset inside this architecture's pte's? */ |
| 145 | #if PTE_FILE_MAX_BITS < BITS_PER_LONG | 149 | #if PTE_FILE_MAX_BITS < BITS_PER_LONG |
| 146 | if (pgoff + (size >> PAGE_SHIFT) >= (1UL << PTE_FILE_MAX_BITS)) | 150 | if (pgoff + (size >> PAGE_SHIFT) >= (1UL << PTE_FILE_MAX_BITS)) |
