From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751763AbcFXVG5 (ORCPT ); Fri, 24 Jun 2016 17:06:57 -0400 Received: from mail-oi0-f42.google.com ([209.85.218.42]:36846 "EHLO mail-oi0-f42.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751654AbcFXVGy (ORCPT ); Fri, 24 Jun 2016 17:06:54 -0400 MIME-Version: 1.0 In-Reply-To: <20160624205116.4hbnurrnan4afq2t@treble> References: <20160623185340.GO30154@twins.programming.kicks-ass.net> <20160624202530.unmidps4kpebo2na@treble> <20160624205116.4hbnurrnan4afq2t@treble> From: Linus Torvalds Date: Fri, 24 Jun 2016 14:06:51 -0700 X-Google-Sender-Auth: M145877KIq7N9K90pYGq1YWuKO0 Message-ID: Subject: Re: [PATCH v3 00/13] Virtually mapped stacks with guard pages (x86, core) To: Josh Poimboeuf Cc: Brian Gerst , Peter Zijlstra , Oleg Nesterov , Andy Lutomirski , Andy Lutomirski , "the arch/x86 maintainers" , Linux Kernel Mailing List , "linux-arch@vger.kernel.org" , Borislav Petkov , Nadav Amit , Kees Cook , "kernel-hardening@lists.openwall.com" , Jann Horn , Heiko Carstens Content-Type: multipart/mixed; boundary=001a11371390c8596905360c8c32 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org --001a11371390c8596905360c8c32 Content-Type: text/plain; charset=UTF-8 On Fri, Jun 24, 2016 at 1:51 PM, Josh Poimboeuf wrote: > > Found another bug: Yup. Those two were the ones that kept it from working for me. Thanks. Anyway, here's the final combined patch that works for me on x86-64. No more thread-info on the stack. Linus --001a11371390c8596905360c8c32 Content-Type: text/plain; charset=US-ASCII; name="patch.diff" Content-Disposition: attachment; filename="patch.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_ipu89vga0 CiAgICBUaGlzIGlzIGFuIGF0dGVtcHQgYXQgbW92aW5nIHRoZSB0aHJlYWRfaW5mbyBpbnRvIHRo ZSB0YXNrX3N0cnVjdAotLS0KIGFyY2gvbW4xMDMwMC9pbmNsdWRlL2FzbS90aHJlYWRfaW5mby5o IHwgIDIgKy0KIGFyY2gvbW4xMDMwMC9rZXJuZWwva2dkYi5jICAgICAgICAgICAgIHwgIDMgKyst CiBhcmNoL3RpbGUvaW5jbHVkZS9hc20vdGhyZWFkX2luZm8uaCAgICB8ICAyICstCiBhcmNoL3Rp bGUva2VybmVsL3Byb2Nlc3MuYyAgICAgICAgICAgICB8ICAzICsrLQogYXJjaC94ODYvS2NvbmZp ZyAgICAgICAgICAgICAgICAgICAgICAgfCAgMSArCiBhcmNoL3g4Ni9lbnRyeS9jb21tb24uYyAg ICAgICAgICAgICAgICB8IDIxICsrKysrKy0tLS0tLS0tLS0KIGFyY2gveDg2L2VudHJ5L2VudHJ5 XzY0LlMgICAgICAgICAgICAgIHwgIDkgKysrKy0tLQogYXJjaC94ODYvaW5jbHVkZS9hc20vY3B1 LmggICAgICAgICAgICAgfCAgMSAtCiBhcmNoL3g4Ni9pbmNsdWRlL2FzbS9rcHJvYmVzLmggICAg ICAgICB8IDEyICsrKysrLS0tLS0KIGFyY2gveDg2L2luY2x1ZGUvYXNtL3NtcC5oICAgICAgICAg ICAgIHwgIDYgLS0tLS0KIGFyY2gveDg2L2luY2x1ZGUvYXNtL3N3aXRjaF90by5oICAgICAgIHwg IDYgKystLS0KIGFyY2gveDg2L2luY2x1ZGUvYXNtL3RocmVhZF9pbmZvLmggICAgIHwgMzcgKysr LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogYXJjaC94ODYva2VybmVsL2NwdS9jb21tb24uYyAg ICAgICAgICAgfCAgMiArLQogYXJjaC94ODYva2VybmVsL2R1bXBzdGFjay5jICAgICAgICAgICAg fCAgMiArLQogYXJjaC94ODYva2VybmVsL2lycV8zMi5jICAgICAgICAgICAgICAgfCAgMiAtLQog YXJjaC94ODYva2VybmVsL2lycV82NC5jICAgICAgICAgICAgICAgfCAgMyArLS0KIGFyY2gveDg2 L2tlcm5lbC9wcm9jZXNzLmMgICAgICAgICAgICAgIHwgIDYgKystLS0KIGFyY2gveDg2L3VtL3B0 cmFjZV8zMi5jICAgICAgICAgICAgICAgIHwgIDggKysrLS0tLQogaW5jbHVkZS9saW51eC9pbml0 X3Rhc2suaCAgICAgICAgICAgICAgfCAxMSArKysrKysrKy0KIGluY2x1ZGUvbGludXgvc2NoZWQu aCAgICAgICAgICAgICAgICAgIHwgMTggKysrKysrKysrKystLS0KIGluaXQvS2NvbmZpZyAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgIDMgKysrCiBpbml0L2luaXRfdGFzay5jICAgICAgICAg ICAgICAgICAgICAgICB8ICA3ICsrKystLQoga2VybmVsL2ZvcmsuYyAgICAgICAgICAgICAgICAg ICAgICAgICAgfCA0NCArKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tCiAyMyBmaWxl cyBjaGFuZ2VkLCA5NSBpbnNlcnRpb25zKCspLCAxMTQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0 IGEvYXJjaC9tbjEwMzAwL2luY2x1ZGUvYXNtL3RocmVhZF9pbmZvLmggYi9hcmNoL21uMTAzMDAv aW5jbHVkZS9hc20vdGhyZWFkX2luZm8uaAppbmRleCA0ODYxYTc4YzcxNjAuLmY1ZjkwYmJmMDE5 ZCAxMDA2NDQKLS0tIGEvYXJjaC9tbjEwMzAwL2luY2x1ZGUvYXNtL3RocmVhZF9pbmZvLmgKKysr IGIvYXJjaC9tbjEwMzAwL2luY2x1ZGUvYXNtL3RocmVhZF9pbmZvLmgKQEAgLTExNSw3ICsxMTUs NyBAQCBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgY3VycmVudF9zdGFja19wb2ludGVyKHZv aWQpCiB9CiAKICNpZm5kZWYgQ09ORklHX0tHREIKLXZvaWQgYXJjaF9yZWxlYXNlX3RocmVhZF9p bmZvKHN0cnVjdCB0aHJlYWRfaW5mbyAqdGkpOwordm9pZCBhcmNoX3JlbGVhc2VfdGhyZWFkX3N0 YWNrKHVuc2lnbmVkIGxvbmcgKnN0YWNrKTsKICNlbmRpZgogI2RlZmluZSBnZXRfdGhyZWFkX2lu Zm8odGkpCWdldF90YXNrX3N0cnVjdCgodGkpLT50YXNrKQogI2RlZmluZSBwdXRfdGhyZWFkX2lu Zm8odGkpCXB1dF90YXNrX3N0cnVjdCgodGkpLT50YXNrKQpkaWZmIC0tZ2l0IGEvYXJjaC9tbjEw MzAwL2tlcm5lbC9rZ2RiLmMgYi9hcmNoL21uMTAzMDAva2VybmVsL2tnZGIuYwppbmRleCA5OTc3 MDgyMzQ1MWEuLjJkNzk4NmMzODZmZSAxMDA2NDQKLS0tIGEvYXJjaC9tbjEwMzAwL2tlcm5lbC9r Z2RiLmMKKysrIGIvYXJjaC9tbjEwMzAwL2tlcm5lbC9rZ2RiLmMKQEAgLTM5Nyw4ICszOTcsOSBA QCBzdGF0aWMgYm9vbCBrZ2RiX2FyY2hfdW5kb19zaW5nbGVzdGVwKHN0cnVjdCBwdF9yZWdzICpy ZWdzKQogICogc2luZ2xlLXN0ZXAgc3RhdGUgaXMgY2xlYXJlZC4gIEF0IHRoaXMgcG9pbnQgdGhl IGJyZWFrcG9pbnRzIHNob3VsZCBoYXZlCiAgKiBiZWVuIHJlbW92ZWQgYnkgX19zd2l0Y2hfdG8o KS4KICAqLwotdm9pZCBhcmNoX3JlbGVhc2VfdGhyZWFkX2luZm8oc3RydWN0IHRocmVhZF9pbmZv ICp0aSkKK3ZvaWQgYXJjaF9yZWxlYXNlX3RocmVhZF9zdGFjayh1bnNpZ25lZCBsb25nICpzdGFj aykKIHsKKwlzdHJ1Y3QgdGhyZWFkX2luZm8gKnRpID0gKHZvaWQgKilzdGFjazsKIAlpZiAoa2dk Yl9zc3RlcF90aHJlYWQgPT0gdGkpIHsKIAkJa2dkYl9zc3RlcF90aHJlYWQgPSBOVUxMOwogCmRp ZmYgLS1naXQgYS9hcmNoL3RpbGUvaW5jbHVkZS9hc20vdGhyZWFkX2luZm8uaCBiL2FyY2gvdGls ZS9pbmNsdWRlL2FzbS90aHJlYWRfaW5mby5oCmluZGV4IDRiN2NlZjllOTRlMC4uYzE0NjdhYzU5 Y2U2IDEwMDY0NAotLS0gYS9hcmNoL3RpbGUvaW5jbHVkZS9hc20vdGhyZWFkX2luZm8uaAorKysg Yi9hcmNoL3RpbGUvaW5jbHVkZS9hc20vdGhyZWFkX2luZm8uaApAQCAtNzgsNyArNzgsNyBAQCBz dHJ1Y3QgdGhyZWFkX2luZm8gewogCiAjaWZuZGVmIF9fQVNTRU1CTFlfXwogCi12b2lkIGFyY2hf cmVsZWFzZV90aHJlYWRfaW5mbyhzdHJ1Y3QgdGhyZWFkX2luZm8gKmluZm8pOwordm9pZCBhcmNo X3JlbGVhc2VfdGhyZWFkX3N0YWNrKHVuc2lnbmVkIGxvbmcgKnN0YWNrKTsKIAogLyogSG93IHRv IGdldCB0aGUgdGhyZWFkIGluZm9ybWF0aW9uIHN0cnVjdCBmcm9tIEMuICovCiByZWdpc3RlciB1 bnNpZ25lZCBsb25nIHN0YWNrX3BvaW50ZXIgX19hc21fXygic3AiKTsKZGlmZiAtLWdpdCBhL2Fy Y2gvdGlsZS9rZXJuZWwvcHJvY2Vzcy5jIGIvYXJjaC90aWxlL2tlcm5lbC9wcm9jZXNzLmMKaW5k ZXggNmI3MDVjY2M5Y2MxLi5hNDY1ZDgzNzJlZGQgMTAwNjQ0Ci0tLSBhL2FyY2gvdGlsZS9rZXJu ZWwvcHJvY2Vzcy5jCisrKyBiL2FyY2gvdGlsZS9rZXJuZWwvcHJvY2Vzcy5jCkBAIC03Myw4ICs3 Myw5IEBAIHZvaWQgYXJjaF9jcHVfaWRsZSh2b2lkKQogLyoKICAqIFJlbGVhc2UgYSB0aHJlYWRf aW5mbyBzdHJ1Y3R1cmUKICAqLwotdm9pZCBhcmNoX3JlbGVhc2VfdGhyZWFkX2luZm8oc3RydWN0 IHRocmVhZF9pbmZvICppbmZvKQordm9pZCBhcmNoX3JlbGVhc2VfdGhyZWFkX3N0YWNrKHVuc2ln bmVkIGxvbmcgKnN0YWNrKQogeworCXN0cnVjdCB0aHJlYWRfaW5mbyAqaW5mbyA9ICh2b2lkICop c3RhY2s7CiAJc3RydWN0IHNpbmdsZV9zdGVwX3N0YXRlICpzdGVwX3N0YXRlID0gaW5mby0+c3Rl cF9zdGF0ZTsKIAogCWlmIChzdGVwX3N0YXRlKSB7CmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9LY29u ZmlnIGIvYXJjaC94ODYvS2NvbmZpZwppbmRleCBkOWE5NGRhMGMyOWYuLmYzM2JjODA1NzdjNSAx MDA2NDQKLS0tIGEvYXJjaC94ODYvS2NvbmZpZworKysgYi9hcmNoL3g4Ni9LY29uZmlnCkBAIC0x NTQsNiArMTU0LDcgQEAgY29uZmlnIFg4NgogCXNlbGVjdCBTUEFSU0VfSVJRCiAJc2VsZWN0IFNS Q1UKIAlzZWxlY3QgU1lTQ1RMX0VYQ0VQVElPTl9UUkFDRQorCXNlbGVjdCBUSFJFQURfSU5GT19J Tl9UQVNLCiAJc2VsZWN0IFVTRVJfU1RBQ0tUUkFDRV9TVVBQT1JUCiAJc2VsZWN0IFZJUlRfVE9f QlVTCiAJc2VsZWN0IFg4Nl9ERVZfRE1BX09QUwkJCWlmIFg4Nl82NApkaWZmIC0tZ2l0IGEvYXJj aC94ODYvZW50cnkvY29tbW9uLmMgYi9hcmNoL3g4Ni9lbnRyeS9jb21tb24uYwppbmRleCBlYzEz OGU1MzhjNDQuLmQ1ZmVhYzVmMjUyZCAxMDA2NDQKLS0tIGEvYXJjaC94ODYvZW50cnkvY29tbW9u LmMKKysrIGIvYXJjaC94ODYvZW50cnkvY29tbW9uLmMKQEAgLTMxLDEzICszMSw2IEBACiAjZGVm aW5lIENSRUFURV9UUkFDRV9QT0lOVFMKICNpbmNsdWRlIDx0cmFjZS9ldmVudHMvc3lzY2FsbHMu aD4KIAotc3RhdGljIHN0cnVjdCB0aHJlYWRfaW5mbyAqcHRfcmVnc190b190aHJlYWRfaW5mbyhz dHJ1Y3QgcHRfcmVncyAqcmVncykKLXsKLQl1bnNpZ25lZCBsb25nIHRvcF9vZl9zdGFjayA9Ci0J CSh1bnNpZ25lZCBsb25nKShyZWdzICsgMSkgKyBUT1BfT0ZfS0VSTkVMX1NUQUNLX1BBRERJTkc7 Ci0JcmV0dXJuIChzdHJ1Y3QgdGhyZWFkX2luZm8gKikodG9wX29mX3N0YWNrIC0gVEhSRUFEX1NJ WkUpOwotfQotCiAjaWZkZWYgQ09ORklHX0NPTlRFWFRfVFJBQ0tJTkcKIC8qIENhbGxlZCBvbiBl bnRyeSBmcm9tIHVzZXIgbW9kZSB3aXRoIElSUXMgb2ZmLiAqLwogX192aXNpYmxlIHZvaWQgZW50 ZXJfZnJvbV91c2VyX21vZGUodm9pZCkKQEAgLTc4LDcgKzcxLDcgQEAgc3RhdGljIHZvaWQgZG9f YXVkaXRfc3lzY2FsbF9lbnRyeShzdHJ1Y3QgcHRfcmVncyAqcmVncywgdTMyIGFyY2gpCiAgKi8K IHVuc2lnbmVkIGxvbmcgc3lzY2FsbF90cmFjZV9lbnRlcl9waGFzZTEoc3RydWN0IHB0X3JlZ3Mg KnJlZ3MsIHUzMiBhcmNoKQogewotCXN0cnVjdCB0aHJlYWRfaW5mbyAqdGkgPSBwdF9yZWdzX3Rv X3RocmVhZF9pbmZvKHJlZ3MpOworCXN0cnVjdCB0aHJlYWRfaW5mbyAqdGkgPSBjdXJyZW50X3Ro cmVhZF9pbmZvKCk7CiAJdW5zaWduZWQgbG9uZyByZXQgPSAwOwogCXUzMiB3b3JrOwogCkBAIC0x NTYsNyArMTQ5LDcgQEAgdW5zaWduZWQgbG9uZyBzeXNjYWxsX3RyYWNlX2VudGVyX3BoYXNlMShz dHJ1Y3QgcHRfcmVncyAqcmVncywgdTMyIGFyY2gpCiBsb25nIHN5c2NhbGxfdHJhY2VfZW50ZXJf cGhhc2UyKHN0cnVjdCBwdF9yZWdzICpyZWdzLCB1MzIgYXJjaCwKIAkJCQl1bnNpZ25lZCBsb25n IHBoYXNlMV9yZXN1bHQpCiB7Ci0Jc3RydWN0IHRocmVhZF9pbmZvICp0aSA9IHB0X3JlZ3NfdG9f dGhyZWFkX2luZm8ocmVncyk7CisJc3RydWN0IHRocmVhZF9pbmZvICp0aSA9IGN1cnJlbnRfdGhy ZWFkX2luZm8oKTsKIAlsb25nIHJldCA9IDA7CiAJdTMyIHdvcmsgPSBBQ0NFU1NfT05DRSh0aS0+ ZmxhZ3MpICYgX1RJRl9XT1JLX1NZU0NBTExfRU5UUlk7CiAKQEAgLTIzOSw3ICsyMzIsNyBAQCBz dGF0aWMgdm9pZCBleGl0X3RvX3VzZXJtb2RlX2xvb3Aoc3RydWN0IHB0X3JlZ3MgKnJlZ3MsIHUz MiBjYWNoZWRfZmxhZ3MpCiAJCS8qIERpc2FibGUgSVJRcyBhbmQgcmV0cnkgKi8KIAkJbG9jYWxf aXJxX2Rpc2FibGUoKTsKIAotCQljYWNoZWRfZmxhZ3MgPSBSRUFEX09OQ0UocHRfcmVnc190b190 aHJlYWRfaW5mbyhyZWdzKS0+ZmxhZ3MpOworCQljYWNoZWRfZmxhZ3MgPSBSRUFEX09OQ0UoY3Vy cmVudF90aHJlYWRfaW5mbygpLT5mbGFncyk7CiAKIAkJaWYgKCEoY2FjaGVkX2ZsYWdzICYgRVhJ VF9UT19VU0VSTU9ERV9MT09QX0ZMQUdTKSkKIAkJCWJyZWFrOwpAQCAtMjUwLDcgKzI0Myw3IEBA IHN0YXRpYyB2b2lkIGV4aXRfdG9fdXNlcm1vZGVfbG9vcChzdHJ1Y3QgcHRfcmVncyAqcmVncywg dTMyIGNhY2hlZF9mbGFncykKIC8qIENhbGxlZCB3aXRoIElSUXMgZGlzYWJsZWQuICovCiBfX3Zp c2libGUgaW5saW5lIHZvaWQgcHJlcGFyZV9leGl0X3RvX3VzZXJtb2RlKHN0cnVjdCBwdF9yZWdz ICpyZWdzKQogewotCXN0cnVjdCB0aHJlYWRfaW5mbyAqdGkgPSBwdF9yZWdzX3RvX3RocmVhZF9p bmZvKHJlZ3MpOworCXN0cnVjdCB0aHJlYWRfaW5mbyAqdGkgPSBjdXJyZW50X3RocmVhZF9pbmZv KCk7CiAJdTMyIGNhY2hlZF9mbGFnczsKIAogCWlmIChJU19FTkFCTEVEKENPTkZJR19QUk9WRV9M T0NLSU5HKSAmJiBXQVJOX09OKCFpcnFzX2Rpc2FibGVkKCkpKQpAQCAtMzA5LDcgKzMwMiw3IEBA IHN0YXRpYyB2b2lkIHN5c2NhbGxfc2xvd19leGl0X3dvcmsoc3RydWN0IHB0X3JlZ3MgKnJlZ3Ms IHUzMiBjYWNoZWRfZmxhZ3MpCiAgKi8KIF9fdmlzaWJsZSBpbmxpbmUgdm9pZCBzeXNjYWxsX3Jl dHVybl9zbG93cGF0aChzdHJ1Y3QgcHRfcmVncyAqcmVncykKIHsKLQlzdHJ1Y3QgdGhyZWFkX2lu Zm8gKnRpID0gcHRfcmVnc190b190aHJlYWRfaW5mbyhyZWdzKTsKKwlzdHJ1Y3QgdGhyZWFkX2lu Zm8gKnRpID0gY3VycmVudF90aHJlYWRfaW5mbygpOwogCXUzMiBjYWNoZWRfZmxhZ3MgPSBSRUFE X09OQ0UodGktPmZsYWdzKTsKIAogCUNUX1dBUk5fT04oY3Rfc3RhdGUoKSAhPSBDT05URVhUX0tF Uk5FTCk7CkBAIC0zMzIsNyArMzI1LDcgQEAgX192aXNpYmxlIGlubGluZSB2b2lkIHN5c2NhbGxf cmV0dXJuX3Nsb3dwYXRoKHN0cnVjdCBwdF9yZWdzICpyZWdzKQogI2lmZGVmIENPTkZJR19YODZf NjQKIF9fdmlzaWJsZSB2b2lkIGRvX3N5c2NhbGxfNjQoc3RydWN0IHB0X3JlZ3MgKnJlZ3MpCiB7 Ci0Jc3RydWN0IHRocmVhZF9pbmZvICp0aSA9IHB0X3JlZ3NfdG9fdGhyZWFkX2luZm8ocmVncyk7 CisJc3RydWN0IHRocmVhZF9pbmZvICp0aSA9IGN1cnJlbnRfdGhyZWFkX2luZm8oKTsKIAl1bnNp Z25lZCBsb25nIG5yID0gcmVncy0+b3JpZ19heDsKIAogCWVudGVyX2Zyb21fdXNlcl9tb2RlKCk7 CkBAIC0zNjUsNyArMzU4LDcgQEAgX192aXNpYmxlIHZvaWQgZG9fc3lzY2FsbF82NChzdHJ1Y3Qg cHRfcmVncyAqcmVncykKICAqLwogc3RhdGljIF9fYWx3YXlzX2lubGluZSB2b2lkIGRvX3N5c2Nh bGxfMzJfaXJxc19vbihzdHJ1Y3QgcHRfcmVncyAqcmVncykKIHsKLQlzdHJ1Y3QgdGhyZWFkX2lu Zm8gKnRpID0gcHRfcmVnc190b190aHJlYWRfaW5mbyhyZWdzKTsKKwlzdHJ1Y3QgdGhyZWFkX2lu Zm8gKnRpID0gY3VycmVudF90aHJlYWRfaW5mbygpOwogCXVuc2lnbmVkIGludCBuciA9ICh1bnNp Z25lZCBpbnQpcmVncy0+b3JpZ19heDsKIAogI2lmZGVmIENPTkZJR19JQTMyX0VNVUxBVElPTgpk aWZmIC0tZ2l0IGEvYXJjaC94ODYvZW50cnkvZW50cnlfNjQuUyBiL2FyY2gveDg2L2VudHJ5L2Vu dHJ5XzY0LlMKaW5kZXggOWVlMGRhMTgwN2VkLi5mNDk3NDJkZTJjNjUgMTAwNjQ0Ci0tLSBhL2Fy Y2gveDg2L2VudHJ5L2VudHJ5XzY0LlMKKysrIGIvYXJjaC94ODYvZW50cnkvZW50cnlfNjQuUwpA QCAtMTc5LDcgKzE3OSw4IEBAIEdMT0JBTChlbnRyeV9TWVNDQUxMXzY0X2FmdGVyX3N3YXBncykK IAkgKiBJZiB3ZSBuZWVkIHRvIGRvIGVudHJ5IHdvcmsgb3IgaWYgd2UgZ3Vlc3Mgd2UnbGwgbmVl ZCB0byBkbwogCSAqIGV4aXQgd29yaywgZ28gc3RyYWlnaHQgdG8gdGhlIHNsb3cgcGF0aC4KIAkg Ki8KLQl0ZXN0bAkkX1RJRl9XT1JLX1NZU0NBTExfRU5UUll8X1RJRl9BTExXT1JLX01BU0ssIEFT TV9USFJFQURfSU5GTyhUSV9mbGFncywgJXJzcCwgU0laRU9GX1BUUkVHUykKKwlHRVRfVEhSRUFE X0lORk8oJXIxMSkKKwl0ZXN0bAkkX1RJRl9XT1JLX1NZU0NBTExfRU5UUll8X1RJRl9BTExXT1JL X01BU0ssIFRJX2ZsYWdzKCVyMTEpCiAJam56CWVudHJ5X1NZU0NBTEw2NF9zbG93X3BhdGgKIAog ZW50cnlfU1lTQ0FMTF82NF9mYXN0cGF0aDoKQEAgLTIxNyw3ICsyMTgsOCBAQCBlbnRyeV9TWVND QUxMXzY0X2Zhc3RwYXRoOgogCSAqLwogCURJU0FCTEVfSU5URVJSVVBUUyhDTEJSX05PTkUpCiAJ VFJBQ0VfSVJRU19PRkYKLQl0ZXN0bAkkX1RJRl9BTExXT1JLX01BU0ssIEFTTV9USFJFQURfSU5G TyhUSV9mbGFncywgJXJzcCwgU0laRU9GX1BUUkVHUykKKwlHRVRfVEhSRUFEX0lORk8oJXIxMSkK Kwl0ZXN0bAkkX1RJRl9BTExXT1JLX01BU0ssIFRJX2ZsYWdzKCVyMTEpCiAJam56CTFmCiAKIAlM T0NLREVQX1NZU19FWElUCkBAIC0zNjgsOSArMzcwLDEwIEBAIEVORChwdHJlZ3NfXGZ1bmMpCiAg KiBBIG5ld2x5IGZvcmtlZCBwcm9jZXNzIGRpcmVjdGx5IGNvbnRleHQgc3dpdGNoZXMgaW50byB0 aGlzIGFkZHJlc3MuCiAgKgogICogcmRpOiBwcmV2IHRhc2sgd2Ugc3dpdGNoZWQgZnJvbQorICog cnNpOiB0YXNrIHdlJ3JlIHN3aXRjaGluZyB0bwogICovCiBFTlRSWShyZXRfZnJvbV9mb3JrKQot CUxPQ0sgOyBidHIgJFRJRl9GT1JLLCBUSV9mbGFncyglcjgpCisJTE9DSyA7IGJ0ciAkVElGX0ZP UkssIFRJX2ZsYWdzKCVyc2kpCS8qIHJzaTogdGhpcyBuZXdseSBmb3JrZWQgdGFzayAqLwogCiAJ Y2FsbAlzY2hlZHVsZV90YWlsCQkJLyogcmRpOiAncHJldicgdGFzayBwYXJhbWV0ZXIgKi8KIApk aWZmIC0tZ2l0IGEvYXJjaC94ODYvaW5jbHVkZS9hc20vY3B1LmggYi9hcmNoL3g4Ni9pbmNsdWRl L2FzbS9jcHUuaAppbmRleCA2Nzg2MzdhZDc0NzYuLjU5ZDM0YzUyMWQ5NiAxMDA2NDQKLS0tIGEv YXJjaC94ODYvaW5jbHVkZS9hc20vY3B1LmgKKysrIGIvYXJjaC94ODYvaW5jbHVkZS9hc20vY3B1 LmgKQEAgLTE3LDcgKzE3LDYgQEAgc3RhdGljIGlubGluZSB2b2lkIHByZWZpbGxfcG9zc2libGVf bWFwKHZvaWQpIHt9CiAKICNkZWZpbmUgY3B1X3BoeXNpY2FsX2lkKGNwdSkJCQlib290X2NwdV9w aHlzaWNhbF9hcGljaWQKICNkZWZpbmUgc2FmZV9zbXBfcHJvY2Vzc29yX2lkKCkJCQkwCi0jZGVm aW5lIHN0YWNrX3NtcF9wcm9jZXNzb3JfaWQoKQkJMAogCiAjZW5kaWYgLyogQ09ORklHX1NNUCAq LwogCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rcHJvYmVzLmggYi9hcmNoL3g4 Ni9pbmNsdWRlL2FzbS9rcHJvYmVzLmgKaW5kZXggNDQyMWI1ZGE0MDlkLi4xZDI5OTdlNzRiMDgg MTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL2twcm9iZXMuaAorKysgYi9hcmNoL3g4 Ni9pbmNsdWRlL2FzbS9rcHJvYmVzLmgKQEAgLTM4LDEyICszOCwxMiBAQCB0eXBlZGVmIHU4IGtw cm9iZV9vcGNvZGVfdDsKICNkZWZpbmUgUkVMQVRJVkVDQUxMX09QQ09ERSAweGU4CiAjZGVmaW5l IFJFTEFUSVZFX0FERFJfU0laRSA0CiAjZGVmaW5lIE1BWF9TVEFDS19TSVpFIDY0Ci0jZGVmaW5l IE1JTl9TVEFDS19TSVpFKEFERFIpCQkJCQkgICAgICAgXAotCSgoKE1BWF9TVEFDS19TSVpFKSA8 ICgoKHVuc2lnbmVkIGxvbmcpY3VycmVudF90aHJlYWRfaW5mbygpKSArIFwKLQkJCSAgICAgIFRI UkVBRF9TSVpFIC0gKHVuc2lnbmVkIGxvbmcpKEFERFIpKSkgICAgXAotCSA/IChNQVhfU1RBQ0tf U0laRSkJCQkJCSAgICAgICBcCi0JIDogKCgodW5zaWduZWQgbG9uZyljdXJyZW50X3RocmVhZF9p bmZvKCkpICsJCSAgICAgICBcCi0JICAgIFRIUkVBRF9TSVpFIC0gKHVuc2lnbmVkIGxvbmcpKEFE RFIpKSkKKworI2RlZmluZSBjdXJyZW50X3N0YWNrX3RvcCgpICgodW5zaWduZWQgbG9uZyl0YXNr X3N0YWNrX3BhZ2UoY3VycmVudCkrVEhSRUFEX1NJWkUpCisjZGVmaW5lIGN1cnJlbnRfc3RhY2tf c2l6ZShBRERSKSAoY3VycmVudF9zdGFja190b3AoKSAtICh1bnNpZ25lZCBsb25nKShBRERSKSkK KworI2RlZmluZSBNSU5fU1RBQ0tfU0laRShBRERSKSBcCisJKE1BWF9TVEFDS19TSVpFIDwgY3Vy cmVudF9zdGFja19zaXplKEFERFIpID8gTUFYX1NUQUNLX1NJWkUgOiBjdXJyZW50X3N0YWNrX3Np emUoQUREUikpCiAKICNkZWZpbmUgZmx1c2hfaW5zbl9zbG90KHApCWRvIHsgfSB3aGlsZSAoMCkK IApkaWZmIC0tZ2l0IGEvYXJjaC94ODYvaW5jbHVkZS9hc20vc21wLmggYi9hcmNoL3g4Ni9pbmNs dWRlL2FzbS9zbXAuaAppbmRleCA2NmIwNTczMDZmNDAuLjA1NzZiNjE1N2YzYSAxMDA2NDQKLS0t IGEvYXJjaC94ODYvaW5jbHVkZS9hc20vc21wLmgKKysrIGIvYXJjaC94ODYvaW5jbHVkZS9hc20v c21wLmgKQEAgLTE3MiwxMiArMTcyLDYgQEAgZXh0ZXJuIGludCBzYWZlX3NtcF9wcm9jZXNzb3Jf aWQodm9pZCk7CiAjZWxpZiBkZWZpbmVkKENPTkZJR19YODZfNjRfU01QKQogI2RlZmluZSByYXdf c21wX3Byb2Nlc3Nvcl9pZCgpICh0aGlzX2NwdV9yZWFkKGNwdV9udW1iZXIpKQogCi0jZGVmaW5l IHN0YWNrX3NtcF9wcm9jZXNzb3JfaWQoKQkJCQkJXAotKHsJCQkJCQkJCVwKLQlzdHJ1Y3QgdGhy ZWFkX2luZm8gKnRpOwkJCQkJCVwKLQlfX2FzbV9fKCJhbmRxICUlcnNwLCUwOyAiOiI9ciIgKHRp KSA6ICIwIiAoQ1VSUkVOVF9NQVNLKSk7CVwKLQl0aS0+Y3B1OwkJCQkJCQlcCi19KQogI2RlZmlu ZSBzYWZlX3NtcF9wcm9jZXNzb3JfaWQoKQkJc21wX3Byb2Nlc3Nvcl9pZCgpCiAKICNlbmRpZgpk aWZmIC0tZ2l0IGEvYXJjaC94ODYvaW5jbHVkZS9hc20vc3dpdGNoX3RvLmggYi9hcmNoL3g4Ni9p bmNsdWRlL2FzbS9zd2l0Y2hfdG8uaAppbmRleCA4ZjMyMWExYjAzYTEuLmFlMGFhMDYxMmM2NyAx MDA2NDQKLS0tIGEvYXJjaC94ODYvaW5jbHVkZS9hc20vc3dpdGNoX3RvLmgKKysrIGIvYXJjaC94 ODYvaW5jbHVkZS9hc20vc3dpdGNoX3RvLmgKQEAgLTExMCwxOCArMTEwLDE2IEBAIGRvIHsJCQkJ CQkJCQlcCiAJICAgICAiY2FsbCBfX3N3aXRjaF90b1xuXHQiCQkJCQkgIFwKIAkgICAgICJtb3Zx ICJfX3BlcmNwdV9hcmcoW2N1cnJlbnRfdGFza10pIiwlJXJzaVxuXHQiCQkgIFwKIAkgICAgIF9f c3dpdGNoX2NhbmFyeQkJCQkJCSAgXAotCSAgICAgIm1vdnEgJVBbdGhyZWFkX2luZm9dKCUlcnNp KSwlJXI4XG5cdCIJCQkgIFwKIAkgICAgICJtb3ZxICUlcmF4LCUlcmRpXG5cdCIgCQkJCQkgIFwK LQkgICAgICJ0ZXN0bCAgJVtfdGlmX2ZvcmtdLCVQW3RpX2ZsYWdzXSglJXI4KVxuXHQiCQkgIFwK KwkgICAgICJ0ZXN0bCAgJVtfdGlmX2ZvcmtdLCVQW3RpX2ZsYWdzXSglJXJzaSlcblx0IgkJICBc CiAJICAgICAiam56ICAgcmV0X2Zyb21fZm9ya1xuXHQiCQkJCQkgIFwKIAkgICAgIFJFU1RPUkVf Q09OVEVYVAkJCQkJCSAgXAogCSAgICAgOiAiPWEiIChsYXN0KQkJCQkJICAJICBcCiAJICAgICAg IF9fc3dpdGNoX2NhbmFyeV9vcGFyYW0JCQkJCSAgXAogCSAgICAgOiBbbmV4dF0gIlMiIChuZXh0 KSwgW3ByZXZdICJEIiAocHJldiksCQkJICBcCiAJICAgICAgIFt0aHJlYWRyc3BdICJpIiAob2Zm c2V0b2Yoc3RydWN0IHRhc2tfc3RydWN0LCB0aHJlYWQuc3ApKSwgXAotCSAgICAgICBbdGlfZmxh Z3NdICJpIiAob2Zmc2V0b2Yoc3RydWN0IHRocmVhZF9pbmZvLCBmbGFncykpLAkgIFwKKwkgICAg ICAgW3RpX2ZsYWdzXSAiaSIgKG9mZnNldG9mKHN0cnVjdCB0YXNrX3N0cnVjdCwgdGhyZWFkX2lu Zm8uZmxhZ3MpKSwJICBcCiAJICAgICAgIFtfdGlmX2ZvcmtdICJpIiAoX1RJRl9GT1JLKSwJCQkg IAkgIFwKLQkgICAgICAgW3RocmVhZF9pbmZvXSAiaSIgKG9mZnNldG9mKHN0cnVjdCB0YXNrX3N0 cnVjdCwgc3RhY2spKSwgICBcCiAJICAgICAgIFtjdXJyZW50X3Rhc2tdICJtIiAoY3VycmVudF90 YXNrKQkJCSAgXAogCSAgICAgICBfX3N3aXRjaF9jYW5hcnlfaXBhcmFtCQkJCQkgIFwKIAkgICAg IDogIm1lbW9yeSIsICJjYyIgX19FWFRSQV9DTE9CQkVSKQpkaWZmIC0tZ2l0IGEvYXJjaC94ODYv aW5jbHVkZS9hc20vdGhyZWFkX2luZm8uaCBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL3RocmVhZF9p bmZvLmgKaW5kZXggMzBjMTMzYWMwNWNkLi5kMzhlYmIwOGY0YzEgMTAwNjQ0Ci0tLSBhL2FyY2gv eDg2L2luY2x1ZGUvYXNtL3RocmVhZF9pbmZvLmgKKysrIGIvYXJjaC94ODYvaW5jbHVkZS9hc20v dGhyZWFkX2luZm8uaApAQCAtNTMsMjQgKzUzLDIxIEBAIHN0cnVjdCB0YXNrX3N0cnVjdDsKICNp bmNsdWRlIDxsaW51eC9hdG9taWMuaD4KIAogc3RydWN0IHRocmVhZF9pbmZvIHsKLQlzdHJ1Y3Qg dGFza19zdHJ1Y3QJKnRhc2s7CQkvKiBtYWluIHRhc2sgc3RydWN0dXJlICovCiAJX191MzIJCQlm bGFnczsJCS8qIGxvdyBsZXZlbCBmbGFncyAqLwogCV9fdTMyCQkJc3RhdHVzOwkJLyogdGhyZWFk IHN5bmNocm9ub3VzIGZsYWdzICovCiAJX191MzIJCQljcHU7CQkvKiBjdXJyZW50IENQVSAqLwot CW1tX3NlZ21lbnRfdAkJYWRkcl9saW1pdDsKIAl1bnNpZ25lZCBpbnQJCXNpZ19vbl91YWNjZXNz X2Vycm9yOjE7CiAJdW5zaWduZWQgaW50CQl1YWNjZXNzX2VycjoxOwkvKiB1YWNjZXNzIGZhaWxl ZCAqLworCW1tX3NlZ21lbnRfdAkJYWRkcl9saW1pdDsKIH07CiAKICNkZWZpbmUgSU5JVF9USFJF QURfSU5GTyh0c2spCQkJXAogewkJCQkJCVwKLQkudGFzawkJPSAmdHNrLAkJCVwKIAkuZmxhZ3MJ CT0gMCwJCQlcCiAJLmNwdQkJPSAwLAkJCVwKIAkuYWRkcl9saW1pdAk9IEtFUk5FTF9EUywJCVwK IH0KIAotI2RlZmluZSBpbml0X3RocmVhZF9pbmZvCShpbml0X3RocmVhZF91bmlvbi50aHJlYWRf aW5mbykKICNkZWZpbmUgaW5pdF9zdGFjawkJKGluaXRfdGhyZWFkX3VuaW9uLnN0YWNrKQogCiAj ZWxzZSAvKiAhX19BU1NFTUJMWV9fICovCkBAIC0xNjYsNyArMTYzLDcgQEAgc3RydWN0IHRocmVh ZF9pbmZvIHsKIAogc3RhdGljIGlubGluZSBzdHJ1Y3QgdGhyZWFkX2luZm8gKmN1cnJlbnRfdGhy ZWFkX2luZm8odm9pZCkKIHsKLQlyZXR1cm4gKHN0cnVjdCB0aHJlYWRfaW5mbyAqKShjdXJyZW50 X3RvcF9vZl9zdGFjaygpIC0gVEhSRUFEX1NJWkUpOworCXJldHVybiAoc3RydWN0IHRocmVhZF9p bmZvICopY3VycmVudDsKIH0KIAogc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIGN1cnJlbnRf c3RhY2tfcG9pbnRlcih2b2lkKQpAQCAtMTg4LDM1ICsxODUsNyBAQCBzdGF0aWMgaW5saW5lIHVu c2lnbmVkIGxvbmcgY3VycmVudF9zdGFja19wb2ludGVyKHZvaWQpCiAKIC8qIExvYWQgdGhyZWFk X2luZm8gYWRkcmVzcyBpbnRvICJyZWciICovCiAjZGVmaW5lIEdFVF9USFJFQURfSU5GTyhyZWcp IFwKLQlfQVNNX01PViBQRVJfQ1BVX1ZBUihjcHVfY3VycmVudF90b3Bfb2Zfc3RhY2spLHJlZyA7 IFwKLQlfQVNNX1NVQiAkKFRIUkVBRF9TSVpFKSxyZWcgOwotCi0vKgotICogQVNNIG9wZXJhbmQg d2hpY2ggZXZhbHVhdGVzIHRvIGEgJ3RocmVhZF9pbmZvJyBhZGRyZXNzIG9mCi0gKiB0aGUgY3Vy cmVudCB0YXNrLCBpZiBpdCBpcyBrbm93biB0aGF0ICJyZWciIGlzIGV4YWN0bHkgIm9mZiIKLSAq IGJ5dGVzIGJlbG93IHRoZSB0b3Agb2YgdGhlIHN0YWNrIGN1cnJlbnRseS4KLSAqCi0gKiAoIFRo ZSBrZXJuZWwgc3RhY2sncyBzaXplIGlzIGtub3duIGF0IGJ1aWxkIHRpbWUsIGl0IGlzIHVzdWFs bHkKLSAqICAgMiBvciA0IHBhZ2VzLCBhbmQgdGhlIGJvdHRvbSAgb2YgdGhlIGtlcm5lbCBzdGFj ayBjb250YWlucwotICogICB0aGUgdGhyZWFkX2luZm8gc3RydWN0dXJlLiBTbyB0byBhY2Nlc3Mg dGhlIHRocmVhZF9pbmZvIHZlcnkKLSAqICAgcXVpY2tseSBmcm9tIGFzc2VtYmx5IGNvZGUgd2Ug Y2FuIGNhbGN1bGF0ZSBkb3duIGZyb20gdGhlCi0gKiAgIHRvcCBvZiB0aGUga2VybmVsIHN0YWNr IHRvIHRoZSBib3R0b20sIHVzaW5nIGNvbnN0YW50LAotICogICBidWlsZC10aW1lIGNhbGN1bGF0 aW9ucyBvbmx5LiApCi0gKgotICogRm9yIGV4YW1wbGUsIHRvIGZldGNoIHRoZSBjdXJyZW50IHRo cmVhZF9pbmZvLT5mbGFncyB2YWx1ZSBpbnRvICVlYXgKLSAqIG9uIHg4Ni02NCBkZWZjb25maWcg a2VybmVscywgaW4gc3lzY2FsbCBlbnRyeSBjb2RlIHdoZXJlIFJTUCBpcwotICogY3VycmVudGx5 IGF0IGV4YWN0bHkgU0laRU9GX1BUUkVHUyBieXRlcyBhd2F5IGZyb20gdGhlIHRvcCBvZiB0aGUK LSAqIHN0YWNrOgotICoKLSAqICAgICAgbW92IEFTTV9USFJFQURfSU5GTyhUSV9mbGFncywgJXJz cCwgU0laRU9GX1BUUkVHUyksICVlYXgKLSAqCi0gKiB3aWxsIHRyYW5zbGF0ZSB0bzoKLSAqCi0g KiAgICAgIDhiIDg0IDI0IGI4IGMwIGZmIGZmICAgICAgbW92ICAgIC0weDNmNDgoJXJzcCksICVl YXgKLSAqCi0gKiB3aGljaCBpcyBiZWxvdyB0aGUgY3VycmVudCBSU1AgYnkgYWxtb3N0IDE2Sy4K LSAqLwotI2RlZmluZSBBU01fVEhSRUFEX0lORk8oZmllbGQsIHJlZywgb2ZmKSAoKGZpZWxkKSso b2ZmKS1USFJFQURfU0laRSkocmVnKQorCV9BU01fTU9WIFBFUl9DUFVfVkFSKGN1cnJlbnRfdGFz aykscmVnCiAKICNlbmRpZgogCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rZXJuZWwvY3B1L2NvbW1v bi5jIGIvYXJjaC94ODYva2VybmVsL2NwdS9jb21tb24uYwppbmRleCAwZmU2OTUzZjQyMWMuLmQy MmE3YjljNGYwZSAxMDA2NDQKLS0tIGEvYXJjaC94ODYva2VybmVsL2NwdS9jb21tb24uYworKysg Yi9hcmNoL3g4Ni9rZXJuZWwvY3B1L2NvbW1vbi5jCkBAIC0xNDUyLDcgKzE0NTIsNyBAQCB2b2lk IGNwdV9pbml0KHZvaWQpCiAJc3RydWN0IHRhc2tfc3RydWN0ICptZTsKIAlzdHJ1Y3QgdHNzX3N0 cnVjdCAqdDsKIAl1bnNpZ25lZCBsb25nIHY7Ci0JaW50IGNwdSA9IHN0YWNrX3NtcF9wcm9jZXNz b3JfaWQoKTsKKwlpbnQgY3B1ID0gcmF3X3NtcF9wcm9jZXNzb3JfaWQoKTsKIAlpbnQgaTsKIAog CXdhaXRfZm9yX21hc3Rlcl9jcHUoY3B1KTsKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2tlcm5lbC9k dW1wc3RhY2suYyBiL2FyY2gveDg2L2tlcm5lbC9kdW1wc3RhY2suYwppbmRleCBkNjIwOWYzYTY5 Y2IuLmVmODAxN2NhNWJhOSAxMDA2NDQKLS0tIGEvYXJjaC94ODYva2VybmVsL2R1bXBzdGFjay5j CisrKyBiL2FyY2gveDg2L2tlcm5lbC9kdW1wc3RhY2suYwpAQCAtODAsNyArODAsNyBAQCBwcmlu dF9mdHJhY2VfZ3JhcGhfYWRkcih1bnNpZ25lZCBsb25nIGFkZHIsIHZvaWQgKmRhdGEsCiBzdGF0 aWMgaW5saW5lIGludCB2YWxpZF9zdGFja19wdHIoc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrLAog CQkJdm9pZCAqcCwgdW5zaWduZWQgaW50IHNpemUsIHZvaWQgKmVuZCkKIHsKLQl2b2lkICp0ID0g dGFza190aHJlYWRfaW5mbyh0YXNrKTsKKwl2b2lkICp0ID0gdGFza19zdGFja19wYWdlKHRhc2sp OwogCWlmIChlbmQpIHsKIAkJaWYgKHAgPCBlbmQgJiYgcCA+PSAoZW5kLVRIUkVBRF9TSVpFKSkK IAkJCXJldHVybiAxOwpkaWZmIC0tZ2l0IGEvYXJjaC94ODYva2VybmVsL2lycV8zMi5jIGIvYXJj aC94ODYva2VybmVsL2lycV8zMi5jCmluZGV4IDM4ZGE4ZjI5YTljOC4uYzYyN2JmOGQ5OGFkIDEw MDY0NAotLS0gYS9hcmNoL3g4Ni9rZXJuZWwvaXJxXzMyLmMKKysrIGIvYXJjaC94ODYva2VybmVs L2lycV8zMi5jCkBAIC0xMzAsMTEgKzEzMCw5IEBAIHZvaWQgaXJxX2N0eF9pbml0KGludCBjcHUp CiAKIHZvaWQgZG9fc29mdGlycV9vd25fc3RhY2sodm9pZCkKIHsKLQlzdHJ1Y3QgdGhyZWFkX2lu Zm8gKmN1cnN0azsKIAlzdHJ1Y3QgaXJxX3N0YWNrICppcnFzdGs7CiAJdTMyICppc3AsICpwcmV2 X2VzcDsKIAotCWN1cnN0ayA9IGN1cnJlbnRfc3RhY2soKTsKIAlpcnFzdGsgPSBfX3RoaXNfY3B1 X3JlYWQoc29mdGlycV9zdGFjayk7CiAKIAkvKiBidWlsZCB0aGUgc3RhY2sgZnJhbWUgb24gdGhl IHNvZnRpcnEgc3RhY2sgKi8KZGlmZiAtLWdpdCBhL2FyY2gveDg2L2tlcm5lbC9pcnFfNjQuYyBi L2FyY2gveDg2L2tlcm5lbC9pcnFfNjQuYwppbmRleCAyMDZkMGI5MGEzYWIuLjM4ZjlmNTY3OGRj OCAxMDA2NDQKLS0tIGEvYXJjaC94ODYva2VybmVsL2lycV82NC5jCisrKyBiL2FyY2gveDg2L2tl cm5lbC9pcnFfNjQuYwpAQCAtNDEsOCArNDEsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgc3RhY2tf b3ZlcmZsb3dfY2hlY2soc3RydWN0IHB0X3JlZ3MgKnJlZ3MpCiAJaWYgKHVzZXJfbW9kZShyZWdz KSkKIAkJcmV0dXJuOwogCi0JaWYgKHJlZ3MtPnNwID49IGN1cmJhc2UgKyBzaXplb2Yoc3RydWN0 IHRocmVhZF9pbmZvKSArCi0JCQkJICBzaXplb2Yoc3RydWN0IHB0X3JlZ3MpICsgU1RBQ0tfVE9Q X01BUkdJTiAmJgorCWlmIChyZWdzLT5zcCA+PSBjdXJiYXNlICsgc2l6ZW9mKHN0cnVjdCBwdF9y ZWdzKSArIFNUQUNLX1RPUF9NQVJHSU4gJiYKIAkgICAgcmVncy0+c3AgPD0gY3VyYmFzZSArIFRI UkVBRF9TSVpFKQogCQlyZXR1cm47CiAKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2tlcm5lbC9wcm9j ZXNzLmMgYi9hcmNoL3g4Ni9rZXJuZWwvcHJvY2Vzcy5jCmluZGV4IDk2YmVjYmJiNTJlMC4uOGY2 MGY4MTBhOWU3IDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9rZXJuZWwvcHJvY2Vzcy5jCisrKyBiL2Fy Y2gveDg2L2tlcm5lbC9wcm9jZXNzLmMKQEAgLTUzNiw5ICs1MzYsNyBAQCB1bnNpZ25lZCBsb25n IGdldF93Y2hhbihzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApCiAJICogUEFERElORwogCSAqIC0tLS0t LS0tLS0tIHRvcCA9IHRvcG1heCAtIFRPUF9PRl9LRVJORUxfU1RBQ0tfUEFERElORwogCSAqIHN0 YWNrCi0JICogLS0tLS0tLS0tLS0gYm90dG9tID0gc3RhcnQgKyBzaXplb2YodGhyZWFkX2luZm8p Ci0JICogdGhyZWFkX2luZm8KLQkgKiAtLS0tLS0tLS0tLSBzdGFydAorCSAqIC0tLS0tLS0tLS0t IGJvdHRvbSA9IHN0YXJ0CiAJICoKIAkgKiBUaGUgdGFza3Mgc3RhY2sgcG9pbnRlciBwb2ludHMg YXQgdGhlIGxvY2F0aW9uIHdoZXJlIHRoZQogCSAqIGZyYW1lcG9pbnRlciBpcyBzdG9yZWQuIFRo ZSBkYXRhIG9uIHRoZSBzdGFjayBpczoKQEAgLTU0OSw3ICs1NDcsNyBAQCB1bnNpZ25lZCBsb25n IGdldF93Y2hhbihzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApCiAJICovCiAJdG9wID0gc3RhcnQgKyBU SFJFQURfU0laRSAtIFRPUF9PRl9LRVJORUxfU1RBQ0tfUEFERElORzsKIAl0b3AgLT0gMiAqIHNp emVvZih1bnNpZ25lZCBsb25nKTsKLQlib3R0b20gPSBzdGFydCArIHNpemVvZihzdHJ1Y3QgdGhy ZWFkX2luZm8pOworCWJvdHRvbSA9IHN0YXJ0OwogCiAJc3AgPSBSRUFEX09OQ0UocC0+dGhyZWFk LnNwKTsKIAlpZiAoc3AgPCBib3R0b20gfHwgc3AgPiB0b3ApCmRpZmYgLS1naXQgYS9hcmNoL3g4 Ni91bS9wdHJhY2VfMzIuYyBiL2FyY2gveDg2L3VtL3B0cmFjZV8zMi5jCmluZGV4IGViZDRkZDZl ZjczYi4uMTRlOGY2YTYyOGMyIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni91bS9wdHJhY2VfMzIuYwor KysgYi9hcmNoL3g4Ni91bS9wdHJhY2VfMzIuYwpAQCAtMTkxLDcgKzE5MSw3IEBAIGludCBwZWVr X3VzZXIoc3RydWN0IHRhc2tfc3RydWN0ICpjaGlsZCwgbG9uZyBhZGRyLCBsb25nIGRhdGEpCiAK IHN0YXRpYyBpbnQgZ2V0X2ZwcmVncyhzdHJ1Y3QgdXNlcl9pMzg3X3N0cnVjdCBfX3VzZXIgKmJ1 Ziwgc3RydWN0IHRhc2tfc3RydWN0ICpjaGlsZCkKIHsKLQlpbnQgZXJyLCBuLCBjcHUgPSAoKHN0 cnVjdCB0aHJlYWRfaW5mbyAqKSBjaGlsZC0+c3RhY2spLT5jcHU7CisJaW50IGVyciwgbiwgY3B1 ID0gdGFza190aHJlYWRfaW5mbyhjaGlsZCktPmNwdTsKIAlzdHJ1Y3QgdXNlcl9pMzg3X3N0cnVj dCBmcHJlZ3M7CiAKIAllcnIgPSBzYXZlX2kzODdfcmVnaXN0ZXJzKHVzZXJzcGFjZV9waWRbY3B1 XSwKQEAgLTIwOCw3ICsyMDgsNyBAQCBzdGF0aWMgaW50IGdldF9mcHJlZ3Moc3RydWN0IHVzZXJf aTM4N19zdHJ1Y3QgX191c2VyICpidWYsIHN0cnVjdCB0YXNrX3N0cnVjdCAqYwogCiBzdGF0aWMg aW50IHNldF9mcHJlZ3Moc3RydWN0IHVzZXJfaTM4N19zdHJ1Y3QgX191c2VyICpidWYsIHN0cnVj dCB0YXNrX3N0cnVjdCAqY2hpbGQpCiB7Ci0JaW50IG4sIGNwdSA9ICgoc3RydWN0IHRocmVhZF9p bmZvICopIGNoaWxkLT5zdGFjayktPmNwdTsKKwlpbnQgbiwgY3B1ID0gdGFza190aHJlYWRfaW5m byhjaGlsZCktPmNwdTsKIAlzdHJ1Y3QgdXNlcl9pMzg3X3N0cnVjdCBmcHJlZ3M7CiAKIAluID0g Y29weV9mcm9tX3VzZXIoJmZwcmVncywgYnVmLCBzaXplb2YoZnByZWdzKSk7CkBAIC0yMjEsNyAr MjIxLDcgQEAgc3RhdGljIGludCBzZXRfZnByZWdzKHN0cnVjdCB1c2VyX2kzODdfc3RydWN0IF9f dXNlciAqYnVmLCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKmMKIAogc3RhdGljIGludCBnZXRfZnB4cmVn cyhzdHJ1Y3QgdXNlcl9meHNyX3N0cnVjdCBfX3VzZXIgKmJ1Ziwgc3RydWN0IHRhc2tfc3RydWN0 ICpjaGlsZCkKIHsKLQlpbnQgZXJyLCBuLCBjcHUgPSAoKHN0cnVjdCB0aHJlYWRfaW5mbyAqKSBj aGlsZC0+c3RhY2spLT5jcHU7CisJaW50IGVyciwgbiwgY3B1ID0gdGFza190aHJlYWRfaW5mbyhj aGlsZCktPmNwdTsKIAlzdHJ1Y3QgdXNlcl9meHNyX3N0cnVjdCBmcHJlZ3M7CiAKIAllcnIgPSBz YXZlX2ZweF9yZWdpc3RlcnModXNlcnNwYWNlX3BpZFtjcHVdLCAodW5zaWduZWQgbG9uZyAqKSAm ZnByZWdzKTsKQEAgLTIzNyw3ICsyMzcsNyBAQCBzdGF0aWMgaW50IGdldF9mcHhyZWdzKHN0cnVj dCB1c2VyX2Z4c3Jfc3RydWN0IF9fdXNlciAqYnVmLCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKgogCiBz dGF0aWMgaW50IHNldF9mcHhyZWdzKHN0cnVjdCB1c2VyX2Z4c3Jfc3RydWN0IF9fdXNlciAqYnVm LCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKmNoaWxkKQogewotCWludCBuLCBjcHUgPSAoKHN0cnVjdCB0 aHJlYWRfaW5mbyAqKSBjaGlsZC0+c3RhY2spLT5jcHU7CisJaW50IG4sIGNwdSA9IHRhc2tfdGhy ZWFkX2luZm8oY2hpbGQpLT5jcHU7CiAJc3RydWN0IHVzZXJfZnhzcl9zdHJ1Y3QgZnByZWdzOwog CiAJbiA9IGNvcHlfZnJvbV91c2VyKCZmcHJlZ3MsIGJ1Ziwgc2l6ZW9mKGZwcmVncykpOwpkaWZm IC0tZ2l0IGEvaW5jbHVkZS9saW51eC9pbml0X3Rhc2suaCBiL2luY2x1ZGUvbGludXgvaW5pdF90 YXNrLmgKaW5kZXggZjJjYjhkNDU1MTNkLi45YzA0ZDQ0ZWViM2MgMTAwNjQ0Ci0tLSBhL2luY2x1 ZGUvbGludXgvaW5pdF90YXNrLmgKKysrIGIvaW5jbHVkZS9saW51eC9pbml0X3Rhc2suaApAQCAt MTUsNiArMTUsOCBAQAogI2luY2x1ZGUgPG5ldC9uZXRfbmFtZXNwYWNlLmg+CiAjaW5jbHVkZSA8 bGludXgvc2NoZWQvcnQuaD4KIAorI2luY2x1ZGUgPGFzbS90aHJlYWRfaW5mby5oPgorCiAjaWZk ZWYgQ09ORklHX1NNUAogIyBkZWZpbmUgSU5JVF9QVVNIQUJMRV9UQVNLUyh0c2spCQkJCQlcCiAJ LnB1c2hhYmxlX3Rhc2tzID0gUExJU1RfTk9ERV9JTklUKHRzay5wdXNoYWJsZV90YXNrcywgTUFY X1BSSU8pLApAQCAtMTgzLDE0ICsxODUsMjEgQEAgZXh0ZXJuIHN0cnVjdCB0YXNrX2dyb3VwIHJv b3RfdGFza19ncm91cDsKICMgZGVmaW5lIElOSVRfS0FTQU4odHNrKQogI2VuZGlmCiAKKyNpZmRl ZiBDT05GSUdfVEhSRUFEX0lORk9fSU5fVEFTSworIyBkZWZpbmUgSU5JVF9UQVNLX1RJKHRzaykg LnRocmVhZF9pbmZvID0gSU5JVF9USFJFQURfSU5GTyh0c2spLAorI2Vsc2UKKyMgZGVmaW5lIElO SVRfVEFTS19USSh0c2spCisjZW5kaWYKKwogLyoKICAqICBJTklUX1RBU0sgaXMgdXNlZCB0byBz ZXQgdXAgdGhlIGZpcnN0IHRhc2sgdGFibGUsIHRvdWNoIGF0CiAgKiB5b3VyIG93biByaXNrIS4g QmFzZT0wLCBsaW1pdD0weDFmZmZmZiAoPTJNQikKICAqLwogI2RlZmluZSBJTklUX1RBU0sodHNr KQlcCiB7CQkJCQkJCQkJXAorCUlOSVRfVEFTS19USSh0c2spCQkJCQkJXAogCS5zdGF0ZQkJPSAw LAkJCQkJCVwKLQkuc3RhY2sJCT0gJmluaXRfdGhyZWFkX2luZm8sCQkJCVwKKwkuc3RhY2sJCT0g aW5pdF9zdGFjaywJCQkJCVwKIAkudXNhZ2UJCT0gQVRPTUlDX0lOSVQoMiksCQkJCVwKIAkuZmxh Z3MJCT0gUEZfS1RIUkVBRCwJCQkJCVwKIAkucHJpbwkJPSBNQVhfUFJJTy0yMCwJCQkJCVwKZGlm ZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvc2NoZWQuaCBiL2luY2x1ZGUvbGludXgvc2NoZWQuaApp bmRleCA2ZTQyYWRhMjYzNDUuLjc0M2YwMzA3YmY0YSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51 eC9zY2hlZC5oCisrKyBiL2luY2x1ZGUvbGludXgvc2NoZWQuaApAQCAtMTQ1Niw4ICsxNDU2LDEx IEBAIHN0cnVjdCB0bGJmbHVzaF91bm1hcF9iYXRjaCB7CiB9OwogCiBzdHJ1Y3QgdGFza19zdHJ1 Y3QgeworI2lmZGVmIENPTkZJR19USFJFQURfSU5GT19JTl9UQVNLCisJc3RydWN0IHRocmVhZF9p bmZvIHRocmVhZF9pbmZvOworI2VuZGlmCiAJdm9sYXRpbGUgbG9uZyBzdGF0ZTsJLyogLTEgdW5y dW5uYWJsZSwgMCBydW5uYWJsZSwgPjAgc3RvcHBlZCAqLwotCXZvaWQgKnN0YWNrOworCXVuc2ln bmVkIGxvbmcgKnN0YWNrOwogCWF0b21pY190IHVzYWdlOwogCXVuc2lnbmVkIGludCBmbGFnczsJ LyogcGVyIHByb2Nlc3MgZmxhZ3MsIGRlZmluZWQgYmVsb3cgKi8KIAl1bnNpZ25lZCBpbnQgcHRy YWNlOwpAQCAtMjUzOSw3ICsyNTQyLDkgQEAgZXh0ZXJuIHZvaWQgc2V0X2N1cnJfdGFzayhpbnQg Y3B1LCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApOwogdm9pZCB5aWVsZCh2b2lkKTsKIAogdW5pb24g dGhyZWFkX3VuaW9uIHsKKyNpZm5kZWYgQ09ORklHX1RIUkVBRF9JTkZPX0lOX1RBU0sKIAlzdHJ1 Y3QgdGhyZWFkX2luZm8gdGhyZWFkX2luZm87CisjZW5kaWYKIAl1bnNpZ25lZCBsb25nIHN0YWNr W1RIUkVBRF9TSVpFL3NpemVvZihsb25nKV07CiB9OwogCkBAIC0yOTY3LDEwICsyOTcyLDE3IEBA IHN0YXRpYyBpbmxpbmUgdm9pZCB0aHJlYWRncm91cF9jaGFuZ2VfZW5kKHN0cnVjdCB0YXNrX3N0 cnVjdCAqdHNrKQogCWNncm91cF90aHJlYWRncm91cF9jaGFuZ2VfZW5kKHRzayk7CiB9CiAKLSNp Zm5kZWYgX19IQVZFX1RIUkVBRF9GVU5DVElPTlMKKyNpZmRlZiBDT05GSUdfVEhSRUFEX0lORk9f SU5fVEFTSworCisjZGVmaW5lIHRhc2tfdGhyZWFkX2luZm8odGFzaykJCSgmKHRhc2spLT50aHJl YWRfaW5mbykKKyNkZWZpbmUgdGFza19zdGFja19wYWdlKHRhc2spCQkoKHZvaWQgKikodGFzaykt PnN0YWNrKQorI2RlZmluZSBzZXR1cF90aHJlYWRfc3RhY2sobmV3LG9sZCkJZG8geyB9IHdoaWxl KDApCisjZGVmaW5lIGVuZF9vZl9zdGFjayh0YXNrKQkJKCh0YXNrKS0+c3RhY2spCisKKyNlbGlm ICFkZWZpbmVkKF9fSEFWRV9USFJFQURfRlVOQ1RJT05TKQogCiAjZGVmaW5lIHRhc2tfdGhyZWFk X2luZm8odGFzaykJKChzdHJ1Y3QgdGhyZWFkX2luZm8gKikodGFzayktPnN0YWNrKQotI2RlZmlu ZSB0YXNrX3N0YWNrX3BhZ2UodGFzaykJKCh0YXNrKS0+c3RhY2spCisjZGVmaW5lIHRhc2tfc3Rh Y2tfcGFnZSh0YXNrKQkoKHZvaWQgKikodGFzayktPnN0YWNrKQogCiBzdGF0aWMgaW5saW5lIHZv aWQgc2V0dXBfdGhyZWFkX3N0YWNrKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCwgc3RydWN0IHRhc2tf c3RydWN0ICpvcmcpCiB7CmRpZmYgLS1naXQgYS9pbml0L0tjb25maWcgYi9pbml0L0tjb25maWcK aW5kZXggZjc1NWE2MDJkNGExLi4wYzgzYWY2ZDM3NTMgMTAwNjQ0Ci0tLSBhL2luaXQvS2NvbmZp ZworKysgYi9pbml0L0tjb25maWcKQEAgLTI2LDYgKzI2LDkgQEAgY29uZmlnIElSUV9XT1JLCiBj b25maWcgQlVJTERUSU1FX0VYVEFCTEVfU09SVAogCWJvb2wKIAorY29uZmlnIFRIUkVBRF9JTkZP X0lOX1RBU0sKKwlib29sCisKIG1lbnUgIkdlbmVyYWwgc2V0dXAiCiAKIGNvbmZpZyBCUk9LRU4K ZGlmZiAtLWdpdCBhL2luaXQvaW5pdF90YXNrLmMgYi9pbml0L2luaXRfdGFzay5jCmluZGV4IGJh MGE3ZjM2MmQ5ZS4uMTFmODNiZTFmYTc5IDEwMDY0NAotLS0gYS9pbml0L2luaXRfdGFzay5jCisr KyBiL2luaXQvaW5pdF90YXNrLmMKQEAgLTIyLDUgKzIyLDggQEAgRVhQT1JUX1NZTUJPTChpbml0 X3Rhc2spOwogICogSW5pdGlhbCB0aHJlYWQgc3RydWN0dXJlLiBBbGlnbm1lbnQgb2YgdGhpcyBp cyBoYW5kbGVkIGJ5IGEgc3BlY2lhbAogICogbGlua2VyIG1hcCBlbnRyeS4KICAqLwotdW5pb24g dGhyZWFkX3VuaW9uIGluaXRfdGhyZWFkX3VuaW9uIF9faW5pdF90YXNrX2RhdGEgPQotCXsgSU5J VF9USFJFQURfSU5GTyhpbml0X3Rhc2spIH07Cit1bmlvbiB0aHJlYWRfdW5pb24gaW5pdF90aHJl YWRfdW5pb24gX19pbml0X3Rhc2tfZGF0YSA9IHsKKyNpZm5kZWYgQ09ORklHX1RIUkVBRF9JTkZP X0lOX1RBU0sKKwlJTklUX1RIUkVBRF9JTkZPKGluaXRfdGFzaykKKyNlbmRpZgorfTsKZGlmZiAt LWdpdCBhL2tlcm5lbC9mb3JrLmMgYi9rZXJuZWwvZm9yay5jCmluZGV4IDVjMmMzNTVhYTk3Zi4u OWYyOTAyMjZkOWQ1IDEwMDY0NAotLS0gYS9rZXJuZWwvZm9yay5jCisrKyBiL2tlcm5lbC9mb3Jr LmMKQEAgLTE0OCw3ICsxNDgsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZnJlZV90YXNrX3N0cnVj dChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaykKIH0KICNlbmRpZgogCi12b2lkIF9fd2VhayBhcmNo X3JlbGVhc2VfdGhyZWFkX2luZm8oc3RydWN0IHRocmVhZF9pbmZvICp0aSkKK3ZvaWQgX193ZWFr IGFyY2hfcmVsZWFzZV90aHJlYWRfc3RhY2sodW5zaWduZWQgbG9uZyAqc3RhY2spCiB7CiB9CiAK QEAgLTE1OSw3ICsxNTksNyBAQCB2b2lkIF9fd2VhayBhcmNoX3JlbGVhc2VfdGhyZWFkX2luZm8o c3RydWN0IHRocmVhZF9pbmZvICp0aSkKICAqIGttZW1jYWNoZSBiYXNlZCBhbGxvY2F0b3IuCiAg Ki8KICMgaWYgVEhSRUFEX1NJWkUgPj0gUEFHRV9TSVpFCi1zdGF0aWMgc3RydWN0IHRocmVhZF9p bmZvICphbGxvY190aHJlYWRfaW5mb19ub2RlKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrLAorc3Rh dGljIHVuc2lnbmVkIGxvbmcgKmFsbG9jX3RocmVhZF9zdGFja19ub2RlKHN0cnVjdCB0YXNrX3N0 cnVjdCAqdHNrLAogCQkJCQkJICBpbnQgbm9kZSkKIHsKIAlzdHJ1Y3QgcGFnZSAqcGFnZSA9IGFs bG9jX2ttZW1fcGFnZXNfbm9kZShub2RlLCBUSFJFQURJTkZPX0dGUCwKQEAgLTE3MiwzMSArMTcy LDMxIEBAIHN0YXRpYyBzdHJ1Y3QgdGhyZWFkX2luZm8gKmFsbG9jX3RocmVhZF9pbmZvX25vZGUo c3RydWN0IHRhc2tfc3RydWN0ICp0c2ssCiAJcmV0dXJuIHBhZ2UgPyBwYWdlX2FkZHJlc3MocGFn ZSkgOiBOVUxMOwogfQogCi1zdGF0aWMgaW5saW5lIHZvaWQgZnJlZV90aHJlYWRfaW5mbyhzdHJ1 Y3QgdGhyZWFkX2luZm8gKnRpKQorc3RhdGljIGlubGluZSB2b2lkIGZyZWVfdGhyZWFkX3N0YWNr KHVuc2lnbmVkIGxvbmcgKnN0YWNrKQogewotCXN0cnVjdCBwYWdlICpwYWdlID0gdmlydF90b19w YWdlKHRpKTsKKwlzdHJ1Y3QgcGFnZSAqcGFnZSA9IHZpcnRfdG9fcGFnZShzdGFjayk7CiAKIAlt ZW1jZ19rbWVtX3VwZGF0ZV9wYWdlX3N0YXQocGFnZSwgTUVNQ0dfS0VSTkVMX1NUQUNLLAogCQkJ CSAgICAtKDEgPDwgVEhSRUFEX1NJWkVfT1JERVIpKTsKIAlfX2ZyZWVfa21lbV9wYWdlcyhwYWdl LCBUSFJFQURfU0laRV9PUkRFUik7CiB9CiAjIGVsc2UKLXN0YXRpYyBzdHJ1Y3Qga21lbV9jYWNo ZSAqdGhyZWFkX2luZm9fY2FjaGU7CitzdGF0aWMgc3RydWN0IGttZW1fY2FjaGUgKnRocmVhZF9z dGFja19jYWNoZTsKIAotc3RhdGljIHN0cnVjdCB0aHJlYWRfaW5mbyAqYWxsb2NfdGhyZWFkX2lu Zm9fbm9kZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaywKK3N0YXRpYyBzdHJ1Y3QgdGhyZWFkX2lu Zm8gKmFsbG9jX3RocmVhZF9zdGFja19ub2RlKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrLAogCQkJ CQkJICBpbnQgbm9kZSkKIHsKLQlyZXR1cm4ga21lbV9jYWNoZV9hbGxvY19ub2RlKHRocmVhZF9p bmZvX2NhY2hlLCBUSFJFQURJTkZPX0dGUCwgbm9kZSk7CisJcmV0dXJuIGttZW1fY2FjaGVfYWxs b2Nfbm9kZSh0aHJlYWRfc3RhY2tfY2FjaGUsIFRIUkVBRElORk9fR0ZQLCBub2RlKTsKIH0KIAot c3RhdGljIHZvaWQgZnJlZV90aHJlYWRfaW5mbyhzdHJ1Y3QgdGhyZWFkX2luZm8gKnRpKQorc3Rh dGljIHZvaWQgZnJlZV9zdGFjayh1bnNpZ25lZCBsb25nICpzdGFjaykKIHsKLQlrbWVtX2NhY2hl X2ZyZWUodGhyZWFkX2luZm9fY2FjaGUsIHRpKTsKKwlrbWVtX2NhY2hlX2ZyZWUodGhyZWFkX3N0 YWNrX2NhY2hlLCBzdGFjayk7CiB9CiAKIHZvaWQgdGhyZWFkX2luZm9fY2FjaGVfaW5pdCh2b2lk KQogewotCXRocmVhZF9pbmZvX2NhY2hlID0ga21lbV9jYWNoZV9jcmVhdGUoInRocmVhZF9pbmZv IiwgVEhSRUFEX1NJWkUsCisJdGhyZWFkX3N0YWNrX2NhY2hlID0ga21lbV9jYWNoZV9jcmVhdGUo InRocmVhZF9zdGFjayIsIFRIUkVBRF9TSVpFLAogCQkJCQkgICAgICBUSFJFQURfU0laRSwgMCwg TlVMTCk7CiAJQlVHX09OKHRocmVhZF9pbmZvX2NhY2hlID09IE5VTEwpOwogfQpAQCAtMjIxLDkg KzIyMSw5IEBAIHN0cnVjdCBrbWVtX2NhY2hlICp2bV9hcmVhX2NhY2hlcDsKIC8qIFNMQUIgY2Fj aGUgZm9yIG1tX3N0cnVjdCBzdHJ1Y3R1cmVzICh0c2stPm1tKSAqLwogc3RhdGljIHN0cnVjdCBr bWVtX2NhY2hlICptbV9jYWNoZXA7CiAKLXN0YXRpYyB2b2lkIGFjY291bnRfa2VybmVsX3N0YWNr KHN0cnVjdCB0aHJlYWRfaW5mbyAqdGksIGludCBhY2NvdW50KQorc3RhdGljIHZvaWQgYWNjb3Vu dF9rZXJuZWxfc3RhY2sodW5zaWduZWQgbG9uZyAqc3RhY2ssIGludCBhY2NvdW50KQogewotCXN0 cnVjdCB6b25lICp6b25lID0gcGFnZV96b25lKHZpcnRfdG9fcGFnZSh0aSkpOworCXN0cnVjdCB6 b25lICp6b25lID0gcGFnZV96b25lKHZpcnRfdG9fcGFnZShzdGFjaykpOwogCiAJbW9kX3pvbmVf cGFnZV9zdGF0ZSh6b25lLCBOUl9LRVJORUxfU1RBQ0ssIGFjY291bnQpOwogfQpAQCAtMjMxLDgg KzIzMSw4IEBAIHN0YXRpYyB2b2lkIGFjY291bnRfa2VybmVsX3N0YWNrKHN0cnVjdCB0aHJlYWRf aW5mbyAqdGksIGludCBhY2NvdW50KQogdm9pZCBmcmVlX3Rhc2soc3RydWN0IHRhc2tfc3RydWN0 ICp0c2spCiB7CiAJYWNjb3VudF9rZXJuZWxfc3RhY2sodHNrLT5zdGFjaywgLTEpOwotCWFyY2hf cmVsZWFzZV90aHJlYWRfaW5mbyh0c2stPnN0YWNrKTsKLQlmcmVlX3RocmVhZF9pbmZvKHRzay0+ c3RhY2spOworCWFyY2hfcmVsZWFzZV90aHJlYWRfc3RhY2sodHNrLT5zdGFjayk7CisJZnJlZV90 aHJlYWRfc3RhY2sodHNrLT5zdGFjayk7CiAJcnRfbXV0ZXhfZGVidWdfdGFza19mcmVlKHRzayk7 CiAJZnRyYWNlX2dyYXBoX2V4aXRfdGFzayh0c2spOwogCXB1dF9zZWNjb21wX2ZpbHRlcih0c2sp OwpAQCAtMzQzLDcgKzM0Myw3IEBAIHZvaWQgc2V0X3Rhc2tfc3RhY2tfZW5kX21hZ2ljKHN0cnVj dCB0YXNrX3N0cnVjdCAqdHNrKQogc3RhdGljIHN0cnVjdCB0YXNrX3N0cnVjdCAqZHVwX3Rhc2tf c3RydWN0KHN0cnVjdCB0YXNrX3N0cnVjdCAqb3JpZywgaW50IG5vZGUpCiB7CiAJc3RydWN0IHRh c2tfc3RydWN0ICp0c2s7Ci0Jc3RydWN0IHRocmVhZF9pbmZvICp0aTsKKwl1bnNpZ25lZCBsb25n ICpzdGFjazsKIAlpbnQgZXJyOwogCiAJaWYgKG5vZGUgPT0gTlVNQV9OT19OT0RFKQpAQCAtMzUy LDE1ICszNTIsMTUgQEAgc3RhdGljIHN0cnVjdCB0YXNrX3N0cnVjdCAqZHVwX3Rhc2tfc3RydWN0 KHN0cnVjdCB0YXNrX3N0cnVjdCAqb3JpZywgaW50IG5vZGUpCiAJaWYgKCF0c2spCiAJCXJldHVy biBOVUxMOwogCi0JdGkgPSBhbGxvY190aHJlYWRfaW5mb19ub2RlKHRzaywgbm9kZSk7Ci0JaWYg KCF0aSkKKwlzdGFjayA9IGFsbG9jX3RocmVhZF9zdGFja19ub2RlKHRzaywgbm9kZSk7CisJaWYg KCFzdGFjaykKIAkJZ290byBmcmVlX3RzazsKIAogCWVyciA9IGFyY2hfZHVwX3Rhc2tfc3RydWN0 KHRzaywgb3JpZyk7CiAJaWYgKGVycikKLQkJZ290byBmcmVlX3RpOworCQlnb3RvIGZyZWVfc3Rh Y2s7CiAKLQl0c2stPnN0YWNrID0gdGk7CisJdHNrLT5zdGFjayA9IHN0YWNrOwogI2lmZGVmIENP TkZJR19TRUNDT01QCiAJLyoKIAkgKiBXZSBtdXN0IGhhbmRsZSBzZXR0aW5nIHVwIHNlY2NvbXAg ZmlsdGVycyBvbmNlIHdlJ3JlIHVuZGVyCkBAIC0zOTIsMTQgKzM5MiwxNCBAQCBzdGF0aWMgc3Ry dWN0IHRhc2tfc3RydWN0ICpkdXBfdGFza19zdHJ1Y3Qoc3RydWN0IHRhc2tfc3RydWN0ICpvcmln LCBpbnQgbm9kZSkKIAl0c2stPnRhc2tfZnJhZy5wYWdlID0gTlVMTDsKIAl0c2stPndha2VfcS5u ZXh0ID0gTlVMTDsKIAotCWFjY291bnRfa2VybmVsX3N0YWNrKHRpLCAxKTsKKwlhY2NvdW50X2tl cm5lbF9zdGFjayhzdGFjaywgMSk7CiAKIAlrY292X3Rhc2tfaW5pdCh0c2spOwogCiAJcmV0dXJu IHRzazsKIAotZnJlZV90aToKLQlmcmVlX3RocmVhZF9pbmZvKHRpKTsKK2ZyZWVfc3RhY2s6CisJ ZnJlZV90aHJlYWRfc3RhY2soc3RhY2spOwogZnJlZV90c2s6CiAJZnJlZV90YXNrX3N0cnVjdCh0 c2spOwogCXJldHVybiBOVUxMOwo= --001a11371390c8596905360c8c32-- From mboxrd@z Thu Jan 1 00:00:00 1970 From: Linus Torvalds Subject: Re: [PATCH v3 00/13] Virtually mapped stacks with guard pages (x86, core) Date: Fri, 24 Jun 2016 14:06:51 -0700 Message-ID: References: <20160623185340.GO30154@twins.programming.kicks-ass.net> <20160624202530.unmidps4kpebo2na@treble> <20160624205116.4hbnurrnan4afq2t@treble> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary=001a11371390c8596905360c8c32 Return-path: In-Reply-To: <20160624205116.4hbnurrnan4afq2t@treble> Sender: linux-kernel-owner@vger.kernel.org To: Josh Poimboeuf Cc: Brian Gerst , Peter Zijlstra , Oleg Nesterov , Andy Lutomirski , Andy Lutomirski , the arch/x86 maintainers , Linux Kernel Mailing List , "linux-arch@vger.kernel.org" , Borislav Petkov , Nadav Amit , Kees Cook , "kernel-hardening@lists.openwall.com" , Jann Horn , Heiko Carstens List-Id: linux-arch.vger.kernel.org --001a11371390c8596905360c8c32 Content-Type: text/plain; charset=UTF-8 On Fri, Jun 24, 2016 at 1:51 PM, Josh Poimboeuf wrote: > > Found another bug: Yup. Those two were the ones that kept it from working for me. Thanks. Anyway, here's the final combined patch that works for me on x86-64. No more thread-info on the stack. Linus --001a11371390c8596905360c8c32 Content-Type: text/plain; charset=US-ASCII; name="patch.diff" Content-Disposition: attachment; filename="patch.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_ipu89vga0 CiAgICBUaGlzIGlzIGFuIGF0dGVtcHQgYXQgbW92aW5nIHRoZSB0aHJlYWRfaW5mbyBpbnRvIHRo ZSB0YXNrX3N0cnVjdAotLS0KIGFyY2gvbW4xMDMwMC9pbmNsdWRlL2FzbS90aHJlYWRfaW5mby5o IHwgIDIgKy0KIGFyY2gvbW4xMDMwMC9rZXJuZWwva2dkYi5jICAgICAgICAgICAgIHwgIDMgKyst CiBhcmNoL3RpbGUvaW5jbHVkZS9hc20vdGhyZWFkX2luZm8uaCAgICB8ICAyICstCiBhcmNoL3Rp bGUva2VybmVsL3Byb2Nlc3MuYyAgICAgICAgICAgICB8ICAzICsrLQogYXJjaC94ODYvS2NvbmZp ZyAgICAgICAgICAgICAgICAgICAgICAgfCAgMSArCiBhcmNoL3g4Ni9lbnRyeS9jb21tb24uYyAg ICAgICAgICAgICAgICB8IDIxICsrKysrKy0tLS0tLS0tLS0KIGFyY2gveDg2L2VudHJ5L2VudHJ5 XzY0LlMgICAgICAgICAgICAgIHwgIDkgKysrKy0tLQogYXJjaC94ODYvaW5jbHVkZS9hc20vY3B1 LmggICAgICAgICAgICAgfCAgMSAtCiBhcmNoL3g4Ni9pbmNsdWRlL2FzbS9rcHJvYmVzLmggICAg ICAgICB8IDEyICsrKysrLS0tLS0KIGFyY2gveDg2L2luY2x1ZGUvYXNtL3NtcC5oICAgICAgICAg ICAgIHwgIDYgLS0tLS0KIGFyY2gveDg2L2luY2x1ZGUvYXNtL3N3aXRjaF90by5oICAgICAgIHwg IDYgKystLS0KIGFyY2gveDg2L2luY2x1ZGUvYXNtL3RocmVhZF9pbmZvLmggICAgIHwgMzcgKysr LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogYXJjaC94ODYva2VybmVsL2NwdS9jb21tb24uYyAg ICAgICAgICAgfCAgMiArLQogYXJjaC94ODYva2VybmVsL2R1bXBzdGFjay5jICAgICAgICAgICAg fCAgMiArLQogYXJjaC94ODYva2VybmVsL2lycV8zMi5jICAgICAgICAgICAgICAgfCAgMiAtLQog YXJjaC94ODYva2VybmVsL2lycV82NC5jICAgICAgICAgICAgICAgfCAgMyArLS0KIGFyY2gveDg2 L2tlcm5lbC9wcm9jZXNzLmMgICAgICAgICAgICAgIHwgIDYgKystLS0KIGFyY2gveDg2L3VtL3B0 cmFjZV8zMi5jICAgICAgICAgICAgICAgIHwgIDggKysrLS0tLQogaW5jbHVkZS9saW51eC9pbml0 X3Rhc2suaCAgICAgICAgICAgICAgfCAxMSArKysrKysrKy0KIGluY2x1ZGUvbGludXgvc2NoZWQu aCAgICAgICAgICAgICAgICAgIHwgMTggKysrKysrKysrKystLS0KIGluaXQvS2NvbmZpZyAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgIDMgKysrCiBpbml0L2luaXRfdGFzay5jICAgICAgICAg ICAgICAgICAgICAgICB8ICA3ICsrKystLQoga2VybmVsL2ZvcmsuYyAgICAgICAgICAgICAgICAg ICAgICAgICAgfCA0NCArKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tCiAyMyBmaWxl cyBjaGFuZ2VkLCA5NSBpbnNlcnRpb25zKCspLCAxMTQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0 IGEvYXJjaC9tbjEwMzAwL2luY2x1ZGUvYXNtL3RocmVhZF9pbmZvLmggYi9hcmNoL21uMTAzMDAv aW5jbHVkZS9hc20vdGhyZWFkX2luZm8uaAppbmRleCA0ODYxYTc4YzcxNjAuLmY1ZjkwYmJmMDE5 ZCAxMDA2NDQKLS0tIGEvYXJjaC9tbjEwMzAwL2luY2x1ZGUvYXNtL3RocmVhZF9pbmZvLmgKKysr IGIvYXJjaC9tbjEwMzAwL2luY2x1ZGUvYXNtL3RocmVhZF9pbmZvLmgKQEAgLTExNSw3ICsxMTUs NyBAQCBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgY3VycmVudF9zdGFja19wb2ludGVyKHZv aWQpCiB9CiAKICNpZm5kZWYgQ09ORklHX0tHREIKLXZvaWQgYXJjaF9yZWxlYXNlX3RocmVhZF9p bmZvKHN0cnVjdCB0aHJlYWRfaW5mbyAqdGkpOwordm9pZCBhcmNoX3JlbGVhc2VfdGhyZWFkX3N0 YWNrKHVuc2lnbmVkIGxvbmcgKnN0YWNrKTsKICNlbmRpZgogI2RlZmluZSBnZXRfdGhyZWFkX2lu Zm8odGkpCWdldF90YXNrX3N0cnVjdCgodGkpLT50YXNrKQogI2RlZmluZSBwdXRfdGhyZWFkX2lu Zm8odGkpCXB1dF90YXNrX3N0cnVjdCgodGkpLT50YXNrKQpkaWZmIC0tZ2l0IGEvYXJjaC9tbjEw MzAwL2tlcm5lbC9rZ2RiLmMgYi9hcmNoL21uMTAzMDAva2VybmVsL2tnZGIuYwppbmRleCA5OTc3 MDgyMzQ1MWEuLjJkNzk4NmMzODZmZSAxMDA2NDQKLS0tIGEvYXJjaC9tbjEwMzAwL2tlcm5lbC9r Z2RiLmMKKysrIGIvYXJjaC9tbjEwMzAwL2tlcm5lbC9rZ2RiLmMKQEAgLTM5Nyw4ICszOTcsOSBA QCBzdGF0aWMgYm9vbCBrZ2RiX2FyY2hfdW5kb19zaW5nbGVzdGVwKHN0cnVjdCBwdF9yZWdzICpy ZWdzKQogICogc2luZ2xlLXN0ZXAgc3RhdGUgaXMgY2xlYXJlZC4gIEF0IHRoaXMgcG9pbnQgdGhl IGJyZWFrcG9pbnRzIHNob3VsZCBoYXZlCiAgKiBiZWVuIHJlbW92ZWQgYnkgX19zd2l0Y2hfdG8o KS4KICAqLwotdm9pZCBhcmNoX3JlbGVhc2VfdGhyZWFkX2luZm8oc3RydWN0IHRocmVhZF9pbmZv ICp0aSkKK3ZvaWQgYXJjaF9yZWxlYXNlX3RocmVhZF9zdGFjayh1bnNpZ25lZCBsb25nICpzdGFj aykKIHsKKwlzdHJ1Y3QgdGhyZWFkX2luZm8gKnRpID0gKHZvaWQgKilzdGFjazsKIAlpZiAoa2dk Yl9zc3RlcF90aHJlYWQgPT0gdGkpIHsKIAkJa2dkYl9zc3RlcF90aHJlYWQgPSBOVUxMOwogCmRp ZmYgLS1naXQgYS9hcmNoL3RpbGUvaW5jbHVkZS9hc20vdGhyZWFkX2luZm8uaCBiL2FyY2gvdGls ZS9pbmNsdWRlL2FzbS90aHJlYWRfaW5mby5oCmluZGV4IDRiN2NlZjllOTRlMC4uYzE0NjdhYzU5 Y2U2IDEwMDY0NAotLS0gYS9hcmNoL3RpbGUvaW5jbHVkZS9hc20vdGhyZWFkX2luZm8uaAorKysg Yi9hcmNoL3RpbGUvaW5jbHVkZS9hc20vdGhyZWFkX2luZm8uaApAQCAtNzgsNyArNzgsNyBAQCBz dHJ1Y3QgdGhyZWFkX2luZm8gewogCiAjaWZuZGVmIF9fQVNTRU1CTFlfXwogCi12b2lkIGFyY2hf cmVsZWFzZV90aHJlYWRfaW5mbyhzdHJ1Y3QgdGhyZWFkX2luZm8gKmluZm8pOwordm9pZCBhcmNo X3JlbGVhc2VfdGhyZWFkX3N0YWNrKHVuc2lnbmVkIGxvbmcgKnN0YWNrKTsKIAogLyogSG93IHRv IGdldCB0aGUgdGhyZWFkIGluZm9ybWF0aW9uIHN0cnVjdCBmcm9tIEMuICovCiByZWdpc3RlciB1 bnNpZ25lZCBsb25nIHN0YWNrX3BvaW50ZXIgX19hc21fXygic3AiKTsKZGlmZiAtLWdpdCBhL2Fy Y2gvdGlsZS9rZXJuZWwvcHJvY2Vzcy5jIGIvYXJjaC90aWxlL2tlcm5lbC9wcm9jZXNzLmMKaW5k ZXggNmI3MDVjY2M5Y2MxLi5hNDY1ZDgzNzJlZGQgMTAwNjQ0Ci0tLSBhL2FyY2gvdGlsZS9rZXJu ZWwvcHJvY2Vzcy5jCisrKyBiL2FyY2gvdGlsZS9rZXJuZWwvcHJvY2Vzcy5jCkBAIC03Myw4ICs3 Myw5IEBAIHZvaWQgYXJjaF9jcHVfaWRsZSh2b2lkKQogLyoKICAqIFJlbGVhc2UgYSB0aHJlYWRf aW5mbyBzdHJ1Y3R1cmUKICAqLwotdm9pZCBhcmNoX3JlbGVhc2VfdGhyZWFkX2luZm8oc3RydWN0 IHRocmVhZF9pbmZvICppbmZvKQordm9pZCBhcmNoX3JlbGVhc2VfdGhyZWFkX3N0YWNrKHVuc2ln bmVkIGxvbmcgKnN0YWNrKQogeworCXN0cnVjdCB0aHJlYWRfaW5mbyAqaW5mbyA9ICh2b2lkICop c3RhY2s7CiAJc3RydWN0IHNpbmdsZV9zdGVwX3N0YXRlICpzdGVwX3N0YXRlID0gaW5mby0+c3Rl cF9zdGF0ZTsKIAogCWlmIChzdGVwX3N0YXRlKSB7CmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9LY29u ZmlnIGIvYXJjaC94ODYvS2NvbmZpZwppbmRleCBkOWE5NGRhMGMyOWYuLmYzM2JjODA1NzdjNSAx MDA2NDQKLS0tIGEvYXJjaC94ODYvS2NvbmZpZworKysgYi9hcmNoL3g4Ni9LY29uZmlnCkBAIC0x NTQsNiArMTU0LDcgQEAgY29uZmlnIFg4NgogCXNlbGVjdCBTUEFSU0VfSVJRCiAJc2VsZWN0IFNS Q1UKIAlzZWxlY3QgU1lTQ1RMX0VYQ0VQVElPTl9UUkFDRQorCXNlbGVjdCBUSFJFQURfSU5GT19J Tl9UQVNLCiAJc2VsZWN0IFVTRVJfU1RBQ0tUUkFDRV9TVVBQT1JUCiAJc2VsZWN0IFZJUlRfVE9f QlVTCiAJc2VsZWN0IFg4Nl9ERVZfRE1BX09QUwkJCWlmIFg4Nl82NApkaWZmIC0tZ2l0IGEvYXJj aC94ODYvZW50cnkvY29tbW9uLmMgYi9hcmNoL3g4Ni9lbnRyeS9jb21tb24uYwppbmRleCBlYzEz OGU1MzhjNDQuLmQ1ZmVhYzVmMjUyZCAxMDA2NDQKLS0tIGEvYXJjaC94ODYvZW50cnkvY29tbW9u LmMKKysrIGIvYXJjaC94ODYvZW50cnkvY29tbW9uLmMKQEAgLTMxLDEzICszMSw2IEBACiAjZGVm aW5lIENSRUFURV9UUkFDRV9QT0lOVFMKICNpbmNsdWRlIDx0cmFjZS9ldmVudHMvc3lzY2FsbHMu aD4KIAotc3RhdGljIHN0cnVjdCB0aHJlYWRfaW5mbyAqcHRfcmVnc190b190aHJlYWRfaW5mbyhz dHJ1Y3QgcHRfcmVncyAqcmVncykKLXsKLQl1bnNpZ25lZCBsb25nIHRvcF9vZl9zdGFjayA9Ci0J CSh1bnNpZ25lZCBsb25nKShyZWdzICsgMSkgKyBUT1BfT0ZfS0VSTkVMX1NUQUNLX1BBRERJTkc7 Ci0JcmV0dXJuIChzdHJ1Y3QgdGhyZWFkX2luZm8gKikodG9wX29mX3N0YWNrIC0gVEhSRUFEX1NJ WkUpOwotfQotCiAjaWZkZWYgQ09ORklHX0NPTlRFWFRfVFJBQ0tJTkcKIC8qIENhbGxlZCBvbiBl bnRyeSBmcm9tIHVzZXIgbW9kZSB3aXRoIElSUXMgb2ZmLiAqLwogX192aXNpYmxlIHZvaWQgZW50 ZXJfZnJvbV91c2VyX21vZGUodm9pZCkKQEAgLTc4LDcgKzcxLDcgQEAgc3RhdGljIHZvaWQgZG9f YXVkaXRfc3lzY2FsbF9lbnRyeShzdHJ1Y3QgcHRfcmVncyAqcmVncywgdTMyIGFyY2gpCiAgKi8K IHVuc2lnbmVkIGxvbmcgc3lzY2FsbF90cmFjZV9lbnRlcl9waGFzZTEoc3RydWN0IHB0X3JlZ3Mg KnJlZ3MsIHUzMiBhcmNoKQogewotCXN0cnVjdCB0aHJlYWRfaW5mbyAqdGkgPSBwdF9yZWdzX3Rv X3RocmVhZF9pbmZvKHJlZ3MpOworCXN0cnVjdCB0aHJlYWRfaW5mbyAqdGkgPSBjdXJyZW50X3Ro cmVhZF9pbmZvKCk7CiAJdW5zaWduZWQgbG9uZyByZXQgPSAwOwogCXUzMiB3b3JrOwogCkBAIC0x NTYsNyArMTQ5LDcgQEAgdW5zaWduZWQgbG9uZyBzeXNjYWxsX3RyYWNlX2VudGVyX3BoYXNlMShz dHJ1Y3QgcHRfcmVncyAqcmVncywgdTMyIGFyY2gpCiBsb25nIHN5c2NhbGxfdHJhY2VfZW50ZXJf cGhhc2UyKHN0cnVjdCBwdF9yZWdzICpyZWdzLCB1MzIgYXJjaCwKIAkJCQl1bnNpZ25lZCBsb25n IHBoYXNlMV9yZXN1bHQpCiB7Ci0Jc3RydWN0IHRocmVhZF9pbmZvICp0aSA9IHB0X3JlZ3NfdG9f dGhyZWFkX2luZm8ocmVncyk7CisJc3RydWN0IHRocmVhZF9pbmZvICp0aSA9IGN1cnJlbnRfdGhy ZWFkX2luZm8oKTsKIAlsb25nIHJldCA9IDA7CiAJdTMyIHdvcmsgPSBBQ0NFU1NfT05DRSh0aS0+ ZmxhZ3MpICYgX1RJRl9XT1JLX1NZU0NBTExfRU5UUlk7CiAKQEAgLTIzOSw3ICsyMzIsNyBAQCBz dGF0aWMgdm9pZCBleGl0X3RvX3VzZXJtb2RlX2xvb3Aoc3RydWN0IHB0X3JlZ3MgKnJlZ3MsIHUz MiBjYWNoZWRfZmxhZ3MpCiAJCS8qIERpc2FibGUgSVJRcyBhbmQgcmV0cnkgKi8KIAkJbG9jYWxf aXJxX2Rpc2FibGUoKTsKIAotCQljYWNoZWRfZmxhZ3MgPSBSRUFEX09OQ0UocHRfcmVnc190b190 aHJlYWRfaW5mbyhyZWdzKS0+ZmxhZ3MpOworCQljYWNoZWRfZmxhZ3MgPSBSRUFEX09OQ0UoY3Vy cmVudF90aHJlYWRfaW5mbygpLT5mbGFncyk7CiAKIAkJaWYgKCEoY2FjaGVkX2ZsYWdzICYgRVhJ VF9UT19VU0VSTU9ERV9MT09QX0ZMQUdTKSkKIAkJCWJyZWFrOwpAQCAtMjUwLDcgKzI0Myw3IEBA IHN0YXRpYyB2b2lkIGV4aXRfdG9fdXNlcm1vZGVfbG9vcChzdHJ1Y3QgcHRfcmVncyAqcmVncywg dTMyIGNhY2hlZF9mbGFncykKIC8qIENhbGxlZCB3aXRoIElSUXMgZGlzYWJsZWQuICovCiBfX3Zp c2libGUgaW5saW5lIHZvaWQgcHJlcGFyZV9leGl0X3RvX3VzZXJtb2RlKHN0cnVjdCBwdF9yZWdz ICpyZWdzKQogewotCXN0cnVjdCB0aHJlYWRfaW5mbyAqdGkgPSBwdF9yZWdzX3RvX3RocmVhZF9p bmZvKHJlZ3MpOworCXN0cnVjdCB0aHJlYWRfaW5mbyAqdGkgPSBjdXJyZW50X3RocmVhZF9pbmZv KCk7CiAJdTMyIGNhY2hlZF9mbGFnczsKIAogCWlmIChJU19FTkFCTEVEKENPTkZJR19QUk9WRV9M T0NLSU5HKSAmJiBXQVJOX09OKCFpcnFzX2Rpc2FibGVkKCkpKQpAQCAtMzA5LDcgKzMwMiw3IEBA IHN0YXRpYyB2b2lkIHN5c2NhbGxfc2xvd19leGl0X3dvcmsoc3RydWN0IHB0X3JlZ3MgKnJlZ3Ms IHUzMiBjYWNoZWRfZmxhZ3MpCiAgKi8KIF9fdmlzaWJsZSBpbmxpbmUgdm9pZCBzeXNjYWxsX3Jl dHVybl9zbG93cGF0aChzdHJ1Y3QgcHRfcmVncyAqcmVncykKIHsKLQlzdHJ1Y3QgdGhyZWFkX2lu Zm8gKnRpID0gcHRfcmVnc190b190aHJlYWRfaW5mbyhyZWdzKTsKKwlzdHJ1Y3QgdGhyZWFkX2lu Zm8gKnRpID0gY3VycmVudF90aHJlYWRfaW5mbygpOwogCXUzMiBjYWNoZWRfZmxhZ3MgPSBSRUFE X09OQ0UodGktPmZsYWdzKTsKIAogCUNUX1dBUk5fT04oY3Rfc3RhdGUoKSAhPSBDT05URVhUX0tF Uk5FTCk7CkBAIC0zMzIsNyArMzI1LDcgQEAgX192aXNpYmxlIGlubGluZSB2b2lkIHN5c2NhbGxf cmV0dXJuX3Nsb3dwYXRoKHN0cnVjdCBwdF9yZWdzICpyZWdzKQogI2lmZGVmIENPTkZJR19YODZf NjQKIF9fdmlzaWJsZSB2b2lkIGRvX3N5c2NhbGxfNjQoc3RydWN0IHB0X3JlZ3MgKnJlZ3MpCiB7 Ci0Jc3RydWN0IHRocmVhZF9pbmZvICp0aSA9IHB0X3JlZ3NfdG9fdGhyZWFkX2luZm8ocmVncyk7 CisJc3RydWN0IHRocmVhZF9pbmZvICp0aSA9IGN1cnJlbnRfdGhyZWFkX2luZm8oKTsKIAl1bnNp Z25lZCBsb25nIG5yID0gcmVncy0+b3JpZ19heDsKIAogCWVudGVyX2Zyb21fdXNlcl9tb2RlKCk7 CkBAIC0zNjUsNyArMzU4LDcgQEAgX192aXNpYmxlIHZvaWQgZG9fc3lzY2FsbF82NChzdHJ1Y3Qg cHRfcmVncyAqcmVncykKICAqLwogc3RhdGljIF9fYWx3YXlzX2lubGluZSB2b2lkIGRvX3N5c2Nh bGxfMzJfaXJxc19vbihzdHJ1Y3QgcHRfcmVncyAqcmVncykKIHsKLQlzdHJ1Y3QgdGhyZWFkX2lu Zm8gKnRpID0gcHRfcmVnc190b190aHJlYWRfaW5mbyhyZWdzKTsKKwlzdHJ1Y3QgdGhyZWFkX2lu Zm8gKnRpID0gY3VycmVudF90aHJlYWRfaW5mbygpOwogCXVuc2lnbmVkIGludCBuciA9ICh1bnNp Z25lZCBpbnQpcmVncy0+b3JpZ19heDsKIAogI2lmZGVmIENPTkZJR19JQTMyX0VNVUxBVElPTgpk aWZmIC0tZ2l0IGEvYXJjaC94ODYvZW50cnkvZW50cnlfNjQuUyBiL2FyY2gveDg2L2VudHJ5L2Vu dHJ5XzY0LlMKaW5kZXggOWVlMGRhMTgwN2VkLi5mNDk3NDJkZTJjNjUgMTAwNjQ0Ci0tLSBhL2Fy Y2gveDg2L2VudHJ5L2VudHJ5XzY0LlMKKysrIGIvYXJjaC94ODYvZW50cnkvZW50cnlfNjQuUwpA QCAtMTc5LDcgKzE3OSw4IEBAIEdMT0JBTChlbnRyeV9TWVNDQUxMXzY0X2FmdGVyX3N3YXBncykK IAkgKiBJZiB3ZSBuZWVkIHRvIGRvIGVudHJ5IHdvcmsgb3IgaWYgd2UgZ3Vlc3Mgd2UnbGwgbmVl ZCB0byBkbwogCSAqIGV4aXQgd29yaywgZ28gc3RyYWlnaHQgdG8gdGhlIHNsb3cgcGF0aC4KIAkg Ki8KLQl0ZXN0bAkkX1RJRl9XT1JLX1NZU0NBTExfRU5UUll8X1RJRl9BTExXT1JLX01BU0ssIEFT TV9USFJFQURfSU5GTyhUSV9mbGFncywgJXJzcCwgU0laRU9GX1BUUkVHUykKKwlHRVRfVEhSRUFE X0lORk8oJXIxMSkKKwl0ZXN0bAkkX1RJRl9XT1JLX1NZU0NBTExfRU5UUll8X1RJRl9BTExXT1JL X01BU0ssIFRJX2ZsYWdzKCVyMTEpCiAJam56CWVudHJ5X1NZU0NBTEw2NF9zbG93X3BhdGgKIAog ZW50cnlfU1lTQ0FMTF82NF9mYXN0cGF0aDoKQEAgLTIxNyw3ICsyMTgsOCBAQCBlbnRyeV9TWVND QUxMXzY0X2Zhc3RwYXRoOgogCSAqLwogCURJU0FCTEVfSU5URVJSVVBUUyhDTEJSX05PTkUpCiAJ VFJBQ0VfSVJRU19PRkYKLQl0ZXN0bAkkX1RJRl9BTExXT1JLX01BU0ssIEFTTV9USFJFQURfSU5G TyhUSV9mbGFncywgJXJzcCwgU0laRU9GX1BUUkVHUykKKwlHRVRfVEhSRUFEX0lORk8oJXIxMSkK Kwl0ZXN0bAkkX1RJRl9BTExXT1JLX01BU0ssIFRJX2ZsYWdzKCVyMTEpCiAJam56CTFmCiAKIAlM T0NLREVQX1NZU19FWElUCkBAIC0zNjgsOSArMzcwLDEwIEBAIEVORChwdHJlZ3NfXGZ1bmMpCiAg KiBBIG5ld2x5IGZvcmtlZCBwcm9jZXNzIGRpcmVjdGx5IGNvbnRleHQgc3dpdGNoZXMgaW50byB0 aGlzIGFkZHJlc3MuCiAgKgogICogcmRpOiBwcmV2IHRhc2sgd2Ugc3dpdGNoZWQgZnJvbQorICog cnNpOiB0YXNrIHdlJ3JlIHN3aXRjaGluZyB0bwogICovCiBFTlRSWShyZXRfZnJvbV9mb3JrKQot CUxPQ0sgOyBidHIgJFRJRl9GT1JLLCBUSV9mbGFncyglcjgpCisJTE9DSyA7IGJ0ciAkVElGX0ZP UkssIFRJX2ZsYWdzKCVyc2kpCS8qIHJzaTogdGhpcyBuZXdseSBmb3JrZWQgdGFzayAqLwogCiAJ Y2FsbAlzY2hlZHVsZV90YWlsCQkJLyogcmRpOiAncHJldicgdGFzayBwYXJhbWV0ZXIgKi8KIApk aWZmIC0tZ2l0IGEvYXJjaC94ODYvaW5jbHVkZS9hc20vY3B1LmggYi9hcmNoL3g4Ni9pbmNsdWRl L2FzbS9jcHUuaAppbmRleCA2Nzg2MzdhZDc0NzYuLjU5ZDM0YzUyMWQ5NiAxMDA2NDQKLS0tIGEv YXJjaC94ODYvaW5jbHVkZS9hc20vY3B1LmgKKysrIGIvYXJjaC94ODYvaW5jbHVkZS9hc20vY3B1 LmgKQEAgLTE3LDcgKzE3LDYgQEAgc3RhdGljIGlubGluZSB2b2lkIHByZWZpbGxfcG9zc2libGVf bWFwKHZvaWQpIHt9CiAKICNkZWZpbmUgY3B1X3BoeXNpY2FsX2lkKGNwdSkJCQlib290X2NwdV9w aHlzaWNhbF9hcGljaWQKICNkZWZpbmUgc2FmZV9zbXBfcHJvY2Vzc29yX2lkKCkJCQkwCi0jZGVm aW5lIHN0YWNrX3NtcF9wcm9jZXNzb3JfaWQoKQkJMAogCiAjZW5kaWYgLyogQ09ORklHX1NNUCAq LwogCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rcHJvYmVzLmggYi9hcmNoL3g4 Ni9pbmNsdWRlL2FzbS9rcHJvYmVzLmgKaW5kZXggNDQyMWI1ZGE0MDlkLi4xZDI5OTdlNzRiMDgg MTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL2twcm9iZXMuaAorKysgYi9hcmNoL3g4 Ni9pbmNsdWRlL2FzbS9rcHJvYmVzLmgKQEAgLTM4LDEyICszOCwxMiBAQCB0eXBlZGVmIHU4IGtw cm9iZV9vcGNvZGVfdDsKICNkZWZpbmUgUkVMQVRJVkVDQUxMX09QQ09ERSAweGU4CiAjZGVmaW5l IFJFTEFUSVZFX0FERFJfU0laRSA0CiAjZGVmaW5lIE1BWF9TVEFDS19TSVpFIDY0Ci0jZGVmaW5l IE1JTl9TVEFDS19TSVpFKEFERFIpCQkJCQkgICAgICAgXAotCSgoKE1BWF9TVEFDS19TSVpFKSA8 ICgoKHVuc2lnbmVkIGxvbmcpY3VycmVudF90aHJlYWRfaW5mbygpKSArIFwKLQkJCSAgICAgIFRI UkVBRF9TSVpFIC0gKHVuc2lnbmVkIGxvbmcpKEFERFIpKSkgICAgXAotCSA/IChNQVhfU1RBQ0tf U0laRSkJCQkJCSAgICAgICBcCi0JIDogKCgodW5zaWduZWQgbG9uZyljdXJyZW50X3RocmVhZF9p bmZvKCkpICsJCSAgICAgICBcCi0JICAgIFRIUkVBRF9TSVpFIC0gKHVuc2lnbmVkIGxvbmcpKEFE RFIpKSkKKworI2RlZmluZSBjdXJyZW50X3N0YWNrX3RvcCgpICgodW5zaWduZWQgbG9uZyl0YXNr X3N0YWNrX3BhZ2UoY3VycmVudCkrVEhSRUFEX1NJWkUpCisjZGVmaW5lIGN1cnJlbnRfc3RhY2tf c2l6ZShBRERSKSAoY3VycmVudF9zdGFja190b3AoKSAtICh1bnNpZ25lZCBsb25nKShBRERSKSkK KworI2RlZmluZSBNSU5fU1RBQ0tfU0laRShBRERSKSBcCisJKE1BWF9TVEFDS19TSVpFIDwgY3Vy cmVudF9zdGFja19zaXplKEFERFIpID8gTUFYX1NUQUNLX1NJWkUgOiBjdXJyZW50X3N0YWNrX3Np emUoQUREUikpCiAKICNkZWZpbmUgZmx1c2hfaW5zbl9zbG90KHApCWRvIHsgfSB3aGlsZSAoMCkK IApkaWZmIC0tZ2l0IGEvYXJjaC94ODYvaW5jbHVkZS9hc20vc21wLmggYi9hcmNoL3g4Ni9pbmNs dWRlL2FzbS9zbXAuaAppbmRleCA2NmIwNTczMDZmNDAuLjA1NzZiNjE1N2YzYSAxMDA2NDQKLS0t IGEvYXJjaC94ODYvaW5jbHVkZS9hc20vc21wLmgKKysrIGIvYXJjaC94ODYvaW5jbHVkZS9hc20v c21wLmgKQEAgLTE3MiwxMiArMTcyLDYgQEAgZXh0ZXJuIGludCBzYWZlX3NtcF9wcm9jZXNzb3Jf aWQodm9pZCk7CiAjZWxpZiBkZWZpbmVkKENPTkZJR19YODZfNjRfU01QKQogI2RlZmluZSByYXdf c21wX3Byb2Nlc3Nvcl9pZCgpICh0aGlzX2NwdV9yZWFkKGNwdV9udW1iZXIpKQogCi0jZGVmaW5l IHN0YWNrX3NtcF9wcm9jZXNzb3JfaWQoKQkJCQkJXAotKHsJCQkJCQkJCVwKLQlzdHJ1Y3QgdGhy ZWFkX2luZm8gKnRpOwkJCQkJCVwKLQlfX2FzbV9fKCJhbmRxICUlcnNwLCUwOyAiOiI9ciIgKHRp KSA6ICIwIiAoQ1VSUkVOVF9NQVNLKSk7CVwKLQl0aS0+Y3B1OwkJCQkJCQlcCi19KQogI2RlZmlu ZSBzYWZlX3NtcF9wcm9jZXNzb3JfaWQoKQkJc21wX3Byb2Nlc3Nvcl9pZCgpCiAKICNlbmRpZgpk aWZmIC0tZ2l0IGEvYXJjaC94ODYvaW5jbHVkZS9hc20vc3dpdGNoX3RvLmggYi9hcmNoL3g4Ni9p bmNsdWRlL2FzbS9zd2l0Y2hfdG8uaAppbmRleCA4ZjMyMWExYjAzYTEuLmFlMGFhMDYxMmM2NyAx MDA2NDQKLS0tIGEvYXJjaC94ODYvaW5jbHVkZS9hc20vc3dpdGNoX3RvLmgKKysrIGIvYXJjaC94 ODYvaW5jbHVkZS9hc20vc3dpdGNoX3RvLmgKQEAgLTExMCwxOCArMTEwLDE2IEBAIGRvIHsJCQkJ CQkJCQlcCiAJICAgICAiY2FsbCBfX3N3aXRjaF90b1xuXHQiCQkJCQkgIFwKIAkgICAgICJtb3Zx ICJfX3BlcmNwdV9hcmcoW2N1cnJlbnRfdGFza10pIiwlJXJzaVxuXHQiCQkgIFwKIAkgICAgIF9f c3dpdGNoX2NhbmFyeQkJCQkJCSAgXAotCSAgICAgIm1vdnEgJVBbdGhyZWFkX2luZm9dKCUlcnNp KSwlJXI4XG5cdCIJCQkgIFwKIAkgICAgICJtb3ZxICUlcmF4LCUlcmRpXG5cdCIgCQkJCQkgIFwK LQkgICAgICJ0ZXN0bCAgJVtfdGlmX2ZvcmtdLCVQW3RpX2ZsYWdzXSglJXI4KVxuXHQiCQkgIFwK KwkgICAgICJ0ZXN0bCAgJVtfdGlmX2ZvcmtdLCVQW3RpX2ZsYWdzXSglJXJzaSlcblx0IgkJICBc CiAJICAgICAiam56ICAgcmV0X2Zyb21fZm9ya1xuXHQiCQkJCQkgIFwKIAkgICAgIFJFU1RPUkVf Q09OVEVYVAkJCQkJCSAgXAogCSAgICAgOiAiPWEiIChsYXN0KQkJCQkJICAJICBcCiAJICAgICAg IF9fc3dpdGNoX2NhbmFyeV9vcGFyYW0JCQkJCSAgXAogCSAgICAgOiBbbmV4dF0gIlMiIChuZXh0 KSwgW3ByZXZdICJEIiAocHJldiksCQkJICBcCiAJICAgICAgIFt0aHJlYWRyc3BdICJpIiAob2Zm c2V0b2Yoc3RydWN0IHRhc2tfc3RydWN0LCB0aHJlYWQuc3ApKSwgXAotCSAgICAgICBbdGlfZmxh Z3NdICJpIiAob2Zmc2V0b2Yoc3RydWN0IHRocmVhZF9pbmZvLCBmbGFncykpLAkgIFwKKwkgICAg ICAgW3RpX2ZsYWdzXSAiaSIgKG9mZnNldG9mKHN0cnVjdCB0YXNrX3N0cnVjdCwgdGhyZWFkX2lu Zm8uZmxhZ3MpKSwJICBcCiAJICAgICAgIFtfdGlmX2ZvcmtdICJpIiAoX1RJRl9GT1JLKSwJCQkg IAkgIFwKLQkgICAgICAgW3RocmVhZF9pbmZvXSAiaSIgKG9mZnNldG9mKHN0cnVjdCB0YXNrX3N0 cnVjdCwgc3RhY2spKSwgICBcCiAJICAgICAgIFtjdXJyZW50X3Rhc2tdICJtIiAoY3VycmVudF90 YXNrKQkJCSAgXAogCSAgICAgICBfX3N3aXRjaF9jYW5hcnlfaXBhcmFtCQkJCQkgIFwKIAkgICAg IDogIm1lbW9yeSIsICJjYyIgX19FWFRSQV9DTE9CQkVSKQpkaWZmIC0tZ2l0IGEvYXJjaC94ODYv aW5jbHVkZS9hc20vdGhyZWFkX2luZm8uaCBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL3RocmVhZF9p bmZvLmgKaW5kZXggMzBjMTMzYWMwNWNkLi5kMzhlYmIwOGY0YzEgMTAwNjQ0Ci0tLSBhL2FyY2gv eDg2L2luY2x1ZGUvYXNtL3RocmVhZF9pbmZvLmgKKysrIGIvYXJjaC94ODYvaW5jbHVkZS9hc20v dGhyZWFkX2luZm8uaApAQCAtNTMsMjQgKzUzLDIxIEBAIHN0cnVjdCB0YXNrX3N0cnVjdDsKICNp bmNsdWRlIDxsaW51eC9hdG9taWMuaD4KIAogc3RydWN0IHRocmVhZF9pbmZvIHsKLQlzdHJ1Y3Qg dGFza19zdHJ1Y3QJKnRhc2s7CQkvKiBtYWluIHRhc2sgc3RydWN0dXJlICovCiAJX191MzIJCQlm bGFnczsJCS8qIGxvdyBsZXZlbCBmbGFncyAqLwogCV9fdTMyCQkJc3RhdHVzOwkJLyogdGhyZWFk IHN5bmNocm9ub3VzIGZsYWdzICovCiAJX191MzIJCQljcHU7CQkvKiBjdXJyZW50IENQVSAqLwot CW1tX3NlZ21lbnRfdAkJYWRkcl9saW1pdDsKIAl1bnNpZ25lZCBpbnQJCXNpZ19vbl91YWNjZXNz X2Vycm9yOjE7CiAJdW5zaWduZWQgaW50CQl1YWNjZXNzX2VycjoxOwkvKiB1YWNjZXNzIGZhaWxl ZCAqLworCW1tX3NlZ21lbnRfdAkJYWRkcl9saW1pdDsKIH07CiAKICNkZWZpbmUgSU5JVF9USFJF QURfSU5GTyh0c2spCQkJXAogewkJCQkJCVwKLQkudGFzawkJPSAmdHNrLAkJCVwKIAkuZmxhZ3MJ CT0gMCwJCQlcCiAJLmNwdQkJPSAwLAkJCVwKIAkuYWRkcl9saW1pdAk9IEtFUk5FTF9EUywJCVwK IH0KIAotI2RlZmluZSBpbml0X3RocmVhZF9pbmZvCShpbml0X3RocmVhZF91bmlvbi50aHJlYWRf aW5mbykKICNkZWZpbmUgaW5pdF9zdGFjawkJKGluaXRfdGhyZWFkX3VuaW9uLnN0YWNrKQogCiAj ZWxzZSAvKiAhX19BU1NFTUJMWV9fICovCkBAIC0xNjYsNyArMTYzLDcgQEAgc3RydWN0IHRocmVh ZF9pbmZvIHsKIAogc3RhdGljIGlubGluZSBzdHJ1Y3QgdGhyZWFkX2luZm8gKmN1cnJlbnRfdGhy ZWFkX2luZm8odm9pZCkKIHsKLQlyZXR1cm4gKHN0cnVjdCB0aHJlYWRfaW5mbyAqKShjdXJyZW50 X3RvcF9vZl9zdGFjaygpIC0gVEhSRUFEX1NJWkUpOworCXJldHVybiAoc3RydWN0IHRocmVhZF9p bmZvICopY3VycmVudDsKIH0KIAogc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIGN1cnJlbnRf c3RhY2tfcG9pbnRlcih2b2lkKQpAQCAtMTg4LDM1ICsxODUsNyBAQCBzdGF0aWMgaW5saW5lIHVu c2lnbmVkIGxvbmcgY3VycmVudF9zdGFja19wb2ludGVyKHZvaWQpCiAKIC8qIExvYWQgdGhyZWFk X2luZm8gYWRkcmVzcyBpbnRvICJyZWciICovCiAjZGVmaW5lIEdFVF9USFJFQURfSU5GTyhyZWcp IFwKLQlfQVNNX01PViBQRVJfQ1BVX1ZBUihjcHVfY3VycmVudF90b3Bfb2Zfc3RhY2spLHJlZyA7 IFwKLQlfQVNNX1NVQiAkKFRIUkVBRF9TSVpFKSxyZWcgOwotCi0vKgotICogQVNNIG9wZXJhbmQg d2hpY2ggZXZhbHVhdGVzIHRvIGEgJ3RocmVhZF9pbmZvJyBhZGRyZXNzIG9mCi0gKiB0aGUgY3Vy cmVudCB0YXNrLCBpZiBpdCBpcyBrbm93biB0aGF0ICJyZWciIGlzIGV4YWN0bHkgIm9mZiIKLSAq IGJ5dGVzIGJlbG93IHRoZSB0b3Agb2YgdGhlIHN0YWNrIGN1cnJlbnRseS4KLSAqCi0gKiAoIFRo ZSBrZXJuZWwgc3RhY2sncyBzaXplIGlzIGtub3duIGF0IGJ1aWxkIHRpbWUsIGl0IGlzIHVzdWFs bHkKLSAqICAgMiBvciA0IHBhZ2VzLCBhbmQgdGhlIGJvdHRvbSAgb2YgdGhlIGtlcm5lbCBzdGFj ayBjb250YWlucwotICogICB0aGUgdGhyZWFkX2luZm8gc3RydWN0dXJlLiBTbyB0byBhY2Nlc3Mg dGhlIHRocmVhZF9pbmZvIHZlcnkKLSAqICAgcXVpY2tseSBmcm9tIGFzc2VtYmx5IGNvZGUgd2Ug Y2FuIGNhbGN1bGF0ZSBkb3duIGZyb20gdGhlCi0gKiAgIHRvcCBvZiB0aGUga2VybmVsIHN0YWNr IHRvIHRoZSBib3R0b20sIHVzaW5nIGNvbnN0YW50LAotICogICBidWlsZC10aW1lIGNhbGN1bGF0 aW9ucyBvbmx5LiApCi0gKgotICogRm9yIGV4YW1wbGUsIHRvIGZldGNoIHRoZSBjdXJyZW50IHRo cmVhZF9pbmZvLT5mbGFncyB2YWx1ZSBpbnRvICVlYXgKLSAqIG9uIHg4Ni02NCBkZWZjb25maWcg a2VybmVscywgaW4gc3lzY2FsbCBlbnRyeSBjb2RlIHdoZXJlIFJTUCBpcwotICogY3VycmVudGx5 IGF0IGV4YWN0bHkgU0laRU9GX1BUUkVHUyBieXRlcyBhd2F5IGZyb20gdGhlIHRvcCBvZiB0aGUK LSAqIHN0YWNrOgotICoKLSAqICAgICAgbW92IEFTTV9USFJFQURfSU5GTyhUSV9mbGFncywgJXJz cCwgU0laRU9GX1BUUkVHUyksICVlYXgKLSAqCi0gKiB3aWxsIHRyYW5zbGF0ZSB0bzoKLSAqCi0g KiAgICAgIDhiIDg0IDI0IGI4IGMwIGZmIGZmICAgICAgbW92ICAgIC0weDNmNDgoJXJzcCksICVl YXgKLSAqCi0gKiB3aGljaCBpcyBiZWxvdyB0aGUgY3VycmVudCBSU1AgYnkgYWxtb3N0IDE2Sy4K LSAqLwotI2RlZmluZSBBU01fVEhSRUFEX0lORk8oZmllbGQsIHJlZywgb2ZmKSAoKGZpZWxkKSso b2ZmKS1USFJFQURfU0laRSkocmVnKQorCV9BU01fTU9WIFBFUl9DUFVfVkFSKGN1cnJlbnRfdGFz aykscmVnCiAKICNlbmRpZgogCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rZXJuZWwvY3B1L2NvbW1v bi5jIGIvYXJjaC94ODYva2VybmVsL2NwdS9jb21tb24uYwppbmRleCAwZmU2OTUzZjQyMWMuLmQy MmE3YjljNGYwZSAxMDA2NDQKLS0tIGEvYXJjaC94ODYva2VybmVsL2NwdS9jb21tb24uYworKysg Yi9hcmNoL3g4Ni9rZXJuZWwvY3B1L2NvbW1vbi5jCkBAIC0xNDUyLDcgKzE0NTIsNyBAQCB2b2lk IGNwdV9pbml0KHZvaWQpCiAJc3RydWN0IHRhc2tfc3RydWN0ICptZTsKIAlzdHJ1Y3QgdHNzX3N0 cnVjdCAqdDsKIAl1bnNpZ25lZCBsb25nIHY7Ci0JaW50IGNwdSA9IHN0YWNrX3NtcF9wcm9jZXNz b3JfaWQoKTsKKwlpbnQgY3B1ID0gcmF3X3NtcF9wcm9jZXNzb3JfaWQoKTsKIAlpbnQgaTsKIAog CXdhaXRfZm9yX21hc3Rlcl9jcHUoY3B1KTsKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2tlcm5lbC9k dW1wc3RhY2suYyBiL2FyY2gveDg2L2tlcm5lbC9kdW1wc3RhY2suYwppbmRleCBkNjIwOWYzYTY5 Y2IuLmVmODAxN2NhNWJhOSAxMDA2NDQKLS0tIGEvYXJjaC94ODYva2VybmVsL2R1bXBzdGFjay5j CisrKyBiL2FyY2gveDg2L2tlcm5lbC9kdW1wc3RhY2suYwpAQCAtODAsNyArODAsNyBAQCBwcmlu dF9mdHJhY2VfZ3JhcGhfYWRkcih1bnNpZ25lZCBsb25nIGFkZHIsIHZvaWQgKmRhdGEsCiBzdGF0 aWMgaW5saW5lIGludCB2YWxpZF9zdGFja19wdHIoc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrLAog CQkJdm9pZCAqcCwgdW5zaWduZWQgaW50IHNpemUsIHZvaWQgKmVuZCkKIHsKLQl2b2lkICp0ID0g dGFza190aHJlYWRfaW5mbyh0YXNrKTsKKwl2b2lkICp0ID0gdGFza19zdGFja19wYWdlKHRhc2sp OwogCWlmIChlbmQpIHsKIAkJaWYgKHAgPCBlbmQgJiYgcCA+PSAoZW5kLVRIUkVBRF9TSVpFKSkK IAkJCXJldHVybiAxOwpkaWZmIC0tZ2l0IGEvYXJjaC94ODYva2VybmVsL2lycV8zMi5jIGIvYXJj aC94ODYva2VybmVsL2lycV8zMi5jCmluZGV4IDM4ZGE4ZjI5YTljOC4uYzYyN2JmOGQ5OGFkIDEw MDY0NAotLS0gYS9hcmNoL3g4Ni9rZXJuZWwvaXJxXzMyLmMKKysrIGIvYXJjaC94ODYva2VybmVs L2lycV8zMi5jCkBAIC0xMzAsMTEgKzEzMCw5IEBAIHZvaWQgaXJxX2N0eF9pbml0KGludCBjcHUp CiAKIHZvaWQgZG9fc29mdGlycV9vd25fc3RhY2sodm9pZCkKIHsKLQlzdHJ1Y3QgdGhyZWFkX2lu Zm8gKmN1cnN0azsKIAlzdHJ1Y3QgaXJxX3N0YWNrICppcnFzdGs7CiAJdTMyICppc3AsICpwcmV2 X2VzcDsKIAotCWN1cnN0ayA9IGN1cnJlbnRfc3RhY2soKTsKIAlpcnFzdGsgPSBfX3RoaXNfY3B1 X3JlYWQoc29mdGlycV9zdGFjayk7CiAKIAkvKiBidWlsZCB0aGUgc3RhY2sgZnJhbWUgb24gdGhl IHNvZnRpcnEgc3RhY2sgKi8KZGlmZiAtLWdpdCBhL2FyY2gveDg2L2tlcm5lbC9pcnFfNjQuYyBi L2FyY2gveDg2L2tlcm5lbC9pcnFfNjQuYwppbmRleCAyMDZkMGI5MGEzYWIuLjM4ZjlmNTY3OGRj OCAxMDA2NDQKLS0tIGEvYXJjaC94ODYva2VybmVsL2lycV82NC5jCisrKyBiL2FyY2gveDg2L2tl cm5lbC9pcnFfNjQuYwpAQCAtNDEsOCArNDEsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgc3RhY2tf b3ZlcmZsb3dfY2hlY2soc3RydWN0IHB0X3JlZ3MgKnJlZ3MpCiAJaWYgKHVzZXJfbW9kZShyZWdz KSkKIAkJcmV0dXJuOwogCi0JaWYgKHJlZ3MtPnNwID49IGN1cmJhc2UgKyBzaXplb2Yoc3RydWN0 IHRocmVhZF9pbmZvKSArCi0JCQkJICBzaXplb2Yoc3RydWN0IHB0X3JlZ3MpICsgU1RBQ0tfVE9Q X01BUkdJTiAmJgorCWlmIChyZWdzLT5zcCA+PSBjdXJiYXNlICsgc2l6ZW9mKHN0cnVjdCBwdF9y ZWdzKSArIFNUQUNLX1RPUF9NQVJHSU4gJiYKIAkgICAgcmVncy0+c3AgPD0gY3VyYmFzZSArIFRI UkVBRF9TSVpFKQogCQlyZXR1cm47CiAKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2tlcm5lbC9wcm9j ZXNzLmMgYi9hcmNoL3g4Ni9rZXJuZWwvcHJvY2Vzcy5jCmluZGV4IDk2YmVjYmJiNTJlMC4uOGY2 MGY4MTBhOWU3IDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9rZXJuZWwvcHJvY2Vzcy5jCisrKyBiL2Fy Y2gveDg2L2tlcm5lbC9wcm9jZXNzLmMKQEAgLTUzNiw5ICs1MzYsNyBAQCB1bnNpZ25lZCBsb25n IGdldF93Y2hhbihzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApCiAJICogUEFERElORwogCSAqIC0tLS0t LS0tLS0tIHRvcCA9IHRvcG1heCAtIFRPUF9PRl9LRVJORUxfU1RBQ0tfUEFERElORwogCSAqIHN0 YWNrCi0JICogLS0tLS0tLS0tLS0gYm90dG9tID0gc3RhcnQgKyBzaXplb2YodGhyZWFkX2luZm8p Ci0JICogdGhyZWFkX2luZm8KLQkgKiAtLS0tLS0tLS0tLSBzdGFydAorCSAqIC0tLS0tLS0tLS0t IGJvdHRvbSA9IHN0YXJ0CiAJICoKIAkgKiBUaGUgdGFza3Mgc3RhY2sgcG9pbnRlciBwb2ludHMg YXQgdGhlIGxvY2F0aW9uIHdoZXJlIHRoZQogCSAqIGZyYW1lcG9pbnRlciBpcyBzdG9yZWQuIFRo ZSBkYXRhIG9uIHRoZSBzdGFjayBpczoKQEAgLTU0OSw3ICs1NDcsNyBAQCB1bnNpZ25lZCBsb25n IGdldF93Y2hhbihzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApCiAJICovCiAJdG9wID0gc3RhcnQgKyBU SFJFQURfU0laRSAtIFRPUF9PRl9LRVJORUxfU1RBQ0tfUEFERElORzsKIAl0b3AgLT0gMiAqIHNp emVvZih1bnNpZ25lZCBsb25nKTsKLQlib3R0b20gPSBzdGFydCArIHNpemVvZihzdHJ1Y3QgdGhy ZWFkX2luZm8pOworCWJvdHRvbSA9IHN0YXJ0OwogCiAJc3AgPSBSRUFEX09OQ0UocC0+dGhyZWFk LnNwKTsKIAlpZiAoc3AgPCBib3R0b20gfHwgc3AgPiB0b3ApCmRpZmYgLS1naXQgYS9hcmNoL3g4 Ni91bS9wdHJhY2VfMzIuYyBiL2FyY2gveDg2L3VtL3B0cmFjZV8zMi5jCmluZGV4IGViZDRkZDZl ZjczYi4uMTRlOGY2YTYyOGMyIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni91bS9wdHJhY2VfMzIuYwor KysgYi9hcmNoL3g4Ni91bS9wdHJhY2VfMzIuYwpAQCAtMTkxLDcgKzE5MSw3IEBAIGludCBwZWVr X3VzZXIoc3RydWN0IHRhc2tfc3RydWN0ICpjaGlsZCwgbG9uZyBhZGRyLCBsb25nIGRhdGEpCiAK IHN0YXRpYyBpbnQgZ2V0X2ZwcmVncyhzdHJ1Y3QgdXNlcl9pMzg3X3N0cnVjdCBfX3VzZXIgKmJ1 Ziwgc3RydWN0IHRhc2tfc3RydWN0ICpjaGlsZCkKIHsKLQlpbnQgZXJyLCBuLCBjcHUgPSAoKHN0 cnVjdCB0aHJlYWRfaW5mbyAqKSBjaGlsZC0+c3RhY2spLT5jcHU7CisJaW50IGVyciwgbiwgY3B1 ID0gdGFza190aHJlYWRfaW5mbyhjaGlsZCktPmNwdTsKIAlzdHJ1Y3QgdXNlcl9pMzg3X3N0cnVj dCBmcHJlZ3M7CiAKIAllcnIgPSBzYXZlX2kzODdfcmVnaXN0ZXJzKHVzZXJzcGFjZV9waWRbY3B1 XSwKQEAgLTIwOCw3ICsyMDgsNyBAQCBzdGF0aWMgaW50IGdldF9mcHJlZ3Moc3RydWN0IHVzZXJf aTM4N19zdHJ1Y3QgX191c2VyICpidWYsIHN0cnVjdCB0YXNrX3N0cnVjdCAqYwogCiBzdGF0aWMg aW50IHNldF9mcHJlZ3Moc3RydWN0IHVzZXJfaTM4N19zdHJ1Y3QgX191c2VyICpidWYsIHN0cnVj dCB0YXNrX3N0cnVjdCAqY2hpbGQpCiB7Ci0JaW50IG4sIGNwdSA9ICgoc3RydWN0IHRocmVhZF9p bmZvICopIGNoaWxkLT5zdGFjayktPmNwdTsKKwlpbnQgbiwgY3B1ID0gdGFza190aHJlYWRfaW5m byhjaGlsZCktPmNwdTsKIAlzdHJ1Y3QgdXNlcl9pMzg3X3N0cnVjdCBmcHJlZ3M7CiAKIAluID0g Y29weV9mcm9tX3VzZXIoJmZwcmVncywgYnVmLCBzaXplb2YoZnByZWdzKSk7CkBAIC0yMjEsNyAr MjIxLDcgQEAgc3RhdGljIGludCBzZXRfZnByZWdzKHN0cnVjdCB1c2VyX2kzODdfc3RydWN0IF9f dXNlciAqYnVmLCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKmMKIAogc3RhdGljIGludCBnZXRfZnB4cmVn cyhzdHJ1Y3QgdXNlcl9meHNyX3N0cnVjdCBfX3VzZXIgKmJ1Ziwgc3RydWN0IHRhc2tfc3RydWN0 ICpjaGlsZCkKIHsKLQlpbnQgZXJyLCBuLCBjcHUgPSAoKHN0cnVjdCB0aHJlYWRfaW5mbyAqKSBj aGlsZC0+c3RhY2spLT5jcHU7CisJaW50IGVyciwgbiwgY3B1ID0gdGFza190aHJlYWRfaW5mbyhj aGlsZCktPmNwdTsKIAlzdHJ1Y3QgdXNlcl9meHNyX3N0cnVjdCBmcHJlZ3M7CiAKIAllcnIgPSBz YXZlX2ZweF9yZWdpc3RlcnModXNlcnNwYWNlX3BpZFtjcHVdLCAodW5zaWduZWQgbG9uZyAqKSAm ZnByZWdzKTsKQEAgLTIzNyw3ICsyMzcsNyBAQCBzdGF0aWMgaW50IGdldF9mcHhyZWdzKHN0cnVj dCB1c2VyX2Z4c3Jfc3RydWN0IF9fdXNlciAqYnVmLCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKgogCiBz dGF0aWMgaW50IHNldF9mcHhyZWdzKHN0cnVjdCB1c2VyX2Z4c3Jfc3RydWN0IF9fdXNlciAqYnVm LCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKmNoaWxkKQogewotCWludCBuLCBjcHUgPSAoKHN0cnVjdCB0 aHJlYWRfaW5mbyAqKSBjaGlsZC0+c3RhY2spLT5jcHU7CisJaW50IG4sIGNwdSA9IHRhc2tfdGhy ZWFkX2luZm8oY2hpbGQpLT5jcHU7CiAJc3RydWN0IHVzZXJfZnhzcl9zdHJ1Y3QgZnByZWdzOwog CiAJbiA9IGNvcHlfZnJvbV91c2VyKCZmcHJlZ3MsIGJ1Ziwgc2l6ZW9mKGZwcmVncykpOwpkaWZm IC0tZ2l0IGEvaW5jbHVkZS9saW51eC9pbml0X3Rhc2suaCBiL2luY2x1ZGUvbGludXgvaW5pdF90 YXNrLmgKaW5kZXggZjJjYjhkNDU1MTNkLi45YzA0ZDQ0ZWViM2MgMTAwNjQ0Ci0tLSBhL2luY2x1 ZGUvbGludXgvaW5pdF90YXNrLmgKKysrIGIvaW5jbHVkZS9saW51eC9pbml0X3Rhc2suaApAQCAt MTUsNiArMTUsOCBAQAogI2luY2x1ZGUgPG5ldC9uZXRfbmFtZXNwYWNlLmg+CiAjaW5jbHVkZSA8 bGludXgvc2NoZWQvcnQuaD4KIAorI2luY2x1ZGUgPGFzbS90aHJlYWRfaW5mby5oPgorCiAjaWZk ZWYgQ09ORklHX1NNUAogIyBkZWZpbmUgSU5JVF9QVVNIQUJMRV9UQVNLUyh0c2spCQkJCQlcCiAJ LnB1c2hhYmxlX3Rhc2tzID0gUExJU1RfTk9ERV9JTklUKHRzay5wdXNoYWJsZV90YXNrcywgTUFY X1BSSU8pLApAQCAtMTgzLDE0ICsxODUsMjEgQEAgZXh0ZXJuIHN0cnVjdCB0YXNrX2dyb3VwIHJv b3RfdGFza19ncm91cDsKICMgZGVmaW5lIElOSVRfS0FTQU4odHNrKQogI2VuZGlmCiAKKyNpZmRl ZiBDT05GSUdfVEhSRUFEX0lORk9fSU5fVEFTSworIyBkZWZpbmUgSU5JVF9UQVNLX1RJKHRzaykg LnRocmVhZF9pbmZvID0gSU5JVF9USFJFQURfSU5GTyh0c2spLAorI2Vsc2UKKyMgZGVmaW5lIElO SVRfVEFTS19USSh0c2spCisjZW5kaWYKKwogLyoKICAqICBJTklUX1RBU0sgaXMgdXNlZCB0byBz ZXQgdXAgdGhlIGZpcnN0IHRhc2sgdGFibGUsIHRvdWNoIGF0CiAgKiB5b3VyIG93biByaXNrIS4g QmFzZT0wLCBsaW1pdD0weDFmZmZmZiAoPTJNQikKICAqLwogI2RlZmluZSBJTklUX1RBU0sodHNr KQlcCiB7CQkJCQkJCQkJXAorCUlOSVRfVEFTS19USSh0c2spCQkJCQkJXAogCS5zdGF0ZQkJPSAw LAkJCQkJCVwKLQkuc3RhY2sJCT0gJmluaXRfdGhyZWFkX2luZm8sCQkJCVwKKwkuc3RhY2sJCT0g aW5pdF9zdGFjaywJCQkJCVwKIAkudXNhZ2UJCT0gQVRPTUlDX0lOSVQoMiksCQkJCVwKIAkuZmxh Z3MJCT0gUEZfS1RIUkVBRCwJCQkJCVwKIAkucHJpbwkJPSBNQVhfUFJJTy0yMCwJCQkJCVwKZGlm ZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvc2NoZWQuaCBiL2luY2x1ZGUvbGludXgvc2NoZWQuaApp bmRleCA2ZTQyYWRhMjYzNDUuLjc0M2YwMzA3YmY0YSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51 eC9zY2hlZC5oCisrKyBiL2luY2x1ZGUvbGludXgvc2NoZWQuaApAQCAtMTQ1Niw4ICsxNDU2LDEx IEBAIHN0cnVjdCB0bGJmbHVzaF91bm1hcF9iYXRjaCB7CiB9OwogCiBzdHJ1Y3QgdGFza19zdHJ1 Y3QgeworI2lmZGVmIENPTkZJR19USFJFQURfSU5GT19JTl9UQVNLCisJc3RydWN0IHRocmVhZF9p bmZvIHRocmVhZF9pbmZvOworI2VuZGlmCiAJdm9sYXRpbGUgbG9uZyBzdGF0ZTsJLyogLTEgdW5y dW5uYWJsZSwgMCBydW5uYWJsZSwgPjAgc3RvcHBlZCAqLwotCXZvaWQgKnN0YWNrOworCXVuc2ln bmVkIGxvbmcgKnN0YWNrOwogCWF0b21pY190IHVzYWdlOwogCXVuc2lnbmVkIGludCBmbGFnczsJ LyogcGVyIHByb2Nlc3MgZmxhZ3MsIGRlZmluZWQgYmVsb3cgKi8KIAl1bnNpZ25lZCBpbnQgcHRy YWNlOwpAQCAtMjUzOSw3ICsyNTQyLDkgQEAgZXh0ZXJuIHZvaWQgc2V0X2N1cnJfdGFzayhpbnQg Y3B1LCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApOwogdm9pZCB5aWVsZCh2b2lkKTsKIAogdW5pb24g dGhyZWFkX3VuaW9uIHsKKyNpZm5kZWYgQ09ORklHX1RIUkVBRF9JTkZPX0lOX1RBU0sKIAlzdHJ1 Y3QgdGhyZWFkX2luZm8gdGhyZWFkX2luZm87CisjZW5kaWYKIAl1bnNpZ25lZCBsb25nIHN0YWNr W1RIUkVBRF9TSVpFL3NpemVvZihsb25nKV07CiB9OwogCkBAIC0yOTY3LDEwICsyOTcyLDE3IEBA IHN0YXRpYyBpbmxpbmUgdm9pZCB0aHJlYWRncm91cF9jaGFuZ2VfZW5kKHN0cnVjdCB0YXNrX3N0 cnVjdCAqdHNrKQogCWNncm91cF90aHJlYWRncm91cF9jaGFuZ2VfZW5kKHRzayk7CiB9CiAKLSNp Zm5kZWYgX19IQVZFX1RIUkVBRF9GVU5DVElPTlMKKyNpZmRlZiBDT05GSUdfVEhSRUFEX0lORk9f SU5fVEFTSworCisjZGVmaW5lIHRhc2tfdGhyZWFkX2luZm8odGFzaykJCSgmKHRhc2spLT50aHJl YWRfaW5mbykKKyNkZWZpbmUgdGFza19zdGFja19wYWdlKHRhc2spCQkoKHZvaWQgKikodGFzaykt PnN0YWNrKQorI2RlZmluZSBzZXR1cF90aHJlYWRfc3RhY2sobmV3LG9sZCkJZG8geyB9IHdoaWxl KDApCisjZGVmaW5lIGVuZF9vZl9zdGFjayh0YXNrKQkJKCh0YXNrKS0+c3RhY2spCisKKyNlbGlm ICFkZWZpbmVkKF9fSEFWRV9USFJFQURfRlVOQ1RJT05TKQogCiAjZGVmaW5lIHRhc2tfdGhyZWFk X2luZm8odGFzaykJKChzdHJ1Y3QgdGhyZWFkX2luZm8gKikodGFzayktPnN0YWNrKQotI2RlZmlu ZSB0YXNrX3N0YWNrX3BhZ2UodGFzaykJKCh0YXNrKS0+c3RhY2spCisjZGVmaW5lIHRhc2tfc3Rh Y2tfcGFnZSh0YXNrKQkoKHZvaWQgKikodGFzayktPnN0YWNrKQogCiBzdGF0aWMgaW5saW5lIHZv aWQgc2V0dXBfdGhyZWFkX3N0YWNrKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCwgc3RydWN0IHRhc2tf c3RydWN0ICpvcmcpCiB7CmRpZmYgLS1naXQgYS9pbml0L0tjb25maWcgYi9pbml0L0tjb25maWcK aW5kZXggZjc1NWE2MDJkNGExLi4wYzgzYWY2ZDM3NTMgMTAwNjQ0Ci0tLSBhL2luaXQvS2NvbmZp ZworKysgYi9pbml0L0tjb25maWcKQEAgLTI2LDYgKzI2LDkgQEAgY29uZmlnIElSUV9XT1JLCiBj b25maWcgQlVJTERUSU1FX0VYVEFCTEVfU09SVAogCWJvb2wKIAorY29uZmlnIFRIUkVBRF9JTkZP X0lOX1RBU0sKKwlib29sCisKIG1lbnUgIkdlbmVyYWwgc2V0dXAiCiAKIGNvbmZpZyBCUk9LRU4K ZGlmZiAtLWdpdCBhL2luaXQvaW5pdF90YXNrLmMgYi9pbml0L2luaXRfdGFzay5jCmluZGV4IGJh MGE3ZjM2MmQ5ZS4uMTFmODNiZTFmYTc5IDEwMDY0NAotLS0gYS9pbml0L2luaXRfdGFzay5jCisr KyBiL2luaXQvaW5pdF90YXNrLmMKQEAgLTIyLDUgKzIyLDggQEAgRVhQT1JUX1NZTUJPTChpbml0 X3Rhc2spOwogICogSW5pdGlhbCB0aHJlYWQgc3RydWN0dXJlLiBBbGlnbm1lbnQgb2YgdGhpcyBp cyBoYW5kbGVkIGJ5IGEgc3BlY2lhbAogICogbGlua2VyIG1hcCBlbnRyeS4KICAqLwotdW5pb24g dGhyZWFkX3VuaW9uIGluaXRfdGhyZWFkX3VuaW9uIF9faW5pdF90YXNrX2RhdGEgPQotCXsgSU5J VF9USFJFQURfSU5GTyhpbml0X3Rhc2spIH07Cit1bmlvbiB0aHJlYWRfdW5pb24gaW5pdF90aHJl YWRfdW5pb24gX19pbml0X3Rhc2tfZGF0YSA9IHsKKyNpZm5kZWYgQ09ORklHX1RIUkVBRF9JTkZP X0lOX1RBU0sKKwlJTklUX1RIUkVBRF9JTkZPKGluaXRfdGFzaykKKyNlbmRpZgorfTsKZGlmZiAt LWdpdCBhL2tlcm5lbC9mb3JrLmMgYi9rZXJuZWwvZm9yay5jCmluZGV4IDVjMmMzNTVhYTk3Zi4u OWYyOTAyMjZkOWQ1IDEwMDY0NAotLS0gYS9rZXJuZWwvZm9yay5jCisrKyBiL2tlcm5lbC9mb3Jr LmMKQEAgLTE0OCw3ICsxNDgsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZnJlZV90YXNrX3N0cnVj dChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaykKIH0KICNlbmRpZgogCi12b2lkIF9fd2VhayBhcmNo X3JlbGVhc2VfdGhyZWFkX2luZm8oc3RydWN0IHRocmVhZF9pbmZvICp0aSkKK3ZvaWQgX193ZWFr IGFyY2hfcmVsZWFzZV90aHJlYWRfc3RhY2sodW5zaWduZWQgbG9uZyAqc3RhY2spCiB7CiB9CiAK QEAgLTE1OSw3ICsxNTksNyBAQCB2b2lkIF9fd2VhayBhcmNoX3JlbGVhc2VfdGhyZWFkX2luZm8o c3RydWN0IHRocmVhZF9pbmZvICp0aSkKICAqIGttZW1jYWNoZSBiYXNlZCBhbGxvY2F0b3IuCiAg Ki8KICMgaWYgVEhSRUFEX1NJWkUgPj0gUEFHRV9TSVpFCi1zdGF0aWMgc3RydWN0IHRocmVhZF9p bmZvICphbGxvY190aHJlYWRfaW5mb19ub2RlKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrLAorc3Rh dGljIHVuc2lnbmVkIGxvbmcgKmFsbG9jX3RocmVhZF9zdGFja19ub2RlKHN0cnVjdCB0YXNrX3N0 cnVjdCAqdHNrLAogCQkJCQkJICBpbnQgbm9kZSkKIHsKIAlzdHJ1Y3QgcGFnZSAqcGFnZSA9IGFs bG9jX2ttZW1fcGFnZXNfbm9kZShub2RlLCBUSFJFQURJTkZPX0dGUCwKQEAgLTE3MiwzMSArMTcy LDMxIEBAIHN0YXRpYyBzdHJ1Y3QgdGhyZWFkX2luZm8gKmFsbG9jX3RocmVhZF9pbmZvX25vZGUo c3RydWN0IHRhc2tfc3RydWN0ICp0c2ssCiAJcmV0dXJuIHBhZ2UgPyBwYWdlX2FkZHJlc3MocGFn ZSkgOiBOVUxMOwogfQogCi1zdGF0aWMgaW5saW5lIHZvaWQgZnJlZV90aHJlYWRfaW5mbyhzdHJ1 Y3QgdGhyZWFkX2luZm8gKnRpKQorc3RhdGljIGlubGluZSB2b2lkIGZyZWVfdGhyZWFkX3N0YWNr KHVuc2lnbmVkIGxvbmcgKnN0YWNrKQogewotCXN0cnVjdCBwYWdlICpwYWdlID0gdmlydF90b19w YWdlKHRpKTsKKwlzdHJ1Y3QgcGFnZSAqcGFnZSA9IHZpcnRfdG9fcGFnZShzdGFjayk7CiAKIAlt ZW1jZ19rbWVtX3VwZGF0ZV9wYWdlX3N0YXQocGFnZSwgTUVNQ0dfS0VSTkVMX1NUQUNLLAogCQkJ CSAgICAtKDEgPDwgVEhSRUFEX1NJWkVfT1JERVIpKTsKIAlfX2ZyZWVfa21lbV9wYWdlcyhwYWdl LCBUSFJFQURfU0laRV9PUkRFUik7CiB9CiAjIGVsc2UKLXN0YXRpYyBzdHJ1Y3Qga21lbV9jYWNo ZSAqdGhyZWFkX2luZm9fY2FjaGU7CitzdGF0aWMgc3RydWN0IGttZW1fY2FjaGUgKnRocmVhZF9z dGFja19jYWNoZTsKIAotc3RhdGljIHN0cnVjdCB0aHJlYWRfaW5mbyAqYWxsb2NfdGhyZWFkX2lu Zm9fbm9kZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaywKK3N0YXRpYyBzdHJ1Y3QgdGhyZWFkX2lu Zm8gKmFsbG9jX3RocmVhZF9zdGFja19ub2RlKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrLAogCQkJ CQkJICBpbnQgbm9kZSkKIHsKLQlyZXR1cm4ga21lbV9jYWNoZV9hbGxvY19ub2RlKHRocmVhZF9p bmZvX2NhY2hlLCBUSFJFQURJTkZPX0dGUCwgbm9kZSk7CisJcmV0dXJuIGttZW1fY2FjaGVfYWxs b2Nfbm9kZSh0aHJlYWRfc3RhY2tfY2FjaGUsIFRIUkVBRElORk9fR0ZQLCBub2RlKTsKIH0KIAot c3RhdGljIHZvaWQgZnJlZV90aHJlYWRfaW5mbyhzdHJ1Y3QgdGhyZWFkX2luZm8gKnRpKQorc3Rh dGljIHZvaWQgZnJlZV9zdGFjayh1bnNpZ25lZCBsb25nICpzdGFjaykKIHsKLQlrbWVtX2NhY2hl X2ZyZWUodGhyZWFkX2luZm9fY2FjaGUsIHRpKTsKKwlrbWVtX2NhY2hlX2ZyZWUodGhyZWFkX3N0 YWNrX2NhY2hlLCBzdGFjayk7CiB9CiAKIHZvaWQgdGhyZWFkX2luZm9fY2FjaGVfaW5pdCh2b2lk KQogewotCXRocmVhZF9pbmZvX2NhY2hlID0ga21lbV9jYWNoZV9jcmVhdGUoInRocmVhZF9pbmZv IiwgVEhSRUFEX1NJWkUsCisJdGhyZWFkX3N0YWNrX2NhY2hlID0ga21lbV9jYWNoZV9jcmVhdGUo InRocmVhZF9zdGFjayIsIFRIUkVBRF9TSVpFLAogCQkJCQkgICAgICBUSFJFQURfU0laRSwgMCwg TlVMTCk7CiAJQlVHX09OKHRocmVhZF9pbmZvX2NhY2hlID09IE5VTEwpOwogfQpAQCAtMjIxLDkg KzIyMSw5IEBAIHN0cnVjdCBrbWVtX2NhY2hlICp2bV9hcmVhX2NhY2hlcDsKIC8qIFNMQUIgY2Fj aGUgZm9yIG1tX3N0cnVjdCBzdHJ1Y3R1cmVzICh0c2stPm1tKSAqLwogc3RhdGljIHN0cnVjdCBr bWVtX2NhY2hlICptbV9jYWNoZXA7CiAKLXN0YXRpYyB2b2lkIGFjY291bnRfa2VybmVsX3N0YWNr KHN0cnVjdCB0aHJlYWRfaW5mbyAqdGksIGludCBhY2NvdW50KQorc3RhdGljIHZvaWQgYWNjb3Vu dF9rZXJuZWxfc3RhY2sodW5zaWduZWQgbG9uZyAqc3RhY2ssIGludCBhY2NvdW50KQogewotCXN0 cnVjdCB6b25lICp6b25lID0gcGFnZV96b25lKHZpcnRfdG9fcGFnZSh0aSkpOworCXN0cnVjdCB6 b25lICp6b25lID0gcGFnZV96b25lKHZpcnRfdG9fcGFnZShzdGFjaykpOwogCiAJbW9kX3pvbmVf cGFnZV9zdGF0ZSh6b25lLCBOUl9LRVJORUxfU1RBQ0ssIGFjY291bnQpOwogfQpAQCAtMjMxLDgg KzIzMSw4IEBAIHN0YXRpYyB2b2lkIGFjY291bnRfa2VybmVsX3N0YWNrKHN0cnVjdCB0aHJlYWRf aW5mbyAqdGksIGludCBhY2NvdW50KQogdm9pZCBmcmVlX3Rhc2soc3RydWN0IHRhc2tfc3RydWN0 ICp0c2spCiB7CiAJYWNjb3VudF9rZXJuZWxfc3RhY2sodHNrLT5zdGFjaywgLTEpOwotCWFyY2hf cmVsZWFzZV90aHJlYWRfaW5mbyh0c2stPnN0YWNrKTsKLQlmcmVlX3RocmVhZF9pbmZvKHRzay0+ c3RhY2spOworCWFyY2hfcmVsZWFzZV90aHJlYWRfc3RhY2sodHNrLT5zdGFjayk7CisJZnJlZV90 aHJlYWRfc3RhY2sodHNrLT5zdGFjayk7CiAJcnRfbXV0ZXhfZGVidWdfdGFza19mcmVlKHRzayk7 CiAJZnRyYWNlX2dyYXBoX2V4aXRfdGFzayh0c2spOwogCXB1dF9zZWNjb21wX2ZpbHRlcih0c2sp OwpAQCAtMzQzLDcgKzM0Myw3IEBAIHZvaWQgc2V0X3Rhc2tfc3RhY2tfZW5kX21hZ2ljKHN0cnVj dCB0YXNrX3N0cnVjdCAqdHNrKQogc3RhdGljIHN0cnVjdCB0YXNrX3N0cnVjdCAqZHVwX3Rhc2tf c3RydWN0KHN0cnVjdCB0YXNrX3N0cnVjdCAqb3JpZywgaW50IG5vZGUpCiB7CiAJc3RydWN0IHRh c2tfc3RydWN0ICp0c2s7Ci0Jc3RydWN0IHRocmVhZF9pbmZvICp0aTsKKwl1bnNpZ25lZCBsb25n ICpzdGFjazsKIAlpbnQgZXJyOwogCiAJaWYgKG5vZGUgPT0gTlVNQV9OT19OT0RFKQpAQCAtMzUy LDE1ICszNTIsMTUgQEAgc3RhdGljIHN0cnVjdCB0YXNrX3N0cnVjdCAqZHVwX3Rhc2tfc3RydWN0 KHN0cnVjdCB0YXNrX3N0cnVjdCAqb3JpZywgaW50IG5vZGUpCiAJaWYgKCF0c2spCiAJCXJldHVy biBOVUxMOwogCi0JdGkgPSBhbGxvY190aHJlYWRfaW5mb19ub2RlKHRzaywgbm9kZSk7Ci0JaWYg KCF0aSkKKwlzdGFjayA9IGFsbG9jX3RocmVhZF9zdGFja19ub2RlKHRzaywgbm9kZSk7CisJaWYg KCFzdGFjaykKIAkJZ290byBmcmVlX3RzazsKIAogCWVyciA9IGFyY2hfZHVwX3Rhc2tfc3RydWN0 KHRzaywgb3JpZyk7CiAJaWYgKGVycikKLQkJZ290byBmcmVlX3RpOworCQlnb3RvIGZyZWVfc3Rh Y2s7CiAKLQl0c2stPnN0YWNrID0gdGk7CisJdHNrLT5zdGFjayA9IHN0YWNrOwogI2lmZGVmIENP TkZJR19TRUNDT01QCiAJLyoKIAkgKiBXZSBtdXN0IGhhbmRsZSBzZXR0aW5nIHVwIHNlY2NvbXAg ZmlsdGVycyBvbmNlIHdlJ3JlIHVuZGVyCkBAIC0zOTIsMTQgKzM5MiwxNCBAQCBzdGF0aWMgc3Ry dWN0IHRhc2tfc3RydWN0ICpkdXBfdGFza19zdHJ1Y3Qoc3RydWN0IHRhc2tfc3RydWN0ICpvcmln LCBpbnQgbm9kZSkKIAl0c2stPnRhc2tfZnJhZy5wYWdlID0gTlVMTDsKIAl0c2stPndha2VfcS5u ZXh0ID0gTlVMTDsKIAotCWFjY291bnRfa2VybmVsX3N0YWNrKHRpLCAxKTsKKwlhY2NvdW50X2tl cm5lbF9zdGFjayhzdGFjaywgMSk7CiAKIAlrY292X3Rhc2tfaW5pdCh0c2spOwogCiAJcmV0dXJu IHRzazsKIAotZnJlZV90aToKLQlmcmVlX3RocmVhZF9pbmZvKHRpKTsKK2ZyZWVfc3RhY2s6CisJ ZnJlZV90aHJlYWRfc3RhY2soc3RhY2spOwogZnJlZV90c2s6CiAJZnJlZV90YXNrX3N0cnVjdCh0 c2spOwogCXJldHVybiBOVUxMOwo= --001a11371390c8596905360c8c32-- From mboxrd@z Thu Jan 1 00:00:00 1970 Reply-To: kernel-hardening@lists.openwall.com MIME-Version: 1.0 Sender: linus971@gmail.com In-Reply-To: <20160624205116.4hbnurrnan4afq2t@treble> References: <20160623185340.GO30154@twins.programming.kicks-ass.net> <20160624202530.unmidps4kpebo2na@treble> <20160624205116.4hbnurrnan4afq2t@treble> From: Linus Torvalds Date: Fri, 24 Jun 2016 14:06:51 -0700 Message-ID: Content-Type: multipart/mixed; boundary=001a11371390c8596905360c8c32 Subject: [kernel-hardening] Re: [PATCH v3 00/13] Virtually mapped stacks with guard pages (x86, core) To: Josh Poimboeuf Cc: Brian Gerst , Peter Zijlstra , Oleg Nesterov , Andy Lutomirski , Andy Lutomirski , the arch/x86 maintainers , Linux Kernel Mailing List , "linux-arch@vger.kernel.org" , Borislav Petkov , Nadav Amit , Kees Cook , "kernel-hardening@lists.openwall.com" , Jann Horn , Heiko Carstens List-ID: --001a11371390c8596905360c8c32 Content-Type: text/plain; charset=UTF-8 On Fri, Jun 24, 2016 at 1:51 PM, Josh Poimboeuf wrote: > > Found another bug: Yup. Those two were the ones that kept it from working for me. Thanks. Anyway, here's the final combined patch that works for me on x86-64. No more thread-info on the stack. Linus --001a11371390c8596905360c8c32 Content-Type: text/plain; charset=US-ASCII; name="patch.diff" Content-Disposition: attachment; filename="patch.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_ipu89vga0 CiAgICBUaGlzIGlzIGFuIGF0dGVtcHQgYXQgbW92aW5nIHRoZSB0aHJlYWRfaW5mbyBpbnRvIHRo ZSB0YXNrX3N0cnVjdAotLS0KIGFyY2gvbW4xMDMwMC9pbmNsdWRlL2FzbS90aHJlYWRfaW5mby5o IHwgIDIgKy0KIGFyY2gvbW4xMDMwMC9rZXJuZWwva2dkYi5jICAgICAgICAgICAgIHwgIDMgKyst CiBhcmNoL3RpbGUvaW5jbHVkZS9hc20vdGhyZWFkX2luZm8uaCAgICB8ICAyICstCiBhcmNoL3Rp bGUva2VybmVsL3Byb2Nlc3MuYyAgICAgICAgICAgICB8ICAzICsrLQogYXJjaC94ODYvS2NvbmZp ZyAgICAgICAgICAgICAgICAgICAgICAgfCAgMSArCiBhcmNoL3g4Ni9lbnRyeS9jb21tb24uYyAg ICAgICAgICAgICAgICB8IDIxICsrKysrKy0tLS0tLS0tLS0KIGFyY2gveDg2L2VudHJ5L2VudHJ5 XzY0LlMgICAgICAgICAgICAgIHwgIDkgKysrKy0tLQogYXJjaC94ODYvaW5jbHVkZS9hc20vY3B1 LmggICAgICAgICAgICAgfCAgMSAtCiBhcmNoL3g4Ni9pbmNsdWRlL2FzbS9rcHJvYmVzLmggICAg ICAgICB8IDEyICsrKysrLS0tLS0KIGFyY2gveDg2L2luY2x1ZGUvYXNtL3NtcC5oICAgICAgICAg ICAgIHwgIDYgLS0tLS0KIGFyY2gveDg2L2luY2x1ZGUvYXNtL3N3aXRjaF90by5oICAgICAgIHwg IDYgKystLS0KIGFyY2gveDg2L2luY2x1ZGUvYXNtL3RocmVhZF9pbmZvLmggICAgIHwgMzcgKysr LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogYXJjaC94ODYva2VybmVsL2NwdS9jb21tb24uYyAg ICAgICAgICAgfCAgMiArLQogYXJjaC94ODYva2VybmVsL2R1bXBzdGFjay5jICAgICAgICAgICAg fCAgMiArLQogYXJjaC94ODYva2VybmVsL2lycV8zMi5jICAgICAgICAgICAgICAgfCAgMiAtLQog YXJjaC94ODYva2VybmVsL2lycV82NC5jICAgICAgICAgICAgICAgfCAgMyArLS0KIGFyY2gveDg2 L2tlcm5lbC9wcm9jZXNzLmMgICAgICAgICAgICAgIHwgIDYgKystLS0KIGFyY2gveDg2L3VtL3B0 cmFjZV8zMi5jICAgICAgICAgICAgICAgIHwgIDggKysrLS0tLQogaW5jbHVkZS9saW51eC9pbml0 X3Rhc2suaCAgICAgICAgICAgICAgfCAxMSArKysrKysrKy0KIGluY2x1ZGUvbGludXgvc2NoZWQu aCAgICAgICAgICAgICAgICAgIHwgMTggKysrKysrKysrKystLS0KIGluaXQvS2NvbmZpZyAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgIDMgKysrCiBpbml0L2luaXRfdGFzay5jICAgICAgICAg ICAgICAgICAgICAgICB8ICA3ICsrKystLQoga2VybmVsL2ZvcmsuYyAgICAgICAgICAgICAgICAg ICAgICAgICAgfCA0NCArKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tCiAyMyBmaWxl cyBjaGFuZ2VkLCA5NSBpbnNlcnRpb25zKCspLCAxMTQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0 IGEvYXJjaC9tbjEwMzAwL2luY2x1ZGUvYXNtL3RocmVhZF9pbmZvLmggYi9hcmNoL21uMTAzMDAv aW5jbHVkZS9hc20vdGhyZWFkX2luZm8uaAppbmRleCA0ODYxYTc4YzcxNjAuLmY1ZjkwYmJmMDE5 ZCAxMDA2NDQKLS0tIGEvYXJjaC9tbjEwMzAwL2luY2x1ZGUvYXNtL3RocmVhZF9pbmZvLmgKKysr IGIvYXJjaC9tbjEwMzAwL2luY2x1ZGUvYXNtL3RocmVhZF9pbmZvLmgKQEAgLTExNSw3ICsxMTUs NyBAQCBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgY3VycmVudF9zdGFja19wb2ludGVyKHZv aWQpCiB9CiAKICNpZm5kZWYgQ09ORklHX0tHREIKLXZvaWQgYXJjaF9yZWxlYXNlX3RocmVhZF9p bmZvKHN0cnVjdCB0aHJlYWRfaW5mbyAqdGkpOwordm9pZCBhcmNoX3JlbGVhc2VfdGhyZWFkX3N0 YWNrKHVuc2lnbmVkIGxvbmcgKnN0YWNrKTsKICNlbmRpZgogI2RlZmluZSBnZXRfdGhyZWFkX2lu Zm8odGkpCWdldF90YXNrX3N0cnVjdCgodGkpLT50YXNrKQogI2RlZmluZSBwdXRfdGhyZWFkX2lu Zm8odGkpCXB1dF90YXNrX3N0cnVjdCgodGkpLT50YXNrKQpkaWZmIC0tZ2l0IGEvYXJjaC9tbjEw MzAwL2tlcm5lbC9rZ2RiLmMgYi9hcmNoL21uMTAzMDAva2VybmVsL2tnZGIuYwppbmRleCA5OTc3 MDgyMzQ1MWEuLjJkNzk4NmMzODZmZSAxMDA2NDQKLS0tIGEvYXJjaC9tbjEwMzAwL2tlcm5lbC9r Z2RiLmMKKysrIGIvYXJjaC9tbjEwMzAwL2tlcm5lbC9rZ2RiLmMKQEAgLTM5Nyw4ICszOTcsOSBA QCBzdGF0aWMgYm9vbCBrZ2RiX2FyY2hfdW5kb19zaW5nbGVzdGVwKHN0cnVjdCBwdF9yZWdzICpy ZWdzKQogICogc2luZ2xlLXN0ZXAgc3RhdGUgaXMgY2xlYXJlZC4gIEF0IHRoaXMgcG9pbnQgdGhl IGJyZWFrcG9pbnRzIHNob3VsZCBoYXZlCiAgKiBiZWVuIHJlbW92ZWQgYnkgX19zd2l0Y2hfdG8o KS4KICAqLwotdm9pZCBhcmNoX3JlbGVhc2VfdGhyZWFkX2luZm8oc3RydWN0IHRocmVhZF9pbmZv ICp0aSkKK3ZvaWQgYXJjaF9yZWxlYXNlX3RocmVhZF9zdGFjayh1bnNpZ25lZCBsb25nICpzdGFj aykKIHsKKwlzdHJ1Y3QgdGhyZWFkX2luZm8gKnRpID0gKHZvaWQgKilzdGFjazsKIAlpZiAoa2dk Yl9zc3RlcF90aHJlYWQgPT0gdGkpIHsKIAkJa2dkYl9zc3RlcF90aHJlYWQgPSBOVUxMOwogCmRp ZmYgLS1naXQgYS9hcmNoL3RpbGUvaW5jbHVkZS9hc20vdGhyZWFkX2luZm8uaCBiL2FyY2gvdGls ZS9pbmNsdWRlL2FzbS90aHJlYWRfaW5mby5oCmluZGV4IDRiN2NlZjllOTRlMC4uYzE0NjdhYzU5 Y2U2IDEwMDY0NAotLS0gYS9hcmNoL3RpbGUvaW5jbHVkZS9hc20vdGhyZWFkX2luZm8uaAorKysg Yi9hcmNoL3RpbGUvaW5jbHVkZS9hc20vdGhyZWFkX2luZm8uaApAQCAtNzgsNyArNzgsNyBAQCBz dHJ1Y3QgdGhyZWFkX2luZm8gewogCiAjaWZuZGVmIF9fQVNTRU1CTFlfXwogCi12b2lkIGFyY2hf cmVsZWFzZV90aHJlYWRfaW5mbyhzdHJ1Y3QgdGhyZWFkX2luZm8gKmluZm8pOwordm9pZCBhcmNo X3JlbGVhc2VfdGhyZWFkX3N0YWNrKHVuc2lnbmVkIGxvbmcgKnN0YWNrKTsKIAogLyogSG93IHRv IGdldCB0aGUgdGhyZWFkIGluZm9ybWF0aW9uIHN0cnVjdCBmcm9tIEMuICovCiByZWdpc3RlciB1 bnNpZ25lZCBsb25nIHN0YWNrX3BvaW50ZXIgX19hc21fXygic3AiKTsKZGlmZiAtLWdpdCBhL2Fy Y2gvdGlsZS9rZXJuZWwvcHJvY2Vzcy5jIGIvYXJjaC90aWxlL2tlcm5lbC9wcm9jZXNzLmMKaW5k ZXggNmI3MDVjY2M5Y2MxLi5hNDY1ZDgzNzJlZGQgMTAwNjQ0Ci0tLSBhL2FyY2gvdGlsZS9rZXJu ZWwvcHJvY2Vzcy5jCisrKyBiL2FyY2gvdGlsZS9rZXJuZWwvcHJvY2Vzcy5jCkBAIC03Myw4ICs3 Myw5IEBAIHZvaWQgYXJjaF9jcHVfaWRsZSh2b2lkKQogLyoKICAqIFJlbGVhc2UgYSB0aHJlYWRf aW5mbyBzdHJ1Y3R1cmUKICAqLwotdm9pZCBhcmNoX3JlbGVhc2VfdGhyZWFkX2luZm8oc3RydWN0 IHRocmVhZF9pbmZvICppbmZvKQordm9pZCBhcmNoX3JlbGVhc2VfdGhyZWFkX3N0YWNrKHVuc2ln bmVkIGxvbmcgKnN0YWNrKQogeworCXN0cnVjdCB0aHJlYWRfaW5mbyAqaW5mbyA9ICh2b2lkICop c3RhY2s7CiAJc3RydWN0IHNpbmdsZV9zdGVwX3N0YXRlICpzdGVwX3N0YXRlID0gaW5mby0+c3Rl cF9zdGF0ZTsKIAogCWlmIChzdGVwX3N0YXRlKSB7CmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9LY29u ZmlnIGIvYXJjaC94ODYvS2NvbmZpZwppbmRleCBkOWE5NGRhMGMyOWYuLmYzM2JjODA1NzdjNSAx MDA2NDQKLS0tIGEvYXJjaC94ODYvS2NvbmZpZworKysgYi9hcmNoL3g4Ni9LY29uZmlnCkBAIC0x NTQsNiArMTU0LDcgQEAgY29uZmlnIFg4NgogCXNlbGVjdCBTUEFSU0VfSVJRCiAJc2VsZWN0IFNS Q1UKIAlzZWxlY3QgU1lTQ1RMX0VYQ0VQVElPTl9UUkFDRQorCXNlbGVjdCBUSFJFQURfSU5GT19J Tl9UQVNLCiAJc2VsZWN0IFVTRVJfU1RBQ0tUUkFDRV9TVVBQT1JUCiAJc2VsZWN0IFZJUlRfVE9f QlVTCiAJc2VsZWN0IFg4Nl9ERVZfRE1BX09QUwkJCWlmIFg4Nl82NApkaWZmIC0tZ2l0IGEvYXJj aC94ODYvZW50cnkvY29tbW9uLmMgYi9hcmNoL3g4Ni9lbnRyeS9jb21tb24uYwppbmRleCBlYzEz OGU1MzhjNDQuLmQ1ZmVhYzVmMjUyZCAxMDA2NDQKLS0tIGEvYXJjaC94ODYvZW50cnkvY29tbW9u LmMKKysrIGIvYXJjaC94ODYvZW50cnkvY29tbW9uLmMKQEAgLTMxLDEzICszMSw2IEBACiAjZGVm aW5lIENSRUFURV9UUkFDRV9QT0lOVFMKICNpbmNsdWRlIDx0cmFjZS9ldmVudHMvc3lzY2FsbHMu aD4KIAotc3RhdGljIHN0cnVjdCB0aHJlYWRfaW5mbyAqcHRfcmVnc190b190aHJlYWRfaW5mbyhz dHJ1Y3QgcHRfcmVncyAqcmVncykKLXsKLQl1bnNpZ25lZCBsb25nIHRvcF9vZl9zdGFjayA9Ci0J CSh1bnNpZ25lZCBsb25nKShyZWdzICsgMSkgKyBUT1BfT0ZfS0VSTkVMX1NUQUNLX1BBRERJTkc7 Ci0JcmV0dXJuIChzdHJ1Y3QgdGhyZWFkX2luZm8gKikodG9wX29mX3N0YWNrIC0gVEhSRUFEX1NJ WkUpOwotfQotCiAjaWZkZWYgQ09ORklHX0NPTlRFWFRfVFJBQ0tJTkcKIC8qIENhbGxlZCBvbiBl bnRyeSBmcm9tIHVzZXIgbW9kZSB3aXRoIElSUXMgb2ZmLiAqLwogX192aXNpYmxlIHZvaWQgZW50 ZXJfZnJvbV91c2VyX21vZGUodm9pZCkKQEAgLTc4LDcgKzcxLDcgQEAgc3RhdGljIHZvaWQgZG9f YXVkaXRfc3lzY2FsbF9lbnRyeShzdHJ1Y3QgcHRfcmVncyAqcmVncywgdTMyIGFyY2gpCiAgKi8K IHVuc2lnbmVkIGxvbmcgc3lzY2FsbF90cmFjZV9lbnRlcl9waGFzZTEoc3RydWN0IHB0X3JlZ3Mg KnJlZ3MsIHUzMiBhcmNoKQogewotCXN0cnVjdCB0aHJlYWRfaW5mbyAqdGkgPSBwdF9yZWdzX3Rv X3RocmVhZF9pbmZvKHJlZ3MpOworCXN0cnVjdCB0aHJlYWRfaW5mbyAqdGkgPSBjdXJyZW50X3Ro cmVhZF9pbmZvKCk7CiAJdW5zaWduZWQgbG9uZyByZXQgPSAwOwogCXUzMiB3b3JrOwogCkBAIC0x NTYsNyArMTQ5LDcgQEAgdW5zaWduZWQgbG9uZyBzeXNjYWxsX3RyYWNlX2VudGVyX3BoYXNlMShz dHJ1Y3QgcHRfcmVncyAqcmVncywgdTMyIGFyY2gpCiBsb25nIHN5c2NhbGxfdHJhY2VfZW50ZXJf cGhhc2UyKHN0cnVjdCBwdF9yZWdzICpyZWdzLCB1MzIgYXJjaCwKIAkJCQl1bnNpZ25lZCBsb25n IHBoYXNlMV9yZXN1bHQpCiB7Ci0Jc3RydWN0IHRocmVhZF9pbmZvICp0aSA9IHB0X3JlZ3NfdG9f dGhyZWFkX2luZm8ocmVncyk7CisJc3RydWN0IHRocmVhZF9pbmZvICp0aSA9IGN1cnJlbnRfdGhy ZWFkX2luZm8oKTsKIAlsb25nIHJldCA9IDA7CiAJdTMyIHdvcmsgPSBBQ0NFU1NfT05DRSh0aS0+ ZmxhZ3MpICYgX1RJRl9XT1JLX1NZU0NBTExfRU5UUlk7CiAKQEAgLTIzOSw3ICsyMzIsNyBAQCBz dGF0aWMgdm9pZCBleGl0X3RvX3VzZXJtb2RlX2xvb3Aoc3RydWN0IHB0X3JlZ3MgKnJlZ3MsIHUz MiBjYWNoZWRfZmxhZ3MpCiAJCS8qIERpc2FibGUgSVJRcyBhbmQgcmV0cnkgKi8KIAkJbG9jYWxf aXJxX2Rpc2FibGUoKTsKIAotCQljYWNoZWRfZmxhZ3MgPSBSRUFEX09OQ0UocHRfcmVnc190b190 aHJlYWRfaW5mbyhyZWdzKS0+ZmxhZ3MpOworCQljYWNoZWRfZmxhZ3MgPSBSRUFEX09OQ0UoY3Vy cmVudF90aHJlYWRfaW5mbygpLT5mbGFncyk7CiAKIAkJaWYgKCEoY2FjaGVkX2ZsYWdzICYgRVhJ VF9UT19VU0VSTU9ERV9MT09QX0ZMQUdTKSkKIAkJCWJyZWFrOwpAQCAtMjUwLDcgKzI0Myw3IEBA IHN0YXRpYyB2b2lkIGV4aXRfdG9fdXNlcm1vZGVfbG9vcChzdHJ1Y3QgcHRfcmVncyAqcmVncywg dTMyIGNhY2hlZF9mbGFncykKIC8qIENhbGxlZCB3aXRoIElSUXMgZGlzYWJsZWQuICovCiBfX3Zp c2libGUgaW5saW5lIHZvaWQgcHJlcGFyZV9leGl0X3RvX3VzZXJtb2RlKHN0cnVjdCBwdF9yZWdz ICpyZWdzKQogewotCXN0cnVjdCB0aHJlYWRfaW5mbyAqdGkgPSBwdF9yZWdzX3RvX3RocmVhZF9p bmZvKHJlZ3MpOworCXN0cnVjdCB0aHJlYWRfaW5mbyAqdGkgPSBjdXJyZW50X3RocmVhZF9pbmZv KCk7CiAJdTMyIGNhY2hlZF9mbGFnczsKIAogCWlmIChJU19FTkFCTEVEKENPTkZJR19QUk9WRV9M T0NLSU5HKSAmJiBXQVJOX09OKCFpcnFzX2Rpc2FibGVkKCkpKQpAQCAtMzA5LDcgKzMwMiw3IEBA IHN0YXRpYyB2b2lkIHN5c2NhbGxfc2xvd19leGl0X3dvcmsoc3RydWN0IHB0X3JlZ3MgKnJlZ3Ms IHUzMiBjYWNoZWRfZmxhZ3MpCiAgKi8KIF9fdmlzaWJsZSBpbmxpbmUgdm9pZCBzeXNjYWxsX3Jl dHVybl9zbG93cGF0aChzdHJ1Y3QgcHRfcmVncyAqcmVncykKIHsKLQlzdHJ1Y3QgdGhyZWFkX2lu Zm8gKnRpID0gcHRfcmVnc190b190aHJlYWRfaW5mbyhyZWdzKTsKKwlzdHJ1Y3QgdGhyZWFkX2lu Zm8gKnRpID0gY3VycmVudF90aHJlYWRfaW5mbygpOwogCXUzMiBjYWNoZWRfZmxhZ3MgPSBSRUFE X09OQ0UodGktPmZsYWdzKTsKIAogCUNUX1dBUk5fT04oY3Rfc3RhdGUoKSAhPSBDT05URVhUX0tF Uk5FTCk7CkBAIC0zMzIsNyArMzI1LDcgQEAgX192aXNpYmxlIGlubGluZSB2b2lkIHN5c2NhbGxf cmV0dXJuX3Nsb3dwYXRoKHN0cnVjdCBwdF9yZWdzICpyZWdzKQogI2lmZGVmIENPTkZJR19YODZf NjQKIF9fdmlzaWJsZSB2b2lkIGRvX3N5c2NhbGxfNjQoc3RydWN0IHB0X3JlZ3MgKnJlZ3MpCiB7 Ci0Jc3RydWN0IHRocmVhZF9pbmZvICp0aSA9IHB0X3JlZ3NfdG9fdGhyZWFkX2luZm8ocmVncyk7 CisJc3RydWN0IHRocmVhZF9pbmZvICp0aSA9IGN1cnJlbnRfdGhyZWFkX2luZm8oKTsKIAl1bnNp Z25lZCBsb25nIG5yID0gcmVncy0+b3JpZ19heDsKIAogCWVudGVyX2Zyb21fdXNlcl9tb2RlKCk7 CkBAIC0zNjUsNyArMzU4LDcgQEAgX192aXNpYmxlIHZvaWQgZG9fc3lzY2FsbF82NChzdHJ1Y3Qg cHRfcmVncyAqcmVncykKICAqLwogc3RhdGljIF9fYWx3YXlzX2lubGluZSB2b2lkIGRvX3N5c2Nh bGxfMzJfaXJxc19vbihzdHJ1Y3QgcHRfcmVncyAqcmVncykKIHsKLQlzdHJ1Y3QgdGhyZWFkX2lu Zm8gKnRpID0gcHRfcmVnc190b190aHJlYWRfaW5mbyhyZWdzKTsKKwlzdHJ1Y3QgdGhyZWFkX2lu Zm8gKnRpID0gY3VycmVudF90aHJlYWRfaW5mbygpOwogCXVuc2lnbmVkIGludCBuciA9ICh1bnNp Z25lZCBpbnQpcmVncy0+b3JpZ19heDsKIAogI2lmZGVmIENPTkZJR19JQTMyX0VNVUxBVElPTgpk aWZmIC0tZ2l0IGEvYXJjaC94ODYvZW50cnkvZW50cnlfNjQuUyBiL2FyY2gveDg2L2VudHJ5L2Vu dHJ5XzY0LlMKaW5kZXggOWVlMGRhMTgwN2VkLi5mNDk3NDJkZTJjNjUgMTAwNjQ0Ci0tLSBhL2Fy Y2gveDg2L2VudHJ5L2VudHJ5XzY0LlMKKysrIGIvYXJjaC94ODYvZW50cnkvZW50cnlfNjQuUwpA QCAtMTc5LDcgKzE3OSw4IEBAIEdMT0JBTChlbnRyeV9TWVNDQUxMXzY0X2FmdGVyX3N3YXBncykK IAkgKiBJZiB3ZSBuZWVkIHRvIGRvIGVudHJ5IHdvcmsgb3IgaWYgd2UgZ3Vlc3Mgd2UnbGwgbmVl ZCB0byBkbwogCSAqIGV4aXQgd29yaywgZ28gc3RyYWlnaHQgdG8gdGhlIHNsb3cgcGF0aC4KIAkg Ki8KLQl0ZXN0bAkkX1RJRl9XT1JLX1NZU0NBTExfRU5UUll8X1RJRl9BTExXT1JLX01BU0ssIEFT TV9USFJFQURfSU5GTyhUSV9mbGFncywgJXJzcCwgU0laRU9GX1BUUkVHUykKKwlHRVRfVEhSRUFE X0lORk8oJXIxMSkKKwl0ZXN0bAkkX1RJRl9XT1JLX1NZU0NBTExfRU5UUll8X1RJRl9BTExXT1JL X01BU0ssIFRJX2ZsYWdzKCVyMTEpCiAJam56CWVudHJ5X1NZU0NBTEw2NF9zbG93X3BhdGgKIAog ZW50cnlfU1lTQ0FMTF82NF9mYXN0cGF0aDoKQEAgLTIxNyw3ICsyMTgsOCBAQCBlbnRyeV9TWVND QUxMXzY0X2Zhc3RwYXRoOgogCSAqLwogCURJU0FCTEVfSU5URVJSVVBUUyhDTEJSX05PTkUpCiAJ VFJBQ0VfSVJRU19PRkYKLQl0ZXN0bAkkX1RJRl9BTExXT1JLX01BU0ssIEFTTV9USFJFQURfSU5G TyhUSV9mbGFncywgJXJzcCwgU0laRU9GX1BUUkVHUykKKwlHRVRfVEhSRUFEX0lORk8oJXIxMSkK Kwl0ZXN0bAkkX1RJRl9BTExXT1JLX01BU0ssIFRJX2ZsYWdzKCVyMTEpCiAJam56CTFmCiAKIAlM T0NLREVQX1NZU19FWElUCkBAIC0zNjgsOSArMzcwLDEwIEBAIEVORChwdHJlZ3NfXGZ1bmMpCiAg KiBBIG5ld2x5IGZvcmtlZCBwcm9jZXNzIGRpcmVjdGx5IGNvbnRleHQgc3dpdGNoZXMgaW50byB0 aGlzIGFkZHJlc3MuCiAgKgogICogcmRpOiBwcmV2IHRhc2sgd2Ugc3dpdGNoZWQgZnJvbQorICog cnNpOiB0YXNrIHdlJ3JlIHN3aXRjaGluZyB0bwogICovCiBFTlRSWShyZXRfZnJvbV9mb3JrKQot CUxPQ0sgOyBidHIgJFRJRl9GT1JLLCBUSV9mbGFncyglcjgpCisJTE9DSyA7IGJ0ciAkVElGX0ZP UkssIFRJX2ZsYWdzKCVyc2kpCS8qIHJzaTogdGhpcyBuZXdseSBmb3JrZWQgdGFzayAqLwogCiAJ Y2FsbAlzY2hlZHVsZV90YWlsCQkJLyogcmRpOiAncHJldicgdGFzayBwYXJhbWV0ZXIgKi8KIApk aWZmIC0tZ2l0IGEvYXJjaC94ODYvaW5jbHVkZS9hc20vY3B1LmggYi9hcmNoL3g4Ni9pbmNsdWRl L2FzbS9jcHUuaAppbmRleCA2Nzg2MzdhZDc0NzYuLjU5ZDM0YzUyMWQ5NiAxMDA2NDQKLS0tIGEv YXJjaC94ODYvaW5jbHVkZS9hc20vY3B1LmgKKysrIGIvYXJjaC94ODYvaW5jbHVkZS9hc20vY3B1 LmgKQEAgLTE3LDcgKzE3LDYgQEAgc3RhdGljIGlubGluZSB2b2lkIHByZWZpbGxfcG9zc2libGVf bWFwKHZvaWQpIHt9CiAKICNkZWZpbmUgY3B1X3BoeXNpY2FsX2lkKGNwdSkJCQlib290X2NwdV9w aHlzaWNhbF9hcGljaWQKICNkZWZpbmUgc2FmZV9zbXBfcHJvY2Vzc29yX2lkKCkJCQkwCi0jZGVm aW5lIHN0YWNrX3NtcF9wcm9jZXNzb3JfaWQoKQkJMAogCiAjZW5kaWYgLyogQ09ORklHX1NNUCAq LwogCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rcHJvYmVzLmggYi9hcmNoL3g4 Ni9pbmNsdWRlL2FzbS9rcHJvYmVzLmgKaW5kZXggNDQyMWI1ZGE0MDlkLi4xZDI5OTdlNzRiMDgg MTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL2twcm9iZXMuaAorKysgYi9hcmNoL3g4 Ni9pbmNsdWRlL2FzbS9rcHJvYmVzLmgKQEAgLTM4LDEyICszOCwxMiBAQCB0eXBlZGVmIHU4IGtw cm9iZV9vcGNvZGVfdDsKICNkZWZpbmUgUkVMQVRJVkVDQUxMX09QQ09ERSAweGU4CiAjZGVmaW5l IFJFTEFUSVZFX0FERFJfU0laRSA0CiAjZGVmaW5lIE1BWF9TVEFDS19TSVpFIDY0Ci0jZGVmaW5l IE1JTl9TVEFDS19TSVpFKEFERFIpCQkJCQkgICAgICAgXAotCSgoKE1BWF9TVEFDS19TSVpFKSA8 ICgoKHVuc2lnbmVkIGxvbmcpY3VycmVudF90aHJlYWRfaW5mbygpKSArIFwKLQkJCSAgICAgIFRI UkVBRF9TSVpFIC0gKHVuc2lnbmVkIGxvbmcpKEFERFIpKSkgICAgXAotCSA/IChNQVhfU1RBQ0tf U0laRSkJCQkJCSAgICAgICBcCi0JIDogKCgodW5zaWduZWQgbG9uZyljdXJyZW50X3RocmVhZF9p bmZvKCkpICsJCSAgICAgICBcCi0JICAgIFRIUkVBRF9TSVpFIC0gKHVuc2lnbmVkIGxvbmcpKEFE RFIpKSkKKworI2RlZmluZSBjdXJyZW50X3N0YWNrX3RvcCgpICgodW5zaWduZWQgbG9uZyl0YXNr X3N0YWNrX3BhZ2UoY3VycmVudCkrVEhSRUFEX1NJWkUpCisjZGVmaW5lIGN1cnJlbnRfc3RhY2tf c2l6ZShBRERSKSAoY3VycmVudF9zdGFja190b3AoKSAtICh1bnNpZ25lZCBsb25nKShBRERSKSkK KworI2RlZmluZSBNSU5fU1RBQ0tfU0laRShBRERSKSBcCisJKE1BWF9TVEFDS19TSVpFIDwgY3Vy cmVudF9zdGFja19zaXplKEFERFIpID8gTUFYX1NUQUNLX1NJWkUgOiBjdXJyZW50X3N0YWNrX3Np emUoQUREUikpCiAKICNkZWZpbmUgZmx1c2hfaW5zbl9zbG90KHApCWRvIHsgfSB3aGlsZSAoMCkK IApkaWZmIC0tZ2l0IGEvYXJjaC94ODYvaW5jbHVkZS9hc20vc21wLmggYi9hcmNoL3g4Ni9pbmNs dWRlL2FzbS9zbXAuaAppbmRleCA2NmIwNTczMDZmNDAuLjA1NzZiNjE1N2YzYSAxMDA2NDQKLS0t IGEvYXJjaC94ODYvaW5jbHVkZS9hc20vc21wLmgKKysrIGIvYXJjaC94ODYvaW5jbHVkZS9hc20v c21wLmgKQEAgLTE3MiwxMiArMTcyLDYgQEAgZXh0ZXJuIGludCBzYWZlX3NtcF9wcm9jZXNzb3Jf aWQodm9pZCk7CiAjZWxpZiBkZWZpbmVkKENPTkZJR19YODZfNjRfU01QKQogI2RlZmluZSByYXdf c21wX3Byb2Nlc3Nvcl9pZCgpICh0aGlzX2NwdV9yZWFkKGNwdV9udW1iZXIpKQogCi0jZGVmaW5l IHN0YWNrX3NtcF9wcm9jZXNzb3JfaWQoKQkJCQkJXAotKHsJCQkJCQkJCVwKLQlzdHJ1Y3QgdGhy ZWFkX2luZm8gKnRpOwkJCQkJCVwKLQlfX2FzbV9fKCJhbmRxICUlcnNwLCUwOyAiOiI9ciIgKHRp KSA6ICIwIiAoQ1VSUkVOVF9NQVNLKSk7CVwKLQl0aS0+Y3B1OwkJCQkJCQlcCi19KQogI2RlZmlu ZSBzYWZlX3NtcF9wcm9jZXNzb3JfaWQoKQkJc21wX3Byb2Nlc3Nvcl9pZCgpCiAKICNlbmRpZgpk aWZmIC0tZ2l0IGEvYXJjaC94ODYvaW5jbHVkZS9hc20vc3dpdGNoX3RvLmggYi9hcmNoL3g4Ni9p bmNsdWRlL2FzbS9zd2l0Y2hfdG8uaAppbmRleCA4ZjMyMWExYjAzYTEuLmFlMGFhMDYxMmM2NyAx MDA2NDQKLS0tIGEvYXJjaC94ODYvaW5jbHVkZS9hc20vc3dpdGNoX3RvLmgKKysrIGIvYXJjaC94 ODYvaW5jbHVkZS9hc20vc3dpdGNoX3RvLmgKQEAgLTExMCwxOCArMTEwLDE2IEBAIGRvIHsJCQkJ CQkJCQlcCiAJICAgICAiY2FsbCBfX3N3aXRjaF90b1xuXHQiCQkJCQkgIFwKIAkgICAgICJtb3Zx ICJfX3BlcmNwdV9hcmcoW2N1cnJlbnRfdGFza10pIiwlJXJzaVxuXHQiCQkgIFwKIAkgICAgIF9f c3dpdGNoX2NhbmFyeQkJCQkJCSAgXAotCSAgICAgIm1vdnEgJVBbdGhyZWFkX2luZm9dKCUlcnNp KSwlJXI4XG5cdCIJCQkgIFwKIAkgICAgICJtb3ZxICUlcmF4LCUlcmRpXG5cdCIgCQkJCQkgIFwK LQkgICAgICJ0ZXN0bCAgJVtfdGlmX2ZvcmtdLCVQW3RpX2ZsYWdzXSglJXI4KVxuXHQiCQkgIFwK KwkgICAgICJ0ZXN0bCAgJVtfdGlmX2ZvcmtdLCVQW3RpX2ZsYWdzXSglJXJzaSlcblx0IgkJICBc CiAJICAgICAiam56ICAgcmV0X2Zyb21fZm9ya1xuXHQiCQkJCQkgIFwKIAkgICAgIFJFU1RPUkVf Q09OVEVYVAkJCQkJCSAgXAogCSAgICAgOiAiPWEiIChsYXN0KQkJCQkJICAJICBcCiAJICAgICAg IF9fc3dpdGNoX2NhbmFyeV9vcGFyYW0JCQkJCSAgXAogCSAgICAgOiBbbmV4dF0gIlMiIChuZXh0 KSwgW3ByZXZdICJEIiAocHJldiksCQkJICBcCiAJICAgICAgIFt0aHJlYWRyc3BdICJpIiAob2Zm c2V0b2Yoc3RydWN0IHRhc2tfc3RydWN0LCB0aHJlYWQuc3ApKSwgXAotCSAgICAgICBbdGlfZmxh Z3NdICJpIiAob2Zmc2V0b2Yoc3RydWN0IHRocmVhZF9pbmZvLCBmbGFncykpLAkgIFwKKwkgICAg ICAgW3RpX2ZsYWdzXSAiaSIgKG9mZnNldG9mKHN0cnVjdCB0YXNrX3N0cnVjdCwgdGhyZWFkX2lu Zm8uZmxhZ3MpKSwJICBcCiAJICAgICAgIFtfdGlmX2ZvcmtdICJpIiAoX1RJRl9GT1JLKSwJCQkg IAkgIFwKLQkgICAgICAgW3RocmVhZF9pbmZvXSAiaSIgKG9mZnNldG9mKHN0cnVjdCB0YXNrX3N0 cnVjdCwgc3RhY2spKSwgICBcCiAJICAgICAgIFtjdXJyZW50X3Rhc2tdICJtIiAoY3VycmVudF90 YXNrKQkJCSAgXAogCSAgICAgICBfX3N3aXRjaF9jYW5hcnlfaXBhcmFtCQkJCQkgIFwKIAkgICAg IDogIm1lbW9yeSIsICJjYyIgX19FWFRSQV9DTE9CQkVSKQpkaWZmIC0tZ2l0IGEvYXJjaC94ODYv aW5jbHVkZS9hc20vdGhyZWFkX2luZm8uaCBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL3RocmVhZF9p bmZvLmgKaW5kZXggMzBjMTMzYWMwNWNkLi5kMzhlYmIwOGY0YzEgMTAwNjQ0Ci0tLSBhL2FyY2gv eDg2L2luY2x1ZGUvYXNtL3RocmVhZF9pbmZvLmgKKysrIGIvYXJjaC94ODYvaW5jbHVkZS9hc20v dGhyZWFkX2luZm8uaApAQCAtNTMsMjQgKzUzLDIxIEBAIHN0cnVjdCB0YXNrX3N0cnVjdDsKICNp bmNsdWRlIDxsaW51eC9hdG9taWMuaD4KIAogc3RydWN0IHRocmVhZF9pbmZvIHsKLQlzdHJ1Y3Qg dGFza19zdHJ1Y3QJKnRhc2s7CQkvKiBtYWluIHRhc2sgc3RydWN0dXJlICovCiAJX191MzIJCQlm bGFnczsJCS8qIGxvdyBsZXZlbCBmbGFncyAqLwogCV9fdTMyCQkJc3RhdHVzOwkJLyogdGhyZWFk IHN5bmNocm9ub3VzIGZsYWdzICovCiAJX191MzIJCQljcHU7CQkvKiBjdXJyZW50IENQVSAqLwot CW1tX3NlZ21lbnRfdAkJYWRkcl9saW1pdDsKIAl1bnNpZ25lZCBpbnQJCXNpZ19vbl91YWNjZXNz X2Vycm9yOjE7CiAJdW5zaWduZWQgaW50CQl1YWNjZXNzX2VycjoxOwkvKiB1YWNjZXNzIGZhaWxl ZCAqLworCW1tX3NlZ21lbnRfdAkJYWRkcl9saW1pdDsKIH07CiAKICNkZWZpbmUgSU5JVF9USFJF QURfSU5GTyh0c2spCQkJXAogewkJCQkJCVwKLQkudGFzawkJPSAmdHNrLAkJCVwKIAkuZmxhZ3MJ CT0gMCwJCQlcCiAJLmNwdQkJPSAwLAkJCVwKIAkuYWRkcl9saW1pdAk9IEtFUk5FTF9EUywJCVwK IH0KIAotI2RlZmluZSBpbml0X3RocmVhZF9pbmZvCShpbml0X3RocmVhZF91bmlvbi50aHJlYWRf aW5mbykKICNkZWZpbmUgaW5pdF9zdGFjawkJKGluaXRfdGhyZWFkX3VuaW9uLnN0YWNrKQogCiAj ZWxzZSAvKiAhX19BU1NFTUJMWV9fICovCkBAIC0xNjYsNyArMTYzLDcgQEAgc3RydWN0IHRocmVh ZF9pbmZvIHsKIAogc3RhdGljIGlubGluZSBzdHJ1Y3QgdGhyZWFkX2luZm8gKmN1cnJlbnRfdGhy ZWFkX2luZm8odm9pZCkKIHsKLQlyZXR1cm4gKHN0cnVjdCB0aHJlYWRfaW5mbyAqKShjdXJyZW50 X3RvcF9vZl9zdGFjaygpIC0gVEhSRUFEX1NJWkUpOworCXJldHVybiAoc3RydWN0IHRocmVhZF9p bmZvICopY3VycmVudDsKIH0KIAogc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIGN1cnJlbnRf c3RhY2tfcG9pbnRlcih2b2lkKQpAQCAtMTg4LDM1ICsxODUsNyBAQCBzdGF0aWMgaW5saW5lIHVu c2lnbmVkIGxvbmcgY3VycmVudF9zdGFja19wb2ludGVyKHZvaWQpCiAKIC8qIExvYWQgdGhyZWFk X2luZm8gYWRkcmVzcyBpbnRvICJyZWciICovCiAjZGVmaW5lIEdFVF9USFJFQURfSU5GTyhyZWcp IFwKLQlfQVNNX01PViBQRVJfQ1BVX1ZBUihjcHVfY3VycmVudF90b3Bfb2Zfc3RhY2spLHJlZyA7 IFwKLQlfQVNNX1NVQiAkKFRIUkVBRF9TSVpFKSxyZWcgOwotCi0vKgotICogQVNNIG9wZXJhbmQg d2hpY2ggZXZhbHVhdGVzIHRvIGEgJ3RocmVhZF9pbmZvJyBhZGRyZXNzIG9mCi0gKiB0aGUgY3Vy cmVudCB0YXNrLCBpZiBpdCBpcyBrbm93biB0aGF0ICJyZWciIGlzIGV4YWN0bHkgIm9mZiIKLSAq IGJ5dGVzIGJlbG93IHRoZSB0b3Agb2YgdGhlIHN0YWNrIGN1cnJlbnRseS4KLSAqCi0gKiAoIFRo ZSBrZXJuZWwgc3RhY2sncyBzaXplIGlzIGtub3duIGF0IGJ1aWxkIHRpbWUsIGl0IGlzIHVzdWFs bHkKLSAqICAgMiBvciA0IHBhZ2VzLCBhbmQgdGhlIGJvdHRvbSAgb2YgdGhlIGtlcm5lbCBzdGFj ayBjb250YWlucwotICogICB0aGUgdGhyZWFkX2luZm8gc3RydWN0dXJlLiBTbyB0byBhY2Nlc3Mg dGhlIHRocmVhZF9pbmZvIHZlcnkKLSAqICAgcXVpY2tseSBmcm9tIGFzc2VtYmx5IGNvZGUgd2Ug Y2FuIGNhbGN1bGF0ZSBkb3duIGZyb20gdGhlCi0gKiAgIHRvcCBvZiB0aGUga2VybmVsIHN0YWNr IHRvIHRoZSBib3R0b20sIHVzaW5nIGNvbnN0YW50LAotICogICBidWlsZC10aW1lIGNhbGN1bGF0 aW9ucyBvbmx5LiApCi0gKgotICogRm9yIGV4YW1wbGUsIHRvIGZldGNoIHRoZSBjdXJyZW50IHRo cmVhZF9pbmZvLT5mbGFncyB2YWx1ZSBpbnRvICVlYXgKLSAqIG9uIHg4Ni02NCBkZWZjb25maWcg a2VybmVscywgaW4gc3lzY2FsbCBlbnRyeSBjb2RlIHdoZXJlIFJTUCBpcwotICogY3VycmVudGx5 IGF0IGV4YWN0bHkgU0laRU9GX1BUUkVHUyBieXRlcyBhd2F5IGZyb20gdGhlIHRvcCBvZiB0aGUK LSAqIHN0YWNrOgotICoKLSAqICAgICAgbW92IEFTTV9USFJFQURfSU5GTyhUSV9mbGFncywgJXJz cCwgU0laRU9GX1BUUkVHUyksICVlYXgKLSAqCi0gKiB3aWxsIHRyYW5zbGF0ZSB0bzoKLSAqCi0g KiAgICAgIDhiIDg0IDI0IGI4IGMwIGZmIGZmICAgICAgbW92ICAgIC0weDNmNDgoJXJzcCksICVl YXgKLSAqCi0gKiB3aGljaCBpcyBiZWxvdyB0aGUgY3VycmVudCBSU1AgYnkgYWxtb3N0IDE2Sy4K LSAqLwotI2RlZmluZSBBU01fVEhSRUFEX0lORk8oZmllbGQsIHJlZywgb2ZmKSAoKGZpZWxkKSso b2ZmKS1USFJFQURfU0laRSkocmVnKQorCV9BU01fTU9WIFBFUl9DUFVfVkFSKGN1cnJlbnRfdGFz aykscmVnCiAKICNlbmRpZgogCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rZXJuZWwvY3B1L2NvbW1v bi5jIGIvYXJjaC94ODYva2VybmVsL2NwdS9jb21tb24uYwppbmRleCAwZmU2OTUzZjQyMWMuLmQy MmE3YjljNGYwZSAxMDA2NDQKLS0tIGEvYXJjaC94ODYva2VybmVsL2NwdS9jb21tb24uYworKysg Yi9hcmNoL3g4Ni9rZXJuZWwvY3B1L2NvbW1vbi5jCkBAIC0xNDUyLDcgKzE0NTIsNyBAQCB2b2lk IGNwdV9pbml0KHZvaWQpCiAJc3RydWN0IHRhc2tfc3RydWN0ICptZTsKIAlzdHJ1Y3QgdHNzX3N0 cnVjdCAqdDsKIAl1bnNpZ25lZCBsb25nIHY7Ci0JaW50IGNwdSA9IHN0YWNrX3NtcF9wcm9jZXNz b3JfaWQoKTsKKwlpbnQgY3B1ID0gcmF3X3NtcF9wcm9jZXNzb3JfaWQoKTsKIAlpbnQgaTsKIAog CXdhaXRfZm9yX21hc3Rlcl9jcHUoY3B1KTsKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2tlcm5lbC9k dW1wc3RhY2suYyBiL2FyY2gveDg2L2tlcm5lbC9kdW1wc3RhY2suYwppbmRleCBkNjIwOWYzYTY5 Y2IuLmVmODAxN2NhNWJhOSAxMDA2NDQKLS0tIGEvYXJjaC94ODYva2VybmVsL2R1bXBzdGFjay5j CisrKyBiL2FyY2gveDg2L2tlcm5lbC9kdW1wc3RhY2suYwpAQCAtODAsNyArODAsNyBAQCBwcmlu dF9mdHJhY2VfZ3JhcGhfYWRkcih1bnNpZ25lZCBsb25nIGFkZHIsIHZvaWQgKmRhdGEsCiBzdGF0 aWMgaW5saW5lIGludCB2YWxpZF9zdGFja19wdHIoc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrLAog CQkJdm9pZCAqcCwgdW5zaWduZWQgaW50IHNpemUsIHZvaWQgKmVuZCkKIHsKLQl2b2lkICp0ID0g dGFza190aHJlYWRfaW5mbyh0YXNrKTsKKwl2b2lkICp0ID0gdGFza19zdGFja19wYWdlKHRhc2sp OwogCWlmIChlbmQpIHsKIAkJaWYgKHAgPCBlbmQgJiYgcCA+PSAoZW5kLVRIUkVBRF9TSVpFKSkK IAkJCXJldHVybiAxOwpkaWZmIC0tZ2l0IGEvYXJjaC94ODYva2VybmVsL2lycV8zMi5jIGIvYXJj aC94ODYva2VybmVsL2lycV8zMi5jCmluZGV4IDM4ZGE4ZjI5YTljOC4uYzYyN2JmOGQ5OGFkIDEw MDY0NAotLS0gYS9hcmNoL3g4Ni9rZXJuZWwvaXJxXzMyLmMKKysrIGIvYXJjaC94ODYva2VybmVs L2lycV8zMi5jCkBAIC0xMzAsMTEgKzEzMCw5IEBAIHZvaWQgaXJxX2N0eF9pbml0KGludCBjcHUp CiAKIHZvaWQgZG9fc29mdGlycV9vd25fc3RhY2sodm9pZCkKIHsKLQlzdHJ1Y3QgdGhyZWFkX2lu Zm8gKmN1cnN0azsKIAlzdHJ1Y3QgaXJxX3N0YWNrICppcnFzdGs7CiAJdTMyICppc3AsICpwcmV2 X2VzcDsKIAotCWN1cnN0ayA9IGN1cnJlbnRfc3RhY2soKTsKIAlpcnFzdGsgPSBfX3RoaXNfY3B1 X3JlYWQoc29mdGlycV9zdGFjayk7CiAKIAkvKiBidWlsZCB0aGUgc3RhY2sgZnJhbWUgb24gdGhl IHNvZnRpcnEgc3RhY2sgKi8KZGlmZiAtLWdpdCBhL2FyY2gveDg2L2tlcm5lbC9pcnFfNjQuYyBi L2FyY2gveDg2L2tlcm5lbC9pcnFfNjQuYwppbmRleCAyMDZkMGI5MGEzYWIuLjM4ZjlmNTY3OGRj OCAxMDA2NDQKLS0tIGEvYXJjaC94ODYva2VybmVsL2lycV82NC5jCisrKyBiL2FyY2gveDg2L2tl cm5lbC9pcnFfNjQuYwpAQCAtNDEsOCArNDEsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgc3RhY2tf b3ZlcmZsb3dfY2hlY2soc3RydWN0IHB0X3JlZ3MgKnJlZ3MpCiAJaWYgKHVzZXJfbW9kZShyZWdz KSkKIAkJcmV0dXJuOwogCi0JaWYgKHJlZ3MtPnNwID49IGN1cmJhc2UgKyBzaXplb2Yoc3RydWN0 IHRocmVhZF9pbmZvKSArCi0JCQkJICBzaXplb2Yoc3RydWN0IHB0X3JlZ3MpICsgU1RBQ0tfVE9Q X01BUkdJTiAmJgorCWlmIChyZWdzLT5zcCA+PSBjdXJiYXNlICsgc2l6ZW9mKHN0cnVjdCBwdF9y ZWdzKSArIFNUQUNLX1RPUF9NQVJHSU4gJiYKIAkgICAgcmVncy0+c3AgPD0gY3VyYmFzZSArIFRI UkVBRF9TSVpFKQogCQlyZXR1cm47CiAKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2tlcm5lbC9wcm9j ZXNzLmMgYi9hcmNoL3g4Ni9rZXJuZWwvcHJvY2Vzcy5jCmluZGV4IDk2YmVjYmJiNTJlMC4uOGY2 MGY4MTBhOWU3IDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9rZXJuZWwvcHJvY2Vzcy5jCisrKyBiL2Fy Y2gveDg2L2tlcm5lbC9wcm9jZXNzLmMKQEAgLTUzNiw5ICs1MzYsNyBAQCB1bnNpZ25lZCBsb25n IGdldF93Y2hhbihzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApCiAJICogUEFERElORwogCSAqIC0tLS0t LS0tLS0tIHRvcCA9IHRvcG1heCAtIFRPUF9PRl9LRVJORUxfU1RBQ0tfUEFERElORwogCSAqIHN0 YWNrCi0JICogLS0tLS0tLS0tLS0gYm90dG9tID0gc3RhcnQgKyBzaXplb2YodGhyZWFkX2luZm8p Ci0JICogdGhyZWFkX2luZm8KLQkgKiAtLS0tLS0tLS0tLSBzdGFydAorCSAqIC0tLS0tLS0tLS0t IGJvdHRvbSA9IHN0YXJ0CiAJICoKIAkgKiBUaGUgdGFza3Mgc3RhY2sgcG9pbnRlciBwb2ludHMg YXQgdGhlIGxvY2F0aW9uIHdoZXJlIHRoZQogCSAqIGZyYW1lcG9pbnRlciBpcyBzdG9yZWQuIFRo ZSBkYXRhIG9uIHRoZSBzdGFjayBpczoKQEAgLTU0OSw3ICs1NDcsNyBAQCB1bnNpZ25lZCBsb25n IGdldF93Y2hhbihzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApCiAJICovCiAJdG9wID0gc3RhcnQgKyBU SFJFQURfU0laRSAtIFRPUF9PRl9LRVJORUxfU1RBQ0tfUEFERElORzsKIAl0b3AgLT0gMiAqIHNp emVvZih1bnNpZ25lZCBsb25nKTsKLQlib3R0b20gPSBzdGFydCArIHNpemVvZihzdHJ1Y3QgdGhy ZWFkX2luZm8pOworCWJvdHRvbSA9IHN0YXJ0OwogCiAJc3AgPSBSRUFEX09OQ0UocC0+dGhyZWFk LnNwKTsKIAlpZiAoc3AgPCBib3R0b20gfHwgc3AgPiB0b3ApCmRpZmYgLS1naXQgYS9hcmNoL3g4 Ni91bS9wdHJhY2VfMzIuYyBiL2FyY2gveDg2L3VtL3B0cmFjZV8zMi5jCmluZGV4IGViZDRkZDZl ZjczYi4uMTRlOGY2YTYyOGMyIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni91bS9wdHJhY2VfMzIuYwor KysgYi9hcmNoL3g4Ni91bS9wdHJhY2VfMzIuYwpAQCAtMTkxLDcgKzE5MSw3IEBAIGludCBwZWVr X3VzZXIoc3RydWN0IHRhc2tfc3RydWN0ICpjaGlsZCwgbG9uZyBhZGRyLCBsb25nIGRhdGEpCiAK IHN0YXRpYyBpbnQgZ2V0X2ZwcmVncyhzdHJ1Y3QgdXNlcl9pMzg3X3N0cnVjdCBfX3VzZXIgKmJ1 Ziwgc3RydWN0IHRhc2tfc3RydWN0ICpjaGlsZCkKIHsKLQlpbnQgZXJyLCBuLCBjcHUgPSAoKHN0 cnVjdCB0aHJlYWRfaW5mbyAqKSBjaGlsZC0+c3RhY2spLT5jcHU7CisJaW50IGVyciwgbiwgY3B1 ID0gdGFza190aHJlYWRfaW5mbyhjaGlsZCktPmNwdTsKIAlzdHJ1Y3QgdXNlcl9pMzg3X3N0cnVj dCBmcHJlZ3M7CiAKIAllcnIgPSBzYXZlX2kzODdfcmVnaXN0ZXJzKHVzZXJzcGFjZV9waWRbY3B1 XSwKQEAgLTIwOCw3ICsyMDgsNyBAQCBzdGF0aWMgaW50IGdldF9mcHJlZ3Moc3RydWN0IHVzZXJf aTM4N19zdHJ1Y3QgX191c2VyICpidWYsIHN0cnVjdCB0YXNrX3N0cnVjdCAqYwogCiBzdGF0aWMg aW50IHNldF9mcHJlZ3Moc3RydWN0IHVzZXJfaTM4N19zdHJ1Y3QgX191c2VyICpidWYsIHN0cnVj dCB0YXNrX3N0cnVjdCAqY2hpbGQpCiB7Ci0JaW50IG4sIGNwdSA9ICgoc3RydWN0IHRocmVhZF9p bmZvICopIGNoaWxkLT5zdGFjayktPmNwdTsKKwlpbnQgbiwgY3B1ID0gdGFza190aHJlYWRfaW5m byhjaGlsZCktPmNwdTsKIAlzdHJ1Y3QgdXNlcl9pMzg3X3N0cnVjdCBmcHJlZ3M7CiAKIAluID0g Y29weV9mcm9tX3VzZXIoJmZwcmVncywgYnVmLCBzaXplb2YoZnByZWdzKSk7CkBAIC0yMjEsNyAr MjIxLDcgQEAgc3RhdGljIGludCBzZXRfZnByZWdzKHN0cnVjdCB1c2VyX2kzODdfc3RydWN0IF9f dXNlciAqYnVmLCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKmMKIAogc3RhdGljIGludCBnZXRfZnB4cmVn cyhzdHJ1Y3QgdXNlcl9meHNyX3N0cnVjdCBfX3VzZXIgKmJ1Ziwgc3RydWN0IHRhc2tfc3RydWN0 ICpjaGlsZCkKIHsKLQlpbnQgZXJyLCBuLCBjcHUgPSAoKHN0cnVjdCB0aHJlYWRfaW5mbyAqKSBj aGlsZC0+c3RhY2spLT5jcHU7CisJaW50IGVyciwgbiwgY3B1ID0gdGFza190aHJlYWRfaW5mbyhj aGlsZCktPmNwdTsKIAlzdHJ1Y3QgdXNlcl9meHNyX3N0cnVjdCBmcHJlZ3M7CiAKIAllcnIgPSBz YXZlX2ZweF9yZWdpc3RlcnModXNlcnNwYWNlX3BpZFtjcHVdLCAodW5zaWduZWQgbG9uZyAqKSAm ZnByZWdzKTsKQEAgLTIzNyw3ICsyMzcsNyBAQCBzdGF0aWMgaW50IGdldF9mcHhyZWdzKHN0cnVj dCB1c2VyX2Z4c3Jfc3RydWN0IF9fdXNlciAqYnVmLCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKgogCiBz dGF0aWMgaW50IHNldF9mcHhyZWdzKHN0cnVjdCB1c2VyX2Z4c3Jfc3RydWN0IF9fdXNlciAqYnVm LCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKmNoaWxkKQogewotCWludCBuLCBjcHUgPSAoKHN0cnVjdCB0 aHJlYWRfaW5mbyAqKSBjaGlsZC0+c3RhY2spLT5jcHU7CisJaW50IG4sIGNwdSA9IHRhc2tfdGhy ZWFkX2luZm8oY2hpbGQpLT5jcHU7CiAJc3RydWN0IHVzZXJfZnhzcl9zdHJ1Y3QgZnByZWdzOwog CiAJbiA9IGNvcHlfZnJvbV91c2VyKCZmcHJlZ3MsIGJ1Ziwgc2l6ZW9mKGZwcmVncykpOwpkaWZm IC0tZ2l0IGEvaW5jbHVkZS9saW51eC9pbml0X3Rhc2suaCBiL2luY2x1ZGUvbGludXgvaW5pdF90 YXNrLmgKaW5kZXggZjJjYjhkNDU1MTNkLi45YzA0ZDQ0ZWViM2MgMTAwNjQ0Ci0tLSBhL2luY2x1 ZGUvbGludXgvaW5pdF90YXNrLmgKKysrIGIvaW5jbHVkZS9saW51eC9pbml0X3Rhc2suaApAQCAt MTUsNiArMTUsOCBAQAogI2luY2x1ZGUgPG5ldC9uZXRfbmFtZXNwYWNlLmg+CiAjaW5jbHVkZSA8 bGludXgvc2NoZWQvcnQuaD4KIAorI2luY2x1ZGUgPGFzbS90aHJlYWRfaW5mby5oPgorCiAjaWZk ZWYgQ09ORklHX1NNUAogIyBkZWZpbmUgSU5JVF9QVVNIQUJMRV9UQVNLUyh0c2spCQkJCQlcCiAJ LnB1c2hhYmxlX3Rhc2tzID0gUExJU1RfTk9ERV9JTklUKHRzay5wdXNoYWJsZV90YXNrcywgTUFY X1BSSU8pLApAQCAtMTgzLDE0ICsxODUsMjEgQEAgZXh0ZXJuIHN0cnVjdCB0YXNrX2dyb3VwIHJv b3RfdGFza19ncm91cDsKICMgZGVmaW5lIElOSVRfS0FTQU4odHNrKQogI2VuZGlmCiAKKyNpZmRl ZiBDT05GSUdfVEhSRUFEX0lORk9fSU5fVEFTSworIyBkZWZpbmUgSU5JVF9UQVNLX1RJKHRzaykg LnRocmVhZF9pbmZvID0gSU5JVF9USFJFQURfSU5GTyh0c2spLAorI2Vsc2UKKyMgZGVmaW5lIElO SVRfVEFTS19USSh0c2spCisjZW5kaWYKKwogLyoKICAqICBJTklUX1RBU0sgaXMgdXNlZCB0byBz ZXQgdXAgdGhlIGZpcnN0IHRhc2sgdGFibGUsIHRvdWNoIGF0CiAgKiB5b3VyIG93biByaXNrIS4g QmFzZT0wLCBsaW1pdD0weDFmZmZmZiAoPTJNQikKICAqLwogI2RlZmluZSBJTklUX1RBU0sodHNr KQlcCiB7CQkJCQkJCQkJXAorCUlOSVRfVEFTS19USSh0c2spCQkJCQkJXAogCS5zdGF0ZQkJPSAw LAkJCQkJCVwKLQkuc3RhY2sJCT0gJmluaXRfdGhyZWFkX2luZm8sCQkJCVwKKwkuc3RhY2sJCT0g aW5pdF9zdGFjaywJCQkJCVwKIAkudXNhZ2UJCT0gQVRPTUlDX0lOSVQoMiksCQkJCVwKIAkuZmxh Z3MJCT0gUEZfS1RIUkVBRCwJCQkJCVwKIAkucHJpbwkJPSBNQVhfUFJJTy0yMCwJCQkJCVwKZGlm ZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvc2NoZWQuaCBiL2luY2x1ZGUvbGludXgvc2NoZWQuaApp bmRleCA2ZTQyYWRhMjYzNDUuLjc0M2YwMzA3YmY0YSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51 eC9zY2hlZC5oCisrKyBiL2luY2x1ZGUvbGludXgvc2NoZWQuaApAQCAtMTQ1Niw4ICsxNDU2LDEx IEBAIHN0cnVjdCB0bGJmbHVzaF91bm1hcF9iYXRjaCB7CiB9OwogCiBzdHJ1Y3QgdGFza19zdHJ1 Y3QgeworI2lmZGVmIENPTkZJR19USFJFQURfSU5GT19JTl9UQVNLCisJc3RydWN0IHRocmVhZF9p bmZvIHRocmVhZF9pbmZvOworI2VuZGlmCiAJdm9sYXRpbGUgbG9uZyBzdGF0ZTsJLyogLTEgdW5y dW5uYWJsZSwgMCBydW5uYWJsZSwgPjAgc3RvcHBlZCAqLwotCXZvaWQgKnN0YWNrOworCXVuc2ln bmVkIGxvbmcgKnN0YWNrOwogCWF0b21pY190IHVzYWdlOwogCXVuc2lnbmVkIGludCBmbGFnczsJ LyogcGVyIHByb2Nlc3MgZmxhZ3MsIGRlZmluZWQgYmVsb3cgKi8KIAl1bnNpZ25lZCBpbnQgcHRy YWNlOwpAQCAtMjUzOSw3ICsyNTQyLDkgQEAgZXh0ZXJuIHZvaWQgc2V0X2N1cnJfdGFzayhpbnQg Y3B1LCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApOwogdm9pZCB5aWVsZCh2b2lkKTsKIAogdW5pb24g dGhyZWFkX3VuaW9uIHsKKyNpZm5kZWYgQ09ORklHX1RIUkVBRF9JTkZPX0lOX1RBU0sKIAlzdHJ1 Y3QgdGhyZWFkX2luZm8gdGhyZWFkX2luZm87CisjZW5kaWYKIAl1bnNpZ25lZCBsb25nIHN0YWNr W1RIUkVBRF9TSVpFL3NpemVvZihsb25nKV07CiB9OwogCkBAIC0yOTY3LDEwICsyOTcyLDE3IEBA IHN0YXRpYyBpbmxpbmUgdm9pZCB0aHJlYWRncm91cF9jaGFuZ2VfZW5kKHN0cnVjdCB0YXNrX3N0 cnVjdCAqdHNrKQogCWNncm91cF90aHJlYWRncm91cF9jaGFuZ2VfZW5kKHRzayk7CiB9CiAKLSNp Zm5kZWYgX19IQVZFX1RIUkVBRF9GVU5DVElPTlMKKyNpZmRlZiBDT05GSUdfVEhSRUFEX0lORk9f SU5fVEFTSworCisjZGVmaW5lIHRhc2tfdGhyZWFkX2luZm8odGFzaykJCSgmKHRhc2spLT50aHJl YWRfaW5mbykKKyNkZWZpbmUgdGFza19zdGFja19wYWdlKHRhc2spCQkoKHZvaWQgKikodGFzaykt PnN0YWNrKQorI2RlZmluZSBzZXR1cF90aHJlYWRfc3RhY2sobmV3LG9sZCkJZG8geyB9IHdoaWxl KDApCisjZGVmaW5lIGVuZF9vZl9zdGFjayh0YXNrKQkJKCh0YXNrKS0+c3RhY2spCisKKyNlbGlm ICFkZWZpbmVkKF9fSEFWRV9USFJFQURfRlVOQ1RJT05TKQogCiAjZGVmaW5lIHRhc2tfdGhyZWFk X2luZm8odGFzaykJKChzdHJ1Y3QgdGhyZWFkX2luZm8gKikodGFzayktPnN0YWNrKQotI2RlZmlu ZSB0YXNrX3N0YWNrX3BhZ2UodGFzaykJKCh0YXNrKS0+c3RhY2spCisjZGVmaW5lIHRhc2tfc3Rh Y2tfcGFnZSh0YXNrKQkoKHZvaWQgKikodGFzayktPnN0YWNrKQogCiBzdGF0aWMgaW5saW5lIHZv aWQgc2V0dXBfdGhyZWFkX3N0YWNrKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCwgc3RydWN0IHRhc2tf c3RydWN0ICpvcmcpCiB7CmRpZmYgLS1naXQgYS9pbml0L0tjb25maWcgYi9pbml0L0tjb25maWcK aW5kZXggZjc1NWE2MDJkNGExLi4wYzgzYWY2ZDM3NTMgMTAwNjQ0Ci0tLSBhL2luaXQvS2NvbmZp ZworKysgYi9pbml0L0tjb25maWcKQEAgLTI2LDYgKzI2LDkgQEAgY29uZmlnIElSUV9XT1JLCiBj b25maWcgQlVJTERUSU1FX0VYVEFCTEVfU09SVAogCWJvb2wKIAorY29uZmlnIFRIUkVBRF9JTkZP X0lOX1RBU0sKKwlib29sCisKIG1lbnUgIkdlbmVyYWwgc2V0dXAiCiAKIGNvbmZpZyBCUk9LRU4K ZGlmZiAtLWdpdCBhL2luaXQvaW5pdF90YXNrLmMgYi9pbml0L2luaXRfdGFzay5jCmluZGV4IGJh MGE3ZjM2MmQ5ZS4uMTFmODNiZTFmYTc5IDEwMDY0NAotLS0gYS9pbml0L2luaXRfdGFzay5jCisr KyBiL2luaXQvaW5pdF90YXNrLmMKQEAgLTIyLDUgKzIyLDggQEAgRVhQT1JUX1NZTUJPTChpbml0 X3Rhc2spOwogICogSW5pdGlhbCB0aHJlYWQgc3RydWN0dXJlLiBBbGlnbm1lbnQgb2YgdGhpcyBp cyBoYW5kbGVkIGJ5IGEgc3BlY2lhbAogICogbGlua2VyIG1hcCBlbnRyeS4KICAqLwotdW5pb24g dGhyZWFkX3VuaW9uIGluaXRfdGhyZWFkX3VuaW9uIF9faW5pdF90YXNrX2RhdGEgPQotCXsgSU5J VF9USFJFQURfSU5GTyhpbml0X3Rhc2spIH07Cit1bmlvbiB0aHJlYWRfdW5pb24gaW5pdF90aHJl YWRfdW5pb24gX19pbml0X3Rhc2tfZGF0YSA9IHsKKyNpZm5kZWYgQ09ORklHX1RIUkVBRF9JTkZP X0lOX1RBU0sKKwlJTklUX1RIUkVBRF9JTkZPKGluaXRfdGFzaykKKyNlbmRpZgorfTsKZGlmZiAt LWdpdCBhL2tlcm5lbC9mb3JrLmMgYi9rZXJuZWwvZm9yay5jCmluZGV4IDVjMmMzNTVhYTk3Zi4u OWYyOTAyMjZkOWQ1IDEwMDY0NAotLS0gYS9rZXJuZWwvZm9yay5jCisrKyBiL2tlcm5lbC9mb3Jr LmMKQEAgLTE0OCw3ICsxNDgsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZnJlZV90YXNrX3N0cnVj dChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaykKIH0KICNlbmRpZgogCi12b2lkIF9fd2VhayBhcmNo X3JlbGVhc2VfdGhyZWFkX2luZm8oc3RydWN0IHRocmVhZF9pbmZvICp0aSkKK3ZvaWQgX193ZWFr IGFyY2hfcmVsZWFzZV90aHJlYWRfc3RhY2sodW5zaWduZWQgbG9uZyAqc3RhY2spCiB7CiB9CiAK QEAgLTE1OSw3ICsxNTksNyBAQCB2b2lkIF9fd2VhayBhcmNoX3JlbGVhc2VfdGhyZWFkX2luZm8o c3RydWN0IHRocmVhZF9pbmZvICp0aSkKICAqIGttZW1jYWNoZSBiYXNlZCBhbGxvY2F0b3IuCiAg Ki8KICMgaWYgVEhSRUFEX1NJWkUgPj0gUEFHRV9TSVpFCi1zdGF0aWMgc3RydWN0IHRocmVhZF9p bmZvICphbGxvY190aHJlYWRfaW5mb19ub2RlKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrLAorc3Rh dGljIHVuc2lnbmVkIGxvbmcgKmFsbG9jX3RocmVhZF9zdGFja19ub2RlKHN0cnVjdCB0YXNrX3N0 cnVjdCAqdHNrLAogCQkJCQkJICBpbnQgbm9kZSkKIHsKIAlzdHJ1Y3QgcGFnZSAqcGFnZSA9IGFs bG9jX2ttZW1fcGFnZXNfbm9kZShub2RlLCBUSFJFQURJTkZPX0dGUCwKQEAgLTE3MiwzMSArMTcy LDMxIEBAIHN0YXRpYyBzdHJ1Y3QgdGhyZWFkX2luZm8gKmFsbG9jX3RocmVhZF9pbmZvX25vZGUo c3RydWN0IHRhc2tfc3RydWN0ICp0c2ssCiAJcmV0dXJuIHBhZ2UgPyBwYWdlX2FkZHJlc3MocGFn ZSkgOiBOVUxMOwogfQogCi1zdGF0aWMgaW5saW5lIHZvaWQgZnJlZV90aHJlYWRfaW5mbyhzdHJ1 Y3QgdGhyZWFkX2luZm8gKnRpKQorc3RhdGljIGlubGluZSB2b2lkIGZyZWVfdGhyZWFkX3N0YWNr KHVuc2lnbmVkIGxvbmcgKnN0YWNrKQogewotCXN0cnVjdCBwYWdlICpwYWdlID0gdmlydF90b19w YWdlKHRpKTsKKwlzdHJ1Y3QgcGFnZSAqcGFnZSA9IHZpcnRfdG9fcGFnZShzdGFjayk7CiAKIAlt ZW1jZ19rbWVtX3VwZGF0ZV9wYWdlX3N0YXQocGFnZSwgTUVNQ0dfS0VSTkVMX1NUQUNLLAogCQkJ CSAgICAtKDEgPDwgVEhSRUFEX1NJWkVfT1JERVIpKTsKIAlfX2ZyZWVfa21lbV9wYWdlcyhwYWdl LCBUSFJFQURfU0laRV9PUkRFUik7CiB9CiAjIGVsc2UKLXN0YXRpYyBzdHJ1Y3Qga21lbV9jYWNo ZSAqdGhyZWFkX2luZm9fY2FjaGU7CitzdGF0aWMgc3RydWN0IGttZW1fY2FjaGUgKnRocmVhZF9z dGFja19jYWNoZTsKIAotc3RhdGljIHN0cnVjdCB0aHJlYWRfaW5mbyAqYWxsb2NfdGhyZWFkX2lu Zm9fbm9kZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaywKK3N0YXRpYyBzdHJ1Y3QgdGhyZWFkX2lu Zm8gKmFsbG9jX3RocmVhZF9zdGFja19ub2RlKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrLAogCQkJ CQkJICBpbnQgbm9kZSkKIHsKLQlyZXR1cm4ga21lbV9jYWNoZV9hbGxvY19ub2RlKHRocmVhZF9p bmZvX2NhY2hlLCBUSFJFQURJTkZPX0dGUCwgbm9kZSk7CisJcmV0dXJuIGttZW1fY2FjaGVfYWxs b2Nfbm9kZSh0aHJlYWRfc3RhY2tfY2FjaGUsIFRIUkVBRElORk9fR0ZQLCBub2RlKTsKIH0KIAot c3RhdGljIHZvaWQgZnJlZV90aHJlYWRfaW5mbyhzdHJ1Y3QgdGhyZWFkX2luZm8gKnRpKQorc3Rh dGljIHZvaWQgZnJlZV9zdGFjayh1bnNpZ25lZCBsb25nICpzdGFjaykKIHsKLQlrbWVtX2NhY2hl X2ZyZWUodGhyZWFkX2luZm9fY2FjaGUsIHRpKTsKKwlrbWVtX2NhY2hlX2ZyZWUodGhyZWFkX3N0 YWNrX2NhY2hlLCBzdGFjayk7CiB9CiAKIHZvaWQgdGhyZWFkX2luZm9fY2FjaGVfaW5pdCh2b2lk KQogewotCXRocmVhZF9pbmZvX2NhY2hlID0ga21lbV9jYWNoZV9jcmVhdGUoInRocmVhZF9pbmZv IiwgVEhSRUFEX1NJWkUsCisJdGhyZWFkX3N0YWNrX2NhY2hlID0ga21lbV9jYWNoZV9jcmVhdGUo InRocmVhZF9zdGFjayIsIFRIUkVBRF9TSVpFLAogCQkJCQkgICAgICBUSFJFQURfU0laRSwgMCwg TlVMTCk7CiAJQlVHX09OKHRocmVhZF9pbmZvX2NhY2hlID09IE5VTEwpOwogfQpAQCAtMjIxLDkg KzIyMSw5IEBAIHN0cnVjdCBrbWVtX2NhY2hlICp2bV9hcmVhX2NhY2hlcDsKIC8qIFNMQUIgY2Fj aGUgZm9yIG1tX3N0cnVjdCBzdHJ1Y3R1cmVzICh0c2stPm1tKSAqLwogc3RhdGljIHN0cnVjdCBr bWVtX2NhY2hlICptbV9jYWNoZXA7CiAKLXN0YXRpYyB2b2lkIGFjY291bnRfa2VybmVsX3N0YWNr KHN0cnVjdCB0aHJlYWRfaW5mbyAqdGksIGludCBhY2NvdW50KQorc3RhdGljIHZvaWQgYWNjb3Vu dF9rZXJuZWxfc3RhY2sodW5zaWduZWQgbG9uZyAqc3RhY2ssIGludCBhY2NvdW50KQogewotCXN0 cnVjdCB6b25lICp6b25lID0gcGFnZV96b25lKHZpcnRfdG9fcGFnZSh0aSkpOworCXN0cnVjdCB6 b25lICp6b25lID0gcGFnZV96b25lKHZpcnRfdG9fcGFnZShzdGFjaykpOwogCiAJbW9kX3pvbmVf cGFnZV9zdGF0ZSh6b25lLCBOUl9LRVJORUxfU1RBQ0ssIGFjY291bnQpOwogfQpAQCAtMjMxLDgg KzIzMSw4IEBAIHN0YXRpYyB2b2lkIGFjY291bnRfa2VybmVsX3N0YWNrKHN0cnVjdCB0aHJlYWRf aW5mbyAqdGksIGludCBhY2NvdW50KQogdm9pZCBmcmVlX3Rhc2soc3RydWN0IHRhc2tfc3RydWN0 ICp0c2spCiB7CiAJYWNjb3VudF9rZXJuZWxfc3RhY2sodHNrLT5zdGFjaywgLTEpOwotCWFyY2hf cmVsZWFzZV90aHJlYWRfaW5mbyh0c2stPnN0YWNrKTsKLQlmcmVlX3RocmVhZF9pbmZvKHRzay0+ c3RhY2spOworCWFyY2hfcmVsZWFzZV90aHJlYWRfc3RhY2sodHNrLT5zdGFjayk7CisJZnJlZV90 aHJlYWRfc3RhY2sodHNrLT5zdGFjayk7CiAJcnRfbXV0ZXhfZGVidWdfdGFza19mcmVlKHRzayk7 CiAJZnRyYWNlX2dyYXBoX2V4aXRfdGFzayh0c2spOwogCXB1dF9zZWNjb21wX2ZpbHRlcih0c2sp OwpAQCAtMzQzLDcgKzM0Myw3IEBAIHZvaWQgc2V0X3Rhc2tfc3RhY2tfZW5kX21hZ2ljKHN0cnVj dCB0YXNrX3N0cnVjdCAqdHNrKQogc3RhdGljIHN0cnVjdCB0YXNrX3N0cnVjdCAqZHVwX3Rhc2tf c3RydWN0KHN0cnVjdCB0YXNrX3N0cnVjdCAqb3JpZywgaW50IG5vZGUpCiB7CiAJc3RydWN0IHRh c2tfc3RydWN0ICp0c2s7Ci0Jc3RydWN0IHRocmVhZF9pbmZvICp0aTsKKwl1bnNpZ25lZCBsb25n ICpzdGFjazsKIAlpbnQgZXJyOwogCiAJaWYgKG5vZGUgPT0gTlVNQV9OT19OT0RFKQpAQCAtMzUy LDE1ICszNTIsMTUgQEAgc3RhdGljIHN0cnVjdCB0YXNrX3N0cnVjdCAqZHVwX3Rhc2tfc3RydWN0 KHN0cnVjdCB0YXNrX3N0cnVjdCAqb3JpZywgaW50IG5vZGUpCiAJaWYgKCF0c2spCiAJCXJldHVy biBOVUxMOwogCi0JdGkgPSBhbGxvY190aHJlYWRfaW5mb19ub2RlKHRzaywgbm9kZSk7Ci0JaWYg KCF0aSkKKwlzdGFjayA9IGFsbG9jX3RocmVhZF9zdGFja19ub2RlKHRzaywgbm9kZSk7CisJaWYg KCFzdGFjaykKIAkJZ290byBmcmVlX3RzazsKIAogCWVyciA9IGFyY2hfZHVwX3Rhc2tfc3RydWN0 KHRzaywgb3JpZyk7CiAJaWYgKGVycikKLQkJZ290byBmcmVlX3RpOworCQlnb3RvIGZyZWVfc3Rh Y2s7CiAKLQl0c2stPnN0YWNrID0gdGk7CisJdHNrLT5zdGFjayA9IHN0YWNrOwogI2lmZGVmIENP TkZJR19TRUNDT01QCiAJLyoKIAkgKiBXZSBtdXN0IGhhbmRsZSBzZXR0aW5nIHVwIHNlY2NvbXAg ZmlsdGVycyBvbmNlIHdlJ3JlIHVuZGVyCkBAIC0zOTIsMTQgKzM5MiwxNCBAQCBzdGF0aWMgc3Ry dWN0IHRhc2tfc3RydWN0ICpkdXBfdGFza19zdHJ1Y3Qoc3RydWN0IHRhc2tfc3RydWN0ICpvcmln LCBpbnQgbm9kZSkKIAl0c2stPnRhc2tfZnJhZy5wYWdlID0gTlVMTDsKIAl0c2stPndha2VfcS5u ZXh0ID0gTlVMTDsKIAotCWFjY291bnRfa2VybmVsX3N0YWNrKHRpLCAxKTsKKwlhY2NvdW50X2tl cm5lbF9zdGFjayhzdGFjaywgMSk7CiAKIAlrY292X3Rhc2tfaW5pdCh0c2spOwogCiAJcmV0dXJu IHRzazsKIAotZnJlZV90aToKLQlmcmVlX3RocmVhZF9pbmZvKHRpKTsKK2ZyZWVfc3RhY2s6CisJ ZnJlZV90aHJlYWRfc3RhY2soc3RhY2spOwogZnJlZV90c2s6CiAJZnJlZV90YXNrX3N0cnVjdCh0 c2spOwogCXJldHVybiBOVUxMOwo= --001a11371390c8596905360c8c32--