From mboxrd@z Thu Jan 1 00:00:00 1970 From: Juergen Gross Subject: [PATCH v4 08/12] xenstore: let command functions return error or success Date: Mon, 5 Dec 2016 08:48:49 +0100 Message-ID: <20161205074853.13268-9-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.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cDo1R-0003RS-Oz for xen-devel@lists.xenproject.org; Mon, 05 Dec 2016 07:49:13 +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 QWRkIGEgcmV0dXJuIHZhbHVlIHRvIGFsbCB3aXJlIGNvbW1hbmQgZnVuY3Rpb25zIG9mIHhlbnN0 b3JlZC4gSWYgc3VjaAphIGZ1bmN0aW9uIHJldHVybnMgYW4gZXJyb3Igc2VuZCB0aGUgZXJyb3Ig bWVzc2FnZSBpbgpwcm9jZXNzX21lc3NhZ2UoKS4KCk9ubHkgY29kZSByZWZhY3RvcmluZywgbm8g Y2hhbmdlIGluIGJlaGF2aW9yIGV4cGVjdGVkLgoKU2lnbmVkLW9mZi1ieTogSnVlcmdlbiBHcm9z cyA8amdyb3NzQHN1c2UuY29tPgpBY2tlZC1ieTogV2VpIExpdSA8d2VpLmxpdTJAY2l0cml4LmNv bT4KLS0tCiB0b29scy94ZW5zdG9yZS94ZW5zdG9yZWRfY29yZS5jICAgICAgICB8IDIxMyArKysr KysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0KIHRvb2xzL3hlbnN0b3JlL3hlbnN0b3JlZF9k b21haW4uYyAgICAgIHwgMTcwICsrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tCiB0b29scy94ZW5z dG9yZS94ZW5zdG9yZWRfZG9tYWluLmggICAgICB8ICAxNCArLS0KIHRvb2xzL3hlbnN0b3JlL3hl bnN0b3JlZF90cmFuc2FjdGlvbi5jIHwgIDUwICsrKystLS0tCiB0b29scy94ZW5zdG9yZS94ZW5z dG9yZWRfdHJhbnNhY3Rpb24uaCB8ICAgNCArLQogdG9vbHMveGVuc3RvcmUveGVuc3RvcmVkX3dh dGNoLmMgICAgICAgfCAgNDYgKysrLS0tLQogdG9vbHMveGVuc3RvcmUveGVuc3RvcmVkX3dhdGNo LmggICAgICAgfCAgIDQgKy0KIDcgZmlsZXMgY2hhbmdlZCwgMjEyIGluc2VydGlvbnMoKyksIDI4 OSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS90b29scy94ZW5zdG9yZS94ZW5zdG9yZWRfY29y ZS5jIGIvdG9vbHMveGVuc3RvcmUveGVuc3RvcmVkX2NvcmUuYwppbmRleCAyM2UzNzcxLi45Mzhi NjUyIDEwMDY0NAotLS0gYS90b29scy94ZW5zdG9yZS94ZW5zdG9yZWRfY29yZS5jCisrKyBiL3Rv b2xzL3hlbnN0b3JlL3hlbnN0b3JlZF9jb3JlLmMKQEAgLTc3MCwzMyArNzcwLDMxIEBAIGJvb2wg Y2hlY2tfZXZlbnRfbm9kZShjb25zdCBjaGFyICpub2RlKQogCXJldHVybiB0cnVlOwogfQogCi1z dGF0aWMgdm9pZCBzZW5kX2RpcmVjdG9yeShzdHJ1Y3QgY29ubmVjdGlvbiAqY29ubiwgc3RydWN0 IGJ1ZmZlcmVkX2RhdGEgKmluKQorc3RhdGljIGludCBzZW5kX2RpcmVjdG9yeShzdHJ1Y3QgY29u bmVjdGlvbiAqY29ubiwgc3RydWN0IGJ1ZmZlcmVkX2RhdGEgKmluKQogewogCXN0cnVjdCBub2Rl ICpub2RlOwogCWNvbnN0IGNoYXIgKm5hbWUgPSBvbmVhcmcoaW4pOwogCiAJbmFtZSA9IGNhbm9u aWNhbGl6ZShjb25uLCBuYW1lKTsKIAlub2RlID0gZ2V0X25vZGUoY29ubiwgaW4sIG5hbWUsIFhT X1BFUk1fUkVBRCk7Ci0JaWYgKCFub2RlKSB7Ci0JCXNlbmRfZXJyb3IoY29ubiwgZXJybm8pOwot CQlyZXR1cm47Ci0JfQorCWlmICghbm9kZSkKKwkJcmV0dXJuIGVycm5vOwogCiAJc2VuZF9yZXBs eShjb25uLCBYU19ESVJFQ1RPUlksIG5vZGUtPmNoaWxkcmVuLCBub2RlLT5jaGlsZGxlbik7CisK KwlyZXR1cm4gMDsKIH0KIAotc3RhdGljIHZvaWQgc2VuZF9kaXJlY3RvcnlfcGFydChzdHJ1Y3Qg Y29ubmVjdGlvbiAqY29ubiwKLQkJCQlzdHJ1Y3QgYnVmZmVyZWRfZGF0YSAqaW4pCitzdGF0aWMg aW50IHNlbmRfZGlyZWN0b3J5X3BhcnQoc3RydWN0IGNvbm5lY3Rpb24gKmNvbm4sCisJCQkgICAg ICAgc3RydWN0IGJ1ZmZlcmVkX2RhdGEgKmluKQogewogCXVuc2lnbmVkIGludCBvZmYsIGxlbiwg bWF4bGVuLCBnZW5sZW47CiAJY2hhciAqbmFtZSwgKmNoaWxkLCAqZGF0YTsKIAlzdHJ1Y3Qgbm9k ZSAqbm9kZTsKIAljaGFyIGdlblsyNF07CiAKLQlpZiAoeHNfY291bnRfc3RyaW5ncyhpbi0+YnVm ZmVyLCBpbi0+dXNlZCkgIT0gMikgewotCQlzZW5kX2Vycm9yKGNvbm4sIEVJTlZBTCk7Ci0JCXJl dHVybjsKLQl9CisJaWYgKHhzX2NvdW50X3N0cmluZ3MoaW4tPmJ1ZmZlciwgaW4tPnVzZWQpICE9 IDIpCisJCXJldHVybiBFSU5WQUw7CiAKIAkvKiBGaXJzdCBhcmcgaXMgbm9kZSBuYW1lLiAqLwog CW5hbWUgPSBjYW5vbmljYWxpemUoY29ubiwgaW4tPmJ1ZmZlcik7CkBAIC04MDUsMTAgKzgwMyw4 IEBAIHN0YXRpYyB2b2lkIHNlbmRfZGlyZWN0b3J5X3BhcnQoc3RydWN0IGNvbm5lY3Rpb24gKmNv bm4sCiAJb2ZmID0gYXRvaShpbi0+YnVmZmVyICsgc3RybGVuKGluLT5idWZmZXIpICsgMSk7CiAK IAlub2RlID0gZ2V0X25vZGUoY29ubiwgaW4sIG5hbWUsIFhTX1BFUk1fUkVBRCk7Ci0JaWYgKCFu b2RlKSB7Ci0JCXNlbmRfZXJyb3IoY29ubiwgZXJybm8pOwotCQlyZXR1cm47Ci0JfQorCWlmICgh bm9kZSkKKwkJcmV0dXJuIGVycm5vOwogCiAJZ2VubGVuID0gc25wcmludGYoZ2VuLCBzaXplb2Yo Z2VuKSwgIiUiUFJJdTY0LCBub2RlLT5nZW5lcmF0aW9uKSArIDE7CiAKQEAgLTgxNiw3ICs4MTIs NyBAQCBzdGF0aWMgdm9pZCBzZW5kX2RpcmVjdG9yeV9wYXJ0KHN0cnVjdCBjb25uZWN0aW9uICpj b25uLAogCWlmIChvZmYgPj0gbm9kZS0+Y2hpbGRsZW4pIHsKIAkJZ2VuW2dlbmxlbl0gPSAwOwog CQlzZW5kX3JlcGx5KGNvbm4sIFhTX0RJUkVDVE9SWV9QQVJULCBnZW4sIGdlbmxlbiArIDEpOwot CQlyZXR1cm47CisJCXJldHVybiAwOwogCX0KIAogCWxlbiA9IDA7CkBAIC04MzEsMTAgKzgyNyw4 IEBAIHN0YXRpYyB2b2lkIHNlbmRfZGlyZWN0b3J5X3BhcnQoc3RydWN0IGNvbm5lY3Rpb24gKmNv bm4sCiAJfQogCiAJZGF0YSA9IHRhbGxvY19hcnJheShpbiwgY2hhciwgZ2VubGVuICsgbGVuICsg MSk7Ci0JaWYgKCFkYXRhKSB7Ci0JCXNlbmRfZXJyb3IoY29ubiwgRU5PTUVNKTsKLQkJcmV0dXJu OwotCX0KKwlpZiAoIWRhdGEpCisJCXJldHVybiBFTk9NRU07CiAKIAltZW1jcHkoZGF0YSwgZ2Vu LCBnZW5sZW4pOwogCW1lbWNweShkYXRhICsgZ2VubGVuLCBub2RlLT5jaGlsZHJlbiArIG9mZiwg bGVuKTsKQEAgLTg0NCwyMSArODM4LDIzIEBAIHN0YXRpYyB2b2lkIHNlbmRfZGlyZWN0b3J5X3Bh cnQoc3RydWN0IGNvbm5lY3Rpb24gKmNvbm4sCiAJfQogCiAJc2VuZF9yZXBseShjb25uLCBYU19E SVJFQ1RPUllfUEFSVCwgZGF0YSwgZ2VubGVuICsgbGVuKTsKKworCXJldHVybiAwOwogfQogCi1z dGF0aWMgdm9pZCBkb19yZWFkKHN0cnVjdCBjb25uZWN0aW9uICpjb25uLCBzdHJ1Y3QgYnVmZmVy ZWRfZGF0YSAqaW4pCitzdGF0aWMgaW50IGRvX3JlYWQoc3RydWN0IGNvbm5lY3Rpb24gKmNvbm4s IHN0cnVjdCBidWZmZXJlZF9kYXRhICppbikKIHsKIAlzdHJ1Y3Qgbm9kZSAqbm9kZTsKIAljb25z dCBjaGFyICpuYW1lID0gb25lYXJnKGluKTsKIAogCW5hbWUgPSBjYW5vbmljYWxpemUoY29ubiwg bmFtZSk7CiAJbm9kZSA9IGdldF9ub2RlKGNvbm4sIGluLCBuYW1lLCBYU19QRVJNX1JFQUQpOwot CWlmICghbm9kZSkgewotCQlzZW5kX2Vycm9yKGNvbm4sIGVycm5vKTsKLQkJcmV0dXJuOwotCX0K KwlpZiAoIW5vZGUpCisJCXJldHVybiBlcnJubzsKIAogCXNlbmRfcmVwbHkoY29ubiwgWFNfUkVB RCwgbm9kZS0+ZGF0YSwgbm9kZS0+ZGF0YWxlbik7CisKKwlyZXR1cm4gMDsKIH0KIAogc3RhdGlj IHZvaWQgZGVsZXRlX25vZGVfc2luZ2xlKHN0cnVjdCBjb25uZWN0aW9uICpjb25uLCBzdHJ1Y3Qg bm9kZSAqbm9kZSwKQEAgLTk3Nyw3ICs5NzMsNyBAQCBzdGF0aWMgc3RydWN0IG5vZGUgKmNyZWF0 ZV9ub2RlKHN0cnVjdCBjb25uZWN0aW9uICpjb25uLAogfQogCiAvKiBwYXRoLCBkYXRhLi4uICov Ci1zdGF0aWMgdm9pZCBkb193cml0ZShzdHJ1Y3QgY29ubmVjdGlvbiAqY29ubiwgc3RydWN0IGJ1 ZmZlcmVkX2RhdGEgKmluKQorc3RhdGljIGludCBkb193cml0ZShzdHJ1Y3QgY29ubmVjdGlvbiAq Y29ubiwgc3RydWN0IGJ1ZmZlcmVkX2RhdGEgKmluKQogewogCXVuc2lnbmVkIGludCBvZmZzZXQs IGRhdGFsZW47CiAJc3RydWN0IG5vZGUgKm5vZGU7CkBAIC05ODUsMTAgKzk4MSw4IEBAIHN0YXRp YyB2b2lkIGRvX3dyaXRlKHN0cnVjdCBjb25uZWN0aW9uICpjb25uLCBzdHJ1Y3QgYnVmZmVyZWRf ZGF0YSAqaW4pCiAJY2hhciAqbmFtZTsKIAogCS8qIEV4dHJhICJzdHJpbmdzIiBjYW4gYmUgY3Jl YXRlZCBieSBiaW5hcnkgZGF0YS4gKi8KLQlpZiAoZ2V0X3N0cmluZ3MoaW4sIHZlYywgQVJSQVlf U0laRSh2ZWMpKSA8IEFSUkFZX1NJWkUodmVjKSkgewotCQlzZW5kX2Vycm9yKGNvbm4sIEVJTlZB TCk7Ci0JCXJldHVybjsKLQl9CisJaWYgKGdldF9zdHJpbmdzKGluLCB2ZWMsIEFSUkFZX1NJWkUo dmVjKSkgPCBBUlJBWV9TSVpFKHZlYykpCisJCXJldHVybiBFSU5WQUw7CiAKIAlvZmZzZXQgPSBz dHJsZW4odmVjWzBdKSArIDE7CiAJZGF0YWxlbiA9IGluLT51c2VkIC0gb2Zmc2V0OwpAQCAtOTk3 LDM4ICs5OTEsMzEgQEAgc3RhdGljIHZvaWQgZG9fd3JpdGUoc3RydWN0IGNvbm5lY3Rpb24gKmNv bm4sIHN0cnVjdCBidWZmZXJlZF9kYXRhICppbikKIAlub2RlID0gZ2V0X25vZGUoY29ubiwgaW4s IG5hbWUsIFhTX1BFUk1fV1JJVEUpOwogCWlmICghbm9kZSkgewogCQkvKiBObyBwZXJtaXNzaW9u cywgaW52YWxpZCBpbnB1dD8gKi8KLQkJaWYgKGVycm5vICE9IEVOT0VOVCkgewotCQkJc2VuZF9l cnJvcihjb25uLCBlcnJubyk7Ci0JCQlyZXR1cm47Ci0JCX0KKwkJaWYgKGVycm5vICE9IEVOT0VO VCkKKwkJCXJldHVybiBlcnJubzsKIAkJbm9kZSA9IGNyZWF0ZV9ub2RlKGNvbm4sIG5hbWUsIGlu LT5idWZmZXIgKyBvZmZzZXQsIGRhdGFsZW4pOwotCQlpZiAoIW5vZGUpIHsKLQkJCXNlbmRfZXJy b3IoY29ubiwgZXJybm8pOwotCQkJcmV0dXJuOwotCQl9CisJCWlmICghbm9kZSkKKwkJCXJldHVy biBlcnJubzsKIAl9IGVsc2UgewogCQlub2RlLT5kYXRhID0gaW4tPmJ1ZmZlciArIG9mZnNldDsK IAkJbm9kZS0+ZGF0YWxlbiA9IGRhdGFsZW47Ci0JCWlmICghd3JpdGVfbm9kZShjb25uLCBub2Rl KSl7Ci0JCQlzZW5kX2Vycm9yKGNvbm4sIGVycm5vKTsKLQkJCXJldHVybjsKLQkJfQorCQlpZiAo IXdyaXRlX25vZGUoY29ubiwgbm9kZSkpCisJCQlyZXR1cm4gZXJybm87CiAJfQogCiAJZmlyZV93 YXRjaGVzKGNvbm4sIGluLCBuYW1lLCBmYWxzZSk7CiAJc2VuZF9hY2soY29ubiwgWFNfV1JJVEUp OworCisJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyB2b2lkIGRvX21rZGlyKHN0cnVjdCBjb25uZWN0 aW9uICpjb25uLCBzdHJ1Y3QgYnVmZmVyZWRfZGF0YSAqaW4pCitzdGF0aWMgaW50IGRvX21rZGly KHN0cnVjdCBjb25uZWN0aW9uICpjb25uLCBzdHJ1Y3QgYnVmZmVyZWRfZGF0YSAqaW4pCiB7CiAJ c3RydWN0IG5vZGUgKm5vZGU7CiAJY29uc3QgY2hhciAqbmFtZSA9IG9uZWFyZyhpbik7CiAKLQlp ZiAoIW5hbWUpIHsKLQkJZXJybm8gPSBFSU5WQUw7Ci0JCXNlbmRfZXJyb3IoY29ubiwgZXJybm8p OwotCQlyZXR1cm47Ci0JfQorCWlmICghbmFtZSkKKwkJcmV0dXJuIEVJTlZBTDsKIAogCW5hbWUg PSBjYW5vbmljYWxpemUoY29ubiwgbmFtZSk7CiAJbm9kZSA9IGdldF9ub2RlKGNvbm4sIGluLCBu YW1lLCBYU19QRVJNX1dSSVRFKTsKQEAgLTEwMzYsMTggKzEwMjMsMTYgQEAgc3RhdGljIHZvaWQg ZG9fbWtkaXIoc3RydWN0IGNvbm5lY3Rpb24gKmNvbm4sIHN0cnVjdCBidWZmZXJlZF9kYXRhICpp bikKIAkvKiBJZiBpdCBhbHJlYWR5IGV4aXN0cywgZmluZS4gKi8KIAlpZiAoIW5vZGUpIHsKIAkJ LyogTm8gcGVybWlzc2lvbnM/ICovCi0JCWlmIChlcnJubyAhPSBFTk9FTlQpIHsKLQkJCXNlbmRf ZXJyb3IoY29ubiwgZXJybm8pOwotCQkJcmV0dXJuOwotCQl9CisJCWlmIChlcnJubyAhPSBFTk9F TlQpCisJCQlyZXR1cm4gZXJybm87CiAJCW5vZGUgPSBjcmVhdGVfbm9kZShjb25uLCBuYW1lLCBO VUxMLCAwKTsKLQkJaWYgKCFub2RlKSB7Ci0JCQlzZW5kX2Vycm9yKGNvbm4sIGVycm5vKTsKLQkJ CXJldHVybjsKLQkJfQorCQlpZiAoIW5vZGUpCisJCQlyZXR1cm4gZXJybm87CiAJCWZpcmVfd2F0 Y2hlcyhjb25uLCBpbiwgbmFtZSwgZmFsc2UpOwogCX0KIAlzZW5kX2Fjayhjb25uLCBYU19NS0RJ Uik7CisKKwlyZXR1cm4gMDsKIH0KIAogc3RhdGljIHZvaWQgZGVsZXRlX25vZGUoc3RydWN0IGNv bm5lY3Rpb24gKmNvbm4sIHN0cnVjdCBub2RlICpub2RlLApAQCAtMTExNywxOCArMTEwMiwxNCBA QCBzdGF0aWMgaW50IF9ybShzdHJ1Y3QgY29ubmVjdGlvbiAqY29ubiwgc3RydWN0IG5vZGUgKm5v ZGUsIGNvbnN0IGNoYXIgKm5hbWUpCiAJICAgaGFwcGVuIGlzIHRoZSBjaGlsZCB3aWxsIGNvbnRp bnVlIHRvIHRha2UgdXAgc3BhY2UsIGJ1dCB3aWxsCiAJICAgb3RoZXJ3aXNlIGJlIHVucmVhY2hh YmxlLiAqLwogCXN0cnVjdCBub2RlICpwYXJlbnQgPSByZWFkX25vZGUoY29ubiwgbmFtZSwgZ2V0 X3BhcmVudChuYW1lLCBuYW1lKSk7Ci0JaWYgKCFwYXJlbnQpIHsKLQkJc2VuZF9lcnJvcihjb25u LCBFSU5WQUwpOwotCQlyZXR1cm4gMDsKLQl9CisJaWYgKCFwYXJlbnQpCisJCXJldHVybiBFSU5W QUw7CiAKLQlpZiAoIWRlbGV0ZV9jaGlsZChjb25uLCBwYXJlbnQsIGJhc2VuYW1lKG5hbWUpKSkg ewotCQlzZW5kX2Vycm9yKGNvbm4sIEVJTlZBTCk7Ci0JCXJldHVybiAwOwotCX0KKwlpZiAoIWRl bGV0ZV9jaGlsZChjb25uLCBwYXJlbnQsIGJhc2VuYW1lKG5hbWUpKSkKKwkJcmV0dXJuIEVJTlZB TDsKIAogCWRlbGV0ZV9ub2RlKGNvbm4sIG5vZGUsIHRydWUpOwotCXJldHVybiAxOworCXJldHVy biAwOwogfQogCiAKQEAgLTExNDMsOSArMTEyNCwxMCBAQCBzdGF0aWMgdm9pZCBpbnRlcm5hbF9y bShjb25zdCBjaGFyICpuYW1lKQogfQogCiAKLXN0YXRpYyB2b2lkIGRvX3JtKHN0cnVjdCBjb25u ZWN0aW9uICpjb25uLCBzdHJ1Y3QgYnVmZmVyZWRfZGF0YSAqaW4pCitzdGF0aWMgaW50IGRvX3Jt KHN0cnVjdCBjb25uZWN0aW9uICpjb25uLCBzdHJ1Y3QgYnVmZmVyZWRfZGF0YSAqaW4pCiB7CiAJ c3RydWN0IG5vZGUgKm5vZGU7CisJaW50IHJldDsKIAljb25zdCBjaGFyICpuYW1lID0gb25lYXJn KGluKTsKIAogCW5hbWUgPSBjYW5vbmljYWxpemUoY29ubiwgbmFtZSk7CkBAIC0xMTU2LDI4ICsx MTM4LDI5IEBAIHN0YXRpYyB2b2lkIGRvX3JtKHN0cnVjdCBjb25uZWN0aW9uICpjb25uLCBzdHJ1 Y3QgYnVmZmVyZWRfZGF0YSAqaW4pCiAJCQlub2RlID0gcmVhZF9ub2RlKGNvbm4sIGluLCBnZXRf cGFyZW50KGluLCBuYW1lKSk7CiAJCQlpZiAobm9kZSkgewogCQkJCXNlbmRfYWNrKGNvbm4sIFhT X1JNKTsKLQkJCQlyZXR1cm47CisJCQkJcmV0dXJuIDA7CiAJCQl9CiAJCQkvKiBSZXN0b3JlIGVy cm5vLCBqdXN0IGluIGNhc2UuICovCiAJCQllcnJubyA9IEVOT0VOVDsKIAkJfQotCQlzZW5kX2Vy cm9yKGNvbm4sIGVycm5vKTsKLQkJcmV0dXJuOworCQlyZXR1cm4gZXJybm87CiAJfQogCi0JaWYg KHN0cmVxKG5hbWUsICIvIikpIHsKLQkJc2VuZF9lcnJvcihjb25uLCBFSU5WQUwpOwotCQlyZXR1 cm47Ci0JfQorCWlmIChzdHJlcShuYW1lLCAiLyIpKQorCQlyZXR1cm4gRUlOVkFMOwogCi0JaWYg KF9ybShjb25uLCBub2RlLCBuYW1lKSkgewotCQlmaXJlX3dhdGNoZXMoY29ubiwgaW4sIG5hbWUs IHRydWUpOwotCQlzZW5kX2Fjayhjb25uLCBYU19STSk7Ci0JfQorCXJldCA9IF9ybShjb25uLCBu b2RlLCBuYW1lKTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJZmlyZV93YXRjaGVzKGNv bm4sIGluLCBuYW1lLCB0cnVlKTsKKwlzZW5kX2Fjayhjb25uLCBYU19STSk7CisKKwlyZXR1cm4g MDsKIH0KIAogCi1zdGF0aWMgdm9pZCBkb19nZXRfcGVybXMoc3RydWN0IGNvbm5lY3Rpb24gKmNv bm4sIHN0cnVjdCBidWZmZXJlZF9kYXRhICppbikKK3N0YXRpYyBpbnQgZG9fZ2V0X3Blcm1zKHN0 cnVjdCBjb25uZWN0aW9uICpjb25uLCBzdHJ1Y3QgYnVmZmVyZWRfZGF0YSAqaW4pCiB7CiAJc3Ry dWN0IG5vZGUgKm5vZGU7CiAJY29uc3QgY2hhciAqbmFtZSA9IG9uZWFyZyhpbik7CkBAIC0xMTg2 LDE5ICsxMTY5LDE5IEBAIHN0YXRpYyB2b2lkIGRvX2dldF9wZXJtcyhzdHJ1Y3QgY29ubmVjdGlv biAqY29ubiwgc3RydWN0IGJ1ZmZlcmVkX2RhdGEgKmluKQogCiAJbmFtZSA9IGNhbm9uaWNhbGl6 ZShjb25uLCBuYW1lKTsKIAlub2RlID0gZ2V0X25vZGUoY29ubiwgaW4sIG5hbWUsIFhTX1BFUk1f UkVBRCk7Ci0JaWYgKCFub2RlKSB7Ci0JCXNlbmRfZXJyb3IoY29ubiwgZXJybm8pOwotCQlyZXR1 cm47Ci0JfQorCWlmICghbm9kZSkKKwkJcmV0dXJuIGVycm5vOwogCiAJc3RyaW5ncyA9IHBlcm1z X3RvX3N0cmluZ3Mobm9kZSwgbm9kZS0+cGVybXMsIG5vZGUtPm51bV9wZXJtcywgJmxlbik7CiAJ aWYgKCFzdHJpbmdzKQotCQlzZW5kX2Vycm9yKGNvbm4sIGVycm5vKTsKLQllbHNlCi0JCXNlbmRf cmVwbHkoY29ubiwgWFNfR0VUX1BFUk1TLCBzdHJpbmdzLCBsZW4pOworCQlyZXR1cm4gZXJybm87 CisKKwlzZW5kX3JlcGx5KGNvbm4sIFhTX0dFVF9QRVJNUywgc3RyaW5ncywgbGVuKTsKKworCXJl dHVybiAwOwogfQogCi1zdGF0aWMgdm9pZCBkb19zZXRfcGVybXMoc3RydWN0IGNvbm5lY3Rpb24g KmNvbm4sIHN0cnVjdCBidWZmZXJlZF9kYXRhICppbikKK3N0YXRpYyBpbnQgZG9fc2V0X3Blcm1z KHN0cnVjdCBjb25uZWN0aW9uICpjb25uLCBzdHJ1Y3QgYnVmZmVyZWRfZGF0YSAqaW4pCiB7CiAJ dW5zaWduZWQgaW50IG51bTsKIAlzdHJ1Y3QgeHNfcGVybWlzc2lvbnMgKnBlcm1zOwpAQCAtMTIw NiwxMCArMTE4OSw4IEBAIHN0YXRpYyB2b2lkIGRvX3NldF9wZXJtcyhzdHJ1Y3QgY29ubmVjdGlv biAqY29ubiwgc3RydWN0IGJ1ZmZlcmVkX2RhdGEgKmluKQogCXN0cnVjdCBub2RlICpub2RlOwog CiAJbnVtID0geHNfY291bnRfc3RyaW5ncyhpbi0+YnVmZmVyLCBpbi0+dXNlZCk7Ci0JaWYgKG51 bSA8IDIpIHsKLQkJc2VuZF9lcnJvcihjb25uLCBFSU5WQUwpOwotCQlyZXR1cm47Ci0JfQorCWlm IChudW0gPCAyKQorCQlyZXR1cm4gRUlOVkFMOwogCiAJLyogRmlyc3QgYXJnIGlzIG5vZGUgbmFt ZS4gKi8KIAluYW1lID0gY2Fub25pY2FsaXplKGNvbm4sIGluLT5idWZmZXIpOwpAQCAtMTIxOCw1 NCArMTE5OSw0MyBAQCBzdGF0aWMgdm9pZCBkb19zZXRfcGVybXMoc3RydWN0IGNvbm5lY3Rpb24g KmNvbm4sIHN0cnVjdCBidWZmZXJlZF9kYXRhICppbikKIAogCS8qIFdlIG11c3Qgb3duIG5vZGUg dG8gZG8gdGhpcyAodG9vbHMgY2FuIGRvIHRoaXMgdG9vKS4gKi8KIAlub2RlID0gZ2V0X25vZGUo Y29ubiwgaW4sIG5hbWUsIFhTX1BFUk1fV1JJVEV8WFNfUEVSTV9PV05FUik7Ci0JaWYgKCFub2Rl KSB7Ci0JCXNlbmRfZXJyb3IoY29ubiwgZXJybm8pOwotCQlyZXR1cm47Ci0JfQorCWlmICghbm9k ZSkKKwkJcmV0dXJuIGVycm5vOwogCiAJcGVybXMgPSB0YWxsb2NfYXJyYXkobm9kZSwgc3RydWN0 IHhzX3Blcm1pc3Npb25zLCBudW0pOwotCWlmICgheHNfc3RyaW5nc190b19wZXJtcyhwZXJtcywg bnVtLCBwZXJtc3RyKSkgewotCQlzZW5kX2Vycm9yKGNvbm4sIGVycm5vKTsKLQkJcmV0dXJuOwot CX0KKwlpZiAoIXhzX3N0cmluZ3NfdG9fcGVybXMocGVybXMsIG51bSwgcGVybXN0cikpCisJCXJl dHVybiBlcnJubzsKIAogCS8qIFVucHJpdmlsZWdlZCBkb21haW5zIG1heSBub3QgY2hhbmdlIHRo ZSBvd25lci4gKi8KLQlpZiAoZG9tYWluX2lzX3VucHJpdmlsZWdlZChjb25uKSAmJgotCSAgICBw ZXJtc1swXS5pZCAhPSBub2RlLT5wZXJtc1swXS5pZCkgewotCQlzZW5kX2Vycm9yKGNvbm4sIEVQ RVJNKTsKLQkJcmV0dXJuOwotCX0KKwlpZiAoZG9tYWluX2lzX3VucHJpdmlsZWdlZChjb25uKSAm JiBwZXJtc1swXS5pZCAhPSBub2RlLT5wZXJtc1swXS5pZCkKKwkJcmV0dXJuIEVQRVJNOwogCiAJ ZG9tYWluX2VudHJ5X2RlYyhjb25uLCBub2RlKTsKIAlub2RlLT5wZXJtcyA9IHBlcm1zOwogCW5v ZGUtPm51bV9wZXJtcyA9IG51bTsKIAlkb21haW5fZW50cnlfaW5jKGNvbm4sIG5vZGUpOwogCi0J aWYgKCF3cml0ZV9ub2RlKGNvbm4sIG5vZGUpKSB7Ci0JCXNlbmRfZXJyb3IoY29ubiwgZXJybm8p OwotCQlyZXR1cm47Ci0JfQorCWlmICghd3JpdGVfbm9kZShjb25uLCBub2RlKSkKKwkJcmV0dXJu IGVycm5vOwogCiAJZmlyZV93YXRjaGVzKGNvbm4sIGluLCBuYW1lLCBmYWxzZSk7CiAJc2VuZF9h Y2soY29ubiwgWFNfU0VUX1BFUk1TKTsKKworCXJldHVybiAwOwogfQogCi1zdGF0aWMgdm9pZCBk b19kZWJ1ZyhzdHJ1Y3QgY29ubmVjdGlvbiAqY29ubiwgc3RydWN0IGJ1ZmZlcmVkX2RhdGEgKmlu KQorc3RhdGljIGludCBkb19kZWJ1ZyhzdHJ1Y3QgY29ubmVjdGlvbiAqY29ubiwgc3RydWN0IGJ1 ZmZlcmVkX2RhdGEgKmluKQogewogCWludCBudW07CiAKLQlpZiAoY29ubi0+aWQgIT0gMCkgewot CQlzZW5kX2Vycm9yKGNvbm4sIEVBQ0NFUyk7Ci0JCXJldHVybjsKLQl9CisJaWYgKGNvbm4tPmlk ICE9IDApCisJCXJldHVybiBFQUNDRVM7CiAKIAludW0gPSB4c19jb3VudF9zdHJpbmdzKGluLT5i dWZmZXIsIGluLT51c2VkKTsKIAogCWlmIChzdHJlcShpbi0+YnVmZmVyLCAicHJpbnQiKSkgewot CQlpZiAobnVtIDwgMikgewotCQkJc2VuZF9lcnJvcihjb25uLCBFSU5WQUwpOwotCQkJcmV0dXJu OwotCQl9CisJCWlmIChudW0gPCAyKQorCQkJcmV0dXJuIEVJTlZBTDsKIAkJeHByaW50ZigiZGVi dWc6ICVzIiwgaW4tPmJ1ZmZlciArIGdldF9zdHJpbmcoaW4sIDApKTsKIAl9CiAKQEAgLTEyNzMs MTEgKzEyNDMsMTMgQEAgc3RhdGljIHZvaWQgZG9fZGVidWcoc3RydWN0IGNvbm5lY3Rpb24gKmNv bm4sIHN0cnVjdCBidWZmZXJlZF9kYXRhICppbikKIAkJY2hlY2tfc3RvcmUoKTsKIAogCXNlbmRf YWNrKGNvbm4sIFhTX0RFQlVHKTsKKworCXJldHVybiAwOwogfQogCiBzdGF0aWMgc3RydWN0IHsK IAljaGFyICpzdHI7Ci0Jdm9pZCAoKmZ1bmMpKHN0cnVjdCBjb25uZWN0aW9uICpjb25uLCBzdHJ1 Y3QgYnVmZmVyZWRfZGF0YSAqaW4pOworCWludCAoKmZ1bmMpKHN0cnVjdCBjb25uZWN0aW9uICpj b25uLCBzdHJ1Y3QgYnVmZmVyZWRfZGF0YSAqaW4pOwogfSB3aXJlX2Z1bmNzW1hTX1RZUEVfQ09V TlRdID0gewogCVtYU19ERUJVR10gICAgICAgICAgICAgPSB7ICJERUJVRyIsICAgICAgICAgICAg IGRvX2RlYnVnIH0sCiAJW1hTX0RJUkVDVE9SWV0gICAgICAgICA9IHsgIkRJUkVDVE9SWSIsICAg ICAgICAgc2VuZF9kaXJlY3RvcnkgfSwKQEAgLTEzMjAsNiArMTI5Miw3IEBAIHN0YXRpYyB2b2lk IHByb2Nlc3NfbWVzc2FnZShzdHJ1Y3QgY29ubmVjdGlvbiAqY29ubiwgc3RydWN0IGJ1ZmZlcmVk X2RhdGEgKmluKQogewogCXN0cnVjdCB0cmFuc2FjdGlvbiAqdHJhbnM7CiAJZW51bSB4c2Rfc29j a21zZ190eXBlIHR5cGUgPSBpbi0+aGRyLm1zZy50eXBlOworCWludCByZXQ7CiAKIAl0cmFucyA9 IHRyYW5zYWN0aW9uX2xvb2t1cChjb25uLCBpbi0+aGRyLm1zZy50eF9pZCk7CiAJaWYgKElTX0VS Uih0cmFucykpIHsKQEAgLTEzMzEsMTEgKzEzMDQsMTMgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc19t ZXNzYWdlKHN0cnVjdCBjb25uZWN0aW9uICpjb25uLCBzdHJ1Y3QgYnVmZmVyZWRfZGF0YSAqaW4p CiAJY29ubi0+dHJhbnNhY3Rpb24gPSB0cmFuczsKIAogCWlmICgodW5zaWduZWQpdHlwZSA8IFhT X1RZUEVfQ09VTlQgJiYgd2lyZV9mdW5jc1t0eXBlXS5mdW5jKQotCQl3aXJlX2Z1bmNzW3R5cGVd LmZ1bmMoY29ubiwgaW4pOworCQlyZXQgPSB3aXJlX2Z1bmNzW3R5cGVdLmZ1bmMoY29ubiwgaW4p OwogCWVsc2UgewogCQllcHJpbnRmKCJDbGllbnQgdW5rbm93biBvcGVyYXRpb24gJWkiLCB0eXBl KTsKLQkJc2VuZF9lcnJvcihjb25uLCBFTk9TWVMpOworCQlyZXQgPSBFTk9TWVM7CiAJfQorCWlm IChyZXQpCisJCXNlbmRfZXJyb3IoY29ubiwgcmV0KTsKIAogCWNvbm4tPnRyYW5zYWN0aW9uID0g TlVMTDsKIH0KZGlmZiAtLWdpdCBhL3Rvb2xzL3hlbnN0b3JlL3hlbnN0b3JlZF9kb21haW4uYyBi L3Rvb2xzL3hlbnN0b3JlL3hlbnN0b3JlZF9kb21haW4uYwppbmRleCA1ZGU5M2Q0Li4wYjJhZjEz IDEwMDY0NAotLS0gYS90b29scy94ZW5zdG9yZS94ZW5zdG9yZWRfZG9tYWluLmMKKysrIGIvdG9v bHMveGVuc3RvcmUveGVuc3RvcmVkX2RvbWFpbi5jCkBAIC0zMzgsNyArMzM4LDcgQEAgc3RhdGlj IHZvaWQgZG9tYWluX2Nvbm5fcmVzZXQoc3RydWN0IGRvbWFpbiAqZG9tYWluKQogfQogCiAvKiBk b21pZCwgbWZuLCBldnRjaG4sIHBhdGggKi8KLXZvaWQgZG9faW50cm9kdWNlKHN0cnVjdCBjb25u ZWN0aW9uICpjb25uLCBzdHJ1Y3QgYnVmZmVyZWRfZGF0YSAqaW4pCitpbnQgZG9faW50cm9kdWNl KHN0cnVjdCBjb25uZWN0aW9uICpjb25uLCBzdHJ1Y3QgYnVmZmVyZWRfZGF0YSAqaW4pCiB7CiAJ c3RydWN0IGRvbWFpbiAqZG9tYWluOwogCWNoYXIgKnZlY1szXTsKQEAgLTM0OCw0MCArMzQ4LDMy IEBAIHZvaWQgZG9faW50cm9kdWNlKHN0cnVjdCBjb25uZWN0aW9uICpjb25uLCBzdHJ1Y3QgYnVm ZmVyZWRfZGF0YSAqaW4pCiAJaW50IHJjOwogCXN0cnVjdCB4ZW5zdG9yZV9kb21haW5faW50ZXJm YWNlICppbnRlcmZhY2U7CiAKLQlpZiAoZ2V0X3N0cmluZ3MoaW4sIHZlYywgQVJSQVlfU0laRSh2 ZWMpKSA8IEFSUkFZX1NJWkUodmVjKSkgewotCQlzZW5kX2Vycm9yKGNvbm4sIEVJTlZBTCk7Ci0J CXJldHVybjsKLQl9CisJaWYgKGdldF9zdHJpbmdzKGluLCB2ZWMsIEFSUkFZX1NJWkUodmVjKSkg PCBBUlJBWV9TSVpFKHZlYykpCisJCXJldHVybiBFSU5WQUw7CiAKLQlpZiAoZG9tYWluX2lzX3Vu cHJpdmlsZWdlZChjb25uKSB8fCAhY29ubi0+Y2FuX3dyaXRlKSB7Ci0JCXNlbmRfZXJyb3IoY29u biwgRUFDQ0VTKTsKLQkJcmV0dXJuOwotCX0KKwlpZiAoZG9tYWluX2lzX3VucHJpdmlsZWdlZChj b25uKSB8fCAhY29ubi0+Y2FuX3dyaXRlKQorCQlyZXR1cm4gRUFDQ0VTOwogCiAJZG9taWQgPSBh dG9pKHZlY1swXSk7CiAJbWZuID0gYXRvbCh2ZWNbMV0pOwogCXBvcnQgPSBhdG9pKHZlY1syXSk7 CiAKIAkvKiBTYW5pdHkgY2hlY2sgYXJncy4gKi8KLQlpZiAocG9ydCA8PSAwKSB7IAotCQlzZW5k X2Vycm9yKGNvbm4sIEVJTlZBTCk7Ci0JCXJldHVybjsKLQl9CisJaWYgKHBvcnQgPD0gMCkKKwkJ cmV0dXJuIEVJTlZBTDsKIAogCWRvbWFpbiA9IGZpbmRfZG9tYWluX2J5X2RvbWlkKGRvbWlkKTsK IAogCWlmIChkb21haW4gPT0gTlVMTCkgewogCQlpbnRlcmZhY2UgPSBtYXBfaW50ZXJmYWNlKGRv bWlkLCBtZm4pOwotCQlpZiAoIWludGVyZmFjZSkgewotCQkJc2VuZF9lcnJvcihjb25uLCBlcnJu byk7Ci0JCQlyZXR1cm47Ci0JCX0KKwkJaWYgKCFpbnRlcmZhY2UpCisJCQlyZXR1cm4gZXJybm87 CiAJCS8qIEhhbmcgZG9tYWluIG9mZiAiaW4iIHVudGlsIHdlJ3JlIGZpbmlzaGVkLiAqLwogCQlk b21haW4gPSBuZXdfZG9tYWluKGluLCBkb21pZCwgcG9ydCk7CiAJCWlmICghZG9tYWluKSB7CisJ CQlyYyA9IGVycm5vOwogCQkJdW5tYXBfaW50ZXJmYWNlKGludGVyZmFjZSk7Ci0JCQlzZW5kX2Vy cm9yKGNvbm4sIGVycm5vKTsKLQkJCXJldHVybjsKKwkJCXJldHVybiByYzsKIAkJfQogCQlkb21h aW4tPmludGVyZmFjZSA9IGludGVyZmFjZTsKIAkJZG9tYWluLT5tZm4gPSBtZm47CkBAIC0zOTcs MTY1ICszODksMTM3IEBAIHZvaWQgZG9faW50cm9kdWNlKHN0cnVjdCBjb25uZWN0aW9uICpjb25u LCBzdHJ1Y3QgYnVmZmVyZWRfZGF0YSAqaW4pCiAJCXJjID0geGVuZXZ0Y2huX2JpbmRfaW50ZXJk b21haW4oeGNlX2hhbmRsZSwgZG9taWQsIHBvcnQpOwogCQlkb21haW4tPnBvcnQgPSAocmMgPT0g LTEpID8gMCA6IHJjOwogCQlkb21haW4tPnJlbW90ZV9wb3J0ID0gcG9ydDsKLQl9IGVsc2Ugewot CQlzZW5kX2Vycm9yKGNvbm4sIEVJTlZBTCk7Ci0JCXJldHVybjsKLQl9CisJfSBlbHNlCisJCXJl dHVybiBFSU5WQUw7CiAKIAlkb21haW5fY29ubl9yZXNldChkb21haW4pOwogCiAJc2VuZF9hY2so Y29ubiwgWFNfSU5UUk9EVUNFKTsKKworCXJldHVybiAwOwogfQogCi12b2lkIGRvX3NldF90YXJn ZXQoc3RydWN0IGNvbm5lY3Rpb24gKmNvbm4sIHN0cnVjdCBidWZmZXJlZF9kYXRhICppbikKK2lu dCBkb19zZXRfdGFyZ2V0KHN0cnVjdCBjb25uZWN0aW9uICpjb25uLCBzdHJ1Y3QgYnVmZmVyZWRf ZGF0YSAqaW4pCiB7CiAJY2hhciAqdmVjWzJdOwogCXVuc2lnbmVkIGludCBkb21pZCwgdGRvbWlk OwogICAgICAgICBzdHJ1Y3QgZG9tYWluICpkb21haW4sICp0ZG9tYWluOwotCWlmIChnZXRfc3Ry aW5ncyhpbiwgdmVjLCBBUlJBWV9TSVpFKHZlYykpIDwgQVJSQVlfU0laRSh2ZWMpKSB7Ci0JCXNl bmRfZXJyb3IoY29ubiwgRUlOVkFMKTsKLQkJcmV0dXJuOwotCX0KKwlpZiAoZ2V0X3N0cmluZ3Mo aW4sIHZlYywgQVJSQVlfU0laRSh2ZWMpKSA8IEFSUkFZX1NJWkUodmVjKSkKKwkJcmV0dXJuIEVJ TlZBTDsKIAotCWlmIChkb21haW5faXNfdW5wcml2aWxlZ2VkKGNvbm4pIHx8ICFjb25uLT5jYW5f d3JpdGUpIHsKLQkJc2VuZF9lcnJvcihjb25uLCBFQUNDRVMpOwotCQlyZXR1cm47Ci0JfQorCWlm IChkb21haW5faXNfdW5wcml2aWxlZ2VkKGNvbm4pIHx8ICFjb25uLT5jYW5fd3JpdGUpCisJCXJl dHVybiBFQUNDRVM7CiAKIAlkb21pZCA9IGF0b2kodmVjWzBdKTsKIAl0ZG9taWQgPSBhdG9pKHZl Y1sxXSk7CiAKICAgICAgICAgZG9tYWluID0gZmluZF9kb21haW5fYnlfZG9taWQoZG9taWQpOwot CWlmICghZG9tYWluKSB7Ci0JCXNlbmRfZXJyb3IoY29ubiwgRU5PRU5UKTsKLQkJcmV0dXJuOwot CX0KLSAgICAgICAgaWYgKCFkb21haW4tPmNvbm4pIHsKLQkJc2VuZF9lcnJvcihjb25uLCBFSU5W QUwpOwotCQlyZXR1cm47Ci0JfQorCWlmICghZG9tYWluKQorCQlyZXR1cm4gRU5PRU5UOworICAg ICAgICBpZiAoIWRvbWFpbi0+Y29ubikKKwkJcmV0dXJuIEVJTlZBTDsKIAogICAgICAgICB0ZG9t YWluID0gZmluZF9kb21haW5fYnlfZG9taWQodGRvbWlkKTsKLQlpZiAoIXRkb21haW4pIHsKLQkJ c2VuZF9lcnJvcihjb25uLCBFTk9FTlQpOwotCQlyZXR1cm47Ci0JfQorCWlmICghdGRvbWFpbikK KwkJcmV0dXJuIEVOT0VOVDsKIAotICAgICAgICBpZiAoIXRkb21haW4tPmNvbm4pIHsKLQkJc2Vu ZF9lcnJvcihjb25uLCBFSU5WQUwpOwotCQlyZXR1cm47Ci0JfQorICAgICAgICBpZiAoIXRkb21h aW4tPmNvbm4pCisJCXJldHVybiBFSU5WQUw7CiAKICAgICAgICAgdGFsbG9jX3JlZmVyZW5jZShk b21haW4tPmNvbm4sIHRkb21haW4tPmNvbm4pOwogICAgICAgICBkb21haW4tPmNvbm4tPnRhcmdl dCA9IHRkb21haW4tPmNvbm47CiAKIAlzZW5kX2Fjayhjb25uLCBYU19TRVRfVEFSR0VUKTsKKwor CXJldHVybiAwOwogfQogCiAvKiBkb21pZCAqLwotdm9pZCBkb19yZWxlYXNlKHN0cnVjdCBjb25u ZWN0aW9uICpjb25uLCBzdHJ1Y3QgYnVmZmVyZWRfZGF0YSAqaW4pCitpbnQgZG9fcmVsZWFzZShz dHJ1Y3QgY29ubmVjdGlvbiAqY29ubiwgc3RydWN0IGJ1ZmZlcmVkX2RhdGEgKmluKQogewogCWNv bnN0IGNoYXIgKmRvbWlkX3N0ciA9IG9uZWFyZyhpbik7CiAJc3RydWN0IGRvbWFpbiAqZG9tYWlu OwogCXVuc2lnbmVkIGludCBkb21pZDsKIAotCWlmICghZG9taWRfc3RyKSB7Ci0JCXNlbmRfZXJy b3IoY29ubiwgRUlOVkFMKTsKLQkJcmV0dXJuOwotCX0KKwlpZiAoIWRvbWlkX3N0cikKKwkJcmV0 dXJuIEVJTlZBTDsKIAogCWRvbWlkID0gYXRvaShkb21pZF9zdHIpOwotCWlmICghZG9taWQpIHsK LQkJc2VuZF9lcnJvcihjb25uLCBFSU5WQUwpOwotCQlyZXR1cm47Ci0JfQorCWlmICghZG9taWQp CisJCXJldHVybiBFSU5WQUw7CiAKLQlpZiAoZG9tYWluX2lzX3VucHJpdmlsZWdlZChjb25uKSkg ewotCQlzZW5kX2Vycm9yKGNvbm4sIEVBQ0NFUyk7Ci0JCXJldHVybjsKLQl9CisJaWYgKGRvbWFp bl9pc191bnByaXZpbGVnZWQoY29ubikpCisJCXJldHVybiBFQUNDRVM7CiAKIAlkb21haW4gPSBm aW5kX2RvbWFpbl9ieV9kb21pZChkb21pZCk7Ci0JaWYgKCFkb21haW4pIHsKLQkJc2VuZF9lcnJv cihjb25uLCBFTk9FTlQpOwotCQlyZXR1cm47Ci0JfQorCWlmICghZG9tYWluKQorCQlyZXR1cm4g RU5PRU5UOwogCi0JaWYgKCFkb21haW4tPmNvbm4pIHsKLQkJc2VuZF9lcnJvcihjb25uLCBFSU5W QUwpOwotCQlyZXR1cm47Ci0JfQorCWlmICghZG9tYWluLT5jb25uKQorCQlyZXR1cm4gRUlOVkFM OwogCiAJdGFsbG9jX2ZyZWUoZG9tYWluLT5jb25uKTsKIAogCXNlbmRfYWNrKGNvbm4sIFhTX1JF TEVBU0UpOworCisJcmV0dXJuIDA7CiB9CiAKLXZvaWQgZG9fcmVzdW1lKHN0cnVjdCBjb25uZWN0 aW9uICpjb25uLCBzdHJ1Y3QgYnVmZmVyZWRfZGF0YSAqaW4pCitpbnQgZG9fcmVzdW1lKHN0cnVj dCBjb25uZWN0aW9uICpjb25uLCBzdHJ1Y3QgYnVmZmVyZWRfZGF0YSAqaW4pCiB7CiAJc3RydWN0 IGRvbWFpbiAqZG9tYWluOwogCXVuc2lnbmVkIGludCBkb21pZDsKIAljb25zdCBjaGFyICpkb21p ZF9zdHIgPSBvbmVhcmcoaW4pOwogCi0JaWYgKCFkb21pZF9zdHIpIHsKLQkJc2VuZF9lcnJvcihj b25uLCBFSU5WQUwpOwotCQlyZXR1cm47Ci0JfQorCWlmICghZG9taWRfc3RyKQorCQlyZXR1cm4g RUlOVkFMOwogCiAJZG9taWQgPSBhdG9pKGRvbWlkX3N0cik7Ci0JaWYgKCFkb21pZCkgewotCQlz ZW5kX2Vycm9yKGNvbm4sIEVJTlZBTCk7Ci0JCXJldHVybjsKLQl9CisJaWYgKCFkb21pZCkKKwkJ cmV0dXJuIEVJTlZBTDsKIAotCWlmIChkb21haW5faXNfdW5wcml2aWxlZ2VkKGNvbm4pKSB7Ci0J CXNlbmRfZXJyb3IoY29ubiwgRUFDQ0VTKTsKLQkJcmV0dXJuOwotCX0KKwlpZiAoZG9tYWluX2lz X3VucHJpdmlsZWdlZChjb25uKSkKKwkJcmV0dXJuIEVBQ0NFUzsKIAogCWRvbWFpbiA9IGZpbmRf ZG9tYWluX2J5X2RvbWlkKGRvbWlkKTsKLQlpZiAoIWRvbWFpbikgewotCQlzZW5kX2Vycm9yKGNv bm4sIEVOT0VOVCk7Ci0JCXJldHVybjsKLQl9CisJaWYgKCFkb21haW4pCisJCXJldHVybiBFTk9F TlQ7CiAKLQlpZiAoIWRvbWFpbi0+Y29ubikgewotCQlzZW5kX2Vycm9yKGNvbm4sIEVJTlZBTCk7 Ci0JCXJldHVybjsKLQl9CisJaWYgKCFkb21haW4tPmNvbm4pCisJCXJldHVybiBFSU5WQUw7CiAK IAlkb21haW4tPnNodXRkb3duID0gMDsKIAkKIAlzZW5kX2Fjayhjb25uLCBYU19SRVNVTUUpOwor CisJcmV0dXJuIDA7CiB9CiAKLXZvaWQgZG9fZ2V0X2RvbWFpbl9wYXRoKHN0cnVjdCBjb25uZWN0 aW9uICpjb25uLCBzdHJ1Y3QgYnVmZmVyZWRfZGF0YSAqaW4pCitpbnQgZG9fZ2V0X2RvbWFpbl9w YXRoKHN0cnVjdCBjb25uZWN0aW9uICpjb25uLCBzdHJ1Y3QgYnVmZmVyZWRfZGF0YSAqaW4pCiB7 CiAJY2hhciAqcGF0aDsKIAljb25zdCBjaGFyICpkb21pZF9zdHIgPSBvbmVhcmcoaW4pOwogCi0J aWYgKCFkb21pZF9zdHIpIHsKLQkJc2VuZF9lcnJvcihjb25uLCBFSU5WQUwpOwotCQlyZXR1cm47 Ci0JfQorCWlmICghZG9taWRfc3RyKQorCQlyZXR1cm4gRUlOVkFMOwogCiAJcGF0aCA9IHRhbGxv Y19kb21haW5fcGF0aChjb25uLCBhdG9pKGRvbWlkX3N0cikpOwogCiAJc2VuZF9yZXBseShjb25u LCBYU19HRVRfRE9NQUlOX1BBVEgsIHBhdGgsIHN0cmxlbihwYXRoKSArIDEpOwogCiAJdGFsbG9j X2ZyZWUocGF0aCk7CisKKwlyZXR1cm4gMDsKIH0KIAotdm9pZCBkb19pc19kb21haW5faW50cm9k dWNlZChzdHJ1Y3QgY29ubmVjdGlvbiAqY29ubiwgc3RydWN0IGJ1ZmZlcmVkX2RhdGEgKmluKQor aW50IGRvX2lzX2RvbWFpbl9pbnRyb2R1Y2VkKHN0cnVjdCBjb25uZWN0aW9uICpjb25uLCBzdHJ1 Y3QgYnVmZmVyZWRfZGF0YSAqaW4pCiB7CiAJaW50IHJlc3VsdDsKIAl1bnNpZ25lZCBpbnQgZG9t aWQ7CiAJY29uc3QgY2hhciAqZG9taWRfc3RyID0gb25lYXJnKGluKTsKIAotCWlmICghZG9taWRf c3RyKSB7Ci0JCXNlbmRfZXJyb3IoY29ubiwgRUlOVkFMKTsKLQkJcmV0dXJuOwotCX0KKwlpZiAo IWRvbWlkX3N0cikKKwkJcmV0dXJuIEVJTlZBTDsKIAogCWRvbWlkID0gYXRvaShkb21pZF9zdHIp OwogCWlmIChkb21pZCA9PSBET01JRF9TRUxGKQpAQCAtNTY0LDE1ICs1MjgsMTkgQEAgdm9pZCBk b19pc19kb21haW5faW50cm9kdWNlZChzdHJ1Y3QgY29ubmVjdGlvbiAqY29ubiwgc3RydWN0IGJ1 ZmZlcmVkX2RhdGEgKmluKQogCQlyZXN1bHQgPSAoZmluZF9kb21haW5fYnlfZG9taWQoZG9taWQp ICE9IE5VTEwpOwogCiAJc2VuZF9yZXBseShjb25uLCBYU19JU19ET01BSU5fSU5UUk9EVUNFRCwg cmVzdWx0ID8gIlQiIDogIkYiLCAyKTsKKworCXJldHVybiAwOwogfQogCiAvKiBBbGxvdyBndWVz dCB0byByZXNldCBhbGwgd2F0Y2hlcyAqLwotdm9pZCBkb19yZXNldF93YXRjaGVzKHN0cnVjdCBj b25uZWN0aW9uICpjb25uLCBzdHJ1Y3QgYnVmZmVyZWRfZGF0YSAqaW4pCitpbnQgZG9fcmVzZXRf d2F0Y2hlcyhzdHJ1Y3QgY29ubmVjdGlvbiAqY29ubiwgc3RydWN0IGJ1ZmZlcmVkX2RhdGEgKmlu KQogewogCWNvbm5fZGVsZXRlX2FsbF93YXRjaGVzKGNvbm4pOwogCWNvbm5fZGVsZXRlX2FsbF90 cmFuc2FjdGlvbnMoY29ubik7CiAKIAlzZW5kX2Fjayhjb25uLCBYU19SRVNFVF9XQVRDSEVTKTsK KworCXJldHVybiAwOwogfQogCiBzdGF0aWMgaW50IGNsb3NlX3hjX2hhbmRsZSh2b2lkICpfaGFu ZGxlKQpkaWZmIC0tZ2l0IGEvdG9vbHMveGVuc3RvcmUveGVuc3RvcmVkX2RvbWFpbi5oIGIvdG9v bHMveGVuc3RvcmUveGVuc3RvcmVkX2RvbWFpbi5oCmluZGV4IDI1NTQ0MjMuLjQwZTE1ZDEgMTAw NjQ0Ci0tLSBhL3Rvb2xzL3hlbnN0b3JlL3hlbnN0b3JlZF9kb21haW4uaAorKysgYi90b29scy94 ZW5zdG9yZS94ZW5zdG9yZWRfZG9tYWluLmgKQEAgLTIyLDI1ICsyMiwyNSBAQAogdm9pZCBoYW5k bGVfZXZlbnQodm9pZCk7CiAKIC8qIGRvbWlkLCBtZm4sIGV2ZW50Y2huLCBwYXRoICovCi12b2lk IGRvX2ludHJvZHVjZShzdHJ1Y3QgY29ubmVjdGlvbiAqY29ubiwgc3RydWN0IGJ1ZmZlcmVkX2Rh dGEgKmluKTsKK2ludCBkb19pbnRyb2R1Y2Uoc3RydWN0IGNvbm5lY3Rpb24gKmNvbm4sIHN0cnVj dCBidWZmZXJlZF9kYXRhICppbik7CiAKIC8qIGRvbWlkICovCi12b2lkIGRvX2lzX2RvbWFpbl9p bnRyb2R1Y2VkKHN0cnVjdCBjb25uZWN0aW9uICpjb25uLCBzdHJ1Y3QgYnVmZmVyZWRfZGF0YSAq aW4pOworaW50IGRvX2lzX2RvbWFpbl9pbnRyb2R1Y2VkKHN0cnVjdCBjb25uZWN0aW9uICpjb25u LCBzdHJ1Y3QgYnVmZmVyZWRfZGF0YSAqaW4pOwogCiAvKiBkb21pZCAqLwotdm9pZCBkb19yZWxl YXNlKHN0cnVjdCBjb25uZWN0aW9uICpjb25uLCBzdHJ1Y3QgYnVmZmVyZWRfZGF0YSAqaW4pOwor aW50IGRvX3JlbGVhc2Uoc3RydWN0IGNvbm5lY3Rpb24gKmNvbm4sIHN0cnVjdCBidWZmZXJlZF9k YXRhICppbik7CiAKIC8qIGRvbWlkICovCi12b2lkIGRvX3Jlc3VtZShzdHJ1Y3QgY29ubmVjdGlv biAqY29ubiwgc3RydWN0IGJ1ZmZlcmVkX2RhdGEgKmluKTsKK2ludCBkb19yZXN1bWUoc3RydWN0 IGNvbm5lY3Rpb24gKmNvbm4sIHN0cnVjdCBidWZmZXJlZF9kYXRhICppbik7CiAKIC8qIGRvbWlk LCB0YXJnZXQgKi8KLXZvaWQgZG9fc2V0X3RhcmdldChzdHJ1Y3QgY29ubmVjdGlvbiAqY29ubiwg c3RydWN0IGJ1ZmZlcmVkX2RhdGEgKmluKTsKK2ludCBkb19zZXRfdGFyZ2V0KHN0cnVjdCBjb25u ZWN0aW9uICpjb25uLCBzdHJ1Y3QgYnVmZmVyZWRfZGF0YSAqaW4pOwogCiAvKiBkb21pZCAqLwot dm9pZCBkb19nZXRfZG9tYWluX3BhdGgoc3RydWN0IGNvbm5lY3Rpb24gKmNvbm4sIHN0cnVjdCBi dWZmZXJlZF9kYXRhICppbik7CitpbnQgZG9fZ2V0X2RvbWFpbl9wYXRoKHN0cnVjdCBjb25uZWN0 aW9uICpjb25uLCBzdHJ1Y3QgYnVmZmVyZWRfZGF0YSAqaW4pOwogCiAvKiBBbGxvdyBndWVzdCB0 byByZXNldCBhbGwgd2F0Y2hlcyAqLwotdm9pZCBkb19yZXNldF93YXRjaGVzKHN0cnVjdCBjb25u ZWN0aW9uICpjb25uLCBzdHJ1Y3QgYnVmZmVyZWRfZGF0YSAqaW4pOworaW50IGRvX3Jlc2V0X3dh dGNoZXMoc3RydWN0IGNvbm5lY3Rpb24gKmNvbm4sIHN0cnVjdCBidWZmZXJlZF9kYXRhICppbik7 CiAKIHZvaWQgZG9tYWluX2luaXQodm9pZCk7CiAKZGlmZiAtLWdpdCBhL3Rvb2xzL3hlbnN0b3Jl L3hlbnN0b3JlZF90cmFuc2FjdGlvbi5jIGIvdG9vbHMveGVuc3RvcmUveGVuc3RvcmVkX3RyYW5z YWN0aW9uLmMKaW5kZXggNmM2NWRjNS4uNDIzZmQzZSAxMDA2NDQKLS0tIGEvdG9vbHMveGVuc3Rv cmUveGVuc3RvcmVkX3RyYW5zYWN0aW9uLmMKKysrIGIvdG9vbHMveGVuc3RvcmUveGVuc3RvcmVk X3RyYW5zYWN0aW9uLmMKQEAgLTE0OSwyMSArMTQ5LDE3IEBAIHN0cnVjdCB0cmFuc2FjdGlvbiAq dHJhbnNhY3Rpb25fbG9va3VwKHN0cnVjdCBjb25uZWN0aW9uICpjb25uLCB1aW50MzJfdCBpZCkK IAlyZXR1cm4gRVJSX1BUUigtRU5PRU5UKTsKIH0KIAotdm9pZCBkb190cmFuc2FjdGlvbl9zdGFy dChzdHJ1Y3QgY29ubmVjdGlvbiAqY29ubiwgc3RydWN0IGJ1ZmZlcmVkX2RhdGEgKmluKQoraW50 IGRvX3RyYW5zYWN0aW9uX3N0YXJ0KHN0cnVjdCBjb25uZWN0aW9uICpjb25uLCBzdHJ1Y3QgYnVm ZmVyZWRfZGF0YSAqaW4pCiB7CiAJc3RydWN0IHRyYW5zYWN0aW9uICp0cmFucywgKmV4aXN0czsK IAljaGFyIGlkX3N0clsyMF07CiAKIAkvKiBXZSBkb24ndCBzdXBwb3J0IG5lc3RlZCB0cmFuc2Fj dGlvbnMuICovCi0JaWYgKGNvbm4tPnRyYW5zYWN0aW9uKSB7Ci0JCXNlbmRfZXJyb3IoY29ubiwg RUJVU1kpOwotCQlyZXR1cm47Ci0JfQorCWlmIChjb25uLT50cmFuc2FjdGlvbikKKwkJcmV0dXJu IEVCVVNZOwogCi0JaWYgKGNvbm4tPmlkICYmIGNvbm4tPnRyYW5zYWN0aW9uX3N0YXJ0ZWQgPiBx dW90YV9tYXhfdHJhbnNhY3Rpb24pIHsKLQkJc2VuZF9lcnJvcihjb25uLCBFTk9TUEMpOwotCQly ZXR1cm47Ci0JfQorCWlmIChjb25uLT5pZCAmJiBjb25uLT50cmFuc2FjdGlvbl9zdGFydGVkID4g cXVvdGFfbWF4X3RyYW5zYWN0aW9uKQorCQlyZXR1cm4gRU5PU1BDOwogCiAJLyogQXR0YWNoIHRy YW5zYWN0aW9uIHRvIGlucHV0IGZvciBhdXRvZnJlZSB1bnRpbCBpdCdzIGNvbXBsZXRlICovCiAJ dHJhbnMgPSB0YWxsb2NfemVybyhpbiwgc3RydWN0IHRyYW5zYWN0aW9uKTsKQEAgLTE3MywxMCAr MTY5LDggQEAgdm9pZCBkb190cmFuc2FjdGlvbl9zdGFydChzdHJ1Y3QgY29ubmVjdGlvbiAqY29u biwgc3RydWN0IGJ1ZmZlcmVkX2RhdGEgKmluKQogCXRyYW5zLT50ZGJfbmFtZSA9IHRhbGxvY19h c3ByaW50Zih0cmFucywgIiVzLiVwIiwKIAkJCQkJICB4c19kYWVtb25fdGRiKCksIHRyYW5zKTsK IAl0cmFucy0+dGRiID0gdGRiX2NvcHkodGRiX2NvbnRleHQoY29ubiksIHRyYW5zLT50ZGJfbmFt ZSk7Ci0JaWYgKCF0cmFucy0+dGRiKSB7Ci0JCXNlbmRfZXJyb3IoY29ubiwgZXJybm8pOwotCQly ZXR1cm47Ci0JfQorCWlmICghdHJhbnMtPnRkYikKKwkJcmV0dXJuIGVycm5vOwogCS8qIE1ha2Ug aXQgY2xvc2UgaWYgd2UgZ28gYXdheS4gKi8KIAl0YWxsb2Nfc3RlYWwodHJhbnMsIHRyYW5zLT50 ZGIpOwogCkBAIC0xOTQsMjQgKzE4OCwyMiBAQCB2b2lkIGRvX3RyYW5zYWN0aW9uX3N0YXJ0KHN0 cnVjdCBjb25uZWN0aW9uICpjb25uLCBzdHJ1Y3QgYnVmZmVyZWRfZGF0YSAqaW4pCiAKIAlzbnBy aW50ZihpZF9zdHIsIHNpemVvZihpZF9zdHIpLCAiJXUiLCB0cmFucy0+aWQpOwogCXNlbmRfcmVw bHkoY29ubiwgWFNfVFJBTlNBQ1RJT05fU1RBUlQsIGlkX3N0ciwgc3RybGVuKGlkX3N0cikrMSk7 CisKKwlyZXR1cm4gMDsKIH0KIAotdm9pZCBkb190cmFuc2FjdGlvbl9lbmQoc3RydWN0IGNvbm5l Y3Rpb24gKmNvbm4sIHN0cnVjdCBidWZmZXJlZF9kYXRhICppbikKK2ludCBkb190cmFuc2FjdGlv bl9lbmQoc3RydWN0IGNvbm5lY3Rpb24gKmNvbm4sIHN0cnVjdCBidWZmZXJlZF9kYXRhICppbikK IHsKIAljb25zdCBjaGFyICphcmcgPSBvbmVhcmcoaW4pOwogCXN0cnVjdCBjaGFuZ2VkX25vZGUg Kmk7CiAJc3RydWN0IGNoYW5nZWRfZG9tYWluICpkOwogCXN0cnVjdCB0cmFuc2FjdGlvbiAqdHJh bnM7CiAKLQlpZiAoIWFyZyB8fCAoIXN0cmVxKGFyZywgIlQiKSAmJiAhc3RyZXEoYXJnLCAiRiIp KSkgewotCQlzZW5kX2Vycm9yKGNvbm4sIEVJTlZBTCk7Ci0JCXJldHVybjsKLQl9CisJaWYgKCFh cmcgfHwgKCFzdHJlcShhcmcsICJUIikgJiYgIXN0cmVxKGFyZywgIkYiKSkpCisJCXJldHVybiBF SU5WQUw7CiAKLQlpZiAoKHRyYW5zID0gY29ubi0+dHJhbnNhY3Rpb24pID09IE5VTEwpIHsKLQkJ c2VuZF9lcnJvcihjb25uLCBFTk9FTlQpOwotCQlyZXR1cm47Ci0JfQorCWlmICgodHJhbnMgPSBj b25uLT50cmFuc2FjdGlvbikgPT0gTlVMTCkKKwkJcmV0dXJuIEVOT0VOVDsKIAogCWNvbm4tPnRy YW5zYWN0aW9uID0gTlVMTDsKIAlsaXN0X2RlbCgmdHJhbnMtPmxpc3QpOwpAQCAtMjIyLDE0ICsy MTQsMTAgQEAgdm9pZCBkb190cmFuc2FjdGlvbl9lbmQoc3RydWN0IGNvbm5lY3Rpb24gKmNvbm4s IHN0cnVjdCBidWZmZXJlZF9kYXRhICppbikKIAogCWlmIChzdHJlcShhcmcsICJUIikpIHsKIAkJ LyogRklYTUU6IE1lcmdlLCByYXRoZXIgZmFpbGluZyBvbiBhbnkgY2hhbmdlLiAqLwotCQlpZiAo dHJhbnMtPmdlbmVyYXRpb24gIT0gZ2VuZXJhdGlvbikgewotCQkJc2VuZF9lcnJvcihjb25uLCBF QUdBSU4pOwotCQkJcmV0dXJuOwotCQl9Ci0JCWlmICghcmVwbGFjZV90ZGIodHJhbnMtPnRkYl9u YW1lLCB0cmFucy0+dGRiKSkgewotCQkJc2VuZF9lcnJvcihjb25uLCBlcnJubyk7Ci0JCQlyZXR1 cm47Ci0JCX0KKwkJaWYgKHRyYW5zLT5nZW5lcmF0aW9uICE9IGdlbmVyYXRpb24pCisJCQlyZXR1 cm4gRUFHQUlOOworCQlpZiAoIXJlcGxhY2VfdGRiKHRyYW5zLT50ZGJfbmFtZSwgdHJhbnMtPnRk YikpCisJCQlyZXR1cm4gZXJybm87CiAJCS8qIERvbid0IGNsb3NlIHRoaXM6IHdlIHdvbiEgKi8K IAkJdHJhbnMtPnRkYiA9IE5VTEw7CiAKQEAgLTI0Myw2ICsyMzEsOCBAQCB2b2lkIGRvX3RyYW5z YWN0aW9uX2VuZChzdHJ1Y3QgY29ubmVjdGlvbiAqY29ubiwgc3RydWN0IGJ1ZmZlcmVkX2RhdGEg KmluKQogCQlnZW5lcmF0aW9uICs9IHRyYW5zLT50cmFuc19nZW47CiAJfQogCXNlbmRfYWNrKGNv bm4sIFhTX1RSQU5TQUNUSU9OX0VORCk7CisKKwlyZXR1cm4gMDsKIH0KIAogdm9pZCB0cmFuc2Fj dGlvbl9lbnRyeV9pbmMoc3RydWN0IHRyYW5zYWN0aW9uICp0cmFucywgdW5zaWduZWQgaW50IGRv bWlkKQpkaWZmIC0tZ2l0IGEvdG9vbHMveGVuc3RvcmUveGVuc3RvcmVkX3RyYW5zYWN0aW9uLmgg Yi90b29scy94ZW5zdG9yZS94ZW5zdG9yZWRfdHJhbnNhY3Rpb24uaAppbmRleCA3ZjBhNzgxLi5h ZWVhYzNkIDEwMDY0NAotLS0gYS90b29scy94ZW5zdG9yZS94ZW5zdG9yZWRfdHJhbnNhY3Rpb24u aAorKysgYi90b29scy94ZW5zdG9yZS94ZW5zdG9yZWRfdHJhbnNhY3Rpb24uaApAQCAtMjEsOCAr MjEsOCBAQAogCiBzdHJ1Y3QgdHJhbnNhY3Rpb247CiAKLXZvaWQgZG9fdHJhbnNhY3Rpb25fc3Rh cnQoc3RydWN0IGNvbm5lY3Rpb24gKmNvbm4sIHN0cnVjdCBidWZmZXJlZF9kYXRhICpub2RlKTsK LXZvaWQgZG9fdHJhbnNhY3Rpb25fZW5kKHN0cnVjdCBjb25uZWN0aW9uICpjb25uLCBzdHJ1Y3Qg YnVmZmVyZWRfZGF0YSAqaW4pOworaW50IGRvX3RyYW5zYWN0aW9uX3N0YXJ0KHN0cnVjdCBjb25u ZWN0aW9uICpjb25uLCBzdHJ1Y3QgYnVmZmVyZWRfZGF0YSAqbm9kZSk7CitpbnQgZG9fdHJhbnNh Y3Rpb25fZW5kKHN0cnVjdCBjb25uZWN0aW9uICpjb25uLCBzdHJ1Y3QgYnVmZmVyZWRfZGF0YSAq aW4pOwogCiBzdHJ1Y3QgdHJhbnNhY3Rpb24gKnRyYW5zYWN0aW9uX2xvb2t1cChzdHJ1Y3QgY29u bmVjdGlvbiAqY29ubiwgdWludDMyX3QgaWQpOwogCmRpZmYgLS1naXQgYS90b29scy94ZW5zdG9y ZS94ZW5zdG9yZWRfd2F0Y2guYyBiL3Rvb2xzL3hlbnN0b3JlL3hlbnN0b3JlZF93YXRjaC5jCmlu ZGV4IDg1Njc1MGUuLjhjZmM1YjAgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3hlbnN0b3JlL3hlbnN0b3Jl ZF93YXRjaC5jCisrKyBiL3Rvb2xzL3hlbnN0b3JlL3hlbnN0b3JlZF93YXRjaC5jCkBAIC0xMjEs NDYgKzEyMSwzNiBAQCBzdGF0aWMgaW50IGRlc3Ryb3lfd2F0Y2godm9pZCAqX3dhdGNoKQogCXJl dHVybiAwOwogfQogCi12b2lkIGRvX3dhdGNoKHN0cnVjdCBjb25uZWN0aW9uICpjb25uLCBzdHJ1 Y3QgYnVmZmVyZWRfZGF0YSAqaW4pCitpbnQgZG9fd2F0Y2goc3RydWN0IGNvbm5lY3Rpb24gKmNv bm4sIHN0cnVjdCBidWZmZXJlZF9kYXRhICppbikKIHsKIAlzdHJ1Y3Qgd2F0Y2ggKndhdGNoOwog CWNoYXIgKnZlY1syXTsKIAlib29sIHJlbGF0aXZlOwogCi0JaWYgKGdldF9zdHJpbmdzKGluLCB2 ZWMsIEFSUkFZX1NJWkUodmVjKSkgIT0gQVJSQVlfU0laRSh2ZWMpKSB7Ci0JCXNlbmRfZXJyb3Io Y29ubiwgRUlOVkFMKTsKLQkJcmV0dXJuOwotCX0KKwlpZiAoZ2V0X3N0cmluZ3MoaW4sIHZlYywg QVJSQVlfU0laRSh2ZWMpKSAhPSBBUlJBWV9TSVpFKHZlYykpCisJCXJldHVybiBFSU5WQUw7CiAK IAlpZiAoc3Ryc3RhcnRzKHZlY1swXSwgIkAiKSkgewogCQlyZWxhdGl2ZSA9IGZhbHNlOwotCQlp ZiAoc3RybGVuKHZlY1swXSkgPiBYRU5TVE9SRV9SRUxfUEFUSF9NQVgpIHsKLQkJCXNlbmRfZXJy b3IoY29ubiwgRUlOVkFMKTsKLQkJCXJldHVybjsKLQkJfQorCQlpZiAoc3RybGVuKHZlY1swXSkg PiBYRU5TVE9SRV9SRUxfUEFUSF9NQVgpCisJCQlyZXR1cm4gRUlOVkFMOwogCQkvKiBjaGVjayBp ZiB2YWxpZCBldmVudCAqLwogCX0gZWxzZSB7CiAJCXJlbGF0aXZlID0gIXN0cnN0YXJ0cyh2ZWNb MF0sICIvIik7CiAJCXZlY1swXSA9IGNhbm9uaWNhbGl6ZShjb25uLCB2ZWNbMF0pOwotCQlpZiAo IWlzX3ZhbGlkX25vZGVuYW1lKHZlY1swXSkpIHsKLQkJCXNlbmRfZXJyb3IoY29ubiwgRUlOVkFM KTsKLQkJCXJldHVybjsKLQkJfQorCQlpZiAoIWlzX3ZhbGlkX25vZGVuYW1lKHZlY1swXSkpCisJ CQlyZXR1cm4gRUlOVkFMOwogCX0KIAogCS8qIENoZWNrIGZvciBkdXBsaWNhdGVzLiAqLwogCWxp c3RfZm9yX2VhY2hfZW50cnkod2F0Y2gsICZjb25uLT53YXRjaGVzLCBsaXN0KSB7CiAJCWlmIChz dHJlcSh3YXRjaC0+bm9kZSwgdmVjWzBdKSAmJgotCQkgICAgc3RyZXEod2F0Y2gtPnRva2VuLCB2 ZWNbMV0pKSB7Ci0JCQlzZW5kX2Vycm9yKGNvbm4sIEVFWElTVCk7Ci0JCQlyZXR1cm47Ci0JCX0K KwkJICAgIHN0cmVxKHdhdGNoLT50b2tlbiwgdmVjWzFdKSkKKwkJCXJldHVybiBFRVhJU1Q7CiAJ fQogCi0JaWYgKGRvbWFpbl93YXRjaChjb25uKSA+IHF1b3RhX25iX3dhdGNoX3Blcl9kb21haW4p IHsKLQkJc2VuZF9lcnJvcihjb25uLCBFMkJJRyk7Ci0JCXJldHVybjsKLQl9CisJaWYgKGRvbWFp bl93YXRjaChjb25uKSA+IHF1b3RhX25iX3dhdGNoX3Blcl9kb21haW4pCisJCXJldHVybiBFMkJJ RzsKIAogCXdhdGNoID0gdGFsbG9jKGNvbm4sIHN0cnVjdCB3YXRjaCk7CiAJd2F0Y2gtPm5vZGUg PSB0YWxsb2Nfc3RyZHVwKHdhdGNoLCB2ZWNbMF0pOwpAQCAtMTgwLDE3ICsxNzAsMTcgQEAgdm9p ZCBkb193YXRjaChzdHJ1Y3QgY29ubmVjdGlvbiAqY29ubiwgc3RydWN0IGJ1ZmZlcmVkX2RhdGEg KmluKQogCiAJLyogV2UgZmlyZSBvbmNlIHVwIGZyb250OiBzaW1wbGlmaWVzIGNsaWVudHMgYW5k IHJlc3RhcnQuICovCiAJYWRkX2V2ZW50KGNvbm4sIGluLCB3YXRjaCwgd2F0Y2gtPm5vZGUpOwor CisJcmV0dXJuIDA7CiB9CiAKLXZvaWQgZG9fdW53YXRjaChzdHJ1Y3QgY29ubmVjdGlvbiAqY29u biwgc3RydWN0IGJ1ZmZlcmVkX2RhdGEgKmluKQoraW50IGRvX3Vud2F0Y2goc3RydWN0IGNvbm5l Y3Rpb24gKmNvbm4sIHN0cnVjdCBidWZmZXJlZF9kYXRhICppbikKIHsKIAlzdHJ1Y3Qgd2F0Y2gg KndhdGNoOwogCWNoYXIgKm5vZGUsICp2ZWNbMl07CiAKLQlpZiAoZ2V0X3N0cmluZ3MoaW4sIHZl YywgQVJSQVlfU0laRSh2ZWMpKSAhPSBBUlJBWV9TSVpFKHZlYykpIHsKLQkJc2VuZF9lcnJvcihj b25uLCBFSU5WQUwpOwotCQlyZXR1cm47Ci0JfQorCWlmIChnZXRfc3RyaW5ncyhpbiwgdmVjLCBB UlJBWV9TSVpFKHZlYykpICE9IEFSUkFZX1NJWkUodmVjKSkKKwkJcmV0dXJuIEVJTlZBTDsKIAog CW5vZGUgPSBjYW5vbmljYWxpemUoY29ubiwgdmVjWzBdKTsKIAlsaXN0X2Zvcl9lYWNoX2VudHJ5 KHdhdGNoLCAmY29ubi0+d2F0Y2hlcywgbGlzdCkgewpAQCAtMTk5LDEwICsxODksMTAgQEAgdm9p ZCBkb191bndhdGNoKHN0cnVjdCBjb25uZWN0aW9uICpjb25uLCBzdHJ1Y3QgYnVmZmVyZWRfZGF0 YSAqaW4pCiAJCQl0YWxsb2NfZnJlZSh3YXRjaCk7CiAJCQlkb21haW5fd2F0Y2hfZGVjKGNvbm4p OwogCQkJc2VuZF9hY2soY29ubiwgWFNfVU5XQVRDSCk7Ci0JCQlyZXR1cm47CisJCQlyZXR1cm4g MDsKIAkJfQogCX0KLQlzZW5kX2Vycm9yKGNvbm4sIEVOT0VOVCk7CisJcmV0dXJuIEVOT0VOVDsK IH0KIAogdm9pZCBjb25uX2RlbGV0ZV9hbGxfd2F0Y2hlcyhzdHJ1Y3QgY29ubmVjdGlvbiAqY29u bikKZGlmZiAtLWdpdCBhL3Rvb2xzL3hlbnN0b3JlL3hlbnN0b3JlZF93YXRjaC5oIGIvdG9vbHMv eGVuc3RvcmUveGVuc3RvcmVkX3dhdGNoLmgKaW5kZXggOGVkMWRkZS4uNTQ2YTVjMyAxMDA2NDQK LS0tIGEvdG9vbHMveGVuc3RvcmUveGVuc3RvcmVkX3dhdGNoLmgKKysrIGIvdG9vbHMveGVuc3Rv cmUveGVuc3RvcmVkX3dhdGNoLmgKQEAgLTIxLDggKzIxLDggQEAKIAogI2luY2x1ZGUgInhlbnN0 b3JlZF9jb3JlLmgiCiAKLXZvaWQgZG9fd2F0Y2goc3RydWN0IGNvbm5lY3Rpb24gKmNvbm4sIHN0 cnVjdCBidWZmZXJlZF9kYXRhICppbik7Ci12b2lkIGRvX3Vud2F0Y2goc3RydWN0IGNvbm5lY3Rp b24gKmNvbm4sIHN0cnVjdCBidWZmZXJlZF9kYXRhICppbik7CitpbnQgZG9fd2F0Y2goc3RydWN0 IGNvbm5lY3Rpb24gKmNvbm4sIHN0cnVjdCBidWZmZXJlZF9kYXRhICppbik7CitpbnQgZG9fdW53 YXRjaChzdHJ1Y3QgY29ubmVjdGlvbiAqY29ubiwgc3RydWN0IGJ1ZmZlcmVkX2RhdGEgKmluKTsK IAogLyogRmlyZSBhbGwgd2F0Y2hlczogcmVjdXJzZSBtZWFucyBhbGwgdGhlIGNoaWxkcmVuIGFy ZSBhZmZlY3RlZCAoaWUuIHJtKS4gKi8KIHZvaWQgZmlyZV93YXRjaGVzKHN0cnVjdCBjb25uZWN0 aW9uICpjb25uLCB2b2lkICp0bXAsIGNvbnN0IGNoYXIgKm5hbWUsCi0tIAoyLjEwLjIKCgpfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFp bGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94 ZW4tZGV2ZWwK