From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: [PATCH v8 09/25] xsplice: Implement payload loading Date: Wed, 13 Apr 2016 17:09:40 -0400 Message-ID: <1460581796-30071-10-git-send-email-konrad.wilk@oracle.com> References: <1460581796-30071-1-git-send-email-konrad.wilk@oracle.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta3.messagelabs.com ([195.245.230.39]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1aqS4L-0007gD-2K for xen-devel@lists.xenproject.org; Wed, 13 Apr 2016 21:11:25 +0000 In-Reply-To: <1460581796-30071-1-git-send-email-konrad.wilk@oracle.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: konrad@kernel.org, xen-devel@lists.xenproject.org, sasha.levin@oracle.com, andrew.cooper3@citrix.com, ross.lagerwall@citrix.com, mpohlack@amazon.de Cc: Julien Grall , Stefano Stabellini , Keir Fraser , Jan Beulich , Konrad Rzeszutek Wilk List-Id: xen-devel@lists.xenproject.org RnJvbTogUm9zcyBMYWdlcndhbGwgPHJvc3MubGFnZXJ3YWxsQGNpdHJpeC5jb20+CgpBZGQgc3Vw cG9ydCBmb3IgbG9hZGluZyB4c3BsaWNlIHBheWxvYWRzLiBUaGlzIGlzIHNvbWV3aGF0IHNpbWls YXIgdG8KdGhlIExpbnV4IGtlcm5lbCBtb2R1bGUgbG9hZGVyLCBpbXBsZW1lbnRpbmcgdGhlIGZv bGxvd2luZyBzdGVwczoKLSBWZXJpZnkgdGhlIGVsZiBmaWxlLgotIFBhcnNlIHRoZSBlbGYgZmls ZS4KLSBBbGxvY2F0ZSBhIHJlZ2lvbiBvZiBtZW1vcnkgbWFwcGVkIHdpdGhpbiBhIGZyZWUgYXJl YSBvZgogIFt4ZW5fdmlydF9lbmQsIFhFTl9WSVJUX0VORF0uCi0gQ29weSBhbGxvY2F0ZWQgc2Vj dGlvbnMgaW50byB0aGUgbmV3IHJlZ2lvbi4gU3BsaXQgdGhlbSBpbiB0aHJlZQogIHJlZ2lvbnMg LSAudGV4dCwgLmRhdGEsIGFuZCAucm9kYXRhLiBNVVNUIGhhdmUgYXQgbGVhc3QgLnRleHQuCi0g UmVzb2x2ZSBzZWN0aW9uIHN5bWJvbHMuIEFsbCBvdGhlciBzeW1ib2xzIG11c3QgYmUgYWJzb2x1 dGUgYWRkcmVzc2VzLgogIChOb3RlIHRoYXQgcGF0Y2ggdGl0bGVkICJ4c3BsaWNlLHN5bWJvbHM6 IEltcGxlbWVudCBzeW1ib2wgbmFtZSByZXNvbHV0aW9uCiAgIG9uIGFkZHJlc3MiIGltcGxlbWVu dHMgdGhhdCkKLSBQZXJmb3JtIHJlbG9jYXRpb25zLgotIFNlY3VyZSB0aGUgdGhlIHJlZ2lvbnMg KC50ZXh0LC5kYXRhLC5yb2RhdGEpIHdpdGggcHJvcGVyIHBlcm1pc3Npb25zLgoKV2UgY2FwaXRh bGl6ZSBvbiB0aGUgdm1hbGxvYyBjYWxsYmFjayBBUEkgKHNlZSBwYXRjaCB0aXRsZWQ6CiJybS94 ODYvdm1hcDogQWRkIHZtYWxsb2NfeGVuLCB2ZnJlZV94ZW4gYW5kIHZtX2luaXRfdHlwZSIpIHRv IGFsbG9jYXRlCmEgcmVnaW9uIG9mIG1lbW9yeSB3aXRoaW4gdGhlIFt4ZW5fdmlydF9lbmQsIFhF Tl9WSVJUX0VORF0gZm9yIHRoZSBjb2RlLgoKV2UgYWxzbyB1c2UgdGhlICJ4ODYvbW06IEludHJv ZHVjZSBtb2RpZnlfeGVuX21hcHBpbmdzKCkiCnRvIGNoYW5nZSB0aGUgdmlydHVhbCBhZGRyZXNz IHBhZ2UtdGFibGUgcGVybWlzc2lvbnMuCgpTaWduZWQtb2ZmLWJ5OiBSb3NzIExhZ2Vyd2FsbCA8 cm9zcy5sYWdlcndhbGxAY2l0cml4LmNvbT4KU2lnbmVkLW9mZi1ieTogS29ucmFkIFJ6ZXN6dXRl ayBXaWxrIDxrb25yYWQud2lsa0BvcmFjbGUuY29tPgpSZXZpZXdlZC1ieTogQW5kcmV3IENvb3Bl ciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KQWNrZWQtYnk6IEp1bGllbiBHcmFsbCA8anVs aWVuLmdyYWxsQGFybS5jb20+CgotLS0KQ2M6IFN0ZWZhbm8gU3RhYmVsbGluaSA8c3N0YWJlbGxp bmlAa2VybmVsLm9yZz4KQ2M6IEp1bGllbiBHcmFsbCA8anVsaWVuLmdyYWxsQGFybS5jb20+CkNj OiBLZWlyIEZyYXNlciA8a2VpckB4ZW4ub3JnPgpDYzogSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1 c2UuY29tPgpDYzogQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KCnYy OiAtIENoYW5nZSB0aGUgJ3hzcGxpY2VfcGF0Y2hfZnVuYycgc3RydWN0dXJlIGxheW91dC9zaXpl LgogICAgLSBBZGQgbW9yZSBlcnJvciBjaGVja2luZy4gRml4IG1lbW9yeSBsZWFrLgogICAgLSBN b3ZlIGVsZl9yZXNvbHZlIGFuZCBlbGZfcGVyZm9ybSByZWxvY3MgaW4gZWxmIGZpbGUuCiAgICAt IFByaW50IHRoZSBwYXlsb2FkIGFkZHJlc3MgYW5kIHBhZ2VzIGluIGtleWhhbmRsZXIuCnYzOgog ICAgLSBNYWtlIGl0IGJ1aWxkIHVuZGVyIEFSTQogICAgLSBCdWlsZCBpdCB3aXRob3V0IHVzaW5n IHRoZSByZXR1cm5fIG1hY3JvLgogICAgLSBBZGQgZml4ZXMgZnJvbSBSb3NzLgogICAgLSBBZGQg dGhlIF9yZXR1cm4gbWFjcm8gYmFjayAtIGJ1dCBvbmx5IHVzZSBpdCBkdXJpbmcgZGVidWcgYnVp bGRzLgogICAgLSBSZW1vdmUgdGhlIG1hY3JvLCBwcmVmaXggYXJjaF8gb24gYXJjaCBzcGVjaWZp YyBjYWxscy4KdjQ6CiAgICAtIE1vdmUgYWxsb2NfcGF5bG9hZCB0byBhcmNoIHNwZWNpZmljIGZp bGUuCiAgICAtIFVzZSB2b2lkKiBpbnN0ZWFkIG9mIHVpbnQ4X3QsIHVzZSBjb25zdAogICAgLSBB ZGQgY29weXJpZ2h0cwogICAgLSBVbnJvbGwgdGhlIHZtYXAgY29kZSB0byBhZGQgQVNTRVJULiBD aGFuZ2Ugd2hpbGUgdG8gbm90IGluY3VyCiAgICAgIHBvdGVudGlhbCBsb25nIGVycm9yIGxvb3AK ICAgLSBVc2Ugdm1hbGxvYy92ZnJlZSBjYiBBUElzCiAgIC0gU2VjdXJlIC50ZXh0IHBhZ2VzIHRv IGJlIFJYIGluc3RlYWQgb2YgUldYLgp2NToKICAtIEZpeCBhbGxvY2F0aW9uIG9mIHZpcnR1YWwg YWRkcmVzc2VzIG9ubHkgYWxsb3dpbmcgb25lIHBhZ2UgdG8gYmUgYWxsb2NhdGVkLgogIC0gQ3Jl YXRlIC50ZXh0LCAuZGF0YSwgYW5kIC5yb2RhdGEgcmVnaW9ucyB3aXRoIGRpZmZlcmVudCBwZXJt aXNzaW9ucy4KICAtIE1ha2UgdGhlIGZpbmRfc3BhY2VfdCBub3QgYSB0eXBlZGVmIHRvIHBvaW50 ZXIgdG8gYSBmdW5jdGlvbi4KICAtIEFsbG9jYXRlIG1lbW9yeSBpbiBoZXJlLgp2NjogRHJvcCBw YXJlbnRoZXNlcyBvbiB0eXBlZGVmcy4KICAtIHMvYW4geFNwbGljZS9hIHhTcGxpY2UvCiAgLSBS ZWJhc2Ugb24gInZtYXA6IEFkZCB2bWFsbG9jX2NiIgogIC0gUmViYXNlIG9uICJ2bWFwOiBBZGQg dm1hbGxvY190eXBlIGFuZCB2bV9pbml0X3R5cGUiCiAgLSBzL3VpbnQ4X3Qvdm9pZC8gb24gbG9h ZF9hZGRyCiAgLSBTZXQgeHNwbGljZV9lbGYgb24gc3RhY2sgd2l0aG91dCB1c2luZyBtZW1zZXQu CnY3OgogIC0gQ2hhbmdlZCB0aGUgY2hlY2sgb24gZGVsdGEgPSBlbGYtPmhkci0+ZV9zaG9mZiAr IGVsZi0+aGRyLT5lX3NobnVtICogZWxmLT5oZHItPmVfc2hlbnRzaXplOwogICAgVGhlIHNlY3Rp b25zIGNhbiBiZSByaWdodCBhdCB0aGUgYmFjayBvZiB0aGUgZmlsZSAoZGlmZmVyZW50IGxpbmtl ciEpLCBzbyB0aGUgZmFpbGluZyBjb25kaXRpb25hbAogICAgZm9yICdpZiAoZGVsdGEgPj0gZWxm LT5sZW4pJyBpcyBpbmNvcnJlY3QgYW5kIHNob3VsZCBoYXZlIGJlZW4gJz4nLgogIC0gQ2hhbmdl ZCBkcHJpbnRrKFhFTkxPR19ERUJVRyB0byBYRU5MT0dfRVJSLCB0aGVuIGJhY2sgdG8gREVCVUcu IENvbnZlcnRlZAogICAgc29tZSBvZiB0aGUgcHJpbnRrIHRvIGRwcmludGsuCiAgLSBSZWJhc2Ug b24gIiBhcm0veDg2L3ZtYXA6IEFkZCB2bWFsbG9jX3hlbiwgdmZyZWVfeGVuIGFuZCB2bV9pbml0 X3R5cGUiCiAgLSBDaGFuZ2VkIHNvbWUgb2YgdGhlIHByaW50ayBYRU5MT0dfRVJSIHRvIFhFTkxP R19ERUJVRwogIC0gQ2hlY2sgdGhlIGlkeCBpbiB0aGUgcmVsb2NhdGlvbiB0byBtYWtlIHN1cmUg aXQgaXMgd2l0aGluIGJvdW5kcyBhbmQKICAgIGltcGxlbWVudGVkLgogIC0gVXNlICJ4ODYvbW06 IEludHJvZHVjZSBtb2RpZnlfeGVuX21hcHBpbmdzKCkiCiAgLSBJbnRyb2R1Y2UgUFJJeEVsZkFk ZHIKICAtIENoZWNrIGZvciBvdmVyZmxvdyBpbiBSX1g4Nl82NF9QQzMyCiAgLSBSZXR1cm4gLUVP UE5PVFNVUFAgaWYgd2UgZG9uJ3Qgc3VwcG9ydCB0eXBlcyBpbiBFTEY2NF9SX1RZUEUKdjg6CiAg LSBDaGFuZ2UgZHByaW50ayBhbmQgcHJpbnRrIFhFTkxPR19ERUJVRyB0byBYRU5MT0dfRVJSCiAg LSBDb252ZXJ0IGZvdXIgb2YgdGhlIHByaW50a3MgaW4gZHByaW50ay4KLS0tCi0tLQogeGVuL2Fy Y2gvYXJtL01ha2VmaWxlICAgICAgICAgfCAgIDEgKwogeGVuL2FyY2gvYXJtL3hzcGxpY2UuYyAg ICAgICAgfCAgNTQgKysrKysrKysrKwogeGVuL2FyY2gveDg2L01ha2VmaWxlICAgICAgICAgfCAg IDEgKwogeGVuL2FyY2gveDg2L3hzcGxpY2UuYyAgICAgICAgfCAxODggKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysKIHhlbi9jb21tb24veHNwbGljZS5jICAgICAgICAgIHwgMjI2 ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLQogeGVuL2NvbW1vbi94 c3BsaWNlX2VsZi5jICAgICAgfCAxMjQgKysrKysrKysrKysrKysrKysrKysrKy0KIHhlbi9pbmNs dWRlL3hlbi9lbGZzdHJ1Y3RzLmggIHwgICA0ICsKIHhlbi9pbmNsdWRlL3hlbi94c3BsaWNlLmgg ICAgIHwgIDI5ICsrKysrKwogeGVuL2luY2x1ZGUveGVuL3hzcGxpY2VfZWxmLmggfCAgIDkgKy0K IDkgZmlsZXMgY2hhbmdlZCwgNjMxIGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCiBjcmVh dGUgbW9kZSAxMDA2NDQgeGVuL2FyY2gvYXJtL3hzcGxpY2UuYwogY3JlYXRlIG1vZGUgMTAwNjQ0 IHhlbi9hcmNoL3g4Ni94c3BsaWNlLmMKCmRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vTWFrZWZp bGUgYi94ZW4vYXJjaC9hcm0vTWFrZWZpbGUKaW5kZXggMDMyOGI1MC4uZWFlNWNiMyAxMDA2NDQK LS0tIGEveGVuL2FyY2gvYXJtL01ha2VmaWxlCisrKyBiL3hlbi9hcmNoL2FybS9NYWtlZmlsZQpA QCAtNDAsNiArNDAsNyBAQCBvYmoteSArPSBkZXZpY2Uubwogb2JqLXkgKz0gZGVjb2RlLm8KIG9i ai15ICs9IHByb2Nlc3Nvci5vCiBvYmoteSArPSBzbWMubworb2JqLSQoQ09ORklHX1hTUExJQ0Up ICs9IHhzcGxpY2UubwogCiAjb2JqLWJpbi15ICs9IC4uLi5vCiAKZGlmZiAtLWdpdCBhL3hlbi9h cmNoL2FybS94c3BsaWNlLmMgYi94ZW4vYXJjaC9hcm0veHNwbGljZS5jCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ0NjUyNDQKLS0tIC9kZXYvbnVsbAorKysgYi94ZW4vYXJj aC9hcm0veHNwbGljZS5jCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAy MDE2IENpdHJpeCBTeXN0ZW1zIFImRCBMdGQuCisgKi8KKyNpbmNsdWRlIDx4ZW4vbGliLmg+Cisj aW5jbHVkZSA8eGVuL2Vycm5vLmg+CisjaW5jbHVkZSA8eGVuL3hzcGxpY2VfZWxmLmg+CisjaW5j bHVkZSA8eGVuL3hzcGxpY2UuaD4KKworaW50IGFyY2hfeHNwbGljZV92ZXJpZnlfZWxmKGNvbnN0 IHN0cnVjdCB4c3BsaWNlX2VsZiAqZWxmKQoreworICAgIHJldHVybiAtRU5PU1lTOworfQorCitp bnQgYXJjaF94c3BsaWNlX3BlcmZvcm1fcmVsKHN0cnVjdCB4c3BsaWNlX2VsZiAqZWxmLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgeHNwbGljZV9lbGZfc2VjICpi YXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgeHNwbGljZV9l bGZfc2VjICpyZWxhKQoreworICAgIHJldHVybiAtRU5PU1lTOworfQorCitpbnQgYXJjaF94c3Bs aWNlX3BlcmZvcm1fcmVsYShzdHJ1Y3QgeHNwbGljZV9lbGYgKmVsZiwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCB4c3BsaWNlX2VsZl9zZWMgKmJhc2UsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgeHNwbGljZV9lbGZfc2VjICpy ZWxhKQoreworICAgIHJldHVybiAtRU5PU1lTOworfQorCit2b2lkICphcmNoX3hzcGxpY2VfYWxs b2NfcGF5bG9hZCh1bnNpZ25lZCBpbnQgcGFnZXMpCit7CisgICAgcmV0dXJuIE5VTEw7Cit9CisK K2ludCBhcmNoX3hzcGxpY2Vfc2VjdXJlKHZvaWQgKnZhLCB1bnNpZ25lZCBpbnQgcGFnZXMsIGVu dW0gdmFfdHlwZSB0eXBlKQoreworICAgIHJldHVybiAtRU5PU1lTOworfQorCit2b2lkIGFyY2hf eHNwbGljZV9mcmVlX3BheWxvYWQodm9pZCAqdmEpCit7Cit9CisKK3ZvaWQgYXJjaF94c3BsaWNl X2luaXQodm9pZCkKK3sKK30KKworLyoKKyAqIExvY2FsIHZhcmlhYmxlczoKKyAqIG1vZGU6IEMK KyAqIGMtZmlsZS1zdHlsZTogIkJTRCIKKyAqIGMtYmFzaWMtb2Zmc2V0OiA0CisgKiB0YWItd2lk dGg6IDQKKyAqIGluZGVudC10YWJzLW1vZGU6IG5pbAorICogRW5kOgorICovCmRpZmYgLS1naXQg YS94ZW4vYXJjaC94ODYvTWFrZWZpbGUgYi94ZW4vYXJjaC94ODYvTWFrZWZpbGUKaW5kZXggNzI5 MDY1Yi4uOGE2YTdkNSAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L01ha2VmaWxlCisrKyBiL3hl bi9hcmNoL3g4Ni9NYWtlZmlsZQpAQCAtNjQsNiArNjQsNyBAQCBvYmoteSArPSB2bV9ldmVudC5v CiBvYmoteSArPSB4c3RhdGUubwogCiBvYmotJChjcmFzaF9kZWJ1ZykgKz0gZ2Ric3R1Yi5vCitv YmotJChDT05GSUdfWFNQTElDRSkgKz0geHNwbGljZS5vCiAKIHg4Nl9lbXVsYXRlLm86IHg4Nl9l bXVsYXRlL3g4Nl9lbXVsYXRlLmMgeDg2X2VtdWxhdGUveDg2X2VtdWxhdGUuaAogCmRpZmYgLS1n aXQgYS94ZW4vYXJjaC94ODYveHNwbGljZS5jIGIveGVuL2FyY2gveDg2L3hzcGxpY2UuYwpuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMDAwZWNiCi0tLSAvZGV2L251bGwKKysr IGIveGVuL2FyY2gveDg2L3hzcGxpY2UuYwpAQCAtMCwwICsxLDE4OCBAQAorLyoKKyAqIENvcHly aWdodCAoQykgMjAxNiBDaXRyaXggU3lzdGVtcyBSJkQgTHRkLgorICovCisKKyNpbmNsdWRlIDx4 ZW4vZXJybm8uaD4KKyNpbmNsdWRlIDx4ZW4vbGliLmg+CisjaW5jbHVkZSA8eGVuL21tLmg+Cisj aW5jbHVkZSA8eGVuL3Bmbi5oPgorI2luY2x1ZGUgPHhlbi92bWFwLmg+CisjaW5jbHVkZSA8eGVu L3hzcGxpY2VfZWxmLmg+CisjaW5jbHVkZSA8eGVuL3hzcGxpY2UuaD4KKworaW50IGFyY2hfeHNw bGljZV92ZXJpZnlfZWxmKGNvbnN0IHN0cnVjdCB4c3BsaWNlX2VsZiAqZWxmKQoreworCisgICAg Y29uc3QgRWxmX0VoZHIgKmhkciA9IGVsZi0+aGRyOworCisgICAgaWYgKCBoZHItPmVfbWFjaGlu ZSAhPSBFTV9YODZfNjQgKQorICAgIHsKKyAgICAgICAgZHByaW50ayhYRU5MT0dfRVJSLCBYU1BM SUNFICIlczogVW5zdXBwb3J0ZWQgRUxGIE1hY2hpbmUgdHlwZSFcbiIsCisgICAgICAgICAgICAg ICAgZWxmLT5uYW1lKTsKKyAgICAgICAgcmV0dXJuIC1FT1BOT1RTVVBQOworICAgIH0KKworICAg IHJldHVybiAwOworfQorCitpbnQgYXJjaF94c3BsaWNlX3BlcmZvcm1fcmVsKHN0cnVjdCB4c3Bs aWNlX2VsZiAqZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3Qg eHNwbGljZV9lbGZfc2VjICpiYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z dCBzdHJ1Y3QgeHNwbGljZV9lbGZfc2VjICpyZWxhKQoreworICAgIGRwcmludGsoWEVOTE9HX0VS UiwgWFNQTElDRSAiJXM6IFNIVF9SRUwgcmVsb2NhdGlvbiB1bnN1cHBvcnRlZFxuIiwKKyAgICAg ICAgICAgIGVsZi0+bmFtZSk7CisgICAgcmV0dXJuIC1FT1BOT1RTVVBQOworfQorCitpbnQgYXJj aF94c3BsaWNlX3BlcmZvcm1fcmVsYShzdHJ1Y3QgeHNwbGljZV9lbGYgKmVsZiwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCB4c3BsaWNlX2VsZl9zZWMgKmJhc2Us CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgeHNwbGljZV9lbGZf c2VjICpyZWxhKQoreworICAgIGNvbnN0IEVsZl9SZWxBICpyOworICAgIHVuc2lnbmVkIGludCBz eW1uZHgsIGk7CisgICAgdWludDY0X3QgdmFsOworICAgIHVpbnQ4X3QgKmRlc3Q7CisKKyAgICBp ZiAoICFyZWxhLT5zZWMtPnNoX2VudHNpemUgfHwgIXJlbGEtPnNlYy0+c2hfc2l6ZSB8fAorICAg ICAgICAgcmVsYS0+c2VjLT5zaF9lbnRzaXplICE9IHNpemVvZihFbGZfUmVsQSkgKQorICAgIHsK KyAgICAgICAgZHByaW50ayhYRU5MT0dfRVJSLCBYU1BMSUNFICIlczogU2VjdGlvbiByZWxhdGl2 ZSBoZWFkZXIgaXMgY29ycnVwdGVkIVxuIiwKKyAgICAgICAgICAgICAgICBlbGYtPm5hbWUpOwor ICAgICAgICByZXR1cm4gLUVJTlZBTDsKKyAgICB9CisKKyAgICBmb3IgKCBpID0gMDsgaSA8IChy ZWxhLT5zZWMtPnNoX3NpemUgLyByZWxhLT5zZWMtPnNoX2VudHNpemUpOyBpKysgKQorICAgIHsK KyAgICAgICAgciA9IHJlbGEtPmRhdGEgKyBpICogcmVsYS0+c2VjLT5zaF9lbnRzaXplOworICAg ICAgICBpZiAoICh1bnNpZ25lZCBsb25nKXIgPiAodW5zaWduZWQgbG9uZykoZWxmLT5oZHIgKyBl bGYtPmxlbikgKQorICAgICAgICB7CisgICAgICAgICAgICBkcHJpbnRrKFhFTkxPR19FUlIsIFhT UExJQ0UgIiVzOiBSZWxhdGl2ZSBlbnRyeSAldSBpbiAlcyBpcyBwYXN0IGVuZCFcbiIsCisgICAg ICAgICAgICAgICAgICAgIGVsZi0+bmFtZSwgaSwgcmVsYS0+bmFtZSk7CisgICAgICAgICAgICBy ZXR1cm4gLUVJTlZBTDsKKyAgICAgICAgfQorCisgICAgICAgIHN5bW5keCA9IEVMRjY0X1JfU1lN KHItPnJfaW5mbyk7CisgICAgICAgIGlmICggc3ltbmR4ID4gZWxmLT5uc3ltICkKKyAgICAgICAg eworICAgICAgICAgICAgZHByaW50ayhYRU5MT0dfRVJSLCBYU1BMSUNFICIlczogUmVsYXRpdmUg c3ltYm9sIHdhbnRzIHN5bWJvbEAldSB3aGljaCBpcyBwYXN0IGVuZCFcbiIsCisgICAgICAgICAg ICAgICAgICAgIGVsZi0+bmFtZSwgc3ltbmR4KTsKKyAgICAgICAgICAgIHJldHVybiAtRUlOVkFM OworICAgICAgICB9CisKKyAgICAgICAgZGVzdCA9IGJhc2UtPmxvYWRfYWRkciArIHItPnJfb2Zm c2V0OworICAgICAgICB2YWwgPSByLT5yX2FkZGVuZCArIGVsZi0+c3ltW3N5bW5keF0uc3ltLT5z dF92YWx1ZTsKKworICAgICAgICBzd2l0Y2ggKCBFTEY2NF9SX1RZUEUoci0+cl9pbmZvKSApCisg ICAgICAgIHsKKyAgICAgICAgY2FzZSBSX1g4Nl82NF9OT05FOgorICAgICAgICAgICAgYnJlYWs7 CisKKyAgICAgICAgY2FzZSBSX1g4Nl82NF82NDoKKyAgICAgICAgICAgICoodWludDY0X3QgKilk ZXN0ID0gdmFsOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBSX1g4Nl82NF9Q TFQzMjoKKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgKiBYZW4gdXNlcyAtZnBpYyB3aGlj aCBub3JtYWxseSB1c2VzIFBMVCByZWxvY2F0aW9ucworICAgICAgICAgICAgICogZXhjZXB0IHRo YXQgaXQgc2V0cyB2aXNpYmlsaXR5IHRvIGhpZGRlbiB3aGljaCBtZWFucworICAgICAgICAgICAg ICogdGhhdCB0aGV5IGFyZSBub3QgdXNlZC4gIEhvd2V2ZXIsIHdoZW4gZ2NjIGNhbm5vdAorICAg ICAgICAgICAgICogaW5saW5lIG1lbWNweSBpdCBlbWl0cyBtZW1jcHkgd2l0aCBkZWZhdWx0IHZp c2liaWxpdHkKKyAgICAgICAgICAgICAqIHdoaWNoIHRoZW4gY3JlYXRlcyBhIFBMVCByZWxvY2F0 aW9uLiAgSXQgY2FuIGp1c3QgYmUKKyAgICAgICAgICAgICAqIHRyZWF0ZWQgdGhlIHNhbWUgYXMg Ul9YODZfNjRfUEMzMi4KKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgLyogRmFsbCB0aHJv dWdoICovCisgICAgICAgIGNhc2UgUl9YODZfNjRfUEMzMjoKKyAgICAgICAgICAgIHZhbCAtPSAo dWludDY0X3QpZGVzdDsKKyAgICAgICAgICAgICoodWludDMyX3QgKilkZXN0ID0gdmFsOworICAg ICAgICAgICAgaWYgKCAoczY0KXZhbCAhPSAqKHMzMiAqKWRlc3QgKQorICAgICAgICAgICAgewor ICAgICAgICAgICAgICAgIGRwcmludGsoWEVOTE9HX0VSUiwgWFNQTElDRSAiJXM6IE92ZXJmbG93 IGluIHJlbG9jYXRpb24gJXUgaW4gJXMgZm9yICVzIVxuIiwKKyAgICAgICAgICAgICAgICAgICAg ICAgIGVsZi0+bmFtZSwgaSwgcmVsYS0+bmFtZSwgYmFzZS0+bmFtZSk7CisgICAgICAgICAgICAg ICAgcmV0dXJuIC1FT1ZFUkZMT1c7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsK KworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgZHByaW50ayhYRU5MT0dfRVJSLCBYU1BM SUNFICIlczogVW5oYW5kbGVkIHJlbG9jYXRpb24gJWx1XG4iLAorICAgICAgICAgICAgICAgICAg ICBlbGYtPm5hbWUsIEVMRjY0X1JfVFlQRShyLT5yX2luZm8pKTsKKyAgICAgICAgICAgIHJldHVy biAtRU9QTk9UU1VQUDsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiAwOworfQorCisv KgorICogVGhlIGZ1bmN0aW9uIHByZXBhcmVzIGEgeFNwbGljZSBwYXlsb2FkIGJ5IGFsbG9jYXRp bmcgc3BhY2Ugd2hpY2gKKyAqIHRoZW4gY2FuIGJlIHVzZWQgZm9yIGxvYWRpbmcgdGhlIGFsbG9j YXRlZCBzZWN0aW9ucywgcmVzb2x2aW5nIHN5bWJvbHMsCisgKiBwZXJmb3JtaW5nIHJlbG9jYXRp b25zLCBldGMuCisgKi8KK3ZvaWQgKmFyY2hfeHNwbGljZV9hbGxvY19wYXlsb2FkKHVuc2lnbmVk IGludCBwYWdlcykKK3sKKyAgICB1bnNpZ25lZCBpbnQgaTsKKyAgICB2b2lkICpwOworCisgICAg QVNTRVJUKHBhZ2VzKTsKKworICAgIHAgPSB2bWFsbG9jX3hlbihwYWdlcyAqIFBBR0VfU0laRSk7 CisgICAgV0FSTl9PTighcCk7CisgICAgaWYgKCBwICkKKyAgICB7CisgICAgICAgIC8qIEJ5IGRl ZmF1bHQgdGhleSBhcmUgUEFHRV9IWVBFUlZJU09SIGFrYSBQQUdFX0hZUEVSVklTT1JfUldYLiov CisgICAgICAgIGZvciAoIGkgPSAwOyBpIDwgcGFnZXM7IGkrKyApCisgICAgICAgICAgICBjbGVh cl9wYWdlKHAgKyAoaSAqIFBBR0VfU0laRSkgKTsKKyAgICB9CisgICAgcmV0dXJuIHA7Cit9CisK Ky8qCisgKiBPbmNlIHRoZSByZXNvbHZpbmcgc3ltYm9scywgcGVyZm9ybWluZyByZWxvY2F0aW9u cywgZXRjIGlzIGNvbXBsZXRlCisgKiB3ZSBzZWN1cmUgdGhlIG1lbW9yeSBieSBwdXR0aW5nIGlu IHRoZSBwcm9wZXIgcGFnZSB0YWJsZSBhdHRyaWJ1dGVzCisgKiBmb3IgdGhlIGRlc2lyZWQgdHlw ZS4KKyAqLworaW50IGFyY2hfeHNwbGljZV9zZWN1cmUodm9pZCAqdmEsIHVuc2lnbmVkIGludCBw YWdlcywgZW51bSB2YV90eXBlIHR5cGUpCit7CisgICAgdW5zaWduZWQgbG9uZyBzdGFydCA9ICh1 bnNpZ25lZCBsb25nKXZhOworICAgIGludCBmbGFnOworCisgICAgQVNTRVJUKHZhKTsKKyAgICBB U1NFUlQocGFnZXMpOworCisgICAgaWYgKCB0eXBlID09IFhTUExJQ0VfVkFfUlggKSAvKiBQQUdF X0hZUEVSVklTT1JfUlggKi8KKyAgICAgICAgZmxhZyA9IF9QQUdFX1BSRVNFTlQ7CisgICAgZWxz ZSBpZiAoIHR5cGUgPT0gWFNQTElDRV9WQV9SVyApIC8qIFBBR0VfSFlQRVJWSVNPUl9SVyAqLwor ICAgICAgICBmbGFnID0gX1BBR0VfUlcgfCBfUEFHRV9OWCB8IF9QQUdFX1BSRVNFTlQ7CisgICAg ZWxzZSAvKiBQQUdFX0hZUEVSVklTT1JfUk8gKi8KKyAgICAgICAgZmxhZyA9IF9QQUdFX05YIHwg X1BBR0VfUFJFU0VOVDsKKworICAgIC8qIFRoZSBvbmVzIHdlIGFyZSBhbGxvd2VkIHRvIG1vZGlm eSBhcmU6IF9QQUdFX05YfF9QQUdFX1JXfF9QQUdFX1BSRVNFTlQgKi8KKyAgICBtb2RpZnlfeGVu X21hcHBpbmdzKHN0YXJ0LCBzdGFydCArIHBhZ2VzICogUEFHRV9TSVpFLCBmbGFnKTsKKworICAg IHJldHVybiAwOworfQorCit2b2lkIGFyY2hfeHNwbGljZV9mcmVlX3BheWxvYWQodm9pZCAqdmEp Cit7CisgICAgdmZyZWVfeGVuKHZhKTsKK30KKwordm9pZCBhcmNoX3hzcGxpY2VfaW5pdCh2b2lk KQoreworICAgIHZvaWQgKnN0YXJ0LCAqZW5kOworCisgICAgc3RhcnQgPSAodm9pZCAqKXhlbl92 aXJ0X2VuZDsKKyAgICBlbmQgPSAodm9pZCAqKShYRU5fVklSVF9FTkQgLSBOUl9DUFVTICogUEFH RV9TSVpFKTsKKworICAgIEJVR19PTihlbmQgPD0gc3RhcnQpOworCisgICAgdm1faW5pdF90eXBl KFZNQVBfWEVOLCBzdGFydCwgZW5kKTsKK30KKy8qCisgKiBMb2NhbCB2YXJpYWJsZXM6CisgKiBt b2RlOiBDCisgKiBjLWZpbGUtc3R5bGU6ICJCU0QiCisgKiBjLWJhc2ljLW9mZnNldDogNAorICog dGFiLXdpZHRoOiA0CisgKiBpbmRlbnQtdGFicy1tb2RlOiBuaWwKKyAqIEVuZDoKKyAqLwpkaWZm IC0tZ2l0IGEveGVuL2NvbW1vbi94c3BsaWNlLmMgYi94ZW4vY29tbW9uL3hzcGxpY2UuYwppbmRl eCAwNDE1MWU5Li44MDliMDY3IDEwMDY0NAotLS0gYS94ZW4vY29tbW9uL3hzcGxpY2UuYworKysg Yi94ZW4vY29tbW9uL3hzcGxpY2UuYwpAQCAtMTMsNiArMTMsNyBAQAogI2luY2x1ZGUgPHhlbi9z bXAuaD4KICNpbmNsdWRlIDx4ZW4vc3BpbmxvY2suaD4KICNpbmNsdWRlIDx4ZW4vdm1hcC5oPgor I2luY2x1ZGUgPHhlbi94c3BsaWNlX2VsZi5oPgogI2luY2x1ZGUgPHhlbi94c3BsaWNlLmg+CiAK ICNpbmNsdWRlIDxhc20vZXZlbnQuaD4KQEAgLTI5LDYgKzMwLDEzIEBAIHN0cnVjdCBwYXlsb2Fk IHsKICAgICB1aW50MzJfdCBzdGF0ZTsgICAgICAgICAgICAgICAgICAgICAgLyogT25lIG9mIHRo ZSBYU1BMSUNFX1NUQVRFXyouICovCiAgICAgaW50MzJfdCByYzsgICAgICAgICAgICAgICAgICAg ICAgICAgIC8qIDAgb3IgLVhFTl9FWFguICovCiAgICAgc3RydWN0IGxpc3RfaGVhZCBsaXN0OyAg ICAgICAgICAgICAgIC8qIExpbmtlZCB0byAncGF5bG9hZF9saXN0Jy4gKi8KKyAgICB2b2lkICp0 ZXh0X2FkZHI7ICAgICAgICAgICAgICAgICAgICAgLyogVmlydHVhbCBhZGRyZXNzIG9mIC50ZXh0 LiAqLworICAgIHNpemVfdCB0ZXh0X3NpemU7ICAgICAgICAgICAgICAgICAgICAvKiAuLiBhbmQg aXRzIHNpemUuICovCisgICAgdm9pZCAqcndfYWRkcjsgICAgICAgICAgICAgICAgICAgICAgIC8q IFZpcnR1YWwgYWRkcmVzcyBvZiAuZGF0YS4gKi8KKyAgICBzaXplX3Qgcndfc2l6ZTsgICAgICAg ICAgICAgICAgICAgICAgLyogLi4gYW5kIGl0cyBzaXplIChpZiBhbnkpLiAqLworICAgIHZvaWQg KnJvX2FkZHI7ICAgICAgICAgICAgICAgICAgICAgICAvKiBWaXJ0dWFsIGFkZHJlc3Mgb2YgLnJv ZGF0YS4gKi8KKyAgICBzaXplX3Qgcm9fc2l6ZTsgICAgICAgICAgICAgICAgICAgICAgLyogLi4g YW5kIGl0cyBzaXplIChpZiBhbnkpLiAqLworICAgIHNpemVfdCBwYWdlczsgICAgICAgICAgICAg ICAgICAgICAgICAvKiBUb3RhbCBwYWdlcyBmb3IgW3RleHQscncscm9dX2FkZHIgKi8KICAgICBj aGFyIG5hbWVbWEVOX1hTUExJQ0VfTkFNRV9TSVpFXTsgICAgLyogTmFtZSBvZiBpdC4gKi8KIH07 CiAKQEAgLTg2LDE5ICs5NCwyMTUgQEAgc3RhdGljIHN0cnVjdCBwYXlsb2FkICpmaW5kX3BheWxv YWQoY29uc3QgY2hhciAqbmFtZSkKICAgICByZXR1cm4gZm91bmQ7CiB9CiAKKy8qCisgKiBGdW5j dGlvbnMgcmVsYXRlZCB0byBYRU5fU1lTQ1RMX1hTUExJQ0VfVVBMT0FEIChzZWUgeHNwbGljZV91 cGxvYWQpLCBhbmQKKyAqIGZyZWVpbmcgcGF5bG9hZCAoWEVOX1NZU0NUTF9YU1BMSUNFX0FDVElP TjpYU1BMSUNFX0FDVElPTl9VTkxPQUQpLgorICovCisKK3N0YXRpYyB2b2lkIGZyZWVfcGF5bG9h ZF9kYXRhKHN0cnVjdCBwYXlsb2FkICpwYXlsb2FkKQoreworICAgIC8qIFNldCB0byB6ZXJvIHVu dGlsICJtb3ZlX3BheWxvYWQiLiAqLworICAgIGlmICggIXBheWxvYWQtPnRleHRfYWRkciApCisg ICAgICAgIHJldHVybjsKKworICAgIGFyY2hfeHNwbGljZV9mcmVlX3BheWxvYWQocGF5bG9hZC0+ dGV4dF9hZGRyKTsKKworICAgIHBheWxvYWQtPnRleHRfYWRkciA9IE5VTEw7CisgICAgcGF5bG9h ZC0+cm9fYWRkciA9IE5VTEw7CisgICAgcGF5bG9hZC0+cndfYWRkciA9IE5VTEw7CisgICAgcGF5 bG9hZC0+cGFnZXMgPSAwOworfQorCisvKgorKiBjYWxjX3NlY3Rpb24gY29tcHV0ZXMgdGhlIHNp emUgKHRha2luZyBpbnRvIGFjY291bnQgc2VjdGlvbiBhbGlnbm1lbnQpLgorKgorKiBJdCBhbHNv IG1vZGlmaWVzIHNoX2VudHNpemUgd2l0aCB0aGUgb2Zmc2V0IG9mIGZyb20gdGhlIHN0YXJ0IG9m CisqIHZpcnR1YWwgYWRkcmVzcyBzcGFjZS4gVGhpcyBpcyB1c2VkIGluIG1vdmVfcGF5bG9hZCB0 byBmaWd1cmUgb3V0IHRoZQorKiBkZXN0aW5hdGlvbiBsb2NhdGlvbi4KKyovCitzdGF0aWMgdm9p ZCBjYWxjX3NlY3Rpb24oc3RydWN0IHhzcGxpY2VfZWxmX3NlYyAqc2VjLCBzaXplX3QgKnNpemUp Cit7CisgICAgRWxmX1NoZHIgKnMgPSBzZWMtPnNlYzsKKyAgICBzaXplX3QgYWxpZ25fc2l6ZTsK KworICAgIGFsaWduX3NpemUgPSBST1VORFVQKCpzaXplLCBzLT5zaF9hZGRyYWxpZ24pOworICAg IHMtPnNoX2VudHNpemUgPSBhbGlnbl9zaXplOworCisgICAgKnNpemUgPSBzLT5zaF9zaXplICsg YWxpZ25fc2l6ZTsKK30KKworc3RhdGljIGludCBtb3ZlX3BheWxvYWQoc3RydWN0IHBheWxvYWQg KnBheWxvYWQsIHN0cnVjdCB4c3BsaWNlX2VsZiAqZWxmKQoreworICAgIHVpbnQ4X3QgKmJ1ZjsK KyAgICB1bnNpZ25lZCBpbnQgaTsKKyAgICBzaXplX3Qgc2l6ZSA9IDA7CisKKyAgICAvKiBDb21w dXRlIHRleHQgcmVnaW9ucy4gKi8KKyAgICBmb3IgKCBpID0gMTsgaSA8IGVsZi0+aGRyLT5lX3No bnVtOyBpKysgKQorICAgIHsKKyAgICAgICAgaWYgKCAoZWxmLT5zZWNbaV0uc2VjLT5zaF9mbGFn cyAmIChTSEZfQUxMT0N8U0hGX0VYRUNJTlNUUikpID09CisgICAgICAgICAgICAgKFNIRl9BTExP Q3xTSEZfRVhFQ0lOU1RSKSApCisgICAgICAgICAgICBjYWxjX3NlY3Rpb24oJmVsZi0+c2VjW2ld LCAmcGF5bG9hZC0+dGV4dF9zaXplKTsKKyAgICB9CisKKyAgICAvKiBDb21wdXRlIHJ3IGRhdGEu ICovCisgICAgZm9yICggaSA9IDE7IGkgPCBlbGYtPmhkci0+ZV9zaG51bTsgaSsrICkKKyAgICB7 CisgICAgICAgIGlmICggKGVsZi0+c2VjW2ldLnNlYy0+c2hfZmxhZ3MgJiBTSEZfQUxMT0MpICYm CisgICAgICAgICAgICAgIShlbGYtPnNlY1tpXS5zZWMtPnNoX2ZsYWdzICYgU0hGX0VYRUNJTlNU UikgJiYKKyAgICAgICAgICAgICAoZWxmLT5zZWNbaV0uc2VjLT5zaF9mbGFncyAmIFNIRl9XUklU RSkgKQorICAgICAgICAgICAgY2FsY19zZWN0aW9uKCZlbGYtPnNlY1tpXSwgJnBheWxvYWQtPnJ3 X3NpemUpOworICAgIH0KKworICAgIC8qIENvbXB1dGUgcm8gZGF0YS4gKi8KKyAgICBmb3IgKCBp ID0gMTsgaSA8IGVsZi0+aGRyLT5lX3NobnVtOyBpKysgKQorICAgIHsKKyAgICAgICAgaWYgKCAo ZWxmLT5zZWNbaV0uc2VjLT5zaF9mbGFncyAmIFNIRl9BTExPQykgJiYKKyAgICAgICAgICAgICAh KGVsZi0+c2VjW2ldLnNlYy0+c2hfZmxhZ3MgJiBTSEZfRVhFQ0lOU1RSKSAmJgorICAgICAgICAg ICAgICEoZWxmLT5zZWNbaV0uc2VjLT5zaF9mbGFncyAmIFNIRl9XUklURSkgKQorICAgICAgICAg ICAgY2FsY19zZWN0aW9uKCZlbGYtPnNlY1tpXSwgJnBheWxvYWQtPnJvX3NpemUpOworICAgIH0K KworICAgIC8qIERvIG5vdCBhY2NlcHQgd3guICovCisgICAgZm9yICggaSA9IDE7IGkgPCBlbGYt Pmhkci0+ZV9zaG51bTsgaSsrICkKKyAgICB7CisgICAgICAgIGlmICggIShlbGYtPnNlY1tpXS5z ZWMtPnNoX2ZsYWdzICYgU0hGX0FMTE9DKSAmJgorICAgICAgICAgICAgIChlbGYtPnNlY1tpXS5z ZWMtPnNoX2ZsYWdzICYgU0hGX0VYRUNJTlNUUikgJiYKKyAgICAgICAgICAgICAoZWxmLT5zZWNb aV0uc2VjLT5zaF9mbGFncyAmIFNIRl9XUklURSkgKQorICAgICAgICB7CisgICAgICAgICAgICBk cHJpbnRrKFhFTkxPR19FUlIsIFhTUExJQ0UgIiVzOiBObyBXWCBzZWN0aW9ucyFcbiIsIGVsZi0+ bmFtZSk7CisgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKKyAgICAgICAgfQorICAgIH0KKwor ICAgIC8qCisgICAgICogVG90YWwgb2YgYWxsIHRocmVlIHJlZ2lvbnMgLSBSWCwgUlcsIGFuZCBS Ty4gV2UgaGF2ZSB0byBoYXZlCisgICAgICoga2VlcCB0aGVtIGluIHNlcGVyYXRlIHBhZ2VzIHNv IHdlIFBBR0VfQUxJR04gdGhlIFJYIGFuZCBSVyB0byBoYXZlCisgICAgICogdGhlbSBvbiBzZXBl cmF0ZSBwYWdlcy4gVGhlIGxhc3Qgb25lIHdpbGwgYnkgZGVmYXVsdCBmYWxsIG9uIGl0cworICAg ICAqIG93biBwYWdlLgorICAgICAqLworICAgIHNpemUgPSBQQUdFX0FMSUdOKHBheWxvYWQtPnRl eHRfc2l6ZSkgKyBQQUdFX0FMSUdOKHBheWxvYWQtPnJ3X3NpemUpICsKKyAgICAgICAgICAgICAg ICAgICAgICBwYXlsb2FkLT5yb19zaXplOworCisgICAgc2l6ZSA9IFBGTl9VUChzaXplKTsKKyAg ICBidWYgPSBhcmNoX3hzcGxpY2VfYWxsb2NfcGF5bG9hZChzaXplKTsKKyAgICBpZiAoICFidWYg KQorICAgIHsKKyAgICAgICAgZHByaW50ayhYRU5MT0dfRVJSLCBYU1BMSUNFICIlczogQ291bGQg bm90IGFsbG9jYXRlIG1lbW9yeSBmb3IgcGF5bG9hZCFcbiIsCisgICAgICAgICAgICAgICAgZWxm LT5uYW1lKTsKKyAgICAgICAgcmV0dXJuIC1FTk9NRU07CisgICAgfQorICAgIHBheWxvYWQtPnBh Z2VzID0gc2l6ZTsKKyAgICBwYXlsb2FkLT50ZXh0X2FkZHIgPSBidWY7CisgICAgcGF5bG9hZC0+ cndfYWRkciA9IHBheWxvYWQtPnRleHRfYWRkciArIFBBR0VfQUxJR04ocGF5bG9hZC0+dGV4dF9z aXplKTsKKyAgICBwYXlsb2FkLT5yb19hZGRyID0gcGF5bG9hZC0+cndfYWRkciArIFBBR0VfQUxJ R04ocGF5bG9hZC0+cndfc2l6ZSk7CisKKyAgICBmb3IgKCBpID0gMTsgaSA8IGVsZi0+aGRyLT5l X3NobnVtOyBpKysgKQorICAgIHsKKyAgICAgICAgaWYgKCBlbGYtPnNlY1tpXS5zZWMtPnNoX2Zs YWdzICYgU0hGX0FMTE9DICkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCAoZWxmLT5zZWNb aV0uc2VjLT5zaF9mbGFncyAmIFNIRl9FWEVDSU5TVFIpICkKKyAgICAgICAgICAgICAgICAgYnVm ID0gcGF5bG9hZC0+dGV4dF9hZGRyOworICAgICAgICAgICAgZWxzZSBpZiAoIChlbGYtPnNlY1tp XS5zZWMtPnNoX2ZsYWdzICYgU0hGX1dSSVRFKSApCisgICAgICAgICAgICAgICAgYnVmID0gcGF5 bG9hZC0+cndfYWRkcjsKKyAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgYnVmID0g cGF5bG9hZC0+cm9fYWRkcjsKKworICAgICAgICAgICAgZWxmLT5zZWNbaV0ubG9hZF9hZGRyID0g YnVmICsgZWxmLT5zZWNbaV0uc2VjLT5zaF9lbnRzaXplOworCisgICAgICAgICAgICAvKiBEb24n dCBjb3B5IE5PQklUUyAtIHN1Y2ggYXMgQlNTLiAqLworICAgICAgICAgICAgaWYgKCBlbGYtPnNl Y1tpXS5zZWMtPnNoX3R5cGUgIT0gU0hUX05PQklUUyApCisgICAgICAgICAgICB7CisgICAgICAg ICAgICAgICAgbWVtY3B5KGVsZi0+c2VjW2ldLmxvYWRfYWRkciwgZWxmLT5zZWNbaV0uZGF0YSwK KyAgICAgICAgICAgICAgICAgICAgICAgZWxmLT5zZWNbaV0uc2VjLT5zaF9zaXplKTsKKyAgICAg ICAgICAgICAgICBkcHJpbnRrKFhFTkxPR19ERUJVRywgWFNQTElDRSAiJXM6IExvYWRlZCAlcyBh dCAweCVwXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgZWxmLT5uYW1lLCBlbGYtPnNlY1tp XS5uYW1lLCBlbGYtPnNlY1tpXS5sb2FkX2FkZHIpOworICAgICAgICAgICAgfQorICAgICAgICB9 CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgc2VjdXJlX3BheWxvYWQo c3RydWN0IHBheWxvYWQgKnBheWxvYWQsIHN0cnVjdCB4c3BsaWNlX2VsZiAqZWxmKQoreworICAg IGludCByYzsKKyAgICB1bnNpZ25lZCBpbnQgdGV4dF9wYWdlcywgcndfcGFnZXMsIHJvX3BhZ2Vz OworCisgICAgdGV4dF9wYWdlcyA9IFBGTl9VUChwYXlsb2FkLT50ZXh0X3NpemUpOworICAgIEFT U0VSVCh0ZXh0X3BhZ2VzKTsKKworICAgIHJjID0gYXJjaF94c3BsaWNlX3NlY3VyZShwYXlsb2Fk LT50ZXh0X2FkZHIsIHRleHRfcGFnZXMsIFhTUExJQ0VfVkFfUlgpOworICAgIGlmICggcmMgKQor ICAgICAgICByZXR1cm4gcmM7CisKKyAgICByd19wYWdlcyA9IFBGTl9VUChwYXlsb2FkLT5yd19z aXplKTsKKyAgICBpZiAoIHJ3X3BhZ2VzICkKKyAgICB7CisgICAgICAgIHJjID0gYXJjaF94c3Bs aWNlX3NlY3VyZShwYXlsb2FkLT5yd19hZGRyLCByd19wYWdlcywgWFNQTElDRV9WQV9SVyk7Cisg ICAgICAgIGlmICggcmMgKQorICAgICAgICAgICAgcmV0dXJuIHJjOworICAgIH0KKworICAgIHJv X3BhZ2VzID0gUEZOX1VQKHBheWxvYWQtPnJvX3NpemUpOworICAgIGlmICggcm9fcGFnZXMgKQor ICAgIHsKKyAgICAgICAgcmMgPSBhcmNoX3hzcGxpY2Vfc2VjdXJlKHBheWxvYWQtPnJvX2FkZHIs IHJvX3BhZ2VzLCBYU1BMSUNFX1ZBX1JPKTsKKyAgICB9CisKKyAgICBBU1NFUlQocm9fcGFnZXMg KyByd19wYWdlcyArIHRleHRfcGFnZXMgPT0gcGF5bG9hZC0+cGFnZXMpOworCisgICAgcmV0dXJu IHJjOworfQorCiBzdGF0aWMgdm9pZCBmcmVlX3BheWxvYWQoc3RydWN0IHBheWxvYWQgKmRhdGEp CiB7CiAgICAgQVNTRVJUKHNwaW5faXNfbG9ja2VkKCZwYXlsb2FkX2xvY2spKTsKICAgICBsaXN0 X2RlbCgmZGF0YS0+bGlzdCk7CiAgICAgcGF5bG9hZF9jbnQtLTsKICAgICBwYXlsb2FkX3ZlcnNp b24rKzsKKyAgICBmcmVlX3BheWxvYWRfZGF0YShkYXRhKTsKICAgICB4ZnJlZShkYXRhKTsKIH0K IAorc3RhdGljIGludCBsb2FkX3BheWxvYWRfZGF0YShzdHJ1Y3QgcGF5bG9hZCAqcGF5bG9hZCwg dm9pZCAqcmF3LCBzaXplX3QgbGVuKQoreworICAgIHN0cnVjdCB4c3BsaWNlX2VsZiBlbGYgPSB7 IC5uYW1lID0gcGF5bG9hZC0+bmFtZSwgLmxlbiA9IGxlbiB9OworICAgIGludCByYyA9IDA7CisK KyAgICByYyA9IHhzcGxpY2VfZWxmX2xvYWQoJmVsZiwgcmF3KTsKKyAgICBpZiAoIHJjICkKKyAg ICAgICAgZ290byBvdXQ7CisKKyAgICByYyA9IG1vdmVfcGF5bG9hZChwYXlsb2FkLCAmZWxmKTsK KyAgICBpZiAoIHJjICkKKyAgICAgICAgZ290byBvdXQ7CisKKyAgICByYyA9IHhzcGxpY2VfZWxm X3Jlc29sdmVfc3ltYm9scygmZWxmKTsKKyAgICBpZiAoIHJjICkKKyAgICAgICAgZ290byBvdXQ7 CisKKyAgICByYyA9IHhzcGxpY2VfZWxmX3BlcmZvcm1fcmVsb2NzKCZlbGYpOworICAgIGlmICgg cmMgKQorICAgICAgICBnb3RvIG91dDsKKworICAgIHJjID0gc2VjdXJlX3BheWxvYWQocGF5bG9h ZCwgJmVsZik7CisKKyBvdXQ6CisgICAgaWYgKCByYyApCisgICAgICAgIGZyZWVfcGF5bG9hZF9k YXRhKHBheWxvYWQpOworCisgICAgLyogRnJlZSBvdXIgdGVtcG9yYXJ5IGRhdGEgc3RydWN0dXJl LiAqLworICAgIHhzcGxpY2VfZWxmX2ZyZWUoJmVsZik7CisKKyAgICByZXR1cm4gcmM7Cit9CisK IHN0YXRpYyBpbnQgeHNwbGljZV91cGxvYWQoeGVuX3N5c2N0bF94c3BsaWNlX3VwbG9hZF90ICp1 cGxvYWQpCiB7CiAgICAgc3RydWN0IHBheWxvYWQgKmRhdGEgPSBOVUxMLCAqZm91bmQ7CiAgICAg Y2hhciBuW1hFTl9YU1BMSUNFX05BTUVfU0laRV07CisgICAgdm9pZCAqcmF3X2RhdGEgPSBOVUxM OwogICAgIGludCByYzsKIAogICAgIHJjID0gdmVyaWZ5X3BheWxvYWQodXBsb2FkLCBuKTsKQEAg LTEyNiw5ICszMzAsMjAgQEAgc3RhdGljIGludCB4c3BsaWNlX3VwbG9hZCh4ZW5fc3lzY3RsX3hz cGxpY2VfdXBsb2FkX3QgKnVwbG9hZCkKICAgICAgICAgZ290byBvdXQ7CiAgICAgfQogCi0gICAg cmMgPSAwOworICAgIHJjID0gLUVOT01FTTsKKyAgICByYXdfZGF0YSA9IHZtYWxsb2ModXBsb2Fk LT5zaXplKTsKKyAgICBpZiAoICFyYXdfZGF0YSApCisgICAgICAgIGdvdG8gb3V0OworCisgICAg cmMgPSAtRUZBVUxUOworICAgIGlmICggX19jb3B5X2Zyb21fZ3Vlc3QocmF3X2RhdGEsIHVwbG9h ZC0+cGF5bG9hZCwgdXBsb2FkLT5zaXplKSApCisgICAgICAgIGdvdG8gb3V0OwogCiAgICAgbWVt Y3B5KGRhdGEtPm5hbWUsIG4sIHN0cmxlbihuKSk7CisgICAgcmMgPSBsb2FkX3BheWxvYWRfZGF0 YShkYXRhLCByYXdfZGF0YSwgdXBsb2FkLT5zaXplKTsKKyAgICBpZiAoIHJjICkKKyAgICAgICAg Z290byBvdXQ7CisKICAgICBkYXRhLT5zdGF0ZSA9IFhTUExJQ0VfU1RBVEVfQ0hFQ0tFRDsKICAg ICBJTklUX0xJU1RfSEVBRCgmZGF0YS0+bGlzdCk7CiAKQEAgLTEzOSw2ICszNTQsOCBAQCBzdGF0 aWMgaW50IHhzcGxpY2VfdXBsb2FkKHhlbl9zeXNjdGxfeHNwbGljZV91cGxvYWRfdCAqdXBsb2Fk KQogIG91dDoKICAgICBzcGluX3VubG9jaygmcGF5bG9hZF9sb2NrKTsKIAorICAgIHZmcmVlKHJh d19kYXRhKTsKKwogICAgIGlmICggcmMgKQogICAgICAgICB4ZnJlZShkYXRhKTsKIApAQCAtMzgw LDggKzU5Nyw5IEBAIHN0YXRpYyB2b2lkIHhzcGxpY2VfcHJpbnRhbGwodW5zaWduZWQgY2hhciBr ZXkpCiAgICAgfQogCiAgICAgbGlzdF9mb3JfZWFjaF9lbnRyeSAoIGRhdGEsICZwYXlsb2FkX2xp c3QsIGxpc3QgKQotICAgICAgICBwcmludGsoIiBuYW1lPSVzIHN0YXRlPSVzKCVkKVxuIiwgZGF0 YS0+bmFtZSwKLSAgICAgICAgICAgICAgIHN0YXRlMnN0cihkYXRhLT5zdGF0ZSksIGRhdGEtPnN0 YXRlKTsKKyAgICAgICAgcHJpbnRrKCIgbmFtZT0lcyBzdGF0ZT0lcyglZCkgJXAgKC5kYXRhPSVw LCAucm9kYXRhPSVwKSB1c2luZyAlenUgcGFnZXMuXG4iLAorICAgICAgICAgICAgICAgZGF0YS0+ bmFtZSwgc3RhdGUyc3RyKGRhdGEtPnN0YXRlKSwgZGF0YS0+c3RhdGUsIGRhdGEtPnRleHRfYWRk ciwKKyAgICAgICAgICAgICAgIGRhdGEtPnJ3X2FkZHIsIGRhdGEtPnJvX2FkZHIsIGRhdGEtPnBh Z2VzKTsKIAogICAgIHNwaW5fdW5sb2NrKCZwYXlsb2FkX2xvY2spOwogfQpAQCAtMzg5LDYgKzYw Nyw4IEBAIHN0YXRpYyB2b2lkIHhzcGxpY2VfcHJpbnRhbGwodW5zaWduZWQgY2hhciBrZXkpCiBz dGF0aWMgaW50IF9faW5pdCB4c3BsaWNlX2luaXQodm9pZCkKIHsKICAgICByZWdpc3Rlcl9rZXlo YW5kbGVyKCd4JywgeHNwbGljZV9wcmludGFsbCwgInByaW50IHhzcGxpY2luZyBpbmZvIiwgMSk7 CisKKyAgICBhcmNoX3hzcGxpY2VfaW5pdCgpOwogICAgIHJldHVybiAwOwogfQogX19pbml0Y2Fs bCh4c3BsaWNlX2luaXQpOwpkaWZmIC0tZ2l0IGEveGVuL2NvbW1vbi94c3BsaWNlX2VsZi5jIGIv eGVuL2NvbW1vbi94c3BsaWNlX2VsZi5jCmluZGV4IDBkOTZiNzguLmY1OWYwMTEgMTAwNjQ0Ci0t LSBhL3hlbi9jb21tb24veHNwbGljZV9lbGYuYworKysgYi94ZW4vY29tbW9uL3hzcGxpY2VfZWxm LmMKQEAgLTEwMSw3ICsxMDEsNyBAQCBzdGF0aWMgaW50IGVsZl9yZXNvbHZlX3NlY3Rpb25zKHN0 cnVjdCB4c3BsaWNlX2VsZiAqZWxmLCBjb25zdCB2b2lkICpkYXRhKQogICAgICAgICAgICAgfQog CiAgICAgICAgICAgICBlbGYtPnN5bXRhYiA9ICZzZWNbaV07Ci0KKyAgICAgICAgICAgIGVsZi0+ c3ltdGFiX2lkeCA9IGk7CiAgICAgICAgICAgICAvKgogICAgICAgICAgICAgICogZWxmLT5zeW10 YWItPnNlYy0+c2hfbGluayB3b3VsZCBwb2ludCB0byB0aGUgcmlnaHQgc2VjdGlvbgogICAgICAg ICAgICAgICogYnV0IHdlIGhhZG4ndCBmaW5pc2hlZCBwYXJzaW5nIGFsbCB0aGUgc2VjdGlvbnMu CkBAIC0yNDksOSArMjQ5LDEyNyBAQCBzdGF0aWMgaW50IGVsZl9nZXRfc3ltKHN0cnVjdCB4c3Bs aWNlX2VsZiAqZWxmLCBjb25zdCB2b2lkICpkYXRhKQogICAgIHJldHVybiAwOwogfQogCitpbnQg eHNwbGljZV9lbGZfcmVzb2x2ZV9zeW1ib2xzKHN0cnVjdCB4c3BsaWNlX2VsZiAqZWxmKQorewor ICAgIHVuc2lnbmVkIGludCBpOworICAgIGludCByYyA9IDA7CisKKyAgICAvKgorICAgICAqIFRo ZSBmaXJzdCBlbnRyeSBvZiBhbiBFTEYgc3ltYm9sIHRhYmxlIGlzIHRoZSAidW5kZWZpbmVkIHN5 bWJvbCBpbmRleCIuCisgICAgICogYWthIHJlc2VydmVkIHNvIHdlIHNraXAgaXQuCisgICAgICov CisgICAgQVNTRVJUKGVsZi0+c3ltKTsKKworICAgIGZvciAoIGkgPSAxOyBpIDwgZWxmLT5uc3lt OyBpKysgKQorICAgIHsKKyAgICAgICAgdWludDE2X3QgaWR4ID0gZWxmLT5zeW1baV0uc3ltLT5z dF9zaG5keDsKKworICAgICAgICByYyA9IDA7CisgICAgICAgIHN3aXRjaCAoIGlkeCApCisgICAg ICAgIHsKKyAgICAgICAgY2FzZSBTSE5fQ09NTU9OOgorICAgICAgICAgICAgZHByaW50ayhYRU5M T0dfRVJSLCBYU1BMSUNFICIlczogVW5leHBlY3RlZCBjb21tb24gc3ltYm9sOiAlc1xuIiwKKyAg ICAgICAgICAgICAgICAgICAgZWxmLT5uYW1lLCBlbGYtPnN5bVtpXS5uYW1lKTsKKyAgICAgICAg ICAgIHJjID0gLUVJTlZBTDsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgU0hO X1VOREVGOgorICAgICAgICAgICAgZHByaW50ayhYRU5MT0dfRVJSLCBYU1BMSUNFICIlczogVW5r bm93biBzeW1ib2w6ICVzXG4iLAorICAgICAgICAgICAgICAgICAgICBlbGYtPm5hbWUsIGVsZi0+ c3ltW2ldLm5hbWUpOworICAgICAgICAgICAgcmMgPSAtRU5PRU5UOworICAgICAgICAgICAgYnJl YWs7CisKKyAgICAgICAgY2FzZSBTSE5fQUJTOgorICAgICAgICAgICAgZHByaW50ayhYRU5MT0df REVCVUcsIFhTUExJQ0UgIiVzOiBBYnNvbHV0ZSBzeW1ib2w6ICVzID0+ICUjIlBSSXhFbGZBZGRy IlxuIiwKKyAgICAgICAgICAgICAgICAgICAgZWxmLT5uYW1lLCBlbGYtPnN5bVtpXS5uYW1lLCBl bGYtPnN5bVtpXS5zeW0tPnN0X3ZhbHVlKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAg IGRlZmF1bHQ6CisgICAgICAgICAgICAvKiBTSE5fQ09NTU9OIGFuZCBTSE5fQUJTIGFyZSBhYm92 ZS4gKi8KKyAgICAgICAgICAgIGlmICggaWR4ID4gU0hOX0xPUkVTRVJWRSApCisgICAgICAgICAg ICAgICAgcmMgPSAtRU9QTk9UU1VQUDsKKyAgICAgICAgICAgIC8qIFNITl9VTkRFRiAoMCkgYWJv dmUuICovCisgICAgICAgICAgICBlbHNlIGlmICggaWR4ID4gZWxmLT5oZHItPmVfc2hudW0gJiYg aWR4IDwgU0hOX0xPUkVTRVJWRSApCisgICAgICAgICAgICAgICAgcmMgPSAtRUlOVkFMOworCisg ICAgICAgICAgICBpZiAoIHJjICkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBkcHJp bnRrKFhFTkxPR19FUlIsIFhTUExJQ0UgIiVzOiBVbmtub3duIHR5cGU9JSMiUFJJeDE2IlxuIiwK KyAgICAgICAgICAgICAgICAgICAgICAgIGVsZi0+bmFtZSwgaWR4KTsKKyAgICAgICAgICAgICAg ICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCAhKGVsZi0+c2VjW2lk eF0uc2VjLT5zaF9mbGFncyAmIFNIRl9BTExPQykgKQorICAgICAgICAgICAgICAgIGJyZWFrOwor CisgICAgICAgICAgICBlbGYtPnN5bVtpXS5zeW0tPnN0X3ZhbHVlICs9ICh1bnNpZ25lZCBsb25n KWVsZi0+c2VjW2lkeF0ubG9hZF9hZGRyOworICAgICAgICAgICAgaWYgKCBlbGYtPnN5bVtpXS5u YW1lICkKKyAgICAgICAgICAgICAgICBkcHJpbnRrKFhFTkxPR19ERUJVRywgWFNQTElDRSAiJXM6 IFN5bWJvbCByZXNvbHZlZDogJXMgPT4gJSMiUFJJeEVsZkFkZHIiKCVzKVxuIiwKKyAgICAgICAg ICAgICAgICAgICAgICAgZWxmLT5uYW1lLCBlbGYtPnN5bVtpXS5uYW1lLAorICAgICAgICAgICAg ICAgICAgICAgICBlbGYtPnN5bVtpXS5zeW0tPnN0X3ZhbHVlLCBlbGYtPnNlY1tpZHhdLm5hbWUp OworICAgICAgICB9CisKKyAgICAgICAgaWYgKCByYyApCisgICAgICAgICAgICBicmVhazsKKyAg ICB9CisKKyAgICByZXR1cm4gcmM7Cit9CisKK2ludCB4c3BsaWNlX2VsZl9wZXJmb3JtX3JlbG9j cyhzdHJ1Y3QgeHNwbGljZV9lbGYgKmVsZikKK3sKKyAgICBzdHJ1Y3QgeHNwbGljZV9lbGZfc2Vj ICpyZWxhLCAqYmFzZTsKKyAgICB1bnNpZ25lZCBpbnQgaTsKKyAgICBpbnQgcmMgPSAwOworCisg ICAgLyoKKyAgICAgKiBUaGUgZmlyc3QgZW50cnkgb2YgYW4gRUxGIHN5bWJvbCB0YWJsZSBpcyB0 aGUgInVuZGVmaW5lZCBzeW1ib2wgaW5kZXgiLgorICAgICAqIGFrYSByZXNlcnZlZCBzbyB3ZSBz a2lwIGl0LgorICAgICAqLworICAgIEFTU0VSVChlbGYtPnN5bSk7CisKKyAgICBmb3IgKCBpID0g MTsgaSA8IGVsZi0+aGRyLT5lX3NobnVtOyBpKysgKQorICAgIHsKKyAgICAgICAgcmVsYSA9ICZl bGYtPnNlY1tpXTsKKworICAgICAgICBpZiAoIChyZWxhLT5zZWMtPnNoX3R5cGUgIT0gU0hUX1JF TEEpICYmCisgICAgICAgICAgICAgKHJlbGEtPnNlYy0+c2hfdHlwZSAhPSBTSFRfUkVMKSApCisg ICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgLyogSXMgaXQgYSB2YWxpZCByZWxvY2F0 aW9uIHNlY3Rpb24/ICovCisgICAgICAgICBpZiAoIHJlbGEtPnNlYy0+c2hfaW5mbyA+PSBlbGYt Pmhkci0+ZV9zaG51bSApCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgYmFzZSA9 ICZlbGYtPnNlY1tyZWxhLT5zZWMtPnNoX2luZm9dOworCisgICAgICAgICAvKiBEb24ndCByZWxv Y2F0ZSBub24tYWxsb2NhdGVkIHNlY3Rpb25zLiAqLworICAgICAgICAgaWYgKCAhKGJhc2UtPnNl Yy0+c2hfZmxhZ3MgJiBTSEZfQUxMT0MpICkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAg ICAgIGlmICggcmVsYS0+c2VjLT5zaF9saW5rICE9IGVsZi0+c3ltdGFiX2lkeCApCisgICAgICAg IHsKKyAgICAgICAgICAgIGRwcmludGsoWEVOTE9HX0VSUiwgWFNQTElDRSAiJXM6IFJlbGF0aXZl IGxpbmsgb2YgJXMgaXMgaW5jb3JyZWN0ICglZCwgZXhwZWN0ZWQ9JWQpXG4iLAorICAgICAgICAg ICAgICAgICAgICBlbGYtPm5hbWUsIHJlbGEtPm5hbWUsIHJlbGEtPnNlYy0+c2hfbGluaywgZWxm LT5zeW10YWJfaWR4KTsKKyAgICAgICAgICAgIHJjID0gLUVJTlZBTDsKKyAgICAgICAgICAgIGJy ZWFrOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCByZWxhLT5zZWMtPnNoX3R5cGUgPT0gU0hU X1JFTEEgKQorICAgICAgICAgICAgcmMgPSBhcmNoX3hzcGxpY2VfcGVyZm9ybV9yZWxhKGVsZiwg YmFzZSwgcmVsYSk7CisgICAgICAgIGVsc2UgLyogU0hUX1JFTCAqLworICAgICAgICAgICAgcmMg PSBhcmNoX3hzcGxpY2VfcGVyZm9ybV9yZWwoZWxmLCBiYXNlLCByZWxhKTsKKworICAgICAgICBp ZiAoIHJjICkKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHJldHVybiByYzsKK30K Kwogc3RhdGljIGludCB4c3BsaWNlX2hlYWRlcl9jaGVjayhjb25zdCBzdHJ1Y3QgeHNwbGljZV9l bGYgKmVsZikKIHsKICAgICBjb25zdCBFbGZfRWhkciAqaGRyID0gZWxmLT5oZHI7CisgICAgaW50 IHJjOwogCiAgICAgaWYgKCBzaXplb2YoKmVsZi0+aGRyKSA+IGVsZi0+bGVuICkKICAgICB7CkBA IC0yNzYsNiArMzk0LDEwIEBAIHN0YXRpYyBpbnQgeHNwbGljZV9oZWFkZXJfY2hlY2soY29uc3Qg c3RydWN0IHhzcGxpY2VfZWxmICplbGYpCiAgICAgICAgIHJldHVybiAtRU9QTk9UU1VQUDsKICAg ICB9CiAKKyAgICByYyA9IGFyY2hfeHNwbGljZV92ZXJpZnlfZWxmKGVsZik7CisgICAgaWYgKCBy YyApCisgICAgICAgIHJldHVybiByYzsKKwogICAgIGlmICggZWxmLT5oZHItPmVfc2hzdHJuZHgg PT0gU0hOX1VOREVGICkKICAgICB7CiAgICAgICAgIGRwcmludGsoWEVOTE9HX0VSUiwgWFNQTElD RSAiJXM6IFNlY3Rpb24gbmFtZSBpZHggaXMgdW5kZWZpbmVkIT9cbiIsCmRpZmYgLS1naXQgYS94 ZW4vaW5jbHVkZS94ZW4vZWxmc3RydWN0cy5oIGIveGVuL2luY2x1ZGUveGVuL2VsZnN0cnVjdHMu aAppbmRleCA4NWYzNWVkLi5iZTU1OTg1IDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS94ZW4vZWxm c3RydWN0cy5oCisrKyBiL3hlbi9pbmNsdWRlL3hlbi9lbGZzdHJ1Y3RzLmgKQEAgLTQ3Miw2ICs0 NzIsOCBAQCB0eXBlZGVmIHN0cnVjdCB7CiAjZW5kaWYKIAogI2lmIGRlZmluZWQoRUxGU0laRSkg JiYgKEVMRlNJWkUgPT0gMzIpCisjZGVmaW5lIFBSSXhFbGZBZGRyCSIwOHgiCisKICNkZWZpbmUg RWxmX0VoZHIJRWxmMzJfRWhkcgogI2RlZmluZSBFbGZfUGhkcglFbGYzMl9QaGRyCiAjZGVmaW5l IEVsZl9TaGRyCUVsZjMyX1NoZHIKQEAgLTQ5Nyw2ICs0OTksOCBAQCB0eXBlZGVmIHN0cnVjdCB7 CiAKICNkZWZpbmUgQXV4SW5mbwkJQXV4MzJJbmZvCiAjZWxpZiBkZWZpbmVkKEVMRlNJWkUpICYm IChFTEZTSVpFID09IDY0KQorI2RlZmluZSBQUkl4RWxmQWRkcgkibHgiCisKICNkZWZpbmUgRWxm X0VoZHIJRWxmNjRfRWhkcgogI2RlZmluZSBFbGZfUGhkcglFbGY2NF9QaGRyCiAjZGVmaW5lIEVs Zl9TaGRyCUVsZjY0X1NoZHIKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3hlbi94c3BsaWNlLmgg Yi94ZW4vaW5jbHVkZS94ZW4veHNwbGljZS5oCmluZGV4IGNkODA1YTguLjgzZTRmMzEgMTAwNjQ0 Ci0tLSBhL3hlbi9pbmNsdWRlL3hlbi94c3BsaWNlLmgKKysrIGIveGVuL2luY2x1ZGUveGVuL3hz cGxpY2UuaApAQCAtNiw2ICs2LDkgQEAKICNpZm5kZWYgX19YRU5fWFNQTElDRV9IX18KICNkZWZp bmUgX19YRU5fWFNQTElDRV9IX18KIAorc3RydWN0IHhzcGxpY2VfZWxmOworc3RydWN0IHhzcGxp Y2VfZWxmX3NlYzsKK3N0cnVjdCB4c3BsaWNlX2VsZl9zeW07CiBzdHJ1Y3QgeGVuX3N5c2N0bF94 c3BsaWNlX29wOwogCiAjaWZkZWYgQ09ORklHX1hTUExJQ0UKQEAgLTE1LDYgKzE4LDMyIEBAIHN0 cnVjdCB4ZW5fc3lzY3RsX3hzcGxpY2Vfb3A7CiAKIGludCB4c3BsaWNlX29wKHN0cnVjdCB4ZW5f c3lzY3RsX3hzcGxpY2Vfb3AgKik7CiAKKy8qIEFyY2ggaG9va3MuICovCitpbnQgYXJjaF94c3Bs aWNlX3ZlcmlmeV9lbGYoY29uc3Qgc3RydWN0IHhzcGxpY2VfZWxmICplbGYpOworaW50IGFyY2hf eHNwbGljZV9wZXJmb3JtX3JlbChzdHJ1Y3QgeHNwbGljZV9lbGYgKmVsZiwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHhzcGxpY2VfZWxmX3NlYyAqYmFzZSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHhzcGxpY2VfZWxmX3NlYyAq cmVsYSk7CitpbnQgYXJjaF94c3BsaWNlX3BlcmZvcm1fcmVsYShzdHJ1Y3QgeHNwbGljZV9lbGYg KmVsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCB4c3BsaWNl X2VsZl9zZWMgKmJhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1 Y3QgeHNwbGljZV9lbGZfc2VjICpyZWxhKTsKK2VudW0gdmFfdHlwZSB7CisgICAgWFNQTElDRV9W QV9SWCwgLyogLnRleHQgKi8KKyAgICBYU1BMSUNFX1ZBX1JXLCAvKiAuZGF0YSAqLworICAgIFhT UExJQ0VfVkFfUk8sIC8qIC5yb2RhdGEgKi8KK307CisKKyNpbmNsdWRlIDx4ZW4vbW0uaD4KK3Zv aWQgKmFyY2hfeHNwbGljZV9hbGxvY19wYXlsb2FkKHVuc2lnbmVkIGludCBwYWdlcyk7CisKKy8q CisgKiBGdW5jdGlvbiB0byBzZWN1cmUgdGhlIGFsbG9jYXRlIHBhZ2VzIChmcm9tIGFyY2hfeHNw bGljZV9hbGxvY19wYXlsb2FkKQorICogd2l0aCB0aGUgcmlnaHQgcGFnZSBwZXJtaXNzaW9ucy4K KyAqLworaW50IGFyY2hfeHNwbGljZV9zZWN1cmUodm9pZCAqdmEsIHVuc2lnbmVkIGludCBwYWdl cywgZW51bSB2YV90eXBlIHR5cGVzKTsKKwordm9pZCBhcmNoX3hzcGxpY2VfZnJlZV9wYXlsb2Fk KHZvaWQgKnZhKTsKKwordm9pZCBhcmNoX3hzcGxpY2VfaW5pdCh2b2lkKTsKICNlbHNlCiAKICNp bmNsdWRlIDx4ZW4vZXJybm8uaD4gLyogRm9yIC1FTk9TWVMgKi8KZGlmZiAtLWdpdCBhL3hlbi9p bmNsdWRlL3hlbi94c3BsaWNlX2VsZi5oIGIveGVuL2luY2x1ZGUveGVuL3hzcGxpY2VfZWxmLmgK aW5kZXggODlhY2I3Ny4uNjg5MmY1OSAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUveGVuL3hzcGxp Y2VfZWxmLmgKKysrIGIveGVuL2luY2x1ZGUveGVuL3hzcGxpY2VfZWxmLmgKQEAgLTE1LDYgKzE1 LDggQEAgc3RydWN0IHhzcGxpY2VfZWxmX3NlYyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGVsZl9yZXNvbHZlX3NlY3Rpb25fbmFtZXMuICovCiAgICAgY29u c3Qgdm9pZCAqZGF0YTsgICAgICAgICAgICAgICAgICAgIC8qIFBvaW50ZXIgdG8gdGhlIHNlY3Rp b24gKGRvbmUgYnkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ZWxmX3Jlc29sdmVfc2VjdGlvbnMpLiAqLworICAgIHZvaWQgKmxvYWRfYWRkcjsgICAgICAgICAg ICAgICAgICAgICAvKiBBIHBvaW50ZXIgdG8gdGhlIGFsbG9jYXRlZCBkZXN0aW5hdGlvbi4KKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRG9uZSBieSBsb2FkX3Bh eWxvYWRfZGF0YS4gKi8KIH07CiAKIHN0cnVjdCB4c3BsaWNlX2VsZl9zeW0gewpAQCAtMjksOCAr MzEsMTAgQEAgc3RydWN0IHhzcGxpY2VfZWxmIHsKICAgICBzdHJ1Y3QgeHNwbGljZV9lbGZfc2Vj ICpzZWM7ICAgICAgICAgLyogQXJyYXkgb2Ygc2VjdGlvbnMsIGFsbG9jYXRlZCBieSB1cy4gKi8K ICAgICBzdHJ1Y3QgeHNwbGljZV9lbGZfc3ltICpzeW07ICAgICAgICAgLyogQXJyYXkgb2Ygc3lt Ym9scyAsIGFsbG9jYXRlZCBieSB1cy4gKi8KICAgICB1bnNpZ25lZCBpbnQgbnN5bTsKLSAgICBj b25zdCBzdHJ1Y3QgeHNwbGljZV9lbGZfc2VjICpzeW10YWI7LyogUG9pbnRlciB0byAuc3ltdGFi IHNlY3Rpb24gLSBha2EgdG8gc2VjW3hdLiAqLworICAgIGNvbnN0IHN0cnVjdCB4c3BsaWNlX2Vs Zl9zZWMgKnN5bXRhYjsvKiBQb2ludGVyIHRvIC5zeW10YWIgc2VjdGlvbiAtIGFrYSB0bworICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWNbc3ltdGFiX2lkeF0u ICovCiAgICAgY29uc3Qgc3RydWN0IHhzcGxpY2VfZWxmX3NlYyAqc3RydGFiOy8qIFBvaW50ZXIg dG8gLnN0cnRhYiBzZWN0aW9uIC0gYWthIHRvIHNlY1t5XS4gKi8KKyAgICB1bnNpZ25lZCBpbnQg c3ltdGFiX2lkeDsKIH07CiAKIGNvbnN0IHN0cnVjdCB4c3BsaWNlX2VsZl9zZWMgKnhzcGxpY2Vf ZWxmX3NlY19ieV9uYW1lKGNvbnN0IHN0cnVjdCB4c3BsaWNlX2VsZiAqZWxmLApAQCAtMzgsNiAr NDIsOSBAQCBjb25zdCBzdHJ1Y3QgeHNwbGljZV9lbGZfc2VjICp4c3BsaWNlX2VsZl9zZWNfYnlf bmFtZShjb25zdCBzdHJ1Y3QgeHNwbGljZV9lbGYgKgogaW50IHhzcGxpY2VfZWxmX2xvYWQoc3Ry dWN0IHhzcGxpY2VfZWxmICplbGYsIGNvbnN0IHZvaWQgKmRhdGEpOwogdm9pZCB4c3BsaWNlX2Vs Zl9mcmVlKHN0cnVjdCB4c3BsaWNlX2VsZiAqZWxmKTsKIAoraW50IHhzcGxpY2VfZWxmX3Jlc29s dmVfc3ltYm9scyhzdHJ1Y3QgeHNwbGljZV9lbGYgKmVsZik7CitpbnQgeHNwbGljZV9lbGZfcGVy Zm9ybV9yZWxvY3Moc3RydWN0IHhzcGxpY2VfZWxmICplbGYpOworCiAjZW5kaWYgLyogX19YRU5f WFNQTElDRV9FTEZfSF9fICovCiAKIC8qCi0tIAoyLjUuMAoKCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRl dmVsQGxpc3RzLnhlbi5vcmcKaHR0cDovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==