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=-9.7 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_AGENT_GIT 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 2D709C3404D for ; Wed, 19 Feb 2020 08:12:05 +0000 (UTC) Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (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 F1E522176D for ; Wed, 19 Feb 2020 08:12:04 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org F1E522176D Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=suse.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1j4KSS-0008A7-M2; Wed, 19 Feb 2020 08:11:48 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1j4KSR-00089h-Je for xen-devel@lists.xenproject.org; Wed, 19 Feb 2020 08:11:47 +0000 X-Inumbo-ID: 6f4e0316-52ef-11ea-ade5-bc764e2007e4 Received: from mx2.suse.de (unknown [195.135.220.15]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id 6f4e0316-52ef-11ea-ade5-bc764e2007e4; Wed, 19 Feb 2020 08:11:31 +0000 (UTC) X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay2.suse.de (unknown [195.135.220.254]) by mx2.suse.de (Postfix) with ESMTP id 24345B26D; Wed, 19 Feb 2020 08:11:30 +0000 (UTC) From: Juergen Gross To: xen-devel@lists.xenproject.org Date: Wed, 19 Feb 2020 09:11:22 +0100 Message-Id: <20200219081126.29534-5-jgross@suse.com> X-Mailer: git-send-email 2.16.4 In-Reply-To: <20200219081126.29534-1-jgross@suse.com> References: <20200219081126.29534-1-jgross@suse.com> Subject: [Xen-devel] [PATCH v5 4/8] libs: add libxenhypfs X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: Juergen Gross , Stefano Stabellini , Julien Grall , Wei Liu , Konrad Rzeszutek Wilk , George Dunlap , Andrew Cooper , Ian Jackson , Jan Beulich MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" QWRkIHRoZSBuZXcgbGlicmFyeSBsaWJ4ZW5oeXBmcyBmb3IgYWNjZXNzIHRvIHRoZSBoeXBlcnZp c29yIGZpbGVzeXN0ZW0uCgpTaWduZWQtb2ZmLWJ5OiBKdWVyZ2VuIEdyb3NzIDxqZ3Jvc3NAc3Vz ZS5jb20+CkFja2VkLWJ5OiBXZWkgTGl1IDx3bEB4ZW4ub3JnPgotLS0KVjE6Ci0gcmVuYW1lIHRv IGxpYnhlbmh5cGZzCi0gYWRkIHhlbmh5cGZzX3dyaXRlKCkKClYzOgotIG1ham9yIHJld29yayBk dWUgdG8gbmV3IGh5cGVydmlzb3IgaW50ZXJmYWNlCi0gYWRkIGRlY29tcHJlc3Npb24gY2FwYWJp bGl0eQoKVjQ6Ci0gYWRkIGRlcGVuZGVuY3kgdG8gbGlieiBpbiBwa2djb25maWcgZmlsZSAoV2Vp IExpdSkKLS0tCiAuZ2l0aWdub3JlICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMiArCiB0 b29scy9SdWxlcy5tayAgICAgICAgICAgICAgICAgICAgICB8ICAgNiArCiB0b29scy9saWJzL01h a2VmaWxlICAgICAgICAgICAgICAgICB8ICAgMSArCiB0b29scy9saWJzL2h5cGZzL01ha2VmaWxl ICAgICAgICAgICB8ICAxNiArKwogdG9vbHMvbGlicy9oeXBmcy9jb3JlLmMgICAgICAgICAgICAg fCA1MzMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiB0b29scy9saWJzL2h5 cGZzL2luY2x1ZGUveGVuaHlwZnMuaCB8ICA3NSArKysrKwogdG9vbHMvbGlicy9oeXBmcy9saWJ4 ZW5oeXBmcy5tYXAgICAgfCAgMTAgKwogdG9vbHMvbGlicy9oeXBmcy94ZW5oeXBmcy5wYy5pbiAg ICAgfCAgMTAgKwogOCBmaWxlcyBjaGFuZ2VkLCA2NTMgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1v ZGUgMTAwNjQ0IHRvb2xzL2xpYnMvaHlwZnMvTWFrZWZpbGUKIGNyZWF0ZSBtb2RlIDEwMDY0NCB0 b29scy9saWJzL2h5cGZzL2NvcmUuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHRvb2xzL2xpYnMvaHlw ZnMvaW5jbHVkZS94ZW5oeXBmcy5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgdG9vbHMvbGlicy9oeXBm cy9saWJ4ZW5oeXBmcy5tYXAKIGNyZWF0ZSBtb2RlIDEwMDY0NCB0b29scy9saWJzL2h5cGZzL3hl bmh5cGZzLnBjLmluCgpkaWZmIC0tZ2l0IGEvLmdpdGlnbm9yZSBiLy5naXRpZ25vcmUKaW5kZXgg YjI2MjRkZjc5YS4uZTk4YzNmMDU2ZCAxMDA2NDQKLS0tIGEvLmdpdGlnbm9yZQorKysgYi8uZ2l0 aWdub3JlCkBAIC0xMDksNiArMTA5LDggQEAgdG9vbHMvbGlicy9ldnRjaG4vaGVhZGVycy5jaGsK IHRvb2xzL2xpYnMvZXZ0Y2huL3hlbmV2dGNobi5wYwogdG9vbHMvbGlicy9nbnR0YWIvaGVhZGVy cy5jaGsKIHRvb2xzL2xpYnMvZ250dGFiL3hlbmdudHRhYi5wYwordG9vbHMvbGlicy9oeXBmcy9o ZWFkZXJzLmNoawordG9vbHMvbGlicy9oeXBmcy94ZW5oeXBmcy5wYwogdG9vbHMvbGlicy9jYWxs L2hlYWRlcnMuY2hrCiB0b29scy9saWJzL2NhbGwveGVuY2FsbC5wYwogdG9vbHMvbGlicy9mb3Jl aWdubWVtb3J5L2hlYWRlcnMuY2hrCmRpZmYgLS1naXQgYS90b29scy9SdWxlcy5tayBiL3Rvb2xz L1J1bGVzLm1rCmluZGV4IDUyZjQ3YmUzZjguLmEwNDY5N2EzM2MgMTAwNjQ0Ci0tLSBhL3Rvb2xz L1J1bGVzLm1rCisrKyBiL3Rvb2xzL1J1bGVzLm1rCkBAIC0xOSw2ICsxOSw3IEBAIFhFTl9MSUJY RU5HTlRUQUIgICA9ICQoWEVOX1JPT1QpL3Rvb2xzL2xpYnMvZ250dGFiCiBYRU5fTElCWEVOQ0FM TCAgICAgPSAkKFhFTl9ST09UKS90b29scy9saWJzL2NhbGwKIFhFTl9MSUJYRU5GT1JFSUdOTUVN T1JZID0gJChYRU5fUk9PVCkvdG9vbHMvbGlicy9mb3JlaWdubWVtb3J5CiBYRU5fTElCWEVOREVW SUNFTU9ERUwgPSAkKFhFTl9ST09UKS90b29scy9saWJzL2RldmljZW1vZGVsCitYRU5fTElCWEVO SFlQRlMgICAgPSAkKFhFTl9ST09UKS90b29scy9saWJzL2h5cGZzCiBYRU5fTElCWEMgICAgICAg ICAgPSAkKFhFTl9ST09UKS90b29scy9saWJ4YwogWEVOX1hFTkxJR0hUICAgICAgID0gJChYRU5f Uk9PVCkvdG9vbHMvbGlieGwKICMgQ3VycmVudGx5IGxpYnhsdXRpbCBsaXZlcyBpbiB0aGUgc2Ft ZSBkaXJlY3RvcnkgYXMgbGlieGVubGlnaHQKQEAgLTEzNCw2ICsxMzUsMTEgQEAgU0hERVBTX2xp YnhlbmRldmljZW1vZGVsID0gJChTSExJQl9saWJ4ZW50b29sbG9nKSAkKFNITElCX2xpYnhlbnRv b2xjb3JlKSAkKFNITEkKIExETElCU19saWJ4ZW5kZXZpY2Vtb2RlbCA9ICQoU0hERVBTX2xpYnhl bmRldmljZW1vZGVsKSAkKFhFTl9MSUJYRU5ERVZJQ0VNT0RFTCkvbGlieGVuZGV2aWNlbW9kZWwk KGxpYmV4dGVuc2lvbikKIFNITElCX2xpYnhlbmRldmljZW1vZGVsICA9ICQoU0hERVBTX2xpYnhl bmRldmljZW1vZGVsKSAtV2wsLXJwYXRoLWxpbms9JChYRU5fTElCWEVOREVWSUNFTU9ERUwpCiAK K0NGTEFHU19saWJ4ZW5oeXBmcyA9IC1JJChYRU5fTElCWEVOSFlQRlMpL2luY2x1ZGUgJChDRkxB R1NfeGVuaW5jbHVkZSkKK1NIREVQU19saWJ4ZW5oeXBmcyA9ICQoU0hMSUJfbGlieGVudG9vbGxv ZykgJChTSExJQl9saWJ4ZW50b29sY29yZSkgJChTSExJQl94ZW5jYWxsKQorTERMSUJTX2xpYnhl bmh5cGZzID0gJChTSERFUFNfbGlieGVuaHlwZnMpICQoWEVOX0xJQlhFTkhZUEZTKS9saWJ4ZW5o eXBmcyQobGliZXh0ZW5zaW9uKQorU0hMSUJfbGlieGVuaHlwZnMgID0gJChTSERFUFNfbGlieGVu aHlwZnMpIC1XbCwtcnBhdGgtbGluaz0kKFhFTl9MSUJYRU5IWVBGUykKKwogIyBjb2RlIHdoaWNo IGNvbXBpbGVzIGFnYWluc3QgbGlieGVuY3RybCBnZXQgX19YRU5fVE9PTFNfXyBhbmQKICMgdGhl cmVmb3JlIHNlZXMgdGhlIHVuc3RhYmxlIGh5cGVyY2FsbCBpbnRlcmZhY2VzLgogQ0ZMQUdTX2xp YnhlbmN0cmwgPSAtSSQoWEVOX0xJQlhDKS9pbmNsdWRlICQoQ0ZMQUdTX2xpYnhlbnRvb2xsb2cp ICQoQ0ZMQUdTX2xpYnhlbmZvcmVpZ25tZW1vcnkpICQoQ0ZMQUdTX2xpYnhlbmRldmljZW1vZGVs KSAkKENGTEFHU194ZW5pbmNsdWRlKSAtRF9fWEVOX1RPT0xTX18KZGlmZiAtLWdpdCBhL3Rvb2xz L2xpYnMvTWFrZWZpbGUgYi90b29scy9saWJzL01ha2VmaWxlCmluZGV4IDg4OTAxZTczNDEuLjY5 Y2RmYjU5NzUgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnMvTWFrZWZpbGUKKysrIGIvdG9vbHMvbGli cy9NYWtlZmlsZQpAQCAtOSw2ICs5LDcgQEAgU1VCRElSUy15ICs9IGdudHRhYgogU1VCRElSUy15 ICs9IGNhbGwKIFNVQkRJUlMteSArPSBmb3JlaWdubWVtb3J5CiBTVUJESVJTLXkgKz0gZGV2aWNl bW9kZWwKK1NVQkRJUlMteSArPSBoeXBmcwogCiBpZmVxICgkKENPTkZJR19SVU1QKSx5KQogU1VC RElSUy15IDo9IHRvb2xjb3JlCmRpZmYgLS1naXQgYS90b29scy9saWJzL2h5cGZzL01ha2VmaWxl IGIvdG9vbHMvbGlicy9oeXBmcy9NYWtlZmlsZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwLi4wNmRkNDQ5OTI5Ci0tLSAvZGV2L251bGwKKysrIGIvdG9vbHMvbGlicy9oeXBm cy9NYWtlZmlsZQpAQCAtMCwwICsxLDE2IEBACitYRU5fUk9PVCA9ICQoQ1VSRElSKS8uLi8uLi8u LgoraW5jbHVkZSAkKFhFTl9ST09UKS90b29scy9SdWxlcy5taworCitNQUpPUiAgICA9IDEKK01J Tk9SICAgID0gMAorTElCTkFNRSAgOj0gaHlwZnMKK1VTRUxJQlMgIDo9IHRvb2xsb2cgdG9vbGNv cmUgY2FsbAorCitBUFBFTkRfTERGTEFHUyArPSAtbHoKKworU1JDUy15ICAgICAgICAgICAgICAg ICArPSBjb3JlLmMKKworaW5jbHVkZSAuLi9saWJzLm1rCisKKyQoUEtHX0NPTkZJR19MT0NBTCk6 IFBLR19DT05GSUdfSU5DRElSID0gJChYRU5fTElCWEVOSFlQRlMpL2luY2x1ZGUKKyQoUEtHX0NP TkZJR19MT0NBTCk6IFBLR19DT05GSUdfQ0ZMQUdTX0xPQ0FMID0gJChDRkxBR1NfeGVuaW5jbHVk ZSkKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnMvaHlwZnMvY29yZS5jIGIvdG9vbHMvbGlicy9oeXBm cy9jb3JlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uY2VkNjE2Yzg3 OQotLS0gL2Rldi9udWxsCisrKyBiL3Rvb2xzL2xpYnMvaHlwZnMvY29yZS5jCkBAIC0wLDAgKzEs NTMzIEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDE5IFNVU0UgU29mdHdhcmUgU29sdXRpb25z IEdlcm1hbnkgR21iSAorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg b2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVk IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247CisgKiB2ZXJzaW9uIDIuMSBvZiB0aGUg TGljZW5zZS4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0 aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3Ig RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGVzc2Vy IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hv dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGlj CisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBJZiBub3QsIHNlZSA8aHR0cDov L3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisgKi8KKworI2RlZmluZSBfX1hFTl9UT09MU19fIDEK KworI2RlZmluZSBfR05VX1NPVVJDRQorCisjaW5jbHVkZSA8ZXJybm8uaD4KKyNpbmNsdWRlIDxp bnR0eXBlcy5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2lu Y2x1ZGUgPHpsaWIuaD4KKworI2luY2x1ZGUgPHhlbnRvb2xsb2cuaD4KKyNpbmNsdWRlIDx4ZW5o eXBmcy5oPgorI2luY2x1ZGUgPHhlbmNhbGwuaD4KKyNpbmNsdWRlIDx4ZW50b29sY29yZV9pbnRl cm5hbC5oPgorCisjaW5jbHVkZSA8eGVuL3hlbi5oPgorI2luY2x1ZGUgPHhlbi9oeXBmcy5oPgor CisjZGVmaW5lIEJVRl9TSVpFIDQwOTYKKworc3RydWN0IHhlbmh5cGZzX2hhbmRsZSB7CisgICAg eGVudG9vbGxvZ19sb2dnZXIgKmxvZ2dlciwgKmxvZ2dlcl90b2ZyZWU7CisgICAgdW5zaWduZWQg aW50IGZsYWdzOworICAgIHhlbmNhbGxfaGFuZGxlICp4Y2FsbDsKK307CisKK3hlbmh5cGZzX2hh bmRsZSAqeGVuaHlwZnNfb3Blbih4ZW50b29sbG9nX2xvZ2dlciAqbG9nZ2VyLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIG9wZW5fZmxhZ3MpCit7CisgICAgeGVuaHlw ZnNfaGFuZGxlICpmc2hkbCA9IGNhbGxvYygxLCBzaXplb2YoKmZzaGRsKSk7CisKKyAgICBpZiAo IWZzaGRsKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGZzaGRsLT5mbGFncyA9IG9wZW5f ZmxhZ3M7CisgICAgZnNoZGwtPmxvZ2dlciA9IGxvZ2dlcjsKKyAgICBmc2hkbC0+bG9nZ2VyX3Rv ZnJlZSA9IE5VTEw7CisKKyAgICBpZiAoIWZzaGRsLT5sb2dnZXIpIHsKKyAgICAgICAgZnNoZGwt PmxvZ2dlciA9IGZzaGRsLT5sb2dnZXJfdG9mcmVlID0KKyAgICAgICAgICAgICh4ZW50b29sbG9n X2xvZ2dlciopCisgICAgICAgICAgICB4dGxfY3JlYXRlbG9nZ2VyX3N0ZGlvc3RyZWFtKHN0ZGVy ciwgWFRMX1BST0dSRVNTLCAwKTsKKyAgICAgICAgaWYgKCFmc2hkbC0+bG9nZ2VyKQorICAgICAg ICAgICAgZ290byBlcnI7CisgICAgfQorCisgICAgZnNoZGwtPnhjYWxsID0geGVuY2FsbF9vcGVu KGZzaGRsLT5sb2dnZXIsIDApOworICAgIGlmICghZnNoZGwtPnhjYWxsKQorICAgICAgICBnb3Rv IGVycjsKKworICAgIC8qIE5vIG5lZWQgdG8gcmVtZW1iZXIgc3VwcG9ydGVkIHZlcnNpb24sIHdl IG9ubHkgc3VwcG9ydCBWMS4gKi8KKyAgICBpZiAoeGVuY2FsbDEoZnNoZGwtPnhjYWxsLCBfX0hZ UEVSVklTT1JfaHlwZnNfb3AsCisgICAgICAgICAgICAgICAgIFhFTl9IWVBGU19PUF9nZXRfdmVy c2lvbikgPCAwKQorICAgICAgICBnb3RvIGVycjsKKworICAgIHJldHVybiBmc2hkbDsKKworZXJy OgorICAgIHh0bF9sb2dnZXJfZGVzdHJveShmc2hkbC0+bG9nZ2VyX3RvZnJlZSk7CisgICAgeGVu Y2FsbF9jbG9zZShmc2hkbC0+eGNhbGwpOworICAgIGZyZWUoZnNoZGwpOworICAgIHJldHVybiBO VUxMOworfQorCitpbnQgeGVuaHlwZnNfY2xvc2UoeGVuaHlwZnNfaGFuZGxlICpmc2hkbCkKK3sK KyAgICBpZiAoIWZzaGRsKQorICAgICAgICByZXR1cm4gMDsKKworICAgIHhlbmNhbGxfY2xvc2Uo ZnNoZGwtPnhjYWxsKTsKKyAgICB4dGxfbG9nZ2VyX2Rlc3Ryb3koZnNoZGwtPmxvZ2dlcl90b2Zy ZWUpOworICAgIGZyZWUoZnNoZGwpOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50IHhl bmh5cGZzX2dldF9wYXRoYnVmKHhlbmh5cGZzX2hhbmRsZSAqZnNoZGwsIGNvbnN0IGNoYXIgKnBh dGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipwYXRoX2J1ZikKK3sK KyAgICBpbnQgcmV0ID0gLTE7CisgICAgaW50IHBhdGhfc3o7CisKKyAgICBpZiAoIWZzaGRsKSB7 CisgICAgICAgIGVycm5vID0gRUJBREY7CisgICAgICAgIGdvdG8gb3V0OworICAgIH0KKworICAg IHBhdGhfc3ogPSBzdHJsZW4ocGF0aCkgKyAxOworICAgIGlmIChwYXRoX3N6ID4gWEVOX0hZUEZT X01BWF9QQVRITEVOKQorICAgIHsKKyAgICAgICAgZXJybm8gPSBFTkFNRVRPT0xPTkc7CisgICAg ICAgIGdvdG8gb3V0OworICAgIH0KKworICAgICpwYXRoX2J1ZiA9IHhlbmNhbGxfYWxsb2NfYnVm ZmVyKGZzaGRsLT54Y2FsbCwgcGF0aF9zeik7CisgICAgaWYgKCEqcGF0aF9idWYpIHsKKyAgICAg ICAgZXJybm8gPSBFTk9NRU07CisgICAgICAgIGdvdG8gb3V0OworICAgIH0KKyAgICBzdHJjcHko KnBhdGhfYnVmLCBwYXRoKTsKKworICAgIHJldCA9IHBhdGhfc3o7CisKKyBvdXQ6CisgICAgcmV0 dXJuIHJldDsKK30KKworc3RhdGljIHZvaWQgKnhlbmh5cGZzX2luZmxhdGUodm9pZCAqaW5fZGF0 YSwgc2l6ZV90ICpzeikKK3sKKyAgICB1bnNpZ25lZCBjaGFyICp3b3JrYnVmOworICAgIHZvaWQg KmNvbnRlbnQgPSBOVUxMOworICAgIHVuc2lnbmVkIGludCBvdXRfc3o7CisgICAgel9zdHJlYW0g eiA9IHsgLm9wYXF1ZSA9IE5VTEwgfTsKKyAgICBpbnQgcmV0OworCisgICAgd29ya2J1ZiA9IG1h bGxvYyhCVUZfU0laRSk7CisgICAgaWYgKCF3b3JrYnVmKQorICAgICAgICByZXR1cm4gTlVMTDsK KworICAgIHoubmV4dF9pbiA9IGluX2RhdGE7CisgICAgei5hdmFpbF9pbiA9ICpzejsKKyAgICBy ZXQgPSBpbmZsYXRlSW5pdDIoJnosIE1BWF9XQklUUyArIDMyKTsgLyogMzIgPT0gZ3ppcCAqLwor CisgICAgZm9yICgqc3ogPSAwOyByZXQgPT0gWl9PSzsgKnN6ICs9IG91dF9zeikgeworICAgICAg ICB6Lm5leHRfb3V0ID0gd29ya2J1ZjsKKyAgICAgICAgei5hdmFpbF9vdXQgPSBCVUZfU0laRTsK KyAgICAgICAgcmV0ID0gaW5mbGF0ZSgmeiwgWl9TWU5DX0ZMVVNIKTsKKyAgICAgICAgaWYgKHJl dCAhPSBaX09LICYmIHJldCAhPSBaX1NUUkVBTV9FTkQpCisgICAgICAgICAgICBicmVhazsKKwor ICAgICAgICBvdXRfc3ogPSB6Lm5leHRfb3V0IC0gd29ya2J1ZjsKKyAgICAgICAgY29udGVudCA9 IHJlYWxsb2MoY29udGVudCwgKnN6ICsgb3V0X3N6KTsKKyAgICAgICAgaWYgKCFjb250ZW50KSB7 CisgICAgICAgICAgICByZXQgPSBaX01FTV9FUlJPUjsKKyAgICAgICAgICAgIGJyZWFrOworICAg ICAgICB9CisgICAgICAgIG1lbWNweShjb250ZW50ICsgKnN6LCB3b3JrYnVmLCBvdXRfc3opOwor ICAgIH0KKworICAgIGluZmxhdGVFbmQoJnopOworICAgIGlmIChyZXQgIT0gWl9TVFJFQU1fRU5E KSB7CisgICAgICAgIGZyZWUoY29udGVudCk7CisgICAgICAgIGNvbnRlbnQgPSBOVUxMOworICAg ICAgICBlcnJubyA9IEVJTzsKKyAgICB9CisgICAgZnJlZSh3b3JrYnVmKTsKKyAgICByZXR1cm4g Y29udGVudDsKK30KKworc3RhdGljIHZvaWQgeGVuaHlwZnNfc2V0X2F0dHJzKHN0cnVjdCB4ZW5f aHlwZnNfZGlyZW50cnkgKmVudHJ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0 cnVjdCB4ZW5oeXBmc19kaXJlbnQgKmRpcmVudCkKK3sKKyAgICBkaXJlbnQtPnNpemUgPSBlbnRy eS0+Y29udGVudF9sZW47CisKKyAgICBzd2l0Y2goZW50cnktPnR5cGUpIHsKKyAgICBjYXNlIFhF Tl9IWVBGU19UWVBFX0RJUjoKKyAgICAgICAgZGlyZW50LT50eXBlID0geGVuaHlwZnNfdHlwZV9k aXI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgWEVOX0hZUEZTX1RZUEVfQkxPQjoKKyAgICAg ICAgZGlyZW50LT50eXBlID0geGVuaHlwZnNfdHlwZV9ibG9iOworICAgICAgICBicmVhazsKKyAg ICBjYXNlIFhFTl9IWVBGU19UWVBFX1NUUklORzoKKyAgICAgICAgZGlyZW50LT50eXBlID0geGVu aHlwZnNfdHlwZV9zdHJpbmc7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgWEVOX0hZUEZTX1RZ UEVfVUlOVDoKKyAgICAgICAgZGlyZW50LT50eXBlID0geGVuaHlwZnNfdHlwZV91aW50OworICAg ICAgICBicmVhazsKKyAgICBjYXNlIFhFTl9IWVBGU19UWVBFX0lOVDoKKyAgICAgICAgZGlyZW50 LT50eXBlID0geGVuaHlwZnNfdHlwZV9pbnQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgWEVO X0hZUEZTX1RZUEVfQk9PTDoKKyAgICAgICAgZGlyZW50LT50eXBlID0geGVuaHlwZnNfdHlwZV9i b29sOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBkaXJlbnQtPnR5cGUg PSB4ZW5oeXBmc190eXBlX2Jsb2I7CisgICAgfQorCisgICAgc3dpdGNoIChlbnRyeS0+ZW5jb2Rp bmcpIHsKKyAgICBjYXNlIFhFTl9IWVBGU19FTkNfUExBSU46CisgICAgICAgIGRpcmVudC0+ZW5j b2RpbmcgPSB4ZW5oeXBmc19lbmNfcGxhaW47CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgWEVO X0hZUEZTX0VOQ19HWklQOgorICAgICAgICBkaXJlbnQtPmVuY29kaW5nID0geGVuaHlwZnNfZW5j X2d6aXA7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIGRpcmVudC0+ZW5j b2RpbmcgPSB4ZW5oeXBmc19lbmNfcGxhaW47CisgICAgICAgIGRpcmVudC0+dHlwZSA9IHhlbmh5 cGZzX3R5cGVfYmxvYjsKKyAgICB9CisKKyAgICBkaXJlbnQtPmlzX3dyaXRhYmxlID0gZW50cnkt PmZsYWdzICYgWEVOX0hZUEZTX1dSSVRFQUJMRTsKK30KKwordm9pZCAqeGVuaHlwZnNfcmVhZF9y YXcoeGVuaHlwZnNfaGFuZGxlICpmc2hkbCwgY29uc3QgY2hhciAqcGF0aCwKKyAgICAgICAgICAg ICAgICAgICAgICAgIHN0cnVjdCB4ZW5oeXBmc19kaXJlbnQgKipkaXJlbnQpCit7CisgICAgdm9p ZCAqcmV0YnVmID0gTlVMTCwgKmNvbnRlbnQgPSBOVUxMOworICAgIGNoYXIgKnBhdGhfYnVmID0g TlVMTDsKKyAgICBjb25zdCBjaGFyICpuYW1lOworICAgIHN0cnVjdCB4ZW5faHlwZnNfZGlyZW50 cnkgKmVudHJ5OworICAgIGludCByZXQ7CisgICAgaW50IHN6LCBwYXRoX3N6OworCisgICAgKmRp cmVudCA9IE5VTEw7CisgICAgcmV0ID0geGVuaHlwZnNfZ2V0X3BhdGhidWYoZnNoZGwsIHBhdGgs ICZwYXRoX2J1Zik7CisgICAgaWYgKHJldCA8IDApCisgICAgICAgIGdvdG8gb3V0OworCisgICAg cGF0aF9zeiA9IHJldDsKKworICAgIGZvciAoc3ogPSBCVUZfU0laRTs7IHN6ID0gc2l6ZW9mKCpl bnRyeSkgKyBlbnRyeS0+Y29udGVudF9sZW4pIHsKKyAgICAgICAgaWYgKHJldGJ1ZikKKyAgICAg ICAgICAgIHhlbmNhbGxfZnJlZV9idWZmZXIoZnNoZGwtPnhjYWxsLCByZXRidWYpOworCisgICAg ICAgIHJldGJ1ZiA9IHhlbmNhbGxfYWxsb2NfYnVmZmVyKGZzaGRsLT54Y2FsbCwgc3opOworICAg ICAgICBpZiAoIXJldGJ1ZikgeworICAgICAgICAgICAgZXJybm8gPSBFTk9NRU07CisgICAgICAg ICAgICBnb3RvIG91dDsKKyAgICAgICAgfQorICAgICAgICBlbnRyeSA9IHJldGJ1ZjsKKworICAg ICAgICByZXQgPSB4ZW5jYWxsNShmc2hkbC0+eGNhbGwsIF9fSFlQRVJWSVNPUl9oeXBmc19vcCwg WEVOX0hZUEZTX09QX3JlYWQsCisgICAgICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBsb25n KXBhdGhfYnVmLCBwYXRoX3N6LAorICAgICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQgbG9u ZylyZXRidWYsIHN6KTsKKyAgICAgICAgaWYgKCFyZXQpCisgICAgICAgICAgICBicmVhazsKKwor ICAgICAgICBpZiAocmV0ICE9IEVOT0JVRlMpIHsKKyAgICAgICAgICAgIGVycm5vID0gLXJldDsK KyAgICAgICAgICAgIGdvdG8gb3V0OworICAgICAgICB9CisgICAgfQorCisgICAgY29udGVudCA9 IG1hbGxvYyhlbnRyeS0+Y29udGVudF9sZW4pOworICAgIGlmICghY29udGVudCkKKyAgICAgICAg Z290byBvdXQ7CisgICAgbWVtY3B5KGNvbnRlbnQsIGVudHJ5ICsgMSwgZW50cnktPmNvbnRlbnRf bGVuKTsKKworICAgIG5hbWUgPSBzdHJyY2hyKHBhdGgsICcvJyk7CisgICAgaWYgKCFuYW1lKQor ICAgICAgICBuYW1lID0gcGF0aDsKKyAgICBlbHNlIHsKKyAgICAgICAgbmFtZSsrOworICAgICAg ICBpZiAoISpuYW1lKQorICAgICAgICAgICAgbmFtZS0tOworICAgIH0KKyAgICAqZGlyZW50ID0g Y2FsbG9jKDEsIHNpemVvZihzdHJ1Y3QgeGVuaHlwZnNfZGlyZW50KSArIHN0cmxlbihuYW1lKSAr IDEpOworICAgIGlmICghKmRpcmVudCkgeworICAgICAgICBmcmVlKGNvbnRlbnQpOworICAgICAg ICBjb250ZW50ID0gTlVMTDsKKyAgICAgICAgZXJybm8gPSBFTk9NRU07CisgICAgICAgIGdvdG8g b3V0OworICAgIH0KKyAgICAoKmRpcmVudCktPm5hbWUgPSAoY2hhciAqKSgqZGlyZW50ICsgMSk7 CisgICAgc3RyY3B5KCgqZGlyZW50KS0+bmFtZSwgbmFtZSk7CisgICAgeGVuaHlwZnNfc2V0X2F0 dHJzKGVudHJ5LCAqZGlyZW50KTsKKworIG91dDoKKyAgICByZXQgPSBlcnJubzsKKyAgICB4ZW5j YWxsX2ZyZWVfYnVmZmVyKGZzaGRsLT54Y2FsbCwgcGF0aF9idWYpOworICAgIHhlbmNhbGxfZnJl ZV9idWZmZXIoZnNoZGwtPnhjYWxsLCByZXRidWYpOworICAgIGVycm5vID0gcmV0OworCisgICAg cmV0dXJuIGNvbnRlbnQ7Cit9CisKK2NoYXIgKnhlbmh5cGZzX3JlYWQoeGVuaHlwZnNfaGFuZGxl ICpmc2hkbCwgY29uc3QgY2hhciAqcGF0aCkKK3sKKyAgICBjaGFyICpidWYsICpyZXRfYnVmID0g TlVMTDsKKyAgICBzdHJ1Y3QgeGVuaHlwZnNfZGlyZW50ICpkaXJlbnQ7CisgICAgaW50IHJldDsK KworICAgIGJ1ZiA9IHhlbmh5cGZzX3JlYWRfcmF3KGZzaGRsLCBwYXRoLCAmZGlyZW50KTsKKyAg ICBpZiAoIWJ1ZikKKyAgICAgICAgZ290byBvdXQ7CisKKyAgICBzd2l0Y2ggKGRpcmVudC0+ZW5j b2RpbmcpIHsKKyAgICBjYXNlIHhlbmh5cGZzX2VuY19wbGFpbjoKKyAgICAgICAgYnJlYWs7Cisg ICAgY2FzZSB4ZW5oeXBmc19lbmNfZ3ppcDoKKyAgICAgICAgcmV0X2J1ZiA9IHhlbmh5cGZzX2lu ZmxhdGUoYnVmLCAmZGlyZW50LT5zaXplKTsKKyAgICAgICAgaWYgKCFyZXRfYnVmKQorICAgICAg ICAgICAgZ290byBvdXQ7CisgICAgICAgIGZyZWUoYnVmKTsKKyAgICAgICAgYnVmID0gcmV0X2J1 ZjsKKyAgICAgICAgcmV0X2J1ZiA9IE5VTEw7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAg IHN3aXRjaCAoZGlyZW50LT50eXBlKSB7CisgICAgY2FzZSB4ZW5oeXBmc190eXBlX2RpcjoKKyAg ICAgICAgZXJybm8gPSBFSVNESVI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgeGVuaHlwZnNf dHlwZV9ibG9iOgorICAgICAgICBlcnJubyA9IEVET007CisgICAgICAgIGJyZWFrOworICAgIGNh c2UgeGVuaHlwZnNfdHlwZV9zdHJpbmc6CisgICAgICAgIHJldF9idWYgPSBidWY7CisgICAgICAg IGJ1ZiA9IE5VTEw7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgeGVuaHlwZnNfdHlwZV91aW50 OgorICAgIGNhc2UgeGVuaHlwZnNfdHlwZV9ib29sOgorICAgICAgICBzd2l0Y2ggKGRpcmVudC0+ c2l6ZSkgeworICAgICAgICBjYXNlIDE6CisgICAgICAgICAgICByZXQgPSBhc3ByaW50ZigmcmV0 X2J1ZiwgIiUiUFJJdTgsICoodWludDhfdCAqKWJ1Zik7CisgICAgICAgICAgICBicmVhazsKKyAg ICAgICAgY2FzZSAyOgorICAgICAgICAgICAgcmV0ID0gYXNwcmludGYoJnJldF9idWYsICIlIlBS SXUxNiwgKih1aW50MTZfdCAqKWJ1Zik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz ZSA0OgorICAgICAgICAgICAgcmV0ID0gYXNwcmludGYoJnJldF9idWYsICIlIlBSSXUzMiwgKih1 aW50MzJfdCAqKWJ1Zik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSA4OgorICAg ICAgICAgICAgcmV0ID0gYXNwcmludGYoJnJldF9idWYsICIlIlBSSXU2NCwgKih1aW50NjRfdCAq KWJ1Zik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg IHJldCA9IC0xOworICAgICAgICAgICAgZXJybm8gPSBFRE9NOworICAgICAgICB9CisgICAgICAg IGlmIChyZXQgPCAwKQorICAgICAgICAgICAgcmV0X2J1ZiA9IE5VTEw7CisgICAgICAgIGJyZWFr OworICAgIGNhc2UgeGVuaHlwZnNfdHlwZV9pbnQ6CisgICAgICAgIHN3aXRjaCAoZGlyZW50LT5z aXplKSB7CisgICAgICAgIGNhc2UgMToKKyAgICAgICAgICAgIHJldCA9IGFzcHJpbnRmKCZyZXRf YnVmLCAiJSJQUklkOCwgKihpbnQ4X3QgKilidWYpOworICAgICAgICAgICAgYnJlYWs7CisgICAg ICAgIGNhc2UgMjoKKyAgICAgICAgICAgIHJldCA9IGFzcHJpbnRmKCZyZXRfYnVmLCAiJSJQUklk MTYsICooaW50MTZfdCAqKWJ1Zik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSA0 OgorICAgICAgICAgICAgcmV0ID0gYXNwcmludGYoJnJldF9idWYsICIlIlBSSWQzMiwgKihpbnQz Ml90ICopYnVmKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDg6CisgICAgICAg ICAgICByZXQgPSBhc3ByaW50ZigmcmV0X2J1ZiwgIiUiUFJJZDY0LCAqKGludDY0X3QgKilidWYp OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXQg PSAtMTsKKyAgICAgICAgICAgIGVycm5vID0gRURPTTsKKyAgICAgICAgfQorICAgICAgICBpZiAo cmV0IDwgMCkKKyAgICAgICAgICAgIHJldF9idWYgPSBOVUxMOworICAgICAgICBicmVhazsKKyAg ICB9CisKKyBvdXQ6CisgICAgcmV0ID0gZXJybm87CisgICAgZnJlZShidWYpOworICAgIGZyZWUo ZGlyZW50KTsKKyAgICBlcnJubyA9IHJldDsKKworICAgIHJldHVybiByZXRfYnVmOworfQorCitz dHJ1Y3QgeGVuaHlwZnNfZGlyZW50ICp4ZW5oeXBmc19yZWFkZGlyKHhlbmh5cGZzX2hhbmRsZSAq ZnNoZGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNo YXIgKnBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln bmVkIGludCAqbnVtX2VudHJpZXMpCit7CisgICAgdm9pZCAqYnVmLCAqY3VycjsKKyAgICBpbnQg cmV0OworICAgIGNoYXIgKm5hbWVzOworICAgIHN0cnVjdCB4ZW5oeXBmc19kaXJlbnQgKnJldF9i dWYgPSBOVUxMLCAqZGlyZW50OworICAgIHVuc2lnbmVkIGludCBuID0gMCwgbmFtZV9zeiA9IDA7 CisgICAgc3RydWN0IHhlbl9oeXBmc19kaXJsaXN0ZW50cnkgKmVudHJ5OworCisgICAgYnVmID0g eGVuaHlwZnNfcmVhZF9yYXcoZnNoZGwsIHBhdGgsICZkaXJlbnQpOworICAgIGlmICghYnVmKQor ICAgICAgICBnb3RvIG91dDsKKworICAgIGlmIChkaXJlbnQtPnR5cGUgIT0geGVuaHlwZnNfdHlw ZV9kaXIgfHwKKyAgICAgICAgZGlyZW50LT5lbmNvZGluZyAhPSB4ZW5oeXBmc19lbmNfcGxhaW4p IHsKKyAgICAgICAgZXJybm8gPSBFTk9URElSOworICAgICAgICBnb3RvIG91dDsKKyAgICB9CisK KyAgICBpZiAoZGlyZW50LT5zaXplKSB7CisgICAgICAgIGN1cnIgPSBidWY7CisgICAgICAgIGZv ciAobiA9IDE7OyBuKyspIHsKKyAgICAgICAgICAgIGVudHJ5ID0gY3VycjsKKyAgICAgICAgICAg IG5hbWVfc3ogKz0gc3RybGVuKGVudHJ5LT5uYW1lKSArIDE7CisgICAgICAgICAgICBpZiAoIWVu dHJ5LT5vZmZfbmV4dCkKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgY3Vy ciArPSBlbnRyeS0+b2ZmX25leHQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXRfYnVmID0g bWFsbG9jKG4gKiBzaXplb2YoKnJldF9idWYpICsgbmFtZV9zeik7CisgICAgaWYgKCFyZXRfYnVm KQorICAgICAgICBnb3RvIG91dDsKKworICAgICpudW1fZW50cmllcyA9IG47CisgICAgbmFtZXMg PSAoY2hhciAqKShyZXRfYnVmICsgbik7CisgICAgY3VyciA9IGJ1ZjsKKyAgICBmb3IgKG4gPSAw OyBuIDwgKm51bV9lbnRyaWVzOyBuKyspIHsKKyAgICAgICAgZW50cnkgPSBjdXJyOworICAgICAg ICB4ZW5oeXBmc19zZXRfYXR0cnMoJmVudHJ5LT5lLCByZXRfYnVmICsgbik7CisgICAgICAgIHJl dF9idWZbbl0ubmFtZSA9IG5hbWVzOworICAgICAgICBzdHJjcHkobmFtZXMsIGVudHJ5LT5uYW1l KTsKKyAgICAgICAgbmFtZXMgKz0gc3RybGVuKGVudHJ5LT5uYW1lKSArIDE7CisgICAgICAgIGN1 cnIgKz0gZW50cnktPm9mZl9uZXh0OworICAgIH0KKworIG91dDoKKyAgICByZXQgPSBlcnJubzsK KyAgICBmcmVlKGJ1Zik7CisgICAgZnJlZShkaXJlbnQpOworICAgIGVycm5vID0gcmV0OworCisg ICAgcmV0dXJuIHJldF9idWY7Cit9CisKK2ludCB4ZW5oeXBmc193cml0ZSh4ZW5oeXBmc19oYW5k bGUgKmZzaGRsLCBjb25zdCBjaGFyICpwYXRoLCBjb25zdCBjaGFyICp2YWwpCit7CisgICAgdm9p ZCAqYnVmID0gTlVMTDsKKyAgICBjaGFyICpwYXRoX2J1ZiA9IE5VTEwsICp2YWxfZW5kOworICAg IGludCByZXQsIHNhdmVkX2Vycm5vOworICAgIGludCBzeiwgcGF0aF9zejsKKyAgICBzdHJ1Y3Qg eGVuX2h5cGZzX2RpcmVudHJ5ICplbnRyeTsKKyAgICB1aW50NjRfdCBtYXNrOworCisgICAgcmV0 ID0geGVuaHlwZnNfZ2V0X3BhdGhidWYoZnNoZGwsIHBhdGgsICZwYXRoX2J1Zik7CisgICAgaWYg KHJldCA8IDApCisgICAgICAgIGdvdG8gb3V0OworCisgICAgcGF0aF9zeiA9IHJldDsKKyAgICBy ZXQgPSAtMTsKKworICAgIHN6ID0gQlVGX1NJWkU7CisgICAgYnVmID0geGVuY2FsbF9hbGxvY19i dWZmZXIoZnNoZGwtPnhjYWxsLCBzeik7CisgICAgaWYgKCFidWYpIHsKKyAgICAgICAgZXJybm8g PSBFTk9NRU07CisgICAgICAgIGdvdG8gb3V0OworICAgIH0KKworICAgIHJldCA9IHhlbmNhbGw1 KGZzaGRsLT54Y2FsbCwgX19IWVBFUlZJU09SX2h5cGZzX29wLCBYRU5fSFlQRlNfT1BfcmVhZCwK KyAgICAgICAgICAgICAgICAgICAodW5zaWduZWQgbG9uZylwYXRoX2J1ZiwgcGF0aF9zeiwKKyAg ICAgICAgICAgICAgICAgICAodW5zaWduZWQgbG9uZylidWYsIHNpemVvZigqZW50cnkpKTsKKyAg ICBpZiAocmV0KQorICAgICAgICBnb3RvIG91dDsKKyAgICByZXQgPSAtMTsKKyAgICBlbnRyeSA9 IGJ1ZjsKKyAgICBpZiAoIShlbnRyeS0+ZmxhZ3MgJiBYRU5fSFlQRlNfV1JJVEVBQkxFKSkgewor ICAgICAgICBlcnJubyA9IEVBQ0NFUzsKKyAgICAgICAgZ290byBvdXQ7CisgICAgfQorICAgIGlm IChlbnRyeS0+ZW5jb2RpbmcgIT0gWEVOX0hZUEZTX0VOQ19QTEFJTikgeworICAgICAgICAvKiBX cml0aW5nIGNvbXByZXNzZWQgZGF0YSBjdXJyZW50bHkgbm90IHN1cHBvcnRlZC4gKi8KKyAgICAg ICAgZXJybm8gPSBFRE9NOworICAgICAgICBnb3RvIG91dDsKKyAgICB9CisKKyAgICBzd2l0Y2gg KGVudHJ5LT50eXBlKSB7CisgICAgY2FzZSBYRU5fSFlQRlNfVFlQRV9TVFJJTkc6CisgICAgICAg IGlmIChzeiA8IHN0cmxlbih2YWwpICsgMSkgeworICAgICAgICAgICAgc3ogPSBzdHJsZW4odmFs KSArIDE7CisgICAgICAgICAgICB4ZW5jYWxsX2ZyZWVfYnVmZmVyKGZzaGRsLT54Y2FsbCwgYnVm KTsKKyAgICAgICAgICAgIGJ1ZiA9IHhlbmNhbGxfYWxsb2NfYnVmZmVyKGZzaGRsLT54Y2FsbCwg c3opOworICAgICAgICAgICAgaWYgKCFidWYpIHsKKyAgICAgICAgICAgICAgICBlcnJubyA9IEVO T01FTTsKKyAgICAgICAgICAgICAgICBnb3RvIG91dDsKKyAgICAgICAgICAgIH0KKyAgICAgICAg fQorICAgICAgICBzdHJjcHkoYnVmLCB2YWwpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFhF Tl9IWVBGU19UWVBFX1VJTlQ6CisgICAgICAgIHN6ID0gZW50cnktPmNvbnRlbnRfbGVuOworICAg ICAgICBlcnJubyA9IDA7CisgICAgICAgICoodW5zaWduZWQgbG9uZyBsb25nICopYnVmID0gc3Ry dG91bGwodmFsLCAmdmFsX2VuZCwgMCk7CisgICAgICAgIGlmIChlcnJubyB8fCAhKnZhbCB8fCAq dmFsX2VuZCkKKyAgICAgICAgICAgIGdvdG8gb3V0OworICAgICAgICBtYXNrID0gfjBVTEwgPDwg KDggKiBzeik7CisgICAgICAgIGlmICgoKih1aW50NjRfdCAqKWJ1ZiAmIG1hc2spICYmICgoKih1 aW50NjRfdCAqKWJ1ZiAmIG1hc2spICE9IG1hc2spKSB7CisgICAgICAgICAgICBlcnJubyA9IEVS QU5HRTsKKyAgICAgICAgICAgIGdvdG8gb3V0OworICAgICAgICB9CisgICAgICAgIGJyZWFrOwor ICAgIGNhc2UgWEVOX0hZUEZTX1RZUEVfSU5UOgorICAgICAgICBzeiA9IGVudHJ5LT5jb250ZW50 X2xlbjsKKyAgICAgICAgZXJybm8gPSAwOworICAgICAgICAqKHVuc2lnbmVkIGxvbmcgbG9uZyAq KWJ1ZiA9IHN0cnRvbGwodmFsLCAmdmFsX2VuZCwgMCk7CisgICAgICAgIGlmIChlcnJubyB8fCAh KnZhbCB8fCAqdmFsX2VuZCkKKyAgICAgICAgICAgIGdvdG8gb3V0OworICAgICAgICBtYXNrID0g KHN6ID09IDgpID8gMCA6IH4wVUxMIDw8ICg4ICogc3opOworICAgICAgICBpZiAoKCoodWludDY0 X3QgKilidWYgJiBtYXNrKSAmJiAoKCoodWludDY0X3QgKilidWYgJiBtYXNrKSAhPSBtYXNrKSkg eworICAgICAgICAgICAgZXJybm8gPSBFUkFOR0U7CisgICAgICAgICAgICBnb3RvIG91dDsKKyAg ICAgICAgfQorICAgICAgICBicmVhazsKKyAgICBjYXNlIFhFTl9IWVBGU19UWVBFX0JPT0w6Cisg ICAgICAgICoodW5zaWduZWQgbG9uZyBsb25nICopYnVmID0gMDsKKyAgICAgICAgaWYgKCFzdHJj bXAodmFsLCAiMSIpIHx8ICFzdHJjbXAodmFsLCAib24iKSB8fCAhc3RyY21wKHZhbCwgInllcyIp IHx8CisgICAgICAgICAgICAhc3RyY21wKHZhbCwgInRydWUiKSB8fCAhc3RyY21wKHZhbCwgImVu YWJsZSIpKQorICAgICAgICAgICAgKih1bnNpZ25lZCBsb25nIGxvbmcgKilidWYgPSAxOworICAg ICAgICBlbHNlIGlmIChzdHJjbXAodmFsLCAiMCIpICYmIHN0cmNtcCh2YWwsICJubyIpICYmIHN0 cmNtcCh2YWwsICJvZmYiKSAmJgorICAgICAgICAgICAgICAgICBzdHJjbXAodmFsLCAiZmFsc2Ui KSAmJiBzdHJjbXAodmFsLCAiZGlzYWJsZSIpKSB7CisgICAgICAgICAgICBlcnJubyA9IEVET007 CisgICAgICAgICAgICBnb3RvIG91dDsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICBk ZWZhdWx0OgorICAgICAgICAvKiBObyBzdXBwb3J0IGZvciBvdGhlciB0eXBlcyAoeWV0KS4gKi8K KyAgICAgICAgZXJybm8gPSBFRE9NOworICAgICAgICBnb3RvIG91dDsKKyAgICB9CisKKyAgICBy ZXQgPSB4ZW5jYWxsNShmc2hkbC0+eGNhbGwsIF9fSFlQRVJWSVNPUl9oeXBmc19vcCwKKyAgICAg ICAgICAgICAgICAgICBYRU5fSFlQRlNfT1Bfd3JpdGVfY29udGVudHMsCisgICAgICAgICAgICAg ICAgICAgKHVuc2lnbmVkIGxvbmcpcGF0aF9idWYsIHBhdGhfc3osCisgICAgICAgICAgICAgICAg ICAgKHVuc2lnbmVkIGxvbmcpYnVmLCBzeik7CisKKyBvdXQ6CisgICAgc2F2ZWRfZXJybm8gPSBl cnJubzsKKyAgICB4ZW5jYWxsX2ZyZWVfYnVmZmVyKGZzaGRsLT54Y2FsbCwgcGF0aF9idWYpOwor ICAgIHhlbmNhbGxfZnJlZV9idWZmZXIoZnNoZGwtPnhjYWxsLCBidWYpOworICAgIGVycm5vID0g c2F2ZWRfZXJybm87CisgICAgcmV0dXJuIHJldDsKK30KZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnMv aHlwZnMvaW5jbHVkZS94ZW5oeXBmcy5oIGIvdG9vbHMvbGlicy9oeXBmcy9pbmNsdWRlL3hlbmh5 cGZzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uMjljNjk3MTJjZQot LS0gL2Rldi9udWxsCisrKyBiL3Rvb2xzL2xpYnMvaHlwZnMvaW5jbHVkZS94ZW5oeXBmcy5oCkBA IC0wLDAgKzEsNzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTkgU1VTRSBTb2Z0d2FyZSBT b2x1dGlvbnMgR2VybWFueSBHbWJICisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRo ZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBw dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsKKyAqIHZlcnNpb24gMi4x IG9mIHRoZSBMaWNlbnNlLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0 aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJB TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJ TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisg KiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAq IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJh bCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IElmIG5vdCwgc2Vl IDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyAqLworI2lmbmRlZiBYRU5IWVBGU19I CisjZGVmaW5lIFhFTkhZUEZTX0gKKworI2luY2x1ZGUgPHN0ZGJvb2wuaD4KKyNpbmNsdWRlIDxz dGRpbnQuaD4KKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKworLyogQ2FsbGVycyB3aG8gZG9uJ3Qg Y2FyZSBkb24ndCBuZWVkIHRvICNpbmNsdWRlIDx4ZW50b29sbG9nLmg+ICovCitzdHJ1Y3QgeGVu dG9vbGxvZ19sb2dnZXI7CisKK3R5cGVkZWYgc3RydWN0IHhlbmh5cGZzX2hhbmRsZSB4ZW5oeXBm c19oYW5kbGU7CisKK3N0cnVjdCB4ZW5oeXBmc19kaXJlbnQgeworICAgIGNoYXIgKm5hbWU7Cisg ICAgc2l6ZV90IHNpemU7CisgICAgZW51bSB7CisgICAgICAgIHhlbmh5cGZzX3R5cGVfZGlyLAor ICAgICAgICB4ZW5oeXBmc190eXBlX2Jsb2IsCisgICAgICAgIHhlbmh5cGZzX3R5cGVfc3RyaW5n LAorICAgICAgICB4ZW5oeXBmc190eXBlX3VpbnQsCisgICAgICAgIHhlbmh5cGZzX3R5cGVfaW50 LAorICAgICAgICB4ZW5oeXBmc190eXBlX2Jvb2wKKyAgICB9IHR5cGU7CisgICAgZW51bSB7Cisg ICAgICAgIHhlbmh5cGZzX2VuY19wbGFpbiwKKyAgICAgICAgeGVuaHlwZnNfZW5jX2d6aXAKKyAg ICB9IGVuY29kaW5nOworICAgIGJvb2wgaXNfd3JpdGFibGU7Cit9OworCit4ZW5oeXBmc19oYW5k bGUgKnhlbmh5cGZzX29wZW4oc3RydWN0IHhlbnRvb2xsb2dfbG9nZ2VyICpsb2dnZXIsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IG9wZW5fZmxhZ3MpOworaW50 IHhlbmh5cGZzX2Nsb3NlKHhlbmh5cGZzX2hhbmRsZSAqZnNoZGwpOworCisvKiBSZXR1cm5lZCBi dWZmZXIgYW5kIGRpcmVudCBzaG91bGQgYmUgZnJlZWQgdmlhIGZyZWUoKS4gKi8KK3ZvaWQgKnhl bmh5cGZzX3JlYWRfcmF3KHhlbmh5cGZzX2hhbmRsZSAqZnNoZGwsIGNvbnN0IGNoYXIgKnBhdGgs CisgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgeGVuaHlwZnNfZGlyZW50ICoqZGlyZW50 KTsKKworLyogUmV0dXJuZWQgYnVmZmVyIHNob3VsZCBiZSBmcmVlZCB2aWEgZnJlZSgpLiAqLwor Y2hhciAqeGVuaHlwZnNfcmVhZCh4ZW5oeXBmc19oYW5kbGUgKmZzaGRsLCBjb25zdCBjaGFyICpw YXRoKTsKKworLyogUmV0dXJuZWQgYnVmZmVyIHNob3VsZCBiZSBmcmVlZCB2aWEgZnJlZSgpLiAq Lworc3RydWN0IHhlbmh5cGZzX2RpcmVudCAqeGVuaHlwZnNfcmVhZGRpcih4ZW5oeXBmc19oYW5k bGUgKmZzaGRsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z dCBjaGFyICpwYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1 bnNpZ25lZCBpbnQgKm51bV9lbnRyaWVzKTsKKworaW50IHhlbmh5cGZzX3dyaXRlKHhlbmh5cGZz X2hhbmRsZSAqZnNoZGwsIGNvbnN0IGNoYXIgKnBhdGgsIGNvbnN0IGNoYXIgKnZhbCk7CisKKyNl bmRpZiAvKiBYRU5IWVBGU19IICovCisKKy8qCisgKiBMb2NhbCB2YXJpYWJsZXM6CisgKiBtb2Rl OiBDCisgKiBjLWZpbGUtc3R5bGU6ICJCU0QiCisgKiBjLWJhc2ljLW9mZnNldDogNAorICogdGFi LXdpZHRoOiA0CisgKiBpbmRlbnQtdGFicy1tb2RlOiBuaWwKKyAqIEVuZDoKKyAqLwpkaWZmIC0t Z2l0IGEvdG9vbHMvbGlicy9oeXBmcy9saWJ4ZW5oeXBmcy5tYXAgYi90b29scy9saWJzL2h5cGZz L2xpYnhlbmh5cGZzLm1hcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi40 N2YxZWRkYTNlCi0tLSAvZGV2L251bGwKKysrIGIvdG9vbHMvbGlicy9oeXBmcy9saWJ4ZW5oeXBm cy5tYXAKQEAgLTAsMCArMSwxMCBAQAorVkVSU18xLjAgeworCWdsb2JhbDoKKwkJeGVuaHlwZnNf b3BlbjsKKwkJeGVuaHlwZnNfY2xvc2U7CisJCXhlbmh5cGZzX3JlYWRfcmF3OworCQl4ZW5oeXBm c19yZWFkOworCQl4ZW5oeXBmc19yZWFkZGlyOworCQl4ZW5oeXBmc193cml0ZTsKKwlsb2NhbDog KjsgLyogRG8gbm90IGV4cG9zZSBhbnl0aGluZyBieSBkZWZhdWx0ICovCit9OwpkaWZmIC0tZ2l0 IGEvdG9vbHMvbGlicy9oeXBmcy94ZW5oeXBmcy5wYy5pbiBiL3Rvb2xzL2xpYnMvaHlwZnMveGVu aHlwZnMucGMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uOTJhMjYy YzdhMgotLS0gL2Rldi9udWxsCisrKyBiL3Rvb2xzL2xpYnMvaHlwZnMveGVuaHlwZnMucGMuaW4K QEAgLTAsMCArMSwxMCBAQAorcHJlZml4PUBAcHJlZml4QEAKK2luY2x1ZGVkaXI9QEBpbmNkaXJA QAorbGliZGlyPUBAbGliZGlyQEAKKworTmFtZTogWGVuaHlwZnMKK0Rlc2NyaXB0aW9uOiBUaGUg WGVuaHlwZnMgbGlicmFyeSBmb3IgWGVuIGh5cGVydmlzb3IKK1ZlcnNpb246IEBAdmVyc2lvbkBA CitDZmxhZ3M6IC1JJHtpbmNsdWRlZGlyfSBAQGNmbGFnc2xvY2FsQEAKK0xpYnM6IEBAbGlic2Zs YWdAQCR7bGliZGlyfSAtbHhlbmh5cGZzCitSZXF1aXJlcy5wcml2YXRlOiB4ZW50b29sY29yZSx4 ZW50b29sbG9nLHhlbmNhbGwsegotLSAKMi4xNi40CgoKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxA bGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFu L2xpc3RpbmZvL3hlbi1kZXZlbA==