From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: [PATCH v9 11/27] xsplice: Implement payload loading Date: Mon, 25 Apr 2016 11:34:58 -0400 Message-ID: <1461598514-5440-12-git-send-email-konrad.wilk@oracle.com> References: <1461598514-5440-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 1auiYT-000497-Oq for xen-devel@lists.xenproject.org; Mon, 25 Apr 2016 15:36:10 +0000 In-Reply-To: <1461598514-5440-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 ODYvdm1hcDogQWRkIHZbenxtXWFsbG9jX3hlbiwgYW5kIHZtX2luaXRfdHlwZSIpIHRvIGFsbG9j YXRlCmEgcmVnaW9uIG9mIG1lbW9yeSB3aXRoaW4gdGhlIFt4ZW5fdmlydF9lbmQsIFhFTl9WSVJU X0VORF0gZm9yIHRoZSBjb2RlLgoKV2UgYWxzbyB1c2UgdGhlICJ4ODYvbW06IEludHJvZHVjZSBt b2RpZnlfeGVuX21hcHBpbmdzKCkiCnRvIGNoYW5nZSB0aGUgdmlydHVhbCBhZGRyZXNzIHBhZ2Ut dGFibGUgcGVybWlzc2lvbnMuCgpTaWduZWQtb2ZmLWJ5OiBSb3NzIExhZ2Vyd2FsbCA8cm9zcy5s YWdlcndhbGxAY2l0cml4LmNvbT4KU2lnbmVkLW9mZi1ieTogS29ucmFkIFJ6ZXN6dXRlayBXaWxr IDxrb25yYWQud2lsa0BvcmFjbGUuY29tPgpSZXZpZXdlZC1ieTogQW5kcmV3IENvb3BlciA8YW5k cmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KQWNrZWQtYnk6IEp1bGllbiBHcmFsbCA8anVsaWVuLmdy YWxsQGFybS5jb20+CgotLS0KQ2M6IFN0ZWZhbm8gU3RhYmVsbGluaSA8c3N0YWJlbGxpbmlAa2Vy bmVsLm9yZz4KQ2M6IEp1bGllbiBHcmFsbCA8anVsaWVuLmdyYWxsQGFybS5jb20+CkNjOiBLZWly IEZyYXNlciA8a2VpckB4ZW4ub3JnPgpDYzogSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29t PgpDYzogQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KCnYyOiAtIENo YW5nZSB0aGUgJ3hzcGxpY2VfcGF0Y2hfZnVuYycgc3RydWN0dXJlIGxheW91dC9zaXplLgogICAg LSBBZGQgbW9yZSBlcnJvciBjaGVja2luZy4gRml4IG1lbW9yeSBsZWFrLgogICAgLSBNb3ZlIGVs Zl9yZXNvbHZlIGFuZCBlbGZfcGVyZm9ybSByZWxvY3MgaW4gZWxmIGZpbGUuCiAgICAtIFByaW50 IHRoZSBwYXlsb2FkIGFkZHJlc3MgYW5kIHBhZ2VzIGluIGtleWhhbmRsZXIuCnYzOgogICAgLSBN YWtlIGl0IGJ1aWxkIHVuZGVyIEFSTQogICAgLSBCdWlsZCBpdCB3aXRob3V0IHVzaW5nIHRoZSBy ZXR1cm5fIG1hY3JvLgogICAgLSBBZGQgZml4ZXMgZnJvbSBSb3NzLgogICAgLSBBZGQgdGhlIF9y ZXR1cm4gbWFjcm8gYmFjayAtIGJ1dCBvbmx5IHVzZSBpdCBkdXJpbmcgZGVidWcgYnVpbGRzLgog ICAgLSBSZW1vdmUgdGhlIG1hY3JvLCBwcmVmaXggYXJjaF8gb24gYXJjaCBzcGVjaWZpYyBjYWxs cy4KdjQ6CiAgICAtIE1vdmUgYWxsb2NfcGF5bG9hZCB0byBhcmNoIHNwZWNpZmljIGZpbGUuCiAg ICAtIFVzZSB2b2lkKiBpbnN0ZWFkIG9mIHVpbnQ4X3QsIHVzZSBjb25zdAogICAgLSBBZGQgY29w eXJpZ2h0cwogICAgLSBVbnJvbGwgdGhlIHZtYXAgY29kZSB0byBhZGQgQVNTRVJULiBDaGFuZ2Ug d2hpbGUgdG8gbm90IGluY3VyCiAgICAgIHBvdGVudGlhbCBsb25nIGVycm9yIGxvb3AKICAgLSBV c2Ugdm1hbGxvYy92ZnJlZSBjYiBBUElzCiAgIC0gU2VjdXJlIC50ZXh0IHBhZ2VzIHRvIGJlIFJY IGluc3RlYWQgb2YgUldYLgp2NToKICAtIEZpeCBhbGxvY2F0aW9uIG9mIHZpcnR1YWwgYWRkcmVz c2VzIG9ubHkgYWxsb3dpbmcgb25lIHBhZ2UgdG8gYmUgYWxsb2NhdGVkLgogIC0gQ3JlYXRlIC50 ZXh0LCAuZGF0YSwgYW5kIC5yb2RhdGEgcmVnaW9ucyB3aXRoIGRpZmZlcmVudCBwZXJtaXNzaW9u cy4KICAtIE1ha2UgdGhlIGZpbmRfc3BhY2VfdCBub3QgYSB0eXBlZGVmIHRvIHBvaW50ZXIgdG8g YSBmdW5jdGlvbi4KICAtIEFsbG9jYXRlIG1lbW9yeSBpbiBoZXJlLgp2NjogRHJvcCBwYXJlbnRo ZXNlcyBvbiB0eXBlZGVmcy4KICAtIHMvYW4geFNwbGljZS9hIHhTcGxpY2UvCiAgLSBSZWJhc2Ug b24gInZtYXA6IEFkZCB2bWFsbG9jX2NiIgogIC0gUmViYXNlIG9uICJ2bWFwOiBBZGQgdm1hbGxv Y190eXBlIGFuZCB2bV9pbml0X3R5cGUiCiAgLSBzL3VpbnQ4X3Qvdm9pZC8gb24gbG9hZF9hZGRy CiAgLSBTZXQgeHNwbGljZV9lbGYgb24gc3RhY2sgd2l0aG91dCB1c2luZyBtZW1zZXQuCnY3Ogog IC0gQ2hhbmdlZCB0aGUgY2hlY2sgb24gZGVsdGEgPSBlbGYtPmhkci0+ZV9zaG9mZiArIGVsZi0+ aGRyLT5lX3NobnVtICogZWxmLT5oZHItPmVfc2hlbnRzaXplOwogICAgVGhlIHNlY3Rpb25zIGNh biBiZSByaWdodCBhdCB0aGUgYmFjayBvZiB0aGUgZmlsZSAoZGlmZmVyZW50IGxpbmtlciEpLCBz byB0aGUgZmFpbGluZyBjb25kaXRpb25hbAogICAgZm9yICdpZiAoZGVsdGEgPj0gZWxmLT5sZW4p JyBpcyBpbmNvcnJlY3QgYW5kIHNob3VsZCBoYXZlIGJlZW4gJz4nLgogIC0gQ2hhbmdlZCBkcHJp bnRrKFhFTkxPR19ERUJVRyB0byBYRU5MT0dfRVJSLCB0aGVuIGJhY2sgdG8gREVCVUcuIENvbnZl cnRlZAogICAgc29tZSBvZiB0aGUgcHJpbnRrIHRvIGRwcmludGsuCiAgLSBSZWJhc2Ugb24gIiBh cm0veDg2L3ZtYXA6IEFkZCB2bWFsbG9jX3hlbiwgdmZyZWVfeGVuIGFuZCB2bV9pbml0X3R5cGUi CiAgLSBDaGFuZ2VkIHNvbWUgb2YgdGhlIHByaW50ayBYRU5MT0dfRVJSIHRvIFhFTkxPR19ERUJV RwogIC0gQ2hlY2sgdGhlIGlkeCBpbiB0aGUgcmVsb2NhdGlvbiB0byBtYWtlIHN1cmUgaXQgaXMg d2l0aGluIGJvdW5kcyBhbmQKICAgIGltcGxlbWVudGVkLgogIC0gVXNlICJ4ODYvbW06IEludHJv ZHVjZSBtb2RpZnlfeGVuX21hcHBpbmdzKCkiCiAgLSBJbnRyb2R1Y2UgUFJJeEVsZkFkZHIKICAt IENoZWNrIGZvciBvdmVyZmxvdyBpbiBSX1g4Nl82NF9QQzMyCiAgLSBSZXR1cm4gLUVPUE5PVFNV UFAgaWYgd2UgZG9uJ3Qgc3VwcG9ydCB0eXBlcyBpbiBFTEY2NF9SX1RZUEUKdjg6CiAgLSBDaGFu Z2UgZHByaW50ayBhbmQgcHJpbnRrIFhFTkxPR19ERUJVRyB0byBYRU5MT0dfRVJSCiAgLSBDb252 ZXJ0IGZvdXIgb2YgdGhlIHByaW50a3MgaW4gZHByaW50ay4Kdjk6CiAgLSBSZWJhc2Ugb24gZGlm ZmVyZW50IHNwaW5sb2NrIHVzYWdlIGluIHhzcGxpY2VfdXBsb2FkLgogIC0gRG8gcHJvcGVyIGJv dW5kIGFuZCBvdmVyZmxvdyBjaGVja2luZy4KICAtIEFkZGVkICdjb25zdCcgb24gW3RleHQscm8s cnddX2FkZHIuCiAgLSBNYWRlICdjYWxjX3NlY3Rpb24nIGFuZCAnbW92ZV9wYXlsb2FkJyB1c2Ug YW4gZHluYW1pY2FsbHkKICAgIGFsbG9jYXRlZCBhcnJheSBmb3IgY29tcHV0ZWQgb2Zmc2V0cyBp bnN0ZWFkIG9mIG1vZGlmeWluZyBzaF9lbnRzaXplLgogIC0gUmVtb3ZlIGFyY2hfeHNwbGljZV9b YWxsb2NfcGF5bG9hZHxmcmVlXSBhbmQgdXNlIHZ6YWxsb2NfeGVuIGFuZAogICAgdmZyZWUuCiAg LSBDb2xsYXBzZSBmb3IgbG9vcCBpbiBtb3ZlX3BheWxvYWQuCiAgLSBNb3ZlIHhzcGxpY2UubyBp biBNYWtlZmlsZQogIC0gQWRkIG1vcmUgY2hlY2tzIGluIGFyY2hfeHNwbGljZV9wZXJmb3JtX3Jl bGEgKHJfb2Zmc2V0IGFuZAogICAgIHNoX3NpemUgJSBzaF9lbnRzaXplKQogIC0gVXNlIGludDMy X3QgYW5kIGludDY0X3QgaW4gYXJjaF94c3BsaWNlX3BlcmZvcm1fcmVsYS4KICAtIFRpZ2h0ZW4g dGhlIGxpc3Qgb2Ygc2hfZmxhZ3Mgd2UgY2hlY2sKICAtIFVzZSBpbnRlcm1lZGlhdGUgb24gJ2J1 Zicgc28gdGhhdCB3ZSBjYW4gZG8gJ2NvbnN0IHZvaWQgKicKICAtIFVzZSBpbnRlcm1lZGlhdGUg aW4geHNwbGljZV9lbGZfcmVzb2x2ZV9zeW1ib2xzIGZvciAnY29uc3QnIG9mIGVsZi0+c3ltLgog IC0gRmFpbCBpZiAoYW5kIG9ubHkpIFNIRl9BTExPQyBhbmQgU0hUX05PQklUUyBzZWN0aW9uIGlz IHNlZW4uCi0tLQogeGVuL2FyY2gvYXJtL01ha2VmaWxlICAgICAgICAgfCAgIDEgKwogeGVuL2Fy Y2gvYXJtL3hzcGxpY2UuYyAgICAgICAgfCAgNDUgKysrKysrKysKIHhlbi9hcmNoL3g4Ni9NYWtl ZmlsZSAgICAgICAgIHwgICAxICsKIHhlbi9hcmNoL3g4Ni94c3BsaWNlLmMgICAgICAgIHwgMTY1 ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiB4ZW4vY29tbW9uL3hzcGxpY2UuYyAgICAg ICAgICB8IDIzNCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0KIHhl bi9jb21tb24veHNwbGljZV9lbGYuYyAgICAgIHwgMTIwICsrKysrKysrKysrKysrKysrKysrKy0K IHhlbi9pbmNsdWRlL3hlbi9lbGZzdHJ1Y3RzLmggIHwgICA0ICsKIHhlbi9pbmNsdWRlL3hlbi94 c3BsaWNlLmggICAgIHwgIDI0ICsrKysrCiB4ZW4vaW5jbHVkZS94ZW4veHNwbGljZV9lbGYuaCB8 ICAxMSArLQogOSBmaWxlcyBjaGFuZ2VkLCA1OTUgaW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25z KC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgeGVuL2FyY2gvYXJtL3hzcGxpY2UuYwogY3JlYXRlIG1v ZGUgMTAwNjQ0IHhlbi9hcmNoL3g4Ni94c3BsaWNlLmMKCmRpZmYgLS1naXQgYS94ZW4vYXJjaC9h cm0vTWFrZWZpbGUgYi94ZW4vYXJjaC9hcm0vTWFrZWZpbGUKaW5kZXggMDMyOGI1MC4uZWFlNWNi MyAxMDA2NDQKLS0tIGEveGVuL2FyY2gvYXJtL01ha2VmaWxlCisrKyBiL3hlbi9hcmNoL2FybS9N YWtlZmlsZQpAQCAtNDAsNiArNDAsNyBAQCBvYmoteSArPSBkZXZpY2Uubwogb2JqLXkgKz0gZGVj b2RlLm8KIG9iai15ICs9IHByb2Nlc3Nvci5vCiBvYmoteSArPSBzbWMubworb2JqLSQoQ09ORklH X1hTUExJQ0UpICs9IHhzcGxpY2UubwogCiAjb2JqLWJpbi15ICs9IC4uLi5vCiAKZGlmZiAtLWdp dCBhL3hlbi9hcmNoL2FybS94c3BsaWNlLmMgYi94ZW4vYXJjaC9hcm0veHNwbGljZS5jCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM3YmNjOGUKLS0tIC9kZXYvbnVsbAorKysg Yi94ZW4vYXJjaC9hcm0veHNwbGljZS5jCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiAgQ29weXJp Z2h0IChDKSAyMDE2IENpdHJpeCBTeXN0ZW1zIFImRCBMdGQuCisgKi8KKyNpbmNsdWRlIDx4ZW4v bGliLmg+CisjaW5jbHVkZSA8eGVuL2Vycm5vLmg+CisjaW5jbHVkZSA8eGVuL3hzcGxpY2VfZWxm Lmg+CisjaW5jbHVkZSA8eGVuL3hzcGxpY2UuaD4KKworaW50IGFyY2hfeHNwbGljZV92ZXJpZnlf ZWxmKGNvbnN0IHN0cnVjdCB4c3BsaWNlX2VsZiAqZWxmKQoreworICAgIHJldHVybiAtRU5PU1lT OworfQorCitpbnQgYXJjaF94c3BsaWNlX3BlcmZvcm1fcmVsKHN0cnVjdCB4c3BsaWNlX2VsZiAq ZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgeHNwbGljZV9l bGZfc2VjICpiYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3Qg eHNwbGljZV9lbGZfc2VjICpyZWxhKQoreworICAgIHJldHVybiAtRU5PU1lTOworfQorCitpbnQg YXJjaF94c3BsaWNlX3BlcmZvcm1fcmVsYShzdHJ1Y3QgeHNwbGljZV9lbGYgKmVsZiwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCB4c3BsaWNlX2VsZl9zZWMgKmJh c2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgeHNwbGljZV9l bGZfc2VjICpyZWxhKQoreworICAgIHJldHVybiAtRU5PU1lTOworfQorCitpbnQgYXJjaF94c3Bs aWNlX3NlY3VyZShjb25zdCB2b2lkICp2YSwgdW5zaWduZWQgaW50IHBhZ2VzLCBlbnVtIHZhX3R5 cGUgdHlwZSkKK3sKKyAgICByZXR1cm4gLUVOT1NZUzsKK30KKwordm9pZCBhcmNoX3hzcGxpY2Vf aW5pdCh2b2lkKQoreworfQorCisvKgorICogTG9jYWwgdmFyaWFibGVzOgorICogbW9kZTogQwor ICogYy1maWxlLXN0eWxlOiAiQlNEIgorICogYy1iYXNpYy1vZmZzZXQ6IDQKKyAqIHRhYi13aWR0 aDogNAorICogaW5kZW50LXRhYnMtbW9kZTogbmlsCisgKiBFbmQ6CisgKi8KZGlmZiAtLWdpdCBh L3hlbi9hcmNoL3g4Ni9NYWtlZmlsZSBiL3hlbi9hcmNoL3g4Ni9NYWtlZmlsZQppbmRleCA3Mjkw NjViLi5mNzRmZDJjIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvTWFrZWZpbGUKKysrIGIveGVu L2FyY2gveDg2L01ha2VmaWxlCkBAIC02MSw2ICs2MSw3IEBAIG9iai15ICs9IHg4Nl9lbXVsYXRl Lm8KIG9iai15ICs9IHRib290Lm8KIG9iai15ICs9IGhwZXQubwogb2JqLXkgKz0gdm1fZXZlbnQu bworb2JqLSQoQ09ORklHX1hTUExJQ0UpICs9IHhzcGxpY2Uubwogb2JqLXkgKz0geHN0YXRlLm8K IAogb2JqLSQoY3Jhc2hfZGVidWcpICs9IGdkYnN0dWIubwpkaWZmIC0tZ2l0IGEveGVuL2FyY2gv eDg2L3hzcGxpY2UuYyBiL3hlbi9hcmNoL3g4Ni94c3BsaWNlLmMKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMC4uZjk1NDYzZQotLS0gL2Rldi9udWxsCisrKyBiL3hlbi9hcmNoL3g4 Ni94c3BsaWNlLmMKQEAgLTAsMCArMSwxNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYg Q2l0cml4IFN5c3RlbXMgUiZEIEx0ZC4KKyAqLworCisjaW5jbHVkZSA8eGVuL2Vycm5vLmg+Cisj aW5jbHVkZSA8eGVuL2xpYi5oPgorI2luY2x1ZGUgPHhlbi9tbS5oPgorI2luY2x1ZGUgPHhlbi9w Zm4uaD4KKyNpbmNsdWRlIDx4ZW4vdm1hcC5oPgorI2luY2x1ZGUgPHhlbi94c3BsaWNlX2VsZi5o PgorI2luY2x1ZGUgPHhlbi94c3BsaWNlLmg+CisKK2ludCBhcmNoX3hzcGxpY2VfdmVyaWZ5X2Vs Zihjb25zdCBzdHJ1Y3QgeHNwbGljZV9lbGYgKmVsZikKK3sKKworICAgIGNvbnN0IEVsZl9FaGRy ICpoZHIgPSBlbGYtPmhkcjsKKworICAgIGlmICggaGRyLT5lX21hY2hpbmUgIT0gRU1fWDg2XzY0 ICkKKyAgICB7CisgICAgICAgIGRwcmludGsoWEVOTE9HX0VSUiwgWFNQTElDRSAiJXM6IFVuc3Vw cG9ydGVkIEVMRiBNYWNoaW5lIHR5cGUhXG4iLAorICAgICAgICAgICAgICAgIGVsZi0+bmFtZSk7 CisgICAgICAgIHJldHVybiAtRU9QTk9UU1VQUDsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30K KworaW50IGFyY2hfeHNwbGljZV9wZXJmb3JtX3JlbChzdHJ1Y3QgeHNwbGljZV9lbGYgKmVsZiwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHhzcGxpY2VfZWxmX3Nl YyAqYmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHhzcGxp Y2VfZWxmX3NlYyAqcmVsYSkKK3sKKyAgICBkcHJpbnRrKFhFTkxPR19FUlIsIFhTUExJQ0UgIiVz OiBTSFRfUkVMIHJlbG9jYXRpb24gdW5zdXBwb3J0ZWRcbiIsCisgICAgICAgICAgICBlbGYtPm5h bWUpOworICAgIHJldHVybiAtRU9QTk9UU1VQUDsKK30KKworaW50IGFyY2hfeHNwbGljZV9wZXJm b3JtX3JlbGEoc3RydWN0IHhzcGxpY2VfZWxmICplbGYsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjb25zdCBzdHJ1Y3QgeHNwbGljZV9lbGZfc2VjICpiYXNlLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHhzcGxpY2VfZWxmX3NlYyAqcmVsYSkKK3sK KyAgICBjb25zdCBFbGZfUmVsQSAqcjsKKyAgICB1bnNpZ25lZCBpbnQgc3ltbmR4LCBpOworICAg IHVpbnQ2NF90IHZhbDsKKyAgICB1aW50OF90ICpkZXN0OworCisgICAgLyogTm90aGluZyB0byBk by4gKi8KKyAgICBpZiAoICFyZWxhLT5zZWMtPnNoX3NpemUgKQorICAgICAgICByZXR1cm4gMDsK KworICAgIGlmICggIXJlbGEtPnNlYy0+c2hfZW50c2l6ZSB8fAorICAgICAgICAgcmVsYS0+c2Vj LT5zaF9lbnRzaXplIDwgc2l6ZW9mKEVsZl9SZWxBKSB8fAorICAgICAgICAgcmVsYS0+c2VjLT5z aF9zaXplICUgcmVsYS0+c2VjLT5zaF9lbnRzaXplICkKKyAgICB7CisgICAgICAgIGRwcmludGso WEVOTE9HX0VSUiwgWFNQTElDRSAiJXM6IFNlY3Rpb24gcmVsYXRpdmUgaGVhZGVyIGlzIGNvcnJ1 cHRlZCFcbiIsCisgICAgICAgICAgICAgICAgZWxmLT5uYW1lKTsKKyAgICAgICAgcmV0dXJuIC1F SU5WQUw7CisgICAgfQorCisgICAgZm9yICggaSA9IDA7IGkgPCAocmVsYS0+c2VjLT5zaF9zaXpl IC8gcmVsYS0+c2VjLT5zaF9lbnRzaXplKTsgaSsrICkKKyAgICB7CisgICAgICAgIHIgPSByZWxh LT5kYXRhICsgaSAqIHJlbGEtPnNlYy0+c2hfZW50c2l6ZTsKKworICAgICAgICBzeW1uZHggPSBF TEY2NF9SX1NZTShyLT5yX2luZm8pOworCisgICAgICAgIGlmICggc3ltbmR4ID4gZWxmLT5uc3lt ICkKKyAgICAgICAgeworICAgICAgICAgICAgZHByaW50ayhYRU5MT0dfRVJSLCBYU1BMSUNFICIl czogUmVsYXRpdmUgcmVsb2NhdGlvbiB3YW50cyBzeW1ib2xAJXUgd2hpY2ggaXMgcGFzdCBlbmQh XG4iLAorICAgICAgICAgICAgICAgICAgICBlbGYtPm5hbWUsIHN5bW5keCk7CisgICAgICAgICAg ICByZXR1cm4gLUVJTlZBTDsKKyAgICAgICAgfQorCisgICAgICAgIGlmICggci0+cl9vZmZzZXQg PiBiYXNlLT5zZWMtPnNoX3NpemUgKQorICAgICAgICB7CisgICAgICAgICAgICBkcHJpbnRrKFhF TkxPR19FUlIsIFhTUExJQ0UgIiVzOiBSZWxhdGl2ZSByZWxvY2F0aW9uIG9mZnNldCBpcyBwYXN0 ICVzIHNlY3Rpb24hXG4iLAorICAgICAgICAgICAgICAgICAgICBlbGYtPm5hbWUsIGJhc2UtPm5h bWUpOworICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisgICAgICAgIH0KKworICAgICAgICBk ZXN0ID0gYmFzZS0+bG9hZF9hZGRyICsgci0+cl9vZmZzZXQ7CisgICAgICAgIHZhbCA9IHItPnJf YWRkZW5kICsgZWxmLT5zeW1bc3ltbmR4XS5zeW0tPnN0X3ZhbHVlOworCisgICAgICAgIHN3aXRj aCAoIEVMRjY0X1JfVFlQRShyLT5yX2luZm8pICkKKyAgICAgICAgeworICAgICAgICBjYXNlIFJf WDg2XzY0X05PTkU6CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIFJfWDg2XzY0 XzY0OgorICAgICAgICAgICAgKih1aW50NjRfdCAqKWRlc3QgPSB2YWw7CisgICAgICAgICAgICBi cmVhazsKKworICAgICAgICBjYXNlIFJfWDg2XzY0X1BMVDMyOgorICAgICAgICAgICAgLyoKKyAg ICAgICAgICAgICAqIFhlbiB1c2VzIC1mcGljIHdoaWNoIG5vcm1hbGx5IHVzZXMgUExUIHJlbG9j YXRpb25zCisgICAgICAgICAgICAgKiBleGNlcHQgdGhhdCBpdCBzZXRzIHZpc2liaWxpdHkgdG8g aGlkZGVuIHdoaWNoIG1lYW5zCisgICAgICAgICAgICAgKiB0aGF0IHRoZXkgYXJlIG5vdCB1c2Vk LiAgSG93ZXZlciwgd2hlbiBnY2MgY2Fubm90CisgICAgICAgICAgICAgKiBpbmxpbmUgbWVtY3B5 IGl0IGVtaXRzIG1lbWNweSB3aXRoIGRlZmF1bHQgdmlzaWJpbGl0eQorICAgICAgICAgICAgICog d2hpY2ggdGhlbiBjcmVhdGVzIGEgUExUIHJlbG9jYXRpb24uICBJdCBjYW4ganVzdCBiZQorICAg ICAgICAgICAgICogdHJlYXRlZCB0aGUgc2FtZSBhcyBSX1g4Nl82NF9QQzMyLgorICAgICAgICAg ICAgICovCisgICAgICAgIGNhc2UgUl9YODZfNjRfUEMzMjoKKyAgICAgICAgICAgIHZhbCAtPSAo dWludDY0X3QpZGVzdDsKKyAgICAgICAgICAgICooaW50MzJfdCAqKWRlc3QgPSB2YWw7CisgICAg ICAgICAgICBpZiAoIChpbnQ2NF90KXZhbCAhPSAqKGludDMyX3QgKilkZXN0ICkKKyAgICAgICAg ICAgIHsKKyAgICAgICAgICAgICAgICBkcHJpbnRrKFhFTkxPR19FUlIsIFhTUExJQ0UgIiVzOiBP dmVyZmxvdyBpbiByZWxvY2F0aW9uICV1IGluICVzIGZvciAlcyFcbiIsCisgICAgICAgICAgICAg ICAgICAgICAgICBlbGYtPm5hbWUsIGksIHJlbGEtPm5hbWUsIGJhc2UtPm5hbWUpOworICAgICAg ICAgICAgICAgIHJldHVybiAtRU9WRVJGTE9XOworICAgICAgICAgICAgfQorICAgICAgICAgICAg YnJlYWs7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGRwcmludGsoWEVOTE9HX0VS UiwgWFNQTElDRSAiJXM6IFVuaGFuZGxlZCByZWxvY2F0aW9uICVsdVxuIiwKKyAgICAgICAgICAg ICAgICAgICAgZWxmLT5uYW1lLCBFTEY2NF9SX1RZUEUoci0+cl9pbmZvKSk7CisgICAgICAgICAg ICByZXR1cm4gLUVPUE5PVFNVUFA7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gMDsK K30KKworLyoKKyAqIE9uY2UgdGhlIHJlc29sdmluZyBzeW1ib2xzLCBwZXJmb3JtaW5nIHJlbG9j YXRpb25zLCBldGMgaXMgY29tcGxldGUKKyAqIHdlIHNlY3VyZSB0aGUgbWVtb3J5IGJ5IHB1dHRp bmcgaW4gdGhlIHByb3BlciBwYWdlIHRhYmxlIGF0dHJpYnV0ZXMKKyAqIGZvciB0aGUgZGVzaXJl ZCB0eXBlLgorICovCitpbnQgYXJjaF94c3BsaWNlX3NlY3VyZShjb25zdCB2b2lkICp2YSwgdW5z aWduZWQgaW50IHBhZ2VzLCBlbnVtIHZhX3R5cGUgdHlwZSkKK3sKKyAgICB1bnNpZ25lZCBsb25n IHN0YXJ0ID0gKHVuc2lnbmVkIGxvbmcpdmE7CisgICAgdW5zaWduZWQgaW50IGZsYWc7CisKKyAg ICBBU1NFUlQodmEpOworICAgIEFTU0VSVChwYWdlcyk7CisKKyAgICBpZiAoIHR5cGUgPT0gWFNQ TElDRV9WQV9SWCApCisgICAgICAgIGZsYWcgPSBQQUdFX0hZUEVSVklTT1JfUlg7CisgICAgZWxz ZSBpZiAoIHR5cGUgPT0gWFNQTElDRV9WQV9SVyApCisgICAgICAgIGZsYWcgPSBQQUdFX0hZUEVS VklTT1JfUlc7CisgICAgZWxzZQorICAgICAgICBmbGFnID0gUEFHRV9IWVBFUlZJU09SX1JPOwor CisgICAgbW9kaWZ5X3hlbl9tYXBwaW5ncyhzdGFydCwgc3RhcnQgKyBwYWdlcyAqIFBBR0VfU0la RSwgZmxhZyk7CisKKyAgICByZXR1cm4gMDsKK30KKwordm9pZCBhcmNoX3hzcGxpY2VfaW5pdCh2 b2lkKQoreworICAgIHZvaWQgKnN0YXJ0LCAqZW5kOworCisgICAgc3RhcnQgPSAodm9pZCAqKXhl bl92aXJ0X2VuZDsKKyAgICBlbmQgPSAodm9pZCAqKShYRU5fVklSVF9FTkQgLSBOUl9DUFVTICog UEFHRV9TSVpFKTsKKworICAgIEJVR19PTihlbmQgPD0gc3RhcnQpOworCisgICAgdm1faW5pdF90 eXBlKFZNQVBfWEVOLCBzdGFydCwgZW5kKTsKK30KKy8qCisgKiBMb2NhbCB2YXJpYWJsZXM6Cisg KiBtb2RlOiBDCisgKiBjLWZpbGUtc3R5bGU6ICJCU0QiCisgKiBjLWJhc2ljLW9mZnNldDogNAor ICogdGFiLXdpZHRoOiA0CisgKiBpbmRlbnQtdGFicy1tb2RlOiBuaWwKKyAqIEVuZDoKKyAqLwpk aWZmIC0tZ2l0IGEveGVuL2NvbW1vbi94c3BsaWNlLmMgYi94ZW4vY29tbW9uL3hzcGxpY2UuYwpp bmRleCA0ODc4YTU3Li5mZDMzYTUzIDEwMDY0NAotLS0gYS94ZW4vY29tbW9uL3hzcGxpY2UuYwor KysgYi94ZW4vY29tbW9uL3hzcGxpY2UuYwpAQCAtMTMsNiArMTMsNyBAQAogI2luY2x1ZGUgPHhl bi9zbXAuaD4KICNpbmNsdWRlIDx4ZW4vc3BpbmxvY2suaD4KICNpbmNsdWRlIDx4ZW4vdm1hcC5o PgorI2luY2x1ZGUgPHhlbi94c3BsaWNlX2VsZi5oPgogI2luY2x1ZGUgPHhlbi94c3BsaWNlLmg+ CiAKICNpbmNsdWRlIDxhc20vZXZlbnQuaD4KQEAgLTI5LDYgKzMwLDEzIEBAIHN0cnVjdCBwYXls b2FkIHsKICAgICB1aW50MzJfdCBzdGF0ZTsgICAgICAgICAgICAgICAgICAgICAgLyogT25lIG9m IHRoZSBYU1BMSUNFX1NUQVRFXyouICovCiAgICAgaW50MzJfdCByYzsgICAgICAgICAgICAgICAg ICAgICAgICAgIC8qIDAgb3IgLVhFTl9FWFguICovCiAgICAgc3RydWN0IGxpc3RfaGVhZCBsaXN0 OyAgICAgICAgICAgICAgIC8qIExpbmtlZCB0byAncGF5bG9hZF9saXN0Jy4gKi8KKyAgICBjb25z dCB2b2lkICp0ZXh0X2FkZHI7ICAgICAgICAgICAgICAgLyogVmlydHVhbCBhZGRyZXNzIG9mIC50 ZXh0LiAqLworICAgIHNpemVfdCB0ZXh0X3NpemU7ICAgICAgICAgICAgICAgICAgICAvKiAuLiBh bmQgaXRzIHNpemUuICovCisgICAgY29uc3Qgdm9pZCAqcndfYWRkcjsgICAgICAgICAgICAgICAg IC8qIFZpcnR1YWwgYWRkcmVzcyBvZiAuZGF0YS4gKi8KKyAgICBzaXplX3Qgcndfc2l6ZTsgICAg ICAgICAgICAgICAgICAgICAgLyogLi4gYW5kIGl0cyBzaXplIChpZiBhbnkpLiAqLworICAgIGNv bnN0IHZvaWQgKnJvX2FkZHI7ICAgICAgICAgICAgICAgICAvKiBWaXJ0dWFsIGFkZHJlc3Mgb2Yg LnJvZGF0YS4gKi8KKyAgICBzaXplX3Qgcm9fc2l6ZTsgICAgICAgICAgICAgICAgICAgICAgLyog Li4gYW5kIGl0cyBzaXplIChpZiBhbnkpLiAqLworICAgIHVuc2lnbmVkIGludCBwYWdlczsgICAg ICAgICAgICAgICAgICAvKiBUb3RhbCBwYWdlcyBmb3IgW3RleHQscncscm9dX2FkZHIgKi8KICAg ICBjaGFyIG5hbWVbWEVOX1hTUExJQ0VfTkFNRV9TSVpFXTsgICAgLyogTmFtZSBvZiBpdC4gKi8K IH07CiAKQEAgLTg2LDE5ICs5NCwyMjAgQEAgc3RhdGljIHN0cnVjdCBwYXlsb2FkICpmaW5kX3Bh eWxvYWQoY29uc3QgY2hhciAqbmFtZSkKICAgICByZXR1cm4gZm91bmQ7CiB9CiAKKy8qCisgKiBG dW5jdGlvbnMgcmVsYXRlZCB0byBYRU5fU1lTQ1RMX1hTUExJQ0VfVVBMT0FEIChzZWUgeHNwbGlj ZV91cGxvYWQpLCBhbmQKKyAqIGZyZWVpbmcgcGF5bG9hZCAoWEVOX1NZU0NUTF9YU1BMSUNFX0FD VElPTjpYU1BMSUNFX0FDVElPTl9VTkxPQUQpLgorICovCisKK3N0YXRpYyB2b2lkIGZyZWVfcGF5 bG9hZF9kYXRhKHN0cnVjdCBwYXlsb2FkICpwYXlsb2FkKQoreworICAgIC8qIFNldCB0byB6ZXJv IHVudGlsICJtb3ZlX3BheWxvYWQiLiAqLworICAgIGlmICggIXBheWxvYWQtPnRleHRfYWRkciAp CisgICAgICAgIHJldHVybjsKKworICAgIHZmcmVlKCh2b2lkICopcGF5bG9hZC0+dGV4dF9hZGRy KTsKKworICAgIHBheWxvYWQtPnBhZ2VzID0gMDsKK30KKworLyoKKyogY2FsY19zZWN0aW9uIGNv bXB1dGVzIHRoZSBzaXplICh0YWtpbmcgaW50byBhY2NvdW50IHNlY3Rpb24gYWxpZ25tZW50KS4K KyoKKyogRnVydGhlcm1vcmUgdGhlIG9mZnNldCBpcyBzZXQgd2l0aCB0aGUgb2Zmc2V0IGZyb20g dGhlIHN0YXJ0IG9mIHRoZSB2aXJ0dWFsCisqIGFkZHJlc3Mgc3BhY2UgZm9yIHRoZSBwYXlsb2Fk ICh1c2luZyBwYXNzZWQgaW4gc2l6ZSkuIFRoaXMgaXMgdXNlZCBpbgorKiBtb3ZlX3BheWxvYWQg dG8gZmlndXJlIG91dCB0aGUgZGVzdGluYXRpb24gbG9jYXRpb24gKGxvYWRfYWRkcikuCisqLwor c3RhdGljIHZvaWQgY2FsY19zZWN0aW9uKGNvbnN0IHN0cnVjdCB4c3BsaWNlX2VsZl9zZWMgKnNl Yywgc2l6ZV90ICpzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCAq b2Zmc2V0KQoreworICAgIGNvbnN0IEVsZl9TaGRyICpzID0gc2VjLT5zZWM7CisgICAgc2l6ZV90 IGFsaWduX3NpemU7CisKKyAgICBhbGlnbl9zaXplID0gUk9VTkRVUCgqc2l6ZSwgcy0+c2hfYWRk cmFsaWduKTsKKyAgICAqb2Zmc2V0ID0gYWxpZ25fc2l6ZTsKKyAgICAqc2l6ZSA9IHMtPnNoX3Np emUgKyBhbGlnbl9zaXplOworfQorCitzdGF0aWMgaW50IG1vdmVfcGF5bG9hZChzdHJ1Y3QgcGF5 bG9hZCAqcGF5bG9hZCwgc3RydWN0IHhzcGxpY2VfZWxmICplbGYpCit7CisgICAgdWludDhfdCAq dGV4dF9idWYsICpyb19idWYsICpyd19idWY7CisgICAgdW5zaWduZWQgaW50IGk7CisgICAgc2l6 ZV90IHNpemUgPSAwOworICAgIHVuc2lnbmVkIGludCAqb2Zmc2V0OworICAgIGludCByYyA9IDA7 CisKKyAgICBvZmZzZXQgPSB4emFsbG9jX2FycmF5KHVuc2lnbmVkIGludCwgZWxmLT5oZHItPmVf c2hudW0pOworICAgIGlmICggIW9mZnNldCApCisgICAgICAgIHJldHVybiAtRU5PTUVNOworCisg ICAgLyogQ29tcHV0ZSBzaXplIG9mIGRpZmZlcmVudCByZWdpb25zLiAqLworICAgIGZvciAoIGkg PSAxOyBpIDwgZWxmLT5oZHItPmVfc2hudW07IGkrKyApCisgICAgeworICAgICAgICBpZiAoIChl bGYtPnNlY1tpXS5zZWMtPnNoX2ZsYWdzICYgKFNIRl9BTExPQ3xTSEZfRVhFQ0lOU1RSKSkgPT0K KyAgICAgICAgICAgICAoU0hGX0FMTE9DfFNIRl9FWEVDSU5TVFIpICkKKyAgICAgICAgICAgIGNh bGNfc2VjdGlvbigmZWxmLT5zZWNbaV0sICZwYXlsb2FkLT50ZXh0X3NpemUsICZvZmZzZXRbaV0p OworICAgICAgICBlbHNlIGlmICggKGVsZi0+c2VjW2ldLnNlYy0+c2hfZmxhZ3MgJiBTSEZfQUxM T0MpICYmCisgICAgICAgICAgICAgICAgICAhKGVsZi0+c2VjW2ldLnNlYy0+c2hfZmxhZ3MgJiBT SEZfRVhFQ0lOU1RSKSAmJgorICAgICAgICAgICAgICAgICAgKGVsZi0+c2VjW2ldLnNlYy0+c2hf ZmxhZ3MgJiBTSEZfV1JJVEUpICkKKyAgICAgICAgICAgIGNhbGNfc2VjdGlvbigmZWxmLT5zZWNb aV0sICZwYXlsb2FkLT5yd19zaXplLCAmb2Zmc2V0W2ldKTsKKyAgICAgICAgZWxzZSBpZiAoIChl bGYtPnNlY1tpXS5zZWMtPnNoX2ZsYWdzICYgU0hGX0FMTE9DKSAmJgorICAgICAgICAgICAgICAg ICAgIShlbGYtPnNlY1tpXS5zZWMtPnNoX2ZsYWdzICYgU0hGX0VYRUNJTlNUUikgJiYKKyAgICAg ICAgICAgICAgICAgICEoZWxmLT5zZWNbaV0uc2VjLT5zaF9mbGFncyAmIFNIRl9XUklURSkgKQor ICAgICAgICAgICAgY2FsY19zZWN0aW9uKCZlbGYtPnNlY1tpXSwgJnBheWxvYWQtPnJvX3NpemUs ICZvZmZzZXRbaV0pOworICAgICAgICBlbHNlIGlmICggIWVsZi0+c2VjW2ldLnNlYy0+c2hfZmxh Z3MgfHwKKyAgICAgICAgICAgICAgICAgIChlbGYtPnNlY1tpXS5zZWMtPnNoX2ZsYWdzICYgU0hG X0VYRUNJTlNUUikgfHwKKyAgICAgICAgICAgICAgICAgIChlbGYtPnNlY1tpXS5zZWMtPnNoX2Zs YWdzICYgU0hGX01BU0tQUk9DKSApCisgICAgICAgICAgICAvKiBEbyBub3RoaW5nLiovOworICAg ICAgICBlbHNlIGlmICggKGVsZi0+c2VjW2ldLnNlYy0+c2hfZmxhZ3MgJiBTSEZfQUxMT0MpICYm CisgICAgICAgICAgICAgICAgICAoZWxmLT5zZWNbaV0uc2VjLT5zaF90eXBlID09IFNIVF9OT0JJ VFMpICkKKyAgICAgICAgeworICAgICAgICAgICAgZHByaW50ayhYRU5MT0dfREVCVUcsIFhTUExJ Q0UgIiVzOiBOb3Qgc3VwcG9ydGluZyAlcyBzZWN0aW9uIVxuIiwKKyAgICAgICAgICAgICAgICAg ICAgZWxmLT5uYW1lLCBlbGYtPnNlY1tpXS5uYW1lKTsKKyAgICAgICAgICAgIHJjID0gLUVPUE5P VFNVUFA7CisgICAgICAgICAgICBnb3RvIG91dDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIC8q IFN1Y2ggYXMgLmNvbW1lbnQuICovCisgICAgICAgICAgICBkcHJpbnRrKFhFTkxPR19ERUJVRywg WFNQTElDRSAiJXM6IElnbm9yaW5nICVzIHNlY3Rpb24hXG4iLAorICAgICAgICAgICAgICAgICAg ICBlbGYtPm5hbWUsIGVsZi0+c2VjW2ldLm5hbWUpOworICAgIH0KKworICAgIC8qCisgICAgICog VG90YWwgb2YgYWxsIHRocmVlIHJlZ2lvbnMgLSBSWCwgUlcsIGFuZCBSTy4gV2UgaGF2ZSB0byBo YXZlCisgICAgICoga2VlcCB0aGVtIGluIHNlcGVyYXRlIHBhZ2VzIHNvIHdlIFBBR0VfQUxJR04g dGhlIFJYIGFuZCBSVyB0byBoYXZlCisgICAgICogdGhlbSBvbiBzZXBlcmF0ZSBwYWdlcy4gVGhl IGxhc3Qgb25lIHdpbGwgYnkgZGVmYXVsdCBmYWxsIG9uIGl0cworICAgICAqIG93biBwYWdlLgor ICAgICAqLworICAgIHNpemUgPSBQQUdFX0FMSUdOKHBheWxvYWQtPnRleHRfc2l6ZSkgKyBQQUdF X0FMSUdOKHBheWxvYWQtPnJ3X3NpemUpICsKKyAgICAgICAgICAgICAgICAgICAgICBwYXlsb2Fk LT5yb19zaXplOworCisgICAgc2l6ZSA9IFBGTl9VUChzaXplKTsgLyogTnIgb2YgcGFnZXMuICov CisgICAgdGV4dF9idWYgPSB2emFsbG9jX3hlbihzaXplICogUEFHRV9TSVpFKTsKKyAgICBpZiAo ICF0ZXh0X2J1ZiApCisgICAgeworICAgICAgICBkcHJpbnRrKFhFTkxPR19FUlIsIFhTUExJQ0Ug IiVzOiBDb3VsZCBub3QgYWxsb2NhdGUgbWVtb3J5IGZvciBwYXlsb2FkIVxuIiwKKyAgICAgICAg ICAgICAgICBlbGYtPm5hbWUpOworICAgICAgICByYyA9IC1FTk9NRU07CisgICAgICAgIGdvdG8g b3V0OworICAgIH0KKyAgICByd19idWYgPSB0ZXh0X2J1ZiArICArIFBBR0VfQUxJR04ocGF5bG9h ZC0+dGV4dF9zaXplKTsKKyAgICByb19idWYgPSByd19idWYgKyBQQUdFX0FMSUdOKHBheWxvYWQt PnJ3X3NpemUpOworCisgICAgcGF5bG9hZC0+cGFnZXMgPSBzaXplOworICAgIHBheWxvYWQtPnRl eHRfYWRkciA9IHRleHRfYnVmOworICAgIHBheWxvYWQtPnJ3X2FkZHIgPSByd19idWY7CisgICAg cGF5bG9hZC0+cm9fYWRkciA9IHJvX2J1ZjsKKworICAgIGZvciAoIGkgPSAxOyBpIDwgZWxmLT5o ZHItPmVfc2hudW07IGkrKyApCisgICAgeworICAgICAgICBpZiAoIGVsZi0+c2VjW2ldLnNlYy0+ c2hfZmxhZ3MgJiBTSEZfQUxMT0MgKQorICAgICAgICB7CisgICAgICAgICAgICB1aW50OF90ICpi dWY7CisgICAgICAgICAgICBpZiAoIChlbGYtPnNlY1tpXS5zZWMtPnNoX2ZsYWdzICYgU0hGX0VY RUNJTlNUUikgKQorICAgICAgICAgICAgICAgIGJ1ZiA9IHRleHRfYnVmOworICAgICAgICAgICAg ZWxzZSBpZiAoIChlbGYtPnNlY1tpXS5zZWMtPnNoX2ZsYWdzICYgU0hGX1dSSVRFKSApCisgICAg ICAgICAgICAgICAgYnVmID0gcndfYnVmOworICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg ICAgICBidWYgPSByb19idWY7CisKKyAgICAgICAgICAgIGVsZi0+c2VjW2ldLmxvYWRfYWRkciA9 IGJ1ZiArIG9mZnNldFtpXTsKKworICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAqIERvbid0 IGNvcHkgTk9CSVRTIC0gc3VjaCBhcyBCU1MuIFdlIGRvbid0IG1lbXNldCBCU1MgYXMKKyAgICAg ICAgICAgICAqIGFyY2hfeHNwbGljZV9hbGxvY19wYXlsb2FkIGhhcyB6ZXJvZWQgaXQgb3V0IGZv ciB1cy4KKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgaWYgKCBlbGYtPnNlY1tpXS5zZWMt PnNoX3R5cGUgIT0gU0hUX05PQklUUyApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg bWVtY3B5KGVsZi0+c2VjW2ldLmxvYWRfYWRkciwgZWxmLT5zZWNbaV0uZGF0YSwKKyAgICAgICAg ICAgICAgICAgICAgICAgZWxmLT5zZWNbaV0uc2VjLT5zaF9zaXplKTsKKyAgICAgICAgICAgICAg ICBkcHJpbnRrKFhFTkxPR19ERUJVRywgWFNQTElDRSAiJXM6IExvYWRlZCAlcyBhdCAlcFxuIiwK KyAgICAgICAgICAgICAgICAgICAgICAgIGVsZi0+bmFtZSwgZWxmLT5zZWNbaV0ubmFtZSwgZWxm LT5zZWNbaV0ubG9hZF9hZGRyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKwor IG91dDoKKyAgICB4ZnJlZShvZmZzZXQpOworCisgICAgcmV0dXJuIHJjOworfQorCitzdGF0aWMg aW50IHNlY3VyZV9wYXlsb2FkKHN0cnVjdCBwYXlsb2FkICpwYXlsb2FkLCBzdHJ1Y3QgeHNwbGlj ZV9lbGYgKmVsZikKK3sKKyAgICBpbnQgcmM7CisgICAgdW5zaWduZWQgaW50IHRleHRfcGFnZXMs IHJ3X3BhZ2VzLCByb19wYWdlczsKKworICAgIHRleHRfcGFnZXMgPSBQRk5fVVAocGF5bG9hZC0+ dGV4dF9zaXplKTsKKyAgICBBU1NFUlQodGV4dF9wYWdlcyk7CisKKyAgICByYyA9IGFyY2hfeHNw bGljZV9zZWN1cmUocGF5bG9hZC0+dGV4dF9hZGRyLCB0ZXh0X3BhZ2VzLCBYU1BMSUNFX1ZBX1JY KTsKKyAgICBpZiAoIHJjICkKKyAgICAgICAgcmV0dXJuIHJjOworCisgICAgcndfcGFnZXMgPSBQ Rk5fVVAocGF5bG9hZC0+cndfc2l6ZSk7CisgICAgaWYgKCByd19wYWdlcyApCisgICAgeworICAg ICAgICByYyA9IGFyY2hfeHNwbGljZV9zZWN1cmUocGF5bG9hZC0+cndfYWRkciwgcndfcGFnZXMs IFhTUExJQ0VfVkFfUlcpOworICAgICAgICBpZiAoIHJjICkKKyAgICAgICAgICAgIHJldHVybiBy YzsKKyAgICB9CisKKyAgICByb19wYWdlcyA9IFBGTl9VUChwYXlsb2FkLT5yb19zaXplKTsKKyAg ICBpZiAoIHJvX3BhZ2VzICkKKyAgICAgICAgcmMgPSBhcmNoX3hzcGxpY2Vfc2VjdXJlKHBheWxv YWQtPnJvX2FkZHIsIHJvX3BhZ2VzLCBYU1BMSUNFX1ZBX1JPKTsKKworICAgIEFTU0VSVChyb19w YWdlcyArIHJ3X3BhZ2VzICsgdGV4dF9wYWdlcyA9PSBwYXlsb2FkLT5wYWdlcyk7CisKKyAgICBy ZXR1cm4gcmM7Cit9CisKIHN0YXRpYyB2b2lkIGZyZWVfcGF5bG9hZChzdHJ1Y3QgcGF5bG9hZCAq ZGF0YSkKIHsKICAgICBBU1NFUlQoc3Bpbl9pc19sb2NrZWQoJnBheWxvYWRfbG9jaykpOwogICAg IGxpc3RfZGVsKCZkYXRhLT5saXN0KTsKICAgICBwYXlsb2FkX2NudC0tOwogICAgIHBheWxvYWRf dmVyc2lvbisrOworICAgIGZyZWVfcGF5bG9hZF9kYXRhKGRhdGEpOwogICAgIHhmcmVlKGRhdGEp OwogfQogCitzdGF0aWMgaW50IGxvYWRfcGF5bG9hZF9kYXRhKHN0cnVjdCBwYXlsb2FkICpwYXls b2FkLCB2b2lkICpyYXcsIHNpemVfdCBsZW4pCit7CisgICAgc3RydWN0IHhzcGxpY2VfZWxmIGVs ZiA9IHsgLm5hbWUgPSBwYXlsb2FkLT5uYW1lLCAubGVuID0gbGVuIH07CisgICAgaW50IHJjID0g MDsKKworICAgIHJjID0geHNwbGljZV9lbGZfbG9hZCgmZWxmLCByYXcpOworICAgIGlmICggcmMg KQorICAgICAgICBnb3RvIG91dDsKKworICAgIHJjID0gbW92ZV9wYXlsb2FkKHBheWxvYWQsICZl bGYpOworICAgIGlmICggcmMgKQorICAgICAgICBnb3RvIG91dDsKKworICAgIHJjID0geHNwbGlj ZV9lbGZfcmVzb2x2ZV9zeW1ib2xzKCZlbGYpOworICAgIGlmICggcmMgKQorICAgICAgICBnb3Rv IG91dDsKKworICAgIHJjID0geHNwbGljZV9lbGZfcGVyZm9ybV9yZWxvY3MoJmVsZik7CisgICAg aWYgKCByYyApCisgICAgICAgIGdvdG8gb3V0OworCisgICAgcmMgPSBzZWN1cmVfcGF5bG9hZChw YXlsb2FkLCAmZWxmKTsKKworIG91dDoKKyAgICBpZiAoIHJjICkKKyAgICAgICAgZnJlZV9wYXls b2FkX2RhdGEocGF5bG9hZCk7CisKKyAgICAvKiBGcmVlIG91ciB0ZW1wb3JhcnkgZGF0YSBzdHJ1 Y3R1cmUuICovCisgICAgeHNwbGljZV9lbGZfZnJlZSgmZWxmKTsKKworICAgIHJldHVybiByYzsK K30KKwogc3RhdGljIGludCB4c3BsaWNlX3VwbG9hZCh4ZW5fc3lzY3RsX3hzcGxpY2VfdXBsb2Fk X3QgKnVwbG9hZCkKIHsKICAgICBzdHJ1Y3QgcGF5bG9hZCAqZGF0YSwgKmZvdW5kOwogICAgIGNo YXIgbltYRU5fWFNQTElDRV9OQU1FX1NJWkVdOworICAgIHZvaWQgKnJhd19kYXRhOwogICAgIGlu dCByYzsKIAogICAgIHJjID0gdmVyaWZ5X3BheWxvYWQodXBsb2FkLCBuKTsKQEAgLTEwNiw2ICsz MTUsNyBAQCBzdGF0aWMgaW50IHhzcGxpY2VfdXBsb2FkKHhlbl9zeXNjdGxfeHNwbGljZV91cGxv YWRfdCAqdXBsb2FkKQogICAgICAgICByZXR1cm4gcmM7CiAKICAgICBkYXRhID0geHphbGxvYyhz dHJ1Y3QgcGF5bG9hZCk7CisgICAgcmF3X2RhdGEgPSB2bWFsbG9jKHVwbG9hZC0+c2l6ZSk7CiAK ICAgICBzcGluX2xvY2soJnBheWxvYWRfbG9jayk7CiAKQEAgLTEyMSwxNSArMzMxLDIwIEBAIHN0 YXRpYyBpbnQgeHNwbGljZV91cGxvYWQoeGVuX3N5c2N0bF94c3BsaWNlX3VwbG9hZF90ICp1cGxv YWQpCiAgICAgICAgIGdvdG8gb3V0OwogICAgIH0KIAotICAgIGlmICggIWRhdGEgKQotICAgIHsK LSAgICAgICAgcmMgPSAtRU5PTUVNOworICAgIHJjID0gLUVOT01FTTsKKyAgICBpZiAoICFkYXRh IHx8ICFyYXdfZGF0YSApCiAgICAgICAgIGdvdG8gb3V0OwotICAgIH0KIAotICAgIHJjID0gMDsK KyAgICByYyA9IC1FRkFVTFQ7CisgICAgaWYgKCBfX2NvcHlfZnJvbV9ndWVzdChyYXdfZGF0YSwg dXBsb2FkLT5wYXlsb2FkLCB1cGxvYWQtPnNpemUpICkKKyAgICAgICAgZ290byBvdXQ7CiAKICAg ICBtZW1jcHkoZGF0YS0+bmFtZSwgbiwgc3RybGVuKG4pKTsKKworICAgIHJjID0gbG9hZF9wYXls b2FkX2RhdGEoZGF0YSwgcmF3X2RhdGEsIHVwbG9hZC0+c2l6ZSk7CisgICAgaWYgKCByYyApCisg ICAgICAgIGdvdG8gb3V0OworCiAgICAgZGF0YS0+c3RhdGUgPSBYU1BMSUNFX1NUQVRFX0NIRUNL RUQ7CiAgICAgSU5JVF9MSVNUX0hFQUQoJmRhdGEtPmxpc3QpOwogCkBAIC0xNDAsNiArMzU1LDgg QEAgc3RhdGljIGludCB4c3BsaWNlX3VwbG9hZCh4ZW5fc3lzY3RsX3hzcGxpY2VfdXBsb2FkX3Qg KnVwbG9hZCkKICBvdXQ6CiAgICAgc3Bpbl91bmxvY2soJnBheWxvYWRfbG9jayk7CiAKKyAgICB2 ZnJlZShyYXdfZGF0YSk7CisKICAgICBpZiAoIHJjICkKICAgICAgICAgeGZyZWUoZGF0YSk7CiAK QEAgLTM4Myw4ICs2MDAsOSBAQCBzdGF0aWMgdm9pZCB4c3BsaWNlX3ByaW50YWxsKHVuc2lnbmVk IGNoYXIga2V5KQogICAgIH0KIAogICAgIGxpc3RfZm9yX2VhY2hfZW50cnkgKCBkYXRhLCAmcGF5 bG9hZF9saXN0LCBsaXN0ICkKLSAgICAgICAgcHJpbnRrKCIgbmFtZT0lcyBzdGF0ZT0lcyglZClc biIsIGRhdGEtPm5hbWUsCi0gICAgICAgICAgICAgICBzdGF0ZTJzdHIoZGF0YS0+c3RhdGUpLCBk YXRhLT5zdGF0ZSk7CisgICAgICAgIHByaW50aygiIG5hbWU9JXMgc3RhdGU9JXMoJWQpICVwICgu ZGF0YT0lcCwgLnJvZGF0YT0lcCkgdXNpbmcgJXUgcGFnZXMuXG4iLAorICAgICAgICAgICAgICAg ZGF0YS0+bmFtZSwgc3RhdGUyc3RyKGRhdGEtPnN0YXRlKSwgZGF0YS0+c3RhdGUsIGRhdGEtPnRl eHRfYWRkciwKKyAgICAgICAgICAgICAgIGRhdGEtPnJ3X2FkZHIsIGRhdGEtPnJvX2FkZHIsIGRh dGEtPnBhZ2VzKTsKIAogICAgIHNwaW5fdW5sb2NrKCZwYXlsb2FkX2xvY2spOwogfQpAQCAtMzky LDYgKzYxMCw4IEBAIHN0YXRpYyB2b2lkIHhzcGxpY2VfcHJpbnRhbGwodW5zaWduZWQgY2hhciBr ZXkpCiBzdGF0aWMgaW50IF9faW5pdCB4c3BsaWNlX2luaXQodm9pZCkKIHsKICAgICByZWdpc3Rl cl9rZXloYW5kbGVyKCd4JywgeHNwbGljZV9wcmludGFsbCwgInByaW50IHhzcGxpY2luZyBpbmZv IiwgMSk7CisKKyAgICBhcmNoX3hzcGxpY2VfaW5pdCgpOwogICAgIHJldHVybiAwOwogfQogX19p bml0Y2FsbCh4c3BsaWNlX2luaXQpOwpkaWZmIC0tZ2l0IGEveGVuL2NvbW1vbi94c3BsaWNlX2Vs Zi5jIGIveGVuL2NvbW1vbi94c3BsaWNlX2VsZi5jCmluZGV4IDJmZDQ4ZmIuLjg1MDExMzggMTAw NjQ0Ci0tLSBhL3hlbi9jb21tb24veHNwbGljZV9lbGYuYworKysgYi94ZW4vY29tbW9uL3hzcGxp Y2VfZWxmLmMKQEAgLTEwMyw3ICsxMDMsNyBAQCBzdGF0aWMgaW50IGVsZl9yZXNvbHZlX3NlY3Rp b25zKHN0cnVjdCB4c3BsaWNlX2VsZiAqZWxmLCBjb25zdCB2b2lkICpkYXRhKQogICAgICAgICAg ICAgfQogCiAgICAgICAgICAgICBlbGYtPnN5bXRhYiA9ICZzZWNbaV07Ci0KKyAgICAgICAgICAg IGVsZi0+c3ltdGFiX2lkeCA9IGk7CiAgICAgICAgICAgICAvKgogICAgICAgICAgICAgICogZWxm LT5zeW10YWItPnNlYy0+c2hfbGluayB3b3VsZCBwb2ludCB0byB0aGUgcmlnaHQgc2VjdGlvbgog ICAgICAgICAgICAgICogYnV0IHdlIGhhZG4ndCBmaW5pc2hlZCBwYXJzaW5nIGFsbCB0aGUgc2Vj dGlvbnMuCkBAIC0yNTIsOSArMjUyLDEyMyBAQCBzdGF0aWMgaW50IGVsZl9nZXRfc3ltKHN0cnVj dCB4c3BsaWNlX2VsZiAqZWxmLCBjb25zdCB2b2lkICpkYXRhKQogICAgIHJldHVybiAwOwogfQog CitpbnQgeHNwbGljZV9lbGZfcmVzb2x2ZV9zeW1ib2xzKHN0cnVjdCB4c3BsaWNlX2VsZiAqZWxm KQoreworICAgIHVuc2lnbmVkIGludCBpOworICAgIGludCByYyA9IDA7CisKKyAgICBBU1NFUlQo ZWxmLT5zeW0pOworCisgICAgZm9yICggaSA9IDE7IGkgPCBlbGYtPm5zeW07IGkrKyApCisgICAg eworICAgICAgICB1bnNpZ25lZCBpbnQgaWR4ID0gZWxmLT5zeW1baV0uc3ltLT5zdF9zaG5keDsK KyAgICAgICAgRWxmX1N5bSAqc3ltID0gKEVsZl9TeW0gKillbGYtPnN5bVtpXS5zeW07CisKKyAg ICAgICAgc3dpdGNoICggaWR4ICkKKyAgICAgICAgeworICAgICAgICBjYXNlIFNITl9DT01NT046 CisgICAgICAgICAgICBkcHJpbnRrKFhFTkxPR19FUlIsIFhTUExJQ0UgIiVzOiBVbmV4cGVjdGVk IGNvbW1vbiBzeW1ib2w6ICVzXG4iLAorICAgICAgICAgICAgICAgICAgICBlbGYtPm5hbWUsIGVs Zi0+c3ltW2ldLm5hbWUpOworICAgICAgICAgICAgcmMgPSAtRUlOVkFMOworICAgICAgICAgICAg YnJlYWs7CisKKyAgICAgICAgY2FzZSBTSE5fVU5ERUY6CisgICAgICAgICAgICBkcHJpbnRrKFhF TkxPR19FUlIsIFhTUExJQ0UgIiVzOiBVbmtub3duIHN5bWJvbDogJXNcbiIsCisgICAgICAgICAg ICAgICAgICAgIGVsZi0+bmFtZSwgZWxmLT5zeW1baV0ubmFtZSk7CisgICAgICAgICAgICByYyA9 IC1FTk9FTlQ7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIFNITl9BQlM6Cisg ICAgICAgICAgICBkcHJpbnRrKFhFTkxPR19ERUJVRywgWFNQTElDRSAiJXM6IEFic29sdXRlIHN5 bWJvbDogJXMgPT4gJSMiUFJJeEVsZkFkZHIiXG4iLAorICAgICAgICAgICAgICAgICAgICBlbGYt Pm5hbWUsIGVsZi0+c3ltW2ldLm5hbWUsIHN5bS0+c3RfdmFsdWUpOworICAgICAgICAgICAgYnJl YWs7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGlmICggaWR4IDwgZWxmLT5oZHIt PmVfc2hudW0gJiYKKyAgICAgICAgICAgICAgICAgIShlbGYtPnNlY1tpZHhdLnNlYy0+c2hfZmxh Z3MgJiBTSEZfQUxMT0MpICkKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAg LyogU0hOX0NPTU1PTiBhbmQgU0hOX0FCUyBhcmUgYWJvdmUuICovCisgICAgICAgICAgICBpZiAo IGlkeCA+PSBTSE5fTE9SRVNFUlZFICkKKyAgICAgICAgICAgICAgICByYyA9IC1FT1BOT1RTVVBQ OworICAgICAgICAgICAgZWxzZSBpZiAoIGlkeCA+PSBlbGYtPmhkci0+ZV9zaG51bSApCisgICAg ICAgICAgICAgICAgcmMgPSAtRUlOVkFMOworCisgICAgICAgICAgICBpZiAoIHJjICkKKyAgICAg ICAgICAgIHsKKyAgICAgICAgICAgICAgICBkcHJpbnRrKFhFTkxPR19FUlIsIFhTUExJQ0UgIiVz OiBVbmtub3duIHR5cGU9JSMiUFJJeDE2IlxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGVs Zi0+bmFtZSwgaWR4KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKwor ICAgICAgICAgICAgc3ltLT5zdF92YWx1ZSArPSAodW5zaWduZWQgbG9uZyllbGYtPnNlY1tpZHhd LmxvYWRfYWRkcjsKKyAgICAgICAgICAgIGlmICggZWxmLT5zeW1baV0ubmFtZSApCisgICAgICAg ICAgICAgICAgZHByaW50ayhYRU5MT0dfREVCVUcsIFhTUExJQ0UgIiVzOiBTeW1ib2wgcmVzb2x2 ZWQ6ICVzID0+ICUjIlBSSXhFbGZBZGRyIiglcylcbiIsCisgICAgICAgICAgICAgICAgICAgICAg IGVsZi0+bmFtZSwgZWxmLT5zeW1baV0ubmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgc3lt LT5zdF92YWx1ZSwgZWxmLT5zZWNbaWR4XS5uYW1lKTsKKyAgICAgICAgfQorCisgICAgICAgIGlm ICggcmMgKQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgcmV0dXJuIHJjOworfQor CitpbnQgeHNwbGljZV9lbGZfcGVyZm9ybV9yZWxvY3Moc3RydWN0IHhzcGxpY2VfZWxmICplbGYp Cit7CisgICAgc3RydWN0IHhzcGxpY2VfZWxmX3NlYyAqciwgKmJhc2U7CisgICAgdW5zaWduZWQg aW50IGk7CisgICAgaW50IHJjID0gMDsKKworICAgIC8qCisgICAgICogVGhlIGZpcnN0IGVudHJ5 IG9mIGFuIEVMRiBzeW1ib2wgdGFibGUgaXMgdGhlICJ1bmRlZmluZWQgc3ltYm9sIGluZGV4Ii4K KyAgICAgKiBha2EgcmVzZXJ2ZWQgc28gd2Ugc2tpcCBpdC4KKyAgICAgKi8KKyAgICBBU1NFUlQo ZWxmLT5zeW0pOworCisgICAgZm9yICggaSA9IDE7IGkgPCBlbGYtPmhkci0+ZV9zaG51bTsgaSsr ICkKKyAgICB7CisgICAgICAgIHIgPSAmZWxmLT5zZWNbaV07CisKKyAgICAgICAgaWYgKCAoci0+ c2VjLT5zaF90eXBlICE9IFNIVF9SRUxBKSAmJgorICAgICAgICAgICAgIChyLT5zZWMtPnNoX3R5 cGUgIT0gU0hUX1JFTCkgKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgIC8qIElz IGl0IGEgdmFsaWQgcmVsb2NhdGlvbiBzZWN0aW9uPyAqLworICAgICAgICAgaWYgKCByLT5zZWMt PnNoX2luZm8gPj0gZWxmLT5oZHItPmVfc2hudW0gKQorICAgICAgICAgICAgY29udGludWU7CisK KyAgICAgICAgIGJhc2UgPSAmZWxmLT5zZWNbci0+c2VjLT5zaF9pbmZvXTsKKworICAgICAgICAg LyogRG9uJ3QgcmVsb2NhdGUgbm9uLWFsbG9jYXRlZCBzZWN0aW9ucy4gKi8KKyAgICAgICAgIGlm ICggIShiYXNlLT5zZWMtPnNoX2ZsYWdzICYgU0hGX0FMTE9DKSApCisgICAgICAgICAgICBjb250 aW51ZTsKKworICAgICAgICBpZiAoIHItPnNlYy0+c2hfbGluayAhPSBlbGYtPnN5bXRhYl9pZHgg KQorICAgICAgICB7CisgICAgICAgICAgICBkcHJpbnRrKFhFTkxPR19FUlIsIFhTUExJQ0UgIiVz OiBSZWxhdGl2ZSBsaW5rIG9mICVzIGlzIGluY29ycmVjdCAoJWQsIGV4cGVjdGVkPSVkKVxuIiwK KyAgICAgICAgICAgICAgICAgICAgZWxmLT5uYW1lLCByLT5uYW1lLCByLT5zZWMtPnNoX2xpbmss IGVsZi0+c3ltdGFiX2lkeCk7CisgICAgICAgICAgICByYyA9IC1FSU5WQUw7CisgICAgICAgICAg ICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGlmICggci0+c2VjLT5zaF90eXBlID09IFNI VF9SRUxBICkKKyAgICAgICAgICAgIHJjID0gYXJjaF94c3BsaWNlX3BlcmZvcm1fcmVsYShlbGYs IGJhc2UsIHIpOworICAgICAgICBlbHNlIC8qIFNIVF9SRUwgKi8KKyAgICAgICAgICAgIHJjID0g YXJjaF94c3BsaWNlX3BlcmZvcm1fcmVsKGVsZiwgYmFzZSwgcik7CisKKyAgICAgICAgaWYgKCBy YyApCisgICAgICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICByZXR1cm4gcmM7Cit9CisKIHN0 YXRpYyBpbnQgeHNwbGljZV9oZWFkZXJfY2hlY2soY29uc3Qgc3RydWN0IHhzcGxpY2VfZWxmICpl bGYpCiB7CiAgICAgY29uc3QgRWxmX0VoZHIgKmhkciA9IGVsZi0+aGRyOworICAgIGludCByYzsK IAogICAgIGlmICggc2l6ZW9mKCplbGYtPmhkcikgPiBlbGYtPmxlbiApCiAgICAgewpAQCAtMjc5 LDYgKzM5MywxMCBAQCBzdGF0aWMgaW50IHhzcGxpY2VfaGVhZGVyX2NoZWNrKGNvbnN0IHN0cnVj dCB4c3BsaWNlX2VsZiAqZWxmKQogICAgICAgICByZXR1cm4gLUVPUE5PVFNVUFA7CiAgICAgfQog CisgICAgcmMgPSBhcmNoX3hzcGxpY2VfdmVyaWZ5X2VsZihlbGYpOworICAgIGlmICggcmMgKQor ICAgICAgICByZXR1cm4gcmM7CisKICAgICBpZiAoIGVsZi0+aGRyLT5lX3Noc3RybmR4ID09IFNI Tl9VTkRFRiApCiAgICAgewogICAgICAgICBkcHJpbnRrKFhFTkxPR19FUlIsIFhTUExJQ0UgIiVz OiBTZWN0aW9uIG5hbWUgaWR4IGlzIHVuZGVmaW5lZCE/XG4iLApkaWZmIC0tZ2l0IGEveGVuL2lu Y2x1ZGUveGVuL2VsZnN0cnVjdHMuaCBiL3hlbi9pbmNsdWRlL3hlbi9lbGZzdHJ1Y3RzLmgKaW5k ZXggODVmMzVlZC4uMmI5YmQzZiAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUveGVuL2VsZnN0cnVj dHMuaAorKysgYi94ZW4vaW5jbHVkZS94ZW4vZWxmc3RydWN0cy5oCkBAIC00NzIsNiArNDcyLDgg QEAgdHlwZWRlZiBzdHJ1Y3QgewogI2VuZGlmCiAKICNpZiBkZWZpbmVkKEVMRlNJWkUpICYmIChF TEZTSVpFID09IDMyKQorI2RlZmluZSBQUkl4RWxmQWRkcgkiMDh4IgorCiAjZGVmaW5lIEVsZl9F aGRyCUVsZjMyX0VoZHIKICNkZWZpbmUgRWxmX1BoZHIJRWxmMzJfUGhkcgogI2RlZmluZSBFbGZf U2hkcglFbGYzMl9TaGRyCkBAIC00OTcsNiArNDk5LDggQEAgdHlwZWRlZiBzdHJ1Y3QgewogCiAj ZGVmaW5lIEF1eEluZm8JCUF1eDMySW5mbwogI2VsaWYgZGVmaW5lZChFTEZTSVpFKSAmJiAoRUxG U0laRSA9PSA2NCkKKyNkZWZpbmUgUFJJeEVsZkFkZHIJUFJJeDY0CisKICNkZWZpbmUgRWxmX0Vo ZHIJRWxmNjRfRWhkcgogI2RlZmluZSBFbGZfUGhkcglFbGY2NF9QaGRyCiAjZGVmaW5lIEVsZl9T aGRyCUVsZjY0X1NoZHIKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3hlbi94c3BsaWNlLmggYi94 ZW4vaW5jbHVkZS94ZW4veHNwbGljZS5oCmluZGV4IDc1NTk4NzcuLjg1N2MyNjQgMTAwNjQ0Ci0t LSBhL3hlbi9pbmNsdWRlL3hlbi94c3BsaWNlLmgKKysrIGIveGVuL2luY2x1ZGUveGVuL3hzcGxp Y2UuaApAQCAtNiw2ICs2LDkgQEAKICNpZm5kZWYgX19YRU5fWFNQTElDRV9IX18KICNkZWZpbmUg X19YRU5fWFNQTElDRV9IX18KIAorc3RydWN0IHhzcGxpY2VfZWxmOworc3RydWN0IHhzcGxpY2Vf ZWxmX3NlYzsKK3N0cnVjdCB4c3BsaWNlX2VsZl9zeW07CiBzdHJ1Y3QgeGVuX3N5c2N0bF94c3Bs aWNlX29wOwogCiAjaWZkZWYgQ09ORklHX1hTUExJQ0UKQEAgLTE1LDYgKzE4LDI3IEBAIHN0cnVj dCB4ZW5fc3lzY3RsX3hzcGxpY2Vfb3A7CiAKIGludCB4c3BsaWNlX29wKHN0cnVjdCB4ZW5fc3lz Y3RsX3hzcGxpY2Vfb3AgKik7CiAKKy8qIEFyY2ggaG9va3MuICovCitpbnQgYXJjaF94c3BsaWNl X3ZlcmlmeV9lbGYoY29uc3Qgc3RydWN0IHhzcGxpY2VfZWxmICplbGYpOworaW50IGFyY2hfeHNw bGljZV9wZXJmb3JtX3JlbChzdHJ1Y3QgeHNwbGljZV9lbGYgKmVsZiwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHhzcGxpY2VfZWxmX3NlYyAqYmFzZSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHhzcGxpY2VfZWxmX3NlYyAqcmVs YSk7CitpbnQgYXJjaF94c3BsaWNlX3BlcmZvcm1fcmVsYShzdHJ1Y3QgeHNwbGljZV9lbGYgKmVs ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCB4c3BsaWNlX2Vs Zl9zZWMgKmJhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3Qg eHNwbGljZV9lbGZfc2VjICpyZWxhKTsKK2VudW0gdmFfdHlwZSB7CisgICAgWFNQTElDRV9WQV9S WCwgLyogLnRleHQgKi8KKyAgICBYU1BMSUNFX1ZBX1JXLCAvKiAuZGF0YSAqLworICAgIFhTUExJ Q0VfVkFfUk8sIC8qIC5yb2RhdGEgKi8KK307CisKKy8qCisgKiBGdW5jdGlvbiB0byBzZWN1cmUg dGhlIGFsbG9jYXRlIHBhZ2VzIChmcm9tIGFyY2hfeHNwbGljZV9hbGxvY19wYXlsb2FkKQorICog d2l0aCB0aGUgcmlnaHQgcGFnZSBwZXJtaXNzaW9ucy4KKyAqLworaW50IGFyY2hfeHNwbGljZV9z ZWN1cmUoY29uc3Qgdm9pZCAqdmEsIHVuc2lnbmVkIGludCBwYWdlcywgZW51bSB2YV90eXBlIHR5 cGVzKTsKKwordm9pZCBhcmNoX3hzcGxpY2VfaW5pdCh2b2lkKTsKICNlbHNlCiAKICNpbmNsdWRl IDx4ZW4vZXJybm8uaD4gLyogRm9yIC1FTk9TWVMgKi8KZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRl L3hlbi94c3BsaWNlX2VsZi5oIGIveGVuL2luY2x1ZGUveGVuL3hzcGxpY2VfZWxmLmgKaW5kZXgg Njg2YWFmMC4uNzUwZGM5NCAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUveGVuL3hzcGxpY2VfZWxm LmgKKysrIGIveGVuL2luY2x1ZGUveGVuL3hzcGxpY2VfZWxmLmgKQEAgLTE1LDYgKzE1LDggQEAg c3RydWN0IHhzcGxpY2VfZWxmX3NlYyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGVsZl9yZXNvbHZlX3NlY3Rpb25fbmFtZXMuICovCiAgICAgY29uc3Qgdm9p ZCAqZGF0YTsgICAgICAgICAgICAgICAgICAgIC8qIFBvaW50ZXIgdG8gdGhlIHNlY3Rpb24gKGRv bmUgYnkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxmX3Jl c29sdmVfc2VjdGlvbnMpLiAqLworICAgIHZvaWQgKmxvYWRfYWRkcjsgICAgICAgICAgICAgICAg ICAgICAvKiBBIHBvaW50ZXIgdG8gdGhlIGFsbG9jYXRlZCBkZXN0aW5hdGlvbi4KKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRG9uZSBieSBsb2FkX3BheWxvYWRf ZGF0YS4gKi8KIH07CiAKIHN0cnVjdCB4c3BsaWNlX2VsZl9zeW0gewpAQCAtMjksOCArMzEsMTAg QEAgc3RydWN0IHhzcGxpY2VfZWxmIHsKICAgICBzdHJ1Y3QgeHNwbGljZV9lbGZfc2VjICpzZWM7 ICAgICAgICAgLyogQXJyYXkgb2Ygc2VjdGlvbnMsIGFsbG9jYXRlZCBieSB1cy4gKi8KICAgICBz dHJ1Y3QgeHNwbGljZV9lbGZfc3ltICpzeW07ICAgICAgICAgLyogQXJyYXkgb2Ygc3ltYm9scyAs IGFsbG9jYXRlZCBieSB1cy4gKi8KICAgICB1bnNpZ25lZCBpbnQgbnN5bTsKLSAgICBjb25zdCBz dHJ1Y3QgeHNwbGljZV9lbGZfc2VjICpzeW10YWI7LyogUG9pbnRlciB0byAuc3ltdGFiIHNlY3Rp b24gLSBha2EgdG8gc2VjW3hdLiAqLwotICAgIGNvbnN0IHN0cnVjdCB4c3BsaWNlX2VsZl9zZWMg KnN0cnRhYjsvKiBQb2ludGVyIHRvIC5zdHJ0YWIgc2VjdGlvbiAtIGFrYSB0byBzZWNbeV0uICov CisgICAgY29uc3Qgc3RydWN0IHhzcGxpY2VfZWxmX3NlYyAqc3ltdGFiOy8qIFBvaW50ZXIgdG8g LnN5bXRhYiBzZWN0aW9uIC0gYWthIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHNlY1tzeW10YWJfaWR4XS4gKi8KKyAgICBjb25zdCBzdHJ1Y3QgeHNwbGlj ZV9lbGZfc2VjICpzdHJ0YWI7LyogUG9pbnRlciB0byAuc3RydGFiIHNlY3Rpb24uICovCisgICAg dW5zaWduZWQgaW50IHN5bXRhYl9pZHg7CiB9OwogCiBjb25zdCBzdHJ1Y3QgeHNwbGljZV9lbGZf c2VjICp4c3BsaWNlX2VsZl9zZWNfYnlfbmFtZShjb25zdCBzdHJ1Y3QgeHNwbGljZV9lbGYgKmVs ZiwKQEAgLTM4LDYgKzQyLDkgQEAgY29uc3Qgc3RydWN0IHhzcGxpY2VfZWxmX3NlYyAqeHNwbGlj ZV9lbGZfc2VjX2J5X25hbWUoY29uc3Qgc3RydWN0IHhzcGxpY2VfZWxmICoKIGludCB4c3BsaWNl X2VsZl9sb2FkKHN0cnVjdCB4c3BsaWNlX2VsZiAqZWxmLCBjb25zdCB2b2lkICpkYXRhKTsKIHZv aWQgeHNwbGljZV9lbGZfZnJlZShzdHJ1Y3QgeHNwbGljZV9lbGYgKmVsZik7CiAKK2ludCB4c3Bs aWNlX2VsZl9yZXNvbHZlX3N5bWJvbHMoc3RydWN0IHhzcGxpY2VfZWxmICplbGYpOworaW50IHhz cGxpY2VfZWxmX3BlcmZvcm1fcmVsb2NzKHN0cnVjdCB4c3BsaWNlX2VsZiAqZWxmKTsKKwogI2Vu ZGlmIC8qIF9fWEVOX1hTUExJQ0VfRUxGX0hfXyAqLwogCiAvKgotLSAKMi41LjAKCgpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGlu ZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHA6Ly9saXN0cy54ZW4ub3JnL3hlbi1k ZXZlbAo=