From: Jean-Christophe Dubois Date: Sun, 17 May 2009 16:41:16 +0000 (+0200) Subject: initialize struct sigevent before timer_create X-Git-Tag: v0.10.5~10 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=822624e5d658e7cf51f399581b8f93e61c3e2399;p=thirdparty%2Fqemu.git initialize struct sigevent before timer_create When qemu is run under valgrind, valgrind shows the following output on exit: ==3648== 1 errors in context 2 of 2: ==3648== Syscall param timer_create(evp) points to uninitialised byte(s) ==3648== at 0x54E936A: timer_create (in /lib/librt-2.9.so) ==3648== by 0x405DCF: dynticks_start_timer (vl.c:1549) ==3648== by 0x40A966: main (vl.c:1726) ==3648== Address 0x7fefffb34 is on thread 1's stack ==3648== Uninitialised value was created by a stack allocation ==3648== at 0x405D60: dynticks_start_timer (vl.c:1534) This patch is a simple fix to remove this potential problem. Signed-off-by: Jean-Christophe DUBOIS Signed-off-by: Anthony Liguori --- diff --git a/vl.c b/vl.c index efe29c93d29..56623fb576a 100644 --- a/vl.c +++ b/vl.c @@ -1528,6 +1528,11 @@ static int dynticks_start_timer(struct qemu_alarm_timer *t) sigaction(SIGALRM, &act, NULL); + /* + * Initialize ev struct to 0 to avoid valgrind complaining + * about uninitialized data in timer_create call + */ + memset(&ev, 0, sizeof(ev)); ev.sigev_value.sival_int = 0; ev.sigev_notify = SIGEV_SIGNAL; ev.sigev_signo = SIGALRM;