From mboxrd@z Thu Jan 1 00:00:00 1970 From: George Dunlap Subject: [PATCH v3 11/12] fuzz/x86_emulate: Set and fuzz more CPU state Date: Tue, 10 Oct 2017 17:20:10 +0100 Message-ID: <20171010162011.9629-11-george.dunlap@citrix.com> References: <20171010162011.9629-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.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1e229R-0000x2-OW for xen-devel@lists.xenproject.org; Tue, 10 Oct 2017 21:33:21 +0000 In-Reply-To: <20171010162011.9629-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 eDg2X2VtdWxhdGUoKSBvcGVyYXRlcyBub3Qgb25seSBvbiBzdGF0ZSBwYXNzZWQgdG8gaXQgaW4K Y3B1X3VzZXJfcmVncywgYnV0IGFsc28gb24gc3RhdGUgY3VycmVudGx5IGZvdW5kIG9uIHRoZSBj cHU6IG5hbWVseSwKdGhlIEZQVSBhbmQgWE1NIHJlZ2lzdGVycy4gIEF0IHRoZSBtb21lbnQsIHdl IHJlLXplcm8gKGFuZC9vcgpyZS1pbml0aWFsaXplKSBjcHVfdXNlcl9yZWdzIG9uIGV2ZXJ5IGlu dm9jYXRpb24sIGJ1dCBsZWF2ZSB0aGUKY3B1LXN0b3JlZCBzdGF0ZSBhbG9uZS4gIEluICJwZXJz aXN0ZW50IG1vZGUiLCB0aGlzIGNhdXNlcyB0ZXN0IGNhc2VzCnRvIGJlaGF2ZSBkaWZmZXJlbnRs eSAtLSBzb21ldGltZXMgc2lnbmlmaWNhbnRseSBzbyAtLSBkZXBlbmRpbmcgb24Kd2hpY2ggdGVz dCBjYXNlcyBoYXZlIGJlZW4gcnVuIGJlZm9yZWhhbmQuCgpaZXJvIG91dCB0aGUgc3RhdGUgYmVm b3JlIGVhY2ggdGVzdCBydW4sIGFuZCB0aGVuIGZ1enogaXQgYmFzZWQgb24gdGhlCmNvcnB1cyBp bnB1dC4KClNpZ25lZC1vZmYtYnk6IEdlb3JnZSBEdW5sYXAgPGdlb3JnZS5kdW5sYXBAY2l0cml4 LmNvbT4KLS0tCnYzOgotIE1ha2UgdHlwZSA1MTIgYnl0ZXMgcmF0aGVyIHRoYW4gNDY0Ci0gU3R5 bGUgY2hhbmdlcwotIENoYW5nZSBhcmd1bWVudCBmcm9tICdzdG9yZScgdG8gJ3dyaXRlJwotIEFk ZCBhIGNvbW1lbnQgZXhwbGFpbmluZyB3aHkgd2UgYWx3YXlzICdzYXZlJyBldmVuIGZvciBhIHdy aXRlCi0gU2FuaXRpemUgbXhjc3Igd2l0aCBteGNyc19tYXNrIHdoZW4gd3JpdGluZyBpbnN0ZWFk IG9mIHplcm9pbmcgaXQgaW4gc2FuaXRpemVfc3RhdGUKLSBHZXQgcmlkIG9mIHJlZHVuZGFudCBt eGNzcl9tYXNrIHNldHRpbmcKLSBBZGQgY29tbWVudHMgZXhwbGFpbmluZyB3aHkgd2UncmUgYXJi aXRyYXJpbHkgd3JpdGluZyAzMiBiaXRzCnYyOiBSZWJhc2Ugb24gdG9wIG9mIHByZXZpb3VzIGNo YW5nZXMKCkNDOiBJYW4gSmFja3NvbiA8aWFuLmphY2tzb25AY2l0cml4LmNvbT4KQ0M6IFdlaSBM aXUgPHdlaS5saXUyQGNpdHJpeC5jb20+CkNDOiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVy M0BjaXRyaXguY29tPgpDQzogSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgotLS0KIHRv b2xzL2Z1enoveDg2X2luc3RydWN0aW9uX2VtdWxhdG9yL2Z1enotZW11bC5jIHwgODIgKysrKysr KysrKysrKysrKysrKysrKysrLQogMSBmaWxlIGNoYW5nZWQsIDgxIGluc2VydGlvbnMoKyksIDEg ZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS90b29scy9mdXp6L3g4Nl9pbnN0cnVjdGlvbl9lbXVs YXRvci9mdXp6LWVtdWwuYyBiL3Rvb2xzL2Z1enoveDg2X2luc3RydWN0aW9uX2VtdWxhdG9yL2Z1 enotZW11bC5jCmluZGV4IDc2ODVlOTc2YjguLjc5ZGQzNmVjMzAgMTAwNjQ0Ci0tLSBhL3Rvb2xz L2Z1enoveDg2X2luc3RydWN0aW9uX2VtdWxhdG9yL2Z1enotZW11bC5jCisrKyBiL3Rvb2xzL2Z1 enoveDg2X2luc3RydWN0aW9uX2VtdWxhdG9yL2Z1enotZW11bC5jCkBAIC00MCw2ICs0MCw4IEBA IHN0cnVjdCBmdXp6X3N0YXRlCiAgICAgdWludDY0X3QgbXNyW01TUl9JTkRFWF9NQVhdOwogICAg IHN0cnVjdCBzZWdtZW50X3JlZ2lzdGVyIHNlZ21lbnRzW1NFR19OVU1dOwogICAgIHN0cnVjdCBj cHVfdXNlcl9yZWdzIHJlZ3M7CisgICAgY2hhciBmeHNhdmVbNTEyXSBfX2F0dHJpYnV0ZV9fKChh bGlnbmVkKDE2KSkpOworCiAKICAgICAvKiBGdXp6ZXIncyBpbnB1dCBkYXRhLiAqLwogI2RlZmlu ZSBEQVRBX1NJWkVfRlVMTCBvZmZzZXRvZihzdHJ1Y3QgZnV6el9zdGF0ZSwgY29ycHVzKQpAQCAt NTk2LDYgKzU5OCw1NCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHg4Nl9lbXVsYXRlX29wcyBhbGxf ZnV6emVyX29wcyA9IHsKIH07CiAjdW5kZWYgU0VUCiAKKy8qCisgKiBUaGlzIGZ1bmNpdG9uIHdp bGwgcmVhZCBvciB3cml0ZSBmeHNhdmUgdG8gdGhlIGZwdS4gIFdoZW4gd3JpdGluZywKKyAqIGl0 ICdzYW5pdGl6ZXMnIHRoZSBzdGF0ZTogSXQgd2lsbCBtYXNrIG9mZiB0aGUgYXBwcm9wcmlhdGUg Yml0cyBpbgorICogdGhlIG14Y3NyLCAncmVzdG9yZScgdGhlIHN0YXRlIHRvIHRoZSBmcHUsIHRo ZW4gJ3NhdmUnIGl0IGFnYWluIHNvCisgKiB0aGF0IHRoZSBkYXRhIGluIGZ4c2F2ZSByZWZsZWN0 cyB3aGF0J3MgYWN0dWFsbHkgaW4gdGhlIEZQVS4KKyAqCisgKiBUT0RPOiBFeHRlbmQgc3RhdGUg YmV5b25kIGp1c3QgRlBVICh5bW0gcmVnaXN0ZXJzLCAmYykKKyAqLworc3RhdGljIHZvaWQgX3Nl dF9mcHVfc3RhdGUoY2hhciAqZnhzYXZlLCBib29sIHdyaXRlKQoreworICAgIGlmICggY3B1X2hh c19meHNyICkKKyAgICB7CisgICAgICAgIHN0YXRpYyB1bmlvbiBfX2F0dHJpYnV0ZV9fKChfX2Fs aWduZWRfXygxNikpKSB7CisgICAgICAgICAgICBjaGFyIHhbNTEyXTsKKyAgICAgICAgICAgIHN0 cnVjdCB7CisgICAgICAgICAgICAgICAgdWludDMyX3Qgb3RoZXJbNl07CisgICAgICAgICAgICAg ICAgdWludDMyX3QgbXhjc3I7CisgICAgICAgICAgICAgICAgdWludDMyX3QgbXhjc3JfbWFzazsK KyAgICAgICAgICAgICAgICAvKiAuLi4gKi8KKyAgICAgICAgICAgIH07CisgICAgICAgIH0gKmZ4 czsKKworICAgICAgICBmeHMgPSAodHlwZW9mKGZ4cykpIGZ4c2F2ZTsKKworICAgICAgICBpZiAo IHdyaXRlICkKKyAgICAgICAgeworICAgICAgICAgICAgY2hhciBudWxsWzUxMl0gX19hdHRyaWJ1 dGVfXygoYWxpZ25lZCgxNikpKSA9IHsgfTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgZnhz LT5teGNzciAmPSBteGNzcl9tYXNrOworCisgICAgICAgICAgICBhc20gdm9sYXRpbGUoICJmeHJz dG9yICUwIiA6OiAibSIgKCpudWxsKSApOworICAgICAgICAgICAgYXNtIHZvbGF0aWxlKCAiZnhy c3RvciAlMCIgOjogIm0iICgqZnhzKSApOworICAgICAgICB9CisKKyAgICAgICAgYXNtIHZvbGF0 aWxlKCAiZnhzYXZlICUwIiA6ICI9bSIgKCpmeHMpICk7CisgICAgfQorfQorCitzdGF0aWMgdm9p ZCBzZXRfZnB1X3N0YXRlKGNoYXIgKmZ4c2F2ZSkKK3sKKyAgICBfc2V0X2ZwdV9zdGF0ZShmeHNh dmUsIHRydWUpOworfQorCitzdGF0aWMgdm9pZCBzYXZlX2ZwdV9zdGF0ZShjaGFyICpmeHNhdmUp Cit7CisgICAgX3NldF9mcHVfc3RhdGUoZnhzYXZlLCBmYWxzZSk7Cit9CisKIHN0YXRpYyB2b2lk IHNldHVwX2ZwdV9leGNlcHRpb25faGFuZGxlcih2b2lkKQogewogICAgIC8qIEZJWE1FIC0ganVz dCBkaXNhYmxlIGV4Y2VwdGlvbnMgZm9yIG5vdyAqLwpAQCAtNjc0LDcgKzcyNCwxMSBAQCBzdGF0 aWMgdm9pZCBzZXR1cF9zdGF0ZShzdHJ1Y3QgeDg2X2VtdWxhdGVfY3R4dCAqY3R4dCkKICAgICAg ICAgcmV0dXJuOwogICAgIH0KIAotICAgIC8qIE1vZGlmeSBvbmx5IHNlbGVjdCBiaXRzIG9mIHN0 YXRlICovCisgICAgLyoKKyAgICAgKiBNb2RpZnkgb25seSBzZWxlY3QgYml0cyBvZiBzdGF0ZS4g IEluIGdlbmVyYWwsIHRyeSBub3QgdG8gZnV6eiBsZXNzCisgICAgICogdGhhbiAzMiBiaXRzIGF0 IGEgdGltZTsgb3RoZXJ3aXNlIHdlJ3JlIHJlYWRpbmcgMiBieXRlcyBpbiBvcmRlciB0byBmdXp6 IG9ubHkKKyAgICAgKiBvbmUgYnl0ZS4gCisgICAgICovCiAKICAgICAvKiBBbHdheXMgcmVhZCAn b3B0aW9ucycgKi8KICAgICBpZiAoICFpbnB1dF9yZWFkKHMsIHMsIERBVEFfU0laRV9DT01QQUNU KSApCkBAIC03MzcsNiArNzkxLDE4IEBAIHN0YXRpYyB2b2lkIHNldHVwX3N0YXRlKHN0cnVjdCB4 ODZfZW11bGF0ZV9jdHh0ICpjdHh0KQogICAgICAgICAgICAgcHJpbnRmKCJTZXR0aW5nIGNwdV91 c2VyX3JlZ3Mgb2Zmc2V0ICV4XG4iLCBvZmZzZXQpOwogICAgICAgICAgICAgY29udGludWU7CiAg ICAgICAgIH0KKyAgICAgICAgb2Zmc2V0IC09IHNpemVvZihzdHJ1Y3QgY3B1X3VzZXJfcmVncyk7 CisKKyAgICAgICAgLyogRnV6eiBmeHNhdmUgc3RhdGUgKi8KKyAgICAgICAgaWYgKCBvZmZzZXQg PCAxMjggKQorICAgICAgICB7CisgICAgICAgICAgICAvKiAzMi1iaXQgc2l6ZSBpcyBhcmJpdHJh cnk7IHNlZSBjb21tZW50IGFib3ZlICovCisgICAgICAgICAgICBpZiAoICFpbnB1dF9yZWFkKHMs IHMtPmZ4c2F2ZSArIChvZmZzZXQgKiA0KSwgNCkgKQorICAgICAgICAgICAgICAgIHJldHVybjsK KyAgICAgICAgICAgIHByaW50ZigiU2V0dGluZyBmeHNhdmUgb2Zmc2V0ICV4XG4iLCBvZmZzZXQg KiA0KTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIG9mZnNldCAt PSAxMjg7CiAKICAgICAgICAgLyogTm9uZSBvZiB0aGUgYWJvdmUgLS0gdGFrZSB0aGF0IGFzICJz dGFydCBlbXVsYXRpbmciICovCiAgICAgICAgIApAQCAtOTE5LDYgKzk4NSw4IEBAIHN0YXRpYyBp bnQgcnVudGVzdChzdHJ1Y3QgZnV6el9zdGF0ZSAqc3RhdGUpIHsKIAogICAgIGRpc2FibGVfaG9v a3Moc3RhdGUpOwogCisgICAgc2V0X2ZwdV9zdGF0ZShzdGF0ZS0+ZnhzYXZlKTsKKwogICAgIGRv IHsKICAgICAgICAgLyogRklYTUU6IFVudGlsIHdlIGFjdHVhbGx5IGltcGxlbWVudCBTSUdGUEUg aGFuZGxpbmcgcHJvcGVybHkgKi8KICAgICAgICAgc2V0dXBfZnB1X2V4Y2VwdGlvbl9oYW5kbGVy KCk7CkBAIC05MzAsNiArOTk4LDggQEAgc3RhdGljIGludCBydW50ZXN0KHN0cnVjdCBmdXp6X3N0 YXRlICpzdGF0ZSkgewogICAgICAgICBwcmludGYoIkVtdWxhdGlvbiByZXN1bHQ6ICVkXG4iLCBy Yyk7CiAgICAgfSB3aGlsZSAoIHJjID09IFg4NkVNVUxfT0tBWSApOwogCisgICAgc2F2ZV9mcHVf c3RhdGUoc3RhdGUtPmZ4c2F2ZSk7CisgICAgCiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTEwMTMs NiArMTA4MywxNiBAQCBzdGF0aWMgdm9pZCBjb21wYXJlX3N0YXRlcyhzdHJ1Y3QgZnV6el9zdGF0 ZSBzdGF0ZVsyXSkKICAgICAgICAgaWYgKCBtZW1jbXAoJnN0YXRlWzBdLm9wcywgJnN0YXRlWzFd Lm9wcywgc2l6ZW9mKHN0YXRlWzBdLm9wcykpICkKICAgICAgICAgICAgIHByaW50Zigib3BzIGRp ZmZlciFcbiIpOwogCisgICAgICAgIGlmICggbWVtY21wKCZzdGF0ZVswXS5meHNhdmUsICZzdGF0 ZVsxXS5meHNhdmUsIHNpemVvZihzdGF0ZVswXS5meHNhdmUpKSApCisgICAgICAgIHsKKyAgICAg ICAgICAgIHByaW50ZigiZnhzYXZlIGRpZmZlcnMhXG4iKTsKKyAgICAgICAgICAgIGZvciAoIGkg PSAwOyAgaSA8IHNpemVvZihzdGF0ZVswXS5meHNhdmUpL3NpemVvZih1bnNpZ25lZCk7IGkrKyAp CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcHJpbnRmKCJbJTA0bHVdICUwOHggJTA4 eFxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGkgKiBzaXplb2YodW5zaWduZWQpLCAoKHVu c2lnbmVkICopJnN0YXRlWzBdLmZ4c2F2ZSlbaV0sICgodW5zaWduZWQgKikmc3RhdGVbMV0uZnhz YXZlKVtpXSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKwogICAgICAgICBpZiAoIG1lbWNt cCgmc3RhdGVbMF0uY3R4dCwgJnN0YXRlWzFdLmN0eHQsIHNpemVvZihzdGF0ZVswXS5jdHh0KSkg KQogICAgICAgICB7CiAgICAgICAgICAgICBwcmludGYoImN0eHQgZGlmZmVycyFcbiIpOwotLSAK Mi4xNC4yCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K WGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xp c3RzLnhlbi5vcmcveGVuLWRldmVsCg==