diff mbox

[kvm-unit-tests,04/18] alloc_page: fix off-by-one

Message ID 20171024152145.28456-5-pbonzini@redhat.com (mailing list archive)
State New, archived
Headers show

Commit Message

Paolo Bonzini Oct. 24, 2017, 3:21 p.m. UTC
It is okay to free up to the very last page of virtual address space,
in which case mem+size is zero.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 lib/alloc_page.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
diff mbox

Patch

diff --git a/lib/alloc_page.c b/lib/alloc_page.c
index 15f6721..52992ad 100644
--- a/lib/alloc_page.c
+++ b/lib/alloc_page.c
@@ -22,7 +22,8 @@  void free_pages(void *mem, unsigned long size)
 
 	assert_msg(size % PAGE_SIZE == 0, "size not page aligned: %#lx", size);
 
-	assert_msg(size == 0 || mem + size > mem,
+	assert_msg(size == 0 || (uintptr_t)mem == -size ||
+		   (uintptr_t)mem + size > (uintptr_t)mem,
 		   "mem + size overflow: %p + %#lx", mem, size);
 
 	if (size == 0) {