From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cooper Subject: [PATCH 1/6] x86/mm: Use mfn_eq()/mfn_add() rather than opencoded variations Date: Wed, 15 Aug 2018 19:34:32 +0100 Message-ID: <1534358077-24700-2-git-send-email-andrew.cooper3@citrix.com> References: <1534358077-24700-1-git-send-email-andrew.cooper3@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1534358077-24700-1-git-send-email-andrew.cooper3@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: Xen-devel Cc: Wei Liu , George Dunlap , Andrew Cooper , Tim Deegan , Jan Beulich , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= List-Id: xen-devel@lists.xenproject.org VXNlIGwxZV9nZXRfbWZuKCkgaW4gcGxhY2Ugb2YgbDFlX2dldF9wZm4oKSB3aGVuIGFwcGxpY2Fi bGUsIGFuZCBmaXggdXAgc3R5bGUKb24gYWZmZWN0ZWQgbGluZXMuCgpGb3Igc2hfcmVtb3ZlX3No YWRvd192aWFfcG9pbnRlcigpLCBtYXBfZG9tYWluX3BhZ2UoKSBpcyBndWFyYW50ZWVkIHRvIHN1 Y2NlZWQKc28gdGhlcmUgaXMgbm8gbmVlZCB0byBBU1NFUlQoKSBpdHMgc3VjY2Vzcy4gIFRoaXMg YWxsb3dzIHRoZSBwb2ludGVyCmFyaXRobWV0aWMgdG8gZm9sZGVkIGludG8gdGhlIHByZXZpb3Vz IGV4cHJlc3Npb24sIGFuZCBmb3IgdmFkZHIgdG8gYmUKcHJvcGVybHkgdHlwZWQgYXMgbDFfcGdl bnRyeV90LCBhdm9pZGluZyB0aGUgY2FzdCBpbiBsMWVfZ2V0X21mbigpLgoKTm8gZnVuY3Rpb25h bCBjaGFuZ2UuCgpTaWduZWQtb2ZmLWJ5OiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVyM0Bj aXRyaXguY29tPgotLS0KQ0M6IEphbiBCZXVsaWNoIDxKQmV1bGljaEBzdXNlLmNvbT4KQ0M6IFRp bSBEZWVnYW4gPHRpbUB4ZW4ub3JnPgpDQzogR2VvcmdlIER1bmxhcCA8Z2VvcmdlLmR1bmxhcEBl dS5jaXRyaXguY29tPgpDQzogV2VpIExpdSA8d2VpLmxpdTJAY2l0cml4LmNvbT4KQ0M6IFJvZ2Vy IFBhdSBNb25uw6kgPHJvZ2VyLnBhdUBjaXRyaXguY29tPgotLS0KIHhlbi9hcmNoL3g4Ni9jcHUv bWNoZWNrL3ZtY2UuYyAgfCAgMiArLQogeGVuL2FyY2gveDg2L2RvbWFpbl9wYWdlLmMgICAgICB8 ICAyICstCiB4ZW4vYXJjaC94ODYvbW0vaGFwL2hhcC5jICAgICAgIHwgIDMgKystCiB4ZW4vYXJj aC94ODYvbW0vbWVtX3NoYXJpbmcuYyAgIHwgIDQgKystLQogeGVuL2FyY2gveDg2L21tL3AybS1w b2QuYyAgICAgICB8ICAyICstCiB4ZW4vYXJjaC94ODYvbW0vcDJtLmMgICAgICAgICAgIHwgIDQg KystLQogeGVuL2FyY2gveDg2L21tL3NoYWRvdy9jb21tb24uYyB8IDM0ICsrKysrKysrKysrKysr KystLS0tLS0tLS0tLS0tLS0tLS0KIHhlbi9hcmNoL3g4Ni9tbS9zaGFkb3cvbXVsdGkuYyAgfCAy MyArKysrKysrKysrKysrLS0tLS0tLS0tLQogOCBmaWxlcyBjaGFuZ2VkLCAzOCBpbnNlcnRpb25z KCspLCAzNiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvY3B1L21jaGVj ay92bWNlLmMgYi94ZW4vYXJjaC94ODYvY3B1L21jaGVjay92bWNlLmMKaW5kZXggZTA3Y2QyZi4u ZWEzNzAwNiAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2NwdS9tY2hlY2svdm1jZS5jCisrKyBi L3hlbi9hcmNoL3g4Ni9jcHUvbWNoZWNrL3ZtY2UuYwpAQCAtNTQwLDcgKzU0MCw3IEBAIGludCB1 bm1tYXBfYnJva2VuX3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwgbWZuX3QgbWZuLCB1bnNpZ25lZCBs b25nIGdmbikKICAgICByX21mbiA9IGdldF9nZm5fcXVlcnkoZCwgZ2ZuLCAmcHQpOwogICAgIGlm ICggcDJtX3RvX21hc2socHQpICYgUDJNX1VOTUFQX1RZUEVTKQogICAgIHsKLSAgICAgICAgQVNT RVJUKG1mbl94KHJfbWZuKSA9PSBtZm5feChtZm4pKTsKKyAgICAgICAgQVNTRVJUKG1mbl9lcShy X21mbiwgbWZuKSk7CiAgICAgICAgIHJjID0gcDJtX2NoYW5nZV90eXBlX29uZShkLCBnZm4sIHB0 LCBwMm1fcmFtX2Jyb2tlbik7CiAgICAgfQogICAgIHB1dF9nZm4oZCwgZ2ZuKTsKZGlmZiAtLWdp dCBhL3hlbi9hcmNoL3g4Ni9kb21haW5fcGFnZS5jIGIveGVuL2FyY2gveDg2L2RvbWFpbl9wYWdl LmMKaW5kZXggMGMyNDUzMC4uYWVlOWE4MCAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2RvbWFp bl9wYWdlLmMKKysrIGIveGVuL2FyY2gveDg2L2RvbWFpbl9wYWdlLmMKQEAgLTEwMSw3ICsxMDEs NyBAQCB2b2lkICptYXBfZG9tYWluX3BhZ2UobWZuX3QgbWZuKQogICAgICAgICBBU1NFUlQoaWR4 IDwgZGNhY2hlLT5lbnRyaWVzKTsKICAgICAgICAgaGFzaGVudC0+cmVmY250Kys7CiAgICAgICAg IEFTU0VSVChoYXNoZW50LT5yZWZjbnQpOwotICAgICAgICBBU1NFUlQobDFlX2dldF9wZm4oTUFQ Q0FDSEVfTDFFTlQoaWR4KSkgPT0gbWZuX3gobWZuKSk7CisgICAgICAgIEFTU0VSVChtZm5fZXEo bDFlX2dldF9tZm4oTUFQQ0FDSEVfTDFFTlQoaWR4KSksIG1mbikpOwogICAgICAgICBnb3RvIG91 dDsKICAgICB9CiAKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9tbS9oYXAvaGFwLmMgYi94ZW4v YXJjaC94ODYvbW0vaGFwL2hhcC5jCmluZGV4IDgxMmE4NDAuLmQ2NDQ5ZTYgMTAwNjQ0Ci0tLSBh L3hlbi9hcmNoL3g4Ni9tbS9oYXAvaGFwLmMKKysrIGIveGVuL2FyY2gveDg2L21tL2hhcC9oYXAu YwpAQCAtNzI5LDcgKzcyOSw4IEBAIGhhcF93cml0ZV9wMm1fZW50cnkoc3RydWN0IGRvbWFpbiAq ZCwgdW5zaWduZWQgbG9uZyBnZm4sIGwxX3BnZW50cnlfdCAqcCwKICAgICAgICAgICogdW5sZXNz IHRoZSBvbmx5IGNoYW5nZSBpcyBhbiBpbmNyZWFzZSBpbiBhY2Nlc3MgcmlnaHRzLiAqLwogICAg ICAgICBtZm5fdCBvbWZuID0gbDFlX2dldF9tZm4oKnApOwogICAgICAgICBtZm5fdCBubWZuID0g bDFlX2dldF9tZm4obmV3KTsKLSAgICAgICAgZmx1c2hfbmVzdGVkcDJtID0gISggbWZuX3gob21m bikgPT0gbWZuX3gobm1mbikKKworICAgICAgICBmbHVzaF9uZXN0ZWRwMm0gPSAhKG1mbl9lcShv bWZuLCBubWZuKQogICAgICAgICAgICAgJiYgcGVybXNfc3RyaWN0bHlfaW5jcmVhc2VkKG9sZF9m bGFncywgbDFlX2dldF9mbGFncyhuZXcpKSApOwogICAgIH0KIApkaWZmIC0tZ2l0IGEveGVuL2Fy Y2gveDg2L21tL21lbV9zaGFyaW5nLmMgYi94ZW4vYXJjaC94ODYvbW0vbWVtX3NoYXJpbmcuYwpp bmRleCBmYWQ4YTlkLi41YzA4YWRiIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvbW0vbWVtX3No YXJpbmcuYworKysgYi94ZW4vYXJjaC94ODYvbW0vbWVtX3NoYXJpbmcuYwpAQCAtNTAwLDcgKzUw MCw3IEBAIHN0YXRpYyBpbnQgYXVkaXQodm9pZCkKICAgICAgICAgICAgICAgICBjb250aW51ZTsK ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIG9fbWZuID0gZ2V0X2dmbl9xdWVyeV91bmxvY2tl ZChkLCBnLT5nZm4sICZ0KTsgCi0gICAgICAgICAgICBpZiAoIG1mbl94KG9fbWZuKSAhPSBtZm5f eChtZm4pICkKKyAgICAgICAgICAgIGlmICggIW1mbl9lcShvX21mbiwgbWZuKSApCiAgICAgICAg ICAgICB7CiAgICAgICAgICAgICAgICAgTUVNX1NIQVJJTkdfREVCVUcoIkluY29ycmVjdCBQMk0g Zm9yIGQ9JWh1LCBQRk49JWx4LiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi RXhwZWN0aW5nIE1GTj0lbHgsIGdvdCAlbHhcbiIsCkBAIC05MDQsNyArOTA0LDcgQEAgc3RhdGlj IGludCBzaGFyZV9wYWdlcyhzdHJ1Y3QgZG9tYWluICpzZCwgZ2ZuX3Qgc2dmbiwgc2hyX2hhbmRs ZV90IHNoLAogCiAgICAgLyogVGhpcyB0cmlja3kgYnVzaW5lc3MgaXMgdG8gYXZvaWQgdHdvIGNh bGxlcnMgZGVhZGxvY2tpbmcgaWYgCiAgICAgICogZ3JhYmJpbmcgcGFnZXMgaW4gb3Bwb3NpdGUg Y2xpZW50L3NvdXJjZSBvcmRlciAqLwotICAgIGlmKCBtZm5feChzbWZuKSA9PSBtZm5feChjbWZu KSApCisgICAgaWYgKCBtZm5fZXEoc21mbiwgY21mbikgKQogICAgIHsKICAgICAgICAgLyogVGhl IHBhZ2VzIGFyZSBhbHJlYWR5IHRoZSBzYW1lLiAgV2UgY291bGQgcmV0dXJuIHNvbWUKICAgICAg ICAgICoga2luZCBvZiBlcnJvciBoZXJlLCBidXQgbm8gbWF0dGVyIGhvdyB5b3UgbG9vayBhdCBp dCwKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9tbS9wMm0tcG9kLmMgYi94ZW4vYXJjaC94ODYv bW0vcDJtLXBvZC5jCmluZGV4IDYzMWU5YWUuLmJhMzczNDQgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNo L3g4Ni9tbS9wMm0tcG9kLmMKKysrIGIveGVuL2FyY2gveDg2L21tL3AybS1wb2QuYwpAQCAtNzUs NyArNzUsNyBAQCBwMm1fcG9kX2NhY2hlX2FkZChzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtLAogICAg IHsKICAgICAgICAgc3RydWN0IGRvbWFpbiAqIG9kOwogCi0gICAgICAgIHAgPSBtZm5fdG9fcGFn ZShfbWZuKG1mbl94KG1mbikgKyBpKSk7CisgICAgICAgIHAgPSBtZm5fdG9fcGFnZShtZm5fYWRk KG1mbiwgaSkpOwogICAgICAgICBvZCA9IHBhZ2VfZ2V0X293bmVyKHApOwogICAgICAgICBpZiAo IG9kICE9IGQgKQogICAgICAgICB7CmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvbW0vcDJtLmMg Yi94ZW4vYXJjaC94ODYvbW0vcDJtLmMKaW5kZXggOGU5ZmJiNS4uNWM3M2ZmOCAxMDA2NDQKLS0t IGEveGVuL2FyY2gveDg2L21tL3AybS5jCisrKyBiL3hlbi9hcmNoL3g4Ni9tbS9wMm0uYwpAQCAt MTEwNCw3ICsxMTA0LDcgQEAgc3RhdGljIGludCBzZXRfdHlwZWRfcDJtX2VudHJ5KHN0cnVjdCBk b21haW4gKmQsIHVuc2lnbmVkIGxvbmcgZ2ZuX2wsCiAKICAgICAgICAgZm9yICggaSA9IDA7IGkg PCAoMVVMIDw8IG9yZGVyKTsgKytpICkKICAgICAgICAgewotICAgICAgICAgICAgQVNTRVJUKG1m bl92YWxpZChfbWZuKG1mbl94KG9tZm4pICsgaSkpKTsKKyAgICAgICAgICAgIEFTU0VSVChtZm5f dmFsaWQobWZuX2FkZChvbWZuLCBpKSkpOwogICAgICAgICAgICAgc2V0X2dwZm5fZnJvbV9tZm4o bWZuX3gob21mbikgKyBpLCBJTlZBTElEX00yUF9FTlRSWSk7CiAgICAgICAgIH0KICAgICB9CkBA IC0xMjIyLDcgKzEyMjIsNyBAQCBpbnQgY2xlYXJfbW1pb19wMm1fZW50cnkoc3RydWN0IGRvbWFp biAqZCwgdW5zaWduZWQgbG9uZyBnZm5fbCwgbWZuX3QgbWZuLAogICAgICAgICAgICAgICAgICAi Z2ZuX3RvX21mbiBmYWlsZWQhIGdmbj0lMDhseCB0eXBlOiVkXG4iLCBnZm5fbCwgdCk7CiAgICAg ICAgIGdvdG8gb3V0OwogICAgIH0KLSAgICBpZiAoIG1mbl94KG1mbikgIT0gbWZuX3goYWN0dWFs X21mbikgKQorICAgIGlmICggIW1mbl9lcShtZm4sIGFjdHVhbF9tZm4pICkKICAgICAgICAgZ2Rw cmludGsoWEVOTE9HX1dBUk5JTkcsCiAgICAgICAgICAgICAgICAgICJubyBtYXBwaW5nIGJldHdl ZW4gbWZuICUwOGx4IGFuZCBnZm4gJTA4bHhcbiIsCiAgICAgICAgICAgICAgICAgIG1mbl94KG1m biksIGdmbl9sKTsKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9tbS9zaGFkb3cvY29tbW9uLmMg Yi94ZW4vYXJjaC94ODYvbW0vc2hhZG93L2NvbW1vbi5jCmluZGV4IGZkNDJkNzMuLjhhN2EyYjAg MTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9tbS9zaGFkb3cvY29tbW9uLmMKKysrIGIveGVuL2Fy Y2gveDg2L21tL3NoYWRvdy9jb21tb24uYwpAQCAtNTY0LDEwICs1NjQsMTAgQEAgdm9pZCBvb3Nf YXVkaXRfaGFzaF9pc19wcmVzZW50KHN0cnVjdCBkb21haW4gKmQsIG1mbl90IGdtZm4pCiAgICAg ewogICAgICAgICBvb3MgPSB2LT5hcmNoLnBhZ2luZy5zaGFkb3cub29zOwogICAgICAgICBpZHgg PSBtZm5feChnbWZuKSAlIFNIQURPV19PT1NfUEFHRVM7Ci0gICAgICAgIGlmICggbWZuX3gob29z W2lkeF0pICE9IG1mbl94KGdtZm4pICkKKyAgICAgICAgaWYgKCAhbWZuX2VxKG9vc1tpZHhdLCBn bWZuKSApCiAgICAgICAgICAgICBpZHggPSAoaWR4ICsgMSkgJSBTSEFET1dfT09TX1BBR0VTOwog Ci0gICAgICAgIGlmICggbWZuX3gob29zW2lkeF0pID09IG1mbl94KGdtZm4pICkKKyAgICAgICAg aWYgKCBtZm5fZXEob29zW2lkeF0sIGdtZm4pICkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9 CiAKQEAgLTYzNSwxNSArNjM1LDE1IEBAIHZvaWQgb29zX2ZpeHVwX2FkZChzdHJ1Y3QgZG9tYWlu ICpkLCBtZm5fdCBnbWZuLAogICAgICAgICBvb3MgPSB2LT5hcmNoLnBhZ2luZy5zaGFkb3cub29z OwogICAgICAgICBvb3NfZml4dXAgPSB2LT5hcmNoLnBhZ2luZy5zaGFkb3cub29zX2ZpeHVwOwog ICAgICAgICBpZHggPSBtZm5feChnbWZuKSAlIFNIQURPV19PT1NfUEFHRVM7Ci0gICAgICAgIGlm ICggbWZuX3gob29zW2lkeF0pICE9IG1mbl94KGdtZm4pICkKKyAgICAgICAgaWYgKCAhbWZuX2Vx KG9vc1tpZHhdLCBnbWZuKSApCiAgICAgICAgICAgICBpZHggPSAoaWR4ICsgMSkgJSBTSEFET1df T09TX1BBR0VTOwotICAgICAgICBpZiAoIG1mbl94KG9vc1tpZHhdKSA9PSBtZm5feChnbWZuKSAp CisgICAgICAgIGlmICggbWZuX2VxKG9vc1tpZHhdLCBnbWZuKSApCiAgICAgICAgIHsKICAgICAg ICAgICAgIGludCBpOwogICAgICAgICAgICAgZm9yICggaSA9IDA7IGkgPCBTSEFET1dfT09TX0ZJ WFVQUzsgaSsrICkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBpZiAoIG1mbl92YWxp ZChvb3NfZml4dXBbaWR4XS5zbWZuW2ldKQotICAgICAgICAgICAgICAgICAgICAgJiYgKG1mbl94 KG9vc19maXh1cFtpZHhdLnNtZm5baV0pID09IG1mbl94KHNtZm4pKQorICAgICAgICAgICAgICAg ICAgICAgJiYgbWZuX2VxKG9vc19maXh1cFtpZHhdLnNtZm5baV0sIHNtZm4pCiAgICAgICAgICAg ICAgICAgICAgICAmJiAob29zX2ZpeHVwW2lkeF0ub2ZmW2ldID09IG9mZikgKQogICAgICAgICAg ICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CkBAIC04MTYsOSArODE2LDkgQEAgc3Rh dGljIHZvaWQgb29zX2hhc2hfcmVtb3ZlKHN0cnVjdCBkb21haW4gKmQsIG1mbl90IGdtZm4pCiAg ICAgewogICAgICAgICBvb3MgPSB2LT5hcmNoLnBhZ2luZy5zaGFkb3cub29zOwogICAgICAgICBp ZHggPSBtZm5feChnbWZuKSAlIFNIQURPV19PT1NfUEFHRVM7Ci0gICAgICAgIGlmICggbWZuX3go b29zW2lkeF0pICE9IG1mbl94KGdtZm4pICkKKyAgICAgICAgaWYgKCAhbWZuX2VxKG9vc1tpZHhd LCBnbWZuKSApCiAgICAgICAgICAgICBpZHggPSAoaWR4ICsgMSkgJSBTSEFET1dfT09TX1BBR0VT OwotICAgICAgICBpZiAoIG1mbl94KG9vc1tpZHhdKSA9PSBtZm5feChnbWZuKSApCisgICAgICAg IGlmICggbWZuX2VxKG9vc1tpZHhdLCBnbWZuKSApCiAgICAgICAgIHsKICAgICAgICAgICAgIG9v c1tpZHhdID0gSU5WQUxJRF9NRk47CiAgICAgICAgICAgICByZXR1cm47CkBAIC04NDEsOSArODQx LDkgQEAgbWZuX3Qgb29zX3NuYXBzaG90X2xvb2t1cChzdHJ1Y3QgZG9tYWluICpkLCBtZm5fdCBn bWZuKQogICAgICAgICBvb3MgPSB2LT5hcmNoLnBhZ2luZy5zaGFkb3cub29zOwogICAgICAgICBv b3Nfc25hcHNob3QgPSB2LT5hcmNoLnBhZ2luZy5zaGFkb3cub29zX3NuYXBzaG90OwogICAgICAg ICBpZHggPSBtZm5feChnbWZuKSAlIFNIQURPV19PT1NfUEFHRVM7Ci0gICAgICAgIGlmICggbWZu X3gob29zW2lkeF0pICE9IG1mbl94KGdtZm4pICkKKyAgICAgICAgaWYgKCAhbWZuX2VxKG9vc1tp ZHhdLCBnbWZuKSApCiAgICAgICAgICAgICBpZHggPSAoaWR4ICsgMSkgJSBTSEFET1dfT09TX1BB R0VTOwotICAgICAgICBpZiAoIG1mbl94KG9vc1tpZHhdKSA9PSBtZm5feChnbWZuKSApCisgICAg ICAgIGlmICggbWZuX2VxKG9vc1tpZHhdLCBnbWZuKSApCiAgICAgICAgIHsKICAgICAgICAgICAg IHJldHVybiBvb3Nfc25hcHNob3RbaWR4XTsKICAgICAgICAgfQpAQCAtODY4LDEwICs4NjgsMTAg QEAgdm9pZCBzaF9yZXN5bmMoc3RydWN0IGRvbWFpbiAqZCwgbWZuX3QgZ21mbikKICAgICAgICAg b29zX2ZpeHVwID0gdi0+YXJjaC5wYWdpbmcuc2hhZG93Lm9vc19maXh1cDsKICAgICAgICAgb29z X3NuYXBzaG90ID0gdi0+YXJjaC5wYWdpbmcuc2hhZG93Lm9vc19zbmFwc2hvdDsKICAgICAgICAg aWR4ID0gbWZuX3goZ21mbikgJSBTSEFET1dfT09TX1BBR0VTOwotICAgICAgICBpZiAoIG1mbl94 KG9vc1tpZHhdKSAhPSBtZm5feChnbWZuKSApCisgICAgICAgIGlmICggIW1mbl9lcShvb3NbaWR4 XSwgZ21mbikgKQogICAgICAgICAgICAgaWR4ID0gKGlkeCArIDEpICUgU0hBRE9XX09PU19QQUdF UzsKIAotICAgICAgICBpZiAoIG1mbl94KG9vc1tpZHhdKSA9PSBtZm5feChnbWZuKSApCisgICAg ICAgIGlmICggbWZuX2VxKG9vc1tpZHhdLCBnbWZuKSApCiAgICAgICAgIHsKICAgICAgICAgICAg IF9zaF9yZXN5bmModiwgZ21mbiwgJm9vc19maXh1cFtpZHhdLCBvb3Nfc25hcHNob3RbaWR4XSk7 CiAgICAgICAgICAgICBvb3NbaWR4XSA9IElOVkFMSURfTUZOOwpAQCAtMjc0OSw3ICsyNzQ5LDcg QEAgc3RhdGljIGludCBzaF9yZW1vdmVfc2hhZG93X3ZpYV9wb2ludGVyKHN0cnVjdCBkb21haW4g KmQsIG1mbl90IHNtZm4pCiB7CiAgICAgc3RydWN0IHBhZ2VfaW5mbyAqc3AgPSBtZm5fdG9fcGFn ZShzbWZuKTsKICAgICBtZm5fdCBwbWZuOwotICAgIHZvaWQgKnZhZGRyOworICAgIGwxX3BnZW50 cnlfdCAqdmFkZHI7CiAgICAgaW50IHJjOwogCiAgICAgQVNTRVJUKHNwLT51LnNoLnR5cGUgPiAw KTsKQEAgLTI3NTksMTAgKzI3NTksOCBAQCBzdGF0aWMgaW50IHNoX3JlbW92ZV9zaGFkb3dfdmlh X3BvaW50ZXIoc3RydWN0IGRvbWFpbiAqZCwgbWZuX3Qgc21mbikKICAgICBpZiAoc3AtPnVwID09 IDApIHJldHVybiAwOwogICAgIHBtZm4gPSBtYWRkcl90b19tZm4oc3AtPnVwKTsKICAgICBBU1NF UlQobWZuX3ZhbGlkKHBtZm4pKTsKLSAgICB2YWRkciA9IG1hcF9kb21haW5fcGFnZShwbWZuKTsK LSAgICBBU1NFUlQodmFkZHIpOwotICAgIHZhZGRyICs9IHNwLT51cCAmIChQQUdFX1NJWkUtMSk7 Ci0gICAgQVNTRVJUKGwxZV9nZXRfcGZuKCoobDFfcGdlbnRyeV90ICopdmFkZHIpID09IG1mbl94 KHNtZm4pKTsKKyAgICB2YWRkciA9IG1hcF9kb21haW5fcGFnZShwbWZuKSArIChzcC0+dXAgJiAo UEFHRV9TSVpFIC0gMSkpOworICAgIEFTU0VSVChtZm5fZXEobDFlX2dldF9tZm4oKnZhZGRyKSwg c21mbikpOwogCiAgICAgLyogSXMgdGhpcyB0aGUgb25seSByZWZlcmVuY2UgdG8gdGhpcyBzaGFk b3c/ICovCiAgICAgcmMgPSAoc3AtPnUuc2guY291bnQgPT0gMSkgPyAxIDogMDsKQEAgLTM2NDYs NyArMzY0NCw3IEBAIHN0YXRpYyB2b2lkIHNoX3Vuc2hhZG93X2Zvcl9wMm1fY2hhbmdlKHN0cnVj dCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgZ2ZuLAogICAgICAgICAgICAgewogICAgICAgICAg ICAgICAgIGlmICggIW5wdGUKICAgICAgICAgICAgICAgICAgICAgIHx8ICFwMm1faXNfcmFtKHAy bV9mbGFnc190b190eXBlKGwxZV9nZXRfZmxhZ3MobnB0ZVtpXSkpKQotICAgICAgICAgICAgICAg ICAgICAgfHwgbDFlX2dldF9wZm4obnB0ZVtpXSkgIT0gbWZuX3gob21mbikgKQorICAgICAgICAg ICAgICAgICAgICAgfHwgIW1mbl9lcShsMWVfZ2V0X21mbihucHRlW2ldKSwgb21mbikgKQogICAg ICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgLyogVGhpcyBHRk4tPk1GTiBtYXBw aW5nIGhhcyBnb25lIGF3YXkgKi8KICAgICAgICAgICAgICAgICAgICAgc2hfcmVtb3ZlX2FsbF9z aGFkb3dzX2FuZF9wYXJlbnRzKGQsIG9tZm4pOwpAQCAtMzY1NCw3ICszNjUyLDcgQEAgc3RhdGlj IHZvaWQgc2hfdW5zaGFkb3dfZm9yX3AybV9jaGFuZ2Uoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWdu ZWQgbG9uZyBnZm4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBfZ2ZuKGdmbiArIChpIDw8IFBBR0VfU0hJRlQpKSkgKQogICAgICAgICAgICAgICAgICAg ICAgICAgY3B1bWFza19vcigmZmx1c2htYXNrLCAmZmx1c2htYXNrLCBkLT5kaXJ0eV9jcHVtYXNr KTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgb21mbiA9IF9tZm4obWZuX3go b21mbikgKyAxKTsKKyAgICAgICAgICAgICAgICBvbWZuID0gbWZuX2FkZChvbWZuLCAxKTsKICAg ICAgICAgICAgIH0KICAgICAgICAgICAgIGZsdXNoX3RsYl9tYXNrKCZmbHVzaG1hc2spOwogCmRp ZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvbW0vc2hhZG93L211bHRpLmMgYi94ZW4vYXJjaC94ODYv bW0vc2hhZG93L211bHRpLmMKaW5kZXggMDIxYWUyNS4uMGQ3NGMwMSAxMDA2NDQKLS0tIGEveGVu L2FyY2gveDg2L21tL3NoYWRvdy9tdWx0aS5jCisrKyBiL3hlbi9hcmNoL3g4Ni9tbS9zaGFkb3cv bXVsdGkuYwpAQCAtOTYwLDcgKzk2MCw4IEBAIHN0YXRpYyBpbnQgc2hhZG93X3NldF9sNGUoc3Ry dWN0IGRvbWFpbiAqZCwKICAgICB7CiAgICAgICAgIC8qIFdlIGxvc3QgYSByZWZlcmVuY2UgdG8g YW4gb2xkIG1mbi4gKi8KICAgICAgICAgbWZuX3Qgb3NsM21mbiA9IHNoYWRvd19sNGVfZ2V0X21m bihvbGRfc2w0ZSk7Ci0gICAgICAgIGlmICggKG1mbl94KG9zbDNtZm4pICE9IG1mbl94KHNoYWRv d19sNGVfZ2V0X21mbihuZXdfc2w0ZSkpKQorCisgICAgICAgIGlmICggbWZuX2VxKG9zbDNtZm4s IHNoYWRvd19sNGVfZ2V0X21mbihuZXdfc2w0ZSkpCiAgICAgICAgICAgICAgfHwgIXBlcm1zX3N0 cmljdGx5X2luY3JlYXNlZChzaGFkb3dfbDRlX2dldF9mbGFncyhvbGRfc2w0ZSksCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFkb3dfbDRlX2dldF9mbGFncyhu ZXdfc2w0ZSkpICkKICAgICAgICAgewpAQCAtMTAwNiw3ICsxMDA3LDggQEAgc3RhdGljIGludCBz aGFkb3dfc2V0X2wzZShzdHJ1Y3QgZG9tYWluICpkLAogICAgIHsKICAgICAgICAgLyogV2UgbG9z dCBhIHJlZmVyZW5jZSB0byBhbiBvbGQgbWZuLiAqLwogICAgICAgICBtZm5fdCBvc2wybWZuID0g c2hhZG93X2wzZV9nZXRfbWZuKG9sZF9zbDNlKTsKLSAgICAgICAgaWYgKCAobWZuX3gob3NsMm1m bikgIT0gbWZuX3goc2hhZG93X2wzZV9nZXRfbWZuKG5ld19zbDNlKSkpIHx8CisKKyAgICAgICAg aWYgKCAhbWZuX2VxKG9zbDJtZm4sIHNoYWRvd19sM2VfZ2V0X21mbihuZXdfc2wzZSkpIHx8CiAg ICAgICAgICAgICAgIXBlcm1zX3N0cmljdGx5X2luY3JlYXNlZChzaGFkb3dfbDNlX2dldF9mbGFn cyhvbGRfc2wzZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFk b3dfbDNlX2dldF9mbGFncyhuZXdfc2wzZSkpICkKICAgICAgICAgewpAQCAtMTA5MSw3ICsxMDkz LDggQEAgc3RhdGljIGludCBzaGFkb3dfc2V0X2wyZShzdHJ1Y3QgZG9tYWluICpkLAogICAgIHsK ICAgICAgICAgLyogV2UgbG9zdCBhIHJlZmVyZW5jZSB0byBhbiBvbGQgbWZuLiAqLwogICAgICAg ICBtZm5fdCBvc2wxbWZuID0gc2hhZG93X2wyZV9nZXRfbWZuKG9sZF9zbDJlKTsKLSAgICAgICAg aWYgKCAobWZuX3gob3NsMW1mbikgIT0gbWZuX3goc2hhZG93X2wyZV9nZXRfbWZuKG5ld19zbDJl KSkpIHx8CisKKyAgICAgICAgaWYgKCAhbWZuX2VxKG9zbDFtZm4sIHNoYWRvd19sMmVfZ2V0X21m bihuZXdfc2wyZSkpIHx8CiAgICAgICAgICAgICAgIXBlcm1zX3N0cmljdGx5X2luY3JlYXNlZChz aGFkb3dfbDJlX2dldF9mbGFncyhvbGRfc2wyZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzaGFkb3dfbDJlX2dldF9mbGFncyhuZXdfc2wyZSkpICkKICAgICAgICAg ewpAQCAtMjQ0Nyw3ICsyNDUwLDcgQEAgc2hfbWFwX2FuZF92YWxpZGF0ZShzdHJ1Y3QgdmNwdSAq diwgbWZuX3QgZ21mbiwKICAgICAgICAgc21mbjIgPSBzbWZuOwogICAgICAgICBndWVzdF9pZHgg PSBndWVzdF9pbmRleChuZXdfZ3ApOwogICAgICAgICBzaGFkb3dfaWR4ID0gc2hhZG93X2luZGV4 KCZzbWZuMiwgZ3Vlc3RfaWR4KTsKLSAgICAgICAgaWYgKCBtZm5feChzbWZuMikgIT0gbWZuX3go bWFwX21mbikgKQorICAgICAgICBpZiAoICFtZm5fZXEoc21mbjIsIG1hcF9tZm4pICkKICAgICAg ICAgewogICAgICAgICAgICAgLyogV2UgaGF2ZSBtb3ZlZCB0byBhbm90aGVyIHBhZ2Ugb2YgdGhl IHNoYWRvdyAqLwogICAgICAgICAgICAgbWFwX21mbiA9IHNtZm4yOwpAQCAtNDI3Miw3ICs0Mjc1 LDcgQEAgaW50IHNoX3JtX3dyaXRlX2FjY2Vzc19mcm9tX3NsMXAoc3RydWN0IGRvbWFpbiAqZCwg bWZuX3QgZ21mbiwKICAgICBzbDFlID0gKnNsMXA7CiAgICAgaWYgKCAoKHNoYWRvd19sMWVfZ2V0 X2ZsYWdzKHNsMWUpICYgKF9QQUdFX1BSRVNFTlR8X1BBR0VfUlcpKQogICAgICAgICAgICE9IChf UEFHRV9QUkVTRU5UfF9QQUdFX1JXKSkKLSAgICAgICAgIHx8IChtZm5feChzaGFkb3dfbDFlX2dl dF9tZm4oc2wxZSkpICE9IG1mbl94KGdtZm4pKSApCisgICAgICAgICB8fCAhbWZuX2VxKHNoYWRv d19sMWVfZ2V0X21mbihzbDFlKSwgZ21mbikgKQogICAgIHsKICAgICAgICAgdW5tYXBfZG9tYWlu X3BhZ2Uoc2wxcCk7CiAgICAgICAgIGdvdG8gZmFpbDsKQEAgLTQzNDEsNyArNDM0NCw3IEBAIHN0 YXRpYyBpbnQgc2hfZ3Vlc3Nfd3JtYXAoc3RydWN0IHZjcHUgKnYsIHVuc2lnbmVkIGxvbmcgdmFk ZHIsIG1mbl90IGdtZm4pCiAgICAgc2wxZSA9ICpzbDFwOwogICAgIGlmICggKChzaGFkb3dfbDFl X2dldF9mbGFncyhzbDFlKSAmIChfUEFHRV9QUkVTRU5UfF9QQUdFX1JXKSkKICAgICAgICAgICAh PSAoX1BBR0VfUFJFU0VOVHxfUEFHRV9SVykpCi0gICAgICAgICB8fCAobWZuX3goc2hhZG93X2wx ZV9nZXRfbWZuKHNsMWUpKSAhPSBtZm5feChnbWZuKSkgKQorICAgICAgICAgfHwgIW1mbl9lcShz aGFkb3dfbDFlX2dldF9tZm4oc2wxZSksIGdtZm4pICkKICAgICAgICAgcmV0dXJuIDA7CiAKICAg ICAvKiBGb3VuZCBpdCEgIE5lZWQgdG8gcmVtb3ZlIGl0cyB3cml0ZSBwZXJtaXNzaW9ucy4gKi8K QEAgLTQ3NTMsNyArNDc1Niw3IEBAIGludCBzaF9hdWRpdF9sMV90YWJsZShzdHJ1Y3QgdmNwdSAq diwgbWZuX3Qgc2wxbWZuLCBtZm5fdCB4KQogICAgICAgICAgICAgICAgIGdmbiA9IGd1ZXN0X2wx ZV9nZXRfZ2ZuKCpnbDFlKTsKICAgICAgICAgICAgICAgICBtZm4gPSBzaGFkb3dfbDFlX2dldF9t Zm4oKnNsMWUpOwogICAgICAgICAgICAgICAgIGdtZm4gPSBnZXRfZ2ZuX3F1ZXJ5X3VubG9ja2Vk KHYtPmRvbWFpbiwgZ2ZuX3goZ2ZuKSwgJnAybXQpOwotICAgICAgICAgICAgICAgIGlmICggIXAy bV9pc19ncmFudChwMm10KSAmJiBtZm5feChnbWZuKSAhPSBtZm5feChtZm4pICkKKyAgICAgICAg ICAgICAgICBpZiAoICFwMm1faXNfZ3JhbnQocDJtdCkgJiYgIW1mbl9lcShnbWZuLCBtZm4pICkK ICAgICAgICAgICAgICAgICAgICAgQVVESVRfRkFJTCgxLCAiYmFkIHRyYW5zbGF0aW9uOiBnZm4g JSIgU0hfUFJJX2dmbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgLS0+ICUiIFBS SV9tZm4gIiAhPSBtZm4gJSIgUFJJX21mbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBnZm5feChnZm4pLCBtZm5feChnbWZuKSwgbWZuX3gobWZuKSk7CkBAIC00ODI3LDcgKzQ4MzAs NyBAQCBpbnQgc2hfYXVkaXRfbDJfdGFibGUoc3RydWN0IHZjcHUgKnYsIG1mbl90IHNsMm1mbiwg bWZuX3QgeCkKICAgICAgICAgICAgICAgICA6IGdldF9zaGFkb3dfc3RhdHVzKGQsCiAgICAgICAg ICAgICAgICAgICAgIGdldF9nZm5fcXVlcnlfdW5sb2NrZWQoZCwgZ2ZuX3goZ2ZuKSwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcDJtdCksIFNIX3R5cGVfbDFfc2hh ZG93KTsKLSAgICAgICAgICAgIGlmICggbWZuX3goZ21mbikgIT0gbWZuX3gobWZuKSApCisgICAg ICAgICAgICBpZiAoICFtZm5fZXEoZ21mbiwgbWZuKSApCiAgICAgICAgICAgICAgICAgQVVESVRf RkFJTCgyLCAiYmFkIHRyYW5zbGF0aW9uOiBnZm4gJSIgU0hfUFJJX2dmbgogICAgICAgICAgICAg ICAgICAgICAgICAgICAgIiAoLS0+ICUiIFBSSV9tZm4gIikiCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAiIC0tPiAlIiBQUklfbWZuICIgIT0gbWZuICUiIFBSSV9tZm4sCkBAIC00ODgyLDcg KzQ4ODUsNyBAQCBpbnQgc2hfYXVkaXRfbDNfdGFibGUoc3RydWN0IHZjcHUgKnYsIG1mbl90IHNs M21mbiwgbWZuX3QgeCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYg KGd1ZXN0X2luZGV4KGdsM2UpICUgNCkgPT0gMykKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICA/IFNIX3R5cGVfbDJoX3NoYWRvdwogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDogU0hfdHlwZV9sMl9zaGFkb3cpOwotICAgICAgICAgICAgaWYgKCBtZm5f eChnbWZuKSAhPSBtZm5feChtZm4pICkKKyAgICAgICAgICAgIGlmICggIW1mbl9lcShnbWZuLCBt Zm4pICkKICAgICAgICAgICAgICAgICBBVURJVF9GQUlMKDMsICJiYWQgdHJhbnNsYXRpb246IGdm biAlIiBTSF9QUklfZ2ZuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIC0tPiAlIiBQUklf bWZuICIgIT0gbWZuICUiIFBSSV9tZm4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZm5f eChnZm4pLCBtZm5feChnbWZuKSwgbWZuX3gobWZuKSk7CkBAIC00OTI3LDcgKzQ5MzAsNyBAQCBp bnQgc2hfYXVkaXRfbDRfdGFibGUoc3RydWN0IHZjcHUgKnYsIG1mbl90IHNsNG1mbiwgbWZuX3Qg eCkKICAgICAgICAgICAgIGdtZm4gPSBnZXRfc2hhZG93X3N0YXR1cyhkLCBnZXRfZ2ZuX3F1ZXJ5 X3VubG9ja2VkKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQsIGdmbl94 KGdmbiksICZwMm10KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTSF90 eXBlX2wzX3NoYWRvdyk7Ci0gICAgICAgICAgICBpZiAoIG1mbl94KGdtZm4pICE9IG1mbl94KG1m bikgKQorICAgICAgICAgICAgaWYgKCAhbWZuX2VxKGdtZm4sIG1mbikgKQogICAgICAgICAgICAg ICAgIEFVRElUX0ZBSUwoNCwgImJhZCB0cmFuc2xhdGlvbjogZ2ZuICUiIFNIX1BSSV9nZm4KICAg ICAgICAgICAgICAgICAgICAgICAgICAgICIgLS0+ICUiIFBSSV9tZm4gIiAhPSBtZm4gJSIgUFJJ X21mbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdmbl94KGdmbiksIG1mbl94KGdtZm4p LCBtZm5feChtZm4pKTsKLS0gCjIuMS40CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMu eGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3Rp bmZvL3hlbi1kZXZlbA==