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=-15.3 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS, USER_AGENT_SANE_1 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 93297C433ED for ; Thu, 8 Apr 2021 08:34:22 +0000 (UTC) Received: from desiato.infradead.org (desiato.infradead.org [90.155.92.199]) (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 DB42D61004 for ; Thu, 8 Apr 2021 08:34:21 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org DB42D61004 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=suse.de Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-nvme-bounces+linux-nvme=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=desiato.20200630; h=Sender:Content-Type: Content-Transfer-Encoding:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:Date:Message-ID:From: References:Cc:To:Subject:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=eVsYZHn52z59gOY0cmQDnha5YMiuFEWp5syuMnsHTKs=; b=R1HQMH227SuwaPbqNSGH4Bd4a rkGx/e1uQatSmfG0onn/k4CERZWJRQSG33vdZCLVnQWenAFgrW2OHBSlaysfQTtzf3RSIIP40znGv 0n+PrXpMwKsGidvyNTP/nwEZNFLW4EEEJL1rZ+UkCGa8/8tHpZipnFyEfI0MHsNXPUzYhCuDOLu5A mGau7fJ3Q9Tf74lnO9sCXFg5hMUDiPuwWE1yEtP1suyn9Pdtg7XihDQ0G9AJMovK0j3i0QTXFYL2w 4PY4zXuwLOjsTltkgsfn2ceC5vt/pZ7Og9NrmuY8h4JcoWi9ZoQdjAcxScdNrQoYIwD9m+PJVIJtC YxaSUoGbA==; Received: from localhost ([::1] helo=desiato.infradead.org) by desiato.infradead.org with esmtp (Exim 4.94 #2 (Red Hat Linux)) id 1lUQ75-007LSa-1t; Thu, 08 Apr 2021 08:34:07 +0000 Received: from mx2.suse.de ([195.135.220.15]) by desiato.infradead.org with esmtps (Exim 4.94 #2 (Red Hat Linux)) id 1lUQ6z-007LSF-Rc for linux-nvme@lists.infradead.org; Thu, 08 Apr 2021 08:34:04 +0000 X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay2.suse.de (unknown [195.135.221.27]) by mx2.suse.de (Postfix) with ESMTP id 73BF9B001; Thu, 8 Apr 2021 08:34:01 +0000 (UTC) Subject: Re: [PATCH v9 07/13] lpfc: vmid: Implements ELS commands for appid patch To: Muneendra , linux-block@vger.kernel.org, linux-scsi@vger.kernel.org, tj@kernel.org, linux-nvme@lists.infradead.org Cc: jsmart2021@gmail.com, emilne@redhat.com, mkumar@redhat.com, Gaurav Srivastava References: <1617750397-26466-1-git-send-email-muneendra.kumar@broadcom.com> <1617750397-26466-8-git-send-email-muneendra.kumar@broadcom.com> From: Hannes Reinecke Message-ID: <14de7d36-0833-31fd-1bfe-34b3fdc859cf@suse.de> Date: Thu, 8 Apr 2021 10:34:00 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.7.0 MIME-Version: 1.0 In-Reply-To: <1617750397-26466-8-git-send-email-muneendra.kumar@broadcom.com> Content-Language: en-US X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210408_093402_473384_FBBBB4FB X-CRM114-Status: GOOD ( 31.97 ) X-BeenThere: linux-nvme@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Sender: "Linux-nvme" Errors-To: linux-nvme-bounces+linux-nvme=archiver.kernel.org@lists.infradead.org T24gNC83LzIxIDE6MDYgQU0sIE11bmVlbmRyYSB3cm90ZToKPiBGcm9tOiBHYXVyYXYgU3JpdmFz dGF2YSA8Z2F1cmF2LnNyaXZhc3RhdmFAYnJvYWRjb20uY29tPgo+IAo+IFRoaXMgcGF0Y2ggaW1w bGVtZW50cyBFTFMgY29tbWFuZCBsaWtlIFFGUEEgYW5kIFVWRU0gZm9yIHRoZSBwcmlvcml0eQo+ IHRhZ2dpbmcgYXBwaWQgc3VwcG9ydC4gT3RoZXIgc3VwcG9ydGluZyBmdW5jdGlvbnMgYXJlIGFs c28gcGFydCBvZiB0aGlzCj4gcGF0Y2guCj4gCj4gU2lnbmVkLW9mZi1ieTogR2F1cmF2IFNyaXZh c3RhdmEgIDxnYXVyYXYuc3JpdmFzdGF2YUBicm9hZGNvbS5jb20+Cj4gU2lnbmVkLW9mZi1ieTog SmFtZXMgU21hcnQgPGpzbWFydDIwMjFAZ21haWwuY29tPgo+IAo+IC0tLQo+IHY5Ogo+IEFkZGVk IGEgbG9jayB3aGlsZSBhY2Nlc3NpbmcgYSBmbGFnCj4gCj4gdjg6Cj4gQWRkZWQgbG9nIG1lc3Nh Z2VzIG1vZGlmaWNhdGlvbnMsIG1lbW9yeSBhbGxvY2F0aW9uIEFQSSBjaGFuZ2VzLAo+IHJldHVy biBlcnJvciBjb2Rlcwo+IAo+IHY3Ogo+IE5vIGNoYW5nZQo+IAo+IHY2Ogo+IEFkZGVkIEZvcndh cmQgZGVjbGFyYXRpb25zLCBzdGF0aWMgZnVuY3Rpb25zIGFuZAo+IHJlbW92ZWQgdW51c2VkIHZh cmlhYmxlcwo+IAo+IHY1Ogo+IENoYW5nZWQgUmV0dXJuIGNvZGUgdG8gbm9uLW51bWVyaWMvU3lt Ym9sLgo+IEFkZHJlc3NlZCB0aGUgcmV2aWV3IGNvbW1lbnRzIGJ5IEhhbm5lcwo+IAo+IHY0Ogo+ IE5vIGNoYW5nZQo+IAo+IHYzOgo+IE5vIGNoYW5nZQo+IAo+IHYyOgo+IFBvcnRlZCB0aGUgcGF0 Y2ggb24gdG9wIG9mIDUuMTAvc2NzaS1xdWV1ZQo+IC0tLQo+ICAgZHJpdmVycy9zY3NpL2xwZmMv bHBmY19lbHMuYyB8IDM2NiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLQo+ICAg MSBmaWxlIGNoYW5nZWQsIDM2MiBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQo+IAo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvbHBmYy9scGZjX2Vscy5jIGIvZHJpdmVycy9zY3NpL2xw ZmMvbHBmY19lbHMuYwo+IGluZGV4IGEwNDU0NmVjYTE4Zi4uMjJhODc1NTlmNjJkIDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvc2NzaS9scGZjL2xwZmNfZWxzLmMKPiArKysgYi9kcml2ZXJzL3Njc2kv bHBmYy9scGZjX2Vscy5jCj4gQEAgLTI1LDYgKzI1LDcgQEAKPiAgICNpbmNsdWRlIDxsaW51eC9w Y2kuaD4KPiAgICNpbmNsdWRlIDxsaW51eC9zbGFiLmg+Cj4gICAjaW5jbHVkZSA8bGludXgvaW50 ZXJydXB0Lmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9kZWxheS5oPgo+ICAgCj4gICAjaW5jbHVkZSA8 c2NzaS9zY3NpLmg+Cj4gICAjaW5jbHVkZSA8c2NzaS9zY3NpX2RldmljZS5oPgo+IEBAIC01NSw5 ICs1NiwxNSBAQCBzdGF0aWMgaW50IGxwZmNfaXNzdWVfZWxzX2ZkaXNjKHN0cnVjdCBscGZjX3Zw b3J0ICp2cG9ydCwKPiAgIAkJCQlzdHJ1Y3QgbHBmY19ub2RlbGlzdCAqbmRscCwgdWludDhfdCBy ZXRyeSk7Cj4gICBzdGF0aWMgaW50IGxwZmNfaXNzdWVfZmFicmljX2lvY2Ioc3RydWN0IGxwZmNf aGJhICpwaGJhLAo+ICAgCQkJCSAgc3RydWN0IGxwZmNfaW9jYnEgKmlvY2IpOwo+ICtzdGF0aWMg dm9pZCBscGZjX2NtcGxfZWxzX3V2ZW0oc3RydWN0IGxwZmNfaGJhICosIHN0cnVjdCBscGZjX2lv Y2JxICosCj4gKwkJCSAgICAgICBzdHJ1Y3QgbHBmY19pb2NicSAqKTsKPiAgIAo+ICAgc3RhdGlj IGludCBscGZjX21heF9lbHNfdHJpZXMgPSAzOwo+ICAgCj4gK3N0YXRpYyB2b2lkIGxwZmNfaW5p dF9jc19jdGxfYml0bWFwKHN0cnVjdCBscGZjX3Zwb3J0ICp2cG9ydCk7Cj4gK3N0YXRpYyB2b2lk IGxwZmNfdm1pZF9zZXRfY3NfY3RsX3JhbmdlKHN0cnVjdCBscGZjX3Zwb3J0ICp2cG9ydCwgdTMy IG1pbiwgdTMyIG1heCk7Cj4gK3N0YXRpYyB2b2lkIGxwZmNfdm1pZF9wdXRfY3NfY3RsKHN0cnVj dCBscGZjX3Zwb3J0ICp2cG9ydCwgdTMyIGN0Y2xfdm1pZCk7Cj4gKwo+ICAgLyoqCj4gICAgKiBs cGZjX2Vsc19jaGtfbGF0dCAtIENoZWNrIGhvc3QgbGluayBhdHRlbnRpb24gZXZlbnQgZm9yIGEg dnBvcnQKPiAgICAqIEB2cG9ydDogcG9pbnRlciB0byBhIGhvc3QgdmlydHVhbCBOX1BvcnQgZGF0 YSBzdHJ1Y3R1cmUuCj4gQEAgLTMxNCwxMCArMzIxLDEwIEBAIGxwZmNfcHJlcF9lbHNfaW9jYihz dHJ1Y3QgbHBmY192cG9ydCAqdnBvcnQsIHVpbnQ4X3QgZXhwZWN0UnNwLAo+ICAgCQlscGZjX3By aW50Zl92bG9nKHZwb3J0LCBLRVJOX0lORk8sIExPR19FTFMsCj4gICAJCQkJICIwMTE2IFhtaXQg RUxTIGNvbW1hbmQgeCV4IHRvIHJlbW90ZSAiCj4gICAJCQkJICJOUE9SVCB4JXggSS9PIHRhZzog eCV4LCBwb3J0IHN0YXRlOngleCAiCj4gLQkJCQkgInJwaSB4JXggZmNfZmxhZzp4JXhcbiIsCj4g KwkJCQkgInJwaSB4JXggZmNfZmxhZzp4JXggbmxwX2ZsYWc6eCV4IHZwb3J0OnglcFxuIiwKPiAg IAkJCQkgZWxzY21kLCBkaWQsIGVsc2lvY2ItPmlvdGFnLAo+ICAgCQkJCSB2cG9ydC0+cG9ydF9z dGF0ZSwgbmRscC0+bmxwX3JwaSwKPiAtCQkJCSB2cG9ydC0+ZmNfZmxhZyk7Cj4gKwkJCQkgdnBv cnQtPmZjX2ZsYWcsIG5kbHAtPm5scF9mbGFnLCB2cG9ydCk7Cj4gICAJfSBlbHNlIHsKPiAgIAkJ LyogWG1pdCBFTFMgcmVzcG9uc2UgPGVsc0NtZD4gdG8gcmVtb3RlIE5QT1JUIDxkaWQ+ICovCj4g ICAJCWxwZmNfcHJpbnRmX3Zsb2codnBvcnQsIEtFUk5fSU5GTywgTE9HX0VMUywKPiBAQCAtMTEx MiwxMSArMTExOSwxNSBAQCBscGZjX2NtcGxfZWxzX2Zsb2dpKHN0cnVjdCBscGZjX2hiYSAqcGhi YSwgc3RydWN0IGxwZmNfaW9jYnEgKmNtZGlvY2IsCj4gICAJLyogRkxPR0kgY29tcGxldGVzIHN1 Y2Nlc3NmdWxseSAqLwo+ICAgCWxwZmNfcHJpbnRmX3Zsb2codnBvcnQsIEtFUk5fSU5GTywgTE9H X0VMUywKPiAgIAkJCSAiMDEwMSBGTE9HSSBjb21wbGV0ZXMgc3VjY2Vzc2Z1bGx5LCBJL08gdGFn OngleCwgIgo+IC0JCQkgInhyaSB4JXggRGF0YTogeCV4IHgleCB4JXggeCV4IHgleCAleFxuIiwK PiArCQkJICJ4cmkgeCV4IERhdGE6IHgleCB4JXggeCV4IHgleCB4JXggeCV4IHgleFxuIiwKPiAg IAkJCSBjbWRpb2NiLT5pb3RhZywgY21kaW9jYi0+c2xpNF94cml0YWcsCj4gICAJCQkgaXJzcC0+ dW4udWxwV29yZFs0XSwgc3AtPmNtbi5lX2RfdG92LAo+ICAgCQkJIHNwLT5jbW4udzIucl9hX3Rv diwgc3AtPmNtbi5lZHRvdlJlc29sdXRpb24sCj4gLQkJCSB2cG9ydC0+cG9ydF9zdGF0ZSwgdnBv cnQtPmZjX2ZsYWcpOwo+ICsJCQkgdnBvcnQtPnBvcnRfc3RhdGUsIHZwb3J0LT5mY19mbGFnLAo+ ICsJCQkgc3AtPmNtbi5wcmlvcml0eV90YWdnaW5nKTsKPiArCj4gKwlpZiAoc3AtPmNtbi5wcmlv cml0eV90YWdnaW5nKQo+ICsJCXZwb3J0LT52bWlkX2ZsYWcgfD0gTFBGQ19WTUlEX0lTU1VFX1FG UEE7Cj4gICAKPiAgIAlpZiAodnBvcnQtPnBvcnRfc3RhdGUgPT0gTFBGQ19GTE9HSSkgewo+ICAg CQkvKgo+IEBAIC0xMjk5LDYgKzEzMTAsMTggQEAgbHBmY19pc3N1ZV9lbHNfZmxvZ2koc3RydWN0 IGxwZmNfdnBvcnQgKnZwb3J0LCBzdHJ1Y3QgbHBmY19ub2RlbGlzdCAqbmRscCwKPiAgIAlpZiAo c3AtPmNtbi5mY3BoSGlnaCA8IEZDX1BIMykKPiAgIAkJc3AtPmNtbi5mY3BoSGlnaCA9IEZDX1BI MzsKPiAgIAo+ICsJLyogdG8gZGV0ZXJpbmUgaWYgc3dpdGNoIHN1cHBvcnRzIHByaW9yaXR5IHRh Z2dpbmcgKi8KCmRldGVybWluZSAoc3ApIC4uLgoKPiArCWlmIChwaGJhLT5jZmdfdm1pZF9wcmlv cml0eV90YWdnaW5nKSB7Cj4gKwkJc3AtPmNtbi5wcmlvcml0eV90YWdnaW5nID0gMTsKPiArCQkv KiBscGZjX3ZtaWRfaG9zdF91dWlkIGlzIGNvbWJpbmF0aW9uIG9mIHd3cG4gYW5kIHd3bm4gKi8K PiArCQlpZiAodXVpZF9pc19udWxsKCh1dWlkX3QgKil2cG9ydC0+bHBmY192bWlkX2hvc3RfdXVp ZCkpIHsKPiArCQkJbWVtY3B5KHZwb3J0LT5scGZjX3ZtaWRfaG9zdF91dWlkLCBwaGJhLT53d3Bu LAo+ICsJCQkgICAgICAgc2l6ZW9mKHBoYmEtPnd3cG4pKTsKPiArCQkJbWVtY3B5KCZ2cG9ydC0+ bHBmY192bWlkX2hvc3RfdXVpZFs4XSwgcGhiYS0+d3dubiwKPiArCQkJICAgICAgIHNpemVvZihw aGJhLT53d25uKSk7Cj4gKwkJfQo+ICsJfQo+ICsKPiAgIAlpZiAgKHBoYmEtPnNsaV9yZXYgPT0g TFBGQ19TTElfUkVWNCkgewo+ICAgCQlpZiAoYmZfZ2V0KGxwZmNfc2xpX2ludGZfaWZfdHlwZSwg JnBoYmEtPnNsaTRfaGJhLnNsaV9pbnRmKSA9PQo+ICAgCQkgICAgTFBGQ19TTElfSU5URl9JRl9U WVBFXzApIHsKPiBAQCAtMTkwNyw2ICsxOTMwLDcgQEAgbHBmY19jbXBsX2Vsc19wbG9naShzdHJ1 Y3QgbHBmY19oYmEgKnBoYmEsIHN0cnVjdCBscGZjX2lvY2JxICpjbWRpb2NiLAo+ICAgCXN0cnVj dCBscGZjX25vZGVsaXN0ICpuZGxwLCAqZnJlZV9uZGxwOwo+ICAgCXN0cnVjdCBscGZjX2RtYWJ1 ZiAqcHJzcDsKPiAgIAlpbnQgZGlzYzsKPiArCXN0cnVjdCBzZXJ2X3Bhcm0gKnNwID0gTlVMTDsK PiAgIAo+ICAgCS8qIHdlIHBhc3MgY21kaW9jYiB0byBzdGF0ZSBtYWNoaW5lIHdoaWNoIG5lZWRz IHJzcGlvY2IgYXMgd2VsbCAqLwo+ICAgCWNtZGlvY2ItPmNvbnRleHRfdW4ucnNwX2lvY2IgPSBy c3Bpb2NiOwo+IEBAIC0xOTk3LDYgKzIwMjEsMjMgQEAgbHBmY19jbXBsX2Vsc19wbG9naShzdHJ1 Y3QgbHBmY19oYmEgKnBoYmEsIHN0cnVjdCBscGZjX2lvY2JxICpjbWRpb2NiLAo+ICAgCQkJCSAg IGNtZGlvY2ItPmNvbnRleHQyKS0+bGlzdC5uZXh0LAo+ICAgCQkJCSAgc3RydWN0IGxwZmNfZG1h YnVmLCBsaXN0KTsKPiAgIAkJbmRscCA9IGxwZmNfcGxvZ2lfY29uZmlybV9ucG9ydChwaGJhLCBw cnNwLT52aXJ0LCBuZGxwKTsKPiArCj4gKwkJc3AgPSAoc3RydWN0IHNlcnZfcGFybSAqKSgodTgg KilwcnNwLT52aXJ0ICsKPiArCQkJCQkgIHNpemVvZih1MzIpKTsKPiArCj4gKwkJbmRscC0+dm1p ZF9zdXBwb3J0ID0gMDsKPiArCQlpZiAoKHBoYmEtPmNmZ192bWlkX2FwcF9oZWFkZXIgJiYgc3At PmNtbi5hcHBfaGRyX3N1cHBvcnQpIHx8Cj4gKwkJICAgIChwaGJhLT5jZmdfdm1pZF9wcmlvcml0 eV90YWdnaW5nICYmCj4gKwkJICAgICBzcC0+Y21uLnByaW9yaXR5X3RhZ2dpbmcpKSB7Cj4gKwkJ CWxwZmNfcHJpbnRmX2xvZyhwaGJhLCBLRVJOX0RFQlVHLCBMT0dfRUxTLAo+ICsJCQkJCSI0MDE4 IGFwcF9oZHJfc3VwcG9ydCAlZCB0YWdnaW5nICVkIERJRCB4JXhcbiIsCj4gKwkJCQkJc3AtPmNt bi5hcHBfaGRyX3N1cHBvcnQsCj4gKwkJCQkJc3AtPmNtbi5wcmlvcml0eV90YWdnaW5nLAo+ICsJ CQkJCW5kbHAtPm5scF9ESUQpOwo+ICsJCQkvKiBpZiB0aGUgZGVzdCBwb3J0IHN1cHBvcnRzIFZN SUQsIG1hcmsgaXQgaW4gbmRscCAqLwo+ICsJCQluZGxwLT52bWlkX3N1cHBvcnQgPSAxOwo+ICsJ CX0KPiArCj4gICAJCWxwZmNfZGlzY19zdGF0ZV9tYWNoaW5lKHZwb3J0LCBuZGxwLCBjbWRpb2Ni LAo+ICAgCQkJCQlOTFBfRVZUX0NNUExfUExPR0kpOwo+ICAgCX0KPiBAQCAtMjExOSw2ICsyMTYw LDE0IEBAIGxwZmNfaXNzdWVfZWxzX3Bsb2dpKHN0cnVjdCBscGZjX3Zwb3J0ICp2cG9ydCwgdWlu dDMyX3QgZGlkLCB1aW50OF90IHJldHJ5KQo+ICAgCW1lbXNldChzcC0+dW4udmVuZG9yVmVyc2lv biwgMCwgc2l6ZW9mKHNwLT51bi52ZW5kb3JWZXJzaW9uKSk7Cj4gICAJc3AtPmNtbi5iYlJjdlNp emVNc2IgJj0gMHhGOwo+ICAgCj4gKwkvKiBjaGVjayBpZiB0aGUgZGVzdGluYXRpb24gcG9ydCBz dXBwb3J0cyBWTUlEICovCj4gKwluZGxwLT52bWlkX3N1cHBvcnQgPSAwOwo+ICsJaWYgKHZwb3J0 LT52bWlkX3ByaW9yaXR5X3RhZ2dpbmcpCj4gKwkJc3AtPmNtbi5wcmlvcml0eV90YWdnaW5nID0g MTsKPiArCWVsc2UgaWYgKHBoYmEtPmNmZ192bWlkX2FwcF9oZWFkZXIgJiYKPiArCQkgYmZfZ2V0 KGxwZmNfZnRyX2FzaGRyLCAmcGhiYS0+c2xpNF9oYmEuc2xpNF9mbGFncykpCj4gKwkJc3AtPmNt bi5hcHBfaGRyX3N1cHBvcnQgPSAxOwo+ICsKPiAgIAlscGZjX2RlYnVnZnNfZGlzY190cmModnBv cnQsIExQRkNfRElTQ19UUkNfRUxTX0NNRCwKPiAgIAkJIklzc3VlIFBMT0dJOiAgICAgZGlkOngl eCIsCj4gICAJCWRpZCwgMCwgMCk7Cj4gQEAgLTEwMjYwLDMgKzEwMzA5LDMxMiBAQCBscGZjX3Ns aV9hYnRzX3JlY292ZXJfcG9ydChzdHJ1Y3QgbHBmY192cG9ydCAqdnBvcnQsCj4gICAJbHBmY191 bnJlZ19ycGkodnBvcnQsIG5kbHApOwo+ICAgfQo+ICAgCj4gK3N0YXRpYyB2b2lkIGxwZmNfaW5p dF9jc19jdGxfYml0bWFwKHN0cnVjdCBscGZjX3Zwb3J0ICp2cG9ydCkKPiArewo+ICsJYml0bWFw X3plcm8odnBvcnQtPnZtaWRfcHJpb3JpdHlfcmFuZ2UsIExQRkNfVk1JRF9NQVhfUFJJT1JJVFlf UkFOR0UpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZAo+ICtscGZjX3ZtaWRfc2V0X2NzX2N0bF9y YW5nZShzdHJ1Y3QgbHBmY192cG9ydCAqdnBvcnQsIHUzMiBtaW4sIHUzMiBtYXgpCj4gK3sKPiAr CXUzMiBpOwo+ICsKPiArCWlmICgobWluID4gbWF4KSB8fCAobWF4ID4gTFBGQ19WTUlEX01BWF9Q UklPUklUWV9SQU5HRSkpCj4gKwkJcmV0dXJuOwo+ICsKPiArCWZvciAoaSA9IG1pbjsgaSA8PSBt YXg7IGkrKykKPiArCQlzZXRfYml0KGksIHZwb3J0LT52bWlkX3ByaW9yaXR5X3JhbmdlKTsKPiAr fQo+ICsKPiArc3RhdGljIHZvaWQgbHBmY192bWlkX3B1dF9jc19jdGwoc3RydWN0IGxwZmNfdnBv cnQgKnZwb3J0LCB1MzIgY3RjbF92bWlkKQo+ICt7Cj4gKwlzZXRfYml0KGN0Y2xfdm1pZCwgdnBv cnQtPnZtaWRfcHJpb3JpdHlfcmFuZ2UpOwo+ICt9Cj4gKwo+ICt1MzIgbHBmY192bWlkX2dldF9j c19jdGwoc3RydWN0IGxwZmNfdnBvcnQgKnZwb3J0KQo+ICt7Cj4gKwl1MzIgaTsKPiArCj4gKwlp ID0gZmluZF9maXJzdF9iaXQodnBvcnQtPnZtaWRfcHJpb3JpdHlfcmFuZ2UsCj4gKwkJCSAgIExQ RkNfVk1JRF9NQVhfUFJJT1JJVFlfUkFOR0UpOwo+ICsKPiArCWlmIChpID09IExQRkNfVk1JRF9N QVhfUFJJT1JJVFlfUkFOR0UpCj4gKwkJcmV0dXJuIDA7Cj4gKwo+ICsJY2xlYXJfYml0KGksIHZw b3J0LT52bWlkX3ByaW9yaXR5X3JhbmdlKTsKPiArCXJldHVybiBpOwo+ICt9Cj4gKwo+ICsjZGVm aW5lIE1BWF9QUklPUklUWV9ERVNDCTI1NQo+ICsKPiArc3RhdGljIHZvaWQKPiArbHBmY19jbXBs X2Vsc19xZnBhKHN0cnVjdCBscGZjX2hiYSAqcGhiYSwgc3RydWN0IGxwZmNfaW9jYnEgKmNtZGlv Y2IsCj4gKwkJICAgc3RydWN0IGxwZmNfaW9jYnEgKnJzcGlvY2IpCj4gK3sKPiArCXN0cnVjdCBs cGZjX3Zwb3J0ICp2cG9ydCA9IGNtZGlvY2ItPnZwb3J0Owo+ICsJc3RydWN0IHByaW9yaXR5X3Jh bmdlX2Rlc2MgKmRlc2M7Cj4gKwlzdHJ1Y3QgbHBmY19kbWFidWYgKnByc3AgPSBOVUxMOwo+ICsJ c3RydWN0IGxwZmNfdm1pZF9wcmlvcml0eV9yYW5nZSAqdm1pZF9yYW5nZSA9IE5VTEw7Cj4gKwl1 MzIgKmRhdGE7Cj4gKwlzdHJ1Y3QgbHBmY19kbWFidWYgKmRtYWJ1ZiA9IGNtZGlvY2ItPmNvbnRl eHQyOwo+ICsJSU9DQl90ICppcnNwID0gJnJzcGlvY2ItPmlvY2I7Cj4gKwl1OCAqcGNtZCwgbWF4 X2Rlc2M7Cj4gKwl1MzIgbGVuLCBpOwo+ICsJc3RydWN0IGxwZmNfbm9kZWxpc3QgKm5kbHAgPSAo c3RydWN0IGxwZmNfbm9kZWxpc3QgKiljbWRpb2NiLT5jb250ZXh0MTsKPiArCj4gKwlwcnNwID0g bGlzdF9nZXRfZmlyc3QoJmRtYWJ1Zi0+bGlzdCwgc3RydWN0IGxwZmNfZG1hYnVmLCBsaXN0KTsK PiArCWlmICghcHJzcCkKPiArCQlnb3RvIG91dDsKPiArCj4gKwlwY21kID0gcHJzcC0+dmlydDsK PiArCWRhdGEgPSAodTMyICopcGNtZDsKPiArCWlmIChkYXRhWzBdID09IEVMU19DTURfTFNfUkpU KSB7Cj4gKwkJbHBmY19wcmludGZfdmxvZyh2cG9ydCwgS0VSTl9XQVJOSU5HLCBMT0dfU0xJLAo+ ICsJCQkJICIzMjc3IFFGUEEgTFNfUkpUIHgleCAgeCV4XG4iLAo+ICsJCQkJIGRhdGFbMF0sIGRh dGFbMV0pOwo+ICsJCWdvdG8gb3V0Owo+ICsJfQo+ICsJaWYgKGlyc3AtPnVscFN0YXR1cykgewo+ ICsJCWxwZmNfcHJpbnRmX3Zsb2codnBvcnQsIEtFUk5fRVJSLCBMT0dfU0xJLAo+ICsJCQkJICI2 NTI5IFFGUEEgZmFpbGVkIHdpdGggc3RhdHVzIHgleCAgeCV4XG4iLAo+ICsJCQkJIGlyc3AtPnVs cFN0YXR1cywgaXJzcC0+dW4udWxwV29yZFs0XSk7Cj4gKwkJZ290byBvdXQ7Cj4gKwl9Cj4gKwo+ ICsJaWYgKCF2cG9ydC0+cWZwYV9yZXMpIHsKPiArCQltYXhfZGVzYyA9IEZDRUxTU0laRSAvIHNp emVvZigqdnBvcnQtPnFmcGFfcmVzKTsKPiArCQl2cG9ydC0+cWZwYV9yZXMgPSBrY2FsbG9jKG1h eF9kZXNjLCBzaXplb2YoKnZwb3J0LT5xZnBhX3JlcyksCj4gKwkJCQkJICBHRlBfS0VSTkVMKTsK PiArCQlpZiAoIXZwb3J0LT5xZnBhX3JlcykKPiArCQkJZ290byBvdXQ7Cj4gKwl9Cj4gKwo+ICsJ bGVuID0gKigodTMyICopKHBjbWQgKyA0KSk7Cj4gKwlsZW4gPSBiZTMyX3RvX2NwdShsZW4pOwo+ ICsJbWVtY3B5KHZwb3J0LT5xZnBhX3JlcywgcGNtZCwgbGVuICsgOCk7Cj4gKwlsZW4gPSBsZW4g LyBMUEZDX1BSSU9SSVRZX1JBTkdFX0RFU0NfU0laRTsKPiArCj4gKwlkZXNjID0gKHN0cnVjdCBw cmlvcml0eV9yYW5nZV9kZXNjICopKHBjbWQgKyA4KTsKPiArCXZtaWRfcmFuZ2UgPSB2cG9ydC0+ dm1pZF9wcmlvcml0eS52bWlkX3JhbmdlOwo+ICsJaWYgKCF2bWlkX3JhbmdlKSB7Cj4gKwkJdm1p ZF9yYW5nZSA9IGtjYWxsb2MoTUFYX1BSSU9SSVRZX0RFU0MsIHNpemVvZigqdm1pZF9yYW5nZSks Cj4gKwkJCQkgICAgIEdGUF9LRVJORUwpOwo+ICsJCWlmICghdm1pZF9yYW5nZSkgewo+ICsJCQlr ZnJlZSh2cG9ydC0+cWZwYV9yZXMpOwo+ICsJCQlnb3RvIG91dDsKPiArCQl9Cj4gKwkJdnBvcnQt PnZtaWRfcHJpb3JpdHkudm1pZF9yYW5nZSA9IHZtaWRfcmFuZ2U7Cj4gKwl9Cj4gKwl2cG9ydC0+ dm1pZF9wcmlvcml0eS5udW1fZGVzY3JpcHRvcnMgPSBsZW47Cj4gKwo+ICsJZm9yIChpID0gMDsg aSA8IGxlbjsgaSsrLCB2bWlkX3JhbmdlKyssIGRlc2MrKykgewo+ICsJCWxwZmNfcHJpbnRmX3Zs b2codnBvcnQsIEtFUk5fREVCVUcsIExPR19FTFMsCj4gKwkJCQkgIjY1Mzkgdm1pZCB2YWx1ZXMg bG93PSVkLCBoaWdoPSVkLCBxb3M9JWQsICIKPiArCQkJCSAibG9jYWwgdmUgaWQ9JWRcbiIsIGRl c2MtPmxvX3JhbmdlLAo+ICsJCQkJIGRlc2MtPmhpX3JhbmdlLCBkZXNjLT5xb3NfcHJpb3JpdHks Cj4gKwkJCQkgZGVzYy0+bG9jYWxfdmVfaWQpOwo+ICsKPiArCQl2bWlkX3JhbmdlLT5sb3cgPSBk ZXNjLT5sb19yYW5nZSA8PCAxOwo+ICsJCWlmIChkZXNjLT5sb2NhbF92ZV9pZCA9PSBRRlBBX09E RF9PTkxZKQo+ICsJCQl2bWlkX3JhbmdlLT5sb3crKzsKPiArCQlpZiAoZGVzYy0+cW9zX3ByaW9y aXR5KQo+ICsJCQl2cG9ydC0+dm1pZF9mbGFnIHw9IExQRkNfVk1JRF9RT1NfRU5BQkxFRDsKPiAr CQl2bWlkX3JhbmdlLT5xb3MgPSBkZXNjLT5xb3NfcHJpb3JpdHk7Cj4gKwo+ICsJCXZtaWRfcmFu Z2UtPmhpZ2ggPSBkZXNjLT5oaV9yYW5nZSA8PCAxOwo+ICsJCWlmICgoZGVzYy0+bG9jYWxfdmVf aWQgPT0gUUZQQV9PRERfT05MWSkgfHwKPiArCQkgICAgKGRlc2MtPmxvY2FsX3ZlX2lkID09IFFG UEFfRVZFTl9PREQpKQo+ICsJCQl2bWlkX3JhbmdlLT5oaWdoKys7Cj4gKwl9Cj4gKwlscGZjX2lu aXRfY3NfY3RsX2JpdG1hcCh2cG9ydCk7Cj4gKwlmb3IgKGkgPSAwOyBpIDwgdnBvcnQtPnZtaWRf cHJpb3JpdHkubnVtX2Rlc2NyaXB0b3JzOyBpKyspIHsKPiArCQlscGZjX3ZtaWRfc2V0X2NzX2N0 bF9yYW5nZSh2cG9ydCwKPiArCQkJCXZwb3J0LT52bWlkX3ByaW9yaXR5LnZtaWRfcmFuZ2VbaV0u bG93LAo+ICsJCQkJdnBvcnQtPnZtaWRfcHJpb3JpdHkudm1pZF9yYW5nZVtpXS5oaWdoKTsKPiAr CX0KPiArCj4gKwl2cG9ydC0+dm1pZF9mbGFnIHw9IExQRkNfVk1JRF9RRlBBX0NNUEw7Cj4gKyBv dXQ6Cj4gKwlscGZjX2Vsc19mcmVlX2lvY2IocGhiYSwgY21kaW9jYik7Cj4gKwlscGZjX25scF9w dXQobmRscCk7Cj4gK30KPiArCj4gK2ludCBscGZjX2lzc3VlX2Vsc19xZnBhKHN0cnVjdCBscGZj X3Zwb3J0ICp2cG9ydCkKPiArewo+ICsJc3RydWN0IGxwZmNfaGJhICpwaGJhID0gdnBvcnQtPnBo YmE7Cj4gKwlzdHJ1Y3QgbHBmY19ub2RlbGlzdCAqbmRscDsKPiArCXN0cnVjdCBscGZjX2lvY2Jx ICplbHNpb2NiOwo+ICsJdTggKnBjbWQ7Cj4gKwlpbnQgcmV0Owo+ICsKPiArCW5kbHAgPSBscGZj X2ZpbmRub2RlX2RpZChwaGJhLT5wcG9ydCwgRmFicmljX0RJRCk7Cj4gKwlpZiAoIW5kbHAgfHwg bmRscC0+bmxwX3N0YXRlICE9IE5MUF9TVEVfVU5NQVBQRURfTk9ERSkKPiArCQlyZXR1cm4gLUVO WElPOwo+ICsKPiArCWVsc2lvY2IgPSBscGZjX3ByZXBfZWxzX2lvY2IodnBvcnQsIDEsIExQRkNf UUZQQV9TSVpFLCAyLCBuZGxwLAo+ICsJCQkJICAgICBuZGxwLT5ubHBfRElELCBFTFNfQ01EX1FG UEEpOwo+ICsJaWYgKCFlbHNpb2NiKQo+ICsJCXJldHVybiAtRU5PTUVNOwo+ICsKPiArCXBjbWQg PSAodTggKikoKChzdHJ1Y3QgbHBmY19kbWFidWYgKillbHNpb2NiLT5jb250ZXh0MiktPnZpcnQp Owo+ICsKPiArCSooKHUzMiAqKShwY21kKSkgPSBFTFNfQ01EX1FGUEE7Cj4gKwlwY21kICs9IDQ7 Cj4gKwo+ICsJZWxzaW9jYi0+aW9jYl9jbXBsID0gbHBmY19jbXBsX2Vsc19xZnBhOwo+ICsKPiAr CWVsc2lvY2ItPmNvbnRleHQxID0gbHBmY19ubHBfZ2V0KG5kbHApOwo+ICsJaWYgKCFlbHNpb2Ni LT5jb250ZXh0MSkgewo+ICsJCWxwZmNfZWxzX2ZyZWVfaW9jYih2cG9ydC0+cGhiYSwgZWxzaW9j Yik7Cj4gKwkJcmV0dXJuIC1FTlhJTzsKPiArCX0KPiArCj4gKwlyZXQgPSBscGZjX3NsaV9pc3N1 ZV9pb2NiKHBoYmEsIExQRkNfRUxTX1JJTkcsIGVsc2lvY2IsIDIpOwo+ICsJaWYgKHJldCAhPSBJ T0NCX1NVQ0NFU1MpIHsKPiArCQlscGZjX2Vsc19mcmVlX2lvY2IocGhiYSwgZWxzaW9jYik7Cj4g KwkJbHBmY19ubHBfcHV0KG5kbHApOwo+ICsJCXJldHVybiAtRUlPOwo+ICsJfQo+ICsJdnBvcnQt PnZtaWRfZmxhZyAmPSB+TFBGQ19WTUlEX1FPU19FTkFCTEVEOwo+ICsJcmV0dXJuIDA7Cj4gK30K PiArCj4gK2ludAo+ICtscGZjX3ZtaWRfdXZlbShzdHJ1Y3QgbHBmY192cG9ydCAqdnBvcnQsCj4g KwkgICAgICAgc3RydWN0IGxwZmNfdm1pZCAqdm1pZCwgYm9vbCBpbnN0YW50aWF0ZWQpCj4gK3sK PiArCXN0cnVjdCBscGZjX3ZlbV9pZF9kZXNjICp2ZW1faWRfZGVzYzsKPiArCXN0cnVjdCBscGZj X25vZGVsaXN0ICpuZGxwOwo+ICsJc3RydWN0IGxwZmNfaW9jYnEgKmVsc2lvY2I7Cj4gKwlzdHJ1 Y3QgaW5zdGFudGlhdGVkX3ZlX2Rlc2MgKmluc3RfZGVzYzsKPiArCXN0cnVjdCBscGZjX3ZtaWRf Y29udGV4dCAqdm1pZF9jb250ZXh0Owo+ICsJdTggKnBjbWQ7Cj4gKwl1MzIgKmxlbjsKPiArCWlu dCByZXQgPSAwOwo+ICsKPiArCW5kbHAgPSBscGZjX2ZpbmRub2RlX2RpZCh2cG9ydCwgRmFicmlj X0RJRCk7Cj4gKwlpZiAoIW5kbHAgfHwgbmRscC0+bmxwX3N0YXRlICE9IE5MUF9TVEVfVU5NQVBQ RURfTk9ERSkKPiArCQlyZXR1cm4gLUVOWElPOwo+ICsKPiArCXZtaWRfY29udGV4dCA9IGttYWxs b2Moc2l6ZW9mKCp2bWlkX2NvbnRleHQpLCBHRlBfS0VSTkVMKTsKPiArCWlmICghdm1pZF9jb250 ZXh0KQo+ICsJCXJldHVybiAtRU5PTUVNOwo+ICsJZWxzaW9jYiA9IGxwZmNfcHJlcF9lbHNfaW9j Yih2cG9ydCwgMSwgTFBGQ19VVkVNX1NJWkUsIDIsCj4gKwkJCQkgICAgIG5kbHAsIEZhYnJpY19E SUQsIEVMU19DTURfVVZFTSk7Cj4gKwlpZiAoIWVsc2lvY2IpCj4gKwkJZ290byBvdXQ7Cj4gKwo+ ICsJbHBmY19wcmludGZfdmxvZyh2cG9ydCwgS0VSTl9ERUJVRywgTE9HX0VMUywKPiArCQkJICIz NDI3IEhvc3Qgdm1pZCAlcyAlZFxuIiwKPiArCQkJIHZtaWQtPmhvc3Rfdm1pZCwgaW5zdGFudGlh dGVkKTsKPiArCXZtaWRfY29udGV4dC0+dm1wID0gdm1pZDsKPiArCXZtaWRfY29udGV4dC0+bmxw ID0gbmRscDsKPiArCXZtaWRfY29udGV4dC0+aW5zdGFudGlhdGVkID0gaW5zdGFudGlhdGVkOwo+ ICsJZWxzaW9jYi0+dm1pZF90YWcudm1pZF9jb250ZXh0ID0gdm1pZF9jb250ZXh0Owo+ICsJcGNt ZCA9ICh1OCAqKSgoKHN0cnVjdCBscGZjX2RtYWJ1ZiAqKWVsc2lvY2ItPmNvbnRleHQyKS0+dmly dCk7Cj4gKwo+ICsJaWYgKHV1aWRfaXNfbnVsbCgodXVpZF90ICopdnBvcnQtPmxwZmNfdm1pZF9o b3N0X3V1aWQpKQo+ICsJCW1lbWNweSh2cG9ydC0+bHBmY192bWlkX2hvc3RfdXVpZCwgdm1pZC0+ aG9zdF92bWlkLAo+ICsJCSAgICAgICBMUEZDX0NPTVBSRVNTX1ZNSURfU0laRSk7Cj4gKwo+ICsJ KigodTMyICopKHBjbWQpKSA9IEVMU19DTURfVVZFTTsKPiArCWxlbiA9ICh1MzIgKikocGNtZCAr IDQpOwo+ICsJKmxlbiA9IGNwdV90b19iZTMyKExQRkNfVVZFTV9TSVpFIC0gOCk7Cj4gKwo+ICsJ dmVtX2lkX2Rlc2MgPSAoc3RydWN0IGxwZmNfdmVtX2lkX2Rlc2MgKikocGNtZCArIDgpOwo+ICsJ dmVtX2lkX2Rlc2MtPnRhZyA9IGJlMzJfdG9fY3B1KFZFTV9JRF9ERVNDX1RBRyk7Cj4gKwl2ZW1f aWRfZGVzYy0+bGVuZ3RoID0gYmUzMl90b19jcHUoTFBGQ19VVkVNX1ZFTV9JRF9ERVNDX1NJWkUp Owo+ICsJbWVtY3B5KHZlbV9pZF9kZXNjLT52ZW1faWQsIHZwb3J0LT5scGZjX3ZtaWRfaG9zdF91 dWlkLAo+ICsJICAgICAgIExQRkNfQ09NUFJFU1NfVk1JRF9TSVpFKTsKPiArCj4gKwlpbnN0X2Rl c2MgPSAoc3RydWN0IGluc3RhbnRpYXRlZF92ZV9kZXNjICopKHBjbWQgKyAzMik7Cj4gKwlpbnN0 X2Rlc2MtPnRhZyA9IGJlMzJfdG9fY3B1KElOU1RBTlRJQVRFRF9WRV9ERVNDX1RBRyk7Cj4gKwlp bnN0X2Rlc2MtPmxlbmd0aCA9IGJlMzJfdG9fY3B1KExQRkNfVVZFTV9WRV9NQVBfREVTQ19TSVpF KTsKPiArCW1lbWNweShpbnN0X2Rlc2MtPmdsb2JhbF92ZW1faWQsIHZtaWQtPmhvc3Rfdm1pZCwK PiArCSAgICAgICBMUEZDX0NPTVBSRVNTX1ZNSURfU0laRSk7Cj4gKwo+ICsJYmZfc2V0KGxwZmNf aW5zdGFudGlhdGVkX25wb3J0X2lkLCBpbnN0X2Rlc2MsIHZwb3J0LT5mY19teURJRCk7Cj4gKwli Zl9zZXQobHBmY19pbnN0YW50aWF0ZWRfbG9jYWxfaWQsIGluc3RfZGVzYywKPiArCSAgICAgICB2 bWlkLT51bi5jc19jdGxfdm1pZCk7Cj4gKwlpZiAoaW5zdGFudGlhdGVkKSB7Cj4gKwkJaW5zdF9k ZXNjLT50YWcgPSBiZTMyX3RvX2NwdShJTlNUQU5USUFURURfVkVfREVTQ19UQUcpOwo+ICsJfSBl bHNlIHsKPiArCQlpbnN0X2Rlc2MtPnRhZyA9IGJlMzJfdG9fY3B1KERFSU5TVEFOVElBVEVEX1ZF X0RFU0NfVEFHKTsKPiArCQlscGZjX3ZtaWRfcHV0X2NzX2N0bCh2cG9ydCwgdm1pZC0+dW4uY3Nf Y3RsX3ZtaWQpOwo+ICsJfQo+ICsJaW5zdF9kZXNjLT53b3JkNiA9IGNwdV90b19iZTMyKGluc3Rf ZGVzYy0+d29yZDYpOwo+ICsKPiArCWVsc2lvY2ItPmlvY2JfY21wbCA9IGxwZmNfY21wbF9lbHNf dXZlbTsKPiArCj4gKwllbHNpb2NiLT5jb250ZXh0MSA9IGxwZmNfbmxwX2dldChuZGxwKTsKPiAr CWlmICghZWxzaW9jYi0+Y29udGV4dDEpIHsKPiArCQlscGZjX2Vsc19mcmVlX2lvY2IodnBvcnQt PnBoYmEsIGVsc2lvY2IpOwo+ICsJCWdvdG8gb3V0Owo+ICsJfQo+ICsKPiArCXJldCA9IGxwZmNf c2xpX2lzc3VlX2lvY2IodnBvcnQtPnBoYmEsIExQRkNfRUxTX1JJTkcsIGVsc2lvY2IsIDApOwo+ ICsJaWYgKHJldCAhPSBJT0NCX1NVQ0NFU1MpIHsKPiArCQlscGZjX2Vsc19mcmVlX2lvY2IodnBv cnQtPnBoYmEsIGVsc2lvY2IpOwo+ICsJCWxwZmNfbmxwX3B1dChuZGxwKTsKPiArCQlnb3RvIG91 dDsKPiArCX0KPiArCj4gKwlyZXR1cm4gMDsKPiArIG91dDoKPiArCWtmcmVlKHZtaWRfY29udGV4 dCk7Cj4gKwlyZXR1cm4gLUVJTzsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQKPiArbHBmY19jbXBs X2Vsc191dmVtKHN0cnVjdCBscGZjX2hiYSAqcGhiYSwgc3RydWN0IGxwZmNfaW9jYnEgKmljbWRp b2NiLAo+ICsJCSAgIHN0cnVjdCBscGZjX2lvY2JxICpyc3Bpb2NiKQo+ICt7Cj4gKwlzdHJ1Y3Qg bHBmY192cG9ydCAqdnBvcnQgPSBpY21kaW9jYi0+dnBvcnQ7Cj4gKwlzdHJ1Y3QgbHBmY19kbWFi dWYgKnByc3AgPSBOVUxMOwo+ICsJc3RydWN0IGxwZmNfdm1pZF9jb250ZXh0ICp2bWlkX2NvbnRl eHQgPQo+ICsJICAgIGljbWRpb2NiLT52bWlkX3RhZy52bWlkX2NvbnRleHQ7Cj4gKwlzdHJ1Y3Qg bHBmY19ub2RlbGlzdCAqbmRscCA9IGljbWRpb2NiLT5jb250ZXh0MTsKPiArCXU4ICpwY21kOwo+ ICsJdTMyICpkYXRhOwo+ICsJSU9DQl90ICppcnNwID0gJnJzcGlvY2ItPmlvY2I7Cj4gKwlzdHJ1 Y3QgbHBmY19kbWFidWYgKmRtYWJ1ZiA9IGljbWRpb2NiLT5jb250ZXh0MjsKPiArCXN0cnVjdCBs cGZjX3ZtaWQgKnZtaWQ7Cj4gKwo+ICsJdm1pZCA9IHZtaWRfY29udGV4dC0+dm1wOwo+ICsJaWYg KCFuZGxwIHx8IG5kbHAtPm5scF9zdGF0ZSAhPSBOTFBfU1RFX1VOTUFQUEVEX05PREUpCj4gKwkJ bmRscCA9IE5VTEw7Cj4gKwo+ICsJcHJzcCA9IGxpc3RfZ2V0X2ZpcnN0KCZkbWFidWYtPmxpc3Qs IHN0cnVjdCBscGZjX2RtYWJ1ZiwgbGlzdCk7Cj4gKwlpZiAoIXByc3ApCj4gKwkJZ290byBvdXQ7 Cj4gKwlwY21kID0gcHJzcC0+dmlydDsKPiArCWRhdGEgPSAodTMyICopcGNtZDsKPiArCWlmIChk YXRhWzBdID09IEVMU19DTURfTFNfUkpUKSB7Cj4gKwkJbHBmY19wcmludGZfdmxvZyh2cG9ydCwg S0VSTl9XQVJOSU5HLCBMT0dfU0xJLAo+ICsJCQkJICI0NTMyIFVWRU0gTFNfUkpUICV4ICV4XG4i LCBkYXRhWzBdLCBkYXRhWzFdKTsKPiArCQlnb3RvIG91dDsKPiArCX0KPiArCWlmIChpcnNwLT51 bHBTdGF0dXMpIHsKPiArCQlscGZjX3ByaW50Zl92bG9nKHZwb3J0LCBLRVJOX1dBUk5JTkcsIExP R19TTEksCj4gKwkJCQkgIjQ1MzMgVVZFTSBlcnJvciBzdGF0dXMgJXg6ICV4XG4iLAo+ICsJCQkJ IGlyc3AtPnVscFN0YXR1cywgaXJzcC0+dW4udWxwV29yZFs0XSk7Cj4gKwkJZ290byBvdXQ7Cj4g Kwl9Cj4gKwlzcGluX2xvY2soJnBoYmEtPmhiYWxvY2spOwo+ICsJLyogU2V0IElOIFVTRSBmbGFn ICovCj4gKwl2cG9ydC0+dm1pZF9mbGFnIHw9IExQRkNfVk1JRF9JTl9VU0U7Cj4gKwlwaGJhLT5w cG9ydC0+dm1pZF9mbGFnIHw9IExQRkNfVk1JRF9JTl9VU0U7Cj4gKwlzcGluX3VubG9jaygmcGhi YS0+aGJhbG9jayk7Cj4gKwo+ICsJaWYgKHZtaWRfY29udGV4dC0+aW5zdGFudGlhdGVkKSB7Cj4g KwkJd3JpdGVfbG9jaygmdnBvcnQtPnZtaWRfbG9jayk7Cj4gKwkJdm1pZC0+ZmxhZyB8PSBMUEZD X1ZNSURfUkVHSVNURVJFRDsKPiArCQl2bWlkLT5mbGFnICY9IH5MUEZDX1ZNSURfUkVRX1JFR0lT VEVSOwo+ICsJCXdyaXRlX3VubG9jaygmdnBvcnQtPnZtaWRfbG9jayk7Cj4gKwl9Cj4gKwo+ICsg b3V0Ogo+ICsJa2ZyZWUodm1pZF9jb250ZXh0KTsKPiArCWxwZmNfZWxzX2ZyZWVfaW9jYihwaGJh LCBpY21kaW9jYik7Cj4gKwlscGZjX25scF9wdXQobmRscCk7Cj4gK30KPiAKT3RoZXIgdGhhbiB0 aGF0OgoKUmV2aWV3ZWQtYnk6IEhhbm5lcyBSZWluZWNrZSA8aGFyZUBzdXNlLmRlPgoKQ2hlZXJz LAoKSGFubmVzCi0tIApEci4gSGFubmVzIFJlaW5lY2tlICAgICAgICAgICAgICAgIEtlcm5lbCBT dG9yYWdlIEFyY2hpdGVjdApoYXJlQHN1c2UuZGUgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICArNDkgOTExIDc0MDUzIDY4OApTVVNFIFNvZnR3YXJlIFNvbHV0aW9ucyBHbWJILCBNYXhmZWxk c3RyLiA1LCA5MDQwOSBOw7xybmJlcmcKSFJCIDM2ODA5IChBRyBOw7xybmJlcmcpLCBHZXNjaMOk ZnRzZsO8aHJlcjogRmVsaXggSW1lbmTDtnJmZmVyCgpfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwpMaW51eC1udm1lIG1haWxpbmcgbGlzdApMaW51eC1udm1l QGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9s aXN0aW5mby9saW51eC1udm1lCg==