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: Sat, 20 Jul 2019 12:38:20 +0000 Message-ID: References: <6a260307-a463-bd08-8a10-d7664d0606a2@cs.ucla.edu> <74235afc-7043-1da7-7c71-07f0ca23b9fd@cs.ucla.edu> <83r26mv53z.fsf@gnu.org> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="0000000000006235d9058e1c2058" Injection-Info: blaine.gmane.org; posting-host="blaine.gmane.org:195.159.176.226"; logging-data="24082"; mail-complaints-to="usenet@blaine.gmane.org" Cc: eggert@cs.ucla.edu, 36597@debbugs.gnu.org To: Eli Zaretskii Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Sat Jul 20 14:40:14 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 1hooep-00066q-Hj for geb-bug-gnu-emacs@m.gmane.org; Sat, 20 Jul 2019 14:40:11 +0200 Original-Received: from localhost ([::1]:51028 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hooen-0007US-EE for geb-bug-gnu-emacs@m.gmane.org; Sat, 20 Jul 2019 08:40:09 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:35871) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hooei-0007U8-Td for bug-gnu-emacs@gnu.org; Sat, 20 Jul 2019 08:40:07 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hooeg-0000dH-HA for bug-gnu-emacs@gnu.org; Sat, 20 Jul 2019 08:40:04 -0400 Original-Received: from debbugs.gnu.org ([209.51.188.43]:48092) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hooeg-0000dA-D4 for bug-gnu-emacs@gnu.org; Sat, 20 Jul 2019 08:40:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1hooeg-0001z8-7Z for bug-gnu-emacs@gnu.org; Sat, 20 Jul 2019 08:40:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Pip Cet Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 20 Jul 2019 12:40:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 36597 X-GNU-PR-Package: emacs Original-Received: via spool by 36597-submit@debbugs.gnu.org id=B36597.15636263467565 (code B ref 36597); Sat, 20 Jul 2019 12:40:02 +0000 Original-Received: (at 36597) by debbugs.gnu.org; 20 Jul 2019 12:39:06 +0000 Original-Received: from localhost ([127.0.0.1]:56913 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1hoodl-0001xw-Pl for submit@debbugs.gnu.org; Sat, 20 Jul 2019 08:39:06 -0400 Original-Received: from mail-ot1-f49.google.com ([209.85.210.49]:46161) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1hoodi-0001xP-Ol for 36597@debbugs.gnu.org; Sat, 20 Jul 2019 08:39:03 -0400 Original-Received: by mail-ot1-f49.google.com with SMTP id z23so7234242ote.13 for <36597@debbugs.gnu.org>; Sat, 20 Jul 2019 05:39:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=/k7Ou8ti6QzsEz4LB93f3r1v3cSE5v+ZhHMc1i+k7ag=; b=cbtTvJJvU3u3/Lm6ZkHnKMDc09kuWdjj3/W9gH0VlVxYcL6bpKfiQoaImKpkE68rDH ndLQbFKmy+btMbEN0xjSTFLOgfFhjIbQo5G9GVL+s5wnmO6jUuPqLVX3f6569q2H/4r+ uIRs+GTooc7s1naMxEsSu101aQQkkAbS6BIQzDX93eXP1l6B8cXgPeM+8sw19nMmcKjW 7/qRHBc+FytCvuF+EIoyfl3+w7uNiYZaO2H39LO0WIrYCNp50jcOzPsE2ZeoVWRas5Wo a38aA3L9808dXFd/6oCc7oFQe4XtOtXMR0vBPEREZZomx6IeIj1oiZz8LBrt87yFGv7W BemQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=/k7Ou8ti6QzsEz4LB93f3r1v3cSE5v+ZhHMc1i+k7ag=; b=SdDsexEA6xxUAgvNwXAZIWfqSQz+ciauPmhrSEuRYsylUd8hDpUZyWgYVGNqmLksnh 6cXIb+S4MtxvIZnQZuhLFRGTqVGDpIozq0byQKUDh8KaVHJw0+xaOl3d6NLCBBas1m+o Ju/8Ul9OMSPkoMooqI/b064jgr2dPUgR+2KwZHebMWzj/Yn5OAaMmnATM1A1OrWWEyEM Ob95ZzMvYXU3WPgL49UMKBqRwdJ6GBMYQ9Nhmu0BY8EaXkv1elGBpGwYG+5MA/+bvEq3 Jy3Q7AWU++yv1kcTPWAk+vbEyioSQIvMfByoqWNNiRUfsyK8m9sLbwtC2XbenCy96Z+p WTvQ== X-Gm-Message-State: APjAAAUtXnZpcXOYZirYtdcslq0pSBe3NL8kebWUIWS3RWn+ZOcq6UBi yi8sJX9gWVB8J02pFqOleLq2kzx+UGc2A3ezQ9k= X-Google-Smtp-Source: APXvYqy0VcroJVfVn+TOUL4oFsgSWo8nwFM1seTkPAYmDr62jK5CyS6bEPlqQ5haN4+j8vpRaVxcos/B5mr5ubCDREY= X-Received: by 2002:a9d:7352:: with SMTP id l18mr39273363otk.292.1563626337076; Sat, 20 Jul 2019 05:38:57 -0700 (PDT) In-Reply-To: <83r26mv53z.fsf@gnu.org> 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:163460 Archived-At: --0000000000006235d9058e1c2058 Content-Type: text/plain; charset="UTF-8" On Fri, Jul 19, 2019 at 7:46 AM Eli Zaretskii wrote: > > +static void thaw_hash_tables (void) > > +{ > > This is not our style of defining a function. The name should begin > on a new line. Thanks for pointing that out, revised patch attached. I'm currently playing around with redefining hash tables not to have internal freelists. That makes the hash table code a lot simpler overall, but some of that simplicity would be lost trying to support lazy hash table rehashing. --0000000000006235d9058e1c2058 Content-Type: text/x-patch; charset="US-ASCII"; name="0001-Rehash-hash-tables-eagerly-after-loading-a-dump.patch" Content-Disposition: attachment; filename="0001-Rehash-hash-tables-eagerly-after-loading-a-dump.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_jybijs2f0 RnJvbSBkZDc3NDNiNTBjNThhNWM5YmIyNWIzZWQwNTI0NWExOWIwZGQxOWQ3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBQaXAgQ2V0IDxwaXBjZXRAZ21haWwuY29tPgpEYXRlOiBGcmks IDE5IEp1bCAyMDE5IDA3OjEyOjQyICswMDAwClN1YmplY3Q6IFtQQVRDSF0gUmVoYXNoIGhhc2gg dGFibGVzIGVhZ2VybHkgYWZ0ZXIgbG9hZGluZyBhIGR1bXAuCgoqIHNyYy9saXNwLmggKGhhc2hf cmVoYXNoX25lZWRlZF9wKTogUmVtb3ZlLiAgQWxsIHVzZXMgcmVtb3ZlZC4KKGhhc2hfcmVoYXNo X2lmX25lZWRlZCk6IFJlbW92ZS4gIEFsbCB1c2VzIHJlbW92ZWQuCihzdHJ1Y3QgTGlzcF9IYXNo X1RhYmxlKTogUmVtb3ZlIGNvbW1lbnQgYWJvdXQgcmVoYXNoaW5nIGhhc2ggdGFibGVzLgoqIHNy Yy9wZHVtcGVyLmMgKHRoYXdfaGFzaF90YWJsZXMpOiBOZXcgZnVuY3Rpb24uCihoYXNoX3RhYmxl X3RoYXcpOiBOZXcgZnVuY3Rpb24uCihoYXNoX3RhYmxlX2ZyZWV6ZSk6IE5ldyBmdW5jdGlvbi4K KGR1bXBfaGFzaF90YWJsZSk6IFNpbXBsaWZ5LgooZHVtcF9oYXNoX3RhYmxlX2xpc3QpOiBOZXcg ZnVuY3Rpb24uCihoYXNoX3RhYmxlX2NvbnRlbnRzKTogTmV3IGZ1bmN0aW9uLgooRmR1bXBfZW1h Y3NfcG9ydGFibGUpOiBIYW5kbGUgaGFzaCB0YWJsZXMgYnkgZWFnZXIgcmVoYXNoaW5nLgoocGR1 bXBlcl9sb2FkKTogUmVzdG9yZSBoYXNoIHRhYmxlcy4KKGluaXRfcGR1bXBlcl9vbmNlKTogTmV3 IGZ1bmN0aW9uLgotLS0KIHNyYy9ieXRlY29kZS5jICB8ICAgMSAtCiBzcmMvY29tcG9zaXRlLmMg fCAgIDEgLQogc3JjL2VtYWNzLmMgICAgIHwgICAxICsKIHNyYy9mbnMuYyAgICAgICB8ICA2NSAr KysrKy0tLS0tLS0tLS0tLQogc3JjL2xpc3AuaCAgICAgIHwgIDE5ICstLS0tCiBzcmMvbWluaWJ1 Zi5jICAgfCAgIDMgLQogc3JjL3BkdW1wZXIuYyAgIHwgMTgzICsrKysrKysrKysrKysrKysrKysr KystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogc3JjL3BkdW1wZXIuaCAgIHwgICAxICsKIDgg ZmlsZXMgY2hhbmdlZCwgMTA0IGluc2VydGlvbnMoKyksIDE3MCBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9zcmMvYnl0ZWNvZGUuYyBiL3NyYy9ieXRlY29kZS5jCmluZGV4IDI5ZGZmNDRmMDAu LjljNzI0MjllMGMgMTAwNjQ0Ci0tLSBhL3NyYy9ieXRlY29kZS5jCisrKyBiL3NyYy9ieXRlY29k ZS5jCkBAIC0xNDAyLDcgKzE0MDIsNiBAQCAjZGVmaW5lIERFRklORShuYW1lLCB2YWx1ZSkgTEFC RUwgKG5hbWUpICwKICAgICAgICAgICAgIExpc3BfT2JqZWN0IHYxID0gUE9QOwogICAgICAgICAg ICAgcHRyZGlmZl90IGk7CiAgICAgICAgICAgICBzdHJ1Y3QgTGlzcF9IYXNoX1RhYmxlICpoID0g WEhBU0hfVEFCTEUgKGptcF90YWJsZSk7Ci0gICAgICAgICAgICBoYXNoX3JlaGFzaF9pZl9uZWVk ZWQgKGgpOwogCiAgICAgICAgICAgICAvKiBoLT5jb3VudCBpcyBhIGZhc3RlciBhcHByb3hpbWF0 aW9uIGZvciBIQVNIX1RBQkxFX1NJWkUgKGgpCiAgICAgICAgICAgICAgICBoZXJlLiAqLwpkaWZm IC0tZ2l0IGEvc3JjL2NvbXBvc2l0ZS5jIGIvc3JjL2NvbXBvc2l0ZS5jCmluZGV4IDE4MzA2MmRl NDYuLjQ5YTI4NWNmZjAgMTAwNjQ0Ci0tLSBhL3NyYy9jb21wb3NpdGUuYworKysgYi9zcmMvY29t cG9zaXRlLmMKQEAgLTY1NCw3ICs2NTQsNiBAQCBnc3RyaW5nX2xvb2t1cF9jYWNoZSAoTGlzcF9P YmplY3QgaGVhZGVyKQogY29tcG9zaXRpb25fZ3N0cmluZ19wdXRfY2FjaGUgKExpc3BfT2JqZWN0 IGdzdHJpbmcsIHB0cmRpZmZfdCBsZW4pCiB7CiAgIHN0cnVjdCBMaXNwX0hhc2hfVGFibGUgKmgg PSBYSEFTSF9UQUJMRSAoZ3N0cmluZ19oYXNoX3RhYmxlKTsKLSAgaGFzaF9yZWhhc2hfaWZfbmVl ZGVkIChoKTsKICAgTGlzcF9PYmplY3QgaGVhZGVyID0gTEdTVFJJTkdfSEVBREVSIChnc3RyaW5n KTsKICAgRU1BQ1NfVUlOVCBoYXNoID0gaC0+dGVzdC5oYXNoZm4gKCZoLT50ZXN0LCBoZWFkZXIp OwogICBpZiAobGVuIDwgMCkKZGlmZiAtLWdpdCBhL3NyYy9lbWFjcy5jIGIvc3JjL2VtYWNzLmMK aW5kZXggYWQ2NjFhMDgxYi4uODU1YjJjNjcxNSAxMDA2NDQKLS0tIGEvc3JjL2VtYWNzLmMKKysr IGIvc3JjL2VtYWNzLmMKQEAgLTE1NjAsNiArMTU2MCw3IEBAIG1haW4gKGludCBhcmdjLCBjaGFy ICoqYXJndikKICAgaWYgKCFpbml0aWFsaXplZCkKICAgICB7CiAgICAgICBpbml0X2FsbG9jX29u Y2UgKCk7CisgICAgICBpbml0X3BkdW1wZXJfb25jZSAoKTsKICAgICAgIGluaXRfb2JhcnJheV9v bmNlICgpOwogICAgICAgaW5pdF9ldmFsX29uY2UgKCk7CiAgICAgICBpbml0X2NoYXJzZXRfb25j ZSAoKTsKZGlmZiAtLWdpdCBhL3NyYy9mbnMuYyBiL3NyYy9mbnMuYwppbmRleCAwNDk3NTg4Njg5 Li42Zjg2ZDdmMzE0IDEwMDY0NAotLS0gYS9zcmMvZm5zLmMKKysrIGIvc3JjL2Zucy5jCkBAIC00 MjMzLDUxICs0MjMzLDI3IEBAIG1heWJlX3Jlc2l6ZV9oYXNoX3RhYmxlIChzdHJ1Y3QgTGlzcF9I YXNoX1RhYmxlICpoKQogCiAvKiBSZWNvbXB1dGUgdGhlIGhhc2hlcyAoYW5kIGhlbmNlIGFsc28g dGhlICJuZXh0IiBwb2ludGVycykuCiAgICBOb3JtYWxseSB0aGVyZSdzIG5ldmVyIGEgbmVlZCB0 byByZWNvbXB1dGUgaGFzaGVzLgotICAgVGhpcyBpcyBkb25lIG9ubHkgb24gZmlyc3QtYWNjZXNz IHRvIGEgaGFzaC10YWJsZSBsb2FkZWQgZnJvbQotICAgdGhlICJwZHVtcCIsIGJlY2F1c2UgdGhl IG9iamVjdCdzIGFkZHJlc3NlcyBtYXkgaGF2ZSBjaGFuZ2VkLCB0aHVzCisgICBUaGlzIGlzIGRv bmUgb25seSBvbiBmaXJzdCBhY2Nlc3MgdG8gYSBoYXNoLXRhYmxlIGxvYWRlZCBmcm9tCisgICB0 aGUgInBkdW1wIiwgYmVjYXVzZSB0aGUgb2JqZWN0cycgYWRkcmVzc2VzIG1heSBoYXZlIGNoYW5n ZWQsIHRodXMKICAgIGFmZmVjdGluZyB0aGVpciBoYXNoLiAgKi8KIHZvaWQKIGhhc2hfdGFibGVf cmVoYXNoIChzdHJ1Y3QgTGlzcF9IYXNoX1RhYmxlICpoKQogewotICBwdHJkaWZmX3Qgc2l6ZSA9 IEhBU0hfVEFCTEVfU0laRSAoaCk7Ci0KLSAgLyogVGhlc2Ugc3RydWN0dXJlcyBtYXkgaGF2ZSBi ZWVuIHB1cmVjb3BpZWQgYW5kIHNoYXJlZAotICAgICAoYnVnIzM2NDQ3KS4gICovCi0gIGgtPm5l eHQgPSBGY29weV9zZXF1ZW5jZSAoaC0+bmV4dCk7Ci0gIGgtPmluZGV4ID0gRmNvcHlfc2VxdWVu Y2UgKGgtPmluZGV4KTsKLSAgaC0+aGFzaCA9IEZjb3B5X3NlcXVlbmNlIChoLT5oYXNoKTsKLQog ICAvKiBSZWNvbXB1dGUgdGhlIGFjdHVhbCBoYXNoIGNvZGVzIGZvciBlYWNoIGVudHJ5IGluIHRo ZSB0YWJsZS4KICAgICAgT3JkZXIgaXMgc3RpbGwgaW52YWxpZC4gICovCi0gIGZvciAocHRyZGlm Zl90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQotICAgIGlmICghTklMUCAoSEFTSF9IQVNIIChoLCBp KSkpCi0gICAgICB7Ci0gICAgICAgIExpc3BfT2JqZWN0IGtleSA9IEhBU0hfS0VZIChoLCBpKTsK LSAgICAgICAgRU1BQ1NfVUlOVCBoYXNoX2NvZGUgPSBoLT50ZXN0Lmhhc2hmbiAoJmgtPnRlc3Qs IGtleSk7Ci0gICAgICAgIHNldF9oYXNoX2hhc2hfc2xvdCAoaCwgaSwgbWFrZV9maXhudW0gKGhh c2hfY29kZSkpOwotICAgICAgfQotCi0gIC8qIFJlc2V0IHRoZSBpbmRleCBzbyB0aGF0IGFueSBz bG90IHdlIGRvbid0IGZpbGwgYmVsb3cgaXMgbWFya2VkCi0gICAgIGludmFsaWQuICAqLwotICBG ZmlsbGFycmF5IChoLT5pbmRleCwgbWFrZV9maXhudW0gKC0xKSk7Ci0KLSAgLyogUmVidWlsZCB0 aGUgY29sbGlzaW9uIGNoYWlucy4gICovCi0gIGZvciAocHRyZGlmZl90IGkgPSAwOyBpIDwgc2l6 ZTsgKytpKQotICAgIGlmICghTklMUCAoSEFTSF9IQVNIIChoLCBpKSkpCi0gICAgICB7Ci0gICAg ICAgIEVNQUNTX1VJTlQgaGFzaF9jb2RlID0gWFVGSVhOVU0gKEhBU0hfSEFTSCAoaCwgaSkpOwot ICAgICAgICBwdHJkaWZmX3Qgc3RhcnRfb2ZfYnVja2V0ID0gaGFzaF9jb2RlICUgQVNJWkUgKGgt PmluZGV4KTsKLSAgICAgICAgc2V0X2hhc2hfbmV4dF9zbG90IChoLCBpLCBIQVNIX0lOREVYICho LCBzdGFydF9vZl9idWNrZXQpKTsKLSAgICAgICAgc2V0X2hhc2hfaW5kZXhfc2xvdCAoaCwgc3Rh cnRfb2ZfYnVja2V0LCBpKTsKLSAgICAgICAgZWFzc2VydCAoSEFTSF9ORVhUIChoLCBpKSAhPSBp KTsgLyogU3RvcCBsb29wcy4gICovCi0gICAgICB9CisgIGZvciAocHRyZGlmZl90IGkgPSAwOyBp IDwgaC0+Y291bnQ7ICsraSkKKyAgICB7CisgICAgICBMaXNwX09iamVjdCBrZXkgPSBIQVNIX0tF WSAoaCwgaSk7CisgICAgICBFTUFDU19VSU5UIGhhc2hfY29kZSA9IGgtPnRlc3QuaGFzaGZuICgm aC0+dGVzdCwga2V5KTsKKyAgICAgIHB0cmRpZmZfdCBzdGFydF9vZl9idWNrZXQgPSBoYXNoX2Nv ZGUgJSBBU0laRSAoaC0+aW5kZXgpOworICAgICAgc2V0X2hhc2hfaGFzaF9zbG90IChoLCBpLCBt YWtlX2ZpeG51bSAoaGFzaF9jb2RlKSk7CisgICAgICBzZXRfaGFzaF9uZXh0X3Nsb3QgKGgsIGks IEhBU0hfSU5ERVggKGgsIHN0YXJ0X29mX2J1Y2tldCkpOworICAgICAgc2V0X2hhc2hfaW5kZXhf c2xvdCAoaCwgc3RhcnRfb2ZfYnVja2V0LCBpKTsKKyAgICAgIGVhc3NlcnQgKEhBU0hfTkVYVCAo aCwgaSkgIT0gaSk7IC8qIFN0b3AgbG9vcHMuICAqLworICAgIH0KIAotICAvKiBGaW5hbGx5LCBt YXJrIHRoZSBoYXNoIHRhYmxlIGFzIGhhdmluZyBhIHZhbGlkIGhhc2ggb3JkZXIuCi0gICAgIERv IHRoaXMgbGFzdCBzbyB0aGF0IGlmIHdlJ3JlIGludGVycnVwdGVkLCB3ZSByZXRyeSBvbiBuZXh0 Ci0gICAgIGFjY2Vzcy4gKi8KLSAgZWFzc2VydCAoaC0+Y291bnQgPCAwKTsKLSAgaC0+Y291bnQg PSAtaC0+Y291bnQ7Ci0gIGVhc3NlcnQgKCFoYXNoX3JlaGFzaF9uZWVkZWRfcCAoaCkpOworICBm b3IgKHB0cmRpZmZfdCBpID0gaC0+Y291bnQ7IGkgPCBBU0laRSAoaC0+bmV4dCkgLSAxOyBpKysp CisgICAgc2V0X2hhc2hfbmV4dF9zbG90IChoLCBpLCBpICsgMSk7CiB9CiAKIC8qIExvb2t1cCBL RVkgaW4gaGFzaCB0YWJsZSBILiAgSWYgSEFTSCBpcyBub24tbnVsbCwgcmV0dXJuIGluICpIQVNI CkBAIC00MjkwLDggKzQyNjYsNiBAQCBoYXNoX2xvb2t1cCAoc3RydWN0IExpc3BfSGFzaF9UYWJs ZSAqaCwgTGlzcF9PYmplY3Qga2V5LCBFTUFDU19VSU5UICpoYXNoKQogICBFTUFDU19VSU5UIGhh c2hfY29kZTsKICAgcHRyZGlmZl90IHN0YXJ0X29mX2J1Y2tldCwgaTsKIAotICBoYXNoX3JlaGFz aF9pZl9uZWVkZWQgKGgpOwotCiAgIGhhc2hfY29kZSA9IGgtPnRlc3QuaGFzaGZuICgmaC0+dGVz dCwga2V5KTsKICAgZWFzc2VydCAoKGhhc2hfY29kZSAmIH5JTlRNQVNLKSA9PSAwKTsKICAgaWYg KGhhc2gpCkBAIC00MzIwLDggKzQyOTQsNiBAQCBoYXNoX3B1dCAoc3RydWN0IExpc3BfSGFzaF9U YWJsZSAqaCwgTGlzcF9PYmplY3Qga2V5LCBMaXNwX09iamVjdCB2YWx1ZSwKIHsKICAgcHRyZGlm Zl90IHN0YXJ0X29mX2J1Y2tldCwgaTsKIAotICBoYXNoX3JlaGFzaF9pZl9uZWVkZWQgKGgpOwot CiAgIGVhc3NlcnQgKChoYXNoICYgfklOVE1BU0spID09IDApOwogCiAgIC8qIEluY3JlbWVudCBj b3VudCBhZnRlciByZXNpemluZyBiZWNhdXNlIHJlc2l6aW5nIG1heSBmYWlsLiAgKi8KQEAgLTQz NTUsOCArNDMyNyw2IEBAIGhhc2hfcmVtb3ZlX2Zyb21fdGFibGUgKHN0cnVjdCBMaXNwX0hhc2hf VGFibGUgKmgsIExpc3BfT2JqZWN0IGtleSkKICAgcHRyZGlmZl90IHN0YXJ0X29mX2J1Y2tldCA9 IGhhc2hfY29kZSAlIEFTSVpFIChoLT5pbmRleCk7CiAgIHB0cmRpZmZfdCBwcmV2ID0gLTE7CiAK LSAgaGFzaF9yZWhhc2hfaWZfbmVlZGVkIChoKTsKLQogICBmb3IgKHB0cmRpZmZfdCBpID0gSEFT SF9JTkRFWCAoaCwgc3RhcnRfb2ZfYnVja2V0KTsKICAgICAgICAwIDw9IGk7CiAgICAgICAgaSA9 IEhBU0hfTkVYVCAoaCwgaSkpCkBAIC00NDM0LDkgKzQ0MDQsNyBAQCBzd2VlcF93ZWFrX3RhYmxl IChzdHJ1Y3QgTGlzcF9IYXNoX1RhYmxlICpoLCBib29sIHJlbW92ZV9lbnRyaWVzX3ApCiAgIGZv ciAocHRyZGlmZl90IGJ1Y2tldCA9IDA7IGJ1Y2tldCA8IG47ICsrYnVja2V0KQogICAgIHsKICAg ICAgIC8qIEZvbGxvdyBjb2xsaXNpb24gY2hhaW4sIHJlbW92aW5nIGVudHJpZXMgdGhhdCBkb24n dCBzdXJ2aXZlCi0gICAgICAgICB0aGlzIGdhcmJhZ2UgY29sbGVjdGlvbi4gIEl0J3Mgb2theSBp ZiBoYXNoX3JlaGFzaF9uZWVkZWRfcAotICAgICAgICAgKGgpIGlzIHRydWUsIHNpbmNlIHdlJ3Jl IG9wZXJhdGluZyBlbnRpcmVseSBvbiB0aGUgY2FjaGVkCi0gICAgICAgICBoYXNoIHZhbHVlcy4g Ki8KKyAgICAgICAgIHRoaXMgZ2FyYmFnZSBjb2xsZWN0aW9uLiAgKi8KICAgICAgIHB0cmRpZmZf dCBwcmV2ID0gLTE7CiAgICAgICBwdHJkaWZmX3QgbmV4dDsKICAgICAgIGZvciAocHRyZGlmZl90 IGkgPSBIQVNIX0lOREVYIChoLCBidWNrZXQpOyAwIDw9IGk7IGkgPSBuZXh0KQpAQCAtNDQ3OCw3 ICs0NDQ2LDcgQEAgc3dlZXBfd2Vha190YWJsZSAoc3RydWN0IExpc3BfSGFzaF9UYWJsZSAqaCwg Ym9vbCByZW1vdmVfZW50cmllc19wKQogICAgICAgICAgICAgICAgICAgc2V0X2hhc2hfaGFzaF9z bG90IChoLCBpLCBRbmlsKTsKIAogICAgICAgICAgICAgICAgICAgZWFzc2VydCAoaC0+Y291bnQg IT0gMCk7Ci0gICAgICAgICAgICAgICAgICBoLT5jb3VudCArPSBoLT5jb3VudCA+IDAgPyAtMSA6 IDE7CisgICAgICAgICAgICAgICAgICBoLT5jb3VudC0tOwogICAgICAgICAgICAgICAgIH0KIAkg ICAgICBlbHNlCiAJCXsKQEAgLTQ4ODEsNyArNDg0OSw2IEBAIERFRlVOICgiaGFzaC10YWJsZS1j b3VudCIsIEZoYXNoX3RhYmxlX2NvdW50LCBTaGFzaF90YWJsZV9jb3VudCwgMSwgMSwgMCwKICAg KExpc3BfT2JqZWN0IHRhYmxlKQogewogICBzdHJ1Y3QgTGlzcF9IYXNoX1RhYmxlICpoID0gY2hl Y2tfaGFzaF90YWJsZSAodGFibGUpOwotICBoYXNoX3JlaGFzaF9pZl9uZWVkZWQgKGgpOwogICBy ZXR1cm4gbWFrZV9maXhudW0gKGgtPmNvdW50KTsKIH0KIApkaWZmIC0tZ2l0IGEvc3JjL2xpc3Au aCBiL3NyYy9saXNwLmgKaW5kZXggMTMwMTRjODJkYy4uZDBlNWM0M2M0MSAxMDA2NDQKLS0tIGEv c3JjL2xpc3AuaAorKysgYi9zcmMvbGlzcC5oCkBAIC0yMjQ1LDExICsyMjQ1LDcgQEAgI2RlZmlu ZSBERUZTWU0oc3ltLCBuYW1lKSAvKiBlbXB0eSAqLwogCiBzdHJ1Y3QgTGlzcF9IYXNoX1RhYmxl CiB7Ci0gIC8qIENoYW5nZSBwZHVtcGVyLmMgaWYgeW91IGNoYW5nZSB0aGUgZmllbGRzIGhlcmUu Ci0KLSAgICAgSU1QT1JUQU5UISEhISEhIQotCi0gICAgIENhbGwgaGFzaF9yZWhhc2hfaWZfbmVl ZGVkKCkgYmVmb3JlIGFjY2Vzc2luZy4gICovCisgIC8qIENoYW5nZSBwZHVtcGVyLmMgaWYgeW91 IGNoYW5nZSB0aGUgZmllbGRzIGhlcmUuICAqLwogCiAgIC8qIFRoaXMgaXMgZm9yIExpc3A7IHRo ZSBoYXNoIHRhYmxlIGNvZGUgZG9lcyBub3QgcmVmZXIgdG8gaXQuICAqLwogICB1bmlvbiB2ZWN0 b3JsaWtlX2hlYWRlciBoZWFkZXI7CkBAIC0yMzYzLDE5ICsyMzU5LDYgQEAgSEFTSF9UQUJMRV9T SVpFIChjb25zdCBzdHJ1Y3QgTGlzcF9IYXNoX1RhYmxlICpoKQogCiB2b2lkIGhhc2hfdGFibGVf cmVoYXNoIChzdHJ1Y3QgTGlzcF9IYXNoX1RhYmxlICpoKTsKIAotSU5MSU5FIGJvb2wKLWhhc2hf cmVoYXNoX25lZWRlZF9wIChjb25zdCBzdHJ1Y3QgTGlzcF9IYXNoX1RhYmxlICpoKQotewotICBy ZXR1cm4gaC0+Y291bnQgPCAwOwotfQotCi1JTkxJTkUgdm9pZAotaGFzaF9yZWhhc2hfaWZfbmVl ZGVkIChzdHJ1Y3QgTGlzcF9IYXNoX1RhYmxlICpoKQotewotICBpZiAoaGFzaF9yZWhhc2hfbmVl ZGVkX3AgKGgpKQotICAgIGhhc2hfdGFibGVfcmVoYXNoIChoKTsKLX0KLQogLyogRGVmYXVsdCBz aXplIGZvciBoYXNoIHRhYmxlcyBpZiBub3Qgc3BlY2lmaWVkLiAgKi8KIAogZW51bSBERUZBVUxU X0hBU0hfU0laRSB7IERFRkFVTFRfSEFTSF9TSVpFID0gNjUgfTsKZGlmZiAtLWdpdCBhL3NyYy9t aW5pYnVmLmMgYi9zcmMvbWluaWJ1Zi5jCmluZGV4IGQ5YTZlMTViMDUuLmU5MjNjZTJhNDMgMTAw NjQ0Ci0tLSBhL3NyYy9taW5pYnVmLmMKKysrIGIvc3JjL21pbmlidWYuYwpAQCAtMTIwMyw5ICsx MjAzLDYgQEAgREVGVU4gKCJ0cnktY29tcGxldGlvbiIsIEZ0cnlfY29tcGxldGlvbiwgU3RyeV9j b21wbGV0aW9uLCAyLCAzLCAwLAogICAgICAgYnVja2V0ID0gQVJFRiAoY29sbGVjdGlvbiwgaWR4 KTsKICAgICB9CiAKLSAgaWYgKEhBU0hfVEFCTEVfUCAoY29sbGVjdGlvbikpCi0gICAgaGFzaF9y ZWhhc2hfaWZfbmVlZGVkIChYSEFTSF9UQUJMRSAoY29sbGVjdGlvbikpOwotCiAgIHdoaWxlICgx KQogICAgIHsKICAgICAgIC8qIEdldCB0aGUgbmV4dCBlbGVtZW50IG9mIHRoZSBhbGlzdCwgb2Jh cnJheSwgb3IgaGFzaC10YWJsZS4gICovCmRpZmYgLS1naXQgYS9zcmMvcGR1bXBlci5jIGIvc3Jj L3BkdW1wZXIuYwppbmRleCAwM2MwMGJmMjdiLi42OTdmZjk3NjdhIDEwMDY0NAotLS0gYS9zcmMv cGR1bXBlci5jCisrKyBiL3NyYy9wZHVtcGVyLmMKQEAgLTEwNywxNyArMTA3LDYgQEAgI2RlZmlu ZSBWTV9NU19XSU5ET1dTIDIKIAogI2RlZmluZSBEQU5HRVJPVVMgMAogCi0vKiBQRFVNUEVSX0NI RUNLX1JFSEFTSElORyBiZWluZyB0cnVlIGNhdXNlcyB0aGUgcG9ydGFibGUgZHVtcGVyIHRvCi0g ICBjaGVjaywgZm9yIGVhY2ggaGFzaCB0YWJsZSBpdCBkdW1wcywgdGhhdCB0aGUgaGFzaCB0YWJs ZSBtZWFucyB0aGUKLSAgIHNhbWUgdGhpbmcgYWZ0ZXIgcmVoYXNoaW5nLiAgKi8KLSNpZm5kZWYg UERVTVBFUl9DSEVDS19SRUhBU0hJTkcKLSMgaWYgRU5BQkxFX0NIRUNLSU5HCi0jICBkZWZpbmUg UERVTVBFUl9DSEVDS19SRUhBU0hJTkcgMQotIyBlbHNlCi0jICBkZWZpbmUgUERVTVBFUl9DSEVD S19SRUhBU0hJTkcgMAotIyBlbmRpZgotI2VuZGlmCi0KIC8qIFdlIHJlcXVpcmUgYW4gYXJjaGl0 ZWN0dXJlIGluIHdoaWNoIGFsbCBwb2ludGVycyBhcmUgdGhlIHNhbWUgc2l6ZQogICAgYW5kIGhh dmUgdGhlIHNhbWUgbGF5b3V0LCB3aGVyZSBwb2ludGVycyBhcmUgZWl0aGVyIDMyIG9yIDY0IGJp dHMKICAgIGxvbmcsIGFuZCB3aGVyZSBieXRlcyBoYXZlIGVpZ2h0IGJpdHMgLS0tIHRoYXQgaXMs IGEKQEAgLTM5Myw2ICszODIsOCBAQCBkdW1wX2ZpbmdlcnByaW50IChjaGFyIGNvbnN0ICpsYWJl bCwKICAgICAgVGhlIHN0YXJ0IG9mIHRoZSBjb2xkIHJlZ2lvbiBpcyBhbHdheXMgYWxpZ25lZCBv biBhIHBhZ2UKICAgICAgYm91bmRhcnkuICAqLwogICBkdW1wX29mZiBjb2xkX3N0YXJ0OworCisg IGR1bXBfb2ZmIGhhc2hfbGlzdDsKIH07CiAKIC8qIERvdWJsZS1lbmRlZCBzaW5nbHkgbGlua2Vk IGxpc3QuICAqLwpAQCAtNTUwLDYgKzU0MSw4IEBAIGR1bXBfZmluZ2VycHJpbnQgKGNoYXIgY29u c3QgKmxhYmVsLAogICAgICBoZWFwIG9iamVjdHMuICAqLwogICBMaXNwX09iamVjdCBiaWdudW1f ZGF0YTsKIAorICBMaXNwX09iamVjdCBoYXNoX3RhYmxlczsKKwogICB1bnNpZ25lZCBudW1iZXJf aG90X3JlbG9jYXRpb25zOwogICB1bnNpZ25lZCBudW1iZXJfZGlzY2FyZGFibGVfcmVsb2NhdGlv bnM7CiB9OwpAQCAtMjYyMiw2OCArMjYxNSw1OCBAQCBkdW1wX3ZlY3Rvcmxpa2VfZ2VuZXJpYyAo c3RydWN0IGR1bXBfY29udGV4dCAqY3R4LAogICByZXR1cm4gb2Zmc2V0OwogfQogCi0vKiBEZXRl cm1pbmUgd2hldGhlciB0aGUgaGFzaCB0YWJsZSdzIGhhc2ggb3JkZXIgaXMgc3RhYmxlCi0gICBh Y3Jvc3MgZHVtcCBhbmQgbG9hZC4gIElmIGl0IGlzLCB3ZSBkb24ndCBoYXZlIHRvIHRyaWdnZXIK LSAgIGEgcmVoYXNoIG9uIGFjY2Vzcy4gICovCi1zdGF0aWMgYm9vbAotZHVtcF9oYXNoX3RhYmxl X3N0YWJsZV9wIChjb25zdCBzdHJ1Y3QgTGlzcF9IYXNoX1RhYmxlICpoYXNoKQorLyogUmV0dXJu IGEgdmVjdG9yIG9mIEtFWSwgVkFMVUUgcGFpcnMgaW4gdGhlIGdpdmVuIGhhc2ggdGFibGUgSC4g IFRoZQorICAgZmlyc3QgSC0+Y291bnQgcGFpcnMgYXJlIHZhbGlkLCB0aGUgcmVzdCBpcyBsZWZ0 IGFzIG5pbC4gICovCitzdGF0aWMgTGlzcF9PYmplY3QKK2hhc2hfdGFibGVfY29udGVudHMgKHN0 cnVjdCBMaXNwX0hhc2hfVGFibGUgKmgpCiB7Ci0gIGJvb2wgaXNfZXFsID0gaGFzaC0+dGVzdC5o YXNoZm4gPT0gaGFzaGZuX2VxbDsKLSAgYm9vbCBpc19lcXVhbCA9IGhhc2gtPnRlc3QuaGFzaGZu ID09IGhhc2hmbl9lcXVhbDsKLSAgcHRyZGlmZl90IHNpemUgPSBIQVNIX1RBQkxFX1NJWkUgKGhh c2gpOwotICBmb3IgKHB0cmRpZmZfdCBpID0gMDsgaSA8IHNpemU7ICsraSkKLSAgICBpZiAoIU5J TFAgKEhBU0hfSEFTSCAoaGFzaCwgaSkpKQorICBMaXNwX09iamVjdCBjb250ZW50cyA9IFFuaWw7 CisgIC8qIE1ha2Ugc3VyZSBrZXlfYW5kX3ZhbHVlIGVuZHMgdXAgaW4gdGhlIHNhbWUgb3JkZXIs IGNoYXJzZXQuYworICAgICByZWxpZXMgb24gaXQgYnkgZXhwZWN0aW5nIGhhc2ggdGFibGUgaW5k aWNlcyB0byBzdGF5IGNvbnN0YW50CisgICAgIGFjcm9zcyB0aGUgZHVtcC4gICovCisgIGZvciAo cHRyZGlmZl90IGkgPSAwOyBpIDwgSEFTSF9UQUJMRV9TSVpFIChoKSAtIGgtPmNvdW50OyBpKysp CisgICAgeworICAgICAgZHVtcF9wdXNoICgmY29udGVudHMsIFFuaWwpOworICAgICAgZHVtcF9w dXNoICgmY29udGVudHMsIFFuaWwpOworICAgIH0KKworICBmb3IgKHB0cmRpZmZfdCBpID0gSEFT SF9UQUJMRV9TSVpFIChoKSAtIDE7IGkgPj0gMDsgLS1pKQorICAgIGlmICghTklMUCAoSEFTSF9I QVNIIChoLCBpKSkpCiAgICAgICB7Ci0gICAgICAgIExpc3BfT2JqZWN0IGtleSA9ICBIQVNIX0tF WSAoaGFzaCwgaSk7Ci0JYm9vbCBrZXlfc3RhYmxlID0gKGR1bXBfYnVpbHRpbl9zeW1ib2xfcCAo a2V5KQotCQkJICAgfHwgRklYTlVNUCAoa2V5KQotCQkJICAgfHwgKGlzX2VxdWFsICYmIFNUUklO R1AgKGtleSkpCi0JCQkgICB8fCAoKGlzX2VxdWFsIHx8IGlzX2VxbCkgJiYgRkxPQVRQIChrZXkp KSk7Ci0gICAgICAgIGlmICgha2V5X3N0YWJsZSkKLSAgICAgICAgICByZXR1cm4gZmFsc2U7CisJ ZHVtcF9wdXNoICgmY29udGVudHMsIEhBU0hfVkFMVUUgKGgsIGkpKTsKKwlkdW1wX3B1c2ggKCZj b250ZW50cywgSEFTSF9LRVkgKGgsIGkpKTsKICAgICAgIH0KIAotICByZXR1cm4gdHJ1ZTsKKyAg cmV0dXJuIENBTExOIChGYXBwbHksIFF2ZWN0b3IsIGNvbnRlbnRzKTsKIH0KIAotLyogUmV0dXJu IGEgbGlzdCBvZiAoS0VZIC4gVkFMVUUpIHBhaXJzIGluIHRoZSBnaXZlbiBoYXNoIHRhYmxlLiAg Ki8KLXN0YXRpYyBMaXNwX09iamVjdAotaGFzaF90YWJsZV9jb250ZW50cyAoTGlzcF9PYmplY3Qg dGFibGUpCitzdGF0aWMgZHVtcF9vZmYKK2R1bXBfaGFzaF90YWJsZV9saXN0IChzdHJ1Y3QgZHVt cF9jb250ZXh0ICpjdHgpCiB7Ci0gIExpc3BfT2JqZWN0IGNvbnRlbnRzID0gUW5pbDsKLSAgc3Ry dWN0IExpc3BfSGFzaF9UYWJsZSAqaCA9IFhIQVNIX1RBQkxFICh0YWJsZSk7Ci0gIGZvciAocHRy ZGlmZl90IGkgPSAwOyBpIDwgSEFTSF9UQUJMRV9TSVpFIChoKTsgKytpKQotICAgIGlmICghTklM UCAoSEFTSF9IQVNIIChoLCBpKSkpCi0gICAgICBkdW1wX3B1c2ggKCZjb250ZW50cywgRmNvbnMg KEhBU0hfS0VZIChoLCBpKSwgSEFTSF9WQUxVRSAoaCwgaSkpKTsKLSAgcmV0dXJuIEZucmV2ZXJz ZSAoY29udGVudHMpOworICBpZiAoQ09OU1AgKGN0eC0+aGFzaF90YWJsZXMpKQorICAgIHJldHVy biBkdW1wX29iamVjdCAoY3R4LCBDQUxMTiAoRmFwcGx5LCBRdmVjdG9yLCBjdHgtPmhhc2hfdGFi bGVzKSk7CisgIGVsc2UKKyAgICByZXR1cm4gMDsKIH0KIAotLyogQ29weSB0aGUgZ2l2ZW4gaGFz aCB0YWJsZSwgcmVoYXNoIGl0LCBhbmQgbWFrZSBzdXJlIHRoYXQgd2UgY2FuCi0gICBsb29rIHVw IGFsbCB0aGUgdmFsdWVzIGluIHRoZSBvcmlnaW5hbC4gICovCiBzdGF0aWMgdm9pZAotY2hlY2tf aGFzaF90YWJsZV9yZWhhc2ggKExpc3BfT2JqZWN0IHRhYmxlX29yaWcpCi17Ci0gIGhhc2hfcmVo YXNoX2lmX25lZWRlZCAoWEhBU0hfVEFCTEUgKHRhYmxlX29yaWcpKTsKLSAgTGlzcF9PYmplY3Qg dGFibGVfcmVoYXNoZWQgPSBGY29weV9oYXNoX3RhYmxlICh0YWJsZV9vcmlnKTsKLSAgZWFzc2Vy dCAoWEhBU0hfVEFCTEUgKHRhYmxlX3JlaGFzaGVkKS0+Y291bnQgPj0gMCk7Ci0gIFhIQVNIX1RB QkxFICh0YWJsZV9yZWhhc2hlZCktPmNvdW50ICo9IC0xOwotICBlYXNzZXJ0IChYSEFTSF9UQUJM RSAodGFibGVfcmVoYXNoZWQpLT5jb3VudCA8PSAwKTsKLSAgaGFzaF9yZWhhc2hfaWZfbmVlZGVk IChYSEFTSF9UQUJMRSAodGFibGVfcmVoYXNoZWQpKTsKLSAgZWFzc2VydCAoWEhBU0hfVEFCTEUg KHRhYmxlX3JlaGFzaGVkKS0+Y291bnQgPj0gMCk7Ci0gIExpc3BfT2JqZWN0IGV4cGVjdGVkX2Nv bnRlbnRzID0gaGFzaF90YWJsZV9jb250ZW50cyAodGFibGVfb3JpZyk7Ci0gIHdoaWxlICghTklM UCAoZXhwZWN0ZWRfY29udGVudHMpKQotICAgIHsKLSAgICAgIExpc3BfT2JqZWN0IGtleV92YWx1 ZV9wYWlyID0gZHVtcF9wb3AgKCZleHBlY3RlZF9jb250ZW50cyk7Ci0gICAgICBMaXNwX09iamVj dCBrZXkgPSBYQ0FSIChrZXlfdmFsdWVfcGFpcik7Ci0gICAgICBMaXNwX09iamVjdCBleHBlY3Rl ZF92YWx1ZSA9IFhDRFIgKGtleV92YWx1ZV9wYWlyKTsKLSAgICAgIExpc3BfT2JqZWN0IGFyYml0 cmFyeSA9IFFkdW1wX2VtYWNzX3BvcnRhYmxlX19zb3J0X3ByZWRpY2F0ZV9jb3BpZWQ7Ci0gICAg ICBMaXNwX09iamVjdCBmb3VuZF92YWx1ZSA9IEZnZXRoYXNoIChrZXksIHRhYmxlX3JlaGFzaGVk LCBhcmJpdHJhcnkpOwotICAgICAgZWFzc2VydCAoRVEgKGV4cGVjdGVkX3ZhbHVlLCBmb3VuZF92 YWx1ZSkpOwotICAgICAgRnJlbWhhc2ggKGtleSwgdGFibGVfcmVoYXNoZWQpOwotICAgIH0KK2hh c2hfdGFibGVfZnJlZXplIChzdHJ1Y3QgTGlzcF9IYXNoX1RhYmxlICpoKQoreworICBwdHJkaWZm X3QgbmtleXMgPSBYRklYTkFUIChGbGVuZ3RoIChoLT5rZXlfYW5kX3ZhbHVlKSkgLyAyOworICBo LT5rZXlfYW5kX3ZhbHVlID0gaGFzaF90YWJsZV9jb250ZW50cyAoaCk7CisgIGgtPm5leHRfZnJl ZSA9IChua2V5cyA9PSBoLT5jb3VudCA/IC0xIDogaC0+Y291bnQpOworICBoLT5pbmRleCA9IEZs ZW5ndGggKGgtPmluZGV4KTsKKyAgaC0+bmV4dCA9IGgtPmhhc2ggPSBtYWtlX2ZpeG51bSAobmtl eXMpOworfQorCitzdGF0aWMgdm9pZAoraGFzaF90YWJsZV90aGF3IChzdHJ1Y3QgTGlzcF9IYXNo X1RhYmxlICpoKQoreworICBoLT5pbmRleCA9IEZtYWtlX3ZlY3RvciAoaC0+aW5kZXgsIG1ha2Vf Zml4bnVtICgtMSkpOworICBoLT5oYXNoID0gRm1ha2VfdmVjdG9yIChoLT5oYXNoLCBRbmlsKTsK KyAgaC0+bmV4dCA9IEZtYWtlX3ZlY3RvciAoaC0+bmV4dCwgbWFrZV9maXhudW0gKC0xKSk7CiAK LSAgZWFzc2VydCAoRVEgKEZoYXNoX3RhYmxlX2NvdW50ICh0YWJsZV9yZWhhc2hlZCksCi0gICAg ICAgICAgICAgICBtYWtlX2ZpeG51bSAoMCkpKTsKKyAgaGFzaF90YWJsZV9yZWhhc2ggKGgpOwog fQogCiBzdGF0aWMgZHVtcF9vZmYKQEAgLTI2OTUsNDUgKzI2NzgsMTEgQEAgZHVtcF9oYXNoX3Rh YmxlIChzdHJ1Y3QgZHVtcF9jb250ZXh0ICpjdHgsCiAjIGVycm9yICJMaXNwX0hhc2hfVGFibGUg Y2hhbmdlZC4gU2VlIENIRUNLX1NUUlVDVFMgY29tbWVudCBpbiBjb25maWcuaC4iCiAjZW5kaWYK ICAgY29uc3Qgc3RydWN0IExpc3BfSGFzaF9UYWJsZSAqaGFzaF9pbiA9IFhIQVNIX1RBQkxFIChv YmplY3QpOwotICBib29sIGlzX3N0YWJsZSA9IGR1bXBfaGFzaF90YWJsZV9zdGFibGVfcCAoaGFz aF9pbik7Ci0gIC8qIElmIHRoZSBoYXNoIHRhYmxlIGlzIGxpa2VseSB0byBiZSBtb2RpZmllZCBp biBtZW1vcnkgKGVpdGhlcgotICAgICBiZWNhdXNlIHdlIG5lZWQgdG8gcmVoYXNoLCBhbmQgdGh1 cyB0b2dnbGUgaGFzaC0+Y291bnQsIG9yCi0gICAgIGJlY2F1c2Ugd2UgbmVlZCB0byBhc3NlbWJs ZSBhIGxpc3Qgb2Ygd2VhayB0YWJsZXMpIHB1bnQgdGhlIGhhc2gKLSAgICAgdGFibGUgdG8gdGhl IGVuZCBvZiB0aGUgZHVtcCwgd2hlcmUgd2UgY2FuIGx1bXAgYWxsIHN1Y2ggaGFzaAotICAgICB0 YWJsZXMgdG9nZXRoZXIuICAqLwotICBpZiAoIShpc19zdGFibGUgfHwgIU5JTFAgKGhhc2hfaW4t PndlYWspKQotICAgICAgJiYgY3R4LT5mbGFncy5kZWZlcl9oYXNoX3RhYmxlcykKLSAgICB7Ci0g ICAgICBpZiAob2Zmc2V0ICE9IERVTVBfT0JKRUNUX09OX0hBU0hfVEFCTEVfUVVFVUUpCi0gICAg ICAgIHsKLQkgIGVhc3NlcnQgKG9mZnNldCA9PSBEVU1QX09CSkVDVF9PTl9OT1JNQUxfUVVFVUUK LQkJICAgfHwgb2Zmc2V0ID09IERVTVBfT0JKRUNUX05PVF9TRUVOKTsKLSAgICAgICAgICAvKiBX ZSBzdGlsbCB3YW50IHRvIGR1bXAgdGhlIGFjdHVhbCBrZXlzIGFuZCB2YWx1ZXMgbm93LiAgKi8K LSAgICAgICAgICBkdW1wX2VucXVldWVfb2JqZWN0IChjdHgsIGhhc2hfaW4tPmtleV9hbmRfdmFs dWUsIFdFSUdIVF9OT05FKTsKLSAgICAgICAgICAvKiBXZSdsbCBnZXQgdG8gdGhlIHJlc3QgbGF0 ZXIuICAqLwotICAgICAgICAgIG9mZnNldCA9IERVTVBfT0JKRUNUX09OX0hBU0hfVEFCTEVfUVVF VUU7Ci0gICAgICAgICAgZHVtcF9yZW1lbWJlcl9vYmplY3QgKGN0eCwgb2JqZWN0LCBvZmZzZXQp OwotICAgICAgICAgIGR1bXBfcHVzaCAoJmN0eC0+ZGVmZXJyZWRfaGFzaF90YWJsZXMsIG9iamVj dCk7Ci0gICAgICAgIH0KLSAgICAgIHJldHVybiBvZmZzZXQ7Ci0gICAgfQotCi0gIGlmIChQRFVN UEVSX0NIRUNLX1JFSEFTSElORykKLSAgICBjaGVja19oYXNoX3RhYmxlX3JlaGFzaCAobWFrZV9s aXNwX3B0ciAoKHZvaWQgKikgaGFzaF9pbiwgTGlzcF9WZWN0b3JsaWtlKSk7Ci0KICAgc3RydWN0 IExpc3BfSGFzaF9UYWJsZSBoYXNoX211bmdlZCA9ICpoYXNoX2luOwogICBzdHJ1Y3QgTGlzcF9I YXNoX1RhYmxlICpoYXNoID0gJmhhc2hfbXVuZ2VkOwogCi0gIC8qIFJlbWVtYmVyIHRvIHJlaGFz aCB0aGlzIGhhc2ggdGFibGUgb24gZmlyc3QgYWNjZXNzLiAgQWZ0ZXIgYQotICAgICBkdW1wIHJl bG9hZCwgdGhlIGhhc2ggdGFibGUgdmFsdWVzIHdpbGwgaGF2ZSBjaGFuZ2VkLCBzbyB3ZSdsbAot ICAgICBuZWVkIHRvIHJlYnVpbGQgdGhlIGluZGV4LgotCi0gICAgIFRPRE86IGZvciBFUSBhbmQg RVFMIGhhc2ggdGFibGVzLCBpdCBzaG91bGQgYmUgcG9zc2libGUgdG8gcmVoYXNoCi0gICAgIGhl cmUgdXNpbmcgdGhlIHByZWZlcnJlZCBsb2FkIGFkZHJlc3Mgb2YgdGhlIGR1bXAsIGVsaW1pbmF0 aW5nCi0gICAgIHRoZSBuZWVkIHRvIHJlaGFzaC1vbi1hY2Nlc3MgaWYgd2UgY2FuIGxvYWQgdGhl IGR1bXAgd2hlcmUgd2UKLSAgICAgd2FudC4gICovCi0gIGlmIChoYXNoLT5jb3VudCA+IDAgJiYg IWlzX3N0YWJsZSkKLSAgICBoYXNoLT5jb3VudCA9IC1oYXNoLT5jb3VudDsKKyAgaGFzaF90YWJs ZV9mcmVlemUgKGhhc2gpOworICBkdW1wX3B1c2ggKCZjdHgtPmhhc2hfdGFibGVzLCBvYmplY3Qp OwogCiAgIFNUQVJUX0RVTVBfUFZFQyAoY3R4LCAmaGFzaC0+aGVhZGVyLCBzdHJ1Y3QgTGlzcF9I YXNoX1RhYmxlLCBvdXQpOwogICBkdW1wX3BzZXVkb3ZlY3Rvcl9saXNwX2ZpZWxkcyAoY3R4LCAm b3V0LT5oZWFkZXIsICZoYXNoLT5oZWFkZXIpOwpAQCAtNDE0MCw2ICs0MDg5LDE5IEBAIERFRlVO ICgiZHVtcC1lbWFjcy1wb3J0YWJsZSIsCiAJIHx8ICFOSUxQIChjdHgtPmRlZmVycmVkX2hhc2hf dGFibGVzKQogCSB8fCAhTklMUCAoY3R4LT5kZWZlcnJlZF9zeW1ib2xzKSk7CiAKKyAgY3R4LT5o ZWFkZXIuaGFzaF9saXN0ID0gY3R4LT5vZmZzZXQ7CisgIGR1bXBfaGFzaF90YWJsZV9saXN0IChj dHgpOworCisgIGRvCisgICAgeworICAgICAgZHVtcF9kcmFpbl9kZWZlcnJlZF9oYXNoX3RhYmxl cyAoY3R4KTsKKyAgICAgIGR1bXBfZHJhaW5fZGVmZXJyZWRfc3ltYm9scyAoY3R4KTsKKyAgICAg IGR1bXBfZHJhaW5fbm9ybWFsX3F1ZXVlIChjdHgpOworICAgIH0KKyAgd2hpbGUgKCFkdW1wX3F1 ZXVlX2VtcHR5X3AgKCZjdHgtPmR1bXBfcXVldWUpCisJIHx8ICFOSUxQIChjdHgtPmRlZmVycmVk X2hhc2hfdGFibGVzKQorCSB8fCAhTklMUCAoY3R4LT5kZWZlcnJlZF9zeW1ib2xzKSk7CisKICAg ZHVtcF9zb3J0X2NvcGllZF9vYmplY3RzIChjdHgpOwogCiAgIC8qIFdoaWxlIHdlIGNvcHkgYnVp bHQtaW4gc3ltYm9scyBpbnRvIHRoZSBFbWFjcyBpbWFnZSwgdGhlc2UKQEAgLTUyOTAsNiArNTI1 Miw5IEBAIGR1bXBfZG9fYWxsX2VtYWNzX3JlbG9jYXRpb25zIChjb25zdCBzdHJ1Y3QgZHVtcF9o ZWFkZXIgKmNvbnN0IGhlYWRlciwKICAgIE5VTUJFUl9EVU1QX1NFQ1RJT05TLAogICB9OwogCisv KiBQb2ludGVyIHRvIGEgc3RhY2sgdmFyaWFibGUgdG8gYXZvaWQgaGF2aW5nIHRvIHN0YXRpY3By byBpdC4gICovCitzdGF0aWMgTGlzcF9PYmplY3QgKnBkdW1wZXJfaGFzaGVzID0gJnplcm9fdmVj dG9yOworCiAvKiBMb2FkIGEgZHVtcCBmcm9tIERVTVBfRklMRU5BTUUuICBSZXR1cm4gYW4gZXJy b3IgY29kZS4KIAogICAgTi5CLiBXZSBydW4gdmVyeSBlYXJseSBpbiBpbml0aWFsaXphdGlvbiwg c28gd2UgY2FuJ3QgdXNlIGxpc3AsCkBAIC01NDMxLDYgKzUzOTYsMTUgQEAgcGR1bXBlcl9sb2Fk IChjb25zdCBjaGFyICpkdW1wX2ZpbGVuYW1lKQogICBmb3IgKGludCBpID0gMDsgaSA8IEFSUkFZ RUxUUyAoc2VjdGlvbnMpOyArK2kpCiAgICAgZHVtcF9tbWFwX3Jlc2V0ICgmc2VjdGlvbnNbaV0p OwogCisgIExpc3BfT2JqZWN0IGhhc2hlcyA9IHplcm9fdmVjdG9yOworICBpZiAoaGVhZGVyLT5o YXNoX2xpc3QpCisgICAgeworICAgICAgc3RydWN0IExpc3BfVmVjdG9yICpoYXNoX3RhYmxlcyA9 CisJKChzdHJ1Y3QgTGlzcF9WZWN0b3IgKikoZHVtcF9iYXNlICsgaGVhZGVyLT5oYXNoX2xpc3Qp KTsKKyAgICAgIFhTRVRWRUNUT1IgKGhhc2hlcywgaGFzaF90YWJsZXMpOworICAgIH0KKworICBw ZHVtcGVyX2hhc2hlcyA9ICZoYXNoZXM7CiAgIC8qIFJ1biB0aGUgZnVuY3Rpb25zIEVtYWNzIHJl Z2lzdGVyZWQgZm9yIGRvaW5nIHBvc3QtZHVtcC1sb2FkCiAgICAgIGluaXRpYWxpemF0aW9uLiAg Ki8KICAgZm9yIChpbnQgaSA9IDA7IGkgPCBucl9kdW1wX2hvb2tzOyArK2kpCkBAIC01NTAxLDYg KzU0NzUsMTkgQEAgREVGVU4gKCJwZHVtcGVyLXN0YXRzIiwgRnBkdW1wZXJfc3RhdHMsIFNwZHVt cGVyX3N0YXRzLCAwLCAwLCAwLAogI2VuZGlmIC8qIEhBVkVfUERVTVBFUiAqLwogCiAMCitzdGF0 aWMgdm9pZAordGhhd19oYXNoX3RhYmxlcyAodm9pZCkKK3sKKyAgTGlzcF9PYmplY3QgaGFzaF90 YWJsZXMgPSAqcGR1bXBlcl9oYXNoZXM7CisgIGZvciAocHRyZGlmZl90IGkgPSAwOyBpIDwgQVNJ WkUgKGhhc2hfdGFibGVzKTsgaSsrKQorICAgIGhhc2hfdGFibGVfdGhhdyAoWEhBU0hfVEFCTEUg KEFSRUYgKGhhc2hfdGFibGVzLCBpKSkpOworfQorCit2b2lkCitpbml0X3BkdW1wZXJfb25jZSAo dm9pZCkKK3sKKyAgcGR1bXBlcl9kb19ub3dfYW5kX2FmdGVyX2xvYWQgKHRoYXdfaGFzaF90YWJs ZXMpOworfQogCiB2b2lkCiBzeW1zX29mX3BkdW1wZXIgKHZvaWQpCmRpZmYgLS1naXQgYS9zcmMv cGR1bXBlci5oIGIvc3JjL3BkdW1wZXIuaAppbmRleCBhYjJmNDI2YzFlLi5jZmVhMDZkMzNkIDEw MDY0NAotLS0gYS9zcmMvcGR1bXBlci5oCisrKyBiL3NyYy9wZHVtcGVyLmgKQEAgLTI0OCw2ICsy NDgsNyBAQCBwZHVtcGVyX2NsZWFyX21hcmtzICh2b2lkKQogICAgZmlsZSB3YXMgbG9hZGVkLiAg Ki8KIGV4dGVybiB2b2lkIHBkdW1wZXJfcmVjb3JkX3dkIChjb25zdCBjaGFyICopOwogCit2b2lk IGluaXRfcGR1bXBlcl9vbmNlICh2b2lkKTsKIHZvaWQgc3ltc19vZl9wZHVtcGVyICh2b2lkKTsK IAogSU5MSU5FX0hFQURFUl9FTkQKLS0gCjIuMjIuMAoK --0000000000006235d9058e1c2058--