From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED.blaine.gmane.org!not-for-mail From: Pip Cet Newsgroups: gmane.emacs.bugs Subject: bug#36597: 27.0.50; rehash hash tables eagerly in pdumper Date: Thu, 11 Jul 2019 14:05:14 +0000 Message-ID: Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="0000000000008cb6d5058d684ade" Injection-Info: blaine.gmane.org; posting-host="blaine.gmane.org:195.159.176.226"; logging-data="152636"; mail-complaints-to="usenet@blaine.gmane.org" To: 36597@debbugs.gnu.org, dancol@dancol.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Thu Jul 11 16:07:21 2019 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([209.51.188.17]) by blaine.gmane.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.89) (envelope-from ) id 1hlZjE-000dVQ-Iv for geb-bug-gnu-emacs@m.gmane.org; Thu, 11 Jul 2019 16:07:20 +0200 Original-Received: from localhost ([::1]:42092 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hlZjD-0000nY-Dp for geb-bug-gnu-emacs@m.gmane.org; Thu, 11 Jul 2019 10:07:19 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:55602) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hlZj3-0000gB-TG for bug-gnu-emacs@gnu.org; Thu, 11 Jul 2019 10:07:13 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hlZj1-0001Z4-7l for bug-gnu-emacs@gnu.org; Thu, 11 Jul 2019 10:07:09 -0400 Original-Received: from debbugs.gnu.org ([209.51.188.43]:57693) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hlZiy-0001TG-Cu for bug-gnu-emacs@gnu.org; Thu, 11 Jul 2019 10:07:05 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1hlZix-0001mK-Q1 for bug-gnu-emacs@gnu.org; Thu, 11 Jul 2019 10:07:03 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Pip Cet Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 11 Jul 2019 14:07:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 36597 X-GNU-PR-Package: emacs X-Debbugs-Original-To: bug-gnu-emacs@gnu.org, Daniel Colascione Original-Received: via spool by submit@debbugs.gnu.org id=B.15628539616699 (code B ref -1); Thu, 11 Jul 2019 14:07:02 +0000 Original-Received: (at submit) by debbugs.gnu.org; 11 Jul 2019 14:06:01 +0000 Original-Received: from localhost ([127.0.0.1]:38271 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1hlZhx-0001js-0P for submit@debbugs.gnu.org; Thu, 11 Jul 2019 10:06:01 -0400 Original-Received: from lists.gnu.org ([209.51.188.17]:37603) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1hlZht-0001jk-TD for submit@debbugs.gnu.org; Thu, 11 Jul 2019 10:05:59 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:55104) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hlZhr-000845-Ge for bug-gnu-emacs@gnu.org; Thu, 11 Jul 2019 10:05:57 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hlZho-0008P0-12 for bug-gnu-emacs@gnu.org; Thu, 11 Jul 2019 10:05:54 -0400 Original-Received: from mail-ot1-x32c.google.com ([2607:f8b0:4864:20::32c]:42000) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hlZhn-0008Nx-GG for bug-gnu-emacs@gnu.org; Thu, 11 Jul 2019 10:05:51 -0400 Original-Received: by mail-ot1-x32c.google.com with SMTP id l15so5950108otn.9 for ; Thu, 11 Jul 2019 07:05:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to; bh=ovEVak1eBLBW1iSQJzbXdan5pWh0QbGswETkc8KiVEc=; b=aBsx35gDTvUnIPODhoRlAc8d9JCfqzXML2E3xZ12709Xb6bjt7Pht2ozZRvW5ggFLz AtrUIfKA6w9/XIOLW/BbeNUZiewMfKeXgAAxSe72pN4nBPoL6k1gQlffN+2GCOf7j08Y z7f0pA7HN2y8RLOPnWOmhUKHbt51/4qO7Ta/vBIYbw55t3ab9mq9pwc6DUtI2EKHE1S2 Q69Wd7VV3EGqeqkuPNwOZcYkERhM7WP9tiMXIMUhfzCjM2rKAsQbABHYrL5AT5i208NM vbXfu2OSQ++NVKndafXUHdjqm5c/M8f3OPVQiwXOChotlmsb3Z/QBUEXDXQLl+qOyqRP FoVg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=ovEVak1eBLBW1iSQJzbXdan5pWh0QbGswETkc8KiVEc=; b=EycjjDTY2Prz2iQ596Z2wKLIZ4YpundLUHMJiE4KzozKbqVIFTKq+f11rVp6wM8FLm SjAkr7ipbHkr5F5O4lon+hsPGY4Cu1ScXe8UG3iYwU8C7z65Bg3FWUNKzx0/aT1zp+Us qyP/eiIp2XmKo12aladRm2hNgFVVCLJ3UXe+QiS1i9FdDeEbwcTsl38Gobb5dPq8/aNq 5paUchybZs5oGD5mNd3zRLFIfpAbpM57L3AmFRawXUn6d1FfDfjGQ6BKpg2cTIpr18sE HaHRMTsh4yeEauDMMey2edgbdtYpV+2dVHJ+Px/XDTbW/8F/TvD+Av19IEAAQncnjvZh nElw== X-Gm-Message-State: APjAAAV9VlXzf6Ksbhvd/jwyZ/kuw8nmP6K3WeJEofdZGBn9IHxdO7Jz gzZiY6SeVLLG2T02bpvZTCRCoHUUAedO9hP76ML9v2Mg X-Google-Smtp-Source: APXvYqxLASWlFOY3gGBFPIEnUl8xm4NZW0VhH0xA9ZbAHFhVv2b3HOCnRxEVzD8b+Nm9Vf1YMgR98CYVWs9BVSxkyAc= X-Received: by 2002:a9d:7284:: with SMTP id t4mr3804844otj.154.1562853950384; Thu, 11 Jul 2019 07:05:50 -0700 (PDT) X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.51.188.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.org gmane.emacs.bugs:162696 Archived-At: --0000000000008cb6d5058d684ade Content-Type: text/plain; charset="UTF-8" This is a follow-up to bug#36447, which has been fixed. Lazy rehashing for hash tables should be removed. This patch does that. Lazy rehashing makes all code that accesses hash tables a little more complicated; in at least one case, we forgot to do that, resulting in bug#36596. The sole benefit of lazy rehashing to be mentioned so far is that start-up time is reduced a little (by less than a millisecond on this system), and that for certain usage patterns (many short Emacs sessions that don't do very much, I think), this might outweigh the negative consequences of lazy rehashing. Lazy rehashing means less maintainable code, more code, and, at run-time, slightly slower code. In particular, it means that we have to have a comment in lisp.h which distracts from the code and has to be marked as "IMPORTANT!!!!!!!", which I think is nearly as annoying as having to jump through special hoops before accessing a hash table. I'm posting this as a separate bug so we can have a, hopefully, brief discussion about it and then either move away from lazy rehashing or continue using it; if we decide to continue using it, it should be documented in much more detail. (We should keep in mind that conditional branches, even ones that are well-predicted and don't cause cache misses, aren't free: they use execution units, and preparing their arguments in registers increases register pressure, and of course they increase code size.) --0000000000008cb6d5058d684ade Content-Type: text/x-patch; charset="US-ASCII"; name="0001-Rehash-hash-tables-eagerly-after-loading-a-portable-.patch" Content-Disposition: attachment; filename="0001-Rehash-hash-tables-eagerly-after-loading-a-portable-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_jxyqt0420 RnJvbSAyZGIzOTY0ZjJkODI5MGI5MDViMmQyMGUyYTYyZmIwNzNmZWMxMzgyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBQaXAgQ2V0IDxwaXBjZXRAZ21haWwuY29tPgpEYXRlOiBUaHUs IDExIEp1bCAyMDE5IDEyOjA2OjU5ICswMDAwClN1YmplY3Q6IFtQQVRDSF0gUmVoYXNoIGhhc2gg dGFibGVzIGVhZ2VybHkgYWZ0ZXIgbG9hZGluZyBhIHBvcnRhYmxlIGR1bXAKCiogc3JjL2xpc3Au aCAoaGFzaF9yZWhhc2hfbmVlZGVkX3ApOiBSZW1vdmUuICBBbGwgdXNlcyByZW1vdmVkLgooaGFz aF9yZWhhc2hfaWZfbmVlZGVkKTogUmVtb3ZlLiAgQWxsIHVzZXMgcmVtb3ZlZC4KKHN0cnVjdCBM aXNwX0hhc2hfVGFibGUpOiBSZW1vdmUgY29tbWVudCBhYm91dCByZWhhc2hpbmcgaGFzaCB0YWJs ZXMuCiogc3JjL3BkdW1wZXIuYyAodGhhd19oYXNoX3RhYmxlcyk6IE5ldyBmdW5jdGlvbi4KKGhh c2hfdGFibGVfdGhhdyk6IE5ldyBmdW5jdGlvbi4KKGhhc2hfdGFibGVfZnJlZXplKTogTmV3IGZ1 bmN0aW9uLgooZHVtcF9oYXNoX3RhYmxlKTogU2ltcGxpZnkuCihkdW1wX2hhc2hfdGFibGVfbGlz dCk6IE5ldyBmdW5jdGlvbi4KKGhhc2hfdGFibGVfY29udGVudHMpOiBOZXcgZnVuY3Rpb24uCihG ZHVtcF9lbWFjc19wb3J0YWJsZSk6IEhhbmRsZSBoYXNoIHRhYmxlcyBieSBlYWdlciByZWhhc2hp bmcuCihwZHVtcGVyX2xvYWQpOiBSZXN0b3JlIGhhc2ggdGFibGVzLgooaW5pdF9wZHVtcGVyX29u Y2UpOiBOZXcgZnVuY3Rpb24uCi0tLQogc3JjL2J5dGVjb2RlLmMgIHwgICAxIC0KIHNyYy9jb21w b3NpdGUuYyB8ICAgMSAtCiBzcmMvZW1hY3MuYyAgICAgfCAgIDEgKwogc3JjL2Zucy5jICAgICAg IHwgIDUzICsrKystLS0tLS0tLS0tLQogc3JjL2xpc3AuaCAgICAgIHwgIDE5ICstLS0tLQogc3Jj L21pbmlidWYuYyAgIHwgICAzIC0KIHNyYy9wZHVtcGVyLmMgICB8IDE3NyArKysrKysrKysrKysr KysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIHNyYy9wZHVtcGVyLmggICB8ICAg MSArCiA4IGZpbGVzIGNoYW5nZWQsIDEwOCBpbnNlcnRpb25zKCspLCAxNDggZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvc3JjL2J5dGVjb2RlLmMgYi9zcmMvYnl0ZWNvZGUuYwppbmRleCAyOWRm ZjQ0ZjAwLi45YzcyNDI5ZTBjIDEwMDY0NAotLS0gYS9zcmMvYnl0ZWNvZGUuYworKysgYi9zcmMv Ynl0ZWNvZGUuYwpAQCAtMTQwMiw3ICsxNDAyLDYgQEAgI2RlZmluZSBERUZJTkUobmFtZSwgdmFs dWUpIExBQkVMIChuYW1lKSAsCiAgICAgICAgICAgICBMaXNwX09iamVjdCB2MSA9IFBPUDsKICAg ICAgICAgICAgIHB0cmRpZmZfdCBpOwogICAgICAgICAgICAgc3RydWN0IExpc3BfSGFzaF9UYWJs ZSAqaCA9IFhIQVNIX1RBQkxFIChqbXBfdGFibGUpOwotICAgICAgICAgICAgaGFzaF9yZWhhc2hf aWZfbmVlZGVkIChoKTsKIAogICAgICAgICAgICAgLyogaC0+Y291bnQgaXMgYSBmYXN0ZXIgYXBw cm94aW1hdGlvbiBmb3IgSEFTSF9UQUJMRV9TSVpFIChoKQogICAgICAgICAgICAgICAgaGVyZS4g Ki8KZGlmZiAtLWdpdCBhL3NyYy9jb21wb3NpdGUuYyBiL3NyYy9jb21wb3NpdGUuYwppbmRleCAx ODMwNjJkZTQ2Li40OWEyODVjZmYwIDEwMDY0NAotLS0gYS9zcmMvY29tcG9zaXRlLmMKKysrIGIv c3JjL2NvbXBvc2l0ZS5jCkBAIC02NTQsNyArNjU0LDYgQEAgZ3N0cmluZ19sb29rdXBfY2FjaGUg KExpc3BfT2JqZWN0IGhlYWRlcikKIGNvbXBvc2l0aW9uX2dzdHJpbmdfcHV0X2NhY2hlIChMaXNw X09iamVjdCBnc3RyaW5nLCBwdHJkaWZmX3QgbGVuKQogewogICBzdHJ1Y3QgTGlzcF9IYXNoX1Rh YmxlICpoID0gWEhBU0hfVEFCTEUgKGdzdHJpbmdfaGFzaF90YWJsZSk7Ci0gIGhhc2hfcmVoYXNo X2lmX25lZWRlZCAoaCk7CiAgIExpc3BfT2JqZWN0IGhlYWRlciA9IExHU1RSSU5HX0hFQURFUiAo Z3N0cmluZyk7CiAgIEVNQUNTX1VJTlQgaGFzaCA9IGgtPnRlc3QuaGFzaGZuICgmaC0+dGVzdCwg aGVhZGVyKTsKICAgaWYgKGxlbiA8IDApCmRpZmYgLS1naXQgYS9zcmMvZW1hY3MuYyBiL3NyYy9l bWFjcy5jCmluZGV4IDljOTM3NDhhMGYuLjEzNjIzNmViMzUgMTAwNjQ0Ci0tLSBhL3NyYy9lbWFj cy5jCisrKyBiL3NyYy9lbWFjcy5jCkBAIC0xNTYwLDYgKzE1NjAsNyBAQCBtYWluIChpbnQgYXJn YywgY2hhciAqKmFyZ3YpCiAgIGlmICghaW5pdGlhbGl6ZWQpCiAgICAgewogICAgICAgaW5pdF9h bGxvY19vbmNlICgpOworICAgICAgaW5pdF9wZHVtcGVyX29uY2UgKCk7CiAgICAgICBpbml0X29i YXJyYXlfb25jZSAoKTsKICAgICAgIGluaXRfZXZhbF9vbmNlICgpOwogICAgICAgaW5pdF9jaGFy c2V0X29uY2UgKCk7CmRpZmYgLS1naXQgYS9zcmMvZm5zLmMgYi9zcmMvZm5zLmMKaW5kZXggNzM0 MzU1NmFjMi4uNDIwZDg5OGIyNiAxMDA2NDQKLS0tIGEvc3JjL2Zucy5jCisrKyBiL3NyYy9mbnMu YwpAQCAtNDIyNCw0MyArNDIyNCwyNCBAQCBoYXNoX3RhYmxlX3JlaGFzaCAoc3RydWN0IExpc3Bf SGFzaF9UYWJsZSAqaCkKIHsKICAgcHRyZGlmZl90IHNpemUgPSBIQVNIX1RBQkxFX1NJWkUgKGgp OwogCi0gIC8qIFRoZXNlIHN0cnVjdHVyZXMgbWF5IGhhdmUgYmVlbiBwdXJlY29waWVkIGFuZCBz aGFyZWQKLSAgICAgKGJ1ZyMzNjQ0NykuICAqLwotICBoLT5uZXh0ID0gRmNvcHlfc2VxdWVuY2Ug KGgtPm5leHQpOwotICBoLT5pbmRleCA9IEZjb3B5X3NlcXVlbmNlIChoLT5pbmRleCk7Ci0gIGgt Pmhhc2ggPSBGY29weV9zZXF1ZW5jZSAoaC0+aGFzaCk7Ci0KICAgLyogUmVjb21wdXRlIHRoZSBh Y3R1YWwgaGFzaCBjb2RlcyBmb3IgZWFjaCBlbnRyeSBpbiB0aGUgdGFibGUuCiAgICAgIE9yZGVy IGlzIHN0aWxsIGludmFsaWQuICAqLwogICBmb3IgKHB0cmRpZmZfdCBpID0gMDsgaSA8IHNpemU7 ICsraSkKLSAgICBpZiAoIU5JTFAgKEhBU0hfSEFTSCAoaCwgaSkpKQotICAgICAgewotICAgICAg ICBMaXNwX09iamVjdCBrZXkgPSBIQVNIX0tFWSAoaCwgaSk7Ci0gICAgICAgIEVNQUNTX1VJTlQg aGFzaF9jb2RlID0gaC0+dGVzdC5oYXNoZm4gKCZoLT50ZXN0LCBrZXkpOwotICAgICAgICBzZXRf aGFzaF9oYXNoX3Nsb3QgKGgsIGksIG1ha2VfZml4bnVtIChoYXNoX2NvZGUpKTsKLSAgICAgIH0K LQotICAvKiBSZXNldCB0aGUgaW5kZXggc28gdGhhdCBhbnkgc2xvdCB3ZSBkb24ndCBmaWxsIGJl bG93IGlzIG1hcmtlZAotICAgICBpbnZhbGlkLiAgKi8KLSAgRmZpbGxhcnJheSAoaC0+aW5kZXgs IG1ha2VfZml4bnVtICgtMSkpOworICAgIHsKKyAgICAgIExpc3BfT2JqZWN0IGtleSA9IEhBU0hf S0VZIChoLCBpKTsKKyAgICAgIEVNQUNTX1VJTlQgaGFzaF9jb2RlID0gaC0+dGVzdC5oYXNoZm4g KCZoLT50ZXN0LCBrZXkpOworICAgICAgc2V0X2hhc2hfaGFzaF9zbG90IChoLCBpLCBtYWtlX2Zp eG51bSAoaGFzaF9jb2RlKSk7CisgICAgfQogCiAgIC8qIFJlYnVpbGQgdGhlIGNvbGxpc2lvbiBj aGFpbnMuICAqLwogICBmb3IgKHB0cmRpZmZfdCBpID0gMDsgaSA8IHNpemU7ICsraSkKLSAgICBp ZiAoIU5JTFAgKEhBU0hfSEFTSCAoaCwgaSkpKQotICAgICAgewotICAgICAgICBFTUFDU19VSU5U IGhhc2hfY29kZSA9IFhVRklYTlVNIChIQVNIX0hBU0ggKGgsIGkpKTsKLSAgICAgICAgcHRyZGlm Zl90IHN0YXJ0X29mX2J1Y2tldCA9IGhhc2hfY29kZSAlIEFTSVpFIChoLT5pbmRleCk7Ci0gICAg ICAgIHNldF9oYXNoX25leHRfc2xvdCAoaCwgaSwgSEFTSF9JTkRFWCAoaCwgc3RhcnRfb2ZfYnVj a2V0KSk7Ci0gICAgICAgIHNldF9oYXNoX2luZGV4X3Nsb3QgKGgsIHN0YXJ0X29mX2J1Y2tldCwg aSk7Ci0gICAgICAgIGVhc3NlcnQgKEhBU0hfTkVYVCAoaCwgaSkgIT0gaSk7IC8qIFN0b3AgbG9v cHMuICAqLwotICAgICAgfQotCi0gIC8qIEZpbmFsbHksIG1hcmsgdGhlIGhhc2ggdGFibGUgYXMg aGF2aW5nIGEgdmFsaWQgaGFzaCBvcmRlci4KLSAgICAgRG8gdGhpcyBsYXN0IHNvIHRoYXQgaWYg d2UncmUgaW50ZXJydXB0ZWQsIHdlIHJldHJ5IG9uIG5leHQKLSAgICAgYWNjZXNzLiAqLwotICBl YXNzZXJ0IChoLT5jb3VudCA8IDApOwotICBoLT5jb3VudCA9IC1oLT5jb3VudDsKLSAgZWFzc2Vy dCAoIWhhc2hfcmVoYXNoX25lZWRlZF9wIChoKSk7CisgICAgeworICAgICAgRU1BQ1NfVUlOVCBo YXNoX2NvZGUgPSBYVUZJWE5VTSAoSEFTSF9IQVNIIChoLCBpKSk7CisgICAgICBwdHJkaWZmX3Qg c3RhcnRfb2ZfYnVja2V0ID0gaGFzaF9jb2RlICUgQVNJWkUgKGgtPmluZGV4KTsKKyAgICAgIHNl dF9oYXNoX25leHRfc2xvdCAoaCwgaSwgSEFTSF9JTkRFWCAoaCwgc3RhcnRfb2ZfYnVja2V0KSk7 CisgICAgICBzZXRfaGFzaF9pbmRleF9zbG90IChoLCBzdGFydF9vZl9idWNrZXQsIGkpOworICAg ICAgZWFzc2VydCAoSEFTSF9ORVhUIChoLCBpKSAhPSBpKTsgLyogU3RvcCBsb29wcy4gICovCisg ICAgfQogfQogCiAvKiBMb29rdXAgS0VZIGluIGhhc2ggdGFibGUgSC4gIElmIEhBU0ggaXMgbm9u LW51bGwsIHJldHVybiBpbiAqSEFTSApAQCAtNDI3Myw4ICs0MjU0LDYgQEAgaGFzaF9sb29rdXAg KHN0cnVjdCBMaXNwX0hhc2hfVGFibGUgKmgsIExpc3BfT2JqZWN0IGtleSwgRU1BQ1NfVUlOVCAq aGFzaCkKICAgRU1BQ1NfVUlOVCBoYXNoX2NvZGU7CiAgIHB0cmRpZmZfdCBzdGFydF9vZl9idWNr ZXQsIGk7CiAKLSAgaGFzaF9yZWhhc2hfaWZfbmVlZGVkIChoKTsKLQogICBoYXNoX2NvZGUgPSBo LT50ZXN0Lmhhc2hmbiAoJmgtPnRlc3QsIGtleSk7CiAgIGVhc3NlcnQgKChoYXNoX2NvZGUgJiB+ SU5UTUFTSykgPT0gMCk7CiAgIGlmIChoYXNoKQpAQCAtNDMwMyw4ICs0MjgyLDYgQEAgaGFzaF9w dXQgKHN0cnVjdCBMaXNwX0hhc2hfVGFibGUgKmgsIExpc3BfT2JqZWN0IGtleSwgTGlzcF9PYmpl Y3QgdmFsdWUsCiB7CiAgIHB0cmRpZmZfdCBzdGFydF9vZl9idWNrZXQsIGk7CiAKLSAgaGFzaF9y ZWhhc2hfaWZfbmVlZGVkIChoKTsKLQogICBlYXNzZXJ0ICgoaGFzaCAmIH5JTlRNQVNLKSA9PSAw KTsKIAogICAvKiBJbmNyZW1lbnQgY291bnQgYWZ0ZXIgcmVzaXppbmcgYmVjYXVzZSByZXNpemlu ZyBtYXkgZmFpbC4gICovCkBAIC00MzM4LDggKzQzMTUsNiBAQCBoYXNoX3JlbW92ZV9mcm9tX3Rh YmxlIChzdHJ1Y3QgTGlzcF9IYXNoX1RhYmxlICpoLCBMaXNwX09iamVjdCBrZXkpCiAgIHB0cmRp ZmZfdCBzdGFydF9vZl9idWNrZXQgPSBoYXNoX2NvZGUgJSBBU0laRSAoaC0+aW5kZXgpOwogICBw dHJkaWZmX3QgcHJldiA9IC0xOwogCi0gIGhhc2hfcmVoYXNoX2lmX25lZWRlZCAoaCk7Ci0KICAg Zm9yIChwdHJkaWZmX3QgaSA9IEhBU0hfSU5ERVggKGgsIHN0YXJ0X29mX2J1Y2tldCk7CiAgICAg ICAgMCA8PSBpOwogICAgICAgIGkgPSBIQVNIX05FWFQgKGgsIGkpKQpAQCAtNDQxNyw5ICs0Mzky LDcgQEAgc3dlZXBfd2Vha190YWJsZSAoc3RydWN0IExpc3BfSGFzaF9UYWJsZSAqaCwgYm9vbCBy ZW1vdmVfZW50cmllc19wKQogICBmb3IgKHB0cmRpZmZfdCBidWNrZXQgPSAwOyBidWNrZXQgPCBu OyArK2J1Y2tldCkKICAgICB7CiAgICAgICAvKiBGb2xsb3cgY29sbGlzaW9uIGNoYWluLCByZW1v dmluZyBlbnRyaWVzIHRoYXQgZG9uJ3Qgc3Vydml2ZQotICAgICAgICAgdGhpcyBnYXJiYWdlIGNv bGxlY3Rpb24uICBJdCdzIG9rYXkgaWYgaGFzaF9yZWhhc2hfbmVlZGVkX3AKLSAgICAgICAgICho KSBpcyB0cnVlLCBzaW5jZSB3ZSdyZSBvcGVyYXRpbmcgZW50aXJlbHkgb24gdGhlIGNhY2hlZAot ICAgICAgICAgaGFzaCB2YWx1ZXMuICovCisgICAgICAgICB0aGlzIGdhcmJhZ2UgY29sbGVjdGlv bi4gICovCiAgICAgICBwdHJkaWZmX3QgcHJldiA9IC0xOwogICAgICAgcHRyZGlmZl90IG5leHQ7 CiAgICAgICBmb3IgKHB0cmRpZmZfdCBpID0gSEFTSF9JTkRFWCAoaCwgYnVja2V0KTsgMCA8PSBp OyBpID0gbmV4dCkKZGlmZiAtLWdpdCBhL3NyYy9saXNwLmggYi9zcmMvbGlzcC5oCmluZGV4IGZh NTdjYWQ4YTYuLmNjMGUxYmNlNTEgMTAwNjQ0Ci0tLSBhL3NyYy9saXNwLmgKKysrIGIvc3JjL2xp c3AuaApAQCAtMjIzNiwxMSArMjIzNiw3IEBAICNkZWZpbmUgREVGU1lNKHN5bSwgbmFtZSkgLyog ZW1wdHkgKi8KIAogc3RydWN0IExpc3BfSGFzaF9UYWJsZQogewotICAvKiBDaGFuZ2UgcGR1bXBl ci5jIGlmIHlvdSBjaGFuZ2UgdGhlIGZpZWxkcyBoZXJlLgotCi0gICAgIElNUE9SVEFOVCEhISEh ISEKLQotICAgICBDYWxsIGhhc2hfcmVoYXNoX2lmX25lZWRlZCgpIGJlZm9yZSBhY2Nlc3Npbmcu ICAqLworICAvKiBDaGFuZ2UgcGR1bXBlci5jIGlmIHlvdSBjaGFuZ2UgdGhlIGZpZWxkcyBoZXJl LiAgKi8KIAogICAvKiBUaGlzIGlzIGZvciBMaXNwOyB0aGUgaGFzaCB0YWJsZSBjb2RlIGRvZXMg bm90IHJlZmVyIHRvIGl0LiAgKi8KICAgdW5pb24gdmVjdG9ybGlrZV9oZWFkZXIgaGVhZGVyOwpA QCAtMjM1MywxOSArMjM0OSw2IEBAIEhBU0hfVEFCTEVfU0laRSAoY29uc3Qgc3RydWN0IExpc3Bf SGFzaF9UYWJsZSAqaCkKIAogdm9pZCBoYXNoX3RhYmxlX3JlaGFzaCAoc3RydWN0IExpc3BfSGFz aF9UYWJsZSAqaCk7CiAKLUlOTElORSBib29sCi1oYXNoX3JlaGFzaF9uZWVkZWRfcCAoY29uc3Qg c3RydWN0IExpc3BfSGFzaF9UYWJsZSAqaCkKLXsKLSAgcmV0dXJuIGgtPmNvdW50IDwgMDsKLX0K LQotSU5MSU5FIHZvaWQKLWhhc2hfcmVoYXNoX2lmX25lZWRlZCAoc3RydWN0IExpc3BfSGFzaF9U YWJsZSAqaCkKLXsKLSAgaWYgKGhhc2hfcmVoYXNoX25lZWRlZF9wIChoKSkKLSAgICBoYXNoX3Rh YmxlX3JlaGFzaCAoaCk7Ci19Ci0KIC8qIERlZmF1bHQgc2l6ZSBmb3IgaGFzaCB0YWJsZXMgaWYg bm90IHNwZWNpZmllZC4gICovCiAKIGVudW0gREVGQVVMVF9IQVNIX1NJWkUgeyBERUZBVUxUX0hB U0hfU0laRSA9IDY1IH07CmRpZmYgLS1naXQgYS9zcmMvbWluaWJ1Zi5jIGIvc3JjL21pbmlidWYu YwppbmRleCBkOWE2ZTE1YjA1Li5lOTIzY2UyYTQzIDEwMDY0NAotLS0gYS9zcmMvbWluaWJ1Zi5j CisrKyBiL3NyYy9taW5pYnVmLmMKQEAgLTEyMDMsOSArMTIwMyw2IEBAIERFRlVOICgidHJ5LWNv bXBsZXRpb24iLCBGdHJ5X2NvbXBsZXRpb24sIFN0cnlfY29tcGxldGlvbiwgMiwgMywgMCwKICAg ICAgIGJ1Y2tldCA9IEFSRUYgKGNvbGxlY3Rpb24sIGlkeCk7CiAgICAgfQogCi0gIGlmIChIQVNI X1RBQkxFX1AgKGNvbGxlY3Rpb24pKQotICAgIGhhc2hfcmVoYXNoX2lmX25lZWRlZCAoWEhBU0hf VEFCTEUgKGNvbGxlY3Rpb24pKTsKLQogICB3aGlsZSAoMSkKICAgICB7CiAgICAgICAvKiBHZXQg dGhlIG5leHQgZWxlbWVudCBvZiB0aGUgYWxpc3QsIG9iYXJyYXksIG9yIGhhc2gtdGFibGUuICAq LwpkaWZmIC0tZ2l0IGEvc3JjL3BkdW1wZXIuYyBiL3NyYy9wZHVtcGVyLmMKaW5kZXggM2Q4NTMx YzZhNC4uY2ZkZWI1ZWM5YiAxMDA2NDQKLS0tIGEvc3JjL3BkdW1wZXIuYworKysgYi9zcmMvcGR1 bXBlci5jCkBAIC0zOTIsNiArMzkyLDggQEAgZHVtcF9maW5nZXJwcmludCAoY29uc3QgY2hhciAq bGFiZWwsIHVuc2lnbmVkIGNoYXIgY29uc3QgKnhmaW5nZXJwcmludCkKICAgICAgVGhlIHN0YXJ0 IG9mIHRoZSBjb2xkIHJlZ2lvbiBpcyBhbHdheXMgYWxpZ25lZCBvbiBhIHBhZ2UKICAgICAgYm91 bmRhcnkuICAqLwogICBkdW1wX29mZiBjb2xkX3N0YXJ0OworCisgIGR1bXBfb2ZmIGhhc2hfbGlz dDsKIH07CiAKIC8qIERvdWJsZS1lbmRlZCBzaW5nbHkgbGlua2VkIGxpc3QuICAqLwpAQCAtNTQ5 LDYgKzU1MSw4IEBAIGR1bXBfZmluZ2VycHJpbnQgKGNvbnN0IGNoYXIgKmxhYmVsLCB1bnNpZ25l ZCBjaGFyIGNvbnN0ICp4ZmluZ2VycHJpbnQpCiAgICAgIGhlYXAgb2JqZWN0cy4gICovCiAgIExp c3BfT2JqZWN0IGJpZ251bV9kYXRhOwogCisgIExpc3BfT2JqZWN0IGhhc2hfdGFibGVzOworCiAg IHVuc2lnbmVkIG51bWJlcl9ob3RfcmVsb2NhdGlvbnM7CiAgIHVuc2lnbmVkIG51bWJlcl9kaXNj YXJkYWJsZV9yZWxvY2F0aW9uczsKIH07CkBAIC0yNjIxLDY4ICsyNjI1LDY0IEBAIGR1bXBfdmVj dG9ybGlrZV9nZW5lcmljIChzdHJ1Y3QgZHVtcF9jb250ZXh0ICpjdHgsCiAgIHJldHVybiBvZmZz ZXQ7CiB9CiAKLS8qIERldGVybWluZSB3aGV0aGVyIHRoZSBoYXNoIHRhYmxlJ3MgaGFzaCBvcmRl ciBpcyBzdGFibGUKLSAgIGFjcm9zcyBkdW1wIGFuZCBsb2FkLiAgSWYgaXQgaXMsIHdlIGRvbid0 IGhhdmUgdG8gdHJpZ2dlcgotICAgYSByZWhhc2ggb24gYWNjZXNzLiAgKi8KLXN0YXRpYyBib29s Ci1kdW1wX2hhc2hfdGFibGVfc3RhYmxlX3AgKGNvbnN0IHN0cnVjdCBMaXNwX0hhc2hfVGFibGUg Kmhhc2gpCisvKiBSZXR1cm4gYSBsaXN0IG9mIChLRVkgLiBWQUxVRSkgcGFpcnMgaW4gdGhlIGdp dmVuIGhhc2ggdGFibGUuICAqLworc3RhdGljIExpc3BfT2JqZWN0CitoYXNoX3RhYmxlX2NvbnRl bnRzIChzdHJ1Y3QgTGlzcF9IYXNoX1RhYmxlICpoKQogewotICBib29sIGlzX2VxbCA9IGhhc2gt PnRlc3QuaGFzaGZuID09IGhhc2hmbl9lcWw7Ci0gIGJvb2wgaXNfZXF1YWwgPSBoYXNoLT50ZXN0 Lmhhc2hmbiA9PSBoYXNoZm5fZXF1YWw7Ci0gIHB0cmRpZmZfdCBzaXplID0gSEFTSF9UQUJMRV9T SVpFIChoYXNoKTsKLSAgZm9yIChwdHJkaWZmX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpCi0gICAg aWYgKCFOSUxQIChIQVNIX0hBU0ggKGhhc2gsIGkpKSkKKyAgTGlzcF9PYmplY3QgY29udGVudHMg PSBRbmlsOworICAvKiBNYWtlIHN1cmUga2V5X2FuZF92YWx1ZSBlbmRzIHVwIGluIHRoZSBzYW1l IG9yZGVyLCBjaGFyc2V0LmMKKyAgICAgcmVsaWVzIG9uIGl0IGJ5IGV4cGVjdGluZyBoYXNoIHRh YmxlIGluZGljZXMgdG8gc3RheSBjb25zdGFudAorICAgICBhY3Jvc3MgdGhlIGR1bXAuICAqLwor ICBmb3IgKHB0cmRpZmZfdCBpID0gSEFTSF9UQUJMRV9TSVpFIChoKSAtIDE7IGkgPj0gMDsgLS1p KQorICAgIGlmICghTklMUCAoSEFTSF9IQVNIIChoLCBpKSkpCiAgICAgICB7Ci0gICAgICAgIExp c3BfT2JqZWN0IGtleSA9ICBIQVNIX0tFWSAoaGFzaCwgaSk7Ci0JYm9vbCBrZXlfc3RhYmxlID0g KGR1bXBfYnVpbHRpbl9zeW1ib2xfcCAoa2V5KQotCQkJICAgfHwgRklYTlVNUCAoa2V5KQotCQkJ ICAgfHwgKGlzX2VxdWFsICYmIFNUUklOR1AgKGtleSkpCi0JCQkgICB8fCAoKGlzX2VxdWFsIHx8 IGlzX2VxbCkgJiYgRkxPQVRQIChrZXkpKSk7Ci0gICAgICAgIGlmICgha2V5X3N0YWJsZSkKLSAg ICAgICAgICByZXR1cm4gZmFsc2U7CisJZHVtcF9wdXNoICgmY29udGVudHMsIEhBU0hfVkFMVUUg KGgsIGkpKTsKKwlkdW1wX3B1c2ggKCZjb250ZW50cywgSEFTSF9LRVkgKGgsIGkpKTsKICAgICAg IH0KKyAgcmV0dXJuIENBTExOIChGYXBwbHksIFF2ZWN0b3IsIGNvbnRlbnRzKTsKK30KIAotICBy ZXR1cm4gdHJ1ZTsKK3N0YXRpYyBkdW1wX29mZgorZHVtcF9oYXNoX3RhYmxlX2xpc3QgKHN0cnVj dCBkdW1wX2NvbnRleHQgKmN0eCkKK3sKKyAgaWYgKENPTlNQIChjdHgtPmhhc2hfdGFibGVzKSkK KyAgICByZXR1cm4gZHVtcF9vYmplY3QgKGN0eCwgQ0FMTE4gKEZhcHBseSwgUXZlY3RvciwgY3R4 LT5oYXNoX3RhYmxlcykpOworICBlbHNlCisgICAgcmV0dXJuIDA7CiB9CiAKLS8qIFJldHVybiBh IGxpc3Qgb2YgKEtFWSAuIFZBTFVFKSBwYWlycyBpbiB0aGUgZ2l2ZW4gaGFzaCB0YWJsZS4gICov Ci1zdGF0aWMgTGlzcF9PYmplY3QKLWhhc2hfdGFibGVfY29udGVudHMgKExpc3BfT2JqZWN0IHRh YmxlKQorc3RhdGljIHZvaWQKK2hhc2hfdGFibGVfZnJlZXplIChzdHJ1Y3QgTGlzcF9IYXNoX1Rh YmxlICpoKQogewotICBMaXNwX09iamVjdCBjb250ZW50cyA9IFFuaWw7Ci0gIHN0cnVjdCBMaXNw X0hhc2hfVGFibGUgKmggPSBYSEFTSF9UQUJMRSAodGFibGUpOwotICBmb3IgKHB0cmRpZmZfdCBp ID0gMDsgaSA8IEhBU0hfVEFCTEVfU0laRSAoaCk7ICsraSkKLSAgICBpZiAoIU5JTFAgKEhBU0hf SEFTSCAoaCwgaSkpKQotICAgICAgZHVtcF9wdXNoICgmY29udGVudHMsIEZjb25zIChIQVNIX0tF WSAoaCwgaSksIEhBU0hfVkFMVUUgKGgsIGkpKSk7Ci0gIHJldHVybiBGbnJldmVyc2UgKGNvbnRl bnRzKTsKKyAgaC0+a2V5X2FuZF92YWx1ZSA9IGhhc2hfdGFibGVfY29udGVudHMgKGgpOworICBw dHJkaWZmX3QgbmtleXMgPSBYRklYTkFUIChGbGVuZ3RoIChoLT5rZXlfYW5kX3ZhbHVlKSkgLyAy OworICBoLT5jb3VudCA9IG5rZXlzOworICBpZiAobmtleXMgPT0gMCkKKyAgICBua2V5cyA9IDE7 CisgIGgtPmluZGV4ID0gaC0+bmV4dCA9IGgtPmhhc2ggPSBtYWtlX2ZpeG51bSAobmtleXMpOwog fQogCi0vKiBDb3B5IHRoZSBnaXZlbiBoYXNoIHRhYmxlLCByZWhhc2ggaXQsIGFuZCBtYWtlIHN1 cmUgdGhhdCB3ZSBjYW4KLSAgIGxvb2sgdXAgYWxsIHRoZSB2YWx1ZXMgaW4gdGhlIG9yaWdpbmFs LiAgKi8KIHN0YXRpYyB2b2lkCi1jaGVja19oYXNoX3RhYmxlX3JlaGFzaCAoTGlzcF9PYmplY3Qg dGFibGVfb3JpZykKLXsKLSAgaGFzaF9yZWhhc2hfaWZfbmVlZGVkIChYSEFTSF9UQUJMRSAodGFi bGVfb3JpZykpOwotICBMaXNwX09iamVjdCB0YWJsZV9yZWhhc2hlZCA9IEZjb3B5X2hhc2hfdGFi bGUgKHRhYmxlX29yaWcpOwotICBlYXNzZXJ0IChYSEFTSF9UQUJMRSAodGFibGVfcmVoYXNoZWQp LT5jb3VudCA+PSAwKTsKLSAgWEhBU0hfVEFCTEUgKHRhYmxlX3JlaGFzaGVkKS0+Y291bnQgKj0g LTE7Ci0gIGVhc3NlcnQgKFhIQVNIX1RBQkxFICh0YWJsZV9yZWhhc2hlZCktPmNvdW50IDw9IDAp OwotICBoYXNoX3JlaGFzaF9pZl9uZWVkZWQgKFhIQVNIX1RBQkxFICh0YWJsZV9yZWhhc2hlZCkp OwotICBlYXNzZXJ0IChYSEFTSF9UQUJMRSAodGFibGVfcmVoYXNoZWQpLT5jb3VudCA+PSAwKTsK LSAgTGlzcF9PYmplY3QgZXhwZWN0ZWRfY29udGVudHMgPSBoYXNoX3RhYmxlX2NvbnRlbnRzICh0 YWJsZV9vcmlnKTsKLSAgd2hpbGUgKCFOSUxQIChleHBlY3RlZF9jb250ZW50cykpCitoYXNoX3Rh YmxlX3RoYXcgKHN0cnVjdCBMaXNwX0hhc2hfVGFibGUgKmgpCit7CisgIExpc3BfT2JqZWN0IGNv dW50ID0gaC0+aW5kZXg7CisgIGgtPmluZGV4ID0gRm1ha2VfdmVjdG9yIChoLT5pbmRleCwgbWFr ZV9maXhudW0gKC0xKSk7CisgIGgtPmhhc2ggPSBGbWFrZV92ZWN0b3IgKGgtPmhhc2gsIFFuaWwp OworICBoLT5uZXh0ID0gRm1ha2VfdmVjdG9yIChoLT5uZXh0LCBtYWtlX2ZpeG51bSAoLTEpKTsK KyAgTGlzcF9PYmplY3Qga2V5X2FuZF92YWx1ZSA9IGgtPmtleV9hbmRfdmFsdWU7CisgIGgtPm5l eHRfZnJlZSA9IC0xOworICBpZiAoWEZJWE5BVCAoY291bnQpIDw9IDEpCiAgICAgewotICAgICAg TGlzcF9PYmplY3Qga2V5X3ZhbHVlX3BhaXIgPSBkdW1wX3BvcCAoJmV4cGVjdGVkX2NvbnRlbnRz KTsKLSAgICAgIExpc3BfT2JqZWN0IGtleSA9IFhDQVIgKGtleV92YWx1ZV9wYWlyKTsKLSAgICAg IExpc3BfT2JqZWN0IGV4cGVjdGVkX3ZhbHVlID0gWENEUiAoa2V5X3ZhbHVlX3BhaXIpOwotICAg ICAgTGlzcF9PYmplY3QgYXJiaXRyYXJ5ID0gUWR1bXBfZW1hY3NfcG9ydGFibGVfX3NvcnRfcHJl ZGljYXRlX2NvcGllZDsKLSAgICAgIExpc3BfT2JqZWN0IGZvdW5kX3ZhbHVlID0gRmdldGhhc2gg KGtleSwgdGFibGVfcmVoYXNoZWQsIGFyYml0cmFyeSk7Ci0gICAgICBlYXNzZXJ0IChFUSAoZXhw ZWN0ZWRfdmFsdWUsIGZvdW5kX3ZhbHVlKSk7Ci0gICAgICBGcmVtaGFzaCAoa2V5LCB0YWJsZV9y ZWhhc2hlZCk7CisgICAgICBoLT5rZXlfYW5kX3ZhbHVlID0gRm1ha2VfdmVjdG9yIChtYWtlX2Zp eG51bSAoMiAqIFhGSVhOQVQgKGNvdW50KSksIFFuaWwpOworICAgICAgcHRyZGlmZl90IGkgPSAw OworICAgICAgd2hpbGUgKGkgPCBBU0laRSAoa2V5X2FuZF92YWx1ZSkpCisJeworCSAgQVNFVCAo aC0+a2V5X2FuZF92YWx1ZSwgaSwgQVJFRiAoa2V5X2FuZF92YWx1ZSwgaSkpOworCSAgaSsrOwor CX0KICAgICB9CiAKLSAgZWFzc2VydCAoRVEgKEZoYXNoX3RhYmxlX2NvdW50ICh0YWJsZV9yZWhh c2hlZCksCi0gICAgICAgICAgICAgICBtYWtlX2ZpeG51bSAoMCkpKTsKKyAgaGFzaF90YWJsZV9y ZWhhc2ggKGgpOwogfQogCiBzdGF0aWMgZHVtcF9vZmYKQEAgLTI2OTQsNDUgKzI2OTQsMTEgQEAg ZHVtcF9oYXNoX3RhYmxlIChzdHJ1Y3QgZHVtcF9jb250ZXh0ICpjdHgsCiAjIGVycm9yICJMaXNw X0hhc2hfVGFibGUgY2hhbmdlZC4gU2VlIENIRUNLX1NUUlVDVFMgY29tbWVudCBpbiBjb25maWcu aC4iCiAjZW5kaWYKICAgY29uc3Qgc3RydWN0IExpc3BfSGFzaF9UYWJsZSAqaGFzaF9pbiA9IFhI QVNIX1RBQkxFIChvYmplY3QpOwotICBib29sIGlzX3N0YWJsZSA9IGR1bXBfaGFzaF90YWJsZV9z dGFibGVfcCAoaGFzaF9pbik7Ci0gIC8qIElmIHRoZSBoYXNoIHRhYmxlIGlzIGxpa2VseSB0byBi ZSBtb2RpZmllZCBpbiBtZW1vcnkgKGVpdGhlcgotICAgICBiZWNhdXNlIHdlIG5lZWQgdG8gcmVo YXNoLCBhbmQgdGh1cyB0b2dnbGUgaGFzaC0+Y291bnQsIG9yCi0gICAgIGJlY2F1c2Ugd2UgbmVl ZCB0byBhc3NlbWJsZSBhIGxpc3Qgb2Ygd2VhayB0YWJsZXMpIHB1bnQgdGhlIGhhc2gKLSAgICAg dGFibGUgdG8gdGhlIGVuZCBvZiB0aGUgZHVtcCwgd2hlcmUgd2UgY2FuIGx1bXAgYWxsIHN1Y2gg aGFzaAotICAgICB0YWJsZXMgdG9nZXRoZXIuICAqLwotICBpZiAoIShpc19zdGFibGUgfHwgIU5J TFAgKGhhc2hfaW4tPndlYWspKQotICAgICAgJiYgY3R4LT5mbGFncy5kZWZlcl9oYXNoX3RhYmxl cykKLSAgICB7Ci0gICAgICBpZiAob2Zmc2V0ICE9IERVTVBfT0JKRUNUX09OX0hBU0hfVEFCTEVf UVVFVUUpCi0gICAgICAgIHsKLQkgIGVhc3NlcnQgKG9mZnNldCA9PSBEVU1QX09CSkVDVF9PTl9O T1JNQUxfUVVFVUUKLQkJICAgfHwgb2Zmc2V0ID09IERVTVBfT0JKRUNUX05PVF9TRUVOKTsKLSAg ICAgICAgICAvKiBXZSBzdGlsbCB3YW50IHRvIGR1bXAgdGhlIGFjdHVhbCBrZXlzIGFuZCB2YWx1 ZXMgbm93LiAgKi8KLSAgICAgICAgICBkdW1wX2VucXVldWVfb2JqZWN0IChjdHgsIGhhc2hfaW4t PmtleV9hbmRfdmFsdWUsIFdFSUdIVF9OT05FKTsKLSAgICAgICAgICAvKiBXZSdsbCBnZXQgdG8g dGhlIHJlc3QgbGF0ZXIuICAqLwotICAgICAgICAgIG9mZnNldCA9IERVTVBfT0JKRUNUX09OX0hB U0hfVEFCTEVfUVVFVUU7Ci0gICAgICAgICAgZHVtcF9yZW1lbWJlcl9vYmplY3QgKGN0eCwgb2Jq ZWN0LCBvZmZzZXQpOwotICAgICAgICAgIGR1bXBfcHVzaCAoJmN0eC0+ZGVmZXJyZWRfaGFzaF90 YWJsZXMsIG9iamVjdCk7Ci0gICAgICAgIH0KLSAgICAgIHJldHVybiBvZmZzZXQ7Ci0gICAgfQot Ci0gIGlmIChQRFVNUEVSX0NIRUNLX1JFSEFTSElORykKLSAgICBjaGVja19oYXNoX3RhYmxlX3Jl aGFzaCAobWFrZV9saXNwX3B0ciAoKHZvaWQgKikgaGFzaF9pbiwgTGlzcF9WZWN0b3JsaWtlKSk7 Ci0KICAgc3RydWN0IExpc3BfSGFzaF9UYWJsZSBoYXNoX211bmdlZCA9ICpoYXNoX2luOwogICBz dHJ1Y3QgTGlzcF9IYXNoX1RhYmxlICpoYXNoID0gJmhhc2hfbXVuZ2VkOwogCi0gIC8qIFJlbWVt YmVyIHRvIHJlaGFzaCB0aGlzIGhhc2ggdGFibGUgb24gZmlyc3QgYWNjZXNzLiAgQWZ0ZXIgYQot ICAgICBkdW1wIHJlbG9hZCwgdGhlIGhhc2ggdGFibGUgdmFsdWVzIHdpbGwgaGF2ZSBjaGFuZ2Vk LCBzbyB3ZSdsbAotICAgICBuZWVkIHRvIHJlYnVpbGQgdGhlIGluZGV4LgotCi0gICAgIFRPRE86 IGZvciBFUSBhbmQgRVFMIGhhc2ggdGFibGVzLCBpdCBzaG91bGQgYmUgcG9zc2libGUgdG8gcmVo YXNoCi0gICAgIGhlcmUgdXNpbmcgdGhlIHByZWZlcnJlZCBsb2FkIGFkZHJlc3Mgb2YgdGhlIGR1 bXAsIGVsaW1pbmF0aW5nCi0gICAgIHRoZSBuZWVkIHRvIHJlaGFzaC1vbi1hY2Nlc3MgaWYgd2Ug Y2FuIGxvYWQgdGhlIGR1bXAgd2hlcmUgd2UKLSAgICAgd2FudC4gICovCi0gIGlmIChoYXNoLT5j b3VudCA+IDAgJiYgIWlzX3N0YWJsZSkKLSAgICBoYXNoLT5jb3VudCA9IC1oYXNoLT5jb3VudDsK KyAgaGFzaF90YWJsZV9mcmVlemUgKGhhc2gpOworICBkdW1wX3B1c2ggKCZjdHgtPmhhc2hfdGFi bGVzLCBvYmplY3QpOwogCiAgIFNUQVJUX0RVTVBfUFZFQyAoY3R4LCAmaGFzaC0+aGVhZGVyLCBz dHJ1Y3QgTGlzcF9IYXNoX1RhYmxlLCBvdXQpOwogICBkdW1wX3BzZXVkb3ZlY3Rvcl9saXNwX2Zp ZWxkcyAoY3R4LCAmb3V0LT5oZWFkZXIsICZoYXNoLT5oZWFkZXIpOwpAQCAtNDE0Miw2ICs0MTA4 LDE5IEBAIERFRlVOICgiZHVtcC1lbWFjcy1wb3J0YWJsZSIsCiAJIHx8ICFOSUxQIChjdHgtPmRl ZmVycmVkX2hhc2hfdGFibGVzKQogCSB8fCAhTklMUCAoY3R4LT5kZWZlcnJlZF9zeW1ib2xzKSk7 CiAKKyAgY3R4LT5oZWFkZXIuaGFzaF9saXN0ID0gY3R4LT5vZmZzZXQ7CisgIGR1bXBfaGFzaF90 YWJsZV9saXN0IChjdHgpOworCisgIGRvCisgICAgeworICAgICAgZHVtcF9kcmFpbl9kZWZlcnJl ZF9oYXNoX3RhYmxlcyAoY3R4KTsKKyAgICAgIGR1bXBfZHJhaW5fZGVmZXJyZWRfc3ltYm9scyAo Y3R4KTsKKyAgICAgIGR1bXBfZHJhaW5fbm9ybWFsX3F1ZXVlIChjdHgpOworICAgIH0KKyAgd2hp bGUgKCFkdW1wX3F1ZXVlX2VtcHR5X3AgKCZjdHgtPmR1bXBfcXVldWUpCisJIHx8ICFOSUxQIChj dHgtPmRlZmVycmVkX2hhc2hfdGFibGVzKQorCSB8fCAhTklMUCAoY3R4LT5kZWZlcnJlZF9zeW1i b2xzKSk7CisKICAgZHVtcF9zb3J0X2NvcGllZF9vYmplY3RzIChjdHgpOwogCiAgIC8qIFdoaWxl IHdlIGNvcHkgYnVpbHQtaW4gc3ltYm9scyBpbnRvIHRoZSBFbWFjcyBpbWFnZSwgdGhlc2UKQEAg LTU0MzMsNiArNTQxMiwxMyBAQCBwZHVtcGVyX2xvYWQgKGNvbnN0IGNoYXIgKmR1bXBfZmlsZW5h bWUpCiAgIGZvciAoaW50IGkgPSAwOyBpIDwgQVJSQVlFTFRTIChzZWN0aW9ucyk7ICsraSkKICAg ICBkdW1wX21tYXBfcmVzZXQgKCZzZWN0aW9uc1tpXSk7CiAKKyAgaWYgKGhlYWRlci0+aGFzaF9s aXN0KQorICAgIHsKKyAgICAgIHN0cnVjdCBMaXNwX1ZlY3RvciAqaGFzaF90YWJsZXMgPQorCSgo c3RydWN0IExpc3BfVmVjdG9yICopKGR1bXBfYmFzZSArIGhlYWRlci0+aGFzaF9saXN0KSk7Cisg ICAgICBYU0VUVkVDVE9SIChWcGR1bXBlcl9oYXNoX3RhYmxlcywgaGFzaF90YWJsZXMpOworICAg IH0KKwogICAvKiBSdW4gdGhlIGZ1bmN0aW9ucyBFbWFjcyByZWdpc3RlcmVkIGZvciBkb2luZyBw b3N0LWR1bXAtbG9hZAogICAgICBpbml0aWFsaXphdGlvbi4gICovCiAgIGZvciAoaW50IGkgPSAw OyBpIDwgbnJfZHVtcF9ob29rczsgKytpKQpAQCAtNTUwNCwxMCArNTQ5MCwzMSBAQCBERUZVTiAo InBkdW1wZXItc3RhdHMiLCBGcGR1bXBlcl9zdGF0cywgU3BkdW1wZXJfc3RhdHMsIDAsIDAsIDAs CiAKIAwKIAorc3RhdGljIHZvaWQgdGhhd19oYXNoX3RhYmxlcyAodm9pZCkKK3sKKyAgTGlzcF9P YmplY3QgaGFzaF90YWJsZXMgPSBWcGR1bXBlcl9oYXNoX3RhYmxlczsKKyAgcHRyZGlmZl90IGkg PSAwOworICB3aGlsZSAoaSA8IEFTSVpFIChoYXNoX3RhYmxlcykpCisgICAgeworICAgICAgaGFz aF90YWJsZV90aGF3IChYSEFTSF9UQUJMRSAoQVJFRiAoaGFzaF90YWJsZXMsIGkpKSk7CisgICAg ICBpKys7CisgICAgfQorICBWcGR1bXBlcl9oYXNoX3RhYmxlcyA9IHplcm9fdmVjdG9yOworfQor Cit2b2lkCitpbml0X3BkdW1wZXJfb25jZSAodm9pZCkKK3sKKyAgVnBkdW1wZXJfaGFzaF90YWJs ZXMgPSB6ZXJvX3ZlY3RvcjsKKyAgcGR1bXBlcl9kb19ub3dfYW5kX2FmdGVyX2xvYWQgKHRoYXdf aGFzaF90YWJsZXMpOworfQorCiB2b2lkCiBzeW1zX29mX3BkdW1wZXIgKHZvaWQpCiB7CiAjaWZk ZWYgSEFWRV9QRFVNUEVSCisgIERFRlZBUl9MSVNQICgicGR1bXBlci1oYXNoLXRhYmxlcyIsIFZw ZHVtcGVyX2hhc2hfdGFibGVzLAorCSAgICAgICBkb2M6IC8qIEEgbGlzdCBvZiBoYXNoIHRhYmxl cyB0aGF0IG5lZWQgdG8gYmUgdGhhd2VkIGFmdGVyIGxvYWRpbmcgdGhlIHBkdW1wLiAgKi8pOwog ICBkZWZzdWJyICgmU2R1bXBfZW1hY3NfcG9ydGFibGUpOwogICBkZWZzdWJyICgmU2R1bXBfZW1h Y3NfcG9ydGFibGVfX3NvcnRfcHJlZGljYXRlKTsKICAgZGVmc3ViciAoJlNkdW1wX2VtYWNzX3Bv cnRhYmxlX19zb3J0X3ByZWRpY2F0ZV9jb3BpZWQpOwpkaWZmIC0tZ2l0IGEvc3JjL3BkdW1wZXIu aCBiL3NyYy9wZHVtcGVyLmgKaW5kZXggYWIyZjQyNmMxZS4uY2ZlYTA2ZDMzZCAxMDA2NDQKLS0t IGEvc3JjL3BkdW1wZXIuaAorKysgYi9zcmMvcGR1bXBlci5oCkBAIC0yNDgsNiArMjQ4LDcgQEAg cGR1bXBlcl9jbGVhcl9tYXJrcyAodm9pZCkKICAgIGZpbGUgd2FzIGxvYWRlZC4gICovCiBleHRl cm4gdm9pZCBwZHVtcGVyX3JlY29yZF93ZCAoY29uc3QgY2hhciAqKTsKIAordm9pZCBpbml0X3Bk dW1wZXJfb25jZSAodm9pZCk7CiB2b2lkIHN5bXNfb2ZfcGR1bXBlciAodm9pZCk7CiAKIElOTElO RV9IRUFERVJfRU5ECi0tIAoyLjIwLjEKCg== --0000000000008cb6d5058d684ade--