From mboxrd@z Thu Jan 1 00:00:00 1970 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 BA88D3F54B6; Mon, 27 Jul 2026 09:57:41 +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=1785146263; cv=none; b=eEbQBkKw7EIkYbY2keNuYmO5kmW63moXgK8r27z/eBEu5i0qFsDumayt1H9VAKsN+l9jJnr/9M3GjUGttpR+GUSzcaT6m9YcAFCqykPQZymqnrYCFV6XI4fesLjIFNyqloz/JNTHM8QPRGPMi+0T5GEO+76ZDR4Pct9BFyxZtnY= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785146263; c=relaxed/simple; bh=Zf2+n721G/Y4FWEk934psjO5YNP5l5bbGy4jwNNx0XU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=t1jIF8dQI9BPJ3ef4bA80SUIFPuMFPRp4vTuxxuVuTfWJQPVENZ+C03my78xzgjzbP9lAXPdLKKPSCqXw/SuusnNtNWARZMGVcbeHmbcqBtEXnDruJ+s4/TAL1vgtbK34lZpv+CS1U8oJaztHpU8Y2kr38yz6kTldsd1hlxkdDc= 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=GCZGr0L4; 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="GCZGr0L4" 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 66R9Ucs34154290; Mon, 27 Jul 2026 09:57:39 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=SW+aT2kW8gDznEQAY D+MGQV/96CJnfa7wE5Ysasjf9Q=; b=GCZGr0L4PhMhSMrQcznzOscYcTYbkcrwA Khq25S43fOMb+QStKvgANFVdbyIKEdAt5jMSZcvyAvC4XZyuEjAAlFOperZpzEeo i8Gns8dURIs6+nlsAKcIMMBkRaJLHBI5IH2Ov8t9cS5T6tw+wiXliYTh2ojmrp0a ANvVzHhhCr9Hssdz7+zSFPCXEw0dLzA+Rr0iqPUIgqTq54iR8RuNXCg2C+t33srl dmldZ3FcAdJZJ2UkL0oHCRk7M0nDcTr4+chqscjYaDLvBxJp3LJHGJiEOxjleCMq 1LB/Q834oR1NI2SGckzHX5sa4xG6tVZ8Ud55kmZUet763o8F6QZVA== 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 4fmuyc7bhy-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 27 Jul 2026 09:57:38 +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 66R9uD7l011519; Mon, 27 Jul 2026 09:57:37 GMT Received: from smtprelay02.dal12v.mail.ibm.com ([172.16.1.4]) by ppma23.wdc07v.mail.ibm.com (PPS) with ESMTPS id 4fn8yh4sfq-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 27 Jul 2026 09:57:37 +0000 (GMT) Received: from smtpav02.dal12v.mail.ibm.com (smtpav02.dal12v.mail.ibm.com [10.241.53.101]) by smtprelay02.dal12v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 66R9vaht27525826 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 27 Jul 2026 09:57:36 GMT Received: from smtpav02.dal12v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 903C758051; Mon, 27 Jul 2026 09:57:36 +0000 (GMT) Received: from smtpav02.dal12v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 450CE5805A; Mon, 27 Jul 2026 09:57:34 +0000 (GMT) Received: from b35lp69.lnxne.boe (unknown [9.87.84.240]) by smtpav02.dal12v.mail.ibm.com (Postfix) with ESMTP; Mon, 27 Jul 2026 09:57:34 +0000 (GMT) From: Christian Borntraeger To: Paolo Bonzini Cc: KVM , Janosch Frank , Claudio Imbrenda , David Hildenbrand , linux-s390 , Christian Borntraeger , Heiko Carstens , Vasily Gorbik , Alexander Gordeev , Sven Schnelle , Matthew Rosato , Jaehoon Kim , Douglas Freimuth , Farhan Ali Subject: [GIT PULL 5/7] KVM: s390: pci: Fix resource leak on IRQ registration failure Date: Mon, 27 Jul 2026 11:57:18 +0200 Message-ID: <20260727095720.9150-6-borntraeger@linux.ibm.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260727095720.9150-1-borntraeger@linux.ibm.com> References: <20260727095720.9150-1-borntraeger@linux.ibm.com> Precedence: bulk X-Mailing-List: linux-s390@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-TM-AS-GCONF: 00 X-Proofpoint-ORIG-GUID: 2Jxgb89YVnd_BXGbHLzroTpMZNhSonhW X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzI3MDA5NiBTYWx0ZWRfX5Fx1FllsRywV HgtGRAFjRttpJJP5i1DD+DaGeyGFDh9VMOpbA7C1jAjXYwvUlWkfwtUjSPQsS8SJPudHtL3qIRb XAw++L+5w95t7wwmfsaI5orTByeoyF8qiqtcocZUOlQ56XuzS3SA+2kxyS7RRpgpjNmKCurCBjt qAjp6VzJBReGUI6Kx9OCkgapl9tslXgxSZHeyECpXtRzWxbB8Iuuy07IsIOuaKRJT2uo+HuPu4t KGnHqwI5ioxBN/RjcD4QznFfhiGtw1RFyKqXvEP7OSKYdWFEBkqZhTMQEM2GmSAi9yXYtaIQAYH JwsyNsOGLEeYeZ7VdVIMpxxeAUTd9m8EXwzRJw8PGXutZQrYGsQq2CcmujBET+FYiDCvEmgbicm bKYJxF+XsxHiNbEnnh/vuOvbUBzr7BtFGrVbQwghspZs1UJhsAMkaZaw/BmkAZsGutfrNHhyWPC So57T8hIcufGFlJho2A== X-Proofpoint-Spam-Info: AW1haW4tMjYwNzI3MDA5NiBTYWx0ZWRfXyAIzd5FT35WC WbtMIuKPt0Ffye3WDZhb10rSrzHHOUzb77rPyOtl0Jl0w2HYvD0yXtKn231lC7WdGXUXA2gpkEc WfqmbW7K1qODojanMsr01ZfmxM6h+E0= X-Authority-Analysis: v=2.4 cv=AZeB2XXG c=1 sm=1 tr=0 ts=6a672b93 cx=c_pps a=3Bg1Hr4SwmMryq2xdFQyZA==:117 a=3Bg1Hr4SwmMryq2xdFQyZA==:17 a=RAioF0-LDSMA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=uAbxVGIbfxUO_5tXvNgY:22 a=VnNF1IyMAAAA:8 a=VwQbUJbxAAAA:8 a=oLYdd9eN5-LzSxCheKcA:9 X-Proofpoint-GUID: 2Jxgb89YVnd_BXGbHLzroTpMZNhSonhW X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-27_02,2026-07-24_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 priorityscore=1501 phishscore=0 adultscore=0 impostorscore=0 clxscore=1015 malwarescore=0 suspectscore=0 lowpriorityscore=0 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607270096 From: Farhan Ali 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 --- 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 1eb127fc9f89..50f495bc8303 100644 --- a/arch/s390/kvm/pci.c +++ b/arch/s390/kvm/pci.c @@ -344,19 +344,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.53.0