From mboxrd@z Thu Jan 1 00:00:00 1970 From: Keir Fraser Subject: [PATCH] [GNTTAB] expandable grant table Date: Fri, 05 Jan 2007 13:43:10 +0000 Message-ID: References: Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="B_3250849392_6933513" Return-path: In-Reply-To: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: xen-devel List-Id: xen-devel@lists.xenproject.org > This message is in MIME format. Since your mail reader does not understand this format, some or all of this message may not be legible. --B_3250849392_6933513 Content-type: text/plain; charset="US-ASCII" Content-transfer-encoding: 7bit This one is waiting for final review before being checked in. Some people want the functionality this enables (>3 VIFs per guest) so I'm posting the patch in advance of applying it to xen-unstable. -- Keir --B_3250849392_6933513 Content-type: application/octet-stream; name="expandable_grant_vs_12410.patch" Content-disposition: attachment; filename="expandable_grant_vs_12410.patch" Content-transfer-encoding: base64 ZGlmZiAtciBmMDI2ZDQwOTEzMjIgbGludXgtMi42LXhlbi1zcGFyc2UvZHJpdmVycy94ZW4v Y29yZS9nbnR0YWIuYwotLS0gYS9saW51eC0yLjYteGVuLXNwYXJzZS9kcml2ZXJzL3hlbi9j b3JlL2dudHRhYi5jCVR1ZSBOb3YgMTQgMTg6NTI6NTggMjAwNiArMDAwMAorKysgYi9saW51 eC0yLjYteGVuLXNwYXJzZS9kcml2ZXJzL3hlbi9jb3JlL2dudHRhYi5jCVR1ZSBOb3YgMTQg MTU6NDc6NTEgMjAwNiArMDAwMApAQCAtMyw3ICszLDcgQEAKICAqCiAgKiBHcmFudGluZyBm b3JlaWduIGFjY2VzcyB0byBvdXIgbWVtb3J5IHJlc2VydmF0aW9uLgogICoKLSAqIENvcHly aWdodCAoYykgMjAwNSwgQ2hyaXN0b3BoZXIgQ2xhcmsKKyAqIENvcHlyaWdodCAoYykgMjAw NS0yMDA2LCBDaHJpc3RvcGhlciBDbGFyawogICogQ29weXJpZ2h0IChjKSAyMDA0LTIwMDUs IEsgQSBGcmFzZXIKICAqCiAgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91 IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBAIC0zNSw3ICszNSw2IEBACiAjaW5jbHVk ZSA8bGludXgvbW9kdWxlLmg+CiAjaW5jbHVkZSA8bGludXgvc2NoZWQuaD4KICNpbmNsdWRl IDxsaW51eC9tbS5oPgotI2luY2x1ZGUgPGxpbnV4L3ZtYWxsb2MuaD4KICNpbmNsdWRlIDx4 ZW4vaW50ZXJmYWNlL3hlbi5oPgogI2luY2x1ZGUgPHhlbi9nbnR0YWIuaD4KICNpbmNsdWRl IDxhc20vcGd0YWJsZS5oPgpAQCAtNTAsMzcgKzQ5LDYzIEBACiAKIC8qIEV4dGVybmFsIHRv b2xzIHJlc2VydmUgZmlyc3QgZmV3IGdyYW50IHRhYmxlIGVudHJpZXMuICovCiAjZGVmaW5l IE5SX1JFU0VSVkVEX0VOVFJJRVMgOAotCi0jZGVmaW5lIE5SX0dSQU5UX0VOVFJJRVMgXAot CShOUl9HUkFOVF9GUkFNRVMgKiBQQUdFX1NJWkUgLyBzaXplb2Yoc3RydWN0IGdyYW50X2Vu dHJ5KSkKLSNkZWZpbmUgR05UVEFCX0xJU1RfRU5EIChOUl9HUkFOVF9FTlRSSUVTICsgMSkK LQotc3RhdGljIGdyYW50X3JlZl90IGdudHRhYl9saXN0W05SX0dSQU5UX0VOVFJJRVNdOwor I2RlZmluZSBHTlRUQUJfTElTVF9FTkQgMHhmZmZmZmZmZgorI2RlZmluZSBHUkVGU19QRVJf R1JBTlRfRlJBTUUgKFBBR0VfU0laRSAvIHNpemVvZihncmFudF9lbnRyeV90KSkKKworc3Rh dGljIGdyYW50X3JlZl90ICoqZ250dGFiX2xpc3Q7CitzdGF0aWMgdW5zaWduZWQgaW50IG5y X2dyYW50X2ZyYW1lczsKK3N0YXRpYyB1bnNpZ25lZCBpbnQgYm9vdF9tYXhfbnJfZ3JhbnRf ZnJhbWVzOwogc3RhdGljIGludCBnbnR0YWJfZnJlZV9jb3VudDsKIHN0YXRpYyBncmFudF9y ZWZfdCBnbnR0YWJfZnJlZV9oZWFkOwogc3RhdGljIERFRklORV9TUElOTE9DSyhnbnR0YWJf bGlzdF9sb2NrKTsKIAogc3RhdGljIHN0cnVjdCBncmFudF9lbnRyeSAqc2hhcmVkOworI2lm bmRlZiBDT05GSUdfWEVOCitzdGF0aWMgdW5zaWduZWQgbG9uZyByZXN1bWVfZnJhbWVzOwor I2VuZGlmCiAKIHN0YXRpYyBzdHJ1Y3QgZ250dGFiX2ZyZWVfY2FsbGJhY2sgKmdudHRhYl9m cmVlX2NhbGxiYWNrX2xpc3Q7CiAKK3N0YXRpYyBpbnQgZ250dGFiX2V4cGFuZCh1bnNpZ25l ZCBpbnQgcmVxX2VudHJpZXMpOworCitzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludAorZ250 dGFiX2xpc3RfdGFibGUoZ3JhbnRfcmVmX3QgcmVmKQoreworICAgIHJldHVybiAocmVmIC8g KFBBR0VfU0laRSAvIHNpemVvZihncmFudF9yZWZfdCAqKSkpOworfQorCitzdGF0aWMgaW5s aW5lIHVuc2lnbmVkIGludAorZ250dGFiX2xpc3RfaW5kZXgoZ3JhbnRfcmVmX3QgcmVmKQor eworICAgIHJldHVybiAocmVmICUgKFBBR0VfU0laRSAvIHNpemVvZihncmFudF9yZWZfdCAq KSkpOworfQorCiBzdGF0aWMgaW50IGdldF9mcmVlX2VudHJpZXMoaW50IGNvdW50KQogewog CXVuc2lnbmVkIGxvbmcgZmxhZ3M7Ci0JaW50IHJlZjsKKwlpbnQgcmVmLCByYzsKIAlncmFu dF9yZWZfdCBoZWFkOworCiAJc3Bpbl9sb2NrX2lycXNhdmUoJmdudHRhYl9saXN0X2xvY2ss IGZsYWdzKTsKLQlpZiAoZ250dGFiX2ZyZWVfY291bnQgPCBjb3VudCkgeworCisJaWYgKChn bnR0YWJfZnJlZV9jb3VudCA8IGNvdW50KSAmJgorCSAgICAoKHJjID0gZ250dGFiX2V4cGFu ZChjb3VudCAtIGdudHRhYl9mcmVlX2NvdW50KSkgPCAwKSkgewogCQlzcGluX3VubG9ja19p cnFyZXN0b3JlKCZnbnR0YWJfbGlzdF9sb2NrLCBmbGFncyk7Ci0JCXJldHVybiAtMTsKLQl9 CisJCXJldHVybiByYzsKKwl9CisKIAlyZWYgPSBoZWFkID0gZ250dGFiX2ZyZWVfaGVhZDsK IAlnbnR0YWJfZnJlZV9jb3VudCAtPSBjb3VudDsKIAl3aGlsZSAoY291bnQtLSA+IDEpCi0J CWhlYWQgPSBnbnR0YWJfbGlzdFtoZWFkXTsKLQlnbnR0YWJfZnJlZV9oZWFkID0gZ250dGFi X2xpc3RbaGVhZF07Ci0JZ250dGFiX2xpc3RbaGVhZF0gPSBHTlRUQUJfTElTVF9FTkQ7CisJ CWhlYWQgPSBnbnR0YWJfbGlzdFtnbnR0YWJfbGlzdF90YWJsZShoZWFkKV0KKwkJCQkgIFtn bnR0YWJfbGlzdF9pbmRleChoZWFkKV07CisJZ250dGFiX2ZyZWVfaGVhZCA9IGdudHRhYl9s aXN0W2dudHRhYl9saXN0X3RhYmxlKGhlYWQpXQorCQkJCSAgICAgIFtnbnR0YWJfbGlzdF9p bmRleChoZWFkKV07CisJZ250dGFiX2xpc3RbZ250dGFiX2xpc3RfdGFibGUoaGVhZCldCisJ CSAgIFtnbnR0YWJfbGlzdF9pbmRleChoZWFkKV0gPSBHTlRUQUJfTElTVF9FTkQ7CisKIAlz cGluX3VubG9ja19pcnFyZXN0b3JlKCZnbnR0YWJfbGlzdF9sb2NrLCBmbGFncyk7CisKIAly ZXR1cm4gcmVmOwogfQogCkBAIC0xMTYsNyArMTQxLDggQEAgc3RhdGljIHZvaWQgcHV0X2Zy ZWVfZW50cnkoZ3JhbnRfcmVmX3QgcgogewogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAJc3Bp bl9sb2NrX2lycXNhdmUoJmdudHRhYl9saXN0X2xvY2ssIGZsYWdzKTsKLQlnbnR0YWJfbGlz dFtyZWZdID0gZ250dGFiX2ZyZWVfaGVhZDsKKwlnbnR0YWJfbGlzdFtnbnR0YWJfbGlzdF90 YWJsZShyZWYpXQorCQkgICBbZ250dGFiX2xpc3RfaW5kZXgocmVmKV0gPSBnbnR0YWJfZnJl ZV9oZWFkOwogCWdudHRhYl9mcmVlX2hlYWQgPSByZWY7CiAJZ250dGFiX2ZyZWVfY291bnQr KzsKIAljaGVja19mcmVlX2NhbGxiYWNrcygpOwpAQCAtMTMyLDcgKzE1OCw3IEBAIGludCBn bnR0YWJfZ3JhbnRfZm9yZWlnbl9hY2Nlc3MoZG9taWRfdCAKIHsKIAlpbnQgcmVmOwogCi0J aWYgKHVubGlrZWx5KChyZWYgPSBnZXRfZnJlZV9lbnRyeSgpKSA9PSAtMSkpCisJaWYgKHVu bGlrZWx5KChyZWYgPSBnZXRfZnJlZV9lbnRyeSgpKSA8IDApKQogCQlyZXR1cm4gLUVOT1NQ QzsKIAogCXNoYXJlZFtyZWZdLmZyYW1lID0gZnJhbWU7CkBAIC0yMDIsNyArMjI4LDcgQEAg aW50IGdudHRhYl9ncmFudF9mb3JlaWduX3RyYW5zZmVyKGRvbWlkXwogewogCWludCByZWY7 CiAKLQlpZiAodW5saWtlbHkoKHJlZiA9IGdldF9mcmVlX2VudHJ5KCkpID09IC0xKSkKKwlp ZiAodW5saWtlbHkoKHJlZiA9IGdldF9mcmVlX2VudHJ5KCkpIDwgMCkpCiAJCXJldHVybiAt RU5PU1BDOwogCWdudHRhYl9ncmFudF9mb3JlaWduX3RyYW5zZmVyX3JlZihyZWYsIGRvbWlk LCBwZm4pOwogCkBAIC0yNzMsMTEgKzI5OSwxNCBAQCB2b2lkIGdudHRhYl9mcmVlX2dyYW50 X3JlZmVyZW5jZXMoZ3JhbnRfCiAJCXJldHVybjsKIAlzcGluX2xvY2tfaXJxc2F2ZSgmZ250 dGFiX2xpc3RfbG9jaywgZmxhZ3MpOwogCXJlZiA9IGhlYWQ7Ci0Jd2hpbGUgKGdudHRhYl9s aXN0W3JlZl0gIT0gR05UVEFCX0xJU1RfRU5EKSB7Ci0JCXJlZiA9IGdudHRhYl9saXN0W3Jl Zl07CisJd2hpbGUgKGdudHRhYl9saXN0W2dudHRhYl9saXN0X3RhYmxlKHJlZildCisJCQkg IFtnbnR0YWJfbGlzdF9pbmRleChyZWYpXSAhPSBHTlRUQUJfTElTVF9FTkQpIHsKKwkJcmVm ID0gZ250dGFiX2xpc3RbZ250dGFiX2xpc3RfdGFibGUocmVmKV0KKwkJCQkgW2dudHRhYl9s aXN0X2luZGV4KHJlZildOwogCQljb3VudCsrOwogCX0KLQlnbnR0YWJfbGlzdFtyZWZdID0g Z250dGFiX2ZyZWVfaGVhZDsKKwlnbnR0YWJfbGlzdFtnbnR0YWJfbGlzdF90YWJsZShyZWYp XQorCQkgICBbZ250dGFiX2xpc3RfaW5kZXgocmVmKV0gPSBnbnR0YWJfZnJlZV9oZWFkOwog CWdudHRhYl9mcmVlX2hlYWQgPSBoZWFkOwogCWdudHRhYl9mcmVlX2NvdW50ICs9IGNvdW50 OwogCWNoZWNrX2ZyZWVfY2FsbGJhY2tzKCk7CkBAIC0yODksNyArMzE4LDcgQEAgaW50IGdu dHRhYl9hbGxvY19ncmFudF9yZWZlcmVuY2VzKHUxNiBjbwogewogCWludCBoID0gZ2V0X2Zy ZWVfZW50cmllcyhjb3VudCk7CiAKLQlpZiAoaCA9PSAtMSkKKwlpZiAoaCA8IDApCiAJCXJl dHVybiAtRU5PU1BDOwogCiAJKmhlYWQgPSBoOwpAQCAtMzA5LDcgKzMzOCw4IEBAIGludCBn bnR0YWJfY2xhaW1fZ3JhbnRfcmVmZXJlbmNlKGdyYW50X3IKIAlncmFudF9yZWZfdCBnID0g KnByaXZhdGVfaGVhZDsKIAlpZiAodW5saWtlbHkoZyA9PSBHTlRUQUJfTElTVF9FTkQpKQog CQlyZXR1cm4gLUVOT1NQQzsKLQkqcHJpdmF0ZV9oZWFkID0gZ250dGFiX2xpc3RbZ107CisJ KnByaXZhdGVfaGVhZCA9IGdudHRhYl9saXN0W2dudHRhYl9saXN0X3RhYmxlKGcpXQorCQkJ CSAgIFtnbnR0YWJfbGlzdF9pbmRleChnKV07CiAJcmV0dXJuIGc7CiB9CiBFWFBPUlRfU1lN Qk9MX0dQTChnbnR0YWJfY2xhaW1fZ3JhbnRfcmVmZXJlbmNlKTsKQEAgLTMxNyw3ICszNDcs OCBAQCB2b2lkIGdudHRhYl9yZWxlYXNlX2dyYW50X3JlZmVyZW5jZShncmFuCiB2b2lkIGdu dHRhYl9yZWxlYXNlX2dyYW50X3JlZmVyZW5jZShncmFudF9yZWZfdCAqcHJpdmF0ZV9oZWFk LAogCQkJCSAgICBncmFudF9yZWZfdCByZWxlYXNlKQogewotCWdudHRhYl9saXN0W3JlbGVh c2VdID0gKnByaXZhdGVfaGVhZDsKKwlnbnR0YWJfbGlzdFtnbnR0YWJfbGlzdF90YWJsZShy ZWxlYXNlKV0KKwkJICAgW2dudHRhYl9saXN0X2luZGV4KHJlbGVhc2UpXSA9ICpwcml2YXRl X2hlYWQ7CiAJKnByaXZhdGVfaGVhZCA9IHJlbGVhc2U7CiB9CiBFWFBPUlRfU1lNQk9MX0dQ TChnbnR0YWJfcmVsZWFzZV9ncmFudF9yZWZlcmVuY2UpOwpAQCAtMzU2LDYgKzM4Nyw2NSBA QCB2b2lkIGdudHRhYl9jYW5jZWxfZnJlZV9jYWxsYmFjayhzdHJ1Y3QgCiB9CiBFWFBPUlRf U1lNQk9MX0dQTChnbnR0YWJfY2FuY2VsX2ZyZWVfY2FsbGJhY2spOwogCitzdGF0aWMgaW50 IGdyb3dfZ250dGFiX2xpc3QodW5zaWduZWQgaW50IG1vcmVfZnJhbWVzKQoreworCXVuc2ln bmVkIGludCBuZXdfbnJfZ3JhbnRfZnJhbWVzLCBleHRyYV9lbnRyaWVzLCBpOworCisJbmV3 X25yX2dyYW50X2ZyYW1lcyA9IG5yX2dyYW50X2ZyYW1lcyArIG1vcmVfZnJhbWVzOworCWV4 dHJhX2VudHJpZXMgICAgICAgPSBtb3JlX2ZyYW1lcyAqIEdSRUZTX1BFUl9HUkFOVF9GUkFN RTsKKworCWZvciAoaSA9IG5yX2dyYW50X2ZyYW1lczsgaSA8IG5ld19ucl9ncmFudF9mcmFt ZXM7IGkrKykKKwl7CisJCWdudHRhYl9saXN0W2ldID0gKGdyYW50X3JlZl90ICopX19nZXRf ZnJlZV9wYWdlKEdGUF9BVE9NSUMpOworCQlpZiAoIWdudHRhYl9saXN0W2ldKQorCQkJZ290 byBncm93X25vbWVtOworCX0KKworCisJZm9yIChpID0gR1JFRlNfUEVSX0dSQU5UX0ZSQU1F ICogbnJfZ3JhbnRfZnJhbWVzOworCSAgICAgaSA8IEdSRUZTX1BFUl9HUkFOVF9GUkFNRSAq IG5ld19ucl9ncmFudF9mcmFtZXMgLSAxOyBpKyspCisJCWdudHRhYl9saXN0W2dudHRhYl9s aXN0X3RhYmxlKGkpXVtnbnR0YWJfbGlzdF9pbmRleChpKV0gPSBpICsgMTsKKworCWdudHRh Yl9saXN0W25ld19ucl9ncmFudF9mcmFtZXMgLSAxXVtHUkVGU19QRVJfR1JBTlRfRlJBTUUg LSAxXSA9CisJCWdudHRhYl9mcmVlX2hlYWQ7CisJZ250dGFiX2ZyZWVfaGVhZCA9IEdSRUZT X1BFUl9HUkFOVF9GUkFNRSAqIG5yX2dyYW50X2ZyYW1lczsKKwlnbnR0YWJfZnJlZV9jb3Vu dCArPSBleHRyYV9lbnRyaWVzOworCisJbnJfZ3JhbnRfZnJhbWVzID0gbmV3X25yX2dyYW50 X2ZyYW1lczsKKworCWNoZWNrX2ZyZWVfY2FsbGJhY2tzKCk7CisKKwlyZXR1cm4gMDsKKwkK K2dyb3dfbm9tZW06CisJZm9yICggOyBpID49IG5yX2dyYW50X2ZyYW1lczsgaS0tKQorCQlm cmVlX3BhZ2UoKHVuc2lnbmVkIGxvbmcpIGdudHRhYl9saXN0W2ldKTsKKwlyZXR1cm4gLUVO T01FTTsKK30KKworc3RhdGljIHVuc2lnbmVkIGludCBfX21heF9ucl9ncmFudF9mcmFtZXMo dm9pZCkKK3sKKwlzdHJ1Y3QgZ250dGFiX3F1ZXJ5X3NpemUgcXVlcnk7CisJaW50IHJjOwor CisJcXVlcnkuZG9tID0gRE9NSURfU0VMRjsKKworCXJjID0gSFlQRVJWSVNPUl9ncmFudF90 YWJsZV9vcChHTlRUQUJPUF9xdWVyeV9zaXplLCAmcXVlcnksIDEpOworCWlmICgocmMgPCAw KSB8fCAocXVlcnkuc3RhdHVzICE9IEdOVFNUX29rYXkpKQorCQlyZXR1cm4gNDsgLyogTGVn YWN5IG1heCBzdXBwb3J0ZWQgbnVtYmVyIG9mIGZyYW1lcyAqLworCisJcmV0dXJuIHF1ZXJ5 Lm1heF9ucl9mcmFtZXM7Cit9CisKK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IG1heF9u cl9ncmFudF9mcmFtZXModm9pZCkKK3sKKwl1bnNpZ25lZCBpbnQgeGVuX21heCA9IF9fbWF4 X25yX2dyYW50X2ZyYW1lcygpOworCisJaWYgKHhlbl9tYXggPiBib290X21heF9ucl9ncmFu dF9mcmFtZXMpCisJCXJldHVybiBib290X21heF9ucl9ncmFudF9mcmFtZXM7CisJcmV0dXJu IHhlbl9tYXg7Cit9CisKICNpZmRlZiBDT05GSUdfWEVOCiAKICNpZm5kZWYgX19pYTY0X18K QEAgLTM3OCw0OSArNDY4LDY4IEBAIHN0YXRpYyBpbnQgdW5tYXBfcHRlX2ZuKHB0ZV90ICpw dGUsIHN0cnUKIH0KICNlbmRpZgogCi1pbnQgZ250dGFiX3Jlc3VtZSh2b2lkKQorc3RhdGlj IGludCBnbnR0YWJfbWFwKHVuc2lnbmVkIGludCBzdGFydF9pZHgsIHVuc2lnbmVkIGludCBl bmRfaWR4KQogewogCXN0cnVjdCBnbnR0YWJfc2V0dXBfdGFibGUgc2V0dXA7Ci0JdW5zaWdu ZWQgbG9uZyBmcmFtZXNbTlJfR1JBTlRfRlJBTUVTXTsKKwl1bnNpZ25lZCBsb25nICpmcmFt ZXM7CisJdW5zaWduZWQgaW50IG5yX2dmcmFtZXMgPSBlbmRfaWR4ICsgMTsKIAlpbnQgcmM7 CiAjaWZuZGVmIF9faWE2NF9fCi0Jdm9pZCAqcGZyYW1lcyA9IGZyYW1lczsKKwl2b2lkICpw ZnJhbWVzOwogCXN0cnVjdCB2bV9zdHJ1Y3QgKmFyZWE7CiAjZW5kaWYKIAorCWZyYW1lcyA9 IGttYWxsb2MobnJfZ2ZyYW1lcyAqIHNpemVvZih1bnNpZ25lZCBsb25nKSwgR0ZQX0FUT01J Qyk7CisJaWYgKCFmcmFtZXMpCisJCXJldHVybiAtRU5PTUVNOworCiAJc2V0dXAuZG9tICAg ICAgICA9IERPTUlEX1NFTEY7Ci0Jc2V0dXAubnJfZnJhbWVzICA9IE5SX0dSQU5UX0ZSQU1F UzsKKwlzZXR1cC5ucl9mcmFtZXMgID0gbnJfZ2ZyYW1lczsKIAlzZXRfeGVuX2d1ZXN0X2hh bmRsZShzZXR1cC5mcmFtZV9saXN0LCBmcmFtZXMpOwogCiAJcmMgPSBIWVBFUlZJU09SX2dy YW50X3RhYmxlX29wKEdOVFRBQk9QX3NldHVwX3RhYmxlLCAmc2V0dXAsIDEpOwotCWlmIChy YyA9PSAtRU5PU1lTKQorCWlmIChyYyA9PSAtRU5PU1lTKSB7CisJCWtmcmVlKGZyYW1lcyk7 CiAJCXJldHVybiAtRU5PU1lTOworCX0KIAogCUJVR19PTihyYyB8fCBzZXR1cC5zdGF0dXMp OwogCiAjaWZuZGVmIF9faWE2NF9fCiAJaWYgKHNoYXJlZCA9PSBOVUxMKSB7Ci0JCWFyZWEg PSBnZXRfdm1fYXJlYShQQUdFX1NJWkUgKiBOUl9HUkFOVF9GUkFNRVMsIFZNX0lPUkVNQVAp OworCQlhcmVhID0gZ2V0X3ZtX2FyZWEoUEFHRV9TSVpFICogbWF4X25yX2dyYW50X2ZyYW1l cygpLAorCQkJCSAgIFZNX0lPUkVNQVApOwogCQlCVUdfT04oYXJlYSA9PSBOVUxMKTsKIAkJ c2hhcmVkID0gYXJlYS0+YWRkcjsKIAl9CisJLyogVGhlIGR1cGxpY2F0ZSBwb2ludGVyIHBm cmFtZXMgZXhpc3RzIGJlY2F1c2UgYXBwbHlfdG9fcGFnZV9yYW5nZQorCSAqIG1vZGlmaWVz IHRoZSBwb2ludGVyIGl0IHVzZXMuIFRoaXMgY29tcGxpY2F0ZXMgdGhlIGtmcmVlLgorCSAq LworCXBmcmFtZXMgPSBmcmFtZXM7CiAJcmMgPSBhcHBseV90b19wYWdlX3JhbmdlKCZpbml0 X21tLCAodW5zaWduZWQgbG9uZylzaGFyZWQsCi0JCQkJIFBBR0VfU0laRSAqIE5SX0dSQU5U X0ZSQU1FUywKKwkJCQkgUEFHRV9TSVpFICogbnJfZ2ZyYW1lcywKIAkJCQkgbWFwX3B0ZV9m biwgJnBmcmFtZXMpOwogCUJVR19PTihyYyk7CiAjZWxzZQogCXNoYXJlZCA9IF9fdmEoZnJh bWVzWzBdIDw8IFBBR0VfU0hJRlQpOwotCXByaW50aygiZ3JhbnQgdGFibGUgYXQgJXBcbiIs IHNoYXJlZCk7Ci0jZW5kaWYKLQotCXJldHVybiAwOworI2VuZGlmCisJa2ZyZWUoZnJhbWVz KTsKKworCXJldHVybiAwOworfQorCitpbnQgZ250dGFiX3Jlc3VtZSh2b2lkKQoreworCWlm IChtYXhfbnJfZ3JhbnRfZnJhbWVzKCkgPCBucl9ncmFudF9mcmFtZXMpCisJCXJldHVybiAt RU5PU1lTOworCXJldHVybiBnbnR0YWJfbWFwKDAsIG5yX2dyYW50X2ZyYW1lcyAtIDEpOwog fQogCiBpbnQgZ250dGFiX3N1c3BlbmQodm9pZCkKIHsKICNpZm5kZWYgX19pYTY0X18KIAlh cHBseV90b19wYWdlX3JhbmdlKCZpbml0X21tLCAodW5zaWduZWQgbG9uZylzaGFyZWQsCi0J CQkgICAgUEFHRV9TSVpFICogTlJfR1JBTlRfRlJBTUVTLAorCQkJICAgIFBBR0VfU0laRSAq IG5yX2dyYW50X2ZyYW1lcywKIAkJCSAgICB1bm1hcF9wdGVfZm4sIE5VTEwpOwogI2VuZGlm CiAJcmV0dXJuIDA7CkBAIC00MzAsNTMgKzUzOSwxMTEgQEAgaW50IGdudHRhYl9zdXNwZW5k KHZvaWQpCiAKICNpbmNsdWRlIDxwbGF0Zm9ybS1wY2kuaD4KIAotaW50IGdudHRhYl9yZXN1 bWUodm9pZCkKLXsKLQl1bnNpZ25lZCBsb25nIGZyYW1lczsKK3N0YXRpYyBpbnQgZ250dGFi X21hcCh1bnNpZ25lZCBpbnQgc3RhcnRfaWR4LCB1bnNpZ25lZCBpbnQgZW5kX2lkeCkKK3sK IAlzdHJ1Y3QgeGVuX2FkZF90b19waHlzbWFwIHhhdHA7CiAJdW5zaWduZWQgaW50IGk7CiAK LQlmcmFtZXMgPSBhbGxvY194ZW5fbW1pbyhQQUdFX1NJWkUgKiBOUl9HUkFOVF9GUkFNRVMp OwotCi0JZm9yIChpID0gMDsgaSA8IE5SX0dSQU5UX0ZSQU1FUzsgaSsrKSB7CisJLyogTG9v cCBiYWNrd2FyZHMsIHNvIHRoYXQgdGhlIGZpcnN0IGh5cGVyY2FsbCBoYXMgdGhlIGxhcmdl c3QgaW5kZXgsCisJICogZW5zdXJpbmcgdGhhdCB0aGUgdGFibGUgd2lsbCBvbmx5IGdyb3cg b25jZS4KKwkgKi8KKwlmb3IgKGkgPSBlbmRfaWR4OyBpID49IHN0YXJ0X2lkeDsgaS0tKSB7 CiAJCXhhdHAuZG9taWQgPSBET01JRF9TRUxGOwogCQl4YXRwLmlkeCA9IGk7CiAJCXhhdHAu c3BhY2UgPSBYRU5NQVBTUEFDRV9ncmFudF90YWJsZTsKLQkJeGF0cC5ncGZuID0gKGZyYW1l cyA+PiBQQUdFX1NISUZUKSArIGk7CisJCXhhdHAuZ3BmbiA9IChyZXN1bWVfZnJhbWVzID4+ IFBBR0VfU0hJRlQpICsgaTsKIAkJaWYgKEhZUEVSVklTT1JfbWVtb3J5X29wKFhFTk1FTV9h ZGRfdG9fcGh5c21hcCwgJnhhdHApKQogCQkJQlVHKCk7CiAJfQotCi0Jc2hhcmVkID0gaW9y ZW1hcChmcmFtZXMsIFBBR0VfU0laRSAqIE5SX0dSQU5UX0ZSQU1FUyk7Cit9CisKK2ludCBn bnR0YWJfcmVzdW1lKHZvaWQpCit7CisJc3RydWN0IHhlbl9hZGRfdG9fcGh5c21hcCB4YXRw OworCXVuc2lnbmVkIGludCBpLCBtYXhfbnJfZ2ZyYW1lcywgbnJfZ2ZyYW1lczsKKworCW5y X2dmcmFtZXMgPSBucl9ncmFudF9mcmFtZXM7CisJbWF4X25yX2dmcmFtZXMgPSBtYXhfbnJf Z3JhbnRfZnJhbWVzKCk7CisJaWYgKG1heF9ucl9nZnJhbWVzIDwgbnJfZ2ZyYW1lcykKKwkJ cmV0dXJuIC1FTk9TWVM7CisKKwlyZXN1bWVfZnJhbWVzID0gYWxsb2NfeGVuX21taW8oUEFH RV9TSVpFICogbWF4X25yX2dmcmFtZXMpOworCisJZ250dGFiX21hcF9zaGFyZWQoMCwgbnJf Z2ZyYW1lcyAtIDEpOworCisJc2hhcmVkID0gaW9yZW1hcChyZXN1bWVfZnJhbWVzLCBQQUdF X1NJWkUgKiBtYXhfbnJfZ2ZyYW1lcyk7CiAJaWYgKHNoYXJlZCA9PSBOVUxMKSB7CiAJCXBy aW50aygiZXJyb3IgdG8gaW9yZW1hcCBnbnR0YWIgc2hhcmUgZnJhbWVzXG4iKTsKIAkJcmV0 dXJuIC0xOwogCX0KLQogCXJldHVybiAwOwogfQogCiBpbnQgZ250dGFiX3N1c3BlbmQodm9p ZCkKIHsKIAlpb3VubWFwKHNoYXJlZCk7CisJcmVzdW1lX2ZyYW1lcyA9IDA7CiAJcmV0dXJu IDA7CiB9CiAKICNlbmRpZiAvKiAhQ09ORklHX1hFTiAqLwogCitzdGF0aWMgaW50IGdudHRh Yl9leHBhbmQodW5zaWduZWQgaW50IHJlcV9lbnRyaWVzKQoreworCWludCByYzsKKwl1bnNp Z25lZCBpbnQgY3VyLCBleHRyYTsKKworCWN1ciA9IG5yX2dyYW50X2ZyYW1lczsKKwlleHRy YSA9ICgocmVxX2VudHJpZXMgKyAoR1JFRlNfUEVSX0dSQU5UX0ZSQU1FLTEpKSAvCisJCSBH UkVGU19QRVJfR1JBTlRfRlJBTUUpOworCWlmIChjdXIgKyBleHRyYSA+IG1heF9ucl9ncmFu dF9mcmFtZXMoKSkKKwkJcmV0dXJuIC1FTk9TUEM7CisKKwlpZiAoKHJjID0gZ250dGFiX21h cChjdXIsIGN1ciArIGV4dHJhIC0gMSkpID09IDApCisJCXJjID0gZ3Jvd19nbnR0YWJfbGlz dChleHRyYSk7CisKKwlyZXR1cm4gcmM7Cit9CisKIGludCBfX2luaXQgZ250dGFiX2luaXQo dm9pZCkKIHsKIAlpbnQgaTsKKwl1bnNpZ25lZCBpbnQgbWF4X25yX2dsaXN0X2ZyYW1lczsK IAogCWlmICghaXNfcnVubmluZ19vbl94ZW4oKSkKIAkJcmV0dXJuIC1FTk9ERVY7CiAKKwlu cl9ncmFudF9mcmFtZXMgPSAxOworCWJvb3RfbWF4X25yX2dyYW50X2ZyYW1lcyA9IF9fbWF4 X25yX2dyYW50X2ZyYW1lcygpOworCisJLyogRGV0ZXJtaW5lIHRoZSBtYXhpbXVtIG51bWJl ciBvZiBmcmFtZXMgcmVxdWlyZWQgZm9yIHRoZQorCSAqIGdyYW50IHJlZmVyZW5jZSBmcmVl IGxpc3Qgb24gdGhlIGN1cnJlbnQgaHlwZXJ2aXNvci4KKwkgKi8KKwltYXhfbnJfZ2xpc3Rf ZnJhbWVzID0gYm9vdF9tYXhfbnJfZ3JhbnRfZnJhbWVzICogR1JFRlNfUEVSX0dSQU5UX0ZS QU1FIC8KKwkJCSAgICAgIChQQUdFX1NJWkUgLyBzaXplb2YoZ3JhbnRfcmVmX3QpKTsKKwor CWdudHRhYl9saXN0ID0ga21hbGxvYyhtYXhfbnJfZ2xpc3RfZnJhbWVzICogc2l6ZW9mKGdy YW50X3JlZl90ICopLAorCQkJICAgICAgR0ZQX0tFUk5FTCk7CisJaWYgKGdudHRhYl9saXN0 ID09IE5VTEwpCisJCXJldHVybiAtRU5PTUVNOworCisJZ250dGFiX2xpc3RbMF0gPSAoZ3Jh bnRfcmVmX3QgKilfX2dldF9mcmVlX3BhZ2UoR0ZQX0tFUk5FTCk7CisJaWYgKGdudHRhYl9s aXN0WzBdID09IE5VTEwpCisJeworCQlrZnJlZShnbnR0YWJfbGlzdCk7CisJCXJldHVybiAt RU5PTUVNOworCX0KKwogCWlmIChnbnR0YWJfcmVzdW1lKCkgPCAwKQogCQlyZXR1cm4gLUVO T0RFVjsKIAotCWZvciAoaSA9IE5SX1JFU0VSVkVEX0VOVFJJRVM7IGkgPCBOUl9HUkFOVF9F TlRSSUVTOyBpKyspCi0JCWdudHRhYl9saXN0W2ldID0gaSArIDE7Ci0JZ250dGFiX2ZyZWVf Y291bnQgPSBOUl9HUkFOVF9FTlRSSUVTIC0gTlJfUkVTRVJWRURfRU5UUklFUzsKKwlmb3Ig KGkgPSBOUl9SRVNFUlZFRF9FTlRSSUVTOyBpIDwgR1JFRlNfUEVSX0dSQU5UX0ZSQU1FIC0g MTsgaSsrKQorCQlnbnR0YWJfbGlzdFtnbnR0YWJfbGlzdF90YWJsZShpKV1bZ250dGFiX2xp c3RfaW5kZXgoaSldID0gaSArIDE7CisKKwlnbnR0YWJfbGlzdFtnbnR0YWJfbGlzdF90YWJs ZShHUkVGU19QRVJfR1JBTlRfRlJBTUUgLSAxKV0KKwkJICAgW2dudHRhYl9saXN0X2luZGV4 KEdSRUZTX1BFUl9HUkFOVF9GUkFNRSAtIDEpXQorCQkgICA9IEdOVFRBQl9MSVNUX0VORDsK KwlnbnR0YWJfZnJlZV9jb3VudCA9IEdSRUZTX1BFUl9HUkFOVF9GUkFNRSAtIE5SX1JFU0VS VkVEX0VOVFJJRVM7CiAJZ250dGFiX2ZyZWVfaGVhZCAgPSBOUl9SRVNFUlZFRF9FTlRSSUVT OwogCiAJcHJpbnRrKCJHcmFudCB0YWJsZSBpbml0aWFsaXplZFxuIik7CmRpZmYgLXIgZjAy NmQ0MDkxMzIyIGxpbnV4LTIuNi14ZW4tc3BhcnNlL2luY2x1ZGUveGVuL2dudHRhYi5oCi0t LSBhL2xpbnV4LTIuNi14ZW4tc3BhcnNlL2luY2x1ZGUveGVuL2dudHRhYi5oCVR1ZSBOb3Yg MTQgMTg6NTI6NTggMjAwNiArMDAwMAorKysgYi9saW51eC0yLjYteGVuLXNwYXJzZS9pbmNs dWRlL3hlbi9nbnR0YWIuaAlUdWUgTm92IDE0IDIwOjM3OjE5IDIwMDYgKzAwMDAKQEAgLTQy LDEzICs0Miw2IEBACiAjaW5jbHVkZSA8YXNtL21hZGRyLmg+IC8qIG1hZGRyX3QgKi8KICNp bmNsdWRlIDx4ZW4vaW50ZXJmYWNlL2dyYW50X3RhYmxlLmg+CiAjaW5jbHVkZSA8eGVuL2Zl YXR1cmVzLmg+Ci0KLS8qIE5SX0dSQU5UX0ZSQU1FUyBtdXN0IGJlIGxlc3MgdGhhbiBvciBl cXVhbCB0byB0aGF0IGNvbmZpZ3VyZWQgaW4gWGVuICovCi0jaWZkZWYgX19pYTY0X18KLSNk ZWZpbmUgTlJfR1JBTlRfRlJBTUVTIDEKLSNlbHNlCi0jZGVmaW5lIE5SX0dSQU5UX0ZSQU1F UyA0Ci0jZW5kaWYKIAogc3RydWN0IGdudHRhYl9mcmVlX2NhbGxiYWNrIHsKIAlzdHJ1Y3Qg Z250dGFiX2ZyZWVfY2FsbGJhY2sgKm5leHQ7CkBAIC0xMDksMTIgKzEwMiw2IEBAIHZvaWQg Z250dGFiX2dyYW50X2ZvcmVpZ25fdHJhbnNmZXJfcmVmKGcKIHZvaWQgZ250dGFiX2dyYW50 X2ZvcmVpZ25fdHJhbnNmZXJfcmVmKGdyYW50X3JlZl90LCBkb21pZF90IGRvbWlkLAogCQkJ CSAgICAgICB1bnNpZ25lZCBsb25nIHBmbik7CiAKLSNpZmRlZiBfX2lhNjRfXwotI2RlZmlu ZSBnbnR0YWJfbWFwX3ZhZGRyKG1hcCkgX192YShtYXAuZGV2X2J1c19hZGRyKQotI2Vsc2UK LSNkZWZpbmUgZ250dGFiX21hcF92YWRkcihtYXApICgodm9pZCAqKShtYXAuaG9zdF92aXJ0 X2FkZHIpKQotI2VuZGlmCi0KIGludCBnbnR0YWJfc3VzcGVuZCh2b2lkKTsKIGludCBnbnR0 YWJfcmVzdW1lKHZvaWQpOwogCmRpZmYgLXIgZjAyNmQ0MDkxMzIyIHhlbi9hcmNoL2lhNjQv eGVuL21tLmMKLS0tIGEveGVuL2FyY2gvaWE2NC94ZW4vbW0uYwlUdWUgTm92IDE0IDE4OjUy OjU4IDIwMDYgKzAwMDAKKysrIGIveGVuL2FyY2gvaWE2NC94ZW4vbW0uYwlGcmkgTm92IDAz IDE4OjE4OjU2IDIwMDYgKzAwMDAKQEAgLTE5ODMsOCArMTk4MywxMCBAQCBhcmNoX21lbW9y eV9vcChpbnQgb3AsIFhFTl9HVUVTVF9IQU5ETEUoCiAgICAgICAgICAgICAgICAgbWZuID0g dmlydF90b19tZm4oZC0+c2hhcmVkX2luZm8pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg ICAgIGNhc2UgWEVOTUFQU1BBQ0VfZ3JhbnRfdGFibGU6Ci0gICAgICAgICAgICBpZiAoeGF0 cC5pZHggPCBOUl9HUkFOVF9GUkFNRVMpCisgICAgICAgICAgICBzcGluX2xvY2soZC0+Z3Jh bnRfdGFibGUtPmxvY2spOworICAgICAgICAgICAgaWYgKCB4YXRwLmlkeCA8IG5yX2dyYW50 X2ZyYW1lcyhkLT5ncmFudF90YWJsZSkgKQogICAgICAgICAgICAgICAgIG1mbiA9IHZpcnRf dG9fbWZuKGQtPmdyYW50X3RhYmxlLT5zaGFyZWQpICsgeGF0cC5pZHg7CisgICAgICAgICAg ICBzcGluX3VubG9jayhkLT5ncmFudF90YWJsZS0+bG9jayk7CiAgICAgICAgICAgICBicmVh azsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC1yIGYwMjZk NDA5MTMyMiB4ZW4vYXJjaC94ODYvbW0uYwotLS0gYS94ZW4vYXJjaC94ODYvbW0uYwlUdWUg Tm92IDE0IDE4OjUyOjU4IDIwMDYgKzAwMDAKKysrIGIveGVuL2FyY2gveDg2L21tLmMJVHVl IE5vdiAxNCAyMDozNzoxOSAyMDA2ICswMDAwCkBAIC0yOTMyLDggKzI5MzIsMTYgQEAgbG9u ZyBhcmNoX21lbW9yeV9vcChpbnQgb3AsIFhFTl9HVUVTVF9IQQogICAgICAgICAgICAgICAg IG1mbiA9IHZpcnRfdG9fbWZuKGQtPnNoYXJlZF9pbmZvKTsKICAgICAgICAgICAgIGJyZWFr OwogICAgICAgICBjYXNlIFhFTk1BUFNQQUNFX2dyYW50X3RhYmxlOgotICAgICAgICAgICAg aWYgKCB4YXRwLmlkeCA8IE5SX0dSQU5UX0ZSQU1FUyApCi0gICAgICAgICAgICAgICAgbWZu ID0gdmlydF90b19tZm4oZC0+Z3JhbnRfdGFibGUtPnNoYXJlZCkgKyB4YXRwLmlkeDsKKyAg ICAgICAgICAgIHNwaW5fbG9jaygmZC0+Z3JhbnRfdGFibGUtPmxvY2spOworCisgICAgICAg ICAgICBpZiAoICh4YXRwLmlkeCA+PSBucl9ncmFudF9mcmFtZXMoZC0+Z3JhbnRfdGFibGUp KSAmJgorICAgICAgICAgICAgICAgICAoeGF0cC5pZHggPCBtYXhfbnJfZ3JhbnRfZnJhbWVz KSApCisgICAgICAgICAgICAgICAgZ250dGFiX2dyb3dfdGFibGUoZCwgeGF0cC5pZHggKyAx KTsKKworICAgICAgICAgICAgaWYgKCB4YXRwLmlkeCA8IG5yX2dyYW50X2ZyYW1lcyhkLT5n cmFudF90YWJsZSkgKQorICAgICAgICAgICAgICAgIG1mbiA9IHZpcnRfdG9fbWZuKGQtPmdy YW50X3RhYmxlLT5zaGFyZWRbeGF0cC5pZHhdKTsKKworICAgICAgICAgICAgc3Bpbl91bmxv Y2soJmQtPmdyYW50X3RhYmxlLT5sb2NrKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg ICBkZWZhdWx0OgogICAgICAgICAgICAgYnJlYWs7CmRpZmYgLXIgZjAyNmQ0MDkxMzIyIHhl bi9jb21tb24vZ3JhbnRfdGFibGUuYwotLS0gYS94ZW4vY29tbW9uL2dyYW50X3RhYmxlLmMJ VHVlIE5vdiAxNCAxODo1Mjo1OCAyMDA2ICswMDAwCisrKyBiL3hlbi9jb21tb24vZ3JhbnRf dGFibGUuYwlUdWUgTm92IDE0IDIwOjM4OjE1IDIwMDYgKzAwMDAKQEAgLTQsNyArNCw3IEBA CiAgKiBNZWNoYW5pc20gZm9yIGdyYW50aW5nIGZvcmVpZ24gYWNjZXNzIHRvIHBhZ2UgZnJh bWVzLCBhbmQgcmVjZWl2aW5nCiAgKiBwYWdlLW93bmVyc2hpcCB0cmFuc2ZlcnMuCiAgKiAK LSAqIENvcHlyaWdodCAoYykgMjAwNSBDaHJpc3RvcGhlciBDbGFyaworICogQ29weXJpZ2h0 IChjKSAyMDA1LTIwMDYgQ2hyaXN0b3BoZXIgQ2xhcmsKICAqIENvcHlyaWdodCAoYykgMjAw NCBLIEEgRnJhc2VyCiAgKiBDb3B5cmlnaHQgKGMpIDIwMDUgQW5kcmV3IFdhcmZpZWxkCiAg KiBNb2RpZmljYXRpb25zIGJ5IEdlb2ZmcmV5IExlZmVidnJlIGFyZSAoYykgSW50ZWwgUmVz ZWFyY2ggQ2FtYnJpZGdlCkBAIC0zMyw2ICszMywxNSBAQAogI2luY2x1ZGUgPHhlbi9kb21h aW5fcGFnZS5oPgogI2luY2x1ZGUgPGFjbS9hY21faG9va3MuaD4KIAordW5zaWduZWQgaW50 IG1heF9ucl9ncmFudF9mcmFtZXMgPSBERUZBVUxUX01BWF9OUl9HUkFOVF9GUkFNRVM7Citp bnRlZ2VyX3BhcmFtKCJnbnR0YWJfbWF4X25yX2ZyYW1lcyIsIG1heF9ucl9ncmFudF9mcmFt ZXMpOworCisvKiBUaGUgbWF4aW11bSBudW1iZXIgb2YgZ3JhbnQgbWFwcGluZ3MgaXMgZGVm aW5lZCBhcyBhIG11bHRpcGxpZXIgb2YgdGhlCisgKiBtYXhpbXVtIG51bWJlciBvZiBncmFu dCB0YWJsZSBlbnRyaWVzLiBUaGlzIGRlZmluZXMgdGhlIG11bHRpcGxpZXIgdXNlZC4KKyAq IFByZXR0eSBhcmJpdHJhcnkuIFtQT0xJQ1ldCisgKi8KKyNkZWZpbmUgTUFYX01BUFRSQUNL X1RPX0dSQU5UU19SQVRJTyA4CisKIC8qCiAgKiBUaGUgZmlyc3QgdHdvIG1lbWJlcnMgb2Yg YSBncmFudCBlbnRyeSBhcmUgdXBkYXRlZCBhcyBhIGNvbWJpbmVkIHBhaXIuCiAgKiBUaGUg Zm9sbG93aW5nIHVuaW9uIGFsbG93cyB0aGF0IHRvIGhhcHBlbiBpbiBhbiBlbmRpYW4tbmV1 dHJhbCBmYXNoaW9uLgpAQCAtNTIsMTQgKzYxLDg0IEBAIHVuaW9uIGdyYW50X2NvbWJvIHsK ICAgICAgICAgZ290byBfbGJsOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAg ICB9IHdoaWxlICggMCApCiAKK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50Citucl9tYXB0 cmFja19mcmFtZXMoc3RydWN0IGdyYW50X3RhYmxlICp0KQoreworICAgIHJldHVybiB0LT5t YXB0cmFja19saW1pdCAvIChQQUdFX1NJWkUgLyBzaXplb2Yoc3RydWN0IGdyYW50X21hcHBp bmcpKTsKK30KKworc3RhdGljIHVuc2lnbmVkIGlubGluZSBpbnQgbWF4X25yX21hcHRyYWNr X2ZyYW1lcyh2b2lkKQoreworICAgIHJldHVybiAobWF4X25yX2dyYW50X2ZyYW1lcyAqIE1B WF9NQVBUUkFDS19UT19HUkFOVFNfUkFUSU8pOworfQorCitzdGF0aWMgaW5saW5lIHVuc2ln bmVkIGludAorbWFwdHJhY2tfdGFibGUoZ3JhbnRfaGFuZGxlX3QgaGFuZGxlKQoreworICAg IHJldHVybiAoaGFuZGxlIC8gKFBBR0VfU0laRSAvIHNpemVvZihzdHJ1Y3QgZ3JhbnRfbWFw cGluZykpKTsKK30KKworc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQKK21hcHRyYWNrX2lu ZGV4KGdyYW50X2hhbmRsZV90IGhhbmRsZSkKK3sKKyAgICByZXR1cm4gKGhhbmRsZSAlIChQ QUdFX1NJWkUgLyBzaXplb2Yoc3RydWN0IGdyYW50X21hcHBpbmcpKSk7Cit9CisKK3N0YXRp YyBpbmxpbmUgdW5zaWduZWQgaW50CitudW1fYWN0X2ZyYW1lc19mcm9tX3NoYV9mcmFtZXMo Y29uc3QgdW5zaWduZWQgaW50IG51bSkKK3sKKyAgICAvKiBIb3cgbWFueSBmcmFtZXMgYXJl IG5lZWRlZCBmb3IgdGhlIGFjdGl2ZSBncmFudCB0YWJsZSwKKyAgICAgKiBnaXZlbiB0aGUg c2l6ZSBvZiB0aGUgc2hhcmVkIGdyYW50IHRhYmxlPworICAgICAqCisgICAgICogYWN0X3Bl cl9wYWdlID0gUEFHRV9TSVpFIC8gc2l6ZW9mKGFjdGl2ZV9ncmFudF9lbnRyeV90KTsKKyAg ICAgKiBzaGFfcGVyX3BhZ2UgPSBQQUdFX1NJWkUgLyBzaXplb2YoZ3JhbnRfZW50cnlfdCk7 CisgICAgICogbnVtX3NoYV9lbnRyaWVzID0gbnVtICogc2hhX3Blcl9wYWdlOworICAgICAq IG51bV9hY3RfZnJhbWVzID0gKG51bV9zaGFfZW50cmllcyArIChhY3RfcGVyX3BhZ2UtMSkp IC8gYWN0X3Blcl9wYWdlOworICAgICAqLworICAgIHJldHVybiAoKG51bSAqIChQQUdFX1NJ WkUgLyBzaXplb2YoZ3JhbnRfZW50cnlfdCkpKSArCisgICAgICAgICAgICAoKFBBR0VfU0la RSAvIHNpemVvZihzdHJ1Y3QgYWN0aXZlX2dyYW50X2VudHJ5KSktMSkpCisgICAgICAgICAg IC8gKFBBR0VfU0laRSAvIHNpemVvZihzdHJ1Y3QgYWN0aXZlX2dyYW50X2VudHJ5KSk7Cit9 CisKK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50Citucl9hY3RpdmVfZ3JhbnRfZnJhbWVz KHN0cnVjdCBncmFudF90YWJsZSAqZ3QpCit7CisgICAgcmV0dXJuIG51bV9hY3RfZnJhbWVz X2Zyb21fc2hhX2ZyYW1lcyhucl9ncmFudF9mcmFtZXMoZ3QpKTsKK30KKworc3RhdGljIGlu bGluZSB1bnNpZ25lZCBpbnQKK3NoYXJlZF90YWJsZShncmFudF9yZWZfdCByZWYpCit7Cisg ICAgcmV0dXJuIChyZWYgLyAoUEFHRV9TSVpFIC8gc2l6ZW9mKGdyYW50X2VudHJ5X3QpKSk7 Cit9CisKK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50CitzaGFyZWRfaW5kZXgoZ3JhbnRf cmVmX3QgcmVmKQoreworICAgIC8qIEFTU0VSVChzaXplb2YoZ3JhbnRfZW50cnlfdCkgPT0g OCk7ICovCisgICAgcmV0dXJuIChyZWYgJiAoKFBBR0VfU0laRSAvIHNpemVvZihncmFudF9l bnRyeV90KSktMSkpOworfQorCitzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludAorYWN0aXZl X3RhYmxlKGdyYW50X3JlZl90IHJlZikKK3sKKyAgICByZXR1cm4gKHJlZiAvIChQQUdFX1NJ WkUgLyBzaXplb2Yoc3RydWN0IGFjdGl2ZV9ncmFudF9lbnRyeSkpKTsKK30KKworc3RhdGlj IGlubGluZSB1bnNpZ25lZCBpbnQKK2FjdGl2ZV9pbmRleChncmFudF9yZWZfdCByZWYpCit7 CisgICAgcmV0dXJuIChyZWYgJSAoUEFHRV9TSVpFIC8gc2l6ZW9mKHN0cnVjdCBhY3RpdmVf Z3JhbnRfZW50cnkpKSk7Cit9CisKIHN0YXRpYyBpbmxpbmUgaW50Ci1nZXRfbWFwdHJhY2tf aGFuZGxlKAorX19nZXRfbWFwdHJhY2tfaGFuZGxlKAogICAgIHN0cnVjdCBncmFudF90YWJs ZSAqdCkKIHsKICAgICB1bnNpZ25lZCBpbnQgaDsKICAgICBpZiAoIHVubGlrZWx5KChoID0g dC0+bWFwdHJhY2tfaGVhZCkgPT0gKHQtPm1hcHRyYWNrX2xpbWl0IC0gMSkpICkKICAgICAg ICAgcmV0dXJuIC0xOwotICAgIHQtPm1hcHRyYWNrX2hlYWQgPSB0LT5tYXB0cmFja1toXS5y ZWY7CisgICAgdC0+bWFwdHJhY2tfaGVhZCA9IHQtPm1hcHRyYWNrW21hcHRyYWNrX3RhYmxl KGgpXVttYXB0cmFja19pbmRleChoKV0ucmVmOwogICAgIHQtPm1hcF9jb3VudCsrOwogICAg IHJldHVybiBoOwogfQpAQCAtNjgsOSArMTQ3LDYzIEBAIHB1dF9tYXB0cmFja19oYW5kbGUo CiBwdXRfbWFwdHJhY2tfaGFuZGxlKAogICAgIHN0cnVjdCBncmFudF90YWJsZSAqdCwgaW50 IGhhbmRsZSkKIHsKLSAgICB0LT5tYXB0cmFja1toYW5kbGVdLnJlZiA9IHQtPm1hcHRyYWNr X2hlYWQ7CisgICAgdC0+bWFwdHJhY2tbbWFwdHJhY2tfdGFibGUoaGFuZGxlKV0KKyAgICAg ICAgICAgICAgIFttYXB0cmFja19pbmRleChoYW5kbGUpXS5yZWYgPSB0LT5tYXB0cmFja19o ZWFkOwogICAgIHQtPm1hcHRyYWNrX2hlYWQgPSBoYW5kbGU7CiAgICAgdC0+bWFwX2NvdW50 LS07Cit9CisKK3N0YXRpYyBpbmxpbmUgaW50CitnZXRfbWFwdHJhY2tfaGFuZGxlKAorICAg IHN0cnVjdCBncmFudF90YWJsZSAqbGd0KQoreworICAgIGludCAgICAgICAgICAgICAgICAg ICBpOworICAgIGdyYW50X2hhbmRsZV90ICAgICAgICBoYW5kbGU7CisgICAgc3RydWN0IGdy YW50X21hcHBpbmcgKm5ld19tdDsKKyAgICB1bnNpZ25lZCBpbnQgICAgICAgICAgbmV3X210 X2xpbWl0LCBucl9mcmFtZXM7CisKKyAgICBpZiAoIHVubGlrZWx5KChoYW5kbGUgPSBfX2dl dF9tYXB0cmFja19oYW5kbGUobGd0KSkgPT0gLTEpICkKKyAgICB7CisgICAgICAgIHNwaW5f bG9jaygmbGd0LT5sb2NrKTsKKworICAgICAgICBpZiAoIHVubGlrZWx5KChoYW5kbGUgPSBf X2dldF9tYXB0cmFja19oYW5kbGUobGd0KSkgPT0gLTEpICkKKyAgICAgICAgeworICAgICAg ICAgICAgbnJfZnJhbWVzID0gbnJfbWFwdHJhY2tfZnJhbWVzKGxndCk7CisgICAgICAgICAg ICBpZiAoIG5yX2ZyYW1lcyA+PSBtYXhfbnJfbWFwdHJhY2tfZnJhbWVzKCkgKQorICAgICAg ICAgICAgeworICAgICAgICAgICAgICAgIHNwaW5fdW5sb2NrKCZsZ3QtPmxvY2spOworICAg ICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg bmV3X210ID0gYWxsb2NfeGVuaGVhcF9wYWdlKCk7CisgICAgICAgICAgICBpZiAoIG5ld19t dCA9PSBOVUxMICkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBzcGluX3VubG9j aygmbGd0LT5sb2NrKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAg ICB9CisKKyAgICAgICAgICAgIG1lbXNldChuZXdfbXQsIDAsIFBBR0VfU0laRSk7CisKKyAg ICAgICAgICAgIG5ld19tdF9saW1pdCA9IGxndC0+bWFwdHJhY2tfbGltaXQgKworICAgICAg ICAgICAgICAgICAgICAgICAgICAgKFBBR0VfU0laRSAvIHNpemVvZihzdHJ1Y3QgZ3JhbnRf bWFwcGluZykpOworCisgICAgICAgICAgICBmb3IgKCBpID0gbGd0LT5tYXB0cmFja19saW1p dDsgaSA8IG5ld19tdF9saW1pdDsgaSsrICkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg ICAgICBuZXdfbXRbbWFwdHJhY2tfaW5kZXgoaSldLnJlZiA9IGkrMTsKKyAgICAgICAgICAg ICAgICBuZXdfbXRbbWFwdHJhY2tfaW5kZXgoaSldLmZsYWdzID0gMDsKKyAgICAgICAgICAg IH0KKworICAgICAgICAgICAgbGd0LT5tYXB0cmFja1tucl9mcmFtZXNdID0gbmV3X210Owor ICAgICAgICAgICAgbGd0LT5tYXB0cmFja19saW1pdCAgICAgID0gbmV3X210X2xpbWl0Owor CisgICAgICAgICAgICBnZHByaW50ayhYRU5MT0dfSU5GTywKKyAgICAgICAgICAgICAgICAg ICAgIkluY3JlYXNlZCBtYXB0cmFjayBzaXplIHRvICV1IGZyYW1lcy5cbiIsIG5yX2ZyYW1l cyArIDEpOworICAgICAgICAgICAgaGFuZGxlID0gX19nZXRfbWFwdHJhY2tfaGFuZGxlKGxn dCk7CisgICAgICAgIH0KKworICAgICAgICBzcGluX3VubG9jaygmbGd0LT5sb2NrKTsKKyAg ICB9CisgICAgcmV0dXJuIGhhbmRsZTsKIH0KIAogLyoKQEAgLTkwLDYgKzIyMyw3IEBAIF9f Z250dGFiX21hcF9ncmFudF9yZWYoCiAgICAgdW5zaWduZWQgbG9uZyAgZnJhbWUgPSAwOwog ICAgIGludCAgICAgICAgICAgIHJjID0gR05UU1Rfb2theTsKICAgICBzdHJ1Y3QgYWN0aXZl X2dyYW50X2VudHJ5ICphY3Q7CisgICAgc3RydWN0IGdyYW50X21hcHBpbmcgKm10OwogICAg IGdyYW50X2VudHJ5X3QgKnNoYTsKICAgICB1bmlvbiBncmFudF9jb21ibyBzY29tYm8sIHBy ZXZfc2NvbWJvLCBuZXdfc2NvbWJvOwogCkBAIC0xMDYsMTEgKzI0MCw5IEBAIF9fZ250dGFi X21hcF9ncmFudF9yZWYoCiAgICAgbGVkID0gY3VycmVudDsKICAgICBsZCA9IGxlZC0+ZG9t YWluOwogCi0gICAgaWYgKCB1bmxpa2VseShvcC0+cmVmID49IE5SX0dSQU5UX0VOVFJJRVMp IHx8Ci0gICAgICAgICB1bmxpa2VseSgob3AtPmZsYWdzICYgKEdOVE1BUF9kZXZpY2VfbWFw fEdOVE1BUF9ob3N0X21hcCkpID09IDApICkKLSAgICB7Ci0gICAgICAgIGdkcHJpbnRrKFhF TkxPR19JTkZPLCAiQmFkIHJlZiAoJWQpIG9yIGZsYWdzICgleCkuXG4iLAotICAgICAgICAg ICAgICAgIG9wLT5yZWYsIG9wLT5mbGFncyk7CisgICAgaWYgKCB1bmxpa2VseSgob3AtPmZs YWdzICYgKEdOVE1BUF9kZXZpY2VfbWFwfEdOVE1BUF9ob3N0X21hcCkpID09IDApICkKKyAg ICB7CisgICAgICAgIGdkcHJpbnRrKFhFTkxPR19JTkZPLCAiQmFkIGZsYWdzIGluIGdyYW50 IG1hcCBvcCAoJXgpLlxuIiwgb3AtPmZsYWdzKTsKICAgICAgICAgb3AtPnN0YXR1cyA9IEdO VFNUX2JhZF9nbnRyZWY7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMzAsNTEgKzI2 MiwyNCBAQCBfX2dudHRhYl9tYXBfZ3JhbnRfcmVmKAogICAgICAgICByZXR1cm47CiAgICAg fQogCi0gICAgLyogR2V0IGEgbWFwdHJhY2sgaGFuZGxlLiAqLwogICAgIGlmICggdW5saWtl bHkoKGhhbmRsZSA9IGdldF9tYXB0cmFja19oYW5kbGUobGQtPmdyYW50X3RhYmxlKSkgPT0g LTEpICkKICAgICB7Ci0gICAgICAgIGludCAgICAgICAgICAgICAgICAgICBpOwotICAgICAg ICBzdHJ1Y3QgZ3JhbnRfbWFwcGluZyAqbmV3X210OwotICAgICAgICBzdHJ1Y3QgZ3JhbnRf dGFibGUgICAqbGd0ID0gbGQtPmdyYW50X3RhYmxlOwotCi0gICAgICAgIGlmICggKGxndC0+ bWFwdHJhY2tfbGltaXQgPDwgMSkgPiBNQVBUUkFDS19NQVhfRU5UUklFUyApCi0gICAgICAg IHsKLSAgICAgICAgICAgIHB1dF9kb21haW4ocmQpOwotICAgICAgICAgICAgZ2RwcmludGso WEVOTE9HX0lORk8sICJNYXB0cmFjayB0YWJsZSBpcyBhdCBtYXhpbXVtIHNpemUuXG4iKTsK LSAgICAgICAgICAgIG9wLT5zdGF0dXMgPSBHTlRTVF9ub19kZXZpY2Vfc3BhY2U7Ci0gICAg ICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICAvKiBHcm93IHRoZSBtYXB0 cmFjayB0YWJsZS4gKi8KLSAgICAgICAgbmV3X210ID0gYWxsb2NfeGVuaGVhcF9wYWdlcyhs Z3QtPm1hcHRyYWNrX29yZGVyICsgMSk7Ci0gICAgICAgIGlmICggbmV3X210ID09IE5VTEwg KQotICAgICAgICB7Ci0gICAgICAgICAgICBwdXRfZG9tYWluKHJkKTsKLSAgICAgICAgICAg IGdkcHJpbnRrKFhFTkxPR19JTkZPLCAiTm8gbW9yZSBtYXAgaGFuZGxlcyBhdmFpbGFibGUu XG4iKTsKLSAgICAgICAgICAgIG9wLT5zdGF0dXMgPSBHTlRTVF9ub19kZXZpY2Vfc3BhY2U7 Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBtZW1jcHkobmV3 X210LCBsZ3QtPm1hcHRyYWNrLCBQQUdFX1NJWkUgPDwgbGd0LT5tYXB0cmFja19vcmRlcik7 Ci0gICAgICAgIGZvciAoIGkgPSBsZ3QtPm1hcHRyYWNrX2xpbWl0OyBpIDwgKGxndC0+bWFw dHJhY2tfbGltaXQgPDwgMSk7IGkrKyApCi0gICAgICAgIHsKLSAgICAgICAgICAgIG5ld19t dFtpXS5yZWYgPSBpKzE7Ci0gICAgICAgICAgICBuZXdfbXRbaV0uZmxhZ3MgPSAwOwotICAg ICAgICB9Ci0KLSAgICAgICAgZnJlZV94ZW5oZWFwX3BhZ2VzKGxndC0+bWFwdHJhY2ssIGxn dC0+bWFwdHJhY2tfb3JkZXIpOwotICAgICAgICBsZ3QtPm1hcHRyYWNrICAgICAgICAgID0g bmV3X210OwotICAgICAgICBsZ3QtPm1hcHRyYWNrX29yZGVyICAgKz0gMTsKLSAgICAgICAg bGd0LT5tYXB0cmFja19saW1pdCAgPDw9IDE7Ci0KLSAgICAgICAgZ2RwcmludGsoWEVOTE9H X0lORk8sICJEb3VibGVkIG1hcHRyYWNrIHNpemVcbiIpOwotICAgICAgICBoYW5kbGUgPSBn ZXRfbWFwdHJhY2tfaGFuZGxlKGxkLT5ncmFudF90YWJsZSk7Ci0gICAgfQotCi0gICAgYWN0 ID0gJnJkLT5ncmFudF90YWJsZS0+YWN0aXZlW29wLT5yZWZdOwotICAgIHNoYSA9ICZyZC0+ Z3JhbnRfdGFibGUtPnNoYXJlZFtvcC0+cmVmXTsKKyAgICAgICAgcHV0X2RvbWFpbihyZCk7 CisgICAgICAgIGdkcHJpbnRrKFhFTkxPR19JTkZPLCAiRmFpbGVkIHRvIG9idGFpbiBtYXB0 cmFjayBoYW5kbGUuXG4iKTsKKyAgICAgICAgb3AtPnN0YXR1cyA9IEdOVFNUX25vX2Rldmlj ZV9zcGFjZTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAogICAgIHNwaW5fbG9jaygmcmQt PmdyYW50X3RhYmxlLT5sb2NrKTsKKworICAgIGFjdCA9ICZyZC0+Z3JhbnRfdGFibGUtPmFj dGl2ZVthY3RpdmVfdGFibGUob3AtPnJlZildCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgW2FjdGl2ZV9pbmRleChvcC0+cmVmKV07CisgICAgc2hhID0gJnJkLT5ncmFu dF90YWJsZS0+c2hhcmVkW3NoYXJlZF90YWJsZShvcC0+cmVmKV0KKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBbc2hhcmVkX2luZGV4KG9wLT5yZWYpXTsKKworICAgIC8q IEJvdW5kcyBjaGVjayBvbiB0aGUgZ3JhbnQgcmVmICovCisgICAgaWYgKCB1bmxpa2VseShv cC0+cmVmID49IG5yX2dyYW50X2VudHJpZXMocmQtPmdyYW50X3RhYmxlKSkpCisgICAgICAg IFBJTl9GQUlMKHVubG9ja19vdXQsIEdOVFNUX2JhZF9nbnRyZWYsICJCYWQgcmVmICglZCku XG4iLCBvcC0+cmVmKTsKIAogICAgIC8qIElmIGFscmVhZHkgcGlubmVkLCBjaGVjayB0aGUg YWN0aXZlIGRvbWlkIGFuZCBhdm9pZCByZWZjbnQgb3ZlcmZsb3cuICovCiAgICAgaWYgKCBh Y3QtPnBpbiAmJgpAQCAtMjQ1LDkgKzM1MCwxMCBAQCBfX2dudHRhYl9tYXBfZ3JhbnRfcmVm KAogICAgICAgICBhY3QtPnBpbiArPSAob3AtPmZsYWdzICYgR05UTUFQX3JlYWRvbmx5KSA/ CiAgICAgICAgICAgICBHTlRQSU5faHN0cl9pbmMgOiBHTlRQSU5faHN0d19pbmM7CiAKKyAg ICBmcmFtZSA9IGFjdC0+ZnJhbWU7CisKICAgICBzcGluX3VubG9jaygmcmQtPmdyYW50X3Rh YmxlLT5sb2NrKTsKIAotICAgIGZyYW1lID0gYWN0LT5mcmFtZTsKICAgICBpZiAoIHVubGlr ZWx5KCFtZm5fdmFsaWQoZnJhbWUpKSB8fAogICAgICAgICAgdW5saWtlbHkoISgob3AtPmZs YWdzICYgR05UTUFQX3JlYWRvbmx5KSA/CiAgICAgICAgICAgICAgICAgICAgIGdldF9wYWdl KG1mbl90b19wYWdlKGZyYW1lKSwgcmQpIDoKQEAgLTI4MSw5ICszODcsMTEgQEAgX19nbnR0 YWJfbWFwX2dyYW50X3JlZigKIAogICAgIFRSQUNFXzFEKFRSQ19NRU1fUEFHRV9HUkFOVF9N QVAsIG9wLT5kb20pOwogCi0gICAgbGQtPmdyYW50X3RhYmxlLT5tYXB0cmFja1toYW5kbGVd LmRvbWlkID0gb3AtPmRvbTsKLSAgICBsZC0+Z3JhbnRfdGFibGUtPm1hcHRyYWNrW2hhbmRs ZV0ucmVmICAgPSBvcC0+cmVmOwotICAgIGxkLT5ncmFudF90YWJsZS0+bWFwdHJhY2tbaGFu ZGxlXS5mbGFncyA9IG9wLT5mbGFnczsKKyAgICBtdCA9ICZsZC0+Z3JhbnRfdGFibGUtPm1h cHRyYWNrW21hcHRyYWNrX3RhYmxlKGhhbmRsZSldCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFttYXB0cmFja19pbmRleChoYW5kbGUpXTsKKyAgICBtdC0+ZG9taWQg PSBvcC0+ZG9tOworICAgIG10LT5yZWYgICA9IG9wLT5yZWY7CisgICAgbXQtPmZsYWdzID0g b3AtPmZsYWdzOwogCiAgICAgb3AtPmRldl9idXNfYWRkciA9ICh1NjQpZnJhbWUgPDwgUEFH RV9TSElGVDsKICAgICBvcC0+aGFuZGxlICAgICAgID0gaGFuZGxlOwpAQCAtMjk0LDYgKzQw MiwxMSBAQCBfX2dudHRhYl9tYXBfZ3JhbnRfcmVmKAogCiAgdW5kb19vdXQ6CiAgICAgc3Bp bl9sb2NrKCZyZC0+Z3JhbnRfdGFibGUtPmxvY2spOworCisgICAgYWN0ID0gJnJkLT5ncmFu dF90YWJsZS0+YWN0aXZlW2FjdGl2ZV90YWJsZShvcC0+cmVmKV0KKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBbYWN0aXZlX2luZGV4KG9wLT5yZWYpXTsKKyAgICBzaGEg PSAmcmQtPmdyYW50X3RhYmxlLT5zaGFyZWRbc2hhcmVkX3RhYmxlKG9wLT5yZWYpXQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaGFyZWRfaW5kZXgob3AtPnJlZild OwogCiAgICAgaWYgKCBvcC0+ZmxhZ3MgJiBHTlRNQVBfZGV2aWNlX21hcCApCiAgICAgICAg IGFjdC0+cGluIC09IChvcC0+ZmxhZ3MgJiBHTlRNQVBfcmVhZG9ubHkpID8KQEAgLTM1Mywx MiArNDY2LDE5IEBAIF9fZ250dGFiX3VubWFwX2dyYW50X3JlZigKIAogICAgIGZyYW1lID0g KHVuc2lnbmVkIGxvbmcpKG9wLT5kZXZfYnVzX2FkZHIgPj4gUEFHRV9TSElGVCk7CiAKLSAg ICBtYXAgPSAmbGQtPmdyYW50X3RhYmxlLT5tYXB0cmFja1tvcC0+aGFuZGxlXTsKLQotICAg IGlmICggdW5saWtlbHkob3AtPmhhbmRsZSA+PSBsZC0+Z3JhbnRfdGFibGUtPm1hcHRyYWNr X2xpbWl0KSB8fAotICAgICAgICAgdW5saWtlbHkoIW1hcC0+ZmxhZ3MpICkKKyAgICBpZiAo IHVubGlrZWx5KG9wLT5oYW5kbGUgPj0gbGQtPmdyYW50X3RhYmxlLT5tYXB0cmFja19saW1p dCkgKQogICAgIHsKICAgICAgICAgZ2RwcmludGsoWEVOTE9HX0lORk8sICJCYWQgaGFuZGxl ICglZCkuXG4iLCBvcC0+aGFuZGxlKTsKKyAgICAgICAgb3AtPnN0YXR1cyA9IEdOVFNUX2Jh ZF9oYW5kbGU7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtYXAgPSAmbGQtPmdy YW50X3RhYmxlLT5tYXB0cmFja1ttYXB0cmFja190YWJsZShvcC0+aGFuZGxlKV0KKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttYXB0cmFja19pbmRleChvcC0+aGFu ZGxlKV07CisKKyAgICBpZiAoIHVubGlrZWx5KCFtYXAtPmZsYWdzKSApCisgICAgeworICAg ICAgICBnZHByaW50ayhYRU5MT0dfSU5GTywgIlplcm8gZmxhZ3MgZm9yIGhhbmRsZSAoJWQp LlxuIiwgb3AtPmhhbmRsZSk7CiAgICAgICAgIG9wLT5zdGF0dXMgPSBHTlRTVF9iYWRfaGFu ZGxlOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMzc4LDEwICs0OTgsMTIgQEAgX19n bnR0YWJfdW5tYXBfZ3JhbnRfcmVmKAogCiAgICAgVFJBQ0VfMUQoVFJDX01FTV9QQUdFX0dS QU5UX1VOTUFQLCBkb20pOwogCi0gICAgYWN0ID0gJnJkLT5ncmFudF90YWJsZS0+YWN0aXZl W3JlZl07Ci0gICAgc2hhID0gJnJkLT5ncmFudF90YWJsZS0+c2hhcmVkW3JlZl07Ci0KICAg ICBzcGluX2xvY2soJnJkLT5ncmFudF90YWJsZS0+bG9jayk7CisKKyAgICBhY3QgPSAmcmQt PmdyYW50X3RhYmxlLT5hY3RpdmVbYWN0aXZlX3RhYmxlKHJlZildCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgW2FjdGl2ZV9pbmRleChyZWYpXTsKKyAgICBzaGEgPSAm cmQtPmdyYW50X3RhYmxlLT5zaGFyZWRbc2hhcmVkX3RhYmxlKHJlZildCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgW3NoYXJlZF9pbmRleChyZWYpXTsKIAogICAgIGlm ICggZnJhbWUgPT0gMCApCiAgICAgewpAQCAtNDc2LDYgKzU5OCw2MiBAQCBmYXVsdDoKICAg ICByZXR1cm4gLUVGQVVMVDsgICAgCiB9CiAKK2ludAorZ250dGFiX2dyb3dfdGFibGUoc3Ry dWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgaW50IHJlcV9ucl9mcmFtZXMpCit7CisgICAgLyog ZCdzIGdyYW50IHRhYmxlIGxvY2sgbXVzdCBiZSBoZWxkIGJ5IHRoZSBjYWxsZXIgKi8KKwor ICAgIHN0cnVjdCBncmFudF90YWJsZSAqZ3QgPSBkLT5ncmFudF90YWJsZTsKKyAgICB1bnNp Z25lZCBpbnQgaTsKKworICAgIEFTU0VSVChyZXFfbnJfZnJhbWVzIDw9IG1heF9ucl9ncmFu dF9mcmFtZXMpOworCisgICAgZ2RwcmludGsoWEVOTE9HX0lORk8sCisgICAgICAgICAgICAi RXhwYW5kaW5nIGRvbSAoJWQpIGdyYW50IHRhYmxlIGZyb20gKCVkKSB0byAoJWQpIGZyYW1l cy5cbiIsCisgICAgICAgICAgICBkLT5kb21haW5faWQsIG5yX2dyYW50X2ZyYW1lcyhndCks IHJlcV9ucl9mcmFtZXMpOworCisgICAgLyogQWN0aXZlICovCisgICAgZm9yICggaSA9IG5y X2FjdGl2ZV9ncmFudF9mcmFtZXMoZ3QpOworICAgICAgICAgIGkgPCBudW1fYWN0X2ZyYW1l c19mcm9tX3NoYV9mcmFtZXMocmVxX25yX2ZyYW1lcyk7IGkrKyApCisgICAgeworICAgICAg ICBpZiAoIChndC0+YWN0aXZlW2ldID0gYWxsb2NfeGVuaGVhcF9wYWdlKCkpID09IE5VTEwg KQorICAgICAgICAgICAgZ290byBhY3RpdmVfYWxsb2NfZmFpbGVkOworICAgICAgICBtZW1z ZXQoZ3QtPmFjdGl2ZVtpXSwgMCwgUEFHRV9TSVpFKTsKKyAgICB9CisKKyAgICAvKiBTaGFy ZWQgKi8KKyAgICBmb3IgKCBpID0gbnJfZ3JhbnRfZnJhbWVzKGd0KTsgaSA8IHJlcV9ucl9m cmFtZXM7IGkrKyApCisgICAgeworICAgICAgICBpZiAoIChndC0+c2hhcmVkW2ldID0gYWxs b2NfeGVuaGVhcF9wYWdlKCkpID09IE5VTEwgKQorICAgICAgICAgICAgZ290byBzaGFyZWRf YWxsb2NfZmFpbGVkOworICAgICAgICBtZW1zZXQoZ3QtPnNoYXJlZFtpXSwgMCwgUEFHRV9T SVpFKTsKKyAgICB9CisKKyAgICAvKiBTaGFyZSB0aGUgbmV3IHNoYXJlZCBmcmFtZXMgd2l0 aCB0aGUgcmVjaXBpZW50IGRvbWFpbiAqLworICAgIGZvciAoIGkgPSBucl9ncmFudF9mcmFt ZXMoZ3QpOyBpIDwgcmVxX25yX2ZyYW1lczsgaSsrICkKKyAgICAgICAgZ250dGFiX2NyZWF0 ZV9zaGFyZWRfcGFnZShkLCBndCwgaSk7CisKKyAgICBndC0+bnJfZ3JhbnRfZnJhbWVzID0g cmVxX25yX2ZyYW1lczsKKworICAgIHJldHVybiAxOworCitzaGFyZWRfYWxsb2NfZmFpbGVk OgorICAgIGZvciAoIGkgPSBucl9ncmFudF9mcmFtZXMoZ3QpOyBpIDwgcmVxX25yX2ZyYW1l czsgaSsrICkKKyAgICB7CisgICAgICAgIGZyZWVfeGVuaGVhcF9wYWdlKGd0LT5zaGFyZWRb aV0pOworICAgICAgICBndC0+c2hhcmVkW2ldID0gTlVMTDsKKyAgICB9CithY3RpdmVfYWxs b2NfZmFpbGVkOgorICAgIGZvciAoIGkgPSBucl9hY3RpdmVfZ3JhbnRfZnJhbWVzKGd0KTsK KyAgICAgICAgICBpIDwgbnVtX2FjdF9mcmFtZXNfZnJvbV9zaGFfZnJhbWVzKHJlcV9ucl9m cmFtZXMpOyBpKysgKQorICAgIHsKKyAgICAgICAgZnJlZV94ZW5oZWFwX3BhZ2UoZ3QtPmFj dGl2ZVtpXSk7CisgICAgICAgIGd0LT5hY3RpdmVbaV0gPSBOVUxMOworICAgIH0KKyAgICBn ZHByaW50ayhYRU5MT0dfSU5GTywgIkFsbG9jYXRpb24gZmFpbHVyZSB3aGVuIGV4cGFuZGlu ZyBncmFudCB0YWJsZS5cbiIpOworICAgIHJldHVybiAwOworfQorCiBzdGF0aWMgbG9uZyAK IGdudHRhYl9zZXR1cF90YWJsZSgKICAgICBYRU5fR1VFU1RfSEFORExFKGdudHRhYl9zZXR1 cF90YWJsZV90KSB1b3AsIHVuc2lnbmVkIGludCBjb3VudCkKQEAgLTQ5NSwxMSArNjczLDEx IEBAIGdudHRhYl9zZXR1cF90YWJsZSgKICAgICAgICAgcmV0dXJuIC1FRkFVTFQ7CiAgICAg fQogCi0gICAgaWYgKCB1bmxpa2VseShvcC5ucl9mcmFtZXMgPiBOUl9HUkFOVF9GUkFNRVMp ICkKKyAgICBpZiAoIHVubGlrZWx5KG9wLm5yX2ZyYW1lcyA+IG1heF9ucl9ncmFudF9mcmFt ZXMpICkKICAgICB7CiAgICAgICAgIGdkcHJpbnRrKFhFTkxPR19JTkZPLCAiWGVuIG9ubHkg c3VwcG9ydHMgdXAgdG8gJWQgZ3JhbnQtdGFibGUgZnJhbWVzIgogICAgICAgICAgICAgICAg ICIgcGVyIGRvbWFpbi5cbiIsCi0gICAgICAgICAgICAgICAgTlJfR1JBTlRfRlJBTUVTKTsK KyAgICAgICAgICAgICAgICBtYXhfbnJfZ3JhbnRfZnJhbWVzKTsKICAgICAgICAgb3Auc3Rh dHVzID0gR05UU1RfZ2VuZXJhbF9lcnJvcjsKICAgICAgICAgZ290byBvdXQ7CiAgICAgfQpA QCAtNTIzLDYgKzcwMSwyMSBAQCBnbnR0YWJfc2V0dXBfdGFibGUoCiAgICAgfQogCiAgICAg QVNTRVJUKGQtPmdyYW50X3RhYmxlICE9IE5VTEwpOworCisgICAgc3Bpbl9sb2NrKCZkLT5n cmFudF90YWJsZS0+bG9jayk7CisKKyAgICBpZiAoIChvcC5ucl9mcmFtZXMgPiBucl9ncmFu dF9mcmFtZXMoZC0+Z3JhbnRfdGFibGUpKSAmJgorICAgICAgICAgIWdudHRhYl9ncm93X3Rh YmxlKGQsIG9wLm5yX2ZyYW1lcykgKQorICAgIHsKKyAgICAgICAgZ2RwcmludGsoWEVOTE9H X0lORk8sCisgICAgICAgICAgICAgICAgIkV4cGFuZCBncmFudCB0YWJsZSB0byAoJWQpIGZh aWxlZC4gQ3VycmVudDogKCVkKSBNYXg6ICglZCkuXG4iLAorICAgICAgICAgICAgICAgIG9w Lm5yX2ZyYW1lcywKKyAgICAgICAgICAgICAgICBucl9ncmFudF9mcmFtZXMoZC0+Z3JhbnRf dGFibGUpLAorICAgICAgICAgICAgICAgIG1heF9ucl9ncmFudF9mcmFtZXMpOworICAgICAg ICBvcC5zdGF0dXMgPSBHTlRTVF9nZW5lcmFsX2Vycm9yOworICAgICAgICBnb3RvIHNldHVw X3VubG9ja19vdXQ7CisgICAgfQorIAogICAgIG9wLnN0YXR1cyA9IEdOVFNUX29rYXk7CiAg ICAgZm9yICggaSA9IDA7IGkgPCBvcC5ucl9mcmFtZXM7IGkrKyApCiAgICAgewpAQCAtNTMw LDkgKzcyMyw2NiBAQCBnbnR0YWJfc2V0dXBfdGFibGUoCiAgICAgICAgICh2b2lkKWNvcHlf dG9fZ3Vlc3Rfb2Zmc2V0KG9wLmZyYW1lX2xpc3QsIGksICZnbWZuLCAxKTsKICAgICB9CiAK KyBzZXR1cF91bmxvY2tfb3V0OgorICAgIHNwaW5fdW5sb2NrKCZkLT5ncmFudF90YWJsZS0+ bG9jayk7CisKICAgICBwdXRfZG9tYWluKGQpOwogCiAgb3V0OgorICAgIGlmICggdW5saWtl bHkoY29weV90b19ndWVzdCh1b3AsICZvcCwgMSkpICkKKyAgICAgICAgcmV0dXJuIC1FRkFV TFQ7CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGxvbmcgCitnbnR0YWJfcXVlcnlf c2l6ZSgKKyAgICBYRU5fR1VFU1RfSEFORExFKGdudHRhYl9xdWVyeV9zaXplX3QpIHVvcCwg dW5zaWduZWQgaW50IGNvdW50KQoreworICAgIHN0cnVjdCBnbnR0YWJfcXVlcnlfc2l6ZSBv cDsKKyAgICBzdHJ1Y3QgZG9tYWluICpkOworICAgIGRvbWlkX3QgICAgICAgIGRvbTsKKwor ICAgIGlmICggY291bnQgIT0gMSApCisgICAgICAgIHJldHVybiAtRUlOVkFMOworCisgICAg aWYgKCB1bmxpa2VseShjb3B5X2Zyb21fZ3Vlc3QoJm9wLCB1b3AsIDEpICE9IDApICkKKyAg ICB7CisgICAgICAgIGdkcHJpbnRrKFhFTkxPR19JTkZPLCAiRmF1bHQgd2hpbGUgcmVhZGlu ZyBnbnR0YWJfcXVlcnlfc2l6ZV90LlxuIik7CisgICAgICAgIHJldHVybiAtRUZBVUxUOwor ICAgIH0KKworICAgIGRvbSA9IG9wLmRvbTsKKyAgICBpZiAoIGRvbSA9PSBET01JRF9TRUxG ICkKKyAgICB7CisgICAgICAgIGRvbSA9IGN1cnJlbnQtPmRvbWFpbi0+ZG9tYWluX2lkOwor ICAgIH0KKyAgICBlbHNlIGlmICggdW5saWtlbHkoIUlTX1BSSVYoY3VycmVudC0+ZG9tYWlu KSkgKQorICAgIHsKKyAgICAgICAgb3Auc3RhdHVzID0gR05UU1RfcGVybWlzc2lvbl9kZW5p ZWQ7CisgICAgICAgIGdvdG8gcXVlcnlfb3V0OworICAgIH0KKworICAgIGlmICggdW5saWtl bHkoKGQgPSBmaW5kX2RvbWFpbl9ieV9pZChkb20pKSA9PSBOVUxMKSApCisgICAgeworICAg ICAgICBnZHByaW50ayhYRU5MT0dfSU5GTywgIkJhZCBkb21pZCAlZC5cbiIsIGRvbSk7Cisg ICAgICAgIG9wLnN0YXR1cyA9IEdOVFNUX2JhZF9kb21haW47CisgICAgICAgIGdvdG8gcXVl cnlfb3V0OworICAgIH0KKworICAgIEFTU0VSVChkLT5ncmFudF90YWJsZSAhPSBOVUxMKTsK KworICAgIHNwaW5fbG9jaygmZC0+Z3JhbnRfdGFibGUtPmxvY2spOworCisgICAgb3AubnJf ZnJhbWVzICAgICA9IG5yX2dyYW50X2ZyYW1lcyhkLT5ncmFudF90YWJsZSk7CisgICAgb3Au bWF4X25yX2ZyYW1lcyA9IG1heF9ucl9ncmFudF9mcmFtZXM7CisgICAgb3Auc3RhdHVzICAg ICAgICA9IEdOVFNUX29rYXk7CisKKyAgICBzcGluX3VubG9jaygmZC0+Z3JhbnRfdGFibGUt PmxvY2spOworCisgICAgcHV0X2RvbWFpbihkKTsKKworIHF1ZXJ5X291dDoKICAgICBpZiAo IHVubGlrZWx5KGNvcHlfdG9fZ3Vlc3QodW9wLCAmb3AsIDEpKSApCiAgICAgICAgIHJldHVy biAtRUZBVUxUOwogCkBAIC01NTIsMTcgKzgwMiwyMyBAQCBnbnR0YWJfcHJlcGFyZV9mb3Jf dHJhbnNmZXIoCiAgICAgdW5pb24gZ3JhbnRfY29tYm8gICBzY29tYm8sIHByZXZfc2NvbWJv LCBuZXdfc2NvbWJvOwogICAgIGludCAgICAgICAgICAgICAgICAgcmV0cmllcyA9IDA7CiAK LSAgICBpZiAoIHVubGlrZWx5KChyZ3QgPSByZC0+Z3JhbnRfdGFibGUpID09IE5VTEwpIHx8 Ci0gICAgICAgICB1bmxpa2VseShyZWYgPj0gTlJfR1JBTlRfRU5UUklFUykgKQotICAgIHsK LSAgICAgICAgZ2RwcmludGsoWEVOTE9HX0lORk8sICJEb20gJWQgaGFzIG5vIGcudC4sIG9y IHJlZiBpcyBiYWQgKCVkKS5cbiIsCi0gICAgICAgICAgICAgICAgcmQtPmRvbWFpbl9pZCwg cmVmKTsKKyAgICBpZiAoIHVubGlrZWx5KChyZ3QgPSByZC0+Z3JhbnRfdGFibGUpID09IE5V TEwpICkKKyAgICB7CisgICAgICAgIGdkcHJpbnRrKFhFTkxPR19JTkZPLCAiRG9tICVkIGhh cyBubyBncmFudCB0YWJsZS5cbiIsIHJkLT5kb21haW5faWQpOwogICAgICAgICByZXR1cm4g MDsKICAgICB9CiAKICAgICBzcGluX2xvY2soJnJndC0+bG9jayk7CiAKLSAgICBzaGEgPSAm cmd0LT5zaGFyZWRbcmVmXTsKKyAgICBpZiAoIHVubGlrZWx5KHJlZiA+PSBucl9ncmFudF9l bnRyaWVzKHJkLT5ncmFudF90YWJsZSkpICkKKyAgICB7CisgICAgICAgIGdkcHJpbnRrKFhF TkxPR19JTkZPLAorICAgICAgICAgICAgICAgICJCYWQgZ3JhbnQgcmVmZXJlbmNlICglZCkg Zm9yIHRyYW5zZmVyIHRvIGRvbWFpbiglZCkuXG4iLAorICAgICAgICAgICAgICAgIHJlZiwg cmQtPmRvbWFpbl9pZCk7CisgICAgICAgIGdvdG8gZmFpbDsKKyAgICB9CisKKyAgICBzaGEg PSAmcmd0LT5zaGFyZWRbc2hhcmVkX3RhYmxlKHJlZildW3NoYXJlZF9pbmRleChyZWYpXTsK ICAgICAKICAgICBzY29tYm8ud29yZCA9ICoodTMyICopJnNoYS0+ZmxhZ3M7CiAKQEAgLTY5 OCwxMSArOTU0LDE2IEBAIGdudHRhYl90cmFuc2ZlcigKICAgICAgICAgVFJBQ0VfMUQoVFJD X01FTV9QQUdFX0dSQU5UX1RSQU5TRkVSLCBlLT5kb21haW5faWQpOwogCiAgICAgICAgIC8q IFRlbGwgdGhlIGd1ZXN0IGFib3V0IGl0cyBuZXcgcGFnZSBmcmFtZS4gKi8KLSAgICAgICAg c2hhID0gJmUtPmdyYW50X3RhYmxlLT5zaGFyZWRbZ29wLnJlZl07CisgICAgICAgIHNwaW5f bG9jaygmZS0+Z3JhbnRfdGFibGUtPmxvY2spOworCisgICAgICAgIHNoYSA9ICZlLT5ncmFu dF90YWJsZS0+c2hhcmVkW3NoYXJlZF90YWJsZShnb3AucmVmKV0KKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBbc2hhcmVkX2luZGV4KGdvcC5yZWYpXTsKICAgICAg ICAgZ3Vlc3RfcGh5c21hcF9hZGRfcGFnZShlLCBzaGEtPmZyYW1lLCBtZm4pOwogICAgICAg ICBzaGEtPmZyYW1lID0gbWZuOwogICAgICAgICB3bWIoKTsKICAgICAgICAgc2hhLT5mbGFn cyB8PSBHVEZfdHJhbnNmZXJfY29tcGxldGVkOworCisgICAgICAgIHNwaW5fdW5sb2NrKCZl LT5ncmFudF90YWJsZS0+bG9jayk7CiAKICAgICAgICAgcHV0X2RvbWFpbihlKTsKIApAQCAt NzI2LDE3ICs5ODcsMjYgQEAgX19yZWxlYXNlX2dyYW50X2Zvcl9jb3B5KAogX19yZWxlYXNl X2dyYW50X2Zvcl9jb3B5KAogICAgIHN0cnVjdCBkb21haW4gKnJkLCB1bnNpZ25lZCBsb25n IGdyZWYsIGludCByZWFkb25seSkKIHsKLSAgICBncmFudF9lbnRyeV90ICpjb25zdCBzaGEg PSAmcmQtPmdyYW50X3RhYmxlLT5zaGFyZWRbZ3JlZl07Ci0gICAgc3RydWN0IGFjdGl2ZV9n cmFudF9lbnRyeSAqY29uc3QgYWN0ID0gJnJkLT5ncmFudF90YWJsZS0+YWN0aXZlW2dyZWZd OworICAgIGdyYW50X2VudHJ5X3QgKnNoYTsKKyAgICBzdHJ1Y3QgYWN0aXZlX2dyYW50X2Vu dHJ5ICphY3Q7CisgICAgdW5zaWduZWQgbG9uZyByX2ZyYW1lOwogCiAgICAgc3Bpbl9sb2Nr KCZyZC0+Z3JhbnRfdGFibGUtPmxvY2spOwogCisgICAgYWN0ID0gJnJkLT5ncmFudF90YWJs ZS0+YWN0aXZlW2FjdGl2ZV90YWJsZShncmVmKV0KKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBbYWN0aXZlX2luZGV4KGdyZWYpXTsKKyAgICBzaGEgPSAmcmQtPmdyYW50 X3RhYmxlLT5zaGFyZWRbc2hhcmVkX3RhYmxlKGdyZWYpXQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFtzaGFyZWRfaW5kZXgoZ3JlZildOworICAgIHJfZnJhbWUgPSBh Y3QtPmZyYW1lOworCiAgICAgaWYgKCByZWFkb25seSApCiAgICAgewogICAgICAgICBhY3Qt PnBpbiAtPSBHTlRQSU5faHN0cl9pbmM7CiAgICAgfQogICAgIGVsc2UKICAgICB7CisgICAg ICAgIGdudHRhYl9tYXJrX2RpcnR5KHJkLCByX2ZyYW1lKTsKKwogICAgICAgICBhY3QtPnBp biAtPSBHTlRQSU5faHN0d19pbmM7CiAgICAgICAgIGlmICggIShhY3QtPnBpbiAmIChHTlRQ SU5fZGV2d19tYXNrfEdOVFBJTl9oc3R3X21hc2spKSApCiAgICAgICAgICAgICBnbnR0YWJf Y2xlYXJfZmxhZyhfR1RGX3dyaXRpbmcsICZzaGEtPmZsYWdzKTsKQEAgLTc2MywxNCArMTAz MywxNiBAQCBfX2FjcXVpcmVfZ3JhbnRfZm9yX2NvcHkoCiAgICAgaW50IHJldHJpZXMgPSAw OwogICAgIHVuaW9uIGdyYW50X2NvbWJvIHNjb21ibywgcHJldl9zY29tYm8sIG5ld19zY29t Ym87CiAKLSAgICBpZiAoIHVubGlrZWx5KGdyZWYgPj0gTlJfR1JBTlRfRU5UUklFUykgKQot ICAgICAgICBQSU5fRkFJTChlcnJvcl9vdXQsIEdOVFNUX2JhZF9nbnRyZWYsCisgICAgc3Bp bl9sb2NrKCZyZC0+Z3JhbnRfdGFibGUtPmxvY2spOworCisgICAgaWYgKCB1bmxpa2VseShn cmVmID49IG5yX2dyYW50X2VudHJpZXMocmQtPmdyYW50X3RhYmxlKSkgKQorICAgICAgICBQ SU5fRkFJTCh1bmxvY2tfb3V0LCBHTlRTVF9iYWRfZ250cmVmLAogICAgICAgICAgICAgICAg ICAiQmFkIGdyYW50IHJlZmVyZW5jZSAlbGRcbiIsIGdyZWYpOwotICAgIAotICAgIGFjdCA9 ICZyZC0+Z3JhbnRfdGFibGUtPmFjdGl2ZVtncmVmXTsKLSAgICBzaGEgPSAmcmQtPmdyYW50 X3RhYmxlLT5zaGFyZWRbZ3JlZl07Ci0KLSAgICBzcGluX2xvY2soJnJkLT5ncmFudF90YWJs ZS0+bG9jayk7CisKKyAgICBhY3QgPSAmcmQtPmdyYW50X3RhYmxlLT5hY3RpdmVbYWN0aXZl X3RhYmxlKGdyZWYpXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthY3Rp dmVfaW5kZXgoZ3JlZildOworICAgIHNoYSA9ICZyZC0+Z3JhbnRfdGFibGUtPnNoYXJlZFtz aGFyZWRfdGFibGUoZ3JlZildCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg W3NoYXJlZF9pbmRleChncmVmKV07CiAgICAgCiAgICAgLyogSWYgYWxyZWFkeSBwaW5uZWQs IGNoZWNrIHRoZSBhY3RpdmUgZG9taWQgYW5kIGF2b2lkIHJlZmNudCBvdmVyZmxvdy4gKi8K ICAgICBpZiAoIGFjdC0+cGluICYmCkBAIC04MzMsNyArMTEwNSw2IEBAIF9fYWNxdWlyZV9n cmFudF9mb3JfY29weSgKIAogIHVubG9ja19vdXQ6CiAgICAgc3Bpbl91bmxvY2soJnJkLT5n cmFudF90YWJsZS0+bG9jayk7Ci0gZXJyb3Jfb3V0OgogICAgIHJldHVybiByYzsKIH0KIApA QCAtMTAyNyw2ICsxMjk4LDEyIEBAIGRvX2dyYW50X3RhYmxlX29wKAogICAgICAgICByYyA9 IGdudHRhYl9jb3B5KGNvcHksIGNvdW50KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorICAg IGNhc2UgR05UVEFCT1BfcXVlcnlfc2l6ZToKKyAgICB7CisgICAgICAgIHJjID0gZ250dGFi X3F1ZXJ5X3NpemUoCisgICAgICAgICAgICBndWVzdF9oYW5kbGVfY2FzdCh1b3AsIGdudHRh Yl9xdWVyeV9zaXplX3QpLCBjb3VudCk7CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICBk ZWZhdWx0OgogICAgICAgICByYyA9IC1FTk9TWVM7CiAgICAgICAgIGJyZWFrOwpAQCAtMTAz OCw2ICsxMzE1LDEzIEBAIGRvX2dyYW50X3RhYmxlX29wKAogICAgIHJldHVybiByYzsKIH0K IAorc3RhdGljIHVuc2lnbmVkIGludCBtYXhfbnJfYWN0aXZlX2dyYW50X2ZyYW1lcyh2b2lk KQoreworICAgIHJldHVybiAoKChtYXhfbnJfZ3JhbnRfZnJhbWVzICogKFBBR0VfU0laRSAv IHNpemVvZihncmFudF9lbnRyeV90KSkpICsgCisgICAgICAgICAgICAgICAgICAgICgoUEFH RV9TSVpFIC8gc2l6ZW9mKHN0cnVjdCBhY3RpdmVfZ3JhbnRfZW50cnkpKS0xKSkgCisgICAg ICAgICAgICAgICAgICAgLyAoUEFHRV9TSVpFIC8gc2l6ZW9mKHN0cnVjdCBhY3RpdmVfZ3Jh bnRfZW50cnkpKSk7Cit9CisKIGludCAKIGdyYW50X3RhYmxlX2NyZWF0ZSgKICAgICBzdHJ1 Y3QgZG9tYWluICpkKQpAQCAtMTA0NSw1MCArMTMyOSw3NSBAQCBncmFudF90YWJsZV9jcmVh dGUoCiAgICAgc3RydWN0IGdyYW50X3RhYmxlICp0OwogICAgIGludCAgICAgICAgICAgICAg ICAgaTsKIAotICAgIEJVR19PTihNQVBUUkFDS19NQVhfRU5UUklFUyA8IE5SX0dSQU5UX0VO VFJJRVMpOworICAgIC8qIElmIHRoaXMgc2l6ZW9mIGFzc2VydGlvbiBmYWlscywgZml4IHRo ZSBmdW5jdGlvbjogc2hhcmVkX2luZGV4ICovCisgICAgQVNTRVJUKHNpemVvZihncmFudF9l bnRyeV90KSA9PSA4KTsKKwogICAgIGlmICggKHQgPSB4bWFsbG9jKHN0cnVjdCBncmFudF90 YWJsZSkpID09IE5VTEwgKQotICAgICAgICBnb3RvIG5vX21lbTsKKyAgICAgICAgZ290byBu b19tZW1fMDsKIAogICAgIC8qIFNpbXBsZSBzdHVmZi4gKi8KICAgICBtZW1zZXQodCwgMCwg c2l6ZW9mKCp0KSk7CiAgICAgc3Bpbl9sb2NrX2luaXQoJnQtPmxvY2spOworICAgIHQtPm5y X2dyYW50X2ZyYW1lcyA9IElOSVRJQUxfTlJfR1JBTlRfRlJBTUVTOwogCiAgICAgLyogQWN0 aXZlIGdyYW50IHRhYmxlLiAqLwotICAgIHQtPmFjdGl2ZSA9IHhtYWxsb2NfYXJyYXkoc3Ry dWN0IGFjdGl2ZV9ncmFudF9lbnRyeSwgTlJfR1JBTlRfRU5UUklFUyk7Ci0gICAgaWYgKCB0 LT5hY3RpdmUgPT0gTlVMTCApCi0gICAgICAgIGdvdG8gbm9fbWVtOwotICAgIG1lbXNldCh0 LT5hY3RpdmUsIDAsIHNpemVvZihzdHJ1Y3QgYWN0aXZlX2dyYW50X2VudHJ5KSAqIE5SX0dS QU5UX0VOVFJJRVMpOworICAgIGlmICggKHQtPmFjdGl2ZSA9IHhtYWxsb2NfYXJyYXkoc3Ry dWN0IGFjdGl2ZV9ncmFudF9lbnRyeSAqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgbWF4X25yX2FjdGl2ZV9ncmFudF9mcmFtZXMoKSkpID09IE5VTEwgKQorICAg ICAgICBnb3RvIG5vX21lbV8xOworICAgIG1lbXNldCh0LT5hY3RpdmUsIDAsIG1heF9ucl9h Y3RpdmVfZ3JhbnRfZnJhbWVzKCkgKiBzaXplb2YodC0+YWN0aXZlWzBdKSk7CisgICAgZm9y ICggaSA9IDA7CisgICAgICAgICAgaSA8IG51bV9hY3RfZnJhbWVzX2Zyb21fc2hhX2ZyYW1l cyhJTklUSUFMX05SX0dSQU5UX0ZSQU1FUyk7IGkrKyApCisgICAgeworICAgICAgICBpZiAo ICh0LT5hY3RpdmVbaV0gPSBhbGxvY194ZW5oZWFwX3BhZ2UoKSkgPT0gTlVMTCApCisgICAg ICAgICAgICBnb3RvIG5vX21lbV8yOworICAgICAgICBtZW1zZXQodC0+YWN0aXZlW2ldLCAw LCBQQUdFX1NJWkUpOworICAgIH0KIAogICAgIC8qIFRyYWNraW5nIG9mIG1hcHBlZCBmb3Jl aWduIGZyYW1lcyB0YWJsZSAqLwotICAgIGlmICggKHQtPm1hcHRyYWNrID0gYWxsb2NfeGVu aGVhcF9wYWdlKCkpID09IE5VTEwgKQotICAgICAgICBnb3RvIG5vX21lbTsKLSAgICB0LT5t YXB0cmFja19vcmRlciA9IDA7CisgICAgaWYgKCAodC0+bWFwdHJhY2sgPSB4bWFsbG9jX2Fy cmF5KHN0cnVjdCBncmFudF9tYXBwaW5nICosCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIG1heF9ucl9tYXB0cmFja19mcmFtZXMoKSkpID09IE5VTEwgKQorICAg ICAgICBnb3RvIG5vX21lbV8yOworICAgIG1lbXNldCh0LT5tYXB0cmFjaywgMCwgbWF4X25y X21hcHRyYWNrX2ZyYW1lcygpICogc2l6ZW9mKHQtPm1hcHRyYWNrWzBdKSk7CisgICAgaWYg KCAodC0+bWFwdHJhY2tbMF0gPSBhbGxvY194ZW5oZWFwX3BhZ2UoKSkgPT0gTlVMTCApCisg ICAgICAgIGdvdG8gbm9fbWVtXzM7CiAgICAgdC0+bWFwdHJhY2tfbGltaXQgPSBQQUdFX1NJ WkUgLyBzaXplb2Yoc3RydWN0IGdyYW50X21hcHBpbmcpOwotICAgIG1lbXNldCh0LT5tYXB0 cmFjaywgMCwgUEFHRV9TSVpFKTsKICAgICBmb3IgKCBpID0gMDsgaSA8IHQtPm1hcHRyYWNr X2xpbWl0OyBpKysgKQotICAgICAgICB0LT5tYXB0cmFja1tpXS5yZWYgPSBpKzE7CisgICAg ICAgIHQtPm1hcHRyYWNrWzBdW2ldLnJlZiA9IGkrMTsKIAogICAgIC8qIFNoYXJlZCBncmFu dCB0YWJsZS4gKi8KLSAgICB0LT5zaGFyZWQgPSBhbGxvY194ZW5oZWFwX3BhZ2VzKE9SREVS X0dSQU5UX0ZSQU1FUyk7Ci0gICAgaWYgKCB0LT5zaGFyZWQgPT0gTlVMTCApCi0gICAgICAg IGdvdG8gbm9fbWVtOwotICAgIG1lbXNldCh0LT5zaGFyZWQsIDAsIE5SX0dSQU5UX0ZSQU1F UyAqIFBBR0VfU0laRSk7Ci0KLSAgICBmb3IgKCBpID0gMDsgaSA8IE5SX0dSQU5UX0ZSQU1F UzsgaSsrICkKKyAgICBpZiAoICh0LT5zaGFyZWQgPSB4bWFsbG9jX2FycmF5KHN0cnVjdCBn cmFudF9lbnRyeSAqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4 X25yX2dyYW50X2ZyYW1lcykpID09IE5VTEwgKQorICAgICAgICBnb3RvIG5vX21lbV8zOwor ICAgIG1lbXNldCh0LT5zaGFyZWQsIDAsIG1heF9ucl9ncmFudF9mcmFtZXMgKiBzaXplb2Yo dC0+c2hhcmVkWzBdKSk7CisgICAgZm9yICggaSA9IDA7IGkgPCBJTklUSUFMX05SX0dSQU5U X0ZSQU1FUzsgaSsrICkKKyAgICB7CisgICAgICAgIGlmICggKHQtPnNoYXJlZFtpXSA9IGFs bG9jX3hlbmhlYXBfcGFnZSgpKSA9PSBOVUxMICkKKyAgICAgICAgICAgIGdvdG8gbm9fbWVt XzQ7CisgICAgICAgIG1lbXNldCh0LT5zaGFyZWRbaV0sIDAsIFBBR0VfU0laRSk7CisgICAg fQorCisgICAgZm9yICggaSA9IDA7IGkgPCBJTklUSUFMX05SX0dSQU5UX0ZSQU1FUzsgaSsr ICkKICAgICAgICAgZ250dGFiX2NyZWF0ZV9zaGFyZWRfcGFnZShkLCB0LCBpKTsKIAogICAg IC8qIE9rYXksIGluc3RhbGwgdGhlIHN0cnVjdHVyZS4gKi8KLSAgICB3bWIoKTsgLyogYXZv aWQgcmFjZXMgd2l0aCBsb2NrLWZyZWUgYWNjZXNzIHRvIGQtPmdyYW50X3RhYmxlICovCiAg ICAgZC0+Z3JhbnRfdGFibGUgPSB0OwogICAgIHJldHVybiAwOwogCi0gbm9fbWVtOgotICAg IGlmICggdCAhPSBOVUxMICkKLSAgICB7Ci0gICAgICAgIHhmcmVlKHQtPmFjdGl2ZSk7Ci0g ICAgICAgIGZyZWVfeGVuaGVhcF9wYWdlKHQtPm1hcHRyYWNrKTsKLSAgICAgICAgeGZyZWUo dCk7Ci0gICAgfQorIG5vX21lbV80OgorICAgIGZvciAoIGkgPSAwOyBpIDwgSU5JVElBTF9O Ul9HUkFOVF9GUkFNRVM7IGkrKyApCisgICAgICAgIGZyZWVfeGVuaGVhcF9wYWdlKHQtPnNo YXJlZFtpXSk7CisgICAgeGZyZWUodC0+c2hhcmVkKTsKKyBub19tZW1fMzoKKyAgICBmcmVl X3hlbmhlYXBfcGFnZSh0LT5tYXB0cmFja1swXSk7CisgICAgeGZyZWUodC0+bWFwdHJhY2sp OworIG5vX21lbV8yOgorICAgIGZvciAoIGkgPSAwOworICAgICAgICAgIGkgPCBudW1fYWN0 X2ZyYW1lc19mcm9tX3NoYV9mcmFtZXMoSU5JVElBTF9OUl9HUkFOVF9GUkFNRVMpOyBpKysg KQorICAgICAgICBmcmVlX3hlbmhlYXBfcGFnZSh0LT5hY3RpdmVbaV0pOworICAgIHhmcmVl KHQtPmFjdGl2ZSk7Cisgbm9fbWVtXzE6CisgICAgeGZyZWUodCk7Cisgbm9fbWVtXzA6CiAg ICAgcmV0dXJuIC1FTk9NRU07CiB9CiAKQEAgLTExMDgsNyArMTQxNyw4IEBAIGdudHRhYl9y ZWxlYXNlX21hcHBpbmdzKAogCiAgICAgZm9yICggaGFuZGxlID0gMDsgaGFuZGxlIDwgZ3Qt Pm1hcHRyYWNrX2xpbWl0OyBoYW5kbGUrKyApCiAgICAgewotICAgICAgICBtYXAgPSAmZ3Qt Pm1hcHRyYWNrW2hhbmRsZV07CisgICAgICAgIG1hcCA9ICZndC0+bWFwdHJhY2tbbWFwdHJh Y2tfdGFibGUoaGFuZGxlKV0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFttYXB0cmFj a19pbmRleChoYW5kbGUpXTsKICAgICAgICAgaWYgKCAhKG1hcC0+ZmxhZ3MgJiAoR05UTUFQ X2RldmljZV9tYXB8R05UTUFQX2hvc3RfbWFwKSkgKQogICAgICAgICAgICAgY29udGludWU7 CiAKQEAgLTExMjMsOCArMTQzMyw4IEBAIGdudHRhYl9yZWxlYXNlX21hcHBpbmdzKAogCiAg ICAgICAgIHNwaW5fbG9jaygmcmQtPmdyYW50X3RhYmxlLT5sb2NrKTsKIAotICAgICAgICBh Y3QgPSAmcmQtPmdyYW50X3RhYmxlLT5hY3RpdmVbcmVmXTsKLSAgICAgICAgc2hhID0gJnJk LT5ncmFudF90YWJsZS0+c2hhcmVkW3JlZl07CisgICAgICAgIGFjdCA9ICZyZC0+Z3JhbnRf dGFibGUtPmFjdGl2ZVthY3RpdmVfdGFibGUocmVmKV1bYWN0aXZlX2luZGV4KHJlZildOwor ICAgICAgICBzaGEgPSAmcmQtPmdyYW50X3RhYmxlLT5zaGFyZWRbc2hhcmVkX3RhYmxlKHJl ZildW3NoYXJlZF9pbmRleChyZWYpXTsKIAogICAgICAgICBpZiAoIG1hcC0+ZmxhZ3MgJiBH TlRNQVBfcmVhZG9ubHkgKQogICAgICAgICB7CkBAIC0xMTgxLDE1ICsxNDkxLDI0IEBAIGdy YW50X3RhYmxlX2Rlc3Ryb3koCiAgICAgc3RydWN0IGRvbWFpbiAqZCkKIHsKICAgICBzdHJ1 Y3QgZ3JhbnRfdGFibGUgKnQgPSBkLT5ncmFudF90YWJsZTsKKyAgICBpbnQgaTsKIAogICAg IGlmICggdCA9PSBOVUxMICkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIGZyZWVfeGVu aGVhcF9wYWdlcyh0LT5zaGFyZWQsIE9SREVSX0dSQU5UX0ZSQU1FUyk7Ci0gICAgZnJlZV94 ZW5oZWFwX3BhZ2VzKHQtPm1hcHRyYWNrLCB0LT5tYXB0cmFja19vcmRlcik7CisgICAgZm9y ICggaSA9IDA7IGkgPCBucl9ncmFudF9mcmFtZXModCk7IGkrKyApCisgICAgICAgIGZyZWVf eGVuaGVhcF9wYWdlKHQtPnNoYXJlZFtpXSk7CisgICAgeGZyZWUodC0+c2hhcmVkKTsKKwor ICAgIGZvciAoIGkgPSAwOyBpIDwgbnJfbWFwdHJhY2tfZnJhbWVzKHQpOyBpKysgKQorICAg ICAgICBmcmVlX3hlbmhlYXBfcGFnZSh0LT5tYXB0cmFja1tpXSk7CisgICAgeGZyZWUodC0+ bWFwdHJhY2spOworCisgICAgZm9yICggaSA9IDA7IGkgPCBucl9hY3RpdmVfZ3JhbnRfZnJh bWVzKHQpOyBpKysgKQorICAgICAgICBmcmVlX3hlbmhlYXBfcGFnZSh0LT5hY3RpdmVbaV0p OwogICAgIHhmcmVlKHQtPmFjdGl2ZSk7CisKICAgICB4ZnJlZSh0KTsKLQogICAgIGQtPmdy YW50X3RhYmxlID0gTlVMTDsKIH0KIApkaWZmIC1yIGYwMjZkNDA5MTMyMiB4ZW4vaW5jbHVk ZS9hc20taWE2NC9ncmFudF90YWJsZS5oCi0tLSBhL3hlbi9pbmNsdWRlL2FzbS1pYTY0L2dy YW50X3RhYmxlLmgJVHVlIE5vdiAxNCAxODo1Mjo1OCAyMDA2ICswMDAwCisrKyBiL3hlbi9p bmNsdWRlL2FzbS1pYTY0L2dyYW50X3RhYmxlLmgJRnJpIE5vdiAwMyAxODoxODo1NiAyMDA2 ICswMDAwCkBAIC01LDcgKzUsNyBAQAogI2lmbmRlZiBfX0FTTV9HUkFOVF9UQUJMRV9IX18K ICNkZWZpbmUgX19BU01fR1JBTlRfVEFCTEVfSF9fCiAKLSNkZWZpbmUgT1JERVJfR1JBTlRf RlJBTUVTIDAKKyNkZWZpbmUgSU5JVElBTF9OUl9HUkFOVF9GUkFNRVMgMQogCiAvLyBmb3Ig Z3JhbnQgbWFwL3VubWFwCiBpbnQgY3JlYXRlX2dyYW50X2hvc3RfbWFwcGluZyh1bnNpZ25l ZCBsb25nIGdwYWRkciwgdW5zaWduZWQgbG9uZyBtZm4sIHVuc2lnbmVkIGludCBmbGFncyk7 CmRpZmYgLXIgZjAyNmQ0MDkxMzIyIHhlbi9pbmNsdWRlL2FzbS1wb3dlcnBjL2dyYW50X3Rh YmxlLmgKLS0tIGEveGVuL2luY2x1ZGUvYXNtLXBvd2VycGMvZ3JhbnRfdGFibGUuaAlUdWUg Tm92IDE0IDE4OjUyOjU4IDIwMDYgKzAwMDAKKysrIGIveGVuL2luY2x1ZGUvYXNtLXBvd2Vy cGMvZ3JhbnRfdGFibGUuaAlGcmkgTm92IDAzIDE4OjE4OjU2IDIwMDYgKzAwMDAKQEAgLTIz LDcgKzIzLDcgQEAKIAogI2luY2x1ZGUgPGFzbS9tbS5oPgogCi0jZGVmaW5lIE9SREVSX0dS QU5UX0ZSQU1FUyAyCisjZGVmaW5lIElOSVRJQUxfTlJfR1JBTlRfRlJBTUVTIDQKIAogLyoK ICAqIENhbGxlciBtdXN0IG93biBjYWxsZXIncyBCSUdMT0NLLCBpcyByZXNwb25zaWJsZSBm b3IgZmx1c2hpbmcgdGhlIFRMQiwgYW5kCmRpZmYgLXIgZjAyNmQ0MDkxMzIyIHhlbi9pbmNs dWRlL2FzbS14ODYvZ3JhbnRfdGFibGUuaAotLS0gYS94ZW4vaW5jbHVkZS9hc20teDg2L2dy YW50X3RhYmxlLmgJVHVlIE5vdiAxNCAxODo1Mjo1OCAyMDA2ICswMDAwCisrKyBiL3hlbi9p bmNsdWRlL2FzbS14ODYvZ3JhbnRfdGFibGUuaAlUdWUgTm92IDE0IDIwOjM4OjE1IDIwMDYg KzAwMDAKQEAgLTcsNyArNyw3IEBACiAjaWZuZGVmIF9fQVNNX0dSQU5UX1RBQkxFX0hfXwog I2RlZmluZSBfX0FTTV9HUkFOVF9UQUJMRV9IX18KIAotI2RlZmluZSBPUkRFUl9HUkFOVF9G UkFNRVMgMgorI2RlZmluZSBJTklUSUFMX05SX0dSQU5UX0ZSQU1FUyAxCiAKIC8qCiAgKiBD YWxsZXIgbXVzdCBvd24gY2FsbGVyJ3MgQklHTE9DSywgaXMgcmVzcG9uc2libGUgZm9yIGZs dXNoaW5nIHRoZSBUTEIsIGFuZApAQCAtMjEsMTIgKzIxLDEyIEBAIGludCBkZXN0cm95X2dy YW50X2hvc3RfbWFwcGluZygKICNkZWZpbmUgZ250dGFiX2NyZWF0ZV9zaGFyZWRfcGFnZShk LCB0LCBpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgZG8geyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAogICAgICAgICBzaGFyZV94ZW5fcGFnZV93aXRoX2d1ZXN0KCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIHZpcnRfdG9fcGFn ZSgoY2hhciAqKSh0KS0+c2hhcmVkICsgKChpKSAqIFBBR0VfU0laRSkpLCAgICAgICBcCisg ICAgICAgICAgICB2aXJ0X3RvX3BhZ2UoKGNoYXIgKikodCktPnNoYXJlZFtpXSksICAgICAg ICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgKGQpLCBYRU5TSEFSRV93cml0YWJs ZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB9IHdoaWxl ICggMCApCiAKICNkZWZpbmUgZ250dGFiX3NoYXJlZF9tZm4oZCwgdCwgaSkgICAgICAgICAg ICAgICAgICAgICAgXAotICAgICgodmlydF90b19tYWRkcigodCktPnNoYXJlZCkgPj4gUEFH RV9TSElGVCkgKyAoaSkpCisgICAgKCh2aXJ0X3RvX21hZGRyKCh0KS0+c2hhcmVkW2ldKSA+ PiBQQUdFX1NISUZUKSkKIAogI2RlZmluZSBnbnR0YWJfc2hhcmVkX2dtZm4oZCwgdCwgaSkg ICAgICAgICAgICAgICAgICAgICBcCiAgICAgKG1mbl90b19nbWZuKGQsIGdudHRhYl9zaGFy ZWRfbWZuKGQsIHQsIGkpKSkKZGlmZiAtciBmMDI2ZDQwOTEzMjIgeGVuL2luY2x1ZGUvcHVi bGljL2dyYW50X3RhYmxlLmgKLS0tIGEveGVuL2luY2x1ZGUvcHVibGljL2dyYW50X3RhYmxl LmgJVHVlIE5vdiAxNCAxODo1Mjo1OCAyMDA2ICswMDAwCisrKyBiL3hlbi9pbmNsdWRlL3B1 YmxpYy9ncmFudF90YWJsZS5oCVR1ZSBOb3YgMTQgMjA6Mzg6MTUgMjAwNiArMDAwMApAQCAt MzA4LDYgKzMwOCwyNSBAQCB0eXBlZGVmIHN0cnVjdCBnbnR0YWJfY29weSB7CiAgICAgaW50 MTZfdCAgICAgICBzdGF0dXM7CiB9IGdudHRhYl9jb3B5X3Q7CiBERUZJTkVfWEVOX0dVRVNU X0hBTkRMRShnbnR0YWJfY29weV90KTsKKworLyoKKyAqIEdOVFRBQk9QX3F1ZXJ5X3NpemU6 IFF1ZXJ5IHRoZSBjdXJyZW50IGFuZCBtYXhpbXVtIHNpemVzIG9mIHRoZSBzaGFyZWQKKyAq IGdyYW50IHRhYmxlLgorICogTk9URVM6CisgKiAgMS4gPGRvbT4gbWF5IGJlIHNwZWNpZmll ZCBhcyBET01JRF9TRUxGLgorICogIDIuIE9ubHkgYSBzdWZmaWNpZW50bHktcHJpdmlsZWdl ZCBkb21haW4gbWF5IHNwZWNpZnkgPGRvbT4gIT0gRE9NSURfU0VMRi4KKyAqLworI2RlZmlu ZSBHTlRUQUJPUF9xdWVyeV9zaXplICAgICAgICAgICA2CitzdHJ1Y3QgZ250dGFiX3F1ZXJ5 X3NpemUgeworICAgIC8qIElOIHBhcmFtZXRlcnMuICovCisgICAgZG9taWRfdCAgZG9tOwor ICAgIC8qIE9VVCBwYXJhbWV0ZXJzLiAqLworICAgIHVpbnQzMl90IG5yX2ZyYW1lczsKKyAg ICB1aW50MzJfdCBtYXhfbnJfZnJhbWVzOworICAgIGludDE2X3QgIHN0YXR1czsgICAgICAg ICAgICAgIC8qIEdOVFNUXyogKi8KK307Cit0eXBlZGVmIHN0cnVjdCBnbnR0YWJfcXVlcnlf c2l6ZSBnbnR0YWJfcXVlcnlfc2l6ZV90OworREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoZ250 dGFiX3F1ZXJ5X3NpemVfdCk7CiAKIAogLyoKZGlmZiAtciBmMDI2ZDQwOTEzMjIgeGVuL2lu Y2x1ZGUveGVuL2dyYW50X3RhYmxlLmgKLS0tIGEveGVuL2luY2x1ZGUveGVuL2dyYW50X3Rh YmxlLmgJVHVlIE5vdiAxNCAxODo1Mjo1OCAyMDA2ICswMDAwCisrKyBiL3hlbi9pbmNsdWRl L3hlbi9ncmFudF90YWJsZS5oCUZyaSBOb3YgMDMgMTg6MTg6NTYgMjAwNiArMDAwMApAQCAt NTIsOSArNTIsMTQgQEAgc3RydWN0IGFjdGl2ZV9ncmFudF9lbnRyeSB7CiAjZGVmaW5lIEdO VFBJTl9kZXZyX2luYyAgICAgICgxIDw8IEdOVFBJTl9kZXZyX3NoaWZ0KQogI2RlZmluZSBH TlRQSU5fZGV2cl9tYXNrICAgICAoMHhGRlUgPDwgR05UUElOX2RldnJfc2hpZnQpCiAKLSNk ZWZpbmUgTlJfR1JBTlRfRlJBTUVTICAgICAgKDFVIDw8IE9SREVSX0dSQU5UX0ZSQU1FUykK LSNkZWZpbmUgTlJfR1JBTlRfRU5UUklFUyAgICAgXAotICAgICgoTlJfR1JBTlRfRlJBTUVT IDw8IFBBR0VfU0hJRlQpIC8gc2l6ZW9mKGdyYW50X2VudHJ5X3QpKQorLyogSW5pdGlhbCBz aXplIG9mIGEgZ3JhbnQgdGFibGUuICovCisjZGVmaW5lIElOSVRJQUxfTlJfR1JBTlRfRU5U UklFUyAoKElOSVRJQUxfTlJfR1JBTlRfRlJBTUVTIDw8IFBBR0VfU0hJRlQpIC8gXAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihncmFudF9lbnRyeV90 KSkKKworLyogRGVmYXVsdCBtYXhpbXVtIHNpemUgb2YgYSBncmFudCB0YWJsZS4gW1BPTElD WV0gKi8KKyNkZWZpbmUgREVGQVVMVF9NQVhfTlJfR1JBTlRfRlJBTUVTICAgMzIKKy8qIFRo ZSBtYXhpbXVtIHNpemUgb2YgYSBncmFudCB0YWJsZS4gKi8KK2V4dGVybiB1bnNpZ25lZCBp bnQgbWF4X25yX2dyYW50X2ZyYW1lczsKIAogLyoKICAqIFRyYWNrcyBhIG1hcHBpbmcgb2Yg YW5vdGhlciBkb21haW4ncyBncmFudCByZWZlcmVuY2UuIEVhY2ggZG9tYWluIGhhcyBhCkBA IC03MSwxNCArNzYsMTUgQEAgc3RydWN0IGdyYW50X21hcHBpbmcgewogCiAvKiBQZXItZG9t YWluIGdyYW50IGluZm9ybWF0aW9uLiAqLwogc3RydWN0IGdyYW50X3RhYmxlIHsKKyAgICAv KiBUYWJsZSBzaXplLiBOdW1iZXIgb2YgZnJhbWVzIHNoYXJlZCB3aXRoIGd1ZXN0ICovCisg ICAgdW5zaWduZWQgaW50ICAgICAgICAgIG5yX2dyYW50X2ZyYW1lczsKICAgICAvKiBTaGFy ZWQgZ3JhbnQgdGFibGUgKHNlZSBpbmNsdWRlL3B1YmxpYy9ncmFudF90YWJsZS5oKS4gKi8K LSAgICBzdHJ1Y3QgZ3JhbnRfZW50cnkgICAqc2hhcmVkOworICAgIHN0cnVjdCBncmFudF9l bnRyeSAgKipzaGFyZWQ7CiAgICAgLyogQWN0aXZlIGdyYW50IHRhYmxlLiAqLwotICAgIHN0 cnVjdCBhY3RpdmVfZ3JhbnRfZW50cnkgKmFjdGl2ZTsKKyAgICBzdHJ1Y3QgYWN0aXZlX2dy YW50X2VudHJ5ICoqYWN0aXZlOwogICAgIC8qIE1hcHBpbmcgdHJhY2tpbmcgdGFibGUuICov Ci0gICAgc3RydWN0IGdyYW50X21hcHBpbmcgKm1hcHRyYWNrOworICAgIHN0cnVjdCBncmFu dF9tYXBwaW5nICoqbWFwdHJhY2s7CiAgICAgdW5zaWduZWQgaW50ICAgICAgICAgIG1hcHRy YWNrX2hlYWQ7Ci0gICAgdW5zaWduZWQgaW50ICAgICAgICAgIG1hcHRyYWNrX29yZGVyOwog ICAgIHVuc2lnbmVkIGludCAgICAgICAgICBtYXB0cmFja19saW1pdDsKICAgICB1bnNpZ25l ZCBpbnQgICAgICAgICAgbWFwX2NvdW50OwogICAgIC8qIExvY2sgcHJvdGVjdGluZyB1cGRh dGVzIHRvIGFjdGl2ZSBhbmQgc2hhcmVkIGdyYW50IHRhYmxlcy4gKi8KQEAgLTk2LDQgKzEw MiwyMiBAQCBnbnR0YWJfcmVsZWFzZV9tYXBwaW5ncygKIGdudHRhYl9yZWxlYXNlX21hcHBp bmdzKAogICAgIHN0cnVjdCBkb21haW4gKmQpOwogCisvKiBJbmNyZWFzZSB0aGUgc2l6ZSBv ZiBhIGRvbWFpbidzIGdyYW50IHRhYmxlLgorICogQ2FsbGVyIG11c3QgaG9sZCBkJ3MgZ3Jh bnQgdGFibGUgbG9jay4KKyAqLworaW50CitnbnR0YWJfZ3Jvd190YWJsZShzdHJ1Y3QgZG9t YWluICpkLCB1bnNpZ25lZCBpbnQgcmVxX25yX2ZyYW1lcyk7CisKKy8qIE51bWJlciBvZiBn cmFudCB0YWJsZSBmcmFtZXMuIENhbGxlciBtdXN0IGhvbGQgZCdzIGdyYW50IHRhYmxlIGxv Y2suICovCitzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBucl9ncmFudF9mcmFtZXMoc3Ry dWN0IGdyYW50X3RhYmxlICpndCkKK3sKKyAgICByZXR1cm4gZ3QtPm5yX2dyYW50X2ZyYW1l czsKK30KKworLyogTnVtYmVyIG9mIGdyYW50IHRhYmxlIGVudHJpZXMuIENhbGxlciBtdXN0 IGhvbGQgZCdzIGdyYW50IHRhYmxlIGxvY2suICovCitzdGF0aWMgaW5saW5lIHVuc2lnbmVk IGludCBucl9ncmFudF9lbnRyaWVzKHN0cnVjdCBncmFudF90YWJsZSAqZ3QpCit7CisgICAg cmV0dXJuIChucl9ncmFudF9mcmFtZXMoZ3QpIDw8IFBBR0VfU0hJRlQpIC8gc2l6ZW9mKGdy YW50X2VudHJ5X3QpOworfQorCiAjZW5kaWYgLyogX19YRU5fR1JBTlRfVEFCTEVfSF9fICov Cg== --B_3250849392_6933513 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel --B_3250849392_6933513--