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 Received: from smtp3.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 smtp.lore.kernel.org (Postfix) with ESMTPS id 145D5C433EF for ; Fri, 22 Apr 2022 07:41:52 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp3.osuosl.org (Postfix) with ESMTP id A10DA60F08; Fri, 22 Apr 2022 07:41:52 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp3.osuosl.org ([127.0.0.1]) by localhost (smtp3.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id yet7Mhk_i-nR; Fri, 22 Apr 2022 07:41:51 +0000 (UTC) Received: from lists.linuxfoundation.org (lf-lists.osuosl.org [140.211.9.56]) by smtp3.osuosl.org (Postfix) with ESMTPS id A79A960E21; Fri, 22 Apr 2022 07:41:50 +0000 (UTC) Received: from lf-lists.osuosl.org (localhost [127.0.0.1]) by lists.linuxfoundation.org (Postfix) with ESMTP id 75437C0032; Fri, 22 Apr 2022 07:41:50 +0000 (UTC) Received: from smtp3.osuosl.org (smtp3.osuosl.org [140.211.166.136]) by lists.linuxfoundation.org (Postfix) with ESMTP id D6045C002D for ; Fri, 22 Apr 2022 07:41:48 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp3.osuosl.org (Postfix) with ESMTP id C354060E4B for ; Fri, 22 Apr 2022 07:41:48 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp3.osuosl.org ([127.0.0.1]) by localhost (smtp3.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 1xjf3dZsEbUn for ; Fri, 22 Apr 2022 07:41:47 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.8.0 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by smtp3.osuosl.org (Postfix) with ESMTPS id 3F15960E21 for ; Fri, 22 Apr 2022 07:41:46 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1650613305; 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=pdKLtwZK5Sd17EXPwwL/D1E/z7xr4keMdDdXRl8/G4Q=; b=f+0CpOKW9ZIL1HsFOPEek2xIYr85pS1Z8fswS52XoekKtFTyQg2Y7r84KGqqPS+f8wpuLL /2D7jcqZHOXIg2gkloK1MfvTJRfLvAWt/WoK2f8GKsHNrxMH/vZzKq21ONeRGJeWBQtu2E 7woLoKQMvq5nQHkxfxs5JGrntdYNfow= Received: from mail-pl1-f198.google.com (mail-pl1-f198.google.com [209.85.214.198]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-631-5ILpzzwgNMqqsveD9mhoBg-1; Fri, 22 Apr 2022 03:41:44 -0400 X-MC-Unique: 5ILpzzwgNMqqsveD9mhoBg-1 Received: by mail-pl1-f198.google.com with SMTP id l6-20020a170903120600b0014f43ba55f3so4071018plh.11 for ; Fri, 22 Apr 2022 00:41:44 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:message-id:date:mime-version:user-agent:subject :content-language:to:cc:references:from:in-reply-to :content-transfer-encoding; bh=pdKLtwZK5Sd17EXPwwL/D1E/z7xr4keMdDdXRl8/G4Q=; b=6h5PFiCZXYr8xGTpb5hnJFqQY7bOjSsZynQqQujrY183Ol4EP/2QRSpPodflIe8vrz IxUcKT/D31OiadOGJJtbErh+0APsdcKqT5T1HO1PNsDsH7xDIaas6/lKP8F8lZEQJmMm 7pz6UlvZjFe8o6+aS+pVZK9EQWvlpXHPufxZFDjkzV9+w3gt02Q/5fCUMe2BdPHnkcLi wFMpFLa7tWQz692WndUE8U/MfqwGVspMsWu5AomfU6k96gCOZXUoDNYa425nhd/q8q9O lUmf3DExVsOlU1YS7eKal9rXRfF8LmxdFDE7iLlHW3U3r8MeJei2dDoZeSiNAP7r+e2K 3K6A== X-Gm-Message-State: AOAM531cu005PLyJIDqq9YA+zQlgmm76F9DHJeR3zli5KCuL8O+hy9ZW UYy5DzdfmiE3LeIBLSiDtsOgdxTMCNUIgl2TO22yo3S2teNjNqyUvViQqPx0BOUXnNHs6Wj0QVm CCXsvVNF770kEgfGyJ9iShYVQVBFHCXd3rnGHBkL01A== X-Received: by 2002:a17:90b:1b45:b0:1d2:d46f:57d4 with SMTP id nv5-20020a17090b1b4500b001d2d46f57d4mr3951985pjb.214.1650613303421; Fri, 22 Apr 2022 00:41:43 -0700 (PDT) X-Google-Smtp-Source: ABdhPJx/lQLk2H6hJW4zMuC9L+S5/UfIPvYNJfvCLIzNthe22JQT76Zt2zmJ+Vy4cNLeHTZqE/D22g== X-Received: by 2002:a17:90b:1b45:b0:1d2:d46f:57d4 with SMTP id nv5-20020a17090b1b4500b001d2d46f57d4mr3951958pjb.214.1650613303083; Fri, 22 Apr 2022 00:41:43 -0700 (PDT) Received: from [10.72.12.62] ([209.132.188.80]) by smtp.gmail.com with ESMTPSA id n184-20020a6227c1000000b0050a3bbd36d6sm1418035pfn.204.2022.04.22.00.41.39 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 22 Apr 2022 00:41:42 -0700 (PDT) Message-ID: <7996f495-3bb8-fa80-7866-fa1fbff3e80a@redhat.com> Date: Fri, 22 Apr 2022 15:41:37 +0800 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:91.0) Gecko/20100101 Thunderbird/91.8.1 Subject: Re: [PATCH v3 1/5] virtio-crypto: use private buffer for control request To: zhenwei pi , arei.gonglei@huawei.com, mst@redhat.com References: <20220421104016.453458-1-pizhenwei@bytedance.com> <20220421104016.453458-2-pizhenwei@bytedance.com> From: Jason Wang In-Reply-To: <20220421104016.453458-2-pizhenwei@bytedance.com> Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=jasowang@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Language: en-US Cc: helei.sig11@bytedance.com, linux-kernel@vger.kernel.org, virtualization@lists.linux-foundation.org, linux-crypto@vger.kernel.org, davem@davemloft.net, herbert@gondor.apana.org.au 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-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: virtualization-bounces@lists.linux-foundation.org Sender: "Virtualization" CuWcqCAyMDIyLzQvMjEgMTg6NDAsIHpoZW53ZWkgcGkg5YaZ6YGTOgo+IE9yaWdpbmFsbHksIGFs bCBvZiB0aGUgY29udHJvbCByZXF1ZXN0cyBzaGFyZSBhIHNpbmdsZSBidWZmZXIoCj4gY3RybCAm IGlucHV0ICYgY3RybF9zdGF0dXMgZmllbGRzIGluIHN0cnVjdCB2aXJ0aW9fY3J5cHRvKSwgdGhp cwo+IGFsbG93cyBxdWV1ZSBkZXB0aCAxIG9ubHksIHRoZSBwZXJmb3JtYW5jZSBvZiBjb250cm9s IHF1ZXVlIGdldHMKPiBsaW1pdGVkIGJ5IHRoaXMgZGVzaWduLgo+Cj4gSW4gdGhpcyBwYXRjaCwg ZWFjaCByZXF1ZXN0IGFsbG9jYXRlcyByZXF1ZXN0IGJ1ZmZlciBkeW5hbWljYWxseSwgYW5kCj4g ZnJlZSBidWZmZXIgYWZ0ZXIgcmVxdWVzdCwgaXQncyBwb3NzaWJsZSB0byBvcHRpbWl6ZSBjb250 cm9sIHF1ZXVlCj4gZGVwdGggaW4gdGhlIG5leHQgc3RlcC4KPgo+IEEgbmVjZXNzYXJ5IGNvbW1l bnQgaXMgYWxyZWFkeSBpbiBjb2RlLCBzdGlsbCBkZXNjcmliZSBpdCBhZ2FpbjoKPiAvKgo+ICAg KiBOb3RlOiB0aGVyZSBhcmUgcGFkZGluZyBmaWVsZHMgaW4gcmVxdWVzdCwgY2xlYXIgdGhlbSB0 byB6ZXJvIGJlZm9yZQo+ICAgKiBzZW5kaW5nIHRvIGhvc3QsCj4gICAqIEV4LCB2aXJ0aW9fY3J5 cHRvX2N0cmxfcmVxdWVzdDo6Y3RybDo6dTo6ZGVzdHJveV9zZXNzaW9uOjpwYWRkaW5nWzQ4XQo+ ICAgKi8KPiBTbyB1c2Uga3phbGxvYyB0byBhbGxvY2F0ZSBidWZmZXIgb2Ygc3RydWN0IHZpcnRp b19jcnlwdG9fY3RybF9yZXF1ZXN0Lgo+Cj4gQ2M6IE1pY2hhZWwgUy4gVHNpcmtpbiA8bXN0QHJl ZGhhdC5jb20+Cj4gQ2M6IEphc29uIFdhbmcgPGphc293YW5nQHJlZGhhdC5jb20+Cj4gQ2M6IEdv bmdsZWkgPGFyZWkuZ29uZ2xlaUBodWF3ZWkuY29tPgo+IFNpZ25lZC1vZmYtYnk6IHpoZW53ZWkg cGkgPHBpemhlbndlaUBieXRlZGFuY2UuY29tPgo+IC0tLQo+ICAgZHJpdmVycy9jcnlwdG8vdmly dGlvL01ha2VmaWxlICAgICAgICAgICAgICAgIHwgICAxICsKPiAgIC4uLi92aXJ0aW8vdmlydGlv X2NyeXB0b19ha2NpcGhlcl9hbGdzLmMgICAgICB8ICA5MCArKysrKystLS0tLS0KPiAgIGRyaXZl cnMvY3J5cHRvL3ZpcnRpby92aXJ0aW9fY3J5cHRvX2NvbW1vbi5jICB8ICAzOSArKysrKwoKCkFu eSByZWFzb24gd2UgY2FuJ3QgdXNlIHZpcnRpb19jcnlwdG9fY29yZS5jPwoKCj4gICBkcml2ZXJz L2NyeXB0by92aXJ0aW8vdmlydGlvX2NyeXB0b19jb21tb24uaCAgfCAgMTkgKystCj4gICAuLi4v dmlydGlvL3ZpcnRpb19jcnlwdG9fc2tjaXBoZXJfYWxncy5jICAgICAgfCAxMzMgKysrKysrKyst LS0tLS0tLS0tCj4gICA1IGZpbGVzIGNoYW5nZWQsIDE1NiBpbnNlcnRpb25zKCspLCAxMjYgZGVs ZXRpb25zKC0pCj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9jcnlwdG8vdmlydGlvL3Zp cnRpb19jcnlwdG9fY29tbW9uLmMKPgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2NyeXB0by92aXJ0 aW8vTWFrZWZpbGUgYi9kcml2ZXJzL2NyeXB0by92aXJ0aW8vTWFrZWZpbGUKPiBpbmRleCBiZmE2 Y2JhZTM0MmUuLjQ5YzFmYTgwZTQ2NSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2NyeXB0by92aXJ0 aW8vTWFrZWZpbGUKPiArKysgYi9kcml2ZXJzL2NyeXB0by92aXJ0aW8vTWFrZWZpbGUKPiBAQCAt Myw1ICszLDYgQEAgb2JqLSQoQ09ORklHX0NSWVBUT19ERVZfVklSVElPKSArPSB2aXJ0aW9fY3J5 cHRvLm8KPiAgIHZpcnRpb19jcnlwdG8tb2JqcyA6PSBcCj4gICAJdmlydGlvX2NyeXB0b19za2Np cGhlcl9hbGdzLm8gXAo+ICAgCXZpcnRpb19jcnlwdG9fYWtjaXBoZXJfYWxncy5vIFwKPiArCXZp cnRpb19jcnlwdG9fY29tbW9uLm8gXAo+ICAgCXZpcnRpb19jcnlwdG9fbWdyLm8gXAo+ICAgCXZp cnRpb19jcnlwdG9fY29yZS5vCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvY3J5cHRvL3ZpcnRpby92 aXJ0aW9fY3J5cHRvX2FrY2lwaGVyX2FsZ3MuYyBiL2RyaXZlcnMvY3J5cHRvL3ZpcnRpby92aXJ0 aW9fY3J5cHRvX2FrY2lwaGVyX2FsZ3MuYwo+IGluZGV4IGYzZWM5NDIwMjE1ZS4uOTU2MWJjMmRm NjJiIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvY3J5cHRvL3ZpcnRpby92aXJ0aW9fY3J5cHRvX2Fr Y2lwaGVyX2FsZ3MuYwo+ICsrKyBiL2RyaXZlcnMvY3J5cHRvL3ZpcnRpby92aXJ0aW9fY3J5cHRv X2FrY2lwaGVyX2FsZ3MuYwo+IEBAIC0xMDIsOCArMTAyLDggQEAgc3RhdGljIGludCB2aXJ0aW9f Y3J5cHRvX2FsZ19ha2NpcGhlcl9pbml0X3Nlc3Npb24oc3RydWN0IHZpcnRpb19jcnlwdG9fYWtj aXBoZXIKPiAgIHsKPiAgIAlzdHJ1Y3Qgc2NhdHRlcmxpc3Qgb3V0aGRyX3NnLCBrZXlfc2csIGlu aGRyX3NnLCAqc2dzWzNdOwo+ICAgCXN0cnVjdCB2aXJ0aW9fY3J5cHRvICp2Y3J5cHRvID0gY3R4 LT52Y3J5cHRvOwo+ICsJc3RydWN0IHZpcnRpb19jcnlwdG9fY3RybF9yZXF1ZXN0ICp2Y19jdHJs X3JlcTsKPiAgIAl1aW50OF90ICpwa2V5Owo+IC0JdW5zaWduZWQgaW50IGlubGVuOwo+ICAgCWlu dCBlcnI7Cj4gICAJdW5zaWduZWQgaW50IG51bV9vdXQgPSAwLCBudW1faW4gPSAwOwo+ICAgCj4g QEAgLTExMSw5OCArMTExLDkxIEBAIHN0YXRpYyBpbnQgdmlydGlvX2NyeXB0b19hbGdfYWtjaXBo ZXJfaW5pdF9zZXNzaW9uKHN0cnVjdCB2aXJ0aW9fY3J5cHRvX2FrY2lwaGVyCj4gICAJaWYgKCFw a2V5KQo+ICAgCQlyZXR1cm4gLUVOT01FTTsKPiAgIAo+IC0Jc3Bpbl9sb2NrKCZ2Y3J5cHRvLT5j dHJsX2xvY2spOwo+IC0JbWVtY3B5KCZ2Y3J5cHRvLT5jdHJsLmhlYWRlciwgaGVhZGVyLCBzaXpl b2YodmNyeXB0by0+Y3RybC5oZWFkZXIpKTsKPiAtCW1lbWNweSgmdmNyeXB0by0+Y3RybC51LCBw YXJhLCBzaXplb2YodmNyeXB0by0+Y3RybC51KSk7Cj4gLQl2Y3J5cHRvLT5pbnB1dC5zdGF0dXMg PSBjcHVfdG9fbGUzMihWSVJUSU9fQ1JZUFRPX0VSUik7Cj4gKwl2Y19jdHJsX3JlcSA9IGt6YWxs b2Moc2l6ZW9mKCp2Y19jdHJsX3JlcSksIEdGUF9LRVJORUwpOwo+ICsJaWYgKCF2Y19jdHJsX3Jl cSkgewo+ICsJCWVyciA9IC1FTk9NRU07Cj4gKwkJZ290byBvdXQ7Cj4gKwl9Cj4gICAKPiAtCXNn X2luaXRfb25lKCZvdXRoZHJfc2csICZ2Y3J5cHRvLT5jdHJsLCBzaXplb2YodmNyeXB0by0+Y3Ry bCkpOwo+ICsJbWVtY3B5KCZ2Y19jdHJsX3JlcS0+Y3RybC5oZWFkZXIsIGhlYWRlciwgc2l6ZW9m KHZjX2N0cmxfcmVxLT5jdHJsLmhlYWRlcikpOwo+ICsJbWVtY3B5KCZ2Y19jdHJsX3JlcS0+Y3Ry bC51LCBwYXJhLCBzaXplb2YodmNfY3RybF9yZXEtPmN0cmwudSkpOwo+ICsJc2dfaW5pdF9vbmUo Jm91dGhkcl9zZywgJnZjX2N0cmxfcmVxLT5jdHJsLCBzaXplb2YodmNfY3RybF9yZXEtPmN0cmwp KTsKPiAgIAlzZ3NbbnVtX291dCsrXSA9ICZvdXRoZHJfc2c7Cj4gICAKPiAgIAlzZ19pbml0X29u ZSgma2V5X3NnLCBwa2V5LCBrZXlsZW4pOwo+ICAgCXNnc1tudW1fb3V0KytdID0gJmtleV9zZzsK PiAgIAo+IC0Jc2dfaW5pdF9vbmUoJmluaGRyX3NnLCAmdmNyeXB0by0+aW5wdXQsIHNpemVvZih2 Y3J5cHRvLT5pbnB1dCkpOwo+ICsJdmNfY3RybF9yZXEtPmlucHV0LnN0YXR1cyA9IGNwdV90b19s ZTMyKFZJUlRJT19DUllQVE9fRVJSKTsKCgpOaXQ6IGlmIHRoZXJlJ3Mgbm8gc3BlY2lhbCByZWFz b24sIGxldCdzIG1vdmUgdGhpcyBhZnRlciB0aGUgYWJvdmUgCm1lbWNweXMgYXMgd2hhdCdzIGRv bmUgcHJldmlvdXNseS4KCgo+ICsJc2dfaW5pdF9vbmUoJmluaGRyX3NnLCAmdmNfY3RybF9yZXEt PmlucHV0LCBzaXplb2YodmNfY3RybF9yZXEtPmlucHV0KSk7Cj4gICAJc2dzW251bV9vdXQgKyBu dW1faW4rK10gPSAmaW5oZHJfc2c7Cj4gICAKPiAtCWVyciA9IHZpcnRxdWV1ZV9hZGRfc2dzKHZj cnlwdG8tPmN0cmxfdnEsIHNncywgbnVtX291dCwgbnVtX2luLCB2Y3J5cHRvLCBHRlBfQVRPTUlD KTsKPiArCWVyciA9IHZpcnRpb19jcnlwdG9fY3RybF92cV9yZXF1ZXN0KHZjcnlwdG8sIHNncywg bnVtX291dCwgbnVtX2luLCB2Y19jdHJsX3JlcSk7CgoKSSdkIHNwbGl0IHRoaXMgaW50byBhIHNl cGFyYXRlIHBhdGNoLgoKCj4gICAJaWYgKGVyciA8IDApCj4gICAJCWdvdG8gb3V0Owo+ICAgCj4g LQl2aXJ0cXVldWVfa2ljayh2Y3J5cHRvLT5jdHJsX3ZxKTsKPiAtCXdoaWxlICghdmlydHF1ZXVl X2dldF9idWYodmNyeXB0by0+Y3RybF92cSwgJmlubGVuKSAmJgo+IC0JICAgICAgICF2aXJ0cXVl dWVfaXNfYnJva2VuKHZjcnlwdG8tPmN0cmxfdnEpKQo+IC0JCWNwdV9yZWxheCgpOwo+IC0KPiAt CWlmIChsZTMyX3RvX2NwdSh2Y3J5cHRvLT5pbnB1dC5zdGF0dXMpICE9IFZJUlRJT19DUllQVE9f T0spIHsKPiArCWlmIChsZTMyX3RvX2NwdSh2Y19jdHJsX3JlcS0+aW5wdXQuc3RhdHVzKSAhPSBW SVJUSU9fQ1JZUFRPX09LKSB7Cj4gKwkJcHJfZXJyKCJ2aXJ0aW9fY3J5cHRvOiBDcmVhdGUgc2Vz c2lvbiBmYWlsZWQgc3RhdHVzOiAldVxuIiwKPiArCQkJbGUzMl90b19jcHUodmNfY3RybF9yZXEt PmlucHV0LnN0YXR1cykpOwo+ICAgCQllcnIgPSAtRUlOVkFMOwo+ICAgCQlnb3RvIG91dDsKPiAg IAl9CgoKRG8gd2UgbmVlZCBhIHdhcm5pbmcgZm9yIC1FTk9NRU0/CgoKPiAgIAo+IC0JY3R4LT5z ZXNzaW9uX2lkID0gbGU2NF90b19jcHUodmNyeXB0by0+aW5wdXQuc2Vzc2lvbl9pZCk7Cj4gKwlj dHgtPnNlc3Npb25faWQgPSBsZTY0X3RvX2NwdSh2Y19jdHJsX3JlcS0+aW5wdXQuc2Vzc2lvbl9p ZCk7Cj4gICAJY3R4LT5zZXNzaW9uX3ZhbGlkID0gdHJ1ZTsKPiAgIAllcnIgPSAwOwo+ICAgCj4g ICBvdXQ6Cj4gLQlzcGluX3VubG9jaygmdmNyeXB0by0+Y3RybF9sb2NrKTsKPiArCWtmcmVlKHZj X2N0cmxfcmVxKTsKPiAgIAlrZnJlZV9zZW5zaXRpdmUocGtleSk7Cj4gICAKPiAtCWlmIChlcnIg PCAwKQo+IC0JCXByX2VycigidmlydGlvX2NyeXB0bzogQ3JlYXRlIHNlc3Npb24gZmFpbGVkIHN0 YXR1czogJXVcbiIsCj4gLQkJCWxlMzJfdG9fY3B1KHZjcnlwdG8tPmlucHV0LnN0YXR1cykpOwo+ IC0KPiAgIAlyZXR1cm4gZXJyOwo+ICAgfQo+ICAgCj4gICBzdGF0aWMgaW50IHZpcnRpb19jcnlw dG9fYWxnX2FrY2lwaGVyX2Nsb3NlX3Nlc3Npb24oc3RydWN0IHZpcnRpb19jcnlwdG9fYWtjaXBo ZXJfY3R4ICpjdHgpCj4gICB7Cj4gICAJc3RydWN0IHNjYXR0ZXJsaXN0IG91dGhkcl9zZywgaW5o ZHJfc2csICpzZ3NbMl07Cj4gKwlzdHJ1Y3QgdmlydGlvX2NyeXB0b19jdHJsX3JlcXVlc3QgKnZj X2N0cmxfcmVxOwo+ICAgCXN0cnVjdCB2aXJ0aW9fY3J5cHRvX2Rlc3Ryb3lfc2Vzc2lvbl9yZXEg KmRlc3Ryb3lfc2Vzc2lvbjsKPiAgIAlzdHJ1Y3QgdmlydGlvX2NyeXB0byAqdmNyeXB0byA9IGN0 eC0+dmNyeXB0bzsKPiAtCXVuc2lnbmVkIGludCBudW1fb3V0ID0gMCwgbnVtX2luID0gMCwgaW5s ZW47Cj4gKwl1bnNpZ25lZCBpbnQgbnVtX291dCA9IDAsIG51bV9pbiA9IDA7Cj4gICAJaW50IGVy cjsKPiAgIAo+IC0Jc3Bpbl9sb2NrKCZ2Y3J5cHRvLT5jdHJsX2xvY2spOwo+IC0JaWYgKCFjdHgt PnNlc3Npb25fdmFsaWQpIHsKPiAtCQllcnIgPSAwOwo+IC0JCWdvdG8gb3V0Owo+IC0JfQo+IC0J dmNyeXB0by0+Y3RybF9zdGF0dXMuc3RhdHVzID0gVklSVElPX0NSWVBUT19FUlI7Cj4gLQl2Y3J5 cHRvLT5jdHJsLmhlYWRlci5vcGNvZGUgPSBjcHVfdG9fbGUzMihWSVJUSU9fQ1JZUFRPX0FLQ0lQ SEVSX0RFU1RST1lfU0VTU0lPTik7Cj4gLQl2Y3J5cHRvLT5jdHJsLmhlYWRlci5xdWV1ZV9pZCA9 IDA7Cj4gKwlpZiAoIWN0eC0+c2Vzc2lvbl92YWxpZCkKPiArCQlyZXR1cm4gMDsKPiAgIAo+IC0J ZGVzdHJveV9zZXNzaW9uID0gJnZjcnlwdG8tPmN0cmwudS5kZXN0cm95X3Nlc3Npb247Cj4gKwl2 Y19jdHJsX3JlcSA9IGt6YWxsb2Moc2l6ZW9mKCp2Y19jdHJsX3JlcSksIEdGUF9LRVJORUwpOwo+ ICsJaWYgKCF2Y19jdHJsX3JlcSkKPiArCQlyZXR1cm4gLUVOT01FTTsKPiArCj4gKwl2Y19jdHJs X3JlcS0+Y3RybC5oZWFkZXIub3Bjb2RlID0gY3B1X3RvX2xlMzIoVklSVElPX0NSWVBUT19BS0NJ UEhFUl9ERVNUUk9ZX1NFU1NJT04pOwo+ICsJdmNfY3RybF9yZXEtPmN0cmwuaGVhZGVyLnF1ZXVl X2lkID0gMDsKPiArCj4gKwlkZXN0cm95X3Nlc3Npb24gPSAmdmNfY3RybF9yZXEtPmN0cmwudS5k ZXN0cm95X3Nlc3Npb247Cj4gICAJZGVzdHJveV9zZXNzaW9uLT5zZXNzaW9uX2lkID0gY3B1X3Rv X2xlNjQoY3R4LT5zZXNzaW9uX2lkKTsKPiAgIAo+IC0Jc2dfaW5pdF9vbmUoJm91dGhkcl9zZywg JnZjcnlwdG8tPmN0cmwsIHNpemVvZih2Y3J5cHRvLT5jdHJsKSk7Cj4gKwlzZ19pbml0X29uZSgm b3V0aGRyX3NnLCAmdmNfY3RybF9yZXEtPmN0cmwsIHNpemVvZih2Y19jdHJsX3JlcS0+Y3RybCkp Owo+ICAgCXNnc1tudW1fb3V0KytdID0gJm91dGhkcl9zZzsKPiAgIAo+IC0Jc2dfaW5pdF9vbmUo JmluaGRyX3NnLCAmdmNyeXB0by0+Y3RybF9zdGF0dXMuc3RhdHVzLCBzaXplb2YodmNyeXB0by0+ Y3RybF9zdGF0dXMuc3RhdHVzKSk7Cj4gKwl2Y19jdHJsX3JlcS0+Y3RybF9zdGF0dXMuc3RhdHVz ID0gVklSVElPX0NSWVBUT19FUlI7CgoKSWYgbm8gc3BlY2lhbCByZWFzb24sIGxldCdzIG1vdmUg dGhpcyBhYm92ZToKCnZjX2N0cmxfcmVxLT5jdHJsLmhlYWRlci5vcGNvZGUgPSBjcHVfdG9fbGUz MihWSVJUSU9fQ1JZUFRPX0FLQ0lQSEVSX0RFU1RST1lfU0VTU0lPTik7CgoKPiArCXNnX2luaXRf b25lKCZpbmhkcl9zZywgJnZjX2N0cmxfcmVxLT5jdHJsX3N0YXR1cy5zdGF0dXMsCj4gKwkJc2l6 ZW9mKHZjX2N0cmxfcmVxLT5jdHJsX3N0YXR1cy5zdGF0dXMpKTsKPiAgIAlzZ3NbbnVtX291dCAr IG51bV9pbisrXSA9ICZpbmhkcl9zZzsKPiAgIAo+IC0JZXJyID0gdmlydHF1ZXVlX2FkZF9zZ3Mo dmNyeXB0by0+Y3RybF92cSwgc2dzLCBudW1fb3V0LCBudW1faW4sIHZjcnlwdG8sIEdGUF9BVE9N SUMpOwo+ICsJZXJyID0gdmlydGlvX2NyeXB0b19jdHJsX3ZxX3JlcXVlc3QodmNyeXB0bywgc2dz LCBudW1fb3V0LCBudW1faW4sIHZjX2N0cmxfcmVxKTsKPiAgIAlpZiAoZXJyIDwgMCkKPiAgIAkJ Z290byBvdXQ7Cj4gICAKPiAtCXZpcnRxdWV1ZV9raWNrKHZjcnlwdG8tPmN0cmxfdnEpOwo+IC0J d2hpbGUgKCF2aXJ0cXVldWVfZ2V0X2J1Zih2Y3J5cHRvLT5jdHJsX3ZxLCAmaW5sZW4pICYmCj4g LQkgICAgICAgIXZpcnRxdWV1ZV9pc19icm9rZW4odmNyeXB0by0+Y3RybF92cSkpCj4gLQkJY3B1 X3JlbGF4KCk7Cj4gLQo+IC0JaWYgKHZjcnlwdG8tPmN0cmxfc3RhdHVzLnN0YXR1cyAhPSBWSVJU SU9fQ1JZUFRPX09LKSB7Cj4gKwlpZiAodmNfY3RybF9yZXEtPmN0cmxfc3RhdHVzLnN0YXR1cyAh PSBWSVJUSU9fQ1JZUFRPX09LKSB7Cj4gICAJCWVyciA9IC1FSU5WQUw7Cj4gKwkJcHJfZXJyKCJ2 aXJ0aW9fY3J5cHRvOiBDbG9zZSBzZXNzaW9uIGZhaWxlZCBzdGF0dXM6ICV1LCBzZXNzaW9uX2lk OiAweCVsbHhcbiIsCj4gKwkJCXZjX2N0cmxfcmVxLT5jdHJsX3N0YXR1cy5zdGF0dXMsIGRlc3Ry b3lfc2Vzc2lvbi0+c2Vzc2lvbl9pZCk7Cj4gICAJCWdvdG8gb3V0Owo+ICAgCX0KPiAgIAo+ICAg CWVyciA9IDA7Cj4gICAJY3R4LT5zZXNzaW9uX3ZhbGlkID0gZmFsc2U7Cj4gLQo+ICAgb3V0Ogo+ IC0Jc3Bpbl91bmxvY2soJnZjcnlwdG8tPmN0cmxfbG9jayk7Cj4gLQlpZiAoZXJyIDwgMCkgewo+ IC0JCXByX2VycigidmlydGlvX2NyeXB0bzogQ2xvc2Ugc2Vzc2lvbiBmYWlsZWQgc3RhdHVzOiAl dSwgc2Vzc2lvbl9pZDogMHglbGx4XG4iLAo+IC0JCQl2Y3J5cHRvLT5jdHJsX3N0YXR1cy5zdGF0 dXMsIGRlc3Ryb3lfc2Vzc2lvbi0+c2Vzc2lvbl9pZCk7Cj4gLQl9Cj4gKwlrZnJlZSh2Y19jdHJs X3JlcSk7Cj4gICAKPiAgIAlyZXR1cm4gZXJyOwo+ICAgfQo+IEBAIC0yMTAsMTQgKzIwMywxMSBA QCBzdGF0aWMgaW50IHZpcnRpb19jcnlwdG9fYWxnX2FrY2lwaGVyX2Nsb3NlX3Nlc3Npb24oc3Ry dWN0IHZpcnRpb19jcnlwdG9fYWtjaXBoZQo+ICAgc3RhdGljIGludCBfX3ZpcnRpb19jcnlwdG9f YWtjaXBoZXJfZG9fcmVxKHN0cnVjdCB2aXJ0aW9fY3J5cHRvX2FrY2lwaGVyX3JlcXVlc3QgKnZj X2FrY2lwaGVyX3JlcSwKPiAgIAkJc3RydWN0IGFrY2lwaGVyX3JlcXVlc3QgKnJlcSwgc3RydWN0 IGRhdGFfcXVldWUgKmRhdGFfdnEpCj4gICB7Cj4gLQlzdHJ1Y3QgdmlydGlvX2NyeXB0b19ha2Np cGhlcl9jdHggKmN0eCA9IHZjX2FrY2lwaGVyX3JlcS0+YWtjaXBoZXJfY3R4Owo+ICAgCXN0cnVj dCB2aXJ0aW9fY3J5cHRvX3JlcXVlc3QgKnZjX3JlcSA9ICZ2Y19ha2NpcGhlcl9yZXEtPmJhc2U7 Cj4gLQlzdHJ1Y3QgdmlydGlvX2NyeXB0byAqdmNyeXB0byA9IGN0eC0+dmNyeXB0bzsKPiAgIAlz dHJ1Y3QgdmlydGlvX2NyeXB0b19vcF9kYXRhX3JlcSAqcmVxX2RhdGEgPSB2Y19yZXEtPnJlcV9k YXRhOwo+ICAgCXN0cnVjdCBzY2F0dGVybGlzdCAqc2dzWzRdLCBvdXRoZHJfc2csIGluaGRyX3Nn LCBzcmNkYXRhX3NnLCBkc3RkYXRhX3NnOwo+ICAgCXZvaWQgKnNyY19idWYgPSBOVUxMLCAqZHN0 X2J1ZiA9IE5VTEw7Cj4gICAJdW5zaWduZWQgaW50IG51bV9vdXQgPSAwLCBudW1faW4gPSAwOwo+ IC0JaW50IG5vZGUgPSBkZXZfdG9fbm9kZSgmdmNyeXB0by0+dmRldi0+ZGV2KTsKPiAgIAl1bnNp Z25lZCBsb25nIGZsYWdzOwo+ICAgCWludCByZXQgPSAtRU5PTUVNOwo+ICAgCWJvb2wgdmVyaWZ5 ID0gdmNfYWtjaXBoZXJfcmVxLT5vcGNvZGUgPT0gVklSVElPX0NSWVBUT19BS0NJUEhFUl9WRVJJ Rlk7Cj4gQEAgLTIyOCw3ICsyMTgsNyBAQCBzdGF0aWMgaW50IF9fdmlydGlvX2NyeXB0b19ha2Np cGhlcl9kb19yZXEoc3RydWN0IHZpcnRpb19jcnlwdG9fYWtjaXBoZXJfcmVxdWVzdAo+ICAgCXNn c1tudW1fb3V0KytdID0gJm91dGhkcl9zZzsKPiAgIAo+ICAgCS8qIHNyYyBkYXRhICovCj4gLQlz cmNfYnVmID0ga2NhbGxvY19ub2RlKHNyY19sZW4sIDEsIEdGUF9LRVJORUwsIG5vZGUpOwo+ICsJ c3JjX2J1ZiA9IGtjYWxsb2Moc3JjX2xlbiwgMSwgR0ZQX0tFUk5FTCk7CgoKVGhpcyBzZWVtcyBu b3QgYSByZWxldmFudCBjaGFuZ2UuIElmIGl0IGlzIGEgbXVzdCB3ZSBuZWVkIHVzZSBhIHNlcGFy YXRlIApmb3IgdGhpcyBhbmQgZGVzY3JpYmUgdGhlIHJhdGlvbmFsZS4KCgo+ICAgCWlmICghc3Jj X2J1ZikKPiAgIAkJZ290byBlcnI7Cj4gICAKPiBAQCAtMjQzLDcgKzIzMyw3IEBAIHN0YXRpYyBp bnQgX192aXJ0aW9fY3J5cHRvX2FrY2lwaGVyX2RvX3JlcShzdHJ1Y3QgdmlydGlvX2NyeXB0b19h a2NpcGhlcl9yZXF1ZXN0Cj4gICAJCXNnc1tudW1fb3V0KytdID0gJnNyY2RhdGFfc2c7Cj4gICAK PiAgIAkJLyogZHN0IGRhdGEgKi8KPiAtCQlkc3RfYnVmID0ga2NhbGxvY19ub2RlKHJlcS0+ZHN0 X2xlbiwgMSwgR0ZQX0tFUk5FTCwgbm9kZSk7Cj4gKwkJZHN0X2J1ZiA9IGtjYWxsb2MocmVxLT5k c3RfbGVuLCAxLCBHRlBfS0VSTkVMKTsKCgpBbmQgdGhpcy4KCgo+ICAgCQlpZiAoIWRzdF9idWYp Cj4gICAJCQlnb3RvIGVycjsKPiAgIAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2NyeXB0by92aXJ0 aW8vdmlydGlvX2NyeXB0b19jb21tb24uYyBiL2RyaXZlcnMvY3J5cHRvL3ZpcnRpby92aXJ0aW9f Y3J5cHRvX2NvbW1vbi5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMDAw MDAuLmU2NTEyNWE3NGRiMgo+IC0tLSAvZGV2L251bGwKPiArKysgYi9kcml2ZXJzL2NyeXB0by92 aXJ0aW8vdmlydGlvX2NyeXB0b19jb21tb24uYwo+IEBAIC0wLDAgKzEsMzkgQEAKPiArLy8gU1BE WC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb3ItbGF0ZXIKPiArLyogQ29tbW9uIGZ1bmN0 aW9ucyBhbmQgaGVscGVycwo+ICsgKgo+ICsgKiBBdXRob3JzOiB6aGVud2VpIHBpIDxwaXpoZW53 ZWlAYnl0ZWRhbmNlLmNvbT4KPiArICoKPiArICogQ29weXJpZ2h0IDIwMjIgQnl0ZWRhbmNlIENP LiwgTFRELgo+ICsgKi8KPiArCj4gKyNpbmNsdWRlICJ2aXJ0aW9fY3J5cHRvX2NvbW1vbi5oIgo+ ICsKPiAraW50IHZpcnRpb19jcnlwdG9fY3RybF92cV9yZXF1ZXN0KHN0cnVjdCB2aXJ0aW9fY3J5 cHRvICp2Y3J5cHRvLCBzdHJ1Y3Qgc2NhdHRlcmxpc3QgKnNnc1tdLAo+ICsJCQkJICB1bnNpZ25l ZCBpbnQgb3V0X3NncywgdW5zaWduZWQgaW50IGluX3NncywKPiArCQkJCSAgc3RydWN0IHZpcnRp b19jcnlwdG9fY3RybF9yZXF1ZXN0ICp2Y19jdHJsX3JlcSkKPiArewo+ICsJaW50IGVycjsKPiAr CXVuc2lnbmVkIGludCBpbmxlbjsKPiArCXVuc2lnbmVkIGxvbmcgZmxhZ3M7Cj4gKwo+ICsJc3Bp bl9sb2NrX2lycXNhdmUoJnZjcnlwdG8tPmN0cmxfbG9jaywgZmxhZ3MpOwo+ICsJZXJyID0gdmly dHF1ZXVlX2FkZF9zZ3ModmNyeXB0by0+Y3RybF92cSwgc2dzLCBvdXRfc2dzLCBpbl9zZ3MsIHZj X2N0cmxfcmVxLCBHRlBfQVRPTUlDKTsKPiArCWlmIChlcnIgPCAwKSB7Cj4gKwkJc3Bpbl91bmxv Y2tfaXJxcmVzdG9yZSgmdmNyeXB0by0+Y3RybF9sb2NrLCBmbGFncyk7Cj4gKwkJcmV0dXJuIGVy cjsKPiArCX0KPiArCj4gKwl2aXJ0cXVldWVfa2ljayh2Y3J5cHRvLT5jdHJsX3ZxKTsKPiArCj4g KwkvKgo+ICsJICogVHJhcHBpbmcgaW50byB0aGUgaHlwZXJ2aXNvciwgc28gdGhlIHJlcXVlc3Qg c2hvdWxkIGJlCj4gKwkgKiBoYW5kbGVkIGltbWVkaWF0ZWx5Lgo+ICsJICovCj4gKwl3aGlsZSAo IXZpcnRxdWV1ZV9nZXRfYnVmKHZjcnlwdG8tPmN0cmxfdnEsICZpbmxlbikgJiYKPiArCQkhdmly dHF1ZXVlX2lzX2Jyb2tlbih2Y3J5cHRvLT5jdHJsX3ZxKSkKPiArCQljcHVfcmVsYXgoKTsKPiAr Cj4gKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZ2Y3J5cHRvLT5jdHJsX2xvY2ssIGZsYWdzKTsK PiArCj4gKwlyZXR1cm4gMDsKPiArfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2NyeXB0by92aXJ0 aW8vdmlydGlvX2NyeXB0b19jb21tb24uaCBiL2RyaXZlcnMvY3J5cHRvL3ZpcnRpby92aXJ0aW9f Y3J5cHRvX2NvbW1vbi5oCj4gaW5kZXggZTY5M2Q0ZWU4M2E2Li5kMmEyMGZlNmUxM2UgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9jcnlwdG8vdmlydGlvL3ZpcnRpb19jcnlwdG9fY29tbW9uLmgKPiAr KysgYi9kcml2ZXJzL2NyeXB0by92aXJ0aW8vdmlydGlvX2NyeXB0b19jb21tb24uaAo+IEBAIC0x Myw2ICsxMyw3IEBACj4gICAjaW5jbHVkZSA8Y3J5cHRvL2FlYWQuaD4KPiAgICNpbmNsdWRlIDxj cnlwdG8vYWVzLmg+Cj4gICAjaW5jbHVkZSA8Y3J5cHRvL2VuZ2luZS5oPgo+ICsjaW5jbHVkZSA8 dWFwaS9saW51eC92aXJ0aW9fY3J5cHRvLmg+Cj4gICAKPiAgIAo+ICAgLyogSW50ZXJuYWwgcmVw cmVzZW50YXRpb24gb2YgYSBkYXRhIHZpcnRxdWV1ZSAqLwo+IEBAIC02NSwxMSArNjYsNiBAQCBz dHJ1Y3QgdmlydGlvX2NyeXB0byB7Cj4gICAJLyogTWF4aW11bSBzaXplIG9mIHBlciByZXF1ZXN0 ICovCj4gICAJdTY0IG1heF9zaXplOwo+ICAgCj4gLQkvKiBDb250cm9sIFZRIGJ1ZmZlcnM6IHBy b3RlY3RlZCBieSB0aGUgY3RybF9sb2NrICovCj4gLQlzdHJ1Y3QgdmlydGlvX2NyeXB0b19vcF9j dHJsX3JlcSBjdHJsOwo+IC0Jc3RydWN0IHZpcnRpb19jcnlwdG9fc2Vzc2lvbl9pbnB1dCBpbnB1 dDsKPiAtCXN0cnVjdCB2aXJ0aW9fY3J5cHRvX2luaGRyIGN0cmxfc3RhdHVzOwo+IC0KPiAgIAl1 bnNpZ25lZCBsb25nIHN0YXR1czsKPiAgIAlhdG9taWNfdCByZWZfY291bnQ7Cj4gICAJc3RydWN0 IGxpc3RfaGVhZCBsaXN0Owo+IEBAIC04NSw2ICs4MSwxNiBAQCBzdHJ1Y3QgdmlydGlvX2NyeXB0 b19zeW1fc2Vzc2lvbl9pbmZvIHsKPiAgIAlfX3U2NCBzZXNzaW9uX2lkOwo+ICAgfTsKPiAgIAo+ ICsvKgo+ICsgKiBOb3RlOiB0aGVyZSBhcmUgcGFkZGluZyBmaWVsZHMgaW4gcmVxdWVzdCwgY2xl YXIgdGhlbSB0byB6ZXJvIGJlZm9yZSBzZW5kaW5nIHRvIGhvc3QsCj4gKyAqIEV4LCB2aXJ0aW9f Y3J5cHRvX2N0cmxfcmVxdWVzdDo6Y3RybDo6dTo6ZGVzdHJveV9zZXNzaW9uOjpwYWRkaW5nWzQ4 XQo+ICsgKi8KPiArc3RydWN0IHZpcnRpb19jcnlwdG9fY3RybF9yZXF1ZXN0IHsKPiArCXN0cnVj dCB2aXJ0aW9fY3J5cHRvX29wX2N0cmxfcmVxIGN0cmw7Cj4gKwlzdHJ1Y3QgdmlydGlvX2NyeXB0 b19zZXNzaW9uX2lucHV0IGlucHV0Owo+ICsJc3RydWN0IHZpcnRpb19jcnlwdG9faW5oZHIgY3Ry bF9zdGF0dXM7Cj4gK307Cj4gKwo+ICAgc3RydWN0IHZpcnRpb19jcnlwdG9fcmVxdWVzdDsKPiAg IHR5cGVkZWYgdm9pZCAoKnZpcnRpb19jcnlwdG9fZGF0YV9jYWxsYmFjaykKPiAgIAkJKHN0cnVj dCB2aXJ0aW9fY3J5cHRvX3JlcXVlc3QgKnZjX3JlcSwgaW50IGxlbik7Cj4gQEAgLTEzNSw0ICsx NDEsNyBAQCB2b2lkIHZpcnRpb19jcnlwdG9fc2tjaXBoZXJfYWxnc191bnJlZ2lzdGVyKHN0cnVj dCB2aXJ0aW9fY3J5cHRvICp2Y3J5cHRvKTsKPiAgIGludCB2aXJ0aW9fY3J5cHRvX2FrY2lwaGVy X2FsZ3NfcmVnaXN0ZXIoc3RydWN0IHZpcnRpb19jcnlwdG8gKnZjcnlwdG8pOwo+ICAgdm9pZCB2 aXJ0aW9fY3J5cHRvX2FrY2lwaGVyX2FsZ3NfdW5yZWdpc3RlcihzdHJ1Y3QgdmlydGlvX2NyeXB0 byAqdmNyeXB0byk7Cj4gICAKPiAraW50IHZpcnRpb19jcnlwdG9fY3RybF92cV9yZXF1ZXN0KHN0 cnVjdCB2aXJ0aW9fY3J5cHRvICp2Y3J5cHRvLCBzdHJ1Y3Qgc2NhdHRlcmxpc3QgKnNnc1tdLAo+ ICsJCQkJICB1bnNpZ25lZCBpbnQgb3V0X3NncywgdW5zaWduZWQgaW50IGluX3NncywKPiArCQkJ CSAgc3RydWN0IHZpcnRpb19jcnlwdG9fY3RybF9yZXF1ZXN0ICp2Y19jdHJsX3JlcSk7Cj4gICAj ZW5kaWYgLyogX1ZJUlRJT19DUllQVE9fQ09NTU9OX0ggKi8KPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9jcnlwdG8vdmlydGlvL3ZpcnRpb19jcnlwdG9fc2tjaXBoZXJfYWxncy5jIGIvZHJpdmVycy9j cnlwdG8vdmlydGlvL3ZpcnRpb19jcnlwdG9fc2tjaXBoZXJfYWxncy5jCj4gaW5kZXggYTYxOGM0 NmE1MmI4Li5mZWYzNTVmZjQ2MWMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9jcnlwdG8vdmlydGlv L3ZpcnRpb19jcnlwdG9fc2tjaXBoZXJfYWxncy5jCj4gKysrIGIvZHJpdmVycy9jcnlwdG8vdmly dGlvL3ZpcnRpb19jcnlwdG9fc2tjaXBoZXJfYWxncy5jCj4gQEAgLTExOCwxMSArMTE4LDEzIEBA IHN0YXRpYyBpbnQgdmlydGlvX2NyeXB0b19hbGdfc2tjaXBoZXJfaW5pdF9zZXNzaW9uKAo+ICAg CQlpbnQgZW5jcnlwdCkKPiAgIHsKPiAgIAlzdHJ1Y3Qgc2NhdHRlcmxpc3Qgb3V0aGRyLCBrZXlf c2csIGluaGRyLCAqc2dzWzNdOwo+IC0JdW5zaWduZWQgaW50IHRtcDsKPiAgIAlzdHJ1Y3Qgdmly dGlvX2NyeXB0byAqdmNyeXB0byA9IGN0eC0+dmNyeXB0bzsKCgpDYW4gd2Ugc2ltcGx5IHJlbmFt ZSB0aGlzIHRvIHZpcnRjcnlwdG8gYW5kIHRoZW4gd2UgY2FuIHVzZSB0aGUgbmFtZSAKInZjcnlw dG8iIGZvciB2aXJ0aW9fY3J5cHRvX2N0cmxfcmVxdWVzdCB0aGVuIHdlIHNhdmUgdG9ucyBsb3Qg Y2hhbmdlcz8KCkl0IHNpbXBsaWZ5IHRoZSBsaWZlIG9mIHJldmlld2VycyBhbmQgYmFja3BvcnRp bmcuCgpUaGFua3MKCgo+ICAgCWludCBvcCA9IGVuY3J5cHQgPyBWSVJUSU9fQ1JZUFRPX09QX0VO Q1JZUFQgOiBWSVJUSU9fQ1JZUFRPX09QX0RFQ1JZUFQ7Cj4gICAJaW50IGVycjsKPiAgIAl1bnNp Z25lZCBpbnQgbnVtX291dCA9IDAsIG51bV9pbiA9IDA7Cj4gKwlzdHJ1Y3QgdmlydGlvX2NyeXB0 b19jdHJsX3JlcXVlc3QgKnZjX2N0cmxfcmVxOwo+ICsJc3RydWN0IHZpcnRpb19jcnlwdG9fY3Ry bF9oZWFkZXIgKmhlYWRlcjsKPiArCXN0cnVjdCB2aXJ0aW9fY3J5cHRvX3N5bV9jcmVhdGVfc2Vz c2lvbl9yZXEgKnN5bV9jcmVhdGVfc2Vzc2lvbjsKPiAgIAo+ICAgCS8qCj4gICAJICogQXZvaWQg dG8gZG8gRE1BIGZyb20gdGhlIHN0YWNrLCBzd2l0Y2ggdG8gdXNpbmcKPiBAQCAtMTMzLDI2ICsx MzUsMjcgQEAgc3RhdGljIGludCB2aXJ0aW9fY3J5cHRvX2FsZ19za2NpcGhlcl9pbml0X3Nlc3Np b24oCj4gICAJaWYgKCFjaXBoZXJfa2V5KQo+ICAgCQlyZXR1cm4gLUVOT01FTTsKPiAgIAo+IC0J c3Bpbl9sb2NrKCZ2Y3J5cHRvLT5jdHJsX2xvY2spOwo+ICsJdmNfY3RybF9yZXEgPSBremFsbG9j KHNpemVvZigqdmNfY3RybF9yZXEpLCBHRlBfS0VSTkVMKTsKPiArCWlmICghdmNfY3RybF9yZXEp IHsKPiArCQllcnIgPSAtRU5PTUVNOwo+ICsJCWdvdG8gb3V0Owo+ICsJfQo+ICsKPiAgIAkvKiBQ YWQgY3RybCBoZWFkZXIgKi8KPiAtCXZjcnlwdG8tPmN0cmwuaGVhZGVyLm9wY29kZSA9Cj4gLQkJ Y3B1X3RvX2xlMzIoVklSVElPX0NSWVBUT19DSVBIRVJfQ1JFQVRFX1NFU1NJT04pOwo+IC0JdmNy eXB0by0+Y3RybC5oZWFkZXIuYWxnbyA9IGNwdV90b19sZTMyKGFsZyk7Cj4gKwloZWFkZXIgPSAm dmNfY3RybF9yZXEtPmN0cmwuaGVhZGVyOwo+ICsJaGVhZGVyLT5vcGNvZGUgPSBjcHVfdG9fbGUz MihWSVJUSU9fQ1JZUFRPX0NJUEhFUl9DUkVBVEVfU0VTU0lPTik7Cj4gKwloZWFkZXItPmFsZ28g PSBjcHVfdG9fbGUzMihhbGcpOwo+ICAgCS8qIFNldCB0aGUgZGVmYXVsdCBkYXRhcXVldWUgaWQg dG8gMCAqLwo+IC0JdmNyeXB0by0+Y3RybC5oZWFkZXIucXVldWVfaWQgPSAwOwo+ICsJaGVhZGVy LT5xdWV1ZV9pZCA9IDA7Cj4gICAKPiAtCXZjcnlwdG8tPmlucHV0LnN0YXR1cyA9IGNwdV90b19s ZTMyKFZJUlRJT19DUllQVE9fRVJSKTsKPiAgIAkvKiBQYWQgY2lwaGVyJ3MgcGFyYW1ldGVycyAq Lwo+IC0JdmNyeXB0by0+Y3RybC51LnN5bV9jcmVhdGVfc2Vzc2lvbi5vcF90eXBlID0KPiAtCQlj cHVfdG9fbGUzMihWSVJUSU9fQ1JZUFRPX1NZTV9PUF9DSVBIRVIpOwo+IC0JdmNyeXB0by0+Y3Ry bC51LnN5bV9jcmVhdGVfc2Vzc2lvbi51LmNpcGhlci5wYXJhLmFsZ28gPQo+IC0JCXZjcnlwdG8t PmN0cmwuaGVhZGVyLmFsZ287Cj4gLQl2Y3J5cHRvLT5jdHJsLnUuc3ltX2NyZWF0ZV9zZXNzaW9u LnUuY2lwaGVyLnBhcmEua2V5bGVuID0KPiAtCQljcHVfdG9fbGUzMihrZXlsZW4pOwo+IC0JdmNy eXB0by0+Y3RybC51LnN5bV9jcmVhdGVfc2Vzc2lvbi51LmNpcGhlci5wYXJhLm9wID0KPiAtCQlj cHVfdG9fbGUzMihvcCk7Cj4gLQo+IC0Jc2dfaW5pdF9vbmUoJm91dGhkciwgJnZjcnlwdG8tPmN0 cmwsIHNpemVvZih2Y3J5cHRvLT5jdHJsKSk7Cj4gKwlzeW1fY3JlYXRlX3Nlc3Npb24gPSAmdmNf Y3RybF9yZXEtPmN0cmwudS5zeW1fY3JlYXRlX3Nlc3Npb247Cj4gKwlzeW1fY3JlYXRlX3Nlc3Np b24tPm9wX3R5cGUgPSBjcHVfdG9fbGUzMihWSVJUSU9fQ1JZUFRPX1NZTV9PUF9DSVBIRVIpOwo+ ICsJc3ltX2NyZWF0ZV9zZXNzaW9uLT51LmNpcGhlci5wYXJhLmFsZ28gPSBoZWFkZXItPmFsZ287 Cj4gKwlzeW1fY3JlYXRlX3Nlc3Npb24tPnUuY2lwaGVyLnBhcmEua2V5bGVuID0gY3B1X3RvX2xl MzIoa2V5bGVuKTsKPiArCXN5bV9jcmVhdGVfc2Vzc2lvbi0+dS5jaXBoZXIucGFyYS5vcCA9IGNw dV90b19sZTMyKG9wKTsKPiArCj4gKwlzZ19pbml0X29uZSgmb3V0aGRyLCAmdmNfY3RybF9yZXEt PmN0cmwsIHNpemVvZih2Y19jdHJsX3JlcS0+Y3RybCkpOwo+ICAgCXNnc1tudW1fb3V0KytdID0g Jm91dGhkcjsKPiAgIAo+ICAgCS8qIFNldCBrZXkgKi8KPiBAQCAtMTYwLDQ1ICsxNjMsMzQgQEAg c3RhdGljIGludCB2aXJ0aW9fY3J5cHRvX2FsZ19za2NpcGhlcl9pbml0X3Nlc3Npb24oCj4gICAJ c2dzW251bV9vdXQrK10gPSAma2V5X3NnOwo+ICAgCj4gICAJLyogUmV0dXJuIHN0YXR1cyBhbmQg c2Vzc2lvbiBpZCBiYWNrICovCj4gLQlzZ19pbml0X29uZSgmaW5oZHIsICZ2Y3J5cHRvLT5pbnB1 dCwgc2l6ZW9mKHZjcnlwdG8tPmlucHV0KSk7Cj4gKwl2Y19jdHJsX3JlcS0+aW5wdXQuc3RhdHVz ID0gY3B1X3RvX2xlMzIoVklSVElPX0NSWVBUT19FUlIpOwo+ICsJc2dfaW5pdF9vbmUoJmluaGRy LCAmdmNfY3RybF9yZXEtPmlucHV0LCBzaXplb2YodmNfY3RybF9yZXEtPmlucHV0KSk7Cj4gICAJ c2dzW251bV9vdXQgKyBudW1faW4rK10gPSAmaW5oZHI7Cj4gICAKPiAtCWVyciA9IHZpcnRxdWV1 ZV9hZGRfc2dzKHZjcnlwdG8tPmN0cmxfdnEsIHNncywgbnVtX291dCwKPiAtCQkJCW51bV9pbiwg dmNyeXB0bywgR0ZQX0FUT01JQyk7Cj4gLQlpZiAoZXJyIDwgMCkgewo+IC0JCXNwaW5fdW5sb2Nr KCZ2Y3J5cHRvLT5jdHJsX2xvY2spOwo+IC0JCWtmcmVlX3NlbnNpdGl2ZShjaXBoZXJfa2V5KTsK PiAtCQlyZXR1cm4gZXJyOwo+IC0JfQo+IC0JdmlydHF1ZXVlX2tpY2sodmNyeXB0by0+Y3RybF92 cSk7Cj4gLQo+IC0JLyoKPiAtCSAqIFRyYXBwaW5nIGludG8gdGhlIGh5cGVydmlzb3IsIHNvIHRo ZSByZXF1ZXN0IHNob3VsZCBiZQo+IC0JICogaGFuZGxlZCBpbW1lZGlhdGVseS4KPiAtCSAqLwo+ IC0Jd2hpbGUgKCF2aXJ0cXVldWVfZ2V0X2J1Zih2Y3J5cHRvLT5jdHJsX3ZxLCAmdG1wKSAmJgo+ IC0JICAgICAgICF2aXJ0cXVldWVfaXNfYnJva2VuKHZjcnlwdG8tPmN0cmxfdnEpKQo+IC0JCWNw dV9yZWxheCgpOwo+ICsJZXJyID0gdmlydGlvX2NyeXB0b19jdHJsX3ZxX3JlcXVlc3QodmNyeXB0 bywgc2dzLCBudW1fb3V0LCBudW1faW4sIHZjX2N0cmxfcmVxKTsKPiArCWlmIChlcnIgPCAwKQo+ ICsJCWdvdG8gb3V0Owo+ICAgCj4gLQlpZiAobGUzMl90b19jcHUodmNyeXB0by0+aW5wdXQuc3Rh dHVzKSAhPSBWSVJUSU9fQ1JZUFRPX09LKSB7Cj4gLQkJc3Bpbl91bmxvY2soJnZjcnlwdG8tPmN0 cmxfbG9jayk7Cj4gKwlpZiAobGUzMl90b19jcHUodmNfY3RybF9yZXEtPmlucHV0LnN0YXR1cykg IT0gVklSVElPX0NSWVBUT19PSykgewo+ICAgCQlwcl9lcnIoInZpcnRpb19jcnlwdG86IENyZWF0 ZSBzZXNzaW9uIGZhaWxlZCBzdGF0dXM6ICV1XG4iLAo+IC0JCQlsZTMyX3RvX2NwdSh2Y3J5cHRv LT5pbnB1dC5zdGF0dXMpKTsKPiAtCQlrZnJlZV9zZW5zaXRpdmUoY2lwaGVyX2tleSk7Cj4gLQkJ cmV0dXJuIC1FSU5WQUw7Cj4gKwkJCWxlMzJfdG9fY3B1KHZjX2N0cmxfcmVxLT5pbnB1dC5zdGF0 dXMpKTsKPiArCQllcnIgPSAtRUlOVkFMOwo+ICsJCWdvdG8gb3V0Owo+ICAgCX0KPiAgIAo+ICAg CWlmIChlbmNyeXB0KQo+ICAgCQljdHgtPmVuY19zZXNzX2luZm8uc2Vzc2lvbl9pZCA9Cj4gLQkJ CWxlNjRfdG9fY3B1KHZjcnlwdG8tPmlucHV0LnNlc3Npb25faWQpOwo+ICsJCQlsZTY0X3RvX2Nw dSh2Y19jdHJsX3JlcS0+aW5wdXQuc2Vzc2lvbl9pZCk7Cj4gICAJZWxzZQo+ICAgCQljdHgtPmRl Y19zZXNzX2luZm8uc2Vzc2lvbl9pZCA9Cj4gLQkJCWxlNjRfdG9fY3B1KHZjcnlwdG8tPmlucHV0 LnNlc3Npb25faWQpOwo+IC0KPiAtCXNwaW5fdW5sb2NrKCZ2Y3J5cHRvLT5jdHJsX2xvY2spOwo+ ICsJCQlsZTY0X3RvX2NwdSh2Y19jdHJsX3JlcS0+aW5wdXQuc2Vzc2lvbl9pZCk7Cj4gICAKPiAr CWVyciA9IDA7Cj4gK291dDoKPiArCWtmcmVlKHZjX2N0cmxfcmVxKTsKPiAgIAlrZnJlZV9zZW5z aXRpdmUoY2lwaGVyX2tleSk7Cj4gLQlyZXR1cm4gMDsKPiArCj4gKwlyZXR1cm4gZXJyOwo+ICAg fQo+ICAgCj4gICBzdGF0aWMgaW50IHZpcnRpb19jcnlwdG9fYWxnX3NrY2lwaGVyX2Nsb3NlX3Nl c3Npb24oCj4gQEAgLTIwNiwyMSArMTk4LDI0IEBAIHN0YXRpYyBpbnQgdmlydGlvX2NyeXB0b19h bGdfc2tjaXBoZXJfY2xvc2Vfc2Vzc2lvbigKPiAgIAkJaW50IGVuY3J5cHQpCj4gICB7Cj4gICAJ c3RydWN0IHNjYXR0ZXJsaXN0IG91dGhkciwgc3RhdHVzX3NnLCAqc2dzWzJdOwo+IC0JdW5zaWdu ZWQgaW50IHRtcDsKPiAgIAlzdHJ1Y3QgdmlydGlvX2NyeXB0b19kZXN0cm95X3Nlc3Npb25fcmVx ICpkZXN0cm95X3Nlc3Npb247Cj4gICAJc3RydWN0IHZpcnRpb19jcnlwdG8gKnZjcnlwdG8gPSBj dHgtPnZjcnlwdG87Cj4gICAJaW50IGVycjsKPiAgIAl1bnNpZ25lZCBpbnQgbnVtX291dCA9IDAs IG51bV9pbiA9IDA7Cj4gKwlzdHJ1Y3QgdmlydGlvX2NyeXB0b19jdHJsX3JlcXVlc3QgKnZjX2N0 cmxfcmVxOwo+ICsJc3RydWN0IHZpcnRpb19jcnlwdG9fY3RybF9oZWFkZXIgKmhlYWRlcjsKPiAr Cj4gKwl2Y19jdHJsX3JlcSA9IGt6YWxsb2Moc2l6ZW9mKCp2Y19jdHJsX3JlcSksIEdGUF9LRVJO RUwpOwo+ICsJaWYgKCF2Y19jdHJsX3JlcSkKPiArCQlyZXR1cm4gLUVOT01FTTsKPiAgIAo+IC0J c3Bpbl9sb2NrKCZ2Y3J5cHRvLT5jdHJsX2xvY2spOwo+IC0JdmNyeXB0by0+Y3RybF9zdGF0dXMu c3RhdHVzID0gVklSVElPX0NSWVBUT19FUlI7Cj4gICAJLyogUGFkIGN0cmwgaGVhZGVyICovCj4g LQl2Y3J5cHRvLT5jdHJsLmhlYWRlci5vcGNvZGUgPQo+IC0JCWNwdV90b19sZTMyKFZJUlRJT19D UllQVE9fQ0lQSEVSX0RFU1RST1lfU0VTU0lPTik7Cj4gKwloZWFkZXIgPSAmdmNfY3RybF9yZXEt PmN0cmwuaGVhZGVyOwo+ICsJaGVhZGVyLT5vcGNvZGUgPSBjcHVfdG9fbGUzMihWSVJUSU9fQ1JZ UFRPX0NJUEhFUl9ERVNUUk9ZX1NFU1NJT04pOwo+ICAgCS8qIFNldCB0aGUgZGVmYXVsdCB2aXJ0 cXVldWUgaWQgdG8gMCAqLwo+IC0JdmNyeXB0by0+Y3RybC5oZWFkZXIucXVldWVfaWQgPSAwOwo+ ICsJaGVhZGVyLT5xdWV1ZV9pZCA9IDA7Cj4gICAKPiAtCWRlc3Ryb3lfc2Vzc2lvbiA9ICZ2Y3J5 cHRvLT5jdHJsLnUuZGVzdHJveV9zZXNzaW9uOwo+ICsJZGVzdHJveV9zZXNzaW9uID0gJnZjX2N0 cmxfcmVxLT5jdHJsLnUuZGVzdHJveV9zZXNzaW9uOwo+ICAgCj4gICAJaWYgKGVuY3J5cHQpCj4g ICAJCWRlc3Ryb3lfc2Vzc2lvbi0+c2Vzc2lvbl9pZCA9Cj4gQEAgLTIyOSwzNyArMjI0LDMzIEBA IHN0YXRpYyBpbnQgdmlydGlvX2NyeXB0b19hbGdfc2tjaXBoZXJfY2xvc2Vfc2Vzc2lvbigKPiAg IAkJZGVzdHJveV9zZXNzaW9uLT5zZXNzaW9uX2lkID0KPiAgIAkJCWNwdV90b19sZTY0KGN0eC0+ ZGVjX3Nlc3NfaW5mby5zZXNzaW9uX2lkKTsKPiAgIAo+IC0Jc2dfaW5pdF9vbmUoJm91dGhkciwg JnZjcnlwdG8tPmN0cmwsIHNpemVvZih2Y3J5cHRvLT5jdHJsKSk7Cj4gKwlzZ19pbml0X29uZSgm b3V0aGRyLCAmdmNfY3RybF9yZXEtPmN0cmwsIHNpemVvZih2Y19jdHJsX3JlcS0+Y3RybCkpOwo+ ICAgCXNnc1tudW1fb3V0KytdID0gJm91dGhkcjsKPiAgIAo+ICAgCS8qIFJldHVybiBzdGF0dXMg YW5kIHNlc3Npb24gaWQgYmFjayAqLwo+IC0Jc2dfaW5pdF9vbmUoJnN0YXR1c19zZywgJnZjcnlw dG8tPmN0cmxfc3RhdHVzLnN0YXR1cywKPiAtCQlzaXplb2YodmNyeXB0by0+Y3RybF9zdGF0dXMu c3RhdHVzKSk7Cj4gKwl2Y19jdHJsX3JlcS0+Y3RybF9zdGF0dXMuc3RhdHVzID0gVklSVElPX0NS WVBUT19FUlI7Cj4gKwlzZ19pbml0X29uZSgmc3RhdHVzX3NnLCAmdmNfY3RybF9yZXEtPmN0cmxf c3RhdHVzLnN0YXR1cywKPiArCQlzaXplb2YodmNfY3RybF9yZXEtPmN0cmxfc3RhdHVzLnN0YXR1 cykpOwo+ICAgCXNnc1tudW1fb3V0ICsgbnVtX2luKytdID0gJnN0YXR1c19zZzsKPiAgIAo+IC0J ZXJyID0gdmlydHF1ZXVlX2FkZF9zZ3ModmNyeXB0by0+Y3RybF92cSwgc2dzLCBudW1fb3V0LAo+ IC0JCQludW1faW4sIHZjcnlwdG8sIEdGUF9BVE9NSUMpOwo+IC0JaWYgKGVyciA8IDApIHsKPiAt CQlzcGluX3VubG9jaygmdmNyeXB0by0+Y3RybF9sb2NrKTsKPiAtCQlyZXR1cm4gZXJyOwo+IC0J fQo+IC0JdmlydHF1ZXVlX2tpY2sodmNyeXB0by0+Y3RybF92cSk7Cj4gLQo+IC0Jd2hpbGUgKCF2 aXJ0cXVldWVfZ2V0X2J1Zih2Y3J5cHRvLT5jdHJsX3ZxLCAmdG1wKSAmJgo+IC0JICAgICAgICF2 aXJ0cXVldWVfaXNfYnJva2VuKHZjcnlwdG8tPmN0cmxfdnEpKQo+IC0JCWNwdV9yZWxheCgpOwo+ ICsJZXJyID0gdmlydGlvX2NyeXB0b19jdHJsX3ZxX3JlcXVlc3QodmNyeXB0bywgc2dzLCBudW1f b3V0LCBudW1faW4sIHZjX2N0cmxfcmVxKTsKPiArCWlmIChlcnIgPCAwKQo+ICsJCWdvdG8gb3V0 Owo+ICAgCj4gLQlpZiAodmNyeXB0by0+Y3RybF9zdGF0dXMuc3RhdHVzICE9IFZJUlRJT19DUllQ VE9fT0spIHsKPiAtCQlzcGluX3VubG9jaygmdmNyeXB0by0+Y3RybF9sb2NrKTsKPiArCWlmICh2 Y19jdHJsX3JlcS0+Y3RybF9zdGF0dXMuc3RhdHVzICE9IFZJUlRJT19DUllQVE9fT0spIHsKPiAg IAkJcHJfZXJyKCJ2aXJ0aW9fY3J5cHRvOiBDbG9zZSBzZXNzaW9uIGZhaWxlZCBzdGF0dXM6ICV1 LCBzZXNzaW9uX2lkOiAweCVsbHhcbiIsCj4gLQkJCXZjcnlwdG8tPmN0cmxfc3RhdHVzLnN0YXR1 cywKPiArCQkJdmNfY3RybF9yZXEtPmN0cmxfc3RhdHVzLnN0YXR1cywKPiAgIAkJCWRlc3Ryb3lf c2Vzc2lvbi0+c2Vzc2lvbl9pZCk7Cj4gICAKPiAtCQlyZXR1cm4gLUVJTlZBTDsKPiArCQllcnIg PSAtRUlOVkFMOwo+ICsJCWdvdG8gb3V0Owo+ICAgCX0KPiAtCXNwaW5fdW5sb2NrKCZ2Y3J5cHRv LT5jdHJsX2xvY2spOwo+ICAgCj4gLQlyZXR1cm4gMDsKPiArCWVyciA9IDA7Cj4gK291dDoKPiAr CWtmcmVlKHZjX2N0cmxfcmVxKTsKPiArCj4gKwlyZXR1cm4gZXJyOwo+ICAgfQo+ICAgCj4gICBz dGF0aWMgaW50IHZpcnRpb19jcnlwdG9fYWxnX3NrY2lwaGVyX2luaXRfc2Vzc2lvbnMoCgpfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpWaXJ0dWFsaXphdGlv biBtYWlsaW5nIGxpc3QKVmlydHVhbGl6YXRpb25AbGlzdHMubGludXgtZm91bmRhdGlvbi5vcmcK aHR0cHM6Ly9saXN0cy5saW51eGZvdW5kYXRpb24ub3JnL21haWxtYW4vbGlzdGluZm8vdmlydHVh bGl6YXRpb24=