]> git.proxmox.com Git - qemu.git/commitdiff
rng random backend: check for -EAGAIN errors on read
authorAmit Shah <amit.shah@redhat.com>
Tue, 16 Apr 2013 10:28:16 +0000 (15:58 +0530)
committerMichael Roth <mdroth@linux.vnet.ibm.com>
Mon, 13 May 2013 16:50:35 +0000 (11:50 -0500)
Not handling EAGAIN triggers the assert

qemu/backends/rng-random.c:44:entropy_available: assertion failed: (len != -1)
Aborted (core dumped)

This happens when starting a guest with '-device virtio-rng-pci',
issuing a 'cat /dev/hwrng' in the guest, while also doing 'cat
/dev/random' on the host.

Reported-by: yunpingzheng <yunzheng@redhat.com>
Signed-off-by: Amit Shah <amit.shah@redhat.com>
Message-id: eacda84dfaf2d99cf6d250b678be4e4d6c2088fb.1366108096.git.amit.shah@redhat.com
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
(cherry picked from commit acbbc036619092fcd2c882222e1be168bd972b3e)

Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
backends/rng-random.c

index 0d1108811d41e02ce20049a86c6722eab657b899..813388b9e2e374e164480683fa0e93d10d004a57 100644 (file)
@@ -41,6 +41,9 @@ static void entropy_available(void *opaque)
     ssize_t len;
 
     len = read(s->fd, buffer, s->size);
+    if (len < 0 && errno == EAGAIN) {
+        return;
+    }
     g_assert(len != -1);
 
     s->receive_func(s->opaque, buffer, len);