From mboxrd@z Thu Jan 1 00:00:00 1970 From: Petre Pircalabu Subject: [PATCH 8/9] vm_event: Add vm_event_ng interface Date: Thu, 30 May 2019 17:18:22 +0300 Message-ID: <3ec19ed5425a62ecbc524e44c4bba86d5fe41762.1559224640.git.ppircalabu@bitdefender.com> References: Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1hWLt2-0003AJ-RH for xen-devel@lists.xenproject.org; Thu, 30 May 2019 14:18:32 +0000 In-Reply-To: In-Reply-To: References: 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 Cc: Petre Pircalabu , Stefano Stabellini , Razvan Cojocaru , Wei Liu , Konrad Rzeszutek Wilk , George Dunlap , Andrew Cooper , Ian Jackson , Tim Deegan , Julien Grall , Tamas K Lengyel , Jan Beulich , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= List-Id: xen-devel@lists.xenproject.org SW4gaGlnaCB0aHJvdWdocHV0IGludHJvc3BlY3Rpb24gc2NlbmFyaW9zIHdoZXJlIGxvdHMgb2Yg bW9uaXRvcgp2bV9ldmVudHMgYXJlIGdlbmVyYXRlZCwgdGhlIHJpbmcgYnVmZmVyIGNhbiBmaWxs IHVwIGJlZm9yZSB0aGUgbW9uaXRvcgphcHBsaWNhdGlvbiBnZXRzIGEgY2hhbmNlIHRvIGhhbmRs ZSBhbGwgdGhlIHJlcXVlc3RzIHRodXMgYmxvY2tpbmcKb3RoZXIgdmNwdXMgd2hpY2ggd2lsbCBo YXZlIHRvIHdhaXQgZm9yIGEgc2xvdCB0byBiZWNvbWUgYXZhaWxhYmxlLgoKVGhpcyBwYXRjaCBh ZGRzIHN1cHBvcnQgZm9yIGEgZGlmZmVyZW50IG1lY2hhbmlzbSB0byBoYW5kbGUgc3luY2hyb25v dXMKdm1fZXZlbnQgcmVxdWVzdHMgLyByZXNwb25zZXMuIEFzIGVhY2ggc3luY2hyb25vdXMgcmVx dWVzdCBwYXVzZXMgdGhlCnZjcHUgdW50aWwgdGhlIGNvcnJlc3BvbmRpbmcgcmVzcG9uc2UgaXMg aGFuZGxlZCwgaXQgY2FuIGJlIHN0b3JlZCBpbgphIHNsb3R0ZWQgbWVtb3J5IGJ1ZmZlciAob25l IHBlciB2Y3B1KSBzaGFyZWQgYmV0d2VlbiB0aGUgaHlwZXJ2aXNvciBhbmQKdGhlIGNvbnRyb2xs aW5nIGRvbWFpbi4KClNpZ25lZC1vZmYtYnk6IFBldHJlIFBpcmNhbGFidSA8cHBpcmNhbGFidUBi aXRkZWZlbmRlci5jb20+Ci0tLQogdG9vbHMvbGlieGMvaW5jbHVkZS94ZW5jdHJsLmggfCAgIDYg KwogdG9vbHMvbGlieGMveGNfbW9uaXRvci5jICAgICAgfCAgMTUgKysKIHRvb2xzL2xpYnhjL3hj X3ByaXZhdGUuaCAgICAgIHwgICA4ICsKIHRvb2xzL2xpYnhjL3hjX3ZtX2V2ZW50LmMgICAgIHwg IDUzICsrKysrCiB4ZW4vYXJjaC94ODYvbW0uYyAgICAgICAgICAgICB8ICAgNSArCiB4ZW4vY29t bW9uL01ha2VmaWxlICAgICAgICAgICB8ICAgMSArCiB4ZW4vY29tbW9uL2RvbWN0bC5jICAgICAg ICAgICB8ICAgNyArCiB4ZW4vY29tbW9uL3ZtX2V2ZW50LmMgICAgICAgICB8ICA5NCArKysrLS0t LS0KIHhlbi9jb21tb24vdm1fZXZlbnRfbmcuYyAgICAgIHwgNDQ5ICsrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKwogeGVuL2luY2x1ZGUvcHVibGljL2RvbWN0bC5oICAg fCAgMjAgKysKIHhlbi9pbmNsdWRlL3B1YmxpYy9tZW1vcnkuaCAgIHwgICAyICsKIHhlbi9pbmNs dWRlL3B1YmxpYy92bV9ldmVudC5oIHwgIDE2ICsrCiB4ZW4vaW5jbHVkZS94ZW4vdm1fZXZlbnQu aCAgICB8ICAxMCArCiAxMyBmaWxlcyBjaGFuZ2VkLCA2NDIgaW5zZXJ0aW9ucygrKSwgNDQgZGVs ZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgeGVuL2NvbW1vbi92bV9ldmVudF9uZy5jCgpk aWZmIC0tZ2l0IGEvdG9vbHMvbGlieGMvaW5jbHVkZS94ZW5jdHJsLmggYi90b29scy9saWJ4Yy9p bmNsdWRlL3hlbmN0cmwuaAppbmRleCA5NDNiOTMzLi5jMzZiNjIzIDEwMDY0NAotLS0gYS90b29s cy9saWJ4Yy9pbmNsdWRlL3hlbmN0cmwuaAorKysgYi90b29scy9saWJ4Yy9pbmNsdWRlL3hlbmN0 cmwuaApAQCAtMTk5Myw2ICsxOTkzLDcgQEAgaW50IHhjX2dldF9tZW1fYWNjZXNzKHhjX2ludGVy ZmFjZSAqeGNoLCB1aW50MzJfdCBkb21haW5faWQsCiAgKiBSZXR1cm5zIHRoZSBWTV9FVkVOVF9J TlRFUkZBQ0UgdmVyc2lvbi4KICAqLwogaW50IHhjX3ZtX2V2ZW50X2dldF92ZXJzaW9uKHhjX2lu dGVyZmFjZSAqeGNoKTsKK2ludCB4Y192bV9ldmVudF9uZ19nZXRfdmVyc2lvbih4Y19pbnRlcmZh Y2UgKnhjaCk7CiAKIC8qKioKICAqIE1vbml0b3IgY29udHJvbCBvcGVyYXRpb25zLgpAQCAtMjAw Nyw2ICsyMDA4LDExIEBAIGludCB4Y192bV9ldmVudF9nZXRfdmVyc2lvbih4Y19pbnRlcmZhY2Ug KnhjaCk7CiB2b2lkICp4Y19tb25pdG9yX2VuYWJsZSh4Y19pbnRlcmZhY2UgKnhjaCwgdWludDMy X3QgZG9tYWluX2lkLCB1aW50MzJfdCAqcG9ydCk7CiBpbnQgeGNfbW9uaXRvcl9kaXNhYmxlKHhj X2ludGVyZmFjZSAqeGNoLCB1aW50MzJfdCBkb21haW5faWQpOwogaW50IHhjX21vbml0b3JfcmVz dW1lKHhjX2ludGVyZmFjZSAqeGNoLCB1aW50MzJfdCBkb21haW5faWQpOworCisvKiBNb25pdG9y IE5HIGludGVyZmFjZSAqLworaW50IHhjX21vbml0b3JfbmdfY3JlYXRlKHhjX2ludGVyZmFjZSAq eGNoLCB1aW50MzJfdCBkb21haW5faWQpOworaW50IHhjX21vbml0b3JfbmdfZGVzdHJveSh4Y19p bnRlcmZhY2UgKnhjaCwgdWludDMyX3QgZG9tYWluX2lkKTsKK2ludCB4Y19tb25pdG9yX25nX3Nl dF9zdGF0ZSh4Y19pbnRlcmZhY2UgKnhjaCwgdWludDMyX3QgZG9tYWluX2lkLCBib29sIGVuYWJs ZWQpOwogLyoKICAqIEdldCBhIGJpdG1hcCBvZiBzdXBwb3J0ZWQgbW9uaXRvciBldmVudHMgaW4g dGhlIGZvcm0KICAqICgxIDw8IFhFTl9ET01DVExfTU9OSVRPUl9FVkVOVF8qKS4KZGlmZiAtLWdp dCBhL3Rvb2xzL2xpYnhjL3hjX21vbml0b3IuYyBiL3Rvb2xzL2xpYnhjL3hjX21vbml0b3IuYwpp bmRleCA3MThmZThiLi40YzdlZjJiIDEwMDY0NAotLS0gYS90b29scy9saWJ4Yy94Y19tb25pdG9y LmMKKysrIGIvdG9vbHMvbGlieGMveGNfbW9uaXRvci5jCkBAIC0yNjUsNiArMjY1LDIxIEBAIGlu dCB4Y19tb25pdG9yX2VtdWxfdW5pbXBsZW1lbnRlZCh4Y19pbnRlcmZhY2UgKnhjaCwgdWludDMy X3QgZG9tYWluX2lkLAogICAgIHJldHVybiBkb19kb21jdGwoeGNoLCAmZG9tY3RsKTsKIH0KIAor aW50IHhjX21vbml0b3JfbmdfY3JlYXRlKHhjX2ludGVyZmFjZSAqeGNoLCB1aW50MzJfdCBkb21h aW5faWQpCit7CisgICAgcmV0dXJuIHhjX3ZtX2V2ZW50X25nX2NyZWF0ZSh4Y2gsIGRvbWFpbl9p ZCwgWEVOX1ZNX0VWRU5UX1RZUEVfTU9OSVRPUik7Cit9CisKK2ludCB4Y19tb25pdG9yX25nX2Rl c3Ryb3koeGNfaW50ZXJmYWNlICp4Y2gsIHVpbnQzMl90IGRvbWFpbl9pZCkKK3sKKyAgICByZXR1 cm4geGNfdm1fZXZlbnRfbmdfZGVzdHJveSh4Y2gsIGRvbWFpbl9pZCwgWEVOX1ZNX0VWRU5UX1RZ UEVfTU9OSVRPUik7Cit9CisKK2ludCB4Y19tb25pdG9yX25nX3NldF9zdGF0ZSh4Y19pbnRlcmZh Y2UgKnhjaCwgdWludDMyX3QgZG9tYWluX2lkLCBib29sIGVuYWJsZWQpCit7CisgICAgcmV0dXJu IHhjX3ZtX2V2ZW50X25nX3NldF9zdGF0ZSh4Y2gsIGRvbWFpbl9pZCwgWEVOX1ZNX0VWRU5UX1RZ UEVfTU9OSVRPUiwgZW5hYmxlZCk7Cit9CisKIC8qCiAgKiBMb2NhbCB2YXJpYWJsZXM6CiAgKiBt b2RlOiBDCmRpZmYgLS1naXQgYS90b29scy9saWJ4Yy94Y19wcml2YXRlLmggYi90b29scy9saWJ4 Yy94Y19wcml2YXRlLmgKaW5kZXggNDgyNDUxYy4uMTkwNGExZSAxMDA2NDQKLS0tIGEvdG9vbHMv bGlieGMveGNfcHJpdmF0ZS5oCisrKyBiL3Rvb2xzL2xpYnhjL3hjX3ByaXZhdGUuaApAQCAtNDIw LDYgKzQyMCwxNCBAQCBpbnQgeGNfdm1fZXZlbnRfY29udHJvbCh4Y19pbnRlcmZhY2UgKnhjaCwg dWludDMyX3QgZG9tYWluX2lkLCB1bnNpZ25lZCBpbnQgb3AsCiB2b2lkICp4Y192bV9ldmVudF9l bmFibGUoeGNfaW50ZXJmYWNlICp4Y2gsIHVpbnQzMl90IGRvbWFpbl9pZCwgaW50IHR5cGUsCiAg ICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgKnBvcnQpOwogCisvKioKKyAqIFZNX0VW RU5UIE5HIG9wZXJhdGlvbnMuIEludGVybmFsIHVzZSBvbmx5LgorICovCitpbnQgeGNfdm1fZXZl bnRfbmdfY3JlYXRlKHhjX2ludGVyZmFjZSAqeGNoLCB1aW50MzJfdCBkb21haW5faWQsIGludCB0 eXBlKTsKK2ludCB4Y192bV9ldmVudF9uZ19kZXN0cm95KHhjX2ludGVyZmFjZSAqeGNoLCB1aW50 MzJfdCBkb21haW5faWQsIGludCB0eXBlKTsKK2ludCB4Y192bV9ldmVudF9uZ19zZXRfc3RhdGUo eGNfaW50ZXJmYWNlICp4Y2gsIHVpbnQzMl90IGRvbWFpbl9pZCwgaW50IHR5cGUsIGJvb2wgZW5h YmxlZCk7CisKKwogaW50IGRvX2RtX29wKHhjX2ludGVyZmFjZSAqeGNoLCB1aW50MzJfdCBkb21p ZCwgdW5zaWduZWQgaW50IG5yX2J1ZnMsIC4uLik7CiAKICNlbmRpZiAvKiBfX1hDX1BSSVZBVEVf SF9fICovCmRpZmYgLS1naXQgYS90b29scy9saWJ4Yy94Y192bV9ldmVudC5jIGIvdG9vbHMvbGli eGMveGNfdm1fZXZlbnQuYwppbmRleCAzYjEwMThiLi4wNzI0M2E2IDEwMDY0NAotLS0gYS90b29s cy9saWJ4Yy94Y192bV9ldmVudC5jCisrKyBiL3Rvb2xzL2xpYnhjL3hjX3ZtX2V2ZW50LmMKQEAg LTE1NCw2ICsxNTQsNTkgQEAgaW50IHhjX3ZtX2V2ZW50X2dldF92ZXJzaW9uKHhjX2ludGVyZmFj ZSAqeGNoKQogICAgIHJldHVybiByYzsKIH0KIAoraW50IHhjX3ZtX2V2ZW50X25nX2dldF92ZXJz aW9uKHhjX2ludGVyZmFjZSAqeGNoKQoreworICAgIERFQ0xBUkVfRE9NQ1RMOworICAgIGludCBy YzsKKworICAgIGRvbWN0bC5jbWQgPSBYRU5fRE9NQ1RMX3ZtX2V2ZW50X25nX29wOworICAgIGRv bWN0bC5kb21haW4gPSBET01JRF9JTlZBTElEOworICAgIGRvbWN0bC51LnZtX2V2ZW50X29wLm9w ID0gWEVOX1ZNX0VWRU5UX05HX0dFVF9WRVJTSU9OOworICAgIGRvbWN0bC51LnZtX2V2ZW50X29w LnR5cGUgPSBYRU5fVk1fRVZFTlRfVFlQRV9NT05JVE9SOworCisgICAgcmMgPSBkb19kb21jdGwo eGNoLCAmZG9tY3RsKTsKKyAgICBpZiAoICFyYyApCisgICAgICAgIHJjID0gZG9tY3RsLnUudm1f ZXZlbnRfbmdfb3AudS52ZXJzaW9uOworICAgIHJldHVybiByYzsKK30KKworaW50IHhjX3ZtX2V2 ZW50X25nX2NyZWF0ZSh4Y19pbnRlcmZhY2UgKnhjaCwgdWludDMyX3QgZG9tYWluX2lkLCBpbnQg dHlwZSkKK3sKKyAgICBERUNMQVJFX0RPTUNUTDsKKworICAgIGRvbWN0bC5jbWQgPSBYRU5fRE9N Q1RMX3ZtX2V2ZW50X25nX29wOworICAgIGRvbWN0bC5kb21haW4gPSBkb21haW5faWQ7CisgICAg ZG9tY3RsLnUudm1fZXZlbnRfbmdfb3Aub3AgPSBYRU5fVk1fRVZFTlRfTkdfQ1JFQVRFOworICAg IGRvbWN0bC51LnZtX2V2ZW50X25nX29wLnR5cGUgPSB0eXBlOworCisgICAgcmV0dXJuIGRvX2Rv bWN0bCh4Y2gsICZkb21jdGwpOworfQorCitpbnQgeGNfdm1fZXZlbnRfbmdfZGVzdHJveSh4Y19p bnRlcmZhY2UgKnhjaCwgdWludDMyX3QgZG9tYWluX2lkLCBpbnQgdHlwZSkKK3sKKyAgICBERUNM QVJFX0RPTUNUTDsKKworICAgIGRvbWN0bC5jbWQgPSBYRU5fRE9NQ1RMX3ZtX2V2ZW50X25nX29w OworICAgIGRvbWN0bC5kb21haW4gPSBkb21haW5faWQ7CisgICAgZG9tY3RsLnUudm1fZXZlbnRf bmdfb3Aub3AgPSBYRU5fVk1fRVZFTlRfTkdfREVTVFJPWTsKKyAgICBkb21jdGwudS52bV9ldmVu dF9uZ19vcC50eXBlID0gdHlwZTsKKworICAgIHJldHVybiBkb19kb21jdGwoeGNoLCAmZG9tY3Rs KTsKK30KKworaW50IHhjX3ZtX2V2ZW50X25nX3NldF9zdGF0ZSh4Y19pbnRlcmZhY2UgKnhjaCwg dWludDMyX3QgZG9tYWluX2lkLCBpbnQgdHlwZSwgYm9vbCBlbmFibGVkKQoreworICAgIERFQ0xB UkVfRE9NQ1RMOworCisgICAgZG9tY3RsLmNtZCA9IFhFTl9ET01DVExfdm1fZXZlbnRfbmdfb3A7 CisgICAgZG9tY3RsLmRvbWFpbiA9IGRvbWFpbl9pZDsKKyAgICBkb21jdGwudS52bV9ldmVudF9u Z19vcC5vcCA9IFhFTl9WTV9FVkVOVF9OR19TRVRfU1RBVEU7CisgICAgZG9tY3RsLnUudm1fZXZl bnRfbmdfb3AudHlwZSA9IHR5cGU7CisgICAgZG9tY3RsLnUudm1fZXZlbnRfbmdfb3AudS5lbmFi bGVkID0gZW5hYmxlZDsKKworICAgIHJldHVybiBkb19kb21jdGwoeGNoLCAmZG9tY3RsKTsKK30K KwogLyoKICAqIExvY2FsIHZhcmlhYmxlczoKICAqIG1vZGU6IEMKZGlmZiAtLWdpdCBhL3hlbi9h cmNoL3g4Ni9tbS5jIGIveGVuL2FyY2gveDg2L21tLmMKaW5kZXggMmY2MjBkOS4uMDMwYjViZCAx MDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L21tLmMKKysrIGIveGVuL2FyY2gveDg2L21tLmMKQEAg LTExOSw2ICsxMTksNyBAQAogI2luY2x1ZGUgPHhlbi9lZmkuaD4KICNpbmNsdWRlIDx4ZW4vZ3Jh bnRfdGFibGUuaD4KICNpbmNsdWRlIDx4ZW4vaHlwZXJjYWxsLmg+CisjaW5jbHVkZSA8eGVuL3Zt X2V2ZW50Lmg+CiAjaW5jbHVkZSA8YXNtL3BhZ2luZy5oPgogI2luY2x1ZGUgPGFzbS9zaGFkb3cu aD4KICNpbmNsdWRlIDxhc20vcGFnZS5oPgpAQCAtNDU4NCw2ICs0NTg1LDEwIEBAIGludCBhcmNo X2FjcXVpcmVfcmVzb3VyY2Uoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgaW50IHR5cGUsCiAg ICAgfQogI2VuZGlmCiAKKyAgICBjYXNlIFhFTk1FTV9yZXNvdXJjZV92bV9ldmVudDoKKyAgICAg ICAgcmMgPSB2bV9ldmVudF9uZ19nZXRfZnJhbWVzKGQsIGlkLCBmcmFtZSwgbnJfZnJhbWVzLCBt Zm5fbGlzdCk7CisgICAgICAgIGJyZWFrOworCiAgICAgZGVmYXVsdDoKICAgICAgICAgcmMgPSAt RU9QTk9UU1VQUDsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS94ZW4vY29tbW9uL01ha2Vm aWxlIGIveGVuL2NvbW1vbi9NYWtlZmlsZQppbmRleCAzM2QwM2I4Li44Y2IzM2UyIDEwMDY0NAot LS0gYS94ZW4vY29tbW9uL01ha2VmaWxlCisrKyBiL3hlbi9jb21tb24vTWFrZWZpbGUKQEAgLTU5 LDYgKzU5LDcgQEAgb2JqLXkgKz0gdHJhY2Uubwogb2JqLXkgKz0gdmVyc2lvbi5vCiBvYmoteSAr PSB2aXJ0dWFsX3JlZ2lvbi5vCiBvYmoteSArPSB2bV9ldmVudC5vCitvYmoteSArPSB2bV9ldmVu dF9uZy5vCiBvYmoteSArPSB2bWFwLm8KIG9iai15ICs9IHZzcHJpbnRmLm8KIG9iai15ICs9IHdh aXQubwpkaWZmIC0tZ2l0IGEveGVuL2NvbW1vbi9kb21jdGwuYyBiL3hlbi9jb21tb24vZG9tY3Rs LmMKaW5kZXggYmFkZTlhNi4uMjNmNmU1NiAxMDA2NDQKLS0tIGEveGVuL2NvbW1vbi9kb21jdGwu YworKysgYi94ZW4vY29tbW9uL2RvbWN0bC5jCkBAIC0zOTMsNiArMzkzLDcgQEAgbG9uZyBkb19k b21jdGwoWEVOX0dVRVNUX0hBTkRMRV9QQVJBTSh4ZW5fZG9tY3RsX3QpIHVfZG9tY3RsKQogICAg IHsKICAgICBjYXNlIFhFTl9ET01DVExfdGVzdF9hc3NpZ25fZGV2aWNlOgogICAgIGNhc2UgWEVO X0RPTUNUTF92bV9ldmVudF9vcDoKKyAgICBjYXNlIFhFTl9ET01DVExfdm1fZXZlbnRfbmdfb3A6 CiAgICAgICAgIGlmICggb3AtPmRvbWFpbiA9PSBET01JRF9JTlZBTElEICkKICAgICAgICAgewog ICAgIGNhc2UgWEVOX0RPTUNUTF9jcmVhdGVkb21haW46CkBAIC0xMDIzLDYgKzEwMjQsMTIgQEAg bG9uZyBkb19kb21jdGwoWEVOX0dVRVNUX0hBTkRMRV9QQVJBTSh4ZW5fZG9tY3RsX3QpIHVfZG9t Y3RsKQogICAgICAgICBjb3B5YmFjayA9IDE7CiAgICAgICAgIGJyZWFrOwogCisgICAgY2FzZSBY RU5fRE9NQ1RMX3ZtX2V2ZW50X25nX29wOgorICAgICAgICByZXQgPSB2bV9ldmVudF9uZ19kb21j dGwoZCwgJm9wLT51LnZtX2V2ZW50X25nX29wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZ3Vlc3RfaGFuZGxlX2Nhc3QodV9kb21jdGwsIHZvaWQpKTsKKyAgICAgICAgY29weWJh Y2sgPSAxOworICAgICAgICBicmVhazsKKwogI2lmZGVmIENPTkZJR19NRU1fQUNDRVNTCiAgICAg Y2FzZSBYRU5fRE9NQ1RMX3NldF9hY2Nlc3NfcmVxdWlyZWQ6CiAgICAgICAgIGlmICggdW5saWtl bHkoY3VycmVudC0+ZG9tYWluID09IGQpICkgLyogbm8gZG9tYWluX3BhdXNlKCkgKi8KZGlmZiAt LWdpdCBhL3hlbi9jb21tb24vdm1fZXZlbnQuYyBiL3hlbi9jb21tb24vdm1fZXZlbnQuYwppbmRl eCAxZDg1ZjNlLi5lOTRmZTNjIDEwMDY0NAotLS0gYS94ZW4vY29tbW9uL3ZtX2V2ZW50LmMKKysr IGIveGVuL2NvbW1vbi92bV9ldmVudC5jCkBAIC0zODAsNiArMzgwLDUxIEBAIHN0YXRpYyBpbnQg dm1fZXZlbnRfcmluZ19nZXRfcmVzcG9uc2Uoc3RydWN0IHZtX2V2ZW50X3JpbmdfZG9tYWluICpp bXBsLAogICAgIHJldHVybiAxOwogfQogCit2b2lkIHZtX2V2ZW50X2hhbmRsZV9yZXNwb25zZShz dHJ1Y3QgZG9tYWluICpkLCBzdHJ1Y3QgdmNwdSAqdiwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHZtX2V2ZW50X3Jlc3BvbnNlX3QgKnJzcCkKK3sKKyAgICAvKiBDaGVjayBmbGFncyB3 aGljaCBhcHBseSBvbmx5IHdoZW4gdGhlIHZDUFUgaXMgcGF1c2VkICovCisgICAgaWYgKCBhdG9t aWNfcmVhZCgmdi0+dm1fZXZlbnRfcGF1c2VfY291bnQpICkKKyAgICB7CisjaWZkZWYgQ09ORklH X0hBU19NRU1fUEFHSU5HCisgICAgICAgIGlmICggcnNwLT5yZWFzb24gPT0gVk1fRVZFTlRfUkVB U09OX01FTV9QQUdJTkcgKQorICAgICAgICAgICAgcDJtX21lbV9wYWdpbmdfcmVzdW1lKGQsIHJz cCk7CisjZW5kaWYKKworICAgICAgICAvKgorICAgICAgICAgKiBDaGVjayBlbXVsYXRpb24gZmxh Z3MgaW4gdGhlIGFyY2gtc3BlY2lmaWMgaGFuZGxlciBvbmx5LCBhcyBpdAorICAgICAgICAgKiBo YXMgdG8gc2V0IGFyY2gtc3BlY2lmaWMgZmxhZ3Mgd2hlbiBzdXBwb3J0ZWQsIGFuZCB0byBhdm9p ZAorICAgICAgICAgKiBiaXRtYXNrIG92ZXJoZWFkIHdoZW4gaXQgaXNuJ3Qgc3VwcG9ydGVkLgor ICAgICAgICAgKi8KKyAgICAgICAgdm1fZXZlbnRfZW11bGF0ZV9jaGVjayh2LCByc3ApOworCisg ICAgICAgIC8qCisgICAgICAgICAqIENoZWNrIGluIGFyY2gtc3BlY2lmaWMgaGFuZGxlciB0byBh dm9pZCBiaXRtYXNrIG92ZXJoZWFkIHdoZW4KKyAgICAgICAgICogbm90IHN1cHBvcnRlZC4KKyAg ICAgICAgICovCisgICAgICAgIHZtX2V2ZW50X3JlZ2lzdGVyX3dyaXRlX3Jlc3VtZSh2LCByc3Ap OworCisgICAgICAgIC8qCisgICAgICAgICAqIENoZWNrIGluIGFyY2gtc3BlY2lmaWMgaGFuZGxl ciB0byBhdm9pZCBiaXRtYXNrIG92ZXJoZWFkIHdoZW4KKyAgICAgICAgICogbm90IHN1cHBvcnRl ZC4KKyAgICAgICAgICovCisgICAgICAgIHZtX2V2ZW50X3RvZ2dsZV9zaW5nbGVzdGVwKGQsIHYs IHJzcCk7CisKKyAgICAgICAgLyogQ2hlY2sgZm9yIGFsdHAybSBzd2l0Y2ggKi8KKyAgICAgICAg aWYgKCByc3AtPmZsYWdzICYgVk1fRVZFTlRfRkxBR19BTFRFUk5BVEVfUDJNICkKKyAgICAgICAg ICAgIHAybV9hbHRwMm1fY2hlY2sodiwgcnNwLT5hbHRwMm1faWR4KTsKKworICAgICAgICBpZiAo IHJzcC0+ZmxhZ3MgJiBWTV9FVkVOVF9GTEFHX1NFVF9SRUdJU1RFUlMgKQorICAgICAgICAgICAg dm1fZXZlbnRfc2V0X3JlZ2lzdGVycyh2LCByc3ApOworCisgICAgICAgIGlmICggcnNwLT5mbGFn cyAmIFZNX0VWRU5UX0ZMQUdfR0VUX05FWFRfSU5URVJSVVBUICkKKyAgICAgICAgICAgIHZtX2V2 ZW50X21vbml0b3JfbmV4dF9pbnRlcnJ1cHQodik7CisKKyAgICAgICAgaWYgKCByc3AtPmZsYWdz ICYgVk1fRVZFTlRfRkxBR19WQ1BVX1BBVVNFRCApCisgICAgICAgICAgICB2bV9ldmVudF92Y3B1 X3VucGF1c2Uodik7CisgICAgfQorfQorCiAvKgogICogUHVsbCBhbGwgcmVzcG9uc2VzIGZyb20g dGhlIGdpdmVuIHJpbmcgYW5kIHVucGF1c2UgdGhlIGNvcnJlc3BvbmRpbmcgdkNQVQogICogaWYg cmVxdWlyZWQuIEJhc2VkIG9uIHRoZSByZXNwb25zZSB0eXBlLCBoZXJlIHdlIGNhbiBhbHNvIGNh bGwgY3VzdG9tCkBAIC00MjcsNDcgKzQ3Miw3IEBAIHN0YXRpYyBpbnQgdm1fZXZlbnRfcmluZ19y ZXN1bWUoc3RydWN0IHZtX2V2ZW50X3JpbmdfZG9tYWluICppbXBsKQogICAgICAgICAgKiBJbiBz b21lIGNhc2VzIHRoZSByZXNwb25zZSB0eXBlIG5lZWRzIGV4dHJhIGhhbmRsaW5nLCBzbyBoZXJl CiAgICAgICAgICAqIHdlIGNhbGwgdGhlIGFwcHJvcHJpYXRlIGhhbmRsZXJzLgogICAgICAgICAg Ki8KLQotICAgICAgICAvKiBDaGVjayBmbGFncyB3aGljaCBhcHBseSBvbmx5IHdoZW4gdGhlIHZD UFUgaXMgcGF1c2VkICovCi0gICAgICAgIGlmICggYXRvbWljX3JlYWQoJnYtPnZtX2V2ZW50X3Bh dXNlX2NvdW50KSApCi0gICAgICAgIHsKLSNpZmRlZiBDT05GSUdfSEFTX01FTV9QQUdJTkcKLSAg ICAgICAgICAgIGlmICggcnNwLnJlYXNvbiA9PSBWTV9FVkVOVF9SRUFTT05fTUVNX1BBR0lORyAp Ci0gICAgICAgICAgICAgICAgcDJtX21lbV9wYWdpbmdfcmVzdW1lKGltcGwtPnZlZC5kLCAmcnNw KTsKLSNlbmRpZgotCi0gICAgICAgICAgICAvKgotICAgICAgICAgICAgICogQ2hlY2sgZW11bGF0 aW9uIGZsYWdzIGluIHRoZSBhcmNoLXNwZWNpZmljIGhhbmRsZXIgb25seSwgYXMgaXQKLSAgICAg ICAgICAgICAqIGhhcyB0byBzZXQgYXJjaC1zcGVjaWZpYyBmbGFncyB3aGVuIHN1cHBvcnRlZCwg YW5kIHRvIGF2b2lkCi0gICAgICAgICAgICAgKiBiaXRtYXNrIG92ZXJoZWFkIHdoZW4gaXQgaXNu J3Qgc3VwcG9ydGVkLgotICAgICAgICAgICAgICovCi0gICAgICAgICAgICB2bV9ldmVudF9lbXVs YXRlX2NoZWNrKHYsICZyc3ApOwotCi0gICAgICAgICAgICAvKgotICAgICAgICAgICAgICogQ2hl Y2sgaW4gYXJjaC1zcGVjaWZpYyBoYW5kbGVyIHRvIGF2b2lkIGJpdG1hc2sgb3ZlcmhlYWQgd2hl bgotICAgICAgICAgICAgICogbm90IHN1cHBvcnRlZC4KLSAgICAgICAgICAgICAqLwotICAgICAg ICAgICAgdm1fZXZlbnRfcmVnaXN0ZXJfd3JpdGVfcmVzdW1lKHYsICZyc3ApOwotCi0gICAgICAg ICAgICAvKgotICAgICAgICAgICAgICogQ2hlY2sgaW4gYXJjaC1zcGVjaWZpYyBoYW5kbGVyIHRv IGF2b2lkIGJpdG1hc2sgb3ZlcmhlYWQgd2hlbgotICAgICAgICAgICAgICogbm90IHN1cHBvcnRl ZC4KLSAgICAgICAgICAgICAqLwotICAgICAgICAgICAgdm1fZXZlbnRfdG9nZ2xlX3NpbmdsZXN0 ZXAoaW1wbC0+dmVkLmQsIHYsICZyc3ApOwotCi0gICAgICAgICAgICAvKiBDaGVjayBmb3IgYWx0 cDJtIHN3aXRjaCAqLwotICAgICAgICAgICAgaWYgKCByc3AuZmxhZ3MgJiBWTV9FVkVOVF9GTEFH X0FMVEVSTkFURV9QMk0gKQotICAgICAgICAgICAgICAgIHAybV9hbHRwMm1fY2hlY2sodiwgcnNw LmFsdHAybV9pZHgpOwotCi0gICAgICAgICAgICBpZiAoIHJzcC5mbGFncyAmIFZNX0VWRU5UX0ZM QUdfU0VUX1JFR0lTVEVSUyApCi0gICAgICAgICAgICAgICAgdm1fZXZlbnRfc2V0X3JlZ2lzdGVy cyh2LCAmcnNwKTsKLQotICAgICAgICAgICAgaWYgKCByc3AuZmxhZ3MgJiBWTV9FVkVOVF9GTEFH X0dFVF9ORVhUX0lOVEVSUlVQVCApCi0gICAgICAgICAgICAgICAgdm1fZXZlbnRfbW9uaXRvcl9u ZXh0X2ludGVycnVwdCh2KTsKLQotICAgICAgICAgICAgaWYgKCByc3AuZmxhZ3MgJiBWTV9FVkVO VF9GTEFHX1ZDUFVfUEFVU0VEICkKLSAgICAgICAgICAgICAgICB2bV9ldmVudF92Y3B1X3VucGF1 c2Uodik7Ci0gICAgICAgIH0KKyAgICAgICAgdm1fZXZlbnRfaGFuZGxlX3Jlc3BvbnNlKGltcGwt PnZlZC5kLCB2LCAmcnNwKTsKICAgICB9CiAKICAgICByZXR1cm4gMDsKQEAgLTcwOSw5ICs3MTQs MTAgQEAgaW50IHZtX2V2ZW50X2RvbWN0bChzdHJ1Y3QgZG9tYWluICpkLCBzdHJ1Y3QgeGVuX2Rv bWN0bF92bV9ldmVudF9vcCAqdmVjLAogICAgICAgICAgICAgcmMgPSBhcmNoX21vbml0b3JfaW5p dF9kb21haW4oZCk7CiAgICAgICAgICAgICBpZiAoIHJjICkKICAgICAgICAgICAgICAgICBicmVh azsKLSAgICAgICAgICAgIHJjID0gdm1fZXZlbnRfcmluZ19lbmFibGUoZCwgdmVjLCAmZC0+dm1f ZXZlbnRfbW9uaXRvciwgX1ZQRl9tZW1fYWNjZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgSFZNX1BBUkFNX01PTklUT1JfUklOR19QRk4sCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBtb25pdG9yX25vdGlmaWNhdGlvbik7CisgICAgICAgICAgICByYyA9IHZt X2V2ZW50X3JpbmdfZW5hYmxlKGQsIHZlYywgJmQtPnZtX2V2ZW50X21vbml0b3IsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9WUEZfbWVtX2FjY2VzcywKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSFZNX1BBUkFNX01PTklUT1JfUklOR19QRk4s CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbml0b3Jfbm90aWZpY2F0 aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgWEVOX1ZNX0VWRU5UX0RJ U0FCTEU6CmRpZmYgLS1naXQgYS94ZW4vY29tbW9uL3ZtX2V2ZW50X25nLmMgYi94ZW4vY29tbW9u L3ZtX2V2ZW50X25nLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTdhZTMz YwotLS0gL2Rldi9udWxsCisrKyBiL3hlbi9jb21tb24vdm1fZXZlbnRfbmcuYwpAQCAtMCwwICsx LDQ0OSBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogdm1fZXZlbnRfbmcuYworICoKKyAq IFZNIGV2ZW50IHN1cHBvcnQgKG5ldyBnZW5lcmF0aW9uKS4KKyAqCisgKiBDb3B5cmlnaHQgKGMp IDIwMTksIEJpdGRlZmVuZGVyIFMuUi5MLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNv ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRl ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hl ZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBv ZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg d2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2 ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0 aCB0aGlzIHByb2dyYW07IElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMv Pi4KKyAqLworCisjaW5jbHVkZSA8eGVuL3NjaGVkLmg+CisjaW5jbHVkZSA8eGVuL2V2ZW50Lmg+ CisjaW5jbHVkZSA8eGVuL3ZtX2V2ZW50Lmg+CisjaW5jbHVkZSA8eGVuL3ZtYXAuaD4KKyNpbmNs dWRlIDxhc20vbW9uaXRvci5oPgorI2luY2x1ZGUgPGFzbS92bV9ldmVudC5oPgorI2luY2x1ZGUg PHhzbS94c20uaD4KKworI2RlZmluZSB0b19jaGFubmVscyhfdmVkKSBjb250YWluZXJfb2YoKF92 ZWQpLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHZt X2V2ZW50X2NoYW5uZWxzX2RvbWFpbiwgdmVkKQorCisjZGVmaW5lIFZNX0VWRU5UX0NIQU5ORUxT X0VOQUJMRUQgICAgICAgMQorCitzdHJ1Y3Qgdm1fZXZlbnRfY2hhbm5lbHNfZG9tYWluCit7Cisg ICAgLyogVk0gZXZlbnQgZG9tYWluICovCisgICAgc3RydWN0IHZtX2V2ZW50X2RvbWFpbiB2ZWQ7 CisgICAgLyogc2hhcmVkIGNoYW5uZWxzIGJ1ZmZlciAqLworICAgIHN0cnVjdCB2bV9ldmVudF9z bG90ICpzbG90czsKKyAgICAvKiB0aGUgYnVmZmVyIHNpemUgKG51bWJlciBvZiBmcmFtZXMpICov CisgICAgdW5zaWduZWQgaW50IG5yX2ZyYW1lczsKKyAgICAvKiBzdGF0ZSAqLworICAgIGJvb2wg ZW5hYmxlZDsKKyAgICAvKiBidWZmZXIncyBtbmYgbGlzdCAqLworICAgIG1mbl90IG1mblswXTsK K307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgdm1fZXZlbnRfb3BzIHZtX2V2ZW50X2NoYW5uZWxz X29wczsKKworc3RhdGljIGludCB2bV9ldmVudF9jaGFubmVsc19hbGxvY19idWZmZXIoc3RydWN0 IHZtX2V2ZW50X2NoYW5uZWxzX2RvbWFpbiAqaW1wbCkKK3sKKyAgICBpbnQgaSwgcmMgPSAtRU5P TUVNOworCisgICAgZm9yICggaSA9IDA7IGkgPCBpbXBsLT5ucl9mcmFtZXM7IGkrKyApCisgICAg eworICAgICAgICBzdHJ1Y3QgcGFnZV9pbmZvICpwYWdlID0gYWxsb2NfZG9taGVhcF9wYWdlKGlt cGwtPnZlZC5kLCAwKTsKKyAgICAgICAgaWYgKCAhcGFnZSApCisgICAgICAgICAgICBnb3RvIGVy cjsKKworICAgICAgICBpZiAoICFnZXRfcGFnZV9hbmRfdHlwZShwYWdlLCBpbXBsLT52ZWQuZCwg UEdUX3dyaXRhYmxlX3BhZ2UpICkKKyAgICAgICAgeworICAgICAgICAgICAgcmMgPSAtRU5PREFU QTsKKyAgICAgICAgICAgIGdvdG8gZXJyOworICAgICAgICB9CisKKyAgICAgICAgaW1wbC0+bWZu W2ldID0gcGFnZV90b19tZm4ocGFnZSk7CisgICAgfQorCisgICAgaW1wbC0+c2xvdHMgPSAoc3Ry dWN0IHZtX2V2ZW50X3Nsb3QgKil2bWFwKGltcGwtPm1mbiwgaW1wbC0+bnJfZnJhbWVzKTsKKyAg ICBpZiAoICFpbXBsLT5zbG90cyApCisgICAgICAgIGdvdG8gZXJyOworCisgICAgZm9yICggaSA9 IDA7IGkgPCBpbXBsLT5ucl9mcmFtZXM7IGkrKyApCisgICAgICAgIGNsZWFyX3BhZ2UoKHZvaWQq KWltcGwtPnNsb3RzICsgaSAqIFBBR0VfU0laRSk7CisKKyAgICByZXR1cm4gMDsKKworZXJyOgor ICAgIHdoaWxlICggLS1pID49IDAgKQorICAgIHsKKyAgICAgICAgc3RydWN0IHBhZ2VfaW5mbyAq cGFnZSA9IG1mbl90b19wYWdlKGltcGwtPm1mbltpXSk7CisKKyAgICAgICAgaWYgKCB0ZXN0X2Fu ZF9jbGVhcl9iaXQoX1BHQ19hbGxvY2F0ZWQsICZwYWdlLT5jb3VudF9pbmZvKSApCisgICAgICAg ICAgICBwdXRfcGFnZShwYWdlKTsKKyAgICAgICAgcHV0X3BhZ2VfYW5kX3R5cGUocGFnZSk7Cisg ICAgfQorCisgICAgcmV0dXJuIHJjOworfQorCitzdGF0aWMgdm9pZCB2bV9ldmVudF9jaGFubmVs c19mcmVlX2J1ZmZlcihzdHJ1Y3Qgdm1fZXZlbnRfY2hhbm5lbHNfZG9tYWluICppbXBsKQorewor ICAgIGludCBpOworCisgICAgQVNTRVJUKGltcGwpOworCisgICAgaWYgKCAhaW1wbC0+c2xvdHMg KQorICAgICAgICByZXR1cm47CisKKyAgICB2dW5tYXAoaW1wbC0+c2xvdHMpOworCisgICAgZm9y ICggaSA9IDA7IGkgPCBpbXBsLT5ucl9mcmFtZXM7IGkrKyApCisgICAgeworICAgICAgICBzdHJ1 Y3QgcGFnZV9pbmZvICpwYWdlID0gbWZuX3RvX3BhZ2UoaW1wbC0+bWZuW2ldKTsKKworICAgICAg ICBBU1NFUlQocGFnZSk7CisgICAgICAgIGlmICggdGVzdF9hbmRfY2xlYXJfYml0KF9QR0NfYWxs b2NhdGVkLCAmcGFnZS0+Y291bnRfaW5mbykgKQorICAgICAgICAgICAgcHV0X3BhZ2UocGFnZSk7 CisgICAgICAgIHB1dF9wYWdlX2FuZF90eXBlKHBhZ2UpOworICAgIH0KK30KKworc3RhdGljIGlu dCB2bV9ldmVudF9jaGFubmVsc19jcmVhdGUoCisgICAgc3RydWN0IGRvbWFpbiAqZCwKKyAgICBz dHJ1Y3QgeGVuX2RvbWN0bF92bV9ldmVudF9uZ19vcCAqdmVjLAorICAgIHN0cnVjdCB2bV9ldmVu dF9kb21haW4gKipfdmVkLAorICAgIGludCBwYXVzZV9mbGFnLAorICAgIHhlbl9ldmVudF9jaGFu bmVsX25vdGlmaWNhdGlvbl90IG5vdGlmaWNhdGlvbl9mbikKK3sKKyAgICBpbnQgcmMsIGk7Cisg ICAgdW5zaWduZWQgaW50IG5yX2ZyYW1lcyA9IFBGTl9VUChkLT5tYXhfdmNwdXMgKiBzaXplb2Yo c3RydWN0IHZtX2V2ZW50X3Nsb3QpKTsKKyAgICBzdHJ1Y3Qgdm1fZXZlbnRfY2hhbm5lbHNfZG9t YWluICppbXBsOworCisgICAgaWYgKCAqX3ZlZCApCisgICAgICAgIHJldHVybiAtRUJVU1k7CisK KyAgICBpbXBsID0gX3h6YWxsb2Moc2l6ZW9mKHN0cnVjdCB2bV9ldmVudF9jaGFubmVsc19kb21h aW4pICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG5yX2ZyYW1lcyAqIHNpemVvZihtZm5f dCksCisgICAgICAgICAgICAgICAgICAgIF9fYWxpZ25vZl9fKHN0cnVjdCB2bV9ldmVudF9jaGFu bmVsc19kb21haW4pKTsKKyAgICBpZiAoIHVubGlrZWx5KCFpbXBsKSApCisgICAgICAgIHJldHVy biAtRU5PTUVNOworCisgICAgc3Bpbl9sb2NrX2luaXQoJmltcGwtPnZlZC5sb2NrKTsKKyAgICBz cGluX2xvY2soJmltcGwtPnZlZC5sb2NrKTsKKworICAgIGltcGwtPm5yX2ZyYW1lcyA9IG5yX2Zy YW1lczsKKyAgICBpbXBsLT52ZWQuZCA9IGQ7CisgICAgaW1wbC0+dmVkLm9wcyA9ICZ2bV9ldmVu dF9jaGFubmVsc19vcHM7CisKKyAgICByYyA9IHZtX2V2ZW50X2luaXRfZG9tYWluKGQpOworICAg IGlmICggcmMgPCAwICkKKyAgICAgICAgZ290byBlcnI7CisKKyAgICByYyA9IHZtX2V2ZW50X2No YW5uZWxzX2FsbG9jX2J1ZmZlcihpbXBsKTsKKyAgICBpZiAoIHJjICkKKyAgICAgICAgZ290byBl cnI7CisKKyAgICBmb3IgKCBpID0gMDsgaSA8IGQtPm1heF92Y3B1czsgaSsrICkKKyAgICB7Cisg ICAgICAgIHJjID0gYWxsb2NfdW5ib3VuZF94ZW5fZXZlbnRfY2hhbm5lbChkLCBpLCBjdXJyZW50 LT5kb21haW4tPmRvbWFpbl9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIG5vdGlmaWNhdGlvbl9mbik7CisgICAgICAgIGlmICggcmMgPCAwICkKKyAgICAg ICAgICAgIGdvdG8gZXJyOworCisgICAgICAgIGltcGwtPnNsb3RzW2ldLnBvcnQgPSByYzsKKyAg ICAgICAgaW1wbC0+c2xvdHNbaV0uc3RhdGUgPSBTVEFURV9WTV9FVkVOVF9TTE9UX0lETEU7Cisg ICAgfQorCisgICAgaW1wbC0+ZW5hYmxlZCA9IGZhbHNlOworCisgICAgc3Bpbl91bmxvY2soJmlt cGwtPnZlZC5sb2NrKTsKKyAgICAqX3ZlZCA9ICZpbXBsLT52ZWQ7CisgICAgcmV0dXJuIDA7CisK K2VycjoKKyAgICBzcGluX3VubG9jaygmaW1wbC0+dmVkLmxvY2spOworICAgIFhGUkVFKGltcGwp OworICAgIHJldHVybiByYzsKK30KKworc3RhdGljIGludCB2bV9ldmVudF9jaGFubmVsc19kZXN0 cm95KHN0cnVjdCB2bV9ldmVudF9kb21haW4gKipfdmVkKQoreworICAgIHN0cnVjdCB2Y3B1ICp2 OworICAgIHN0cnVjdCB2bV9ldmVudF9jaGFubmVsc19kb21haW4gKmltcGwgPSB0b19jaGFubmVs cygqX3ZlZCk7CisgICAgaW50IGk7CisKKyAgICBzcGluX2xvY2soJigqX3ZlZCktPmxvY2spOwor CisgICAgZm9yX2VhY2hfdmNwdSggKCpfdmVkKS0+ZCwgdiApCisgICAgeworICAgICAgICBpZiAo IGF0b21pY19yZWFkKCZ2LT52bV9ldmVudF9wYXVzZV9jb3VudCkgKQorICAgICAgICAgICAgdm1f ZXZlbnRfdmNwdV91bnBhdXNlKHYpOworICAgIH0KKworICAgIGZvciAoIGkgPSAwOyBpIDwgKCpf dmVkKS0+ZC0+bWF4X3ZjcHVzOyBpKysgKQorICAgICAgICBldnRjaG5fY2xvc2UoKCpfdmVkKS0+ ZCwgaW1wbC0+c2xvdHNbaV0ucG9ydCwgMCk7CisKKyAgICB2bV9ldmVudF9jaGFubmVsc19mcmVl X2J1ZmZlcihpbXBsKTsKKyAgICBzcGluX3VubG9jaygmKCpfdmVkKS0+bG9jayk7CisgICAgWEZS RUUoKl92ZWQpOworCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBib29sIHZtX2V2ZW50X2No YW5uZWxzX2NoZWNrKHN0cnVjdCB2bV9ldmVudF9kb21haW4gKnZlZCkKK3sKKyAgICByZXR1cm4g dG9fY2hhbm5lbHModmVkKS0+c2xvdHMgIT0gTlVMTDsKK30KKworc3RhdGljIHZvaWQgdm1fZXZl bnRfY2hhbm5lbHNfY2xlYW51cChzdHJ1Y3Qgdm1fZXZlbnRfZG9tYWluICoqX3ZlZCkKK3sKKyAg ICB2bV9ldmVudF9jaGFubmVsc19kZXN0cm95KF92ZWQpOworfQorCitzdGF0aWMgaW50IHZtX2V2 ZW50X2NoYW5uZWxzX2NsYWltX3Nsb3Qoc3RydWN0IHZtX2V2ZW50X2RvbWFpbiAqdmVkLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgYWxsb3dfc2xlZXApCit7 CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIHZtX2V2ZW50X2NoYW5uZWxzX2NhbmNl bF9zbG90KHN0cnVjdCB2bV9ldmVudF9kb21haW4gKnZlZCkKK3sKK30KKworc3RhdGljIHZvaWQg dm1fZXZlbnRfY2hhbm5lbHNfcHV0X3JlcXVlc3Qoc3RydWN0IHZtX2V2ZW50X2RvbWFpbiAqdmVk LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm1fZXZlbnRfcmVx dWVzdF90ICpyZXEpCit7CisgICAgc3RydWN0IHZtX2V2ZW50X2NoYW5uZWxzX2RvbWFpbiAqaW1w bCA9IHRvX2NoYW5uZWxzKHZlZCk7CisgICAgc3RydWN0IHZtX2V2ZW50X3Nsb3QgKnNsb3Q7CisK KyAgICAvKiBleGl0IGlmIHRoZSB2bV9ldmVudF9kb21haW4gd2FzIG5vdCBzcGVjaWZpY2FsbHkg ZW5hYmxlZCAqLworICAgIGlmICggIWltcGwtPmVuYWJsZWQgKQorICAgICAgICByZXR1cm47CisK KyAgICBBU1NFUlQoIHJlcS0+dmNwdV9pZCA+PSAwICYmIHJlcS0+dmNwdV9pZCA8IHZlZC0+ZC0+ bWF4X3ZjcHVzICk7CisKKyAgICBzbG90ID0gJmltcGwtPnNsb3RzW3JlcS0+dmNwdV9pZF07CisK KyAgICBpZiAoIGN1cnJlbnQtPmRvbWFpbiAhPSB2ZWQtPmQgKQorICAgIHsKKyAgICAgICAgcmVx LT5mbGFncyB8PSBWTV9FVkVOVF9GTEFHX0ZPUkVJR047CisjaWZuZGVmIE5ERUJVRworICAgICAg ICBpZiAoICEocmVxLT5mbGFncyAmIFZNX0VWRU5UX0ZMQUdfVkNQVV9QQVVTRUQpICkKKyAgICAg ICAgICAgIGdkcHJpbnRrKFhFTkxPR19HX1dBUk5JTkcsICJkJWR2JWQgd2FzIG5vdCBwYXVzZWQu XG4iLAorICAgICAgICAgICAgICAgICAgICAgdmVkLT5kLT5kb21haW5faWQsIHJlcS0+dmNwdV9p ZCk7CisjZW5kaWYKKyAgICB9CisKKyAgICByZXEtPnZlcnNpb24gPSBWTV9FVkVOVF9JTlRFUkZB Q0VfVkVSU0lPTjsKKworICAgIHNwaW5fbG9jaygmaW1wbC0+dmVkLmxvY2spOworICAgIGlmICgg c2xvdC0+c3RhdGUgIT0gU1RBVEVfVk1fRVZFTlRfU0xPVF9JRExFICkKKyAgICB7CisgICAgICAg IGdkcHJpbnRrKFhFTkxPR19HX1dBUk5JTkcsICJUaGUgVk0gZXZlbnQgc2xvdCBmb3IgZCVkdiVk IGlzIG5vdCBJRExFLlxuIiwKKyAgICAgICAgICAgICAgICAgaW1wbC0+dmVkLmQtPmRvbWFpbl9p ZCwgcmVxLT52Y3B1X2lkKTsKKyAgICAgICAgc3Bpbl91bmxvY2soJmltcGwtPnZlZC5sb2NrKTsK KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHNsb3QtPnUucmVxID0gKnJlcTsKKyAgICBz bG90LT5zdGF0ZSA9IFNUQVRFX1ZNX0VWRU5UX1NMT1RfU1VCTUlUOworICAgIHNwaW5fdW5sb2Nr KCZpbXBsLT52ZWQubG9jayk7CisgICAgbm90aWZ5X3ZpYV94ZW5fZXZlbnRfY2hhbm5lbChpbXBs LT52ZWQuZCwgc2xvdC0+cG9ydCk7Cit9CisKK3N0YXRpYyBpbnQgdm1fZXZlbnRfY2hhbm5lbHNf Z2V0X3Jlc3BvbnNlKHN0cnVjdCB2bV9ldmVudF9jaGFubmVsc19kb21haW4gKmltcGwsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdmNwdSAqdiwgdm1f ZXZlbnRfcmVzcG9uc2VfdCAqcnNwKQoreworICAgIHN0cnVjdCB2bV9ldmVudF9zbG90ICpzbG90 ID0gJmltcGwtPnNsb3RzW3YtPnZjcHVfaWRdOworCisgICAgQVNTRVJUKCBzbG90ICE9IE5VTEwg KTsKKyAgICBzcGluX2xvY2soJmltcGwtPnZlZC5sb2NrKTsKKworICAgIGlmICggc2xvdC0+c3Rh dGUgIT0gU1RBVEVfVk1fRVZFTlRfU0xPVF9GSU5JU0ggKQorICAgIHsKKyAgICAgICAgZ2Rwcmlu dGsoWEVOTE9HX0dfV0FSTklORywgIlRoZSBWTSBldmVudCBzbG90IHN0YXRlIGZvciBkJWR2JWQg aXMgaW52YWxpZC5cbiIsCisgICAgICAgICAgICAgICAgIGltcGwtPnZlZC5kLT5kb21haW5faWQs IHYtPnZjcHVfaWQpOworICAgICAgICBzcGluX3VubG9jaygmaW1wbC0+dmVkLmxvY2spOworICAg ICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgKnJzcCA9IHNsb3QtPnUucnNwOworICAgIHNs b3QtPnN0YXRlID0gU1RBVEVfVk1fRVZFTlRfU0xPVF9JRExFOworCisgICAgc3Bpbl91bmxvY2so JmltcGwtPnZlZC5sb2NrKTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludCB2bV9ldmVu dF9jaGFubmVsc19yZXN1bWUoc3RydWN0IHZtX2V2ZW50X2NoYW5uZWxzX2RvbWFpbiAqaW1wbCwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB2Y3B1ICp2KQorewor ICAgIHZtX2V2ZW50X3Jlc3BvbnNlX3QgcnNwOworCisgICAgaWYgKCB1bmxpa2VseSghaW1wbCB8 fCAhdm1fZXZlbnRfY2hlY2soJmltcGwtPnZlZCkpICkKKyAgICAgICAgIHJldHVybiAtRU5PREVW OworCisgICAgQVNTRVJUKGltcGwtPnZlZC5kICE9IGN1cnJlbnQtPmRvbWFpbik7CisKKyAgICBp ZiAoIHZtX2V2ZW50X2NoYW5uZWxzX2dldF9yZXNwb25zZShpbXBsLCB2LCAmcnNwKSB8fAorICAg ICAgICAgcnNwLnZlcnNpb24gIT0gVk1fRVZFTlRfSU5URVJGQUNFX1ZFUlNJT04gfHwKKyAgICAg ICAgIHJzcC52Y3B1X2lkICE9IHYtPnZjcHVfaWQgKQorICAgICAgICByZXR1cm4gLTE7CisKKyAg ICB2bV9ldmVudF9oYW5kbGVfcmVzcG9uc2UoaW1wbC0+dmVkLmQsIHYsICZyc3ApOworCisgICAg cmV0dXJuIDA7Cit9CisKKy8qIFJlZ2lzdGVyZWQgd2l0aCBYZW4tYm91bmQgZXZlbnQgY2hhbm5l bCBmb3IgaW5jb21pbmcgbm90aWZpY2F0aW9ucy4gKi8KK3N0YXRpYyB2b2lkIG1vbml0b3Jfbm90 aWZpY2F0aW9uKHN0cnVjdCB2Y3B1ICp2LCB1bnNpZ25lZCBpbnQgcG9ydCkKK3sKKyAgICB2bV9l dmVudF9jaGFubmVsc19yZXN1bWUodG9fY2hhbm5lbHModi0+ZG9tYWluLT52bV9ldmVudF9tb25p dG9yKSwgdik7Cit9CisKK2ludCB2bV9ldmVudF9uZ19kb21jdGwoc3RydWN0IGRvbWFpbiAqZCwg c3RydWN0IHhlbl9kb21jdGxfdm1fZXZlbnRfbmdfb3AgKnZlYywKKyAgICAgICAgICAgICAgICAg ICAgICAgWEVOX0dVRVNUX0hBTkRMRV9QQVJBTSh2b2lkKSB1X2RvbWN0bCkKK3sKKyAgICBpbnQg cmM7CisKKyAgICBpZiAoIHZlYy0+b3AgPT0gWEVOX1ZNX0VWRU5UX05HX0dFVF9WRVJTSU9OICkK KyAgICB7CisgICAgICAgIHZlYy0+dS52ZXJzaW9uID0gVk1fRVZFTlRfSU5URVJGQUNFX1ZFUlNJ T047CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIGlmICggdW5saWtlbHkoZCA9PSBO VUxMKSApCisgICAgICAgIHJldHVybiAtRVNSQ0g7CisKKyAgICByYyA9IHhzbV92bV9ldmVudF9j b250cm9sKFhTTV9QUklWLCBkLCB2ZWMtPnR5cGUsIHZlYy0+b3ApOworICAgIGlmICggcmMgKQor ICAgICAgICByZXR1cm4gcmM7CisKKyAgICBpZiAoIHVubGlrZWx5KGQgPT0gY3VycmVudC0+ZG9t YWluKSApIC8qIG5vIGRvbWFpbl9wYXVzZSgpICovCisgICAgeworICAgICAgICBnZHByaW50ayhY RU5MT0dfSU5GTywgIlRyaWVkIHRvIGRvIGEgbWVtb3J5IGV2ZW50IG9wIG9uIGl0c2VsZi5cbiIp OworICAgICAgICByZXR1cm4gLUVJTlZBTDsKKyAgICB9CisKKyAgICBpZiAoIHVubGlrZWx5KGQt PmlzX2R5aW5nKSApCisgICAgeworICAgICAgICBnZHByaW50ayhYRU5MT0dfSU5GTywgIklnbm9y aW5nIG1lbW9yeSBldmVudCBvcCBvbiBkeWluZyBkb21haW4gJXVcbiIsCisgICAgICAgICAgICAg ICAgIGQtPmRvbWFpbl9pZCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIGlmICgg dW5saWtlbHkoZC0+dmNwdSA9PSBOVUxMKSB8fCB1bmxpa2VseShkLT52Y3B1WzBdID09IE5VTEwp ICkKKyAgICB7CisgICAgICAgIGdkcHJpbnRrKFhFTkxPR19JTkZPLAorICAgICAgICAgICAgICAg ICAiTWVtb3J5IGV2ZW50IG9wIG9uIGEgZG9tYWluICgldSkgd2l0aCBubyB2Y3B1c1xuIiwKKyAg ICAgICAgICAgICAgICAgZC0+ZG9tYWluX2lkKTsKKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cisg ICAgfQorCisgICAgc3dpdGNoICggdmVjLT50eXBlICkKKyAgICB7CisgICAgY2FzZSBYRU5fVk1f RVZFTlRfVFlQRV9NT05JVE9SOgorICAgIHsKKyAgICAgICAgcmMgPSAtRUlOVkFMOworCisgICAg ICAgIHN3aXRjaCAoIHZlYy0+IG9wKQorICAgICAgICB7CisgICAgICAgIGNhc2UgWEVOX1ZNX0VW RU5UX05HX0NSRUFURToKKyAgICAgICAgICAgIC8qIGRvbWFpbl9wYXVzZSgpIG5vdCByZXF1aXJl ZCBoZXJlLCBzZWUgWFNBLTk5ICovCisgICAgICAgICAgICByYyA9IGFyY2hfbW9uaXRvcl9pbml0 X2RvbWFpbihkKTsKKyAgICAgICAgICAgIGlmICggcmMgKQorICAgICAgICAgICAgICAgIGJyZWFr OworICAgICAgICAgICAgcmMgPSB2bV9ldmVudF9jaGFubmVsc19jcmVhdGUoZCwgdmVjLCAmZC0+ dm1fZXZlbnRfbW9uaXRvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBf VlBGX21lbV9hY2Nlc3MsIG1vbml0b3Jfbm90aWZpY2F0aW9uKTsKKyAgICAgICAgICAgIGJyZWFr OworCisgICAgICAgIGNhc2UgWEVOX1ZNX0VWRU5UX05HX0RFU1RST1k6CisgICAgICAgICAgICBp ZiAoICF2bV9ldmVudF9jaGVjayhkLT52bV9ldmVudF9tb25pdG9yKSApCisgICAgICAgICAgICAg ICAgYnJlYWs7CisgICAgICAgICAgICBkb21haW5fcGF1c2UoZCk7CisgICAgICAgICAgICByYyA9 IHZtX2V2ZW50X2NoYW5uZWxzX2Rlc3Ryb3koJmQtPnZtX2V2ZW50X21vbml0b3IpOworICAgICAg ICAgICAgYXJjaF9tb25pdG9yX2NsZWFudXBfZG9tYWluKGQpOworICAgICAgICAgICAgZG9tYWlu X3VucGF1c2UoZCk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIFhFTl9WTV9F VkVOVF9OR19TRVRfU1RBVEU6CisgICAgICAgICAgICBpZiAoICF2bV9ldmVudF9jaGVjayhkLT52 bV9ldmVudF9tb25pdG9yKSApCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBk b21haW5fcGF1c2UoZCk7CisgICAgICAgICAgICB0b19jaGFubmVscyhkLT52bV9ldmVudF9tb25p dG9yKS0+ZW5hYmxlZCA9ICEhdmVjLT51LmVuYWJsZWQ7CisgICAgICAgICAgICBkb21haW5fdW5w YXVzZShkKTsKKyAgICAgICAgICAgIHJjID0gMDsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAg ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByYyA9IC1FTk9TWVM7CisgICAgICAgIH0KKyAgICAg ICAgYnJlYWs7CisgICAgfQorCisjaWZkZWYgQ09ORklHX0hBU19NRU1fUEFHSU5HCisgICAgY2Fz ZSBYRU5fVk1fRVZFTlRfVFlQRV9QQUdJTkc6CisjZW5kaWYKKworI2lmZGVmIENPTkZJR19IQVNf TUVNX1NIQVJJTkcKKyAgICBjYXNlIFhFTl9WTV9FVkVOVF9UWVBFX1NIQVJJTkc6CisjZW5kaWYK KworICAgIGRlZmF1bHQ6CisgICAgICAgIHJjID0gLUVOT1NZUzsKKyAgICB9CisKKyAgICByZXR1 cm4gcmM7Cit9CisKK2ludCB2bV9ldmVudF9uZ19nZXRfZnJhbWVzKHN0cnVjdCBkb21haW4gKmQs IHVuc2lnbmVkIGludCBpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxv bmcgZnJhbWUsIHVuc2lnbmVkIGludCBucl9mcmFtZXMsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICB4ZW5fcGZuX3QgbWZuX2xpc3RbXSkKK3sKKyAgICBzdHJ1Y3Qgdm1fZXZlbnRfZG9tYWlu ICp2ZWQ7CisgICAgaW50IGk7CisKKyAgICBzd2l0Y2ggKGlkICkKKyAgICB7CisgICAgY2FzZSBY RU5fVk1fRVZFTlRfVFlQRV9NT05JVE9SOgorICAgICAgICB2ZWQgPSBkLT52bV9ldmVudF9tb25p dG9yOworICAgICAgICBicmVhazsKKworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiAtRU5P U1lTOworICAgIH0KKworICAgIGlmICggIXZtX2V2ZW50X2NoZWNrKHZlZCkgKQorICAgICAgICBy ZXR1cm4gLUVJTlZBTDsKKworICAgIGlmICggZnJhbWUgIT0gMCB8fCBucl9mcmFtZXMgIT0gdG9f Y2hhbm5lbHModmVkKS0+bnJfZnJhbWVzICkKKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisKKyAg ICBzcGluX2xvY2soJnZlZC0+bG9jayk7CisKKyAgICBmb3IgKCBpID0gMDsgaSA8IHRvX2NoYW5u ZWxzKHZlZCktPm5yX2ZyYW1lczsgaSsrICkKKyAgICAgICAgbWZuX2xpc3RbaV0gPSBtZm5feCh0 b19jaGFubmVscyh2ZWQpLT5tZm5baV0pOworCisgICAgc3Bpbl91bmxvY2soJnZlZC0+bG9jayk7 CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgdm1fZXZlbnRfb3BzIHZt X2V2ZW50X2NoYW5uZWxzX29wcyA9IHsKKyAgICAuY2hlY2sgPSB2bV9ldmVudF9jaGFubmVsc19j aGVjaywKKyAgICAuY2xlYW51cCA9IHZtX2V2ZW50X2NoYW5uZWxzX2NsZWFudXAsCisgICAgLmNs YWltX3Nsb3QgPSB2bV9ldmVudF9jaGFubmVsc19jbGFpbV9zbG90LAorICAgIC5jYW5jZWxfc2xv dCA9IHZtX2V2ZW50X2NoYW5uZWxzX2NhbmNlbF9zbG90LAorICAgIC5wdXRfcmVxdWVzdCA9IHZt X2V2ZW50X2NoYW5uZWxzX3B1dF9yZXF1ZXN0Cit9OworCisvKgorICogTG9jYWwgdmFyaWFibGVz OgorICogbW9kZTogQworICogYy1maWxlLXN0eWxlOiAiQlNEIgorICogYy1iYXNpYy1vZmZzZXQ6 IDQKKyAqIHRhYi13aWR0aDogNAorICogaW5kZW50LXRhYnMtbW9kZTogbmlsCisgKiBFbmQ6Cisg Ki8KZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3B1YmxpYy9kb21jdGwuaCBiL3hlbi9pbmNsdWRl L3B1YmxpYy9kb21jdGwuaAppbmRleCAxOTI4MWZhLi5mZjhiNjgwIDEwMDY0NAotLS0gYS94ZW4v aW5jbHVkZS9wdWJsaWMvZG9tY3RsLmgKKysrIGIveGVuL2luY2x1ZGUvcHVibGljL2RvbWN0bC5o CkBAIC03OTIsNiArNzkyLDI0IEBAIHN0cnVjdCB4ZW5fZG9tY3RsX3ZtX2V2ZW50X29wIHsKIH07 CiAKIC8qCisgKiBYRU5fRE9NQ1RMX3ZtX2V2ZW50X25nX29wLgorICogTmV4dCBHZW5lcmF0aW9u IHZtX2V2ZW50IG9wZXJhdGlvbnMuCisgKi8KKyNkZWZpbmUgWEVOX1ZNX0VWRU5UX05HX0NSRUFU RSAgICAgICAgICAgIDAKKyNkZWZpbmUgWEVOX1ZNX0VWRU5UX05HX0RFU1RST1kgICAgICAgICAg IDEKKyNkZWZpbmUgWEVOX1ZNX0VWRU5UX05HX1NFVF9TVEFURSAgICAgICAgIDIKKyNkZWZpbmUg WEVOX1ZNX0VWRU5UX05HX0dFVF9WRVJTSU9OICAgICAgIDMKKworc3RydWN0IHhlbl9kb21jdGxf dm1fZXZlbnRfbmdfb3AgeworICAgIHVpbnQzMl90ICAgICAgICBvcDsgICAgICAgICAgICAgLyog WEVOX1ZNX0VWRU5UX05HXyogKi8KKyAgICB1aW50MzJfdCAgICAgICAgdHlwZTsgICAgICAgICAg IC8qIFhFTl9WTV9FVkVOVF9UWVBFXyogKi8KKyAgICB1bmlvbiB7CisgICAgICAgIHVpbnQzMl90 IHZlcnNpb247ICAgICAgICAgICAvKiBPVVQ6IHZlcnNpb24gbnVtYmVyICovCisgICAgICAgIHVp bnQ4X3QgIGVuYWJsZWQ7ICAgICAgICAgICAvKiBJTjogc3RhdGUgKi8KKyAgICB9IHU7Cit9Owor CisvKgogICogTWVtb3J5IHNoYXJpbmcgb3BlcmF0aW9ucwogICovCiAvKiBYRU5fRE9NQ1RMX21l bV9zaGFyaW5nX29wLgpAQCAtMTE0Miw2ICsxMTYwLDcgQEAgc3RydWN0IHhlbl9kb21jdGwgewog LyogI2RlZmluZSBYRU5fRE9NQ1RMX3NldF9nbnR0YWJfbGltaXRzICAgICAgICAgIDgwIC0gTW92 ZWQgaW50byBYRU5fRE9NQ1RMX2NyZWF0ZWRvbWFpbiAqLwogI2RlZmluZSBYRU5fRE9NQ1RMX3Z1 YXJ0X29wICAgICAgICAgICAgICAgICAgICAgIDgxCiAjZGVmaW5lIFhFTl9ET01DVExfZ2V0X2Nw dV9wb2xpY3kgICAgICAgICAgICAgICAgODIKKyNkZWZpbmUgWEVOX0RPTUNUTF92bV9ldmVudF9u Z19vcCAgICAgICAgICAgICAgICA4MwogI2RlZmluZSBYRU5fRE9NQ1RMX2dkYnN4X2d1ZXN0bWVt aW8gICAgICAgICAgICAxMDAwCiAjZGVmaW5lIFhFTl9ET01DVExfZ2Ric3hfcGF1c2V2Y3B1ICAg ICAgICAgICAgIDEwMDEKICNkZWZpbmUgWEVOX0RPTUNUTF9nZGJzeF91bnBhdXNldmNwdSAgICAg ICAgICAgMTAwMgpAQCAtMTE4Myw2ICsxMjAyLDcgQEAgc3RydWN0IHhlbl9kb21jdGwgewogICAg ICAgICBzdHJ1Y3QgeGVuX2RvbWN0bF9zdWJzY3JpYmUgICAgICAgICBzdWJzY3JpYmU7CiAgICAg ICAgIHN0cnVjdCB4ZW5fZG9tY3RsX2RlYnVnX29wICAgICAgICAgIGRlYnVnX29wOwogICAgICAg ICBzdHJ1Y3QgeGVuX2RvbWN0bF92bV9ldmVudF9vcCAgICAgICB2bV9ldmVudF9vcDsKKyAgICAg ICAgc3RydWN0IHhlbl9kb21jdGxfdm1fZXZlbnRfbmdfb3AgICAgdm1fZXZlbnRfbmdfb3A7CiAg ICAgICAgIHN0cnVjdCB4ZW5fZG9tY3RsX21lbV9zaGFyaW5nX29wICAgIG1lbV9zaGFyaW5nX29w OwogI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykKICAgICAgICAg c3RydWN0IHhlbl9kb21jdGxfY3B1aWQgICAgICAgICAgICAgY3B1aWQ7CmRpZmYgLS1naXQgYS94 ZW4vaW5jbHVkZS9wdWJsaWMvbWVtb3J5LmggYi94ZW4vaW5jbHVkZS9wdWJsaWMvbWVtb3J5LmgK aW5kZXggNjhkZGFkYi4uMmU4OTEyZSAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvcHVibGljL21l bW9yeS5oCisrKyBiL3hlbi9pbmNsdWRlL3B1YmxpYy9tZW1vcnkuaApAQCAtNjEyLDYgKzYxMiw3 IEBAIHN0cnVjdCB4ZW5fbWVtX2FjcXVpcmVfcmVzb3VyY2UgewogCiAjZGVmaW5lIFhFTk1FTV9y ZXNvdXJjZV9pb3JlcV9zZXJ2ZXIgMAogI2RlZmluZSBYRU5NRU1fcmVzb3VyY2VfZ3JhbnRfdGFi bGUgMQorI2RlZmluZSBYRU5NRU1fcmVzb3VyY2Vfdm1fZXZlbnQgMgogCiAgICAgLyoKICAgICAg KiBJTiAtIGEgdHlwZS1zcGVjaWZpYyByZXNvdXJjZSBpZGVudGlmaWVyLCB3aGljaCBtdXN0IGJl IHplcm8KQEAgLTYxOSw2ICs2MjAsNyBAQCBzdHJ1Y3QgeGVuX21lbV9hY3F1aXJlX3Jlc291cmNl IHsKICAgICAgKgogICAgICAqIHR5cGUgPT0gWEVOTUVNX3Jlc291cmNlX2lvcmVxX3NlcnZlciAt PiBpZCA9PSBpb3JlcSBzZXJ2ZXIgaWQKICAgICAgKiB0eXBlID09IFhFTk1FTV9yZXNvdXJjZV9n cmFudF90YWJsZSAtPiBpZCBkZWZpbmVkIGJlbG93CisgICAgICogdHlwZSA9PSBYRU5NRU1fcmVz b3VyY2Vfdm1fZXZlbnQgLT4gaWQgPT0gdm1fZXZlbnQgdHlwZQogICAgICAqLwogICAgIHVpbnQz Ml90IGlkOwogCmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9wdWJsaWMvdm1fZXZlbnQuaCBiL3hl bi9pbmNsdWRlL3B1YmxpYy92bV9ldmVudC5oCmluZGV4IGM0OGJjMjEuLjJmMjE2MGIgMTAwNjQ0 Ci0tLSBhL3hlbi9pbmNsdWRlL3B1YmxpYy92bV9ldmVudC5oCisrKyBiL3hlbi9pbmNsdWRlL3B1 YmxpYy92bV9ldmVudC5oCkBAIC00MjEsNiArNDIxLDIyIEBAIHR5cGVkZWYgc3RydWN0IHZtX2V2 ZW50X3N0IHsKIAogREVGSU5FX1JJTkdfVFlQRVModm1fZXZlbnQsIHZtX2V2ZW50X3JlcXVlc3Rf dCwgdm1fZXZlbnRfcmVzcG9uc2VfdCk7CiAKKy8qIFZNIEV2ZW50IHNsb3Qgc3RhdGUgKi8KKyNk ZWZpbmUgU1RBVEVfVk1fRVZFTlRfU0xPVF9JRExFICAgICAwIC8qIHRoZSBzbG90IGRhdGEgaXMg aW52YWxpZCAqLworI2RlZmluZSBTVEFURV9WTV9FVkVOVF9TTE9UX1NVQk1JVCAgIDEgLyogYSBy ZXF1ZXN0IHdhcyBzdWJtaXR0ZWQgKi8KKyNkZWZpbmUgU1RBVEVfVk1fRVZFTlRfU0xPVF9GSU5J U0ggICAyIC8qIGEgcmVzcG9uc2Ugd2FzIGlzc3VlZCAqLworCitzdHJ1Y3Qgdm1fZXZlbnRfc2xv dAoreworICAgIHVpbnQzMl90IHBvcnQ7ICAgICAgLyogZXZ0Y2huIGZvciBub3RpZmljYXRpb25z IHRvL2Zyb20gaGVscGVyICovCisgICAgdWludDMyX3Qgc3RhdGU6NDsKKyAgICB1aW50MzJfdCBw YWQ6Mjg7CisgICAgdW5pb24geworICAgICAgICB2bV9ldmVudF9yZXF1ZXN0X3QgcmVxOworICAg ICAgICB2bV9ldmVudF9yZXNwb25zZV90IHJzcDsKKyAgICB9IHU7Cit9OworCiAjZW5kaWYgLyog ZGVmaW5lZChfX1hFTl9fKSB8fCBkZWZpbmVkKF9fWEVOX1RPT0xTX18pICovCiAjZW5kaWYgLyog X1hFTl9QVUJMSUNfVk1fRVZFTlRfSCAqLwogCmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS94ZW4v dm1fZXZlbnQuaCBiL3hlbi9pbmNsdWRlL3hlbi92bV9ldmVudC5oCmluZGV4IDE1YzE1ZTYuLmRm MGFhZmMgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL3hlbi92bV9ldmVudC5oCisrKyBiL3hlbi9p bmNsdWRlL3hlbi92bV9ldmVudC5oCkBAIC0xMTAsNiArMTEwLDEzIEBAIHN0YXRpYyBpbmxpbmUg dm9pZCB2bV9ldmVudF9wdXRfcmVxdWVzdChzdHJ1Y3Qgdm1fZXZlbnRfZG9tYWluICp2ZWQsCiBp bnQgdm1fZXZlbnRfZG9tY3RsKHN0cnVjdCBkb21haW4gKmQsIHN0cnVjdCB4ZW5fZG9tY3RsX3Zt X2V2ZW50X29wICp2ZWMsCiAgICAgICAgICAgICAgICAgICAgIFhFTl9HVUVTVF9IQU5ETEVfUEFS QU0odm9pZCkgdV9kb21jdGwpOwogCitpbnQgdm1fZXZlbnRfbmdfZG9tY3RsKHN0cnVjdCBkb21h aW4gKmQsIHN0cnVjdCB4ZW5fZG9tY3RsX3ZtX2V2ZW50X25nX29wICp2ZWMsCisgICAgICAgICAg ICAgICAgICAgICAgIFhFTl9HVUVTVF9IQU5ETEVfUEFSQU0odm9pZCkgdV9kb21jdGwpOworCitp bnQgdm1fZXZlbnRfbmdfZ2V0X2ZyYW1lcyhzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBpbnQg aWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGZyYW1lLCB1bnNp Z25lZCBpbnQgbnJfZnJhbWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgeGVuX3Bmbl90 IG1mbl9saXN0W10pOworCiB2b2lkIHZtX2V2ZW50X3ZjcHVfcGF1c2Uoc3RydWN0IHZjcHUgKnYp Owogdm9pZCB2bV9ldmVudF92Y3B1X3VucGF1c2Uoc3RydWN0IHZjcHUgKnYpOwogCkBAIC0xMTgs NiArMTI1LDkgQEAgdm9pZCB2bV9ldmVudF9zZXRfcmVnaXN0ZXJzKHN0cnVjdCB2Y3B1ICp2LCB2 bV9ldmVudF9yZXNwb25zZV90ICpyc3ApOwogCiB2b2lkIHZtX2V2ZW50X21vbml0b3JfbmV4dF9p bnRlcnJ1cHQoc3RydWN0IHZjcHUgKnYpOwogCit2b2lkIHZtX2V2ZW50X2hhbmRsZV9yZXNwb25z ZShzdHJ1Y3QgZG9tYWluICpkLCBzdHJ1Y3QgdmNwdSAqdiwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHZtX2V2ZW50X3Jlc3BvbnNlX3QgKnJzcCk7CisKICNlbmRpZiAvKiBfX1ZNX0VW RU5UX0hfXyAqLwogCiAvKgotLSAKMi43LjQKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0 cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlz dGluZm8veGVuLWRldmVs 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.0 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 7DB2DC28CC2 for ; Thu, 30 May 2019 14:18:50 +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 479FF25A1B for ; Thu, 30 May 2019 14:18:50 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 479FF25A1B Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=bitdefender.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 1hWLt3-0003By-NL; Thu, 30 May 2019 14:18:33 +0000 Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1hWLt2-0003AJ-RH for xen-devel@lists.xenproject.org; Thu, 30 May 2019 14:18:32 +0000 X-Inumbo-ID: cb30d1d4-82e5-11e9-9fea-93e827edf83c Received: from mx01.bbu.dsd.mx.bitdefender.com (unknown [91.199.104.161]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS id cb30d1d4-82e5-11e9-9fea-93e827edf83c; Thu, 30 May 2019 14:18:28 +0000 (UTC) Received: from smtp.bitdefender.com (smtp02.buh.bitdefender.net [10.17.80.76]) by mx01.bbu.dsd.mx.bitdefender.com (Postfix) with ESMTPS id C2A70305FFA8; Thu, 30 May 2019 17:18:25 +0300 (EEST) Received: from bitdefender.com (unknown [195.189.155.70]) by smtp.bitdefender.com (Postfix) with ESMTPSA id A65753051E7A; Thu, 30 May 2019 17:18:25 +0300 (EEST) From: Petre Pircalabu To: xen-devel@lists.xenproject.org Date: Thu, 30 May 2019 17:18:22 +0300 Message-Id: <3ec19ed5425a62ecbc524e44c4bba86d5fe41762.1559224640.git.ppircalabu@bitdefender.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: References: In-Reply-To: References: Subject: [Xen-devel] [PATCH 8/9] vm_event: Add vm_event_ng interface 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: Petre Pircalabu , Stefano Stabellini , Razvan Cojocaru , Wei Liu , Konrad Rzeszutek Wilk , George Dunlap , Andrew Cooper , Ian Jackson , Tim Deegan , Julien Grall , Tamas K Lengyel , Jan Beulich , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= 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" Message-ID: <20190530141822.68ypyf_vZjW2GLe_z9HnTymwWDzXggcRWXeKqpUzejk@z> SW4gaGlnaCB0aHJvdWdocHV0IGludHJvc3BlY3Rpb24gc2NlbmFyaW9zIHdoZXJlIGxvdHMgb2Yg bW9uaXRvcgp2bV9ldmVudHMgYXJlIGdlbmVyYXRlZCwgdGhlIHJpbmcgYnVmZmVyIGNhbiBmaWxs IHVwIGJlZm9yZSB0aGUgbW9uaXRvcgphcHBsaWNhdGlvbiBnZXRzIGEgY2hhbmNlIHRvIGhhbmRs ZSBhbGwgdGhlIHJlcXVlc3RzIHRodXMgYmxvY2tpbmcKb3RoZXIgdmNwdXMgd2hpY2ggd2lsbCBo YXZlIHRvIHdhaXQgZm9yIGEgc2xvdCB0byBiZWNvbWUgYXZhaWxhYmxlLgoKVGhpcyBwYXRjaCBh ZGRzIHN1cHBvcnQgZm9yIGEgZGlmZmVyZW50IG1lY2hhbmlzbSB0byBoYW5kbGUgc3luY2hyb25v dXMKdm1fZXZlbnQgcmVxdWVzdHMgLyByZXNwb25zZXMuIEFzIGVhY2ggc3luY2hyb25vdXMgcmVx dWVzdCBwYXVzZXMgdGhlCnZjcHUgdW50aWwgdGhlIGNvcnJlc3BvbmRpbmcgcmVzcG9uc2UgaXMg aGFuZGxlZCwgaXQgY2FuIGJlIHN0b3JlZCBpbgphIHNsb3R0ZWQgbWVtb3J5IGJ1ZmZlciAob25l IHBlciB2Y3B1KSBzaGFyZWQgYmV0d2VlbiB0aGUgaHlwZXJ2aXNvciBhbmQKdGhlIGNvbnRyb2xs aW5nIGRvbWFpbi4KClNpZ25lZC1vZmYtYnk6IFBldHJlIFBpcmNhbGFidSA8cHBpcmNhbGFidUBi aXRkZWZlbmRlci5jb20+Ci0tLQogdG9vbHMvbGlieGMvaW5jbHVkZS94ZW5jdHJsLmggfCAgIDYg KwogdG9vbHMvbGlieGMveGNfbW9uaXRvci5jICAgICAgfCAgMTUgKysKIHRvb2xzL2xpYnhjL3hj X3ByaXZhdGUuaCAgICAgIHwgICA4ICsKIHRvb2xzL2xpYnhjL3hjX3ZtX2V2ZW50LmMgICAgIHwg IDUzICsrKysrCiB4ZW4vYXJjaC94ODYvbW0uYyAgICAgICAgICAgICB8ICAgNSArCiB4ZW4vY29t bW9uL01ha2VmaWxlICAgICAgICAgICB8ICAgMSArCiB4ZW4vY29tbW9uL2RvbWN0bC5jICAgICAg ICAgICB8ICAgNyArCiB4ZW4vY29tbW9uL3ZtX2V2ZW50LmMgICAgICAgICB8ICA5NCArKysrLS0t LS0KIHhlbi9jb21tb24vdm1fZXZlbnRfbmcuYyAgICAgIHwgNDQ5ICsrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKwogeGVuL2luY2x1ZGUvcHVibGljL2RvbWN0bC5oICAg fCAgMjAgKysKIHhlbi9pbmNsdWRlL3B1YmxpYy9tZW1vcnkuaCAgIHwgICAyICsKIHhlbi9pbmNs dWRlL3B1YmxpYy92bV9ldmVudC5oIHwgIDE2ICsrCiB4ZW4vaW5jbHVkZS94ZW4vdm1fZXZlbnQu aCAgICB8ICAxMCArCiAxMyBmaWxlcyBjaGFuZ2VkLCA2NDIgaW5zZXJ0aW9ucygrKSwgNDQgZGVs ZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgeGVuL2NvbW1vbi92bV9ldmVudF9uZy5jCgpk aWZmIC0tZ2l0IGEvdG9vbHMvbGlieGMvaW5jbHVkZS94ZW5jdHJsLmggYi90b29scy9saWJ4Yy9p bmNsdWRlL3hlbmN0cmwuaAppbmRleCA5NDNiOTMzLi5jMzZiNjIzIDEwMDY0NAotLS0gYS90b29s cy9saWJ4Yy9pbmNsdWRlL3hlbmN0cmwuaAorKysgYi90b29scy9saWJ4Yy9pbmNsdWRlL3hlbmN0 cmwuaApAQCAtMTk5Myw2ICsxOTkzLDcgQEAgaW50IHhjX2dldF9tZW1fYWNjZXNzKHhjX2ludGVy ZmFjZSAqeGNoLCB1aW50MzJfdCBkb21haW5faWQsCiAgKiBSZXR1cm5zIHRoZSBWTV9FVkVOVF9J TlRFUkZBQ0UgdmVyc2lvbi4KICAqLwogaW50IHhjX3ZtX2V2ZW50X2dldF92ZXJzaW9uKHhjX2lu dGVyZmFjZSAqeGNoKTsKK2ludCB4Y192bV9ldmVudF9uZ19nZXRfdmVyc2lvbih4Y19pbnRlcmZh Y2UgKnhjaCk7CiAKIC8qKioKICAqIE1vbml0b3IgY29udHJvbCBvcGVyYXRpb25zLgpAQCAtMjAw Nyw2ICsyMDA4LDExIEBAIGludCB4Y192bV9ldmVudF9nZXRfdmVyc2lvbih4Y19pbnRlcmZhY2Ug KnhjaCk7CiB2b2lkICp4Y19tb25pdG9yX2VuYWJsZSh4Y19pbnRlcmZhY2UgKnhjaCwgdWludDMy X3QgZG9tYWluX2lkLCB1aW50MzJfdCAqcG9ydCk7CiBpbnQgeGNfbW9uaXRvcl9kaXNhYmxlKHhj X2ludGVyZmFjZSAqeGNoLCB1aW50MzJfdCBkb21haW5faWQpOwogaW50IHhjX21vbml0b3JfcmVz dW1lKHhjX2ludGVyZmFjZSAqeGNoLCB1aW50MzJfdCBkb21haW5faWQpOworCisvKiBNb25pdG9y IE5HIGludGVyZmFjZSAqLworaW50IHhjX21vbml0b3JfbmdfY3JlYXRlKHhjX2ludGVyZmFjZSAq eGNoLCB1aW50MzJfdCBkb21haW5faWQpOworaW50IHhjX21vbml0b3JfbmdfZGVzdHJveSh4Y19p bnRlcmZhY2UgKnhjaCwgdWludDMyX3QgZG9tYWluX2lkKTsKK2ludCB4Y19tb25pdG9yX25nX3Nl dF9zdGF0ZSh4Y19pbnRlcmZhY2UgKnhjaCwgdWludDMyX3QgZG9tYWluX2lkLCBib29sIGVuYWJs ZWQpOwogLyoKICAqIEdldCBhIGJpdG1hcCBvZiBzdXBwb3J0ZWQgbW9uaXRvciBldmVudHMgaW4g dGhlIGZvcm0KICAqICgxIDw8IFhFTl9ET01DVExfTU9OSVRPUl9FVkVOVF8qKS4KZGlmZiAtLWdp dCBhL3Rvb2xzL2xpYnhjL3hjX21vbml0b3IuYyBiL3Rvb2xzL2xpYnhjL3hjX21vbml0b3IuYwpp bmRleCA3MThmZThiLi40YzdlZjJiIDEwMDY0NAotLS0gYS90b29scy9saWJ4Yy94Y19tb25pdG9y LmMKKysrIGIvdG9vbHMvbGlieGMveGNfbW9uaXRvci5jCkBAIC0yNjUsNiArMjY1LDIxIEBAIGlu dCB4Y19tb25pdG9yX2VtdWxfdW5pbXBsZW1lbnRlZCh4Y19pbnRlcmZhY2UgKnhjaCwgdWludDMy X3QgZG9tYWluX2lkLAogICAgIHJldHVybiBkb19kb21jdGwoeGNoLCAmZG9tY3RsKTsKIH0KIAor aW50IHhjX21vbml0b3JfbmdfY3JlYXRlKHhjX2ludGVyZmFjZSAqeGNoLCB1aW50MzJfdCBkb21h aW5faWQpCit7CisgICAgcmV0dXJuIHhjX3ZtX2V2ZW50X25nX2NyZWF0ZSh4Y2gsIGRvbWFpbl9p ZCwgWEVOX1ZNX0VWRU5UX1RZUEVfTU9OSVRPUik7Cit9CisKK2ludCB4Y19tb25pdG9yX25nX2Rl c3Ryb3koeGNfaW50ZXJmYWNlICp4Y2gsIHVpbnQzMl90IGRvbWFpbl9pZCkKK3sKKyAgICByZXR1 cm4geGNfdm1fZXZlbnRfbmdfZGVzdHJveSh4Y2gsIGRvbWFpbl9pZCwgWEVOX1ZNX0VWRU5UX1RZ UEVfTU9OSVRPUik7Cit9CisKK2ludCB4Y19tb25pdG9yX25nX3NldF9zdGF0ZSh4Y19pbnRlcmZh Y2UgKnhjaCwgdWludDMyX3QgZG9tYWluX2lkLCBib29sIGVuYWJsZWQpCit7CisgICAgcmV0dXJu IHhjX3ZtX2V2ZW50X25nX3NldF9zdGF0ZSh4Y2gsIGRvbWFpbl9pZCwgWEVOX1ZNX0VWRU5UX1RZ UEVfTU9OSVRPUiwgZW5hYmxlZCk7Cit9CisKIC8qCiAgKiBMb2NhbCB2YXJpYWJsZXM6CiAgKiBt b2RlOiBDCmRpZmYgLS1naXQgYS90b29scy9saWJ4Yy94Y19wcml2YXRlLmggYi90b29scy9saWJ4 Yy94Y19wcml2YXRlLmgKaW5kZXggNDgyNDUxYy4uMTkwNGExZSAxMDA2NDQKLS0tIGEvdG9vbHMv bGlieGMveGNfcHJpdmF0ZS5oCisrKyBiL3Rvb2xzL2xpYnhjL3hjX3ByaXZhdGUuaApAQCAtNDIw LDYgKzQyMCwxNCBAQCBpbnQgeGNfdm1fZXZlbnRfY29udHJvbCh4Y19pbnRlcmZhY2UgKnhjaCwg dWludDMyX3QgZG9tYWluX2lkLCB1bnNpZ25lZCBpbnQgb3AsCiB2b2lkICp4Y192bV9ldmVudF9l bmFibGUoeGNfaW50ZXJmYWNlICp4Y2gsIHVpbnQzMl90IGRvbWFpbl9pZCwgaW50IHR5cGUsCiAg ICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgKnBvcnQpOwogCisvKioKKyAqIFZNX0VW RU5UIE5HIG9wZXJhdGlvbnMuIEludGVybmFsIHVzZSBvbmx5LgorICovCitpbnQgeGNfdm1fZXZl bnRfbmdfY3JlYXRlKHhjX2ludGVyZmFjZSAqeGNoLCB1aW50MzJfdCBkb21haW5faWQsIGludCB0 eXBlKTsKK2ludCB4Y192bV9ldmVudF9uZ19kZXN0cm95KHhjX2ludGVyZmFjZSAqeGNoLCB1aW50 MzJfdCBkb21haW5faWQsIGludCB0eXBlKTsKK2ludCB4Y192bV9ldmVudF9uZ19zZXRfc3RhdGUo eGNfaW50ZXJmYWNlICp4Y2gsIHVpbnQzMl90IGRvbWFpbl9pZCwgaW50IHR5cGUsIGJvb2wgZW5h YmxlZCk7CisKKwogaW50IGRvX2RtX29wKHhjX2ludGVyZmFjZSAqeGNoLCB1aW50MzJfdCBkb21p ZCwgdW5zaWduZWQgaW50IG5yX2J1ZnMsIC4uLik7CiAKICNlbmRpZiAvKiBfX1hDX1BSSVZBVEVf SF9fICovCmRpZmYgLS1naXQgYS90b29scy9saWJ4Yy94Y192bV9ldmVudC5jIGIvdG9vbHMvbGli eGMveGNfdm1fZXZlbnQuYwppbmRleCAzYjEwMThiLi4wNzI0M2E2IDEwMDY0NAotLS0gYS90b29s cy9saWJ4Yy94Y192bV9ldmVudC5jCisrKyBiL3Rvb2xzL2xpYnhjL3hjX3ZtX2V2ZW50LmMKQEAg LTE1NCw2ICsxNTQsNTkgQEAgaW50IHhjX3ZtX2V2ZW50X2dldF92ZXJzaW9uKHhjX2ludGVyZmFj ZSAqeGNoKQogICAgIHJldHVybiByYzsKIH0KIAoraW50IHhjX3ZtX2V2ZW50X25nX2dldF92ZXJz aW9uKHhjX2ludGVyZmFjZSAqeGNoKQoreworICAgIERFQ0xBUkVfRE9NQ1RMOworICAgIGludCBy YzsKKworICAgIGRvbWN0bC5jbWQgPSBYRU5fRE9NQ1RMX3ZtX2V2ZW50X25nX29wOworICAgIGRv bWN0bC5kb21haW4gPSBET01JRF9JTlZBTElEOworICAgIGRvbWN0bC51LnZtX2V2ZW50X29wLm9w ID0gWEVOX1ZNX0VWRU5UX05HX0dFVF9WRVJTSU9OOworICAgIGRvbWN0bC51LnZtX2V2ZW50X29w LnR5cGUgPSBYRU5fVk1fRVZFTlRfVFlQRV9NT05JVE9SOworCisgICAgcmMgPSBkb19kb21jdGwo eGNoLCAmZG9tY3RsKTsKKyAgICBpZiAoICFyYyApCisgICAgICAgIHJjID0gZG9tY3RsLnUudm1f ZXZlbnRfbmdfb3AudS52ZXJzaW9uOworICAgIHJldHVybiByYzsKK30KKworaW50IHhjX3ZtX2V2 ZW50X25nX2NyZWF0ZSh4Y19pbnRlcmZhY2UgKnhjaCwgdWludDMyX3QgZG9tYWluX2lkLCBpbnQg dHlwZSkKK3sKKyAgICBERUNMQVJFX0RPTUNUTDsKKworICAgIGRvbWN0bC5jbWQgPSBYRU5fRE9N Q1RMX3ZtX2V2ZW50X25nX29wOworICAgIGRvbWN0bC5kb21haW4gPSBkb21haW5faWQ7CisgICAg ZG9tY3RsLnUudm1fZXZlbnRfbmdfb3Aub3AgPSBYRU5fVk1fRVZFTlRfTkdfQ1JFQVRFOworICAg IGRvbWN0bC51LnZtX2V2ZW50X25nX29wLnR5cGUgPSB0eXBlOworCisgICAgcmV0dXJuIGRvX2Rv bWN0bCh4Y2gsICZkb21jdGwpOworfQorCitpbnQgeGNfdm1fZXZlbnRfbmdfZGVzdHJveSh4Y19p bnRlcmZhY2UgKnhjaCwgdWludDMyX3QgZG9tYWluX2lkLCBpbnQgdHlwZSkKK3sKKyAgICBERUNM QVJFX0RPTUNUTDsKKworICAgIGRvbWN0bC5jbWQgPSBYRU5fRE9NQ1RMX3ZtX2V2ZW50X25nX29w OworICAgIGRvbWN0bC5kb21haW4gPSBkb21haW5faWQ7CisgICAgZG9tY3RsLnUudm1fZXZlbnRf bmdfb3Aub3AgPSBYRU5fVk1fRVZFTlRfTkdfREVTVFJPWTsKKyAgICBkb21jdGwudS52bV9ldmVu dF9uZ19vcC50eXBlID0gdHlwZTsKKworICAgIHJldHVybiBkb19kb21jdGwoeGNoLCAmZG9tY3Rs KTsKK30KKworaW50IHhjX3ZtX2V2ZW50X25nX3NldF9zdGF0ZSh4Y19pbnRlcmZhY2UgKnhjaCwg dWludDMyX3QgZG9tYWluX2lkLCBpbnQgdHlwZSwgYm9vbCBlbmFibGVkKQoreworICAgIERFQ0xB UkVfRE9NQ1RMOworCisgICAgZG9tY3RsLmNtZCA9IFhFTl9ET01DVExfdm1fZXZlbnRfbmdfb3A7 CisgICAgZG9tY3RsLmRvbWFpbiA9IGRvbWFpbl9pZDsKKyAgICBkb21jdGwudS52bV9ldmVudF9u Z19vcC5vcCA9IFhFTl9WTV9FVkVOVF9OR19TRVRfU1RBVEU7CisgICAgZG9tY3RsLnUudm1fZXZl bnRfbmdfb3AudHlwZSA9IHR5cGU7CisgICAgZG9tY3RsLnUudm1fZXZlbnRfbmdfb3AudS5lbmFi bGVkID0gZW5hYmxlZDsKKworICAgIHJldHVybiBkb19kb21jdGwoeGNoLCAmZG9tY3RsKTsKK30K KwogLyoKICAqIExvY2FsIHZhcmlhYmxlczoKICAqIG1vZGU6IEMKZGlmZiAtLWdpdCBhL3hlbi9h cmNoL3g4Ni9tbS5jIGIveGVuL2FyY2gveDg2L21tLmMKaW5kZXggMmY2MjBkOS4uMDMwYjViZCAx MDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L21tLmMKKysrIGIveGVuL2FyY2gveDg2L21tLmMKQEAg LTExOSw2ICsxMTksNyBAQAogI2luY2x1ZGUgPHhlbi9lZmkuaD4KICNpbmNsdWRlIDx4ZW4vZ3Jh bnRfdGFibGUuaD4KICNpbmNsdWRlIDx4ZW4vaHlwZXJjYWxsLmg+CisjaW5jbHVkZSA8eGVuL3Zt X2V2ZW50Lmg+CiAjaW5jbHVkZSA8YXNtL3BhZ2luZy5oPgogI2luY2x1ZGUgPGFzbS9zaGFkb3cu aD4KICNpbmNsdWRlIDxhc20vcGFnZS5oPgpAQCAtNDU4NCw2ICs0NTg1LDEwIEBAIGludCBhcmNo X2FjcXVpcmVfcmVzb3VyY2Uoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgaW50IHR5cGUsCiAg ICAgfQogI2VuZGlmCiAKKyAgICBjYXNlIFhFTk1FTV9yZXNvdXJjZV92bV9ldmVudDoKKyAgICAg ICAgcmMgPSB2bV9ldmVudF9uZ19nZXRfZnJhbWVzKGQsIGlkLCBmcmFtZSwgbnJfZnJhbWVzLCBt Zm5fbGlzdCk7CisgICAgICAgIGJyZWFrOworCiAgICAgZGVmYXVsdDoKICAgICAgICAgcmMgPSAt RU9QTk9UU1VQUDsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS94ZW4vY29tbW9uL01ha2Vm aWxlIGIveGVuL2NvbW1vbi9NYWtlZmlsZQppbmRleCAzM2QwM2I4Li44Y2IzM2UyIDEwMDY0NAot LS0gYS94ZW4vY29tbW9uL01ha2VmaWxlCisrKyBiL3hlbi9jb21tb24vTWFrZWZpbGUKQEAgLTU5 LDYgKzU5LDcgQEAgb2JqLXkgKz0gdHJhY2Uubwogb2JqLXkgKz0gdmVyc2lvbi5vCiBvYmoteSAr PSB2aXJ0dWFsX3JlZ2lvbi5vCiBvYmoteSArPSB2bV9ldmVudC5vCitvYmoteSArPSB2bV9ldmVu dF9uZy5vCiBvYmoteSArPSB2bWFwLm8KIG9iai15ICs9IHZzcHJpbnRmLm8KIG9iai15ICs9IHdh aXQubwpkaWZmIC0tZ2l0IGEveGVuL2NvbW1vbi9kb21jdGwuYyBiL3hlbi9jb21tb24vZG9tY3Rs LmMKaW5kZXggYmFkZTlhNi4uMjNmNmU1NiAxMDA2NDQKLS0tIGEveGVuL2NvbW1vbi9kb21jdGwu YworKysgYi94ZW4vY29tbW9uL2RvbWN0bC5jCkBAIC0zOTMsNiArMzkzLDcgQEAgbG9uZyBkb19k b21jdGwoWEVOX0dVRVNUX0hBTkRMRV9QQVJBTSh4ZW5fZG9tY3RsX3QpIHVfZG9tY3RsKQogICAg IHsKICAgICBjYXNlIFhFTl9ET01DVExfdGVzdF9hc3NpZ25fZGV2aWNlOgogICAgIGNhc2UgWEVO X0RPTUNUTF92bV9ldmVudF9vcDoKKyAgICBjYXNlIFhFTl9ET01DVExfdm1fZXZlbnRfbmdfb3A6 CiAgICAgICAgIGlmICggb3AtPmRvbWFpbiA9PSBET01JRF9JTlZBTElEICkKICAgICAgICAgewog ICAgIGNhc2UgWEVOX0RPTUNUTF9jcmVhdGVkb21haW46CkBAIC0xMDIzLDYgKzEwMjQsMTIgQEAg bG9uZyBkb19kb21jdGwoWEVOX0dVRVNUX0hBTkRMRV9QQVJBTSh4ZW5fZG9tY3RsX3QpIHVfZG9t Y3RsKQogICAgICAgICBjb3B5YmFjayA9IDE7CiAgICAgICAgIGJyZWFrOwogCisgICAgY2FzZSBY RU5fRE9NQ1RMX3ZtX2V2ZW50X25nX29wOgorICAgICAgICByZXQgPSB2bV9ldmVudF9uZ19kb21j dGwoZCwgJm9wLT51LnZtX2V2ZW50X25nX29wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZ3Vlc3RfaGFuZGxlX2Nhc3QodV9kb21jdGwsIHZvaWQpKTsKKyAgICAgICAgY29weWJh Y2sgPSAxOworICAgICAgICBicmVhazsKKwogI2lmZGVmIENPTkZJR19NRU1fQUNDRVNTCiAgICAg Y2FzZSBYRU5fRE9NQ1RMX3NldF9hY2Nlc3NfcmVxdWlyZWQ6CiAgICAgICAgIGlmICggdW5saWtl bHkoY3VycmVudC0+ZG9tYWluID09IGQpICkgLyogbm8gZG9tYWluX3BhdXNlKCkgKi8KZGlmZiAt LWdpdCBhL3hlbi9jb21tb24vdm1fZXZlbnQuYyBiL3hlbi9jb21tb24vdm1fZXZlbnQuYwppbmRl eCAxZDg1ZjNlLi5lOTRmZTNjIDEwMDY0NAotLS0gYS94ZW4vY29tbW9uL3ZtX2V2ZW50LmMKKysr IGIveGVuL2NvbW1vbi92bV9ldmVudC5jCkBAIC0zODAsNiArMzgwLDUxIEBAIHN0YXRpYyBpbnQg dm1fZXZlbnRfcmluZ19nZXRfcmVzcG9uc2Uoc3RydWN0IHZtX2V2ZW50X3JpbmdfZG9tYWluICpp bXBsLAogICAgIHJldHVybiAxOwogfQogCit2b2lkIHZtX2V2ZW50X2hhbmRsZV9yZXNwb25zZShz dHJ1Y3QgZG9tYWluICpkLCBzdHJ1Y3QgdmNwdSAqdiwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHZtX2V2ZW50X3Jlc3BvbnNlX3QgKnJzcCkKK3sKKyAgICAvKiBDaGVjayBmbGFncyB3 aGljaCBhcHBseSBvbmx5IHdoZW4gdGhlIHZDUFUgaXMgcGF1c2VkICovCisgICAgaWYgKCBhdG9t aWNfcmVhZCgmdi0+dm1fZXZlbnRfcGF1c2VfY291bnQpICkKKyAgICB7CisjaWZkZWYgQ09ORklH X0hBU19NRU1fUEFHSU5HCisgICAgICAgIGlmICggcnNwLT5yZWFzb24gPT0gVk1fRVZFTlRfUkVB U09OX01FTV9QQUdJTkcgKQorICAgICAgICAgICAgcDJtX21lbV9wYWdpbmdfcmVzdW1lKGQsIHJz cCk7CisjZW5kaWYKKworICAgICAgICAvKgorICAgICAgICAgKiBDaGVjayBlbXVsYXRpb24gZmxh Z3MgaW4gdGhlIGFyY2gtc3BlY2lmaWMgaGFuZGxlciBvbmx5LCBhcyBpdAorICAgICAgICAgKiBo YXMgdG8gc2V0IGFyY2gtc3BlY2lmaWMgZmxhZ3Mgd2hlbiBzdXBwb3J0ZWQsIGFuZCB0byBhdm9p ZAorICAgICAgICAgKiBiaXRtYXNrIG92ZXJoZWFkIHdoZW4gaXQgaXNuJ3Qgc3VwcG9ydGVkLgor ICAgICAgICAgKi8KKyAgICAgICAgdm1fZXZlbnRfZW11bGF0ZV9jaGVjayh2LCByc3ApOworCisg ICAgICAgIC8qCisgICAgICAgICAqIENoZWNrIGluIGFyY2gtc3BlY2lmaWMgaGFuZGxlciB0byBh dm9pZCBiaXRtYXNrIG92ZXJoZWFkIHdoZW4KKyAgICAgICAgICogbm90IHN1cHBvcnRlZC4KKyAg ICAgICAgICovCisgICAgICAgIHZtX2V2ZW50X3JlZ2lzdGVyX3dyaXRlX3Jlc3VtZSh2LCByc3Ap OworCisgICAgICAgIC8qCisgICAgICAgICAqIENoZWNrIGluIGFyY2gtc3BlY2lmaWMgaGFuZGxl ciB0byBhdm9pZCBiaXRtYXNrIG92ZXJoZWFkIHdoZW4KKyAgICAgICAgICogbm90IHN1cHBvcnRl ZC4KKyAgICAgICAgICovCisgICAgICAgIHZtX2V2ZW50X3RvZ2dsZV9zaW5nbGVzdGVwKGQsIHYs IHJzcCk7CisKKyAgICAgICAgLyogQ2hlY2sgZm9yIGFsdHAybSBzd2l0Y2ggKi8KKyAgICAgICAg aWYgKCByc3AtPmZsYWdzICYgVk1fRVZFTlRfRkxBR19BTFRFUk5BVEVfUDJNICkKKyAgICAgICAg ICAgIHAybV9hbHRwMm1fY2hlY2sodiwgcnNwLT5hbHRwMm1faWR4KTsKKworICAgICAgICBpZiAo IHJzcC0+ZmxhZ3MgJiBWTV9FVkVOVF9GTEFHX1NFVF9SRUdJU1RFUlMgKQorICAgICAgICAgICAg dm1fZXZlbnRfc2V0X3JlZ2lzdGVycyh2LCByc3ApOworCisgICAgICAgIGlmICggcnNwLT5mbGFn cyAmIFZNX0VWRU5UX0ZMQUdfR0VUX05FWFRfSU5URVJSVVBUICkKKyAgICAgICAgICAgIHZtX2V2 ZW50X21vbml0b3JfbmV4dF9pbnRlcnJ1cHQodik7CisKKyAgICAgICAgaWYgKCByc3AtPmZsYWdz ICYgVk1fRVZFTlRfRkxBR19WQ1BVX1BBVVNFRCApCisgICAgICAgICAgICB2bV9ldmVudF92Y3B1 X3VucGF1c2Uodik7CisgICAgfQorfQorCiAvKgogICogUHVsbCBhbGwgcmVzcG9uc2VzIGZyb20g dGhlIGdpdmVuIHJpbmcgYW5kIHVucGF1c2UgdGhlIGNvcnJlc3BvbmRpbmcgdkNQVQogICogaWYg cmVxdWlyZWQuIEJhc2VkIG9uIHRoZSByZXNwb25zZSB0eXBlLCBoZXJlIHdlIGNhbiBhbHNvIGNh bGwgY3VzdG9tCkBAIC00MjcsNDcgKzQ3Miw3IEBAIHN0YXRpYyBpbnQgdm1fZXZlbnRfcmluZ19y ZXN1bWUoc3RydWN0IHZtX2V2ZW50X3JpbmdfZG9tYWluICppbXBsKQogICAgICAgICAgKiBJbiBz b21lIGNhc2VzIHRoZSByZXNwb25zZSB0eXBlIG5lZWRzIGV4dHJhIGhhbmRsaW5nLCBzbyBoZXJl CiAgICAgICAgICAqIHdlIGNhbGwgdGhlIGFwcHJvcHJpYXRlIGhhbmRsZXJzLgogICAgICAgICAg Ki8KLQotICAgICAgICAvKiBDaGVjayBmbGFncyB3aGljaCBhcHBseSBvbmx5IHdoZW4gdGhlIHZD UFUgaXMgcGF1c2VkICovCi0gICAgICAgIGlmICggYXRvbWljX3JlYWQoJnYtPnZtX2V2ZW50X3Bh dXNlX2NvdW50KSApCi0gICAgICAgIHsKLSNpZmRlZiBDT05GSUdfSEFTX01FTV9QQUdJTkcKLSAg ICAgICAgICAgIGlmICggcnNwLnJlYXNvbiA9PSBWTV9FVkVOVF9SRUFTT05fTUVNX1BBR0lORyAp Ci0gICAgICAgICAgICAgICAgcDJtX21lbV9wYWdpbmdfcmVzdW1lKGltcGwtPnZlZC5kLCAmcnNw KTsKLSNlbmRpZgotCi0gICAgICAgICAgICAvKgotICAgICAgICAgICAgICogQ2hlY2sgZW11bGF0 aW9uIGZsYWdzIGluIHRoZSBhcmNoLXNwZWNpZmljIGhhbmRsZXIgb25seSwgYXMgaXQKLSAgICAg ICAgICAgICAqIGhhcyB0byBzZXQgYXJjaC1zcGVjaWZpYyBmbGFncyB3aGVuIHN1cHBvcnRlZCwg YW5kIHRvIGF2b2lkCi0gICAgICAgICAgICAgKiBiaXRtYXNrIG92ZXJoZWFkIHdoZW4gaXQgaXNu J3Qgc3VwcG9ydGVkLgotICAgICAgICAgICAgICovCi0gICAgICAgICAgICB2bV9ldmVudF9lbXVs YXRlX2NoZWNrKHYsICZyc3ApOwotCi0gICAgICAgICAgICAvKgotICAgICAgICAgICAgICogQ2hl Y2sgaW4gYXJjaC1zcGVjaWZpYyBoYW5kbGVyIHRvIGF2b2lkIGJpdG1hc2sgb3ZlcmhlYWQgd2hl bgotICAgICAgICAgICAgICogbm90IHN1cHBvcnRlZC4KLSAgICAgICAgICAgICAqLwotICAgICAg ICAgICAgdm1fZXZlbnRfcmVnaXN0ZXJfd3JpdGVfcmVzdW1lKHYsICZyc3ApOwotCi0gICAgICAg ICAgICAvKgotICAgICAgICAgICAgICogQ2hlY2sgaW4gYXJjaC1zcGVjaWZpYyBoYW5kbGVyIHRv IGF2b2lkIGJpdG1hc2sgb3ZlcmhlYWQgd2hlbgotICAgICAgICAgICAgICogbm90IHN1cHBvcnRl ZC4KLSAgICAgICAgICAgICAqLwotICAgICAgICAgICAgdm1fZXZlbnRfdG9nZ2xlX3NpbmdsZXN0 ZXAoaW1wbC0+dmVkLmQsIHYsICZyc3ApOwotCi0gICAgICAgICAgICAvKiBDaGVjayBmb3IgYWx0 cDJtIHN3aXRjaCAqLwotICAgICAgICAgICAgaWYgKCByc3AuZmxhZ3MgJiBWTV9FVkVOVF9GTEFH X0FMVEVSTkFURV9QMk0gKQotICAgICAgICAgICAgICAgIHAybV9hbHRwMm1fY2hlY2sodiwgcnNw LmFsdHAybV9pZHgpOwotCi0gICAgICAgICAgICBpZiAoIHJzcC5mbGFncyAmIFZNX0VWRU5UX0ZM QUdfU0VUX1JFR0lTVEVSUyApCi0gICAgICAgICAgICAgICAgdm1fZXZlbnRfc2V0X3JlZ2lzdGVy cyh2LCAmcnNwKTsKLQotICAgICAgICAgICAgaWYgKCByc3AuZmxhZ3MgJiBWTV9FVkVOVF9GTEFH X0dFVF9ORVhUX0lOVEVSUlVQVCApCi0gICAgICAgICAgICAgICAgdm1fZXZlbnRfbW9uaXRvcl9u ZXh0X2ludGVycnVwdCh2KTsKLQotICAgICAgICAgICAgaWYgKCByc3AuZmxhZ3MgJiBWTV9FVkVO VF9GTEFHX1ZDUFVfUEFVU0VEICkKLSAgICAgICAgICAgICAgICB2bV9ldmVudF92Y3B1X3VucGF1 c2Uodik7Ci0gICAgICAgIH0KKyAgICAgICAgdm1fZXZlbnRfaGFuZGxlX3Jlc3BvbnNlKGltcGwt PnZlZC5kLCB2LCAmcnNwKTsKICAgICB9CiAKICAgICByZXR1cm4gMDsKQEAgLTcwOSw5ICs3MTQs MTAgQEAgaW50IHZtX2V2ZW50X2RvbWN0bChzdHJ1Y3QgZG9tYWluICpkLCBzdHJ1Y3QgeGVuX2Rv bWN0bF92bV9ldmVudF9vcCAqdmVjLAogICAgICAgICAgICAgcmMgPSBhcmNoX21vbml0b3JfaW5p dF9kb21haW4oZCk7CiAgICAgICAgICAgICBpZiAoIHJjICkKICAgICAgICAgICAgICAgICBicmVh azsKLSAgICAgICAgICAgIHJjID0gdm1fZXZlbnRfcmluZ19lbmFibGUoZCwgdmVjLCAmZC0+dm1f ZXZlbnRfbW9uaXRvciwgX1ZQRl9tZW1fYWNjZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgSFZNX1BBUkFNX01PTklUT1JfUklOR19QRk4sCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBtb25pdG9yX25vdGlmaWNhdGlvbik7CisgICAgICAgICAgICByYyA9IHZt X2V2ZW50X3JpbmdfZW5hYmxlKGQsIHZlYywgJmQtPnZtX2V2ZW50X21vbml0b3IsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9WUEZfbWVtX2FjY2VzcywKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSFZNX1BBUkFNX01PTklUT1JfUklOR19QRk4s CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbml0b3Jfbm90aWZpY2F0 aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgWEVOX1ZNX0VWRU5UX0RJ U0FCTEU6CmRpZmYgLS1naXQgYS94ZW4vY29tbW9uL3ZtX2V2ZW50X25nLmMgYi94ZW4vY29tbW9u L3ZtX2V2ZW50X25nLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTdhZTMz YwotLS0gL2Rldi9udWxsCisrKyBiL3hlbi9jb21tb24vdm1fZXZlbnRfbmcuYwpAQCAtMCwwICsx LDQ0OSBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogdm1fZXZlbnRfbmcuYworICoKKyAq IFZNIGV2ZW50IHN1cHBvcnQgKG5ldyBnZW5lcmF0aW9uKS4KKyAqCisgKiBDb3B5cmlnaHQgKGMp IDIwMTksIEJpdGRlZmVuZGVyIFMuUi5MLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNv ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRl ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hl ZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBv ZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg d2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2 ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0 aCB0aGlzIHByb2dyYW07IElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMv Pi4KKyAqLworCisjaW5jbHVkZSA8eGVuL3NjaGVkLmg+CisjaW5jbHVkZSA8eGVuL2V2ZW50Lmg+ CisjaW5jbHVkZSA8eGVuL3ZtX2V2ZW50Lmg+CisjaW5jbHVkZSA8eGVuL3ZtYXAuaD4KKyNpbmNs dWRlIDxhc20vbW9uaXRvci5oPgorI2luY2x1ZGUgPGFzbS92bV9ldmVudC5oPgorI2luY2x1ZGUg PHhzbS94c20uaD4KKworI2RlZmluZSB0b19jaGFubmVscyhfdmVkKSBjb250YWluZXJfb2YoKF92 ZWQpLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHZt X2V2ZW50X2NoYW5uZWxzX2RvbWFpbiwgdmVkKQorCisjZGVmaW5lIFZNX0VWRU5UX0NIQU5ORUxT X0VOQUJMRUQgICAgICAgMQorCitzdHJ1Y3Qgdm1fZXZlbnRfY2hhbm5lbHNfZG9tYWluCit7Cisg ICAgLyogVk0gZXZlbnQgZG9tYWluICovCisgICAgc3RydWN0IHZtX2V2ZW50X2RvbWFpbiB2ZWQ7 CisgICAgLyogc2hhcmVkIGNoYW5uZWxzIGJ1ZmZlciAqLworICAgIHN0cnVjdCB2bV9ldmVudF9z bG90ICpzbG90czsKKyAgICAvKiB0aGUgYnVmZmVyIHNpemUgKG51bWJlciBvZiBmcmFtZXMpICov CisgICAgdW5zaWduZWQgaW50IG5yX2ZyYW1lczsKKyAgICAvKiBzdGF0ZSAqLworICAgIGJvb2wg ZW5hYmxlZDsKKyAgICAvKiBidWZmZXIncyBtbmYgbGlzdCAqLworICAgIG1mbl90IG1mblswXTsK K307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgdm1fZXZlbnRfb3BzIHZtX2V2ZW50X2NoYW5uZWxz X29wczsKKworc3RhdGljIGludCB2bV9ldmVudF9jaGFubmVsc19hbGxvY19idWZmZXIoc3RydWN0 IHZtX2V2ZW50X2NoYW5uZWxzX2RvbWFpbiAqaW1wbCkKK3sKKyAgICBpbnQgaSwgcmMgPSAtRU5P TUVNOworCisgICAgZm9yICggaSA9IDA7IGkgPCBpbXBsLT5ucl9mcmFtZXM7IGkrKyApCisgICAg eworICAgICAgICBzdHJ1Y3QgcGFnZV9pbmZvICpwYWdlID0gYWxsb2NfZG9taGVhcF9wYWdlKGlt cGwtPnZlZC5kLCAwKTsKKyAgICAgICAgaWYgKCAhcGFnZSApCisgICAgICAgICAgICBnb3RvIGVy cjsKKworICAgICAgICBpZiAoICFnZXRfcGFnZV9hbmRfdHlwZShwYWdlLCBpbXBsLT52ZWQuZCwg UEdUX3dyaXRhYmxlX3BhZ2UpICkKKyAgICAgICAgeworICAgICAgICAgICAgcmMgPSAtRU5PREFU QTsKKyAgICAgICAgICAgIGdvdG8gZXJyOworICAgICAgICB9CisKKyAgICAgICAgaW1wbC0+bWZu W2ldID0gcGFnZV90b19tZm4ocGFnZSk7CisgICAgfQorCisgICAgaW1wbC0+c2xvdHMgPSAoc3Ry dWN0IHZtX2V2ZW50X3Nsb3QgKil2bWFwKGltcGwtPm1mbiwgaW1wbC0+bnJfZnJhbWVzKTsKKyAg ICBpZiAoICFpbXBsLT5zbG90cyApCisgICAgICAgIGdvdG8gZXJyOworCisgICAgZm9yICggaSA9 IDA7IGkgPCBpbXBsLT5ucl9mcmFtZXM7IGkrKyApCisgICAgICAgIGNsZWFyX3BhZ2UoKHZvaWQq KWltcGwtPnNsb3RzICsgaSAqIFBBR0VfU0laRSk7CisKKyAgICByZXR1cm4gMDsKKworZXJyOgor ICAgIHdoaWxlICggLS1pID49IDAgKQorICAgIHsKKyAgICAgICAgc3RydWN0IHBhZ2VfaW5mbyAq cGFnZSA9IG1mbl90b19wYWdlKGltcGwtPm1mbltpXSk7CisKKyAgICAgICAgaWYgKCB0ZXN0X2Fu ZF9jbGVhcl9iaXQoX1BHQ19hbGxvY2F0ZWQsICZwYWdlLT5jb3VudF9pbmZvKSApCisgICAgICAg ICAgICBwdXRfcGFnZShwYWdlKTsKKyAgICAgICAgcHV0X3BhZ2VfYW5kX3R5cGUocGFnZSk7Cisg ICAgfQorCisgICAgcmV0dXJuIHJjOworfQorCitzdGF0aWMgdm9pZCB2bV9ldmVudF9jaGFubmVs c19mcmVlX2J1ZmZlcihzdHJ1Y3Qgdm1fZXZlbnRfY2hhbm5lbHNfZG9tYWluICppbXBsKQorewor ICAgIGludCBpOworCisgICAgQVNTRVJUKGltcGwpOworCisgICAgaWYgKCAhaW1wbC0+c2xvdHMg KQorICAgICAgICByZXR1cm47CisKKyAgICB2dW5tYXAoaW1wbC0+c2xvdHMpOworCisgICAgZm9y ICggaSA9IDA7IGkgPCBpbXBsLT5ucl9mcmFtZXM7IGkrKyApCisgICAgeworICAgICAgICBzdHJ1 Y3QgcGFnZV9pbmZvICpwYWdlID0gbWZuX3RvX3BhZ2UoaW1wbC0+bWZuW2ldKTsKKworICAgICAg ICBBU1NFUlQocGFnZSk7CisgICAgICAgIGlmICggdGVzdF9hbmRfY2xlYXJfYml0KF9QR0NfYWxs b2NhdGVkLCAmcGFnZS0+Y291bnRfaW5mbykgKQorICAgICAgICAgICAgcHV0X3BhZ2UocGFnZSk7 CisgICAgICAgIHB1dF9wYWdlX2FuZF90eXBlKHBhZ2UpOworICAgIH0KK30KKworc3RhdGljIGlu dCB2bV9ldmVudF9jaGFubmVsc19jcmVhdGUoCisgICAgc3RydWN0IGRvbWFpbiAqZCwKKyAgICBz dHJ1Y3QgeGVuX2RvbWN0bF92bV9ldmVudF9uZ19vcCAqdmVjLAorICAgIHN0cnVjdCB2bV9ldmVu dF9kb21haW4gKipfdmVkLAorICAgIGludCBwYXVzZV9mbGFnLAorICAgIHhlbl9ldmVudF9jaGFu bmVsX25vdGlmaWNhdGlvbl90IG5vdGlmaWNhdGlvbl9mbikKK3sKKyAgICBpbnQgcmMsIGk7Cisg ICAgdW5zaWduZWQgaW50IG5yX2ZyYW1lcyA9IFBGTl9VUChkLT5tYXhfdmNwdXMgKiBzaXplb2Yo c3RydWN0IHZtX2V2ZW50X3Nsb3QpKTsKKyAgICBzdHJ1Y3Qgdm1fZXZlbnRfY2hhbm5lbHNfZG9t YWluICppbXBsOworCisgICAgaWYgKCAqX3ZlZCApCisgICAgICAgIHJldHVybiAtRUJVU1k7CisK KyAgICBpbXBsID0gX3h6YWxsb2Moc2l6ZW9mKHN0cnVjdCB2bV9ldmVudF9jaGFubmVsc19kb21h aW4pICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG5yX2ZyYW1lcyAqIHNpemVvZihtZm5f dCksCisgICAgICAgICAgICAgICAgICAgIF9fYWxpZ25vZl9fKHN0cnVjdCB2bV9ldmVudF9jaGFu bmVsc19kb21haW4pKTsKKyAgICBpZiAoIHVubGlrZWx5KCFpbXBsKSApCisgICAgICAgIHJldHVy biAtRU5PTUVNOworCisgICAgc3Bpbl9sb2NrX2luaXQoJmltcGwtPnZlZC5sb2NrKTsKKyAgICBz cGluX2xvY2soJmltcGwtPnZlZC5sb2NrKTsKKworICAgIGltcGwtPm5yX2ZyYW1lcyA9IG5yX2Zy YW1lczsKKyAgICBpbXBsLT52ZWQuZCA9IGQ7CisgICAgaW1wbC0+dmVkLm9wcyA9ICZ2bV9ldmVu dF9jaGFubmVsc19vcHM7CisKKyAgICByYyA9IHZtX2V2ZW50X2luaXRfZG9tYWluKGQpOworICAg IGlmICggcmMgPCAwICkKKyAgICAgICAgZ290byBlcnI7CisKKyAgICByYyA9IHZtX2V2ZW50X2No YW5uZWxzX2FsbG9jX2J1ZmZlcihpbXBsKTsKKyAgICBpZiAoIHJjICkKKyAgICAgICAgZ290byBl cnI7CisKKyAgICBmb3IgKCBpID0gMDsgaSA8IGQtPm1heF92Y3B1czsgaSsrICkKKyAgICB7Cisg ICAgICAgIHJjID0gYWxsb2NfdW5ib3VuZF94ZW5fZXZlbnRfY2hhbm5lbChkLCBpLCBjdXJyZW50 LT5kb21haW4tPmRvbWFpbl9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIG5vdGlmaWNhdGlvbl9mbik7CisgICAgICAgIGlmICggcmMgPCAwICkKKyAgICAg ICAgICAgIGdvdG8gZXJyOworCisgICAgICAgIGltcGwtPnNsb3RzW2ldLnBvcnQgPSByYzsKKyAg ICAgICAgaW1wbC0+c2xvdHNbaV0uc3RhdGUgPSBTVEFURV9WTV9FVkVOVF9TTE9UX0lETEU7Cisg ICAgfQorCisgICAgaW1wbC0+ZW5hYmxlZCA9IGZhbHNlOworCisgICAgc3Bpbl91bmxvY2soJmlt cGwtPnZlZC5sb2NrKTsKKyAgICAqX3ZlZCA9ICZpbXBsLT52ZWQ7CisgICAgcmV0dXJuIDA7CisK K2VycjoKKyAgICBzcGluX3VubG9jaygmaW1wbC0+dmVkLmxvY2spOworICAgIFhGUkVFKGltcGwp OworICAgIHJldHVybiByYzsKK30KKworc3RhdGljIGludCB2bV9ldmVudF9jaGFubmVsc19kZXN0 cm95KHN0cnVjdCB2bV9ldmVudF9kb21haW4gKipfdmVkKQoreworICAgIHN0cnVjdCB2Y3B1ICp2 OworICAgIHN0cnVjdCB2bV9ldmVudF9jaGFubmVsc19kb21haW4gKmltcGwgPSB0b19jaGFubmVs cygqX3ZlZCk7CisgICAgaW50IGk7CisKKyAgICBzcGluX2xvY2soJigqX3ZlZCktPmxvY2spOwor CisgICAgZm9yX2VhY2hfdmNwdSggKCpfdmVkKS0+ZCwgdiApCisgICAgeworICAgICAgICBpZiAo IGF0b21pY19yZWFkKCZ2LT52bV9ldmVudF9wYXVzZV9jb3VudCkgKQorICAgICAgICAgICAgdm1f ZXZlbnRfdmNwdV91bnBhdXNlKHYpOworICAgIH0KKworICAgIGZvciAoIGkgPSAwOyBpIDwgKCpf dmVkKS0+ZC0+bWF4X3ZjcHVzOyBpKysgKQorICAgICAgICBldnRjaG5fY2xvc2UoKCpfdmVkKS0+ ZCwgaW1wbC0+c2xvdHNbaV0ucG9ydCwgMCk7CisKKyAgICB2bV9ldmVudF9jaGFubmVsc19mcmVl X2J1ZmZlcihpbXBsKTsKKyAgICBzcGluX3VubG9jaygmKCpfdmVkKS0+bG9jayk7CisgICAgWEZS RUUoKl92ZWQpOworCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBib29sIHZtX2V2ZW50X2No YW5uZWxzX2NoZWNrKHN0cnVjdCB2bV9ldmVudF9kb21haW4gKnZlZCkKK3sKKyAgICByZXR1cm4g dG9fY2hhbm5lbHModmVkKS0+c2xvdHMgIT0gTlVMTDsKK30KKworc3RhdGljIHZvaWQgdm1fZXZl bnRfY2hhbm5lbHNfY2xlYW51cChzdHJ1Y3Qgdm1fZXZlbnRfZG9tYWluICoqX3ZlZCkKK3sKKyAg ICB2bV9ldmVudF9jaGFubmVsc19kZXN0cm95KF92ZWQpOworfQorCitzdGF0aWMgaW50IHZtX2V2 ZW50X2NoYW5uZWxzX2NsYWltX3Nsb3Qoc3RydWN0IHZtX2V2ZW50X2RvbWFpbiAqdmVkLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgYWxsb3dfc2xlZXApCit7 CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIHZtX2V2ZW50X2NoYW5uZWxzX2NhbmNl bF9zbG90KHN0cnVjdCB2bV9ldmVudF9kb21haW4gKnZlZCkKK3sKK30KKworc3RhdGljIHZvaWQg dm1fZXZlbnRfY2hhbm5lbHNfcHV0X3JlcXVlc3Qoc3RydWN0IHZtX2V2ZW50X2RvbWFpbiAqdmVk LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm1fZXZlbnRfcmVx dWVzdF90ICpyZXEpCit7CisgICAgc3RydWN0IHZtX2V2ZW50X2NoYW5uZWxzX2RvbWFpbiAqaW1w bCA9IHRvX2NoYW5uZWxzKHZlZCk7CisgICAgc3RydWN0IHZtX2V2ZW50X3Nsb3QgKnNsb3Q7CisK KyAgICAvKiBleGl0IGlmIHRoZSB2bV9ldmVudF9kb21haW4gd2FzIG5vdCBzcGVjaWZpY2FsbHkg ZW5hYmxlZCAqLworICAgIGlmICggIWltcGwtPmVuYWJsZWQgKQorICAgICAgICByZXR1cm47CisK KyAgICBBU1NFUlQoIHJlcS0+dmNwdV9pZCA+PSAwICYmIHJlcS0+dmNwdV9pZCA8IHZlZC0+ZC0+ bWF4X3ZjcHVzICk7CisKKyAgICBzbG90ID0gJmltcGwtPnNsb3RzW3JlcS0+dmNwdV9pZF07CisK KyAgICBpZiAoIGN1cnJlbnQtPmRvbWFpbiAhPSB2ZWQtPmQgKQorICAgIHsKKyAgICAgICAgcmVx LT5mbGFncyB8PSBWTV9FVkVOVF9GTEFHX0ZPUkVJR047CisjaWZuZGVmIE5ERUJVRworICAgICAg ICBpZiAoICEocmVxLT5mbGFncyAmIFZNX0VWRU5UX0ZMQUdfVkNQVV9QQVVTRUQpICkKKyAgICAg ICAgICAgIGdkcHJpbnRrKFhFTkxPR19HX1dBUk5JTkcsICJkJWR2JWQgd2FzIG5vdCBwYXVzZWQu XG4iLAorICAgICAgICAgICAgICAgICAgICAgdmVkLT5kLT5kb21haW5faWQsIHJlcS0+dmNwdV9p ZCk7CisjZW5kaWYKKyAgICB9CisKKyAgICByZXEtPnZlcnNpb24gPSBWTV9FVkVOVF9JTlRFUkZB Q0VfVkVSU0lPTjsKKworICAgIHNwaW5fbG9jaygmaW1wbC0+dmVkLmxvY2spOworICAgIGlmICgg c2xvdC0+c3RhdGUgIT0gU1RBVEVfVk1fRVZFTlRfU0xPVF9JRExFICkKKyAgICB7CisgICAgICAg IGdkcHJpbnRrKFhFTkxPR19HX1dBUk5JTkcsICJUaGUgVk0gZXZlbnQgc2xvdCBmb3IgZCVkdiVk IGlzIG5vdCBJRExFLlxuIiwKKyAgICAgICAgICAgICAgICAgaW1wbC0+dmVkLmQtPmRvbWFpbl9p ZCwgcmVxLT52Y3B1X2lkKTsKKyAgICAgICAgc3Bpbl91bmxvY2soJmltcGwtPnZlZC5sb2NrKTsK KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHNsb3QtPnUucmVxID0gKnJlcTsKKyAgICBz bG90LT5zdGF0ZSA9IFNUQVRFX1ZNX0VWRU5UX1NMT1RfU1VCTUlUOworICAgIHNwaW5fdW5sb2Nr KCZpbXBsLT52ZWQubG9jayk7CisgICAgbm90aWZ5X3ZpYV94ZW5fZXZlbnRfY2hhbm5lbChpbXBs LT52ZWQuZCwgc2xvdC0+cG9ydCk7Cit9CisKK3N0YXRpYyBpbnQgdm1fZXZlbnRfY2hhbm5lbHNf Z2V0X3Jlc3BvbnNlKHN0cnVjdCB2bV9ldmVudF9jaGFubmVsc19kb21haW4gKmltcGwsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdmNwdSAqdiwgdm1f ZXZlbnRfcmVzcG9uc2VfdCAqcnNwKQoreworICAgIHN0cnVjdCB2bV9ldmVudF9zbG90ICpzbG90 ID0gJmltcGwtPnNsb3RzW3YtPnZjcHVfaWRdOworCisgICAgQVNTRVJUKCBzbG90ICE9IE5VTEwg KTsKKyAgICBzcGluX2xvY2soJmltcGwtPnZlZC5sb2NrKTsKKworICAgIGlmICggc2xvdC0+c3Rh dGUgIT0gU1RBVEVfVk1fRVZFTlRfU0xPVF9GSU5JU0ggKQorICAgIHsKKyAgICAgICAgZ2Rwcmlu dGsoWEVOTE9HX0dfV0FSTklORywgIlRoZSBWTSBldmVudCBzbG90IHN0YXRlIGZvciBkJWR2JWQg aXMgaW52YWxpZC5cbiIsCisgICAgICAgICAgICAgICAgIGltcGwtPnZlZC5kLT5kb21haW5faWQs IHYtPnZjcHVfaWQpOworICAgICAgICBzcGluX3VubG9jaygmaW1wbC0+dmVkLmxvY2spOworICAg ICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgKnJzcCA9IHNsb3QtPnUucnNwOworICAgIHNs b3QtPnN0YXRlID0gU1RBVEVfVk1fRVZFTlRfU0xPVF9JRExFOworCisgICAgc3Bpbl91bmxvY2so JmltcGwtPnZlZC5sb2NrKTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludCB2bV9ldmVu dF9jaGFubmVsc19yZXN1bWUoc3RydWN0IHZtX2V2ZW50X2NoYW5uZWxzX2RvbWFpbiAqaW1wbCwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB2Y3B1ICp2KQorewor ICAgIHZtX2V2ZW50X3Jlc3BvbnNlX3QgcnNwOworCisgICAgaWYgKCB1bmxpa2VseSghaW1wbCB8 fCAhdm1fZXZlbnRfY2hlY2soJmltcGwtPnZlZCkpICkKKyAgICAgICAgIHJldHVybiAtRU5PREVW OworCisgICAgQVNTRVJUKGltcGwtPnZlZC5kICE9IGN1cnJlbnQtPmRvbWFpbik7CisKKyAgICBp ZiAoIHZtX2V2ZW50X2NoYW5uZWxzX2dldF9yZXNwb25zZShpbXBsLCB2LCAmcnNwKSB8fAorICAg ICAgICAgcnNwLnZlcnNpb24gIT0gVk1fRVZFTlRfSU5URVJGQUNFX1ZFUlNJT04gfHwKKyAgICAg ICAgIHJzcC52Y3B1X2lkICE9IHYtPnZjcHVfaWQgKQorICAgICAgICByZXR1cm4gLTE7CisKKyAg ICB2bV9ldmVudF9oYW5kbGVfcmVzcG9uc2UoaW1wbC0+dmVkLmQsIHYsICZyc3ApOworCisgICAg cmV0dXJuIDA7Cit9CisKKy8qIFJlZ2lzdGVyZWQgd2l0aCBYZW4tYm91bmQgZXZlbnQgY2hhbm5l bCBmb3IgaW5jb21pbmcgbm90aWZpY2F0aW9ucy4gKi8KK3N0YXRpYyB2b2lkIG1vbml0b3Jfbm90 aWZpY2F0aW9uKHN0cnVjdCB2Y3B1ICp2LCB1bnNpZ25lZCBpbnQgcG9ydCkKK3sKKyAgICB2bV9l dmVudF9jaGFubmVsc19yZXN1bWUodG9fY2hhbm5lbHModi0+ZG9tYWluLT52bV9ldmVudF9tb25p dG9yKSwgdik7Cit9CisKK2ludCB2bV9ldmVudF9uZ19kb21jdGwoc3RydWN0IGRvbWFpbiAqZCwg c3RydWN0IHhlbl9kb21jdGxfdm1fZXZlbnRfbmdfb3AgKnZlYywKKyAgICAgICAgICAgICAgICAg ICAgICAgWEVOX0dVRVNUX0hBTkRMRV9QQVJBTSh2b2lkKSB1X2RvbWN0bCkKK3sKKyAgICBpbnQg cmM7CisKKyAgICBpZiAoIHZlYy0+b3AgPT0gWEVOX1ZNX0VWRU5UX05HX0dFVF9WRVJTSU9OICkK KyAgICB7CisgICAgICAgIHZlYy0+dS52ZXJzaW9uID0gVk1fRVZFTlRfSU5URVJGQUNFX1ZFUlNJ T047CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIGlmICggdW5saWtlbHkoZCA9PSBO VUxMKSApCisgICAgICAgIHJldHVybiAtRVNSQ0g7CisKKyAgICByYyA9IHhzbV92bV9ldmVudF9j b250cm9sKFhTTV9QUklWLCBkLCB2ZWMtPnR5cGUsIHZlYy0+b3ApOworICAgIGlmICggcmMgKQor ICAgICAgICByZXR1cm4gcmM7CisKKyAgICBpZiAoIHVubGlrZWx5KGQgPT0gY3VycmVudC0+ZG9t YWluKSApIC8qIG5vIGRvbWFpbl9wYXVzZSgpICovCisgICAgeworICAgICAgICBnZHByaW50ayhY RU5MT0dfSU5GTywgIlRyaWVkIHRvIGRvIGEgbWVtb3J5IGV2ZW50IG9wIG9uIGl0c2VsZi5cbiIp OworICAgICAgICByZXR1cm4gLUVJTlZBTDsKKyAgICB9CisKKyAgICBpZiAoIHVubGlrZWx5KGQt PmlzX2R5aW5nKSApCisgICAgeworICAgICAgICBnZHByaW50ayhYRU5MT0dfSU5GTywgIklnbm9y aW5nIG1lbW9yeSBldmVudCBvcCBvbiBkeWluZyBkb21haW4gJXVcbiIsCisgICAgICAgICAgICAg ICAgIGQtPmRvbWFpbl9pZCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIGlmICgg dW5saWtlbHkoZC0+dmNwdSA9PSBOVUxMKSB8fCB1bmxpa2VseShkLT52Y3B1WzBdID09IE5VTEwp ICkKKyAgICB7CisgICAgICAgIGdkcHJpbnRrKFhFTkxPR19JTkZPLAorICAgICAgICAgICAgICAg ICAiTWVtb3J5IGV2ZW50IG9wIG9uIGEgZG9tYWluICgldSkgd2l0aCBubyB2Y3B1c1xuIiwKKyAg ICAgICAgICAgICAgICAgZC0+ZG9tYWluX2lkKTsKKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cisg ICAgfQorCisgICAgc3dpdGNoICggdmVjLT50eXBlICkKKyAgICB7CisgICAgY2FzZSBYRU5fVk1f RVZFTlRfVFlQRV9NT05JVE9SOgorICAgIHsKKyAgICAgICAgcmMgPSAtRUlOVkFMOworCisgICAg ICAgIHN3aXRjaCAoIHZlYy0+IG9wKQorICAgICAgICB7CisgICAgICAgIGNhc2UgWEVOX1ZNX0VW RU5UX05HX0NSRUFURToKKyAgICAgICAgICAgIC8qIGRvbWFpbl9wYXVzZSgpIG5vdCByZXF1aXJl ZCBoZXJlLCBzZWUgWFNBLTk5ICovCisgICAgICAgICAgICByYyA9IGFyY2hfbW9uaXRvcl9pbml0 X2RvbWFpbihkKTsKKyAgICAgICAgICAgIGlmICggcmMgKQorICAgICAgICAgICAgICAgIGJyZWFr OworICAgICAgICAgICAgcmMgPSB2bV9ldmVudF9jaGFubmVsc19jcmVhdGUoZCwgdmVjLCAmZC0+ dm1fZXZlbnRfbW9uaXRvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBf VlBGX21lbV9hY2Nlc3MsIG1vbml0b3Jfbm90aWZpY2F0aW9uKTsKKyAgICAgICAgICAgIGJyZWFr OworCisgICAgICAgIGNhc2UgWEVOX1ZNX0VWRU5UX05HX0RFU1RST1k6CisgICAgICAgICAgICBp ZiAoICF2bV9ldmVudF9jaGVjayhkLT52bV9ldmVudF9tb25pdG9yKSApCisgICAgICAgICAgICAg ICAgYnJlYWs7CisgICAgICAgICAgICBkb21haW5fcGF1c2UoZCk7CisgICAgICAgICAgICByYyA9 IHZtX2V2ZW50X2NoYW5uZWxzX2Rlc3Ryb3koJmQtPnZtX2V2ZW50X21vbml0b3IpOworICAgICAg ICAgICAgYXJjaF9tb25pdG9yX2NsZWFudXBfZG9tYWluKGQpOworICAgICAgICAgICAgZG9tYWlu X3VucGF1c2UoZCk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIFhFTl9WTV9F VkVOVF9OR19TRVRfU1RBVEU6CisgICAgICAgICAgICBpZiAoICF2bV9ldmVudF9jaGVjayhkLT52 bV9ldmVudF9tb25pdG9yKSApCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBk b21haW5fcGF1c2UoZCk7CisgICAgICAgICAgICB0b19jaGFubmVscyhkLT52bV9ldmVudF9tb25p dG9yKS0+ZW5hYmxlZCA9ICEhdmVjLT51LmVuYWJsZWQ7CisgICAgICAgICAgICBkb21haW5fdW5w YXVzZShkKTsKKyAgICAgICAgICAgIHJjID0gMDsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAg ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByYyA9IC1FTk9TWVM7CisgICAgICAgIH0KKyAgICAg ICAgYnJlYWs7CisgICAgfQorCisjaWZkZWYgQ09ORklHX0hBU19NRU1fUEFHSU5HCisgICAgY2Fz ZSBYRU5fVk1fRVZFTlRfVFlQRV9QQUdJTkc6CisjZW5kaWYKKworI2lmZGVmIENPTkZJR19IQVNf TUVNX1NIQVJJTkcKKyAgICBjYXNlIFhFTl9WTV9FVkVOVF9UWVBFX1NIQVJJTkc6CisjZW5kaWYK KworICAgIGRlZmF1bHQ6CisgICAgICAgIHJjID0gLUVOT1NZUzsKKyAgICB9CisKKyAgICByZXR1 cm4gcmM7Cit9CisKK2ludCB2bV9ldmVudF9uZ19nZXRfZnJhbWVzKHN0cnVjdCBkb21haW4gKmQs IHVuc2lnbmVkIGludCBpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxv bmcgZnJhbWUsIHVuc2lnbmVkIGludCBucl9mcmFtZXMsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICB4ZW5fcGZuX3QgbWZuX2xpc3RbXSkKK3sKKyAgICBzdHJ1Y3Qgdm1fZXZlbnRfZG9tYWlu ICp2ZWQ7CisgICAgaW50IGk7CisKKyAgICBzd2l0Y2ggKGlkICkKKyAgICB7CisgICAgY2FzZSBY RU5fVk1fRVZFTlRfVFlQRV9NT05JVE9SOgorICAgICAgICB2ZWQgPSBkLT52bV9ldmVudF9tb25p dG9yOworICAgICAgICBicmVhazsKKworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiAtRU5P U1lTOworICAgIH0KKworICAgIGlmICggIXZtX2V2ZW50X2NoZWNrKHZlZCkgKQorICAgICAgICBy ZXR1cm4gLUVJTlZBTDsKKworICAgIGlmICggZnJhbWUgIT0gMCB8fCBucl9mcmFtZXMgIT0gdG9f Y2hhbm5lbHModmVkKS0+bnJfZnJhbWVzICkKKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisKKyAg ICBzcGluX2xvY2soJnZlZC0+bG9jayk7CisKKyAgICBmb3IgKCBpID0gMDsgaSA8IHRvX2NoYW5u ZWxzKHZlZCktPm5yX2ZyYW1lczsgaSsrICkKKyAgICAgICAgbWZuX2xpc3RbaV0gPSBtZm5feCh0 b19jaGFubmVscyh2ZWQpLT5tZm5baV0pOworCisgICAgc3Bpbl91bmxvY2soJnZlZC0+bG9jayk7 CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgdm1fZXZlbnRfb3BzIHZt X2V2ZW50X2NoYW5uZWxzX29wcyA9IHsKKyAgICAuY2hlY2sgPSB2bV9ldmVudF9jaGFubmVsc19j aGVjaywKKyAgICAuY2xlYW51cCA9IHZtX2V2ZW50X2NoYW5uZWxzX2NsZWFudXAsCisgICAgLmNs YWltX3Nsb3QgPSB2bV9ldmVudF9jaGFubmVsc19jbGFpbV9zbG90LAorICAgIC5jYW5jZWxfc2xv dCA9IHZtX2V2ZW50X2NoYW5uZWxzX2NhbmNlbF9zbG90LAorICAgIC5wdXRfcmVxdWVzdCA9IHZt X2V2ZW50X2NoYW5uZWxzX3B1dF9yZXF1ZXN0Cit9OworCisvKgorICogTG9jYWwgdmFyaWFibGVz OgorICogbW9kZTogQworICogYy1maWxlLXN0eWxlOiAiQlNEIgorICogYy1iYXNpYy1vZmZzZXQ6 IDQKKyAqIHRhYi13aWR0aDogNAorICogaW5kZW50LXRhYnMtbW9kZTogbmlsCisgKiBFbmQ6Cisg Ki8KZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3B1YmxpYy9kb21jdGwuaCBiL3hlbi9pbmNsdWRl L3B1YmxpYy9kb21jdGwuaAppbmRleCAxOTI4MWZhLi5mZjhiNjgwIDEwMDY0NAotLS0gYS94ZW4v aW5jbHVkZS9wdWJsaWMvZG9tY3RsLmgKKysrIGIveGVuL2luY2x1ZGUvcHVibGljL2RvbWN0bC5o CkBAIC03OTIsNiArNzkyLDI0IEBAIHN0cnVjdCB4ZW5fZG9tY3RsX3ZtX2V2ZW50X29wIHsKIH07 CiAKIC8qCisgKiBYRU5fRE9NQ1RMX3ZtX2V2ZW50X25nX29wLgorICogTmV4dCBHZW5lcmF0aW9u IHZtX2V2ZW50IG9wZXJhdGlvbnMuCisgKi8KKyNkZWZpbmUgWEVOX1ZNX0VWRU5UX05HX0NSRUFU RSAgICAgICAgICAgIDAKKyNkZWZpbmUgWEVOX1ZNX0VWRU5UX05HX0RFU1RST1kgICAgICAgICAg IDEKKyNkZWZpbmUgWEVOX1ZNX0VWRU5UX05HX1NFVF9TVEFURSAgICAgICAgIDIKKyNkZWZpbmUg WEVOX1ZNX0VWRU5UX05HX0dFVF9WRVJTSU9OICAgICAgIDMKKworc3RydWN0IHhlbl9kb21jdGxf dm1fZXZlbnRfbmdfb3AgeworICAgIHVpbnQzMl90ICAgICAgICBvcDsgICAgICAgICAgICAgLyog WEVOX1ZNX0VWRU5UX05HXyogKi8KKyAgICB1aW50MzJfdCAgICAgICAgdHlwZTsgICAgICAgICAg IC8qIFhFTl9WTV9FVkVOVF9UWVBFXyogKi8KKyAgICB1bmlvbiB7CisgICAgICAgIHVpbnQzMl90 IHZlcnNpb247ICAgICAgICAgICAvKiBPVVQ6IHZlcnNpb24gbnVtYmVyICovCisgICAgICAgIHVp bnQ4X3QgIGVuYWJsZWQ7ICAgICAgICAgICAvKiBJTjogc3RhdGUgKi8KKyAgICB9IHU7Cit9Owor CisvKgogICogTWVtb3J5IHNoYXJpbmcgb3BlcmF0aW9ucwogICovCiAvKiBYRU5fRE9NQ1RMX21l bV9zaGFyaW5nX29wLgpAQCAtMTE0Miw2ICsxMTYwLDcgQEAgc3RydWN0IHhlbl9kb21jdGwgewog LyogI2RlZmluZSBYRU5fRE9NQ1RMX3NldF9nbnR0YWJfbGltaXRzICAgICAgICAgIDgwIC0gTW92 ZWQgaW50byBYRU5fRE9NQ1RMX2NyZWF0ZWRvbWFpbiAqLwogI2RlZmluZSBYRU5fRE9NQ1RMX3Z1 YXJ0X29wICAgICAgICAgICAgICAgICAgICAgIDgxCiAjZGVmaW5lIFhFTl9ET01DVExfZ2V0X2Nw dV9wb2xpY3kgICAgICAgICAgICAgICAgODIKKyNkZWZpbmUgWEVOX0RPTUNUTF92bV9ldmVudF9u Z19vcCAgICAgICAgICAgICAgICA4MwogI2RlZmluZSBYRU5fRE9NQ1RMX2dkYnN4X2d1ZXN0bWVt aW8gICAgICAgICAgICAxMDAwCiAjZGVmaW5lIFhFTl9ET01DVExfZ2Ric3hfcGF1c2V2Y3B1ICAg ICAgICAgICAgIDEwMDEKICNkZWZpbmUgWEVOX0RPTUNUTF9nZGJzeF91bnBhdXNldmNwdSAgICAg ICAgICAgMTAwMgpAQCAtMTE4Myw2ICsxMjAyLDcgQEAgc3RydWN0IHhlbl9kb21jdGwgewogICAg ICAgICBzdHJ1Y3QgeGVuX2RvbWN0bF9zdWJzY3JpYmUgICAgICAgICBzdWJzY3JpYmU7CiAgICAg ICAgIHN0cnVjdCB4ZW5fZG9tY3RsX2RlYnVnX29wICAgICAgICAgIGRlYnVnX29wOwogICAgICAg ICBzdHJ1Y3QgeGVuX2RvbWN0bF92bV9ldmVudF9vcCAgICAgICB2bV9ldmVudF9vcDsKKyAgICAg ICAgc3RydWN0IHhlbl9kb21jdGxfdm1fZXZlbnRfbmdfb3AgICAgdm1fZXZlbnRfbmdfb3A7CiAg ICAgICAgIHN0cnVjdCB4ZW5fZG9tY3RsX21lbV9zaGFyaW5nX29wICAgIG1lbV9zaGFyaW5nX29w OwogI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykKICAgICAgICAg c3RydWN0IHhlbl9kb21jdGxfY3B1aWQgICAgICAgICAgICAgY3B1aWQ7CmRpZmYgLS1naXQgYS94 ZW4vaW5jbHVkZS9wdWJsaWMvbWVtb3J5LmggYi94ZW4vaW5jbHVkZS9wdWJsaWMvbWVtb3J5LmgK aW5kZXggNjhkZGFkYi4uMmU4OTEyZSAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvcHVibGljL21l bW9yeS5oCisrKyBiL3hlbi9pbmNsdWRlL3B1YmxpYy9tZW1vcnkuaApAQCAtNjEyLDYgKzYxMiw3 IEBAIHN0cnVjdCB4ZW5fbWVtX2FjcXVpcmVfcmVzb3VyY2UgewogCiAjZGVmaW5lIFhFTk1FTV9y ZXNvdXJjZV9pb3JlcV9zZXJ2ZXIgMAogI2RlZmluZSBYRU5NRU1fcmVzb3VyY2VfZ3JhbnRfdGFi bGUgMQorI2RlZmluZSBYRU5NRU1fcmVzb3VyY2Vfdm1fZXZlbnQgMgogCiAgICAgLyoKICAgICAg KiBJTiAtIGEgdHlwZS1zcGVjaWZpYyByZXNvdXJjZSBpZGVudGlmaWVyLCB3aGljaCBtdXN0IGJl IHplcm8KQEAgLTYxOSw2ICs2MjAsNyBAQCBzdHJ1Y3QgeGVuX21lbV9hY3F1aXJlX3Jlc291cmNl IHsKICAgICAgKgogICAgICAqIHR5cGUgPT0gWEVOTUVNX3Jlc291cmNlX2lvcmVxX3NlcnZlciAt PiBpZCA9PSBpb3JlcSBzZXJ2ZXIgaWQKICAgICAgKiB0eXBlID09IFhFTk1FTV9yZXNvdXJjZV9n cmFudF90YWJsZSAtPiBpZCBkZWZpbmVkIGJlbG93CisgICAgICogdHlwZSA9PSBYRU5NRU1fcmVz b3VyY2Vfdm1fZXZlbnQgLT4gaWQgPT0gdm1fZXZlbnQgdHlwZQogICAgICAqLwogICAgIHVpbnQz Ml90IGlkOwogCmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9wdWJsaWMvdm1fZXZlbnQuaCBiL3hl bi9pbmNsdWRlL3B1YmxpYy92bV9ldmVudC5oCmluZGV4IGM0OGJjMjEuLjJmMjE2MGIgMTAwNjQ0 Ci0tLSBhL3hlbi9pbmNsdWRlL3B1YmxpYy92bV9ldmVudC5oCisrKyBiL3hlbi9pbmNsdWRlL3B1 YmxpYy92bV9ldmVudC5oCkBAIC00MjEsNiArNDIxLDIyIEBAIHR5cGVkZWYgc3RydWN0IHZtX2V2 ZW50X3N0IHsKIAogREVGSU5FX1JJTkdfVFlQRVModm1fZXZlbnQsIHZtX2V2ZW50X3JlcXVlc3Rf dCwgdm1fZXZlbnRfcmVzcG9uc2VfdCk7CiAKKy8qIFZNIEV2ZW50IHNsb3Qgc3RhdGUgKi8KKyNk ZWZpbmUgU1RBVEVfVk1fRVZFTlRfU0xPVF9JRExFICAgICAwIC8qIHRoZSBzbG90IGRhdGEgaXMg aW52YWxpZCAqLworI2RlZmluZSBTVEFURV9WTV9FVkVOVF9TTE9UX1NVQk1JVCAgIDEgLyogYSBy ZXF1ZXN0IHdhcyBzdWJtaXR0ZWQgKi8KKyNkZWZpbmUgU1RBVEVfVk1fRVZFTlRfU0xPVF9GSU5J U0ggICAyIC8qIGEgcmVzcG9uc2Ugd2FzIGlzc3VlZCAqLworCitzdHJ1Y3Qgdm1fZXZlbnRfc2xv dAoreworICAgIHVpbnQzMl90IHBvcnQ7ICAgICAgLyogZXZ0Y2huIGZvciBub3RpZmljYXRpb25z IHRvL2Zyb20gaGVscGVyICovCisgICAgdWludDMyX3Qgc3RhdGU6NDsKKyAgICB1aW50MzJfdCBw YWQ6Mjg7CisgICAgdW5pb24geworICAgICAgICB2bV9ldmVudF9yZXF1ZXN0X3QgcmVxOworICAg ICAgICB2bV9ldmVudF9yZXNwb25zZV90IHJzcDsKKyAgICB9IHU7Cit9OworCiAjZW5kaWYgLyog ZGVmaW5lZChfX1hFTl9fKSB8fCBkZWZpbmVkKF9fWEVOX1RPT0xTX18pICovCiAjZW5kaWYgLyog X1hFTl9QVUJMSUNfVk1fRVZFTlRfSCAqLwogCmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS94ZW4v dm1fZXZlbnQuaCBiL3hlbi9pbmNsdWRlL3hlbi92bV9ldmVudC5oCmluZGV4IDE1YzE1ZTYuLmRm MGFhZmMgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL3hlbi92bV9ldmVudC5oCisrKyBiL3hlbi9p bmNsdWRlL3hlbi92bV9ldmVudC5oCkBAIC0xMTAsNiArMTEwLDEzIEBAIHN0YXRpYyBpbmxpbmUg dm9pZCB2bV9ldmVudF9wdXRfcmVxdWVzdChzdHJ1Y3Qgdm1fZXZlbnRfZG9tYWluICp2ZWQsCiBp bnQgdm1fZXZlbnRfZG9tY3RsKHN0cnVjdCBkb21haW4gKmQsIHN0cnVjdCB4ZW5fZG9tY3RsX3Zt X2V2ZW50X29wICp2ZWMsCiAgICAgICAgICAgICAgICAgICAgIFhFTl9HVUVTVF9IQU5ETEVfUEFS QU0odm9pZCkgdV9kb21jdGwpOwogCitpbnQgdm1fZXZlbnRfbmdfZG9tY3RsKHN0cnVjdCBkb21h aW4gKmQsIHN0cnVjdCB4ZW5fZG9tY3RsX3ZtX2V2ZW50X25nX29wICp2ZWMsCisgICAgICAgICAg ICAgICAgICAgICAgIFhFTl9HVUVTVF9IQU5ETEVfUEFSQU0odm9pZCkgdV9kb21jdGwpOworCitp bnQgdm1fZXZlbnRfbmdfZ2V0X2ZyYW1lcyhzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBpbnQg aWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGZyYW1lLCB1bnNp Z25lZCBpbnQgbnJfZnJhbWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgeGVuX3Bmbl90 IG1mbl9saXN0W10pOworCiB2b2lkIHZtX2V2ZW50X3ZjcHVfcGF1c2Uoc3RydWN0IHZjcHUgKnYp Owogdm9pZCB2bV9ldmVudF92Y3B1X3VucGF1c2Uoc3RydWN0IHZjcHUgKnYpOwogCkBAIC0xMTgs NiArMTI1LDkgQEAgdm9pZCB2bV9ldmVudF9zZXRfcmVnaXN0ZXJzKHN0cnVjdCB2Y3B1ICp2LCB2 bV9ldmVudF9yZXNwb25zZV90ICpyc3ApOwogCiB2b2lkIHZtX2V2ZW50X21vbml0b3JfbmV4dF9p bnRlcnJ1cHQoc3RydWN0IHZjcHUgKnYpOwogCit2b2lkIHZtX2V2ZW50X2hhbmRsZV9yZXNwb25z ZShzdHJ1Y3QgZG9tYWluICpkLCBzdHJ1Y3QgdmNwdSAqdiwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHZtX2V2ZW50X3Jlc3BvbnNlX3QgKnJzcCk7CisKICNlbmRpZiAvKiBfX1ZNX0VW RU5UX0hfXyAqLwogCiAvKgotLSAKMi43LjQKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0 cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlz dGluZm8veGVuLWRldmVs