diff --git a/mm/mmap.c b/mm/mmap.c
index 34b280f..131521e 100644
--- a/mm/mmap.c
+++ b/mm/mmap.c
@@ -978,7 +978,6 @@
 	struct mm_struct * mm = current->mm;
 	struct inode *inode;
 	vm_flags_t vm_flags;
-	int error;
 
 	/*
 	 * Does the application expect PROT_READ to imply PROT_EXEC?
@@ -1100,10 +1099,6 @@
 		}
 	}
 
-	error = security_mmap_addr(addr);
-	if (error)
-		return error;
-
 	return mmap_region(file, addr, len, flags, vm_flags, pgoff);
 }
 
@@ -1633,7 +1628,9 @@
 	if (addr & ~PAGE_MASK)
 		return -EINVAL;
 
-	return arch_rebalance_pgtables(addr, len);
+	addr = arch_rebalance_pgtables(addr, len);
+	error = security_mmap_addr(addr);
+	return error ? error : addr;
 }
 
 EXPORT_SYMBOL(get_unmapped_area);
@@ -2210,10 +2207,6 @@
 	if (!len)
 		return addr;
 
-	error = security_mmap_addr(addr);
-	if (error)
-		return error;
-
 	flags = VM_DATA_DEFAULT_FLAGS | VM_ACCOUNT | mm->def_flags;
 
 	error = get_unmapped_area(NULL, addr, len, 0, MAP_FIXED);
@@ -2566,10 +2559,6 @@
 	vma->vm_ops = &special_mapping_vmops;
 	vma->vm_private_data = pages;
 
-	ret = security_mmap_addr(vma->vm_start);
-	if (ret)
-		goto out;
-
 	ret = insert_vm_struct(mm, vma);
 	if (ret)
 		goto out;
diff --git a/mm/mremap.c b/mm/mremap.c
index ebf1089..21fed20 100644
--- a/mm/mremap.c
+++ b/mm/mremap.c
@@ -371,10 +371,6 @@
 	if ((addr <= new_addr) && (addr+old_len) > new_addr)
 		goto out;
 
-	ret = security_mmap_addr(new_addr);
-	if (ret)
-		goto out;
-
 	ret = do_munmap(mm, new_addr, new_len);
 	if (ret)
 		goto out;
@@ -532,9 +528,6 @@
 			goto out;
 		}
 
-		ret = security_mmap_addr(new_addr);
-		if (ret)
-			goto out;
 		ret = move_vma(vma, addr, old_len, new_len, new_addr);
 	}
 out:
