* Copyright (C) 2020-2022 Loongson Technology Corporation Limited
  */
 #include <linux/export.h>
+#include <linux/hugetlb.h>
 #include <linux/io.h>
 #include <linux/kfence.h>
 #include <linux/memblock.h>
        }
 
        info.length = len;
-       info.align_mask = do_color_align ? (PAGE_MASK & SHM_ALIGN_MASK) : 0;
        info.align_offset = pgoff << PAGE_SHIFT;
+       if (filp && is_file_hugepages(filp))
+               info.align_mask = huge_page_mask_align(filp);
+       else
+               info.align_mask = do_color_align ? (PAGE_MASK & SHM_ALIGN_MASK) : 0;
 
        if (dir == DOWN) {
                info.flags = VM_UNMAPPED_AREA_TOPDOWN;