From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 16647 invoked by alias); 21 Nov 2012 08:56:33 -0000 Received: (qmail 16534 invoked by uid 22791); 21 Nov 2012 08:56:27 -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-bk0-f41.google.com (HELO mail-bk0-f41.google.com) (209.85.214.41) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Wed, 21 Nov 2012 08:55:27 +0000 Received: by mail-bk0-f41.google.com with SMTP id jg9so2977108bkc.0 for ; Wed, 21 Nov 2012 00:55:25 -0800 (PST) Received: by 10.204.130.210 with SMTP id u18mr6760765bks.129.1353488125608; Wed, 21 Nov 2012 00:55:25 -0800 (PST) MIME-Version: 1.0 Received: by 10.205.32.12 with HTTP; Wed, 21 Nov 2012 00:54:45 -0800 (PST) In-Reply-To: References: <503DCEC5.2010308@mentor.com> <503E2A7A.2030709@codesourcery.com> From: Hui Zhu Date: Wed, 21 Nov 2012 08:56: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 ml Content-Type: multipart/mixed; boundary=00151747bd54ef42c004cefd829c 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-11/txt/msg00564.txt.bz2 --00151747bd54ef42c004cefd829c Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: quoted-printable Content-length: 2899 On Sun, Sep 2, 2012 at 6:37 PM, Hui Zhu wrote: > 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, attrib= utes); >>> + struct target_attribute *ta =3D *(struct target_attribute **)user_da= ta; >>> + 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_ad= dress_handler=92: >> ../../../git/gdb/target-attributes.c:487:16: error: =91end=92 may be use= d uninitialized in this function [-Werror=3Duninitialized] >> ../../../git/gdb/target-attributes.c:486:18: error: =91start=92 may be u= sed uninitialized in this function [-Werror=3Duninitialized] >> ../../../git/gdb/target-attributes.c: In function =91target_attribute_at= tr_handler=92: >> ../../../git/gdb/target-attributes.c:376:12: error: =91type=92 may be us= ed uninitialized in this function [-Werror=3Duninitialized] >> ../../../git/gdb/target-attributes.c: In function =91target_attribute_ty= pe=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 Got some error when built with trunk. Post a new version for this error. Thanks, Hui --00151747bd54ef42c004cefd829c 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_h9s7us001 Content-length: 43103 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 IAogc3RhdGljIGNoYXIgKnJlbW90ZV9zdXBwb3J0X3htbDsKQEAgLTg2ODIs NiArODcwMiwxMiBAQCByZW1vdGVfeGZlcl9wYXJ0aWFsIChzdHJ1Y3QgdGFy Z2V0X29wcyAqCiAgICAgICByZXR1cm4gcmVtb3RlX3JlYWRfcXhmZXIgKG9w cywgInVpYiIsIGFubmV4LCByZWFkYnVmLCBvZmZzZXQsIGxlbiwKIAkJCQkm cmVtb3RlX3Byb3RvY29sX3BhY2tldHNbUEFDS0VUX3FYZmVyX3VpYl0pOwog CisgICAgY2FzZSBUQVJHRVRfT0JKRUNUX0FUVFJJQlVURVM6CisgICAgICBn ZGJfYXNzZXJ0IChhbm5leCA9PSBOVUxMKTsKKyAgICAgIHJldHVybiByZW1v dGVfcmVhZF9xeGZlcgorCShvcHMsICJ0YXJnZXQtYXR0cmlidXRlcyIsIGFu bmV4LCByZWFkYnVmLCBvZmZzZXQsIGxlbiwKKwkgJnJlbW90ZV9wcm90b2Nv bF9wYWNrZXRzW1BBQ0tFVF9xWGZlcl90YXJnZXRfYXR0cmlidXRlc19yZWFk XSk7CisKICAgICBkZWZhdWx0OgogICAgICAgcmV0dXJuIC0xOwogICAgIH0K QEAgLTExNjQzLDYgKzExNjY5LDEwIEBAIFNob3cgdGhlIG1heGltdW0gc2l6 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 JXNcbiIsCisJCQkgIHBhZGRyZXNzICh0YXJnZXRfZ2RiYXJjaCAoKSwgdGFf YWRkci0+c3RhcnQpLAorCQkJICBwYWRkcmVzcyAodGFyZ2V0X2dkYmFyY2gg KCksIHRhX2FkZHItPmVuZCkpOworCX0KKyAgICAgIGRvX2NsZWFudXBzIChi YWNrX3RvMik7CisgICAgfQorCisgIGRvX2NsZWFudXBzIChiYWNrX3RvKTsK K30KKworI2lmICFkZWZpbmVkKEhBVkVfTElCRVhQQVQpCisKK3ZvaWQKK2Fk ZF94bWxfdGFyZ2V0X2F0dHJpYnV0ZXMgKGNvbnN0IGNoYXIgKnRleHQpCit7 CisgIGlmIChzdHJsZW4gKHRleHQpID4gMCkKKyAgICB3YXJuaW5nIChfKCJD YW4gbm90IHBhcnNlIFhNTCB0YXJnZXQgYXR0cmlidXRlczsgWE1MIHN1cHBv cnQgIgorCSAgICAgICAid2FzIGRpc2FibGVkIGF0IGNvbXBpbGUgdGltZSIp KTsKK30KKworI2Vsc2UKKworI2luY2x1ZGUgInhtbC1zdXBwb3J0LmgiCisK K3N0YXRpYyB2b2lkCit0YXJnZXRfYXR0cmlidXRlX2F0dHJfaGFuZGxlciAo c3RydWN0IGdkYl94bWxfcGFyc2VyICpwYXJzZXIsCisJCQkgICAgICAgY29u c3Qgc3RydWN0IGdkYl94bWxfZWxlbWVudCAqZWxlbWVudCwKKwkJCSAgICAg ICB2b2lkICp1c2VyX2RhdGEsCisJCQkgICAgICAgVkVDKGdkYl94bWxfdmFs dWVfcykgKmF0dHJpYnV0ZXMpCit7CisgIGNoYXIgKm5hbWUgPSBOVUxMOwor ICBpbnQgaSwgbGVuLCBpZCA9IC0xLCB0eXBlID0gMCwgdGFyZ2V0X29ubHlf Y29uZF9jaGVjayA9IDA7CisgIHN0cnVjdCBnZGJfeG1sX3ZhbHVlICphdHRy cyA9IFZFQ19hZGRyZXNzIChnZGJfeG1sX3ZhbHVlX3MsIGF0dHJpYnV0ZXMp OworICBzdHJ1Y3QgdGFyZ2V0X2F0dHJpYnV0ZSAqdGEsICoqdGFwID0gdXNl cl9kYXRhOworCisgIGxlbiA9IFZFQ19sZW5ndGggKGdkYl94bWxfdmFsdWVf cywgYXR0cmlidXRlcyk7CisgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykK KyAgICB7CisgICAgICBpZiAoc3RyY21wIChhdHRyc1tpXS5uYW1lLCAibmFt ZSIpID09IDApCisgICAgICAgIG5hbWUgPSBhdHRyc1tpXS52YWx1ZTsKKyAg ICAgIGVsc2UgaWYgKHN0cmNtcCAoYXR0cnNbaV0ubmFtZSwgImlkIikgPT0g MCkKKyAgICAgICAgaWQgPSAqIChVTE9OR0VTVCAqKSBhdHRyc1tpXS52YWx1 ZTsKKyAgICAgIGVsc2UgaWYgKHN0cmNtcCAoYXR0cnNbaV0ubmFtZSwgInR5 cGUiKSA9PSAwKQorICAgICAgICB0eXBlID0gKiAoVUxPTkdFU1QgKikgYXR0 cnNbaV0udmFsdWU7CisgICAgICBlbHNlIGlmIChzdHJjbXAgKGF0dHJzW2ld Lm5hbWUsICJ0YXJnZXQtb25seS1jb25kLWNoZWNrIikgPT0gMCkKKyAgICAg ICAgdGFyZ2V0X29ubHlfY29uZF9jaGVjayA9ICogKFVMT05HRVNUICopIGF0 dHJzW2ldLnZhbHVlOworICAgICAgZWxzZQorICAgICAgICBnZGJfeG1sX2Vy cm9yIChwYXJzZXIsIF8oIlVua25vd24gYXR0cmlidXRlIG5hbWUgJyVzJy4i KSwKKwkJICAgICAgIGF0dHJzW2ldLm5hbWUpOworICAgIH0KKworICBpZiAo IW5hbWUgfHwgaWQgPCAwKQorICAgIGdkYl94bWxfZXJyb3IgKHBhcnNlciwg XygiXCJuYW1lXCIgb3IgXCJpZFwiIGlzIG1pc3NlZC4iKSk7CisKKyAgaWYg KGZpbmRfdGFyZ2V0X2F0dHJpYnV0ZV9uYW1lIChuYW1lKSkKKyAgICBnZGJf eG1sX2Vycm9yIChwYXJzZXIsXygiXAorbmFtZSBcIiVzXCIgaXMgc2FtZSB3 aXRoIGEgdGFyZ2V0IGF0dHJpYnV0ZS4iKSwgbmFtZSk7CisgIGlmIChmaW5k X3RhcmdldF9hdHRyaWJ1dGVfaWQgKGlkKSkKKyAgICBnZGJfeG1sX2Vycm9y IChwYXJzZXIsXygiaWQgXCIlZFwiIGlzIHNhbWUgd2l0aCBhIHRhcmdldCBh dHRyaWJ1dGUuIiksIGlkKTsKKworICB0YSA9IHh6YWxsb2MgKHNpemVvZiAo c3RydWN0IHRhcmdldF9hdHRyaWJ1dGUpKTsKKyAgdGEtPm5hbWUgPSB4c3Ry ZHVwIChuYW1lKTsKKyAgdGEtPmlkID0gaWQ7CisgIHRhLT50eXBlID0gdHlw ZTsKKyAgdGEtPnRhcmdldF9vbmx5X2NvbmRfY2hlY2sgPSB0YXJnZXRfb25s eV9jb25kX2NoZWNrOworCisgIGlmICgqdGFwKQorICAgICgqdGFwKS0+bmV4 dCA9IHRhOworICBlbHNlCisgICAgdGFyZ2V0X2F0dHJpYnV0ZXNfbGlzdCA9 IHRhOworICAqdGFwID0gdGE7CisKKyAgdXNlcl9kYXRhID0gJnRhOworfQor CitzdGF0aWMgdm9pZAordGFyZ2V0X2F0dHJpYnV0ZV9hY2Nlc3NfY2hpbGRy ZW5faGFuZGxlciAoc3RydWN0IGdkYl94bWxfcGFyc2VyICpwYXJzZXIsCisJ CQkJCSAgY29uc3Qgc3RydWN0IGdkYl94bWxfZWxlbWVudCAqZWxlbWVudCwK KwkJCQkJICB2b2lkICp1c2VyX2RhdGEsCisJCQkJCSAgVkVDKGdkYl94bWxf dmFsdWVfcykgKmF0dHJpYnV0ZXMpCit7CisgIHN0cnVjdCB0YXJnZXRfYXR0 cmlidXRlICp0YSA9ICooc3RydWN0IHRhcmdldF9hdHRyaWJ1dGUgKiopdXNl cl9kYXRhOworICBpbnQgaSwgbGVuLCB0YV9hY2Nlc3MgPSAwOworICBzdHJ1 Y3QgZ2RiX3htbF92YWx1ZSAqYXR0cnMgPSBWRUNfYWRkcmVzcyAoZ2RiX3ht bF92YWx1ZV9zLCBhdHRyaWJ1dGVzKTsKKworICBsZW4gPSBWRUNfbGVuZ3Ro IChnZGJfeG1sX3ZhbHVlX3MsIGF0dHJpYnV0ZXMpOworICBmb3IgKGkgPSAw OyBpIDwgbGVuOyBpKyspCisgICAgeworICAgICAgaWYgKHN0cmNtcCAoYXR0 cnNbaV0ubmFtZSwgInJlYWQiKSA9PSAwKQorICAgICAgICB7CisJICBpZiAo KiAoVUxPTkdFU1QgKikgYXR0cnNbaV0udmFsdWUpCisgICAgICAgICAgICB0 YV9hY2Nlc3MgfD0gVEFSR0VUX0FUVFJJQlVURV9BQ0NFU1NfUkVBRDsKKwl9 CisgICAgICBlbHNlIGlmIChzdHJjbXAgKGF0dHJzW2ldLm5hbWUsICJ3cml0 ZSIpID09IDApCisgICAgICAgIHsKKwkgIGlmICgqIChVTE9OR0VTVCAqKSBh dHRyc1tpXS52YWx1ZSkKKyAgICAgICAgICAgIHRhX2FjY2VzcyB8PSBUQVJH RVRfQVRUUklCVVRFX0FDQ0VTU19XUklURTsKKwl9CisgICAgICBlbHNlCisg ICAgICAgIGdkYl94bWxfZXJyb3IgKHBhcnNlciwgXygiVW5rbm93biBhdHRy aWJ1dGUgbmFtZSAnJXMnLiIpLAorCQkgICAgICAgYXR0cnNbaV0ubmFtZSk7 CisgICAgfQorCisgIGlmIChzdHJjbXAgKGVsZW1lbnQtPm5hbWUsICJhZ2Vu dCIpID09IDApCisgICAgdGEtPmFnZW50X2FjY2VzcyA9IHRhX2FjY2VzczsK KyAgZWxzZQorICAgIHRhLT5nZGJfYWNjZXNzID0gdGFfYWNjZXNzOworfQor CitzdGF0aWMgdm9pZAordGFyZ2V0X2F0dHJpYnV0ZV9zdXBwb3J0X2F0dHJf aGFuZGxlciAoc3RydWN0IGdkYl94bWxfcGFyc2VyICpwYXJzZXIsCisJCQkJ ICAgICAgIGNvbnN0IHN0cnVjdCBnZGJfeG1sX2VsZW1lbnQgKmVsZW1lbnQs CisJCQkJICAgICAgIHZvaWQgKnVzZXJfZGF0YSwKKwkJCQkgICAgICAgVkVD KGdkYl94bWxfdmFsdWVfcykgKmF0dHJpYnV0ZXMpCit7CisgIHN0cnVjdCB0 YXJnZXRfYXR0cmlidXRlICp0YSA9ICooc3RydWN0IHRhcmdldF9hdHRyaWJ1 dGUgKiopdXNlcl9kYXRhOworICBpbnQgaSwgbGVuID0gMDsKKyAgc3RydWN0 IGdkYl94bWxfdmFsdWUgKmF0dHJzID0gVkVDX2FkZHJlc3MgKGdkYl94bWxf dmFsdWVfcywgYXR0cmlidXRlcyk7CisKKyAgbGVuID0gVkVDX2xlbmd0aCAo Z2RiX3htbF92YWx1ZV9zLCBhdHRyaWJ1dGVzKTsKKyAgZm9yIChpID0gMDsg aSA8IGxlbjsgaSsrKQorICAgIHsKKyAgICAgIGlmIChzdHJjbXAgKGF0dHJz W2ldLm5hbWUsICJzb2Z0d2FyZS1icmVha3BvaW50IikgPT0gMCkKKyAgICAg ICAgeworCSAgaWYgKCogKFVMT05HRVNUICopIGF0dHJzW2ldLnZhbHVlKQor ICAgICAgICAgICAgdGEtPnN1cHBvcnQgfD0gVEFSR0VUX0FUVFJJQlVURV9T VVBQT1JUX1NPRlRXQVJFX0JSRUFLUE9JTlQ7CisJfQorICAgICAgZWxzZSBp ZiAoc3RyY21wIChhdHRyc1tpXS5uYW1lLCAiaGFyZHdhcmUtYnJlYWtwb2lu dCIpID09IDApCisgICAgICAgIHsKKwkgIGlmICgqIChVTE9OR0VTVCAqKSBh dHRyc1tpXS52YWx1ZSkKKyAgICAgICAgICAgIHRhLT5zdXBwb3J0IHw9IFRB UkdFVF9BVFRSSUJVVEVfU1VQUE9SVF9IQVJEV0FSRV9CUkVBS1BPSU5UOwor CX0KKyAgICAgIGVsc2UgaWYgKHN0cmNtcCAoYXR0cnNbaV0ubmFtZSwgImhh cmR3YXJlLXdhdGNocG9pbnQiKSA9PSAwKQorICAgICAgICB7CisJICBpZiAo KiAoVUxPTkdFU1QgKikgYXR0cnNbaV0udmFsdWUpCisgICAgICAgICAgICB0 YS0+c3VwcG9ydCB8PSBUQVJHRVRfQVRUUklCVVRFX1NVUFBPUlRfSEFSRFdB UkVfV0FUQ0hQT0lOVDsKKwl9CisgICAgICBlbHNlIGlmIChzdHJjbXAgKGF0 dHJzW2ldLm5hbWUsICJ0cmFjZXBvaW50IikgPT0gMCkKKyAgICAgICAgewor CSAgaWYgKCogKFVMT05HRVNUICopIGF0dHJzW2ldLnZhbHVlKQorICAgICAg ICAgICAgdGEtPnN1cHBvcnQgfD0gVEFSR0VUX0FUVFJJQlVURV9TVVBQT1JU X1RSQUNFUE9JTlQ7CisJfQorICAgICAgZWxzZQorICAgICAgICBnZGJfeG1s X2Vycm9yIChwYXJzZXIsIF8oIlVua25vd24gYXR0cmlidXRlIG5hbWUgJyVz Jy4iKSwKKwkJICAgICAgIGF0dHJzW2ldLm5hbWUpOworICAgIH0KK30KKwor c3RhdGljIHZvaWQKK3RhcmdldF9hdHRyaWJ1dGVfYWRkcmVzc19oYW5kbGVy IChzdHJ1Y3QgZ2RiX3htbF9wYXJzZXIgKnBhcnNlciwKKwkJCQkgIGNvbnN0 IHN0cnVjdCBnZGJfeG1sX2VsZW1lbnQgKmVsZW1lbnQsCisJCQkJICB2b2lk ICp1c2VyX2RhdGEsCisJCQkJICBWRUMoZ2RiX3htbF92YWx1ZV9zKSAqYXR0 cmlidXRlcykKK3sKKyAgaW50IGksIGxlbjsKKyAgc3RydWN0IGdkYl94bWxf dmFsdWUgKmF0dHJzID0gVkVDX2FkZHJlc3MgKGdkYl94bWxfdmFsdWVfcywg YXR0cmlidXRlcyk7CisgIHN0cnVjdCB0YXJnZXRfYXR0cmlidXRlICp0YSA9 ICooc3RydWN0IHRhcmdldF9hdHRyaWJ1dGUgKiopdXNlcl9kYXRhOworICBD T1JFX0FERFIgc3RhcnQgPSAwLCBlbmQgPSAwOworICBzdHJ1Y3QgdGFyZ2V0 X2F0dHJpYnV0ZV9hZGRyZXNzICp0YV9hZGRyOworCisgIGxlbiA9IFZFQ19s ZW5ndGggKGdkYl94bWxfdmFsdWVfcywgYXR0cmlidXRlcyk7CisgIGZvciAo aSA9IDA7IGkgPCBsZW47IGkrKykKKyAgICB7CisgICAgICBpZiAoc3RyY21w IChhdHRyc1tpXS5uYW1lLCAic3RhcnQiKSA9PSAwKQorICAgICAgICBzdGFy dCA9ICogKFVMT05HRVNUICopIGF0dHJzW2ldLnZhbHVlOworICAgICAgZWxz ZSBpZiAoc3RyY21wIChhdHRyc1tpXS5uYW1lLCAiZW5kIikgPT0gMCkKKyAg ICAgICAgZW5kID0gKiAoVUxPTkdFU1QgKikgYXR0cnNbaV0udmFsdWU7Cisg ICAgICBlbHNlCisgICAgICAgIGdkYl94bWxfZXJyb3IgKHBhcnNlciwgXygi VW5rbm93biBhdHRyaWJ1dGUgbmFtZSAnJXMnLiIpLAorCQkgICAgICAgYXR0 cnNbaV0ubmFtZSk7CisgICAgfQorCisgIHRhX2FkZHIgPSB4bWFsbG9jIChz aXplb2YgKHN0cnVjdCB0YXJnZXRfYXR0cmlidXRlX2FkZHJlc3MpKTsKKyAg dGFfYWRkci0+c3RhcnQgPSBzdGFydDsKKyAgdGFfYWRkci0+ZW5kID0gZW5k OworCisgIHRhX2FkZHItPnByZXYgPSB0YS0+YWRkcmVzc2VzOworICB0YS0+ YWRkcmVzc2VzID0gdGFfYWRkcjsKK30KKworY29uc3Qgc3RydWN0IGdkYl94 bWxfZW51bSB0YXJnZXRfYXR0cmlidXRlX3R5cGVfZW51bXNbXSA9IHsKKyAg eyAiaW50OCIsIFRBUkdFVF9BVFRSSUJVVEVfVFlQRV9JTlQ4IH0sCisgIHsg InVpbnQ4IiwgVEFSR0VUX0FUVFJJQlVURV9UWVBFX1VJTlQ4IH0sCisgIHsg ImludDE2IiwgVEFSR0VUX0FUVFJJQlVURV9UWVBFX0lOVDE2IH0sCisgIHsg InVpbnQxNiIsIFRBUkdFVF9BVFRSSUJVVEVfVFlQRV9VSU5UMTYgfSwKKyAg eyAiaW50MzIiLCBUQVJHRVRfQVRUUklCVVRFX1RZUEVfSU5UMzIgfSwKKyAg eyAidWludDMyIiwgVEFSR0VUX0FUVFJJQlVURV9UWVBFX1VJTlQzMiB9LAor ICB7ICJpbnQ2NCIsIFRBUkdFVF9BVFRSSUJVVEVfVFlQRV9JTlQ2NCB9LAor ICB7ICJ1aW50NjQiLCBUQVJHRVRfQVRUUklCVVRFX1RZUEVfVUlOVDY0IH0s CisgIHsgTlVMTCwgMCB9Cit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IGdk Yl94bWxfYXR0cmlidXRlIHRhcmdldF9hdHRyaWJ1dGVfYXR0cltdID0gewor ICB7ICJuYW1lIiwgR0RCX1hNTF9BRl9OT05FLCBOVUxMLCBOVUxMIH0sCisg IHsgImlkIiwgR0RCX1hNTF9BRl9OT05FLCBnZGJfeG1sX3BhcnNlX2F0dHJf dWxvbmdlc3QsIE5VTEwgfSwKKyAgeyAidHlwZSIsIEdEQl9YTUxfQUZfTk9O RSwgZ2RiX3htbF9wYXJzZV9hdHRyX2VudW0sCisgICAgdGFyZ2V0X2F0dHJp YnV0ZV90eXBlX2VudW1zIH0sCisgIHsgInRhcmdldC1vbmx5LWNvbmQtY2hl Y2siLCBHREJfWE1MX0FGX09QVElPTkFMLCBnZGJfeG1sX3BhcnNlX2F0dHJf ZW51bSwKKyAgICBnZGJfeG1sX2VudW1zX2Jvb2xlYW4gfSwKKyAgeyBOVUxM LCBHREJfWE1MX0FGX05PTkUsIE5VTEwsIE5VTEwgfQorfTsKKworc3RhdGlj IGNvbnN0IHN0cnVjdCBnZGJfeG1sX2F0dHJpYnV0ZQorCQkJdGFyZ2V0X2F0 dHJpYnV0ZV9hY2Nlc3NfY2hpbGRyZW5fYXR0cltdID0geworICB7ICJyZWFk IiwgR0RCX1hNTF9BRl9PUFRJT05BTCwgZ2RiX3htbF9wYXJzZV9hdHRyX2Vu dW0sCisgICAgZ2RiX3htbF9lbnVtc19ib29sZWFuIH0sCisgIHsgIndyaXRl IiwgR0RCX1hNTF9BRl9PUFRJT05BTCwgZ2RiX3htbF9wYXJzZV9hdHRyX2Vu dW0sCisgICAgZ2RiX3htbF9lbnVtc19ib29sZWFuIH0sCisgIHsgTlVMTCwg R0RCX1hNTF9BRl9OT05FLCBOVUxMLCBOVUxMIH0KK307CisKK3N0YXRpYyBj b25zdCBzdHJ1Y3QgZ2RiX3htbF9lbGVtZW50IHRhcmdldF9hdHRyaWJ1dGVf YWNjZXNzX2NoaWxkcmVuW10gPSB7CisgIHsgImFnZW50IiwgdGFyZ2V0X2F0 dHJpYnV0ZV9hY2Nlc3NfY2hpbGRyZW5fYXR0ciwgTlVMTCwKKyAgICBHREJf WE1MX0VGX09QVElPTkFMLCB0YXJnZXRfYXR0cmlidXRlX2FjY2Vzc19jaGls ZHJlbl9oYW5kbGVyLCBOVUxMIH0sCisgIHsgImdkYiIsIHRhcmdldF9hdHRy aWJ1dGVfYWNjZXNzX2NoaWxkcmVuX2F0dHIsIE5VTEwsCisgICAgR0RCX1hN TF9FRl9PUFRJT05BTCwgdGFyZ2V0X2F0dHJpYnV0ZV9hY2Nlc3NfY2hpbGRy ZW5faGFuZGxlciwgTlVMTCB9LAorICB7IE5VTEwsIE5VTEwsIE5VTEwsIEdE Ql9YTUxfRUZfTk9ORSwgTlVMTCwgTlVMTCB9Cit9OworCitzdGF0aWMgY29u c3Qgc3RydWN0IGdkYl94bWxfYXR0cmlidXRlIHRhcmdldF9hdHRyaWJ1dGVf c3VwcG9ydF9hdHRyW10gPSB7CisgIHsgInNvZnR3YXJlLWJyZWFrcG9pbnQi LCBHREJfWE1MX0FGX09QVElPTkFMLCBnZGJfeG1sX3BhcnNlX2F0dHJfZW51 bSwKKyAgICBnZGJfeG1sX2VudW1zX2Jvb2xlYW4gfSwKKyAgeyAiaGFyZHdh cmUtYnJlYWtwb2ludCIsIEdEQl9YTUxfQUZfT1BUSU9OQUwsIGdkYl94bWxf cGFyc2VfYXR0cl9lbnVtLAorICAgIGdkYl94bWxfZW51bXNfYm9vbGVhbiB9 LAorICB7ICJoYXJkd2FyZS13YXRjaHBvaW50IiwgR0RCX1hNTF9BRl9PUFRJ T05BTCwgZ2RiX3htbF9wYXJzZV9hdHRyX2VudW0sCisgICAgZ2RiX3htbF9l bnVtc19ib29sZWFuIH0sCisgIHsgInRyYWNlcG9pbnQiLCBHREJfWE1MX0FG X09QVElPTkFMLCBnZGJfeG1sX3BhcnNlX2F0dHJfZW51bSwKKyAgICBnZGJf eG1sX2VudW1zX2Jvb2xlYW4gfSwKKyAgeyBOVUxMLCBHREJfWE1MX0FGX05P TkUsIE5VTEwsIE5VTEwgfQorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBn ZGJfeG1sX2F0dHJpYnV0ZSB0YXJnZXRfYXR0cmlidXRlX2FkZHJlc3NfYXR0 cltdID0geworICB7ICJzdGFydCIsIEdEQl9YTUxfQUZfTk9ORSwgZ2RiX3ht bF9wYXJzZV9hdHRyX3Vsb25nZXN0LCBOVUxMIH0sCisgIHsgImVuZCIsIEdE Ql9YTUxfQUZfTk9ORSwgZ2RiX3htbF9wYXJzZV9hdHRyX3Vsb25nZXN0LCBO VUxMIH0sCisgIHsgTlVMTCwgR0RCX1hNTF9BRl9OT05FLCBOVUxMLCBOVUxM IH0KK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZ2RiX3htbF9lbGVtZW50 IHRhcmdldF9hdHRyaWJ1dGVfYWRkcmVzc2VzX2NoaWxkcmVuW10gPSB7Cisg IHsgImFkZHJlc3MiLCB0YXJnZXRfYXR0cmlidXRlX2FkZHJlc3NfYXR0ciwg TlVMTCwKKyAgICBHREJfWE1MX0VGX09QVElPTkFMIHwgR0RCX1hNTF9FRl9S RVBFQVRBQkxFLAorICAgIHRhcmdldF9hdHRyaWJ1dGVfYWRkcmVzc19oYW5k bGVyLCBOVUxMIH0sCisgIHsgTlVMTCwgTlVMTCwgTlVMTCwgR0RCX1hNTF9F Rl9OT05FLCBOVUxMLCBOVUxMIH0KK307CisKK3N0YXRpYyBjb25zdCBzdHJ1 Y3QgZ2RiX3htbF9lbGVtZW50IHRhcmdldF9hdHRyaWJ1dGVfZWxlbWVudHNb XSA9IHsKKyAgeyAiYWNjZXNzIiwgTlVMTCwgdGFyZ2V0X2F0dHJpYnV0ZV9h Y2Nlc3NfY2hpbGRyZW4sCisgICAgR0RCX1hNTF9FRl9OT05FLCBOVUxMLCBO VUxMIH0sCisgIHsgInN1cHBvcnQiLCB0YXJnZXRfYXR0cmlidXRlX3N1cHBv cnRfYXR0ciwgTlVMTCwKKyAgICBHREJfWE1MX0VGX09QVElPTkFMLCB0YXJn ZXRfYXR0cmlidXRlX3N1cHBvcnRfYXR0cl9oYW5kbGVyLCBOVUxMIH0sCisg IHsgImFkZHJlc3NlcyIsIE5VTEwsIHRhcmdldF9hdHRyaWJ1dGVfYWRkcmVz c2VzX2NoaWxkcmVuLAorICAgIEdEQl9YTUxfRUZfT1BUSU9OQUwsIE5VTEws IE5VTEwgfSwKKyAgeyBOVUxMLCBOVUxMLCBOVUxMLCBHREJfWE1MX0VGX05P TkUsIE5VTEwsIE5VTEwgfQorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBn ZGJfeG1sX2VsZW1lbnQgdGFyZ2V0X2F0dHJpYnV0ZXNfY2hpbGRyZW5bXSA9 IHsKKyAgeyAidGFyZ2V0LWF0dHJpYnV0ZSIsIHRhcmdldF9hdHRyaWJ1dGVf YXR0ciwgdGFyZ2V0X2F0dHJpYnV0ZV9lbGVtZW50cywKKyAgICBHREJfWE1M X0VGX09QVElPTkFMIHwgR0RCX1hNTF9FRl9SRVBFQVRBQkxFLAorICAgIHRh cmdldF9hdHRyaWJ1dGVfYXR0cl9oYW5kbGVyLCBOVUxMIH0sCisgIHsgTlVM TCwgTlVMTCwgTlVMTCwgR0RCX1hNTF9FRl9OT05FLCBOVUxMLCBOVUxMIH0K K307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZ2RiX3htbF9lbGVtZW50IHRh cmdldF9hdHRyaWJ1dGVzX2VsZW1lbnRzW10gPSB7CisgIHsgInRhcmdldC1h dHRyaWJ1dGVzIiwgTlVMTCwgdGFyZ2V0X2F0dHJpYnV0ZXNfY2hpbGRyZW4s CisgICAgR0RCX1hNTF9FRl9OT05FLCBOVUxMLCBOVUxMIH0sCisgIHsgTlVM TCwgTlVMTCwgTlVMTCwgR0RCX1hNTF9FRl9OT05FLCBOVUxMLCBOVUxMIH0K K307CisKK3ZvaWQKK2FkZF94bWxfdGFyZ2V0X2F0dHJpYnV0ZXMgKGNvbnN0 IGNoYXIgKnRleHQpCit7CisgIHN0cnVjdCB0YXJnZXRfYXR0cmlidXRlICp0 YSA9IE5VTEw7CisgIHN0cnVjdCBjbGVhbnVwICpiYWNrX3RvID0gbWFrZV9j bGVhbnVwIChjbGVhcl90YXJnZXRfYXR0cmlidXRlcywgTlVMTCk7CisKKyAg Y2xlYXJfdGFyZ2V0X2F0dHJpYnV0ZXMoTlVMTCk7CisgIGlmIChnZGJfeG1s X3BhcnNlX3F1aWNrIChfKCJ0YXJnZXQgYXR0cmlidXRlcyIpLCBOVUxMLAor CQkJICAgdGFyZ2V0X2F0dHJpYnV0ZXNfZWxlbWVudHMsIHRleHQsICZ0YSkg PT0gMCkKKyAgICB7CisgICAgICBkaXNjYXJkX2NsZWFudXBzIChiYWNrX3Rv KTsKKyAgICAgIHRyYWNlX3ZhcmlhYmxlX251bWJlcl9jaGVjayAoKTsKKyAg ICB9CisgIGVsc2UKKyAgICBkb19jbGVhbnVwcyAoYmFja190byk7Cit9CisK KyNlbmRpZgorCitzdHJ1Y3QgdHlwZSAqCit0YXJnZXRfYXR0cmlidXRlX3R5 cGUgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBzdHJ1Y3QgdGFyZ2V0X2F0 dHJpYnV0ZSAqdGEpCit7CisgIHN0cnVjdCB0eXBlICpyZXQgPSBidWlsdGlu X3R5cGUgKGdkYmFyY2gpLT5idWlsdGluX3VpbnQ2NDsKKworICBzd2l0Y2gg KHRhLT50eXBlKQorICAgIHsKKyAgICBjYXNlIFRBUkdFVF9BVFRSSUJVVEVf VFlQRV9JTlQ4OgorICAgICAgcmV0ID0gYnVpbHRpbl90eXBlIChnZGJhcmNo KS0+YnVpbHRpbl9pbnQ4OworICAgICAgYnJlYWs7CisgICAgY2FzZSBUQVJH RVRfQVRUUklCVVRFX1RZUEVfVUlOVDg6CisgICAgICByZXQgPSBidWlsdGlu X3R5cGUgKGdkYmFyY2gpLT5idWlsdGluX3VpbnQ4OworICAgICAgYnJlYWs7 CisgICAgY2FzZSBUQVJHRVRfQVRUUklCVVRFX1RZUEVfSU5UMTY6CisgICAg ICByZXQgPSBidWlsdGluX3R5cGUgKGdkYmFyY2gpLT5idWlsdGluX2ludDE2 OworICAgICAgYnJlYWs7CisgICAgY2FzZSBUQVJHRVRfQVRUUklCVVRFX1RZ UEVfVUlOVDE2OgorICAgICAgcmV0ID0gYnVpbHRpbl90eXBlIChnZGJhcmNo KS0+YnVpbHRpbl91aW50MTY7CisgICAgICBicmVhazsKKyAgICBjYXNlIFRB UkdFVF9BVFRSSUJVVEVfVFlQRV9JTlQzMjoKKyAgICAgIHJldCA9IGJ1aWx0 aW5fdHlwZSAoZ2RiYXJjaCktPmJ1aWx0aW5faW50MzI7CisgICAgICBicmVh azsKKyAgICBjYXNlIFRBUkdFVF9BVFRSSUJVVEVfVFlQRV9VSU5UMzI6Cisg ICAgICByZXQgPSBidWlsdGluX3R5cGUgKGdkYmFyY2gpLT5idWlsdGluX3Vp bnQzMjsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgVEFSR0VUX0FUVFJJQlVU RV9UWVBFX0lOVDY0OgorICAgICAgcmV0ID0gYnVpbHRpbl90eXBlIChnZGJh cmNoKS0+YnVpbHRpbl9pbnQ2NDsKKyAgICAgIGJyZWFrOworICAgIGNhc2Ug VEFSR0VUX0FUVFJJQlVURV9UWVBFX1VJTlQ2NDoKKyAgICAgIHJldCA9IGJ1 aWx0aW5fdHlwZSAoZ2RiYXJjaCktPmJ1aWx0aW5fdWludDY0OworICAgICAg YnJlYWs7CisgICAgfQorCisgIHJldHVybiByZXQ7Cit9CisKK3N0YXRpYyB2 b2lkCitsb2FkX3RhcmdldF9hdHRyaWJ1dGVzX2NvbW1hbmQgKGNoYXIgKmV4 cCwgaW50IGZyb21fdHR5KQoreworICBjaGFyICp0ZXh0ID0geG1sX2ZldGNo X2NvbnRlbnRfZnJvbV9maWxlIChleHAsIE5VTEwpOworCisgIGlmICh0ZXh0 ID09IE5VTEwpCisgICAgZXJyb3IgKF8oIkNvdWxkIG5vdCBvcGVuIFwiJXNc IiIpLCBleHApOworICBhZGRfeG1sX3RhcmdldF9hdHRyaWJ1dGVzICh0ZXh0 KTsKK30KKworc3RhdGljIHZvaWQKK2NsZWFyX3RhcmdldF9hdHRyaWJ1dGVz X2NvbW1hbmQgKGNoYXIgKmV4cCwgaW50IGZyb21fdHR5KQoreworICBjbGVh cl90YXJnZXRfYXR0cmlidXRlcyAoTlVMTCk7Cit9CisKKy8qIFByb3ZpZGUg YSBwcm90b3R5cGUgdG8gc2lsZW5jZSAtV21pc3NpbmctcHJvdG90eXBlcy4g ICovCitleHRlcm4gaW5pdGlhbGl6ZV9maWxlX2Z0eXBlIF9pbml0aWFsaXpl X3RhcmdldHNfYXR0cmlidXRlczsKKwordm9pZAorX2luaXRpYWxpemVfdGFy Z2V0c19hdHRyaWJ1dGVzICh2b2lkKQoreworICBhZGRfY21kICgibG9hZC10 YXJnZXQtYXR0cmlidXRlcyIsIGNsYXNzX21haW50ZW5hbmNlLAorCSAgIGxv YWRfdGFyZ2V0X2F0dHJpYnV0ZXNfY29tbWFuZCwKKwkgICBfKCJMb2FkIHRh cmdldCBhdHRyaWJ1dGVzIGZyb20gYSBYTUwgZmlsZS4iKSwKKwkgICAmbWFp bnRlbmFuY2VsaXN0KTsKKworICBhZGRfY21kICgiY2xlYXItdGFyZ2V0LWF0 dHJpYnV0ZXMiLCBjbGFzc19tYWludGVuYW5jZSwKKwkgICBjbGVhcl90YXJn ZXRfYXR0cmlidXRlc19jb21tYW5kLAorCSAgIF8oIlJlbW92ZSBhbGwgdGFy Z2V0IGF0dHJpYnV0ZXMuIiksCisJICAgJm1haW50ZW5hbmNlbGlzdCk7CisK KyAgYWRkX2luZm8gKCJ0YXJnZXQtYXR0cmlidXRlcyIsIGluZm9fdGFyZ2V0 X2F0dHJpYnV0ZXMsIF8oIlwKK1N0YXR1cyBvZiB0YXJnZXQgYXR0cmlidXRl cy4iKSk7Cit9Ci0tLSAvZGV2L251bGwKKysrIGIvdGFyZ2V0LWF0dHJpYnV0 ZXMuaApAQCAtMCwwICsxLDEwNCBAQAorLyogVGFyZ2V0IGF0dHJpYnV0ZXMg Zm9yIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KKworICAgQ29weXJpZ2h0IChD KSAyMDEyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorCisgICBU aGlzIGZpbGUgaXMgcGFydCBvZiBHREIuCisKKyAgIFRoaXMgcHJvZ3JhbSBp cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv b3IgbW9kaWZ5CisgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICAgdGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBv ZiB0aGUgTGljZW5zZSwgb3IKKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxh dGVyIHZlcnNpb24uCisKKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRl ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgYnV0 IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp ZWQgd2FycmFudHkgb2YKKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAgIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAg IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICBhbG9uZyB3aXRoIHRoaXMgcHJv Z3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5z ZXMvPi4gICovCisKKyNpZm5kZWYgVEFSR0VUX0FUVFJJQlVURVNfSAorI2Rl ZmluZSBUQVJHRVRfQVRUUklCVVRFU19IIDEKKworZW51bQoreworICBUQVJH RVRfQVRUUklCVVRFX1RZUEVfSU5UOCwKKyAgVEFSR0VUX0FUVFJJQlVURV9U WVBFX1VJTlQ4LAorICBUQVJHRVRfQVRUUklCVVRFX1RZUEVfSU5UMTYsCisg IFRBUkdFVF9BVFRSSUJVVEVfVFlQRV9VSU5UMTYsCisgIFRBUkdFVF9BVFRS SUJVVEVfVFlQRV9JTlQzMiwKKyAgVEFSR0VUX0FUVFJJQlVURV9UWVBFX1VJ TlQzMiwKKyAgVEFSR0VUX0FUVFJJQlVURV9UWVBFX0lOVDY0LAorICBUQVJH RVRfQVRUUklCVVRFX1RZUEVfVUlOVDY0LAorfTsKKworI2RlZmluZSBUQVJH RVRfQVRUUklCVVRFX0FDQ0VTU19SRUFECTB4MQorI2RlZmluZSBUQVJHRVRf QVRUUklCVVRFX0FDQ0VTU19XUklURQkweDIKKworI2RlZmluZSBUQVJHRVRf QVRUUklCVVRFX1NVUFBPUlRfU09GVFdBUkVfQlJFQUtQT0lOVAkweDEKKyNk ZWZpbmUgVEFSR0VUX0FUVFJJQlVURV9TVVBQT1JUX0hBUkRXQVJFX0JSRUFL UE9JTlQJMHgyCisjZGVmaW5lIFRBUkdFVF9BVFRSSUJVVEVfU1VQUE9SVF9I QVJEV0FSRV9XQVRDSFBPSU5UCTB4NAorI2RlZmluZSBUQVJHRVRfQVRUUklC VVRFX1NVUFBPUlRfVFJBQ0VQT0lOVAkJMHg4CisKK3N0cnVjdCB0YXJnZXRf YXR0cmlidXRlX2FkZHJlc3MKKyAgeworICAgIHN0cnVjdCB0YXJnZXRfYXR0 cmlidXRlX2FkZHJlc3MgKnByZXY7CisgICAgQ09SRV9BRERSCXN0YXJ0Owor ICAgIENPUkVfQUREUgllbmQ7CisgIH07CisKKy8qIFRoaXMgaXMgdGhlIGNv cmUgc3RydWN0IG9mIGEgdGFyZ2V0IGF0dHJpYnV0ZS4KKyAgIFdoZW4gR0RC IGdldCBhIHRhcmdldCBhdHRyaWJ1dGUgZnJvbSBYTUwsCisgICBpdCB3aWxs IGFsbG9jIGEgc3RydWN0IGZvciBpdC4gICovCisKK3N0cnVjdCB0YXJnZXRf YXR0cmlidXRlCisgIHsKKyAgICBzdHJ1Y3QgdGFyZ2V0X2F0dHJpYnV0ZSAq bmV4dDsKKyAgICBjaGFyICpuYW1lOworICAgIGludCBpZDsKKyAgICBpbnQg dHlwZTsKKyAgICBpbnQgdGFyZ2V0X29ubHlfY29uZF9jaGVjazsKKyAgICB1 bnNpZ25lZCBpbnQgYWdlbnRfYWNjZXNzOworICAgIHVuc2lnbmVkIGludCBn ZGJfYWNjZXNzOworICAgIHVuc2lnbmVkIGludCBzdXBwb3J0OworICAgIHN0 cnVjdCB0YXJnZXRfYXR0cmlidXRlX2FkZHJlc3MgKmFkZHJlc3NlczsKKyAg fTsKKworLyogVGhpcyBpcyB0aGUgZXJyb3IgcmVwb3J0IHN0cmluZyBmb3Ig ZnVuY3Rpb24KKyAgIGNoZWNrX2FnZW50X3RhcmdldF9hdHRyaWJ1dGUuCisg ICBCZWNhdXNlIHNvbWUgZnVuY3Rpb24gY2FsbCBjaGVja19hZ2VudF90YXJn ZXRfYXR0cmlidXRlCisgICB3aXRoIFRSWV9DQVRDSC4gIFVzZSB0aGlzIHN0 cmluZyByZXBvcnQgZXJyb3IuICAqLworCitleHRlcm4gY2hhciAqY2hlY2tf YWdlbnRfdGFyZ2V0X2F0dHJpYnV0ZV9lcnJvcjsKKworZXh0ZXJuIHN0cnVj dCB0YXJnZXRfYXR0cmlidXRlICpmaW5kX3RhcmdldF9hdHRyaWJ1dGVfbmFt ZSAoY29uc3QgY2hhciAqbmFtZSk7CitleHRlcm4gc3RydWN0IHRhcmdldF9h dHRyaWJ1dGUgKmZpbmRfdGFyZ2V0X2F0dHJpYnV0ZV9pZCAoaW50IGlkKTsK KworLyogU2V0IEJMIGZvciBmdW5jdGlvbiBjaGVja19hZ2VudF90YXJnZXRf YXR0cmlidXRlCisgICBiZWZvcmUgdHJhbnNsYXRlIGEgc3RyaW5nIHRvIGFn ZW50IGV4cHJlc3Npb24gYnl0ZWNvZGUuICAqLworCitleHRlcm4gc3RydWN0 IGNsZWFudXAgKnNldF9jaGVja19hZ2VudF90YXJnZXRfYXR0cmlidXRlCisJ CQkoc3RydWN0IGJwX2xvY2F0aW9uICpibCk7CisKKy8qIFRoZSBmdW5jdGlv biB0aGF0IHRyYW5zbGF0ZSBhIHN0cmluZyB0byBhZ2VudCBleHByZXNzaW9u IGJ5dGVjb2RlIGNhbGwKKyAgIGNoZWNrX2FnZW50X3RhcmdldF9hdHRyaWJ1 dGUgdG8gY2hlY2sgaWYgVEEgaXMgT0sgdG8gdXNlIHdpdGgKKyAgIEJMIHRo YXQgc2V0IGJ5IHNldF9jaGVja19hZ2VudF90YXJnZXRfYXR0cmlidXRlLiAg Ki8KKworZXh0ZXJuIHZvaWQgY2hlY2tfYWdlbnRfdGFyZ2V0X2F0dHJpYnV0 ZSAoc3RydWN0IHRhcmdldF9hdHRyaWJ1dGUgKnRhLAorCQkJCQkgIGludCB3 cml0ZSk7CisKKy8qIFJlbW92ZSBhbGwgdGhlIHRhcmdldCBhdHRyaWJ1dGVz IGluc2lkZSB0aGUgR0RCLiAgKi8KKworZXh0ZXJuIHZvaWQgY2xlYXJfdGFy Z2V0X2F0dHJpYnV0ZXMgKHZvaWQgKnVudXNlZCk7CisKKy8qIFBhcnNlIHRh cmdldCBhdHRyaWJ1dGVzIG91dCBmcm9tIFhNTCBmb3JtYXJ0IHN0cmluZyBU RVhUCisgICBhbmQgYWRkIHRoZW0gdG8gR0RCLiAgKi8KKworZXh0ZXJuIHZv aWQgYWRkX3htbF90YXJnZXRfYXR0cmlidXRlcyAoY29uc3QgY2hhciAqdGV4 dCk7CisKKy8qIFJldHVybiB0aGUgdHlwZSBvZiBUQS4gICovCisKK2V4dGVy biBzdHJ1Y3QgdHlwZSAqdGFyZ2V0X2F0dHJpYnV0ZV90eXBlIChzdHJ1Y3Qg Z2RiYXJjaCAqZ2RiYXJjaCwKKwkJCQkJICAgc3RydWN0IHRhcmdldF9hdHRy aWJ1dGUgKnRhKTsKKworI2VuZGlmIC8qIFRBUkdFVF9BVFRSSUJVVEVTX0gg Ki8KLS0tIGEvdGFyZ2V0LmgKKysrIGIvdGFyZ2V0LmgKQEAgLTI4Niw3ICsy ODYsOSBAQCBlbnVtIHRhcmdldF9vYmplY3QKICAgLyogRGFyd2luIGR5bmFt aWMgbGlua2VyIGluZm8gZGF0YS4gICovCiAgIFRBUkdFVF9PQkpFQ1RfREFS V0lOX0RZTERfSU5GTywKICAgLyogT3BlblZNUyBVbndpbmQgSW5mb3JtYXRp b24gQmxvY2suICAqLwotICBUQVJHRVRfT0JKRUNUX09QRU5WTVNfVUlCCisg IFRBUkdFVF9PQkpFQ1RfT1BFTlZNU19VSUIsCisgIC8qIFRhcmdldCBhdHRy aWJ1dGVzLiAgKi8KKyAgVEFSR0VUX09CSkVDVF9BVFRSSUJVVEVTLAogICAv KiBQb3NzaWJsZSBmdXR1cmUgb2JqZWN0czogVEFSR0VUX09CSkVDVF9GSUxF LCAuLi4gICovCiB9OwogCi0tLSBhL3RyYWNlcG9pbnQuYworKysgYi90cmFj ZXBvaW50LmMKQEAgLTUzLDYgKzUzLDcgQEAKICNpbmNsdWRlICJleGNlcHRp b25zLmgiCiAjaW5jbHVkZSAiY2xpL2NsaS11dGlscy5oIgogI2luY2x1ZGUg InByb2JlLmgiCisjaW5jbHVkZSAidGFyZ2V0LWF0dHJpYnV0ZXMuaCIKIAog LyogcmVhZGxpbmUgaW5jbHVkZSBmaWxlcyAqLwogI2luY2x1ZGUgInJlYWRs aW5lL3JlYWRsaW5lLmgiCkBAIC0zNDgsNiArMzQ5LDIxIEBAIGZpbmRfdHJh Y2Vfc3RhdGVfdmFyaWFibGUgKGNvbnN0IGNoYXIgKm4KICAgcmV0dXJuIE5V TEw7CiB9CiAKKy8qIExvb2sgZm9yIGEgdHJhY2Ugc3RhdGUgdmFyaWFibGUg b2YgdGhlIGdpdmVuIG51bWJlci4gICovCisKK3N0YXRpYyBzdHJ1Y3QgdHJh Y2Vfc3RhdGVfdmFyaWFibGUgKgorZmluZF90cmFjZV9zdGF0ZV92YXJpYWJs ZV9udW1iZXIgKGludCBudW1iZXIpCit7CisgIHN0cnVjdCB0cmFjZV9zdGF0 ZV92YXJpYWJsZSAqdHN2OworICBpbnQgaXg7CisKKyAgZm9yIChpeCA9IDA7 IFZFQ19pdGVyYXRlICh0c3ZfcywgdHZhcmlhYmxlcywgaXgsIHRzdik7ICsr aXgpCisgICAgaWYgKG51bWJlciA9PSB0c3YtPm51bWJlcikKKyAgICAgIHJl dHVybiB0c3Y7CisKKyAgcmV0dXJuIE5VTEw7Cit9CisKIHN0YXRpYyB2b2lk CiBkZWxldGVfdHJhY2Vfc3RhdGVfdmFyaWFibGUgKGNvbnN0IGNoYXIgKm5h bWUpCiB7CkBAIC0zNjgsNiArMzg0LDQxIEBAIGRlbGV0ZV90cmFjZV9zdGF0 ZV92YXJpYWJsZSAoY29uc3QgY2hhcgogICB3YXJuaW5nIChfKCJObyB0cmFj ZSB2YXJpYWJsZSBuYW1lZCBcIiQlc1wiLCBub3QgZGVsZXRpbmciKSwgbmFt ZSk7CiB9CiAKK3N0YXRpYyBpbnQKK3RyYWNlX3ZhcmlhYmxlX251bWJlcl9j aGVja18xIChzdHJ1Y3QgdHJhY2Vfc3RhdGVfdmFyaWFibGUgKnRzdikKK3sK KyAgaWYgKGZpbmRfdGFyZ2V0X2F0dHJpYnV0ZV9pZCAodHN2LT5udW1iZXIp KQorICAgIHsKKyAgICAgIGludCBuZXdfbnVtYmVyID0gdHN2LT5udW1iZXIg KyAxOworICAgICAgdHN2LT5udW1iZXIgPSAwOworICAgICAgd2hpbGUgKGZp bmRfdGFyZ2V0X2F0dHJpYnV0ZV9pZCAobmV3X251bWJlcikKKwkgICAgIHx8 IGZpbmRfdHJhY2Vfc3RhdGVfdmFyaWFibGVfbnVtYmVyIChuZXdfbnVtYmVy KSkKKwluZXdfbnVtYmVyKys7CisgICAgICB0c3YtPm51bWJlciA9IG5ld19u dW1iZXI7CisKKyAgICAgIHJldHVybiAxOworICAgIH0KKworICByZXR1cm4g MDsKK30KKwordm9pZAordHJhY2VfdmFyaWFibGVfbnVtYmVyX2NoZWNrICh2 b2lkKQoreworICBzdHJ1Y3QgdHJhY2Vfc3RhdGVfdmFyaWFibGUgKnRzdjsK KyAgaW50IGl4OworCisgIGZvciAoaXggPSAwOyBWRUNfaXRlcmF0ZSAodHN2 X3MsIHR2YXJpYWJsZXMsIGl4LCB0c3YpOyArK2l4KQorICAgIHsKKyAgICAg IGlmICh0cmFjZV92YXJpYWJsZV9udW1iZXJfY2hlY2tfMSAodHN2KSkKKyAg ICAgICAgeworCSAgd2FybmluZyAoXygiXAorbnVtYmVyIG9mIHRyYWNlIHZh cmlhYmxlICQlcyBpcyBzYW1lIHdpdGggYSB0c3YgY29tcGF0aWJsZSBcblwK K3RhcmdldCBhdHRyaWJ1dGUuICBTbyBpdCBpcyBjaGFuZ2VkIHRvICVkLiIp LCB0c3YtPm5hbWUsIHRzdi0+bnVtYmVyKTsKKwl9CisgICAgfQorfQorCiAv KiBUaGUgJ3R2YXJpYWJsZScgY29tbWFuZCBjb2xsZWN0cyBhIG5hbWUgYW5k IG9wdGlvbmFsIGV4cHJlc3Npb24gdG8KICAgIGV2YWx1YXRlIGludG8gYW4g aW5pdGlhbCB2YWx1ZS4gICovCiAKQEAgLTQyOCw2ICs0NzksOCBAQCB0cmFj ZV92YXJpYWJsZV9jb21tYW5kIChjaGFyICphcmdzLCBpbnQKIAogICBvYnNl cnZlcl9ub3RpZnlfdHN2X2NyZWF0ZWQgKHRzdi0+bmFtZSwgaW5pdHZhbCk7 CiAKKyAgdHJhY2VfdmFyaWFibGVfbnVtYmVyX2NoZWNrXzEgKHRzdik7CisK ICAgcHJpbnRmX2ZpbHRlcmVkIChfKCJUcmFjZSBzdGF0ZSB2YXJpYWJsZSAk JXMgIgogCQkgICAgICJjcmVhdGVkLCB3aXRoIGluaXRpYWwgdmFsdWUgJXMu XG4iKSwKIAkJICAgdHN2LT5uYW1lLCBwbG9uZ2VzdCAodHN2LT5pbml0aWFs X3ZhbHVlKSk7CkBAIC0zNjE2LDYgKzM2NjksOCBAQCBtZXJnZV91cGxvYWRl ZF90cmFjZV9zdGF0ZV92YXJpYWJsZXMgKHN0CiAgICAgaWYgKHRzdi0+bnVt YmVyID09IDApCiAgICAgICB0c3YtPm51bWJlciA9IGhpZ2hlc3QrKzsKIAor ICB0cmFjZV92YXJpYWJsZV9udW1iZXJfY2hlY2soKTsKKwogICBmcmVlX3Vw bG9hZGVkX3RzdnMgKHVwbG9hZGVkX3RzdnMpOwogfQogCi0tLSBhL3RyYWNl cG9pbnQuaAorKysgYi90cmFjZXBvaW50LmgKQEAgLTI1MCw2ICsyNTAsOCBA QCBleHRlcm4gdm9pZCB3aGlsZV9zdGVwcGluZ19wc2V1ZG9jb21tYW5kCiBl eHRlcm4gc3RydWN0IHRyYWNlX3N0YXRlX3ZhcmlhYmxlICpmaW5kX3RyYWNl X3N0YXRlX3ZhcmlhYmxlIChjb25zdCBjaGFyICpuYW1lKTsKIGV4dGVybiBz dHJ1Y3QgdHJhY2Vfc3RhdGVfdmFyaWFibGUgKmNyZWF0ZV90cmFjZV9zdGF0 ZV92YXJpYWJsZSAoY29uc3QgY2hhciAqbmFtZSk7CiAKK2V4dGVybiB2b2lk IHRyYWNlX3ZhcmlhYmxlX251bWJlcl9jaGVjayh2b2lkKTsKKwogZXh0ZXJu IGludCBlbmNvZGVfc291cmNlX3N0cmluZyAoaW50IG51bSwgVUxPTkdFU1Qg YWRkciwKIAkJCQkgY2hhciAqc3JjdHlwZSwgY2hhciAqc3JjLAogCQkJCSBj aGFyICpidWYsIGludCBidWZfc2l6ZSk7Cg== --00151747bd54ef42c004cefd829c--