mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 10:11:27 +01:00
Occasionally, "dead" xentop processes consuming 100% CPU time have been observed. When the QEMU process the qmp_read() function is communicating with terminates, qmp_read() may enter an infinite loop. poll() signals EOF (POLLIN and POLLHUP set), the subsequent read() call returns 0, and then the function calls poll() again, which still sees the EOF condition and will return again immediately with POLLIN and POLLHUP set, repeating ad infinitum. A simple fix is to terminate the loop when read returns 0 (under "normal" instances, poll will return with POLLIN set only if there is data to read, so read will always read >0 bytes, except if the socket has been closed). Signed-off-by: Hans Reiser <hr@sec.uni-passau.de> Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>