Merge branch 'master' of ssh://git.kernel.dk/data/git/fio
[fio.git] / memory.c
index b208320c5d88cc619f7167626e3b7502ded07799..76da8a86269e859889366c283281815e9ffac1dc 100644 (file)
--- a/memory.c
+++ b/memory.c
@@ -119,7 +119,7 @@ static int alloc_mem_mmap(struct thread_data *td, size_t total_mem)
 {
        int flags = 0;
 
-       td->mmapfd = 1;
+       td->mmapfd = -1;
 
        if (td->o.mem_type == MEM_MMAPHUGE) {
                unsigned long mask = td->o.hugepage_size - 1;
@@ -158,9 +158,10 @@ static int alloc_mem_mmap(struct thread_data *td, size_t total_mem)
        if (td->orig_buffer == MAP_FAILED) {
                td_verror(td, errno, "mmap");
                td->orig_buffer = NULL;
-               if (td->mmapfd) {
+               if (td->mmapfd != 1) {
                        close(td->mmapfd);
-                       unlink(td->o.mmapfile);
+                       if (td->o.mmapfile)
+                               unlink(td->o.mmapfile);
                }
 
                return 1;
@@ -175,7 +176,8 @@ static void free_mem_mmap(struct thread_data *td, size_t total_mem)
                                                td->orig_buffer);
        munmap(td->orig_buffer, td->orig_buffer_size);
        if (td->o.mmapfile) {
-               close(td->mmapfd);
+               if (td->mmapfd != -1)
+                       close(td->mmapfd);
                unlink(td->o.mmapfile);
                free(td->o.mmapfile);
        }