From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.6 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 0D4FEC433E7 for ; Wed, 14 Oct 2020 06:52:29 +0000 (UTC) Received: from silver.osuosl.org (smtp3.osuosl.org [140.211.166.136]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 4C2EC2222A for ; Wed, 14 Oct 2020 06:52:28 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="Z0HxRZQm" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 4C2EC2222A Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=redhat.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=virtualization-bounces@lists.linux-foundation.org Received: from localhost (localhost [127.0.0.1]) by silver.osuosl.org (Postfix) with ESMTP id A65B82E22C; Wed, 14 Oct 2020 06:52:27 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from silver.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id fs90zNwt9FQl; Wed, 14 Oct 2020 06:52:24 +0000 (UTC) Received: from lists.linuxfoundation.org (lf-lists.osuosl.org [140.211.9.56]) by silver.osuosl.org (Postfix) with ESMTP id A99262E1B4; Wed, 14 Oct 2020 06:52:24 +0000 (UTC) Received: from lf-lists.osuosl.org (localhost [127.0.0.1]) by lists.linuxfoundation.org (Postfix) with ESMTP id 8899EC0052; Wed, 14 Oct 2020 06:52:24 +0000 (UTC) Received: from hemlock.osuosl.org (smtp2.osuosl.org [140.211.166.133]) by lists.linuxfoundation.org (Postfix) with ESMTP id 68BFBC0051 for ; Wed, 14 Oct 2020 06:52:23 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by hemlock.osuosl.org (Postfix) with ESMTP id 4DF39879D0 for ; Wed, 14 Oct 2020 06:52:23 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from hemlock.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id xRDV46bl0l2y for ; Wed, 14 Oct 2020 06:52:22 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [216.205.24.124]) by hemlock.osuosl.org (Postfix) with ESMTPS id 11D668799E for ; Wed, 14 Oct 2020 06:52:21 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1602658340; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=Umgsth+qAlJC/3C7CAcCT5UyrkL1Ulorv+l5T/RtKwQ=; b=Z0HxRZQm0XbdtjyMp2MksaxPonnV/3OemUORu39+Cu1WAllUddokUDyxnAZMyWCyVAlwhD kfQLGjH83j8KyAwcQPXco0ZIurTcWPF3eBXyIpIsMYbjCyIiFGlXPP+E7KvqJalBkSWujp 3YjYnBY96EgFIo93rM+matKUH3ugRcE= Received: from mail-wm1-f72.google.com (mail-wm1-f72.google.com [209.85.128.72]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-547-9_eGmedCP2C1upCR8fkYmw-1; Wed, 14 Oct 2020 02:52:18 -0400 X-MC-Unique: 9_eGmedCP2C1upCR8fkYmw-1 Received: by mail-wm1-f72.google.com with SMTP id p17so198556wmi.7 for ; Tue, 13 Oct 2020 23:52:18 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:content-transfer-encoding :in-reply-to; bh=Umgsth+qAlJC/3C7CAcCT5UyrkL1Ulorv+l5T/RtKwQ=; b=FSZf5zA4pKS8qP3Hgbl8gM7dcO2Hr30dYlVuT1Y/uHk/Fo5O+5mT5E4lNBxY6OYDwA /VHWeO5I3sBl4/ETpKQ4YPX9jPdMPuL+ZQrsz7kbPavWB3Tv6on5X1q4RGhnRcF7denw tjmTF+VzMP1OTgA395GGaow5OHTw8g+1VAZXk3CcS3ffRei9i0JKQP9ELd/z5EqQbwxV gCGj65TUa8Ael7t7Awj7qyJFm9ZjZrlG69m7V8HHTtinrmuCdQBhdcOojy/WrspzJnCM iLl+2OQ6RvGdhmEJXaa7DHiZEaMis7yoLyNEJt52ZE5Emkg+0EaAjbPnQ1EfZcDprcCj iHIw== X-Gm-Message-State: AOAM531BLMB7N7I2z5csLQu9uqMsjux9CBnd3LKY2UMZh5ycZdjmYxCT nm45rn7hccB3w9AcQcJ2zf5Yqst0Zu28Yvg96Sb+qSvxwm3yxqDUnTE5zCfFtmhuGEfz0+SzZva Xu6UG0ZL1ti6zEYdCELN7nIGwmzCa5RdfHTcrsOF3xg== X-Received: by 2002:a5d:6642:: with SMTP id f2mr3797319wrw.374.1602658337680; Tue, 13 Oct 2020 23:52:17 -0700 (PDT) X-Google-Smtp-Source: ABdhPJygjRUWH7k8NcK5WnN0N1PQoHHLLXDGOsXxyVZuN4eD8ensBeYjX+ISAk8XAMz9ma+J4s72ew== X-Received: by 2002:a5d:6642:: with SMTP id f2mr3797288wrw.374.1602658337370; Tue, 13 Oct 2020 23:52:17 -0700 (PDT) Received: from redhat.com (bzq-79-176-118-93.red.bezeqint.net. [79.176.118.93]) by smtp.gmail.com with ESMTPSA id f63sm2237494wme.38.2020.10.13.23.52.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 13 Oct 2020 23:52:16 -0700 (PDT) Date: Wed, 14 Oct 2020 02:52:13 -0400 From: "Michael S. Tsirkin" To: si-wei liu Subject: Re: [PATCH v3 2/2] vhost-vdpa: fix page pinning leakage in error path Message-ID: <20201014025025-mutt-send-email-mst@kernel.org> References: <1601701330-16837-1-git-send-email-si-wei.liu@oracle.com> <1601701330-16837-3-git-send-email-si-wei.liu@oracle.com> <574a64e3-8873-0639-fe32-248cb99204bc@redhat.com> <5F863B83.6030204@oracle.com> MIME-Version: 1.0 In-Reply-To: <5F863B83.6030204@oracle.com> Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=mst@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Disposition: inline Cc: lingshan.zhu@intel.com, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, virtualization@lists.linux-foundation.org, boris.ostrovsky@oracle.com X-BeenThere: virtualization@lists.linux-foundation.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: Linux virtualization List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: virtualization-bounces@lists.linux-foundation.org Sender: "Virtualization" T24gVHVlLCBPY3QgMTMsIDIwMjAgYXQgMDQ6NDI6NTlQTSAtMDcwMCwgc2ktd2VpIGxpdSB3cm90 ZToKPiAKPiBPbiAxMC85LzIwMjAgNzoyNyBQTSwgSmFzb24gV2FuZyB3cm90ZToKPiA+IAo+ID4g T24gMjAyMC8xMC8zIOS4i+WNiDE6MDIsIFNpLVdlaSBMaXUgd3JvdGU6Cj4gPiA+IFBpbm5lZCBw YWdlcyBhcmUgbm90IHByb3Blcmx5IGFjY291bnRlZCBwYXJ0aWN1bGFybHkgd2hlbgo+ID4gPiBt YXBwaW5nIGVycm9yIG9jY3VycyBvbiBJT1RMQiB1cGRhdGUuIENsZWFuIHVwIGRhbmdsaW5nCj4g PiA+IHBpbm5lZCBwYWdlcyBmb3IgdGhlIGVycm9yIHBhdGguIEFzIHRoZSBpbmZsaWdodCBwaW5u ZWQKPiA+ID4gcGFnZXMsIHNwZWNpZmljYWxseSBmb3IgbWVtb3J5IHJlZ2lvbiB0aGF0IHN0cmlk ZXMgYWNyb3NzCj4gPiA+IG11bHRpcGxlIGNodW5rcywgd291bGQgbmVlZCBtb3JlIHRoYW4gb25l IGZyZWUgcGFnZSBmb3IKPiA+ID4gYm9vayBrZWVwaW5nIGFuZCBhY2NvdW50aW5nLiBGb3Igc2lt cGxpY2l0eSwgcGluIHBhZ2VzCj4gPiA+IGZvciBhbGwgbWVtb3J5IGluIHRoZSBJT1ZBIHJhbmdl IGluIG9uZSBnbyByYXRoZXIgdGhhbgo+ID4gPiBoYXZlIG11bHRpcGxlIHBpbl91c2VyX3BhZ2Vz IGNhbGxzIHRvIG1ha2UgdXAgdGhlIGVudGlyZQo+ID4gPiByZWdpb24uIFRoaXMgd2F5IGl0J3Mg ZWFzaWVyIHRvIHRyYWNrIGFuZCBhY2NvdW50IHRoZQo+ID4gPiBwYWdlcyBhbHJlYWR5IG1hcHBl ZCwgcGFydGljdWxhcmx5IGZvciBjbGVhbi11cCBpbiB0aGUKPiA+ID4gZXJyb3IgcGF0aC4KPiA+ ID4gCj4gPiA+IEZpeGVzOiA0YzhjZjMxODg1ZjYgKCJ2aG9zdDogaW50cm9kdWNlIHZEUEEtYmFz ZWQgYmFja2VuZCIpCj4gPiA+IFNpZ25lZC1vZmYtYnk6IFNpLVdlaSBMaXUgPHNpLXdlaS5saXVA b3JhY2xlLmNvbT4KPiA+ID4gLS0tCj4gPiA+IENoYW5nZXMgaW4gdjM6Cj4gPiA+IC0gRmFjdG9y IG91dCB2aG9zdF92ZHBhX21hcCgpIGNoYW5nZSB0byBhIHNlcGFyYXRlIHBhdGNoCj4gPiA+IAo+ ID4gPiBDaGFuZ2VzIGluIHYyOgo+ID4gPiAtIEZpeCBpbmNvcnJlY3QgdGFyZ2V0IFNIQTEgcmVm ZXJlbmNlZAo+ID4gPiAKPiA+ID4gICBkcml2ZXJzL3Zob3N0L3ZkcGEuYyB8IDExOQo+ID4gPiAr KysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiA+ID4g ICAxIGZpbGUgY2hhbmdlZCwgNzEgaW5zZXJ0aW9ucygrKSwgNDggZGVsZXRpb25zKC0pCj4gPiA+ IAo+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy92aG9zdC92ZHBhLmMgYi9kcml2ZXJzL3Zob3N0 L3ZkcGEuYwo+ID4gPiBpbmRleCAwZjI3OTE5Li5kYWQ0MWRhZSAxMDA2NDQKPiA+ID4gLS0tIGEv ZHJpdmVycy92aG9zdC92ZHBhLmMKPiA+ID4gKysrIGIvZHJpdmVycy92aG9zdC92ZHBhLmMKPiA+ ID4gQEAgLTU5NSwyMSArNTk1LDE5IEBAIHN0YXRpYyBpbnQKPiA+ID4gdmhvc3RfdmRwYV9wcm9j ZXNzX2lvdGxiX3VwZGF0ZShzdHJ1Y3Qgdmhvc3RfdmRwYSAqdiwKPiA+ID4gICAgICAgc3RydWN0 IHZob3N0X2RldiAqZGV2ID0gJnYtPnZkZXY7Cj4gPiA+ICAgICAgIHN0cnVjdCB2aG9zdF9pb3Rs YiAqaW90bGIgPSBkZXYtPmlvdGxiOwo+ID4gPiAgICAgICBzdHJ1Y3QgcGFnZSAqKnBhZ2VfbGlz dDsKPiA+ID4gLSAgICB1bnNpZ25lZCBsb25nIGxpc3Rfc2l6ZSA9IFBBR0VfU0laRSAvIHNpemVv ZihzdHJ1Y3QgcGFnZSAqKTsKPiA+ID4gKyAgICBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKip2bWFz Owo+ID4gPiAgICAgICB1bnNpZ25lZCBpbnQgZ3VwX2ZsYWdzID0gRk9MTF9MT05HVEVSTTsKPiA+ ID4gLSAgICB1bnNpZ25lZCBsb25nIG5wYWdlcywgY3VyX2Jhc2UsIG1hcF9wZm4sIGxhc3RfcGZu ID0gMDsKPiA+ID4gLSAgICB1bnNpZ25lZCBsb25nIGxvY2tlZCwgbG9ja19saW1pdCwgcGlubmVk LCBpOwo+ID4gPiArICAgIHVuc2lnbmVkIGxvbmcgbWFwX3BmbiwgbGFzdF9wZm4gPSAwOwo+ID4g PiArICAgIHVuc2lnbmVkIGxvbmcgbnBhZ2VzLCBsb2NrX2xpbWl0Owo+ID4gPiArICAgIHVuc2ln bmVkIGxvbmcgaSwgbm1hcCA9IDA7Cj4gPiA+ICAgICAgIHU2NCBpb3ZhID0gbXNnLT5pb3ZhOwo+ ID4gPiArICAgIGxvbmcgcGlubmVkOwo+ID4gPiAgICAgICBpbnQgcmV0ID0gMDsKPiA+ID4gICAg ICAgICBpZiAodmhvc3RfaW90bGJfaXRyZWVfZmlyc3QoaW90bGIsIG1zZy0+aW92YSwKPiA+ID4g ICAgICAgICAgICAgICAgICAgICAgIG1zZy0+aW92YSArIG1zZy0+c2l6ZSAtIDEpKQo+ID4gPiAg ICAgICAgICAgcmV0dXJuIC1FRVhJU1Q7Cj4gPiA+ICAgLSAgICBwYWdlX2xpc3QgPSAoc3RydWN0 IHBhZ2UgKiopIF9fZ2V0X2ZyZWVfcGFnZShHRlBfS0VSTkVMKTsKPiA+ID4gLSAgICBpZiAoIXBh Z2VfbGlzdCkKPiA+ID4gLSAgICAgICAgcmV0dXJuIC1FTk9NRU07Cj4gPiA+IC0KPiA+ID4gICAg ICAgaWYgKG1zZy0+cGVybSAmIFZIT1NUX0FDQ0VTU19XTykKPiA+ID4gICAgICAgICAgIGd1cF9m bGFncyB8PSBGT0xMX1dSSVRFOwo+ID4gPiAgIEBAIC02MTcsNjEgKzYxNSw4NiBAQCBzdGF0aWMg aW50Cj4gPiA+IHZob3N0X3ZkcGFfcHJvY2Vzc19pb3RsYl91cGRhdGUoc3RydWN0IHZob3N0X3Zk cGEgKnYsCj4gPiA+ICAgICAgIGlmICghbnBhZ2VzKQo+ID4gPiAgICAgICAgICAgcmV0dXJuIC1F SU5WQUw7Cj4gPiA+ICAgKyAgICBwYWdlX2xpc3QgPSBrdm1hbGxvY19hcnJheShucGFnZXMsIHNp emVvZihzdHJ1Y3QgcGFnZSAqKSwKPiA+ID4gR0ZQX0tFUk5FTCk7Cj4gPiA+ICsgICAgdm1hcyA9 IGt2bWFsbG9jX2FycmF5KG5wYWdlcywgc2l6ZW9mKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqKSwK PiA+ID4gKyAgICAgICAgICAgICAgICAgIEdGUF9LRVJORUwpOwo+ID4gCj4gPiAKPiA+IFRoaXMg d2lsbCByZXN1bHQgaGlnaCBvcmRlciBtZW1vcnkgYWxsb2NhdGlvbiB3aGljaCB3YXMgd2hhdCB0 aGUgY29kZQo+ID4gdHJpZWQgdG8gYXZvaWQgb3JpZ2luYWxseS4KPiA+IAo+ID4gVXNpbmcgYW4g dW5saW1pdGVkIHNpemUgd2lsbCBjYXVzZSBhIGxvdCBvZiBzaWRlIGVmZmVjdHMgY29uc2lkZXIg Vk0gb3IKPiA+IHVzZXJzcGFjZSBtYXkgdHJ5IHRvIHBpbiBzZXZlcmFsIFRCIG9mIG1lbW9yeS4K PiBIbW1tLCB0aGF0J3MgYSBnb29kIHBvaW50LiBJbmRlZWQsIGlmIHRoZSBndWVzdCBtZW1vcnkg ZGVtYW5kIGlzIGh1Z2Ugb3IgdGhlCj4gaG9zdCBzeXN0ZW0gaXMgcnVubmluZyBzaG9ydCBvZiBm cmVlIHBhZ2VzLCBrdm1hbGxvYyB3aWxsIGJlIHByb2JsZW1hdGljIGFuZAo+IGxlc3MgZWZmaWNp ZW50IHRoYW4gdGhlIF9fZ2V0X2ZyZWVfcGFnZSBpbXBsZW1lbnRhdGlvbi4KCk9LIHNvIC4uLiBK YXNvbiwgd2hhdCdzIHRoZSBwbGFuPwoKSG93IGFib3V0IHlvdSBzZW5kIGEgcGF0Y2hzZXQgd2l0 aAoxLiByZXZlcnQgdGhpcyBjaGFuZ2UKMi4gZml4IGVycm9yIGhhbmRsaW5nIGxlYWsKCgo+ID4g Cj4gPiAKPiA+ID4gKyAgICBpZiAoIXBhZ2VfbGlzdCB8fCAhdm1hcykgewo+ID4gPiArICAgICAg ICByZXQgPSAtRU5PTUVNOwo+ID4gPiArICAgICAgICBnb3RvIGZyZWU7Cj4gPiA+ICsgICAgfQo+ ID4gCj4gPiAKPiA+IEFueSByZWFzb24gdGhhdCB5b3Ugd2FudCB0byB1c2Ugdm1hcz8KPiBXaXRo b3V0IHByb3ZpZGluZyBjdXN0b20gdm1hcywgaXQncyBzdWJqZWN0IHRvIGhpZ2ggb3JkZXIgYWxs b2NhdGlvbgo+IGZhaWx1cmUuIFdoaWxlIHBhZ2VfbGlzdCBhbmQgdm1hcyBjYW4gbm93IGZhbGxi YWNrIHRvIHZpcnR1YWwgbWVtb3J5Cj4gYWxsb2NhdGlvbiBpZiBuZWVkIGJlLgo+IAo+ID4gCj4g PiAKPiA+ID4gKwo+ID4gPiAgICAgICBtbWFwX3JlYWRfbG9jayhkZXYtPm1tKTsKPiA+ID4gICAt ICAgIGxvY2tlZCA9IGF0b21pYzY0X2FkZF9yZXR1cm4obnBhZ2VzLCAmZGV2LT5tbS0+cGlubmVk X3ZtKTsKPiA+ID4gICAgICAgbG9ja19saW1pdCA9IHJsaW1pdChSTElNSVRfTUVNTE9DSykgPj4g UEFHRV9TSElGVDsKPiA+ID4gLQo+ID4gPiAtICAgIGlmIChsb2NrZWQgPiBsb2NrX2xpbWl0KSB7 Cj4gPiA+ICsgICAgaWYgKG5wYWdlcyArIGF0b21pYzY0X3JlYWQoJmRldi0+bW0tPnBpbm5lZF92 bSkgPiBsb2NrX2xpbWl0KSB7Cj4gPiA+ICAgICAgICAgICByZXQgPSAtRU5PTUVNOwo+ID4gPiAt ICAgICAgICBnb3RvIG91dDsKPiA+ID4gKyAgICAgICAgZ290byB1bmxvY2s7Cj4gPiA+ICAgICAg IH0KPiA+ID4gICAtICAgIGN1cl9iYXNlID0gbXNnLT51YWRkciAmIFBBR0VfTUFTSzsKPiA+ID4g LSAgICBpb3ZhICY9IFBBR0VfTUFTSzsKPiA+ID4gKyAgICBwaW5uZWQgPSBwaW5fdXNlcl9wYWdl cyhtc2ctPnVhZGRyICYgUEFHRV9NQVNLLCBucGFnZXMsIGd1cF9mbGFncywKPiA+ID4gKyAgICAg ICAgICAgICAgICBwYWdlX2xpc3QsIHZtYXMpOwo+ID4gPiArICAgIGlmIChucGFnZXMgIT0gcGlu bmVkKSB7Cj4gPiA+ICsgICAgICAgIGlmIChwaW5uZWQgPCAwKSB7Cj4gPiA+ICsgICAgICAgICAg ICByZXQgPSBwaW5uZWQ7Cj4gPiA+ICsgICAgICAgIH0gZWxzZSB7Cj4gPiA+ICsgICAgICAgICAg ICB1bnBpbl91c2VyX3BhZ2VzKHBhZ2VfbGlzdCwgcGlubmVkKTsKPiA+ID4gKyAgICAgICAgICAg IHJldCA9IC1FTk9NRU07Cj4gPiA+ICsgICAgICAgIH0KPiA+ID4gKyAgICAgICAgZ290byB1bmxv Y2s7Cj4gPiA+ICsgICAgfQo+ID4gPiAgIC0gICAgd2hpbGUgKG5wYWdlcykgewo+ID4gPiAtICAg ICAgICBwaW5uZWQgPSBtaW5fdCh1bnNpZ25lZCBsb25nLCBucGFnZXMsIGxpc3Rfc2l6ZSk7Cj4g PiA+IC0gICAgICAgIHJldCA9IHBpbl91c2VyX3BhZ2VzKGN1cl9iYXNlLCBwaW5uZWQsCj4gPiA+ IC0gICAgICAgICAgICAgICAgICAgICBndXBfZmxhZ3MsIHBhZ2VfbGlzdCwgTlVMTCk7Cj4gPiA+ IC0gICAgICAgIGlmIChyZXQgIT0gcGlubmVkKQo+ID4gPiAtICAgICAgICAgICAgZ290byBvdXQ7 Cj4gPiA+IC0KPiA+ID4gLSAgICAgICAgaWYgKCFsYXN0X3BmbikKPiA+ID4gLSAgICAgICAgICAg IG1hcF9wZm4gPSBwYWdlX3RvX3BmbihwYWdlX2xpc3RbMF0pOwo+ID4gPiAtCj4gPiA+IC0gICAg ICAgIGZvciAoaSA9IDA7IGkgPCByZXQ7IGkrKykgewo+ID4gPiAtICAgICAgICAgICAgdW5zaWdu ZWQgbG9uZyB0aGlzX3BmbiA9IHBhZ2VfdG9fcGZuKHBhZ2VfbGlzdFtpXSk7Cj4gPiA+IC0gICAg ICAgICAgICB1NjQgY3NpemU7Cj4gPiA+IC0KPiA+ID4gLSAgICAgICAgICAgIGlmIChsYXN0X3Bm biAmJiAodGhpc19wZm4gIT0gbGFzdF9wZm4gKyAxKSkgewo+ID4gPiAtICAgICAgICAgICAgICAg IC8qIFBpbiBhIGNvbnRpZ3VvdXMgY2h1bmsgb2YgbWVtb3J5ICovCj4gPiA+IC0gICAgICAgICAg ICAgICAgY3NpemUgPSAobGFzdF9wZm4gLSBtYXBfcGZuICsgMSkgPDwgUEFHRV9TSElGVDsKPiA+ ID4gLSAgICAgICAgICAgICAgICBpZiAodmhvc3RfdmRwYV9tYXAodiwgaW92YSwgY3NpemUsCj4g PiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICBtYXBfcGZuIDw8IFBBR0VfU0hJRlQsCj4g PiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICBtc2ctPnBlcm0pKQo+ID4gPiAtICAgICAg ICAgICAgICAgICAgICBnb3RvIG91dDsKPiA+ID4gLSAgICAgICAgICAgICAgICBtYXBfcGZuID0g dGhpc19wZm47Cj4gPiA+IC0gICAgICAgICAgICAgICAgaW92YSArPSBjc2l6ZTsKPiA+ID4gKyAg ICBpb3ZhICY9IFBBR0VfTUFTSzsKPiA+ID4gKyAgICBtYXBfcGZuID0gcGFnZV90b19wZm4ocGFn ZV9saXN0WzBdKTsKPiA+ID4gKwo+ID4gPiArICAgIC8qIE9uZSBtb3JlIGl0ZXJhdGlvbiB0byBh dm9pZCBleHRyYSB2ZHBhX21hcCgpIGNhbGwgb3V0IG9mCj4gPiA+IGxvb3AuICovCj4gPiA+ICsg ICAgZm9yIChpID0gMDsgaSA8PSBucGFnZXM7IGkrKykgewo+ID4gPiArICAgICAgICB1bnNpZ25l ZCBsb25nIHRoaXNfcGZuOwo+ID4gPiArICAgICAgICB1NjQgY3NpemU7Cj4gPiA+ICsKPiA+ID4g KyAgICAgICAgLyogVGhlIGxhc3QgY2h1bmsgbWF5IGhhdmUgbm8gdmFsaWQgUEZOIG5leHQgdG8g aXQgKi8KPiA+ID4gKyAgICAgICAgdGhpc19wZm4gPSBpIDwgbnBhZ2VzID8gcGFnZV90b19wZm4o cGFnZV9saXN0W2ldKSA6IC0xVUw7Cj4gPiA+ICsKPiA+ID4gKyAgICAgICAgaWYgKGxhc3RfcGZu ICYmICh0aGlzX3BmbiA9PSAtMVVMIHx8Cj4gPiA+ICsgICAgICAgICAgICAgICAgIHRoaXNfcGZu ICE9IGxhc3RfcGZuICsgMSkpIHsKPiA+ID4gKyAgICAgICAgICAgIC8qIFBpbiBhIGNvbnRpZ3Vv dXMgY2h1bmsgb2YgbWVtb3J5ICovCj4gPiA+ICsgICAgICAgICAgICBjc2l6ZSA9IGxhc3RfcGZu IC0gbWFwX3BmbiArIDE7Cj4gPiA+ICsgICAgICAgICAgICByZXQgPSB2aG9zdF92ZHBhX21hcCh2 LCBpb3ZhLCBjc2l6ZSA8PCBQQUdFX1NISUZULAo+ID4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgIG1hcF9wZm4gPDwgUEFHRV9TSElGVCwKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICBtc2ctPnBlcm0pOwo+ID4gPiArICAgICAgICAgICAgaWYgKHJldCkgewo+ID4gPiArICAgICAg ICAgICAgICAgIC8qCj4gPiA+ICsgICAgICAgICAgICAgICAgICogVW5waW4gdGhlIHJlc3QgY2h1 bmtzIG9mIG1lbW9yeSBvbiB0aGUKPiA+ID4gKyAgICAgICAgICAgICAgICAgKiBmbGlnaHQgd2l0 aCBubyBjb3JyZXNwb25kaW5nIHZkcGFfbWFwKCkKPiA+ID4gKyAgICAgICAgICAgICAgICAgKiBj YWxscyBoYXZpbmcgYmVlbiBtYWRlIHlldC4gT24gdGhlIG90aGVyCj4gPiA+ICsgICAgICAgICAg ICAgICAgICogaGFuZCwgdmRwYV91bm1hcCgpIGluIHRoZSBmYWlsdXJlIHBhdGgKPiA+ID4gKyAg ICAgICAgICAgICAgICAgKiBpcyBpbiBjaGFyZ2Ugb2YgYWNjb3VudGluZyB0aGUgbnVtYmVyIG9m Cj4gPiA+ICsgICAgICAgICAgICAgICAgICogcGlubmVkIHBhZ2VzIGZvciBpdHMgb3duLgo+ID4g PiArICAgICAgICAgICAgICAgICAqIFRoaXMgYXN5bW1ldHJpY2FsIHBhdHRlcm4gb2YgYWNjb3Vu dGluZwo+ID4gPiArICAgICAgICAgICAgICAgICAqIGlzIGZvciBlZmZpY2llbmN5IHRvIHBpbiBh bGwgcGFnZXMgYXQKPiA+ID4gKyAgICAgICAgICAgICAgICAgKiBvbmNlLCB3aGlsZSB0aGVyZSBp cyBubyBvdGhlciBjYWxsc2l0ZQo+ID4gPiArICAgICAgICAgICAgICAgICAqIG9mIHZkcGFfbWFw KCkgdGhhbiBoZXJlIGFib3ZlLgo+ID4gPiArICAgICAgICAgICAgICAgICAqLwo+ID4gPiArICAg ICAgICAgICAgICAgIHVucGluX3VzZXJfcGFnZXMoJnBhZ2VfbGlzdFtubWFwXSwKPiA+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICBucGFnZXMgLSBubWFwKTsKPiA+ID4gKyAgICAgICAgICAg ICAgICBnb3RvIG91dDsKPiA+ID4gICAgICAgICAgICAgICB9Cj4gPiA+IC0KPiA+ID4gLSAgICAg ICAgICAgIGxhc3RfcGZuID0gdGhpc19wZm47Cj4gPiA+ICsgICAgICAgICAgICBhdG9taWM2NF9h ZGQoY3NpemUsICZkZXYtPm1tLT5waW5uZWRfdm0pOwo+ID4gPiArICAgICAgICAgICAgbm1hcCAr PSBjc2l6ZTsKPiA+ID4gKyAgICAgICAgICAgIGlvdmEgKz0gY3NpemUgPDwgUEFHRV9TSElGVDsK PiA+ID4gKyAgICAgICAgICAgIG1hcF9wZm4gPSB0aGlzX3BmbjsKPiA+ID4gICAgICAgICAgIH0K PiA+ID4gLQo+ID4gPiAtICAgICAgICBjdXJfYmFzZSArPSByZXQgPDwgUEFHRV9TSElGVDsKPiA+ ID4gLSAgICAgICAgbnBhZ2VzIC09IHJldDsKPiA+ID4gKyAgICAgICAgbGFzdF9wZm4gPSB0aGlz X3BmbjsKPiA+ID4gICAgICAgfQo+ID4gCj4gPiAKPiA+IFNvIHdoYXQgSSBzdWdnZXN0IGlzIHRv IGZpeCB0aGUgcGlubmluZyBsZWFrYWdlIGZpcnN0IGFuZCBkbyB0aGUKPiA+IHBvc3NpYmxlIG9w dGltaXphdGlvbiBvbiB0b3AgKHdoaWNoIGlzIHN0aWxsIHF1ZXN0aW9uYWJsZSB0byBtZSkuCj4g T0suIFVuZm9ydHVuYXRlbHksIHRoaXMgd2FzIHBpY2tlZCBhbmQgZ290IG1lcmdlZCBpbiB1cHN0 cmVhbS4gU28gSSB3aWxsCj4gcG9zdCBhIGZvbGxvdyB1cCBwYXRjaCBzZXQgdG8gMSkgcmV2ZXJ0 IHRoZSBjb21taXQgdG8gdGhlIG9yaWdpbmFsCj4gX19nZXRfZnJlZV9wYWdlKCkgaW1wbGVtZW50 YXRpb24sIGFuZCAyKSBmaXggdGhlIGFjY291bnRpbmcgYW5kIGxlYWthZ2Ugb24KPiB0b3AuIFdp bGwgaXQgYmUgZmluZT8KPiAKPiAKPiAtU2l3ZWkKPiA+IAo+ID4gVGhhbmtzCj4gPiAKPiA+IAo+ ID4gPiAgIC0gICAgLyogUGluIHRoZSByZXN0IGNodW5rICovCj4gPiA+IC0gICAgcmV0ID0gdmhv c3RfdmRwYV9tYXAodiwgaW92YSwgKGxhc3RfcGZuIC0gbWFwX3BmbiArIDEpIDw8Cj4gPiA+IFBB R0VfU0hJRlQsCj4gPiA+IC0gICAgICAgICAgICAgICAgIG1hcF9wZm4gPDwgUEFHRV9TSElGVCwg bXNnLT5wZXJtKTsKPiA+ID4gKyAgICBXQVJOX09OKG5tYXAgIT0gbnBhZ2VzKTsKPiA+ID4gICBv dXQ6Cj4gPiA+IC0gICAgaWYgKHJldCkgewo+ID4gPiArICAgIGlmIChyZXQpCj4gPiA+ICAgICAg ICAgICB2aG9zdF92ZHBhX3VubWFwKHYsIG1zZy0+aW92YSwgbXNnLT5zaXplKTsKPiA+ID4gLSAg ICAgICAgYXRvbWljNjRfc3ViKG5wYWdlcywgJmRldi0+bW0tPnBpbm5lZF92bSk7Cj4gPiA+IC0g ICAgfQo+ID4gPiArdW5sb2NrOgo+ID4gPiAgICAgICBtbWFwX3JlYWRfdW5sb2NrKGRldi0+bW0p Owo+ID4gPiAtICAgIGZyZWVfcGFnZSgodW5zaWduZWQgbG9uZylwYWdlX2xpc3QpOwo+ID4gPiAr ZnJlZToKPiA+ID4gKyAgICBrdmZyZWUodm1hcyk7Cj4gPiA+ICsgICAga3ZmcmVlKHBhZ2VfbGlz dCk7Cj4gPiA+ICAgICAgIHJldHVybiByZXQ7Cj4gPiA+ICAgfQo+ID4gCgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpWaXJ0dWFsaXphdGlvbiBtYWlsaW5n IGxpc3QKVmlydHVhbGl6YXRpb25AbGlzdHMubGludXgtZm91bmRhdGlvbi5vcmcKaHR0cHM6Ly9s aXN0cy5saW51eGZvdW5kYXRpb24ub3JnL21haWxtYW4vbGlzdGluZm8vdmlydHVhbGl6YXRpb24= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.9 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 4C460C43457 for ; Wed, 14 Oct 2020 06:54:50 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id E3ED922247 for ; Wed, 14 Oct 2020 06:54:49 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="Z0HxRZQm" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727099AbgJNGwY (ORCPT ); Wed, 14 Oct 2020 02:52:24 -0400 Received: from us-smtp-delivery-124.mimecast.com ([63.128.21.124]:50274 "EHLO us-smtp-delivery-124.mimecast.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726037AbgJNGwX (ORCPT ); Wed, 14 Oct 2020 02:52:23 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1602658340; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=Umgsth+qAlJC/3C7CAcCT5UyrkL1Ulorv+l5T/RtKwQ=; b=Z0HxRZQm0XbdtjyMp2MksaxPonnV/3OemUORu39+Cu1WAllUddokUDyxnAZMyWCyVAlwhD kfQLGjH83j8KyAwcQPXco0ZIurTcWPF3eBXyIpIsMYbjCyIiFGlXPP+E7KvqJalBkSWujp 3YjYnBY96EgFIo93rM+matKUH3ugRcE= Received: from mail-wr1-f71.google.com (mail-wr1-f71.google.com [209.85.221.71]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-392-ywUM7LGjPL2Ztv8W2rnsTw-1; Wed, 14 Oct 2020 02:52:19 -0400 X-MC-Unique: ywUM7LGjPL2Ztv8W2rnsTw-1 Received: by mail-wr1-f71.google.com with SMTP id u15so885118wrn.4 for ; Tue, 13 Oct 2020 23:52:19 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:content-transfer-encoding :in-reply-to; bh=Umgsth+qAlJC/3C7CAcCT5UyrkL1Ulorv+l5T/RtKwQ=; b=W/HCB/rL2ToYZA9xmf22wAOZftK+1tfKi9TYIfXdg5wlSfR9JM2iaaiCN2bHnFauVx g3APiAFxr2dzWdOF5MrX7OyvwOLGTvaeRbqL2ux7lknavGmATzXk/jhiRKlf1f/i6ByC R90TlDcAMVtDRtQcfXf3Vm0suf3T6pcY7oVNjHJbZHjeuWQeDDBrXeXbDJnGzVJou4P1 0wYtybyIoq+Fndei98eXcsqgHmkr+nZF0pOFHbH3iqypEJAt/J7HbLjNwHqATnJ3Cp2E 9I6Wqjt2DeAonytGC0aucf79e7A8LQRRUYH1/eeAao0TNXQVtAblZeyOvqn8L6BAws0n k83g== X-Gm-Message-State: AOAM532GrRNR4nPM58/6g6IfpJLOugqFAedT6rBT5PJOhOT4UlQCstB7 y+LrIRn2Ni5aaWDSfpFx9K9meT+mRi1q5YVnUiAJ0mMZM79VE6QvxGiViUyX3jkIlwCuoY31JLp TpzYVeKFEW2KRF+vnZ+weMYWz X-Received: by 2002:a5d:6642:: with SMTP id f2mr3797320wrw.374.1602658337680; Tue, 13 Oct 2020 23:52:17 -0700 (PDT) X-Google-Smtp-Source: ABdhPJygjRUWH7k8NcK5WnN0N1PQoHHLLXDGOsXxyVZuN4eD8ensBeYjX+ISAk8XAMz9ma+J4s72ew== X-Received: by 2002:a5d:6642:: with SMTP id f2mr3797288wrw.374.1602658337370; Tue, 13 Oct 2020 23:52:17 -0700 (PDT) Received: from redhat.com (bzq-79-176-118-93.red.bezeqint.net. [79.176.118.93]) by smtp.gmail.com with ESMTPSA id f63sm2237494wme.38.2020.10.13.23.52.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 13 Oct 2020 23:52:16 -0700 (PDT) Date: Wed, 14 Oct 2020 02:52:13 -0400 From: "Michael S. Tsirkin" To: si-wei liu Cc: Jason Wang , lingshan.zhu@intel.com, joao.m.martins@oracle.com, boris.ostrovsky@oracle.com, linux-kernel@vger.kernel.org, virtualization@lists.linux-foundation.org, netdev@vger.kernel.org Subject: Re: [PATCH v3 2/2] vhost-vdpa: fix page pinning leakage in error path Message-ID: <20201014025025-mutt-send-email-mst@kernel.org> References: <1601701330-16837-1-git-send-email-si-wei.liu@oracle.com> <1601701330-16837-3-git-send-email-si-wei.liu@oracle.com> <574a64e3-8873-0639-fe32-248cb99204bc@redhat.com> <5F863B83.6030204@oracle.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <5F863B83.6030204@oracle.com> Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, Oct 13, 2020 at 04:42:59PM -0700, si-wei liu wrote: > > On 10/9/2020 7:27 PM, Jason Wang wrote: > > > > On 2020/10/3 下午1:02, Si-Wei Liu wrote: > > > Pinned pages are not properly accounted particularly when > > > mapping error occurs on IOTLB update. Clean up dangling > > > pinned pages for the error path. As the inflight pinned > > > pages, specifically for memory region that strides across > > > multiple chunks, would need more than one free page for > > > book keeping and accounting. For simplicity, pin pages > > > for all memory in the IOVA range in one go rather than > > > have multiple pin_user_pages calls to make up the entire > > > region. This way it's easier to track and account the > > > pages already mapped, particularly for clean-up in the > > > error path. > > > > > > Fixes: 4c8cf31885f6 ("vhost: introduce vDPA-based backend") > > > Signed-off-by: Si-Wei Liu > > > --- > > > Changes in v3: > > > - Factor out vhost_vdpa_map() change to a separate patch > > > > > > Changes in v2: > > > - Fix incorrect target SHA1 referenced > > > > > > drivers/vhost/vdpa.c | 119 > > > ++++++++++++++++++++++++++++++--------------------- > > > 1 file changed, 71 insertions(+), 48 deletions(-) > > > > > > diff --git a/drivers/vhost/vdpa.c b/drivers/vhost/vdpa.c > > > index 0f27919..dad41dae 100644 > > > --- a/drivers/vhost/vdpa.c > > > +++ b/drivers/vhost/vdpa.c > > > @@ -595,21 +595,19 @@ static int > > > vhost_vdpa_process_iotlb_update(struct vhost_vdpa *v, > > > struct vhost_dev *dev = &v->vdev; > > > struct vhost_iotlb *iotlb = dev->iotlb; > > > struct page **page_list; > > > - unsigned long list_size = PAGE_SIZE / sizeof(struct page *); > > > + struct vm_area_struct **vmas; > > > unsigned int gup_flags = FOLL_LONGTERM; > > > - unsigned long npages, cur_base, map_pfn, last_pfn = 0; > > > - unsigned long locked, lock_limit, pinned, i; > > > + unsigned long map_pfn, last_pfn = 0; > > > + unsigned long npages, lock_limit; > > > + unsigned long i, nmap = 0; > > > u64 iova = msg->iova; > > > + long pinned; > > > int ret = 0; > > > if (vhost_iotlb_itree_first(iotlb, msg->iova, > > > msg->iova + msg->size - 1)) > > > return -EEXIST; > > > - page_list = (struct page **) __get_free_page(GFP_KERNEL); > > > - if (!page_list) > > > - return -ENOMEM; > > > - > > > if (msg->perm & VHOST_ACCESS_WO) > > > gup_flags |= FOLL_WRITE; > > > @@ -617,61 +615,86 @@ static int > > > vhost_vdpa_process_iotlb_update(struct vhost_vdpa *v, > > > if (!npages) > > > return -EINVAL; > > > + page_list = kvmalloc_array(npages, sizeof(struct page *), > > > GFP_KERNEL); > > > + vmas = kvmalloc_array(npages, sizeof(struct vm_area_struct *), > > > + GFP_KERNEL); > > > > > > This will result high order memory allocation which was what the code > > tried to avoid originally. > > > > Using an unlimited size will cause a lot of side effects consider VM or > > userspace may try to pin several TB of memory. > Hmmm, that's a good point. Indeed, if the guest memory demand is huge or the > host system is running short of free pages, kvmalloc will be problematic and > less efficient than the __get_free_page implementation. OK so ... Jason, what's the plan? How about you send a patchset with 1. revert this change 2. fix error handling leak > > > > > > > + if (!page_list || !vmas) { > > > + ret = -ENOMEM; > > > + goto free; > > > + } > > > > > > Any reason that you want to use vmas? > Without providing custom vmas, it's subject to high order allocation > failure. While page_list and vmas can now fallback to virtual memory > allocation if need be. > > > > > > > > + > > > mmap_read_lock(dev->mm); > > > - locked = atomic64_add_return(npages, &dev->mm->pinned_vm); > > > lock_limit = rlimit(RLIMIT_MEMLOCK) >> PAGE_SHIFT; > > > - > > > - if (locked > lock_limit) { > > > + if (npages + atomic64_read(&dev->mm->pinned_vm) > lock_limit) { > > > ret = -ENOMEM; > > > - goto out; > > > + goto unlock; > > > } > > > - cur_base = msg->uaddr & PAGE_MASK; > > > - iova &= PAGE_MASK; > > > + pinned = pin_user_pages(msg->uaddr & PAGE_MASK, npages, gup_flags, > > > + page_list, vmas); > > > + if (npages != pinned) { > > > + if (pinned < 0) { > > > + ret = pinned; > > > + } else { > > > + unpin_user_pages(page_list, pinned); > > > + ret = -ENOMEM; > > > + } > > > + goto unlock; > > > + } > > > - while (npages) { > > > - pinned = min_t(unsigned long, npages, list_size); > > > - ret = pin_user_pages(cur_base, pinned, > > > - gup_flags, page_list, NULL); > > > - if (ret != pinned) > > > - goto out; > > > - > > > - if (!last_pfn) > > > - map_pfn = page_to_pfn(page_list[0]); > > > - > > > - for (i = 0; i < ret; i++) { > > > - unsigned long this_pfn = page_to_pfn(page_list[i]); > > > - u64 csize; > > > - > > > - if (last_pfn && (this_pfn != last_pfn + 1)) { > > > - /* Pin a contiguous chunk of memory */ > > > - csize = (last_pfn - map_pfn + 1) << PAGE_SHIFT; > > > - if (vhost_vdpa_map(v, iova, csize, > > > - map_pfn << PAGE_SHIFT, > > > - msg->perm)) > > > - goto out; > > > - map_pfn = this_pfn; > > > - iova += csize; > > > + iova &= PAGE_MASK; > > > + map_pfn = page_to_pfn(page_list[0]); > > > + > > > + /* One more iteration to avoid extra vdpa_map() call out of > > > loop. */ > > > + for (i = 0; i <= npages; i++) { > > > + unsigned long this_pfn; > > > + u64 csize; > > > + > > > + /* The last chunk may have no valid PFN next to it */ > > > + this_pfn = i < npages ? page_to_pfn(page_list[i]) : -1UL; > > > + > > > + if (last_pfn && (this_pfn == -1UL || > > > + this_pfn != last_pfn + 1)) { > > > + /* Pin a contiguous chunk of memory */ > > > + csize = last_pfn - map_pfn + 1; > > > + ret = vhost_vdpa_map(v, iova, csize << PAGE_SHIFT, > > > + map_pfn << PAGE_SHIFT, > > > + msg->perm); > > > + if (ret) { > > > + /* > > > + * Unpin the rest chunks of memory on the > > > + * flight with no corresponding vdpa_map() > > > + * calls having been made yet. On the other > > > + * hand, vdpa_unmap() in the failure path > > > + * is in charge of accounting the number of > > > + * pinned pages for its own. > > > + * This asymmetrical pattern of accounting > > > + * is for efficiency to pin all pages at > > > + * once, while there is no other callsite > > > + * of vdpa_map() than here above. > > > + */ > > > + unpin_user_pages(&page_list[nmap], > > > + npages - nmap); > > > + goto out; > > > } > > > - > > > - last_pfn = this_pfn; > > > + atomic64_add(csize, &dev->mm->pinned_vm); > > > + nmap += csize; > > > + iova += csize << PAGE_SHIFT; > > > + map_pfn = this_pfn; > > > } > > > - > > > - cur_base += ret << PAGE_SHIFT; > > > - npages -= ret; > > > + last_pfn = this_pfn; > > > } > > > > > > So what I suggest is to fix the pinning leakage first and do the > > possible optimization on top (which is still questionable to me). > OK. Unfortunately, this was picked and got merged in upstream. So I will > post a follow up patch set to 1) revert the commit to the original > __get_free_page() implementation, and 2) fix the accounting and leakage on > top. Will it be fine? > > > -Siwei > > > > Thanks > > > > > > > - /* Pin the rest chunk */ > > > - ret = vhost_vdpa_map(v, iova, (last_pfn - map_pfn + 1) << > > > PAGE_SHIFT, > > > - map_pfn << PAGE_SHIFT, msg->perm); > > > + WARN_ON(nmap != npages); > > > out: > > > - if (ret) { > > > + if (ret) > > > vhost_vdpa_unmap(v, msg->iova, msg->size); > > > - atomic64_sub(npages, &dev->mm->pinned_vm); > > > - } > > > +unlock: > > > mmap_read_unlock(dev->mm); > > > - free_page((unsigned long)page_list); > > > +free: > > > + kvfree(vmas); > > > + kvfree(page_list); > > > return ret; > > > } > >