oslib-posix: Fix compiler warning and some data types

gcc warning:

/qemu/util/oslib-posix.c:304:11: error:
 variable ‘addr’ might be clobbered by ‘longjmp’ or ‘vfork’
 [-Werror=clobbered]

Fix also some related data types:

numpages, hpagesize are used as pointer offset.
Always use size_t for them and also for the derived
numpages_per_thread and size_per_thread.

Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Signed-off-by: Stefan Weil <sw@weilnetz.de>
Message-id: 20171016202912.1117-1-sw@weilnetz.de
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
This commit is contained in:
Stefan Weil 2017-10-16 22:29:12 +02:00 committed by Stefan Hajnoczi
parent 063833a6ec
commit e947d47da0
1 changed files with 8 additions and 7 deletions

View File

@ -59,8 +59,8 @@
struct MemsetThread {
char *addr;
uint64_t numpages;
uint64_t hpagesize;
size_t numpages;
size_t hpagesize;
QemuThread pgthread;
sigjmp_buf env;
};
@ -301,11 +301,7 @@ static void sigbus_handler(int signal)
static void *do_touch_pages(void *arg)
{
MemsetThread *memset_args = (MemsetThread *)arg;
char *addr = memset_args->addr;
uint64_t numpages = memset_args->numpages;
uint64_t hpagesize = memset_args->hpagesize;
sigset_t set, oldset;
int i = 0;
/* unblock SIGBUS */
sigemptyset(&set);
@ -315,6 +311,10 @@ static void *do_touch_pages(void *arg)
if (sigsetjmp(memset_args->env, 1)) {
memset_thread_failed = true;
} else {
char *addr = memset_args->addr;
size_t numpages = memset_args->numpages;
size_t hpagesize = memset_args->hpagesize;
size_t i;
for (i = 0; i < numpages; i++) {
/*
* Read & write back the same value, so we don't
@ -351,7 +351,8 @@ static inline int get_memset_num_threads(int smp_cpus)
static bool touch_all_pages(char *area, size_t hpagesize, size_t numpages,
int smp_cpus)
{
uint64_t numpages_per_thread, size_per_thread;
size_t numpages_per_thread;
size_t size_per_thread;
char *addr = area;
int i = 0;