From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: multipart/mixed; boundary="===============2659856663060707791==" MIME-Version: 1.0 From: Mark Wielaard To: elfutils-devel@lists.fedorahosted.org Subject: Re: [PATCH] Move nested functions in dwfl_module_getdwarf.c to file scope. Date: Sat, 02 Jan 2016 18:07:18 +0100 Message-ID: <1451754438.13330.13.camel@redhat.com> In-Reply-To: 1447723010-3440-1-git-send-email-chh@google.com --===============2659856663060707791== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable On Mon, 2015-11-16 at 17:16 -0800, Chih-Hung Hsieh wrote: > +2015-11-16 Chih-Hung Hsieh > + > + * dwfl_module_getdwarf.c (find_prelink_address_sync): Move nested > + function 'consider_shdr' to file scope. > + * dwfl_module_getdwarf.c (find_dynsym): Move nested function > + 'translate_offs' to file scope. Pushed to master, but changed slightly to not pass a Elf_Data ** to translate_offs. That IMHO is really confusing, since the ** isn't really used to pass any useful data to/from the function. Also added a bit more documentation to translate_offs so it is more clear what the side effects are of calling the function. Adjusted patch as pushed attached. Thanks, Mark --===============2659856663060707791== Content-Type: text/x-patch MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="0001-Move-nested-functions-in-dwfl_module_getdwarf.c-to-f.patch" RnJvbSA0ZTI0OTYwNWJiNjA1YjliY2M3ZTg2ZTQ4ZDkxMjQ3YWJkODJmZjVlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBDaGloLUh1bmcgSHNpZWggPGNoaEBnb29nbGUuY29tPgpEYXRl OiBNb24sIDE2IE5vdiAyMDE1IDE3OjE2OjUwIC0wODAwClN1YmplY3Q6IFtQQVRDSF0gTW92ZSBu ZXN0ZWQgZnVuY3Rpb25zIGluIGR3ZmxfbW9kdWxlX2dldGR3YXJmLmMgdG8gZmlsZQogc2NvcGUu CgoqIEluIGR3ZmxfbW9kdWxlX2dldGR3YXJmLmMsIG5lc3RlZCBmdW5jdGlvbnMgJ2NvbnNpZGVy X3NoZHInCiAgYW5kICd0cmFuc2xhdGVfb2ZmcycgYXJlIG1vdmVkIHRvIGZpbGUgc2NvcGUgdG8g Y29tcGlsZSB3aXRoIGNsYW5nLgoKU2lnbmVkLW9mZi1ieTogQ2hpaC1IdW5nIEhzaWVoIDxjaGhA Z29vZ2xlLmNvbT4KU2lnbmVkLW9mZi1ieTogTWFyayBXaWVsYWFyZCA8bWp3QHJlZGhhdC5jb20+ Ci0tLQogbGliZHdmbC9DaGFuZ2VMb2cgICAgICAgICAgICAgIHwgICA3ICsKIGxpYmR3ZmwvZHdm bF9tb2R1bGVfZ2V0ZHdhcmYuYyB8IDMwNiArKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0t LS0tLS0tLS0tLQogMiBmaWxlcyBjaGFuZ2VkLCAxNjUgaW5zZXJ0aW9ucygrKSwgMTQ4IGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL2xpYmR3ZmwvQ2hhbmdlTG9nIGIvbGliZHdmbC9DaGFuZ2VM b2cKaW5kZXggOTE4ZmI4NC4uNGQxYWJlMSAxMDA2NDQKLS0tIGEvbGliZHdmbC9DaGFuZ2VMb2cK KysrIGIvbGliZHdmbC9DaGFuZ2VMb2cKQEAgLTEsNSArMSwxMiBAQAogMjAxNS0xMS0xNiAgQ2hp aC1IdW5nIEhzaWVoIDxjaGhAZ29vZ2xlLmNvbT4KIAorCSogZHdmbF9tb2R1bGVfZ2V0ZHdhcmYu YyAoZmluZF9wcmVsaW5rX2FkZHJlc3Nfc3luYyk6IE1vdmUgbmVzdGVkCisJZnVuY3Rpb24gJ2Nv bnNpZGVyX3NoZHInIHRvIGZpbGUgc2NvcGUuCisJKiBkd2ZsX21vZHVsZV9nZXRkd2FyZi5jIChm aW5kX2R5bnN5bSk6IE1vdmUgbmVzdGVkIGZ1bmN0aW9uCisJJ3RyYW5zbGF0ZV9vZmZzJyB0byBm aWxlIHNjb3BlLgorCisyMDE1LTExLTE2ICBDaGloLUh1bmcgSHNpZWggPGNoaEBnb29nbGUuY29t PgorCiAJKiBkd2ZsX21vZHVsZV9hZGRyc3ltLmMgKF9fbGliZHdmbF9hZGRyc3ltKTogTW92ZSBu ZXN0ZWQgZnVuY3Rpb25zCiAJJ3NhbWVfc2VjdGlvbicsICdiaW5kaW5nX3ZhbHVlJywgJ3RyeV9z eW1fdmFsdWUnLCBhbmQgJ3NlYXJjaF90YWJsZScKIAl0byBmaWxlIHNjb3BlLgpkaWZmIC0tZ2l0 IGEvbGliZHdmbC9kd2ZsX21vZHVsZV9nZXRkd2FyZi5jIGIvbGliZHdmbC9kd2ZsX21vZHVsZV9n ZXRkd2FyZi5jCmluZGV4IDg0ODNmYTIuLmU5NTg5YjMgMTAwNjQ0Ci0tLSBhL2xpYmR3ZmwvZHdm bF9tb2R1bGVfZ2V0ZHdhcmYuYworKysgYi9saWJkd2ZsL2R3ZmxfbW9kdWxlX2dldGR3YXJmLmMK QEAgLTIzMSw2ICsyMzEsMjQgQEAgX19saWJkd2ZsX2dldGVsZiAoRHdmbF9Nb2R1bGUgKm1vZCkK ICAgbW9kLT5tYWluX2JpYXMgPSBtb2QtPmVfdHlwZSA9PSBFVF9SRUwgPyAwIDogbW9kLT5sb3df YWRkciAtIG1vZC0+bWFpbi52YWRkcjsKIH0KIAorc3RhdGljIGlubGluZSB2b2lkCitjb25zaWRl cl9zaGRyIChHRWxmX0FkZHIgaW50ZXJwLAorICAgICAgICAgICAgICAgR0VsZl9Xb3JkIHNoX3R5 cGUsCisgICAgICAgICAgICAgICBHRWxmX1h3b3JkIHNoX2ZsYWdzLAorICAgICAgICAgICAgICAg R0VsZl9BZGRyIHNoX2FkZHIsCisgICAgICAgICAgICAgICBHRWxmX1h3b3JkIHNoX3NpemUsCisg ICAgICAgICAgICAgICBHRWxmX0FkZHIgKnBoaWdoZXN0KQoreworICBpZiAoKHNoX2ZsYWdzICYg U0hGX0FMTE9DKQorICAgICAgJiYgKChzaF90eXBlID09IFNIVF9QUk9HQklUUyAmJiBzaF9hZGRy ICE9IGludGVycCkKKyAgICAgICAgICB8fCBzaF90eXBlID09IFNIVF9OT0JJVFMpKQorICAgIHsK KyAgICAgIGNvbnN0IEdFbGZfQWRkciBzaF9lbmQgPSBzaF9hZGRyICsgc2hfc2l6ZTsKKyAgICAg IGlmIChzaF9lbmQgPiAqcGhpZ2hlc3QpCisgICAgICAgICpwaGlnaGVzdCA9IHNoX2VuZDsKKyAg ICB9Cit9CisKIC8qIElmIHRoZSBtYWluIGZpbGUgbWlnaHQgaGF2ZSBiZWVuIHByZWxpbmtlZCwg dGhlbiB3ZSBuZWVkIHRvCiAgICBkaXNjb3ZlciB0aGUgY29ycmVjdCBzeW5jaHJvbml6YXRpb24g YWRkcmVzcyBiZXR3ZWVuIHRoZSBtYWluIGFuZAogICAgZGVidWcgZmlsZXMuICBCZWNhdXNlIG9m IHByZWxpbmsncyBzZWN0aW9uIGp1Z2dsaW5nLCB3ZSBjYW5ub3QgcmVseQpAQCAtNDQ4LDIyICs0 NjYsNiBAQCBmaW5kX3ByZWxpbmtfYWRkcmVzc19zeW5jIChEd2ZsX01vZHVsZSAqbW9kLCBzdHJ1 Y3QgZHdmbF9maWxlICpmaWxlKQogCiAgIEdFbGZfQWRkciBoaWdoZXN0OwogCi0gIGlubGluZSB2 b2lkIGNvbnNpZGVyX3NoZHIgKEdFbGZfQWRkciBpbnRlcnAsCi0JCQkgICAgIEdFbGZfV29yZCBz aF90eXBlLAotCQkJICAgICBHRWxmX1h3b3JkIHNoX2ZsYWdzLAotCQkJICAgICBHRWxmX0FkZHIg c2hfYWRkciwKLQkJCSAgICAgR0VsZl9Yd29yZCBzaF9zaXplKQotICB7Ci0gICAgaWYgKChzaF9m bGFncyAmIFNIRl9BTExPQykKLQkmJiAoKHNoX3R5cGUgPT0gU0hUX1BST0dCSVRTICYmIHNoX2Fk ZHIgIT0gaW50ZXJwKQotCSAgICB8fCBzaF90eXBlID09IFNIVF9OT0JJVFMpKQotICAgICAgewot CWNvbnN0IEdFbGZfQWRkciBzaF9lbmQgPSBzaF9hZGRyICsgc2hfc2l6ZTsKLQlpZiAoc2hfZW5k ID4gaGlnaGVzdCkKLQkgIGhpZ2hlc3QgPSBzaF9lbmQ7Ci0gICAgICB9Ci0gIH0KLQogICBoaWdo ZXN0ID0gMDsKICAgc2NuID0gTlVMTDsKICAgd2hpbGUgKChzY24gPSBlbGZfbmV4dHNjbiAobW9k LT5tYWluLmVsZiwgc2NuKSkgIT0gTlVMTCkKQEAgLTQ3Niw3ICs0NzgsNyBAQCBmaW5kX3ByZWxp bmtfYWRkcmVzc19zeW5jIChEd2ZsX01vZHVsZSAqbW9kLCBzdHJ1Y3QgZHdmbF9maWxlICpmaWxl KQogCSAgcmV0dXJuIERXRkxfRV9MSUJFTEY7CiAJfQogICAgICAgY29uc2lkZXJfc2hkciAobWFp bl9pbnRlcnAsIHNoLT5zaF90eXBlLCBzaC0+c2hfZmxhZ3MsCi0JCSAgICAgc2gtPnNoX2FkZHIs IHNoLT5zaF9zaXplKTsKKwkJICAgICBzaC0+c2hfYWRkciwgc2gtPnNoX3NpemUsICZoaWdoZXN0 KTsKICAgICB9CiAgIGlmIChoaWdoZXN0ID4gbW9kLT5tYWluLnZhZGRyKQogICAgIHsKQEAgLTQ4 OSw3ICs0OTEsNyBAQCBmaW5kX3ByZWxpbmtfYWRkcmVzc19zeW5jIChEd2ZsX01vZHVsZSAqbW9k LCBzdHJ1Y3QgZHdmbF9maWxlICpmaWxlKQogCSAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaG51 bSAtIDE7ICsraSkKIAkgICAgY29uc2lkZXJfc2hkciAodW5kb19pbnRlcnAsICgqczMyKVtpXS5z aF90eXBlLAogCQkJICAgKCpzMzIpW2ldLnNoX2ZsYWdzLCAoKnMzMilbaV0uc2hfYWRkciwKLQkJ CSAgICgqczMyKVtpXS5zaF9zaXplKTsKKwkJCSAgICgqczMyKVtpXS5zaF9zaXplLCAmaGlnaGVz dCk7CiAJfQogICAgICAgZWxzZQogCXsKQEAgLTQ5Nyw3ICs0OTksNyBAQCBmaW5kX3ByZWxpbmtf YWRkcmVzc19zeW5jIChEd2ZsX01vZHVsZSAqbW9kLCBzdHJ1Y3QgZHdmbF9maWxlICpmaWxlKQog CSAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaG51bSAtIDE7ICsraSkKIAkgICAgY29uc2lkZXJf c2hkciAodW5kb19pbnRlcnAsICgqczY0KVtpXS5zaF90eXBlLAogCQkJICAgKCpzNjQpW2ldLnNo X2ZsYWdzLCAoKnM2NClbaV0uc2hfYWRkciwKLQkJCSAgICgqczY0KVtpXS5zaF9zaXplKTsKKwkJ CSAgICgqczY0KVtpXS5zaF9zaXplLCAmaGlnaGVzdCk7CiAJfQogCiAgICAgICBpZiAoaGlnaGVz dCA+IGZpbGUtPnZhZGRyKQpAQCAtNjc2LDYgKzY3OCwxNDEgQEAgZmluZF9vZmZzZXRzIChFbGYg KmVsZiwgR0VsZl9BZGRyIG1haW5fYmlhcywgc2l6ZV90IHBobnVtLCBzaXplX3QgbiwKICAgICB9 CiB9CiAKKy8qIFZhcmlvdXMgYWRkcmVzc2VzIHdlIG1pZ2h0IHdhbnQgdG8gcHVsbCBmcm9tIHRo ZSBkeW5hbWljIHNlZ21lbnQuICAqLworZW51bQoreworICBpX3N5bXRhYiwKKyAgaV9zdHJ0YWIs CisgIGlfaGFzaCwKKyAgaV9nbnVfaGFzaCwKKyAgaV9tYXgKK307CisKKy8qIFRyYW5zbGF0ZSBw b2ludGVycyBpbnRvIGZpbGUgb2Zmc2V0cy4gIEFESlVTVCBpcyBlaXRoZXIgemVybworICAgaW4g Y2FzZSB0aGUgZHluYW1pYyBzZWdtZW50IHdhc24ndCBhZGp1c3RlZCBvciBtb2QtPm1haW5fYmlh cy4KKyAgIFdpbGwgc2V0IG1vZC0+c3ltZmlsZSBpZiB0aGUgdHJhbnNsYXRlZCBvZmZzZXRzIGNh biBiZSB1c2VkIGFzCisgICBzeW1ib2wgdGFibGUuICAqLworc3RhdGljIHZvaWQKK3RyYW5zbGF0 ZV9vZmZzIChHRWxmX0FkZHIgYWRqdXN0LAorICAgICAgICAgICAgICAgIER3ZmxfTW9kdWxlICpt b2QsIHNpemVfdCBwaG51bSwKKyAgICAgICAgICAgICAgICBHRWxmX0FkZHIgYWRkcnNbaV9tYXhd LCBHRWxmX1h3b3JkIHN0cnN6LAorICAgICAgICAgICAgICAgIEdFbGZfRWhkciAqZWhkcikKK3sK KyAgR0VsZl9PZmYgb2Zmc1tpX21heF0gPSB7IDAsIH07CisgIGZpbmRfb2Zmc2V0cyAobW9kLT5t YWluLmVsZiwgYWRqdXN0LCBwaG51bSwgaV9tYXgsIGFkZHJzLCBvZmZzKTsKKworICAvKiBGaWd1 cmUgb3V0IHRoZSBzaXplIG9mIHRoZSBzeW1ib2wgdGFibGUuICAqLworICBpZiAob2Zmc1tpX2hh c2hdICE9IDApCisgICAgeworICAgICAgLyogSW4gdGhlIG9yaWdpbmFsIGZvcm1hdCwgLmhhc2gg c2F5cyB0aGUgc2l6ZSBvZiAuZHluc3ltLiAgKi8KKworICAgICAgc2l6ZV90IGVudHN6ID0gU0hf RU5UU0laRV9IQVNIIChlaGRyKTsKKyAgICAgIEVsZl9EYXRhICpkYXRhID0gZWxmX2dldGRhdGFf cmF3Y2h1bmsgKG1vZC0+bWFpbi5lbGYsCisJCQkJCSAgICAgb2Zmc1tpX2hhc2hdICsgZW50c3os IGVudHN6LAorCQkJCQkgICAgIChlbnRzeiA9PSA0CisJCQkJCSAgICAgID8gRUxGX1RfV09SRCA6 IEVMRl9UX1hXT1JEKSk7CisgICAgICBpZiAoZGF0YSAhPSBOVUxMKQorCW1vZC0+c3ltZW50cyA9 IChlbnRzeiA9PSA0CisJCQk/ICooY29uc3QgR0VsZl9Xb3JkICopIGRhdGEtPmRfYnVmCisJCQk6 ICooY29uc3QgR0VsZl9Yd29yZCAqKSBkYXRhLT5kX2J1Zik7CisgICAgfQorICBpZiAob2Zmc1tp X2dudV9oYXNoXSAhPSAwICYmIG1vZC0+c3ltZW50cyA9PSAwKQorICAgIHsKKyAgICAgIC8qIElu IHRoZSBuZXcgZm9ybWF0LCB3ZSBjYW4gZGVyaXZlIGl0IHdpdGggc29tZSB3b3JrLiAgKi8KKwor ICAgICAgY29uc3Qgc3RydWN0CisgICAgICB7CisgICAgICAgIEVsZjMyX1dvcmQgbmJ1Y2tldHM7 CisgICAgICAgIEVsZjMyX1dvcmQgc3ltbmR4OworICAgICAgICBFbGYzMl9Xb3JkIG1hc2t3b3Jk czsKKyAgICAgICAgRWxmMzJfV29yZCBzaGlmdDI7CisgICAgICB9ICpoZWFkZXI7CisKKyAgICAg IEVsZl9EYXRhICpkYXRhID0gZWxmX2dldGRhdGFfcmF3Y2h1bmsgKG1vZC0+bWFpbi5lbGYsIG9m ZnNbaV9nbnVfaGFzaF0sCisJCQkJCSAgICAgc2l6ZW9mICpoZWFkZXIsIEVMRl9UX1dPUkQpOwor ICAgICAgaWYgKGRhdGEgIT0gTlVMTCkKKyAgICAgICAgeworICAgICAgICAgIGhlYWRlciA9IGRh dGEtPmRfYnVmOworICAgICAgICAgIEVsZjMyX1dvcmQgbmJ1Y2tldHMgPSBoZWFkZXItPm5idWNr ZXRzOworICAgICAgICAgIEVsZjMyX1dvcmQgc3ltbmR4ID0gaGVhZGVyLT5zeW1uZHg7CisgICAg ICAgICAgR0VsZl9PZmYgYnVja2V0c19hdCA9IChvZmZzW2lfZ251X2hhc2hdICsgc2l6ZW9mICpo ZWFkZXIKKwkJCQkgKyAoZ2VsZl9nZXRjbGFzcyAobW9kLT5tYWluLmVsZikKKwkJCQkgICAgKiBz aXplb2YgKEVsZjMyX1dvcmQpCisJCQkJICAgICogaGVhZGVyLT5tYXNrd29yZHMpKTsKKworICAg ICAgICAgIC8vIGVsZl9nZXRkYXRhX3Jhd2NodW5rIHRha2VzIGEgc2l6ZV90LCBtYWtlIHN1cmUg aXQKKyAgICAgICAgICAvLyBkb2Vzbid0IG92ZXJmbG93LgorI2lmIFNJWkVfTUFYIDw9IFVJTlQz Ml9NQVgKKyAgICAgICAgICBpZiAobmJ1Y2tldHMgPiBTSVpFX01BWCAvIHNpemVvZiAoRWxmMzJf V29yZCkpCisgICAgICAgICAgICBkYXRhID0gTlVMTDsKKyAgICAgICAgICBlbHNlCisjZW5kaWYK KyAgICAgICAgICAgIGRhdGEgPSBlbGZfZ2V0ZGF0YV9yYXdjaHVuayAobW9kLT5tYWluLmVsZiwg YnVja2V0c19hdCwKKwkJCQkJICAgbmJ1Y2tldHMgKiBzaXplb2YgKEVsZjMyX1dvcmQpLAorCQkJ CQkgICBFTEZfVF9XT1JEKTsKKwkgIGlmIChkYXRhICE9IE5VTEwgJiYgc3ltbmR4IDwgbmJ1Y2tl dHMpCisJICAgIHsKKwkgICAgICBjb25zdCBFbGYzMl9Xb3JkICpjb25zdCBidWNrZXRzID0gZGF0 YS0+ZF9idWY7CisJICAgICAgRWxmMzJfV29yZCBtYXhuZHggPSBzeW1uZHg7CisJICAgICAgZm9y IChFbGYzMl9Xb3JkIGJ1Y2tldCA9IDA7IGJ1Y2tldCA8IG5idWNrZXRzOyArK2J1Y2tldCkKKwkJ aWYgKGJ1Y2tldHNbYnVja2V0XSA+IG1heG5keCkKKwkJICBtYXhuZHggPSBidWNrZXRzW2J1Y2tl dF07CisKKwkgICAgICBHRWxmX09mZiBoYXNoYXJyX2F0ID0gKGJ1Y2tldHNfYXQKKwkJCQkgICAg ICsgbmJ1Y2tldHMgKiBzaXplb2YgKEVsZjMyX1dvcmQpKTsKKwkgICAgICBoYXNoYXJyX2F0ICs9 IChtYXhuZHggLSBzeW1uZHgpICogc2l6ZW9mIChFbGYzMl9Xb3JkKTsKKwkgICAgICBkbworCQl7 CisJCSAgZGF0YSA9IGVsZl9nZXRkYXRhX3Jhd2NodW5rIChtb2QtPm1haW4uZWxmLAorCQkJCQkg ICAgICAgaGFzaGFycl9hdCwKKwkJCQkJICAgICAgIHNpemVvZiAoRWxmMzJfV29yZCksCisJCQkJ CSAgICAgICBFTEZfVF9XT1JEKTsKKwkJICBpZiAoZGF0YSAhPSBOVUxMCisJCSAgICAgICYmICgq KGNvbnN0IEVsZjMyX1dvcmQgKikgZGF0YS0+ZF9idWYgJiAxdSkpCisJCSAgICB7CisJCSAgICAg IG1vZC0+c3ltZW50cyA9IG1heG5keCArIDE7CisJCSAgICAgIGJyZWFrOworCQkgICAgfQorCQkg ICsrbWF4bmR4OworCQkgIGhhc2hhcnJfYXQgKz0gc2l6ZW9mIChFbGYzMl9Xb3JkKTsKKwkJfQor CSAgICAgIHdoaWxlIChkYXRhICE9IE5VTEwpOworCSAgICB9CisJfQorICAgIH0KKyAgaWYgKG9m ZnNbaV9zdHJ0YWJdID4gb2Zmc1tpX3N5bXRhYl0gJiYgbW9kLT5zeW1lbnRzID09IDApCisgICAg bW9kLT5zeW1lbnRzID0gKChvZmZzW2lfc3RydGFiXSAtIG9mZnNbaV9zeW10YWJdKQorCQkgICAg LyBnZWxmX2ZzaXplIChtb2QtPm1haW4uZWxmLAorCQkJCSAgRUxGX1RfU1lNLCAxLCBFVl9DVVJS RU5UKSk7CisKKyAgaWYgKG1vZC0+c3ltZW50cyA+IDApCisgICAgeworICAgICAgbW9kLT5zeW1k YXRhID0gZWxmX2dldGRhdGFfcmF3Y2h1bmsgKG1vZC0+bWFpbi5lbGYsCisJCQkJCSAgIG9mZnNb aV9zeW10YWJdLAorCQkJCQkgICBnZWxmX2ZzaXplIChtb2QtPm1haW4uZWxmLAorCQkJCQkJICAg ICAgIEVMRl9UX1NZTSwKKwkJCQkJCSAgICAgICBtb2QtPnN5bWVudHMsCisJCQkJCQkgICAgICAg RVZfQ1VSUkVOVCksCisJCQkJCQkgICAgICAgRUxGX1RfU1lNKTsKKyAgICAgIGlmIChtb2QtPnN5 bWRhdGEgIT0gTlVMTCkKKwl7CisJICBtb2QtPnN5bXN0cmRhdGEgPSBlbGZfZ2V0ZGF0YV9yYXdj aHVuayAobW9kLT5tYWluLmVsZiwKKwkJCQkJCSAgb2Zmc1tpX3N0cnRhYl0sCisJCQkJCQkgIHN0 cnN6LAorCQkJCQkJICBFTEZfVF9CWVRFKTsKKwkgIGlmIChtb2QtPnN5bXN0cmRhdGEgPT0gTlVM TCkKKwkgICAgbW9kLT5zeW1kYXRhID0gTlVMTDsKKwl9CisgICAgICBpZiAobW9kLT5zeW1kYXRh ID09IE5VTEwpCisJbW9kLT5zeW1lcnIgPSBEV0ZMX0UgKExJQkVMRiwgZWxmX2Vycm5vICgpKTsK KyAgICAgIGVsc2UKKwl7CisJICBtb2QtPnN5bWZpbGUgPSAmbW9kLT5tYWluOworCSAgbW9kLT5z eW1lcnIgPSBEV0ZMX0VfTk9FUlJPUjsKKwl9CisgICAgfQorfQorCiAvKiBUcnkgdG8gZmluZCBh IGR5bmFtaWMgc3ltYm9sIHRhYmxlIHZpYSBwaGRycy4gICovCiBzdGF0aWMgdm9pZAogZmluZF9k eW5zeW0gKER3ZmxfTW9kdWxlICptb2QpCkBAIC03MDQsMTQgKzg0MSw2IEBAIGZpbmRfZHluc3lt IChEd2ZsX01vZHVsZSAqbW9kKQogCSAgaWYgKGRhdGEgPT0gTlVMTCkKIAkgICAgY29udGludWU7 CiAKLQkgIGVudW0KLQkgICAgewotCSAgICAgIGlfc3ltdGFiLAotCSAgICAgIGlfc3RydGFiLAot CSAgICAgIGlfaGFzaCwKLQkgICAgICBpX2dudV9oYXNoLAotCSAgICAgIGlfbWF4Ci0JICAgIH07 CiAJICBHRWxmX0FkZHIgYWRkcnNbaV9tYXhdID0geyAwLCB9OwogCSAgR0VsZl9Yd29yZCBzdHJz eiA9IDA7CiAJICBzaXplX3QgbiA9IGRhdGEtPmRfc2l6ZSAvIGdlbGZfZnNpemUgKG1vZC0+bWFp bi5lbGYsCkBAIC03NTIsMTMxICs4ODEsMTIgQEAgZmluZF9keW5zeW0gKER3ZmxfTW9kdWxlICpt b2QpCiAJICAgICAgYnJlYWs7CiAJICAgIH0KIAotCSAgLyogVHJhbnNsYXRlIHBvaW50ZXJzIGlu dG8gZmlsZSBvZmZzZXRzLiAgQURKVVNUIGlzIGVpdGhlciB6ZXJvCi0JICAgICBpbiBjYXNlIHRo ZSBkeW5hbWljIHNlZ21lbnQgd2Fzbid0IGFkanVzdGVkIG9yIG1vZC0+bWFpbl9iaWFzLiAgKi8K LQkgIHZvaWQgdHJhbnNsYXRlX29mZnMgKEdFbGZfQWRkciBhZGp1c3QpCi0JICB7Ci0JICAgIEdF bGZfT2ZmIG9mZnNbaV9tYXhdID0geyAwLCB9OwotCSAgICBmaW5kX29mZnNldHMgKG1vZC0+bWFp bi5lbGYsIGFkanVzdCwgcGhudW0sIGlfbWF4LCBhZGRycywgb2Zmcyk7Ci0KLQkgICAgLyogRmln dXJlIG91dCB0aGUgc2l6ZSBvZiB0aGUgc3ltYm9sIHRhYmxlLiAgKi8KLQkgICAgaWYgKG9mZnNb aV9oYXNoXSAhPSAwKQotCSAgICAgIHsKLQkJLyogSW4gdGhlIG9yaWdpbmFsIGZvcm1hdCwgLmhh c2ggc2F5cyB0aGUgc2l6ZSBvZiAuZHluc3ltLiAgKi8KLQotCQlzaXplX3QgZW50c3ogPSBTSF9F TlRTSVpFX0hBU0ggKGVoZHIpOwotCQlkYXRhID0gZWxmX2dldGRhdGFfcmF3Y2h1bmsgKG1vZC0+ bWFpbi5lbGYsCi0JCQkJCSAgICAgb2Zmc1tpX2hhc2hdICsgZW50c3osIGVudHN6LAotCQkJCQkg ICAgIGVudHN6ID09IDQgPyBFTEZfVF9XT1JECi0JCQkJCSAgICAgOiBFTEZfVF9YV09SRCk7Ci0J CWlmIChkYXRhICE9IE5VTEwpCi0JCSAgbW9kLT5zeW1lbnRzID0gKGVudHN6ID09IDQKLQkJCQkg ID8gKihjb25zdCBHRWxmX1dvcmQgKikgZGF0YS0+ZF9idWYKLQkJCQkgIDogKihjb25zdCBHRWxm X1h3b3JkICopIGRhdGEtPmRfYnVmKTsKLQkgICAgICB9Ci0JICAgIGlmIChvZmZzW2lfZ251X2hh c2hdICE9IDAgJiYgbW9kLT5zeW1lbnRzID09IDApCi0JICAgICAgewotCQkvKiBJbiB0aGUgbmV3 IGZvcm1hdCwgd2UgY2FuIGRlcml2ZSBpdCB3aXRoIHNvbWUgd29yay4gICovCi0KLQkJY29uc3Qg c3RydWN0Ci0JCXsKLQkJICBFbGYzMl9Xb3JkIG5idWNrZXRzOwotCQkgIEVsZjMyX1dvcmQgc3lt bmR4OwotCQkgIEVsZjMyX1dvcmQgbWFza3dvcmRzOwotCQkgIEVsZjMyX1dvcmQgc2hpZnQyOwot CQl9ICpoZWFkZXI7Ci0KLQkJZGF0YSA9IGVsZl9nZXRkYXRhX3Jhd2NodW5rIChtb2QtPm1haW4u ZWxmLCBvZmZzW2lfZ251X2hhc2hdLAotCQkJCQkgICAgIHNpemVvZiAqaGVhZGVyLCBFTEZfVF9X T1JEKTsKLQkJaWYgKGRhdGEgIT0gTlVMTCkKLQkJICB7Ci0JCSAgICBoZWFkZXIgPSBkYXRhLT5k X2J1ZjsKLQkJICAgIEVsZjMyX1dvcmQgbmJ1Y2tldHMgPSBoZWFkZXItPm5idWNrZXRzOwotCQkg ICAgRWxmMzJfV29yZCBzeW1uZHggPSBoZWFkZXItPnN5bW5keDsKLQkJICAgIEdFbGZfT2ZmIGJ1 Y2tldHNfYXQgPSAob2Zmc1tpX2dudV9oYXNoXSArIHNpemVvZiAqaGVhZGVyCi0JCQkJCSAgICsg KGdlbGZfZ2V0Y2xhc3MgKG1vZC0+bWFpbi5lbGYpCi0JCQkJCSAgICAgICogc2l6ZW9mIChFbGYz Ml9Xb3JkKQotCQkJCQkgICAgICAqIGhlYWRlci0+bWFza3dvcmRzKSk7Ci0KLQkJICAgIC8vIGVs Zl9nZXRkYXRhX3Jhd2NodW5rIHRha2VzIGEgc2l6ZV90LCBtYWtlIHN1cmUgaXQKLQkJICAgIC8v IGRvZXNuJ3Qgb3ZlcmZsb3cuCi0jaWYgU0laRV9NQVggPD0gVUlOVDMyX01BWAotCQkgICAgaWYg KG5idWNrZXRzID4gU0laRV9NQVggLyBzaXplb2YgKEVsZjMyX1dvcmQpKQotCQkgICAgICBkYXRh ID0gTlVMTDsKLQkJICAgIGVsc2UKLSNlbmRpZgotCQkgICAgICBkYXRhCi0JCQkgPSBlbGZfZ2V0 ZGF0YV9yYXdjaHVuayAobW9kLT5tYWluLmVsZiwgYnVja2V0c19hdCwKLQkJCQkJCSBuYnVja2V0 cyAqIHNpemVvZiAoRWxmMzJfV29yZCksCi0JCQkJCQkgRUxGX1RfV09SRCk7Ci0JCSAgICBpZiAo ZGF0YSAhPSBOVUxMICYmIHN5bW5keCA8IG5idWNrZXRzKQotCQkgICAgICB7Ci0JCQljb25zdCBF bGYzMl9Xb3JkICpjb25zdCBidWNrZXRzID0gZGF0YS0+ZF9idWY7Ci0JCQlFbGYzMl9Xb3JkIG1h eG5keCA9IHN5bW5keDsKLQkJCWZvciAoRWxmMzJfV29yZCBidWNrZXQgPSAwOyBidWNrZXQgPCBu YnVja2V0czsgKytidWNrZXQpCi0JCQkgIGlmIChidWNrZXRzW2J1Y2tldF0gPiBtYXhuZHgpCi0J CQkgICAgbWF4bmR4ID0gYnVja2V0c1tidWNrZXRdOwotCi0JCQlHRWxmX09mZiBoYXNoYXJyX2F0 ID0gKGJ1Y2tldHNfYXQKLQkJCQkJICAgICAgICsgbmJ1Y2tldHMgKiBzaXplb2YgKEVsZjMyX1dv cmQpKTsKLQkJCWhhc2hhcnJfYXQgKz0gKG1heG5keCAtIHN5bW5keCkgKiBzaXplb2YgKEVsZjMy X1dvcmQpOwotCQkJZG8KLQkJCSAgewotCQkJICAgIGRhdGEgPSBlbGZfZ2V0ZGF0YV9yYXdjaHVu ayAobW9kLT5tYWluLmVsZiwKLQkJCQkJCQkgaGFzaGFycl9hdCwKLQkJCQkJCQkgc2l6ZW9mIChF bGYzMl9Xb3JkKSwKLQkJCQkJCQkgRUxGX1RfV09SRCk7Ci0JCQkgICAgaWYgKGRhdGEgIT0gTlVM TAotCQkJCSYmICgqKGNvbnN0IEVsZjMyX1dvcmQgKikgZGF0YS0+ZF9idWYgJiAxdSkpCi0JCQkg ICAgICB7Ci0JCQkJbW9kLT5zeW1lbnRzID0gbWF4bmR4ICsgMTsKLQkJCQlicmVhazsKLQkJCSAg ICAgIH0KLQkJCSAgICArK21heG5keDsKLQkJCSAgICBoYXNoYXJyX2F0ICs9IHNpemVvZiAoRWxm MzJfV29yZCk7Ci0JCQkgIH0gd2hpbGUgKGRhdGEgIT0gTlVMTCk7Ci0JCSAgICAgIH0KLQkJICB9 Ci0JICAgICAgfQotCSAgICBpZiAob2Zmc1tpX3N0cnRhYl0gPiBvZmZzW2lfc3ltdGFiXSAmJiBt b2QtPnN5bWVudHMgPT0gMCkKLQkgICAgICBtb2QtPnN5bWVudHMgPSAoKG9mZnNbaV9zdHJ0YWJd IC0gb2Zmc1tpX3N5bXRhYl0pCi0JCQkgICAgICAvIGdlbGZfZnNpemUgKG1vZC0+bWFpbi5lbGYs Ci0JCQkJCSAgICBFTEZfVF9TWU0sIDEsIEVWX0NVUlJFTlQpKTsKLQotCSAgICBpZiAobW9kLT5z eW1lbnRzID4gMCkKLQkgICAgICB7Ci0JCW1vZC0+c3ltZGF0YSA9IGVsZl9nZXRkYXRhX3Jhd2No dW5rIChtb2QtPm1haW4uZWxmLAotCQkJCQkJICAgICBvZmZzW2lfc3ltdGFiXSwKLQkJCQkJCSAg ICAgZ2VsZl9mc2l6ZSAobW9kLT5tYWluLmVsZiwKLQkJCQkJCQkJIEVMRl9UX1NZTSwKLQkJCQkJ CQkJIG1vZC0+c3ltZW50cywKLQkJCQkJCQkJIEVWX0NVUlJFTlQpLAotCQkJCQkJICAgICBFTEZf VF9TWU0pOwotCQlpZiAobW9kLT5zeW1kYXRhICE9IE5VTEwpCi0JCSAgewotCQkgICAgbW9kLT5z eW1zdHJkYXRhID0gZWxmX2dldGRhdGFfcmF3Y2h1bmsgKG1vZC0+bWFpbi5lbGYsCi0JCQkJCQkJ ICAgIG9mZnNbaV9zdHJ0YWJdLAotCQkJCQkJCSAgICBzdHJzeiwKLQkJCQkJCQkgICAgRUxGX1Rf QllURSk7Ci0JCSAgICBpZiAobW9kLT5zeW1zdHJkYXRhID09IE5VTEwpCi0JCSAgICAgIG1vZC0+ c3ltZGF0YSA9IE5VTEw7Ci0JCSAgfQotCQlpZiAobW9kLT5zeW1kYXRhID09IE5VTEwpCi0JCSAg bW9kLT5zeW1lcnIgPSBEV0ZMX0UgKExJQkVMRiwgZWxmX2Vycm5vICgpKTsKLQkJZWxzZQotCQkg IHsKLQkJICAgIG1vZC0+c3ltZmlsZSA9ICZtb2QtPm1haW47Ci0JCSAgICBtb2QtPnN5bWVyciA9 IERXRkxfRV9OT0VSUk9SOwotCQkgIH0KLQkgICAgICB9Ci0JICB9Ci0KIAkgIC8qIEZpcnN0IHRy eSB1bmFkanVzdGVkLCBsaWtlIEVMRiBmaWxlcyBmcm9tIGRpc2ssIHZkc28uCiAJICAgICBUaGVu IHRyeSBmb3IgYWxyZWFkeSBhZGp1c3RlZCBkeW5hbWljIHNlY3Rpb24sIGxpa2UgRUxGCiAJICAg ICBmcm9tIHJlbW90ZSBtZW1vcnkuICAqLwotCSAgdHJhbnNsYXRlX29mZnMgKDApOworCSAgdHJh bnNsYXRlX29mZnMgKDAsIG1vZCwgcGhudW0sIGFkZHJzLCBzdHJzeiwgZWhkcik7CiAJICBpZiAo bW9kLT5zeW1maWxlID09IE5VTEwpCi0JICAgIHRyYW5zbGF0ZV9vZmZzIChtb2QtPm1haW5fYmlh cyk7CisJICAgIHRyYW5zbGF0ZV9vZmZzIChtb2QtPm1haW5fYmlhcywgbW9kLCBwaG51bSwgYWRk cnMsIHN0cnN6LCBlaGRyKTsKIAogCSAgcmV0dXJuOwogCX0KLS0gCjEuOC4zLjEKCg== --===============2659856663060707791==--