From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-il1-x12b.google.com (mail-il1-x12b.google.com [IPv6:2607:f8b0:4864:20::12b]) by sourceware.org (Postfix) with ESMTPS id CD6F03892474 for ; Thu, 6 Aug 2020 17:58:40 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org CD6F03892474 Received: by mail-il1-x12b.google.com with SMTP id t18so41217738ilh.2 for ; Thu, 06 Aug 2020 10:58:40 -0700 (PDT) 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=zV6VVlhUQVMPTh/mwopktZwin9r6jRW42Cw6D2alE78=; b=CvXb65jBEmfaZXE8i+w6e8DmH1O71B5MJJ7zgjnluNk6/vSw9RSX2AzDilMPkc6UhF THR7xWkXrT0J5JqLxJMsBQTq4B8btP1mIWK5+86D7QCzREJmM0VPUz+TTv1uZynX5i0E FZt+ombVo00Y83KoxHMTHz7A6FEEUwyjieNCvHem7t3yco3gW0vNFdOs7igiV0Z93vKJ Yj3BRDNxpgIxL54VqSafcY6OPLAjdg1ver8sqxnIxUuMkU4Dl1fQVou1EwS2rc+lzLTg JId4PX74YJ6EuAMxGJKOO8z3z7VCUPek0fBnRwHYyOcLzTIISqIokf0gOhlwzv+mL/fQ EaNQ== X-Gm-Message-State: AOAM530IZmHzXC2eg63ZsC9nj8orbQY6B32T474EZsqk8BUck7auyCD8 hkk3LpwtbEO/FB83s63bdVZFXThifhnr/REl3IQE0Gx7 X-Google-Smtp-Source: ABdhPJywbWRofnk4PuFI1Yyk0ayJmcxYE3WK3nxv+GObZ3Yb0PFEcrZljxxjMEMxXsamFbWvelAGW5NhaDxvNdiAQrY= X-Received: by 2002:a92:d306:: with SMTP id x6mr95639ila.229.1596736719850; Thu, 06 Aug 2020 10:58:39 -0700 (PDT) MIME-Version: 1.0 References: <5e77197d-dbb3-5718-bfe8-e263c4006a06@simark.ca> <873650onns.fsf@tromey.com> In-Reply-To: <873650onns.fsf@tromey.com> From: Caroline Tice Date: Thu, 6 Aug 2020 10:58:28 -0700 Message-ID: Subject: Re: [PATCH, v4] Add code for processing version 5 DWP files (for use with DWARF v5) To: Tom Tromey Cc: Caroline Tice via Gdb-patches , Simon Marchi , Eric Christopher Content-Type: multipart/mixed; boundary="000000000000fd334405ac393cbe" X-Spam-Status: No, score=-20.3 required=5.0 tests=BAYES_00, DKIMWL_WL_MED, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, ENV_AND_HDR_SPF_MATCH, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP, USER_IN_DEF_DKIM_WL, USER_IN_DEF_SPF_WL autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 06 Aug 2020 17:58:42 -0000 --000000000000fd334405ac393cbe Content-Type: text/plain; charset="UTF-8" Thank you for your review! I think I have addressed all of your comments, and am attaching the updated patch. Please let me know if this is ok to commit now. -- Caroline cmtice@google.com gdb/ChangeLog 2020-08-06 Caroline Tice * dwarf2/read.c (struct dwo_file): Update comment on 'sections' field. (struct dwp_sections): Update field comments. Add loclists and rnglists fields. (struct virtual_v2_dwo_sections): Rename struct to 'virtual_v2_or_v5_dwo_sections'; update comments at top of struct; add size & offset fields for loclists and rnglists. (struct dwp_hash_table): Add a 'v5' struct field to the union section. (create_debug_type_hash_table): Add 'DW_UT_split_type' to the check for skipping dummy type units. (create_dwp_hash_table): Update the large comment above the function to discuss Version 5 DWP files as well, with references. Update all the version checks in the function to check for version 5 as well. Add new section at the end to create dwp hash table for version 5. (create_dwp_v2_section): Rename function to 'create_dwp_v2_or_v5_section'. Update function comment appropriately. Add V5 to error message text. (create_dwo_unit_in_dwp_v2): Change calls to create_dwp_v2_section into calls to create_dwp_v2_or_v5_section. (create_dwo_unit_in_dwp_v5): New function. (lookup_dwo_unit_in_dwp): Update conditional statement to explicitly check for version2; add else clause to handle version 5. (open_and_init_dwo_file): Add code to check dwarf version & only call create_debug_types_hash_table (with sections.types) if version is not 5; else call create_debug_type_hash_table, with sections.info. (dwarf2_locate_v2_dwp_sections): Update function comment to mention version 5. (dwarf2_locate_v5_dwp_sections): New function. (open_and_init_dwp_file): Add else-if clause for version 5 to call bfd_map_over_sections with dwarf2_locate_v5_dwp_sections. -- Caroline cmtice@google.com On Wed, Aug 5, 2020 at 1:14 PM Tom Tromey wrote: > > >>>>> "Caroline" == Caroline Tice via Gdb-patches writes: > > Caroline> The changes to include/dwarf2.h were accepted by binutils and have > Caroline> gone in, so I've removed those changes from this patch. > > Thank you for the patch. > > I read it and I have a few minor nits, plus one actual bug. > > Caroline> - if (version == 2) > Caroline> + if ((version == 2) || (version == 5)) > > Please remove the extra parentheses on this line. > > Caroline> + else // version == 5 > > gdb still only uses /* */-style comments. > > Caroline> + int i; > > This should be local to the for loop: > > Caroline> + for (i = 0; i < nr_columns; ++i) > > ... for (int i = ...) > > Caroline> + htab->section_pool.v5.sizes = > Caroline> + htab->section_pool.v5.offsets + (sizeof (uint32_t) > > The '=' should go at the start of the second line here. > > Caroline> +static struct dwo_unit * > Caroline> +create_dwo_unit_in_dwp_v5 (struct dwarf2_per_objfile *dwarf2_per_objfile, > Caroline> + struct dwp_file *dwp_file, > Caroline> + uint32_t unit_index, > Caroline> + const char *comp_dir, > Caroline> + ULONGEST signature, int is_debug_types) > Caroline> +{ > > ... > > Caroline> + const struct dwp_hash_table *dwp_htab = > Caroline> + is_debug_types ? dwp_file->tus : dwp_file->cus; > > '=' on the wrong line. > > Caroline> + int i; > > This should also be in the 'for' loop below. > > Caroline> + memset (§ions, 0, sizeof (sections)); > > Can this just be > > struct virtual_v2_or_v5_dwo_sections sections {}; > > ? > > gdb is moving more to a C++-y style where variables are declared near > their first use. > > Caroline> + dwo_file->dwo_name = obstack_strdup (&objfile->objfile_obstack, > Caroline> + virtual_dwo_name); > > Here we use objfile::intern now instead. This matters because it puts > the string into the per-BFD object rather than the objfile obstack, so > that sharing works correctly. I suspect this approach could cause > crashes in some multi-inferior scenarios. > > Caroline> + dwo_unit = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_unit); > > These were also moved to the per-BFD obstack during the big sharing > series. The other site doing this now looks like: > > dwo_unit = OBSTACK_ZALLOC (&per_objfile->per_bfd->obstack, struct dwo_unit); > > Caroline> + dwo_unit->section = > Caroline> + XOBNEW (&objfile->objfile_obstack, struct dwarf2_section_info); > > Likewise. > > Caroline> + else // version == 5 > > Comment style. > > Tom --000000000000fd334405ac393cbe Content-Type: application/octet-stream; name="v4-0001-Add-code-for-processing-version-5-DWP-files-for-u.patch" Content-Disposition: attachment; filename="v4-0001-Add-code-for-processing-version-5-DWP-files-for-u.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kdj3snnf0 RnJvbSA2NGFkYTg4NmZkYTZmYTRiZGFkOTU1MmQzMzE1MTQ1MGJhYzBhZmUzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBDYXJvbGluZSBUaWNlIDxjbXRpY2VAZ29vZ2xlLmNvbT4KRGF0 ZTogTW9uLCAyMCBKdWwgMjAyMCAxNjo0NDo0OSAtMDcwMApTdWJqZWN0OiBbUEFUQ0ggdjRdIEFk ZCBjb2RlIGZvciBwcm9jZXNzaW5nIHZlcnNpb24gNSBEV1AgZmlsZXMgKGZvciB1c2Ugd2l0aAog RFdBUkYgdjUpLgoKVGhlIERXQVJGIHY1IFNwZWMgZGVzY3JpYmVzIGEgKHNsaWdodGx5KSBuZXcg Zm9ybWF0IGZvciBWNSAuZHdwIGZpbGVzLgpUaGlzIHBhdGNoIHVwZGF0ZXMgR0RCIHRvIGFsbG93 IGl0IHRvIHJlYWQvcHJvY2VzcyAuZHdwIGZpbGVzIGluIHRoZQpuZXcgRFdBUkYgdjUgZm9ybWF0 LCB3aGlsZSBjb250aW51aW5nIHRvIGJlIGFibGUgdG8gcmVhZC9wcm9jZXNzIC5kd3AgZmlsZXMK aW4gdGhlIG9sZGVyIFYxICYgVjIgZm9ybWF0cyAob2xkZXIsIHByZS1zdGFuZGFyZCBmb3JtYXRz KS4KClRoZSB0d28gbWFqb3IgZGlmZmVyZW5jZXMgYmV0d2VlbiB0aGUgVjIgYW5kIHRoZSBWNSBm b3JtYXQgYXJlOgogICAgLSBUaGUgaW5jbHVzaW9uIG9mIERXQVJGLXY1LXNwZWNpZmljIHNlY3Rp b25zOgogICAgICAgICAgLmRlYnVnX2xvY2xpc3RzLmR3bwoJICAuZGVidWdfcm5nbGlzdHMuZHdv CiAgICAtIFRoZSAuZHdwIHNlY3Rpb24gaWRlbnRpZmllciBlbmNvZGluZ3MgaGF2ZSBjaGFuZ2Vk LiAgVGhlIHRhYmxlIGJlbG93CiAgICAgIHNob3dzIHRoZSBvbGQgJiBuZXcgZW5jb2RpbmdzLiAg Tm90aWNlIHRoZSByZS1wdXJwb3Npbmcgb2YgNSwgNyAmIDgKICAgICAgaW4gcGFydGljdWxhci4K ClZhbCAgRFc0IHNlY3Rpb24gICAgICAgRFc0IHNlY3Rpb24gaWQgIERXNSBzZWN0aW9uICAgICAg ICAgRFc1IHNlY3Rpb24gaWQKLS0tIC0tLS0tLS0tLS0tLS0tLS0tICAtLS0tLS0tLS0tLS0tLSAg LS0tLS0tLS0tLS0tLS0tLS0gICAtLS0tLS0tLS0tLS0tLQogMSAgLmRlYnVnX2luZm8uZHdvICAg IERXX1NFQ1RfSU5GTyAgICAuZGVidWdfaW5mby5kd28gICAgIERXX1NFQ1RfSU5GTwogMiAgLmRl YnVnX3R5cGVzLmR3byAgIERXX1NFQ1RfVFlQRVMgICAgICAgICAtLSAgICAgICAgICAgICAgcmVz ZXJ2ZWQKIDMgIC5kZWJ1Z19hYmJyZXYuZHdvICBEV19TRUNUX0FCQlJFViAgLmRlYnVnX2FiYnJl di5kd28gICBEV19TRUNUX0FCQlJFVgogNCAgLmRlYnVnX2xpbmUuZHdvICAgIERXX1NFQ1RfTElO RSAgICAuZGVidWdfbGluZS5kd28gICAgIERXX1NFQ1RfTElORQogNSAgLmRlYnVnX2xvYy5kd28g ICAgIERXX1NFQ1RfTE9DICAgICAuZGVidWdfbG9jbGlzdHMuZHdvIERXX1NFQ1RfTE9DTElTVFMK IDYgIC5kZWJ1Z19zdHJfb2Zmc2V0cy5kd28gICAgICAgICAgICAgLmRlYnVnX3N0cl9vZmZzZXRz LmR3bwogICAgICAgICAgICAgICAgICAgICAgIERXX1NFQ1RfU1RSX09GRlNFVFMgICAgICAgICAg ICAgICAgIERXX1NFQ1RfU1RSX09GRlNFVFMKIDcgIC5kZWJ1Z19tYWNpbmZvLmR3byBEV19TRUNU X01BQ0lORk8gLmRlYnVnX21hY3JvLmR3byAgICBEV19TRUNUX01BQ1JPCiA4ICAuZGVidWdfbWFj cm8uZHdvICAgRFdfU0VDVF9NQUNSTyAgIC5kZWJ1Z19ybmdsaXN0cy5kd28gRFdfU0VDVF9STkdM SVNUUwotLS0KIGdkYi9kd2FyZjIvcmVhZC5jIHwgNDgwICsrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA0MjggaW5zZXJ0aW9ucygr KSwgNTIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZ2RiL2R3YXJmMi9yZWFkLmMgYi9nZGIv ZHdhcmYyL3JlYWQuYwppbmRleCBjZjNhNDJhYzNlLi5mZjFjMjViOTQ4IDEwMDY0NAotLS0gYS9n ZGIvZHdhcmYyL3JlYWQuYworKysgYi9nZGIvZHdhcmYyL3JlYWQuYwpAQCAtNzI4LDcgKzcyOCw3 IEBAIHN0cnVjdCBkd29fZmlsZQogICBnZGJfYmZkX3JlZl9wdHIgZGJmZDsKIAogICAvKiBUaGUg c2VjdGlvbnMgdGhhdCBtYWtlIHVwIHRoaXMgRFdPIGZpbGUuCi0gICAgIFJlbWVtYmVyIHRoYXQg Zm9yIHZpcnR1YWwgRFdPIGZpbGVzIGluIERXUCBWMiwgdGhlc2UgYXJlIHZpcnR1YWwKKyAgICAg UmVtZW1iZXIgdGhhdCBmb3IgdmlydHVhbCBEV08gZmlsZXMgaW4gRFdQIFYyIG9yIERXUCBWNSwg dGhlc2UgYXJlIHZpcnR1YWwKICAgICAgc2VjdGlvbnMgKGZvciBsYWNrIG9mIGEgYmV0dGVyIG5h bWUpLiAgKi8KICAgc3RydWN0IGR3b19zZWN0aW9ucyBzZWN0aW9ucyB7fTsKIApAQCAtNzQ3LDI1 ICs3NDcsMjcgQEAgc3RydWN0IGR3b19maWxlCiAKIHN0cnVjdCBkd3Bfc2VjdGlvbnMKIHsKLSAg LyogVGhlc2UgYXJlIHVzZWQgYnkgYm90aCBEV1AgdmVyc2lvbiAxIGFuZCAyLiAgKi8KKyAgLyog VGhlc2UgYXJlIHVzZWQgYnkgYWxsIERXUCB2ZXJzaW9ucyAoMSwgMiBhbmQgNSkuICAqLwogICBz dHJ1Y3QgZHdhcmYyX3NlY3Rpb25faW5mbyBzdHI7CiAgIHN0cnVjdCBkd2FyZjJfc2VjdGlvbl9p bmZvIGN1X2luZGV4OwogICBzdHJ1Y3QgZHdhcmYyX3NlY3Rpb25faW5mbyB0dV9pbmRleDsKIAot ICAvKiBUaGVzZSBhcmUgb25seSB1c2VkIGJ5IERXUCB2ZXJzaW9uIDIgZmlsZXMuCisgIC8qIFRo ZXNlIGFyZSBvbmx5IHVzZWQgYnkgRFdQIHZlcnNpb24gMiBhbmQgdmVyc2lvbiA1IGZpbGVzLgog ICAgICBJbiBEV1AgdmVyc2lvbiAxIHRoZSAuZGVidWdfaW5mby5kd28sIC5kZWJ1Z190eXBlcy5k d28sIGFuZCBvdGhlcgogICAgICBzZWN0aW9ucyBhcmUgcmVmZXJlbmNlZCBieSBzZWN0aW9uIG51 bWJlciwgYW5kIGFyZSBub3QgcmVjb3JkZWQgaGVyZS4KLSAgICAgSW4gRFdQIHZlcnNpb24gMiB0 aGVyZSBpcyBhdCBtb3N0IG9uZSBjb3B5IG9mIGFsbCB0aGVzZSBzZWN0aW9ucywgZWFjaAotICAg ICBzZWN0aW9uIGJlaW5nIChlZmZlY3RpdmVseSkgY29tcHJpc2VkIG9mIHRoZSBjb25jYXRlbmF0 aW9uIG9mIGFsbCBvZiB0aGUKLSAgICAgaW5kaXZpZHVhbCBzZWN0aW9ucyB0aGF0IGV4aXN0IGlu IHRoZSB2ZXJzaW9uIDEgZm9ybWF0LgorICAgICBJbiBEV1AgdmVyc2lvbiAyIG9yIDUgdGhlcmUg aXMgYXQgbW9zdCBvbmUgY29weSBvZiBhbGwgdGhlc2Ugc2VjdGlvbnMsCisgICAgIGVhY2ggc2Vj dGlvbiBiZWluZyAoZWZmZWN0aXZlbHkpIGNvbXByaXNlZCBvZiB0aGUgY29uY2F0ZW5hdGlvbiBv ZiBhbGwgb2YKKyAgICAgdGhlIGluZGl2aWR1YWwgc2VjdGlvbnMgdGhhdCBleGlzdCBpbiB0aGUg dmVyc2lvbiAxIGZvcm1hdC4KICAgICAgVG8ga2VlcCB0aGUgY29kZSBzaW1wbGUgd2UgdHJlYXQg ZWFjaCBvZiB0aGVzZSBjb25jYXRlbmF0ZWQgcGllY2VzIGFzIGEKICAgICAgc2VjdGlvbiBpdHNl bGYgKGEgdmlydHVhbCBzZWN0aW9uPykuICAqLwogICBzdHJ1Y3QgZHdhcmYyX3NlY3Rpb25faW5m byBhYmJyZXY7CiAgIHN0cnVjdCBkd2FyZjJfc2VjdGlvbl9pbmZvIGluZm87CiAgIHN0cnVjdCBk d2FyZjJfc2VjdGlvbl9pbmZvIGxpbmU7CiAgIHN0cnVjdCBkd2FyZjJfc2VjdGlvbl9pbmZvIGxv YzsKKyAgc3RydWN0IGR3YXJmMl9zZWN0aW9uX2luZm8gbG9jbGlzdHM7CiAgIHN0cnVjdCBkd2Fy ZjJfc2VjdGlvbl9pbmZvIG1hY2luZm87CiAgIHN0cnVjdCBkd2FyZjJfc2VjdGlvbl9pbmZvIG1h Y3JvOworICBzdHJ1Y3QgZHdhcmYyX3NlY3Rpb25faW5mbyBybmdsaXN0czsKICAgc3RydWN0IGR3 YXJmMl9zZWN0aW9uX2luZm8gc3RyX29mZnNldHM7CiAgIHN0cnVjdCBkd2FyZjJfc2VjdGlvbl9p bmZvIHR5cGVzOwogfTsKQEAgLTc4NiwxMiArNzg4LDEyIEBAIHN0cnVjdCB2aXJ0dWFsX3YxX2R3 b19zZWN0aW9ucwogICBzdHJ1Y3QgZHdhcmYyX3NlY3Rpb25faW5mbyBpbmZvX29yX3R5cGVzOwog fTsKIAotLyogU2ltaWxhciB0byB2aXJ0dWFsX3YxX2R3b19zZWN0aW9ucywgYnV0IGZvciBEV1Ag dmVyc2lvbiAyLgorLyogU2ltaWxhciB0byB2aXJ0dWFsX3YxX2R3b19zZWN0aW9ucywgYnV0IGZv ciBEV1AgdmVyc2lvbiAyIG9yIDUuCiAgICBJbiB2ZXJzaW9uIDIsIHRoZSBzZWN0aW9ucyBvZiB0 aGUgRFdPIGZpbGVzIGFyZSBjb25jYXRlbmF0ZWQgdG9nZXRoZXIKICAgIGFuZCBzdG9yZWQgaW4g b25lIHNlY3Rpb24gb2YgdGhhdCBuYW1lLiAgVGh1cyBlYWNoIEVMRiBzZWN0aW9uIGNvbnRhaW5z CiAgICBzZXZlcmFsICJ2aXJ0dWFsIiBzZWN0aW9ucy4gICovCiAKLXN0cnVjdCB2aXJ0dWFsX3Yy X2R3b19zZWN0aW9ucworc3RydWN0IHZpcnR1YWxfdjJfb3JfdjVfZHdvX3NlY3Rpb25zCiB7CiAg IGJmZF9zaXplX3R5cGUgYWJicmV2X29mZnNldDsKICAgYmZkX3NpemVfdHlwZSBhYmJyZXZfc2l6 ZTsKQEAgLTgwMiwxMiArODA0LDE4IEBAIHN0cnVjdCB2aXJ0dWFsX3YyX2R3b19zZWN0aW9ucwog ICBiZmRfc2l6ZV90eXBlIGxvY19vZmZzZXQ7CiAgIGJmZF9zaXplX3R5cGUgbG9jX3NpemU7CiAK KyAgYmZkX3NpemVfdHlwZSBsb2NsaXN0c19vZmZzZXQ7CisgIGJmZF9zaXplX3R5cGUgbG9jbGlz dHNfc2l6ZTsKKwogICBiZmRfc2l6ZV90eXBlIG1hY2luZm9fb2Zmc2V0OwogICBiZmRfc2l6ZV90 eXBlIG1hY2luZm9fc2l6ZTsKIAogICBiZmRfc2l6ZV90eXBlIG1hY3JvX29mZnNldDsKICAgYmZk X3NpemVfdHlwZSBtYWNyb19zaXplOwogCisgIGJmZF9zaXplX3R5cGUgcm5nbGlzdHNfb2Zmc2V0 OworICBiZmRfc2l6ZV90eXBlIHJuZ2xpc3RzX3NpemU7CisKICAgYmZkX3NpemVfdHlwZSBzdHJf b2Zmc2V0c19vZmZzZXQ7CiAgIGJmZF9zaXplX3R5cGUgc3RyX29mZnNldHNfc2l6ZTsKIApAQCAt ODQ1LDYgKzg1MywyMiBAQCBzdHJ1Y3QgZHdwX2hhc2hfdGFibGUKICAgICAgIGNvbnN0IGdkYl9i eXRlICpvZmZzZXRzOwogICAgICAgY29uc3QgZ2RiX2J5dGUgKnNpemVzOwogICAgIH0gdjI7Cisg ICAgc3RydWN0CisgICAgeworICAgICAgLyogVGhpcyBpcyBpbmRleGVkIGJ5IGNvbHVtbiBudW1i ZXIgYW5kIGdpdmVzIHRoZSBpZCBvZiB0aGUgc2VjdGlvbgorCSBpbiB0aGF0IGNvbHVtbi4gICov CisjZGVmaW5lIE1BWF9OUl9WNV9EV09fU0VDVElPTlMgXAorICAoMSAvKiAuZGVidWdfaW5mbyAq LyBcCisgICArIDEgLyogLmRlYnVnX2FiYnJldiAqLyBcCisgICArIDEgLyogLmRlYnVnX2xpbmUg Ki8gXAorICAgKyAxIC8qIC5kZWJ1Z19sb2NsaXN0cyAqLyBcCisgICArIDEgLyogLmRlYnVnX3N0 cl9vZmZzZXRzICovIFwKKyAgICsgMSAvKiAuZGVidWdfbWFjcm8gKi8gXAorICAgKyAxIC8qIC5k ZWJ1Z19ybmdsaXN0cyAqLykKKyAgICAgIGludCBzZWN0aW9uX2lkc1tNQVhfTlJfVjVfRFdPX1NF Q1RJT05TXTsKKyAgICAgIGNvbnN0IGdkYl9ieXRlICpvZmZzZXRzOworICAgICAgY29uc3QgZ2Ri X2J5dGUgKnNpemVzOworICAgIH0gdjU7CiAgIH0gc2VjdGlvbl9wb29sOwogfTsKIApAQCAtNjM5 Niw3ICs2NDIwLDggQEAgY3JlYXRlX2RlYnVnX3R5cGVfaGFzaF90YWJsZSAoZHdhcmYyX3Blcl9v YmpmaWxlICpwZXJfb2JqZmlsZSwKICAgICAgIC8qIFNraXAgZHVtbXkgdHlwZSB1bml0cy4gICov CiAgICAgICBpZiAocHRyID49IGluZm9fcHRyICsgbGVuZ3RoCiAJICB8fCBwZWVrX2FiYnJldl9j b2RlIChhYmZkLCBwdHIpID09IDAKLQkgIHx8IGhlYWRlci51bml0X3R5cGUgIT0gRFdfVVRfdHlw ZSkKKwkgIHx8IChoZWFkZXIudW5pdF90eXBlICE9IERXX1VUX3R5cGUKKwkgICAgICAmJiBoZWFk ZXIudW5pdF90eXBlICE9IERXX1VUX3NwbGl0X3R5cGUpKQogCXsKIAkgIGluZm9fcHRyICs9IGxl bmd0aDsKIAkgIGNvbnRpbnVlOwpAQCAtMTE1MTksNiArMTE1NDQsMTEgQEAgY3JlYXRlX2N1c19o YXNoX3RhYmxlIChkd2FyZjJfcGVyX29iamZpbGUgKnBlcl9vYmpmaWxlLAogCiAvKiBEV1AgZmls ZSAuZGVidWdfe2N1LHR1fV9pbmRleCBzZWN0aW9uIGZvcm1hdDoKICAgIFtyZWY6IGh0dHA6Ly9n Y2MuZ251Lm9yZy93aWtpL0RlYnVnRmlzc2lvbkRXUF0KKyAgIFtyZWY6IGh0dHA6Ly9kd2FyZnN0 ZC5vcmcvZG9jL0RXQVJGNS5wZGYsIHNlY3QgNy4zLjUgIkRXQVJGIFBhY2thZ2UgRmlsZXMiXQor CisgICBEV1AgVmVyc2lvbnMgMSAmIDIgYXJlIG9sZGVyLCBwcmUtc3RhbmRhcmQgZm9ybWF0IHZl cnNpb25zLiAgVGhlIGZpcnN0CisgICBvZmZpY2lhbGx5IHN0YW5kYXJkIERXUCBmb3JtYXQgd2Fz IHB1Ymxpc2hlZCB3aXRoIERXQVJGIHY1IGFuZCBpcyBjYWxsZWQKKyAgIFZlcnNpb24gNS4gIFRo ZXJlIGFyZSBubyB2ZXJzaW9ucyAzIG9yIDQuCiAKICAgIERXUCBWZXJzaW9uIDE6CiAKQEAgLTEx NTYzLDkgKzExNTkzLDkgQEAgY3JlYXRlX2N1c19oYXNoX3RhYmxlIChkd2FyZjJfcGVyX29iamZp bGUgKnBlcl9vYmpmaWxlLAogCiAgICAtLS0KIAotICAgRFdQIFZlcnNpb24gMjoKKyAgIERXUCBW ZXJzaW9ucyAyIGFuZCA1OgogCi0gICBEV1AgVmVyc2lvbiAyIGNvbWJpbmVzIGFsbCB0aGUgLmRl YnVnX2luZm8sIGV0Yy4gc2VjdGlvbnMgaW50byBvbmUsCisgICBEV1AgVmVyc2lvbnMgMiBhbmQg NSBjb21iaW5lIGFsbCB0aGUgLmRlYnVnX2luZm8sIGV0Yy4gc2VjdGlvbnMgaW50byBvbmUsCiAg ICBhbmQgdGhlIGVudHJpZXMgaW4gdGhlIGluZGV4IHRhYmxlcyBhcmUgbm93IG9mZnNldHMgaW50 byB0aGVzZSBzZWN0aW9ucy4KICAgIENVIG9mZnNldHMgYmVnaW4gYXQgMC4gIFRVIG9mZnNldHMg YmVnaW4gYXQgdGhlIHNpemUgb2YgdGhlIC5kZWJ1Z19pbmZvCiAgICBzZWN0aW9uLgpAQCAtMTE1 NzQsOCArMTE2MDQsOCBAQCBjcmVhdGVfY3VzX2hhc2hfdGFibGUgKGR3YXJmMl9wZXJfb2JqZmls ZSAqcGVyX29iamZpbGUsCiAgICAgSGVhZGVyCiAgICAgSGFzaCBUYWJsZSBvZiBTaWduYXR1cmVz ICAgZHdwX2hhc2hfdGFibGUuaGFzaF90YWJsZQogICAgIFBhcmFsbGVsIFRhYmxlIG9mIEluZGlj ZXMgIGR3cF9oYXNoX3RhYmxlLnVuaXRfdGFibGUKLSAgICBUYWJsZSBvZiBTZWN0aW9uIE9mZnNl dHMgICBkd3BfaGFzaF90YWJsZS52Mi57c2VjdGlvbl9pZHMsb2Zmc2V0c30KLSAgICBUYWJsZSBv ZiBTZWN0aW9uIFNpemVzICAgICBkd3BfaGFzaF90YWJsZS52Mi5zaXplcworICAgIFRhYmxlIG9m IFNlY3Rpb24gT2Zmc2V0cyAgIGR3cF9oYXNoX3RhYmxlLnt2Mnx2NX0ue3NlY3Rpb25faWRzLG9m ZnNldHN9CisgICAgVGFibGUgb2YgU2VjdGlvbiBTaXplcyAgICAgZHdwX2hhc2hfdGFibGUue3Yy fHY1fS5zaXplcwogCiAgICBUaGUgaW5kZXggc2VjdGlvbiBoZWFkZXIgY29uc2lzdHMgb2Y6CiAK QEAgLTExNTk4LDcgKzExNjI4LDcgQEAgY3JlYXRlX2N1c19oYXNoX3RhYmxlIChkd2FyZjJfcGVy X29iamZpbGUgKnBlcl9vYmpmaWxlLAogICAgRWFjaCByb3cgaW4gdGhlIGFycmF5IGlzIGluZGV4 ZWQgc3RhcnRpbmcgZnJvbSAwLiAgVGhlIGZpcnN0IHJvdyBwcm92aWRlcwogICAgYSBrZXkgdG8g dGhlIHJlbWFpbmluZyByb3dzOiBlYWNoIGNvbHVtbiBpbiB0aGlzIHJvdyBwcm92aWRlcyBhbiBp ZGVudGlmaWVyCiAgICBmb3IgYSBkZWJ1ZyBzZWN0aW9uLCBhbmQgdGhlIG9mZnNldHMgaW4gdGhl IHNhbWUgY29sdW1uIG9mIHN1YnNlcXVlbnQgcm93cwotICAgcmVmZXIgdG8gdGhhdCBzZWN0aW9u LiAgVGhlIHNlY3Rpb24gaWRlbnRpZmllcnMgYXJlOgorICAgcmVmZXIgdG8gdGhhdCBzZWN0aW9u LiAgVGhlIHNlY3Rpb24gaWRlbnRpZmllcnMgZm9yIFZlcnNpb24gMiBhcmU6CiAKICAgICBEV19T RUNUX0lORk8gICAgICAgICAxICAuZGVidWdfaW5mby5kd28KICAgICBEV19TRUNUX1RZUEVTICAg ICAgICAyICAuZGVidWdfdHlwZXMuZHdvCkBAIC0xMTYwOSw2ICsxMTYzOSwxNyBAQCBjcmVhdGVf Y3VzX2hhc2hfdGFibGUgKGR3YXJmMl9wZXJfb2JqZmlsZSAqcGVyX29iamZpbGUsCiAgICAgRFdf U0VDVF9NQUNJTkZPICAgICAgNyAgLmRlYnVnX21hY2luZm8uZHdvCiAgICAgRFdfU0VDVF9NQUNS TyAgICAgICAgOCAgLmRlYnVnX21hY3JvLmR3bwogCisgICBUaGUgc2VjdGlvbiBpZGVudGlmaWVy cyBmb3IgVmVyc2lvbiA1IGFyZToKKworICAgIERXX1NFQ1RfSU5GT19WNSAgICAgICAgIDEgIC5k ZWJ1Z19pbmZvLmR3bworICAgIERXX1NFQ1RfUkVTRVJWRURfVjUgICAgIDIgIC0tCisgICAgRFdf U0VDVF9BQkJSRVZfVjUgICAgICAgMyAgLmRlYnVnX2FiYnJldi5kd28KKyAgICBEV19TRUNUX0xJ TkVfVjUgICAgICAgICA0ICAuZGVidWdfbGluZS5kd28KKyAgICBEV19TRUNUX0xPQ0xJU1RTX1Y1 ICAgICA1ICAuZGVidWdfbG9jbGlzdHMuZHdvCisgICAgRFdfU0VDVF9TVFJfT0ZGU0VUU19WNSAg NiAgLmRlYnVnX3N0cl9vZmZzZXRzLmR3bworICAgIERXX1NFQ1RfTUFDUk9fVjUgICAgICAgIDcg IC5kZWJ1Z19tYWNyby5kd28KKyAgICBEV19TRUNUX1JOR0xJU1RTX1Y1ICAgICA4ICAuZGVidWdf cm5nbGlzdHMuZHdvCisKICAgIFRoZSBvZmZzZXRzIHByb3ZpZGVkIGJ5IHRoZSBDVSBhbmQgVFUg aW5kZXggc2VjdGlvbnMgYXJlIHRoZSBiYXNlIG9mZnNldHMKICAgIGZvciB0aGUgY29udHJpYnV0 aW9ucyBtYWRlIGJ5IGVhY2ggQ1Ugb3IgVFUgdG8gdGhlIGNvcnJlc3BvbmRpbmcgc2VjdGlvbgog ICAgaW4gdGhlIHBhY2thZ2UgZmlsZS4gIEVhY2ggQ1UgYW5kIFRVIGhlYWRlciBjb250YWlucyBh biBhYmJyZXZfb2Zmc2V0CkBAIC0xMTY3Nyw5ICsxMTcxOCwxMiBAQCBjcmVhdGVfZHdwX2hhc2hf dGFibGUgKGR3YXJmMl9wZXJfb2JqZmlsZSAqcGVyX29iamZpbGUsCiAgIGluZGV4X3B0ciA9IGlu ZGV4LT5idWZmZXI7CiAgIGluZGV4X2VuZCA9IGluZGV4X3B0ciArIGluZGV4LT5zaXplOwogCisg IC8qIEZvciBWZXJzaW9uIDUsIHRoZSB2ZXJzaW9uIGlzIHJlYWxseSAyIGJ5dGVzIG9mIGRhdGEg JiAyIGJ5dGVzIG9mIHBhZGRpbmcuCisgICAgIEZvciBub3cgaXQncyBzYWZlIHRvIGp1c3QgcmVh ZCA0IGJ5dGVzIChwYXJ0aWN1bGFybHkgYXMgaXQncyBkaWZmaWN1bHQgdG8KKyAgICAgdGVsbCBp ZiB5b3UncmUgZGVhbGluZyB3aXRoIFZlcnNpb24gNSBiZWZvcmUgeW91J3ZlIHJlYWQgdGhlIHZl cnNpb24pLiAgICovCiAgIHZlcnNpb24gPSByZWFkXzRfYnl0ZXMgKGRiZmQsIGluZGV4X3B0cik7 CiAgIGluZGV4X3B0ciArPSA0OwotICBpZiAodmVyc2lvbiA9PSAyKQorICBpZiAodmVyc2lvbiA9 PSAyIHx8IHZlcnNpb24gPT0gNSkKICAgICBucl9jb2x1bW5zID0gcmVhZF80X2J5dGVzIChkYmZk LCBpbmRleF9wdHIpOwogICBlbHNlCiAgICAgbnJfY29sdW1ucyA9IDA7CkBAIC0xMTY4OSw3ICsx MTczMyw3IEBAIGNyZWF0ZV9kd3BfaGFzaF90YWJsZSAoZHdhcmYyX3Blcl9vYmpmaWxlICpwZXJf b2JqZmlsZSwKICAgbnJfc2xvdHMgPSByZWFkXzRfYnl0ZXMgKGRiZmQsIGluZGV4X3B0cik7CiAg IGluZGV4X3B0ciArPSA0OwogCi0gIGlmICh2ZXJzaW9uICE9IDEgJiYgdmVyc2lvbiAhPSAyKQor ICBpZiAodmVyc2lvbiAhPSAxICYmIHZlcnNpb24gIT0gMiAmJiB2ZXJzaW9uICE9IDUpCiAgICAg ewogICAgICAgZXJyb3IgKF8oIkR3YXJmIEVycm9yOiB1bnN1cHBvcnRlZCBEV1AgZmlsZSB2ZXJz aW9uICglcykiCiAJICAgICAgICIgW2luIG1vZHVsZSAlc10iKSwKQEAgLTExNzEyLDExICsxMTc1 NiwxMyBAQCBjcmVhdGVfZHdwX2hhc2hfdGFibGUgKGR3YXJmMl9wZXJfb2JqZmlsZSAqcGVyX29i amZpbGUsCiAKICAgLyogRXhpdCBlYXJseSBpZiB0aGUgdGFibGUgaXMgZW1wdHkuICAqLwogICBp ZiAobnJfc2xvdHMgPT0gMCB8fCBucl91bml0cyA9PSAwCi0gICAgICB8fCAodmVyc2lvbiA9PSAy ICYmIG5yX2NvbHVtbnMgPT0gMCkpCisgICAgICB8fCAodmVyc2lvbiA9PSAyICYmIG5yX2NvbHVt bnMgPT0gMCkKKyAgICAgIHx8ICh2ZXJzaW9uID09IDUgJiYgbnJfY29sdW1ucyA9PSAwKSkKICAg ICB7CiAgICAgICAvKiBBbGwgbXVzdCBiZSB6ZXJvLiAgKi8KICAgICAgIGlmIChucl9zbG90cyAh PSAwIHx8IG5yX3VuaXRzICE9IDAKLQkgIHx8ICh2ZXJzaW9uID09IDIgJiYgbnJfY29sdW1ucyAh PSAwKSkKKwkgIHx8ICh2ZXJzaW9uID09IDIgJiYgbnJfY29sdW1ucyAhPSAwKQorCSAgfHwgKHZl cnNpb24gPT0gNSAmJiBucl9jb2x1bW5zICE9IDApKQogCXsKIAkgIGNvbXBsYWludCAoXygiRW1w dHkgRFdQIGJ1dCBucl9zbG90cyxucl91bml0cyxucl9jb2x1bW5zIG5vdCIKIAkJICAgICAgICIg YWxsIHplcm8gW2luIG1vZHVsZXMgJXNdIiksCkBAIC0xMTczMiw3ICsxMTc3OCw3IEBAIGNyZWF0 ZV9kd3BfaGFzaF90YWJsZSAoZHdhcmYyX3Blcl9vYmpmaWxlICpwZXJfb2JqZmlsZSwKICAgICAg IC8qIEl0J3MgaGFyZGVyIHRvIGRlY2lkZSB3aGV0aGVyIHRoZSBzZWN0aW9uIGlzIHRvbyBzbWFs bCBpbiB2MS4KIAkgVjEgaXMgZGVwcmVjYXRlZCBhbnl3YXkgc28gd2UgcHVudC4gICovCiAgICAg fQotICBlbHNlCisgIGVsc2UgaWYgKHZlcnNpb24gPT0gMikKICAgICB7CiAgICAgICBjb25zdCBn ZGJfYnl0ZSAqaWRzX3B0ciA9IGh0YWItPnVuaXRfdGFibGUgKyBzaXplb2YgKHVpbnQzMl90KSAq IG5yX3Nsb3RzOwogICAgICAgaW50ICppZHMgPSBodGFiLT5zZWN0aW9uX3Bvb2wudjIuc2VjdGlv bl9pZHM7CkBAIC0xMTgwMyw2ICsxMTg0OSw3NCBAQCBjcmVhdGVfZHdwX2hhc2hfdGFibGUgKGR3 YXJmMl9wZXJfb2JqZmlsZSAqcGVyX29iamZpbGUsCiAJCSBkd3BfZmlsZS0+bmFtZSk7CiAJfQog ICAgIH0KKyAgZWxzZSAvKiB2ZXJzaW9uID09IDUgICovCisgICAgeworICAgICAgY29uc3QgZ2Ri X2J5dGUgKmlkc19wdHIgPSBodGFiLT51bml0X3RhYmxlICsgc2l6ZW9mICh1aW50MzJfdCkgKiBu cl9zbG90czsKKyAgICAgIGludCAqaWRzID0gaHRhYi0+c2VjdGlvbl9wb29sLnY1LnNlY3Rpb25f aWRzOworICAgICAgc2l6ZV90IHNpemVvZl9pZHMgPSBzaXplb2YgKGh0YWItPnNlY3Rpb25fcG9v bC52NS5zZWN0aW9uX2lkcyk7CisgICAgICAvKiBSZXZlcnNlIG1hcCBmb3IgZXJyb3IgY2hlY2tp bmcuICAqLworICAgICAgaW50IGlkc19zZWVuW0RXX1NFQ1RfTUFYX1Y1ICsgMV07CisKKyAgICAg IGlmIChucl9jb2x1bW5zIDwgMikKKwl7CisJICBlcnJvciAoXygiRHdhcmYgRXJyb3I6IGJhZCBE V1AgaGFzaCB0YWJsZSwgdG9vIGZldyBjb2x1bW5zIgorCQkgICAiIGluIHNlY3Rpb24gdGFibGUg W2luIG1vZHVsZSAlc10iKSwKKwkJIGR3cF9maWxlLT5uYW1lKTsKKwl9CisgICAgICBpZiAobnJf Y29sdW1ucyA+IE1BWF9OUl9WNV9EV09fU0VDVElPTlMpCisJeworCSAgZXJyb3IgKF8oIkR3YXJm IEVycm9yOiBiYWQgRFdQIGhhc2ggdGFibGUsIHRvbyBtYW55IGNvbHVtbnMiCisJCSAgICIgaW4g c2VjdGlvbiB0YWJsZSBbaW4gbW9kdWxlICVzXSIpLAorCQkgZHdwX2ZpbGUtPm5hbWUpOworCX0K KyAgICAgIG1lbXNldCAoaWRzLCAyNTUsIHNpemVvZl9pZHMpOworICAgICAgbWVtc2V0IChpZHNf c2VlbiwgMjU1LCBzaXplb2YgKGlkc19zZWVuKSk7CisgICAgICBmb3IgKGludCBpID0gMDsgaSA8 IG5yX2NvbHVtbnM7ICsraSkKKwl7CisJICBpbnQgaWQgPSByZWFkXzRfYnl0ZXMgKGRiZmQsIGlk c19wdHIgKyBpICogc2l6ZW9mICh1aW50MzJfdCkpOworCisJICBpZiAoaWQgPCBEV19TRUNUX01J TiB8fCBpZCA+IERXX1NFQ1RfTUFYX1Y1KQorCSAgICB7CisJICAgICAgZXJyb3IgKF8oIkR3YXJm IEVycm9yOiBiYWQgRFdQIGhhc2ggdGFibGUsIGJhZCBzZWN0aW9uIGlkICVkIgorCQkgICAgICAg IiBpbiBzZWN0aW9uIHRhYmxlIFtpbiBtb2R1bGUgJXNdIiksCisJCSAgICAgaWQsIGR3cF9maWxl LT5uYW1lKTsKKwkgICAgfQorCSAgaWYgKGlkc19zZWVuW2lkXSAhPSAtMSkKKwkgICAgeworCSAg ICAgIGVycm9yIChfKCJEd2FyZiBFcnJvcjogYmFkIERXUCBoYXNoIHRhYmxlLCBkdXBsaWNhdGUg c2VjdGlvbiIKKwkJICAgICAgICIgaWQgJWQgaW4gc2VjdGlvbiB0YWJsZSBbaW4gbW9kdWxlICVz XSIpLAorCQkgICAgIGlkLCBkd3BfZmlsZS0+bmFtZSk7CisJICAgIH0KKwkgIGlkc19zZWVuW2lk XSA9IGk7CisJICBpZHNbaV0gPSBpZDsKKwl9CisgICAgICAvKiBNdXN0IGhhdmUgc2VlbiBhbiBp bmZvIHNlY3Rpb24uICAqLworICAgICAgaWYgKGlkc19zZWVuW0RXX1NFQ1RfSU5GT19WNV0gPT0g LTEpCisJeworCSAgZXJyb3IgKF8oIkR3YXJmIEVycm9yOiBiYWQgRFdQIGhhc2ggdGFibGUsIG1p c3NpbmcvZHVwbGljYXRlIgorCQkgICAiIERXTyBpbmZvL3R5cGVzIHNlY3Rpb24gW2luIG1vZHVs ZSAlc10iKSwKKwkJIGR3cF9maWxlLT5uYW1lKTsKKwl9CisgICAgICAvKiBNdXN0IGhhdmUgYW4g YWJicmV2IHNlY3Rpb24uICAqLworICAgICAgaWYgKGlkc19zZWVuW0RXX1NFQ1RfQUJCUkVWX1Y1 XSA9PSAtMSkKKwl7CisJICBlcnJvciAoXygiRHdhcmYgRXJyb3I6IGJhZCBEV1AgaGFzaCB0YWJs ZSwgbWlzc2luZyBEV08gYWJicmV2IgorCQkgICAiIHNlY3Rpb24gW2luIG1vZHVsZSAlc10iKSwK KwkJIGR3cF9maWxlLT5uYW1lKTsKKwl9CisgICAgICBodGFiLT5zZWN0aW9uX3Bvb2wudjUub2Zm c2V0cyA9IGlkc19wdHIgKyBzaXplb2YgKHVpbnQzMl90KSAqIG5yX2NvbHVtbnM7CisgICAgICBo dGFiLT5zZWN0aW9uX3Bvb2wudjUuc2l6ZXMKKwk9IGh0YWItPnNlY3Rpb25fcG9vbC52NS5vZmZz ZXRzICsgKHNpemVvZiAodWludDMyX3QpCisJCQkJCSAqIG5yX3VuaXRzICogbnJfY29sdW1ucyk7 CisgICAgICBpZiAoKGh0YWItPnNlY3Rpb25fcG9vbC52NS5zaXplcyArIChzaXplb2YgKHVpbnQz Ml90KQorCQkJCQkgICogbnJfdW5pdHMgKiBucl9jb2x1bW5zKSkKKwkgID4gaW5kZXhfZW5kKQor CXsKKwkgIGVycm9yIChfKCJEd2FyZiBFcnJvcjogRFdQIGluZGV4IHNlY3Rpb24gaXMgY29ycnVw dCAodG9vIHNtYWxsKSIKKwkJICAgIiBbaW4gbW9kdWxlICVzXSIpLAorCQkgZHdwX2ZpbGUtPm5h bWUpOworCX0KKyAgICB9CiAKICAgcmV0dXJuIGh0YWI7CiB9CkBAIC0xMjA0MiwxNSArMTIxNTYs MTUgQEAgY3JlYXRlX2R3b191bml0X2luX2R3cF92MSAoZHdhcmYyX3Blcl9vYmpmaWxlICpwZXJf b2JqZmlsZSwKICAgcmV0dXJuIGR3b191bml0OwogfQogCi0vKiBTdWJyb3V0aW5lIG9mIGNyZWF0 ZV9kd29fdW5pdF9pbl9kd3BfdjIgdG8gc2ltcGxpZnkgaXQuCi0gICBHaXZlbiBhIHBvaW50ZXIg dG8gdGhlIGNvbnRhaW5pbmcgc2VjdGlvbiBTRUNUSU9OLCBhbmQgT0ZGU0VULFNJWkUgb2YgdGhl Ci0gICBwaWVjZSB3aXRoaW4gdGhhdCBzZWN0aW9uIHVzZWQgYnkgYSBUVS9DVSwgcmV0dXJuIGEg dmlydHVhbCBzZWN0aW9uCi0gICBvZiBqdXN0IHRoYXQgcGllY2UuICAqLworLyogU3Vicm91dGlu ZSBvZiBjcmVhdGVfZHdvX3VuaXRfaW5fZHdwX3YyIGFuZCBjcmVhdGVfZHdvX3VuaXRfaW5fZHdw X3Y1IHRvCisgICBzaW1wbGlmeSB0aGVtLiAgR2l2ZW4gYSBwb2ludGVyIHRvIHRoZSBjb250YWlu aW5nIHNlY3Rpb24gU0VDVElPTiwgYW5kCisgICBPRkZTRVQsU0laRSBvZiB0aGUgcGllY2Ugd2l0 aGluIHRoYXQgc2VjdGlvbiB1c2VkIGJ5IGEgVFUvQ1UsIHJldHVybiBhCisgICB2aXJ0dWFsIHNl Y3Rpb24gb2YganVzdCB0aGF0IHBpZWNlLiAgKi8KIAogc3RhdGljIHN0cnVjdCBkd2FyZjJfc2Vj dGlvbl9pbmZvCi1jcmVhdGVfZHdwX3YyX3NlY3Rpb24gKGR3YXJmMl9wZXJfb2JqZmlsZSAqcGVy X29iamZpbGUsCi0JCSAgICAgICBzdHJ1Y3QgZHdhcmYyX3NlY3Rpb25faW5mbyAqc2VjdGlvbiwK LQkJICAgICAgIGJmZF9zaXplX3R5cGUgb2Zmc2V0LCBiZmRfc2l6ZV90eXBlIHNpemUpCitjcmVh dGVfZHdwX3YyX29yX3Y1X3NlY3Rpb24gKGR3YXJmMl9wZXJfb2JqZmlsZSAqcGVyX29iamZpbGUs CisJCQkgICAgIHN0cnVjdCBkd2FyZjJfc2VjdGlvbl9pbmZvICpzZWN0aW9uLAorCQkJICAgICBi ZmRfc2l6ZV90eXBlIG9mZnNldCwgYmZkX3NpemVfdHlwZSBzaXplKQogewogICBzdHJ1Y3QgZHdh cmYyX3NlY3Rpb25faW5mbyByZXN1bHQ7CiAgIGFzZWN0aW9uICpzZWN0cDsKQEAgLTEyMDczLDcg KzEyMTg3LDcgQEAgY3JlYXRlX2R3cF92Ml9zZWN0aW9uIChkd2FyZjJfcGVyX29iamZpbGUgKnBl cl9vYmpmaWxlLAogICBpZiAoc2VjdHAgPT0gTlVMTAogICAgICAgfHwgb2Zmc2V0ICsgc2l6ZSA+ IGJmZF9zZWN0aW9uX3NpemUgKHNlY3RwKSkKICAgICB7Ci0gICAgICBlcnJvciAoXygiRHdhcmYg RXJyb3I6IEJhZCBEV1AgVjIgc2VjdGlvbiBpbmZvLCBkb2Vzbid0IGZpdCIKKyAgICAgIGVycm9y IChfKCJEd2FyZiBFcnJvcjogQmFkIERXUCBWMiBvciBWNSBzZWN0aW9uIGluZm8sIGRvZXNuJ3Qg Zml0IgogCSAgICAgICAiIGluIHNlY3Rpb24gJXMgW2luIG1vZHVsZSAlc10iKSwKIAkgICAgIHNl Y3RwID8gYmZkX3NlY3Rpb25fbmFtZSAoc2VjdHApIDogIjx1bmtub3duPiIsCiAJICAgICBvYmpm aWxlX25hbWUgKHBlcl9vYmpmaWxlLT5vYmpmaWxlKSk7CkBAIC0xMjEwMiw3ICsxMjIxNiw3IEBA IGNyZWF0ZV9kd29fdW5pdF9pbl9kd3BfdjIgKGR3YXJmMl9wZXJfb2JqZmlsZSAqcGVyX29iamZp bGUsCiAgIGNvbnN0IGNoYXIgKmtpbmQgPSBpc19kZWJ1Z190eXBlcyA/ICJUVSIgOiAiQ1UiOwog ICBzdHJ1Y3QgZHdvX2ZpbGUgKmR3b19maWxlOwogICBzdHJ1Y3QgZHdvX3VuaXQgKmR3b191bml0 OwotICBzdHJ1Y3QgdmlydHVhbF92Ml9kd29fc2VjdGlvbnMgc2VjdGlvbnM7CisgIHN0cnVjdCB2 aXJ0dWFsX3YyX29yX3Y1X2R3b19zZWN0aW9ucyBzZWN0aW9uczsKICAgdm9pZCAqKmR3b19maWxl X3Nsb3Q7CiAgIGludCBpOwogCkBAIC0xMjE5OCwyNSArMTIzMTIsMjkgQEAgY3JlYXRlX2R3b191 bml0X2luX2R3cF92MiAoZHdhcmYyX3Blcl9vYmpmaWxlICpwZXJfb2JqZmlsZSwKICAgICAgIGR3 b19maWxlLT5kd29fbmFtZSA9IHBlcl9vYmpmaWxlLT5vYmpmaWxlLT5pbnRlcm4gKHZpcnR1YWxf ZHdvX25hbWUpOwogICAgICAgZHdvX2ZpbGUtPmNvbXBfZGlyID0gY29tcF9kaXI7CiAgICAgICBk d29fZmlsZS0+c2VjdGlvbnMuYWJicmV2ID0KLQljcmVhdGVfZHdwX3YyX3NlY3Rpb24gKHBlcl9v YmpmaWxlLCAmZHdwX2ZpbGUtPnNlY3Rpb25zLmFiYnJldiwKLQkJCSAgICAgICBzZWN0aW9ucy5h YmJyZXZfb2Zmc2V0LCBzZWN0aW9ucy5hYmJyZXZfc2l6ZSk7CisJY3JlYXRlX2R3cF92Ml9vcl92 NV9zZWN0aW9uIChwZXJfb2JqZmlsZSwgJmR3cF9maWxlLT5zZWN0aW9ucy5hYmJyZXYsCisJCQkJ ICAgICBzZWN0aW9ucy5hYmJyZXZfb2Zmc2V0LAorCQkJCSAgICAgc2VjdGlvbnMuYWJicmV2X3Np emUpOwogICAgICAgZHdvX2ZpbGUtPnNlY3Rpb25zLmxpbmUgPQotCWNyZWF0ZV9kd3BfdjJfc2Vj dGlvbiAocGVyX29iamZpbGUsICZkd3BfZmlsZS0+c2VjdGlvbnMubGluZSwKLQkJCSAgICAgICBz ZWN0aW9ucy5saW5lX29mZnNldCwgc2VjdGlvbnMubGluZV9zaXplKTsKKwljcmVhdGVfZHdwX3Yy X29yX3Y1X3NlY3Rpb24gKHBlcl9vYmpmaWxlLCAmZHdwX2ZpbGUtPnNlY3Rpb25zLmxpbmUsCisJ CQkJICAgICBzZWN0aW9ucy5saW5lX29mZnNldCwKKwkJCQkgICAgIHNlY3Rpb25zLmxpbmVfc2l6 ZSk7CiAgICAgICBkd29fZmlsZS0+c2VjdGlvbnMubG9jID0KLQljcmVhdGVfZHdwX3YyX3NlY3Rp b24gKHBlcl9vYmpmaWxlLCAmZHdwX2ZpbGUtPnNlY3Rpb25zLmxvYywKLQkJCSAgICAgICBzZWN0 aW9ucy5sb2Nfb2Zmc2V0LCBzZWN0aW9ucy5sb2Nfc2l6ZSk7CisJY3JlYXRlX2R3cF92Ml9vcl92 NV9zZWN0aW9uIChwZXJfb2JqZmlsZSwgJmR3cF9maWxlLT5zZWN0aW9ucy5sb2MsCisJCQkJICAg ICBzZWN0aW9ucy5sb2Nfb2Zmc2V0LCBzZWN0aW9ucy5sb2Nfc2l6ZSk7CiAgICAgICBkd29fZmls ZS0+c2VjdGlvbnMubWFjaW5mbyA9Ci0JY3JlYXRlX2R3cF92Ml9zZWN0aW9uIChwZXJfb2JqZmls ZSwgJmR3cF9maWxlLT5zZWN0aW9ucy5tYWNpbmZvLAotCQkJICAgICAgIHNlY3Rpb25zLm1hY2lu Zm9fb2Zmc2V0LCBzZWN0aW9ucy5tYWNpbmZvX3NpemUpOworCWNyZWF0ZV9kd3BfdjJfb3JfdjVf c2VjdGlvbiAocGVyX29iamZpbGUsICZkd3BfZmlsZS0+c2VjdGlvbnMubWFjaW5mbywKKwkJCQkg ICAgIHNlY3Rpb25zLm1hY2luZm9fb2Zmc2V0LAorCQkJCSAgICAgc2VjdGlvbnMubWFjaW5mb19z aXplKTsKICAgICAgIGR3b19maWxlLT5zZWN0aW9ucy5tYWNybyA9Ci0JY3JlYXRlX2R3cF92Ml9z ZWN0aW9uIChwZXJfb2JqZmlsZSwgJmR3cF9maWxlLT5zZWN0aW9ucy5tYWNybywKLQkJCSAgICAg ICBzZWN0aW9ucy5tYWNyb19vZmZzZXQsIHNlY3Rpb25zLm1hY3JvX3NpemUpOworCWNyZWF0ZV9k d3BfdjJfb3JfdjVfc2VjdGlvbiAocGVyX29iamZpbGUsICZkd3BfZmlsZS0+c2VjdGlvbnMubWFj cm8sCisJCQkJICAgICBzZWN0aW9ucy5tYWNyb19vZmZzZXQsCisJCQkJICAgICBzZWN0aW9ucy5t YWNyb19zaXplKTsKICAgICAgIGR3b19maWxlLT5zZWN0aW9ucy5zdHJfb2Zmc2V0cyA9Ci0JY3Jl YXRlX2R3cF92Ml9zZWN0aW9uIChwZXJfb2JqZmlsZSwKLQkJCSAgICAgICAmZHdwX2ZpbGUtPnNl Y3Rpb25zLnN0cl9vZmZzZXRzLAotCQkJICAgICAgIHNlY3Rpb25zLnN0cl9vZmZzZXRzX29mZnNl dCwKLQkJCSAgICAgICBzZWN0aW9ucy5zdHJfb2Zmc2V0c19zaXplKTsKKwljcmVhdGVfZHdwX3Yy X29yX3Y1X3NlY3Rpb24gKHBlcl9vYmpmaWxlLAorCQkJCSAgICAgJmR3cF9maWxlLT5zZWN0aW9u cy5zdHJfb2Zmc2V0cywKKwkJCQkgICAgIHNlY3Rpb25zLnN0cl9vZmZzZXRzX29mZnNldCwKKwkJ CQkgICAgIHNlY3Rpb25zLnN0cl9vZmZzZXRzX3NpemUpOwogICAgICAgLyogVGhlICJzdHIiIHNl Y3Rpb24gaXMgZ2xvYmFsIHRvIHRoZSBlbnRpcmUgRFdQIGZpbGUuICAqLwogICAgICAgZHdvX2Zp bGUtPnNlY3Rpb25zLnN0ciA9IGR3cF9maWxlLT5zZWN0aW9ucy5zdHI7CiAgICAgICAvKiBUaGUg aW5mbyBvciB0eXBlcyBzZWN0aW9uIGlzIGFzc2lnbmVkIGJlbG93IHRvIGR3b191bml0LApAQCAt MTIyNDMsMTIgKzEyMzYxLDE5NSBAQCBjcmVhdGVfZHdvX3VuaXRfaW5fZHdwX3YyIChkd2FyZjJf cGVyX29iamZpbGUgKnBlcl9vYmpmaWxlLAogICBkd29fdW5pdC0+c2lnbmF0dXJlID0gc2lnbmF0 dXJlOwogICBkd29fdW5pdC0+c2VjdGlvbiA9CiAgICAgWE9CTkVXICgmcGVyX29iamZpbGUtPnBl cl9iZmQtPm9ic3RhY2ssIHN0cnVjdCBkd2FyZjJfc2VjdGlvbl9pbmZvKTsKLSAgKmR3b191bml0 LT5zZWN0aW9uID0gY3JlYXRlX2R3cF92Ml9zZWN0aW9uIChwZXJfb2JqZmlsZSwKLQkJCQkJICAg ICAgaXNfZGVidWdfdHlwZXMKLQkJCQkJICAgICAgPyAmZHdwX2ZpbGUtPnNlY3Rpb25zLnR5cGVz Ci0JCQkJCSAgICAgIDogJmR3cF9maWxlLT5zZWN0aW9ucy5pbmZvLAotCQkJCQkgICAgICBzZWN0 aW9ucy5pbmZvX29yX3R5cGVzX29mZnNldCwKLQkJCQkJICAgICAgc2VjdGlvbnMuaW5mb19vcl90 eXBlc19zaXplKTsKKyAgKmR3b191bml0LT5zZWN0aW9uID0gY3JlYXRlX2R3cF92Ml9vcl92NV9z ZWN0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgKHBlcl9vYmpmaWxlLAorCQkJICBpc19k ZWJ1Z190eXBlcworCQkJICA/ICZkd3BfZmlsZS0+c2VjdGlvbnMudHlwZXMKKwkJCSAgOiAmZHdw X2ZpbGUtPnNlY3Rpb25zLmluZm8sCisJCQkgIHNlY3Rpb25zLmluZm9fb3JfdHlwZXNfb2Zmc2V0 LAorCQkJICBzZWN0aW9ucy5pbmZvX29yX3R5cGVzX3NpemUpOworICAvKiBkd29fdW5pdC0+e29m ZnNldCxsZW5ndGgsdHlwZV9vZmZzZXRfaW5fdHV9IGFyZSBzZXQgbGF0ZXIuICAqLworCisgIHJl dHVybiBkd29fdW5pdDsKK30KKworLyogQ3JlYXRlIGEgZHdvX3VuaXQgb2JqZWN0IGZvciB0aGUg RFdPIHVuaXQgd2l0aCBzaWduYXR1cmUgU0lHTkFUVVJFLgorICAgVU5JVF9JTkRFWCBpcyB0aGUg aW5kZXggb2YgdGhlIERXTyB1bml0IGluIHRoZSBEV1AgaGFzaCB0YWJsZS4KKyAgIENPTVBfRElS IGlzIHRoZSBEV19BVF9jb21wX2RpciBhdHRyaWJ1dGUgb2YgdGhlIHJlZmVyZW5jaW5nIENVLgor ICAgVGhpcyBpcyBmb3IgRFdQIHZlcnNpb24gNSBmaWxlcy4gICovCisKK3N0YXRpYyBzdHJ1Y3Qg ZHdvX3VuaXQgKgorY3JlYXRlX2R3b191bml0X2luX2R3cF92NSAoZHdhcmYyX3Blcl9vYmpmaWxl ICpwZXJfb2JqZmlsZSwKKwkJCSAgIHN0cnVjdCBkd3BfZmlsZSAqZHdwX2ZpbGUsCisJCQkgICB1 aW50MzJfdCB1bml0X2luZGV4LAorCQkJICAgY29uc3QgY2hhciAqY29tcF9kaXIsCisJCQkgICBV TE9OR0VTVCBzaWduYXR1cmUsIGludCBpc19kZWJ1Z190eXBlcykKK3sKKyAgY29uc3Qgc3RydWN0 IGR3cF9oYXNoX3RhYmxlICpkd3BfaHRhYgorICAgID0gaXNfZGVidWdfdHlwZXMgPyBkd3BfZmls ZS0+dHVzIDogZHdwX2ZpbGUtPmN1czsKKyAgYmZkICpkYmZkID0gZHdwX2ZpbGUtPmRiZmQuZ2V0 ICgpOworICBjb25zdCBjaGFyICpraW5kID0gaXNfZGVidWdfdHlwZXMgPyAiVFUiIDogIkNVIjsK KyAgc3RydWN0IGR3b19maWxlICpkd29fZmlsZTsKKyAgc3RydWN0IGR3b191bml0ICpkd29fdW5p dDsKKyAgc3RydWN0IHZpcnR1YWxfdjJfb3JfdjVfZHdvX3NlY3Rpb25zIHNlY3Rpb25zIHt9Owor ICB2b2lkICoqZHdvX2ZpbGVfc2xvdDsKKworICBnZGJfYXNzZXJ0IChkd3BfZmlsZS0+dmVyc2lv biA9PSA1KTsKKworICBpZiAoZHdhcmZfcmVhZF9kZWJ1ZykKKyAgICB7CisgICAgICBmcHJpbnRm X3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csICJSZWFkaW5nICVzICVzLyVzIGluIERXUCBWNSBmaWxl OiAlc1xuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAga2luZCwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgcHVsb25nZXN0ICh1bml0X2luZGV4KSwgaGV4X3N0cmluZyAoc2lnbmF0dXJl KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZHdwX2ZpbGUtPm5hbWUpOworICAgIH0KKwor ICAvKiBGZXRjaCB0aGUgc2VjdGlvbiBvZmZzZXRzIG9mIHRoaXMgRFdPIHVuaXQuICAqLworCisg IC8qICBtZW1zZXQgKCZzZWN0aW9ucywgMCwgc2l6ZW9mIChzZWN0aW9ucykpOyAqLworCisgIGZv ciAoaW50IGkgPSAwOyBpIDwgZHdwX2h0YWItPm5yX2NvbHVtbnM7ICsraSkKKyAgICB7CisgICAg ICB1aW50MzJfdCBvZmZzZXQgPSByZWFkXzRfYnl0ZXMgKGRiZmQsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGR3cF9odGFiLT5zZWN0aW9uX3Bvb2wudjUub2Zmc2V0cwor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICgoKHVuaXRfaW5kZXggLSAx KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBkd3BfaHRhYi0+ bnJfY29sdW1ucworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBp KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHNpemVvZiAodWlu dDMyX3QpKSk7CisgICAgICB1aW50MzJfdCBzaXplID0gcmVhZF80X2J5dGVzIChkYmZkLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHdwX2h0YWItPnNlY3Rpb25fcG9vbC52 NS5zaXplcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAoKCh1bml0X2lu ZGV4IC0gMSkgKiBkd3BfaHRhYi0+bnJfY29sdW1ucworICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICsgaSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICogc2l6ZW9mICh1aW50MzJfdCkpKTsKKworICAgICAgc3dpdGNoIChkd3BfaHRhYi0+c2Vj dGlvbl9wb29sLnY1LnNlY3Rpb25faWRzW2ldKQorICAgICAgICB7CisgICAgICAgICAgY2FzZSBE V19TRUNUX0FCQlJFVl9WNToKKyAgICAgICAgICAgIHNlY3Rpb25zLmFiYnJldl9vZmZzZXQgPSBv ZmZzZXQ7CisgICAgICAgICAgICBzZWN0aW9ucy5hYmJyZXZfc2l6ZSA9IHNpemU7CisgICAgICAg ICAgICBicmVhazsKKyAgICAgICAgICBjYXNlIERXX1NFQ1RfSU5GT19WNToKKyAgICAgICAgICAg IHNlY3Rpb25zLmluZm9fb3JfdHlwZXNfb2Zmc2V0ID0gb2Zmc2V0OworICAgICAgICAgICAgc2Vj dGlvbnMuaW5mb19vcl90eXBlc19zaXplID0gc2l6ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAg ICAgICAgIGNhc2UgRFdfU0VDVF9MSU5FX1Y1OgorICAgICAgICAgICAgc2VjdGlvbnMubGluZV9v ZmZzZXQgPSBvZmZzZXQ7CisgICAgICAgICAgICBzZWN0aW9ucy5saW5lX3NpemUgPSBzaXplOwor ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgY2FzZSBEV19TRUNUX0xPQ0xJU1RTX1Y1Ogor ICAgICAgICAgICAgc2VjdGlvbnMubG9jbGlzdHNfb2Zmc2V0ID0gb2Zmc2V0OworICAgICAgICAg ICAgc2VjdGlvbnMubG9jbGlzdHNfc2l6ZSA9IHNpemU7CisgICAgICAgICAgICBicmVhazsKKyAg ICAgICAgICBjYXNlIERXX1NFQ1RfTUFDUk9fVjU6CisgICAgICAgICAgICBzZWN0aW9ucy5tYWNy b19vZmZzZXQgPSBvZmZzZXQ7CisgICAgICAgICAgICBzZWN0aW9ucy5tYWNyb19zaXplID0gc2l6 ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIGNhc2UgRFdfU0VDVF9STkdMSVNUU19W NToKKyAgICAgICAgICAgIHNlY3Rpb25zLnJuZ2xpc3RzX29mZnNldCA9IG9mZnNldDsKKyAgICAg ICAgICAgIHNlY3Rpb25zLnJuZ2xpc3RzX3NpemUgPSBzaXplOworICAgICAgICAgICAgYnJlYWs7 CisgICAgICAgICAgY2FzZSBEV19TRUNUX1NUUl9PRkZTRVRTX1Y1OgorICAgICAgICAgICAgc2Vj dGlvbnMuc3RyX29mZnNldHNfb2Zmc2V0ID0gb2Zmc2V0OworICAgICAgICAgICAgc2VjdGlvbnMu c3RyX29mZnNldHNfc2l6ZSA9IHNpemU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBj YXNlIERXX1NFQ1RfUkVTRVJWRURfVjU6CisgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg IGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgIC8qIEl0J3MgZWFzaWVyIGZvciB0aGUgcmVz dCBvZiB0aGUgY29kZSBpZiB3ZSBmYWtlIGEgc3RydWN0IGR3b19maWxlIGFuZAorICAgICBoYXZl IGR3b191bml0ICJsaXZlIiBpbiB0aGF0LiAgQXQgbGVhc3QgZm9yIG5vdy4KKworICAgICBUaGUg RFdQIGZpbGUgY2FuIGJlIG1hZGUgdXAgb2YgYSByYW5kb20gY29sbGVjdGlvbiBvZiBDVXMgYW5k IFRVcy4KKyAgICAgSG93ZXZlciwgZm9yIGVhY2ggQ1UgKyBzZXQgb2YgVFVzIHRoYXQgY2FtZSBm cm9tIHRoZSBzYW1lIG9yaWdpbmFsIERXTworICAgICBmaWxlLCB3ZSBjYW4gY29tYmluZSB0aGVt IGJhY2sgaW50byBhIHZpcnR1YWwgRFdPIGZpbGUgdG8gc2F2ZSBzcGFjZQorICAgICAoZmV3ZXIg c3RydWN0IGR3b19maWxlIG9iamVjdHMgdG8gYWxsb2NhdGUpLiAgUmVtZW1iZXIgdGhhdCBmb3Ig cmVhbGx5CisgICAgIGxhcmdlIGFwcHMgdGhlcmUgY2FuIGJlIG9uIHRoZSBvcmRlciBvZiA4SyBD VXMgYW5kIDIwMEsgVFVzLCBvciBtb3JlLiAgKi8KKworICBzdGQ6OnN0cmluZyB2aXJ0dWFsX2R3 b19uYW1lID0KKyAgICBzdHJpbmdfcHJpbnRmICgidmlydHVhbC1kd28vJWxkLSVsZC0lbGQtJWxk LSVsZC0lbGQiLAorICAgICAgICAgICAgICAgICAobG9uZykgKHNlY3Rpb25zLmFiYnJldl9zaXpl ID8gc2VjdGlvbnMuYWJicmV2X29mZnNldCA6IDApLAorICAgICAgICAgICAgICAgICAobG9uZykg KHNlY3Rpb25zLmxpbmVfc2l6ZSA/IHNlY3Rpb25zLmxpbmVfb2Zmc2V0IDogMCksCisgICAgICAg ICAgICAgICAgIChsb25nKSAoc2VjdGlvbnMubG9jbGlzdHNfc2l6ZSA/IHNlY3Rpb25zLmxvY2xp c3RzX29mZnNldCA6IDApLAorICAgICAgICAgICAgICAgICAobG9uZykgKHNlY3Rpb25zLnN0cl9v ZmZzZXRzX3NpemUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHNlY3Rpb25zLnN0cl9v ZmZzZXRzX29mZnNldCA6IDApLAorICAgICAgICAgICAgICAgICAobG9uZykgKHNlY3Rpb25zLm1h Y3JvX3NpemUgPyBzZWN0aW9ucy5tYWNyb19vZmZzZXQgOiAwKSwKKyAgICAgICAgICAgICAgICAg KGxvbmcpIChzZWN0aW9ucy5ybmdsaXN0c19zaXplID8gc2VjdGlvbnMucm5nbGlzdHNfb2Zmc2V0 OiAwKSk7CisgIC8qIENhbiB3ZSB1c2UgYW4gZXhpc3RpbmcgdmlydHVhbCBEV08gZmlsZT8gICov CisgIGR3b19maWxlX3Nsb3QgPSBsb29rdXBfZHdvX2ZpbGVfc2xvdCAocGVyX29iamZpbGUsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlydHVhbF9kd29fbmFtZS5j X3N0ciAoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wX2Rp cik7CisgIC8qIENyZWF0ZSBvbmUgaWYgbmVjZXNzYXJ5LiAgKi8KKyAgaWYgKCpkd29fZmlsZV9z bG90ID09IE5VTEwpCisgICAgeworICAgICAgaWYgKGR3YXJmX3JlYWRfZGVidWcpCisgICAgICAg IHsKKyAgICAgICAgICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csICJDcmVhdGluZyB2 aXJ0dWFsIERXTzogJXNcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXJ0dWFs X2R3b19uYW1lLmNfc3RyICgpKTsKKyAgICAgICAgfQorICAgICAgZHdvX2ZpbGUgPSBuZXcgc3Ry dWN0IGR3b19maWxlOworICAgICAgZHdvX2ZpbGUtPmR3b19uYW1lID0gcGVyX29iamZpbGUtPm9i amZpbGUtPmludGVybiAodmlydHVhbF9kd29fbmFtZSk7CisgICAgICBkd29fZmlsZS0+Y29tcF9k aXIgPSBjb21wX2RpcjsKKyAgICAgIGR3b19maWxlLT5zZWN0aW9ucy5hYmJyZXYgPQorICAgICAg ICBjcmVhdGVfZHdwX3YyX29yX3Y1X3NlY3Rpb24gKHBlcl9vYmpmaWxlLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICZkd3BfZmlsZS0+c2VjdGlvbnMuYWJicmV2LAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb25zLmFiYnJldl9vZmZzZXQs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbnMuYWJicmV2X3Np emUpOworICAgICAgZHdvX2ZpbGUtPnNlY3Rpb25zLmxpbmUgPQorICAgICAgICBjcmVhdGVfZHdw X3YyX29yX3Y1X3NlY3Rpb24gKHBlcl9vYmpmaWxlLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICZkd3BfZmlsZS0+c2VjdGlvbnMubGluZSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzZWN0aW9ucy5saW5lX29mZnNldCwgc2VjdGlvbnMubGluZV9z aXplKTsKKyAgICAgIGR3b19maWxlLT5zZWN0aW9ucy5tYWNybyA9CisgICAgICAgIGNyZWF0ZV9k d3BfdjJfb3JfdjVfc2VjdGlvbiAocGVyX29iamZpbGUsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJmR3cF9maWxlLT5zZWN0aW9ucy5tYWNybywKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9ucy5tYWNyb19vZmZzZXQsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbnMubWFjcm9fc2l6ZSk7CisgICAgICBk d29fZmlsZS0+c2VjdGlvbnMubG9jbGlzdHMgPQorICAgICAgICBjcmVhdGVfZHdwX3YyX29yX3Y1 X3NlY3Rpb24gKHBlcl9vYmpmaWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICZkd3BfZmlsZS0+c2VjdGlvbnMubG9jbGlzdHMsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc2VjdGlvbnMubG9jbGlzdHNfb2Zmc2V0LAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb25zLmxvY2xpc3RzX3NpemUpOworICAgICAgZHdv X2ZpbGUtPnNlY3Rpb25zLnJuZ2xpc3RzID0KKyAgICAgICAgY3JlYXRlX2R3cF92Ml9vcl92NV9z ZWN0aW9uIChwZXJfb2JqZmlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAmZHdwX2ZpbGUtPnNlY3Rpb25zLnJuZ2xpc3RzLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHNlY3Rpb25zLnJuZ2xpc3RzX29mZnNldCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzZWN0aW9ucy5ybmdsaXN0c19zaXplKTsKKyAgICAgIGR3b19m aWxlLT5zZWN0aW9ucy5zdHJfb2Zmc2V0cyA9CisgICAgICAgIGNyZWF0ZV9kd3BfdjJfb3JfdjVf c2VjdGlvbiAocGVyX29iamZpbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgJmR3cF9maWxlLT5zZWN0aW9ucy5zdHJfb2Zmc2V0cywKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzZWN0aW9ucy5zdHJfb2Zmc2V0c19vZmZzZXQsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbnMuc3RyX29mZnNldHNfc2l6ZSk7Cisg ICAgICAvKiBUaGUgInN0ciIgc2VjdGlvbiBpcyBnbG9iYWwgdG8gdGhlIGVudGlyZSBEV1AgZmls ZS4gICovCisgICAgICBkd29fZmlsZS0+c2VjdGlvbnMuc3RyID0gZHdwX2ZpbGUtPnNlY3Rpb25z LnN0cjsKKyAgICAgIC8qIFRoZSBpbmZvIG9yIHR5cGVzIHNlY3Rpb24gaXMgYXNzaWduZWQgYmVs b3cgdG8gZHdvX3VuaXQsCisgICAgICAgICB0aGVyZSdzIG5vIG5lZWQgdG8gcmVjb3JkIGl0IGlu IGR3b19maWxlLgorICAgICAgICAgQWxzbywgd2UgY2FuJ3Qgc2ltcGx5IHJlY29yZCB0eXBlIHNl Y3Rpb25zIGluIGR3b19maWxlIGJlY2F1c2UKKyAgICAgICAgIHdlIHJlY29yZCBhIHBvaW50ZXIg aW50byB0aGUgdmVjdG9yIGluIGR3b191bml0LiAgQXMgd2UgY29sbGVjdCBtb3JlCisgICAgICAg ICB0eXBlcyB3ZSdsbCBncm93IHRoZSB2ZWN0b3IgYW5kIGV2ZW50dWFsbHkgaGF2ZSB0byByZWFs bG9jYXRlIHNwYWNlCisgICAgICAgICBmb3IgaXQsIGludmFsaWRhdGluZyBhbGwgY29waWVzIG9m IHBvaW50ZXJzIGludG8gdGhlIHByZXZpb3VzCisgICAgICAgICBjb250ZW50cy4gICovCisgICAg ICAqZHdvX2ZpbGVfc2xvdCA9IGR3b19maWxlOworICAgIH0KKyAgZWxzZQorICAgIHsKKyAgICAg IGlmIChkd2FyZl9yZWFkX2RlYnVnKQorICAgICAgICB7CisgICAgICAgICAgZnByaW50Zl91bmZp bHRlcmVkIChnZGJfc3RkbG9nLCAiVXNpbmcgZXhpc3RpbmcgdmlydHVhbCBEV086ICVzXG4iLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlydHVhbF9kd29fbmFtZS5jX3N0ciAoKSk7 CisgICAgICAgIH0KKyAgICAgIGR3b19maWxlID0gKHN0cnVjdCBkd29fZmlsZSAqKSAqZHdvX2Zp bGVfc2xvdDsKKyAgICB9CisKKyAgZHdvX3VuaXQgPSBPQlNUQUNLX1pBTExPQyAoJnBlcl9vYmpm aWxlLT5wZXJfYmZkLT5vYnN0YWNrLCBzdHJ1Y3QgZHdvX3VuaXQpOworICBkd29fdW5pdC0+ZHdv X2ZpbGUgPSBkd29fZmlsZTsKKyAgZHdvX3VuaXQtPnNpZ25hdHVyZSA9IHNpZ25hdHVyZTsKKyAg ZHdvX3VuaXQtPnNlY3Rpb24KKyAgICA9IFhPQk5FVyAoJnBlcl9vYmpmaWxlLT5wZXJfYmZkLT5v YnN0YWNrLCBzdHJ1Y3QgZHdhcmYyX3NlY3Rpb25faW5mbyk7CisgICpkd29fdW5pdC0+c2VjdGlv biA9IGNyZWF0ZV9kd3BfdjJfb3JfdjVfc2VjdGlvbiAocGVyX29iamZpbGUsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmR3cF9maWxlLT5zZWN0aW9ucy5p bmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rp b25zLmluZm9fb3JfdHlwZXNfb2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHNlY3Rpb25zLmluZm9fb3JfdHlwZXNfc2l6ZSk7CiAgIC8qIGR3b191 bml0LT57b2Zmc2V0LGxlbmd0aCx0eXBlX29mZnNldF9pbl90dX0gYXJlIHNldCBsYXRlci4gICov CiAKICAgcmV0dXJuIGR3b191bml0OwpAQCAtMTIzMDEsMTIgKzEyNjAyLDE4IEBAIGxvb2t1cF9k d29fdW5pdF9pbl9kd3AgKGR3YXJmMl9wZXJfb2JqZmlsZSAqcGVyX29iamZpbGUsCiAJCQkJCQkg dW5pdF9pbmRleCwgY29tcF9kaXIsCiAJCQkJCQkgc2lnbmF0dXJlLCBpc19kZWJ1Z190eXBlcyk7 CiAJICAgIH0KLQkgIGVsc2UKKwkgIGVsc2UgaWYgKGR3cF9maWxlLT52ZXJzaW9uID09IDIpCiAJ ICAgIHsKIAkgICAgICAqc2xvdCA9IGNyZWF0ZV9kd29fdW5pdF9pbl9kd3BfdjIgKHBlcl9vYmpm aWxlLCBkd3BfZmlsZSwKIAkJCQkJCSB1bml0X2luZGV4LCBjb21wX2RpciwKIAkJCQkJCSBzaWdu YXR1cmUsIGlzX2RlYnVnX3R5cGVzKTsKIAkgICAgfQorCSAgZWxzZSAvKiB2ZXJzaW9uID09IDUg ICovCisJICAgIHsKKwkgICAgICAqc2xvdCA9IGNyZWF0ZV9kd29fdW5pdF9pbl9kd3BfdjUgKHBl cl9vYmpmaWxlLCBkd3BfZmlsZSwKKwkJCQkJCSB1bml0X2luZGV4LCBjb21wX2RpciwKKwkJCQkJ CSBzaWduYXR1cmUsIGlzX2RlYnVnX3R5cGVzKTsKKwkgICAgfQogCSAgcmV0dXJuIChzdHJ1Y3Qg ZHdvX3VuaXQgKikgKnNsb3Q7CiAJfQogICAgICAgaWYgKHNpZ25hdHVyZV9pbl90YWJsZSA9PSAw KQpAQCAtMTI1MjYsOCArMTI4MzMsMTcgQEAgb3Blbl9hbmRfaW5pdF9kd29fZmlsZSAoZHdhcmYy X2N1ICpjdSwgY29uc3QgY2hhciAqZHdvX25hbWUsCiAgIGNyZWF0ZV9jdXNfaGFzaF90YWJsZSAo cGVyX29iamZpbGUsIGN1LCAqZHdvX2ZpbGUsIGR3b19maWxlLT5zZWN0aW9ucy5pbmZvLAogCQkJ IGR3b19maWxlLT5jdXMpOwogCi0gIGNyZWF0ZV9kZWJ1Z190eXBlc19oYXNoX3RhYmxlIChwZXJf b2JqZmlsZSwgZHdvX2ZpbGUuZ2V0ICgpLAotCQkJCSBkd29fZmlsZS0+c2VjdGlvbnMudHlwZXMs IGR3b19maWxlLT50dXMpOworICBpZiAoY3UtPnBlcl9jdS0+ZHdhcmZfdmVyc2lvbiA8IDUpCisg ICAgeworICAgICAgY3JlYXRlX2RlYnVnX3R5cGVzX2hhc2hfdGFibGUgKHBlcl9vYmpmaWxlLCBk d29fZmlsZS5nZXQgKCksCisJCQkJICAgICBkd29fZmlsZS0+c2VjdGlvbnMudHlwZXMsIGR3b19m aWxlLT50dXMpOworICAgIH0KKyAgZWxzZQorICAgIHsKKyAgICAgIGNyZWF0ZV9kZWJ1Z190eXBl X2hhc2hfdGFibGUgKHBlcl9vYmpmaWxlLCBkd29fZmlsZS5nZXQgKCksCisJCQkJICAgICZkd29f ZmlsZS0+c2VjdGlvbnMuaW5mbywgZHdvX2ZpbGUtPnR1cywKKwkJCQkgICAgcmN1aF9raW5kOjpU WVBFKTsKKyAgICB9CiAKICAgaWYgKGR3YXJmX3JlYWRfZGVidWcpCiAgICAgZnByaW50Zl91bmZp bHRlcmVkIChnZGJfc3RkbG9nLCAiRFdPIGZpbGUgZm91bmQ6ICVzXG4iLCBkd29fbmFtZSk7CkBA IC0xMjU3Myw3ICsxMjg4OSw3IEBAIGR3YXJmMl9sb2NhdGVfY29tbW9uX2R3cF9zZWN0aW9ucyAo YmZkICphYmZkLCBhc2VjdGlvbiAqc2VjdHAsCiAvKiBUaGlzIGZ1bmN0aW9uIGlzIG1hcHBlZCBh Y3Jvc3MgdGhlIHNlY3Rpb25zIGFuZCByZW1lbWJlcnMgdGhlIG9mZnNldCBhbmQKICAgIHNpemUg b2YgZWFjaCBvZiB0aGUgRFdQIHZlcnNpb24gMiBkZWJ1Z2dpbmcgc2VjdGlvbnMgdGhhdCB3ZSBh cmUgaW50ZXJlc3RlZAogICAgaW4uICBUaGlzIGlzIHNwbGl0IGludG8gYSBzZXBhcmF0ZSBmdW5j dGlvbiBiZWNhdXNlIHdlIGRvbid0IGtub3cgaWYgd2UKLSAgIGhhdmUgdmVyc2lvbiAxIG9yIDIg dW50aWwgd2UgcGFyc2UgdGhlIGN1X2luZGV4L3R1X2luZGV4IHNlY3Rpb25zLiAgKi8KKyAgIGhh dmUgdmVyc2lvbiAxIG9yIDIgb3IgNSB1bnRpbCB3ZSBwYXJzZSB0aGUgY3VfaW5kZXgvdHVfaW5k ZXggc2VjdGlvbnMuICAqLwogCiBzdGF0aWMgdm9pZAogZHdhcmYyX2xvY2F0ZV92Ml9kd3Bfc2Vj dGlvbnMgKGJmZCAqYWJmZCwgYXNlY3Rpb24gKnNlY3RwLCB2b2lkICpkd3BfZmlsZV9wdHIpCkBA IC0xMjYzMCw2ICsxMjk0Niw2MSBAQCBkd2FyZjJfbG9jYXRlX3YyX2R3cF9zZWN0aW9ucyAoYmZk ICphYmZkLCBhc2VjdGlvbiAqc2VjdHAsIHZvaWQgKmR3cF9maWxlX3B0cikKICAgICB9CiB9CiAK Ky8qIFRoaXMgZnVuY3Rpb24gaXMgbWFwcGVkIGFjcm9zcyB0aGUgc2VjdGlvbnMgYW5kIHJlbWVt YmVycyB0aGUgb2Zmc2V0IGFuZAorICAgc2l6ZSBvZiBlYWNoIG9mIHRoZSBEV1AgdmVyc2lvbiA1 IGRlYnVnZ2luZyBzZWN0aW9ucyB0aGF0IHdlIGFyZSBpbnRlcmVzdGVkCisgICBpbi4gIFRoaXMg aXMgc3BsaXQgaW50byBhIHNlcGFyYXRlIGZ1bmN0aW9uIGJlY2F1c2Ugd2UgZG9uJ3Qga25vdyBp ZiB3ZQorICAgaGF2ZSB2ZXJzaW9uIDEgb3IgMiBvciA1IHVudGlsIHdlIHBhcnNlIHRoZSBjdV9p bmRleC90dV9pbmRleCBzZWN0aW9ucy4gICovCisKK3N0YXRpYyB2b2lkCitkd2FyZjJfbG9jYXRl X3Y1X2R3cF9zZWN0aW9ucyAoYmZkICphYmZkLCBhc2VjdGlvbiAqc2VjdHAsIHZvaWQgKmR3cF9m aWxlX3B0cikKK3sKKyAgc3RydWN0IGR3cF9maWxlICpkd3BfZmlsZSA9IChzdHJ1Y3QgZHdwX2Zp bGUgKikgZHdwX2ZpbGVfcHRyOworICBjb25zdCBzdHJ1Y3QgZHdvcF9zZWN0aW9uX25hbWVzICpu YW1lcyA9ICZkd29wX3NlY3Rpb25fbmFtZXM7CisgIHVuc2lnbmVkIGludCBlbGZfc2VjdGlvbl9u ciA9IGVsZl9zZWN0aW9uX2RhdGEgKHNlY3RwKS0+dGhpc19pZHg7CisKKyAgLyogUmVjb3JkIHRo ZSBFTEYgc2VjdGlvbiBudW1iZXIgZm9yIGxhdGVyIGxvb2t1cDogdGhpcyBpcyB3aGF0IHRoZQor ICAgICAuZGVidWdfY3VfaW5kZXgsLmRlYnVnX3R1X2luZGV4IHRhYmxlcyB1c2UgaW4gRFdQIFYx LiAgKi8KKyAgZ2RiX2Fzc2VydCAoZWxmX3NlY3Rpb25fbnIgPCBkd3BfZmlsZS0+bnVtX3NlY3Rp b25zKTsKKyAgZHdwX2ZpbGUtPmVsZl9zZWN0aW9uc1tlbGZfc2VjdGlvbl9ucl0gPSBzZWN0cDsK KworICAvKiBMb29rIGZvciBzcGVjaWZpYyBzZWN0aW9ucyB0aGF0IHdlIG5lZWQuICAqLworICBp ZiAoc2VjdGlvbl9pc19wIChzZWN0cC0+bmFtZSwgJm5hbWVzLT5hYmJyZXZfZHdvKSkKKyAgICB7 CisgICAgICBkd3BfZmlsZS0+c2VjdGlvbnMuYWJicmV2LnMuc2VjdGlvbiA9IHNlY3RwOworICAg ICAgZHdwX2ZpbGUtPnNlY3Rpb25zLmFiYnJldi5zaXplID0gYmZkX3NlY3Rpb25fc2l6ZSAoc2Vj dHApOworICAgIH0KKyAgZWxzZSBpZiAoc2VjdGlvbl9pc19wIChzZWN0cC0+bmFtZSwgJm5hbWVz LT5pbmZvX2R3bykpCisgICAgeworICAgICAgZHdwX2ZpbGUtPnNlY3Rpb25zLmluZm8ucy5zZWN0 aW9uID0gc2VjdHA7CisgICAgICBkd3BfZmlsZS0+c2VjdGlvbnMuaW5mby5zaXplID0gYmZkX3Nl Y3Rpb25fc2l6ZSAoc2VjdHApOworICAgIH0KKyAgZWxzZSBpZiAoc2VjdGlvbl9pc19wIChzZWN0 cC0+bmFtZSwgJm5hbWVzLT5saW5lX2R3bykpCisgICB7CisgICAgIGR3cF9maWxlLT5zZWN0aW9u cy5saW5lLnMuc2VjdGlvbiA9IHNlY3RwOworICAgICBkd3BfZmlsZS0+c2VjdGlvbnMubGluZS5z aXplID0gYmZkX3NlY3Rpb25fc2l6ZSAoc2VjdHApOworICAgIH0KKyAgZWxzZSBpZiAoc2VjdGlv bl9pc19wIChzZWN0cC0+bmFtZSwgJm5hbWVzLT5sb2NsaXN0c19kd28pKQorICAgIHsKKyAgICAg IGR3cF9maWxlLT5zZWN0aW9ucy5sb2NsaXN0cy5zLnNlY3Rpb24gPSBzZWN0cDsKKyAgICAgIGR3 cF9maWxlLT5zZWN0aW9ucy5sb2NsaXN0cy5zaXplID0gYmZkX3NlY3Rpb25fc2l6ZSAoc2VjdHAp OworICAgIH0KKyAgZWxzZSBpZiAoc2VjdGlvbl9pc19wIChzZWN0cC0+bmFtZSwgJm5hbWVzLT5t YWNyb19kd28pKQorICAgIHsKKyAgICAgIGR3cF9maWxlLT5zZWN0aW9ucy5tYWNyby5zLnNlY3Rp b24gPSBzZWN0cDsKKyAgICAgIGR3cF9maWxlLT5zZWN0aW9ucy5tYWNyby5zaXplID0gYmZkX3Nl Y3Rpb25fc2l6ZSAoc2VjdHApOworICAgIH0KKyAgZWxzZSBpZiAoc2VjdGlvbl9pc19wIChzZWN0 cC0+bmFtZSwgJm5hbWVzLT5ybmdsaXN0c19kd28pKQorICAgIHsKKyAgICAgIGR3cF9maWxlLT5z ZWN0aW9ucy5ybmdsaXN0cy5zLnNlY3Rpb24gPSBzZWN0cDsKKyAgICAgIGR3cF9maWxlLT5zZWN0 aW9ucy5ybmdsaXN0cy5zaXplID0gYmZkX3NlY3Rpb25fc2l6ZSAoc2VjdHApOworICAgIH0KKyAg ZWxzZSBpZiAoc2VjdGlvbl9pc19wIChzZWN0cC0+bmFtZSwgJm5hbWVzLT5zdHJfb2Zmc2V0c19k d28pKQorICAgIHsKKyAgICAgIGR3cF9maWxlLT5zZWN0aW9ucy5zdHJfb2Zmc2V0cy5zLnNlY3Rp b24gPSBzZWN0cDsKKyAgICAgIGR3cF9maWxlLT5zZWN0aW9ucy5zdHJfb2Zmc2V0cy5zaXplID0g YmZkX3NlY3Rpb25fc2l6ZSAoc2VjdHApOworICAgIH0KK30KKwogLyogSGFzaCBmdW5jdGlvbiBm b3IgZHdwX2ZpbGUgbG9hZGVkIENVcy9UVXMuICAqLwogCiBzdGF0aWMgaGFzaHZhbF90CkBAIC0x Mjc4NCw2ICsxMzE1NSwxMSBAQCBvcGVuX2FuZF9pbml0X2R3cF9maWxlIChkd2FyZjJfcGVyX29i amZpbGUgKnBlcl9vYmpmaWxlKQogICAgIGJmZF9tYXBfb3Zlcl9zZWN0aW9ucyAoZHdwX2ZpbGUt PmRiZmQuZ2V0ICgpLAogCQkJICAgZHdhcmYyX2xvY2F0ZV92Ml9kd3Bfc2VjdGlvbnMsCiAJCQkg ICBkd3BfZmlsZS5nZXQgKCkpOworICBlbHNlIGlmIChkd3BfZmlsZS0+dmVyc2lvbiA9PSA1KQor ICAgIGJmZF9tYXBfb3Zlcl9zZWN0aW9ucyAoZHdwX2ZpbGUtPmRiZmQuZ2V0ICgpLAorCQkJICAg ZHdhcmYyX2xvY2F0ZV92NV9kd3Bfc2VjdGlvbnMsCisJCQkgICBkd3BfZmlsZS5nZXQgKCkpOwor CiAKICAgZHdwX2ZpbGUtPmxvYWRlZF9jdXMgPSBhbGxvY2F0ZV9kd3BfbG9hZGVkX2N1dHVzX3Rh YmxlICgpOwogICBkd3BfZmlsZS0+bG9hZGVkX3R1cyA9IGFsbG9jYXRlX2R3cF9sb2FkZWRfY3V0 dXNfdGFibGUgKCk7Ci0tIAoyLjI4LjAuMTYzLmc2MTA0Y2MyZjBiNi1nb29nCgo= --000000000000fd334405ac393cbe--