From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 25816 invoked by alias); 2 Sep 2012 10:39:02 -0000 Received: (qmail 25794 invoked by uid 22791); 2 Sep 2012 10:38:58 -0000 X-SWARE-Spam-Status: No, hits=-1.9 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,KAM_STOCKTIP,KHOP_RCVD_TRUST,KHOP_THREADED,RCVD_IN_DNSWL_LOW,RCVD_IN_HOSTKARMA_YE,TW_XZ,TW_YM X-Spam-Check-By: sourceware.org Received: from mail-vc0-f169.google.com (HELO mail-vc0-f169.google.com) (209.85.220.169) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Sun, 02 Sep 2012 10:38:40 +0000 Received: by vcbfl13 with SMTP id fl13so5261878vcb.0 for ; Sun, 02 Sep 2012 03:38:39 -0700 (PDT) Received: by 10.59.1.162 with SMTP id bh2mr10111366ved.13.1346582319394; Sun, 02 Sep 2012 03:38:39 -0700 (PDT) MIME-Version: 1.0 Received: by 10.220.152.194 with HTTP; Sun, 2 Sep 2012 03:37:59 -0700 (PDT) In-Reply-To: <503E2A7A.2030709@codesourcery.com> References: <503DCEC5.2010308@mentor.com> <503E2A7A.2030709@codesourcery.com> From: Hui Zhu Date: Sun, 02 Sep 2012 10:39:00 -0000 Message-ID: Subject: Re: [PATCH] target attributes [1/5] core and load from target function To: Yao Qi Cc: Hui Zhu , gdb-patches@sourceware.org Content-Type: multipart/mixed; boundary=047d7bdc808ecef0f804c8b5a018 X-IsSubscribed: yes Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2012-09/txt/msg00002.txt.bz2 --047d7bdc808ecef0f804c8b5a018 Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: quoted-printable Content-length: 2677 On Wed, Aug 29, 2012 at 10:43 PM, Yao Qi wrote: > On 08/29/2012 04:11 PM, Hui Zhu wrote: >> +static void >> +target_attribute_address_handler (struct gdb_xml_parser *parser, >> + const struct gdb_xml_element *element, >> + void *user_data, >> + VEC(gdb_xml_value_s) *attributes) >> +{ >> + int i, len; >> + struct gdb_xml_value *attrs =3D VEC_address (gdb_xml_value_s, attribu= tes); >> + struct target_attribute *ta =3D *(struct target_attribute **)user_dat= a; >> + CORE_ADDR start, end; >> + struct target_attribute_address *ta_addr; > > I happen to see some compilation warnings on my new Fedora 16 box, while > these warnings don't appear on my Ubuntu box. > > ... -Werror -c -o target-memory.o -MT target-memory.o -MMD -MP -MF .deps/= target-memory.Tpo ../../../git/gdb/target-memory.c > ../../../git/gdb/target-attributes.c: In function =91target_attribute_add= ress_handler=92: > ../../../git/gdb/target-attributes.c:487:16: error: =91end=92 may be used= uninitialized in this function [-Werror=3Duninitialized] > ../../../git/gdb/target-attributes.c:486:18: error: =91start=92 may be us= ed uninitialized in this function [-Werror=3Duninitialized] > ../../../git/gdb/target-attributes.c: In function =91target_attribute_att= r_handler=92: > ../../../git/gdb/target-attributes.c:376:12: error: =91type=92 may be use= d uninitialized in this function [-Werror=3Duninitialized] > ../../../git/gdb/target-attributes.c: In function =91target_attribute_typ= e=92: > ../../../git/gdb/target-attributes.c:632:3: error: =91ret=92 may be used = uninitialized in this function [-Werror=3Duninitialized] > cc1: all warnings being treated as errors > make: *** [target-attributes.o] Error 1 > > The gcc I am using is 4.6.3 > $ gcc --version > gcc (GCC) 4.6.3 20120306 (Red Hat 4.6.3-2) > > We have to get these warnings fixed. > >> + >> + len =3D VEC_length (gdb_xml_value_s, attributes); >> + for (i =3D 0; i < len; i++) >> + { >> + if (strcmp (attrs[i].name, "start") =3D=3D 0) >> + start =3D * (ULONGEST *) attrs[i].value; >> + else if (strcmp (attrs[i].name, "end") =3D=3D 0) >> + end =3D * (ULONGEST *) attrs[i].value; >> + else >> + gdb_xml_error (parser, _("Unknown attribute name '%s'."), >> + attrs[i].name); >> + } >> + >> + ta_addr =3D xmalloc (sizeof (struct target_attribute_address)); >> + ta_addr->start =3D start; >> + ta_addr->end =3D end; >> + >> + ta_addr->prev =3D ta->addresses; >> + ta->addresses =3D ta_addr; >> +} > > -- > Yao Thanks. I post a new version. Best, Hui --047d7bdc808ecef0f804c8b5a018 Content-Type: text/plain; charset=US-ASCII; name="target_attribute_load.txt" Content-Disposition: attachment; filename="target_attribute_load.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_h6m0bbf00 Content-length: 43152 LS0tIGEvTWFrZWZpbGUuaW4KKysrIGIvTWFrZWZpbGUuaW4KQEAgLTczMSw3 ICs3MzEsNyBAQCBTRklMRVMgPSBhZGEtZXhwLnkgYWRhLWxhbmcuYyBhZGEt dHlwZXByCiAJc29saWIuYyBzb2xpYi10YXJnZXQuYyBzb3VyY2UuYyBcCiAJ c3RhYnNyZWFkLmMgc3RhY2suYyBwcm9iZS5jIHN0YXAtcHJvYmUuYyBzdGQt cmVncy5jIFwKIAlzeW1maWxlLmMgc3ltZmlsZS1tZW0uYyBzeW1taXNjLmMg c3ltdGFiLmMgXAotCXRhcmdldC5jIHRhcmdldC1kZXNjcmlwdGlvbnMuYyB0 YXJnZXQtbWVtb3J5LmMgXAorCXRhcmdldC5jIHRhcmdldC1hdHRyaWJ1dGVz LmMgdGFyZ2V0LWRlc2NyaXB0aW9ucy5jIHRhcmdldC1tZW1vcnkuYyBcCiAJ dGhyZWFkLmMgdG9wLmMgdHJhY2Vwb2ludC5jIFwKIAl0cmFkLWZyYW1lLmMg XAogCXRyYW1wLWZyYW1lLmMgXApAQCAtODMxLDcgKzgzMSw4IEBAIGdudWxp Yi9pbXBvcnQvZXh0cmEvc25pcHBldC93YXJuLW9uLXVzZS4KIGdudWxpYi9p bXBvcnQvc3RkZGVmLmluLmggZ251bGliL2ltcG9ydC9pbnR0eXBlcy5pbi5o IGlubGluZS1mcmFtZS5oIHNraXAuaCBcCiBjb21tb24vY29tbW9uLXV0aWxz LmggY29tbW9uL3htbC11dGlscy5oIGNvbW1vbi9idWZmZXIuaCBjb21tb24v cHRpZC5oIFwKIGNvbW1vbi9mb3JtYXQuaCBjb21tb24vaG9zdC1kZWZzLmgg dXRpbHMuaCBcCi1jb21tb24vbGludXgtb3NkYXRhLmggZ2RiLWRsZmNuLmgg YXV0by1sb2FkLmggcHJvYmUuaCBzdGFwLXByb2JlLmggZ2RiX2JmZC5oCitj b21tb24vbGludXgtb3NkYXRhLmggZ2RiLWRsZmNuLmggYXV0by1sb2FkLmgg cHJvYmUuaCBzdGFwLXByb2JlLmggZ2RiX2JmZC5oIFwKK3RhcmdldC1hdHRy aWJ1dGVzLmgKIAogIyBIZWFkZXIgZmlsZXMgdGhhdCBhbHJlYWR5IGhhdmUg c3JjZGlyIGluIHRoZW0sIG9yIHdoaWNoIGFyZSBpbiBvYmpkaXIuCiAKQEAg LTkxNyw3ICs5MTgsOCBAQCBDT01NT05fT0JTID0gJChERVBGSUxFUykgJChD T05GSUdfT0JTKSAkCiAJc29saWIubyBzb2xpYi10YXJnZXQubyBcCiAJcHJv bG9ndWUtdmFsdWUubyBtZW1vcnktbWFwLm8gbWVtcmFuZ2UubyBcCiAJeG1s LXN1cHBvcnQubyB4bWwtc3lzY2FsbC5vIHhtbC11dGlscy5vIFwKLQl0YXJn ZXQtZGVzY3JpcHRpb25zLm8gdGFyZ2V0LW1lbW9yeS5vIHhtbC10ZGVzYy5v IHhtbC1idWlsdGluLm8gXAorCXRhcmdldC1hdHRyaWJ1dGVzLm8gdGFyZ2V0 LWRlc2NyaXB0aW9ucy5vIHRhcmdldC1tZW1vcnkubyBcCisJeG1sLXRkZXNj Lm8geG1sLWJ1aWx0aW4ubyBcCiAJaW5mZXJpb3IubyBvc2RhdGEubyBnZGJf dXNsZWVwLm8gcmVjb3JkLm8gZ2NvcmUubyBcCiAJZ2RiX3ZlY3MubyBqaXQu byBwcm9nc3BhY2UubyBza2lwLm8gcHJvYmUubyBcCiAJY29tbW9uLXV0aWxz Lm8gYnVmZmVyLm8gcHRpZC5vIGdkYi1kbGZjbi5vIGNvbW1vbi1hZ2VudC5v IFwKLS0tIGEvYnJlYWtwb2ludC5oCisrKyBiL2JyZWFrcG9pbnQuaApAQCAt NzAwLDYgKzcwMCwxMSBAQCBzdHJ1Y3QgYnJlYWtwb2ludAogICAgICAgIHRo ZXJlIGlzIG5vIGNvbmRpdGlvbi4gICovCiAgICAgY2hhciAqY29uZF9zdHJp bmc7CiAKKyAgICAvKiBJZiBUcnVlLCB0aGUgR0RCIHNpZGUgY2Fubm90IGRv IHRoZSBjb25kaXRpb24gY2hlY2sgZm9yCisgICAgICAgdGhlIGNvbmRpdGlv biBvZiB0aGlzIGJyZWFrcG9pbnQgYW5kIHRoaXMgY29uZGl0aW9uIG9ubHkg Y2FuCisgICAgICAgYmUgY2hlY2tlZCBpbiBhZ2VudCBzaWRlLiAgKi8KKyAg ICBpbnQgdGFyZ2V0X29ubHlfY29uZF9jaGVjazsKKwogICAgIC8qIFN0cmlu ZyBmb3JtIG9mIGV4dHJhIHBhcmFtZXRlcnMsIG9yIE5VTEwgaWYgdGhlcmUg YXJlIG5vbmUuICAqLwogICAgIGNoYXIgKmV4dHJhX3N0cmluZzsKIAotLS0g YS9yZW1vdGUuYworKysgYi9yZW1vdGUuYwpAQCAtNDMsNiArNDMsNyBAQAog I2luY2x1ZGUgImNsaS9jbGktc2V0c2hvdy5oIgogI2luY2x1ZGUgInRhcmdl dC1kZXNjcmlwdGlvbnMuaCIKICNpbmNsdWRlICJnZGJfYmZkLmgiCisjaW5j bHVkZSAidGFyZ2V0LWF0dHJpYnV0ZXMuaCIKIAogI2luY2x1ZGUgPGN0eXBl Lmg+CiAjaW5jbHVkZSA8c3lzL3RpbWUuaD4KQEAgLTEyOTIsNiArMTI5Myw3 IEBAIGVudW0gewogICBQQUNLRVRfcVhmZXJfZmRwaWMsCiAgIFBBQ0tFVF9R RGlzYWJsZVJhbmRvbWl6YXRpb24sCiAgIFBBQ0tFVF9RQWdlbnQsCisgIFBB Q0tFVF9xWGZlcl90YXJnZXRfYXR0cmlidXRlc19yZWFkLAogICBQQUNLRVRf TUFYCiB9OwogCkBAIC0zNTEwLDYgKzM1MTIsMjIgQEAgcmVtb3RlX3N0YXJ0 X3JlbW90ZSAoaW50IGZyb21fdHR5LCBzdHJ1YwogCXJlbW90ZV9jaGVja19z eW1ib2xzIChzeW1maWxlX29iamZpbGUpOwogICAgIH0KIAorICBpZiAocmVt b3RlX3Byb3RvY29sX3BhY2tldHNbUEFDS0VUX3FYZmVyX3RhcmdldF9hdHRy aWJ1dGVzX3JlYWRdLnN1cHBvcnQKKwkhPSBQQUNLRVRfRElTQUJMRSkKKyAg ICB7CisgICAgICBjaGFyICp0ZXh0OworCisgICAgICB0ZXh0ID0gdGFyZ2V0 X3JlYWRfc3RyYWxsb2MgKCZjdXJyZW50X3RhcmdldCwgVEFSR0VUX09CSkVD VF9BVFRSSUJVVEVTLAorCQkJCSAgIE5VTEwpOworICAgICAgaWYgKHRleHQg IT0gTlVMTCkKKwl7CisJICBzdHJ1Y3QgY2xlYW51cCAqYmFja190byA9IG1h a2VfY2xlYW51cCAoeGZyZWUsIHRleHQpOworCisgICAgICAgICAgYWRkX3ht bF90YXJnZXRfYXR0cmlidXRlcyAodGV4dCk7CisJICBkb19jbGVhbnVwcyAo YmFja190byk7CisJfQorICAgIH0KKwogICAvKiBQb3NzaWJseSB0aGUgdGFy Z2V0IGhhcyBiZWVuIGVuZ2FnZWQgaW4gYSB0cmFjZSBydW4gc3RhcnRlZAog ICAgICBwcmV2aW91c2x5OyBmaW5kIG91dCB3aGVyZSB0aGluZ3MgYXJlIGF0 LiAgKi8KICAgaWYgKHJlbW90ZV9nZXRfdHJhY2Vfc3RhdHVzIChjdXJyZW50 X3RyYWNlX3N0YXR1cyAoKSkgIT0gLTEpCkBAIC0zOTQ2LDYgKzM5NjQsOCBA QCBzdGF0aWMgc3RydWN0IHByb3RvY29sX2ZlYXR1cmUgcmVtb3RlX3ByCiAg IHsgIlFBZ2VudCIsIFBBQ0tFVF9ESVNBQkxFLCByZW1vdGVfc3VwcG9ydGVk X3BhY2tldCwgUEFDS0VUX1FBZ2VudH0sCiAgIHsgInRyYWNlbnoiLCBQQUNL RVRfRElTQUJMRSwKICAgICByZW1vdGVfc3RyaW5nX3RyYWNpbmdfZmVhdHVy ZSwgLTEgfSwKKyAgeyAicVhmZXI6dGFyZ2V0LWF0dHJpYnV0ZXM6cmVhZCIs IFBBQ0tFVF9ESVNBQkxFLCByZW1vdGVfc3VwcG9ydGVkX3BhY2tldCwKKyAg ICBQQUNLRVRfcVhmZXJfdGFyZ2V0X2F0dHJpYnV0ZXNfcmVhZCB9LAogfTsK IAogc3RhdGljIGNoYXIgKnJlbW90ZV9zdXBwb3J0X3htbDsKQEAgLTg2NzIs NiArODY5MiwxMiBAQCByZW1vdGVfeGZlcl9wYXJ0aWFsIChzdHJ1Y3QgdGFy Z2V0X29wcyAqCiAgICAgICByZXR1cm4gcmVtb3RlX3JlYWRfcXhmZXIgKG9w cywgInVpYiIsIGFubmV4LCByZWFkYnVmLCBvZmZzZXQsIGxlbiwKIAkJCQkm cmVtb3RlX3Byb3RvY29sX3BhY2tldHNbUEFDS0VUX3FYZmVyX3VpYl0pOwog CisgICAgY2FzZSBUQVJHRVRfT0JKRUNUX0FUVFJJQlVURVM6CisgICAgICBn ZGJfYXNzZXJ0IChhbm5leCA9PSBOVUxMKTsKKyAgICAgIHJldHVybiByZW1v dGVfcmVhZF9xeGZlcgorCShvcHMsICJ0YXJnZXQtYXR0cmlidXRlcyIsIGFu bmV4LCByZWFkYnVmLCBvZmZzZXQsIGxlbiwKKwkgJnJlbW90ZV9wcm90b2Nv bF9wYWNrZXRzW1BBQ0tFVF9xWGZlcl90YXJnZXRfYXR0cmlidXRlc19yZWFk XSk7CisKICAgICBkZWZhdWx0OgogICAgICAgcmV0dXJuIC0xOwogICAgIH0K QEAgLTExNjM3LDYgKzExNjYzLDEwIEBAIFNob3cgdGhlIG1heGltdW0gc2l6 ZSBvZiB0aGUgYWRkcmVzcyAoaW4KICAgYWRkX3BhY2tldF9jb25maWdfY21k ICgmcmVtb3RlX3Byb3RvY29sX3BhY2tldHNbUEFDS0VUX1FBZ2VudF0sCiAJ CQkgIlFBZ2VudCIsICJhZ2VudCIsIDApOwogCisgIGFkZF9wYWNrZXRfY29u ZmlnX2NtZAorICAgICgmcmVtb3RlX3Byb3RvY29sX3BhY2tldHNbUEFDS0VU X3FYZmVyX3RhcmdldF9hdHRyaWJ1dGVzX3JlYWRdLAorICAgICAicVhmZXI6 dGFyZ2V0LWF0dHJpYnV0ZXM6cmVhZCIsICJ0YXJnZXQtYXR0cmlidXRlcyIs IDApOworCiAgIC8qIEtlZXAgdGhlIG9sZCBgYHNldCByZW1vdGUgWi1wYWNr ZXQgLi4uJycgd29ya2luZy4gIEVhY2ggaW5kaXZpZHVhbAogICAgICBaIHN1 Yi1wYWNrZXQgaGFzIGl0cyBvd24gc2V0IGFuZCBzaG93IGNvbW1hbmRzLCBi dXQgdXNlcnMgbWF5CiAgICAgIGhhdmUgc2V0cyB0byB0aGlzIHZhcmlhYmxl IGluIHRoZWlyIC5nZGJpbml0IGZpbGVzIChvciBpbiB0aGVpcgotLS0gL2Rl di9udWxsCisrKyBiL3RhcmdldC1hdHRyaWJ1dGVzLmMKQEAgLTAsMCArMSw2 NjkgQEAKKy8qIFRhcmdldCBhdHRyaWJ1dGVzIGZvciBHREIsIHRoZSBHTlUg ZGVidWdnZXIuCisKKyAgIENvcHlyaWdodCAoQykgMjAxMiBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb24sIEluYy4KKworICAgVGhpcyBmaWxlIGlzIHBhcnQg b2YgR0RCLgorCisgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsg eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICAgaXQg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9y CisgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisg ICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJS QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisg ICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UuICBTZWUgdGhlCisgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICBZb3Ugc2hvdWxkIGhhdmUg cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZQorICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNl ZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLworCisjaW5j bHVkZSAiZGVmcy5oIgorI2luY2x1ZGUgImdkYl9zdHJpbmcuaCIKKyNpbmNs dWRlICJ1aS1vdXQuaCIKKyNpbmNsdWRlICJ0cmFjZXBvaW50LmgiCisjaW5j bHVkZSAiZ2RiY21kLmgiCisjaW5jbHVkZSAidGFyZ2V0LWF0dHJpYnV0ZXMu aCIKKworc3RhdGljIHN0cnVjdCB0YXJnZXRfYXR0cmlidXRlICp0YXJnZXRf YXR0cmlidXRlc19saXN0OworCitzdHJ1Y3QgdGFyZ2V0X2F0dHJpYnV0ZSAq CitmaW5kX3RhcmdldF9hdHRyaWJ1dGVfbmFtZSAoY29uc3QgY2hhciAqbmFt ZSkKK3sKKyAgc3RydWN0IHRhcmdldF9hdHRyaWJ1dGUgKnRhOworCisgIGZv ciAodGEgPSB0YXJnZXRfYXR0cmlidXRlc19saXN0OyB0YTsgdGEgPSB0YS0+ bmV4dCkKKyAgICB7CisgICAgICBpZiAoc3RyY21wICh0YS0+bmFtZSwgbmFt ZSkgPT0gMCkKKwlyZXR1cm4gdGE7CisgICAgfQorCisgIHJldHVybiBOVUxM OworfQorCitzdHJ1Y3QgdGFyZ2V0X2F0dHJpYnV0ZSAqCitmaW5kX3Rhcmdl dF9hdHRyaWJ1dGVfaWQgKGludCBpZCkKK3sKKyAgc3RydWN0IHRhcmdldF9h dHRyaWJ1dGUgKnRhOworCisgIGZvciAodGEgPSB0YXJnZXRfYXR0cmlidXRl c19saXN0OyB0YTsgdGEgPSB0YS0+bmV4dCkKKyAgICB7CisgICAgICBpZiAo aWQgPT0gdGEtPmlkKQorCXJldHVybiB0YTsKKyAgICB9CisKKyAgcmV0dXJu IE5VTEw7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgYnBfbG9jYXRpb24gKmNoZWNr X2FnZW50X3RhcmdldF9hdHRyaWJ1dGVfYmwgPSBOVUxMOworY2hhciAqY2hl Y2tfYWdlbnRfdGFyZ2V0X2F0dHJpYnV0ZV9lcnJvciA9IE5VTEw7CisKK3N0 YXRpYyB2b2lkCitjbGVhcl9jaGVja19hZ2VudF90YXJnZXRfYXR0cmlidXRl ICh2b2lkICp1bnVzZWQpCit7CisgIGNoZWNrX2FnZW50X3RhcmdldF9hdHRy aWJ1dGVfYmwgPSBOVUxMOworfQorCitzdHJ1Y3QgY2xlYW51cCAqCitzZXRf Y2hlY2tfYWdlbnRfdGFyZ2V0X2F0dHJpYnV0ZSAoc3RydWN0IGJwX2xvY2F0 aW9uICpibCkKK3sKKyAgY2hlY2tfYWdlbnRfdGFyZ2V0X2F0dHJpYnV0ZV9i bCA9IGJsOworICBjaGVja19hZ2VudF90YXJnZXRfYXR0cmlidXRlX2Vycm9y ID0gTlVMTDsKKworICByZXR1cm4gbWFrZV9jbGVhbnVwIChjbGVhcl9jaGVj a19hZ2VudF90YXJnZXRfYXR0cmlidXRlLCBOVUxMKTsKK30KKwordm9pZAor Y2hlY2tfYWdlbnRfdGFyZ2V0X2F0dHJpYnV0ZSAoc3RydWN0IHRhcmdldF9h dHRyaWJ1dGUgKnRhLCBpbnQgd3JpdGUpCit7CisgIHN0YXRpYyBjaGFyIGVy cm9yX3N0clsyNTZdOworICBjaGVja19hZ2VudF90YXJnZXRfYXR0cmlidXRl X2Vycm9yID0gZXJyb3Jfc3RyOworCisgIGlmICh3cml0ZSkKKyAgICB7Cisg ICAgICBpZiAoKHRhLT5hZ2VudF9hY2Nlc3MgJiBUQVJHRVRfQVRUUklCVVRF X0FDQ0VTU19XUklURSkgPT0gMCkKKyAgICAgICAgeworCSAgc25wcmludGYg KGVycm9yX3N0ciwgMjU2LCBfKCIkJXMgY2Fubm90IGJlIHdyaXR0ZW4gaW4g YWdlbnQgY29kZS4iKSwKKwkJICAgIHRhLT5uYW1lKTsKKwkgIGVycm9yIChf KCIkJXMgY2Fubm90IGJlIHdyaXR0ZW4gaW4gYWdlbnQgY29kZS4iKSwgdGEt Pm5hbWUpOworCX0KKyAgICB9CisgIGVsc2UKKyAgICB7CisgICAgICBpZiAo KHRhLT5hZ2VudF9hY2Nlc3MgJiBUQVJHRVRfQVRUUklCVVRFX0FDQ0VTU19S RUFEKSA9PSAwKQorICAgICAgICB7CisJICBzbnByaW50ZiAoZXJyb3Jfc3Ry LCAyNTYsIF8oIiQlcyBjYW5ub3QgYmUgcmVhZCBpbiBhZ2VudCBjb2RlLiIp LAorCQkgICAgdGEtPm5hbWUpOworCSAgZXJyb3IgKF8oIiQlcyBjYW5ub3Qg YmUgcmVhZCBpbiBhZ2VudCBjb2RlLiIpLCB0YS0+bmFtZSk7CisJfQorICAg IH0KKworICBpZiAoY2hlY2tfYWdlbnRfdGFyZ2V0X2F0dHJpYnV0ZV9ibCkK KyAgICB7CisgICAgICBzdHJ1Y3QgdGFyZ2V0X2F0dHJpYnV0ZV9hZGRyZXNz ICp0YV9hZGRyOworCisgICAgICBpZiAodGEtPnRhcmdldF9vbmx5X2NvbmRf Y2hlY2spCisgICAgICAgIGNoZWNrX2FnZW50X3RhcmdldF9hdHRyaWJ1dGVf YmwtPm93bmVyLT50YXJnZXRfb25seV9jb25kX2NoZWNrID0gMTsKKworICAg ICAgc3dpdGNoIChjaGVja19hZ2VudF90YXJnZXRfYXR0cmlidXRlX2JsLT5s b2NfdHlwZSkKKwl7CisJY2FzZSBicF9sb2Nfc29mdHdhcmVfYnJlYWtwb2lu dDoKKwkgIGlmICgodGEtPnN1cHBvcnQKKwkgICAgICAgJiBUQVJHRVRfQVRU UklCVVRFX1NVUFBPUlRfU09GVFdBUkVfQlJFQUtQT0lOVCkgPT0gMCkKKwkg ICAgeworCSAgICAgIHNucHJpbnRmIChlcnJvcl9zdHIsIDI1NiwKKwkJCV8o IiQlcyBjYW5ub3QgYmUgdXNlZCBpbiBzb2Z0d2FyZSBicmVha3BvaW50LiIp LAorCQkJdGEtPm5hbWUpOworCSAgICAgIGVycm9yIChfKCIkJXMgY2Fubm90 IGJlIHVzZWQgaW4gc29mdHdhcmUgYnJlYWtwb2ludC4iKSwgdGEtPm5hbWUp OworCSAgICB9CisJICBicmVhazsKKwljYXNlIGJwX2xvY19oYXJkd2FyZV9i cmVha3BvaW50OgorCSAgaWYgKCh0YS0+c3VwcG9ydAorCSAgICAgICAmIFRB UkdFVF9BVFRSSUJVVEVfU1VQUE9SVF9IQVJEV0FSRV9CUkVBS1BPSU5UKSA9 PSAwKQorCSAgICB7CisJICAgICAgc25wcmludGYgKGVycm9yX3N0ciwgMjU2 LAorCQkJXygiJCVzIGNhbm5vdCBiZSB1c2VkIGluIGhhcmR3YXJlIGJyZWFr cG9pbnQuIiksCisJCQl0YS0+bmFtZSk7CisJICAgICAgZXJyb3IgKF8oIiQl cyBjYW5ub3QgYmUgdXNlZCBpbiBoYXJkd2FyZSBicmVha3BvaW50LiIpLAor CQkgICAgIHRhLT5uYW1lKTsKKwkgICAgfQorCSAgYnJlYWs7CisJY2FzZSBi cF9sb2NfaGFyZHdhcmVfd2F0Y2hwb2ludDoKKwkgIGlmICgodGEtPnN1cHBv cnQKKwkgICAgICAgJiBUQVJHRVRfQVRUUklCVVRFX1NVUFBPUlRfSEFSRFdB UkVfV0FUQ0hQT0lOVCkgPT0gMCkKKwkgICAgeworCSAgICAgIHNucHJpbnRm IChlcnJvcl9zdHIsIDI1NiwKKwkJCV8oIiQlcyBjYW5ub3QgYmUgdXNlZCBp biBoYXJkd2FyZSB3YXRjaHBvaW50LiIpLAorCQkJdGEtPm5hbWUpOworCSAg ICAgIGVycm9yIChfKCIkJXMgY2Fubm90IGJlIHVzZWQgaW4gaGFyZHdhcmUg d2F0Y2hwb2ludC4iKSwKKwkJICAgICB0YS0+bmFtZSk7CisJICAgIH0KKwkg IGJyZWFrOworCWRlZmF1bHQ6CisJICBpZiAoY2hlY2tfYWdlbnRfdGFyZ2V0 X2F0dHJpYnV0ZV9ibC0+b3duZXItPnR5cGUgPT0gYnBfdHJhY2Vwb2ludAor CSAgICAgIHx8IGNoZWNrX2FnZW50X3RhcmdldF9hdHRyaWJ1dGVfYmwtPm93 bmVyLT50eXBlCisJCSAgID09IGJwX2Zhc3RfdHJhY2Vwb2ludAorCSAgICAg IHx8IGNoZWNrX2FnZW50X3RhcmdldF9hdHRyaWJ1dGVfYmwtPm93bmVyLT50 eXBlCisJCSAgID09IGJwX3N0YXRpY190cmFjZXBvaW50KQorCSAgICB7CisJ ICAgICAgc25wcmludGYgKGVycm9yX3N0ciwgMjU2LAorCQkJXygiJCVzIGNh bm5vdCBiZSB1c2VkIGluIHRyYWNlcG9pbnQuIiksIHRhLT5uYW1lKTsKKwkg ICAgICBpZiAoKHRhLT5zdXBwb3J0ICYgVEFSR0VUX0FUVFJJQlVURV9TVVBQ T1JUX1RSQUNFUE9JTlQpID09IDApCisJICAgICAgICBlcnJvciAoXygiJCVz IGNhbm5vdCBiZSB1c2VkIGluIHRyYWNlcG9pbnQuIiksIHRhLT5uYW1lKTsK KwkgICAgfQorCSAgZWxzZQorCSAgICB7CisJICAgICAgc25wcmludGYgKGVy cm9yX3N0ciwgMjU2LAorCQkJXygiJCVzIGNhbm5vdCBiZSB1c2VkIGluIGJy ZWFrcG9pbnQgJWQuIiksCisJCQl0YS0+bmFtZSwKKwkJCWNoZWNrX2FnZW50 X3RhcmdldF9hdHRyaWJ1dGVfYmwtPm93bmVyLT5udW1iZXIpOworCSAgICAg IGVycm9yIChfKCIkJXMgY2Fubm90IGJlIHVzZWQgaW4gYnJlYWtwb2ludCAl ZC4iKSwgdGEtPm5hbWUsCisJCSAgICAgY2hlY2tfYWdlbnRfdGFyZ2V0X2F0 dHJpYnV0ZV9ibC0+b3duZXItPm51bWJlcik7CisJICAgIH0KKwkgIGJyZWFr OworCX0KKworICAgICAgaWYgKHRhLT5hZGRyZXNzZXMpCisJeworICAgICAg ICAgIGZvciAodGFfYWRkciA9IHRhLT5hZGRyZXNzZXM7IHRhX2FkZHI7IHRh X2FkZHIgPSB0YV9hZGRyLT5wcmV2KQorCSAgICB7CisJICAgICAgaWYgKGNo ZWNrX2FnZW50X3RhcmdldF9hdHRyaWJ1dGVfYmwtPmFkZHJlc3MgPj0gdGFf YWRkci0+c3RhcnQKKwkJICAmJiBjaGVja19hZ2VudF90YXJnZXRfYXR0cmli dXRlX2JsLT5hZGRyZXNzIDw9IHRhX2FkZHItPmVuZCkKKwkJYnJlYWs7CisJ ICAgIH0KKwkgIGlmICghdGFfYWRkcikKKwkgICAgeworCSAgICAgIHNucHJp bnRmIChlcnJvcl9zdHIsIDI1NiwKKwkJCV8oIlwKKyQlcyBjYW5ub3QgYmUg dXNlZCBpbiBicmVha3BvaW50ICVkIGJlY2F1c2UgdGhlIGFkZHJlc3MgbGlt aXQuIiksIHRhLT5uYW1lLAorCQkJY2hlY2tfYWdlbnRfdGFyZ2V0X2F0dHJp YnV0ZV9ibC0+b3duZXItPm51bWJlcik7CisJICAgICAgZXJyb3IgKF8oIlwK KyQlcyBjYW5ub3QgYmUgdXNlZCBpbiBicmVha3BvaW50ICVkIGJlY2F1c2Ug dGhlIGFkZHJlc3MgbGltaXQuIiksIHRhLT5uYW1lLAorCQkgICBjaGVja19h Z2VudF90YXJnZXRfYXR0cmlidXRlX2JsLT5vd25lci0+bnVtYmVyKTsKKwkg ICAgfQorCX0KKyAgICB9CisKKyAgY2hlY2tfYWdlbnRfdGFyZ2V0X2F0dHJp YnV0ZV9lcnJvciA9IE5VTEw7Cit9CisKK3ZvaWQKK2NsZWFyX3RhcmdldF9h dHRyaWJ1dGVzICh2b2lkICp1bnVzZWQpCit7CisgIHN0cnVjdCB0YXJnZXRf YXR0cmlidXRlICp0YSwgKnRtcDsKKworICBmb3IgKHRhID0gdGFyZ2V0X2F0 dHJpYnV0ZXNfbGlzdDsgdGE7KQorICAgIHsKKyAgICAgIHN0cnVjdCB0YXJn ZXRfYXR0cmlidXRlX2FkZHJlc3MgKnRhX2FkZHIsICp0bXBfYWRkcjsKKwor ICAgICAgdG1wID0gdGE7CisgICAgICB0YSA9IHRhLT5uZXh0OworCisgICAg ICBmb3IgKHRhX2FkZHIgPSB0bXAtPmFkZHJlc3NlczsgdGFfYWRkcjspCisg ICAgICAgIHsKKwkgIHRtcF9hZGRyID0gdGFfYWRkcjsKKwkgIHRhX2FkZHIg PSB0YV9hZGRyLT5wcmV2OworCSAgeGZyZWUgKHRtcF9hZGRyKTsKKwl9CisK KyAgICAgIHhmcmVlICh0bXApOworICAgIH0KKworICB0YXJnZXRfYXR0cmli dXRlc19saXN0ID0gTlVMTDsKK30KKworc3RhdGljIHZvaWQKK2luZm9fdGFy Z2V0X2F0dHJpYnV0ZXMgKGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0eSkKK3sK KyAgc3RydWN0IHRhcmdldF9hdHRyaWJ1dGUgKnRhOworICBzdHJ1Y3QgY2xl YW51cCAqYmFja190bzsKKyAgc3RydWN0IHVpX291dCAqdWlvdXQgPSBjdXJy ZW50X3Vpb3V0OworICBpbnQgY291bnQgPSAwOworCisgIGlmICh0YXJnZXRf YXR0cmlidXRlc19saXN0ID09IE5VTEwpCisgICAgeworICAgICAgdWlfb3V0 X21lc3NhZ2UgKHVpb3V0LCAwLCBfKCJObyB0YXJnZXQgYXR0cmlidXRlcy5c biIpKTsKKyAgICAgIHJldHVybjsKKyAgICB9CisKKyAgZm9yICh0YSA9IHRh cmdldF9hdHRyaWJ1dGVzX2xpc3Q7IHRhOyB0YSA9IHRhLT5uZXh0KQorICAg IGNvdW50Kys7CisKKyAgYmFja190byA9IG1ha2VfY2xlYW51cF91aV9vdXRf dGFibGVfYmVnaW5fZW5kICh1aW91dCwgNiwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudCwgInRhcmdl dC1hdHRyaWJ1dGVzIik7CisgIHVpX291dF90YWJsZV9oZWFkZXIgKHVpb3V0 LCAxNSwgdWlfbGVmdCwgIm5hbWUiLCAiTmFtZSIpOworICB1aV9vdXRfdGFi bGVfaGVhZGVyICh1aW91dCwgMTUsIHVpX2xlZnQsICJ0eXBlIiwgIlR5cGUi KTsKKyAgdWlfb3V0X3RhYmxlX2hlYWRlciAodWlvdXQsIDE1LCB1aV9sZWZ0 LCAidGFyZ2V0LW9ubHktY29uZC1jaGVjayIsCisJCSAgICAgICAiVGFyZ2V0 LW9ubHktY29uZC1jaGVjayIpOworICB1aV9vdXRfdGFibGVfaGVhZGVyICh1 aW91dCwgMTUsIHVpX2xlZnQsICJhZ2VudCBhY2Nlc3MiLCAiQWdlbnQgYWNj ZXNzIik7CisgIHVpX291dF90YWJsZV9oZWFkZXIgKHVpb3V0LCAxNSwgdWlf bGVmdCwgImdkYiBhY2Nlc3MiLCAiR0RCIGFjY2VzcyIpOworICB1aV9vdXRf dGFibGVfaGVhZGVyICh1aW91dCwgMTUsIHVpX2xlZnQsICJicmVha3BvaW50 IHR5cGUiLAorCQkgICAgICAgIkJyZWFrcG9pbnQgdHlwZSIpOworCisgIHVp X291dF90YWJsZV9ib2R5ICh1aW91dCk7CisgIGZvciAodGEgPSB0YXJnZXRf YXR0cmlidXRlc19saXN0OyB0YTsgdGEgPSB0YS0+bmV4dCkKKyAgICB7Cisg ICAgICBzdHJ1Y3QgdGFyZ2V0X2F0dHJpYnV0ZV9hZGRyZXNzICp0YV9hZGRy OworICAgICAgY2hhciBidWZbNTEyXTsKKyAgICAgIHN0cnVjdCBjbGVhbnVw ICpiYWNrX3RvMgorCT0gbWFrZV9jbGVhbnVwX3VpX291dF90dXBsZV9iZWdp bl9lbmQgKHVpb3V0LCAiYXR0cmlidXRlcyIpOworCisgICAgICBzbnByaW50 ZiAoYnVmLCA1MTIsICIkJXMiLCB0YS0+bmFtZSk7CisgICAgICB1aV9vdXRf ZmllbGRfc3RyaW5nICh1aW91dCwgIm5hbWUiLCBidWYpOworCisgICAgICBz d2l0Y2ggKHRhLT50eXBlKQorICAgICAgICB7CisJY2FzZSBUQVJHRVRfQVRU UklCVVRFX1RZUEVfSU5UODoKKwkgIHVpX291dF9maWVsZF9zdHJpbmcgKHVp b3V0LCAidHlwZSIsICJpbnQ4Iik7CisJICBicmVhazsKKwljYXNlIFRBUkdF VF9BVFRSSUJVVEVfVFlQRV9VSU5UODoKKwkgIHVpX291dF9maWVsZF9zdHJp bmcgKHVpb3V0LCAidHlwZSIsICJ1aW50OCIpOworCSAgYnJlYWs7CisJY2Fz ZSBUQVJHRVRfQVRUUklCVVRFX1RZUEVfSU5UMTY6CisJICB1aV9vdXRfZmll bGRfc3RyaW5nICh1aW91dCwgInR5cGUiLCAiaW50MTYiKTsKKwkgIGJyZWFr OworCWNhc2UgVEFSR0VUX0FUVFJJQlVURV9UWVBFX1VJTlQxNjoKKwkgIHVp X291dF9maWVsZF9zdHJpbmcgKHVpb3V0LCAidHlwZSIsICJ1aW50MTYiKTsK KwkgIGJyZWFrOworCWNhc2UgVEFSR0VUX0FUVFJJQlVURV9UWVBFX0lOVDMy OgorCSAgdWlfb3V0X2ZpZWxkX3N0cmluZyAodWlvdXQsICJ0eXBlIiwgImlu dDMyIik7CisJICBicmVhazsKKwljYXNlIFRBUkdFVF9BVFRSSUJVVEVfVFlQ RV9VSU5UMzI6CisJICB1aV9vdXRfZmllbGRfc3RyaW5nICh1aW91dCwgInR5 cGUiLCAidWludDMyIik7CisJICBicmVhazsKKwljYXNlIFRBUkdFVF9BVFRS SUJVVEVfVFlQRV9JTlQ2NDoKKwkgIHVpX291dF9maWVsZF9zdHJpbmcgKHVp b3V0LCAidHlwZSIsICJpbnQ2NCIpOworCSAgYnJlYWs7CisJY2FzZSBUQVJH RVRfQVRUUklCVVRFX1RZUEVfVUlOVDY0OgorCSAgdWlfb3V0X2ZpZWxkX3N0 cmluZyAodWlvdXQsICJ0eXBlIiwgInVpbnQ2NCIpOworCSAgYnJlYWs7CisJ fQorCisgICAgICB1aV9vdXRfZmllbGRfc3RyaW5nICh1aW91dCwgInRhcmdl dC1vbmx5LWNvbmQtY2hlY2siLAorCQkJICAgdGEtPnRhcmdldF9vbmx5X2Nv bmRfY2hlY2sgPyAieWVzIiA6ICJubyIpOworCisgICAgICBzbnByaW50ZiAo YnVmLCA1MTIsICIlcyVzIiwKKwkJKHRhLT5hZ2VudF9hY2Nlc3MKKwkJICYg VEFSR0VUX0FUVFJJQlVURV9BQ0NFU1NfUkVBRCkgPyAicmVhZCAiIDogIiIs CisJCSh0YS0+YWdlbnRfYWNjZXNzCisJCSAmIFRBUkdFVF9BVFRSSUJVVEVf QUNDRVNTX1dSSVRFKSA/ICJ3cml0ZSIgOiAiIik7CisgICAgICB1aV9vdXRf ZmllbGRfc3RyaW5nICh1aW91dCwgImFnZW50IGFjY2VzcyIsIGJ1Zik7CisK KyAgICAgIHNucHJpbnRmIChidWYsIDUxMiwgIiVzJXMiLAorCQkodGEtPmdk Yl9hY2Nlc3MgJiBUQVJHRVRfQVRUUklCVVRFX0FDQ0VTU19SRUFEKSA/ICJy ZWFkICIgOiAiIiwKKwkJKHRhLT5nZGJfYWNjZXNzCisJCSAmIFRBUkdFVF9B VFRSSUJVVEVfQUNDRVNTX1dSSVRFKSA/ICJ3cml0ZSIgOiAiIik7CisgICAg ICB1aV9vdXRfZmllbGRfc3RyaW5nICh1aW91dCwgImdkYiBhY2Nlc3MiLCBi dWYpOworCisgICAgICBzbnByaW50ZiAoYnVmLCA1MTIsICIlcyVzJXMlcyIs CisJCSh0YS0+c3VwcG9ydCAmIFRBUkdFVF9BVFRSSUJVVEVfU1VQUE9SVF9T T0ZUV0FSRV9CUkVBS1BPSU5UKQorCQk/ICJzb2Z0d2FyZS1icmVha3BvaW50 ICIgOiAiIiwKKwkJKHRhLT5zdXBwb3J0ICYgVEFSR0VUX0FUVFJJQlVURV9T VVBQT1JUX0hBUkRXQVJFX0JSRUFLUE9JTlQpCisJCT8gImhhcmR3YXJlLWJy ZWFrcG9pbnQgIiA6ICIiLAorCQkodGEtPnN1cHBvcnQgJiBUQVJHRVRfQVRU UklCVVRFX1NVUFBPUlRfSEFSRFdBUkVfV0FUQ0hQT0lOVCkKKwkJPyAiaGFy ZHdhcmUtd2F0Y2hwb2ludCAiIDogIiIsCisJCSh0YS0+c3VwcG9ydCAmIFRB UkdFVF9BVFRSSUJVVEVfU1VQUE9SVF9UUkFDRVBPSU5UKQorCQk/ICJ0cmFj ZXBvaW50ICIgOiAiIik7CisgICAgICB1aV9vdXRfZmllbGRfc3RyaW5nICh1 aW91dCwgImJyZWFrcG9pbnQgdHlwZSIsIGJ1Zik7CisKKyAgICAgIHVpX291 dF90ZXh0ICh1aW91dCwgIlxuIik7CisKKyAgICAgIGZvciAodGFfYWRkciA9 IHRhLT5hZGRyZXNzZXM7IHRhX2FkZHI7IHRhX2FkZHIgPSB0YV9hZGRyLT5w cmV2KQorICAgICAgICB7CisJICB1aV9vdXRfc3BhY2VzICh1aW91dCwgMik7 CisJICB1aV9vdXRfbWVzc2FnZSAodWlvdXQsIDAsICJzdGFydDolcyBlbmQ6 JXNcbiIsCisJCQkgIHBhZGRyZXNzICh0YXJnZXRfZ2RiYXJjaCwgdGFfYWRk ci0+c3RhcnQpLAorCQkJICBwYWRkcmVzcyAodGFyZ2V0X2dkYmFyY2gsIHRh X2FkZHItPmVuZCkpOworCX0KKyAgICAgIGRvX2NsZWFudXBzIChiYWNrX3Rv Mik7CisgICAgfQorCisgIGRvX2NsZWFudXBzIChiYWNrX3RvKTsKK30KKwor I2lmICFkZWZpbmVkKEhBVkVfTElCRVhQQVQpCisKK3ZvaWQKK2FkZF94bWxf dGFyZ2V0X2F0dHJpYnV0ZXMgKGNvbnN0IGNoYXIgKnRleHQpCit7CisgIGlm IChzdHJsZW4gKHRleHQpID4gMCkKKyAgICB3YXJuaW5nIChfKCJDYW4gbm90 IHBhcnNlIFhNTCB0YXJnZXQgYXR0cmlidXRlczsgWE1MIHN1cHBvcnQgIgor CSAgICAgICAid2FzIGRpc2FibGVkIGF0IGNvbXBpbGUgdGltZSIpKTsKK30K KworI2Vsc2UKKworI2luY2x1ZGUgInhtbC1zdXBwb3J0LmgiCisKK3N0YXRp YyB2b2lkCit0YXJnZXRfYXR0cmlidXRlX2F0dHJfaGFuZGxlciAoc3RydWN0 IGdkYl94bWxfcGFyc2VyICpwYXJzZXIsCisJCQkgICAgICAgY29uc3Qgc3Ry dWN0IGdkYl94bWxfZWxlbWVudCAqZWxlbWVudCwKKwkJCSAgICAgICB2b2lk ICp1c2VyX2RhdGEsCisJCQkgICAgICAgVkVDKGdkYl94bWxfdmFsdWVfcykg KmF0dHJpYnV0ZXMpCit7CisgIGNoYXIgKm5hbWUgPSBOVUxMOworICBpbnQg aSwgbGVuLCBpZCA9IC0xLCB0eXBlID0gMCwgdGFyZ2V0X29ubHlfY29uZF9j aGVjayA9IDA7CisgIHN0cnVjdCBnZGJfeG1sX3ZhbHVlICphdHRycyA9IFZF Q19hZGRyZXNzIChnZGJfeG1sX3ZhbHVlX3MsIGF0dHJpYnV0ZXMpOworICBz dHJ1Y3QgdGFyZ2V0X2F0dHJpYnV0ZSAqdGEsICoqdGFwID0gdXNlcl9kYXRh OworCisgIGxlbiA9IFZFQ19sZW5ndGggKGdkYl94bWxfdmFsdWVfcywgYXR0 cmlidXRlcyk7CisgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykKKyAgICB7 CisgICAgICBpZiAoc3RyY21wIChhdHRyc1tpXS5uYW1lLCAibmFtZSIpID09 IDApCisgICAgICAgIG5hbWUgPSBhdHRyc1tpXS52YWx1ZTsKKyAgICAgIGVs c2UgaWYgKHN0cmNtcCAoYXR0cnNbaV0ubmFtZSwgImlkIikgPT0gMCkKKyAg ICAgICAgaWQgPSAqIChVTE9OR0VTVCAqKSBhdHRyc1tpXS52YWx1ZTsKKyAg ICAgIGVsc2UgaWYgKHN0cmNtcCAoYXR0cnNbaV0ubmFtZSwgInR5cGUiKSA9 PSAwKQorICAgICAgICB0eXBlID0gKiAoVUxPTkdFU1QgKikgYXR0cnNbaV0u dmFsdWU7CisgICAgICBlbHNlIGlmIChzdHJjbXAgKGF0dHJzW2ldLm5hbWUs ICJ0YXJnZXQtb25seS1jb25kLWNoZWNrIikgPT0gMCkKKyAgICAgICAgdGFy Z2V0X29ubHlfY29uZF9jaGVjayA9ICogKFVMT05HRVNUICopIGF0dHJzW2ld LnZhbHVlOworICAgICAgZWxzZQorICAgICAgICBnZGJfeG1sX2Vycm9yIChw YXJzZXIsIF8oIlVua25vd24gYXR0cmlidXRlIG5hbWUgJyVzJy4iKSwKKwkJ ICAgICAgIGF0dHJzW2ldLm5hbWUpOworICAgIH0KKworICBpZiAoIW5hbWUg fHwgaWQgPCAwKQorICAgIGdkYl94bWxfZXJyb3IgKHBhcnNlciwgXygiXCJu YW1lXCIgb3IgXCJpZFwiIGlzIG1pc3NlZC4iKSk7CisKKyAgaWYgKGZpbmRf dGFyZ2V0X2F0dHJpYnV0ZV9uYW1lIChuYW1lKSkKKyAgICBnZGJfeG1sX2Vy cm9yIChwYXJzZXIsXygiXAorbmFtZSBcIiVzXCIgaXMgc2FtZSB3aXRoIGEg dGFyZ2V0IGF0dHJpYnV0ZS4iKSwgbmFtZSk7CisgIGlmIChmaW5kX3Rhcmdl dF9hdHRyaWJ1dGVfaWQgKGlkKSkKKyAgICBnZGJfeG1sX2Vycm9yIChwYXJz ZXIsXygiaWQgXCIlZFwiIGlzIHNhbWUgd2l0aCBhIHRhcmdldCBhdHRyaWJ1 dGUuIiksIGlkKTsKKworICB0YSA9IHh6YWxsb2MgKHNpemVvZiAoc3RydWN0 IHRhcmdldF9hdHRyaWJ1dGUpKTsKKyAgdGEtPm5hbWUgPSB4c3RyZHVwIChu YW1lKTsKKyAgdGEtPmlkID0gaWQ7CisgIHRhLT50eXBlID0gdHlwZTsKKyAg dGEtPnRhcmdldF9vbmx5X2NvbmRfY2hlY2sgPSB0YXJnZXRfb25seV9jb25k X2NoZWNrOworCisgIGlmICgqdGFwKQorICAgICgqdGFwKS0+bmV4dCA9IHRh OworICBlbHNlCisgICAgdGFyZ2V0X2F0dHJpYnV0ZXNfbGlzdCA9IHRhOwor ICAqdGFwID0gdGE7CisKKyAgdXNlcl9kYXRhID0gJnRhOworfQorCitzdGF0 aWMgdm9pZAordGFyZ2V0X2F0dHJpYnV0ZV9hY2Nlc3NfY2hpbGRyZW5faGFu ZGxlciAoc3RydWN0IGdkYl94bWxfcGFyc2VyICpwYXJzZXIsCisJCQkJCSAg Y29uc3Qgc3RydWN0IGdkYl94bWxfZWxlbWVudCAqZWxlbWVudCwKKwkJCQkJ ICB2b2lkICp1c2VyX2RhdGEsCisJCQkJCSAgVkVDKGdkYl94bWxfdmFsdWVf cykgKmF0dHJpYnV0ZXMpCit7CisgIHN0cnVjdCB0YXJnZXRfYXR0cmlidXRl ICp0YSA9ICooc3RydWN0IHRhcmdldF9hdHRyaWJ1dGUgKiopdXNlcl9kYXRh OworICBpbnQgaSwgbGVuLCB0YV9hY2Nlc3MgPSAwOworICBzdHJ1Y3QgZ2Ri X3htbF92YWx1ZSAqYXR0cnMgPSBWRUNfYWRkcmVzcyAoZ2RiX3htbF92YWx1 ZV9zLCBhdHRyaWJ1dGVzKTsKKworICBsZW4gPSBWRUNfbGVuZ3RoIChnZGJf eG1sX3ZhbHVlX3MsIGF0dHJpYnV0ZXMpOworICBmb3IgKGkgPSAwOyBpIDwg bGVuOyBpKyspCisgICAgeworICAgICAgaWYgKHN0cmNtcCAoYXR0cnNbaV0u bmFtZSwgInJlYWQiKSA9PSAwKQorICAgICAgICB7CisJICBpZiAoKiAoVUxP TkdFU1QgKikgYXR0cnNbaV0udmFsdWUpCisgICAgICAgICAgICB0YV9hY2Nl c3MgfD0gVEFSR0VUX0FUVFJJQlVURV9BQ0NFU1NfUkVBRDsKKwl9CisgICAg ICBlbHNlIGlmIChzdHJjbXAgKGF0dHJzW2ldLm5hbWUsICJ3cml0ZSIpID09 IDApCisgICAgICAgIHsKKwkgIGlmICgqIChVTE9OR0VTVCAqKSBhdHRyc1tp XS52YWx1ZSkKKyAgICAgICAgICAgIHRhX2FjY2VzcyB8PSBUQVJHRVRfQVRU UklCVVRFX0FDQ0VTU19XUklURTsKKwl9CisgICAgICBlbHNlCisgICAgICAg IGdkYl94bWxfZXJyb3IgKHBhcnNlciwgXygiVW5rbm93biBhdHRyaWJ1dGUg bmFtZSAnJXMnLiIpLAorCQkgICAgICAgYXR0cnNbaV0ubmFtZSk7CisgICAg fQorCisgIGlmIChzdHJjbXAgKGVsZW1lbnQtPm5hbWUsICJhZ2VudCIpID09 IDApCisgICAgdGEtPmFnZW50X2FjY2VzcyA9IHRhX2FjY2VzczsKKyAgZWxz ZQorICAgIHRhLT5nZGJfYWNjZXNzID0gdGFfYWNjZXNzOworfQorCitzdGF0 aWMgdm9pZAordGFyZ2V0X2F0dHJpYnV0ZV9zdXBwb3J0X2F0dHJfaGFuZGxl ciAoc3RydWN0IGdkYl94bWxfcGFyc2VyICpwYXJzZXIsCisJCQkJICAgICAg IGNvbnN0IHN0cnVjdCBnZGJfeG1sX2VsZW1lbnQgKmVsZW1lbnQsCisJCQkJ ICAgICAgIHZvaWQgKnVzZXJfZGF0YSwKKwkJCQkgICAgICAgVkVDKGdkYl94 bWxfdmFsdWVfcykgKmF0dHJpYnV0ZXMpCit7CisgIHN0cnVjdCB0YXJnZXRf YXR0cmlidXRlICp0YSA9ICooc3RydWN0IHRhcmdldF9hdHRyaWJ1dGUgKiop dXNlcl9kYXRhOworICBpbnQgaSwgbGVuID0gMDsKKyAgc3RydWN0IGdkYl94 bWxfdmFsdWUgKmF0dHJzID0gVkVDX2FkZHJlc3MgKGdkYl94bWxfdmFsdWVf cywgYXR0cmlidXRlcyk7CisKKyAgbGVuID0gVkVDX2xlbmd0aCAoZ2RiX3ht bF92YWx1ZV9zLCBhdHRyaWJ1dGVzKTsKKyAgZm9yIChpID0gMDsgaSA8IGxl bjsgaSsrKQorICAgIHsKKyAgICAgIGlmIChzdHJjbXAgKGF0dHJzW2ldLm5h bWUsICJzb2Z0d2FyZS1icmVha3BvaW50IikgPT0gMCkKKyAgICAgICAgewor CSAgaWYgKCogKFVMT05HRVNUICopIGF0dHJzW2ldLnZhbHVlKQorICAgICAg ICAgICAgdGEtPnN1cHBvcnQgfD0gVEFSR0VUX0FUVFJJQlVURV9TVVBQT1JU X1NPRlRXQVJFX0JSRUFLUE9JTlQ7CisJfQorICAgICAgZWxzZSBpZiAoc3Ry Y21wIChhdHRyc1tpXS5uYW1lLCAiaGFyZHdhcmUtYnJlYWtwb2ludCIpID09 IDApCisgICAgICAgIHsKKwkgIGlmICgqIChVTE9OR0VTVCAqKSBhdHRyc1tp XS52YWx1ZSkKKyAgICAgICAgICAgIHRhLT5zdXBwb3J0IHw9IFRBUkdFVF9B VFRSSUJVVEVfU1VQUE9SVF9IQVJEV0FSRV9CUkVBS1BPSU5UOworCX0KKyAg ICAgIGVsc2UgaWYgKHN0cmNtcCAoYXR0cnNbaV0ubmFtZSwgImhhcmR3YXJl LXdhdGNocG9pbnQiKSA9PSAwKQorICAgICAgICB7CisJICBpZiAoKiAoVUxP TkdFU1QgKikgYXR0cnNbaV0udmFsdWUpCisgICAgICAgICAgICB0YS0+c3Vw cG9ydCB8PSBUQVJHRVRfQVRUUklCVVRFX1NVUFBPUlRfSEFSRFdBUkVfV0FU Q0hQT0lOVDsKKwl9CisgICAgICBlbHNlIGlmIChzdHJjbXAgKGF0dHJzW2ld Lm5hbWUsICJ0cmFjZXBvaW50IikgPT0gMCkKKyAgICAgICAgeworCSAgaWYg KCogKFVMT05HRVNUICopIGF0dHJzW2ldLnZhbHVlKQorICAgICAgICAgICAg dGEtPnN1cHBvcnQgfD0gVEFSR0VUX0FUVFJJQlVURV9TVVBQT1JUX1RSQUNF UE9JTlQ7CisJfQorICAgICAgZWxzZQorICAgICAgICBnZGJfeG1sX2Vycm9y IChwYXJzZXIsIF8oIlVua25vd24gYXR0cmlidXRlIG5hbWUgJyVzJy4iKSwK KwkJICAgICAgIGF0dHJzW2ldLm5hbWUpOworICAgIH0KK30KKworc3RhdGlj IHZvaWQKK3RhcmdldF9hdHRyaWJ1dGVfYWRkcmVzc19oYW5kbGVyIChzdHJ1 Y3QgZ2RiX3htbF9wYXJzZXIgKnBhcnNlciwKKwkJCQkgIGNvbnN0IHN0cnVj dCBnZGJfeG1sX2VsZW1lbnQgKmVsZW1lbnQsCisJCQkJICB2b2lkICp1c2Vy X2RhdGEsCisJCQkJICBWRUMoZ2RiX3htbF92YWx1ZV9zKSAqYXR0cmlidXRl cykKK3sKKyAgaW50IGksIGxlbjsKKyAgc3RydWN0IGdkYl94bWxfdmFsdWUg KmF0dHJzID0gVkVDX2FkZHJlc3MgKGdkYl94bWxfdmFsdWVfcywgYXR0cmli dXRlcyk7CisgIHN0cnVjdCB0YXJnZXRfYXR0cmlidXRlICp0YSA9ICooc3Ry dWN0IHRhcmdldF9hdHRyaWJ1dGUgKiopdXNlcl9kYXRhOworICBDT1JFX0FE RFIgc3RhcnQgPSAwLCBlbmQgPSAwOworICBzdHJ1Y3QgdGFyZ2V0X2F0dHJp YnV0ZV9hZGRyZXNzICp0YV9hZGRyOworCisgIGxlbiA9IFZFQ19sZW5ndGgg KGdkYl94bWxfdmFsdWVfcywgYXR0cmlidXRlcyk7CisgIGZvciAoaSA9IDA7 IGkgPCBsZW47IGkrKykKKyAgICB7CisgICAgICBpZiAoc3RyY21wIChhdHRy c1tpXS5uYW1lLCAic3RhcnQiKSA9PSAwKQorICAgICAgICBzdGFydCA9ICog KFVMT05HRVNUICopIGF0dHJzW2ldLnZhbHVlOworICAgICAgZWxzZSBpZiAo c3RyY21wIChhdHRyc1tpXS5uYW1lLCAiZW5kIikgPT0gMCkKKyAgICAgICAg ZW5kID0gKiAoVUxPTkdFU1QgKikgYXR0cnNbaV0udmFsdWU7CisgICAgICBl bHNlCisgICAgICAgIGdkYl94bWxfZXJyb3IgKHBhcnNlciwgXygiVW5rbm93 biBhdHRyaWJ1dGUgbmFtZSAnJXMnLiIpLAorCQkgICAgICAgYXR0cnNbaV0u bmFtZSk7CisgICAgfQorCisgIHRhX2FkZHIgPSB4bWFsbG9jIChzaXplb2Yg KHN0cnVjdCB0YXJnZXRfYXR0cmlidXRlX2FkZHJlc3MpKTsKKyAgdGFfYWRk ci0+c3RhcnQgPSBzdGFydDsKKyAgdGFfYWRkci0+ZW5kID0gZW5kOworCisg IHRhX2FkZHItPnByZXYgPSB0YS0+YWRkcmVzc2VzOworICB0YS0+YWRkcmVz c2VzID0gdGFfYWRkcjsKK30KKworY29uc3Qgc3RydWN0IGdkYl94bWxfZW51 bSB0YXJnZXRfYXR0cmlidXRlX3R5cGVfZW51bXNbXSA9IHsKKyAgeyAiaW50 OCIsIFRBUkdFVF9BVFRSSUJVVEVfVFlQRV9JTlQ4IH0sCisgIHsgInVpbnQ4 IiwgVEFSR0VUX0FUVFJJQlVURV9UWVBFX1VJTlQ4IH0sCisgIHsgImludDE2 IiwgVEFSR0VUX0FUVFJJQlVURV9UWVBFX0lOVDE2IH0sCisgIHsgInVpbnQx NiIsIFRBUkdFVF9BVFRSSUJVVEVfVFlQRV9VSU5UMTYgfSwKKyAgeyAiaW50 MzIiLCBUQVJHRVRfQVRUUklCVVRFX1RZUEVfSU5UMzIgfSwKKyAgeyAidWlu dDMyIiwgVEFSR0VUX0FUVFJJQlVURV9UWVBFX1VJTlQzMiB9LAorICB7ICJp bnQ2NCIsIFRBUkdFVF9BVFRSSUJVVEVfVFlQRV9JTlQ2NCB9LAorICB7ICJ1 aW50NjQiLCBUQVJHRVRfQVRUUklCVVRFX1RZUEVfVUlOVDY0IH0sCisgIHsg TlVMTCwgMCB9Cit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IGdkYl94bWxf YXR0cmlidXRlIHRhcmdldF9hdHRyaWJ1dGVfYXR0cltdID0geworICB7ICJu YW1lIiwgR0RCX1hNTF9BRl9OT05FLCBOVUxMLCBOVUxMIH0sCisgIHsgImlk IiwgR0RCX1hNTF9BRl9OT05FLCBnZGJfeG1sX3BhcnNlX2F0dHJfdWxvbmdl c3QsIE5VTEwgfSwKKyAgeyAidHlwZSIsIEdEQl9YTUxfQUZfTk9ORSwgZ2Ri X3htbF9wYXJzZV9hdHRyX2VudW0sCisgICAgdGFyZ2V0X2F0dHJpYnV0ZV90 eXBlX2VudW1zIH0sCisgIHsgInRhcmdldC1vbmx5LWNvbmQtY2hlY2siLCBH REJfWE1MX0FGX09QVElPTkFMLCBnZGJfeG1sX3BhcnNlX2F0dHJfZW51bSwK KyAgICBnZGJfeG1sX2VudW1zX2Jvb2xlYW4gfSwKKyAgeyBOVUxMLCBHREJf WE1MX0FGX05PTkUsIE5VTEwsIE5VTEwgfQorfTsKKworc3RhdGljIGNvbnN0 IHN0cnVjdCBnZGJfeG1sX2F0dHJpYnV0ZQorCQkJdGFyZ2V0X2F0dHJpYnV0 ZV9hY2Nlc3NfY2hpbGRyZW5fYXR0cltdID0geworICB7ICJyZWFkIiwgR0RC X1hNTF9BRl9PUFRJT05BTCwgZ2RiX3htbF9wYXJzZV9hdHRyX2VudW0sCisg ICAgZ2RiX3htbF9lbnVtc19ib29sZWFuIH0sCisgIHsgIndyaXRlIiwgR0RC X1hNTF9BRl9PUFRJT05BTCwgZ2RiX3htbF9wYXJzZV9hdHRyX2VudW0sCisg ICAgZ2RiX3htbF9lbnVtc19ib29sZWFuIH0sCisgIHsgTlVMTCwgR0RCX1hN TF9BRl9OT05FLCBOVUxMLCBOVUxMIH0KK307CisKK3N0YXRpYyBjb25zdCBz dHJ1Y3QgZ2RiX3htbF9lbGVtZW50IHRhcmdldF9hdHRyaWJ1dGVfYWNjZXNz X2NoaWxkcmVuW10gPSB7CisgIHsgImFnZW50IiwgdGFyZ2V0X2F0dHJpYnV0 ZV9hY2Nlc3NfY2hpbGRyZW5fYXR0ciwgTlVMTCwKKyAgICBHREJfWE1MX0VG X09QVElPTkFMLCB0YXJnZXRfYXR0cmlidXRlX2FjY2Vzc19jaGlsZHJlbl9o YW5kbGVyLCBOVUxMIH0sCisgIHsgImdkYiIsIHRhcmdldF9hdHRyaWJ1dGVf YWNjZXNzX2NoaWxkcmVuX2F0dHIsIE5VTEwsCisgICAgR0RCX1hNTF9FRl9P UFRJT05BTCwgdGFyZ2V0X2F0dHJpYnV0ZV9hY2Nlc3NfY2hpbGRyZW5faGFu ZGxlciwgTlVMTCB9LAorICB7IE5VTEwsIE5VTEwsIE5VTEwsIEdEQl9YTUxf RUZfTk9ORSwgTlVMTCwgTlVMTCB9Cit9OworCitzdGF0aWMgY29uc3Qgc3Ry dWN0IGdkYl94bWxfYXR0cmlidXRlIHRhcmdldF9hdHRyaWJ1dGVfc3VwcG9y dF9hdHRyW10gPSB7CisgIHsgInNvZnR3YXJlLWJyZWFrcG9pbnQiLCBHREJf WE1MX0FGX09QVElPTkFMLCBnZGJfeG1sX3BhcnNlX2F0dHJfZW51bSwKKyAg ICBnZGJfeG1sX2VudW1zX2Jvb2xlYW4gfSwKKyAgeyAiaGFyZHdhcmUtYnJl YWtwb2ludCIsIEdEQl9YTUxfQUZfT1BUSU9OQUwsIGdkYl94bWxfcGFyc2Vf YXR0cl9lbnVtLAorICAgIGdkYl94bWxfZW51bXNfYm9vbGVhbiB9LAorICB7 ICJoYXJkd2FyZS13YXRjaHBvaW50IiwgR0RCX1hNTF9BRl9PUFRJT05BTCwg Z2RiX3htbF9wYXJzZV9hdHRyX2VudW0sCisgICAgZ2RiX3htbF9lbnVtc19i b29sZWFuIH0sCisgIHsgInRyYWNlcG9pbnQiLCBHREJfWE1MX0FGX09QVElP TkFMLCBnZGJfeG1sX3BhcnNlX2F0dHJfZW51bSwKKyAgICBnZGJfeG1sX2Vu dW1zX2Jvb2xlYW4gfSwKKyAgeyBOVUxMLCBHREJfWE1MX0FGX05PTkUsIE5V TEwsIE5VTEwgfQorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBnZGJfeG1s X2F0dHJpYnV0ZSB0YXJnZXRfYXR0cmlidXRlX2FkZHJlc3NfYXR0cltdID0g eworICB7ICJzdGFydCIsIEdEQl9YTUxfQUZfTk9ORSwgZ2RiX3htbF9wYXJz ZV9hdHRyX3Vsb25nZXN0LCBOVUxMIH0sCisgIHsgImVuZCIsIEdEQl9YTUxf QUZfTk9ORSwgZ2RiX3htbF9wYXJzZV9hdHRyX3Vsb25nZXN0LCBOVUxMIH0s CisgIHsgTlVMTCwgR0RCX1hNTF9BRl9OT05FLCBOVUxMLCBOVUxMIH0KK307 CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZ2RiX3htbF9lbGVtZW50IHRhcmdl dF9hdHRyaWJ1dGVfYWRkcmVzc2VzX2NoaWxkcmVuW10gPSB7CisgIHsgImFk ZHJlc3MiLCB0YXJnZXRfYXR0cmlidXRlX2FkZHJlc3NfYXR0ciwgTlVMTCwK KyAgICBHREJfWE1MX0VGX09QVElPTkFMIHwgR0RCX1hNTF9FRl9SRVBFQVRB QkxFLAorICAgIHRhcmdldF9hdHRyaWJ1dGVfYWRkcmVzc19oYW5kbGVyLCBO VUxMIH0sCisgIHsgTlVMTCwgTlVMTCwgTlVMTCwgR0RCX1hNTF9FRl9OT05F LCBOVUxMLCBOVUxMIH0KK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZ2Ri X3htbF9lbGVtZW50IHRhcmdldF9hdHRyaWJ1dGVfZWxlbWVudHNbXSA9IHsK KyAgeyAiYWNjZXNzIiwgTlVMTCwgdGFyZ2V0X2F0dHJpYnV0ZV9hY2Nlc3Nf Y2hpbGRyZW4sCisgICAgR0RCX1hNTF9FRl9OT05FLCBOVUxMLCBOVUxMIH0s CisgIHsgInN1cHBvcnQiLCB0YXJnZXRfYXR0cmlidXRlX3N1cHBvcnRfYXR0 ciwgTlVMTCwKKyAgICBHREJfWE1MX0VGX09QVElPTkFMLCB0YXJnZXRfYXR0 cmlidXRlX3N1cHBvcnRfYXR0cl9oYW5kbGVyLCBOVUxMIH0sCisgIHsgImFk ZHJlc3NlcyIsIE5VTEwsIHRhcmdldF9hdHRyaWJ1dGVfYWRkcmVzc2VzX2No aWxkcmVuLAorICAgIEdEQl9YTUxfRUZfT1BUSU9OQUwsIE5VTEwsIE5VTEwg fSwKKyAgeyBOVUxMLCBOVUxMLCBOVUxMLCBHREJfWE1MX0VGX05PTkUsIE5V TEwsIE5VTEwgfQorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBnZGJfeG1s X2VsZW1lbnQgdGFyZ2V0X2F0dHJpYnV0ZXNfY2hpbGRyZW5bXSA9IHsKKyAg eyAidGFyZ2V0LWF0dHJpYnV0ZSIsIHRhcmdldF9hdHRyaWJ1dGVfYXR0ciwg dGFyZ2V0X2F0dHJpYnV0ZV9lbGVtZW50cywKKyAgICBHREJfWE1MX0VGX09Q VElPTkFMIHwgR0RCX1hNTF9FRl9SRVBFQVRBQkxFLAorICAgIHRhcmdldF9h dHRyaWJ1dGVfYXR0cl9oYW5kbGVyLCBOVUxMIH0sCisgIHsgTlVMTCwgTlVM TCwgTlVMTCwgR0RCX1hNTF9FRl9OT05FLCBOVUxMLCBOVUxMIH0KK307CisK K3N0YXRpYyBjb25zdCBzdHJ1Y3QgZ2RiX3htbF9lbGVtZW50IHRhcmdldF9h dHRyaWJ1dGVzX2VsZW1lbnRzW10gPSB7CisgIHsgInRhcmdldC1hdHRyaWJ1 dGVzIiwgTlVMTCwgdGFyZ2V0X2F0dHJpYnV0ZXNfY2hpbGRyZW4sCisgICAg R0RCX1hNTF9FRl9OT05FLCBOVUxMLCBOVUxMIH0sCisgIHsgTlVMTCwgTlVM TCwgTlVMTCwgR0RCX1hNTF9FRl9OT05FLCBOVUxMLCBOVUxMIH0KK307CisK K3ZvaWQKK2FkZF94bWxfdGFyZ2V0X2F0dHJpYnV0ZXMgKGNvbnN0IGNoYXIg KnRleHQpCit7CisgIHN0cnVjdCB0YXJnZXRfYXR0cmlidXRlICp0YSA9IE5V TEw7CisgIHN0cnVjdCBjbGVhbnVwICpiYWNrX3RvID0gbWFrZV9jbGVhbnVw IChjbGVhcl90YXJnZXRfYXR0cmlidXRlcywgTlVMTCk7CisKKyAgY2xlYXJf dGFyZ2V0X2F0dHJpYnV0ZXMoTlVMTCk7CisgIGlmIChnZGJfeG1sX3BhcnNl X3F1aWNrIChfKCJ0YXJnZXQgYXR0cmlidXRlcyIpLCBOVUxMLAorCQkJICAg dGFyZ2V0X2F0dHJpYnV0ZXNfZWxlbWVudHMsIHRleHQsICZ0YSkgPT0gMCkK KyAgICB7CisgICAgICBkaXNjYXJkX2NsZWFudXBzIChiYWNrX3RvKTsKKyAg ICAgIHRyYWNlX3ZhcmlhYmxlX251bWJlcl9jaGVjayAoKTsKKyAgICB9Cisg IGVsc2UKKyAgICBkb19jbGVhbnVwcyAoYmFja190byk7Cit9CisKKyNlbmRp ZgorCitzdHJ1Y3QgdHlwZSAqCit0YXJnZXRfYXR0cmlidXRlX3R5cGUgKHN0 cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBzdHJ1Y3QgdGFyZ2V0X2F0dHJpYnV0 ZSAqdGEpCit7CisgIHN0cnVjdCB0eXBlICpyZXQgPSBidWlsdGluX3R5cGUg KGdkYmFyY2gpLT5idWlsdGluX3VpbnQ2NDsKKworICBzd2l0Y2ggKHRhLT50 eXBlKQorICAgIHsKKyAgICBjYXNlIFRBUkdFVF9BVFRSSUJVVEVfVFlQRV9J TlQ4OgorICAgICAgcmV0ID0gYnVpbHRpbl90eXBlIChnZGJhcmNoKS0+YnVp bHRpbl9pbnQ4OworICAgICAgYnJlYWs7CisgICAgY2FzZSBUQVJHRVRfQVRU UklCVVRFX1RZUEVfVUlOVDg6CisgICAgICByZXQgPSBidWlsdGluX3R5cGUg KGdkYmFyY2gpLT5idWlsdGluX3VpbnQ4OworICAgICAgYnJlYWs7CisgICAg Y2FzZSBUQVJHRVRfQVRUUklCVVRFX1RZUEVfSU5UMTY6CisgICAgICByZXQg PSBidWlsdGluX3R5cGUgKGdkYmFyY2gpLT5idWlsdGluX2ludDE2OworICAg ICAgYnJlYWs7CisgICAgY2FzZSBUQVJHRVRfQVRUUklCVVRFX1RZUEVfVUlO VDE2OgorICAgICAgcmV0ID0gYnVpbHRpbl90eXBlIChnZGJhcmNoKS0+YnVp bHRpbl91aW50MTY7CisgICAgICBicmVhazsKKyAgICBjYXNlIFRBUkdFVF9B VFRSSUJVVEVfVFlQRV9JTlQzMjoKKyAgICAgIHJldCA9IGJ1aWx0aW5fdHlw ZSAoZ2RiYXJjaCktPmJ1aWx0aW5faW50MzI7CisgICAgICBicmVhazsKKyAg ICBjYXNlIFRBUkdFVF9BVFRSSUJVVEVfVFlQRV9VSU5UMzI6CisgICAgICBy ZXQgPSBidWlsdGluX3R5cGUgKGdkYmFyY2gpLT5idWlsdGluX3VpbnQzMjsK KyAgICAgIGJyZWFrOworICAgIGNhc2UgVEFSR0VUX0FUVFJJQlVURV9UWVBF X0lOVDY0OgorICAgICAgcmV0ID0gYnVpbHRpbl90eXBlIChnZGJhcmNoKS0+ YnVpbHRpbl9pbnQ2NDsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgVEFSR0VU X0FUVFJJQlVURV9UWVBFX1VJTlQ2NDoKKyAgICAgIHJldCA9IGJ1aWx0aW5f dHlwZSAoZ2RiYXJjaCktPmJ1aWx0aW5fdWludDY0OworICAgICAgYnJlYWs7 CisgICAgfQorCisgIHJldHVybiByZXQ7Cit9CisKK3N0YXRpYyB2b2lkCits b2FkX3RhcmdldF9hdHRyaWJ1dGVzX2NvbW1hbmQgKGNoYXIgKmV4cCwgaW50 IGZyb21fdHR5KQoreworICBjaGFyICp0ZXh0ID0geG1sX2ZldGNoX2NvbnRl bnRfZnJvbV9maWxlIChleHAsIE5VTEwpOworCisgIGlmICh0ZXh0ID09IE5V TEwpCisgICAgZXJyb3IgKF8oIkNvdWxkIG5vdCBvcGVuIFwiJXNcIiIpLCBl eHApOworICBhZGRfeG1sX3RhcmdldF9hdHRyaWJ1dGVzICh0ZXh0KTsKK30K Kworc3RhdGljIHZvaWQKK2NsZWFyX3RhcmdldF9hdHRyaWJ1dGVzX2NvbW1h bmQgKGNoYXIgKmV4cCwgaW50IGZyb21fdHR5KQoreworICBjbGVhcl90YXJn ZXRfYXR0cmlidXRlcyAoTlVMTCk7Cit9CisKKy8qIFByb3ZpZGUgYSBwcm90 b3R5cGUgdG8gc2lsZW5jZSAtV21pc3NpbmctcHJvdG90eXBlcy4gICovCitl eHRlcm4gaW5pdGlhbGl6ZV9maWxlX2Z0eXBlIF9pbml0aWFsaXplX3Rhcmdl dHNfYXR0cmlidXRlczsKKwordm9pZAorX2luaXRpYWxpemVfdGFyZ2V0c19h dHRyaWJ1dGVzICh2b2lkKQoreworICBhZGRfY21kICgibG9hZC10YXJnZXQt YXR0cmlidXRlcyIsIGNsYXNzX21haW50ZW5hbmNlLAorCSAgIGxvYWRfdGFy Z2V0X2F0dHJpYnV0ZXNfY29tbWFuZCwKKwkgICBfKCJMb2FkIHRhcmdldCBh dHRyaWJ1dGVzIGZyb20gYSBYTUwgZmlsZS4iKSwKKwkgICAmbWFpbnRlbmFu Y2VsaXN0KTsKKworICBhZGRfY21kICgiY2xlYXItdGFyZ2V0LWF0dHJpYnV0 ZXMiLCBjbGFzc19tYWludGVuYW5jZSwKKwkgICBjbGVhcl90YXJnZXRfYXR0 cmlidXRlc19jb21tYW5kLAorCSAgIF8oIlJlbW92ZSBhbGwgdGFyZ2V0IGF0 dHJpYnV0ZXMuIiksCisJICAgJm1haW50ZW5hbmNlbGlzdCk7CisKKyAgYWRk X2luZm8gKCJ0YXJnZXQtYXR0cmlidXRlcyIsIGluZm9fdGFyZ2V0X2F0dHJp YnV0ZXMsIF8oIlwKK1N0YXR1cyBvZiB0YXJnZXQgYXR0cmlidXRlcy4iKSk7 Cit9Ci0tLSAvZGV2L251bGwKKysrIGIvdGFyZ2V0LWF0dHJpYnV0ZXMuaApA QCAtMCwwICsxLDEwNCBAQAorLyogVGFyZ2V0IGF0dHJpYnV0ZXMgZm9yIEdE QiwgdGhlIEdOVSBkZWJ1Z2dlci4KKworICAgQ29weXJpZ2h0IChDKSAyMDEy IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorCisgICBUaGlzIGZp bGUgaXMgcGFydCBvZiBHREIuCisKKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVl IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9k aWZ5CisgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICAgdGhlIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUg TGljZW5zZSwgb3IKKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl cnNpb24uCisKKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0 aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgYnV0IFdJVEhP VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy cmFudHkgb2YKKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAgIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgIFlvdSBz aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlCisgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4g IElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4g ICovCisKKyNpZm5kZWYgVEFSR0VUX0FUVFJJQlVURVNfSAorI2RlZmluZSBU QVJHRVRfQVRUUklCVVRFU19IIDEKKworZW51bQoreworICBUQVJHRVRfQVRU UklCVVRFX1RZUEVfSU5UOCwKKyAgVEFSR0VUX0FUVFJJQlVURV9UWVBFX1VJ TlQ4LAorICBUQVJHRVRfQVRUUklCVVRFX1RZUEVfSU5UMTYsCisgIFRBUkdF VF9BVFRSSUJVVEVfVFlQRV9VSU5UMTYsCisgIFRBUkdFVF9BVFRSSUJVVEVf VFlQRV9JTlQzMiwKKyAgVEFSR0VUX0FUVFJJQlVURV9UWVBFX1VJTlQzMiwK KyAgVEFSR0VUX0FUVFJJQlVURV9UWVBFX0lOVDY0LAorICBUQVJHRVRfQVRU UklCVVRFX1RZUEVfVUlOVDY0LAorfTsKKworI2RlZmluZSBUQVJHRVRfQVRU UklCVVRFX0FDQ0VTU19SRUFECTB4MQorI2RlZmluZSBUQVJHRVRfQVRUUklC VVRFX0FDQ0VTU19XUklURQkweDIKKworI2RlZmluZSBUQVJHRVRfQVRUUklC VVRFX1NVUFBPUlRfU09GVFdBUkVfQlJFQUtQT0lOVAkweDEKKyNkZWZpbmUg VEFSR0VUX0FUVFJJQlVURV9TVVBQT1JUX0hBUkRXQVJFX0JSRUFLUE9JTlQJ MHgyCisjZGVmaW5lIFRBUkdFVF9BVFRSSUJVVEVfU1VQUE9SVF9IQVJEV0FS RV9XQVRDSFBPSU5UCTB4NAorI2RlZmluZSBUQVJHRVRfQVRUUklCVVRFX1NV UFBPUlRfVFJBQ0VQT0lOVAkJMHg4CisKK3N0cnVjdCB0YXJnZXRfYXR0cmli dXRlX2FkZHJlc3MKKyAgeworICAgIHN0cnVjdCB0YXJnZXRfYXR0cmlidXRl X2FkZHJlc3MgKnByZXY7CisgICAgQ09SRV9BRERSCXN0YXJ0OworICAgIENP UkVfQUREUgllbmQ7CisgIH07CisKKy8qIFRoaXMgaXMgdGhlIGNvcmUgc3Ry dWN0IG9mIGEgdGFyZ2V0IGF0dHJpYnV0ZS4KKyAgIFdoZW4gR0RCIGdldCBh IHRhcmdldCBhdHRyaWJ1dGUgZnJvbSBYTUwsCisgICBpdCB3aWxsIGFsbG9j IGEgc3RydWN0IGZvciBpdC4gICovCisKK3N0cnVjdCB0YXJnZXRfYXR0cmli dXRlCisgIHsKKyAgICBzdHJ1Y3QgdGFyZ2V0X2F0dHJpYnV0ZSAqbmV4dDsK KyAgICBjaGFyICpuYW1lOworICAgIGludCBpZDsKKyAgICBpbnQgdHlwZTsK KyAgICBpbnQgdGFyZ2V0X29ubHlfY29uZF9jaGVjazsKKyAgICB1bnNpZ25l ZCBpbnQgYWdlbnRfYWNjZXNzOworICAgIHVuc2lnbmVkIGludCBnZGJfYWNj ZXNzOworICAgIHVuc2lnbmVkIGludCBzdXBwb3J0OworICAgIHN0cnVjdCB0 YXJnZXRfYXR0cmlidXRlX2FkZHJlc3MgKmFkZHJlc3NlczsKKyAgfTsKKwor LyogVGhpcyBpcyB0aGUgZXJyb3IgcmVwb3J0IHN0cmluZyBmb3IgZnVuY3Rp b24KKyAgIGNoZWNrX2FnZW50X3RhcmdldF9hdHRyaWJ1dGUuCisgICBCZWNh dXNlIHNvbWUgZnVuY3Rpb24gY2FsbCBjaGVja19hZ2VudF90YXJnZXRfYXR0 cmlidXRlCisgICB3aXRoIFRSWV9DQVRDSC4gIFVzZSB0aGlzIHN0cmluZyBy ZXBvcnQgZXJyb3IuICAqLworCitleHRlcm4gY2hhciAqY2hlY2tfYWdlbnRf dGFyZ2V0X2F0dHJpYnV0ZV9lcnJvcjsKKworZXh0ZXJuIHN0cnVjdCB0YXJn ZXRfYXR0cmlidXRlICpmaW5kX3RhcmdldF9hdHRyaWJ1dGVfbmFtZSAoY29u c3QgY2hhciAqbmFtZSk7CitleHRlcm4gc3RydWN0IHRhcmdldF9hdHRyaWJ1 dGUgKmZpbmRfdGFyZ2V0X2F0dHJpYnV0ZV9pZCAoaW50IGlkKTsKKworLyog U2V0IEJMIGZvciBmdW5jdGlvbiBjaGVja19hZ2VudF90YXJnZXRfYXR0cmli dXRlCisgICBiZWZvcmUgdHJhbnNsYXRlIGEgc3RyaW5nIHRvIGFnZW50IGV4 cHJlc3Npb24gYnl0ZWNvZGUuICAqLworCitleHRlcm4gc3RydWN0IGNsZWFu dXAgKnNldF9jaGVja19hZ2VudF90YXJnZXRfYXR0cmlidXRlCisJCQkoc3Ry dWN0IGJwX2xvY2F0aW9uICpibCk7CisKKy8qIFRoZSBmdW5jdGlvbiB0aGF0 IHRyYW5zbGF0ZSBhIHN0cmluZyB0byBhZ2VudCBleHByZXNzaW9uIGJ5dGVj b2RlIGNhbGwKKyAgIGNoZWNrX2FnZW50X3RhcmdldF9hdHRyaWJ1dGUgdG8g Y2hlY2sgaWYgVEEgaXMgT0sgdG8gdXNlIHdpdGgKKyAgIEJMIHRoYXQgc2V0 IGJ5IHNldF9jaGVja19hZ2VudF90YXJnZXRfYXR0cmlidXRlLiAgKi8KKwor ZXh0ZXJuIHZvaWQgY2hlY2tfYWdlbnRfdGFyZ2V0X2F0dHJpYnV0ZSAoc3Ry dWN0IHRhcmdldF9hdHRyaWJ1dGUgKnRhLAorCQkJCQkgIGludCB3cml0ZSk7 CisKKy8qIFJlbW92ZSBhbGwgdGhlIHRhcmdldCBhdHRyaWJ1dGVzIGluc2lk ZSB0aGUgR0RCLiAgKi8KKworZXh0ZXJuIHZvaWQgY2xlYXJfdGFyZ2V0X2F0 dHJpYnV0ZXMgKHZvaWQgKnVudXNlZCk7CisKKy8qIFBhcnNlIHRhcmdldCBh dHRyaWJ1dGVzIG91dCBmcm9tIFhNTCBmb3JtYXJ0IHN0cmluZyBURVhUCisg ICBhbmQgYWRkIHRoZW0gdG8gR0RCLiAgKi8KKworZXh0ZXJuIHZvaWQgYWRk X3htbF90YXJnZXRfYXR0cmlidXRlcyAoY29uc3QgY2hhciAqdGV4dCk7CisK Ky8qIFJldHVybiB0aGUgdHlwZSBvZiBUQS4gICovCisKK2V4dGVybiBzdHJ1 Y3QgdHlwZSAqdGFyZ2V0X2F0dHJpYnV0ZV90eXBlIChzdHJ1Y3QgZ2RiYXJj aCAqZ2RiYXJjaCwKKwkJCQkJICAgc3RydWN0IHRhcmdldF9hdHRyaWJ1dGUg KnRhKTsKKworI2VuZGlmIC8qIFRBUkdFVF9BVFRSSUJVVEVTX0ggKi8KLS0t IGEvdGFyZ2V0LmgKKysrIGIvdGFyZ2V0LmgKQEAgLTI4Niw3ICsyODYsOSBA QCBlbnVtIHRhcmdldF9vYmplY3QKICAgLyogRGFyd2luIGR5bmFtaWMgbGlu a2VyIGluZm8gZGF0YS4gICovCiAgIFRBUkdFVF9PQkpFQ1RfREFSV0lOX0RZ TERfSU5GTywKICAgLyogT3BlblZNUyBVbndpbmQgSW5mb3JtYXRpb24gQmxv Y2suICAqLwotICBUQVJHRVRfT0JKRUNUX09QRU5WTVNfVUlCCisgIFRBUkdF VF9PQkpFQ1RfT1BFTlZNU19VSUIsCisgIC8qIFRhcmdldCBhdHRyaWJ1dGVz LiAgKi8KKyAgVEFSR0VUX09CSkVDVF9BVFRSSUJVVEVTLAogICAvKiBQb3Nz aWJsZSBmdXR1cmUgb2JqZWN0czogVEFSR0VUX09CSkVDVF9GSUxFLCAuLi4g ICovCiB9OwogCi0tLSBhL3RyYWNlcG9pbnQuYworKysgYi90cmFjZXBvaW50 LmMKQEAgLTUzLDYgKzUzLDcgQEAKICNpbmNsdWRlICJleGNlcHRpb25zLmgi CiAjaW5jbHVkZSAiY2xpL2NsaS11dGlscy5oIgogI2luY2x1ZGUgInByb2Jl LmgiCisjaW5jbHVkZSAidGFyZ2V0LWF0dHJpYnV0ZXMuaCIKIAogLyogcmVh ZGxpbmUgaW5jbHVkZSBmaWxlcyAqLwogI2luY2x1ZGUgInJlYWRsaW5lL3Jl YWRsaW5lLmgiCkBAIC0zNDgsNiArMzQ5LDIxIEBAIGZpbmRfdHJhY2Vfc3Rh dGVfdmFyaWFibGUgKGNvbnN0IGNoYXIgKm4KICAgcmV0dXJuIE5VTEw7CiB9 CiAKKy8qIExvb2sgZm9yIGEgdHJhY2Ugc3RhdGUgdmFyaWFibGUgb2YgdGhl IGdpdmVuIG51bWJlci4gICovCisKK3N0YXRpYyBzdHJ1Y3QgdHJhY2Vfc3Rh dGVfdmFyaWFibGUgKgorZmluZF90cmFjZV9zdGF0ZV92YXJpYWJsZV9udW1i ZXIgKGludCBudW1iZXIpCit7CisgIHN0cnVjdCB0cmFjZV9zdGF0ZV92YXJp YWJsZSAqdHN2OworICBpbnQgaXg7CisKKyAgZm9yIChpeCA9IDA7IFZFQ19p dGVyYXRlICh0c3ZfcywgdHZhcmlhYmxlcywgaXgsIHRzdik7ICsraXgpCisg ICAgaWYgKG51bWJlciA9PSB0c3YtPm51bWJlcikKKyAgICAgIHJldHVybiB0 c3Y7CisKKyAgcmV0dXJuIE5VTEw7Cit9CisKIHN0YXRpYyB2b2lkCiBkZWxl dGVfdHJhY2Vfc3RhdGVfdmFyaWFibGUgKGNvbnN0IGNoYXIgKm5hbWUpCiB7 CkBAIC0zNjUsNiArMzgxLDQxIEBAIGRlbGV0ZV90cmFjZV9zdGF0ZV92YXJp YWJsZSAoY29uc3QgY2hhcgogICB3YXJuaW5nIChfKCJObyB0cmFjZSB2YXJp YWJsZSBuYW1lZCBcIiQlc1wiLCBub3QgZGVsZXRpbmciKSwgbmFtZSk7CiB9 CiAKK3N0YXRpYyBpbnQKK3RyYWNlX3ZhcmlhYmxlX251bWJlcl9jaGVja18x IChzdHJ1Y3QgdHJhY2Vfc3RhdGVfdmFyaWFibGUgKnRzdikKK3sKKyAgaWYg KGZpbmRfdGFyZ2V0X2F0dHJpYnV0ZV9pZCAodHN2LT5udW1iZXIpKQorICAg IHsKKyAgICAgIGludCBuZXdfbnVtYmVyID0gdHN2LT5udW1iZXIgKyAxOwor ICAgICAgdHN2LT5udW1iZXIgPSAwOworICAgICAgd2hpbGUgKGZpbmRfdGFy Z2V0X2F0dHJpYnV0ZV9pZCAobmV3X251bWJlcikKKwkgICAgIHx8IGZpbmRf dHJhY2Vfc3RhdGVfdmFyaWFibGVfbnVtYmVyIChuZXdfbnVtYmVyKSkKKwlu ZXdfbnVtYmVyKys7CisgICAgICB0c3YtPm51bWJlciA9IG5ld19udW1iZXI7 CisKKyAgICAgIHJldHVybiAxOworICAgIH0KKworICByZXR1cm4gMDsKK30K Kwordm9pZAordHJhY2VfdmFyaWFibGVfbnVtYmVyX2NoZWNrICh2b2lkKQor eworICBzdHJ1Y3QgdHJhY2Vfc3RhdGVfdmFyaWFibGUgKnRzdjsKKyAgaW50 IGl4OworCisgIGZvciAoaXggPSAwOyBWRUNfaXRlcmF0ZSAodHN2X3MsIHR2 YXJpYWJsZXMsIGl4LCB0c3YpOyArK2l4KQorICAgIHsKKyAgICAgIGlmICh0 cmFjZV92YXJpYWJsZV9udW1iZXJfY2hlY2tfMSAodHN2KSkKKyAgICAgICAg eworCSAgd2FybmluZyAoXygiXAorbnVtYmVyIG9mIHRyYWNlIHZhcmlhYmxl ICQlcyBpcyBzYW1lIHdpdGggYSB0c3YgY29tcGF0aWJsZSBcblwKK3Rhcmdl dCBhdHRyaWJ1dGUuICBTbyBpdCBpcyBjaGFuZ2VkIHRvICVkLiIpLCB0c3Yt Pm5hbWUsIHRzdi0+bnVtYmVyKTsKKwl9CisgICAgfQorfQorCiAvKiBUaGUg J3R2YXJpYWJsZScgY29tbWFuZCBjb2xsZWN0cyBhIG5hbWUgYW5kIG9wdGlv bmFsIGV4cHJlc3Npb24gdG8KICAgIGV2YWx1YXRlIGludG8gYW4gaW5pdGlh bCB2YWx1ZS4gICovCiAKQEAgLTQyMyw2ICs0NzQsOCBAQCB0cmFjZV92YXJp YWJsZV9jb21tYW5kIChjaGFyICphcmdzLCBpbnQKICAgdHN2ID0gY3JlYXRl X3RyYWNlX3N0YXRlX3ZhcmlhYmxlIChpbnRlcm5hbHZhcl9uYW1lIChpbnR2 YXIpKTsKICAgdHN2LT5pbml0aWFsX3ZhbHVlID0gaW5pdHZhbDsKIAorICB0 cmFjZV92YXJpYWJsZV9udW1iZXJfY2hlY2tfMSAodHN2KTsKKwogICBwcmlu dGZfZmlsdGVyZWQgKF8oIlRyYWNlIHN0YXRlIHZhcmlhYmxlICQlcyAiCiAJ CSAgICAgImNyZWF0ZWQsIHdpdGggaW5pdGlhbCB2YWx1ZSAlcy5cbiIpLAog CQkgICB0c3YtPm5hbWUsIHBsb25nZXN0ICh0c3YtPmluaXRpYWxfdmFsdWUp KTsKQEAgLTM2MDIsNiArMzY1NSw4IEBAIG1lcmdlX3VwbG9hZGVkX3RyYWNl X3N0YXRlX3ZhcmlhYmxlcyAoc3QKICAgICBpZiAodHN2LT5udW1iZXIgPT0g MCkKICAgICAgIHRzdi0+bnVtYmVyID0gaGlnaGVzdCsrOwogCisgIHRyYWNl X3ZhcmlhYmxlX251bWJlcl9jaGVjaygpOworCiAgIGZyZWVfdXBsb2FkZWRf dHN2cyAodXBsb2FkZWRfdHN2cyk7CiB9CiAKLS0tIGEvdHJhY2Vwb2ludC5o CisrKyBiL3RyYWNlcG9pbnQuaApAQCAtMjUwLDYgKzI1MCw4IEBAIGV4dGVy biB2b2lkIHdoaWxlX3N0ZXBwaW5nX3BzZXVkb2NvbW1hbmQKIGV4dGVybiBz dHJ1Y3QgdHJhY2Vfc3RhdGVfdmFyaWFibGUgKmZpbmRfdHJhY2Vfc3RhdGVf dmFyaWFibGUgKGNvbnN0IGNoYXIgKm5hbWUpOwogZXh0ZXJuIHN0cnVjdCB0 cmFjZV9zdGF0ZV92YXJpYWJsZSAqY3JlYXRlX3RyYWNlX3N0YXRlX3Zhcmlh YmxlIChjb25zdCBjaGFyICpuYW1lKTsKIAorZXh0ZXJuIHZvaWQgdHJhY2Vf dmFyaWFibGVfbnVtYmVyX2NoZWNrKHZvaWQpOworCiBleHRlcm4gaW50IGVu Y29kZV9zb3VyY2Vfc3RyaW5nIChpbnQgbnVtLCBVTE9OR0VTVCBhZGRyLAog CQkJCSBjaGFyICpzcmN0eXBlLCBjaGFyICpzcmMsCiAJCQkJIGNoYXIgKmJ1 ZiwgaW50IGJ1Zl9zaXplKTsK --047d7bdc808ecef0f804c8b5a018--