diff --git a/ipc/shm.c b/ipc/shm.c
index 9162123a7b23c348aca8669c56ea56bfbeacadb6..16fe2786087d003881b76df50a192cafbe8e2b1a 100644
--- a/ipc/shm.c
+++ b/ipc/shm.c
@@ -814,6 +814,9 @@ asmlinkage long sys_shmdt(char __user *shmaddr)
 	loff_t size = 0;
 	int retval = -EINVAL;
 
+	if (addr & ~PAGE_MASK)
+		return retval;
+
 	down_write(&mm->mmap_sem);
 
 	/*