From mboxrd@z Thu Jan 1 00:00:00 1970 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 699A0314D37 for ; Mon, 10 Aug 2026 19:02:56 +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=1786388577; cv=none; b=qXd+WgBxj/Pt46g0Hbj76xu1/rzbPJXrSZ4ZWozJ88/0WZcRkKunfo7XlDuFTt9FAmxLP5wonhCLYbM9K7NVzqerDeV169b2kQmqbI4iXE6Shysm6vJxqzUJdJSW5UgEJRlFhYFqYwkuFLrMbdvvBeDn/HMbV4c+FY5UHfe1VWc= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786388577; c=relaxed/simple; bh=8+SJuRBzrDrStNm3+rxug9cuhdQPZyVbow+mJEmAyjg=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=eh3cuNF7lRKWpGLES2b30iwgtnCZph+RjwjvO3m/4IscAvNCLEYBtFqNUiYcF03VXv48XOzGZ2iiDvtbieO6A9WtMgdedvgmoHtrpV6gRGTjinhPsBdZTO1Qjyo5MN+U+uqk+BNBd76hCaIg0EKZvZBKzEi7VaJS/crUiyYzua0= 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=kzgJVdLk; 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="kzgJVdLk" Received: from pps.filterd (m0353725.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 67AJ2Fxm1382241; Mon, 10 Aug 2026 19:02:53 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=JJgCRGJhmYHsiMEtn it8r6J+pR0L8ayOjbObgh/+RW4=; b=kzgJVdLkNFytAGAq3dbDDiN7OoRvKvr/q usi9Ff4blZ+y+myjLOBNkYJCbuB5WdCci1/SOb0mgLiqWi8RYAH6unlsAI41nLDV /BK9nR1IgHprS/RkmyqcGEXRnMGaHTrYnRv2qyhiB1oiGthjPH8ce15x7/TdDcTL wPYtDb8hGX07fC52wnTBGN1V6aRsYNAkSk8E4D531PknzQ6KuQAVOsHFxVlx9cAE UZTnRdJd0dKuzo3zJwXOjN8aa2e5OC/2F6I1p20NLFjOZR/fTadjKImJQzq5cJse 2hf7o5LKHdi+a0Y5WD16CfKyCAkJhageBFzamA3v+dnuJkrbWH88A== 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 4fyb23jhv7-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 10 Aug 2026 19:02:53 +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 67AIfKJM022881; Mon, 10 Aug 2026 19:02:52 GMT Received: from smtprelay01.wdc07v.mail.ibm.com ([172.16.1.68]) by ppma21.wdc07v.mail.ibm.com (PPS) with ESMTPS id 4fxfsjp30y-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 10 Aug 2026 19:02:52 +0000 (GMT) Received: from smtpav01.wdc07v.mail.ibm.com (smtpav01.wdc07v.mail.ibm.com [10.39.53.228]) by smtprelay01.wdc07v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 67AJ2pei63504706 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 10 Aug 2026 19:02:51 GMT Received: from smtpav01.wdc07v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 8A6D058059; Mon, 10 Aug 2026 19:02:51 +0000 (GMT) Received: from smtpav01.wdc07v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id C072358055; Mon, 10 Aug 2026 19:02:50 +0000 (GMT) Received: from IBM-D32RQW3.ibm.com (unknown [9.61.246.243]) by smtpav01.wdc07v.mail.ibm.com (Postfix) with ESMTP; Mon, 10 Aug 2026 19:02:50 +0000 (GMT) From: Farhan Ali To: stable@vger.kernel.org, gregkh@linuxfoundation.org, sashal@kernel.org Cc: alifm@linux.ibm.com, Matthew Rosato , Christian Borntraeger Subject: [PATCH v2 3/3] KVM: s390: pci: Fix resource leak on IRQ registration failure Date: Mon, 10 Aug 2026 12:02:47 -0700 Message-ID: <20260810190247.6344-4-alifm@linux.ibm.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260810190247.6344-1-alifm@linux.ibm.com> References: <20260810190247.6344-1-alifm@linux.ibm.com> Precedence: bulk X-Mailing-List: stable@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-TM-AS-GCONF: 00 X-Authority-Analysis: v=2.4 cv=XqfK/1F9 c=1 sm=1 tr=0 ts=6a7a205d cx=c_pps a=GFwsV6G8L6GxiO2Y/PsHdQ==:117 a=GFwsV6G8L6GxiO2Y/PsHdQ==:17 a=Sv0fKeRqtYgA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=V8glGbnc2Ofi9Qvn3v5h:22 a=VwQbUJbxAAAA:8 a=VnNF1IyMAAAA:8 a=BhKMqK0UDOEe-qkoVwYA:9 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODEwMDE2MiBTYWx0ZWRfX5jQyCxWHUarx 80K0jE2XkwmEkTTzdRQJJBCRyLzykGOIQA0ggoPH57+oLqbmYX8oKZG+FOYndRk0gA03rcsiR0A jS0R0j85KCelDJ+NUjTsmWFpAU04rabSncLARFNBLIsoVrRfN13NEj8dv+daNUIl6qifpekHwqX tCelSuUVnMOM82g4zE81vlDuauERz9zwlz1Sp0iwYJ4kkpsCAX5WwGc2HTRZ3nUmqWaoIiqPe83 a6ToPTaAYOZYEPRMMeyKMXYPyoRQZILpVKp2VgJ/ly4yJV/WIsHKlGAL4U9TjEQA7CbVaNf5Kde Q0YaeFpPuejOCwfRlrIYxNUgZWmDqpjrbg5eHQxBMjich9FBN+450fVu+rQpn1XT5dy9KEwCukz l0DfGoJfLFTfQzRvmoEm/+ERfz8tKZ5qMdJVDaBsCGTdsglodPrqMNgb+cPE9eFDK8KbWRDKl0S SnsuvH+vbiAeMZz9T5A== X-Proofpoint-ORIG-GUID: rB0w5uyBDZujDBQYPNr-hXLk51uxaSaU X-Proofpoint-GUID: rB0w5uyBDZujDBQYPNr-hXLk51uxaSaU X-Proofpoint-Spam-Info: AW1haW4tMjYwODEwMDE2MiBTYWx0ZWRfXzxhtEmXxumc6 nPVbsM/Oe8RWj52cAZQOpw6G9ndICu5K5pFgJREqnmylV3r6b1hWsW0seO2atC3k9tiGipFHyS3 MYAfXsnwZUMlHiJnd70lvMynaiPMR7k= 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-10_05,2026-08-10_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 spamscore=0 adultscore=0 malwarescore=0 clxscore=1015 suspectscore=0 priorityscore=1501 impostorscore=0 phishscore=0 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608100162 Currently if kvm_zpci_set_airq() fails, kvm_s390_pci_aif_enable() returns the error code but doesn't do any resource cleanup thus leaking resources. Fix this by cleaning up all the resources such as the GAITE, AIBV, AISB and unpinning any pinned pages. While at it, remove dead code that stored FIB values that were never referenced. As part of the cleanup, we are also holding the aift_lock a bit longer, as we hold the lock while executing the MPCIFC instruction. Though this is not strictly necessary, it means we don't have to drop and re-acquire in the error case. Fixes: 3c5a1b6f0a18 ("KVM: s390: pci: provide routines for enabling/disabling interrupt forwarding") Cc: stable@vger.kernel.org Reviewed-by: Matthew Rosato Reviewed-by: Christian Borntraeger Signed-off-by: Farhan Ali Tested-by: Matthew Rosato Signed-off-by: Christian Borntraeger (cherry picked from commit 5580c9858f1e00f60191eb09c3add359836d60b6) [alifm@linux.ibm.com: Resolved merge conflict] Signed-off-by: Farhan Ali --- arch/s390/kvm/pci.c | 29 +++++++++++++++++++++-------- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/arch/s390/kvm/pci.c b/arch/s390/kvm/pci.c index 56a19c00d3b7..930c5141f2f8 100644 --- a/arch/s390/kvm/pci.c +++ b/arch/s390/kvm/pci.c @@ -360,19 +360,32 @@ static int kvm_s390_pci_aif_enable(struct zpci_dev *zdev, struct zpci_fib *fib, aift->kzdev[zdev->aisb] = zdev->kzdev; spin_unlock_irq(&aift->gait_lock); - /* Update guest FIB for re-issue */ - fib->fmt0.aisbo = zdev->aisb & 63; - fib->fmt0.aisb = virt_to_phys(aift->sbv->vector + (zdev->aisb / 64) * 8); - fib->fmt0.isc = gisc; - /* Save some guest fib values in the host for later use */ - zdev->kzdev->fib.fmt0.isc = fib->fmt0.isc; + zdev->kzdev->fib.fmt0.isc = gisc; zdev->kzdev->fib.fmt0.aibv = fib->fmt0.aibv; - mutex_unlock(&aift->aift_lock); /* Issue the clp to setup the irq now */ rc = kvm_zpci_set_airq(zdev); - return rc; + if (!rc) { + mutex_unlock(&aift->aift_lock); + return rc; + } + + /* Start cleanup */ + zdev->kzdev->fib.fmt0.isc = 0; + zdev->kzdev->fib.fmt0.aibv = 0; + + spin_lock_irq(&aift->gait_lock); + gaite->count--; + gaite->aisb = 0; + gaite->gisc = 0; + gaite->aisbo = 0; + gaite->gisa = 0; + aift->kzdev[zdev->aisb] = NULL; + spin_unlock_irq(&aift->gait_lock); + + airq_iv_release(zdev->aibv); + zdev->aibv = NULL; free_aisb: airq_iv_free_bit(aift->sbv, zdev->aisb); -- 2.43.0