From nobody Sat Jul 25 02:11:02 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 51C01446060; Mon, 20 Jul 2026 17:58:25 +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=1784570310; cv=none; b=lrkOh1pmh5V44xOKyzn5uXCLBYcimKz/VLJEDcDRY23fWmInrE9sHFV7E3AhYESy7iinMSrt7au72qEVPusrazofPMkhSr80T10lILABzzJDeJTMotD8vMoEONsZyV2BY7YKCIcinfBRtfoDN6icmgyBOIPzZ33Lr3NwUsvgPGg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784570310; c=relaxed/simple; bh=JcP9PixSey+zPC7bEDWe+KXuetvt0F7UwdBKq52/3N4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=j8shieIy3xTtrClDxrkVDbn+BIsiYcJxQQgCEXS8j9Kp4zlngv20FGUVqLtP5RSmu1JMfO1wqYmox/QtURYKxQdmWLawGWyvHeWp0QeEfsh9e5Bx1rIQzAvHovuwi8FzjsmS8NNEz8tBGukWqnvWycueUrWgjBBWTK12uA75Oak= 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=K1fMW5Ws; 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="K1fMW5Ws" 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 66KHCPv72812963; Mon, 20 Jul 2026 17:58:24 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=eyHG4APSlwxaNMQ6I 3JKLzvWUjUxyohiPkCqHugwBao=; b=K1fMW5WsSDDAYqhf87HrZnhWZSjHZ7R1J r00WeEWPwrYWXNE+mVC8+tJRuO9T14/FAmG+SqQDTFjDapWXC5Wshe49RLocNzHD 99lJn9l51CDKasMYeTUS1+Vrfem+M7KtWDxrXZCyT14vyuTYzwzE5s7fTywPyFNc jcExnZ30nGgEN6orqjO0ZhrobjM1mUzfs/h4T31Lpt/Ob0o/PanfEshD9I6Nazfn D1BQ9LXsqtFtiZpD55EU2y4twqzKvZgUFqmkwhcy6JuKYXL6QQ9rPsK01aaczI/H rZV1XEziIG9C7azah9aA7hFjvumA9nGUN66GFuacM69rQuv8pwlMw== 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 4fg7ah0hec-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 20 Jul 2026 17:58:24 +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 66KHnafv001686; Mon, 20 Jul 2026 17:58:23 GMT Received: from smtprelay03.wdc07v.mail.ibm.com ([172.16.1.70]) by ppma23.wdc07v.mail.ibm.com (PPS) with ESMTPS id 4fgnagxpm0-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 20 Jul 2026 17:58:23 +0000 (GMT) Received: from smtpav03.wdc07v.mail.ibm.com (smtpav03.wdc07v.mail.ibm.com [10.39.53.230]) by smtprelay03.wdc07v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 66KHvlgq30540528 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 20 Jul 2026 17:57:47 GMT Received: from smtpav03.wdc07v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 776335805C; Mon, 20 Jul 2026 17:58:22 +0000 (GMT) Received: from smtpav03.wdc07v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 744DB58054; Mon, 20 Jul 2026 17:58:21 +0000 (GMT) Received: from IBM-D32RQW3.ibm.com (unknown [9.61.254.89]) by smtpav03.wdc07v.mail.ibm.com (Postfix) with ESMTP; Mon, 20 Jul 2026 17:58:21 +0000 (GMT) From: Farhan Ali To: linux-kernel@vger.kernel.org, linux-s390@vger.kernel.org, kvm@vger.kernel.org Cc: alifm@linux.ibm.com, mjrosato@linux.ibm.com, borntraeger@linux.ibm.com, farman@linux.ibm.com Subject: [PATCH v3 1/4] KVM: s390: pci: Fix memory accounting for pinned/unpinned pages Date: Mon, 20 Jul 2026 10:58:16 -0700 Message-ID: <20260720175819.1723-2-alifm@linux.ibm.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260720175819.1723-1-alifm@linux.ibm.com> References: <20260720175819.1723-1-alifm@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-ORIG-GUID: Ojz22dkCorOtTf6Yze-AspE1W9yKyDkg X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzIwMDE5NCBTYWx0ZWRfX04xFo5u2Kfo2 f5Xj3rVXAqTs8CjwgMqrEATrT6el9ub++aJTC2n/v9lkzuyygrCgAQ9ERNWKkrhVn/Oq1+VKWs/ l76aMAvRNH6DhZlnJTpmvXeXQUE9YPCF2FtqVCl+7v+Ryba8ORFfD4W2SxNHNCfxF6pfriwO9ap 8KQ8l3ZOXmal+q+pq1MlSx/j+shjQyp1MMgRXZVjJLiBD4rZ/SO5/TRKJ90i1SYvruMo/a7f1qU JHA1trwgnaDho+zwx5mf1F3DTIGjvwYGfFiKmY1hQSRBdoxZfjdTlc4svhnUVIRRjxeXPvmivgn kiSz5mqmtGJS33Ajg+NLyONnlWj3k65ThJoUwXg4BetrGstgK9co65zLtEFW0QzlRil2riY4QgS JdhQcQgcyllCmHWVEPTdoolR10js/zurMUjJt+4XY3Gx2Mooh8s9saD33PPSpPf8mMdVHS2N1SD I+A6cWOH0xVI5oEfvhQ== X-Proofpoint-Spam-Info: AW1haW4tMjYwNzIwMDE5NCBTYWx0ZWRfXy3Yde5FWnFyX 97E1dKPKxcyF9SmwWsINTG5ha0ccwcrmvy6ahi0HAcBhS7UdYMPsUUPpYrkV7RuwG/zdOEGlZxx z3sT11Ui4m4vw5h+FFcdeDt1YbmcrEc= X-Proofpoint-GUID: Ojz22dkCorOtTf6Yze-AspE1W9yKyDkg X-Authority-Analysis: v=2.4 cv=SM5ykuvH c=1 sm=1 tr=0 ts=6a5e61c0 cx=c_pps a=3Bg1Hr4SwmMryq2xdFQyZA==:117 a=3Bg1Hr4SwmMryq2xdFQyZA==:17 a=RAioF0-LDSMA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=RzCfie-kr_QcCd8fBx8p:22 a=VnNF1IyMAAAA:8 a=EQJuD_CdQHuXhf-s-5YA:9 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-20_04,2026-07-20_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 lowpriorityscore=0 bulkscore=0 suspectscore=0 adultscore=0 spamscore=0 malwarescore=0 priorityscore=1501 phishscore=0 impostorscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607200194 Content-Type: text/plain; charset="utf-8" The account_mem() and unaccount_mem() functions call get_uid() which increments the reference count of struct user_struct on every invocation. But we don't decrement the count by calling free_uid(). It also accounted/unaccounted the pages against the current->mm. But its possible the unaccount_mem() can be called from a different process context than the one that originally pinned the pages. Let's fix this by storing the pinning process user_struct and mm_struct when accounting for pinned pages, and subsequently free these resources when the pages are unpinned. Fixes: 3c5a1b6f0a18 ("KVM: s390: pci: provide routines for enabling/disabli= ng interrupt forwarding") Signed-off-by: Farhan Ali --- arch/s390/kvm/pci.c | 38 ++++++++++++++++++++++++++++---------- arch/s390/kvm/pci.h | 2 ++ 2 files changed, 30 insertions(+), 10 deletions(-) diff --git a/arch/s390/kvm/pci.c b/arch/s390/kvm/pci.c index 720bb58cabe2..dd17f8a7b473 100644 --- a/arch/s390/kvm/pci.c +++ b/arch/s390/kvm/pci.c @@ -190,33 +190,51 @@ static int kvm_zpci_clear_airq(struct zpci_dev *zdev) return cc ? -EIO : 0; } =20 -static inline void unaccount_mem(unsigned long nr_pages) +static inline void unaccount_mem(struct kvm_zdev *kzdev, unsigned long nr_= pages) { - struct user_struct *user =3D get_uid(current_user()); + struct user_struct *user =3D kzdev->user_account; + struct mm_struct *mm_account =3D kzdev->mm_account; =20 - if (user) + if (user) { atomic_long_sub(nr_pages, &user->locked_vm); - if (current->mm) - atomic64_sub(nr_pages, ¤t->mm->pinned_vm); + free_uid(user); + kzdev->user_account =3D NULL; + } + + if (mm_account) { + atomic64_sub(nr_pages, &mm_account->pinned_vm); + mmdrop(mm_account); + kzdev->mm_account =3D NULL; + } } =20 -static inline int account_mem(unsigned long nr_pages) +static inline int account_mem(struct kvm_zdev *kzdev, unsigned long nr_pag= es) { struct user_struct *user =3D get_uid(current_user()); unsigned long page_limit, cur_pages, new_pages; + int rc =3D 0; =20 page_limit =3D rlimit(RLIMIT_MEMLOCK) >> PAGE_SHIFT; =20 cur_pages =3D atomic_long_read(&user->locked_vm); do { new_pages =3D cur_pages + nr_pages; - if (new_pages > page_limit) - return -ENOMEM; + if (new_pages > page_limit) { + rc =3D -ENOMEM; + goto out; + } } while (!atomic_long_try_cmpxchg(&user->locked_vm, &cur_pages, new_pages= )); =20 + mmgrab(current->mm); atomic64_add(nr_pages, ¤t->mm->pinned_vm); + kzdev->user_account =3D user; + kzdev->mm_account =3D current->mm; =20 return 0; + +out: + free_uid(user); + return rc; } =20 static int kvm_s390_pci_aif_enable(struct zpci_dev *zdev, struct zpci_fib = *fib, @@ -275,7 +293,7 @@ static int kvm_s390_pci_aif_enable(struct zpci_dev *zde= v, struct zpci_fib *fib, } =20 /* Account for pinned pages, roll back on failure */ - if (account_mem(pcount)) + if (account_mem(zdev->kzdev, pcount)) goto unpin2; =20 /* AISB must be allocated before we can fill in GAITE */ @@ -396,7 +414,7 @@ static int kvm_s390_pci_aif_disable(struct zpci_dev *zd= ev, bool force) pcount++; } if (pcount > 0) - unaccount_mem(pcount); + unaccount_mem(kzdev, pcount); out: mutex_unlock(&aift->aift_lock); =20 diff --git a/arch/s390/kvm/pci.h b/arch/s390/kvm/pci.h index ff0972dd5e71..544e6aa75e38 100644 --- a/arch/s390/kvm/pci.h +++ b/arch/s390/kvm/pci.h @@ -21,6 +21,8 @@ struct kvm_zdev { struct zpci_dev *zdev; struct kvm *kvm; struct zpci_fib fib; + struct user_struct *user_account; + struct mm_struct *mm_account; struct list_head entry; }; =20 --=20 2.43.0 From nobody Sat Jul 25 02:11:02 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 B7BDA417BE2; Mon, 20 Jul 2026 17:58:27 +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=1784570311; cv=none; b=iKPZZ0r6379pROya6pMeQacIWTl9eigt3qqSSIDLqFLoirRL+goZcrO/DSUD2otV3ZG663Rs2DgWXTDXtDRJTZtzAQLBumu7ZuJu67DTxX3cPIxoH0uZ2fkAvCxcQDUN43ytgT6QzRpR7e15cw4Gbgmswk0Woy3CUmrfalCrWqQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784570311; c=relaxed/simple; bh=/FCnwK2bYG5mPZx3iyQYNVlvTbFlLmWpD+OL4/OrUrU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=VAbuL7E28c8ujGx5G74ctUW1y2XfFu3xln1J90diTj3Bk62kHAeYJJNQfLNJTpaa9qvOQzpHqdACwiGaVckZ3ArGbOI3i+DGdKxiDi59H/eKs9jvUdwWxc+k22kcylWh2r4SqGY4xsrlRPqF4MOHx2nqiYwEvOqEe6tbSiy8XFU= 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=OlZ5ogJw; 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="OlZ5ogJw" 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 66KHBwxP2731470; Mon, 20 Jul 2026 17:58:25 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=NpY9tLW+7Lf/n9lqU bMid6TKV4aPj2Kx6ri/Ubyi1mY=; b=OlZ5ogJwG0vT0LaHsC4hryDDiuF9zaZV5 +gCsercmpFtwZj04kJg3gorPtpdn8+g9b25F5aL9Q/D642AelYJTI5HoVcA/LRQz i+5UTO3BXHLky7WKQv9UdDSpRPVdXH+N38zHJzF3WE6HGzABJMx5knMM+Q0Ii0hX bgNR15+AXoVxTzgrrvlRqos8VaqIlr6vT84rJpRipy3VoyXaHg2b0/KrTrYpw0ZN /dqv4XtBK+GNpfHQTBu5mTljWIL2ToGku94t/YrDj43lVpXPilUTQjQ6IlnkRcZv 7K25YmsIh6fTNrUJeVt/7YSUz9MhrzC4MKFQZeA7Nd8HMdL6rq8rw== 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 4fg77k0jed-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 20 Jul 2026 17:58:25 +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 66KHnnBp000379; Mon, 20 Jul 2026 17:58:24 GMT Received: from smtprelay04.wdc07v.mail.ibm.com ([172.16.1.71]) by ppma21.wdc07v.mail.ibm.com (PPS) with ESMTPS id 4fgmtjpqus-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 20 Jul 2026 17:58:24 +0000 (GMT) Received: from smtpav03.wdc07v.mail.ibm.com (smtpav03.wdc07v.mail.ibm.com [10.39.53.230]) by smtprelay04.wdc07v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 66KHwNdT33293042 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 20 Jul 2026 17:58:23 GMT Received: from smtpav03.wdc07v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 7F6BD5805A; Mon, 20 Jul 2026 17:58:23 +0000 (GMT) Received: from smtpav03.wdc07v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id A4DFF5805C; Mon, 20 Jul 2026 17:58:22 +0000 (GMT) Received: from IBM-D32RQW3.ibm.com (unknown [9.61.254.89]) by smtpav03.wdc07v.mail.ibm.com (Postfix) with ESMTP; Mon, 20 Jul 2026 17:58:22 +0000 (GMT) From: Farhan Ali To: linux-kernel@vger.kernel.org, linux-s390@vger.kernel.org, kvm@vger.kernel.org Cc: alifm@linux.ibm.com, mjrosato@linux.ibm.com, borntraeger@linux.ibm.com, farman@linux.ibm.com Subject: [PATCH v3 2/4] KVM: s390: pci: Fix missing error codes and memory unaccounting Date: Mon, 20 Jul 2026 10:58:17 -0700 Message-ID: <20260720175819.1723-3-alifm@linux.ibm.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260720175819.1723-1-alifm@linux.ibm.com> References: <20260720175819.1723-1-alifm@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=HJXz0Itv c=1 sm=1 tr=0 ts=6a5e61c1 cx=c_pps a=GFwsV6G8L6GxiO2Y/PsHdQ==:117 a=GFwsV6G8L6GxiO2Y/PsHdQ==:17 a=RAioF0-LDSMA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=Y2IxJ9c9Rs8Kov3niI8_:22 a=VnNF1IyMAAAA:8 a=g4erIPh_aaDScpLpsJUA:9 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzIwMDE5NCBTYWx0ZWRfX0vlJyP9CnRzv 2M/UJU2c5jTltmwhVSHIdHtRT0mmbk+mNz/PmzA7h3C6iGuslPtZ5NtjnmjdXk7Ibk+CoXgjLbN Lkkw4AGy8HSQ4P33KRrXt4QFH9+9T4lxSphJS3y/tg4MS0r+nSofPojwOewUuM1kHOGZtR5emC7 oNUcNoEJ/qyVNz7XSgfxMqP2di13qaV1++7ozJ+gyCfUgkeYUlbQqrLBSpjv1I/TEoY2qlAej4I 0pEwYFnBRGH2kOjMQxZ7j2LomUz3rqv0JwVFZdQ5YwlSEBmbMW0pwx9JdJrH64/HTuC7cBxDw4O +xWcL1I4yjoJFo83hKQ2Pq669x3CnhJtzmTN0OVQKAYQoT9b2uSwLrbeAbVy+WqOL///rOE8CzL mTGh1Ef3XkpSEa4s6fsMkI5EcLg0O9a4Zlzhg0lQrqXIHwHsoP/XZlUDpIZHtg+Z9S8q+2omR4k saCihepJua2KJzBCRrw== X-Proofpoint-ORIG-GUID: 4QTGYx1gwrOdfCGsPwI2APOeO1m8gCwM X-Proofpoint-Spam-Info: AW1haW4tMjYwNzIwMDE5NCBTYWx0ZWRfX4uk6VPO5oBTN xFXYqVCGnKzldYqlsHfFjJ61GoKq5Qy4rpHTQcFyNHI4hcG6xPTCU91fc1PrEssgNmAdUHeEYTB td2ElO41OS+iA4pIBiMv5SJ5lTKzBzA= X-Proofpoint-GUID: 4QTGYx1gwrOdfCGsPwI2APOeO1m8gCwM 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-20_04,2026-07-20_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 priorityscore=1501 lowpriorityscore=0 suspectscore=0 malwarescore=0 impostorscore=0 clxscore=1015 phishscore=0 spamscore=0 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607200194 Content-Type: text/plain; charset="utf-8" In kvm_s390_pci_aif_enable() two error paths failed to set error code, causing the function to return 0 on failure. It also failed to rollback memory accounting on failure. Fix both by propagating error code on failure and calling unaccount_mem() in the cleanup path. Fixes: 3c5a1b6f0a18 ("KVM: s390: pci: provide routines for enabling/disabli= ng interrupt forwarding") Signed-off-by: Farhan Ali --- arch/s390/kvm/pci.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/arch/s390/kvm/pci.c b/arch/s390/kvm/pci.c index dd17f8a7b473..9fdb6e383b18 100644 --- a/arch/s390/kvm/pci.c +++ b/arch/s390/kvm/pci.c @@ -293,14 +293,17 @@ static int kvm_s390_pci_aif_enable(struct zpci_dev *z= dev, struct zpci_fib *fib, } =20 /* Account for pinned pages, roll back on failure */ - if (account_mem(zdev->kzdev, pcount)) + rc =3D account_mem(zdev->kzdev, pcount); + if (rc) goto unpin2; =20 /* AISB must be allocated before we can fill in GAITE */ mutex_lock(&aift->aift_lock); bit =3D airq_iv_alloc_bit(aift->sbv); - if (bit =3D=3D -1UL) + if (bit =3D=3D -1UL) { + rc =3D -ENOMEM; goto unlock; + } zdev->aisb =3D bit; /* store the summary bit number */ zdev->aibv =3D airq_iv_create(msi_vecs, AIRQ_IV_DATA | AIRQ_IV_BITLOCK | @@ -344,6 +347,8 @@ static int kvm_s390_pci_aif_enable(struct zpci_dev *zde= v, struct zpci_fib *fib, return rc; =20 unlock: + if (pcount > 0) + unaccount_mem(zdev->kzdev, pcount); mutex_unlock(&aift->aift_lock); unpin2: if (fib->fmt0.sum =3D=3D 1) --=20 2.43.0 From nobody Sat Jul 25 02:11:02 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 14755442FD8; Mon, 20 Jul 2026 17:58:27 +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=1784570312; cv=none; b=b43aZnjj4AwgPSjxt07ASrEBwFTwKxuQ3eU6CS4u+UUdSW5j9RuOf5qFS0D1f3/lf5PNp4FAqW/8nIJhNWhJmTDUCztS7XqeaMJ1F0MKiPaUNVt6PTF5YANex3uSgKgJ3IuK3xagIPJpesycaVvBXr9xkZXGDwP4l/t//wOWxts= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784570312; c=relaxed/simple; bh=CcqKWYY7ZsYS5qGMWh/UlpC4JOWFday01Sj2aFj3F7Y=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=JOKgq+Ki7mLPsgOqJ8rdBZGT1012HCaz0PYLxzqrka15uAQ9GYwYLi3wpoQ+4r+Mdi70UuN1tJAvwbUPJG5tOcfL0QbdmuyHS6gDtI5aoSQDaDzZd2jlTkVZRsd/q2pXLgI80Jhxw8AzTcyWtlVd8xQtA00wpEjSpRVLGC1rrqQ= 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=mDDbDgWw; 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="mDDbDgWw" 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 66KHBjhn2730700; Mon, 20 Jul 2026 17:58:26 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=+h3hHDJBubYDrmeM2 +O+lmqQ0VlmK2E3XRocYf/CfIg=; b=mDDbDgWw09WDmZR0wqZNL7/+UFZuPERw3 zFo7kmrCxIPzFWDnJPwAgji5jqr6TF4KkZZ/jXz/TwRwWaBTbB98mhy+BEUlr7C1 rhhL95JGwFkYdtNQmMPdQGhAZqWKlqDByRufh+VP5YDOs683mu/yA8dVTzhC6lMv wrHeMx1a7GcdKXkA9Fd8hP9d5TdGc8rVGutYgiBlC5Ykg3Ie6OtnhGl1gbZ2gvln szRrpVRHGFD015m4ELhGZEdU/NkLm+zTxxgKUo8evS3bpo0LeYYkevRD5RSj5Zis RKqBnyx/O3+EeXYCYJUpdVTkf6f0CBwynI7fnStstlSK5vibvY1rA== 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 4fg77k0jee-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 20 Jul 2026 17:58:26 +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 66KHnZtR022754; Mon, 20 Jul 2026 17:58:25 GMT Received: from smtprelay05.wdc07v.mail.ibm.com ([172.16.1.72]) by ppma22.wdc07v.mail.ibm.com (PPS) with ESMTPS id 4fgm6vxuw8-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 20 Jul 2026 17:58:25 +0000 (GMT) Received: from smtpav03.wdc07v.mail.ibm.com (smtpav03.wdc07v.mail.ibm.com [10.39.53.230]) by smtprelay05.wdc07v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 66KHwO0X28115614 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 20 Jul 2026 17:58:24 GMT Received: from smtpav03.wdc07v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 8CC5158062; Mon, 20 Jul 2026 17:58:24 +0000 (GMT) Received: from smtpav03.wdc07v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id ADCDA58054; Mon, 20 Jul 2026 17:58:23 +0000 (GMT) Received: from IBM-D32RQW3.ibm.com (unknown [9.61.254.89]) by smtpav03.wdc07v.mail.ibm.com (Postfix) with ESMTP; Mon, 20 Jul 2026 17:58:23 +0000 (GMT) From: Farhan Ali To: linux-kernel@vger.kernel.org, linux-s390@vger.kernel.org, kvm@vger.kernel.org Cc: alifm@linux.ibm.com, mjrosato@linux.ibm.com, borntraeger@linux.ibm.com, farman@linux.ibm.com Subject: [PATCH v3 3/4] KVM: s390: pci: Fix NULL dereference on AIBV allocation failure Date: Mon, 20 Jul 2026 10:58:18 -0700 Message-ID: <20260720175819.1723-4-alifm@linux.ibm.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260720175819.1723-1-alifm@linux.ibm.com> References: <20260720175819.1723-1-alifm@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=HJXz0Itv c=1 sm=1 tr=0 ts=6a5e61c2 cx=c_pps a=5BHTudwdYE3Te8bg5FgnPg==:117 a=5BHTudwdYE3Te8bg5FgnPg==:17 a=RAioF0-LDSMA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=Y2IxJ9c9Rs8Kov3niI8_:22 a=VnNF1IyMAAAA:8 a=VpFnpj6RERqEfYQjrFkA:9 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzIwMDE5NCBTYWx0ZWRfXyGmy0gqw/Hcl 9CXBfmeqIdjRpRmmSyS3F1YjYX+TRAxd0XSrKSnDjDMN/vETAN6s887kOBejuj3Oj/i5Fjw2TNn VlO8ZYjCzvkj/osAp/abKNrbj4yfPM1FhJgI+uMfdqjvprbNZThSITL5q0N3N994tzw635vXAkE yJLO5Pc0ziaAuEooVhbRauQFbY4xvi01qguGPuV8VMN9F7GgGkv5ovfvqH1dNO1cG5AOWegly2K OuYzbajGd7ftKZxmZxeAB4FonbFK7IFTKmHEFTXU246PkeKF+gpburmAthxOUHc+RLQgbbXT7IA /w7fbxPgk/p72csmm4wnXKSVe2eA/2xrtVU7oPiqFHvKcvVZwns2Ol88adNKAdWgTDQyRK5BAkW 5dDxm6MD8sVSaF77rIyQQBft8MBHreda+bydmH63ZmSOljcvLoLcX8NqfsQutQRJGD4EG2uVdGv R7vKBPEiw3DloEbmUrw== X-Proofpoint-ORIG-GUID: tY15_weEHjhuGitt1WrIdB25arv6NknL X-Proofpoint-Spam-Info: AW1haW4tMjYwNzIwMDE5NCBTYWx0ZWRfX94/hi7uTj36l Ftk8FQcS4E+SUWYDCVK6Jk3F+WaD05l8OGMc9QxW1Weukg6oGYCycorWz0wN9r4PSoetocbFxyF a3gu+9XXC48qRClZy54MhaaojVUvZ/g= X-Proofpoint-GUID: tY15_weEHjhuGitt1WrIdB25arv6NknL 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-20_04,2026-07-20_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 priorityscore=1501 lowpriorityscore=0 suspectscore=0 malwarescore=0 impostorscore=0 clxscore=1015 phishscore=0 spamscore=0 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607200194 Content-Type: text/plain; charset="utf-8" The airq_iv_create() can return NULL on failure, but the return value was never checked. If it fails, zdev->aibv will be NULL and fail when derefenced in kvm_zpci_set_airq(). Add a NULL check and free the previously allocated AISB bit and zdev->aisb on failure. Fixes: 3c5a1b6f0a18 ("KVM: s390: pci: provide routines for enabling/disabli= ng interrupt forwarding") Signed-off-by: Farhan Ali --- arch/s390/kvm/pci.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/arch/s390/kvm/pci.c b/arch/s390/kvm/pci.c index 9fdb6e383b18..85f4fb5d36b3 100644 --- a/arch/s390/kvm/pci.c +++ b/arch/s390/kvm/pci.c @@ -310,6 +310,11 @@ static int kvm_s390_pci_aif_enable(struct zpci_dev *zd= ev, struct zpci_fib *fib, AIRQ_IV_GUESTVEC, phys_to_virt(fib->fmt0.aibv)); =20 + if (!zdev->aibv) { + rc =3D -ENOMEM; + goto free_aisb; + } + spin_lock_irq(&aift->gait_lock); gaite =3D aift->gait + zdev->aisb; =20 @@ -346,6 +351,9 @@ static int kvm_s390_pci_aif_enable(struct zpci_dev *zde= v, struct zpci_fib *fib, rc =3D kvm_zpci_set_airq(zdev); return rc; =20 +free_aisb: + airq_iv_free_bit(aift->sbv, zdev->aisb); + zdev->aisb =3D 0; unlock: if (pcount > 0) unaccount_mem(zdev->kzdev, pcount); --=20 2.43.0 From nobody Sat Jul 25 02:11:02 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 B76B4446838; Mon, 20 Jul 2026 17:58:29 +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=1784570315; cv=none; b=tsRst/8W45o9UDrALOwkiAYP/jyDOqosJOvG3KLXDm9ikmBCJkzJriXP+DwyAs3Dzxk/b1xdMsAX0vkbkY1B4lk9zECFRQc9FgHQD0PCpPjViZyRkLS5Yj3DYKjvkpUZj5AkVUCCNrvb1UFeGXi4dfZewzXZj/YtPrqoi6dSM9A= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784570315; c=relaxed/simple; bh=PCH+qvGdDSv67AzlxVv2kdTSWEsSuRaxvtPqygKjd88=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=dHgEFry3raJLghSm2uup8dOw1OfEdS9gs5XNqhuezLjq09zF2Wsqar2r5zUvEqhAS6iLjOrPApEHQ8nPqTKs1ixvYDwFs8xKiYKLMh5i+eIL0/4N/DGVzTjp6yTgB/lmACFfqwsuB17esU0vhWV3iQw0Udg87pWqwE3u4Wjlwpg= 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=XFTxx/u7; 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="XFTxx/u7" 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 66KHBqFJ2731093; Mon, 20 Jul 2026 17:58:28 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=JB94kMHHnT3malLj/ EEXGKbkovRbQVu6ecUf0B1iHY4=; b=XFTxx/u7q2hUfsjaoa6qU4YCOC1GnABqr DKIsxSt3qkTrnxa0puMQ5uP3umXrqNCI/aXRarr61jkgX/rteNFqgq2ajOWDwYGI 1y8jSceiC8qDyuWRmT5KPNl6JzUMR9weibE77RJs9QyxHrNmgfui1Z2jkD+lgp04 BwRRyr8Y19fFE9uif3RhGJpr5byUAk0CqrrcR7Kxn/ylWaQz32hBp6jzaCsh/pPS 7eqaKeqmqncs1cVeZsRlyOwYgSVCE5aumVXi/B0Vo3TFj5SBHCkmM1xdIX3IWCj3 +TaLDzp4jwSOI4gZ9F7+A8qznXA175clnvM8N6YzPsFGEtaloVSqQ== Received: from ppma11.dal12v.mail.ibm.com (db.9e.1632.ip4.static.sl-reverse.com [50.22.158.219]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 4fg77k0jeg-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 20 Jul 2026 17:58:28 +0000 (GMT) Received: from pps.filterd (ppma11.dal12v.mail.ibm.com [127.0.0.1]) by ppma11.dal12v.mail.ibm.com (8.18.1.7/8.18.1.7) with ESMTP id 66KHnenJ004376; Mon, 20 Jul 2026 17:58:27 GMT Received: from smtprelay06.wdc07v.mail.ibm.com ([172.16.1.73]) by ppma11.dal12v.mail.ibm.com (PPS) with ESMTPS id 4fgpgy6fag-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 20 Jul 2026 17:58:27 +0000 (GMT) Received: from smtpav03.wdc07v.mail.ibm.com (smtpav03.wdc07v.mail.ibm.com [10.39.53.230]) by smtprelay06.wdc07v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 66KHwPOS31130254 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 20 Jul 2026 17:58:25 GMT Received: from smtpav03.wdc07v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 93CBA5805F; Mon, 20 Jul 2026 17:58:25 +0000 (GMT) Received: from smtpav03.wdc07v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id B8BEC5805C; Mon, 20 Jul 2026 17:58:24 +0000 (GMT) Received: from IBM-D32RQW3.ibm.com (unknown [9.61.254.89]) by smtpav03.wdc07v.mail.ibm.com (Postfix) with ESMTP; Mon, 20 Jul 2026 17:58:24 +0000 (GMT) From: Farhan Ali To: linux-kernel@vger.kernel.org, linux-s390@vger.kernel.org, kvm@vger.kernel.org Cc: alifm@linux.ibm.com, mjrosato@linux.ibm.com, borntraeger@linux.ibm.com, farman@linux.ibm.com Subject: [PATCH v3 4/4] KVM: s390: pci: Fix resource leak on IRQ registration failure Date: Mon, 20 Jul 2026 10:58:19 -0700 Message-ID: <20260720175819.1723-5-alifm@linux.ibm.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260720175819.1723-1-alifm@linux.ibm.com> References: <20260720175819.1723-1-alifm@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=HJXz0Itv c=1 sm=1 tr=0 ts=6a5e61c4 cx=c_pps a=aDMHemPKRhS1OARIsFnwRA==:117 a=aDMHemPKRhS1OARIsFnwRA==:17 a=RAioF0-LDSMA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=Y2IxJ9c9Rs8Kov3niI8_:22 a=VnNF1IyMAAAA:8 a=bWxaYIw3U7VPAN5xrwwA:9 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzIwMDE5NCBTYWx0ZWRfX96JQHRPQiTrb bBEQPdzudV3T+NwV/tWJ8s9QZo1M/PtjxVzwG3/X5wGlIy7ORaBvo6dyPnEdhHFY3YBrp0jmVGT UtMyA5OXNP6v9HCf4g+gmZgmNsIfSsbnK5RMbLC0bjMGiO5TtpTyCZ1j6QqZk8iwImec6PVOIER iDuw0wj8C951R8h4vAqFl72O45QiPAhbBSS6jRDeUga5h2QliZkfzF+fPbl40uk7jLxiyX4hUKC FdnVNLKnP91Wr4pFnQ2T02NSHflLr00lv/yz5uPn0e6lRBZBW1jGKfKaGHze0IXHTtL/haTI60p /YxXtOh7DCo8JWHGHD8DskS2dtXE4VKc/px+RNc5OGWxij57q/NTsqOHYrD2sTbUAFrH0CJz3YC Eu5Fsi50HhGl3zRG2NCtzQgkfOnz5F18odvujOwnLjLPeQB9dmLPFrLcqn0U9sD1uynT7PiAKGF N1z/zfNRQBV7o2Up/tQ== X-Proofpoint-ORIG-GUID: Yx4calUQDy67hWPRLqB9TOqrVmQyFjVk X-Proofpoint-Spam-Info: AW1haW4tMjYwNzIwMDE5NCBTYWx0ZWRfX6RsIrN0t66h8 O32gHaiBPZ1YkzSk78PlGNxG/ZgRHjz0diRSmwJMzfxBKK+sXS4LeTgj+ByVxz75KfuBzDV9Qfr O+/GdVAwSSP5V+I3kvlx10qo7VzjF6c= X-Proofpoint-GUID: Yx4calUQDy67hWPRLqB9TOqrVmQyFjVk 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-20_04,2026-07-20_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 priorityscore=1501 lowpriorityscore=0 suspectscore=0 malwarescore=0 impostorscore=0 clxscore=1015 phishscore=0 spamscore=0 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607200194 Content-Type: text/plain; charset="utf-8" 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. Fixes: 3c5a1b6f0a18 ("KVM: s390: pci: provide routines for enabling/disabli= ng interrupt forwarding") 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 85f4fb5d36b3..d328bbd0dd99 100644 --- a/arch/s390/kvm/pci.c +++ b/arch/s390/kvm/pci.c @@ -337,19 +337,32 @@ static int kvm_s390_pci_aif_enable(struct zpci_dev *z= dev, struct zpci_fib *fib, aift->kzdev[zdev->aisb] =3D zdev->kzdev; spin_unlock_irq(&aift->gait_lock); =20 - /* Update guest FIB for re-issue */ - fib->fmt0.aisbo =3D zdev->aisb & 63; - fib->fmt0.aisb =3D virt_to_phys(aift->sbv->vector) + (zdev->aisb / 64) * = 8; - fib->fmt0.isc =3D gisc; - /* Save some guest fib values in the host for later use */ - zdev->kzdev->fib.fmt0.isc =3D fib->fmt0.isc; + zdev->kzdev->fib.fmt0.isc =3D gisc; zdev->kzdev->fib.fmt0.aibv =3D fib->fmt0.aibv; - mutex_unlock(&aift->aift_lock); =20 /* Issue the clp to setup the irq now */ rc =3D kvm_zpci_set_airq(zdev); - return rc; + if (!rc) { + mutex_unlock(&aift->aift_lock); + return rc; + } + + /* Start cleanup */ + zdev->kzdev->fib.fmt0.isc =3D 0; + zdev->kzdev->fib.fmt0.aibv =3D 0; + + spin_lock_irq(&aift->gait_lock); + gaite->count--; + gaite->aisb =3D 0; + gaite->gisc =3D 0; + gaite->aisbo =3D 0; + gaite->gisa =3D 0; + aift->kzdev[zdev->aisb] =3D NULL; + spin_unlock_irq(&aift->gait_lock); + + airq_iv_release(zdev->aibv); + zdev->aibv =3D NULL; =20 free_aisb: airq_iv_free_bit(aift->sbv, zdev->aisb); --=20 2.43.0