From mboxrd@z Thu Jan 1 00:00:00 1970 From: Juergen Gross Subject: [PATCH v4 09/12] xenstore: make functions static Date: Mon, 5 Dec 2016 08:48:50 +0100 Message-ID: <20161205074853.13268-10-jgross@suse.com> References: <20161205074853.13268-1-jgross@suse.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta5.messagelabs.com ([195.245.231.135]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cDo1S-0003Wu-4K for xen-devel@lists.xenproject.org; Mon, 05 Dec 2016 07:49:14 +0000 In-Reply-To: <20161205074853.13268-1-jgross@suse.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: Juergen Gross , sstabellini@kernel.org, wei.liu2@citrix.com, George.Dunlap@eu.citrix.com, andrew.cooper3@citrix.com, ian.jackson@eu.citrix.com, tim@xen.org, jbeulich@suse.com List-Id: xen-devel@lists.xenproject.org TW92ZSBmdW5jdGlvbnMgdXNlZCBpbiBvbmx5IG9uZSBzb3VyY2UgdG8gdGhlIGZpbGUgd2hlcmUg dGhleSBhcmUgdXNlZAphbmQgbWFrZSB0aGVtIHN0YXRpYy4KClJlbW92ZSBzb21lIHByb3RvdHlw ZXMgZnJvbSBoZWFkZXJzIHdoaWNoIGFyZSBubyBsb25nZXIgaW4gdXNlLgoKU2lnbmVkLW9mZi1i eTogSnVlcmdlbiBHcm9zcyA8amdyb3NzQHN1c2UuY29tPgotLS0KVjQ6IGRvbid0IHJlbW92ZSBm dW5jdGlvbnMgb2YgbGlieGVuc3RvcmUgYXMgcmVxdWVzdGVkIGJ5IEFuZHJldyBDb29wZXIKLS0t CiB0b29scy94ZW5zdG9yZS94ZW5zdG9yZWRfY29yZS5jICB8ICA1NSArKysrKystLS0tLS0tLS0t LS0tCiB0b29scy94ZW5zdG9yZS94ZW5zdG9yZWRfY29yZS5oICB8ICAxNCAtLS0tLQogdG9vbHMv eGVuc3RvcmUveGVuc3RvcmVkX3dhdGNoLmMgfCAgMjcgKysrKysrKysrKwogdG9vbHMveGVuc3Rv cmUveGVuc3RvcmVkX3dhdGNoLmggfCAgIDIgLQogdG9vbHMveGVuc3RvcmUveHMuYyAgICAgICAg ICAgICAgfCAxMTEgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIHRvb2xz L3hlbnN0b3JlL3hzX2xpYi5jICAgICAgICAgIHwgMTEyIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQogNiBmaWxlcyBjaGFuZ2VkLCAxNTMgaW5zZXJ0aW9ucygrKSwgMTY4 IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3Rvb2xzL3hlbnN0b3JlL3hlbnN0b3JlZF9jb3Jl LmMgYi90b29scy94ZW5zdG9yZS94ZW5zdG9yZWRfY29yZS5jCmluZGV4IDkzOGI2NTIuLjQzOGE4 Y2UgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3hlbnN0b3JlL3hlbnN0b3JlZF9jb3JlLmMKKysrIGIvdG9v bHMveGVuc3RvcmUveGVuc3RvcmVkX2NvcmUuYwpAQCAtMzY1LDIyICszNjUsNiBAQCBzdGF0aWMg dm9pZCBpbml0aWFsaXplX2ZkcyhpbnQgc29jaywgaW50ICpwX3NvY2tfcG9sbGZkX2lkeCwKIAl9 CiB9CiAKLS8qIElzIGNoaWxkIGEgc3Vibm9kZSBvZiBwYXJlbnQsIG9yIGVxdWFsPyAqLwotYm9v bCBpc19jaGlsZChjb25zdCBjaGFyICpjaGlsZCwgY29uc3QgY2hhciAqcGFyZW50KQotewotCXVu c2lnbmVkIGludCBsZW4gPSBzdHJsZW4ocGFyZW50KTsKLQotCS8qIC8gc2hvdWxkIHJlYWxseSBi ZSAiIiBmb3IgdGhpcyBhbGdvcml0aG0gdG8gd29yaywgYnV0IHRoYXQncyBhCi0JICogdXNhYmls aXR5IG5pZ2h0bWFyZS4gKi8KLQlpZiAoc3RyZXEocGFyZW50LCAiLyIpKQotCQlyZXR1cm4gdHJ1 ZTsKLQotCWlmIChzdHJuY21wKGNoaWxkLCBwYXJlbnQsIGxlbikgIT0gMCkKLQkJcmV0dXJuIGZh bHNlOwotCi0JcmV0dXJuIGNoaWxkW2xlbl0gPT0gJy8nIHx8IGNoaWxkW2xlbl0gPT0gJ1wwJzsK LX0KLQogLyoKICAqIElmIGl0IGZhaWxzLCByZXR1cm5zIE5VTEwgYW5kIHNldHMgZXJybm8uCiAg KiBUZW1wb3JhcnkgbWVtb3J5IGFsbG9jYXRpb25zIHdpbGwgYmUgZG9uZSB3aXRoIGN0eC4KQEAg LTYzOCw2ICs2MjIsMjEgQEAgdW5zaWduZWQgaW50IGdldF9zdHJpbmdzKHN0cnVjdCBidWZmZXJl ZF9kYXRhICpkYXRhLAogCXJldHVybiBpOwogfQogCitzdGF0aWMgdm9pZCBzZW5kX2Vycm9yKHN0 cnVjdCBjb25uZWN0aW9uICpjb25uLCBpbnQgZXJyb3IpCit7CisJdW5zaWduZWQgaW50IGk7CisK Kwlmb3IgKGkgPSAwOyBlcnJvciAhPSB4c2RfZXJyb3JzW2ldLmVycm51bTsgaSsrKSB7CisJCWlm IChpID09IEFSUkFZX1NJWkUoeHNkX2Vycm9ycykgLSAxKSB7CisJCQllcHJpbnRmKCJ4ZW5zdG9y ZWQ6IGVycm9yICVpIHVudHJhbnNsYXRhYmxlIiwgZXJyb3IpOworCQkJaSA9IDA7IC8qIEVJTlZB TCAqLworCQkJYnJlYWs7CisJCX0KKwl9CisJc2VuZF9yZXBseShjb25uLCBYU19FUlJPUiwgeHNk X2Vycm9yc1tpXS5lcnJzdHJpbmcsCisJCQkgIHN0cmxlbih4c2RfZXJyb3JzW2ldLmVycnN0cmlu ZykgKyAxKTsKK30KKwogdm9pZCBzZW5kX3JlcGx5KHN0cnVjdCBjb25uZWN0aW9uICpjb25uLCBl bnVtIHhzZF9zb2NrbXNnX3R5cGUgdHlwZSwKIAkJY29uc3Qgdm9pZCAqZGF0YSwgdW5zaWduZWQg aW50IGxlbikKIHsKQEAgLTY3NSwyMSArNjc0LDYgQEAgdm9pZCBzZW5kX2FjayhzdHJ1Y3QgY29u bmVjdGlvbiAqY29ubiwgZW51bSB4c2Rfc29ja21zZ190eXBlIHR5cGUpCiAJc2VuZF9yZXBseShj b25uLCB0eXBlLCAiT0siLCBzaXplb2YoIk9LIikpOwogfQogCi12b2lkIHNlbmRfZXJyb3Ioc3Ry dWN0IGNvbm5lY3Rpb24gKmNvbm4sIGludCBlcnJvcikKLXsKLQl1bnNpZ25lZCBpbnQgaTsKLQot CWZvciAoaSA9IDA7IGVycm9yICE9IHhzZF9lcnJvcnNbaV0uZXJybnVtOyBpKyspIHsKLQkJaWYg KGkgPT0gQVJSQVlfU0laRSh4c2RfZXJyb3JzKSAtIDEpIHsKLQkJCWVwcmludGYoInhlbnN0b3Jl ZDogZXJyb3IgJWkgdW50cmFuc2xhdGFibGUiLCBlcnJvcik7Ci0JCQlpID0gMDsgCS8qIEVJTlZB TCAqLwotCQkJYnJlYWs7Ci0JCX0KLQl9Ci0Jc2VuZF9yZXBseShjb25uLCBYU19FUlJPUiwgeHNk X2Vycm9yc1tpXS5lcnJzdHJpbmcsCi0JCQkgIHN0cmxlbih4c2RfZXJyb3JzW2ldLmVycnN0cmlu ZykgKyAxKTsKLX0KLQogc3RhdGljIGJvb2wgdmFsaWRfY2hhcnMoY29uc3QgY2hhciAqbm9kZSkK IHsKIAkvKiBOb2RlcyBjYW4gaGF2ZSBsb3RzIG9mIGNyYXAuICovCkBAIC03NjEsMTUgKzc0NSw2 IEBAIGNoYXIgKmNhbm9uaWNhbGl6ZShzdHJ1Y3QgY29ubmVjdGlvbiAqY29ubiwgY29uc3QgY2hh ciAqbm9kZSkKIAlyZXR1cm4gKGNoYXIgKilub2RlOwogfQogCi1ib29sIGNoZWNrX2V2ZW50X25v ZGUoY29uc3QgY2hhciAqbm9kZSkKLXsKLQlpZiAoIW5vZGUgfHwgIXN0cnN0YXJ0cyhub2RlLCAi QCIpKSB7Ci0JCWVycm5vID0gRUlOVkFMOwotCQlyZXR1cm4gZmFsc2U7Ci0JfQotCXJldHVybiB0 cnVlOwotfQotCiBzdGF0aWMgaW50IHNlbmRfZGlyZWN0b3J5KHN0cnVjdCBjb25uZWN0aW9uICpj b25uLCBzdHJ1Y3QgYnVmZmVyZWRfZGF0YSAqaW4pCiB7CiAJc3RydWN0IG5vZGUgKm5vZGU7CmRp ZmYgLS1naXQgYS90b29scy94ZW5zdG9yZS94ZW5zdG9yZWRfY29yZS5oIGIvdG9vbHMveGVuc3Rv cmUveGVuc3RvcmVkX2NvcmUuaAppbmRleCAwODk2MjVmLi4zODcyZGFiIDEwMDY0NAotLS0gYS90 b29scy94ZW5zdG9yZS94ZW5zdG9yZWRfY29yZS5oCisrKyBiL3Rvb2xzL3hlbnN0b3JlL3hlbnN0 b3JlZF9jb3JlLmgKQEAgLTEzMiwyNCArMTMyLDE1IEBAIGNvbnN0IGNoYXIgKm9uZWFyZyhzdHJ1 Y3QgYnVmZmVyZWRfZGF0YSAqaW4pOwogdW5zaWduZWQgaW50IGdldF9zdHJpbmdzKHN0cnVjdCBi dWZmZXJlZF9kYXRhICpkYXRhLAogCQkJIGNoYXIgKnZlY1tdLCB1bnNpZ25lZCBpbnQgbnVtKTsK IAotLyogSXMgY2hpbGQgbm9kZSBhIGNoaWxkIG9yIGVxdWFsIHRvIHBhcmVudCBub2RlPyAqLwot Ym9vbCBpc19jaGlsZChjb25zdCBjaGFyICpjaGlsZCwgY29uc3QgY2hhciAqcGFyZW50KTsKLQog dm9pZCBzZW5kX3JlcGx5KHN0cnVjdCBjb25uZWN0aW9uICpjb25uLCBlbnVtIHhzZF9zb2NrbXNn X3R5cGUgdHlwZSwKIAkJY29uc3Qgdm9pZCAqZGF0YSwgdW5zaWduZWQgaW50IGxlbik7CiAKIC8q IFNvbWUgcm91dGluZXMgKHdyaXRlLCBta2RpciwgZXRjKSBqdXN0IG5lZWQgYSBub24tZXJyb3Ig cmV0dXJuICovCiB2b2lkIHNlbmRfYWNrKHN0cnVjdCBjb25uZWN0aW9uICpjb25uLCBlbnVtIHhz ZF9zb2NrbXNnX3R5cGUgdHlwZSk7CiAKLS8qIFNlbmQgYW4gZXJyb3I6IGVycm9yIGlzIHVzdWFs bHkgImVycm5vIi4gKi8KLXZvaWQgc2VuZF9lcnJvcihzdHJ1Y3QgY29ubmVjdGlvbiAqY29ubiwg aW50IGVycm9yKTsKLQogLyogQ2Fub25pY2FsaXplIHRoaXMgcGF0aCBpZiBwb3NzaWJsZS4gKi8K IGNoYXIgKmNhbm9uaWNhbGl6ZShzdHJ1Y3QgY29ubmVjdGlvbiAqY29ubiwgY29uc3QgY2hhciAq bm9kZSk7CiAKLS8qIENoZWNrIGlmIG5vZGUgaXMgYW4gZXZlbnQgbm9kZS4gKi8KLWJvb2wgY2hl Y2tfZXZlbnRfbm9kZShjb25zdCBjaGFyICpub2RlKTsKLQogLyogR2V0IHRoaXMgbm9kZSwgY2hl Y2tpbmcgd2UgaGF2ZSBwZXJtaXNzaW9ucy4gKi8KIHN0cnVjdCBub2RlICpnZXRfbm9kZShzdHJ1 Y3QgY29ubmVjdGlvbiAqY29ubiwKIAkJICAgICAgY29uc3Qgdm9pZCAqY3R4LApAQCAtMTU5LDkg KzE1MCw2IEBAIHN0cnVjdCBub2RlICpnZXRfbm9kZShzdHJ1Y3QgY29ubmVjdGlvbiAqY29ubiwK IC8qIEdldCBUREIgY29udGV4dCBmb3IgdGhpcyBjb25uZWN0aW9uICovCiBUREJfQ09OVEVYVCAq dGRiX2NvbnRleHQoc3RydWN0IGNvbm5lY3Rpb24gKmNvbm4pOwogCi0vKiBEZXN0cnVjdG9yIGZv ciB0ZGJzOiByZXF1aXJlZCBmb3IgdHJhbnNhY3Rpb24gY29kZSAqLwotaW50IGRlc3Ryb3lfdGRi KHZvaWQgKl90ZGIpOwotCiAvKiBSZXBsYWNlIHRoZSB0ZGI6IHJlcXVpcmVkIGZvciB0cmFuc2Fj dGlvbiBjb2RlICovCiBib29sIHJlcGxhY2VfdGRiKGNvbnN0IGNoYXIgKm5ld25hbWUsIFREQl9D T05URVhUICpuZXd0ZGIpOwogCkBAIC0xNzQsMTEgKzE2Miw5IEBAIGJvb2wgaXNfdmFsaWRfbm9k ZW5hbWUoY29uc3QgY2hhciAqbm9kZSk7CiAvKiBUcmFjaW5nIGluZnJhc3RydWN0dXJlLiAqLwog dm9pZCB0cmFjZV9jcmVhdGUoY29uc3Qgdm9pZCAqZGF0YSwgY29uc3QgY2hhciAqdHlwZSk7CiB2 b2lkIHRyYWNlX2Rlc3Ryb3koY29uc3Qgdm9pZCAqZGF0YSwgY29uc3QgY2hhciAqdHlwZSk7Ci12 b2lkIHRyYWNlX3dhdGNoX3RpbWVvdXQoY29uc3Qgc3RydWN0IGNvbm5lY3Rpb24gKmNvbm4sIGNv bnN0IGNoYXIgKm5vZGUsIGNvbnN0IGNoYXIgKnRva2VuKTsKIHZvaWQgdHJhY2UoY29uc3QgY2hh ciAqZm10LCAuLi4pOwogdm9pZCBkdHJhY2VfaW8oY29uc3Qgc3RydWN0IGNvbm5lY3Rpb24gKmNv bm4sIGNvbnN0IHN0cnVjdCBidWZmZXJlZF9kYXRhICpkYXRhLCBpbnQgb3V0KTsKIAotZXh0ZXJu IGludCBldmVudF9mZDsKIGV4dGVybiBpbnQgZG9tMF9kb21pZDsKIGV4dGVybiBpbnQgZG9tMF9l dmVudDsKIGV4dGVybiBpbnQgcHJpdl9kb21pZDsKZGlmZiAtLWdpdCBhL3Rvb2xzL3hlbnN0b3Jl L3hlbnN0b3JlZF93YXRjaC5jIGIvdG9vbHMveGVuc3RvcmUveGVuc3RvcmVkX3dhdGNoLmMKaW5k ZXggOGNmYzViMC4uZTExNDZlZCAxMDA2NDQKLS0tIGEvdG9vbHMveGVuc3RvcmUveGVuc3RvcmVk X3dhdGNoLmMKKysrIGIvdG9vbHMveGVuc3RvcmUveGVuc3RvcmVkX3dhdGNoLmMKQEAgLTQ3LDYg KzQ3LDMzIEBAIHN0cnVjdCB3YXRjaAogCWNoYXIgKm5vZGU7CiB9OwogCitzdGF0aWMgYm9vbCBj aGVja19ldmVudF9ub2RlKGNvbnN0IGNoYXIgKm5vZGUpCit7CisJaWYgKCFub2RlIHx8ICFzdHJz dGFydHMobm9kZSwgIkAiKSkgeworCQllcnJubyA9IEVJTlZBTDsKKwkJcmV0dXJuIGZhbHNlOwor CX0KKwlyZXR1cm4gdHJ1ZTsKK30KKworLyogSXMgY2hpbGQgYSBzdWJub2RlIG9mIHBhcmVudCwg b3IgZXF1YWw/ICovCitzdGF0aWMgYm9vbCBpc19jaGlsZChjb25zdCBjaGFyICpjaGlsZCwgY29u c3QgY2hhciAqcGFyZW50KQoreworCXVuc2lnbmVkIGludCBsZW4gPSBzdHJsZW4ocGFyZW50KTsK KworCS8qCisJICogLyBzaG91bGQgcmVhbGx5IGJlICIiIGZvciB0aGlzIGFsZ29yaXRobSB0byB3 b3JrLCBidXQgdGhhdCdzIGEKKwkgKiB1c2FiaWxpdHkgbmlnaHRtYXJlLgorCSAqLworCWlmIChz dHJlcShwYXJlbnQsICIvIikpCisJCXJldHVybiB0cnVlOworCisJaWYgKHN0cm5jbXAoY2hpbGQs IHBhcmVudCwgbGVuKSAhPSAwKQorCQlyZXR1cm4gZmFsc2U7CisKKwlyZXR1cm4gY2hpbGRbbGVu XSA9PSAnLycgfHwgY2hpbGRbbGVuXSA9PSAnXDAnOworfQorCiAvKgogICogU2VuZCBhIHdhdGNo IGV2ZW50LgogICogVGVtcG9yYXJ5IG1lbW9yeSBhbGxvY2F0aW9ucyBhcmUgZG9uZSB3aXRoIGN0 eC4KZGlmZiAtLWdpdCBhL3Rvb2xzL3hlbnN0b3JlL3hlbnN0b3JlZF93YXRjaC5oIGIvdG9vbHMv eGVuc3RvcmUveGVuc3RvcmVkX3dhdGNoLmgKaW5kZXggNTQ2YTVjMy4uYzcyZWE2YSAxMDA2NDQK LS0tIGEvdG9vbHMveGVuc3RvcmUveGVuc3RvcmVkX3dhdGNoLmgKKysrIGIvdG9vbHMveGVuc3Rv cmUveGVuc3RvcmVkX3dhdGNoLmgKQEAgLTI4LDggKzI4LDYgQEAgaW50IGRvX3Vud2F0Y2goc3Ry dWN0IGNvbm5lY3Rpb24gKmNvbm4sIHN0cnVjdCBidWZmZXJlZF9kYXRhICppbik7CiB2b2lkIGZp cmVfd2F0Y2hlcyhzdHJ1Y3QgY29ubmVjdGlvbiAqY29ubiwgdm9pZCAqdG1wLCBjb25zdCBjaGFy ICpuYW1lLAogCQkgIGJvb2wgcmVjdXJzZSk7CiAKLXZvaWQgZHVtcF93YXRjaGVzKHN0cnVjdCBj b25uZWN0aW9uICpjb25uKTsKLQogdm9pZCBjb25uX2RlbGV0ZV9hbGxfd2F0Y2hlcyhzdHJ1Y3Qg Y29ubmVjdGlvbiAqY29ubik7CiAKICNlbmRpZiAvKiBfWEVOU1RPUkVEX1dBVENIX0ggKi8KZGlm ZiAtLWdpdCBhL3Rvb2xzL3hlbnN0b3JlL3hzLmMgYi90b29scy94ZW5zdG9yZS94cy5jCmluZGV4 IDQwZTMyNzUuLmU0NjJhMjAgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3hlbnN0b3JlL3hzLmMKKysrIGIv dG9vbHMveGVuc3RvcmUveHMuYwpAQCAtMTMwNyw2ICsxMzA3LDExNyBAQCBzdGF0aWMgdm9pZCAq cmVhZF90aHJlYWQodm9pZCAqYXJnKQogfQogI2VuZGlmCiAKK2NoYXIgKmV4cGFuZGluZ19idWZm ZXJfZW5zdXJlKHN0cnVjdCBleHBhbmRpbmdfYnVmZmVyICplYnVmLCBpbnQgbWluX2F2YWlsKQor eworCWludCB3YW50OworCWNoYXIgKmdvdDsKKworCWlmIChlYnVmLT5hdmFpbCA+PSBtaW5fYXZh aWwpCisJCXJldHVybiBlYnVmLT5idWY7CisKKwlpZiAobWluX2F2YWlsID49IElOVF9NQVgvMykK KwkJcmV0dXJuIDA7CisKKwl3YW50ID0gZWJ1Zi0+YXZhaWwgKyBtaW5fYXZhaWwgKyAxMDsKKwln b3QgPSByZWFsbG9jKGVidWYtPmJ1Ziwgd2FudCk7CisJaWYgKCFnb3QpCisJCXJldHVybiAwOwor CisJZWJ1Zi0+YnVmID0gZ290OworCWVidWYtPmF2YWlsID0gd2FudDsKKwlyZXR1cm4gZWJ1Zi0+ YnVmOworfQorCitjaGFyICpzYW5pdGlzZV92YWx1ZShzdHJ1Y3QgZXhwYW5kaW5nX2J1ZmZlciAq ZWJ1ZiwKKwkJICAgICBjb25zdCBjaGFyICp2YWwsIHVuc2lnbmVkIGxlbikKK3sKKwlpbnQgdXNl ZCwgcmVtYWluLCBjOworCXVuc2lnbmVkIGNoYXIgKmlwOworCisjZGVmaW5lIEFERChjKSAoZWJ1 Zi0+YnVmW3VzZWQrK10gPSAoYykpCisjZGVmaW5lIEFEREYoZixjKSAodXNlZCArPSBzcHJpbnRm KGVidWYtPmJ1Zit1c2VkLCAoZiksIChjKSkpCisKKwlhc3NlcnQobGVuIDwgSU5UX01BWC81KTsK KworCWlwID0gKHVuc2lnbmVkIGNoYXIgKil2YWw7CisJdXNlZCA9IDA7CisJcmVtYWluID0gbGVu OworCisJaWYgKCFleHBhbmRpbmdfYnVmZmVyX2Vuc3VyZShlYnVmLCByZW1haW4gKyAxKSkKKwkJ cmV0dXJuIE5VTEw7CisKKwl3aGlsZSAocmVtYWluLS0gPiAwKSB7CisJCWM9ICppcCsrOworCisJ CWlmIChjID49ICcgJyAmJiBjIDw9ICd+JyAmJiBjICE9ICdcXCcpIHsKKwkJCUFERChjKTsKKwkJ CWNvbnRpbnVlOworCQl9CisKKwkJaWYgKCFleHBhbmRpbmdfYnVmZmVyX2Vuc3VyZShlYnVmLCB1 c2VkICsgcmVtYWluICsgNSkpCisJCQkvKiBmb3IgIjx1c2VkPlxcbm5uPHJlbWFpbj5cMCIgKi8K KwkJCXJldHVybiAwOworCisJCUFERCgnXFwnKTsKKwkJc3dpdGNoIChjKSB7CisJCWNhc2UgJ1x0 JzogIEFERCgndCcpOyAgIGJyZWFrOworCQljYXNlICdcbic6ICBBREQoJ24nKTsgICBicmVhazsK KwkJY2FzZSAnXHInOiAgQUREKCdyJyk7ICAgYnJlYWs7CisJCWNhc2UgJ1xcJzogIEFERCgnXFwn KTsgIGJyZWFrOworCQlkZWZhdWx0OgorCQkJaWYgKGMgPCAwMTApIEFEREYoIiUwM28iLCBjKTsK KwkJCWVsc2UgICAgICAgICBBRERGKCJ4JTAyeCIsIGMpOworCQl9CisJfQorCisJQUREKDApOwor CWFzc2VydCh1c2VkIDw9IGVidWYtPmF2YWlsKTsKKwlyZXR1cm4gZWJ1Zi0+YnVmOworCisjdW5k ZWYgQURECisjdW5kZWYgQURERgorfQorCit2b2lkIHVuc2FuaXRpc2VfdmFsdWUoY2hhciAqb3V0 LCB1bnNpZ25lZCAqb3V0X2xlbl9yLCBjb25zdCBjaGFyICppbikKK3sKKwljb25zdCBjaGFyICpp cDsKKwljaGFyICpvcDsKKwl1bnNpZ25lZCBjOworCWludCBuOworCisJZm9yIChpcCA9IGluLCBv cCA9IG91dDsgKGMgPSAqaXArKyk7ICpvcCsrID0gYykgeworCQlpZiAoYyA9PSAnXFwnKSB7CisJ CQljID0gKmlwKys7CisKKyNkZWZpbmUgR0VURihmKSBkbyB7CQkJCQlcCisJCQluID0gMDsJCQkJ XAorCQkJc3NjYW5mKGlwLCBmICIlbiIsICZjLCAmbik7CVwKKwkJCWlwICs9IG47CQkJXAorCQl9 IHdoaWxlICgwKQorCisJCQlzd2l0Y2ggKGMpIHsKKwkJCWNhc2UgJ3QnOiAgICAgICAgICAgICAg Yz0gJ1x0JzsgICAgICAgICAgICBicmVhazsKKwkJCWNhc2UgJ24nOiAgICAgICAgICAgICAgYz0g J1xuJzsgICAgICAgICAgICBicmVhazsKKwkJCWNhc2UgJ3InOiAgICAgICAgICAgICAgYz0gJ1xy JzsgICAgICAgICAgICBicmVhazsKKwkJCWNhc2UgJ1xcJzogICAgICAgICAgICAgYz0gJ1xcJzsg ICAgICAgICAgICBicmVhazsKKwkJCWNhc2UgJ3gnOiAgICAgICAgICAgICAgICAgICAgR0VURigi JTJ4Iik7ICBicmVhazsKKwkJCWNhc2UgJzAnOiBjYXNlICc0JzoKKwkJCWNhc2UgJzEnOiBjYXNl ICc1JzoKKwkJCWNhc2UgJzInOiBjYXNlICc2JzoKKwkJCWNhc2UgJzMnOiBjYXNlICc3JzogICAg LS1pcDsgR0VURigiJTNvIik7ICBicmVhazsKKwkJCWNhc2UgMDogICAgICAgICAgICAgICAgLS1p cDsgICAgICAgICAgICAgICBicmVhazsKKwkJCWRlZmF1bHQ6OworCQkJfQorI3VuZGVmIEdFVEYK KwkJfQorCX0KKworCSpvcCA9IDA7CisKKwlpZiAob3V0X2xlbl9yKQorCQkqb3V0X2xlbl9yID0g b3AgLSBvdXQ7Cit9CisKIC8qCiAgKiBMb2NhbCB2YXJpYWJsZXM6CiAgKiAgYy1maWxlLXN0eWxl OiAibGludXgiCmRpZmYgLS1naXQgYS90b29scy94ZW5zdG9yZS94c19saWIuYyBiL3Rvb2xzL3hl bnN0b3JlL3hzX2xpYi5jCmluZGV4IDY1NjhlODIuLjVlZjNkNmQgMTAwNjQ0Ci0tLSBhL3Rvb2xz L3hlbnN0b3JlL3hzX2xpYi5jCisrKyBiL3Rvb2xzL3hlbnN0b3JlL3hzX2xpYi5jCkBAIC0yMSw3 ICsyMSw2IEBACiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAjaW5jbHVkZSA8c3RkbGliLmg+CiAjaW5j bHVkZSA8ZXJybm8uaD4KLSNpbmNsdWRlIDxhc3NlcnQuaD4KICNpbmNsdWRlICJ4ZW5zdG9yZV9s aWIuaCIKIAogLyogQ29tbW9uIHJvdXRpbmVzIGZvciB0aGUgWGVuIHN0b3JlIGRhZW1vbiBhbmQg Y2xpZW50IGxpYnJhcnkuICovCkBAIC0xODQsMTE0ICsxODMsMyBAQCB1bnNpZ25lZCBpbnQgeHNf Y291bnRfc3RyaW5ncyhjb25zdCBjaGFyICpzdHJpbmdzLCB1bnNpZ25lZCBpbnQgbGVuKQogCiAJ cmV0dXJuIG51bTsKIH0KLQotY2hhciAqZXhwYW5kaW5nX2J1ZmZlcl9lbnN1cmUoc3RydWN0IGV4 cGFuZGluZ19idWZmZXIgKmVidWYsIGludCBtaW5fYXZhaWwpCi17Ci0JaW50IHdhbnQ7Ci0JY2hh ciAqZ290OwotCi0JaWYgKGVidWYtPmF2YWlsID49IG1pbl9hdmFpbCkKLQkJcmV0dXJuIGVidWYt PmJ1ZjsKLQotCWlmIChtaW5fYXZhaWwgPj0gSU5UX01BWC8zKQotCQlyZXR1cm4gMDsKLQotCXdh bnQgPSBlYnVmLT5hdmFpbCArIG1pbl9hdmFpbCArIDEwOwotCWdvdCA9IHJlYWxsb2MoZWJ1Zi0+ YnVmLCB3YW50KTsKLQlpZiAoIWdvdCkKLQkJcmV0dXJuIDA7Ci0KLQllYnVmLT5idWYgPSBnb3Q7 Ci0JZWJ1Zi0+YXZhaWwgPSB3YW50OwotCXJldHVybiBlYnVmLT5idWY7Ci19Ci0KLWNoYXIgKnNh bml0aXNlX3ZhbHVlKHN0cnVjdCBleHBhbmRpbmdfYnVmZmVyICplYnVmLAotCQkgICAgIGNvbnN0 IGNoYXIgKnZhbCwgdW5zaWduZWQgbGVuKQotewotCWludCB1c2VkLCByZW1haW4sIGM7Ci0JdW5z aWduZWQgY2hhciAqaXA7Ci0KLSNkZWZpbmUgQUREKGMpIChlYnVmLT5idWZbdXNlZCsrXSA9IChj KSkKLSNkZWZpbmUgQURERihmLGMpICh1c2VkICs9IHNwcmludGYoZWJ1Zi0+YnVmK3VzZWQsIChm KSwgKGMpKSkKLQotCWFzc2VydChsZW4gPCBJTlRfTUFYLzUpOwotCi0JaXAgPSAodW5zaWduZWQg Y2hhciAqKXZhbDsKLQl1c2VkID0gMDsKLQlyZW1haW4gPSBsZW47Ci0KLQlpZiAoIWV4cGFuZGlu Z19idWZmZXJfZW5zdXJlKGVidWYsIHJlbWFpbiArIDEpKQotCQlyZXR1cm4gTlVMTDsKLQotCXdo aWxlIChyZW1haW4tLSA+IDApIHsKLQkJYz0gKmlwKys7Ci0KLQkJaWYgKGMgPj0gJyAnICYmIGMg PD0gJ34nICYmIGMgIT0gJ1xcJykgewotCQkJQUREKGMpOwotCQkJY29udGludWU7Ci0JCX0KLQot CQlpZiAoIWV4cGFuZGluZ19idWZmZXJfZW5zdXJlKGVidWYsIHVzZWQgKyByZW1haW4gKyA1KSkK LQkJCS8qIGZvciAiPHVzZWQ+XFxubm48cmVtYWluPlwwIiAqLwotCQkJcmV0dXJuIDA7Ci0KLQkJ QUREKCdcXCcpOwotCQlzd2l0Y2ggKGMpIHsKLQkJY2FzZSAnXHQnOiAgQUREKCd0Jyk7ICAgYnJl YWs7Ci0JCWNhc2UgJ1xuJzogIEFERCgnbicpOyAgIGJyZWFrOwotCQljYXNlICdccic6ICBBREQo J3InKTsgICBicmVhazsKLQkJY2FzZSAnXFwnOiAgQUREKCdcXCcpOyAgYnJlYWs7Ci0JCWRlZmF1 bHQ6Ci0JCQlpZiAoYyA8IDAxMCkgQURERigiJTAzbyIsIGMpOwotCQkJZWxzZSAgICAgICAgIEFE REYoInglMDJ4IiwgYyk7Ci0JCX0KLQl9Ci0KLQlBREQoMCk7Ci0JYXNzZXJ0KHVzZWQgPD0gZWJ1 Zi0+YXZhaWwpOwotCXJldHVybiBlYnVmLT5idWY7Ci0KLSN1bmRlZiBBREQKLSN1bmRlZiBBRERG Ci19Ci0KLXZvaWQgdW5zYW5pdGlzZV92YWx1ZShjaGFyICpvdXQsIHVuc2lnbmVkICpvdXRfbGVu X3IsIGNvbnN0IGNoYXIgKmluKQotewotCWNvbnN0IGNoYXIgKmlwOwotCWNoYXIgKm9wOwotCXVu c2lnbmVkIGM7Ci0JaW50IG47Ci0KLQlmb3IgKGlwID0gaW4sIG9wID0gb3V0OyAoYyA9ICppcCsr KTsgKm9wKysgPSBjKSB7Ci0JCWlmIChjID09ICdcXCcpIHsKLQkJCWMgPSAqaXArKzsKLQotI2Rl ZmluZSBHRVRGKGYpIGRvIHsJCQkJCVwKLQkJICAgICAgICBuID0gMDsJCQkJXAotICAgICAgICAg ICAgICAgICAgICAgICAgc3NjYW5mKGlwLCBmICIlbiIsICZjLCAmbik7CVwKLQkJCWlwICs9IG47 CQkJXAotCQl9IHdoaWxlICgwKQotCi0JCQlzd2l0Y2ggKGMpIHsKLQkJCWNhc2UgJ3QnOiAgICAg ICAgICAgICAgYz0gJ1x0JzsgICAgICAgICAgICBicmVhazsKLQkJCWNhc2UgJ24nOiAgICAgICAg ICAgICAgYz0gJ1xuJzsgICAgICAgICAgICBicmVhazsKLQkJCWNhc2UgJ3InOiAgICAgICAgICAg ICAgYz0gJ1xyJzsgICAgICAgICAgICBicmVhazsKLQkJCWNhc2UgJ1xcJzogICAgICAgICAgICAg Yz0gJ1xcJzsgICAgICAgICAgICBicmVhazsKLQkJCWNhc2UgJ3gnOiAgICAgICAgICAgICAgICAg ICAgR0VURigiJTJ4Iik7ICBicmVhazsKLQkJCWNhc2UgJzAnOiBjYXNlICc0JzoKLQkJCWNhc2Ug JzEnOiBjYXNlICc1JzoKLQkJCWNhc2UgJzInOiBjYXNlICc2JzoKLQkJCWNhc2UgJzMnOiBjYXNl ICc3JzogICAgLS1pcDsgR0VURigiJTNvIik7ICBicmVhazsKLQkJCWNhc2UgMDogICAgICAgICAg ICAgICAgLS1pcDsgICAgICAgICAgICAgICBicmVhazsKLQkJCWRlZmF1bHQ6OwotCQkJfQotI3Vu ZGVmIEdFVEYKLQkJfQotCX0KLQotCSpvcCA9IDA7Ci0KLQlpZiAob3V0X2xlbl9yKQotCQkqb3V0 X2xlbl9yID0gb3AgLSBvdXQ7Ci19Ci0tIAoyLjEwLjIKCgpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZl bEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK