summaryrefslogtreecommitdiff
path: root/virt
diff options
context:
space:
mode:
authorPaolo Bonzini <pbonzini@redhat.com>2021-05-17 09:55:12 +0200
committerPaolo Bonzini <pbonzini@redhat.com>2021-05-17 09:55:12 +0200
commita4345a7cecfb91ae78cd43d26b0c6a956420761a (patch)
treeb0cf6296f791fa250ccc9d419c46f48fb73c331b /virt
parentce7ea0cfdc2e9ff31d12da31c3226deddb9644f5 (diff)
parentcb853ded1d25e5b026ce115dbcde69e3d7e2e831 (diff)
downloadlwn-a4345a7cecfb91ae78cd43d26b0c6a956420761a.tar.gz
lwn-a4345a7cecfb91ae78cd43d26b0c6a956420761a.zip
Merge tag 'kvmarm-fixes-5.13-1' of git://git.kernel.org/pub/scm/linux/kernel/git/kvmarm/kvmarm into HEAD
KVM/arm64 fixes for 5.13, take #1 - Fix regression with irqbypass not restarting the guest on failed connect - Fix regression with debug register decoding resulting in overlapping access - Commit exception state on exit to usrspace - Fix the MMU notifier return values - Add missing 'static' qualifiers in the new host stage-2 code
Diffstat (limited to 'virt')
-rw-r--r--virt/lib/irqbypass.c16
1 files changed, 6 insertions, 10 deletions
diff --git a/virt/lib/irqbypass.c b/virt/lib/irqbypass.c
index c9bb3957f58a..28fda42e471b 100644
--- a/virt/lib/irqbypass.c
+++ b/virt/lib/irqbypass.c
@@ -40,21 +40,17 @@ static int __connect(struct irq_bypass_producer *prod,
if (prod->add_consumer)
ret = prod->add_consumer(prod, cons);
- if (ret)
- goto err_add_consumer;
-
- ret = cons->add_producer(cons, prod);
- if (ret)
- goto err_add_producer;
+ if (!ret) {
+ ret = cons->add_producer(cons, prod);
+ if (ret && prod->del_consumer)
+ prod->del_consumer(prod, cons);
+ }
if (cons->start)
cons->start(cons);
if (prod->start)
prod->start(prod);
-err_add_producer:
- if (prod->del_consumer)
- prod->del_consumer(prod, cons);
-err_add_consumer:
+
return ret;
}