aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Maydell <peter.maydell@linaro.org>2011-10-13 18:45:37 +0100
committerAndrzej Zaborowski <andrew.zaborowski@intel.com>2011-10-21 18:01:35 +0200
commit7f84c1272b601be88daeb828ec1890890c7aae25 (patch)
tree2fe17da7738d5bfd0b6ff165981b746be084845e
parent1386d4c0f5ce4c4391f2024a36c77eb8fb152e90 (diff)
downloadqemu-7f84c1272b601be88daeb828ec1890890c7aae25.zip
qemu-7f84c1272b601be88daeb828ec1890890c7aae25.tar.gz
qemu-7f84c1272b601be88daeb828ec1890890c7aae25.tar.bz2
compatfd.c: Don't pass NULL pointer to SYS_signalfd
Don't pass a NULL pointer in to SYS_signalfd in qemu_signalfd_available(): this isn't valid and Valgrind complains about it. Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Reviewed-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com> Signed-off-by: Andrzej Zaborowski <andrew.zaborowski@intel.com>
-rw-r--r--compatfd.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/compatfd.c b/compatfd.c
index 31654c6..02306a4 100644
--- a/compatfd.c
+++ b/compatfd.c
@@ -119,9 +119,17 @@ int qemu_signalfd(const sigset_t *mask)
bool qemu_signalfd_available(void)
{
#ifdef CONFIG_SIGNALFD
+ sigset_t mask;
+ int fd;
+ bool ok;
+ sigemptyset(&mask);
errno = 0;
- syscall(SYS_signalfd, -1, NULL, _NSIG / 8);
- return errno != ENOSYS;
+ fd = syscall(SYS_signalfd, -1, &mask, _NSIG / 8);
+ ok = (errno != ENOSYS);
+ if (fd >= 0) {
+ close(fd);
+ }
+ return ok;
#else
return false;
#endif