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 DC57DC4346E for ; Thu, 24 Sep 2020 15:48:09 +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 0F70A2344C for ; Thu, 24 Sep 2020 15:48:08 +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="OmwOJSXz" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 0F70A2344C 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]:37346 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kLTTb-0004fn-Ml for qemu-devel@archiver.kernel.org; Thu, 24 Sep 2020 11:48:07 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:45646) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kLSzC-0006Pg-NL for qemu-devel@nongnu.org; Thu, 24 Sep 2020 11:16:44 -0400 Received: from us-smtp-delivery-124.mimecast.com ([216.205.24.124]:32633) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1kLSz6-0003xA-R3 for qemu-devel@nongnu.org; Thu, 24 Sep 2020 11:16:42 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1600960596; 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=zIZj/wieORrZNqV6Knj43krVEYFypt6HxQRZDwMfogQ=; b=OmwOJSXzXrc13eLhERZc3KSba2/ElKAplobj8VCsLz3GbGVPlJ7qfcCFJ2Jr1hPO+0ailz KRihpvvnud1v8a+22vXWYBXZb3Y6sxoA5v3sdS0h7UuiDjATRX7bRYdYl2LQ4eiZ76BVwe 1dDWX6wsUXseiIqooB2b7XjQ+hSl9Ow= 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-17-02Tyw13BM7yRK1MEt0JTiw-1; Thu, 24 Sep 2020 11:16:32 -0400 X-MC-Unique: 02Tyw13BM7yRK1MEt0JTiw-1 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 07AEA800475; Thu, 24 Sep 2020 15:16:31 +0000 (UTC) Received: from localhost (ovpn-114-5.ams2.redhat.com [10.36.114.5]) by smtp.corp.redhat.com (Postfix) with ESMTP id 8791219C66; Thu, 24 Sep 2020 15:16:27 +0000 (UTC) From: Stefan Hajnoczi To: qemu-devel@nongnu.org Subject: [PATCH v2 11/13] block/export: convert vhost-user-blk server to block export API Date: Thu, 24 Sep 2020 16:15:47 +0100 Message-Id: <20200924151549.913737-12-stefanha@redhat.com> In-Reply-To: <20200924151549.913737-1-stefanha@redhat.com> References: <20200924151549.913737-1-stefanha@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.23 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=216.205.24.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 23:02:20 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -15 X-Spam_score: -1.6 X-Spam_bar: - X-Spam_report: (-1.6 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.199, 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 , qemu-block@nongnu.org, Markus Armbruster , Coiby Xu , Max Reitz , Stefan Hajnoczi , Paolo Bonzini 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 Ynk6IFN0ZWZhbiBIYWpub2N6aSA8c3RlZmFuaGFAcmVkaGF0LmNvbT4KLS0tCnYyOgogKiBSZXBs YWNlIHN0ciB1bml4LXNvY2tldCB3aXRoIFNvY2tldEFkZHJlc3MgYWRkciB0byBtYXRjaCBOQkQg YW5kCiAgIHN1cHBvcnQgZmlsZSBkZXNjcmlwdG9yIHBhc3NpbmcKICogTWFrZSBhZGRyIG1hbmRh dG9yeSBbTWFya3VzXQogKiBVcGRhdGUgdmhvc3QtdXNlci1ibGstdGVzdC5jIHRvIHVzZSAtLWV4 cG9ydCBzeW50YXgKLS0tCiBxYXBpL2Jsb2NrLWV4cG9ydC5qc29uICAgICAgICAgICAgICAgfCAg MjEgKy0KIGJsb2NrL2V4cG9ydC92aG9zdC11c2VyLWJsay1zZXJ2ZXIuaCB8ICAyMyArLQogYmxv Y2svZXhwb3J0L2V4cG9ydC5jICAgICAgICAgICAgICAgIHwgICA4ICstCiBibG9jay9leHBvcnQv dmhvc3QtdXNlci1ibGstc2VydmVyLmMgfCA0NTIgKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0t CiB0ZXN0cy9xdGVzdC92aG9zdC11c2VyLWJsay10ZXN0LmMgICAgfCAgIDIgKy0KIHV0aWwvdmhv c3QtdXNlci1zZXJ2ZXIuYyAgICAgICAgICAgICB8ICAxMCArLQogYmxvY2svZXhwb3J0L21lc29u LmJ1aWxkICAgICAgICAgICAgIHwgICAxICsKIGJsb2NrL21lc29uLmJ1aWxkICAgICAgICAgICAg ICAgICAgICB8ICAgMSAtCiA4IGZpbGVzIGNoYW5nZWQsIDE1OCBpbnNlcnRpb25zKCspLCAzNjAg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvcWFwaS9ibG9jay1leHBvcnQuanNvbiBiL3FhcGkv YmxvY2stZXhwb3J0Lmpzb24KaW5kZXggYWNlMGQ2NmUxNy4uMmU0NDYyNWJiMSAxMDA2NDQKLS0t IGEvcWFwaS9ibG9jay1leHBvcnQuanNvbgorKysgYi9xYXBpL2Jsb2NrLWV4cG9ydC5qc29uCkBA IC04NCw2ICs4NCwyMSBAQAogICAnZGF0YSc6IHsgJypuYW1lJzogJ3N0cicsICcqZGVzY3JpcHRp b24nOiAnc3RyJywKICAgICAgICAgICAgICcqYml0bWFwJzogJ3N0cicgfSB9CiAKKyMjCisjIEBC bG9ja0V4cG9ydE9wdGlvbnNWaG9zdFVzZXJCbGs6CisjCisjIEEgdmhvc3QtdXNlci1ibGsgYmxv Y2sgZXhwb3J0LgorIworIyBAYWRkcjogVGhlIHZob3N0LXVzZXIgc29ja2V0IG9uIHdoaWNoIHRv IGxpc3Rlbi4gQm90aCAndW5peCcgYW5kICdmZCcKKyMgICAgICAgIFNvY2tldEFkZHJlc3MgdHlw ZXMgYXJlIHN1cHBvcnRlZC4gUGFzc2VkIGZkcyBtdXN0IGJlIFVOSVggZG9tYWluCisjICAgICAg ICBzb2NrZXRzLgorIyBAbG9naWNhbC1ibG9jay1zaXplOiBMb2dpY2FsIGJsb2NrIHNpemUgaW4g Ynl0ZXMuIERlZmF1bHRzIHRvIDUxMiBieXRlcy4KKyMKKyMgU2luY2U6IDUuMgorIyMKK3sgJ3N0 cnVjdCc6ICdCbG9ja0V4cG9ydE9wdGlvbnNWaG9zdFVzZXJCbGsnLAorICAnZGF0YSc6IHsgJ2Fk ZHInOiAnU29ja2V0QWRkcmVzcycsICcqbG9naWNhbC1ibG9jay1zaXplJzogJ3NpemUnIH0gfQor CiAjIwogIyBATmJkU2VydmVyQWRkT3B0aW9uczoKICMKQEAgLTE4MCwxMSArMTk1LDEyIEBACiAj IEFuIGVudW1lcmF0aW9uIG9mIGJsb2NrIGV4cG9ydCB0eXBlcwogIwogIyBAbmJkOiBOQkQgZXhw b3J0CisjIEB2aG9zdC11c2VyLWJsazogdmhvc3QtdXNlci1ibGsgZXhwb3J0IChzaW5jZSA1LjIp CiAjCiAjIFNpbmNlOiA0LjIKICMjCiB7ICdlbnVtJzogJ0Jsb2NrRXhwb3J0VHlwZScsCi0gICdk YXRhJzogWyAnbmJkJyBdIH0KKyAgJ2RhdGEnOiBbICduYmQnLCAndmhvc3QtdXNlci1ibGsnIF0g fQogCiAjIwogIyBAQmxvY2tFeHBvcnRPcHRpb25zOgpAQCAtMjEzLDcgKzIyOSw4IEBACiAgICAg ICAgICAgICAnKndyaXRldGhyb3VnaCc6ICdib29sJyB9LAogICAnZGlzY3JpbWluYXRvcic6ICd0 eXBlJywKICAgJ2RhdGEnOiB7Ci0gICAgICAnbmJkJzogJ0Jsb2NrRXhwb3J0T3B0aW9uc05iZCcK KyAgICAgICduYmQnOiAnQmxvY2tFeHBvcnRPcHRpb25zTmJkJywKKyAgICAgICd2aG9zdC11c2Vy LWJsayc6ICdCbG9ja0V4cG9ydE9wdGlvbnNWaG9zdFVzZXJCbGsnCiAgICB9IH0KIAogIyMKZGlm ZiAtLWdpdCBhL2Jsb2NrL2V4cG9ydC92aG9zdC11c2VyLWJsay1zZXJ2ZXIuaCBiL2Jsb2NrL2V4 cG9ydC92aG9zdC11c2VyLWJsay1zZXJ2ZXIuaAppbmRleCBmMDZmMzdjNGM4Li5mY2Y0NmZjOGE1 IDEwMDY0NAotLS0gYS9ibG9jay9leHBvcnQvdmhvc3QtdXNlci1ibGstc2VydmVyLmgKKysrIGIv YmxvY2svZXhwb3J0L3Zob3N0LXVzZXItYmxrLXNlcnZlci5oCkBAIC0xMCwyNyArMTAsMTAgQEAK IAogI2lmbmRlZiBWSE9TVF9VU0VSX0JMS19TRVJWRVJfSAogI2RlZmluZSBWSE9TVF9VU0VSX0JM S19TRVJWRVJfSAotI2luY2x1ZGUgInV0aWwvdmhvc3QtdXNlci1zZXJ2ZXIuaCIKIAotdHlwZWRl ZiBzdHJ1Y3QgVnVCbG9ja0RldiBWdUJsb2NrRGV2OwotI2RlZmluZSBUWVBFX1ZIT1NUX1VTRVJf QkxLX1NFUlZFUiAidmhvc3QtdXNlci1ibGstc2VydmVyIgotI2RlZmluZSBWSE9TVF9VU0VSX0JM S19TRVJWRVIob2JqKSBcCi0gICBPQkpFQ1RfQ0hFQ0soVnVCbG9ja0Rldiwgb2JqLCBUWVBFX1ZI T1NUX1VTRVJfQkxLX1NFUlZFUikKKyNpbmNsdWRlICJibG9jay9leHBvcnQuaCIKIAotLyogdmhv c3QgdXNlciBibG9jayBkZXZpY2UgKi8KLXN0cnVjdCBWdUJsb2NrRGV2IHsKLSAgICBPYmplY3Qg cGFyZW50X29iajsKLSAgICBjaGFyICpub2RlX25hbWU7Ci0gICAgU29ja2V0QWRkcmVzcyAqYWRk cjsKLSAgICBBaW9Db250ZXh0ICpjdHg7Ci0gICAgVnVTZXJ2ZXIgdnVfc2VydmVyOwotICAgIGJv b2wgcnVubmluZzsKLSAgICB1aW50MzJfdCBibGtfc2l6ZTsKLSAgICBCbG9ja0JhY2tlbmQgKmJh Y2tlbmQ7Ci0gICAgUUlPQ2hhbm5lbFNvY2tldCAqc2lvYzsKLSAgICBRVEFJTFFfRU5UUlkoVnVC bG9ja0RldikgbmV4dDsKLSAgICBzdHJ1Y3QgdmlydGlvX2Jsa19jb25maWcgYmxrY2ZnOwotICAg IGJvb2wgd3JpdGFibGU7Ci19OworLyogRm9yIGJsb2NrL2V4cG9ydC9leHBvcnQuYyAqLworZXh0 ZXJuIGNvbnN0IEJsb2NrRXhwb3J0RHJpdmVyIGJsa19leHBfdmhvc3RfdXNlcl9ibGs7CiAKICNl bmRpZiAvKiBWSE9TVF9VU0VSX0JMS19TRVJWRVJfSCAqLwpkaWZmIC0tZ2l0IGEvYmxvY2svZXhw b3J0L2V4cG9ydC5jIGIvYmxvY2svZXhwb3J0L2V4cG9ydC5jCmluZGV4IDg3NTE2ZDFlMDUuLmQw Yzc1OTA5MTEgMTAwNjQ0Ci0tLSBhL2Jsb2NrL2V4cG9ydC9leHBvcnQuYworKysgYi9ibG9jay9l eHBvcnQvZXhwb3J0LmMKQEAgLTE3LDYgKzE3LDkgQEAKICNpbmNsdWRlICJzeXNlbXUvYmxvY2st YmFja2VuZC5oIgogI2luY2x1ZGUgImJsb2NrL2V4cG9ydC5oIgogI2luY2x1ZGUgImJsb2NrL25i ZC5oIgorI2lmIENPTkZJR19MSU5VWAorI2luY2x1ZGUgImJsb2NrL2V4cG9ydC92aG9zdC11c2Vy LWJsay1zZXJ2ZXIuaCIKKyNlbmRpZgogI2luY2x1ZGUgInFhcGkvZXJyb3IuaCIKICNpbmNsdWRl ICJxYXBpL3FhcGktY29tbWFuZHMtYmxvY2stZXhwb3J0LmgiCiAjaW5jbHVkZSAicWFwaS9xYXBp LWV2ZW50cy1ibG9jay1leHBvcnQuaCIKQEAgLTI0LDYgKzI3LDkgQEAKIAogc3RhdGljIGNvbnN0 IEJsb2NrRXhwb3J0RHJpdmVyICpibGtfZXhwX2RyaXZlcnNbXSA9IHsKICAgICAmYmxrX2V4cF9u YmQsCisjaWYgQ09ORklHX0xJTlVYCisgICAgJmJsa19leHBfdmhvc3RfdXNlcl9ibGssCisjZW5k aWYKIH07CiAKIC8qIE9ubHkgYWNjZXNzZWQgZnJvbSB0aGUgbWFpbiB0aHJlYWQgKi8KQEAgLTEy Myw3ICsxMjksNyBAQCBCbG9ja0V4cG9ydCAqYmxrX2V4cF9hZGQoQmxvY2tFeHBvcnRPcHRpb25z ICpleHBvcnQsIEVycm9yICoqZXJycCkKICAgICBhc3NlcnQoZHJ2LT5pbnN0YW5jZV9zaXplID49 IHNpemVvZihCbG9ja0V4cG9ydCkpOwogICAgIGV4cCA9IGdfbWFsbG9jMChkcnYtPmluc3RhbmNl X3NpemUpOwogICAgICpleHAgPSAoQmxvY2tFeHBvcnQpIHsKLSAgICAgICAgLmRydiAgICAgICAg PSAmYmxrX2V4cF9uYmQsCisgICAgICAgIC5kcnYgICAgICAgID0gZHJ2LAogICAgICAgICAucmVm Y291bnQgICA9IDEsCiAgICAgICAgIC51c2VyX293bmVkID0gdHJ1ZSwKICAgICAgICAgLmlkICAg ICAgICAgPSBnX3N0cmR1cChleHBvcnQtPmlkKSwKZGlmZiAtLWdpdCBhL2Jsb2NrL2V4cG9ydC92 aG9zdC11c2VyLWJsay1zZXJ2ZXIuYyBiL2Jsb2NrL2V4cG9ydC92aG9zdC11c2VyLWJsay1zZXJ2 ZXIuYwppbmRleCA0NGQzYzQ1ZmEyLi45MWZjNzA0MGIyIDEwMDY0NAotLS0gYS9ibG9jay9leHBv cnQvdmhvc3QtdXNlci1ibGstc2VydmVyLmMKKysrIGIvYmxvY2svZXhwb3J0L3Zob3N0LXVzZXIt YmxrLXNlcnZlci5jCkBAIC0xMSw2ICsxMSw5IEBACiAgKi8KICNpbmNsdWRlICJxZW11L29zZGVw LmgiCiAjaW5jbHVkZSAiYmxvY2svYmxvY2suaCIKKyNpbmNsdWRlICJjb250cmliL2xpYnZob3N0 LXVzZXIvbGlidmhvc3QtdXNlci5oIgorI2luY2x1ZGUgInN0YW5kYXJkLWhlYWRlcnMvbGludXgv dmlydGlvX2Jsay5oIgorI2luY2x1ZGUgInV0aWwvdmhvc3QtdXNlci1zZXJ2ZXIuaCIKICNpbmNs dWRlICJ2aG9zdC11c2VyLWJsay1zZXJ2ZXIuaCIKICNpbmNsdWRlICJxYXBpL2Vycm9yLmgiCiAj aW5jbHVkZSAicW9tL29iamVjdF9pbnRlcmZhY2VzLmgiCkBAIC0yNCw3ICsyNyw3IEBAIHN0cnVj dCB2aXJ0aW9fYmxrX2luaGRyIHsKICAgICB1bnNpZ25lZCBjaGFyIHN0YXR1czsKIH07CiAKLXR5 cGVkZWYgc3RydWN0IFZ1QmxvY2tSZXEgewordHlwZWRlZiBzdHJ1Y3QgVnVCbGtSZXEgewogICAg IFZ1VmlydHFFbGVtZW50IGVsZW07CiAgICAgaW50NjRfdCBzZWN0b3JfbnVtOwogICAgIHNpemVf dCBzaXplOwpAQCAtMzIsOSArMzUsMTkgQEAgdHlwZWRlZiBzdHJ1Y3QgVnVCbG9ja1JlcSB7CiAg ICAgc3RydWN0IHZpcnRpb19ibGtfb3V0aGRyIG91dDsKICAgICBWdVNlcnZlciAqc2VydmVyOwog ICAgIHN0cnVjdCBWdVZpcnRxICp2cTsKLX0gVnVCbG9ja1JlcTsKK30gVnVCbGtSZXE7CiAKLXN0 YXRpYyB2b2lkIHZ1X2Jsb2NrX3JlcV9jb21wbGV0ZShWdUJsb2NrUmVxICpyZXEpCisvKiB2aG9z dCB1c2VyIGJsb2NrIGRldmljZSAqLwordHlwZWRlZiBzdHJ1Y3QgeworICAgIEJsb2NrRXhwb3J0 IGV4cG9ydDsKKyAgICBWdVNlcnZlciB2dV9zZXJ2ZXI7CisgICAgdWludDMyX3QgYmxrX3NpemU7 CisgICAgUUlPQ2hhbm5lbFNvY2tldCAqc2lvYzsKKyAgICBzdHJ1Y3QgdmlydGlvX2Jsa19jb25m aWcgYmxrY2ZnOworICAgIGJvb2wgd3JpdGFibGU7Cit9IFZ1QmxrRXhwb3J0OworCitzdGF0aWMg dm9pZCB2dV9ibGtfcmVxX2NvbXBsZXRlKFZ1QmxrUmVxICpyZXEpCiB7CiAgICAgVnVEZXYgKnZ1 X2RldiA9ICZyZXEtPnNlcnZlci0+dnVfZGV2OwogCkBAIC00NSwxNCArNTgsOSBAQCBzdGF0aWMg dm9pZCB2dV9ibG9ja19yZXFfY29tcGxldGUoVnVCbG9ja1JlcSAqcmVxKQogICAgIGZyZWUocmVx KTsKIH0KIAotc3RhdGljIFZ1QmxvY2tEZXYgKmdldF92dV9ibG9ja19kZXZpY2VfYnlfc2VydmVy KFZ1U2VydmVyICpzZXJ2ZXIpCi17Ci0gICAgcmV0dXJuIGNvbnRhaW5lcl9vZihzZXJ2ZXIsIFZ1 QmxvY2tEZXYsIHZ1X3NlcnZlcik7Ci19Ci0KIHN0YXRpYyBpbnQgY29yb3V0aW5lX2ZuCi12dV9i bG9ja19kaXNjYXJkX3dyaXRlX3plcm9lcyhWdUJsb2NrUmVxICpyZXEsIHN0cnVjdCBpb3ZlYyAq aW92LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgaW92Y250LCB1aW50 MzJfdCB0eXBlKQordnVfYmxrX2Rpc2NhcmRfd3JpdGVfemVyb2VzKEJsb2NrQmFja2VuZCAqYmxr LCBzdHJ1Y3QgaW92ZWMgKmlvdiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJf dCBpb3ZjbnQsIHVpbnQzMl90IHR5cGUpCiB7CiAgICAgc3RydWN0IHZpcnRpb19ibGtfZGlzY2Fy ZF93cml0ZV96ZXJvZXMgZGVzYzsKICAgICBzc2l6ZV90IHNpemUgPSBpb3ZfdG9fYnVmKGlvdiwg aW92Y250LCAwLCAmZGVzYywgc2l6ZW9mKGRlc2MpKTsKQEAgLTYxLDE2ICs2OSwxNCBAQCB2dV9i bG9ja19kaXNjYXJkX3dyaXRlX3plcm9lcyhWdUJsb2NrUmVxICpyZXEsIHN0cnVjdCBpb3ZlYyAq aW92LAogICAgICAgICByZXR1cm4gLUVJTlZBTDsKICAgICB9CiAKLSAgICBWdUJsb2NrRGV2ICp2 ZGV2X2JsayA9IGdldF92dV9ibG9ja19kZXZpY2VfYnlfc2VydmVyKHJlcS0+c2VydmVyKTsKICAg ICB1aW50NjRfdCByYW5nZVsyXSA9IHsgbGU2NF90b19jcHUoZGVzYy5zZWN0b3IpIDw8IDksCiAg ICAgICAgICAgICAgICAgICAgICAgICAgIGxlMzJfdG9fY3B1KGRlc2MubnVtX3NlY3RvcnMpIDw8 IDkgfTsKICAgICBpZiAodHlwZSA9PSBWSVJUSU9fQkxLX1RfRElTQ0FSRCkgewotICAgICAgICBp ZiAoYmxrX2NvX3BkaXNjYXJkKHZkZXZfYmxrLT5iYWNrZW5kLCByYW5nZVswXSwgcmFuZ2VbMV0p ID09IDApIHsKKyAgICAgICAgaWYgKGJsa19jb19wZGlzY2FyZChibGssIHJhbmdlWzBdLCByYW5n ZVsxXSkgPT0gMCkgewogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KICAgICB9IGVs c2UgaWYgKHR5cGUgPT0gVklSVElPX0JMS19UX1dSSVRFX1pFUk9FUykgewotICAgICAgICBpZiAo YmxrX2NvX3B3cml0ZV96ZXJvZXModmRldl9ibGstPmJhY2tlbmQsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICByYW5nZVswXSwgcmFuZ2VbMV0sIDApID09IDApIHsKKyAgICAgICAg aWYgKGJsa19jb19wd3JpdGVfemVyb2VzKGJsaywgcmFuZ2VbMF0sIHJhbmdlWzFdLCAwKSA9PSAw KSB7CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQogICAgIH0KQEAgLTc4LDIyICs4 NCwxNSBAQCB2dV9ibG9ja19kaXNjYXJkX3dyaXRlX3plcm9lcyhWdUJsb2NrUmVxICpyZXEsIHN0 cnVjdCBpb3ZlYyAqaW92LAogICAgIHJldHVybiAtRUlOVkFMOwogfQogCi1zdGF0aWMgaW50IGNv cm91dGluZV9mbiB2dV9ibG9ja19mbHVzaChWdUJsb2NrUmVxICpyZXEpCitzdGF0aWMgdm9pZCBj b3JvdXRpbmVfZm4gdnVfYmxrX3ZpcnRpb19wcm9jZXNzX3JlcSh2b2lkICpvcGFxdWUpCiB7Ci0g ICAgVnVCbG9ja0RldiAqdmRldl9ibGsgPSBnZXRfdnVfYmxvY2tfZGV2aWNlX2J5X3NlcnZlcihy ZXEtPnNlcnZlcik7Ci0gICAgQmxvY2tCYWNrZW5kICpiYWNrZW5kID0gdmRldl9ibGstPmJhY2tl bmQ7Ci0gICAgcmV0dXJuIGJsa19jb19mbHVzaChiYWNrZW5kKTsKLX0KLQotc3RhdGljIHZvaWQg Y29yb3V0aW5lX2ZuIHZ1X2Jsb2NrX3ZpcnRpb19wcm9jZXNzX3JlcSh2b2lkICpvcGFxdWUpCi17 Ci0gICAgVnVCbG9ja1JlcSAqcmVxID0gb3BhcXVlOworICAgIFZ1QmxrUmVxICpyZXEgPSBvcGFx dWU7CiAgICAgVnVTZXJ2ZXIgKnNlcnZlciA9IHJlcS0+c2VydmVyOwogICAgIFZ1VmlydHFFbGVt ZW50ICplbGVtID0gJnJlcS0+ZWxlbTsKICAgICB1aW50MzJfdCB0eXBlOwogCi0gICAgVnVCbG9j a0RldiAqdmRldl9ibGsgPSBnZXRfdnVfYmxvY2tfZGV2aWNlX2J5X3NlcnZlcihzZXJ2ZXIpOwot ICAgIEJsb2NrQmFja2VuZCAqYmFja2VuZCA9IHZkZXZfYmxrLT5iYWNrZW5kOworICAgIFZ1Qmxr RXhwb3J0ICp2ZXhwID0gY29udGFpbmVyX29mKHNlcnZlciwgVnVCbGtFeHBvcnQsIHZ1X3NlcnZl cik7CisgICAgQmxvY2tCYWNrZW5kICpibGsgPSB2ZXhwLT5leHBvcnQuYmxrOwogCiAgICAgc3Ry dWN0IGlvdmVjICppbl9pb3YgPSBlbGVtLT5pbl9zZzsKICAgICBzdHJ1Y3QgaW92ZWMgKm91dF9p b3YgPSBlbGVtLT5vdXRfc2c7CkBAIC0xMzMsMTYgKzEzMiwxOSBAQCBzdGF0aWMgdm9pZCBjb3Jv dXRpbmVfZm4gdnVfYmxvY2tfdmlydGlvX3Byb2Nlc3NfcmVxKHZvaWQgKm9wYXF1ZSkKICAgICAg ICAgYm9vbCBpc193cml0ZSA9IHR5cGUgJiBWSVJUSU9fQkxLX1RfT1VUOwogICAgICAgICByZXEt PnNlY3Rvcl9udW0gPSBsZTY0X3RvX2NwdShyZXEtPm91dC5zZWN0b3IpOwogCi0gICAgICAgIGlu dDY0X3Qgb2Zmc2V0ID0gcmVxLT5zZWN0b3JfbnVtICogdmRldl9ibGstPmJsa19zaXplOworICAg ICAgICBpZiAoaXNfd3JpdGUgJiYgIXZleHAtPndyaXRhYmxlKSB7CisgICAgICAgICAgICByZXEt PmluLT5zdGF0dXMgPSBWSVJUSU9fQkxLX1NfSU9FUlI7CisgICAgICAgICAgICBicmVhazsKKyAg ICAgICAgfQorCisgICAgICAgIGludDY0X3Qgb2Zmc2V0ID0gcmVxLT5zZWN0b3JfbnVtICogdmV4 cC0+YmxrX3NpemU7CiAgICAgICAgIFFFTVVJT1ZlY3RvciBxaW92OwogICAgICAgICBpZiAoaXNf d3JpdGUpIHsKICAgICAgICAgICAgIHFlbXVfaW92ZWNfaW5pdF9leHRlcm5hbCgmcWlvdiwgb3V0 X2lvdiwgb3V0X251bSk7Ci0gICAgICAgICAgICByZXQgPSBibGtfY29fcHdyaXRldihiYWNrZW5k LCBvZmZzZXQsIHFpb3Yuc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZx aW92LCAwKTsKKyAgICAgICAgICAgIHJldCA9IGJsa19jb19wd3JpdGV2KGJsaywgb2Zmc2V0LCBx aW92LnNpemUsICZxaW92LCAwKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHFlbXVf aW92ZWNfaW5pdF9leHRlcm5hbCgmcWlvdiwgaW5faW92LCBpbl9udW0pOwotICAgICAgICAgICAg cmV0ID0gYmxrX2NvX3ByZWFkdihiYWNrZW5kLCBvZmZzZXQsIHFpb3Yuc2l6ZSwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgJnFpb3YsIDApOworICAgICAgICAgICAgcmV0ID0gYmxr X2NvX3ByZWFkdihibGssIG9mZnNldCwgcWlvdi5zaXplLCAmcWlvdiwgMCk7CiAgICAgICAgIH0K ICAgICAgICAgaWYgKHJldCA+PSAwKSB7CiAgICAgICAgICAgICByZXEtPmluLT5zdGF0dXMgPSBW SVJUSU9fQkxLX1NfT0s7CkBAIC0xNTIsNyArMTU0LDcgQEAgc3RhdGljIHZvaWQgY29yb3V0aW5l X2ZuIHZ1X2Jsb2NrX3ZpcnRpb19wcm9jZXNzX3JlcSh2b2lkICpvcGFxdWUpCiAgICAgICAgIGJy ZWFrOwogICAgIH0KICAgICBjYXNlIFZJUlRJT19CTEtfVF9GTFVTSDoKLSAgICAgICAgaWYgKHZ1 X2Jsb2NrX2ZsdXNoKHJlcSkgPT0gMCkgeworICAgICAgICBpZiAoYmxrX2NvX2ZsdXNoKGJsaykg PT0gMCkgewogICAgICAgICAgICAgcmVxLT5pbi0+c3RhdHVzID0gVklSVElPX0JMS19TX09LOwog ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgcmVxLT5pbi0+c3RhdHVzID0gVklSVElPX0JM S19TX0lPRVJSOwpAQCAtMTY5LDggKzE3MSwxMyBAQCBzdGF0aWMgdm9pZCBjb3JvdXRpbmVfZm4g dnVfYmxvY2tfdmlydGlvX3Byb2Nlc3NfcmVxKHZvaWQgKm9wYXF1ZSkKICAgICBjYXNlIFZJUlRJ T19CTEtfVF9ESVNDQVJEOgogICAgIGNhc2UgVklSVElPX0JMS19UX1dSSVRFX1pFUk9FUzogewog ICAgICAgICBpbnQgcmM7Ci0gICAgICAgIHJjID0gdnVfYmxvY2tfZGlzY2FyZF93cml0ZV96ZXJv ZXMocmVxLCAmZWxlbS0+b3V0X3NnWzFdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIG91dF9udW0sIHR5cGUpOworCisgICAgICAgIGlmICghdmV4cC0+d3JpdGFi bGUpIHsKKyAgICAgICAgICAgIHJlcS0+aW4tPnN0YXR1cyA9IFZJUlRJT19CTEtfU19JT0VSUjsK KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgcmMgPSB2dV9ibGtfZGlz Y2FyZF93cml0ZV96ZXJvZXMoYmxrLCAmZWxlbS0+b3V0X3NnWzFdLCBvdXRfbnVtLCB0eXBlKTsK ICAgICAgICAgaWYgKHJjID09IDApIHsKICAgICAgICAgICAgIHJlcS0+aW4tPnN0YXR1cyA9IFZJ UlRJT19CTEtfU19PSzsKICAgICAgICAgfSBlbHNlIHsKQEAgLTE4MywyMiArMTkwLDIyIEBAIHN0 YXRpYyB2b2lkIGNvcm91dGluZV9mbiB2dV9ibG9ja192aXJ0aW9fcHJvY2Vzc19yZXEodm9pZCAq b3BhcXVlKQogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICB2dV9ibG9ja19yZXFfY29tcGxl dGUocmVxKTsKKyAgICB2dV9ibGtfcmVxX2NvbXBsZXRlKHJlcSk7CiAgICAgcmV0dXJuOwogCiBl cnI6Ci0gICAgZnJlZShlbGVtKTsKKyAgICBmcmVlKHJlcSk7CiB9CiAKLXN0YXRpYyB2b2lkIHZ1 X2Jsb2NrX3Byb2Nlc3NfdnEoVnVEZXYgKnZ1X2RldiwgaW50IGlkeCkKK3N0YXRpYyB2b2lkIHZ1 X2Jsa19wcm9jZXNzX3ZxKFZ1RGV2ICp2dV9kZXYsIGludCBpZHgpCiB7CiAgICAgVnVTZXJ2ZXIg KnNlcnZlciA9IGNvbnRhaW5lcl9vZih2dV9kZXYsIFZ1U2VydmVyLCB2dV9kZXYpOwogICAgIFZ1 VmlydHEgKnZxID0gdnVfZ2V0X3F1ZXVlKHZ1X2RldiwgaWR4KTsKIAogICAgIHdoaWxlICgxKSB7 Ci0gICAgICAgIFZ1QmxvY2tSZXEgKnJlcTsKKyAgICAgICAgVnVCbGtSZXEgKnJlcTsKIAotICAg ICAgICByZXEgPSB2dV9xdWV1ZV9wb3AodnVfZGV2LCB2cSwgc2l6ZW9mKFZ1QmxvY2tSZXEpKTsK KyAgICAgICAgcmVxID0gdnVfcXVldWVfcG9wKHZ1X2RldiwgdnEsIHNpemVvZihWdUJsa1JlcSkp OwogICAgICAgICBpZiAoIXJlcSkgewogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAg LTIwNywyNiArMjE0LDI2IEBAIHN0YXRpYyB2b2lkIHZ1X2Jsb2NrX3Byb2Nlc3NfdnEoVnVEZXYg KnZ1X2RldiwgaW50IGlkeCkKICAgICAgICAgcmVxLT52cSA9IHZxOwogCiAgICAgICAgIENvcm91 dGluZSAqY28gPQotICAgICAgICAgICAgcWVtdV9jb3JvdXRpbmVfY3JlYXRlKHZ1X2Jsb2NrX3Zp cnRpb19wcm9jZXNzX3JlcSwgcmVxKTsKKyAgICAgICAgICAgIHFlbXVfY29yb3V0aW5lX2NyZWF0 ZSh2dV9ibGtfdmlydGlvX3Byb2Nlc3NfcmVxLCByZXEpOwogICAgICAgICBxZW11X2Nvcm91dGlu ZV9lbnRlcihjbyk7CiAgICAgfQogfQogCi1zdGF0aWMgdm9pZCB2dV9ibG9ja19xdWV1ZV9zZXRf c3RhcnRlZChWdURldiAqdnVfZGV2LCBpbnQgaWR4LCBib29sIHN0YXJ0ZWQpCitzdGF0aWMgdm9p ZCB2dV9ibGtfcXVldWVfc2V0X3N0YXJ0ZWQoVnVEZXYgKnZ1X2RldiwgaW50IGlkeCwgYm9vbCBz dGFydGVkKQogewogICAgIFZ1VmlydHEgKnZxOwogCiAgICAgYXNzZXJ0KHZ1X2Rldik7CiAKICAg ICB2cSA9IHZ1X2dldF9xdWV1ZSh2dV9kZXYsIGlkeCk7Ci0gICAgdnVfc2V0X3F1ZXVlX2hhbmRs ZXIodnVfZGV2LCB2cSwgc3RhcnRlZCA/IHZ1X2Jsb2NrX3Byb2Nlc3NfdnEgOiBOVUxMKTsKKyAg ICB2dV9zZXRfcXVldWVfaGFuZGxlcih2dV9kZXYsIHZxLCBzdGFydGVkID8gdnVfYmxrX3Byb2Nl c3NfdnEgOiBOVUxMKTsKIH0KIAotc3RhdGljIHVpbnQ2NF90IHZ1X2Jsb2NrX2dldF9mZWF0dXJl cyhWdURldiAqZGV2KQorc3RhdGljIHVpbnQ2NF90IHZ1X2Jsa19nZXRfZmVhdHVyZXMoVnVEZXYg KmRldikKIHsKICAgICB1aW50NjRfdCBmZWF0dXJlczsKICAgICBWdVNlcnZlciAqc2VydmVyID0g Y29udGFpbmVyX29mKGRldiwgVnVTZXJ2ZXIsIHZ1X2Rldik7Ci0gICAgVnVCbG9ja0RldiAqdmRl dl9ibGsgPSBnZXRfdnVfYmxvY2tfZGV2aWNlX2J5X3NlcnZlcihzZXJ2ZXIpOworICAgIFZ1Qmxr RXhwb3J0ICp2ZXhwID0gY29udGFpbmVyX29mKHNlcnZlciwgVnVCbGtFeHBvcnQsIHZ1X3NlcnZl cik7CiAgICAgZmVhdHVyZXMgPSAxdWxsIDw8IFZJUlRJT19CTEtfRl9TSVpFX01BWCB8CiAgICAg ICAgICAgICAgICAxdWxsIDw8IFZJUlRJT19CTEtfRl9TRUdfTUFYIHwKICAgICAgICAgICAgICAg IDF1bGwgPDwgVklSVElPX0JMS19GX1RPUE9MT0dZIHwKQEAgLTI0MCwzNSArMjQ3LDM1IEBAIHN0 YXRpYyB1aW50NjRfdCB2dV9ibG9ja19nZXRfZmVhdHVyZXMoVnVEZXYgKmRldikKICAgICAgICAg ICAgICAgIDF1bGwgPDwgVklSVElPX1JJTkdfRl9FVkVOVF9JRFggfAogICAgICAgICAgICAgICAg MXVsbCA8PCBWSE9TVF9VU0VSX0ZfUFJPVE9DT0xfRkVBVFVSRVM7CiAKLSAgICBpZiAoIXZkZXZf YmxrLT53cml0YWJsZSkgeworICAgIGlmICghdmV4cC0+d3JpdGFibGUpIHsKICAgICAgICAgZmVh dHVyZXMgfD0gMXVsbCA8PCBWSVJUSU9fQkxLX0ZfUk87CiAgICAgfQogCiAgICAgcmV0dXJuIGZl YXR1cmVzOwogfQogCi1zdGF0aWMgdWludDY0X3QgdnVfYmxvY2tfZ2V0X3Byb3RvY29sX2ZlYXR1 cmVzKFZ1RGV2ICpkZXYpCitzdGF0aWMgdWludDY0X3QgdnVfYmxrX2dldF9wcm90b2NvbF9mZWF0 dXJlcyhWdURldiAqZGV2KQogewogICAgIHJldHVybiAxdWxsIDw8IFZIT1NUX1VTRVJfUFJPVE9D T0xfRl9DT05GSUcgfAogICAgICAgICAgICAxdWxsIDw8IFZIT1NUX1VTRVJfUFJPVE9DT0xfRl9J TkZMSUdIVF9TSE1GRDsKIH0KIAogc3RhdGljIGludAotdnVfYmxvY2tfZ2V0X2NvbmZpZyhWdURl diAqdnVfZGV2LCB1aW50OF90ICpjb25maWcsIHVpbnQzMl90IGxlbikKK3Z1X2Jsa19nZXRfY29u ZmlnKFZ1RGV2ICp2dV9kZXYsIHVpbnQ4X3QgKmNvbmZpZywgdWludDMyX3QgbGVuKQogeworICAg IC8qIFRPRE8gYmxrY2ZnIG11c3QgYmUgbGl0dGxlLWVuZGlhbiBmb3IgVklSVElPIDEuMCAqLwog ICAgIFZ1U2VydmVyICpzZXJ2ZXIgPSBjb250YWluZXJfb2YodnVfZGV2LCBWdVNlcnZlciwgdnVf ZGV2KTsKLSAgICBWdUJsb2NrRGV2ICp2ZGV2X2JsayA9IGdldF92dV9ibG9ja19kZXZpY2VfYnlf c2VydmVyKHNlcnZlcik7Ci0gICAgbWVtY3B5KGNvbmZpZywgJnZkZXZfYmxrLT5ibGtjZmcsIGxl bik7Ci0KKyAgICBWdUJsa0V4cG9ydCAqdmV4cCA9IGNvbnRhaW5lcl9vZihzZXJ2ZXIsIFZ1Qmxr RXhwb3J0LCB2dV9zZXJ2ZXIpOworICAgIG1lbWNweShjb25maWcsICZ2ZXhwLT5ibGtjZmcsIGxl bik7CiAgICAgcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBpbnQKLXZ1X2Jsb2NrX3NldF9jb25maWco VnVEZXYgKnZ1X2RldiwgY29uc3QgdWludDhfdCAqZGF0YSwKK3Z1X2Jsa19zZXRfY29uZmlnKFZ1 RGV2ICp2dV9kZXYsIGNvbnN0IHVpbnQ4X3QgKmRhdGEsCiAgICAgICAgICAgICAgICAgICAgIHVp bnQzMl90IG9mZnNldCwgdWludDMyX3Qgc2l6ZSwgdWludDMyX3QgZmxhZ3MpCiB7CiAgICAgVnVT ZXJ2ZXIgKnNlcnZlciA9IGNvbnRhaW5lcl9vZih2dV9kZXYsIFZ1U2VydmVyLCB2dV9kZXYpOwot ICAgIFZ1QmxvY2tEZXYgKnZkZXZfYmxrID0gZ2V0X3Z1X2Jsb2NrX2RldmljZV9ieV9zZXJ2ZXIo c2VydmVyKTsKKyAgICBWdUJsa0V4cG9ydCAqdmV4cCA9IGNvbnRhaW5lcl9vZihzZXJ2ZXIsIFZ1 QmxrRXhwb3J0LCB2dV9zZXJ2ZXIpOwogICAgIHVpbnQ4X3Qgd2NlOwogCiAgICAgLyogZG9uJ3Qg c3VwcG9ydCBsaXZlIG1pZ3JhdGlvbiAqLwpAQCAtMjgyLDggKzI4OSw4IEBAIHZ1X2Jsb2NrX3Nl dF9jb25maWcoVnVEZXYgKnZ1X2RldiwgY29uc3QgdWludDhfdCAqZGF0YSwKICAgICB9CiAKICAg ICB3Y2UgPSAqZGF0YTsKLSAgICB2ZGV2X2Jsay0+YmxrY2ZnLndjZSA9IHdjZTsKLSAgICBibGtf c2V0X2VuYWJsZV93cml0ZV9jYWNoZSh2ZGV2X2Jsay0+YmFja2VuZCwgd2NlKTsKKyAgICB2ZXhw LT5ibGtjZmcud2NlID0gd2NlOworICAgIGJsa19zZXRfZW5hYmxlX3dyaXRlX2NhY2hlKHZleHAt PmV4cG9ydC5ibGssIHdjZSk7CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTI5NSw3ICszMDIsNyBA QCB2dV9ibG9ja19zZXRfY29uZmlnKFZ1RGV2ICp2dV9kZXYsIGNvbnN0IHVpbnQ4X3QgKmRhdGEs CiAgKiBvZiB2dV9wcm9jZXNzX21lc3NhZ2UuCiAgKgogICovCi1zdGF0aWMgaW50IHZ1X2Jsb2Nr X3Byb2Nlc3NfbXNnKFZ1RGV2ICpkZXYsIFZob3N0VXNlck1zZyAqdm1zZywgaW50ICpkb19yZXBs eSkKK3N0YXRpYyBpbnQgdnVfYmxrX3Byb2Nlc3NfbXNnKFZ1RGV2ICpkZXYsIFZob3N0VXNlck1z ZyAqdm1zZywgaW50ICpkb19yZXBseSkKIHsKICAgICBpZiAodm1zZy0+cmVxdWVzdCA9PSBWSE9T VF9VU0VSX05PTkUpIHsKICAgICAgICAgZGV2LT5wYW5pYyhkZXYsICJkaXNjb25uZWN0Iik7CkBA IC0zMDQsMjkgKzMxMSwyOSBAQCBzdGF0aWMgaW50IHZ1X2Jsb2NrX3Byb2Nlc3NfbXNnKFZ1RGV2 ICpkZXYsIFZob3N0VXNlck1zZyAqdm1zZywgaW50ICpkb19yZXBseSkKICAgICByZXR1cm4gZmFs c2U7CiB9CiAKLXN0YXRpYyBjb25zdCBWdURldklmYWNlIHZ1X2Jsb2NrX2lmYWNlID0gewotICAg IC5nZXRfZmVhdHVyZXMgICAgICAgICAgPSB2dV9ibG9ja19nZXRfZmVhdHVyZXMsCi0gICAgLnF1 ZXVlX3NldF9zdGFydGVkICAgICA9IHZ1X2Jsb2NrX3F1ZXVlX3NldF9zdGFydGVkLAotICAgIC5n ZXRfcHJvdG9jb2xfZmVhdHVyZXMgPSB2dV9ibG9ja19nZXRfcHJvdG9jb2xfZmVhdHVyZXMsCi0g ICAgLmdldF9jb25maWcgICAgICAgICAgICA9IHZ1X2Jsb2NrX2dldF9jb25maWcsCi0gICAgLnNl dF9jb25maWcgICAgICAgICAgICA9IHZ1X2Jsb2NrX3NldF9jb25maWcsCi0gICAgLnByb2Nlc3Nf bXNnICAgICAgICAgICA9IHZ1X2Jsb2NrX3Byb2Nlc3NfbXNnLAorc3RhdGljIGNvbnN0IFZ1RGV2 SWZhY2UgdnVfYmxrX2lmYWNlID0geworICAgIC5nZXRfZmVhdHVyZXMgICAgICAgICAgPSB2dV9i bGtfZ2V0X2ZlYXR1cmVzLAorICAgIC5xdWV1ZV9zZXRfc3RhcnRlZCAgICAgPSB2dV9ibGtfcXVl dWVfc2V0X3N0YXJ0ZWQsCisgICAgLmdldF9wcm90b2NvbF9mZWF0dXJlcyA9IHZ1X2Jsa19nZXRf cHJvdG9jb2xfZmVhdHVyZXMsCisgICAgLmdldF9jb25maWcgICAgICAgICAgICA9IHZ1X2Jsa19n ZXRfY29uZmlnLAorICAgIC5zZXRfY29uZmlnICAgICAgICAgICAgPSB2dV9ibGtfc2V0X2NvbmZp ZywKKyAgICAucHJvY2Vzc19tc2cgICAgICAgICAgID0gdnVfYmxrX3Byb2Nlc3NfbXNnLAogfTsK IAogc3RhdGljIHZvaWQgYmxrX2Fpb19hdHRhY2hlZChBaW9Db250ZXh0ICpjdHgsIHZvaWQgKm9w YXF1ZSkKIHsKLSAgICBWdUJsb2NrRGV2ICp2dWJfZGV2ID0gb3BhcXVlOwotICAgIHZob3N0X3Vz ZXJfc2VydmVyX2F0dGFjaF9haW9fY29udGV4dCgmdnViX2Rldi0+dnVfc2VydmVyLCBjdHgpOwor ICAgIFZ1QmxrRXhwb3J0ICp2ZXhwID0gb3BhcXVlOworICAgIHZob3N0X3VzZXJfc2VydmVyX2F0 dGFjaF9haW9fY29udGV4dCgmdmV4cC0+dnVfc2VydmVyLCBjdHgpOwogfQogCiBzdGF0aWMgdm9p ZCBibGtfYWlvX2RldGFjaCh2b2lkICpvcGFxdWUpCiB7Ci0gICAgVnVCbG9ja0RldiAqdnViX2Rl diA9IG9wYXF1ZTsKLSAgICB2aG9zdF91c2VyX3NlcnZlcl9kZXRhY2hfYWlvX2NvbnRleHQoJnZ1 Yl9kZXYtPnZ1X3NlcnZlcik7CisgICAgVnVCbGtFeHBvcnQgKnZleHAgPSBvcGFxdWU7CisgICAg dmhvc3RfdXNlcl9zZXJ2ZXJfZGV0YWNoX2Fpb19jb250ZXh0KCZ2ZXhwLT52dV9zZXJ2ZXIpOwog fQogCiBzdGF0aWMgdm9pZAotdnVfYmxvY2tfaW5pdGlhbGl6ZV9jb25maWcoQmxvY2tEcml2ZXJT dGF0ZSAqYnMsCit2dV9ibGtfaW5pdGlhbGl6ZV9jb25maWcoQmxvY2tEcml2ZXJTdGF0ZSAqYnMs CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdmlydGlvX2Jsa19jb25maWcgKmNv bmZpZywgdWludDMyX3QgYmxrX3NpemUpCiB7CiAgICAgY29uZmlnLT5jYXBhY2l0eSA9IGJkcnZf Z2V0bGVuZ3RoKGJzKSA+PiBCRFJWX1NFQ1RPUl9CSVRTOwpAQCAtMzQzLDI5MCArMzUwLDY3IEBA IHZ1X2Jsb2NrX2luaXRpYWxpemVfY29uZmlnKEJsb2NrRHJpdmVyU3RhdGUgKmJzLAogICAgIGNv bmZpZy0+bWF4X3dyaXRlX3plcm9lc19zZWcgPSAxOwogfQogCi1zdGF0aWMgVnVCbG9ja0RldiAq dnVfYmxvY2tfaW5pdChWdUJsb2NrRGV2ICp2dV9ibG9ja19kZXZpY2UsIEVycm9yICoqZXJycCkK K3N0YXRpYyB2b2lkIHZ1X2Jsa19leHBfcmVxdWVzdF9zaHV0ZG93bihCbG9ja0V4cG9ydCAqZXhw KQogeworICAgIFZ1QmxrRXhwb3J0ICp2ZXhwID0gY29udGFpbmVyX29mKGV4cCwgVnVCbGtFeHBv cnQsIGV4cG9ydCk7CiAKLSAgICBCbG9ja0JhY2tlbmQgKmJsazsKLSAgICBFcnJvciAqbG9jYWxf ZXJyb3IgPSBOVUxMOwotICAgIGNvbnN0IGNoYXIgKm5vZGVfbmFtZSA9IHZ1X2Jsb2NrX2Rldmlj ZS0+bm9kZV9uYW1lOwotICAgIGJvb2wgd3JpdGFibGUgPSB2dV9ibG9ja19kZXZpY2UtPndyaXRh YmxlOwotICAgIHVpbnQ2NF90IHBlcm0gPSBCTEtfUEVSTV9DT05TSVNURU5UX1JFQUQ7Ci0gICAg aW50IHJldDsKLQotICAgIEFpb0NvbnRleHQgKmN0eDsKLQotICAgIEJsb2NrRHJpdmVyU3RhdGUg KmJzID0gYmRydl9sb29rdXBfYnMobm9kZV9uYW1lLCBub2RlX25hbWUsICZsb2NhbF9lcnJvcik7 Ci0KLSAgICBpZiAoIWJzKSB7Ci0gICAgICAgIGVycm9yX3Byb3BhZ2F0ZShlcnJwLCBsb2NhbF9l cnJvcik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQotICAgIGlmIChiZHJ2X2lzX3Jl YWRfb25seShicykpIHsKLSAgICAgICAgd3JpdGFibGUgPSBmYWxzZTsKLSAgICB9Ci0KLSAgICBp ZiAod3JpdGFibGUpIHsKLSAgICAgICAgcGVybSB8PSBCTEtfUEVSTV9XUklURTsKLSAgICB9Ci0K LSAgICBjdHggPSBiZHJ2X2dldF9haW9fY29udGV4dChicyk7Ci0gICAgYWlvX2NvbnRleHRfYWNx dWlyZShjdHgpOwotICAgIGJkcnZfaW52YWxpZGF0ZV9jYWNoZShicywgTlVMTCk7Ci0gICAgYWlv X2NvbnRleHRfcmVsZWFzZShjdHgpOwotCi0gICAgLyoKLSAgICAgKiBEb24ndCBhbGxvdyByZXNp emUgd2hpbGUgdGhlIHZob3N0IHVzZXIgc2VydmVyIGlzIHJ1bm5pbmcsCi0gICAgICogb3RoZXJ3 aXNlIHdlIGRvbid0IGNhcmUgd2hhdCBoYXBwZW5zIHdpdGggdGhlIG5vZGUuCi0gICAgICovCi0g ICAgYmxrID0gYmxrX25ldyhiZHJ2X2dldF9haW9fY29udGV4dChicyksIHBlcm0sCi0gICAgICAg ICAgICAgICAgICBCTEtfUEVSTV9DT05TSVNURU5UX1JFQUQgfCBCTEtfUEVSTV9XUklURV9VTkNI QU5HRUQgfAotICAgICAgICAgICAgICAgICAgQkxLX1BFUk1fV1JJVEUgfCBCTEtfUEVSTV9HUkFQ SF9NT0QpOwotICAgIHJldCA9IGJsa19pbnNlcnRfYnMoYmxrLCBicywgZXJycCk7Ci0KLSAgICBp ZiAocmV0IDwgMCkgewotICAgICAgICBnb3RvIGZhaWw7Ci0gICAgfQotCi0gICAgYmxrX3NldF9l bmFibGVfd3JpdGVfY2FjaGUoYmxrLCBmYWxzZSk7Ci0KLSAgICBibGtfc2V0X2FsbG93X2Fpb19j b250ZXh0X2NoYW5nZShibGssIHRydWUpOwotCi0gICAgdnVfYmxvY2tfZGV2aWNlLT5ibGtjZmcu d2NlID0gMDsKLSAgICB2dV9ibG9ja19kZXZpY2UtPmJhY2tlbmQgPSBibGs7Ci0gICAgaWYgKCF2 dV9ibG9ja19kZXZpY2UtPmJsa19zaXplKSB7Ci0gICAgICAgIHZ1X2Jsb2NrX2RldmljZS0+Ymxr X3NpemUgPSBCRFJWX1NFQ1RPUl9TSVpFOwotICAgIH0KLSAgICB2dV9ibG9ja19kZXZpY2UtPmJs a2NmZy5ibGtfc2l6ZSA9IHZ1X2Jsb2NrX2RldmljZS0+YmxrX3NpemU7Ci0gICAgYmxrX3NldF9n dWVzdF9ibG9ja19zaXplKGJsaywgdnVfYmxvY2tfZGV2aWNlLT5ibGtfc2l6ZSk7Ci0gICAgdnVf YmxvY2tfaW5pdGlhbGl6ZV9jb25maWcoYnMsICZ2dV9ibG9ja19kZXZpY2UtPmJsa2NmZywKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdnVfYmxvY2tfZGV2aWNlLT5ibGtfc2l6 ZSk7Ci0gICAgcmV0dXJuIHZ1X2Jsb2NrX2RldmljZTsKLQotZmFpbDoKLSAgICBibGtfdW5yZWYo YmxrKTsKLSAgICByZXR1cm4gTlVMTDsKLX0KLQotc3RhdGljIHZvaWQgdnVfYmxvY2tfZGVpbml0 KFZ1QmxvY2tEZXYgKnZ1X2Jsb2NrX2RldmljZSkKLXsKLSAgICBpZiAodnVfYmxvY2tfZGV2aWNl LT5iYWNrZW5kKSB7Ci0gICAgICAgIGJsa19yZW1vdmVfYWlvX2NvbnRleHRfbm90aWZpZXIodnVf YmxvY2tfZGV2aWNlLT5iYWNrZW5kLCBibGtfYWlvX2F0dGFjaGVkLAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGJsa19haW9fZGV0YWNoLCB2dV9ibG9ja19kZXZpY2Up OwotICAgIH0KLQotICAgIGJsa191bnJlZih2dV9ibG9ja19kZXZpY2UtPmJhY2tlbmQpOwotfQot Ci1zdGF0aWMgdm9pZCB2aG9zdF91c2VyX2Jsa19zZXJ2ZXJfc3RvcChWdUJsb2NrRGV2ICp2dV9i bG9ja19kZXZpY2UpCi17Ci0gICAgdmhvc3RfdXNlcl9zZXJ2ZXJfc3RvcCgmdnVfYmxvY2tfZGV2 aWNlLT52dV9zZXJ2ZXIpOwotICAgIHZ1X2Jsb2NrX2RlaW5pdCh2dV9ibG9ja19kZXZpY2UpOwot fQotCi1zdGF0aWMgdm9pZCB2aG9zdF91c2VyX2Jsa19zZXJ2ZXJfc3RhcnQoVnVCbG9ja0RldiAq dnVfYmxvY2tfZGV2aWNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IEVycm9yICoqZXJycCkKLXsKLSAgICBBaW9Db250ZXh0ICpjdHg7Ci0gICAgU29ja2V0QWRkcmVz cyAqYWRkciA9IHZ1X2Jsb2NrX2RldmljZS0+YWRkcjsKLQotICAgIGlmICghdnVfYmxvY2tfaW5p dCh2dV9ibG9ja19kZXZpY2UsIGVycnApKSB7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg ICBjdHggPSBiZHJ2X2dldF9haW9fY29udGV4dChibGtfYnModnVfYmxvY2tfZGV2aWNlLT5iYWNr ZW5kKSk7Ci0KLSAgICBpZiAoIXZob3N0X3VzZXJfc2VydmVyX3N0YXJ0KCZ2dV9ibG9ja19kZXZp Y2UtPnZ1X3NlcnZlciwgYWRkciwgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgVkhPU1RfVVNFUl9CTEtfTUFYX1FVRVVFUywgJnZ1X2Jsb2NrX2lmYWNlLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZXJycCkpIHsKLSAgICAgICAgZ290byBlcnJvcjsKLSAg ICB9Ci0KLSAgICBibGtfYWRkX2Fpb19jb250ZXh0X25vdGlmaWVyKHZ1X2Jsb2NrX2RldmljZS0+ YmFja2VuZCwgYmxrX2Fpb19hdHRhY2hlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGJsa19haW9fZGV0YWNoLCB2dV9ibG9ja19kZXZpY2UpOwotICAgIHZ1X2Jsb2NrX2Rldmlj ZS0+cnVubmluZyA9IHRydWU7Ci0gICAgcmV0dXJuOwotCi0gZXJyb3I6Ci0gICAgdnVfYmxvY2tf ZGVpbml0KHZ1X2Jsb2NrX2RldmljZSk7Ci19Ci0KLXN0YXRpYyBib29sIHZ1X3Byb3BfbW9kaWZp YWJsZShWdUJsb2NrRGV2ICp2dXMsIEVycm9yICoqZXJycCkKLXsKLSAgICBpZiAodnVzLT5ydW5u aW5nKSB7Ci0gICAgICAgICAgICBlcnJvcl9zZXRnKGVycnAsICJUaGUgcHJvcGVydHkgY2FuJ3Qg YmUgbW9kaWZpZWQgIgotICAgICAgICAgICAgICAgICAgICAgICAid2hpbGUgdGhlIHNlcnZlciBp cyBydW5uaW5nIik7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIHJldHVy biB0cnVlOwotfQotCi1zdGF0aWMgdm9pZCB2dV9zZXRfbm9kZV9uYW1lKE9iamVjdCAqb2JqLCBj b25zdCBjaGFyICp2YWx1ZSwgRXJyb3IgKiplcnJwKQotewotICAgIFZ1QmxvY2tEZXYgKnZ1cyA9 IFZIT1NUX1VTRVJfQkxLX1NFUlZFUihvYmopOwotCi0gICAgaWYgKCF2dV9wcm9wX21vZGlmaWFi bGUodnVzLCBlcnJwKSkgewotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKHZ1cy0+ bm9kZV9uYW1lKSB7Ci0gICAgICAgIGdfZnJlZSh2dXMtPm5vZGVfbmFtZSk7Ci0gICAgfQotCi0g ICAgdnVzLT5ub2RlX25hbWUgPSBnX3N0cmR1cCh2YWx1ZSk7Ci19Ci0KLXN0YXRpYyBjaGFyICp2 dV9nZXRfbm9kZV9uYW1lKE9iamVjdCAqb2JqLCBFcnJvciAqKmVycnApCi17Ci0gICAgVnVCbG9j a0RldiAqdnVzID0gVkhPU1RfVVNFUl9CTEtfU0VSVkVSKG9iaik7Ci0gICAgcmV0dXJuIGdfc3Ry ZHVwKHZ1cy0+bm9kZV9uYW1lKTsKLX0KLQotc3RhdGljIHZvaWQgZnJlZV9zb2NrZXRfYWRkcihT b2NrZXRBZGRyZXNzICphZGRyKQotewotICAgICAgICBnX2ZyZWUoYWRkci0+dS5xX3VuaXgucGF0 aCk7Ci0gICAgICAgIGdfZnJlZShhZGRyKTsKLX0KLQotc3RhdGljIHZvaWQgdnVfc2V0X3VuaXhf c29ja2V0KE9iamVjdCAqb2JqLCBjb25zdCBjaGFyICp2YWx1ZSwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBFcnJvciAqKmVycnApCi17Ci0gICAgVnVCbG9ja0RldiAqdnVzID0gVkhP U1RfVVNFUl9CTEtfU0VSVkVSKG9iaik7Ci0KLSAgICBpZiAoIXZ1X3Byb3BfbW9kaWZpYWJsZSh2 dXMsIGVycnApKSB7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAodnVzLT5hZGRy KSB7Ci0gICAgICAgIGZyZWVfc29ja2V0X2FkZHIodnVzLT5hZGRyKTsKLSAgICB9Ci0KLSAgICBT b2NrZXRBZGRyZXNzICphZGRyID0gZ19uZXcwKFNvY2tldEFkZHJlc3MsIDEpOwotICAgIGFkZHIt PnR5cGUgPSBTT0NLRVRfQUREUkVTU19UWVBFX1VOSVg7Ci0gICAgYWRkci0+dS5xX3VuaXgucGF0 aCA9IGdfc3RyZHVwKHZhbHVlKTsKLSAgICB2dXMtPmFkZHIgPSBhZGRyOworICAgIHZob3N0X3Vz ZXJfc2VydmVyX3N0b3AoJnZleHAtPnZ1X3NlcnZlcik7CiB9CiAKLXN0YXRpYyBjaGFyICp2dV9n ZXRfdW5peF9zb2NrZXQoT2JqZWN0ICpvYmosIEVycm9yICoqZXJycCkKK3N0YXRpYyBpbnQgdnVf YmxrX2V4cF9jcmVhdGUoQmxvY2tFeHBvcnQgKmV4cCwgQmxvY2tFeHBvcnRPcHRpb25zICpvcHRz LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFcnJvciAqKmVycnApCiB7Ci0gICAgVnVC bG9ja0RldiAqdnVzID0gVkhPU1RfVVNFUl9CTEtfU0VSVkVSKG9iaik7Ci0gICAgcmV0dXJuIGdf c3RyZHVwKHZ1cy0+YWRkci0+dS5xX3VuaXgucGF0aCk7Ci19Ci0KLXN0YXRpYyBib29sIHZ1X2dl dF9ibG9ja193cml0YWJsZShPYmplY3QgKm9iaiwgRXJyb3IgKiplcnJwKQotewotICAgIFZ1Qmxv Y2tEZXYgKnZ1cyA9IFZIT1NUX1VTRVJfQkxLX1NFUlZFUihvYmopOwotICAgIHJldHVybiB2dXMt PndyaXRhYmxlOwotfQotCi1zdGF0aWMgdm9pZCB2dV9zZXRfYmxvY2tfd3JpdGFibGUoT2JqZWN0 ICpvYmosIGJvb2wgdmFsdWUsIEVycm9yICoqZXJycCkKLXsKLSAgICBWdUJsb2NrRGV2ICp2dXMg PSBWSE9TVF9VU0VSX0JMS19TRVJWRVIob2JqKTsKLQotICAgIGlmICghdnVfcHJvcF9tb2RpZmlh YmxlKHZ1cywgZXJycCkpIHsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICB2dXMt PndyaXRhYmxlID0gdmFsdWU7Ci19Ci0KLXN0YXRpYyB2b2lkIHZ1X2dldF9ibGtfc2l6ZShPYmpl Y3QgKm9iaiwgVmlzaXRvciAqdiwgY29uc3QgY2hhciAqbmFtZSwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICB2b2lkICpvcGFxdWUsIEVycm9yICoqZXJycCkKLXsKLSAgICBWdUJsb2NrRGV2 ICp2dXMgPSBWSE9TVF9VU0VSX0JMS19TRVJWRVIob2JqKTsKLSAgICB1aW50MzJfdCB2YWx1ZSA9 IHZ1cy0+YmxrX3NpemU7Ci0KLSAgICB2aXNpdF90eXBlX3VpbnQzMih2LCBuYW1lLCAmdmFsdWUs IGVycnApOwotfQotCi1zdGF0aWMgdm9pZCB2dV9zZXRfYmxrX3NpemUoT2JqZWN0ICpvYmosIFZp c2l0b3IgKnYsIGNvbnN0IGNoYXIgKm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg dm9pZCAqb3BhcXVlLCBFcnJvciAqKmVycnApCi17Ci0gICAgVnVCbG9ja0RldiAqdnVzID0gVkhP U1RfVVNFUl9CTEtfU0VSVkVSKG9iaik7Ci0KKyAgICBWdUJsa0V4cG9ydCAqdmV4cCA9IGNvbnRh aW5lcl9vZihleHAsIFZ1QmxrRXhwb3J0LCBleHBvcnQpOworICAgIEJsb2NrRXhwb3J0T3B0aW9u c1Zob3N0VXNlckJsayAqdnVfb3B0cyA9ICZvcHRzLT51LnZob3N0X3VzZXJfYmxrOwogICAgIEVy cm9yICpsb2NhbF9lcnIgPSBOVUxMOwotICAgIHVpbnQzMl90IHZhbHVlOworICAgIHVpbnQ2NF90 IGxvZ2ljYWxfYmxvY2tfc2l6ZTsKIAotICAgIGlmICghdnVfcHJvcF9tb2RpZmlhYmxlKHZ1cywg ZXJycCkpIHsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICB9CisgICAgdmV4cC0+d3JpdGFibGUg PSBvcHRzLT53cml0YWJsZTsKKyAgICB2ZXhwLT5ibGtjZmcud2NlID0gMDsKIAotICAgIHZpc2l0 X3R5cGVfdWludDMyKHYsIG5hbWUsICZ2YWx1ZSwgJmxvY2FsX2Vycik7Ci0gICAgaWYgKGxvY2Fs X2VycikgewotICAgICAgICBnb3RvIG91dDsKKyAgICBpZiAodnVfb3B0cy0+aGFzX2xvZ2ljYWxf YmxvY2tfc2l6ZSkgeworICAgICAgICBsb2dpY2FsX2Jsb2NrX3NpemUgPSB2dV9vcHRzLT5sb2dp Y2FsX2Jsb2NrX3NpemU7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbG9naWNhbF9ibG9ja19zaXpl ID0gQkRSVl9TRUNUT1JfU0laRTsKICAgICB9Ci0KLSAgICBjaGVja19ibG9ja19zaXplKG9iamVj dF9nZXRfdHlwZW5hbWUob2JqKSwgbmFtZSwgdmFsdWUsICZsb2NhbF9lcnIpOworICAgIGNoZWNr X2Jsb2NrX3NpemUoZXhwLT5pZCwgImxvZ2ljYWwtYmxvY2stc2l6ZSIsIGxvZ2ljYWxfYmxvY2tf c2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICZsb2NhbF9lcnIpOwogICAgIGlmIChsb2NhbF9l cnIpIHsKLSAgICAgICAgZ290byBvdXQ7CisgICAgICAgIGVycm9yX3Byb3BhZ2F0ZShlcnJwLCBs b2NhbF9lcnIpOworICAgICAgICByZXR1cm4gLUVJTlZBTDsKKyAgICB9CisgICAgdmV4cC0+Ymxr X3NpemUgPSBsb2dpY2FsX2Jsb2NrX3NpemU7CisgICAgYmxrX3NldF9ndWVzdF9ibG9ja19zaXpl KGV4cC0+YmxrLCBsb2dpY2FsX2Jsb2NrX3NpemUpOworICAgIHZ1X2Jsa19pbml0aWFsaXplX2Nv bmZpZyhibGtfYnMoZXhwLT5ibGspLCAmdmV4cC0+YmxrY2ZnLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGxvZ2ljYWxfYmxvY2tfc2l6ZSk7CisKKyAgICBibGtfc2V0X2FsbG93X2Fp b19jb250ZXh0X2NoYW5nZShleHAtPmJsaywgdHJ1ZSk7CisgICAgYmxrX2FkZF9haW9fY29udGV4 dF9ub3RpZmllcihleHAtPmJsaywgYmxrX2Fpb19hdHRhY2hlZCwgYmxrX2Fpb19kZXRhY2gsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXhwKTsKKworICAgIGlmICghdmhvc3Rf dXNlcl9zZXJ2ZXJfc3RhcnQoJnZleHAtPnZ1X3NlcnZlciwgdnVfb3B0cy0+YWRkciwgZXhwLT5j dHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWSE9TVF9VU0VSX0JMS19NQVhf UVVFVUVTLCAmdnVfYmxrX2lmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ZXJycCkpIHsKKyAgICAgICAgYmxrX3JlbW92ZV9haW9fY29udGV4dF9ub3RpZmllcihleHAtPmJs aywgYmxrX2Fpb19hdHRhY2hlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBibGtfYWlvX2RldGFjaCwgdmV4cCk7CisgICAgICAgIHJldHVybiAtRUFERFJOT1RBVkFJ TDsKICAgICB9CiAKLSAgICB2dXMtPmJsa19zaXplID0gdmFsdWU7Ci0KLW91dDoKLSAgICBlcnJv cl9wcm9wYWdhdGUoZXJycCwgbG9jYWxfZXJyKTsKLX0KLQotc3RhdGljIHZvaWQgdmhvc3RfdXNl cl9ibGtfc2VydmVyX2luc3RhbmNlX2ZpbmFsaXplKE9iamVjdCAqb2JqKQotewotICAgIFZ1Qmxv Y2tEZXYgKnZ1YiA9IFZIT1NUX1VTRVJfQkxLX1NFUlZFUihvYmopOwotCi0gICAgdmhvc3RfdXNl cl9ibGtfc2VydmVyX3N0b3AodnViKTsKLQotICAgIC8qCi0gICAgICogVW5saWtlIG9iamVjdF9w cm9wZXJ0eV9hZGRfc3RyLCBvYmplY3RfY2xhc3NfcHJvcGVydHlfYWRkX3N0cgotICAgICAqIGRv ZXNuJ3QgaGF2ZSBhIHJlbGVhc2UgbWV0aG9kLiBUaHVzIG1hbnVhbCBtZW1vcnkgZnJlZWluZyBp cwotICAgICAqIG5lZWRlZC4KLSAgICAgKi8KLSAgICBmcmVlX3NvY2tldF9hZGRyKHZ1Yi0+YWRk cik7Ci0gICAgZ19mcmVlKHZ1Yi0+bm9kZV9uYW1lKTsKLX0KLQotc3RhdGljIHZvaWQgdmhvc3Rf dXNlcl9ibGtfc2VydmVyX2NvbXBsZXRlKFVzZXJDcmVhdGFibGUgKm9iaiwgRXJyb3IgKiplcnJw KQotewotICAgIFZ1QmxvY2tEZXYgKnZ1YiA9IFZIT1NUX1VTRVJfQkxLX1NFUlZFUihvYmopOwot Ci0gICAgdmhvc3RfdXNlcl9ibGtfc2VydmVyX3N0YXJ0KHZ1YiwgZXJycCk7CisgICAgcmV0dXJu IDA7CiB9CiAKLXN0YXRpYyB2b2lkIHZob3N0X3VzZXJfYmxrX3NlcnZlcl9jbGFzc19pbml0KE9i amVjdENsYXNzICprbGFzcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHZvaWQgKmNsYXNzX2RhdGEpCitzdGF0aWMgdm9pZCB2dV9ibGtfZXhwX2RlbGV0ZShC bG9ja0V4cG9ydCAqZXhwKQogewotICAgIFVzZXJDcmVhdGFibGVDbGFzcyAqdWNjID0gVVNFUl9D UkVBVEFCTEVfQ0xBU1Moa2xhc3MpOwotICAgIHVjYy0+Y29tcGxldGUgPSB2aG9zdF91c2VyX2Js a19zZXJ2ZXJfY29tcGxldGU7Ci0KLSAgICBvYmplY3RfY2xhc3NfcHJvcGVydHlfYWRkX2Jvb2wo a2xhc3MsICJ3cml0YWJsZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZ1 X2dldF9ibG9ja193cml0YWJsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg dnVfc2V0X2Jsb2NrX3dyaXRhYmxlKTsKLQotICAgIG9iamVjdF9jbGFzc19wcm9wZXJ0eV9hZGRf c3RyKGtsYXNzLCAibm9kZS1uYW1lIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB2dV9nZXRfbm9kZV9uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZ1 X3NldF9ub2RlX25hbWUpOwotCi0gICAgb2JqZWN0X2NsYXNzX3Byb3BlcnR5X2FkZF9zdHIoa2xh c3MsICJ1bml4LXNvY2tldCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdnVf Z2V0X3VuaXhfc29ja2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZ1X3Nl dF91bml4X3NvY2tldCk7CisgICAgVnVCbGtFeHBvcnQgKnZleHAgPSBjb250YWluZXJfb2YoZXhw LCBWdUJsa0V4cG9ydCwgZXhwb3J0KTsKIAotICAgIG9iamVjdF9jbGFzc19wcm9wZXJ0eV9hZGQo a2xhc3MsICJsb2dpY2FsLWJsb2NrLXNpemUiLCAidWludDMyIiwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHZ1X2dldF9ibGtfc2l6ZSwgdnVfc2V0X2Jsa19zaXplLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgTlVMTCwgTlVMTCk7CisgICAgYmxrX3JlbW92ZV9haW9fY29u dGV4dF9ub3RpZmllcihleHAtPmJsaywgYmxrX2Fpb19hdHRhY2hlZCwgYmxrX2Fpb19kZXRhY2gs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXhwKTsKIH0KIAotc3RhdGlj IGNvbnN0IFR5cGVJbmZvIHZob3N0X3VzZXJfYmxrX3NlcnZlcl9pbmZvID0gewotICAgIC5uYW1l ID0gVFlQRV9WSE9TVF9VU0VSX0JMS19TRVJWRVIsCi0gICAgLnBhcmVudCA9IFRZUEVfT0JKRUNU LAotICAgIC5pbnN0YW5jZV9zaXplID0gc2l6ZW9mKFZ1QmxvY2tEZXYpLAotICAgIC5pbnN0YW5j ZV9maW5hbGl6ZSA9IHZob3N0X3VzZXJfYmxrX3NlcnZlcl9pbnN0YW5jZV9maW5hbGl6ZSwKLSAg ICAuY2xhc3NfaW5pdCA9IHZob3N0X3VzZXJfYmxrX3NlcnZlcl9jbGFzc19pbml0LAotICAgIC5p bnRlcmZhY2VzID0gKEludGVyZmFjZUluZm9bXSkgewotICAgICAgICB7VFlQRV9VU0VSX0NSRUFU QUJMRX0sCi0gICAgICAgIHt9Ci0gICAgfSwKK2NvbnN0IEJsb2NrRXhwb3J0RHJpdmVyIGJsa19l eHBfdmhvc3RfdXNlcl9ibGsgPSB7CisgICAgLnR5cGUgICAgICAgICAgICAgICA9IEJMT0NLX0VY UE9SVF9UWVBFX1ZIT1NUX1VTRVJfQkxLLAorICAgIC5pbnN0YW5jZV9zaXplICAgICAgPSBzaXpl b2YoVnVCbGtFeHBvcnQpLAorICAgIC5jcmVhdGUgICAgICAgICAgICAgPSB2dV9ibGtfZXhwX2Ny ZWF0ZSwKKyAgICAuZGVsZXRlICAgICAgICAgICAgID0gdnVfYmxrX2V4cF9kZWxldGUsCisgICAg LnJlcXVlc3Rfc2h1dGRvd24gICA9IHZ1X2Jsa19leHBfcmVxdWVzdF9zaHV0ZG93biwKIH07Ci0K LXN0YXRpYyB2b2lkIHZob3N0X3VzZXJfYmxrX3NlcnZlcl9yZWdpc3Rlcl90eXBlcyh2b2lkKQot ewotICAgIHR5cGVfcmVnaXN0ZXJfc3RhdGljKCZ2aG9zdF91c2VyX2Jsa19zZXJ2ZXJfaW5mbyk7 Ci19Ci0KLXR5cGVfaW5pdCh2aG9zdF91c2VyX2Jsa19zZXJ2ZXJfcmVnaXN0ZXJfdHlwZXMpCmRp ZmYgLS1naXQgYS90ZXN0cy9xdGVzdC92aG9zdC11c2VyLWJsay10ZXN0LmMgYi90ZXN0cy9xdGVz dC92aG9zdC11c2VyLWJsay10ZXN0LmMKaW5kZXggZDRjY2FjNmI1NC4uNDJlNGNmZGU4MiAxMDA2 NDQKLS0tIGEvdGVzdHMvcXRlc3Qvdmhvc3QtdXNlci1ibGstdGVzdC5jCisrKyBiL3Rlc3RzL3F0 ZXN0L3Zob3N0LXVzZXItYmxrLXRlc3QuYwpAQCAtNjc0LDcgKzY3NCw3IEBAIHN0YXRpYyBjaGFy ICpzdGFydF92aG9zdF91c2VyX2JsayhHU3RyaW5nICpjbWRfbGluZSwgaW50IHZ1c19pbnN0YW5j ZXMpCiAgICAgICAgIGltZ19wYXRoID0gZHJpdmVfY3JlYXRlKCk7CiAgICAgICAgIGdfc3RyaW5n X2FwcGVuZF9wcmludGYoc3RvcmFnZV9kYWVtb25fY29tbWFuZCwKICAgICAgICAgICAgICItLWJs b2NrZGV2IGRyaXZlcj1maWxlLG5vZGUtbmFtZT1kaXNrJWQsZmlsZW5hbWU9JXMgIgotICAgICAg ICAgICAgIi0tb2JqZWN0IHZob3N0LXVzZXItYmxrLXNlcnZlcixpZD1kaXNrJWQsdW5peC1zb2Nr ZXQ9JXMsIgorICAgICAgICAgICAgIi0tZXhwb3J0IHR5cGU9dmhvc3QtdXNlci1ibGssaWQ9ZGlz ayVkLGFkZHIudHlwZT11bml4LGFkZHIucGF0aD0lcywiCiAgICAgICAgICAgICAibm9kZS1uYW1l PWRpc2slaSx3cml0YWJsZT1vbiAiLAogICAgICAgICAgICAgaSwgaW1nX3BhdGgsIGksIHNvY2tf cGF0aCwgaSk7CiAKZGlmZiAtLWdpdCBhL3V0aWwvdmhvc3QtdXNlci1zZXJ2ZXIuYyBiL3V0aWwv dmhvc3QtdXNlci1zZXJ2ZXIuYwppbmRleCBkOGI4YzA4YjVmLi4yYTI3MTM5ZWI4IDEwMDY0NAot LS0gYS91dGlsL3Zob3N0LXVzZXItc2VydmVyLmMKKysrIGIvdXRpbC92aG9zdC11c2VyLXNlcnZl ci5jCkBAIC00MDgsNyArNDA4LDE1IEBAIGJvb2wgdmhvc3RfdXNlcl9zZXJ2ZXJfc3RhcnQoVnVT ZXJ2ZXIgKnNlcnZlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXJyb3IgKiplcnJw KQogewogICAgIFFFTVVCSCAqYmg7Ci0gICAgUUlPTmV0TGlzdGVuZXIgKmxpc3RlbmVyID0gcWlv X25ldF9saXN0ZW5lcl9uZXcoKTsKKyAgICBRSU9OZXRMaXN0ZW5lciAqbGlzdGVuZXI7CisKKyAg ICBpZiAoc29ja2V0X2FkZHItPnR5cGUgIT0gU09DS0VUX0FERFJFU1NfVFlQRV9VTklYICYmCisg ICAgICAgIHNvY2tldF9hZGRyLT50eXBlICE9IFNPQ0tFVF9BRERSRVNTX1RZUEVfRkQpIHsKKyAg ICAgICAgZXJyb3Jfc2V0ZyhlcnJwLCAiT25seSBzb2NrZXQgYWRkcmVzcyB0eXBlcyAndW5peCcg YW5kICdmZCcgYXJlIHN1cHBvcnRlZCIpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor CisgICAgbGlzdGVuZXIgPSBxaW9fbmV0X2xpc3RlbmVyX25ldygpOwogICAgIGlmIChxaW9fbmV0 X2xpc3RlbmVyX29wZW5fc3luYyhsaXN0ZW5lciwgc29ja2V0X2FkZHIsIDEsCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGVycnApIDwgMCkgewogICAgICAgICBvYmplY3RfdW5y ZWYoT0JKRUNUKGxpc3RlbmVyKSk7CmRpZmYgLS1naXQgYS9ibG9jay9leHBvcnQvbWVzb24uYnVp bGQgYi9ibG9jay9leHBvcnQvbWVzb24uYnVpbGQKaW5kZXggNTU4ZWYzNWQzOC4uZWYzYTk1NzZm NyAxMDA2NDQKLS0tIGEvYmxvY2svZXhwb3J0L21lc29uLmJ1aWxkCisrKyBiL2Jsb2NrL2V4cG9y dC9tZXNvbi5idWlsZApAQCAtMSArMSwyIEBACiBibG9ja19zcy5hZGQoZmlsZXMoJ2V4cG9ydC5j JykpCitibG9ja19zcy5hZGQod2hlbjogJ0NPTkZJR19MSU5VWCcsIGlmX3RydWU6IGZpbGVzKCd2 aG9zdC11c2VyLWJsay1zZXJ2ZXIuYycsICcuLi8uLi9jb250cmliL2xpYnZob3N0LXVzZXIvbGli dmhvc3QtdXNlci5jJykpCmRpZmYgLS1naXQgYS9ibG9jay9tZXNvbi5idWlsZCBiL2Jsb2NrL21l c29uLmJ1aWxkCmluZGV4IGNkNTIxMDRjODQuLjBiMzhkYzM2ZjcgMTAwNjQ0Ci0tLSBhL2Jsb2Nr L21lc29uLmJ1aWxkCisrKyBiL2Jsb2NrL21lc29uLmJ1aWxkCkBAIC02MCw3ICs2MCw2IEBAIGJs b2NrX3NzLmFkZCh3aGVuOiAnQ09ORklHX1dJTjMyJywgaWZfdHJ1ZTogZmlsZXMoJ2ZpbGUtd2lu MzIuYycsICd3aW4zMi1haW8uYycpCiBibG9ja19zcy5hZGQod2hlbjogJ0NPTkZJR19QT1NJWCcs IGlmX3RydWU6IFtmaWxlcygnZmlsZS1wb3NpeC5jJyksIGNvcmVmLCBpb2tpdF0pCiBibG9ja19z cy5hZGQod2hlbjogJ0NPTkZJR19MSUJJU0NTSScsIGlmX3RydWU6IGZpbGVzKCdpc2NzaS1vcHRz LmMnKSkKIGJsb2NrX3NzLmFkZCh3aGVuOiAnQ09ORklHX0xJTlVYJywgaWZfdHJ1ZTogZmlsZXMo J252bWUuYycpKQotYmxvY2tfc3MuYWRkKHdoZW46ICdDT05GSUdfTElOVVgnLCBpZl90cnVlOiBm aWxlcygnZXhwb3J0L3Zob3N0LXVzZXItYmxrLXNlcnZlci5jJywgJy4uL2NvbnRyaWIvbGlidmhv c3QtdXNlci9saWJ2aG9zdC11c2VyLmMnKSkKIGJsb2NrX3NzLmFkZCh3aGVuOiAnQ09ORklHX1JF UExJQ0FUSU9OJywgaWZfdHJ1ZTogZmlsZXMoJ3JlcGxpY2F0aW9uLmMnKSkKIGJsb2NrX3NzLmFk ZCh3aGVuOiAnQ09ORklHX1NIRUVQRE9HJywgaWZfdHJ1ZTogZmlsZXMoJ3NoZWVwZG9nLmMnKSkK IGJsb2NrX3NzLmFkZCh3aGVuOiBbJ0NPTkZJR19MSU5VWF9BSU8nLCBsaWJhaW9dLCBpZl90cnVl OiBmaWxlcygnbGludXgtYWlvLmMnKSkKLS0gCjIuMjYuMgoK