Fix memory overflow with > 64 byte options
[fio.git] / memory.c
index be664c9c22a40285cd07c6f7f69da120408618d7..8d6f95579a3366cb633226237965c5de971243e4 100644 (file)
--- a/memory.c
+++ b/memory.c
@@ -72,6 +72,8 @@ int allocate_io_mem(struct thread_data *td)
                        td_verror(td, errno, "shmget");
                        if (geteuid() != 0 && errno == ENOMEM)
                                log_err("fio: you may need to run this job as root\n");
+                       if (errno == EINVAL && td->o.mem_type == MEM_SHMHUGE)
+                               log_err("fio: check that you have free huge pages and that hugepage-size is correct.\n");
                        
                        return 1;
                }
@@ -96,6 +98,11 @@ int allocate_io_mem(struct thread_data *td)
                                td->orig_buffer = NULL;
                                return 1;
                        }
+                       if (ftruncate(td->mmapfd, td->orig_buffer_size) < 0) {
+                               td_verror(td, errno, "truncate mmap file");
+                               td->orig_buffer = NULL;
+                               return 1;
+                       }
                } else
                        flags |= OS_MAP_ANON;