From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 3089 invoked by alias); 19 Jun 2012 19:41:21 -0000 Received: (qmail 2664 invoked by uid 22791); 19 Jun 2012 19:41:13 -0000 X-SWARE-Spam-Status: No, hits=-4.7 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,KAM_STOCKGEN,KHOP_RCVD_TRUST,KHOP_THREADED,RCVD_IN_DNSWL_LOW,RCVD_IN_HOSTKARMA_YE,TW_BJ,TW_QU,T_RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from mail-vc0-f169.google.com (HELO mail-vc0-f169.google.com) (209.85.220.169) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Tue, 19 Jun 2012 19:40:54 +0000 Received: by vcbfl10 with SMTP id fl10so4364449vcb.0 for ; Tue, 19 Jun 2012 12:40:53 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:x-system-of-record:x-gm-message-state; bh=o3oswDmzMDRklg/bm6WR18P1ysLYa5bZH0OZzkPAeyo=; b=LlLGylwZNF1CqQOveDGc8INHwJ5MnZ2+CuDkyrNS7lcNZlg6mTrDCPsyuEdGIDiXVx uoDkJeav3lJ+dD4Ck5Fdv3yqIgiHrUJfP/RbwgkkvVv8ZvXjStzCP1DdZE+9qCYfJTwt /lfnkFfDjziTyM7liuEdhbG4+QmRHm+yu1M06BC9C/oPVvkbj3ADvym2oDCUBaliufv3 YWO2E7UXHdvD3tDon3LF/UGagWh/FhhlJ/UexfRH3Jg56cLS2yeAzJ1teNlv47wNhUTa 1LyWXhk9tkfXl1IrLfA6EEP6/id/aooAmr0FmnpIdQP4L6hAvcRAq/fRk0noDTYJ6aq9 m0uw== Received: by 10.52.99.138 with SMTP id eq10mr8378562vdb.25.1340134853082; Tue, 19 Jun 2012 12:40:53 -0700 (PDT) MIME-Version: 1.0 Received: by 10.52.99.138 with SMTP id eq10mr8378547vdb.25.1340134852517; Tue, 19 Jun 2012 12:40:52 -0700 (PDT) Received: by 10.52.92.242 with HTTP; Tue, 19 Jun 2012 12:40:52 -0700 (PDT) In-Reply-To: <831ulbe14b.fsf@gnu.org> References: <20120619074931.6F0B41E136F@ruffy2.mtv.corp.google.com> <831ulbe14b.fsf@gnu.org> Date: Tue, 19 Jun 2012 19:41:00 -0000 Message-ID: Subject: Re: [RFA] Add global/static and symbol kind indicator to .gdb_index From: Doug Evans To: Eli Zaretskii Cc: tromey@redhat.com, gdb-patches@sourceware.org, ccoutant@google.com Content-Type: multipart/mixed; boundary=20cf3071cc4ad5e10704c2d87532 X-System-Of-Record: true X-Gm-Message-State: ALoCoQksaZenerTcZY67n/LQ/5qsRXSXdBZsWhj7Mwn9xcp6rjnmCSJgkJwICgwX0t4DItepOZ1oSu5lmgQwKGf1lTd3hA2Qqfv+BDjNXW+ZdZLPskblwFRtKEK5juTqVIt+tHC2r3hdrSFNXFP3zTbtolIFnNlvNw== X-IsSubscribed: yes Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2012-06/txt/msg00621.txt.bz2 --20cf3071cc4ad5e10704c2d87532 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-length: 2402 On Tue, Jun 19, 2012 at 9:07 AM, Eli Zaretskii wrote: >> cc: ccoutant@google.com >> Date: Tue, 19 Jun 2012 00:49:31 -0700 (PDT) >> From: dje@google.com (Doug Evans) >> >> This patch adds a global/static bit and a symbol kind indicator >> to CU values in .gdb_index. > > Thanks. =A0I have a few comments about the documentation part: > >> +If a symbol has multiple uses within a CU then there is one >> +CU index+attributes value for each different use. > > I would lose the "different" part, it's redundant here. > >> +@item 0 >> +This value is reserved and not to be used. > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0^^^^^^^^^^^^^^^^^^ > "and should not be used" > >> +@item 2 >> +The symbol is a variable. >> +Enum values are also included. > > Not sure what the last sentence means. =A0Value is not a symbol. =A0Do you > mean "the symbol is a name of a variable or of an enum"? > > And, if my reading of the code is correct, we should mention constants > here. > >> +@item 4 >> +The symbol is not covered by the other kinds. > > I think this is better: > > =A0Any other kind of symbol. > >> +@item Bit 31 >> +This bit is zero if the value is ``global'' and one if it is ``static''. > > Do we really need the quotes here? This patch addresses the doc issues, and fixes a thinko where I didn't check for older indices when testing the symbol kind. 2012-06-19 Doug Evans PR 14125 * dwarf2read.c: #include "gdb/gdb-index.h". (DW2_GDB_INDEX_SYMBOL_STATIC_SET_VALUE): New macro. (DW2_GDB_INDEX_SYMBOL_KIND_SET_VALUE): New macro. (DW2_GDB_INDEX_CU_SET_VALUE): New macro. (dwarf2_read_index): Recognize version 7. (dw2_do_expand_symtabs_matching): New args want_specific_block, block_kind, domain): All callers updated. (dw2_find_symbol_file): Handle new index CU values. (dw2_expand_symtabs_matching): Match symbol kind if requested. (add_index_entry): New args is_static, kind. All callers updated. (offset_type_compare, uniquify_cu_indices): New functions (symbol_kind): New function. (write_psymtabs_to_index): Remove duplicate CU values. (write_psymtabs_to_index): Write .gdb_index version 7. doc/ * gdb.texinfo (Index Section Format): Document version 7 format. include/ * gdb/gdb-index.h: New file. --20cf3071cc4ad5e10704c2d87532 Content-Type: text/plain; charset=US-ASCII; name="gdb-120619-gdb-index-attrs-2.patch.txt" Content-Disposition: attachment; filename="gdb-120619-gdb-index-attrs-2.patch.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_h3ndoe700 Content-length: 23599 MjAxMi0wNi0xOSAgRG91ZyBFdmFucyAgPGRqZUBnb29nbGUuY29tPgoKCVBS IDE0MTI1CgkqIGR3YXJmMnJlYWQuYzogI2luY2x1ZGUgImdkYi9nZGItaW5k ZXguaCIuCgkoRFcyX0dEQl9JTkRFWF9TWU1CT0xfU1RBVElDX1NFVF9WQUxV RSk6IE5ldyBtYWNyby4KCShEVzJfR0RCX0lOREVYX1NZTUJPTF9LSU5EX1NF VF9WQUxVRSk6IE5ldyBtYWNyby4KCShEVzJfR0RCX0lOREVYX0NVX1NFVF9W QUxVRSk6IE5ldyBtYWNyby4KCShkd2FyZjJfcmVhZF9pbmRleCk6IFJlY29n bml6ZSB2ZXJzaW9uIDcuCgkoZHcyX2RvX2V4cGFuZF9zeW10YWJzX21hdGNo aW5nKTogTmV3IGFyZ3Mgd2FudF9zcGVjaWZpY19ibG9jaywKCWJsb2NrX2tp bmQsIGRvbWFpbik6IEFsbCBjYWxsZXJzIHVwZGF0ZWQuCgkoZHcyX2ZpbmRf c3ltYm9sX2ZpbGUpOiBIYW5kbGUgbmV3IGluZGV4IENVIHZhbHVlcy4KCShk dzJfZXhwYW5kX3N5bXRhYnNfbWF0Y2hpbmcpOiBNYXRjaCBzeW1ib2wga2lu ZCBpZiByZXF1ZXN0ZWQuCgkoYWRkX2luZGV4X2VudHJ5KTogTmV3IGFyZ3Mg aXNfc3RhdGljLCBraW5kLiAgQWxsIGNhbGxlcnMgdXBkYXRlZC4KCShvZmZz ZXRfdHlwZV9jb21wYXJlLCB1bmlxdWlmeV9jdV9pbmRpY2VzKTogTmV3IGZ1 bmN0aW9ucwoJKHN5bWJvbF9raW5kKTogTmV3IGZ1bmN0aW9uLgoJKHdyaXRl X3BzeW10YWJzX3RvX2luZGV4KTogUmVtb3ZlIGR1cGxpY2F0ZSBDVSB2YWx1 ZXMuCgkod3JpdGVfcHN5bXRhYnNfdG9faW5kZXgpOiBXcml0ZSAuZ2RiX2lu ZGV4IHZlcnNpb24gNy4KCglkb2MvCgkqIGdkYi50ZXhpbmZvIChJbmRleCBT ZWN0aW9uIEZvcm1hdCk6IERvY3VtZW50IHZlcnNpb24gNyBmb3JtYXQuCgoJ aW5jbHVkZS8KCSogZ2RiL2dkYi1pbmRleC5oOiBOZXcgZmlsZS4KCmRpZmYg LS1naXQgYS9nZGIvZG9jL2dkYi50ZXhpbmZvIGIvZ2RiL2RvYy9nZGIudGV4 aW5mbwppbmRleCBhMTRlMzIyLi42MDkxYjQzIDEwMDY0NAotLS0gYS9nZGIv ZG9jL2dkYi50ZXhpbmZvCisrKyBiL2dkYi9kb2MvZ2RiLnRleGluZm8KQEAg LTQwMzU1LDcgKzQwMzU1LDcgQEAgaW5kZXggdmVyc2lvbjoKIEBpdGVtIFZl cnNpb24gNAogVGhlIGZvcm11bGEgaXMgQGNvZGV7ciA9IHIgKiA2NyArIGMg LSAxMTN9LgogCi1AaXRlbSBWZXJzaW9ucyA1IGFuZCA2CitAaXRlbSBWZXJz aW9ucyA1IHRvIDcKIFRoZSBmb3JtdWxhIGlzIEBjb2Rle3IgPSByICogNjcg KyB0b2xvd2VyIChjKSAtIDExM30uCiBAZW5kIHRhYmxlCiAKQEAgLTQwMzc5 LDEzICs0MDM3OSwxMDMgQEAgc3RyaW5ncy4KIAogQSBDVSB2ZWN0b3IgaW4g dGhlIGNvbnN0YW50IHBvb2wgaXMgYSBzZXF1ZW5jZSBvZiBAY29kZXtvZmZz ZXRfdHlwZX0KIHZhbHVlcy4gIFRoZSBmaXJzdCB2YWx1ZSBpcyB0aGUgbnVt YmVyIG9mIENVIGluZGljZXMgaW4gdGhlIHZlY3Rvci4KLUVhY2ggc3Vic2Vx dWVudCB2YWx1ZSBpcyB0aGUgaW5kZXggb2YgYSBDVSBpbiB0aGUgQ1UgbGlz dC4gIFRoaXMKLWVsZW1lbnQgaW4gdGhlIGhhc2ggdGFibGUgaXMgdXNlZCB0 byBpbmRpY2F0ZSB3aGljaCBDVXMgZGVmaW5lIHRoZQotc3ltYm9sLgorRWFj aCBzdWJzZXF1ZW50IHZhbHVlIGlzIHRoZSBpbmRleCBhbmQgc3ltYm9sIGF0 dHJpYnV0ZXMgb2YgYSBDVSBpbgordGhlIENVIGxpc3QuICBUaGlzIGVsZW1l bnQgaW4gdGhlIGhhc2ggdGFibGUgaXMgdXNlZCB0byBpbmRpY2F0ZSB3aGlj aAorQ1VzIGRlZmluZSB0aGUgc3ltYm9sIGFuZCBob3cgdGhlIHN5bWJvbCBp cyB1c2VkLgorU2VlIGJlbG93IGZvciB0aGUgZm9ybWF0IG9mIGVhY2ggQ1Ug aW5kZXgrYXR0cmlidXRlcyBlbnRyeS4KIAogQSBzdHJpbmcgaW4gdGhlIGNv bnN0YW50IHBvb2wgaXMgemVyby10ZXJtaW5hdGVkLgogQGVuZCBlbnVtZXJh dGUKIAorQXR0cmlidXRlcyB3ZXJlIGFkZGVkIHRvIENVIGluZGV4IHZhbHVl cyBpbiBAY29kZXsuZ2RiX2luZGV4fSB2ZXJzaW9uIDcuCitJZiBhIHN5bWJv bCBoYXMgbXVsdGlwbGUgdXNlcyB3aXRoaW4gYSBDVSB0aGVuIHRoZXJlIGlz IG9uZQorQ1UgaW5kZXgrYXR0cmlidXRlcyB2YWx1ZSBmb3IgZWFjaCB1c2Uu CisKK1RoZSBmb3JtYXQgb2YgZWFjaCBDVSBpbmRleCthdHRyaWJ1dGVzIGVu dHJ5IGlzIGFzIGZvbGxvd3MKKyhiaXQgMCA9IExTQik6CisKK0B0YWJsZSBA YXNpcworCitAaXRlbSBCaXRzIDAtMjMKK1RoaXMgaXMgdGhlIGluZGV4IG9m IHRoZSBDVSBpbiB0aGUgQ1UgbGlzdC4KK0BpdGVtIEJpdHMgMjQtMjcKK1Ro ZXNlIGJpdHMgYXJlIHJlc2VydmVkIGZvciBmdXR1cmUgcHVycG9zZXMgYW5k IG11c3QgYmUgemVyby4KK0BpdGVtIEJpdHMgMjgtMzAKK1RoZSBraW5kIG9m IHRoZSBzeW1ib2wgaW4gdGhlIENVLgorCitAdGFibGUgQGFzaXMKK0BpdGVt IDAKK1RoaXMgdmFsdWUgaXMgcmVzZXJ2ZWQgYW5kIHNob3VsZCBub3QgYmUg dXNlZC4KK0J5IHJlc2VydmluZyB6ZXJvIHRoZSBmdWxsIEBjb2Rle29mZnNl dF90eXBlfSB2YWx1ZSBpcyBiYWNrd2FyZHMgY29tcGF0aWJsZQord2l0aCBw cmV2aW91cyB2ZXJzaW9ucyBvZiB0aGUgaW5kZXguCitAaXRlbSAxCitUaGUg c3ltYm9sIGlzIGEgdHlwZS4KK0BpdGVtIDIKK1RoZSBzeW1ib2wgaXMgYSB2 YXJpYWJsZSBvciBhbiBlbnVtIHZhbHVlLgorQGl0ZW0gMworVGhlIHN5bWJv bCBpcyBhIGZ1bmN0aW9uLgorQGl0ZW0gNAorQW55IG90aGVyIGtpbmQgb2Yg c3ltYm9sLgorQGl0ZW0gNSw2LDcKK1RoZXNlIHZhbHVlcyBhcmUgcmVzZXJ2 ZWQuCitAZW5kIHRhYmxlCisKK0BpdGVtIEJpdCAzMQorVGhpcyBiaXQgaXMg emVybyBpZiB0aGUgdmFsdWUgaXMgZ2xvYmFsIGFuZCBvbmUgaWYgaXQgaXMg c3RhdGljLgorCitUaGUgZGV0ZXJtaW5hdGlvbiBvZiB3aGV0aGVyIGEgc3lt Ym9sIGlzIGdsb2JhbCBvciBzdGF0aWMgaXMgY29tcGxpY2F0ZWQuCitUaGUg YXV0aG9yYXRpdmUgcmVmZXJlbmNlIGlzIHRoZSBmaWxlIEBmaWxle2R3YXJm MnJlYWQuY30gaW4KK0B2YWx1ZXtHREJOfSBzb3VyY2VzLgorCitAZW5kIHRh YmxlCisKK1RoaXMgcHNldWRvLWNvZGUgZGVzY3JpYmVzIHRoZSBjb21wdXRh dGlvbiBvZiBhIHN5bWJvbCdzIGtpbmQgYW5kCitnbG9iYWwvc3RhdGljIGF0 dHJpYnV0ZXMgaW4gdGhlIGluZGV4LgorCitAc21hbGxleGFtcGxlCitpc19l eHRlcm5hbCA9IGdldF9hdHRyaWJ1dGUgKGRpZSwgRFdfQVRfZXh0ZXJuYWwp OworbGFuZ3VhZ2UgPSBnZXRfYXR0cmlidXRlIChjdV9kaWUsIERXX0FUX2xh bmd1YWdlKTsKK3N3aXRjaCAoZGllLT50YWcpCisgIEB7CisgIGNhc2UgRFdf VEFHX3R5cGVkZWY6CisgIGNhc2UgRFdfVEFHX2Jhc2VfdHlwZToKKyAgY2Fz ZSBEV19UQUdfc3VicmFuZ2VfdHlwZToKKyAgICBraW5kID0gVFlQRTsKKyAg ICBpc19zdGF0aWMgPSAxOworICAgIGJyZWFrOworICBjYXNlIERXX1RBR19l bnVtZXJhdG9yOgorICAgIGtpbmQgPSBWQVJJQUJMRTsKKyAgICBpc19zdGF0 aWMgPSAobGFuZ3VhZ2UgIT0gQ1BMVVMgJiYgbGFuZ3VhZ2UgIT0gSkFWQSk7 CisgICAgYnJlYWs7CisgIGNhc2UgRFdfVEFHX3N1YnByb2dyYW06CisgICAg a2luZCA9IEZVTkNUSU9OOworICAgIGlzX3N0YXRpYyA9ICEgKGlzX2V4dGVy bmFsIHx8IGxhbmd1YWdlID09IEFEQSk7CisgICAgYnJlYWs7CisgIGNhc2Ug RFdfVEFHX2NvbnN0YW50OgorICAgIGtpbmQgPSBWQVJJQUJMRTsKKyAgICBp c19zdGF0aWMgPSAhIGlzX2V4dGVybmFsOworICAgIGJyZWFrOworICBjYXNl IERXX1RBR192YXJpYWJsZToKKyAgICBraW5kID0gVkFSSUFCTEU7CisgICAg aXNfc3RhdGljID0gISBpc19leHRlcm5hbDsKKyAgICBicmVhazsKKyAgY2Fz ZSBEV19UQUdfbmFtZXNwYWNlOgorICAgIGtpbmQgPSBUWVBFOworICAgIGlz X3N0YXRpYyA9IDA7CisgICAgYnJlYWs7CisgIGNhc2UgRFdfVEFHX2NsYXNz X3R5cGU6CisgIGNhc2UgRFdfVEFHX2ludGVyZmFjZV90eXBlOgorICBjYXNl IERXX1RBR19zdHJ1Y3R1cmVfdHlwZToKKyAgY2FzZSBEV19UQUdfdW5pb25f dHlwZToKKyAgY2FzZSBEV19UQUdfZW51bWVyYXRpb25fdHlwZToKKyAgICBr aW5kID0gVFlQRTsKKyAgICBpc19zdGF0aWMgPSAobGFuZ3VhZ2UgIT0gQ1BM VVMgJiYgbGFuZ3VhZ2UgIT0gSkFWQSk7CisgICAgYnJlYWs7CisgIGRlZmF1 bHQ6CisgICAgYXNzZXJ0ICgwKTsKKyAgQH0KK0BlbmQgc21hbGxleGFtcGxl CisKIEBpbmNsdWRlIGdwbC50ZXhpCiAKIEBub2RlIEdOVSBGcmVlIERvY3Vt ZW50YXRpb24gTGljZW5zZQpkaWZmIC0tZ2l0IGEvZ2RiL2R3YXJmMnJlYWQu YyBiL2dkYi9kd2FyZjJyZWFkLmMKaW5kZXggMDk3ZWU3Zi4uYWE0MmI0YyAx MDA2NDQKLS0tIGEvZ2RiL2R3YXJmMnJlYWQuYworKysgYi9nZGIvZHdhcmYy cmVhZC5jCkBAIC02Miw2ICs2Miw3IEBACiAjaW5jbHVkZSAiZ28tbGFuZy5o IgogI2luY2x1ZGUgInZhbHByaW50LmgiCiAjaW5jbHVkZSAiZ2RiY29yZS5o IiAvKiBmb3IgZ251dGFyZ2V0ICovCisjaW5jbHVkZSAiZ2RiL2dkYi1pbmRl eC5oIgogI2luY2x1ZGUgPGN0eXBlLmg+CiAKICNpbmNsdWRlIDxmY250bC5o PgpAQCAtMTIyLDYgKzEyMywyOCBAQCB0eXBlZGVmIHVpbnQzMl90IG9mZnNl dF90eXBlOwogCiBERUZfVkVDX0kgKG9mZnNldF90eXBlKTsKIAorLyogRW5z dXJlIG9ubHkgbGVnaXQgdmFsdWVzIGFyZSB1c2VkLiAgKi8KKyNkZWZpbmUg RFcyX0dEQl9JTkRFWF9TWU1CT0xfU1RBVElDX1NFVF9WQUxVRShjdV9pbmRl eCwgdmFsdWUpIFwKKyAgZG8geyBcCisgICAgZ2RiX2Fzc2VydCAoKHVuc2ln bmVkIGludCkgKHZhbHVlKSA8PSAxKTsgXAorICAgIEdEQl9JTkRFWF9TWU1C T0xfU1RBVElDX1NFVF9WQUxVRSgoY3VfaW5kZXgpLCAodmFsdWUpKTsgXAor ICB9IHdoaWxlICgwKQorCisvKiBFbnN1cmUgb25seSBsZWdpdCB2YWx1ZXMg YXJlIHVzZWQuICAqLworI2RlZmluZSBEVzJfR0RCX0lOREVYX1NZTUJPTF9L SU5EX1NFVF9WQUxVRShjdV9pbmRleCwgdmFsdWUpIFwKKyAgZG8geyBcCisg ICAgZ2RiX2Fzc2VydCAoKHZhbHVlKSA+PSBHREJfSU5ERVhfU1lNQk9MX0tJ TkRfVFlQRSBcCisgICAgICAgICAgICAgICAgJiYgKHZhbHVlKSA8PSBHREJf SU5ERVhfU1lNQk9MX0tJTkRfT1RIRVIpOyBcCisgICAgR0RCX0lOREVYX1NZ TUJPTF9LSU5EX1NFVF9WQUxVRSgoY3VfaW5kZXgpLCAodmFsdWUpKTsgXAor ICB9IHdoaWxlICgwKQorCisvKiBFbnN1cmUgd2UgZG9uJ3QgdXNlIG1vcmUg dGhhbiB0aGUgYWxsb3RlZCBudWJlciBvZiBiaXRzIGZvciB0aGUgQ1UuICAq LworI2RlZmluZSBEVzJfR0RCX0lOREVYX0NVX1NFVF9WQUxVRShjdV9pbmRl eCwgdmFsdWUpIFwKKyAgZG8geyBcCisgICAgZ2RiX2Fzc2VydCAoKCh2YWx1 ZSkgJiB+R0RCX0lOREVYX0NVX01BU0spID09IDApOyBcCisgICAgR0RCX0lO REVYX0NVX1NFVF9WQUxVRSgoY3VfaW5kZXgpLCAodmFsdWUpKTsgXAorICB9 IHdoaWxlICgwKQorCiAvKiBBIGRlc2NyaXB0aW9uIG9mIHRoZSBtYXBwZWQg aW5kZXguICBUaGUgZmlsZSBmb3JtYXQgaXMgZGVzY3JpYmVkIGluCiAgICBh IGNvbW1lbnQgYnkgdGhlIGNvZGUgdGhhdCB3cml0ZXMgdGhlIGluZGV4LiAg Ki8KIHN0cnVjdCBtYXBwZWRfaW5kZXgKQEAgLTIzNTAsNyArMjM3Myw3IEBA IGR3YXJmMl9yZWFkX2luZGV4IChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkK ICAgICB9CiAgIC8qIEluZGV4ZXMgd2l0aCBoaWdoZXIgdmVyc2lvbiB0aGFu IHRoZSBvbmUgc3VwcG9ydGVkIGJ5IEdEQiBtYXkgYmUgbm8KICAgICAgbG9u Z2VyIGJhY2t3YXJkIGNvbXBhdGlibGUuICAqLwotICBpZiAodmVyc2lvbiA+ IDYpCisgIGlmICh2ZXJzaW9uID4gNykKICAgICByZXR1cm4gMDsKIAogICBt YXAgPSBPQlNUQUNLX1pBTExPQyAoJm9iamZpbGUtPm9iamZpbGVfb2JzdGFj aywgc3RydWN0IG1hcHBlZF9pbmRleCk7CkBAIC0yNzE2LDI2ICsyNzM5LDcw IEBAIGR3Ml9sb29rdXBfc3ltYm9sIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmls ZSwgaW50IGJsb2NrX2luZGV4LAogfQogCiAvKiBBIGhlbHBlciBmdW5jdGlv biB0aGF0IGV4cGFuZHMgYWxsIHN5bXRhYnMgdGhhdCBob2xkIGFuIG9iamVj dAotICAgbmFtZWQgTkFNRS4gICovCisgICBuYW1lZCBOQU1FLiAgSWYgV0FO VF9TUEVDSUZJQ19CTE9DSyBpcyBub24temVybywgb25seSBsb29rIGZvcgor ICAgc3ltYm9scyBpbiBibG9jayBCTE9DS19LSU5ELiAgKi8KIAogc3RhdGlj IHZvaWQKLWR3Ml9kb19leHBhbmRfc3ltdGFic19tYXRjaGluZyAoc3RydWN0 IG9iamZpbGUgKm9iamZpbGUsIGNvbnN0IGNoYXIgKm5hbWUpCitkdzJfZG9f ZXhwYW5kX3N5bXRhYnNfbWF0Y2hpbmcgKHN0cnVjdCBvYmpmaWxlICpvYmpm aWxlLAorCQkJCWludCB3YW50X3NwZWNpZmljX2Jsb2NrLAorCQkJCWVudW0g YmxvY2tfZW51bSBibG9ja19raW5kLAorCQkJCWNvbnN0IGNoYXIgKm5hbWUs IGRvbWFpbl9lbnVtIGRvbWFpbikKIHsKKyAgc3RydWN0IG1hcHBlZF9pbmRl eCAqaW5kZXg7CisKICAgZHcyX3NldHVwIChvYmpmaWxlKTsKIAorICBpbmRl eCA9IGR3YXJmMl9wZXJfb2JqZmlsZS0+aW5kZXhfdGFibGU7CisKICAgLyog aW5kZXhfdGFibGUgaXMgTlVMTCBpZiBPQkpGX1JFQUROT1cuICAqLwotICBp ZiAoZHdhcmYyX3Blcl9vYmpmaWxlLT5pbmRleF90YWJsZSkKKyAgaWYgKGlu ZGV4KQogICAgIHsKICAgICAgIG9mZnNldF90eXBlICp2ZWM7CiAKLSAgICAg IGlmIChmaW5kX3Nsb3RfaW5fbWFwcGVkX2hhc2ggKGR3YXJmMl9wZXJfb2Jq ZmlsZS0+aW5kZXhfdGFibGUsCi0JCQkJICAgIG5hbWUsICZ2ZWMpKQorICAg ICAgaWYgKGZpbmRfc2xvdF9pbl9tYXBwZWRfaGFzaCAoaW5kZXgsIG5hbWUs ICZ2ZWMpKQogCXsKIAkgIG9mZnNldF90eXBlIGksIGxlbiA9IE1BWUJFX1NX QVAgKCp2ZWMpOwogCSAgZm9yIChpID0gMDsgaSA8IGxlbjsgKytpKQogCSAg ICB7Ci0JICAgICAgb2Zmc2V0X3R5cGUgY3VfaW5kZXggPSBNQVlCRV9TV0FQ ICh2ZWNbaSArIDFdKTsKKwkgICAgICBvZmZzZXRfdHlwZSBjdV9pbmRleF9h bmRfYXR0cnMgPSBNQVlCRV9TV0FQICh2ZWNbaSArIDFdKTsKKwkgICAgICBv ZmZzZXRfdHlwZSBjdV9pbmRleCA9IEdEQl9JTkRFWF9DVV9WQUxVRSAoY3Vf aW5kZXhfYW5kX2F0dHJzKTsKIAkgICAgICBzdHJ1Y3QgZHdhcmYyX3Blcl9j dV9kYXRhICpwZXJfY3UgPSBkdzJfZ2V0X2N1IChjdV9pbmRleCk7CisJICAg ICAgaW50IHdhbnRfc3RhdGljID0gYmxvY2tfa2luZCAhPSBHTE9CQUxfQkxP Q0s7CisJICAgICAgLyogVGhpcyB2YWx1ZSBpcyBvbmx5IHZhbGlkIGZvciBp bmRleCB2ZXJzaW9ucyA+PSA3LiAgKi8KKwkgICAgICBpbnQgaXNfc3RhdGlj ID0gR0RCX0lOREVYX1NZTUJPTF9TVEFUSUNfVkFMVUUgKGN1X2luZGV4X2Fu ZF9hdHRycyk7CisJICAgICAgZ2RiX2luZGV4X3N5bWJvbF9raW5kIHN5bWJv bF9raW5kID0KKwkJR0RCX0lOREVYX1NZTUJPTF9LSU5EX1ZBTFVFIChjdV9p bmRleF9hbmRfYXR0cnMpOworCisJICAgICAgaWYgKHdhbnRfc3BlY2lmaWNf YmxvY2sKKwkJICAmJiBpbmRleC0+dmVyc2lvbiA+PSA3CisJCSAgJiYgd2Fu dF9zdGF0aWMgIT0gaXNfc3RhdGljKQorCQljb250aW51ZTsKKworCSAgICAg IC8qIE9ubHkgY2hlY2sgdGhlIHN5bWJvbCdzIGtpbmQgaWYgaXQgaGFzIG9u ZS4KKwkJIEluZGljZXMgcHJpb3IgdG8gdmVyc2lvbiA3IGRvbid0IHJlY29y ZCBpdC4gICovCisJICAgICAgaWYgKGluZGV4LT52ZXJzaW9uID49IDcpCisJ CXsKKwkJICBzd2l0Y2ggKGRvbWFpbikKKwkJICAgIHsKKwkJICAgIGNhc2Ug VkFSX0RPTUFJTjoKKwkJICAgICAgaWYgKHN5bWJvbF9raW5kICE9IEdEQl9J TkRFWF9TWU1CT0xfS0lORF9WQVJJQUJMRQorCQkJICAmJiBzeW1ib2xfa2lu ZCAhPSBHREJfSU5ERVhfU1lNQk9MX0tJTkRfRlVOQ1RJT04KKwkJCSAgLyog U29tZSB0eXBlcyBhcmUgYWxzbyBpbiBWQVJfRE9NQUlOLiAgKi8KKwkJCSAg JiYgc3ltYm9sX2tpbmQgIT0gR0RCX0lOREVYX1NZTUJPTF9LSU5EX1RZUEUp CisJCQljb250aW51ZTsKKwkJICAgICAgYnJlYWs7CisJCSAgICBjYXNlIFNU UlVDVF9ET01BSU46CisJCSAgICAgIGlmIChzeW1ib2xfa2luZCAhPSBHREJf SU5ERVhfU1lNQk9MX0tJTkRfVFlQRSkKKwkJCWNvbnRpbnVlOworCQkgICAg ICBicmVhazsKKwkJICAgIGNhc2UgTEFCRUxfRE9NQUlOOgorCQkgICAgICBp ZiAoc3ltYm9sX2tpbmQgIT0gR0RCX0lOREVYX1NZTUJPTF9LSU5EX09USEVS KQorCQkJY29udGludWU7CisJCSAgICAgIGJyZWFrOworCQkgICAgZGVmYXVs dDoKKwkJICAgICAgYnJlYWs7CisJCSAgICB9CisJCX0KIAogCSAgICAgIGR3 Ml9pbnN0YW50aWF0ZV9zeW10YWIgKHBlcl9jdSk7CiAJICAgIH0KQEAgLTI3 NDgsNyArMjgxNSw3IEBAIGR3Ml9wcmVfZXhwYW5kX3N5bXRhYnNfbWF0Y2hp bmcgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAogCQkJCSBlbnVtIGJsb2Nr X2VudW0gYmxvY2tfa2luZCwgY29uc3QgY2hhciAqbmFtZSwKIAkJCQkgZG9t YWluX2VudW0gZG9tYWluKQogewotICBkdzJfZG9fZXhwYW5kX3N5bXRhYnNf bWF0Y2hpbmcgKG9iamZpbGUsIG5hbWUpOworICBkdzJfZG9fZXhwYW5kX3N5 bXRhYnNfbWF0Y2hpbmcgKG9iamZpbGUsIDEsIGJsb2NrX2tpbmQsIG5hbWUs IGRvbWFpbik7CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC0yNzg2LDcgKzI4NTMs OSBAQCBzdGF0aWMgdm9pZAogZHcyX2V4cGFuZF9zeW10YWJzX2Zvcl9mdW5j dGlvbiAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCiAJCQkJIGNvbnN0IGNo YXIgKmZ1bmNfbmFtZSkKIHsKLSAgZHcyX2RvX2V4cGFuZF9zeW10YWJzX21h dGNoaW5nIChvYmpmaWxlLCBmdW5jX25hbWUpOworICAvKiBOb3RlOiBJdCBk b2Vzbid0IG1hdHRlciB3aGF0IHdlIHBhc3MgZm9yIGJsb2NrX2tpbmQgaGVy ZS4gICovCisgIGR3Ml9kb19leHBhbmRfc3ltdGFic19tYXRjaGluZyAob2Jq ZmlsZSwgMCwgR0xPQkFMX0JMT0NLLCBmdW5jX25hbWUsCisJCQkJICBWQVJf RE9NQUlOKTsKIH0KIAogc3RhdGljIHZvaWQKQEAgLTI5MDEsNyArMjk3MCw3 IEBAIGR3Ml9maW5kX3N5bWJvbF9maWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2Jq ZmlsZSwgY29uc3QgY2hhciAqbmFtZSkKICAgICAgc2hvdWxkIGJlIHJld3Jp dHRlbiBzbyB0aGF0IGl0IGRvZXNuJ3QgcmVxdWlyZSBhIGN1c3RvbSBob29r LiAgSXQKICAgICAgY291bGQganVzdCB1c2UgdGhlIG9yZGluYXJ5IHN5bWJv bCB0YWJsZXMuICAqLwogICAvKiB2ZWNbMF0gaXMgdGhlIGxlbmd0aCwgd2hp Y2ggbXVzdCBhbHdheXMgYmUgPjAuICAqLwotICBwZXJfY3UgPSBkdzJfZ2V0 X2N1IChNQVlCRV9TV0FQICh2ZWNbMV0pKTsKKyAgcGVyX2N1ID0gZHcyX2dl dF9jdSAoR0RCX0lOREVYX0NVX1ZBTFVFIChNQVlCRV9TV0FQICh2ZWNbMV0p KSk7CiAKICAgaWYgKHBlcl9jdS0+di5xdWljay0+c3ltdGFiICE9IE5VTEwp CiAgICAgcmV0dXJuIHBlcl9jdS0+di5xdWljay0+c3ltdGFiLT5maWxlbmFt ZTsKQEAgLTMwMjUsOCArMzA5NCw0MCBAQCBkdzJfZXhwYW5kX3N5bXRhYnNf bWF0Y2hpbmcKICAgICAgIGZvciAodmVjX2lkeCA9IDA7IHZlY19pZHggPCB2 ZWNfbGVuOyArK3ZlY19pZHgpCiAJewogCSAgc3RydWN0IGR3YXJmMl9wZXJf Y3VfZGF0YSAqcGVyX2N1OworCSAgb2Zmc2V0X3R5cGUgY3VfaW5kZXhfYW5k X2F0dHJzID0gTUFZQkVfU1dBUCAodmVjW3ZlY19pZHggKyAxXSk7CisJICBn ZGJfaW5kZXhfc3ltYm9sX2tpbmQgc3ltYm9sX2tpbmQgPQorCSAgICBHREJf SU5ERVhfU1lNQk9MX0tJTkRfVkFMVUUgKGN1X2luZGV4X2FuZF9hdHRycyk7 CisJICBpbnQgY3VfaW5kZXggPSBHREJfSU5ERVhfQ1VfVkFMVUUgKGN1X2lu ZGV4X2FuZF9hdHRycyk7CisKKwkgIC8qIERvbid0IGNyYXNoIG9uIGJhZCBk YXRhLiAgKi8KKwkgIGlmIChjdV9pbmRleCA+PSAoZHdhcmYyX3Blcl9vYmpm aWxlLT5uX2NvbXBfdW5pdHMKKwkJCSAgICsgZHdhcmYyX3Blcl9vYmpmaWxl LT5uX2NvbXBfdW5pdHMpKQorCSAgICBjb250aW51ZTsKIAotCSAgcGVyX2N1 ID0gZHcyX2dldF9jdSAoTUFZQkVfU1dBUCAodmVjW3ZlY19pZHggKyAxXSkp OworCSAgLyogT25seSBjaGVjayB0aGUgc3ltYm9sJ3Mga2luZCBpZiBpdCBo YXMgb25lLgorCSAgICAgSW5kaWNlcyBwcmlvciB0byB2ZXJzaW9uIDcgZG9u J3QgcmVjb3JkIGl0LiAgKi8KKwkgIGlmIChpbmRleC0+dmVyc2lvbiA+PSA3 KQorCSAgICB7CisJICAgICAgc3dpdGNoIChraW5kKQorCQl7CisJCWNhc2Ug VkFSSUFCTEVTX0RPTUFJTjoKKwkJICBpZiAoc3ltYm9sX2tpbmQgIT0gR0RC X0lOREVYX1NZTUJPTF9LSU5EX1ZBUklBQkxFKQorCQkgICAgY29udGludWU7 CisJCSAgYnJlYWs7CisJCWNhc2UgRlVOQ1RJT05TX0RPTUFJTjoKKwkJICBp ZiAoc3ltYm9sX2tpbmQgIT0gR0RCX0lOREVYX1NZTUJPTF9LSU5EX0ZVTkNU SU9OKQorCQkgICAgY29udGludWU7CisJCSAgYnJlYWs7CisJCWNhc2UgVFlQ RVNfRE9NQUlOOgorCQkgIGlmIChzeW1ib2xfa2luZCAhPSBHREJfSU5ERVhf U1lNQk9MX0tJTkRfVFlQRSkKKwkJICAgIGNvbnRpbnVlOworCQkgIGJyZWFr OworCQlkZWZhdWx0OgorCQkgIGJyZWFrOworCQl9CisJICAgIH0KKworCSAg cGVyX2N1ID0gZHcyX2dldF9jdSAoY3VfaW5kZXgpOwogCSAgaWYgKGZpbGVf bWF0Y2hlciA9PSBOVUxMIHx8IHBlcl9jdS0+di5xdWljay0+bWFyaykKIAkg ICAgZHcyX2luc3RhbnRpYXRlX3N5bXRhYiAocGVyX2N1KTsKIAl9CkBAIC0x NzQxNywxNCArMTc1MTgsMTcgQEAgaGFzaF9leHBhbmQgKHN0cnVjdCBtYXBw ZWRfc3ltdGFiICpzeW10YWIpCiAgIHhmcmVlIChvbGRfZW50cmllcyk7CiB9 CiAKLS8qIEFkZCBhbiBlbnRyeSB0byBTWU1UQUIuICBOQU1FIGlzIHRoZSBu YW1lIG9mIHRoZSBzeW1ib2wuICBDVV9JTkRFWAotICAgaXMgdGhlIGluZGV4 IG9mIHRoZSBDVSBpbiB3aGljaCB0aGUgc3ltYm9sIGFwcGVhcnMuICAqLwor LyogQWRkIGFuIGVudHJ5IHRvIFNZTVRBQi4gIE5BTUUgaXMgdGhlIG5hbWUg b2YgdGhlIHN5bWJvbC4KKyAgIENVX0lOREVYIGlzIHRoZSBpbmRleCBvZiB0 aGUgQ1UgaW4gd2hpY2ggdGhlIHN5bWJvbCBhcHBlYXJzLgorICAgSVNfU1RB VElDIGlzIG9uZSBpZiB0aGUgc3ltYm9sIGlzIHN0YXRpYywgb3RoZXJ3aXNl IHplcm8gKGdsb2JhbCkuICAqLwogCiBzdGF0aWMgdm9pZAogYWRkX2luZGV4 X2VudHJ5IChzdHJ1Y3QgbWFwcGVkX3N5bXRhYiAqc3ltdGFiLCBjb25zdCBj aGFyICpuYW1lLAorCQkgaW50IGlzX3N0YXRpYywgZ2RiX2luZGV4X3N5bWJv bF9raW5kIGtpbmQsCiAJCSBvZmZzZXRfdHlwZSBjdV9pbmRleCkKIHsKICAg c3RydWN0IHN5bXRhYl9pbmRleF9lbnRyeSAqKnNsb3Q7CisgIG9mZnNldF90 eXBlIGN1X2luZGV4X2FuZF9hdHRyczsKIAogICArK3N5bXRhYi0+bl9lbGVt ZW50czsKICAgaWYgKDQgKiBzeW10YWItPm5fZWxlbWVudHMgLyAzID49IHN5 bXRhYi0+c2l6ZSkKQEAgLTE3NDM1LDEzICsxNzUzOSw3NiBAQCBhZGRfaW5k ZXhfZW50cnkgKHN0cnVjdCBtYXBwZWRfc3ltdGFiICpzeW10YWIsIGNvbnN0 IGNoYXIgKm5hbWUsCiAgICAgewogICAgICAgKnNsb3QgPSBYTkVXIChzdHJ1 Y3Qgc3ltdGFiX2luZGV4X2VudHJ5KTsKICAgICAgICgqc2xvdCktPm5hbWUg PSBuYW1lOworICAgICAgLyogaW5kZXhfb2Zmc2V0IGlzIHNldCBsYXRlci4g ICovCiAgICAgICAoKnNsb3QpLT5jdV9pbmRpY2VzID0gTlVMTDsKICAgICB9 Ci0gIC8qIERvbid0IHB1c2ggYW4gaW5kZXggdHdpY2UuICBEdWUgdG8gaG93 IHdlIGFkZCBlbnRyaWVzIHdlIG9ubHkKLSAgICAgaGF2ZSB0byBjaGVjayB0 aGUgbGFzdCBvbmUuICAqLyAKLSAgaWYgKFZFQ19lbXB0eSAob2Zmc2V0X3R5 cGUsICgqc2xvdCktPmN1X2luZGljZXMpCi0gICAgICB8fCBWRUNfbGFzdCAo b2Zmc2V0X3R5cGUsICgqc2xvdCktPmN1X2luZGljZXMpICE9IGN1X2luZGV4 KQotICAgIFZFQ19zYWZlX3B1c2ggKG9mZnNldF90eXBlLCAoKnNsb3QpLT5j dV9pbmRpY2VzLCBjdV9pbmRleCk7CisKKyAgY3VfaW5kZXhfYW5kX2F0dHJz ID0gMDsKKyAgRFcyX0dEQl9JTkRFWF9DVV9TRVRfVkFMVUUgKGN1X2luZGV4 X2FuZF9hdHRycywgY3VfaW5kZXgpOworICBEVzJfR0RCX0lOREVYX1NZTUJP TF9TVEFUSUNfU0VUX1ZBTFVFIChjdV9pbmRleF9hbmRfYXR0cnMsIGlzX3N0 YXRpYyk7CisgIERXMl9HREJfSU5ERVhfU1lNQk9MX0tJTkRfU0VUX1ZBTFVF IChjdV9pbmRleF9hbmRfYXR0cnMsIGtpbmQpOworCisgIC8qIFdlIGRvbid0 IHdhbnQgdG8gcmVjb3JkIGFuIGluZGV4IHZhbHVlIHR3aWNlIGFzIHdlIHdh bnQgdG8gYXZvaWQgdGhlCisgICAgIGR1cGxpY2F0aW9uLgorICAgICBXZSBw cm9jZXNzIGFsbCBnbG9iYWwgc3ltYm9scyBhbmQgdGhlbiBhbGwgc3RhdGlj IHN5bWJvbHMKKyAgICAgKHdoaWNoIHdvdWxkIGFsbG93IHVzIHRvIGF2b2lk IHRoZSBkdXBsaWNhdGlvbiBieSBvbmx5IGhhdmluZyB0byBjaGVjaworICAg ICB0aGUgbGFzdCBlbnRyeSBwdXNoZWQpLCBidXQgYSBzeW1ib2wgY291bGQg aGF2ZSBtdWx0aXBsZSBraW5kcyBpbiBvbmUgQ1UuCisgICAgIFRvIGtlZXAg dGhpbmdzIHNpbXBsZSB3ZSBkb24ndCB3b3JyeSBhYm91dCB0aGUgZHVwbGlj YXRpb24gaGVyZSBhbmQKKyAgICAgc29ydCBhbmQgdW5pcXVmeSB0aGUgbGlz dCBhZnRlciB3ZSd2ZSBwcm9jZXNzZWQgYWxsIHN5bWJvbHMuICAqLworICBW RUNfc2FmZV9wdXNoIChvZmZzZXRfdHlwZSwgKCpzbG90KS0+Y3VfaW5kaWNl cywgY3VfaW5kZXhfYW5kX2F0dHJzKTsKK30KKworLyogcXNvcnQgaGVscGVy IHJvdXRpbmUgZm9yIHVuaXF1aWZ5X2N1X2luZGljZXMuICAqLworCitzdGF0 aWMgaW50CitvZmZzZXRfdHlwZV9jb21wYXJlIChjb25zdCB2b2lkICphcCwg Y29uc3Qgdm9pZCAqYnApCit7CisgIG9mZnNldF90eXBlIGEgPSAqKG9mZnNl dF90eXBlICopIGFwOworICBvZmZzZXRfdHlwZSBiID0gKihvZmZzZXRfdHlw ZSAqKSBicDsKKworICByZXR1cm4gKGEgPiBiKSAtIChiID4gYSk7Cit9CisK Ky8qIFNvcnQgYW5kIHJlbW92ZSBkdXBsaWNhdGVzIG9mIGFsbCBzeW1ib2xz JyBjdV9pbmRpY2VzIGxpc3RzLiAgKi8KKworc3RhdGljIHZvaWQKK3VuaXF1 aWZ5X2N1X2luZGljZXMgKHN0cnVjdCBtYXBwZWRfc3ltdGFiICpzeW10YWIp Cit7CisgIGludCBpOworCisgIGZvciAoaSA9IDA7IGkgPCBzeW10YWItPnNp emU7ICsraSkKKyAgICB7CisgICAgICBzdHJ1Y3Qgc3ltdGFiX2luZGV4X2Vu dHJ5ICplbnRyeSA9IHN5bXRhYi0+ZGF0YVtpXTsKKworICAgICAgaWYgKGVu dHJ5CisJICAmJiBlbnRyeS0+Y3VfaW5kaWNlcyAhPSBOVUxMKQorCXsKKwkg IHVuc2lnbmVkIGludCBuZXh0X3RvX2luc2VydCwgbmV4dF90b19jaGVjazsK KwkgIG9mZnNldF90eXBlIGxhc3RfdmFsdWU7CisKKwkgIHFzb3J0IChWRUNf YWRkcmVzcyAob2Zmc2V0X3R5cGUsIGVudHJ5LT5jdV9pbmRpY2VzKSwKKwkJ IFZFQ19sZW5ndGggKG9mZnNldF90eXBlLCBlbnRyeS0+Y3VfaW5kaWNlcyks CisJCSBzaXplb2YgKG9mZnNldF90eXBlKSwgb2Zmc2V0X3R5cGVfY29tcGFy ZSk7CisKKwkgIGxhc3RfdmFsdWUgPSBWRUNfaW5kZXggKG9mZnNldF90eXBl LCBlbnRyeS0+Y3VfaW5kaWNlcywgMCk7CisJICBuZXh0X3RvX2luc2VydCA9 IDE7CisJICBmb3IgKG5leHRfdG9fY2hlY2sgPSAxOworCSAgICAgICBuZXh0 X3RvX2NoZWNrIDwgVkVDX2xlbmd0aCAob2Zmc2V0X3R5cGUsIGVudHJ5LT5j dV9pbmRpY2VzKTsKKwkgICAgICAgKytuZXh0X3RvX2NoZWNrKQorCSAgICB7 CisJICAgICAgaWYgKFZFQ19pbmRleCAob2Zmc2V0X3R5cGUsIGVudHJ5LT5j dV9pbmRpY2VzLCBuZXh0X3RvX2NoZWNrKQorCQkgICE9IGxhc3RfdmFsdWUp CisJCXsKKwkJICBsYXN0X3ZhbHVlID0gVkVDX2luZGV4IChvZmZzZXRfdHlw ZSwgZW50cnktPmN1X2luZGljZXMsCisJCQkJCSAgbmV4dF90b19jaGVjayk7 CisJCSAgVkVDX3JlcGxhY2UgKG9mZnNldF90eXBlLCBlbnRyeS0+Y3VfaW5k aWNlcywgbmV4dF90b19pbnNlcnQsCisJCQkgICAgICAgbGFzdF92YWx1ZSk7 CisJCSAgKytuZXh0X3RvX2luc2VydDsKKwkJfQorCSAgICB9CisJICBWRUNf dHJ1bmNhdGUgKG9mZnNldF90eXBlLCBlbnRyeS0+Y3VfaW5kaWNlcywgbmV4 dF90b19pbnNlcnQpOworCX0KKyAgICB9CiB9CiAKIC8qIEFkZCBhIHZlY3Rv ciBvZiBpbmRpY2VzIHRvIHRoZSBjb25zdGFudCBwb29sLiAgKi8KQEAgLTE3 NjU1LDYgKzE3ODIyLDQ0IEBAIHdyaXRlX2FkZHJlc3NfbWFwIChzdHJ1Y3Qg b2JqZmlsZSAqb2JqZmlsZSwgc3RydWN0IG9ic3RhY2sgKm9ic3RhY2ssCiAJ CSAgICAgICBhZGRybWFwX2luZGV4X2RhdGEucHJldmlvdXNfY3VfaW5kZXgp OwogfQogCisvKiBSZXR1cm4gdGhlIHN5bWJvbCBraW5kIG9mIFBTWU0uICAq LworCitzdGF0aWMgZ2RiX2luZGV4X3N5bWJvbF9raW5kCitzeW1ib2xfa2lu ZCAoc3RydWN0IHBhcnRpYWxfc3ltYm9sICpwc3ltKQoreworICBkb21haW5f ZW51bSBkb21haW4gPSBQU1lNQk9MX0RPTUFJTiAocHN5bSk7CisgIGVudW0g YWRkcmVzc19jbGFzcyBhY2xhc3MgPSBQU1lNQk9MX0NMQVNTIChwc3ltKTsK KworICBzd2l0Y2ggKGRvbWFpbikKKyAgICB7CisgICAgY2FzZSBWQVJfRE9N QUlOOgorICAgICAgc3dpdGNoIChhY2xhc3MpCisJeworCWNhc2UgTE9DX0JM T0NLOgorCSAgcmV0dXJuIEdEQl9JTkRFWF9TWU1CT0xfS0lORF9GVU5DVElP TjsKKwljYXNlIExPQ19UWVBFREVGOgorCSAgcmV0dXJuIEdEQl9JTkRFWF9T WU1CT0xfS0lORF9UWVBFOworCWNhc2UgTE9DX0NPTVBVVEVEOgorCWNhc2Ug TE9DX0NPTlNUX0JZVEVTOgorCWNhc2UgTE9DX09QVElNSVpFRF9PVVQ6CisJ Y2FzZSBMT0NfU1RBVElDOgorCSAgcmV0dXJuIEdEQl9JTkRFWF9TWU1CT0xf S0lORF9WQVJJQUJMRTsKKwljYXNlIExPQ19DT05TVDoKKwkgIC8qIE5vdGU6 IEl0J3MgY3VycmVudGx5IGltcG9zc2libGUgdG8gcmVjb2duaXplIHBzeW1z IGFzIGVudW0gdmFsdWVzCisJICAgICBzaG9ydCBvZiByZWFkaW5nIHRoZSB0 eXBlIGluZm8uICBGb3Igbm93IHB1bnQuICAqLworCSAgcmV0dXJuIEdEQl9J TkRFWF9TWU1CT0xfS0lORF9WQVJJQUJMRTsKKwlkZWZhdWx0OgorCSAgLyog VGhlcmUgYXJlIG90aGVyIExPQ19GT08gdmFsdWVzIHRoYXQgb25lIG1pZ2h0 IHdhbnQgdG8gY2xhc3NpZnkKKwkgICAgIGFzIHZhcmlhYmxlcywgYnV0IGR3 YXJmMnJlYWQuYyBkb2Vzbid0IGN1cnJlbnRseSB1c2UgdGhlbS4gICovCisJ ICByZXR1cm4gR0RCX0lOREVYX1NZTUJPTF9LSU5EX09USEVSOworCX0KKyAg ICBjYXNlIFNUUlVDVF9ET01BSU46CisgICAgICByZXR1cm4gR0RCX0lOREVY X1NZTUJPTF9LSU5EX1RZUEU7CisgICAgZGVmYXVsdDoKKyAgICAgIHJldHVy biBHREJfSU5ERVhfU1lNQk9MX0tJTkRfT1RIRVI7CisgICAgfQorfQorCiAv KiBBZGQgYSBsaXN0IG9mIHBhcnRpYWwgc3ltYm9scyB0byBTWU1UQUIuICAq LwogCiBzdGF0aWMgdm9pZApAQCAtMTc2NjcsMjkgKzE3ODcyLDIxIEBAIHdy aXRlX3BzeW1ib2xzIChzdHJ1Y3QgbWFwcGVkX3N5bXRhYiAqc3ltdGFiLAog ewogICBmb3IgKDsgY291bnQtLSA+IDA7ICsrcHN5bXApCiAgICAgewotICAg ICAgdm9pZCAqKnNsb3QsICpsb29rdXA7CisgICAgICBzdHJ1Y3QgcGFydGlh bF9zeW1ib2wgKnBzeW0gPSAqcHN5bXA7CisgICAgICB2b2lkICoqc2xvdDsK IAotICAgICAgaWYgKFNZTUJPTF9MQU5HVUFHRSAoKnBzeW1wKSA9PSBsYW5n dWFnZV9hZGEpCisgICAgICBpZiAoU1lNQk9MX0xBTkdVQUdFIChwc3ltKSA9 PSBsYW5ndWFnZV9hZGEpCiAJZXJyb3IgKF8oIkFkYSBpcyBub3QgY3VycmVu dGx5IHN1cHBvcnRlZCBieSB0aGUgaW5kZXgiKSk7CiAKLSAgICAgIC8qIFdl IG9ubHkgd2FudCB0byBhZGQgYSBnaXZlbiBwc3ltYm9sIG9uY2UuICBIb3dl dmVyLCB3ZSBhbHNvCi0JIHdhbnQgdG8gYWNjb3VudCBmb3Igd2hldGhlciBp dCBpcyBnbG9iYWwgb3Igc3RhdGljLiAgU28sIHdlCi0JIG1heSBhZGQgaXQg dHdpY2UsIHVzaW5nIHNsaWdodGx5IGRpZmZlcmVudCB2YWx1ZXMuICAqLwot ICAgICAgaWYgKGlzX3N0YXRpYykKLQl7Ci0JICB1aW50cHRyX3QgdmFsID0g MSB8ICh1aW50cHRyX3QpICpwc3ltcDsKLQotCSAgbG9va3VwID0gKHZvaWQg KikgdmFsOwotCX0KLSAgICAgIGVsc2UKLQlsb29rdXAgPSAqcHN5bXA7Ci0K ICAgICAgIC8qIE9ubHkgYWRkIGEgZ2l2ZW4gcHN5bWJvbCBvbmNlLiAgKi8K LSAgICAgIHNsb3QgPSBodGFiX2ZpbmRfc2xvdCAocHN5bXNfc2VlbiwgbG9v a3VwLCBJTlNFUlQpOworICAgICAgc2xvdCA9IGh0YWJfZmluZF9zbG90IChw c3ltc19zZWVuLCBwc3ltLCBJTlNFUlQpOwogICAgICAgaWYgKCEqc2xvdCkK IAl7Ci0JICAqc2xvdCA9IGxvb2t1cDsKLQkgIGFkZF9pbmRleF9lbnRyeSAo c3ltdGFiLCBTWU1CT0xfU0VBUkNIX05BTUUgKCpwc3ltcCksIGN1X2luZGV4 KTsKKwkgIGdkYl9pbmRleF9zeW1ib2xfa2luZCBraW5kID0gc3ltYm9sX2tp bmQgKHBzeW0pOworCisJICAqc2xvdCA9IHBzeW07CisJICBhZGRfaW5kZXhf ZW50cnkgKHN5bXRhYiwgU1lNQk9MX1NFQVJDSF9OQU1FIChwc3ltKSwKKwkJ CSAgIGlzX3N0YXRpYywga2luZCwgY3VfaW5kZXgpOwogCX0KICAgICB9CiB9 CkBAIC0xNzkxMiw2ICsxODEwOSwxMCBAQCB3cml0ZV9wc3ltdGFic190b19p bmRleCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIGNvbnN0IGNoYXIgKmRp cikKIAkJCSAgICAgIHdyaXRlX29uZV9zaWduYXR1cmVkX3R5cGUsICZzaWdf ZGF0YSk7CiAgICAgfQogCisgIC8qIE5vdyB0aGF0IHdlJ3ZlIHByb2Nlc3Nl ZCBhbGwgc3ltYm9scyB3ZSBjYW4gc2hyaW5rIHRoZWlyIGN1X2luZGljZXMK KyAgICAgbGlzdHMuICAqLworICB1bmlxdWlmeV9jdV9pbmRpY2VzIChzeW10 YWIpOworCiAgIG9ic3RhY2tfaW5pdCAoJmNvbnN0YW50X3Bvb2wpOwogICBt YWtlX2NsZWFudXBfb2JzdGFja19mcmVlICgmY29uc3RhbnRfcG9vbCk7CiAg IG9ic3RhY2tfaW5pdCAoJnN5bXRhYl9vYnN0YWNrKTsKQEAgLTE3OTI0LDcg KzE4MTI1LDcgQEAgd3JpdGVfcHN5bXRhYnNfdG9faW5kZXggKHN0cnVjdCBv YmpmaWxlICpvYmpmaWxlLCBjb25zdCBjaGFyICpkaXIpCiAgIHRvdGFsX2xl biA9IHNpemVfb2ZfY29udGVudHM7CiAKICAgLyogVGhlIHZlcnNpb24gbnVt YmVyLiAgKi8KLSAgdmFsID0gTUFZQkVfU1dBUCAoNik7CisgIHZhbCA9IE1B WUJFX1NXQVAgKDcpOwogICBvYnN0YWNrX2dyb3cgKCZjb250ZW50cywgJnZh bCwgc2l6ZW9mICh2YWwpKTsKIAogICAvKiBUaGUgb2Zmc2V0IG9mIHRoZSBD VSBsaXN0IGZyb20gdGhlIHN0YXJ0IG9mIHRoZSBmaWxlLiAgKi8K --20cf3071cc4ad5e10704c2d87532--