From mboxrd@z Thu Jan 1 00:00:00 1970 From: George Dunlap Subject: [PATCH v4 08/12] fuzz/x86_emulate: Move all state into fuzz_state Date: Wed, 11 Oct 2017 18:52:39 +0100 Message-ID: <20171011175243.19871-8-george.dunlap@citrix.com> References: <20171011175243.19871-1-george.dunlap@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 1e2LBf-0000Zu-Vr for xen-devel@lists.xenproject.org; Wed, 11 Oct 2017 17:52:56 +0000 In-Reply-To: <20171011175243.19871-1-george.dunlap@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: Ian Jackson , Wei Liu , George Dunlap , Jan Beulich , Andrew Cooper List-Id: xen-devel@lists.xenproject.org QXQgdGhlIG1vbWVudCB3ZSBjb3B5IGRhdGEgZnJvbSB0aGUgaW5wdXQgaW50byBhIHN0cnVjdCBu YW1lZAonY29ycHVzJywgdGhlbiByZWFkIGFuZCB3cml0ZSB0aGlzIHN0YXRlIChzbyB0aGF0IGl0 IG5vIGxvbmdlcgpyZXNlbWJsZXMgdGhlIGNvcnB1cyB0aGF0IHdlIHJlYWQgZnJvbSkuCgpJbnN0 ZWFkLCBtb3ZlIGFsbCAiZW11bGF0ZWQgY3B1IiBzdGF0ZSBpbnRvIGZ1enpfc3RhdGUsIGFuZCBl eHBsaWNpdGx5CnN0YXRlIHRoYXQgd2UgYXJlIGV4cGVjdGluZyB0byBjaGFuZ2UgaXQuICBHZXQg cmlkIG9mICdpbnB1dCcsIGFuZAphbHdheXMgcmVhZCBkYXRhIGRpcmVjdGx5IGZyb20gdGhlIHBv aW50ZXIgcGFzc2VkIGludG8gdGhlIGZ1enplci4KClNpZ25lZC1vZmYtYnk6IEdlb3JnZSBEdW5s YXAgPGdlb3JnZS5kdW5sYXBAY2l0cml4LmNvbT4KLS0tCnY0OgogLSBSZXdvcmQgY29tbWl0IG1l c3NhZ2UgdG8gbWFrZSBpdCBjbGVhciBpdCdzIG5vdCBqdXN0IGFib3V0IHRoZSBjb21wYWN0IHN0 YXRlCiAtIEdldCByaWQgb2YgZnV6el9jb3JwdXMgZW50aXJlbHksIGFuZCBhdm9pZCB0aGUgdW5u ZWNlc3NhcnkgY29weQp2MzoKIC0gTW92ZSBEQVRBX09GRlNFVCBpbnNpZGUgdGhlIHN0cnVjdHVy ZQogLSBSZW1vdmUgYSBzdHJheSBibGFuayBsaW5lCnYyOiBQb3J0IG92ZXIgcHJldmlvdXMgY2hh bmdlcwoKQ0M6IElhbiBKYWNrc29uIDxpYW4uamFja3NvbkBjaXRyaXguY29tPgpDQzogV2VpIExp dSA8d2VpLmxpdTJAY2l0cml4LmNvbT4KQ0M6IEFuZHJldyBDb29wZXIgPGFuZHJldy5jb29wZXIz QGNpdHJpeC5jb20+CkNDOiBKYW4gQmV1bGljaCA8amJldWxpY2hAc3VzZS5jb20+Ci0tLQogdG9v bHMvZnV6ei94ODZfaW5zdHJ1Y3Rpb25fZW11bGF0b3IvZnV6ei1lbXVsLmMgfCAxMTQgKysrKysr KysrKystLS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgNTMgaW5zZXJ0aW9ucygrKSwgNjEg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvdG9vbHMvZnV6ei94ODZfaW5zdHJ1Y3Rpb25fZW11 bGF0b3IvZnV6ei1lbXVsLmMgYi90b29scy9mdXp6L3g4Nl9pbnN0cnVjdGlvbl9lbXVsYXRvci9m dXp6LWVtdWwuYwppbmRleCA5NjQ2ODJhYTFhLi40ZTM3NTFjZTUwIDEwMDY0NAotLS0gYS90b29s cy9mdXp6L3g4Nl9pbnN0cnVjdGlvbl9lbXVsYXRvci9mdXp6LWVtdWwuYworKysgYi90b29scy9m dXp6L3g4Nl9pbnN0cnVjdGlvbl9lbXVsYXRvci9mdXp6LWVtdWwuYwpAQCAtMjIsMzQgKzIyLDMx IEBACiAKICNkZWZpbmUgU0VHX05VTSB4ODZfc2VnX25vbmUKIAotLyogTGF5b3V0IG9mIGRhdGEg ZXhwZWN0ZWQgYXMgZnV6emluZyBpbnB1dC4gKi8KLXN0cnVjdCBmdXp6X2NvcnB1cworLyoKKyAq IFN0YXRlIG9mIHRoZSBmdXp6aW5nIGhhcm5lc3MgYW5kIGVtdWxhdGVkIGNwdS4gIENhbGN1bGF0 ZWQKKyAqIGluaXRpYWxseSBmcm9tIHRoZSBpbnB1dCBjb3JwdXMsIGFuZCBsYXRlciBtdXRhdGVk IGJ5IHRoZSBlbXVsYXRpb24KKyAqIGNhbGxiYWNrcyAoYW5kIHRoZSBlbXVsYXRvciBpdHNlbGYs IGluIHRoZSBjYXNlIG9mIHJlZ3MpLgorICovCitzdHJ1Y3QgZnV6el9zdGF0ZQogeworICAgIC8q IEVtdWxhdGVkIENQVSBzdGF0ZSAqLworICAgIHVuc2lnbmVkIGxvbmcgb3B0aW9uczsKICAgICB1 bnNpZ25lZCBsb25nIGNyWzVdOwogICAgIHVpbnQ2NF90IG1zcltNU1JfSU5ERVhfTUFYXTsKLSAg ICBzdHJ1Y3QgY3B1X3VzZXJfcmVncyByZWdzOwogICAgIHN0cnVjdCBzZWdtZW50X3JlZ2lzdGVy IHNlZ21lbnRzW1NFR19OVU1dOwotICAgIHVuc2lnbmVkIGxvbmcgb3B0aW9uczsKLSAgICB1bnNp Z25lZCBjaGFyIGRhdGFbSU5QVVRfU0laRV07Ci19IGlucHV0OwotI2RlZmluZSBEQVRBX09GRlNF VCBvZmZzZXRvZihzdHJ1Y3QgZnV6el9jb3JwdXMsIGRhdGEpCisgICAgc3RydWN0IGNwdV91c2Vy X3JlZ3MgcmVnczsKIAotLyoKLSAqIEludGVybmFsIHN0YXRlIG9mIHRoZSBmdXp6aW5nIGhhcm5l c3MuICBDYWxjdWxhdGVkIGluaXRpYWxseSBmcm9tIHRoZSBpbnB1dAotICogY29ycHVzLCBhbmQg bGF0ZXIgbXV0YXRlcyBieSB0aGUgZW11bGF0aW9uIGNhbGxiYWNrcy4KLSAqLwotc3RydWN0IGZ1 enpfc3RhdGUKLXsKICAgICAvKiBGdXp6ZXIncyBpbnB1dCBkYXRhLiAqLwotICAgIHN0cnVjdCBm dXp6X2NvcnB1cyAqY29ycHVzOworI2RlZmluZSBEQVRBX09GRlNFVCBvZmZzZXRvZihzdHJ1Y3Qg ZnV6el9zdGF0ZSwgY29ycHVzKQorICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKiBjb3JwdXM7CiAK LSAgICAvKiBSZWFsIGFtb3VudCBvZiBkYXRhIGJhY2tpbmcgY29ycHVzLT5kYXRhW10uICovCisg ICAgLyogUmVhbCBhbW91bnQgb2YgZGF0YSBiYWNraW5nIGNvcnB1c1tdLiAqLwogICAgIHNpemVf dCBkYXRhX251bTsKIAotICAgIC8qIEFtb3VudCBvZiBjb3JwdXMtPmRhdGFbXSBjb25zdW1lZCB0 aHVzIGZhci4gKi8KKyAgICAvKiBBbW91bnQgb2YgY29ycHVzW10gZGF0YSBjb25zdW1lZCB0aHVz IGZhci4gKi8KICAgICBzaXplX3QgZGF0YV9pbmRleDsKIAotICAgIC8qIEVtdWxhdGlvbiBvcHMs IHNvbWUgb2Ygd2hpY2ggYXJlIGRpc2FibGVkIGJhc2VkIG9uIGNvcnB1cy0+b3B0aW9ucy4gKi8K KyAgICAvKiBFbXVsYXRpb24gb3BzLCBzb21lIG9mIHdoaWNoIGFyZSBkaXNhYmxlZCBiYXNlZCBv biBvcHRpb25zLiAqLwogICAgIHN0cnVjdCB4ODZfZW11bGF0ZV9vcHMgb3BzOwogfTsKIApAQCAt NjMsNyArNjAsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaW5wdXRfcmVhZChzdHJ1Y3QgZnV6el9z dGF0ZSAqcywgdm9pZCAqZHN0LCBzaXplX3Qgc2l6ZSkKICAgICBpZiAoICFpbnB1dF9hdmFpbChz LCBzaXplKSApCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIG1lbWNweShkc3QsICZzLT5j b3JwdXMtPmRhdGFbcy0+ZGF0YV9pbmRleF0sIHNpemUpOworICAgIG1lbWNweShkc3QsICZzLT5j b3JwdXNbcy0+ZGF0YV9pbmRleF0sIHNpemUpOwogICAgIHMtPmRhdGFfaW5kZXggKz0gc2l6ZTsK IAogICAgIHJldHVybiB0cnVlOwpAQCAtMzkzLDExICszOTAsMTAgQEAgc3RhdGljIGludCBmdXp6 X3JlYWRfc2VnbWVudCgKICAgICBzdHJ1Y3QgeDg2X2VtdWxhdGVfY3R4dCAqY3R4dCkKIHsKICAg ICBjb25zdCBzdHJ1Y3QgZnV6el9zdGF0ZSAqcyA9IGN0eHQtPmRhdGE7Ci0gICAgY29uc3Qgc3Ry dWN0IGZ1enpfY29ycHVzICpjID0gcy0+Y29ycHVzOwogCiAgICAgYXNzZXJ0KGlzX3g4Nl91c2Vy X3NlZ21lbnQoc2VnKSB8fCBpc194ODZfc3lzdGVtX3NlZ21lbnQoc2VnKSk7CiAKLSAgICAqcmVn ID0gYy0+c2VnbWVudHNbc2VnXTsKKyAgICAqcmVnID0gcy0+c2VnbWVudHNbc2VnXTsKIAogICAg IHJldHVybiBYODZFTVVMX09LQVk7CiB9CkBAIC00MDgsNyArNDA0LDYgQEAgc3RhdGljIGludCBm dXp6X3dyaXRlX3NlZ21lbnQoCiAgICAgc3RydWN0IHg4Nl9lbXVsYXRlX2N0eHQgKmN0eHQpCiB7 CiAgICAgc3RydWN0IGZ1enpfc3RhdGUgKnMgPSBjdHh0LT5kYXRhOwotICAgIHN0cnVjdCBmdXp6 X2NvcnB1cyAqYyA9IHMtPmNvcnB1czsKICAgICBpbnQgcmM7CiAKICAgICBhc3NlcnQoaXNfeDg2 X3VzZXJfc2VnbWVudChzZWcpIHx8IGlzX3g4Nl9zeXN0ZW1fc2VnbWVudChzZWcpKTsKQEAgLTQx Niw3ICs0MTEsNyBAQCBzdGF0aWMgaW50IGZ1enpfd3JpdGVfc2VnbWVudCgKICAgICByYyA9IG1h eWJlX2ZhaWwoY3R4dCwgIndyaXRlX3NlZ21lbnQiLCB0cnVlKTsKIAogICAgIGlmICggcmMgPT0g WDg2RU1VTF9PS0FZICkKLSAgICAgICAgYy0+c2VnbWVudHNbc2VnXSA9ICpyZWc7CisgICAgICAg IHMtPnNlZ21lbnRzW3NlZ10gPSAqcmVnOwogCiAgICAgcmV0dXJuIHJjOwogfQpAQCAtNDI3LDEy ICs0MjIsMTEgQEAgc3RhdGljIGludCBmdXp6X3JlYWRfY3IoCiAgICAgc3RydWN0IHg4Nl9lbXVs YXRlX2N0eHQgKmN0eHQpCiB7CiAgICAgY29uc3Qgc3RydWN0IGZ1enpfc3RhdGUgKnMgPSBjdHh0 LT5kYXRhOwotICAgIGNvbnN0IHN0cnVjdCBmdXp6X2NvcnB1cyAqYyA9IHMtPmNvcnB1czsKIAot ICAgIGlmICggcmVnID49IEFSUkFZX1NJWkUoYy0+Y3IpICkKKyAgICBpZiAoIHJlZyA+PSBBUlJB WV9TSVpFKHMtPmNyKSApCiAgICAgICAgIHJldHVybiBYODZFTVVMX1VOSEFORExFQUJMRTsKIAot ICAgICp2YWwgPSBjLT5jcltyZWddOworICAgICp2YWwgPSBzLT5jcltyZWddOwogCiAgICAgcmV0 dXJuIFg4NkVNVUxfT0tBWTsKIH0KQEAgLTQ0MywxNyArNDM3LDE2IEBAIHN0YXRpYyBpbnQgZnV6 el93cml0ZV9jcigKICAgICBzdHJ1Y3QgeDg2X2VtdWxhdGVfY3R4dCAqY3R4dCkKIHsKICAgICBz dHJ1Y3QgZnV6el9zdGF0ZSAqcyA9IGN0eHQtPmRhdGE7Ci0gICAgc3RydWN0IGZ1enpfY29ycHVz ICpjID0gcy0+Y29ycHVzOwogICAgIGludCByYzsKIAotICAgIGlmICggcmVnID49IEFSUkFZX1NJ WkUoYy0+Y3IpICkKKyAgICBpZiAoIHJlZyA+PSBBUlJBWV9TSVpFKHMtPmNyKSApCiAgICAgICAg IHJldHVybiBYODZFTVVMX1VOSEFORExFQUJMRTsKIAogICAgIHJjID0gbWF5YmVfZmFpbChjdHh0 LCAid3JpdGVfY3IiLCB0cnVlKTsKICAgICBpZiAoIHJjICE9IFg4NkVNVUxfT0tBWSApCiAgICAg ICAgIHJldHVybiByYzsKIAotICAgIGMtPmNyW3JlZ10gPSB2YWw7CisgICAgcy0+Y3JbcmVnXSA9 IHZhbDsKIAogICAgIHJldHVybiBYODZFTVVMX09LQVk7CiB9CkBAIC00ODgsNyArNDgxLDYgQEAg c3RhdGljIGludCBmdXp6X3JlYWRfbXNyKAogICAgIHN0cnVjdCB4ODZfZW11bGF0ZV9jdHh0ICpj dHh0KQogewogICAgIGNvbnN0IHN0cnVjdCBmdXp6X3N0YXRlICpzID0gY3R4dC0+ZGF0YTsKLSAg ICBjb25zdCBzdHJ1Y3QgZnV6el9jb3JwdXMgKmMgPSBzLT5jb3JwdXM7CiAgICAgdW5zaWduZWQg aW50IGlkeDsKIAogICAgIHN3aXRjaCAoIHJlZyApCkBAIC01MDIsMTAgKzQ5NCwxMCBAQCBzdGF0 aWMgaW50IGZ1enpfcmVhZF9tc3IoCiAgICAgICAgICAqLwogICAgICAgICByZXR1cm4gZGF0YV9y ZWFkKGN0eHQsIHg4Nl9zZWdfbm9uZSwgInJlYWRfbXNyIiwgdmFsLCBzaXplb2YoKnZhbCkpOwog ICAgIGNhc2UgTVNSX0VGRVI6Ci0gICAgICAgICp2YWwgPSBjLT5tc3JbTVNSSV9FRkVSXTsKKyAg ICAgICAgKnZhbCA9IHMtPm1zcltNU1JJX0VGRVJdOwogICAgICAgICAqdmFsICY9IH5FRkVSX0xN QTsKLSAgICAgICAgaWYgKCAoKnZhbCAmIEVGRVJfTE1FKSAmJiAoYy0+Y3JbNF0gJiBYODZfQ1I0 X1BBRSkgJiYKLSAgICAgICAgICAgICAoYy0+Y3JbMF0gJiBYODZfQ1IwX1BHKSApCisgICAgICAg IGlmICggKCp2YWwgJiBFRkVSX0xNRSkgJiYgKHMtPmNyWzRdICYgWDg2X0NSNF9QQUUpICYmCisg ICAgICAgICAgICAgKHMtPmNyWzBdICYgWDg2X0NSMF9QRykgKQogICAgICAgICB7CiAgICAgICAg ICAgICBwcmludGYoIlNldHRpbmcgRUZFUl9MTUFcbiIpOwogICAgICAgICAgICAgKnZhbCB8PSBF RkVSX0xNQTsKQEAgLTUxNyw3ICs1MDksNyBAQCBzdGF0aWMgaW50IGZ1enpfcmVhZF9tc3IoCiAg ICAgewogICAgICAgICBpZiAoIG1zcl9pbmRleFtpZHhdID09IHJlZyApCiAgICAgICAgIHsKLSAg ICAgICAgICAgICp2YWwgPSBjLT5tc3JbaWR4XTsKKyAgICAgICAgICAgICp2YWwgPSBzLT5tc3Jb aWR4XTsKICAgICAgICAgICAgIHJldHVybiBYODZFTVVMX09LQVk7CiAgICAgICAgIH0KICAgICB9 CkBAIC01MzIsNyArNTI0LDYgQEAgc3RhdGljIGludCBmdXp6X3dyaXRlX21zcigKICAgICBzdHJ1 Y3QgeDg2X2VtdWxhdGVfY3R4dCAqY3R4dCkKIHsKICAgICBzdHJ1Y3QgZnV6el9zdGF0ZSAqcyA9 IGN0eHQtPmRhdGE7Ci0gICAgc3RydWN0IGZ1enpfY29ycHVzICpjID0gcy0+Y29ycHVzOwogICAg IHVuc2lnbmVkIGludCBpZHg7CiAgICAgaW50IHJjOwogCkBAIC01NTEsNyArNTQyLDcgQEAgc3Rh dGljIGludCBmdXp6X3dyaXRlX21zcigKICAgICB7CiAgICAgICAgIGlmICggbXNyX2luZGV4W2lk eF0gPT0gcmVnICkKICAgICAgICAgewotICAgICAgICAgICAgYy0+bXNyW2lkeF0gPSB2YWw7Cisg ICAgICAgICAgICBzLT5tc3JbaWR4XSA9IHZhbDsKICAgICAgICAgICAgIHJldHVybiBYODZFTVVM X09LQVk7CiAgICAgICAgIH0KICAgICB9CkBAIC02MDEsMTUgKzU5MiwxNCBAQCBzdGF0aWMgdm9p ZCBzZXR1cF9mcHVfZXhjZXB0aW9uX2hhbmRsZXIodm9pZCkKIHN0YXRpYyB2b2lkIGR1bXBfc3Rh dGUoc3RydWN0IHg4Nl9lbXVsYXRlX2N0eHQgKmN0eHQpCiB7CiAgICAgc3RydWN0IGZ1enpfc3Rh dGUgKnMgPSBjdHh0LT5kYXRhOwotICAgIGNvbnN0IHN0cnVjdCBmdXp6X2NvcnB1cyAqYyA9IHMt PmNvcnB1czsKICAgICBzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncyA9IGN0eHQtPnJlZ3M7CiAg ICAgdWludDY0X3QgdmFsID0gMDsKIAogICAgIHByaW50ZigiIC0tIFN0YXRlIC0tIFxuIik7CiAg ICAgcHJpbnRmKCJhZGRyIC8gc3Agc2l6ZTogJWQgLyAlZFxuIiwgY3R4dC0+YWRkcl9zaXplLCBj dHh0LT5zcF9zaXplKTsKLSAgICBwcmludGYoIiBjcjA6ICVseFxuIiwgYy0+Y3JbMF0pOwotICAg IHByaW50ZigiIGNyMzogJWx4XG4iLCBjLT5jclszXSk7Ci0gICAgcHJpbnRmKCIgY3I0OiAlbHhc biIsIGMtPmNyWzRdKTsKKyAgICBwcmludGYoIiBjcjA6ICVseFxuIiwgcy0+Y3JbMF0pOworICAg IHByaW50ZigiIGNyMzogJWx4XG4iLCBzLT5jclszXSk7CisgICAgcHJpbnRmKCIgY3I0OiAlbHhc biIsIHMtPmNyWzRdKTsKIAogICAgIHByaW50ZigiIHJpcDogJSJQUkl4NjQiXG4iLCByZWdzLT5y aXApOwogCkBAIC02MzAsMTUgKzYyMCwxMyBAQCBzdGF0aWMgYm9vbCBsb25nX21vZGVfYWN0aXZl KHN0cnVjdCB4ODZfZW11bGF0ZV9jdHh0ICpjdHh0KQogc3RhdGljIGJvb2wgaW5fbG9uZ21vZGUo c3RydWN0IHg4Nl9lbXVsYXRlX2N0eHQgKmN0eHQpCiB7CiAgICAgY29uc3Qgc3RydWN0IGZ1enpf c3RhdGUgKnMgPSBjdHh0LT5kYXRhOwotICAgIGNvbnN0IHN0cnVjdCBmdXp6X2NvcnB1cyAqYyA9 IHMtPmNvcnB1czsKIAotICAgIHJldHVybiBsb25nX21vZGVfYWN0aXZlKGN0eHQpICYmIGMtPnNl Z21lbnRzW3g4Nl9zZWdfY3NdLmw7CisgICAgcmV0dXJuIGxvbmdfbW9kZV9hY3RpdmUoY3R4dCkg JiYgcy0+c2VnbWVudHNbeDg2X3NlZ19jc10ubDsKIH0KIAogc3RhdGljIHZvaWQgc2V0X3NpemVz KHN0cnVjdCB4ODZfZW11bGF0ZV9jdHh0ICpjdHh0KQogewogICAgIHN0cnVjdCBmdXp6X3N0YXRl ICpzID0gY3R4dC0+ZGF0YTsKLSAgICBjb25zdCBzdHJ1Y3QgZnV6el9jb3JwdXMgKmMgPSBzLT5j b3JwdXM7CiAKICAgICBjdHh0LT5sbWEgPSBsb25nX21vZGVfYWN0aXZlKGN0eHQpOwogCkBAIC02 NDYsMTEgKzYzNCwyMCBAQCBzdGF0aWMgdm9pZCBzZXRfc2l6ZXMoc3RydWN0IHg4Nl9lbXVsYXRl X2N0eHQgKmN0eHQpCiAgICAgICAgIGN0eHQtPmFkZHJfc2l6ZSA9IGN0eHQtPnNwX3NpemUgPSA2 NDsKICAgICBlbHNlCiAgICAgewotICAgICAgICBjdHh0LT5hZGRyX3NpemUgPSBjLT5zZWdtZW50 c1t4ODZfc2VnX2NzXS5kYiA/IDMyIDogMTY7Ci0gICAgICAgIGN0eHQtPnNwX3NpemUgICA9IGMt PnNlZ21lbnRzW3g4Nl9zZWdfc3NdLmRiID8gMzIgOiAxNjsKKyAgICAgICAgY3R4dC0+YWRkcl9z aXplID0gcy0+c2VnbWVudHNbeDg2X3NlZ19jc10uZGIgPyAzMiA6IDE2OworICAgICAgICBjdHh0 LT5zcF9zaXplICAgPSBzLT5zZWdtZW50c1t4ODZfc2VnX3NzXS5kYiA/IDMyIDogMTY7CiAgICAg fQogfQogCitzdGF0aWMgdm9pZCBzZXR1cF9zdGF0ZShzdHJ1Y3QgeDg2X2VtdWxhdGVfY3R4dCAq Y3R4dCkKK3sKKyAgICBzdHJ1Y3QgZnV6el9zdGF0ZSAqcyA9IGN0eHQtPmRhdGE7CisKKyAgICAv KiBGdXp6IGFsbCBvZiB0aGUgZW11bGF0ZWQgc3RhdGUgaW4gb25lIGdvICovCisgICAgaWYgKCFp bnB1dF9yZWFkKHMsIHMsIERBVEFfT0ZGU0VUKSkKKyAgICAgICAgZXhpdCgtMSk7Cit9CisKICNk ZWZpbmUgQ0FOT05JQ0FMSVpFKHgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc CiAgICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXAogICAgICAgICB1aW50NjRfdCBfeSA9ICh4KTsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwKQEAgLTcxMCw4ICs3MDcsNyBAQCBlbnVtIHsKIHN0YXRpYyB2b2lkIGRpc2FibGVf aG9va3Moc3RydWN0IHg4Nl9lbXVsYXRlX2N0eHQgKmN0eHQpCiB7CiAgICAgc3RydWN0IGZ1enpf c3RhdGUgKnMgPSBjdHh0LT5kYXRhOwotICAgIGNvbnN0IHN0cnVjdCBmdXp6X2NvcnB1cyAqYyA9 IHMtPmNvcnB1czsKLSAgICB1bnNpZ25lZCBsb25nIGJpdG1hcCA9IGMtPm9wdGlvbnM7CisgICAg dW5zaWduZWQgbG9uZyBiaXRtYXAgPSBzLT5vcHRpb25zOwogCiAgICAgLyogU2VlIGFsc28gc2Fu aXRpemVfaW5wdXQsIHNvbWUgaG9va3MgY2FuJ3QgYmUgZGlzYWJsZWQuICovCiAgICAgTUFZQkVf RElTQUJMRV9IT09LKHJlYWQpOwpAQCAtNzYxLDEyICs3NTcsMTEgQEAgc3RhdGljIHZvaWQgZGlz YWJsZV9ob29rcyhzdHJ1Y3QgeDg2X2VtdWxhdGVfY3R4dCAqY3R4dCkKIHN0YXRpYyB2b2lkIHNh bml0aXplX2lucHV0KHN0cnVjdCB4ODZfZW11bGF0ZV9jdHh0ICpjdHh0KQogewogICAgIHN0cnVj dCBmdXp6X3N0YXRlICpzID0gY3R4dC0+ZGF0YTsKLSAgICBzdHJ1Y3QgZnV6el9jb3JwdXMgKmMg PSBzLT5jb3JwdXM7Ci0gICAgc3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3MgPSAmYy0+cmVnczsK LSAgICB1bnNpZ25lZCBsb25nIGJpdG1hcCA9IGMtPm9wdGlvbnM7CisgICAgc3RydWN0IGNwdV91 c2VyX3JlZ3MgKnJlZ3MgPSBjdHh0LT5yZWdzOworICAgIHVuc2lnbmVkIGxvbmcgYml0bWFwID0g cy0+b3B0aW9uczsKIAogICAgIC8qIFNvbWUgaG9va3MgY2FuJ3QgYmUgZGlzYWJsZWQuICovCi0g ICAgYy0+b3B0aW9ucyAmPSB+KCgxPDxIT09LX3JlYWQpfCgxPDxIT09LX2luc25fZmV0Y2gpKTsK KyAgICBzLT5vcHRpb25zICY9IH4oKDE8PEhPT0tfcmVhZCl8KDE8PEhPT0tfaW5zbl9mZXRjaCkp OwogCiAgICAgLyogWmVybyAncHJpdmF0ZScgZW50cmllcyAqLwogICAgIHJlZ3MtPmVycm9yX2Nv ZGUgPSAwOwpAQCAtNzgwLDggKzc3NSw4IEBAIHN0YXRpYyB2b2lkIHNhbml0aXplX2lucHV0KHN0 cnVjdCB4ODZfZW11bGF0ZV9jdHh0ICpjdHh0KQogICAgICAqIENSMC5QRyBjYW4ndCBiZSBzZXQg aWYgQ1IwLlBFIGlzbid0IHNldC4gIFNldCBpcyBtb3JlIGludGVyZXN0aW5nLCBzbwogICAgICAq IHNldCBQRSBpZiBQRyBpcyBzZXQuCiAgICAgICovCi0gICAgaWYgKCBjLT5jclswXSAmIFg4Nl9D UjBfUEcgKQotICAgICAgICBjLT5jclswXSB8PSBYODZfQ1IwX1BFOworICAgIGlmICggcy0+Y3Jb MF0gJiBYODZfQ1IwX1BHICkKKyAgICAgICAgcy0+Y3JbMF0gfD0gWDg2X0NSMF9QRTsKIAogICAg IC8qIEVGTEFHUy5WTSBub3QgYXZhaWxhYmxlIGluIGxvbmcgbW9kZSAqLwogICAgIGlmICggbG9u Z19tb2RlX2FjdGl2ZShjdHh0KSApCkBAIC03OTAsOCArNzg1LDggQEAgc3RhdGljIHZvaWQgc2Fu aXRpemVfaW5wdXQoc3RydWN0IHg4Nl9lbXVsYXRlX2N0eHQgKmN0eHQpCiAgICAgLyogRUZMQUdT LlZNIGltcGxpZXMgMTYtYml0IG1vZGUgKi8KICAgICBpZiAoIHJlZ3MtPnJmbGFncyAmIFg4Nl9F RkxBR1NfVk0gKQogICAgIHsKLSAgICAgICAgYy0+c2VnbWVudHNbeDg2X3NlZ19jc10uZGIgPSAw OwotICAgICAgICBjLT5zZWdtZW50c1t4ODZfc2VnX3NzXS5kYiA9IDA7CisgICAgICAgIHMtPnNl Z21lbnRzW3g4Nl9zZWdfY3NdLmRiID0gMDsKKyAgICAgICAgcy0+c2VnbWVudHNbeDg2X3NlZ19z c10uZGIgPSAwOwogICAgIH0KIH0KIApAQCAtODEzLDE1ICs4MDgsMTIgQEAgaW50IExMVk1GdXp6 ZXJUZXN0T25lSW5wdXQoY29uc3QgdWludDhfdCAqZGF0YV9wLCBzaXplX3Qgc2l6ZSkKICAgICB9 OwogICAgIHN0cnVjdCB4ODZfZW11bGF0ZV9jdHh0IGN0eHQgPSB7CiAgICAgICAgIC5kYXRhID0g JnN0YXRlLAotICAgICAgICAucmVncyA9ICZpbnB1dC5yZWdzLAorICAgICAgICAucmVncyA9ICZz dGF0ZS5yZWdzLAogICAgICAgICAuYWRkcl9zaXplID0gOCAqIHNpemVvZih2b2lkICopLAogICAg ICAgICAuc3Bfc2l6ZSA9IDggKiBzaXplb2Yodm9pZCAqKSwKICAgICB9OwogICAgIGludCByYzsK IAotICAgIC8qIFJlc2V0IGFsbCBnbG9iYWwgc3RhdGUgdmFyaWFibGVzICovCi0gICAgbWVtc2V0 KCZpbnB1dCwgMCwgc2l6ZW9mKGlucHV0KSk7Ci0KICAgICBpZiAoIHNpemUgPD0gREFUQV9PRkZT RVQgKQogICAgIHsKICAgICAgICAgcHJpbnRmKCJJbnB1dCB0b28gc21hbGxcbiIpOwpAQCAtODM0 LDEwICs4MjYsMTAgQEAgaW50IExMVk1GdXp6ZXJUZXN0T25lSW5wdXQoY29uc3QgdWludDhfdCAq ZGF0YV9wLCBzaXplX3Qgc2l6ZSkKICAgICAgICAgcmV0dXJuIDE7CiAgICAgfQogCi0gICAgbWVt Y3B5KCZpbnB1dCwgZGF0YV9wLCBzaXplKTsKKyAgICBzdGF0ZS5jb3JwdXMgPSAodm9pZCopZGF0 YV9wOworICAgIHN0YXRlLmRhdGFfbnVtID0gc2l6ZTsKIAotICAgIHN0YXRlLmNvcnB1cyA9ICZp bnB1dDsKLSAgICBzdGF0ZS5kYXRhX251bSA9IHNpemUgLSBEQVRBX09GRlNFVDsKKyAgICBzZXR1 cF9zdGF0ZSgmY3R4dCk7CiAKICAgICBzYW5pdGl6ZV9pbnB1dCgmY3R4dCk7CiAKLS0gCjIuMTQu MgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1k ZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54 ZW4ub3JnL3hlbi1kZXZlbAo=