From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cooper Subject: [PATCH RFC 39/44] x86/smp: Introduce get_smp_ipi_buf() and take more IPI parameters off the stack Date: Thu, 4 Jan 2018 20:22:04 +0000 Message-ID: <1515097329-31902-40-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 QSBudW1iZXIgb2YgaHlwZXJjYWxscyBhbmQgc29mdGlycSB0YXNrcyBwYXNzIHNtYWxsIHN0YWNr IGJ1ZmZlcnMgdmlhIElQSS4KVGhlc2Ugb3BlcmF0ZSBzZXF1ZW50aWFsbHkgb24gYSBzaW5nbGUg Q1BVLCBzbyBpbnRyb2R1Y2UgYSBzaGFyZWQgUEVSX0NQVQpidWZmZXIgZm9yIHVzZS4gIEFjY2Vz cyB0byB0aGUgYnVmZmVyIGlzIHZpYSBnZXRfc21wX2lwaV9idWYoKSwgd2hpY2ggcGVyZm9ybXMK YSByYW5nZSBjaGVjayBhdCBjb21waWxlIHRpbWUuCgpTaWduZWQtb2ZmLWJ5OiBBbmRyZXcgQ29v cGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPgotLS0KIHhlbi9hcmNoL3g4Ni9hY3BpL2Nw dV9pZGxlLmMgICAgICAgICB8IDMwICsrKysrKysrKy0tLS0tLS0tLS0KIHhlbi9hcmNoL3g4Ni9h Y3BpL2NwdWZyZXEvY3B1ZnJlcS5jICB8IDU3ICsrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0t LS0tLS0tLQogeGVuL2FyY2gveDg2L2FjcGkvY3B1ZnJlcS9wb3dlcm5vdy5jIHwgMjYgKysrKysr KystLS0tLS0tLQogeGVuL2FyY2gveDg2L3BsYXRmb3JtX2h5cGVyY2FsbC5jICAgIHwgNDAgKysr KysrKysrKysrLS0tLS0tLS0tLS0tLQogeGVuL2FyY2gveDg2L3Bzci5jICAgICAgICAgICAgICAg ICAgIHwgIDkgKysrLS0tCiB4ZW4vYXJjaC94ODYvcHYvcHQtc2hhZG93LmMgICAgICAgICAgfCAx MiArKysrLS0tLQogeGVuL2FyY2gveDg2L3NtcC5jICAgICAgICAgICAgICAgICAgIHwgIDIgKysK IHhlbi9hcmNoL3g4Ni9zeXNjdGwuYyAgICAgICAgICAgICAgICB8IDEwICsrKy0tLS0KIHhlbi9p bmNsdWRlL2FzbS14ODYvc21wLmggICAgICAgICAgICB8IDIwICsrKysrKysrKysrKysKIDkgZmls ZXMgY2hhbmdlZCwgMTE0IGluc2VydGlvbnMoKyksIDkyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp dCBhL3hlbi9hcmNoL3g4Ni9hY3BpL2NwdV9pZGxlLmMgYi94ZW4vYXJjaC94ODYvYWNwaS9jcHVf aWRsZS5jCmluZGV4IGNiMWM1ZGEuLjA0Nzk4MjYgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9h Y3BpL2NwdV9pZGxlLmMKKysrIGIveGVuL2FyY2gveDg2L2FjcGkvY3B1X2lkbGUuYwpAQCAtMjQ2 LDIzICsyNDYsMjMgQEAgc3RhdGljIHZvaWQgZ2V0X2h3X3Jlc2lkZW5jaWVzKHVpbnQzMl90IGNw dSwgc3RydWN0IGh3X3Jlc2lkZW5jaWVzICpod19yZXMpCiAKIHN0YXRpYyB2b2lkIHByaW50X2h3 X3Jlc2lkZW5jaWVzKHVpbnQzMl90IGNwdSkKIHsKLSAgICBzdHJ1Y3QgaHdfcmVzaWRlbmNpZXMg aHdfcmVzOworICAgIHN0cnVjdCBod19yZXNpZGVuY2llcyAqaHdfcmVzID0gZ2V0X3NtcF9pcGlf YnVmKHN0cnVjdCBod19yZXNpZGVuY2llcyk7CiAKLSAgICBnZXRfaHdfcmVzaWRlbmNpZXMoY3B1 LCAmaHdfcmVzKTsKKyAgICBnZXRfaHdfcmVzaWRlbmNpZXMoY3B1LCBod19yZXMpOwogCi0gICAg aWYgKCBod19yZXMubWMwIHwgaHdfcmVzLm1jNiApCisgICAgaWYgKCBod19yZXMtPm1jMCB8IGh3 X3Jlcy0+bWM2ICkKICAgICAgICAgcHJpbnRrKCJNQzBbJSJQUkl1NjQiXSBNQzZbJSJQUkl1NjQi XVxuIiwKLSAgICAgICAgICAgICAgIGh3X3Jlcy5tYzAsIGh3X3Jlcy5tYzYpOworICAgICAgICAg ICAgICAgaHdfcmVzLT5tYzAsIGh3X3Jlcy0+bWM2KTsKICAgICBwcmludGsoIlBDMlslIlBSSXU2 NCJdIFBDJWRbJSJQUkl1NjQiXSBQQzZbJSJQUkl1NjQiXSBQQzdbJSJQUkl1NjQiXVxuIiwKLSAg ICAgICAgICAgaHdfcmVzLnBjMiwKLSAgICAgICAgICAgaHdfcmVzLnBjNCA/IDQgOiAzLCBod19y ZXMucGM0ID86IGh3X3Jlcy5wYzMsCi0gICAgICAgICAgIGh3X3Jlcy5wYzYsIGh3X3Jlcy5wYzcp OwotICAgIGlmICggaHdfcmVzLnBjOCB8IGh3X3Jlcy5wYzkgfCBod19yZXMucGMxMCApCisgICAg ICAgICAgIGh3X3Jlcy0+cGMyLAorICAgICAgICAgICBod19yZXMtPnBjNCA/IDQgOiAzLCBod19y ZXMtPnBjNCA/OiBod19yZXMtPnBjMywKKyAgICAgICAgICAgaHdfcmVzLT5wYzYsIGh3X3Jlcy0+ cGM3KTsKKyAgICBpZiAoIGh3X3Jlcy0+cGM4IHwgaHdfcmVzLT5wYzkgfCBod19yZXMtPnBjMTAg KQogICAgICAgICBwcmludGsoIlBDOFslIlBSSXU2NCJdIFBDOVslIlBSSXU2NCJdIFBDMTBbJSJQ Ukl1NjQiXVxuIiwKLSAgICAgICAgICAgICAgIGh3X3Jlcy5wYzgsIGh3X3Jlcy5wYzksIGh3X3Jl cy5wYzEwKTsKKyAgICAgICAgICAgICAgIGh3X3Jlcy0+cGM4LCBod19yZXMtPnBjOSwgaHdfcmVz LT5wYzEwKTsKICAgICBwcmludGsoIkNDJWRbJSJQUkl1NjQiXSBDQzZbJSJQUkl1NjQiXSBDQzdb JSJQUkl1NjQiXVxuIiwKLSAgICAgICAgICAgaHdfcmVzLmNjMSA/IDEgOiAzLCBod19yZXMuY2Mx ID86IGh3X3Jlcy5jYzMsCi0gICAgICAgICAgIGh3X3Jlcy5jYzYsIGh3X3Jlcy5jYzcpOworICAg ICAgICAgICBod19yZXMtPmNjMSA/IDEgOiAzLCBod19yZXMtPmNjMSA/OiBod19yZXMtPmNjMywK KyAgICAgICAgICAgaHdfcmVzLT5jYzYsIGh3X3Jlcy0+Y2M3KTsKIH0KIAogc3RhdGljIGNoYXIq IGFjcGlfY3N0YXRlX21ldGhvZF9uYW1lW10gPQpAQCAtMTI1MSw3ICsxMjUxLDcgQEAgaW50IHBt c3RhdF9nZXRfY3hfc3RhdCh1aW50MzJfdCBjcHVpZCwgc3RydWN0IHBtX2N4X3N0YXQgKnN0YXQp CiAgICAgfQogICAgIGVsc2UKICAgICB7Ci0gICAgICAgIHN0cnVjdCBod19yZXNpZGVuY2llcyBo d19yZXM7CisgICAgICAgIHN0cnVjdCBod19yZXNpZGVuY2llcyAqaHdfcmVzID0gZ2V0X3NtcF9p cGlfYnVmKHN0cnVjdCBod19yZXNpZGVuY2llcyk7CiAgICAgICAgIHNpZ25lZCBpbnQgbGFzdF9z dGF0ZV9pZHg7CiAKICAgICAgICAgc3RhdC0+bnIgPSBwb3dlci0+Y291bnQ7CkBAIC0xMjg1LDEz ICsxMjg1LDEzIEBAIGludCBwbXN0YXRfZ2V0X2N4X3N0YXQodWludDMyX3QgY3B1aWQsIHN0cnVj dCBwbV9jeF9zdGF0ICpzdGF0KQogICAgICAgICAgICAgaWRsZV9yZXMgKz0gcmVzW2ldOwogICAg ICAgICB9CiAKLSAgICAgICAgZ2V0X2h3X3Jlc2lkZW5jaWVzKGNwdWlkLCAmaHdfcmVzKTsKKyAg ICAgICAgZ2V0X2h3X3Jlc2lkZW5jaWVzKGNwdWlkLCBod19yZXMpOwogCiAjZGVmaW5lIFBVVF94 Qyh3aGF0LCBuKSBkbyB7IFwKICAgICAgICAgaWYgKCBzdGF0LT5ucl8jI3doYXQgPj0gbiAmJiBc Ci0gICAgICAgICAgICAgY29weV90b19ndWVzdF9vZmZzZXQoc3RhdC0+d2hhdCwgbiAtIDEsICZo d19yZXMud2hhdCMjbiwgMSkgKSBcCisgICAgICAgICAgICAgY29weV90b19ndWVzdF9vZmZzZXQo c3RhdC0+d2hhdCwgbiAtIDEsICZod19yZXMtPndoYXQjI24sIDEpICkgXAogICAgICAgICAgICAg cmV0dXJuIC1FRkFVTFQ7IFwKLSAgICAgICAgaWYgKCBod19yZXMud2hhdCMjbiApIFwKKyAgICAg ICAgaWYgKCBod19yZXMtPndoYXQjI24gKSBcCiAgICAgICAgICAgICBucl8jI3doYXQgPSBuOyBc CiAgICAgfSB3aGlsZSAoIDAgKQogI2RlZmluZSBQVVRfUEMobikgUFVUX3hDKHBjLCBuKQpkaWZm IC0tZ2l0IGEveGVuL2FyY2gveDg2L2FjcGkvY3B1ZnJlcS9jcHVmcmVxLmMgYi94ZW4vYXJjaC94 ODYvYWNwaS9jcHVmcmVxL2NwdWZyZXEuYwppbmRleCAxZjhkMDJhLi5mMjk1ZTFlIDEwMDY0NAot LS0gYS94ZW4vYXJjaC94ODYvYWNwaS9jcHVmcmVxL2NwdWZyZXEuYworKysgYi94ZW4vYXJjaC94 ODYvYWNwaS9jcHVmcmVxL2NwdWZyZXEuYwpAQCAtMTk4LDcgKzE5OCw3IEBAIHN0YXRpYyB1MzIg Z2V0X2N1cl92YWwoY29uc3QgY3B1bWFza190ICptYXNrKQogewogICAgIHN0cnVjdCBjcHVmcmVx X3BvbGljeSAqcG9saWN5OwogICAgIHN0cnVjdCBwcm9jZXNzb3JfcGVyZm9ybWFuY2UgKnBlcmY7 Ci0gICAgc3RydWN0IGRydl9jbWQgY21kOworICAgIHN0cnVjdCBkcnZfY21kICpjbWQgPSBnZXRf c21wX2lwaV9idWYoc3RydWN0IGRydl9jbWQpOwogICAgIHVuc2lnbmVkIGludCBjcHUgPSBzbXBf cHJvY2Vzc29yX2lkKCk7CiAKICAgICBpZiAodW5saWtlbHkoY3B1bWFza19lbXB0eShtYXNrKSkp CkBAIC0yMTUsMjMgKzIxNSwyMyBAQCBzdGF0aWMgdTMyIGdldF9jdXJfdmFsKGNvbnN0IGNwdW1h c2tfdCAqbWFzaykKIAogICAgIHN3aXRjaCAoY3B1ZnJlcV9kcnZfZGF0YVtwb2xpY3ktPmNwdV0t PmFyY2hfY3B1X2ZsYWdzKSB7CiAgICAgY2FzZSBTWVNURU1fSU5URUxfTVNSX0NBUEFCTEU6Ci0g ICAgICAgIGNtZC50eXBlID0gU1lTVEVNX0lOVEVMX01TUl9DQVBBQkxFOwotICAgICAgICBjbWQu YWRkci5tc3IucmVnID0gTVNSX0lBMzJfUEVSRl9TVEFUVVM7CisgICAgICAgIGNtZC0+dHlwZSA9 IFNZU1RFTV9JTlRFTF9NU1JfQ0FQQUJMRTsKKyAgICAgICAgY21kLT5hZGRyLm1zci5yZWcgPSBN U1JfSUEzMl9QRVJGX1NUQVRVUzsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTWVNURU1fSU9f Q0FQQUJMRToKLSAgICAgICAgY21kLnR5cGUgPSBTWVNURU1fSU9fQ0FQQUJMRTsKKyAgICAgICAg Y21kLT50eXBlID0gU1lTVEVNX0lPX0NBUEFCTEU7CiAgICAgICAgIHBlcmYgPSBjcHVmcmVxX2Ry dl9kYXRhW3BvbGljeS0+Y3B1XS0+YWNwaV9kYXRhOwotICAgICAgICBjbWQuYWRkci5pby5wb3J0 ID0gcGVyZi0+Y29udHJvbF9yZWdpc3Rlci5hZGRyZXNzOwotICAgICAgICBjbWQuYWRkci5pby5i aXRfd2lkdGggPSBwZXJmLT5jb250cm9sX3JlZ2lzdGVyLmJpdF93aWR0aDsKKyAgICAgICAgY21k LT5hZGRyLmlvLnBvcnQgPSBwZXJmLT5jb250cm9sX3JlZ2lzdGVyLmFkZHJlc3M7CisgICAgICAg IGNtZC0+YWRkci5pby5iaXRfd2lkdGggPSBwZXJmLT5jb250cm9sX3JlZ2lzdGVyLmJpdF93aWR0 aDsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIDA7CiAgICAg fQogCi0gICAgY21kLm1hc2sgPSBjcHVtYXNrX29mKGNwdSk7CisgICAgY21kLT5tYXNrID0gY3B1 bWFza19vZihjcHUpOwogCi0gICAgZHJ2X3JlYWQoJmNtZCk7Ci0gICAgcmV0dXJuIGNtZC52YWw7 CisgICAgZHJ2X3JlYWQoY21kKTsKKyAgICByZXR1cm4gY21kLT52YWw7CiB9CiAKIHN0cnVjdCBw ZXJmX3BhaXIgewpAQCAtMjcwLDcgKzI3MCw3IEBAIHN0YXRpYyB2b2lkIHJlYWRfbWVhc3VyZWRf cGVyZl9jdHJzKHZvaWQgKl9yZWFkaW4pCiB1bnNpZ25lZCBpbnQgZ2V0X21lYXN1cmVkX3BlcmYo dW5zaWduZWQgaW50IGNwdSwgdW5zaWduZWQgaW50IGZsYWcpCiB7CiAgICAgc3RydWN0IGNwdWZy ZXFfcG9saWN5ICpwb2xpY3k7ICAgIAotICAgIHN0cnVjdCBwZXJmX3BhaXIgcmVhZGluLCBjdXIs ICpzYXZlZDsKKyAgICBzdHJ1Y3QgcGVyZl9wYWlyICpyZWFkaW4gPSBnZXRfc21wX2lwaV9idWYo c3RydWN0IHBlcmZfcGFpciksIGN1ciwgKnNhdmVkOwogICAgIHVuc2lnbmVkIGludCBwZXJmX3Bl cmNlbnQ7CiAgICAgdW5zaWduZWQgaW50IHJldHZhbDsKIApAQCAtMjk4LDE2ICsyOTgsMTUgQEAg dW5zaWduZWQgaW50IGdldF9tZWFzdXJlZF9wZXJmKHVuc2lnbmVkIGludCBjcHUsIHVuc2lnbmVk IGludCBmbGFnKQogICAgIH0KIAogICAgIGlmIChjcHUgPT0gc21wX3Byb2Nlc3Nvcl9pZCgpKSB7 Ci0gICAgICAgIHJlYWRfbWVhc3VyZWRfcGVyZl9jdHJzKCh2b2lkICopJnJlYWRpbik7CisgICAg ICAgIHJlYWRfbWVhc3VyZWRfcGVyZl9jdHJzKHJlYWRpbik7CiAgICAgfSBlbHNlIHsKLSAgICAg ICAgb25fc2VsZWN0ZWRfY3B1cyhjcHVtYXNrX29mKGNwdSksIHJlYWRfbWVhc3VyZWRfcGVyZl9j dHJzLAotICAgICAgICAgICAgICAgICAgICAgICAgJnJlYWRpbiwgMSk7CisgICAgICAgIG9uX3Nl bGVjdGVkX2NwdXMoY3B1bWFza19vZihjcHUpLCByZWFkX21lYXN1cmVkX3BlcmZfY3RycywgcmVh ZGluLCAxKTsKICAgICB9CiAKLSAgICBjdXIuYXBlcmYud2hvbGUgPSByZWFkaW4uYXBlcmYud2hv bGUgLSBzYXZlZC0+YXBlcmYud2hvbGU7Ci0gICAgY3VyLm1wZXJmLndob2xlID0gcmVhZGluLm1w ZXJmLndob2xlIC0gc2F2ZWQtPm1wZXJmLndob2xlOwotICAgIHNhdmVkLT5hcGVyZi53aG9sZSA9 IHJlYWRpbi5hcGVyZi53aG9sZTsKLSAgICBzYXZlZC0+bXBlcmYud2hvbGUgPSByZWFkaW4ubXBl cmYud2hvbGU7CisgICAgY3VyLmFwZXJmLndob2xlID0gcmVhZGluLT5hcGVyZi53aG9sZSAtIHNh dmVkLT5hcGVyZi53aG9sZTsKKyAgICBjdXIubXBlcmYud2hvbGUgPSByZWFkaW4tPm1wZXJmLndo b2xlIC0gc2F2ZWQtPm1wZXJmLndob2xlOworICAgIHNhdmVkLT5hcGVyZi53aG9sZSA9IHJlYWRp bi0+YXBlcmYud2hvbGU7CisgICAgc2F2ZWQtPm1wZXJmLndob2xlID0gcmVhZGluLT5tcGVyZi53 aG9sZTsKIAogICAgIGlmICh1bmxpa2VseSgoKHVuc2lnbmVkIGxvbmcpKC0xKSAvIDEwMCkgPCBj dXIuYXBlcmYud2hvbGUpKSB7CiAgICAgICAgIGludCBzaGlmdF9jb3VudCA9IDc7CkBAIC0zODks NyArMzg4LDcgQEAgc3RhdGljIGludCBhY3BpX2NwdWZyZXFfdGFyZ2V0KHN0cnVjdCBjcHVmcmVx X3BvbGljeSAqcG9saWN5LAogICAgIHN0cnVjdCBwcm9jZXNzb3JfcGVyZm9ybWFuY2UgKnBlcmY7 CiAgICAgc3RydWN0IGNwdWZyZXFfZnJlcXMgZnJlcXM7CiAgICAgY3B1bWFza190IG9ubGluZV9w b2xpY3lfY3B1czsKLSAgICBzdHJ1Y3QgZHJ2X2NtZCBjbWQ7CisgICAgc3RydWN0IGRydl9jbWQg KmNtZCA9IGdldF9zbXBfaXBpX2J1ZihzdHJ1Y3QgZHJ2X2NtZCk7CiAgICAgdW5zaWduZWQgaW50 IG5leHRfc3RhdGUgPSAwOyAvKiBJbmRleCBpbnRvIGZyZXFfdGFibGUgKi8KICAgICB1bnNpZ25l ZCBpbnQgbmV4dF9wZXJmX3N0YXRlID0gMDsgLyogSW5kZXggaW50byBwZXJmIHRhYmxlICovCiAg ICAgdW5zaWduZWQgaW50IGo7CkBAIC00MjQsMzEgKzQyMywzMSBAQCBzdGF0aWMgaW50IGFjcGlf Y3B1ZnJlcV90YXJnZXQoc3RydWN0IGNwdWZyZXFfcG9saWN5ICpwb2xpY3ksCiAKICAgICBzd2l0 Y2ggKGRhdGEtPmFyY2hfY3B1X2ZsYWdzKSB7CiAgICAgY2FzZSBTWVNURU1fSU5URUxfTVNSX0NB UEFCTEU6Ci0gICAgICAgIGNtZC50eXBlID0gU1lTVEVNX0lOVEVMX01TUl9DQVBBQkxFOwotICAg ICAgICBjbWQuYWRkci5tc3IucmVnID0gTVNSX0lBMzJfUEVSRl9DVEw7Ci0gICAgICAgIGNtZC52 YWwgPSAodTMyKSBwZXJmLT5zdGF0ZXNbbmV4dF9wZXJmX3N0YXRlXS5jb250cm9sOworICAgICAg ICBjbWQtPnR5cGUgPSBTWVNURU1fSU5URUxfTVNSX0NBUEFCTEU7CisgICAgICAgIGNtZC0+YWRk ci5tc3IucmVnID0gTVNSX0lBMzJfUEVSRl9DVEw7CisgICAgICAgIGNtZC0+dmFsID0gKHUzMikg cGVyZi0+c3RhdGVzW25leHRfcGVyZl9zdGF0ZV0uY29udHJvbDsKICAgICAgICAgYnJlYWs7CiAg ICAgY2FzZSBTWVNURU1fSU9fQ0FQQUJMRToKLSAgICAgICAgY21kLnR5cGUgPSBTWVNURU1fSU9f Q0FQQUJMRTsKLSAgICAgICAgY21kLmFkZHIuaW8ucG9ydCA9IHBlcmYtPmNvbnRyb2xfcmVnaXN0 ZXIuYWRkcmVzczsKLSAgICAgICAgY21kLmFkZHIuaW8uYml0X3dpZHRoID0gcGVyZi0+Y29udHJv bF9yZWdpc3Rlci5iaXRfd2lkdGg7Ci0gICAgICAgIGNtZC52YWwgPSAodTMyKSBwZXJmLT5zdGF0 ZXNbbmV4dF9wZXJmX3N0YXRlXS5jb250cm9sOworICAgICAgICBjbWQtPnR5cGUgPSBTWVNURU1f SU9fQ0FQQUJMRTsKKyAgICAgICAgY21kLT5hZGRyLmlvLnBvcnQgPSBwZXJmLT5jb250cm9sX3Jl Z2lzdGVyLmFkZHJlc3M7CisgICAgICAgIGNtZC0+YWRkci5pby5iaXRfd2lkdGggPSBwZXJmLT5j b250cm9sX3JlZ2lzdGVyLmJpdF93aWR0aDsKKyAgICAgICAgY21kLT52YWwgPSAodTMyKSBwZXJm LT5zdGF0ZXNbbmV4dF9wZXJmX3N0YXRlXS5jb250cm9sOwogICAgICAgICBicmVhazsKICAgICBk ZWZhdWx0OgogICAgICAgICByZXR1cm4gLUVOT0RFVjsKICAgICB9CiAKICAgICBpZiAocG9saWN5 LT5zaGFyZWRfdHlwZSAhPSBDUFVGUkVRX1NIQVJFRF9UWVBFX0FOWSkKLSAgICAgICAgY21kLm1h c2sgPSAmb25saW5lX3BvbGljeV9jcHVzOworICAgICAgICBjbWQtPm1hc2sgPSAmb25saW5lX3Bv bGljeV9jcHVzOwogICAgIGVsc2UKLSAgICAgICAgY21kLm1hc2sgPSBjcHVtYXNrX29mKHBvbGlj eS0+Y3B1KTsKKyAgICAgICAgY21kLT5tYXNrID0gY3B1bWFza19vZihwb2xpY3ktPmNwdSk7CiAK ICAgICBmcmVxcy5vbGQgPSBwZXJmLT5zdGF0ZXNbcGVyZi0+c3RhdGVdLmNvcmVfZnJlcXVlbmN5 ICogMTAwMDsKICAgICBmcmVxcy5uZXcgPSBkYXRhLT5mcmVxX3RhYmxlW25leHRfc3RhdGVdLmZy ZXF1ZW5jeTsKIAotICAgIGRydl93cml0ZSgmY21kKTsKKyAgICBkcnZfd3JpdGUoY21kKTsKIAot ICAgIGlmIChhY3BpX3BzdGF0ZV9zdHJpY3QgJiYgIWNoZWNrX2ZyZXFzKGNtZC5tYXNrLCBmcmVx cy5uZXcsIGRhdGEpKSB7CisgICAgaWYgKGFjcGlfcHN0YXRlX3N0cmljdCAmJiAhY2hlY2tfZnJl cXMoY21kLT5tYXNrLCBmcmVxcy5uZXcsIGRhdGEpKSB7CiAgICAgICAgIHByaW50ayhLRVJOX1dB Uk5JTkcgIkZhaWwgdHJhbnNmZXIgdG8gbmV3IGZyZXEgJWRcbiIsIGZyZXFzLm5ldyk7CiAgICAg ICAgIHJldHVybiAtRUFHQUlOOwogICAgIH0KZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9hY3Bp L2NwdWZyZXEvcG93ZXJub3cuYyBiL3hlbi9hcmNoL3g4Ni9hY3BpL2NwdWZyZXEvcG93ZXJub3cu YwppbmRleCA4ZjFhYzc0Li43MmQ5NWI3IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvYWNwaS9j cHVmcmVxL3Bvd2Vybm93LmMKKysrIGIveGVuL2FyY2gveDg2L2FjcGkvY3B1ZnJlcS9wb3dlcm5v dy5jCkBAIC05NCw3ICs5NCw3IEBAIHN0YXRpYyBpbnQgcG93ZXJub3dfY3B1ZnJlcV90YXJnZXQo c3RydWN0IGNwdWZyZXFfcG9saWN5ICpwb2xpY3ksCiAgICAgc3RydWN0IGFjcGlfY3B1ZnJlcV9k YXRhICpkYXRhID0gY3B1ZnJlcV9kcnZfZGF0YVtwb2xpY3ktPmNwdV07CiAgICAgc3RydWN0IHBy b2Nlc3Nvcl9wZXJmb3JtYW5jZSAqcGVyZjsKICAgICB1bnNpZ25lZCBpbnQgbmV4dF9zdGF0ZTsg LyogSW5kZXggaW50byBmcmVxX3RhYmxlICovCi0gICAgdW5zaWduZWQgaW50IG5leHRfcGVyZl9z dGF0ZTsgLyogSW5kZXggaW50byBwZXJmIHRhYmxlICovCisgICAgdW5zaWduZWQgaW50ICpuZXh0 X3BlcmZfc3RhdGUgPSBnZXRfc21wX2lwaV9idWYodW5zaWduZWQgaW50KTsKICAgICBpbnQgcmVz dWx0OwogCiAgICAgaWYgKHVubGlrZWx5KGRhdGEgPT0gTlVMTCB8fApAQCAtMTEwLDggKzExMCw4 IEBAIHN0YXRpYyBpbnQgcG93ZXJub3dfY3B1ZnJlcV90YXJnZXQoc3RydWN0IGNwdWZyZXFfcG9s aWN5ICpwb2xpY3ksCiAgICAgaWYgKHVubGlrZWx5KHJlc3VsdCkpCiAgICAgICAgIHJldHVybiBy ZXN1bHQ7CiAKLSAgICBuZXh0X3BlcmZfc3RhdGUgPSBkYXRhLT5mcmVxX3RhYmxlW25leHRfc3Rh dGVdLmluZGV4OwotICAgIGlmIChwZXJmLT5zdGF0ZSA9PSBuZXh0X3BlcmZfc3RhdGUpIHsKKyAg ICAqbmV4dF9wZXJmX3N0YXRlID0gZGF0YS0+ZnJlcV90YWJsZVtuZXh0X3N0YXRlXS5pbmRleDsK KyAgICBpZiAocGVyZi0+c3RhdGUgPT0gKm5leHRfcGVyZl9zdGF0ZSkgewogICAgICAgICBpZiAo dW5saWtlbHkoZGF0YS0+YXJjaF9jcHVfZmxhZ3MgJiBBUkNIX0NQVV9GTEFHX1JFU1VNRSkpIAog ICAgICAgICAgICAgZGF0YS0+YXJjaF9jcHVfZmxhZ3MgJj0gfkFSQ0hfQ1BVX0ZMQUdfUkVTVU1F OwogICAgICAgICBlbHNlCkBAIC0xMjAsOCArMTIwLDggQEAgc3RhdGljIGludCBwb3dlcm5vd19j cHVmcmVxX3RhcmdldChzdHJ1Y3QgY3B1ZnJlcV9wb2xpY3kgKnBvbGljeSwKIAogICAgIGlmIChw b2xpY3ktPnNoYXJlZF90eXBlID09IENQVUZSRVFfU0hBUkVEX1RZUEVfSFcgJiYKICAgICAgICAg bGlrZWx5KHBvbGljeS0+Y3B1ID09IHNtcF9wcm9jZXNzb3JfaWQoKSkpIHsKLSAgICAgICAgdHJh bnNpdGlvbl9wc3RhdGUoJm5leHRfcGVyZl9zdGF0ZSk7Ci0gICAgICAgIGNwdWZyZXFfc3RhdGlz dGljX3VwZGF0ZShwb2xpY3ktPmNwdSwgcGVyZi0+c3RhdGUsIG5leHRfcGVyZl9zdGF0ZSk7Cisg ICAgICAgIHRyYW5zaXRpb25fcHN0YXRlKG5leHRfcGVyZl9zdGF0ZSk7CisgICAgICAgIGNwdWZy ZXFfc3RhdGlzdGljX3VwZGF0ZShwb2xpY3ktPmNwdSwgcGVyZi0+c3RhdGUsICpuZXh0X3BlcmZf c3RhdGUpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGNwdW1hc2tfdCBvbmxpbmVfcG9saWN5X2Nw dXM7CiAgICAgICAgIHVuc2lnbmVkIGludCBjcHU7CkBAIC0xMzEsMTUgKzEzMSwxNSBAQCBzdGF0 aWMgaW50IHBvd2Vybm93X2NwdWZyZXFfdGFyZ2V0KHN0cnVjdCBjcHVmcmVxX3BvbGljeSAqcG9s aWN5LAogICAgICAgICBpZiAocG9saWN5LT5zaGFyZWRfdHlwZSA9PSBDUFVGUkVRX1NIQVJFRF9U WVBFX0FMTCB8fAogICAgICAgICAgICAgdW5saWtlbHkocG9saWN5LT5jcHUgIT0gc21wX3Byb2Nl c3Nvcl9pZCgpKSkKICAgICAgICAgICAgIG9uX3NlbGVjdGVkX2NwdXMoJm9ubGluZV9wb2xpY3lf Y3B1cywgdHJhbnNpdGlvbl9wc3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICZu ZXh0X3BlcmZfc3RhdGUsIDEpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0X3Bl cmZfc3RhdGUsIDEpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICB0cmFuc2l0aW9uX3BzdGF0 ZSgmbmV4dF9wZXJmX3N0YXRlKTsKKyAgICAgICAgICAgIHRyYW5zaXRpb25fcHN0YXRlKG5leHRf cGVyZl9zdGF0ZSk7CiAKICAgICAgICAgZm9yX2VhY2hfY3B1KGNwdSwgJm9ubGluZV9wb2xpY3lf Y3B1cykKLSAgICAgICAgICAgIGNwdWZyZXFfc3RhdGlzdGljX3VwZGF0ZShjcHUsIHBlcmYtPnN0 YXRlLCBuZXh0X3BlcmZfc3RhdGUpOworICAgICAgICAgICAgY3B1ZnJlcV9zdGF0aXN0aWNfdXBk YXRlKGNwdSwgcGVyZi0+c3RhdGUsICpuZXh0X3BlcmZfc3RhdGUpOwogICAgIH0KIAotICAgIHBl cmYtPnN0YXRlID0gbmV4dF9wZXJmX3N0YXRlOworICAgIHBlcmYtPnN0YXRlID0gKm5leHRfcGVy Zl9zdGF0ZTsKICAgICBwb2xpY3ktPmN1ciA9IGRhdGEtPmZyZXFfdGFibGVbbmV4dF9zdGF0ZV0u ZnJlcXVlbmN5OwogCiAgICAgcmV0dXJuIDA7CkBAIC0yMzYsNyArMjM2LDcgQEAgc3RhdGljIGlu dCBwb3dlcm5vd19jcHVmcmVxX2NwdV9pbml0KHN0cnVjdCBjcHVmcmVxX3BvbGljeSAqcG9saWN5 KQogICAgIHN0cnVjdCBhY3BpX2NwdWZyZXFfZGF0YSAqZGF0YTsKICAgICB1bnNpZ25lZCBpbnQg cmVzdWx0ID0gMDsKICAgICBzdHJ1Y3QgcHJvY2Vzc29yX3BlcmZvcm1hbmNlICpwZXJmOwotICAg IHN0cnVjdCBhbWRfY3B1X2RhdGEgaW5mbzsKKyAgICBzdHJ1Y3QgYW1kX2NwdV9kYXRhICppbmZv ID0gZ2V0X3NtcF9pcGlfYnVmKHN0cnVjdCBhbWRfY3B1X2RhdGEpOwogICAgIHN0cnVjdCBjcHVp bmZvX3g4NiAqYyA9ICZjcHVfZGF0YVtwb2xpY3ktPmNwdV07CiAKICAgICBkYXRhID0geHphbGxv YyhzdHJ1Y3QgYWNwaV9jcHVmcmVxX2RhdGEpOwpAQCAtMjQ3LDcgKzI0Nyw3IEBAIHN0YXRpYyBp bnQgcG93ZXJub3dfY3B1ZnJlcV9jcHVfaW5pdChzdHJ1Y3QgY3B1ZnJlcV9wb2xpY3kgKnBvbGlj eSkKIAogICAgIGRhdGEtPmFjcGlfZGF0YSA9ICZwcm9jZXNzb3JfcG1pbmZvW2NwdV0tPnBlcmY7 CiAKLSAgICBpbmZvLnBlcmYgPSBwZXJmID0gZGF0YS0+YWNwaV9kYXRhOworICAgIGluZm8tPnBl cmYgPSBwZXJmID0gZGF0YS0+YWNwaV9kYXRhOwogICAgIHBvbGljeS0+c2hhcmVkX3R5cGUgPSBw ZXJmLT5zaGFyZWRfdHlwZTsKIAogICAgIGlmIChwb2xpY3ktPnNoYXJlZF90eXBlID09IENQVUZS RVFfU0hBUkVEX1RZUEVfQUxMIHx8CkBAIC0yOTMsMTAgKzI5MywxMCBAQCBzdGF0aWMgaW50IHBv d2Vybm93X2NwdWZyZXFfY3B1X2luaXQoc3RydWN0IGNwdWZyZXFfcG9saWN5ICpwb2xpY3kpCiAK ICAgICBwb2xpY3ktPmdvdmVybm9yID0gY3B1ZnJlcV9vcHRfZ292ZXJub3IgPyA6IENQVUZSRVFf REVGQVVMVF9HT1ZFUk5PUjsKIAotICAgIG9uX3NlbGVjdGVkX2NwdXMoY3B1bWFza19vZihjcHUp LCBnZXRfY3B1X2RhdGEsICZpbmZvLCAxKTsKKyAgICBvbl9zZWxlY3RlZF9jcHVzKGNwdW1hc2tf b2YoY3B1KSwgZ2V0X2NwdV9kYXRhLCBpbmZvLCAxKTsKIAogICAgIC8qIHRhYmxlIGluaXQgKi8K LSAgICBmb3IgKGkgPSAwOyBpIDwgcGVyZi0+c3RhdGVfY291bnQgJiYgaSA8PSBpbmZvLm1heF9o d19wc3RhdGU7IGkrKykgeworICAgIGZvciAoaSA9IDA7IGkgPCBwZXJmLT5zdGF0ZV9jb3VudCAm JiBpIDw9IGluZm8tPm1heF9od19wc3RhdGU7IGkrKykgewogICAgICAgICBpZiAoaSA+IDAgJiYg cGVyZi0+c3RhdGVzW2ldLmNvcmVfZnJlcXVlbmN5ID49CiAgICAgICAgICAgICBkYXRhLT5mcmVx X3RhYmxlW3ZhbGlkX3N0YXRlcy0xXS5mcmVxdWVuY3kgLyAxMDAwKQogICAgICAgICAgICAgY29u dGludWU7CmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvcGxhdGZvcm1faHlwZXJjYWxsLmMgYi94 ZW4vYXJjaC94ODYvcGxhdGZvcm1faHlwZXJjYWxsLmMKaW5kZXggZWJjMmYzOS4uNDQzOWJmOSAx MDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L3BsYXRmb3JtX2h5cGVyY2FsbC5jCisrKyBiL3hlbi9h cmNoL3g4Ni9wbGF0Zm9ybV9oeXBlcmNhbGwuYwpAQCAtNzI4LDIxICs3MjgsMjEgQEAgcmV0X3Qg ZG9fcGxhdGZvcm1fb3AoWEVOX0dVRVNUX0hBTkRMRV9QQVJBTSh4ZW5fcGxhdGZvcm1fb3BfdCkg dV94ZW5wZl9vcCkKIAogICAgIGNhc2UgWEVOUEZfcmVzb3VyY2Vfb3A6CiAgICAgewotICAgICAg ICBzdHJ1Y3QgcmVzb3VyY2VfYWNjZXNzIHJhOworICAgICAgICBzdHJ1Y3QgcmVzb3VyY2VfYWNj ZXNzICpyYSA9IGdldF9zbXBfaXBpX2J1ZihzdHJ1Y3QgcmVzb3VyY2VfYWNjZXNzKTsKICAgICAg ICAgdW5zaWduZWQgaW50IGNwdTsKICAgICAgICAgWEVOX0dVRVNUX0hBTkRMRSh4ZW5wZl9yZXNv dXJjZV9lbnRyeV90KSBndWVzdF9lbnRyaWVzOwogCi0gICAgICAgIHJhLm5yX2VudHJpZXMgPSBv cC0+dS5yZXNvdXJjZV9vcC5ucl9lbnRyaWVzOwotICAgICAgICBpZiAoIHJhLm5yX2VudHJpZXMg PT0gMCApCisgICAgICAgIHJhLT5ucl9lbnRyaWVzID0gb3AtPnUucmVzb3VyY2Vfb3AubnJfZW50 cmllczsKKyAgICAgICAgaWYgKCByYS0+bnJfZW50cmllcyA9PSAwICkKICAgICAgICAgICAgIGJy ZWFrOwotICAgICAgICBpZiAoIHJhLm5yX2VudHJpZXMgPiBSRVNPVVJDRV9BQ0NFU1NfTUFYX0VO VFJJRVMgKQorICAgICAgICBpZiAoIHJhLT5ucl9lbnRyaWVzID4gUkVTT1VSQ0VfQUNDRVNTX01B WF9FTlRSSUVTICkKICAgICAgICAgewogICAgICAgICAgICAgcmV0ID0gLUVJTlZBTDsKICAgICAg ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAgICAgICAgcmEuZW50cmllcyA9IHhtYWxsb2Nf YXJyYXkoeGVucGZfcmVzb3VyY2VfZW50cnlfdCwgcmEubnJfZW50cmllcyk7Ci0gICAgICAgIGlm ICggIXJhLmVudHJpZXMgKQorICAgICAgICByYS0+ZW50cmllcyA9IHhtYWxsb2NfYXJyYXkoeGVu cGZfcmVzb3VyY2VfZW50cnlfdCwgcmEtPm5yX2VudHJpZXMpOworICAgICAgICBpZiAoICFyYS0+ ZW50cmllcyApCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldCA9IC1FTk9NRU07CiAgICAgICAg ICAgICBicmVhazsKQEAgLTc1MCw0NiArNzUwLDQ2IEBAIHJldF90IGRvX3BsYXRmb3JtX29wKFhF Tl9HVUVTVF9IQU5ETEVfUEFSQU0oeGVuX3BsYXRmb3JtX29wX3QpIHVfeGVucGZfb3ApCiAKICAg ICAgICAgZ3Vlc3RfZnJvbV9jb21wYXRfaGFuZGxlKGd1ZXN0X2VudHJpZXMsIG9wLT51LnJlc291 cmNlX29wLmVudHJpZXMpOwogCi0gICAgICAgIGlmICggY29weV9mcm9tX2d1ZXN0KHJhLmVudHJp ZXMsIGd1ZXN0X2VudHJpZXMsIHJhLm5yX2VudHJpZXMpICkKKyAgICAgICAgaWYgKCBjb3B5X2Zy b21fZ3Vlc3QocmEtPmVudHJpZXMsIGd1ZXN0X2VudHJpZXMsIHJhLT5ucl9lbnRyaWVzKSApCiAg ICAgICAgIHsKLSAgICAgICAgICAgIHhmcmVlKHJhLmVudHJpZXMpOworICAgICAgICAgICAgeGZy ZWUocmEtPmVudHJpZXMpOwogICAgICAgICAgICAgcmV0ID0gLUVGQVVMVDsKICAgICAgICAgICAg IGJyZWFrOwogICAgICAgICB9CiAKICAgICAgICAgLyogRG8gc2FuaXR5IGNoZWNrIGVhcmxpZXIg dG8gb21pdCB0aGUgcG90ZW50aWFsIElQSSBvdmVyaGVhZC4gKi8KLSAgICAgICAgY2hlY2tfcmVz b3VyY2VfYWNjZXNzKCZyYSk7Ci0gICAgICAgIGlmICggcmEubnJfZG9uZSA9PSAwICkKKyAgICAg ICAgY2hlY2tfcmVzb3VyY2VfYWNjZXNzKHJhKTsKKyAgICAgICAgaWYgKCByYS0+bnJfZG9uZSA9 PSAwICkKICAgICAgICAgewogICAgICAgICAgICAgLyogQ29weSB0aGUgcmV0dXJuIHZhbHVlIGZv ciBlbnRyeSAwIGlmIGl0IGZhaWxlZC4gKi8KLSAgICAgICAgICAgIGlmICggX19jb3B5X3RvX2d1 ZXN0KGd1ZXN0X2VudHJpZXMsIHJhLmVudHJpZXMsIDEpICkKKyAgICAgICAgICAgIGlmICggX19j b3B5X3RvX2d1ZXN0KGd1ZXN0X2VudHJpZXMsIHJhLT5lbnRyaWVzLCAxKSApCiAgICAgICAgICAg ICAgICAgcmV0ID0gLUVGQVVMVDsKIAotICAgICAgICAgICAgeGZyZWUocmEuZW50cmllcyk7Cisg ICAgICAgICAgICB4ZnJlZShyYS0+ZW50cmllcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg ICAgfQogCiAgICAgICAgIGNwdSA9IG9wLT51LnJlc291cmNlX29wLmNwdTsKICAgICAgICAgaWYg KCAoY3B1ID49IG5yX2NwdV9pZHMpIHx8ICFjcHVfb25saW5lKGNwdSkgKQogICAgICAgICB7Ci0g ICAgICAgICAgICB4ZnJlZShyYS5lbnRyaWVzKTsKKyAgICAgICAgICAgIHhmcmVlKHJhLT5lbnRy aWVzKTsKICAgICAgICAgICAgIHJldCA9IC1FTk9ERVY7CiAgICAgICAgICAgICBicmVhazsKICAg ICAgICAgfQogICAgICAgICBpZiAoIGNwdSA9PSBzbXBfcHJvY2Vzc29yX2lkKCkgKQotICAgICAg ICAgICAgcmVzb3VyY2VfYWNjZXNzKCZyYSk7CisgICAgICAgICAgICByZXNvdXJjZV9hY2Nlc3Mo cmEpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBvbl9zZWxlY3RlZF9jcHVzKGNwdW1hc2tf b2YoY3B1KSwgcmVzb3VyY2VfYWNjZXNzLCAmcmEsIDEpOworICAgICAgICAgICAgb25fc2VsZWN0 ZWRfY3B1cyhjcHVtYXNrX29mKGNwdSksIHJlc291cmNlX2FjY2VzcywgcmEsIDEpOwogCiAgICAg ICAgIC8qIENvcHkgYWxsIGlmIHN1Y2NlZWRlZCBvciB1cCB0byB0aGUgZmFpbGVkIGVudHJ5LiAq LwotICAgICAgICBpZiAoIF9fY29weV90b19ndWVzdChndWVzdF9lbnRyaWVzLCByYS5lbnRyaWVz LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYS5ucl9kb25lIDwgcmEubnJfZW50cmll cyA/IHJhLm5yX2RvbmUgKyAxCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDogcmEubnJfZW50cmllcykgKQorICAgICAgICBpZiAoIF9fY29w eV90b19ndWVzdChndWVzdF9lbnRyaWVzLCByYS0+ZW50cmllcywKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcmEtPm5yX2RvbmUgPCByYS0+bnJfZW50cmllcyA/IHJhLT5ucl9kb25lICsg MQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICA6IHJhLT5ucl9lbnRyaWVzKSApCiAgICAgICAgICAgICByZXQgPSAtRUZBVUxUOwogICAgICAg ICBlbHNlCi0gICAgICAgICAgICByZXQgPSByYS5ucl9kb25lOworICAgICAgICAgICAgcmV0ID0g cmEtPm5yX2RvbmU7CiAKLSAgICAgICAgeGZyZWUocmEuZW50cmllcyk7CisgICAgICAgIHhmcmVl KHJhLT5lbnRyaWVzKTsKICAgICB9CiAgICAgYnJlYWs7CiAKZGlmZiAtLWdpdCBhL3hlbi9hcmNo L3g4Ni9wc3IuYyBiL3hlbi9hcmNoL3g4Ni9wc3IuYwppbmRleCAwYmE4ZWY4Li5hNmY2ZmIzIDEw MDY0NAotLS0gYS94ZW4vYXJjaC94ODYvcHNyLmMKKysrIGIveGVuL2FyY2gveDg2L3Bzci5jCkBA IC0xMjg1LDggKzEyODUsOSBAQCBzdGF0aWMgaW50IHdyaXRlX3Bzcl9tc3JzKHVuc2lnbmVkIGlu dCBzb2NrZXQsIHVuc2lnbmVkIGludCBjb3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVu dW0gcHNyX2ZlYXRfdHlwZSBmZWF0X3R5cGUpCiB7CiAgICAgc3RydWN0IHBzcl9zb2NrZXRfaW5m byAqaW5mbyA9IGdldF9zb2NrZXRfaW5mbyhzb2NrZXQpOwotICAgIHN0cnVjdCBjb3Nfd3JpdGVf aW5mbyBkYXRhID0KLSAgICB7CisgICAgc3RydWN0IGNvc193cml0ZV9pbmZvICpkYXRhID0gZ2V0 X3NtcF9pcGlfYnVmKHN0cnVjdCBjb3Nfd3JpdGVfaW5mbyk7CisKKyAgICAqZGF0YSA9IChzdHJ1 Y3QgY29zX3dyaXRlX2luZm8pewogICAgICAgICAuY29zID0gY29zLAogICAgICAgICAudmFsID0g dmFsLAogICAgICAgICAuYXJyYXlfbGVuID0gYXJyYXlfbGVuLApAQCAtMTI5NiwxNCArMTI5Nywx NCBAQCBzdGF0aWMgaW50IHdyaXRlX3Bzcl9tc3JzKHVuc2lnbmVkIGludCBzb2NrZXQsIHVuc2ln bmVkIGludCBjb3MsCiAgICAgICAgIHJldHVybiAtRUlOVkFMOwogCiAgICAgaWYgKCBzb2NrZXQg PT0gY3B1X3RvX3NvY2tldChzbXBfcHJvY2Vzc29yX2lkKCkpICkKLSAgICAgICAgZG9fd3JpdGVf cHNyX21zcnMoJmRhdGEpOworICAgICAgICBkb193cml0ZV9wc3JfbXNycyhkYXRhKTsKICAgICBl bHNlCiAgICAgewogICAgICAgICB1bnNpZ25lZCBpbnQgY3B1ID0gZ2V0X3NvY2tldF9jcHUoc29j a2V0KTsKIAogICAgICAgICBpZiAoIGNwdSA+PSBucl9jcHVfaWRzICkKICAgICAgICAgICAgIHJl dHVybiAtRU5PVFNPQ0s7Ci0gICAgICAgIG9uX3NlbGVjdGVkX2NwdXMoY3B1bWFza19vZihjcHUp LCBkb193cml0ZV9wc3JfbXNycywgJmRhdGEsIDEpOworICAgICAgICBvbl9zZWxlY3RlZF9jcHVz KGNwdW1hc2tfb2YoY3B1KSwgZG9fd3JpdGVfcHNyX21zcnMsIGRhdGEsIDEpOwogICAgIH0KIAog ICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L3B2L3B0LXNoYWRvdy5jIGIv eGVuL2FyY2gveDg2L3B2L3B0LXNoYWRvdy5jCmluZGV4IGI0ZjJiODYuLmQ1NTBhZTEgMTAwNjQ0 Ci0tLSBhL3hlbi9hcmNoL3g4Ni9wdi9wdC1zaGFkb3cuYworKysgYi94ZW4vYXJjaC94ODYvcHYv cHQtc2hhZG93LmMKQEAgLTM2NywzNSArMzY3LDM1IEBAIHN0YXRpYyB2b2lkIF9wdF9zaGFkb3df aXBpKHZvaWQgKmFyZykKIHZvaWQgcHRfc2hhZG93X2w0X3dyaXRlKGNvbnN0IHN0cnVjdCBkb21h aW4gKmQsIGNvbnN0IHN0cnVjdCBwYWdlX2luZm8gKnBnLAogICAgICAgICAgICAgICAgICAgICAg ICAgdW5zaWduZWQgaW50IHNsb3QpCiB7Ci0gICAgc3RydWN0IHB0c2hfaXBpX2luZm8gaW5mbzsK KyAgICBzdHJ1Y3QgcHRzaF9pcGlfaW5mbyAqaW5mbyA9IGdldF9zbXBfaXBpX2J1ZihzdHJ1Y3Qg cHRzaF9pcGlfaW5mbyk7CiAKICAgICBpZiAoICFwdF9uZWVkX3NoYWRvdyhkKSApCiAgICAgICAg IHJldHVybjsKIAotICAgIGluZm8gPSAoc3RydWN0IHB0c2hfaXBpX2luZm8peworICAgICppbmZv ID0gKHN0cnVjdCBwdHNoX2lwaV9pbmZvKXsKICAgICAgICAgLmQgPSBkLAogICAgICAgICAucGcg PSBwZywKICAgICAgICAgLm9wID0gUFRTSF9JUElfV1JJVEUsCiAgICAgICAgIC5zbG90ID0gc2xv dCwKICAgICB9OwogCi0gICAgb25fc2VsZWN0ZWRfY3B1cyhkLT5kb21haW5fZGlydHlfY3B1bWFz aywgX3B0X3NoYWRvd19pcGksICZpbmZvLCAxKTsKKyAgICBvbl9zZWxlY3RlZF9jcHVzKGQtPmRv bWFpbl9kaXJ0eV9jcHVtYXNrLCBfcHRfc2hhZG93X2lwaSwgaW5mbywgMSk7CiB9CiAKIHZvaWQg cHRfc2hhZG93X2w0X2ludmxwZyhjb25zdCBzdHJ1Y3QgZG9tYWluICpkLCBjb25zdCBzdHJ1Y3Qg cGFnZV9pbmZvICpwZykKIHsKLSAgICBzdHJ1Y3QgcHRzaF9pcGlfaW5mbyBpbmZvOworICAgIHN0 cnVjdCBwdHNoX2lwaV9pbmZvICppbmZvID0gZ2V0X3NtcF9pcGlfYnVmKHN0cnVjdCBwdHNoX2lw aV9pbmZvKTsKIAogICAgIGlmICggIXB0X25lZWRfc2hhZG93KGQpICkKICAgICAgICAgcmV0dXJu OwogCi0gICAgaW5mbyA9IChzdHJ1Y3QgcHRzaF9pcGlfaW5mbyl7CisgICAgKmluZm8gPSAoc3Ry dWN0IHB0c2hfaXBpX2luZm8pewogICAgICAgICAuZCA9IGQsCiAgICAgICAgIC5wZyA9IHBnLAog ICAgICAgICAub3AgPSBQVFNIX0lQSV9JTlZMUEcsCiAgICAgfTsKIAotICAgIG9uX3NlbGVjdGVk X2NwdXMoZC0+ZG9tYWluX2RpcnR5X2NwdW1hc2ssIF9wdF9zaGFkb3dfaXBpLCAmaW5mbywgMSk7 CisgICAgb25fc2VsZWN0ZWRfY3B1cyhkLT5kb21haW5fZGlydHlfY3B1bWFzaywgX3B0X3NoYWRv d19pcGksIGluZm8sIDEpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L3NtcC5j IGIveGVuL2FyY2gveDg2L3NtcC5jCmluZGV4IGZkNmQyNTQuLjY4ZDNhZjAgMTAwNjQ0Ci0tLSBh L3hlbi9hcmNoL3g4Ni9zbXAuYworKysgYi94ZW4vYXJjaC94ODYvc21wLmMKQEAgLTIyLDYgKzIy LDggQEAKICNpbmNsdWRlIDxhc20vaHZtL3N1cHBvcnQuaD4KICNpbmNsdWRlIDxtYWNoX2FwaWMu aD4KIAorREVGSU5FX1BFUl9DUFUoc3RydWN0IHNtcF9pcGlfYnVmLCBzbXBfaXBpX2J1Zik7CisK IC8qCiAgKiBzZW5kX0lQSV9tYXNrKGNwdW1hc2ssIHZlY3Rvcik6IHNlbmRzIEB2ZWN0b3IgSVBJ IHRvIENQVXMgaW4gQGNwdW1hc2ssCiAgKiBleGNsdWRpbmcgdGhlIGxvY2FsIENQVS4gQGNwdW1h c2sgbWF5IGJlIGVtcHR5LgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L3N5c2N0bC5jIGIveGVu L2FyY2gveDg2L3N5c2N0bC5jCmluZGV4IDRkMzcyZGIuLjdlY2Y4ZGYgMTAwNjQ0Ci0tLSBhL3hl bi9hcmNoL3g4Ni9zeXNjdGwuYworKysgYi94ZW4vYXJjaC94ODYvc3lzY3RsLmMKQEAgLTEzOSw3 ICsxMzksNyBAQCBsb25nIGFyY2hfZG9fc3lzY3RsKAogICAgICAgICAgICAgYnJlYWs7CiAgICAg ICAgIGNhc2UgWEVOX1NZU0NUTF9QU1JfQ01UX2dldF9sM19jYWNoZV9zaXplOgogICAgICAgICB7 Ci0gICAgICAgICAgICBzdHJ1Y3QgbDNfY2FjaGVfaW5mbyBpbmZvOworICAgICAgICAgICAgc3Ry dWN0IGwzX2NhY2hlX2luZm8gKmluZm8gPSBnZXRfc21wX2lwaV9idWYoc3RydWN0IGwzX2NhY2hl X2luZm8pOwogICAgICAgICAgICAgdW5zaWduZWQgaW50IGNwdSA9IHN5c2N0bC0+dS5wc3JfY210 X29wLnUubDNfY2FjaGUuY3B1OwogCiAgICAgICAgICAgICBpZiAoIChjcHUgPj0gbnJfY3B1X2lk cykgfHwgIWNwdV9vbmxpbmUoY3B1KSApCkBAIC0xNDksMTIgKzE0OSwxMiBAQCBsb25nIGFyY2hf ZG9fc3lzY3RsKAogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAg ICAgICAgaWYgKCBjcHUgPT0gc21wX3Byb2Nlc3Nvcl9pZCgpICkKLSAgICAgICAgICAgICAgICBs M19jYWNoZV9nZXQoJmluZm8pOworICAgICAgICAgICAgICAgIGwzX2NhY2hlX2dldChpbmZvKTsK ICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBvbl9zZWxlY3RlZF9jcHVzKGNwdW1h c2tfb2YoY3B1KSwgbDNfY2FjaGVfZ2V0LCAmaW5mbywgMSk7CisgICAgICAgICAgICAgICAgb25f c2VsZWN0ZWRfY3B1cyhjcHVtYXNrX29mKGNwdSksIGwzX2NhY2hlX2dldCwgaW5mbywgMSk7CiAK LSAgICAgICAgICAgIHJldCA9IGluZm8ucmV0OwotICAgICAgICAgICAgc3lzY3RsLT51LnBzcl9j bXRfb3AudS5kYXRhID0gKHJldCA/IDAgOiBpbmZvLnNpemUpOworICAgICAgICAgICAgcmV0ID0g aW5mby0+cmV0OworICAgICAgICAgICAgc3lzY3RsLT51LnBzcl9jbXRfb3AudS5kYXRhID0gKHJl dCA/IDAgOiBpbmZvLT5zaXplKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAg ICAgIGNhc2UgWEVOX1NZU0NUTF9QU1JfQ01UX2dldF9sM19ldmVudF9tYXNrOgpkaWZmIC0tZ2l0 IGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9zbXAuaCBiL3hlbi9pbmNsdWRlL2FzbS14ODYvc21wLmgK aW5kZXggNDZiYmYwZC4uZDkxNWMxZSAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9z bXAuaAorKysgYi94ZW4vaW5jbHVkZS9hc20teDg2L3NtcC5oCkBAIC0xMyw2ICsxMyw3IEBACiAj aWZuZGVmIF9fQVNTRU1CTFlfXwogI2luY2x1ZGUgPHhlbi9iaXRvcHMuaD4KICNpbmNsdWRlIDxh c20vbXBzcGVjLmg+CisjaW5jbHVkZSA8YXNtL2hhcmRpcnEuaD4KICNlbmRpZgogCiAjZGVmaW5l IEJBRF9BUElDSUQgICAoLTFVKQpAQCAtODksNiArOTAsMjUgQEAgc3RhdGljIGlubGluZSBib29s IGFyY2hfaXBpX3BhcmFtX29rKGNvbnN0IHZvaWQgKl9wYXJhbSkKICAgICAgICAgICAgIGw0X3Rh YmxlX29mZnNldChwYXJhbSkgIT0gbDRfdGFibGVfb2Zmc2V0KFBFUkNQVV9MSU5FQVJfU1RBUlQp KTsKIH0KIAorc3RydWN0IHNtcF9pcGlfYnVmIHsKKyNkZWZpbmUgU01QX0lQSV9CVUZfU1ogMHg3 MAorICAgIGNoYXIgT1BBUVVFW1NNUF9JUElfQlVGX1NaXTsKK307CitERUNMQVJFX1BFUl9DUFUo c3RydWN0IHNtcF9pcGlfYnVmLCBzbXBfaXBpX2J1Zik7CisKKy8qCisgKiBXcmFwcGVyIHRvIG9i dGFpbiBhbiBJUEkgYm91bmNlIGJ1ZmZlciwgY2hlY2tpbmcgdGhhdCB0aGVyZSBpcyBzdWZmaWNp ZW50CisgKiBzaXplLiAgVGhlIGNob2ljZSBvZiBTTVBfSVBJX0JVRl9TWiBpcyBhcmJpdHJhcnks IGFuZCBzaG91bGQgYmUgdGhlIHNpemUgb2YKKyAqIHRoZSBsYXJnZXN0IG9iamVjdCBwYXNzZWQg aW50byBhbiBJUEkuCisgKi8KKyNkZWZpbmUgZ2V0X3NtcF9pcGlfYnVmKG9iaikgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgKHsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB0eXBlb2Yob2Jq KSAqX28gPSAodm9pZCAqKXRoaXNfY3B1KHNtcF9pcGlfYnVmKS5PUEFRVUU7IFwKKyAgICAgICAg QlVJTERfQlVHX09OKHNpemVvZihvYmopID4gU01QX0lQSV9CVUZfU1opOyAgICAgICAgICAgICBc CisgICAgICAgIEFTU0VSVCghaW5faXJxKCkpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXAorICAgICAgICBfbzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwKKyAgICB9KQorCiAjZW5kaWYgLyogIV9fQVNTRU1CTFlfXyAq LwogCiAjZW5kaWYKLS0gCjIuMS40CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVu cHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZv L3hlbi1kZXZlbA==