From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751432AbcFXGRi (ORCPT ); Fri, 24 Jun 2016 02:17:38 -0400 Received: from mail-oi0-f67.google.com ([209.85.218.67]:36719 "EHLO mail-oi0-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750833AbcFXGRf (ORCPT ); Fri, 24 Jun 2016 02:17:35 -0400 MIME-Version: 1.0 In-Reply-To: References: <20160623143126.GA16664@redhat.com> <20160623170352.GA17372@redhat.com> <20160623185340.GO30154@twins.programming.kicks-ass.net> From: Linus Torvalds Date: Thu, 23 Jun 2016 23:17:32 -0700 X-Google-Sender-Auth: SQistnAc3IcuAiRCOnP5Q6MH5Jc Message-ID: Subject: Re: [PATCH v3 00/13] Virtually mapped stacks with guard pages (x86, core) To: Peter Zijlstra Cc: 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 , Brian Gerst , "kernel-hardening@lists.openwall.com" , Josh Poimboeuf , Jann Horn , Heiko Carstens Content-Type: multipart/mixed; boundary=001a113d40be58486205360020b0 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org --001a113d40be58486205360020b0 Content-Type: text/plain; charset=UTF-8 On Thu, Jun 23, 2016 at 12:17 PM, Linus Torvalds wrote: > > With the goal being that I'm hoping that we can then actually get rid > of this (at least on x86-64, even if we leave it in some other > architectures) in 4.8. The context here was that we could almost get rid of thread-info entirely, at least for x86-64, by moving it into struct task_struct. It turns out that we're not *that* far off after the obvious cleanups I already committed, but I couldn't get things quite to work. I'm attaching a patch that I wrote today that doesn't boot, but "looks right". The reason I'm attaching it is because I'm hoping somebody wants to take a look and maybe see what else I missed, but mostly because I think the patch is interesting in a couple of cases where we just do incredibly ugly things. First off, some code that Andy wrote when he re-organized the entry path. Oh Gods, Andy. That pt_regs_to_thread_info() thing made me want to do unspeakable acts on a poor innocent wax figure that looked _exactly_ like you. I just got rid of pt_regs_to_thread_info() entirely, and just replaced it with current_thread_info(). I'm not at all convinced that trying to be that clever was really a good idea. Secondly, the x86-64 ret_from_fork calling convention was documented wrongly. It says %rdi contains the previous task pointer. Yes it does, but it doesn't mention that %r8 is supposed to contain the new thread_info. That was fun to find. And thirdly, the stack size games that asm/kprobes.h plays are just disgusting. I stared at that code for much too long. I may in fact be going blind as a result. The rest was fairly straightforward, although since the end result doesn't actually work, that "straightforward" may be broken too. But the basic approach _looks_ sane. Comments? Anybody want to play with this and see where I went wrong? (Note - this patch was written on top of the two thread-info removal patches I committed in da01e18a37a5 x86: avoid avoid passing around 'thread_info' in stack dumping code 6720a305df74 locking: avoid passing around 'thread_info' in mutex debugging code and depends on them, since "ti->task" no longer exists with CONFIG_THREAD_INFO_IN_TASK. "ti" and "task" will have the same value). Linus --001a113d40be58486205360020b0 Content-Type: text/plain; charset=US-ASCII; name="patch.diff" Content-Disposition: attachment; filename="patch.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_iptc1t6c0 VGhpcyBpcyBhIG5vbi13b3JraW5nIGF0dGVtcHQgYXQgbW92aW5nIHRoZSB0aHJlYWRfaW5mbyBp bnRvIHRoZQp0YXNrX3N0cnVjdAoKIGFyY2gveDg2L0tjb25maWcgICAgICAgICAgICAgICAgICAg fCAgMSArCiBhcmNoL3g4Ni9lbnRyeS9jb21tb24uYyAgICAgICAgICAgIHwgMjEgKysrKysrKy0t LS0tLS0tLS0tLS0tCiBhcmNoL3g4Ni9lbnRyeS9lbnRyeV82NC5TICAgICAgICAgIHwgIDkgKysr KysrLS0tCiBhcmNoL3g4Ni9pbmNsdWRlL2FzbS9rcHJvYmVzLmggICAgIHwgMTIgKysrKysrLS0t LS0tCiBhcmNoL3g4Ni9pbmNsdWRlL2FzbS9zd2l0Y2hfdG8uaCAgIHwgIDYgKystLS0tCiBhcmNo L3g4Ni9pbmNsdWRlL2FzbS90aHJlYWRfaW5mby5oIHwgMzggKysrKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KIGFyY2gveDg2L2tlcm5lbC9kdW1wc3RhY2suYyAgICAgICAgfCAg MiArLQogYXJjaC94ODYva2VybmVsL2lycV8zMi5jICAgICAgICAgICB8ICAyIC0tCiBhcmNoL3g4 Ni9rZXJuZWwvaXJxXzY0LmMgICAgICAgICAgIHwgIDMgKy0tCiBhcmNoL3g4Ni9rZXJuZWwvcHJv Y2Vzcy5jICAgICAgICAgIHwgIDYgKystLS0tCiBhcmNoL3g4Ni91bS9wdHJhY2VfMzIuYyAgICAg ICAgICAgIHwgIDggKysrKy0tLS0KIGluY2x1ZGUvbGludXgvaW5pdF90YXNrLmggICAgICAgICAg fCAgOSArKysrKysrKysKIGluY2x1ZGUvbGludXgvc2NoZWQuaCAgICAgICAgICAgICAgfCAxNCAr KysrKysrKysrKysrLQogaW5pdC9LY29uZmlnICAgICAgICAgICAgICAgICAgICAgICB8ICAzICsr KwogaW5pdC9pbml0X3Rhc2suYyAgICAgICAgICAgICAgICAgICB8ICA3ICsrKysrLS0KIDE1IGZp bGVzIGNoYW5nZWQsIDY0IGluc2VydGlvbnMoKyksIDc3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp dCBhL2FyY2gveDg2L0tjb25maWcgYi9hcmNoL3g4Ni9LY29uZmlnCmluZGV4IGQ5YTk0ZGEwYzI5 Zi4uZjMzYmM4MDU3N2M1IDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9LY29uZmlnCisrKyBiL2FyY2gv eDg2L0tjb25maWcKQEAgLTE1NCw2ICsxNTQsNyBAQCBjb25maWcgWDg2CiAJc2VsZWN0IFNQQVJT RV9JUlEKIAlzZWxlY3QgU1JDVQogCXNlbGVjdCBTWVNDVExfRVhDRVBUSU9OX1RSQUNFCisJc2Vs ZWN0IFRIUkVBRF9JTkZPX0lOX1RBU0sKIAlzZWxlY3QgVVNFUl9TVEFDS1RSQUNFX1NVUFBPUlQK IAlzZWxlY3QgVklSVF9UT19CVVMKIAlzZWxlY3QgWDg2X0RFVl9ETUFfT1BTCQkJaWYgWDg2XzY0 CmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9lbnRyeS9jb21tb24uYyBiL2FyY2gveDg2L2VudHJ5L2Nv bW1vbi5jCmluZGV4IGVjMTM4ZTUzOGM0NC4uZDVmZWFjNWYyNTJkIDEwMDY0NAotLS0gYS9hcmNo L3g4Ni9lbnRyeS9jb21tb24uYworKysgYi9hcmNoL3g4Ni9lbnRyeS9jb21tb24uYwpAQCAtMzEs MTMgKzMxLDYgQEAKICNkZWZpbmUgQ1JFQVRFX1RSQUNFX1BPSU5UUwogI2luY2x1ZGUgPHRyYWNl L2V2ZW50cy9zeXNjYWxscy5oPgogCi1zdGF0aWMgc3RydWN0IHRocmVhZF9pbmZvICpwdF9yZWdz X3RvX3RocmVhZF9pbmZvKHN0cnVjdCBwdF9yZWdzICpyZWdzKQotewotCXVuc2lnbmVkIGxvbmcg dG9wX29mX3N0YWNrID0KLQkJKHVuc2lnbmVkIGxvbmcpKHJlZ3MgKyAxKSArIFRPUF9PRl9LRVJO RUxfU1RBQ0tfUEFERElORzsKLQlyZXR1cm4gKHN0cnVjdCB0aHJlYWRfaW5mbyAqKSh0b3Bfb2Zf c3RhY2sgLSBUSFJFQURfU0laRSk7Ci19Ci0KICNpZmRlZiBDT05GSUdfQ09OVEVYVF9UUkFDS0lO RwogLyogQ2FsbGVkIG9uIGVudHJ5IGZyb20gdXNlciBtb2RlIHdpdGggSVJRcyBvZmYuICovCiBf X3Zpc2libGUgdm9pZCBlbnRlcl9mcm9tX3VzZXJfbW9kZSh2b2lkKQpAQCAtNzgsNyArNzEsNyBA QCBzdGF0aWMgdm9pZCBkb19hdWRpdF9zeXNjYWxsX2VudHJ5KHN0cnVjdCBwdF9yZWdzICpyZWdz LCB1MzIgYXJjaCkKICAqLwogdW5zaWduZWQgbG9uZyBzeXNjYWxsX3RyYWNlX2VudGVyX3BoYXNl MShzdHJ1Y3QgcHRfcmVncyAqcmVncywgdTMyIGFyY2gpCiB7Ci0Jc3RydWN0IHRocmVhZF9pbmZv ICp0aSA9IHB0X3JlZ3NfdG9fdGhyZWFkX2luZm8ocmVncyk7CisJc3RydWN0IHRocmVhZF9pbmZv ICp0aSA9IGN1cnJlbnRfdGhyZWFkX2luZm8oKTsKIAl1bnNpZ25lZCBsb25nIHJldCA9IDA7CiAJ dTMyIHdvcms7CiAKQEAgLTE1Niw3ICsxNDksNyBAQCB1bnNpZ25lZCBsb25nIHN5c2NhbGxfdHJh Y2VfZW50ZXJfcGhhc2UxKHN0cnVjdCBwdF9yZWdzICpyZWdzLCB1MzIgYXJjaCkKIGxvbmcgc3lz Y2FsbF90cmFjZV9lbnRlcl9waGFzZTIoc3RydWN0IHB0X3JlZ3MgKnJlZ3MsIHUzMiBhcmNoLAog CQkJCXVuc2lnbmVkIGxvbmcgcGhhc2UxX3Jlc3VsdCkKIHsKLQlzdHJ1Y3QgdGhyZWFkX2luZm8g KnRpID0gcHRfcmVnc190b190aHJlYWRfaW5mbyhyZWdzKTsKKwlzdHJ1Y3QgdGhyZWFkX2luZm8g KnRpID0gY3VycmVudF90aHJlYWRfaW5mbygpOwogCWxvbmcgcmV0ID0gMDsKIAl1MzIgd29yayA9 IEFDQ0VTU19PTkNFKHRpLT5mbGFncykgJiBfVElGX1dPUktfU1lTQ0FMTF9FTlRSWTsKIApAQCAt MjM5LDcgKzIzMiw3IEBAIHN0YXRpYyB2b2lkIGV4aXRfdG9fdXNlcm1vZGVfbG9vcChzdHJ1Y3Qg cHRfcmVncyAqcmVncywgdTMyIGNhY2hlZF9mbGFncykKIAkJLyogRGlzYWJsZSBJUlFzIGFuZCBy ZXRyeSAqLwogCQlsb2NhbF9pcnFfZGlzYWJsZSgpOwogCi0JCWNhY2hlZF9mbGFncyA9IFJFQURf T05DRShwdF9yZWdzX3RvX3RocmVhZF9pbmZvKHJlZ3MpLT5mbGFncyk7CisJCWNhY2hlZF9mbGFn cyA9IFJFQURfT05DRShjdXJyZW50X3RocmVhZF9pbmZvKCktPmZsYWdzKTsKIAogCQlpZiAoIShj YWNoZWRfZmxhZ3MgJiBFWElUX1RPX1VTRVJNT0RFX0xPT1BfRkxBR1MpKQogCQkJYnJlYWs7CkBA IC0yNTAsNyArMjQzLDcgQEAgc3RhdGljIHZvaWQgZXhpdF90b191c2VybW9kZV9sb29wKHN0cnVj dCBwdF9yZWdzICpyZWdzLCB1MzIgY2FjaGVkX2ZsYWdzKQogLyogQ2FsbGVkIHdpdGggSVJRcyBk aXNhYmxlZC4gKi8KIF9fdmlzaWJsZSBpbmxpbmUgdm9pZCBwcmVwYXJlX2V4aXRfdG9fdXNlcm1v ZGUoc3RydWN0IHB0X3JlZ3MgKnJlZ3MpCiB7Ci0Jc3RydWN0IHRocmVhZF9pbmZvICp0aSA9IHB0 X3JlZ3NfdG9fdGhyZWFkX2luZm8ocmVncyk7CisJc3RydWN0IHRocmVhZF9pbmZvICp0aSA9IGN1 cnJlbnRfdGhyZWFkX2luZm8oKTsKIAl1MzIgY2FjaGVkX2ZsYWdzOwogCiAJaWYgKElTX0VOQUJM RUQoQ09ORklHX1BST1ZFX0xPQ0tJTkcpICYmIFdBUk5fT04oIWlycXNfZGlzYWJsZWQoKSkpCkBA IC0zMDksNyArMzAyLDcgQEAgc3RhdGljIHZvaWQgc3lzY2FsbF9zbG93X2V4aXRfd29yayhzdHJ1 Y3QgcHRfcmVncyAqcmVncywgdTMyIGNhY2hlZF9mbGFncykKICAqLwogX192aXNpYmxlIGlubGlu ZSB2b2lkIHN5c2NhbGxfcmV0dXJuX3Nsb3dwYXRoKHN0cnVjdCBwdF9yZWdzICpyZWdzKQogewot CXN0cnVjdCB0aHJlYWRfaW5mbyAqdGkgPSBwdF9yZWdzX3RvX3RocmVhZF9pbmZvKHJlZ3MpOwor CXN0cnVjdCB0aHJlYWRfaW5mbyAqdGkgPSBjdXJyZW50X3RocmVhZF9pbmZvKCk7CiAJdTMyIGNh Y2hlZF9mbGFncyA9IFJFQURfT05DRSh0aS0+ZmxhZ3MpOwogCiAJQ1RfV0FSTl9PTihjdF9zdGF0 ZSgpICE9IENPTlRFWFRfS0VSTkVMKTsKQEAgLTMzMiw3ICszMjUsNyBAQCBfX3Zpc2libGUgaW5s aW5lIHZvaWQgc3lzY2FsbF9yZXR1cm5fc2xvd3BhdGgoc3RydWN0IHB0X3JlZ3MgKnJlZ3MpCiAj aWZkZWYgQ09ORklHX1g4Nl82NAogX192aXNpYmxlIHZvaWQgZG9fc3lzY2FsbF82NChzdHJ1Y3Qg cHRfcmVncyAqcmVncykKIHsKLQlzdHJ1Y3QgdGhyZWFkX2luZm8gKnRpID0gcHRfcmVnc190b190 aHJlYWRfaW5mbyhyZWdzKTsKKwlzdHJ1Y3QgdGhyZWFkX2luZm8gKnRpID0gY3VycmVudF90aHJl YWRfaW5mbygpOwogCXVuc2lnbmVkIGxvbmcgbnIgPSByZWdzLT5vcmlnX2F4OwogCiAJZW50ZXJf ZnJvbV91c2VyX21vZGUoKTsKQEAgLTM2NSw3ICszNTgsNyBAQCBfX3Zpc2libGUgdm9pZCBkb19z eXNjYWxsXzY0KHN0cnVjdCBwdF9yZWdzICpyZWdzKQogICovCiBzdGF0aWMgX19hbHdheXNfaW5s aW5lIHZvaWQgZG9fc3lzY2FsbF8zMl9pcnFzX29uKHN0cnVjdCBwdF9yZWdzICpyZWdzKQogewot CXN0cnVjdCB0aHJlYWRfaW5mbyAqdGkgPSBwdF9yZWdzX3RvX3RocmVhZF9pbmZvKHJlZ3MpOwor CXN0cnVjdCB0aHJlYWRfaW5mbyAqdGkgPSBjdXJyZW50X3RocmVhZF9pbmZvKCk7CiAJdW5zaWdu ZWQgaW50IG5yID0gKHVuc2lnbmVkIGludClyZWdzLT5vcmlnX2F4OwogCiAjaWZkZWYgQ09ORklH X0lBMzJfRU1VTEFUSU9OCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9lbnRyeS9lbnRyeV82NC5TIGIv YXJjaC94ODYvZW50cnkvZW50cnlfNjQuUwppbmRleCA5ZWUwZGExODA3ZWQuLmY0OTc0MmRlMmM2 NSAxMDA2NDQKLS0tIGEvYXJjaC94ODYvZW50cnkvZW50cnlfNjQuUworKysgYi9hcmNoL3g4Ni9l bnRyeS9lbnRyeV82NC5TCkBAIC0xNzksNyArMTc5LDggQEAgR0xPQkFMKGVudHJ5X1NZU0NBTExf NjRfYWZ0ZXJfc3dhcGdzKQogCSAqIElmIHdlIG5lZWQgdG8gZG8gZW50cnkgd29yayBvciBpZiB3 ZSBndWVzcyB3ZSdsbCBuZWVkIHRvIGRvCiAJICogZXhpdCB3b3JrLCBnbyBzdHJhaWdodCB0byB0 aGUgc2xvdyBwYXRoLgogCSAqLwotCXRlc3RsCSRfVElGX1dPUktfU1lTQ0FMTF9FTlRSWXxfVElG X0FMTFdPUktfTUFTSywgQVNNX1RIUkVBRF9JTkZPKFRJX2ZsYWdzLCAlcnNwLCBTSVpFT0ZfUFRS RUdTKQorCUdFVF9USFJFQURfSU5GTyglcjExKQorCXRlc3RsCSRfVElGX1dPUktfU1lTQ0FMTF9F TlRSWXxfVElGX0FMTFdPUktfTUFTSywgVElfZmxhZ3MoJXIxMSkKIAlqbnoJZW50cnlfU1lTQ0FM TDY0X3Nsb3dfcGF0aAogCiBlbnRyeV9TWVNDQUxMXzY0X2Zhc3RwYXRoOgpAQCAtMjE3LDcgKzIx OCw4IEBAIGVudHJ5X1NZU0NBTExfNjRfZmFzdHBhdGg6CiAJICovCiAJRElTQUJMRV9JTlRFUlJV UFRTKENMQlJfTk9ORSkKIAlUUkFDRV9JUlFTX09GRgotCXRlc3RsCSRfVElGX0FMTFdPUktfTUFT SywgQVNNX1RIUkVBRF9JTkZPKFRJX2ZsYWdzLCAlcnNwLCBTSVpFT0ZfUFRSRUdTKQorCUdFVF9U SFJFQURfSU5GTyglcjExKQorCXRlc3RsCSRfVElGX0FMTFdPUktfTUFTSywgVElfZmxhZ3MoJXIx MSkKIAlqbnoJMWYKIAogCUxPQ0tERVBfU1lTX0VYSVQKQEAgLTM2OCw5ICszNzAsMTAgQEAgRU5E KHB0cmVnc19cZnVuYykKICAqIEEgbmV3bHkgZm9ya2VkIHByb2Nlc3MgZGlyZWN0bHkgY29udGV4 dCBzd2l0Y2hlcyBpbnRvIHRoaXMgYWRkcmVzcy4KICAqCiAgKiByZGk6IHByZXYgdGFzayB3ZSBz d2l0Y2hlZCBmcm9tCisgKiByc2k6IHRhc2sgd2UncmUgc3dpdGNoaW5nIHRvCiAgKi8KIEVOVFJZ KHJldF9mcm9tX2ZvcmspCi0JTE9DSyA7IGJ0ciAkVElGX0ZPUkssIFRJX2ZsYWdzKCVyOCkKKwlM T0NLIDsgYnRyICRUSUZfRk9SSywgVElfZmxhZ3MoJXJzaSkJLyogcnNpOiB0aGlzIG5ld2x5IGZv cmtlZCB0YXNrICovCiAKIAljYWxsCXNjaGVkdWxlX3RhaWwJCQkvKiByZGk6ICdwcmV2JyB0YXNr IHBhcmFtZXRlciAqLwogCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rcHJvYmVz LmggYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rcHJvYmVzLmgKaW5kZXggNDQyMWI1ZGE0MDlkLi4x ZDI5OTdlNzRiMDggMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL2twcm9iZXMuaAor KysgYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rcHJvYmVzLmgKQEAgLTM4LDEyICszOCwxMiBAQCB0 eXBlZGVmIHU4IGtwcm9iZV9vcGNvZGVfdDsKICNkZWZpbmUgUkVMQVRJVkVDQUxMX09QQ09ERSAw eGU4CiAjZGVmaW5lIFJFTEFUSVZFX0FERFJfU0laRSA0CiAjZGVmaW5lIE1BWF9TVEFDS19TSVpF IDY0Ci0jZGVmaW5lIE1JTl9TVEFDS19TSVpFKEFERFIpCQkJCQkgICAgICAgXAotCSgoKE1BWF9T VEFDS19TSVpFKSA8ICgoKHVuc2lnbmVkIGxvbmcpY3VycmVudF90aHJlYWRfaW5mbygpKSArIFwK LQkJCSAgICAgIFRIUkVBRF9TSVpFIC0gKHVuc2lnbmVkIGxvbmcpKEFERFIpKSkgICAgXAotCSA/ IChNQVhfU1RBQ0tfU0laRSkJCQkJCSAgICAgICBcCi0JIDogKCgodW5zaWduZWQgbG9uZyljdXJy ZW50X3RocmVhZF9pbmZvKCkpICsJCSAgICAgICBcCi0JICAgIFRIUkVBRF9TSVpFIC0gKHVuc2ln bmVkIGxvbmcpKEFERFIpKSkKKworI2RlZmluZSBjdXJyZW50X3N0YWNrX3RvcCgpICgodW5zaWdu ZWQgbG9uZyl0YXNrX3N0YWNrX3BhZ2UoY3VycmVudCkrVEhSRUFEX1NJWkUpCisjZGVmaW5lIGN1 cnJlbnRfc3RhY2tfc2l6ZShBRERSKSAoY3VycmVudF9zdGFja190b3AoKSAtICh1bnNpZ25lZCBs b25nKShBRERSKSkKKworI2RlZmluZSBNSU5fU1RBQ0tfU0laRShBRERSKSBcCisJKE1BWF9TVEFD S19TSVpFIDwgY3VycmVudF9zdGFja19zaXplKEFERFIpID8gTUFYX1NUQUNLX1NJWkUgOiBjdXJy ZW50X3N0YWNrX3NpemUoQUREUikpCiAKICNkZWZpbmUgZmx1c2hfaW5zbl9zbG90KHApCWRvIHsg fSB3aGlsZSAoMCkKIApkaWZmIC0tZ2l0IGEvYXJjaC94ODYvaW5jbHVkZS9hc20vc3dpdGNoX3Rv LmggYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9zd2l0Y2hfdG8uaAppbmRleCA4ZjMyMWExYjAzYTEu LmFlMGFhMDYxMmM2NyAxMDA2NDQKLS0tIGEvYXJjaC94ODYvaW5jbHVkZS9hc20vc3dpdGNoX3Rv LmgKKysrIGIvYXJjaC94ODYvaW5jbHVkZS9hc20vc3dpdGNoX3RvLmgKQEAgLTExMCwxOCArMTEw LDE2IEBAIGRvIHsJCQkJCQkJCQlcCiAJICAgICAiY2FsbCBfX3N3aXRjaF90b1xuXHQiCQkJCQkg IFwKIAkgICAgICJtb3ZxICJfX3BlcmNwdV9hcmcoW2N1cnJlbnRfdGFza10pIiwlJXJzaVxuXHQi CQkgIFwKIAkgICAgIF9fc3dpdGNoX2NhbmFyeQkJCQkJCSAgXAotCSAgICAgIm1vdnEgJVBbdGhy ZWFkX2luZm9dKCUlcnNpKSwlJXI4XG5cdCIJCQkgIFwKIAkgICAgICJtb3ZxICUlcmF4LCUlcmRp XG5cdCIgCQkJCQkgIFwKLQkgICAgICJ0ZXN0bCAgJVtfdGlmX2ZvcmtdLCVQW3RpX2ZsYWdzXSgl JXI4KVxuXHQiCQkgIFwKKwkgICAgICJ0ZXN0bCAgJVtfdGlmX2ZvcmtdLCVQW3RpX2ZsYWdzXSgl JXJzaSlcblx0IgkJICBcCiAJICAgICAiam56ICAgcmV0X2Zyb21fZm9ya1xuXHQiCQkJCQkgIFwK IAkgICAgIFJFU1RPUkVfQ09OVEVYVAkJCQkJCSAgXAogCSAgICAgOiAiPWEiIChsYXN0KQkJCQkJ ICAJICBcCiAJICAgICAgIF9fc3dpdGNoX2NhbmFyeV9vcGFyYW0JCQkJCSAgXAogCSAgICAgOiBb bmV4dF0gIlMiIChuZXh0KSwgW3ByZXZdICJEIiAocHJldiksCQkJICBcCiAJICAgICAgIFt0aHJl YWRyc3BdICJpIiAob2Zmc2V0b2Yoc3RydWN0IHRhc2tfc3RydWN0LCB0aHJlYWQuc3ApKSwgXAot CSAgICAgICBbdGlfZmxhZ3NdICJpIiAob2Zmc2V0b2Yoc3RydWN0IHRocmVhZF9pbmZvLCBmbGFn cykpLAkgIFwKKwkgICAgICAgW3RpX2ZsYWdzXSAiaSIgKG9mZnNldG9mKHN0cnVjdCB0YXNrX3N0 cnVjdCwgdGhyZWFkX2luZm8uZmxhZ3MpKSwJICBcCiAJICAgICAgIFtfdGlmX2ZvcmtdICJpIiAo X1RJRl9GT1JLKSwJCQkgIAkgIFwKLQkgICAgICAgW3RocmVhZF9pbmZvXSAiaSIgKG9mZnNldG9m KHN0cnVjdCB0YXNrX3N0cnVjdCwgc3RhY2spKSwgICBcCiAJICAgICAgIFtjdXJyZW50X3Rhc2td ICJtIiAoY3VycmVudF90YXNrKQkJCSAgXAogCSAgICAgICBfX3N3aXRjaF9jYW5hcnlfaXBhcmFt CQkJCQkgIFwKIAkgICAgIDogIm1lbW9yeSIsICJjYyIgX19FWFRSQV9DTE9CQkVSKQpkaWZmIC0t Z2l0IGEvYXJjaC94ODYvaW5jbHVkZS9hc20vdGhyZWFkX2luZm8uaCBiL2FyY2gveDg2L2luY2x1 ZGUvYXNtL3RocmVhZF9pbmZvLmgKaW5kZXggMzBjMTMzYWMwNWNkLi5lZWY2ODdmZGM5MGQgMTAw NjQ0Ci0tLSBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL3RocmVhZF9pbmZvLmgKKysrIGIvYXJjaC94 ODYvaW5jbHVkZS9hc20vdGhyZWFkX2luZm8uaApAQCAtNTMsMjQgKzUzLDIyIEBAIHN0cnVjdCB0 YXNrX3N0cnVjdDsKICNpbmNsdWRlIDxsaW51eC9hdG9taWMuaD4KIAogc3RydWN0IHRocmVhZF9p bmZvIHsKLQlzdHJ1Y3QgdGFza19zdHJ1Y3QJKnRhc2s7CQkvKiBtYWluIHRhc2sgc3RydWN0dXJl ICovCiAJX191MzIJCQlmbGFnczsJCS8qIGxvdyBsZXZlbCBmbGFncyAqLwogCV9fdTMyCQkJc3Rh dHVzOwkJLyogdGhyZWFkIHN5bmNocm9ub3VzIGZsYWdzICovCiAJX191MzIJCQljcHU7CQkvKiBj dXJyZW50IENQVSAqLwotCW1tX3NlZ21lbnRfdAkJYWRkcl9saW1pdDsKIAl1bnNpZ25lZCBpbnQJ CXNpZ19vbl91YWNjZXNzX2Vycm9yOjE7CiAJdW5zaWduZWQgaW50CQl1YWNjZXNzX2VycjoxOwkv KiB1YWNjZXNzIGZhaWxlZCAqLworCW1tX3NlZ21lbnRfdAkJYWRkcl9saW1pdDsKIH07CiAKICNk ZWZpbmUgSU5JVF9USFJFQURfSU5GTyh0c2spCQkJXAogewkJCQkJCVwKLQkudGFzawkJPSAmdHNr LAkJCVwKIAkuZmxhZ3MJCT0gMCwJCQlcCiAJLmNwdQkJPSAwLAkJCVwKIAkuYWRkcl9saW1pdAk9 IEtFUk5FTF9EUywJCVwKIH0KIAotI2RlZmluZSBpbml0X3RocmVhZF9pbmZvCShpbml0X3RocmVh ZF91bmlvbi50aHJlYWRfaW5mbykKKyNkZWZpbmUgaW5pdF90aHJlYWRfaW5mbwkoaW5pdF90YXNr LnRocmVhZF9pbmZvKQogI2RlZmluZSBpbml0X3N0YWNrCQkoaW5pdF90aHJlYWRfdW5pb24uc3Rh Y2spCiAKICNlbHNlIC8qICFfX0FTU0VNQkxZX18gKi8KQEAgLTE2Niw3ICsxNjQsNyBAQCBzdHJ1 Y3QgdGhyZWFkX2luZm8gewogCiBzdGF0aWMgaW5saW5lIHN0cnVjdCB0aHJlYWRfaW5mbyAqY3Vy cmVudF90aHJlYWRfaW5mbyh2b2lkKQogewotCXJldHVybiAoc3RydWN0IHRocmVhZF9pbmZvICop KGN1cnJlbnRfdG9wX29mX3N0YWNrKCkgLSBUSFJFQURfU0laRSk7CisJcmV0dXJuIChzdHJ1Y3Qg dGhyZWFkX2luZm8gKiljdXJyZW50OwogfQogCiBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcg Y3VycmVudF9zdGFja19wb2ludGVyKHZvaWQpCkBAIC0xODgsMzUgKzE4Niw3IEBAIHN0YXRpYyBp bmxpbmUgdW5zaWduZWQgbG9uZyBjdXJyZW50X3N0YWNrX3BvaW50ZXIodm9pZCkKIAogLyogTG9h ZCB0aHJlYWRfaW5mbyBhZGRyZXNzIGludG8gInJlZyIgKi8KICNkZWZpbmUgR0VUX1RIUkVBRF9J TkZPKHJlZykgXAotCV9BU01fTU9WIFBFUl9DUFVfVkFSKGNwdV9jdXJyZW50X3RvcF9vZl9zdGFj aykscmVnIDsgXAotCV9BU01fU1VCICQoVEhSRUFEX1NJWkUpLHJlZyA7Ci0KLS8qCi0gKiBBU00g b3BlcmFuZCB3aGljaCBldmFsdWF0ZXMgdG8gYSAndGhyZWFkX2luZm8nIGFkZHJlc3Mgb2YKLSAq IHRoZSBjdXJyZW50IHRhc2ssIGlmIGl0IGlzIGtub3duIHRoYXQgInJlZyIgaXMgZXhhY3RseSAi b2ZmIgotICogYnl0ZXMgYmVsb3cgdGhlIHRvcCBvZiB0aGUgc3RhY2sgY3VycmVudGx5LgotICoK LSAqICggVGhlIGtlcm5lbCBzdGFjaydzIHNpemUgaXMga25vd24gYXQgYnVpbGQgdGltZSwgaXQg aXMgdXN1YWxseQotICogICAyIG9yIDQgcGFnZXMsIGFuZCB0aGUgYm90dG9tICBvZiB0aGUga2Vy bmVsIHN0YWNrIGNvbnRhaW5zCi0gKiAgIHRoZSB0aHJlYWRfaW5mbyBzdHJ1Y3R1cmUuIFNvIHRv IGFjY2VzcyB0aGUgdGhyZWFkX2luZm8gdmVyeQotICogICBxdWlja2x5IGZyb20gYXNzZW1ibHkg Y29kZSB3ZSBjYW4gY2FsY3VsYXRlIGRvd24gZnJvbSB0aGUKLSAqICAgdG9wIG9mIHRoZSBrZXJu ZWwgc3RhY2sgdG8gdGhlIGJvdHRvbSwgdXNpbmcgY29uc3RhbnQsCi0gKiAgIGJ1aWxkLXRpbWUg Y2FsY3VsYXRpb25zIG9ubHkuICkKLSAqCi0gKiBGb3IgZXhhbXBsZSwgdG8gZmV0Y2ggdGhlIGN1 cnJlbnQgdGhyZWFkX2luZm8tPmZsYWdzIHZhbHVlIGludG8gJWVheAotICogb24geDg2LTY0IGRl ZmNvbmZpZyBrZXJuZWxzLCBpbiBzeXNjYWxsIGVudHJ5IGNvZGUgd2hlcmUgUlNQIGlzCi0gKiBj dXJyZW50bHkgYXQgZXhhY3RseSBTSVpFT0ZfUFRSRUdTIGJ5dGVzIGF3YXkgZnJvbSB0aGUgdG9w IG9mIHRoZQotICogc3RhY2s6Ci0gKgotICogICAgICBtb3YgQVNNX1RIUkVBRF9JTkZPKFRJX2Zs YWdzLCAlcnNwLCBTSVpFT0ZfUFRSRUdTKSwgJWVheAotICoKLSAqIHdpbGwgdHJhbnNsYXRlIHRv OgotICoKLSAqICAgICAgOGIgODQgMjQgYjggYzAgZmYgZmYgICAgICBtb3YgICAgLTB4M2Y0OCgl cnNwKSwgJWVheAotICoKLSAqIHdoaWNoIGlzIGJlbG93IHRoZSBjdXJyZW50IFJTUCBieSBhbG1v c3QgMTZLLgotICovCi0jZGVmaW5lIEFTTV9USFJFQURfSU5GTyhmaWVsZCwgcmVnLCBvZmYpICgo ZmllbGQpKyhvZmYpLVRIUkVBRF9TSVpFKShyZWcpCisJX0FTTV9NT1YgUEVSX0NQVV9WQVIoY3Vy cmVudF90YXNrKSxyZWcKIAogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2tlcm5lbC9k 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 YXNrLmgKaW5kZXggZjJjYjhkNDU1MTNkLi5hMDBmNTNiNjRjMDkgMTAwNjQ0Ci0tLSBhL2luY2x1 ZGUvbGludXgvaW5pdF90YXNrLmgKKysrIGIvaW5jbHVkZS9saW51eC9pbml0X3Rhc2suaApAQCAt MTUsNiArMTUsOCBAQAogI2luY2x1ZGUgPG5ldC9uZXRfbmFtZXNwYWNlLmg+CiAjaW5jbHVkZSA8 bGludXgvc2NoZWQvcnQuaD4KIAorI2luY2x1ZGUgPGFzbS90aHJlYWRfaW5mby5oPgorCiAjaWZk ZWYgQ09ORklHX1NNUAogIyBkZWZpbmUgSU5JVF9QVVNIQUJMRV9UQVNLUyh0c2spCQkJCQlcCiAJ LnB1c2hhYmxlX3Rhc2tzID0gUExJU1RfTk9ERV9JTklUKHRzay5wdXNoYWJsZV90YXNrcywgTUFY X1BSSU8pLApAQCAtMTgzLDEyICsxODUsMTkgQEAgZXh0ZXJuIHN0cnVjdCB0YXNrX2dyb3VwIHJv b3RfdGFza19ncm91cDsKICMgZGVmaW5lIElOSVRfS0FTQU4odHNrKQogI2VuZGlmCiAKKyNpZmRl ZiBDT05GSUdfVEhSRUFEX0lORk9fSU5fVEFTSworIyBkZWZpbmUgSU5JVF9UQVNLX1RJKHRzaykg LnRocmVhZF9pbmZvID0gSU5JVF9USFJFQURfSU5GTyh0c2spLAorI2Vsc2UKKyMgZGVmaW5lIElO SVRfVEFTS19USSh0c2spCisjZW5kaWYKKwogLyoKICAqICBJTklUX1RBU0sgaXMgdXNlZCB0byBz ZXQgdXAgdGhlIGZpcnN0IHRhc2sgdGFibGUsIHRvdWNoIGF0CiAgKiB5b3VyIG93biByaXNrIS4g QmFzZT0wLCBsaW1pdD0weDFmZmZmZiAoPTJNQikKICAqLwogI2RlZmluZSBJTklUX1RBU0sodHNr KQlcCiB7CQkJCQkJCQkJXAorCUlOSVRfVEFTS19USSh0c2spCQkJCQkJXAogCS5zdGF0ZQkJPSAw LAkJCQkJCVwKIAkuc3RhY2sJCT0gJmluaXRfdGhyZWFkX2luZm8sCQkJCVwKIAkudXNhZ2UJCT0g QVRPTUlDX0lOSVQoMiksCQkJCVwKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvc2NoZWQuaCBi L2luY2x1ZGUvbGludXgvc2NoZWQuaAppbmRleCA2ZTQyYWRhMjYzNDUuLjA2MjM2YTM2YmExNyAx MDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9zY2hlZC5oCisrKyBiL2luY2x1ZGUvbGludXgvc2No ZWQuaApAQCAtMTQ1Niw2ICsxNDU2LDkgQEAgc3RydWN0IHRsYmZsdXNoX3VubWFwX2JhdGNoIHsK IH07CiAKIHN0cnVjdCB0YXNrX3N0cnVjdCB7CisjaWZkZWYgQ09ORklHX1RIUkVBRF9JTkZPX0lO X1RBU0sKKwlzdHJ1Y3QgdGhyZWFkX2luZm8gdGhyZWFkX2luZm87CisjZW5kaWYKIAl2b2xhdGls ZSBsb25nIHN0YXRlOwkvKiAtMSB1bnJ1bm5hYmxlLCAwIHJ1bm5hYmxlLCA+MCBzdG9wcGVkICov CiAJdm9pZCAqc3RhY2s7CiAJYXRvbWljX3QgdXNhZ2U7CkBAIC0yNTM5LDcgKzI1NDIsOSBAQCBl eHRlcm4gdm9pZCBzZXRfY3Vycl90YXNrKGludCBjcHUsIHN0cnVjdCB0YXNrX3N0cnVjdCAqcCk7 CiB2b2lkIHlpZWxkKHZvaWQpOwogCiB1bmlvbiB0aHJlYWRfdW5pb24geworI2lmbmRlZiBDT05G SUdfVEhSRUFEX0lORk9fSU5fVEFTSwogCXN0cnVjdCB0aHJlYWRfaW5mbyB0aHJlYWRfaW5mbzsK KyNlbmRpZgogCXVuc2lnbmVkIGxvbmcgc3RhY2tbVEhSRUFEX1NJWkUvc2l6ZW9mKGxvbmcpXTsK IH07CiAKQEAgLTI5NjcsNyArMjk3MiwxNCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgdGhyZWFkZ3Jv dXBfY2hhbmdlX2VuZChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaykKIAljZ3JvdXBfdGhyZWFkZ3Jv dXBfY2hhbmdlX2VuZCh0c2spOwogfQogCi0jaWZuZGVmIF9fSEFWRV9USFJFQURfRlVOQ1RJT05T CisjaWZkZWYgQ09ORklHX1RIUkVBRF9JTkZPX0lOX1RBU0sKKworI2RlZmluZSB0YXNrX3RocmVh ZF9pbmZvKHRhc2spCQkoJih0YXNrKS0+dGhyZWFkX2luZm8pCisjZGVmaW5lIHRhc2tfc3RhY2tf cGFnZSh0YXNrKQkJKCh0YXNrKS0+c3RhY2spCisjZGVmaW5lIHNldHVwX3RocmVhZF9zdGFjayhu ZXcsb2xkKQlkbyB7IH0gd2hpbGUoMCkKKyNkZWZpbmUgZW5kX29mX3N0YWNrKHRhc2spCQkoKHVu c2lnbmVkIGxvbmcgKil0YXNrX3N0YWNrX3BhZ2UodGFzaykpCisKKyNlbGlmICFkZWZpbmVkKF9f SEFWRV9USFJFQURfRlVOQ1RJT05TKQogCiAjZGVmaW5lIHRhc2tfdGhyZWFkX2luZm8odGFzaykJ KChzdHJ1Y3QgdGhyZWFkX2luZm8gKikodGFzayktPnN0YWNrKQogI2RlZmluZSB0YXNrX3N0YWNr X3BhZ2UodGFzaykJKCh0YXNrKS0+c3RhY2spCmRpZmYgLS1naXQgYS9pbml0L0tjb25maWcgYi9p bml0L0tjb25maWcKaW5kZXggZjc1NWE2MDJkNGExLi4wYzgzYWY2ZDM3NTMgMTAwNjQ0Ci0tLSBh L2luaXQvS2NvbmZpZworKysgYi9pbml0L0tjb25maWcKQEAgLTI2LDYgKzI2LDkgQEAgY29uZmln IElSUV9XT1JLCiBjb25maWcgQlVJTERUSU1FX0VYVEFCTEVfU09SVAogCWJvb2wKIAorY29uZmln IFRIUkVBRF9JTkZPX0lOX1RBU0sKKwlib29sCisKIG1lbnUgIkdlbmVyYWwgc2V0dXAiCiAKIGNv bmZpZyBCUk9LRU4KZGlmZiAtLWdpdCBhL2luaXQvaW5pdF90YXNrLmMgYi9pbml0L2luaXRfdGFz ay5jCmluZGV4IGJhMGE3ZjM2MmQ5ZS4uMTFmODNiZTFmYTc5IDEwMDY0NAotLS0gYS9pbml0L2lu aXRfdGFzay5jCisrKyBiL2luaXQvaW5pdF90YXNrLmMKQEAgLTIyLDUgKzIyLDggQEAgRVhQT1JU X1NZTUJPTChpbml0X3Rhc2spOwogICogSW5pdGlhbCB0aHJlYWQgc3RydWN0dXJlLiBBbGlnbm1l bnQgb2YgdGhpcyBpcyBoYW5kbGVkIGJ5IGEgc3BlY2lhbAogICogbGlua2VyIG1hcCBlbnRyeS4K ICAqLwotdW5pb24gdGhyZWFkX3VuaW9uIGluaXRfdGhyZWFkX3VuaW9uIF9faW5pdF90YXNrX2Rh dGEgPQotCXsgSU5JVF9USFJFQURfSU5GTyhpbml0X3Rhc2spIH07Cit1bmlvbiB0aHJlYWRfdW5p b24gaW5pdF90aHJlYWRfdW5pb24gX19pbml0X3Rhc2tfZGF0YSA9IHsKKyNpZm5kZWYgQ09ORklH X1RIUkVBRF9JTkZPX0lOX1RBU0sKKwlJTklUX1RIUkVBRF9JTkZPKGluaXRfdGFzaykKKyNlbmRp ZgorfTsK --001a113d40be58486205360020b0-- 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: Thu, 23 Jun 2016 23:17:32 -0700 Message-ID: References: <20160623143126.GA16664@redhat.com> <20160623170352.GA17372@redhat.com> <20160623185340.GO30154@twins.programming.kicks-ass.net> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary=001a113d40be58486205360020b0 Return-path: Received: from mail-oi0-f67.google.com ([209.85.218.67]:36719 "EHLO mail-oi0-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750833AbcFXGRf (ORCPT ); Fri, 24 Jun 2016 02:17:35 -0400 In-Reply-To: Sender: linux-arch-owner@vger.kernel.org List-ID: To: Peter Zijlstra Cc: 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 , Brian Gerst , "kernel-hardening@lists.openwall.com" , Josh Poimboeuf , Jann Horn , Heiko Carstens --001a113d40be58486205360020b0 Content-Type: text/plain; charset=UTF-8 On Thu, Jun 23, 2016 at 12:17 PM, Linus Torvalds wrote: > > With the goal being that I'm hoping that we can then actually get rid > of this (at least on x86-64, even if we leave it in some other > architectures) in 4.8. The context here was that we could almost get rid of thread-info entirely, at least for x86-64, by moving it into struct task_struct. It turns out that we're not *that* far off after the obvious cleanups I already committed, but I couldn't get things quite to work. I'm attaching a patch that I wrote today that doesn't boot, but "looks right". The reason I'm attaching it is because I'm hoping somebody wants to take a look and maybe see what else I missed, but mostly because I think the patch is interesting in a couple of cases where we just do incredibly ugly things. First off, some code that Andy wrote when he re-organized the entry path. Oh Gods, Andy. That pt_regs_to_thread_info() thing made me want to do unspeakable acts on a poor innocent wax figure that looked _exactly_ like you. I just got rid of pt_regs_to_thread_info() entirely, and just replaced it with current_thread_info(). I'm not at all convinced that trying to be that clever was really a good idea. Secondly, the x86-64 ret_from_fork calling convention was documented wrongly. It says %rdi contains the previous task pointer. Yes it does, but it doesn't mention that %r8 is supposed to contain the new thread_info. That was fun to find. And thirdly, the stack size games that asm/kprobes.h plays are just disgusting. I stared at that code for much too long. I may in fact be going blind as a result. The rest was fairly straightforward, although since the end result doesn't actually work, that "straightforward" may be broken too. But the basic approach _looks_ sane. Comments? Anybody want to play with this and see where I went wrong? (Note - this patch was written on top of the two thread-info removal patches I committed in da01e18a37a5 x86: avoid avoid passing around 'thread_info' in stack dumping code 6720a305df74 locking: avoid passing around 'thread_info' in mutex debugging code and depends on them, since "ti->task" no longer exists with CONFIG_THREAD_INFO_IN_TASK. "ti" and "task" will have the same value). Linus --001a113d40be58486205360020b0 Content-Type: text/plain; charset=US-ASCII; name="patch.diff" Content-Disposition: attachment; filename="patch.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_iptc1t6c0 VGhpcyBpcyBhIG5vbi13b3JraW5nIGF0dGVtcHQgYXQgbW92aW5nIHRoZSB0aHJlYWRfaW5mbyBp bnRvIHRoZQp0YXNrX3N0cnVjdAoKIGFyY2gveDg2L0tjb25maWcgICAgICAgICAgICAgICAgICAg fCAgMSArCiBhcmNoL3g4Ni9lbnRyeS9jb21tb24uYyAgICAgICAgICAgIHwgMjEgKysrKysrKy0t LS0tLS0tLS0tLS0tCiBhcmNoL3g4Ni9lbnRyeS9lbnRyeV82NC5TICAgICAgICAgIHwgIDkgKysr KysrLS0tCiBhcmNoL3g4Ni9pbmNsdWRlL2FzbS9rcHJvYmVzLmggICAgIHwgMTIgKysrKysrLS0t LS0tCiBhcmNoL3g4Ni9pbmNsdWRlL2FzbS9zd2l0Y2hfdG8uaCAgIHwgIDYgKystLS0tCiBhcmNo L3g4Ni9pbmNsdWRlL2FzbS90aHJlYWRfaW5mby5oIHwgMzggKysrKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KIGFyY2gveDg2L2tlcm5lbC9kdW1wc3RhY2suYyAgICAgICAgfCAg MiArLQogYXJjaC94ODYva2VybmVsL2lycV8zMi5jICAgICAgICAgICB8ICAyIC0tCiBhcmNoL3g4 Ni9rZXJuZWwvaXJxXzY0LmMgICAgICAgICAgIHwgIDMgKy0tCiBhcmNoL3g4Ni9rZXJuZWwvcHJv Y2Vzcy5jICAgICAgICAgIHwgIDYgKystLS0tCiBhcmNoL3g4Ni91bS9wdHJhY2VfMzIuYyAgICAg ICAgICAgIHwgIDggKysrKy0tLS0KIGluY2x1ZGUvbGludXgvaW5pdF90YXNrLmggICAgICAgICAg fCAgOSArKysrKysrKysKIGluY2x1ZGUvbGludXgvc2NoZWQuaCAgICAgICAgICAgICAgfCAxNCAr KysrKysrKysrKysrLQogaW5pdC9LY29uZmlnICAgICAgICAgICAgICAgICAgICAgICB8ICAzICsr KwogaW5pdC9pbml0X3Rhc2suYyAgICAgICAgICAgICAgICAgICB8ICA3ICsrKysrLS0KIDE1IGZp bGVzIGNoYW5nZWQsIDY0IGluc2VydGlvbnMoKyksIDc3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp dCBhL2FyY2gveDg2L0tjb25maWcgYi9hcmNoL3g4Ni9LY29uZmlnCmluZGV4IGQ5YTk0ZGEwYzI5 Zi4uZjMzYmM4MDU3N2M1IDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9LY29uZmlnCisrKyBiL2FyY2gv eDg2L0tjb25maWcKQEAgLTE1NCw2ICsxNTQsNyBAQCBjb25maWcgWDg2CiAJc2VsZWN0IFNQQVJT RV9JUlEKIAlzZWxlY3QgU1JDVQogCXNlbGVjdCBTWVNDVExfRVhDRVBUSU9OX1RSQUNFCisJc2Vs ZWN0IFRIUkVBRF9JTkZPX0lOX1RBU0sKIAlzZWxlY3QgVVNFUl9TVEFDS1RSQUNFX1NVUFBPUlQK IAlzZWxlY3QgVklSVF9UT19CVVMKIAlzZWxlY3QgWDg2X0RFVl9ETUFfT1BTCQkJaWYgWDg2XzY0 CmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9lbnRyeS9jb21tb24uYyBiL2FyY2gveDg2L2VudHJ5L2Nv bW1vbi5jCmluZGV4IGVjMTM4ZTUzOGM0NC4uZDVmZWFjNWYyNTJkIDEwMDY0NAotLS0gYS9hcmNo L3g4Ni9lbnRyeS9jb21tb24uYworKysgYi9hcmNoL3g4Ni9lbnRyeS9jb21tb24uYwpAQCAtMzEs MTMgKzMxLDYgQEAKICNkZWZpbmUgQ1JFQVRFX1RSQUNFX1BPSU5UUwogI2luY2x1ZGUgPHRyYWNl L2V2ZW50cy9zeXNjYWxscy5oPgogCi1zdGF0aWMgc3RydWN0IHRocmVhZF9pbmZvICpwdF9yZWdz X3RvX3RocmVhZF9pbmZvKHN0cnVjdCBwdF9yZWdzICpyZWdzKQotewotCXVuc2lnbmVkIGxvbmcg dG9wX29mX3N0YWNrID0KLQkJKHVuc2lnbmVkIGxvbmcpKHJlZ3MgKyAxKSArIFRPUF9PRl9LRVJO RUxfU1RBQ0tfUEFERElORzsKLQlyZXR1cm4gKHN0cnVjdCB0aHJlYWRfaW5mbyAqKSh0b3Bfb2Zf c3RhY2sgLSBUSFJFQURfU0laRSk7Ci19Ci0KICNpZmRlZiBDT05GSUdfQ09OVEVYVF9UUkFDS0lO RwogLyogQ2FsbGVkIG9uIGVudHJ5IGZyb20gdXNlciBtb2RlIHdpdGggSVJRcyBvZmYuICovCiBf X3Zpc2libGUgdm9pZCBlbnRlcl9mcm9tX3VzZXJfbW9kZSh2b2lkKQpAQCAtNzgsNyArNzEsNyBA QCBzdGF0aWMgdm9pZCBkb19hdWRpdF9zeXNjYWxsX2VudHJ5KHN0cnVjdCBwdF9yZWdzICpyZWdz LCB1MzIgYXJjaCkKICAqLwogdW5zaWduZWQgbG9uZyBzeXNjYWxsX3RyYWNlX2VudGVyX3BoYXNl MShzdHJ1Y3QgcHRfcmVncyAqcmVncywgdTMyIGFyY2gpCiB7Ci0Jc3RydWN0IHRocmVhZF9pbmZv ICp0aSA9IHB0X3JlZ3NfdG9fdGhyZWFkX2luZm8ocmVncyk7CisJc3RydWN0IHRocmVhZF9pbmZv ICp0aSA9IGN1cnJlbnRfdGhyZWFkX2luZm8oKTsKIAl1bnNpZ25lZCBsb25nIHJldCA9IDA7CiAJ dTMyIHdvcms7CiAKQEAgLTE1Niw3ICsxNDksNyBAQCB1bnNpZ25lZCBsb25nIHN5c2NhbGxfdHJh Y2VfZW50ZXJfcGhhc2UxKHN0cnVjdCBwdF9yZWdzICpyZWdzLCB1MzIgYXJjaCkKIGxvbmcgc3lz Y2FsbF90cmFjZV9lbnRlcl9waGFzZTIoc3RydWN0IHB0X3JlZ3MgKnJlZ3MsIHUzMiBhcmNoLAog CQkJCXVuc2lnbmVkIGxvbmcgcGhhc2UxX3Jlc3VsdCkKIHsKLQlzdHJ1Y3QgdGhyZWFkX2luZm8g KnRpID0gcHRfcmVnc190b190aHJlYWRfaW5mbyhyZWdzKTsKKwlzdHJ1Y3QgdGhyZWFkX2luZm8g KnRpID0gY3VycmVudF90aHJlYWRfaW5mbygpOwogCWxvbmcgcmV0ID0gMDsKIAl1MzIgd29yayA9 IEFDQ0VTU19PTkNFKHRpLT5mbGFncykgJiBfVElGX1dPUktfU1lTQ0FMTF9FTlRSWTsKIApAQCAt MjM5LDcgKzIzMiw3IEBAIHN0YXRpYyB2b2lkIGV4aXRfdG9fdXNlcm1vZGVfbG9vcChzdHJ1Y3Qg cHRfcmVncyAqcmVncywgdTMyIGNhY2hlZF9mbGFncykKIAkJLyogRGlzYWJsZSBJUlFzIGFuZCBy ZXRyeSAqLwogCQlsb2NhbF9pcnFfZGlzYWJsZSgpOwogCi0JCWNhY2hlZF9mbGFncyA9IFJFQURf T05DRShwdF9yZWdzX3RvX3RocmVhZF9pbmZvKHJlZ3MpLT5mbGFncyk7CisJCWNhY2hlZF9mbGFn cyA9IFJFQURfT05DRShjdXJyZW50X3RocmVhZF9pbmZvKCktPmZsYWdzKTsKIAogCQlpZiAoIShj YWNoZWRfZmxhZ3MgJiBFWElUX1RPX1VTRVJNT0RFX0xPT1BfRkxBR1MpKQogCQkJYnJlYWs7CkBA IC0yNTAsNyArMjQzLDcgQEAgc3RhdGljIHZvaWQgZXhpdF90b191c2VybW9kZV9sb29wKHN0cnVj dCBwdF9yZWdzICpyZWdzLCB1MzIgY2FjaGVkX2ZsYWdzKQogLyogQ2FsbGVkIHdpdGggSVJRcyBk aXNhYmxlZC4gKi8KIF9fdmlzaWJsZSBpbmxpbmUgdm9pZCBwcmVwYXJlX2V4aXRfdG9fdXNlcm1v ZGUoc3RydWN0IHB0X3JlZ3MgKnJlZ3MpCiB7Ci0Jc3RydWN0IHRocmVhZF9pbmZvICp0aSA9IHB0 X3JlZ3NfdG9fdGhyZWFkX2luZm8ocmVncyk7CisJc3RydWN0IHRocmVhZF9pbmZvICp0aSA9IGN1 cnJlbnRfdGhyZWFkX2luZm8oKTsKIAl1MzIgY2FjaGVkX2ZsYWdzOwogCiAJaWYgKElTX0VOQUJM RUQoQ09ORklHX1BST1ZFX0xPQ0tJTkcpICYmIFdBUk5fT04oIWlycXNfZGlzYWJsZWQoKSkpCkBA IC0zMDksNyArMzAyLDcgQEAgc3RhdGljIHZvaWQgc3lzY2FsbF9zbG93X2V4aXRfd29yayhzdHJ1 Y3QgcHRfcmVncyAqcmVncywgdTMyIGNhY2hlZF9mbGFncykKICAqLwogX192aXNpYmxlIGlubGlu ZSB2b2lkIHN5c2NhbGxfcmV0dXJuX3Nsb3dwYXRoKHN0cnVjdCBwdF9yZWdzICpyZWdzKQogewot CXN0cnVjdCB0aHJlYWRfaW5mbyAqdGkgPSBwdF9yZWdzX3RvX3RocmVhZF9pbmZvKHJlZ3MpOwor CXN0cnVjdCB0aHJlYWRfaW5mbyAqdGkgPSBjdXJyZW50X3RocmVhZF9pbmZvKCk7CiAJdTMyIGNh Y2hlZF9mbGFncyA9IFJFQURfT05DRSh0aS0+ZmxhZ3MpOwogCiAJQ1RfV0FSTl9PTihjdF9zdGF0 ZSgpICE9IENPTlRFWFRfS0VSTkVMKTsKQEAgLTMzMiw3ICszMjUsNyBAQCBfX3Zpc2libGUgaW5s aW5lIHZvaWQgc3lzY2FsbF9yZXR1cm5fc2xvd3BhdGgoc3RydWN0IHB0X3JlZ3MgKnJlZ3MpCiAj aWZkZWYgQ09ORklHX1g4Nl82NAogX192aXNpYmxlIHZvaWQgZG9fc3lzY2FsbF82NChzdHJ1Y3Qg cHRfcmVncyAqcmVncykKIHsKLQlzdHJ1Y3QgdGhyZWFkX2luZm8gKnRpID0gcHRfcmVnc190b190 aHJlYWRfaW5mbyhyZWdzKTsKKwlzdHJ1Y3QgdGhyZWFkX2luZm8gKnRpID0gY3VycmVudF90aHJl YWRfaW5mbygpOwogCXVuc2lnbmVkIGxvbmcgbnIgPSByZWdzLT5vcmlnX2F4OwogCiAJZW50ZXJf ZnJvbV91c2VyX21vZGUoKTsKQEAgLTM2NSw3ICszNTgsNyBAQCBfX3Zpc2libGUgdm9pZCBkb19z eXNjYWxsXzY0KHN0cnVjdCBwdF9yZWdzICpyZWdzKQogICovCiBzdGF0aWMgX19hbHdheXNfaW5s aW5lIHZvaWQgZG9fc3lzY2FsbF8zMl9pcnFzX29uKHN0cnVjdCBwdF9yZWdzICpyZWdzKQogewot CXN0cnVjdCB0aHJlYWRfaW5mbyAqdGkgPSBwdF9yZWdzX3RvX3RocmVhZF9pbmZvKHJlZ3MpOwor CXN0cnVjdCB0aHJlYWRfaW5mbyAqdGkgPSBjdXJyZW50X3RocmVhZF9pbmZvKCk7CiAJdW5zaWdu ZWQgaW50IG5yID0gKHVuc2lnbmVkIGludClyZWdzLT5vcmlnX2F4OwogCiAjaWZkZWYgQ09ORklH X0lBMzJfRU1VTEFUSU9OCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9lbnRyeS9lbnRyeV82NC5TIGIv YXJjaC94ODYvZW50cnkvZW50cnlfNjQuUwppbmRleCA5ZWUwZGExODA3ZWQuLmY0OTc0MmRlMmM2 NSAxMDA2NDQKLS0tIGEvYXJjaC94ODYvZW50cnkvZW50cnlfNjQuUworKysgYi9hcmNoL3g4Ni9l bnRyeS9lbnRyeV82NC5TCkBAIC0xNzksNyArMTc5LDggQEAgR0xPQkFMKGVudHJ5X1NZU0NBTExf NjRfYWZ0ZXJfc3dhcGdzKQogCSAqIElmIHdlIG5lZWQgdG8gZG8gZW50cnkgd29yayBvciBpZiB3 ZSBndWVzcyB3ZSdsbCBuZWVkIHRvIGRvCiAJICogZXhpdCB3b3JrLCBnbyBzdHJhaWdodCB0byB0 aGUgc2xvdyBwYXRoLgogCSAqLwotCXRlc3RsCSRfVElGX1dPUktfU1lTQ0FMTF9FTlRSWXxfVElG X0FMTFdPUktfTUFTSywgQVNNX1RIUkVBRF9JTkZPKFRJX2ZsYWdzLCAlcnNwLCBTSVpFT0ZfUFRS RUdTKQorCUdFVF9USFJFQURfSU5GTyglcjExKQorCXRlc3RsCSRfVElGX1dPUktfU1lTQ0FMTF9F TlRSWXxfVElGX0FMTFdPUktfTUFTSywgVElfZmxhZ3MoJXIxMSkKIAlqbnoJZW50cnlfU1lTQ0FM TDY0X3Nsb3dfcGF0aAogCiBlbnRyeV9TWVNDQUxMXzY0X2Zhc3RwYXRoOgpAQCAtMjE3LDcgKzIx OCw4IEBAIGVudHJ5X1NZU0NBTExfNjRfZmFzdHBhdGg6CiAJICovCiAJRElTQUJMRV9JTlRFUlJV UFRTKENMQlJfTk9ORSkKIAlUUkFDRV9JUlFTX09GRgotCXRlc3RsCSRfVElGX0FMTFdPUktfTUFT SywgQVNNX1RIUkVBRF9JTkZPKFRJX2ZsYWdzLCAlcnNwLCBTSVpFT0ZfUFRSRUdTKQorCUdFVF9U SFJFQURfSU5GTyglcjExKQorCXRlc3RsCSRfVElGX0FMTFdPUktfTUFTSywgVElfZmxhZ3MoJXIx MSkKIAlqbnoJMWYKIAogCUxPQ0tERVBfU1lTX0VYSVQKQEAgLTM2OCw5ICszNzAsMTAgQEAgRU5E KHB0cmVnc19cZnVuYykKICAqIEEgbmV3bHkgZm9ya2VkIHByb2Nlc3MgZGlyZWN0bHkgY29udGV4 dCBzd2l0Y2hlcyBpbnRvIHRoaXMgYWRkcmVzcy4KICAqCiAgKiByZGk6IHByZXYgdGFzayB3ZSBz d2l0Y2hlZCBmcm9tCisgKiByc2k6IHRhc2sgd2UncmUgc3dpdGNoaW5nIHRvCiAgKi8KIEVOVFJZ KHJldF9mcm9tX2ZvcmspCi0JTE9DSyA7IGJ0ciAkVElGX0ZPUkssIFRJX2ZsYWdzKCVyOCkKKwlM T0NLIDsgYnRyICRUSUZfRk9SSywgVElfZmxhZ3MoJXJzaSkJLyogcnNpOiB0aGlzIG5ld2x5IGZv cmtlZCB0YXNrICovCiAKIAljYWxsCXNjaGVkdWxlX3RhaWwJCQkvKiByZGk6ICdwcmV2JyB0YXNr IHBhcmFtZXRlciAqLwogCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rcHJvYmVz LmggYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rcHJvYmVzLmgKaW5kZXggNDQyMWI1ZGE0MDlkLi4x ZDI5OTdlNzRiMDggMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL2twcm9iZXMuaAor KysgYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rcHJvYmVzLmgKQEAgLTM4LDEyICszOCwxMiBAQCB0 eXBlZGVmIHU4IGtwcm9iZV9vcGNvZGVfdDsKICNkZWZpbmUgUkVMQVRJVkVDQUxMX09QQ09ERSAw eGU4CiAjZGVmaW5lIFJFTEFUSVZFX0FERFJfU0laRSA0CiAjZGVmaW5lIE1BWF9TVEFDS19TSVpF IDY0Ci0jZGVmaW5lIE1JTl9TVEFDS19TSVpFKEFERFIpCQkJCQkgICAgICAgXAotCSgoKE1BWF9T VEFDS19TSVpFKSA8ICgoKHVuc2lnbmVkIGxvbmcpY3VycmVudF90aHJlYWRfaW5mbygpKSArIFwK LQkJCSAgICAgIFRIUkVBRF9TSVpFIC0gKHVuc2lnbmVkIGxvbmcpKEFERFIpKSkgICAgXAotCSA/ IChNQVhfU1RBQ0tfU0laRSkJCQkJCSAgICAgICBcCi0JIDogKCgodW5zaWduZWQgbG9uZyljdXJy ZW50X3RocmVhZF9pbmZvKCkpICsJCSAgICAgICBcCi0JICAgIFRIUkVBRF9TSVpFIC0gKHVuc2ln bmVkIGxvbmcpKEFERFIpKSkKKworI2RlZmluZSBjdXJyZW50X3N0YWNrX3RvcCgpICgodW5zaWdu ZWQgbG9uZyl0YXNrX3N0YWNrX3BhZ2UoY3VycmVudCkrVEhSRUFEX1NJWkUpCisjZGVmaW5lIGN1 cnJlbnRfc3RhY2tfc2l6ZShBRERSKSAoY3VycmVudF9zdGFja190b3AoKSAtICh1bnNpZ25lZCBs b25nKShBRERSKSkKKworI2RlZmluZSBNSU5fU1RBQ0tfU0laRShBRERSKSBcCisJKE1BWF9TVEFD S19TSVpFIDwgY3VycmVudF9zdGFja19zaXplKEFERFIpID8gTUFYX1NUQUNLX1NJWkUgOiBjdXJy ZW50X3N0YWNrX3NpemUoQUREUikpCiAKICNkZWZpbmUgZmx1c2hfaW5zbl9zbG90KHApCWRvIHsg fSB3aGlsZSAoMCkKIApkaWZmIC0tZ2l0IGEvYXJjaC94ODYvaW5jbHVkZS9hc20vc3dpdGNoX3Rv LmggYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9zd2l0Y2hfdG8uaAppbmRleCA4ZjMyMWExYjAzYTEu LmFlMGFhMDYxMmM2NyAxMDA2NDQKLS0tIGEvYXJjaC94ODYvaW5jbHVkZS9hc20vc3dpdGNoX3Rv LmgKKysrIGIvYXJjaC94ODYvaW5jbHVkZS9hc20vc3dpdGNoX3RvLmgKQEAgLTExMCwxOCArMTEw LDE2IEBAIGRvIHsJCQkJCQkJCQlcCiAJICAgICAiY2FsbCBfX3N3aXRjaF90b1xuXHQiCQkJCQkg IFwKIAkgICAgICJtb3ZxICJfX3BlcmNwdV9hcmcoW2N1cnJlbnRfdGFza10pIiwlJXJzaVxuXHQi CQkgIFwKIAkgICAgIF9fc3dpdGNoX2NhbmFyeQkJCQkJCSAgXAotCSAgICAgIm1vdnEgJVBbdGhy ZWFkX2luZm9dKCUlcnNpKSwlJXI4XG5cdCIJCQkgIFwKIAkgICAgICJtb3ZxICUlcmF4LCUlcmRp XG5cdCIgCQkJCQkgIFwKLQkgICAgICJ0ZXN0bCAgJVtfdGlmX2ZvcmtdLCVQW3RpX2ZsYWdzXSgl JXI4KVxuXHQiCQkgIFwKKwkgICAgICJ0ZXN0bCAgJVtfdGlmX2ZvcmtdLCVQW3RpX2ZsYWdzXSgl JXJzaSlcblx0IgkJICBcCiAJICAgICAiam56ICAgcmV0X2Zyb21fZm9ya1xuXHQiCQkJCQkgIFwK IAkgICAgIFJFU1RPUkVfQ09OVEVYVAkJCQkJCSAgXAogCSAgICAgOiAiPWEiIChsYXN0KQkJCQkJ ICAJICBcCiAJICAgICAgIF9fc3dpdGNoX2NhbmFyeV9vcGFyYW0JCQkJCSAgXAogCSAgICAgOiBb bmV4dF0gIlMiIChuZXh0KSwgW3ByZXZdICJEIiAocHJldiksCQkJICBcCiAJICAgICAgIFt0aHJl YWRyc3BdICJpIiAob2Zmc2V0b2Yoc3RydWN0IHRhc2tfc3RydWN0LCB0aHJlYWQuc3ApKSwgXAot CSAgICAgICBbdGlfZmxhZ3NdICJpIiAob2Zmc2V0b2Yoc3RydWN0IHRocmVhZF9pbmZvLCBmbGFn cykpLAkgIFwKKwkgICAgICAgW3RpX2ZsYWdzXSAiaSIgKG9mZnNldG9mKHN0cnVjdCB0YXNrX3N0 cnVjdCwgdGhyZWFkX2luZm8uZmxhZ3MpKSwJICBcCiAJICAgICAgIFtfdGlmX2ZvcmtdICJpIiAo X1RJRl9GT1JLKSwJCQkgIAkgIFwKLQkgICAgICAgW3RocmVhZF9pbmZvXSAiaSIgKG9mZnNldG9m KHN0cnVjdCB0YXNrX3N0cnVjdCwgc3RhY2spKSwgICBcCiAJICAgICAgIFtjdXJyZW50X3Rhc2td ICJtIiAoY3VycmVudF90YXNrKQkJCSAgXAogCSAgICAgICBfX3N3aXRjaF9jYW5hcnlfaXBhcmFt CQkJCQkgIFwKIAkgICAgIDogIm1lbW9yeSIsICJjYyIgX19FWFRSQV9DTE9CQkVSKQpkaWZmIC0t Z2l0IGEvYXJjaC94ODYvaW5jbHVkZS9hc20vdGhyZWFkX2luZm8uaCBiL2FyY2gveDg2L2luY2x1 ZGUvYXNtL3RocmVhZF9pbmZvLmgKaW5kZXggMzBjMTMzYWMwNWNkLi5lZWY2ODdmZGM5MGQgMTAw NjQ0Ci0tLSBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL3RocmVhZF9pbmZvLmgKKysrIGIvYXJjaC94 ODYvaW5jbHVkZS9hc20vdGhyZWFkX2luZm8uaApAQCAtNTMsMjQgKzUzLDIyIEBAIHN0cnVjdCB0 YXNrX3N0cnVjdDsKICNpbmNsdWRlIDxsaW51eC9hdG9taWMuaD4KIAogc3RydWN0IHRocmVhZF9p bmZvIHsKLQlzdHJ1Y3QgdGFza19zdHJ1Y3QJKnRhc2s7CQkvKiBtYWluIHRhc2sgc3RydWN0dXJl ICovCiAJX191MzIJCQlmbGFnczsJCS8qIGxvdyBsZXZlbCBmbGFncyAqLwogCV9fdTMyCQkJc3Rh dHVzOwkJLyogdGhyZWFkIHN5bmNocm9ub3VzIGZsYWdzICovCiAJX191MzIJCQljcHU7CQkvKiBj dXJyZW50IENQVSAqLwotCW1tX3NlZ21lbnRfdAkJYWRkcl9saW1pdDsKIAl1bnNpZ25lZCBpbnQJ CXNpZ19vbl91YWNjZXNzX2Vycm9yOjE7CiAJdW5zaWduZWQgaW50CQl1YWNjZXNzX2VycjoxOwkv KiB1YWNjZXNzIGZhaWxlZCAqLworCW1tX3NlZ21lbnRfdAkJYWRkcl9saW1pdDsKIH07CiAKICNk ZWZpbmUgSU5JVF9USFJFQURfSU5GTyh0c2spCQkJXAogewkJCQkJCVwKLQkudGFzawkJPSAmdHNr LAkJCVwKIAkuZmxhZ3MJCT0gMCwJCQlcCiAJLmNwdQkJPSAwLAkJCVwKIAkuYWRkcl9saW1pdAk9 IEtFUk5FTF9EUywJCVwKIH0KIAotI2RlZmluZSBpbml0X3RocmVhZF9pbmZvCShpbml0X3RocmVh ZF91bmlvbi50aHJlYWRfaW5mbykKKyNkZWZpbmUgaW5pdF90aHJlYWRfaW5mbwkoaW5pdF90YXNr LnRocmVhZF9pbmZvKQogI2RlZmluZSBpbml0X3N0YWNrCQkoaW5pdF90aHJlYWRfdW5pb24uc3Rh Y2spCiAKICNlbHNlIC8qICFfX0FTU0VNQkxZX18gKi8KQEAgLTE2Niw3ICsxNjQsNyBAQCBzdHJ1 Y3QgdGhyZWFkX2luZm8gewogCiBzdGF0aWMgaW5saW5lIHN0cnVjdCB0aHJlYWRfaW5mbyAqY3Vy cmVudF90aHJlYWRfaW5mbyh2b2lkKQogewotCXJldHVybiAoc3RydWN0IHRocmVhZF9pbmZvICop KGN1cnJlbnRfdG9wX29mX3N0YWNrKCkgLSBUSFJFQURfU0laRSk7CisJcmV0dXJuIChzdHJ1Y3Qg dGhyZWFkX2luZm8gKiljdXJyZW50OwogfQogCiBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcg Y3VycmVudF9zdGFja19wb2ludGVyKHZvaWQpCkBAIC0xODgsMzUgKzE4Niw3IEBAIHN0YXRpYyBp bmxpbmUgdW5zaWduZWQgbG9uZyBjdXJyZW50X3N0YWNrX3BvaW50ZXIodm9pZCkKIAogLyogTG9h ZCB0aHJlYWRfaW5mbyBhZGRyZXNzIGludG8gInJlZyIgKi8KICNkZWZpbmUgR0VUX1RIUkVBRF9J TkZPKHJlZykgXAotCV9BU01fTU9WIFBFUl9DUFVfVkFSKGNwdV9jdXJyZW50X3RvcF9vZl9zdGFj aykscmVnIDsgXAotCV9BU01fU1VCICQoVEhSRUFEX1NJWkUpLHJlZyA7Ci0KLS8qCi0gKiBBU00g b3BlcmFuZCB3aGljaCBldmFsdWF0ZXMgdG8gYSAndGhyZWFkX2luZm8nIGFkZHJlc3Mgb2YKLSAq IHRoZSBjdXJyZW50IHRhc2ssIGlmIGl0IGlzIGtub3duIHRoYXQgInJlZyIgaXMgZXhhY3RseSAi b2ZmIgotICogYnl0ZXMgYmVsb3cgdGhlIHRvcCBvZiB0aGUgc3RhY2sgY3VycmVudGx5LgotICoK LSAqICggVGhlIGtlcm5lbCBzdGFjaydzIHNpemUgaXMga25vd24gYXQgYnVpbGQgdGltZSwgaXQg aXMgdXN1YWxseQotICogICAyIG9yIDQgcGFnZXMsIGFuZCB0aGUgYm90dG9tICBvZiB0aGUga2Vy bmVsIHN0YWNrIGNvbnRhaW5zCi0gKiAgIHRoZSB0aHJlYWRfaW5mbyBzdHJ1Y3R1cmUuIFNvIHRv IGFjY2VzcyB0aGUgdGhyZWFkX2luZm8gdmVyeQotICogICBxdWlja2x5IGZyb20gYXNzZW1ibHkg Y29kZSB3ZSBjYW4gY2FsY3VsYXRlIGRvd24gZnJvbSB0aGUKLSAqICAgdG9wIG9mIHRoZSBrZXJu ZWwgc3RhY2sgdG8gdGhlIGJvdHRvbSwgdXNpbmcgY29uc3RhbnQsCi0gKiAgIGJ1aWxkLXRpbWUg Y2FsY3VsYXRpb25zIG9ubHkuICkKLSAqCi0gKiBGb3IgZXhhbXBsZSwgdG8gZmV0Y2ggdGhlIGN1 cnJlbnQgdGhyZWFkX2luZm8tPmZsYWdzIHZhbHVlIGludG8gJWVheAotICogb24geDg2LTY0IGRl ZmNvbmZpZyBrZXJuZWxzLCBpbiBzeXNjYWxsIGVudHJ5IGNvZGUgd2hlcmUgUlNQIGlzCi0gKiBj dXJyZW50bHkgYXQgZXhhY3RseSBTSVpFT0ZfUFRSRUdTIGJ5dGVzIGF3YXkgZnJvbSB0aGUgdG9w IG9mIHRoZQotICogc3RhY2s6Ci0gKgotICogICAgICBtb3YgQVNNX1RIUkVBRF9JTkZPKFRJX2Zs YWdzLCAlcnNwLCBTSVpFT0ZfUFRSRUdTKSwgJWVheAotICoKLSAqIHdpbGwgdHJhbnNsYXRlIHRv OgotICoKLSAqICAgICAgOGIgODQgMjQgYjggYzAgZmYgZmYgICAgICBtb3YgICAgLTB4M2Y0OCgl cnNwKSwgJWVheAotICoKLSAqIHdoaWNoIGlzIGJlbG93IHRoZSBjdXJyZW50IFJTUCBieSBhbG1v c3QgMTZLLgotICovCi0jZGVmaW5lIEFTTV9USFJFQURfSU5GTyhmaWVsZCwgcmVnLCBvZmYpICgo ZmllbGQpKyhvZmYpLVRIUkVBRF9TSVpFKShyZWcpCisJX0FTTV9NT1YgUEVSX0NQVV9WQVIoY3Vy cmVudF90YXNrKSxyZWcKIAogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2tlcm5lbC9k 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 YXNrLmgKaW5kZXggZjJjYjhkNDU1MTNkLi5hMDBmNTNiNjRjMDkgMTAwNjQ0Ci0tLSBhL2luY2x1 ZGUvbGludXgvaW5pdF90YXNrLmgKKysrIGIvaW5jbHVkZS9saW51eC9pbml0X3Rhc2suaApAQCAt MTUsNiArMTUsOCBAQAogI2luY2x1ZGUgPG5ldC9uZXRfbmFtZXNwYWNlLmg+CiAjaW5jbHVkZSA8 bGludXgvc2NoZWQvcnQuaD4KIAorI2luY2x1ZGUgPGFzbS90aHJlYWRfaW5mby5oPgorCiAjaWZk ZWYgQ09ORklHX1NNUAogIyBkZWZpbmUgSU5JVF9QVVNIQUJMRV9UQVNLUyh0c2spCQkJCQlcCiAJ LnB1c2hhYmxlX3Rhc2tzID0gUExJU1RfTk9ERV9JTklUKHRzay5wdXNoYWJsZV90YXNrcywgTUFY X1BSSU8pLApAQCAtMTgzLDEyICsxODUsMTkgQEAgZXh0ZXJuIHN0cnVjdCB0YXNrX2dyb3VwIHJv b3RfdGFza19ncm91cDsKICMgZGVmaW5lIElOSVRfS0FTQU4odHNrKQogI2VuZGlmCiAKKyNpZmRl ZiBDT05GSUdfVEhSRUFEX0lORk9fSU5fVEFTSworIyBkZWZpbmUgSU5JVF9UQVNLX1RJKHRzaykg LnRocmVhZF9pbmZvID0gSU5JVF9USFJFQURfSU5GTyh0c2spLAorI2Vsc2UKKyMgZGVmaW5lIElO SVRfVEFTS19USSh0c2spCisjZW5kaWYKKwogLyoKICAqICBJTklUX1RBU0sgaXMgdXNlZCB0byBz ZXQgdXAgdGhlIGZpcnN0IHRhc2sgdGFibGUsIHRvdWNoIGF0CiAgKiB5b3VyIG93biByaXNrIS4g QmFzZT0wLCBsaW1pdD0weDFmZmZmZiAoPTJNQikKICAqLwogI2RlZmluZSBJTklUX1RBU0sodHNr KQlcCiB7CQkJCQkJCQkJXAorCUlOSVRfVEFTS19USSh0c2spCQkJCQkJXAogCS5zdGF0ZQkJPSAw LAkJCQkJCVwKIAkuc3RhY2sJCT0gJmluaXRfdGhyZWFkX2luZm8sCQkJCVwKIAkudXNhZ2UJCT0g QVRPTUlDX0lOSVQoMiksCQkJCVwKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvc2NoZWQuaCBi L2luY2x1ZGUvbGludXgvc2NoZWQuaAppbmRleCA2ZTQyYWRhMjYzNDUuLjA2MjM2YTM2YmExNyAx MDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9zY2hlZC5oCisrKyBiL2luY2x1ZGUvbGludXgvc2No ZWQuaApAQCAtMTQ1Niw2ICsxNDU2LDkgQEAgc3RydWN0IHRsYmZsdXNoX3VubWFwX2JhdGNoIHsK IH07CiAKIHN0cnVjdCB0YXNrX3N0cnVjdCB7CisjaWZkZWYgQ09ORklHX1RIUkVBRF9JTkZPX0lO X1RBU0sKKwlzdHJ1Y3QgdGhyZWFkX2luZm8gdGhyZWFkX2luZm87CisjZW5kaWYKIAl2b2xhdGls ZSBsb25nIHN0YXRlOwkvKiAtMSB1bnJ1bm5hYmxlLCAwIHJ1bm5hYmxlLCA+MCBzdG9wcGVkICov CiAJdm9pZCAqc3RhY2s7CiAJYXRvbWljX3QgdXNhZ2U7CkBAIC0yNTM5LDcgKzI1NDIsOSBAQCBl eHRlcm4gdm9pZCBzZXRfY3Vycl90YXNrKGludCBjcHUsIHN0cnVjdCB0YXNrX3N0cnVjdCAqcCk7 CiB2b2lkIHlpZWxkKHZvaWQpOwogCiB1bmlvbiB0aHJlYWRfdW5pb24geworI2lmbmRlZiBDT05G SUdfVEhSRUFEX0lORk9fSU5fVEFTSwogCXN0cnVjdCB0aHJlYWRfaW5mbyB0aHJlYWRfaW5mbzsK KyNlbmRpZgogCXVuc2lnbmVkIGxvbmcgc3RhY2tbVEhSRUFEX1NJWkUvc2l6ZW9mKGxvbmcpXTsK IH07CiAKQEAgLTI5NjcsNyArMjk3MiwxNCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgdGhyZWFkZ3Jv dXBfY2hhbmdlX2VuZChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaykKIAljZ3JvdXBfdGhyZWFkZ3Jv dXBfY2hhbmdlX2VuZCh0c2spOwogfQogCi0jaWZuZGVmIF9fSEFWRV9USFJFQURfRlVOQ1RJT05T CisjaWZkZWYgQ09ORklHX1RIUkVBRF9JTkZPX0lOX1RBU0sKKworI2RlZmluZSB0YXNrX3RocmVh ZF9pbmZvKHRhc2spCQkoJih0YXNrKS0+dGhyZWFkX2luZm8pCisjZGVmaW5lIHRhc2tfc3RhY2tf cGFnZSh0YXNrKQkJKCh0YXNrKS0+c3RhY2spCisjZGVmaW5lIHNldHVwX3RocmVhZF9zdGFjayhu ZXcsb2xkKQlkbyB7IH0gd2hpbGUoMCkKKyNkZWZpbmUgZW5kX29mX3N0YWNrKHRhc2spCQkoKHVu c2lnbmVkIGxvbmcgKil0YXNrX3N0YWNrX3BhZ2UodGFzaykpCisKKyNlbGlmICFkZWZpbmVkKF9f SEFWRV9USFJFQURfRlVOQ1RJT05TKQogCiAjZGVmaW5lIHRhc2tfdGhyZWFkX2luZm8odGFzaykJ KChzdHJ1Y3QgdGhyZWFkX2luZm8gKikodGFzayktPnN0YWNrKQogI2RlZmluZSB0YXNrX3N0YWNr X3BhZ2UodGFzaykJKCh0YXNrKS0+c3RhY2spCmRpZmYgLS1naXQgYS9pbml0L0tjb25maWcgYi9p bml0L0tjb25maWcKaW5kZXggZjc1NWE2MDJkNGExLi4wYzgzYWY2ZDM3NTMgMTAwNjQ0Ci0tLSBh L2luaXQvS2NvbmZpZworKysgYi9pbml0L0tjb25maWcKQEAgLTI2LDYgKzI2LDkgQEAgY29uZmln IElSUV9XT1JLCiBjb25maWcgQlVJTERUSU1FX0VYVEFCTEVfU09SVAogCWJvb2wKIAorY29uZmln IFRIUkVBRF9JTkZPX0lOX1RBU0sKKwlib29sCisKIG1lbnUgIkdlbmVyYWwgc2V0dXAiCiAKIGNv bmZpZyBCUk9LRU4KZGlmZiAtLWdpdCBhL2luaXQvaW5pdF90YXNrLmMgYi9pbml0L2luaXRfdGFz ay5jCmluZGV4IGJhMGE3ZjM2MmQ5ZS4uMTFmODNiZTFmYTc5IDEwMDY0NAotLS0gYS9pbml0L2lu aXRfdGFzay5jCisrKyBiL2luaXQvaW5pdF90YXNrLmMKQEAgLTIyLDUgKzIyLDggQEAgRVhQT1JU X1NZTUJPTChpbml0X3Rhc2spOwogICogSW5pdGlhbCB0aHJlYWQgc3RydWN0dXJlLiBBbGlnbm1l bnQgb2YgdGhpcyBpcyBoYW5kbGVkIGJ5IGEgc3BlY2lhbAogICogbGlua2VyIG1hcCBlbnRyeS4K ICAqLwotdW5pb24gdGhyZWFkX3VuaW9uIGluaXRfdGhyZWFkX3VuaW9uIF9faW5pdF90YXNrX2Rh dGEgPQotCXsgSU5JVF9USFJFQURfSU5GTyhpbml0X3Rhc2spIH07Cit1bmlvbiB0aHJlYWRfdW5p b24gaW5pdF90aHJlYWRfdW5pb24gX19pbml0X3Rhc2tfZGF0YSA9IHsKKyNpZm5kZWYgQ09ORklH X1RIUkVBRF9JTkZPX0lOX1RBU0sKKwlJTklUX1RIUkVBRF9JTkZPKGluaXRfdGFzaykKKyNlbmRp ZgorfTsK --001a113d40be58486205360020b0-- 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: References: <20160623143126.GA16664@redhat.com> <20160623170352.GA17372@redhat.com> <20160623185340.GO30154@twins.programming.kicks-ass.net> From: Linus Torvalds Date: Thu, 23 Jun 2016 23:17:32 -0700 Message-ID: Content-Type: multipart/mixed; boundary=001a113d40be58486205360020b0 Subject: [kernel-hardening] Re: [PATCH v3 00/13] Virtually mapped stacks with guard pages (x86, core) To: Peter Zijlstra Cc: 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 , Brian Gerst , "kernel-hardening@lists.openwall.com" , Josh Poimboeuf , Jann Horn , Heiko Carstens List-ID: --001a113d40be58486205360020b0 Content-Type: text/plain; charset=UTF-8 On Thu, Jun 23, 2016 at 12:17 PM, Linus Torvalds wrote: > > With the goal being that I'm hoping that we can then actually get rid > of this (at least on x86-64, even if we leave it in some other > architectures) in 4.8. The context here was that we could almost get rid of thread-info entirely, at least for x86-64, by moving it into struct task_struct. It turns out that we're not *that* far off after the obvious cleanups I already committed, but I couldn't get things quite to work. I'm attaching a patch that I wrote today that doesn't boot, but "looks right". The reason I'm attaching it is because I'm hoping somebody wants to take a look and maybe see what else I missed, but mostly because I think the patch is interesting in a couple of cases where we just do incredibly ugly things. First off, some code that Andy wrote when he re-organized the entry path. Oh Gods, Andy. That pt_regs_to_thread_info() thing made me want to do unspeakable acts on a poor innocent wax figure that looked _exactly_ like you. I just got rid of pt_regs_to_thread_info() entirely, and just replaced it with current_thread_info(). I'm not at all convinced that trying to be that clever was really a good idea. Secondly, the x86-64 ret_from_fork calling convention was documented wrongly. It says %rdi contains the previous task pointer. Yes it does, but it doesn't mention that %r8 is supposed to contain the new thread_info. That was fun to find. And thirdly, the stack size games that asm/kprobes.h plays are just disgusting. I stared at that code for much too long. I may in fact be going blind as a result. The rest was fairly straightforward, although since the end result doesn't actually work, that "straightforward" may be broken too. But the basic approach _looks_ sane. Comments? Anybody want to play with this and see where I went wrong? (Note - this patch was written on top of the two thread-info removal patches I committed in da01e18a37a5 x86: avoid avoid passing around 'thread_info' in stack dumping code 6720a305df74 locking: avoid passing around 'thread_info' in mutex debugging code and depends on them, since "ti->task" no longer exists with CONFIG_THREAD_INFO_IN_TASK. "ti" and "task" will have the same value). Linus --001a113d40be58486205360020b0 Content-Type: text/plain; charset=US-ASCII; name="patch.diff" Content-Disposition: attachment; filename="patch.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_iptc1t6c0 VGhpcyBpcyBhIG5vbi13b3JraW5nIGF0dGVtcHQgYXQgbW92aW5nIHRoZSB0aHJlYWRfaW5mbyBp bnRvIHRoZQp0YXNrX3N0cnVjdAoKIGFyY2gveDg2L0tjb25maWcgICAgICAgICAgICAgICAgICAg fCAgMSArCiBhcmNoL3g4Ni9lbnRyeS9jb21tb24uYyAgICAgICAgICAgIHwgMjEgKysrKysrKy0t LS0tLS0tLS0tLS0tCiBhcmNoL3g4Ni9lbnRyeS9lbnRyeV82NC5TICAgICAgICAgIHwgIDkgKysr KysrLS0tCiBhcmNoL3g4Ni9pbmNsdWRlL2FzbS9rcHJvYmVzLmggICAgIHwgMTIgKysrKysrLS0t LS0tCiBhcmNoL3g4Ni9pbmNsdWRlL2FzbS9zd2l0Y2hfdG8uaCAgIHwgIDYgKystLS0tCiBhcmNo L3g4Ni9pbmNsdWRlL2FzbS90aHJlYWRfaW5mby5oIHwgMzggKysrKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KIGFyY2gveDg2L2tlcm5lbC9kdW1wc3RhY2suYyAgICAgICAgfCAg MiArLQogYXJjaC94ODYva2VybmVsL2lycV8zMi5jICAgICAgICAgICB8ICAyIC0tCiBhcmNoL3g4 Ni9rZXJuZWwvaXJxXzY0LmMgICAgICAgICAgIHwgIDMgKy0tCiBhcmNoL3g4Ni9rZXJuZWwvcHJv Y2Vzcy5jICAgICAgICAgIHwgIDYgKystLS0tCiBhcmNoL3g4Ni91bS9wdHJhY2VfMzIuYyAgICAg ICAgICAgIHwgIDggKysrKy0tLS0KIGluY2x1ZGUvbGludXgvaW5pdF90YXNrLmggICAgICAgICAg fCAgOSArKysrKysrKysKIGluY2x1ZGUvbGludXgvc2NoZWQuaCAgICAgICAgICAgICAgfCAxNCAr KysrKysrKysrKysrLQogaW5pdC9LY29uZmlnICAgICAgICAgICAgICAgICAgICAgICB8ICAzICsr KwogaW5pdC9pbml0X3Rhc2suYyAgICAgICAgICAgICAgICAgICB8ICA3ICsrKysrLS0KIDE1IGZp bGVzIGNoYW5nZWQsIDY0IGluc2VydGlvbnMoKyksIDc3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp dCBhL2FyY2gveDg2L0tjb25maWcgYi9hcmNoL3g4Ni9LY29uZmlnCmluZGV4IGQ5YTk0ZGEwYzI5 Zi4uZjMzYmM4MDU3N2M1IDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9LY29uZmlnCisrKyBiL2FyY2gv eDg2L0tjb25maWcKQEAgLTE1NCw2ICsxNTQsNyBAQCBjb25maWcgWDg2CiAJc2VsZWN0IFNQQVJT RV9JUlEKIAlzZWxlY3QgU1JDVQogCXNlbGVjdCBTWVNDVExfRVhDRVBUSU9OX1RSQUNFCisJc2Vs ZWN0IFRIUkVBRF9JTkZPX0lOX1RBU0sKIAlzZWxlY3QgVVNFUl9TVEFDS1RSQUNFX1NVUFBPUlQK IAlzZWxlY3QgVklSVF9UT19CVVMKIAlzZWxlY3QgWDg2X0RFVl9ETUFfT1BTCQkJaWYgWDg2XzY0 CmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9lbnRyeS9jb21tb24uYyBiL2FyY2gveDg2L2VudHJ5L2Nv bW1vbi5jCmluZGV4IGVjMTM4ZTUzOGM0NC4uZDVmZWFjNWYyNTJkIDEwMDY0NAotLS0gYS9hcmNo L3g4Ni9lbnRyeS9jb21tb24uYworKysgYi9hcmNoL3g4Ni9lbnRyeS9jb21tb24uYwpAQCAtMzEs MTMgKzMxLDYgQEAKICNkZWZpbmUgQ1JFQVRFX1RSQUNFX1BPSU5UUwogI2luY2x1ZGUgPHRyYWNl L2V2ZW50cy9zeXNjYWxscy5oPgogCi1zdGF0aWMgc3RydWN0IHRocmVhZF9pbmZvICpwdF9yZWdz X3RvX3RocmVhZF9pbmZvKHN0cnVjdCBwdF9yZWdzICpyZWdzKQotewotCXVuc2lnbmVkIGxvbmcg dG9wX29mX3N0YWNrID0KLQkJKHVuc2lnbmVkIGxvbmcpKHJlZ3MgKyAxKSArIFRPUF9PRl9LRVJO RUxfU1RBQ0tfUEFERElORzsKLQlyZXR1cm4gKHN0cnVjdCB0aHJlYWRfaW5mbyAqKSh0b3Bfb2Zf c3RhY2sgLSBUSFJFQURfU0laRSk7Ci19Ci0KICNpZmRlZiBDT05GSUdfQ09OVEVYVF9UUkFDS0lO RwogLyogQ2FsbGVkIG9uIGVudHJ5IGZyb20gdXNlciBtb2RlIHdpdGggSVJRcyBvZmYuICovCiBf X3Zpc2libGUgdm9pZCBlbnRlcl9mcm9tX3VzZXJfbW9kZSh2b2lkKQpAQCAtNzgsNyArNzEsNyBA QCBzdGF0aWMgdm9pZCBkb19hdWRpdF9zeXNjYWxsX2VudHJ5KHN0cnVjdCBwdF9yZWdzICpyZWdz LCB1MzIgYXJjaCkKICAqLwogdW5zaWduZWQgbG9uZyBzeXNjYWxsX3RyYWNlX2VudGVyX3BoYXNl MShzdHJ1Y3QgcHRfcmVncyAqcmVncywgdTMyIGFyY2gpCiB7Ci0Jc3RydWN0IHRocmVhZF9pbmZv ICp0aSA9IHB0X3JlZ3NfdG9fdGhyZWFkX2luZm8ocmVncyk7CisJc3RydWN0IHRocmVhZF9pbmZv ICp0aSA9IGN1cnJlbnRfdGhyZWFkX2luZm8oKTsKIAl1bnNpZ25lZCBsb25nIHJldCA9IDA7CiAJ dTMyIHdvcms7CiAKQEAgLTE1Niw3ICsxNDksNyBAQCB1bnNpZ25lZCBsb25nIHN5c2NhbGxfdHJh Y2VfZW50ZXJfcGhhc2UxKHN0cnVjdCBwdF9yZWdzICpyZWdzLCB1MzIgYXJjaCkKIGxvbmcgc3lz Y2FsbF90cmFjZV9lbnRlcl9waGFzZTIoc3RydWN0IHB0X3JlZ3MgKnJlZ3MsIHUzMiBhcmNoLAog CQkJCXVuc2lnbmVkIGxvbmcgcGhhc2UxX3Jlc3VsdCkKIHsKLQlzdHJ1Y3QgdGhyZWFkX2luZm8g KnRpID0gcHRfcmVnc190b190aHJlYWRfaW5mbyhyZWdzKTsKKwlzdHJ1Y3QgdGhyZWFkX2luZm8g KnRpID0gY3VycmVudF90aHJlYWRfaW5mbygpOwogCWxvbmcgcmV0ID0gMDsKIAl1MzIgd29yayA9 IEFDQ0VTU19PTkNFKHRpLT5mbGFncykgJiBfVElGX1dPUktfU1lTQ0FMTF9FTlRSWTsKIApAQCAt MjM5LDcgKzIzMiw3IEBAIHN0YXRpYyB2b2lkIGV4aXRfdG9fdXNlcm1vZGVfbG9vcChzdHJ1Y3Qg cHRfcmVncyAqcmVncywgdTMyIGNhY2hlZF9mbGFncykKIAkJLyogRGlzYWJsZSBJUlFzIGFuZCBy ZXRyeSAqLwogCQlsb2NhbF9pcnFfZGlzYWJsZSgpOwogCi0JCWNhY2hlZF9mbGFncyA9IFJFQURf T05DRShwdF9yZWdzX3RvX3RocmVhZF9pbmZvKHJlZ3MpLT5mbGFncyk7CisJCWNhY2hlZF9mbGFn cyA9IFJFQURfT05DRShjdXJyZW50X3RocmVhZF9pbmZvKCktPmZsYWdzKTsKIAogCQlpZiAoIShj YWNoZWRfZmxhZ3MgJiBFWElUX1RPX1VTRVJNT0RFX0xPT1BfRkxBR1MpKQogCQkJYnJlYWs7CkBA IC0yNTAsNyArMjQzLDcgQEAgc3RhdGljIHZvaWQgZXhpdF90b191c2VybW9kZV9sb29wKHN0cnVj dCBwdF9yZWdzICpyZWdzLCB1MzIgY2FjaGVkX2ZsYWdzKQogLyogQ2FsbGVkIHdpdGggSVJRcyBk aXNhYmxlZC4gKi8KIF9fdmlzaWJsZSBpbmxpbmUgdm9pZCBwcmVwYXJlX2V4aXRfdG9fdXNlcm1v ZGUoc3RydWN0IHB0X3JlZ3MgKnJlZ3MpCiB7Ci0Jc3RydWN0IHRocmVhZF9pbmZvICp0aSA9IHB0 X3JlZ3NfdG9fdGhyZWFkX2luZm8ocmVncyk7CisJc3RydWN0IHRocmVhZF9pbmZvICp0aSA9IGN1 cnJlbnRfdGhyZWFkX2luZm8oKTsKIAl1MzIgY2FjaGVkX2ZsYWdzOwogCiAJaWYgKElTX0VOQUJM RUQoQ09ORklHX1BST1ZFX0xPQ0tJTkcpICYmIFdBUk5fT04oIWlycXNfZGlzYWJsZWQoKSkpCkBA IC0zMDksNyArMzAyLDcgQEAgc3RhdGljIHZvaWQgc3lzY2FsbF9zbG93X2V4aXRfd29yayhzdHJ1 Y3QgcHRfcmVncyAqcmVncywgdTMyIGNhY2hlZF9mbGFncykKICAqLwogX192aXNpYmxlIGlubGlu ZSB2b2lkIHN5c2NhbGxfcmV0dXJuX3Nsb3dwYXRoKHN0cnVjdCBwdF9yZWdzICpyZWdzKQogewot CXN0cnVjdCB0aHJlYWRfaW5mbyAqdGkgPSBwdF9yZWdzX3RvX3RocmVhZF9pbmZvKHJlZ3MpOwor CXN0cnVjdCB0aHJlYWRfaW5mbyAqdGkgPSBjdXJyZW50X3RocmVhZF9pbmZvKCk7CiAJdTMyIGNh Y2hlZF9mbGFncyA9IFJFQURfT05DRSh0aS0+ZmxhZ3MpOwogCiAJQ1RfV0FSTl9PTihjdF9zdGF0 ZSgpICE9IENPTlRFWFRfS0VSTkVMKTsKQEAgLTMzMiw3ICszMjUsNyBAQCBfX3Zpc2libGUgaW5s aW5lIHZvaWQgc3lzY2FsbF9yZXR1cm5fc2xvd3BhdGgoc3RydWN0IHB0X3JlZ3MgKnJlZ3MpCiAj aWZkZWYgQ09ORklHX1g4Nl82NAogX192aXNpYmxlIHZvaWQgZG9fc3lzY2FsbF82NChzdHJ1Y3Qg cHRfcmVncyAqcmVncykKIHsKLQlzdHJ1Y3QgdGhyZWFkX2luZm8gKnRpID0gcHRfcmVnc190b190 aHJlYWRfaW5mbyhyZWdzKTsKKwlzdHJ1Y3QgdGhyZWFkX2luZm8gKnRpID0gY3VycmVudF90aHJl YWRfaW5mbygpOwogCXVuc2lnbmVkIGxvbmcgbnIgPSByZWdzLT5vcmlnX2F4OwogCiAJZW50ZXJf ZnJvbV91c2VyX21vZGUoKTsKQEAgLTM2NSw3ICszNTgsNyBAQCBfX3Zpc2libGUgdm9pZCBkb19z eXNjYWxsXzY0KHN0cnVjdCBwdF9yZWdzICpyZWdzKQogICovCiBzdGF0aWMgX19hbHdheXNfaW5s aW5lIHZvaWQgZG9fc3lzY2FsbF8zMl9pcnFzX29uKHN0cnVjdCBwdF9yZWdzICpyZWdzKQogewot CXN0cnVjdCB0aHJlYWRfaW5mbyAqdGkgPSBwdF9yZWdzX3RvX3RocmVhZF9pbmZvKHJlZ3MpOwor CXN0cnVjdCB0aHJlYWRfaW5mbyAqdGkgPSBjdXJyZW50X3RocmVhZF9pbmZvKCk7CiAJdW5zaWdu ZWQgaW50IG5yID0gKHVuc2lnbmVkIGludClyZWdzLT5vcmlnX2F4OwogCiAjaWZkZWYgQ09ORklH X0lBMzJfRU1VTEFUSU9OCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9lbnRyeS9lbnRyeV82NC5TIGIv YXJjaC94ODYvZW50cnkvZW50cnlfNjQuUwppbmRleCA5ZWUwZGExODA3ZWQuLmY0OTc0MmRlMmM2 NSAxMDA2NDQKLS0tIGEvYXJjaC94ODYvZW50cnkvZW50cnlfNjQuUworKysgYi9hcmNoL3g4Ni9l bnRyeS9lbnRyeV82NC5TCkBAIC0xNzksNyArMTc5LDggQEAgR0xPQkFMKGVudHJ5X1NZU0NBTExf NjRfYWZ0ZXJfc3dhcGdzKQogCSAqIElmIHdlIG5lZWQgdG8gZG8gZW50cnkgd29yayBvciBpZiB3 ZSBndWVzcyB3ZSdsbCBuZWVkIHRvIGRvCiAJICogZXhpdCB3b3JrLCBnbyBzdHJhaWdodCB0byB0 aGUgc2xvdyBwYXRoLgogCSAqLwotCXRlc3RsCSRfVElGX1dPUktfU1lTQ0FMTF9FTlRSWXxfVElG X0FMTFdPUktfTUFTSywgQVNNX1RIUkVBRF9JTkZPKFRJX2ZsYWdzLCAlcnNwLCBTSVpFT0ZfUFRS RUdTKQorCUdFVF9USFJFQURfSU5GTyglcjExKQorCXRlc3RsCSRfVElGX1dPUktfU1lTQ0FMTF9F TlRSWXxfVElGX0FMTFdPUktfTUFTSywgVElfZmxhZ3MoJXIxMSkKIAlqbnoJZW50cnlfU1lTQ0FM TDY0X3Nsb3dfcGF0aAogCiBlbnRyeV9TWVNDQUxMXzY0X2Zhc3RwYXRoOgpAQCAtMjE3LDcgKzIx OCw4IEBAIGVudHJ5X1NZU0NBTExfNjRfZmFzdHBhdGg6CiAJICovCiAJRElTQUJMRV9JTlRFUlJV UFRTKENMQlJfTk9ORSkKIAlUUkFDRV9JUlFTX09GRgotCXRlc3RsCSRfVElGX0FMTFdPUktfTUFT SywgQVNNX1RIUkVBRF9JTkZPKFRJX2ZsYWdzLCAlcnNwLCBTSVpFT0ZfUFRSRUdTKQorCUdFVF9U SFJFQURfSU5GTyglcjExKQorCXRlc3RsCSRfVElGX0FMTFdPUktfTUFTSywgVElfZmxhZ3MoJXIx MSkKIAlqbnoJMWYKIAogCUxPQ0tERVBfU1lTX0VYSVQKQEAgLTM2OCw5ICszNzAsMTAgQEAgRU5E KHB0cmVnc19cZnVuYykKICAqIEEgbmV3bHkgZm9ya2VkIHByb2Nlc3MgZGlyZWN0bHkgY29udGV4 dCBzd2l0Y2hlcyBpbnRvIHRoaXMgYWRkcmVzcy4KICAqCiAgKiByZGk6IHByZXYgdGFzayB3ZSBz d2l0Y2hlZCBmcm9tCisgKiByc2k6IHRhc2sgd2UncmUgc3dpdGNoaW5nIHRvCiAgKi8KIEVOVFJZ KHJldF9mcm9tX2ZvcmspCi0JTE9DSyA7IGJ0ciAkVElGX0ZPUkssIFRJX2ZsYWdzKCVyOCkKKwlM T0NLIDsgYnRyICRUSUZfRk9SSywgVElfZmxhZ3MoJXJzaSkJLyogcnNpOiB0aGlzIG5ld2x5IGZv cmtlZCB0YXNrICovCiAKIAljYWxsCXNjaGVkdWxlX3RhaWwJCQkvKiByZGk6ICdwcmV2JyB0YXNr IHBhcmFtZXRlciAqLwogCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rcHJvYmVz LmggYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rcHJvYmVzLmgKaW5kZXggNDQyMWI1ZGE0MDlkLi4x ZDI5OTdlNzRiMDggMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL2twcm9iZXMuaAor KysgYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rcHJvYmVzLmgKQEAgLTM4LDEyICszOCwxMiBAQCB0 eXBlZGVmIHU4IGtwcm9iZV9vcGNvZGVfdDsKICNkZWZpbmUgUkVMQVRJVkVDQUxMX09QQ09ERSAw eGU4CiAjZGVmaW5lIFJFTEFUSVZFX0FERFJfU0laRSA0CiAjZGVmaW5lIE1BWF9TVEFDS19TSVpF IDY0Ci0jZGVmaW5lIE1JTl9TVEFDS19TSVpFKEFERFIpCQkJCQkgICAgICAgXAotCSgoKE1BWF9T VEFDS19TSVpFKSA8ICgoKHVuc2lnbmVkIGxvbmcpY3VycmVudF90aHJlYWRfaW5mbygpKSArIFwK LQkJCSAgICAgIFRIUkVBRF9TSVpFIC0gKHVuc2lnbmVkIGxvbmcpKEFERFIpKSkgICAgXAotCSA/ IChNQVhfU1RBQ0tfU0laRSkJCQkJCSAgICAgICBcCi0JIDogKCgodW5zaWduZWQgbG9uZyljdXJy ZW50X3RocmVhZF9pbmZvKCkpICsJCSAgICAgICBcCi0JICAgIFRIUkVBRF9TSVpFIC0gKHVuc2ln bmVkIGxvbmcpKEFERFIpKSkKKworI2RlZmluZSBjdXJyZW50X3N0YWNrX3RvcCgpICgodW5zaWdu ZWQgbG9uZyl0YXNrX3N0YWNrX3BhZ2UoY3VycmVudCkrVEhSRUFEX1NJWkUpCisjZGVmaW5lIGN1 cnJlbnRfc3RhY2tfc2l6ZShBRERSKSAoY3VycmVudF9zdGFja190b3AoKSAtICh1bnNpZ25lZCBs b25nKShBRERSKSkKKworI2RlZmluZSBNSU5fU1RBQ0tfU0laRShBRERSKSBcCisJKE1BWF9TVEFD S19TSVpFIDwgY3VycmVudF9zdGFja19zaXplKEFERFIpID8gTUFYX1NUQUNLX1NJWkUgOiBjdXJy ZW50X3N0YWNrX3NpemUoQUREUikpCiAKICNkZWZpbmUgZmx1c2hfaW5zbl9zbG90KHApCWRvIHsg fSB3aGlsZSAoMCkKIApkaWZmIC0tZ2l0IGEvYXJjaC94ODYvaW5jbHVkZS9hc20vc3dpdGNoX3Rv LmggYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9zd2l0Y2hfdG8uaAppbmRleCA4ZjMyMWExYjAzYTEu LmFlMGFhMDYxMmM2NyAxMDA2NDQKLS0tIGEvYXJjaC94ODYvaW5jbHVkZS9hc20vc3dpdGNoX3Rv LmgKKysrIGIvYXJjaC94ODYvaW5jbHVkZS9hc20vc3dpdGNoX3RvLmgKQEAgLTExMCwxOCArMTEw LDE2IEBAIGRvIHsJCQkJCQkJCQlcCiAJICAgICAiY2FsbCBfX3N3aXRjaF90b1xuXHQiCQkJCQkg IFwKIAkgICAgICJtb3ZxICJfX3BlcmNwdV9hcmcoW2N1cnJlbnRfdGFza10pIiwlJXJzaVxuXHQi CQkgIFwKIAkgICAgIF9fc3dpdGNoX2NhbmFyeQkJCQkJCSAgXAotCSAgICAgIm1vdnEgJVBbdGhy ZWFkX2luZm9dKCUlcnNpKSwlJXI4XG5cdCIJCQkgIFwKIAkgICAgICJtb3ZxICUlcmF4LCUlcmRp XG5cdCIgCQkJCQkgIFwKLQkgICAgICJ0ZXN0bCAgJVtfdGlmX2ZvcmtdLCVQW3RpX2ZsYWdzXSgl JXI4KVxuXHQiCQkgIFwKKwkgICAgICJ0ZXN0bCAgJVtfdGlmX2ZvcmtdLCVQW3RpX2ZsYWdzXSgl JXJzaSlcblx0IgkJICBcCiAJICAgICAiam56ICAgcmV0X2Zyb21fZm9ya1xuXHQiCQkJCQkgIFwK IAkgICAgIFJFU1RPUkVfQ09OVEVYVAkJCQkJCSAgXAogCSAgICAgOiAiPWEiIChsYXN0KQkJCQkJ ICAJICBcCiAJICAgICAgIF9fc3dpdGNoX2NhbmFyeV9vcGFyYW0JCQkJCSAgXAogCSAgICAgOiBb bmV4dF0gIlMiIChuZXh0KSwgW3ByZXZdICJEIiAocHJldiksCQkJICBcCiAJICAgICAgIFt0aHJl YWRyc3BdICJpIiAob2Zmc2V0b2Yoc3RydWN0IHRhc2tfc3RydWN0LCB0aHJlYWQuc3ApKSwgXAot CSAgICAgICBbdGlfZmxhZ3NdICJpIiAob2Zmc2V0b2Yoc3RydWN0IHRocmVhZF9pbmZvLCBmbGFn cykpLAkgIFwKKwkgICAgICAgW3RpX2ZsYWdzXSAiaSIgKG9mZnNldG9mKHN0cnVjdCB0YXNrX3N0 cnVjdCwgdGhyZWFkX2luZm8uZmxhZ3MpKSwJICBcCiAJICAgICAgIFtfdGlmX2ZvcmtdICJpIiAo X1RJRl9GT1JLKSwJCQkgIAkgIFwKLQkgICAgICAgW3RocmVhZF9pbmZvXSAiaSIgKG9mZnNldG9m KHN0cnVjdCB0YXNrX3N0cnVjdCwgc3RhY2spKSwgICBcCiAJICAgICAgIFtjdXJyZW50X3Rhc2td ICJtIiAoY3VycmVudF90YXNrKQkJCSAgXAogCSAgICAgICBfX3N3aXRjaF9jYW5hcnlfaXBhcmFt CQkJCQkgIFwKIAkgICAgIDogIm1lbW9yeSIsICJjYyIgX19FWFRSQV9DTE9CQkVSKQpkaWZmIC0t Z2l0IGEvYXJjaC94ODYvaW5jbHVkZS9hc20vdGhyZWFkX2luZm8uaCBiL2FyY2gveDg2L2luY2x1 ZGUvYXNtL3RocmVhZF9pbmZvLmgKaW5kZXggMzBjMTMzYWMwNWNkLi5lZWY2ODdmZGM5MGQgMTAw NjQ0Ci0tLSBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL3RocmVhZF9pbmZvLmgKKysrIGIvYXJjaC94 ODYvaW5jbHVkZS9hc20vdGhyZWFkX2luZm8uaApAQCAtNTMsMjQgKzUzLDIyIEBAIHN0cnVjdCB0 YXNrX3N0cnVjdDsKICNpbmNsdWRlIDxsaW51eC9hdG9taWMuaD4KIAogc3RydWN0IHRocmVhZF9p bmZvIHsKLQlzdHJ1Y3QgdGFza19zdHJ1Y3QJKnRhc2s7CQkvKiBtYWluIHRhc2sgc3RydWN0dXJl ICovCiAJX191MzIJCQlmbGFnczsJCS8qIGxvdyBsZXZlbCBmbGFncyAqLwogCV9fdTMyCQkJc3Rh dHVzOwkJLyogdGhyZWFkIHN5bmNocm9ub3VzIGZsYWdzICovCiAJX191MzIJCQljcHU7CQkvKiBj dXJyZW50IENQVSAqLwotCW1tX3NlZ21lbnRfdAkJYWRkcl9saW1pdDsKIAl1bnNpZ25lZCBpbnQJ CXNpZ19vbl91YWNjZXNzX2Vycm9yOjE7CiAJdW5zaWduZWQgaW50CQl1YWNjZXNzX2VycjoxOwkv KiB1YWNjZXNzIGZhaWxlZCAqLworCW1tX3NlZ21lbnRfdAkJYWRkcl9saW1pdDsKIH07CiAKICNk ZWZpbmUgSU5JVF9USFJFQURfSU5GTyh0c2spCQkJXAogewkJCQkJCVwKLQkudGFzawkJPSAmdHNr LAkJCVwKIAkuZmxhZ3MJCT0gMCwJCQlcCiAJLmNwdQkJPSAwLAkJCVwKIAkuYWRkcl9saW1pdAk9 IEtFUk5FTF9EUywJCVwKIH0KIAotI2RlZmluZSBpbml0X3RocmVhZF9pbmZvCShpbml0X3RocmVh ZF91bmlvbi50aHJlYWRfaW5mbykKKyNkZWZpbmUgaW5pdF90aHJlYWRfaW5mbwkoaW5pdF90YXNr LnRocmVhZF9pbmZvKQogI2RlZmluZSBpbml0X3N0YWNrCQkoaW5pdF90aHJlYWRfdW5pb24uc3Rh Y2spCiAKICNlbHNlIC8qICFfX0FTU0VNQkxZX18gKi8KQEAgLTE2Niw3ICsxNjQsNyBAQCBzdHJ1 Y3QgdGhyZWFkX2luZm8gewogCiBzdGF0aWMgaW5saW5lIHN0cnVjdCB0aHJlYWRfaW5mbyAqY3Vy cmVudF90aHJlYWRfaW5mbyh2b2lkKQogewotCXJldHVybiAoc3RydWN0IHRocmVhZF9pbmZvICop KGN1cnJlbnRfdG9wX29mX3N0YWNrKCkgLSBUSFJFQURfU0laRSk7CisJcmV0dXJuIChzdHJ1Y3Qg dGhyZWFkX2luZm8gKiljdXJyZW50OwogfQogCiBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcg Y3VycmVudF9zdGFja19wb2ludGVyKHZvaWQpCkBAIC0xODgsMzUgKzE4Niw3IEBAIHN0YXRpYyBp bmxpbmUgdW5zaWduZWQgbG9uZyBjdXJyZW50X3N0YWNrX3BvaW50ZXIodm9pZCkKIAogLyogTG9h ZCB0aHJlYWRfaW5mbyBhZGRyZXNzIGludG8gInJlZyIgKi8KICNkZWZpbmUgR0VUX1RIUkVBRF9J TkZPKHJlZykgXAotCV9BU01fTU9WIFBFUl9DUFVfVkFSKGNwdV9jdXJyZW50X3RvcF9vZl9zdGFj aykscmVnIDsgXAotCV9BU01fU1VCICQoVEhSRUFEX1NJWkUpLHJlZyA7Ci0KLS8qCi0gKiBBU00g b3BlcmFuZCB3aGljaCBldmFsdWF0ZXMgdG8gYSAndGhyZWFkX2luZm8nIGFkZHJlc3Mgb2YKLSAq IHRoZSBjdXJyZW50IHRhc2ssIGlmIGl0IGlzIGtub3duIHRoYXQgInJlZyIgaXMgZXhhY3RseSAi b2ZmIgotICogYnl0ZXMgYmVsb3cgdGhlIHRvcCBvZiB0aGUgc3RhY2sgY3VycmVudGx5LgotICoK LSAqICggVGhlIGtlcm5lbCBzdGFjaydzIHNpemUgaXMga25vd24gYXQgYnVpbGQgdGltZSwgaXQg aXMgdXN1YWxseQotICogICAyIG9yIDQgcGFnZXMsIGFuZCB0aGUgYm90dG9tICBvZiB0aGUga2Vy bmVsIHN0YWNrIGNvbnRhaW5zCi0gKiAgIHRoZSB0aHJlYWRfaW5mbyBzdHJ1Y3R1cmUuIFNvIHRv IGFjY2VzcyB0aGUgdGhyZWFkX2luZm8gdmVyeQotICogICBxdWlja2x5IGZyb20gYXNzZW1ibHkg Y29kZSB3ZSBjYW4gY2FsY3VsYXRlIGRvd24gZnJvbSB0aGUKLSAqICAgdG9wIG9mIHRoZSBrZXJu ZWwgc3RhY2sgdG8gdGhlIGJvdHRvbSwgdXNpbmcgY29uc3RhbnQsCi0gKiAgIGJ1aWxkLXRpbWUg Y2FsY3VsYXRpb25zIG9ubHkuICkKLSAqCi0gKiBGb3IgZXhhbXBsZSwgdG8gZmV0Y2ggdGhlIGN1 cnJlbnQgdGhyZWFkX2luZm8tPmZsYWdzIHZhbHVlIGludG8gJWVheAotICogb24geDg2LTY0IGRl ZmNvbmZpZyBrZXJuZWxzLCBpbiBzeXNjYWxsIGVudHJ5IGNvZGUgd2hlcmUgUlNQIGlzCi0gKiBj dXJyZW50bHkgYXQgZXhhY3RseSBTSVpFT0ZfUFRSRUdTIGJ5dGVzIGF3YXkgZnJvbSB0aGUgdG9w IG9mIHRoZQotICogc3RhY2s6Ci0gKgotICogICAgICBtb3YgQVNNX1RIUkVBRF9JTkZPKFRJX2Zs YWdzLCAlcnNwLCBTSVpFT0ZfUFRSRUdTKSwgJWVheAotICoKLSAqIHdpbGwgdHJhbnNsYXRlIHRv OgotICoKLSAqICAgICAgOGIgODQgMjQgYjggYzAgZmYgZmYgICAgICBtb3YgICAgLTB4M2Y0OCgl cnNwKSwgJWVheAotICoKLSAqIHdoaWNoIGlzIGJlbG93IHRoZSBjdXJyZW50IFJTUCBieSBhbG1v c3QgMTZLLgotICovCi0jZGVmaW5lIEFTTV9USFJFQURfSU5GTyhmaWVsZCwgcmVnLCBvZmYpICgo ZmllbGQpKyhvZmYpLVRIUkVBRF9TSVpFKShyZWcpCisJX0FTTV9NT1YgUEVSX0NQVV9WQVIoY3Vy cmVudF90YXNrKSxyZWcKIAogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2tlcm5lbC9k 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 YXNrLmgKaW5kZXggZjJjYjhkNDU1MTNkLi5hMDBmNTNiNjRjMDkgMTAwNjQ0Ci0tLSBhL2luY2x1 ZGUvbGludXgvaW5pdF90YXNrLmgKKysrIGIvaW5jbHVkZS9saW51eC9pbml0X3Rhc2suaApAQCAt MTUsNiArMTUsOCBAQAogI2luY2x1ZGUgPG5ldC9uZXRfbmFtZXNwYWNlLmg+CiAjaW5jbHVkZSA8 bGludXgvc2NoZWQvcnQuaD4KIAorI2luY2x1ZGUgPGFzbS90aHJlYWRfaW5mby5oPgorCiAjaWZk ZWYgQ09ORklHX1NNUAogIyBkZWZpbmUgSU5JVF9QVVNIQUJMRV9UQVNLUyh0c2spCQkJCQlcCiAJ LnB1c2hhYmxlX3Rhc2tzID0gUExJU1RfTk9ERV9JTklUKHRzay5wdXNoYWJsZV90YXNrcywgTUFY X1BSSU8pLApAQCAtMTgzLDEyICsxODUsMTkgQEAgZXh0ZXJuIHN0cnVjdCB0YXNrX2dyb3VwIHJv b3RfdGFza19ncm91cDsKICMgZGVmaW5lIElOSVRfS0FTQU4odHNrKQogI2VuZGlmCiAKKyNpZmRl ZiBDT05GSUdfVEhSRUFEX0lORk9fSU5fVEFTSworIyBkZWZpbmUgSU5JVF9UQVNLX1RJKHRzaykg LnRocmVhZF9pbmZvID0gSU5JVF9USFJFQURfSU5GTyh0c2spLAorI2Vsc2UKKyMgZGVmaW5lIElO SVRfVEFTS19USSh0c2spCisjZW5kaWYKKwogLyoKICAqICBJTklUX1RBU0sgaXMgdXNlZCB0byBz ZXQgdXAgdGhlIGZpcnN0IHRhc2sgdGFibGUsIHRvdWNoIGF0CiAgKiB5b3VyIG93biByaXNrIS4g QmFzZT0wLCBsaW1pdD0weDFmZmZmZiAoPTJNQikKICAqLwogI2RlZmluZSBJTklUX1RBU0sodHNr KQlcCiB7CQkJCQkJCQkJXAorCUlOSVRfVEFTS19USSh0c2spCQkJCQkJXAogCS5zdGF0ZQkJPSAw LAkJCQkJCVwKIAkuc3RhY2sJCT0gJmluaXRfdGhyZWFkX2luZm8sCQkJCVwKIAkudXNhZ2UJCT0g QVRPTUlDX0lOSVQoMiksCQkJCVwKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvc2NoZWQuaCBi L2luY2x1ZGUvbGludXgvc2NoZWQuaAppbmRleCA2ZTQyYWRhMjYzNDUuLjA2MjM2YTM2YmExNyAx MDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9zY2hlZC5oCisrKyBiL2luY2x1ZGUvbGludXgvc2No ZWQuaApAQCAtMTQ1Niw2ICsxNDU2LDkgQEAgc3RydWN0IHRsYmZsdXNoX3VubWFwX2JhdGNoIHsK IH07CiAKIHN0cnVjdCB0YXNrX3N0cnVjdCB7CisjaWZkZWYgQ09ORklHX1RIUkVBRF9JTkZPX0lO X1RBU0sKKwlzdHJ1Y3QgdGhyZWFkX2luZm8gdGhyZWFkX2luZm87CisjZW5kaWYKIAl2b2xhdGls ZSBsb25nIHN0YXRlOwkvKiAtMSB1bnJ1bm5hYmxlLCAwIHJ1bm5hYmxlLCA+MCBzdG9wcGVkICov CiAJdm9pZCAqc3RhY2s7CiAJYXRvbWljX3QgdXNhZ2U7CkBAIC0yNTM5LDcgKzI1NDIsOSBAQCBl eHRlcm4gdm9pZCBzZXRfY3Vycl90YXNrKGludCBjcHUsIHN0cnVjdCB0YXNrX3N0cnVjdCAqcCk7 CiB2b2lkIHlpZWxkKHZvaWQpOwogCiB1bmlvbiB0aHJlYWRfdW5pb24geworI2lmbmRlZiBDT05G SUdfVEhSRUFEX0lORk9fSU5fVEFTSwogCXN0cnVjdCB0aHJlYWRfaW5mbyB0aHJlYWRfaW5mbzsK KyNlbmRpZgogCXVuc2lnbmVkIGxvbmcgc3RhY2tbVEhSRUFEX1NJWkUvc2l6ZW9mKGxvbmcpXTsK IH07CiAKQEAgLTI5NjcsNyArMjk3MiwxNCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgdGhyZWFkZ3Jv dXBfY2hhbmdlX2VuZChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaykKIAljZ3JvdXBfdGhyZWFkZ3Jv dXBfY2hhbmdlX2VuZCh0c2spOwogfQogCi0jaWZuZGVmIF9fSEFWRV9USFJFQURfRlVOQ1RJT05T CisjaWZkZWYgQ09ORklHX1RIUkVBRF9JTkZPX0lOX1RBU0sKKworI2RlZmluZSB0YXNrX3RocmVh ZF9pbmZvKHRhc2spCQkoJih0YXNrKS0+dGhyZWFkX2luZm8pCisjZGVmaW5lIHRhc2tfc3RhY2tf cGFnZSh0YXNrKQkJKCh0YXNrKS0+c3RhY2spCisjZGVmaW5lIHNldHVwX3RocmVhZF9zdGFjayhu ZXcsb2xkKQlkbyB7IH0gd2hpbGUoMCkKKyNkZWZpbmUgZW5kX29mX3N0YWNrKHRhc2spCQkoKHVu c2lnbmVkIGxvbmcgKil0YXNrX3N0YWNrX3BhZ2UodGFzaykpCisKKyNlbGlmICFkZWZpbmVkKF9f SEFWRV9USFJFQURfRlVOQ1RJT05TKQogCiAjZGVmaW5lIHRhc2tfdGhyZWFkX2luZm8odGFzaykJ KChzdHJ1Y3QgdGhyZWFkX2luZm8gKikodGFzayktPnN0YWNrKQogI2RlZmluZSB0YXNrX3N0YWNr X3BhZ2UodGFzaykJKCh0YXNrKS0+c3RhY2spCmRpZmYgLS1naXQgYS9pbml0L0tjb25maWcgYi9p bml0L0tjb25maWcKaW5kZXggZjc1NWE2MDJkNGExLi4wYzgzYWY2ZDM3NTMgMTAwNjQ0Ci0tLSBh L2luaXQvS2NvbmZpZworKysgYi9pbml0L0tjb25maWcKQEAgLTI2LDYgKzI2LDkgQEAgY29uZmln IElSUV9XT1JLCiBjb25maWcgQlVJTERUSU1FX0VYVEFCTEVfU09SVAogCWJvb2wKIAorY29uZmln IFRIUkVBRF9JTkZPX0lOX1RBU0sKKwlib29sCisKIG1lbnUgIkdlbmVyYWwgc2V0dXAiCiAKIGNv bmZpZyBCUk9LRU4KZGlmZiAtLWdpdCBhL2luaXQvaW5pdF90YXNrLmMgYi9pbml0L2luaXRfdGFz ay5jCmluZGV4IGJhMGE3ZjM2MmQ5ZS4uMTFmODNiZTFmYTc5IDEwMDY0NAotLS0gYS9pbml0L2lu aXRfdGFzay5jCisrKyBiL2luaXQvaW5pdF90YXNrLmMKQEAgLTIyLDUgKzIyLDggQEAgRVhQT1JU X1NZTUJPTChpbml0X3Rhc2spOwogICogSW5pdGlhbCB0aHJlYWQgc3RydWN0dXJlLiBBbGlnbm1l bnQgb2YgdGhpcyBpcyBoYW5kbGVkIGJ5IGEgc3BlY2lhbAogICogbGlua2VyIG1hcCBlbnRyeS4K ICAqLwotdW5pb24gdGhyZWFkX3VuaW9uIGluaXRfdGhyZWFkX3VuaW9uIF9faW5pdF90YXNrX2Rh dGEgPQotCXsgSU5JVF9USFJFQURfSU5GTyhpbml0X3Rhc2spIH07Cit1bmlvbiB0aHJlYWRfdW5p b24gaW5pdF90aHJlYWRfdW5pb24gX19pbml0X3Rhc2tfZGF0YSA9IHsKKyNpZm5kZWYgQ09ORklH X1RIUkVBRF9JTkZPX0lOX1RBU0sKKwlJTklUX1RIUkVBRF9JTkZPKGluaXRfdGFzaykKKyNlbmRp ZgorfTsK --001a113d40be58486205360020b0--