From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-il1-x142.google.com (mail-il1-x142.google.com [IPv6:2607:f8b0:4864:20::142]) by sourceware.org (Postfix) with ESMTPS id AF4023858D38 for ; Thu, 16 Jul 2020 04:46:32 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org AF4023858D38 Received: by mail-il1-x142.google.com with SMTP id p15so3928493ilh.13 for ; Wed, 15 Jul 2020 21:46:32 -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=VZq04wc12W7gaagzx9CGOO4hyiF+29cq9/ZUgWfhWPw=; b=qwBD6oD14uQsRIesL94lLrm02SqGW9MmKiKsg+2dp4P1BzJ5srISahZgPM3qTwA1YP ZFHDeXez4QqjgCR1sCW+6fj7o0Ecj5ckJNiO0dDwiFWcBxyJcOXu9Vrh6VRt82CAZWkY dHYlRKF4lToUtEEPq56Zopmd5EGVYx4xNBs6phgppXPoiPUW2hp5pkNp0d5cGb3s28Rp o7XdkLLKDDUzegXfsC1HdmeeSNkDuSXF0piP+19U6iFyXqD0haT2Q19P+BePbaJ4OOhD NK0Jb42LfESw5XMOTi9fe01P7IDHhyLDlGvUez+kXG+phhmhaLfWrNiUVwz8BAxDDHVz v1fg== X-Gm-Message-State: AOAM5309z8vpP70AydOrtQI/pt5aiyYGdGgjiz+IOenFz5Zd/MawuoJP J9gMpvRzIj7UK5/TZ0AMVCAUHJp+bFcZRgObPzb9jXbZ3Zs6GA== X-Google-Smtp-Source: ABdhPJzildl1tzh3CuPNUBN8yUms7lnxFjk89HIKFJTow8DGr3RwN/i4b72xfVQqIRcdna13rvzRavM5ETOMjFRNR2k= X-Received: by 2002:a92:d807:: with SMTP id y7mr2799107ilm.187.1594874791599; Wed, 15 Jul 2020 21:46:31 -0700 (PDT) MIME-Version: 1.0 References: <5eab18a1-c7e9-1a77-7f65-944eea10aa85@simark.ca> <5ccfe911-6049-e8f3-4874-9991b2649512@simark.ca> <4da310be-fa9f-9f21-8988-81af58ec73e3@simark.ca> In-Reply-To: From: Caroline Tice Date: Wed, 15 Jul 2020 21:46:20 -0700 Message-ID: Subject: Re: [PATCH V5] Fix issues with reading rnglists, especially from dwo files, for DWARF v5 To: Simon Marchi Cc: "H.J. Lu" , Eric Christopher , Tom Tromey , Caroline Tice via Gdb-patches Content-Type: multipart/mixed; boundary="0000000000006af7b705aa87b970" X-Spam-Status: No, score=-19.4 required=5.0 tests=BAYES_00, DKIMWL_WL_MED, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, ENV_AND_HDR_SPF_MATCH, KAM_NUMSUBJECT, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP, USER_IN_DEF_DKIM_WL, USER_IN_DEF_SPF_WL autolearn=no 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, 16 Jul 2020 04:46:34 -0000 --0000000000006af7b705aa87b970 Content-Type: text/plain; charset="UTF-8" The attached patch has an updated commit message that explains how to run the test and what version of clang was used. Other than that it is identical to the previous patch. On Wed, Jul 15, 2020 at 7:35 PM Simon Marchi wrote: > > On 2020-07-15 6:35 p.m., Caroline Tice wrote: > > Thank you for that suggestion! > > > > It turns out that I CAN create the .o file with clang, then use that > > for the basis of my test; linking it with GCC works and gives the > > results I expect (it fails with ToT GDB , but passes with my patch). > > > > In order to make this work, however, I have to make a small change to > > gdb/testsuite/lib/gdb.exp (in build_executable_from_specs, I have to > > check to see if the source file is already an object file before > > trying to compile it into an object file, and if it is an object file, > > copy it into the proper directory)l > > > > Should I add that (and the .o version of the test case) to this patch, > > or should I make it a separate patch? If the latter (which is what > > feels right to me), then if this patch can receive final approval (and > > someone can commit it, as I do not have write privileges to the GDB > > code base), then I will submit the subsequent patch to replace the > > current test with the .o version and update gdb/testsuite/lib/gdb.exp > > to make it work. > > I'd be fine merging the patch with the current test and keep working on > improving the test coverage. I think that we'll need indeed need to do > a bit of infrastructure work to improve the testing of DWARF5 in general. > > Can you please provide a final patch version where you mention in the commit > message how to run the test in order to provoke a failure. Please make sure > to include the compiler version as well (output of `clang --version`) because, > as you said, the code compilers output changes with time. So in order to be > able to reproduce the failure, it would be useful to know the compiler version. > Done. > I'm not sure what you mean by "the .o version of the test case". Do you > mean check-in the .o in the git repository? We currently don't check in > binary test artifacts for GDB. However, I'm of the opinion that it could > be useful sometimes (like here). But we'd need to have a discussion > about this first, how we want to do that, which guidelines to follow. > I'll submit a separate patch, where it can be discussed. > About this comment, in your other message: > > > I did try, originally, to make this an assembly code test, as I do > > understand that compilers change, and the code they generate today is > > not necessarily the code they generate tomorrow. Unfortunately the > > GNU assembler cannot process the DWARF v5 that is generated by clang > > (e.g. it can't handle file numbers that start at 0 instead of 1 (which > > is in the DWARF v5 spec, and which clang generates); and I have not > > been able to figure out a way to get GDB test to use the clang > > integrated assembler. > > Just wondering, doesn't gcc emit at least *some* DWARF 5 by now? If so, > can't the GNU assembler deal with it? > Not that it matters for this patch, but I believe you are misunderstanding the situation. GCC *does* emit some DWARF 5, but at least the GCC version I'm using (Debian 9.3.0-8) does not seem to be generating DWARF v5 line table sections; the line table section it generates (when I compile with -gdwarf-5) is a DWARF v3 .debug_line sections. In fact my gcc-generated binary has the following debug sections, which are a mix of various dwarf versions: .debug_aranges (dwarf v2) .debug_info (dwarf v5) .debug_abbrev (dwarf v5) .debug_line (dwarf v3) .debug_str .debug_addr (dwarf v5) .debug_gnu_pubnames (dwarf v2) .debug_gnu_pubtypes (dwarf v2) .debug_rnglists (dwarf v5) In contrast, here are the sections my clang compiler, when passed -gdwarf-5 is generating dwarf v5 versions of nearly all the sections: .debug_info (dwarf v5) .debug_abbrev (dwarf v5) .debug_line (dwarf v5) .debug_str .debug_addr (dwarf v5) .debug_rnglists (dwarf v5) .debug_str_offsets (dwarf v5) .debug_gnu_pubnames (dwarf v2) .debug_gnu_pubtypes (dwarf v2) .debug_line_str (dwarf v5) So either the GNU assembler has not been updated to handle DWARF v5 .debug_line file indices because GCC is not yet generating them; or GCC is not yet generating them because the GNU assembler has not yet been updated to handle them. Take your pick. In any case, I hope my patch is now acceptable! :-) -- Caroline Tice cmtice@google.com > Simon --0000000000006af7b705aa87b970 Content-Type: application/octet-stream; name="v6-0001-Update-GDB-to-fix-issues-with-handling-DWARF-v5-r.patch" Content-Disposition: attachment; filename="v6-0001-Update-GDB-to-fix-issues-with-handling-DWARF-v5-r.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kco9pkv30 RnJvbSBmOWI1MmE0NjMwMzljYzc3NjU0NDVlMTAzM2NiMDc1MTRhZmViZjE2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBDYXJvbGluZSBUaWNlIDxjbXRpY2VAZ29vZ2xlLmNvbT4KRGF0 ZTogV2VkLCAxIEp1bCAyMDIwIDEyOjM5OjA4IC0wNzAwClN1YmplY3Q6IFtQQVRDSCB2Nl0gVXBk YXRlIEdEQiB0byBmaXggaXNzdWVzIHdpdGggaGFuZGxpbmcgRFdBUkYgdjUgcm5nbGlzdHMgJgog LmR3byBmaWxlcy4KCldoaWxlIGV4cGVyaW1lbnRpbmcgd2l0aCBHREIgb24gRFdBUkYgNSB3aXRo IHNwbGl0IGRlYnVnIChkd28gZmlsZXMpLApJIGRpc2NvdmVyZWQgdGhhdCBHREIgd2FzIG5vdCBy ZWFkaW5nIHRoZSBybmdsaXN0IGluZGV4CnByb3Blcmx5IChpdCBuZWVkZWQgdG8gYmUgcmVwcm9j ZXNzZWQgaW4gdGhlIHNhbWUgd2F5IHRoZSBsb2NsaXN0CmluZGV4IGRvZXMpLCBhbmQgdGhhdCB0 aGVyZSB3YXMgbm8gY29kZSBmb3IgcmVhZGluZyBybmdsaXN0cyBvdXQgb2YKZHdvIGZpbGVzIGF0 IGFsbC4gIEFsc28sIHRoZSBybmdsaXN0IGFkZHJlc3MgcmVhZGluZyBmdW5jdGlvbgooZHdhcmYy X3JuZ2xpc3RzX3Byb2Nlc3MpIHdhcyBhZGRpbmcgdGhlIGJhc2UgYWRkcmVzcyB0byBhbGwgcm5n bGlzdAplbnRyaWVzLCB3aGVuIGl0J3Mgb25seSBzdXBwb3NlZCB0byBhZGQgaXQgdG8gdGhlIERX X1JMRV9vZmZzZXRfcGFpcgplbnRyaWVzIChodHRwOi8vZHdhcmZzdGQub3JnL2RvYy9EV0FSRjUu cGRmLCBwLiA1MyksIGFuZCB3YXMgbm90CmhhbmRsaW5nIHNldmVyYWwgZW50cnkgdHlwZXMuCgot IEFkZGVkICdyZXByb2Nlc3NpbmcnIGZvciByZWFkaW5nIHJuZ2xpc3QgaW5kZXggKGFzIGlzIGRv bmUgZm9yIGxvY2xpc3QKICBpbmRleCkuCi0gQWRkZWQgY29kZSBmb3IgcmVhZGluZyBybmdsaXN0 cyBvdXQgb2YgLmR3byBmaWxlcy4KLSBBZGRlZCBzZXZlcmFsIG1pc3Npbmcgcm5nbGlzdCBmb3Jt cyB0byBkd2FyZjJfcm5nbGlzdHNfcHJvY2Vzcy4KLSBGaXhlZCBidWcgdGhhdCB3YXMgYWx3YXlh cyBhZGRpbmcgYmFzZSBhZGRyZXNzIGZvciBybmdsaXN0cyAob25seQogIG9uZSBmb3JtIG5lZWRz IHRoYXQpLgotIFVwZGF0ZWQgZHdhcmYyX3JuZ2xpc3RzX3Byb2Nlc3MgdG8gcmVhZCBybmdsaXN0 IG91dCBvZiBkd28gZmlsZSB3aGVuCiAgYXBwcm9wcmlhdGUuCi0gQWRkZWQgbmV3IGZ1bmN0aW9u cyBjdV9kZWJ1Z19ybmdsaXN0X3NlY3Rpb24gJiByZWFkX3JuZ2xpc3RfaW5kZXguCi0gQWRkZWQg bmV3IHRlc3RjYXNlLCBkdzUtcm5nbGlzdC10ZXN0LntjYyxleHB9CgpTcGVjaWFsIG5vdGUgYWJv dXQgdGhlIG5ldyB0ZXN0Y2FzZToKCkluIG9yZGVyIGZvciB0aGUgdGVzdCBjYXNlIHRvIHRlc3Qg YW55dGhpbmcgbWVhbmluZ2Z1bCwgaXQgbXVzdCBiZQpjb21waWxlZCB3aXRoIGNsYW5nLCBub3Qg R0NDLiAgVGhlIHdheSB0byBkbyB0aGlzIGlzIGFzIGZvbGxvd3M6CgokIG1ha2UgY2hlY2sgUlVO VEVTVEZMQUdTPSJDQ19GT1JfVEFSR0VUPS9wYXRoL3RvL2NsYW5nIENYWF9GT1JfVEFSR0VUPS9w YXRoL3RvL2NsYW5nKysgZHc1LXJuZ2xpc3QtdGVzdC5leHAiCgpUaGlzIGZvbGxvd2luZyB2ZXJz aW9uIG9mIGNsYW5nIHdhcyB1c2VkIGZvciB0aGlzIHRlc3Rpbmc6CgpjbGFuZyB2ZXJzaW9uIDku MC4xLTExClRhcmdldDogeDg2XzY0LXBjLWxpbnV4LWdudQpUaHJlYWQgbW9kZWw6IHBvc2l4Cklu c3RhbGxlZERpcjogL3Vzci9iaW4KLS0tCiBnZGIvZHdhcmYyL3JlYWQuYyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfCAyNjEgKysrKysrKysrKysrKystLS0tCiBnZGIvdGVzdHN1aXRlL2dk Yi5kd2FyZjIvZHc1LXJuZ2xpc3QtdGVzdC5jYyAgfCAgOTcgKysrKysrKwogZ2RiL3Rlc3RzdWl0 ZS9nZGIuZHdhcmYyL2R3NS1ybmdsaXN0LXRlc3QuZXhwIHwgIDQwICsrKwogMyBmaWxlcyBjaGFu Z2VkLCAzNTAgaW5zZXJ0aW9ucygrKSwgNDggZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2 NDQgZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3NS1ybmdsaXN0LXRlc3QuY2MKIGNyZWF0ZSBt b2RlIDEwMDY0NCBnZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHc1LXJuZ2xpc3QtdGVzdC5leHAK CmRpZmYgLS1naXQgYS9nZGIvZHdhcmYyL3JlYWQuYyBiL2dkYi9kd2FyZjIvcmVhZC5jCmluZGV4 IDU1OGZhZDc0ZjguLjM5ZWQ0NTVkZWYgMTAwNjQ0Ci0tLSBhL2dkYi9kd2FyZjIvcmVhZC5jCisr KyBiL2dkYi9kd2FyZjIvcmVhZC5jCkBAIC0xMzIsNiArMTMyLDEyIEBAIHN0YXRpYyBpbnQgZHdh cmYyX2xvY2xpc3RfYmxvY2tfaW5kZXg7CiAvKiBTaXplIG9mIC5kZWJ1Z19sb2NsaXN0cyBzZWN0 aW9uIGhlYWRlciBmb3IgNjQtYml0IERXQVJGIGZvcm1hdC4gICovCiAjZGVmaW5lIExPQ0xJU1Rf SEVBREVSX1NJWkU2NCAyMAogCisvKiBTaXplIG9mIC5kZWJ1Z19ybmdsaXN0cyBzZWN0aW9uIGhl YWRlciBmb3IgMzItYml0IERXQVJGIGZvcm1hdC4gICovCisjZGVmaW5lIFJOR0xJU1RfSEVBREVS X1NJWkUzMiAxMgorCisvKiBTaXplIG9mIC5kZWJ1Z19ybmdsaXN0cyBzZWN0aW9uIGhlYWRlciBm b3IgNjQtYml0IERXQVJGIGZvcm1hdC4gICovCisjZGVmaW5lIFJOR0xJU1RfSEVBREVSX1NJWkU2 NCAyMAorCiAvKiBBbiBpbmRleCBpbnRvIGEgKEMrKykgc3ltYm9sIG5hbWUgY29tcG9uZW50IGlu IGEgc3ltYm9sIG5hbWUgYXMKICAgIHJlY29yZGVkIGluIHRoZSBtYXBwZWRfaW5kZXgncyBzeW1i b2wgdGFibGUuICBGb3IgZWFjaCBDKysgc3ltYm9sCiAgICBpbiB0aGUgc3ltYm9sIHRhYmxlLCB3 ZSByZWNvcmQgb25lIGVudHJ5IGZvciB0aGUgc3RhcnQgb2YgZWFjaApAQCAtMzQwLDYgKzM0Niw3 IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHdvcF9zZWN0aW9uX25hbWVzCiAgIHN0cnVjdCBkd2Fy ZjJfc2VjdGlvbl9uYW1lcyBsb2NsaXN0c19kd287CiAgIHN0cnVjdCBkd2FyZjJfc2VjdGlvbl9u YW1lcyBtYWNpbmZvX2R3bzsKICAgc3RydWN0IGR3YXJmMl9zZWN0aW9uX25hbWVzIG1hY3JvX2R3 bzsKKyAgc3RydWN0IGR3YXJmMl9zZWN0aW9uX25hbWVzIHJuZ2xpc3RzX2R3bzsKICAgc3RydWN0 IGR3YXJmMl9zZWN0aW9uX25hbWVzIHN0cl9kd287CiAgIHN0cnVjdCBkd2FyZjJfc2VjdGlvbl9u YW1lcyBzdHJfb2Zmc2V0c19kd287CiAgIHN0cnVjdCBkd2FyZjJfc2VjdGlvbl9uYW1lcyB0eXBl c19kd287CkBAIC0zNTUsNiArMzYyLDcgQEAgZHdvcF9zZWN0aW9uX25hbWVzID0KICAgeyAiLmRl YnVnX2xvY2xpc3RzLmR3byIsICIuemRlYnVnX2xvY2xpc3RzLmR3byIgfSwKICAgeyAiLmRlYnVn X21hY2luZm8uZHdvIiwgIi56ZGVidWdfbWFjaW5mby5kd28iIH0sCiAgIHsgIi5kZWJ1Z19tYWNy by5kd28iLCAiLnpkZWJ1Z19tYWNyby5kd28iIH0sCisgIHsgIi5kZWJ1Z19ybmdsaXN0cy5kd28i LCAiLnpkZWJ1Z19ybmdsaXN0cy5kd28iIH0sCiAgIHsgIi5kZWJ1Z19zdHIuZHdvIiwgIi56ZGVi dWdfc3RyLmR3byIgfSwKICAgeyAiLmRlYnVnX3N0cl9vZmZzZXRzLmR3byIsICIuemRlYnVnX3N0 cl9vZmZzZXRzLmR3byIgfSwKICAgeyAiLmRlYnVnX3R5cGVzLmR3byIsICIuemRlYnVnX3R5cGVz LmR3byIgfSwKQEAgLTM2NCw5ICszNzIsOSBAQCBkd29wX3NlY3Rpb25fbmFtZXMgPQogCiAvKiBs b2NhbCBkYXRhIHR5cGVzICovCiAKLS8qIFRoZSBsb2NhdGlvbiBsaXN0IHNlY3Rpb24gKC5kZWJ1 Z19sb2NsaXN0cykgYmVnaW5zIHdpdGggYSBoZWFkZXIsCi0gICB3aGljaCBjb250YWlucyB0aGUg Zm9sbG93aW5nIGluZm9ybWF0aW9uLiAgKi8KLXN0cnVjdCBsb2NsaXN0X2hlYWRlcgorLyogVGhl IGxvY2F0aW9uIGxpc3QgYW5kIHJhbmdlIGxpc3Qgc2VjdGlvbnMgKC5kZWJ1Z19sb2NsaXN0cyAm IC5kZWJ1Z19ybmdsaXN0cykKKyAgIGJlZ2luIHdpdGggYSBoZWFkZXIsICB3aGljaCBjb250YWlu cyB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uLiAgKi8KK3N0cnVjdCBsb2NsaXN0c19ybmdsaXN0 c19oZWFkZXIKIHsKICAgLyogQSA0LWJ5dGUgb3IgMTItYnl0ZSBsZW5ndGggY29udGFpbmluZyB0 aGUgbGVuZ3RoIG9mIHRoZQogICAgICBzZXQgb2YgZW50cmllcyBmb3IgdGhpcyBjb21waWxhdGlv biB1bml0LCBub3QgaW5jbHVkaW5nIHRoZQpAQCAtNjUwLDYgKzY1OCw3IEBAIHN0cnVjdCBkd29f c2VjdGlvbnMKICAgc3RydWN0IGR3YXJmMl9zZWN0aW9uX2luZm8gbG9jbGlzdHM7CiAgIHN0cnVj dCBkd2FyZjJfc2VjdGlvbl9pbmZvIG1hY2luZm87CiAgIHN0cnVjdCBkd2FyZjJfc2VjdGlvbl9p bmZvIG1hY3JvOworICBzdHJ1Y3QgZHdhcmYyX3NlY3Rpb25faW5mbyBybmdsaXN0czsKICAgc3Ry dWN0IGR3YXJmMl9zZWN0aW9uX2luZm8gc3RyOwogICBzdHJ1Y3QgZHdhcmYyX3NlY3Rpb25faW5m byBzdHJfb2Zmc2V0czsKICAgLyogSW4gdGhlIGNhc2Ugb2YgYSB2aXJ0dWFsIERXTyBmaWxlLCB0 aGVzZSB0d28gYXJlIHVudXNlZC4gICovCkBAIC0xMjc0LDcgKzEyODMsNyBAQCBzdGF0aWMgY29u c3QgZ2RiX2J5dGUgKnJlYWRfYXR0cmlidXRlIChjb25zdCBzdHJ1Y3QgZGllX3JlYWRlcl9zcGVj cyAqLAogCQkJCSAgICAgICBjb25zdCBnZGJfYnl0ZSAqLCBib29sICpuZWVkX3JlcHJvY2Vzcyk7 CiAKIHN0YXRpYyB2b2lkIHJlYWRfYXR0cmlidXRlX3JlcHJvY2VzcyAoY29uc3Qgc3RydWN0IGRp ZV9yZWFkZXJfc3BlY3MgKnJlYWRlciwKLQkJCQkgICAgICBzdHJ1Y3QgYXR0cmlidXRlICphdHRy KTsKKwkJCQkgICAgICBzdHJ1Y3QgYXR0cmlidXRlICphdHRyLCBkd2FyZl90YWcgdGFnKTsKIAog c3RhdGljIENPUkVfQUREUiByZWFkX2FkZHJfaW5kZXggKHN0cnVjdCBkd2FyZjJfY3UgKmN1LCB1 bnNpZ25lZCBpbnQgYWRkcl9pbmRleCk7CiAKQEAgLTEzNzgsMTIgKzEzODcsMTMgQEAgc3RhdGlj IHZvaWQgcmVhZF9jYWxsX3NpdGVfc2NvcGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3Qg ZHdhcmYyX2N1ICpjdSk7CiAKIHN0YXRpYyB2b2lkIHJlYWRfdmFyaWFibGUgKHN0cnVjdCBkaWVf aW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSk7CiAKLXN0YXRpYyBpbnQgZHdhcmYyX3Jh bmdlc19yZWFkICh1bnNpZ25lZCwgQ09SRV9BRERSICosIENPUkVfQUREUiAqLAotCQkJICAgICAg IHN0cnVjdCBkd2FyZjJfY3UgKiwgZHdhcmYyX3BzeW10YWIgKik7Ci0KIC8qIFJldHVybiB0aGUg LmRlYnVnX2xvY2xpc3RzIHNlY3Rpb24gdG8gdXNlIGZvciBjdS4gICovCiBzdGF0aWMgc3RydWN0 IGR3YXJmMl9zZWN0aW9uX2luZm8gKmN1X2RlYnVnX2xvY19zZWN0aW9uIChzdHJ1Y3QgZHdhcmYy X2N1ICpjdSk7CiAKKy8qIFJldHVybiB0aGUgLmRlYnVnX3JuZ2xpc3RzIHNlY3Rpb24gdG8gdXNl IGZvciBjdS4gICovCitzdGF0aWMgc3RydWN0IGR3YXJmMl9zZWN0aW9uX2luZm8gKmN1X2RlYnVn X3JuZ2xpc3RzX3NlY3Rpb24KKyAgKHN0cnVjdCBkd2FyZjJfY3UgKmN1LCBkd2FyZl90YWcgdGFn KTsKKwogLyogSG93IGR3YXJmMl9nZXRfcGNfYm91bmRzIGNvbnN0cnVjdGVkIGl0cyAqTE9XUEMg YW5kICpISUdIUEMgcmV0dXJuCiAgICB2YWx1ZXMuICBLZWVwIHRoZSBpdGVtcyBvcmRlcmVkIHdp dGggaW5jcmVhc2luZyBjb25zdHJhaW50cyBjb21wbGlhbmNlLiAgKi8KIGVudW0gcGNfYm91bmRz X2tpbmQKQEAgLTEyNDQ3LDYgKzEyNDU3LDExIEBAIGR3YXJmMl9sb2NhdGVfZHdvX3NlY3Rpb25z IChiZmQgKmFiZmQsIGFzZWN0aW9uICpzZWN0cCwgdm9pZCAqZHdvX3NlY3Rpb25zX3B0cikKICAg ICAgIGR3b19zZWN0aW9ucy0+bWFjcm8ucy5zZWN0aW9uID0gc2VjdHA7CiAgICAgICBkd29fc2Vj dGlvbnMtPm1hY3JvLnNpemUgPSBiZmRfc2VjdGlvbl9zaXplIChzZWN0cCk7CiAgICAgfQorICBl bHNlIGlmIChzZWN0aW9uX2lzX3AgKHNlY3RwLT5uYW1lLCAmbmFtZXMtPnJuZ2xpc3RzX2R3bykp CisgICAgeworICAgICAgZHdvX3NlY3Rpb25zLT5ybmdsaXN0cy5zLnNlY3Rpb24gPSBzZWN0cDsK KyAgICAgIGR3b19zZWN0aW9ucy0+cm5nbGlzdHMuc2l6ZSA9IGJmZF9zZWN0aW9uX3NpemUgKHNl Y3RwKTsKKyAgICB9CiAgIGVsc2UgaWYgKHNlY3Rpb25faXNfcCAoc2VjdHAtPm5hbWUsICZuYW1l cy0+c3RyX2R3bykpCiAgICAgewogICAgICAgZHdvX3NlY3Rpb25zLT5zdHIucy5zZWN0aW9uID0g c2VjdHA7CkBAIC0xMzc5MSw3ICsxMzgwNiw3IEBAIHJlYWRfdmFyaWFibGUgKHN0cnVjdCBkaWVf aW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKIHRlbXBsYXRlIDx0eXBlbmFtZSBDYWxs YmFjaz4KIHN0YXRpYyBib29sCiBkd2FyZjJfcm5nbGlzdHNfcHJvY2VzcyAodW5zaWduZWQgb2Zm c2V0LCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSwKLQkJCSBDYWxsYmFjayAmJmNhbGxiYWNrKQorCQkJ IGR3YXJmX3RhZyB0YWcsIENhbGxiYWNrICYmY2FsbGJhY2spCiB7CiAgIGR3YXJmMl9wZXJfb2Jq ZmlsZSAqcGVyX29iamZpbGUgPSBjdS0+cGVyX29iamZpbGU7CiAgIHN0cnVjdCBvYmpmaWxlICpv YmpmaWxlID0gcGVyX29iamZpbGUtPm9iamZpbGU7CkBAIC0xMzgwMSwxNyArMTM4MTYsMjAgQEAg ZHdhcmYyX3JuZ2xpc3RzX3Byb2Nlc3MgKHVuc2lnbmVkIG9mZnNldCwgc3RydWN0IGR3YXJmMl9j dSAqY3UsCiAgIGNvbnN0IGdkYl9ieXRlICpidWZmZXI7CiAgIENPUkVfQUREUiBiYXNlYWRkcjsK ICAgYm9vbCBvdmVyZmxvdyA9IGZhbHNlOworICBVTE9OR0VTVCBhZGRyX2luZGV4OworICBzdHJ1 Y3QgZHdhcmYyX3NlY3Rpb25faW5mbyAqcm5nbGlzdHNfc2VjdGlvbjsKIAogICBiYXNlID0gY3Ut PmJhc2VfYWRkcmVzczsKKyAgcm5nbGlzdHNfc2VjdGlvbiA9IGN1X2RlYnVnX3JuZ2xpc3RzX3Nl Y3Rpb24gKGN1LCB0YWcpOworICBybmdsaXN0c19zZWN0aW9uLT5yZWFkIChvYmpmaWxlKTsKIAot ICBwZXJfb2JqZmlsZS0+cGVyX2JmZC0+cm5nbGlzdHMucmVhZCAob2JqZmlsZSk7Ci0gIGlmIChv ZmZzZXQgPj0gcGVyX29iamZpbGUtPnBlcl9iZmQtPnJuZ2xpc3RzLnNpemUpCisgIGlmIChvZmZz ZXQgPj0gcm5nbGlzdHNfc2VjdGlvbi0+c2l6ZSkKICAgICB7CiAgICAgICBjb21wbGFpbnQgKF8o Ik9mZnNldCAlZCBvdXQgb2YgYm91bmRzIGZvciBEV19BVF9yYW5nZXMgYXR0cmlidXRlIiksCiAJ CSBvZmZzZXQpOwogICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgYnVmZmVyID0gcGVyX29i amZpbGUtPnBlcl9iZmQtPnJuZ2xpc3RzLmJ1ZmZlciArIG9mZnNldDsKKyAgYnVmZmVyID0gcm5n bGlzdHNfc2VjdGlvbi0+YnVmZmVyICsgb2Zmc2V0OwogCiAgIGJhc2VhZGRyID0gb2JqZmlsZS0+ dGV4dF9zZWN0aW9uX29mZnNldCAoKTsKIApAQCAtMTM4MTksOCArMTM4MzcsOCBAQCBkd2FyZjJf cm5nbGlzdHNfcHJvY2VzcyAodW5zaWduZWQgb2Zmc2V0LCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSwK ICAgICB7CiAgICAgICAvKiBJbml0aWFsaXplIGl0IGR1ZSB0byBhIGZhbHNlIGNvbXBpbGVyIHdh cm5pbmcuICAqLwogICAgICAgQ09SRV9BRERSIHJhbmdlX2JlZ2lubmluZyA9IDAsIHJhbmdlX2Vu ZCA9IDA7Ci0gICAgICBjb25zdCBnZGJfYnl0ZSAqYnVmX2VuZCA9IChwZXJfb2JqZmlsZS0+cGVy X2JmZC0+cm5nbGlzdHMuYnVmZmVyCi0JCQkJICsgcGVyX29iamZpbGUtPnBlcl9iZmQtPnJuZ2xp c3RzLnNpemUpOworICAgICAgY29uc3QgZ2RiX2J5dGUgKmJ1Zl9lbmQgPSAocm5nbGlzdHNfc2Vj dGlvbi0+YnVmZmVyCisJCQkJICsgcm5nbGlzdHNfc2VjdGlvbi0+c2l6ZSk7CiAgICAgICB1bnNp Z25lZCBpbnQgYnl0ZXNfcmVhZDsKIAogICAgICAgaWYgKGJ1ZmZlciA9PSBidWZfZW5kKQpAQCAt MTM4NDIsNiArMTM4NjAsMTEgQEAgZHdhcmYyX3JuZ2xpc3RzX3Byb2Nlc3MgKHVuc2lnbmVkIG9m ZnNldCwgc3RydWN0IGR3YXJmMl9jdSAqY3UsCiAJICBiYXNlID0gY3UtPmhlYWRlci5yZWFkX2Fk ZHJlc3MgKG9iZmQsIGJ1ZmZlciwgJmJ5dGVzX3JlYWQpOwogCSAgYnVmZmVyICs9IGJ5dGVzX3Jl YWQ7CiAJICBicmVhazsKKyAgICAgICAgY2FzZSBEV19STEVfYmFzZV9hZGRyZXNzeDoKKyAgICAg ICAgICBhZGRyX2luZGV4ID0gcmVhZF91bnNpZ25lZF9sZWIxMjggKG9iZmQsIGJ1ZmZlciwgJmJ5 dGVzX3JlYWQpOworICAgICAgICAgIGJ1ZmZlciArPSBieXRlc19yZWFkOworICAgICAgICAgIGJh c2UgPSByZWFkX2FkZHJfaW5kZXggKGN1LCBhZGRyX2luZGV4KTsKKyAgICAgICAgICBicmVhazsK IAljYXNlIERXX1JMRV9zdGFydF9sZW5ndGg6CiAJICBpZiAoYnVmZmVyICsgY3UtPmhlYWRlci5h ZGRyX3NpemUgPiBidWZfZW5kKQogCSAgICB7CkBAIC0xMzg2MCw2ICsxMzg4MywxOSBAQCBkd2Fy ZjJfcm5nbGlzdHNfcHJvY2VzcyAodW5zaWduZWQgb2Zmc2V0LCBzdHJ1Y3QgZHdhcmYyX2N1ICpj dSwKIAkgICAgICBicmVhazsKIAkgICAgfQogCSAgYnJlYWs7CisJY2FzZSBEV19STEVfc3RhcnR4 X2xlbmd0aDoKKyAgICAgICAgICBhZGRyX2luZGV4ID0gcmVhZF91bnNpZ25lZF9sZWIxMjggKG9i ZmQsIGJ1ZmZlciwgJmJ5dGVzX3JlYWQpOworICAgICAgICAgIGJ1ZmZlciArPSBieXRlc19yZWFk OworICAgICAgICAgIHJhbmdlX2JlZ2lubmluZyA9IHJlYWRfYWRkcl9pbmRleCAoY3UsIGFkZHJf aW5kZXgpOworICAgICAgICAgIGlmIChidWZmZXIgPiBidWZfZW5kKQorICAgICAgICAgICAgewor ICAgICAgICAgICAgICBvdmVyZmxvdyA9IHRydWU7CisgICAgICAgICAgICAgIGJyZWFrOworICAg ICAgICAgICAgfQorICAgICAgICAgIHJhbmdlX2VuZCA9IChyYW5nZV9iZWdpbm5pbmcKKyAgICAg ICAgICAgICAgICAgICAgICAgKyByZWFkX3Vuc2lnbmVkX2xlYjEyOCAob2JmZCwgYnVmZmVyLCAm Ynl0ZXNfcmVhZCkpOworICAgICAgICAgIGJ1ZmZlciArPSBieXRlc19yZWFkOworICAgICAgICAg IGJyZWFrOwogCWNhc2UgRFdfUkxFX29mZnNldF9wYWlyOgogCSAgcmFuZ2VfYmVnaW5uaW5nID0g cmVhZF91bnNpZ25lZF9sZWIxMjggKG9iZmQsIGJ1ZmZlciwgJmJ5dGVzX3JlYWQpOwogCSAgYnVm ZmVyICs9IGJ5dGVzX3JlYWQ7CkBAIC0xMzg4OCw2ICsxMzkyNCwxOSBAQCBkd2FyZjJfcm5nbGlz dHNfcHJvY2VzcyAodW5zaWduZWQgb2Zmc2V0LCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSwKIAkgIHJh bmdlX2VuZCA9IGN1LT5oZWFkZXIucmVhZF9hZGRyZXNzIChvYmZkLCBidWZmZXIsICZieXRlc19y ZWFkKTsKIAkgIGJ1ZmZlciArPSBieXRlc19yZWFkOwogCSAgYnJlYWs7CisJY2FzZSBEV19STEVf c3RhcnR4X2VuZHg6CisgICAgICAgICAgYWRkcl9pbmRleCA9IHJlYWRfdW5zaWduZWRfbGViMTI4 IChvYmZkLCBidWZmZXIsICZieXRlc19yZWFkKTsKKyAgICAgICAgICBidWZmZXIgKz0gYnl0ZXNf cmVhZDsKKyAgICAgICAgICByYW5nZV9iZWdpbm5pbmcgPSByZWFkX2FkZHJfaW5kZXggKGN1LCBh ZGRyX2luZGV4KTsKKyAgICAgICAgICBpZiAoYnVmZmVyID4gYnVmX2VuZCkKKyAgICAgICAgICAg IHsKKyAgICAgICAgICAgICAgb3ZlcmZsb3cgPSB0cnVlOworICAgICAgICAgICAgICBicmVhazsK KyAgICAgICAgICAgIH0KKyAgICAgICAgICBhZGRyX2luZGV4ID0gcmVhZF91bnNpZ25lZF9sZWIx MjggKG9iZmQsIGJ1ZmZlciwgJmJ5dGVzX3JlYWQpOworICAgICAgICAgIGJ1ZmZlciArPSBieXRl c19yZWFkOworICAgICAgICAgIHJhbmdlX2VuZCA9IHJlYWRfYWRkcl9pbmRleCAoY3UsIGFkZHJf aW5kZXgpOworICAgICAgICAgIGJyZWFrOwogCWRlZmF1bHQ6CiAJICBjb21wbGFpbnQgKF8oIklu dmFsaWQgLmRlYnVnX3JuZ2xpc3RzIGRhdGEgKG5vIGJhc2UgYWRkcmVzcykiKSk7CiAJICByZXR1 cm4gZmFsc2U7CkBAIC0xMzg5NywxNCArMTM5NDYsNiBAQCBkd2FyZjJfcm5nbGlzdHNfcHJvY2Vz cyAodW5zaWduZWQgb2Zmc2V0LCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSwKICAgICAgIGlmIChybGV0 ID09IERXX1JMRV9iYXNlX2FkZHJlc3MpCiAJY29udGludWU7CiAKLSAgICAgIGlmICghYmFzZS5o YXNfdmFsdWUgKCkpCi0JewotCSAgLyogV2UgaGF2ZSBubyB2YWxpZCBiYXNlIGFkZHJlc3MgZm9y IHRoZSByYW5nZXMKLQkgICAgIGRhdGEuICAqLwotCSAgY29tcGxhaW50IChfKCJJbnZhbGlkIC5k ZWJ1Z19ybmdsaXN0cyBkYXRhIChubyBiYXNlIGFkZHJlc3MpIikpOwotCSAgcmV0dXJuIGZhbHNl OwotCX0KLQogICAgICAgaWYgKHJhbmdlX2JlZ2lubmluZyA+IHJhbmdlX2VuZCkKIAl7CiAJICAv KiBJbnZlcnRlZCByYW5nZSBlbnRyaWVzIGFyZSBpbnZhbGlkLiAgKi8KQEAgLTEzOTE2LDggKzEz OTU3LDIwIEBAIGR3YXJmMl9ybmdsaXN0c19wcm9jZXNzICh1bnNpZ25lZCBvZmZzZXQsIHN0cnVj dCBkd2FyZjJfY3UgKmN1LAogICAgICAgaWYgKHJhbmdlX2JlZ2lubmluZyA9PSByYW5nZV9lbmQp CiAJY29udGludWU7CiAKLSAgICAgIHJhbmdlX2JlZ2lubmluZyArPSAqYmFzZTsKLSAgICAgIHJh bmdlX2VuZCArPSAqYmFzZTsKKyAgICAgIC8qIE9ubHkgRFdfUkxFX29mZnNldF9wYWlyIG5lZWRz IHRoZSBiYXNlIGFkZHJlc3MgYWRkZWQuICAqLworICAgICAgaWYgKHJsZXQgPT0gRFdfUkxFX29m ZnNldF9wYWlyKQorCXsKKwkgIGlmICghYmFzZS5oYXNfdmFsdWUgKCkpCisJICAgIHsKKwkgICAg ICAvKiBXZSBoYXZlIG5vIHZhbGlkIGJhc2UgYWRkcmVzcyBmb3IgdGhlIERXX1JMRV9vZmZzZXRf cGFpci4gICovCisJICAgICAgY29tcGxhaW50IChfKCJJbnZhbGlkIC5kZWJ1Z19ybmdsaXN0cyBk YXRhIChubyBiYXNlIGFkZHJlc3MgZm9yICIKKwkJCSAgICJEV19STEVfb2Zmc2V0X3BhaXIpIikp OworCSAgICAgIHJldHVybiBmYWxzZTsKKwkgICAgfQorCisJICByYW5nZV9iZWdpbm5pbmcgKz0g KmJhc2U7CisJICByYW5nZV9lbmQgKz0gKmJhc2U7CisJfQogCiAgICAgICAvKiBBIG5vdC11bmNv bW1vbiBjYXNlIG9mIGJhZCBkZWJ1ZyBpbmZvLgogCSBEb24ndCBwb2xsdXRlIHRoZSBhZGRybWFw IHdpdGggYmFkIGRhdGEuICAqLwpAQCAtMTM5NTAsNyArMTQwMDMsNyBAQCBkd2FyZjJfcm5nbGlz dHNfcHJvY2VzcyAodW5zaWduZWQgb2Zmc2V0LCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSwKIAogdGVt cGxhdGUgPHR5cGVuYW1lIENhbGxiYWNrPgogc3RhdGljIGludAotZHdhcmYyX3Jhbmdlc19wcm9j ZXNzICh1bnNpZ25lZCBvZmZzZXQsIHN0cnVjdCBkd2FyZjJfY3UgKmN1LAorZHdhcmYyX3Jhbmdl c19wcm9jZXNzICh1bnNpZ25lZCBvZmZzZXQsIHN0cnVjdCBkd2FyZjJfY3UgKmN1LCBkd2FyZl90 YWcgdGFnLAogCQkgICAgICAgQ2FsbGJhY2sgJiZjYWxsYmFjaykKIHsKICAgZHdhcmYyX3Blcl9v YmpmaWxlICpwZXJfb2JqZmlsZSA9IGN1LT5wZXJfb2JqZmlsZTsKQEAgLTEzOTY2LDcgKzE0MDE5 LDcgQEAgZHdhcmYyX3Jhbmdlc19wcm9jZXNzICh1bnNpZ25lZCBvZmZzZXQsIHN0cnVjdCBkd2Fy ZjJfY3UgKmN1LAogICBDT1JFX0FERFIgYmFzZWFkZHI7CiAKICAgaWYgKGN1X2hlYWRlci0+dmVy c2lvbiA+PSA1KQotICAgIHJldHVybiBkd2FyZjJfcm5nbGlzdHNfcHJvY2VzcyAob2Zmc2V0LCBj dSwgY2FsbGJhY2spOworICAgIHJldHVybiBkd2FyZjJfcm5nbGlzdHNfcHJvY2VzcyAob2Zmc2V0 LCBjdSwgdGFnLCBjYWxsYmFjayk7CiAKICAgYmFzZSA9IGN1LT5iYXNlX2FkZHJlc3M7CiAKQEAg LTE0MDUyLDcgKzE0MTA1LDcgQEAgZHdhcmYyX3Jhbmdlc19wcm9jZXNzICh1bnNpZ25lZCBvZmZz ZXQsIHN0cnVjdCBkd2FyZjJfY3UgKmN1LAogc3RhdGljIGludAogZHdhcmYyX3Jhbmdlc19yZWFk ICh1bnNpZ25lZCBvZmZzZXQsIENPUkVfQUREUiAqbG93X3JldHVybiwKIAkJICAgIENPUkVfQURE UiAqaGlnaF9yZXR1cm4sIHN0cnVjdCBkd2FyZjJfY3UgKmN1LAotCQkgICAgZHdhcmYyX3BzeW10 YWIgKnJhbmdlc19wc3QpCisJCSAgICBkd2FyZjJfcHN5bXRhYiAqcmFuZ2VzX3BzdCwgZHdhcmZf dGFnIHRhZykKIHsKICAgc3RydWN0IG9iamZpbGUgKm9iamZpbGUgPSBjdS0+cGVyX29iamZpbGUt Pm9iamZpbGU7CiAgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoID0gb2JqZmlsZS0+YXJjaCAoKTsK QEAgLTE0MDYyLDcgKzE0MTE1LDcgQEAgZHdhcmYyX3Jhbmdlc19yZWFkICh1bnNpZ25lZCBvZmZz ZXQsIENPUkVfQUREUiAqbG93X3JldHVybiwKICAgQ09SRV9BRERSIGhpZ2ggPSAwOwogICBpbnQg cmV0dmFsOwogCi0gIHJldHZhbCA9IGR3YXJmMl9yYW5nZXNfcHJvY2VzcyAob2Zmc2V0LCBjdSwK KyAgcmV0dmFsID0gZHdhcmYyX3Jhbmdlc19wcm9jZXNzIChvZmZzZXQsIGN1LCB0YWcsCiAgICAg WyZdIChDT1JFX0FERFIgcmFuZ2VfYmVnaW5uaW5nLCBDT1JFX0FERFIgcmFuZ2VfZW5kKQogICAg IHsKICAgICAgIGlmIChyYW5nZXNfcHN0ICE9IE5VTEwpCkBAIC0xNDE1NCw4ICsxNDIwNywxNCBA QCBkd2FyZjJfZ2V0X3BjX2JvdW5kcyAoc3RydWN0IGRpZV9pbmZvICpkaWUsIENPUkVfQUREUiAq bG93cGMsCiAJewogCSAgLyogRFdfQVRfcm5nbGlzdHNfYmFzZSBkb2VzIG5vdCBhcHBseSB0byBE SUVzIGZyb20gdGhlIERXTyBza2VsZXRvbi4KIAkgICAgIFdlIHRha2UgYWR2YW50YWdlIG9mIHRo ZSBmYWN0IHRoYXQgRFdfQVRfcmFuZ2VzIGRvZXMgbm90IGFwcGVhcgotCSAgICAgaW4gRFdfVEFH X2NvbXBpbGVfdW5pdCBvZiBEV08gZmlsZXMuICAqLwotCSAgaW50IG5lZWRfcmFuZ2VzX2Jhc2Ug PSBkaWUtPnRhZyAhPSBEV19UQUdfY29tcGlsZV91bml0OworCSAgICAgaW4gRFdfVEFHX2NvbXBp bGVfdW5pdCBvZiBEV08gZmlsZXMuCisKKwkgICAgIEF0dHJpYnV0ZXMgb2YgdGhlIGZvcm0gRFdf Rk9STV9ybmdsaXN0eCBoYXZlIGFscmVhZHkgaGFkIHRoZWlyCisJICAgICB2YWx1ZSBjaGFuZ2Vk IGJ5IHJlYWRfcm5nbGlzdF9pbmRleCBhbmQgYWxyZWFkeSBpbmNsdWRlCisJICAgICBEV19BVF9y bmdsaXN0c19iYXNlLCBzbyBkb24ndCBuZWVkIHRvIGFkZCB0aGUgcmFuZ2VzIGJhc2UsCisJICAg ICBlaXRoZXIuICAqLworCSAgaW50IG5lZWRfcmFuZ2VzX2Jhc2UgPSAoZGllLT50YWcgIT0gRFdf VEFHX2NvbXBpbGVfdW5pdAorCQkJCSAgJiYgYXR0ci0+Zm9ybSAhPSBEV19GT1JNX3JuZ2xpc3R4 KTsKIAkgIHVuc2lnbmVkIGludCByYW5nZXNfb2Zmc2V0ID0gKERXX1VOU05EIChhdHRyKQogCQkJ CQkrIChuZWVkX3Jhbmdlc19iYXNlCiAJCQkJCSAgID8gY3UtPnJhbmdlc19iYXNlCkBAIC0xNDE2 Myw3ICsxNDIyMiw4IEBAIGR3YXJmMl9nZXRfcGNfYm91bmRzIChzdHJ1Y3QgZGllX2luZm8gKmRp ZSwgQ09SRV9BRERSICpsb3dwYywKIAogCSAgLyogVmFsdWUgb2YgdGhlIERXX0FUX3JhbmdlcyBh dHRyaWJ1dGUgaXMgdGhlIG9mZnNldCBpbiB0aGUKIAkgICAgIC5kZWJ1Z19yYW5nZXMgc2VjdGlv bi4gICovCi0JICBpZiAoIWR3YXJmMl9yYW5nZXNfcmVhZCAocmFuZ2VzX29mZnNldCwgJmxvdywg JmhpZ2gsIGN1LCBwc3QpKQorCSAgaWYgKCFkd2FyZjJfcmFuZ2VzX3JlYWQgKHJhbmdlc19vZmZz ZXQsICZsb3csICZoaWdoLCBjdSwgcHN0LAorCQkJCSAgIGRpZS0+dGFnKSkKIAkgICAgcmV0dXJu IFBDX0JPVU5EU19JTlZBTElEOwogCSAgLyogRm91bmQgZGlzY29udGludW91cyByYW5nZSBvZiBh ZGRyZXNzZXMuICAqLwogCSAgcmV0ID0gUENfQk9VTkRTX1JBTkdFUzsKQEAgLTE0MzI1LDggKzE0 Mzg1LDE0IEBAIGR3YXJmMl9yZWNvcmRfYmxvY2tfcmFuZ2VzIChzdHJ1Y3QgZGllX2luZm8gKmRp ZSwgc3RydWN0IGJsb2NrICpibG9jaywKICAgICB7CiAgICAgICAvKiBEV19BVF9ybmdsaXN0c19i YXNlIGRvZXMgbm90IGFwcGx5IHRvIERJRXMgZnJvbSB0aGUgRFdPIHNrZWxldG9uLgogCSBXZSB0 YWtlIGFkdmFudGFnZSBvZiB0aGUgZmFjdCB0aGF0IERXX0FUX3JhbmdlcyBkb2VzIG5vdCBhcHBl YXIKLQkgaW4gRFdfVEFHX2NvbXBpbGVfdW5pdCBvZiBEV08gZmlsZXMuICAqLwotICAgICAgaW50 IG5lZWRfcmFuZ2VzX2Jhc2UgPSBkaWUtPnRhZyAhPSBEV19UQUdfY29tcGlsZV91bml0OworCSBp biBEV19UQUdfY29tcGlsZV91bml0IG9mIERXTyBmaWxlcy4KKworCSBBdHRyaWJ1dGVzIG9mIHRo ZSBmb3JtIERXX0ZPUk1fcm5nbGlzdHggaGF2ZSBhbHJlYWR5IGhhZCB0aGVpcgorCSB2YWx1ZSBj aGFuZ2VkIGJ5IHJlYWRfcm5nbGlzdF9pbmRleCBhbmQgYWxyZWFkeSBpbmNsdWRlCisJIERXX0FU X3JuZ2xpc3RzX2Jhc2UsIHNvIGRvbid0IG5lZWQgdG8gYWRkIHRoZSByYW5nZXMgYmFzZSwKKwkg ZWl0aGVyLiAgKi8KKyAgICAgIGludCBuZWVkX3Jhbmdlc19iYXNlID0gKGRpZS0+dGFnICE9IERX X1RBR19jb21waWxlX3VuaXQKKwkJCSAgICAgICYmIGF0dHItPmZvcm0gIT0gRFdfRk9STV9ybmds aXN0eCk7CiAKICAgICAgIC8qIFRoZSB2YWx1ZSBvZiB0aGUgRFdfQVRfcmFuZ2VzIGF0dHJpYnV0 ZSBpcyB0aGUgb2Zmc2V0IG9mIHRoZQogICAgICAgICAgYWRkcmVzcyByYW5nZSBsaXN0IGluIHRo ZSAuZGVidWdfcmFuZ2VzIHNlY3Rpb24uICAqLwpAQCAtMTQzMzQsNyArMTQ0MDAsNyBAQCBkd2Fy ZjJfcmVjb3JkX2Jsb2NrX3JhbmdlcyAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBibG9j ayAqYmxvY2ssCiAJCQkgICAgICArIChuZWVkX3Jhbmdlc19iYXNlID8gY3UtPnJhbmdlc19iYXNl IDogMCkpOwogCiAgICAgICBzdGQ6OnZlY3RvcjxibG9ja3JhbmdlPiBibG9ja3ZlYzsKLSAgICAg IGR3YXJmMl9yYW5nZXNfcHJvY2VzcyAob2Zmc2V0LCBjdSwKKyAgICAgIGR3YXJmMl9yYW5nZXNf cHJvY2VzcyAob2Zmc2V0LCBjdSwgZGllLT50YWcsCiAJWyZdIChDT1JFX0FERFIgc3RhcnQsIENP UkVfQUREUiBlbmQpCiAJewogCSAgc3RhcnQgKz0gYmFzZWFkZHI7CkBAIC0xODE1NCw4ICsxODIy MCwxMyBAQCByZWFkX2Z1bGxfZGllXzEgKGNvbnN0IHN0cnVjdCBkaWVfcmVhZGVyX3NwZWNzICpy ZWFkZXIsCiAgIGF1dG8gbWF5YmVfYWRkcl9iYXNlID0gZGllLT5hZGRyX2Jhc2UgKCk7CiAgIGlm IChtYXliZV9hZGRyX2Jhc2UuaGFzX3ZhbHVlICgpKQogICAgIGN1LT5hZGRyX2Jhc2UgPSAqbWF5 YmVfYWRkcl9iYXNlOworCisgIGF0dHIgPSBkaWUtPmF0dHIgKERXX0FUX3JuZ2xpc3RzX2Jhc2Up OworICBpZiAoYXR0ciAhPSBudWxscHRyKQorICAgIGN1LT5yYW5nZXNfYmFzZSA9IERXX1VOU05E IChhdHRyKTsKKwogICBmb3IgKGludCBpbmRleCA6IGluZGV4ZXNfdGhhdF9uZWVkX3JlcHJvY2Vz cykKLSAgICByZWFkX2F0dHJpYnV0ZV9yZXByb2Nlc3MgKHJlYWRlciwgJmRpZS0+YXR0cnNbaW5k ZXhdKTsKKyAgICByZWFkX2F0dHJpYnV0ZV9yZXByb2Nlc3MgKHJlYWRlciwgJmRpZS0+YXR0cnNb aW5kZXhdLCBkaWUtPnRhZyk7CiAgICpkaWVwID0gZGllOwogICByZXR1cm4gaW5mb19wdHI7CiB9 CkBAIC0xODUyNCw3ICsxODU5NSw3IEBAIHBhcnRpYWxfZGllX2luZm86OnJlYWQgKGNvbnN0IHN0 cnVjdCBkaWVfcmVhZGVyX3NwZWNzICpyZWFkZXIsCiAgICAgICAgICBhbHJlYWR5IGJlZW4gcmVh ZCBhdCB0aGlzIHBvaW50LCBzbyB0aGVyZSBpcyBubyBuZWVkIHRvIHdhaXQgdW50aWwKIAkgdGhl IGxvb3AgdGVybWluYXRlcyB0byBkbyB0aGUgcmVwcm9jZXNzaW5nLiAgKi8KICAgICAgIGlmIChu ZWVkX3JlcHJvY2VzcykKLQlyZWFkX2F0dHJpYnV0ZV9yZXByb2Nlc3MgKHJlYWRlciwgJmF0dHIp OworCXJlYWRfYXR0cmlidXRlX3JlcHJvY2VzcyAocmVhZGVyLCAmYXR0ciwgdGFnKTsKICAgICAg IC8qIFN0b3JlIHRoZSBkYXRhIGlmIGl0IGlzIG9mIGFuIGF0dHJpYnV0ZSB3ZSB3YW50IHRvIGtl ZXAgaW4gYQogICAgICAgICAgcGFydGlhbCBzeW1ib2wgdGFibGUuICAqLwogICAgICAgc3dpdGNo IChhdHRyLm5hbWUpCkBAIC0xODY3MCwxMCArMTg3NDEsMTYgQEAgcGFydGlhbF9kaWVfaW5mbzo6 cmVhZCAoY29uc3Qgc3RydWN0IGRpZV9yZWFkZXJfc3BlY3MgKnJlYWRlciwKIAogCWNhc2UgRFdf QVRfcmFuZ2VzOgogCSAgewotCSAgICAvKiBJdCB3b3VsZCBiZSBuaWNlIHRvIHJldXNlIGR3YXJm Ml9nZXRfcGNfYm91bmRzIGhlcmUsCi0JICAgICAgIGJ1dCB0aGF0IHJlcXVpcmVzIGEgZnVsbCBE SUUsIHNvIGluc3RlYWQgd2UganVzdAotCSAgICAgICByZWltcGxlbWVudCBpdC4gICovCi0JICAg IGludCBuZWVkX3Jhbmdlc19iYXNlID0gdGFnICE9IERXX1RBR19jb21waWxlX3VuaXQ7CisJICAg IC8qIERXX0FUX3JuZ2xpc3RzX2Jhc2UgZG9lcyBub3QgYXBwbHkgdG8gRElFcyBmcm9tIHRoZSBE V08KKwkgICAgICAgc2tlbGV0b24uICBXZSB0YWtlIGFkdmFudGFnZSBvZiB0aGUgZmFjdCB0aGUg RFdfQVRfcmFuZ2VzCisJICAgICAgIGRvZXMgbm90IGFwcGVhciBpbiBEV19UQUdfY29tcGlsZV91 bml0IG9mIERXTyBmaWxlcy4KKworCSAgICAgICBBdHRyaWJ1dGVzIG9mIHRoZSBmb3JtIERXX0ZP Uk1fcm5nbGlzdHggaGF2ZSBhbHJlYWR5IGhhZAorICAgICAgICAgICAgICAgdGhlaXIgdmFsdWUg Y2hhbmdlZCBieSByZWFkX3JuZ2xpc3RfaW5kZXggYW5kIGFscmVhZHkKKwkgICAgICAgaW5jbHVk ZSBEV19BVF9ybmdsaXN0c19iYXNlLCBzbyBkb24ndCBuZWVkIHRvIGFkZCB0aGUgcmFuZ2VzCisJ ICAgICAgIGJhc2UsIGVpdGhlci4gICovCisJICAgIGludCBuZWVkX3Jhbmdlc19iYXNlID0gKHRh ZyAhPSBEV19UQUdfY29tcGlsZV91bml0CisJCQkJICAgICYmIGF0dHIuZm9ybSAhPSBEV19GT1JN X3JuZ2xpc3R4KTsKIAkgICAgdW5zaWduZWQgaW50IHJhbmdlc19vZmZzZXQgPSAoRFdfVU5TTkQg KCZhdHRyKQogCQkJCQkgICsgKG5lZWRfcmFuZ2VzX2Jhc2UKIAkJCQkJICAgICA/IGN1LT5yYW5n ZXNfYmFzZQpAQCAtMTg2ODIsNyArMTg3NTksNyBAQCBwYXJ0aWFsX2RpZV9pbmZvOjpyZWFkIChj b25zdCBzdHJ1Y3QgZGllX3JlYWRlcl9zcGVjcyAqcmVhZGVyLAogCSAgICAvKiBWYWx1ZSBvZiB0 aGUgRFdfQVRfcmFuZ2VzIGF0dHJpYnV0ZSBpcyB0aGUgb2Zmc2V0IGluIHRoZQogCSAgICAgICAu ZGVidWdfcmFuZ2VzIHNlY3Rpb24uICAqLwogCSAgICBpZiAoZHdhcmYyX3Jhbmdlc19yZWFkIChy YW5nZXNfb2Zmc2V0LCAmbG93cGMsICZoaWdocGMsIGN1LAotCQkJCSAgICBudWxscHRyKSkKKwkJ CQkgICAgbnVsbHB0ciwgdGFnKSkKIAkgICAgICBoYXNfcGNfaW5mbyA9IDE7CiAJICB9CiAJICBi cmVhazsKQEAgLTE5MDA2LDExICsxOTA4MywxMSBAQCBwYXJ0aWFsX2RpZV9pbmZvOjpmaXh1cCAo c3RydWN0IGR3YXJmMl9jdSAqY3UpCiAgIGZpeHVwX2NhbGxlZCA9IDE7CiB9CiAKLS8qIFJlYWQg dGhlIC5kZWJ1Z19sb2NsaXN0cyBoZWFkZXIgY29udGVudHMgZnJvbSB0aGUgZ2l2ZW4gU0VDVElP TiBpbiB0aGUKLSAgIEhFQURFUi4gICovCisvKiBSZWFkIHRoZSAuZGVidWdfbG9jbGlzdHMgb3Ig LmRlYnVnX3JuZ2xpc3RzIGhlYWRlciAodGhleSBhcmUgdGhlIHNhbWUgZm9ybWF0KQorICAgY29u dGVudHMgZnJvbSB0aGUgZ2l2ZW4gU0VDVElPTiBpbiB0aGUgSEVBREVSLiAgKi8KIHN0YXRpYyB2 b2lkCi1yZWFkX2xvY2xpc3RfaGVhZGVyIChzdHJ1Y3QgbG9jbGlzdF9oZWFkZXIgKmhlYWRlciwK LQkJICAgICAgc3RydWN0IGR3YXJmMl9zZWN0aW9uX2luZm8gKnNlY3Rpb24pCityZWFkX2xvY2xp c3RzX3JuZ2xpc3RzX2hlYWRlciAoc3RydWN0IGxvY2xpc3RzX3JuZ2xpc3RzX2hlYWRlciAqaGVh ZGVyLAorCQkJICAgICAgIHN0cnVjdCBkd2FyZjJfc2VjdGlvbl9pbmZvICpzZWN0aW9uKQogewog ICB1bnNpZ25lZCBpbnQgYnl0ZXNfcmVhZDsKICAgYmZkICphYmZkID0gc2VjdGlvbi0+Z2V0X2Jm ZF9vd25lciAoKTsKQEAgLTE5MDYzLDggKzE5MTQwLDggQEAgcmVhZF9sb2NsaXN0X2luZGV4IChz dHJ1Y3QgZHdhcmYyX2N1ICpjdSwgVUxPTkdFU1QgbG9jbGlzdF9pbmRleCkKICAgaWYgKHNlY3Rp b24tPmJ1ZmZlciA9PSBOVUxMKQogICAgIGNvbXBsYWludCAoXygiRFdfRk9STV9sb2NsaXN0eCB1 c2VkIHdpdGhvdXQgLmRlYnVnX2xvY2xpc3RzICIKIAkgICAgICAgICJzZWN0aW9uIFtpbiBtb2R1 bGUgJXNdIiksIG9iamZpbGVfbmFtZSAob2JqZmlsZSkpOwotICBzdHJ1Y3QgbG9jbGlzdF9oZWFk ZXIgaGVhZGVyOwotICByZWFkX2xvY2xpc3RfaGVhZGVyICgmaGVhZGVyLCBzZWN0aW9uKTsKKyAg c3RydWN0IGxvY2xpc3RzX3JuZ2xpc3RzX2hlYWRlciBoZWFkZXI7CisgIHJlYWRfbG9jbGlzdHNf cm5nbGlzdHNfaGVhZGVyICgmaGVhZGVyLCBzZWN0aW9uKTsKICAgaWYgKGxvY2xpc3RfaW5kZXgg Pj0gaGVhZGVyLm9mZnNldF9lbnRyeV9jb3VudCkKICAgICBjb21wbGFpbnQgKF8oIkRXX0ZPUk1f bG9jbGlzdHggcG9pbnRpbmcgb3V0c2lkZSBvZiAiCiAJICAgICAgICAiLmRlYnVnX2xvY2xpc3Rz IG9mZnNldCBhcnJheSBbaW4gbW9kdWxlICVzXSIpLApAQCAtMTkwODMsMTMgKzE5MTYwLDY4IEBA IHJlYWRfbG9jbGlzdF9pbmRleCAoc3RydWN0IGR3YXJmMl9jdSAqY3UsIFVMT05HRVNUIGxvY2xp c3RfaW5kZXgpCiAgICAgcmV0dXJuIGJmZF9nZXRfNjQgKGFiZmQsIGluZm9fcHRyKSArIGxvY2xp c3RfYmFzZTsKIH0KIAorLyogR2l2ZW4gYSBEV19GT1JNX3JuZ2xpc3R4IHZhbHVlIFJOR0xJU1Rf SU5ERVgsIGZldGNoIHRoZSBvZmZzZXQgZnJvbSB0aGUKKyAgIGFycmF5IG9mIG9mZnNldHMgaW4g dGhlIC5kZWJ1Z19ybmdsaXN0cyBzZWN0aW9uLiAgKi8KK3N0YXRpYyBDT1JFX0FERFIKK3JlYWRf cm5nbGlzdF9pbmRleCAoc3RydWN0IGR3YXJmMl9jdSAqY3UsIFVMT05HRVNUIHJuZ2xpc3RfaW5k ZXgsCisJCSAgICBkd2FyZl90YWcgdGFnKQoreworICBzdHJ1Y3QgZHdhcmYyX3Blcl9vYmpmaWxl ICpkd2FyZjJfcGVyX29iamZpbGUgPSBjdS0+cGVyX29iamZpbGU7CisgIHN0cnVjdCBvYmpmaWxl ICpvYmpmaWxlID0gZHdhcmYyX3Blcl9vYmpmaWxlLT5vYmpmaWxlOworICBiZmQgKmFiZmQgPSBv YmpmaWxlLT5vYmZkOworICBVTE9OR0VTVCBybmdsaXN0X2hlYWRlcl9zaXplID0KKyAgICAoY3Ut PmhlYWRlci5pbml0aWFsX2xlbmd0aF9zaXplID09IDQgPyBSTkdMSVNUX0hFQURFUl9TSVpFMzIK KyAgICAgOiBSTkdMSVNUX0hFQURFUl9TSVpFNjQpOworICBVTE9OR0VTVCBybmdsaXN0X2Jhc2Ug PQorICAgICAgKGN1LT5kd29fdW5pdCAhPSBudWxscHRyKSA/IHJuZ2xpc3RfaGVhZGVyX3NpemUg OiBjdS0+cmFuZ2VzX2Jhc2U7CisgIFVMT05HRVNUIHN0YXJ0X29mZnNldCA9CisgICAgcm5nbGlz dF9iYXNlICsgcm5nbGlzdF9pbmRleCAqIGN1LT5oZWFkZXIub2Zmc2V0X3NpemU7CisKKyAgLyog R2V0IHJuZ2xpc3RzIHNlY3Rpb24uICAqLworICBzdHJ1Y3QgZHdhcmYyX3NlY3Rpb25faW5mbyAq c2VjdGlvbiA9IGN1X2RlYnVnX3JuZ2xpc3RzX3NlY3Rpb24gKGN1LCB0YWcpOworCisgIC8qIFJl YWQgdGhlIHJuZ2xpc3RzIHNlY3Rpb24gY29udGVudC4gICovCisgIHNlY3Rpb24tPnJlYWQgKG9i amZpbGUpOworICBpZiAoc2VjdGlvbi0+YnVmZmVyID09IG51bGxwdHIpCisgICAgZXJyb3IgKF8o IkRXX0ZPUk1fcm5nbGlzdHggdXNlZCB3aXRob3V0IC5kZWJ1Z19ybmdsaXN0cyBzZWN0aW9uICIK KwkgICAgICJbaW4gbW9kdWxlICVzXSIpLAorCSAgIG9iamZpbGVfbmFtZSAob2JqZmlsZSkpOwor CisgIC8qIFZlcmlmeSB0aGUgcm5nbGlzdCBpbmRleCBpcyB2YWxpZC4gICovCisgIHN0cnVjdCBs b2NsaXN0c19ybmdsaXN0c19oZWFkZXIgaGVhZGVyOworICByZWFkX2xvY2xpc3RzX3JuZ2xpc3Rz X2hlYWRlciAoJmhlYWRlciwgc2VjdGlvbik7CisgIGlmIChybmdsaXN0X2luZGV4ID49IGhlYWRl ci5vZmZzZXRfZW50cnlfY291bnQpCisgICAgZXJyb3IgKF8oIkRXX0ZPUk1fcm5nbGlzdHggaW5k ZXggcG9pbnRpbmcgb3V0c2lkZSBvZiAiCisJICAgICAiLmRlYnVnX3JuZ2xpc3RzIG9mZnNldCBh cnJheSBbaW4gbW9kdWxlICVzXSIpLAorCSAgIG9iamZpbGVfbmFtZSAob2JqZmlsZSkpOworCisg IC8qIFZhbGlkYXRlIHRoYXQgdGhlIG9mZnNldCBpcyB3aXRoaW4gdGhlIHNlY3Rpb24ncyByYW5n ZS4gICovCisgIGlmIChzdGFydF9vZmZzZXQgPj0gc2VjdGlvbi0+c2l6ZSkKKyAgICBlcnJvciAo XygiRFdfRk9STV9ybmdsaXN0eCBwb2ludGluZyBvdXRzaWRlIG9mICIKKyAgICAgICAgICAgICAi LmRlYnVnX3JuZ2xpc3RzIHNlY3Rpb24gW2luIG1vZHVsZSAlc10iKSwKKwkgICBvYmpmaWxlX25h bWUgKG9iamZpbGUpKTsKKworICAvKiBWYWxpZGF0ZSB0aGF0IHJlYWRpbmcgd29uJ3QgZ28gYmV5 b25kIHRoZSBlbmQgb2YgdGhlIHNlY3Rpb24uICAqLworICBpZiAoc3RhcnRfb2Zmc2V0ICsgY3Ut PmhlYWRlci5vZmZzZXRfc2l6ZSA+IHJuZ2xpc3RfYmFzZSArIHNlY3Rpb24tPnNpemUpCisgICAg ZXJyb3IgKF8oIlJlYWRpbmcgRFdfRk9STV9ybmdsaXN0eCBpbmRleCBiZXlvbmQgZW5kIG9mIgor CSAgICAgIi5kZWJ1Z19ybmdsaXN0cyBzZWN0aW9uIFtpbiBtb2R1bGUgJXNdIiksCisJICAgb2Jq ZmlsZV9uYW1lIChvYmpmaWxlKSk7CisKKyAgY29uc3QgZ2RiX2J5dGUgKmluZm9fcHRyID0gc2Vj dGlvbi0+YnVmZmVyICsgc3RhcnRfb2Zmc2V0OworCisgIGlmIChjdS0+aGVhZGVyLm9mZnNldF9z aXplID09IDQpCisgICAgcmV0dXJuIHJlYWRfNF9ieXRlcyAoYWJmZCwgaW5mb19wdHIpICsgcm5n bGlzdF9iYXNlOworICBlbHNlCisgICAgcmV0dXJuIHJlYWRfOF9ieXRlcyAoYWJmZCwgaW5mb19w dHIpICsgcm5nbGlzdF9iYXNlOworfQorCiAvKiBQcm9jZXNzIHRoZSBhdHRyaWJ1dGVzIHRoYXQg aGFkIHRvIGJlIHNraXBwZWQgaW4gdGhlIGZpcnN0IHJvdW5kLiBUaGVzZQogICAgYXR0cmlidXRl cyBhcmUgdGhlIG9uZXMgdGhhdCBuZWVkIHN0cl9vZmZzZXRzX2Jhc2Ugb3IgYWRkcl9iYXNlIGF0 dHJpYnV0ZXMuCiAgICBUaGV5IGNvdWxkIG5vdCBoYXZlIGJlZW4gcHJvY2Vzc2VkIGluIHRoZSBm aXJzdCByb3VuZCwgYmVjYXVzZSBhdCB0aGUgdGltZQogICAgdGhlIHZhbHVlcyBvZiBzdHJfb2Zm c2V0c19iYXNlIG9yIGFkZHJfYmFzZSBtYXkgbm90IGhhdmUgYmVlbiBrbm93bi4gICovCiBzdGF0 aWMgdm9pZAogcmVhZF9hdHRyaWJ1dGVfcmVwcm9jZXNzIChjb25zdCBzdHJ1Y3QgZGllX3JlYWRl cl9zcGVjcyAqcmVhZGVyLAotCQkJICBzdHJ1Y3QgYXR0cmlidXRlICphdHRyKQorCQkJICBzdHJ1 Y3QgYXR0cmlidXRlICphdHRyLCBkd2FyZl90YWcgdGFnKQogewogICBzdHJ1Y3QgZHdhcmYyX2N1 ICpjdSA9IHJlYWRlci0+Y3U7CiAgIHN3aXRjaCAoYXR0ci0+Zm9ybSkKQEAgLTE5MTAxLDYgKzE5 MjMzLDkgQEAgcmVhZF9hdHRyaWJ1dGVfcmVwcm9jZXNzIChjb25zdCBzdHJ1Y3QgZGllX3JlYWRl cl9zcGVjcyAqcmVhZGVyLAogICAgICAgY2FzZSBEV19GT1JNX2xvY2xpc3R4OgogCSBEV19VTlNO RCAoYXR0cikgPSByZWFkX2xvY2xpc3RfaW5kZXggKGN1LCBEV19VTlNORCAoYXR0cikpOwogCSBi cmVhazsKKyAgICAgIGNhc2UgRFdfRk9STV9ybmdsaXN0eDoKKyAgICAgICAgRFdfVU5TTkQgKGF0 dHIpID0gcmVhZF9ybmdsaXN0X2luZGV4IChjdSwgRFdfVU5TTkQgKGF0dHIpLCB0YWcpOworICAg ICAgICBicmVhazsKICAgICAgIGNhc2UgRFdfRk9STV9zdHJ4OgogICAgICAgY2FzZSBEV19GT1JN X3N0cngxOgogICAgICAgY2FzZSBEV19GT1JNX3N0cngyOgpAQCAtMTkyODIsOCArMTk0MTcsMTAg QEAgcmVhZF9hdHRyaWJ1dGVfdmFsdWUgKGNvbnN0IHN0cnVjdCBkaWVfcmVhZGVyX3NwZWNzICpy ZWFkZXIsCiAgICAgICBEV19TTkQgKGF0dHIpID0gcmVhZF9zaWduZWRfbGViMTI4IChhYmZkLCBp bmZvX3B0ciwgJmJ5dGVzX3JlYWQpOwogICAgICAgaW5mb19wdHIgKz0gYnl0ZXNfcmVhZDsKICAg ICAgIGJyZWFrOwotICAgIGNhc2UgRFdfRk9STV91ZGF0YToKICAgICBjYXNlIERXX0ZPUk1fcm5n bGlzdHg6CisgICAgICAqbmVlZF9yZXByb2Nlc3MgPSB0cnVlOworICAgICAgLyogRkFMTFRIUk9V R0ggKi8KKyAgICBjYXNlIERXX0ZPUk1fdWRhdGE6CiAgICAgICBEV19VTlNORCAoYXR0cikgPSBy ZWFkX3Vuc2lnbmVkX2xlYjEyOCAoYWJmZCwgaW5mb19wdHIsICZieXRlc19yZWFkKTsKICAgICAg IGluZm9fcHRyICs9IGJ5dGVzX3JlYWQ7CiAgICAgICBicmVhazsKQEAgLTIzMzcyLDYgKzIzNTA5 LDM0IEBAIGN1X2RlYnVnX2xvY19zZWN0aW9uIChzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKIAkJCQkg IDogJnBlcl9vYmpmaWxlLT5wZXJfYmZkLT5sb2MpOwogfQogCisvKiBSZXR1cm4gdGhlIC5kZWJ1 Z19ybmdsaXN0cyBzZWN0aW9uIHRvIHVzZSBmb3IgQ1UuICAqLworc3RhdGljIHN0cnVjdCBkd2Fy ZjJfc2VjdGlvbl9pbmZvICoKK2N1X2RlYnVnX3JuZ2xpc3RzX3NlY3Rpb24gKHN0cnVjdCBkd2Fy ZjJfY3UgKmN1LCBkd2FyZl90YWcgdGFnKQoreworICBpZiAoY3UtPmhlYWRlci52ZXJzaW9uIDwg NSkKKyAgICBlcnJvciAoXygiLmRlYnVnX3JuZ2xpc3RzIHNlY3Rpb24gY2Fubm90IGJlIHVzZWQg aW4gRFdBUkYgJWQiKSwKKwkgICBjdS0+aGVhZGVyLnZlcnNpb24pOworICBzdHJ1Y3QgZHdhcmYy X3Blcl9vYmpmaWxlICpkd2FyZjJfcGVyX29iamZpbGUgPSBjdS0+cGVyX29iamZpbGU7CisKKyAg LyogTWFrZSBzdXJlIHdlIHJlYWQgdGhlIC5kZWJ1Z19ybmdsaXN0cyBzZWN0aW9uIGZyb20gdGhl IGZpbGUgdGhhdAorICAgICBjb250YWlucyB0aGUgRFdfQVRfcmFuZ2VzIGF0dHJpYnV0ZSB3ZSBh cmUgcmVhZGluZy4gIE5vcm1hbGx5IHRoYXQKKyAgICAgd291bGQgYmUgdGhlIC5kd28gZmlsZSwg aWYgdGhlcmUgaXMgb25lLiAgSG93ZXZlciBmb3IgRFdfVEFHX2NvbXBpbGVfdW5pdAorICAgICBv ciBEV19UQUdfc2tlbGV0b24gdW5pdCwgd2UgYWx3YXlzIHdhbnQgdG8gcmVhZCBmcm9tIG9iamZp bGUvbGlua2VkCisgICAgIHByb2dyYW0uICAqLworICBpZiAoY3UtPmR3b191bml0ICE9IG51bGxw dHIKKyAgICAgICYmIHRhZyAhPSBEV19UQUdfY29tcGlsZV91bml0CisgICAgICAmJiB0YWcgIT0g RFdfVEFHX3NrZWxldG9uX3VuaXQpCisgICAgeworICAgICAgc3RydWN0IGR3b19zZWN0aW9ucyAq c2VjdGlvbnMgPSAmY3UtPmR3b191bml0LT5kd29fZmlsZS0+c2VjdGlvbnM7CisKKyAgICAgIGlm IChzZWN0aW9ucy0+cm5nbGlzdHMuc2l6ZSA+IDApCisJcmV0dXJuICZzZWN0aW9ucy0+cm5nbGlz dHM7CisgICAgICBlbHNlCisJZXJyb3IgKF8oIi5kZWJ1Z19ybmdsaXN0cyBzZWN0aW9uIGlzIG1p c3NpbmcgZnJvbSAuZHdvIGZpbGUuIikpOworICAgIH0KKyAgcmV0dXJuICZkd2FyZjJfcGVyX29i amZpbGUtPnBlcl9iZmQtPnJuZ2xpc3RzOworfQorCiAvKiBBIGhlbHBlciBmdW5jdGlvbiB0aGF0 IGZpbGxzIGluIGEgZHdhcmYyX2xvY2xpc3RfYmF0b24uICAqLwogCiBzdGF0aWMgdm9pZApkaWZm IC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3NS1ybmdsaXN0LXRlc3QuY2MgYi9n ZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHc1LXJuZ2xpc3QtdGVzdC5jYwpuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi44MTY5M2Y1NjlkCi0tLSAvZGV2L251bGwKKysrIGIv Z2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3NS1ybmdsaXN0LXRlc3QuY2MKQEAgLTAsMCArMSw5 NyBAQAorLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4K KworICAgQ29weXJpZ2h0IDIwMjAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisKKyAg IFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh bmQvb3IgbW9kaWZ5CisgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKyAgIChhdCB5b3VyIG9w dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRl ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgYnV0IFdJVEhPVVQgQU5Z IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgIE1FUkNI QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUK KyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgIFlv dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlCisgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8v d3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCisKKyNpbmNsdWRlIDxpb3N0cmVhbT4KKyNpbmNs dWRlIDx2ZWN0b3I+CisKK3N0cnVjdCBub2RlIHsKKyAgaW50IGlkOworICBub2RlICpsZWZ0Owor ICBub2RlICpyaWdodDsKKyAgYm9vbCB2aXNpdGVkOworfTsKKworbm9kZSAgbm9kZV9hcnJheVs1 MF07Cit1bnNpZ25lZCBpbnQgQ1VSX0lEWCA9IDA7CisKK25vZGUgKgorbWFrZV9ub2RlIChpbnQg dmFsKQoreworICBub2RlICpuZXdfbm9kZSA9ICYobm9kZV9hcnJheVtDVVJfSURYKytdKTsKKyAg bmV3X25vZGUtPmxlZnQgPSBOVUxMOworICBuZXdfbm9kZS0+cmlnaHQgPSBOVUxMOworICBuZXdf bm9kZS0+aWQgPSB2YWw7CisgIG5ld19ub2RlLT52aXNpdGVkID0gZmFsc2U7CisKKyAgcmV0dXJu IG5ld19ub2RlOworfQorCit2b2lkCit0cmVlX2luc2VydCAobm9kZSAqcm9vdCwgaW50IHZhbCkK K3sKKyAgaWYgKHZhbCA8IHJvb3QtPmlkKQorICAgIHsKKyAgICAgIGlmIChyb290LT5sZWZ0KQor ICAgICAgICB0cmVlX2luc2VydCAocm9vdC0+bGVmdCwgdmFsKTsKKyAgICAgIGVsc2UKKyAgICAg ICAgcm9vdC0+bGVmdCA9IG1ha2Vfbm9kZSh2YWwpOworICAgIH0KKyAgZWxzZSBpZiAodmFsID4g cm9vdC0+aWQpCisgICAgeworICAgICAgaWYgKHJvb3QtPnJpZ2h0KQorICAgICAgICB0cmVlX2lu c2VydCAocm9vdC0+cmlnaHQsIHZhbCk7CisgICAgICBlbHNlCisgICAgICAgIHJvb3QtPnJpZ2h0 ID0gbWFrZV9ub2RlKHZhbCk7CisgICAgfQorfQorCit2b2lkCitpbm9yZGVyIChub2RlICpyb290 KQoreworICBzdGQ6OnZlY3Rvcjxub2RlICo+IHRvZG87CisgIHRvZG8ucHVzaF9iYWNrIChyb290 KTsKKyAgd2hpbGUgKCF0b2RvLmVtcHR5KCkpCisgICAgeworICAgICAgbm9kZSAqY3VyciA9IHRv ZG8uYmFjaygpOworICAgICAgdG9kby5wb3BfYmFjaygpOyAvKiBicmVhay1oZXJlICovCisgICAg ICBpZiAoY3Vyci0+dmlzaXRlZCkKKyAgICAgICAgc3RkOjpjb3V0IDw8IGN1cnItPmlkIDw8ICIg IjsKKyAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgIGN1cnItPnZpc2l0ZWQgPSB0cnVl OworICAgICAgICAgIGlmIChjdXJyLT5yaWdodCkKKyAgICAgICAgICAgIHRvZG8ucHVzaF9iYWNr IChjdXJyLT5yaWdodCk7CisgICAgICAgICAgdG9kby5wdXNoX2JhY2sgKGN1cnIpOworICAgICAg ICAgIGlmIChjdXJyLT5sZWZ0KQorICAgICAgICAgICAgdG9kby5wdXNoX2JhY2sgKGN1cnItPmxl ZnQpOworICAgICAgICB9CisgICAgfQorfQorCitpbnQKK21haW4gKGludCBhcmdjLCBjaGFyICoq YXJndikKK3sKKyAgbm9kZSAqcm9vdCA9IG1ha2Vfbm9kZSAoMzUpOworCisgIHRyZWVfaW5zZXJ0 IChyb290LCAyOCk7CisgIHRyZWVfaW5zZXJ0IChyb290LCAyMCk7CisgIHRyZWVfaW5zZXJ0IChy b290LCA2MCk7CisKKyAgaW5vcmRlciAocm9vdCk7CisKKyAgcmV0dXJuIDA7Cit9CmRpZmYgLS1n aXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHc1LXJuZ2xpc3QtdGVzdC5leHAgYi9nZGIv dGVzdHN1aXRlL2dkYi5kd2FyZjIvZHc1LXJuZ2xpc3QtdGVzdC5leHAKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uYWY2YzM0YjVkZAotLS0gL2Rldi9udWxsCisrKyBiL2dk Yi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzUtcm5nbGlzdC10ZXN0LmV4cApAQCAtMCwwICsxLDQw IEBACisjIENvcHlyaWdodCAyMDIwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorCisj IFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh bmQvb3IgbW9kaWZ5CisjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisjIChhdCB5b3VyIG9wdGlv bikgYW55IGxhdGVyIHZlcnNpb24uCisjCisjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBp biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIyBidXQgV0lUSE9VVCBBTlkgV0FS UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyBNRVJDSEFOVEFC SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisjIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisjCisjIFlvdSBzaG91 bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl CisjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251 Lm9yZy9saWNlbnNlcy8+LgorCisjIENoZWNrIHRoYXQgR0RCIGNhbiBmaW5kIHRoZSB2YXJpYWJs ZXMgaW4gYSBsZXhpY2FsIGJsb2NrIHdpdGggYQorIyBEV19GT1JNX3JuZ2xpc3R4IERXX0FUX3Jh bmdlcyBmaWVsZC4gIFRoaXMgdGVzdCBpcyBpbnRlbmRlZCBmb3IgRFdBUkYtNSwKKyMgY29tcGls ZWQgd2l0aCBjbGFuZysrLgorCitzdGFuZGFyZF90ZXN0ZmlsZSAuY2MKKworIyBUaGlzIHRlc3Qg aXMgaW50ZW5kZWQgZm9yIHRhcmdldHMgd2hpY2ggc3VwcG9ydCBEV0FSRi01LgorIyBTaW5jZSB3 ZSBwYXNzIGFuIGV4cGxpY2l0IC1nZHdhcmYtNSB0byB0aGUgY29tcGlsZXIsCisjIHdlIGxldCB0 aGF0IGJlIHRoZSB0ZXN0IG9mIHdoZXRoZXIgdGhlIHRhcmdldCBzdXBwb3J0cyBpdC4KKworaWYg eyBbcHJlcGFyZV9mb3JfdGVzdGluZyAiZmFpbGVkIHRvIHByZXBhcmUiICIke3Rlc3RmaWxlfSIg XAorICAgICAgICAgICRzcmNmaWxlIHtkZWJ1ZyBjKysgYWRkaXRpb25hbF9mbGFncz0tZ2R3YXJm LTUgXAorICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbF9mbGFncz0tTzB9XSB9IHsK KyAgICByZXR1cm4gLTEKK30KKworaWYgIVtydW50b19tYWluXSB7CisgICAgcmV0dXJuIC0xCit9 CisKK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJicmVhay1oZXJlIl0KK2dk Yl9jb250aW51ZV90b19icmVha3BvaW50ICJicmVhay1oZXJlIiAiLiogYnJlYWstaGVyZSAuKiIK KworZ2RiX3Rlc3QgInByaW50IGN1cnIiICJcXFwobm9kZSBcXFwqXFxcKSAkaGV4IDxub2RlX2Fy cmF5PiIKK2dkYl90ZXN0ICJwcmludCAqY3VyciIgIj0ge2lkID0gMzUsIGxlZnQgPSAkaGV4IDxu b2RlX2FycmF5XFwrJGRlY2ltYWw+LCByaWdodCA9ICRoZXggPG5vZGVfYXJyYXlcXCskZGVjaW1h bD4sIHZpc2l0ZWQgPSBmYWxzZX0iCi0tIAoyLjI3LjAuMzg5LmdjMzhkNzY2NTgxNi1nb29nCgo= --0000000000006af7b705aa87b970--