From mboxrd@z Thu Jan 1 00:00:00 1970 From: Oleksandr Andrushchenko Subject: [PATCH] libgnttab: Add support for Linux dma-buf Date: Mon, 23 Jul 2018 15:27:25 +0300 Message-ID: <20180723122725.5476-1-andr2000@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1fhZw9-0006X6-R3 for xen-devel@lists.xenproject.org; Mon, 23 Jul 2018 12:27:37 +0000 Received: by mail-lj1-x241.google.com with SMTP id f8-v6so400779ljk.1 for ; Mon, 23 Jul 2018 05:27:35 -0700 (PDT) List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org, ian.jackson@eu.citrix.com, wei.liu2@citrix.com, boris.ostrovsky@oracle.com, jgross@suse.com Cc: andr2000@gmail.com, Oleksandr Andrushchenko List-Id: xen-devel@lists.xenproject.org RnJvbTogT2xla3NhbmRyIEFuZHJ1c2hjaGVua28gPG9sZWtzYW5kcl9hbmRydXNoY2hlbmtvQGVw YW0uY29tPgoKQWRkIHN1cHBvcnQgZm9yIExpbnV4IGdyYW50IGRldmljZSBkcml2ZXIgZXh0ZW5z aW9uIHdoaWNoIGFsbG93cwpjb252ZXJ0aW5nIGV4aXN0aW5nIGRtYS1idWYncyBpbnRvIGFuIGFy cmF5IG9mIGdyYW50IHJlZmVyZW5jZXMKYW5kIHZpc2UgdmVyc2EuIFRoaXMgaXMgb25seSBpbXBs ZW1lbnRlZCBmb3IgTGludXggYXMgb3RoZXIgT1NlcwpoYXZlIG5vIExpbnV4IGRtYS1idWYgc3Vw cG9ydC4KCkJ1bXAgZ250dGFiIGxpYnJhcnkgbWlub3IgdmVyc2lvbiB0byAzLgoKU2lnbmVkLW9m Zi1ieTogT2xla3NhbmRyIEFuZHJ1c2hjaGVua28gPG9sZWtzYW5kcl9hbmRydXNoY2hlbmtvQGVw YW0uY29tPgotLS0KIHRvb2xzL2luY2x1ZGUveGVuLXN5cy9MaW51eC9nbnRkZXYuaCAgfCAxMDYg KysrKysrKysrKysrKysrKysrKysrKysrCiB0b29scy9saWJzL2dudHRhYi9NYWtlZmlsZSAgICAg ICAgICAgIHwgICAyICstCiB0b29scy9saWJzL2dudHRhYi9nbnR0YWJfY29yZS5jICAgICAgIHwg IDI2ICsrKysrKwogdG9vbHMvbGlicy9nbnR0YWIvZ250dGFiX3VuaW1wLmMgICAgICB8ICAyNiAr KysrKysKIHRvb2xzL2xpYnMvZ250dGFiL2luY2x1ZGUveGVuZ250dGFiLmggfCAgNjEgKysrKysr KysrKysrKysKIHRvb2xzL2xpYnMvZ250dGFiL2xpYnhlbmdudHRhYi5tYXAgICAgfCAgIDggKysK IHRvb2xzL2xpYnMvZ250dGFiL2xpbnV4LmMgICAgICAgICAgICAgfCAxMTMgKysrKysrKysrKysr KysrKysrKysrKysrKysKIHRvb2xzL2xpYnMvZ250dGFiL21pbmlvcy5jICAgICAgICAgICAgfCAg MjYgKysrKysrCiB0b29scy9saWJzL2dudHRhYi9wcml2YXRlLmggICAgICAgICAgIHwgIDEzICsr KwogOSBmaWxlcyBjaGFuZ2VkLCAzODAgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQoKZGlm ZiAtLWdpdCBhL3Rvb2xzL2luY2x1ZGUveGVuLXN5cy9MaW51eC9nbnRkZXYuaCBiL3Rvb2xzL2lu Y2x1ZGUveGVuLXN5cy9MaW51eC9nbnRkZXYuaAppbmRleCAwY2EwN2M5MmIyMWMuLmQxNjA3NjA0 NGM3MSAxMDA2NDQKLS0tIGEvdG9vbHMvaW5jbHVkZS94ZW4tc3lzL0xpbnV4L2dudGRldi5oCisr KyBiL3Rvb2xzL2luY2x1ZGUveGVuLXN5cy9MaW51eC9nbnRkZXYuaApAQCAtNCw2ICs0LDcgQEAK ICAqIEludGVyZmFjZSB0byAvZGV2L3hlbi9nbnRkZXYuCiAgKiAKICAqIENvcHlyaWdodCAoYykg MjAwNywgRCBHIE11cnJheQorICogQ29weXJpZ2h0IChjKSAyMDE4LCBPbGVrc2FuZHIgQW5kcnVz aGNoZW5rbywgRVBBTSBTeXN0ZW1zIEluYy4KICAqIAogICogVGhpcyBwcm9ncmFtIGlzIGZyZWUg c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVu ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAy CkBAIC0xNjgsNCArMTY5LDEwOSBAQCBzdHJ1Y3QgaW9jdGxfZ250ZGV2X2dyYW50X2NvcHkgewog ICAgIHN0cnVjdCBpb2N0bF9nbnRkZXZfZ3JhbnRfY29weV9zZWdtZW50ICpzZWdtZW50czsKIH07 CiAKKy8qCisgKiBGbGFncyB0byBiZSB1c2VkIHdoaWxlIHJlcXVlc3RpbmcgbWVtb3J5IG1hcHBp bmcncyBiYWNraW5nIHN0b3JhZ2UKKyAqIHRvIGJlIGFsbG9jYXRlZCB3aXRoIERNQSBBUEkuCisg Ki8KKworLyoKKyAqIFRoZSBidWZmZXIgaXMgYmFja2VkIHdpdGggbWVtb3J5IGFsbG9jYXRlZCB3 aXRoIGRtYV9hbGxvY193Yy4KKyAqLworI2RlZmluZSBHTlRERVZfRE1BX0ZMQUdfV0MJCSgxIDw8 IDApCisKKy8qCisgKiBUaGUgYnVmZmVyIGlzIGJhY2tlZCB3aXRoIG1lbW9yeSBhbGxvY2F0ZWQg d2l0aCBkbWFfYWxsb2NfY29oZXJlbnQuCisgKi8KKyNkZWZpbmUgR05UREVWX0RNQV9GTEFHX0NP SEVSRU5UCSgxIDw8IDEpCisKKy8qCisgKiBDcmVhdGUgYSBkbWEtYnVmIFsxXSBmcm9tIGdyYW50 IHJlZmVyZW5jZXMgQHJlZnMgb2YgY291bnQgQGNvdW50IHByb3ZpZGVkCisgKiBieSB0aGUgZm9y ZWlnbiBkb21haW4gQGRvbWlkIHdpdGggZmxhZ3MgQGZsYWdzLgorICoKKyAqIEJ5IGRlZmF1bHQg ZG1hLWJ1ZiBpcyBiYWNrZWQgYnkgc3lzdGVtIG1lbW9yeSBwYWdlcywgYnV0IGJ5IHByb3ZpZGlu ZworICogb25lIG9mIHRoZSBHTlRERVZfRE1BX0ZMQUdfWFhYIGZsYWdzIGl0IGNhbiBhbHNvIGJl IGNyZWF0ZWQgYXMKKyAqIGEgRE1BIHdyaXRlLWNvbWJpbmUgb3IgY29oZXJlbnQgYnVmZmVyLCBl LmcuIGFsbG9jYXRlZCB3aXRoIGRtYV9hbGxvY193Yy8KKyAqIGRtYV9hbGxvY19jb2hlcmVudC4K KyAqCisgKiBSZXR1cm5zIDAgaWYgZG1hLWJ1ZiB3YXMgc3VjY2Vzc2Z1bGx5IGNyZWF0ZWQgYW5k IHRoZSBjb3JyZXNwb25kaW5nCisgKiBkbWEtYnVmJ3MgZmlsZSBkZXNjcmlwdG9yIGlzIHJldHVy bmVkIGluIEBmZC4KKyAqCisgKiBbMV0gaHR0cHM6Ly9lbGl4aXIuYm9vdGxpbi5jb20vbGludXgv bGF0ZXN0L3NvdXJjZS9Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvZG1hLWJ1Zi5yc3QKKyAqLwor CisjZGVmaW5lIElPQ1RMX0dOVERFVl9ETUFCVUZfRVhQX0ZST01fUkVGUyBcCisgICAgX0lPQyhf SU9DX05PTkUsICdHJywgOSwgXAorICAgICAgICAgc2l6ZW9mKHN0cnVjdCBpb2N0bF9nbnRkZXZf ZG1hYnVmX2V4cF9mcm9tX3JlZnMpKQorc3RydWN0IGlvY3RsX2dudGRldl9kbWFidWZfZXhwX2Zy b21fcmVmcyB7CisgICAgLyogSU4gcGFyYW1ldGVycy4gKi8KKyAgICAvKiBTcGVjaWZpYyBvcHRp b25zIGZvciB0aGlzIGRtYS1idWY6IHNlZSBHTlRERVZfRE1BQlVGX0ZMQUdfWFhYLiAqLworICAg IHVpbnQzMl90IGZsYWdzOworICAgIC8qIE51bWJlciBvZiBncmFudCByZWZlcmVuY2VzIGluIEBy ZWZzIGFycmF5LiAqLworICAgIHVpbnQzMl90IGNvdW50OworICAgIC8qIE9VVCBwYXJhbWV0ZXJz LiAqLworICAgIC8qIEZpbGUgZGVzY3JpcHRvciBvZiB0aGUgZG1hLWJ1Zi4gKi8KKyAgICB1aW50 MzJfdCBmZDsKKyAgICAvKiBUaGUgZG9tYWluIElEIG9mIHRoZSBncmFudCByZWZlcmVuY2VzIHRv IGJlIG1hcHBlZC4gKi8KKyAgICB1aW50MzJfdCBkb21pZDsKKyAgICAvKiBWYXJpYWJsZSBJTiBw YXJhbWV0ZXIuICovCisgICAgLyogQXJyYXkgb2YgZ3JhbnQgcmVmZXJlbmNlcyBvZiBzaXplIEBj b3VudC4gKi8KKyAgICB1aW50MzJfdCByZWZzWzFdOworfTsKKworLyoKKyAqIFRoaXMgd2lsbCBi bG9jayB1bnRpbCB0aGUgZG1hLWJ1ZiB3aXRoIHRoZSBmaWxlIGRlc2NyaXB0b3IgQGZkIGlzCisg KiByZWxlYXNlZC4gVGhpcyBpcyBvbmx5IHZhbGlkIGZvciBidWZmZXJzIGNyZWF0ZWQgd2l0aAor ICogSU9DVExfR05UREVWX0RNQUJVRl9FWFBfRlJPTV9SRUZTLgorICoKKyAqIElmIHdpdGhpbmcg QHdhaXRfdG9fbXMgbWlsbGlzZWNvbmRzIHRoZSBidWZmZXIgaXMgbm90IHJlbGVhc2VkCisgKiB0 aGVuIC1FVElNRURPVVQgZXJyb3IgaXMgcmV0dXJuZWQuCisgKiBJZiB0aGUgYnVmZmVyIHdpdGgg ZmlsZSBkZXNjcmlwdG9yIEBmZCBkb2VzIG5vdCBleGlzdCBvciBoYXMgYWxyZWFkeQorICogYmVl biByZWxlYXNlZCwgdGhlbiAtRU5PRU5UIGlzIHJldHVybmVkLiBGb3IgdmFsaWQgZmlsZSBkZXNj cmlwdG9ycworICogdGhpcyBtdXN0IG5vdCBiZSB0cmVhdGVkIGFzIGVycm9yLgorICovCisjZGVm aW5lIElPQ1RMX0dOVERFVl9ETUFCVUZfRVhQX1dBSVRfUkVMRUFTRUQgXAorICAgIF9JT0MoX0lP Q19OT05FLCAnRycsIDEwLCBcCisgICAgICAgICBzaXplb2Yoc3RydWN0IGlvY3RsX2dudGRldl9k bWFidWZfZXhwX3dhaXRfcmVsZWFzZWQpKQorc3RydWN0IGlvY3RsX2dudGRldl9kbWFidWZfZXhw X3dhaXRfcmVsZWFzZWQgeworICAgIC8qIElOIHBhcmFtZXRlcnMgKi8KKyAgICB1aW50MzJfdCBm ZDsKKyAgICB1aW50MzJfdCB3YWl0X3RvX21zOworfTsKKworLyoKKyAqIEltcG9ydCBhIGRtYS1i dWYgd2l0aCBmaWxlIGRlc2NyaXB0b3IgQGZkIGFuZCBleHBvcnQgZ3JhbnRlZCByZWZlcmVuY2Vz CisgKiB0byB0aGUgcGFnZXMgb2YgdGhhdCBkbWEtYnVmIGludG8gYXJyYXkgQHJlZnMgb2Ygc2l6 ZSBAY291bnQuCisgKi8KKyNkZWZpbmUgSU9DVExfR05UREVWX0RNQUJVRl9JTVBfVE9fUkVGUyBc CisgICAgX0lPQyhfSU9DX05PTkUsICdHJywgMTEsIFwKKyAgICAgICAgIHNpemVvZihzdHJ1Y3Qg aW9jdGxfZ250ZGV2X2RtYWJ1Zl9pbXBfdG9fcmVmcykpCitzdHJ1Y3QgaW9jdGxfZ250ZGV2X2Rt YWJ1Zl9pbXBfdG9fcmVmcyB7CisgICAgLyogSU4gcGFyYW1ldGVycy4gKi8KKyAgICAvKiBGaWxl IGRlc2NyaXB0b3Igb2YgdGhlIGRtYS1idWYuICovCisgICAgdWludDMyX3QgZmQ7CisgICAgLyog TnVtYmVyIG9mIGdyYW50IHJlZmVyZW5jZXMgaW4gQHJlZnMgYXJyYXkuICovCisgICAgdWludDMy X3QgY291bnQ7CisgICAgLyogVGhlIGRvbWFpbiBJRCBmb3Igd2hpY2ggcmVmZXJlbmNlcyB0byBi ZSBncmFudGVkLiAqLworICAgIHVpbnQzMl90IGRvbWlkOworICAgIC8qIFJlc2VydmVkIC0gbXVz dCBiZSB6ZXJvLiAqLworICAgIHVpbnQzMl90IHJlc2VydmVkOworICAgIC8qIE9VVCBwYXJhbWV0 ZXJzLiAqLworICAgIC8qIEFycmF5IG9mIGdyYW50IHJlZmVyZW5jZXMgb2Ygc2l6ZSBAY291bnQu ICovCisgICAgdWludDMyX3QgcmVmc1sxXTsKK307CisKKy8qCisgKiBUaGlzIHdpbGwgY2xvc2Ug YWxsIHJlZmVyZW5jZXMgdG8gYW4gaW1wb3J0ZWQgYnVmZmVyLCBzbyBpdCBjYW4gYmUKKyAqIHJl bGVhc2VkIGJ5IHRoZSBvd25lci4gVGhpcyBpcyBvbmx5IHZhbGlkIGZvciBidWZmZXJzIGNyZWF0 ZWQgd2l0aAorICogSU9DVExfR05UREVWX0RNQUJVRl9JTVBfVE9fUkVGUy4KKyAqLworI2RlZmlu ZSBJT0NUTF9HTlRERVZfRE1BQlVGX0lNUF9SRUxFQVNFIFwKKyAgICBfSU9DKF9JT0NfTk9ORSwg J0cnLCAxMiwgXAorICAgICAgICAgc2l6ZW9mKHN0cnVjdCBpb2N0bF9nbnRkZXZfZG1hYnVmX2lt cF9yZWxlYXNlKSkKK3N0cnVjdCBpb2N0bF9nbnRkZXZfZG1hYnVmX2ltcF9yZWxlYXNlIHsKKyAg ICAvKiBJTiBwYXJhbWV0ZXJzICovCisgICAgdWludDMyX3QgZmQ7CisgICAgdWludDMyX3QgcmVz ZXJ2ZWQ7Cit9OworCiAjZW5kaWYgLyogX19MSU5VWF9QVUJMSUNfR05UREVWX0hfXyAqLwpkaWZm IC0tZ2l0IGEvdG9vbHMvbGlicy9nbnR0YWIvTWFrZWZpbGUgYi90b29scy9saWJzL2dudHRhYi9N YWtlZmlsZQppbmRleCA2YzJlN2UzNmEyYzMuLjBiZWZiZDE4ZjFhZiAxMDA2NDQKLS0tIGEvdG9v bHMvbGlicy9nbnR0YWIvTWFrZWZpbGUKKysrIGIvdG9vbHMvbGlicy9nbnR0YWIvTWFrZWZpbGUK QEAgLTIsNyArMiw3IEBAIFhFTl9ST09UID0gJChDVVJESVIpLy4uLy4uLy4uCiBpbmNsdWRlICQo WEVOX1JPT1QpL3Rvb2xzL1J1bGVzLm1rCiAKIE1BSk9SICAgID0gMQotTUlOT1IgICAgPSAyCitN SU5PUiAgICA9IDMKIFNITElCX0xERkxBR1MgKz0gLVdsLC0tdmVyc2lvbi1zY3JpcHQ9bGlieGVu Z250dGFiLm1hcAogCiBDRkxBR1MgICArPSAtV2Vycm9yIC1XbWlzc2luZy1wcm90b3R5cGVzCmRp ZmYgLS1naXQgYS90b29scy9saWJzL2dudHRhYi9nbnR0YWJfY29yZS5jIGIvdG9vbHMvbGlicy9n bnR0YWIvZ250dGFiX2NvcmUuYwppbmRleCBiZDA3NWY4MThhYTYuLjkyZTcyMjhhMjY3MSAxMDA2 NDQKLS0tIGEvdG9vbHMvbGlicy9nbnR0YWIvZ250dGFiX2NvcmUuYworKysgYi90b29scy9saWJz L2dudHRhYi9nbnR0YWJfY29yZS5jCkBAIC0xLDYgKzEsNyBAQAogLyoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKgogICoKICAqIENvcHlyaWdodCAoYykgMjAwNy0yMDA4LCBEIEcgTXVycmF5IDxEZXJlay5N dXJyYXlAY2wuY2FtLmFjLnVrPgorICogQ29weXJpZ2h0IChjKSAyMDE4LCBPbGVrc2FuZHIgQW5k cnVzaGNoZW5rbywgRVBBTSBTeXN0ZW1zIEluYy4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJl ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC0xMzQs NiArMTM1LDMxIEBAIGludCB4ZW5nbnR0YWJfZ3JhbnRfY29weSh4ZW5nbnR0YWJfaGFuZGxlICp4 Z3QsCiB7CiAgICAgcmV0dXJuIG9zZGVwX2dudHRhYl9ncmFudF9jb3B5KHhndCwgY291bnQsIHNl Z3MpOwogfQorCitpbnQgeGVuZ250dGFiX2RtYWJ1Zl9leHBfZnJvbV9yZWZzKHhlbmdudHRhYl9o YW5kbGUgKnhndCwgdWludDMyX3QgZG9taWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHVpbnQzMl90IGZsYWdzLCB1aW50MzJfdCBjb3VudCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY29uc3QgdWludDMyX3QgKnJlZnMsIHVpbnQzMl90ICpmZCkKK3sK KyAgICByZXR1cm4gb3NkZXBfZ250dGFiX2RtYWJ1Zl9leHBfZnJvbV9yZWZzKHhndCwgZG9taWQs IGZsYWdzLCBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHJlZnMsIGZkKTsKK30KKworaW50IHhlbmdudHRhYl9kbWFidWZfZXhwX3dhaXRfcmVsZWFz ZWQoeGVuZ250dGFiX2hhbmRsZSAqeGd0LCB1aW50MzJfdCBmZCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHdhaXRfdG9fbXMpCit7CisgICAgcmV0dXJu IG9zZGVwX2dudHRhYl9kbWFidWZfZXhwX3dhaXRfcmVsZWFzZWQoeGd0LCBmZCwgd2FpdF90b19t cyk7Cit9CisKK2ludCB4ZW5nbnR0YWJfZG1hYnVmX2ltcF90b19yZWZzKHhlbmdudHRhYl9oYW5k bGUgKnhndCwgdWludDMyX3QgZG9taWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB1aW50MzJfdCBmZCwgdWludDMyX3QgY291bnQsIHVpbnQzMl90ICpyZWZzKQoreworICAgIHJl dHVybiBvc2RlcF9nbnR0YWJfZG1hYnVmX2ltcF90b19yZWZzKHhndCwgZG9taWQsIGZkLCBjb3Vu dCwgcmVmcyk7Cit9CisKK2ludCB4ZW5nbnR0YWJfZG1hYnVmX2ltcF9yZWxlYXNlKHhlbmdudHRh Yl9oYW5kbGUgKnhndCwgdWludDMyX3QgZmQpCit7CisgICAgcmV0dXJuIG9zZGVwX2dudHRhYl9k bWFidWZfaW1wX3JlbGVhc2UoeGd0LCBmZCk7Cit9CiAvKgogICogTG9jYWwgdmFyaWFibGVzOgog ICogbW9kZTogQwpkaWZmIC0tZ2l0IGEvdG9vbHMvbGlicy9nbnR0YWIvZ250dGFiX3VuaW1wLmMg Yi90b29scy9saWJzL2dudHRhYi9nbnR0YWJfdW5pbXAuYwppbmRleCAyNmU0ZWUxMjlkMDMuLmRl ZTFhZmQyNjQ3ZiAxMDA2NDQKLS0tIGEvdG9vbHMvbGlicy9nbnR0YWIvZ250dGFiX3VuaW1wLmMK KysrIGIvdG9vbHMvbGlicy9nbnR0YWIvZ250dGFiX3VuaW1wLmMKQEAgLTEsNiArMSw3IEBACiAv KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqCiAgKgogICogQ29weXJpZ2h0IChjKSAyMDA3LTIwMDgsIEQg RyBNdXJyYXkgPERlcmVrLk11cnJheUBjbC5jYW0uYWMudWs+CisgKiBDb3B5cmlnaHQgKGMpIDIw MTgsIE9sZWtzYW5kciBBbmRydXNoY2hlbmtvLCBFUEFNIFN5c3RlbXMgSW5jLgogICoKICAqIFRo aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv b3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJh bCBQdWJsaWMKQEAgLTg0LDYgKzg1LDMxIEBAIGludCB4ZW5nbnR0YWJfZ3JhbnRfY29weSh4ZW5n bnR0YWJfaGFuZGxlICp4Z3QsCiB7CiAgICAgYWJvcnQoKTsKIH0KKworaW50IHhlbmdudHRhYl9k bWFidWZfZXhwX2Zyb21fcmVmcyh4ZW5nbnR0YWJfaGFuZGxlICp4Z3QsIHVpbnQzMl90IGRvbWlk LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBmbGFncywgdWlu dDMyX3QgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVp bnQzMl90ICpyZWZzLCB1aW50MzJfdCAqZmQpCit7CisgICAgYWJvcnQoKTsKK30KKworaW50IHhl bmdudHRhYl9kbWFidWZfZXhwX3dhaXRfcmVsZWFzZWQoeGVuZ250dGFiX2hhbmRsZSAqeGd0LCB1 aW50MzJfdCBmZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQz Ml90IHdhaXRfdG9fbXMpCit7CisgICAgYWJvcnQoKTsKK30KKworaW50IHhlbmdudHRhYl9kbWFi dWZfaW1wX3RvX3JlZnMoeGVuZ250dGFiX2hhbmRsZSAqeGd0LCB1aW50MzJfdCBkb21pZCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGZkLCB1aW50MzJfdCBjb3Vu dCwgdWludDMyX3QgKnJlZnMpCit7CisgICAgYWJvcnQoKTsKK30KKworaW50IHhlbmdudHRhYl9k bWFidWZfaW1wX3JlbGVhc2UoeGVuZ250dGFiX2hhbmRsZSAqeGd0LCB1aW50MzJfdCBmZCkKK3sK KyAgICBhYm9ydCgpOworfQorCiAvKgogICogTG9jYWwgdmFyaWFibGVzOgogICogbW9kZTogQwpk aWZmIC0tZ2l0IGEvdG9vbHMvbGlicy9nbnR0YWIvaW5jbHVkZS94ZW5nbnR0YWIuaCBiL3Rvb2xz L2xpYnMvZ250dGFiL2luY2x1ZGUveGVuZ250dGFiLmgKaW5kZXggOTFkNGNkNWJkZDg4Li4xMTFm Yzg4Y2FlYjMgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnMvZ250dGFiL2luY2x1ZGUveGVuZ250dGFi LmgKKysrIGIvdG9vbHMvbGlicy9nbnR0YWIvaW5jbHVkZS94ZW5nbnR0YWIuaApAQCAtMTgsNiAr MTgsNyBAQAogICogQSBsaWJyYXJ5IGZvciBsb3ctbGV2ZWwgYWNjZXNzIHRvIHRoZSBYZW4gY29u dHJvbCBpbnRlcmZhY2VzLgogICoKICAqIENvcHlyaWdodCAoYykgMjAwNy0yMDA4LCBEIEcgTXVy cmF5IDxEZXJlay5NdXJyYXlAY2wuY2FtLmFjLnVrPgorICogQ29weXJpZ2h0IChjKSAyMDE4LCBP bGVrc2FuZHIgQW5kcnVzaGNoZW5rbywgRVBBTSBTeXN0ZW1zIEluYy4KICAqLwogI2lmbmRlZiBY RU5HTlRUQUJfSAogI2RlZmluZSBYRU5HTlRUQUJfSApAQCAtMjk1LDYgKzI5Niw2NiBAQCBpbnQg eGVuZ250dGFiX2dyYW50X2NvcHkoeGVuZ250dGFiX2hhbmRsZSAqeGd0LAogICAgICAgICAgICAg ICAgICAgICAgICAgIHVpbnQzMl90IGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgIHhl bmdudHRhYl9ncmFudF9jb3B5X3NlZ21lbnRfdCAqc2Vncyk7CiAKKy8qCisgKiBGbGFncyB0byBi ZSB1c2VkIHdoaWxlIHJlcXVlc3RpbmcgbWVtb3J5IG1hcHBpbmcncyBiYWNraW5nIHN0b3JhZ2UK KyAqIHRvIGJlIGFsbG9jYXRlZCB3aXRoIERNQSBBUEkuCisgKi8KKworLyoKKyAqIFRoZSBidWZm ZXIgaXMgYmFja2VkIHdpdGggbWVtb3J5IGFsbG9jYXRlZCB3aXRoIGRtYV9hbGxvY193Yy4KKyAq LworI2RlZmluZSBHTlRERVZfRE1BX0ZMQUdfV0MJCSgxIDw8IDApCisKKy8qCisgKiBUaGUgYnVm ZmVyIGlzIGJhY2tlZCB3aXRoIG1lbW9yeSBhbGxvY2F0ZWQgd2l0aCBkbWFfYWxsb2NfY29oZXJl bnQuCisgKi8KKyNkZWZpbmUgR05UREVWX0RNQV9GTEFHX0NPSEVSRU5UCSgxIDw8IDEpCisKKy8q KgorICogQ3JlYXRlIGEgZG1hLWJ1ZiBbMV0gZnJvbSBncmFudCByZWZlcmVuY2VzIEByZWZzIG9m IGNvdW50IEBjb3VudCBwcm92aWRlZAorICogYnkgdGhlIGZvcmVpZ24gZG9tYWluIEBkb21pZCB3 aXRoIGZsYWdzIEBmbGFncy4KKyAqCisgKiBCeSBkZWZhdWx0IGRtYS1idWYgaXMgYmFja2VkIGJ5 IHN5c3RlbSBtZW1vcnkgcGFnZXMsIGJ1dCBieSBwcm92aWRpbmcKKyAqIG9uZSBvZiB0aGUgR05U REVWX0RNQV9GTEFHX1hYWCBmbGFncyBpdCBjYW4gYWxzbyBiZSBjcmVhdGVkIGFzCisgKiBhIERN QSB3cml0ZS1jb21iaW5lIG9yIGNvaGVyZW50IGJ1ZmZlci4KKyAqCisgKiBSZXR1cm5zIDAgaWYg ZG1hLWJ1ZiB3YXMgc3VjY2Vzc2Z1bGx5IGNyZWF0ZWQgYW5kIHRoZSBjb3JyZXNwb25kaW5nCisg KiBkbWEtYnVmJ3MgZmlsZSBkZXNjcmlwdG9yIGlzIHJldHVybmVkIGluIEBmZC4KKyAqCisgKiBb MV0gaHR0cHM6Ly9lbGl4aXIuYm9vdGxpbi5jb20vbGludXgvbGF0ZXN0L3NvdXJjZS9Eb2N1bWVu dGF0aW9uL2RyaXZlci1hcGkvZG1hLWJ1Zi5yc3QKKyAqLworaW50IHhlbmdudHRhYl9kbWFidWZf ZXhwX2Zyb21fcmVmcyh4ZW5nbnR0YWJfaGFuZGxlICp4Z3QsIHVpbnQzMl90IGRvbWlkLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBmbGFncywgdWludDMyX3Qg Y291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQzMl90 ICpyZWZzLCB1aW50MzJfdCAqZmQpOworCisvKgorICogVGhpcyB3aWxsIGJsb2NrIHVudGlsIHRo ZSBkbWEtYnVmIHdpdGggdGhlIGZpbGUgZGVzY3JpcHRvciBAZmQgaXMKKyAqIHJlbGVhc2VkLiBU aGlzIGlzIG9ubHkgdmFsaWQgZm9yIGJ1ZmZlcnMgY3JlYXRlZCB3aXRoCisgKiBJT0NUTF9HTlRE RVZfRE1BQlVGX0VYUF9GUk9NX1JFRlMuCisgKgorICogSWYgd2l0aGluZyBAd2FpdF90b19tcyBt aWxsaXNlY29uZHMgdGhlIGJ1ZmZlciBpcyBub3QgcmVsZWFzZWQKKyAqIHRoZW4gLUVUSU1FRE9V VCBlcnJvciBpcyByZXR1cm5lZC4KKyAqIElmIHRoZSBidWZmZXIgd2l0aCBmaWxlIGRlc2NyaXB0 b3IgQGZkIGRvZXMgbm90IGV4aXN0IG9yIGhhcyBhbHJlYWR5CisgKiBiZWVuIHJlbGVhc2VkLCB0 aGVuIC1FTk9FTlQgaXMgcmV0dXJuZWQuIEZvciB2YWxpZCBmaWxlIGRlc2NyaXB0b3JzCisgKiB0 aGlzIG11c3Qgbm90IGJlIHRyZWF0ZWQgYXMgZXJyb3IuCisgKi8KK2ludCB4ZW5nbnR0YWJfZG1h YnVmX2V4cF93YWl0X3JlbGVhc2VkKHhlbmdudHRhYl9oYW5kbGUgKnhndCwgdWludDMyX3QgZmQs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCB3YWl0X3Rv X21zKTsKKworLyoKKyAqIEltcG9ydCBhIGRtYS1idWYgd2l0aCBmaWxlIGRlc2NyaXB0b3IgQGZk IGFuZCBleHBvcnQgZ3JhbnRlZCByZWZlcmVuY2VzCisgKiB0byB0aGUgcGFnZXMgb2YgdGhhdCBk bWEtYnVmIGludG8gYXJyYXkgQHJlZnMgb2Ygc2l6ZSBAY291bnQuCisgKi8KK2ludCB4ZW5nbnR0 YWJfZG1hYnVmX2ltcF90b19yZWZzKHhlbmdudHRhYl9oYW5kbGUgKnhndCwgdWludDMyX3QgZG9t aWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBmZCwgdWludDMy X3QgY291bnQsIHVpbnQzMl90ICpyZWZzKTsKKworLyoKKyAqIFRoaXMgd2lsbCBjbG9zZSBhbGwg cmVmZXJlbmNlcyB0byBhbiBpbXBvcnRlZCBidWZmZXIsIHNvIGl0IGNhbiBiZQorICogcmVsZWFz ZWQgYnkgdGhlIG93bmVyLiBUaGlzIGlzIG9ubHkgdmFsaWQgZm9yIGJ1ZmZlcnMgY3JlYXRlZCB3 aXRoCisgKiBJT0NUTF9HTlRERVZfRE1BQlVGX0lNUF9UT19SRUZTLgorICovCitpbnQgeGVuZ250 dGFiX2RtYWJ1Zl9pbXBfcmVsZWFzZSh4ZW5nbnR0YWJfaGFuZGxlICp4Z3QsIHVpbnQzMl90IGZk KTsKKwogLyoKICAqIEdyYW50IFNoYXJpbmcgSW50ZXJmYWNlIChhbGxvY2F0aW5nIGFuZCBncmFu dGluZyBwYWdlcyB0byBvdGhlcnMpCiAgKi8KZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnMvZ250dGFi L2xpYnhlbmdudHRhYi5tYXAgYi90b29scy9saWJzL2dudHRhYi9saWJ4ZW5nbnR0YWIubWFwCmlu ZGV4IGQ1ZGEzODhhMGQ4ZC4uOWRlMjE4MzgxMGE5IDEwMDY0NAotLS0gYS90b29scy9saWJzL2du dHRhYi9saWJ4ZW5nbnR0YWIubWFwCisrKyBiL3Rvb2xzL2xpYnMvZ250dGFiL2xpYnhlbmdudHRh Yi5tYXAKQEAgLTMyLDMgKzMyLDExIEBAIFZFUlNfMS4yIHsKIAkJeGVuZ250dGFiX2ZkOwogCQl4 ZW5nbnRzaHJfZmQ7CiB9IFZFUlNfMS4xOworCitWRVJTXzEuMyB7CisJZ2xvYmFsOgorCQl4ZW5n bnR0YWJfZG1hYnVmX2V4cF9mcm9tX3JlZnM7CisJCXhlbmdudHRhYl9kbWFidWZfZXhwX3dhaXRf cmVsZWFzZWQ7CisJCXhlbmdudHRhYl9kbWFidWZfaW1wX3RvX3JlZnM7CisJCXhlbmdudHRhYl9k bWFidWZfaW1wX3JlbGVhc2U7Cit9IFZFUlNfMS4yOwpkaWZmIC0tZ2l0IGEvdG9vbHMvbGlicy9n bnR0YWIvbGludXguYyBiL3Rvb2xzL2xpYnMvZ250dGFiL2xpbnV4LmMKaW5kZXggODM0N2RkZDNk OWNmLi45NzY1MTQ2ZjdlYjYgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnMvZ250dGFiL2xpbnV4LmMK KysrIGIvdG9vbHMvbGlicy9nbnR0YWIvbGludXguYwpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBD b3B5cmlnaHQgKGMpIDIwMDctMjAwOCwgRCBHIE11cnJheSA8RGVyZWsuTXVycmF5QGNsLmNhbS5h Yy51az4KKyAqIENvcHlyaWdodCAoYykgMjAxOCwgT2xla3NhbmRyIEFuZHJ1c2hjaGVua28sIEVQ QU0gU3lzdGVtcyBJbmMuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt cyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtMzA5LDYgKzMxMCwxMTggQEAg aW50IG9zZGVwX2dudHRhYl9ncmFudF9jb3B5KHhlbmdudHRhYl9oYW5kbGUgKnhndCwKICAgICBy ZXR1cm4gcmM7CiB9CiAKK2ludCBvc2RlcF9nbnR0YWJfZG1hYnVmX2V4cF9mcm9tX3JlZnMoeGVu Z250dGFiX2hhbmRsZSAqeGd0LCB1aW50MzJfdCBkb21pZCwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdWludDMyX3QgZmxhZ3MsIHVpbnQzMl90IGNvdW50LAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50MzJfdCAqcmVmcywKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgKmRtYWJ1Zl9mZCkK K3sKKyAgICBzdHJ1Y3QgaW9jdGxfZ250ZGV2X2RtYWJ1Zl9leHBfZnJvbV9yZWZzICpmcm9tX3Jl ZnM7CisgICAgaW50IHJjID0gMDsKKworICAgIGlmICggIWNvdW50ICkKKyAgICB7CisgICAgICAg IGVycm5vID0gRUlOVkFMOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgZnJvbV9y ZWZzID0gbWFsbG9jKHNpemVvZigqZnJvbV9yZWZzKSArCisgICAgICAgICAgICAgICAgICAgICAg IChjb3VudCAtIDEpICogc2l6ZW9mKGZyb21fcmVmcy0+cmVmc1swXSkpOworICAgIGlmICggIWZy b21fcmVmcyApCisgICAgeworICAgICAgICBlcnJubyA9IEVOT01FTTsKKyAgICAgICAgcmV0dXJu IC0xOworICAgIH0KKworICAgIGZyb21fcmVmcy0+ZmxhZ3MgPSBmbGFnczsKKyAgICBmcm9tX3Jl ZnMtPmNvdW50ID0gY291bnQ7CisgICAgZnJvbV9yZWZzLT5kb21pZCA9IGRvbWlkOworCisgICAg bWVtY3B5KGZyb21fcmVmcy0+cmVmcywgcmVmcywgY291bnQgKiBzaXplb2YoZnJvbV9yZWZzLT5y ZWZzWzBdKSk7CisKKyAgICBpZiAoIChyYyA9IGlvY3RsKHhndC0+ZmQsIElPQ1RMX0dOVERFVl9E TUFCVUZfRVhQX0ZST01fUkVGUywgZnJvbV9yZWZzKSkgKQorICAgIHsKKyAgICAgICAgR1RFUlJP Uih4Z3QtPmxvZ2dlciwgImlvY3RsIERNQUJVRl9FWFBfRlJPTV9SRUZTIGZhaWxlZCIpOworICAg ICAgICBnb3RvIG91dDsKKyAgICB9CisKKyAgICAqZG1hYnVmX2ZkID0gZnJvbV9yZWZzLT5mZDsK Kworb3V0OgorICAgIGZyZWUoZnJvbV9yZWZzKTsKKyAgICByZXR1cm4gcmM7Cit9CisKK2ludCBv c2RlcF9nbnR0YWJfZG1hYnVmX2V4cF93YWl0X3JlbGVhc2VkKHhlbmdudHRhYl9oYW5kbGUgKnhn dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGZk LCB1aW50MzJfdCB3YWl0X3RvX21zKQoreworICAgIHN0cnVjdCBpb2N0bF9nbnRkZXZfZG1hYnVm X2V4cF93YWl0X3JlbGVhc2VkIHdhaXQ7CisgICAgaW50IHJjOworCisgICAgd2FpdC5mZCA9IGZk OworICAgIHdhaXQud2FpdF90b19tcyA9IHdhaXRfdG9fbXM7CisKKyAgICBpZiAoIChyYyA9IGlv Y3RsKHhndC0+ZmQsIElPQ1RMX0dOVERFVl9ETUFCVUZfRVhQX1dBSVRfUkVMRUFTRUQsICZ3YWl0 KSkgKSB7CisgICAgICAgIGlmICggZXJybm8gPT0gRU5PRU5UICkgeworICAgICAgICAgICAgLyog VGhlIGJ1ZmZlciBtYXkgaGF2ZSBhbHJlYWR5IGJlZW4gcmVsZWFzZWQuICovCisgICAgICAgICAg ICBlcnJubyA9IDA7CisgICAgICAgICAgICByYyA9IDA7CisgICAgICAgIH0gZWxzZQorICAgICAg ICAgICAgR1RFUlJPUih4Z3QtPmxvZ2dlciwgImlvY3RsIERNQUJVRl9FWFBfV0FJVF9SRUxFQVNF RCBmYWlsZWQiKTsKKyAgICB9CisKKyAgICByZXR1cm4gcmM7Cit9CisKK2ludCBvc2RlcF9nbnR0 YWJfZG1hYnVmX2ltcF90b19yZWZzKHhlbmdudHRhYl9oYW5kbGUgKnhndCwgdWludDMyX3QgZG9t aWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBmZCwgdWlu dDMyX3QgY291bnQsIHVpbnQzMl90ICpyZWZzKQoreworICAgIHN0cnVjdCBpb2N0bF9nbnRkZXZf ZG1hYnVmX2ltcF90b19yZWZzICp0b19yZWZzOworICAgIGludCByYyA9IDA7CisKKyAgICBpZiAo ICFjb3VudCApCisgICAgeworICAgICAgICBlcnJubyA9IEVJTlZBTDsKKyAgICAgICAgcmV0dXJu IC0xOworICAgIH0KKworICAgIHRvX3JlZnMgPSBtYWxsb2Moc2l6ZW9mKCp0b19yZWZzKSArCisg ICAgICAgICAgICAgICAgICAgICAoY291bnQgLSAxKSAqIHNpemVvZih0b19yZWZzLT5yZWZzWzBd KSk7CisgICAgaWYgKCAhdG9fcmVmcyApCisgICAgeworICAgICAgICBlcnJubyA9IEVOT01FTTsK KyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIHRvX3JlZnMtPmZkID0gZmQ7CisgICAg dG9fcmVmcy0+Y291bnQgPSBjb3VudDsKKyAgICB0b19yZWZzLT5kb21pZCA9IGRvbWlkOworCisg ICAgaWYgKCAocmMgPSBpb2N0bCh4Z3QtPmZkLCBJT0NUTF9HTlRERVZfRE1BQlVGX0lNUF9UT19S RUZTLCB0b19yZWZzKSkgKQorICAgIHsKKyAgICAgICAgR1RFUlJPUih4Z3QtPmxvZ2dlciwgImlv Y3RsIERNQUJVRl9JTVBfVE9fUkVGUyBmYWlsZWQiKTsKKyAgICAgICAgZ290byBvdXQ7CisgICAg fQorCisgICAgbWVtY3B5KHJlZnMsIHRvX3JlZnMtPnJlZnMsIGNvdW50ICogc2l6ZW9mKCpyZWZz KSk7CisKK291dDoKKyAgICBmcmVlKHRvX3JlZnMpOworICAgIHJldHVybiByYzsKK30KKworaW50 IG9zZGVwX2dudHRhYl9kbWFidWZfaW1wX3JlbGVhc2UoeGVuZ250dGFiX2hhbmRsZSAqeGd0LCB1 aW50MzJfdCBmZCkKK3sKKyAgICBzdHJ1Y3QgaW9jdGxfZ250ZGV2X2RtYWJ1Zl9pbXBfcmVsZWFz ZSByZWxlYXNlOworICAgIGludCByYzsKKworICAgIHJlbGVhc2UuZmQgPSBmZDsKKworICAgIGlm ICggKHJjID0gaW9jdGwoeGd0LT5mZCwgSU9DVExfR05UREVWX0RNQUJVRl9JTVBfUkVMRUFTRSwg JnJlbGVhc2UpKSApCisgICAgICAgIEdURVJST1IoeGd0LT5sb2dnZXIsICJpb2N0bCBETUFCVUZf SU1QX1JFTEVBU0UgZmFpbGVkIik7CisKKyAgICByZXR1cm4gcmM7Cit9CisKIGludCBvc2RlcF9n bnRzaHJfb3Blbih4ZW5nbnRzaHJfaGFuZGxlICp4Z3MpCiB7CiAgICAgaW50IGZkID0gb3BlbihE RVZYRU4gImdudGFsbG9jIiwgT19SRFdSKTsKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnMvZ250dGFi L21pbmlvcy5jIGIvdG9vbHMvbGlicy9nbnR0YWIvbWluaW9zLmMKaW5kZXggMDk1MWJjOWJhYzVi Li5mNzhjYWFkZDMwNDMgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnMvZ250dGFiL21pbmlvcy5jCisr KyBiL3Rvb2xzL2xpYnMvZ250dGFiL21pbmlvcy5jCkBAIC0xMTIsNiArMTEyLDMyIEBAIGludCBv c2RlcF9nbnR0YWJfZ3JhbnRfY29weSh4ZW5nbnR0YWJfaGFuZGxlICp4Z3QsCiB7CiAgICAgcmV0 dXJuIC0xOwogfQorCitpbnQgb3NkZXBfZ250dGFiX2RtYWJ1Zl9leHBfZnJvbV9yZWZzKHhlbmdu dHRhYl9oYW5kbGUgKnhndCwgdWludDMyX3QgZG9taWQsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHVpbnQzMl90IGZsYWdzLCB1aW50MzJfdCBjb3VudCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDMyX3QgKnJlZnMsIHVpbnQz Ml90ICpmZCkKK3sKKyAgICByZXR1cm4gLTE7Cit9CisKK2ludCBvc2RlcF9nbnR0YWJfZG1hYnVm X2V4cF93YWl0X3JlbGVhc2VkKHhlbmdudHRhYl9oYW5kbGUgKnhndCwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGZkLCB1aW50MzJfdCB3YWl0X3Rv X21zKQoreworICAgIHJldHVybiAtMTsKK30KKworaW50IG9zZGVwX2dudHRhYl9kbWFidWZfaW1w X3RvX3JlZnMoeGVuZ250dGFiX2hhbmRsZSAqeGd0LCB1aW50MzJfdCBkb21pZCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGZkLCB1aW50MzJfdCBjb3VudCwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90ICpyZWZzKQorewor ICAgIHJldHVybiAtMTsKK30KKworaW50IG9zZGVwX2dudHRhYl9kbWFidWZfaW1wX3JlbGVhc2Uo eGVuZ250dGFiX2hhbmRsZSAqeGd0LCB1aW50MzJfdCBmZCkKK3sKKyAgICByZXR1cm4gLTE7Cit9 CisKIC8qCiAgKiBMb2NhbCB2YXJpYWJsZXM6CiAgKiBtb2RlOiBDCmRpZmYgLS1naXQgYS90b29s cy9saWJzL2dudHRhYi9wcml2YXRlLmggYi90b29scy9saWJzL2dudHRhYi9wcml2YXRlLmgKaW5k ZXggZWQ4ZGY0MGRlZjBkLi5jNWUyMzYzOWIxNDEgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnMvZ250 dGFiL3ByaXZhdGUuaAorKysgYi90b29scy9saWJzL2dudHRhYi9wcml2YXRlLmgKQEAgLTM1LDYg KzM1LDE5IEBAIGludCBvc2RlcF9nbnR0YWJfZ3JhbnRfY29weSh4ZW5nbnR0YWJfaGFuZGxlICp4 Z3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgY291bnQsCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgeGVuZ250dGFiX2dyYW50X2NvcHlfc2VnbWVudF90ICpzZWdz KTsKIAoraW50IG9zZGVwX2dudHRhYl9kbWFidWZfZXhwX2Zyb21fcmVmcyh4ZW5nbnR0YWJfaGFu ZGxlICp4Z3QsIHVpbnQzMl90IGRvbWlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB1aW50MzJfdCBmbGFncywgdWludDMyX3QgY291bnQsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQzMl90ICpyZWZzLCB1aW50MzJfdCAqZmQp OworCitpbnQgb3NkZXBfZ250dGFiX2RtYWJ1Zl9leHBfd2FpdF9yZWxlYXNlZCh4ZW5nbnR0YWJf aGFuZGxlICp4Z3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1 aW50MzJfdCBmZCwgdWludDMyX3Qgd2FpdF90b19tcyk7CisKK2ludCBvc2RlcF9nbnR0YWJfZG1h YnVmX2ltcF90b19yZWZzKHhlbmdudHRhYl9oYW5kbGUgKnhndCwgdWludDMyX3QgZG9taWQsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBmZCwgdWludDMyX3Qg Y291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCAqcmVm cyk7CisKK2ludCBvc2RlcF9nbnR0YWJfZG1hYnVmX2ltcF9yZWxlYXNlKHhlbmdudHRhYl9oYW5k bGUgKnhndCwgdWludDMyX3QgZmQpOworCiBpbnQgb3NkZXBfZ250c2hyX29wZW4oeGVuZ250c2hy X2hhbmRsZSAqeGdzKTsKIGludCBvc2RlcF9nbnRzaHJfY2xvc2UoeGVuZ250c2hyX2hhbmRsZSAq eGdzKTsKIAotLSAKMi4xOC4wCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVucHJv amVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hl bi1kZXZlbA==