diff --git a/kernel/events/uprobes.c b/kernel/events/uprobes.c
index 649fd53dc9ad047d24144e61275cfb9bd124e9d8..0e18aaf23a7b48c5d28739e78bb1b1d5b00f7978 100644
--- a/kernel/events/uprobes.c
+++ b/kernel/events/uprobes.c
@@ -205,7 +205,7 @@ static int __replace_page(struct vm_area_struct *vma, unsigned long addr,
 		try_to_free_swap(old_page);
 	page_vma_mapped_walk_done(&pvmw);
 
-	if (vma->vm_flags & VM_LOCKED)
+	if ((vma->vm_flags & VM_LOCKED) && !PageCompound(old_page))
 		munlock_vma_page(old_page);
 	put_page(old_page);