From mboxrd@z Thu Jan 1 00:00:00 1970 From: Bhupinder Thakur Subject: [PATCH 10/17 v5] xen/arm: vpl011: Modify xenconsole to define and use a new console structure Date: Thu, 22 Jun 2017 13:08:45 +0530 Message-ID: <1498117132-27139-11-git-send-email-bhupinder.thakur@linaro.org> References: <1498117132-27139-1-git-send-email-bhupinder.thakur@linaro.org> 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 1dNwiE-0005fT-St for xen-devel@lists.xenproject.org; Thu, 22 Jun 2017 07:39:35 +0000 Received: by mail-pf0-f181.google.com with SMTP id e7so5153808pfk.0 for ; Thu, 22 Jun 2017 00:39:32 -0700 (PDT) In-Reply-To: <1498117132-27139-1-git-send-email-bhupinder.thakur@linaro.org> 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: Wei Liu , Julien Grall , Stefano Stabellini , Ian Jackson List-Id: xen-devel@lists.xenproject.org WGVuY29uc29sZSB1c2VzIGEgZG9tYWluIHN0cnVjdHVyZSB3aGljaCBjb250YWlucyBjb25zb2xl IHNwZWNpZmljIGZpZWxkcy4gVGhpcwpwYXRjaCBkZWZpbmVzIGEgbmV3IGNvbnNvbGUgc3RydWN0 dXJlLCB3aGljaCB3b3VsZCBiZSB1c2VkIGJ5IHRoZSB4ZW5jb25zb2xlCmZ1bmN0aW9ucyB0byBw ZXJmb3JtIGNvbnNvbGUgc3BlY2lmaWMgb3BlcmF0aW9ucyBsaWtlIHJlYWRpbmcvd3JpdGluZyBk YXRhIGZyb20vdG8KdGhlIGNvbnNvbGUgcmluZyBidWZmZXIgb3IgcmVhZGluZy93cml0aW5nIGRh dGEgZnJvbS90byBjb25zb2xlIHR0eS4KClRoaXMgcGF0Y2ggaXMgaW4gcHJlcGFyYXRpb24gdG8g c3VwcG9ydCBtdWx0aXBsZSBjb25zb2xlcyB0byBzdXBwb3J0IHZ1YXJ0IGNvbnNvbGUuCgpTaWdu ZWQtb2ZmLWJ5OiBCaHVwaW5kZXIgVGhha3VyIDxiaHVwaW5kZXIudGhha3VyQGxpbmFyby5vcmc+ Ci0tLQpDQzogSWFuIEphY2tzb24gPGlhbi5qYWNrc29uQGV1LmNpdHJpeC5jb20+CkNDOiBXZWkg TGl1IDx3ZWkubGl1MkBjaXRyaXguY29tPgpDQzogU3RlZmFubyBTdGFiZWxsaW5pIDxzc3RhYmVs bGluaUBrZXJuZWwub3JnPgpDQzogSnVsaWVuIEdyYWxsIDxqdWxpZW4uZ3JhbGxAYXJtLmNvbT4K CkNoYW5nZXMgc2luY2UgdjQ6Ci0gTW92ZWQgdGhlIGZvbGxvd2luZyBmaWVsZHMgZnJvbSB0aGUg c3RydWN0IGRvbWFpbiB0byBzdHJ1Y3QgY29uc29sZToKICAtPnhlbmV2dGNobl9oYW5kbGUgKnhj ZV9oYW5kbGU7CiAgLT5pbnQgeGNlX3BvbGxmZF9pZHg7CiAgLT5pbnQgZXZlbnRfY291bnQ7CiAg LT5sb25nIGxvbmcgbmV4dF9wZXJpb2Q7CgpDaGFuZ2VzIHNpbmNlIHYzOgotIFRoZSBjaGFuZ2Vz IGluIHhlbmNvbnNvbGUgaGF2ZSBiZWVuIHNwbGl0IGludG8gZm91ciBwYXRjaGVzLiBUaGlzIGlz IHRoZSBmaXJzdCBwYXRjaAogIHdoaWNoIG1vZGlmaWVzIHRoZSB4ZW5jb25zb2xlIHRvIHVzZSBh IG5ldyBjb25zb2xlIHN0cnVjdHVyZS4KCkNoYW5nZXMgc2luY2UgdjI6Ci0gRGVmaW5lZCBhIG5l dyBmdW5jdGlvbiBjb25zb2xlX2NyZWF0ZV9yaW5nKCkgd2hpY2ggc2V0cyB1cCB0aGUgcmluZyBi dWZmZXIgYW5kIAogIGV2ZW50IGNoYW5uZWwgYSBuZXcgY29uc29sZS4gZG9tYWluX2NyZWF0ZV9y aW5nKCkgdXNlcyB0aGlzIGZ1bmN0aW9uIHRvIHNldHVwCiAgYSBjb25zb2xlLgotIFRoaXMgcGF0 Y2ggZG9lcyBub3QgY29udGFpbiB2dWFydCBzcGVjaWZpYyBjaGFuZ2VzLCB3aGljaCB3b3VsZCBi ZSBpbnRyb2R1Y2VkIGluCiAgdGhlIG5leHQgcGF0Y2guCi0gQ2hhbmdlcyBmb3Iga2VlcGluZyB0 aGUgUFYgbG9nIGZpbGUgbmFtZSB1bmNoYW5nZWQuCgpDaGFuZ2VzIHNpbmNlIHYxOgotIFNwbGl0 IHRoZSBkb21haW4gc3RydXR1cmUgdG8gYSBzZXBhcmF0ZSBjb25zb2xlIHN0cnVjdHVyZQotIE1v ZGlmaWVkIHRoZSBmdW5jdGlvbnMgdG8gb3BlcmF0ZSBvbiB0aGUgY29uc29sZSBzdHJ1dHVyZQot IFJlcGxhY2VkIHJlcGV0aXRpdmUgcGVyIGNvbnNvbGUgY29kZSB3aXRoIGdlbmVyaWMgY29kZQoK IHRvb2xzL2NvbnNvbGUvZGFlbW9uL2lvLmMgfCAyOTkgKysrKysrKysrKysrKysrKysrKysrKysr Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDE2NSBpbnNlcnRpb25zKCsp LCAxMzQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvdG9vbHMvY29uc29sZS9kYWVtb24vaW8u YyBiL3Rvb2xzL2NvbnNvbGUvZGFlbW9uL2lvLmMKaW5kZXggZTgwMzNkMi4uMzBjZDE2NyAxMDA2 NDQKLS0tIGEvdG9vbHMvY29uc29sZS9kYWVtb24vaW8uYworKysgYi90b29scy9jb25zb2xlL2Rh ZW1vbi9pby5jCkBAIC04OSwyNSArODksMzAgQEAgc3RydWN0IGJ1ZmZlciB7CiAJc2l6ZV90IG1h eF9jYXBhY2l0eTsKIH07CiAKLXN0cnVjdCBkb21haW4gewotCWludCBkb21pZDsKK3N0cnVjdCBj b25zb2xlIHsKIAlpbnQgbWFzdGVyX2ZkOwogCWludCBtYXN0ZXJfcG9sbGZkX2lkeDsKIAlpbnQg c2xhdmVfZmQ7CiAJaW50IGxvZ19mZDsKLQlib29sIGlzX2RlYWQ7Ci0JdW5zaWduZWQgbGFzdF9z ZWVuOwogCXN0cnVjdCBidWZmZXIgYnVmZmVyOwotCXN0cnVjdCBkb21haW4gKm5leHQ7CiAJY2hh ciAqY29uc3BhdGg7CiAJaW50IHJpbmdfcmVmOwotCXhlbmV2dGNobl9wb3J0X29yX2Vycm9yX3Qg bG9jYWxfcG9ydDsKLQl4ZW5ldnRjaG5fcG9ydF9vcl9lcnJvcl90IHJlbW90ZV9wb3J0OwogCXhl bmV2dGNobl9oYW5kbGUgKnhjZV9oYW5kbGU7CiAJaW50IHhjZV9wb2xsZmRfaWR4OwotCXN0cnVj dCB4ZW5jb25zX2ludGVyZmFjZSAqaW50ZXJmYWNlOwogCWludCBldmVudF9jb3VudDsKIAlsb25n IGxvbmcgbmV4dF9wZXJpb2Q7CisJeGVuZXZ0Y2huX3BvcnRfb3JfZXJyb3JfdCBsb2NhbF9wb3J0 OworCXhlbmV2dGNobl9wb3J0X29yX2Vycm9yX3QgcmVtb3RlX3BvcnQ7CisJc3RydWN0IHhlbmNv bnNfaW50ZXJmYWNlICppbnRlcmZhY2U7CisJc3RydWN0IGRvbWFpbiAqZDsKK307CisKK3N0cnVj dCBkb21haW4geworCWludCBkb21pZDsKKwlib29sIGlzX2RlYWQ7CisJdW5zaWduZWQgbGFzdF9z ZWVuOworCXN0cnVjdCBkb21haW4gKm5leHQ7CisJc3RydWN0IGNvbnNvbGUgY29uc29sZTsKIH07 CiAKIHN0YXRpYyBzdHJ1Y3QgZG9tYWluICpkb21faGVhZDsKQEAgLTE2MCw5ICsxNjUsMTAgQEAg c3RhdGljIGludCB3cml0ZV93aXRoX3RpbWVzdGFtcChpbnQgZmQsIGNvbnN0IGNoYXIgKmRhdGEs IHNpemVfdCBzeiwKIAogc3RhdGljIHZvaWQgYnVmZmVyX2FwcGVuZChzdHJ1Y3QgZG9tYWluICpk b20pCiB7Ci0Jc3RydWN0IGJ1ZmZlciAqYnVmZmVyID0gJmRvbS0+YnVmZmVyOworCXN0cnVjdCBj b25zb2xlICpjb24gPSAmZG9tLT5jb25zb2xlOworCXN0cnVjdCBidWZmZXIgKmJ1ZmZlciA9ICZj b24tPmJ1ZmZlcjsKIAlYRU5DT05TX1JJTkdfSURYIGNvbnMsIHByb2QsIHNpemU7Ci0Jc3RydWN0 IHhlbmNvbnNfaW50ZXJmYWNlICppbnRmID0gZG9tLT5pbnRlcmZhY2U7CisJc3RydWN0IHhlbmNv bnNfaW50ZXJmYWNlICppbnRmID0gY29uLT5pbnRlcmZhY2U7CiAKIAljb25zID0gaW50Zi0+b3V0 X2NvbnM7CiAJcHJvZCA9IGludGYtPm91dF9wcm9kOwpAQCAtMTg3LDIyICsxOTMsMjIgQEAgc3Rh dGljIHZvaWQgYnVmZmVyX2FwcGVuZChzdHJ1Y3QgZG9tYWluICpkb20pCiAKIAl4ZW5fbWIoKTsK IAlpbnRmLT5vdXRfY29ucyA9IGNvbnM7Ci0JeGVuZXZ0Y2huX25vdGlmeShkb20tPnhjZV9oYW5k bGUsIGRvbS0+bG9jYWxfcG9ydCk7CisJeGVuZXZ0Y2huX25vdGlmeShjb24tPnhjZV9oYW5kbGUs IGNvbi0+bG9jYWxfcG9ydCk7CiAKIAkvKiBHZXQgdGhlIGRhdGEgdG8gdGhlIGxvZ2ZpbGUgYXMg ZWFybHkgYXMgcG9zc2libGUgYmVjYXVzZSBpZgogCSAqIG5vIG9uZSBpcyBsaXN0ZW5pbmcgb24g dGhlIGNvbnNvbGUgcHR5IHRoZW4gaXQgd2lsbCBmaWxsIHVwCiAJICogYW5kIGhhbmRsZV90dHlf d3JpdGUgd2lsbCBzdG9wIGJlaW5nIGNhbGxlZC4KIAkgKi8KLQlpZiAoZG9tLT5sb2dfZmQgIT0g LTEpIHsKKwlpZiAoY29uLT5sb2dfZmQgIT0gLTEpIHsKIAkJaW50IGxvZ3JldDsKIAkJaWYgKGxv Z190aW1lX2d1ZXN0KSB7CiAJCQlsb2dyZXQgPSB3cml0ZV93aXRoX3RpbWVzdGFtcCgKLQkJCQlk b20tPmxvZ19mZCwKKwkJCQljb24tPmxvZ19mZCwKIAkJCQlidWZmZXItPmRhdGEgKyBidWZmZXIt PnNpemUgLSBzaXplLAogCQkJCXNpemUsICZsb2dfdGltZV9ndWVzdF9uZWVkdHMpOwogCQl9IGVs c2UgewogCQkJbG9ncmV0ID0gd3JpdGVfYWxsKAotCQkJCWRvbS0+bG9nX2ZkLAorCQkJCWNvbi0+ bG9nX2ZkLAogCQkJCWJ1ZmZlci0+ZGF0YSArIGJ1ZmZlci0+c2l6ZSAtIHNpemUsCiAJCQkJc2l6 ZSk7CiAJCX0KQEAgLTMzOCwxNCArMzQ0LDE2IEBAIHN0YXRpYyBpbnQgY3JlYXRlX2RvbWFpbl9s b2coc3RydWN0IGRvbWFpbiAqZG9tKQogCiBzdGF0aWMgdm9pZCBkb21haW5fY2xvc2VfdHR5KHN0 cnVjdCBkb21haW4gKmRvbSkKIHsKLQlpZiAoZG9tLT5tYXN0ZXJfZmQgIT0gLTEpIHsKLQkJY2xv c2UoZG9tLT5tYXN0ZXJfZmQpOwotCQlkb20tPm1hc3Rlcl9mZCA9IC0xOworCXN0cnVjdCBjb25z b2xlICpjb24gPSAmZG9tLT5jb25zb2xlOworCisJaWYgKGNvbi0+bWFzdGVyX2ZkICE9IC0xKSB7 CisJCWNsb3NlKGNvbi0+bWFzdGVyX2ZkKTsKKwkJY29uLT5tYXN0ZXJfZmQgPSAtMTsKIAl9CiAK LQlpZiAoZG9tLT5zbGF2ZV9mZCAhPSAtMSkgewotCQljbG9zZShkb20tPnNsYXZlX2ZkKTsKLQkJ ZG9tLT5zbGF2ZV9mZCA9IC0xOworCWlmIChjb24tPnNsYXZlX2ZkICE9IC0xKSB7CisJCWNsb3Nl KGNvbi0+c2xhdmVfZmQpOworCQljb24tPnNsYXZlX2ZkID0gLTE7CiAJfQogfQogCkBAIC00MTgs MTEgKzQyNiwxMiBAQCBzdGF0aWMgaW50IGRvbWFpbl9jcmVhdGVfdHR5KHN0cnVjdCBkb21haW4g KmRvbSkKIAljaGFyICpkYXRhOwogCXVuc2lnbmVkIGludCBsZW47CiAJc3RydWN0IHRlcm1pb3Mg dGVybTsKKwlzdHJ1Y3QgY29uc29sZSAqY29uID0gJmRvbS0+Y29uc29sZTsKIAotCWFzc2VydChk b20tPnNsYXZlX2ZkID09IC0xKTsKLQlhc3NlcnQoZG9tLT5tYXN0ZXJfZmQgPT0gLTEpOworCWFz c2VydChjb24tPnNsYXZlX2ZkID09IC0xKTsKKwlhc3NlcnQoY29uLT5tYXN0ZXJfZmQgPT0gLTEp OwogCi0JaWYgKG9wZW5wdHkoJmRvbS0+bWFzdGVyX2ZkLCAmZG9tLT5zbGF2ZV9mZCwgTlVMTCwg TlVMTCwgTlVMTCkgPCAwKSB7CisJaWYgKG9wZW5wdHkoJmNvbi0+bWFzdGVyX2ZkLCAmY29uLT5z bGF2ZV9mZCwgTlVMTCwgTlVMTCwgTlVMTCkgPCAwKSB7CiAJCWVyciA9IGVycm5vOwogCQlkb2xv ZyhMT0dfRVJSLCAiRmFpbGVkIHRvIGNyZWF0ZSB0dHkgZm9yIGRvbWFpbi0lZCAiCiAJCSAgICAg ICIoZXJybm8gPSAlaSwgJXMpIiwKQEAgLTQzMCw3ICs0MzksNyBAQCBzdGF0aWMgaW50IGRvbWFp bl9jcmVhdGVfdHR5KHN0cnVjdCBkb21haW4gKmRvbSkKIAkJcmV0dXJuIDA7CiAJfQogCi0JaWYg KHRjZ2V0YXR0cihkb20tPnNsYXZlX2ZkLCAmdGVybSkgPCAwKSB7CisJaWYgKHRjZ2V0YXR0cihj b24tPnNsYXZlX2ZkLCAmdGVybSkgPCAwKSB7CiAJCWVyciA9IGVycm5vOwogCQlkb2xvZyhMT0df RVJSLCAiRmFpbGVkIHRvIGdldCB0dHkgYXR0cmlidXRlcyBmb3IgZG9tYWluLSVkICIKIAkJCSIo ZXJybm8gPSAlaSwgJXMpIiwKQEAgLTQzOCw3ICs0NDcsNyBAQCBzdGF0aWMgaW50IGRvbWFpbl9j cmVhdGVfdHR5KHN0cnVjdCBkb21haW4gKmRvbSkKIAkJZ290byBvdXQ7CiAJfQogCWNmbWFrZXJh dygmdGVybSk7Ci0JaWYgKHRjc2V0YXR0cihkb20tPnNsYXZlX2ZkLCBUQ1NBTk9XLCAmdGVybSkg PCAwKSB7CisJaWYgKHRjc2V0YXR0cihjb24tPnNsYXZlX2ZkLCBUQ1NBTk9XLCAmdGVybSkgPCAw KSB7CiAJCWVyciA9IGVycm5vOwogCQlkb2xvZyhMT0dfRVJSLCAiRmFpbGVkIHRvIHNldCB0dHkg YXR0cmlidXRlcyBmb3IgZG9tYWluLSVkICIKIAkJCSIoZXJybm8gPSAlaSwgJXMpIiwKQEAgLTQ0 Niw3ICs0NTUsNyBAQCBzdGF0aWMgaW50IGRvbWFpbl9jcmVhdGVfdHR5KHN0cnVjdCBkb21haW4g KmRvbSkKIAkJZ290byBvdXQ7CiAJfQogCi0JaWYgKChzbGF2ZSA9IHB0c25hbWUoZG9tLT5tYXN0 ZXJfZmQpKSA9PSBOVUxMKSB7CisJaWYgKChzbGF2ZSA9IHB0c25hbWUoY29uLT5tYXN0ZXJfZmQp KSA9PSBOVUxMKSB7CiAJCWVyciA9IGVycm5vOwogCQlkb2xvZyhMT0dfRVJSLCAiRmFpbGVkIHRv IGdldCBzbGF2ZSBuYW1lIGZvciBkb21haW4tJWQgIgogCQkgICAgICAiKGVycm5vID0gJWksICVz KSIsCkBAIC00NTQsMTggKzQ2MywxOCBAQCBzdGF0aWMgaW50IGRvbWFpbl9jcmVhdGVfdHR5KHN0 cnVjdCBkb21haW4gKmRvbSkKIAkJZ290byBvdXQ7CiAJfQogCi0Jc3VjY2VzcyA9IGFzcHJpbnRm KCZwYXRoLCAiJXMvbGltaXQiLCBkb20tPmNvbnNwYXRoKSAhPQorCXN1Y2Nlc3MgPSBhc3ByaW50 ZigmcGF0aCwgIiVzL2xpbWl0IiwgY29uLT5jb25zcGF0aCkgIT0KIAkJLTE7CiAJaWYgKCFzdWNj ZXNzKQogCQlnb3RvIG91dDsKIAlkYXRhID0geHNfcmVhZCh4cywgWEJUX05VTEwsIHBhdGgsICZs ZW4pOwogCWlmIChkYXRhKSB7Ci0JCWRvbS0+YnVmZmVyLm1heF9jYXBhY2l0eSA9IHN0cnRvdWwo ZGF0YSwgMCwgMCk7CisJCWNvbi0+YnVmZmVyLm1heF9jYXBhY2l0eSA9IHN0cnRvdWwoZGF0YSwg MCwgMCk7CiAJCWZyZWUoZGF0YSk7CiAJfQogCWZyZWUocGF0aCk7CiAKLQlzdWNjZXNzID0gKGFz cHJpbnRmKCZwYXRoLCAiJXMvdHR5IiwgZG9tLT5jb25zcGF0aCkgIT0gLTEpOworCXN1Y2Nlc3Mg PSAoYXNwcmludGYoJnBhdGgsICIlcy90dHkiLCBjb24tPmNvbnNwYXRoKSAhPSAtMSk7CiAJaWYg KCFzdWNjZXNzKQogCQlnb3RvIG91dDsKIAlzdWNjZXNzID0geHNfd3JpdGUoeHMsIFhCVF9OVUxM LCBwYXRoLCBzbGF2ZSwgc3RybGVuKHNsYXZlKSk7CkBAIC00NzMsNyArNDgyLDcgQEAgc3RhdGlj IGludCBkb21haW5fY3JlYXRlX3R0eShzdHJ1Y3QgZG9tYWluICpkb20pCiAJaWYgKCFzdWNjZXNz KQogCQlnb3RvIG91dDsKIAotCWlmIChmY250bChkb20tPm1hc3Rlcl9mZCwgRl9TRVRGTCwgT19O T05CTE9DSykgPT0gLTEpCisJaWYgKGZjbnRsKGNvbi0+bWFzdGVyX2ZkLCBGX1NFVEZMLCBPX05P TkJMT0NLKSA9PSAtMSkKIAkJZ290byBvdXQ7CiAKIAlyZXR1cm4gMTsKQEAgLTUxOSwyOSArNTI4 LDMyIEBAIHN0YXRpYyBpbnQgeHNfZ2F0aGVyKHN0cnVjdCB4c19oYW5kbGUgKnhzLCBjb25zdCBj aGFyICpkaXIsIC4uLikKIAogc3RhdGljIHZvaWQgZG9tYWluX3VubWFwX2ludGVyZmFjZShzdHJ1 Y3QgZG9tYWluICpkb20pCiB7Ci0JaWYgKGRvbS0+aW50ZXJmYWNlID09IE5VTEwpCisJc3RydWN0 IGNvbnNvbGUgKmNvbiA9ICZkb20tPmNvbnNvbGU7CisKKwlpZiAoY29uLT5pbnRlcmZhY2UgPT0g TlVMTCkKIAkJcmV0dXJuOwotCWlmICh4Z3RfaGFuZGxlICYmIGRvbS0+cmluZ19yZWYgPT0gLTEp Ci0JCXhlbmdudHRhYl91bm1hcCh4Z3RfaGFuZGxlLCBkb20tPmludGVyZmFjZSwgMSk7CisJaWYg KHhndF9oYW5kbGUgJiYgY29uLT5yaW5nX3JlZiA9PSAtMSkKKwkJeGVuZ250dGFiX3VubWFwKHhn dF9oYW5kbGUsIGNvbi0+aW50ZXJmYWNlLCAxKTsKIAllbHNlCi0JCW11bm1hcChkb20tPmludGVy ZmFjZSwgWENfUEFHRV9TSVpFKTsKLQlkb20tPmludGVyZmFjZSA9IE5VTEw7Ci0JZG9tLT5yaW5n X3JlZiA9IC0xOworCQltdW5tYXAoY29uLT5pbnRlcmZhY2UsIFhDX1BBR0VfU0laRSk7CisJY29u LT5pbnRlcmZhY2UgPSBOVUxMOworCWNvbi0+cmluZ19yZWYgPSAtMTsKIH0KICAKIHN0YXRpYyBp bnQgZG9tYWluX2NyZWF0ZV9yaW5nKHN0cnVjdCBkb21haW4gKmRvbSkKIHsKIAlpbnQgZXJyLCBy ZW1vdGVfcG9ydCwgcmluZ19yZWYsIHJjOwogCWNoYXIgKnR5cGUsIHBhdGhbUEFUSF9NQVhdOwor CXN0cnVjdCBjb25zb2xlICpjb24gPSAmZG9tLT5jb25zb2xlOwogCi0JZXJyID0geHNfZ2F0aGVy KHhzLCBkb20tPmNvbnNwYXRoLAorCWVyciA9IHhzX2dhdGhlcih4cywgY29uLT5jb25zcGF0aCwK IAkJCSJyaW5nLXJlZiIsICIldSIsICZyaW5nX3JlZiwKIAkJCSJwb3J0IiwgIiVpIiwgJnJlbW90 ZV9wb3J0LAogCQkJTlVMTCk7CiAJaWYgKGVycikKIAkJZ290byBvdXQ7CiAKLQlzbnByaW50Zihw YXRoLCBzaXplb2YocGF0aCksICIlcy90eXBlIiwgZG9tLT5jb25zcGF0aCk7CisJc25wcmludGYo cGF0aCwgc2l6ZW9mKHBhdGgpLCAiJXMvdHlwZSIsIGNvbi0+Y29uc3BhdGgpOwogCXR5cGUgPSB4 c19yZWFkKHhzLCBYQlRfTlVMTCwgcGF0aCwgTlVMTCk7CiAJaWYgKHR5cGUgJiYgc3RyY21wKHR5 cGUsICJ4ZW5jb25zb2xlZCIpICE9IDApIHsKIAkJZnJlZSh0eXBlKTsKQEAgLTU1MCw3NyArNTYy LDc3IEBAIHN0YXRpYyBpbnQgZG9tYWluX2NyZWF0ZV9yaW5nKHN0cnVjdCBkb21haW4gKmRvbSkK IAlmcmVlKHR5cGUpOwogCiAJLyogSWYgdXNpbmcgcmluZ19yZWYgYW5kIGl0IGhhcyBjaGFuZ2Vk LCByZW1hcCAqLwotCWlmIChyaW5nX3JlZiAhPSBkb20tPnJpbmdfcmVmICYmIGRvbS0+cmluZ19y ZWYgIT0gLTEpCisJaWYgKHJpbmdfcmVmICE9IGNvbi0+cmluZ19yZWYgJiYgY29uLT5yaW5nX3Jl ZiAhPSAtMSkKIAkJZG9tYWluX3VubWFwX2ludGVyZmFjZShkb20pOwogCi0JaWYgKCFkb20tPmlu dGVyZmFjZSAmJiB4Z3RfaGFuZGxlKSB7CisJaWYgKCFjb24tPmludGVyZmFjZSAmJiB4Z3RfaGFu ZGxlKSB7CiAJCS8qIFByZWZlciB1c2luZyBncmFudCB0YWJsZSAqLwotCQlkb20tPmludGVyZmFj ZSA9IHhlbmdudHRhYl9tYXBfZ3JhbnRfcmVmKHhndF9oYW5kbGUsCisJCWNvbi0+aW50ZXJmYWNl ID0geGVuZ250dGFiX21hcF9ncmFudF9yZWYoeGd0X2hhbmRsZSwKIAkJCWRvbS0+ZG9taWQsIEdO VFRBQl9SRVNFUlZFRF9DT05TT0xFLAogCQkJUFJPVF9SRUFEfFBST1RfV1JJVEUpOwotCQlkb20t PnJpbmdfcmVmID0gLTE7CisJCWNvbi0+cmluZ19yZWYgPSAtMTsKIAl9Ci0JaWYgKCFkb20tPmlu dGVyZmFjZSkgeworCWlmICghY29uLT5pbnRlcmZhY2UpIHsKIAkJLyogRmFsbCBiYWNrIHRvIHhj X21hcF9mb3JlaWduX3JhbmdlICovCi0JCWRvbS0+aW50ZXJmYWNlID0geGNfbWFwX2ZvcmVpZ25f cmFuZ2UoCisJCWNvbi0+aW50ZXJmYWNlID0geGNfbWFwX2ZvcmVpZ25fcmFuZ2UoCiAJCQl4Yywg ZG9tLT5kb21pZCwgWENfUEFHRV9TSVpFLAogCQkJUFJPVF9SRUFEfFBST1RfV1JJVEUsCiAJCQko dW5zaWduZWQgbG9uZylyaW5nX3JlZik7Ci0JCWlmIChkb20tPmludGVyZmFjZSA9PSBOVUxMKSB7 CisJCWlmIChjb24tPmludGVyZmFjZSA9PSBOVUxMKSB7CiAJCQllcnIgPSBFSU5WQUw7CiAJCQln b3RvIG91dDsKIAkJfQotCQlkb20tPnJpbmdfcmVmID0gcmluZ19yZWY7CisJCWNvbi0+cmluZ19y ZWYgPSByaW5nX3JlZjsKIAl9CiAKIAkvKiBHbyBubyBmdXJ0aGVyIGlmIHBvcnQgaGFzIG5vdCBj aGFuZ2VkIGFuZCB3ZSBhcmUgc3RpbGwgYm91bmQuICovCi0JaWYgKHJlbW90ZV9wb3J0ID09IGRv bS0+cmVtb3RlX3BvcnQpIHsKKwlpZiAocmVtb3RlX3BvcnQgPT0gY29uLT5yZW1vdGVfcG9ydCkg ewogCQl4Y19ldnRjaG5fc3RhdHVzX3Qgc3RhdHVzID0gewogCQkJLmRvbSA9IERPTUlEX1NFTEYs Ci0JCQkucG9ydCA9IGRvbS0+bG9jYWxfcG9ydCB9OworCQkJLnBvcnQgPSBjb24tPmxvY2FsX3Bv cnQgfTsKIAkJaWYgKCh4Y19ldnRjaG5fc3RhdHVzKHhjLCAmc3RhdHVzKSA9PSAwKSAmJgogCQkg ICAgKHN0YXR1cy5zdGF0dXMgPT0gRVZUQ0hOU1RBVF9pbnRlcmRvbWFpbikpCiAJCQlnb3RvIG91 dDsKIAl9CiAKLQlkb20tPmxvY2FsX3BvcnQgPSAtMTsKLQlkb20tPnJlbW90ZV9wb3J0ID0gLTE7 Ci0JaWYgKGRvbS0+eGNlX2hhbmRsZSAhPSBOVUxMKQotCQl4ZW5ldnRjaG5fY2xvc2UoZG9tLT54 Y2VfaGFuZGxlKTsKKwljb24tPmxvY2FsX3BvcnQgPSAtMTsKKwljb24tPnJlbW90ZV9wb3J0ID0g LTE7CisJaWYgKGNvbi0+eGNlX2hhbmRsZSAhPSBOVUxMKQorCQl4ZW5ldnRjaG5fY2xvc2UoY29u LT54Y2VfaGFuZGxlKTsKIAogCS8qIE9wZW5pbmcgZXZ0Y2huIGluZGVwZW5kZW50bHkgZm9yIGVh Y2ggY29uc29sZSBpcyBhIGJpdAogCSAqIHdhc3RlZnVsLCBidXQgdGhhdCdzIGhvdyB0aGUgY29k ZSBpcyBzdHJ1Y3R1cmVkLi4uICovCi0JZG9tLT54Y2VfaGFuZGxlID0geGVuZXZ0Y2huX29wZW4o TlVMTCwgMCk7Ci0JaWYgKGRvbS0+eGNlX2hhbmRsZSA9PSBOVUxMKSB7CisJY29uLT54Y2VfaGFu ZGxlID0geGVuZXZ0Y2huX29wZW4oTlVMTCwgMCk7CisJaWYgKGNvbi0+eGNlX2hhbmRsZSA9PSBO VUxMKSB7CiAJCWVyciA9IGVycm5vOwogCQlnb3RvIG91dDsKIAl9CiAgCi0JcmMgPSB4ZW5ldnRj aG5fYmluZF9pbnRlcmRvbWFpbihkb20tPnhjZV9oYW5kbGUsCisJcmMgPSB4ZW5ldnRjaG5fYmlu ZF9pbnRlcmRvbWFpbihjb24tPnhjZV9oYW5kbGUsCiAJCWRvbS0+ZG9taWQsIHJlbW90ZV9wb3J0 KTsKIAogCWlmIChyYyA9PSAtMSkgewogCQllcnIgPSBlcnJubzsKLQkJeGVuZXZ0Y2huX2Nsb3Nl KGRvbS0+eGNlX2hhbmRsZSk7Ci0JCWRvbS0+eGNlX2hhbmRsZSA9IE5VTEw7CisJCXhlbmV2dGNo bl9jbG9zZShjb24tPnhjZV9oYW5kbGUpOworCQljb24tPnhjZV9oYW5kbGUgPSBOVUxMOwogCQln b3RvIG91dDsKIAl9Ci0JZG9tLT5sb2NhbF9wb3J0ID0gcmM7Ci0JZG9tLT5yZW1vdGVfcG9ydCA9 IHJlbW90ZV9wb3J0OworCWNvbi0+bG9jYWxfcG9ydCA9IHJjOworCWNvbi0+cmVtb3RlX3BvcnQg PSByZW1vdGVfcG9ydDsKIAotCWlmIChkb20tPm1hc3Rlcl9mZCA9PSAtMSkgeworCWlmIChjb24t Pm1hc3Rlcl9mZCA9PSAtMSkgewogCQlpZiAoIWRvbWFpbl9jcmVhdGVfdHR5KGRvbSkpIHsKIAkJ CWVyciA9IGVycm5vOwotCQkJeGVuZXZ0Y2huX2Nsb3NlKGRvbS0+eGNlX2hhbmRsZSk7Ci0JCQlk b20tPnhjZV9oYW5kbGUgPSBOVUxMOwotCQkJZG9tLT5sb2NhbF9wb3J0ID0gLTE7Ci0JCQlkb20t PnJlbW90ZV9wb3J0ID0gLTE7CisJCQl4ZW5ldnRjaG5fY2xvc2UoY29uLT54Y2VfaGFuZGxlKTsK KwkJCWNvbi0+eGNlX2hhbmRsZSA9IE5VTEw7CisJCQljb24tPmxvY2FsX3BvcnQgPSAtMTsKKwkJ CWNvbi0+cmVtb3RlX3BvcnQgPSAtMTsKIAkJCWdvdG8gb3V0OwogCQl9CiAJfQogCi0JaWYgKGxv Z19ndWVzdCAmJiAoZG9tLT5sb2dfZmQgPT0gLTEpKQotCQlkb20tPmxvZ19mZCA9IGNyZWF0ZV9k b21haW5fbG9nKGRvbSk7CisJaWYgKGxvZ19ndWVzdCAmJiAoY29uLT5sb2dfZmQgPT0gLTEpKQor CQljb24tPmxvZ19mZCA9IGNyZWF0ZV9kb21haW5fbG9nKGRvbSk7CiAKICBvdXQ6CiAJcmV0dXJu IGVycjsKQEAgLTYzMCwxNiArNjQyLDE3IEBAIHN0YXRpYyBib29sIHdhdGNoX2RvbWFpbihzdHJ1 Y3QgZG9tYWluICpkb20sIGJvb2wgd2F0Y2gpCiB7CiAJY2hhciBkb21pZF9zdHJbMyArIE1BWF9T VFJMRU4oZG9tLT5kb21pZCldOwogCWJvb2wgc3VjY2VzczsKKwlzdHJ1Y3QgY29uc29sZSAqY29u ID0gJmRvbS0+Y29uc29sZTsKIAogCXNucHJpbnRmKGRvbWlkX3N0ciwgc2l6ZW9mKGRvbWlkX3N0 ciksICJkb20ldSIsIGRvbS0+ZG9taWQpOwogCWlmICh3YXRjaCkgewotCQlzdWNjZXNzID0geHNf d2F0Y2goeHMsIGRvbS0+Y29uc3BhdGgsIGRvbWlkX3N0cik7CisJCXN1Y2Nlc3MgPSB4c193YXRj aCh4cywgY29uLT5jb25zcGF0aCwgZG9taWRfc3RyKTsKIAkJaWYgKHN1Y2Nlc3MpCiAJCQlkb21h aW5fY3JlYXRlX3JpbmcoZG9tKTsKIAkJZWxzZQotCQkJeHNfdW53YXRjaCh4cywgZG9tLT5jb25z cGF0aCwgZG9taWRfc3RyKTsKKwkJCXhzX3Vud2F0Y2goeHMsIGNvbi0+Y29uc3BhdGgsIGRvbWlk X3N0cik7CiAJfSBlbHNlIHsKLQkJc3VjY2VzcyA9IHhzX3Vud2F0Y2goeHMsIGRvbS0+Y29uc3Bh dGgsIGRvbWlkX3N0cik7CisJCXN1Y2Nlc3MgPSB4c191bndhdGNoKHhzLCBjb24tPmNvbnNwYXRo LCBkb21pZF9zdHIpOwogCX0KIAogCXJldHVybiBzdWNjZXNzOwpAQCAtNjUxLDYgKzY2NCw3IEBA IHN0YXRpYyBzdHJ1Y3QgZG9tYWluICpjcmVhdGVfZG9tYWluKGludCBkb21pZCkKIAlzdHJ1Y3Qg ZG9tYWluICpkb207CiAJY2hhciAqczsKIAlzdHJ1Y3QgdGltZXNwZWMgdHM7CisJc3RydWN0IGNv bnNvbGUgKmNvbjsKIAogCWlmIChjbG9ja19nZXR0aW1lKENMT0NLX01PTk9UT05JQywgJnRzKSA8 IDApIHsKIAkJZG9sb2coTE9HX0VSUiwgIkNhbm5vdCBnZXQgdGltZSBvZiBkYXkgJXM6JXM6TCVk IiwKQEAgLTY2NywyNSArNjgxLDI2IEBAIHN0YXRpYyBzdHJ1Y3QgZG9tYWluICpjcmVhdGVfZG9t YWluKGludCBkb21pZCkKIAogCWRvbS0+ZG9taWQgPSBkb21pZDsKIAotCWRvbS0+Y29uc3BhdGgg PSB4c19nZXRfZG9tYWluX3BhdGgoeHMsIGRvbS0+ZG9taWQpOwotCXMgPSByZWFsbG9jKGRvbS0+ Y29uc3BhdGgsIHN0cmxlbihkb20tPmNvbnNwYXRoKSArCisJY29uID0gJmRvbS0+Y29uc29sZTsK Kwljb24tPmNvbnNwYXRoID0geHNfZ2V0X2RvbWFpbl9wYXRoKHhzLCBkb20tPmRvbWlkKTsKKwlz ID0gcmVhbGxvYyhjb24tPmNvbnNwYXRoLCBzdHJsZW4oY29uLT5jb25zcGF0aCkgKwogCQkgICAg c3RybGVuKCIvY29uc29sZSIpICsgMSk7CiAJaWYgKHMgPT0gTlVMTCkKIAkJZ290byBvdXQ7Ci0J ZG9tLT5jb25zcGF0aCA9IHM7Ci0Jc3RyY2F0KGRvbS0+Y29uc3BhdGgsICIvY29uc29sZSIpOwor CWNvbi0+Y29uc3BhdGggPSBzOworCXN0cmNhdChjb24tPmNvbnNwYXRoLCAiL2NvbnNvbGUiKTsK IAotCWRvbS0+bWFzdGVyX2ZkID0gLTE7Ci0JZG9tLT5tYXN0ZXJfcG9sbGZkX2lkeCA9IC0xOwot CWRvbS0+c2xhdmVfZmQgPSAtMTsKLQlkb20tPmxvZ19mZCA9IC0xOwotCWRvbS0+eGNlX3BvbGxm ZF9pZHggPSAtMTsKKwljb24tPm1hc3Rlcl9mZCA9IC0xOworCWNvbi0+bWFzdGVyX3BvbGxmZF9p ZHggPSAtMTsKKwljb24tPnNsYXZlX2ZkID0gLTE7CisJY29uLT5sb2dfZmQgPSAtMTsKKwljb24t PnhjZV9wb2xsZmRfaWR4ID0gLTE7CiAKLQlkb20tPm5leHRfcGVyaW9kID0gKChsb25nIGxvbmcp dHMudHZfc2VjICogMTAwMCkgKyAodHMudHZfbnNlYyAvIDEwMDAwMDApICsgUkFURV9MSU1JVF9Q RVJJT0Q7CisJY29uLT5uZXh0X3BlcmlvZCA9ICgobG9uZyBsb25nKXRzLnR2X3NlYyAqIDEwMDAp ICsgKHRzLnR2X25zZWMgLyAxMDAwMDAwKSArIFJBVEVfTElNSVRfUEVSSU9EOwogCi0JZG9tLT5y aW5nX3JlZiA9IC0xOwotCWRvbS0+bG9jYWxfcG9ydCA9IC0xOwotCWRvbS0+cmVtb3RlX3BvcnQg PSAtMTsKKwljb24tPnJpbmdfcmVmID0gLTE7CisJY29uLT5sb2NhbF9wb3J0ID0gLTE7CisJY29u LT5yZW1vdGVfcG9ydCA9IC0xOwogCiAJaWYgKCF3YXRjaF9kb21haW4oZG9tLCB0cnVlKSkKIAkJ Z290byBvdXQ7CkBAIC02OTcsNyArNzEyLDcgQEAgc3RhdGljIHN0cnVjdCBkb21haW4gKmNyZWF0 ZV9kb21haW4oaW50IGRvbWlkKQogCiAJcmV0dXJuIGRvbTsKICBvdXQ6Ci0JZnJlZShkb20tPmNv bnNwYXRoKTsKKwlmcmVlKGNvbi0+Y29uc3BhdGgpOwogCWZyZWUoZG9tKTsKIAlyZXR1cm4gTlVM TDsKIH0KQEAgLTcyOSwzMCArNzQ0LDM0IEBAIHN0YXRpYyB2b2lkIHJlbW92ZV9kb21haW4oc3Ry dWN0IGRvbWFpbiAqZG9tKQogCiBzdGF0aWMgdm9pZCBjbGVhbnVwX2RvbWFpbihzdHJ1Y3QgZG9t YWluICpkKQogeworCXN0cnVjdCBjb25zb2xlICpjb24gPSAmZC0+Y29uc29sZTsKKwogCWRvbWFp bl9jbG9zZV90dHkoZCk7CiAKLQlpZiAoZC0+bG9nX2ZkICE9IC0xKSB7Ci0JCWNsb3NlKGQtPmxv Z19mZCk7Ci0JCWQtPmxvZ19mZCA9IC0xOworCWlmIChjb24tPmxvZ19mZCAhPSAtMSkgeworCQlj bG9zZShjb24tPmxvZ19mZCk7CisJCWNvbi0+bG9nX2ZkID0gLTE7CiAJfQogCi0JZnJlZShkLT5i dWZmZXIuZGF0YSk7Ci0JZC0+YnVmZmVyLmRhdGEgPSBOVUxMOworCWZyZWUoY29uLT5idWZmZXIu ZGF0YSk7CisJY29uLT5idWZmZXIuZGF0YSA9IE5VTEw7CiAKLQlmcmVlKGQtPmNvbnNwYXRoKTsK LQlkLT5jb25zcGF0aCA9IE5VTEw7CisJZnJlZShjb24tPmNvbnNwYXRoKTsKKwljb24tPmNvbnNw YXRoID0gTlVMTDsKIAogCXJlbW92ZV9kb21haW4oZCk7CiB9CiAKIHN0YXRpYyB2b2lkIHNodXRk b3duX2RvbWFpbihzdHJ1Y3QgZG9tYWluICpkKQogeworCXN0cnVjdCBjb25zb2xlICpjb24gPSAm ZC0+Y29uc29sZTsKKwogCWQtPmlzX2RlYWQgPSB0cnVlOwogCXdhdGNoX2RvbWFpbihkLCBmYWxz ZSk7CiAJZG9tYWluX3VubWFwX2ludGVyZmFjZShkKTsKLQlpZiAoZC0+eGNlX2hhbmRsZSAhPSBO VUxMKQotCQl4ZW5ldnRjaG5fY2xvc2UoZC0+eGNlX2hhbmRsZSk7Ci0JZC0+eGNlX2hhbmRsZSA9 IE5VTEw7CisJaWYgKGNvbi0+eGNlX2hhbmRsZSAhPSBOVUxMKQorCQl4ZW5ldnRjaG5fY2xvc2Uo Y29uLT54Y2VfaGFuZGxlKTsKKwljb24tPnhjZV9oYW5kbGUgPSBOVUxMOwogfQogCiBzdGF0aWMg dW5zaWduZWQgZW51bV9wYXNzID0gMDsKQEAgLTc4Miw3ICs4MDEsOCBAQCBzdGF0aWMgdm9pZCBl bnVtX2RvbWFpbnModm9pZCkKIAogc3RhdGljIGludCByaW5nX2ZyZWVfYnl0ZXMoc3RydWN0IGRv bWFpbiAqZG9tKQogewotCXN0cnVjdCB4ZW5jb25zX2ludGVyZmFjZSAqaW50ZiA9IGRvbS0+aW50 ZXJmYWNlOworCXN0cnVjdCBjb25zb2xlICpjb24gPSAmZG9tLT5jb25zb2xlOworCXN0cnVjdCB4 ZW5jb25zX2ludGVyZmFjZSAqaW50ZiA9IGNvbi0+aW50ZXJmYWNlOwogCVhFTkNPTlNfUklOR19J RFggY29ucywgcHJvZCwgc3BhY2U7CiAKIAljb25zID0gaW50Zi0+aW5fY29uczsKQEAgLTgxMiw3 ICs4MzIsOCBAQCBzdGF0aWMgdm9pZCBoYW5kbGVfdHR5X3JlYWQoc3RydWN0IGRvbWFpbiAqZG9t KQogCXNzaXplX3QgbGVuID0gMDsKIAljaGFyIG1zZ1s4MF07CiAJaW50IGk7Ci0Jc3RydWN0IHhl bmNvbnNfaW50ZXJmYWNlICppbnRmID0gZG9tLT5pbnRlcmZhY2U7CisJc3RydWN0IGNvbnNvbGUg KmNvbiA9ICZkb20tPmNvbnNvbGU7CisJc3RydWN0IHhlbmNvbnNfaW50ZXJmYWNlICppbnRmID0g Y29uLT5pbnRlcmZhY2U7CiAJWEVOQ09OU19SSU5HX0lEWCBwcm9kOwogCiAJaWYgKGRvbS0+aXNf ZGVhZCkKQEAgLTgyNSw3ICs4NDYsNyBAQCBzdGF0aWMgdm9pZCBoYW5kbGVfdHR5X3JlYWQoc3Ry dWN0IGRvbWFpbiAqZG9tKQogCWlmIChsZW4gPiBzaXplb2YobXNnKSkKIAkJbGVuID0gc2l6ZW9m KG1zZyk7CiAKLQlsZW4gPSByZWFkKGRvbS0+bWFzdGVyX2ZkLCBtc2csIGxlbik7CisJbGVuID0g cmVhZChjb24tPm1hc3Rlcl9mZCwgbXNnLCBsZW4pOwogCS8qCiAJICogTm90ZTogb24gU29sYXJp cywgbGVuID09IDAgbWVhbnMgdGhlIHNsYXZlIGNsb3NlZCwgYW5kIHRoaXMKIAkgKiBpcyBubyBw cm9ibGVtLCBidXQgTGludXggY2FuJ3QgaGFuZGxlIHRoaXMgdXNlZnVsbHksIHNvIHdlCkBAIC04 NDEsNyArODYyLDcgQEAgc3RhdGljIHZvaWQgaGFuZGxlX3R0eV9yZWFkKHN0cnVjdCBkb21haW4g KmRvbSkKIAkJfQogCQl4ZW5fd21iKCk7CiAJCWludGYtPmluX3Byb2QgPSBwcm9kOwotCQl4ZW5l dnRjaG5fbm90aWZ5KGRvbS0+eGNlX2hhbmRsZSwgZG9tLT5sb2NhbF9wb3J0KTsKKwkJeGVuZXZ0 Y2huX25vdGlmeShjb24tPnhjZV9oYW5kbGUsIGNvbi0+bG9jYWxfcG9ydCk7CiAJfSBlbHNlIHsK IAkJZG9tYWluX2Nsb3NlX3R0eShkb20pOwogCQlzaHV0ZG93bl9kb21haW4oZG9tKTsKQEAgLTg1 MSwzNyArODcyLDM5IEBAIHN0YXRpYyB2b2lkIGhhbmRsZV90dHlfcmVhZChzdHJ1Y3QgZG9tYWlu ICpkb20pCiBzdGF0aWMgdm9pZCBoYW5kbGVfdHR5X3dyaXRlKHN0cnVjdCBkb21haW4gKmRvbSkK IHsKIAlzc2l6ZV90IGxlbjsKKwlzdHJ1Y3QgY29uc29sZSAqY29uID0gJmRvbS0+Y29uc29sZTsK IAogCWlmIChkb20tPmlzX2RlYWQpCiAJCXJldHVybjsKIAotCWxlbiA9IHdyaXRlKGRvbS0+bWFz dGVyX2ZkLCBkb20tPmJ1ZmZlci5kYXRhICsgZG9tLT5idWZmZXIuY29uc3VtZWQsCi0JCSAgICBk b20tPmJ1ZmZlci5zaXplIC0gZG9tLT5idWZmZXIuY29uc3VtZWQpOworCWxlbiA9IHdyaXRlKGNv bi0+bWFzdGVyX2ZkLCBjb24tPmJ1ZmZlci5kYXRhICsgY29uLT5idWZmZXIuY29uc3VtZWQsCisJ CSAgICBjb24tPmJ1ZmZlci5zaXplIC0gY29uLT5idWZmZXIuY29uc3VtZWQpOwogIAlpZiAobGVu IDwgMSkgewogCQlkb2xvZyhMT0dfREVCVUcsICJXcml0ZSBmYWlsZWQgb24gZG9tYWluICVkOiAl emQsICVkXG4iLAogCQkgICAgICBkb20tPmRvbWlkLCBsZW4sIGVycm5vKTsKIAkJZG9tYWluX2hh bmRsZV9icm9rZW5fdHR5KGRvbSwgZG9tYWluX2lzX3ZhbGlkKGRvbS0+ZG9taWQpKTsKIAl9IGVs c2UgewotCQlidWZmZXJfYWR2YW5jZSgmZG9tLT5idWZmZXIsIGxlbik7CisJCWJ1ZmZlcl9hZHZh bmNlKCZjb24tPmJ1ZmZlciwgbGVuKTsKIAl9CiB9CiAKIHN0YXRpYyB2b2lkIGhhbmRsZV9yaW5n X3JlYWQoc3RydWN0IGRvbWFpbiAqZG9tKQogewogCXhlbmV2dGNobl9wb3J0X29yX2Vycm9yX3Qg cG9ydDsKKwlzdHJ1Y3QgY29uc29sZSAqY29uID0gJmRvbS0+Y29uc29sZTsKIAogCWlmIChkb20t PmlzX2RlYWQpCiAJCXJldHVybjsKIAotCWlmICgocG9ydCA9IHhlbmV2dGNobl9wZW5kaW5nKGRv bS0+eGNlX2hhbmRsZSkpID09IC0xKQorCWlmICgocG9ydCA9IHhlbmV2dGNobl9wZW5kaW5nKGNv bi0+eGNlX2hhbmRsZSkpID09IC0xKQogCQlyZXR1cm47CiAKLQlkb20tPmV2ZW50X2NvdW50Kys7 CisJY29uLT5ldmVudF9jb3VudCsrOwogCiAJYnVmZmVyX2FwcGVuZChkb20pOwogCi0JaWYgKGRv bS0+ZXZlbnRfY291bnQgPCBSQVRFX0xJTUlUX0FMTE9XQU5DRSkKLQkJKHZvaWQpeGVuZXZ0Y2hu X3VubWFzayhkb20tPnhjZV9oYW5kbGUsIHBvcnQpOworCWlmIChjb24tPmV2ZW50X2NvdW50IDwg UkFURV9MSU1JVF9BTExPV0FOQ0UpCisJCSh2b2lkKXhlbmV2dGNobl91bm1hc2soY29uLT54Y2Vf aGFuZGxlLCBwb3J0KTsKIH0KIAogc3RhdGljIHZvaWQgaGFuZGxlX3hzKHZvaWQpCkBAIC05NDgs OSArOTcxLDExIEBAIHN0YXRpYyB2b2lkIGhhbmRsZV9sb2dfcmVsb2FkKHZvaWQpCiAJaWYgKGxv Z19ndWVzdCkgewogCQlzdHJ1Y3QgZG9tYWluICpkOwogCQlmb3IgKGQgPSBkb21faGVhZDsgZDsg ZCA9IGQtPm5leHQpIHsKLQkJCWlmIChkLT5sb2dfZmQgIT0gLTEpCi0JCQkJY2xvc2UoZC0+bG9n X2ZkKTsKLQkJCWQtPmxvZ19mZCA9IGNyZWF0ZV9kb21haW5fbG9nKGQpOworCQkJc3RydWN0IGNv bnNvbGUgKmNvbiA9ICZkLT5jb25zb2xlOworCisJCQlpZiAoY29uLT5sb2dfZmQgIT0gLTEpCisJ CQkJY2xvc2UoY29uLT5sb2dfZmQpOworCQkJY29uLT5sb2dfZmQgPSBjcmVhdGVfZG9tYWluX2xv ZyhkKTsKIAkJfQogCX0KIApAQCAtMTA1OSw0OCArMTA4NCw1MiBAQCB2b2lkIGhhbmRsZV9pbyh2 b2lkKQogCQkvKiBSZS1jYWxjdWxhdGUgYW55IGV2ZW50IGNvdW50ZXIgYWxsb3dhbmNlcyAmIHVu YmxvY2sKIAkJICAgZG9tYWlucyB3aXRoIG5ldyBhbGxvd2FuY2UgKi8KIAkJZm9yIChkID0gZG9t X2hlYWQ7IGQ7IGQgPSBkLT5uZXh0KSB7CisJCQlzdHJ1Y3QgY29uc29sZSAqY29uID0gJmQtPmNv bnNvbGU7CisKIAkJCS8qIENTIDE2MjU3Ojk1NWVlNGZhMTM0NSBpbnRyb2R1Y2VzIGEgNW1zIGZ1 enoKIAkJCSAqIGZvciBzZWxlY3QoKSwgaXQgaXMgbm90IGNsZWFyIHBvbGwoKSBoYXMKIAkJCSAq IHNpbWlsYXIgYmVoYXZpb3IgKHJldHVybmluZyBhIGNvdXBsZSBvZiBtcwogCQkJICogc29vbmVy IHRoYW4gcmVxdWVzdGVkKSBhcyB3ZWxsLiBKdXN0IGxlYXZlCiAJCQkgKiB0aGUgZnV6eiBoZXJl LiBSZW1vdmUgaXQgd2l0aCBhIHNlcGFyYXRlCiAJCQkgKiBwYXRjaCBpZiBuZWNlc3NhcnkgKi8K LQkJCWlmICgobm93KzUpID4gZC0+bmV4dF9wZXJpb2QpIHsKLQkJCQlkLT5uZXh0X3BlcmlvZCA9 IG5vdyArIFJBVEVfTElNSVRfUEVSSU9EOwotCQkJCWlmIChkLT5ldmVudF9jb3VudCA+PSBSQVRF X0xJTUlUX0FMTE9XQU5DRSkgewotCQkJCQkodm9pZCl4ZW5ldnRjaG5fdW5tYXNrKGQtPnhjZV9o YW5kbGUsIGQtPmxvY2FsX3BvcnQpOworCQkJaWYgKChub3crNSkgPiBjb24tPm5leHRfcGVyaW9k KSB7CisJCQkJY29uLT5uZXh0X3BlcmlvZCA9IG5vdyArIFJBVEVfTElNSVRfUEVSSU9EOworCQkJ CWlmIChjb24tPmV2ZW50X2NvdW50ID49IFJBVEVfTElNSVRfQUxMT1dBTkNFKSB7CisJCQkJCSh2 b2lkKXhlbmV2dGNobl91bm1hc2soY29uLT54Y2VfaGFuZGxlLCBjb24tPmxvY2FsX3BvcnQpOwog CQkJCX0KLQkJCQlkLT5ldmVudF9jb3VudCA9IDA7CisJCQkJY29uLT5ldmVudF9jb3VudCA9IDA7 CiAJCQl9CiAJCX0KIAogCQlmb3IgKGQgPSBkb21faGVhZDsgZDsgZCA9IGQtPm5leHQpIHsKLQkJ CWlmIChkLT5ldmVudF9jb3VudCA+PSBSQVRFX0xJTUlUX0FMTE9XQU5DRSkgeworCQkJc3RydWN0 IGNvbnNvbGUgKmNvbiA9ICZkLT5jb25zb2xlOworCisJCQlpZiAoY29uLT5ldmVudF9jb3VudCA+ PSBSQVRFX0xJTUlUX0FMTE9XQU5DRSkgewogCQkJCS8qIERldGVybWluZSBpZiB3ZSdyZSBnb2lu ZyB0byBiZSB0aGUgbmV4dCB0aW1lIHNsaWNlIHRvIGV4cGlyZSAqLwogCQkJCWlmICghbmV4dF90 aW1lb3V0IHx8Ci0JCQkJICAgIGQtPm5leHRfcGVyaW9kIDwgbmV4dF90aW1lb3V0KQotCQkJCQlu ZXh0X3RpbWVvdXQgPSBkLT5uZXh0X3BlcmlvZDsKLQkJCX0gZWxzZSBpZiAoZC0+eGNlX2hhbmRs ZSAhPSBOVUxMKSB7CisJCQkJICAgIGNvbi0+bmV4dF9wZXJpb2QgPCBuZXh0X3RpbWVvdXQpCisJ CQkJCW5leHRfdGltZW91dCA9IGNvbi0+bmV4dF9wZXJpb2Q7CisJCQl9IGVsc2UgaWYgKGNvbi0+ eGNlX2hhbmRsZSAhPSBOVUxMKSB7CiAJCQkJaWYgKGRpc2NhcmRfb3ZlcmZsb3dlZF9kYXRhIHx8 Ci0JCQkJICAgICFkLT5idWZmZXIubWF4X2NhcGFjaXR5IHx8Ci0JCQkJICAgIGQtPmJ1ZmZlci5z aXplIDwgZC0+YnVmZmVyLm1heF9jYXBhY2l0eSkgewotCQkJCQlpbnQgZXZ0Y2huX2ZkID0geGVu ZXZ0Y2huX2ZkKGQtPnhjZV9oYW5kbGUpOwotCQkJCQlkLT54Y2VfcG9sbGZkX2lkeCA9IHNldF9m ZHMoZXZ0Y2huX2ZkLAorCQkJCSAgICAhY29uLT5idWZmZXIubWF4X2NhcGFjaXR5IHx8CisJCQkJ ICAgIGNvbi0+YnVmZmVyLnNpemUgPCBjb24tPmJ1ZmZlci5tYXhfY2FwYWNpdHkpIHsKKwkJCQkJ aW50IGV2dGNobl9mZCA9IHhlbmV2dGNobl9mZChjb24tPnhjZV9oYW5kbGUpOworCQkJCQljb24t PnhjZV9wb2xsZmRfaWR4ID0gc2V0X2ZkcyhldnRjaG5fZmQsCiAJCQkJCQkJCSAgICBQT0xMSU58 UE9MTFBSSSk7CiAJCQkJfQogCQkJfQogCi0JCQlpZiAoZC0+bWFzdGVyX2ZkICE9IC0xKSB7CisJ CQlpZiAoY29uLT5tYXN0ZXJfZmQgIT0gLTEpIHsKIAkJCQlzaG9ydCBldmVudHMgPSAwOwogCQkJ CWlmICghZC0+aXNfZGVhZCAmJiByaW5nX2ZyZWVfYnl0ZXMoZCkpCiAJCQkJCWV2ZW50cyB8PSBQ T0xMSU47CiAKLQkJCQlpZiAoIWJ1ZmZlcl9lbXB0eSgmZC0+YnVmZmVyKSkKKwkJCQlpZiAoIWJ1 ZmZlcl9lbXB0eSgmY29uLT5idWZmZXIpKQogCQkJCQlldmVudHMgfD0gUE9MTE9VVDsKIAogCQkJ CWlmIChldmVudHMpCi0JCQkJCWQtPm1hc3Rlcl9wb2xsZmRfaWR4ID0KLQkJCQkJCXNldF9mZHMo ZC0+bWFzdGVyX2ZkLAorCQkJCQljb24tPm1hc3Rlcl9wb2xsZmRfaWR4ID0KKwkJCQkJCXNldF9m ZHMoY29uLT5tYXN0ZXJfZmQsCiAJCQkJCQkJZXZlbnRzfFBPTExQUkkpOwogCQkJfQogCQl9CkBA IC0xMTYzLDMzICsxMTkyLDM1IEBAIHZvaWQgaGFuZGxlX2lvKHZvaWQpCiAJCX0KIAogCQlmb3Ig KGQgPSBkb21faGVhZDsgZDsgZCA9IG4pIHsKKwkJCXN0cnVjdCBjb25zb2xlICpjb24gPSAmZC0+ Y29uc29sZTsKKwogCQkJbiA9IGQtPm5leHQ7Ci0JCQlpZiAoZC0+ZXZlbnRfY291bnQgPCBSQVRF X0xJTUlUX0FMTE9XQU5DRSkgewotCQkJCWlmIChkLT54Y2VfaGFuZGxlICE9IE5VTEwgJiYKLQkJ CQkgICAgZC0+eGNlX3BvbGxmZF9pZHggIT0gLTEgJiYKLQkJCQkgICAgIShmZHNbZC0+eGNlX3Bv bGxmZF9pZHhdLnJldmVudHMgJgorCQkJaWYgKGNvbi0+ZXZlbnRfY291bnQgPCBSQVRFX0xJTUlU X0FMTE9XQU5DRSkgeworCQkJCWlmIChjb24tPnhjZV9oYW5kbGUgIT0gTlVMTCAmJgorCQkJCSAg ICBjb24tPnhjZV9wb2xsZmRfaWR4ICE9IC0xICYmCisJCQkJICAgICEoZmRzW2Nvbi0+eGNlX3Bv bGxmZF9pZHhdLnJldmVudHMgJgogCQkJCSAgICAgIH4oUE9MTElOfFBPTExPVVR8UE9MTFBSSSkp ICYmCi0JCQkJICAgICAgKGZkc1tkLT54Y2VfcG9sbGZkX2lkeF0ucmV2ZW50cyAmCisJCQkJICAg ICAgKGZkc1tjb24tPnhjZV9wb2xsZmRfaWR4XS5yZXZlbnRzICYKIAkJCQkgICAgICAgUE9MTElO KSkKIAkJCQkgICAgaGFuZGxlX3JpbmdfcmVhZChkKTsKIAkJCX0KIAotCQkJaWYgKGQtPm1hc3Rl cl9mZCAhPSAtMSAmJiBkLT5tYXN0ZXJfcG9sbGZkX2lkeCAhPSAtMSkgewotCQkJCWlmIChmZHNb ZC0+bWFzdGVyX3BvbGxmZF9pZHhdLnJldmVudHMgJgorCQkJaWYgKGNvbi0+bWFzdGVyX2ZkICE9 IC0xICYmIGNvbi0+bWFzdGVyX3BvbGxmZF9pZHggIT0gLTEpIHsKKwkJCQlpZiAoZmRzW2Nvbi0+ bWFzdGVyX3BvbGxmZF9pZHhdLnJldmVudHMgJgogCQkJCSAgICB+KFBPTExJTnxQT0xMT1VUfFBP TExQUkkpKQogCQkJCQlkb21haW5faGFuZGxlX2Jyb2tlbl90dHkoZCwKIAkJCQkJCSAgIGRvbWFp bl9pc192YWxpZChkLT5kb21pZCkpOwogCQkJCWVsc2UgewotCQkJCQlpZiAoZmRzW2QtPm1hc3Rl cl9wb2xsZmRfaWR4XS5yZXZlbnRzICYKKwkJCQkJaWYgKGZkc1tjb24tPm1hc3Rlcl9wb2xsZmRf aWR4XS5yZXZlbnRzICYKIAkJCQkJICAgIFBPTExJTikKIAkJCQkJCWhhbmRsZV90dHlfcmVhZChk KTsKLQkJCQkJaWYgKGZkc1tkLT5tYXN0ZXJfcG9sbGZkX2lkeF0ucmV2ZW50cyAmCisJCQkJCWlm IChmZHNbY29uLT5tYXN0ZXJfcG9sbGZkX2lkeF0ucmV2ZW50cyAmCiAJCQkJCSAgICBQT0xMT1VU KQogCQkJCQkJaGFuZGxlX3R0eV93cml0ZShkKTsKIAkJCQl9CiAJCQl9CiAKLQkJCWQtPnhjZV9w b2xsZmRfaWR4ID0gZC0+bWFzdGVyX3BvbGxmZF9pZHggPSAtMTsKKwkJCWNvbi0+eGNlX3BvbGxm ZF9pZHggPSBjb24tPm1hc3Rlcl9wb2xsZmRfaWR4ID0gLTE7CiAKIAkJCWlmIChkLT5sYXN0X3Nl ZW4gIT0gZW51bV9wYXNzKQogCQkJCXNodXRkb3duX2RvbWFpbihkKTsKLS0gCjIuNy40CgoKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1h aWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcv eGVuLWRldmVsCg==