On 2025-08-26 03:22, Jan Beulich wrote:
On 26.08.2025 02:55, Jason Andryuk wrote:
rc is overwritten by the evtchn_status hypercall in each iteration, so
the return value will be whatever the last iteration is.

Which may even be a false "success". Especially for that it feels like ...

I'll state that here...


  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>

... this also wants a Fixes: tag and perhaps a Cc: to stable@.

and add these.


--- 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;

Maybe best to also move this into the more narrow scope (loop body)?

Sounds good.

Either way:
Reviewed-by: Jan Beulich <jbeul...@suse.com>

Thanks.


        memset(&status, 0, sizeof(status));

Having this outside of the loop is a little odd, too: It makes assumptions
on the behavior of the hypervisor (like not altering the structure upon
error). Yet likely not something to deal with right here.

Agreed.

Thanks,
Jason

Reply via email to