|
@@ -826,7 +826,7 @@ static int validate_mmap_request(struct file *file,
|
|
int ret;
|
|
int ret;
|
|
|
|
|
|
/* do the simple checks first */
|
|
/* do the simple checks first */
|
|
- if (flags & MAP_FIXED || addr) {
|
|
|
|
|
|
+ if (flags & MAP_FIXED) {
|
|
printk(KERN_DEBUG
|
|
printk(KERN_DEBUG
|
|
"%d: Can't do fixed-address/overlay mmap of RAM\n",
|
|
"%d: Can't do fixed-address/overlay mmap of RAM\n",
|
|
current->pid);
|
|
current->pid);
|
|
@@ -1182,9 +1182,6 @@ unsigned long do_mmap_pgoff(struct file *file,
|
|
|
|
|
|
kenter(",%lx,%lx,%lx,%lx,%lx", addr, len, prot, flags, pgoff);
|
|
kenter(",%lx,%lx,%lx,%lx,%lx", addr, len, prot, flags, pgoff);
|
|
|
|
|
|
- if (!(flags & MAP_FIXED))
|
|
|
|
- addr = round_hint_to_min(addr);
|
|
|
|
-
|
|
|
|
/* decide whether we should attempt the mapping, and if so what sort of
|
|
/* decide whether we should attempt the mapping, and if so what sort of
|
|
* mapping */
|
|
* mapping */
|
|
ret = validate_mmap_request(file, addr, len, prot, flags, pgoff,
|
|
ret = validate_mmap_request(file, addr, len, prot, flags, pgoff,
|
|
@@ -1194,6 +1191,9 @@ unsigned long do_mmap_pgoff(struct file *file,
|
|
return ret;
|
|
return ret;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ /* we ignore the address hint */
|
|
|
|
+ addr = 0;
|
|
|
|
+
|
|
/* we've determined that we can make the mapping, now translate what we
|
|
/* we've determined that we can make the mapping, now translate what we
|
|
* now know into VMA flags */
|
|
* now know into VMA flags */
|
|
vm_flags = determine_vm_flags(file, prot, flags, capabilities);
|
|
vm_flags = determine_vm_flags(file, prot, flags, capabilities);
|