[PATCH] lib: fwts_alloc: fix portability warnings from cppcheck on void * arithmetic
Colin King
colin.king at canonical.com
Wed Aug 17 10:36:08 UTC 2016
From: Colin Ian King <colin.king at canonical.com>
Minor fix, ensure we don't do void * pointer arithmetic as the behaviour
is undefined (even though most compilers assume it is a char * sized).
Signed-off-by: Colin Ian King <colin.king at canonical.com>
---
src/lib/src/fwts_alloc.c | 18 +++++++++---------
1 file changed, 9 insertions(+), 9 deletions(-)
diff --git a/src/lib/src/fwts_alloc.c b/src/lib/src/fwts_alloc.c
index 28a66f6..96e87c6 100644
--- a/src/lib/src/fwts_alloc.c
+++ b/src/lib/src/fwts_alloc.c
@@ -69,28 +69,28 @@ typedef struct {
*/
static void *fwts_low_mmap_walkdown(const size_t requested_size)
{
- void *addr;
+ uint8_t *addr;
size_t page_size = fwts_page_size();
size_t sz = (requested_size + page_size) & ~(page_size - 1);
size_t pages = sz / page_size;
unsigned char vec[pages];
- static void *last_addr = (void *)LIMIT_2GB;
+ static uint8_t *last_addr = (uint8_t *)LIMIT_2GB;
if (requested_size == 0) /* Illegal */
return MAP_FAILED;
- for (addr = last_addr - sz; addr > (void *)LIMIT_START; addr -= CHUNK_SIZE) {
+ for (addr = last_addr - sz; addr > (uint8_t *)LIMIT_START; addr -= CHUNK_SIZE) {
void *mapping;
/* Already mapped? */
- if (mincore(addr, pages, vec) == 0)
+ if (mincore((void *)addr, pages, vec) == 0)
continue;
/* Not mapped but mincore returned something unexpected? */
if (errno != ENOMEM)
continue;
- mapping = mmap(addr, requested_size, PROT_READ | PROT_WRITE,
+ mapping = mmap((void *)addr, requested_size, PROT_READ | PROT_WRITE,
MAP_SHARED | MAP_FIXED | MAP_ANONYMOUS, -1, 0);
if (mapping != MAP_FAILED) {
last_addr = mapping;
@@ -98,7 +98,7 @@ static void *fwts_low_mmap_walkdown(const size_t requested_size)
}
}
/* We've scanned all of memory, give up on subsequent calls */
- last_addr = (void *)LIMIT_START;
+ last_addr = (uint8_t *)LIMIT_START;
return MAP_FAILED;
}
@@ -139,7 +139,7 @@ static void *fwts_low_mmap(const size_t requested_size)
if ((first_addr_start == NULL) &&
(addr_start > (void*)LIMIT_START)) {
size_t sz = (requested_size + CHUNK_SIZE) & ~(CHUNK_SIZE - 1);
- void *addr = (uint8_t*)addr_start - sz;
+ uint8_t *addr = (uint8_t *)addr_start - sz;
/*
* If addr is over the 2GB limit and we know
@@ -147,8 +147,8 @@ static void *fwts_low_mmap(const size_t requested_size)
* be able to map a region below the 2GB limit as
* nothing is already mapped there
*/
- if (addr > (void*)LIMIT_2GB)
- addr = (void*)LIMIT_2GB - sz;
+ if (addr > (uint8_t *)LIMIT_2GB)
+ addr = (uint8_t *)LIMIT_2GB - sz;
ret = mmap(addr, requested_size, PROT_READ | PROT_WRITE,
MAP_SHARED | MAP_FIXED | MAP_ANONYMOUS, -1, 0);
--
2.8.1
More information about the fwts-devel
mailing list