if (fd < 0)
                ksft_exit_fail_perror("Error opening file\n");
 
-       /* Get the free huge pages before allocation */
-       free_hpage_b = get_free_hugepages();
-       if (free_hpage_b == 0) {
-               close(fd);
-               ksft_exit_skip("No free hugepage, exiting!\n");
-       }
-
        /* Allocate a hugetlb page */
        orig_buffer = mmap(NULL, h_pagesize, mmap_prot, mmap_flags, -1, 0);
        if (orig_buffer == MAP_FAILED) {
 int main(void)
 {
        size_t pagesize = 0;
+       int fd;
 
        ksft_print_header();
+
+       /* Open the file to DIO */
+       fd = open("/tmp", O_TMPFILE | O_RDWR | O_DIRECT, 0664);
+       if (fd < 0)
+               ksft_exit_skip("Unable to allocate file: %s\n", strerror(errno));
+       close(fd);
+
+       /* Check if huge pages are free */
+       if (!get_free_hugepages())
+               ksft_exit_skip("No free hugepage, exiting\n");
+
        ksft_set_plan(4);
 
        /* Get base page size */