diff options
Diffstat (limited to 'monitor_mm.c')
-rw-r--r-- | monitor_mm.c | 29 |
1 files changed, 15 insertions, 14 deletions
diff --git a/monitor_mm.c b/monitor_mm.c index d3e6aeee5..0ba0658a1 100644 --- a/monitor_mm.c +++ b/monitor_mm.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: monitor_mm.c,v 1.18 2013/11/08 00:39:15 djm Exp $ */ | 1 | /* $OpenBSD: monitor_mm.c,v 1.19 2014/01/04 17:50:55 tedu Exp $ */ |
2 | /* | 2 | /* |
3 | * Copyright 2002 Niels Provos <provos@citi.umich.edu> | 3 | * Copyright 2002 Niels Provos <provos@citi.umich.edu> |
4 | * All rights reserved. | 4 | * All rights reserved. |
@@ -35,6 +35,7 @@ | |||
35 | 35 | ||
36 | #include <errno.h> | 36 | #include <errno.h> |
37 | #include <stdarg.h> | 37 | #include <stdarg.h> |
38 | #include <stddef.h> | ||
38 | #include <stdlib.h> | 39 | #include <stdlib.h> |
39 | #include <string.h> | 40 | #include <string.h> |
40 | 41 | ||
@@ -46,7 +47,7 @@ | |||
46 | static int | 47 | static int |
47 | mm_compare(struct mm_share *a, struct mm_share *b) | 48 | mm_compare(struct mm_share *a, struct mm_share *b) |
48 | { | 49 | { |
49 | long diff = (char *)a->address - (char *)b->address; | 50 | ptrdiff_t diff = (char *)a->address - (char *)b->address; |
50 | 51 | ||
51 | if (diff == 0) | 52 | if (diff == 0) |
52 | return (0); | 53 | return (0); |
@@ -73,8 +74,8 @@ mm_make_entry(struct mm_master *mm, struct mmtree *head, | |||
73 | 74 | ||
74 | tmp2 = RB_INSERT(mmtree, head, tmp); | 75 | tmp2 = RB_INSERT(mmtree, head, tmp); |
75 | if (tmp2 != NULL) | 76 | if (tmp2 != NULL) |
76 | fatal("mm_make_entry(%p): double address %p->%p(%lu)", | 77 | fatal("mm_make_entry(%p): double address %p->%p(%zu)", |
77 | mm, tmp2, address, (u_long)size); | 78 | mm, tmp2, address, size); |
78 | 79 | ||
79 | return (tmp); | 80 | return (tmp); |
80 | } | 81 | } |
@@ -101,7 +102,7 @@ mm_create(struct mm_master *mmalloc, size_t size) | |||
101 | 102 | ||
102 | address = xmmap(size); | 103 | address = xmmap(size); |
103 | if (address == (void *)MAP_FAILED) | 104 | if (address == (void *)MAP_FAILED) |
104 | fatal("mmap(%lu): %s", (u_long)size, strerror(errno)); | 105 | fatal("mmap(%zu): %s", size, strerror(errno)); |
105 | 106 | ||
106 | mm->address = address; | 107 | mm->address = address; |
107 | mm->size = size; | 108 | mm->size = size; |
@@ -141,7 +142,7 @@ mm_destroy(struct mm_master *mm) | |||
141 | 142 | ||
142 | #ifdef HAVE_MMAP | 143 | #ifdef HAVE_MMAP |
143 | if (munmap(mm->address, mm->size) == -1) | 144 | if (munmap(mm->address, mm->size) == -1) |
144 | fatal("munmap(%p, %lu): %s", mm->address, (u_long)mm->size, | 145 | fatal("munmap(%p, %zu): %s", mm->address, mm->size, |
145 | strerror(errno)); | 146 | strerror(errno)); |
146 | #else | 147 | #else |
147 | fatal("%s: UsePrivilegeSeparation=yes and Compression=yes not supported", | 148 | fatal("%s: UsePrivilegeSeparation=yes and Compression=yes not supported", |
@@ -160,7 +161,7 @@ mm_xmalloc(struct mm_master *mm, size_t size) | |||
160 | 161 | ||
161 | address = mm_malloc(mm, size); | 162 | address = mm_malloc(mm, size); |
162 | if (address == NULL) | 163 | if (address == NULL) |
163 | fatal("%s: mm_malloc(%lu)", __func__, (u_long)size); | 164 | fatal("%s: mm_malloc(%zu)", __func__, size); |
164 | memset(address, 0, size); | 165 | memset(address, 0, size); |
165 | return (address); | 166 | return (address); |
166 | } | 167 | } |
@@ -195,7 +196,7 @@ mm_malloc(struct mm_master *mm, size_t size) | |||
195 | 196 | ||
196 | /* Does not change order in RB tree */ | 197 | /* Does not change order in RB tree */ |
197 | mms->size -= size; | 198 | mms->size -= size; |
198 | mms->address = (u_char *)mms->address + size; | 199 | mms->address = (char *)mms->address + size; |
199 | 200 | ||
200 | if (mms->size == 0) { | 201 | if (mms->size == 0) { |
201 | RB_REMOVE(mmtree, &mm->rb_free, mms); | 202 | RB_REMOVE(mmtree, &mm->rb_free, mms); |
@@ -248,8 +249,8 @@ mm_free(struct mm_master *mm, void *address) | |||
248 | 249 | ||
249 | /* Check if range does not overlap */ | 250 | /* Check if range does not overlap */ |
250 | if (prev != NULL && MM_ADDRESS_END(prev) > address) | 251 | if (prev != NULL && MM_ADDRESS_END(prev) > address) |
251 | fatal("mm_free: memory corruption: %p(%lu) > %p", | 252 | fatal("mm_free: memory corruption: %p(%zu) > %p", |
252 | prev->address, (u_long)prev->size, address); | 253 | prev->address, prev->size, address); |
253 | 254 | ||
254 | /* See if we can merge backwards */ | 255 | /* See if we can merge backwards */ |
255 | if (prev != NULL && MM_ADDRESS_END(prev) == address) { | 256 | if (prev != NULL && MM_ADDRESS_END(prev) == address) { |
@@ -271,8 +272,8 @@ mm_free(struct mm_master *mm, void *address) | |||
271 | return; | 272 | return; |
272 | 273 | ||
273 | if (MM_ADDRESS_END(prev) > mms->address) | 274 | if (MM_ADDRESS_END(prev) > mms->address) |
274 | fatal("mm_free: memory corruption: %p < %p(%lu)", | 275 | fatal("mm_free: memory corruption: %p < %p(%zu)", |
275 | mms->address, prev->address, (u_long)prev->size); | 276 | mms->address, prev->address, prev->size); |
276 | if (MM_ADDRESS_END(prev) != mms->address) | 277 | if (MM_ADDRESS_END(prev) != mms->address) |
277 | return; | 278 | return; |
278 | 279 | ||
@@ -343,12 +344,12 @@ mm_share_sync(struct mm_master **pmm, struct mm_master **pmmalloc) | |||
343 | void | 344 | void |
344 | mm_memvalid(struct mm_master *mm, void *address, size_t size) | 345 | mm_memvalid(struct mm_master *mm, void *address, size_t size) |
345 | { | 346 | { |
346 | void *end = (u_char *)address + size; | 347 | void *end = (char *)address + size; |
347 | 348 | ||
348 | if (address < mm->address) | 349 | if (address < mm->address) |
349 | fatal("mm_memvalid: address too small: %p", address); | 350 | fatal("mm_memvalid: address too small: %p", address); |
350 | if (end < address) | 351 | if (end < address) |
351 | fatal("mm_memvalid: end < address: %p < %p", end, address); | 352 | fatal("mm_memvalid: end < address: %p < %p", end, address); |
352 | if (end > (void *)((u_char *)mm->address + mm->size)) | 353 | if (end > MM_ADDRESS_END(mm)) |
353 | fatal("mm_memvalid: address too large: %p", address); | 354 | fatal("mm_memvalid: address too large: %p", address); |
354 | } | 355 | } |