malloc memory still needs to be aligned, if we are doing direct IO

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
diff --git a/fio.c b/fio.c
index 94da6b4..ead118e 100644
--- a/fio.c
+++ b/fio.c
@@ -629,8 +629,6 @@
 
 	if (td->o.mem_type == MEM_SHMHUGE || td->o.mem_type == MEM_MMAPHUGE)
 		td->orig_buffer_size = (td->orig_buffer_size + td->o.hugepage_size - 1) & ~(td->o.hugepage_size - 1);
-	else if (td->orig_buffer_size & page_mask)
-		td->orig_buffer_size = (td->orig_buffer_size + page_mask) & ~page_mask;
 
 	if (td->orig_buffer_size != (size_t) td->orig_buffer_size) {
 		log_err("fio: IO memory too large. Reduce max_bs or iodepth\n");
diff --git a/memory.c b/memory.c
index 46eb852..c147229 100644
--- a/memory.c
+++ b/memory.c
@@ -126,7 +126,12 @@
 
 static int alloc_mem_malloc(struct thread_data *td)
 {
-	td->orig_buffer = malloc(td->orig_buffer_size);
+	unsigned int bsize = td->orig_buffer_size;
+
+	if (td->o.odirect)
+		bsize += page_mask;
+		
+	td->orig_buffer = malloc(bsize);
 	if (td->orig_buffer)
 		return 0;