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 35E4FC4363D for ; Tue, 22 Sep 2020 16:13:28 +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 A9C1222206 for ; Tue, 22 Sep 2020 16:13:27 +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="LOJBk6JV" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org A9C1222206 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]:40010 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kKkv0-00049B-Lo for qemu-devel@archiver.kernel.org; Tue, 22 Sep 2020 12:13:26 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:46946) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kKkmg-0003Qs-AF for qemu-devel@nongnu.org; Tue, 22 Sep 2020 12:04:50 -0400 Received: from us-smtp-delivery-124.mimecast.com ([63.128.21.124]:47901) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1kKkmb-0005g3-FQ for qemu-devel@nongnu.org; Tue, 22 Sep 2020 12:04:49 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1600790684; 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=BN0mDWS0Jks4TTWCUyAWyxyS9BNNtn+o/qsNSIbuj10=; b=LOJBk6JVxzepnirfZ2G2EgkUeRIS+iAdF72+3SR+nVe2+tbxz320cJp4qNE9wkCq0kdIt7 haELs0itz9YbCcacb5aAk3C4Xb+sLdFte+aDDqVFsPoQXzVjr9o8QnhSHfBb7leG+zGdhC s5JXRvJgK6vcKuRI39mU815UcP6Uicw= 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-488-1AACv8jUOZq1g5PwrpJ_uw-1; Tue, 22 Sep 2020 12:04:42 -0400 X-MC-Unique: 1AACv8jUOZq1g5PwrpJ_uw-1 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 4CC75802EA5; Tue, 22 Sep 2020 16:04:41 +0000 (UTC) Received: from localhost (ovpn-115-55.ams2.redhat.com [10.36.115.55]) by smtp.corp.redhat.com (Postfix) with ESMTP id 943765C1A3; Tue, 22 Sep 2020 16:04:40 +0000 (UTC) From: Stefan Hajnoczi To: qemu-devel@nongnu.org Subject: [PATCH 11/11] block/export: convert vhost-user-blk server to block export API Date: Tue, 22 Sep 2020 17:04:01 +0100 Message-Id: <20200922160401.294055-12-stefanha@redhat.com> In-Reply-To: <20200922160401.294055-1-stefanha@redhat.com> References: <20200922160401.294055-1-stefanha@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 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-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: base64 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/09/22 02:07:04 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.455, 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 , qemu-block@nongnu.org, Markus Armbruster , Coiby Xu , mreitz@redhat.com, Stefan Hajnoczi 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 eSB3aXNoIHRvIGFjY2VwdCBjaGFyZGV2cwp0b28gaW4gdGhlIGZ1dHVyZS4KClNpZ25lZC1vZmYt Ynk6IFN0ZWZhbiBIYWpub2N6aSA8c3RlZmFuaGFAcmVkaGF0LmNvbT4KLS0tCiBxYXBpL2Jsb2Nr LWV4cG9ydC5qc29uICAgICAgICAgICAgICAgfCAgMTkgKy0KIGJsb2NrL2V4cG9ydC92aG9zdC11 c2VyLWJsay1zZXJ2ZXIuaCB8ICAyMyArLQogYmxvY2svZXhwb3J0L2V4cG9ydC5jICAgICAgICAg ICAgICAgIHwgICA4ICstCiBibG9jay9leHBvcnQvdmhvc3QtdXNlci1ibGstc2VydmVyLmMgfCA0 NjEgKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tCiBibG9jay9leHBvcnQvbWVzb24uYnVpbGQg ICAgICAgICAgICAgfCAgIDEgKwogYmxvY2svbWVzb24uYnVpbGQgICAgICAgICAgICAgICAgICAg IHwgICAxIC0KIDYgZmlsZXMgY2hhbmdlZCwgMTU2IGluc2VydGlvbnMoKyksIDM1NyBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS9xYXBpL2Jsb2NrLWV4cG9ydC5qc29uIGIvcWFwaS9ibG9jay1l eHBvcnQuanNvbgppbmRleCBhY2UwZDY2ZTE3Li44NDBkY2JlODMzIDEwMDY0NAotLS0gYS9xYXBp L2Jsb2NrLWV4cG9ydC5qc29uCisrKyBiL3FhcGkvYmxvY2stZXhwb3J0Lmpzb24KQEAgLTg0LDYg Kzg0LDE5IEBACiAgICdkYXRhJzogeyAnKm5hbWUnOiAnc3RyJywgJypkZXNjcmlwdGlvbic6ICdz dHInLAogICAgICAgICAgICAgJypiaXRtYXAnOiAnc3RyJyB9IH0KIAorIyMKKyMgQEJsb2NrRXhw b3J0T3B0aW9uc1Zob3N0VXNlckJsazoKKyMKKyMgQSB2aG9zdC11c2VyLWJsayBibG9jayBleHBv cnQuCisjCisjIEB1bml4LXNvY2tldDogUGF0aCB3aGVyZSB0aGUgdmhvc3QtdXNlciBVTklYIGRv bWFpbiBzb2NrZXQgd2lsbCBiZSBjcmVhdGVkLgorIyBAbG9naWNhbC1ibG9jay1zaXplOiBMb2dp Y2FsIGJsb2NrIHNpemUgaW4gYnl0ZXMuCisjCisjIFNpbmNlOiA1LjIKKyMjCit7ICdzdHJ1Y3Qn OiAnQmxvY2tFeHBvcnRPcHRpb25zVmhvc3RVc2VyQmxrJywKKyAgJ2RhdGEnOiB7ICcqdW5peC1z b2NrZXQnOiAnc3RyJywgJypsb2dpY2FsLWJsb2NrLXNpemUnOiAnc2l6ZScgfSB9CisKICMjCiAj IEBOYmRTZXJ2ZXJBZGRPcHRpb25zOgogIwpAQCAtMTgwLDExICsxOTMsMTIgQEAKICMgQW4gZW51 bWVyYXRpb24gb2YgYmxvY2sgZXhwb3J0IHR5cGVzCiAjCiAjIEBuYmQ6IE5CRCBleHBvcnQKKyMg QHZob3N0LXVzZXItYmxrOiB2aG9zdC11c2VyLWJsayBleHBvcnQgKHNpbmNlIDUuMikKICMKICMg U2luY2U6IDQuMgogIyMKIHsgJ2VudW0nOiAnQmxvY2tFeHBvcnRUeXBlJywKLSAgJ2RhdGEnOiBb ICduYmQnIF0gfQorICAnZGF0YSc6IFsgJ25iZCcsICd2aG9zdC11c2VyLWJsaycgXSB9CiAKICMj CiAjIEBCbG9ja0V4cG9ydE9wdGlvbnM6CkBAIC0yMTMsNyArMjI3LDggQEAKICAgICAgICAgICAg ICcqd3JpdGV0aHJvdWdoJzogJ2Jvb2wnIH0sCiAgICdkaXNjcmltaW5hdG9yJzogJ3R5cGUnLAog ICAnZGF0YSc6IHsKLSAgICAgICduYmQnOiAnQmxvY2tFeHBvcnRPcHRpb25zTmJkJworICAgICAg J25iZCc6ICdCbG9ja0V4cG9ydE9wdGlvbnNOYmQnLAorICAgICAgJ3Zob3N0LXVzZXItYmxrJzog J0Jsb2NrRXhwb3J0T3B0aW9uc1Zob3N0VXNlckJsaycKICAgIH0gfQogCiAjIwpkaWZmIC0tZ2l0 IGEvYmxvY2svZXhwb3J0L3Zob3N0LXVzZXItYmxrLXNlcnZlci5oIGIvYmxvY2svZXhwb3J0L3Zo b3N0LXVzZXItYmxrLXNlcnZlci5oCmluZGV4IGYwNmYzN2M0YzguLmZjZjQ2ZmM4YTUgMTAwNjQ0 Ci0tLSBhL2Jsb2NrL2V4cG9ydC92aG9zdC11c2VyLWJsay1zZXJ2ZXIuaAorKysgYi9ibG9jay9l eHBvcnQvdmhvc3QtdXNlci1ibGstc2VydmVyLmgKQEAgLTEwLDI3ICsxMCwxMCBAQAogCiAjaWZu ZGVmIFZIT1NUX1VTRVJfQkxLX1NFUlZFUl9ICiAjZGVmaW5lIFZIT1NUX1VTRVJfQkxLX1NFUlZF Ul9ICi0jaW5jbHVkZSAidXRpbC92aG9zdC11c2VyLXNlcnZlci5oIgogCi10eXBlZGVmIHN0cnVj dCBWdUJsb2NrRGV2IFZ1QmxvY2tEZXY7Ci0jZGVmaW5lIFRZUEVfVkhPU1RfVVNFUl9CTEtfU0VS VkVSICJ2aG9zdC11c2VyLWJsay1zZXJ2ZXIiCi0jZGVmaW5lIFZIT1NUX1VTRVJfQkxLX1NFUlZF UihvYmopIFwKLSAgIE9CSkVDVF9DSEVDSyhWdUJsb2NrRGV2LCBvYmosIFRZUEVfVkhPU1RfVVNF Ul9CTEtfU0VSVkVSKQorI2luY2x1ZGUgImJsb2NrL2V4cG9ydC5oIgogCi0vKiB2aG9zdCB1c2Vy IGJsb2NrIGRldmljZSAqLwotc3RydWN0IFZ1QmxvY2tEZXYgewotICAgIE9iamVjdCBwYXJlbnRf b2JqOwotICAgIGNoYXIgKm5vZGVfbmFtZTsKLSAgICBTb2NrZXRBZGRyZXNzICphZGRyOwotICAg IEFpb0NvbnRleHQgKmN0eDsKLSAgICBWdVNlcnZlciB2dV9zZXJ2ZXI7Ci0gICAgYm9vbCBydW5u aW5nOwotICAgIHVpbnQzMl90IGJsa19zaXplOwotICAgIEJsb2NrQmFja2VuZCAqYmFja2VuZDsK LSAgICBRSU9DaGFubmVsU29ja2V0ICpzaW9jOwotICAgIFFUQUlMUV9FTlRSWShWdUJsb2NrRGV2 KSBuZXh0OwotICAgIHN0cnVjdCB2aXJ0aW9fYmxrX2NvbmZpZyBibGtjZmc7Ci0gICAgYm9vbCB3 cml0YWJsZTsKLX07CisvKiBGb3IgYmxvY2svZXhwb3J0L2V4cG9ydC5jICovCitleHRlcm4gY29u c3QgQmxvY2tFeHBvcnREcml2ZXIgYmxrX2V4cF92aG9zdF91c2VyX2JsazsKIAogI2VuZGlmIC8q IFZIT1NUX1VTRVJfQkxLX1NFUlZFUl9IICovCmRpZmYgLS1naXQgYS9ibG9jay9leHBvcnQvZXhw b3J0LmMgYi9ibG9jay9leHBvcnQvZXhwb3J0LmMKaW5kZXggODc1MTZkMWUwNS4uZDBjNzU5MDkx MSAxMDA2NDQKLS0tIGEvYmxvY2svZXhwb3J0L2V4cG9ydC5jCisrKyBiL2Jsb2NrL2V4cG9ydC9l eHBvcnQuYwpAQCAtMTcsNiArMTcsOSBAQAogI2luY2x1ZGUgInN5c2VtdS9ibG9jay1iYWNrZW5k LmgiCiAjaW5jbHVkZSAiYmxvY2svZXhwb3J0LmgiCiAjaW5jbHVkZSAiYmxvY2svbmJkLmgiCisj aWYgQ09ORklHX0xJTlVYCisjaW5jbHVkZSAiYmxvY2svZXhwb3J0L3Zob3N0LXVzZXItYmxrLXNl cnZlci5oIgorI2VuZGlmCiAjaW5jbHVkZSAicWFwaS9lcnJvci5oIgogI2luY2x1ZGUgInFhcGkv cWFwaS1jb21tYW5kcy1ibG9jay1leHBvcnQuaCIKICNpbmNsdWRlICJxYXBpL3FhcGktZXZlbnRz LWJsb2NrLWV4cG9ydC5oIgpAQCAtMjQsNiArMjcsOSBAQAogCiBzdGF0aWMgY29uc3QgQmxvY2tF eHBvcnREcml2ZXIgKmJsa19leHBfZHJpdmVyc1tdID0gewogICAgICZibGtfZXhwX25iZCwKKyNp ZiBDT05GSUdfTElOVVgKKyAgICAmYmxrX2V4cF92aG9zdF91c2VyX2JsaywKKyNlbmRpZgogfTsK IAogLyogT25seSBhY2Nlc3NlZCBmcm9tIHRoZSBtYWluIHRocmVhZCAqLwpAQCAtMTIzLDcgKzEy OSw3IEBAIEJsb2NrRXhwb3J0ICpibGtfZXhwX2FkZChCbG9ja0V4cG9ydE9wdGlvbnMgKmV4cG9y dCwgRXJyb3IgKiplcnJwKQogICAgIGFzc2VydChkcnYtPmluc3RhbmNlX3NpemUgPj0gc2l6ZW9m KEJsb2NrRXhwb3J0KSk7CiAgICAgZXhwID0gZ19tYWxsb2MwKGRydi0+aW5zdGFuY2Vfc2l6ZSk7 CiAgICAgKmV4cCA9IChCbG9ja0V4cG9ydCkgewotICAgICAgICAuZHJ2ICAgICAgICA9ICZibGtf ZXhwX25iZCwKKyAgICAgICAgLmRydiAgICAgICAgPSBkcnYsCiAgICAgICAgIC5yZWZjb3VudCAg ID0gMSwKICAgICAgICAgLnVzZXJfb3duZWQgPSB0cnVlLAogICAgICAgICAuaWQgICAgICAgICA9 IGdfc3RyZHVwKGV4cG9ydC0+aWQpLApkaWZmIC0tZ2l0IGEvYmxvY2svZXhwb3J0L3Zob3N0LXVz ZXItYmxrLXNlcnZlci5jIGIvYmxvY2svZXhwb3J0L3Zob3N0LXVzZXItYmxrLXNlcnZlci5jCmlu ZGV4IDQ0ZDNjNDVmYTIuLjk5MDhiMzI4N2UgMTAwNjQ0Ci0tLSBhL2Jsb2NrL2V4cG9ydC92aG9z dC11c2VyLWJsay1zZXJ2ZXIuYworKysgYi9ibG9jay9leHBvcnQvdmhvc3QtdXNlci1ibGstc2Vy dmVyLmMKQEAgLTExLDYgKzExLDkgQEAKICAqLwogI2luY2x1ZGUgInFlbXUvb3NkZXAuaCIKICNp bmNsdWRlICJibG9jay9ibG9jay5oIgorI2luY2x1ZGUgImNvbnRyaWIvbGlidmhvc3QtdXNlci9s aWJ2aG9zdC11c2VyLmgiCisjaW5jbHVkZSAic3RhbmRhcmQtaGVhZGVycy9saW51eC92aXJ0aW9f YmxrLmgiCisjaW5jbHVkZSAidXRpbC92aG9zdC11c2VyLXNlcnZlci5oIgogI2luY2x1ZGUgInZo b3N0LXVzZXItYmxrLXNlcnZlci5oIgogI2luY2x1ZGUgInFhcGkvZXJyb3IuaCIKICNpbmNsdWRl ICJxb20vb2JqZWN0X2ludGVyZmFjZXMuaCIKQEAgLTI0LDcgKzI3LDcgQEAgc3RydWN0IHZpcnRp b19ibGtfaW5oZHIgewogICAgIHVuc2lnbmVkIGNoYXIgc3RhdHVzOwogfTsKIAotdHlwZWRlZiBz dHJ1Y3QgVnVCbG9ja1JlcSB7Cit0eXBlZGVmIHN0cnVjdCBWdUJsa1JlcSB7CiAgICAgVnVWaXJ0 cUVsZW1lbnQgZWxlbTsKICAgICBpbnQ2NF90IHNlY3Rvcl9udW07CiAgICAgc2l6ZV90IHNpemU7 CkBAIC0zMiw5ICszNSwxOSBAQCB0eXBlZGVmIHN0cnVjdCBWdUJsb2NrUmVxIHsKICAgICBzdHJ1 Y3QgdmlydGlvX2Jsa19vdXRoZHIgb3V0OwogICAgIFZ1U2VydmVyICpzZXJ2ZXI7CiAgICAgc3Ry dWN0IFZ1VmlydHEgKnZxOwotfSBWdUJsb2NrUmVxOworfSBWdUJsa1JlcTsKIAotc3RhdGljIHZv aWQgdnVfYmxvY2tfcmVxX2NvbXBsZXRlKFZ1QmxvY2tSZXEgKnJlcSkKKy8qIHZob3N0IHVzZXIg YmxvY2sgZGV2aWNlICovCit0eXBlZGVmIHN0cnVjdCB7CisgICAgQmxvY2tFeHBvcnQgZXhwb3J0 OworICAgIFZ1U2VydmVyIHZ1X3NlcnZlcjsKKyAgICB1aW50MzJfdCBibGtfc2l6ZTsKKyAgICBR SU9DaGFubmVsU29ja2V0ICpzaW9jOworICAgIHN0cnVjdCB2aXJ0aW9fYmxrX2NvbmZpZyBibGtj Zmc7CisgICAgYm9vbCB3cml0YWJsZTsKK30gVnVCbGtFeHBvcnQ7CisKK3N0YXRpYyB2b2lkIHZ1 X2Jsa19yZXFfY29tcGxldGUoVnVCbGtSZXEgKnJlcSkKIHsKICAgICBWdURldiAqdnVfZGV2ID0g JnJlcS0+c2VydmVyLT52dV9kZXY7CiAKQEAgLTQ1LDE0ICs1OCw5IEBAIHN0YXRpYyB2b2lkIHZ1 X2Jsb2NrX3JlcV9jb21wbGV0ZShWdUJsb2NrUmVxICpyZXEpCiAgICAgZnJlZShyZXEpOwogfQog Ci1zdGF0aWMgVnVCbG9ja0RldiAqZ2V0X3Z1X2Jsb2NrX2RldmljZV9ieV9zZXJ2ZXIoVnVTZXJ2 ZXIgKnNlcnZlcikKLXsKLSAgICByZXR1cm4gY29udGFpbmVyX29mKHNlcnZlciwgVnVCbG9ja0Rl diwgdnVfc2VydmVyKTsKLX0KLQogc3RhdGljIGludCBjb3JvdXRpbmVfZm4KLXZ1X2Jsb2NrX2Rp c2NhcmRfd3JpdGVfemVyb2VzKFZ1QmxvY2tSZXEgKnJlcSwgc3RydWN0IGlvdmVjICppb3YsCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBpb3ZjbnQsIHVpbnQzMl90IHR5 cGUpCit2dV9ibGtfZGlzY2FyZF93cml0ZV96ZXJvZXMoQmxvY2tCYWNrZW5kICpibGssIHN0cnVj dCBpb3ZlYyAqaW92LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGlvdmNu dCwgdWludDMyX3QgdHlwZSkKIHsKICAgICBzdHJ1Y3QgdmlydGlvX2Jsa19kaXNjYXJkX3dyaXRl X3plcm9lcyBkZXNjOwogICAgIHNzaXplX3Qgc2l6ZSA9IGlvdl90b19idWYoaW92LCBpb3ZjbnQs IDAsICZkZXNjLCBzaXplb2YoZGVzYykpOwpAQCAtNjEsMTYgKzY5LDE0IEBAIHZ1X2Jsb2NrX2Rp c2NhcmRfd3JpdGVfemVyb2VzKFZ1QmxvY2tSZXEgKnJlcSwgc3RydWN0IGlvdmVjICppb3YsCiAg ICAgICAgIHJldHVybiAtRUlOVkFMOwogICAgIH0KIAotICAgIFZ1QmxvY2tEZXYgKnZkZXZfYmxr ID0gZ2V0X3Z1X2Jsb2NrX2RldmljZV9ieV9zZXJ2ZXIocmVxLT5zZXJ2ZXIpOwogICAgIHVpbnQ2 NF90IHJhbmdlWzJdID0geyBsZTY0X3RvX2NwdShkZXNjLnNlY3RvcikgPDwgOSwKICAgICAgICAg ICAgICAgICAgICAgICAgICAgbGUzMl90b19jcHUoZGVzYy5udW1fc2VjdG9ycykgPDwgOSB9Owog ICAgIGlmICh0eXBlID09IFZJUlRJT19CTEtfVF9ESVNDQVJEKSB7Ci0gICAgICAgIGlmIChibGtf Y29fcGRpc2NhcmQodmRldl9ibGstPmJhY2tlbmQsIHJhbmdlWzBdLCByYW5nZVsxXSkgPT0gMCkg eworICAgICAgICBpZiAoYmxrX2NvX3BkaXNjYXJkKGJsaywgcmFuZ2VbMF0sIHJhbmdlWzFdKSA9 PSAwKSB7CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAo dHlwZSA9PSBWSVJUSU9fQkxLX1RfV1JJVEVfWkVST0VTKSB7Ci0gICAgICAgIGlmIChibGtfY29f cHdyaXRlX3plcm9lcyh2ZGV2X2Jsay0+YmFja2VuZCwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHJhbmdlWzBdLCByYW5nZVsxXSwgMCkgPT0gMCkgeworICAgICAgICBpZiAoYmxr X2NvX3B3cml0ZV96ZXJvZXMoYmxrLCByYW5nZVswXSwgcmFuZ2VbMV0sIDApID09IDApIHsKICAg ICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CiAgICAgfQpAQCAtNzgsMjIgKzg0LDE1IEBA IHZ1X2Jsb2NrX2Rpc2NhcmRfd3JpdGVfemVyb2VzKFZ1QmxvY2tSZXEgKnJlcSwgc3RydWN0IGlv dmVjICppb3YsCiAgICAgcmV0dXJuIC1FSU5WQUw7CiB9CiAKLXN0YXRpYyBpbnQgY29yb3V0aW5l X2ZuIHZ1X2Jsb2NrX2ZsdXNoKFZ1QmxvY2tSZXEgKnJlcSkKK3N0YXRpYyB2b2lkIGNvcm91dGlu ZV9mbiB2dV9ibGtfdmlydGlvX3Byb2Nlc3NfcmVxKHZvaWQgKm9wYXF1ZSkKIHsKLSAgICBWdUJs b2NrRGV2ICp2ZGV2X2JsayA9IGdldF92dV9ibG9ja19kZXZpY2VfYnlfc2VydmVyKHJlcS0+c2Vy dmVyKTsKLSAgICBCbG9ja0JhY2tlbmQgKmJhY2tlbmQgPSB2ZGV2X2Jsay0+YmFja2VuZDsKLSAg ICByZXR1cm4gYmxrX2NvX2ZsdXNoKGJhY2tlbmQpOwotfQotCi1zdGF0aWMgdm9pZCBjb3JvdXRp bmVfZm4gdnVfYmxvY2tfdmlydGlvX3Byb2Nlc3NfcmVxKHZvaWQgKm9wYXF1ZSkKLXsKLSAgICBW dUJsb2NrUmVxICpyZXEgPSBvcGFxdWU7CisgICAgVnVCbGtSZXEgKnJlcSA9IG9wYXF1ZTsKICAg ICBWdVNlcnZlciAqc2VydmVyID0gcmVxLT5zZXJ2ZXI7CiAgICAgVnVWaXJ0cUVsZW1lbnQgKmVs ZW0gPSAmcmVxLT5lbGVtOwogICAgIHVpbnQzMl90IHR5cGU7CiAKLSAgICBWdUJsb2NrRGV2ICp2 ZGV2X2JsayA9IGdldF92dV9ibG9ja19kZXZpY2VfYnlfc2VydmVyKHNlcnZlcik7Ci0gICAgQmxv Y2tCYWNrZW5kICpiYWNrZW5kID0gdmRldl9ibGstPmJhY2tlbmQ7CisgICAgVnVCbGtFeHBvcnQg KnZleHAgPSBjb250YWluZXJfb2Yoc2VydmVyLCBWdUJsa0V4cG9ydCwgdnVfc2VydmVyKTsKKyAg ICBCbG9ja0JhY2tlbmQgKmJsayA9IHZleHAtPmV4cG9ydC5ibGs7CiAKICAgICBzdHJ1Y3QgaW92 ZWMgKmluX2lvdiA9IGVsZW0tPmluX3NnOwogICAgIHN0cnVjdCBpb3ZlYyAqb3V0X2lvdiA9IGVs ZW0tPm91dF9zZzsKQEAgLTEzMywxNiArMTMyLDE5IEBAIHN0YXRpYyB2b2lkIGNvcm91dGluZV9m biB2dV9ibG9ja192aXJ0aW9fcHJvY2Vzc19yZXEodm9pZCAqb3BhcXVlKQogICAgICAgICBib29s IGlzX3dyaXRlID0gdHlwZSAmIFZJUlRJT19CTEtfVF9PVVQ7CiAgICAgICAgIHJlcS0+c2VjdG9y X251bSA9IGxlNjRfdG9fY3B1KHJlcS0+b3V0LnNlY3Rvcik7CiAKLSAgICAgICAgaW50NjRfdCBv ZmZzZXQgPSByZXEtPnNlY3Rvcl9udW0gKiB2ZGV2X2Jsay0+YmxrX3NpemU7CisgICAgICAgIGlm IChpc193cml0ZSAmJiAhdmV4cC0+d3JpdGFibGUpIHsKKyAgICAgICAgICAgIHJlcS0+aW4tPnN0 YXR1cyA9IFZJUlRJT19CTEtfU19JT0VSUjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9 CisKKyAgICAgICAgaW50NjRfdCBvZmZzZXQgPSByZXEtPnNlY3Rvcl9udW0gKiB2ZXhwLT5ibGtf c2l6ZTsKICAgICAgICAgUUVNVUlPVmVjdG9yIHFpb3Y7CiAgICAgICAgIGlmIChpc193cml0ZSkg ewogICAgICAgICAgICAgcWVtdV9pb3ZlY19pbml0X2V4dGVybmFsKCZxaW92LCBvdXRfaW92LCBv dXRfbnVtKTsKLSAgICAgICAgICAgIHJldCA9IGJsa19jb19wd3JpdGV2KGJhY2tlbmQsIG9mZnNl dCwgcWlvdi5zaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnFpb3YsIDAp OworICAgICAgICAgICAgcmV0ID0gYmxrX2NvX3B3cml0ZXYoYmxrLCBvZmZzZXQsIHFpb3Yuc2l6 ZSwgJnFpb3YsIDApOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgcWVtdV9pb3ZlY19p bml0X2V4dGVybmFsKCZxaW92LCBpbl9pb3YsIGluX251bSk7Ci0gICAgICAgICAgICByZXQgPSBi bGtfY29fcHJlYWR2KGJhY2tlbmQsIG9mZnNldCwgcWlvdi5zaXplLAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAmcWlvdiwgMCk7CisgICAgICAgICAgICByZXQgPSBibGtfY29fcHJl YWR2KGJsaywgb2Zmc2V0LCBxaW92LnNpemUsICZxaW92LCAwKTsKICAgICAgICAgfQogICAgICAg ICBpZiAocmV0ID49IDApIHsKICAgICAgICAgICAgIHJlcS0+aW4tPnN0YXR1cyA9IFZJUlRJT19C TEtfU19PSzsKQEAgLTE1Miw3ICsxNTQsNyBAQCBzdGF0aWMgdm9pZCBjb3JvdXRpbmVfZm4gdnVf YmxvY2tfdmlydGlvX3Byb2Nlc3NfcmVxKHZvaWQgKm9wYXF1ZSkKICAgICAgICAgYnJlYWs7CiAg ICAgfQogICAgIGNhc2UgVklSVElPX0JMS19UX0ZMVVNIOgotICAgICAgICBpZiAodnVfYmxvY2tf Zmx1c2gocmVxKSA9PSAwKSB7CisgICAgICAgIGlmIChibGtfY29fZmx1c2goYmxrKSA9PSAwKSB7 CiAgICAgICAgICAgICByZXEtPmluLT5zdGF0dXMgPSBWSVJUSU9fQkxLX1NfT0s7CiAgICAgICAg IH0gZWxzZSB7CiAgICAgICAgICAgICByZXEtPmluLT5zdGF0dXMgPSBWSVJUSU9fQkxLX1NfSU9F UlI7CkBAIC0xNjksOCArMTcxLDEzIEBAIHN0YXRpYyB2b2lkIGNvcm91dGluZV9mbiB2dV9ibG9j a192aXJ0aW9fcHJvY2Vzc19yZXEodm9pZCAqb3BhcXVlKQogICAgIGNhc2UgVklSVElPX0JMS19U X0RJU0NBUkQ6CiAgICAgY2FzZSBWSVJUSU9fQkxLX1RfV1JJVEVfWkVST0VTOiB7CiAgICAgICAg IGludCByYzsKLSAgICAgICAgcmMgPSB2dV9ibG9ja19kaXNjYXJkX3dyaXRlX3plcm9lcyhyZXEs ICZlbGVtLT5vdXRfc2dbMV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgb3V0X251bSwgdHlwZSk7CisKKyAgICAgICAgaWYgKCF2ZXhwLT53cml0YWJsZSkgewor ICAgICAgICAgICAgcmVxLT5pbi0+c3RhdHVzID0gVklSVElPX0JMS19TX0lPRVJSOworICAgICAg ICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICByYyA9IHZ1X2Jsa19kaXNjYXJkX3dy aXRlX3plcm9lcyhibGssICZlbGVtLT5vdXRfc2dbMV0sIG91dF9udW0sIHR5cGUpOwogICAgICAg ICBpZiAocmMgPT0gMCkgewogICAgICAgICAgICAgcmVxLT5pbi0+c3RhdHVzID0gVklSVElPX0JM S19TX09LOwogICAgICAgICB9IGVsc2UgewpAQCAtMTgzLDIyICsxOTAsMjIgQEAgc3RhdGljIHZv aWQgY29yb3V0aW5lX2ZuIHZ1X2Jsb2NrX3ZpcnRpb19wcm9jZXNzX3JlcSh2b2lkICpvcGFxdWUp CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIHZ1X2Jsb2NrX3JlcV9jb21wbGV0ZShyZXEp OworICAgIHZ1X2Jsa19yZXFfY29tcGxldGUocmVxKTsKICAgICByZXR1cm47CiAKIGVycjoKLSAg ICBmcmVlKGVsZW0pOworICAgIGZyZWUocmVxKTsKIH0KIAotc3RhdGljIHZvaWQgdnVfYmxvY2tf cHJvY2Vzc192cShWdURldiAqdnVfZGV2LCBpbnQgaWR4KQorc3RhdGljIHZvaWQgdnVfYmxrX3By b2Nlc3NfdnEoVnVEZXYgKnZ1X2RldiwgaW50IGlkeCkKIHsKICAgICBWdVNlcnZlciAqc2VydmVy ID0gY29udGFpbmVyX29mKHZ1X2RldiwgVnVTZXJ2ZXIsIHZ1X2Rldik7CiAgICAgVnVWaXJ0cSAq dnEgPSB2dV9nZXRfcXVldWUodnVfZGV2LCBpZHgpOwogCiAgICAgd2hpbGUgKDEpIHsKLSAgICAg ICAgVnVCbG9ja1JlcSAqcmVxOworICAgICAgICBWdUJsa1JlcSAqcmVxOwogCi0gICAgICAgIHJl cSA9IHZ1X3F1ZXVlX3BvcCh2dV9kZXYsIHZxLCBzaXplb2YoVnVCbG9ja1JlcSkpOworICAgICAg ICByZXEgPSB2dV9xdWV1ZV9wb3AodnVfZGV2LCB2cSwgc2l6ZW9mKFZ1QmxrUmVxKSk7CiAgICAg ICAgIGlmICghcmVxKSB7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMjA3LDI2 ICsyMTQsMjYgQEAgc3RhdGljIHZvaWQgdnVfYmxvY2tfcHJvY2Vzc192cShWdURldiAqdnVfZGV2 LCBpbnQgaWR4KQogICAgICAgICByZXEtPnZxID0gdnE7CiAKICAgICAgICAgQ29yb3V0aW5lICpj byA9Ci0gICAgICAgICAgICBxZW11X2Nvcm91dGluZV9jcmVhdGUodnVfYmxvY2tfdmlydGlvX3By b2Nlc3NfcmVxLCByZXEpOworICAgICAgICAgICAgcWVtdV9jb3JvdXRpbmVfY3JlYXRlKHZ1X2Js a192aXJ0aW9fcHJvY2Vzc19yZXEsIHJlcSk7CiAgICAgICAgIHFlbXVfY29yb3V0aW5lX2VudGVy KGNvKTsKICAgICB9CiB9CiAKLXN0YXRpYyB2b2lkIHZ1X2Jsb2NrX3F1ZXVlX3NldF9zdGFydGVk KFZ1RGV2ICp2dV9kZXYsIGludCBpZHgsIGJvb2wgc3RhcnRlZCkKK3N0YXRpYyB2b2lkIHZ1X2Js a19xdWV1ZV9zZXRfc3RhcnRlZChWdURldiAqdnVfZGV2LCBpbnQgaWR4LCBib29sIHN0YXJ0ZWQp CiB7CiAgICAgVnVWaXJ0cSAqdnE7CiAKICAgICBhc3NlcnQodnVfZGV2KTsKIAogICAgIHZxID0g dnVfZ2V0X3F1ZXVlKHZ1X2RldiwgaWR4KTsKLSAgICB2dV9zZXRfcXVldWVfaGFuZGxlcih2dV9k ZXYsIHZxLCBzdGFydGVkID8gdnVfYmxvY2tfcHJvY2Vzc192cSA6IE5VTEwpOworICAgIHZ1X3Nl dF9xdWV1ZV9oYW5kbGVyKHZ1X2RldiwgdnEsIHN0YXJ0ZWQgPyB2dV9ibGtfcHJvY2Vzc192cSA6 IE5VTEwpOwogfQogCi1zdGF0aWMgdWludDY0X3QgdnVfYmxvY2tfZ2V0X2ZlYXR1cmVzKFZ1RGV2 ICpkZXYpCitzdGF0aWMgdWludDY0X3QgdnVfYmxrX2dldF9mZWF0dXJlcyhWdURldiAqZGV2KQog ewogICAgIHVpbnQ2NF90IGZlYXR1cmVzOwogICAgIFZ1U2VydmVyICpzZXJ2ZXIgPSBjb250YWlu ZXJfb2YoZGV2LCBWdVNlcnZlciwgdnVfZGV2KTsKLSAgICBWdUJsb2NrRGV2ICp2ZGV2X2JsayA9 IGdldF92dV9ibG9ja19kZXZpY2VfYnlfc2VydmVyKHNlcnZlcik7CisgICAgVnVCbGtFeHBvcnQg KnZleHAgPSBjb250YWluZXJfb2Yoc2VydmVyLCBWdUJsa0V4cG9ydCwgdnVfc2VydmVyKTsKICAg ICBmZWF0dXJlcyA9IDF1bGwgPDwgVklSVElPX0JMS19GX1NJWkVfTUFYIHwKICAgICAgICAgICAg ICAgIDF1bGwgPDwgVklSVElPX0JMS19GX1NFR19NQVggfAogICAgICAgICAgICAgICAgMXVsbCA8 PCBWSVJUSU9fQkxLX0ZfVE9QT0xPR1kgfApAQCAtMjQwLDM1ICsyNDcsMzUgQEAgc3RhdGljIHVp bnQ2NF90IHZ1X2Jsb2NrX2dldF9mZWF0dXJlcyhWdURldiAqZGV2KQogICAgICAgICAgICAgICAg MXVsbCA8PCBWSVJUSU9fUklOR19GX0VWRU5UX0lEWCB8CiAgICAgICAgICAgICAgICAxdWxsIDw8 IFZIT1NUX1VTRVJfRl9QUk9UT0NPTF9GRUFUVVJFUzsKIAotICAgIGlmICghdmRldl9ibGstPndy aXRhYmxlKSB7CisgICAgaWYgKCF2ZXhwLT53cml0YWJsZSkgewogICAgICAgICBmZWF0dXJlcyB8 PSAxdWxsIDw8IFZJUlRJT19CTEtfRl9STzsKICAgICB9CiAKICAgICByZXR1cm4gZmVhdHVyZXM7 CiB9CiAKLXN0YXRpYyB1aW50NjRfdCB2dV9ibG9ja19nZXRfcHJvdG9jb2xfZmVhdHVyZXMoVnVE ZXYgKmRldikKK3N0YXRpYyB1aW50NjRfdCB2dV9ibGtfZ2V0X3Byb3RvY29sX2ZlYXR1cmVzKFZ1 RGV2ICpkZXYpCiB7CiAgICAgcmV0dXJuIDF1bGwgPDwgVkhPU1RfVVNFUl9QUk9UT0NPTF9GX0NP TkZJRyB8CiAgICAgICAgICAgIDF1bGwgPDwgVkhPU1RfVVNFUl9QUk9UT0NPTF9GX0lORkxJR0hU X1NITUZEOwogfQogCiBzdGF0aWMgaW50Ci12dV9ibG9ja19nZXRfY29uZmlnKFZ1RGV2ICp2dV9k ZXYsIHVpbnQ4X3QgKmNvbmZpZywgdWludDMyX3QgbGVuKQordnVfYmxrX2dldF9jb25maWcoVnVE ZXYgKnZ1X2RldiwgdWludDhfdCAqY29uZmlnLCB1aW50MzJfdCBsZW4pCiB7CisgICAgLyogVE9E TyBibGtjZmcgbXVzdCBiZSBsaXR0bGUtZW5kaWFuIGZvciBWSVJUSU8gMS4wICovCiAgICAgVnVT ZXJ2ZXIgKnNlcnZlciA9IGNvbnRhaW5lcl9vZih2dV9kZXYsIFZ1U2VydmVyLCB2dV9kZXYpOwot ICAgIFZ1QmxvY2tEZXYgKnZkZXZfYmxrID0gZ2V0X3Z1X2Jsb2NrX2RldmljZV9ieV9zZXJ2ZXIo c2VydmVyKTsKLSAgICBtZW1jcHkoY29uZmlnLCAmdmRldl9ibGstPmJsa2NmZywgbGVuKTsKLQor ICAgIFZ1QmxrRXhwb3J0ICp2ZXhwID0gY29udGFpbmVyX29mKHNlcnZlciwgVnVCbGtFeHBvcnQs IHZ1X3NlcnZlcik7CisgICAgbWVtY3B5KGNvbmZpZywgJnZleHAtPmJsa2NmZywgbGVuKTsKICAg ICByZXR1cm4gMDsKIH0KIAogc3RhdGljIGludAotdnVfYmxvY2tfc2V0X2NvbmZpZyhWdURldiAq dnVfZGV2LCBjb25zdCB1aW50OF90ICpkYXRhLAordnVfYmxrX3NldF9jb25maWcoVnVEZXYgKnZ1 X2RldiwgY29uc3QgdWludDhfdCAqZGF0YSwKICAgICAgICAgICAgICAgICAgICAgdWludDMyX3Qg b2Zmc2V0LCB1aW50MzJfdCBzaXplLCB1aW50MzJfdCBmbGFncykKIHsKICAgICBWdVNlcnZlciAq c2VydmVyID0gY29udGFpbmVyX29mKHZ1X2RldiwgVnVTZXJ2ZXIsIHZ1X2Rldik7Ci0gICAgVnVC bG9ja0RldiAqdmRldl9ibGsgPSBnZXRfdnVfYmxvY2tfZGV2aWNlX2J5X3NlcnZlcihzZXJ2ZXIp OworICAgIFZ1QmxrRXhwb3J0ICp2ZXhwID0gY29udGFpbmVyX29mKHNlcnZlciwgVnVCbGtFeHBv cnQsIHZ1X3NlcnZlcik7CiAgICAgdWludDhfdCB3Y2U7CiAKICAgICAvKiBkb24ndCBzdXBwb3J0 IGxpdmUgbWlncmF0aW9uICovCkBAIC0yODIsOCArMjg5LDggQEAgdnVfYmxvY2tfc2V0X2NvbmZp ZyhWdURldiAqdnVfZGV2LCBjb25zdCB1aW50OF90ICpkYXRhLAogICAgIH0KIAogICAgIHdjZSA9 ICpkYXRhOwotICAgIHZkZXZfYmxrLT5ibGtjZmcud2NlID0gd2NlOwotICAgIGJsa19zZXRfZW5h YmxlX3dyaXRlX2NhY2hlKHZkZXZfYmxrLT5iYWNrZW5kLCB3Y2UpOworICAgIHZleHAtPmJsa2Nm Zy53Y2UgPSB3Y2U7CisgICAgYmxrX3NldF9lbmFibGVfd3JpdGVfY2FjaGUodmV4cC0+ZXhwb3J0 LmJsaywgd2NlKTsKICAgICByZXR1cm4gMDsKIH0KIApAQCAtMjk1LDcgKzMwMiw3IEBAIHZ1X2Js b2NrX3NldF9jb25maWcoVnVEZXYgKnZ1X2RldiwgY29uc3QgdWludDhfdCAqZGF0YSwKICAqIG9m IHZ1X3Byb2Nlc3NfbWVzc2FnZS4KICAqCiAgKi8KLXN0YXRpYyBpbnQgdnVfYmxvY2tfcHJvY2Vz c19tc2coVnVEZXYgKmRldiwgVmhvc3RVc2VyTXNnICp2bXNnLCBpbnQgKmRvX3JlcGx5KQorc3Rh dGljIGludCB2dV9ibGtfcHJvY2Vzc19tc2coVnVEZXYgKmRldiwgVmhvc3RVc2VyTXNnICp2bXNn LCBpbnQgKmRvX3JlcGx5KQogewogICAgIGlmICh2bXNnLT5yZXF1ZXN0ID09IFZIT1NUX1VTRVJf Tk9ORSkgewogICAgICAgICBkZXYtPnBhbmljKGRldiwgImRpc2Nvbm5lY3QiKTsKQEAgLTMwNCwy OSArMzExLDI5IEBAIHN0YXRpYyBpbnQgdnVfYmxvY2tfcHJvY2Vzc19tc2coVnVEZXYgKmRldiwg Vmhvc3RVc2VyTXNnICp2bXNnLCBpbnQgKmRvX3JlcGx5KQogICAgIHJldHVybiBmYWxzZTsKIH0K IAotc3RhdGljIGNvbnN0IFZ1RGV2SWZhY2UgdnVfYmxvY2tfaWZhY2UgPSB7Ci0gICAgLmdldF9m ZWF0dXJlcyAgICAgICAgICA9IHZ1X2Jsb2NrX2dldF9mZWF0dXJlcywKLSAgICAucXVldWVfc2V0 X3N0YXJ0ZWQgICAgID0gdnVfYmxvY2tfcXVldWVfc2V0X3N0YXJ0ZWQsCi0gICAgLmdldF9wcm90 b2NvbF9mZWF0dXJlcyA9IHZ1X2Jsb2NrX2dldF9wcm90b2NvbF9mZWF0dXJlcywKLSAgICAuZ2V0 X2NvbmZpZyAgICAgICAgICAgID0gdnVfYmxvY2tfZ2V0X2NvbmZpZywKLSAgICAuc2V0X2NvbmZp ZyAgICAgICAgICAgID0gdnVfYmxvY2tfc2V0X2NvbmZpZywKLSAgICAucHJvY2Vzc19tc2cgICAg ICAgICAgID0gdnVfYmxvY2tfcHJvY2Vzc19tc2csCitzdGF0aWMgY29uc3QgVnVEZXZJZmFjZSB2 dV9ibGtfaWZhY2UgPSB7CisgICAgLmdldF9mZWF0dXJlcyAgICAgICAgICA9IHZ1X2Jsa19nZXRf ZmVhdHVyZXMsCisgICAgLnF1ZXVlX3NldF9zdGFydGVkICAgICA9IHZ1X2Jsa19xdWV1ZV9zZXRf c3RhcnRlZCwKKyAgICAuZ2V0X3Byb3RvY29sX2ZlYXR1cmVzID0gdnVfYmxrX2dldF9wcm90b2Nv bF9mZWF0dXJlcywKKyAgICAuZ2V0X2NvbmZpZyAgICAgICAgICAgID0gdnVfYmxrX2dldF9jb25m aWcsCisgICAgLnNldF9jb25maWcgICAgICAgICAgICA9IHZ1X2Jsa19zZXRfY29uZmlnLAorICAg IC5wcm9jZXNzX21zZyAgICAgICAgICAgPSB2dV9ibGtfcHJvY2Vzc19tc2csCiB9OwogCiBzdGF0 aWMgdm9pZCBibGtfYWlvX2F0dGFjaGVkKEFpb0NvbnRleHQgKmN0eCwgdm9pZCAqb3BhcXVlKQog ewotICAgIFZ1QmxvY2tEZXYgKnZ1Yl9kZXYgPSBvcGFxdWU7Ci0gICAgdmhvc3RfdXNlcl9zZXJ2 ZXJfYXR0YWNoX2Fpb19jb250ZXh0KCZ2dWJfZGV2LT52dV9zZXJ2ZXIsIGN0eCk7CisgICAgVnVC bGtFeHBvcnQgKnZleHAgPSBvcGFxdWU7CisgICAgdmhvc3RfdXNlcl9zZXJ2ZXJfYXR0YWNoX2Fp b19jb250ZXh0KCZ2ZXhwLT52dV9zZXJ2ZXIsIGN0eCk7CiB9CiAKIHN0YXRpYyB2b2lkIGJsa19h aW9fZGV0YWNoKHZvaWQgKm9wYXF1ZSkKIHsKLSAgICBWdUJsb2NrRGV2ICp2dWJfZGV2ID0gb3Bh cXVlOwotICAgIHZob3N0X3VzZXJfc2VydmVyX2RldGFjaF9haW9fY29udGV4dCgmdnViX2Rldi0+ dnVfc2VydmVyKTsKKyAgICBWdUJsa0V4cG9ydCAqdmV4cCA9IG9wYXF1ZTsKKyAgICB2aG9zdF91 c2VyX3NlcnZlcl9kZXRhY2hfYWlvX2NvbnRleHQoJnZleHAtPnZ1X3NlcnZlcik7CiB9CiAKIHN0 YXRpYyB2b2lkCi12dV9ibG9ja19pbml0aWFsaXplX2NvbmZpZyhCbG9ja0RyaXZlclN0YXRlICpi cywKK3Z1X2Jsa19pbml0aWFsaXplX2NvbmZpZyhCbG9ja0RyaXZlclN0YXRlICpicywKICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB2aXJ0aW9fYmxrX2NvbmZpZyAqY29uZmlnLCB1 aW50MzJfdCBibGtfc2l6ZSkKIHsKICAgICBjb25maWctPmNhcGFjaXR5ID0gYmRydl9nZXRsZW5n dGgoYnMpID4+IEJEUlZfU0VDVE9SX0JJVFM7CkBAIC0zNDMsMjkwICszNTAsNzggQEAgdnVfYmxv Y2tfaW5pdGlhbGl6ZV9jb25maWcoQmxvY2tEcml2ZXJTdGF0ZSAqYnMsCiAgICAgY29uZmlnLT5t YXhfd3JpdGVfemVyb2VzX3NlZyA9IDE7CiB9CiAKLXN0YXRpYyBWdUJsb2NrRGV2ICp2dV9ibG9j a19pbml0KFZ1QmxvY2tEZXYgKnZ1X2Jsb2NrX2RldmljZSwgRXJyb3IgKiplcnJwKQorc3RhdGlj IHZvaWQgdnVfYmxrX2V4cF9yZXF1ZXN0X3NodXRkb3duKEJsb2NrRXhwb3J0ICpleHApCiB7Cisg ICAgVnVCbGtFeHBvcnQgKnZleHAgPSBjb250YWluZXJfb2YoZXhwLCBWdUJsa0V4cG9ydCwgZXhw b3J0KTsKIAotICAgIEJsb2NrQmFja2VuZCAqYmxrOwotICAgIEVycm9yICpsb2NhbF9lcnJvciA9 IE5VTEw7Ci0gICAgY29uc3QgY2hhciAqbm9kZV9uYW1lID0gdnVfYmxvY2tfZGV2aWNlLT5ub2Rl X25hbWU7Ci0gICAgYm9vbCB3cml0YWJsZSA9IHZ1X2Jsb2NrX2RldmljZS0+d3JpdGFibGU7Ci0g ICAgdWludDY0X3QgcGVybSA9IEJMS19QRVJNX0NPTlNJU1RFTlRfUkVBRDsKLSAgICBpbnQgcmV0 OwotCi0gICAgQWlvQ29udGV4dCAqY3R4OwotCi0gICAgQmxvY2tEcml2ZXJTdGF0ZSAqYnMgPSBi ZHJ2X2xvb2t1cF9icyhub2RlX25hbWUsIG5vZGVfbmFtZSwgJmxvY2FsX2Vycm9yKTsKLQotICAg IGlmICghYnMpIHsKLSAgICAgICAgZXJyb3JfcHJvcGFnYXRlKGVycnAsIGxvY2FsX2Vycm9yKTsK LSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotCi0gICAgaWYgKGJkcnZfaXNfcmVhZF9vbmx5 KGJzKSkgewotICAgICAgICB3cml0YWJsZSA9IGZhbHNlOwotICAgIH0KLQotICAgIGlmICh3cml0 YWJsZSkgewotICAgICAgICBwZXJtIHw9IEJMS19QRVJNX1dSSVRFOwotICAgIH0KLQotICAgIGN0 eCA9IGJkcnZfZ2V0X2Fpb19jb250ZXh0KGJzKTsKLSAgICBhaW9fY29udGV4dF9hY3F1aXJlKGN0 eCk7Ci0gICAgYmRydl9pbnZhbGlkYXRlX2NhY2hlKGJzLCBOVUxMKTsKLSAgICBhaW9fY29udGV4 dF9yZWxlYXNlKGN0eCk7Ci0KLSAgICAvKgotICAgICAqIERvbid0IGFsbG93IHJlc2l6ZSB3aGls ZSB0aGUgdmhvc3QgdXNlciBzZXJ2ZXIgaXMgcnVubmluZywKLSAgICAgKiBvdGhlcndpc2Ugd2Ug ZG9uJ3QgY2FyZSB3aGF0IGhhcHBlbnMgd2l0aCB0aGUgbm9kZS4KLSAgICAgKi8KLSAgICBibGsg PSBibGtfbmV3KGJkcnZfZ2V0X2Fpb19jb250ZXh0KGJzKSwgcGVybSwKLSAgICAgICAgICAgICAg ICAgIEJMS19QRVJNX0NPTlNJU1RFTlRfUkVBRCB8IEJMS19QRVJNX1dSSVRFX1VOQ0hBTkdFRCB8 Ci0gICAgICAgICAgICAgICAgICBCTEtfUEVSTV9XUklURSB8IEJMS19QRVJNX0dSQVBIX01PRCk7 Ci0gICAgcmV0ID0gYmxrX2luc2VydF9icyhibGssIGJzLCBlcnJwKTsKLQotICAgIGlmIChyZXQg PCAwKSB7Ci0gICAgICAgIGdvdG8gZmFpbDsKLSAgICB9Ci0KLSAgICBibGtfc2V0X2VuYWJsZV93 cml0ZV9jYWNoZShibGssIGZhbHNlKTsKLQotICAgIGJsa19zZXRfYWxsb3dfYWlvX2NvbnRleHRf Y2hhbmdlKGJsaywgdHJ1ZSk7Ci0KLSAgICB2dV9ibG9ja19kZXZpY2UtPmJsa2NmZy53Y2UgPSAw OwotICAgIHZ1X2Jsb2NrX2RldmljZS0+YmFja2VuZCA9IGJsazsKLSAgICBpZiAoIXZ1X2Jsb2Nr X2RldmljZS0+YmxrX3NpemUpIHsKLSAgICAgICAgdnVfYmxvY2tfZGV2aWNlLT5ibGtfc2l6ZSA9 IEJEUlZfU0VDVE9SX1NJWkU7Ci0gICAgfQotICAgIHZ1X2Jsb2NrX2RldmljZS0+YmxrY2ZnLmJs a19zaXplID0gdnVfYmxvY2tfZGV2aWNlLT5ibGtfc2l6ZTsKLSAgICBibGtfc2V0X2d1ZXN0X2Js b2NrX3NpemUoYmxrLCB2dV9ibG9ja19kZXZpY2UtPmJsa19zaXplKTsKLSAgICB2dV9ibG9ja19p bml0aWFsaXplX2NvbmZpZyhicywgJnZ1X2Jsb2NrX2RldmljZS0+YmxrY2ZnLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB2dV9ibG9ja19kZXZpY2UtPmJsa19zaXplKTsKLSAg ICByZXR1cm4gdnVfYmxvY2tfZGV2aWNlOwotCi1mYWlsOgotICAgIGJsa191bnJlZihibGspOwot ICAgIHJldHVybiBOVUxMOwotfQotCi1zdGF0aWMgdm9pZCB2dV9ibG9ja19kZWluaXQoVnVCbG9j a0RldiAqdnVfYmxvY2tfZGV2aWNlKQotewotICAgIGlmICh2dV9ibG9ja19kZXZpY2UtPmJhY2tl bmQpIHsKLSAgICAgICAgYmxrX3JlbW92ZV9haW9fY29udGV4dF9ub3RpZmllcih2dV9ibG9ja19k ZXZpY2UtPmJhY2tlbmQsIGJsa19haW9fYXR0YWNoZWQsCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgYmxrX2Fpb19kZXRhY2gsIHZ1X2Jsb2NrX2RldmljZSk7Ci0gICAg fQotCi0gICAgYmxrX3VucmVmKHZ1X2Jsb2NrX2RldmljZS0+YmFja2VuZCk7Ci19Ci0KLXN0YXRp YyB2b2lkIHZob3N0X3VzZXJfYmxrX3NlcnZlcl9zdG9wKFZ1QmxvY2tEZXYgKnZ1X2Jsb2NrX2Rl dmljZSkKLXsKLSAgICB2aG9zdF91c2VyX3NlcnZlcl9zdG9wKCZ2dV9ibG9ja19kZXZpY2UtPnZ1 X3NlcnZlcik7Ci0gICAgdnVfYmxvY2tfZGVpbml0KHZ1X2Jsb2NrX2RldmljZSk7Ci19Ci0KLXN0 YXRpYyB2b2lkIHZob3N0X3VzZXJfYmxrX3NlcnZlcl9zdGFydChWdUJsb2NrRGV2ICp2dV9ibG9j a19kZXZpY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXJyb3Ig KiplcnJwKQotewotICAgIEFpb0NvbnRleHQgKmN0eDsKLSAgICBTb2NrZXRBZGRyZXNzICphZGRy ID0gdnVfYmxvY2tfZGV2aWNlLT5hZGRyOwotCi0gICAgaWYgKCF2dV9ibG9ja19pbml0KHZ1X2Js b2NrX2RldmljZSwgZXJycCkpIHsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGN0eCA9 IGJkcnZfZ2V0X2Fpb19jb250ZXh0KGJsa19icyh2dV9ibG9ja19kZXZpY2UtPmJhY2tlbmQpKTsK LQotICAgIGlmICghdmhvc3RfdXNlcl9zZXJ2ZXJfc3RhcnQoJnZ1X2Jsb2NrX2RldmljZS0+dnVf c2VydmVyLCBhZGRyLCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWSE9T VF9VU0VSX0JMS19NQVhfUVVFVUVTLCAmdnVfYmxvY2tfaWZhY2UsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBlcnJwKSkgewotICAgICAgICBnb3RvIGVycm9yOwotICAgIH0KLQot ICAgIGJsa19hZGRfYWlvX2NvbnRleHRfbm90aWZpZXIodnVfYmxvY2tfZGV2aWNlLT5iYWNrZW5k LCBibGtfYWlvX2F0dGFjaGVkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxr X2Fpb19kZXRhY2gsIHZ1X2Jsb2NrX2RldmljZSk7Ci0gICAgdnVfYmxvY2tfZGV2aWNlLT5ydW5u aW5nID0gdHJ1ZTsKLSAgICByZXR1cm47Ci0KLSBlcnJvcjoKLSAgICB2dV9ibG9ja19kZWluaXQo dnVfYmxvY2tfZGV2aWNlKTsKLX0KLQotc3RhdGljIGJvb2wgdnVfcHJvcF9tb2RpZmlhYmxlKFZ1 QmxvY2tEZXYgKnZ1cywgRXJyb3IgKiplcnJwKQotewotICAgIGlmICh2dXMtPnJ1bm5pbmcpIHsK LSAgICAgICAgICAgIGVycm9yX3NldGcoZXJycCwgIlRoZSBwcm9wZXJ0eSBjYW4ndCBiZSBtb2Rp ZmllZCAiCi0gICAgICAgICAgICAgICAgICAgICAgICJ3aGlsZSB0aGUgc2VydmVyIGlzIHJ1bm5p bmciKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7 Ci19Ci0KLXN0YXRpYyB2b2lkIHZ1X3NldF9ub2RlX25hbWUoT2JqZWN0ICpvYmosIGNvbnN0IGNo YXIgKnZhbHVlLCBFcnJvciAqKmVycnApCi17Ci0gICAgVnVCbG9ja0RldiAqdnVzID0gVkhPU1Rf VVNFUl9CTEtfU0VSVkVSKG9iaik7Ci0KLSAgICBpZiAoIXZ1X3Byb3BfbW9kaWZpYWJsZSh2dXMs IGVycnApKSB7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAodnVzLT5ub2RlX25h bWUpIHsKLSAgICAgICAgZ19mcmVlKHZ1cy0+bm9kZV9uYW1lKTsKLSAgICB9Ci0KLSAgICB2dXMt Pm5vZGVfbmFtZSA9IGdfc3RyZHVwKHZhbHVlKTsKLX0KLQotc3RhdGljIGNoYXIgKnZ1X2dldF9u b2RlX25hbWUoT2JqZWN0ICpvYmosIEVycm9yICoqZXJycCkKLXsKLSAgICBWdUJsb2NrRGV2ICp2 dXMgPSBWSE9TVF9VU0VSX0JMS19TRVJWRVIob2JqKTsKLSAgICByZXR1cm4gZ19zdHJkdXAodnVz LT5ub2RlX25hbWUpOwotfQotCi1zdGF0aWMgdm9pZCBmcmVlX3NvY2tldF9hZGRyKFNvY2tldEFk ZHJlc3MgKmFkZHIpCi17Ci0gICAgICAgIGdfZnJlZShhZGRyLT51LnFfdW5peC5wYXRoKTsKLSAg ICAgICAgZ19mcmVlKGFkZHIpOwotfQotCi1zdGF0aWMgdm9pZCB2dV9zZXRfdW5peF9zb2NrZXQo T2JqZWN0ICpvYmosIGNvbnN0IGNoYXIgKnZhbHVlLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIEVycm9yICoqZXJycCkKLXsKLSAgICBWdUJsb2NrRGV2ICp2dXMgPSBWSE9TVF9VU0VS X0JMS19TRVJWRVIob2JqKTsKLQotICAgIGlmICghdnVfcHJvcF9tb2RpZmlhYmxlKHZ1cywgZXJy cCkpIHsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICh2dXMtPmFkZHIpIHsKLSAg ICAgICAgZnJlZV9zb2NrZXRfYWRkcih2dXMtPmFkZHIpOwotICAgIH0KLQotICAgIFNvY2tldEFk ZHJlc3MgKmFkZHIgPSBnX25ldzAoU29ja2V0QWRkcmVzcywgMSk7Ci0gICAgYWRkci0+dHlwZSA9 IFNPQ0tFVF9BRERSRVNTX1RZUEVfVU5JWDsKLSAgICBhZGRyLT51LnFfdW5peC5wYXRoID0gZ19z dHJkdXAodmFsdWUpOwotICAgIHZ1cy0+YWRkciA9IGFkZHI7CisgICAgdmhvc3RfdXNlcl9zZXJ2 ZXJfc3RvcCgmdmV4cC0+dnVfc2VydmVyKTsKIH0KIAotc3RhdGljIGNoYXIgKnZ1X2dldF91bml4 X3NvY2tldChPYmplY3QgKm9iaiwgRXJyb3IgKiplcnJwKQorc3RhdGljIGludCB2dV9ibGtfZXhw X2NyZWF0ZShCbG9ja0V4cG9ydCAqZXhwLCBCbG9ja0V4cG9ydE9wdGlvbnMgKm9wdHMsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIEVycm9yICoqZXJycCkKIHsKLSAgICBWdUJsb2NrRGV2 ICp2dXMgPSBWSE9TVF9VU0VSX0JMS19TRVJWRVIob2JqKTsKLSAgICByZXR1cm4gZ19zdHJkdXAo dnVzLT5hZGRyLT51LnFfdW5peC5wYXRoKTsKLX0KLQotc3RhdGljIGJvb2wgdnVfZ2V0X2Jsb2Nr X3dyaXRhYmxlKE9iamVjdCAqb2JqLCBFcnJvciAqKmVycnApCi17Ci0gICAgVnVCbG9ja0RldiAq dnVzID0gVkhPU1RfVVNFUl9CTEtfU0VSVkVSKG9iaik7Ci0gICAgcmV0dXJuIHZ1cy0+d3JpdGFi bGU7Ci19Ci0KLXN0YXRpYyB2b2lkIHZ1X3NldF9ibG9ja193cml0YWJsZShPYmplY3QgKm9iaiwg Ym9vbCB2YWx1ZSwgRXJyb3IgKiplcnJwKQotewotICAgIFZ1QmxvY2tEZXYgKnZ1cyA9IFZIT1NU X1VTRVJfQkxLX1NFUlZFUihvYmopOwotCi0gICAgaWYgKCF2dV9wcm9wX21vZGlmaWFibGUodnVz LCBlcnJwKSkgewotICAgICAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHZ1cy0+d3JpdGFi bGUgPSB2YWx1ZTsKLX0KLQotc3RhdGljIHZvaWQgdnVfZ2V0X2Jsa19zaXplKE9iamVjdCAqb2Jq LCBWaXNpdG9yICp2LCBjb25zdCBjaGFyICpuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHZvaWQgKm9wYXF1ZSwgRXJyb3IgKiplcnJwKQotewotICAgIFZ1QmxvY2tEZXYgKnZ1cyA9 IFZIT1NUX1VTRVJfQkxLX1NFUlZFUihvYmopOwotICAgIHVpbnQzMl90IHZhbHVlID0gdnVzLT5i bGtfc2l6ZTsKLQotICAgIHZpc2l0X3R5cGVfdWludDMyKHYsIG5hbWUsICZ2YWx1ZSwgZXJycCk7 Ci19Ci0KLXN0YXRpYyB2b2lkIHZ1X3NldF9ibGtfc2l6ZShPYmplY3QgKm9iaiwgVmlzaXRvciAq diwgY29uc3QgY2hhciAqbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpv cGFxdWUsIEVycm9yICoqZXJycCkKLXsKLSAgICBWdUJsb2NrRGV2ICp2dXMgPSBWSE9TVF9VU0VS X0JMS19TRVJWRVIob2JqKTsKLQorICAgIFZ1QmxrRXhwb3J0ICp2ZXhwID0gY29udGFpbmVyX29m KGV4cCwgVnVCbGtFeHBvcnQsIGV4cG9ydCk7CisgICAgQmxvY2tFeHBvcnRPcHRpb25zVmhvc3RV c2VyQmxrICp2dV9vcHRzID0gJm9wdHMtPnUudmhvc3RfdXNlcl9ibGs7CisgICAgU29ja2V0QWRk cmVzcyBhZGRyID0geworICAgICAgICAudHlwZSA9IFNPQ0tFVF9BRERSRVNTX1RZUEVfVU5JWCwK KyAgICAgICAgLnUucV91bml4LnBhdGggPSB2dV9vcHRzLT5oYXNfdW5peF9zb2NrZXQgPworICAg ICAgICAgICAgICAgICAgICAgICAgIHZ1X29wdHMtPnVuaXhfc29ja2V0IDoKKyAgICAgICAgICAg ICAgICAgICAgICAgICBOVUxMLAorICAgIH07CiAgICAgRXJyb3IgKmxvY2FsX2VyciA9IE5VTEw7 Ci0gICAgdWludDMyX3QgdmFsdWU7CisgICAgdWludDY0X3QgbG9naWNhbF9ibG9ja19zaXplOwog Ci0gICAgaWYgKCF2dV9wcm9wX21vZGlmaWFibGUodnVzLCBlcnJwKSkgewotICAgICAgICAgICAg cmV0dXJuOworICAgIGlmICghdnVfb3B0cy0+aGFzX3VuaXhfc29ja2V0KSB7CisgICAgICAgIGVy cm9yX3NldGcoZXJycCwgIk1pc3NpbmcgdW5peC1zb2NrZXQgcGF0aCB0byBsaXN0ZW4gb24iKTsK KyAgICAgICAgcmV0dXJuIC1FSU5WQUw7CiAgICAgfQogCi0gICAgdmlzaXRfdHlwZV91aW50MzIo diwgbmFtZSwgJnZhbHVlLCAmbG9jYWxfZXJyKTsKLSAgICBpZiAobG9jYWxfZXJyKSB7Ci0gICAg ICAgIGdvdG8gb3V0OwotICAgIH0KKyAgICB2ZXhwLT53cml0YWJsZSA9IG9wdHMtPndyaXRhYmxl OworICAgIHZleHAtPmJsa2NmZy53Y2UgPSAwOwogCi0gICAgY2hlY2tfYmxvY2tfc2l6ZShvYmpl Y3RfZ2V0X3R5cGVuYW1lKG9iaiksIG5hbWUsIHZhbHVlLCAmbG9jYWxfZXJyKTsKKyAgICBpZiAo dnVfb3B0cy0+aGFzX2xvZ2ljYWxfYmxvY2tfc2l6ZSkgeworICAgICAgICBsb2dpY2FsX2Jsb2Nr X3NpemUgPSB2dV9vcHRzLT5sb2dpY2FsX2Jsb2NrX3NpemU7CisgICAgfSBlbHNlIHsKKyAgICAg ICAgbG9naWNhbF9ibG9ja19zaXplID0gQkRSVl9TRUNUT1JfU0laRTsKKyAgICB9CisgICAgY2hl Y2tfYmxvY2tfc2l6ZShleHAtPmlkLCAibG9naWNhbC1ibG9jay1zaXplIiwgbG9naWNhbF9ibG9j a19zaXplLAorICAgICAgICAgICAgICAgICAgICAgJmxvY2FsX2Vycik7CiAgICAgaWYgKGxvY2Fs X2VycikgewotICAgICAgICBnb3RvIG91dDsKKyAgICAgICAgZXJyb3JfcHJvcGFnYXRlKGVycnAs IGxvY2FsX2Vycik7CisgICAgICAgIHJldHVybiAtRUlOVkFMOworICAgIH0KKyAgICB2ZXhwLT5i bGtfc2l6ZSA9IGxvZ2ljYWxfYmxvY2tfc2l6ZTsKKyAgICBibGtfc2V0X2d1ZXN0X2Jsb2NrX3Np emUoZXhwLT5ibGssIGxvZ2ljYWxfYmxvY2tfc2l6ZSk7CisgICAgdnVfYmxrX2luaXRpYWxpemVf Y29uZmlnKGJsa19icyhleHAtPmJsayksICZ2ZXhwLT5ibGtjZmcsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgbG9naWNhbF9ibG9ja19zaXplKTsKKworICAgIGJsa19zZXRfYWxsb3df YWlvX2NvbnRleHRfY2hhbmdlKGV4cC0+YmxrLCB0cnVlKTsKKyAgICBibGtfYWRkX2Fpb19jb250 ZXh0X25vdGlmaWVyKGV4cC0+YmxrLCBibGtfYWlvX2F0dGFjaGVkLCBibGtfYWlvX2RldGFjaCwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZleHApOworCisgICAgaWYgKCF2aG9z dF91c2VyX3NlcnZlcl9zdGFydCgmdmV4cC0+dnVfc2VydmVyLCAmYWRkciwgZXhwLT5jdHgsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWSE9TVF9VU0VSX0JMS19NQVhfUVVFVUVT LCAmdnVfYmxrX2lmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJycCkp IHsKKyAgICAgICAgYmxrX3JlbW92ZV9haW9fY29udGV4dF9ub3RpZmllcihleHAtPmJsaywgYmxr X2Fpb19hdHRhY2hlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi bGtfYWlvX2RldGFjaCwgdmV4cCk7CisgICAgICAgIHJldHVybiAtRUFERFJOT1RBVkFJTDsKICAg ICB9CiAKLSAgICB2dXMtPmJsa19zaXplID0gdmFsdWU7Ci0KLW91dDoKLSAgICBlcnJvcl9wcm9w YWdhdGUoZXJycCwgbG9jYWxfZXJyKTsKLX0KLQotc3RhdGljIHZvaWQgdmhvc3RfdXNlcl9ibGtf c2VydmVyX2luc3RhbmNlX2ZpbmFsaXplKE9iamVjdCAqb2JqKQotewotICAgIFZ1QmxvY2tEZXYg KnZ1YiA9IFZIT1NUX1VTRVJfQkxLX1NFUlZFUihvYmopOwotCi0gICAgdmhvc3RfdXNlcl9ibGtf c2VydmVyX3N0b3AodnViKTsKLQotICAgIC8qCi0gICAgICogVW5saWtlIG9iamVjdF9wcm9wZXJ0 eV9hZGRfc3RyLCBvYmplY3RfY2xhc3NfcHJvcGVydHlfYWRkX3N0cgotICAgICAqIGRvZXNuJ3Qg aGF2ZSBhIHJlbGVhc2UgbWV0aG9kLiBUaHVzIG1hbnVhbCBtZW1vcnkgZnJlZWluZyBpcwotICAg ICAqIG5lZWRlZC4KLSAgICAgKi8KLSAgICBmcmVlX3NvY2tldF9hZGRyKHZ1Yi0+YWRkcik7Ci0g ICAgZ19mcmVlKHZ1Yi0+bm9kZV9uYW1lKTsKLX0KLQotc3RhdGljIHZvaWQgdmhvc3RfdXNlcl9i bGtfc2VydmVyX2NvbXBsZXRlKFVzZXJDcmVhdGFibGUgKm9iaiwgRXJyb3IgKiplcnJwKQotewot ICAgIFZ1QmxvY2tEZXYgKnZ1YiA9IFZIT1NUX1VTRVJfQkxLX1NFUlZFUihvYmopOwotCi0gICAg dmhvc3RfdXNlcl9ibGtfc2VydmVyX3N0YXJ0KHZ1YiwgZXJycCk7CisgICAgcmV0dXJuIDA7CiB9 CiAKLXN0YXRpYyB2b2lkIHZob3N0X3VzZXJfYmxrX3NlcnZlcl9jbGFzc19pbml0KE9iamVjdENs YXNzICprbGFzcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHZvaWQgKmNsYXNzX2RhdGEpCitzdGF0aWMgdm9pZCB2dV9ibGtfZXhwX2RlbGV0ZShCbG9ja0V4 cG9ydCAqZXhwKQogewotICAgIFVzZXJDcmVhdGFibGVDbGFzcyAqdWNjID0gVVNFUl9DUkVBVEFC TEVfQ0xBU1Moa2xhc3MpOwotICAgIHVjYy0+Y29tcGxldGUgPSB2aG9zdF91c2VyX2Jsa19zZXJ2 ZXJfY29tcGxldGU7Ci0KLSAgICBvYmplY3RfY2xhc3NfcHJvcGVydHlfYWRkX2Jvb2woa2xhc3Ms ICJ3cml0YWJsZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZ1X2dldF9i bG9ja193cml0YWJsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdnVfc2V0 X2Jsb2NrX3dyaXRhYmxlKTsKLQotICAgIG9iamVjdF9jbGFzc19wcm9wZXJ0eV9hZGRfc3RyKGts YXNzLCAibm9kZS1uYW1lIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2dV9n ZXRfbm9kZV9uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZ1X3NldF9u b2RlX25hbWUpOwotCi0gICAgb2JqZWN0X2NsYXNzX3Byb3BlcnR5X2FkZF9zdHIoa2xhc3MsICJ1 bml4LXNvY2tldCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdnVfZ2V0X3Vu aXhfc29ja2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZ1X3NldF91bml4 X3NvY2tldCk7CisgICAgVnVCbGtFeHBvcnQgKnZleHAgPSBjb250YWluZXJfb2YoZXhwLCBWdUJs a0V4cG9ydCwgZXhwb3J0KTsKIAotICAgIG9iamVjdF9jbGFzc19wcm9wZXJ0eV9hZGQoa2xhc3Ms ICJsb2dpY2FsLWJsb2NrLXNpemUiLCAidWludDMyIiwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHZ1X2dldF9ibGtfc2l6ZSwgdnVfc2V0X2Jsa19zaXplLAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgTlVMTCwgTlVMTCk7CisgICAgYmxrX3JlbW92ZV9haW9fY29udGV4dF9u b3RpZmllcihleHAtPmJsaywgYmxrX2Fpb19hdHRhY2hlZCwgYmxrX2Fpb19kZXRhY2gsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXhwKTsKIH0KIAotc3RhdGljIGNvbnN0 IFR5cGVJbmZvIHZob3N0X3VzZXJfYmxrX3NlcnZlcl9pbmZvID0gewotICAgIC5uYW1lID0gVFlQ RV9WSE9TVF9VU0VSX0JMS19TRVJWRVIsCi0gICAgLnBhcmVudCA9IFRZUEVfT0JKRUNULAotICAg IC5pbnN0YW5jZV9zaXplID0gc2l6ZW9mKFZ1QmxvY2tEZXYpLAotICAgIC5pbnN0YW5jZV9maW5h bGl6ZSA9IHZob3N0X3VzZXJfYmxrX3NlcnZlcl9pbnN0YW5jZV9maW5hbGl6ZSwKLSAgICAuY2xh c3NfaW5pdCA9IHZob3N0X3VzZXJfYmxrX3NlcnZlcl9jbGFzc19pbml0LAotICAgIC5pbnRlcmZh Y2VzID0gKEludGVyZmFjZUluZm9bXSkgewotICAgICAgICB7VFlQRV9VU0VSX0NSRUFUQUJMRX0s Ci0gICAgICAgIHt9Ci0gICAgfSwKK2NvbnN0IEJsb2NrRXhwb3J0RHJpdmVyIGJsa19leHBfdmhv c3RfdXNlcl9ibGsgPSB7CisgICAgLnR5cGUgICAgICAgICAgICAgICA9IEJMT0NLX0VYUE9SVF9U WVBFX1ZIT1NUX1VTRVJfQkxLLAorICAgIC5pbnN0YW5jZV9zaXplICAgICAgPSBzaXplb2YoVnVC bGtFeHBvcnQpLAorICAgIC5jcmVhdGUgICAgICAgICAgICAgPSB2dV9ibGtfZXhwX2NyZWF0ZSwK KyAgICAuZGVsZXRlICAgICAgICAgICAgID0gdnVfYmxrX2V4cF9kZWxldGUsCisgICAgLnJlcXVl c3Rfc2h1dGRvd24gICA9IHZ1X2Jsa19leHBfcmVxdWVzdF9zaHV0ZG93biwKIH07Ci0KLXN0YXRp YyB2b2lkIHZob3N0X3VzZXJfYmxrX3NlcnZlcl9yZWdpc3Rlcl90eXBlcyh2b2lkKQotewotICAg IHR5cGVfcmVnaXN0ZXJfc3RhdGljKCZ2aG9zdF91c2VyX2Jsa19zZXJ2ZXJfaW5mbyk7Ci19Ci0K LXR5cGVfaW5pdCh2aG9zdF91c2VyX2Jsa19zZXJ2ZXJfcmVnaXN0ZXJfdHlwZXMpCmRpZmYgLS1n aXQgYS9ibG9jay9leHBvcnQvbWVzb24uYnVpbGQgYi9ibG9jay9leHBvcnQvbWVzb24uYnVpbGQK aW5kZXggNTU4ZWYzNWQzOC4uZWYzYTk1NzZmNyAxMDA2NDQKLS0tIGEvYmxvY2svZXhwb3J0L21l c29uLmJ1aWxkCisrKyBiL2Jsb2NrL2V4cG9ydC9tZXNvbi5idWlsZApAQCAtMSArMSwyIEBACiBi bG9ja19zcy5hZGQoZmlsZXMoJ2V4cG9ydC5jJykpCitibG9ja19zcy5hZGQod2hlbjogJ0NPTkZJ R19MSU5VWCcsIGlmX3RydWU6IGZpbGVzKCd2aG9zdC11c2VyLWJsay1zZXJ2ZXIuYycsICcuLi8u Li9jb250cmliL2xpYnZob3N0LXVzZXIvbGlidmhvc3QtdXNlci5jJykpCmRpZmYgLS1naXQgYS9i bG9jay9tZXNvbi5idWlsZCBiL2Jsb2NrL21lc29uLmJ1aWxkCmluZGV4IGNkNTIxMDRjODQuLjBi MzhkYzM2ZjcgMTAwNjQ0Ci0tLSBhL2Jsb2NrL21lc29uLmJ1aWxkCisrKyBiL2Jsb2NrL21lc29u LmJ1aWxkCkBAIC02MCw3ICs2MCw2IEBAIGJsb2NrX3NzLmFkZCh3aGVuOiAnQ09ORklHX1dJTjMy JywgaWZfdHJ1ZTogZmlsZXMoJ2ZpbGUtd2luMzIuYycsICd3aW4zMi1haW8uYycpCiBibG9ja19z cy5hZGQod2hlbjogJ0NPTkZJR19QT1NJWCcsIGlmX3RydWU6IFtmaWxlcygnZmlsZS1wb3NpeC5j JyksIGNvcmVmLCBpb2tpdF0pCiBibG9ja19zcy5hZGQod2hlbjogJ0NPTkZJR19MSUJJU0NTSScs IGlmX3RydWU6IGZpbGVzKCdpc2NzaS1vcHRzLmMnKSkKIGJsb2NrX3NzLmFkZCh3aGVuOiAnQ09O RklHX0xJTlVYJywgaWZfdHJ1ZTogZmlsZXMoJ252bWUuYycpKQotYmxvY2tfc3MuYWRkKHdoZW46 ICdDT05GSUdfTElOVVgnLCBpZl90cnVlOiBmaWxlcygnZXhwb3J0L3Zob3N0LXVzZXItYmxrLXNl cnZlci5jJywgJy4uL2NvbnRyaWIvbGlidmhvc3QtdXNlci9saWJ2aG9zdC11c2VyLmMnKSkKIGJs b2NrX3NzLmFkZCh3aGVuOiAnQ09ORklHX1JFUExJQ0FUSU9OJywgaWZfdHJ1ZTogZmlsZXMoJ3Jl cGxpY2F0aW9uLmMnKSkKIGJsb2NrX3NzLmFkZCh3aGVuOiAnQ09ORklHX1NIRUVQRE9HJywgaWZf dHJ1ZTogZmlsZXMoJ3NoZWVwZG9nLmMnKSkKIGJsb2NrX3NzLmFkZCh3aGVuOiBbJ0NPTkZJR19M SU5VWF9BSU8nLCBsaWJhaW9dLCBpZl90cnVlOiBmaWxlcygnbGludXgtYWlvLmMnKSkKLS0gCjIu MjYuMgoK