From mboxrd@z Thu Jan 1 00:00:00 1970 From: Juergen Gross Subject: [PATCH v3 09/12] xenstore: make functions static Date: Fri, 11 Nov 2016 09:00:07 +0100 Message-ID: <1478851210-6251-10-git-send-email-jgross@suse.com> References: <1478851210-6251-1-git-send-email-jgross@suse.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1478851210-6251-1-git-send-email-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.xen.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 eTogSnVlcmdlbiBHcm9zcyA8amdyb3NzQHN1c2UuY29tPgotLS0KIHRvb2xzL3hlbnN0b3JlL2lu Y2x1ZGUveGVuc3RvcmVfbGliLmggfCAgMTUgLS0tLS0KIHRvb2xzL3hlbnN0b3JlL3hlbnN0b3Jl X2NsaWVudC5jICAgICAgfCAxMTcgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwog dG9vbHMveGVuc3RvcmUveGVuc3RvcmVkX2NvcmUuYyAgICAgICB8ICA1NSArKysrKy0tLS0tLS0t LS0tCiB0b29scy94ZW5zdG9yZS94ZW5zdG9yZWRfY29yZS5oICAgICAgIHwgIDE0IC0tLS0KIHRv b2xzL3hlbnN0b3JlL3hlbnN0b3JlZF93YXRjaC5jICAgICAgfCAgMjcgKysrKysrKysKIHRvb2xz L3hlbnN0b3JlL3hlbnN0b3JlZF93YXRjaC5oICAgICAgfCAgIDIgLQogdG9vbHMveGVuc3RvcmUv eHNfbGliLmMgICAgICAgICAgICAgICB8IDExMiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQogNyBmaWxlcyBjaGFuZ2VkLCAxNTkgaW5zZXJ0aW9ucygrKSwgMTgzIGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL3Rvb2xzL3hlbnN0b3JlL2luY2x1ZGUveGVuc3RvcmVfbGliLmggYi90 b29scy94ZW5zdG9yZS9pbmNsdWRlL3hlbnN0b3JlX2xpYi5oCmluZGV4IDBmZmJhZTkuLjg2NjI2 MWQgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3hlbnN0b3JlL2luY2x1ZGUveGVuc3RvcmVfbGliLmgKKysr IGIvdG9vbHMveGVuc3RvcmUvaW5jbHVkZS94ZW5zdG9yZV9saWIuaApAQCAtNzYsMTkgKzc2LDQg QEAgYm9vbCB4c19wZXJtX3RvX3N0cmluZyhjb25zdCBzdHJ1Y3QgeHNfcGVybWlzc2lvbnMgKnBl cm0sCiAvKiBHaXZlbiBhIHN0cmluZyBhbmQgYSBsZW5ndGgsIGNvdW50IGhvdyBtYW55IHN0cmlu Z3MgKG51bCB0ZXJtcykuICovCiB1bnNpZ25lZCBpbnQgeHNfY291bnRfc3RyaW5ncyhjb25zdCBj aGFyICpzdHJpbmdzLCB1bnNpZ25lZCBpbnQgbGVuKTsKIAotLyogU2FuaXRpc2luZyAocXVvdGlu ZykgcG9zc2libHktYmluYXJ5IHN0cmluZ3MuICovCi1zdHJ1Y3QgZXhwYW5kaW5nX2J1ZmZlciB7 Ci0JY2hhciAqYnVmOwotCWludCBhdmFpbDsKLX07Ci0KLS8qIEVuc3VyZSB0aGF0IGdpdmVuIGV4 cGFuZGluZyBidWZmZXIgaGFzIGF0IGxlYXN0IG1pbl9hdmFpbCBjaGFyYWN0ZXJzLiAqLwotY2hh ciAqZXhwYW5kaW5nX2J1ZmZlcl9lbnN1cmUoc3RydWN0IGV4cGFuZGluZ19idWZmZXIgKiwgaW50 IG1pbl9hdmFpbCk7Ci0KLS8qIHNhbml0aXNlX3ZhbHVlKCkgbWF5IHJldHVybiBOVUxMIGlmIG1h bGxvYyBmYWlscy4gKi8KLWNoYXIgKnNhbml0aXNlX3ZhbHVlKHN0cnVjdCBleHBhbmRpbmdfYnVm ZmVyICosIGNvbnN0IGNoYXIgKnZhbCwgdW5zaWduZWQgbGVuKTsKLQotLyogKm91dF9sZW5fciBv biBlbnRyeSBpcyBpZ25vcmVkOyBvdXQgbXVzdCBiZSBhdCBsZWFzdCBzdHJsZW4oaW4pKzEgYnl0 ZXMuICovCi12b2lkIHVuc2FuaXRpc2VfdmFsdWUoY2hhciAqb3V0LCB1bnNpZ25lZCAqb3V0X2xl bl9yLCBjb25zdCBjaGFyICppbik7Ci0KICNlbmRpZiAvKiBYRU5TVE9SRV9MSUJfSCAqLwpkaWZm IC0tZ2l0IGEvdG9vbHMveGVuc3RvcmUveGVuc3RvcmVfY2xpZW50LmMgYi90b29scy94ZW5zdG9y ZS94ZW5zdG9yZV9jbGllbnQuYwppbmRleCAzZDE0ZDM3Li5kZmE3NWE3IDEwMDY0NAotLS0gYS90 b29scy94ZW5zdG9yZS94ZW5zdG9yZV9jbGllbnQuYworKysgYi90b29scy94ZW5zdG9yZS94ZW5z dG9yZV9jbGllbnQuYwpAQCAtMTAsNiArMTAsNyBAQAogCiAjaW5jbHVkZSA8ZXJyLmg+CiAjaW5j bHVkZSA8ZXJybm8uaD4KKyNpbmNsdWRlIDxhc3NlcnQuaD4KICNpbmNsdWRlIDxmY250bC5oPgog I2luY2x1ZGUgPGdldG9wdC5oPgogI2luY2x1ZGUgPHN0ZGFyZy5oPgpAQCAtMzgsMTIgKzM5LDEy OCBAQCBlbnVtIG1vZGUgewogICAgIE1PREVfd2F0Y2gsCiB9OwogCisvKiBTYW5pdGlzaW5nIChx dW90aW5nKSBwb3NzaWJseS1iaW5hcnkgc3RyaW5ncy4gKi8KK3N0cnVjdCBleHBhbmRpbmdfYnVm ZmVyIHsKKwljaGFyICpidWY7CisJaW50IGF2YWlsOworfTsKKwogc3RhdGljIGNoYXIgKm91dHB1 dF9idWYgPSBOVUxMOwogc3RhdGljIGludCBvdXRwdXRfcG9zID0gMDsKIHN0YXRpYyBzdHJ1Y3Qg ZXhwYW5kaW5nX2J1ZmZlciBlYnVmOwogCiBzdGF0aWMgaW50IG91dHB1dF9zaXplID0gMDsKIAor c3RhdGljIGNoYXIgKmV4cGFuZGluZ19idWZmZXJfZW5zdXJlKHN0cnVjdCBleHBhbmRpbmdfYnVm ZmVyICplYnVmLCBpbnQgbWluX2F2YWlsKQoreworCWludCB3YW50OworCWNoYXIgKmdvdDsKKwor CWlmIChlYnVmLT5hdmFpbCA+PSBtaW5fYXZhaWwpCisJCXJldHVybiBlYnVmLT5idWY7CisKKwlp ZiAobWluX2F2YWlsID49IElOVF9NQVgvMykKKwkJcmV0dXJuIDA7CisKKwl3YW50ID0gZWJ1Zi0+ YXZhaWwgKyBtaW5fYXZhaWwgKyAxMDsKKwlnb3QgPSByZWFsbG9jKGVidWYtPmJ1Ziwgd2FudCk7 CisJaWYgKCFnb3QpCisJCXJldHVybiAwOworCisJZWJ1Zi0+YnVmID0gZ290OworCWVidWYtPmF2 YWlsID0gd2FudDsKKwlyZXR1cm4gZWJ1Zi0+YnVmOworfQorCitzdGF0aWMgY2hhciAqc2FuaXRp c2VfdmFsdWUoc3RydWN0IGV4cGFuZGluZ19idWZmZXIgKmVidWYsCisJCQkgICAgY29uc3QgY2hh ciAqdmFsLCB1bnNpZ25lZCBsZW4pCit7CisJaW50IHVzZWQsIHJlbWFpbiwgYzsKKwl1bnNpZ25l ZCBjaGFyICppcDsKKworI2RlZmluZSBBREQoYykgKGVidWYtPmJ1Zlt1c2VkKytdID0gKGMpKQor I2RlZmluZSBBRERGKGYsYykgKHVzZWQgKz0gc3ByaW50ZihlYnVmLT5idWYrdXNlZCwgKGYpLCAo YykpKQorCisJYXNzZXJ0KGxlbiA8IElOVF9NQVgvNSk7CisKKwlpcCA9ICh1bnNpZ25lZCBjaGFy ICopdmFsOworCXVzZWQgPSAwOworCXJlbWFpbiA9IGxlbjsKKworCWlmICghZXhwYW5kaW5nX2J1 ZmZlcl9lbnN1cmUoZWJ1ZiwgcmVtYWluICsgMSkpCisJCXJldHVybiBOVUxMOworCisJd2hpbGUg KHJlbWFpbi0tID4gMCkgeworCQljPSAqaXArKzsKKworCQlpZiAoYyA+PSAnICcgJiYgYyA8PSAn ficgJiYgYyAhPSAnXFwnKSB7CisJCQlBREQoYyk7CisJCQljb250aW51ZTsKKwkJfQorCisJCWlm ICghZXhwYW5kaW5nX2J1ZmZlcl9lbnN1cmUoZWJ1ZiwgdXNlZCArIHJlbWFpbiArIDUpKQorCQkJ LyogZm9yICI8dXNlZD5cXG5ubjxyZW1haW4+XDAiICovCisJCQlyZXR1cm4gMDsKKworCQlBREQo J1xcJyk7CisJCXN3aXRjaCAoYykgeworCQljYXNlICdcdCc6ICBBREQoJ3QnKTsgICBicmVhazsK KwkJY2FzZSAnXG4nOiAgQUREKCduJyk7ICAgYnJlYWs7CisJCWNhc2UgJ1xyJzogIEFERCgncicp OyAgIGJyZWFrOworCQljYXNlICdcXCc6ICBBREQoJ1xcJyk7ICBicmVhazsKKwkJZGVmYXVsdDoK KwkJCWlmIChjIDwgMDEwKSBBRERGKCIlMDNvIiwgYyk7CisJCQllbHNlICAgICAgICAgQURERigi eCUwMngiLCBjKTsKKwkJfQorCX0KKworCUFERCgwKTsKKwlhc3NlcnQodXNlZCA8PSBlYnVmLT5h dmFpbCk7CisJcmV0dXJuIGVidWYtPmJ1ZjsKKworI3VuZGVmIEFERAorI3VuZGVmIEFEREYKK30K Kworc3RhdGljIHZvaWQgdW5zYW5pdGlzZV92YWx1ZShjaGFyICpvdXQsIHVuc2lnbmVkICpvdXRf bGVuX3IsIGNvbnN0IGNoYXIgKmluKQoreworCWNvbnN0IGNoYXIgKmlwOworCWNoYXIgKm9wOwor CXVuc2lnbmVkIGM7CisJaW50IG47CisKKwlmb3IgKGlwID0gaW4sIG9wID0gb3V0OyAoYyA9ICpp cCsrKTsgKm9wKysgPSBjKSB7CisJCWlmIChjID09ICdcXCcpIHsKKwkJCWMgPSAqaXArKzsKKwor I2RlZmluZSBHRVRGKGYpIGRvIHsJCQkJCVwKKwkJCW4gPSAwOwkJCQlcCisJCQlzc2NhbmYoaXAs IGYgIiVuIiwgJmMsICZuKTsJXAorCQkJaXAgKz0gbjsJCQlcCisJCX0gd2hpbGUgKDApCisKKwkJ CXN3aXRjaCAoYykgeworCQkJY2FzZSAndCc6ICAgICAgICAgICAgICBjPSAnXHQnOyAgICAgICAg ICAgIGJyZWFrOworCQkJY2FzZSAnbic6ICAgICAgICAgICAgICBjPSAnXG4nOyAgICAgICAgICAg IGJyZWFrOworCQkJY2FzZSAncic6ICAgICAgICAgICAgICBjPSAnXHInOyAgICAgICAgICAgIGJy ZWFrOworCQkJY2FzZSAnXFwnOiAgICAgICAgICAgICBjPSAnXFwnOyAgICAgICAgICAgIGJyZWFr OworCQkJY2FzZSAneCc6ICAgICAgICAgICAgICAgICAgICBHRVRGKCIlMngiKTsgIGJyZWFrOwor CQkJY2FzZSAnMCc6IGNhc2UgJzQnOgorCQkJY2FzZSAnMSc6IGNhc2UgJzUnOgorCQkJY2FzZSAn Mic6IGNhc2UgJzYnOgorCQkJY2FzZSAnMyc6IGNhc2UgJzcnOiAgICAtLWlwOyBHRVRGKCIlM28i KTsgIGJyZWFrOworCQkJY2FzZSAwOiAgICAgICAgICAgICAgICAtLWlwOyAgICAgICAgICAgICAg IGJyZWFrOworCQkJZGVmYXVsdDo7CisJCQl9CisjdW5kZWYgR0VURgorCQl9CisJfQorCisJKm9w ID0gMDsKKworCWlmIChvdXRfbGVuX3IpCisJCSpvdXRfbGVuX3IgPSBvcCAtIG91dDsKK30KIHN0 YXRpYyB2b2lkCiBvdXRwdXQoY29uc3QgY2hhciAqZm10LCAuLi4pIHsKICAgICB2YV9saXN0IGFw OwpkaWZmIC0tZ2l0IGEvdG9vbHMveGVuc3RvcmUveGVuc3RvcmVkX2NvcmUuYyBiL3Rvb2xzL3hl bnN0b3JlL3hlbnN0b3JlZF9jb3JlLmMKaW5kZXggZjVlYzU4NS4uM2ZhYWI2ZSAxMDA2NDQKLS0t IGEvdG9vbHMveGVuc3RvcmUveGVuc3RvcmVkX2NvcmUuYworKysgYi90b29scy94ZW5zdG9yZS94 ZW5zdG9yZWRfY29yZS5jCkBAIC0zNjUsMjIgKzM2NSw2IEBAIHN0YXRpYyB2b2lkIGluaXRpYWxp emVfZmRzKGludCBzb2NrLCBpbnQgKnBfc29ja19wb2xsZmRfaWR4LAogCX0KIH0KIAotLyogSXMg Y2hpbGQgYSBzdWJub2RlIG9mIHBhcmVudCwgb3IgZXF1YWw/ICovCi1ib29sIGlzX2NoaWxkKGNv bnN0IGNoYXIgKmNoaWxkLCBjb25zdCBjaGFyICpwYXJlbnQpCi17Ci0JdW5zaWduZWQgaW50IGxl biA9IHN0cmxlbihwYXJlbnQpOwotCi0JLyogLyBzaG91bGQgcmVhbGx5IGJlICIiIGZvciB0aGlz IGFsZ29yaXRobSB0byB3b3JrLCBidXQgdGhhdCdzIGEKLQkgKiB1c2FiaWxpdHkgbmlnaHRtYXJl LiAqLwotCWlmIChzdHJlcShwYXJlbnQsICIvIikpCi0JCXJldHVybiB0cnVlOwotCi0JaWYgKHN0 cm5jbXAoY2hpbGQsIHBhcmVudCwgbGVuKSAhPSAwKQotCQlyZXR1cm4gZmFsc2U7Ci0KLQlyZXR1 cm4gY2hpbGRbbGVuXSA9PSAnLycgfHwgY2hpbGRbbGVuXSA9PSAnXDAnOwotfQotCiAvKgogICog SWYgaXQgZmFpbHMsIHJldHVybnMgTlVMTCBhbmQgc2V0cyBlcnJuby4KICAqIFRlbXBvcmFyeSBt ZW1vcnkgYWxsb2NhdGlvbnMgd2lsbCBiZSBkb25lIHdpdGggY3R4LgpAQCAtNjM4LDYgKzYyMiwy MSBAQCB1bnNpZ25lZCBpbnQgZ2V0X3N0cmluZ3Moc3RydWN0IGJ1ZmZlcmVkX2RhdGEgKmRhdGEs CiAJcmV0dXJuIGk7CiB9CiAKK3N0YXRpYyB2b2lkIHNlbmRfZXJyb3Ioc3RydWN0IGNvbm5lY3Rp b24gKmNvbm4sIGludCBlcnJvcikKK3sKKwl1bnNpZ25lZCBpbnQgaTsKKworCWZvciAoaSA9IDA7 IGVycm9yICE9IHhzZF9lcnJvcnNbaV0uZXJybnVtOyBpKyspIHsKKwkJaWYgKGkgPT0gQVJSQVlf U0laRSh4c2RfZXJyb3JzKSAtIDEpIHsKKwkJCWVwcmludGYoInhlbnN0b3JlZDogZXJyb3IgJWkg dW50cmFuc2xhdGFibGUiLCBlcnJvcik7CisJCQlpID0gMDsgLyogRUlOVkFMICovCisJCQlicmVh azsKKwkJfQorCX0KKwlzZW5kX3JlcGx5KGNvbm4sIFhTX0VSUk9SLCB4c2RfZXJyb3JzW2ldLmVy cnN0cmluZywKKwkJCSAgc3RybGVuKHhzZF9lcnJvcnNbaV0uZXJyc3RyaW5nKSArIDEpOworfQor CiB2b2lkIHNlbmRfcmVwbHkoc3RydWN0IGNvbm5lY3Rpb24gKmNvbm4sIGVudW0geHNkX3NvY2tt c2dfdHlwZSB0eXBlLAogCQljb25zdCB2b2lkICpkYXRhLCB1bnNpZ25lZCBpbnQgbGVuKQogewpA QCAtNjc1LDIxICs2NzQsNiBAQCB2b2lkIHNlbmRfYWNrKHN0cnVjdCBjb25uZWN0aW9uICpjb25u LCBlbnVtIHhzZF9zb2NrbXNnX3R5cGUgdHlwZSkKIAlzZW5kX3JlcGx5KGNvbm4sIHR5cGUsICJP SyIsIHNpemVvZigiT0siKSk7CiB9CiAKLXZvaWQgc2VuZF9lcnJvcihzdHJ1Y3QgY29ubmVjdGlv biAqY29ubiwgaW50IGVycm9yKQotewotCXVuc2lnbmVkIGludCBpOwotCi0JZm9yIChpID0gMDsg ZXJyb3IgIT0geHNkX2Vycm9yc1tpXS5lcnJudW07IGkrKykgewotCQlpZiAoaSA9PSBBUlJBWV9T SVpFKHhzZF9lcnJvcnMpIC0gMSkgewotCQkJZXByaW50ZigieGVuc3RvcmVkOiBlcnJvciAlaSB1 bnRyYW5zbGF0YWJsZSIsIGVycm9yKTsKLQkJCWkgPSAwOyAJLyogRUlOVkFMICovCi0JCQlicmVh azsKLQkJfQotCX0KLQlzZW5kX3JlcGx5KGNvbm4sIFhTX0VSUk9SLCB4c2RfZXJyb3JzW2ldLmVy cnN0cmluZywKLQkJCSAgc3RybGVuKHhzZF9lcnJvcnNbaV0uZXJyc3RyaW5nKSArIDEpOwotfQot CiBzdGF0aWMgYm9vbCB2YWxpZF9jaGFycyhjb25zdCBjaGFyICpub2RlKQogewogCS8qIE5vZGVz IGNhbiBoYXZlIGxvdHMgb2YgY3JhcC4gKi8KQEAgLTc2MSwxNSArNzQ1LDYgQEAgY2hhciAqY2Fu b25pY2FsaXplKHN0cnVjdCBjb25uZWN0aW9uICpjb25uLCBjb25zdCBjaGFyICpub2RlKQogCXJl dHVybiAoY2hhciAqKW5vZGU7CiB9CiAKLWJvb2wgY2hlY2tfZXZlbnRfbm9kZShjb25zdCBjaGFy ICpub2RlKQotewotCWlmICghbm9kZSB8fCAhc3Ryc3RhcnRzKG5vZGUsICJAIikpIHsKLQkJZXJy bm8gPSBFSU5WQUw7Ci0JCXJldHVybiBmYWxzZTsKLQl9Ci0JcmV0dXJuIHRydWU7Ci19Ci0KIHN0 YXRpYyBpbnQgc2VuZF9kaXJlY3Rvcnkoc3RydWN0IGNvbm5lY3Rpb24gKmNvbm4sIHN0cnVjdCBi dWZmZXJlZF9kYXRhICppbikKIHsKIAlzdHJ1Y3Qgbm9kZSAqbm9kZTsKZGlmZiAtLWdpdCBhL3Rv b2xzL3hlbnN0b3JlL3hlbnN0b3JlZF9jb3JlLmggYi90b29scy94ZW5zdG9yZS94ZW5zdG9yZWRf Y29yZS5oCmluZGV4IDA4OTYyNWYuLjM4NzJkYWIgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3hlbnN0b3Jl L3hlbnN0b3JlZF9jb3JlLmgKKysrIGIvdG9vbHMveGVuc3RvcmUveGVuc3RvcmVkX2NvcmUuaApA QCAtMTMyLDI0ICsxMzIsMTUgQEAgY29uc3QgY2hhciAqb25lYXJnKHN0cnVjdCBidWZmZXJlZF9k YXRhICppbik7CiB1bnNpZ25lZCBpbnQgZ2V0X3N0cmluZ3Moc3RydWN0IGJ1ZmZlcmVkX2RhdGEg KmRhdGEsCiAJCQkgY2hhciAqdmVjW10sIHVuc2lnbmVkIGludCBudW0pOwogCi0vKiBJcyBjaGls ZCBub2RlIGEgY2hpbGQgb3IgZXF1YWwgdG8gcGFyZW50IG5vZGU/ICovCi1ib29sIGlzX2NoaWxk KGNvbnN0IGNoYXIgKmNoaWxkLCBjb25zdCBjaGFyICpwYXJlbnQpOwotCiB2b2lkIHNlbmRfcmVw bHkoc3RydWN0IGNvbm5lY3Rpb24gKmNvbm4sIGVudW0geHNkX3NvY2ttc2dfdHlwZSB0eXBlLAog CQljb25zdCB2b2lkICpkYXRhLCB1bnNpZ25lZCBpbnQgbGVuKTsKIAogLyogU29tZSByb3V0aW5l cyAod3JpdGUsIG1rZGlyLCBldGMpIGp1c3QgbmVlZCBhIG5vbi1lcnJvciByZXR1cm4gKi8KIHZv aWQgc2VuZF9hY2soc3RydWN0IGNvbm5lY3Rpb24gKmNvbm4sIGVudW0geHNkX3NvY2ttc2dfdHlw ZSB0eXBlKTsKIAotLyogU2VuZCBhbiBlcnJvcjogZXJyb3IgaXMgdXN1YWxseSAiZXJybm8iLiAq Lwotdm9pZCBzZW5kX2Vycm9yKHN0cnVjdCBjb25uZWN0aW9uICpjb25uLCBpbnQgZXJyb3IpOwot CiAvKiBDYW5vbmljYWxpemUgdGhpcyBwYXRoIGlmIHBvc3NpYmxlLiAqLwogY2hhciAqY2Fub25p Y2FsaXplKHN0cnVjdCBjb25uZWN0aW9uICpjb25uLCBjb25zdCBjaGFyICpub2RlKTsKIAotLyog Q2hlY2sgaWYgbm9kZSBpcyBhbiBldmVudCBub2RlLiAqLwotYm9vbCBjaGVja19ldmVudF9ub2Rl KGNvbnN0IGNoYXIgKm5vZGUpOwotCiAvKiBHZXQgdGhpcyBub2RlLCBjaGVja2luZyB3ZSBoYXZl IHBlcm1pc3Npb25zLiAqLwogc3RydWN0IG5vZGUgKmdldF9ub2RlKHN0cnVjdCBjb25uZWN0aW9u ICpjb25uLAogCQkgICAgICBjb25zdCB2b2lkICpjdHgsCkBAIC0xNTksOSArMTUwLDYgQEAgc3Ry dWN0IG5vZGUgKmdldF9ub2RlKHN0cnVjdCBjb25uZWN0aW9uICpjb25uLAogLyogR2V0IFREQiBj b250ZXh0IGZvciB0aGlzIGNvbm5lY3Rpb24gKi8KIFREQl9DT05URVhUICp0ZGJfY29udGV4dChz dHJ1Y3QgY29ubmVjdGlvbiAqY29ubik7CiAKLS8qIERlc3RydWN0b3IgZm9yIHRkYnM6IHJlcXVp cmVkIGZvciB0cmFuc2FjdGlvbiBjb2RlICovCi1pbnQgZGVzdHJveV90ZGIodm9pZCAqX3RkYik7 Ci0KIC8qIFJlcGxhY2UgdGhlIHRkYjogcmVxdWlyZWQgZm9yIHRyYW5zYWN0aW9uIGNvZGUgKi8K IGJvb2wgcmVwbGFjZV90ZGIoY29uc3QgY2hhciAqbmV3bmFtZSwgVERCX0NPTlRFWFQgKm5ld3Rk Yik7CiAKQEAgLTE3NCwxMSArMTYyLDkgQEAgYm9vbCBpc192YWxpZF9ub2RlbmFtZShjb25zdCBj aGFyICpub2RlKTsKIC8qIFRyYWNpbmcgaW5mcmFzdHJ1Y3R1cmUuICovCiB2b2lkIHRyYWNlX2Ny ZWF0ZShjb25zdCB2b2lkICpkYXRhLCBjb25zdCBjaGFyICp0eXBlKTsKIHZvaWQgdHJhY2VfZGVz dHJveShjb25zdCB2b2lkICpkYXRhLCBjb25zdCBjaGFyICp0eXBlKTsKLXZvaWQgdHJhY2Vfd2F0 Y2hfdGltZW91dChjb25zdCBzdHJ1Y3QgY29ubmVjdGlvbiAqY29ubiwgY29uc3QgY2hhciAqbm9k ZSwgY29uc3QgY2hhciAqdG9rZW4pOwogdm9pZCB0cmFjZShjb25zdCBjaGFyICpmbXQsIC4uLik7 CiB2b2lkIGR0cmFjZV9pbyhjb25zdCBzdHJ1Y3QgY29ubmVjdGlvbiAqY29ubiwgY29uc3Qgc3Ry dWN0IGJ1ZmZlcmVkX2RhdGEgKmRhdGEsIGludCBvdXQpOwogCi1leHRlcm4gaW50IGV2ZW50X2Zk OwogZXh0ZXJuIGludCBkb20wX2RvbWlkOwogZXh0ZXJuIGludCBkb20wX2V2ZW50OwogZXh0ZXJu IGludCBwcml2X2RvbWlkOwpkaWZmIC0tZ2l0IGEvdG9vbHMveGVuc3RvcmUveGVuc3RvcmVkX3dh dGNoLmMgYi90b29scy94ZW5zdG9yZS94ZW5zdG9yZWRfd2F0Y2guYwppbmRleCA4Y2ZjNWIwLi5l MTE0NmVkIDEwMDY0NAotLS0gYS90b29scy94ZW5zdG9yZS94ZW5zdG9yZWRfd2F0Y2guYworKysg Yi90b29scy94ZW5zdG9yZS94ZW5zdG9yZWRfd2F0Y2guYwpAQCAtNDcsNiArNDcsMzMgQEAgc3Ry dWN0IHdhdGNoCiAJY2hhciAqbm9kZTsKIH07CiAKK3N0YXRpYyBib29sIGNoZWNrX2V2ZW50X25v ZGUoY29uc3QgY2hhciAqbm9kZSkKK3sKKwlpZiAoIW5vZGUgfHwgIXN0cnN0YXJ0cyhub2RlLCAi QCIpKSB7CisJCWVycm5vID0gRUlOVkFMOworCQlyZXR1cm4gZmFsc2U7CisJfQorCXJldHVybiB0 cnVlOworfQorCisvKiBJcyBjaGlsZCBhIHN1Ym5vZGUgb2YgcGFyZW50LCBvciBlcXVhbD8gKi8K K3N0YXRpYyBib29sIGlzX2NoaWxkKGNvbnN0IGNoYXIgKmNoaWxkLCBjb25zdCBjaGFyICpwYXJl bnQpCit7CisJdW5zaWduZWQgaW50IGxlbiA9IHN0cmxlbihwYXJlbnQpOworCisJLyoKKwkgKiAv IHNob3VsZCByZWFsbHkgYmUgIiIgZm9yIHRoaXMgYWxnb3JpdGhtIHRvIHdvcmssIGJ1dCB0aGF0 J3MgYQorCSAqIHVzYWJpbGl0eSBuaWdodG1hcmUuCisJICovCisJaWYgKHN0cmVxKHBhcmVudCwg Ii8iKSkKKwkJcmV0dXJuIHRydWU7CisKKwlpZiAoc3RybmNtcChjaGlsZCwgcGFyZW50LCBsZW4p ICE9IDApCisJCXJldHVybiBmYWxzZTsKKworCXJldHVybiBjaGlsZFtsZW5dID09ICcvJyB8fCBj aGlsZFtsZW5dID09ICdcMCc7Cit9CisKIC8qCiAgKiBTZW5kIGEgd2F0Y2ggZXZlbnQuCiAgKiBU ZW1wb3JhcnkgbWVtb3J5IGFsbG9jYXRpb25zIGFyZSBkb25lIHdpdGggY3R4LgpkaWZmIC0tZ2l0 IGEvdG9vbHMveGVuc3RvcmUveGVuc3RvcmVkX3dhdGNoLmggYi90b29scy94ZW5zdG9yZS94ZW5z dG9yZWRfd2F0Y2guaAppbmRleCA1NDZhNWMzLi5jNzJlYTZhIDEwMDY0NAotLS0gYS90b29scy94 ZW5zdG9yZS94ZW5zdG9yZWRfd2F0Y2guaAorKysgYi90b29scy94ZW5zdG9yZS94ZW5zdG9yZWRf d2F0Y2guaApAQCAtMjgsOCArMjgsNiBAQCBpbnQgZG9fdW53YXRjaChzdHJ1Y3QgY29ubmVjdGlv biAqY29ubiwgc3RydWN0IGJ1ZmZlcmVkX2RhdGEgKmluKTsKIHZvaWQgZmlyZV93YXRjaGVzKHN0 cnVjdCBjb25uZWN0aW9uICpjb25uLCB2b2lkICp0bXAsIGNvbnN0IGNoYXIgKm5hbWUsCiAJCSAg Ym9vbCByZWN1cnNlKTsKIAotdm9pZCBkdW1wX3dhdGNoZXMoc3RydWN0IGNvbm5lY3Rpb24gKmNv bm4pOwotCiB2b2lkIGNvbm5fZGVsZXRlX2FsbF93YXRjaGVzKHN0cnVjdCBjb25uZWN0aW9uICpj b25uKTsKIAogI2VuZGlmIC8qIF9YRU5TVE9SRURfV0FUQ0hfSCAqLwpkaWZmIC0tZ2l0IGEvdG9v bHMveGVuc3RvcmUveHNfbGliLmMgYi90b29scy94ZW5zdG9yZS94c19saWIuYwppbmRleCA2NTY4 ZTgyLi41ZWYzZDZkIDEwMDY0NAotLS0gYS90b29scy94ZW5zdG9yZS94c19saWIuYworKysgYi90 b29scy94ZW5zdG9yZS94c19saWIuYwpAQCAtMjEsNyArMjEsNiBAQAogI2luY2x1ZGUgPHN0cmlu Zy5oPgogI2luY2x1ZGUgPHN0ZGxpYi5oPgogI2luY2x1ZGUgPGVycm5vLmg+Ci0jaW5jbHVkZSA8 YXNzZXJ0Lmg+CiAjaW5jbHVkZSAieGVuc3RvcmVfbGliLmgiCiAKIC8qIENvbW1vbiByb3V0aW5l cyBmb3IgdGhlIFhlbiBzdG9yZSBkYWVtb24gYW5kIGNsaWVudCBsaWJyYXJ5LiAqLwpAQCAtMTg0 LDExNCArMTgzLDMgQEAgdW5zaWduZWQgaW50IHhzX2NvdW50X3N0cmluZ3MoY29uc3QgY2hhciAq c3RyaW5ncywgdW5zaWduZWQgaW50IGxlbikKIAogCXJldHVybiBudW07CiB9Ci0KLWNoYXIgKmV4 cGFuZGluZ19idWZmZXJfZW5zdXJlKHN0cnVjdCBleHBhbmRpbmdfYnVmZmVyICplYnVmLCBpbnQg bWluX2F2YWlsKQotewotCWludCB3YW50OwotCWNoYXIgKmdvdDsKLQotCWlmIChlYnVmLT5hdmFp bCA+PSBtaW5fYXZhaWwpCi0JCXJldHVybiBlYnVmLT5idWY7Ci0KLQlpZiAobWluX2F2YWlsID49 IElOVF9NQVgvMykKLQkJcmV0dXJuIDA7Ci0KLQl3YW50ID0gZWJ1Zi0+YXZhaWwgKyBtaW5fYXZh aWwgKyAxMDsKLQlnb3QgPSByZWFsbG9jKGVidWYtPmJ1Ziwgd2FudCk7Ci0JaWYgKCFnb3QpCi0J CXJldHVybiAwOwotCi0JZWJ1Zi0+YnVmID0gZ290OwotCWVidWYtPmF2YWlsID0gd2FudDsKLQly ZXR1cm4gZWJ1Zi0+YnVmOwotfQotCi1jaGFyICpzYW5pdGlzZV92YWx1ZShzdHJ1Y3QgZXhwYW5k aW5nX2J1ZmZlciAqZWJ1ZiwKLQkJICAgICBjb25zdCBjaGFyICp2YWwsIHVuc2lnbmVkIGxlbikK LXsKLQlpbnQgdXNlZCwgcmVtYWluLCBjOwotCXVuc2lnbmVkIGNoYXIgKmlwOwotCi0jZGVmaW5l IEFERChjKSAoZWJ1Zi0+YnVmW3VzZWQrK10gPSAoYykpCi0jZGVmaW5lIEFEREYoZixjKSAodXNl ZCArPSBzcHJpbnRmKGVidWYtPmJ1Zit1c2VkLCAoZiksIChjKSkpCi0KLQlhc3NlcnQobGVuIDwg SU5UX01BWC81KTsKLQotCWlwID0gKHVuc2lnbmVkIGNoYXIgKil2YWw7Ci0JdXNlZCA9IDA7Ci0J cmVtYWluID0gbGVuOwotCi0JaWYgKCFleHBhbmRpbmdfYnVmZmVyX2Vuc3VyZShlYnVmLCByZW1h aW4gKyAxKSkKLQkJcmV0dXJuIE5VTEw7Ci0KLQl3aGlsZSAocmVtYWluLS0gPiAwKSB7Ci0JCWM9 ICppcCsrOwotCi0JCWlmIChjID49ICcgJyAmJiBjIDw9ICd+JyAmJiBjICE9ICdcXCcpIHsKLQkJ CUFERChjKTsKLQkJCWNvbnRpbnVlOwotCQl9Ci0KLQkJaWYgKCFleHBhbmRpbmdfYnVmZmVyX2Vu c3VyZShlYnVmLCB1c2VkICsgcmVtYWluICsgNSkpCi0JCQkvKiBmb3IgIjx1c2VkPlxcbm5uPHJl bWFpbj5cMCIgKi8KLQkJCXJldHVybiAwOwotCi0JCUFERCgnXFwnKTsKLQkJc3dpdGNoIChjKSB7 Ci0JCWNhc2UgJ1x0JzogIEFERCgndCcpOyAgIGJyZWFrOwotCQljYXNlICdcbic6ICBBREQoJ24n KTsgICBicmVhazsKLQkJY2FzZSAnXHInOiAgQUREKCdyJyk7ICAgYnJlYWs7Ci0JCWNhc2UgJ1xc JzogIEFERCgnXFwnKTsgIGJyZWFrOwotCQlkZWZhdWx0OgotCQkJaWYgKGMgPCAwMTApIEFEREYo IiUwM28iLCBjKTsKLQkJCWVsc2UgICAgICAgICBBRERGKCJ4JTAyeCIsIGMpOwotCQl9Ci0JfQot Ci0JQUREKDApOwotCWFzc2VydCh1c2VkIDw9IGVidWYtPmF2YWlsKTsKLQlyZXR1cm4gZWJ1Zi0+ YnVmOwotCi0jdW5kZWYgQURECi0jdW5kZWYgQURERgotfQotCi12b2lkIHVuc2FuaXRpc2VfdmFs dWUoY2hhciAqb3V0LCB1bnNpZ25lZCAqb3V0X2xlbl9yLCBjb25zdCBjaGFyICppbikKLXsKLQlj b25zdCBjaGFyICppcDsKLQljaGFyICpvcDsKLQl1bnNpZ25lZCBjOwotCWludCBuOwotCi0JZm9y IChpcCA9IGluLCBvcCA9IG91dDsgKGMgPSAqaXArKyk7ICpvcCsrID0gYykgewotCQlpZiAoYyA9 PSAnXFwnKSB7Ci0JCQljID0gKmlwKys7Ci0KLSNkZWZpbmUgR0VURihmKSBkbyB7CQkJCQlcCi0J CSAgICAgICAgbiA9IDA7CQkJCVwKLSAgICAgICAgICAgICAgICAgICAgICAgIHNzY2FuZihpcCwg ZiAiJW4iLCAmYywgJm4pOwlcCi0JCQlpcCArPSBuOwkJCVwKLQkJfSB3aGlsZSAoMCkKLQotCQkJ c3dpdGNoIChjKSB7Ci0JCQljYXNlICd0JzogICAgICAgICAgICAgIGM9ICdcdCc7ICAgICAgICAg ICAgYnJlYWs7Ci0JCQljYXNlICduJzogICAgICAgICAgICAgIGM9ICdcbic7ICAgICAgICAgICAg YnJlYWs7Ci0JCQljYXNlICdyJzogICAgICAgICAgICAgIGM9ICdccic7ICAgICAgICAgICAgYnJl YWs7Ci0JCQljYXNlICdcXCc6ICAgICAgICAgICAgIGM9ICdcXCc7ICAgICAgICAgICAgYnJlYWs7 Ci0JCQljYXNlICd4JzogICAgICAgICAgICAgICAgICAgIEdFVEYoIiUyeCIpOyAgYnJlYWs7Ci0J CQljYXNlICcwJzogY2FzZSAnNCc6Ci0JCQljYXNlICcxJzogY2FzZSAnNSc6Ci0JCQljYXNlICcy JzogY2FzZSAnNic6Ci0JCQljYXNlICczJzogY2FzZSAnNyc6ICAgIC0taXA7IEdFVEYoIiUzbyIp OyAgYnJlYWs7Ci0JCQljYXNlIDA6ICAgICAgICAgICAgICAgIC0taXA7ICAgICAgICAgICAgICAg YnJlYWs7Ci0JCQlkZWZhdWx0OjsKLQkJCX0KLSN1bmRlZiBHRVRGCi0JCX0KLQl9Ci0KLQkqb3Ag PSAwOwotCi0JaWYgKG91dF9sZW5fcikKLQkJKm91dF9sZW5fciA9IG9wIC0gb3V0OwotfQotLSAK Mi42LjYKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpY ZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlz dHMueGVuLm9yZy94ZW4tZGV2ZWwK