From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cooper Subject: [PATCH RFC 33/44] x86/smp: Use the percpu GDT/LDT mappings Date: Thu, 4 Jan 2018 20:21:58 +0000 Message-ID: <1515097329-31902-34-git-send-email-andrew.cooper3@citrix.com> References: <1515097329-31902-1-git-send-email-andrew.cooper3@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1515097329-31902-1-git-send-email-andrew.cooper3@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: Xen-devel Cc: Andrew Cooper List-Id: xen-devel@lists.xenproject.org VGhpcyBpcyB1bmZvcnR1bmF0ZWx5IHF1aXRlIGludmFzaXZlLCBiZWNhdXNlIG9mIHRoZSBpbXBh Y3Qgb24gdGhlIGNvbnRleHQKc3dpdGNoIHBhdGguCgpQViB2Y3B1cyBnYWluIGFuIGFycmF5IG9m IGxkdCBhbmQgZ2R0IHB0ZXMgKHJlcGxhY2luZyBnZHRfZnJhbWVzW10pLCB3aGljaCBtYXAKdGhl IGZyYW1lcyBsb2FkZWQgYnkgSFlQRVJDQUxMX3NldF9nZHQsIG9yIGZhdWx0ZWQgaW4gZm9yIHRo ZSBMRFQuICBFYWNoCnByZXNlbnQgUFRFIGhlcmUgd2hpY2ggaXNuJ3QgYSByZWFkLW9ubHkgbWFw cGluZyBvZiB6ZXJvX3BhZ2UgaG9sZHMgYSB0eXBlCnJlZmVyZW5jZS4KCldoZW4gY29udGV4dCBz d2l0Y2hpbmcgdG8gYSB2Y3B1IHdoaWNoIG5lZWRzIGEgZnVsbCBHRFQgb3IgTERULCB0aGUgcHRl cyBhcmUKY29waWVkIGluIGZyb20gdGhlIGFib3ZlIGFycmF5cywgd2hpbGUgaWYgY29udGV4dCBz d2l0Y2hpbmcgYXdheSBmcm9tIHZjcHUKd2hpY2ggbmVlZHMgYSBmdWxsIEdEVCBvciBMRFQsIHRo ZSBwdGVzIGFyZSByZXNldCBiYWNrIHRvIGRlZmF1bHQgdmFsdWVzLiAgQXMKYSBzaWRlIGVmZmVj dCwgdGhlIEdEVC9MRFQgY3JlYXRlL2Rlc3Ryb3kgZnVuY3Rpb25zIG5lZWQgdG8gYWRqdXN0IHRo ZSBwZXJjcHUKbWFwcGluZ3MgaWYgdGhleSBhcmUgcnVubmluZyBpbiBjdXJyZW50IGNvbnRleHQu CgpPdmVyYWxsLCB0aGUgR0RUIGFuZCBMRFQgYmFzZSBhZGRyZXNzZXMgYXJlIGFsd2F5cyB0aGUg c2FtZSwgYW5kIHRoaXMgZGVwZW5kCm9uIHRoZSBjb250ZXh0IHN3aXRjaCBsb2dpYyBoYXBwZW5p bmcgYmVmb3JlIHdyaXRlX3B0YmFzZSgpLCBzbyB0aGUgVExCIGZsdXNoCnJlbW92ZXMgYW55IHN0 YWxlIG1hcHBpbmdzLiAgV2hpbGUgYWx0ZXJpbmcgbG9hZF9MRFQoKSdzIGJlaGF2aW91ciB0byBj b3BlLAppbnRyb2R1Y2UgbGF6eSBsb2FkaW5nIHRvIGF2b2lkIGV4ZWN1dGluZyBsbGR0IGluIHRo ZSBjb21tb24gY2FzZS4KClRoZSBhcmNoX3tnZXQsc2V0fV9pbmZvX2d1ZXN0KCkgZnVuY3Rpb25z IG5lZWQgYWRqdXN0aW5nIHRvIGNvcGUgd2l0aCB0aGUgZmFjdAp0aGF0IHRoZXkgd2lsbCBub3cg ZmluZCByZWZlcmVuY2VzIHRvIHplcm9fcGFnZSBpbiB0aGUgcHRlcywgd2hpY2ggbmVlZApza2lw cGluZy4KCkxvYWRpbmcgb2YgR0RUUiBub3cgaGFwcGVucyBvbmNlIGF0IGJvb3QsIGluIGVhcmx5 X3N3aXRjaF90b19pZGxlKCkuICBBcyB0aGUKYmFzZSBhZGRyZXNzIGlzIG5vdyBjb25zdGFudCBh bmQgYWx3YXlzIG1hcHBlZCwgd2UgY2FuIHJlbW92ZSBsZ2R0KCkgY2FsbHMKZnJvbSB0aGUgY29u dGV4dCBzd2l0Y2ggcGF0aCBhbmQgRUZJIFJ1bnRpbWUgU2VydmljZXMgcGF0aC4gIEZpbmFsbHks CkhPU1RfR0RUUl9CQVNFIGluIHRoZSBWTUNTIG5lZWRzIHRvIGJlIGFkanVzdGVkLCBhbmQgbW92 ZXMgaW50bwpjb25zdHJ1Y3Rfdm1jcygpLgoKU2lnbmVkLW9mZi1ieTogQW5kcmV3IENvb3BlciA8 YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KLS0tCnYyOgogKiBGaXggcHZfZGVzdHJveV9sZHQo KSB0byByZWxlYXNlIHRoZSBjb3JyZWN0IHJlZmVyZW5jZXMgd2hlbiB0aGVyZSB3ZXJlCiAgIG91 dHN0YW5kaW5nIExEVCBmcmFtZXMgYXQgZG9tYWluIGRlc3RydWN0aW9uLgotLS0KIHhlbi9hcmNo L3g4Ni9jcHUvY29tbW9uLmMgICAgICAgICAgIHwgIDcgLS0tLQogeGVuL2FyY2gveDg2L2RvbWFp bi5jICAgICAgICAgICAgICAgfCA3MiArKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0t LS0tCiB4ZW4vYXJjaC94ODYvZG9tY3RsLmMgICAgICAgICAgICAgICB8IDEzICsrKysrLS0KIHhl bi9hcmNoL3g4Ni9odm0vdm14L3ZtY3MuYyAgICAgICAgIHwgIDQgKy0tCiB4ZW4vYXJjaC94ODYv cHYvZGVzY3JpcHRvci10YWJsZXMuYyB8IDMwICsrKysrKysrKystLS0tLS0KIHhlbi9hcmNoL3g4 Ni9wdi9lbXVsYXRlLmggICAgICAgICAgIHwgIDQgKy0tCiB4ZW4vYXJjaC94ODYvcHYvbW0uYyAg ICAgICAgICAgICAgICB8ICAzICstCiB4ZW4vYXJjaC94ODYvc2V0dXAuYyAgICAgICAgICAgICAg ICB8IDEwICsrKystLQogeGVuL2FyY2gveDg2L3RyYXBzLmMgICAgICAgICAgICAgICAgfCAzNiAr Ky0tLS0tLS0tLS0tLS0tLS0tCiB4ZW4vY29tbW9uL2VmaS9ydW50aW1lLmMgICAgICAgICAgICB8 IDIwIC0tLS0tLS0tLS0tCiB4ZW4vaW5jbHVkZS9hc20teDg2L2NvbmZpZy5oICAgICAgICB8ICAy ICsrCiB4ZW4vaW5jbHVkZS9hc20teDg2L2RvbWFpbi5oICAgICAgICB8IDE3ICsrKysrLS0tLQog eGVuL2luY2x1ZGUvYXNtLXg4Ni9sZHQuaCAgICAgICAgICAgfCAxNSArKysrKy0tLQogMTMgZmls ZXMgY2hhbmdlZCwgMTEwIGluc2VydGlvbnMoKyksIDEyMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS94ZW4vYXJjaC94ODYvY3B1L2NvbW1vbi5jIGIveGVuL2FyY2gveDg2L2NwdS9jb21tb24u YwppbmRleCAxNDc0M2I2Li5kZWNkY2Q1IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvY3B1L2Nv bW1vbi5jCisrKyBiL3hlbi9hcmNoL3g4Ni9jcHUvY29tbW9uLmMKQEAgLTY1MywxMSArNjUzLDYg QEAgdm9pZCBsb2FkX3N5c3RlbV90YWJsZXModm9pZCkKIAlzdHJ1Y3QgZGVzY19zdHJ1Y3QgKmNv bXBhdF9nZHQgPQogCQl0aGlzX2NwdShjb21wYXRfZ2R0X3RhYmxlKSAtIEZJUlNUX1JFU0VSVkVE X0dEVF9FTlRSWTsKIAotCWNvbnN0IHN0cnVjdCBkZXNjX3B0ciBnZHRyID0gewotCQkuYmFzZSA9 ICh1bnNpZ25lZCBsb25nKWdkdCwKLQkJLmxpbWl0ID0gTEFTVF9SRVNFUlZFRF9HRFRfQllURSwK LQl9OwotCiAJKnRzcyA9IChzdHJ1Y3QgdHNzX3N0cnVjdCl7CiAJCS8qIE1haW4gc3RhY2sgZm9y IGludGVycnVwdHMvZXhjZXB0aW9ucy4gKi8KIAkJLnJzcDAgPSBzdGFja19ib3R0b20sCkBAIC02 OTMsOSArNjg4LDcgQEAgdm9pZCBsb2FkX3N5c3RlbV90YWJsZXModm9pZCkKIAkJb2Zmc2V0b2Yo c3RydWN0IHRzc19zdHJ1Y3QsIF9fY2FjaGVsaW5lX2ZpbGxlcikgLSAxLAogCQlTWVNfREVTQ190 c3NfYnVzeSk7CiAKLQlsZ2R0KCZnZHRyKTsKIAlsdHIoVFNTX0VOVFJZIDw8IDMpOwotCWxsZHQo MCk7CiAKIAkvKgogCSAqIEJvdHRvbS1vZi1zdGFjayBtdXN0IGJlIDE2LWJ5dGUgYWxpZ25lZCEK ZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9kb21haW4uYyBiL3hlbi9hcmNoL3g4Ni9kb21haW4u YwppbmRleCA0NjcxYzliLi4yZDY2NWM2IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvZG9tYWlu LmMKKysrIGIveGVuL2FyY2gveDg2L2RvbWFpbi5jCkBAIC02Nyw2ICs2Nyw3IEBACiAjaW5jbHVk ZSA8YXNtL3B2L21tLmg+CiAKIERFRklORV9QRVJfQ1BVKHN0cnVjdCB2Y3B1ICosIGN1cnJfdmNw dSk7CitERUZJTkVfUEVSX0NQVSh1bnNpZ25lZCBpbnQsIGxkdF9lbnRzKTsKIAogc3RhdGljIHZv aWQgZGVmYXVsdF9pZGxlKHZvaWQpOwogdm9pZCAoKnBtX2lkbGUpICh2b2lkKSBfX3JlYWRfbW9z dGx5ID0gZGVmYXVsdF9pZGxlOwpAQCAtOTE3LDggKzkxOCwxMyBAQCBpbnQgYXJjaF9zZXRfaW5m b19ndWVzdCgKICAgICAgICAgICAgIGZhaWwgPSBjb21wYXRfcGZuX3RvX2NyMyhwZm4pICE9IGMu Y21wLT5jdHJscmVnWzNdOwogICAgICAgICB9CiAKLSAgICAgICAgZm9yICggaSA9IDA7IGkgPCBB UlJBWV9TSVpFKHYtPmFyY2gucHZfdmNwdS5nZHRfZnJhbWVzKTsgKytpICkKLSAgICAgICAgICAg IGZhaWwgfD0gdi0+YXJjaC5wdl92Y3B1LmdkdF9mcmFtZXNbaV0gIT0gYyhnZHRfZnJhbWVzW2ld KTsKKyAgICAgICAgZm9yICggaSA9IDA7IGkgPCBNQVhfUFZfR0RUX0ZSQU1FUzsgKytpICkKKyAg ICAgICAgeworICAgICAgICAgICAgcGFkZHJfdCBhZGRyID0gcGZuX3RvX3BhZGRyKGMoZ2R0X2Zy YW1lc1tpXSkpID86IF9fcGEoemVyb19wYWdlKTsKKworICAgICAgICAgICAgZmFpbCB8PSBsMWVf Z2V0X3BhZGRyKHYtPmFyY2gucHZfdmNwdS5nZHRfbDFlc1tpXSkgIT0gYWRkcjsKKyAgICAgICAg fQorCiAgICAgICAgIGZhaWwgfD0gdi0+YXJjaC5wdl92Y3B1LmdkdF9lbnRzICE9IGMoZ2R0X2Vu dHMpOwogCiAgICAgICAgIGZhaWwgfD0gdi0+YXJjaC5wdl92Y3B1LmxkdF9iYXNlICE9IGMobGR0 X2Jhc2UpOwpAQCAtMTAxNSwxMCArMTAyMSwxMCBAQCBpbnQgYXJjaF9zZXRfaW5mb19ndWVzdCgK ICAgICAgICAgcmMgPSAoaW50KXB2X3NldF9nZHQodiwgYy5uYXQtPmdkdF9mcmFtZXMsIGMubmF0 LT5nZHRfZW50cyk7CiAgICAgZWxzZQogICAgIHsKLSAgICAgICAgdW5zaWduZWQgbG9uZyBnZHRf ZnJhbWVzW0FSUkFZX1NJWkUodi0+YXJjaC5wdl92Y3B1LmdkdF9mcmFtZXMpXTsKKyAgICAgICAg dW5zaWduZWQgbG9uZyBnZHRfZnJhbWVzW01BWF9QVl9HRFRfRlJBTUVTXTsKICAgICAgICAgdW5z aWduZWQgaW50IG5yX2ZyYW1lcyA9IERJVl9ST1VORF9VUChjLmNtcC0+Z2R0X2VudHMsIDUxMik7 CiAKLSAgICAgICAgaWYgKCBucl9mcmFtZXMgPiBBUlJBWV9TSVpFKHYtPmFyY2gucHZfdmNwdS5n ZHRfZnJhbWVzKSApCisgICAgICAgIGlmICggbnJfZnJhbWVzID4gTUFYX1BWX0dEVF9GUkFNRVMg KQogICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7CiAKICAgICAgICAgZm9yICggaSA9IDA7IGkg PCBucl9mcmFtZXM7ICsraSApCkBAIC0xNTc5LDE1ICsxNTg1LDE4IEBAIHN0YXRpYyBpbmxpbmUg Ym9vbCBuZWVkX2Z1bGxfZ2R0KGNvbnN0IHN0cnVjdCBkb21haW4gKmQpCiAgICAgcmV0dXJuIGlz X3B2X2RvbWFpbihkKSAmJiAhaXNfaWRsZV9kb21haW4oZCk7CiB9CiAKK3N0YXRpYyBib29sIG5l ZWRzX2xkdChjb25zdCBzdHJ1Y3QgdmNwdSAqdikKK3sKKyAgICByZXR1cm4gaXNfcHZfdmNwdSh2 KSAmJiB2LT5hcmNoLnB2X3ZjcHUubGR0X2VudHM7Cit9CisKIHN0YXRpYyB2b2lkIF9fY29udGV4 dF9zd2l0Y2godm9pZCkKIHsKICAgICBzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqc3RhY2tfcmVncyA9 IGd1ZXN0X2NwdV91c2VyX3JlZ3MoKTsKLSAgICB1bnNpZ25lZCBpbnQgICAgICAgICAgY3B1ID0g c21wX3Byb2Nlc3Nvcl9pZCgpOworICAgIHVuc2lnbmVkIGludCAgICAgICAgICBjcHUgPSBzbXBf cHJvY2Vzc29yX2lkKCksIGk7CiAgICAgc3RydWN0IHZjcHUgICAgICAgICAgKnAgPSBwZXJfY3B1 KGN1cnJfdmNwdSwgY3B1KTsKICAgICBzdHJ1Y3QgdmNwdSAgICAgICAgICAqbiA9IGN1cnJlbnQ7 CiAgICAgc3RydWN0IGRvbWFpbiAgICAgICAgKnBkID0gcC0+ZG9tYWluLCAqbmQgPSBuLT5kb21h aW47Ci0gICAgc3RydWN0IGRlc2Nfc3RydWN0ICAgKmdkdDsKLSAgICBzdHJ1Y3QgZGVzY19wdHIg ICAgICAgZ2R0X2Rlc2M7CiAKICAgICBBU1NFUlQocCAhPSBuKTsKICAgICBBU1NFUlQoY3B1bWFz a19lbXB0eShuLT52Y3B1X2RpcnR5X2NwdW1hc2spKTsKQEAgLTE2MjcsMzggKzE2MzYsNDEgQEAg c3RhdGljIHZvaWQgX19jb250ZXh0X3N3aXRjaCh2b2lkKQogCiAgICAgcHNyX2N0eHRfc3dpdGNo X3RvKG5kKTsKIAotICAgIGdkdCA9ICFpc19wdl8zMmJpdF9kb21haW4obmQpID8gcGVyX2NwdShn ZHRfdGFibGUsIGNwdSkgOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVy X2NwdShjb21wYXRfZ2R0X3RhYmxlLCBjcHUpOworICAgIC8qIExvYWQgYSBmdWxsIG5ldyBHRFQg aWYgdGhlIG5ldyB2Y3B1IG5lZWRzIG9uZS4gKi8KICAgICBpZiAoIG5lZWRfZnVsbF9nZHQobmQp ICkKICAgICB7Ci0gICAgICAgIHVuc2lnbmVkIGxvbmcgbWZuID0gdmlydF90b19tZm4oZ2R0KTsK LSAgICAgICAgbDFfcGdlbnRyeV90ICpwbDFlID0gcHZfZ2R0X3B0ZXMobik7Ci0gICAgICAgIHVu c2lnbmVkIGludCBpOworICAgICAgICBtZW1jcHkocHZfZ2R0X3B0ZXMsIG4tPmFyY2gucHZfdmNw dS5nZHRfbDFlcywKKyAgICAgICAgICAgICAgIHNpemVvZihuLT5hcmNoLnB2X3ZjcHUuZ2R0X2wx ZXMpKTsKIAotICAgICAgICBmb3IgKCBpID0gMDsgaSA8IE5SX1JFU0VSVkVEX0dEVF9QQUdFUzsg aSsrICkKLSAgICAgICAgICAgIGwxZV93cml0ZShwbDFlICsgRklSU1RfUkVTRVJWRURfR0RUX1BB R0UgKyBpLAotICAgICAgICAgICAgICAgICAgICAgIGwxZV9mcm9tX3BmbihtZm4gKyBpLCBfX1BB R0VfSFlQRVJWSVNPUl9SVykpOworICAgICAgICBsMWVfd3JpdGUoJnB2X2dkdF9wdGVzW0ZJUlNU X1JFU0VSVkVEX0dEVF9QQUdFXSwKKyAgICAgICAgICAgICAgICAgIGwxZV9mcm9tX3Bmbih2aXJ0 X3RvX21mbighaXNfcHZfMzJiaXRfZG9tYWluKG5kKQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgID8gcGVyX2NwdShnZHRfdGFibGUsIGNwdSkKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHBlcl9jcHUoY29tcGF0X2dkdF90YWJs ZSwgY3B1KSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19QQUdFX0hZUEVSVklT T1JfUlcpKTsKICAgICB9Ci0KLSAgICBpZiAoIG5lZWRfZnVsbF9nZHQocGQpICYmCi0gICAgICAg ICAoKHAtPnZjcHVfaWQgIT0gbi0+dmNwdV9pZCkgfHwgIW5lZWRfZnVsbF9nZHQobmQpKSApCisg ICAgLyogb3IgY2xvYmJlciBhIHByZXZpb3VzIGZ1bGwgR0RULiAqLworICAgIGVsc2UgaWYgKCBu ZWVkX2Z1bGxfZ2R0KHBkKSApCiAgICAgewotICAgICAgICBnZHRfZGVzYy5saW1pdCA9IExBU1Rf UkVTRVJWRURfR0RUX0JZVEU7Ci0gICAgICAgIGdkdF9kZXNjLmJhc2UgID0gKHVuc2lnbmVkIGxv bmcpKGdkdCAtIEZJUlNUX1JFU0VSVkVEX0dEVF9FTlRSWSk7CisgICAgICAgIGwxX3BnZW50cnlf dCB6ZXJvX2wxZSA9IGwxZV9mcm9tX3BhZGRyKF9fcGEoemVyb19wYWdlKSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19QQUdFX0hZUEVSVklTT1JfUk8p OworCisgICAgICAgIGZvciAoIGkgPSAwOyBpIDwgRklSU1RfUkVTRVJWRURfR0RUX1BBR0U7ICsr aSApCisgICAgICAgICAgICBwdl9nZHRfcHRlc1tpXSA9IHplcm9fbDFlOwogCi0gICAgICAgIGxn ZHQoJmdkdF9kZXNjKTsKKyAgICAgICAgbDFlX3dyaXRlKCZwdl9nZHRfcHRlc1tGSVJTVF9SRVNF UlZFRF9HRFRfUEFHRV0sCisgICAgICAgICAgICAgICAgICBsMWVfZnJvbV9wZm4odmlydF90b19t Zm4ocGVyX2NwdShnZHRfdGFibGUsIGNwdSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIF9fUEFHRV9IWVBFUlZJU09SX1JXKSk7CiAgICAgfQogCi0gICAgd3JpdGVfcHRiYXNlKG4p OworICAgIC8qIExvYWQgdGhlIExEVCBmcmFtZXMgaWYgbmVlZGVkLiAqLworICAgIGlmICggbmVl ZHNfbGR0KG4pICkKKyAgICAgICAgbWVtY3B5KHB2X2xkdF9wdGVzLCBuLT5hcmNoLnB2X3ZjcHUu bGR0X2wxZXMsCisgICAgICAgICAgICAgICBzaXplb2Yobi0+YXJjaC5wdl92Y3B1LmxkdF9sMWVz KSk7CisgICAgLyogb3IgY2xvYmJlciB0aGUgcHJldmlvdXMgTERULiAqLworICAgIGVsc2UgaWYg KCBuZWVkc19sZHQocCkgKQorICAgICAgICBtZW1zZXQocHZfbGR0X3B0ZXMsIDAsIHNpemVvZihu LT5hcmNoLnB2X3ZjcHUubGR0X2wxZXMpKTsKIAotICAgIGlmICggbmVlZF9mdWxsX2dkdChuZCkg JiYKLSAgICAgICAgICgocC0+dmNwdV9pZCAhPSBuLT52Y3B1X2lkKSB8fCAhbmVlZF9mdWxsX2dk dChwZCkpICkKLSAgICB7Ci0gICAgICAgIGdkdF9kZXNjLmxpbWl0ID0gTEFTVF9SRVNFUlZFRF9H RFRfQllURTsKLSAgICAgICAgZ2R0X2Rlc2MuYmFzZSA9IEdEVF9WSVJUX1NUQVJUKG4pOwotCi0g ICAgICAgIGxnZHQoJmdkdF9kZXNjKTsKLSAgICB9CisgICAgd3JpdGVfcHRiYXNlKG4pOwogCiAg ICAgbG9hZF9MRFQobik7CiAKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9kb21jdGwuYyBiL3hl bi9hcmNoL3g4Ni9kb21jdGwuYwppbmRleCAzNmFiMjM1Li4yOGM3YjA0IDEwMDY0NAotLS0gYS94 ZW4vYXJjaC94ODYvZG9tY3RsLmMKKysrIGIveGVuL2FyY2gveDg2L2RvbWN0bC5jCkBAIC0xNjQy LDggKzE2NDIsMTcgQEAgdm9pZCBhcmNoX2dldF9pbmZvX2d1ZXN0KHN0cnVjdCB2Y3B1ICp2LCB2 Y3B1X2d1ZXN0X2NvbnRleHRfdSBjKQogICAgIHsKICAgICAgICAgYyhsZHRfYmFzZSA9IHYtPmFy Y2gucHZfdmNwdS5sZHRfYmFzZSk7CiAgICAgICAgIGMobGR0X2VudHMgPSB2LT5hcmNoLnB2X3Zj cHUubGR0X2VudHMpOwotICAgICAgICBmb3IgKCBpID0gMDsgaSA8IEFSUkFZX1NJWkUodi0+YXJj aC5wdl92Y3B1LmdkdF9mcmFtZXMpOyArK2kgKQotICAgICAgICAgICAgYyhnZHRfZnJhbWVzW2ld ID0gdi0+YXJjaC5wdl92Y3B1LmdkdF9mcmFtZXNbaV0pOworCisgICAgICAgIGZvciAoIGkgPSAw OyBpIDwgTUFYX1BWX0dEVF9GUkFNRVM7ICsraSApCisgICAgICAgIHsKKyAgICAgICAgICAgIHBh ZGRyX3QgYWRkciA9IGwxZV9nZXRfcGFkZHIodi0+YXJjaC5wdl92Y3B1LmdkdF9sMWVzW2ldKTsK KworICAgICAgICAgICAgaWYgKCBhZGRyID09IF9fcGEoemVyb19wYWdlKSApCisgICAgICAgICAg ICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGMoZ2R0X2ZyYW1lc1tpXSA9IHBhZGRyX3RvX3Bm bihhZGRyKSk7CisgICAgICAgIH0KKwogICAgICAgICBCVUlMRF9CVUdfT04oQVJSQVlfU0laRShj Lm5hdC0+Z2R0X2ZyYW1lcykgIT0KICAgICAgICAgICAgICAgICAgICAgIEFSUkFZX1NJWkUoYy5j bXAtPmdkdF9mcmFtZXMpKTsKICAgICAgICAgZm9yICggOyBpIDwgQVJSQVlfU0laRShjLm5hdC0+ Z2R0X2ZyYW1lcyk7ICsraSApCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvaHZtL3ZteC92bWNz LmMgYi94ZW4vYXJjaC94ODYvaHZtL3ZteC92bWNzLmMKaW5kZXggZjk5ZjFiYi4uNzk1MjEwZiAx MDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2h2bS92bXgvdm1jcy5jCisrKyBiL3hlbi9hcmNoL3g4 Ni9odm0vdm14L3ZtY3MuYwpAQCAtODAyLDkgKzgwMiw2IEBAIHN0YXRpYyB2b2lkIHZteF9zZXRf aG9zdF9lbnYoc3RydWN0IHZjcHUgKnYpCiB7CiAgICAgdW5zaWduZWQgaW50IGNwdSA9IHNtcF9w cm9jZXNzb3JfaWQoKTsKIAotICAgIF9fdm13cml0ZShIT1NUX0dEVFJfQkFTRSwKLSAgICAgICAg ICAgICAgKHVuc2lnbmVkIGxvbmcpKHRoaXNfY3B1KGdkdF90YWJsZSkgLSBGSVJTVF9SRVNFUlZF RF9HRFRfRU5UUlkpKTsKLQogICAgIF9fdm13cml0ZShIT1NUX1RSX0JBU0UsICh1bnNpZ25lZCBs b25nKSZwZXJfY3B1KGluaXRfdHNzLCBjcHUpKTsKIAogICAgIF9fdm13cml0ZShIT1NUX1NZU0VO VEVSX0VTUCwgZ2V0X3N0YWNrX2JvdHRvbSgpKTsKQEAgLTExMzQsNiArMTEzMSw3IEBAIHN0YXRp YyBpbnQgY29uc3RydWN0X3ZtY3Moc3RydWN0IHZjcHUgKnYpCiAKICAgICAvKiBIb3N0IHN5c3Rl bSB0YWJsZXMuICovCiAgICAgX192bXdyaXRlKEhPU1RfSURUUl9CQVNFLCBQRVJDUFVfSURUX01B UFBJTkcpOworICAgIF9fdm13cml0ZShIT1NUX0dEVFJfQkFTRSwgUEVSQ1BVX0dEVF9NQVBQSU5H KTsKIAogICAgIC8qIEhvc3QgZGF0YSBzZWxlY3RvcnMuICovCiAgICAgX192bXdyaXRlKEhPU1Rf U1NfU0VMRUNUT1IsIF9fSFlQRVJWSVNPUl9EUyk7CmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYv cHYvZGVzY3JpcHRvci10YWJsZXMuYyBiL3hlbi9hcmNoL3g4Ni9wdi9kZXNjcmlwdG9yLXRhYmxl cy5jCmluZGV4IDc3Zjk4NTEuLjZiMGJmYmYgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9wdi9k ZXNjcmlwdG9yLXRhYmxlcy5jCisrKyBiL3hlbi9hcmNoL3g4Ni9wdi9kZXNjcmlwdG9yLXRhYmxl cy5jCkBAIC0zNyw3ICszNyw3IEBACiAgKi8KIGJvb2wgcHZfZGVzdHJveV9sZHQoc3RydWN0IHZj cHUgKnYpCiB7Ci0gICAgbDFfcGdlbnRyeV90ICpwbDFlID0gcHZfbGR0X3B0ZXModik7CisgICAg bDFfcGdlbnRyeV90ICpwbDFlID0gdi0+YXJjaC5wdl92Y3B1LmxkdF9sMWVzOwogICAgIHVuc2ln bmVkIGludCBpLCBtYXBwaW5nc19kcm9wcGVkID0gMDsKICAgICBzdHJ1Y3QgcGFnZV9pbmZvICpw YWdlOwogCkBAIC01OCwxMiArNTgsMjIgQEAgYm9vbCBwdl9kZXN0cm95X2xkdChzdHJ1Y3QgdmNw dSAqdikKICAgICAgICAgcHV0X3BhZ2VfYW5kX3R5cGUocGFnZSk7CiAgICAgfQogCisgICAgLyog Q2xvYmJlciB0aGUgbGl2ZSBMRFQuICovCisgICAgaWYgKCB2ID09IGN1cnJlbnQgKQorICAgIHsK KyAgICAgICAgaWYgKCBtYXBwaW5nc19kcm9wcGVkICkKKyAgICAgICAgICAgIG1lbXNldChwdl9s ZHRfcHRlcywgMCwgc2l6ZW9mKHYtPmFyY2gucHZfdmNwdS5sZHRfbDFlcykpOworICAgICAgICBl bHNlCisgICAgICAgICAgICBBU1NFUlQobWVtY21wKHB2X2xkdF9wdGVzLCB2LT5hcmNoLnB2X3Zj cHUubGR0X2wxZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZih2LT5hcmNoLnB2 X3ZjcHUubGR0X2wxZXMpKSA9PSAwKTsKKyAgICB9CisKICAgICByZXR1cm4gbWFwcGluZ3NfZHJv cHBlZDsKIH0KIAogdm9pZCBwdl9kZXN0cm95X2dkdChzdHJ1Y3QgdmNwdSAqdikKIHsKLSAgICBs MV9wZ2VudHJ5X3QgKnBsMWUgPSBwdl9nZHRfcHRlcyh2KTsKKyAgICBsMV9wZ2VudHJ5X3QgKnBs MWUgPSB2LT5hcmNoLnB2X3ZjcHUuZ2R0X2wxZXM7CiAgICAgbWZuX3QgemVyb19tZm4gPSBfbWZu KHZpcnRfdG9fbWZuKHplcm9fcGFnZSkpOwogICAgIGwxX3BnZW50cnlfdCB6ZXJvX2wxZSA9IGwx ZV9mcm9tX21mbih6ZXJvX21mbiwgX19QQUdFX0hZUEVSVklTT1JfUk8pOwogICAgIHVuc2lnbmVk IGludCBpOwpAQCAtNzksMTUgKzg5LDEzIEBAIHZvaWQgcHZfZGVzdHJveV9nZHQoc3RydWN0IHZj cHUgKnYpCiAgICAgICAgICAgICAgIW1mbl9lcShtZm4sIHplcm9fbWZuKSApCiAgICAgICAgICAg ICBwdXRfcGFnZV9hbmRfdHlwZShtZm5fdG9fcGFnZShtZm4pKTsKIAotICAgICAgICBsMWVfd3Jp dGUoJnBsMWVbaV0sIHplcm9fbDFlKTsKLSAgICAgICAgdi0+YXJjaC5wdl92Y3B1LmdkdF9mcmFt ZXNbaV0gPSAwOworICAgICAgICBwbDFlW2ldID0gemVyb19sMWU7CiAgICAgfQogfQogCiBsb25n IHB2X3NldF9nZHQoc3RydWN0IHZjcHUgKnYsIHVuc2lnbmVkIGxvbmcgKmZyYW1lcywgdW5zaWdu ZWQgaW50IGVudHJpZXMpCiB7CiAgICAgc3RydWN0IGRvbWFpbiAqZCA9IHYtPmRvbWFpbjsKLSAg ICBsMV9wZ2VudHJ5X3QgKnBsMWU7CiAgICAgdW5zaWduZWQgaW50IGksIG5yX2ZyYW1lcyA9IERJ Vl9ST1VORF9VUChlbnRyaWVzLCA1MTIpOwogCiAgICAgQVNTRVJUKHYgPT0gY3VycmVudCB8fCBj cHVtYXNrX2VtcHR5KHYtPnZjcHVfZGlydHlfY3B1bWFzaykpOwpAQCAtMTE2LDEyICsxMjQsMTQg QEAgbG9uZyBwdl9zZXRfZ2R0KHN0cnVjdCB2Y3B1ICp2LCB1bnNpZ25lZCBsb25nICpmcmFtZXMs IHVuc2lnbmVkIGludCBlbnRyaWVzKQogCiAgICAgLyogSW5zdGFsbCB0aGUgbmV3IEdEVC4gKi8K ICAgICB2LT5hcmNoLnB2X3ZjcHUuZ2R0X2VudHMgPSBlbnRyaWVzOwotICAgIHBsMWUgPSBwdl9n ZHRfcHRlcyh2KTsKICAgICBmb3IgKCBpID0gMDsgaSA8IG5yX2ZyYW1lczsgaSsrICkKLSAgICB7 Ci0gICAgICAgIHYtPmFyY2gucHZfdmNwdS5nZHRfZnJhbWVzW2ldID0gZnJhbWVzW2ldOwotICAg ICAgICBsMWVfd3JpdGUoJnBsMWVbaV0sIGwxZV9mcm9tX3BmbihmcmFtZXNbaV0sIF9fUEFHRV9I WVBFUlZJU09SX1JXKSk7Ci0gICAgfQorICAgICAgICB2LT5hcmNoLnB2X3ZjcHUuZ2R0X2wxZXNb aV0gPQorICAgICAgICAgICAgbDFlX2Zyb21fcGZuKGZyYW1lc1tpXSwgX19QQUdFX0hZUEVSVklT T1JfUlcpOworCisgICAgLyogVXBkYXRlIHRoZSBsaXZlIEdEVCBpZiBpbiBjb250ZXh0LiAqLwor ICAgIGlmICggdiA9PSBjdXJyZW50ICkKKyAgICAgICAgbWVtY3B5KHB2X2dkdF9wdGVzLCB2LT5h cmNoLnB2X3ZjcHUuZ2R0X2wxZXMsCisgICAgICAgICAgICAgICBzaXplb2Yodi0+YXJjaC5wdl92 Y3B1LmdkdF9sMWVzKSk7CiAKICAgICByZXR1cm4gMDsKIApkaWZmIC0tZ2l0IGEveGVuL2FyY2gv eDg2L3B2L2VtdWxhdGUuaCBiL3hlbi9hcmNoL3g4Ni9wdi9lbXVsYXRlLmgKaW5kZXggOWQ1ODc5 NC4uODA1MzBlNyAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L3B2L2VtdWxhdGUuaAorKysgYi94 ZW4vYXJjaC94ODYvcHYvZW11bGF0ZS5oCkBAIC0yMCw5ICsyMCw3IEBAIHN0YXRpYyBpbmxpbmUg aW50IHB2X2VtdWxfaXNfbWVtX3dyaXRlKGNvbnN0IHN0cnVjdCB4ODZfZW11bGF0ZV9zdGF0ZSAq c3RhdGUsCiAvKiBSZXR1cm4gYSBwb2ludGVyIHRvIHRoZSBHRFQvTERUIGRlc2NyaXB0b3IgcmVm ZXJlbmNlZCBieSBzZWwuICovCiBzdGF0aWMgaW5saW5lIGNvbnN0IHN0cnVjdCBkZXNjX3N0cnVj dCAqZ2R0X2xkdF9kZXNjX3B0cih1bnNpZ25lZCBpbnQgc2VsKQogewotICAgIGNvbnN0IHN0cnVj dCB2Y3B1ICpjdXJyID0gY3VycmVudDsKLSAgICBjb25zdCBzdHJ1Y3QgZGVzY19zdHJ1Y3QgKnRi bCA9ICh2b2lkICopCi0gICAgICAgICgoc2VsICYgWDg2X1hFQ19USSkgPyBMRFRfVklSVF9TVEFS VChjdXJyKSA6IEdEVF9WSVJUX1NUQVJUKGN1cnIpKTsKKyAgICBjb25zdCBzdHJ1Y3QgZGVzY19z dHJ1Y3QgKnRibCA9IChzZWwgJiBYODZfWEVDX1RJKSA/IHB2X2xkdCA6IHB2X2dkdDsKIAogICAg IHJldHVybiAmdGJsW3NlbCA+PiAzXTsKIH0KZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9wdi9t bS5jIGIveGVuL2FyY2gveDg2L3B2L21tLmMKaW5kZXggZDI5MzcyNC4uNmRhOTk5MCAxMDA2NDQK LS0tIGEveGVuL2FyY2gveDg2L3B2L21tLmMKKysrIGIveGVuL2FyY2gveDg2L3B2L21tLmMKQEAg LTEyMiwxMCArMTIyLDExIEBAIGJvb2wgcHZfbWFwX2xkdF9zaGFkb3dfcGFnZSh1bnNpZ25lZCBp bnQgb2Zmc2V0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgcGwxZSA9ICZw dl9sZHRfcHRlcyhjdXJyKVtvZmZzZXQgPj4gUEFHRV9TSElGVF07CisgICAgcGwxZSA9ICZwdl9s ZHRfcHRlc1tvZmZzZXQgPj4gUEFHRV9TSElGVF07CiAgICAgbDFlX2FkZF9mbGFncyhnbDFlLCBf UEFHRV9SVyk7CiAKICAgICBsMWVfd3JpdGUocGwxZSwgZ2wxZSk7CisgICAgY3Vyci0+YXJjaC5w dl92Y3B1LmxkdF9sMWVzW29mZnNldCA+PiBQQUdFX1NISUZUXSA9IGdsMWU7CiAKICAgICByZXR1 cm4gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9zZXR1cC5jIGIveGVuL2FyY2gv eDg2L3NldHVwLmMKaW5kZXggODBlZmVmMC4uMzlkMTU5MiAxMDA2NDQKLS0tIGEveGVuL2FyY2gv eDg2L3NldHVwLmMKKysrIGIveGVuL2FyY2gveDg2L3NldHVwLmMKQEAgLTI0NCwxMyArMjQ0LDE3 IEBAIHZvaWQgZWFybHlfc3dpdGNoX3RvX2lkbGUoYm9vbCBic3ApCiAgICAgdW5zaWduZWQgbG9u ZyBjcjQgPSByZWFkX2NyNCgpOwogCiAgICAgLyoKLSAgICAgKiBWVC14IGhhcmR3aXJlcyB0aGUg SURUIGxpbWl0IGF0IDB4ZmZmZiBvbiBWTUV4aXQuCisgICAgICogVlQteCBoYXJkd2lyZXMgdGhl IEdEVCBhbmQgSURUIGxpbWl0IGF0IDB4ZmZmZiBvbiBWTUV4aXQuCiAgICAgICoKICAgICAgKiBX ZSBkb24ndCB3aXNoIHRvIHJlbG9hZCBvbiB2Y3B1IGNvbnRleHQgc3dpdGNoLCBzbyBoYXZlIGFy cmFuZ2VkIGZvcgogICAgICAqIG5vdGhpbmcgZWxzZSB0byBsaXZlIHdpdGhpbiA2NGsgb2YgdGhl IGJhc2UuICBVbmlsYXRlcmFsbHkgc2V0dGluZyB0aGUKICAgICAgKiBsaW1pdCB0byAweGZmZmYg YXZvaWRzIGxlYWtpbmcgd2hldGhlciBIVk0gdmNwdXMgYXJlIHJ1bm5pbmcgdG8gUFYKLSAgICAg KiBndWVzdHMgdmlhIFNJRFQuCisgICAgICogZ3Vlc3RzIHZpYSBTR0RUL1NJRFQuCiAgICAgICov CisgICAgY29uc3Qgc3RydWN0IGRlc2NfcHRyIGdkdHIgPSB7CisgICAgICAgIC5iYXNlID0gUEVS Q1BVX0dEVF9NQVBQSU5HLAorICAgICAgICAubGltaXQgPSAweGZmZmYsCisgICAgfTsKICAgICBj b25zdCBzdHJ1Y3QgZGVzY19wdHIgaWR0ciA9IHsKICAgICAgICAgLmJhc2UgPSBQRVJDUFVfSURU X01BUFBJTkcsCiAgICAgICAgIC5saW1pdCA9IDB4ZmZmZiwKQEAgLTI3Miw3ICsyNzYsOSBAQCB2 b2lkIGVhcmx5X3N3aXRjaF90b19pZGxlKGJvb2wgYnNwKQogICAgIHBlcl9jcHUoY3Vycl9wdGJh c2UsIGNwdSkgPSB2LT5hcmNoLmNyMzsKICAgICBwZXJfY3B1KGN1cnJfZXh0ZW5kZWRfZGlyZWN0 bWFwLCBjcHUpID0gdHJ1ZTsKIAorICAgIGxnZHQoJmdkdHIpOwogICAgIGxpZHQoJmlkdHIpOwor ICAgIGxsZHQoMCk7CiAKICAgICBpZiAoIGxpa2VseSghYnNwKSApIC8qIEJTUCBJU1Qgc2V0dXAg ZGVmZXJyZWQuICovCiAgICAgICAgIGVuYWJsZV9lYWNoX2lzdChpZHRfdGFibGVzW2NwdV0pOwpk aWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L3RyYXBzLmMgYi94ZW4vYXJjaC94ODYvdHJhcHMuYwpp bmRleCAyZjE1NDBlLi5lZWFiYjRhIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvdHJhcHMuYwor KysgYi94ZW4vYXJjaC94ODYvdHJhcHMuYwpAQCAtMTEzNiwzNiArMTEzNiw2IEBAIHN0YXRpYyBp bnQgaGFuZGxlX2xkdF9tYXBwaW5nX2ZhdWx0KHVuc2lnbmVkIGludCBvZmZzZXQsCiAgICAgcmV0 dXJuIEVYQ1JFVF9mYXVsdF9maXhlZDsKIH0KIAotc3RhdGljIGludCBoYW5kbGVfZ2R0X2xkdF9t YXBwaW5nX2ZhdWx0KHVuc2lnbmVkIGxvbmcgb2Zmc2V0LAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdzKQotewotICAgIHN0 cnVjdCB2Y3B1ICpjdXJyID0gY3VycmVudDsKLSAgICAvKiBXaGljaCB2Y3B1J3MgYXJlYSBkaWQg d2UgZmF1bHQgaW4sIGFuZCBpcyBpdCBpbiB0aGUgbGR0IHN1Yi1hcmVhPyAqLwotICAgIHVuc2ln bmVkIGludCBpc19sZHRfYXJlYSA9IChvZmZzZXQgPj4gKEdEVF9MRFRfVkNQVV9WQV9TSElGVC0x KSkgJiAxOwotICAgIHVuc2lnbmVkIGludCB2Y3B1X2FyZWEgICA9IChvZmZzZXQgPj4gR0RUX0xE VF9WQ1BVX1ZBX1NISUZUKTsKLQotICAgIC8qCi0gICAgICogSWYgdGhlIGZhdWx0IGlzIGluIGFu b3RoZXIgdmNwdSdzIGFyZWEsIGl0IGNhbm5vdCBiZSBkdWUgdG8KLSAgICAgKiBhIEdEVC9MRFQg ZGVzY3JpcHRvciBsb2FkLiBUaHVzIHdlIGNhbiByZWFzb25hYmx5IGV4aXQgaW1tZWRpYXRlbHks IGFuZAotICAgICAqIGluZGVlZCB3ZSBoYXZlIHRvIHNpbmNlIHB2X21hcF9sZHRfc2hhZG93X3Bh Z2UoKSB3b3JrcyBjb3JyZWN0bHkgb25seSBvbgotICAgICAqIGFjY2Vzc2VzIHRvIGEgdmNwdSdz IG93biBhcmVhLgotICAgICAqLwotICAgIGlmICggdmNwdV9hcmVhICE9IGN1cnItPnZjcHVfaWQg KQotICAgICAgICByZXR1cm4gMDsKLQotICAgIC8qIEJ5dGUgb2Zmc2V0IHdpdGhpbiB0aGUgZ2R0 L2xkdCBzdWItYXJlYS4gKi8KLSAgICBvZmZzZXQgJj0gKDFVTCA8PCAoR0RUX0xEVF9WQ1BVX1ZB X1NISUZULTEpKSAtIDFVTDsKLQotICAgIGlmICggbGlrZWx5KGlzX2xkdF9hcmVhKSApCi0gICAg ICAgIHJldHVybiBoYW5kbGVfbGR0X21hcHBpbmdfZmF1bHQob2Zmc2V0LCByZWdzKTsKLQotICAg IC8qIEdEVCBmYXVsdDogaGFuZGxlIHRoZSBmYXVsdCBhcyAjR1Aoc2VsZWN0b3IpLiAqLwotICAg IHJlZ3MtPmVycm9yX2NvZGUgPSBvZmZzZXQgJiB+KFg4Nl9YRUNfRVhUIHwgWDg2X1hFQ19JRFQg fCBYODZfWEVDX1RJKTsKLSAgICAodm9pZClkb19nZW5lcmFsX3Byb3RlY3Rpb24ocmVncyk7Ci0K LSAgICByZXR1cm4gRVhDUkVUX2ZhdWx0X2ZpeGVkOwotfQotCiAjZGVmaW5lIElOX0hZUEVSVklT T1JfUkFOR0UodmEpIFwKICAgICAoKCh2YSkgPj0gSFlQRVJWSVNPUl9WSVJUX1NUQVJUKSAmJiAo KHZhKSA8IEhZUEVSVklTT1JfVklSVF9FTkQpKQogCkBAIC0xMzE2LDkgKzEyODYsOSBAQCBzdGF0 aWMgaW50IGZpeHVwX3BhZ2VfZmF1bHQodW5zaWduZWQgbG9uZyBhZGRyLCBzdHJ1Y3QgY3B1X3Vz ZXJfcmVncyAqcmVncykKICAgICBpZiAoIHVubGlrZWx5KElOX0hZUEVSVklTT1JfUkFOR0UoYWRk cikpICkKICAgICB7CiAgICAgICAgIGlmICggIShyZWdzLT5lcnJvcl9jb2RlICYgKFBGRUNfdXNl cl9tb2RlIHwgUEZFQ19yZXNlcnZlZF9iaXQpKSAmJgotICAgICAgICAgICAgIChhZGRyID49IEdE VF9MRFRfVklSVF9TVEFSVCkgJiYgKGFkZHIgPCBHRFRfTERUX1ZJUlRfRU5EKSApCi0gICAgICAg ICAgICByZXR1cm4gaGFuZGxlX2dkdF9sZHRfbWFwcGluZ19mYXVsdCgKLSAgICAgICAgICAgICAg ICBhZGRyIC0gR0RUX0xEVF9WSVJUX1NUQVJULCByZWdzKTsKKyAgICAgICAgICAgICAoYWRkciA+ PSBQRVJDUFVfTERUX01BUFBJTkcpICYmIChhZGRyIDwgUEVSQ1BVX0xEVF9NQVBQSU5HX0VORCkg KQorICAgICAgICAgICAgcmV0dXJuIGhhbmRsZV9sZHRfbWFwcGluZ19mYXVsdChhZGRyIC0gUEVS Q1BVX0xEVF9NQVBQSU5HLCByZWdzKTsKKwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKZGlm ZiAtLWdpdCBhL3hlbi9jb21tb24vZWZpL3J1bnRpbWUuYyBiL3hlbi9jb21tb24vZWZpL3J1bnRp bWUuYwppbmRleCBmZTZkM2FmLi4zZTQ2YWM2IDEwMDY0NAotLS0gYS94ZW4vY29tbW9uL2VmaS9y dW50aW1lLmMKKysrIGIveGVuL2NvbW1vbi9lZmkvcnVudGltZS5jCkBAIC0xMDAsMTcgKzEwMCw2 IEBAIHN0cnVjdCBlZmlfcnNfc3RhdGUgZWZpX3JzX2VudGVyKHZvaWQpCiAgICAgLyogcHJldmVu dCBmaXh1cF9wYWdlX2ZhdWx0KCkgZnJvbSBkb2luZyBhbnl0aGluZyAqLwogICAgIGlycV9lbnRl cigpOwogCi0gICAgaWYgKCBpc19wdl92Y3B1KGN1cnJlbnQpICYmICFpc19pZGxlX3ZjcHUoY3Vy cmVudCkgKQotICAgIHsKLSAgICAgICAgc3RydWN0IGRlc2NfcHRyIGdkdF9kZXNjID0gewotICAg ICAgICAgICAgLmxpbWl0ID0gTEFTVF9SRVNFUlZFRF9HRFRfQllURSwKLSAgICAgICAgICAgIC5i YXNlICA9ICh1bnNpZ25lZCBsb25nKShwZXJfY3B1KGdkdF90YWJsZSwgc21wX3Byb2Nlc3Nvcl9p ZCgpKSAtCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRklSU1RfUkVTRVJW RURfR0RUX0VOVFJZKQotICAgICAgICB9OwotCi0gICAgICAgIGxnZHQoJmdkdF9kZXNjKTsKLSAg ICB9Ci0KICAgICB3cml0ZV9jcjModmlydF90b19tYWRkcihlZmlfbDRfcGd0YWJsZSkpOwogICAg IHRoaXNfY3B1KGN1cnJfZXh0ZW5kZWRfZGlyZWN0bWFwKSA9IHRydWU7CiAKQEAgLTEyNCwxNSAr MTEzLDYgQEAgdm9pZCBlZmlfcnNfbGVhdmUoc3RydWN0IGVmaV9yc19zdGF0ZSAqc3RhdGUpCiAK ICAgICB0aGlzX2NwdShjdXJyX2V4dGVuZGVkX2RpcmVjdG1hcCkgPSBwYWdpbmdfbW9kZV9leHRl cm5hbChjdXJyZW50LT5kb21haW4pOwogICAgIHdyaXRlX2NyMyhzdGF0ZS0+Y3IzKTsKLSAgICBp ZiAoIGlzX3B2X3ZjcHUoY3VycmVudCkgJiYgIWlzX2lkbGVfdmNwdShjdXJyZW50KSApCi0gICAg ewotICAgICAgICBzdHJ1Y3QgZGVzY19wdHIgZ2R0X2Rlc2MgPSB7Ci0gICAgICAgICAgICAubGlt aXQgPSBMQVNUX1JFU0VSVkVEX0dEVF9CWVRFLAotICAgICAgICAgICAgLmJhc2UgID0gR0RUX1ZJ UlRfU1RBUlQoY3VycmVudCkKLSAgICAgICAgfTsKLQotICAgICAgICBsZ2R0KCZnZHRfZGVzYyk7 Ci0gICAgfQogICAgIGlycV9leGl0KCk7CiAgICAgZWZpX3JzX29uX2NwdSA9IE5SX0NQVVM7CiAg ICAgc3Bpbl91bmxvY2soJmVmaV9yc19sb2NrKTsKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2Fz bS14ODYvY29uZmlnLmggYi94ZW4vaW5jbHVkZS9hc20teDg2L2NvbmZpZy5oCmluZGV4IGRmZTFm MDMuLjYyNTQ5YTggMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL2FzbS14ODYvY29uZmlnLmgKKysr IGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9jb25maWcuaApAQCAtMzA0LDcgKzMwNCw5IEBAIGV4dGVy biB1bnNpZ25lZCBsb25nIHhlbl9waHlzX3N0YXJ0OwogCiAjZGVmaW5lIFBFUkNQVV9HRFRfTERU X0wxRVMgICAgICAoUEVSQ1BVX0xJTkVBUl9TVEFSVCArIE1CKDgpICsgS0IoMTIpKQogI2RlZmlu ZSBQRVJDUFVfR0RUX01BUFBJTkcgICAgICAgKFBFUkNQVV9MSU5FQVJfU1RBUlQgKyBNQigxMCkp CisjZGVmaW5lIFBFUkNQVV9HRFRfTUFQUElOR19FTkQgICAoUEVSQ1BVX0dEVF9NQVBQSU5HICsg MHgxMDAwMCkKICNkZWZpbmUgUEVSQ1BVX0xEVF9NQVBQSU5HICAgICAgIChQRVJDUFVfTElORUFS X1NUQVJUICsgTUIoMTEpKQorI2RlZmluZSBQRVJDUFVfTERUX01BUFBJTkdfRU5EICAgKFBFUkNQ VV9MRFRfTUFQUElORyArIDB4MTAwMDApCiAKIC8qIEdEVC9MRFQgc2hhZG93IG1hcHBpbmcgYXJl YS4gVGhlIGZpcnN0IHBlci1kb21haW4tbWFwcGluZyBzdWItYXJlYS4gKi8KICNkZWZpbmUgR0RU X0xEVF9WQ1BVX1NISUZUICAgICAgIDUKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS14ODYv ZG9tYWluLmggYi94ZW4vaW5jbHVkZS9hc20teDg2L2RvbWFpbi5oCmluZGV4IGJlMGY2MWMuLjEw OGIzYTQgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL2FzbS14ODYvZG9tYWluLmgKKysrIGIveGVu L2luY2x1ZGUvYXNtLXg4Ni9kb21haW4uaApAQCAtMzk2LDE4ICszOTYsMjEgQEAgc3RydWN0IGFy Y2hfZG9tYWluCiAKICNkZWZpbmUgaGFzX2FyY2hfcGRldnMoZCkgICAgKCFsaXN0X2VtcHR5KCYo ZCktPmFyY2gucGRldl9saXN0KSkKIAotI2RlZmluZSBnZHRfbGR0X3B0X2lkeCh2KSBcCi0gICAg ICAoKHYpLT52Y3B1X2lkID4+IChQQUdFVEFCTEVfT1JERVIgLSBHRFRfTERUX1ZDUFVfU0hJRlQp KQotI2RlZmluZSBwdl9nZHRfcHRlcyh2KSBcCi0gICAgKCh2KS0+ZG9tYWluLT5hcmNoLnB2X2Rv bWFpbi5nZHRfbGR0X2wxdGFiW2dkdF9sZHRfcHRfaWR4KHYpXSArIFwKLSAgICAgKCgodiktPnZj cHVfaWQgPDwgR0RUX0xEVF9WQ1BVX1NISUZUKSAmIChMMV9QQUdFVEFCTEVfRU5UUklFUyAtIDEp KSkKLSNkZWZpbmUgcHZfbGR0X3B0ZXModikgKHB2X2dkdF9wdGVzKHYpICsgMTYpCisjZGVmaW5l IHB2X2dkdCAoKHN0cnVjdCBkZXNjX3N0cnVjdCAqKVBFUkNQVV9HRFRfTUFQUElORykKKyNkZWZp bmUgcHZfbGR0ICgoc3RydWN0IGRlc2Nfc3RydWN0ICopUEVSQ1BVX0xEVF9NQVBQSU5HKQorCisj ZGVmaW5lIHB2X2dkdF9wdGVzIFwKKyAgICAoKGwxX3BnZW50cnlfdCAqKVBFUkNQVV9HRFRfTERU X0wxRVMgKyBsMV90YWJsZV9vZmZzZXQoUEVSQ1BVX0dEVF9NQVBQSU5HKSkKKyNkZWZpbmUgcHZf bGR0X3B0ZXMgXAorICAgICgobDFfcGdlbnRyeV90ICopUEVSQ1BVX0dEVF9MRFRfTDFFUyArIGwx X3RhYmxlX29mZnNldChQRVJDUFVfTERUX01BUFBJTkcpKQogCiBzdHJ1Y3QgcHZfdmNwdQogewog ICAgIHN0cnVjdCB0cmFwX2luZm8gKnRyYXBfY3R4dDsKIAotICAgIHVuc2lnbmVkIGxvbmcgZ2R0 X2ZyYW1lc1tGSVJTVF9SRVNFUlZFRF9HRFRfUEFHRV07CisjZGVmaW5lIE1BWF9QVl9HRFRfRlJB TUVTIEZJUlNUX1JFU0VSVkVEX0dEVF9QQUdFCisgICAgbDFfcGdlbnRyeV90IGdkdF9sMWVzW01B WF9QVl9HRFRfRlJBTUVTXTsKKyAgICBsMV9wZ2VudHJ5X3QgbGR0X2wxZXNbMTZdOwogICAgIHVu c2lnbmVkIGxvbmcgbGR0X2Jhc2U7CiAgICAgdW5zaWduZWQgaW50IGdkdF9lbnRzLCBsZHRfZW50 czsKIApkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9sZHQuaCBiL3hlbi9pbmNsdWRl L2FzbS14ODYvbGR0LmgKaW5kZXggNmZiY2U5My4uZjI4YTg5NSAxMDA2NDQKLS0tIGEveGVuL2lu Y2x1ZGUvYXNtLXg4Ni9sZHQuaAorKysgYi94ZW4vaW5jbHVkZS9hc20teDg2L2xkdC5oCkBAIC00 LDIxICs0LDI2IEBACiAKICNpZm5kZWYgX19BU1NFTUJMWV9fCiAKK0RFQ0xBUkVfUEVSX0NQVSh1 bnNpZ25lZCBpbnQsIGxkdF9lbnRzKTsKKwogc3RhdGljIGlubGluZSB2b2lkIGxvYWRfTERUKHN0 cnVjdCB2Y3B1ICp2KQogewotICAgIHN0cnVjdCBkZXNjX3N0cnVjdCAqZGVzYzsKICAgICB1bnNp Z25lZCBpbnQgZW50cyA9IGlzX3B2X3ZjcHUodikgJiYgdi0+YXJjaC5wdl92Y3B1LmxkdF9lbnRz OworICAgIHVuc2lnbmVkIGludCAqdGhpc19sZHRfZW50cyA9ICZ0aGlzX2NwdShsZHRfZW50cyk7 CisKKyAgICBpZiAoIGxpa2VseShlbnRzID09ICp0aGlzX2xkdF9lbnRzKSApCisgICAgICAgIHJl dHVybjsKIAogICAgIGlmICggZW50cyA9PSAwICkKICAgICAgICAgbGxkdCgwKTsKICAgICBlbHNl CiAgICAgewotICAgICAgICBkZXNjID0gKCFpc19wdl8zMmJpdF92Y3B1KHYpCi0gICAgICAgICAg ICAgICAgPyB0aGlzX2NwdShnZHRfdGFibGUpIDogdGhpc19jcHUoY29tcGF0X2dkdF90YWJsZSkp Ci0gICAgICAgICAgICAgICArIExEVF9FTlRSWSAtIEZJUlNUX1JFU0VSVkVEX0dEVF9FTlRSWTsK LSAgICAgICAgX3NldF90c3NsZHRfZGVzYyhkZXNjLCBMRFRfVklSVF9TVEFSVCh2KSwgZW50cyo4 LTEsIFNZU19ERVNDX2xkdCk7CisgICAgICAgIF9zZXRfdHNzbGR0X2Rlc2MoJnB2X2dkdFtMRFRf RU5UUlldLCBQRVJDUFVfTERUX01BUFBJTkcsCisgICAgICAgICAgICAgICAgICAgICAgICAgZW50 cyAqIDggLSAxLCBTWVNfREVTQ19sZHQpOwogICAgICAgICBsbGR0KExEVF9FTlRSWSA8PCAzKTsK ICAgICB9CisKKyAgICAqdGhpc19sZHRfZW50cyA9IGVudHM7CiB9CiAKICNlbmRpZiAvKiAhX19B U1NFTUJMWV9fICovCi0tIAoyLjEuNAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhl bnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5m by94ZW4tZGV2ZWw=