From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-il1-x12f.google.com (mail-il1-x12f.google.com [IPv6:2607:f8b0:4864:20::12f]) by sourceware.org (Postfix) with ESMTPS id 18F613857C4C for ; Tue, 21 Jul 2020 04:07:02 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 18F613857C4C Received: by mail-il1-x12f.google.com with SMTP id a11so15283480ilk.0 for ; Mon, 20 Jul 2020 21:07:02 -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:from:date:message-id:subject:to:cc; bh=ElnpGmovfpJ4YuX7pG2IqiyGjkv0RWVNg/Ny3C/5gAs=; b=hgw+GUZj+w5WNxrfgKycZV/BiIWPPPcKeObP4osFvbFkFi6e2B0oY7Bf4jtmUT5PRN CbPxYs01PK5r/RN7HkPHgxWaHXwLpTwEtwQu57grctQjHQVjnoeql3RntNc3TiomSElm 5hufDXEYFcSofvO7eutc/jxuo0awbuDxFAF0DzBjb/mjWSKolos+dzrkRdsEKBEosFfr 57hcztlLss4QCt85auAXdt1qVD4wD3Q/bN2jxnZft5yFHMgMcO1akYEUNyx/mQLE3aut ggHD/uIruzwP+r894tpJc/I+vC48/ZdfwALnprCrcbIadIeUTWcp68vHMi4z7bynEQaA ZBUA== X-Gm-Message-State: AOAM530MwWV4ksnNShKleA0rKyOKUQ9q5urlVgBPYnovXLQ+ghO6Dewv JRLYrNyDtaHZzJWXDr1vyYb/GMdmMuy8FhYD8G8cZQAzzzCNMA== X-Google-Smtp-Source: ABdhPJwxymgS2V1ESpTkokWE0ilOrVVbAc5AIjsVT92O0C4e40vATIajeg0fKJxxre7r9p9DIJ9gfYKLGRclIaYJKbE= X-Received: by 2002:a92:d807:: with SMTP id y7mr25922151ilm.187.1595304420683; Mon, 20 Jul 2020 21:07:00 -0700 (PDT) MIME-Version: 1.0 From: Caroline Tice Date: Mon, 20 Jul 2020 21:06:49 -0700 Message-ID: Subject: [PATCH, v1] Add code for processing version 5 DWP files (for use with DWARF v5) To: Caroline Tice via Gdb-patches Cc: Simon Marchi , Tom Tromey , Eric Christopher Content-Type: multipart/mixed; boundary="0000000000004ed20e05aaebc19e" X-Spam-Status: No, score=-19.6 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: Tue, 21 Jul 2020 04:07:03 -0000 --0000000000004ed20e05aaebc19e Content-Type: text/plain; charset="UTF-8" The DWARF v5 Spec describes a (slightly) new format for V5 .dwp files. This patch updates GDB to allow it to read/process .dwp files in the new DWARF v5 format, while continuing to be able to read/process .dwp files in the older V1 & V2 formats. The one thing I felt a little odd about in this patch: I couldn't re-use the enum dwarf_sect definitions, because in version 5 several of the sections have the same name as in the previous versions, but have a different ordering, with different numbers attached. So I had to create a new enum, dwarf_sect_v5 for this purpose. Is this patch ok to commit? -- Caroline cmtice@google.com gdb/ChangeLog 2020-07-20 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_dwp_hash_table): Update the large comment above the function to discuss Version 5 DWP files as well. 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_cwp_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. (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. include/ChangeLog 2020-07-20 Caroline Tice * dwarf2.h (enum dwarf_sect_v5): A new enum section for the sections in a DWARF 5 DWP file (DWP version 5). --0000000000004ed20e05aaebc19e Content-Type: application/octet-stream; name="v1-0002-Add-code-for-processing-version-5-DWP-files-for-u.patch" Content-Disposition: attachment; filename="v1-0002-Add-code-for-processing-version-5-DWP-files-for-u.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kcveu9h20 RnJvbSAxMzEyNzViYzUwNGQ4MWQ3NWRkYjMzMjVkOTYxYWU2MjFkYTFlNWNjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBDYXJvbGluZSBUaWNlIDxjbXRpY2VAZ29vZ2xlLmNvbT4KRGF0 ZTogTW9uLCAyMCBKdWwgMjAyMCAxNjo0NDo0OSAtMDcwMApTdWJqZWN0OiBbUEFUQ0ggdjEgMi8y XSBBZGQgY29kZSBmb3IgcHJvY2Vzc2luZyB2ZXJzaW9uIDUgRFdQIGZpbGVzIChmb3IgdXNlCiB3 aXRoIERXQVJGIHY1KS4KClRoZSBEV0FSRiB2NSBTcGVjIGRlc2NyaWJlcyBhIChzbGlnaHRseSkg bmV3IGZvcm1hdCBmb3IgVjUgLmR3cCBmaWxlcy4KVGhpcyBwYXRjaCB1cGRhdGVzIEdEQiB0byBh bGxvdyBpdCB0byByZWFkL3Byb2Nlc3MgLmR3cCBmaWxlcyBpbiB0aGUKbmV3IERXQVJGIHY1IGZv cm1hdCwgd2hpbGUgY29udGludWluZyB0byBiZSBhYmxlIHRvIHJlYWQvcHJvY2VzcyAuZHdwIGZp bGVzCmluIHRoZSBvbGRlciBWMSAmIFYyIGZvcm1hdHMuCi0tLQogZ2RiL2R3YXJmMi9yZWFkLmMg fCA0NjUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLQogaW5j bHVkZS9kd2FyZjIuaCAgfCAgMTUgKysKIDIgZmlsZXMgY2hhbmdlZCwgNDMxIGluc2VydGlvbnMo KyksIDQ5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2dkYi9kd2FyZjIvcmVhZC5jIGIvZ2Ri L2R3YXJmMi9yZWFkLmMKaW5kZXggMzllZDQ1NWRlZi4uNWE5MTcyMGRmNSAxMDA2NDQKLS0tIGEv Z2RiL2R3YXJmMi9yZWFkLmMKKysrIGIvZ2RiL2R3YXJmMi9yZWFkLmMKQEAgLTcyOCw3ICs3Mjgs NyBAQCBzdHJ1Y3QgZHdvX2ZpbGUKICAgZ2RiX2JmZF9yZWZfcHRyIGRiZmQ7CiAKICAgLyogVGhl IHNlY3Rpb25zIHRoYXQgbWFrZSB1cCB0aGlzIERXTyBmaWxlLgotICAgICBSZW1lbWJlciB0aGF0 IGZvciB2aXJ0dWFsIERXTyBmaWxlcyBpbiBEV1AgVjIsIHRoZXNlIGFyZSB2aXJ0dWFsCisgICAg IFJlbWVtYmVyIHRoYXQgZm9yIHZpcnR1YWwgRFdPIGZpbGVzIGluIERXUCBWMiBvciBEV1AgVjUs IHRoZXNlIGFyZSB2aXJ0dWFsCiAgICAgIHNlY3Rpb25zIChmb3IgbGFjayBvZiBhIGJldHRlciBu YW1lKS4gICovCiAgIHN0cnVjdCBkd29fc2VjdGlvbnMgc2VjdGlvbnMge307CiAKQEAgLTc0Nywy NSArNzQ3LDI3IEBAIHN0cnVjdCBkd29fZmlsZQogCiBzdHJ1Y3QgZHdwX3NlY3Rpb25zCiB7Ci0g IC8qIFRoZXNlIGFyZSB1c2VkIGJ5IGJvdGggRFdQIHZlcnNpb24gMSBhbmQgMi4gICovCisgIC8q IFRoZXNlIGFyZSB1c2VkIGJ5IGFsbCBEV1AgdmVyc2lvbnMgKDEsIDIgYW5kIDUpLiAgKi8KICAg c3RydWN0IGR3YXJmMl9zZWN0aW9uX2luZm8gc3RyOwogICBzdHJ1Y3QgZHdhcmYyX3NlY3Rpb25f aW5mbyBjdV9pbmRleDsKICAgc3RydWN0IGR3YXJmMl9zZWN0aW9uX2luZm8gdHVfaW5kZXg7CiAK LSAgLyogVGhlc2UgYXJlIG9ubHkgdXNlZCBieSBEV1AgdmVyc2lvbiAyIGZpbGVzLgorICAvKiBU aGVzZSBhcmUgb25seSB1c2VkIGJ5IERXUCB2ZXJzaW9uIDIgYW5kIHZlcnNpb24gNSBmaWxlcy4K ICAgICAgSW4gRFdQIHZlcnNpb24gMSB0aGUgLmRlYnVnX2luZm8uZHdvLCAuZGVidWdfdHlwZXMu ZHdvLCBhbmQgb3RoZXIKICAgICAgc2VjdGlvbnMgYXJlIHJlZmVyZW5jZWQgYnkgc2VjdGlvbiBu dW1iZXIsIGFuZCBhcmUgbm90IHJlY29yZGVkIGhlcmUuCi0gICAgIEluIERXUCB2ZXJzaW9uIDIg dGhlcmUgaXMgYXQgbW9zdCBvbmUgY29weSBvZiBhbGwgdGhlc2Ugc2VjdGlvbnMsIGVhY2gKLSAg ICAgc2VjdGlvbiBiZWluZyAoZWZmZWN0aXZlbHkpIGNvbXByaXNlZCBvZiB0aGUgY29uY2F0ZW5h dGlvbiBvZiBhbGwgb2YgdGhlCi0gICAgIGluZGl2aWR1YWwgc2VjdGlvbnMgdGhhdCBleGlzdCBp biB0aGUgdmVyc2lvbiAxIGZvcm1hdC4KKyAgICAgSW4gRFdQIHZlcnNpb24gMiBvciA1IHRoZXJl IGlzIGF0IG1vc3Qgb25lIGNvcHkgb2YgYWxsIHRoZXNlIHNlY3Rpb25zLAorICAgICBlYWNoIHNl Y3Rpb24gYmVpbmcgKGVmZmVjdGl2ZWx5KSBjb21wcmlzZWQgb2YgdGhlIGNvbmNhdGVuYXRpb24g b2YgYWxsIG9mCisgICAgIHRoZSBpbmRpdmlkdWFsIHNlY3Rpb25zIHRoYXQgZXhpc3QgaW4gdGhl IHZlcnNpb24gMSBmb3JtYXQuCiAgICAgIFRvIGtlZXAgdGhlIGNvZGUgc2ltcGxlIHdlIHRyZWF0 IGVhY2ggb2YgdGhlc2UgY29uY2F0ZW5hdGVkIHBpZWNlcyBhcyBhCiAgICAgIHNlY3Rpb24gaXRz ZWxmIChhIHZpcnR1YWwgc2VjdGlvbj8pLiAgKi8KICAgc3RydWN0IGR3YXJmMl9zZWN0aW9uX2lu Zm8gYWJicmV2OwogICBzdHJ1Y3QgZHdhcmYyX3NlY3Rpb25faW5mbyBpbmZvOwogICBzdHJ1Y3Qg ZHdhcmYyX3NlY3Rpb25faW5mbyBsaW5lOwogICBzdHJ1Y3QgZHdhcmYyX3NlY3Rpb25faW5mbyBs b2M7CisgIHN0cnVjdCBkd2FyZjJfc2VjdGlvbl9pbmZvIGxvY2xpc3RzOwogICBzdHJ1Y3QgZHdh cmYyX3NlY3Rpb25faW5mbyBtYWNpbmZvOwogICBzdHJ1Y3QgZHdhcmYyX3NlY3Rpb25faW5mbyBt YWNybzsKKyAgc3RydWN0IGR3YXJmMl9zZWN0aW9uX2luZm8gcm5nbGlzdHM7CiAgIHN0cnVjdCBk d2FyZjJfc2VjdGlvbl9pbmZvIHN0cl9vZmZzZXRzOwogICBzdHJ1Y3QgZHdhcmYyX3NlY3Rpb25f aW5mbyB0eXBlczsKIH07CkBAIC03ODYsMTIgKzc4OCwxMiBAQCBzdHJ1Y3QgdmlydHVhbF92MV9k d29fc2VjdGlvbnMKICAgc3RydWN0IGR3YXJmMl9zZWN0aW9uX2luZm8gaW5mb19vcl90eXBlczsK IH07CiAKLS8qIFNpbWlsYXIgdG8gdmlydHVhbF92MV9kd29fc2VjdGlvbnMsIGJ1dCBmb3IgRFdQ IHZlcnNpb24gMi4KKy8qIFNpbWlsYXIgdG8gdmlydHVhbF92MV9kd29fc2VjdGlvbnMsIGJ1dCBm b3IgRFdQIHZlcnNpb24gMiBvciA1LgogICAgSW4gdmVyc2lvbiAyLCB0aGUgc2VjdGlvbnMgb2Yg dGhlIERXTyBmaWxlcyBhcmUgY29uY2F0ZW5hdGVkIHRvZ2V0aGVyCiAgICBhbmQgc3RvcmVkIGlu IG9uZSBzZWN0aW9uIG9mIHRoYXQgbmFtZS4gIFRodXMgZWFjaCBFTEYgc2VjdGlvbiBjb250YWlu cwogICAgc2V2ZXJhbCAidmlydHVhbCIgc2VjdGlvbnMuICAqLwogCi1zdHJ1Y3QgdmlydHVhbF92 Ml9kd29fc2VjdGlvbnMKK3N0cnVjdCB2aXJ0dWFsX3YyX29yX3Y1X2R3b19zZWN0aW9ucwogewog ICBiZmRfc2l6ZV90eXBlIGFiYnJldl9vZmZzZXQ7CiAgIGJmZF9zaXplX3R5cGUgYWJicmV2X3Np emU7CkBAIC04MDIsMTIgKzgwNCwxOCBAQCBzdHJ1Y3QgdmlydHVhbF92Ml9kd29fc2VjdGlvbnMK ICAgYmZkX3NpemVfdHlwZSBsb2Nfb2Zmc2V0OwogICBiZmRfc2l6ZV90eXBlIGxvY19zaXplOwog CisgIGJmZF9zaXplX3R5cGUgbG9jbGlzdHNfb2Zmc2V0OworICBiZmRfc2l6ZV90eXBlIGxvY2xp c3RzX3NpemU7CisKICAgYmZkX3NpemVfdHlwZSBtYWNpbmZvX29mZnNldDsKICAgYmZkX3NpemVf dHlwZSBtYWNpbmZvX3NpemU7CiAKICAgYmZkX3NpemVfdHlwZSBtYWNyb19vZmZzZXQ7CiAgIGJm ZF9zaXplX3R5cGUgbWFjcm9fc2l6ZTsKIAorICBiZmRfc2l6ZV90eXBlIHJuZ2xpc3RzX29mZnNl dDsKKyAgYmZkX3NpemVfdHlwZSBybmdsaXN0c19zaXplOworCiAgIGJmZF9zaXplX3R5cGUgc3Ry X29mZnNldHNfb2Zmc2V0OwogICBiZmRfc2l6ZV90eXBlIHN0cl9vZmZzZXRzX3NpemU7CiAKQEAg LTg0NSw2ICs4NTMsMjIgQEAgc3RydWN0IGR3cF9oYXNoX3RhYmxlCiAgICAgICBjb25zdCBnZGJf Ynl0ZSAqb2Zmc2V0czsKICAgICAgIGNvbnN0IGdkYl9ieXRlICpzaXplczsKICAgICB9IHYyOwor ICAgIHN0cnVjdAorICAgIHsKKyAgICAgIC8qIFRoaXMgaXMgaW5kZXhlZCBieSBjb2x1bW4gbnVt YmVyIGFuZCBnaXZlcyB0aGUgaWQgb2YgdGhlIHNlY3Rpb24KKwkgaW4gdGhhdCBjb2x1bW4uICAq LworI2RlZmluZSBNQVhfTlJfVjVfRFdPX1NFQ1RJT05TIFwKKyAgKDEgLyogLmRlYnVnX2luZm8g Ki8gXAorICAgKyAxIC8qIC5kZWJ1Z19hYmJyZXYgKi8gXAorICAgKyAxIC8qIC5kZWJ1Z19saW5l ICovIFwKKyAgICsgMSAvKiAuZGVidWdfbG9jbGlzdHMgKi8gXAorICAgKyAxIC8qIC5kZWJ1Z19z dHJfb2Zmc2V0cyAqLyBcCisgICArIDEgLyogLmRlYnVnX21hY3JvICovIFwKKyAgICsgMSAvKiAu ZGVidWdfcm5nbGlzdHMgKi8pCisgICAgICBpbnQgc2VjdGlvbl9pZHNbTUFYX05SX1Y1X0RXT19T RUNUSU9OU107CisgICAgICBjb25zdCBnZGJfYnl0ZSAqb2Zmc2V0czsKKyAgICAgIGNvbnN0IGdk Yl9ieXRlICpzaXplczsKKyAgICB9IHY1OwogICB9IHNlY3Rpb25fcG9vbDsKIH07CiAKQEAgLTEx NTQ5LDkgKzExNTczLDkgQEAgY3JlYXRlX2N1c19oYXNoX3RhYmxlIChkd2FyZjJfcGVyX29iamZp bGUgKnBlcl9vYmpmaWxlLAogCiAgICAtLS0KIAotICAgRFdQIFZlcnNpb24gMjoKKyAgIERXUCBW ZXJzaW9ucyAyIGFuZCA1OgogCi0gICBEV1AgVmVyc2lvbiAyIGNvbWJpbmVzIGFsbCB0aGUgLmRl YnVnX2luZm8sIGV0Yy4gc2VjdGlvbnMgaW50byBvbmUsCisgICBEV1AgVmVyc2lvbnMgMiBhbmQg NSBjb21iaW5lIGFsbCB0aGUgLmRlYnVnX2luZm8sIGV0Yy4gc2VjdGlvbnMgaW50byBvbmUsCiAg ICBhbmQgdGhlIGVudHJpZXMgaW4gdGhlIGluZGV4IHRhYmxlcyBhcmUgbm93IG9mZnNldHMgaW50 byB0aGVzZSBzZWN0aW9ucy4KICAgIENVIG9mZnNldHMgYmVnaW4gYXQgMC4gIFRVIG9mZnNldHMg YmVnaW4gYXQgdGhlIHNpemUgb2YgdGhlIC5kZWJ1Z19pbmZvCiAgICBzZWN0aW9uLgpAQCAtMTE1 NjAsOCArMTE1ODQsOCBAQCBjcmVhdGVfY3VzX2hhc2hfdGFibGUgKGR3YXJmMl9wZXJfb2JqZmls ZSAqcGVyX29iamZpbGUsCiAgICAgSGVhZGVyCiAgICAgSGFzaCBUYWJsZSBvZiBTaWduYXR1cmVz ICAgZHdwX2hhc2hfdGFibGUuaGFzaF90YWJsZQogICAgIFBhcmFsbGVsIFRhYmxlIG9mIEluZGlj ZXMgIGR3cF9oYXNoX3RhYmxlLnVuaXRfdGFibGUKLSAgICBUYWJsZSBvZiBTZWN0aW9uIE9mZnNl dHMgICBkd3BfaGFzaF90YWJsZS52Mi57c2VjdGlvbl9pZHMsb2Zmc2V0c30KLSAgICBUYWJsZSBv ZiBTZWN0aW9uIFNpemVzICAgICBkd3BfaGFzaF90YWJsZS52Mi5zaXplcworICAgIFRhYmxlIG9m IFNlY3Rpb24gT2Zmc2V0cyAgIGR3cF9oYXNoX3RhYmxlLnt2Mnx2NX0ue3NlY3Rpb25faWRzLG9m ZnNldHN9CisgICAgVGFibGUgb2YgU2VjdGlvbiBTaXplcyAgICAgZHdwX2hhc2hfdGFibGUue3Yy fHY1fS5zaXplcwogCiAgICBUaGUgaW5kZXggc2VjdGlvbiBoZWFkZXIgY29uc2lzdHMgb2Y6CiAK QEAgLTExNTg0LDcgKzExNjA4LDcgQEAgY3JlYXRlX2N1c19oYXNoX3RhYmxlIChkd2FyZjJfcGVy X29iamZpbGUgKnBlcl9vYmpmaWxlLAogICAgRWFjaCByb3cgaW4gdGhlIGFycmF5IGlzIGluZGV4 ZWQgc3RhcnRpbmcgZnJvbSAwLiAgVGhlIGZpcnN0IHJvdyBwcm92aWRlcwogICAgYSBrZXkgdG8g dGhlIHJlbWFpbmluZyByb3dzOiBlYWNoIGNvbHVtbiBpbiB0aGlzIHJvdyBwcm92aWRlcyBhbiBp ZGVudGlmaWVyCiAgICBmb3IgYSBkZWJ1ZyBzZWN0aW9uLCBhbmQgdGhlIG9mZnNldHMgaW4gdGhl IHNhbWUgY29sdW1uIG9mIHN1YnNlcXVlbnQgcm93cwotICAgcmVmZXIgdG8gdGhhdCBzZWN0aW9u LiAgVGhlIHNlY3Rpb24gaWRlbnRpZmllcnMgYXJlOgorICAgcmVmZXIgdG8gdGhhdCBzZWN0aW9u LiAgVGhlIHNlY3Rpb24gaWRlbnRpZmllcnMgZm9yIFZlcnNpb24gMiBhcmU6CiAKICAgICBEV19T RUNUX0lORk8gICAgICAgICAxICAuZGVidWdfaW5mby5kd28KICAgICBEV19TRUNUX1RZUEVTICAg ICAgICAyICAuZGVidWdfdHlwZXMuZHdvCkBAIC0xMTU5NSw2ICsxMTYxOSwxNyBAQCBjcmVhdGVf Y3VzX2hhc2hfdGFibGUgKGR3YXJmMl9wZXJfb2JqZmlsZSAqcGVyX29iamZpbGUsCiAgICAgRFdf U0VDVF9NQUNJTkZPICAgICAgNyAgLmRlYnVnX21hY2luZm8uZHdvCiAgICAgRFdfU0VDVF9NQUNS TyAgICAgICAgOCAgLmRlYnVnX21hY3JvLmR3bwogCisgICBUaGUgc2VjdGlvbiBpZGVudGlmaWVy cyBmb3IgVmVyc2lvbiA1IGFyZToKKworICAgIERXX1NFQ1RfSU5GT19WNSAgICAgICAgIDEgIC5k ZWJ1Z19pbmZvLmR3bworICAgIERXX1NFQ1RfUkVTRVJWRURfVjUgICAgIDIgIC0tCisgICAgRFdf U0VDVF9BQkJSRVZfVjUgICAgICAgMyAgLmRlYnVnX2FiYnJldi5kd28KKyAgICBEV19TRUNUX0xJ TkVfVjUgICAgICAgICA0ICAuZGVidWdfbGluZS5kd28KKyAgICBEV19TRUNUX0xPQ0xJU1RTX1Y1 ICAgICA1ICAuZGVidWdfbG9jbGlzdHMuZHdvCisgICAgRFdfU0VDVF9TVFJfT0ZGU0VUU19WNSAg NiAgLmRlYnVnX3N0cl9vZmZzZXRzLmR3bworICAgIERXX1NFQ1RfTUFDUk9fVjUgICAgICAgIDcg IC5kZWJ1Z19tYWNyby5kd28KKyAgICBEV19TRUNUX1JOR0xJU1RTX1Y1ICAgICA4ICAuZGVidWdf cm5nbGlzdHMuZHdvCisKICAgIFRoZSBvZmZzZXRzIHByb3ZpZGVkIGJ5IHRoZSBDVSBhbmQgVFUg aW5kZXggc2VjdGlvbnMgYXJlIHRoZSBiYXNlIG9mZnNldHMKICAgIGZvciB0aGUgY29udHJpYnV0 aW9ucyBtYWRlIGJ5IGVhY2ggQ1Ugb3IgVFUgdG8gdGhlIGNvcnJlc3BvbmRpbmcgc2VjdGlvbgog ICAgaW4gdGhlIHBhY2thZ2UgZmlsZS4gIEVhY2ggQ1UgYW5kIFRVIGhlYWRlciBjb250YWlucyBh biBhYmJyZXZfb2Zmc2V0CkBAIC0xMTY2Myw5ICsxMTY5OCwxMiBAQCBjcmVhdGVfZHdwX2hhc2hf dGFibGUgKGR3YXJmMl9wZXJfb2JqZmlsZSAqcGVyX29iamZpbGUsCiAgIGluZGV4X3B0ciA9IGlu ZGV4LT5idWZmZXI7CiAgIGluZGV4X2VuZCA9IGluZGV4X3B0ciArIGluZGV4LT5zaXplOwogCisg IC8qIEZvciBWZXJzaW9uIDUsIHRoZSB2ZXJzaW9uIGlzIHJlYWxseSAyIGJ5dGVzIG9mIGRhdGEg JiAyIGJ5dGVzIG9mIHBhZGRpbmcuCisgICAgIEZvciBub3cgaXQncyBzYWZlIHRvIGp1c3QgcmVh ZCA0IGJ5dGVzIChwYXJ0aWN1bGFybHkgYXMgaXQncyBkaWZmaWN1bHQgdG8KKyAgICAgdGVsbCBp ZiB5b3UncmUgZGVhbGluZyB3aXRoIFZlcnNpb24gNSBiZWZvcmUgeW91J3ZlIHJlYWQgdGhlIHZl cnNpb24pLiAgICovCiAgIHZlcnNpb24gPSByZWFkXzRfYnl0ZXMgKGRiZmQsIGluZGV4X3B0cik7 CiAgIGluZGV4X3B0ciArPSA0OwotICBpZiAodmVyc2lvbiA9PSAyKQorICBpZiAoKHZlcnNpb24g PT0gMikgfHwgKHZlcnNpb24gPT0gNSkpCiAgICAgbnJfY29sdW1ucyA9IHJlYWRfNF9ieXRlcyAo ZGJmZCwgaW5kZXhfcHRyKTsKICAgZWxzZQogICAgIG5yX2NvbHVtbnMgPSAwOwpAQCAtMTE2NzUs NyArMTE3MTMsNyBAQCBjcmVhdGVfZHdwX2hhc2hfdGFibGUgKGR3YXJmMl9wZXJfb2JqZmlsZSAq cGVyX29iamZpbGUsCiAgIG5yX3Nsb3RzID0gcmVhZF80X2J5dGVzIChkYmZkLCBpbmRleF9wdHIp OwogICBpbmRleF9wdHIgKz0gNDsKIAotICBpZiAodmVyc2lvbiAhPSAxICYmIHZlcnNpb24gIT0g MikKKyAgaWYgKHZlcnNpb24gIT0gMSAmJiB2ZXJzaW9uICE9IDIgJiYgdmVyc2lvbiAhPSA1KQog ICAgIHsKICAgICAgIGVycm9yIChfKCJEd2FyZiBFcnJvcjogdW5zdXBwb3J0ZWQgRFdQIGZpbGUg dmVyc2lvbiAoJXMpIgogCSAgICAgICAiIFtpbiBtb2R1bGUgJXNdIiksCkBAIC0xMTY5OCwxMSAr MTE3MzYsMTMgQEAgY3JlYXRlX2R3cF9oYXNoX3RhYmxlIChkd2FyZjJfcGVyX29iamZpbGUgKnBl cl9vYmpmaWxlLAogCiAgIC8qIEV4aXQgZWFybHkgaWYgdGhlIHRhYmxlIGlzIGVtcHR5LiAgKi8K ICAgaWYgKG5yX3Nsb3RzID09IDAgfHwgbnJfdW5pdHMgPT0gMAotICAgICAgfHwgKHZlcnNpb24g PT0gMiAmJiBucl9jb2x1bW5zID09IDApKQorICAgICAgfHwgKHZlcnNpb24gPT0gMiAmJiBucl9j b2x1bW5zID09IDApCisgICAgICB8fCAodmVyc2lvbiA9PSA1ICYmIG5yX2NvbHVtbnMgPT0gMCkp CiAgICAgewogICAgICAgLyogQWxsIG11c3QgYmUgemVyby4gICovCiAgICAgICBpZiAobnJfc2xv dHMgIT0gMCB8fCBucl91bml0cyAhPSAwCi0JICB8fCAodmVyc2lvbiA9PSAyICYmIG5yX2NvbHVt bnMgIT0gMCkpCisJICB8fCAodmVyc2lvbiA9PSAyICYmIG5yX2NvbHVtbnMgIT0gMCkKKwkgIHx8 ICh2ZXJzaW9uID09IDUgJiYgbnJfY29sdW1ucyAhPSAwKSkKIAl7CiAJICBjb21wbGFpbnQgKF8o IkVtcHR5IERXUCBidXQgbnJfc2xvdHMsbnJfdW5pdHMsbnJfY29sdW1ucyBub3QiCiAJCSAgICAg ICAiIGFsbCB6ZXJvIFtpbiBtb2R1bGVzICVzXSIpLApAQCAtMTE3MTgsNyArMTE3NTgsNyBAQCBj cmVhdGVfZHdwX2hhc2hfdGFibGUgKGR3YXJmMl9wZXJfb2JqZmlsZSAqcGVyX29iamZpbGUsCiAg ICAgICAvKiBJdCdzIGhhcmRlciB0byBkZWNpZGUgd2hldGhlciB0aGUgc2VjdGlvbiBpcyB0b28g c21hbGwgaW4gdjEuCiAJIFYxIGlzIGRlcHJlY2F0ZWQgYW55d2F5IHNvIHdlIHB1bnQuICAqLwog ICAgIH0KLSAgZWxzZQorICBlbHNlIGlmICh2ZXJzaW9uID09IDIpCiAgICAgewogICAgICAgY29u c3QgZ2RiX2J5dGUgKmlkc19wdHIgPSBodGFiLT51bml0X3RhYmxlICsgc2l6ZW9mICh1aW50MzJf dCkgKiBucl9zbG90czsKICAgICAgIGludCAqaWRzID0gaHRhYi0+c2VjdGlvbl9wb29sLnYyLnNl Y3Rpb25faWRzOwpAQCAtMTE3ODksNiArMTE4MjksNzUgQEAgY3JlYXRlX2R3cF9oYXNoX3RhYmxl IChkd2FyZjJfcGVyX29iamZpbGUgKnBlcl9vYmpmaWxlLAogCQkgZHdwX2ZpbGUtPm5hbWUpOwog CX0KICAgICB9CisgIGVsc2UgLy8gdmVyc2lvbiA9PSA1CisgICAgeworICAgICAgY29uc3QgZ2Ri X2J5dGUgKmlkc19wdHIgPSBodGFiLT51bml0X3RhYmxlICsgc2l6ZW9mICh1aW50MzJfdCkgKiBu cl9zbG90czsKKyAgICAgIGludCAqaWRzID0gaHRhYi0+c2VjdGlvbl9wb29sLnY1LnNlY3Rpb25f aWRzOworICAgICAgc2l6ZV90IHNpemVvZl9pZHMgPSBzaXplb2YgKGh0YWItPnNlY3Rpb25fcG9v bC52NS5zZWN0aW9uX2lkcyk7CisgICAgICAvKiBSZXZlcnNlIG1hcCBmb3IgZXJyb3IgY2hlY2tp bmcuICAqLworICAgICAgaW50IGlkc19zZWVuW0RXX1NFQ1RfTUFYX1Y1ICsgMV07CisgICAgICBp bnQgaTsKKworICAgICAgaWYgKG5yX2NvbHVtbnMgPCAyKQorCXsKKwkgIGVycm9yIChfKCJEd2Fy ZiBFcnJvcjogYmFkIERXUCBoYXNoIHRhYmxlLCB0b28gZmV3IGNvbHVtbnMiCisJCSAgICIgaW4g c2VjdGlvbiB0YWJsZSBbaW4gbW9kdWxlICVzXSIpLAorCQkgZHdwX2ZpbGUtPm5hbWUpOworCX0K KyAgICAgIGlmIChucl9jb2x1bW5zID4gTUFYX05SX1Y1X0RXT19TRUNUSU9OUykKKwl7CisJICBl cnJvciAoXygiRHdhcmYgRXJyb3I6IGJhZCBEV1AgaGFzaCB0YWJsZSwgdG9vIG1hbnkgY29sdW1u cyIKKwkJICAgIiBpbiBzZWN0aW9uIHRhYmxlIFtpbiBtb2R1bGUgJXNdIiksCisJCSBkd3BfZmls ZS0+bmFtZSk7CisJfQorICAgICAgbWVtc2V0IChpZHMsIDI1NSwgc2l6ZW9mX2lkcyk7CisgICAg ICBtZW1zZXQgKGlkc19zZWVuLCAyNTUsIHNpemVvZiAoaWRzX3NlZW4pKTsKKyAgICAgIGZvciAo aSA9IDA7IGkgPCBucl9jb2x1bW5zOyArK2kpCisJeworCSAgaW50IGlkID0gcmVhZF80X2J5dGVz IChkYmZkLCBpZHNfcHRyICsgaSAqIHNpemVvZiAodWludDMyX3QpKTsKKworCSAgaWYgKGlkIDwg RFdfU0VDVF9NSU4gfHwgaWQgPiBEV19TRUNUX01BWF9WNSkKKwkgICAgeworCSAgICAgIGVycm9y IChfKCJEd2FyZiBFcnJvcjogYmFkIERXUCBoYXNoIHRhYmxlLCBiYWQgc2VjdGlvbiBpZCAlZCIK KwkJICAgICAgICIgaW4gc2VjdGlvbiB0YWJsZSBbaW4gbW9kdWxlICVzXSIpLAorCQkgICAgIGlk LCBkd3BfZmlsZS0+bmFtZSk7CisJICAgIH0KKwkgIGlmIChpZHNfc2VlbltpZF0gIT0gLTEpCisJ ICAgIHsKKwkgICAgICBlcnJvciAoXygiRHdhcmYgRXJyb3I6IGJhZCBEV1AgaGFzaCB0YWJsZSwg ZHVwbGljYXRlIHNlY3Rpb24iCisJCSAgICAgICAiIGlkICVkIGluIHNlY3Rpb24gdGFibGUgW2lu IG1vZHVsZSAlc10iKSwKKwkJICAgICBpZCwgZHdwX2ZpbGUtPm5hbWUpOworCSAgICB9CisJICBp ZHNfc2VlbltpZF0gPSBpOworCSAgaWRzW2ldID0gaWQ7CisJfQorICAgICAgLyogTXVzdCBoYXZl IHNlZW4gYW4gaW5mbyBzZWN0aW9uLiAgKi8KKyAgICAgIGlmIChpZHNfc2VlbltEV19TRUNUX0lO Rk9fVjVdID09IC0xKQorCXsKKwkgIGVycm9yIChfKCJEd2FyZiBFcnJvcjogYmFkIERXUCBoYXNo IHRhYmxlLCBtaXNzaW5nL2R1cGxpY2F0ZSIKKwkJICAgIiBEV08gaW5mby90eXBlcyBzZWN0aW9u IFtpbiBtb2R1bGUgJXNdIiksCisJCSBkd3BfZmlsZS0+bmFtZSk7CisJfQorICAgICAgLyogTXVz dCBoYXZlIGFuIGFiYnJldiBzZWN0aW9uLiAgKi8KKyAgICAgIGlmIChpZHNfc2VlbltEV19TRUNU X0FCQlJFVl9WNV0gPT0gLTEpCisJeworCSAgZXJyb3IgKF8oIkR3YXJmIEVycm9yOiBiYWQgRFdQ IGhhc2ggdGFibGUsIG1pc3NpbmcgRFdPIGFiYnJldiIKKwkJICAgIiBzZWN0aW9uIFtpbiBtb2R1 bGUgJXNdIiksCisJCSBkd3BfZmlsZS0+bmFtZSk7CisJfQorICAgICAgaHRhYi0+c2VjdGlvbl9w b29sLnY1Lm9mZnNldHMgPSBpZHNfcHRyICsgc2l6ZW9mICh1aW50MzJfdCkgKiBucl9jb2x1bW5z OworICAgICAgaHRhYi0+c2VjdGlvbl9wb29sLnY1LnNpemVzID0KKwlodGFiLT5zZWN0aW9uX3Bv b2wudjUub2Zmc2V0cyArIChzaXplb2YgKHVpbnQzMl90KQorCQkJCQkgKiBucl91bml0cyAqIG5y X2NvbHVtbnMpOworICAgICAgaWYgKChodGFiLT5zZWN0aW9uX3Bvb2wudjUuc2l6ZXMgKyAoc2l6 ZW9mICh1aW50MzJfdCkKKwkJCQkJICAqIG5yX3VuaXRzICogbnJfY29sdW1ucykpCisJICA+IGlu ZGV4X2VuZCkKKwl7CisJICBlcnJvciAoXygiRHdhcmYgRXJyb3I6IERXUCBpbmRleCBzZWN0aW9u IGlzIGNvcnJ1cHQgKHRvbyBzbWFsbCkiCisJCSAgICIgW2luIG1vZHVsZSAlc10iKSwKKwkJIGR3 cF9maWxlLT5uYW1lKTsKKwl9CisgICAgfQogCiAgIHJldHVybiBodGFiOwogfQpAQCAtMTIwMjgs MTUgKzEyMTM3LDE1IEBAIGNyZWF0ZV9kd29fdW5pdF9pbl9kd3BfdjEgKGR3YXJmMl9wZXJfb2Jq ZmlsZSAqcGVyX29iamZpbGUsCiAgIHJldHVybiBkd29fdW5pdDsKIH0KIAotLyogU3Vicm91dGlu ZSBvZiBjcmVhdGVfZHdvX3VuaXRfaW5fZHdwX3YyIHRvIHNpbXBsaWZ5IGl0LgotICAgR2l2ZW4g YSBwb2ludGVyIHRvIHRoZSBjb250YWluaW5nIHNlY3Rpb24gU0VDVElPTiwgYW5kIE9GRlNFVCxT SVpFIG9mIHRoZQotICAgcGllY2Ugd2l0aGluIHRoYXQgc2VjdGlvbiB1c2VkIGJ5IGEgVFUvQ1Us IHJldHVybiBhIHZpcnR1YWwgc2VjdGlvbgotICAgb2YganVzdCB0aGF0IHBpZWNlLiAgKi8KKy8q IFN1YnJvdXRpbmUgb2YgY3JlYXRlX2R3b191bml0X2luX2R3cF92MiBhbmQgY3JlYXRlX2R3b191 bml0X2luX2R3cF92NSB0bworICAgc2ltcGxpZnkgdGhlbS4gIEdpdmVuIGEgcG9pbnRlciB0byB0 aGUgY29udGFpbmluZyBzZWN0aW9uIFNFQ1RJT04sIGFuZAorICAgT0ZGU0VULFNJWkUgb2YgdGhl IHBpZWNlIHdpdGhpbiB0aGF0IHNlY3Rpb24gdXNlZCBieSBhIFRVL0NVLCByZXR1cm4gYQorICAg dmlydHVhbCBzZWN0aW9uIG9mIGp1c3QgdGhhdCBwaWVjZS4gICovCiAKIHN0YXRpYyBzdHJ1Y3Qg ZHdhcmYyX3NlY3Rpb25faW5mbwotY3JlYXRlX2R3cF92Ml9zZWN0aW9uIChkd2FyZjJfcGVyX29i amZpbGUgKnBlcl9vYmpmaWxlLAotCQkgICAgICAgc3RydWN0IGR3YXJmMl9zZWN0aW9uX2luZm8g KnNlY3Rpb24sCi0JCSAgICAgICBiZmRfc2l6ZV90eXBlIG9mZnNldCwgYmZkX3NpemVfdHlwZSBz aXplKQorY3JlYXRlX2R3cF92Ml9vcl92NV9zZWN0aW9uIChkd2FyZjJfcGVyX29iamZpbGUgKnBl cl9vYmpmaWxlLAorCQkJICAgICBzdHJ1Y3QgZHdhcmYyX3NlY3Rpb25faW5mbyAqc2VjdGlvbiwK KwkJCSAgICAgYmZkX3NpemVfdHlwZSBvZmZzZXQsIGJmZF9zaXplX3R5cGUgc2l6ZSkKIHsKICAg c3RydWN0IGR3YXJmMl9zZWN0aW9uX2luZm8gcmVzdWx0OwogICBhc2VjdGlvbiAqc2VjdHA7CkBA IC0xMjA1OSw3ICsxMjE2OCw3IEBAIGNyZWF0ZV9kd3BfdjJfc2VjdGlvbiAoZHdhcmYyX3Blcl9v YmpmaWxlICpwZXJfb2JqZmlsZSwKICAgaWYgKHNlY3RwID09IE5VTEwKICAgICAgIHx8IG9mZnNl dCArIHNpemUgPiBiZmRfc2VjdGlvbl9zaXplIChzZWN0cCkpCiAgICAgewotICAgICAgZXJyb3Ig KF8oIkR3YXJmIEVycm9yOiBCYWQgRFdQIFYyIHNlY3Rpb24gaW5mbywgZG9lc24ndCBmaXQiCisg ICAgICBlcnJvciAoXygiRHdhcmYgRXJyb3I6IEJhZCBEV1AgVjIgb3IgVjUgc2VjdGlvbiBpbmZv LCBkb2Vzbid0IGZpdCIKIAkgICAgICAgIiBpbiBzZWN0aW9uICVzIFtpbiBtb2R1bGUgJXNdIiks CiAJICAgICBzZWN0cCA/IGJmZF9zZWN0aW9uX25hbWUgKHNlY3RwKSA6ICI8dW5rbm93bj4iLAog CSAgICAgb2JqZmlsZV9uYW1lIChwZXJfb2JqZmlsZS0+b2JqZmlsZSkpOwpAQCAtMTIwODgsNyAr MTIxOTcsNyBAQCBjcmVhdGVfZHdvX3VuaXRfaW5fZHdwX3YyIChkd2FyZjJfcGVyX29iamZpbGUg KnBlcl9vYmpmaWxlLAogICBjb25zdCBjaGFyICpraW5kID0gaXNfZGVidWdfdHlwZXMgPyAiVFUi IDogIkNVIjsKICAgc3RydWN0IGR3b19maWxlICpkd29fZmlsZTsKICAgc3RydWN0IGR3b191bml0 ICpkd29fdW5pdDsKLSAgc3RydWN0IHZpcnR1YWxfdjJfZHdvX3NlY3Rpb25zIHNlY3Rpb25zOwor ICBzdHJ1Y3QgdmlydHVhbF92Ml9vcl92NV9kd29fc2VjdGlvbnMgc2VjdGlvbnM7CiAgIHZvaWQg Kipkd29fZmlsZV9zbG90OwogICBpbnQgaTsKIApAQCAtMTIxODQsMjUgKzEyMjkzLDI5IEBAIGNy ZWF0ZV9kd29fdW5pdF9pbl9kd3BfdjIgKGR3YXJmMl9wZXJfb2JqZmlsZSAqcGVyX29iamZpbGUs CiAgICAgICBkd29fZmlsZS0+ZHdvX25hbWUgPSBwZXJfb2JqZmlsZS0+b2JqZmlsZS0+aW50ZXJu ICh2aXJ0dWFsX2R3b19uYW1lKTsKICAgICAgIGR3b19maWxlLT5jb21wX2RpciA9IGNvbXBfZGly OwogICAgICAgZHdvX2ZpbGUtPnNlY3Rpb25zLmFiYnJldiA9Ci0JY3JlYXRlX2R3cF92Ml9zZWN0 aW9uIChwZXJfb2JqZmlsZSwgJmR3cF9maWxlLT5zZWN0aW9ucy5hYmJyZXYsCi0JCQkgICAgICAg c2VjdGlvbnMuYWJicmV2X29mZnNldCwgc2VjdGlvbnMuYWJicmV2X3NpemUpOworCWNyZWF0ZV9k d3BfdjJfb3JfdjVfc2VjdGlvbiAocGVyX29iamZpbGUsICZkd3BfZmlsZS0+c2VjdGlvbnMuYWJi cmV2LAorCQkJCSAgICAgc2VjdGlvbnMuYWJicmV2X29mZnNldCwKKwkJCQkgICAgIHNlY3Rpb25z LmFiYnJldl9zaXplKTsKICAgICAgIGR3b19maWxlLT5zZWN0aW9ucy5saW5lID0KLQljcmVhdGVf ZHdwX3YyX3NlY3Rpb24gKHBlcl9vYmpmaWxlLCAmZHdwX2ZpbGUtPnNlY3Rpb25zLmxpbmUsCi0J CQkgICAgICAgc2VjdGlvbnMubGluZV9vZmZzZXQsIHNlY3Rpb25zLmxpbmVfc2l6ZSk7CisJY3Jl YXRlX2R3cF92Ml9vcl92NV9zZWN0aW9uIChwZXJfb2JqZmlsZSwgJmR3cF9maWxlLT5zZWN0aW9u cy5saW5lLAorCQkJCSAgICAgc2VjdGlvbnMubGluZV9vZmZzZXQsCisJCQkJICAgICBzZWN0aW9u cy5saW5lX3NpemUpOwogICAgICAgZHdvX2ZpbGUtPnNlY3Rpb25zLmxvYyA9Ci0JY3JlYXRlX2R3 cF92Ml9zZWN0aW9uIChwZXJfb2JqZmlsZSwgJmR3cF9maWxlLT5zZWN0aW9ucy5sb2MsCi0JCQkg ICAgICAgc2VjdGlvbnMubG9jX29mZnNldCwgc2VjdGlvbnMubG9jX3NpemUpOworCWNyZWF0ZV9k d3BfdjJfb3JfdjVfc2VjdGlvbiAocGVyX29iamZpbGUsICZkd3BfZmlsZS0+c2VjdGlvbnMubG9j LAorCQkJCSAgICAgc2VjdGlvbnMubG9jX29mZnNldCwgc2VjdGlvbnMubG9jX3NpemUpOwogICAg ICAgZHdvX2ZpbGUtPnNlY3Rpb25zLm1hY2luZm8gPQotCWNyZWF0ZV9kd3BfdjJfc2VjdGlvbiAo cGVyX29iamZpbGUsICZkd3BfZmlsZS0+c2VjdGlvbnMubWFjaW5mbywKLQkJCSAgICAgICBzZWN0 aW9ucy5tYWNpbmZvX29mZnNldCwgc2VjdGlvbnMubWFjaW5mb19zaXplKTsKKwljcmVhdGVfZHdw X3YyX29yX3Y1X3NlY3Rpb24gKHBlcl9vYmpmaWxlLCAmZHdwX2ZpbGUtPnNlY3Rpb25zLm1hY2lu Zm8sCisJCQkJICAgICBzZWN0aW9ucy5tYWNpbmZvX29mZnNldCwKKwkJCQkgICAgIHNlY3Rpb25z Lm1hY2luZm9fc2l6ZSk7CiAgICAgICBkd29fZmlsZS0+c2VjdGlvbnMubWFjcm8gPQotCWNyZWF0 ZV9kd3BfdjJfc2VjdGlvbiAocGVyX29iamZpbGUsICZkd3BfZmlsZS0+c2VjdGlvbnMubWFjcm8s Ci0JCQkgICAgICAgc2VjdGlvbnMubWFjcm9fb2Zmc2V0LCBzZWN0aW9ucy5tYWNyb19zaXplKTsK KwljcmVhdGVfZHdwX3YyX29yX3Y1X3NlY3Rpb24gKHBlcl9vYmpmaWxlLCAmZHdwX2ZpbGUtPnNl Y3Rpb25zLm1hY3JvLAorCQkJCSAgICAgc2VjdGlvbnMubWFjcm9fb2Zmc2V0LAorCQkJCSAgICAg c2VjdGlvbnMubWFjcm9fc2l6ZSk7CiAgICAgICBkd29fZmlsZS0+c2VjdGlvbnMuc3RyX29mZnNl dHMgPQotCWNyZWF0ZV9kd3BfdjJfc2VjdGlvbiAocGVyX29iamZpbGUsCi0JCQkgICAgICAgJmR3 cF9maWxlLT5zZWN0aW9ucy5zdHJfb2Zmc2V0cywKLQkJCSAgICAgICBzZWN0aW9ucy5zdHJfb2Zm c2V0c19vZmZzZXQsCi0JCQkgICAgICAgc2VjdGlvbnMuc3RyX29mZnNldHNfc2l6ZSk7CisJY3Jl YXRlX2R3cF92Ml9vcl92NV9zZWN0aW9uIChwZXJfb2JqZmlsZSwKKwkJCQkgICAgICZkd3BfZmls ZS0+c2VjdGlvbnMuc3RyX29mZnNldHMsCisJCQkJICAgICBzZWN0aW9ucy5zdHJfb2Zmc2V0c19v ZmZzZXQsCisJCQkJICAgICBzZWN0aW9ucy5zdHJfb2Zmc2V0c19zaXplKTsKICAgICAgIC8qIFRo ZSAic3RyIiBzZWN0aW9uIGlzIGdsb2JhbCB0byB0aGUgZW50aXJlIERXUCBmaWxlLiAgKi8KICAg ICAgIGR3b19maWxlLT5zZWN0aW9ucy5zdHIgPSBkd3BfZmlsZS0+c2VjdGlvbnMuc3RyOwogICAg ICAgLyogVGhlIGluZm8gb3IgdHlwZXMgc2VjdGlvbiBpcyBhc3NpZ25lZCBiZWxvdyB0byBkd29f dW5pdCwKQEAgLTEyMjI5LDEyICsxMjM0MiwyMDAgQEAgY3JlYXRlX2R3b191bml0X2luX2R3cF92 MiAoZHdhcmYyX3Blcl9vYmpmaWxlICpwZXJfb2JqZmlsZSwKICAgZHdvX3VuaXQtPnNpZ25hdHVy ZSA9IHNpZ25hdHVyZTsKICAgZHdvX3VuaXQtPnNlY3Rpb24gPQogICAgIFhPQk5FVyAoJnBlcl9v YmpmaWxlLT5wZXJfYmZkLT5vYnN0YWNrLCBzdHJ1Y3QgZHdhcmYyX3NlY3Rpb25faW5mbyk7Ci0g ICpkd29fdW5pdC0+c2VjdGlvbiA9IGNyZWF0ZV9kd3BfdjJfc2VjdGlvbiAocGVyX29iamZpbGUs Ci0JCQkJCSAgICAgIGlzX2RlYnVnX3R5cGVzCi0JCQkJCSAgICAgID8gJmR3cF9maWxlLT5zZWN0 aW9ucy50eXBlcwotCQkJCQkgICAgICA6ICZkd3BfZmlsZS0+c2VjdGlvbnMuaW5mbywKLQkJCQkJ ICAgICAgc2VjdGlvbnMuaW5mb19vcl90eXBlc19vZmZzZXQsCi0JCQkJCSAgICAgIHNlY3Rpb25z LmluZm9fb3JfdHlwZXNfc2l6ZSk7CisgICpkd29fdW5pdC0+c2VjdGlvbiA9IGNyZWF0ZV9kd3Bf djJfb3JfdjVfc2VjdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgIChwZXJfb2JqZmlsZSwK KwkJCSAgaXNfZGVidWdfdHlwZXMKKwkJCSAgPyAmZHdwX2ZpbGUtPnNlY3Rpb25zLnR5cGVzCisJ CQkgIDogJmR3cF9maWxlLT5zZWN0aW9ucy5pbmZvLAorCQkJICBzZWN0aW9ucy5pbmZvX29yX3R5 cGVzX29mZnNldCwKKwkJCSAgc2VjdGlvbnMuaW5mb19vcl90eXBlc19zaXplKTsKKyAgLyogZHdv X3VuaXQtPntvZmZzZXQsbGVuZ3RoLHR5cGVfb2Zmc2V0X2luX3R1fSBhcmUgc2V0IGxhdGVyLiAg Ki8KKworICByZXR1cm4gZHdvX3VuaXQ7Cit9CisKKy8qIENyZWF0ZSBhIGR3b191bml0IG9iamVj dCBmb3IgdGhlIERXTyB1bml0IHdpdGggc2lnbmF0dXJlIFNJR05BVFVSRS4KKyAgIFVOSVRfSU5E RVggaXMgdGhlIGluZGV4IG9mIHRoZSBEV08gdW5pdCBpbiB0aGUgRFdQIGhhc2ggdGFibGUuCisg ICBDT01QX0RJUiBpcyB0aGUgRFdfQVRfY29tcF9kaXIgYXR0cmlidXRlIG9mIHRoZSByZWZlcmVu Y2luZyBDVS4KKyAgIFRoaXMgaXMgZm9yIERXUCB2ZXJzaW9uIDUgZmlsZXMuICAqLworCitzdGF0 aWMgc3RydWN0IGR3b191bml0ICoKK2NyZWF0ZV9kd29fdW5pdF9pbl9kd3BfdjUgKHN0cnVjdCBk d2FyZjJfcGVyX29iamZpbGUgKmR3YXJmMl9wZXJfb2JqZmlsZSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgIHN0cnVjdCBkd3BfZmlsZSAqZHdwX2ZpbGUsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICB1aW50MzJfdCB1bml0X2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg Y29uc3QgY2hhciAqY29tcF9kaXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBVTE9OR0VT VCBzaWduYXR1cmUsIGludCBpc19kZWJ1Z190eXBlcykKK3sKKyAgc3RydWN0IG9iamZpbGUgKm9i amZpbGUgPSBkd2FyZjJfcGVyX29iamZpbGUtPm9iamZpbGU7CisgIGNvbnN0IHN0cnVjdCBkd3Bf aGFzaF90YWJsZSAqZHdwX2h0YWIgPQorICAgIGlzX2RlYnVnX3R5cGVzID8gZHdwX2ZpbGUtPnR1 cyA6IGR3cF9maWxlLT5jdXM7CisgIGJmZCAqZGJmZCA9IGR3cF9maWxlLT5kYmZkLmdldCAoKTsK KyAgY29uc3QgY2hhciAqa2luZCA9IGlzX2RlYnVnX3R5cGVzID8gIlRVIiA6ICJDVSI7CisgIHN0 cnVjdCBkd29fZmlsZSAqZHdvX2ZpbGU7CisgIHN0cnVjdCBkd29fdW5pdCAqZHdvX3VuaXQ7Cisg IHN0cnVjdCB2aXJ0dWFsX3YyX29yX3Y1X2R3b19zZWN0aW9ucyBzZWN0aW9uczsKKyAgdm9pZCAq KmR3b19maWxlX3Nsb3Q7CisgIGludCBpOworCisgIGdkYl9hc3NlcnQgKGR3cF9maWxlLT52ZXJz aW9uID09IDUpOworCisgIGlmIChkd2FyZl9yZWFkX2RlYnVnKQorICAgIHsKKyAgICAgIGZwcmlu dGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywgIlJlYWRpbmcgJXMgJXMvJXMgaW4gRFdQIFY1IGZp bGU6ICVzXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICBraW5kLAorICAgICAgICAgICAg ICAgICAgICAgICAgICBwdWxvbmdlc3QgKHVuaXRfaW5kZXgpLCBoZXhfc3RyaW5nIChzaWduYXR1 cmUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICBkd3BfZmlsZS0+bmFtZSk7CisgICAgfQor CisgIC8qIEZldGNoIHRoZSBzZWN0aW9uIG9mZnNldHMgb2YgdGhpcyBEV08gdW5pdC4gICovCisK KyAgbWVtc2V0ICgmc2VjdGlvbnMsIDAsIHNpemVvZiAoc2VjdGlvbnMpKTsKKworICBmb3IgKGkg PSAwOyBpIDwgZHdwX2h0YWItPm5yX2NvbHVtbnM7ICsraSkKKyAgICB7CisgICAgICB1aW50MzJf dCBvZmZzZXQgPSByZWFkXzRfYnl0ZXMgKGRiZmQsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGR3cF9odGFiLT5zZWN0aW9uX3Bvb2wudjUub2Zmc2V0cworICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICgoKHVuaXRfaW5kZXggLSAxKQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBkd3BfaHRhYi0+bnJfY29sdW1u cworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBpKQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHNpemVvZiAodWludDMyX3QpKSk7 CisgICAgICB1aW50MzJfdCBzaXplID0gcmVhZF80X2J5dGVzIChkYmZkLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZHdwX2h0YWItPnNlY3Rpb25fcG9vbC52NS5zaXplcwor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAoKCh1bml0X2luZGV4IC0gMSkg KiBkd3BfaHRhYi0+bnJfY29sdW1ucworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICsgaSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogc2l6 ZW9mICh1aW50MzJfdCkpKTsKKworICAgICAgc3dpdGNoIChkd3BfaHRhYi0+c2VjdGlvbl9wb29s LnY1LnNlY3Rpb25faWRzW2ldKQorICAgICAgICB7CisgICAgICAgICAgY2FzZSBEV19TRUNUX0FC QlJFVl9WNToKKyAgICAgICAgICAgIHNlY3Rpb25zLmFiYnJldl9vZmZzZXQgPSBvZmZzZXQ7Cisg ICAgICAgICAgICBzZWN0aW9ucy5hYmJyZXZfc2l6ZSA9IHNpemU7CisgICAgICAgICAgICBicmVh azsKKyAgICAgICAgICBjYXNlIERXX1NFQ1RfSU5GT19WNToKKyAgICAgICAgICAgIHNlY3Rpb25z LmluZm9fb3JfdHlwZXNfb2Zmc2V0ID0gb2Zmc2V0OworICAgICAgICAgICAgc2VjdGlvbnMuaW5m b19vcl90eXBlc19zaXplID0gc2l6ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIGNh c2UgRFdfU0VDVF9MSU5FX1Y1OgorICAgICAgICAgICAgc2VjdGlvbnMubGluZV9vZmZzZXQgPSBv ZmZzZXQ7CisgICAgICAgICAgICBzZWN0aW9ucy5saW5lX3NpemUgPSBzaXplOworICAgICAgICAg ICAgYnJlYWs7CisgICAgICAgICAgY2FzZSBEV19TRUNUX0xPQ0xJU1RTX1Y1OgorICAgICAgICAg ICAgc2VjdGlvbnMubG9jbGlzdHNfb2Zmc2V0ID0gb2Zmc2V0OworICAgICAgICAgICAgc2VjdGlv bnMubG9jbGlzdHNfc2l6ZSA9IHNpemU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBj YXNlIERXX1NFQ1RfTUFDUk9fVjU6CisgICAgICAgICAgICBzZWN0aW9ucy5tYWNyb19vZmZzZXQg PSBvZmZzZXQ7CisgICAgICAgICAgICBzZWN0aW9ucy5tYWNyb19zaXplID0gc2l6ZTsKKyAgICAg ICAgICAgIGJyZWFrOworICAgICAgICAgIGNhc2UgRFdfU0VDVF9STkdMSVNUU19WNToKKyAgICAg ICAgICAgIHNlY3Rpb25zLnJuZ2xpc3RzX29mZnNldCA9IG9mZnNldDsKKyAgICAgICAgICAgIHNl Y3Rpb25zLnJuZ2xpc3RzX3NpemUgPSBzaXplOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg ICAgY2FzZSBEV19TRUNUX1NUUl9PRkZTRVRTX1Y1OgorICAgICAgICAgICAgc2VjdGlvbnMuc3Ry X29mZnNldHNfb2Zmc2V0ID0gb2Zmc2V0OworICAgICAgICAgICAgc2VjdGlvbnMuc3RyX29mZnNl dHNfc2l6ZSA9IHNpemU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBjYXNlIERXX1NF Q1RfUkVTRVJWRURfVjU6CisgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGJyZWFrOwor ICAgICAgICB9CisgICAgfQorCisgIC8qIEl0J3MgZWFzaWVyIGZvciB0aGUgcmVzdCBvZiB0aGUg Y29kZSBpZiB3ZSBmYWtlIGEgc3RydWN0IGR3b19maWxlIGFuZAorICAgICBoYXZlIGR3b191bml0 ICJsaXZlIiBpbiB0aGF0LiAgQXQgbGVhc3QgZm9yIG5vdy4KKworICAgICBUaGUgRFdQIGZpbGUg Y2FuIGJlIG1hZGUgdXAgb2YgYSByYW5kb20gY29sbGVjdGlvbiBvZiBDVXMgYW5kIFRVcy4KKyAg ICAgSG93ZXZlciwgZm9yIGVhY2ggQ1UgKyBzZXQgb2YgVFVzIHRoYXQgY2FtZSBmcm9tIHRoZSBz YW1lIG9yaWdpbmFsIERXTworICAgICBmaWxlLCB3ZSBjYW4gY29tYmluZSB0aGVtIGJhY2sgaW50 byBhIHZpcnR1YWwgRFdPIGZpbGUgdG8gc2F2ZSBzcGFjZQorICAgICAoZmV3ZXIgc3RydWN0IGR3 b19maWxlIG9iamVjdHMgdG8gYWxsb2NhdGUpLiAgUmVtZW1iZXIgdGhhdCBmb3IgcmVhbGx5Cisg ICAgIGxhcmdlIGFwcHMgdGhlcmUgY2FuIGJlIG9uIHRoZSBvcmRlciBvZiA4SyBDVXMgYW5kIDIw MEsgVFVzLCBvciBtb3JlLiAgKi8KKworICBzdGQ6OnN0cmluZyB2aXJ0dWFsX2R3b19uYW1lID0K KyAgICBzdHJpbmdfcHJpbnRmICgidmlydHVhbC1kd28vJWxkLSVsZC0lbGQtJWxkLSVsZC0lbGQi LAorICAgICAgICAgICAgICAgICAobG9uZykgKHNlY3Rpb25zLmFiYnJldl9zaXplID8gc2VjdGlv bnMuYWJicmV2X29mZnNldCA6IDApLAorICAgICAgICAgICAgICAgICAobG9uZykgKHNlY3Rpb25z LmxpbmVfc2l6ZSA/IHNlY3Rpb25zLmxpbmVfb2Zmc2V0IDogMCksCisgICAgICAgICAgICAgICAg IChsb25nKSAoc2VjdGlvbnMubG9jbGlzdHNfc2l6ZSA/IHNlY3Rpb25zLmxvY2xpc3RzX29mZnNl dCA6IDApLAorICAgICAgICAgICAgICAgICAobG9uZykgKHNlY3Rpb25zLnN0cl9vZmZzZXRzX3Np emUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHNlY3Rpb25zLnN0cl9vZmZzZXRzX29m ZnNldCA6IDApLAorICAgICAgICAgICAgICAgICAobG9uZykgKHNlY3Rpb25zLm1hY3JvX3NpemUg PyBzZWN0aW9ucy5tYWNyb19vZmZzZXQgOiAwKSwKKyAgICAgICAgICAgICAgICAgKGxvbmcpIChz ZWN0aW9ucy5ybmdsaXN0c19zaXplID8gc2VjdGlvbnMucm5nbGlzdHNfb2Zmc2V0OiAwKSk7Cisg IC8qIENhbiB3ZSB1c2UgYW4gZXhpc3RpbmcgdmlydHVhbCBEV08gZmlsZT8gICovCisgIGR3b19m aWxlX3Nsb3QgPSBsb29rdXBfZHdvX2ZpbGVfc2xvdCAoZHdhcmYyX3Blcl9vYmpmaWxlLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpcnR1YWxfZHdvX25hbWUuY19z dHIgKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcF9kaXIp OworICAvKiBDcmVhdGUgb25lIGlmIG5lY2Vzc2FyeS4gICovCisgIGlmICgqZHdvX2ZpbGVfc2xv dCA9PSBOVUxMKQorICAgIHsKKyAgICAgIGlmIChkd2FyZl9yZWFkX2RlYnVnKQorICAgICAgICB7 CisgICAgICAgICAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLCAiQ3JlYXRpbmcgdmly dHVhbCBEV086ICVzXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlydHVhbF9k d29fbmFtZS5jX3N0ciAoKSk7CisgICAgICAgIH0KKyAgICAgIGR3b19maWxlID0gbmV3IHN0cnVj dCBkd29fZmlsZTsKKyAgICAgIGR3b19maWxlLT5kd29fbmFtZSA9IG9ic3RhY2tfc3RyZHVwICgm b2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHZpcnR1YWxfZHdvX25hbWUpOworICAgICAgZHdvX2ZpbGUtPmNvbXBfZGly ID0gY29tcF9kaXI7CisgICAgICBkd29fZmlsZS0+c2VjdGlvbnMuYWJicmV2ID0KKyAgICAgICAg Y3JlYXRlX2R3cF92Ml9vcl92NV9zZWN0aW9uIChkd2FyZjJfcGVyX29iamZpbGUsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmR3cF9maWxlLT5zZWN0aW9ucy5hYmJyZXYs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbnMuYWJicmV2X29m ZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9ucy5hYmJy ZXZfc2l6ZSk7CisgICAgICBkd29fZmlsZS0+c2VjdGlvbnMubGluZSA9CisgICAgICAgIGNyZWF0 ZV9kd3BfdjJfb3JfdjVfc2VjdGlvbiAoZHdhcmYyX3Blcl9vYmpmaWxlLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICZkd3BfZmlsZS0+c2VjdGlvbnMubGluZSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9ucy5saW5lX29mZnNldCwgc2Vj dGlvbnMubGluZV9zaXplKTsKKyAgICAgIGR3b19maWxlLT5zZWN0aW9ucy5tYWNybyA9CisgICAg ICAgIGNyZWF0ZV9kd3BfdjJfb3JfdjVfc2VjdGlvbiAoZHdhcmYyX3Blcl9vYmpmaWxlLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZkd3BfZmlsZS0+c2VjdGlvbnMubWFj cm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbnMubWFjcm9f b2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb25zLm1h Y3JvX3NpemUpOworICAgICAgZHdvX2ZpbGUtPnNlY3Rpb25zLmxvY2xpc3RzID0KKyAgICAgICAg Y3JlYXRlX2R3cF92Ml9vcl92NV9zZWN0aW9uIChkd2FyZjJfcGVyX29iamZpbGUsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmR3cF9maWxlLT5zZWN0aW9ucy5sb2NsaXN0 cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9ucy5sb2NsaXN0 c19vZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbnMu bG9jbGlzdHNfc2l6ZSk7CisgICAgICBkd29fZmlsZS0+c2VjdGlvbnMucm5nbGlzdHMgPQorICAg ICAgICBjcmVhdGVfZHdwX3YyX29yX3Y1X3NlY3Rpb24gKGR3YXJmMl9wZXJfb2JqZmlsZSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZHdwX2ZpbGUtPnNlY3Rpb25zLnJu Z2xpc3RzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb25zLnJu Z2xpc3RzX29mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0 aW9ucy5ybmdsaXN0c19zaXplKTsKKyAgICAgIGR3b19maWxlLT5zZWN0aW9ucy5zdHJfb2Zmc2V0 cyA9CisgICAgICAgIGNyZWF0ZV9kd3BfdjJfb3JfdjVfc2VjdGlvbiAoZHdhcmYyX3Blcl9vYmpm aWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZkd3BfZmlsZS0+c2Vj dGlvbnMuc3RyX29mZnNldHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg c2VjdGlvbnMuc3RyX29mZnNldHNfb2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHNlY3Rpb25zLnN0cl9vZmZzZXRzX3NpemUpOworICAgICAgLyogVGhlICJzdHIi IHNlY3Rpb24gaXMgZ2xvYmFsIHRvIHRoZSBlbnRpcmUgRFdQIGZpbGUuICAqLworICAgICAgZHdv X2ZpbGUtPnNlY3Rpb25zLnN0ciA9IGR3cF9maWxlLT5zZWN0aW9ucy5zdHI7CisgICAgICAvKiBU aGUgaW5mbyBvciB0eXBlcyBzZWN0aW9uIGlzIGFzc2lnbmVkIGJlbG93IHRvIGR3b191bml0LAor ICAgICAgICAgdGhlcmUncyBubyBuZWVkIHRvIHJlY29yZCBpdCBpbiBkd29fZmlsZS4KKyAgICAg ICAgIEFsc28sIHdlIGNhbid0IHNpbXBseSByZWNvcmQgdHlwZSBzZWN0aW9ucyBpbiBkd29fZmls ZSBiZWNhdXNlCisgICAgICAgICB3ZSByZWNvcmQgYSBwb2ludGVyIGludG8gdGhlIHZlY3RvciBp biBkd29fdW5pdC4gIEFzIHdlIGNvbGxlY3QgbW9yZQorICAgICAgICAgdHlwZXMgd2UnbGwgZ3Jv dyB0aGUgdmVjdG9yIGFuZCBldmVudHVhbGx5IGhhdmUgdG8gcmVhbGxvY2F0ZSBzcGFjZQorICAg ICAgICAgZm9yIGl0LCBpbnZhbGlkYXRpbmcgYWxsIGNvcGllcyBvZiBwb2ludGVycyBpbnRvIHRo ZSBwcmV2aW91cworICAgICAgICAgY29udGVudHMuICAqLworICAgICAgKmR3b19maWxlX3Nsb3Qg PSBkd29fZmlsZTsKKyAgICB9CisgIGVsc2UKKyAgICB7CisgICAgICBpZiAoZHdhcmZfcmVhZF9k ZWJ1ZykKKyAgICAgICAgeworICAgICAgICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxv ZywgIlVzaW5nIGV4aXN0aW5nIHZpcnR1YWwgRFdPOiAlc1xuIiwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHZpcnR1YWxfZHdvX25hbWUuY19zdHIgKCkpOworICAgICAgICB9CisgICAg ICBkd29fZmlsZSA9IChzdHJ1Y3QgZHdvX2ZpbGUgKikgKmR3b19maWxlX3Nsb3Q7CisgICAgfQor CisgIGR3b191bml0ID0gT0JTVEFDS19aQUxMT0MgKCZvYmpmaWxlLT5vYmpmaWxlX29ic3RhY2ss IHN0cnVjdCBkd29fdW5pdCk7CisgIGR3b191bml0LT5kd29fZmlsZSA9IGR3b19maWxlOworICBk d29fdW5pdC0+c2lnbmF0dXJlID0gc2lnbmF0dXJlOworICBkd29fdW5pdC0+c2VjdGlvbiA9Cisg ICAgWE9CTkVXICgmb2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNrLCBzdHJ1Y3QgZHdhcmYyX3NlY3Rp b25faW5mbyk7CisgICpkd29fdW5pdC0+c2VjdGlvbiA9IGNyZWF0ZV9kd3BfdjJfb3JfdjVfc2Vj dGlvbiAoZHdhcmYyX3Blcl9vYmpmaWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGlzX2RlYnVnX3R5cGVzCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgPyAmZHdwX2ZpbGUtPnNlY3Rpb25zLnR5cGVzCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAmZHdwX2ZpbGUtPnNlY3Rp b25zLmluZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg c2VjdGlvbnMuaW5mb19vcl90eXBlc19vZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbnMuaW5mb19vcl90eXBlc19zaXplKTsKICAgLyog ZHdvX3VuaXQtPntvZmZzZXQsbGVuZ3RoLHR5cGVfb2Zmc2V0X2luX3R1fSBhcmUgc2V0IGxhdGVy LiAgKi8KIAogICByZXR1cm4gZHdvX3VuaXQ7CkBAIC0xMjI4NywxMiArMTI1ODgsMTggQEAgbG9v a3VwX2R3b191bml0X2luX2R3cCAoZHdhcmYyX3Blcl9vYmpmaWxlICpwZXJfb2JqZmlsZSwKIAkJ CQkJCSB1bml0X2luZGV4LCBjb21wX2RpciwKIAkJCQkJCSBzaWduYXR1cmUsIGlzX2RlYnVnX3R5 cGVzKTsKIAkgICAgfQotCSAgZWxzZQorCSAgZWxzZSBpZiAoZHdwX2ZpbGUtPnZlcnNpb24gPT0g MikKIAkgICAgewogCSAgICAgICpzbG90ID0gY3JlYXRlX2R3b191bml0X2luX2R3cF92MiAocGVy X29iamZpbGUsIGR3cF9maWxlLAogCQkJCQkJIHVuaXRfaW5kZXgsIGNvbXBfZGlyLAogCQkJCQkJ IHNpZ25hdHVyZSwgaXNfZGVidWdfdHlwZXMpOwogCSAgICB9CisJICBlbHNlIC8vIHZlcnNpb24g PT0gNQorCSAgICB7CisJICAgICAgKnNsb3QgPSBjcmVhdGVfZHdvX3VuaXRfaW5fZHdwX3Y1IChw ZXJfb2JqZmlsZSwgZHdwX2ZpbGUsCisJCQkJCQkgdW5pdF9pbmRleCwgY29tcF9kaXIsCisJCQkJ CQkgc2lnbmF0dXJlLCBpc19kZWJ1Z190eXBlcyk7CisJICAgIH0KIAkgIHJldHVybiAoc3RydWN0 IGR3b191bml0ICopICpzbG90OwogCX0KICAgICAgIGlmIChzaWduYXR1cmVfaW5fdGFibGUgPT0g MCkKQEAgLTEyNTU5LDcgKzEyODY2LDcgQEAgZHdhcmYyX2xvY2F0ZV9jb21tb25fZHdwX3NlY3Rp b25zIChiZmQgKmFiZmQsIGFzZWN0aW9uICpzZWN0cCwKIC8qIFRoaXMgZnVuY3Rpb24gaXMgbWFw cGVkIGFjcm9zcyB0aGUgc2VjdGlvbnMgYW5kIHJlbWVtYmVycyB0aGUgb2Zmc2V0IGFuZAogICAg c2l6ZSBvZiBlYWNoIG9mIHRoZSBEV1AgdmVyc2lvbiAyIGRlYnVnZ2luZyBzZWN0aW9ucyB0aGF0 IHdlIGFyZSBpbnRlcmVzdGVkCiAgICBpbi4gIFRoaXMgaXMgc3BsaXQgaW50byBhIHNlcGFyYXRl IGZ1bmN0aW9uIGJlY2F1c2Ugd2UgZG9uJ3Qga25vdyBpZiB3ZQotICAgaGF2ZSB2ZXJzaW9uIDEg b3IgMiB1bnRpbCB3ZSBwYXJzZSB0aGUgY3VfaW5kZXgvdHVfaW5kZXggc2VjdGlvbnMuICAqLwor ICAgaGF2ZSB2ZXJzaW9uIDEgb3IgMiBvciA1IHVudGlsIHdlIHBhcnNlIHRoZSBjdV9pbmRleC90 dV9pbmRleCBzZWN0aW9ucy4gICovCiAKIHN0YXRpYyB2b2lkCiBkd2FyZjJfbG9jYXRlX3YyX2R3 cF9zZWN0aW9ucyAoYmZkICphYmZkLCBhc2VjdGlvbiAqc2VjdHAsIHZvaWQgKmR3cF9maWxlX3B0 cikKQEAgLTEyNjE2LDYgKzEyOTIzLDYxIEBAIGR3YXJmMl9sb2NhdGVfdjJfZHdwX3NlY3Rpb25z IChiZmQgKmFiZmQsIGFzZWN0aW9uICpzZWN0cCwgdm9pZCAqZHdwX2ZpbGVfcHRyKQogICAgIH0K IH0KIAorLyogVGhpcyBmdW5jdGlvbiBpcyBtYXBwZWQgYWNyb3NzIHRoZSBzZWN0aW9ucyBhbmQg cmVtZW1iZXJzIHRoZSBvZmZzZXQgYW5kCisgICBzaXplIG9mIGVhY2ggb2YgdGhlIERXUCB2ZXJz aW9uIDUgZGVidWdnaW5nIHNlY3Rpb25zIHRoYXQgd2UgYXJlIGludGVyZXN0ZWQKKyAgIGluLiAg VGhpcyBpcyBzcGxpdCBpbnRvIGEgc2VwYXJhdGUgZnVuY3Rpb24gYmVjYXVzZSB3ZSBkb24ndCBr bm93IGlmIHdlCisgICBoYXZlIHZlcnNpb24gMSBvciAyIG9yIDUgdW50aWwgd2UgcGFyc2UgdGhl IGN1X2luZGV4L3R1X2luZGV4IHNlY3Rpb25zLiAgKi8KKworc3RhdGljIHZvaWQKK2R3YXJmMl9s b2NhdGVfdjVfZHdwX3NlY3Rpb25zIChiZmQgKmFiZmQsIGFzZWN0aW9uICpzZWN0cCwgdm9pZCAq ZHdwX2ZpbGVfcHRyKQoreworICBzdHJ1Y3QgZHdwX2ZpbGUgKmR3cF9maWxlID0gKHN0cnVjdCBk d3BfZmlsZSAqKSBkd3BfZmlsZV9wdHI7CisgIGNvbnN0IHN0cnVjdCBkd29wX3NlY3Rpb25fbmFt ZXMgKm5hbWVzID0gJmR3b3Bfc2VjdGlvbl9uYW1lczsKKyAgdW5zaWduZWQgaW50IGVsZl9zZWN0 aW9uX25yID0gZWxmX3NlY3Rpb25fZGF0YSAoc2VjdHApLT50aGlzX2lkeDsKKworICAvKiBSZWNv cmQgdGhlIEVMRiBzZWN0aW9uIG51bWJlciBmb3IgbGF0ZXIgbG9va3VwOiB0aGlzIGlzIHdoYXQg dGhlCisgICAgIC5kZWJ1Z19jdV9pbmRleCwuZGVidWdfdHVfaW5kZXggdGFibGVzIHVzZSBpbiBE V1AgVjEuICAqLworICBnZGJfYXNzZXJ0IChlbGZfc2VjdGlvbl9uciA8IGR3cF9maWxlLT5udW1f c2VjdGlvbnMpOworICBkd3BfZmlsZS0+ZWxmX3NlY3Rpb25zW2VsZl9zZWN0aW9uX25yXSA9IHNl Y3RwOworCisgIC8qIExvb2sgZm9yIHNwZWNpZmljIHNlY3Rpb25zIHRoYXQgd2UgbmVlZC4gICov CisgIGlmIChzZWN0aW9uX2lzX3AgKHNlY3RwLT5uYW1lLCAmbmFtZXMtPmFiYnJldl9kd28pKQor ICAgIHsKKyAgICAgIGR3cF9maWxlLT5zZWN0aW9ucy5hYmJyZXYucy5zZWN0aW9uID0gc2VjdHA7 CisgICAgICBkd3BfZmlsZS0+c2VjdGlvbnMuYWJicmV2LnNpemUgPSBiZmRfc2VjdGlvbl9zaXpl IChzZWN0cCk7CisgICAgfQorICBlbHNlIGlmIChzZWN0aW9uX2lzX3AgKHNlY3RwLT5uYW1lLCAm bmFtZXMtPmluZm9fZHdvKSkKKyAgICB7CisgICAgICBkd3BfZmlsZS0+c2VjdGlvbnMuaW5mby5z LnNlY3Rpb24gPSBzZWN0cDsKKyAgICAgIGR3cF9maWxlLT5zZWN0aW9ucy5pbmZvLnNpemUgPSBi ZmRfc2VjdGlvbl9zaXplIChzZWN0cCk7CisgICAgfQorICBlbHNlIGlmIChzZWN0aW9uX2lzX3Ag KHNlY3RwLT5uYW1lLCAmbmFtZXMtPmxpbmVfZHdvKSkKKyAgIHsKKyAgICAgZHdwX2ZpbGUtPnNl Y3Rpb25zLmxpbmUucy5zZWN0aW9uID0gc2VjdHA7CisgICAgIGR3cF9maWxlLT5zZWN0aW9ucy5s aW5lLnNpemUgPSBiZmRfc2VjdGlvbl9zaXplIChzZWN0cCk7CisgICAgfQorICBlbHNlIGlmIChz ZWN0aW9uX2lzX3AgKHNlY3RwLT5uYW1lLCAmbmFtZXMtPmxvY2xpc3RzX2R3bykpCisgICAgewor ICAgICAgZHdwX2ZpbGUtPnNlY3Rpb25zLmxvY2xpc3RzLnMuc2VjdGlvbiA9IHNlY3RwOworICAg ICAgZHdwX2ZpbGUtPnNlY3Rpb25zLmxvY2xpc3RzLnNpemUgPSBiZmRfc2VjdGlvbl9zaXplIChz ZWN0cCk7CisgICAgfQorICBlbHNlIGlmIChzZWN0aW9uX2lzX3AgKHNlY3RwLT5uYW1lLCAmbmFt ZXMtPm1hY3JvX2R3bykpCisgICAgeworICAgICAgZHdwX2ZpbGUtPnNlY3Rpb25zLm1hY3JvLnMu c2VjdGlvbiA9IHNlY3RwOworICAgICAgZHdwX2ZpbGUtPnNlY3Rpb25zLm1hY3JvLnNpemUgPSBi ZmRfc2VjdGlvbl9zaXplIChzZWN0cCk7CisgICAgfQorICBlbHNlIGlmIChzZWN0aW9uX2lzX3Ag KHNlY3RwLT5uYW1lLCAmbmFtZXMtPnJuZ2xpc3RzX2R3bykpCisgICAgeworICAgICAgZHdwX2Zp bGUtPnNlY3Rpb25zLnJuZ2xpc3RzLnMuc2VjdGlvbiA9IHNlY3RwOworICAgICAgZHdwX2ZpbGUt PnNlY3Rpb25zLnJuZ2xpc3RzLnNpemUgPSBiZmRfc2VjdGlvbl9zaXplIChzZWN0cCk7CisgICAg fQorICBlbHNlIGlmIChzZWN0aW9uX2lzX3AgKHNlY3RwLT5uYW1lLCAmbmFtZXMtPnN0cl9vZmZz ZXRzX2R3bykpCisgICAgeworICAgICAgZHdwX2ZpbGUtPnNlY3Rpb25zLnN0cl9vZmZzZXRzLnMu c2VjdGlvbiA9IHNlY3RwOworICAgICAgZHdwX2ZpbGUtPnNlY3Rpb25zLnN0cl9vZmZzZXRzLnNp emUgPSBiZmRfc2VjdGlvbl9zaXplIChzZWN0cCk7CisgICAgfQorfQorCiAvKiBIYXNoIGZ1bmN0 aW9uIGZvciBkd3BfZmlsZSBsb2FkZWQgQ1VzL1RVcy4gICovCiAKIHN0YXRpYyBoYXNodmFsX3QK QEAgLTEyNzcwLDYgKzEzMTMyLDExIEBAIG9wZW5fYW5kX2luaXRfZHdwX2ZpbGUgKGR3YXJmMl9w ZXJfb2JqZmlsZSAqcGVyX29iamZpbGUpCiAgICAgYmZkX21hcF9vdmVyX3NlY3Rpb25zIChkd3Bf ZmlsZS0+ZGJmZC5nZXQgKCksCiAJCQkgICBkd2FyZjJfbG9jYXRlX3YyX2R3cF9zZWN0aW9ucywK IAkJCSAgIGR3cF9maWxlLmdldCAoKSk7CisgIGVsc2UgaWYgKGR3cF9maWxlLT52ZXJzaW9uID09 IDUpCisgICAgYmZkX21hcF9vdmVyX3NlY3Rpb25zIChkd3BfZmlsZS0+ZGJmZC5nZXQgKCksCisJ CQkgICBkd2FyZjJfbG9jYXRlX3Y1X2R3cF9zZWN0aW9ucywKKwkJCSAgIGR3cF9maWxlLmdldCAo KSk7CisKIAogICBkd3BfZmlsZS0+bG9hZGVkX2N1cyA9IGFsbG9jYXRlX2R3cF9sb2FkZWRfY3V0 dXNfdGFibGUgKCk7CiAgIGR3cF9maWxlLT5sb2FkZWRfdHVzID0gYWxsb2NhdGVfZHdwX2xvYWRl ZF9jdXR1c190YWJsZSAoKTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHdhcmYyLmggYi9pbmNsdWRl L2R3YXJmMi5oCmluZGV4IDg4MjQ1M2RjZTAuLmM1OGYzZjVkNTcgMTAwNjQ0Ci0tLSBhL2luY2x1 ZGUvZHdhcmYyLmgKKysrIGIvaW5jbHVkZS9kd2FyZjIuaApAQCAtNTAyLDYgKzUwMiwyMSBAQCBl bnVtIGR3YXJmX3NlY3QKICAgICBEV19TRUNUX01BWCA9IDgKICAgfTsKIAorLyogQ29kZXMgZm9y IHRoZSBkZWJ1ZyBzZWN0aW9ucyBpbiBhIGR3YXJmIHBhY2thZ2UgKC5kd3ApIGZpbGUsCisgICBh Y2NvcmRpbmcgdG8gdGhlIG9mZmljaWFsIERXQVJGIHY1IHNwZWMuICovCitlbnVtIGR3YXJmX3Nl Y3RfdjUKK3sKKyAgICBEV19TRUNUX0lORk9fVjUgPSAxLAorICAgIERXX1NFQ1RfUkVTRVJWRURf VjUgPSAyLAorICAgIERXX1NFQ1RfQUJCUkVWX1Y1ID0gMywKKyAgICBEV19TRUNUX0xJTkVfVjUg PSA0LAorICAgIERXX1NFQ1RfTE9DTElTVFNfVjUgPSA1LAorICAgIERXX1NFQ1RfU1RSX09GRlNF VFNfVjUgPSA2LAorICAgIERXX1NFQ1RfTUFDUk9fVjUgPSA3LAorICAgIERXX1NFQ1RfUk5HTElT VFNfVjUgPSA4LAorICAgIERXX1NFQ1RfTUFYX1Y1ID0gOAorfTsKKwogI2lmZGVmIF9fY3BsdXNw bHVzCiBleHRlcm4gIkMiIHsKICNlbmRpZiAvKiBfX2NwbHVzcGx1cyAqLwotLSAKMi4yOC4wLnJj MC4xMDUuZ2Y5ZWRjM2M4MTktZ29vZwoK --0000000000004ed20e05aaebc19e--