From mboxrd@z Thu Jan 1 00:00:00 1970 From: Juergen Gross Subject: [PATCH v4 12/12] xenstore: handle memory allocation failures in xenstored Date: Mon, 5 Dec 2016 08:48:53 +0100 Message-ID: <20161205074853.13268-13-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 1cDo1V-0003Wu-1t for xen-devel@lists.xenproject.org; Mon, 05 Dec 2016 07:49:17 +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 Q2hlY2sgZm9yIGZhaWx1cmVzIHdoZW4gYWxsb2NhdGluZyBuZXcgbWVtb3J5IGluIHhlbnN0b3Jl ZC4KClNpZ25lZC1vZmYtYnk6IEp1ZXJnZW4gR3Jvc3MgPGpncm9zc0BzdXNlLmNvbT4KLS0tClY0 OiBhZGQgYWxsb2MgZmFpbHVyZSBjaGVjayBpbiBkZWxldGVfbm9kZSgpIGFuZCBhZGRfY2hhbmdl X25vZGUoKQogICAgY2xlYW5fc3RvcmUoKSBvbmx5IGlmIG5vIGZhaWx1cmUgaW4gY2hlY2tfc3Rv cmVfKCkKLS0tCiB0b29scy94ZW5zdG9yZS94ZW5zdG9yZWRfY29yZS5jICAgICAgICB8IDIxMCAr KysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0KIHRvb2xzL3hlbnN0b3JlL3hlbnN0b3Jl ZF9kb21haW4uYyAgICAgIHwgIDEwICsrCiB0b29scy94ZW5zdG9yZS94ZW5zdG9yZWRfdHJhbnNh Y3Rpb24uYyB8ICAyNiArKysrCiB0b29scy94ZW5zdG9yZS94ZW5zdG9yZWRfd2F0Y2guYyAgICAg ICB8ICAxMiArKwogNCBmaWxlcyBjaGFuZ2VkLCAyMTEgaW5zZXJ0aW9ucygrKSwgNDcgZGVsZXRp b25zKC0pCgpkaWZmIC0tZ2l0IGEvdG9vbHMveGVuc3RvcmUveGVuc3RvcmVkX2NvcmUuYyBiL3Rv b2xzL3hlbnN0b3JlL3hlbnN0b3JlZF9jb3JlLmMKaW5kZXggNjcwYWVkOS4uY2Y2YzJkYSAxMDA2 NDQKLS0tIGEvdG9vbHMveGVuc3RvcmUveGVuc3RvcmVkX2NvcmUuYworKysgYi90b29scy94ZW5z dG9yZS94ZW5zdG9yZWRfY29yZS5jCkBAIC0xNDksOCArMTQ5LDEwIEBAIHZvaWQgdHJhY2UoY29u c3QgY2hhciAqZm10LCAuLi4pCiAJdmFfc3RhcnQoYXJnbGlzdCwgZm10KTsKIAlzdHIgPSB0YWxs b2NfdmFzcHJpbnRmKE5VTEwsIGZtdCwgYXJnbGlzdCk7CiAJdmFfZW5kKGFyZ2xpc3QpOwotCWR1 bW15ID0gd3JpdGUodHJhY2VmZCwgc3RyLCBzdHJsZW4oc3RyKSk7Ci0JdGFsbG9jX2ZyZWUoc3Ry KTsKKwlpZiAoc3RyKSB7CisJCWR1bW15ID0gd3JpdGUodHJhY2VmZCwgc3RyLCBzdHJsZW4oc3Ry KSk7CisJCXRhbGxvY19mcmVlKHN0cik7CisJfQogfQogCiBzdGF0aWMgdm9pZCB0cmFjZV9pbyhj b25zdCBzdHJ1Y3QgY29ubmVjdGlvbiAqY29ubiwKQEAgLTM5Miw3ICszOTQsMTYgQEAgc3RhdGlj IHN0cnVjdCBub2RlICpyZWFkX25vZGUoc3RydWN0IGNvbm5lY3Rpb24gKmNvbm4sIGNvbnN0IHZv aWQgKmN0eCwKIAl9CiAKIAlub2RlID0gdGFsbG9jKGN0eCwgc3RydWN0IG5vZGUpOworCWlmICgh bm9kZSkgeworCQllcnJubyA9IEVOT01FTTsKKwkJcmV0dXJuIE5VTEw7CisJfQogCW5vZGUtPm5h bWUgPSB0YWxsb2Nfc3RyZHVwKG5vZGUsIG5hbWUpOworCWlmICghbm9kZS0+bmFtZSkgeworCQl0 YWxsb2NfZnJlZShub2RlKTsKKwkJZXJybm8gPSBFTk9NRU07CisJCXJldHVybiBOVUxMOworCX0K IAlub2RlLT5wYXJlbnQgPSBOVUxMOwogCW5vZGUtPnRkYiA9IHRkYl9jb250ZXh0KGNvbm4pOwog CXRhbGxvY19zdGVhbChub2RlLCBkYXRhLmRwdHIpOwpAQCAtNDkwLDM1ICs1MDEsNDYgQEAgc3Rh dGljIGVudW0geHNfcGVybV90eXBlIHBlcm1fZm9yX2Nvbm4oc3RydWN0IGNvbm5lY3Rpb24gKmNv bm4sCiAgKi8KIHN0YXRpYyBjaGFyICpnZXRfcGFyZW50KGNvbnN0IHZvaWQgKmN0eCwgY29uc3Qg Y2hhciAqbm9kZSkKIHsKKwljaGFyICpwYXJlbnQ7CiAJY2hhciAqc2xhc2ggPSBzdHJyY2hyKG5v ZGUgKyAxLCAnLycpOwotCWlmICghc2xhc2gpCi0JCXJldHVybiB0YWxsb2Nfc3RyZHVwKGN0eCwg Ii8iKTsKLQlyZXR1cm4gdGFsbG9jX2FzcHJpbnRmKGN0eCwgIiUuKnMiLCAoaW50KShzbGFzaCAt IG5vZGUpLCBub2RlKTsKKworCXBhcmVudCA9IHNsYXNoID8gdGFsbG9jX2FzcHJpbnRmKGN0eCwg IiUuKnMiLCAoaW50KShzbGFzaCAtIG5vZGUpLCBub2RlKQorCQkgICAgICAgOiB0YWxsb2Nfc3Ry ZHVwKGN0eCwgIi8iKTsKKwlpZiAoIXBhcmVudCkKKwkJZXJybm8gPSBFTk9NRU07CisKKwlyZXR1 cm4gcGFyZW50OwogfQogCiAvKgogICogV2hhdCBkbyBwYXJlbnRzIHNheT8KICAqIFRlbXBvcmFy eSBtZW1vcnkgYWxsb2NhdGlvbnMgYXJlIGRvbmUgd2l0aCBjdHguCiAgKi8KLXN0YXRpYyBlbnVt IHhzX3Blcm1fdHlwZSBhc2tfcGFyZW50cyhzdHJ1Y3QgY29ubmVjdGlvbiAqY29ubiwgY29uc3Qg dm9pZCAqY3R4LAotCQkJCSAgICAgY29uc3QgY2hhciAqbmFtZSkKK3N0YXRpYyBpbnQgYXNrX3Bh cmVudHMoc3RydWN0IGNvbm5lY3Rpb24gKmNvbm4sIGNvbnN0IHZvaWQgKmN0eCwKKwkJICAgICAg IGNvbnN0IGNoYXIgKm5hbWUsIGVudW0geHNfcGVybV90eXBlICpwZXJtKQogewogCXN0cnVjdCBu b2RlICpub2RlOwogCiAJZG8gewogCQluYW1lID0gZ2V0X3BhcmVudChjdHgsIG5hbWUpOworCQlp ZiAoIW5hbWUpCisJCQlyZXR1cm4gZXJybm87CiAJCW5vZGUgPSByZWFkX25vZGUoY29ubiwgY3R4 LCBuYW1lKTsKIAkJaWYgKG5vZGUpCiAJCQlicmVhazsKKwkJaWYgKGVycm5vID09IEVOT01FTSkK KwkJCXJldHVybiBlcnJubzsKIAl9IHdoaWxlICghc3RyZXEobmFtZSwgIi8iKSk7CiAKIAkvKiBO byBwZXJtaXNzaW9uIGF0IHJvb3Q/ICBXZSdyZSBpbiB0cm91YmxlLiAqLwogCWlmICghbm9kZSkg ewogCQljb3JydXB0KGNvbm4sICJObyBwZXJtaXNzaW9ucyBmaWxlIGF0IHJvb3QiKTsKLQkJcmV0 dXJuIFhTX1BFUk1fTk9ORTsKKwkJKnBlcm0gPSBYU19QRVJNX05PTkU7CisJCXJldHVybiAwOwog CX0KIAotCXJldHVybiBwZXJtX2Zvcl9jb25uKGNvbm4sIG5vZGUtPnBlcm1zLCBub2RlLT5udW1f cGVybXMpOworCSpwZXJtID0gcGVybV9mb3JfY29ubihjb25uLCBub2RlLT5wZXJtcywgbm9kZS0+ bnVtX3Blcm1zKTsKKwlyZXR1cm4gMDsKIH0KIAogLyoKQEAgLTUzMiwxMSArNTU0LDE1IEBAIHN0 YXRpYyBpbnQgZXJybm9fZnJvbV9wYXJlbnRzKHN0cnVjdCBjb25uZWN0aW9uICpjb25uLCBjb25z dCB2b2lkICpjdHgsCiAJCQkgICAgICBjb25zdCBjaGFyICpub2RlLCBpbnQgZXJybnVtLAogCQkJ ICAgICAgZW51bSB4c19wZXJtX3R5cGUgcGVybSkKIHsKKwllbnVtIHhzX3Blcm1fdHlwZSBwYXJl bnRfcGVybSA9IFhTX1BFUk1fTk9ORTsKKwogCS8qIFdlIGFsd2F5cyB0ZWxsIHRoZW0gYWJvdXQg bWVtb3J5IGZhaWx1cmVzLiAqLwogCWlmIChlcnJudW0gPT0gRU5PTUVNKQogCQlyZXR1cm4gZXJy bnVtOwogCi0JaWYgKGFza19wYXJlbnRzKGNvbm4sIGN0eCwgbm9kZSkgJiBwZXJtKQorCWlmIChh c2tfcGFyZW50cyhjb25uLCBjdHgsIG5vZGUsICZwYXJlbnRfcGVybSkpCisJCXJldHVybiBlcnJu bzsKKwlpZiAocGFyZW50X3Blcm0gJiBwZXJtKQogCQlyZXR1cm4gZXJybnVtOwogCXJldHVybiBF QUNDRVM7CiB9CkBAIC01NjYsNyArNTkyLDcgQEAgc3RydWN0IG5vZGUgKmdldF9ub2RlKHN0cnVj dCBjb25uZWN0aW9uICpjb25uLAogCQl9CiAJfQogCS8qIENsZWFuIHVwIGVycm5vIGlmIHRoZXkg d2VyZW4ndCBzdXBwb3NlZCB0byBrbm93LiAqLwotCWlmICghbm9kZSkgCisJaWYgKCFub2RlICYm IGVycm5vICE9IEVOT01FTSkKIAkJZXJybm8gPSBlcnJub19mcm9tX3BhcmVudHMoY29ubiwgY3R4 LCBuYW1lLCBlcnJubywgcGVybSk7CiAJcmV0dXJuIG5vZGU7CiB9CkBAIC02NTYsMTEgKzY4Miwy OSBAQCB2b2lkIHNlbmRfcmVwbHkoc3RydWN0IGNvbm5lY3Rpb24gKmNvbm4sIGVudW0geHNkX3Nv Y2ttc2dfdHlwZSB0eXBlLAogCX0gZWxzZSB7CiAJCS8qIE1lc3NhZ2UgaXMgYSBjaGlsZCBvZiB0 aGUgY29ubmVjdGlvbiBmb3IgYXV0by1jbGVhbnVwLiAqLwogCQliZGF0YSA9IG5ld19idWZmZXIo Y29ubik7CisKKwkJLyoKKwkJICogQWxsb2NhdGlvbiBmYWlsdXJlIGhlcmUgaXMgdW5mb3J0dW5h dGU6IHdlIGhhdmUgbm8gd2F5IHRvCisJCSAqIHRlbGwgYW55Ym9keSBhYm91dCBpdC4KKwkJICov CisJCWlmICghYmRhdGEpCisJCQlyZXR1cm47CiAJfQogCWlmIChsZW4gPD0gREVGQVVMVF9CVUZG RVJfU0laRSkKIAkJYmRhdGEtPmJ1ZmZlciA9IGJkYXRhLT5kZWZhdWx0X2J1ZmZlcjsKIAllbHNl CiAJCWJkYXRhLT5idWZmZXIgPSB0YWxsb2NfYXJyYXkoYmRhdGEsIGNoYXIsIGxlbik7CisJaWYg KCFiZGF0YS0+YnVmZmVyKSB7CisJCWlmICh0eXBlID09IFhTX1dBVENIX0VWRU5UKSB7CisJCQkv KiBTYW1lIGFzIGFib3ZlOiBubyB3YXkgdG8gdGVsbCBzb21lb25lLiAqLworCQkJdGFsbG9jX2Zy ZWUoYmRhdGEpOworCQkJcmV0dXJuOworCQl9CisJCS8qIHJlLWVzdGFibGlzaCByZXF1ZXN0IGJ1 ZmZlciBmb3Igc2VuZGluZyBFTk9NRU0uICovCisJCWNvbm4tPmluID0gYmRhdGE7CisJCXNlbmRf ZXJyb3IoY29ubiwgRU5PTUVNKTsKKwkJcmV0dXJuOworCX0KIAogCS8qIFVwZGF0ZSByZWxldmFu dCBoZWFkZXIgZmllbGRzIGFuZCBmaWxsIGluIHRoZSBtZXNzYWdlIGJvZHkuICovCiAJYmRhdGEt Pmhkci5tc2cudHlwZSA9IHR5cGU7CkBAIC02NjksNiArNzEzLDggQEAgdm9pZCBzZW5kX3JlcGx5 KHN0cnVjdCBjb25uZWN0aW9uICpjb25uLCBlbnVtIHhzZF9zb2NrbXNnX3R5cGUgdHlwZSwKIAog CS8qIFF1ZXVlIGZvciBsYXRlciB0cmFuc21pc3Npb24uICovCiAJbGlzdF9hZGRfdGFpbCgmYmRh dGEtPmxpc3QsICZjb25uLT5vdXRfbGlzdCk7CisKKwlyZXR1cm47CiB9CiAKIC8qIFNvbWUgcm91 dGluZXMgKHdyaXRlLCBta2RpciwgZXRjKSBqdXN0IG5lZWQgYSBub24tZXJyb3IgcmV0dXJuICov CkBAIC03MzAsNiArNzc2LDggQEAgc3RhdGljIGNoYXIgKnBlcm1zX3RvX3N0cmluZ3MoY29uc3Qg dm9pZCAqY3R4LAogCiAJCXN0cmluZ3MgPSB0YWxsb2NfcmVhbGxvYyhjdHgsIHN0cmluZ3MsIGNo YXIsCiAJCQkJCSAqbGVuICsgc3RybGVuKGJ1ZmZlcikgKyAxKTsKKwkJaWYgKCFzdHJpbmdzKQor CQkJcmV0dXJuIE5VTEw7CiAJCXN0cmNweShzdHJpbmdzICsgKmxlbiwgYnVmZmVyKTsKIAkJKmxl biArPSBzdHJsZW4oYnVmZmVyKSArIDE7CiAJfQpAQCAtODc2LDYgKzkyNCw5IEBAIHN0YXRpYyBz dHJ1Y3Qgbm9kZSAqY29uc3RydWN0X25vZGUoc3RydWN0IGNvbm5lY3Rpb24gKmNvbm4sIGNvbnN0 IHZvaWQgKmN0eCwKIAlzdHJ1Y3Qgbm9kZSAqcGFyZW50LCAqbm9kZTsKIAljaGFyICpjaGlsZHJl biwgKnBhcmVudG5hbWUgPSBnZXRfcGFyZW50KGN0eCwgbmFtZSk7CiAKKwlpZiAoIXBhcmVudG5h bWUpCisJCXJldHVybiBOVUxMOworCiAJLyogSWYgcGFyZW50IGRvZXNuJ3QgZXhpc3QsIGNyZWF0 ZSBpdC4gKi8KIAlwYXJlbnQgPSByZWFkX25vZGUoY29ubiwgcGFyZW50bmFtZSwgcGFyZW50bmFt ZSk7CiAJaWYgKCFwYXJlbnQpCkBAIC0xMDIzLDYgKzEwNzQsNyBAQCBzdGF0aWMgdm9pZCBkZWxl dGVfbm9kZShzdHJ1Y3QgY29ubmVjdGlvbiAqY29ubiwgc3RydWN0IG5vZGUgKm5vZGUsCiAJCQli b29sIGNoYW5nZWQpCiB7CiAJdW5zaWduZWQgaW50IGk7CisJY2hhciAqbmFtZTsKIAogCS8qIERl bGV0ZSBzZWxmLCB0aGVuIGRlbGV0ZSBjaGlsZHJlbi4gIElmIHdlIGNyYXNoLCB0aGVuIHRoZSB3 b3JzdAogCSAgIHRoYXQgY2FuIGhhcHBlbiBpcyB0aGUgY2hpbGRyZW4gd2lsbCBjb250aW51ZSB0 byB0YWtlIHVwIHNwYWNlLCBidXQKQEAgLTEwMzMsMTcgKzEwODUsMTggQEAgc3RhdGljIHZvaWQg ZGVsZXRlX25vZGUoc3RydWN0IGNvbm5lY3Rpb24gKmNvbm4sIHN0cnVjdCBub2RlICpub2RlLAog CWZvciAoaSA9IDA7IGkgPCBub2RlLT5jaGlsZGxlbjsgaSArPSBzdHJsZW4obm9kZS0+Y2hpbGRy ZW4raSkgKyAxKSB7CiAJCXN0cnVjdCBub2RlICpjaGlsZDsKIAotCQljaGlsZCA9IHJlYWRfbm9k ZShjb25uLCBub2RlLAotCQkJCSAgdGFsbG9jX2FzcHJpbnRmKG5vZGUsICIlcy8lcyIsIG5vZGUt Pm5hbWUsCi0JCQkJCQkgIG5vZGUtPmNoaWxkcmVuICsgaSkpOworCQluYW1lID0gdGFsbG9jX2Fz cHJpbnRmKG5vZGUsICIlcy8lcyIsIG5vZGUtPm5hbWUsCisJCQkJICAgICAgIG5vZGUtPmNoaWxk cmVuICsgaSk7CisJCWNoaWxkID0gbmFtZSA/IHJlYWRfbm9kZShjb25uLCBub2RlLCBuYW1lKSA6 IE5VTEw7CiAJCWlmIChjaGlsZCkgewogCQkJZGVsZXRlX25vZGUoY29ubiwgY2hpbGQsIGZhbHNl KTsKIAkJfQogCQllbHNlIHsKLQkJCXRyYWNlKCJkZWxldGVfbm9kZTogTm8gY2hpbGQgJyVzLyVz JyBmb3VuZCFcbiIsCisJCQl0cmFjZSgiZGVsZXRlX25vZGU6IEVycm9yIGRlbGV0aW5nIGNoaWxk ICclcy8lcychXG4iLAogCQkJICAgICAgbm9kZS0+bmFtZSwgbm9kZS0+Y2hpbGRyZW4gKyBpKTsK IAkJCS8qIFNraXAgaXQsIHdlJ3ZlIGFscmVhZHkgZGVsZXRlZCB0aGUgcGFyZW50LiAqLwogCQl9 CisJCXRhbGxvY19mcmVlKG5hbWUpOwogCX0KIH0KIApAQCAtMTA4Niw5ICsxMTM5LDE1IEBAIHN0 YXRpYyBpbnQgX3JtKHN0cnVjdCBjb25uZWN0aW9uICpjb25uLCBjb25zdCB2b2lkICpjdHgsIHN0 cnVjdCBub2RlICpub2RlLAogCS8qIERlbGV0ZSBmcm9tIHBhcmVudCBmaXJzdCwgdGhlbiBpZiB3 ZSBjcmFzaCwgdGhlIHdvcnN0IHRoYXQgY2FuCiAJICAgaGFwcGVuIGlzIHRoZSBjaGlsZCB3aWxs IGNvbnRpbnVlIHRvIHRha2UgdXAgc3BhY2UsIGJ1dCB3aWxsCiAJICAgb3RoZXJ3aXNlIGJlIHVu cmVhY2hhYmxlLiAqLwotCXN0cnVjdCBub2RlICpwYXJlbnQgPSByZWFkX25vZGUoY29ubiwgY3R4 LCBnZXRfcGFyZW50KGN0eCwgbmFtZSkpOworCXN0cnVjdCBub2RlICpwYXJlbnQ7CisJY2hhciAq cGFyZW50bmFtZSA9IGdldF9wYXJlbnQoY3R4LCBuYW1lKTsKKworCWlmICghcGFyZW50bmFtZSkK KwkJcmV0dXJuIGVycm5vOworCisJcGFyZW50ID0gcmVhZF9ub2RlKGNvbm4sIGN0eCwgcGFyZW50 bmFtZSk7CiAJaWYgKCFwYXJlbnQpCi0JCXJldHVybiBFSU5WQUw7CisJCXJldHVybiAoZXJybm8g PT0gRU5PTUVNKSA/IEVOT01FTSA6IEVJTlZBTDsKIAogCWlmICghZGVsZXRlX2NoaWxkKGNvbm4s IHBhcmVudCwgYmFzZW5hbWUobmFtZSkpKQogCQlyZXR1cm4gRUlOVkFMOwpAQCAtMTExNCwxOSAr MTE3MywyNCBAQCBzdGF0aWMgaW50IGRvX3JtKHN0cnVjdCBjb25uZWN0aW9uICpjb25uLCBzdHJ1 Y3QgYnVmZmVyZWRfZGF0YSAqaW4pCiAJc3RydWN0IG5vZGUgKm5vZGU7CiAJaW50IHJldDsKIAlj aGFyICpuYW1lOworCWNoYXIgKnBhcmVudG5hbWU7CiAKIAlub2RlID0gZ2V0X25vZGVfY2Fub25p Y2FsaXplZChjb25uLCBpbiwgb25lYXJnKGluKSwgJm5hbWUsCiAJCQkJICAgICAgWFNfUEVSTV9X UklURSk7CiAJaWYgKCFub2RlKSB7CiAJCS8qIERpZG4ndCBleGlzdCBhbHJlYWR5PyAgRmluZSwg aWYgcGFyZW50IGV4aXN0cy4gKi8KIAkJaWYgKGVycm5vID09IEVOT0VOVCkgewotCQkJbm9kZSA9 IHJlYWRfbm9kZShjb25uLCBpbiwgZ2V0X3BhcmVudChpbiwgbmFtZSkpOworCQkJcGFyZW50bmFt ZSA9IGdldF9wYXJlbnQoaW4sIG5hbWUpOworCQkJaWYgKCFwYXJlbnRuYW1lKQorCQkJCXJldHVy biBlcnJubzsKKwkJCW5vZGUgPSByZWFkX25vZGUoY29ubiwgaW4sIHBhcmVudG5hbWUpOwogCQkJ aWYgKG5vZGUpIHsKIAkJCQlzZW5kX2Fjayhjb25uLCBYU19STSk7CiAJCQkJcmV0dXJuIDA7CiAJ CQl9CiAJCQkvKiBSZXN0b3JlIGVycm5vLCBqdXN0IGluIGNhc2UuICovCi0JCQllcnJubyA9IEVO T0VOVDsKKwkJCWlmIChlcnJubyAhPSBFTk9NRU0pCisJCQkJZXJybm8gPSBFTk9FTlQ7CiAJCX0K IAkJcmV0dXJuIGVycm5vOwogCX0KQEAgLTExODYsNiArMTI1MCw4IEBAIHN0YXRpYyBpbnQgZG9f c2V0X3Blcm1zKHN0cnVjdCBjb25uZWN0aW9uICpjb25uLCBzdHJ1Y3QgYnVmZmVyZWRfZGF0YSAq aW4pCiAJbnVtLS07CiAKIAlwZXJtcyA9IHRhbGxvY19hcnJheShub2RlLCBzdHJ1Y3QgeHNfcGVy bWlzc2lvbnMsIG51bSk7CisJaWYgKCFwZXJtcykKKwkJcmV0dXJuIEVOT01FTTsKIAlpZiAoIXhz X3N0cmluZ3NfdG9fcGVybXMocGVybXMsIG51bSwgcGVybXN0cikpCiAJCXJldHVybiBlcnJubzsK IApAQCAtMTMxOSw3ICsxMzg1LDcgQEAgc3RhdGljIHZvaWQgaGFuZGxlX2lucHV0KHN0cnVjdCBj b25uZWN0aW9uICpjb25uKQogCiAJaWYgKCFjb25uLT5pbikgewogCQljb25uLT5pbiA9IG5ld19i dWZmZXIoY29ubik7Ci0JCS8qIEluIGNhc2Ugb2Ygbm8gbWVtb3J5IGp1c3QgdHJ5IGl0IG5leHQg dGltZSBhZ2Fpbi4gKi8KKwkJLyogSW4gY2FzZSBvZiBubyBtZW1vcnkganVzdCB0cnkgaXQgYWdh aW4gbmV4dCB0aW1lLiAqLwogCQlpZiAoIWNvbm4tPmluKQogCQkJcmV0dXJuOwogCX0KQEAgLTEz MjcsMjYgKzEzOTMsMjkgQEAgc3RhdGljIHZvaWQgaGFuZGxlX2lucHV0KHN0cnVjdCBjb25uZWN0 aW9uICpjb25uKQogCiAJLyogTm90IGZpbmlzaGVkIGhlYWRlciB5ZXQ/ICovCiAJaWYgKGluLT5p bmhkcikgewotCQlieXRlcyA9IGNvbm4tPnJlYWQoY29ubiwgaW4tPmhkci5yYXcgKyBpbi0+dXNl ZCwKLQkJCQkgICBzaXplb2YoaW4tPmhkcikgLSBpbi0+dXNlZCk7Ci0JCWlmIChieXRlcyA8IDAp Ci0JCQlnb3RvIGJhZF9jbGllbnQ7Ci0JCWluLT51c2VkICs9IGJ5dGVzOwotCQlpZiAoaW4tPnVz ZWQgIT0gc2l6ZW9mKGluLT5oZHIpKQotCQkJcmV0dXJuOworCQlpZiAoaW4tPnVzZWQgIT0gc2l6 ZW9mKGluLT5oZHIpKSB7CisJCQlieXRlcyA9IGNvbm4tPnJlYWQoY29ubiwgaW4tPmhkci5yYXcg KyBpbi0+dXNlZCwKKwkJCQkJICAgc2l6ZW9mKGluLT5oZHIpIC0gaW4tPnVzZWQpOworCQkJaWYg KGJ5dGVzIDwgMCkKKwkJCQlnb3RvIGJhZF9jbGllbnQ7CisJCQlpbi0+dXNlZCArPSBieXRlczsK KwkJCWlmIChpbi0+dXNlZCAhPSBzaXplb2YoaW4tPmhkcikpCisJCQkJcmV0dXJuOwogCi0JCWlm IChpbi0+aGRyLm1zZy5sZW4gPiBYRU5TVE9SRV9QQVlMT0FEX01BWCkgewotCQkJc3lzbG9nKExP R19FUlIsICJDbGllbnQgdHJpZWQgdG8gZmVlZCB1cyAlaSIsCi0JCQkgICAgICAgaW4tPmhkci5t c2cubGVuKTsKLQkJCWdvdG8gYmFkX2NsaWVudDsKKwkJCWlmIChpbi0+aGRyLm1zZy5sZW4gPiBY RU5TVE9SRV9QQVlMT0FEX01BWCkgeworCQkJCXN5c2xvZyhMT0dfRVJSLCAiQ2xpZW50IHRyaWVk IHRvIGZlZWQgdXMgJWkiLAorCQkJCSAgICAgICBpbi0+aGRyLm1zZy5sZW4pOworCQkJCWdvdG8g YmFkX2NsaWVudDsKKwkJCX0KIAkJfQogCiAJCWlmIChpbi0+aGRyLm1zZy5sZW4gPD0gREVGQVVM VF9CVUZGRVJfU0laRSkKIAkJCWluLT5idWZmZXIgPSBpbi0+ZGVmYXVsdF9idWZmZXI7CiAJCWVs c2UKIAkJCWluLT5idWZmZXIgPSB0YWxsb2NfYXJyYXkoaW4sIGNoYXIsIGluLT5oZHIubXNnLmxl bik7CisJCS8qIEluIGNhc2Ugb2Ygbm8gbWVtb3J5IGp1c3QgdHJ5IGl0IGFnYWluIG5leHQgdGlt ZS4gKi8KIAkJaWYgKCFpbi0+YnVmZmVyKQotCQkJZ290byBiYWRfY2xpZW50OworCQkJcmV0dXJu OwogCQlpbi0+dXNlZCA9IDA7CiAJCWluLT5pbmhkciA9IGZhbHNlOwogCX0KQEAgLTE0NjksNiAr MTUzOCw5IEBAIHN0YXRpYyB2b2lkIG1hbnVhbF9ub2RlKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0 IGNoYXIgKmNoaWxkKQogCXN0cnVjdCB4c19wZXJtaXNzaW9ucyBwZXJtcyA9IHsgLmlkID0gMCwg LnBlcm1zID0gWFNfUEVSTV9OT05FIH07CiAKIAlub2RlID0gdGFsbG9jX3plcm8oTlVMTCwgc3Ry dWN0IG5vZGUpOworCWlmICghbm9kZSkKKwkJYmFyZl9wZXJyb3IoIkNvdWxkIG5vdCBhbGxvY2F0 ZSBpbml0aWFsIG5vZGUgJXMiLCBuYW1lKTsKKwogCW5vZGUtPm5hbWUgPSBuYW1lOwogCW5vZGUt PnBlcm1zID0gJnBlcm1zOwogCW5vZGUtPm51bV9wZXJtcyA9IDE7CkBAIC0xNTA2LDYgKzE1Nzgs OCBAQCBzdGF0aWMgdm9pZCBzZXR1cF9zdHJ1Y3R1cmUodm9pZCkKIHsKIAljaGFyICp0ZGJuYW1l OwogCXRkYm5hbWUgPSB0YWxsb2Nfc3RyZHVwKHRhbGxvY19hdXRvZnJlZV9jb250ZXh0KCksIHhz X2RhZW1vbl90ZGIoKSk7CisJaWYgKCF0ZGJuYW1lKQorCQliYXJmX3BlcnJvcigiQ291bGQgbm90 IGNyZWF0ZSB0ZGJuYW1lIik7CiAKIAlpZiAoISh0ZGJfZmxhZ3MgJiBUREJfSU5URVJOQUwpKQog CQl0ZGJfY3R4ID0gdGRiX29wZW5fZXgodGRibmFtZSwgMCwgdGRiX2ZsYWdzLCBPX1JEV1IsIDAs CkBAIC0xNTg0LDExICsxNjU4LDE0IEBAIHN0YXRpYyBjaGFyICpjaGlsZF9uYW1lKGNvbnN0IGNo YXIgKnMxLCBjb25zdCBjaGFyICpzMikKIH0KIAogCi1zdGF0aWMgdm9pZCByZW1lbWJlcl9zdHJp bmcoc3RydWN0IGhhc2h0YWJsZSAqaGFzaCwgY29uc3QgY2hhciAqc3RyKQorc3RhdGljIGludCBy ZW1lbWJlcl9zdHJpbmcoc3RydWN0IGhhc2h0YWJsZSAqaGFzaCwgY29uc3QgY2hhciAqc3RyKQog ewogCWNoYXIgKmsgPSBtYWxsb2Moc3RybGVuKHN0cikgKyAxKTsKKworCWlmICghaykKKwkJcmV0 dXJuIDA7CiAJc3RyY3B5KGssIHN0cik7Ci0JaGFzaHRhYmxlX2luc2VydChoYXNoLCBrLCAodm9p ZCAqKTEpOworCXJldHVybiBoYXNodGFibGVfaW5zZXJ0KGhhc2gsIGssICh2b2lkICopMSk7CiB9 CiAKIApAQCAtMTYwNSw5ICsxNjgyLDEwIEBAIHN0YXRpYyB2b2lkIHJlbWVtYmVyX3N0cmluZyhz dHJ1Y3QgaGFzaHRhYmxlICpoYXNoLCBjb25zdCBjaGFyICpzdHIpCiAgKiBBcyB3ZSBnbywgd2Ug cmVjb3JkIGVhY2ggbm9kZSBpbiB0aGUgZ2l2ZW4gcmVhY2hhYmxlIGhhc2h0YWJsZS4gIFRoZXNl CiAgKiBlbnRyaWVzIHdpbGwgYmUgdXNlZCBsYXRlciBpbiBjbGVhbl9zdG9yZS4KICAqLwotc3Rh dGljIHZvaWQgY2hlY2tfc3RvcmVfKGNvbnN0IGNoYXIgKm5hbWUsIHN0cnVjdCBoYXNodGFibGUg KnJlYWNoYWJsZSkKK3N0YXRpYyBpbnQgY2hlY2tfc3RvcmVfKGNvbnN0IGNoYXIgKm5hbWUsIHN0 cnVjdCBoYXNodGFibGUgKnJlYWNoYWJsZSkKIHsKIAlzdHJ1Y3Qgbm9kZSAqbm9kZSA9IHJlYWRf bm9kZShOVUxMLCBuYW1lLCBuYW1lKTsKKwlpbnQgcmV0ID0gMDsKIAogCWlmIChub2RlKSB7CiAJ CXNpemVfdCBpID0gMDsKQEAgLTE2MTUsMTQgKzE2OTMsMjQgQEAgc3RhdGljIHZvaWQgY2hlY2tf c3RvcmVfKGNvbnN0IGNoYXIgKm5hbWUsIHN0cnVjdCBoYXNodGFibGUgKnJlYWNoYWJsZSkKIAkJ c3RydWN0IGhhc2h0YWJsZSAqIGNoaWxkcmVuID0KIAkJCWNyZWF0ZV9oYXNodGFibGUoMTYsIGhh c2hfZnJvbV9rZXlfZm4sIGtleXNfZXF1YWxfZm4pOwogCi0JCXJlbWVtYmVyX3N0cmluZyhyZWFj aGFibGUsIG5hbWUpOworCQlpZiAoIXJlbWVtYmVyX3N0cmluZyhyZWFjaGFibGUsIG5hbWUpKSB7 CisJCQloYXNodGFibGVfZGVzdHJveShjaGlsZHJlbiwgMCk7CisJCQlsb2coImNoZWNrX3N0b3Jl OiBFTk9NRU0iKTsKKwkJCXJldHVybiBFTk9NRU07CisJCX0KIAotCQl3aGlsZSAoaSA8IG5vZGUt PmNoaWxkbGVuKSB7CisJCXdoaWxlIChpIDwgbm9kZS0+Y2hpbGRsZW4gJiYgIXJldCkgeworCQkJ c3RydWN0IG5vZGUgKmNoaWxkbm9kZTsKIAkJCXNpemVfdCBjaGlsZGxlbiA9IHN0cmxlbihub2Rl LT5jaGlsZHJlbiArIGkpOwogCQkJY2hhciAqIGNoaWxkbmFtZSA9IGNoaWxkX25hbWUobm9kZS0+ bmFtZSwKIAkJCQkJCSAgICAgIG5vZGUtPmNoaWxkcmVuICsgaSk7Ci0JCQlzdHJ1Y3Qgbm9kZSAq Y2hpbGRub2RlID0gcmVhZF9ub2RlKE5VTEwsIGNoaWxkbmFtZSwKLQkJCQkJCQkgICBjaGlsZG5h bWUpOworCisJCQlpZiAoIWNoaWxkbmFtZSkgeworCQkJCWxvZygiY2hlY2tfc3RvcmU6IEVOT01F TSIpOworCQkJCXJldCA9IEVOT01FTTsKKwkJCQlicmVhazsKKwkJCX0KKwkJCWNoaWxkbm9kZSA9 IHJlYWRfbm9kZShOVUxMLCBjaGlsZG5hbWUsIGNoaWxkbmFtZSk7CiAJCQkKIAkJCWlmIChjaGls ZG5vZGUpIHsKIAkJCQlpZiAoaGFzaHRhYmxlX3NlYXJjaChjaGlsZHJlbiwgY2hpbGRuYW1lKSkg ewpAQCAtMTYzNiwxMSArMTcyNCwxOCBAQCBzdGF0aWMgdm9pZCBjaGVja19zdG9yZV8oY29uc3Qg Y2hhciAqbmFtZSwgc3RydWN0IGhhc2h0YWJsZSAqcmVhY2hhYmxlKQogCQkJCQl9CiAJCQkJfQog CQkJCWVsc2UgewotCQkJCQlyZW1lbWJlcl9zdHJpbmcoY2hpbGRyZW4sIGNoaWxkbmFtZSk7Ci0J CQkJCWNoZWNrX3N0b3JlXyhjaGlsZG5hbWUsIHJlYWNoYWJsZSk7CisJCQkJCWlmICghcmVtZW1i ZXJfc3RyaW5nKGNoaWxkcmVuLAorCQkJCQkJCSAgICAgY2hpbGRuYW1lKSkgeworCQkJCQkJbG9n KCJjaGVja19zdG9yZTogRU5PTUVNIik7CisJCQkJCQl0YWxsb2NfZnJlZShjaGlsZG5vZGUpOwor CQkJCQkJdGFsbG9jX2ZyZWUoY2hpbGRuYW1lKTsKKwkJCQkJCXJldCA9IEVOT01FTTsKKwkJCQkJ CWJyZWFrOworCQkJCQl9CisJCQkJCXJldCA9IGNoZWNrX3N0b3JlXyhjaGlsZG5hbWUsCisJCQkJ CQkJICAgcmVhY2hhYmxlKTsKIAkJCQl9Ci0JCQl9Ci0JCQllbHNlIHsKKwkJCX0gZWxzZSBpZiAo ZXJybm8gIT0gRU5PTUVNKSB7CiAJCQkJbG9nKCJjaGVja19zdG9yZTogTm8gY2hpbGQgJyVzJyBm b3VuZCFcbiIsCiAJCQkJICAgIGNoaWxkbmFtZSk7CiAKQEAgLTE2NDgsNiArMTc0Myw5IEBAIHN0 YXRpYyB2b2lkIGNoZWNrX3N0b3JlXyhjb25zdCBjaGFyICpuYW1lLCBzdHJ1Y3QgaGFzaHRhYmxl ICpyZWFjaGFibGUpCiAJCQkJCXJlbW92ZV9jaGlsZF9lbnRyeShOVUxMLCBub2RlLCBpKTsKIAkJ CQkJaSAtPSBjaGlsZGxlbiArIDE7CiAJCQkJfQorCQkJfSBlbHNlIHsKKwkJCQlsb2coImNoZWNr X3N0b3JlOiBFTk9NRU0iKTsKKwkJCQlyZXQgPSBFTk9NRU07CiAJCQl9CiAKIAkJCXRhbGxvY19m cmVlKGNoaWxkbm9kZSk7CkBAIC0xNjU4LDE0ICsxNzU2LDE4IEBAIHN0YXRpYyB2b2lkIGNoZWNr X3N0b3JlXyhjb25zdCBjaGFyICpuYW1lLCBzdHJ1Y3QgaGFzaHRhYmxlICpyZWFjaGFibGUpCiAJ CWhhc2h0YWJsZV9kZXN0cm95KGNoaWxkcmVuLCAwIC8qIERvbid0IGZyZWUgdmFsdWVzICh0aGV5 IGFyZQogCQkJCQkJIGFsbCAodm9pZCAqKTEpICovKTsKIAkJdGFsbG9jX2ZyZWUobm9kZSk7Ci0J fQotCWVsc2UgeworCX0gZWxzZSBpZiAoZXJybm8gIT0gRU5PTUVNKSB7CiAJCS8qIEltcG9zc2li bGUsIGJlY2F1c2Ugbm8gZGF0YWJhc2Ugc2hvdWxkIGV2ZXIgYmUgd2l0aG91dCB0aGUKIAkJICAg cm9vdCwgYW5kIG90aGVyd2lzZSwgd2UndmUganVzdCBjaGVja2VkIGluIG91ciBjYWxsZXIKIAkJ ICAgKHdoaWNoIG1hZGUgYSByZWN1cnNpdmUgY2FsbCB0byBnZXQgaGVyZSkuICovCiAJCSAgIAog CQlsb2coImNoZWNrX3N0b3JlOiBObyBjaGlsZCAnJXMnIGZvdW5kOiBpbXBvc3NpYmxlISIsIG5h bWUpOworCX0gZWxzZSB7CisJCWxvZygiY2hlY2tfc3RvcmU6IEVOT01FTSIpOworCQlyZXQgPSBF Tk9NRU07CiAJfQorCisJcmV0dXJuIHJldDsKIH0KIAogCkBAIC0xNjc4LDYgKzE3ODAsMTEgQEAg c3RhdGljIGludCBjbGVhbl9zdG9yZV8oVERCX0NPTlRFWFQgKnRkYiwgVERCX0RBVEEga2V5LCBU REJfREFUQSB2YWwsCiAJc3RydWN0IGhhc2h0YWJsZSAqcmVhY2hhYmxlID0gcHJpdmF0ZTsKIAlj aGFyICogbmFtZSA9IHRhbGxvY19zdHJuZHVwKE5VTEwsIGtleS5kcHRyLCBrZXkuZHNpemUpOwog CisJaWYgKCFuYW1lKSB7CisJCWxvZygiY2xlYW5fc3RvcmU6IEVOT01FTSIpOworCQlyZXR1cm4g MTsKKwl9CisKIAlpZiAoIWhhc2h0YWJsZV9zZWFyY2gocmVhY2hhYmxlLCBuYW1lKSkgewogCQls b2coImNsZWFuX3N0b3JlOiAnJXMnIGlzIG9ycGhhbmVkISIsIG5hbWUpOwogCQlpZiAocmVjb3Zl cnkpIHsKQEAgLTE3MDcsOSArMTgxNCwxNCBAQCBzdGF0aWMgdm9pZCBjaGVja19zdG9yZSh2b2lk KQogCXN0cnVjdCBoYXNodGFibGUgKiByZWFjaGFibGUgPQogCQljcmVhdGVfaGFzaHRhYmxlKDE2 LCBoYXNoX2Zyb21fa2V5X2ZuLCBrZXlzX2VxdWFsX2ZuKTsKICAKKwlpZiAoIXJlYWNoYWJsZSkg eworCQlsb2coImNoZWNrX3N0b3JlOiBFTk9NRU0iKTsKKwkJcmV0dXJuOworCX0KKwogCWxvZygi Q2hlY2tpbmcgc3RvcmUgLi4uIik7Ci0JY2hlY2tfc3RvcmVfKHJvb3QsIHJlYWNoYWJsZSk7Ci0J Y2xlYW5fc3RvcmUocmVhY2hhYmxlKTsKKwlpZiAoIWNoZWNrX3N0b3JlXyhyb290LCByZWFjaGFi bGUpKQorCQljbGVhbl9zdG9yZShyZWFjaGFibGUpOwogCWxvZygiQ2hlY2tpbmcgc3RvcmUgY29t cGxldGUuIik7CiAKIAloYXNodGFibGVfZGVzdHJveShyZWFjaGFibGUsIDAgLyogRG9uJ3QgZnJl ZSB2YWx1ZXMgKHRoZXkgYXJlIGFsbApAQCAtMTc2MywxMCArMTg3NSwxNCBAQCBzdGF0aWMgdm9p ZCBpbml0X3NvY2tldHMoaW50ICoqcHNvY2ssIGludCAqKnByb19zb2NrKQogCiAJLyogQ3JlYXRl IHNvY2tldHMgZm9yIHRoZW0gdG8gbGlzdGVuIHRvLiAqLwogCSpwc29jayA9IHNvY2sgPSB0YWxs b2ModGFsbG9jX2F1dG9mcmVlX2NvbnRleHQoKSwgaW50KTsKKwlpZiAoIXNvY2spCisJCWJhcmZf cGVycm9yKCJObyBtZW1vcnkgd2hlbiBjcmVhdGluZyBzb2NrZXRzIik7CiAJKnNvY2sgPSBzb2Nr ZXQoUEZfVU5JWCwgU09DS19TVFJFQU0sIDApOwogCWlmICgqc29jayA8IDApCiAJCWJhcmZfcGVy cm9yKCJDb3VsZCBub3QgY3JlYXRlIHNvY2tldCIpOwogCSpwcm9fc29jayA9IHJvX3NvY2sgPSB0 YWxsb2ModGFsbG9jX2F1dG9mcmVlX2NvbnRleHQoKSwgaW50KTsKKwlpZiAoIXJvX3NvY2spCisJ CWJhcmZfcGVycm9yKCJObyBtZW1vcnkgd2hlbiBjcmVhdGluZyBzb2NrZXRzIik7CiAJKnJvX3Nv Y2sgPSBzb2NrZXQoUEZfVU5JWCwgU09DS19TVFJFQU0sIDApOwogCWlmICgqcm9fc29jayA8IDAp CiAJCWJhcmZfcGVycm9yKCJDb3VsZCBub3QgY3JlYXRlIHNvY2tldCIpOwpkaWZmIC0tZ2l0IGEv dG9vbHMveGVuc3RvcmUveGVuc3RvcmVkX2RvbWFpbi5jIGIvdG9vbHMveGVuc3RvcmUveGVuc3Rv cmVkX2RvbWFpbi5jCmluZGV4IGZlZmVkNWUuLjUzMjIyODAgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3hl bnN0b3JlL3hlbnN0b3JlZF9kb21haW4uYworKysgYi90b29scy94ZW5zdG9yZS94ZW5zdG9yZWRf ZG9tYWluLmMKQEAgLTI3OSwxMCArMjc5LDE1IEBAIHN0YXRpYyBzdHJ1Y3QgZG9tYWluICpuZXdf ZG9tYWluKHZvaWQgKmNvbnRleHQsIHVuc2lnbmVkIGludCBkb21pZCwKIAlpbnQgcmM7CiAKIAlk b21haW4gPSB0YWxsb2MoY29udGV4dCwgc3RydWN0IGRvbWFpbik7CisJaWYgKCFkb21haW4pCisJ CXJldHVybiBOVUxMOworCiAJZG9tYWluLT5wb3J0ID0gMDsKIAlkb21haW4tPnNodXRkb3duID0g MDsKIAlkb21haW4tPmRvbWlkID0gZG9taWQ7CiAJZG9tYWluLT5wYXRoID0gdGFsbG9jX2RvbWFp bl9wYXRoKGRvbWFpbiwgZG9taWQpOworCWlmICghZG9tYWluLT5wYXRoKQorCQlyZXR1cm4gTlVM TDsKIAogCWxpc3RfYWRkKCZkb21haW4tPmxpc3QsICZkb21haW5zKTsKIAl0YWxsb2Nfc2V0X2Rl c3RydWN0b3IoZG9tYWluLCBkZXN0cm95X2RvbWFpbik7CkBAIC0yOTQsNiArMjk5LDkgQEAgc3Rh dGljIHN0cnVjdCBkb21haW4gKm5ld19kb21haW4odm9pZCAqY29udGV4dCwgdW5zaWduZWQgaW50 IGRvbWlkLAogCWRvbWFpbi0+cG9ydCA9IHJjOwogCiAJZG9tYWluLT5jb25uID0gbmV3X2Nvbm5l Y3Rpb24od3JpdGVjaG4sIHJlYWRjaG4pOworCWlmICghZG9tYWluLT5jb25uKQorCQlyZXR1cm4g TlVMTDsKKwogCWRvbWFpbi0+Y29ubi0+ZG9tYWluID0gZG9tYWluOwogCWRvbWFpbi0+Y29ubi0+ aWQgPSBkb21pZDsKIApAQCAtNDk4LDYgKzUwNiw4IEBAIGludCBkb19nZXRfZG9tYWluX3BhdGgo c3RydWN0IGNvbm5lY3Rpb24gKmNvbm4sIHN0cnVjdCBidWZmZXJlZF9kYXRhICppbikKIAkJcmV0 dXJuIEVJTlZBTDsKIAogCXBhdGggPSB0YWxsb2NfZG9tYWluX3BhdGgoY29ubiwgYXRvaShkb21p ZF9zdHIpKTsKKwlpZiAoIXBhdGgpCisJCXJldHVybiBlcnJubzsKIAogCXNlbmRfcmVwbHkoY29u biwgWFNfR0VUX0RPTUFJTl9QQVRILCBwYXRoLCBzdHJsZW4ocGF0aCkgKyAxKTsKIApkaWZmIC0t Z2l0IGEvdG9vbHMveGVuc3RvcmUveGVuc3RvcmVkX3RyYW5zYWN0aW9uLmMgYi90b29scy94ZW5z dG9yZS94ZW5zdG9yZWRfdHJhbnNhY3Rpb24uYwppbmRleCBkMzE0Y2Q1Li4xNmYyNWZiIDEwMDY0 NAotLS0gYS90b29scy94ZW5zdG9yZS94ZW5zdG9yZWRfdHJhbnNhY3Rpb24uYworKysgYi90b29s cy94ZW5zdG9yZS94ZW5zdG9yZWRfdHJhbnNhY3Rpb24uYwpAQCAtMTE5LDcgKzExOSwxOCBAQCB2 b2lkIGFkZF9jaGFuZ2Vfbm9kZShzdHJ1Y3QgY29ubmVjdGlvbiAqY29ubiwgc3RydWN0IG5vZGUg Km5vZGUsIGJvb2wgcmVjdXJzZSkKIAl9CiAKIAlpID0gdGFsbG9jKHRyYW5zLCBzdHJ1Y3QgY2hh bmdlZF9ub2RlKTsKKwlpZiAoIWkpIHsKKwkJLyogQWxsIHdlIGNhbiBkbyBpcyBsZXQgdGhlIHRy YW5zYWN0aW9uIGZhaWwuICovCisJCWdlbmVyYXRpb24rKzsKKwkJcmV0dXJuOworCX0KIAlpLT5u b2RlID0gdGFsbG9jX3N0cmR1cChpLCBub2RlLT5uYW1lKTsKKwlpZiAoIWktPm5vZGUpIHsKKwkJ LyogQWxsIHdlIGNhbiBkbyBpcyBsZXQgdGhlIHRyYW5zYWN0aW9uIGZhaWwuICovCisJCWdlbmVy YXRpb24rKzsKKwkJdGFsbG9jX2ZyZWUoaSk7CisJCXJldHVybjsKKwl9CiAJaS0+cmVjdXJzZSA9 IHJlY3Vyc2U7CiAJbGlzdF9hZGRfdGFpbCgmaS0+bGlzdCwgJnRyYW5zLT5jaGFuZ2VzKTsKIH0K QEAgLTE2MywxMSArMTc0LDE2IEBAIGludCBkb190cmFuc2FjdGlvbl9zdGFydChzdHJ1Y3QgY29u bmVjdGlvbiAqY29ubiwgc3RydWN0IGJ1ZmZlcmVkX2RhdGEgKmluKQogCiAJLyogQXR0YWNoIHRy YW5zYWN0aW9uIHRvIGlucHV0IGZvciBhdXRvZnJlZSB1bnRpbCBpdCdzIGNvbXBsZXRlICovCiAJ dHJhbnMgPSB0YWxsb2NfemVybyhpbiwgc3RydWN0IHRyYW5zYWN0aW9uKTsKKwlpZiAoIXRyYW5z KQorCQlyZXR1cm4gRU5PTUVNOworCiAJSU5JVF9MSVNUX0hFQUQoJnRyYW5zLT5jaGFuZ2VzKTsK IAlJTklUX0xJU1RfSEVBRCgmdHJhbnMtPmNoYW5nZWRfZG9tYWlucyk7CiAJdHJhbnMtPmdlbmVy YXRpb24gPSBnZW5lcmF0aW9uOwogCXRyYW5zLT50ZGJfbmFtZSA9IHRhbGxvY19hc3ByaW50Zih0 cmFucywgIiVzLiVwIiwKIAkJCQkJICB4c19kYWVtb25fdGRiKCksIHRyYW5zKTsKKwlpZiAoIXRy YW5zLT50ZGJfbmFtZSkKKwkJcmV0dXJuIEVOT01FTTsKIAl0cmFucy0+dGRiID0gdGRiX2NvcHko dGRiX2NvbnRleHQoY29ubiksIHRyYW5zLT50ZGJfbmFtZSk7CiAJaWYgKCF0cmFucy0+dGRiKQog CQlyZXR1cm4gZXJybm87CkBAIC0yNDYsNiArMjYyLDExIEBAIHZvaWQgdHJhbnNhY3Rpb25fZW50 cnlfaW5jKHN0cnVjdCB0cmFuc2FjdGlvbiAqdHJhbnMsIHVuc2lnbmVkIGludCBkb21pZCkKIAkJ fQogCiAJZCA9IHRhbGxvYyh0cmFucywgc3RydWN0IGNoYW5nZWRfZG9tYWluKTsKKwlpZiAoIWQp IHsKKwkJLyogTGV0IHRoZSB0cmFuc2FjdGlvbiBmYWlsLiAqLworCQlnZW5lcmF0aW9uKys7CisJ CXJldHVybjsKKwl9CiAJZC0+ZG9taWQgPSBkb21pZDsKIAlkLT5uYmVudHJ5ID0gMTsKIAlsaXN0 X2FkZF90YWlsKCZkLT5saXN0LCAmdHJhbnMtPmNoYW5nZWRfZG9tYWlucyk7CkBAIC0yNjIsNiAr MjgzLDExIEBAIHZvaWQgdHJhbnNhY3Rpb25fZW50cnlfZGVjKHN0cnVjdCB0cmFuc2FjdGlvbiAq dHJhbnMsIHVuc2lnbmVkIGludCBkb21pZCkKIAkJfQogCiAJZCA9IHRhbGxvYyh0cmFucywgc3Ry dWN0IGNoYW5nZWRfZG9tYWluKTsKKwlpZiAoIWQpIHsKKwkJLyogTGV0IHRoZSB0cmFuc2FjdGlv biBmYWlsLiAqLworCQlnZW5lcmF0aW9uKys7CisJCXJldHVybjsKKwl9CiAJZC0+ZG9taWQgPSBk b21pZDsKIAlkLT5uYmVudHJ5ID0gLTE7CiAJbGlzdF9hZGRfdGFpbCgmZC0+bGlzdCwgJnRyYW5z LT5jaGFuZ2VkX2RvbWFpbnMpOwpkaWZmIC0tZ2l0IGEvdG9vbHMveGVuc3RvcmUveGVuc3RvcmVk X3dhdGNoLmMgYi90b29scy94ZW5zdG9yZS94ZW5zdG9yZWRfd2F0Y2guYwppbmRleCA5NDI1MWRi Li4wZGM1YTQwIDEwMDY0NAotLS0gYS90b29scy94ZW5zdG9yZS94ZW5zdG9yZWRfd2F0Y2guYwor KysgYi90b29scy94ZW5zdG9yZS94ZW5zdG9yZWRfd2F0Y2guYwpAQCAtMTExLDYgKzExMSw4IEBA IHN0YXRpYyB2b2lkIGFkZF9ldmVudChzdHJ1Y3QgY29ubmVjdGlvbiAqY29ubiwKIAogCWxlbiA9 IHN0cmxlbihuYW1lKSArIDEgKyBzdHJsZW4od2F0Y2gtPnRva2VuKSArIDE7CiAJZGF0YSA9IHRh bGxvY19hcnJheShjdHgsIGNoYXIsIGxlbik7CisJaWYgKCFkYXRhKQorCQlyZXR1cm47CiAJc3Ry Y3B5KGRhdGEsIG5hbWUpOwogCXN0cmNweShkYXRhICsgc3RybGVuKG5hbWUpICsgMSwgd2F0Y2gt PnRva2VuKTsKIAlzZW5kX3JlcGx5KGNvbm4sIFhTX1dBVENIX0VWRU5ULCBkYXRhLCBsZW4pOwpA QCAtMTY1LDYgKzE2Nyw4IEBAIGludCBkb193YXRjaChzdHJ1Y3QgY29ubmVjdGlvbiAqY29ubiwg c3RydWN0IGJ1ZmZlcmVkX2RhdGEgKmluKQogCX0gZWxzZSB7CiAJCXJlbGF0aXZlID0gIXN0cnN0 YXJ0cyh2ZWNbMF0sICIvIik7CiAJCXZlY1swXSA9IGNhbm9uaWNhbGl6ZShjb25uLCBpbiwgdmVj WzBdKTsKKwkJaWYgKCF2ZWNbMF0pCisJCQlyZXR1cm4gRU5PTUVNOwogCQlpZiAoIWlzX3ZhbGlk X25vZGVuYW1lKHZlY1swXSkpCiAJCQlyZXR1cm4gRUlOVkFMOwogCX0KQEAgLTE4MCw4ICsxODQs MTQgQEAgaW50IGRvX3dhdGNoKHN0cnVjdCBjb25uZWN0aW9uICpjb25uLCBzdHJ1Y3QgYnVmZmVy ZWRfZGF0YSAqaW4pCiAJCXJldHVybiBFMkJJRzsKIAogCXdhdGNoID0gdGFsbG9jKGNvbm4sIHN0 cnVjdCB3YXRjaCk7CisJaWYgKCF3YXRjaCkKKwkJcmV0dXJuIEVOT01FTTsKIAl3YXRjaC0+bm9k ZSA9IHRhbGxvY19zdHJkdXAod2F0Y2gsIHZlY1swXSk7CiAJd2F0Y2gtPnRva2VuID0gdGFsbG9j X3N0cmR1cCh3YXRjaCwgdmVjWzFdKTsKKwlpZiAoIXdhdGNoLT5ub2RlIHx8ICF3YXRjaC0+dG9r ZW4pIHsKKwkJdGFsbG9jX2ZyZWUod2F0Y2gpOworCQlyZXR1cm4gRU5PTUVNOworCX0KIAlpZiAo cmVsYXRpdmUpCiAJCXdhdGNoLT5yZWxhdGl2ZV9wYXRoID0gZ2V0X2ltcGxpY2l0X3BhdGgoY29u bik7CiAJZWxzZQpAQCAtMjEwLDYgKzIyMCw4IEBAIGludCBkb191bndhdGNoKHN0cnVjdCBjb25u ZWN0aW9uICpjb25uLCBzdHJ1Y3QgYnVmZmVyZWRfZGF0YSAqaW4pCiAJCXJldHVybiBFSU5WQUw7 CiAKIAlub2RlID0gY2Fub25pY2FsaXplKGNvbm4sIGluLCB2ZWNbMF0pOworCWlmICghbm9kZSkK KwkJcmV0dXJuIEVOT01FTTsKIAlsaXN0X2Zvcl9lYWNoX2VudHJ5KHdhdGNoLCAmY29ubi0+d2F0 Y2hlcywgbGlzdCkgewogCQlpZiAoc3RyZXEod2F0Y2gtPm5vZGUsIG5vZGUpICYmIHN0cmVxKHdh dGNoLT50b2tlbiwgdmVjWzFdKSkgewogCQkJbGlzdF9kZWwoJndhdGNoLT5saXN0KTsKLS0gCjIu MTAuMgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhl bi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0 cy54ZW4ub3JnL3hlbi1kZXZlbAo=