From: Paolo Bonzini Date: Tue, 26 Jun 2018 13:39:18 +0000 (+0200) Subject: pr-manager-helper: avoid SIGSEGV when writing to the socket fail X-Git-Tag: pull-nvme-20200902~1642^2~26 X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=aad10040d411d21542dc9ae58a2854c89ccedd78;p=qemu-nvme.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 Signed-off-by: Paolo Bonzini --- diff --git a/scsi/pr-manager-helper.c b/scsi/pr-manager-helper.c index 82ff6b6123..0c0fe389b7 100644 --- a/scsi/pr-manager-helper.c +++ b/scsi/pr-manager-helper.c @@ -71,6 +71,7 @@ static int pr_manager_helper_write(PRManagerHelper *pr_mgr, if (n_written <= 0) { assert(n_written != QIO_CHANNEL_ERR_BLOCK); object_unref(OBJECT(pr_mgr->ioc)); + pr_mgr->ioc = NULL; return n_written < 0 ? -EINVAL : 0; }