From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.remote-ip=74.125.82.54 ARC-Seal: i=1; d=subspace.kernel.org; s=arc20261015; a=rsa-sha256; cv=none; t=1793546911; b=LDj899LMTxV8/JBGcKy3tUEfmwSlbAXffBfUEgbCAH1+AzJ123vg3LB92FjWtDXoxJB0 9RTbqLeW8KexO0+8i2mioSAa8hIUvUPDQtihtlZLwWaygmQvG267fepAp9w3J/JWRvvsY geMPSRfe++5kk0lQJSs5Xr4YB6aVtF7mmnoJSlTD8ifK3Fxk0GhkDF3sDdVxfEg4Ci1GD DNrMxHwCzxLt2oNyDrfEx6lxv8K3dsVUaQPbgf52mlxiJ2Yy086rocvQAx1BqzkqhpbWx RkAgxMzWu6sBkFDRl8FE+p0uMqZCqm098b8MJhRGnw7ATGu69Yju5h9NlawhER8IZ4g== ARC-Message-Signature: i=1; d=subspace.kernel.org; s=arc20261015; a=rsa-sha256; c=relaxed/relaxed; t=1793546911; h=DMARC-Filter:Received:DKIM-Signature:X-Google-DKIM-Signature: X-Forwarded-Encrypted:X-Gm-Message-State:X-Gm-Gg:X-Received:Received: From:To:Cc:Subject:Date:Message-Id:X-Mailer:In-Reply-To:References: MIME-Version:Content-Transfer-Encoding; bh=TeZ6IgkzEeK3FNGEWnZ121HpRlWxGruZFzuJFvAehYc=; b=FvShEe6OxUf7vEhcwjEw+J8LlJ+fyH/SERoMByxtJ93ueE93op4P2G/bFcrj4EAWbVqL EdtU7KtuNPxCedoaJz7TQq0MSJRJFVuEjmFp3vE0X1Z6+VVTAywfMJj3huhl6XOYEAITq QnzbDQoIADGqVsK1xcJBP2JfkRhLgw1FNx5THYmuj+Ds9skZTWiL6A202ckJ0m2eqW94l rMnTC2re3lN2NHlCTdQqVtqH0kNJbsg9R1jeiUhvgcfr2KqFVWnWEr38haeLAAtJ6C8/j uRfJxeMKeDrNMAnDBuSEqo6Xe208+SfUEgRcIzyuVB7mHh22tyT7t7yPZT1WbnGFP5g== ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20260707 header.b="l9LyW/vr"; arc=none smtp.remote-ip=74.125.82.54 Received: from mail-dl1-f54.google.com (mail-dl1-f54.google.com [74.125.82.54]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 62D6B606A327 for ; Sun, 1 Nov 2026 15:28:31 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.2 smtp.subspace.kernel.org 62D6B606A327 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, unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20260707 header.b=l9LyW/vr Received: by mail-dl1-f54.google.com with SMTP id a92af1059eb24-1a8cc11ac42so1792222c88.0 for ; Sun, 01 Nov 2026 07:28:31 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20260707; t=1793546910; x=1794151710; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=TeZ6IgkzEeK3FNGEWnZ121HpRlWxGruZFzuJFvAehYc=; b=l9LyW/vrgM4MLfWz3YFU35M51oG1fpFusvhPGrpPe+xrj6gqzejB+gREyg8Mx+7DY0 b35n2Xyn2CTmP61Xsy3QBJdqlUI8LA8IHuIs/CP2Ecn1YvCn3a8sbOfvEb0e0Mq9wg/y 2E+AZodoEbrIORCIV4XJslQXTOCIjQZQNnZlGHWvKWL8X+eAn02SDWjP+QSfSeaGX1L8 CjCgKc57A/VifhPpIYaCBTHTSIy9Tl6WSpeNgORFIZ4q1ePz4R8owu6cPJGVBIMmf2ZF +c9zu005BRbIUBjHFCW/LC8aAKTfNg5DnwP+YahogIQVLIFvCCbQxi1ARXgOqjq/wrhL ij7Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1793546910; x=1794151710; h=content-transfer-encoding:mime-version:references:in-reply-to :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=TeZ6IgkzEeK3FNGEWnZ121HpRlWxGruZFzuJFvAehYc=; b=cEOwgW2v7Uv+1PTR+dz1fiXsqEaEv1+KDflqkhqH0nOU+KPWrgQMJDRmK/kd7z1Q5e VnOKNiwtEOhRPCnQxnUpX5d0TQMow51cyHhwxdR0jA4favIykGwVypBaO/z+oSuuSTsO ERZTZNt1vc+96AOiphJUAEu/miFvx6lPLzupNdeyPsJs/ulV/WBxWiWP4wpt05/rBwQb L9y4ADutoidq7KbKOxqRymXT8GvOUZOzxVzD92QmoLZyk9ewe9Ei6C/50L6C0Sic8a0j +I7tNvgOXr6zN4k8Bx67K6o+fjhQ45mYhBmLIFUtGRRkgVH04agSJNs0BfDV8sj+rIcN uBrQ== X-Forwarded-Encrypted: i=1; AKwUvByljlC5mCDMpkwep9DHzriTUoLdnbGUCa3g1tRXYx0mBRSSfXjtY7XH5S8Cae0k1YP5q3TLMfOI63IryGc=@vger.kernel.org X-Gm-Message-State: AFq9FYJtTa0X46m1CjDSf5hRmEpBBHeEmoaMLPsJWEAFTC12sc6dF6qr BLQOavdk4ioGyDijpoWWcQLHJt0F3gtFPZlq3vqEkc2N/QMqvI0pd0HO X-Gm-Gg: AYBFou3pKSFJatHxE/Do1DAbPGKg85pHLBnIHihQx7JWz60YiBcIshfRURvxfm+MZWV /ivX0lZ3jBST0lJ/hiXsUclNZbt8Mm5Ip23Xu1xfBoAjjB3VpGeQSW8yHJk7IcjjljiP+FAvkWl TK6dIuZHuiJ2E6SlowRV3NWmvH4BkhbDuZ5gOJHBHjcI5TnvHlcod9nuG4QzVePd8/aWklcjIPi 2CzGg6JQnZiWVeSBKL7PoFXL+sfJY/BfWXJ/Xl1cXpqGVA5h2UwJLNLjvrKVyJ2Nf9hzOkeO9rx 7j3TJEuTXqCBdk9NQnssd7R/bCXqpli7SifJsieiTaFqaSvAyMIDUqRHpDWz5lMWdVQmNwY7SJm DXZp9F01jkWfg0l9RmuB79GF+bSu+qYu7+TxVhygvBHCPSHpJpPXXpn1YlcB7yDyU1WJtv3rZwY qlWWN2Dh1Gq2m1M7FGukLZ5nAWuUFy3pRm8IdfJC7SWQy0ifCW/A6esSTgXxKoE/JribKFs4uqr rzVyISQxCJa73MX10Z8QWFV42amEtdpULHdxSkowGYWvIPFUTLd68iylcrelE5Zqq84y9AkZ7SC rK94vf/SM+BdDX95mCc2xuC6qV5WG1rnqQ== X-Received: by 2002:a05:701b:4590:20b0:193:5449:b889 with SMTP id a92af1059eb24-1ac6088a33amr10627985c88.45.1793546910336; Sun, 01 Nov 2026 07:28:30 -0800 (PST) Received: from pve-server.rlab ([49.205.216.49]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-1ac18458e07sm24862665c88.8.2026.11.01.07.28.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 01 Nov 2026 07:28:29 -0800 (PST) From: "Ritesh Harjani (IBM)" To: linuxppc-dev@lists.ozlabs.org Cc: Madhavan Srinivasan , Venkat Rao Bagalkote , linux-kernel@vger.kernel.org, chleroy@kernel.org, Michael Ellerman , Nicholas Piggin , kvm@vger.kernel.org, Anushree Mathur , Harsh Prateek Bora , "Ritesh Harjani (IBM)" Subject: [PATCHv3 2/7] KVM: PPC: Book3S: Don't call __ffs() on an empty pending_exceptions bitmap Date: Sun, 1 Nov 2026 20:58:07 +0530 Message-Id: X-Mailer: git-send-email 2.39.5 In-Reply-To: References: X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list MIME-Version: 1.0 Content-Transfer-Encoding: 8bit This problem was caught when running KVM PPC selftests on big-endian. __ffs() doc clearly says: "Undefined if no bit exists, so code should check against 0 first" This cause KVM to deliever an arbitary interrupt to the guest and was causing guest to hang up while running these selftests. On checking further - GCC was emitting 0 in this case, which caused System Reset in guest while running kvm selftests. Use find_first_bit() instead, which reads the word once and returns the bitmap size when no bit is set, instead of reading *pending twice thereby causing TOCTOU as pointed by Sashiko. Signed-off-by: Ritesh Harjani (IBM) --- arch/powerpc/kvm/book3s.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/powerpc/kvm/book3s.c b/arch/powerpc/kvm/book3s.c index 2efbe05caed7..5de4b6e86656 100644 --- a/arch/powerpc/kvm/book3s.c +++ b/arch/powerpc/kvm/book3s.c @@ -401,7 +401,7 @@ int kvmppc_core_prepare_to_enter(struct kvm_vcpu *vcpu) if (vcpu->arch.pending_exceptions) printk(KERN_EMERG "KVM: Check pending: %lx\n", vcpu->arch.pending_exceptions); #endif - priority = __ffs(*pending); + priority = find_first_bit(pending, BITS_PER_BYTE * sizeof(*pending)); while (priority < BOOK3S_IRQPRIO_MAX) { if (kvmppc_book3s_irqprio_deliver(vcpu, priority) && clear_irqprio(vcpu, priority)) { -- 2.39.5