diff --git a/mm/madvise.c b/mm/madvise.c
index 972a9eaa898b6ad889a4647ed207ad82bd5d0f4b..71d21df2a3f362cc370c8ff158fb03dfa9d2d03c 100644
--- a/mm/madvise.c
+++ b/mm/madvise.c
@@ -96,7 +96,7 @@ static long madvise_behavior(struct vm_area_struct *vma,
 		new_flags |= VM_DONTDUMP;
 		break;
 	case MADV_DODUMP:
-		if (new_flags & VM_SPECIAL) {
+		if (!is_vm_hugetlb_page(vma) && new_flags & VM_SPECIAL) {
 			error = -EINVAL;
 			goto out;
 		}