From mboxrd@z Thu Jan 1 00:00:00 1970 From: Wei Liu Subject: [PATCH v2 18/18] x86: clean up traps.c Date: Fri, 5 May 2017 15:48:36 +0100 Message-ID: <20170505144836.8612-19-wei.liu2@citrix.com> References: <20170505144836.8612-1-wei.liu2@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta3.messagelabs.com ([195.245.230.39]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1d6eyd-0004OH-Tg for xen-devel@lists.xenproject.org; Fri, 05 May 2017 15:17:04 +0000 In-Reply-To: <20170505144836.8612-1-wei.liu2@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Xen-devel Cc: Andrew Cooper , Wei Liu , Jan Beulich List-Id: xen-devel@lists.xenproject.org UmVwbGFjZSBib29sX3Qgd2l0aCBib29sLiBEZWxldGUgdHJhaWxpbmcgd2hpdGUgc3BhY2VzLiBG aXggc29tZSBjb2RpbmcKc3R5bGUgaXNzdWVzLgoKTm8gZnVuY3Rpb25hbCBjaGFuZ2UuCgpTaWdu ZWQtb2ZmLWJ5OiBXZWkgTGl1IDx3ZWkubGl1MkBjaXRyaXguY29tPgotLS0KIHhlbi9hcmNoL3g4 Ni90cmFwcy5jIHwgNzcgKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDQwIGluc2VydGlvbnMoKyksIDM3IGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni90cmFwcy5jIGIveGVuL2FyY2gveDg2L3Ry YXBzLmMKaW5kZXggYzBkNWI4OWIxMy4uZjNmOTY0YzQ2OSAxMDA2NDQKLS0tIGEveGVuL2FyY2gv eDg2L3RyYXBzLmMKKysrIGIveGVuL2FyY2gveDg2L3RyYXBzLmMKQEAgLTEsMTggKzEsMTggQEAK IC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioKICAqIGFyY2gveDg2L3RyYXBzLmMKLSAqIAorICoKICAq IE1vZGlmaWNhdGlvbnMgdG8gTGludXggb3JpZ2luYWwgYXJlIGNvcHlyaWdodCAoYykgMjAwMi0y MDA0LCBLIEEgRnJhc2VyCi0gKiAKKyAqCiAgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2Fy ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogICogaXQgdW5kZXIgdGhl IHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkK ICAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhl IExpY2Vuc2UsIG9yCiAgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICog CisgKgogICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg d2lsbCBiZSB1c2VmdWwsCiAgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQogICogR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqIAorICoKICAqIFlvdSBzaG91bGQgaGF2ZSBy ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiAgKiBhbG9u ZyB3aXRoIHRoaXMgcHJvZ3JhbTsgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNl bnNlcy8+LgogICovCkBAIC0xMTIsNyArMTEyLDcgQEAgdm9pZCAoKmlvZW11bF9oYW5kbGVfcXVp cmspKAogc3RhdGljIGludCBkZWJ1Z19zdGFja19saW5lcyA9IDIwOwogaW50ZWdlcl9wYXJhbSgi ZGVidWdfc3RhY2tfbGluZXMiLCBkZWJ1Z19zdGFja19saW5lcyk7CiAKLXN0YXRpYyBib29sX3Qg b3B0X2xlcjsKK3N0YXRpYyBib29sIG9wdF9sZXI7CiBib29sZWFuX3BhcmFtKCJsZXIiLCBvcHRf bGVyKTsKIAogI2RlZmluZSBzdGFja193b3Jkc19wZXJfbGluZSA0CkBAIC01MjcsNyArNTI3LDcg QEAgdm9pZCB2Y3B1X3Nob3dfZXhlY3V0aW9uX3N0YXRlKHN0cnVjdCB2Y3B1ICp2KQogfQogCiBz dGF0aWMgY3B1bWFza190IHNob3dfc3RhdGVfbWFzazsKLXN0YXRpYyBib29sX3Qgb3B0X3Nob3df YWxsOworc3RhdGljIGJvb2wgb3B0X3Nob3dfYWxsOwogYm9vbGVhbl9wYXJhbSgiYXN5bmMtc2hv dy1hbGwiLCBvcHRfc2hvd19hbGwpOwogCiBzdGF0aWMgaW50IG5taV9zaG93X2V4ZWN1dGlvbl9z dGF0ZShjb25zdCBzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncywgaW50IGNwdSkKQEAgLTUzOCw4 ICs1MzgsOCBAQCBzdGF0aWMgaW50IG5taV9zaG93X2V4ZWN1dGlvbl9zdGF0ZShjb25zdCBzdHJ1 Y3QgY3B1X3VzZXJfcmVncyAqcmVncywgaW50IGNwdSkKICAgICBpZiAoIG9wdF9zaG93X2FsbCAp CiAgICAgICAgIHNob3dfZXhlY3V0aW9uX3N0YXRlKHJlZ3MpOwogICAgIGVsc2UKLSAgICAgICAg cHJpbnRrKFhFTkxPR19FUlIgIkNQVSVkIEAgJTA0eDolMDhseCAoJXBTKVxuIiwgY3B1LCByZWdz LT5jcywgcmVncy0+cmlwLAotICAgICAgICAgICAgICAgZ3Vlc3RfbW9kZShyZWdzKSA/IF9wKHJl Z3MtPnJpcCkgOiBOVUxMKTsKKyAgICAgICAgcHJpbnRrKFhFTkxPR19FUlIgIkNQVSVkIEAgJTA0 eDolMDhseCAoJXBTKVxuIiwgY3B1LCByZWdzLT5jcywKKyAgICAgICAgICAgICAgIHJlZ3MtPnJp cCwgZ3Vlc3RfbW9kZShyZWdzKSA/IF9wKHJlZ3MtPnJpcCkgOiBOVUxMKTsKICAgICBjcHVtYXNr X2NsZWFyX2NwdShjcHUsICZzaG93X3N0YXRlX21hc2spOwogCiAgICAgcmV0dXJuIDE7CkBAIC01 NjQsNyArNTY0LDcgQEAgY29uc3QgY2hhciAqdHJhcHN0cih1bnNpZ25lZCBpbnQgdHJhcG5yKQog ICogYXJlIGRpc2FibGVkKS4gSW4gc3VjaCBzaXR1YXRpb25zIHdlIGNhbid0IGRvIG11Y2ggdGhh dCBpcyBzYWZlLiBXZSB0cnkgdG8KICAqIHByaW50IG91dCBzb21lIHRyYWNpbmcgYW5kIHRoZW4g d2UganVzdCBzcGluLgogICovCi12b2lkIGZhdGFsX3RyYXAoY29uc3Qgc3RydWN0IGNwdV91c2Vy X3JlZ3MgKnJlZ3MsIGJvb2xfdCBzaG93X3JlbW90ZSkKK3ZvaWQgZmF0YWxfdHJhcChjb25zdCBz dHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncywgYm9vbCBzaG93X3JlbW90ZSkKIHsKICAgICBzdGF0 aWMgREVGSU5FX1BFUl9DUFUoY2hhciwgZGVwdGgpOwogICAgIHVuc2lnbmVkIGludCB0cmFwbnIg PSByZWdzLT5lbnRyeV92ZWN0b3I7CkBAIC0xMDEzLDggKzEwMTMsOCBAQCB2b2lkIGRvX2ludDMo c3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3MpCiAgICAgcHZfaW5qZWN0X3RyYXAoVFJBUF9pbnQz LCByZWdzKTsKIH0KIAotc3RhdGljIHZvaWQgcmVzZXJ2ZWRfYml0X3BhZ2VfZmF1bHQoCi0gICAg dW5zaWduZWQgbG9uZyBhZGRyLCBzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncykKK3N0YXRpYyB2 b2lkIHJlc2VydmVkX2JpdF9wYWdlX2ZhdWx0KHVuc2lnbmVkIGxvbmcgYWRkciwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdzKQog ewogICAgIHByaW50aygiJXB2OiByZXNlcnZlZCBiaXQgaW4gcGFnZSB0YWJsZSAoZWM9JTA0WClc biIsCiAgICAgICAgICAgIGN1cnJlbnQsIHJlZ3MtPmVycm9yX2NvZGUpOwpAQCAtMTAyMiw4ICsx MDIyLDggQEAgc3RhdGljIHZvaWQgcmVzZXJ2ZWRfYml0X3BhZ2VfZmF1bHQoCiAgICAgc2hvd19l eGVjdXRpb25fc3RhdGUocmVncyk7CiB9CiAKLXN0YXRpYyBpbnQgaGFuZGxlX2dkdF9sZHRfbWFw cGluZ19mYXVsdCgKLSAgICB1bnNpZ25lZCBsb25nIG9mZnNldCwgc3RydWN0IGNwdV91c2VyX3Jl Z3MgKnJlZ3MpCitzdGF0aWMgaW50IGhhbmRsZV9nZHRfbGR0X21hcHBpbmdfZmF1bHQodW5zaWdu ZWQgbG9uZyBvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg c3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3MpCiB7CiAgICAgc3RydWN0IHZjcHUgKmN1cnIgPSBj dXJyZW50OwogICAgIC8qIFdoaWNoIHZjcHUncyBhcmVhIGRpZCB3ZSBmYXVsdCBpbiwgYW5kIGlz IGl0IGluIHRoZSBsZHQgc3ViLWFyZWE/ICovCkBAIC0xMDkxLDggKzEwOTEsOCBAQCBlbnVtIHBm X3R5cGUgewogICAgIHNwdXJpb3VzX2ZhdWx0CiB9OwogCi1zdGF0aWMgZW51bSBwZl90eXBlIF9f cGFnZV9mYXVsdF90eXBlKAotICAgIHVuc2lnbmVkIGxvbmcgYWRkciwgY29uc3Qgc3RydWN0IGNw dV91c2VyX3JlZ3MgKnJlZ3MpCitzdGF0aWMgZW51bSBwZl90eXBlIF9fcGFnZV9mYXVsdF90eXBl KHVuc2lnbmVkIGxvbmcgYWRkciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29uc3Qgc3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3MpCiB7CiAgICAgdW5zaWduZWQgbG9u ZyBtZm4sIGNyMyA9IHJlYWRfY3IzKCk7CiAgICAgbDRfcGdlbnRyeV90IGw0ZSwgKmw0dDsKQEAg LTExOTgsOCArMTE5OCw4IEBAIGxlYWY6CiAgICAgcmV0dXJuIHNwdXJpb3VzX2ZhdWx0OwogfQog Ci1zdGF0aWMgZW51bSBwZl90eXBlIHNwdXJpb3VzX3BhZ2VfZmF1bHQoCi0gICAgdW5zaWduZWQg bG9uZyBhZGRyLCBjb25zdCBzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncykKK3N0YXRpYyBlbnVt IHBmX3R5cGUgc3B1cmlvdXNfcGFnZV9mYXVsdCh1bnNpZ25lZCBsb25nIGFkZHIsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGNwdV91c2VyX3Jl Z3MgKnJlZ3MpCiB7CiAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKICAgICBlbnVtIHBmX3R5cGUg cGZfdHlwZTsKQEAgLTEzMDgsNyArMTMwOCw4IEBAIHZvaWQgZG9fcGFnZV9mYXVsdChzdHJ1Y3Qg Y3B1X3VzZXJfcmVncyAqcmVncykKICAgICAgICAgaWYgKCAocGZfdHlwZSA9PSBzbWVwX2ZhdWx0 KSB8fCAocGZfdHlwZSA9PSBzbWFwX2ZhdWx0KSApCiAgICAgICAgIHsKICAgICAgICAgICAgIGNv bnNvbGVfc3RhcnRfc3luYygpOwotICAgICAgICAgICAgcHJpbnRrKCJYZW4gU00lY1AgdmlvbGF0 aW9uXG4iLCAocGZfdHlwZSA9PSBzbWVwX2ZhdWx0KSA/ICdFJyA6ICdBJyk7CisgICAgICAgICAg ICBwcmludGsoIlhlbiBTTSVjUCB2aW9sYXRpb25cbiIsCisgICAgICAgICAgICAgICAgICAgKHBm X3R5cGUgPT0gc21lcF9mYXVsdCkgPyAnRScgOiAnQScpOwogICAgICAgICAgICAgZmF0YWxfdHJh cChyZWdzLCAwKTsKICAgICAgICAgfQogCkBAIC0xMzU4LDkgKzEzNTksOSBAQCB2b2lkIGRvX3Bh Z2VfZmF1bHQoc3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3MpCiAKIC8qCiAgKiBFYXJseSAjUEYg aGFuZGxlciB0byBwcmludCBDUjIsIGVycm9yIGNvZGUsIGFuZCBzdGFjay4KLSAqIAorICoKICAq IFdlIGFsc28gZGVhbCB3aXRoIHNwdXJpb3VzIGZhdWx0cyBoZXJlLCBldmVuIHRob3VnaCB0aGV5 IHNob3VsZCBuZXZlciBoYXBwZW4KLSAqIGR1cmluZyBlYXJseSBib290IChhbiBpc3N1ZSB3YXMg c2VlbiBvbmNlLCBidXQgd2FzIG1vc3QgbGlrZWx5IGEgaGFyZHdhcmUgCisgKiBkdXJpbmcgZWFy bHkgYm9vdCAoYW4gaXNzdWUgd2FzIHNlZW4gb25jZSwgYnV0IHdhcyBtb3N0IGxpa2VseSBhIGhh cmR3YXJlCiAgKiBwcm9ibGVtKS4KICAqLwogdm9pZCBfX2luaXQgZG9fZWFybHlfcGFnZV9mYXVs dChzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncykKQEAgLTE0MDQsNyArMTQwNSw3IEBAIHZvaWQg ZG9fZ2VuZXJhbF9wcm90ZWN0aW9uKHN0cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdzKQogCiAgICAg LyoKICAgICAgKiBDdW5uaW5nIHRyaWNrIHRvIGFsbG93IGFyYml0cmFyeSAiSU5UIG4iIGhhbmRs aW5nLgotICAgICAqIAorICAgICAqCiAgICAgICogV2Ugc2V0IERQTCA9PSAwIG9uIGFsbCB2ZWN0 b3JzIGluIHRoZSBJRFQuIFRoaXMgcHJldmVudHMgYW55IElOVCA8bj4KICAgICAgKiBpbnN0cnVj dGlvbiBmcm9tIHRyYXBwaW5nIHRvIHRoZSBhcHByb3ByaWF0ZSB2ZWN0b3IsIHdoZW4gdGhhdCBt aWdodCBub3QKICAgICAgKiBiZSBleHBlY3RlZCBieSBYZW4gb3IgdGhlIGd1ZXN0IE9TLiBGb3Ig ZXhhbXBsZSwgdGhhdCBlbnRyeSBtaWdodCBiZSBmb3IKQEAgLTE0MTIsMTIgKzE0MTMsMTIgQEAg dm9pZCBkb19nZW5lcmFsX3Byb3RlY3Rpb24oc3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3MpCiAg ICAgICogZXhwZWN0IGFuIGVycm9yIGNvZGUgb24gdGhlIHN0YWNrICh3aGljaCBhIHNvZnR3YXJl IHRyYXAgbmV2ZXIKICAgICAgKiBwcm92aWRlcyksIG9yIG1pZ2h0IGJlIGEgaGFyZHdhcmUgaW50 ZXJydXB0IGhhbmRsZXIgdGhhdCBkb2Vzbid0IGxpa2UKICAgICAgKiBiZWluZyBjYWxsZWQgc3B1 cmlvdXNseS4KLSAgICAgKiAKKyAgICAgKgogICAgICAqIEluc3RlYWQsIGEgR1BGIG9jY3VycyB3 aXRoIHRoZSBmYXVsdGluZyBJRFQgdmVjdG9yIGluIHRoZSBlcnJvciBjb2RlLgotICAgICAqIEJp dCAxIGlzIHNldCB0byBpbmRpY2F0ZSB0aGF0IGFuIElEVCBlbnRyeSBjYXVzZWQgdGhlIGZhdWx0 LiBCaXQgMCBpcyAKKyAgICAgKiBCaXQgMSBpcyBzZXQgdG8gaW5kaWNhdGUgdGhhdCBhbiBJRFQg ZW50cnkgY2F1c2VkIHRoZSBmYXVsdC4gQml0IDAgaXMKICAgICAgKiBjbGVhciAod2hpY2ggZ290 IGFscmVhZHkgY2hlY2tlZCBhYm92ZSkgdG8gaW5kaWNhdGUgdGhhdCBpdCdzIGEgc29mdHdhcmUK ICAgICAgKiBmYXVsdCwgbm90IGEgaGFyZHdhcmUgb25lLgotICAgICAqIAorICAgICAqCiAgICAg ICogTk9URTogVmVjdG9ycyAzIGFuZCA0IGFyZSBkZWFsdCB3aXRoIGZyb20gdGhlaXIgb3duIGhh bmRsZXIuIFRoaXMgaXMKICAgICAgKiBva2F5IGJlY2F1c2UgdGhleSBjYW4gb25seSBiZSB0cmln Z2VyZWQgYnkgYW4gZXhwbGljaXQgRFBMLWNoZWNrZWQKICAgICAgKiBpbnN0cnVjdGlvbi4gVGhl IERQTCBzcGVjaWZpZWQgYnkgdGhlIGd1ZXN0IE9TIGZvciB0aGVzZSB2ZWN0b3JzIGlzIE5PVApA QCAtMTU5Niw3ICsxNTk3LDggQEAgc3RhdGljIHZvaWQgaW9fY2hlY2tfZXJyb3IoY29uc3Qgc3Ry dWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3MpCiAgICAgb3V0YigoaW5iKDB4NjEpICYgMHgwNykgfCAw eDAwLCAweDYxKTsgLyogZW5hYmxlIElPQ0sgKi8KIH0KIAotc3RhdGljIHZvaWQgdW5rbm93bl9u bWlfZXJyb3IoY29uc3Qgc3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3MsIHVuc2lnbmVkIGNoYXIg cmVhc29uKQorc3RhdGljIHZvaWQgdW5rbm93bl9ubWlfZXJyb3IoY29uc3Qgc3RydWN0IGNwdV91 c2VyX3JlZ3MgKnJlZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBj aGFyIHJlYXNvbikKIHsKICAgICBzd2l0Y2ggKCBvcHRfbm1pWzBdICkKICAgICB7CkBAIC0xNjE2 LDE0ICsxNjE4LDE0IEBAIHN0YXRpYyBpbnQgZHVtbXlfbm1pX2NhbGxiYWNrKGNvbnN0IHN0cnVj dCBjcHVfdXNlcl9yZWdzICpyZWdzLCBpbnQgY3B1KQogewogICAgIHJldHVybiAwOwogfQotIAor CiBzdGF0aWMgbm1pX2NhbGxiYWNrX3QgKm5taV9jYWxsYmFjayA9IGR1bW15X25taV9jYWxsYmFj azsKIAogdm9pZCBkb19ubWkoY29uc3Qgc3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3MpCiB7CiAg ICAgdW5zaWduZWQgaW50IGNwdSA9IHNtcF9wcm9jZXNzb3JfaWQoKTsKICAgICB1bnNpZ25lZCBj aGFyIHJlYXNvbjsKLSAgICBib29sX3QgaGFuZGxlX3Vua25vd24gPSAwOworICAgIGJvb2wgaGFu ZGxlX3Vua25vd24gPSBmYWxzZTsKIAogICAgICsrbm1pX2NvdW50KGNwdSk7CiAKQEAgLTE2MzIs NyArMTYzNCw3IEBAIHZvaWQgZG9fbm1pKGNvbnN0IHN0cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdz KQogCiAgICAgaWYgKCAobm1pX3dhdGNoZG9nID09IE5NSV9OT05FKSB8fAogICAgICAgICAgKCFu bWlfd2F0Y2hkb2dfdGljayhyZWdzKSAmJiB3YXRjaGRvZ19mb3JjZSkgKQotICAgICAgICBoYW5k bGVfdW5rbm93biA9IDE7CisgICAgICAgIGhhbmRsZV91bmtub3duID0gdHJ1ZTsKIAogICAgIC8q IE9ubHkgdGhlIEJTUCBnZXRzIGV4dGVybmFsIE5NSXMgZnJvbSB0aGUgc3lzdGVtLiAqLwogICAg IGlmICggY3B1ID09IDAgKQpAQCAtMTc1Miw3ICsxNzU0LDggQEAgdm9pZCBkb19kZWJ1ZyhzdHJ1 Y3QgY3B1X3VzZXJfcmVncyAqcmVncykKICAgICByZXR1cm47CiB9CiAKLXN0YXRpYyB2b2lkIF9f aW5pdCBub2lubGluZSBfX3NldF9pbnRyX2dhdGUodW5zaWduZWQgaW50IG4sIHVpbnQzMl90IGRw bCwgdm9pZCAqYWRkcikKK3N0YXRpYyB2b2lkIF9faW5pdCBub2lubGluZSBfX3NldF9pbnRyX2dh dGUodW5zaWduZWQgaW50IG4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHVpbnQzMl90IGRwbCwgdm9pZCAqYWRkcikKIHsKICAgICBfc2V0X2dhdGUoJmlkdF90 YWJsZVtuXSwgU1lTX0RFU0NfaXJxX2dhdGUsIGRwbCwgYWRkcik7CiB9CkBAIC0xOTM5LDI4ICsx OTQyLDI4IEBAIGxvbmcgc2V0X2RlYnVncmVnKHN0cnVjdCB2Y3B1ICp2LCB1bnNpZ25lZCBpbnQg cmVnLCB1bnNpZ25lZCBsb25nIHZhbHVlKQogCiAgICAgc3dpdGNoICggcmVnICkKICAgICB7Ci0g ICAgY2FzZSAwOiAKKyAgICBjYXNlIDA6CiAgICAgICAgIGlmICggIWFjY2Vzc19vayh2YWx1ZSwg c2l6ZW9mKGxvbmcpKSApCiAgICAgICAgICAgICByZXR1cm4gLUVQRVJNOwotICAgICAgICBpZiAo IHYgPT0gY3VyciApIAorICAgICAgICBpZiAoIHYgPT0gY3VyciApCiAgICAgICAgICAgICB3cml0 ZV9kZWJ1Z3JlZygwLCB2YWx1ZSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgMTogCisgICAg Y2FzZSAxOgogICAgICAgICBpZiAoICFhY2Nlc3Nfb2sodmFsdWUsIHNpemVvZihsb25nKSkgKQog ICAgICAgICAgICAgcmV0dXJuIC1FUEVSTTsKLSAgICAgICAgaWYgKCB2ID09IGN1cnIgKSAKKyAg ICAgICAgaWYgKCB2ID09IGN1cnIgKQogICAgICAgICAgICAgd3JpdGVfZGVidWdyZWcoMSwgdmFs dWUpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIDI6IAorICAgIGNhc2UgMjoKICAgICAgICAg aWYgKCAhYWNjZXNzX29rKHZhbHVlLCBzaXplb2YobG9uZykpICkKICAgICAgICAgICAgIHJldHVy biAtRVBFUk07Ci0gICAgICAgIGlmICggdiA9PSBjdXJyICkgCisgICAgICAgIGlmICggdiA9PSBj dXJyICkKICAgICAgICAgICAgIHdyaXRlX2RlYnVncmVnKDIsIHZhbHVlKTsKICAgICAgICAgYnJl YWs7CiAgICAgY2FzZSAzOgogICAgICAgICBpZiAoICFhY2Nlc3Nfb2sodmFsdWUsIHNpemVvZihs b25nKSkgKQogICAgICAgICAgICAgcmV0dXJuIC1FUEVSTTsKLSAgICAgICAgaWYgKCB2ID09IGN1 cnIgKSAKKyAgICAgICAgaWYgKCB2ID09IGN1cnIgKQogICAgICAgICAgICAgd3JpdGVfZGVidWdy ZWcoMywgdmFsdWUpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIDY6CkBAIC0xOTcwLDcgKzE5 NzMsNyBAQCBsb25nIHNldF9kZWJ1Z3JlZyhzdHJ1Y3QgdmNwdSAqdiwgdW5zaWduZWQgaW50IHJl ZywgdW5zaWduZWQgbG9uZyB2YWx1ZSkKICAgICAgICAgICovCiAgICAgICAgIHZhbHVlICY9IH5E Ul9TVEFUVVNfUkVTRVJWRURfWkVSTzsgLyogcmVzZXJ2ZWQgYml0cyA9PiAwICovCiAgICAgICAg IHZhbHVlIHw9ICBEUl9TVEFUVVNfUkVTRVJWRURfT05FOyAgLyogcmVzZXJ2ZWQgYml0cyA9PiAx ICovCi0gICAgICAgIGlmICggdiA9PSBjdXJyICkgCisgICAgICAgIGlmICggdiA9PSBjdXJyICkK ICAgICAgICAgICAgIHdyaXRlX2RlYnVncmVnKDYsIHZhbHVlKTsKICAgICAgICAgYnJlYWs7CiAg ICAgY2FzZSA3OgotLSAKMi4xMS4wCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVu Lm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==