|
@@ -407,13 +407,8 @@ static unsigned long mremap_to(unsigned long addr, unsigned long old_len,
|
|
|
if (new_len > TASK_SIZE || new_addr > TASK_SIZE - new_len)
|
|
|
goto out;
|
|
|
|
|
|
- /* Check if the location we're moving into overlaps the
|
|
|
- * old location at all, and fail if it does.
|
|
|
- */
|
|
|
- if ((new_addr <= addr) && (new_addr+new_len) > addr)
|
|
|
- goto out;
|
|
|
-
|
|
|
- if ((addr <= new_addr) && (addr+old_len) > new_addr)
|
|
|
+ /* Ensure the old/new locations do not overlap */
|
|
|
+ if (addr + old_len > new_addr && new_addr + new_len > addr)
|
|
|
goto out;
|
|
|
|
|
|
ret = do_munmap(mm, new_addr, new_len);
|