From mboxrd@z Thu Jan 1 00:00:00 1970 From: Julien Grall Subject: [PATCH v4 14/16] xen/grant: Switch common/grant_table.c to use typesafe MFN Date: Wed, 21 Feb 2018 14:02:57 +0000 Message-ID: <20180221140259.29360-15-julien.grall@arm.com> References: <20180221140259.29360-1-julien.grall@arm.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180221140259.29360-1-julien.grall@arm.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: xen-devel@lists.xen.org Cc: Stefano Stabellini , Wei Liu , George Dunlap , Andrew Cooper , Ian Jackson , Tim Deegan , Julien Grall , Jan Beulich List-Id: xen-devel@lists.xenproject.org Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQuCgpTaWduZWQtb2ZmLWJ5OiBKdWxpZW4gR3Jh bGwgPGp1bGllbi5ncmFsbEBhcm0uY29tPgoKLS0tCgpDYzogU3RlZmFubyBTdGFiZWxsaW5pIDxz c3RhYmVsbGluaUBrZXJuZWwub3JnPgpDYzogSnVsaWVuIEdyYWxsIDxqdWxpZW4uZ3JhbGxAYXJt LmNvbT4KQ2M6IEFuZHJldyBDb29wZXIgPGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+CkNjOiBH ZW9yZ2UgRHVubGFwIDxHZW9yZ2UuRHVubGFwQGV1LmNpdHJpeC5jb20+CkNjOiBJYW4gSmFja3Nv biA8aWFuLmphY2tzb25AZXUuY2l0cml4LmNvbT4KQ2M6IEphbiBCZXVsaWNoIDxqYmV1bGljaEBz dXNlLmNvbT4KQ2M6IEtvbnJhZCBSemVzenV0ZWsgV2lsayA8a29ucmFkLndpbGtAb3JhY2xlLmNv bT4KQ2M6IFRpbSBEZWVnYW4gPHRpbUB4ZW4ub3JnPgpDYzogV2VpIExpdSA8d2VpLmxpdTJAY2l0 cml4LmNvbT4KCiAgICBDaGFuZ2VzIGluIHY0OgogICAgICAgIC0gUGF0Y2ggYWRkZWQKLS0tCiB4 ZW4vYXJjaC9hcm0vbW0uYyAgICAgICAgICAgICAgICAgfCAgIDIgKy0KIHhlbi9jb21tb24vZ3Jh bnRfdGFibGUuYyAgICAgICAgICB8IDE0NSArKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0t LS0tLS0tLQogeGVuL2luY2x1ZGUvYXNtLWFybS9ncmFudF90YWJsZS5oIHwgICAyICstCiB4ZW4v aW5jbHVkZS9hc20teDg2L2dyYW50X3RhYmxlLmggfCAgIDIgKy0KIDQgZmlsZXMgY2hhbmdlZCwg ODEgaW5zZXJ0aW9ucygrKSwgNzAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gv YXJtL21tLmMgYi94ZW4vYXJjaC9hcm0vbW0uYwppbmRleCA0MjY4ZGQ1YzJkLi5kYjc0NDY2YTE2 IDEwMDY0NAotLS0gYS94ZW4vYXJjaC9hcm0vbW0uYworKysgYi94ZW4vYXJjaC9hcm0vbW0uYwpA QCAtMTQxMyw3ICsxNDEzLDcgQEAgdm9pZCBnbnR0YWJfY2xlYXJfZmxhZyh1bnNpZ25lZCBsb25n IG5yLCB1aW50MTZfdCAqYWRkcikKICAgICB9IHdoaWxlIChjbXB4Y2hnKGFkZHIsIG9sZCwgb2xk ICYgbWFzaykgIT0gb2xkKTsKIH0KIAotdm9pZCBnbnR0YWJfbWFya19kaXJ0eShzdHJ1Y3QgZG9t YWluICpkLCB1bnNpZ25lZCBsb25nIGwpCit2b2lkIGdudHRhYl9tYXJrX2RpcnR5KHN0cnVjdCBk b21haW4gKmQsIG1mbl90IG1mbikKIHsKICAgICAvKiBYWFg6IG1hcmsgZGlydHkgKi8KICAgICBz dGF0aWMgaW50IHdhcm5pbmc7CmRpZmYgLS1naXQgYS94ZW4vY29tbW9uL2dyYW50X3RhYmxlLmMg Yi94ZW4vY29tbW9uL2dyYW50X3RhYmxlLmMKaW5kZXggYzU1NWMxZDQ1MS4uZTlhODFiNjZiZSAx MDA2NDQKLS0tIGEveGVuL2NvbW1vbi9ncmFudF90YWJsZS5jCisrKyBiL3hlbi9jb21tb24vZ3Jh bnRfdGFibGUuYwpAQCAtNDAsNiArNDAsMTIgQEAKICNpbmNsdWRlIDx4c20veHNtLmg+CiAjaW5j bHVkZSA8YXNtL2ZsdXNodGxiLmg+CiAKKy8qIE92ZXJyaWRlIG1hY3JvcyBmcm9tIGFzbS9wYWdl LmggdG8gbWFrZSB0aGVtIHdvcmsgd2l0aCBtZm5fdCAqLworI3VuZGVmIHBhZ2VfdG9fbWZuCisj ZGVmaW5lIHBhZ2VfdG9fbWZuKHBnKSBfbWZuKF9fcGFnZV90b19tZm4ocGcpKQorI3VuZGVmIG1m bl90b19wYWdlCisjZGVmaW5lIG1mbl90b19wYWdlKG1mbikgX19tZm5fdG9fcGFnZShtZm5feCht Zm4pKQorCiAvKiBQZXItZG9tYWluIGdyYW50IGluZm9ybWF0aW9uLiAqLwogc3RydWN0IGdyYW50 X3RhYmxlIHsKICAgICAvKgpAQCAtMTMyLDcgKzEzOCw3IEBAIHN0cnVjdCBnbnR0YWJfdW5tYXBf Y29tbW9uIHsKIAogICAgIC8qIFNoYXJlZCBzdGF0ZSBiZXRlZW4gKl91bm1hcCBhbmQgKl91bm1h cF9jb21wbGV0ZSAqLwogICAgIHVpbnQxNl90IGRvbmU7Ci0gICAgdW5zaWduZWQgbG9uZyBmcmFt ZTsKKyAgICBtZm5fdCBmcmFtZTsKICAgICBzdHJ1Y3QgZG9tYWluICpyZDsKICAgICBncmFudF9y ZWZfdCByZWY7CiB9OwpAQCAtMjMxLDcgKzIzNyw3IEBAIHN0cnVjdCBhY3RpdmVfZ3JhbnRfZW50 cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmFudC4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICovCiAgICAgZ3JhbnRfcmVmX3QgICB0cmFuc19ncmVmOwogICAg IHN0cnVjdCBkb21haW4gKnRyYW5zX2RvbWFpbjsKLSAgICB1bnNpZ25lZCBsb25nIGZyYW1lOyAg LyogRnJhbWUgYmVpbmcgZ3JhbnRlZC4gICAgICAgICAgICAgICAgICAgICAqLworICAgIG1mbl90 ICAgICAgICAgZnJhbWU7ICAvKiBGcmFtZSBiZWluZyBncmFudGVkLiAgICAgICAgICAgICAgICAg ICAgICovCiAjaWZuZGVmIE5ERUJVRwogICAgIGdmbl90ICAgICAgICAgZ2ZuOyAgICAvKiBHdWVz dCdzIGlkZWEgb2YgdGhlIGZyYW1lIGJlaW5nIGdyYW50ZWQuICovCiAjZW5kaWYKQEAgLTMzNiwx NCArMzQyLDE0IEBAIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGdyYW50X3RvX3N0YXR1c19m cmFtZXModW5zaWduZWQgaW50IGdyYW50X2ZyYW1lcykKICAgIElmIHJjID09IEdOVFNUX29rYXks ICpwYWdlIGNvbnRhaW5zIHRoZSBwYWdlIHN0cnVjdCB3aXRoIGEgcmVmIHRha2VuLgogICAgQ2Fs bGVyIG11c3QgZG8gcHV0X3BhZ2UoKnBhZ2UpLgogICAgSWYgYW55IGVycm9yLCAqcGFnZSA9IE5V TEwsICpmcmFtZSA9IElOVkFMSURfTUZOLCBubyByZWYgdGFrZW4uICovCi1zdGF0aWMgaW50IGdl dF9wYWdlZF9mcmFtZSh1bnNpZ25lZCBsb25nIGdmbiwgdW5zaWduZWQgbG9uZyAqZnJhbWUsCitz dGF0aWMgaW50IGdldF9wYWdlZF9mcmFtZSh1bnNpZ25lZCBsb25nIGdmbiwgbWZuX3QgKmZyYW1l LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHBhZ2VfaW5mbyAqKnBhZ2UsIGJv b2wgcmVhZG9ubHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZG9tYWluICpy ZCkKIHsKICAgICBpbnQgcmMgPSBHTlRTVF9va2F5OwogICAgIHAybV90eXBlX3QgcDJtdDsKIAot ICAgICpmcmFtZSA9IG1mbl94KElOVkFMSURfTUZOKTsKKyAgICAqZnJhbWUgPSBJTlZBTElEX01G TjsKICAgICAqcGFnZSA9IGdldF9wYWdlX2Zyb21fZ2ZuKHJkLCBnZm4sICZwMm10LAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcmVhZG9ubHkgPyBQMk1fQUxMT0MgOiBQMk1fVU5TSEFS RSk7CiAgICAgaWYgKCAhKnBhZ2UgKQpAQCAtNzg4LDcgKzc5NCw3IEBAIHN0YXRpYyBpbnQgX3Nl dF9zdGF0dXModW5zaWduZWQgZ3RfdmVyc2lvbiwKIAogc3RhdGljIHN0cnVjdCBhY3RpdmVfZ3Jh bnRfZW50cnkgKmdyYW50X21hcF9leGlzdHMoY29uc3Qgc3RydWN0IGRvbWFpbiAqbGQsCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZ3Jh bnRfdGFibGUgKnJndCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbWZuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgbWZuX3QgbWZuLAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JhbnRfcmVmX3QgKmN1cl9yZWYpCiB7CiAg ICAgZ3JhbnRfcmVmX3QgcmVmLCBtYXhfaXRlcjsKQEAgLTgwNyw3ICs4MTMsOCBAQCBzdGF0aWMg c3RydWN0IGFjdGl2ZV9ncmFudF9lbnRyeSAqZ3JhbnRfbWFwX2V4aXN0cyhjb25zdCBzdHJ1Y3Qg ZG9tYWluICpsZCwKICAgICB7CiAgICAgICAgIHN0cnVjdCBhY3RpdmVfZ3JhbnRfZW50cnkgKmFj dCA9IGFjdGl2ZV9lbnRyeV9hY3F1aXJlKHJndCwgcmVmKTsKIAotICAgICAgICBpZiAoIGFjdC0+ cGluICYmIGFjdC0+ZG9taWQgPT0gbGQtPmRvbWFpbl9pZCAmJiBhY3QtPmZyYW1lID09IG1mbiAp CisgICAgICAgIGlmICggYWN0LT5waW4gJiYgYWN0LT5kb21pZCA9PSBsZC0+ZG9tYWluX2lkICYm CisgICAgICAgICAgICAgbWZuX2VxKGFjdC0+ZnJhbWUsIG1mbikgKQogICAgICAgICAgICAgcmV0 dXJuIGFjdDsKICAgICAgICAgYWN0aXZlX2VudHJ5X3JlbGVhc2UoYWN0KTsKICAgICB9CkBAIC04 MjQsNyArODMxLDcgQEAgc3RhdGljIHN0cnVjdCBhY3RpdmVfZ3JhbnRfZW50cnkgKmdyYW50X21h cF9leGlzdHMoY29uc3Qgc3RydWN0IGRvbWFpbiAqbGQsCiAjZGVmaW5lIE1BUEtJTkRfUkVBRCAx CiAjZGVmaW5lIE1BUEtJTkRfV1JJVEUgMgogc3RhdGljIHVuc2lnbmVkIGludCBtYXBraW5kKAot ICAgIHN0cnVjdCBncmFudF90YWJsZSAqbGd0LCBjb25zdCBzdHJ1Y3QgZG9tYWluICpyZCwgdW5z aWduZWQgbG9uZyBtZm4pCisgICAgc3RydWN0IGdyYW50X3RhYmxlICpsZ3QsIGNvbnN0IHN0cnVj dCBkb21haW4gKnJkLCBtZm5fdCBtZm4pCiB7CiAgICAgc3RydWN0IGdyYW50X21hcHBpbmcgKm1h cDsKICAgICBncmFudF9oYW5kbGVfdCBoYW5kbGUsIGxpbWl0ID0gbGd0LT5tYXB0cmFja19saW1p dDsKQEAgLTg0OSw3ICs4NTYsNyBAQCBzdGF0aWMgdW5zaWduZWQgaW50IG1hcGtpbmQoCiAgICAg ICAgIGlmICggIShtYXAtPmZsYWdzICYgKEdOVE1BUF9kZXZpY2VfbWFwfEdOVE1BUF9ob3N0X21h cCkpIHx8CiAgICAgICAgICAgICAgbWFwLT5kb21pZCAhPSByZC0+ZG9tYWluX2lkICkKICAgICAg ICAgICAgIGNvbnRpbnVlOwotICAgICAgICBpZiAoIF9hY3RpdmVfZW50cnkocmQtPmdyYW50X3Rh YmxlLCBtYXAtPnJlZikuZnJhbWUgPT0gbWZuICkKKyAgICAgICAgaWYgKCBtZm5fZXEoX2FjdGl2 ZV9lbnRyeShyZC0+Z3JhbnRfdGFibGUsIG1hcC0+cmVmKS5mcmFtZSwgbWZuKSApCiAgICAgICAg ICAgICBraW5kIHw9IG1hcC0+ZmxhZ3MgJiBHTlRNQVBfcmVhZG9ubHkgPwogICAgICAgICAgICAg ICAgICAgICBNQVBLSU5EX1JFQUQgOiBNQVBLSU5EX1dSSVRFOwogICAgIH0KQEAgLTg3Miw3ICs4 NzksNyBAQCBtYXBfZ3JhbnRfcmVmKAogICAgIHN0cnVjdCBncmFudF90YWJsZSAqbGd0LCAqcmd0 OwogICAgIHN0cnVjdCB2Y3B1ICAgKmxlZDsKICAgICBncmFudF9oYW5kbGVfdCBoYW5kbGU7Ci0g ICAgdW5zaWduZWQgbG9uZyAgZnJhbWUgPSAwOworICAgIG1mbl90IGZyYW1lID0gX21mbigwKTsK ICAgICBzdHJ1Y3QgcGFnZV9pbmZvICpwZyA9IE5VTEw7CiAgICAgaW50ICAgICAgICAgICAgcmMg PSBHTlRTVF9va2F5OwogICAgIHUzMiAgICAgICAgICAgIG9sZF9waW47CkBAIC05OTksNyArMTAw Niw3IEBAIG1hcF9ncmFudF9yZWYoCiAgICAgLyogcGcgbWF5IGJlIHNldCwgd2l0aCBhIHJlZmNv dW50IGluY2x1ZGVkLCBmcm9tIGdldF9wYWdlZF9mcmFtZSgpLiAqLwogICAgIGlmICggIXBnICkK ICAgICB7Ci0gICAgICAgIHBnID0gbWZuX3ZhbGlkKF9tZm4oZnJhbWUpKSA/IG1mbl90b19wYWdl KGZyYW1lKSA6IE5VTEw7CisgICAgICAgIHBnID0gbWZuX3ZhbGlkKGZyYW1lKSA/IG1mbl90b19w YWdlKGZyYW1lKSA6IE5VTEw7CiAgICAgICAgIGlmICggcGcgKQogICAgICAgICAgICAgb3duZXIg PSBwYWdlX2dldF9vd25lcl9hbmRfcmVmZXJlbmNlKHBnKTsKICAgICB9CkBAIC0xMDI1LDE4ICsx MDMyLDE4IEBAIG1hcF9ncmFudF9yZWYoCiAgICAgICAgICAgICBnb3RvIHVuZG9fb3V0OwogICAg ICAgICB9CiAKLSAgICAgICAgaWYgKCAhaW9tZW1fYWNjZXNzX3Blcm1pdHRlZChyZCwgZnJhbWUs IGZyYW1lKSApCisgICAgICAgIGlmICggIWlvbWVtX2FjY2Vzc19wZXJtaXR0ZWQocmQsIG1mbl94 KGZyYW1lKSwgbWZuX3goZnJhbWUpKSApCiAgICAgICAgIHsKICAgICAgICAgICAgIGdkcHJpbnRr KFhFTkxPR19XQVJOSU5HLAotICAgICAgICAgICAgICAgICAgICAgIklvbWVtIG1hcHBpbmcgbm90 IHBlcm1pdHRlZCAlbHggKGRvbWFpbiAlZClcbiIsCi0gICAgICAgICAgICAgICAgICAgICBmcmFt ZSwgcmQtPmRvbWFpbl9pZCk7CisgICAgICAgICAgICAgICAgICAgICAiSW9tZW0gbWFwcGluZyBu b3QgcGVybWl0dGVkICUjIlBSSV9tZm4iIChkb21haW4gJWQpXG4iLAorICAgICAgICAgICAgICAg ICAgICAgbWZuX3goZnJhbWUpLCByZC0+ZG9tYWluX2lkKTsKICAgICAgICAgICAgIHJjID0gR05U U1RfZ2VuZXJhbF9lcnJvcjsKICAgICAgICAgICAgIGdvdG8gdW5kb19vdXQ7CiAgICAgICAgIH0K IAogICAgICAgICBpZiAoIG9wLT5mbGFncyAmIEdOVE1BUF9ob3N0X21hcCApCiAgICAgICAgIHsK LSAgICAgICAgICAgIHJjID0gY3JlYXRlX2dyYW50X2hvc3RfbWFwcGluZyhvcC0+aG9zdF9hZGRy LCBfbWZuKGZyYW1lKSwgb3AtPmZsYWdzLAorICAgICAgICAgICAgcmMgPSBjcmVhdGVfZ3JhbnRf aG9zdF9tYXBwaW5nKG9wLT5ob3N0X2FkZHIsIGZyYW1lLCBvcC0+ZmxhZ3MsCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVfZmxhZ3MpOwogICAgICAgICAg ICAgaWYgKCByYyAhPSBHTlRTVF9va2F5ICkKICAgICAgICAgICAgICAgICBnb3RvIHVuZG9fb3V0 OwpAQCAtMTA3Niw3ICsxMDgzLDcgQEAgbWFwX2dyYW50X3JlZigKICAgICAgICAgICAgICAgICB0 eXBlY250Kys7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIHJjID0gY3JlYXRlX2dyYW50 X2hvc3RfbWFwcGluZyhvcC0+aG9zdF9hZGRyLCBfbWZuKGZyYW1lKSwgb3AtPmZsYWdzLCAwKTsK KyAgICAgICAgICAgIHJjID0gY3JlYXRlX2dyYW50X2hvc3RfbWFwcGluZyhvcC0+aG9zdF9hZGRy LCBmcmFtZSwgb3AtPmZsYWdzLCAwKTsKICAgICAgICAgICAgIGlmICggcmMgIT0gR05UU1Rfb2th eSApCiAgICAgICAgICAgICAgICAgZ290byB1bmRvX291dDsKIApAQCAtMTA4Nyw4ICsxMDk0LDgg QEAgbWFwX2dyYW50X3JlZigKICAgICB7CiAgICAgY291bGRfbm90X3BpbjoKICAgICAgICAgaWYg KCAhcmQtPmlzX2R5aW5nICkKLSAgICAgICAgICAgIGdkcHJpbnRrKFhFTkxPR19XQVJOSU5HLCAi Q291bGQgbm90IHBpbiBncmFudCBmcmFtZSAlbHhcbiIsCi0gICAgICAgICAgICAgICAgICAgICBm cmFtZSk7CisgICAgICAgICAgICBnZHByaW50ayhYRU5MT0dfV0FSTklORywgIkNvdWxkIG5vdCBw aW4gZ3JhbnQgZnJhbWUgJSMiUFJJX21mbiJcbiIsCisgICAgICAgICAgICAgICAgICAgICBtZm5f eChmcmFtZSkpOwogICAgICAgICByYyA9IEdOVFNUX2dlbmVyYWxfZXJyb3I7CiAgICAgICAgIGdv dG8gdW5kb19vdXQ7CiAgICAgfQpAQCAtMTEwOCwxMyArMTExNSwxNCBAQCBtYXBfZ3JhbnRfcmVm KAogICAgICAgICAgICAgICEob2xkX3BpbiAmIChHTlRQSU5faHN0d19tYXNrfEdOVFBJTl9kZXZ3 X21hc2spKSApCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICggIShraW5kICYgTUFQS0lORF9X UklURSkgKQotICAgICAgICAgICAgICAgIGVyciA9IGlvbW11X21hcF9wYWdlKGxkLCBmcmFtZSwg ZnJhbWUsCisgICAgICAgICAgICAgICAgZXJyID0gaW9tbXVfbWFwX3BhZ2UobGQsIG1mbl94KGZy YW1lKSwgbWZuX3goZnJhbWUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IElPTU1VRl9yZWFkYWJsZXxJT01NVUZfd3JpdGFibGUpOwogICAgICAgICB9CiAgICAgICAgIGVs c2UgaWYgKCBhY3RfcGluICYmICFvbGRfcGluICkKICAgICAgICAgewogICAgICAgICAgICAgaWYg KCAha2luZCApCi0gICAgICAgICAgICAgICAgZXJyID0gaW9tbXVfbWFwX3BhZ2UobGQsIGZyYW1l LCBmcmFtZSwgSU9NTVVGX3JlYWRhYmxlKTsKKyAgICAgICAgICAgICAgICBlcnIgPSBpb21tdV9t YXBfcGFnZShsZCwgbWZuX3goZnJhbWUpLCBtZm5feChmcmFtZSksCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgSU9NTVVGX3JlYWRhYmxlKTsKICAgICAgICAgfQogICAgICAg ICBpZiAoIGVyciApCiAgICAgICAgIHsKQEAgLTExNDMsNyArMTE1MSw3IEBAIG1hcF9ncmFudF9y ZWYoCiAgICAgaWYgKCBuZWVkX2lvbW11ICkKICAgICAgICAgZG91YmxlX2d0X3VubG9jayhsZ3Qs IHJndCk7CiAKLSAgICBvcC0+ZGV2X2J1c19hZGRyID0gKHU2NClmcmFtZSA8PCBQQUdFX1NISUZU OworICAgIG9wLT5kZXZfYnVzX2FkZHIgPSBtZm5fdG9fbWFkZHIoZnJhbWUpOwogICAgIG9wLT5o YW5kbGUgICAgICAgPSBoYW5kbGU7CiAgICAgb3AtPnN0YXR1cyAgICAgICA9IEdOVFNUX29rYXk7 CiAKQEAgLTExNTMsNyArMTE2MSw3IEBAIG1hcF9ncmFudF9yZWYoCiAgdW5kb19vdXQ6CiAgICAg aWYgKCBob3N0X21hcF9jcmVhdGVkICkKICAgICB7Ci0gICAgICAgIHJlcGxhY2VfZ3JhbnRfaG9z dF9tYXBwaW5nKG9wLT5ob3N0X2FkZHIsIF9tZm4oZnJhbWUpLCAwLCBvcC0+ZmxhZ3MpOworICAg ICAgICByZXBsYWNlX2dyYW50X2hvc3RfbWFwcGluZyhvcC0+aG9zdF9hZGRyLCBmcmFtZSwgMCwg b3AtPmZsYWdzKTsKICAgICAgICAgZ250dGFiX2ZsdXNoX3RsYihsZCk7CiAgICAgfQogCkBAIC0x MzMxLDE1ICsxMzM5LDE1IEBAIHVubWFwX2NvbW1vbigKICAgICBvcC0+ZnJhbWUgPSBhY3QtPmZy YW1lOwogCiAgICAgaWYgKCBvcC0+ZGV2X2J1c19hZGRyICYmCi0gICAgICAgICB1bmxpa2VseShv cC0+ZGV2X2J1c19hZGRyICE9IHBmbl90b19wYWRkcihhY3QtPmZyYW1lKSkgKQorICAgICAgICAg dW5saWtlbHkob3AtPmRldl9idXNfYWRkciAhPSBtZm5fdG9fbWFkZHIoYWN0LT5mcmFtZSkpICkK ICAgICAgICAgUElOX0ZBSUwoYWN0X3JlbGVhc2Vfb3V0LCBHTlRTVF9nZW5lcmFsX2Vycm9yLAog ICAgICAgICAgICAgICAgICAiQnVzIGFkZHJlc3MgZG9lc24ndCBtYXRjaCBnbnRyZWYgKCUiUFJJ eDY0IiAhPSAlIlBSSXBhZGRyIilcbiIsCi0gICAgICAgICAgICAgICAgIG9wLT5kZXZfYnVzX2Fk ZHIsIHBmbl90b19wYWRkcihhY3QtPmZyYW1lKSk7CisgICAgICAgICAgICAgICAgIG9wLT5kZXZf YnVzX2FkZHIsIG1mbl90b19tYWRkcihhY3QtPmZyYW1lKSk7CiAKICAgICBpZiAoIG9wLT5ob3N0 X2FkZHIgJiYgKGZsYWdzICYgR05UTUFQX2hvc3RfbWFwKSApCiAgICAgewogICAgICAgICBpZiAo IChyYyA9IHJlcGxhY2VfZ3JhbnRfaG9zdF9tYXBwaW5nKG9wLT5ob3N0X2FkZHIsCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX21mbihvcC0+ZnJhbWUpLCBv cC0+bmV3X2FkZHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgb3AtPmZyYW1lLCBvcC0+bmV3X2FkZHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZmxhZ3MpKSA8IDAgKQogICAgICAgICAgICAgZ290byBhY3RfcmVs ZWFzZV9vdXQ7CiAKQEAgLTEzNzYsOSArMTM4NCwxMCBAQCB1bm1hcF9jb21tb24oCiAKICAgICAg ICAga2luZCA9IG1hcGtpbmQobGd0LCByZCwgb3AtPmZyYW1lKTsKICAgICAgICAgaWYgKCAha2lu ZCApCi0gICAgICAgICAgICBlcnIgPSBpb21tdV91bm1hcF9wYWdlKGxkLCBvcC0+ZnJhbWUpOwor ICAgICAgICAgICAgZXJyID0gaW9tbXVfdW5tYXBfcGFnZShsZCwgbWZuX3gob3AtPmZyYW1lKSk7 CiAgICAgICAgIGVsc2UgaWYgKCAhKGtpbmQgJiBNQVBLSU5EX1dSSVRFKSApCi0gICAgICAgICAg ICBlcnIgPSBpb21tdV9tYXBfcGFnZShsZCwgb3AtPmZyYW1lLCBvcC0+ZnJhbWUsIElPTU1VRl9y ZWFkYWJsZSk7CisgICAgICAgICAgICBlcnIgPSBpb21tdV9tYXBfcGFnZShsZCwgbWZuX3gob3At PmZyYW1lKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1mbl94KG9wLT5mcmFt ZSksIElPTU1VRl9yZWFkYWJsZSk7CiAKICAgICAgICAgZG91YmxlX2d0X3VubG9jayhsZ3QsIHJn dCk7CiAKQEAgLTE0MjksNyArMTQzOCw3IEBAIHVubWFwX2NvbW1vbl9jb21wbGV0ZShzdHJ1Y3Qg Z250dGFiX3VubWFwX2NvbW1vbiAqb3ApCiAKICAgICBpZiAoIG9wLT5kb25lICYgR05UTUFQX2Rl dmljZV9tYXAgKQogICAgIHsKLSAgICAgICAgaWYgKCAhaXNfaW9tZW1fcGFnZShfbWZuKGFjdC0+ ZnJhbWUpKSApCisgICAgICAgIGlmICggIWlzX2lvbWVtX3BhZ2UoYWN0LT5mcmFtZSkgKQogICAg ICAgICB7CiAgICAgICAgICAgICBpZiAoIG9wLT5kb25lICYgR05UTUFQX3JlYWRvbmx5ICkKICAg ICAgICAgICAgICAgICBwdXRfcGFnZShwZyk7CkBAIC0xNDQ2LDcgKzE0NTUsNyBAQCB1bm1hcF9j b21tb25fY29tcGxldGUoc3RydWN0IGdudHRhYl91bm1hcF9jb21tb24gKm9wKQogCiAgICAgaWYg KCBvcC0+ZG9uZSAmIEdOVE1BUF9ob3N0X21hcCApCiAgICAgewotICAgICAgICBpZiAoICFpc19p b21lbV9wYWdlKF9tZm4ob3AtPmZyYW1lKSkgKQorICAgICAgICBpZiAoICFpc19pb21lbV9wYWdl KG9wLT5mcmFtZSkgKQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIGdudHRhYl9ob3N0X21h cHBpbmdfZ2V0X3BhZ2VfdHlwZShvcC0+ZG9uZSAmIEdOVE1BUF9yZWFkb25seSwKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxkLCByZCkgKQpAQCAt MTQ4Nyw3ICsxNDk2LDcgQEAgdW5tYXBfZ3JhbnRfcmVmKAogICAgIGNvbW1vbi0+ZG9uZSA9IDA7 CiAgICAgY29tbW9uLT5uZXdfYWRkciA9IDA7CiAgICAgY29tbW9uLT5yZCA9IE5VTEw7Ci0gICAg Y29tbW9uLT5mcmFtZSA9IDA7CisgICAgY29tbW9uLT5mcmFtZSA9IF9tZm4oMCk7CiAKICAgICB1 bm1hcF9jb21tb24oY29tbW9uKTsKICAgICBvcC0+c3RhdHVzID0gY29tbW9uLT5zdGF0dXM7CkBA IC0xNTUzLDcgKzE1NjIsNyBAQCB1bm1hcF9hbmRfcmVwbGFjZSgKICAgICBjb21tb24tPmRvbmUg PSAwOwogICAgIGNvbW1vbi0+ZGV2X2J1c19hZGRyID0gMDsKICAgICBjb21tb24tPnJkID0gTlVM TDsKLSAgICBjb21tb24tPmZyYW1lID0gMDsKKyAgICBjb21tb24tPmZyYW1lID0gX21mbigwKTsK IAogICAgIHVubWFwX2NvbW1vbihjb21tb24pOwogICAgIG9wLT5zdGF0dXMgPSBjb21tb24tPnN0 YXR1czsKQEAgLTIwMTEsNyArMjAyMCw3IEBAIGdudHRhYl90cmFuc2ZlcigKICAgICBzdHJ1Y3Qg cGFnZV9pbmZvICpwYWdlOwogICAgIGludCBpOwogICAgIHN0cnVjdCBnbnR0YWJfdHJhbnNmZXIg Z29wOwotICAgIHVuc2lnbmVkIGxvbmcgbWZuOworICAgIG1mbl90IG1mbjsKICAgICB1bnNpZ25l ZCBpbnQgbWF4X2JpdHNpemU7CiAgICAgc3RydWN0IGFjdGl2ZV9ncmFudF9lbnRyeSAqYWN0Owog CkBAIC0yMDM1LDE2ICsyMDQ0LDE2IEBAIGdudHRhYl90cmFuc2ZlcigKICAgICAgICAgewogICAg ICAgICAgICAgcDJtX3R5cGVfdCBwMm10OwogCi0gICAgICAgICAgICBtZm4gPSBtZm5feChnZXRf Z2ZuX3Vuc2hhcmUoZCwgZ29wLm1mbiwgJnAybXQpKTsKKyAgICAgICAgICAgIG1mbiA9IGdldF9n Zm5fdW5zaGFyZShkLCBnb3AubWZuLCAmcDJtdCk7CiAgICAgICAgICAgICBpZiAoIHAybV9pc19z aGFyZWQocDJtdCkgfHwgIXAybV9pc192YWxpZChwMm10KSApCi0gICAgICAgICAgICAgICAgbWZu ID0gbWZuX3goSU5WQUxJRF9NRk4pOworICAgICAgICAgICAgICAgIG1mbiA9IElOVkFMSURfTUZO OwogICAgICAgICB9CiAjZWxzZQotICAgICAgICBtZm4gPSBtZm5feChnZm5fdG9fbWZuKGQsIF9n Zm4oZ29wLm1mbikpKTsKKyAgICAgICAgbWZuID0gZ2ZuX3RvX21mbihkLCBfZ2ZuKGdvcC5tZm4p KTsKICNlbmRpZgogCiAgICAgICAgIC8qIENoZWNrIHRoZSBwYXNzZWQgcGFnZSBmcmFtZSBmb3Ig YmFzaWMgdmFsaWRpdHkuICovCi0gICAgICAgIGlmICggdW5saWtlbHkoIW1mbl92YWxpZChfbWZu KG1mbikpKSApCisgICAgICAgIGlmICggdW5saWtlbHkoIW1mbl92YWxpZChtZm4pKSApCiAgICAg ICAgIHsKICAgICAgICAgICAgIHB1dF9nZm4oZCwgZ29wLm1mbik7CiAgICAgICAgICAgICBnZHBy aW50ayhYRU5MT0dfSU5GTywgIm91dC1vZi1yYW5nZSAlbHhcbiIsICh1bnNpZ25lZCBsb25nKWdv cC5tZm4pOwpAQCAtMjA2MCwxMiArMjA2OSwxMyBAQCBnbnR0YWJfdHJhbnNmZXIoCiAgICAgICAg ICAgICBnb3RvIGNvcHliYWNrOwogICAgICAgICB9CiAKLSAgICAgICAgcmMgPSBndWVzdF9waHlz bWFwX3JlbW92ZV9wYWdlKGQsIF9nZm4oZ29wLm1mbiksIF9tZm4obWZuKSwgMCk7CisgICAgICAg IHJjID0gZ3Vlc3RfcGh5c21hcF9yZW1vdmVfcGFnZShkLCBfZ2ZuKGdvcC5tZm4pLCBtZm4sIDAp OwogICAgICAgICBnbnR0YWJfZmx1c2hfdGxiKGQpOwogICAgICAgICBpZiAoIHJjICkKICAgICAg ICAgewotICAgICAgICAgICAgZ2RwcmludGsoWEVOTE9HX0lORk8sICJjYW4ndCByZW1vdmUgR0ZO ICUiUFJJX3hlbl9wZm4iIChNRk4gJWx4KVxuIiwKLSAgICAgICAgICAgICAgICAgICAgIGdvcC5t Zm4sIG1mbik7CisgICAgICAgICAgICBnZHByaW50ayhYRU5MT0dfSU5GTywKKyAgICAgICAgICAg ICAgICAgICAgICJjYW4ndCByZW1vdmUgR0ZOICUiUFJJX3hlbl9wZm4iIChNRk4gJSMiUFJJX21m biIpXG4iLAorICAgICAgICAgICAgICAgICAgICAgZ29wLm1mbiwgbWZuX3gobWZuKSk7CiAgICAg ICAgICAgICBnb3Auc3RhdHVzID0gR05UU1RfZ2VuZXJhbF9lcnJvcjsKICAgICAgICAgICAgIGdv dG8gcHV0X2dmbl9hbmRfY29weWJhY2s7CiAgICAgICAgIH0KQEAgLTIwOTQsNyArMjEwNCw3IEBA IGdudHRhYl90cmFuc2ZlcigKICAgICAgICAgICAgIGUsIGUtPmdyYW50X3RhYmxlLT5ndF92ZXJz aW9uID4gMSB8fCBwYWdpbmdfbW9kZV90cmFuc2xhdGUoZSkKICAgICAgICAgICAgICAgID8gQklU U19QRVJfTE9ORyArIFBBR0VfU0hJRlQgOiAzMiArIFBBR0VfU0hJRlQpOwogICAgICAgICBpZiAo IG1heF9iaXRzaXplIDwgQklUU19QRVJfTE9ORyArIFBBR0VfU0hJRlQgJiYKLSAgICAgICAgICAg ICAobWZuID4+IChtYXhfYml0c2l6ZSAtIFBBR0VfU0hJRlQpKSApCisgICAgICAgICAgICAgKG1m bl94KG1mbikgPj4gKG1heF9iaXRzaXplIC0gUEFHRV9TSElGVCkpICkKICAgICAgICAgewogICAg ICAgICAgICAgc3RydWN0IHBhZ2VfaW5mbyAqbmV3X3BhZ2U7CiAKQEAgLTIxMDYsNyArMjExNiw3 IEBAIGdudHRhYl90cmFuc2ZlcigKICAgICAgICAgICAgICAgICBnb3RvIHVubG9ja19hbmRfY29w eWJhY2s7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGNvcHlfZG9tYWluX3BhZ2UoX21m bihwYWdlX3RvX21mbihuZXdfcGFnZSkpLCBfbWZuKG1mbikpOworICAgICAgICAgICAgY29weV9k b21haW5fcGFnZShwYWdlX3RvX21mbihuZXdfcGFnZSksIG1mbik7CiAKICAgICAgICAgICAgIHBh Z2UtPmNvdW50X2luZm8gJj0gfihQR0NfY291bnRfbWFza3xQR0NfYWxsb2NhdGVkKTsKICAgICAg ICAgICAgIGZyZWVfZG9taGVhcF9wYWdlKHBhZ2UpOwpAQCAtMjE4MywxOCArMjE5MywxNyBAQCBn bnR0YWJfdHJhbnNmZXIoCiAgICAgICAgIHsKICAgICAgICAgICAgIGdyYW50X2VudHJ5X3YxX3Qg KnNoYSA9ICZzaGFyZWRfZW50cnlfdjEoZS0+Z3JhbnRfdGFibGUsIGdvcC5yZWYpOwogCi0gICAg ICAgICAgICBndWVzdF9waHlzbWFwX2FkZF9wYWdlKGUsIF9nZm4oc2hhLT5mcmFtZSksIF9tZm4o bWZuKSwgMCk7CisgICAgICAgICAgICBndWVzdF9waHlzbWFwX2FkZF9wYWdlKGUsIF9nZm4oc2hh LT5mcmFtZSksIG1mbiwgMCk7CiAgICAgICAgICAgICBpZiAoICFwYWdpbmdfbW9kZV90cmFuc2xh dGUoZSkgKQotICAgICAgICAgICAgICAgIHNoYS0+ZnJhbWUgPSBtZm47CisgICAgICAgICAgICAg ICAgc2hhLT5mcmFtZSA9IG1mbl94KG1mbik7CiAgICAgICAgIH0KICAgICAgICAgZWxzZQogICAg ICAgICB7CiAgICAgICAgICAgICBncmFudF9lbnRyeV92Ml90ICpzaGEgPSAmc2hhcmVkX2VudHJ5 X3YyKGUtPmdyYW50X3RhYmxlLCBnb3AucmVmKTsKIAotICAgICAgICAgICAgZ3Vlc3RfcGh5c21h cF9hZGRfcGFnZShlLCBfZ2ZuKHNoYS0+ZnVsbF9wYWdlLmZyYW1lKSwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgX21mbihtZm4pLCAwKTsKKyAgICAgICAgICAgIGd1ZXN0X3Bo eXNtYXBfYWRkX3BhZ2UoZSwgX2dmbihzaGEtPmZ1bGxfcGFnZS5mcmFtZSksIG1mbiwgMCk7CiAg ICAgICAgICAgICBpZiAoICFwYWdpbmdfbW9kZV90cmFuc2xhdGUoZSkgKQotICAgICAgICAgICAg ICAgIHNoYS0+ZnVsbF9wYWdlLmZyYW1lID0gbWZuOworICAgICAgICAgICAgICAgIHNoYS0+ZnVs bF9wYWdlLmZyYW1lID0gbWZuX3gobWZuKTsKICAgICAgICAgfQogICAgICAgICBzbXBfd21iKCk7 CiAgICAgICAgIHNoYXJlZF9lbnRyeV9oZWFkZXIoZS0+Z3JhbnRfdGFibGUsIGdvcC5yZWYpLT5m bGFncyB8PQpAQCAtMjIzMCw3ICsyMjM5LDcgQEAgcmVsZWFzZV9ncmFudF9mb3JfY29weSgKICAg ICBzdHJ1Y3QgZ3JhbnRfdGFibGUgKnJndCA9IHJkLT5ncmFudF90YWJsZTsKICAgICBncmFudF9l bnRyeV9oZWFkZXJfdCAqc2hhOwogICAgIHN0cnVjdCBhY3RpdmVfZ3JhbnRfZW50cnkgKmFjdDsK LSAgICB1bnNpZ25lZCBsb25nIHJfZnJhbWU7CisgICAgbWZuX3Qgcl9mcmFtZTsKICAgICB1aW50 MTZfdCAqc3RhdHVzOwogICAgIGdyYW50X3JlZl90IHRyYW5zX2dyZWY7CiAgICAgc3RydWN0IGRv bWFpbiAqdGQ7CkBAIC0yMzA3LDcgKzIzMTYsNyBAQCBzdGF0aWMgdm9pZCBmaXh1cF9zdGF0dXNf Zm9yX2NvcHlfcGluKGNvbnN0IHN0cnVjdCBhY3RpdmVfZ3JhbnRfZW50cnkgKmFjdCwKIHN0YXRp YyBpbnQKIGFjcXVpcmVfZ3JhbnRfZm9yX2NvcHkoCiAgICAgc3RydWN0IGRvbWFpbiAqcmQsIGdy YW50X3JlZl90IGdyZWYsIGRvbWlkX3QgbGRvbSwgYm9vbCByZWFkb25seSwKLSAgICB1bnNpZ25l ZCBsb25nICpmcmFtZSwgc3RydWN0IHBhZ2VfaW5mbyAqKnBhZ2UsCisgICAgbWZuX3QgKmZyYW1l LCBzdHJ1Y3QgcGFnZV9pbmZvICoqcGFnZSwKICAgICB1aW50MTZfdCAqcGFnZV9vZmYsIHVpbnQx Nl90ICpsZW5ndGgsIGJvb2wgYWxsb3dfdHJhbnNpdGl2ZSkKIHsKICAgICBzdHJ1Y3QgZ3JhbnRf dGFibGUgKnJndCA9IHJkLT5ncmFudF90YWJsZTsKQEAgLTIzMTksNyArMjMyOCw3IEBAIGFjcXVp cmVfZ3JhbnRfZm9yX2NvcHkoCiAgICAgZG9taWRfdCB0cmFuc19kb21pZDsKICAgICBncmFudF9y ZWZfdCB0cmFuc19ncmVmOwogICAgIHN0cnVjdCBkb21haW4gKnRkOwotICAgIHVuc2lnbmVkIGxv bmcgZ3JhbnRfZnJhbWU7CisgICAgbWZuX3QgZ3JhbnRfZnJhbWU7CiAgICAgdWludDE2X3QgdHJh bnNfcGFnZV9vZmY7CiAgICAgdWludDE2X3QgdHJhbnNfbGVuZ3RoOwogICAgIGJvb2wgaXNfc3Vi X3BhZ2U7CkBAIC0yNDIwLDcgKzI0MjksOCBAQCBhY3F1aXJlX2dyYW50X2Zvcl9jb3B5KAogICAg ICAgICAgKi8KICAgICAgICAgaWYgKCByZ3QtPmd0X3ZlcnNpb24gIT0gMiB8fAogICAgICAgICAg ICAgIGFjdC0+cGluICE9IG9sZF9waW4gfHwKLSAgICAgICAgICAgICAob2xkX3BpbiAmJiAoYWN0 LT5kb21pZCAhPSBsZG9tIHx8IGFjdC0+ZnJhbWUgIT0gZ3JhbnRfZnJhbWUgfHwKKyAgICAgICAg ICAgICAob2xkX3BpbiAmJiAoYWN0LT5kb21pZCAhPSBsZG9tIHx8CisgICAgICAgICAgICAgICAg ICAgICAgICAgICFtZm5fZXEoYWN0LT5mcmFtZSwgZ3JhbnRfZnJhbWUpIHx8CiAgICAgICAgICAg ICAgICAgICAgICAgICAgIGFjdC0+c3RhcnQgIT0gdHJhbnNfcGFnZV9vZmYgfHwKICAgICAgICAg ICAgICAgICAgICAgICAgICAgYWN0LT5sZW5ndGggIT0gdHJhbnNfbGVuZ3RoIHx8CiAgICAgICAg ICAgICAgICAgICAgICAgICAgIGFjdC0+dHJhbnNfZG9tYWluICE9IHRkIHx8CkBAIC0yNTEyLDcg KzI1MjIsNyBAQCBhY3F1aXJlX2dyYW50X2Zvcl9jb3B5KAogICAgIH0KICAgICBlbHNlCiAgICAg ewotICAgICAgICBBU1NFUlQobWZuX3ZhbGlkKF9tZm4oYWN0LT5mcmFtZSkpKTsKKyAgICAgICAg QVNTRVJUKG1mbl92YWxpZChhY3QtPmZyYW1lKSk7CiAgICAgICAgICpwYWdlID0gbWZuX3RvX3Bh Z2UoYWN0LT5mcmFtZSk7CiAgICAgICAgIHRkID0gcGFnZV9nZXRfb3duZXJfYW5kX3JlZmVyZW5j ZSgqcGFnZSk7CiAgICAgICAgIC8qCkBAIC0yNTY3LDcgKzI1NzcsNyBAQCBzdHJ1Y3QgZ250dGFi X2NvcHlfYnVmIHsKIAogICAgIC8qIE1hcHBlZCBldGMuICovCiAgICAgc3RydWN0IGRvbWFpbiAq ZG9tYWluOwotICAgIHVuc2lnbmVkIGxvbmcgZnJhbWU7CisgICAgbWZuX3QgZnJhbWU7CiAgICAg c3RydWN0IHBhZ2VfaW5mbyAqcGFnZTsKICAgICB2b2lkICp2aXJ0OwogICAgIGJvb2xfdCByZWFk X29ubHk7CkBAIC0yNjk4LDE1ICsyNzA4LDE2IEBAIHN0YXRpYyBpbnQgZ250dGFiX2NvcHlfY2xh aW1fYnVmKGNvbnN0IHN0cnVjdCBnbnR0YWJfY29weSAqb3AsCiAgICAgICAgIGlmICggIWdldF9w YWdlX3R5cGUoYnVmLT5wYWdlLCBQR1Rfd3JpdGFibGVfcGFnZSkgKQogICAgICAgICB7CiAgICAg ICAgICAgICBpZiAoICFidWYtPmRvbWFpbi0+aXNfZHlpbmcgKQotICAgICAgICAgICAgICAgIGdk cHJpbnRrKFhFTkxPR19XQVJOSU5HLCAiQ291bGQgbm90IGdldCB3cml0YWJsZSBmcmFtZSAlbHhc biIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgYnVmLT5mcmFtZSk7CisgICAgICAgICAgICAg ICAgZ2RwcmludGsoWEVOTE9HX1dBUk5JTkcsCisgICAgICAgICAgICAgICAgICAgICAgICAgIkNv dWxkIG5vdCBnZXQgd3JpdGFibGUgZnJhbWUgJSMiUFJJX21mbiJcbiIsCisgICAgICAgICAgICAg ICAgICAgICAgICAgbWZuX3goYnVmLT5mcmFtZSkpOwogICAgICAgICAgICAgcmMgPSBHTlRTVF9n ZW5lcmFsX2Vycm9yOwogICAgICAgICAgICAgZ290byBvdXQ7CiAgICAgICAgIH0KICAgICAgICAg YnVmLT5oYXZlX3R5cGUgPSAxOwogICAgIH0KIAotICAgIGJ1Zi0+dmlydCA9IG1hcF9kb21haW5f cGFnZShfbWZuKGJ1Zi0+ZnJhbWUpKTsKKyAgICBidWYtPnZpcnQgPSBtYXBfZG9tYWluX3BhZ2Uo YnVmLT5mcmFtZSk7CiAgICAgcmMgPSBHTlRTVF9va2F5OwogCiAgb3V0OgpAQCAtMzIwNCw3ICsz MjE1LDcgQEAgc3RhdGljIGludCBjYWNoZV9mbHVzaChjb25zdCBnbnR0YWJfY2FjaGVfZmx1c2hf dCAqY2ZsdXNoLCBncmFudF9yZWZfdCAqY3VyX3JlZikKIHsKICAgICBzdHJ1Y3QgZG9tYWluICpk LCAqb3duZXI7CiAgICAgc3RydWN0IHBhZ2VfaW5mbyAqcGFnZTsKLSAgICB1bnNpZ25lZCBsb25n IG1mbjsKKyAgICBtZm5fdCBtZm47CiAgICAgc3RydWN0IGFjdGl2ZV9ncmFudF9lbnRyeSAqYWN0 ID0gTlVMTDsKICAgICB2b2lkICp2OwogICAgIGludCByZXQ7CkBAIC0zMjIzLDkgKzMyMzQsOSBA QCBzdGF0aWMgaW50IGNhY2hlX2ZsdXNoKGNvbnN0IGdudHRhYl9jYWNoZV9mbHVzaF90ICpjZmx1 c2gsIGdyYW50X3JlZl90ICpjdXJfcmVmKQogICAgICAgICByZXR1cm4gLUVPUE5PVFNVUFA7CiAK ICAgICBkID0gcmN1X2xvY2tfY3VycmVudF9kb21haW4oKTsKLSAgICBtZm4gPSBjZmx1c2gtPmEu ZGV2X2J1c19hZGRyID4+IFBBR0VfU0hJRlQ7CisgICAgbWZuID0gbWFkZHJfdG9fbWZuKGNmbHVz aC0+YS5kZXZfYnVzX2FkZHIpOwogCi0gICAgaWYgKCAhbWZuX3ZhbGlkKF9tZm4obWZuKSkgKQor ICAgIGlmICggIW1mbl92YWxpZChtZm4pICkKICAgICB7CiAgICAgICAgIHJjdV91bmxvY2tfZG9t YWluKGQpOwogICAgICAgICByZXR1cm4gLUVJTlZBTDsKQEAgLTMyNTMsNyArMzI2NCw3IEBAIHN0 YXRpYyBpbnQgY2FjaGVfZmx1c2goY29uc3QgZ250dGFiX2NhY2hlX2ZsdXNoX3QgKmNmbHVzaCwg Z3JhbnRfcmVmX3QgKmN1cl9yZWYpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICB2ID0gbWFwX2Rv bWFpbl9wYWdlKF9tZm4obWZuKSk7CisgICAgdiA9IG1hcF9kb21haW5fcGFnZShtZm4pOwogICAg IHYgKz0gY2ZsdXNoLT5vZmZzZXQ7CiAKICAgICBpZiAoIChjZmx1c2gtPm9wICYgR05UVEFCX0NB Q0hFX0lOVkFMKSAmJiAoY2ZsdXNoLT5vcCAmIEdOVFRBQl9DQUNIRV9DTEVBTikgKQpAQCAtMzU3 MCw3ICszNTgxLDcgQEAgZ250dGFiX3JlbGVhc2VfbWFwcGluZ3MoCiAgICAgICAgICAgICB7CiAg ICAgICAgICAgICAgICAgQlVHX09OKCEoYWN0LT5waW4gJiBHTlRQSU5fZGV2cl9tYXNrKSk7CiAg ICAgICAgICAgICAgICAgYWN0LT5waW4gLT0gR05UUElOX2RldnJfaW5jOwotICAgICAgICAgICAg ICAgIGlmICggIWlzX2lvbWVtX3BhZ2UoX21mbihhY3QtPmZyYW1lKSkgKQorICAgICAgICAgICAg ICAgIGlmICggIWlzX2lvbWVtX3BhZ2UoYWN0LT5mcmFtZSkgKQogICAgICAgICAgICAgICAgICAg ICBwdXRfcGFnZShwZyk7CiAgICAgICAgICAgICB9CiAKQEAgLTM1NzksNyArMzU5MCw3IEBAIGdu dHRhYl9yZWxlYXNlX21hcHBpbmdzKAogICAgICAgICAgICAgICAgIEJVR19PTighKGFjdC0+cGlu ICYgR05UUElOX2hzdHJfbWFzaykpOwogICAgICAgICAgICAgICAgIGFjdC0+cGluIC09IEdOVFBJ Tl9oc3RyX2luYzsKICAgICAgICAgICAgICAgICBpZiAoIGdudHRhYl9yZWxlYXNlX2hvc3RfbWFw cGluZ3MoZCkgJiYKLSAgICAgICAgICAgICAgICAgICAgICFpc19pb21lbV9wYWdlKF9tZm4oYWN0 LT5mcmFtZSkpICkKKyAgICAgICAgICAgICAgICAgICAgICFpc19pb21lbV9wYWdlKGFjdC0+ZnJh bWUpICkKICAgICAgICAgICAgICAgICAgICAgcHV0X3BhZ2UocGcpOwogICAgICAgICAgICAgfQog ICAgICAgICB9CkBAIC0zNTg5LDcgKzM2MDAsNyBAQCBnbnR0YWJfcmVsZWFzZV9tYXBwaW5ncygK ICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBCVUdfT04oIShhY3QtPnBpbiAmIEdOVFBJ Tl9kZXZ3X21hc2spKTsKICAgICAgICAgICAgICAgICBhY3QtPnBpbiAtPSBHTlRQSU5fZGV2d19p bmM7Ci0gICAgICAgICAgICAgICAgaWYgKCAhaXNfaW9tZW1fcGFnZShfbWZuKGFjdC0+ZnJhbWUp KSApCisgICAgICAgICAgICAgICAgaWYgKCAhaXNfaW9tZW1fcGFnZShhY3QtPmZyYW1lKSApCiAg ICAgICAgICAgICAgICAgICAgIHB1dF9wYWdlX2FuZF90eXBlKHBnKTsKICAgICAgICAgICAgIH0K IApAQCAtMzU5OCw3ICszNjA5LDcgQEAgZ250dGFiX3JlbGVhc2VfbWFwcGluZ3MoCiAgICAgICAg ICAgICAgICAgQlVHX09OKCEoYWN0LT5waW4gJiBHTlRQSU5faHN0d19tYXNrKSk7CiAgICAgICAg ICAgICAgICAgYWN0LT5waW4gLT0gR05UUElOX2hzdHdfaW5jOwogICAgICAgICAgICAgICAgIGlm ICggZ250dGFiX3JlbGVhc2VfaG9zdF9tYXBwaW5ncyhkKSAmJgotICAgICAgICAgICAgICAgICAg ICAgIWlzX2lvbWVtX3BhZ2UoX21mbihhY3QtPmZyYW1lKSkgKQorICAgICAgICAgICAgICAgICAg ICAgIWlzX2lvbWVtX3BhZ2UoYWN0LT5mcmFtZSkgKQogICAgICAgICAgICAgICAgIHsKICAgICAg ICAgICAgICAgICAgICAgaWYgKCBnbnR0YWJfaG9zdF9tYXBwaW5nX2dldF9wYWdlX3R5cGUoKG1h cC0+ZmxhZ3MgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgR05UTUFQX3JlYWRvbmx5KSwKQEAgLTM2NTAsMTIgKzM2NjEsMTIgQEAg dm9pZCBncmFudF90YWJsZV93YXJuX2FjdGl2ZV9ncmFudHMoc3RydWN0IGRvbWFpbiAqZCkKICNp Zm5kZWYgTkRFQlVHCiAgICAgICAgICAgICAgICAgICAgIkdGTiAlbHgsICIKICNlbmRpZgotICAg ICAgICAgICAgICAgICAgICJNRk46ICVseClcbiIsCisgICAgICAgICAgICAgICAgICAgIk1GTjog JSMiUFJJX21mbiIpXG4iLAogICAgICAgICAgICAgICAgICAgIGQtPmRvbWFpbl9pZCwgcmVmLAog I2lmbmRlZiBOREVCVUcKICAgICAgICAgICAgICAgICAgICBnZm5feChhY3QtPmdmbiksCiAjZW5k aWYKLSAgICAgICAgICAgICAgICAgICBhY3QtPmZyYW1lKTsKKyAgICAgICAgICAgICAgICAgICBt Zm5feChhY3QtPmZyYW1lKSk7CiAgICAgICAgIGFjdGl2ZV9lbnRyeV9yZWxlYXNlKGFjdCk7CiAg ICAgfQogCkBAIC0zODU1LDkgKzM4NjYsOSBAQCBzdGF0aWMgdm9pZCBnbnR0YWJfdXNhZ2VfcHJp bnQoc3RydWN0IGRvbWFpbiAqcmQpCiAKICAgICAgICAgZmlyc3QgPSAwOwogCi0gICAgICAgIC8q ICAgICAgWzB4WFhYXSAgZGRkZGQgMHhYWFhYWFggMHhYWFhYWFhYWCAgICAgIGRkZGRkIDB4WFhY WFhYIDB4WFggKi8KLSAgICAgICAgcHJpbnRrKCJbMHglMDN4XSAgJTVkIDB4JTA2bHggMHglMDh4 ICAgICAgJTVkIDB4JTA2IlBSSXg2NCIgMHglMDJ4XG4iLAotICAgICAgICAgICAgICAgcmVmLCBh Y3QtPmRvbWlkLCBhY3QtPmZyYW1lLCBhY3QtPnBpbiwKKyAgICAgICAgLyogICAgICBbMHhYWFhd ICBkZGRkZCAweFhYWFhYIDB4WFhYWFhYWFggICAgICBkZGRkZCAweFhYWFhYWCAweFhYICovCisg ICAgICAgIHByaW50aygiWzB4JTAzeF0gICU1ZCAweCUiUFJJX21mbiIgMHglMDh4ICAgICAgJTVk IDB4JTA2IlBSSXg2NCIgMHglMDJ4XG4iLAorICAgICAgICAgICAgICAgcmVmLCBhY3QtPmRvbWlk LCBtZm5feChhY3QtPmZyYW1lKSwgYWN0LT5waW4sCiAgICAgICAgICAgICAgICBzaGEtPmRvbWlk LCBmcmFtZSwgc3RhdHVzKTsKICAgICAgICAgYWN0aXZlX2VudHJ5X3JlbGVhc2UoYWN0KTsKICAg ICB9CmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20tYXJtL2dyYW50X3RhYmxlLmggYi94ZW4v aW5jbHVkZS9hc20tYXJtL2dyYW50X3RhYmxlLmgKaW5kZXggZmZmZjE4ZDQ1Ni4uNGM4Nzg3MGY0 OCAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvYXNtLWFybS9ncmFudF90YWJsZS5oCisrKyBiL3hl bi9pbmNsdWRlL2FzbS1hcm0vZ3JhbnRfdGFibGUuaApAQCAtMTgsNyArMTgsNyBAQCBpbnQgY3Jl YXRlX2dyYW50X2hvc3RfbWFwcGluZyh1bnNpZ25lZCBsb25nIGdwYWRkciwgbWZuX3QgbWZuLAog I2RlZmluZSBnbnR0YWJfaG9zdF9tYXBwaW5nX2dldF9wYWdlX3R5cGUocm8sIGxkLCByZCkgKDAp CiBpbnQgcmVwbGFjZV9ncmFudF9ob3N0X21hcHBpbmcodW5zaWduZWQgbG9uZyBncGFkZHIsIG1m bl90IG1mbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIG5l d19ncGFkZHIsIHVuc2lnbmVkIGludCBmbGFncyk7Ci12b2lkIGdudHRhYl9tYXJrX2RpcnR5KHN0 cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgbCk7Cit2b2lkIGdudHRhYl9tYXJrX2RpcnR5 KHN0cnVjdCBkb21haW4gKmQsIG1mbl90IG1mbik7CiAjZGVmaW5lIGdudHRhYl9jcmVhdGVfc3Rh dHVzX3BhZ2UoZCwgdCwgaSkgZG8ge30gd2hpbGUgKDApCiAjZGVmaW5lIGdudHRhYl9zdGF0dXNf Z21mbihkLCB0LCBpKSAoMCkKICNkZWZpbmUgZ250dGFiX3JlbGVhc2VfaG9zdF9tYXBwaW5ncyhk b21haW4pIDEKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS14ODYvZ3JhbnRfdGFibGUuaCBi L3hlbi9pbmNsdWRlL2FzbS14ODYvZ3JhbnRfdGFibGUuaAppbmRleCBlNDBhYzhlM2U3Li4zMjA3 OTI3NGZlIDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9hc20teDg2L2dyYW50X3RhYmxlLmgKKysr IGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9ncmFudF90YWJsZS5oCkBAIC03Niw3ICs3Niw3IEBAIHN0 YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGdudHRhYl9kb20wX21heCh2b2lkKQogI2RlZmluZSBn bnR0YWJfc3RhdHVzX2dtZm4oZCwgdCwgaSkgICAgICAgICAgICAgICAgICAgICBcCiAgICAgKG1m bl90b19nbWZuKGQsIGdudHRhYl9zdGF0dXNfbWZuKHQsIGkpKSkKIAotI2RlZmluZSBnbnR0YWJf bWFya19kaXJ0eShkLCBmKSBwYWdpbmdfbWFya19kaXJ0eSgoZCksIF9tZm4oZikpCisjZGVmaW5l IGdudHRhYl9tYXJrX2RpcnR5KGQsIGYpIHBhZ2luZ19tYXJrX2RpcnR5KChkKSwgZikKIAogc3Rh dGljIGlubGluZSB2b2lkIGdudHRhYl9jbGVhcl9mbGFnKHVuc2lnbmVkIGludCBuciwgdWludDE2 X3QgKnN0KQogewotLSAKMi4xMS4wCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVu cHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZv L3hlbi1kZXZlbA==