]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
5.4-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 17 Oct 2025 13:31:56 +0000 (15:31 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 17 Oct 2025 13:31:56 +0000 (15:31 +0200)
added patches:
xen-events-cleanup-find_virq-return-codes.patch

queue-5.4/series
queue-5.4/xen-events-cleanup-find_virq-return-codes.patch [new file with mode: 0644]

index 27bac166d6c6f3afb756d9a7aee81308379c924e..8d8f60a9930d7987870a1b94ea05e3064f19413e 100644 (file)
@@ -146,3 +146,4 @@ minixfs-verify-inode-mode-when-loading-from-disk.patch
 pid-add-a-judgment-for-ns-null-in-pid_nr_ns.patch
 fs-add-initramfs_options-to-set-initramfs-mount-opti.patch
 cramfs-verify-inode-mode-when-loading-from-disk.patch
+xen-events-cleanup-find_virq-return-codes.patch
diff --git a/queue-5.4/xen-events-cleanup-find_virq-return-codes.patch b/queue-5.4/xen-events-cleanup-find_virq-return-codes.patch
new file mode 100644 (file)
index 0000000..30f290b
--- /dev/null
@@ -0,0 +1,64 @@
+From stable+bounces-186318-greg=kroah.com@vger.kernel.org Fri Oct 17 14:41:24 2025
+From: Sasha Levin <sashal@kernel.org>
+Date: Fri, 17 Oct 2025 08:41:17 -0400
+Subject: xen/events: Cleanup find_virq() return codes
+To: stable@vger.kernel.org
+Cc: Jason Andryuk <jason.andryuk@amd.com>, Jan Beulich <jbeulich@suse.com>, Juergen Gross <jgross@suse.com>, Sasha Levin <sashal@kernel.org>
+Message-ID: <20251017124117.3889367-1-sashal@kernel.org>
+
+From: Jason Andryuk <jason.andryuk@amd.com>
+
+[ Upstream commit 08df2d7dd4ab2db8a172d824cda7872d5eca460a ]
+
+rc is overwritten by the evtchn_status hypercall in each iteration, so
+the return value will be whatever the last iteration is.  This could
+incorrectly return success even if the event channel was not found.
+Change to an explicit -ENOENT for an un-found virq and return 0 on a
+successful match.
+
+Fixes: 62cc5fc7b2e0 ("xen/pv-on-hvm kexec: rebind virqs to existing eventchannel ports")
+Cc: stable@vger.kernel.org
+Signed-off-by: Jason Andryuk <jason.andryuk@amd.com>
+Reviewed-by: Jan Beulich <jbeulich@suse.com>
+Reviewed-by: Juergen Gross <jgross@suse.com>
+Signed-off-by: Juergen Gross <jgross@suse.com>
+Message-ID: <20250828003604.8949-2-jason.andryuk@amd.com>
+[ converted evtchn pointer output parameter to direct port return value ]
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/xen/events/events_base.c |   12 ++++++------
+ 1 file changed, 6 insertions(+), 6 deletions(-)
+
+--- a/drivers/xen/events/events_base.c
++++ b/drivers/xen/events/events_base.c
+@@ -1210,10 +1210,12 @@ EXPORT_SYMBOL_GPL(bind_interdomain_evtch
+ static int find_virq(unsigned int virq, unsigned int cpu)
+ {
+       struct evtchn_status status;
+-      int port, rc = -ENOENT;
++      int port;
+       memset(&status, 0, sizeof(status));
+       for (port = 0; port < xen_evtchn_max_channels(); port++) {
++              int rc;
++
+               status.dom = DOMID_SELF;
+               status.port = port;
+               rc = HYPERVISOR_event_channel_op(EVTCHNOP_status, &status);
+@@ -1221,12 +1223,10 @@ static int find_virq(unsigned int virq,
+                       continue;
+               if (status.status != EVTCHNSTAT_virq)
+                       continue;
+-              if (status.u.virq == virq && status.vcpu == xen_vcpu_nr(cpu)) {
+-                      rc = port;
+-                      break;
+-              }
++              if (status.u.virq == virq && status.vcpu == xen_vcpu_nr(cpu))
++                      return port;
+       }
+-      return rc;
++      return -ENOENT;
+ }
+ /**