From mboxrd@z Thu Jan 1 00:00:00 1970 From: Subject: [PATCH 01/26] drm/amd/display: make clk mgr soc specific Date: Mon, 27 May 2019 15:50:40 -0400 Message-ID: <1558986665-12964-2-git-send-email-sunpeng.li@amd.com> References: <1558986665-12964-1-git-send-email-sunpeng.li@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1558986665-12964-1-git-send-email-sunpeng.li-5C7GfCeVMHo@public.gmane.org> List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Cc: Eric Yang RnJvbTogRXJpYyBZYW5nIDxFcmljLllhbmcyQGFtZC5jb20+CgpbV2h5XQpGaXJzdCBzdGVwIG9m IHJlZmFjdG9yaW5nIGNsayBtZ3IgdG8gYmV0dGVyIGhhbmRsZSBkaWZmZXJlbnQKd2F5cyBvZiBo YW5kbGluZyBjbG9jayBvcGVyYXRpb25zLiBDbG9jayBvcGVyYXRpb24gcG9saWNpZXMgYXJlCnNv YyBzcGVjaWZpYyBhbmQgbm90IGp1c3QgRENOIHZlc2lvbiBzcGVjaWZpYy4gSXQgaXMgbm90IGEg aHcgcmVzb3VyY2UsCnNob3VsZCBub3QgYmUgaW4gdGhlIHJlc291cmNlIHBvb2wuCgpbSG93XQpD aGFuZ2UgY2xvY2sgbWFuYWdlciBjcmVhdGlvbiB0byBiZSBiYXNlZCBvbiBIVyBpbnRlcm5hbCBJ RCwgcmVuYW1lCmNsb2NrIG1hbmFnZXIgbWVtYmVycyB0byBiZSBtb3JlIGNsZWFyLiBNb3ZlIGNs b2NrIG1hbmFnZXIgb3V0IG9mCnJlc291cmNlLgoKU2lnbmVkLW9mZi1ieTogRXJpYyBZYW5nIDxF cmljLllhbmcyQGFtZC5jb20+ClJldmlld2VkLWJ5OiBUb255IENoZW5nIDxUb255LkNoZW5nQGFt ZC5jb20+CkFja2VkLWJ5OiBMZW8gTGkgPHN1bnBlbmcubGlAYW1kLmNvbT4KLS0tCiAuLi4vZ3B1 L2RybS9hbWQvZGlzcGxheS9kYy9jYWxjcy9kY25fY2FsY19hdXRvLmggICB8ICAgMSArCiBkcml2 ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvY2FsY3MvZGNuX2NhbGNzLmMgICB8ICAgMyArLQog ZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2NvcmUvZGMuYyAgICAgICAgICAgfCAgMTAg KwogZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2NvcmUvZGNfbGluay5jICAgICAgfCAg IDEgKwogZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2NvcmUvZGNfcmVzb3VyY2UuYyAg fCAgIDIgKy0KIGRyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9jb3JlL2RjX3N0cmVhbS5j ICAgIHwgICAyICstCiBkcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvZGMuaCAgICAgICAg ICAgICAgICB8ICAgMiArCiBkcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvZGNlL01ha2Vm aWxlICAgICAgICB8ICAgMiArLQogLi4uL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvZGNlL2RjZTEx MF9jbGtfbWdyLmMgICAgfCAyNzYgKysrKysrKysKIC4uLi9ncHUvZHJtL2FtZC9kaXNwbGF5L2Rj L2RjZS9kY2UxMTBfY2xrX21nci5oICAgIHwgIDQ0ICsrCiAuLi4vZ3B1L2RybS9hbWQvZGlzcGxh eS9kYy9kY2UvZGNlMTEyX2Nsa19tZ3IuYyAgICB8IDIzOSArKysrKysrCiAuLi4vZ3B1L2RybS9h bWQvZGlzcGxheS9kYy9kY2UvZGNlMTEyX2Nsa19tZ3IuaCAgICB8ICAzOSArKwogLi4uL2dwdS9k cm0vYW1kL2Rpc3BsYXkvZGMvZGNlL2RjZTEyMF9jbGtfbWdyLmMgICAgfCAxNDUgKysrKysKIC4u Li9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2RjZS9kY2UxMjBfY2xrX21nci5oICAgIHwgIDM0ICsK IGRyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9kY2UvZGNlX2Nsa19tZ3IuYyAgIHwgNzE5 ICsrKy0tLS0tLS0tLS0tLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2Rj ZS9kY2VfY2xrX21nci5oICAgfCAxNzMgKy0tLS0KIC4uLi9ncHUvZHJtL2FtZC9kaXNwbGF5L2Rj L2RjZS9kY2VfY2xvY2tfc291cmNlLmMgIHwgICAxICsKIC4uLi9hbWQvZGlzcGxheS9kYy9kY2Ux MDAvZGNlMTAwX2h3X3NlcXVlbmNlci5jICAgIHwgICA5ICstCiAuLi4vZHJtL2FtZC9kaXNwbGF5 L2RjL2RjZTEwMC9kY2UxMDBfcmVzb3VyY2UuYyAgICB8ICAyOCAtCiAuLi4vYW1kL2Rpc3BsYXkv ZGMvZGNlMTEwL2RjZTExMF9od19zZXF1ZW5jZXIuYyAgICB8ICAgNSArLQogLi4uL2RybS9hbWQv ZGlzcGxheS9kYy9kY2UxMTAvZGNlMTEwX3Jlc291cmNlLmMgICAgfCAgMjcgLQogLi4uL2RybS9h bWQvZGlzcGxheS9kYy9kY2UxMTIvZGNlMTEyX3Jlc291cmNlLmMgICAgfCAgMjggLQogLi4uL2Ry bS9hbWQvZGlzcGxheS9kYy9kY2UxMjAvZGNlMTIwX3Jlc291cmNlLmMgICAgfCAgMjAgKy0KIC4u Li9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2RjZTgwL2RjZTgwX3Jlc291cmNlLmMgIHwgIDQ3IC0t CiBkcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvZGNuMTAvTWFrZWZpbGUgICAgICB8ICAg MyArLQogZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2RjbjEwL2Nsa19tZ3IuYyAgICAg fCAxMTIgKysrKwogLi4uL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvZGNuMTAvZGNuMTBfY2xrX21n ci5jICAgfCAzNTUgLS0tLS0tLS0tLQogLi4uL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvZGNuMTAv ZGNuMTBfY2xrX21nci5oICAgfCAgMzkgLS0KIC4uLi9kcm0vYW1kL2Rpc3BsYXkvZGMvZGNuMTAv ZGNuMTBfaHdfc2VxdWVuY2VyLmMgIHwgIDIwICstCiAuLi4vZGlzcGxheS9kYy9kY24xMC9kY24x MF9od19zZXF1ZW5jZXJfZGVidWcuYyAgICB8ICAgMiArLQogLi4uL2dwdS9kcm0vYW1kL2Rpc3Bs YXkvZGMvZGNuMTAvZGNuMTBfcmVzb3VyY2UuYyAgfCAgMzMgKy0KIGRyaXZlcnMvZ3B1L2RybS9h bWQvZGlzcGxheS9kYy9kY24xMC9ydjFfY2xrX21nci5jIHwgMjg1ICsrKysrKysrCiBkcml2ZXJz L2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvZGNuMTAvcnYxX2Nsa19tZ3IuaCB8ICAzMSArCiAuLi4v Z3B1L2RybS9hbWQvZGlzcGxheS9kYy9kY24xMC9ydjFfY2xrX21ncl9jbGsuYyB8ICA3NSArKysK IC4uLi9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2RjbjEwL3J2MV9jbGtfbWdyX2Nsay5oIHwgIDI5 ICsKIC4uLi9hbWQvZGlzcGxheS9kYy9kY24xMC9ydjFfY2xrX21ncl92Ymlvc19zbXUuYyAgIHwg MTI0ICsrKysKIC4uLi9hbWQvZGlzcGxheS9kYy9kY24xMC9ydjFfY2xrX21ncl92Ymlvc19zbXUu aCAgIHwgIDMyICsKIGRyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9kY24xMC9ydjJfY2xr X21nci5jIHwgIDQzICsrCiBkcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvZGNuMTAvcnYy X2Nsa19tZ3IuaCB8ICAzMiArCiBkcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvaW5jL2Nv cmVfdHlwZXMuaCAgICB8ICAgMiAtCiBkcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvaW5j L2Rjbl9jYWxjcy5oICAgICB8ICAgMiArLQogZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2Rj L2luYy9ody9jbGtfbWdyLmggICAgfCAgMzIgKy0KIC4uLi9kcm0vYW1kL2Rpc3BsYXkvZGMvaW5j L2h3L2Nsa19tZ3JfaW50ZXJuYWwuaCAgIHwgMjA4ICsrKysrKwogZHJpdmVycy9ncHUvZHJtL2Ft ZC9kaXNwbGF5L2RjL2luYy9yZXNvdXJjZS5oICAgICAgfCAgIDIgKwogZHJpdmVycy9ncHUvZHJt L2FtZC9kaXNwbGF5L2luY2x1ZGUvZGFsX2FzaWNfaWQuaCAgfCAgMTEgKy0KIDQ1IGZpbGVzIGNo YW5nZWQsIDE5MTQgaW5zZXJ0aW9ucygrKSwgMTQxNSBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvZGNlL2RjZTExMF9jbGtfbWdy LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvZGNl L2RjZTExMF9jbGtfbWdyLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vYW1k L2Rpc3BsYXkvZGMvZGNlL2RjZTExMl9jbGtfbWdyLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2 ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvZGNlL2RjZTExMl9jbGtfbWdyLmgKIGNyZWF0ZSBt b2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvZGNlL2RjZTEyMF9jbGtf bWdyLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMv ZGNlL2RjZTEyMF9jbGtfbWdyLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0v YW1kL2Rpc3BsYXkvZGMvZGNuMTAvY2xrX21nci5jCiBkZWxldGUgbW9kZSAxMDA2NDQgZHJpdmVy cy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2RjbjEwL2RjbjEwX2Nsa19tZ3IuYwogZGVsZXRlIG1v ZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9kY24xMC9kY24xMF9jbGtf bWdyLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMv ZGNuMTAvcnYxX2Nsa19tZ3IuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9h bWQvZGlzcGxheS9kYy9kY24xMC9ydjFfY2xrX21nci5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJp dmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2RjbjEwL3J2MV9jbGtfbWdyX2Nsay5jCiBjcmVh dGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2RjbjEwL3J2MV9j bGtfbWdyX2Nsay5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNw bGF5L2RjL2RjbjEwL3J2MV9jbGtfbWdyX3ZiaW9zX3NtdS5jCiBjcmVhdGUgbW9kZSAxMDA2NDQg ZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2RjbjEwL3J2MV9jbGtfbWdyX3ZiaW9zX3Nt dS5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2Rj bjEwL3J2Ml9jbGtfbWdyLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vYW1k L2Rpc3BsYXkvZGMvZGNuMTAvcnYyX2Nsa19tZ3IuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZl cnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9pbmMvaHcvY2xrX21ncl9pbnRlcm5hbC5oCgpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2NhbGNzL2Rjbl9jYWxjX2F1 dG8uaCBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9jYWxjcy9kY25fY2FsY19hdXRv LmgKaW5kZXggMDNmMDZmNi4uY2UzNWRlNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2Ft ZC9kaXNwbGF5L2RjL2NhbGNzL2Rjbl9jYWxjX2F1dG8uaAorKysgYi9kcml2ZXJzL2dwdS9kcm0v YW1kL2Rpc3BsYXkvZGMvY2FsY3MvZGNuX2NhbGNfYXV0by5oCkBAIC0yNiw2ICsyNiw3IEBACiAj aWZuZGVmIF9EQ05fQ0FMQ19BVVRPX0hfCiAjZGVmaW5lIF9EQ05fQ0FMQ19BVVRPX0hfCiAKKyNp bmNsdWRlICJkYy5oIgogI2luY2x1ZGUgImRjbl9jYWxjcy5oIgogCiB2b2lkIHNjYWxlcl9zZXR0 aW5nc19jYWxjdWxhdGlvbihzdHJ1Y3QgZGNuX2J3X2ludGVybmFsX3ZhcnMgKnYpOwpkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2NhbGNzL2Rjbl9jYWxjcy5jIGIv ZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2NhbGNzL2Rjbl9jYWxjcy5jCmluZGV4IDFi NGI1MTYuLmQ1MzMwNmQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9k Yy9jYWxjcy9kY25fY2FsY3MuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMv Y2FsY3MvZGNuX2NhbGNzLmMKQEAgLTI0LDExICsyNCwxMCBAQAogICovCiAKICNpbmNsdWRlICJk bV9zZXJ2aWNlcy5oIgorI2luY2x1ZGUgImRjLmgiCiAjaW5jbHVkZSAiZGNuX2NhbGNzLmgiCiAj aW5jbHVkZSAiZGNuX2NhbGNfYXV0by5oIgotI2luY2x1ZGUgImRjLmgiCiAjaW5jbHVkZSAiZGFs X2FzaWNfaWQuaCIKLQogI2luY2x1ZGUgInJlc291cmNlLmgiCiAjaW5jbHVkZSAiZGNuMTAvZGNu MTBfcmVzb3VyY2UuaCIKICNpbmNsdWRlICJkY24xMC9kY24xMF9odWJidWIuaCIKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9jb3JlL2RjLmMgYi9kcml2ZXJzL2dw dS9kcm0vYW1kL2Rpc3BsYXkvZGMvY29yZS9kYy5jCmluZGV4IDRlMTdhZjIuLjc5YzNhMzcgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9jb3JlL2RjLmMKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2NvcmUvZGMuYwpAQCAtMzMsNiArMzMsNyBA QAogCiAjaW5jbHVkZSAicmVzb3VyY2UuaCIKIAorI2luY2x1ZGUgImNsa19tZ3IuaCIKICNpbmNs dWRlICJjbG9ja19zb3VyY2UuaCIKICNpbmNsdWRlICJkY19iaW9zX3R5cGVzLmgiCiAKQEAgLTYx OCw2ICs2MTksMTEgQEAgc3RhdGljIHZvaWQgZGVzdHJ1Y3Qoc3RydWN0IGRjICpkYykKIAogCWRl c3Ryb3lfbGlua3MoZGMpOwogCisJaWYgKGRjLT5jbGtfbWdyKSB7CisJCWRjX2Rlc3Ryb3lfY2xr X21ncihkYy0+Y2xrX21ncik7CisJCWRjLT5jbGtfbWdyID0gTlVMTDsKKwl9CisKIAlkY19kZXN0 cm95X3Jlc291cmNlX3Bvb2woZGMpOwogCiAJaWYgKGRjLT5jdHgtPmdwaW9fc2VydmljZSkKQEAg LTc2MSw2ICs3NjcsMTAgQEAgc3RhdGljIGJvb2wgY29uc3RydWN0KHN0cnVjdCBkYyAqZGMsCiAJ aWYgKCFkYy0+cmVzX3Bvb2wpCiAJCWdvdG8gZmFpbDsKIAorCWRjLT5jbGtfbWdyID0gZGNfY2xr X21ncl9jcmVhdGUoZGMtPmN0eCwgZGMtPnJlc19wb29sLT5wcF9zbXUsIGRjLT5yZXNfcG9vbC0+ ZGNjZyk7CisJaWYgKCFkYy0+Y2xrX21ncikKKwkJZ290byBmYWlsOworCiAJLyogQ3JlYXRpb24g b2YgY3VycmVudF9zdGF0ZSBtdXN0IG9jY3VyIGFmdGVyIGRjLT5kbWwKIAkgKiBpcyBpbml0aWFs aXplZCBpbiBkY19jcmVhdGVfcmVzb3VyY2VfcG9vbCBiZWNhdXNlCiAJICogb24gY3JlYXRpb24g aXQgY29waWVzIHRoZSBjb250ZW50cyBvZiBkYy0+ZG1sCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vYW1kL2Rpc3BsYXkvZGMvY29yZS9kY19saW5rLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1k L2Rpc3BsYXkvZGMvY29yZS9kY19saW5rLmMKaW5kZXggZTcyMzY1My4uOTBhMWNkYyAxMDA2NDQK LS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2NvcmUvZGNfbGluay5jCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9jb3JlL2RjX2xpbmsuYwpAQCAtNDIsNiAr NDIsNyBAQAogI2luY2x1ZGUgImZpeGVkMzFfMzIuaCIKICNpbmNsdWRlICJkcGNkX2RlZnMuaCIK ICNpbmNsdWRlICJkbWN1LmgiCisjaW5jbHVkZSAiaHcvY2xrX21nci5oIgogCiAjZGVmaW5lIERD X0xPR0dFUl9JTklUKGxvZ2dlcikKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9k aXNwbGF5L2RjL2NvcmUvZGNfcmVzb3VyY2UuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxh eS9kYy9jb3JlL2RjX3Jlc291cmNlLmMKaW5kZXggYjc5NTJmMy4uMGEyZTBmZSAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2NvcmUvZGNfcmVzb3VyY2UuYworKysg Yi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvY29yZS9kY19yZXNvdXJjZS5jCkBAIC0y MDE4LDcgKzIwMTgsNyBAQCB2b2lkIGRjX3Jlc291cmNlX3N0YXRlX2NvbnN0cnVjdCgKIAkJY29u c3Qgc3RydWN0IGRjICpkYywKIAkJc3RydWN0IGRjX3N0YXRlICpkc3RfY3R4KQogewotCWRzdF9j dHgtPmNsa19tZ3IgPSBkYy0+cmVzX3Bvb2wtPmNsa19tZ3I7CisJZHN0X2N0eC0+Y2xrX21nciA9 IGRjLT5jbGtfbWdyOwogfQogCiAvKioKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQv ZGlzcGxheS9kYy9jb3JlL2RjX3N0cmVhbS5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5 L2RjL2NvcmUvZGNfc3RyZWFtLmMKaW5kZXggYjcyM2ZmYy4uNTliMjQ3YSAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2NvcmUvZGNfc3RyZWFtLmMKKysrIGIvZHJp dmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2NvcmUvZGNfc3RyZWFtLmMKQEAgLTIyOSw3ICsy MjksNyBAQCBzdGF0aWMgdm9pZCBkZWxheV9jdXJzb3JfdW50aWxfdnVwZGF0ZShzdHJ1Y3QgcGlw ZV9jdHggKnBpcGVfY3R4LCBzdHJ1Y3QgZGMgKmRjKQogCXVuc2lnbmVkIGludCB1c19wZXJfbGlu ZTsKIAogCWlmIChzdHJlYW0tPmN0eC0+YXNpY19pZC5jaGlwX2ZhbWlseSA9PSBGQU1JTFlfUlYg JiYKLQkJCUFTSUNfUkVWX0lTX1JBVkVOKHN0cmVhbS0+Y3R4LT5hc2ljX2lkLmh3X2ludGVybmFs X3JldikpIHsKKwkJCUFTSUNSRVZfSVNfUkFWRU4oc3RyZWFtLT5jdHgtPmFzaWNfaWQuaHdfaW50 ZXJuYWxfcmV2KSkgewogCiAJCXZ1cGRhdGVfbGluZSA9IGdldF92dXBkYXRlX29mZnNldF9mcm9t X3ZzeW5jKHBpcGVfY3R4KTsKIAkJaWYgKCFkY19zdHJlYW1fZ2V0X2NydGNfcG9zaXRpb24oZGMs ICZzdHJlYW0sIDEsICZ2cG9zLCAmbnZwb3MpKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2FtZC9kaXNwbGF5L2RjL2RjLmggYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvZGMu aAppbmRleCA1NjYxMTFmLi4yMDk3NWFiIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1k L2Rpc3BsYXkvZGMvZGMuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvZGMu aApAQCAtMzg3LDYgKzM4Nyw4IEBAIHN0cnVjdCBkYyB7CiAJc3RydWN0IGRjX3N0YXRlICpjdXJy ZW50X3N0YXRlOwogCXN0cnVjdCByZXNvdXJjZV9wb29sICpyZXNfcG9vbDsKIAorCXN0cnVjdCBj bGtfbWdyICpjbGtfbWdyOworCiAJLyogRGlzcGxheSBFbmdpbmUgQ2xvY2sgbGV2ZWxzICovCiAJ c3RydWN0IGRtX3BwX2Nsb2NrX2xldmVscyBzY2xrX2x2bHM7CiAKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9kY2UvTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0v YW1kL2Rpc3BsYXkvZGMvZGNlL01ha2VmaWxlCmluZGV4IDZkN2I2NGEuLjZlNDQ3YWIgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9kY2UvTWFrZWZpbGUKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2RjZS9NYWtlZmlsZQpAQCAtMjgsNyArMjgs NyBAQAogCiBEQ0UgPSBkY2VfYXVkaW8ubyBkY2Vfc3RyZWFtX2VuY29kZXIubyBkY2VfbGlua19l bmNvZGVyLm8gZGNlX2h3c2VxLm8gXAogZGNlX21lbV9pbnB1dC5vIGRjZV9jbG9ja19zb3VyY2Uu byBkY2Vfc2NsX2ZpbHRlcnMubyBkY2VfdHJhbnNmb3JtLm8gXAotZGNlX2Nsa19tZ3IubyBkY2Vf b3BwLm8gZGNlX2RtY3UubyBkY2VfYWJtLm8gZGNlX2lwcC5vIGRjZV9hdXgubyBcCitkY2VfY2xr X21nci5vIGRjZTExMF9jbGtfbWdyLm8gZGNlMTEyX2Nsa19tZ3IubyBkY2UxMjBfY2xrX21nci5v IGRjZV9vcHAubyBkY2VfZG1jdS5vIGRjZV9hYm0ubyBkY2VfaXBwLm8gZGNlX2F1eC5vIFwKIGRj ZV9pMmMubyBkY2VfaTJjX2h3Lm8gZGNlX2kyY19zdy5vCiAKIEFNRF9EQUxfRENFID0gJChhZGRw cmVmaXggJChBTUREQUxQQVRIKS9kYy9kY2UvLCQoRENFKSkKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9hbWQvZGlzcGxheS9kYy9kY2UvZGNlMTEwX2Nsa19tZ3IuYyBiL2RyaXZlcnMvZ3B1 L2RybS9hbWQvZGlzcGxheS9kYy9kY2UvZGNlMTEwX2Nsa19tZ3IuYwpuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwLi5kYmMwMmRjCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9n cHUvZHJtL2FtZC9kaXNwbGF5L2RjL2RjZS9kY2UxMTBfY2xrX21nci5jCkBAIC0wLDAgKzEsMjc2 IEBACisvKgorICogQ29weXJpZ2h0IDIwMTItMTYgQWR2YW5jZWQgTWljcm8gRGV2aWNlcywgSW5j LgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0 byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFz c29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAorICogdG8gZGVh bCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQg bGltaXRhdGlvbgorICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1 Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCisgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2Yg dGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKKyAqIFNvZnR3 YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRp dGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlz c2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KKyAqIGFsbCBjb3BpZXMgb3Igc3Vic3Rh bnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQ Uk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9S CisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVT IE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF IEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAorICogVEhFIENPUFlSSUdI VCBIT0xERVIoUykgT1IgQVVUSE9SKFMpIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VT IE9SCisgKiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNU LCBUT1JUIE9SIE9USEVSV0lTRSwKKyAqIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5F Q1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUgorICogT1RIRVIgREVBTElOR1Mg SU4gVEhFIFNPRlRXQVJFLgorICoKKyAqIEF1dGhvcnM6IEFNRAorICoKKyAqLworCisjaW5jbHVk ZSAiY29yZV90eXBlcy5oIgorI2luY2x1ZGUgImNsa19tZ3JfaW50ZXJuYWwuaCIKKworI2luY2x1 ZGUgImRjZS9kY2VfMTFfMF9kLmgiCisjaW5jbHVkZSAiZGNlL2RjZV8xMV8wX3NoX21hc2suaCIK KyNpbmNsdWRlICJkY2VfY2xrX21nci5oIgorI2luY2x1ZGUgImRjZTExMF9jbGtfbWdyLmgiCisK Ky8qIHNldCByZWdpc3RlciBvZmZzZXQgKi8KKyNkZWZpbmUgU1IocmVnX25hbWUpXAorCS5yZWdf bmFtZSA9IG1tICMjIHJlZ19uYW1lCisKKy8qIHNldCByZWdpc3RlciBvZmZzZXQgd2l0aCBpbnN0 YW5jZSAqLworI2RlZmluZSBTUkkocmVnX25hbWUsIGJsb2NrLCBpZClcCisJLnJlZ19uYW1lID0g bW0gIyMgYmxvY2sgIyMgaWQgIyMgXyAjIyByZWdfbmFtZQorCitzdGF0aWMgY29uc3Qgc3RydWN0 IGNsa19tZ3JfcmVnaXN0ZXJzIGRpc3BfY2xrX3JlZ3MgPSB7CisJCUNMS19DT01NT05fUkVHX0xJ U1RfRENFX0JBU0UoKQorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBjbGtfbWdyX3NoaWZ0IGRp c3BfY2xrX3NoaWZ0ID0geworCQlDTEtfQ09NTU9OX01BU0tfU0hfTElTVF9EQ0VfQ09NTU9OX0JB U0UoX19TSElGVCkKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgY2xrX21ncl9tYXNrIGRpc3Bf Y2xrX21hc2sgPSB7CisJCUNMS19DT01NT05fTUFTS19TSF9MSVNUX0RDRV9DT01NT05fQkFTRShf TUFTSykKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgc3RhdGVfZGVwZW5kZW50X2Nsb2NrcyBk Y2UxMTBfbWF4X2Nsa3NfYnlfc3RhdGVbXSA9IHsKKy8qQ2xvY2tzU3RhdGVJbnZhbGlkIC0gc2hv dWxkIG5vdCBiZSB1c2VkKi8KK3sgLmRpc3BsYXlfY2xrX2toeiA9IDAsIC5waXhlbF9jbGtfa2h6 ID0gMCB9LAorLypDbG9ja3NTdGF0ZVVsdHJhTG93IC0gY3VycmVudGx5IGJ5IEhXIGRlc2lnbiB0 ZWFtIG5vdCBzdXBwb3NlZCB0byBiZSB1c2VkKi8KK3sgLmRpc3BsYXlfY2xrX2toeiA9IDM1MjAw MCwgLnBpeGVsX2Nsa19raHogPSAzMzAwMDAgfSwKKy8qQ2xvY2tzU3RhdGVMb3cqLworeyAuZGlz cGxheV9jbGtfa2h6ID0gMzUyMDAwLCAucGl4ZWxfY2xrX2toeiA9IDMzMDAwMCB9LAorLypDbG9j a3NTdGF0ZU5vbWluYWwqLworeyAuZGlzcGxheV9jbGtfa2h6ID0gNDY3MDAwLCAucGl4ZWxfY2xr X2toeiA9IDQwMDAwMCB9LAorLypDbG9ja3NTdGF0ZVBlcmZvcm1hbmNlKi8KK3sgLmRpc3BsYXlf Y2xrX2toeiA9IDY0MzAwMCwgLnBpeGVsX2Nsa19raHogPSA0MDAwMDAgfSB9OworCitzdGF0aWMg aW50IGRldGVybWluZV9zY2xrX2Zyb21fYm91bmRpbmdfYm94KAorCQljb25zdCBzdHJ1Y3QgZGMg KmRjLAorCQlpbnQgcmVxdWlyZWRfc2NsaykKK3sKKwlpbnQgaTsKKworCS8qCisJICogU29tZSBh c2ljcyBkbyBub3QgZ2l2ZSB1cyBzY2xrIGxldmVscywgc28gd2UganVzdCByZXBvcnQgdGhlIGFj dHVhbAorCSAqIHJlcXVpcmVkIHNjbGsKKwkgKi8KKwlpZiAoZGMtPnNjbGtfbHZscy5udW1fbGV2 ZWxzID09IDApCisJCXJldHVybiByZXF1aXJlZF9zY2xrOworCisJZm9yIChpID0gMDsgaSA8IGRj LT5zY2xrX2x2bHMubnVtX2xldmVsczsgaSsrKSB7CisJCWlmIChkYy0+c2Nsa19sdmxzLmNsb2Nr c19pbl9raHpbaV0gPj0gcmVxdWlyZWRfc2NsaykKKwkJCXJldHVybiBkYy0+c2Nsa19sdmxzLmNs b2Nrc19pbl9raHpbaV07CisJfQorCS8qCisJICogZXZlbiBtYXhpbXVtIGxldmVsIGNvdWxkIG5v dCBzYXRpc2Z5IHJlcXVpcmVtZW50LCB0aGlzCisJICogaXMgdW5leHBlY3RlZCBhdCB0aGlzIHN0 YWdlLCBzaG91bGQgaGF2ZSBiZWVuIGNhdWdodCBhdAorCSAqIHZhbGlkYXRpb24gdGltZQorCSAq LworCUFTU0VSVCgwKTsKKwlyZXR1cm4gZGMtPnNjbGtfbHZscy5jbG9ja3NfaW5fa2h6W2RjLT5z Y2xrX2x2bHMubnVtX2xldmVscyAtIDFdOworfQorCit1aW50MzJfdCBkY2UxMTBfZ2V0X21pbl92 YmxhbmtfdGltZV91cyhjb25zdCBzdHJ1Y3QgZGNfc3RhdGUgKmNvbnRleHQpCit7CisJdWludDhf dCBqOworCXVpbnQzMl90IG1pbl92ZXJ0aWNhbF9ibGFua190aW1lID0gLTE7CisKKwlmb3IgKGog PSAwOyBqIDwgY29udGV4dC0+c3RyZWFtX2NvdW50OyBqKyspIHsKKwkJc3RydWN0IGRjX3N0cmVh bV9zdGF0ZSAqc3RyZWFtID0gY29udGV4dC0+c3RyZWFtc1tqXTsKKwkJdWludDMyX3QgdmVydGlj YWxfYmxhbmtfaW5fcGl4ZWxzID0gMDsKKwkJdWludDMyX3QgdmVydGljYWxfYmxhbmtfdGltZSA9 IDA7CisKKwkJdmVydGljYWxfYmxhbmtfaW5fcGl4ZWxzID0gc3RyZWFtLT50aW1pbmcuaF90b3Rh bCAqCisJCQkoc3RyZWFtLT50aW1pbmcudl90b3RhbAorCQkJIC0gc3RyZWFtLT50aW1pbmcudl9h ZGRyZXNzYWJsZSk7CisKKwkJdmVydGljYWxfYmxhbmtfdGltZSA9IHZlcnRpY2FsX2JsYW5rX2lu X3BpeGVscworCQkJKiAxMDAwMCAvIHN0cmVhbS0+dGltaW5nLnBpeF9jbGtfMTAwaHo7CisKKwkJ aWYgKG1pbl92ZXJ0aWNhbF9ibGFua190aW1lID4gdmVydGljYWxfYmxhbmtfdGltZSkKKwkJCW1p bl92ZXJ0aWNhbF9ibGFua190aW1lID0gdmVydGljYWxfYmxhbmtfdGltZTsKKwl9CisKKwlyZXR1 cm4gbWluX3ZlcnRpY2FsX2JsYW5rX3RpbWU7Cit9CisKK3ZvaWQgZGNlMTEwX2ZpbGxfZGlzcGxh eV9jb25maWdzKAorCWNvbnN0IHN0cnVjdCBkY19zdGF0ZSAqY29udGV4dCwKKwlzdHJ1Y3QgZG1f cHBfZGlzcGxheV9jb25maWd1cmF0aW9uICpwcF9kaXNwbGF5X2NmZykKK3sKKwlpbnQgajsKKwlp bnQgbnVtX2NmZ3MgPSAwOworCisJZm9yIChqID0gMDsgaiA8IGNvbnRleHQtPnN0cmVhbV9jb3Vu dDsgaisrKSB7CisJCWludCBrOworCisJCWNvbnN0IHN0cnVjdCBkY19zdHJlYW1fc3RhdGUgKnN0 cmVhbSA9IGNvbnRleHQtPnN0cmVhbXNbal07CisJCXN0cnVjdCBkbV9wcF9zaW5nbGVfZGlzcF9j b25maWcgKmNmZyA9CisJCQkmcHBfZGlzcGxheV9jZmctPmRpc3BfY29uZmlnc1tudW1fY2Znc107 CisJCWNvbnN0IHN0cnVjdCBwaXBlX2N0eCAqcGlwZV9jdHggPSBOVUxMOworCisJCWZvciAoayA9 IDA7IGsgPCBNQVhfUElQRVM7IGsrKykKKwkJCWlmIChzdHJlYW0gPT0gY29udGV4dC0+cmVzX2N0 eC5waXBlX2N0eFtrXS5zdHJlYW0pIHsKKwkJCQlwaXBlX2N0eCA9ICZjb250ZXh0LT5yZXNfY3R4 LnBpcGVfY3R4W2tdOworCQkJCWJyZWFrOworCQkJfQorCisJCUFTU0VSVChwaXBlX2N0eCAhPSBO VUxMKTsKKworCQkvKiBvbmx5IG5vdGlmeSBhY3RpdmUgc3RyZWFtICovCisJCWlmIChzdHJlYW0t PmRwbXNfb2ZmKQorCQkJY29udGludWU7CisKKwkJbnVtX2NmZ3MrKzsKKwkJY2ZnLT5zaWduYWwg PSBwaXBlX2N0eC0+c3RyZWFtLT5zaWduYWw7CisJCWNmZy0+cGlwZV9pZHggPSBwaXBlX2N0eC0+ c3RyZWFtX3Jlcy50Zy0+aW5zdDsKKwkJY2ZnLT5zcmNfaGVpZ2h0ID0gc3RyZWFtLT5zcmMuaGVp Z2h0OworCQljZmctPnNyY193aWR0aCA9IHN0cmVhbS0+c3JjLndpZHRoOworCQljZmctPmRkaV9j aGFubmVsX21hcHBpbmcgPQorCQkJc3RyZWFtLT5saW5rLT5kZGlfY2hhbm5lbF9tYXBwaW5nLnJh dzsKKwkJY2ZnLT50cmFuc21pdHRlciA9CisJCQlzdHJlYW0tPmxpbmstPmxpbmtfZW5jLT50cmFu c21pdHRlcjsKKwkJY2ZnLT5saW5rX3NldHRpbmdzLmxhbmVfY291bnQgPQorCQkJc3RyZWFtLT5s aW5rLT5jdXJfbGlua19zZXR0aW5ncy5sYW5lX2NvdW50OworCQljZmctPmxpbmtfc2V0dGluZ3Mu bGlua19yYXRlID0KKwkJCXN0cmVhbS0+bGluay0+Y3VyX2xpbmtfc2V0dGluZ3MubGlua19yYXRl OworCQljZmctPmxpbmtfc2V0dGluZ3MubGlua19zcHJlYWQgPQorCQkJc3RyZWFtLT5saW5rLT5j dXJfbGlua19zZXR0aW5ncy5saW5rX3NwcmVhZDsKKwkJY2ZnLT5zeW1fY2xvY2sgPSBzdHJlYW0t PnBoeV9waXhfY2xrOworCQkvKiBSb3VuZCB2X3JlZnJlc2gqLworCQljZmctPnZfcmVmcmVzaCA9 IHN0cmVhbS0+dGltaW5nLnBpeF9jbGtfMTAwaHogKiAxMDA7CisJCWNmZy0+dl9yZWZyZXNoIC89 IHN0cmVhbS0+dGltaW5nLmhfdG90YWw7CisJCWNmZy0+dl9yZWZyZXNoID0gKGNmZy0+dl9yZWZy ZXNoICsgc3RyZWFtLT50aW1pbmcudl90b3RhbCAvIDIpCisJCQkJCQkJLyBzdHJlYW0tPnRpbWlu Zy52X3RvdGFsOworCX0KKworCXBwX2Rpc3BsYXlfY2ZnLT5kaXNwbGF5X2NvdW50ID0gbnVtX2Nm Z3M7Cit9CisKK3ZvaWQgZGNlMTFfcHBsaWJfYXBwbHlfZGlzcGxheV9yZXF1aXJlbWVudHMoCisJ c3RydWN0IGRjICpkYywKKwlzdHJ1Y3QgZGNfc3RhdGUgKmNvbnRleHQpCit7CisJc3RydWN0IGRt X3BwX2Rpc3BsYXlfY29uZmlndXJhdGlvbiAqcHBfZGlzcGxheV9jZmcgPSAmY29udGV4dC0+cHBf ZGlzcGxheV9jZmc7CisKKwlwcF9kaXNwbGF5X2NmZy0+YWxsX2Rpc3BsYXlzX2luX3N5bmMgPQor CQljb250ZXh0LT5id19jdHguYncuZGNlLmFsbF9kaXNwbGF5c19pbl9zeW5jOworCXBwX2Rpc3Bs YXlfY2ZnLT5uYl9wc3RhdGVfc3dpdGNoX2Rpc2FibGUgPQorCQkJY29udGV4dC0+YndfY3R4LmJ3 LmRjZS5uYnBfc3RhdGVfY2hhbmdlX2VuYWJsZSA9PSBmYWxzZTsKKwlwcF9kaXNwbGF5X2NmZy0+ Y3B1X2NjNl9kaXNhYmxlID0KKwkJCWNvbnRleHQtPmJ3X2N0eC5idy5kY2UuY3B1Y19zdGF0ZV9j aGFuZ2VfZW5hYmxlID09IGZhbHNlOworCXBwX2Rpc3BsYXlfY2ZnLT5jcHVfcHN0YXRlX2Rpc2Fi bGUgPQorCQkJY29udGV4dC0+YndfY3R4LmJ3LmRjZS5jcHVwX3N0YXRlX2NoYW5nZV9lbmFibGUg PT0gZmFsc2U7CisJcHBfZGlzcGxheV9jZmctPmNwdV9wc3RhdGVfc2VwYXJhdGlvbl90aW1lID0K KwkJCWNvbnRleHQtPmJ3X2N0eC5idy5kY2UuYmxhY2tvdXRfcmVjb3ZlcnlfdGltZV91czsKKwor CXBwX2Rpc3BsYXlfY2ZnLT5taW5fbWVtb3J5X2Nsb2NrX2toeiA9IGNvbnRleHQtPmJ3X2N0eC5i dy5kY2UueWNsa19raHoKKwkJLyBNRU1PUllfVFlQRV9NVUxUSVBMSUVSX0NaOworCisJcHBfZGlz cGxheV9jZmctPm1pbl9lbmdpbmVfY2xvY2tfa2h6ID0gZGV0ZXJtaW5lX3NjbGtfZnJvbV9ib3Vu ZGluZ19ib3goCisJCQlkYywKKwkJCWNvbnRleHQtPmJ3X2N0eC5idy5kY2Uuc2Nsa19raHopOwor CisJLyoKKwkgKiBBcyB3b3JrYXJvdW5kIGZvciA+NHg0SyBsaWdodHVwIHNldCBkY2ZjbG9jayB0 byBtaW5fZW5naW5lX2Nsb2NrIHZhbHVlLgorCSAqIFRoaXMgaXMgbm90IHJlcXVpcmVkIGZvciBs ZXNzIHRoYW4gNSBkaXNwbGF5cywKKwkgKiB0aHVzIGRvbid0IHJlcXVlc3QgZGVjZmNsayBpbiBk YyB0byBhdm9pZCBpbXBhY3QKKwkgKiBvbiBwb3dlciBzYXZpbmcuCisJICoKKwkgKi8KKwlwcF9k aXNwbGF5X2NmZy0+bWluX2RjZmNsb2NrX2toeiA9IChjb250ZXh0LT5zdHJlYW1fY291bnQgPiA0 KSA/CisJCQlwcF9kaXNwbGF5X2NmZy0+bWluX2VuZ2luZV9jbG9ja19raHogOiAwOworCisJcHBf ZGlzcGxheV9jZmctPm1pbl9lbmdpbmVfY2xvY2tfZGVlcF9zbGVlcF9raHoKKwkJCT0gY29udGV4 dC0+YndfY3R4LmJ3LmRjZS5zY2xrX2RlZXBfc2xlZXBfa2h6OworCisJcHBfZGlzcGxheV9jZmct PmF2YWlsX21jbGtfc3dpdGNoX3RpbWVfdXMgPQorCQkJCQkJZGNlMTEwX2dldF9taW5fdmJsYW5r X3RpbWVfdXMoY29udGV4dCk7CisJLyogVE9ETzogZGNlMTEuMiovCisJcHBfZGlzcGxheV9jZmct PmF2YWlsX21jbGtfc3dpdGNoX3RpbWVfaW5fZGlzcF9hY3RpdmVfdXMgPSAwOworCisJcHBfZGlz cGxheV9jZmctPmRpc3BfY2xrX2toeiA9IGRjLT5jbGtfbWdyLT5jbGtzLmRpc3BjbGtfa2h6Owor CisJZGNlMTEwX2ZpbGxfZGlzcGxheV9jb25maWdzKGNvbnRleHQsIHBwX2Rpc3BsYXlfY2ZnKTsK KworCS8qIFRPRE86IGlzIHRoaXMgc3RpbGwgYXBwbGljYWJsZT8qLworCWlmIChwcF9kaXNwbGF5 X2NmZy0+ZGlzcGxheV9jb3VudCA9PSAxKSB7CisJCWNvbnN0IHN0cnVjdCBkY19jcnRjX3RpbWlu ZyAqdGltaW5nID0KKwkJCSZjb250ZXh0LT5zdHJlYW1zWzBdLT50aW1pbmc7CisKKwkJcHBfZGlz cGxheV9jZmctPmNydGNfaW5kZXggPQorCQkJcHBfZGlzcGxheV9jZmctPmRpc3BfY29uZmlnc1sw XS5waXBlX2lkeDsKKwkJcHBfZGlzcGxheV9jZmctPmxpbmVfdGltZV9pbl91cyA9IHRpbWluZy0+ aF90b3RhbCAqIDEwMDAwIC8gdGltaW5nLT5waXhfY2xrXzEwMGh6OworCX0KKworCWlmIChtZW1j bXAoJmRjLT5jdXJyZW50X3N0YXRlLT5wcF9kaXNwbGF5X2NmZywgcHBfZGlzcGxheV9jZmcsIHNp emVvZigqcHBfZGlzcGxheV9jZmcpKSAhPSAgMCkKKwkJZG1fcHBfYXBwbHlfZGlzcGxheV9yZXF1 aXJlbWVudHMoZGMtPmN0eCwgcHBfZGlzcGxheV9jZmcpOworfQorCitzdGF0aWMgdm9pZCBkY2Ux MV91cGRhdGVfY2xvY2tzKHN0cnVjdCBjbGtfbWdyICpjbGtfbWdyX2Jhc2UsCisJCQlzdHJ1Y3Qg ZGNfc3RhdGUgKmNvbnRleHQsCisJCQlib29sIHNhZmVfdG9fbG93ZXIpCit7CisJc3RydWN0IGNs a19tZ3JfaW50ZXJuYWwgKmNsa19tZ3JfZGNlID0gVE9fQ0xLX01HUl9JTlRFUk5BTChjbGtfbWdy X2Jhc2UpOworCXN0cnVjdCBkbV9wcF9wb3dlcl9sZXZlbF9jaGFuZ2VfcmVxdWVzdCBsZXZlbF9j aGFuZ2VfcmVxOworCWludCBwYXRjaGVkX2Rpc3BfY2xrID0gY29udGV4dC0+YndfY3R4LmJ3LmRj ZS5kaXNwY2xrX2toejsKKworCS8qVE9ETzogVy9BIGZvciBkYWwzIGxpbnV4LCBpbnZlc3RpZ2F0 ZSB3aHkgdGhpcyB3b3JrcyAqLworCWlmICghY2xrX21ncl9kY2UtPmRmc19ieXBhc3NfYWN0aXZl KQorCQlwYXRjaGVkX2Rpc3BfY2xrID0gcGF0Y2hlZF9kaXNwX2NsayAqIDExNSAvIDEwMDsKKwor CWxldmVsX2NoYW5nZV9yZXEucG93ZXJfbGV2ZWwgPSBkY2VfZ2V0X3JlcXVpcmVkX2Nsb2Nrc19z dGF0ZShjbGtfbWdyX2Jhc2UsIGNvbnRleHQpOworCS8qIGdldCBtYXggY2xvY2sgc3RhdGUgZnJv bSBQUExJQiAqLworCWlmICgobGV2ZWxfY2hhbmdlX3JlcS5wb3dlcl9sZXZlbCA8IGNsa19tZ3Jf ZGNlLT5jdXJfbWluX2Nsa3Nfc3RhdGUgJiYgc2FmZV90b19sb3dlcikKKwkJCXx8IGxldmVsX2No YW5nZV9yZXEucG93ZXJfbGV2ZWwgPiBjbGtfbWdyX2RjZS0+Y3VyX21pbl9jbGtzX3N0YXRlKSB7 CisJCWlmIChkbV9wcF9hcHBseV9wb3dlcl9sZXZlbF9jaGFuZ2VfcmVxdWVzdChjbGtfbWdyX2Jh c2UtPmN0eCwgJmxldmVsX2NoYW5nZV9yZXEpKQorCQkJY2xrX21ncl9kY2UtPmN1cl9taW5fY2xr c19zdGF0ZSA9IGxldmVsX2NoYW5nZV9yZXEucG93ZXJfbGV2ZWw7CisJfQorCisJaWYgKHNob3Vs ZF9zZXRfY2xvY2soc2FmZV90b19sb3dlciwgcGF0Y2hlZF9kaXNwX2NsaywgY2xrX21ncl9iYXNl LT5jbGtzLmRpc3BjbGtfa2h6KSkgeworCQljb250ZXh0LT5id19jdHguYncuZGNlLmRpc3BjbGtf a2h6ID0gZGNlX3NldF9jbG9jayhjbGtfbWdyX2Jhc2UsIHBhdGNoZWRfZGlzcF9jbGspOworCQlj bGtfbWdyX2Jhc2UtPmNsa3MuZGlzcGNsa19raHogPSBwYXRjaGVkX2Rpc3BfY2xrOworCX0KKwlk Y2UxMV9wcGxpYl9hcHBseV9kaXNwbGF5X3JlcXVpcmVtZW50cyhjbGtfbWdyX2Jhc2UtPmN0eC0+ ZGMsIGNvbnRleHQpOworfQorCitzdGF0aWMgc3RydWN0IGNsa19tZ3JfZnVuY3MgZGNlMTEwX2Z1 bmNzID0geworCS5nZXRfZHBfcmVmX2Nsa19mcmVxdWVuY3kgPSBkY2VfZ2V0X2RwX3JlZl9mcmVx X2toeiwKKwkudXBkYXRlX2Nsb2NrcyA9IGRjZTExX3VwZGF0ZV9jbG9ja3MKK307CisKK3ZvaWQg ZGNlMTEwX2Nsa19tZ3JfY29uc3RydWN0KAorCQlzdHJ1Y3QgZGNfY29udGV4dCAqY3R4LAorCQlz dHJ1Y3QgY2xrX21ncl9pbnRlcm5hbCAqY2xrX21ncikKK3sKKwltZW1jcHkoY2xrX21nci0+bWF4 X2Nsa3NfYnlfc3RhdGUsCisJCWRjZTExMF9tYXhfY2xrc19ieV9zdGF0ZSwKKwkJc2l6ZW9mKGRj ZTExMF9tYXhfY2xrc19ieV9zdGF0ZSkpOworCisJZGNlX2Nsa19tZ3JfY29uc3RydWN0KGN0eCwg Y2xrX21ncik7CisKKwljbGtfbWdyLT5yZWdzID0gJmRpc3BfY2xrX3JlZ3M7CisJY2xrX21nci0+ Y2xrX21ncl9zaGlmdCA9ICZkaXNwX2Nsa19zaGlmdDsKKwljbGtfbWdyLT5jbGtfbWdyX21hc2sg PSAmZGlzcF9jbGtfbWFzazsKKwljbGtfbWdyLT5iYXNlLmZ1bmNzID0gJmRjZTExMF9mdW5jczsK KworfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2RjZS9kY2Ux MTBfY2xrX21nci5oIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2RjZS9kY2UxMTBf Y2xrX21nci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMwZWIyZWEKLS0t IC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvZGNlL2RjZTEx MF9jbGtfbWdyLmgKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDEyLTE2IEFk dmFuY2VkIE1pY3JvIERldmljZXMsIEluYy4KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBn cmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQorICogY29w eSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRo ZSAiU29mdHdhcmUiKSwKKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJp Y3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KKyAqIHRoZSByaWdodHMgdG8gdXNl LCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAor ICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJz b25zIHRvIHdob20gdGhlCisgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1Ympl Y3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmln aHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGlu CisgKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4K KyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5U WSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1Qg TElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNT IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZF TlQgU0hBTEwKKyAqIFRIRSBDT1BZUklHSFQgSE9MREVSKFMpIE9SIEFVVEhPUihTKSBCRSBMSUFC TEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUgorICogT1RIRVIgTElBQklMSVRZLCBXSEVUSEVS IElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsCisgKiBBUklTSU5H IEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBV U0UgT1IKKyAqIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KKyAqCisgKiBBdXRob3Jz OiBBTUQKKyAqCisgKi8KKworI2lmbmRlZiBEQUxfRENfRENFX0RDRTExMF9DTEtfTUdSX0hfCisj ZGVmaW5lIERBTF9EQ19EQ0VfRENFMTEwX0NMS19NR1JfSF8KKwordm9pZCBkY2UxMTBfY2xrX21n cl9jb25zdHJ1Y3QoCisJCXN0cnVjdCBkY19jb250ZXh0ICpjdHgsCisJCXN0cnVjdCBjbGtfbWdy X2ludGVybmFsICpjbGtfbWdyKTsKKwordm9pZCBkY2UxMTBfZmlsbF9kaXNwbGF5X2NvbmZpZ3Mo CisJY29uc3Qgc3RydWN0IGRjX3N0YXRlICpjb250ZXh0LAorCXN0cnVjdCBkbV9wcF9kaXNwbGF5 X2NvbmZpZ3VyYXRpb24gKnBwX2Rpc3BsYXlfY2ZnKTsKKworLyogZnVuY3Rpb25zIHNoYXJlZCB3 aXRoIG90aGVyIGNsayBtZ3IqLwordm9pZCBkY2UxMV9wcGxpYl9hcHBseV9kaXNwbGF5X3JlcXVp cmVtZW50cygKKwlzdHJ1Y3QgZGMgKmRjLAorCXN0cnVjdCBkY19zdGF0ZSAqY29udGV4dCk7CisK K3VpbnQzMl90IGRjZTExMF9nZXRfbWluX3ZibGFua190aW1lX3VzKGNvbnN0IHN0cnVjdCBkY19z dGF0ZSAqY29udGV4dCk7CisKKyNlbmRpZiAvKiBEQUxfRENfRENFX0RDRTExMF9DTEtfTUdSX0hf ICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvZGNlL2RjZTEx Ml9jbGtfbWdyLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvZGNlL2RjZTExMl9j bGtfbWdyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjk1ZDk2OQotLS0g L2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9kY2UvZGNlMTEy X2Nsa19tZ3IuYwpAQCAtMCwwICsxLDIzOSBAQAorLyoKKyAqIENvcHlyaWdodCAyMDEyLTE2IEFk dmFuY2VkIE1pY3JvIERldmljZXMsIEluYy4KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBn cmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQorICogY29w eSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRo ZSAiU29mdHdhcmUiKSwKKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJp Y3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KKyAqIHRoZSByaWdodHMgdG8gdXNl LCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAor ICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJz b25zIHRvIHdob20gdGhlCisgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1Ympl Y3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmln aHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGlu CisgKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4K KyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5U WSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1Qg TElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNT IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZF TlQgU0hBTEwKKyAqIFRIRSBDT1BZUklHSFQgSE9MREVSKFMpIE9SIEFVVEhPUihTKSBCRSBMSUFC TEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUgorICogT1RIRVIgTElBQklMSVRZLCBXSEVUSEVS IElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsCisgKiBBUklTSU5H IEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBV U0UgT1IKKyAqIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KKyAqCisgKiBBdXRob3Jz OiBBTUQKKyAqCisgKi8KKworI2luY2x1ZGUgImNvcmVfdHlwZXMuaCIKKyNpbmNsdWRlICJjbGtf bWdyX2ludGVybmFsLmgiCisKKyNpbmNsdWRlICJkY2UvZGNlXzExXzJfZC5oIgorI2luY2x1ZGUg ImRjZS9kY2VfMTFfMl9zaF9tYXNrLmgiCisjaW5jbHVkZSAiZGNlX2Nsa19tZ3IuaCIKKyNpbmNs dWRlICJkY2UxMTBfY2xrX21nci5oIgorI2luY2x1ZGUgImRjZTExMl9jbGtfbWdyLmgiCisjaW5j bHVkZSAiZGFsX2FzaWNfaWQuaCIKKworLyogc2V0IHJlZ2lzdGVyIG9mZnNldCAqLworI2RlZmlu ZSBTUihyZWdfbmFtZSlcCisJLnJlZ19uYW1lID0gbW0gIyMgcmVnX25hbWUKKworLyogc2V0IHJl Z2lzdGVyIG9mZnNldCB3aXRoIGluc3RhbmNlICovCisjZGVmaW5lIFNSSShyZWdfbmFtZSwgYmxv Y2ssIGlkKVwKKwkucmVnX25hbWUgPSBtbSAjIyBibG9jayAjIyBpZCAjIyBfICMjIHJlZ19uYW1l CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgY2xrX21ncl9yZWdpc3RlcnMgZGlzcF9jbGtfcmVncyA9 IHsKKwkJQ0xLX0NPTU1PTl9SRUdfTElTVF9EQ0VfQkFTRSgpCit9OworCitzdGF0aWMgY29uc3Qg c3RydWN0IGNsa19tZ3Jfc2hpZnQgZGlzcF9jbGtfc2hpZnQgPSB7CisJCUNMS19DT01NT05fTUFT S19TSF9MSVNUX0RDRV9DT01NT05fQkFTRShfX1NISUZUKQorfTsKKworc3RhdGljIGNvbnN0IHN0 cnVjdCBjbGtfbWdyX21hc2sgZGlzcF9jbGtfbWFzayA9IHsKKwkJQ0xLX0NPTU1PTl9NQVNLX1NI X0xJU1RfRENFX0NPTU1PTl9CQVNFKF9NQVNLKQorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBz dGF0ZV9kZXBlbmRlbnRfY2xvY2tzIGRjZTExMl9tYXhfY2xrc19ieV9zdGF0ZVtdID0geworLypD bG9ja3NTdGF0ZUludmFsaWQgLSBzaG91bGQgbm90IGJlIHVzZWQqLworeyAuZGlzcGxheV9jbGtf a2h6ID0gMCwgLnBpeGVsX2Nsa19raHogPSAwIH0sCisvKkNsb2Nrc1N0YXRlVWx0cmFMb3cgLSBj dXJyZW50bHkgYnkgSFcgZGVzaWduIHRlYW0gbm90IHN1cHBvc2VkIHRvIGJlIHVzZWQqLworeyAu ZGlzcGxheV9jbGtfa2h6ID0gMzg5MTg5LCAucGl4ZWxfY2xrX2toeiA9IDM0NjY3MiB9LAorLypD bG9ja3NTdGF0ZUxvdyovCit7IC5kaXNwbGF5X2Nsa19raHogPSA0NTkwMDAsIC5waXhlbF9jbGtf a2h6ID0gNDAwMDAwIH0sCisvKkNsb2Nrc1N0YXRlTm9taW5hbCovCit7IC5kaXNwbGF5X2Nsa19r aHogPSA2NjcwMDAsIC5waXhlbF9jbGtfa2h6ID0gNjAwMDAwIH0sCisvKkNsb2Nrc1N0YXRlUGVy Zm9ybWFuY2UqLworeyAuZGlzcGxheV9jbGtfa2h6ID0gMTEzMjAwMCwgLnBpeGVsX2Nsa19raHog PSA2MDAwMDAgfSB9OworCisKKy8vVE9ETzogcmVtb3ZlIHVzZSB0aGUgdHdvIGJyb2tlbiBkb3du IGZ1bmN0aW9ucworaW50IGRjZTExMl9zZXRfY2xvY2soc3RydWN0IGNsa19tZ3IgKmNsa19tZ3Jf YmFzZSwgaW50IHJlcXVlc3RlZF9jbGtfa2h6KQoreworCXN0cnVjdCBjbGtfbWdyX2ludGVybmFs ICpjbGtfbWdyX2RjZSA9IFRPX0NMS19NR1JfSU5URVJOQUwoY2xrX21ncl9iYXNlKTsKKwlzdHJ1 Y3QgYnBfc2V0X2RjZV9jbG9ja19wYXJhbWV0ZXJzIGRjZV9jbGtfcGFyYW1zOworCXN0cnVjdCBk Y19iaW9zICpicCA9IGNsa19tZ3JfYmFzZS0+Y3R4LT5kY19iaW9zOworCXN0cnVjdCBkYyAqY29y ZV9kYyA9IGNsa19tZ3JfYmFzZS0+Y3R4LT5kYzsKKwlzdHJ1Y3QgZG1jdSAqZG1jdSA9IGNvcmVf ZGMtPnJlc19wb29sLT5kbWN1OworCWludCBhY3R1YWxfY2xvY2sgPSByZXF1ZXN0ZWRfY2xrX2to ejsKKwkvKiBQcmVwYXJlIHRvIHByb2dyYW0gZGlzcGxheSBjbG9jayovCisJbWVtc2V0KCZkY2Vf Y2xrX3BhcmFtcywgMCwgc2l6ZW9mKGRjZV9jbGtfcGFyYW1zKSk7CisKKwkvKiBNYWtlIHN1cmUg cmVxdWVzdGVkIGNsb2NrIGlzbid0IGxvd2VyIHRoYW4gbWluaW11bSB0aHJlc2hvbGQqLworCWlm IChyZXF1ZXN0ZWRfY2xrX2toeiA+IDApCisJCXJlcXVlc3RlZF9jbGtfa2h6ID0gbWF4KHJlcXVl c3RlZF9jbGtfa2h6LAorCQkJCWNsa19tZ3JfZGNlLT5kZW50aXN0X3Zjb19mcmVxX2toeiAvIDYy KTsKKworCWRjZV9jbGtfcGFyYW1zLnRhcmdldF9jbG9ja19mcmVxdWVuY3kgPSByZXF1ZXN0ZWRf Y2xrX2toejsKKwlkY2VfY2xrX3BhcmFtcy5wbGxfaWQgPSBDTE9DS19TT1VSQ0VfSURfREZTOwor CWRjZV9jbGtfcGFyYW1zLmNsb2NrX3R5cGUgPSBEQ0VDTE9DS19UWVBFX0RJU1BMQVlfQ0xPQ0s7 CisKKwlicC0+ZnVuY3MtPnNldF9kY2VfY2xvY2soYnAsICZkY2VfY2xrX3BhcmFtcyk7CisJYWN0 dWFsX2Nsb2NrID0gZGNlX2Nsa19wYXJhbXMudGFyZ2V0X2Nsb2NrX2ZyZXF1ZW5jeTsKKworCS8q CisJICogZnJvbSBwb3dlciBkb3duLCB3ZSBuZWVkIG1hcmsgdGhlIGNsb2NrIHN0YXRlIGFzIENs b2Nrc1N0YXRlTm9taW5hbAorCSAqIGZyb20gSFdSZXNldCwgc28gd2hlbiByZXN1bWUgd2Ugd2ls bCBjYWxsIHBwbGliIHZvbHRhZ2UgcmVndWxhdG9yLgorCSAqLworCWlmIChyZXF1ZXN0ZWRfY2xr X2toeiA9PSAwKQorCQljbGtfbWdyX2RjZS0+Y3VyX21pbl9jbGtzX3N0YXRlID0gRE1fUFBfQ0xP Q0tTX1NUQVRFX05PTUlOQUw7CisKKwkvKlByb2dyYW0gRFAgcmVmIENsb2NrKi8KKwkvKlZCSU9T IHdpbGwgZGV0ZXJtaW5lIERQUkVGQ0xLIGZyZXF1ZW5jeSwgc28gd2UgZG9uJ3Qgc2V0IGl0Ki8K KwlkY2VfY2xrX3BhcmFtcy50YXJnZXRfY2xvY2tfZnJlcXVlbmN5ID0gMDsKKwlkY2VfY2xrX3Bh cmFtcy5jbG9ja190eXBlID0gRENFQ0xPQ0tfVFlQRV9EUFJFRkNMSzsKKwlpZiAoIUFTSUNSRVZf SVNfVkVHQTIwX1AoY2xrX21ncl9iYXNlLT5jdHgtPmFzaWNfaWQuaHdfaW50ZXJuYWxfcmV2KSkK KwkJZGNlX2Nsa19wYXJhbXMuZmxhZ3MuVVNFX0dFTkxPQ0tfQVNfU09VUkNFX0ZPUl9EUFJFRkNM SyA9CisJCQkoZGNlX2Nsa19wYXJhbXMucGxsX2lkID09CisJCQkJCUNMT0NLX1NPVVJDRV9DT01C T19ESVNQTEFZX1BMTDApOworCWVsc2UKKwkJZGNlX2Nsa19wYXJhbXMuZmxhZ3MuVVNFX0dFTkxP Q0tfQVNfU09VUkNFX0ZPUl9EUFJFRkNMSyA9IGZhbHNlOworCisJYnAtPmZ1bmNzLT5zZXRfZGNl X2Nsb2NrKGJwLCAmZGNlX2Nsa19wYXJhbXMpOworCisJaWYgKCFJU19GUEdBX01BWElNVVNfREMo Y29yZV9kYy0+Y3R4LT5kY2VfZW52aXJvbm1lbnQpKSB7CisJCWlmIChkbWN1ICYmIGRtY3UtPmZ1 bmNzLT5pc19kbWN1X2luaXRpYWxpemVkKGRtY3UpKSB7CisJCQlpZiAoY2xrX21ncl9kY2UtPmRm c19ieXBhc3NfZGlzcF9jbGsgIT0gYWN0dWFsX2Nsb2NrKQorCQkJCWRtY3UtPmZ1bmNzLT5zZXRf cHNyX3dhaXRfbG9vcChkbWN1LAorCQkJCQkJYWN0dWFsX2Nsb2NrIC8gMTAwMCAvIDcpOworCQl9 CisJfQorCisJY2xrX21ncl9kY2UtPmRmc19ieXBhc3NfZGlzcF9jbGsgPSBhY3R1YWxfY2xvY2s7 CisJcmV0dXJuIGFjdHVhbF9jbG9jazsKK30KKworaW50IGRjZTExMl9zZXRfZGlzcGNsayhzdHJ1 Y3QgY2xrX21ncl9pbnRlcm5hbCAqY2xrX21nciwgaW50IHJlcXVlc3RlZF9jbGtfa2h6KQorewor CXN0cnVjdCBicF9zZXRfZGNlX2Nsb2NrX3BhcmFtZXRlcnMgZGNlX2Nsa19wYXJhbXM7CisJc3Ry dWN0IGRjX2Jpb3MgKmJwID0gY2xrX21nci0+YmFzZS5jdHgtPmRjX2Jpb3M7CisJc3RydWN0IGRj ICpjb3JlX2RjID0gY2xrX21nci0+YmFzZS5jdHgtPmRjOworCXN0cnVjdCBkbWN1ICpkbWN1ID0g Y29yZV9kYy0+cmVzX3Bvb2wtPmRtY3U7CisJaW50IGFjdHVhbF9jbG9jayA9IHJlcXVlc3RlZF9j bGtfa2h6OworCS8qIFByZXBhcmUgdG8gcHJvZ3JhbSBkaXNwbGF5IGNsb2NrKi8KKwltZW1zZXQo JmRjZV9jbGtfcGFyYW1zLCAwLCBzaXplb2YoZGNlX2Nsa19wYXJhbXMpKTsKKworCS8qIE1ha2Ug c3VyZSByZXF1ZXN0ZWQgY2xvY2sgaXNuJ3QgbG93ZXIgdGhhbiBtaW5pbXVtIHRocmVzaG9sZCov CisJaWYgKHJlcXVlc3RlZF9jbGtfa2h6ID4gMCkKKwkJcmVxdWVzdGVkX2Nsa19raHogPSBtYXgo cmVxdWVzdGVkX2Nsa19raHosCisJCQkJY2xrX21nci0+ZGVudGlzdF92Y29fZnJlcV9raHogLyA2 Mik7CisKKwlkY2VfY2xrX3BhcmFtcy50YXJnZXRfY2xvY2tfZnJlcXVlbmN5ID0gcmVxdWVzdGVk X2Nsa19raHo7CisJZGNlX2Nsa19wYXJhbXMucGxsX2lkID0gQ0xPQ0tfU09VUkNFX0lEX0RGUzsK KwlkY2VfY2xrX3BhcmFtcy5jbG9ja190eXBlID0gRENFQ0xPQ0tfVFlQRV9ESVNQTEFZX0NMT0NL OworCisJYnAtPmZ1bmNzLT5zZXRfZGNlX2Nsb2NrKGJwLCAmZGNlX2Nsa19wYXJhbXMpOworCWFj dHVhbF9jbG9jayA9IGRjZV9jbGtfcGFyYW1zLnRhcmdldF9jbG9ja19mcmVxdWVuY3k7CisKKwkv KgorCSAqIGZyb20gcG93ZXIgZG93biwgd2UgbmVlZCBtYXJrIHRoZSBjbG9jayBzdGF0ZSBhcyBD bG9ja3NTdGF0ZU5vbWluYWwKKwkgKiBmcm9tIEhXUmVzZXQsIHNvIHdoZW4gcmVzdW1lIHdlIHdp bGwgY2FsbCBwcGxpYiB2b2x0YWdlIHJlZ3VsYXRvci4KKwkgKi8KKwlpZiAocmVxdWVzdGVkX2Ns a19raHogPT0gMCkKKwkJY2xrX21nci0+Y3VyX21pbl9jbGtzX3N0YXRlID0gRE1fUFBfQ0xPQ0tT X1NUQVRFX05PTUlOQUw7CisKKworCWlmICghSVNfRlBHQV9NQVhJTVVTX0RDKGNvcmVfZGMtPmN0 eC0+ZGNlX2Vudmlyb25tZW50KSkgeworCQlpZiAoZG1jdSAmJiBkbWN1LT5mdW5jcy0+aXNfZG1j dV9pbml0aWFsaXplZChkbWN1KSkgeworCQkJaWYgKGNsa19tZ3ItPmRmc19ieXBhc3NfZGlzcF9j bGsgIT0gYWN0dWFsX2Nsb2NrKQorCQkJCWRtY3UtPmZ1bmNzLT5zZXRfcHNyX3dhaXRfbG9vcChk bWN1LAorCQkJCQkJYWN0dWFsX2Nsb2NrIC8gMTAwMCAvIDcpOworCQl9CisJfQorCisJY2xrX21n ci0+ZGZzX2J5cGFzc19kaXNwX2NsayA9IGFjdHVhbF9jbG9jazsKKwlyZXR1cm4gYWN0dWFsX2Ns b2NrOworCit9CisKK2ludCBkY2UxMTJfc2V0X2RwcmVmY2xrKHN0cnVjdCBjbGtfbWdyX2ludGVy bmFsICpjbGtfbWdyKQoreworCXN0cnVjdCBicF9zZXRfZGNlX2Nsb2NrX3BhcmFtZXRlcnMgZGNl X2Nsa19wYXJhbXM7CisJc3RydWN0IGRjX2Jpb3MgKmJwID0gY2xrX21nci0+YmFzZS5jdHgtPmRj X2Jpb3M7CisKKwltZW1zZXQoJmRjZV9jbGtfcGFyYW1zLCAwLCBzaXplb2YoZGNlX2Nsa19wYXJh bXMpKTsKKworCS8qUHJvZ3JhbSBEUCByZWYgQ2xvY2sqLworCS8qVkJJT1Mgd2lsbCBkZXRlcm1p bmUgRFBSRUZDTEsgZnJlcXVlbmN5LCBzbyB3ZSBkb24ndCBzZXQgaXQqLworCWRjZV9jbGtfcGFy YW1zLnRhcmdldF9jbG9ja19mcmVxdWVuY3kgPSAwOworCWRjZV9jbGtfcGFyYW1zLnBsbF9pZCA9 IENMT0NLX1NPVVJDRV9JRF9ERlM7CisJZGNlX2Nsa19wYXJhbXMuY2xvY2tfdHlwZSA9IERDRUNM T0NLX1RZUEVfRFBSRUZDTEs7CisJaWYgKCFBU0lDUkVWX0lTX1ZFR0EyMF9QKGNsa19tZ3ItPmJh c2UuY3R4LT5hc2ljX2lkLmh3X2ludGVybmFsX3JldikpCisJCWRjZV9jbGtfcGFyYW1zLmZsYWdz LlVTRV9HRU5MT0NLX0FTX1NPVVJDRV9GT1JfRFBSRUZDTEsgPQorCQkJKGRjZV9jbGtfcGFyYW1z LnBsbF9pZCA9PQorCQkJCQlDTE9DS19TT1VSQ0VfQ09NQk9fRElTUExBWV9QTEwwKTsKKwllbHNl CisJCWRjZV9jbGtfcGFyYW1zLmZsYWdzLlVTRV9HRU5MT0NLX0FTX1NPVVJDRV9GT1JfRFBSRUZD TEsgPSBmYWxzZTsKKworCWJwLT5mdW5jcy0+c2V0X2RjZV9jbG9jayhicCwgJmRjZV9jbGtfcGFy YW1zKTsKKworCS8qIFJldHVybnMgdGhlIGRwX3JlZmNsayB0aGF0IHdhcyBzZXQgKi8KKwlyZXR1 cm4gZGNlX2Nsa19wYXJhbXMudGFyZ2V0X2Nsb2NrX2ZyZXF1ZW5jeTsKK30KKworc3RhdGljIHZv aWQgZGNlMTEyX3VwZGF0ZV9jbG9ja3Moc3RydWN0IGNsa19tZ3IgKmNsa19tZ3JfYmFzZSwKKwkJ CXN0cnVjdCBkY19zdGF0ZSAqY29udGV4dCwKKwkJCWJvb2wgc2FmZV90b19sb3dlcikKK3sKKwlz dHJ1Y3QgY2xrX21ncl9pbnRlcm5hbCAqY2xrX21ncl9kY2UgPSBUT19DTEtfTUdSX0lOVEVSTkFM KGNsa19tZ3JfYmFzZSk7CisJc3RydWN0IGRtX3BwX3Bvd2VyX2xldmVsX2NoYW5nZV9yZXF1ZXN0 IGxldmVsX2NoYW5nZV9yZXE7CisJaW50IHBhdGNoZWRfZGlzcF9jbGsgPSBjb250ZXh0LT5id19j dHguYncuZGNlLmRpc3BjbGtfa2h6OworCisJLypUT0RPOiBXL0EgZm9yIGRhbDMgbGludXgsIGlu dmVzdGlnYXRlIHdoeSB0aGlzIHdvcmtzICovCisJaWYgKCFjbGtfbWdyX2RjZS0+ZGZzX2J5cGFz c19hY3RpdmUpCisJCXBhdGNoZWRfZGlzcF9jbGsgPSBwYXRjaGVkX2Rpc3BfY2xrICogMTE1IC8g MTAwOworCisJbGV2ZWxfY2hhbmdlX3JlcS5wb3dlcl9sZXZlbCA9IGRjZV9nZXRfcmVxdWlyZWRf Y2xvY2tzX3N0YXRlKGNsa19tZ3JfYmFzZSwgY29udGV4dCk7CisJLyogZ2V0IG1heCBjbG9jayBz dGF0ZSBmcm9tIFBQTElCICovCisJaWYgKChsZXZlbF9jaGFuZ2VfcmVxLnBvd2VyX2xldmVsIDwg Y2xrX21ncl9kY2UtPmN1cl9taW5fY2xrc19zdGF0ZSAmJiBzYWZlX3RvX2xvd2VyKQorCQkJfHwg bGV2ZWxfY2hhbmdlX3JlcS5wb3dlcl9sZXZlbCA+IGNsa19tZ3JfZGNlLT5jdXJfbWluX2Nsa3Nf c3RhdGUpIHsKKwkJaWYgKGRtX3BwX2FwcGx5X3Bvd2VyX2xldmVsX2NoYW5nZV9yZXF1ZXN0KGNs a19tZ3JfYmFzZS0+Y3R4LCAmbGV2ZWxfY2hhbmdlX3JlcSkpCisJCQljbGtfbWdyX2RjZS0+Y3Vy X21pbl9jbGtzX3N0YXRlID0gbGV2ZWxfY2hhbmdlX3JlcS5wb3dlcl9sZXZlbDsKKwl9CisKKwlp ZiAoc2hvdWxkX3NldF9jbG9jayhzYWZlX3RvX2xvd2VyLCBwYXRjaGVkX2Rpc3BfY2xrLCBjbGtf bWdyX2Jhc2UtPmNsa3MuZGlzcGNsa19raHopKSB7CisJCXBhdGNoZWRfZGlzcF9jbGsgPSBkY2Ux MTJfc2V0X2Nsb2NrKGNsa19tZ3JfYmFzZSwgcGF0Y2hlZF9kaXNwX2Nsayk7CisJCWNsa19tZ3Jf YmFzZS0+Y2xrcy5kaXNwY2xrX2toeiA9IHBhdGNoZWRfZGlzcF9jbGs7CisJfQorCWRjZTExX3Bw bGliX2FwcGx5X2Rpc3BsYXlfcmVxdWlyZW1lbnRzKGNsa19tZ3JfYmFzZS0+Y3R4LT5kYywgY29u dGV4dCk7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgY2xrX21ncl9mdW5jcyBkY2UxMTJfZnVuY3MgPSB7 CisJLmdldF9kcF9yZWZfY2xrX2ZyZXF1ZW5jeSA9IGRjZV9nZXRfZHBfcmVmX2ZyZXFfa2h6LAor CS51cGRhdGVfY2xvY2tzID0gZGNlMTEyX3VwZGF0ZV9jbG9ja3MKK307CisKK3ZvaWQgZGNlMTEy X2Nsa19tZ3JfY29uc3RydWN0KAorCQlzdHJ1Y3QgZGNfY29udGV4dCAqY3R4LAorCQlzdHJ1Y3Qg Y2xrX21ncl9pbnRlcm5hbCAqY2xrX21ncikKK3sKKwltZW1jcHkoY2xrX21nci0+bWF4X2Nsa3Nf Ynlfc3RhdGUsCisJCWRjZTExMl9tYXhfY2xrc19ieV9zdGF0ZSwKKwkJc2l6ZW9mKGRjZTExMl9t YXhfY2xrc19ieV9zdGF0ZSkpOworCisJZGNlX2Nsa19tZ3JfY29uc3RydWN0KGN0eCwgY2xrX21n cik7CisKKwljbGtfbWdyLT5yZWdzID0gJmRpc3BfY2xrX3JlZ3M7CisJY2xrX21nci0+Y2xrX21n cl9zaGlmdCA9ICZkaXNwX2Nsa19zaGlmdDsKKwljbGtfbWdyLT5jbGtfbWdyX21hc2sgPSAmZGlz cF9jbGtfbWFzazsKKwljbGtfbWdyLT5iYXNlLmZ1bmNzID0gJmRjZTExMl9mdW5jczsKK30KZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9kY2UvZGNlMTEyX2Nsa19t Z3IuaCBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9kY2UvZGNlMTEyX2Nsa19tZ3Iu aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZmIwNmRiCi0tLSAvZGV2L251 bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2RjZS9kY2UxMTJfY2xrX21n ci5oCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAxMi0xNiBBZHZhbmNlZCBN aWNybyBEZXZpY2VzLCBJbmMuCisgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwg ZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKKyAqIGNvcHkgb2YgdGhp cyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3 YXJlIiksCisgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBp bmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCisgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwg bW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKKyAqIGFuZC9v ciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3 aG9tIHRoZQorICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRo ZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGlj ZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgorICogYWxs IGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisgKgorICog VEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5Z IEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQg VE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxM CisgKiBUSEUgQ09QWVJJR0hUIEhPTERFUihTKSBPUiBBVVRIT1IoUykgQkUgTElBQkxFIEZPUiBB TlkgQ0xBSU0sIERBTUFHRVMgT1IKKyAqIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBB Q1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLAorICogQVJJU0lORyBGUk9NLCBP VVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SCisg KiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCisgKgorICogQXV0aG9yczogQU1ECisg KgorICovCisKKyNpZm5kZWYgREFMX0RDX0RDRV9EQ0UxMTJfQ0xLX01HUl9IXworI2RlZmluZSBE QUxfRENfRENFX0RDRTExMl9DTEtfTUdSX0hfCisKKwordm9pZCBkY2UxMTJfY2xrX21ncl9jb25z dHJ1Y3QoCisJCXN0cnVjdCBkY19jb250ZXh0ICpjdHgsCisJCXN0cnVjdCBjbGtfbWdyX2ludGVy bmFsICpjbGtfbWdyKTsKKworLyogZnVuY3Rpb25zIHNoYXJlZCB3aXRoIG90aGVyIGNsayBtZ3Ig Ki8KK2ludCBkY2UxMTJfc2V0X2Nsb2NrKHN0cnVjdCBjbGtfbWdyICpjbGtfbWdyX2Jhc2UsIGlu dCByZXF1ZXN0ZWRfY2xrX2toeik7CitpbnQgZGNlMTEyX3NldF9kaXNwY2xrKHN0cnVjdCBjbGtf bWdyX2ludGVybmFsICpjbGtfbWdyLCBpbnQgcmVxdWVzdGVkX2Nsa19raHopOworaW50IGRjZTEx Ml9zZXRfZHByZWZjbGsoc3RydWN0IGNsa19tZ3JfaW50ZXJuYWwgKmNsa19tZ3IpOworCisjZW5k aWYgLyogREFMX0RDX0RDRV9EQ0UxMTJfQ0xLX01HUl9IXyAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2RjZS9kY2UxMjBfY2xrX21nci5jIGIvZHJpdmVycy9n cHUvZHJtL2FtZC9kaXNwbGF5L2RjL2RjZS9kY2UxMjBfY2xrX21nci5jCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEwOTNjNGZjCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2RjZS9kY2UxMjBfY2xrX21nci5jCkBAIC0wLDAgKzEs MTQ1IEBACisvKgorICogQ29weXJpZ2h0IDIwMTItMTYgQWR2YW5jZWQgTWljcm8gRGV2aWNlcywg SW5jLgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdl LCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5k IGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAorICogdG8g ZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhv dXQgbGltaXRhdGlvbgorICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2Us IHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCisgKiBhbmQvb3Igc2VsbCBjb3BpZXMg b2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKKyAqIFNv ZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNv bmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVy bWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KKyAqIGFsbCBjb3BpZXMgb3Igc3Vi c3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJ UyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNT IE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5U SUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAorICogVEhFIENPUFlS SUdIVCBIT0xERVIoUykgT1IgQVVUSE9SKFMpIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1B R0VTIE9SCisgKiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRS QUNULCBUT1JUIE9SIE9USEVSV0lTRSwKKyAqIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENP Tk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUgorICogT1RIRVIgREVBTElO R1MgSU4gVEhFIFNPRlRXQVJFLgorICoKKyAqIEF1dGhvcnM6IEFNRAorICoKKyAqLworCisjaW5j bHVkZSAiY29yZV90eXBlcy5oIgorI2luY2x1ZGUgImNsa19tZ3JfaW50ZXJuYWwuaCIKKworI2lu Y2x1ZGUgImRjZV9jbGtfbWdyLmgiCisjaW5jbHVkZSAiZGNlMTEyX2Nsa19tZ3IuaCIKKyNpbmNs dWRlICJkY2UxMTBfY2xrX21nci5oIgorI2luY2x1ZGUgImRjZTEyMF9jbGtfbWdyLmgiCisKK3N0 YXRpYyBjb25zdCBzdHJ1Y3Qgc3RhdGVfZGVwZW5kZW50X2Nsb2NrcyBkY2UxMjBfbWF4X2Nsa3Nf Ynlfc3RhdGVbXSA9IHsKKy8qQ2xvY2tzU3RhdGVJbnZhbGlkIC0gc2hvdWxkIG5vdCBiZSB1c2Vk Ki8KK3sgLmRpc3BsYXlfY2xrX2toeiA9IDAsIC5waXhlbF9jbGtfa2h6ID0gMCB9LAorLypDbG9j a3NTdGF0ZVVsdHJhTG93IC0gY3VycmVudGx5IGJ5IEhXIGRlc2lnbiB0ZWFtIG5vdCBzdXBwb3Nl ZCB0byBiZSB1c2VkKi8KK3sgLmRpc3BsYXlfY2xrX2toeiA9IDAsIC5waXhlbF9jbGtfa2h6ID0g MCB9LAorLypDbG9ja3NTdGF0ZUxvdyovCit7IC5kaXNwbGF5X2Nsa19raHogPSA0NjAwMDAsIC5w aXhlbF9jbGtfa2h6ID0gNDAwMDAwIH0sCisvKkNsb2Nrc1N0YXRlTm9taW5hbCovCit7IC5kaXNw bGF5X2Nsa19raHogPSA2NzAwMDAsIC5waXhlbF9jbGtfa2h6ID0gNjAwMDAwIH0sCisvKkNsb2Nr c1N0YXRlUGVyZm9ybWFuY2UqLworeyAuZGlzcGxheV9jbGtfa2h6ID0gMTEzMzAwMCwgLnBpeGVs X2Nsa19raHogPSA2MDAwMDAgfSB9OworCisvKioKKyAqIGRjZTEyMV9jbG9ja19wYXRjaF94Z21p X3NzX2luZm8oKSAtIFNhdmUgWEdNSSBzcHJlYWQgc3BlY3RydW0gaW5mbworICogQGNsa19tZ3I6 IGNsb2NrIG1hbmFnZXIgYmFzZSBzdHJ1Y3R1cmUKKyAqCisgKiBSZWFkcyBmcm9tIFZCSU9TIHRo ZSBYR01JIHNwcmVhZCBzcGVjdHJ1bSBpbmZvIGFuZCBzYXZlcyBpdCB3aXRoaW4KKyAqIHRoZSBk Y2UgY2xvY2sgbWFuYWdlci4gVGhpcyBvcGVyYXRpb24gd2lsbCBvdmVyd3JpdGUgdGhlIGV4aXN0 aW5nIGRwcmVmY2xrCisgKiBTUyB2YWx1ZXMgaWYgdGhlIHZCSU9TIHF1ZXJ5IHN1Y2NlZWRzLiBP dGhlcndpc2UsIGl0IGRvZXMgbm90aGluZy4gSXQgYWxzbworICogc2V0cyB0aGUgLT54Z21pX2Vu YWJsZWQgZmxhZy4KKyAqLwordm9pZCBkY2UxMjFfY2xvY2tfcGF0Y2hfeGdtaV9zc19pbmZvKHN0 cnVjdCBjbGtfbWdyICpjbGtfbWdyX2Jhc2UpCit7CisJc3RydWN0IGNsa19tZ3JfaW50ZXJuYWwg KmNsa19tZ3JfZGNlID0gVE9fQ0xLX01HUl9JTlRFUk5BTChjbGtfbWdyX2Jhc2UpOworCWVudW0g YnBfcmVzdWx0IHJlc3VsdDsKKwlzdHJ1Y3Qgc3ByZWFkX3NwZWN0cnVtX2luZm8gaW5mbyA9IHsg eyAwIH0gfTsKKwlzdHJ1Y3QgZGNfYmlvcyAqYnAgPSBjbGtfbWdyX2RjZS0+YmFzZS5jdHgtPmRj X2Jpb3M7CisKKwljbGtfbWdyX2RjZS0+eGdtaV9lbmFibGVkID0gZmFsc2U7CisKKwlyZXN1bHQg PSBicC0+ZnVuY3MtPmdldF9zcHJlYWRfc3BlY3RydW1faW5mbyhicCwgQVNfU0lHTkFMX1RZUEVf WEdNSSwKKwkJCQkJCSAgICAgMCwgJmluZm8pOworCWlmIChyZXN1bHQgPT0gQlBfUkVTVUxUX09L ICYmIGluZm8uc3ByZWFkX3NwZWN0cnVtX3BlcmNlbnRhZ2UgIT0gMCkgeworCQljbGtfbWdyX2Rj ZS0+eGdtaV9lbmFibGVkID0gdHJ1ZTsKKwkJY2xrX21ncl9kY2UtPnNzX29uX2RwcmVmY2xrID0g dHJ1ZTsKKwkJY2xrX21ncl9kY2UtPmRwcmVmY2xrX3NzX2RpdmlkZXIgPQorCQkJCWluZm8uc3By ZWFkX3BlcmNlbnRhZ2VfZGl2aWRlcjsKKworCQlpZiAoaW5mby50eXBlLkNFTlRFUl9NT0RFID09 IDApIHsKKwkJCS8qCisJCQkgKiBDdXJyZW50bHkgZm9yIERQIFJlZmVyZW5jZSBjbG9jayB3ZQor CQkJICogbmVlZCBvbmx5IFNTIHBlcmNlbnRhZ2UgZm9yCisJCQkgKiBkb3duc3ByZWFkCisJCQkg Ki8KKwkJCWNsa19tZ3JfZGNlLT5kcHJlZmNsa19zc19wZXJjZW50YWdlID0KKwkJCQkJaW5mby5z cHJlYWRfc3BlY3RydW1fcGVyY2VudGFnZTsKKwkJfQorCX0KK30KKworc3RhdGljIHZvaWQgZGNl MTJfdXBkYXRlX2Nsb2NrcyhzdHJ1Y3QgY2xrX21nciAqY2xrX21ncl9iYXNlLAorCQkJc3RydWN0 IGRjX3N0YXRlICpjb250ZXh0LAorCQkJYm9vbCBzYWZlX3RvX2xvd2VyKQoreworCXN0cnVjdCBj bGtfbWdyX2ludGVybmFsICpjbGtfbWdyX2RjZSA9IFRPX0NMS19NR1JfSU5URVJOQUwoY2xrX21n cl9iYXNlKTsKKwlzdHJ1Y3QgZG1fcHBfY2xvY2tfZm9yX3ZvbHRhZ2VfcmVxIGNsb2NrX3ZvbHRh Z2VfcmVxID0gezB9OworCWludCBtYXhfcGl4X2NsayA9IGRjZV9nZXRfbWF4X3BpeGVsX2Nsb2Nr X2Zvcl9hbGxfcGF0aHMoY29udGV4dCk7CisJaW50IHBhdGNoZWRfZGlzcF9jbGsgPSBjb250ZXh0 LT5id19jdHguYncuZGNlLmRpc3BjbGtfa2h6OworCisJLypUT0RPOiBXL0EgZm9yIGRhbDMgbGlu dXgsIGludmVzdGlnYXRlIHdoeSB0aGlzIHdvcmtzICovCisJaWYgKCFjbGtfbWdyX2RjZS0+ZGZz X2J5cGFzc19hY3RpdmUpCisJCXBhdGNoZWRfZGlzcF9jbGsgPSBwYXRjaGVkX2Rpc3BfY2xrICog MTE1IC8gMTAwOworCisJaWYgKHNob3VsZF9zZXRfY2xvY2soc2FmZV90b19sb3dlciwgcGF0Y2hl ZF9kaXNwX2NsaywgY2xrX21ncl9iYXNlLT5jbGtzLmRpc3BjbGtfa2h6KSkgeworCQljbG9ja192 b2x0YWdlX3JlcS5jbGtfdHlwZSA9IERNX1BQX0NMT0NLX1RZUEVfRElTUExBWV9DTEs7CisJCS8q CisJCSAqIFdoZW4geEdNSSBpcyBlbmFibGVkLCB0aGUgZGlzcGxheSBjbGsgbmVlZHMgdG8gYmUg YWRqdXN0ZWQKKwkJICogd2l0aCB0aGUgV0FGTCBsaW5rJ3MgU1MgcGVyY2VudGFnZS4KKwkJICov CisJCWlmIChjbGtfbWdyX2RjZS0+eGdtaV9lbmFibGVkKQorCQkJcGF0Y2hlZF9kaXNwX2NsayA9 IGRjZV9hZGp1c3RfZHBfcmVmX2ZyZXFfZm9yX3NzKAorCQkJCQljbGtfbWdyX2RjZSwgcGF0Y2hl ZF9kaXNwX2Nsayk7CisJCWNsb2NrX3ZvbHRhZ2VfcmVxLmNsb2Nrc19pbl9raHogPSBwYXRjaGVk X2Rpc3BfY2xrOworCQljbGtfbWdyX2Jhc2UtPmNsa3MuZGlzcGNsa19raHogPSBkY2UxMTJfc2V0 X2Nsb2NrKGNsa19tZ3JfYmFzZSwgcGF0Y2hlZF9kaXNwX2Nsayk7CisKKwkJZG1fcHBfYXBwbHlf Y2xvY2tfZm9yX3ZvbHRhZ2VfcmVxdWVzdChjbGtfbWdyX2Jhc2UtPmN0eCwgJmNsb2NrX3ZvbHRh Z2VfcmVxKTsKKwl9CisKKwlpZiAoc2hvdWxkX3NldF9jbG9jayhzYWZlX3RvX2xvd2VyLCBtYXhf cGl4X2NsaywgY2xrX21ncl9iYXNlLT5jbGtzLnBoeWNsa19raHopKSB7CisJCWNsb2NrX3ZvbHRh Z2VfcmVxLmNsa190eXBlID0gRE1fUFBfQ0xPQ0tfVFlQRV9ESVNQTEFZUEhZQ0xLOworCQljbG9j a192b2x0YWdlX3JlcS5jbG9ja3NfaW5fa2h6ID0gbWF4X3BpeF9jbGs7CisJCWNsa19tZ3JfYmFz ZS0+Y2xrcy5waHljbGtfa2h6ID0gbWF4X3BpeF9jbGs7CisKKwkJZG1fcHBfYXBwbHlfY2xvY2tf Zm9yX3ZvbHRhZ2VfcmVxdWVzdChjbGtfbWdyX2Jhc2UtPmN0eCwgJmNsb2NrX3ZvbHRhZ2VfcmVx KTsKKwl9CisJZGNlMTFfcHBsaWJfYXBwbHlfZGlzcGxheV9yZXF1aXJlbWVudHMoY2xrX21ncl9i YXNlLT5jdHgtPmRjLCBjb250ZXh0KTsKK30KKworCitzdGF0aWMgc3RydWN0IGNsa19tZ3JfZnVu Y3MgZGNlMTIwX2Z1bmNzID0geworCS5nZXRfZHBfcmVmX2Nsa19mcmVxdWVuY3kgPSBkY2UxMl9n ZXRfZHBfcmVmX2ZyZXFfa2h6LAorCS51cGRhdGVfY2xvY2tzID0gZGNlMTJfdXBkYXRlX2Nsb2Nr cworfTsKKwordm9pZCBkY2UxMjBfY2xrX21ncl9jb25zdHJ1Y3Qoc3RydWN0IGRjX2NvbnRleHQg KmN0eCwgc3RydWN0IGNsa19tZ3JfaW50ZXJuYWwgKmNsa19tZ3IpCit7CisJbWVtY3B5KGNsa19t Z3ItPm1heF9jbGtzX2J5X3N0YXRlLAorCQlkY2UxMjBfbWF4X2Nsa3NfYnlfc3RhdGUsCisJCXNp emVvZihkY2UxMjBfbWF4X2Nsa3NfYnlfc3RhdGUpKTsKKworCWRjZV9jbGtfbWdyX2NvbnN0cnVj dChjdHgsIGNsa19tZ3IpOworCisJY2xrX21nci0+YmFzZS5kcHJlZmNsa19raHogPSA2MDAwMDA7 CisJY2xrX21nci0+YmFzZS5mdW5jcyA9ICZkY2UxMjBfZnVuY3M7Cit9CisKK3ZvaWQgZGNlMTIx X2Nsa19tZ3JfY29uc3RydWN0KHN0cnVjdCBkY19jb250ZXh0ICpjdHgsIHN0cnVjdCBjbGtfbWdy X2ludGVybmFsICpjbGtfbWdyKQoreworCWRjZTEyMF9jbGtfbWdyX2NvbnN0cnVjdChjdHgsIGNs a19tZ3IpOworCWNsa19tZ3ItPmJhc2UuZHByZWZjbGtfa2h6ID0gNjI1MDAwOworfQorCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvZGNlL2RjZTEyMF9jbGtfbWdy LmggYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvZGNlL2RjZTEyMF9jbGtfbWdyLmgK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDEyZDZmYwotLS0gL2Rldi9udWxs CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9kY2UvZGNlMTIwX2Nsa19tZ3Iu aApAQCAtMCwwICsxLDM0IEBACisvKgorICogQ29weXJpZ2h0IDIwMTItMTYgQWR2YW5jZWQgTWlj cm8gRGV2aWNlcywgSW5jLgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZy ZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisgKiBjb3B5IG9mIHRoaXMg c29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2Fy ZSIpLAorICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5j bHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgorICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1v ZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCisgKiBhbmQvb3Ig c2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hv bSB0aGUKKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUg Zm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2Ug YW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KKyAqIGFsbCBj b3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorICoKKyAqIFRI RSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBL SU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRP IFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAor ICogVEhFIENPUFlSSUdIVCBIT0xERVIoUykgT1IgQVVUSE9SKFMpIEJFIExJQUJMRSBGT1IgQU5Z IENMQUlNLCBEQU1BR0VTIE9SCisgKiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNU SU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwKKyAqIEFSSVNJTkcgRlJPTSwgT1VU IE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUgorICog T1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgorICoKKyAqIEF1dGhvcnM6IEFNRAorICoK KyAqLworCisjaWZuZGVmIERBTF9EQ19EQ0VfRENFMTIwX0NMS19NR1JfSF8KKyNkZWZpbmUgREFM X0RDX0RDRV9EQ0UxMjBfQ0xLX01HUl9IXworCit2b2lkIGRjZTEyMF9jbGtfbWdyX2NvbnN0cnVj dChzdHJ1Y3QgZGNfY29udGV4dCAqY3R4LCBzdHJ1Y3QgY2xrX21ncl9pbnRlcm5hbCAqY2xrX21n cik7Cit2b2lkIGRjZTEyMV9jbGtfbWdyX2NvbnN0cnVjdChzdHJ1Y3QgZGNfY29udGV4dCAqY3R4 LCBzdHJ1Y3QgY2xrX21ncl9pbnRlcm5hbCAqY2xrX21ncik7CisKKworCisjZW5kaWYgLyogREFM X0RDX0RDRV9EQ0UxMjBfQ0xLX01HUl9IXyAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2FtZC9kaXNwbGF5L2RjL2RjZS9kY2VfY2xrX21nci5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9k aXNwbGF5L2RjL2RjZS9kY2VfY2xrX21nci5jCmluZGV4IDZiMmUyMDcuLmIzMGU0YzUgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9kY2UvZGNlX2Nsa19tZ3IuYwor KysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvZGNlL2RjZV9jbGtfbWdyLmMKQEAg LTIyLDI4ICsyMiw0NCBAQAogICogQXV0aG9yczogQU1ECiAgKgogICovCi0KKyNpbmNsdWRlICJk Y2NnLmgiCisjaW5jbHVkZSAiY2xrX21ncl9pbnRlcm5hbC5oIgogI2luY2x1ZGUgImRjZV9jbGtf bWdyLmgiCi0KKyNpbmNsdWRlICJkY2UxMTBfY2xrX21nci5oIgorI2luY2x1ZGUgImRjZTExMl9j bGtfbWdyLmgiCiAjaW5jbHVkZSAicmVnX2hlbHBlci5oIgogI2luY2x1ZGUgImRtY3UuaCIKICNp bmNsdWRlICJjb3JlX3R5cGVzLmgiCiAjaW5jbHVkZSAiZGFsX2FzaWNfaWQuaCIKIAotI2RlZmlu ZSBUT19EQ0VfQ0xLX01HUihjbG9ja3MpXAotCWNvbnRhaW5lcl9vZihjbG9ja3MsIHN0cnVjdCBk Y2VfY2xrX21nciwgYmFzZSkKKy8qCisgKiBDdXJyZW50bHkgdGhlIHJlZ2lzdGVyIHNoaWZ0cyBh bmQgbWFza3MgaW4gdGhpcyBmaWxlIGFyZSB1c2VkIGZvciBkY2UxMDAgYW5kIGRjZTgwCisgKiB3 aGljaCBoYXMgaWRlbnRpY2FsIGRlZmluaXRpb25zLgorICogVE9ETzogcmVtb3ZlIHRoaXMgd2hl biBEUFJFRkNMS19DTlRMIGFuZCBkcHJlZiBERU5USVNUX0RJU1BDTEtfQ05UTAorICogaXMgbW92 ZWQgdG8gZGNjZywgd2hlcmUgaXQgYmVsb25ncworICovCisjaW5jbHVkZSAiZGNlL2RjZV84XzBf ZC5oIgorI2luY2x1ZGUgImRjZS9kY2VfOF8wX3NoX21hc2suaCIKIAogI2RlZmluZSBSRUcocmVn KSBcCi0JKGNsa19tZ3JfZGNlLT5yZWdzLT5yZWcpCisJKGNsa19tZ3ItPnJlZ3MtPnJlZykKIAog I3VuZGVmIEZOCiAjZGVmaW5lIEZOKHJlZ19uYW1lLCBmaWVsZF9uYW1lKSBcCi0JY2xrX21ncl9k Y2UtPmNsa19tZ3Jfc2hpZnQtPmZpZWxkX25hbWUsIGNsa19tZ3JfZGNlLT5jbGtfbWdyX21hc2st PmZpZWxkX25hbWUKKwljbGtfbWdyLT5jbGtfbWdyX3NoaWZ0LT5maWVsZF9uYW1lLCBjbGtfbWdy LT5jbGtfbWdyX21hc2stPmZpZWxkX25hbWUKKworc3RhdGljIGNvbnN0IHN0cnVjdCBjbGtfbWdy X3JlZ2lzdGVycyBkaXNwX2Nsa19yZWdzID0geworCQlDTEtfQ09NTU9OX1JFR19MSVNUX0RDRV9C QVNFKCkKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgY2xrX21ncl9zaGlmdCBkaXNwX2Nsa19z aGlmdCA9IHsKKwkJQ0xLX0NPTU1PTl9NQVNLX1NIX0xJU1RfRENFX0NPTU1PTl9CQVNFKF9fU0hJ RlQpCit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IGNsa19tZ3JfbWFzayBkaXNwX2Nsa19tYXNr ID0geworCQlDTEtfQ09NTU9OX01BU0tfU0hfTElTVF9EQ0VfQ09NTU9OX0JBU0UoX01BU0spCit9 OwogCi0jZGVmaW5lIENUWCBcCi0JY2xrX21ncl9kY2UtPmJhc2UuY3R4Ci0jZGVmaW5lIERDX0xP R0dFUiBcCi0JY2xrX21nci0+Y3R4LT5sb2dnZXIKIAogLyogTWF4IGNsb2NrIHZhbHVlcyBmb3Ig ZWFjaCBzdGF0ZSBpbmRleGVkIGJ5ICJlbnVtIGNsb2Nrc19zdGF0ZSI6ICovCiBzdGF0aWMgY29u c3Qgc3RydWN0IHN0YXRlX2RlcGVuZGVudF9jbG9ja3MgZGNlODBfbWF4X2Nsa3NfYnlfc3RhdGVb XSA9IHsKQEAgLTU4LDQyICs3NCw2IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3RhdGVfZGVwZW5k ZW50X2Nsb2NrcyBkY2U4MF9tYXhfY2xrc19ieV9zdGF0ZVtdID0gewogLyogQ2xvY2tzU3RhdGVQ ZXJmb3JtYW5jZSAqLwogeyAuZGlzcGxheV9jbGtfa2h6ID0gNjAwMDAwLCAucGl4ZWxfY2xrX2to eiA9IDQwMDAwMCB9IH07CiAKLXN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3RhdGVfZGVwZW5kZW50X2Ns b2NrcyBkY2UxMTBfbWF4X2Nsa3NfYnlfc3RhdGVbXSA9IHsKLS8qQ2xvY2tzU3RhdGVJbnZhbGlk IC0gc2hvdWxkIG5vdCBiZSB1c2VkKi8KLXsgLmRpc3BsYXlfY2xrX2toeiA9IDAsIC5waXhlbF9j bGtfa2h6ID0gMCB9LAotLypDbG9ja3NTdGF0ZVVsdHJhTG93IC0gY3VycmVudGx5IGJ5IEhXIGRl c2lnbiB0ZWFtIG5vdCBzdXBwb3NlZCB0byBiZSB1c2VkKi8KLXsgLmRpc3BsYXlfY2xrX2toeiA9 IDM1MjAwMCwgLnBpeGVsX2Nsa19raHogPSAzMzAwMDAgfSwKLS8qQ2xvY2tzU3RhdGVMb3cqLwot eyAuZGlzcGxheV9jbGtfa2h6ID0gMzUyMDAwLCAucGl4ZWxfY2xrX2toeiA9IDMzMDAwMCB9LAot LypDbG9ja3NTdGF0ZU5vbWluYWwqLwoteyAuZGlzcGxheV9jbGtfa2h6ID0gNDY3MDAwLCAucGl4 ZWxfY2xrX2toeiA9IDQwMDAwMCB9LAotLypDbG9ja3NTdGF0ZVBlcmZvcm1hbmNlKi8KLXsgLmRp c3BsYXlfY2xrX2toeiA9IDY0MzAwMCwgLnBpeGVsX2Nsa19raHogPSA0MDAwMDAgfSB9OwotCi1z dGF0aWMgY29uc3Qgc3RydWN0IHN0YXRlX2RlcGVuZGVudF9jbG9ja3MgZGNlMTEyX21heF9jbGtz X2J5X3N0YXRlW10gPSB7Ci0vKkNsb2Nrc1N0YXRlSW52YWxpZCAtIHNob3VsZCBub3QgYmUgdXNl ZCovCi17IC5kaXNwbGF5X2Nsa19raHogPSAwLCAucGl4ZWxfY2xrX2toeiA9IDAgfSwKLS8qQ2xv Y2tzU3RhdGVVbHRyYUxvdyAtIGN1cnJlbnRseSBieSBIVyBkZXNpZ24gdGVhbSBub3Qgc3VwcG9z ZWQgdG8gYmUgdXNlZCovCi17IC5kaXNwbGF5X2Nsa19raHogPSAzODkxODksIC5waXhlbF9jbGtf a2h6ID0gMzQ2NjcyIH0sCi0vKkNsb2Nrc1N0YXRlTG93Ki8KLXsgLmRpc3BsYXlfY2xrX2toeiA9 IDQ1OTAwMCwgLnBpeGVsX2Nsa19raHogPSA0MDAwMDAgfSwKLS8qQ2xvY2tzU3RhdGVOb21pbmFs Ki8KLXsgLmRpc3BsYXlfY2xrX2toeiA9IDY2NzAwMCwgLnBpeGVsX2Nsa19raHogPSA2MDAwMDAg fSwKLS8qQ2xvY2tzU3RhdGVQZXJmb3JtYW5jZSovCi17IC5kaXNwbGF5X2Nsa19raHogPSAxMTMy MDAwLCAucGl4ZWxfY2xrX2toeiA9IDYwMDAwMCB9IH07Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3Qg c3RhdGVfZGVwZW5kZW50X2Nsb2NrcyBkY2UxMjBfbWF4X2Nsa3NfYnlfc3RhdGVbXSA9IHsKLS8q Q2xvY2tzU3RhdGVJbnZhbGlkIC0gc2hvdWxkIG5vdCBiZSB1c2VkKi8KLXsgLmRpc3BsYXlfY2xr X2toeiA9IDAsIC5waXhlbF9jbGtfa2h6ID0gMCB9LAotLypDbG9ja3NTdGF0ZVVsdHJhTG93IC0g Y3VycmVudGx5IGJ5IEhXIGRlc2lnbiB0ZWFtIG5vdCBzdXBwb3NlZCB0byBiZSB1c2VkKi8KLXsg LmRpc3BsYXlfY2xrX2toeiA9IDAsIC5waXhlbF9jbGtfa2h6ID0gMCB9LAotLypDbG9ja3NTdGF0 ZUxvdyovCi17IC5kaXNwbGF5X2Nsa19raHogPSA0NjAwMDAsIC5waXhlbF9jbGtfa2h6ID0gNDAw MDAwIH0sCi0vKkNsb2Nrc1N0YXRlTm9taW5hbCovCi17IC5kaXNwbGF5X2Nsa19raHogPSA2NzAw MDAsIC5waXhlbF9jbGtfa2h6ID0gNjAwMDAwIH0sCi0vKkNsb2Nrc1N0YXRlUGVyZm9ybWFuY2Uq LwoteyAuZGlzcGxheV9jbGtfa2h6ID0gMTEzMzAwMCwgLnBpeGVsX2Nsa19raHogPSA2MDAwMDAg fSB9OwotCiBpbnQgZGVudGlzdF9nZXRfZGl2aWRlcl9mcm9tX2RpZChpbnQgZGlkKQogewogCWlm IChkaWQgPCBERU5USVNUX0JBU0VfRElEXzEpCkBAIC0xMjgsNyArMTA4LDggQEAgaW50IGRlbnRp c3RfZ2V0X2RpdmlkZXJfZnJvbV9kaWQoaW50IGRpZCkKICAoc2hvdWxkIG5vdCBiZSBjYXNlIHdp dGggQ0lLKSB0aGVuIFNXIHNob3VsZCBwcm9ncmFtIGFsbCByYXRlcwogIGdlbmVyYXRlZCBhY2Nv cmRpbmcgdG8gYXZlcmFnZSB2YWx1ZSAoY2FzZSBhcyB3aXRoIHByZXZpb3VzIEFTSUNzKQogICAq Lwotc3RhdGljIGludCBjbGtfbWdyX2FkanVzdF9kcF9yZWZfZnJlcV9mb3Jfc3Moc3RydWN0IGRj ZV9jbGtfbWdyICpjbGtfbWdyX2RjZSwgaW50IGRwX3JlZl9jbGtfa2h6KQorCitpbnQgZGNlX2Fk anVzdF9kcF9yZWZfZnJlcV9mb3Jfc3Moc3RydWN0IGNsa19tZ3JfaW50ZXJuYWwgKmNsa19tZ3Jf ZGNlLCBpbnQgZHBfcmVmX2Nsa19raHopCiB7CiAJaWYgKGNsa19tZ3JfZGNlLT5zc19vbl9kcHJl ZmNsayAmJiBjbGtfbWdyX2RjZS0+ZHByZWZjbGtfc3NfZGl2aWRlciAhPSAwKSB7CiAJCXN0cnVj dCBmaXhlZDMxXzMyIHNzX3BlcmNlbnRhZ2UgPSBkY19maXhwdF9kaXZfaW50KApAQCAtMTQzLDkg KzEyNCw5IEBAIHN0YXRpYyBpbnQgY2xrX21ncl9hZGp1c3RfZHBfcmVmX2ZyZXFfZm9yX3NzKHN0 cnVjdCBkY2VfY2xrX21nciAqY2xrX21ncl9kY2UsIGluCiAJcmV0dXJuIGRwX3JlZl9jbGtfa2h6 OwogfQogCi1zdGF0aWMgaW50IGRjZV9nZXRfZHBfcmVmX2ZyZXFfa2h6KHN0cnVjdCBjbGtfbWdy ICpjbGtfbWdyKQoraW50IGRjZV9nZXRfZHBfcmVmX2ZyZXFfa2h6KHN0cnVjdCBjbGtfbWdyICpj bGtfbWdyX2Jhc2UpCiB7Ci0Jc3RydWN0IGRjZV9jbGtfbWdyICpjbGtfbWdyX2RjZSA9IFRPX0RD RV9DTEtfTUdSKGNsa19tZ3IpOworCXN0cnVjdCBjbGtfbWdyX2ludGVybmFsICpjbGtfbWdyID0g VE9fQ0xLX01HUl9JTlRFUk5BTChjbGtfbWdyX2Jhc2UpOwogCWludCBkcHJlZmNsa193ZGl2aWRl cjsKIAlpbnQgZHByZWZjbGtfc3JjX3NlbDsKIAlpbnQgZHBfcmVmX2Nsa19raHogPSA2MDAwMDA7 CkBAIC0xNjQsMjIgKzE0NSwyMiBAQCBzdGF0aWMgaW50IGRjZV9nZXRfZHBfcmVmX2ZyZXFfa2h6 KHN0cnVjdCBjbGtfbWdyICpjbGtfbWdyKQogCiAJLyogQ2FsY3VsYXRlIHRoZSBjdXJyZW50IERG UyBjbG9jaywgaW4ga0h6LiovCiAJZHBfcmVmX2Nsa19raHogPSAoREVOVElTVF9ESVZJREVSX1JB TkdFX1NDQUxFX0ZBQ1RPUgotCQkqIGNsa19tZ3JfZGNlLT5kZW50aXN0X3Zjb19mcmVxX2toeikg LyB0YXJnZXRfZGl2OworCQkqIGNsa19tZ3ItPmRlbnRpc3RfdmNvX2ZyZXFfa2h6KSAvIHRhcmdl dF9kaXY7CiAKLQlyZXR1cm4gY2xrX21ncl9hZGp1c3RfZHBfcmVmX2ZyZXFfZm9yX3NzKGNsa19t Z3JfZGNlLCBkcF9yZWZfY2xrX2toeik7CisJcmV0dXJuIGRjZV9hZGp1c3RfZHBfcmVmX2ZyZXFf Zm9yX3NzKGNsa19tZ3IsIGRwX3JlZl9jbGtfa2h6KTsKIH0KIAotaW50IGRjZTEyX2dldF9kcF9y ZWZfZnJlcV9raHooc3RydWN0IGNsa19tZ3IgKmNsa19tZ3IpCitpbnQgZGNlMTJfZ2V0X2RwX3Jl Zl9mcmVxX2toeihzdHJ1Y3QgY2xrX21nciAqY2xrX21ncl9iYXNlKQogewotCXN0cnVjdCBkY2Vf Y2xrX21nciAqY2xrX21ncl9kY2UgPSBUT19EQ0VfQ0xLX01HUihjbGtfbWdyKTsKKwlzdHJ1Y3Qg Y2xrX21ncl9pbnRlcm5hbCAqY2xrX21ncl9kY2UgPSBUT19DTEtfTUdSX0lOVEVSTkFMKGNsa19t Z3JfYmFzZSk7CiAKLQlyZXR1cm4gY2xrX21ncl9hZGp1c3RfZHBfcmVmX2ZyZXFfZm9yX3NzKGNs a19tZ3JfZGNlLCBjbGtfbWdyX2RjZS0+ZHByZWZjbGtfa2h6KTsKKwlyZXR1cm4gZGNlX2FkanVz dF9kcF9yZWZfZnJlcV9mb3Jfc3MoY2xrX21ncl9kY2UsIGNsa19tZ3JfYmFzZS0+ZHByZWZjbGtf a2h6KTsKIH0KIAogLyogdW5pdDogaW5fa2h6IGJlZm9yZSBtb2RlIHNldCwgZ2V0IHBpeGVsIGNs b2NrIGZyb20gY29udGV4dC4gQVNJQyByZWdpc3RlcgogICogbWF5IG5vdCBiZSBwcm9ncmFtbWVk IHlldAogICovCi1zdGF0aWMgdWludDMyX3QgZ2V0X21heF9waXhlbF9jbG9ja19mb3JfYWxsX3Bh dGhzKHN0cnVjdCBkY19zdGF0ZSAqY29udGV4dCkKK3VpbnQzMl90IGRjZV9nZXRfbWF4X3BpeGVs X2Nsb2NrX2Zvcl9hbGxfcGF0aHMoc3RydWN0IGRjX3N0YXRlICpjb250ZXh0KQogewogCXVpbnQz Ml90IG1heF9waXhfY2xrID0gMDsKIAlpbnQgaTsKQEAgLTIwOCwxNCArMTg5LDE0IEBAIHN0YXRp YyB1aW50MzJfdCBnZXRfbWF4X3BpeGVsX2Nsb2NrX2Zvcl9hbGxfcGF0aHMoc3RydWN0IGRjX3N0 YXRlICpjb250ZXh0KQogCXJldHVybiBtYXhfcGl4X2NsazsKIH0KIAotc3RhdGljIGVudW0gZG1f cHBfY2xvY2tzX3N0YXRlIGRjZV9nZXRfcmVxdWlyZWRfY2xvY2tzX3N0YXRlKAotCXN0cnVjdCBj bGtfbWdyICpjbGtfbWdyLAorZW51bSBkbV9wcF9jbG9ja3Nfc3RhdGUgZGNlX2dldF9yZXF1aXJl ZF9jbG9ja3Nfc3RhdGUoCisJc3RydWN0IGNsa19tZ3IgKmNsa19tZ3JfYmFzZSwKIAlzdHJ1Y3Qg ZGNfc3RhdGUgKmNvbnRleHQpCiB7Ci0Jc3RydWN0IGRjZV9jbGtfbWdyICpjbGtfbWdyX2RjZSA9 IFRPX0RDRV9DTEtfTUdSKGNsa19tZ3IpOworCXN0cnVjdCBjbGtfbWdyX2ludGVybmFsICpjbGtf bWdyX2RjZSA9IFRPX0NMS19NR1JfSU5URVJOQUwoY2xrX21ncl9iYXNlKTsKIAlpbnQgaTsKIAll bnVtIGRtX3BwX2Nsb2Nrc19zdGF0ZSBsb3dfcmVxX2NsazsKLQlpbnQgbWF4X3BpeF9jbGsgPSBn ZXRfbWF4X3BpeGVsX2Nsb2NrX2Zvcl9hbGxfcGF0aHMoY29udGV4dCk7CisJaW50IG1heF9waXhf Y2xrID0gZGNlX2dldF9tYXhfcGl4ZWxfY2xvY2tfZm9yX2FsbF9wYXRocyhjb250ZXh0KTsKIAog CS8qIEl0ZXJhdGUgZnJvbSBoaWdoZXN0IHN1cHBvcnRlZCB0byBsb3dlc3QgdmFsaWQgc3RhdGUs IGFuZCB1cGRhdGUKIAkgKiBsb3dlc3QgUmVxdWlyZWRTdGF0ZSB3aXRoIHRoZSBsb3dlc3Qgc3Rh dGUgdGhhdCBzYXRpc2ZpZXMKQEAgLTI0MSwxNCArMjIyLDE1IEBAIHN0YXRpYyBlbnVtIGRtX3Bw X2Nsb2Nrc19zdGF0ZSBkY2VfZ2V0X3JlcXVpcmVkX2Nsb2Nrc19zdGF0ZSgKIAlyZXR1cm4gbG93 X3JlcV9jbGs7CiB9CiAKKwogLyogVE9ETzogcmVtb3ZlIHVzZSB0aGUgdHdvIGJyb2tlbiBkb3du IGZ1bmN0aW9ucyAqLwotc3RhdGljIGludCBkY2Vfc2V0X2Nsb2NrKAotCXN0cnVjdCBjbGtfbWdy ICpjbGtfbWdyLAoraW50IGRjZV9zZXRfY2xvY2soCisJc3RydWN0IGNsa19tZ3IgKmNsa19tZ3Jf YmFzZSwKIAlpbnQgcmVxdWVzdGVkX2Nsa19raHopCiB7Ci0Jc3RydWN0IGRjZV9jbGtfbWdyICpj bGtfbWdyX2RjZSA9IFRPX0RDRV9DTEtfTUdSKGNsa19tZ3IpOworCXN0cnVjdCBjbGtfbWdyX2lu dGVybmFsICpjbGtfbWdyX2RjZSA9IFRPX0NMS19NR1JfSU5URVJOQUwoY2xrX21ncl9iYXNlKTsK IAlzdHJ1Y3QgYnBfcGl4ZWxfY2xvY2tfcGFyYW1ldGVycyBweGxfY2xrX3BhcmFtcyA9IHsgMCB9 OwotCXN0cnVjdCBkY19iaW9zICpicCA9IGNsa19tZ3ItPmN0eC0+ZGNfYmlvczsKKwlzdHJ1Y3Qg ZGNfYmlvcyAqYnAgPSBjbGtfbWdyX2Jhc2UtPmN0eC0+ZGNfYmlvczsKIAlpbnQgYWN0dWFsX2Ns b2NrID0gcmVxdWVzdGVkX2Nsa19raHo7CiAJc3RydWN0IGRtY3UgKmRtY3UgPSBjbGtfbWdyX2Rj ZS0+YmFzZS5jdHgtPmRjLT5yZXNfcG9vbC0+ZG1jdTsKIApAQCAtMjg0LDEyOSArMjY2LDggQEAg c3RhdGljIGludCBkY2Vfc2V0X2Nsb2NrKAogCXJldHVybiBhY3R1YWxfY2xvY2s7CiB9CiAKLWlu dCBkY2UxMTJfc2V0X2Nsb2NrKHN0cnVjdCBjbGtfbWdyICpjbGtfbWdyLCBpbnQgcmVxdWVzdGVk X2Nsa19raHopCi17Ci0Jc3RydWN0IGRjZV9jbGtfbWdyICpjbGtfbWdyX2RjZSA9IFRPX0RDRV9D TEtfTUdSKGNsa19tZ3IpOwotCXN0cnVjdCBicF9zZXRfZGNlX2Nsb2NrX3BhcmFtZXRlcnMgZGNl X2Nsa19wYXJhbXM7Ci0Jc3RydWN0IGRjX2Jpb3MgKmJwID0gY2xrX21nci0+Y3R4LT5kY19iaW9z OwotCXN0cnVjdCBkYyAqY29yZV9kYyA9IGNsa19tZ3ItPmN0eC0+ZGM7Ci0Jc3RydWN0IGRtY3Ug KmRtY3UgPSBjb3JlX2RjLT5yZXNfcG9vbC0+ZG1jdTsKLQlpbnQgYWN0dWFsX2Nsb2NrID0gcmVx dWVzdGVkX2Nsa19raHo7Ci0JLyogUHJlcGFyZSB0byBwcm9ncmFtIGRpc3BsYXkgY2xvY2sqLwot CW1lbXNldCgmZGNlX2Nsa19wYXJhbXMsIDAsIHNpemVvZihkY2VfY2xrX3BhcmFtcykpOwotCi0J LyogTWFrZSBzdXJlIHJlcXVlc3RlZCBjbG9jayBpc24ndCBsb3dlciB0aGFuIG1pbmltdW0gdGhy ZXNob2xkKi8KLQlpZiAocmVxdWVzdGVkX2Nsa19raHogPiAwKQotCQlyZXF1ZXN0ZWRfY2xrX2to eiA9IG1heChyZXF1ZXN0ZWRfY2xrX2toeiwKLQkJCQljbGtfbWdyX2RjZS0+ZGVudGlzdF92Y29f ZnJlcV9raHogLyA2Mik7Ci0KLQlkY2VfY2xrX3BhcmFtcy50YXJnZXRfY2xvY2tfZnJlcXVlbmN5 ID0gcmVxdWVzdGVkX2Nsa19raHo7Ci0JZGNlX2Nsa19wYXJhbXMucGxsX2lkID0gQ0xPQ0tfU09V UkNFX0lEX0RGUzsKLQlkY2VfY2xrX3BhcmFtcy5jbG9ja190eXBlID0gRENFQ0xPQ0tfVFlQRV9E SVNQTEFZX0NMT0NLOwotCi0JYnAtPmZ1bmNzLT5zZXRfZGNlX2Nsb2NrKGJwLCAmZGNlX2Nsa19w YXJhbXMpOwotCWFjdHVhbF9jbG9jayA9IGRjZV9jbGtfcGFyYW1zLnRhcmdldF9jbG9ja19mcmVx dWVuY3k7Ci0KLQkvKiBmcm9tIHBvd2VyIGRvd24sIHdlIG5lZWQgbWFyayB0aGUgY2xvY2sgc3Rh dGUgYXMgQ2xvY2tzU3RhdGVOb21pbmFsCi0JICogZnJvbSBIV1Jlc2V0LCBzbyB3aGVuIHJlc3Vt ZSB3ZSB3aWxsIGNhbGwgcHBsaWIgdm9sdGFnZSByZWd1bGF0b3IuKi8KLQlpZiAocmVxdWVzdGVk X2Nsa19raHogPT0gMCkKLQkJY2xrX21ncl9kY2UtPmN1cl9taW5fY2xrc19zdGF0ZSA9IERNX1BQ X0NMT0NLU19TVEFURV9OT01JTkFMOwotCi0JLypQcm9ncmFtIERQIHJlZiBDbG9jayovCi0JLypW QklPUyB3aWxsIGRldGVybWluZSBEUFJFRkNMSyBmcmVxdWVuY3ksIHNvIHdlIGRvbid0IHNldCBp dCovCi0JZGNlX2Nsa19wYXJhbXMudGFyZ2V0X2Nsb2NrX2ZyZXF1ZW5jeSA9IDA7Ci0JZGNlX2Ns a19wYXJhbXMuY2xvY2tfdHlwZSA9IERDRUNMT0NLX1RZUEVfRFBSRUZDTEs7Ci0JaWYgKCFBU0lD UkVWX0lTX1ZFR0EyMF9QKGNsa19tZ3ItPmN0eC0+YXNpY19pZC5od19pbnRlcm5hbF9yZXYpKQot CQlkY2VfY2xrX3BhcmFtcy5mbGFncy5VU0VfR0VOTE9DS19BU19TT1VSQ0VfRk9SX0RQUkVGQ0xL ID0KLQkJCShkY2VfY2xrX3BhcmFtcy5wbGxfaWQgPT0KLQkJCQkJQ0xPQ0tfU09VUkNFX0NPTUJP X0RJU1BMQVlfUExMMCk7Ci0JZWxzZQotCQlkY2VfY2xrX3BhcmFtcy5mbGFncy5VU0VfR0VOTE9D S19BU19TT1VSQ0VfRk9SX0RQUkVGQ0xLID0gZmFsc2U7Ci0KLQlicC0+ZnVuY3MtPnNldF9kY2Vf Y2xvY2soYnAsICZkY2VfY2xrX3BhcmFtcyk7Ci0KLQlpZiAoIUlTX0ZQR0FfTUFYSU1VU19EQyhj b3JlX2RjLT5jdHgtPmRjZV9lbnZpcm9ubWVudCkpIHsKLQkJaWYgKGRtY3UgJiYgZG1jdS0+ZnVu Y3MtPmlzX2RtY3VfaW5pdGlhbGl6ZWQoZG1jdSkpIHsKLQkJCWlmIChjbGtfbWdyX2RjZS0+ZGZz X2J5cGFzc19kaXNwX2NsayAhPSBhY3R1YWxfY2xvY2spCi0JCQkJZG1jdS0+ZnVuY3MtPnNldF9w c3Jfd2FpdF9sb29wKGRtY3UsCi0JCQkJCQlhY3R1YWxfY2xvY2sgLyAxMDAwIC8gNyk7Ci0JCX0K LQl9Ci0KLQljbGtfbWdyX2RjZS0+ZGZzX2J5cGFzc19kaXNwX2NsayA9IGFjdHVhbF9jbG9jazsK LQlyZXR1cm4gYWN0dWFsX2Nsb2NrOwotfQotCi1pbnQgZGNlMTEyX3NldF9kaXNwY2xrKHN0cnVj dCBjbGtfbWdyICpjbGtfbWdyLCBpbnQgcmVxdWVzdGVkX2Nsa19raHopCi17Ci0Jc3RydWN0IGRj ZV9jbGtfbWdyICpjbGtfbWdyX2RjZSA9IFRPX0RDRV9DTEtfTUdSKGNsa19tZ3IpOwotCXN0cnVj dCBicF9zZXRfZGNlX2Nsb2NrX3BhcmFtZXRlcnMgZGNlX2Nsa19wYXJhbXM7Ci0Jc3RydWN0IGRj X2Jpb3MgKmJwID0gY2xrX21nci0+Y3R4LT5kY19iaW9zOwotCXN0cnVjdCBkYyAqY29yZV9kYyA9 IGNsa19tZ3ItPmN0eC0+ZGM7Ci0Jc3RydWN0IGRtY3UgKmRtY3UgPSBjb3JlX2RjLT5yZXNfcG9v bC0+ZG1jdTsKLQlpbnQgYWN0dWFsX2Nsb2NrID0gcmVxdWVzdGVkX2Nsa19raHo7Ci0JLyogUHJl cGFyZSB0byBwcm9ncmFtIGRpc3BsYXkgY2xvY2sqLwotCW1lbXNldCgmZGNlX2Nsa19wYXJhbXMs IDAsIHNpemVvZihkY2VfY2xrX3BhcmFtcykpOwotCi0JLyogTWFrZSBzdXJlIHJlcXVlc3RlZCBj bG9jayBpc24ndCBsb3dlciB0aGFuIG1pbmltdW0gdGhyZXNob2xkKi8KLQlpZiAocmVxdWVzdGVk X2Nsa19raHogPiAwKQotCQlyZXF1ZXN0ZWRfY2xrX2toeiA9IG1heChyZXF1ZXN0ZWRfY2xrX2to eiwKLQkJCQljbGtfbWdyX2RjZS0+ZGVudGlzdF92Y29fZnJlcV9raHogLyA2Mik7Ci0KLQlkY2Vf Y2xrX3BhcmFtcy50YXJnZXRfY2xvY2tfZnJlcXVlbmN5ID0gcmVxdWVzdGVkX2Nsa19raHo7Ci0J ZGNlX2Nsa19wYXJhbXMucGxsX2lkID0gQ0xPQ0tfU09VUkNFX0lEX0RGUzsKLQlkY2VfY2xrX3Bh cmFtcy5jbG9ja190eXBlID0gRENFQ0xPQ0tfVFlQRV9ESVNQTEFZX0NMT0NLOwotCi0JYnAtPmZ1 bmNzLT5zZXRfZGNlX2Nsb2NrKGJwLCAmZGNlX2Nsa19wYXJhbXMpOwotCWFjdHVhbF9jbG9jayA9 IGRjZV9jbGtfcGFyYW1zLnRhcmdldF9jbG9ja19mcmVxdWVuY3k7Ci0KLQkvKgotCSAqIGZyb20g cG93ZXIgZG93biwgd2UgbmVlZCBtYXJrIHRoZSBjbG9jayBzdGF0ZSBhcyBDbG9ja3NTdGF0ZU5v bWluYWwKLQkgKiBmcm9tIEhXUmVzZXQsIHNvIHdoZW4gcmVzdW1lIHdlIHdpbGwgY2FsbCBwcGxp YiB2b2x0YWdlIHJlZ3VsYXRvci4KLQkgKi8KLQlpZiAocmVxdWVzdGVkX2Nsa19raHogPT0gMCkK LQkJY2xrX21ncl9kY2UtPmN1cl9taW5fY2xrc19zdGF0ZSA9IERNX1BQX0NMT0NLU19TVEFURV9O T01JTkFMOwotCi0KLQlpZiAoIUlTX0ZQR0FfTUFYSU1VU19EQyhjb3JlX2RjLT5jdHgtPmRjZV9l bnZpcm9ubWVudCkpIHsKLQkJaWYgKGRtY3UgJiYgZG1jdS0+ZnVuY3MtPmlzX2RtY3VfaW5pdGlh bGl6ZWQoZG1jdSkpIHsKLQkJCWlmIChjbGtfbWdyX2RjZS0+ZGZzX2J5cGFzc19kaXNwX2NsayAh PSBhY3R1YWxfY2xvY2spCi0JCQkJZG1jdS0+ZnVuY3MtPnNldF9wc3Jfd2FpdF9sb29wKGRtY3Us Ci0JCQkJCQlhY3R1YWxfY2xvY2sgLyAxMDAwIC8gNyk7Ci0JCX0KLQl9Ci0KLQljbGtfbWdyX2Rj ZS0+ZGZzX2J5cGFzc19kaXNwX2NsayA9IGFjdHVhbF9jbG9jazsKLQlyZXR1cm4gYWN0dWFsX2Ns b2NrOwotCi19Ci0KLWludCBkY2UxMTJfc2V0X2RwcmVmY2xrKHN0cnVjdCBjbGtfbWdyICpjbGtf bWdyKQotewotCXN0cnVjdCBicF9zZXRfZGNlX2Nsb2NrX3BhcmFtZXRlcnMgZGNlX2Nsa19wYXJh bXM7Ci0Jc3RydWN0IGRjX2Jpb3MgKmJwID0gY2xrX21nci0+Y3R4LT5kY19iaW9zOwotCi0JbWVt c2V0KCZkY2VfY2xrX3BhcmFtcywgMCwgc2l6ZW9mKGRjZV9jbGtfcGFyYW1zKSk7Ci0KLQkvKlBy b2dyYW0gRFAgcmVmIENsb2NrKi8KLQkvKlZCSU9TIHdpbGwgZGV0ZXJtaW5lIERQUkVGQ0xLIGZy ZXF1ZW5jeSwgc28gd2UgZG9uJ3Qgc2V0IGl0Ki8KLQlkY2VfY2xrX3BhcmFtcy50YXJnZXRfY2xv Y2tfZnJlcXVlbmN5ID0gMDsKLQlkY2VfY2xrX3BhcmFtcy5wbGxfaWQgPSBDTE9DS19TT1VSQ0Vf SURfREZTOwotCWRjZV9jbGtfcGFyYW1zLmNsb2NrX3R5cGUgPSBEQ0VDTE9DS19UWVBFX0RQUkVG Q0xLOwotCWlmICghQVNJQ1JFVl9JU19WRUdBMjBfUChjbGtfbWdyLT5jdHgtPmFzaWNfaWQuaHdf aW50ZXJuYWxfcmV2KSkKLQkJZGNlX2Nsa19wYXJhbXMuZmxhZ3MuVVNFX0dFTkxPQ0tfQVNfU09V UkNFX0ZPUl9EUFJFRkNMSyA9Ci0JCQkoZGNlX2Nsa19wYXJhbXMucGxsX2lkID09Ci0JCQkJCUNM T0NLX1NPVVJDRV9DT01CT19ESVNQTEFZX1BMTDApOwotCWVsc2UKLQkJZGNlX2Nsa19wYXJhbXMu ZmxhZ3MuVVNFX0dFTkxPQ0tfQVNfU09VUkNFX0ZPUl9EUFJFRkNMSyA9IGZhbHNlOwotCi0JYnAt PmZ1bmNzLT5zZXRfZGNlX2Nsb2NrKGJwLCAmZGNlX2Nsa19wYXJhbXMpOwotCi0JLyogUmV0dXJu cyB0aGUgZHBfcmVmY2xrIHRoYXQgd2FzIHNldCAqLwotCXJldHVybiBkY2VfY2xrX3BhcmFtcy50 YXJnZXRfY2xvY2tfZnJlcXVlbmN5OwotfQogCi1zdGF0aWMgdm9pZCBkY2VfY2xvY2tfcmVhZF9p bnRlZ3JhdGVkX2luZm8oc3RydWN0IGRjZV9jbGtfbWdyICpjbGtfbWdyX2RjZSkKK3N0YXRpYyB2 b2lkIGRjZV9jbG9ja19yZWFkX2ludGVncmF0ZWRfaW5mbyhzdHJ1Y3QgY2xrX21ncl9pbnRlcm5h bCAqY2xrX21ncl9kY2UpCiB7CiAJc3RydWN0IGRjX2RlYnVnX29wdGlvbnMgKmRlYnVnID0gJmNs a19tZ3JfZGNlLT5iYXNlLmN0eC0+ZGMtPmRlYnVnOwogCXN0cnVjdCBkY19iaW9zICpicCA9IGNs a19tZ3JfZGNlLT5iYXNlLmN0eC0+ZGNfYmlvczsKQEAgLTQ2NCw3ICszMjUsNyBAQCBzdGF0aWMg dm9pZCBkY2VfY2xvY2tfcmVhZF9pbnRlZ3JhdGVkX2luZm8oc3RydWN0IGRjZV9jbGtfbWdyICpj bGtfbWdyX2RjZSkKIAkJCWNsa19tZ3JfZGNlLT5kZnNfYnlwYXNzX2VuYWJsZWQgPSB0cnVlOwog fQogCi12b2lkIGRjZV9jbG9ja19yZWFkX3NzX2luZm8oc3RydWN0IGRjZV9jbGtfbWdyICpjbGtf bWdyX2RjZSkKK3ZvaWQgZGNlX2Nsb2NrX3JlYWRfc3NfaW5mbyhzdHJ1Y3QgY2xrX21ncl9pbnRl cm5hbCAqY2xrX21ncl9kY2UpCiB7CiAJc3RydWN0IGRjX2Jpb3MgKmJwID0gY2xrX21ncl9kY2Ut PmJhc2UuY3R4LT5kY19iaW9zOwogCWludCBzc19pbmZvX251bSA9IGJwLT5mdW5jcy0+Z2V0X3Nz X2VudHJ5X251bWJlcigKQEAgLTUyMCwxNDUgKzM4MSw2IEBAIHZvaWQgZGNlX2Nsb2NrX3JlYWRf c3NfaW5mbyhzdHJ1Y3QgZGNlX2Nsa19tZ3IgKmNsa19tZ3JfZGNlKQogCX0KIH0KIAotLyoqCi0g KiBkY2UxMjFfY2xvY2tfcGF0Y2hfeGdtaV9zc19pbmZvKCkgLSBTYXZlIFhHTUkgc3ByZWFkIHNw ZWN0cnVtIGluZm8KLSAqIEBjbGtfbWdyOiBjbG9jayBtYW5hZ2VyIGJhc2Ugc3RydWN0dXJlCi0g KgotICogUmVhZHMgZnJvbSBWQklPUyB0aGUgWEdNSSBzcHJlYWQgc3BlY3RydW0gaW5mbyBhbmQg c2F2ZXMgaXQgd2l0aGluCi0gKiB0aGUgZGNlIGNsb2NrIG1hbmFnZXIuIFRoaXMgb3BlcmF0aW9u IHdpbGwgb3ZlcndyaXRlIHRoZSBleGlzdGluZyBkcHJlZmNsawotICogU1MgdmFsdWVzIGlmIHRo ZSB2QklPUyBxdWVyeSBzdWNjZWVkcy4gT3RoZXJ3aXNlLCBpdCBkb2VzIG5vdGhpbmcuIEl0IGFs c28KLSAqIHNldHMgdGhlIC0+eGdtaV9lbmFibGVkIGZsYWcuCi0gKi8KLXZvaWQgZGNlMTIxX2Ns b2NrX3BhdGNoX3hnbWlfc3NfaW5mbyhzdHJ1Y3QgY2xrX21nciAqY2xrX21ncikKLXsKLQlzdHJ1 Y3QgZGNlX2Nsa19tZ3IgKmNsa19tZ3JfZGNlID0gVE9fRENFX0NMS19NR1IoY2xrX21ncik7Ci0J ZW51bSBicF9yZXN1bHQgcmVzdWx0OwotCXN0cnVjdCBzcHJlYWRfc3BlY3RydW1faW5mbyBpbmZv ID0geyB7IDAgfSB9OwotCXN0cnVjdCBkY19iaW9zICpicCA9IGNsa19tZ3JfZGNlLT5iYXNlLmN0 eC0+ZGNfYmlvczsKLQotCWNsa19tZ3JfZGNlLT54Z21pX2VuYWJsZWQgPSBmYWxzZTsKLQotCXJl c3VsdCA9IGJwLT5mdW5jcy0+Z2V0X3NwcmVhZF9zcGVjdHJ1bV9pbmZvKGJwLCBBU19TSUdOQUxf VFlQRV9YR01JLAotCQkJCQkJICAgICAwLCAmaW5mbyk7Ci0JaWYgKHJlc3VsdCA9PSBCUF9SRVNV TFRfT0sgJiYgaW5mby5zcHJlYWRfc3BlY3RydW1fcGVyY2VudGFnZSAhPSAwKSB7Ci0JCWNsa19t Z3JfZGNlLT54Z21pX2VuYWJsZWQgPSB0cnVlOwotCQljbGtfbWdyX2RjZS0+c3Nfb25fZHByZWZj bGsgPSB0cnVlOwotCQljbGtfbWdyX2RjZS0+ZHByZWZjbGtfc3NfZGl2aWRlciA9Ci0JCQkJaW5m by5zcHJlYWRfcGVyY2VudGFnZV9kaXZpZGVyOwotCi0JCWlmIChpbmZvLnR5cGUuQ0VOVEVSX01P REUgPT0gMCkgewotCQkJLyogQ3VycmVudGx5IGZvciBEUCBSZWZlcmVuY2UgY2xvY2sgd2UKLQkJ CSAqIG5lZWQgb25seSBTUyBwZXJjZW50YWdlIGZvcgotCQkJICogZG93bnNwcmVhZCAqLwotCQkJ Y2xrX21ncl9kY2UtPmRwcmVmY2xrX3NzX3BlcmNlbnRhZ2UgPQotCQkJCQlpbmZvLnNwcmVhZF9z cGVjdHJ1bV9wZXJjZW50YWdlOwotCQl9Ci0JfQotfQotCi12b2lkIGRjZTExMF9maWxsX2Rpc3Bs YXlfY29uZmlncygKLQljb25zdCBzdHJ1Y3QgZGNfc3RhdGUgKmNvbnRleHQsCi0Jc3RydWN0IGRt X3BwX2Rpc3BsYXlfY29uZmlndXJhdGlvbiAqcHBfZGlzcGxheV9jZmcpCi17Ci0JaW50IGo7Ci0J aW50IG51bV9jZmdzID0gMDsKLQotCWZvciAoaiA9IDA7IGogPCBjb250ZXh0LT5zdHJlYW1fY291 bnQ7IGorKykgewotCQlpbnQgazsKLQotCQljb25zdCBzdHJ1Y3QgZGNfc3RyZWFtX3N0YXRlICpz dHJlYW0gPSBjb250ZXh0LT5zdHJlYW1zW2pdOwotCQlzdHJ1Y3QgZG1fcHBfc2luZ2xlX2Rpc3Bf Y29uZmlnICpjZmcgPQotCQkJJnBwX2Rpc3BsYXlfY2ZnLT5kaXNwX2NvbmZpZ3NbbnVtX2NmZ3Nd OwotCQljb25zdCBzdHJ1Y3QgcGlwZV9jdHggKnBpcGVfY3R4ID0gTlVMTDsKLQotCQlmb3IgKGsg PSAwOyBrIDwgTUFYX1BJUEVTOyBrKyspCi0JCQlpZiAoc3RyZWFtID09IGNvbnRleHQtPnJlc19j dHgucGlwZV9jdHhba10uc3RyZWFtKSB7Ci0JCQkJcGlwZV9jdHggPSAmY29udGV4dC0+cmVzX2N0 eC5waXBlX2N0eFtrXTsKLQkJCQlicmVhazsKLQkJCX0KLQotCQlBU1NFUlQocGlwZV9jdHggIT0g TlVMTCk7Ci0KLQkJLyogb25seSBub3RpZnkgYWN0aXZlIHN0cmVhbSAqLwotCQlpZiAoc3RyZWFt LT5kcG1zX29mZikKLQkJCWNvbnRpbnVlOwotCi0JCW51bV9jZmdzKys7Ci0JCWNmZy0+c2lnbmFs ID0gcGlwZV9jdHgtPnN0cmVhbS0+c2lnbmFsOwotCQljZmctPnBpcGVfaWR4ID0gcGlwZV9jdHgt PnN0cmVhbV9yZXMudGctPmluc3Q7Ci0JCWNmZy0+c3JjX2hlaWdodCA9IHN0cmVhbS0+c3JjLmhl aWdodDsKLQkJY2ZnLT5zcmNfd2lkdGggPSBzdHJlYW0tPnNyYy53aWR0aDsKLQkJY2ZnLT5kZGlf Y2hhbm5lbF9tYXBwaW5nID0KLQkJCXN0cmVhbS0+bGluay0+ZGRpX2NoYW5uZWxfbWFwcGluZy5y YXc7Ci0JCWNmZy0+dHJhbnNtaXR0ZXIgPQotCQkJc3RyZWFtLT5saW5rLT5saW5rX2VuYy0+dHJh bnNtaXR0ZXI7Ci0JCWNmZy0+bGlua19zZXR0aW5ncy5sYW5lX2NvdW50ID0KLQkJCXN0cmVhbS0+ bGluay0+Y3VyX2xpbmtfc2V0dGluZ3MubGFuZV9jb3VudDsKLQkJY2ZnLT5saW5rX3NldHRpbmdz LmxpbmtfcmF0ZSA9Ci0JCQlzdHJlYW0tPmxpbmstPmN1cl9saW5rX3NldHRpbmdzLmxpbmtfcmF0 ZTsKLQkJY2ZnLT5saW5rX3NldHRpbmdzLmxpbmtfc3ByZWFkID0KLQkJCXN0cmVhbS0+bGluay0+ Y3VyX2xpbmtfc2V0dGluZ3MubGlua19zcHJlYWQ7Ci0JCWNmZy0+c3ltX2Nsb2NrID0gc3RyZWFt LT5waHlfcGl4X2NsazsKLQkJLyogUm91bmQgdl9yZWZyZXNoKi8KLQkJY2ZnLT52X3JlZnJlc2gg PSBzdHJlYW0tPnRpbWluZy5waXhfY2xrXzEwMGh6ICogMTAwOwotCQljZmctPnZfcmVmcmVzaCAv PSBzdHJlYW0tPnRpbWluZy5oX3RvdGFsOwotCQljZmctPnZfcmVmcmVzaCA9IChjZmctPnZfcmVm cmVzaCArIHN0cmVhbS0+dGltaW5nLnZfdG90YWwgLyAyKQotCQkJCQkJCS8gc3RyZWFtLT50aW1p bmcudl90b3RhbDsKLQl9Ci0KLQlwcF9kaXNwbGF5X2NmZy0+ZGlzcGxheV9jb3VudCA9IG51bV9j ZmdzOwotfQotCi1zdGF0aWMgdWludDMyX3QgZGNlMTEwX2dldF9taW5fdmJsYW5rX3RpbWVfdXMo Y29uc3Qgc3RydWN0IGRjX3N0YXRlICpjb250ZXh0KQotewotCXVpbnQ4X3QgajsKLQl1aW50MzJf dCBtaW5fdmVydGljYWxfYmxhbmtfdGltZSA9IC0xOwotCi0JZm9yIChqID0gMDsgaiA8IGNvbnRl eHQtPnN0cmVhbV9jb3VudDsgaisrKSB7Ci0JCXN0cnVjdCBkY19zdHJlYW1fc3RhdGUgKnN0cmVh bSA9IGNvbnRleHQtPnN0cmVhbXNbal07Ci0JCXVpbnQzMl90IHZlcnRpY2FsX2JsYW5rX2luX3Bp eGVscyA9IDA7Ci0JCXVpbnQzMl90IHZlcnRpY2FsX2JsYW5rX3RpbWUgPSAwOwotCi0JCXZlcnRp Y2FsX2JsYW5rX2luX3BpeGVscyA9IHN0cmVhbS0+dGltaW5nLmhfdG90YWwgKgotCQkJKHN0cmVh bS0+dGltaW5nLnZfdG90YWwKLQkJCSAtIHN0cmVhbS0+dGltaW5nLnZfYWRkcmVzc2FibGUpOwot Ci0JCXZlcnRpY2FsX2JsYW5rX3RpbWUgPSB2ZXJ0aWNhbF9ibGFua19pbl9waXhlbHMKLQkJCSog MTAwMDAgLyBzdHJlYW0tPnRpbWluZy5waXhfY2xrXzEwMGh6OwotCi0JCWlmIChtaW5fdmVydGlj YWxfYmxhbmtfdGltZSA+IHZlcnRpY2FsX2JsYW5rX3RpbWUpCi0JCQltaW5fdmVydGljYWxfYmxh bmtfdGltZSA9IHZlcnRpY2FsX2JsYW5rX3RpbWU7Ci0JfQotCi0JcmV0dXJuIG1pbl92ZXJ0aWNh bF9ibGFua190aW1lOwotfQotCi1zdGF0aWMgaW50IGRldGVybWluZV9zY2xrX2Zyb21fYm91bmRp bmdfYm94KAotCQljb25zdCBzdHJ1Y3QgZGMgKmRjLAotCQlpbnQgcmVxdWlyZWRfc2NsaykKLXsK LQlpbnQgaTsKLQotCS8qCi0JICogU29tZSBhc2ljcyBkbyBub3QgZ2l2ZSB1cyBzY2xrIGxldmVs cywgc28gd2UganVzdCByZXBvcnQgdGhlIGFjdHVhbAotCSAqIHJlcXVpcmVkIHNjbGsKLQkgKi8K LQlpZiAoZGMtPnNjbGtfbHZscy5udW1fbGV2ZWxzID09IDApCi0JCXJldHVybiByZXF1aXJlZF9z Y2xrOwotCi0JZm9yIChpID0gMDsgaSA8IGRjLT5zY2xrX2x2bHMubnVtX2xldmVsczsgaSsrKSB7 Ci0JCWlmIChkYy0+c2Nsa19sdmxzLmNsb2Nrc19pbl9raHpbaV0gPj0gcmVxdWlyZWRfc2NsaykK LQkJCXJldHVybiBkYy0+c2Nsa19sdmxzLmNsb2Nrc19pbl9raHpbaV07Ci0JfQotCS8qCi0JICog ZXZlbiBtYXhpbXVtIGxldmVsIGNvdWxkIG5vdCBzYXRpc2Z5IHJlcXVpcmVtZW50LCB0aGlzCi0J ICogaXMgdW5leHBlY3RlZCBhdCB0aGlzIHN0YWdlLCBzaG91bGQgaGF2ZSBiZWVuIGNhdWdodCBh dAotCSAqIHZhbGlkYXRpb24gdGltZQotCSAqLwotCUFTU0VSVCgwKTsKLQlyZXR1cm4gZGMtPnNj bGtfbHZscy5jbG9ja3NfaW5fa2h6W2RjLT5zY2xrX2x2bHMubnVtX2xldmVscyAtIDFdOwotfQot CiBzdGF0aWMgdm9pZCBkY2VfcHBsaWJfYXBwbHlfZGlzcGxheV9yZXF1aXJlbWVudHMoCiAJc3Ry dWN0IGRjICpkYywKIAlzdHJ1Y3QgZGNfc3RhdGUgKmNvbnRleHQpCkBAIC02NzMsNzEgKzM5NSwx MSBAQCBzdGF0aWMgdm9pZCBkY2VfcHBsaWJfYXBwbHlfZGlzcGxheV9yZXF1aXJlbWVudHMoCiAJ CWRtX3BwX2FwcGx5X2Rpc3BsYXlfcmVxdWlyZW1lbnRzKGRjLT5jdHgsIHBwX2Rpc3BsYXlfY2Zn KTsKIH0KIAotc3RhdGljIHZvaWQgZGNlMTFfcHBsaWJfYXBwbHlfZGlzcGxheV9yZXF1aXJlbWVu dHMoCi0Jc3RydWN0IGRjICpkYywKLQlzdHJ1Y3QgZGNfc3RhdGUgKmNvbnRleHQpCi17Ci0Jc3Ry dWN0IGRtX3BwX2Rpc3BsYXlfY29uZmlndXJhdGlvbiAqcHBfZGlzcGxheV9jZmcgPSAmY29udGV4 dC0+cHBfZGlzcGxheV9jZmc7Ci0KLQlwcF9kaXNwbGF5X2NmZy0+YWxsX2Rpc3BsYXlzX2luX3N5 bmMgPQotCQljb250ZXh0LT5id19jdHguYncuZGNlLmFsbF9kaXNwbGF5c19pbl9zeW5jOwotCXBw X2Rpc3BsYXlfY2ZnLT5uYl9wc3RhdGVfc3dpdGNoX2Rpc2FibGUgPQotCQkJY29udGV4dC0+Yndf Y3R4LmJ3LmRjZS5uYnBfc3RhdGVfY2hhbmdlX2VuYWJsZSA9PSBmYWxzZTsKLQlwcF9kaXNwbGF5 X2NmZy0+Y3B1X2NjNl9kaXNhYmxlID0KLQkJCWNvbnRleHQtPmJ3X2N0eC5idy5kY2UuY3B1Y19z dGF0ZV9jaGFuZ2VfZW5hYmxlID09IGZhbHNlOwotCXBwX2Rpc3BsYXlfY2ZnLT5jcHVfcHN0YXRl X2Rpc2FibGUgPQotCQkJY29udGV4dC0+YndfY3R4LmJ3LmRjZS5jcHVwX3N0YXRlX2NoYW5nZV9l bmFibGUgPT0gZmFsc2U7Ci0JcHBfZGlzcGxheV9jZmctPmNwdV9wc3RhdGVfc2VwYXJhdGlvbl90 aW1lID0KLQkJCWNvbnRleHQtPmJ3X2N0eC5idy5kY2UuYmxhY2tvdXRfcmVjb3ZlcnlfdGltZV91 czsKLQotCXBwX2Rpc3BsYXlfY2ZnLT5taW5fbWVtb3J5X2Nsb2NrX2toeiA9IGNvbnRleHQtPmJ3 X2N0eC5idy5kY2UueWNsa19raHoKLQkJLyBNRU1PUllfVFlQRV9NVUxUSVBMSUVSX0NaOwotCi0J cHBfZGlzcGxheV9jZmctPm1pbl9lbmdpbmVfY2xvY2tfa2h6ID0gZGV0ZXJtaW5lX3NjbGtfZnJv bV9ib3VuZGluZ19ib3goCi0JCQlkYywKLQkJCWNvbnRleHQtPmJ3X2N0eC5idy5kY2Uuc2Nsa19r aHopOwotCi0JLyoKLQkgKiBBcyB3b3JrYXJvdW5kIGZvciA+NHg0SyBsaWdodHVwIHNldCBkY2Zj bG9jayB0byBtaW5fZW5naW5lX2Nsb2NrIHZhbHVlLgotCSAqIFRoaXMgaXMgbm90IHJlcXVpcmVk IGZvciBsZXNzIHRoYW4gNSBkaXNwbGF5cywKLQkgKiB0aHVzIGRvbid0IHJlcXVlc3QgZGVjZmNs ayBpbiBkYyB0byBhdm9pZCBpbXBhY3QKLQkgKiBvbiBwb3dlciBzYXZpbmcuCi0JICoKLQkgKi8K LQlwcF9kaXNwbGF5X2NmZy0+bWluX2RjZmNsb2NrX2toeiA9IChjb250ZXh0LT5zdHJlYW1fY291 bnQgPiA0KT8KLQkJCXBwX2Rpc3BsYXlfY2ZnLT5taW5fZW5naW5lX2Nsb2NrX2toeiA6IDA7Ci0K LQlwcF9kaXNwbGF5X2NmZy0+bWluX2VuZ2luZV9jbG9ja19kZWVwX3NsZWVwX2toegotCQkJPSBj b250ZXh0LT5id19jdHguYncuZGNlLnNjbGtfZGVlcF9zbGVlcF9raHo7Ci0KLQlwcF9kaXNwbGF5 X2NmZy0+YXZhaWxfbWNsa19zd2l0Y2hfdGltZV91cyA9Ci0JCQkJCQlkY2UxMTBfZ2V0X21pbl92 YmxhbmtfdGltZV91cyhjb250ZXh0KTsKLQkvKiBUT0RPOiBkY2UxMS4yKi8KLQlwcF9kaXNwbGF5 X2NmZy0+YXZhaWxfbWNsa19zd2l0Y2hfdGltZV9pbl9kaXNwX2FjdGl2ZV91cyA9IDA7Ci0KLQlw cF9kaXNwbGF5X2NmZy0+ZGlzcF9jbGtfa2h6ID0gZGMtPnJlc19wb29sLT5jbGtfbWdyLT5jbGtz LmRpc3BjbGtfa2h6OwotCi0JZGNlMTEwX2ZpbGxfZGlzcGxheV9jb25maWdzKGNvbnRleHQsIHBw X2Rpc3BsYXlfY2ZnKTsKLQotCS8qIFRPRE86IGlzIHRoaXMgc3RpbGwgYXBwbGljYWJsZT8qLwot CWlmIChwcF9kaXNwbGF5X2NmZy0+ZGlzcGxheV9jb3VudCA9PSAxKSB7Ci0JCWNvbnN0IHN0cnVj dCBkY19jcnRjX3RpbWluZyAqdGltaW5nID0KLQkJCSZjb250ZXh0LT5zdHJlYW1zWzBdLT50aW1p bmc7Ci0KLQkJcHBfZGlzcGxheV9jZmctPmNydGNfaW5kZXggPQotCQkJcHBfZGlzcGxheV9jZmct PmRpc3BfY29uZmlnc1swXS5waXBlX2lkeDsKLQkJcHBfZGlzcGxheV9jZmctPmxpbmVfdGltZV9p bl91cyA9IHRpbWluZy0+aF90b3RhbCAqIDEwMDAwIC8gdGltaW5nLT5waXhfY2xrXzEwMGh6Owot CX0KLQotCWlmIChtZW1jbXAoJmRjLT5jdXJyZW50X3N0YXRlLT5wcF9kaXNwbGF5X2NmZywgcHBf ZGlzcGxheV9jZmcsIHNpemVvZigqcHBfZGlzcGxheV9jZmcpKSAhPSAgMCkKLQkJZG1fcHBfYXBw bHlfZGlzcGxheV9yZXF1aXJlbWVudHMoZGMtPmN0eCwgcHBfZGlzcGxheV9jZmcpOwotfQotCi1z dGF0aWMgdm9pZCBkY2VfdXBkYXRlX2Nsb2NrcyhzdHJ1Y3QgY2xrX21nciAqY2xrX21nciwKK3N0 YXRpYyB2b2lkIGRjZV91cGRhdGVfY2xvY2tzKHN0cnVjdCBjbGtfbWdyICpjbGtfbWdyX2Jhc2Us CiAJCQlzdHJ1Y3QgZGNfc3RhdGUgKmNvbnRleHQsCiAJCQlib29sIHNhZmVfdG9fbG93ZXIpCiB7 Ci0Jc3RydWN0IGRjZV9jbGtfbWdyICpjbGtfbWdyX2RjZSA9IFRPX0RDRV9DTEtfTUdSKGNsa19t Z3IpOworCXN0cnVjdCBjbGtfbWdyX2ludGVybmFsICpjbGtfbWdyX2RjZSA9IFRPX0NMS19NR1Jf SU5URVJOQUwoY2xrX21ncl9iYXNlKTsKIAlzdHJ1Y3QgZG1fcHBfcG93ZXJfbGV2ZWxfY2hhbmdl X3JlcXVlc3QgbGV2ZWxfY2hhbmdlX3JlcTsKIAlpbnQgcGF0Y2hlZF9kaXNwX2NsayA9IGNvbnRl eHQtPmJ3X2N0eC5idy5kY2UuZGlzcGNsa19raHo7CiAKQEAgLTc0NSwyODcgKzQwNyw1NiBAQCBz dGF0aWMgdm9pZCBkY2VfdXBkYXRlX2Nsb2NrcyhzdHJ1Y3QgY2xrX21nciAqY2xrX21nciwKIAlp ZiAoIWNsa19tZ3JfZGNlLT5kZnNfYnlwYXNzX2FjdGl2ZSkKIAkJcGF0Y2hlZF9kaXNwX2NsayA9 IHBhdGNoZWRfZGlzcF9jbGsgKiAxMTUgLyAxMDA7CiAKLQlsZXZlbF9jaGFuZ2VfcmVxLnBvd2Vy X2xldmVsID0gZGNlX2dldF9yZXF1aXJlZF9jbG9ja3Nfc3RhdGUoY2xrX21nciwgY29udGV4dCk7 CisJbGV2ZWxfY2hhbmdlX3JlcS5wb3dlcl9sZXZlbCA9IGRjZV9nZXRfcmVxdWlyZWRfY2xvY2tz X3N0YXRlKGNsa19tZ3JfYmFzZSwgY29udGV4dCk7CiAJLyogZ2V0IG1heCBjbG9jayBzdGF0ZSBm cm9tIFBQTElCICovCiAJaWYgKChsZXZlbF9jaGFuZ2VfcmVxLnBvd2VyX2xldmVsIDwgY2xrX21n cl9kY2UtPmN1cl9taW5fY2xrc19zdGF0ZSAmJiBzYWZlX3RvX2xvd2VyKQogCQkJfHwgbGV2ZWxf Y2hhbmdlX3JlcS5wb3dlcl9sZXZlbCA+IGNsa19tZ3JfZGNlLT5jdXJfbWluX2Nsa3Nfc3RhdGUp IHsKLQkJaWYgKGRtX3BwX2FwcGx5X3Bvd2VyX2xldmVsX2NoYW5nZV9yZXF1ZXN0KGNsa19tZ3It PmN0eCwgJmxldmVsX2NoYW5nZV9yZXEpKQorCQlpZiAoZG1fcHBfYXBwbHlfcG93ZXJfbGV2ZWxf Y2hhbmdlX3JlcXVlc3QoY2xrX21ncl9iYXNlLT5jdHgsICZsZXZlbF9jaGFuZ2VfcmVxKSkKIAkJ CWNsa19tZ3JfZGNlLT5jdXJfbWluX2Nsa3Nfc3RhdGUgPSBsZXZlbF9jaGFuZ2VfcmVxLnBvd2Vy X2xldmVsOwogCX0KIAotCWlmIChzaG91bGRfc2V0X2Nsb2NrKHNhZmVfdG9fbG93ZXIsIHBhdGNo ZWRfZGlzcF9jbGssIGNsa19tZ3ItPmNsa3MuZGlzcGNsa19raHopKSB7Ci0JCXBhdGNoZWRfZGlz cF9jbGsgPSBkY2Vfc2V0X2Nsb2NrKGNsa19tZ3IsIHBhdGNoZWRfZGlzcF9jbGspOwotCQljbGtf bWdyLT5jbGtzLmRpc3BjbGtfa2h6ID0gcGF0Y2hlZF9kaXNwX2NsazsKKwlpZiAoc2hvdWxkX3Nl dF9jbG9jayhzYWZlX3RvX2xvd2VyLCBwYXRjaGVkX2Rpc3BfY2xrLCBjbGtfbWdyX2Jhc2UtPmNs a3MuZGlzcGNsa19raHopKSB7CisJCXBhdGNoZWRfZGlzcF9jbGsgPSBkY2Vfc2V0X2Nsb2NrKGNs a19tZ3JfYmFzZSwgcGF0Y2hlZF9kaXNwX2Nsayk7CisJCWNsa19tZ3JfYmFzZS0+Y2xrcy5kaXNw Y2xrX2toeiA9IHBhdGNoZWRfZGlzcF9jbGs7CiAJfQotCWRjZV9wcGxpYl9hcHBseV9kaXNwbGF5 X3JlcXVpcmVtZW50cyhjbGtfbWdyLT5jdHgtPmRjLCBjb250ZXh0KTsKKwlkY2VfcHBsaWJfYXBw bHlfZGlzcGxheV9yZXF1aXJlbWVudHMoY2xrX21ncl9iYXNlLT5jdHgtPmRjLCBjb250ZXh0KTsK IH0KIAotc3RhdGljIHZvaWQgZGNlMTFfdXBkYXRlX2Nsb2NrcyhzdHJ1Y3QgY2xrX21nciAqY2xr X21nciwKLQkJCXN0cnVjdCBkY19zdGF0ZSAqY29udGV4dCwKLQkJCWJvb2wgc2FmZV90b19sb3dl cikKLXsKLQlzdHJ1Y3QgZGNlX2Nsa19tZ3IgKmNsa19tZ3JfZGNlID0gVE9fRENFX0NMS19NR1Io Y2xrX21ncik7Ci0Jc3RydWN0IGRtX3BwX3Bvd2VyX2xldmVsX2NoYW5nZV9yZXF1ZXN0IGxldmVs X2NoYW5nZV9yZXE7Ci0JaW50IHBhdGNoZWRfZGlzcF9jbGsgPSBjb250ZXh0LT5id19jdHguYncu ZGNlLmRpc3BjbGtfa2h6OwotCi0JLypUT0RPOiBXL0EgZm9yIGRhbDMgbGludXgsIGludmVzdGln YXRlIHdoeSB0aGlzIHdvcmtzICovCi0JaWYgKCFjbGtfbWdyX2RjZS0+ZGZzX2J5cGFzc19hY3Rp dmUpCi0JCXBhdGNoZWRfZGlzcF9jbGsgPSBwYXRjaGVkX2Rpc3BfY2xrICogMTE1IC8gMTAwOwot Ci0JbGV2ZWxfY2hhbmdlX3JlcS5wb3dlcl9sZXZlbCA9IGRjZV9nZXRfcmVxdWlyZWRfY2xvY2tz X3N0YXRlKGNsa19tZ3IsIGNvbnRleHQpOwotCS8qIGdldCBtYXggY2xvY2sgc3RhdGUgZnJvbSBQ UExJQiAqLwotCWlmICgobGV2ZWxfY2hhbmdlX3JlcS5wb3dlcl9sZXZlbCA8IGNsa19tZ3JfZGNl LT5jdXJfbWluX2Nsa3Nfc3RhdGUgJiYgc2FmZV90b19sb3dlcikKLQkJCXx8IGxldmVsX2NoYW5n ZV9yZXEucG93ZXJfbGV2ZWwgPiBjbGtfbWdyX2RjZS0+Y3VyX21pbl9jbGtzX3N0YXRlKSB7Ci0J CWlmIChkbV9wcF9hcHBseV9wb3dlcl9sZXZlbF9jaGFuZ2VfcmVxdWVzdChjbGtfbWdyLT5jdHgs ICZsZXZlbF9jaGFuZ2VfcmVxKSkKLQkJCWNsa19tZ3JfZGNlLT5jdXJfbWluX2Nsa3Nfc3RhdGUg PSBsZXZlbF9jaGFuZ2VfcmVxLnBvd2VyX2xldmVsOwotCX0KLQotCWlmIChzaG91bGRfc2V0X2Ns b2NrKHNhZmVfdG9fbG93ZXIsIHBhdGNoZWRfZGlzcF9jbGssIGNsa19tZ3ItPmNsa3MuZGlzcGNs a19raHopKSB7Ci0JCWNvbnRleHQtPmJ3X2N0eC5idy5kY2UuZGlzcGNsa19raHogPSBkY2Vfc2V0 X2Nsb2NrKGNsa19tZ3IsIHBhdGNoZWRfZGlzcF9jbGspOwotCQljbGtfbWdyLT5jbGtzLmRpc3Bj bGtfa2h6ID0gcGF0Y2hlZF9kaXNwX2NsazsKLQl9Ci0JZGNlMTFfcHBsaWJfYXBwbHlfZGlzcGxh eV9yZXF1aXJlbWVudHMoY2xrX21nci0+Y3R4LT5kYywgY29udGV4dCk7Ci19Ci0KLXN0YXRpYyB2 b2lkIGRjZTExMl91cGRhdGVfY2xvY2tzKHN0cnVjdCBjbGtfbWdyICpjbGtfbWdyLAotCQkJc3Ry dWN0IGRjX3N0YXRlICpjb250ZXh0LAotCQkJYm9vbCBzYWZlX3RvX2xvd2VyKQotewotCXN0cnVj dCBkY2VfY2xrX21nciAqY2xrX21ncl9kY2UgPSBUT19EQ0VfQ0xLX01HUihjbGtfbWdyKTsKLQlz dHJ1Y3QgZG1fcHBfcG93ZXJfbGV2ZWxfY2hhbmdlX3JlcXVlc3QgbGV2ZWxfY2hhbmdlX3JlcTsK LQlpbnQgcGF0Y2hlZF9kaXNwX2NsayA9IGNvbnRleHQtPmJ3X2N0eC5idy5kY2UuZGlzcGNsa19r aHo7Ci0KLQkvKlRPRE86IFcvQSBmb3IgZGFsMyBsaW51eCwgaW52ZXN0aWdhdGUgd2h5IHRoaXMg d29ya3MgKi8KLQlpZiAoIWNsa19tZ3JfZGNlLT5kZnNfYnlwYXNzX2FjdGl2ZSkKLQkJcGF0Y2hl ZF9kaXNwX2NsayA9IHBhdGNoZWRfZGlzcF9jbGsgKiAxMTUgLyAxMDA7Ci0KLQlsZXZlbF9jaGFu Z2VfcmVxLnBvd2VyX2xldmVsID0gZGNlX2dldF9yZXF1aXJlZF9jbG9ja3Nfc3RhdGUoY2xrX21n ciwgY29udGV4dCk7Ci0JLyogZ2V0IG1heCBjbG9jayBzdGF0ZSBmcm9tIFBQTElCICovCi0JaWYg KChsZXZlbF9jaGFuZ2VfcmVxLnBvd2VyX2xldmVsIDwgY2xrX21ncl9kY2UtPmN1cl9taW5fY2xr c19zdGF0ZSAmJiBzYWZlX3RvX2xvd2VyKQotCQkJfHwgbGV2ZWxfY2hhbmdlX3JlcS5wb3dlcl9s ZXZlbCA+IGNsa19tZ3JfZGNlLT5jdXJfbWluX2Nsa3Nfc3RhdGUpIHsKLQkJaWYgKGRtX3BwX2Fw cGx5X3Bvd2VyX2xldmVsX2NoYW5nZV9yZXF1ZXN0KGNsa19tZ3ItPmN0eCwgJmxldmVsX2NoYW5n ZV9yZXEpKQotCQkJY2xrX21ncl9kY2UtPmN1cl9taW5fY2xrc19zdGF0ZSA9IGxldmVsX2NoYW5n ZV9yZXEucG93ZXJfbGV2ZWw7Ci0JfQotCi0JaWYgKHNob3VsZF9zZXRfY2xvY2soc2FmZV90b19s b3dlciwgcGF0Y2hlZF9kaXNwX2NsaywgY2xrX21nci0+Y2xrcy5kaXNwY2xrX2toeikpIHsKLQkJ cGF0Y2hlZF9kaXNwX2NsayA9IGRjZTExMl9zZXRfY2xvY2soY2xrX21nciwgcGF0Y2hlZF9kaXNw X2Nsayk7Ci0JCWNsa19tZ3ItPmNsa3MuZGlzcGNsa19raHogPSBwYXRjaGVkX2Rpc3BfY2xrOwot CX0KLQlkY2UxMV9wcGxpYl9hcHBseV9kaXNwbGF5X3JlcXVpcmVtZW50cyhjbGtfbWdyLT5jdHgt PmRjLCBjb250ZXh0KTsKLX0KLQotc3RhdGljIHZvaWQgZGNlMTJfdXBkYXRlX2Nsb2NrcyhzdHJ1 Y3QgY2xrX21nciAqY2xrX21nciwKLQkJCXN0cnVjdCBkY19zdGF0ZSAqY29udGV4dCwKLQkJCWJv b2wgc2FmZV90b19sb3dlcikKLXsKLQlzdHJ1Y3QgZGNlX2Nsa19tZ3IgKmNsa19tZ3JfZGNlID0g VE9fRENFX0NMS19NR1IoY2xrX21ncik7Ci0Jc3RydWN0IGRtX3BwX2Nsb2NrX2Zvcl92b2x0YWdl X3JlcSBjbG9ja192b2x0YWdlX3JlcSA9IHswfTsKLQlpbnQgbWF4X3BpeF9jbGsgPSBnZXRfbWF4 X3BpeGVsX2Nsb2NrX2Zvcl9hbGxfcGF0aHMoY29udGV4dCk7Ci0JaW50IHBhdGNoZWRfZGlzcF9j bGsgPSBjb250ZXh0LT5id19jdHguYncuZGNlLmRpc3BjbGtfa2h6OwotCi0JLypUT0RPOiBXL0Eg Zm9yIGRhbDMgbGludXgsIGludmVzdGlnYXRlIHdoeSB0aGlzIHdvcmtzICovCi0JaWYgKCFjbGtf bWdyX2RjZS0+ZGZzX2J5cGFzc19hY3RpdmUpCi0JCXBhdGNoZWRfZGlzcF9jbGsgPSBwYXRjaGVk X2Rpc3BfY2xrICogMTE1IC8gMTAwOwotCi0JaWYgKHNob3VsZF9zZXRfY2xvY2soc2FmZV90b19s b3dlciwgcGF0Y2hlZF9kaXNwX2NsaywgY2xrX21nci0+Y2xrcy5kaXNwY2xrX2toeikpIHsKLQkJ Y2xvY2tfdm9sdGFnZV9yZXEuY2xrX3R5cGUgPSBETV9QUF9DTE9DS19UWVBFX0RJU1BMQVlfQ0xL OwotCQkvKgotCQkgKiBXaGVuIHhHTUkgaXMgZW5hYmxlZCwgdGhlIGRpc3BsYXkgY2xrIG5lZWRz IHRvIGJlIGFkanVzdGVkCi0JCSAqIHdpdGggdGhlIFdBRkwgbGluaydzIFNTIHBlcmNlbnRhZ2Uu Ci0JCSAqLwotCQlpZiAoY2xrX21ncl9kY2UtPnhnbWlfZW5hYmxlZCkKLQkJCXBhdGNoZWRfZGlz cF9jbGsgPSBjbGtfbWdyX2FkanVzdF9kcF9yZWZfZnJlcV9mb3Jfc3MoCi0JCQkJCWNsa19tZ3Jf ZGNlLCBwYXRjaGVkX2Rpc3BfY2xrKTsKLQkJY2xvY2tfdm9sdGFnZV9yZXEuY2xvY2tzX2luX2to eiA9IHBhdGNoZWRfZGlzcF9jbGs7Ci0JCWNsa19tZ3ItPmNsa3MuZGlzcGNsa19raHogPSBkY2Ux MTJfc2V0X2Nsb2NrKGNsa19tZ3IsIHBhdGNoZWRfZGlzcF9jbGspOwotCi0JCWRtX3BwX2FwcGx5 X2Nsb2NrX2Zvcl92b2x0YWdlX3JlcXVlc3QoY2xrX21nci0+Y3R4LCAmY2xvY2tfdm9sdGFnZV9y ZXEpOwotCX0KLQotCWlmIChzaG91bGRfc2V0X2Nsb2NrKHNhZmVfdG9fbG93ZXIsIG1heF9waXhf Y2xrLCBjbGtfbWdyLT5jbGtzLnBoeWNsa19raHopKSB7Ci0JCWNsb2NrX3ZvbHRhZ2VfcmVxLmNs a190eXBlID0gRE1fUFBfQ0xPQ0tfVFlQRV9ESVNQTEFZUEhZQ0xLOwotCQljbG9ja192b2x0YWdl X3JlcS5jbG9ja3NfaW5fa2h6ID0gbWF4X3BpeF9jbGs7Ci0JCWNsa19tZ3ItPmNsa3MucGh5Y2xr X2toeiA9IG1heF9waXhfY2xrOwotCi0JCWRtX3BwX2FwcGx5X2Nsb2NrX2Zvcl92b2x0YWdlX3Jl cXVlc3QoY2xrX21nci0+Y3R4LCAmY2xvY2tfdm9sdGFnZV9yZXEpOwotCX0KLQlkY2UxMV9wcGxp Yl9hcHBseV9kaXNwbGF5X3JlcXVpcmVtZW50cyhjbGtfbWdyLT5jdHgtPmRjLCBjb250ZXh0KTsK LX0KLQotc3RhdGljIHN0cnVjdCBjbGtfbWdyX2Z1bmNzIGRjZTEyMF9mdW5jcyA9IHsKLQkuZ2V0 X2RwX3JlZl9jbGtfZnJlcXVlbmN5ID0gZGNlMTJfZ2V0X2RwX3JlZl9mcmVxX2toeiwKLQkudXBk YXRlX2Nsb2NrcyA9IGRjZTEyX3VwZGF0ZV9jbG9ja3MKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgY2xr X21ncl9mdW5jcyBkY2UxMTJfZnVuY3MgPSB7Ci0JLmdldF9kcF9yZWZfY2xrX2ZyZXF1ZW5jeSA9 IGRjZV9nZXRfZHBfcmVmX2ZyZXFfa2h6LAotCS51cGRhdGVfY2xvY2tzID0gZGNlMTEyX3VwZGF0 ZV9jbG9ja3MKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgY2xrX21ncl9mdW5jcyBkY2UxMTBfZnVuY3Mg PSB7Ci0JLmdldF9kcF9yZWZfY2xrX2ZyZXF1ZW5jeSA9IGRjZV9nZXRfZHBfcmVmX2ZyZXFfa2h6 LAotCS51cGRhdGVfY2xvY2tzID0gZGNlMTFfdXBkYXRlX2Nsb2NrcywKLX07CiAKIHN0YXRpYyBz dHJ1Y3QgY2xrX21ncl9mdW5jcyBkY2VfZnVuY3MgPSB7CiAJLmdldF9kcF9yZWZfY2xrX2ZyZXF1 ZW5jeSA9IGRjZV9nZXRfZHBfcmVmX2ZyZXFfa2h6LAogCS51cGRhdGVfY2xvY2tzID0gZGNlX3Vw ZGF0ZV9jbG9ja3MKIH07CiAKLXN0YXRpYyB2b2lkIGRjZV9jbGtfbWdyX2NvbnN0cnVjdCgKLQlz dHJ1Y3QgZGNlX2Nsa19tZ3IgKmNsa19tZ3JfZGNlLAotCXN0cnVjdCBkY19jb250ZXh0ICpjdHgs Ci0JY29uc3Qgc3RydWN0IGNsa19tZ3JfcmVnaXN0ZXJzICpyZWdzLAotCWNvbnN0IHN0cnVjdCBj bGtfbWdyX3NoaWZ0ICpjbGtfc2hpZnQsCi0JY29uc3Qgc3RydWN0IGNsa19tZ3JfbWFzayAqY2xr X21hc2spCit2b2lkIGRjZV9jbGtfbWdyX2NvbnN0cnVjdCgKKwkJc3RydWN0IGRjX2NvbnRleHQg KmN0eCwKKwkJc3RydWN0IGNsa19tZ3JfaW50ZXJuYWwgKmNsa19tZ3IpCiB7Ci0Jc3RydWN0IGNs a19tZ3IgKmJhc2UgPSAmY2xrX21ncl9kY2UtPmJhc2U7CisJc3RydWN0IGNsa19tZ3IgKmJhc2Ug PSAmY2xrX21nci0+YmFzZTsKIAlzdHJ1Y3QgZG1fcHBfc3RhdGljX2Nsb2NrX2luZm8gc3RhdGlj X2Nsa19pbmZvID0gezB9OwogCisJbWVtY3B5KGNsa19tZ3ItPm1heF9jbGtzX2J5X3N0YXRlLAor CQlkY2U4MF9tYXhfY2xrc19ieV9zdGF0ZSwKKwkJc2l6ZW9mKGRjZTgwX21heF9jbGtzX2J5X3N0 YXRlKSk7CisKIAliYXNlLT5jdHggPSBjdHg7CiAJYmFzZS0+ZnVuY3MgPSAmZGNlX2Z1bmNzOwog Ci0JY2xrX21ncl9kY2UtPnJlZ3MgPSByZWdzOwotCWNsa19tZ3JfZGNlLT5jbGtfbWdyX3NoaWZ0 ID0gY2xrX3NoaWZ0OwotCWNsa19tZ3JfZGNlLT5jbGtfbWdyX21hc2sgPSBjbGtfbWFzazsKLQot CWNsa19tZ3JfZGNlLT5kZnNfYnlwYXNzX2Rpc3BfY2xrID0gMDsKLQotCWNsa19tZ3JfZGNlLT5k cHJlZmNsa19zc19wZXJjZW50YWdlID0gMDsKLQljbGtfbWdyX2RjZS0+ZHByZWZjbGtfc3NfZGl2 aWRlciA9IDEwMDA7Ci0JY2xrX21ncl9kY2UtPnNzX29uX2RwcmVmY2xrID0gZmFsc2U7CisJY2xr X21nci0+cmVncyA9ICZkaXNwX2Nsa19yZWdzOworCWNsa19tZ3ItPmNsa19tZ3Jfc2hpZnQgPSAm ZGlzcF9jbGtfc2hpZnQ7CisJY2xrX21nci0+Y2xrX21ncl9tYXNrID0gJmRpc3BfY2xrX21hc2s7 CisJY2xrX21nci0+ZGZzX2J5cGFzc19kaXNwX2NsayA9IDA7CiAKKwljbGtfbWdyLT5kcHJlZmNs a19zc19wZXJjZW50YWdlID0gMDsKKwljbGtfbWdyLT5kcHJlZmNsa19zc19kaXZpZGVyID0gMTAw MDsKKwljbGtfbWdyLT5zc19vbl9kcHJlZmNsayA9IGZhbHNlOwogCiAJaWYgKGRtX3BwX2dldF9z dGF0aWNfY2xvY2tzKGN0eCwgJnN0YXRpY19jbGtfaW5mbykpCi0JCWNsa19tZ3JfZGNlLT5tYXhf Y2xrc19zdGF0ZSA9IHN0YXRpY19jbGtfaW5mby5tYXhfY2xvY2tzX3N0YXRlOworCQljbGtfbWdy LT5tYXhfY2xrc19zdGF0ZSA9IHN0YXRpY19jbGtfaW5mby5tYXhfY2xvY2tzX3N0YXRlOwogCWVs c2UKLQkJY2xrX21ncl9kY2UtPm1heF9jbGtzX3N0YXRlID0gRE1fUFBfQ0xPQ0tTX1NUQVRFX05P TUlOQUw7Ci0JY2xrX21ncl9kY2UtPmN1cl9taW5fY2xrc19zdGF0ZSA9IERNX1BQX0NMT0NLU19T VEFURV9JTlZBTElEOwotCi0JZGNlX2Nsb2NrX3JlYWRfaW50ZWdyYXRlZF9pbmZvKGNsa19tZ3Jf ZGNlKTsKLQlkY2VfY2xvY2tfcmVhZF9zc19pbmZvKGNsa19tZ3JfZGNlKTsKLX0KLQotc3RydWN0 IGNsa19tZ3IgKmRjZV9jbGtfbWdyX2NyZWF0ZSgKLQlzdHJ1Y3QgZGNfY29udGV4dCAqY3R4LAot CWNvbnN0IHN0cnVjdCBjbGtfbWdyX3JlZ2lzdGVycyAqcmVncywKLQljb25zdCBzdHJ1Y3QgY2xr X21ncl9zaGlmdCAqY2xrX3NoaWZ0LAotCWNvbnN0IHN0cnVjdCBjbGtfbWdyX21hc2sgKmNsa19t YXNrKQotewotCXN0cnVjdCBkY2VfY2xrX21nciAqY2xrX21ncl9kY2UgPSBremFsbG9jKHNpemVv ZigqY2xrX21ncl9kY2UpLCBHRlBfS0VSTkVMKTsKLQotCWlmIChjbGtfbWdyX2RjZSA9PSBOVUxM KSB7Ci0JCUJSRUFLX1RPX0RFQlVHR0VSKCk7Ci0JCXJldHVybiBOVUxMOwotCX0KLQotCW1lbWNw eShjbGtfbWdyX2RjZS0+bWF4X2Nsa3NfYnlfc3RhdGUsCi0JCWRjZTgwX21heF9jbGtzX2J5X3N0 YXRlLAotCQlzaXplb2YoZGNlODBfbWF4X2Nsa3NfYnlfc3RhdGUpKTsKLQotCWRjZV9jbGtfbWdy X2NvbnN0cnVjdCgKLQkJY2xrX21ncl9kY2UsIGN0eCwgcmVncywgY2xrX3NoaWZ0LCBjbGtfbWFz ayk7Ci0KLQlyZXR1cm4gJmNsa19tZ3JfZGNlLT5iYXNlOwotfQotCi1zdHJ1Y3QgY2xrX21nciAq ZGNlMTEwX2Nsa19tZ3JfY3JlYXRlKAotCXN0cnVjdCBkY19jb250ZXh0ICpjdHgsCi0JY29uc3Qg c3RydWN0IGNsa19tZ3JfcmVnaXN0ZXJzICpyZWdzLAotCWNvbnN0IHN0cnVjdCBjbGtfbWdyX3No aWZ0ICpjbGtfc2hpZnQsCi0JY29uc3Qgc3RydWN0IGNsa19tZ3JfbWFzayAqY2xrX21hc2spCi17 Ci0Jc3RydWN0IGRjZV9jbGtfbWdyICpjbGtfbWdyX2RjZSA9IGt6YWxsb2Moc2l6ZW9mKCpjbGtf bWdyX2RjZSksIEdGUF9LRVJORUwpOwotCi0JaWYgKGNsa19tZ3JfZGNlID09IE5VTEwpIHsKLQkJ QlJFQUtfVE9fREVCVUdHRVIoKTsKLQkJcmV0dXJuIE5VTEw7Ci0JfQotCi0JbWVtY3B5KGNsa19t Z3JfZGNlLT5tYXhfY2xrc19ieV9zdGF0ZSwKLQkJZGNlMTEwX21heF9jbGtzX2J5X3N0YXRlLAot CQlzaXplb2YoZGNlMTEwX21heF9jbGtzX2J5X3N0YXRlKSk7Ci0KLQlkY2VfY2xrX21ncl9jb25z dHJ1Y3QoCi0JCWNsa19tZ3JfZGNlLCBjdHgsIHJlZ3MsIGNsa19zaGlmdCwgY2xrX21hc2spOwot Ci0JY2xrX21ncl9kY2UtPmJhc2UuZnVuY3MgPSAmZGNlMTEwX2Z1bmNzOwotCi0JcmV0dXJuICZj bGtfbWdyX2RjZS0+YmFzZTsKLX0KLQotc3RydWN0IGNsa19tZ3IgKmRjZTExMl9jbGtfbWdyX2Ny ZWF0ZSgKLQlzdHJ1Y3QgZGNfY29udGV4dCAqY3R4LAotCWNvbnN0IHN0cnVjdCBjbGtfbWdyX3Jl Z2lzdGVycyAqcmVncywKLQljb25zdCBzdHJ1Y3QgY2xrX21ncl9zaGlmdCAqY2xrX3NoaWZ0LAot CWNvbnN0IHN0cnVjdCBjbGtfbWdyX21hc2sgKmNsa19tYXNrKQotewotCXN0cnVjdCBkY2VfY2xr X21nciAqY2xrX21ncl9kY2UgPSBremFsbG9jKHNpemVvZigqY2xrX21ncl9kY2UpLCBHRlBfS0VS TkVMKTsKLQotCWlmIChjbGtfbWdyX2RjZSA9PSBOVUxMKSB7Ci0JCUJSRUFLX1RPX0RFQlVHR0VS KCk7Ci0JCXJldHVybiBOVUxMOwotCX0KLQotCW1lbWNweShjbGtfbWdyX2RjZS0+bWF4X2Nsa3Nf Ynlfc3RhdGUsCi0JCWRjZTExMl9tYXhfY2xrc19ieV9zdGF0ZSwKLQkJc2l6ZW9mKGRjZTExMl9t YXhfY2xrc19ieV9zdGF0ZSkpOwotCi0JZGNlX2Nsa19tZ3JfY29uc3RydWN0KAotCQljbGtfbWdy X2RjZSwgY3R4LCByZWdzLCBjbGtfc2hpZnQsIGNsa19tYXNrKTsKLQotCWNsa19tZ3JfZGNlLT5i YXNlLmZ1bmNzID0gJmRjZTExMl9mdW5jczsKLQotCXJldHVybiAmY2xrX21ncl9kY2UtPmJhc2U7 Ci19Ci0KLXN0cnVjdCBjbGtfbWdyICpkY2UxMjBfY2xrX21ncl9jcmVhdGUoc3RydWN0IGRjX2Nv bnRleHQgKmN0eCkKLXsKLQlzdHJ1Y3QgZGNlX2Nsa19tZ3IgKmNsa19tZ3JfZGNlID0ga3phbGxv YyhzaXplb2YoKmNsa19tZ3JfZGNlKSwgR0ZQX0tFUk5FTCk7Ci0KLQlpZiAoY2xrX21ncl9kY2Ug PT0gTlVMTCkgewotCQlCUkVBS19UT19ERUJVR0dFUigpOwotCQlyZXR1cm4gTlVMTDsKLQl9Ci0K LQltZW1jcHkoY2xrX21ncl9kY2UtPm1heF9jbGtzX2J5X3N0YXRlLAotCQlkY2UxMjBfbWF4X2Ns a3NfYnlfc3RhdGUsCi0JCXNpemVvZihkY2UxMjBfbWF4X2Nsa3NfYnlfc3RhdGUpKTsKLQotCWRj ZV9jbGtfbWdyX2NvbnN0cnVjdCgKLQkJY2xrX21ncl9kY2UsIGN0eCwgTlVMTCwgTlVMTCwgTlVM TCk7Ci0KLQljbGtfbWdyX2RjZS0+ZHByZWZjbGtfa2h6ID0gNjAwMDAwOwotCWNsa19tZ3JfZGNl LT5iYXNlLmZ1bmNzID0gJmRjZTEyMF9mdW5jczsKLQotCXJldHVybiAmY2xrX21ncl9kY2UtPmJh c2U7Ci19Ci0KLXN0cnVjdCBjbGtfbWdyICpkY2UxMjFfY2xrX21ncl9jcmVhdGUoc3RydWN0IGRj X2NvbnRleHQgKmN0eCkKLXsKLQlzdHJ1Y3QgZGNlX2Nsa19tZ3IgKmNsa19tZ3JfZGNlID0ga3ph bGxvYyhzaXplb2YoKmNsa19tZ3JfZGNlKSwKLQkJCQkJCSAgR0ZQX0tFUk5FTCk7Ci0KLQlpZiAo Y2xrX21ncl9kY2UgPT0gTlVMTCkgewotCQlCUkVBS19UT19ERUJVR0dFUigpOwotCQlyZXR1cm4g TlVMTDsKLQl9Ci0KLQltZW1jcHkoY2xrX21ncl9kY2UtPm1heF9jbGtzX2J5X3N0YXRlLCBkY2Ux MjBfbWF4X2Nsa3NfYnlfc3RhdGUsCi0JICAgICAgIHNpemVvZihkY2UxMjBfbWF4X2Nsa3NfYnlf c3RhdGUpKTsKLQotCWRjZV9jbGtfbWdyX2NvbnN0cnVjdChjbGtfbWdyX2RjZSwgY3R4LCBOVUxM LCBOVUxMLCBOVUxMKTsKLQotCWNsa19tZ3JfZGNlLT5kcHJlZmNsa19raHogPSA2MjUwMDA7Ci0J Y2xrX21ncl9kY2UtPmJhc2UuZnVuY3MgPSAmZGNlMTIwX2Z1bmNzOwotCi0JcmV0dXJuICZjbGtf bWdyX2RjZS0+YmFzZTsKLX0KLQotdm9pZCBkY2VfY2xrX21ncl9kZXN0cm95KHN0cnVjdCBjbGtf bWdyICoqY2xrX21ncikKLXsKLQlzdHJ1Y3QgZGNlX2Nsa19tZ3IgKmNsa19tZ3JfZGNlID0gVE9f RENFX0NMS19NR1IoKmNsa19tZ3IpOworCQljbGtfbWdyLT5tYXhfY2xrc19zdGF0ZSA9IERNX1BQ X0NMT0NLU19TVEFURV9OT01JTkFMOworCWNsa19tZ3ItPmN1cl9taW5fY2xrc19zdGF0ZSA9IERN X1BQX0NMT0NLU19TVEFURV9JTlZBTElEOwogCi0Ja2ZyZWUoY2xrX21ncl9kY2UpOwotCSpjbGtf bWdyID0gTlVMTDsKKwlkY2VfY2xvY2tfcmVhZF9pbnRlZ3JhdGVkX2luZm8oY2xrX21ncik7CisJ ZGNlX2Nsb2NrX3JlYWRfc3NfaW5mbyhjbGtfbWdyKTsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9hbWQvZGlzcGxheS9kYy9kY2UvZGNlX2Nsa19tZ3IuaCBiL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvZGlzcGxheS9kYy9kY2UvZGNlX2Nsa19tZ3IuaAppbmRleCBjY2EwYzk1Li5mM2JjN2Fi IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvZGNlL2RjZV9jbGtf bWdyLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2RjZS9kY2VfY2xrX21n ci5oCkBAIC0yNywxMzEgKzI3LDcgQEAKICNpZm5kZWYgX0RDRV9DTEtfTUdSX0hfCiAjZGVmaW5l IF9EQ0VfQ0xLX01HUl9IXwogCi0jaW5jbHVkZSAiY2xrX21nci5oIgotI2luY2x1ZGUgImRjY2cu aCIKLQotI2RlZmluZSBNRU1PUllfVFlQRV9NVUxUSVBMSUVSX0NaIDQKLQotI2RlZmluZSBDTEtf Q09NTU9OX1JFR19MSVNUX0RDRV9CQVNFKCkgXAotCS5EUFJFRkNMS19DTlRMID0gbW1EUFJFRkNM S19DTlRMLCBcCi0JLkRFTlRJU1RfRElTUENMS19DTlRMID0gbW1ERU5USVNUX0RJU1BDTEtfQ05U TAotCi0jZGVmaW5lIENMS19DT01NT05fUkVHX0xJU1RfRENOX0JBU0UoKSBcCi0JU1IoREVOVElT VF9ESVNQQ0xLX0NOVEwpCi0KLSNkZWZpbmUgVkJJT1NfU01VX01TR19CT1hfUkVHX0xJU1RfUlYo KSBcCi0JLk1QMV9TTU5fQzJQTVNHXzkxID0gbW1NUDFfU01OX0MyUE1TR185MSwgXAotCS5NUDFf U01OX0MyUE1TR184MyA9IG1tTVAxX1NNTl9DMlBNU0dfODMsIFwKLQkuTVAxX1NNTl9DMlBNU0df NjcgPSBtbU1QMV9TTU5fQzJQTVNHXzY3Ci0KLSNkZWZpbmUgQ0xLX1NGKHJlZ19uYW1lLCBmaWVs ZF9uYW1lLCBwb3N0X2ZpeClcCi0JLmZpZWxkX25hbWUgPSByZWdfbmFtZSAjIyBfXyAjIyBmaWVs ZF9uYW1lICMjIHBvc3RfZml4Ci0KLSNkZWZpbmUgQ0xLX0NPTU1PTl9NQVNLX1NIX0xJU1RfRENF X0NPTU1PTl9CQVNFKG1hc2tfc2gpIFwKLQlDTEtfU0YoRFBSRUZDTEtfQ05UTCwgRFBSRUZDTEtf U1JDX1NFTCwgbWFza19zaCksIFwKLQlDTEtfU0YoREVOVElTVF9ESVNQQ0xLX0NOVEwsIERFTlRJ U1RfRFBSRUZDTEtfV0RJVklERVIsIG1hc2tfc2gpCi0KLSNkZWZpbmUgQ0xLX0NPTU1PTl9NQVNL X1NIX0xJU1RfRENOX0NPTU1PTl9CQVNFKG1hc2tfc2gpIFwKLQlDTEtfU0YoREVOVElTVF9ESVNQ Q0xLX0NOVEwsIERFTlRJU1RfRElTUENMS19XRElWSURFUiwgbWFza19zaCksXAotCUNMS19TRihE RU5USVNUX0RJU1BDTEtfQ05UTCwgREVOVElTVF9ESVNQQ0xLX0NIR19ET05FLCBtYXNrX3NoKQot Ci0jZGVmaW5lIENMS19NQVNLX1NIX0xJU1RfUlYxKG1hc2tfc2gpIFwKLQlDTEtfQ09NTU9OX01B U0tfU0hfTElTVF9EQ05fQ09NTU9OX0JBU0UobWFza19zaCksXAotCUNMS19TRihNUDFfU01OX0My UE1TR182NywgQ09OVEVOVCwgbWFza19zaCksXAotCUNMS19TRihNUDFfU01OX0MyUE1TR184Mywg Q09OVEVOVCwgbWFza19zaCksXAotCUNMS19TRihNUDFfU01OX0MyUE1TR185MSwgQ09OVEVOVCwg bWFza19zaCksCi0KLQotI2RlZmluZSBDTEtfUkVHX0ZJRUxEX0xJU1QodHlwZSkgXAotCXR5cGUg RFBSRUZDTEtfU1JDX1NFTDsgXAotCXR5cGUgREVOVElTVF9EUFJFRkNMS19XRElWSURFUjsgXAot CXR5cGUgREVOVElTVF9ESVNQQ0xLX1dESVZJREVSOyBcCi0JdHlwZSBERU5USVNUX0RJU1BDTEtf Q0hHX0RPTkU7Ci0KLSNkZWZpbmUgVkJJT1NfU01VX1JFR19GSUVMRF9MSVNUKHR5cGUpIFwKLQl0 eXBlIENPTlRFTlQ7Ci0KLXN0cnVjdCBjbGtfbWdyX3NoaWZ0IHsKLQlDTEtfUkVHX0ZJRUxEX0xJ U1QodWludDhfdCkKLQlWQklPU19TTVVfUkVHX0ZJRUxEX0xJU1QodWludDMyX3QpCi19OwotCi1z dHJ1Y3QgY2xrX21ncl9tYXNrIHsKLQlDTEtfUkVHX0ZJRUxEX0xJU1QodWludDMyX3QpCi0JVkJJ T1NfU01VX1JFR19GSUVMRF9MSVNUKHVpbnQzMl90KQotfTsKLQotc3RydWN0IGNsa19tZ3JfcmVn aXN0ZXJzIHsKLQl1aW50MzJfdCBEUFJFRkNMS19DTlRMOwotCXVpbnQzMl90IERFTlRJU1RfRElT UENMS19DTlRMOwotCi0JdWludDMyX3QgTVAxX1NNTl9DMlBNU0dfNjc7Ci0JdWludDMyX3QgTVAx X1NNTl9DMlBNU0dfODM7Ci0JdWludDMyX3QgTVAxX1NNTl9DMlBNU0dfOTE7Ci19OwotCi1zdHJ1 Y3Qgc3RhdGVfZGVwZW5kZW50X2Nsb2NrcyB7Ci0JaW50IGRpc3BsYXlfY2xrX2toejsKLQlpbnQg cGl4ZWxfY2xrX2toejsKLX07Ci0KLXN0cnVjdCBkY2VfY2xrX21nciB7Ci0Jc3RydWN0IGNsa19t Z3IgYmFzZTsKLQljb25zdCBzdHJ1Y3QgY2xrX21ncl9yZWdpc3RlcnMgKnJlZ3M7Ci0JY29uc3Qg c3RydWN0IGNsa19tZ3Jfc2hpZnQgKmNsa19tZ3Jfc2hpZnQ7Ci0JY29uc3Qgc3RydWN0IGNsa19t Z3JfbWFzayAqY2xrX21ncl9tYXNrOwotCi0Jc3RydWN0IGRjY2cgKmRjY2c7Ci0KLQlzdHJ1Y3Qg c3RhdGVfZGVwZW5kZW50X2Nsb2NrcyBtYXhfY2xrc19ieV9zdGF0ZVtETV9QUF9DTE9DS1NfTUFY X1NUQVRFU107Ci0KLQlpbnQgZGVudGlzdF92Y29fZnJlcV9raHo7Ci0KLQkvKiBDYWNoZSB0aGUg c3RhdHVzIG9mIERGUy1ieXBhc3MgZmVhdHVyZSovCi0JYm9vbCBkZnNfYnlwYXNzX2VuYWJsZWQ7 Ci0JLyogVHJ1ZSBpZiB0aGUgREZTLWJ5cGFzcyBmZWF0dXJlIGlzIGVuYWJsZWQgYW5kIGFjdGl2 ZS4gKi8KLQlib29sIGRmc19ieXBhc3NfYWN0aXZlOwotCS8qIENhY2hlIHRoZSBkaXNwbGF5IGNs b2NrIHJldHVybmVkIGJ5IFZCSU9TIGlmIERGUy1ieXBhc3MgaXMgZW5hYmxlZC4KLQkgKiBUaGlz IGlzIGJhc2ljYWxseSAiQ3J5c3RhbCBGcmVxdWVuY3kgSW4gS0h6IiAoWFRBTElOKSBmcmVxdWVu Y3kgKi8KLQlpbnQgZGZzX2J5cGFzc19kaXNwX2NsazsKLQotCS8qKgotCSAqIEBzc19vbl9kcHJl ZmNsazoKLQkgKgotCSAqIFRydWUgaWYgc3ByZWFkIHNwZWN0cnVtIGlzIGVuYWJsZWQgb24gdGhl IERQIHJlZiBjbG9jay4KLQkgKi8KLQlib29sIHNzX29uX2RwcmVmY2xrOwotCi0JLyoqCi0JICog QHhnbWlfZW5hYmxlZDoKLQkgKgotCSAqIFRydWUgaWYgeEdNSSBpcyBlbmFibGVkLiBPbiBWRzIw LCBib3RoIGF1ZGlvIGFuZCBkaXNwbGF5IGNsb2NrcyBuZWVkCi0JICogdG8gYmUgYWRqdXN0ZWQg d2l0aCB0aGUgV0FGTCBsaW5rJ3MgU1MgaW5mbyBpZiB4R01JIGlzIGVuYWJsZWQuCi0JICovCi0J Ym9vbCB4Z21pX2VuYWJsZWQ7Ci0KLQkvKioKLQkgKiBAZHByZWZjbGtfc3NfcGVyY2VudGFnZToK LQkgKgotCSAqIERQUkVGQ0xLIFNTIHBlcmNlbnRhZ2UgKGlmIGRvd24tc3ByZWFkIGVuYWJsZWQp LgotCSAqCi0JICogTm90ZSB0aGF0IGlmIFhHTUkgaXMgZW5hYmxlZCwgdGhlIFNTIGluZm8gKHBl cmNlbnRhZ2UgYW5kIGRpdmlkZXIpCi0JICogZnJvbSB0aGUgV0FGTCBsaW5rIGlzIHVzZWQgaW5z dGVhZC4gVGhpcyBpcyBkZWNpZGVkIGR1cmluZwotCSAqIGRjZV9jbGtfbWdyIGluaXRpYWxpemF0 aW9uLgotCSAqLwotCWludCBkcHJlZmNsa19zc19wZXJjZW50YWdlOwotCi0JLyoqCi0JICogQGRw cmVmY2xrX3NzX2RpdmlkZXI6Ci0JICoKLQkgKiBEUFJFRkNMSyBTUyBwZXJjZW50YWdlIERpdmlk ZXIgKDEwMCBvciAxMDAwKS4KLQkgKi8KLQlpbnQgZHByZWZjbGtfc3NfZGl2aWRlcjsKLQlpbnQg ZHByZWZjbGtfa2h6OwotCi0JZW51bSBkbV9wcF9jbG9ja3Nfc3RhdGUgbWF4X2Nsa3Nfc3RhdGU7 Ci0JZW51bSBkbV9wcF9jbG9ja3Nfc3RhdGUgY3VyX21pbl9jbGtzX3N0YXRlOwotfTsKKyNpbmNs dWRlICJkYy5oIgogCiAvKiBTdGFydGluZyBESUQgZm9yIGVhY2ggcmFuZ2UgKi8KIGVudW0gZGVu dGlzdF9iYXNlX2RpdmlkZXJfaWQgewpAQCAtMTc1LDQ1ICs1MSwyOCBAQCBlbnVtIGRlbnRpc3Rf ZGl2aWRlcl9yYW5nZSB7CiAJREVOVElTVF9ESVZJREVSX1JBTkdFX1NDQUxFX0ZBQ1RPUiA9IDQK IH07CiAKLXN0YXRpYyBpbmxpbmUgYm9vbCBzaG91bGRfc2V0X2Nsb2NrKGJvb2wgc2FmZV90b19s b3dlciwgaW50IGNhbGNfY2xrLCBpbnQgY3VyX2NsaykKLXsKLQlyZXR1cm4gKChzYWZlX3RvX2xv d2VyICYmIGNhbGNfY2xrIDwgY3VyX2NsaykgfHwgY2FsY19jbGsgPiBjdXJfY2xrKTsKLX0KLQot dm9pZCBkY2VfY2xvY2tfcmVhZF9zc19pbmZvKHN0cnVjdCBkY2VfY2xrX21nciAqZGNjZ19kY2Up OworLyogZnVuY3Rpb25zIHNoYXJlZCBieSBvdGhlciBkY2UgY2xrIG1ncnMgKi8KK2ludCBkY2Vf YWRqdXN0X2RwX3JlZl9mcmVxX2Zvcl9zcyhzdHJ1Y3QgY2xrX21ncl9pbnRlcm5hbCAqY2xrX21n cl9kY2UsIGludCBkcF9yZWZfY2xrX2toeik7CitpbnQgZGNlX2dldF9kcF9yZWZfZnJlcV9raHoo c3RydWN0IGNsa19tZ3IgKmNsa19tZ3JfYmFzZSk7CitlbnVtIGRtX3BwX2Nsb2Nrc19zdGF0ZSBk Y2VfZ2V0X3JlcXVpcmVkX2Nsb2Nrc19zdGF0ZSgKKwlzdHJ1Y3QgY2xrX21nciAqY2xrX21ncl9i YXNlLAorCXN0cnVjdCBkY19zdGF0ZSAqY29udGV4dCk7CiAKLWludCBkY2UxMl9nZXRfZHBfcmVm X2ZyZXFfa2h6KHN0cnVjdCBjbGtfbWdyICpkY2NnKTsKLQotdm9pZCBkY2UxMTBfZmlsbF9kaXNw bGF5X2NvbmZpZ3MoCi0JY29uc3Qgc3RydWN0IGRjX3N0YXRlICpjb250ZXh0LAotCXN0cnVjdCBk bV9wcF9kaXNwbGF5X2NvbmZpZ3VyYXRpb24gKnBwX2Rpc3BsYXlfY2ZnKTsKK3VpbnQzMl90IGRj ZV9nZXRfbWF4X3BpeGVsX2Nsb2NrX2Zvcl9hbGxfcGF0aHMoc3RydWN0IGRjX3N0YXRlICpjb250 ZXh0KTsKIAotaW50IGRjZTExMl9zZXRfY2xvY2soc3RydWN0IGNsa19tZ3IgKmRjY2csIGludCBy ZXF1ZXN0ZWRfY2xrX2toeik7Ci1pbnQgZGNlMTEyX3NldF9kaXNwY2xrKHN0cnVjdCBjbGtfbWdy ICpjbGtfbWdyLCBpbnQgcmVxdWVzdGVkX2Nsa19raHopOwotaW50IGRjZTExMl9zZXRfZHByZWZj bGsoc3RydWN0IGNsa19tZ3IgKmNsa19tZ3IpOwogCi1zdHJ1Y3QgY2xrX21nciAqZGNlX2Nsa19t Z3JfY3JlYXRlKAotCXN0cnVjdCBkY19jb250ZXh0ICpjdHgsCi0JY29uc3Qgc3RydWN0IGNsa19t Z3JfcmVnaXN0ZXJzICpyZWdzLAotCWNvbnN0IHN0cnVjdCBjbGtfbWdyX3NoaWZ0ICpjbGtfc2hp ZnQsCi0JY29uc3Qgc3RydWN0IGNsa19tZ3JfbWFzayAqY2xrX21hc2spOwordm9pZCBkY2VfY2xr X21ncl9jb25zdHJ1Y3QoCisJCXN0cnVjdCBkY19jb250ZXh0ICpjdHgsCisJCXN0cnVjdCBjbGtf bWdyX2ludGVybmFsICpjbGtfbWdyX2RjZSk7CiAKLXN0cnVjdCBjbGtfbWdyICpkY2UxMTBfY2xr X21ncl9jcmVhdGUoCi0Jc3RydWN0IGRjX2NvbnRleHQgKmN0eCwKLQljb25zdCBzdHJ1Y3QgY2xr X21ncl9yZWdpc3RlcnMgKnJlZ3MsCi0JY29uc3Qgc3RydWN0IGNsa19tZ3Jfc2hpZnQgKmNsa19z aGlmdCwKLQljb25zdCBzdHJ1Y3QgY2xrX21ncl9tYXNrICpjbGtfbWFzayk7Cit2b2lkIGRjZV9j bG9ja19yZWFkX3NzX2luZm8oc3RydWN0IGNsa19tZ3JfaW50ZXJuYWwgKmRjY2dfZGNlKTsKIAot c3RydWN0IGNsa19tZ3IgKmRjZTExMl9jbGtfbWdyX2NyZWF0ZSgKLQlzdHJ1Y3QgZGNfY29udGV4 dCAqY3R4LAotCWNvbnN0IHN0cnVjdCBjbGtfbWdyX3JlZ2lzdGVycyAqcmVncywKLQljb25zdCBz dHJ1Y3QgY2xrX21ncl9zaGlmdCAqY2xrX3NoaWZ0LAotCWNvbnN0IHN0cnVjdCBjbGtfbWdyX21h c2sgKmNsa19tYXNrKTsKK2ludCBkY2UxMl9nZXRfZHBfcmVmX2ZyZXFfa2h6KHN0cnVjdCBjbGtf bWdyICpkY2NnKTsKIAotc3RydWN0IGNsa19tZ3IgKmRjZTEyMF9jbGtfbWdyX2NyZWF0ZShzdHJ1 Y3QgZGNfY29udGV4dCAqY3R4KTsKK2ludCBkY2Vfc2V0X2Nsb2NrKAorCXN0cnVjdCBjbGtfbWdy ICpjbGtfbWdyX2Jhc2UsCisJaW50IHJlcXVlc3RlZF9jbGtfa2h6KTsKIAotc3RydWN0IGNsa19t Z3IgKmRjZTEyMV9jbGtfbWdyX2NyZWF0ZShzdHJ1Y3QgZGNfY29udGV4dCAqY3R4KTsKLXZvaWQg ZGNlMTIxX2Nsb2NrX3BhdGNoX3hnbWlfc3NfaW5mbyhzdHJ1Y3QgY2xrX21nciAqY2xrX21ncik7 CiAKIHZvaWQgZGNlX2Nsa19tZ3JfZGVzdHJveShzdHJ1Y3QgY2xrX21nciAqKmNsa19tZ3IpOwog CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvZGNlL2RjZV9jbG9j a19zb3VyY2UuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9kY2UvZGNlX2Nsb2Nr X3NvdXJjZS5jCmluZGV4IGRmNDIyNDQuLjAxZWZjZGQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9hbWQvZGlzcGxheS9kYy9kY2UvZGNlX2Nsb2NrX3NvdXJjZS5jCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9hbWQvZGlzcGxheS9kYy9kY2UvZGNlX2Nsb2NrX3NvdXJjZS5jCkBAIC0zMyw2ICsz Myw3IEBACiAjaW5jbHVkZSAiaW5jbHVkZS9sb2dnZXJfaW50ZXJmYWNlLmgiCiAKICNpbmNsdWRl ICJkY2VfY2xvY2tfc291cmNlLmgiCisjaW5jbHVkZSAiY2xrX21nci5oIgogCiAjaW5jbHVkZSAi cmVnX2hlbHBlci5oIgogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkv ZGMvZGNlMTAwL2RjZTEwMF9od19zZXF1ZW5jZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlz cGxheS9kYy9kY2UxMDAvZGNlMTAwX2h3X3NlcXVlbmNlci5jCmluZGV4IDg3NzcxNjcuLjc5OWQz NjIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9kY2UxMDAvZGNl MTAwX2h3X3NlcXVlbmNlci5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9k Y2UxMDAvZGNlMTAwX2h3X3NlcXVlbmNlci5jCkBAIC0yNSw2ICsyNSw3IEBACiAjaW5jbHVkZSAi ZG1fc2VydmljZXMuaCIKICNpbmNsdWRlICJkYy5oIgogI2luY2x1ZGUgImNvcmVfdHlwZXMuaCIK KyNpbmNsdWRlICJjbGtfbWdyLmgiCiAjaW5jbHVkZSAiaHdfc2VxdWVuY2VyLmgiCiAjaW5jbHVk ZSAiZGNlMTAwX2h3X3NlcXVlbmNlci5oIgogI2luY2x1ZGUgInJlc291cmNlLmgiCkBAIC0xMTEs OCArMTEyLDggQEAgdm9pZCBkY2UxMDBfcHJlcGFyZV9iYW5kd2lkdGgoCiB7CiAJZGNlMTEwX3Nl dF9zYWZlX2Rpc3BsYXltYXJrcygmY29udGV4dC0+cmVzX2N0eCwgZGMtPnJlc19wb29sKTsKIAot CWRjLT5yZXNfcG9vbC0+Y2xrX21nci0+ZnVuY3MtPnVwZGF0ZV9jbG9ja3MoCi0JCQlkYy0+cmVz X3Bvb2wtPmNsa19tZ3IsCisJZGMtPmNsa19tZ3ItPmZ1bmNzLT51cGRhdGVfY2xvY2tzKAorCQkJ ZGMtPmNsa19tZ3IsCiAJCQljb250ZXh0LAogCQkJZmFsc2UpOwogfQpAQCAtMTIzLDggKzEyNCw4 IEBAIHZvaWQgZGNlMTAwX29wdGltaXplX2JhbmR3aWR0aCgKIHsKIAlkY2UxMTBfc2V0X3NhZmVf ZGlzcGxheW1hcmtzKCZjb250ZXh0LT5yZXNfY3R4LCBkYy0+cmVzX3Bvb2wpOwogCi0JZGMtPnJl c19wb29sLT5jbGtfbWdyLT5mdW5jcy0+dXBkYXRlX2Nsb2NrcygKLQkJCWRjLT5yZXNfcG9vbC0+ Y2xrX21nciwKKwlkYy0+Y2xrX21nci0+ZnVuY3MtPnVwZGF0ZV9jbG9ja3MoCisJCQlkYy0+Y2xr X21nciwKIAkJCWNvbnRleHQsCiAJCQl0cnVlKTsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9hbWQvZGlzcGxheS9kYy9kY2UxMDAvZGNlMTAwX3Jlc291cmNlLmMgYi9kcml2ZXJzL2dw dS9kcm0vYW1kL2Rpc3BsYXkvZGMvZGNlMTAwL2RjZTEwMF9yZXNvdXJjZS5jCmluZGV4IGQ3YTUz MWUuLmFlODdjNTAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9k Y2UxMDAvZGNlMTAwX3Jlc291cmNlLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5 L2RjL2RjZTEwMC9kY2UxMDBfcmVzb3VyY2UuYwpAQCAtMzUsOCArMzUsNiBAQAogI2luY2x1ZGUg ImlycS9kY2UxMTAvaXJxX3NlcnZpY2VfZGNlMTEwLmgiCiAjaW5jbHVkZSAiZGNlL2RjZV9saW5r X2VuY29kZXIuaCIKICNpbmNsdWRlICJkY2UvZGNlX3N0cmVhbV9lbmNvZGVyLmgiCi0KLSNpbmNs dWRlICJkY2UvZGNlX2Nsa19tZ3IuaCIKICNpbmNsdWRlICJkY2UvZGNlX21lbV9pbnB1dC5oIgog I2luY2x1ZGUgImRjZS9kY2VfaXBwLmgiCiAjaW5jbHVkZSAiZGNlL2RjZV90cmFuc2Zvcm0uaCIK QEAgLTEzNywxOSArMTM1LDYgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBkY2UxMTBfdGltaW5nX2dl bmVyYXRvcl9vZmZzZXRzIGRjZTEwMF90Z19vZmZzZXRzW10gPSB7CiAjZGVmaW5lIFNSSShyZWdf bmFtZSwgYmxvY2ssIGlkKVwKIAkucmVnX25hbWUgPSBtbSAjIyBibG9jayAjIyBpZCAjIyBfICMj IHJlZ19uYW1lCiAKLQotc3RhdGljIGNvbnN0IHN0cnVjdCBjbGtfbWdyX3JlZ2lzdGVycyBkaXNw X2Nsa19yZWdzID0gewotCQlDTEtfQ09NTU9OX1JFR19MSVNUX0RDRV9CQVNFKCkKLX07Ci0KLXN0 YXRpYyBjb25zdCBzdHJ1Y3QgY2xrX21ncl9zaGlmdCBkaXNwX2Nsa19zaGlmdCA9IHsKLQkJQ0xL X0NPTU1PTl9NQVNLX1NIX0xJU1RfRENFX0NPTU1PTl9CQVNFKF9fU0hJRlQpCi19OwotCi1zdGF0 aWMgY29uc3Qgc3RydWN0IGNsa19tZ3JfbWFzayBkaXNwX2Nsa19tYXNrID0gewotCQlDTEtfQ09N TU9OX01BU0tfU0hfTElTVF9EQ0VfQ09NTU9OX0JBU0UoX01BU0spCi19OwotCiAjZGVmaW5lIGlw cF9yZWdzKGlkKVwKIFtpZF0gPSB7XAogCQlJUFBfRENFMTAwX1JFR19MSVNUX0RDRV9CQVNFKGlk KVwKQEAgLTc0Niw5ICs3MzEsNiBAQCBzdGF0aWMgdm9pZCBkZXN0cnVjdChzdHJ1Y3QgZGNlMTEw X3Jlc291cmNlX3Bvb2wgKnBvb2wpCiAJCQlkY2VfYXVkX2Rlc3Ryb3koJnBvb2wtPmJhc2UuYXVk aW9zW2ldKTsKIAl9CiAKLQlpZiAocG9vbC0+YmFzZS5jbGtfbWdyICE9IE5VTEwpCi0JCWRjZV9j bGtfbWdyX2Rlc3Ryb3koJnBvb2wtPmJhc2UuY2xrX21ncik7Ci0KIAlpZiAocG9vbC0+YmFzZS5h Ym0gIT0gTlVMTCkKIAkJCQlkY2VfYWJtX2Rlc3Ryb3koJnBvb2wtPmJhc2UuYWJtKTsKIApAQCAt OTc0LDE2ICs5NTYsNiBAQCBzdGF0aWMgYm9vbCBjb25zdHJ1Y3QoCiAJCX0KIAl9CiAKLQlwb29s LT5iYXNlLmNsa19tZ3IgPSBkY2VfY2xrX21ncl9jcmVhdGUoY3R4LAotCQkJJmRpc3BfY2xrX3Jl Z3MsCi0JCQkmZGlzcF9jbGtfc2hpZnQsCi0JCQkmZGlzcF9jbGtfbWFzayk7Ci0JaWYgKHBvb2wt PmJhc2UuY2xrX21nciA9PSBOVUxMKSB7Ci0JCWRtX2Vycm9yKCJEQzogZmFpbGVkIHRvIGNyZWF0 ZSBkaXNwbGF5IGNsb2NrIVxuIik7Ci0JCUJSRUFLX1RPX0RFQlVHR0VSKCk7Ci0JCWdvdG8gcmVz X2NyZWF0ZV9mYWlsOwotCX0KLQogCXBvb2wtPmJhc2UuZG1jdSA9IGRjZV9kbWN1X2NyZWF0ZShj dHgsCiAJCQkmZG1jdV9yZWdzLAogCQkJJmRtY3Vfc2hpZnQsCmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvZGNlMTEwL2RjZTExMF9od19zZXF1ZW5jZXIuYyBiL2Ry aXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9kY2UxMTAvZGNlMTEwX2h3X3NlcXVlbmNlci5j CmluZGV4IDY5ZjIxNTkuLmJiMjhiMDUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQv ZGlzcGxheS9kYy9kY2UxMTAvZGNlMTEwX2h3X3NlcXVlbmNlci5jCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9hbWQvZGlzcGxheS9kYy9kY2UxMTAvZGNlMTEwX2h3X3NlcXVlbmNlci5jCkBAIC00Niw2 ICs0Niw3IEBACiAjaW5jbHVkZSAibGlua19lbmNvZGVyLmgiCiAjaW5jbHVkZSAibGlua19od3Nz LmgiCiAjaW5jbHVkZSAiY2xvY2tfc291cmNlLmgiCisjaW5jbHVkZSAiY2xrX21nci5oIgogI2lu Y2x1ZGUgImFibS5oIgogI2luY2x1ZGUgImF1ZGlvLmgiCiAjaW5jbHVkZSAicmVnX2hlbHBlci5o IgpAQCAtMjM3OCw3ICsyMzc5LDcgQEAgdm9pZCBkY2UxMTBfcHJlcGFyZV9iYW5kd2lkdGgoCiAJ CXN0cnVjdCBkYyAqZGMsCiAJCXN0cnVjdCBkY19zdGF0ZSAqY29udGV4dCkKIHsKLQlzdHJ1Y3Qg Y2xrX21nciAqZGNjZyA9IGRjLT5yZXNfcG9vbC0+Y2xrX21ncjsKKwlzdHJ1Y3QgY2xrX21nciAq ZGNjZyA9IGRjLT5jbGtfbWdyOwogCiAJZGNlMTEwX3NldF9zYWZlX2Rpc3BsYXltYXJrcygmY29u dGV4dC0+cmVzX2N0eCwgZGMtPnJlc19wb29sKTsKIApAQCAtMjM5Miw3ICsyMzkzLDcgQEAgdm9p ZCBkY2UxMTBfb3B0aW1pemVfYmFuZHdpZHRoKAogCQlzdHJ1Y3QgZGMgKmRjLAogCQlzdHJ1Y3Qg ZGNfc3RhdGUgKmNvbnRleHQpCiB7Ci0Jc3RydWN0IGNsa19tZ3IgKmRjY2cgPSBkYy0+cmVzX3Bv b2wtPmNsa19tZ3I7CisJc3RydWN0IGNsa19tZ3IgKmRjY2cgPSBkYy0+Y2xrX21ncjsKIAogCWRj ZTExMF9zZXRfZGlzcGxheW1hcmtzKGRjLCBjb250ZXh0KTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2RjZTExMC9kY2UxMTBfcmVzb3VyY2UuYyBiL2RyaXZl cnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9kY2UxMTAvZGNlMTEwX3Jlc291cmNlLmMKaW5kZXgg Zjk4MmM4Yi4uMTEzY2ZiMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5 L2RjL2RjZTExMC9kY2UxMTBfcmVzb3VyY2UuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rp c3BsYXkvZGMvZGNlMTEwL2RjZTExMF9yZXNvdXJjZS5jCkBAIC0zMCw4ICszMCw2IEBACiAKICNp bmNsdWRlICJyZXNvdXJjZS5oIgogI2luY2x1ZGUgImRjZTExMC9kY2UxMTBfcmVzb3VyY2UuaCIK LQotI2luY2x1ZGUgImRjZS9kY2VfY2xrX21nci5oIgogI2luY2x1ZGUgImluY2x1ZGUvaXJxX3Nl cnZpY2VfaW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiZGNlL2RjZV9hdWRpby5oIgogI2luY2x1ZGUg ImRjZTExMC9kY2UxMTBfdGltaW5nX2dlbmVyYXRvci5oIgpAQCAtMTQ5LDE4ICsxNDcsNiBAQCBz dGF0aWMgY29uc3Qgc3RydWN0IGRjZTExMF90aW1pbmdfZ2VuZXJhdG9yX29mZnNldHMgZGNlMTEw X3RnX29mZnNldHNbXSA9IHsKICNkZWZpbmUgU1JJKHJlZ19uYW1lLCBibG9jaywgaWQpXAogCS5y ZWdfbmFtZSA9IG1tICMjIGJsb2NrICMjIGlkICMjIF8gIyMgcmVnX25hbWUKIAotc3RhdGljIGNv bnN0IHN0cnVjdCBjbGtfbWdyX3JlZ2lzdGVycyBkaXNwX2Nsa19yZWdzID0gewotCQlDTEtfQ09N TU9OX1JFR19MSVNUX0RDRV9CQVNFKCkKLX07Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgY2xrX21n cl9zaGlmdCBkaXNwX2Nsa19zaGlmdCA9IHsKLQkJQ0xLX0NPTU1PTl9NQVNLX1NIX0xJU1RfRENF X0NPTU1PTl9CQVNFKF9fU0hJRlQpCi19OwotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGNsa19tZ3Jf bWFzayBkaXNwX2Nsa19tYXNrID0gewotCQlDTEtfQ09NTU9OX01BU0tfU0hfTElTVF9EQ0VfQ09N TU9OX0JBU0UoX01BU0spCi19OwotCiBzdGF0aWMgY29uc3Qgc3RydWN0IGRjZV9kbWN1X3JlZ2lz dGVycyBkbWN1X3JlZ3MgPSB7CiAJCURNQ1VfRENFMTEwX0NPTU1PTl9SRUdfTElTVCgpCiB9OwpA QCAtODExLDkgKzc5Nyw2IEBAIHN0YXRpYyB2b2lkIGRlc3RydWN0KHN0cnVjdCBkY2UxMTBfcmVz b3VyY2VfcG9vbCAqcG9vbCkKIAlpZiAocG9vbC0+YmFzZS5kbWN1ICE9IE5VTEwpCiAJCWRjZV9k bWN1X2Rlc3Ryb3koJnBvb2wtPmJhc2UuZG1jdSk7CiAKLQlpZiAocG9vbC0+YmFzZS5jbGtfbWdy ICE9IE5VTEwpCi0JCWRjZV9jbGtfbWdyX2Rlc3Ryb3koJnBvb2wtPmJhc2UuY2xrX21ncik7Ci0K IAlpZiAocG9vbC0+YmFzZS5pcnFzICE9IE5VTEwpIHsKIAkJZGFsX2lycV9zZXJ2aWNlX2Rlc3Ry b3koJnBvb2wtPmJhc2UuaXJxcyk7CiAJfQpAQCAtMTM0NiwxNiArMTMyOSw2IEBAIHN0YXRpYyBi b29sIGNvbnN0cnVjdCgKIAkJfQogCX0KIAotCXBvb2wtPmJhc2UuY2xrX21nciA9IGRjZTExMF9j bGtfbWdyX2NyZWF0ZShjdHgsCi0JCQkmZGlzcF9jbGtfcmVncywKLQkJCSZkaXNwX2Nsa19zaGlm dCwKLQkJCSZkaXNwX2Nsa19tYXNrKTsKLQlpZiAocG9vbC0+YmFzZS5jbGtfbWdyID09IE5VTEwp IHsKLQkJZG1fZXJyb3IoIkRDOiBmYWlsZWQgdG8gY3JlYXRlIGRpc3BsYXkgY2xvY2shXG4iKTsK LQkJQlJFQUtfVE9fREVCVUdHRVIoKTsKLQkJZ290byByZXNfY3JlYXRlX2ZhaWw7Ci0JfQotCiAJ cG9vbC0+YmFzZS5kbWN1ID0gZGNlX2RtY3VfY3JlYXRlKGN0eCwKIAkJCSZkbWN1X3JlZ3MsCiAJ CQkmZG1jdV9zaGlmdCwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9k Yy9kY2UxMTIvZGNlMTEyX3Jlc291cmNlLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkv ZGMvZGNlMTEyL2RjZTExMl9yZXNvdXJjZS5jCmluZGV4IGNkZjc1OWIuLjFjM2U4OTMgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9kY2UxMTIvZGNlMTEyX3Jlc291 cmNlLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2RjZTExMi9kY2UxMTJf cmVzb3VyY2UuYwpAQCAtMzQsOCArMzQsNiBAQAogI2luY2x1ZGUgImRjZTExMC9kY2UxMTBfdGlt aW5nX2dlbmVyYXRvci5oIgogCiAjaW5jbHVkZSAiaXJxL2RjZTExMC9pcnFfc2VydmljZV9kY2Ux MTAuaCIKLQotI2luY2x1ZGUgImRjZS9kY2VfY2xrX21nci5oIgogI2luY2x1ZGUgImRjZS9kY2Vf bWVtX2lucHV0LmgiCiAjaW5jbHVkZSAiZGNlL2RjZV90cmFuc2Zvcm0uaCIKICNpbmNsdWRlICJk Y2UvZGNlX2xpbmtfZW5jb2Rlci5oIgpAQCAtMTQ4LDE5ICsxNDYsNiBAQCBzdGF0aWMgY29uc3Qg c3RydWN0IGRjZTExMF90aW1pbmdfZ2VuZXJhdG9yX29mZnNldHMgZGNlMTEyX3RnX29mZnNldHNb XSA9IHsKICNkZWZpbmUgU1JJKHJlZ19uYW1lLCBibG9jaywgaWQpXAogCS5yZWdfbmFtZSA9IG1t ICMjIGJsb2NrICMjIGlkICMjIF8gIyMgcmVnX25hbWUKIAotCi1zdGF0aWMgY29uc3Qgc3RydWN0 IGNsa19tZ3JfcmVnaXN0ZXJzIGRpc3BfY2xrX3JlZ3MgPSB7Ci0JCUNMS19DT01NT05fUkVHX0xJ U1RfRENFX0JBU0UoKQotfTsKLQotc3RhdGljIGNvbnN0IHN0cnVjdCBjbGtfbWdyX3NoaWZ0IGRp c3BfY2xrX3NoaWZ0ID0gewotCQlDTEtfQ09NTU9OX01BU0tfU0hfTElTVF9EQ0VfQ09NTU9OX0JB U0UoX19TSElGVCkKLX07Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgY2xrX21ncl9tYXNrIGRpc3Bf Y2xrX21hc2sgPSB7Ci0JCUNMS19DT01NT05fTUFTS19TSF9MSVNUX0RDRV9DT01NT05fQkFTRShf TUFTSykKLX07Ci0KIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZGNlX2RtY3VfcmVnaXN0ZXJzIGRtY3Vf cmVncyA9IHsKIAkJRE1DVV9EQ0UxMTBfQ09NTU9OX1JFR19MSVNUKCkKIH07CkBAIC03NzQsOSAr NzU5LDYgQEAgc3RhdGljIHZvaWQgZGVzdHJ1Y3Qoc3RydWN0IGRjZTExMF9yZXNvdXJjZV9wb29s ICpwb29sKQogCWlmIChwb29sLT5iYXNlLmRtY3UgIT0gTlVMTCkKIAkJZGNlX2RtY3VfZGVzdHJv eSgmcG9vbC0+YmFzZS5kbWN1KTsKIAotCWlmIChwb29sLT5iYXNlLmNsa19tZ3IgIT0gTlVMTCkK LQkJZGNlX2Nsa19tZ3JfZGVzdHJveSgmcG9vbC0+YmFzZS5jbGtfbWdyKTsKLQogCWlmIChwb29s LT5iYXNlLmlycXMgIT0gTlVMTCkgewogCQlkYWxfaXJxX3NlcnZpY2VfZGVzdHJveSgmcG9vbC0+ YmFzZS5pcnFzKTsKIAl9CkBAIC0xMjI1LDE2ICsxMjA3LDYgQEAgc3RhdGljIGJvb2wgY29uc3Ry dWN0KAogCQl9CiAJfQogCi0JcG9vbC0+YmFzZS5jbGtfbWdyID0gZGNlMTEyX2Nsa19tZ3JfY3Jl YXRlKGN0eCwKLQkJCSZkaXNwX2Nsa19yZWdzLAotCQkJJmRpc3BfY2xrX3NoaWZ0LAotCQkJJmRp c3BfY2xrX21hc2spOwotCWlmIChwb29sLT5iYXNlLmNsa19tZ3IgPT0gTlVMTCkgewotCQlkbV9l cnJvcigiREM6IGZhaWxlZCB0byBjcmVhdGUgZGlzcGxheSBjbG9jayFcbiIpOwotCQlCUkVBS19U T19ERUJVR0dFUigpOwotCQlnb3RvIHJlc19jcmVhdGVfZmFpbDsKLQl9Ci0KIAlwb29sLT5iYXNl LmRtY3UgPSBkY2VfZG1jdV9jcmVhdGUoY3R4LAogCQkJJmRtY3VfcmVncywKIAkJCSZkbWN1X3No aWZ0LApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2RjZTEyMC9k Y2UxMjBfcmVzb3VyY2UuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9kY2UxMjAv ZGNlMTIwX3Jlc291cmNlLmMKaW5kZXggOWU2YTVkOC4uYWZhMWM2MCAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2RjZTEyMC9kY2UxMjBfcmVzb3VyY2UuYworKysg Yi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvZGNlMTIwL2RjZTEyMF9yZXNvdXJjZS5j CkBAIC00Niw4ICs0Niw3IEBACiAjaW5jbHVkZSAiZGNlMTEwL2RjZTExMF9od19zZXF1ZW5jZXIu aCIKICNpbmNsdWRlICJkY2UxMjAvZGNlMTIwX2h3X3NlcXVlbmNlci5oIgogI2luY2x1ZGUgImRj ZS9kY2VfdHJhbnNmb3JtLmgiCi0KLSNpbmNsdWRlICJkY2UvZGNlX2Nsa19tZ3IuaCIKKyNpbmNs dWRlICJjbGtfbWdyLmgiCiAjaW5jbHVkZSAiZGNlL2RjZV9hdWRpby5oIgogI2luY2x1ZGUgImRj ZS9kY2VfbGlua19lbmNvZGVyLmgiCiAjaW5jbHVkZSAiZGNlL2RjZV9zdHJlYW1fZW5jb2Rlci5o IgpAQCAtNjA5LDkgKzYwOCw2IEBAIHN0YXRpYyB2b2lkIGRlc3RydWN0KHN0cnVjdCBkY2UxMTBf cmVzb3VyY2VfcG9vbCAqcG9vbCkKIAogCWlmIChwb29sLT5iYXNlLmRtY3UgIT0gTlVMTCkKIAkJ ZGNlX2RtY3VfZGVzdHJveSgmcG9vbC0+YmFzZS5kbWN1KTsKLQotCWlmIChwb29sLT5iYXNlLmNs a19tZ3IgIT0gTlVMTCkKLQkJZGNlX2Nsa19tZ3JfZGVzdHJveSgmcG9vbC0+YmFzZS5jbGtfbWdy KTsKIH0KIAogc3RhdGljIHZvaWQgcmVhZF9kY2Vfc3RyYXBzKApAQCAtMTA0OCwxNyArMTA0NCw2 IEBAIHN0YXRpYyBib29sIGNvbnN0cnVjdCgKIAkJfQogCX0KIAotCWlmIChpc192ZzIwKQotCQlw b29sLT5iYXNlLmNsa19tZ3IgPSBkY2UxMjFfY2xrX21ncl9jcmVhdGUoY3R4KTsKLQllbHNlCi0J CXBvb2wtPmJhc2UuY2xrX21nciA9IGRjZTEyMF9jbGtfbWdyX2NyZWF0ZShjdHgpOwotCi0JaWYg KHBvb2wtPmJhc2UuY2xrX21nciA9PSBOVUxMKSB7Ci0JCWRtX2Vycm9yKCJEQzogZmFpbGVkIHRv IGNyZWF0ZSBkaXNwbGF5IGNsb2NrIVxuIik7Ci0JCUJSRUFLX1RPX0RFQlVHR0VSKCk7Ci0JCWdv dG8gZGNjZ19jcmVhdGVfZmFpbDsKLQl9Ci0KIAlwb29sLT5iYXNlLmRtY3UgPSBkY2VfZG1jdV9j cmVhdGUoY3R4LAogCQkJJmRtY3VfcmVncywKIAkJCSZkbWN1X3NoaWZ0LApAQCAtMTE4Niw3ICsx MTcxLDcgQEAgc3RhdGljIGJvb2wgY29uc3RydWN0KAogCSAqIGhlcmUuCiAJICovCiAJaWYgKGlz X3ZnMjAgJiYgZGNlMTIxX3hnbWlfZW5hYmxlZChkYy0+aHdzZXEpKQotCQlkY2UxMjFfY2xvY2tf cGF0Y2hfeGdtaV9zc19pbmZvKHBvb2wtPmJhc2UuY2xrX21ncik7CisJCWRjZTEyMV9jbG9ja19w YXRjaF94Z21pX3NzX2luZm8oZGMtPmNsa19tZ3IpOwogCiAJLyogQ3JlYXRlIGhhcmR3YXJlIHNl cXVlbmNlciAqLwogCWlmICghZGNlMTIwX2h3X3NlcXVlbmNlcl9jcmVhdGUoZGMpKQpAQCAtMTIw NSw3ICsxMTkwLDYgQEAgc3RhdGljIGJvb2wgY29uc3RydWN0KAogCiBpcnFzX2NyZWF0ZV9mYWls OgogY29udHJvbGxlcl9jcmVhdGVfZmFpbDoKLWRjY2dfY3JlYXRlX2ZhaWw6CiBjbGtfc3JjX2Ny ZWF0ZV9mYWlsOgogcmVzX2NyZWF0ZV9mYWlsOgogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vYW1kL2Rpc3BsYXkvZGMvZGNlODAvZGNlODBfcmVzb3VyY2UuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvZGlzcGxheS9kYy9kY2U4MC9kY2U4MF9yZXNvdXJjZS5jCmluZGV4IDJjMjExMzUuLjFk Y2NkNTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9kY2U4MC9k Y2U4MF9yZXNvdXJjZS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9kY2U4 MC9kY2U4MF9yZXNvdXJjZS5jCkBAIC0zNyw3ICszNyw2IEBACiAjaW5jbHVkZSAiZGNlMTEwL2Rj ZTExMF90aW1pbmdfZ2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiZGNlMTEwL2RjZTExMF9yZXNvdXJj ZS5oIgogI2luY2x1ZGUgImRjZTgwL2RjZTgwX3RpbWluZ19nZW5lcmF0b3IuaCIKLSNpbmNsdWRl ICJkY2UvZGNlX2Nsa19tZ3IuaCIKICNpbmNsdWRlICJkY2UvZGNlX21lbV9pbnB1dC5oIgogI2lu Y2x1ZGUgImRjZS9kY2VfbGlua19lbmNvZGVyLmgiCiAjaW5jbHVkZSAiZGNlL2RjZV9zdHJlYW1f ZW5jb2Rlci5oIgpAQCAtMTU0LDE5ICsxNTMsNiBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGRjZTEx MF90aW1pbmdfZ2VuZXJhdG9yX29mZnNldHMgZGNlODBfdGdfb2Zmc2V0c1tdID0gewogI2RlZmlu ZSBTUkkocmVnX25hbWUsIGJsb2NrLCBpZClcCiAJLnJlZ19uYW1lID0gbW0gIyMgYmxvY2sgIyMg aWQgIyMgXyAjIyByZWdfbmFtZQogCi0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgY2xrX21ncl9yZWdp c3RlcnMgZGlzcF9jbGtfcmVncyA9IHsKLQkJQ0xLX0NPTU1PTl9SRUdfTElTVF9EQ0VfQkFTRSgp Ci19OwotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGNsa19tZ3Jfc2hpZnQgZGlzcF9jbGtfc2hpZnQg PSB7Ci0JCUNMS19DT01NT05fTUFTS19TSF9MSVNUX0RDRV9DT01NT05fQkFTRShfX1NISUZUKQot fTsKLQotc3RhdGljIGNvbnN0IHN0cnVjdCBjbGtfbWdyX21hc2sgZGlzcF9jbGtfbWFzayA9IHsK LQkJQ0xLX0NPTU1PTl9NQVNLX1NIX0xJU1RfRENFX0NPTU1PTl9CQVNFKF9NQVNLKQotfTsKLQog I2RlZmluZSBpcHBfcmVncyhpZClcCiBbaWRdID0ge1wKIAkJSVBQX0NPTU1PTl9SRUdfTElTVF9E Q0VfQkFTRShpZClcCkBAIC04MDIsOSArNzg4LDYgQEAgc3RhdGljIHZvaWQgZGVzdHJ1Y3Qoc3Ry dWN0IGRjZTExMF9yZXNvdXJjZV9wb29sICpwb29sKQogCQl9CiAJfQogCi0JaWYgKHBvb2wtPmJh c2UuY2xrX21nciAhPSBOVUxMKQotCQlkY2VfY2xrX21ncl9kZXN0cm95KCZwb29sLT5iYXNlLmNs a19tZ3IpOwotCiAJaWYgKHBvb2wtPmJhc2UuaXJxcyAhPSBOVUxMKSB7CiAJCWRhbF9pcnFfc2Vy dmljZV9kZXN0cm95KCZwb29sLT5iYXNlLmlycXMpOwogCX0KQEAgLTk1NSwxNiArOTM4LDYgQEAg c3RhdGljIGJvb2wgZGNlODBfY29uc3RydWN0KAogCQl9CiAJfQogCi0JcG9vbC0+YmFzZS5jbGtf bWdyID0gZGNlX2Nsa19tZ3JfY3JlYXRlKGN0eCwKLQkJCSZkaXNwX2Nsa19yZWdzLAotCQkJJmRp c3BfY2xrX3NoaWZ0LAotCQkJJmRpc3BfY2xrX21hc2spOwotCWlmIChwb29sLT5iYXNlLmNsa19t Z3IgPT0gTlVMTCkgewotCQlkbV9lcnJvcigiREM6IGZhaWxlZCB0byBjcmVhdGUgZGlzcGxheSBj bG9jayFcbiIpOwotCQlCUkVBS19UT19ERUJVR0dFUigpOwotCQlnb3RvIHJlc19jcmVhdGVfZmFp bDsKLQl9Ci0KIAlwb29sLT5iYXNlLmRtY3UgPSBkY2VfZG1jdV9jcmVhdGUoY3R4LAogCQkJJmRt Y3VfcmVncywKIAkJCSZkbWN1X3NoaWZ0LApAQCAtMTE2NCwxNiArMTEzNyw2IEBAIHN0YXRpYyBi b29sIGRjZTgxX2NvbnN0cnVjdCgKIAkJfQogCX0KIAotCXBvb2wtPmJhc2UuY2xrX21nciA9IGRj ZV9jbGtfbWdyX2NyZWF0ZShjdHgsCi0JCQkmZGlzcF9jbGtfcmVncywKLQkJCSZkaXNwX2Nsa19z aGlmdCwKLQkJCSZkaXNwX2Nsa19tYXNrKTsKLQlpZiAocG9vbC0+YmFzZS5jbGtfbWdyID09IE5V TEwpIHsKLQkJZG1fZXJyb3IoIkRDOiBmYWlsZWQgdG8gY3JlYXRlIGRpc3BsYXkgY2xvY2shXG4i KTsKLQkJQlJFQUtfVE9fREVCVUdHRVIoKTsKLQkJZ290byByZXNfY3JlYXRlX2ZhaWw7Ci0JfQot CiAJcG9vbC0+YmFzZS5kbWN1ID0gZGNlX2RtY3VfY3JlYXRlKGN0eCwKIAkJCSZkbWN1X3JlZ3Ms CiAJCQkmZG1jdV9zaGlmdCwKQEAgLTEzNjksMTYgKzEzMzIsNiBAQCBzdGF0aWMgYm9vbCBkY2U4 M19jb25zdHJ1Y3QoCiAJCX0KIAl9CiAKLQlwb29sLT5iYXNlLmNsa19tZ3IgPSBkY2VfY2xrX21n cl9jcmVhdGUoY3R4LAotCQkJJmRpc3BfY2xrX3JlZ3MsCi0JCQkmZGlzcF9jbGtfc2hpZnQsCi0J CQkmZGlzcF9jbGtfbWFzayk7Ci0JaWYgKHBvb2wtPmJhc2UuY2xrX21nciA9PSBOVUxMKSB7Ci0J CWRtX2Vycm9yKCJEQzogZmFpbGVkIHRvIGNyZWF0ZSBkaXNwbGF5IGNsb2NrIVxuIik7Ci0JCUJS RUFLX1RPX0RFQlVHR0VSKCk7Ci0JCWdvdG8gcmVzX2NyZWF0ZV9mYWlsOwotCX0KLQogCXBvb2wt PmJhc2UuZG1jdSA9IGRjZV9kbWN1X2NyZWF0ZShjdHgsCiAJCQkmZG1jdV9yZWdzLAogCQkJJmRt Y3Vfc2hpZnQsCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvZGNu MTAvTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvZGNuMTAvTWFrZWZp bGUKaW5kZXggNTVmMjkzYy4uM2MxMjFjZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2Ft ZC9kaXNwbGF5L2RjL2RjbjEwL01ha2VmaWxlCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlz cGxheS9kYy9kY24xMC9NYWtlZmlsZQpAQCAtMjQsNyArMjQsOCBAQAogCiBEQ04xMCA9IGRjbjEw X3Jlc291cmNlLm8gZGNuMTBfaXBwLm8gZGNuMTBfaHdfc2VxdWVuY2VyLm8gZGNuMTBfaHdfc2Vx dWVuY2VyX2RlYnVnLm8gXAogCQlkY24xMF9kcHAubyBkY24xMF9vcHAubyBkY24xMF9vcHRjLm8g XAotCQlkY24xMF9odWJwLm8gZGNuMTBfbXBjLm8gZGNuMTBfY2xrX21nci5vIFwKKwkJZGNuMTBf aHVicC5vIGRjbjEwX21wYy5vIFwKKwkJY2xrX21nci5vIHJ2MV9jbGtfbWdyLm8gcnYxX2Nsa19t Z3JfdmJpb3Nfc211Lm8gcnYyX2Nsa19tZ3Iub1wKIAkJZGNuMTBfZHBwX2RzY2wubyBkY24xMF9k cHBfY20ubyBkY24xMF9jbV9jb21tb24ubyBcCiAJCWRjbjEwX2h1YmJ1Yi5vIGRjbjEwX3N0cmVh bV9lbmNvZGVyLm8gZGNuMTBfbGlua19lbmNvZGVyLm8KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2FtZC9kaXNwbGF5L2RjL2RjbjEwL2Nsa19tZ3IuYyBiL2RyaXZlcnMvZ3B1L2RybS9h bWQvZGlzcGxheS9kYy9kY24xMC9jbGtfbWdyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMC4uZDE2YmQ3MQotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQv ZGlzcGxheS9kYy9kY24xMC9jbGtfbWdyLmMKQEAgLTAsMCArMSwxMTIgQEAKKy8qCisgKiBDb3B5 cmlnaHQgMjAxMi0xNiBBZHZhbmNlZCBNaWNybyBEZXZpY2VzLCBJbmMuCisgKgorICogUGVybWlz c2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0 YWluaW5nIGEKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVu dGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCisgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2Fy ZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCisgKiB0 aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0 ZSwgc3VibGljZW5zZSwKKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFu ZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQorICogU29mdHdhcmUgaXMgZnVybmlzaGVk IHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBU aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFs bCBiZSBpbmNsdWRlZCBpbgorICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBv ZiB0aGUgU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIs IFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElO Q0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM SVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdF TUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCisgKiBUSEUgQ09QWVJJR0hUIEhPTERFUihTKSBPUiBB VVRIT1IoUykgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IKKyAqIE9USEVSIExJ QUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJX SVNFLAorICogQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBT T0ZUV0FSRSBPUiBUSEUgVVNFIE9SCisgKiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUu CisgKgorICogQXV0aG9yczogQU1ECisgKgorICovCisKKyNpbmNsdWRlICJkYWxfYXNpY19pZC5o IgorI2luY2x1ZGUgImRjX3R5cGVzLmgiCisjaW5jbHVkZSAiZGNjZy5oIgorI2luY2x1ZGUgImNs a19tZ3JfaW50ZXJuYWwuaCIKKworI2luY2x1ZGUgImRjZS9kY2VfY2xrX21nci5oIgorI2luY2x1 ZGUgImRjZS9kY2UxMTBfY2xrX21nci5oIgorI2luY2x1ZGUgImRjZS9kY2UxMTJfY2xrX21nci5o IgorI2luY2x1ZGUgImRjZS9kY2UxMjBfY2xrX21nci5oIgorI2luY2x1ZGUgInJ2MV9jbGtfbWdy LmgiCisjaW5jbHVkZSAicnYyX2Nsa19tZ3IuaCIKKworc3RydWN0IGNsa19tZ3IgKmRjX2Nsa19t Z3JfY3JlYXRlKHN0cnVjdCBkY19jb250ZXh0ICpjdHgsIHN0cnVjdCBwcF9zbXVfZnVuY3MgKnBw X3NtdSwgc3RydWN0IGRjY2cgKmRjY2cpCit7CisJc3RydWN0IGh3X2FzaWNfaWQgYXNpY19pZCA9 IGN0eC0+YXNpY19pZDsKKworCXN0cnVjdCBjbGtfbWdyX2ludGVybmFsICpjbGtfbWdyID0ga3ph bGxvYyhzaXplb2YoKmNsa19tZ3IpLCBHRlBfS0VSTkVMKTsKKworCWlmIChjbGtfbWdyID09IE5V TEwpIHsKKwkJQlJFQUtfVE9fREVCVUdHRVIoKTsKKwkJcmV0dXJuIE5VTEw7CisJfQorCisJc3dp dGNoIChhc2ljX2lkLmNoaXBfZmFtaWx5KSB7CisJY2FzZSBGQU1JTFlfQ0k6CisJY2FzZSBGQU1J TFlfS1Y6CisJCWRjZV9jbGtfbWdyX2NvbnN0cnVjdChjdHgsIGNsa19tZ3IpOworCQlicmVhazsK KwljYXNlIEZBTUlMWV9DWjoKKwkJZGNlMTEwX2Nsa19tZ3JfY29uc3RydWN0KGN0eCwgY2xrX21n cik7CisJCWJyZWFrOworCWNhc2UgRkFNSUxZX1ZJOgorCQlpZiAoQVNJQ19SRVZfSVNfVE9OR0Ff UChhc2ljX2lkLmh3X2ludGVybmFsX3JldikgfHwKKwkJCQlBU0lDX1JFVl9JU19GSUpJX1AoYXNp Y19pZC5od19pbnRlcm5hbF9yZXYpKSB7CisJCQlkY2VfY2xrX21ncl9jb25zdHJ1Y3QoY3R4LCBj bGtfbWdyKTsKKwkJCWJyZWFrOworCQl9CisJCWlmIChBU0lDX1JFVl9JU19QT0xBUklTMTBfUChh c2ljX2lkLmh3X2ludGVybmFsX3JldikgfHwKKwkJCQlBU0lDX1JFVl9JU19QT0xBUklTMTFfTShh c2ljX2lkLmh3X2ludGVybmFsX3JldikgfHwKKwkJCQlBU0lDX1JFVl9JU19QT0xBUklTMTJfVihh c2ljX2lkLmh3X2ludGVybmFsX3JldikpIHsKKwkJCWRjZTExMl9jbGtfbWdyX2NvbnN0cnVjdChj dHgsIGNsa19tZ3IpOworCQkJYnJlYWs7CisJCX0KKwkJaWYgKEFTSUNfUkVWX0lTX1ZFR0FNKGFz aWNfaWQuaHdfaW50ZXJuYWxfcmV2KSkgeworCQkJZGNlMTEyX2Nsa19tZ3JfY29uc3RydWN0KGN0 eCwgY2xrX21ncik7CisJCQlicmVhazsKKwkJfQorCQlicmVhazsKKwljYXNlIEZBTUlMWV9BSToK KwkJaWYgKEFTSUNSRVZfSVNfVkVHQTIwX1AoYXNpY19pZC5od19pbnRlcm5hbF9yZXYpKQorCQkJ ZGNlMTIxX2Nsa19tZ3JfY29uc3RydWN0KGN0eCwgY2xrX21ncik7CisJCWVsc2UKKwkJCWRjZTEy MF9jbGtfbWdyX2NvbnN0cnVjdChjdHgsIGNsa19tZ3IpOworCQlicmVhazsKKworI2lmIGRlZmlu ZWQoQ09ORklHX0RSTV9BTURfRENfRENOMV8wKQorCWNhc2UgRkFNSUxZX1JWOgorCisjaWYgZGVm aW5lZChDT05GSUdfRFJNX0FNRF9EQ19EQ04xXzAxKQorCQlpZiAoQVNJQ1JFVl9JU19SQVZFTjIo YXNpY19pZC5od19pbnRlcm5hbF9yZXYpKSB7CisJCQlydjJfY2xrX21ncl9jb25zdHJ1Y3QoY3R4 LCBjbGtfbWdyLCBwcF9zbXUpOworCQkJYnJlYWs7CisJCX0KKyNlbmRpZgkvKiBEQ04xXzAxICov CisKKwkJaWYgKEFTSUNSRVZfSVNfUkFWRU4oYXNpY19pZC5od19pbnRlcm5hbF9yZXYpIHx8CisJ CQkJQVNJQ1JFVl9JU19QSUNBU1NPKGFzaWNfaWQuaHdfaW50ZXJuYWxfcmV2KSkgeworCQkJcnYx X2Nsa19tZ3JfY29uc3RydWN0KGN0eCwgY2xrX21nciwgcHBfc211KTsKKwkJCWJyZWFrOworCQl9 CisJCWJyZWFrOworI2VuZGlmCS8qIEZhbWlseSBSViAqLworCisJZGVmYXVsdDoKKwkJQVNTRVJU KDApOyAvKiBVbmtub3duIEFzaWMgKi8KKwkJYnJlYWs7CisJfQorCisJcmV0dXJuICZjbGtfbWdy LT5iYXNlOworfQorCit2b2lkIGRjX2Rlc3Ryb3lfY2xrX21ncihzdHJ1Y3QgY2xrX21nciAqY2xr X21ncl9iYXNlKQoreworCXN0cnVjdCBjbGtfbWdyX2ludGVybmFsICpjbGtfbWdyID0gVE9fQ0xL X01HUl9JTlRFUk5BTChjbGtfbWdyX2Jhc2UpOworCisJa2ZyZWUoY2xrX21ncik7Cit9CmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvZGNuMTAvZGNuMTBfY2xrX21n ci5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2RjbjEwL2RjbjEwX2Nsa19tZ3Iu YwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWYyZmZjZS4uMDAwMDAwMAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvZGNuMTAvZGNuMTBfY2xrX21nci5jCisrKyAv ZGV2L251bGwKQEAgLTEsMzU1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgMjAxOCBBZHZhbmNl ZCBNaWNybyBEZXZpY2VzLCBJbmMuCi0gKgotICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRl ZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKLSAqIGNvcHkgb2Yg dGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNv ZnR3YXJlIiksCi0gKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9u LCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCi0gKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29w eSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKLSAqIGFu ZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0 byB3aG9tIHRoZQotICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRv IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKLSAqCi0gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5v dGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgotICog YWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCi0gKgot ICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0Yg QU5ZIEtJTkQsIEVYUFJFU1MgT1IKLSAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlU RUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAotICogRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNI QUxMCi0gKiBUSEUgQ09QWVJJR0hUIEhPTERFUihTKSBPUiBBVVRIT1IoUykgQkUgTElBQkxFIEZP UiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IKLSAqIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBB TiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLAotICogQVJJU0lORyBGUk9N LCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9S Ci0gKiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCi0gKgotICogQXV0aG9yczogQU1E Ci0gKgotICovCi0KLSNpbmNsdWRlICJkY24xMF9jbGtfbWdyLmgiCi0KLSNpbmNsdWRlICJyZWdf aGVscGVyLmgiCi0jaW5jbHVkZSAiY29yZV90eXBlcy5oIgotI2luY2x1ZGUgImRhbF9hc2ljX2lk LmgiCi0KLSNkZWZpbmUgVE9fRENFX0NMS19NR1IoY2xvY2tzKVwKLQljb250YWluZXJfb2YoY2xv Y2tzLCBzdHJ1Y3QgZGNlX2Nsa19tZ3IsIGJhc2UpCi0KLSNkZWZpbmUgUkVHKHJlZykgXAotCShj bGtfbWdyX2RjZS0+cmVncy0+cmVnKQotCi0jdW5kZWYgRk4KLSNkZWZpbmUgRk4ocmVnX25hbWUs IGZpZWxkX25hbWUpIFwKLQljbGtfbWdyX2RjZS0+Y2xrX21ncl9zaGlmdC0+ZmllbGRfbmFtZSwg Y2xrX21ncl9kY2UtPmNsa19tZ3JfbWFzay0+ZmllbGRfbmFtZQotCi0jZGVmaW5lIENUWCBcCi0J Y2xrX21ncl9kY2UtPmJhc2UuY3R4Ci0jZGVmaW5lIERDX0xPR0dFUiBcCi0JY2xrX21nci0+Y3R4 LT5sb2dnZXIKLQotc3RhdGljIGludCBkY24xX2RldGVybWluZV9kcHBjbGtfdGhyZXNob2xkKHN0 cnVjdCBjbGtfbWdyICpjbGtfbWdyLCBzdHJ1Y3QgZGNfY2xvY2tzICpuZXdfY2xvY2tzKQotewot CWJvb2wgcmVxdWVzdF9kcHBfZGl2ID0gbmV3X2Nsb2Nrcy0+ZGlzcGNsa19raHogPiBuZXdfY2xv Y2tzLT5kcHBjbGtfa2h6OwotCWJvb2wgZGlzcGNsa19pbmNyZWFzZSA9IG5ld19jbG9ja3MtPmRp c3BjbGtfa2h6ID4gY2xrX21nci0+Y2xrcy5kaXNwY2xrX2toejsKLQlpbnQgZGlzcF9jbGtfdGhy ZXNob2xkID0gbmV3X2Nsb2Nrcy0+bWF4X3N1cHBvcnRlZF9kcHBjbGtfa2h6OwotCWJvb2wgY3Vy X2RwcF9kaXYgPSBjbGtfbWdyLT5jbGtzLmRpc3BjbGtfa2h6ID4gY2xrX21nci0+Y2xrcy5kcHBj bGtfa2h6OwotCi0JLyogaW5jcmVhc2UgY2xvY2ssIGxvb2tpbmcgZm9yIGRpdiBpcyAwIGZvciBj dXJyZW50LCByZXF1ZXN0IGRpdiBpcyAxKi8KLQlpZiAoZGlzcGNsa19pbmNyZWFzZSkgewotCQkv KiBhbHJlYWR5IGRpdmlkZWQgYnkgMiwgbm8gbmVlZCB0byByZWFjaCB0YXJnZXQgY2xrIHdpdGgg MiBzdGVwcyovCi0JCWlmIChjdXJfZHBwX2RpdikKLQkJCXJldHVybiBuZXdfY2xvY2tzLT5kaXNw Y2xrX2toejsKLQotCQkvKiByZXF1ZXN0IGRpc3AgY2xrIGlzIGxvd2VyIHRoYW4gbWF4aW11bSBz dXBwb3J0ZWQgZHBwIGNsaywKLQkJICogbm8gbmVlZCB0byByZWFjaCB0YXJnZXQgY2xrIHdpdGgg dHdvIHN0ZXBzLgotCQkgKi8KLQkJaWYgKG5ld19jbG9ja3MtPmRpc3BjbGtfa2h6IDw9IGRpc3Bf Y2xrX3RocmVzaG9sZCkKLQkJCXJldHVybiBuZXdfY2xvY2tzLT5kaXNwY2xrX2toejsKLQotCQkv KiB0YXJnZXQgZHBwIGNsayBub3QgcmVxdWVzdCBkaXZpZGVkIGJ5IDIsIHN0aWxsIHdpdGhpbiB0 aHJlc2hvbGQgKi8KLQkJaWYgKCFyZXF1ZXN0X2RwcF9kaXYpCi0JCQlyZXR1cm4gbmV3X2Nsb2Nr cy0+ZGlzcGNsa19raHo7Ci0KLQl9IGVsc2UgewotCQkvKiBkZWNyZWFzZSBjbG9jaywgbG9va2lu ZyBmb3IgY3VycmVudCBkcHBjbGsgZGl2aWRlZCBieSAyLAotCQkgKiByZXF1ZXN0IGRwcGNsayBu b3QgZGl2aWRlZCBieSAyLgotCQkgKi8KLQotCQkvKiBjdXJyZW50IGRwcCBjbGsgbm90IGRpdmlk ZWQgYnkgMiwgbm8gbmVlZCB0byByYW1wKi8KLQkJaWYgKCFjdXJfZHBwX2RpdikKLQkJCXJldHVy biBuZXdfY2xvY2tzLT5kaXNwY2xrX2toejsKLQotCQkvKiBjdXJyZW50IGRpc3AgY2xrIGlzIGxv d2VyIHRoYW4gY3VycmVudCBtYXhpbXVtIGRwcCBjbGssCi0JCSAqIG5vIG5lZWQgdG8gcmFtcAot CQkgKi8KLQkJaWYgKGNsa19tZ3ItPmNsa3MuZGlzcGNsa19raHogPD0gZGlzcF9jbGtfdGhyZXNo b2xkKQotCQkJcmV0dXJuIG5ld19jbG9ja3MtPmRpc3BjbGtfa2h6OwotCi0JCS8qIHJlcXVlc3Qg ZHBwIGNsayBuZWVkIHRvIGJlIGRpdmlkZWQgYnkgMiAqLwotCQlpZiAocmVxdWVzdF9kcHBfZGl2 KQotCQkJcmV0dXJuIG5ld19jbG9ja3MtPmRpc3BjbGtfa2h6OwotCX0KLQotCXJldHVybiBkaXNw X2Nsa190aHJlc2hvbGQ7Ci19Ci0KLXN0YXRpYyB2b2lkIGRjbjFfcmFtcF91cF9kaXNwY2xrX3dp dGhfZHBwKHN0cnVjdCBjbGtfbWdyICpjbGtfbWdyLCBzdHJ1Y3QgZGNfY2xvY2tzICpuZXdfY2xv Y2tzKQotewotCWludCBpOwotCXN0cnVjdCBkYyAqZGMgPSBjbGtfbWdyLT5jdHgtPmRjOwotCWlu dCBkaXNwY2xrX3RvX2RwcF90aHJlc2hvbGQgPSBkY24xX2RldGVybWluZV9kcHBjbGtfdGhyZXNo b2xkKGNsa19tZ3IsIG5ld19jbG9ja3MpOwotCWJvb2wgcmVxdWVzdF9kcHBfZGl2ID0gbmV3X2Ns b2Nrcy0+ZGlzcGNsa19raHogPiBuZXdfY2xvY2tzLT5kcHBjbGtfa2h6OwotCi0JLyogc2V0IGRp c3AgY2xrIHRvIGRwcCBjbGsgdGhyZXNob2xkICovCi0KLQlpZiAoY2xrX21nci0+ZnVuY3MtPnNl dF9kaXNwY2xrICYmIGNsa19tZ3ItPmZ1bmNzLT5zZXRfZHByZWZjbGspIHsKLQkJY2xrX21nci0+ ZnVuY3MtPnNldF9kaXNwY2xrKGNsa19tZ3IsIGRpc3BjbGtfdG9fZHBwX3RocmVzaG9sZCk7Ci0J CWNsa19tZ3ItPmZ1bmNzLT5zZXRfZHByZWZjbGsoY2xrX21ncik7Ci0JfSBlbHNlCi0JCWRjZTEx Ml9zZXRfY2xvY2soY2xrX21nciwgZGlzcGNsa190b19kcHBfdGhyZXNob2xkKTsKLQotCS8qIHVw ZGF0ZSByZXF1ZXN0IGRwcCBjbGsgZGl2aXNpb24gb3B0aW9uICovCi0JZm9yIChpID0gMDsgaSA8 IGRjLT5yZXNfcG9vbC0+cGlwZV9jb3VudDsgaSsrKSB7Ci0JCXN0cnVjdCBwaXBlX2N0eCAqcGlw ZV9jdHggPSAmZGMtPmN1cnJlbnRfc3RhdGUtPnJlc19jdHgucGlwZV9jdHhbaV07Ci0KLQkJaWYg KCFwaXBlX2N0eC0+cGxhbmVfc3RhdGUpCi0JCQljb250aW51ZTsKLQotCQlwaXBlX2N0eC0+cGxh bmVfcmVzLmRwcC0+ZnVuY3MtPmRwcF9kcHBjbGtfY29udHJvbCgKLQkJCQlwaXBlX2N0eC0+cGxh bmVfcmVzLmRwcCwKLQkJCQlyZXF1ZXN0X2RwcF9kaXYsCi0JCQkJdHJ1ZSk7Ci0JfQotCi0JLyog SWYgdGFyZ2V0IGNsayBub3Qgc2FtZSBhcyBkcHBjbGsgdGhyZXNob2xkLCBzZXQgdG8gdGFyZ2V0 IGNsb2NrICovCi0JaWYgKGRpc3BjbGtfdG9fZHBwX3RocmVzaG9sZCAhPSBuZXdfY2xvY2tzLT5k aXNwY2xrX2toeikgewotCQlpZiAoY2xrX21nci0+ZnVuY3MtPnNldF9kaXNwY2xrICYmIGNsa19t Z3ItPmZ1bmNzLT5zZXRfZHByZWZjbGspIHsKLQkJCWNsa19tZ3ItPmZ1bmNzLT5zZXRfZGlzcGNs ayhjbGtfbWdyLCBuZXdfY2xvY2tzLT5kaXNwY2xrX2toeik7Ci0JCQljbGtfbWdyLT5mdW5jcy0+ c2V0X2RwcmVmY2xrKGNsa19tZ3IpOwotCQl9IGVsc2UKLQkJCWRjZTExMl9zZXRfY2xvY2soY2xr X21nciwgZGlzcGNsa190b19kcHBfdGhyZXNob2xkKTsKLQl9Ci0KLQljbGtfbWdyLT5jbGtzLmRp c3BjbGtfa2h6ID0gbmV3X2Nsb2Nrcy0+ZGlzcGNsa19raHo7Ci0JY2xrX21nci0+Y2xrcy5kcHBj bGtfa2h6ID0gbmV3X2Nsb2Nrcy0+ZHBwY2xrX2toejsKLQljbGtfbWdyLT5jbGtzLm1heF9zdXBw b3J0ZWRfZHBwY2xrX2toeiA9IG5ld19jbG9ja3MtPm1heF9zdXBwb3J0ZWRfZHBwY2xrX2toejsK LX0KLQotc3RhdGljIGludCBnZXRfYWN0aXZlX2Rpc3BsYXlfY250KAotCQlzdHJ1Y3QgZGMgKmRj LAotCQlzdHJ1Y3QgZGNfc3RhdGUgKmNvbnRleHQpCi17Ci0JaW50IGksIGRpc3BsYXlfY291bnQ7 Ci0KLQlkaXNwbGF5X2NvdW50ID0gMDsKLQlmb3IgKGkgPSAwOyBpIDwgY29udGV4dC0+c3RyZWFt X2NvdW50OyBpKyspIHsKLQkJY29uc3Qgc3RydWN0IGRjX3N0cmVhbV9zdGF0ZSAqc3RyZWFtID0g Y29udGV4dC0+c3RyZWFtc1tpXTsKLQotCQkvKgotCQkgKiBPbmx5IG5vdGlmeSBhY3RpdmUgc3Ry ZWFtIG9yIHZpcnR1YWwgc3RyZWFtLgotCQkgKiBOZWVkIHRvIG5vdGlmeSB2aXJ0dWFsIHN0cmVh bSB0byB3b3JrIGFyb3VuZAotCQkgKiBoZWFkbGVzcyBjYXNlLiBIUEQgZG9lcyBub3QgZmlyZSB3 aGVuIHN5c3RlbSBpcyBpbgotCQkgKiBTMGkyLgotCQkgKi8KLQkJaWYgKCFzdHJlYW0tPmRwbXNf b2ZmIHx8IHN0cmVhbS0+c2lnbmFsID09IFNJR05BTF9UWVBFX1ZJUlRVQUwpCi0JCQlkaXNwbGF5 X2NvdW50Kys7Ci0JfQotCi0JcmV0dXJuIGRpc3BsYXlfY291bnQ7Ci19Ci0KLXN0YXRpYyB2b2lk IGRjbjFfdXBkYXRlX2Nsb2NrcyhzdHJ1Y3QgY2xrX21nciAqY2xrX21nciwKLQkJCXN0cnVjdCBk Y19zdGF0ZSAqY29udGV4dCwKLQkJCWJvb2wgc2FmZV90b19sb3dlcikKLXsKLQlzdHJ1Y3QgZGMg KmRjID0gY2xrX21nci0+Y3R4LT5kYzsKLQlzdHJ1Y3QgZGNfZGVidWdfb3B0aW9ucyAqZGVidWcg PSAmZGMtPmRlYnVnOwotCXN0cnVjdCBkY19jbG9ja3MgKm5ld19jbG9ja3MgPSAmY29udGV4dC0+ YndfY3R4LmJ3LmRjbi5jbGs7Ci0Jc3RydWN0IHBwX3NtdV9mdW5jc19ydiAqcHBfc211ID0gTlVM TDsKLQlib29sIHNlbmRfcmVxdWVzdF90b19pbmNyZWFzZSA9IGZhbHNlOwotCWJvb2wgc2VuZF9y ZXF1ZXN0X3RvX2xvd2VyID0gZmFsc2U7Ci0JaW50IGRpc3BsYXlfY291bnQ7Ci0KLQlib29sIGVu dGVyX2Rpc3BsYXlfb2ZmID0gZmFsc2U7Ci0KLQlkaXNwbGF5X2NvdW50ID0gZ2V0X2FjdGl2ZV9k aXNwbGF5X2NudChkYywgY29udGV4dCk7Ci0JaWYgKGRjLT5yZXNfcG9vbC0+cHBfc211KQotCQlw cF9zbXUgPSAmZGMtPnJlc19wb29sLT5wcF9zbXUtPnJ2X2Z1bmNzOwotCWlmIChkaXNwbGF5X2Nv dW50ID09IDApCi0JCWVudGVyX2Rpc3BsYXlfb2ZmID0gdHJ1ZTsKLQotCWlmIChlbnRlcl9kaXNw bGF5X29mZiA9PSBzYWZlX3RvX2xvd2VyKSB7Ci0JCS8qCi0JCSAqIE5vdGlmeSBTTVUgYWN0aXZl IGRpc3BsYXlzCi0JCSAqIGlmIGZ1bmN0aW9uIHBvaW50ZXIgbm90IHNldCB1cCwgdGhpcyBtZXNz YWdlIGlzCi0JCSAqIHNlbnQgYXMgcGFydCBvZiBwcGxpYl9hcHBseV9kaXNwbGF5X3JlcXVpcmVt ZW50cy4KLQkJICovCi0JCWlmIChwcF9zbXUgJiYgcHBfc211LT5zZXRfZGlzcGxheV9jb3VudCkK LQkJCXBwX3NtdS0+c2V0X2Rpc3BsYXlfY291bnQoJnBwX3NtdS0+cHBfc211LCBkaXNwbGF5X2Nv dW50KTsKLQl9Ci0KLQlpZiAobmV3X2Nsb2Nrcy0+ZGlzcGNsa19raHogPiBjbGtfbWdyLT5jbGtz LmRpc3BjbGtfa2h6Ci0JCQl8fCBuZXdfY2xvY2tzLT5waHljbGtfa2h6ID4gY2xrX21nci0+Y2xr cy5waHljbGtfa2h6Ci0JCQl8fCBuZXdfY2xvY2tzLT5mY2xrX2toeiA+IGNsa19tZ3ItPmNsa3Mu ZmNsa19raHoKLQkJCXx8IG5ld19jbG9ja3MtPmRjZmNsa19raHogPiBjbGtfbWdyLT5jbGtzLmRj ZmNsa19raHopCi0JCXNlbmRfcmVxdWVzdF90b19pbmNyZWFzZSA9IHRydWU7Ci0KLQlpZiAoc2hv dWxkX3NldF9jbG9jayhzYWZlX3RvX2xvd2VyLCBuZXdfY2xvY2tzLT5waHljbGtfa2h6LCBjbGtf bWdyLT5jbGtzLnBoeWNsa19raHopKSB7Ci0JCWNsa19tZ3ItPmNsa3MucGh5Y2xrX2toeiA9IG5l d19jbG9ja3MtPnBoeWNsa19raHo7Ci0JCXNlbmRfcmVxdWVzdF90b19sb3dlciA9IHRydWU7Ci0J fQotCi0JLy8gRiBDbG9jawotCWlmIChkZWJ1Zy0+Zm9yY2VfZmNsa19raHogIT0gMCkKLQkJbmV3 X2Nsb2Nrcy0+ZmNsa19raHogPSBkZWJ1Zy0+Zm9yY2VfZmNsa19raHo7Ci0KLQlpZiAoc2hvdWxk X3NldF9jbG9jayhzYWZlX3RvX2xvd2VyLCBuZXdfY2xvY2tzLT5mY2xrX2toeiwgY2xrX21nci0+ Y2xrcy5mY2xrX2toeikpIHsKLQkJY2xrX21nci0+Y2xrcy5mY2xrX2toeiA9IG5ld19jbG9ja3Mt PmZjbGtfa2h6OwotCQlzZW5kX3JlcXVlc3RfdG9fbG93ZXIgPSB0cnVlOwotCX0KLQotCS8vRENG IENsb2NrCi0JaWYgKHNob3VsZF9zZXRfY2xvY2soc2FmZV90b19sb3dlciwgbmV3X2Nsb2Nrcy0+ ZGNmY2xrX2toeiwgY2xrX21nci0+Y2xrcy5kY2ZjbGtfa2h6KSkgewotCQljbGtfbWdyLT5jbGtz LmRjZmNsa19raHogPSBuZXdfY2xvY2tzLT5kY2ZjbGtfa2h6OwotCQlzZW5kX3JlcXVlc3RfdG9f bG93ZXIgPSB0cnVlOwotCX0KLQotCWlmIChzaG91bGRfc2V0X2Nsb2NrKHNhZmVfdG9fbG93ZXIs Ci0JCQluZXdfY2xvY2tzLT5kY2ZjbGtfZGVlcF9zbGVlcF9raHosIGNsa19tZ3ItPmNsa3MuZGNm Y2xrX2RlZXBfc2xlZXBfa2h6KSkgewotCQljbGtfbWdyLT5jbGtzLmRjZmNsa19kZWVwX3NsZWVw X2toeiA9IG5ld19jbG9ja3MtPmRjZmNsa19kZWVwX3NsZWVwX2toejsKLQkJc2VuZF9yZXF1ZXN0 X3RvX2xvd2VyID0gdHJ1ZTsKLQl9Ci0KLQkvKiBtYWtlIHN1cmUgZGNmIGNsayBpcyBiZWZvcmUg ZHBwIGNsayB0bwotCSAqIG1ha2Ugc3VyZSB3ZSBoYXZlIGVub3VnaCB2b2x0YWdlIHRvIHJ1biBk cHAgY2xrCi0JICovCi0JaWYgKHNlbmRfcmVxdWVzdF90b19pbmNyZWFzZSkgewotCQkvKnVzZSBk Y2ZjbGsgdG8gcmVxdWVzdCB2b2x0YWdlKi8KLQkJaWYgKHBwX3NtdSAmJiBwcF9zbXUtPnNldF9o YXJkX21pbl9mY2xrX2J5X2ZyZXEgJiYKLQkJCQlwcF9zbXUtPnNldF9oYXJkX21pbl9kY2ZjbGtf YnlfZnJlcSAmJgotCQkJCXBwX3NtdS0+c2V0X21pbl9kZWVwX3NsZWVwX2RjZmNsaykgewotCi0J CQlwcF9zbXUtPnNldF9oYXJkX21pbl9mY2xrX2J5X2ZyZXEoJnBwX3NtdS0+cHBfc211LCBuZXdf Y2xvY2tzLT5mY2xrX2toeiAvIDEwMDApOwotCQkJcHBfc211LT5zZXRfaGFyZF9taW5fZGNmY2xr X2J5X2ZyZXEoJnBwX3NtdS0+cHBfc211LCBuZXdfY2xvY2tzLT5kY2ZjbGtfa2h6IC8gMTAwMCk7 Ci0JCQlwcF9zbXUtPnNldF9taW5fZGVlcF9zbGVlcF9kY2ZjbGsoJnBwX3NtdS0+cHBfc211LCAo bmV3X2Nsb2Nrcy0+ZGNmY2xrX2RlZXBfc2xlZXBfa2h6ICsgOTk5KSAvIDEwMDApOwotCQl9Ci0J fQotCi0JLyogZGNuMSBkcHBjbGsgaXMgdGllZCB0byBkaXNwY2xrICovCi0JLyogcHJvZ3JhbSBk aXNwY2xrIG9uID0gYXMgYSB3L2EgZm9yIHNsZWVwIHJlc3VtZSBjbG9jayByYW1waW5nIGlzc3Vl cyAqLwotCWlmIChzaG91bGRfc2V0X2Nsb2NrKHNhZmVfdG9fbG93ZXIsIG5ld19jbG9ja3MtPmRp c3BjbGtfa2h6LCBjbGtfbWdyLT5jbGtzLmRpc3BjbGtfa2h6KQotCQkJfHwgbmV3X2Nsb2Nrcy0+ ZGlzcGNsa19raHogPT0gY2xrX21nci0+Y2xrcy5kaXNwY2xrX2toeikgewotCQlkY24xX3JhbXBf dXBfZGlzcGNsa193aXRoX2RwcChjbGtfbWdyLCBuZXdfY2xvY2tzKTsKLQkJY2xrX21nci0+Y2xr cy5kaXNwY2xrX2toeiA9IG5ld19jbG9ja3MtPmRpc3BjbGtfa2h6OwotCQlzZW5kX3JlcXVlc3Rf dG9fbG93ZXIgPSB0cnVlOwotCX0KLQotCWlmICghc2VuZF9yZXF1ZXN0X3RvX2luY3JlYXNlICYm IHNlbmRfcmVxdWVzdF90b19sb3dlcikgewotCQkvKnVzZSBkY2ZjbGsgdG8gcmVxdWVzdCB2b2x0 YWdlKi8KLQkJaWYgKHBwX3NtdSAmJiBwcF9zbXUtPnNldF9oYXJkX21pbl9mY2xrX2J5X2ZyZXEg JiYKLQkJCQlwcF9zbXUtPnNldF9oYXJkX21pbl9kY2ZjbGtfYnlfZnJlcSAmJgotCQkJCXBwX3Nt dS0+c2V0X21pbl9kZWVwX3NsZWVwX2RjZmNsaykgewotCi0JCQlwcF9zbXUtPnNldF9oYXJkX21p bl9mY2xrX2J5X2ZyZXEoJnBwX3NtdS0+cHBfc211LCBuZXdfY2xvY2tzLT5mY2xrX2toeiAvIDEw MDApOwotCQkJcHBfc211LT5zZXRfaGFyZF9taW5fZGNmY2xrX2J5X2ZyZXEoJnBwX3NtdS0+cHBf c211LCBuZXdfY2xvY2tzLT5kY2ZjbGtfa2h6IC8gMTAwMCk7Ci0JCQlwcF9zbXUtPnNldF9taW5f ZGVlcF9zbGVlcF9kY2ZjbGsoJnBwX3NtdS0+cHBfc211LCAobmV3X2Nsb2Nrcy0+ZGNmY2xrX2Rl ZXBfc2xlZXBfa2h6ICsgOTk5KSAvIDEwMDApOwotCQl9Ci0JfQotfQotCi0jZGVmaW5lIFZCSU9T U01DX01TR19TZXREaXNwY2xrRnJlcSAgICAgICAgICAgMHg0Ci0jZGVmaW5lIFZCSU9TU01DX01T R19TZXREcHJlZmNsa0ZyZXEgICAgICAgICAgMHg1Ci0KLWludCBkY24xMF9zZXRfZGlzcGNsayhz dHJ1Y3QgY2xrX21nciAqY2xrX21ncl9iYXNlLCBpbnQgcmVxdWVzdGVkX2Rpc3BjbGtfa2h6KQot ewotCWludCBhY3R1YWxfZGlzcGNsa19zZXRfa2h6ID0gLTE7Ci0Jc3RydWN0IGRjZV9jbGtfbWdy ICpjbGtfbWdyX2RjZSA9IFRPX0RDRV9DTEtfTUdSKGNsa19tZ3JfYmFzZSk7Ci0KLQkvKiBGaXJz dCBjbGVhciByZXNwb25zZSByZWdpc3RlciAqLwotCS8vZG1fd3JpdGVfcmVnKGN0eCwgbW1NUDFf U01OX0MyUE1TR185MSwgMCk7Ci0JUkVHX1dSSVRFKE1QMV9TTU5fQzJQTVNHXzkxLCAwKTsKLQot CS8qIFNldCB0aGUgcGFyYW1ldGVyIHJlZ2lzdGVyIGZvciB0aGUgU01VIG1lc3NhZ2UsIHVuaXQg aXMgTWh6ICovCi0JLy9kbV93cml0ZV9yZWcoY3R4LCBtbU1QMV9TTU5fQzJQTVNHXzgzLCByZXF1 ZXN0ZWRfZGlzcGNsa19raHogLyAxMDAwKTsKLQlSRUdfV1JJVEUoTVAxX1NNTl9DMlBNU0dfODMs IHJlcXVlc3RlZF9kaXNwY2xrX2toeiAvIDEwMDApOwotCi0JLyogVHJpZ2dlciB0aGUgbWVzc2Fn ZSB0cmFuc2FjdGlvbiBieSB3cml0aW5nIHRoZSBtZXNzYWdlIElEICovCi0JLy9kbV93cml0ZV9y ZWcoY3R4LCBtbU1QMV9TTU5fQzJQTVNHXzY3LCBWQklPU1NNQ19NU0dfU2V0RGlzcGNsa0ZyZXEp OwotCVJFR19XUklURShNUDFfU01OX0MyUE1TR182NywgVkJJT1NTTUNfTVNHX1NldERpc3BjbGtG cmVxKTsKLQotCVJFR19XQUlUKE1QMV9TTU5fQzJQTVNHXzkxLCBDT05URU5ULCAxLCAxMCwgMjAw MDAwKTsKLQotCS8qIEFjdHVhbCBkaXNwY2xrIHNldCBpcyByZXR1cm5lZCBpbiB0aGUgcGFyYW1l dGVyIHJlZ2lzdGVyICovCi0JYWN0dWFsX2Rpc3BjbGtfc2V0X2toeiA9IFJFR19SRUFEKE1QMV9T TU5fQzJQTVNHXzgzKSAqIDEwMDA7Ci0KLQlyZXR1cm4gYWN0dWFsX2Rpc3BjbGtfc2V0X2toejsK LQotfQotCi1pbnQgZGNuMTBfc2V0X2RwcmVmY2xrKHN0cnVjdCBjbGtfbWdyICpjbGtfbWdyX2Jh c2UpCi17Ci0JaW50IGFjdHVhbF9kcHJlZmNsa19zZXRfa2h6ID0gLTE7Ci0Jc3RydWN0IGRjZV9j bGtfbWdyICpjbGtfbWdyX2RjZSA9IFRPX0RDRV9DTEtfTUdSKGNsa19tZ3JfYmFzZSk7Ci0KLQlS RUdfV1JJVEUoTVAxX1NNTl9DMlBNU0dfOTEsIDApOwotCi0JLyogU2V0IHRoZSBwYXJhbWV0ZXIg cmVnaXN0ZXIgZm9yIHRoZSBTTVUgbWVzc2FnZSAqLwotCVJFR19XUklURShNUDFfU01OX0MyUE1T R184MywgY2xrX21ncl9kY2UtPmRwcmVmY2xrX2toeiAvIDEwMDApOwotCi0JLyogVHJpZ2dlciB0 aGUgbWVzc2FnZSB0cmFuc2FjdGlvbiBieSB3cml0aW5nIHRoZSBtZXNzYWdlIElEICovCi0JUkVH X1dSSVRFKE1QMV9TTU5fQzJQTVNHXzY3LCBWQklPU1NNQ19NU0dfU2V0RHByZWZjbGtGcmVxKTsK LQotCS8qIFdhaXQgZm9yIFNNVSByZXNwb25zZSAqLwotCVJFR19XQUlUKE1QMV9TTU5fQzJQTVNH XzkxLCBDT05URU5ULCAxLCAxMCwgMjAwMDAwKTsKLQotCWFjdHVhbF9kcHJlZmNsa19zZXRfa2h6 ID0gUkVHX1JFQUQoTVAxX1NNTl9DMlBNU0dfODMpICogMTAwMDsKLQotCXJldHVybiBhY3R1YWxf ZHByZWZjbGtfc2V0X2toejsKLX0KLQotaW50ICgqc2V0X2Rpc3BjbGspKHN0cnVjdCBwcF9zbXUg KnBwX3NtdSwgaW50IGRpc3BjbGspOwotCi1pbnQgKCpzZXRfZHByZWZjbGspKHN0cnVjdCBwcF9z bXUgKnBwX3NtdSk7Ci0KLXN0YXRpYyBzdHJ1Y3QgY2xrX21ncl9mdW5jcyBkY24xX2Z1bmNzID0g ewotCS5nZXRfZHBfcmVmX2Nsa19mcmVxdWVuY3kgPSBkY2UxMl9nZXRfZHBfcmVmX2ZyZXFfa2h6 LAotCS51cGRhdGVfY2xvY2tzID0gZGNuMV91cGRhdGVfY2xvY2tzCi19Owotc3RydWN0IGNsa19t Z3IgKmRjbjFfY2xrX21ncl9jcmVhdGUoc3RydWN0IGRjX2NvbnRleHQgKmN0eCkKLXsKLQlzdHJ1 Y3QgZGNfZGVidWdfb3B0aW9ucyAqZGVidWcgPSAmY3R4LT5kYy0+ZGVidWc7Ci0Jc3RydWN0IGRj X2Jpb3MgKmJwID0gY3R4LT5kY19iaW9zOwotCXN0cnVjdCBkY19maXJtd2FyZV9pbmZvIGZ3X2lu Zm8gPSB7IHsgMCB9IH07Ci0Jc3RydWN0IGRjZV9jbGtfbWdyICpjbGtfbWdyX2RjZSA9IGt6YWxs b2Moc2l6ZW9mKCpjbGtfbWdyX2RjZSksIEdGUF9LRVJORUwpOwotCi0JaWYgKGNsa19tZ3JfZGNl ID09IE5VTEwpIHsKLQkJQlJFQUtfVE9fREVCVUdHRVIoKTsKLQkJcmV0dXJuIE5VTEw7Ci0JfQot Ci0JY2xrX21ncl9kY2UtPmJhc2UuY3R4ID0gY3R4OwotCWNsa19tZ3JfZGNlLT5iYXNlLmZ1bmNz ID0gJmRjbjFfZnVuY3M7Ci0KLQljbGtfbWdyX2RjZS0+ZGZzX2J5cGFzc19kaXNwX2NsayA9IDA7 Ci0KLQljbGtfbWdyX2RjZS0+ZHByZWZjbGtfc3NfcGVyY2VudGFnZSA9IDA7Ci0JY2xrX21ncl9k Y2UtPmRwcmVmY2xrX3NzX2RpdmlkZXIgPSAxMDAwOwotCWNsa19tZ3JfZGNlLT5zc19vbl9kcHJl ZmNsayA9IGZhbHNlOwotCWNsa19tZ3JfZGNlLT5kcHJlZmNsa19raHogPSA2MDAwMDA7Ci0KLQlp ZiAoYnAtPmludGVncmF0ZWRfaW5mbykKLQkJY2xrX21ncl9kY2UtPmRlbnRpc3RfdmNvX2ZyZXFf a2h6ID0gYnAtPmludGVncmF0ZWRfaW5mby0+ZGVudGlzdF92Y29fZnJlcTsKLQlpZiAoY2xrX21n cl9kY2UtPmRlbnRpc3RfdmNvX2ZyZXFfa2h6ID09IDApIHsKLQkJYnAtPmZ1bmNzLT5nZXRfZmly bXdhcmVfaW5mbyhicCwgJmZ3X2luZm8pOwotCQljbGtfbWdyX2RjZS0+ZGVudGlzdF92Y29fZnJl cV9raHogPSBmd19pbmZvLnNtdV9ncHVfcGxsX291dHB1dF9mcmVxOwotCQlpZiAoY2xrX21ncl9k Y2UtPmRlbnRpc3RfdmNvX2ZyZXFfa2h6ID09IDApCi0JCQljbGtfbWdyX2RjZS0+ZGVudGlzdF92 Y29fZnJlcV9raHogPSAzNjAwMDAwOwotCX0KLQotCWlmICghZGVidWctPmRpc2FibGVfZGZzX2J5 cGFzcyAmJiBicC0+aW50ZWdyYXRlZF9pbmZvKQotCQlpZiAoYnAtPmludGVncmF0ZWRfaW5mby0+ Z3B1X2NhcF9pbmZvICYgREZTX0JZUEFTU19FTkFCTEUpCi0JCQljbGtfbWdyX2RjZS0+ZGZzX2J5 cGFzc19lbmFibGVkID0gdHJ1ZTsKLQotCWRjZV9jbG9ja19yZWFkX3NzX2luZm8oY2xrX21ncl9k Y2UpOwotCi0JcmV0dXJuICZjbGtfbWdyX2RjZS0+YmFzZTsKLX0KLQotCmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvZGNuMTAvZGNuMTBfY2xrX21nci5oIGIvZHJp dmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2RjbjEwL2RjbjEwX2Nsa19tZ3IuaApkZWxldGVk IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTcwMDdjZi4uMDAwMDAwMAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vYW1kL2Rpc3BsYXkvZGMvZGNuMTAvZGNuMTBfY2xrX21nci5oCisrKyAvZGV2L251bGwK QEAgLTEsMzkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAyMDE4IEFkdmFuY2VkIE1pY3JvIERl dmljZXMsIEluYy4KLSAqCi0gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9m IGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQotICogY29weSBvZiB0aGlzIHNvZnR3 YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwK LSAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGlu ZyB3aXRob3V0IGxpbWl0YXRpb24KLSAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnks IG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAotICogYW5kL29yIHNlbGwg Y29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhl Ci0gKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxv d2luZyBjb25kaXRpb25zOgotICoKLSAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0 aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCi0gKiBhbGwgY29waWVz IG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KLSAqCi0gKiBUSEUgU09G VFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwg RVhQUkVTUyBPUgotICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUg V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCi0gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM QVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKLSAqIFRI RSBDT1BZUklHSFQgSE9MREVSKFMpIE9SIEFVVEhPUihTKSBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJ TSwgREFNQUdFUyBPUgotICogT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBP RiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsCi0gKiBBUklTSU5HIEZST00sIE9VVCBPRiBP UiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IKLSAqIE9USEVS IERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KLSAqCi0gKiBBdXRob3JzOiBBTUQKLSAqCi0gKi8K LQotI2lmbmRlZiBfX0RDTjEwX0NMS19NR1JfSF9fCi0jZGVmaW5lIF9fRENOMTBfQ0xLX01HUl9I X18KLQotI2luY2x1ZGUgIi4uL2RjZS9kY2VfY2xrX21nci5oIgotCi1zdHJ1Y3QgY2xrX2J5cGFz cyB7Ci0JdWludDMyX3QgZGNmY2xrX2J5cGFzczsKLQl1aW50MzJfdCBkaXNwY2xrX3B5cGFzczsK LQl1aW50MzJfdCBkcHJlZmNsa19ieXBhc3M7Ci19OwotCi1zdHJ1Y3QgY2xrX21nciAqZGNuMV9j bGtfbWdyX2NyZWF0ZShzdHJ1Y3QgZGNfY29udGV4dCAqY3R4KTsKLQotI2VuZGlmIC8vX19EQ04x MF9DTEtfTUdSX0hfXwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2Rj L2RjbjEwL2RjbjEwX2h3X3NlcXVlbmNlci5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5 L2RjL2RjbjEwL2RjbjEwX2h3X3NlcXVlbmNlci5jCmluZGV4IDY2YmIwZTcuLjdlZTNjNjAgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9kY24xMC9kY24xMF9od19z ZXF1ZW5jZXIuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvZGNuMTAvZGNu MTBfaHdfc2VxdWVuY2VyLmMKQEAgLTQ1LDYgKzQ1LDggQEAKICNpbmNsdWRlICJkY24xMF9jbV9j b21tb24uaCIKICNpbmNsdWRlICJkY19saW5rX2RwLmgiCiAjaW5jbHVkZSAiZGNjZy5oIgorI2lu Y2x1ZGUgImNsa19tZ3IuaCIKKwogCiAjZGVmaW5lIERDX0xPR0dFUl9JTklUKGxvZ2dlcikKIApA QCAtMTE1OCw3ICsxMTYwLDcgQEAgc3RhdGljIHZvaWQgZGNuMTBfaW5pdF9odyhzdHJ1Y3QgZGMg KmRjKQogCiAJZW5hYmxlX3Bvd2VyX2dhdGluZ19wbGFuZShkYy0+aHdzZXEsIHRydWUpOwogCi0J bWVtc2V0KCZkYy0+cmVzX3Bvb2wtPmNsa19tZ3ItPmNsa3MsIDAsIHNpemVvZihkYy0+cmVzX3Bv b2wtPmNsa19tZ3ItPmNsa3MpKTsKKwltZW1zZXQoJmRjLT5jbGtfbWdyLT5jbGtzLCAwLCBzaXpl b2YoZGMtPmNsa19tZ3ItPmNsa3MpKTsKIH0KIAogc3RhdGljIHZvaWQgZGNuMTBfcmVzZXRfaHdf Y3R4X3dyYXAoCkBAIC0yMDcwLDcgKzIwNzIsNyBAQCB2b2lkIHVwZGF0ZV9kY2h1YnBfZHBwKAog CSAqLwogCWlmIChwbGFuZV9zdGF0ZS0+dXBkYXRlX2ZsYWdzLmJpdHMuZnVsbF91cGRhdGUpIHsK IAkJYm9vbCBzaG91bGRfZGl2aWRlZF9ieV8yID0gY29udGV4dC0+YndfY3R4LmJ3LmRjbi5jbGsu ZHBwY2xrX2toeiA8PQotCQkJCWRjLT5yZXNfcG9vbC0+Y2xrX21nci0+Y2xrcy5kaXNwY2xrX2to eiAvIDI7CisJCQkJZGMtPmNsa19tZ3ItPmNsa3MuZGlzcGNsa19raHogLyAyOwogCiAJCWRwcC0+ ZnVuY3MtPmRwcF9kcHBjbGtfY29udHJvbCgKIAkJCQlkcHAsCkBAIC0yMDgzLDkgKzIwODUsOSBA QCB2b2lkIHVwZGF0ZV9kY2h1YnBfZHBwKAogCQkJCQlkcHAtPmluc3QsCiAJCQkJCXBpcGVfY3R4 LT5wbGFuZV9yZXMuYncuZHBwY2xrX2toeik7CiAJCWVsc2UKLQkJCWRjLT5yZXNfcG9vbC0+Y2xr X21nci0+Y2xrcy5kcHBjbGtfa2h6ID0gc2hvdWxkX2RpdmlkZWRfYnlfMiA/Ci0JCQkJCQlkYy0+ cmVzX3Bvb2wtPmNsa19tZ3ItPmNsa3MuZGlzcGNsa19raHogLyAyIDoKLQkJCQkJCQlkYy0+cmVz X3Bvb2wtPmNsa19tZ3ItPmNsa3MuZGlzcGNsa19raHo7CisJCQlkYy0+Y2xrX21nci0+Y2xrcy5k cHBjbGtfa2h6ID0gc2hvdWxkX2RpdmlkZWRfYnlfMiA/CisJCQkJCQlkYy0+Y2xrX21nci0+Y2xr cy5kaXNwY2xrX2toeiAvIDIgOgorCQkJCQkJCWRjLT5jbGtfbWdyLT5jbGtzLmRpc3BjbGtfa2h6 OwogCX0KIAogCS8qIFRPRE86IE5lZWQgaW5wdXQgcGFyYW1ldGVyIHRvIHRlbGwgY3VycmVudCBE Q0hVQiBwaXBlIHRpZSB0byB3aGljaCBPVEcKQEAgLTI0NDgsOCArMjQ1MCw4IEBAIHN0YXRpYyB2 b2lkIGRjbjEwX3ByZXBhcmVfYmFuZHdpZHRoKAogCQlpZiAoY29udGV4dC0+c3RyZWFtX2NvdW50 ID09IDApCiAJCQljb250ZXh0LT5id19jdHguYncuZGNuLmNsay5waHljbGtfa2h6ID0gMDsKIAot CQlkYy0+cmVzX3Bvb2wtPmNsa19tZ3ItPmZ1bmNzLT51cGRhdGVfY2xvY2tzKAotCQkJCWRjLT5y ZXNfcG9vbC0+Y2xrX21nciwKKwkJZGMtPmNsa19tZ3ItPmZ1bmNzLT51cGRhdGVfY2xvY2tzKAor CQkJCWRjLT5jbGtfbWdyLAogCQkJCWNvbnRleHQsCiAJCQkJZmFsc2UpOwogCX0KQEAgLTI0ODAs OCArMjQ4Miw4IEBAIHN0YXRpYyB2b2lkIGRjbjEwX29wdGltaXplX2JhbmR3aWR0aCgKIAkJaWYg KGNvbnRleHQtPnN0cmVhbV9jb3VudCA9PSAwKQogCQkJY29udGV4dC0+YndfY3R4LmJ3LmRjbi5j bGsucGh5Y2xrX2toeiA9IDA7CiAKLQkJZGMtPnJlc19wb29sLT5jbGtfbWdyLT5mdW5jcy0+dXBk YXRlX2Nsb2NrcygKLQkJCQlkYy0+cmVzX3Bvb2wtPmNsa19tZ3IsCisJCWRjLT5jbGtfbWdyLT5m dW5jcy0+dXBkYXRlX2Nsb2NrcygKKwkJCQlkYy0+Y2xrX21nciwKIAkJCQljb250ZXh0LAogCQkJ CXRydWUpOwogCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9k Y24xMC9kY24xMF9od19zZXF1ZW5jZXJfZGVidWcuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlz cGxheS9kYy9kY24xMC9kY24xMF9od19zZXF1ZW5jZXJfZGVidWcuYwppbmRleCA5OTE2MjJkLi42 ZTQ3NDQ0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvZGNuMTAv ZGNuMTBfaHdfc2VxdWVuY2VyX2RlYnVnLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNw bGF5L2RjL2RjbjEwL2RjbjEwX2h3X3NlcXVlbmNlcl9kZWJ1Zy5jCkBAIC00Myw3ICs0Myw3IEBA CiAjaW5jbHVkZSAiZGNuMTBfaHVicC5oIgogI2luY2x1ZGUgImRjbjEwX2h1YmJ1Yi5oIgogI2lu Y2x1ZGUgImRjbjEwX2NtX2NvbW1vbi5oIgotI2luY2x1ZGUgImRjbjEwX2Nsa19tZ3IuaCIKKyNp bmNsdWRlICJjbGtfbWdyLmgiCiAKIHN0YXRpYyB1bnNpZ25lZCBpbnQgc25wcmludGZfY291bnQo Y2hhciAqcEJ1ZiwgdW5zaWduZWQgaW50IGJ1ZlNpemUsIGNoYXIgKmZtdCwgLi4uKQogewpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2RjbjEwL2RjbjEwX3Jlc291 cmNlLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvZGNuMTAvZGNuMTBfcmVzb3Vy Y2UuYwppbmRleCBiZmRkZDUxLi5mNjAwNGJjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v YW1kL2Rpc3BsYXkvZGMvZGNuMTAvZGNuMTBfcmVzb3VyY2UuYworKysgYi9kcml2ZXJzL2dwdS9k cm0vYW1kL2Rpc3BsYXkvZGMvZGNuMTAvZGNuMTBfcmVzb3VyY2UuYwpAQCAtMzksNyArMzksNiBA QAogI2luY2x1ZGUgImRjbjEwX29wcC5oIgogI2luY2x1ZGUgImRjbjEwX2xpbmtfZW5jb2Rlci5o IgogI2luY2x1ZGUgImRjbjEwX3N0cmVhbV9lbmNvZGVyLmgiCi0jaW5jbHVkZSAiZGNuMTBfY2xr X21nci5oIgogI2luY2x1ZGUgImRjZS9kY2VfY2xvY2tfc291cmNlLmgiCiAjaW5jbHVkZSAiZGNl L2RjZV9hdWRpby5oIgogI2luY2x1ZGUgImRjZS9kY2VfaHdzZXEuaCIKQEAgLTE5OSw2ICsxOTgs NyBAQCBlbnVtIGRjbjEwX2Nsa19zcmNfYXJyYXlfaWQgewogI2RlZmluZSBNTUhVQl9TUihyZWdf bmFtZSlcCiAJCS5yZWdfbmFtZSA9IE1NSFVCX0JBU0UobW0gIyMgcmVnX25hbWUgIyMgX0JBU0Vf SURYKSArICBcCiAJCQkJCW1tICMjIHJlZ19uYW1lCisKIC8qIG1hY3JvcyB0byBleHBlbmQgcmVn aXN0ZXIgbGlzdCBtYWNybyBkZWZpbmVkIGluIEhXIG9iamVjdCBoZWFkZXIgZmlsZQogICogZW5k ICoqKioqKioqKioqKioqKioqKioqKi8KIApAQCAtNDg5LDI3ICs0ODksNiBAQCBzdGF0aWMgY29u c3Qgc3RydWN0IGRjZTExMF9jbGtfc3JjX21hc2sgY3NfbWFzayA9IHsKIAkJQ1NfQ09NTU9OX01B U0tfU0hfTElTVF9EQ04xXzAoX01BU0spCiB9OwogCi0KLSNkZWZpbmUgbW1NUDFfU01OX0MyUE1T R185MSAgICAgICAgICAgIDB4MTYyOUIKLSNkZWZpbmUgbW1NUDFfU01OX0MyUE1TR184MyAgICAg ICAgICAgIDB4MTYyOTMKLSNkZWZpbmUgbW1NUDFfU01OX0MyUE1TR182NyAgICAgICAgICAgIDB4 MTYyODMKLQotI2RlZmluZSBNUDFfU01OX0MyUE1TR185MV9fQ09OVEVOVF9NQVNLICAgICAgICAg ICAgICAgICAgICAweGZmZmZmZmZmTAotI2RlZmluZSBNUDFfU01OX0MyUE1TR184M19fQ09OVEVO VF9NQVNLICAgICAgICAgICAgICAgICAgICAweGZmZmZmZmZmTAotI2RlZmluZSBNUDFfU01OX0My UE1TR182N19fQ09OVEVOVF9NQVNLICAgICAgICAgICAgICAgICAgICAweGZmZmZmZmZmTAotI2Rl ZmluZQlNUDFfU01OX0MyUE1TR185MV9fQ09OVEVOVF9fU0hJRlQgICAgICAgICAgICAgICAgICAw eDAwMDAwMDAwCi0jZGVmaW5lCU1QMV9TTU5fQzJQTVNHXzgzX19DT05URU5UX19TSElGVCAgICAg ICAgICAgICAgICAgIDB4MDAwMDAwMDAKLSNkZWZpbmUJTVAxX1NNTl9DMlBNU0dfNjdfX0NPTlRF TlRfX1NISUZUICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMAotCi0KLXN0YXRpYyBjb25zdCBz dHJ1Y3QgY2xrX21ncl9zaGlmdCBjbGtfbWdyX3NoaWZ0ID0gewotCQlDTEtfTUFTS19TSF9MSVNU X1JWMShfX1NISUZUKQotfTsKLQotc3RhdGljIGNvbnN0IHN0cnVjdCBjbGtfbWdyX21hc2sgY2xr X21ncl9tYXNrID0gewotCQlDTEtfTUFTS19TSF9MSVNUX1JWMShfTUFTSykKLX07Ci0KIHN0YXRp YyBjb25zdCBzdHJ1Y3QgcmVzb3VyY2VfY2FwcyByZXNfY2FwID0gewogCQkubnVtX3RpbWluZ19n ZW5lcmF0b3IgPSA0LAogCQkubnVtX29wcCA9IDQsCkBAIC05ODAsOSArOTU5LDYgQEAgc3RhdGlj IHZvaWQgZGVzdHJ1Y3Qoc3RydWN0IGRjbjEwX3Jlc291cmNlX3Bvb2wgKnBvb2wpCiAJaWYgKHBv b2wtPmJhc2UuZG1jdSAhPSBOVUxMKQogCQlkY2VfZG1jdV9kZXN0cm95KCZwb29sLT5iYXNlLmRt Y3UpOwogCi0JaWYgKHBvb2wtPmJhc2UuY2xrX21nciAhPSBOVUxMKQotCQlkY2VfY2xrX21ncl9k ZXN0cm95KCZwb29sLT5iYXNlLmNsa19tZ3IpOwotCiAJa2ZyZWUocG9vbC0+YmFzZS5wcF9zbXUp OwogfQogCkBAIC0xNDM2LDEzICsxNDEyLDYgQEAgc3RhdGljIGJvb2wgY29uc3RydWN0KAogCiAJ cG9vbC0+YmFzZS5wcF9zbXUgPSBkY24xMF9wcF9zbXVfY3JlYXRlKGN0eCk7CiAKLQlwb29sLT5i YXNlLmNsa19tZ3IgPSBkY24xX2Nsa19tZ3JfY3JlYXRlKGN0eCk7Ci0JaWYgKHBvb2wtPmJhc2Uu Y2xrX21nciA9PSBOVUxMKSB7Ci0JCWRtX2Vycm9yKCJEQzogZmFpbGVkIHRvIGNyZWF0ZSBkaXNw bGF5IGNsb2NrIVxuIik7Ci0JCUJSRUFLX1RPX0RFQlVHR0VSKCk7Ci0JCWdvdG8gZmFpbDsKLQl9 Ci0KIAlpZiAoIWRjLT5kZWJ1Zy5kaXNhYmxlX3BwbGliX2Nsb2NrX3JlcXVlc3QpCiAJCWRjbl9i d191cGRhdGVfZnJvbV9wcGxpYihkYyk7CiAJZGNuX2J3X3N5bmNfY2FsY3NfYW5kX2RtbChkYyk7 CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvZGNuMTAvcnYxX2Ns a19tZ3IuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9kY24xMC9ydjFfY2xrX21n ci5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRhMjU2YTIKLS0tIC9kZXYv bnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvZGNuMTAvcnYxX2Nsa19t Z3IuYwpAQCAtMCwwICsxLDI4NSBAQAorLyoKKyAqIENvcHlyaWdodCAyMDE4IEFkdmFuY2VkIE1p Y3JvIERldmljZXMsIEluYy4KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBm cmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQorICogY29weSBvZiB0aGlz IHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdh cmUiKSwKKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGlu Y2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBt b2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAorICogYW5kL29y IHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdo b20gdGhlCisgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhl IGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNl IGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCisgKiBhbGwg Y29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKyAqCisgKiBU SEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkg S0lORCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBU TyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBB UlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwK KyAqIFRIRSBDT1BZUklHSFQgSE9MREVSKFMpIE9SIEFVVEhPUihTKSBCRSBMSUFCTEUgRk9SIEFO WSBDTEFJTSwgREFNQUdFUyBPUgorICogT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFD VElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsCisgKiBBUklTSU5HIEZST00sIE9V VCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IKKyAq IE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KKyAqCisgKiBBdXRob3JzOiBBTUQKKyAq CisgKi8KKworI2luY2x1ZGUgImNvcmVfdHlwZXMuaCIKKyNpbmNsdWRlICJjbGtfbWdyX2ludGVy bmFsLmgiCisjaW5jbHVkZSAicnYxX2Nsa19tZ3IuaCIKKyNpbmNsdWRlICJkY2UvZGNlX2Nsa19t Z3IuaCIKKyNpbmNsdWRlICJkY2UvZGNlMTEyX2Nsa19tZ3IuaCIKKyNpbmNsdWRlICJydjFfY2xr X21ncl92Ymlvc19zbXUuaCIKKyNpbmNsdWRlICJydjFfY2xrX21ncl9jbGsuaCIKKworc3RhdGlj IGludCBydjFfZGV0ZXJtaW5lX2RwcGNsa190aHJlc2hvbGQoc3RydWN0IGNsa19tZ3JfaW50ZXJu YWwgKmNsa19tZ3IsIHN0cnVjdCBkY19jbG9ja3MgKm5ld19jbG9ja3MpCit7CisJYm9vbCByZXF1 ZXN0X2RwcF9kaXYgPSBuZXdfY2xvY2tzLT5kaXNwY2xrX2toeiA+IG5ld19jbG9ja3MtPmRwcGNs a19raHo7CisJYm9vbCBkaXNwY2xrX2luY3JlYXNlID0gbmV3X2Nsb2Nrcy0+ZGlzcGNsa19raHog PiBjbGtfbWdyLT5iYXNlLmNsa3MuZGlzcGNsa19raHo7CisJaW50IGRpc3BfY2xrX3RocmVzaG9s ZCA9IG5ld19jbG9ja3MtPm1heF9zdXBwb3J0ZWRfZHBwY2xrX2toejsKKwlib29sIGN1cl9kcHBf ZGl2ID0gY2xrX21nci0+YmFzZS5jbGtzLmRpc3BjbGtfa2h6ID4gY2xrX21nci0+YmFzZS5jbGtz LmRwcGNsa19raHo7CisKKwkvKiBpbmNyZWFzZSBjbG9jaywgbG9va2luZyBmb3IgZGl2IGlzIDAg Zm9yIGN1cnJlbnQsIHJlcXVlc3QgZGl2IGlzIDEqLworCWlmIChkaXNwY2xrX2luY3JlYXNlKSB7 CisJCS8qIGFscmVhZHkgZGl2aWRlZCBieSAyLCBubyBuZWVkIHRvIHJlYWNoIHRhcmdldCBjbGsg d2l0aCAyIHN0ZXBzKi8KKwkJaWYgKGN1cl9kcHBfZGl2KQorCQkJcmV0dXJuIG5ld19jbG9ja3Mt PmRpc3BjbGtfa2h6OworCisJCS8qIHJlcXVlc3QgZGlzcCBjbGsgaXMgbG93ZXIgdGhhbiBtYXhp bXVtIHN1cHBvcnRlZCBkcHAgY2xrLAorCQkgKiBubyBuZWVkIHRvIHJlYWNoIHRhcmdldCBjbGsg d2l0aCB0d28gc3RlcHMuCisJCSAqLworCQlpZiAobmV3X2Nsb2Nrcy0+ZGlzcGNsa19raHogPD0g ZGlzcF9jbGtfdGhyZXNob2xkKQorCQkJcmV0dXJuIG5ld19jbG9ja3MtPmRpc3BjbGtfa2h6Owor CisJCS8qIHRhcmdldCBkcHAgY2xrIG5vdCByZXF1ZXN0IGRpdmlkZWQgYnkgMiwgc3RpbGwgd2l0 aGluIHRocmVzaG9sZCAqLworCQlpZiAoIXJlcXVlc3RfZHBwX2RpdikKKwkJCXJldHVybiBuZXdf Y2xvY2tzLT5kaXNwY2xrX2toejsKKworCX0gZWxzZSB7CisJCS8qIGRlY3JlYXNlIGNsb2NrLCBs b29raW5nIGZvciBjdXJyZW50IGRwcGNsayBkaXZpZGVkIGJ5IDIsCisJCSAqIHJlcXVlc3QgZHBw Y2xrIG5vdCBkaXZpZGVkIGJ5IDIuCisJCSAqLworCisJCS8qIGN1cnJlbnQgZHBwIGNsayBub3Qg ZGl2aWRlZCBieSAyLCBubyBuZWVkIHRvIHJhbXAqLworCQlpZiAoIWN1cl9kcHBfZGl2KQorCQkJ cmV0dXJuIG5ld19jbG9ja3MtPmRpc3BjbGtfa2h6OworCisJCS8qIGN1cnJlbnQgZGlzcCBjbGsg aXMgbG93ZXIgdGhhbiBjdXJyZW50IG1heGltdW0gZHBwIGNsaywKKwkJICogbm8gbmVlZCB0byBy YW1wCisJCSAqLworCQlpZiAoY2xrX21nci0+YmFzZS5jbGtzLmRpc3BjbGtfa2h6IDw9IGRpc3Bf Y2xrX3RocmVzaG9sZCkKKwkJCXJldHVybiBuZXdfY2xvY2tzLT5kaXNwY2xrX2toejsKKworCQkv KiByZXF1ZXN0IGRwcCBjbGsgbmVlZCB0byBiZSBkaXZpZGVkIGJ5IDIgKi8KKwkJaWYgKHJlcXVl c3RfZHBwX2RpdikKKwkJCXJldHVybiBuZXdfY2xvY2tzLT5kaXNwY2xrX2toejsKKwl9CisKKwly ZXR1cm4gZGlzcF9jbGtfdGhyZXNob2xkOworfQorCitzdGF0aWMgdm9pZCByYW1wX3VwX2Rpc3Bj bGtfd2l0aF9kcHAoc3RydWN0IGNsa19tZ3JfaW50ZXJuYWwgKmNsa19tZ3IsIHN0cnVjdCBkYyAq ZGMsIHN0cnVjdCBkY19jbG9ja3MgKm5ld19jbG9ja3MpCit7CisJaW50IGk7CisJaW50IGRpc3Bj bGtfdG9fZHBwX3RocmVzaG9sZCA9IHJ2MV9kZXRlcm1pbmVfZHBwY2xrX3RocmVzaG9sZChjbGtf bWdyLCBuZXdfY2xvY2tzKTsKKwlib29sIHJlcXVlc3RfZHBwX2RpdiA9IG5ld19jbG9ja3MtPmRp c3BjbGtfa2h6ID4gbmV3X2Nsb2Nrcy0+ZHBwY2xrX2toejsKKworCS8qIHNldCBkaXNwIGNsayB0 byBkcHAgY2xrIHRocmVzaG9sZCAqLworCisJY2xrX21nci0+ZnVuY3MtPnNldF9kaXNwY2xrKGNs a19tZ3IsIGRpc3BjbGtfdG9fZHBwX3RocmVzaG9sZCk7CisJY2xrX21nci0+ZnVuY3MtPnNldF9k cHJlZmNsayhjbGtfbWdyKTsKKworCisJLyogdXBkYXRlIHJlcXVlc3QgZHBwIGNsayBkaXZpc2lv biBvcHRpb24gKi8KKwlmb3IgKGkgPSAwOyBpIDwgZGMtPnJlc19wb29sLT5waXBlX2NvdW50OyBp KyspIHsKKwkJc3RydWN0IHBpcGVfY3R4ICpwaXBlX2N0eCA9ICZkYy0+Y3VycmVudF9zdGF0ZS0+ cmVzX2N0eC5waXBlX2N0eFtpXTsKKworCQlpZiAoIXBpcGVfY3R4LT5wbGFuZV9zdGF0ZSkKKwkJ CWNvbnRpbnVlOworCisJCXBpcGVfY3R4LT5wbGFuZV9yZXMuZHBwLT5mdW5jcy0+ZHBwX2RwcGNs a19jb250cm9sKAorCQkJCXBpcGVfY3R4LT5wbGFuZV9yZXMuZHBwLAorCQkJCXJlcXVlc3RfZHBw X2RpdiwKKwkJCQl0cnVlKTsKKwl9CisKKwkvKiBJZiB0YXJnZXQgY2xrIG5vdCBzYW1lIGFzIGRw cGNsayB0aHJlc2hvbGQsIHNldCB0byB0YXJnZXQgY2xvY2sgKi8KKwlpZiAoZGlzcGNsa190b19k cHBfdGhyZXNob2xkICE9IG5ld19jbG9ja3MtPmRpc3BjbGtfa2h6KSB7CisJCWNsa19tZ3ItPmZ1 bmNzLT5zZXRfZGlzcGNsayhjbGtfbWdyLCBuZXdfY2xvY2tzLT5kaXNwY2xrX2toeik7CisJCWNs a19tZ3ItPmZ1bmNzLT5zZXRfZHByZWZjbGsoY2xrX21ncik7CisJfQorCisKKwljbGtfbWdyLT5i YXNlLmNsa3MuZGlzcGNsa19raHogPSBuZXdfY2xvY2tzLT5kaXNwY2xrX2toejsKKwljbGtfbWdy LT5iYXNlLmNsa3MuZHBwY2xrX2toeiA9IG5ld19jbG9ja3MtPmRwcGNsa19raHo7CisJY2xrX21n ci0+YmFzZS5jbGtzLm1heF9zdXBwb3J0ZWRfZHBwY2xrX2toeiA9IG5ld19jbG9ja3MtPm1heF9z dXBwb3J0ZWRfZHBwY2xrX2toejsKK30KKworc3RhdGljIGludCBnZXRfYWN0aXZlX2Rpc3BsYXlf Y250KAorCQlzdHJ1Y3QgZGMgKmRjLAorCQlzdHJ1Y3QgZGNfc3RhdGUgKmNvbnRleHQpCit7CisJ aW50IGksIGRpc3BsYXlfY291bnQ7CisKKwlkaXNwbGF5X2NvdW50ID0gMDsKKwlmb3IgKGkgPSAw OyBpIDwgY29udGV4dC0+c3RyZWFtX2NvdW50OyBpKyspIHsKKwkJY29uc3Qgc3RydWN0IGRjX3N0 cmVhbV9zdGF0ZSAqc3RyZWFtID0gY29udGV4dC0+c3RyZWFtc1tpXTsKKworCQkvKgorCQkgKiBP bmx5IG5vdGlmeSBhY3RpdmUgc3RyZWFtIG9yIHZpcnR1YWwgc3RyZWFtLgorCQkgKiBOZWVkIHRv IG5vdGlmeSB2aXJ0dWFsIHN0cmVhbSB0byB3b3JrIGFyb3VuZAorCQkgKiBoZWFkbGVzcyBjYXNl LiBIUEQgZG9lcyBub3QgZmlyZSB3aGVuIHN5c3RlbSBpcyBpbgorCQkgKiBTMGkyLgorCQkgKi8K KwkJaWYgKCFzdHJlYW0tPmRwbXNfb2ZmIHx8IHN0cmVhbS0+c2lnbmFsID09IFNJR05BTF9UWVBF X1ZJUlRVQUwpCisJCQlkaXNwbGF5X2NvdW50Kys7CisJfQorCisJcmV0dXJuIGRpc3BsYXlfY291 bnQ7Cit9CisKK3N0YXRpYyB2b2lkIHJ2MV91cGRhdGVfY2xvY2tzKHN0cnVjdCBjbGtfbWdyICpj bGtfbWdyX2Jhc2UsCisJCQlzdHJ1Y3QgZGNfc3RhdGUgKmNvbnRleHQsCisJCQlib29sIHNhZmVf dG9fbG93ZXIpCit7CisJc3RydWN0IGNsa19tZ3JfaW50ZXJuYWwgKmNsa19tZ3IgPSBUT19DTEtf TUdSX0lOVEVSTkFMKGNsa19tZ3JfYmFzZSk7CisJc3RydWN0IGRjICpkYyA9IGNsa19tZ3JfYmFz ZS0+Y3R4LT5kYzsKKwlzdHJ1Y3QgZGNfZGVidWdfb3B0aW9ucyAqZGVidWcgPSAmZGMtPmRlYnVn OworCXN0cnVjdCBkY19jbG9ja3MgKm5ld19jbG9ja3MgPSAmY29udGV4dC0+YndfY3R4LmJ3LmRj bi5jbGs7CisJc3RydWN0IHBwX3NtdV9mdW5jc19ydiAqcHBfc211ID0gTlVMTDsKKwlib29sIHNl bmRfcmVxdWVzdF90b19pbmNyZWFzZSA9IGZhbHNlOworCWJvb2wgc2VuZF9yZXF1ZXN0X3RvX2xv d2VyID0gZmFsc2U7CisJaW50IGRpc3BsYXlfY291bnQ7CisKKwlib29sIGVudGVyX2Rpc3BsYXlf b2ZmID0gZmFsc2U7CisKKwlBU1NFUlQoY2xrX21nci0+cHBfc211KTsKKworCXBwX3NtdSA9ICZj bGtfbWdyLT5wcF9zbXUtPnJ2X2Z1bmNzOworCisJZGlzcGxheV9jb3VudCA9IGdldF9hY3RpdmVf ZGlzcGxheV9jbnQoZGMsIGNvbnRleHQpOworCisJaWYgKGRpc3BsYXlfY291bnQgPT0gMCkKKwkJ ZW50ZXJfZGlzcGxheV9vZmYgPSB0cnVlOworCisJaWYgKGVudGVyX2Rpc3BsYXlfb2ZmID09IHNh ZmVfdG9fbG93ZXIpIHsKKwkJLyoKKwkJICogTm90aWZ5IFNNVSBhY3RpdmUgZGlzcGxheXMKKwkJ ICogaWYgZnVuY3Rpb24gcG9pbnRlciBub3Qgc2V0IHVwLCB0aGlzIG1lc3NhZ2UgaXMKKwkJICog c2VudCBhcyBwYXJ0IG9mIHBwbGliX2FwcGx5X2Rpc3BsYXlfcmVxdWlyZW1lbnRzLgorCQkgKi8K KwkJaWYgKHBwX3NtdS0+c2V0X2Rpc3BsYXlfY291bnQpCisJCQlwcF9zbXUtPnNldF9kaXNwbGF5 X2NvdW50KCZwcF9zbXUtPnBwX3NtdSwgZGlzcGxheV9jb3VudCk7CisJfQorCisJaWYgKG5ld19j bG9ja3MtPmRpc3BjbGtfa2h6ID4gY2xrX21ncl9iYXNlLT5jbGtzLmRpc3BjbGtfa2h6CisJCQl8 fCBuZXdfY2xvY2tzLT5waHljbGtfa2h6ID4gY2xrX21ncl9iYXNlLT5jbGtzLnBoeWNsa19raHoK KwkJCXx8IG5ld19jbG9ja3MtPmZjbGtfa2h6ID4gY2xrX21ncl9iYXNlLT5jbGtzLmZjbGtfa2h6 CisJCQl8fCBuZXdfY2xvY2tzLT5kY2ZjbGtfa2h6ID4gY2xrX21ncl9iYXNlLT5jbGtzLmRjZmNs a19raHopCisJCXNlbmRfcmVxdWVzdF90b19pbmNyZWFzZSA9IHRydWU7CisKKwlpZiAoc2hvdWxk X3NldF9jbG9jayhzYWZlX3RvX2xvd2VyLCBuZXdfY2xvY2tzLT5waHljbGtfa2h6LCBjbGtfbWdy X2Jhc2UtPmNsa3MucGh5Y2xrX2toeikpIHsKKwkJY2xrX21ncl9iYXNlLT5jbGtzLnBoeWNsa19r aHogPSBuZXdfY2xvY2tzLT5waHljbGtfa2h6OworCQlzZW5kX3JlcXVlc3RfdG9fbG93ZXIgPSB0 cnVlOworCX0KKworCS8vIEYgQ2xvY2sKKwlpZiAoZGVidWctPmZvcmNlX2ZjbGtfa2h6ICE9IDAp CisJCW5ld19jbG9ja3MtPmZjbGtfa2h6ID0gZGVidWctPmZvcmNlX2ZjbGtfa2h6OworCisJaWYg KHNob3VsZF9zZXRfY2xvY2soc2FmZV90b19sb3dlciwgbmV3X2Nsb2Nrcy0+ZmNsa19raHosIGNs a19tZ3JfYmFzZS0+Y2xrcy5mY2xrX2toeikpIHsKKwkJY2xrX21ncl9iYXNlLT5jbGtzLmZjbGtf a2h6ID0gbmV3X2Nsb2Nrcy0+ZmNsa19raHo7CisJCXNlbmRfcmVxdWVzdF90b19sb3dlciA9IHRy dWU7CisJfQorCisJLy9EQ0YgQ2xvY2sKKwlpZiAoc2hvdWxkX3NldF9jbG9jayhzYWZlX3RvX2xv d2VyLCBuZXdfY2xvY2tzLT5kY2ZjbGtfa2h6LCBjbGtfbWdyX2Jhc2UtPmNsa3MuZGNmY2xrX2to eikpIHsKKwkJY2xrX21ncl9iYXNlLT5jbGtzLmRjZmNsa19raHogPSBuZXdfY2xvY2tzLT5kY2Zj bGtfa2h6OworCQlzZW5kX3JlcXVlc3RfdG9fbG93ZXIgPSB0cnVlOworCX0KKworCWlmIChzaG91 bGRfc2V0X2Nsb2NrKHNhZmVfdG9fbG93ZXIsCisJCQluZXdfY2xvY2tzLT5kY2ZjbGtfZGVlcF9z bGVlcF9raHosIGNsa19tZ3JfYmFzZS0+Y2xrcy5kY2ZjbGtfZGVlcF9zbGVlcF9raHopKSB7CisJ CWNsa19tZ3JfYmFzZS0+Y2xrcy5kY2ZjbGtfZGVlcF9zbGVlcF9raHogPSBuZXdfY2xvY2tzLT5k Y2ZjbGtfZGVlcF9zbGVlcF9raHo7CisJCXNlbmRfcmVxdWVzdF90b19sb3dlciA9IHRydWU7CisJ fQorCisJLyogbWFrZSBzdXJlIGRjZiBjbGsgaXMgYmVmb3JlIGRwcCBjbGsgdG8KKwkgKiBtYWtl IHN1cmUgd2UgaGF2ZSBlbm91Z2ggdm9sdGFnZSB0byBydW4gZHBwIGNsaworCSAqLworCWlmIChz ZW5kX3JlcXVlc3RfdG9faW5jcmVhc2UpIHsKKwkJLyp1c2UgZGNmY2xrIHRvIHJlcXVlc3Qgdm9s dGFnZSovCisJCWlmIChwcF9zbXUtPnNldF9oYXJkX21pbl9mY2xrX2J5X2ZyZXEgJiYKKwkJCQlw cF9zbXUtPnNldF9oYXJkX21pbl9kY2ZjbGtfYnlfZnJlcSAmJgorCQkJCXBwX3NtdS0+c2V0X21p bl9kZWVwX3NsZWVwX2RjZmNsaykgeworCQkJcHBfc211LT5zZXRfaGFyZF9taW5fZmNsa19ieV9m cmVxKCZwcF9zbXUtPnBwX3NtdSwgbmV3X2Nsb2Nrcy0+ZmNsa19raHogLyAxMDAwKTsKKwkJCXBw X3NtdS0+c2V0X2hhcmRfbWluX2RjZmNsa19ieV9mcmVxKCZwcF9zbXUtPnBwX3NtdSwgbmV3X2Ns b2Nrcy0+ZGNmY2xrX2toeiAvIDEwMDApOworCQkJcHBfc211LT5zZXRfbWluX2RlZXBfc2xlZXBf ZGNmY2xrKCZwcF9zbXUtPnBwX3NtdSwgKG5ld19jbG9ja3MtPmRjZmNsa19kZWVwX3NsZWVwX2to eiArIDk5OSkgLyAxMDAwKTsKKwkJfQorCX0KKworCS8qIGRjbjEgZHBwY2xrIGlzIHRpZWQgdG8g ZGlzcGNsayAqLworCS8qIHByb2dyYW0gZGlzcGNsayBvbiA9IGFzIGEgdy9hIGZvciBzbGVlcCBy ZXN1bWUgY2xvY2sgcmFtcGluZyBpc3N1ZXMgKi8KKwlpZiAoc2hvdWxkX3NldF9jbG9jayhzYWZl X3RvX2xvd2VyLCBuZXdfY2xvY2tzLT5kaXNwY2xrX2toeiwgY2xrX21ncl9iYXNlLT5jbGtzLmRp c3BjbGtfa2h6KQorCQkJfHwgbmV3X2Nsb2Nrcy0+ZGlzcGNsa19raHogPT0gY2xrX21ncl9iYXNl LT5jbGtzLmRpc3BjbGtfa2h6KSB7CisJCXJhbXBfdXBfZGlzcGNsa193aXRoX2RwcChjbGtfbWdy LCBkYywgbmV3X2Nsb2Nrcyk7CisJCWNsa19tZ3JfYmFzZS0+Y2xrcy5kaXNwY2xrX2toeiA9IG5l d19jbG9ja3MtPmRpc3BjbGtfa2h6OworCQlzZW5kX3JlcXVlc3RfdG9fbG93ZXIgPSB0cnVlOwor CX0KKworCWlmICghc2VuZF9yZXF1ZXN0X3RvX2luY3JlYXNlICYmIHNlbmRfcmVxdWVzdF90b19s b3dlcikgeworCQkvKnVzZSBkY2ZjbGsgdG8gcmVxdWVzdCB2b2x0YWdlKi8KKwkJaWYgKHBwX3Nt dS0+c2V0X2hhcmRfbWluX2ZjbGtfYnlfZnJlcSAmJgorCQkJCXBwX3NtdS0+c2V0X2hhcmRfbWlu X2RjZmNsa19ieV9mcmVxICYmCisJCQkJcHBfc211LT5zZXRfbWluX2RlZXBfc2xlZXBfZGNmY2xr KSB7CisJCQlwcF9zbXUtPnNldF9oYXJkX21pbl9mY2xrX2J5X2ZyZXEoJnBwX3NtdS0+cHBfc211 LCBuZXdfY2xvY2tzLT5mY2xrX2toeiAvIDEwMDApOworCQkJcHBfc211LT5zZXRfaGFyZF9taW5f ZGNmY2xrX2J5X2ZyZXEoJnBwX3NtdS0+cHBfc211LCBuZXdfY2xvY2tzLT5kY2ZjbGtfa2h6IC8g MTAwMCk7CisJCQlwcF9zbXUtPnNldF9taW5fZGVlcF9zbGVlcF9kY2ZjbGsoJnBwX3NtdS0+cHBf c211LCAobmV3X2Nsb2Nrcy0+ZGNmY2xrX2RlZXBfc2xlZXBfa2h6ICsgOTk5KSAvIDEwMDApOwor CQl9CisJfQorfQorCitzdGF0aWMgc3RydWN0IGNsa19tZ3JfZnVuY3MgcnYxX2Nsa19mdW5jcyA9 IHsKKwkuZ2V0X2RwX3JlZl9jbGtfZnJlcXVlbmN5ID0gZGNlMTJfZ2V0X2RwX3JlZl9mcmVxX2to eiwKKwkudXBkYXRlX2Nsb2NrcyA9IHJ2MV91cGRhdGVfY2xvY2tzLAorfTsKKworc3RhdGljIHN0 cnVjdCBjbGtfbWdyX2ludGVybmFsX2Z1bmNzIHJ2MV9jbGtfaW50ZXJuYWxfZnVuY3MgPSB7CisJ LnNldF9kaXNwY2xrID0gcnYxX3ZiaW9zX3NtdV9zZXRfZGlzcGNsaywKKwkuc2V0X2RwcmVmY2xr ID0gZGNlMTEyX3NldF9kcHJlZmNsaworfTsKKwordm9pZCBydjFfY2xrX21ncl9jb25zdHJ1Y3Qo c3RydWN0IGRjX2NvbnRleHQgKmN0eCwgc3RydWN0IGNsa19tZ3JfaW50ZXJuYWwgKmNsa19tZ3Is IHN0cnVjdCBwcF9zbXVfZnVuY3MgKnBwX3NtdSkKK3sKKwlzdHJ1Y3QgZGNfZGVidWdfb3B0aW9u cyAqZGVidWcgPSAmY3R4LT5kYy0+ZGVidWc7CisJc3RydWN0IGRjX2Jpb3MgKmJwID0gY3R4LT5k Y19iaW9zOworCXN0cnVjdCBkY19maXJtd2FyZV9pbmZvIGZ3X2luZm8gPSB7IHsgMCB9IH07CisK KwljbGtfbWdyLT5iYXNlLmN0eCA9IGN0eDsKKwljbGtfbWdyLT5wcF9zbXUgPSBwcF9zbXU7CisJ Y2xrX21nci0+YmFzZS5mdW5jcyA9ICZydjFfY2xrX2Z1bmNzOworCWNsa19tZ3ItPmZ1bmNzID0g JnJ2MV9jbGtfaW50ZXJuYWxfZnVuY3M7CisKKwljbGtfbWdyLT5kZnNfYnlwYXNzX2Rpc3BfY2xr ID0gMDsKKworCWNsa19tZ3ItPmRwcmVmY2xrX3NzX3BlcmNlbnRhZ2UgPSAwOworCWNsa19tZ3It PmRwcmVmY2xrX3NzX2RpdmlkZXIgPSAxMDAwOworCWNsa19tZ3ItPnNzX29uX2RwcmVmY2xrID0g ZmFsc2U7CisJY2xrX21nci0+YmFzZS5kcHJlZmNsa19raHogPSA2MDAwMDA7CisKKwlpZiAoYnAt PmludGVncmF0ZWRfaW5mbykKKwkJY2xrX21nci0+ZGVudGlzdF92Y29fZnJlcV9raHogPSBicC0+ aW50ZWdyYXRlZF9pbmZvLT5kZW50aXN0X3Zjb19mcmVxOworCWlmIChjbGtfbWdyLT5kZW50aXN0 X3Zjb19mcmVxX2toeiA9PSAwKSB7CisJCWJwLT5mdW5jcy0+Z2V0X2Zpcm13YXJlX2luZm8oYnAs ICZmd19pbmZvKTsKKwkJY2xrX21nci0+ZGVudGlzdF92Y29fZnJlcV9raHogPSBmd19pbmZvLnNt dV9ncHVfcGxsX291dHB1dF9mcmVxOworCQlpZiAoY2xrX21nci0+ZGVudGlzdF92Y29fZnJlcV9r aHogPT0gMCkKKwkJCWNsa19tZ3ItPmRlbnRpc3RfdmNvX2ZyZXFfa2h6ID0gMzYwMDAwMDsKKwl9 CisKKwlpZiAoIWRlYnVnLT5kaXNhYmxlX2Rmc19ieXBhc3MgJiYgYnAtPmludGVncmF0ZWRfaW5m bykKKwkJaWYgKGJwLT5pbnRlZ3JhdGVkX2luZm8tPmdwdV9jYXBfaW5mbyAmIERGU19CWVBBU1Nf RU5BQkxFKQorCQkJY2xrX21nci0+ZGZzX2J5cGFzc19lbmFibGVkID0gdHJ1ZTsKKworCWRjZV9j bG9ja19yZWFkX3NzX2luZm8oY2xrX21ncik7Cit9CisKKwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2FtZC9kaXNwbGF5L2RjL2RjbjEwL3J2MV9jbGtfbWdyLmggYi9kcml2ZXJzL2dwdS9k cm0vYW1kL2Rpc3BsYXkvZGMvZGNuMTAvcnYxX2Nsa19tZ3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwLi4wODA3NDc4Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2FtZC9kaXNwbGF5L2RjL2RjbjEwL3J2MV9jbGtfbWdyLmgKQEAgLTAsMCArMSwzMSBAQAor LyoKKyAqIENvcHlyaWdodCAyMDE4IEFkdmFuY2VkIE1pY3JvIERldmljZXMsIEluYy4KKyAqCisg KiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBl cnNvbiBvYnRhaW5pbmcgYQorICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVk IGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKKyAqIHRvIGRlYWwgaW4gdGhl IFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRp b24KKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBk aXN0cmlidXRlLCBzdWJsaWNlbnNlLAorICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0 d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCisgKiBTb2Z0d2FyZSBpcyBm dXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgor ICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90 aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCisgKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBv cnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQg IkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1Q TElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJD SEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9O SU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKKyAqIFRIRSBDT1BZUklHSFQgSE9MREVS KFMpIE9SIEFVVEhPUihTKSBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUgorICog T1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBP UiBPVEhFUldJU0UsCisgKiBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJ VEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IKKyAqIE9USEVSIERFQUxJTkdTIElOIFRIRSBT T0ZUV0FSRS4KKyAqCisgKiBBdXRob3JzOiBBTUQKKyAqCisgKi8KKworI2lmbmRlZiBfX1JWMV9D TEtfTUdSX0hfXworI2RlZmluZSBfX1JWMV9DTEtfTUdSX0hfXworCit2b2lkIHJ2MV9jbGtfbWdy X2NvbnN0cnVjdChzdHJ1Y3QgZGNfY29udGV4dCAqY3R4LCBzdHJ1Y3QgY2xrX21ncl9pbnRlcm5h bCAqY2xrX21nciwgc3RydWN0IHBwX3NtdV9mdW5jcyAqcHBfc211KTsKKworI2VuZGlmIC8vX19E Q04xMF9DTEtfTUdSX0hfXwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5 L2RjL2RjbjEwL3J2MV9jbGtfbWdyX2Nsay5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5 L2RjL2RjbjEwL3J2MV9jbGtfbWdyX2Nsay5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAuLjg4NzgxNGMKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rp c3BsYXkvZGMvZGNuMTAvcnYxX2Nsa19tZ3JfY2xrLmMKQEAgLTAsMCArMSw3NSBAQAorLyoKKyAq IENvcHlyaWdodCAyMDEyLTE2IEFkdmFuY2VkIE1pY3JvIERldmljZXMsIEluYy4KKyAqCisgKiBQ ZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNv biBvYnRhaW5pbmcgYQorICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRv Y3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKKyAqIHRvIGRlYWwgaW4gdGhlIFNv ZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24K KyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0 cmlidXRlLCBzdWJsaWNlbnNlLAorICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2Fy ZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCisgKiBTb2Z0d2FyZSBpcyBmdXJu aXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoK KyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNl IHNoYWxsIGJlIGluY2x1ZGVkIGluCisgKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRp b25zIG9mIHRoZSBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFT IElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1QTElF RCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFO VEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5G UklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKKyAqIFRIRSBDT1BZUklHSFQgSE9MREVSKFMp IE9SIEFVVEhPUihTKSBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUgorICogT1RI RVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBP VEhFUldJU0UsCisgKiBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEgg VEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IKKyAqIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZU V0FSRS4KKyAqCisgKiBBdXRob3JzOiBBTUQKKyAqCisgKi8KKworI2luY2x1ZGUgInJlZ19oZWxw ZXIuaCIKKyNpbmNsdWRlICJjbGtfbWdyX2ludGVybmFsLmgiCisjaW5jbHVkZSAicnYxX2Nsa19t Z3JfY2xrLmgiCisKKyNpbmNsdWRlICJpcC9EaXNjb3ZlcnkvaHdpZC5oIgorI2luY2x1ZGUgImlw L0Rpc2NvdmVyeS92MS9pcF9vZmZzZXRfMS5oIgorI2luY2x1ZGUgImlwL0NMSy9jbGtfMTBfMF9k ZWZhdWx0LmgiCisjaW5jbHVkZSAiaXAvQ0xLL2Nsa18xMF8wX29mZnNldC5oIgorI2luY2x1ZGUg ImlwL0NMSy9jbGtfMTBfMF9yZWcuaCIKKyNpbmNsdWRlICJpcC9DTEsvY2xrXzEwXzBfc2hfbWFz ay5oIgorCisjaW5jbHVkZSAiZGNlL2RjZV9jbGtfbWdyLmgiCisKKyNkZWZpbmUgQ0xLX1JFRyhy ZWdfbmFtZSwgYmxvY2ssIGluc3QpXAorCUNMS19CQVNFKG1tICMjIGJsb2NrICMjIF8gIyMgaW5z dCAjIyBfICMjIHJlZ19uYW1lICMjIF9CQVNFX0lEWCkgKyBcCisJCQkJCW1tICMjIGJsb2NrICMj IF8gIyMgaW5zdCAjIyBfICMjIHJlZ19uYW1lCisKKyNkZWZpbmUgUkVHKHJlZ19uYW1lKSBcCisJ Q0xLX1JFRyhyZWdfbmFtZSwgQ0xLMCwgMCkKKworCisvKiBPbmx5IHVzZWQgYnkgdGVzdGluZyBm cmFtZXdvcmsqLwordm9pZCBydjFfZHVtcF9jbGtfcmVnaXN0ZXJzKHN0cnVjdCBjbGtfc3RhdGVf cmVnaXN0ZXJzICpyZWdzLCBzdHJ1Y3QgY2xrX2J5cGFzcyAqYnlwYXNzLCBzdHJ1Y3QgY2xrX21n ciAqY2xrX21ncl9iYXNlKQoreworCXN0cnVjdCBjbGtfbWdyX2ludGVybmFsICpjbGtfbWdyID0g VE9fQ0xLX01HUl9JTlRFUk5BTChjbGtfbWdyX2Jhc2UpOworCisJCXJlZ3MtPkNMSzBfQ0xLOF9D VVJSRU5UX0NOVCA9IFJFR19SRUFEKENMSzBfQ0xLOF9DVVJSRU5UX0NOVCkgLyAxMDsgLy9kY2Yg Y2xrCisKKwkJYnlwYXNzLT5kY2ZjbGtfYnlwYXNzID0gUkVHX1JFQUQoQ0xLMF9DTEs4X0JZUEFT U19DTlRMKSAmIDB4MDAwNzsKKwkJaWYgKGJ5cGFzcy0+ZGNmY2xrX2J5cGFzcyA8IDAgfHwgYnlw YXNzLT5kY2ZjbGtfYnlwYXNzID4gNCkKKwkJCWJ5cGFzcy0+ZGNmY2xrX2J5cGFzcyA9IDA7CisK KworCQlyZWdzLT5DTEswX0NMSzhfRFNfQ05UTCA9IFJFR19SRUFEKENMSzBfQ0xLOF9EU19DTlRM KSAvIDEwOwkvL2RjZiBkZWVwIHNsZWVwIGRpdmlkZXIKKworCQlyZWdzLT5DTEswX0NMSzhfQUxM T1dfRFMgPSBSRUdfUkVBRChDTEswX0NMSzhfQUxMT1dfRFMpOyAvL2RjZiBkZWVwIHNsZWVwIGFs bG93CisKKwkJcmVncy0+Q0xLMF9DTEsxMF9DVVJSRU5UX0NOVCA9IFJFR19SRUFEKENMSzBfQ0xL MTBfQ1VSUkVOVF9DTlQpIC8gMTA7IC8vZHByZWYgY2xrCisKKwkJYnlwYXNzLT5kaXNwY2xrX3B5 cGFzcyA9IFJFR19SRUFEKENMSzBfQ0xLMTBfQllQQVNTX0NOVEwpICYgMHgwMDA3OworCQlpZiAo YnlwYXNzLT5kaXNwY2xrX3B5cGFzcyA8IDAgfHwgYnlwYXNzLT5kaXNwY2xrX3B5cGFzcyA+IDQp CisJCQlieXBhc3MtPmRpc3BjbGtfcHlwYXNzID0gMDsKKworCQlyZWdzLT5DTEswX0NMSzExX0NV UlJFTlRfQ05UID0gUkVHX1JFQUQoQ0xLMF9DTEsxMV9DVVJSRU5UX0NOVCkgLyAxMDsgLy9kaXNw IGNsaworCisJCWJ5cGFzcy0+ZHByZWZjbGtfYnlwYXNzID0gUkVHX1JFQUQoQ0xLMF9DTEsxMV9C WVBBU1NfQ05UTCkgJiAweDAwMDc7CisJCWlmIChieXBhc3MtPmRwcmVmY2xrX2J5cGFzcyA8IDAg fHwgYnlwYXNzLT5kcHJlZmNsa19ieXBhc3MgPiA0KQorCQkJYnlwYXNzLT5kcHJlZmNsa19ieXBh c3MgPSAwOworCit9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMv ZGNuMTAvcnYxX2Nsa19tZ3JfY2xrLmggYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMv ZGNuMTAvcnYxX2Nsa19tZ3JfY2xrLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MC4uYjY4ZTM0NQotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxh eS9kYy9kY24xMC9ydjFfY2xrX21ncl9jbGsuaApAQCAtMCwwICsxLDI5IEBACisvKgorICogQ29w eXJpZ2h0IDIwMTggQWR2YW5jZWQgTWljcm8gRGV2aWNlcywgSW5jLgorICoKKyAqIFBlcm1pc3Np b24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFp bmluZyBhCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRh dGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAorICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUg d2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgorICogdGhl IHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUs IHN1YmxpY2Vuc2UsCisgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQg dG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0 byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhl IGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwg YmUgaW5jbHVkZWQgaW4KKyAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2Yg dGhlIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBX SVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNM VURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU WSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1F TlQuICBJTiBOTyBFVkVOVCBTSEFMTAorICogVEhFIENPUFlSSUdIVCBIT0xERVIoUykgT1IgQVVU SE9SKFMpIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SCisgKiBPVEhFUiBMSUFC SUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lT RSwKKyAqIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09G VFdBUkUgT1IgVEhFIFVTRSBPUgorICogT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgor ICoKKyAqIEF1dGhvcnM6IEFNRAorICoKKyAqLworCisjaWZuZGVmIERBTF9EQ19EQ04xMF9SVjFf Q0xLX01HUl9DTEtfSF8KKyNkZWZpbmUgREFMX0RDX0RDTjEwX1JWMV9DTEtfTUdSX0NMS19IXwor CisjZW5kaWYgLyogREFMX0RDX0RDTjEwX1JWMV9DTEtfTUdSX0NMS19IXyAqLwpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2RjbjEwL3J2MV9jbGtfbWdyX3ZiaW9z X3NtdS5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2RjbjEwL3J2MV9jbGtfbWdy X3ZiaW9zX3NtdS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE5NjA4NzAK LS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvZGNuMTAv cnYxX2Nsa19tZ3JfdmJpb3Nfc211LmMKQEAgLTAsMCArMSwxMjQgQEAKKy8qCisgKiBDb3B5cmln aHQgMjAxMi0xNiBBZHZhbmNlZCBNaWNybyBEZXZpY2VzLCBJbmMuCisgKgorICogUGVybWlzc2lv biBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWlu aW5nIGEKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0 aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCisgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3 aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCisgKiB0aGUg cmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwg c3VibGljZW5zZSwKKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0 byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQorICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRv IGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUg YWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBi ZSBpbmNsdWRlZCBpbgorICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0 aGUgU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJ VEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xV RElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ LAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVO VC4gIElOIE5PIEVWRU5UIFNIQUxMCisgKiBUSEUgQ09QWVJJR0hUIEhPTERFUihTKSBPUiBBVVRI T1IoUykgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IKKyAqIE9USEVSIExJQUJJ TElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNF LAorICogQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZU V0FSRSBPUiBUSEUgVVNFIE9SCisgKiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCisg KgorICogQXV0aG9yczogQU1ECisgKgorICovCisKKyNpbmNsdWRlICJjb3JlX3R5cGVzLmgiCisj aW5jbHVkZSAiY2xrX21ncl9pbnRlcm5hbC5oIgorI2luY2x1ZGUgInJlZ19oZWxwZXIuaCIKKwor I2RlZmluZSBNQVhfSU5TVEFOQ0UJNQorI2RlZmluZSBNQVhfU0VHTUVOVAkJNQorCitzdHJ1Y3Qg SVBfQkFTRV9JTlNUQU5DRSB7CisJdW5zaWduZWQgaW50IHNlZ21lbnRbTUFYX1NFR01FTlRdOwor fTsKKworc3RydWN0IElQX0JBU0UgeworCXN0cnVjdCBJUF9CQVNFX0lOU1RBTkNFIGluc3RhbmNl W01BWF9JTlNUQU5DRV07Cit9OworCisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgSVBfQkFTRSBNUDFf QkFTRSAgPSB7IHsgeyB7IDB4MDAwMTYwMDAsIDAsIDAsIDAsIDAgfSB9LAorCQkJCQkJCQkJCQkg eyB7IDAsIDAsIDAsIDAsIDAgfSB9LAorCQkJCQkJCQkJCQkgeyB7IDAsIDAsIDAsIDAsIDAgfSB9 LAorCQkJCQkJCQkJCQkgeyB7IDAsIDAsIDAsIDAsIDAgfSB9LAorCQkJCQkJCQkJCQkgeyB7IDAs IDAsIDAsIDAsIDAgfSB9IH0gfTsKKworI2RlZmluZSBtbU1QMV9TTU5fQzJQTVNHXzkxICAgICAg ICAgICAgMHgyOUIKKyNkZWZpbmUgbW1NUDFfU01OX0MyUE1TR184MyAgICAgICAgICAgIDB4Mjkz CisjZGVmaW5lIG1tTVAxX1NNTl9DMlBNU0dfNjcgICAgICAgICAgICAweDI4MworI2RlZmluZSBt bU1QMV9TTU5fQzJQTVNHXzkxX0JBU0VfSURYICAgMAorI2RlZmluZSBtbU1QMV9TTU5fQzJQTVNH XzgzX0JBU0VfSURYICAgMAorI2RlZmluZSBtbU1QMV9TTU5fQzJQTVNHXzY3X0JBU0VfSURYICAg MAorCisjZGVmaW5lIE1QMV9TTU5fQzJQTVNHXzkxX19DT05URU5UX01BU0sgICAgICAgICAgICAg ICAgICAgIDB4ZmZmZmZmZmZMCisjZGVmaW5lIE1QMV9TTU5fQzJQTVNHXzgzX19DT05URU5UX01B U0sgICAgICAgICAgICAgICAgICAgIDB4ZmZmZmZmZmZMCisjZGVmaW5lIE1QMV9TTU5fQzJQTVNH XzY3X19DT05URU5UX01BU0sgICAgICAgICAgICAgICAgICAgIDB4ZmZmZmZmZmZMCisjZGVmaW5l IE1QMV9TTU5fQzJQTVNHXzkxX19DT05URU5UX19TSElGVCAgICAgICAgICAgICAgICAgIDB4MDAw MDAwMDAKKyNkZWZpbmUgTVAxX1NNTl9DMlBNU0dfODNfX0NPTlRFTlRfX1NISUZUICAgICAgICAg ICAgICAgICAgMHgwMDAwMDAwMAorI2RlZmluZSBNUDFfU01OX0MyUE1TR182N19fQ09OVEVOVF9f U0hJRlQgICAgICAgICAgICAgICAgICAweDAwMDAwMDAwCisKKyNkZWZpbmUgUkVHKHJlZ19uYW1l KSBcCisJKE1QMV9CQVNFLmluc3RhbmNlWzBdLnNlZ21lbnRbbW0gIyMgcmVnX25hbWUgIyMgX0JB U0VfSURYXSArIG1tICMjIHJlZ19uYW1lKQorCisjZGVmaW5lIEZOKHJlZ19uYW1lLCBmaWVsZCkg XAorCUZEKHJlZ19uYW1lIyNfXyMjZmllbGQpCisKKyNkZWZpbmUgVkJJT1NTTUNfTVNHX1NldERp c3BjbGtGcmVxICAgICAgICAgICAweDQKKyNkZWZpbmUgVkJJT1NTTUNfTVNHX1NldERwcmVmY2xr RnJlcSAgICAgICAgICAweDUKKworaW50IHJ2MV92Ymlvc19zbXVfc2V0X2Rpc3BjbGsoc3RydWN0 IGNsa19tZ3JfaW50ZXJuYWwgKmNsa19tZ3IsIGludCByZXF1ZXN0ZWRfZGlzcGNsa19raHopCit7 CisKKwlpbnQgYWN0dWFsX2Rpc3BjbGtfc2V0X2toeiA9IC0xOworCXN0cnVjdCBkYyAqY29yZV9k YyA9IGNsa19tZ3ItPmJhc2UuY3R4LT5kYzsKKwlzdHJ1Y3QgZG1jdSAqZG1jdSA9IGNvcmVfZGMt PnJlc19wb29sLT5kbWN1OworCisJLyogRmlyc3QgY2xlYXIgcmVzcG9uc2UgcmVnaXN0ZXIgKi8K KwkvL2RtX3dyaXRlX3JlZyhjdHgsIG1tTVAxX1NNTl9DMlBNU0dfOTEsIDApOworCVJFR19XUklU RShNUDFfU01OX0MyUE1TR185MSwgMCk7CisKKwkvKiBTZXQgdGhlIHBhcmFtZXRlciByZWdpc3Rl ciBmb3IgdGhlIFNNVSBtZXNzYWdlLCB1bml0IGlzIE1oeiAqLworCS8vZG1fd3JpdGVfcmVnKGN0 eCwgbW1NUDFfU01OX0MyUE1TR184MywgcmVxdWVzdGVkX2Rpc3BjbGtfa2h6IC8gMTAwMCk7CisJ UkVHX1dSSVRFKE1QMV9TTU5fQzJQTVNHXzgzLCByZXF1ZXN0ZWRfZGlzcGNsa19raHogLyAxMDAw KTsKKworCS8qIFRyaWdnZXIgdGhlIG1lc3NhZ2UgdHJhbnNhY3Rpb24gYnkgd3JpdGluZyB0aGUg bWVzc2FnZSBJRCAqLworCS8vZG1fd3JpdGVfcmVnKGN0eCwgbW1NUDFfU01OX0MyUE1TR182Nywg VkJJT1NTTUNfTVNHX1NldERpc3BjbGtGcmVxKTsKKwlSRUdfV1JJVEUoTVAxX1NNTl9DMlBNU0df NjcsIFZCSU9TU01DX01TR19TZXREaXNwY2xrRnJlcSk7CisKKwlSRUdfV0FJVChNUDFfU01OX0My UE1TR185MSwgQ09OVEVOVCwgMSwgMTAsIDIwMDAwMCk7CisKKwkvKiBBY3R1YWwgZGlzcGNsayBz ZXQgaXMgcmV0dXJuZWQgaW4gdGhlIHBhcmFtZXRlciByZWdpc3RlciAqLworCWFjdHVhbF9kaXNw Y2xrX3NldF9raHogPSBSRUdfUkVBRChNUDFfU01OX0MyUE1TR184MykgKiAxMDAwOworCisJaWYg KCFJU19GUEdBX01BWElNVVNfREMoY29yZV9kYy0+Y3R4LT5kY2VfZW52aXJvbm1lbnQpKSB7CisJ CWlmIChkbWN1ICYmIGRtY3UtPmZ1bmNzLT5pc19kbWN1X2luaXRpYWxpemVkKGRtY3UpKSB7CisJ CQlpZiAoY2xrX21nci0+ZGZzX2J5cGFzc19kaXNwX2NsayAhPSBhY3R1YWxfZGlzcGNsa19zZXRf a2h6KQorCQkJCWRtY3UtPmZ1bmNzLT5zZXRfcHNyX3dhaXRfbG9vcChkbWN1LAorCQkJCQkJYWN0 dWFsX2Rpc3BjbGtfc2V0X2toeiAvIDEwMDAgLyA3KTsKKwkJfQorCX0KKworCXJldHVybiBhY3R1 YWxfZGlzcGNsa19zZXRfa2h6OworfQorCitpbnQgcnYxX3ZiaW9zX3NtdV9zZXRfZHByZWZjbGso c3RydWN0IGNsa19tZ3JfaW50ZXJuYWwgKmNsa19tZ3IpCit7CisJaW50IGFjdHVhbF9kcHJlZmNs a19zZXRfa2h6ID0gLTE7CisKKwlSRUdfV1JJVEUoTVAxX1NNTl9DMlBNU0dfOTEsIDApOworCisJ LyogU2V0IHRoZSBwYXJhbWV0ZXIgcmVnaXN0ZXIgZm9yIHRoZSBTTVUgbWVzc2FnZSAqLworCVJF R19XUklURShNUDFfU01OX0MyUE1TR184MywgY2xrX21nci0+YmFzZS5kcHJlZmNsa19raHogLyAx MDAwKTsKKworCS8qIFRyaWdnZXIgdGhlIG1lc3NhZ2UgdHJhbnNhY3Rpb24gYnkgd3JpdGluZyB0 aGUgbWVzc2FnZSBJRCAqLworCVJFR19XUklURShNUDFfU01OX0MyUE1TR182NywgVkJJT1NTTUNf TVNHX1NldERwcmVmY2xrRnJlcSk7CisKKwkvKiBXYWl0IGZvciBTTVUgcmVzcG9uc2UgKi8KKwlS RUdfV0FJVChNUDFfU01OX0MyUE1TR185MSwgQ09OVEVOVCwgMSwgMTAsIDIwMDAwMCk7CisKKwlh Y3R1YWxfZHByZWZjbGtfc2V0X2toeiA9IFJFR19SRUFEKE1QMV9TTU5fQzJQTVNHXzgzKSAqIDEw MDA7CisKKwlyZXR1cm4gYWN0dWFsX2RwcmVmY2xrX3NldF9raHo7Cit9CmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvZGNuMTAvcnYxX2Nsa19tZ3JfdmJpb3Nfc211 LmggYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvZGNuMTAvcnYxX2Nsa19tZ3JfdmJp b3Nfc211LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDgzY2IzMQotLS0g L2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9kY24xMC9ydjFf Y2xrX21ncl92Ymlvc19zbXUuaApAQCAtMCwwICsxLDMyIEBACisvKgorICogQ29weXJpZ2h0IDIw MTggQWR2YW5jZWQgTWljcm8gRGV2aWNlcywgSW5jLgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVy ZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisg KiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxl cyAodGhlICJTb2Z0d2FyZSIpLAorICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCBy ZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgorICogdGhlIHJpZ2h0cyB0 byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vu c2UsCisgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0 IHBlcnNvbnMgdG8gd2hvbSB0aGUKKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywg c3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNv cHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVk ZWQgaW4KKyAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3 YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdB UlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVU IE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJ VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBO TyBFVkVOVCBTSEFMTAorICogVEhFIENPUFlSSUdIVCBIT0xERVIoUykgT1IgQVVUSE9SKFMpIEJF IExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SCisgKiBPVEhFUiBMSUFCSUxJVFksIFdI RVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwKKyAqIEFS SVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1Ig VEhFIFVTRSBPUgorICogT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgorICoKKyAqIEF1 dGhvcnM6IEFNRAorICoKKyAqLworCisjaWZuZGVmIERBTF9EQ19EQ04xMF9SVjFfQ0xLX01HUl9W QklPU19TTVVfSF8KKyNkZWZpbmUgREFMX0RDX0RDTjEwX1JWMV9DTEtfTUdSX1ZCSU9TX1NNVV9I XworCitpbnQgcnYxX3ZiaW9zX3NtdV9zZXRfZGlzcGNsayhzdHJ1Y3QgY2xrX21ncl9pbnRlcm5h bCAqY2xrX21nciwgaW50IHJlcXVlc3RlZF9kaXNwY2xrX2toeik7CitpbnQgcnYxX3ZiaW9zX3Nt dV9zZXRfZHByZWZjbGsoc3RydWN0IGNsa19tZ3JfaW50ZXJuYWwgKmNsa19tZ3IpOworCisjZW5k aWYgLyogREFMX0RDX0RDTjEwX1JWMV9DTEtfTUdSX1ZCSU9TX1NNVV9IXyAqLwpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2RjbjEwL3J2Ml9jbGtfbWdyLmMgYi9k cml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvZGNuMTAvcnYyX2Nsa19tZ3IuYwpuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMmViMmY3Ci0tLSAvZGV2L251bGwKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2RjbjEwL3J2Ml9jbGtfbWdyLmMKQEAgLTAs MCArMSw0MyBAQAorLyoKKyAqIENvcHlyaWdodCAyMDE4IEFkdmFuY2VkIE1pY3JvIERldmljZXMs IEluYy4KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJn ZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQorICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFu ZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKKyAqIHRv IGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRo b3V0IGxpbWl0YXRpb24KKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdl LCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAorICogYW5kL29yIHNlbGwgY29waWVz IG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCisgKiBT b2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBj b25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBl cm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCisgKiBhbGwgY29waWVzIG9yIHN1 YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUg SVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVT UyBPUgorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFO VElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS UE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKKyAqIFRIRSBDT1BZ UklHSFQgSE9MREVSKFMpIE9SIEFVVEhPUihTKSBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFN QUdFUyBPUgorICogT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05U UkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsCisgKiBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBD T05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IKKyAqIE9USEVSIERFQUxJ TkdTIElOIFRIRSBTT0ZUV0FSRS4KKyAqCisgKiBBdXRob3JzOiBBTUQKKyAqCisgKi8KKworI2lu Y2x1ZGUgImNvcmVfdHlwZXMuaCIKKyNpbmNsdWRlICJjbGtfbWdyX2ludGVybmFsLmgiCisjaW5j bHVkZSAicnYxX2Nsa19tZ3IuaCIKKyNpbmNsdWRlICJydjJfY2xrX21nci5oIgorI2luY2x1ZGUg ImRjZS9kY2UxMTJfY2xrX21nci5oIgorCitzdGF0aWMgc3RydWN0IGNsa19tZ3JfaW50ZXJuYWxf ZnVuY3MgcnYyX2Nsa19pbnRlcm5hbF9mdW5jcyA9IHsKKwkuc2V0X2Rpc3BjbGsgPSBkY2UxMTJf c2V0X2Rpc3BjbGssCisJLnNldF9kcHJlZmNsayA9IGRjZTExMl9zZXRfZHByZWZjbGsKK307CisK K3ZvaWQgcnYyX2Nsa19tZ3JfY29uc3RydWN0KHN0cnVjdCBkY19jb250ZXh0ICpjdHgsIHN0cnVj dCBjbGtfbWdyX2ludGVybmFsICpjbGtfbWdyLCBzdHJ1Y3QgcHBfc211X2Z1bmNzICpwcF9zbXUp CisKK3sKKwlydjFfY2xrX21ncl9jb25zdHJ1Y3QoY3R4LCBjbGtfbWdyLCBwcF9zbXUpOworCisJ Y2xrX21nci0+ZnVuY3MgPSAmcnYyX2Nsa19pbnRlcm5hbF9mdW5jczsKK30KZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9kY24xMC9ydjJfY2xrX21nci5oIGIvZHJp dmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2RjbjEwL3J2Ml9jbGtfbWdyLmgKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGMxZjI2YwotLS0gL2Rldi9udWxsCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9kY24xMC9ydjJfY2xrX21nci5oCkBAIC0wLDAg KzEsMzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAxOCBBZHZhbmNlZCBNaWNybyBEZXZpY2VzLCBJ bmMuCisgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2Us IHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQg YXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCisgKiB0byBk ZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91 dCBsaW1pdGF0aW9uCisgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwg cHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKKyAqIGFuZC9vciBzZWxsIGNvcGllcyBv ZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQorICogU29m dHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29u ZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJt aXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgorICogYWxsIGNvcGllcyBvciBzdWJz dGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElT IFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1Mg T1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJ RVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP U0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCisgKiBUSEUgQ09QWVJJ R0hUIEhPTERFUihTKSBPUiBBVVRIT1IoUykgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFH RVMgT1IKKyAqIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJB Q1QsIFRPUlQgT1IgT1RIRVJXSVNFLAorICogQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09O TkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SCisgKiBPVEhFUiBERUFMSU5H UyBJTiBUSEUgU09GVFdBUkUuCisgKgorICogQXV0aG9yczogQU1ECisgKgorICovCisKKyNpZm5k ZWYgX19SVjJfQ0xLX01HUl9IX18KKyNkZWZpbmUgX19SVjJfQ0xLX01HUl9IX18KKwordm9pZCBy djJfY2xrX21ncl9jb25zdHJ1Y3Qoc3RydWN0IGRjX2NvbnRleHQgKmN0eCwgc3RydWN0IGNsa19t Z3JfaW50ZXJuYWwgKmNsa19tZ3IsIHN0cnVjdCBwcF9zbXVfZnVuY3MgKnBwX3NtdSk7CisKKwor I2VuZGlmIC8vX19EQ04xMF9DTEtfTUdSX0hfXwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2FtZC9kaXNwbGF5L2RjL2luYy9jb3JlX3R5cGVzLmggYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rp c3BsYXkvZGMvaW5jL2NvcmVfdHlwZXMuaAppbmRleCA1MzlkMzRkLi44MDcwOWM5IDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvaW5jL2NvcmVfdHlwZXMuaAorKysg Yi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvaW5jL2NvcmVfdHlwZXMuaApAQCAtODIs NyArODIsNiBAQCB2b2lkIGNvcmVfbGlua19kaXNhYmxlX3N0cmVhbShzdHJ1Y3QgcGlwZV9jdHgg KnBpcGVfY3R4LCBpbnQgb3B0aW9uKTsKIAogdm9pZCBjb3JlX2xpbmtfc2V0X2F2bXV0ZShzdHJ1 Y3QgcGlwZV9jdHggKnBpcGVfY3R4LCBib29sIGVuYWJsZSk7CiAvKioqKioqKioqKiBEQUwgQ29y ZSoqKioqKioqKioqKioqKioqKioqKi8KLSNpbmNsdWRlICJody9jbGtfbWdyLmgiCiAjaW5jbHVk ZSAidHJhbnNmb3JtLmgiCiAjaW5jbHVkZSAiZHBwLmgiCiAKQEAgLTE3OCw3ICsxNzcsNiBAQCBz dHJ1Y3QgcmVzb3VyY2VfcG9vbCB7CiAJdW5zaWduZWQgaW50IGF1ZGlvX2NvdW50OwogCXN0cnVj dCBhdWRpb19zdXBwb3J0IGF1ZGlvX3N1cHBvcnQ7CiAKLQlzdHJ1Y3QgY2xrX21nciAqY2xrX21n cjsKIAlzdHJ1Y3QgZGNjZyAqZGNjZzsKIAlzdHJ1Y3QgaXJxX3NlcnZpY2UgKmlycXM7CiAKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9pbmMvZGNuX2NhbGNzLmgg Yi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvaW5jL2Rjbl9jYWxjcy5oCmluZGV4IDI2 M2MwOTYuLjgwNmYzMDQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9k Yy9pbmMvZGNuX2NhbGNzLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2lu Yy9kY25fY2FsY3MuaApAQCAtMzIsNyArMzIsNyBAQAogCiAjaW5jbHVkZSAiYndfZml4ZWQuaCIK ICNpbmNsdWRlICIuLi9kbWwvZGlzcGxheV9tb2RlX2xpYi5oIgotI2luY2x1ZGUgImh3L2Nsa19t Z3IuaCIKKwogCiBzdHJ1Y3QgZGM7CiBzdHJ1Y3QgZGNfc3RhdGU7CmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvaW5jL2h3L2Nsa19tZ3IuaCBiL2RyaXZlcnMvZ3B1 L2RybS9hbWQvZGlzcGxheS9kYy9pbmMvaHcvY2xrX21nci5oCmluZGV4IGYzZmQzZjguLjBhMjM0 NmEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9pbmMvaHcvY2xr X21nci5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9pbmMvaHcvY2xrX21n ci5oCkBAIC0yNiwxNyArMjYsMTggQEAKICNpZm5kZWYgX19EQUxfQ0xLX01HUl9IX18KICNkZWZp bmUgX19EQUxfQ0xLX01HUl9IX18KIAotI2luY2x1ZGUgImRtX3NlcnZpY2VzX3R5cGVzLmgiCiAj aW5jbHVkZSAiZGMuaCIKIAotc3RydWN0IGNsa19tZ3IgewotCXN0cnVjdCBkY19jb250ZXh0ICpj dHg7Ci0Jc3RydWN0IGNsa19tZ3JfZnVuY3MgKmZ1bmNzOwotCi0Jc3RydWN0IGRjX2Nsb2NrcyBj bGtzOwotfTsKKy8qIFB1YmxpYyBpbnRlcmZhY2VzICovCiAKIHN0cnVjdCBjbGtfbWdyX2Z1bmNz IHsKKwkvKgorCSAqIFRoaXMgZnVuY3Rpb24gc2hvdWxkIHNldCBuZXcgY2xvY2tzIGJhc2VkIG9u IHRoZSBpbnB1dCAic2FmZV90b19sb3dlciIuCisJICogSWYgc2FmZV90b19sb3dlciA9PSBmYWxz ZSwgdGhlbiBvbmx5IGNsb2NrcyB3aGljaCBhcmUgdG8gYmUgaW5jcmVhc2VkCisJICogc2hvdWxk IGNoYW5nZWQuCisJICogSWYgc2FmZV90b19sb3dlciA9PSB0cnVlLCB0aGVuIG9ubHkgY2xvY2tz IHdoaWNoIGFyZSB0byBiZSBkZWNyZWFzZWQKKwkgKiBzaG91bGQgYmUgY2hhbmdlZC4KKwkgKi8K IAl2b2lkICgqdXBkYXRlX2Nsb2Nrcykoc3RydWN0IGNsa19tZ3IgKmNsa19tZ3IsCiAJCQlzdHJ1 Y3QgZGNfc3RhdGUgKmNvbnRleHQsCiAJCQlib29sIHNhZmVfdG9fbG93ZXIpOwpAQCAtNDUsMTEg KzQ2LDIyIEBAIHN0cnVjdCBjbGtfbWdyX2Z1bmNzIHsKIAogCXZvaWQgKCppbml0X2Nsb2Nrcyko c3RydWN0IGNsa19tZ3IgKmNsa19tZ3IpOwogCi0JLyogUmV0dXJucyBhY3R1YWwgY2xrIHRoYXQn cyBzZXQgKi8KLQlpbnQgKCpzZXRfZGlzcGNsaykoc3RydWN0IGNsa19tZ3IgKmNsa19tZ3IsIGlu dCByZXF1ZXN0ZWRfZGlzcGNsa19raHopOwotCWludCAoKnNldF9kcHJlZmNsaykoc3RydWN0IGNs a19tZ3IgKmNsa19tZ3IpOwogfTsKIAordm9pZCBkY2UxMjFfY2xvY2tfcGF0Y2hfeGdtaV9zc19p bmZvKHN0cnVjdCBjbGtfbWdyICpjbGtfbWdyX2Jhc2UpOworCitzdHJ1Y3QgY2xrX21nciB7CisJ c3RydWN0IGRjX2NvbnRleHQgKmN0eDsKKwlzdHJ1Y3QgY2xrX21ncl9mdW5jcyAqZnVuY3M7CisJ c3RydWN0IGRjX2Nsb2NrcyBjbGtzOworCWludCBkcHJlZmNsa19raHo7IC8vIFVzZWQgYnkgcHJv Z3JhbSBwaXhlbCBjbG9jayBpbiBjbG9jayBzb3VyY2UgZnVuY3MsIG5lZWQgdG8gZmlndXJlb3V0 IHdoZXJlIHRoaXMgZ29lcworfTsKKworLyogZm9yd2FyZCBkZWNsYXJhdGlvbnMgKi8KK3N0cnVj dCBkY2NnOworCitzdHJ1Y3QgY2xrX21nciAqZGNfY2xrX21ncl9jcmVhdGUoc3RydWN0IGRjX2Nv bnRleHQgKmN0eCwgc3RydWN0IHBwX3NtdV9mdW5jcyAqcHBfc211LCBzdHJ1Y3QgZGNjZyAqZGNj Zyk7CiAKK3ZvaWQgZGNfZGVzdHJveV9jbGtfbWdyKHN0cnVjdCBjbGtfbWdyICpjbGtfbWdyKTsK IAogI2VuZGlmIC8qIF9fREFMX0NMS19NR1JfSF9fICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vYW1kL2Rpc3BsYXkvZGMvaW5jL2h3L2Nsa19tZ3JfaW50ZXJuYWwuaCBiL2RyaXZlcnMv Z3B1L2RybS9hbWQvZGlzcGxheS9kYy9pbmMvaHcvY2xrX21ncl9pbnRlcm5hbC5oCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQyZjcyYzQKLS0tIC9kZXYvbnVsbAorKysgYi9k cml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvaW5jL2h3L2Nsa19tZ3JfaW50ZXJuYWwuaApA QCAtMCwwICsxLDIwOCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDE4IEFkdmFuY2VkIE1pY3JvIERl dmljZXMsIEluYy4KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9m IGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQorICogY29weSBvZiB0aGlzIHNvZnR3 YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwK KyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGlu ZyB3aXRob3V0IGxpbWl0YXRpb24KKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnks IG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAorICogYW5kL29yIHNlbGwg Y29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhl CisgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxv d2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0 aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCisgKiBhbGwgY29waWVz IG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09G VFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwg RVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUg V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM QVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKKyAqIFRI RSBDT1BZUklHSFQgSE9MREVSKFMpIE9SIEFVVEhPUihTKSBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJ TSwgREFNQUdFUyBPUgorICogT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBP RiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsCisgKiBBUklTSU5HIEZST00sIE9VVCBPRiBP UiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IKKyAqIE9USEVS IERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KKyAqCisgKiBBdXRob3JzOiBBTUQKKyAqCisgKi8K KworI2lmbmRlZiBfX0RBTF9DTEtfTUdSX0lOVEVSTkFMX0hfXworI2RlZmluZSBfX0RBTF9DTEtf TUdSX0lOVEVSTkFMX0hfXworCisjaW5jbHVkZSAiY2xrX21nci5oIgorCisvKgorICogb25seSB0 aGluZyBuZWVkZWQgZnJvbSBoZXJlIGlzIE1FTU9SWV9UWVBFX01VTFRJUExJRVJfQ1osIHdoaWNo IGlzIGFsc28KKyAqIHVzZWQgaW4gcmVzb3VyY2UsIHBlcmhhcHMgdGhpcyBzaG91bGQgYmUgZGVm aW5lZCBzb21ld2hlcmUgbW9yZSBjb21tb24uCisgKi8KKyNpbmNsdWRlICJyZXNvdXJjZS5oIgor CisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoqKioqKioqKioqKioqKioq KiBDbG9jayBNYW5hZ2VyIFByaXZhdGUgTWFjcm9zIGFuZCBEZWZpbmVzICoqKioqKioqKioqKioq KioqKioqKioqKioqKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCisKKyNk ZWZpbmUgVE9fQ0xLX01HUl9JTlRFUk5BTChjbGtfbWdyKVwKKwljb250YWluZXJfb2YoY2xrX21n ciwgc3RydWN0IGNsa19tZ3JfaW50ZXJuYWwsIGJhc2UpCisKKyNkZWZpbmUgQ1RYIFwKKwljbGtf bWdyLT5iYXNlLmN0eAorI2RlZmluZSBEQ19MT0dHRVIgXAorCWNsa19tZ3ItPmN0eC0+bG9nZ2Vy CisKKworI2RlZmluZSBDTEtfQkFTRV9JTk5FUihpbnN0KSBcCisJQ0xLX0JBU0VfX0lOU1QgIyMg aW5zdCAjIyBfU0VHMAorCisjZGVmaW5lIENMS19CQVNFKGluc3QpIFwKKwlDTEtfQkFTRV9JTk5F UihpbnN0KQorCisjZGVmaW5lIENMS19TUkkocmVnX25hbWUsIGJsb2NrLCBpbnN0KVwKKwkucmVn X25hbWUgPSBDTEtfQkFTRShtbSAjIyBibG9jayAjIyBfICMjIGluc3QgIyMgXyAjIyByZWdfbmFt ZSAjIyBfQkFTRV9JRFgpICsgXAorCQkJCQltbSAjIyBibG9jayAjIyBfICMjIGluc3QgIyMgXyAj IyByZWdfbmFtZQorCisjZGVmaW5lIENMS19DT01NT05fUkVHX0xJU1RfRENFX0JBU0UoKSBcCisJ LkRQUkVGQ0xLX0NOVEwgPSBtbURQUkVGQ0xLX0NOVEwsIFwKKwkuREVOVElTVF9ESVNQQ0xLX0NO VEwgPSBtbURFTlRJU1RfRElTUENMS19DTlRMCisKKyNkZWZpbmUgQ0xLX0NPTU1PTl9SRUdfTElT VF9EQ05fQkFTRSgpIFwKKwlTUihERU5USVNUX0RJU1BDTEtfQ05UTCkKKworI2RlZmluZSBDTEtf U0YocmVnX25hbWUsIGZpZWxkX25hbWUsIHBvc3RfZml4KVwKKwkuZmllbGRfbmFtZSA9IHJlZ19u YW1lICMjIF9fICMjIGZpZWxkX25hbWUgIyMgcG9zdF9maXgKKworI2RlZmluZSBDTEtfQ09NTU9O X01BU0tfU0hfTElTVF9EQ0VfQ09NTU9OX0JBU0UobWFza19zaCkgXAorCUNMS19TRihEUFJFRkNM S19DTlRMLCBEUFJFRkNMS19TUkNfU0VMLCBtYXNrX3NoKSwgXAorCUNMS19TRihERU5USVNUX0RJ U1BDTEtfQ05UTCwgREVOVElTVF9EUFJFRkNMS19XRElWSURFUiwgbWFza19zaCkKKworI2RlZmlu ZSBDTEtfQ09NTU9OX01BU0tfU0hfTElTVF9EQ05fQ09NTU9OX0JBU0UobWFza19zaCkgXAorCUNM S19TRihERU5USVNUX0RJU1BDTEtfQ05UTCwgREVOVElTVF9ESVNQQ0xLX1dESVZJREVSLCBtYXNr X3NoKSxcCisJQ0xLX1NGKERFTlRJU1RfRElTUENMS19DTlRMLCBERU5USVNUX0RJU1BDTEtfQ0hH X0RPTkUsIG1hc2tfc2gpCisKKyNkZWZpbmUgQ0xLX01BU0tfU0hfTElTVF9SVjEobWFza19zaCkg XAorCUNMS19DT01NT05fTUFTS19TSF9MSVNUX0RDTl9DT01NT05fQkFTRShtYXNrX3NoKSxcCisJ Q0xLX1NGKE1QMV9TTU5fQzJQTVNHXzY3LCBDT05URU5ULCBtYXNrX3NoKSxcCisJQ0xLX1NGKE1Q MV9TTU5fQzJQTVNHXzgzLCBDT05URU5ULCBtYXNrX3NoKSxcCisJQ0xLX1NGKE1QMV9TTU5fQzJQ TVNHXzkxLCBDT05URU5ULCBtYXNrX3NoKSwKKworCisjZGVmaW5lIENMS19SRUdfRklFTERfTElT VCh0eXBlKSBcCisJdHlwZSBEUFJFRkNMS19TUkNfU0VMOyBcCisJdHlwZSBERU5USVNUX0RQUkVG Q0xLX1dESVZJREVSOyBcCisJdHlwZSBERU5USVNUX0RJU1BDTEtfV0RJVklERVI7IFwKKwl0eXBl IERFTlRJU1RfRElTUENMS19DSEdfRE9ORTsKKworLyoKKyAqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioKKyAqKioqKioqKioqKioqKioqKiogQ2xvY2sgTWFuYWdlciBQcml2YXRlIFN0cnVj dHVyZXMgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioKKyAqLworCitzdHJ1Y3QgY2xrX21ncl9yZWdpc3RlcnMgeworCXVp bnQzMl90IERQUkVGQ0xLX0NOVEw7CisJdWludDMyX3QgREVOVElTVF9ESVNQQ0xLX0NOVEw7CisK K307CisKK3N0cnVjdCBjbGtfbWdyX3NoaWZ0IHsKKwlDTEtfUkVHX0ZJRUxEX0xJU1QodWludDhf dCkKK307CisKK3N0cnVjdCBjbGtfbWdyX21hc2sgeworCUNMS19SRUdfRklFTERfTElTVCh1aW50 MzJfdCkKK307CisKKworc3RydWN0IHN0YXRlX2RlcGVuZGVudF9jbG9ja3MgeworCWludCBkaXNw bGF5X2Nsa19raHo7CisJaW50IHBpeGVsX2Nsa19raHo7Cit9OworCitzdHJ1Y3QgY2xrX21ncl9p bnRlcm5hbCB7CisJc3RydWN0IGNsa19tZ3IgYmFzZTsKKwlzdHJ1Y3QgcHBfc211X2Z1bmNzICpw cF9zbXU7CisJc3RydWN0IGNsa19tZ3JfaW50ZXJuYWxfZnVuY3MgKmZ1bmNzOworCisJc3RydWN0 IGRjY2cgKmRjY2c7CisKKwkvKgorCSAqIEZvciBiYWNrd2FyZHMgY29tcGF0YmlsaXR5IHdpdGgg cHJldmlvdXMgaW1wbGVtZW50YXRpb24KKwkgKiBUT0RPOiByZW1vdmUgdGhlc2UgYWZ0ZXIgZXZl cnl0aGluZyB0cmFuc2l0aW9ucyB0byBuZXcgcGF0dGVybgorCSAqIFJhdGlvbmFsZSBpcyB0aGF0 IGNsayByZWdpc3RlcnMgY2hhbmdlIGEgbG90IGFjcm9zcyBEQ0UgdmVyc2lvbnMKKwkgKiBhbmQg YSBzaGFyZWQgZGF0YSBzdHJ1Y3R1cmUgZG9lc24ndCByZWFsbHkgbWFrZSBzZW5zZS4KKwkgKi8K Kwljb25zdCBzdHJ1Y3QgY2xrX21ncl9yZWdpc3RlcnMgKnJlZ3M7CisJY29uc3Qgc3RydWN0IGNs a19tZ3Jfc2hpZnQgKmNsa19tZ3Jfc2hpZnQ7CisJY29uc3Qgc3RydWN0IGNsa19tZ3JfbWFzayAq Y2xrX21ncl9tYXNrOworCisJc3RydWN0IHN0YXRlX2RlcGVuZGVudF9jbG9ja3MgbWF4X2Nsa3Nf Ynlfc3RhdGVbRE1fUFBfQ0xPQ0tTX01BWF9TVEFURVNdOworCisJLypUT0RPOiBmaWd1cmUgb3V0 IHdoaWNoIG9mIHRoZSBiZWxvdyBmaWVsZHMgc2hvdWxkIGJlIGhlcmUgdnMgaW4gYXNpYyBzcGVj aWZpYyBwb3J0aW9uICovCisJaW50IGRlbnRpc3RfdmNvX2ZyZXFfa2h6OworCisJLyogQ2FjaGUg dGhlIHN0YXR1cyBvZiBERlMtYnlwYXNzIGZlYXR1cmUqLworCWJvb2wgZGZzX2J5cGFzc19lbmFi bGVkOworCS8qIFRydWUgaWYgdGhlIERGUy1ieXBhc3MgZmVhdHVyZSBpcyBlbmFibGVkIGFuZCBh Y3RpdmUuICovCisJYm9vbCBkZnNfYnlwYXNzX2FjdGl2ZTsKKwkvKgorCSAqIENhY2hlIHRoZSBk aXNwbGF5IGNsb2NrIHJldHVybmVkIGJ5IFZCSU9TIGlmIERGUy1ieXBhc3MgaXMgZW5hYmxlZC4K KwkgKiBUaGlzIGlzIGJhc2ljYWxseSAiQ3J5c3RhbCBGcmVxdWVuY3kgSW4gS0h6IiAoWFRBTElO KSBmcmVxdWVuY3kKKwkgKi8KKwlpbnQgZGZzX2J5cGFzc19kaXNwX2NsazsKKworCS8qKgorCSAq IEBzc19vbl9kcHJlZmNsazoKKwkgKgorCSAqIFRydWUgaWYgc3ByZWFkIHNwZWN0cnVtIGlzIGVu YWJsZWQgb24gdGhlIERQIHJlZiBjbG9jay4KKwkgKi8KKwlib29sIHNzX29uX2RwcmVmY2xrOwor CisJLyoqCisJICogQHhnbWlfZW5hYmxlZDoKKwkgKgorCSAqIFRydWUgaWYgeEdNSSBpcyBlbmFi bGVkLiBPbiBWRzIwLCBib3RoIGF1ZGlvIGFuZCBkaXNwbGF5IGNsb2NrcyBuZWVkCisJICogdG8g YmUgYWRqdXN0ZWQgd2l0aCB0aGUgV0FGTCBsaW5rJ3MgU1MgaW5mbyBpZiB4R01JIGlzIGVuYWJs ZWQuCisJICovCisJYm9vbCB4Z21pX2VuYWJsZWQ7CisKKwkvKioKKwkgKiBAZHByZWZjbGtfc3Nf cGVyY2VudGFnZToKKwkgKgorCSAqIERQUkVGQ0xLIFNTIHBlcmNlbnRhZ2UgKGlmIGRvd24tc3By ZWFkIGVuYWJsZWQpLgorCSAqCisJICogTm90ZSB0aGF0IGlmIFhHTUkgaXMgZW5hYmxlZCwgdGhl IFNTIGluZm8gKHBlcmNlbnRhZ2UgYW5kIGRpdmlkZXIpCisJICogZnJvbSB0aGUgV0FGTCBsaW5r IGlzIHVzZWQgaW5zdGVhZC4gVGhpcyBpcyBkZWNpZGVkIGR1cmluZworCSAqIGRjZV9jbGtfbWdy IGluaXRpYWxpemF0aW9uLgorCSAqLworCWludCBkcHJlZmNsa19zc19wZXJjZW50YWdlOworCisJ LyoqCisJICogQGRwcmVmY2xrX3NzX2RpdmlkZXI6CisJICoKKwkgKiBEUFJFRkNMSyBTUyBwZXJj ZW50YWdlIERpdmlkZXIgKDEwMCBvciAxMDAwKS4KKwkgKi8KKwlpbnQgZHByZWZjbGtfc3NfZGl2 aWRlcjsKKworCWVudW0gZG1fcHBfY2xvY2tzX3N0YXRlIG1heF9jbGtzX3N0YXRlOworCWVudW0g ZG1fcHBfY2xvY2tzX3N0YXRlIGN1cl9taW5fY2xrc19zdGF0ZTsKK307CisKK3N0cnVjdCBjbGtf bWdyX2ludGVybmFsX2Z1bmNzIHsKKwlpbnQgKCpzZXRfZGlzcGNsaykoc3RydWN0IGNsa19tZ3Jf aW50ZXJuYWwgKmNsa19tZ3IsIGludCByZXF1ZXN0ZWRfZGlzcGNsa19raHopOworCWludCAoKnNl dF9kcHJlZmNsaykoc3RydWN0IGNsa19tZ3JfaW50ZXJuYWwgKmNsa19tZ3IpOworfTsKKworCisv KgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoqKioqKioqKioqKioqKioqKiBD bG9jayBNYW5hZ2VyIExldmVsIEhlbHBlciBmdW5jdGlvbnMgKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCisKKworc3Rh dGljIGlubGluZSBib29sIHNob3VsZF9zZXRfY2xvY2soYm9vbCBzYWZlX3RvX2xvd2VyLCBpbnQg Y2FsY19jbGssIGludCBjdXJfY2xrKQoreworCXJldHVybiAoKHNhZmVfdG9fbG93ZXIgJiYgY2Fs Y19jbGsgPCBjdXJfY2xrKSB8fCBjYWxjX2NsayA+IGN1cl9jbGspOworfQorCisKKworI2VuZGlm IC8vX19EQUxfQ0xLX01HUl9JTlRFUk5BTF9IX18KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvZGlzcGxheS9kYy9pbmMvcmVzb3VyY2UuaCBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlz cGxheS9kYy9pbmMvcmVzb3VyY2UuaAppbmRleCAzY2UwYTRmLi4wODkxNWI3IDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvaW5jL3Jlc291cmNlLmgKKysrIGIvZHJp dmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2luYy9yZXNvdXJjZS5oCkBAIC0zMCw2ICszMCw4 IEBACiAjaW5jbHVkZSAiZGFsX2FzaWNfaWQuaCIKICNpbmNsdWRlICJkbV9wcF9zbXUuaCIKIAor I2RlZmluZSBNRU1PUllfVFlQRV9NVUxUSVBMSUVSX0NaIDQKKwogZW51bSBkY2VfdmVyc2lvbiBy ZXNvdXJjZV9wYXJzZV9hc2ljX2lkKAogCQlzdHJ1Y3QgaHdfYXNpY19pZCBhc2ljX2lkKTsKIApk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2luY2x1ZGUvZGFsX2FzaWNf aWQuaCBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9pbmNsdWRlL2RhbF9hc2ljX2lkLmgK aW5kZXggNjNjM2U3Ny4uYjMwMmZmMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9k aXNwbGF5L2luY2x1ZGUvZGFsX2FzaWNfaWQuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rp c3BsYXkvaW5jbHVkZS9kYWxfYXNpY19pZC5oCkBAIC0xMzEsMTkgKzEzMSwyMCBAQAogI2RlZmlu ZSBJTlRFUk5BTF9SRVZfUkFWRU5fQTAgICAgICAgICAgICAgMHgwMCAgICAvKiBGaXJzdCBzcGlu IG9mIFJhdmVuICovCiAjZGVmaW5lIFJBVkVOX0EwIDB4MDEKICNkZWZpbmUgUkFWRU5fQjAgMHgy MQotLyogRENOMV8wMSAqLwogI2RlZmluZSBQSUNBU1NPX0EwIDB4NDEKKy8qIERDTjFfMDEgKi8K ICNkZWZpbmUgUkFWRU4yX0EwIDB4ODEKICNkZWZpbmUgUkFWRU4xX0YwIDB4RjAKICNkZWZpbmUg UkFWRU5fVU5LTk9XTiAweEZGCiAKLSNkZWZpbmUgQVNJQ19SRVZfSVNfUkFWRU4oZUNoaXBSZXYp ICgoZUNoaXBSZXYgPj0gUkFWRU5fQTApICYmIGVDaGlwUmV2IDwgUkFWRU5fVU5LTk9XTikKLSNk ZWZpbmUgUkFWRU4xX0YwIDB4RjAKLSNkZWZpbmUgQVNJQ1JFVl9JU19SVjFfRjAoZUNoaXBSZXYp ICgoZUNoaXBSZXYgPj0gUkFWRU4xX0YwKSAmJiAoZUNoaXBSZXYgPCBSQVZFTl9VTktOT1dOKSkK LQorI2RlZmluZSBBU0lDUkVWX0lTX1JBVkVOKGVDaGlwUmV2KSAoKGVDaGlwUmV2ID49IFJBVkVO X0EwKSAmJiBlQ2hpcFJldiA8IFJBVkVOX1VOS05PV04pCiAjZGVmaW5lIEFTSUNSRVZfSVNfUElD QVNTTyhlQ2hpcFJldikgKChlQ2hpcFJldiA+PSBQSUNBU1NPX0EwKSAmJiAoZUNoaXBSZXYgPCBS QVZFTjJfQTApKQogI2RlZmluZSBBU0lDUkVWX0lTX1JBVkVOMihlQ2hpcFJldikgKChlQ2hpcFJl diA+PSBSQVZFTjJfQTApICYmIChlQ2hpcFJldiA8IDB4RjApKQogCisKKyNkZWZpbmUgQVNJQ1JF Vl9JU19SVjFfRjAoZUNoaXBSZXYpICgoZUNoaXBSZXYgPj0gUkFWRU4xX0YwKSAmJiAoZUNoaXBS ZXYgPCBSQVZFTl9VTktOT1dOKSkKKworCiAjZGVmaW5lIEZBTUlMWV9SViAxNDIgLyogRENOIDEq LwogCiAvKgotLSAKMi43LjQKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCmFtZC1nZnggbWFpbGluZyBsaXN0CmFtZC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Au b3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vYW1kLWdm eA==