From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wm1-f46.google.com (mail-wm1-f46.google.com [209.85.128.46]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 627FD3D9DB6 for ; Sun, 26 Jul 2026 17:49:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.46 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785088168; cv=none; b=fKzAFl1pWSp3F+v8IX/EuTFFRe9beR/q4ATnryl4tdaUskjUP3+eUXW3ANvNGhp8WThP/KTzgWaIGw2FonqDGXfAmkVvs7AgbKxWV8vdPLkuLZHd9KQsVDi2qKVLcVMltP3+gga3xYLQBZnNwkW7n29B8zeMX13e9NhAPaCdDV4= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785088168; c=relaxed/simple; bh=3bvh8ELBkw+UtIqX8TEGE5T9LfzIa8fNtzANvVlDEnw=; h=From:To:Cc:Subject:Date:Message-Id:MIME-Version; b=atxcpDUh7QzQNbR8J0phAsOomnD39kkPHLG1+bSm2OtX+cPAb6/V86J/XjAvUt7Ie/RpIpSlHNED2Atd5jEk89o5qpFtEu5elNylPQmfYG4/HnQazGRZnjgu8iseeLL/e7uOYzejdme9UFUMPr9v16+0hl8L+FfNjCJytpIQXbA= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=KRfMa1Dh; arc=none smtp.client-ip=209.85.128.46 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="KRfMa1Dh" Received: by mail-wm1-f46.google.com with SMTP id 5b1f17b1804b1-4954a2e73a9so11250725e9.3 for ; Sun, 26 Jul 2026 10:49:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1785088164; x=1785692964; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to:content-type; bh=OG3fQOQ/VuZuHcKcajMtkmekIa5X8h+Q4MAhuhrOcMM=; b=KRfMa1Dh7LPKZFIJrvpehQSWAZhRCW65NrqlWlt9z+ONyr6VoJkzUYHJr+BToKiN8T DItrqYR8sg1UClam82AtNYExrNXW7jeLtt7zyxn5YZZDlDqU3E/ZKcgcUCKvExRMbneH 153FuId1Gf10MyriF9Ay7yjljlbkFEJeLamL0cY9R1s4C28EmWjWbsgY6ZiEFyWmTR+N XROCk6Ymfl5w8etxlCS6pgAjxH9T9chW0Q22skBTxY7kySgSARdWWyUUqzxT5KD/Vmfk +FNCuPdGmk9MW3NI58YoIkEFnKo9LUvhOHhh/DDsHFf4IErOst3US0lcPC5suJ6MHJr0 8Avg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1785088164; x=1785692964; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to:content-type; bh=OG3fQOQ/VuZuHcKcajMtkmekIa5X8h+Q4MAhuhrOcMM=; b=U4VlwuxTQghYr94guGLrBlvb4b10uo8Q0rZ+3bOls6CHlNwe4ys0wK1STZbWiuXXed JlPvvncYIl3c0Qt3hoEssxfVJURuW/DpKbyssJqquOskmJ0GuUut77eHqVA2YiX+cICV uTHZgFKeUMkBhxzkeotQLxU25+e0ysqMA8zxB6RKq1gI4b+EJTCz95fjtE/s24eQJPwF RPm/3KfF7T15GUVWltXm68lg2djbp+246Jc3QW7Q4cmM0O0BfdK8ujKVcx99k6DSr35c 6tMdbTZClW0G+373wgDcnvmlL5RMavzG7ELasvx/OgksHA+Kit4jSCYdUMv/EC8lph14 Aa8Q== X-Forwarded-Encrypted: i=1; AHgh+RodMEIvv6RVCVISwQFC8dk8DGCkSdStckCnRkyqBpoRkAWcoTQtiEUq4dn4PG6b/AD71c+E3ukvnBFtW0g=@vger.kernel.org X-Gm-Message-State: AOJu0Yx2KIAV8gojl0fLTKselJon916nS049X5JYAafMf10XDv0CXe/t jVUyAjKFh/0xJM391a/JXFYD9MbhcHmjDL8+bYXi/hfpo4r6YMDQjMkGoclAUclD X-Gm-Gg: AR+sD11y8dNy7JaKo8F5tWp283X3dgV+ZEXq4HNrWZM/IVDdXk5Ax6xHEyXTfRuSuJS RXoveD3AlPAbLGzw2wHcofMkYTcUVYvK4RFxzc40/yaW95u8/yUa7BG08e9qYuLTqEsuhSdYi29 keluOWEAtG02lWGL7Czni7dsXTfK8dwGiu84cTlZX2NtBPHu+vVQWj/k0qFxbLDoIaV/fYk+9N2 6jxr93Ilx5UVSwDeOrj3pdFdUUP77GcD3cyxnIqZ4HI0qURLHGD6b0ssWhuS5fHKzE8Fk5b+Aat AxFn34/7H9cmjOLgEzkRfYWD/tJkZE6mZaajFHW+ULF5rJSMKYhhUD1XsitO0QCGM4ms4z9Kd2j AXjLWXpUqIt9fsblels+I46iDcW+ge2E7/P+IELFOhvHydiLPfU0bzK/ydnqmU0JIO3QhlMu8wj 21TIkeXpCcRnfECXUw0PtLnkOXXUQiOZqcSwJwOtfw3ru6mPjYINrREtmYrOhpRsBL3woOO6xJq pbxji7gDAY54n10T6pbBmZyNnNM6l/R5WkaEsT15PWvDPmSfkA= X-Received: by 2002:a05:600c:3113:b0:495:4fd4:619b with SMTP id 5b1f17b1804b1-496b56bbc22mr70116885e9.1.1785088164322; Sun, 26 Jul 2026 10:49:24 -0700 (PDT) Received: from localhost.localdomain (dynamic-095-114-116-215.95.114.pool.telefonica.de. [95.114.116.215]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-47f85b9a64dsm45288820f8f.1.2026.07.26.10.49.23 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Sun, 26 Jul 2026 10:49:23 -0700 (PDT) From: Karl Mehltretter To: Marc Zyngier , Oliver Upton Cc: Karl Mehltretter , Fuad Tabba , Joey Gouly , Steffen Eiden , Suzuki K Poulose , Zenghui Yu , Catalin Marinas , Will Deacon , linux-arm-kernel@lists.infradead.org, kvmarm@lists.linux.dev, linux-kernel@vger.kernel.org, stable@vger.kernel.org Subject: [PATCH v2] KVM: arm64: GICv2: Don't WARN on out-of-range GICV_DIR INTID Date: Sun, 26 Jul 2026 19:48:03 +0200 Message-Id: <20260726174803.5880-1-kmehltretter@gmail.com> X-Mailer: git-send-email 2.39.5 (Apple Git-154) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit vgic_v2_deactivate() passes the INTID a guest wrote to GICV_DIR straight to vgic_get_vcpu_irq(), and treats a failed lookup as a "can't happen" condition with WARN_ON_ONCE(). The guest can make it happen at will, though: for any INTID outside of the implemented SGI, PPI and SPI ranges the lookup returns NULL, since GICv2 has no LPIs. A guest running with EOImode==1 writing such an INTID to GICV_DIR triggers the WARN, and panics hosts running with panic_on_warn. Drop the WARN and ignore failed lookups. Fixes: 255de897e7fb ("KVM: arm64: GICv2: Handle deactivation via GICV_DIR traps") Cc: stable@vger.kernel.org Suggested-by: Marc Zyngier Signed-off-by: Karl Mehltretter --- v2: - Drop the WARN_ON_ONCE() instead of bounding the INTID before the lookup, which duplicated the range check vgic_get_irq() already performs (Marc) - Retitled; was "KVM: arm64: GICv2: Bound the INTID in vgic_v2_deactivate()" Link to v1: https://lore.kernel.org/r/20260725154020.37305-1-kmehltretter@gmail.com arch/arm64/kvm/vgic/vgic-v2.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/arch/arm64/kvm/vgic/vgic-v2.c b/arch/arm64/kvm/vgic/vgic-v2.c index cafa3cb32bda..7182f63fc938 100644 --- a/arch/arm64/kvm/vgic/vgic-v2.c +++ b/arch/arm64/kvm/vgic/vgic-v2.c @@ -170,8 +170,9 @@ void vgic_v2_deactivate(struct kvm_vcpu *vcpu, u32 val) /* Make sure we're in the same context as LR handling */ local_irq_save(flags); + /* Guest-supplied INTID: out of range yields no irq, so ignore it */ irq = vgic_get_vcpu_irq(vcpu, val); - if (WARN_ON_ONCE(!irq)) + if (!irq) goto out; /* See the corresponding v3 code for the rationale */ -- 2.51.0