mirror of https://github.com/xqemu/xqemu.git
pr-manager-helper: avoid SIGSEGV when writing to the socket fail
When writing to the qemu-pr-helper socket failed, the persistent reservation manager was correctly disconnecting the socket, but it did not clear pr_mgr->ioc. So the rest of the code did not know that the socket had been disconnected, accessed pr_mgr->ioc and happily caused a crash. To reproduce, it is enough to stop qemu-pr-helper between QEMU startup and executing e.g. sg_persist -k /dev/sdb. Reviewed-by: Michal Privoznik <mprivozn@redhat.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
86933b4e78
commit
aad10040d4
|
@ -71,6 +71,7 @@ static int pr_manager_helper_write(PRManagerHelper *pr_mgr,
|
||||||
if (n_written <= 0) {
|
if (n_written <= 0) {
|
||||||
assert(n_written != QIO_CHANNEL_ERR_BLOCK);
|
assert(n_written != QIO_CHANNEL_ERR_BLOCK);
|
||||||
object_unref(OBJECT(pr_mgr->ioc));
|
object_unref(OBJECT(pr_mgr->ioc));
|
||||||
|
pr_mgr->ioc = NULL;
|
||||||
return n_written < 0 ? -EINVAL : 0;
|
return n_written < 0 ? -EINVAL : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue