From nobody Tue Sep 29 04:39:33 2026 Received: from mx0a-001b2d01.pphosted.com (mx0a-001b2d01.pphosted.com [148.163.156.1]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 318633EEAC4; Wed, 12 Aug 2026 10:44:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.163.156.1 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786531486; cv=none; b=ZJXJiHHflsSMdyLzbAnIZOK0XNUhkQYXE2HlPhpHdRrkR3AU//e4KGnHWufX2zDVetgWnjykPLGlAd9pRHRZhzfHq4jz/4tJdyI5FJCfqN9RU1MAyZMw/eg1qSrPmqz0V0JthViwj1OmiZsiN9z1XFSPGsHFgKo6Plt6YwHYG1I= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786531486; c=relaxed/simple; bh=DIs17kO5mWZpkFUAL7AAyjKv1jw2FeZ/kbg3M17UxxI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=SvnrboDzKCmoJ5ZdegznqTWLTTyrQ0MvwmJyhr4ozceYK+3Jaqt/zYFZet8uT+bYIkFbIiZPlezuAYYAduG8+E+GKNXnOul+kld+/kcEE30NhoG2wsyShT2qRajRPWmVT0TiIgpPQzaYyRhdFEhwwBNSdfMlviaiHTt7jmVZhZc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.ibm.com; spf=pass smtp.mailfrom=linux.ibm.com; dkim=pass (2048-bit key) header.d=ibm.com header.i=@ibm.com header.b=npB/JuvA; arc=none smtp.client-ip=148.163.156.1 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.ibm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.ibm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=ibm.com header.i=@ibm.com header.b="npB/JuvA" Received: from pps.filterd (m0360083.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 67CA1P5B3130304; Wed, 12 Aug 2026 10:44:43 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=pp1; bh=+8FD+Twa6/xpAxs2n YjC9A3ZU8aYyJ/ePbtB/tHuN0o=; b=npB/JuvAnoHiCTjjHLwCqVMPHSHAf3Lda nRphxb8o2h8RJvLsmQMbpEtw04E5yb2Yf2Ze/N/ZUJj5Tx1QaWbACuLoo94KtQdI Blt66T7I2g02EFlwcR0uKpQ9QmDAW9A7sVkMyR4tA2vi9iMC/K5te/ZJxPxUQNbN cRhXInEDtb7aoL+nMFa+HFMJlLWSi2Vm2ZByctiwQ+XQzfohcbJtCzDmnM7QBQMo PYs1CpB7a9wmapbcX72msID2hWGpqimlql2Phuc3/vRZRHzodanh2IT9SVnh7h7j 4rLz+UDxUjD//YXkcsbUXU0aE2YjzGgimzWl5Hp2Q46swffgBm1wA== Received: from ppma23.wdc07v.mail.ibm.com (5d.69.3da9.ip4.static.sl-reverse.com [169.61.105.93]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 4fwvq9hy69-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 12 Aug 2026 10:44:43 +0000 (GMT) Received: from pps.filterd (ppma23.wdc07v.mail.ibm.com [127.0.0.1]) by ppma23.wdc07v.mail.ibm.com (8.18.1.7/8.18.1.7) with ESMTP id 67CAfIJ8025117; Wed, 12 Aug 2026 10:44:42 GMT Received: from smtprelay04.fra02v.mail.ibm.com ([9.218.2.228]) by ppma23.wdc07v.mail.ibm.com (PPS) with ESMTPS id 4fxg9h5hxw-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 12 Aug 2026 10:44:41 +0000 (GMT) Received: from smtpav04.fra02v.mail.ibm.com (smtpav04.fra02v.mail.ibm.com [10.20.54.103]) by smtprelay04.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 67CAibUg25494190 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 12 Aug 2026 10:44:37 GMT Received: from smtpav04.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 49BE420043; Wed, 12 Aug 2026 10:44:37 +0000 (GMT) Received: from smtpav04.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 1A0D02004B; Wed, 12 Aug 2026 10:44:37 +0000 (GMT) Received: from p-imbrenda.ehn-de.ibm.com (unknown [9.224.75.30]) by smtpav04.fra02v.mail.ibm.com (Postfix) with ESMTP; Wed, 12 Aug 2026 10:44:37 +0000 (GMT) From: Claudio Imbrenda To: linux-kernel@vger.kernel.org Cc: kvm@vger.kernel.org, linux-s390@vger.kernel.org, borntraeger@de.ibm.com, frankja@linux.ibm.com, david@kernel.org, seiden@linux.ibm.com, nrb@linux.ibm.com, schlameuss@linux.ibm.com, gra@linux.ibm.com Subject: [PATCH v2 1/9] KVM: s390: Properly handle NULL pointer in dat_cond_set_storage_key() Date: Wed, 12 Aug 2026 12:44:28 +0200 Message-ID: <20260812104436.109741-2-imbrenda@linux.ibm.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260812104436.109741-1-imbrenda@linux.ibm.com> References: <20260812104436.109741-1-imbrenda@linux.ibm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-TM-AS-GCONF: 00 X-Proofpoint-GUID: aXwSQ_WH9gigVBIa_yJVr5tyjpSuW_4Z X-Authority-Analysis: v=2.4 cv=PbDPQChd c=1 sm=1 tr=0 ts=6a7c4e9b cx=c_pps a=3Bg1Hr4SwmMryq2xdFQyZA==:117 a=3Bg1Hr4SwmMryq2xdFQyZA==:17 a=Sv0fKeRqtYgA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=iQ6ETzBq9ecOQQE5vZCe:22 a=VnNF1IyMAAAA:8 a=HXcwjgiTS1qyJsQYY4QA:9 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODEyMDA4NCBTYWx0ZWRfX3PwocYy8oT0r 1Ir0ib83Zphw5LH7+9misZ4wK2+1bJ5/bnuMaYVa5VJbJF36KotQABpO23fGFPJe9iBVPiBs7VK 999ITnQSqk/NpJAD0ooPovbrInm/fRRLQ/X3yrBnJU/nK6uwVFQgs6xmZw4Kn4EBQUM33PTo8UD R4Mqd12PNlBGqPn+g1VXFLEGPxGvz18WVinHBWocDO3two03oq7zUck1Sm9mL2/NNBh3a+YfdCr JiiqNnuRArPijR2DyWUShO+/2L4NAabMbBpohVwz8YqpLQBQP/jVe5RfUsMZwEEcMlFyosR32WN W0bYpUrNOEGd31/aeX9jdu4yoENw9fOPBtn+EdPpt0I1xg1HEUKG31uiUMBeInW407FFxOMRs82 HctHp12bzVDK0hrD8h+x+UnpKkk7XetwsJya9Gf+jPNeV/99cAlVh850htyHxzwPyRaeyMUgJnA kvt218WA3lXVL1tYFEg== X-Proofpoint-ORIG-GUID: aXwSQ_WH9gigVBIa_yJVr5tyjpSuW_4Z X-Proofpoint-Spam-Info: AW1haW4tMjYwODEyMDA4NCBTYWx0ZWRfX7bjoyciM3d6u fhIhMjYEdbyF71EfPHHFTipgiA6cGTCv8OYAdfeHluoqvQUeTd6Qx4DMYw2atRL6kt87/UoOTlz R+9ouyugcg+sVcgUyU97JkUyKnVNKc4= X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-08-12_03,2026-08-10_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 bulkscore=0 impostorscore=0 malwarescore=0 adultscore=0 clxscore=1015 priorityscore=1501 suspectscore=0 phishscore=0 lowpriorityscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608120084 Content-Type: text/plain; charset="utf-8" Some callers pass NULL as oldkey. Calling page_cond_set_storage_key() will cause that NULL pointer to get dereferenced. Fix by checking for NULL and assigning the pointer to a dummy local variable to avoid crashes. Fixes: 8e03e8316eb2 ("KVM: s390: KVM page table management functions: stora= ge keys") Signed-off-by: Claudio Imbrenda Reviewed-by: Christian Borntraeger --- arch/s390/kvm/dat.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/arch/s390/kvm/dat.c b/arch/s390/kvm/dat.c index 3f2d6e8902d7..165c704fcf29 100644 --- a/arch/s390/kvm/dat.c +++ b/arch/s390/kvm/dat.c @@ -722,9 +722,12 @@ int dat_cond_set_storage_key(struct kvm_s390_mmu_cache= *mmc, union asce asce, gf if (rc) return rc; =20 - if (!ptep) + if (!ptep) { + if (!oldkey) + oldkey =3D &prev; return page_cond_set_storage_key(large_crste_to_phys(*crstep, gfn), skey= , oldkey, nq, mr, mc); + } =20 old =3D pgste_get_lock(ptep); pgste =3D old; --=20 2.55.0 From nobody Tue Sep 29 04:39:33 2026 Received: from mx0a-001b2d01.pphosted.com (mx0a-001b2d01.pphosted.com [148.163.156.1]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 317C335676A; Wed, 12 Aug 2026 10:44:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.163.156.1 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786531486; cv=none; b=BuOX7eFHxVXL//wlST/BmVHacVwPLkajisffelUz51lrrCYPbXrG/Croh3+VLowI5ZTct2t19+MUJ1P0UJNQw/OnjiAVf/j4BdLiTGTaBfHltA8LGYwnD5B0S5bBCjHXE2NKBHyN4/hVvlfGvXBo56alllsb/joJX5FN3juYOPU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786531486; c=relaxed/simple; bh=RPFC84bG+VxmF/L8qPqo5w6M/ZoHjgplkZrHserCyFY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=DqegMDe7/BeFqY3K8HnmJfRLXBYy9GH9DSGLBg/insBWQDKpg8Khp2oo/wKy/7hRnmYBrwce/MJciHxqNoRpXm/ynDzKmG+zzlLMw1uFzqmO1GvL9ejOU9OluoP30jamjKgm/EMMzgbGuVTFzPJfjqb2kGEiQ2VDYfPoS8Qws0c= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.ibm.com; spf=pass smtp.mailfrom=linux.ibm.com; dkim=pass (2048-bit key) header.d=ibm.com header.i=@ibm.com header.b=EeQwjIms; arc=none smtp.client-ip=148.163.156.1 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.ibm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.ibm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=ibm.com header.i=@ibm.com header.b="EeQwjIms" Received: from pps.filterd (m0360083.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 67CA1Ujp3130342; Wed, 12 Aug 2026 10:44:43 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=pp1; bh=bA+snetHaHH1XLlLP Kh3fuogEd/JEhmICO2md5+GNpo=; b=EeQwjImshYY8SuYChzbt28p3GA94kHezo I4Ik+5ZSnVbF5yvxL72o5W6KWej5gfcVsLv5c2eU8/+UdqTtsSe+h4111mCDme3v vUKrWqQXQ5ZqIf9QLqHdqPnv5cpQ+EMj1B49RUvOBl2IPUsVlaYoa6YrpNnwdgGc k+BnVgJVq1TX7t2RBShLcJtFgdb82PGA2BJxtOgYNH+gajfFFqlTg7MJ0Ugxp7BX TGrasW8hGcGYS3JTtsDYcYTWjY39bJn+E3JZ1vaeiL+JFvfluVFJ35RwarauDj8u 4gRZR4c5YqpzFOOOkSZsNlBlmtW36RRUonZ0JwdfNcm+OXSFvdcCw== Received: from ppma21.wdc07v.mail.ibm.com (5b.69.3da9.ip4.static.sl-reverse.com [169.61.105.91]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 4fwvq9hy6a-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 12 Aug 2026 10:44:43 +0000 (GMT) Received: from pps.filterd (ppma21.wdc07v.mail.ibm.com [127.0.0.1]) by ppma21.wdc07v.mail.ibm.com (8.18.1.7/8.18.1.7) with ESMTP id 67CAfUAx004265; Wed, 12 Aug 2026 10:44:42 GMT Received: from smtprelay04.fra02v.mail.ibm.com ([9.218.2.228]) by ppma21.wdc07v.mail.ibm.com (PPS) with ESMTPS id 4fxfsjwkx4-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 12 Aug 2026 10:44:42 +0000 (GMT) Received: from smtpav04.fra02v.mail.ibm.com (smtpav04.fra02v.mail.ibm.com [10.20.54.103]) by smtprelay04.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 67CAibAq25494192 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 12 Aug 2026 10:44:37 GMT Received: from smtpav04.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 71D462004B; Wed, 12 Aug 2026 10:44:37 +0000 (GMT) Received: from smtpav04.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 4E4652004D; Wed, 12 Aug 2026 10:44:37 +0000 (GMT) Received: from p-imbrenda.ehn-de.ibm.com (unknown [9.224.75.30]) by smtpav04.fra02v.mail.ibm.com (Postfix) with ESMTP; Wed, 12 Aug 2026 10:44:37 +0000 (GMT) From: Claudio Imbrenda To: linux-kernel@vger.kernel.org Cc: kvm@vger.kernel.org, linux-s390@vger.kernel.org, borntraeger@de.ibm.com, frankja@linux.ibm.com, david@kernel.org, seiden@linux.ibm.com, nrb@linux.ibm.com, schlameuss@linux.ibm.com, gra@linux.ibm.com Subject: [PATCH v2 2/9] KVM: s390: Use srcu in kvm_arch_vcpu_unlocked_ioctl() Date: Wed, 12 Aug 2026 12:44:29 +0200 Message-ID: <20260812104436.109741-3-imbrenda@linux.ibm.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260812104436.109741-1-imbrenda@linux.ibm.com> References: <20260812104436.109741-1-imbrenda@linux.ibm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-TM-AS-GCONF: 00 X-Proofpoint-GUID: uit1xB1UHZ9Hnn6MdZHzbFieEK_9b6St X-Authority-Analysis: v=2.4 cv=PbDPQChd c=1 sm=1 tr=0 ts=6a7c4e9b cx=c_pps a=GFwsV6G8L6GxiO2Y/PsHdQ==:117 a=GFwsV6G8L6GxiO2Y/PsHdQ==:17 a=Sv0fKeRqtYgA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=iQ6ETzBq9ecOQQE5vZCe:22 a=VnNF1IyMAAAA:8 a=HjbLuaNmiay7o59Kxp4A:9 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODEyMDA4NCBTYWx0ZWRfXyqx4jtYI45Vt rR9fsvUmRBpdmjKW2lEqOQumxSLat553e9hfoIoTVSivCUSSyrglHX3s/LH43A53Eh9Up6/7hNV 7m0lLJNvUKF6SukCBAJ/xc7aFQoGyKl3Dhq2x42vwabvNJlF0C2z9QtBkpHqwKj4xAhDbGo8rTO cK4HxDvc192F9ixvXRl+RHKa4SFoNGX1Zn6x4StmqCRpbhQR2YX6ymc6DavElSxrINkYBkQV4M4 hESXX55ek9R7WO8uZ7kdlScJPvUd39EPqVHFK+f3aOZAYaJjjsWMPmGZOlJKnaz3BGdyRvpYfiL 1hmfm7VLkKmTWU/E7rfBhEOYFw5u5VqfF4LOuOGOg+6p7kI2oDYc8U5V8bUbVRvNCQ4pR+jqSak gkPZnXSMk3oxjpWzoKuIyBSJ5Fo5ByIYQ51Bx1W44HNa6k/cmVgamPiMGPH1KrQ83V/dM+MdZrE H+S56e/Yon4eLFgHcog== X-Proofpoint-ORIG-GUID: uit1xB1UHZ9Hnn6MdZHzbFieEK_9b6St X-Proofpoint-Spam-Info: AW1haW4tMjYwODEyMDA4NCBTYWx0ZWRfX+uBqXkDJcxTD AffnHCzVi9xSMrem3IU2AWJXv8DOg3dKp1OpyZXy+/GLL0+wp1MaRRfERh7SnFLBWvut0Z8Cx9h 6dU0H3Zlxsjm4vwLZI53qYZLFXE5hjw= X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-08-12_03,2026-08-10_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 bulkscore=0 impostorscore=0 malwarescore=0 adultscore=0 clxscore=1015 priorityscore=1501 suspectscore=0 phishscore=0 lowpriorityscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608120084 Content-Type: text/plain; charset="utf-8" kvm_arch_vcpu_unlocked_ioctl() is called without further locks held, but kvm_s390_inject_vcpu(), which is called from there, needs either the kvm->srcu or the slots lock. Fix by taking the kvm->srcu in kvm_arch_vcpu_unlocked_ioctl(). Fixes: ba5c1e9b6cee ("KVM: s390: interrupt subsystem, cpu timer, waitpsw") Signed-off-by: Claudio Imbrenda Reviewed-by: Christian Borntraeger Reviewed-by: Christoph Schlameuss --- arch/s390/kvm/kvm-s390.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/arch/s390/kvm/kvm-s390.c b/arch/s390/kvm/kvm-s390.c index 518a69c55e85..b35340642c3e 100644 --- a/arch/s390/kvm/kvm-s390.c +++ b/arch/s390/kvm/kvm-s390.c @@ -5450,7 +5450,8 @@ long kvm_arch_vcpu_unlocked_ioctl(struct file *filp, = unsigned int ioctl, =20 if (copy_from_user(&s390irq, argp, sizeof(s390irq))) return -EFAULT; - rc =3D kvm_s390_inject_vcpu(vcpu, &s390irq); + scoped_guard(srcu, &vcpu->kvm->srcu) + rc =3D kvm_s390_inject_vcpu(vcpu, &s390irq); break; } case KVM_S390_INTERRUPT: { @@ -5463,7 +5464,8 @@ long kvm_arch_vcpu_unlocked_ioctl(struct file *filp, = unsigned int ioctl, return -EFAULT; if (s390int_to_s390irq(&s390int, &s390irq)) return -EINVAL; - rc =3D kvm_s390_inject_vcpu(vcpu, &s390irq); + scoped_guard(srcu, &vcpu->kvm->srcu) + rc =3D kvm_s390_inject_vcpu(vcpu, &s390irq); break; } default: --=20 2.55.0 From nobody Tue Sep 29 04:39:33 2026 Received: from mx0a-001b2d01.pphosted.com (mx0a-001b2d01.pphosted.com [148.163.156.1]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3596441E6D9; Wed, 12 Aug 2026 10:44:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.163.156.1 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786531487; cv=none; b=HnOd0ZaJRHaqtN48TAb/QHSQEgyIFMnbJnh95DXMzi2AznMqmBq2XH7NBTaqhdKH0lSAC5UJEsXIeT+qfbeLpdfj7G1ofyPr5IGt8B7MD/KSR7HG9KolEGJhwdyrefue/z83v6t4eIYFmotqT1t0s/9mPW4JbIrnlzQPkESgjU4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786531487; c=relaxed/simple; bh=KWXiiFp52Gmdl4BpjqFvWj2k9H5UiMBm8LMRYgxtmzg=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=ok04as0rsaIX2AhwrPKGrcaAHq6PZSgepAfn/+3MSzAwlnaOWmrE8/ctzLqg1fblyxXcXB+jAiScmmeEaf1zncZtddxbeXOVoeKKLsWM9yhZWrKW9pqS+06rXKskuYO2MboWAUWBzi/jiWdj+8wDZEN8fCyAWOt2hUk5Zi5Dj7M= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.ibm.com; spf=pass smtp.mailfrom=linux.ibm.com; dkim=pass (2048-bit key) header.d=ibm.com header.i=@ibm.com header.b=Aw0la3j9; arc=none smtp.client-ip=148.163.156.1 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.ibm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.ibm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=ibm.com header.i=@ibm.com header.b="Aw0la3j9" Received: from pps.filterd (m0353729.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 67CA1WlO1306544; Wed, 12 Aug 2026 10:44:43 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=pp1; bh=6G28kckuphrnEAOSB AMIGF8WM7d17AYjlARIQ0J3b2k=; b=Aw0la3j9xnflvvvebcdbOC1D9nX9swz/U QYffITWmvqEYW8xfkfTasjC0X8qwQN4jgDSiaVyWWqsUJzsTtfkj3gy0T3Avi+gb 0MV0cMdqLoQrewNDl+WXLGqxbRjSf7cMJNpyv5dIlD8eKOUSEpFzsZrdbFBWuew/ 0k2j/EfMq/cAZs1XQzku3DgQU1DXKqeZNTph7AGKHZYR1P3p9UlUu77tTdP2w1qT jTv7OPEf7EH0yBe18mAcEXQS2+3TXbX3B2mzDf/TI06yrXcQrLZL3sZTd6AMDIsn BXnmeAIn6EsREE9S1v2TQePnCN2DolRR9CN50P61c+jnpU5LMlurg== Received: from ppma22.wdc07v.mail.ibm.com (5c.69.3da9.ip4.static.sl-reverse.com [169.61.105.92]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 4fwvk01ynr-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 12 Aug 2026 10:44:43 +0000 (GMT) Received: from pps.filterd (ppma22.wdc07v.mail.ibm.com [127.0.0.1]) by ppma22.wdc07v.mail.ibm.com (8.18.1.7/8.18.1.7) with ESMTP id 67CAfWtB017925; Wed, 12 Aug 2026 10:44:42 GMT Received: from smtprelay04.fra02v.mail.ibm.com ([9.218.2.228]) by ppma22.wdc07v.mail.ibm.com (PPS) with ESMTPS id 4fxf5w5qk6-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 12 Aug 2026 10:44:42 +0000 (GMT) Received: from smtpav04.fra02v.mail.ibm.com (smtpav04.fra02v.mail.ibm.com [10.20.54.103]) by smtprelay04.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 67CAib7b27787914 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 12 Aug 2026 10:44:37 GMT Received: from smtpav04.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 9D3C020040; Wed, 12 Aug 2026 10:44:37 +0000 (GMT) Received: from smtpav04.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 76D6D20043; Wed, 12 Aug 2026 10:44:37 +0000 (GMT) Received: from p-imbrenda.ehn-de.ibm.com (unknown [9.224.75.30]) by smtpav04.fra02v.mail.ibm.com (Postfix) with ESMTP; Wed, 12 Aug 2026 10:44:37 +0000 (GMT) From: Claudio Imbrenda To: linux-kernel@vger.kernel.org Cc: kvm@vger.kernel.org, linux-s390@vger.kernel.org, borntraeger@de.ibm.com, frankja@linux.ibm.com, david@kernel.org, seiden@linux.ibm.com, nrb@linux.ibm.com, schlameuss@linux.ibm.com, gra@linux.ibm.com Subject: [PATCH v2 3/9] KVM: s390: Fix get_all_floating_irqs() Date: Wed, 12 Aug 2026 12:44:30 +0200 Message-ID: <20260812104436.109741-4-imbrenda@linux.ibm.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260812104436.109741-1-imbrenda@linux.ibm.com> References: <20260812104436.109741-1-imbrenda@linux.ibm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-TM-AS-GCONF: 00 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODEyMDA4NCBTYWx0ZWRfX87JhDP3noibr JcOFJyBvvyR5v1mY3rnPd3xgDHrmxL5f+nX/3R534Ks0xOgmRFCyAChX10P3Ench1zN7rAdSnE7 v5L2CfzQlyRazzDDjqaZYG55BJwRz6FhIYmP6AaP7/SxSwxhNh+RoyGsxZthlmtRuNvxL8ijZZx sUONwNZyZvUFO4gf2bGHZ0mbkoJHiUtHi+Y1z6a//fFW6FRJoIP6rRjkra+Tz53/FyWEJp/KkMd AO6OZvGtkOl4RkceJ+O2c+pMZLIP8XeyZjrcMzbxgod1OO4JLV21om5PBrvA9tOmcvIXvOVlJg+ f1xbwvoemo8GXCIqeFsHn96WZXxZdAhKAvgLPRRmpF42rhNRDxUJqwSpWfrZtvk5jNkBTsaRj5t PEHh9S6f8Yk8gQawafd9PYYMmbURxKzPtYzJ7LrtJQHZEdWOSCzlrFd9z/TeYdi6b4QVeYlBBDv H7mqrb4Wz+B4e4Jgd3A== X-Proofpoint-Spam-Info: AW1haW4tMjYwODEyMDA4NCBTYWx0ZWRfX6yyIOCtTur8T XKzBK/lKDW+VNAwVl3lG8IpLS6XsA6cmle1cZ0NvA5YFWnar7iWB6fYm/XtIVIh3eDcPYdm4R5Z 9dFlsSpRVMew5Ai7FZDOdOe7W4GaWEc= X-Authority-Analysis: v=2.4 cv=RqD16imK c=1 sm=1 tr=0 ts=6a7c4e9b cx=c_pps a=5BHTudwdYE3Te8bg5FgnPg==:117 a=5BHTudwdYE3Te8bg5FgnPg==:17 a=Sv0fKeRqtYgA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=uAbxVGIbfxUO_5tXvNgY:22 a=VnNF1IyMAAAA:8 a=gHQwZfIhTCfUKq360ekA:9 X-Proofpoint-GUID: 435rJlo72pSdEDbWNk784ZqgbmIZAcBU X-Proofpoint-ORIG-GUID: 435rJlo72pSdEDbWNk784ZqgbmIZAcBU X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-08-12_03,2026-08-10_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 priorityscore=1501 suspectscore=0 lowpriorityscore=0 clxscore=1015 adultscore=0 bulkscore=0 malwarescore=0 impostorscore=0 spamscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608120084 Content-Type: text/plain; charset="utf-8" When attempting to report all pending floating interrupt to userspace, the GISA IPM bits are atomically tested and cleared, and the corresponding interrupt description is written in the output buffer. If the output buffer is too small, an error is returned to userspace, but the GISA IPM bits are now lost. Moreover, the contract of KVM_DEV_FLIC_GET_ALL_IRQS, which is the only path to get_all_floating_irqs(), states that: > All interrupts remain pending, i.e. are not deleted from the list of > currently pending interrupts. Fix by non-destructively testing for the GISA IPM bits. Fixes: 24160af6cb28 ("KVM: s390: add GISA interrupts to FLIC ioctl interfac= e") Signed-off-by: Claudio Imbrenda Reviewed-by: Christian Borntraeger Reviewed-by: Christoph Schlameuss --- arch/s390/kvm/interrupt.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/arch/s390/kvm/interrupt.c b/arch/s390/kvm/interrupt.c index 6b3f97a7513b..61e75d10110e 100644 --- a/arch/s390/kvm/interrupt.c +++ b/arch/s390/kvm/interrupt.c @@ -273,6 +273,11 @@ static inline int gisa_tac_ipm_gisc(struct kvm_s390_gi= sa *gisa, u32 gisc) return test_and_clear_bit_inv(IPM_BIT_OFFSET + gisc, (unsigned long *) gi= sa); } =20 +static inline int gisa_test_ipm_gisc(struct kvm_s390_gisa *gisa, u32 gisc) +{ + return test_bit_inv(IPM_BIT_OFFSET + gisc, (unsigned long *)gisa); +} + static inline unsigned long pending_irqs_no_gisa(struct kvm_vcpu *vcpu) { unsigned long pending =3D vcpu->kvm->arch.float_int.pending_irqs | @@ -2242,7 +2247,7 @@ static int get_all_floating_irqs(struct kvm *kvm, u8 = __user *usrbuf, u64 len) ret =3D -ENOMEM; goto out_nolock; } - if (gisa_tac_ipm_gisc(gi->origin, i)) { + if (gisa_test_ipm_gisc(gi->origin, i)) { irq =3D (struct kvm_s390_irq *) &buf[n]; irq->type =3D KVM_S390_INT_IO(1, 0, 0, 0); irq->u.io.io_int_word =3D isc_to_int_word(i); --=20 2.55.0 From nobody Tue Sep 29 04:39:33 2026 Received: from mx0b-001b2d01.pphosted.com (mx0b-001b2d01.pphosted.com [148.163.158.5]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id F0CD2429CD8; Wed, 12 Aug 2026 10:44:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.163.158.5 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786531489; cv=none; b=j6yuRG7F8zHttDGUjgzZMzgYrVzg1Ks5nKxS2omgo2h0cU34L7at9n1hhxJY+Zp5b5Pmsrk4cpQFq3cw5hyi1wnqlKusZKPslEvwQPde6ZbBHDXdVeDPDrhQ7LI8w+k1XsV2qvaSdnUiUPNpPBvwwjya9OzSsWarj2Jozjkyae8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786531489; c=relaxed/simple; bh=xW+1IeqlL6HH16GGS/xkmOqepVaV0vu4C9oC8N5wgOo=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=nsE+aBkleZ68dGsAI/JcZ8xGReO2Vfk5UHjhb/mve6EImxdNainda71VKxq3eYkV+FG8tg17eWQPz9zrlUm8Yv3Lg+19K/DBpA98Cs+O8NzcpPVPNPZWJTKodUMcf7HHZ/7MCueAdh/QHfTpMUidnF4yqnBVfI33LkfPmNZKbiA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.ibm.com; spf=pass smtp.mailfrom=linux.ibm.com; dkim=pass (2048-bit key) header.d=ibm.com header.i=@ibm.com header.b=WeLrXBZu; arc=none smtp.client-ip=148.163.158.5 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.ibm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.ibm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=ibm.com header.i=@ibm.com header.b="WeLrXBZu" Received: from pps.filterd (m0360072.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 67CA1caH3206611; Wed, 12 Aug 2026 10:44:43 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=pp1; bh=ojuOI7ZpoHWiTpTVd olaxx0BYCQuLoRUO3U1AYMLDII=; b=WeLrXBZucDL80N6boJw/OiTNUa9vf3YpV uZekg8gHbt0BOzJYyxiVGTfjBC++qwv4cz1TwAACxFA546KWBnFfxdwvX3XznBxA B58Bs+xhJBtedxoSZOfcIoSAL1h367spGd4gsMJ4rLj4jwuoUAsds63wS0A66HaO kIvPfDyIkY5wMkZ+oHULOqfya3C13DE0e+jbv0r51pwHjckI/VE7NWSPJVL50vBQ CQQ+iPb1Ufz/ENmGouO3CLJUDe/edRtI0eWwANZkkC1WnuSOVCTILNl+zUOwuQgt BZKB47EzQpl96/U7qYzO9JWj+43iz84QDjEjAD17CQD15CSdapD7w== Received: from ppma23.wdc07v.mail.ibm.com (5d.69.3da9.ip4.static.sl-reverse.com [169.61.105.93]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 4fwvnw976d-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 12 Aug 2026 10:44:43 +0000 (GMT) Received: from pps.filterd (ppma23.wdc07v.mail.ibm.com [127.0.0.1]) by ppma23.wdc07v.mail.ibm.com (8.18.1.7/8.18.1.7) with ESMTP id 67CAfHJn025114; Wed, 12 Aug 2026 10:44:42 GMT Received: from smtprelay04.fra02v.mail.ibm.com ([9.218.2.228]) by ppma23.wdc07v.mail.ibm.com (PPS) with ESMTPS id 4fxg9h5hxx-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 12 Aug 2026 10:44:42 +0000 (GMT) Received: from smtpav04.fra02v.mail.ibm.com (smtpav04.fra02v.mail.ibm.com [10.20.54.103]) by smtprelay04.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 67CAibsf27787916 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 12 Aug 2026 10:44:37 GMT Received: from smtpav04.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id C93DF20043; Wed, 12 Aug 2026 10:44:37 +0000 (GMT) Received: from smtpav04.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id A1F172004D; Wed, 12 Aug 2026 10:44:37 +0000 (GMT) Received: from p-imbrenda.ehn-de.ibm.com (unknown [9.224.75.30]) by smtpav04.fra02v.mail.ibm.com (Postfix) with ESMTP; Wed, 12 Aug 2026 10:44:37 +0000 (GMT) From: Claudio Imbrenda To: linux-kernel@vger.kernel.org Cc: kvm@vger.kernel.org, linux-s390@vger.kernel.org, borntraeger@de.ibm.com, frankja@linux.ibm.com, david@kernel.org, seiden@linux.ibm.com, nrb@linux.ibm.com, schlameuss@linux.ibm.com, gra@linux.ibm.com Subject: [PATCH v2 4/9] KVM: s390: Fix dirty marking in adapter_indicators_set*() Date: Wed, 12 Aug 2026 12:44:31 +0200 Message-ID: <20260812104436.109741-5-imbrenda@linux.ibm.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260812104436.109741-1-imbrenda@linux.ibm.com> References: <20260812104436.109741-1-imbrenda@linux.ibm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-TM-AS-GCONF: 00 X-Authority-Analysis: v=2.4 cv=RsP16imK c=1 sm=1 tr=0 ts=6a7c4e9b cx=c_pps a=3Bg1Hr4SwmMryq2xdFQyZA==:117 a=3Bg1Hr4SwmMryq2xdFQyZA==:17 a=Sv0fKeRqtYgA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=RzCfie-kr_QcCd8fBx8p:22 a=VnNF1IyMAAAA:8 a=SmIaXW2kmnaYJitNQKcA:9 X-Proofpoint-GUID: DqIIHd-ZbYhHZEhWjUFIwKM52-sSlpcS X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODEyMDA4NCBTYWx0ZWRfX6RMYV9GuHjEo BheTOIiFUEpSmolnLXpAvSF9JKnY1Fhq5hKl0VlLlS0rbsMOlpPOp+tFt0P48/m7tZEskCbMVmA wZjYEDoHNlpWdVZtz1rjBdh8SPl+1O85rTbOqI3HwVpu0DjwTnzbA2kClvUjCv7Sx9RyPsOp8la 59SqctM5zJ0iBla33i6PPuIEODt9TmVp8GA5FZm6R72B2pTx0XtIBCRQtkyg8n1nT9dQ02eDPzj oWfL+7DYbAukRbuIdzmGiiFWT72TzPCxapSyJfvHMKFNyZUSd2cZJ/tZqqFsv0RtYF1OIjLuNgY Mf+Gl0u67DXdqY6S9tDXCi/tcYbToN1FHtmhdGQT7vTOl7bA1VqYmtfaXDXYc+xGn5902z2NL8s k6dfAv9NPDntQFIoWMZX3ZOBS+sZc2O8J6kubs+6QBLesNzqLhP429ScScu0N24q+ZNnVp3Coft 80VZFspFP+qNIo/7NcQ== X-Proofpoint-ORIG-GUID: DqIIHd-ZbYhHZEhWjUFIwKM52-sSlpcS X-Proofpoint-Spam-Info: AW1haW4tMjYwODEyMDA4NCBTYWx0ZWRfXy+81emevzNk2 uRMM+qYxjPEOSiawoVH9BOT+domuxwyKB4Qv8jIrZA7FjwV8uAdqJnp9D39PzbxDn9HQNa/ewJz LnhL1BP7p6zylRqLeCtCzP5D1MPS5jM= X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-08-12_03,2026-08-10_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 impostorscore=0 suspectscore=0 clxscore=1015 malwarescore=0 phishscore=0 adultscore=0 lowpriorityscore=0 priorityscore=1501 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608120084 Content-Type: text/plain; charset="utf-8" When the indicator and/or summary bits are set in the guest, the accessed page was only marked dirty if the access was performed using the slow path; accesses through the new kvm_arch_set_irq_inatomic fast inject path would not mark the page as dirty. Fix by adding/moving the missing calls to set_page_dirty() and mark_page_dirty(). Opportunistically reorder the local variables to be in reverse Christmas tree order. Fixes: 1e95e3bc6b05 ("KVM: s390: Enable adapter_indicators_set to use mappe= d pages") Signed-off-by: Claudio Imbrenda --- arch/s390/kvm/interrupt.c | 48 ++++++++++++++++++++++----------------- 1 file changed, 27 insertions(+), 21 deletions(-) diff --git a/arch/s390/kvm/interrupt.c b/arch/s390/kvm/interrupt.c index 61e75d10110e..8e4b88bce31f 100644 --- a/arch/s390/kvm/interrupt.c +++ b/arch/s390/kvm/interrupt.c @@ -2953,12 +2953,14 @@ static int adapter_indicators_set(struct kvm *kvm, struct s390_io_adapter *adapter, struct kvm_s390_adapter_int *adapter_int) { - unsigned long bit; - int summary_set, idx; struct s390_map_info *ind_info, *summary_info; - void *map; struct page *ind_page, *summary_page; unsigned long flags; + unsigned long bit; + int summary_set; + void *map; + + guard(srcu)(&kvm->srcu); =20 ind_page =3D NULL; =20 @@ -2969,21 +2971,20 @@ static int adapter_indicators_set(struct kvm *kvm, ind_page =3D pin_map_page(kvm, adapter_int->ind_addr, 0); if (!ind_page) return -1; - idx =3D srcu_read_lock(&kvm->srcu); map =3D page_address(ind_page); bit =3D get_ind_bit(adapter_int->ind_addr, adapter_int->ind_offset, adapter->swap); set_bit(bit, map); - mark_page_dirty(kvm, adapter_int->ind_gaddr >> PAGE_SHIFT); - set_page_dirty_lock(ind_page); - srcu_read_unlock(&kvm->srcu, idx); + set_page_dirty(ind_page); unpin_user_page(ind_page); } else { map =3D page_address(ind_info->page); bit =3D get_ind_bit(ind_info->addr, adapter_int->ind_offset, adapter->sw= ap); set_bit(bit, map); + set_page_dirty(ind_info->page); spin_unlock_irqrestore(&adapter->maps_lock, flags); } + mark_page_dirty(kvm, gpa_to_gfn(adapter_int->ind_gaddr)); =20 spin_lock_irqsave(&adapter->maps_lock, flags); summary_info =3D get_map_info(adapter, adapter_int->summary_addr); @@ -2992,22 +2993,21 @@ static int adapter_indicators_set(struct kvm *kvm, summary_page =3D pin_map_page(kvm, adapter_int->summary_addr, 0); if (WARN_ON_ONCE(!summary_page)) return -1; - idx =3D srcu_read_lock(&kvm->srcu); map =3D page_address(summary_page); bit =3D get_ind_bit(adapter_int->summary_addr, adapter_int->summary_offset, adapter->swap); summary_set =3D test_and_set_bit(bit, map); - mark_page_dirty(kvm, adapter_int->summary_gaddr >> PAGE_SHIFT); - set_page_dirty_lock(summary_page); - srcu_read_unlock(&kvm->srcu, idx); + set_page_dirty(summary_page); unpin_user_page(summary_page); } else { map =3D page_address(summary_info->page); bit =3D get_ind_bit(summary_info->addr, adapter_int->summary_offset, adapter->swap); summary_set =3D test_and_set_bit(bit, map); + set_page_dirty(summary_info->page); spin_unlock_irqrestore(&adapter->maps_lock, flags); } + mark_page_dirty(kvm, gpa_to_gfn(adapter_int->summary_gaddr)); =20 return summary_set ? 0 : 1; } @@ -3017,26 +3017,30 @@ static int adapter_indicators_set_fast(struct kvm *= kvm, struct kvm_s390_adapter_int *adapter_int, int setbit) { + struct s390_map_info *ind_info, *summary_info; unsigned long bit; int summary_set; - struct s390_map_info *ind_info, *summary_info; void *map; =20 - spin_lock(&adapter->maps_lock); + guard(srcu)(&kvm->srcu); + guard(spinlock)(&adapter->maps_lock); + ind_info =3D get_map_info(adapter, adapter_int->ind_addr); - if (!ind_info) { - spin_unlock(&adapter->maps_lock); + if (!ind_info) return -EWOULDBLOCK; - } + map =3D page_address(ind_info->page); bit =3D get_ind_bit(ind_info->addr, adapter_int->ind_offset, adapter->swa= p); - if (setbit) + if (setbit) { + mark_page_dirty(kvm, gpa_to_gfn(adapter_int->ind_gaddr)); + set_page_dirty(ind_info->page); set_bit(bit, map); + } + summary_info =3D get_map_info(adapter, adapter_int->summary_addr); - if (!summary_info) { - spin_unlock(&adapter->maps_lock); + if (!summary_info) return -EWOULDBLOCK; - } + map =3D page_address(summary_info->page); bit =3D get_ind_bit(summary_info->addr, adapter_int->summary_offset, adapter->swap); @@ -3046,7 +3050,9 @@ static int adapter_indicators_set_fast(struct kvm *kv= m, summary_set =3D test_and_set_bit(bit, map); else summary_set =3D test_and_clear_bit(bit, map); - spin_unlock(&adapter->maps_lock); + mark_page_dirty(kvm, gpa_to_gfn(adapter_int->summary_gaddr)); + set_page_dirty(summary_info->page); + return summary_set ? 0 : 1; } =20 --=20 2.55.0 From nobody Tue Sep 29 04:39:33 2026 Received: from mx0b-001b2d01.pphosted.com (mx0b-001b2d01.pphosted.com [148.163.158.5]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8D84142AFBF; Wed, 12 Aug 2026 10:44:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.163.158.5 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786531490; cv=none; b=NURCny9MJSCuEAX3PcT42gyrQC6du04pJO1H4zXvvLpNPeuU+qrV3uYNYVgnL6xPMMUcLh7rzWjGZHEzY2Zij0C4ckcOsm9Qwk6AS+KatJdIFH45AYkKuvA9InFZWoEX15gtKNN6d4GJb+O7NBbZClE5JDY/zRQpHzlPlfalPbU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786531490; c=relaxed/simple; bh=9eaD6MGX1VFPUc2zZ2uy2DIzpTw7oUYy0gf+M7Q02E0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=TfVqjgeqZYAlTWbCTvyU5mC3fid7xfYH3budjS1LAc2994UVBHHgU+RVlgAk2yq49HwUUIsxkjqxbKNLyRIfjhAEyMQBw7c5v+hgolprot59P3xOtkeL9MJ9Vno6XQUcgw/m0lpOE0zE8ONjXIJt01Hw0KGrg93jW5qR8/8jcxk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.ibm.com; spf=pass smtp.mailfrom=linux.ibm.com; dkim=pass (2048-bit key) header.d=ibm.com header.i=@ibm.com header.b=A612bLnA; arc=none smtp.client-ip=148.163.158.5 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.ibm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.ibm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=ibm.com header.i=@ibm.com header.b="A612bLnA" Received: from pps.filterd (m0356516.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 67CA2F7r3087896; Wed, 12 Aug 2026 10:44:44 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=pp1; bh=Gw+LyPPcYYYYJNmUw CW/4/+TN+vfwYswQKIea3NZl1g=; b=A612bLnA8I5xp00BSqwh1IzlftmsUblVc zedx9kdipS/OPsSmcYBe59GsS9MZnEN3XRTF9xxF4mVqmIzDSpGvjx54hal/P+h3 Y4nYm6saeLKgpf8gZDu3hSsNHhwXkbw/9BcSOQUFISuCkzVZN+vT/ibuw2Qvsp+F pWYw0A8GmZ5gB8plnCMbNk9ZAqw4t2N89cCA2HLAIDlrG7qNaLbGTuSuQNGnVxVb gyqZI6sGy8lJhQI2OfZZOxFLWGHE6KyOPVzVUttFhdwVvTCVIa+yVgiOdCZSoDF+ fvVDo3Ye1FRrqrW8cpYH582x060j4WLPpcbORTVjSrNeNM8ZttU3A== Received: from ppma13.dal12v.mail.ibm.com (dd.9e.1632.ip4.static.sl-reverse.com [50.22.158.221]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 4fwvp317jt-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 12 Aug 2026 10:44:43 +0000 (GMT) Received: from pps.filterd (ppma13.dal12v.mail.ibm.com [127.0.0.1]) by ppma13.dal12v.mail.ibm.com (8.18.1.7/8.18.1.7) with ESMTP id 67CAfIhl004331; Wed, 12 Aug 2026 10:44:43 GMT Received: from smtprelay05.fra02v.mail.ibm.com ([9.218.2.225]) by ppma13.dal12v.mail.ibm.com (PPS) with ESMTPS id 4fxh0gdfvh-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 12 Aug 2026 10:44:43 +0000 (GMT) Received: from smtpav04.fra02v.mail.ibm.com (smtpav04.fra02v.mail.ibm.com [10.20.54.103]) by smtprelay05.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 67CAicFZ47448558 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 12 Aug 2026 10:44:38 GMT Received: from smtpav04.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id F0AB620040; Wed, 12 Aug 2026 10:44:37 +0000 (GMT) Received: from smtpav04.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id CDFF52004B; Wed, 12 Aug 2026 10:44:37 +0000 (GMT) Received: from p-imbrenda.ehn-de.ibm.com (unknown [9.224.75.30]) by smtpav04.fra02v.mail.ibm.com (Postfix) with ESMTP; Wed, 12 Aug 2026 10:44:37 +0000 (GMT) From: Claudio Imbrenda To: linux-kernel@vger.kernel.org Cc: kvm@vger.kernel.org, linux-s390@vger.kernel.org, borntraeger@de.ibm.com, frankja@linux.ibm.com, david@kernel.org, seiden@linux.ibm.com, nrb@linux.ibm.com, schlameuss@linux.ibm.com, gra@linux.ibm.com Subject: [PATCH v2 5/9] KVM: s390: Fix pgste_get_trylock_multiple() Date: Wed, 12 Aug 2026 12:44:32 +0200 Message-ID: <20260812104436.109741-6-imbrenda@linux.ibm.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260812104436.109741-1-imbrenda@linux.ibm.com> References: <20260812104436.109741-1-imbrenda@linux.ibm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-TM-AS-GCONF: 00 X-Authority-Analysis: v=2.4 cv=AMtp2X5w c=1 sm=1 tr=0 ts=6a7c4e9b cx=c_pps a=AfN7/Ok6k8XGzOShvHwTGQ==:117 a=AfN7/Ok6k8XGzOShvHwTGQ==:17 a=Sv0fKeRqtYgA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=Y2IxJ9c9Rs8Kov3niI8_:22 a=VnNF1IyMAAAA:8 a=sS5RpU0ZaWfbfMIWq_AA:9 X-Proofpoint-GUID: dnTbpcyDW5JsX3he0sNzspusPAtte_t_ X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODEyMDA4NCBTYWx0ZWRfX2Y6tc2vEHOcP ClgWWYA2uhmWJTY+bt81K2xshmCtyv/ahpQed2tVUUrixIBfRq5O0ZjYN0mP6xF6uQBYyRrC3x9 LfpP8YpMkVw1M/+kKOpYovm80m8gG2roRr9DfUkN36jyVJTednu5TmxKLg/32A0FtlhtfsuBLR+ OGnXMhXVILwaeN/MsoSWW3RpqiTu8u6GDGIfdGeyG/vdP9j6YCG3ywmurJ7KNKqK4GF7vmt814C E2Of7Or4kf+o+vClYXxtQQZUMEDalC34QCFnLOajFgfwdtfMSQVlKnFYAGoeXCsUJa2gxq9LD3Q Sm2hDrDHWLEokY/kMBDul1qwmWLiAoiJpLUfOfVi2FgKcac9D+4iunGxsgFh+3V0bbNNAd0CXHC J2qwgii+O/p3koRsdE+L6Y+c0OaWAAFmPipnwxdpjovhVAFeW5pRRQzk8nx1Se5HsX2lbZwxisi lBqBjH0cP5d5Cev4dww== X-Proofpoint-ORIG-GUID: dnTbpcyDW5JsX3he0sNzspusPAtte_t_ X-Proofpoint-Spam-Info: AW1haW4tMjYwODEyMDA4NCBTYWx0ZWRfX4Wzc+mfj5etq b6+5YzdnC82RRXL8PbqGKw3VvtXjH6KmyJZWU6nhr1tJPOKFD8q/ssRdJyb7DjOZyTxL9yqDw8q ln5mqA6kFe1SgjqlwB5NLO3QX2Gug/U= X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-08-12_03,2026-08-10_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 adultscore=0 lowpriorityscore=0 clxscore=1015 priorityscore=1501 impostorscore=0 phishscore=0 spamscore=0 bulkscore=0 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608120084 Content-Type: text/plain; charset="utf-8" In case of failure, pgste_get_trylock_multiple() will attempt to unlock the locked PGSTEs based on whether the PCL is set. In some circumstances this can lead to unlocking PGSTEs that were locked by other threads. Fix by unlocking the amount of PGSTEs that were actually locked, ignoring the PCL bit in the array. Fixes: 94fd9b16cc67 ("KVM: s390: KVM page table management functions: lifec= ycle management") Signed-off-by: Claudio Imbrenda Reviewed-by: Christian Borntraeger Reviewed-by: Christoph Schlameuss --- arch/s390/kvm/dat.c | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/arch/s390/kvm/dat.c b/arch/s390/kvm/dat.c index 165c704fcf29..f4dd6f783417 100644 --- a/arch/s390/kvm/dat.c +++ b/arch/s390/kvm/dat.c @@ -923,11 +923,8 @@ static void pgste_set_unlock_multiple(union pte *first= , int n, union pgste *pgst { int i; =20 - for (i =3D 0; i < n; i++) { - if (!pgstes[i].pcl) - break; + for (i =3D 0; i < n; i++) pgste_set_unlock(first + i, pgstes[i]); - } } =20 static bool pgste_get_trylock_multiple(union pte *first, int n, union pgst= e *pgstes) @@ -940,7 +937,7 @@ static bool pgste_get_trylock_multiple(union pte *first= , int n, union pgste *pgs } if (i =3D=3D n) return true; - pgste_set_unlock_multiple(first, n, pgstes); + pgste_set_unlock_multiple(first, i, pgstes); return false; } =20 --=20 2.55.0 From nobody Tue Sep 29 04:39:33 2026 Received: from mx0a-001b2d01.pphosted.com (mx0a-001b2d01.pphosted.com [148.163.156.1]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 791C7423E86; Wed, 12 Aug 2026 10:44:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.163.156.1 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786531488; cv=none; b=qxYQiXMiBn6eQpREbanss9NYvBIrRYpaMlqipd4wd2/kqolSK1toCKx2pZHjxuhpsoWHha6SPUGFwb1wettUcOv3MqYr81inlsQeDIeZ3Qz+72zDGONKJVuSzMt0UOBxXJ5yuj9en5ZnEMWg3XCttUJuWpv49ve2uWP7qh4hqdg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786531488; c=relaxed/simple; bh=vAJfMwNoZugO6CmlIUvP76I2pLemu2cSuj7//V5N/F4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=nZPGJIz0bJ19KmbZWz4OOnTR3QdUgocTBiWa+og13nctRgLRocPlPV56E6F3AoV1+ACuMFuENJyCnHnBzR3KHng7y8M5P6erCF5Mpvq5bEaHrOZoR4H+LC/4db+xjER/jIZOMhn1jr047nSnJi0Dz0+8+VxrsvJ6KluGekBpnTs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.ibm.com; spf=pass smtp.mailfrom=linux.ibm.com; dkim=pass (2048-bit key) header.d=ibm.com header.i=@ibm.com header.b=kEt53wXk; arc=none smtp.client-ip=148.163.156.1 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.ibm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.ibm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=ibm.com header.i=@ibm.com header.b="kEt53wXk" Received: from pps.filterd (m0356517.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 67CA20V23177978; Wed, 12 Aug 2026 10:44:44 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=pp1; bh=LLsAJhIVUpJJ7G96H wU/F99+Tl9WvdtstdZcIlv9QmM=; b=kEt53wXkBqSqeXq2ZJkpvu5bpKusBqyaf UGaz/45Zq2JXDywQV8jpRsmOAguKjVPZmTEt+/tMBQfvw6KDdE+8qMF30HstbWR3 C6t2iwCdjJO6Bv0cS+I1xN1vd1F+bK47xlttqUuU/6V0QXh8EVh5sGlNAuHG+e9J HBTksGC1Dg9cjd8nIiBX13+n8Vtx5Qcf7wqxZbB99dw4NMLaFbhSMvXCvMf2EsCb TDUMe6rIjO9IW69rL4XaPMJSLg9fP5ZGbM6rrbkh8vB/BoxHTV0J9YSrGjRztTlV oiqs9DVAEPepwdRgq8scdHbX58tzz2ifGgRpkMiAlm334IqK8MlQg== Received: from ppma22.wdc07v.mail.ibm.com (5c.69.3da9.ip4.static.sl-reverse.com [169.61.105.92]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 4fwvm9t1fd-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 12 Aug 2026 10:44:43 +0000 (GMT) Received: from pps.filterd (ppma22.wdc07v.mail.ibm.com [127.0.0.1]) by ppma22.wdc07v.mail.ibm.com (8.18.1.7/8.18.1.7) with ESMTP id 67CAfHpl017833; Wed, 12 Aug 2026 10:44:42 GMT Received: from smtprelay05.fra02v.mail.ibm.com ([9.218.2.225]) by ppma22.wdc07v.mail.ibm.com (PPS) with ESMTPS id 4fxf5w5qk7-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 12 Aug 2026 10:44:42 +0000 (GMT) Received: from smtpav04.fra02v.mail.ibm.com (smtpav04.fra02v.mail.ibm.com [10.20.54.103]) by smtprelay05.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 67CAicbn47448560 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 12 Aug 2026 10:44:38 GMT Received: from smtpav04.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 269112004B; Wed, 12 Aug 2026 10:44:38 +0000 (GMT) Received: from smtpav04.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 015C920043; Wed, 12 Aug 2026 10:44:38 +0000 (GMT) Received: from p-imbrenda.ehn-de.ibm.com (unknown [9.224.75.30]) by smtpav04.fra02v.mail.ibm.com (Postfix) with ESMTP; Wed, 12 Aug 2026 10:44:37 +0000 (GMT) From: Claudio Imbrenda To: linux-kernel@vger.kernel.org Cc: kvm@vger.kernel.org, linux-s390@vger.kernel.org, borntraeger@de.ibm.com, frankja@linux.ibm.com, david@kernel.org, seiden@linux.ibm.com, nrb@linux.ibm.com, schlameuss@linux.ibm.com, gra@linux.ibm.com Subject: [PATCH v2 6/9] KVM: s390: Fix IRQ injection with SIGP Stop and Store Status Date: Wed, 12 Aug 2026 12:44:33 +0200 Message-ID: <20260812104436.109741-7-imbrenda@linux.ibm.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260812104436.109741-1-imbrenda@linux.ibm.com> References: <20260812104436.109741-1-imbrenda@linux.ibm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-TM-AS-GCONF: 00 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODEyMDA4NCBTYWx0ZWRfXxV/+Wp5meW07 TQWPbUtyOJo3AcY7FkJNUC1GD2QdaG+QncxyX6/65BI9EEKl3MZniMuEjn70rlKyy4nXZVRSRId cBgb6NT2Nxouytg+xFAx4jBULVM9/HEHwu0bURsAKAJtAmZh3UlI1rjwLZRh18I4J1H6WCE0lqx S+66Lu7VQrYRnBKWc1NmyRzqvv+ttGdJbyWRcBpK1Lhfi7Z5nRRizXrdDFSTA7syfHCzPKQnl6A SGztZwB0Q9ySGuGzltBvdpouI4QjAK9WhVZdX3z5pjdsj0XHgTfcm9EWe8CISzfrxvyLwdSo3et ocbeRtGYbf05AOxNZKzFJVIp2leTEGUvYBjnzRGF/01jcGEpMQTtDm8u/HWhe4dJY9bW+RD42N6 C7jdENFXm0dUEoEiNVRwD++wvq7Zc2hKoVbNrm6g6J6l90cW9Tz3D8X37BRxku7XNgs+rVoiqoH 7vOKYCOJyondezR5PjA== X-Proofpoint-ORIG-GUID: Rrfu7Co3gcsU2SmlEd9hKPHxT7xVuCon X-Proofpoint-Spam-Info: AW1haW4tMjYwODEyMDA4NCBTYWx0ZWRfX9Oh7Q2soaHAV l7If6ndXILz5eNFiqqbhl5ikEoTT3Vr/UPID8rQWaqMSZ0Hh36729XJbrXkTXwGqJ5Z5vO8qsaJ TZ2Kc9ooPZ9X4TYlonbimKHLVWAipKI= X-Authority-Analysis: v=2.4 cv=IfK3n2qa c=1 sm=1 tr=0 ts=6a7c4e9b cx=c_pps a=5BHTudwdYE3Te8bg5FgnPg==:117 a=5BHTudwdYE3Te8bg5FgnPg==:17 a=Sv0fKeRqtYgA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=U7nrCbtTmkRpXpFmAIza:22 a=VnNF1IyMAAAA:8 a=7r_voGox4_RORL1y__EA:9 X-Proofpoint-GUID: Rrfu7Co3gcsU2SmlEd9hKPHxT7xVuCon X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-08-12_03,2026-08-10_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 priorityscore=1501 impostorscore=0 bulkscore=0 clxscore=1015 lowpriorityscore=0 adultscore=0 malwarescore=0 spamscore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608120084 Content-Type: text/plain; charset="utf-8" When __inject_sigp_stop() is called for a Stop and Store Status operation, if the vCPU is running, the interrupt is marked as pending and the status is stored by the thread performing the KVM_RUN IOCTL. If the vCPU is already stopped, the status is stored immediately. Storing the status means writing into userspace, which might fault, and __inject_sigp_stop() is called from do_inject_vcpu() which in turn is always called holding a spinlock, which is obviously an issue. Fix this by returning -EWOULDBLOCK from __inject_sigp_stop(), and adding a bool flag to indicate whether a store status is needed. The callers of do_inject_vcpu() are modified to pass the pointer to the bool flag; whenever a Store Status operation is needed, the callers can now perform it outside the spinlock. Opportunistically refactor kvm_s390_set_irq_state() to use scoped_guard() and __free(). Signed-off-by: Claudio Imbrenda Reviewed-by: Christoph Schlameuss --- arch/s390/kvm/interrupt.c | 70 +++++++++++++++++++++------------------ 1 file changed, 38 insertions(+), 32 deletions(-) diff --git a/arch/s390/kvm/interrupt.c b/arch/s390/kvm/interrupt.c index 8e4b88bce31f..6940f4d354e5 100644 --- a/arch/s390/kvm/interrupt.c +++ b/arch/s390/kvm/interrupt.c @@ -1555,23 +1555,21 @@ static int __inject_set_prefix(struct kvm_vcpu *vcp= u, struct kvm_s390_irq *irq) } =20 #define KVM_S390_STOP_SUPP_FLAGS (KVM_S390_STOP_FLAG_STORE_STATUS) -static int __inject_sigp_stop(struct kvm_vcpu *vcpu, struct kvm_s390_irq *= irq) +static int __inject_sigp_stop(struct kvm_vcpu *vcpu, struct kvm_s390_irq *= irq, bool *storestatus) { struct kvm_s390_local_interrupt *li =3D &vcpu->arch.local_int; struct kvm_s390_stop_info *stop =3D &li->irq.stop; - int rc =3D 0; =20 vcpu->stat.inject_stop_signal++; trace_kvm_s390_inject_vcpu(vcpu->vcpu_id, KVM_S390_SIGP_STOP, 0, 0); =20 if (irq->u.stop.flags & ~KVM_S390_STOP_SUPP_FLAGS) return -EINVAL; - if (is_vcpu_stopped(vcpu)) { - if (irq->u.stop.flags & KVM_S390_STOP_FLAG_STORE_STATUS) - rc =3D kvm_s390_store_status_unloaded(vcpu, - KVM_S390_STORE_STATUS_NOADDR); - return rc; + if (!(irq->u.stop.flags & KVM_S390_STOP_FLAG_STORE_STATUS)) + return 0; + *storestatus =3D true; + return -EWOULDBLOCK; } =20 if (test_and_set_bit(IRQ_PEND_SIGP_STOP, &li->pending_irqs)) @@ -2107,7 +2105,7 @@ void kvm_s390_clear_stop_irq(struct kvm_vcpu *vcpu) spin_unlock(&li->lock); } =20 -static int do_inject_vcpu(struct kvm_vcpu *vcpu, struct kvm_s390_irq *irq) +static int do_inject_vcpu(struct kvm_vcpu *vcpu, struct kvm_s390_irq *irq,= bool *storestatus) { int rc; =20 @@ -2119,7 +2117,7 @@ static int do_inject_vcpu(struct kvm_vcpu *vcpu, stru= ct kvm_s390_irq *irq) rc =3D __inject_set_prefix(vcpu, irq); break; case KVM_S390_SIGP_STOP: - rc =3D __inject_sigp_stop(vcpu, irq); + rc =3D __inject_sigp_stop(vcpu, irq, storestatus); break; case KVM_S390_RESTART: rc =3D __inject_sigp_restart(vcpu); @@ -2155,11 +2153,16 @@ static int do_inject_vcpu(struct kvm_vcpu *vcpu, st= ruct kvm_s390_irq *irq) int kvm_s390_inject_vcpu(struct kvm_vcpu *vcpu, struct kvm_s390_irq *irq) { struct kvm_s390_local_interrupt *li =3D &vcpu->arch.local_int; + bool storestatus =3D false; int rc; =20 spin_lock(&li->lock); - rc =3D do_inject_vcpu(vcpu, irq); + rc =3D do_inject_vcpu(vcpu, irq, &storestatus); spin_unlock(&li->lock); + + if (rc =3D=3D -EWOULDBLOCK && storestatus) + rc =3D kvm_s390_store_status_unloaded(vcpu, KVM_S390_STORE_STATUS_NOADDR= ); + if (!rc) kvm_s390_vcpu_wakeup(vcpu); return rc; @@ -3180,7 +3183,8 @@ int kvm_set_msi(struct kvm_kernel_irq_routing_entry *= e, struct kvm *kvm, int kvm_s390_set_irq_state(struct kvm_vcpu *vcpu, void __user *irqstate, i= nt len) { struct kvm_s390_local_interrupt *li =3D &vcpu->arch.local_int; - struct kvm_s390_irq *buf; + struct kvm_s390_irq *buf __free(kvfree) =3D NULL; + bool tmp, storestatus =3D false; int r =3D 0; int n; =20 @@ -3188,31 +3192,33 @@ int kvm_s390_set_irq_state(struct kvm_vcpu *vcpu, v= oid __user *irqstate, int len if (!buf) return -ENOMEM; =20 - if (copy_from_user((void *) buf, irqstate, len)) { - r =3D -EFAULT; - goto out_free; - } + if (copy_from_user((void *)buf, irqstate, len)) + return -EFAULT; =20 - /* - * Don't allow setting the interrupt state - * when there are already interrupts pending - */ - spin_lock(&li->lock); - if (li->pending_irqs) { - r =3D -EBUSY; - goto out_unlock; - } + scoped_guard(spinlock, &li->lock) { + /* + * Don't allow setting the interrupt state + * when there are already interrupts pending + */ + if (li->pending_irqs) + return -EBUSY; =20 - for (n =3D 0; n < len / sizeof(*buf); n++) { - r =3D do_inject_vcpu(vcpu, &buf[n]); - if (r) - break; + for (n =3D 0; n < len / sizeof(*buf); n++) { + tmp =3D false; + r =3D do_inject_vcpu(vcpu, &buf[n], &tmp); + if (r =3D=3D -EWOULDBLOCK && tmp) { + storestatus =3D true; + r =3D 0; + } + if (r) + break; + } } =20 -out_unlock: - spin_unlock(&li->lock); -out_free: - vfree(buf); + if (storestatus) { + n =3D kvm_s390_store_status_unloaded(vcpu, KVM_S390_STORE_STATUS_NOADDR); + return r ? r : n; + } =20 return r; } --=20 2.55.0 From nobody Tue Sep 29 04:39:33 2026 Received: from mx0b-001b2d01.pphosted.com (mx0b-001b2d01.pphosted.com [148.163.158.5]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3793742A792; Wed, 12 Aug 2026 10:44:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.163.158.5 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786531489; cv=none; b=cY3onStwl2kMN7yrYv02T5v3ECXxN6F3qevaJkC4I/VDxuA/s1BQoTTpTn2DCswnHal4y/aypNBSti3ooxlqEUY0ZKLFOANfh0EDINatK49zM5cRghDiPY9j98tTQuwIbO9/ewP4ZPXBW6GDVECW3QbPVBuIdCxT2KZsr2NZJLE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786531489; c=relaxed/simple; bh=B+bU9YSpB0TYXntQhrUYlqd31TL7yh7e15RGlAhPAqw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=l5XcDcJHx1bSwXQL/VfPdHmiJZZa5yojX3VAbJjJAs77mjz9JJKS2x96VLTQu2etdLykDuPJPR6xFDGkFnUZZDh3uNe9qYMVfrLmuL7a8Gdf/9HlY9ERbG6jizwVjN2a8ajoCMFeidI26RJIV74Jezn32461nrd1FphKi3CKNEo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.ibm.com; spf=pass smtp.mailfrom=linux.ibm.com; dkim=pass (2048-bit key) header.d=ibm.com header.i=@ibm.com header.b=YLnl66v+; arc=none smtp.client-ip=148.163.158.5 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.ibm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.ibm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=ibm.com header.i=@ibm.com header.b="YLnl66v+" Received: from pps.filterd (m0360072.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 67CA1cCx3206607; Wed, 12 Aug 2026 10:44:43 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=pp1; bh=hPPoKDOrhgcw4CJUp UhW0xb99grtv8JmAtpk/TYqLXU=; b=YLnl66v+v+rsq73acUL8E1M0eEaoEsbpi 4J3BpS70fMtNJWdUWNJnja9e9+iUi5Z7NRJ4b9Xa+M32yyuDiS41xilCi0vc8z5f 2aaxjPcYGGlqg2wXDPiP6exoOZ5J/ArWS+MIo6dUH4Tijxft26ymjOxXVG0705qV n9Uy/paeC3S+Zm5oZyFjlsRsX6r4rAwRXmna8O5LtZsxFWUq9ue3EgV9DR/7Tf0M siajhWMvWta4uFY2y46J1kBkjQ9Y+BZ4TkMCA7G3YQBw/QC3mbZadrUD5QmO1Yi7 nW7TWueNO6mfhq5oiThmFajXiPLZt/N3yvNJ3MZLochANLGBAw2rw== Received: from ppma23.wdc07v.mail.ibm.com (5d.69.3da9.ip4.static.sl-reverse.com [169.61.105.93]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 4fwvnw976f-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 12 Aug 2026 10:44:43 +0000 (GMT) Received: from pps.filterd (ppma23.wdc07v.mail.ibm.com [127.0.0.1]) by ppma23.wdc07v.mail.ibm.com (8.18.1.7/8.18.1.7) with ESMTP id 67CAfSsm025167; Wed, 12 Aug 2026 10:44:42 GMT Received: from smtprelay05.fra02v.mail.ibm.com ([9.218.2.225]) by ppma23.wdc07v.mail.ibm.com (PPS) with ESMTPS id 4fxg9h5hxy-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 12 Aug 2026 10:44:42 +0000 (GMT) Received: from smtpav04.fra02v.mail.ibm.com (smtpav04.fra02v.mail.ibm.com [10.20.54.103]) by smtprelay05.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 67CAickJ47448562 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 12 Aug 2026 10:44:38 GMT Received: from smtpav04.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 5963820040; Wed, 12 Aug 2026 10:44:38 +0000 (GMT) Received: from smtpav04.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 2B2CE2004D; Wed, 12 Aug 2026 10:44:38 +0000 (GMT) Received: from p-imbrenda.ehn-de.ibm.com (unknown [9.224.75.30]) by smtpav04.fra02v.mail.ibm.com (Postfix) with ESMTP; Wed, 12 Aug 2026 10:44:38 +0000 (GMT) From: Claudio Imbrenda To: linux-kernel@vger.kernel.org Cc: kvm@vger.kernel.org, linux-s390@vger.kernel.org, borntraeger@de.ibm.com, frankja@linux.ibm.com, david@kernel.org, seiden@linux.ibm.com, nrb@linux.ibm.com, schlameuss@linux.ibm.com, gra@linux.ibm.com Subject: [PATCH v2 7/9] KVM: s390: Fix kvm_s390_clear_pv_state() Date: Wed, 12 Aug 2026 12:44:34 +0200 Message-ID: <20260812104436.109741-8-imbrenda@linux.ibm.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260812104436.109741-1-imbrenda@linux.ibm.com> References: <20260812104436.109741-1-imbrenda@linux.ibm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-TM-AS-GCONF: 00 X-Authority-Analysis: v=2.4 cv=RsP16imK c=1 sm=1 tr=0 ts=6a7c4e9b cx=c_pps a=3Bg1Hr4SwmMryq2xdFQyZA==:117 a=3Bg1Hr4SwmMryq2xdFQyZA==:17 a=Sv0fKeRqtYgA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=RzCfie-kr_QcCd8fBx8p:22 a=VnNF1IyMAAAA:8 a=aapLlF3kuFkAvhSc48UA:9 X-Proofpoint-GUID: 3NCI1x_aID3q9IptVdl2AUSiyz78WQnj X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODEyMDA4NCBTYWx0ZWRfX+5pj0zb0RCDN gtabMvKckJIF5mNs0T1R9+FvWSlQbKBCDWnD23mIKqS5pzmb6YgeO27onjpbXWEV4S9nuRbfghP rmx77H1Ys+WYdnoFfue7+iBcsNW4cEVr/S41UAJI4Q3u2zkc89xrMQrkhJ1xP3gTHsI9VhP+dff rNJk70F8hM3a7OY431SyJjeH4OyBgxem+2DI8tqTiwfXQPm/CexubJ2Prct/zCLyNWCnmnBeUmO uNl6nxQtVP3qDUJ3L8K9/vIcPC4XJotoyN1nxoc43Oaar657hVjTppHDNj5UeRL3BSW4pG87mN5 KlXIlLtdSGcK+6TkbC1V7gA2HALa01ubtqKD1eHY2tVISINY7UFvvPxtNU7lQQqja8kYaaRyeXn cFUbUeXB4/C12NKILstgP3P5q3C3MyIpcqte1g2zSMbDoIHz/bLqCTGr0GcEfxiGHZIrWxUmmaB a9Rb0sK1yfaAPcRJBKw== X-Proofpoint-ORIG-GUID: 3NCI1x_aID3q9IptVdl2AUSiyz78WQnj X-Proofpoint-Spam-Info: AW1haW4tMjYwODEyMDA4NCBTYWx0ZWRfXxmUBrwR395K9 Gv/Y1x8AEhqeYXzFvjgzZHdr77KuzS+F0Td7YzYMrKjDwL+2ki+BEK2+Uag/LBNiynkMAdlzVi1 5qtbhC8YYQR4WbVZ1BEUo0LKBymGrgk= X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-08-12_03,2026-08-10_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 impostorscore=0 suspectscore=0 clxscore=1015 malwarescore=0 phishscore=0 adultscore=0 lowpriorityscore=0 priorityscore=1501 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608120084 Content-Type: text/plain; charset="utf-8" kvm_s390_clear_pv_state() needs to also clear the dumping flag, to allow the protected VM to be started again (as non-protected, with all protected state safely destroyed) after a forced reboot while a protected dump was ongoing and not completed. Fixes: e40df9efd68a ("KVM: s390: pv: clear the state without memset") Signed-off-by: Claudio Imbrenda Reviewed-by: Christian Borntraeger Acked-by: Christoph Schlameuss --- arch/s390/kvm/pv.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/arch/s390/kvm/pv.c b/arch/s390/kvm/pv.c index b02e0159d3cd..98a9a57f71b9 100644 --- a/arch/s390/kvm/pv.c +++ b/arch/s390/kvm/pv.c @@ -242,6 +242,10 @@ static void kvm_s390_clear_pv_state(struct kvm *kvm) kvm->arch.pv.guest_len =3D 0; kvm->arch.pv.stor_base =3D 0; kvm->arch.pv.stor_var =3D NULL; + if (kvm->arch.pv.dumping) { + kvm_s390_vcpu_unblock_all(kvm); + kvm->arch.pv.dumping =3D false; + } } =20 static void kvm_s390_pv_dispose_cpu(struct kvm_vcpu *vcpu, bool free_stor_= base) --=20 2.55.0 From nobody Tue Sep 29 04:39:33 2026 Received: from mx0b-001b2d01.pphosted.com (mx0b-001b2d01.pphosted.com [148.163.158.5]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7B84042AFB2; Wed, 12 Aug 2026 10:44:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.163.158.5 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786531490; cv=none; b=OUQGf8XcCn3wL8wbAMPyKnYJW4p5nHDCTRW5qljSSnhbOWT5fIq6eRy+OwPkshyNoZTozkwDW0exoplGkOchKNb7BSEW9WMinh/kj1w7bHhDg4+KYWM9H3I3KhrmsjUkCTslvWgofeTVfeVFFphhcISBd/6c2twvpKQ5MiYLdJk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786531490; c=relaxed/simple; bh=EnWUl9RMOsQwOEcTFoQExitZSRGSGbnZKHrln6vePUE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=etQUxFpfUXZj+j2xoNgn2bd1YzS/26HmtnopJH6b6VcgqI9YVUpyxnLS49QCZ0BhF+inPYHAYNE83QqmUui7K3+SacTYLdgzgoyvzO7luruR1g2egX7maCka+E+rkVrxiZ8psSFoZEZq6mt48KMvF+sUurQn8APIpUvhb+yvxWo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.ibm.com; spf=pass smtp.mailfrom=linux.ibm.com; dkim=pass (2048-bit key) header.d=ibm.com header.i=@ibm.com header.b=j241I2Nq; arc=none smtp.client-ip=148.163.158.5 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.ibm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.ibm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=ibm.com header.i=@ibm.com header.b="j241I2Nq" Received: from pps.filterd (m0356516.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 67CA1b3R3086502; Wed, 12 Aug 2026 10:44:44 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=pp1; bh=ZyomH9e02+wc24Id2 Rq1y7qJrzevhou1WWekxroTvP8=; b=j241I2NqrpcP4m5U0oKMD13Zi9z9268cz 4ccFQqS/v4lbprbcXQcOAmQ8QQt64Qmcs376IN6s8qOLt3J36k0zsEGJEU2yIicR jINCp5rjGN/dRNOw+yhoBIwJUK8YZ/9PJOAAjzf7fIV/UkCBbGAzJInY80RyY2FJ GTaomX+xobbYnb136AWlBUOZR3BZ3RZ8JonLtclGZoo51yhLQg0eEv0Lnuyvb/p3 Fg5d2z3lPNLqE+ABuPBm9uNgs1Aq+08QofGoHIT0IqnuPoP9swDWXwBzQ7UlKIHs YuBF6G1cM4vH1paKhdSm4pO03uD4an3eB6kapgImv+f8p+Tn1xBLA== Received: from ppma12.dal12v.mail.ibm.com (dc.9e.1632.ip4.static.sl-reverse.com [50.22.158.220]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 4fwvp317jw-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 12 Aug 2026 10:44:44 +0000 (GMT) Received: from pps.filterd (ppma12.dal12v.mail.ibm.com [127.0.0.1]) by ppma12.dal12v.mail.ibm.com (8.18.1.7/8.18.1.7) with ESMTP id 67CAfGLd020958; Wed, 12 Aug 2026 10:44:43 GMT Received: from smtprelay05.fra02v.mail.ibm.com ([9.218.2.225]) by ppma12.dal12v.mail.ibm.com (PPS) with ESMTPS id 4fxesq5se7-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 12 Aug 2026 10:44:43 +0000 (GMT) Received: from smtpav04.fra02v.mail.ibm.com (smtpav04.fra02v.mail.ibm.com [10.20.54.103]) by smtprelay05.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 67CAicCN47448564 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 12 Aug 2026 10:44:38 GMT Received: from smtpav04.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 8C2AA2004D; Wed, 12 Aug 2026 10:44:38 +0000 (GMT) Received: from smtpav04.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 5FD4020043; Wed, 12 Aug 2026 10:44:38 +0000 (GMT) Received: from p-imbrenda.ehn-de.ibm.com (unknown [9.224.75.30]) by smtpav04.fra02v.mail.ibm.com (Postfix) with ESMTP; Wed, 12 Aug 2026 10:44:38 +0000 (GMT) From: Claudio Imbrenda To: linux-kernel@vger.kernel.org Cc: kvm@vger.kernel.org, linux-s390@vger.kernel.org, borntraeger@de.ibm.com, frankja@linux.ibm.com, david@kernel.org, seiden@linux.ibm.com, nrb@linux.ibm.com, schlameuss@linux.ibm.com, gra@linux.ibm.com Subject: [PATCH v2 8/9] KVM: s390: Fix potential tiny kernel stack leak Date: Wed, 12 Aug 2026 12:44:35 +0200 Message-ID: <20260812104436.109741-9-imbrenda@linux.ibm.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260812104436.109741-1-imbrenda@linux.ibm.com> References: <20260812104436.109741-1-imbrenda@linux.ibm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-TM-AS-GCONF: 00 X-Authority-Analysis: v=2.4 cv=AMtp2X5w c=1 sm=1 tr=0 ts=6a7c4e9c cx=c_pps a=bLidbwmWQ0KltjZqbj+ezA==:117 a=bLidbwmWQ0KltjZqbj+ezA==:17 a=Sv0fKeRqtYgA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=Y2IxJ9c9Rs8Kov3niI8_:22 a=VnNF1IyMAAAA:8 a=geH3wxNwSTHpAUJZdnsA:9 X-Proofpoint-GUID: zKtHnT7cuHxN1Cfbn7xW3zQiN1SdrAyn X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODEyMDA4NCBTYWx0ZWRfX+J6W8J4JGWcA qg14DnlIzCmCyk6zMaX7F90n7lqwRrDq5jlbCQ+p+O4sRb0EP8hGLe69w4POFWi23wSoqo5B8x7 VGaqP7cbSYYbbLke+sgeJ5vvWj5rtu8hauYUhFI72CSmXW3z9oDrmZM7n+Z0LaSVqPmjylE5ekY yzskKDhu+yz5ybG+/afFdMZeeN/kK/Tnx2ck0whiENNWL7WyRaYhdd7VYzUg7qDS0kfV9UhBCYL 2e3TCUJHj81Bqik0paX0701x60RZ2ELIhxh/7/a727J+W2Cm7ylAKf+Hbo36s1sLnDJSluonSg7 fHEH2YnHzO7f9FO8SPPnnUxVyw4nP6vOhvOUawI8hzxeb8+wh/MzFAmlYpoVmKBLexX3ktxycA5 NcYang1rz0Mzh7sPMN8WGfxT8yH1sIMf6HzFwjxtm4Ui/kvKz2alFW5IWWcsIKrODUWgFrlpx3E e6YwZ53KX3LQmirZoRA== X-Proofpoint-ORIG-GUID: zKtHnT7cuHxN1Cfbn7xW3zQiN1SdrAyn X-Proofpoint-Spam-Info: AW1haW4tMjYwODEyMDA4NCBTYWx0ZWRfX/jEABY1L4PMo hEn5hRKwXyfxBkPMw9w4aHSRvFTtQItTW7ZCUHvP7ZxVhqRAX6pwQmEoZCZ1b0ahJ0svFcuU0vt Yak+W+rr8k2jCCnFYo82VvwKR72CEYQ= X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-08-12_03,2026-08-10_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 adultscore=0 lowpriorityscore=0 clxscore=1015 priorityscore=1501 impostorscore=0 phishscore=0 spamscore=0 bulkscore=0 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608120084 Content-Type: text/plain; charset="utf-8" In some circumstances, one bit of kernel stack could have been leaked from dat_cond_set_storage_key(). Fix by clearing prev before use. Fixes: 8e03e8316eb2 ("KVM: s390: KVM page table management functions: stora= ge keys") Signed-off-by: Claudio Imbrenda Reviewed-by: Christian Borntraeger Reviewed-by: Christoph Schlameuss --- arch/s390/kvm/dat.c | 1 + 1 file changed, 1 insertion(+) diff --git a/arch/s390/kvm/dat.c b/arch/s390/kvm/dat.c index f4dd6f783417..f2ea013cb33e 100644 --- a/arch/s390/kvm/dat.c +++ b/arch/s390/kvm/dat.c @@ -737,6 +737,7 @@ int dat_cond_set_storage_key(struct kvm_s390_mmu_cache = *mmc, union asce asce, gf pgste.fp =3D skey.fp; pgste.gc =3D skey.c; pgste.gr =3D skey.r; + prev.skey =3D 0; =20 if (!ptep->h.i) { rc =3D page_cond_set_storage_key(pte_origin(*ptep), skey, &prev, nq, mr,= mc); --=20 2.55.0 From nobody Tue Sep 29 04:39:33 2026 Received: from mx0a-001b2d01.pphosted.com (mx0a-001b2d01.pphosted.com [148.163.156.1]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 37A1742AF82; Wed, 12 Aug 2026 10:44:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.163.156.1 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786531489; cv=none; b=HnvwJqpPtxxg0OcUr5iprPnJlPQkc35ZMaJ++5jV/cfzqGHBpy9vmKCjASj05LpeT9SrRsudNQOV8Yfszlb4oKz2p1XfW/wTptVQUBSrBgy6cDuG9T8OvfSadnk6C7t1jaSHo4RAXZpbIRoxsPZQt/no3NB/AY2cvYpIr8BBYAs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786531489; c=relaxed/simple; bh=TODtbCC3cth5fnzucKCWcEe+7zIDmmAaKQMpubzKM58=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=S8QUTenxNcGkXd+bnU51zNcuava16DC5yyk0fPUZmJml2ogQrQhYgMxMqzmt4albgyLXwKy7x9zQYwyG22MaeTUSLc2bTgRzYyv0JaxMmdDNV/q36OPSirkfbdKu1UhDDIPu5YSrQ6i9ph5oPnS+9li/zXkSbD4QUrGLTUUunMk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.ibm.com; spf=pass smtp.mailfrom=linux.ibm.com; dkim=pass (2048-bit key) header.d=ibm.com header.i=@ibm.com header.b=CY92Iydt; arc=none smtp.client-ip=148.163.156.1 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.ibm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.ibm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=ibm.com header.i=@ibm.com header.b="CY92Iydt" Received: from pps.filterd (m0353729.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 67CA1cqf1306654; Wed, 12 Aug 2026 10:44:44 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=pp1; bh=SHMfE6tZjaWLRVp1X Nlc0KPBLh0pkFrmLT7g5aBRxqc=; b=CY92Iydt4Rkk+KIkQIZdCTNKOUBzP0kA+ BeMoROwkIV2q0TQ7hqT4WsztXbkBvpFQ5CJa9/JFIFa0M+bFF0cemrB29s6IVc1c YxGbYG2EfMdA111uhxPgkZR6y3g4L+At2XK5RxZVFSONB9HK1Km+dS4vPdCBJAh+ zz4KhShdFPfkKwb/1z/Y5nllgVYUZ2iOE1n4BjlENUPNWqRzcaeAChli9yLx5YQ4 ZnhhGqdSFo9HzbEYv0DMRzRoj3hF+c09J2R55L0yIVi8P8tr+UwciVtj76vfyY7a aSE3L6haBSl17IyNCk9SnegiH8NPDVfHVcVNunIx2tAOglFr8GYxg== Received: from ppma23.wdc07v.mail.ibm.com (5d.69.3da9.ip4.static.sl-reverse.com [169.61.105.93]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 4fwvk01ynt-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 12 Aug 2026 10:44:44 +0000 (GMT) Received: from pps.filterd (ppma23.wdc07v.mail.ibm.com [127.0.0.1]) by ppma23.wdc07v.mail.ibm.com (8.18.1.7/8.18.1.7) with ESMTP id 67CAfIJ9025117; Wed, 12 Aug 2026 10:44:43 GMT Received: from smtprelay05.fra02v.mail.ibm.com ([9.218.2.225]) by ppma23.wdc07v.mail.ibm.com (PPS) with ESMTPS id 4fxg9h5hy0-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 12 Aug 2026 10:44:43 +0000 (GMT) Received: from smtpav04.fra02v.mail.ibm.com (smtpav04.fra02v.mail.ibm.com [10.20.54.103]) by smtprelay05.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 67CAic2447448566 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 12 Aug 2026 10:44:38 GMT Received: from smtpav04.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id B481720043; Wed, 12 Aug 2026 10:44:38 +0000 (GMT) Received: from smtpav04.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 911DF20040; Wed, 12 Aug 2026 10:44:38 +0000 (GMT) Received: from p-imbrenda.ehn-de.ibm.com (unknown [9.224.75.30]) by smtpav04.fra02v.mail.ibm.com (Postfix) with ESMTP; Wed, 12 Aug 2026 10:44:38 +0000 (GMT) From: Claudio Imbrenda To: linux-kernel@vger.kernel.org Cc: kvm@vger.kernel.org, linux-s390@vger.kernel.org, borntraeger@de.ibm.com, frankja@linux.ibm.com, david@kernel.org, seiden@linux.ibm.com, nrb@linux.ibm.com, schlameuss@linux.ibm.com, gra@linux.ibm.com Subject: [PATCH v2 9/9] KVM: s390: Fix _gaccess_shadow_fault() Date: Wed, 12 Aug 2026 12:44:36 +0200 Message-ID: <20260812104436.109741-10-imbrenda@linux.ibm.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260812104436.109741-1-imbrenda@linux.ibm.com> References: <20260812104436.109741-1-imbrenda@linux.ibm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-TM-AS-GCONF: 00 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODEyMDA4NCBTYWx0ZWRfXwLF4Fs0B74qH +LwV0hAFl6WUHsPpE5XubL2l2lKF772LnhWTAv6EzkVOr1Wq7tEkWaSB4a7823hNDqTZ+xtzpCu IahJwsaVZF0fpGY36ab1pk/Gulr1TAqaFl2T4CdcS5r3N8OpfVU06IVZ5XRRx04115BRCizK1yp xDK6Lih5iTf3iLoNyamnyBcVtgbLWMXLdFfs06bbuNTTUM5bZc0uZn4Pd4iV3/Qxm0RjimVyvAN 53pqtf8b8+k8tbMafX2vUMAF+j4I4SGRKRx1RWlvh3xpntfblUC0yoF4DPo5WtJ0RYn15DN/Xfv c3Vrgh/KHPy0TftTdjhN65K61gFgYNZWHGghimBE6v2SD/Bym1bpdRbPn/bY32XutJEQvI7NZOU Xtg1WeuSzgcHclz36Eo7W3x4HCgq6vJU6cFklNMhJsC4MxFguoF+19h9RsUT3klTdamfg/y+VBV gpLihxOzZcCzPXfAy/Q== X-Proofpoint-Spam-Info: AW1haW4tMjYwODEyMDA4NCBTYWx0ZWRfX4Mb6TM+VHRae 9zgutF0KeSd9uHhHS1csPEkJpMPJYug6JwZNa/qJJe0tOhjAH2qWfAOlmLVhUXDgYWRpMT/QM92 0dus1kn2xbZpjGp9on+AP1Ot/yvfKN0= X-Authority-Analysis: v=2.4 cv=RqD16imK c=1 sm=1 tr=0 ts=6a7c4e9c cx=c_pps a=3Bg1Hr4SwmMryq2xdFQyZA==:117 a=3Bg1Hr4SwmMryq2xdFQyZA==:17 a=Sv0fKeRqtYgA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=uAbxVGIbfxUO_5tXvNgY:22 a=VnNF1IyMAAAA:8 a=E-UwkBRaFZ51XR-txJMA:9 X-Proofpoint-GUID: n3pp338sCFzIjwFHl1bibhBnoMV71W_N X-Proofpoint-ORIG-GUID: n3pp338sCFzIjwFHl1bibhBnoMV71W_N X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-08-12_03,2026-08-10_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 priorityscore=1501 suspectscore=0 lowpriorityscore=0 clxscore=1015 adultscore=0 bulkscore=0 malwarescore=0 impostorscore=0 spamscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608120084 Content-Type: text/plain; charset="utf-8" In some circumstances, it is possible that the page of nested guest memory that is being shadowed is not present at all in the parent guest gmap. dat_entry_walk() will not find any leaf entry and return with -ENOENT, which will erroneously be propagated all the way to userspace. Fix by manually calling gmap_link() on the memory of the nested guest that is being shadowed if the mapping was not already present. Fixes: e38c884df921 ("KVM: s390: Switch to new gmap") Signed-off-by: Claudio Imbrenda --- arch/s390/kvm/gaccess.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/arch/s390/kvm/gaccess.c b/arch/s390/kvm/gaccess.c index 36102b2727fb..f3a889988cdb 100644 --- a/arch/s390/kvm/gaccess.c +++ b/arch/s390/kvm/gaccess.c @@ -1507,6 +1507,7 @@ static int _do_shadow_crste(struct kvm_s390_mmu_cache= *mc, struct gmap *sg, gpa_ static int _gaccess_do_shadow(struct kvm_s390_mmu_cache *mc, struct gmap *= sg, unsigned long saddr, struct pgtwalk *w) { + struct kvm_memory_slot *slot; struct guest_fault *entries; int flags, i, hl, gl, l, rc; union crste *table, *host; @@ -1551,8 +1552,17 @@ static int _gaccess_do_shadow(struct kvm_s390_mmu_ca= che *mc, struct gmap *sg, return -EAGAIN; } =20 +retry: rc =3D dat_entry_walk(NULL, entries[LEVEL_MEM].gfn, sg->parent->asce, DAT= _WALK_LEAF, TABLE_TYPE_PAGE_TABLE, &host, &ptep_h); + if (rc =3D=3D -ENOENT) { + slot =3D gfn_to_memslot(sg->kvm, entries[LEVEL_MEM].gfn); + if (!slot) + return PGM_ADDRESSING; + rc =3D gmap_link(mc, sg->parent, entries + LEVEL_MEM, slot); + if (!rc) + goto retry; + } if (rc) return rc; =20 --=20 2.55.0