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=-7.8 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, MIME_BASE64_TEXT,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 CCB2EC433E7 for ; Mon, 12 Oct 2020 18:40:11 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (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 E4FAC20838 for ; Mon, 12 Oct 2020 18:40:10 +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="UAsxMQTM" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org E4FAC20838 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=redhat.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Received: from localhost ([::1]:40766 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kS2jx-0006y3-Tl for qemu-devel@archiver.kernel.org; Mon, 12 Oct 2020 14:40:09 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:40008) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kS2ZR-000464-Jb for qemu-devel@nongnu.org; Mon, 12 Oct 2020 14:29:18 -0400 Received: from us-smtp-delivery-124.mimecast.com ([63.128.21.124]:58271) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1kS2ZO-0004ET-JV for qemu-devel@nongnu.org; Mon, 12 Oct 2020 14:29:17 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1602527353; 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=VwN9MV+8tgfLyxjukFZJX4jDiETeKMbiXJfPs1PtyOk=; b=UAsxMQTMVsOcWrO2QDplSSDzfP7fdTFSb3Sk43TiLhalHDYY6fDzl6KEF4ZhvVt6w5TemK Evw2lUzlkWn3J5aoXN2GoGgdgbx9rxZ3ECTWnfe6aQreNqst6kbsepfhY9tKxVBnc2+vs5 gEUy4lQoWvNIvkMDutuklzgFfbZIcYY= Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-36-dwJNnUQANcyUdR6UFqhe-A-1; Mon, 12 Oct 2020 14:29:10 -0400 X-MC-Unique: dwJNnUQANcyUdR6UFqhe-A-1 Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id C9FFD185A0C0; Mon, 12 Oct 2020 18:29:08 +0000 (UTC) Received: from localhost (ovpn-115-4.ams2.redhat.com [10.36.115.4]) by smtp.corp.redhat.com (Postfix) with ESMTP id 12CC65D9CD; Mon, 12 Oct 2020 18:29:07 +0000 (UTC) From: Stefan Hajnoczi To: Peter Maydell , qemu-devel@nongnu.org Subject: [PULL v2 18/30] block/export: convert vhost-user-blk server to block export API Date: Mon, 12 Oct 2020 19:27:48 +0100 Message-Id: <20201012182800.157697-19-stefanha@redhat.com> In-Reply-To: <20201012182800.157697-1-stefanha@redhat.com> References: <20201012182800.157697-1-stefanha@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.14 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=stefanha@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="US-ASCII" Received-SPF: pass client-ip=63.128.21.124; envelope-from=stefanha@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/10/12 02:58:41 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -3 X-Spam_score: -0.4 X-Spam_bar: / X-Spam_report: (-0.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, MIME_BASE64_TEXT=1.741, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Kevin Wolf , Laurent Vivier , Thomas Huth , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Eduardo Habkost , qemu-block@nongnu.org, Markus Armbruster , Coiby Xu , Max Reitz , Stefan Hajnoczi , Cleber Rosa , Paolo Bonzini , Fam Zheng , "Dr. David Alan Gilbert" Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" VXNlIHRoZSBuZXcgUUFQSSBibG9jayBleHBvcnRzIEFQSSBpbnN0ZWFkIG9mIGRlZmluaW5nIG91 ciBvd24gUU9NCm9iamVjdHMuCgpUaGlzIGlzIGEgbGFyZ2UgY2hhbmdlIGJlY2F1c2UgdGhlIGxp ZmVjeWNsZSBvZiBWdUJsb2NrRGV2IG5lZWRzIHRvCmZvbGxvdyBCbG9ja0V4cG9ydERyaXZlci4g UU9NIHByb3BlcnRpZXMgYXJlIHJlcGxhY2VkIGJ5IFFBUEkgb3B0aW9ucwpvYmplY3RzLgoKVnVC bG9ja0RldiBpcyByZW5hbWVkIFZ1QmxrRXhwb3J0IGFuZCBjb250YWlucyBhIEJsb2NrRXhwb3J0 IGZpZWxkLgpTZXZlcmFsIGZpZWxkcyBjYW4gYmUgZHJvcHBlZCBzaW5jZSBCbG9ja0V4cG9ydCBh bHJlYWR5IGhhcyBlcXVpdmFsZW50cy4KClRoZSBmaWxlIG5hbWVzIGFuZCBtZXNvbiBidWlsZCBp bnRlZ3JhdGlvbiB3aWxsIGJlIGFkanVzdGVkIGluIGEgZnV0dXJlCnBhdGNoLiBsaWJ2aG9zdC11 c2VyIHNob3VsZCBwcm9iYWJseSBiZSBidWlsdCBhcyBhIHN0YXRpYyBsaWJyYXJ5IHRoYXQKaXMg bGlua2VkIGludG8gUUVNVSBpbnN0ZWFkIG9mIGFzIGEgLmMgZmlsZSB0aGF0IHJlc3VsdHMgaW4g ZHVwbGljYXRlCmNvbXBpbGF0aW9uLgoKVGhlIG5ldyBjb21tYW5kLWxpbmUgc3ludGF4IGlzOgoK ICAkIHFlbXUtc3RvcmFnZS1kYWVtb24gXAogICAgICAtLWJsb2NrZGV2IGZpbGUsbm9kZS1uYW1l PWRyaXZlMCxmaWxlbmFtZT10ZXN0LmltZyBcCiAgICAgIC0tZXhwb3J0IHZob3N0LXVzZXItYmxr LG5vZGUtbmFtZT1kcml2ZTAsaWQ9ZXhwb3J0MCx1bml4LXNvY2tldD0vdG1wL3Zob3N0LXVzZXIt YmxrLnNvY2sKCk5vdGUgdGhhdCB1bml4LXNvY2tldCBpcyBvcHRpb25hbCBiZWNhdXNlIHdlIG1h eSB3aXNoIHRvIGFjY2VwdCBjaGFyZGV2cwp0b28gaW4gdGhlIGZ1dHVyZS4KCk1hcmt1cyBub3Rl ZCB0aGF0IHN1cHBvcnRlZCBhZGRyZXNzIGZhbWlsaWVzIGFyZSBub3QgZXhwbGljaXQgaW4gdGhl ClFBUEkgc2NoZW1hLiBJdCBpcyB1bmxpa2VseSB0aGF0IHN1cHBvcnQgZm9yIG1vcmUgYWRkcmVz cyBmYW1pbGllcyB3aWxsCmJlIGFkZGVkIHNpbmNlIGZpbGUgZGVzY3JpcHRvciBwYXNzaW5nIGlz IHJlcXVpcmVkIGFuZCBmZXcgYWRkcmVzcwpmYW1pbGllcyBzdXBwb3J0IGl0LiBJZiBhIG5ldyBh ZGRyZXNzIGZhbWlseSBuZWVkcyB0byBiZSBhZGRlZCwgdGhlbiB0aGUKUUFQSSAnZmVhdHVyZXMn IHN5bnRheCBjYW4gYmUgdXNlZCB0byBhZHZlcnRpemUgdGhlbS4KClNpZ25lZC1vZmYtYnk6IFN0 ZWZhbiBIYWpub2N6aSA8c3RlZmFuaGFAcmVkaGF0LmNvbT4KQWNrZWQtYnk6IE1hcmt1cyBBcm1i cnVzdGVyIDxhcm1icnVAcmVkaGF0LmNvbT4KTWVzc2FnZS1pZDogMjAyMDA5MjQxNTE1NDkuOTEz NzM3LTEyLXN0ZWZhbmhhQHJlZGhhdC5jb20KU2lnbmVkLW9mZi1ieTogU3RlZmFuIEhham5vY3pp IDxzdGVmYW5oYUByZWRoYXQuY29tPgotLS0KIHFhcGkvYmxvY2stZXhwb3J0Lmpzb24gICAgICAg ICAgICAgICB8ICAyMSArLQogYmxvY2svZXhwb3J0L3Zob3N0LXVzZXItYmxrLXNlcnZlci5oIHwg IDIzICstCiBibG9jay9leHBvcnQvZXhwb3J0LmMgICAgICAgICAgICAgICAgfCAgIDYgKwogYmxv Y2svZXhwb3J0L3Zob3N0LXVzZXItYmxrLXNlcnZlci5jIHwgNDUyICsrKysrKystLS0tLS0tLS0t LS0tLS0tLS0tLQogdGVzdHMvcXRlc3Qvdmhvc3QtdXNlci1ibGstdGVzdC5jICAgIHwgICAyICst CiB1dGlsL3Zob3N0LXVzZXItc2VydmVyLmMgICAgICAgICAgICAgfCAgMTAgKy0KIGJsb2NrL2V4 cG9ydC9tZXNvbi5idWlsZCAgICAgICAgICAgICB8ICAgMSArCiBibG9jay9tZXNvbi5idWlsZCAg ICAgICAgICAgICAgICAgICAgfCAgIDEgLQogOCBmaWxlcyBjaGFuZ2VkLCAxNTcgaW5zZXJ0aW9u cygrKSwgMzU5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3FhcGkvYmxvY2stZXhwb3J0Lmpz b24gYi9xYXBpL2Jsb2NrLWV4cG9ydC5qc29uCmluZGV4IDY1ODA0ODM0ZDkuLmE3OTNlMzRhZjkg MTAwNjQ0Ci0tLSBhL3FhcGkvYmxvY2stZXhwb3J0Lmpzb24KKysrIGIvcWFwaS9ibG9jay1leHBv cnQuanNvbgpAQCAtODQsNiArODQsMjEgQEAKICAgJ2RhdGEnOiB7ICcqbmFtZSc6ICdzdHInLCAn KmRlc2NyaXB0aW9uJzogJ3N0cicsCiAgICAgICAgICAgICAnKmJpdG1hcCc6ICdzdHInIH0gfQog CisjIworIyBAQmxvY2tFeHBvcnRPcHRpb25zVmhvc3RVc2VyQmxrOgorIworIyBBIHZob3N0LXVz ZXItYmxrIGJsb2NrIGV4cG9ydC4KKyMKKyMgQGFkZHI6IFRoZSB2aG9zdC11c2VyIHNvY2tldCBv biB3aGljaCB0byBsaXN0ZW4uIEJvdGggJ3VuaXgnIGFuZCAnZmQnCisjICAgICAgICBTb2NrZXRB ZGRyZXNzIHR5cGVzIGFyZSBzdXBwb3J0ZWQuIFBhc3NlZCBmZHMgbXVzdCBiZSBVTklYIGRvbWFp bgorIyAgICAgICAgc29ja2V0cy4KKyMgQGxvZ2ljYWwtYmxvY2stc2l6ZTogTG9naWNhbCBibG9j ayBzaXplIGluIGJ5dGVzLiBEZWZhdWx0cyB0byA1MTIgYnl0ZXMuCisjCisjIFNpbmNlOiA1LjIK KyMjCit7ICdzdHJ1Y3QnOiAnQmxvY2tFeHBvcnRPcHRpb25zVmhvc3RVc2VyQmxrJywKKyAgJ2Rh dGEnOiB7ICdhZGRyJzogJ1NvY2tldEFkZHJlc3MnLCAnKmxvZ2ljYWwtYmxvY2stc2l6ZSc6ICdz aXplJyB9IH0KKwogIyMKICMgQE5iZFNlcnZlckFkZE9wdGlvbnM6CiAjCkBAIC0xODAsMTEgKzE5 NSwxMiBAQAogIyBBbiBlbnVtZXJhdGlvbiBvZiBibG9jayBleHBvcnQgdHlwZXMKICMKICMgQG5i ZDogTkJEIGV4cG9ydAorIyBAdmhvc3QtdXNlci1ibGs6IHZob3N0LXVzZXItYmxrIGV4cG9ydCAo c2luY2UgNS4yKQogIwogIyBTaW5jZTogNC4yCiAjIwogeyAnZW51bSc6ICdCbG9ja0V4cG9ydFR5 cGUnLAotICAnZGF0YSc6IFsgJ25iZCcgXSB9CisgICdkYXRhJzogWyAnbmJkJywgJ3Zob3N0LXVz ZXItYmxrJyBdIH0KIAogIyMKICMgQEJsb2NrRXhwb3J0T3B0aW9uczoKQEAgLTIxMyw3ICsyMjks OCBAQAogICAgICAgICAgICAgJyp3cml0ZXRocm91Z2gnOiAnYm9vbCcgfSwKICAgJ2Rpc2NyaW1p bmF0b3InOiAndHlwZScsCiAgICdkYXRhJzogewotICAgICAgJ25iZCc6ICdCbG9ja0V4cG9ydE9w dGlvbnNOYmQnCisgICAgICAnbmJkJzogJ0Jsb2NrRXhwb3J0T3B0aW9uc05iZCcsCisgICAgICAn dmhvc3QtdXNlci1ibGsnOiAnQmxvY2tFeHBvcnRPcHRpb25zVmhvc3RVc2VyQmxrJwogICAgfSB9 CiAKICMjCmRpZmYgLS1naXQgYS9ibG9jay9leHBvcnQvdmhvc3QtdXNlci1ibGstc2VydmVyLmgg Yi9ibG9jay9leHBvcnQvdmhvc3QtdXNlci1ibGstc2VydmVyLmgKaW5kZXggZjA2ZjM3YzRjOC4u ZmNmNDZmYzhhNSAxMDA2NDQKLS0tIGEvYmxvY2svZXhwb3J0L3Zob3N0LXVzZXItYmxrLXNlcnZl ci5oCisrKyBiL2Jsb2NrL2V4cG9ydC92aG9zdC11c2VyLWJsay1zZXJ2ZXIuaApAQCAtMTAsMjcg KzEwLDEwIEBACiAKICNpZm5kZWYgVkhPU1RfVVNFUl9CTEtfU0VSVkVSX0gKICNkZWZpbmUgVkhP U1RfVVNFUl9CTEtfU0VSVkVSX0gKLSNpbmNsdWRlICJ1dGlsL3Zob3N0LXVzZXItc2VydmVyLmgi CiAKLXR5cGVkZWYgc3RydWN0IFZ1QmxvY2tEZXYgVnVCbG9ja0RldjsKLSNkZWZpbmUgVFlQRV9W SE9TVF9VU0VSX0JMS19TRVJWRVIgInZob3N0LXVzZXItYmxrLXNlcnZlciIKLSNkZWZpbmUgVkhP U1RfVVNFUl9CTEtfU0VSVkVSKG9iaikgXAotICAgT0JKRUNUX0NIRUNLKFZ1QmxvY2tEZXYsIG9i aiwgVFlQRV9WSE9TVF9VU0VSX0JMS19TRVJWRVIpCisjaW5jbHVkZSAiYmxvY2svZXhwb3J0Lmgi CiAKLS8qIHZob3N0IHVzZXIgYmxvY2sgZGV2aWNlICovCi1zdHJ1Y3QgVnVCbG9ja0RldiB7Ci0g ICAgT2JqZWN0IHBhcmVudF9vYmo7Ci0gICAgY2hhciAqbm9kZV9uYW1lOwotICAgIFNvY2tldEFk ZHJlc3MgKmFkZHI7Ci0gICAgQWlvQ29udGV4dCAqY3R4OwotICAgIFZ1U2VydmVyIHZ1X3NlcnZl cjsKLSAgICBib29sIHJ1bm5pbmc7Ci0gICAgdWludDMyX3QgYmxrX3NpemU7Ci0gICAgQmxvY2tC YWNrZW5kICpiYWNrZW5kOwotICAgIFFJT0NoYW5uZWxTb2NrZXQgKnNpb2M7Ci0gICAgUVRBSUxR X0VOVFJZKFZ1QmxvY2tEZXYpIG5leHQ7Ci0gICAgc3RydWN0IHZpcnRpb19ibGtfY29uZmlnIGJs a2NmZzsKLSAgICBib29sIHdyaXRhYmxlOwotfTsKKy8qIEZvciBibG9jay9leHBvcnQvZXhwb3J0 LmMgKi8KK2V4dGVybiBjb25zdCBCbG9ja0V4cG9ydERyaXZlciBibGtfZXhwX3Zob3N0X3VzZXJf YmxrOwogCiAjZW5kaWYgLyogVkhPU1RfVVNFUl9CTEtfU0VSVkVSX0ggKi8KZGlmZiAtLWdpdCBh L2Jsb2NrL2V4cG9ydC9leHBvcnQuYyBiL2Jsb2NrL2V4cG9ydC9leHBvcnQuYwppbmRleCBmMmMw MGQxM2JmLi5iZDdjYWMyNDFmIDEwMDY0NAotLS0gYS9ibG9jay9leHBvcnQvZXhwb3J0LmMKKysr IGIvYmxvY2svZXhwb3J0L2V4cG9ydC5jCkBAIC0xNyw2ICsxNyw5IEBACiAjaW5jbHVkZSAic3lz ZW11L2Jsb2NrLWJhY2tlbmQuaCIKICNpbmNsdWRlICJibG9jay9leHBvcnQuaCIKICNpbmNsdWRl ICJibG9jay9uYmQuaCIKKyNpZiBDT05GSUdfTElOVVgKKyNpbmNsdWRlICJibG9jay9leHBvcnQv dmhvc3QtdXNlci1ibGstc2VydmVyLmgiCisjZW5kaWYKICNpbmNsdWRlICJxYXBpL2Vycm9yLmgi CiAjaW5jbHVkZSAicWFwaS9xYXBpLWNvbW1hbmRzLWJsb2NrLWV4cG9ydC5oIgogI2luY2x1ZGUg InFhcGkvcWFwaS1ldmVudHMtYmxvY2stZXhwb3J0LmgiCkBAIC0yNCw2ICsyNyw5IEBACiAKIHN0 YXRpYyBjb25zdCBCbG9ja0V4cG9ydERyaXZlciAqYmxrX2V4cF9kcml2ZXJzW10gPSB7CiAgICAg JmJsa19leHBfbmJkLAorI2lmIENPTkZJR19MSU5VWAorICAgICZibGtfZXhwX3Zob3N0X3VzZXJf YmxrLAorI2VuZGlmCiB9OwogCiAvKiBPbmx5IGFjY2Vzc2VkIGZyb20gdGhlIG1haW4gdGhyZWFk ICovCmRpZmYgLS1naXQgYS9ibG9jay9leHBvcnQvdmhvc3QtdXNlci1ibGstc2VydmVyLmMgYi9i bG9jay9leHBvcnQvdmhvc3QtdXNlci1ibGstc2VydmVyLmMKaW5kZXggNDRkM2M0NWZhMi4uOTFm YzcwNDBiMiAxMDA2NDQKLS0tIGEvYmxvY2svZXhwb3J0L3Zob3N0LXVzZXItYmxrLXNlcnZlci5j CisrKyBiL2Jsb2NrL2V4cG9ydC92aG9zdC11c2VyLWJsay1zZXJ2ZXIuYwpAQCAtMTEsNiArMTEs OSBAQAogICovCiAjaW5jbHVkZSAicWVtdS9vc2RlcC5oIgogI2luY2x1ZGUgImJsb2NrL2Jsb2Nr LmgiCisjaW5jbHVkZSAiY29udHJpYi9saWJ2aG9zdC11c2VyL2xpYnZob3N0LXVzZXIuaCIKKyNp bmNsdWRlICJzdGFuZGFyZC1oZWFkZXJzL2xpbnV4L3ZpcnRpb19ibGsuaCIKKyNpbmNsdWRlICJ1 dGlsL3Zob3N0LXVzZXItc2VydmVyLmgiCiAjaW5jbHVkZSAidmhvc3QtdXNlci1ibGstc2VydmVy LmgiCiAjaW5jbHVkZSAicWFwaS9lcnJvci5oIgogI2luY2x1ZGUgInFvbS9vYmplY3RfaW50ZXJm YWNlcy5oIgpAQCAtMjQsNyArMjcsNyBAQCBzdHJ1Y3QgdmlydGlvX2Jsa19pbmhkciB7CiAgICAg dW5zaWduZWQgY2hhciBzdGF0dXM7CiB9OwogCi10eXBlZGVmIHN0cnVjdCBWdUJsb2NrUmVxIHsK K3R5cGVkZWYgc3RydWN0IFZ1QmxrUmVxIHsKICAgICBWdVZpcnRxRWxlbWVudCBlbGVtOwogICAg IGludDY0X3Qgc2VjdG9yX251bTsKICAgICBzaXplX3Qgc2l6ZTsKQEAgLTMyLDkgKzM1LDE5IEBA IHR5cGVkZWYgc3RydWN0IFZ1QmxvY2tSZXEgewogICAgIHN0cnVjdCB2aXJ0aW9fYmxrX291dGhk ciBvdXQ7CiAgICAgVnVTZXJ2ZXIgKnNlcnZlcjsKICAgICBzdHJ1Y3QgVnVWaXJ0cSAqdnE7Ci19 IFZ1QmxvY2tSZXE7Cit9IFZ1QmxrUmVxOwogCi1zdGF0aWMgdm9pZCB2dV9ibG9ja19yZXFfY29t cGxldGUoVnVCbG9ja1JlcSAqcmVxKQorLyogdmhvc3QgdXNlciBibG9jayBkZXZpY2UgKi8KK3R5 cGVkZWYgc3RydWN0IHsKKyAgICBCbG9ja0V4cG9ydCBleHBvcnQ7CisgICAgVnVTZXJ2ZXIgdnVf c2VydmVyOworICAgIHVpbnQzMl90IGJsa19zaXplOworICAgIFFJT0NoYW5uZWxTb2NrZXQgKnNp b2M7CisgICAgc3RydWN0IHZpcnRpb19ibGtfY29uZmlnIGJsa2NmZzsKKyAgICBib29sIHdyaXRh YmxlOworfSBWdUJsa0V4cG9ydDsKKworc3RhdGljIHZvaWQgdnVfYmxrX3JlcV9jb21wbGV0ZShW dUJsa1JlcSAqcmVxKQogewogICAgIFZ1RGV2ICp2dV9kZXYgPSAmcmVxLT5zZXJ2ZXItPnZ1X2Rl djsKIApAQCAtNDUsMTQgKzU4LDkgQEAgc3RhdGljIHZvaWQgdnVfYmxvY2tfcmVxX2NvbXBsZXRl KFZ1QmxvY2tSZXEgKnJlcSkKICAgICBmcmVlKHJlcSk7CiB9CiAKLXN0YXRpYyBWdUJsb2NrRGV2 ICpnZXRfdnVfYmxvY2tfZGV2aWNlX2J5X3NlcnZlcihWdVNlcnZlciAqc2VydmVyKQotewotICAg IHJldHVybiBjb250YWluZXJfb2Yoc2VydmVyLCBWdUJsb2NrRGV2LCB2dV9zZXJ2ZXIpOwotfQot CiBzdGF0aWMgaW50IGNvcm91dGluZV9mbgotdnVfYmxvY2tfZGlzY2FyZF93cml0ZV96ZXJvZXMo VnVCbG9ja1JlcSAqcmVxLCBzdHJ1Y3QgaW92ZWMgKmlvdiwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHVpbnQzMl90IGlvdmNudCwgdWludDMyX3QgdHlwZSkKK3Z1X2Jsa19kaXNjYXJk X3dyaXRlX3plcm9lcyhCbG9ja0JhY2tlbmQgKmJsaywgc3RydWN0IGlvdmVjICppb3YsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgaW92Y250LCB1aW50MzJfdCB0eXBlKQog ewogICAgIHN0cnVjdCB2aXJ0aW9fYmxrX2Rpc2NhcmRfd3JpdGVfemVyb2VzIGRlc2M7CiAgICAg c3NpemVfdCBzaXplID0gaW92X3RvX2J1Zihpb3YsIGlvdmNudCwgMCwgJmRlc2MsIHNpemVvZihk ZXNjKSk7CkBAIC02MSwxNiArNjksMTQgQEAgdnVfYmxvY2tfZGlzY2FyZF93cml0ZV96ZXJvZXMo VnVCbG9ja1JlcSAqcmVxLCBzdHJ1Y3QgaW92ZWMgKmlvdiwKICAgICAgICAgcmV0dXJuIC1FSU5W QUw7CiAgICAgfQogCi0gICAgVnVCbG9ja0RldiAqdmRldl9ibGsgPSBnZXRfdnVfYmxvY2tfZGV2 aWNlX2J5X3NlcnZlcihyZXEtPnNlcnZlcik7CiAgICAgdWludDY0X3QgcmFuZ2VbMl0gPSB7IGxl NjRfdG9fY3B1KGRlc2Muc2VjdG9yKSA8PCA5LAogICAgICAgICAgICAgICAgICAgICAgICAgICBs ZTMyX3RvX2NwdShkZXNjLm51bV9zZWN0b3JzKSA8PCA5IH07CiAgICAgaWYgKHR5cGUgPT0gVklS VElPX0JMS19UX0RJU0NBUkQpIHsKLSAgICAgICAgaWYgKGJsa19jb19wZGlzY2FyZCh2ZGV2X2Js ay0+YmFja2VuZCwgcmFuZ2VbMF0sIHJhbmdlWzFdKSA9PSAwKSB7CisgICAgICAgIGlmIChibGtf Y29fcGRpc2NhcmQoYmxrLCByYW5nZVswXSwgcmFuZ2VbMV0pID09IDApIHsKICAgICAgICAgICAg IHJldHVybiAwOwogICAgICAgICB9CiAgICAgfSBlbHNlIGlmICh0eXBlID09IFZJUlRJT19CTEtf VF9XUklURV9aRVJPRVMpIHsKLSAgICAgICAgaWYgKGJsa19jb19wd3JpdGVfemVyb2VzKHZkZXZf YmxrLT5iYWNrZW5kLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFuZ2VbMF0s IHJhbmdlWzFdLCAwKSA9PSAwKSB7CisgICAgICAgIGlmIChibGtfY29fcHdyaXRlX3plcm9lcyhi bGssIHJhbmdlWzBdLCByYW5nZVsxXSwgMCkgPT0gMCkgewogICAgICAgICAgICAgcmV0dXJuIDA7 CiAgICAgICAgIH0KICAgICB9CkBAIC03OCwyMiArODQsMTUgQEAgdnVfYmxvY2tfZGlzY2FyZF93 cml0ZV96ZXJvZXMoVnVCbG9ja1JlcSAqcmVxLCBzdHJ1Y3QgaW92ZWMgKmlvdiwKICAgICByZXR1 cm4gLUVJTlZBTDsKIH0KIAotc3RhdGljIGludCBjb3JvdXRpbmVfZm4gdnVfYmxvY2tfZmx1c2go VnVCbG9ja1JlcSAqcmVxKQorc3RhdGljIHZvaWQgY29yb3V0aW5lX2ZuIHZ1X2Jsa192aXJ0aW9f cHJvY2Vzc19yZXEodm9pZCAqb3BhcXVlKQogewotICAgIFZ1QmxvY2tEZXYgKnZkZXZfYmxrID0g Z2V0X3Z1X2Jsb2NrX2RldmljZV9ieV9zZXJ2ZXIocmVxLT5zZXJ2ZXIpOwotICAgIEJsb2NrQmFj a2VuZCAqYmFja2VuZCA9IHZkZXZfYmxrLT5iYWNrZW5kOwotICAgIHJldHVybiBibGtfY29fZmx1 c2goYmFja2VuZCk7Ci19Ci0KLXN0YXRpYyB2b2lkIGNvcm91dGluZV9mbiB2dV9ibG9ja192aXJ0 aW9fcHJvY2Vzc19yZXEodm9pZCAqb3BhcXVlKQotewotICAgIFZ1QmxvY2tSZXEgKnJlcSA9IG9w YXF1ZTsKKyAgICBWdUJsa1JlcSAqcmVxID0gb3BhcXVlOwogICAgIFZ1U2VydmVyICpzZXJ2ZXIg PSByZXEtPnNlcnZlcjsKICAgICBWdVZpcnRxRWxlbWVudCAqZWxlbSA9ICZyZXEtPmVsZW07CiAg ICAgdWludDMyX3QgdHlwZTsKIAotICAgIFZ1QmxvY2tEZXYgKnZkZXZfYmxrID0gZ2V0X3Z1X2Js b2NrX2RldmljZV9ieV9zZXJ2ZXIoc2VydmVyKTsKLSAgICBCbG9ja0JhY2tlbmQgKmJhY2tlbmQg PSB2ZGV2X2Jsay0+YmFja2VuZDsKKyAgICBWdUJsa0V4cG9ydCAqdmV4cCA9IGNvbnRhaW5lcl9v ZihzZXJ2ZXIsIFZ1QmxrRXhwb3J0LCB2dV9zZXJ2ZXIpOworICAgIEJsb2NrQmFja2VuZCAqYmxr ID0gdmV4cC0+ZXhwb3J0LmJsazsKIAogICAgIHN0cnVjdCBpb3ZlYyAqaW5faW92ID0gZWxlbS0+ aW5fc2c7CiAgICAgc3RydWN0IGlvdmVjICpvdXRfaW92ID0gZWxlbS0+b3V0X3NnOwpAQCAtMTMz LDE2ICsxMzIsMTkgQEAgc3RhdGljIHZvaWQgY29yb3V0aW5lX2ZuIHZ1X2Jsb2NrX3ZpcnRpb19w cm9jZXNzX3JlcSh2b2lkICpvcGFxdWUpCiAgICAgICAgIGJvb2wgaXNfd3JpdGUgPSB0eXBlICYg VklSVElPX0JMS19UX09VVDsKICAgICAgICAgcmVxLT5zZWN0b3JfbnVtID0gbGU2NF90b19jcHUo cmVxLT5vdXQuc2VjdG9yKTsKIAotICAgICAgICBpbnQ2NF90IG9mZnNldCA9IHJlcS0+c2VjdG9y X251bSAqIHZkZXZfYmxrLT5ibGtfc2l6ZTsKKyAgICAgICAgaWYgKGlzX3dyaXRlICYmICF2ZXhw LT53cml0YWJsZSkgeworICAgICAgICAgICAgcmVxLT5pbi0+c3RhdHVzID0gVklSVElPX0JMS19T X0lPRVJSOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBpbnQ2NF90 IG9mZnNldCA9IHJlcS0+c2VjdG9yX251bSAqIHZleHAtPmJsa19zaXplOwogICAgICAgICBRRU1V SU9WZWN0b3IgcWlvdjsKICAgICAgICAgaWYgKGlzX3dyaXRlKSB7CiAgICAgICAgICAgICBxZW11 X2lvdmVjX2luaXRfZXh0ZXJuYWwoJnFpb3YsIG91dF9pb3YsIG91dF9udW0pOwotICAgICAgICAg ICAgcmV0ID0gYmxrX2NvX3B3cml0ZXYoYmFja2VuZCwgb2Zmc2V0LCBxaW92LnNpemUsCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcWlvdiwgMCk7CisgICAgICAgICAgICByZXQg PSBibGtfY29fcHdyaXRldihibGssIG9mZnNldCwgcWlvdi5zaXplLCAmcWlvdiwgMCk7CiAgICAg ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBxZW11X2lvdmVjX2luaXRfZXh0ZXJuYWwoJnFpb3Ys IGluX2lvdiwgaW5fbnVtKTsKLSAgICAgICAgICAgIHJldCA9IGJsa19jb19wcmVhZHYoYmFja2Vu ZCwgb2Zmc2V0LCBxaW92LnNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZx aW92LCAwKTsKKyAgICAgICAgICAgIHJldCA9IGJsa19jb19wcmVhZHYoYmxrLCBvZmZzZXQsIHFp b3Yuc2l6ZSwgJnFpb3YsIDApOwogICAgICAgICB9CiAgICAgICAgIGlmIChyZXQgPj0gMCkgewog ICAgICAgICAgICAgcmVxLT5pbi0+c3RhdHVzID0gVklSVElPX0JMS19TX09LOwpAQCAtMTUyLDcg KzE1NCw3IEBAIHN0YXRpYyB2b2lkIGNvcm91dGluZV9mbiB2dV9ibG9ja192aXJ0aW9fcHJvY2Vz c19yZXEodm9pZCAqb3BhcXVlKQogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBWSVJU SU9fQkxLX1RfRkxVU0g6Ci0gICAgICAgIGlmICh2dV9ibG9ja19mbHVzaChyZXEpID09IDApIHsK KyAgICAgICAgaWYgKGJsa19jb19mbHVzaChibGspID09IDApIHsKICAgICAgICAgICAgIHJlcS0+ aW4tPnN0YXR1cyA9IFZJUlRJT19CTEtfU19PSzsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg ICAgIHJlcS0+aW4tPnN0YXR1cyA9IFZJUlRJT19CTEtfU19JT0VSUjsKQEAgLTE2OSw4ICsxNzEs MTMgQEAgc3RhdGljIHZvaWQgY29yb3V0aW5lX2ZuIHZ1X2Jsb2NrX3ZpcnRpb19wcm9jZXNzX3Jl cSh2b2lkICpvcGFxdWUpCiAgICAgY2FzZSBWSVJUSU9fQkxLX1RfRElTQ0FSRDoKICAgICBjYXNl IFZJUlRJT19CTEtfVF9XUklURV9aRVJPRVM6IHsKICAgICAgICAgaW50IHJjOwotICAgICAgICBy YyA9IHZ1X2Jsb2NrX2Rpc2NhcmRfd3JpdGVfemVyb2VzKHJlcSwgJmVsZW0tPm91dF9zZ1sxXSwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRfbnVtLCB0eXBl KTsKKworICAgICAgICBpZiAoIXZleHAtPndyaXRhYmxlKSB7CisgICAgICAgICAgICByZXEtPmlu LT5zdGF0dXMgPSBWSVJUSU9fQkxLX1NfSU9FUlI7CisgICAgICAgICAgICBicmVhazsKKyAgICAg ICAgfQorCisgICAgICAgIHJjID0gdnVfYmxrX2Rpc2NhcmRfd3JpdGVfemVyb2VzKGJsaywgJmVs ZW0tPm91dF9zZ1sxXSwgb3V0X251bSwgdHlwZSk7CiAgICAgICAgIGlmIChyYyA9PSAwKSB7CiAg ICAgICAgICAgICByZXEtPmluLT5zdGF0dXMgPSBWSVJUSU9fQkxLX1NfT0s7CiAgICAgICAgIH0g ZWxzZSB7CkBAIC0xODMsMjIgKzE5MCwyMiBAQCBzdGF0aWMgdm9pZCBjb3JvdXRpbmVfZm4gdnVf YmxvY2tfdmlydGlvX3Byb2Nlc3NfcmVxKHZvaWQgKm9wYXF1ZSkKICAgICAgICAgYnJlYWs7CiAg ICAgfQogCi0gICAgdnVfYmxvY2tfcmVxX2NvbXBsZXRlKHJlcSk7CisgICAgdnVfYmxrX3JlcV9j b21wbGV0ZShyZXEpOwogICAgIHJldHVybjsKIAogZXJyOgotICAgIGZyZWUoZWxlbSk7CisgICAg ZnJlZShyZXEpOwogfQogCi1zdGF0aWMgdm9pZCB2dV9ibG9ja19wcm9jZXNzX3ZxKFZ1RGV2ICp2 dV9kZXYsIGludCBpZHgpCitzdGF0aWMgdm9pZCB2dV9ibGtfcHJvY2Vzc192cShWdURldiAqdnVf ZGV2LCBpbnQgaWR4KQogewogICAgIFZ1U2VydmVyICpzZXJ2ZXIgPSBjb250YWluZXJfb2YodnVf ZGV2LCBWdVNlcnZlciwgdnVfZGV2KTsKICAgICBWdVZpcnRxICp2cSA9IHZ1X2dldF9xdWV1ZSh2 dV9kZXYsIGlkeCk7CiAKICAgICB3aGlsZSAoMSkgewotICAgICAgICBWdUJsb2NrUmVxICpyZXE7 CisgICAgICAgIFZ1QmxrUmVxICpyZXE7CiAKLSAgICAgICAgcmVxID0gdnVfcXVldWVfcG9wKHZ1 X2RldiwgdnEsIHNpemVvZihWdUJsb2NrUmVxKSk7CisgICAgICAgIHJlcSA9IHZ1X3F1ZXVlX3Bv cCh2dV9kZXYsIHZxLCBzaXplb2YoVnVCbGtSZXEpKTsKICAgICAgICAgaWYgKCFyZXEpIHsKICAg ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0yMDcsMjYgKzIxNCwyNiBAQCBzdGF0aWMg dm9pZCB2dV9ibG9ja19wcm9jZXNzX3ZxKFZ1RGV2ICp2dV9kZXYsIGludCBpZHgpCiAgICAgICAg IHJlcS0+dnEgPSB2cTsKIAogICAgICAgICBDb3JvdXRpbmUgKmNvID0KLSAgICAgICAgICAgIHFl bXVfY29yb3V0aW5lX2NyZWF0ZSh2dV9ibG9ja192aXJ0aW9fcHJvY2Vzc19yZXEsIHJlcSk7Cisg ICAgICAgICAgICBxZW11X2Nvcm91dGluZV9jcmVhdGUodnVfYmxrX3ZpcnRpb19wcm9jZXNzX3Jl cSwgcmVxKTsKICAgICAgICAgcWVtdV9jb3JvdXRpbmVfZW50ZXIoY28pOwogICAgIH0KIH0KIAot c3RhdGljIHZvaWQgdnVfYmxvY2tfcXVldWVfc2V0X3N0YXJ0ZWQoVnVEZXYgKnZ1X2RldiwgaW50 IGlkeCwgYm9vbCBzdGFydGVkKQorc3RhdGljIHZvaWQgdnVfYmxrX3F1ZXVlX3NldF9zdGFydGVk KFZ1RGV2ICp2dV9kZXYsIGludCBpZHgsIGJvb2wgc3RhcnRlZCkKIHsKICAgICBWdVZpcnRxICp2 cTsKIAogICAgIGFzc2VydCh2dV9kZXYpOwogCiAgICAgdnEgPSB2dV9nZXRfcXVldWUodnVfZGV2 LCBpZHgpOwotICAgIHZ1X3NldF9xdWV1ZV9oYW5kbGVyKHZ1X2RldiwgdnEsIHN0YXJ0ZWQgPyB2 dV9ibG9ja19wcm9jZXNzX3ZxIDogTlVMTCk7CisgICAgdnVfc2V0X3F1ZXVlX2hhbmRsZXIodnVf ZGV2LCB2cSwgc3RhcnRlZCA/IHZ1X2Jsa19wcm9jZXNzX3ZxIDogTlVMTCk7CiB9CiAKLXN0YXRp YyB1aW50NjRfdCB2dV9ibG9ja19nZXRfZmVhdHVyZXMoVnVEZXYgKmRldikKK3N0YXRpYyB1aW50 NjRfdCB2dV9ibGtfZ2V0X2ZlYXR1cmVzKFZ1RGV2ICpkZXYpCiB7CiAgICAgdWludDY0X3QgZmVh dHVyZXM7CiAgICAgVnVTZXJ2ZXIgKnNlcnZlciA9IGNvbnRhaW5lcl9vZihkZXYsIFZ1U2VydmVy LCB2dV9kZXYpOwotICAgIFZ1QmxvY2tEZXYgKnZkZXZfYmxrID0gZ2V0X3Z1X2Jsb2NrX2Rldmlj ZV9ieV9zZXJ2ZXIoc2VydmVyKTsKKyAgICBWdUJsa0V4cG9ydCAqdmV4cCA9IGNvbnRhaW5lcl9v ZihzZXJ2ZXIsIFZ1QmxrRXhwb3J0LCB2dV9zZXJ2ZXIpOwogICAgIGZlYXR1cmVzID0gMXVsbCA8 PCBWSVJUSU9fQkxLX0ZfU0laRV9NQVggfAogICAgICAgICAgICAgICAgMXVsbCA8PCBWSVJUSU9f QkxLX0ZfU0VHX01BWCB8CiAgICAgICAgICAgICAgICAxdWxsIDw8IFZJUlRJT19CTEtfRl9UT1BP TE9HWSB8CkBAIC0yNDAsMzUgKzI0NywzNSBAQCBzdGF0aWMgdWludDY0X3QgdnVfYmxvY2tfZ2V0 X2ZlYXR1cmVzKFZ1RGV2ICpkZXYpCiAgICAgICAgICAgICAgICAxdWxsIDw8IFZJUlRJT19SSU5H X0ZfRVZFTlRfSURYIHwKICAgICAgICAgICAgICAgIDF1bGwgPDwgVkhPU1RfVVNFUl9GX1BST1RP Q09MX0ZFQVRVUkVTOwogCi0gICAgaWYgKCF2ZGV2X2Jsay0+d3JpdGFibGUpIHsKKyAgICBpZiAo IXZleHAtPndyaXRhYmxlKSB7CiAgICAgICAgIGZlYXR1cmVzIHw9IDF1bGwgPDwgVklSVElPX0JM S19GX1JPOwogICAgIH0KIAogICAgIHJldHVybiBmZWF0dXJlczsKIH0KIAotc3RhdGljIHVpbnQ2 NF90IHZ1X2Jsb2NrX2dldF9wcm90b2NvbF9mZWF0dXJlcyhWdURldiAqZGV2KQorc3RhdGljIHVp bnQ2NF90IHZ1X2Jsa19nZXRfcHJvdG9jb2xfZmVhdHVyZXMoVnVEZXYgKmRldikKIHsKICAgICBy ZXR1cm4gMXVsbCA8PCBWSE9TVF9VU0VSX1BST1RPQ09MX0ZfQ09ORklHIHwKICAgICAgICAgICAg MXVsbCA8PCBWSE9TVF9VU0VSX1BST1RPQ09MX0ZfSU5GTElHSFRfU0hNRkQ7CiB9CiAKIHN0YXRp YyBpbnQKLXZ1X2Jsb2NrX2dldF9jb25maWcoVnVEZXYgKnZ1X2RldiwgdWludDhfdCAqY29uZmln LCB1aW50MzJfdCBsZW4pCit2dV9ibGtfZ2V0X2NvbmZpZyhWdURldiAqdnVfZGV2LCB1aW50OF90 ICpjb25maWcsIHVpbnQzMl90IGxlbikKIHsKKyAgICAvKiBUT0RPIGJsa2NmZyBtdXN0IGJlIGxp dHRsZS1lbmRpYW4gZm9yIFZJUlRJTyAxLjAgKi8KICAgICBWdVNlcnZlciAqc2VydmVyID0gY29u dGFpbmVyX29mKHZ1X2RldiwgVnVTZXJ2ZXIsIHZ1X2Rldik7Ci0gICAgVnVCbG9ja0RldiAqdmRl dl9ibGsgPSBnZXRfdnVfYmxvY2tfZGV2aWNlX2J5X3NlcnZlcihzZXJ2ZXIpOwotICAgIG1lbWNw eShjb25maWcsICZ2ZGV2X2Jsay0+YmxrY2ZnLCBsZW4pOwotCisgICAgVnVCbGtFeHBvcnQgKnZl eHAgPSBjb250YWluZXJfb2Yoc2VydmVyLCBWdUJsa0V4cG9ydCwgdnVfc2VydmVyKTsKKyAgICBt ZW1jcHkoY29uZmlnLCAmdmV4cC0+YmxrY2ZnLCBsZW4pOwogICAgIHJldHVybiAwOwogfQogCiBz dGF0aWMgaW50Ci12dV9ibG9ja19zZXRfY29uZmlnKFZ1RGV2ICp2dV9kZXYsIGNvbnN0IHVpbnQ4 X3QgKmRhdGEsCit2dV9ibGtfc2V0X2NvbmZpZyhWdURldiAqdnVfZGV2LCBjb25zdCB1aW50OF90 ICpkYXRhLAogICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBvZmZzZXQsIHVpbnQzMl90IHNp emUsIHVpbnQzMl90IGZsYWdzKQogewogICAgIFZ1U2VydmVyICpzZXJ2ZXIgPSBjb250YWluZXJf b2YodnVfZGV2LCBWdVNlcnZlciwgdnVfZGV2KTsKLSAgICBWdUJsb2NrRGV2ICp2ZGV2X2JsayA9 IGdldF92dV9ibG9ja19kZXZpY2VfYnlfc2VydmVyKHNlcnZlcik7CisgICAgVnVCbGtFeHBvcnQg KnZleHAgPSBjb250YWluZXJfb2Yoc2VydmVyLCBWdUJsa0V4cG9ydCwgdnVfc2VydmVyKTsKICAg ICB1aW50OF90IHdjZTsKIAogICAgIC8qIGRvbid0IHN1cHBvcnQgbGl2ZSBtaWdyYXRpb24gKi8K QEAgLTI4Miw4ICsyODksOCBAQCB2dV9ibG9ja19zZXRfY29uZmlnKFZ1RGV2ICp2dV9kZXYsIGNv bnN0IHVpbnQ4X3QgKmRhdGEsCiAgICAgfQogCiAgICAgd2NlID0gKmRhdGE7Ci0gICAgdmRldl9i bGstPmJsa2NmZy53Y2UgPSB3Y2U7Ci0gICAgYmxrX3NldF9lbmFibGVfd3JpdGVfY2FjaGUodmRl dl9ibGstPmJhY2tlbmQsIHdjZSk7CisgICAgdmV4cC0+YmxrY2ZnLndjZSA9IHdjZTsKKyAgICBi bGtfc2V0X2VuYWJsZV93cml0ZV9jYWNoZSh2ZXhwLT5leHBvcnQuYmxrLCB3Y2UpOwogICAgIHJl dHVybiAwOwogfQogCkBAIC0yOTUsNyArMzAyLDcgQEAgdnVfYmxvY2tfc2V0X2NvbmZpZyhWdURl diAqdnVfZGV2LCBjb25zdCB1aW50OF90ICpkYXRhLAogICogb2YgdnVfcHJvY2Vzc19tZXNzYWdl LgogICoKICAqLwotc3RhdGljIGludCB2dV9ibG9ja19wcm9jZXNzX21zZyhWdURldiAqZGV2LCBW aG9zdFVzZXJNc2cgKnZtc2csIGludCAqZG9fcmVwbHkpCitzdGF0aWMgaW50IHZ1X2Jsa19wcm9j ZXNzX21zZyhWdURldiAqZGV2LCBWaG9zdFVzZXJNc2cgKnZtc2csIGludCAqZG9fcmVwbHkpCiB7 CiAgICAgaWYgKHZtc2ctPnJlcXVlc3QgPT0gVkhPU1RfVVNFUl9OT05FKSB7CiAgICAgICAgIGRl di0+cGFuaWMoZGV2LCAiZGlzY29ubmVjdCIpOwpAQCAtMzA0LDI5ICszMTEsMjkgQEAgc3RhdGlj IGludCB2dV9ibG9ja19wcm9jZXNzX21zZyhWdURldiAqZGV2LCBWaG9zdFVzZXJNc2cgKnZtc2cs IGludCAqZG9fcmVwbHkpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1zdGF0aWMgY29uc3QgVnVE ZXZJZmFjZSB2dV9ibG9ja19pZmFjZSA9IHsKLSAgICAuZ2V0X2ZlYXR1cmVzICAgICAgICAgID0g dnVfYmxvY2tfZ2V0X2ZlYXR1cmVzLAotICAgIC5xdWV1ZV9zZXRfc3RhcnRlZCAgICAgPSB2dV9i bG9ja19xdWV1ZV9zZXRfc3RhcnRlZCwKLSAgICAuZ2V0X3Byb3RvY29sX2ZlYXR1cmVzID0gdnVf YmxvY2tfZ2V0X3Byb3RvY29sX2ZlYXR1cmVzLAotICAgIC5nZXRfY29uZmlnICAgICAgICAgICAg PSB2dV9ibG9ja19nZXRfY29uZmlnLAotICAgIC5zZXRfY29uZmlnICAgICAgICAgICAgPSB2dV9i bG9ja19zZXRfY29uZmlnLAotICAgIC5wcm9jZXNzX21zZyAgICAgICAgICAgPSB2dV9ibG9ja19w cm9jZXNzX21zZywKK3N0YXRpYyBjb25zdCBWdURldklmYWNlIHZ1X2Jsa19pZmFjZSA9IHsKKyAg ICAuZ2V0X2ZlYXR1cmVzICAgICAgICAgID0gdnVfYmxrX2dldF9mZWF0dXJlcywKKyAgICAucXVl dWVfc2V0X3N0YXJ0ZWQgICAgID0gdnVfYmxrX3F1ZXVlX3NldF9zdGFydGVkLAorICAgIC5nZXRf cHJvdG9jb2xfZmVhdHVyZXMgPSB2dV9ibGtfZ2V0X3Byb3RvY29sX2ZlYXR1cmVzLAorICAgIC5n ZXRfY29uZmlnICAgICAgICAgICAgPSB2dV9ibGtfZ2V0X2NvbmZpZywKKyAgICAuc2V0X2NvbmZp ZyAgICAgICAgICAgID0gdnVfYmxrX3NldF9jb25maWcsCisgICAgLnByb2Nlc3NfbXNnICAgICAg ICAgICA9IHZ1X2Jsa19wcm9jZXNzX21zZywKIH07CiAKIHN0YXRpYyB2b2lkIGJsa19haW9fYXR0 YWNoZWQoQWlvQ29udGV4dCAqY3R4LCB2b2lkICpvcGFxdWUpCiB7Ci0gICAgVnVCbG9ja0RldiAq dnViX2RldiA9IG9wYXF1ZTsKLSAgICB2aG9zdF91c2VyX3NlcnZlcl9hdHRhY2hfYWlvX2NvbnRl eHQoJnZ1Yl9kZXYtPnZ1X3NlcnZlciwgY3R4KTsKKyAgICBWdUJsa0V4cG9ydCAqdmV4cCA9IG9w YXF1ZTsKKyAgICB2aG9zdF91c2VyX3NlcnZlcl9hdHRhY2hfYWlvX2NvbnRleHQoJnZleHAtPnZ1 X3NlcnZlciwgY3R4KTsKIH0KIAogc3RhdGljIHZvaWQgYmxrX2Fpb19kZXRhY2godm9pZCAqb3Bh cXVlKQogewotICAgIFZ1QmxvY2tEZXYgKnZ1Yl9kZXYgPSBvcGFxdWU7Ci0gICAgdmhvc3RfdXNl cl9zZXJ2ZXJfZGV0YWNoX2Fpb19jb250ZXh0KCZ2dWJfZGV2LT52dV9zZXJ2ZXIpOworICAgIFZ1 QmxrRXhwb3J0ICp2ZXhwID0gb3BhcXVlOworICAgIHZob3N0X3VzZXJfc2VydmVyX2RldGFjaF9h aW9fY29udGV4dCgmdmV4cC0+dnVfc2VydmVyKTsKIH0KIAogc3RhdGljIHZvaWQKLXZ1X2Jsb2Nr X2luaXRpYWxpemVfY29uZmlnKEJsb2NrRHJpdmVyU3RhdGUgKmJzLAordnVfYmxrX2luaXRpYWxp emVfY29uZmlnKEJsb2NrRHJpdmVyU3RhdGUgKmJzLAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgc3RydWN0IHZpcnRpb19ibGtfY29uZmlnICpjb25maWcsIHVpbnQzMl90IGJsa19zaXplKQog ewogICAgIGNvbmZpZy0+Y2FwYWNpdHkgPSBiZHJ2X2dldGxlbmd0aChicykgPj4gQkRSVl9TRUNU T1JfQklUUzsKQEAgLTM0MywyOTAgKzM1MCw2NyBAQCB2dV9ibG9ja19pbml0aWFsaXplX2NvbmZp ZyhCbG9ja0RyaXZlclN0YXRlICpicywKICAgICBjb25maWctPm1heF93cml0ZV96ZXJvZXNfc2Vn ID0gMTsKIH0KIAotc3RhdGljIFZ1QmxvY2tEZXYgKnZ1X2Jsb2NrX2luaXQoVnVCbG9ja0RldiAq dnVfYmxvY2tfZGV2aWNlLCBFcnJvciAqKmVycnApCitzdGF0aWMgdm9pZCB2dV9ibGtfZXhwX3Jl cXVlc3Rfc2h1dGRvd24oQmxvY2tFeHBvcnQgKmV4cCkKIHsKKyAgICBWdUJsa0V4cG9ydCAqdmV4 cCA9IGNvbnRhaW5lcl9vZihleHAsIFZ1QmxrRXhwb3J0LCBleHBvcnQpOwogCi0gICAgQmxvY2tC YWNrZW5kICpibGs7Ci0gICAgRXJyb3IgKmxvY2FsX2Vycm9yID0gTlVMTDsKLSAgICBjb25zdCBj aGFyICpub2RlX25hbWUgPSB2dV9ibG9ja19kZXZpY2UtPm5vZGVfbmFtZTsKLSAgICBib29sIHdy aXRhYmxlID0gdnVfYmxvY2tfZGV2aWNlLT53cml0YWJsZTsKLSAgICB1aW50NjRfdCBwZXJtID0g QkxLX1BFUk1fQ09OU0lTVEVOVF9SRUFEOwotICAgIGludCByZXQ7Ci0KLSAgICBBaW9Db250ZXh0 ICpjdHg7Ci0KLSAgICBCbG9ja0RyaXZlclN0YXRlICpicyA9IGJkcnZfbG9va3VwX2JzKG5vZGVf bmFtZSwgbm9kZV9uYW1lLCAmbG9jYWxfZXJyb3IpOwotCi0gICAgaWYgKCFicykgewotICAgICAg ICBlcnJvcl9wcm9wYWdhdGUoZXJycCwgbG9jYWxfZXJyb3IpOwotICAgICAgICByZXR1cm4gTlVM TDsKLSAgICB9Ci0KLSAgICBpZiAoYmRydl9pc19yZWFkX29ubHkoYnMpKSB7Ci0gICAgICAgIHdy aXRhYmxlID0gZmFsc2U7Ci0gICAgfQotCi0gICAgaWYgKHdyaXRhYmxlKSB7Ci0gICAgICAgIHBl cm0gfD0gQkxLX1BFUk1fV1JJVEU7Ci0gICAgfQotCi0gICAgY3R4ID0gYmRydl9nZXRfYWlvX2Nv bnRleHQoYnMpOwotICAgIGFpb19jb250ZXh0X2FjcXVpcmUoY3R4KTsKLSAgICBiZHJ2X2ludmFs aWRhdGVfY2FjaGUoYnMsIE5VTEwpOwotICAgIGFpb19jb250ZXh0X3JlbGVhc2UoY3R4KTsKLQot ICAgIC8qCi0gICAgICogRG9uJ3QgYWxsb3cgcmVzaXplIHdoaWxlIHRoZSB2aG9zdCB1c2VyIHNl cnZlciBpcyBydW5uaW5nLAotICAgICAqIG90aGVyd2lzZSB3ZSBkb24ndCBjYXJlIHdoYXQgaGFw cGVucyB3aXRoIHRoZSBub2RlLgotICAgICAqLwotICAgIGJsayA9IGJsa19uZXcoYmRydl9nZXRf YWlvX2NvbnRleHQoYnMpLCBwZXJtLAotICAgICAgICAgICAgICAgICAgQkxLX1BFUk1fQ09OU0lT VEVOVF9SRUFEIHwgQkxLX1BFUk1fV1JJVEVfVU5DSEFOR0VEIHwKLSAgICAgICAgICAgICAgICAg IEJMS19QRVJNX1dSSVRFIHwgQkxLX1BFUk1fR1JBUEhfTU9EKTsKLSAgICByZXQgPSBibGtfaW5z ZXJ0X2JzKGJsaywgYnMsIGVycnApOwotCi0gICAgaWYgKHJldCA8IDApIHsKLSAgICAgICAgZ290 byBmYWlsOwotICAgIH0KLQotICAgIGJsa19zZXRfZW5hYmxlX3dyaXRlX2NhY2hlKGJsaywgZmFs c2UpOwotCi0gICAgYmxrX3NldF9hbGxvd19haW9fY29udGV4dF9jaGFuZ2UoYmxrLCB0cnVlKTsK LQotICAgIHZ1X2Jsb2NrX2RldmljZS0+YmxrY2ZnLndjZSA9IDA7Ci0gICAgdnVfYmxvY2tfZGV2 aWNlLT5iYWNrZW5kID0gYmxrOwotICAgIGlmICghdnVfYmxvY2tfZGV2aWNlLT5ibGtfc2l6ZSkg ewotICAgICAgICB2dV9ibG9ja19kZXZpY2UtPmJsa19zaXplID0gQkRSVl9TRUNUT1JfU0laRTsK LSAgICB9Ci0gICAgdnVfYmxvY2tfZGV2aWNlLT5ibGtjZmcuYmxrX3NpemUgPSB2dV9ibG9ja19k ZXZpY2UtPmJsa19zaXplOwotICAgIGJsa19zZXRfZ3Vlc3RfYmxvY2tfc2l6ZShibGssIHZ1X2Js b2NrX2RldmljZS0+YmxrX3NpemUpOwotICAgIHZ1X2Jsb2NrX2luaXRpYWxpemVfY29uZmlnKGJz LCAmdnVfYmxvY2tfZGV2aWNlLT5ibGtjZmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHZ1X2Jsb2NrX2RldmljZS0+YmxrX3NpemUpOwotICAgIHJldHVybiB2dV9ibG9ja19k ZXZpY2U7Ci0KLWZhaWw6Ci0gICAgYmxrX3VucmVmKGJsayk7Ci0gICAgcmV0dXJuIE5VTEw7Ci19 Ci0KLXN0YXRpYyB2b2lkIHZ1X2Jsb2NrX2RlaW5pdChWdUJsb2NrRGV2ICp2dV9ibG9ja19kZXZp Y2UpCi17Ci0gICAgaWYgKHZ1X2Jsb2NrX2RldmljZS0+YmFja2VuZCkgewotICAgICAgICBibGtf cmVtb3ZlX2Fpb19jb250ZXh0X25vdGlmaWVyKHZ1X2Jsb2NrX2RldmljZS0+YmFja2VuZCwgYmxr X2Fpb19hdHRhY2hlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi bGtfYWlvX2RldGFjaCwgdnVfYmxvY2tfZGV2aWNlKTsKLSAgICB9Ci0KLSAgICBibGtfdW5yZWYo dnVfYmxvY2tfZGV2aWNlLT5iYWNrZW5kKTsKLX0KLQotc3RhdGljIHZvaWQgdmhvc3RfdXNlcl9i bGtfc2VydmVyX3N0b3AoVnVCbG9ja0RldiAqdnVfYmxvY2tfZGV2aWNlKQotewotICAgIHZob3N0 X3VzZXJfc2VydmVyX3N0b3AoJnZ1X2Jsb2NrX2RldmljZS0+dnVfc2VydmVyKTsKLSAgICB2dV9i bG9ja19kZWluaXQodnVfYmxvY2tfZGV2aWNlKTsKLX0KLQotc3RhdGljIHZvaWQgdmhvc3RfdXNl cl9ibGtfc2VydmVyX3N0YXJ0KFZ1QmxvY2tEZXYgKnZ1X2Jsb2NrX2RldmljZSwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFcnJvciAqKmVycnApCi17Ci0gICAgQWlv Q29udGV4dCAqY3R4OwotICAgIFNvY2tldEFkZHJlc3MgKmFkZHIgPSB2dV9ibG9ja19kZXZpY2Ut PmFkZHI7Ci0KLSAgICBpZiAoIXZ1X2Jsb2NrX2luaXQodnVfYmxvY2tfZGV2aWNlLCBlcnJwKSkg ewotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgY3R4ID0gYmRydl9nZXRfYWlvX2NvbnRl eHQoYmxrX2JzKHZ1X2Jsb2NrX2RldmljZS0+YmFja2VuZCkpOwotCi0gICAgaWYgKCF2aG9zdF91 c2VyX3NlcnZlcl9zdGFydCgmdnVfYmxvY2tfZGV2aWNlLT52dV9zZXJ2ZXIsIGFkZHIsIGN0eCwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZIT1NUX1VTRVJfQkxLX01BWF9RVUVV RVMsICZ2dV9ibG9ja19pZmFjZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVy cnApKSB7Ci0gICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgfQotCi0gICAgYmxrX2FkZF9haW9fY29u dGV4dF9ub3RpZmllcih2dV9ibG9ja19kZXZpY2UtPmJhY2tlbmQsIGJsa19haW9fYXR0YWNoZWQs Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGtfYWlvX2RldGFjaCwgdnVfYmxv Y2tfZGV2aWNlKTsKLSAgICB2dV9ibG9ja19kZXZpY2UtPnJ1bm5pbmcgPSB0cnVlOwotICAgIHJl dHVybjsKLQotIGVycm9yOgotICAgIHZ1X2Jsb2NrX2RlaW5pdCh2dV9ibG9ja19kZXZpY2UpOwot fQotCi1zdGF0aWMgYm9vbCB2dV9wcm9wX21vZGlmaWFibGUoVnVCbG9ja0RldiAqdnVzLCBFcnJv ciAqKmVycnApCi17Ci0gICAgaWYgKHZ1cy0+cnVubmluZykgewotICAgICAgICAgICAgZXJyb3Jf c2V0ZyhlcnJwLCAiVGhlIHByb3BlcnR5IGNhbid0IGJlIG1vZGlmaWVkICIKLSAgICAgICAgICAg ICAgICAgICAgICAgIndoaWxlIHRoZSBzZXJ2ZXIgaXMgcnVubmluZyIpOwotICAgICAgICAgICAg cmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotc3RhdGljIHZvaWQg dnVfc2V0X25vZGVfbmFtZShPYmplY3QgKm9iaiwgY29uc3QgY2hhciAqdmFsdWUsIEVycm9yICoq ZXJycCkKLXsKLSAgICBWdUJsb2NrRGV2ICp2dXMgPSBWSE9TVF9VU0VSX0JMS19TRVJWRVIob2Jq KTsKLQotICAgIGlmICghdnVfcHJvcF9tb2RpZmlhYmxlKHZ1cywgZXJycCkpIHsKLSAgICAgICAg cmV0dXJuOwotICAgIH0KLQotICAgIGlmICh2dXMtPm5vZGVfbmFtZSkgewotICAgICAgICBnX2Zy ZWUodnVzLT5ub2RlX25hbWUpOwotICAgIH0KLQotICAgIHZ1cy0+bm9kZV9uYW1lID0gZ19zdHJk dXAodmFsdWUpOwotfQotCi1zdGF0aWMgY2hhciAqdnVfZ2V0X25vZGVfbmFtZShPYmplY3QgKm9i aiwgRXJyb3IgKiplcnJwKQotewotICAgIFZ1QmxvY2tEZXYgKnZ1cyA9IFZIT1NUX1VTRVJfQkxL X1NFUlZFUihvYmopOwotICAgIHJldHVybiBnX3N0cmR1cCh2dXMtPm5vZGVfbmFtZSk7Ci19Ci0K LXN0YXRpYyB2b2lkIGZyZWVfc29ja2V0X2FkZHIoU29ja2V0QWRkcmVzcyAqYWRkcikKLXsKLSAg ICAgICAgZ19mcmVlKGFkZHItPnUucV91bml4LnBhdGgpOwotICAgICAgICBnX2ZyZWUoYWRkcik7 Ci19Ci0KLXN0YXRpYyB2b2lkIHZ1X3NldF91bml4X3NvY2tldChPYmplY3QgKm9iaiwgY29uc3Qg Y2hhciAqdmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXJyb3IgKiplcnJw KQotewotICAgIFZ1QmxvY2tEZXYgKnZ1cyA9IFZIT1NUX1VTRVJfQkxLX1NFUlZFUihvYmopOwot Ci0gICAgaWYgKCF2dV9wcm9wX21vZGlmaWFibGUodnVzLCBlcnJwKSkgewotICAgICAgICByZXR1 cm47Ci0gICAgfQotCi0gICAgaWYgKHZ1cy0+YWRkcikgewotICAgICAgICBmcmVlX3NvY2tldF9h ZGRyKHZ1cy0+YWRkcik7Ci0gICAgfQotCi0gICAgU29ja2V0QWRkcmVzcyAqYWRkciA9IGdfbmV3 MChTb2NrZXRBZGRyZXNzLCAxKTsKLSAgICBhZGRyLT50eXBlID0gU09DS0VUX0FERFJFU1NfVFlQ RV9VTklYOwotICAgIGFkZHItPnUucV91bml4LnBhdGggPSBnX3N0cmR1cCh2YWx1ZSk7Ci0gICAg dnVzLT5hZGRyID0gYWRkcjsKKyAgICB2aG9zdF91c2VyX3NlcnZlcl9zdG9wKCZ2ZXhwLT52dV9z ZXJ2ZXIpOwogfQogCi1zdGF0aWMgY2hhciAqdnVfZ2V0X3VuaXhfc29ja2V0KE9iamVjdCAqb2Jq LCBFcnJvciAqKmVycnApCitzdGF0aWMgaW50IHZ1X2Jsa19leHBfY3JlYXRlKEJsb2NrRXhwb3J0 ICpleHAsIEJsb2NrRXhwb3J0T3B0aW9ucyAqb3B0cywKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgRXJyb3IgKiplcnJwKQogewotICAgIFZ1QmxvY2tEZXYgKnZ1cyA9IFZIT1NUX1VTRVJf QkxLX1NFUlZFUihvYmopOwotICAgIHJldHVybiBnX3N0cmR1cCh2dXMtPmFkZHItPnUucV91bml4 LnBhdGgpOwotfQotCi1zdGF0aWMgYm9vbCB2dV9nZXRfYmxvY2tfd3JpdGFibGUoT2JqZWN0ICpv YmosIEVycm9yICoqZXJycCkKLXsKLSAgICBWdUJsb2NrRGV2ICp2dXMgPSBWSE9TVF9VU0VSX0JM S19TRVJWRVIob2JqKTsKLSAgICByZXR1cm4gdnVzLT53cml0YWJsZTsKLX0KLQotc3RhdGljIHZv aWQgdnVfc2V0X2Jsb2NrX3dyaXRhYmxlKE9iamVjdCAqb2JqLCBib29sIHZhbHVlLCBFcnJvciAq KmVycnApCi17Ci0gICAgVnVCbG9ja0RldiAqdnVzID0gVkhPU1RfVVNFUl9CTEtfU0VSVkVSKG9i aik7Ci0KLSAgICBpZiAoIXZ1X3Byb3BfbW9kaWZpYWJsZSh2dXMsIGVycnApKSB7Ci0gICAgICAg ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgdnVzLT53cml0YWJsZSA9IHZhbHVlOwotfQotCi1z dGF0aWMgdm9pZCB2dV9nZXRfYmxrX3NpemUoT2JqZWN0ICpvYmosIFZpc2l0b3IgKnYsIGNvbnN0 IGNoYXIgKm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqb3BhcXVlLCBF cnJvciAqKmVycnApCi17Ci0gICAgVnVCbG9ja0RldiAqdnVzID0gVkhPU1RfVVNFUl9CTEtfU0VS VkVSKG9iaik7Ci0gICAgdWludDMyX3QgdmFsdWUgPSB2dXMtPmJsa19zaXplOwotCi0gICAgdmlz aXRfdHlwZV91aW50MzIodiwgbmFtZSwgJnZhbHVlLCBlcnJwKTsKLX0KLQotc3RhdGljIHZvaWQg dnVfc2V0X2Jsa19zaXplKE9iamVjdCAqb2JqLCBWaXNpdG9yICp2LCBjb25zdCBjaGFyICpuYW1l LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKm9wYXF1ZSwgRXJyb3IgKiplcnJw KQotewotICAgIFZ1QmxvY2tEZXYgKnZ1cyA9IFZIT1NUX1VTRVJfQkxLX1NFUlZFUihvYmopOwot CisgICAgVnVCbGtFeHBvcnQgKnZleHAgPSBjb250YWluZXJfb2YoZXhwLCBWdUJsa0V4cG9ydCwg ZXhwb3J0KTsKKyAgICBCbG9ja0V4cG9ydE9wdGlvbnNWaG9zdFVzZXJCbGsgKnZ1X29wdHMgPSAm b3B0cy0+dS52aG9zdF91c2VyX2JsazsKICAgICBFcnJvciAqbG9jYWxfZXJyID0gTlVMTDsKLSAg ICB1aW50MzJfdCB2YWx1ZTsKKyAgICB1aW50NjRfdCBsb2dpY2FsX2Jsb2NrX3NpemU7CiAKLSAg ICBpZiAoIXZ1X3Byb3BfbW9kaWZpYWJsZSh2dXMsIGVycnApKSB7Ci0gICAgICAgICAgICByZXR1 cm47Ci0gICAgfQorICAgIHZleHAtPndyaXRhYmxlID0gb3B0cy0+d3JpdGFibGU7CisgICAgdmV4 cC0+YmxrY2ZnLndjZSA9IDA7CiAKLSAgICB2aXNpdF90eXBlX3VpbnQzMih2LCBuYW1lLCAmdmFs dWUsICZsb2NhbF9lcnIpOwotICAgIGlmIChsb2NhbF9lcnIpIHsKLSAgICAgICAgZ290byBvdXQ7 CisgICAgaWYgKHZ1X29wdHMtPmhhc19sb2dpY2FsX2Jsb2NrX3NpemUpIHsKKyAgICAgICAgbG9n aWNhbF9ibG9ja19zaXplID0gdnVfb3B0cy0+bG9naWNhbF9ibG9ja19zaXplOworICAgIH0gZWxz ZSB7CisgICAgICAgIGxvZ2ljYWxfYmxvY2tfc2l6ZSA9IEJEUlZfU0VDVE9SX1NJWkU7CiAgICAg fQotCi0gICAgY2hlY2tfYmxvY2tfc2l6ZShvYmplY3RfZ2V0X3R5cGVuYW1lKG9iaiksIG5hbWUs IHZhbHVlLCAmbG9jYWxfZXJyKTsKKyAgICBjaGVja19ibG9ja19zaXplKGV4cC0+aWQsICJsb2dp Y2FsLWJsb2NrLXNpemUiLCBsb2dpY2FsX2Jsb2NrX3NpemUsCisgICAgICAgICAgICAgICAgICAg ICAmbG9jYWxfZXJyKTsKICAgICBpZiAobG9jYWxfZXJyKSB7Ci0gICAgICAgIGdvdG8gb3V0Owor ICAgICAgICBlcnJvcl9wcm9wYWdhdGUoZXJycCwgbG9jYWxfZXJyKTsKKyAgICAgICAgcmV0dXJu IC1FSU5WQUw7CisgICAgfQorICAgIHZleHAtPmJsa19zaXplID0gbG9naWNhbF9ibG9ja19zaXpl OworICAgIGJsa19zZXRfZ3Vlc3RfYmxvY2tfc2l6ZShleHAtPmJsaywgbG9naWNhbF9ibG9ja19z aXplKTsKKyAgICB2dV9ibGtfaW5pdGlhbGl6ZV9jb25maWcoYmxrX2JzKGV4cC0+YmxrKSwgJnZl eHAtPmJsa2NmZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dpY2FsX2Jsb2Nr X3NpemUpOworCisgICAgYmxrX3NldF9hbGxvd19haW9fY29udGV4dF9jaGFuZ2UoZXhwLT5ibGss IHRydWUpOworICAgIGJsa19hZGRfYWlvX2NvbnRleHRfbm90aWZpZXIoZXhwLT5ibGssIGJsa19h aW9fYXR0YWNoZWQsIGJsa19haW9fZGV0YWNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdmV4cCk7CisKKyAgICBpZiAoIXZob3N0X3VzZXJfc2VydmVyX3N0YXJ0KCZ2ZXhwLT52 dV9zZXJ2ZXIsIHZ1X29wdHMtPmFkZHIsIGV4cC0+Y3R4LAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgVkhPU1RfVVNFUl9CTEtfTUFYX1FVRVVFUywgJnZ1X2Jsa19pZmFjZSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycnApKSB7CisgICAgICAgIGJsa19yZW1v dmVfYWlvX2NvbnRleHRfbm90aWZpZXIoZXhwLT5ibGssIGJsa19haW9fYXR0YWNoZWQsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxrX2Fpb19kZXRhY2gsIHZleHAp OworICAgICAgICByZXR1cm4gLUVBRERSTk9UQVZBSUw7CiAgICAgfQogCi0gICAgdnVzLT5ibGtf c2l6ZSA9IHZhbHVlOwotCi1vdXQ6Ci0gICAgZXJyb3JfcHJvcGFnYXRlKGVycnAsIGxvY2FsX2Vy cik7Ci19Ci0KLXN0YXRpYyB2b2lkIHZob3N0X3VzZXJfYmxrX3NlcnZlcl9pbnN0YW5jZV9maW5h bGl6ZShPYmplY3QgKm9iaikKLXsKLSAgICBWdUJsb2NrRGV2ICp2dWIgPSBWSE9TVF9VU0VSX0JM S19TRVJWRVIob2JqKTsKLQotICAgIHZob3N0X3VzZXJfYmxrX3NlcnZlcl9zdG9wKHZ1Yik7Ci0K LSAgICAvKgotICAgICAqIFVubGlrZSBvYmplY3RfcHJvcGVydHlfYWRkX3N0ciwgb2JqZWN0X2Ns YXNzX3Byb3BlcnR5X2FkZF9zdHIKLSAgICAgKiBkb2Vzbid0IGhhdmUgYSByZWxlYXNlIG1ldGhv ZC4gVGh1cyBtYW51YWwgbWVtb3J5IGZyZWVpbmcgaXMKLSAgICAgKiBuZWVkZWQuCi0gICAgICov Ci0gICAgZnJlZV9zb2NrZXRfYWRkcih2dWItPmFkZHIpOwotICAgIGdfZnJlZSh2dWItPm5vZGVf bmFtZSk7Ci19Ci0KLXN0YXRpYyB2b2lkIHZob3N0X3VzZXJfYmxrX3NlcnZlcl9jb21wbGV0ZShV c2VyQ3JlYXRhYmxlICpvYmosIEVycm9yICoqZXJycCkKLXsKLSAgICBWdUJsb2NrRGV2ICp2dWIg PSBWSE9TVF9VU0VSX0JMS19TRVJWRVIob2JqKTsKLQotICAgIHZob3N0X3VzZXJfYmxrX3NlcnZl cl9zdGFydCh2dWIsIGVycnApOworICAgIHJldHVybiAwOwogfQogCi1zdGF0aWMgdm9pZCB2aG9z dF91c2VyX2Jsa19zZXJ2ZXJfY2xhc3NfaW5pdChPYmplY3RDbGFzcyAqa2xhc3MsCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpjbGFzc19kYXRhKQor c3RhdGljIHZvaWQgdnVfYmxrX2V4cF9kZWxldGUoQmxvY2tFeHBvcnQgKmV4cCkKIHsKLSAgICBV c2VyQ3JlYXRhYmxlQ2xhc3MgKnVjYyA9IFVTRVJfQ1JFQVRBQkxFX0NMQVNTKGtsYXNzKTsKLSAg ICB1Y2MtPmNvbXBsZXRlID0gdmhvc3RfdXNlcl9ibGtfc2VydmVyX2NvbXBsZXRlOwotCi0gICAg b2JqZWN0X2NsYXNzX3Byb3BlcnR5X2FkZF9ib29sKGtsYXNzLCAid3JpdGFibGUiLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2dV9nZXRfYmxvY2tfd3JpdGFibGUsCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZ1X3NldF9ibG9ja193cml0YWJsZSk7Ci0K LSAgICBvYmplY3RfY2xhc3NfcHJvcGVydHlfYWRkX3N0cihrbGFzcywgIm5vZGUtbmFtZSIsCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdnVfZ2V0X25vZGVfbmFtZSwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2dV9zZXRfbm9kZV9uYW1lKTsKLQotICAgIG9i amVjdF9jbGFzc19wcm9wZXJ0eV9hZGRfc3RyKGtsYXNzLCAidW5peC1zb2NrZXQiLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZ1X2dldF91bml4X3NvY2tldCwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB2dV9zZXRfdW5peF9zb2NrZXQpOworICAgIFZ1Qmxr RXhwb3J0ICp2ZXhwID0gY29udGFpbmVyX29mKGV4cCwgVnVCbGtFeHBvcnQsIGV4cG9ydCk7CiAK LSAgICBvYmplY3RfY2xhc3NfcHJvcGVydHlfYWRkKGtsYXNzLCAibG9naWNhbC1ibG9jay1zaXpl IiwgInVpbnQzMiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2dV9nZXRfYmxrX3Np emUsIHZ1X3NldF9ibGtfc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEws IE5VTEwpOworICAgIGJsa19yZW1vdmVfYWlvX2NvbnRleHRfbm90aWZpZXIoZXhwLT5ibGssIGJs a19haW9fYXR0YWNoZWQsIGJsa19haW9fZGV0YWNoLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdmV4cCk7CiB9CiAKLXN0YXRpYyBjb25zdCBUeXBlSW5mbyB2aG9zdF91c2Vy X2Jsa19zZXJ2ZXJfaW5mbyA9IHsKLSAgICAubmFtZSA9IFRZUEVfVkhPU1RfVVNFUl9CTEtfU0VS VkVSLAotICAgIC5wYXJlbnQgPSBUWVBFX09CSkVDVCwKLSAgICAuaW5zdGFuY2Vfc2l6ZSA9IHNp emVvZihWdUJsb2NrRGV2KSwKLSAgICAuaW5zdGFuY2VfZmluYWxpemUgPSB2aG9zdF91c2VyX2Js a19zZXJ2ZXJfaW5zdGFuY2VfZmluYWxpemUsCi0gICAgLmNsYXNzX2luaXQgPSB2aG9zdF91c2Vy X2Jsa19zZXJ2ZXJfY2xhc3NfaW5pdCwKLSAgICAuaW50ZXJmYWNlcyA9IChJbnRlcmZhY2VJbmZv W10pIHsKLSAgICAgICAge1RZUEVfVVNFUl9DUkVBVEFCTEV9LAotICAgICAgICB7fQotICAgIH0s Citjb25zdCBCbG9ja0V4cG9ydERyaXZlciBibGtfZXhwX3Zob3N0X3VzZXJfYmxrID0geworICAg IC50eXBlICAgICAgICAgICAgICAgPSBCTE9DS19FWFBPUlRfVFlQRV9WSE9TVF9VU0VSX0JMSywK KyAgICAuaW5zdGFuY2Vfc2l6ZSAgICAgID0gc2l6ZW9mKFZ1QmxrRXhwb3J0KSwKKyAgICAuY3Jl YXRlICAgICAgICAgICAgID0gdnVfYmxrX2V4cF9jcmVhdGUsCisgICAgLmRlbGV0ZSAgICAgICAg ICAgICA9IHZ1X2Jsa19leHBfZGVsZXRlLAorICAgIC5yZXF1ZXN0X3NodXRkb3duICAgPSB2dV9i bGtfZXhwX3JlcXVlc3Rfc2h1dGRvd24sCiB9OwotCi1zdGF0aWMgdm9pZCB2aG9zdF91c2VyX2Js a19zZXJ2ZXJfcmVnaXN0ZXJfdHlwZXModm9pZCkKLXsKLSAgICB0eXBlX3JlZ2lzdGVyX3N0YXRp Yygmdmhvc3RfdXNlcl9ibGtfc2VydmVyX2luZm8pOwotfQotCi10eXBlX2luaXQodmhvc3RfdXNl cl9ibGtfc2VydmVyX3JlZ2lzdGVyX3R5cGVzKQpkaWZmIC0tZ2l0IGEvdGVzdHMvcXRlc3Qvdmhv c3QtdXNlci1ibGstdGVzdC5jIGIvdGVzdHMvcXRlc3Qvdmhvc3QtdXNlci1ibGstdGVzdC5jCmlu ZGV4IGQ0Y2NhYzZiNTQuLjQyZTRjZmRlODIgMTAwNjQ0Ci0tLSBhL3Rlc3RzL3F0ZXN0L3Zob3N0 LXVzZXItYmxrLXRlc3QuYworKysgYi90ZXN0cy9xdGVzdC92aG9zdC11c2VyLWJsay10ZXN0LmMK QEAgLTY3NCw3ICs2NzQsNyBAQCBzdGF0aWMgY2hhciAqc3RhcnRfdmhvc3RfdXNlcl9ibGsoR1N0 cmluZyAqY21kX2xpbmUsIGludCB2dXNfaW5zdGFuY2VzKQogICAgICAgICBpbWdfcGF0aCA9IGRy aXZlX2NyZWF0ZSgpOwogICAgICAgICBnX3N0cmluZ19hcHBlbmRfcHJpbnRmKHN0b3JhZ2VfZGFl bW9uX2NvbW1hbmQsCiAgICAgICAgICAgICAiLS1ibG9ja2RldiBkcml2ZXI9ZmlsZSxub2RlLW5h bWU9ZGlzayVkLGZpbGVuYW1lPSVzICIKLSAgICAgICAgICAgICItLW9iamVjdCB2aG9zdC11c2Vy LWJsay1zZXJ2ZXIsaWQ9ZGlzayVkLHVuaXgtc29ja2V0PSVzLCIKKyAgICAgICAgICAgICItLWV4 cG9ydCB0eXBlPXZob3N0LXVzZXItYmxrLGlkPWRpc2slZCxhZGRyLnR5cGU9dW5peCxhZGRyLnBh dGg9JXMsIgogICAgICAgICAgICAgIm5vZGUtbmFtZT1kaXNrJWksd3JpdGFibGU9b24gIiwKICAg ICAgICAgICAgIGksIGltZ19wYXRoLCBpLCBzb2NrX3BhdGgsIGkpOwogCmRpZmYgLS1naXQgYS91 dGlsL3Zob3N0LXVzZXItc2VydmVyLmMgYi91dGlsL3Zob3N0LXVzZXItc2VydmVyLmMKaW5kZXgg ZDhiOGMwOGI1Zi4uMmEyNzEzOWViOCAxMDA2NDQKLS0tIGEvdXRpbC92aG9zdC11c2VyLXNlcnZl ci5jCisrKyBiL3V0aWwvdmhvc3QtdXNlci1zZXJ2ZXIuYwpAQCAtNDA4LDcgKzQwOCwxNSBAQCBi b29sIHZob3N0X3VzZXJfc2VydmVyX3N0YXJ0KFZ1U2VydmVyICpzZXJ2ZXIsCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIEVycm9yICoqZXJycCkKIHsKICAgICBRRU1VQkggKmJoOwotICAg IFFJT05ldExpc3RlbmVyICpsaXN0ZW5lciA9IHFpb19uZXRfbGlzdGVuZXJfbmV3KCk7CisgICAg UUlPTmV0TGlzdGVuZXIgKmxpc3RlbmVyOworCisgICAgaWYgKHNvY2tldF9hZGRyLT50eXBlICE9 IFNPQ0tFVF9BRERSRVNTX1RZUEVfVU5JWCAmJgorICAgICAgICBzb2NrZXRfYWRkci0+dHlwZSAh PSBTT0NLRVRfQUREUkVTU19UWVBFX0ZEKSB7CisgICAgICAgIGVycm9yX3NldGcoZXJycCwgIk9u bHkgc29ja2V0IGFkZHJlc3MgdHlwZXMgJ3VuaXgnIGFuZCAnZmQnIGFyZSBzdXBwb3J0ZWQiKTsK KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGxpc3RlbmVyID0gcWlvX25ldF9s aXN0ZW5lcl9uZXcoKTsKICAgICBpZiAocWlvX25ldF9saXN0ZW5lcl9vcGVuX3N5bmMobGlzdGVu ZXIsIHNvY2tldF9hZGRyLCAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl cnJwKSA8IDApIHsKICAgICAgICAgb2JqZWN0X3VucmVmKE9CSkVDVChsaXN0ZW5lcikpOwpkaWZm IC0tZ2l0IGEvYmxvY2svZXhwb3J0L21lc29uLmJ1aWxkIGIvYmxvY2svZXhwb3J0L21lc29uLmJ1 aWxkCmluZGV4IDU1OGVmMzVkMzguLmVmM2E5NTc2ZjcgMTAwNjQ0Ci0tLSBhL2Jsb2NrL2V4cG9y dC9tZXNvbi5idWlsZAorKysgYi9ibG9jay9leHBvcnQvbWVzb24uYnVpbGQKQEAgLTEgKzEsMiBA QAogYmxvY2tfc3MuYWRkKGZpbGVzKCdleHBvcnQuYycpKQorYmxvY2tfc3MuYWRkKHdoZW46ICdD T05GSUdfTElOVVgnLCBpZl90cnVlOiBmaWxlcygndmhvc3QtdXNlci1ibGstc2VydmVyLmMnLCAn Li4vLi4vY29udHJpYi9saWJ2aG9zdC11c2VyL2xpYnZob3N0LXVzZXIuYycpKQpkaWZmIC0tZ2l0 IGEvYmxvY2svbWVzb24uYnVpbGQgYi9ibG9jay9tZXNvbi5idWlsZAppbmRleCA2ZTZjMWRjNDc5 Li43OGU4YjI1MjMyIDEwMDY0NAotLS0gYS9ibG9jay9tZXNvbi5idWlsZAorKysgYi9ibG9jay9t ZXNvbi5idWlsZApAQCAtNjAsNyArNjAsNiBAQCBibG9ja19zcy5hZGQod2hlbjogJ0NPTkZJR19X SU4zMicsIGlmX3RydWU6IGZpbGVzKCdmaWxlLXdpbjMyLmMnLCAnd2luMzItYWlvLmMnKQogYmxv Y2tfc3MuYWRkKHdoZW46ICdDT05GSUdfUE9TSVgnLCBpZl90cnVlOiBbZmlsZXMoJ2ZpbGUtcG9z aXguYycpLCBjb3JlZiwgaW9raXRdKQogYmxvY2tfc3MuYWRkKHdoZW46ICdDT05GSUdfTElCSVND U0knLCBpZl90cnVlOiBmaWxlcygnaXNjc2ktb3B0cy5jJykpCiBibG9ja19zcy5hZGQod2hlbjog J0NPTkZJR19MSU5VWCcsIGlmX3RydWU6IGZpbGVzKCdudm1lLmMnKSkKLWJsb2NrX3NzLmFkZCh3 aGVuOiAnQ09ORklHX0xJTlVYJywgaWZfdHJ1ZTogZmlsZXMoJ2V4cG9ydC92aG9zdC11c2VyLWJs ay1zZXJ2ZXIuYycsICcuLi9jb250cmliL2xpYnZob3N0LXVzZXIvbGlidmhvc3QtdXNlci5jJykp CiBibG9ja19zcy5hZGQod2hlbjogJ0NPTkZJR19SRVBMSUNBVElPTicsIGlmX3RydWU6IGZpbGVz KCdyZXBsaWNhdGlvbi5jJykpCiBibG9ja19zcy5hZGQod2hlbjogJ0NPTkZJR19TSEVFUERPRycs IGlmX3RydWU6IGZpbGVzKCdzaGVlcGRvZy5jJykpCiBibG9ja19zcy5hZGQod2hlbjogWydDT05G SUdfTElOVVhfQUlPJywgbGliYWlvXSwgaWZfdHJ1ZTogZmlsZXMoJ2xpbnV4LWFpby5jJykpCi0t IAoyLjI2LjIKCg==