Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp727981pxj; Wed, 16 Jun 2021 12:09:11 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyf3wzBtAoy3OuCqKKrJ6MJOlkdXJG9r7P+ltvPLSs4P1s41fxbIdX/1Glo5fq+fjnpQmvM X-Received: by 2002:a17:907:2cef:: with SMTP id hz15mr1011796ejc.253.1623870551000; Wed, 16 Jun 2021 12:09:11 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1623870550; cv=none; d=google.com; s=arc-20160816; b=wRtZsdBMtSXHhNjoFcWHS2xg5gRYGQPcDL0aGNSJ1bEL/xy69EDa+rhUuRE9bofFLC SOOfyNDJ24vK4n6SY5scBIMbCvymaJu9OYiOZ9M+TIsgUqBQhZS88vWqE0cD2JHoUqdK sK612NJE+91gQ7qVVc3NBCExHBiXzGVPRDKdmgHEx5gryxcH383G9FWlFEL46jZoIABp +sQrH1cOHtY6DQnQAOzINfsyfmSruAb5IE/2lJZPv4etkKPaRJaCZg28sarorXUzjldJ USPUcPr7LTra8LCM8XWTxUpsytrhS/6v1A9RNDg2AiXNF3+B+BhlbHJ16yTUjFzsTfLy Nphw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature; bh=x1k4OvTRcy7ngy7/7tjXPrYg+8l5fghAALyRl0aJk0M=; b=kUb1d+VN2LjGZXsgdvt6y/VONES80DkD1OzWHVcVGxrA5Nzwez/ss4BAxHBwx3SAYv LTG6tH97u547/hlN1X/y6WsAxnm+YWu3/D0C2ummfj008HVkmuzkHSxT9smcrjncnDG0 xRPpZVFEBRccd5QH5eCSthyYggwAzDFb30QujfNubqAR3WzOAUZEe5QW60/Z4frL1JOe ZSe706UJtzy2ZBrnNmBl9VfZmVCFPucnwoJ3XcKur602ax/aTO9ti+VOm+GEf8gUj/X4 Zx75RGOY8a4U/HTJYZiwn9ljIUEdgp7ov0UtY6ui5ljd/n3BmLDItJE7wRno5QGtE0xS unVA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@ibm.com header.s=pp1 header.b=jz9Q8NIl; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=ibm.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id m6si3015643ejl.712.2021.06.16.12.08.46; Wed, 16 Jun 2021 12:09:10 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@ibm.com header.s=pp1 header.b=jz9Q8NIl; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=ibm.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233398AbhFPOSa (ORCPT + 99 others); Wed, 16 Jun 2021 10:18:30 -0400 Received: from mx0a-001b2d01.pphosted.com ([148.163.156.1]:29388 "EHLO mx0a-001b2d01.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232408AbhFPOS3 (ORCPT ); Wed, 16 Jun 2021 10:18:29 -0400 Received: from pps.filterd (m0098394.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.16.0.43/8.16.0.43) with SMTP id 15GE3xh4189937; Wed, 16 Jun 2021 10:16:22 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=from : to : cc : subject : date : message-id : mime-version : content-transfer-encoding; s=pp1; bh=x1k4OvTRcy7ngy7/7tjXPrYg+8l5fghAALyRl0aJk0M=; b=jz9Q8NIl8oa2f0ry5HnqCcbNYsZxVKjVjF1wb1I4CE3GX6gwl85ajx2xqJRAyDnJM6RN BVNzyoXZLFxu/mDu5sPxjL8P+AI1rwFHVpKWJWcvPQmliLmGlF7yRDtWDWiPmFCep8qb 5JKKu1AGRuIfbWDqB3OkkxH12Hckjdip4qXsai1AAGgZLNudMNGuuIohh3lFV/j6wina c+0vpyeBuuJdnm98BrmgXicEtzYK2eiaOntjHCe36YRlG0ex4iamoPbNpqzpa1pqOt45 VlhjyFMDlYwtk+ceUUBJ+dQwPojrackzsHQVAGr4g2Ic7CvYnzfqj29N1RBYLSgaSopH Ew== Received: from pps.reinject (localhost [127.0.0.1]) by mx0a-001b2d01.pphosted.com with ESMTP id 397jeth6n3-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 16 Jun 2021 10:16:22 -0400 Received: from m0098394.ppops.net (m0098394.ppops.net [127.0.0.1]) by pps.reinject (8.16.0.43/8.16.0.43) with SMTP id 15GE3suf189486; Wed, 16 Jun 2021 10:16:22 -0400 Received: from ppma02wdc.us.ibm.com (aa.5b.37a9.ip4.static.sl-reverse.com [169.55.91.170]) by mx0a-001b2d01.pphosted.com with ESMTP id 397jeth6k4-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 16 Jun 2021 10:16:22 -0400 Received: from pps.filterd (ppma02wdc.us.ibm.com [127.0.0.1]) by ppma02wdc.us.ibm.com (8.16.1.2/8.16.1.2) with SMTP id 15GECBZL016486; Wed, 16 Jun 2021 14:16:20 GMT Received: from b01cxnp22034.gho.pok.ibm.com (b01cxnp22034.gho.pok.ibm.com [9.57.198.24]) by ppma02wdc.us.ibm.com with ESMTP id 394mja0vd5-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 16 Jun 2021 14:16:20 +0000 Received: from b01ledav001.gho.pok.ibm.com (b01ledav001.gho.pok.ibm.com [9.57.199.106]) by b01cxnp22034.gho.pok.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 15GEGJKe22479174 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 16 Jun 2021 14:16:19 GMT Received: from b01ledav001.gho.pok.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id AAEED2805E; Wed, 16 Jun 2021 14:16:19 +0000 (GMT) Received: from b01ledav001.gho.pok.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 36EF428065; Wed, 16 Jun 2021 14:16:19 +0000 (GMT) Received: from cpe-172-100-179-72.stny.res.rr.com (unknown [9.85.128.252]) by b01ledav001.gho.pok.ibm.com (Postfix) with ESMTP; Wed, 16 Jun 2021 14:16:19 +0000 (GMT) From: Tony Krowiak To: linux-s390@vger.kernel.org, linux-kernel@vger.kernel.org Cc: borntraeger@de.ibm.com, cohuck@redhat.com, pasic@linux.vnet.ibm.com, jjherne@linux.ibm.com, jgg@nvidia.com, alex.williamson@redhat.com, kwankhede@nvidia.com, frankja@linux.ibm.com, david@redhat.com, imbrenda@linux.ibm.com, hca@linux.ibm.com Subject: [PATCH v5 0/2] s390/vfio-ap: fix memory leak in mdev remove callback Date: Wed, 16 Jun 2021 10:16:16 -0400 Message-Id: <20210616141618.938494-1-akrowiak@linux.ibm.com> X-Mailer: git-send-email 2.30.2 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-TM-AS-GCONF: 00 X-Proofpoint-GUID: JLEchLKCg2YYG7j2xlS1g_EZuIJrWFYj X-Proofpoint-ORIG-GUID: 49AaeB5uwhIqHYCP_Wd9cgxVLFtLFMAT X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.391,18.0.761 definitions=2021-06-16_07:2021-06-15,2021-06-16 signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 phishscore=0 spamscore=0 priorityscore=1501 adultscore=0 mlxlogscore=999 clxscore=1015 impostorscore=0 malwarescore=0 lowpriorityscore=1 bulkscore=1 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2104190000 definitions=main-2106160082 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The mdev remove callback for the vfio_ap device driver bails out with -EBUSY if the mdev is in use by a KVM guest. The intended purpose was to prevent the mdev from being removed while in use; however, returning a non-zero rc does not prevent removal of the mdev. Consequently, the memory for the resources allocated when the mdev was created are leaked. To fix this issue: * The remove callback will not terminate with -EBUSY when the mdev is in use by a KVM guest. * The memory for the resources allocated when the mdev was created will be freed. * Since the struct ap_matrix_mdev now gets freed while the guest is is still running, we need to ensure that the pointer to the function that handles interception of the PQAP instruction executed on the guest is not accessed while it is being set to NULL. To prevent this, a r/w lock is introduced that protects the function pointer. Tony Krowiak (2): s390/vfio-ap: clean up mdev resources when remove callback invoked s390/vfio-ap: r/w lock for PQAP interception handler function pointer arch/s390/include/asm/kvm_host.h | 6 +++--- arch/s390/kvm/kvm-s390.c | 1 + arch/s390/kvm/priv.c | 6 +++--- drivers/s390/crypto/vfio_ap_ops.c | 31 ++++++++++++++------------- drivers/s390/crypto/vfio_ap_private.h | 2 +- 5 files changed, 24 insertions(+), 22 deletions(-) -- 2.30.2