qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH] util/mmap-alloc: check parameter before using
@ 2016-10-26  7:18 Cao jin
  2016-10-26  8:10 ` Thomas Huth
  2016-10-26 13:33 ` Eric Blake
  0 siblings, 2 replies; 4+ messages in thread
From: Cao jin @ 2016-10-26  7:18 UTC (permalink / raw)
  To: qemu-devel, qemu-trivial; +Cc: mst, peter.maydell, armbru, gkurz, riel

Also refactor some code hunk for readability

Signed-off-by: Cao jin <caoj.fnst@cn.fujitsu.com>
---
 util/mmap-alloc.c | 20 +++++++++-----------
 1 file changed, 9 insertions(+), 11 deletions(-)

diff --git a/util/mmap-alloc.c b/util/mmap-alloc.c
index 5a85aa3..92c123a 100644
--- a/util/mmap-alloc.c
+++ b/util/mmap-alloc.c
@@ -41,6 +41,11 @@ size_t qemu_fd_getpagesize(int fd)
 
 void *qemu_ram_mmap(int fd, size_t size, size_t align, bool shared)
 {
+    /* Make sure align is a power of 2 */
+    assert(!(align & (align - 1)));
+    /* Always align to host page size */
+    assert(align >= getpagesize());
+
     /*
      * Note: this always allocates at least one extra page of virtual address
      * space, even if size is already aligned.
@@ -68,11 +73,6 @@ void *qemu_ram_mmap(int fd, size_t size, size_t align, bool shared)
         return MAP_FAILED;
     }
 
-    /* Make sure align is a power of 2 */
-    assert(!(align & (align - 1)));
-    /* Always align to host page size */
-    assert(align >= getpagesize());
-
     ptr1 = mmap(ptr + offset, size, PROT_READ | PROT_WRITE,
                 MAP_FIXED |
                 (fd == -1 ? MAP_ANONYMOUS : 0) |
@@ -83,22 +83,20 @@ void *qemu_ram_mmap(int fd, size_t size, size_t align, bool shared)
         return MAP_FAILED;
     }
 
-    ptr += offset;
-    total -= offset;
-
     if (offset > 0) {
-        munmap(ptr - offset, offset);
+        munmap(ptr, offset);
     }
 
     /*
      * Leave a single PROT_NONE page allocated after the RAM block, to serve as
      * a guard page guarding against potential buffer overflows.
      */
+    total -= offset;
     if (total > size + getpagesize()) {
-        munmap(ptr + size + getpagesize(), total - size - getpagesize());
+        munmap(ptr1 + size + getpagesize(), total - size - getpagesize());
     }
 
-    return ptr;
+    return ptr1;
 }
 
 void qemu_ram_munmap(void *ptr, size_t size)
-- 
2.1.0

^ permalink raw reply related	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2016-10-26 13:33 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-10-26  7:18 [Qemu-devel] [PATCH] util/mmap-alloc: check parameter before using Cao jin
2016-10-26  8:10 ` Thomas Huth
2016-10-26 10:14   ` Cao jin
2016-10-26 13:33 ` Eric Blake

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).