From mboxrd@z Thu Jan 1 00:00:00 1970 From: Bhupinder Thakur Subject: [PATCH 08/14 v4] xen/arm: vpl011: Modify xenconsole to define and use a new console structure Date: Tue, 6 Jun 2017 22:55:23 +0530 Message-ID: <1496769929-23355-9-git-send-email-bhupinder.thakur@linaro.org> References: <1496769929-23355-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.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dIIF0-0001jH-7U for xen-devel@lists.xenproject.org; Tue, 06 Jun 2017 17:26:02 +0000 Received: by mail-pg0-f46.google.com with SMTP id k71so4105015pgd.2 for ; Tue, 06 Jun 2017 10:26:00 -0700 (PDT) In-Reply-To: <1496769929-23355-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+ Ci0tLQpDQzogaWoKQ0M6IHdsCkNDOiBzcwpDQzogamcKCkNoYW5nZXMgc2luY2UgdjM6Ci0gVGhl IGNoYW5nZXMgaW4geGVuY29uc29sZSBoYXZlIGJlZW4gc3BsaXQgaW50byBmb3VyIHBhdGNoZXMu IFRoaXMgaXMgdGhlIGZpcnN0IHBhdGNoCiAgd2hpY2ggbW9kaWZpZXMgdGhlIHhlbmNvbnNvbGUg dG8gdXNlIGEgbmV3IGNvbnNvbGUgc3RydWN0dXJlLgoKQ2hhbmdlcyBzaW5jZSB2MjoKLSBEZWZp bmVkIGEgbmV3IGZ1bmN0aW9uIGNvbnNvbGVfY3JlYXRlX3JpbmcoKSB3aGljaCBzZXRzIHVwIHRo ZSByaW5nIGJ1ZmZlciBhbmQgCiAgZXZlbnQgY2hhbm5lbCBhIG5ldyBjb25zb2xlLiBkb21haW5f Y3JlYXRlX3JpbmcoKSB1c2VzIHRoaXMgZnVuY3Rpb24gdG8gc2V0dXAKICBhIGNvbnNvbGUuCi0g VGhpcyBwYXRjaCBkb2VzIG5vdCBjb250YWluIHZ1YXJ0IHNwZWNpZmljIGNoYW5nZXMsIHdoaWNo IHdvdWxkIGJlIGludHJvZHVjZWQgaW4KICB0aGUgbmV4dCBwYXRjaC4KLSBDaGFuZ2VzIGZvciBr ZWVwaW5nIHRoZSBQViBsb2cgZmlsZSBuYW1lIHVuY2hhbmdlZC4KCkNoYW5nZXMgc2luY2UgdjE6 Ci0gU3BsaXQgdGhlIGRvbWFpbiBzdHJ1dHVyZSB0byBhIHNlcGFyYXRlIGNvbnNvbGUgc3RydWN0 dXJlCi0gTW9kaWZpZWQgdGhlIGZ1bmN0aW9ucyB0byBvcGVyYXRlIG9uIHRoZSBjb25zb2xlIHN0 cnV0dXJlCi0gUmVwbGFjZWQgcmVwZXRpdGl2ZSBwZXIgY29uc29sZSBjb2RlIHdpdGggZ2VuZXJp YyBjb2RlCgogdG9vbHMvY29uc29sZS9kYWVtb24vaW8uYyB8IDIyNiArKysrKysrKysrKysrKysr KysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMTI3IGluc2Vy dGlvbnMoKyksIDk5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3Rvb2xzL2NvbnNvbGUvZGFl bW9uL2lvLmMgYi90b29scy9jb25zb2xlL2RhZW1vbi9pby5jCmluZGV4IDk0N2YxM2EuLjA0MDJk ZGYgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2NvbnNvbGUvZGFlbW9uL2lvLmMKKysrIGIvdG9vbHMvY29u c29sZS9kYWVtb24vaW8uYwpAQCAtODksMjUgKzg5LDMwIEBAIHN0cnVjdCBidWZmZXIgewogCXNp emVfdCBtYXhfY2FwYWNpdHk7CiB9OwogCi1zdHJ1Y3QgZG9tYWluIHsKLQlpbnQgZG9taWQ7Citz dHJ1Y3QgY29uc29sZSB7CiAJaW50IG1hc3Rlcl9mZDsKIAlpbnQgbWFzdGVyX3BvbGxmZF9pZHg7 CiAJaW50IHNsYXZlX2ZkOwogCWludCBsb2dfZmQ7Ci0JYm9vbCBpc19kZWFkOwotCXVuc2lnbmVk IGxhc3Rfc2VlbjsKIAlzdHJ1Y3QgYnVmZmVyIGJ1ZmZlcjsKLQlzdHJ1Y3QgZG9tYWluICpuZXh0 OwogCWNoYXIgKmNvbnNwYXRoOwogCWludCByaW5nX3JlZjsKIAl4ZW5ldnRjaG5fcG9ydF9vcl9l cnJvcl90IGxvY2FsX3BvcnQ7CiAJeGVuZXZ0Y2huX3BvcnRfb3JfZXJyb3JfdCByZW1vdGVfcG9y dDsKKwlzdHJ1Y3QgeGVuY29uc19pbnRlcmZhY2UgKmludGVyZmFjZTsKKwlzdHJ1Y3QgZG9tYWlu ICpkOworfTsKKworc3RydWN0IGRvbWFpbiB7CisJaW50IGRvbWlkOworCWJvb2wgaXNfZGVhZDsK Kwl1bnNpZ25lZCBsYXN0X3NlZW47CisJc3RydWN0IGRvbWFpbiAqbmV4dDsKIAl4ZW5ldnRjaG5f aGFuZGxlICp4Y2VfaGFuZGxlOwogCWludCB4Y2VfcG9sbGZkX2lkeDsKLQlzdHJ1Y3QgeGVuY29u c19pbnRlcmZhY2UgKmludGVyZmFjZTsKIAlpbnQgZXZlbnRfY291bnQ7CiAJbG9uZyBsb25nIG5l eHRfcGVyaW9kOworCXN0cnVjdCBjb25zb2xlIGNvbnNvbGU7CiB9OwogCiBzdGF0aWMgc3RydWN0 IGRvbWFpbiAqZG9tX2hlYWQ7CkBAIC0xNjAsOSArMTY1LDEwIEBAIHN0YXRpYyBpbnQgd3JpdGVf d2l0aF90aW1lc3RhbXAoaW50IGZkLCBjb25zdCBjaGFyICpkYXRhLCBzaXplX3Qgc3osCiAKIHN0 YXRpYyB2b2lkIGJ1ZmZlcl9hcHBlbmQoc3RydWN0IGRvbWFpbiAqZG9tKQogewotCXN0cnVjdCBi dWZmZXIgKmJ1ZmZlciA9ICZkb20tPmJ1ZmZlcjsKKwlzdHJ1Y3QgY29uc29sZSAqY29uID0gJmRv bS0+Y29uc29sZTsKKwlzdHJ1Y3QgYnVmZmVyICpidWZmZXIgPSAmY29uLT5idWZmZXI7CiAJWEVO Q09OU19SSU5HX0lEWCBjb25zLCBwcm9kLCBzaXplOwotCXN0cnVjdCB4ZW5jb25zX2ludGVyZmFj ZSAqaW50ZiA9IGRvbS0+aW50ZXJmYWNlOworCXN0cnVjdCB4ZW5jb25zX2ludGVyZmFjZSAqaW50 ZiA9IGNvbi0+aW50ZXJmYWNlOwogCiAJY29ucyA9IGludGYtPm91dF9jb25zOwogCXByb2QgPSBp bnRmLT5vdXRfcHJvZDsKQEAgLTE4NywyMiArMTkzLDIyIEBAIHN0YXRpYyB2b2lkIGJ1ZmZlcl9h cHBlbmQoc3RydWN0IGRvbWFpbiAqZG9tKQogCiAJeGVuX21iKCk7CiAJaW50Zi0+b3V0X2NvbnMg PSBjb25zOwotCXhlbmV2dGNobl9ub3RpZnkoZG9tLT54Y2VfaGFuZGxlLCBkb20tPmxvY2FsX3Bv cnQpOworCXhlbmV2dGNobl9ub3RpZnkoZG9tLT54Y2VfaGFuZGxlLCBjb24tPmxvY2FsX3BvcnQp OwogCiAJLyogR2V0IHRoZSBkYXRhIHRvIHRoZSBsb2dmaWxlIGFzIGVhcmx5IGFzIHBvc3NpYmxl IGJlY2F1c2UgaWYKIAkgKiBubyBvbmUgaXMgbGlzdGVuaW5nIG9uIHRoZSBjb25zb2xlIHB0eSB0 aGVuIGl0IHdpbGwgZmlsbCB1cAogCSAqIGFuZCBoYW5kbGVfdHR5X3dyaXRlIHdpbGwgc3RvcCBi ZWluZyBjYWxsZWQuCiAJICovCi0JaWYgKGRvbS0+bG9nX2ZkICE9IC0xKSB7CisJaWYgKGNvbi0+ bG9nX2ZkICE9IC0xKSB7CiAJCWludCBsb2dyZXQ7CiAJCWlmIChsb2dfdGltZV9ndWVzdCkgewog CQkJbG9ncmV0ID0gd3JpdGVfd2l0aF90aW1lc3RhbXAoCi0JCQkJZG9tLT5sb2dfZmQsCisJCQkJ Y29uLT5sb2dfZmQsCiAJCQkJYnVmZmVyLT5kYXRhICsgYnVmZmVyLT5zaXplIC0gc2l6ZSwKIAkJ CQlzaXplLCAmbG9nX3RpbWVfZ3Vlc3RfbmVlZHRzKTsKIAkJfSBlbHNlIHsKIAkJCWxvZ3JldCA9 IHdyaXRlX2FsbCgKLQkJCQlkb20tPmxvZ19mZCwKKwkJCQljb24tPmxvZ19mZCwKIAkJCQlidWZm ZXItPmRhdGEgKyBidWZmZXItPnNpemUgLSBzaXplLAogCQkJCXNpemUpOwogCQl9CkBAIC0zMzgs MTQgKzM0NCwxNiBAQCBzdGF0aWMgaW50IGNyZWF0ZV9kb21haW5fbG9nKHN0cnVjdCBkb21haW4g KmRvbSkKIAogc3RhdGljIHZvaWQgZG9tYWluX2Nsb3NlX3R0eShzdHJ1Y3QgZG9tYWluICpkb20p CiB7Ci0JaWYgKGRvbS0+bWFzdGVyX2ZkICE9IC0xKSB7Ci0JCWNsb3NlKGRvbS0+bWFzdGVyX2Zk KTsKLQkJZG9tLT5tYXN0ZXJfZmQgPSAtMTsKKwlzdHJ1Y3QgY29uc29sZSAqY29uID0gJmRvbS0+ Y29uc29sZTsKKworCWlmIChjb24tPm1hc3Rlcl9mZCAhPSAtMSkgeworCQljbG9zZShjb24tPm1h c3Rlcl9mZCk7CisJCWNvbi0+bWFzdGVyX2ZkID0gLTE7CiAJfQogCi0JaWYgKGRvbS0+c2xhdmVf ZmQgIT0gLTEpIHsKLQkJY2xvc2UoZG9tLT5zbGF2ZV9mZCk7Ci0JCWRvbS0+c2xhdmVfZmQgPSAt MTsKKwlpZiAoY29uLT5zbGF2ZV9mZCAhPSAtMSkgeworCQljbG9zZShjb24tPnNsYXZlX2ZkKTsK KwkJY29uLT5zbGF2ZV9mZCA9IC0xOwogCX0KIH0KIApAQCAtNDE4LDExICs0MjYsMTIgQEAgc3Rh dGljIGludCBkb21haW5fY3JlYXRlX3R0eShzdHJ1Y3QgZG9tYWluICpkb20pCiAJY2hhciAqZGF0 YTsKIAl1bnNpZ25lZCBpbnQgbGVuOwogCXN0cnVjdCB0ZXJtaW9zIHRlcm07CisJc3RydWN0IGNv bnNvbGUgKmNvbiA9ICZkb20tPmNvbnNvbGU7CiAKLQlhc3NlcnQoZG9tLT5zbGF2ZV9mZCA9PSAt MSk7Ci0JYXNzZXJ0KGRvbS0+bWFzdGVyX2ZkID09IC0xKTsKKwlhc3NlcnQoY29uLT5zbGF2ZV9m ZCA9PSAtMSk7CisJYXNzZXJ0KGNvbi0+bWFzdGVyX2ZkID09IC0xKTsKIAotCWlmIChvcGVucHR5 KCZkb20tPm1hc3Rlcl9mZCwgJmRvbS0+c2xhdmVfZmQsIE5VTEwsIE5VTEwsIE5VTEwpIDwgMCkg eworCWlmIChvcGVucHR5KCZjb24tPm1hc3Rlcl9mZCwgJmNvbi0+c2xhdmVfZmQsIE5VTEwsIE5V TEwsIE5VTEwpIDwgMCkgewogCQllcnIgPSBlcnJubzsKIAkJZG9sb2coTE9HX0VSUiwgIkZhaWxl ZCB0byBjcmVhdGUgdHR5IGZvciBkb21haW4tJWQgIgogCQkgICAgICAiKGVycm5vID0gJWksICVz KSIsCkBAIC00MzAsNyArNDM5LDcgQEAgc3RhdGljIGludCBkb21haW5fY3JlYXRlX3R0eShzdHJ1 Y3QgZG9tYWluICpkb20pCiAJCXJldHVybiAwOwogCX0KIAotCWlmICh0Y2dldGF0dHIoZG9tLT5z bGF2ZV9mZCwgJnRlcm0pIDwgMCkgeworCWlmICh0Y2dldGF0dHIoY29uLT5zbGF2ZV9mZCwgJnRl cm0pIDwgMCkgewogCQllcnIgPSBlcnJubzsKIAkJZG9sb2coTE9HX0VSUiwgIkZhaWxlZCB0byBn ZXQgdHR5IGF0dHJpYnV0ZXMgZm9yIGRvbWFpbi0lZCAiCiAJCQkiKGVycm5vID0gJWksICVzKSIs CkBAIC00MzgsNyArNDQ3LDcgQEAgc3RhdGljIGludCBkb21haW5fY3JlYXRlX3R0eShzdHJ1Y3Qg ZG9tYWluICpkb20pCiAJCWdvdG8gb3V0OwogCX0KIAljZm1ha2VyYXcoJnRlcm0pOwotCWlmICh0 Y3NldGF0dHIoZG9tLT5zbGF2ZV9mZCwgVENTQU5PVywgJnRlcm0pIDwgMCkgeworCWlmICh0Y3Nl dGF0dHIoY29uLT5zbGF2ZV9mZCwgVENTQU5PVywgJnRlcm0pIDwgMCkgewogCQllcnIgPSBlcnJu bzsKIAkJZG9sb2coTE9HX0VSUiwgIkZhaWxlZCB0byBzZXQgdHR5IGF0dHJpYnV0ZXMgZm9yIGRv bWFpbi0lZCAiCiAJCQkiKGVycm5vID0gJWksICVzKSIsCkBAIC00NDYsNyArNDU1LDcgQEAgc3Rh dGljIGludCBkb21haW5fY3JlYXRlX3R0eShzdHJ1Y3QgZG9tYWluICpkb20pCiAJCWdvdG8gb3V0 OwogCX0KIAotCWlmICgoc2xhdmUgPSBwdHNuYW1lKGRvbS0+bWFzdGVyX2ZkKSkgPT0gTlVMTCkg eworCWlmICgoc2xhdmUgPSBwdHNuYW1lKGNvbi0+bWFzdGVyX2ZkKSkgPT0gTlVMTCkgewogCQll cnIgPSBlcnJubzsKIAkJZG9sb2coTE9HX0VSUiwgIkZhaWxlZCB0byBnZXQgc2xhdmUgbmFtZSBm b3IgZG9tYWluLSVkICIKIAkJICAgICAgIihlcnJubyA9ICVpLCAlcykiLApAQCAtNDU0LDE4ICs0 NjMsMTggQEAgc3RhdGljIGludCBkb21haW5fY3JlYXRlX3R0eShzdHJ1Y3QgZG9tYWluICpkb20p CiAJCWdvdG8gb3V0OwogCX0KIAotCXN1Y2Nlc3MgPSBhc3ByaW50ZigmcGF0aCwgIiVzL2xpbWl0 IiwgZG9tLT5jb25zcGF0aCkgIT0KKwlzdWNjZXNzID0gYXNwcmludGYoJnBhdGgsICIlcy9saW1p dCIsIGNvbi0+Y29uc3BhdGgpICE9CiAJCS0xOwogCWlmICghc3VjY2VzcykKIAkJZ290byBvdXQ7 CiAJZGF0YSA9IHhzX3JlYWQoeHMsIFhCVF9OVUxMLCBwYXRoLCAmbGVuKTsKIAlpZiAoZGF0YSkg ewotCQlkb20tPmJ1ZmZlci5tYXhfY2FwYWNpdHkgPSBzdHJ0b3VsKGRhdGEsIDAsIDApOworCQlj b24tPmJ1ZmZlci5tYXhfY2FwYWNpdHkgPSBzdHJ0b3VsKGRhdGEsIDAsIDApOwogCQlmcmVlKGRh dGEpOwogCX0KIAlmcmVlKHBhdGgpOwogCi0Jc3VjY2VzcyA9IChhc3ByaW50ZigmcGF0aCwgIiVz L3R0eSIsIGRvbS0+Y29uc3BhdGgpICE9IC0xKTsKKwlzdWNjZXNzID0gKGFzcHJpbnRmKCZwYXRo LCAiJXMvdHR5IiwgY29uLT5jb25zcGF0aCkgIT0gLTEpOwogCWlmICghc3VjY2VzcykKIAkJZ290 byBvdXQ7CiAJc3VjY2VzcyA9IHhzX3dyaXRlKHhzLCBYQlRfTlVMTCwgcGF0aCwgc2xhdmUsIHN0 cmxlbihzbGF2ZSkpOwpAQCAtNDczLDcgKzQ4Miw3IEBAIHN0YXRpYyBpbnQgZG9tYWluX2NyZWF0 ZV90dHkoc3RydWN0IGRvbWFpbiAqZG9tKQogCWlmICghc3VjY2VzcykKIAkJZ290byBvdXQ7CiAK LQlpZiAoZmNudGwoZG9tLT5tYXN0ZXJfZmQsIEZfU0VURkwsIE9fTk9OQkxPQ0spID09IC0xKQor CWlmIChmY250bChjb24tPm1hc3Rlcl9mZCwgRl9TRVRGTCwgT19OT05CTE9DSykgPT0gLTEpCiAJ CWdvdG8gb3V0OwogCiAJcmV0dXJuIDE7CkBAIC01MTksMjkgKzUyOCwzMiBAQCBzdGF0aWMgaW50 IHhzX2dhdGhlcihzdHJ1Y3QgeHNfaGFuZGxlICp4cywgY29uc3QgY2hhciAqZGlyLCAuLi4pCiAK IHN0YXRpYyB2b2lkIGRvbWFpbl91bm1hcF9pbnRlcmZhY2Uoc3RydWN0IGRvbWFpbiAqZG9tKQog ewotCWlmIChkb20tPmludGVyZmFjZSA9PSBOVUxMKQorCXN0cnVjdCBjb25zb2xlICpjb24gPSAm ZG9tLT5jb25zb2xlOworCisJaWYgKGNvbi0+aW50ZXJmYWNlID09IE5VTEwpCiAJCXJldHVybjsK LQlpZiAoeGd0X2hhbmRsZSAmJiBkb20tPnJpbmdfcmVmID09IC0xKQotCQl4ZW5nbnR0YWJfdW5t YXAoeGd0X2hhbmRsZSwgZG9tLT5pbnRlcmZhY2UsIDEpOworCWlmICh4Z3RfaGFuZGxlICYmIGNv bi0+cmluZ19yZWYgPT0gLTEpCisJCXhlbmdudHRhYl91bm1hcCh4Z3RfaGFuZGxlLCBjb24tPmlu dGVyZmFjZSwgMSk7CiAJZWxzZQotCQltdW5tYXAoZG9tLT5pbnRlcmZhY2UsIFhDX1BBR0VfU0la RSk7Ci0JZG9tLT5pbnRlcmZhY2UgPSBOVUxMOwotCWRvbS0+cmluZ19yZWYgPSAtMTsKKwkJbXVu bWFwKGNvbi0+aW50ZXJmYWNlLCBYQ19QQUdFX1NJWkUpOworCWNvbi0+aW50ZXJmYWNlID0gTlVM TDsKKwljb24tPnJpbmdfcmVmID0gLTE7CiB9CiAgCiBzdGF0aWMgaW50IGRvbWFpbl9jcmVhdGVf cmluZyhzdHJ1Y3QgZG9tYWluICpkb20pCiB7CiAJaW50IGVyciwgcmVtb3RlX3BvcnQsIHJpbmdf cmVmLCByYzsKIAljaGFyICp0eXBlLCBwYXRoW1BBVEhfTUFYXTsKKwlzdHJ1Y3QgY29uc29sZSAq Y29uID0gJmRvbS0+Y29uc29sZTsKIAotCWVyciA9IHhzX2dhdGhlcih4cywgZG9tLT5jb25zcGF0 aCwKKwllcnIgPSB4c19nYXRoZXIoeHMsIGNvbi0+Y29uc3BhdGgsCiAJCQkicmluZy1yZWYiLCAi JXUiLCAmcmluZ19yZWYsCiAJCQkicG9ydCIsICIlaSIsICZyZW1vdGVfcG9ydCwKIAkJCU5VTEwp OwogCWlmIChlcnIpCiAJCWdvdG8gb3V0OwogCi0Jc25wcmludGYocGF0aCwgc2l6ZW9mKHBhdGgp LCAiJXMvdHlwZSIsIGRvbS0+Y29uc3BhdGgpOworCXNucHJpbnRmKHBhdGgsIHNpemVvZihwYXRo KSwgIiVzL3R5cGUiLCBjb24tPmNvbnNwYXRoKTsKIAl0eXBlID0geHNfcmVhZCh4cywgWEJUX05V TEwsIHBhdGgsIE5VTEwpOwogCWlmICh0eXBlICYmIHN0cmNtcCh0eXBlLCAieGVuY29uc29sZWQi KSAhPSAwKSB7CiAJCWZyZWUodHlwZSk7CkBAIC01NTAsNDEgKzU2Miw0MSBAQCBzdGF0aWMgaW50 IGRvbWFpbl9jcmVhdGVfcmluZyhzdHJ1Y3QgZG9tYWluICpkb20pCiAJZnJlZSh0eXBlKTsKIAog CS8qIElmIHVzaW5nIHJpbmdfcmVmIGFuZCBpdCBoYXMgY2hhbmdlZCwgcmVtYXAgKi8KLQlpZiAo cmluZ19yZWYgIT0gZG9tLT5yaW5nX3JlZiAmJiBkb20tPnJpbmdfcmVmICE9IC0xKQorCWlmIChy aW5nX3JlZiAhPSBjb24tPnJpbmdfcmVmICYmIGNvbi0+cmluZ19yZWYgIT0gLTEpCiAJCWRvbWFp bl91bm1hcF9pbnRlcmZhY2UoZG9tKTsKIAotCWlmICghZG9tLT5pbnRlcmZhY2UgJiYgeGd0X2hh bmRsZSkgeworCWlmICghY29uLT5pbnRlcmZhY2UgJiYgeGd0X2hhbmRsZSkgewogCQkvKiBQcmVm ZXIgdXNpbmcgZ3JhbnQgdGFibGUgKi8KLQkJZG9tLT5pbnRlcmZhY2UgPSB4ZW5nbnR0YWJfbWFw X2dyYW50X3JlZih4Z3RfaGFuZGxlLAorCQljb24tPmludGVyZmFjZSA9IHhlbmdudHRhYl9tYXBf Z3JhbnRfcmVmKHhndF9oYW5kbGUsCiAJCQlkb20tPmRvbWlkLCBHTlRUQUJfUkVTRVJWRURfQ09O U09MRSwKIAkJCVBST1RfUkVBRHxQUk9UX1dSSVRFKTsKLQkJZG9tLT5yaW5nX3JlZiA9IC0xOwor CQljb24tPnJpbmdfcmVmID0gLTE7CiAJfQotCWlmICghZG9tLT5pbnRlcmZhY2UpIHsKKwlpZiAo IWNvbi0+aW50ZXJmYWNlKSB7CiAJCS8qIEZhbGwgYmFjayB0byB4Y19tYXBfZm9yZWlnbl9yYW5n ZSAqLwotCQlkb20tPmludGVyZmFjZSA9IHhjX21hcF9mb3JlaWduX3JhbmdlKAorCQljb24tPmlu dGVyZmFjZSA9IHhjX21hcF9mb3JlaWduX3JhbmdlKAogCQkJeGMsIGRvbS0+ZG9taWQsIFhDX1BB R0VfU0laRSwKIAkJCVBST1RfUkVBRHxQUk9UX1dSSVRFLAogCQkJKHVuc2lnbmVkIGxvbmcpcmlu Z19yZWYpOwotCQlpZiAoZG9tLT5pbnRlcmZhY2UgPT0gTlVMTCkgeworCQlpZiAoY29uLT5pbnRl cmZhY2UgPT0gTlVMTCkgewogCQkJZXJyID0gRUlOVkFMOwogCQkJZ290byBvdXQ7CiAJCX0KLQkJ ZG9tLT5yaW5nX3JlZiA9IHJpbmdfcmVmOworCQljb24tPnJpbmdfcmVmID0gcmluZ19yZWY7CiAJ fQogCiAJLyogR28gbm8gZnVydGhlciBpZiBwb3J0IGhhcyBub3QgY2hhbmdlZCBhbmQgd2UgYXJl IHN0aWxsIGJvdW5kLiAqLwotCWlmIChyZW1vdGVfcG9ydCA9PSBkb20tPnJlbW90ZV9wb3J0KSB7 CisJaWYgKHJlbW90ZV9wb3J0ID09IGNvbi0+cmVtb3RlX3BvcnQpIHsKIAkJeGNfZXZ0Y2huX3N0 YXR1c190IHN0YXR1cyA9IHsKIAkJCS5kb20gPSBET01JRF9TRUxGLAotCQkJLnBvcnQgPSBkb20t PmxvY2FsX3BvcnQgfTsKKwkJCS5wb3J0ID0gY29uLT5sb2NhbF9wb3J0IH07CiAJCWlmICgoeGNf ZXZ0Y2huX3N0YXR1cyh4YywgJnN0YXR1cykgPT0gMCkgJiYKIAkJICAgIChzdGF0dXMuc3RhdHVz ID09IEVWVENITlNUQVRfaW50ZXJkb21haW4pKQogCQkJZ290byBvdXQ7CiAJfQogCi0JZG9tLT5s b2NhbF9wb3J0ID0gLTE7Ci0JZG9tLT5yZW1vdGVfcG9ydCA9IC0xOworCWNvbi0+bG9jYWxfcG9y dCA9IC0xOworCWNvbi0+cmVtb3RlX3BvcnQgPSAtMTsKIAlpZiAoZG9tLT54Y2VfaGFuZGxlICE9 IE5VTEwpCiAJCXhlbmV2dGNobl9jbG9zZShkb20tPnhjZV9oYW5kbGUpOwogCkBAIC02MDUsMjIg KzYxNywyMiBAQCBzdGF0aWMgaW50IGRvbWFpbl9jcmVhdGVfcmluZyhzdHJ1Y3QgZG9tYWluICpk b20pCiAJCWRvbS0+eGNlX2hhbmRsZSA9IE5VTEw7CiAJCWdvdG8gb3V0OwogCX0KLQlkb20tPmxv Y2FsX3BvcnQgPSByYzsKLQlkb20tPnJlbW90ZV9wb3J0ID0gcmVtb3RlX3BvcnQ7CisJY29uLT5s b2NhbF9wb3J0ID0gcmM7CisJY29uLT5yZW1vdGVfcG9ydCA9IHJlbW90ZV9wb3J0OwogCi0JaWYg KGRvbS0+bWFzdGVyX2ZkID09IC0xKSB7CisJaWYgKGNvbi0+bWFzdGVyX2ZkID09IC0xKSB7CiAJ CWlmICghZG9tYWluX2NyZWF0ZV90dHkoZG9tKSkgewogCQkJZXJyID0gZXJybm87CiAJCQl4ZW5l dnRjaG5fY2xvc2UoZG9tLT54Y2VfaGFuZGxlKTsKIAkJCWRvbS0+eGNlX2hhbmRsZSA9IE5VTEw7 Ci0JCQlkb20tPmxvY2FsX3BvcnQgPSAtMTsKLQkJCWRvbS0+cmVtb3RlX3BvcnQgPSAtMTsKKwkJ CWNvbi0+bG9jYWxfcG9ydCA9IC0xOworCQkJY29uLT5yZW1vdGVfcG9ydCA9IC0xOwogCQkJZ290 byBvdXQ7CiAJCX0KIAl9CiAKLQlpZiAobG9nX2d1ZXN0ICYmIChkb20tPmxvZ19mZCA9PSAtMSkp Ci0JCWRvbS0+bG9nX2ZkID0gY3JlYXRlX2RvbWFpbl9sb2coZG9tKTsKKwlpZiAobG9nX2d1ZXN0 ICYmIChjb24tPmxvZ19mZCA9PSAtMSkpCisJCWNvbi0+bG9nX2ZkID0gY3JlYXRlX2RvbWFpbl9s b2coZG9tKTsKIAogIG91dDoKIAlyZXR1cm4gZXJyOwpAQCAtNjMwLDE2ICs2NDIsMTcgQEAgc3Rh dGljIGJvb2wgd2F0Y2hfZG9tYWluKHN0cnVjdCBkb21haW4gKmRvbSwgYm9vbCB3YXRjaCkKIHsK IAljaGFyIGRvbWlkX3N0clszICsgTUFYX1NUUkxFTihkb20tPmRvbWlkKV07CiAJYm9vbCBzdWNj ZXNzOworCXN0cnVjdCBjb25zb2xlICpjb24gPSAmZG9tLT5jb25zb2xlOwogCiAJc25wcmludGYo ZG9taWRfc3RyLCBzaXplb2YoZG9taWRfc3RyKSwgImRvbSV1IiwgZG9tLT5kb21pZCk7CiAJaWYg KHdhdGNoKSB7Ci0JCXN1Y2Nlc3MgPSB4c193YXRjaCh4cywgZG9tLT5jb25zcGF0aCwgZG9taWRf c3RyKTsKKwkJc3VjY2VzcyA9IHhzX3dhdGNoKHhzLCBjb24tPmNvbnNwYXRoLCBkb21pZF9zdHIp OwogCQlpZiAoc3VjY2VzcykKIAkJCWRvbWFpbl9jcmVhdGVfcmluZyhkb20pOwogCQllbHNlCi0J CQl4c191bndhdGNoKHhzLCBkb20tPmNvbnNwYXRoLCBkb21pZF9zdHIpOworCQkJeHNfdW53YXRj aCh4cywgY29uLT5jb25zcGF0aCwgZG9taWRfc3RyKTsKIAl9IGVsc2UgewotCQlzdWNjZXNzID0g eHNfdW53YXRjaCh4cywgZG9tLT5jb25zcGF0aCwgZG9taWRfc3RyKTsKKwkJc3VjY2VzcyA9IHhz X3Vud2F0Y2goeHMsIGNvbi0+Y29uc3BhdGgsIGRvbWlkX3N0cik7CiAJfQogCiAJcmV0dXJuIHN1 Y2Nlc3M7CkBAIC02NTEsNiArNjY0LDcgQEAgc3RhdGljIHN0cnVjdCBkb21haW4gKmNyZWF0ZV9k b21haW4oaW50IGRvbWlkKQogCXN0cnVjdCBkb21haW4gKmRvbTsKIAljaGFyICpzOwogCXN0cnVj dCB0aW1lc3BlYyB0czsKKwlzdHJ1Y3QgY29uc29sZSAqY29uOwogCiAJaWYgKGNsb2NrX2dldHRp bWUoQ0xPQ0tfTU9OT1RPTklDLCAmdHMpIDwgMCkgewogCQlkb2xvZyhMT0dfRVJSLCAiQ2Fubm90 IGdldCB0aW1lIG9mIGRheSAlczolczpMJWQiLApAQCAtNjY3LDI1ICs2ODEsMjYgQEAgc3RhdGlj IHN0cnVjdCBkb21haW4gKmNyZWF0ZV9kb21haW4oaW50IGRvbWlkKQogCiAJZG9tLT5kb21pZCA9 IGRvbWlkOwogCi0JZG9tLT5jb25zcGF0aCA9IHhzX2dldF9kb21haW5fcGF0aCh4cywgZG9tLT5k b21pZCk7Ci0JcyA9IHJlYWxsb2MoZG9tLT5jb25zcGF0aCwgc3RybGVuKGRvbS0+Y29uc3BhdGgp ICsKKwljb24gPSAmZG9tLT5jb25zb2xlOworCWNvbi0+Y29uc3BhdGggPSB4c19nZXRfZG9tYWlu X3BhdGgoeHMsIGRvbS0+ZG9taWQpOworCXMgPSByZWFsbG9jKGNvbi0+Y29uc3BhdGgsIHN0cmxl bihjb24tPmNvbnNwYXRoKSArCiAJCSAgICBzdHJsZW4oIi9jb25zb2xlIikgKyAxKTsKIAlpZiAo cyA9PSBOVUxMKQogCQlnb3RvIG91dDsKLQlkb20tPmNvbnNwYXRoID0gczsKLQlzdHJjYXQoZG9t LT5jb25zcGF0aCwgIi9jb25zb2xlIik7CisJY29uLT5jb25zcGF0aCA9IHM7CisJc3RyY2F0KGNv bi0+Y29uc3BhdGgsICIvY29uc29sZSIpOwogCi0JZG9tLT5tYXN0ZXJfZmQgPSAtMTsKLQlkb20t Pm1hc3Rlcl9wb2xsZmRfaWR4ID0gLTE7Ci0JZG9tLT5zbGF2ZV9mZCA9IC0xOwotCWRvbS0+bG9n X2ZkID0gLTE7CisJY29uLT5tYXN0ZXJfZmQgPSAtMTsKKwljb24tPm1hc3Rlcl9wb2xsZmRfaWR4 ID0gLTE7CisJY29uLT5zbGF2ZV9mZCA9IC0xOworCWNvbi0+bG9nX2ZkID0gLTE7CiAJZG9tLT54 Y2VfcG9sbGZkX2lkeCA9IC0xOwogCiAJZG9tLT5uZXh0X3BlcmlvZCA9ICgobG9uZyBsb25nKXRz LnR2X3NlYyAqIDEwMDApICsgKHRzLnR2X25zZWMgLyAxMDAwMDAwKSArIFJBVEVfTElNSVRfUEVS SU9EOwogCi0JZG9tLT5yaW5nX3JlZiA9IC0xOwotCWRvbS0+bG9jYWxfcG9ydCA9IC0xOwotCWRv bS0+cmVtb3RlX3BvcnQgPSAtMTsKKwljb24tPnJpbmdfcmVmID0gLTE7CisJY29uLT5sb2NhbF9w b3J0ID0gLTE7CisJY29uLT5yZW1vdGVfcG9ydCA9IC0xOwogCiAJaWYgKCF3YXRjaF9kb21haW4o ZG9tLCB0cnVlKSkKIAkJZ290byBvdXQ7CkBAIC02OTcsNyArNzEyLDcgQEAgc3RhdGljIHN0cnVj dCBkb21haW4gKmNyZWF0ZV9kb21haW4oaW50IGRvbWlkKQogCiAJcmV0dXJuIGRvbTsKICBvdXQ6 Ci0JZnJlZShkb20tPmNvbnNwYXRoKTsKKwlmcmVlKGNvbi0+Y29uc3BhdGgpOwogCWZyZWUoZG9t KTsKIAlyZXR1cm4gTlVMTDsKIH0KQEAgLTcyOSwxOCArNzQ0LDIwIEBAIHN0YXRpYyB2b2lkIHJl bW92ZV9kb21haW4oc3RydWN0IGRvbWFpbiAqZG9tKQogCiBzdGF0aWMgdm9pZCBjbGVhbnVwX2Rv bWFpbihzdHJ1Y3QgZG9tYWluICpkKQogeworCXN0cnVjdCBjb25zb2xlICpjb24gPSAmZC0+Y29u c29sZTsKKwogCWRvbWFpbl9jbG9zZV90dHkoZCk7CiAKLQlpZiAoZC0+bG9nX2ZkICE9IC0xKSB7 Ci0JCWNsb3NlKGQtPmxvZ19mZCk7Ci0JCWQtPmxvZ19mZCA9IC0xOworCWlmIChjb24tPmxvZ19m ZCAhPSAtMSkgeworCQljbG9zZShjb24tPmxvZ19mZCk7CisJCWNvbi0+bG9nX2ZkID0gLTE7CiAJ fQogCi0JZnJlZShkLT5idWZmZXIuZGF0YSk7Ci0JZC0+YnVmZmVyLmRhdGEgPSBOVUxMOworCWZy ZWUoY29uLT5idWZmZXIuZGF0YSk7CisJY29uLT5idWZmZXIuZGF0YSA9IE5VTEw7CiAKLQlmcmVl KGQtPmNvbnNwYXRoKTsKLQlkLT5jb25zcGF0aCA9IE5VTEw7CisJZnJlZShjb24tPmNvbnNwYXRo KTsKKwljb24tPmNvbnNwYXRoID0gTlVMTDsKIAogCXJlbW92ZV9kb21haW4oZCk7CiB9CkBAIC03 ODIsNyArNzk5LDggQEAgc3RhdGljIHZvaWQgZW51bV9kb21haW5zKHZvaWQpCiAKIHN0YXRpYyBp bnQgcmluZ19mcmVlX2J5dGVzKHN0cnVjdCBkb21haW4gKmRvbSkKIHsKLQlzdHJ1Y3QgeGVuY29u c19pbnRlcmZhY2UgKmludGYgPSBkb20tPmludGVyZmFjZTsKKwlzdHJ1Y3QgY29uc29sZSAqY29u ID0gJmRvbS0+Y29uc29sZTsKKwlzdHJ1Y3QgeGVuY29uc19pbnRlcmZhY2UgKmludGYgPSBjb24t PmludGVyZmFjZTsKIAlYRU5DT05TX1JJTkdfSURYIGNvbnMsIHByb2QsIHNwYWNlOwogCiAJY29u cyA9IGludGYtPmluX2NvbnM7CkBAIC04MTIsNyArODMwLDggQEAgc3RhdGljIHZvaWQgaGFuZGxl X3R0eV9yZWFkKHN0cnVjdCBkb21haW4gKmRvbSkKIAlzc2l6ZV90IGxlbiA9IDA7CiAJY2hhciBt c2dbODBdOwogCWludCBpOwotCXN0cnVjdCB4ZW5jb25zX2ludGVyZmFjZSAqaW50ZiA9IGRvbS0+ aW50ZXJmYWNlOworCXN0cnVjdCBjb25zb2xlICpjb24gPSAmZG9tLT5jb25zb2xlOworCXN0cnVj dCB4ZW5jb25zX2ludGVyZmFjZSAqaW50ZiA9IGNvbi0+aW50ZXJmYWNlOwogCVhFTkNPTlNfUklO R19JRFggcHJvZDsKIAogCWlmIChkb20tPmlzX2RlYWQpCkBAIC04MjUsNyArODQ0LDcgQEAgc3Rh dGljIHZvaWQgaGFuZGxlX3R0eV9yZWFkKHN0cnVjdCBkb21haW4gKmRvbSkKIAlpZiAobGVuID4g c2l6ZW9mKG1zZykpCiAJCWxlbiA9IHNpemVvZihtc2cpOwogCi0JbGVuID0gcmVhZChkb20tPm1h c3Rlcl9mZCwgbXNnLCBsZW4pOworCWxlbiA9IHJlYWQoY29uLT5tYXN0ZXJfZmQsIG1zZywgbGVu KTsKIAkvKgogCSAqIE5vdGU6IG9uIFNvbGFyaXMsIGxlbiA9PSAwIG1lYW5zIHRoZSBzbGF2ZSBj bG9zZWQsIGFuZCB0aGlzCiAJICogaXMgbm8gcHJvYmxlbSwgYnV0IExpbnV4IGNhbid0IGhhbmRs ZSB0aGlzIHVzZWZ1bGx5LCBzbyB3ZQpAQCAtODQxLDcgKzg2MCw3IEBAIHN0YXRpYyB2b2lkIGhh bmRsZV90dHlfcmVhZChzdHJ1Y3QgZG9tYWluICpkb20pCiAJCX0KIAkJeGVuX3dtYigpOwogCQlp bnRmLT5pbl9wcm9kID0gcHJvZDsKLQkJeGVuZXZ0Y2huX25vdGlmeShkb20tPnhjZV9oYW5kbGUs IGRvbS0+bG9jYWxfcG9ydCk7CisJCXhlbmV2dGNobl9ub3RpZnkoZG9tLT54Y2VfaGFuZGxlLCBj b24tPmxvY2FsX3BvcnQpOwogCX0gZWxzZSB7CiAJCWRvbWFpbl9jbG9zZV90dHkoZG9tKTsKIAkJ c2h1dGRvd25fZG9tYWluKGRvbSk7CkBAIC04NTEsMTggKzg3MCwxOSBAQCBzdGF0aWMgdm9pZCBo YW5kbGVfdHR5X3JlYWQoc3RydWN0IGRvbWFpbiAqZG9tKQogc3RhdGljIHZvaWQgaGFuZGxlX3R0 eV93cml0ZShzdHJ1Y3QgZG9tYWluICpkb20pCiB7CiAJc3NpemVfdCBsZW47CisJc3RydWN0IGNv bnNvbGUgKmNvbiA9ICZkb20tPmNvbnNvbGU7CiAKIAlpZiAoZG9tLT5pc19kZWFkKQogCQlyZXR1 cm47CiAKLQlsZW4gPSB3cml0ZShkb20tPm1hc3Rlcl9mZCwgZG9tLT5idWZmZXIuZGF0YSArIGRv bS0+YnVmZmVyLmNvbnN1bWVkLAotCQkgICAgZG9tLT5idWZmZXIuc2l6ZSAtIGRvbS0+YnVmZmVy LmNvbnN1bWVkKTsKKwlsZW4gPSB3cml0ZShjb24tPm1hc3Rlcl9mZCwgY29uLT5idWZmZXIuZGF0 YSArIGNvbi0+YnVmZmVyLmNvbnN1bWVkLAorCQkgICAgY29uLT5idWZmZXIuc2l6ZSAtIGNvbi0+ YnVmZmVyLmNvbnN1bWVkKTsKICAJaWYgKGxlbiA8IDEpIHsKIAkJZG9sb2coTE9HX0RFQlVHLCAi V3JpdGUgZmFpbGVkIG9uIGRvbWFpbiAlZDogJXpkLCAlZFxuIiwKIAkJICAgICAgZG9tLT5kb21p ZCwgbGVuLCBlcnJubyk7CiAJCWRvbWFpbl9oYW5kbGVfYnJva2VuX3R0eShkb20sIGRvbWFpbl9p c192YWxpZChkb20tPmRvbWlkKSk7CiAJfSBlbHNlIHsKLQkJYnVmZmVyX2FkdmFuY2UoJmRvbS0+ YnVmZmVyLCBsZW4pOworCQlidWZmZXJfYWR2YW5jZSgmY29uLT5idWZmZXIsIGxlbik7CiAJfQog fQogCkBAIC05NDgsOSArOTY4LDExIEBAIHN0YXRpYyB2b2lkIGhhbmRsZV9sb2dfcmVsb2FkKHZv aWQpCiAJaWYgKGxvZ19ndWVzdCkgewogCQlzdHJ1Y3QgZG9tYWluICpkOwogCQlmb3IgKGQgPSBk b21faGVhZDsgZDsgZCA9IGQtPm5leHQpIHsKLQkJCWlmIChkLT5sb2dfZmQgIT0gLTEpCi0JCQkJ Y2xvc2UoZC0+bG9nX2ZkKTsKLQkJCWQtPmxvZ19mZCA9IGNyZWF0ZV9kb21haW5fbG9nKGQpOwor CQkJc3RydWN0IGNvbnNvbGUgKmNvbiA9ICZkLT5jb25zb2xlOworCisJCQlpZiAoY29uLT5sb2df ZmQgIT0gLTEpCisJCQkJY2xvc2UoY29uLT5sb2dfZmQpOworCQkJY29uLT5sb2dfZmQgPSBjcmVh dGVfZG9tYWluX2xvZyhkKTsKIAkJfQogCX0KIApAQCAtMTA1OSw2ICsxMDgxLDggQEAgdm9pZCBo YW5kbGVfaW8odm9pZCkKIAkJLyogUmUtY2FsY3VsYXRlIGFueSBldmVudCBjb3VudGVyIGFsbG93 YW5jZXMgJiB1bmJsb2NrCiAJCSAgIGRvbWFpbnMgd2l0aCBuZXcgYWxsb3dhbmNlICovCiAJCWZv ciAoZCA9IGRvbV9oZWFkOyBkOyBkID0gZC0+bmV4dCkgeworCQkJc3RydWN0IGNvbnNvbGUgKmNv biA9ICZkLT5jb25zb2xlOworCiAJCQkvKiBDUyAxNjI1Nzo5NTVlZTRmYTEzNDUgaW50cm9kdWNl cyBhIDVtcyBmdXp6CiAJCQkgKiBmb3Igc2VsZWN0KCksIGl0IGlzIG5vdCBjbGVhciBwb2xsKCkg aGFzCiAJCQkgKiBzaW1pbGFyIGJlaGF2aW9yIChyZXR1cm5pbmcgYSBjb3VwbGUgb2YgbXMKQEAg LTEwNjgsMTMgKzEwOTIsMTUgQEAgdm9pZCBoYW5kbGVfaW8odm9pZCkKIAkJCWlmICgobm93KzUp ID4gZC0+bmV4dF9wZXJpb2QpIHsKIAkJCQlkLT5uZXh0X3BlcmlvZCA9IG5vdyArIFJBVEVfTElN SVRfUEVSSU9EOwogCQkJCWlmIChkLT5ldmVudF9jb3VudCA+PSBSQVRFX0xJTUlUX0FMTE9XQU5D RSkgewotCQkJCQkodm9pZCl4ZW5ldnRjaG5fdW5tYXNrKGQtPnhjZV9oYW5kbGUsIGQtPmxvY2Fs X3BvcnQpOworCQkJCQkodm9pZCl4ZW5ldnRjaG5fdW5tYXNrKGQtPnhjZV9oYW5kbGUsIGNvbi0+ bG9jYWxfcG9ydCk7CiAJCQkJfQogCQkJCWQtPmV2ZW50X2NvdW50ID0gMDsKIAkJCX0KIAkJfQog CiAJCWZvciAoZCA9IGRvbV9oZWFkOyBkOyBkID0gZC0+bmV4dCkgeworCQkJc3RydWN0IGNvbnNv bGUgKmNvbiA9ICZkLT5jb25zb2xlOworCiAJCQlpZiAoZC0+ZXZlbnRfY291bnQgPj0gUkFURV9M SU1JVF9BTExPV0FOQ0UpIHsKIAkJCQkvKiBEZXRlcm1pbmUgaWYgd2UncmUgZ29pbmcgdG8gYmUg dGhlIG5leHQgdGltZSBzbGljZSB0byBleHBpcmUgKi8KIAkJCQlpZiAoIW5leHRfdGltZW91dCB8 fApAQCAtMTA4MiwyNSArMTEwOCwyNSBAQCB2b2lkIGhhbmRsZV9pbyh2b2lkKQogCQkJCQluZXh0 X3RpbWVvdXQgPSBkLT5uZXh0X3BlcmlvZDsKIAkJCX0gZWxzZSBpZiAoZC0+eGNlX2hhbmRsZSAh PSBOVUxMKSB7CiAJCQkJaWYgKGRpc2NhcmRfb3ZlcmZsb3dlZF9kYXRhIHx8Ci0JCQkJICAgICFk LT5idWZmZXIubWF4X2NhcGFjaXR5IHx8Ci0JCQkJICAgIGQtPmJ1ZmZlci5zaXplIDwgZC0+YnVm ZmVyLm1heF9jYXBhY2l0eSkgeworCQkJCSAgICAhY29uLT5idWZmZXIubWF4X2NhcGFjaXR5IHx8 CisJCQkJICAgIGNvbi0+YnVmZmVyLnNpemUgPCBjb24tPmJ1ZmZlci5tYXhfY2FwYWNpdHkpIHsK IAkJCQkJaW50IGV2dGNobl9mZCA9IHhlbmV2dGNobl9mZChkLT54Y2VfaGFuZGxlKTsKIAkJCQkJ ZC0+eGNlX3BvbGxmZF9pZHggPSBzZXRfZmRzKGV2dGNobl9mZCwKIAkJCQkJCQkJICAgIFBPTExJ TnxQT0xMUFJJKTsKIAkJCQl9CiAJCQl9CiAKLQkJCWlmIChkLT5tYXN0ZXJfZmQgIT0gLTEpIHsK KwkJCWlmIChjb24tPm1hc3Rlcl9mZCAhPSAtMSkgewogCQkJCXNob3J0IGV2ZW50cyA9IDA7CiAJ CQkJaWYgKCFkLT5pc19kZWFkICYmIHJpbmdfZnJlZV9ieXRlcyhkKSkKIAkJCQkJZXZlbnRzIHw9 IFBPTExJTjsKIAotCQkJCWlmICghYnVmZmVyX2VtcHR5KCZkLT5idWZmZXIpKQorCQkJCWlmICgh YnVmZmVyX2VtcHR5KCZjb24tPmJ1ZmZlcikpCiAJCQkJCWV2ZW50cyB8PSBQT0xMT1VUOwogCiAJ CQkJaWYgKGV2ZW50cykKLQkJCQkJZC0+bWFzdGVyX3BvbGxmZF9pZHggPQotCQkJCQkJc2V0X2Zk cyhkLT5tYXN0ZXJfZmQsCisJCQkJCWNvbi0+bWFzdGVyX3BvbGxmZF9pZHggPQorCQkJCQkJc2V0 X2Zkcyhjb24tPm1hc3Rlcl9mZCwKIAkJCQkJCQlldmVudHN8UE9MTFBSSSk7CiAJCQl9CiAJCX0K QEAgLTExNTksNiArMTE4NSw4IEBAIHZvaWQgaGFuZGxlX2lvKHZvaWQpCiAJCX0KIAogCQlmb3Ig KGQgPSBkb21faGVhZDsgZDsgZCA9IG4pIHsKKwkJCXN0cnVjdCBjb25zb2xlICpjb24gPSAmZC0+ Y29uc29sZTsKKwogCQkJbiA9IGQtPm5leHQ7CiAJCQlpZiAoZC0+ZXZlbnRfY291bnQgPCBSQVRF X0xJTUlUX0FMTE9XQU5DRSkgewogCQkJCWlmIChkLT54Y2VfaGFuZGxlICE9IE5VTEwgJiYKQEAg LTExNzAsMjIgKzExOTgsMjIgQEAgdm9pZCBoYW5kbGVfaW8odm9pZCkKIAkJCQkgICAgaGFuZGxl X3JpbmdfcmVhZChkKTsKIAkJCX0KIAotCQkJaWYgKGQtPm1hc3Rlcl9mZCAhPSAtMSAmJiBkLT5t YXN0ZXJfcG9sbGZkX2lkeCAhPSAtMSkgewotCQkJCWlmIChmZHNbZC0+bWFzdGVyX3BvbGxmZF9p ZHhdLnJldmVudHMgJgorCQkJaWYgKGNvbi0+bWFzdGVyX2ZkICE9IC0xICYmIGNvbi0+bWFzdGVy X3BvbGxmZF9pZHggIT0gLTEpIHsKKwkJCQlpZiAoZmRzW2Nvbi0+bWFzdGVyX3BvbGxmZF9pZHhd LnJldmVudHMgJgogCQkJCSAgICB+KFBPTExJTnxQT0xMT1VUfFBPTExQUkkpKQogCQkJCQlkb21h aW5faGFuZGxlX2Jyb2tlbl90dHkoZCwKIAkJCQkJCSAgIGRvbWFpbl9pc192YWxpZChkLT5kb21p ZCkpOwogCQkJCWVsc2UgewotCQkJCQlpZiAoZmRzW2QtPm1hc3Rlcl9wb2xsZmRfaWR4XS5yZXZl bnRzICYKKwkJCQkJaWYgKGZkc1tjb24tPm1hc3Rlcl9wb2xsZmRfaWR4XS5yZXZlbnRzICYKIAkJ CQkJICAgIFBPTExJTikKIAkJCQkJCWhhbmRsZV90dHlfcmVhZChkKTsKLQkJCQkJaWYgKGZkc1tk LT5tYXN0ZXJfcG9sbGZkX2lkeF0ucmV2ZW50cyAmCisJCQkJCWlmIChmZHNbY29uLT5tYXN0ZXJf cG9sbGZkX2lkeF0ucmV2ZW50cyAmCiAJCQkJCSAgICBQT0xMT1VUKQogCQkJCQkJaGFuZGxlX3R0 eV93cml0ZShkKTsKIAkJCQl9CiAJCQl9CiAKLQkJCWQtPnhjZV9wb2xsZmRfaWR4ID0gZC0+bWFz dGVyX3BvbGxmZF9pZHggPSAtMTsKKwkJCWQtPnhjZV9wb2xsZmRfaWR4ID0gY29uLT5tYXN0ZXJf cG9sbGZkX2lkeCA9IC0xOwogCiAJCQlpZiAoZC0+bGFzdF9zZWVuICE9IGVudW1fcGFzcykKIAkJ CQlzaHV0ZG93bl9kb21haW4oZCk7Ci0tIAoyLjcuNAoKCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVs QGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=