rc is overwritten by the evtchn_status hypercall in each iteration, so
the return value will be whatever the last iteration is.  Change to an
explicit -ENOENT for an un-found virq and return 0 on a successful
match.

Signed-off-by: Jason Andryuk <jason.andr...@amd.com>
---
v2:
New
---
 drivers/xen/events/events_base.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/xen/events/events_base.c b/drivers/xen/events/events_base.c
index 41309d38f78c..199afe59f357 100644
--- a/drivers/xen/events/events_base.c
+++ b/drivers/xen/events/events_base.c
@@ -1318,7 +1318,7 @@ static int find_virq(unsigned int virq, unsigned int cpu, 
evtchn_port_t *evtchn)
 {
        struct evtchn_status status;
        evtchn_port_t port;
-       int rc = -ENOENT;
+       int rc;
 
        memset(&status, 0, sizeof(status));
        for (port = 0; port < xen_evtchn_max_channels(); port++) {
@@ -1331,10 +1331,10 @@ static int find_virq(unsigned int virq, unsigned int 
cpu, evtchn_port_t *evtchn)
                        continue;
                if (status.u.virq == virq && status.vcpu == xen_vcpu_nr(cpu)) {
                        *evtchn = port;
-                       break;
+                       return 0;
                }
        }
-       return rc;
+       return -ENOENT;
 }
 
 /**
-- 
2.50.1


Reply via email to