From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alexandru Isaila Subject: [PATCH v11 10/11] x86/hvm: Remove redundant save functions Date: Fri, 13 Jul 2018 12:04:09 +0300 Message-ID: <1531472650-6718-11-git-send-email-aisaila@bitdefender.com> References: <1531472650-6718-1-git-send-email-aisaila@bitdefender.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1531472650-6718-1-git-send-email-aisaila@bitdefender.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: xen-devel@lists.xen.org Cc: wei.liu2@citrix.com, andrew.cooper3@citrix.com, ian.jackson@eu.citrix.com, paul.durrant@citrix.com, jbeulich@suse.com, Alexandru Isaila List-Id: xen-devel@lists.xenproject.org VGhpcyBwYXRjaCByZW1vdmVzIHRoZSByZWR1bmRhbnQgc2F2ZSBmdW5jdGlvbnMgYW5kIHJlbmFt ZXMgdGhlCnNhdmVfb25lKiB0byBzYXZlLiBJdCB0aGVuIGNoYW5nZXMgdGhlIGRvbWFpbiBwYXJh bSB0byB2Y3B1IGluIHRoZSBzYXZlCmZ1bmNzLgoKU2lnbmVkLW9mZi1ieTogQWxleGFuZHJ1IElz YWlsYSA8YWlzYWlsYUBiaXRkZWZlbmRlci5jb20+CgotLS0KQ2hhbmdlcyBzaW5jZSBWOToKICAg ICAgICAtIEFkZCBlbnVtIHJldHVybiB0eXBlIGZvciBzYXZlIGZ1bmNzCi0tLQogeGVuL2FyY2gv eDg2L2NwdS9tY2hlY2svdm1jZS5jIHwgIDI0ICsrKy0tLS0tLQogeGVuL2FyY2gveDg2L2h2bS9o cGV0LmMgICAgICAgIHwgICA4ICsrLQogeGVuL2FyY2gveDg2L2h2bS9odm0uYyAgICAgICAgIHwg MTE0ICsrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiB4ZW4vYXJjaC94 ODYvaHZtL2k4MjU0LmMgICAgICAgfCAgIDkgKystLQogeGVuL2FyY2gveDg2L2h2bS9pcnEuYyAg ICAgICAgIHwgIDI0ICsrKysrKy0tLQogeGVuL2FyY2gveDg2L2h2bS9tdHJyLmMgICAgICAgIHwg IDIyICsrKy0tLS0tCiB4ZW4vYXJjaC94ODYvaHZtL3BtdGltZXIuYyAgICAgfCAgMTAgKystLQog eGVuL2FyY2gveDg2L2h2bS9ydGMuYyAgICAgICAgIHwgICA5ICsrLS0KIHhlbi9hcmNoL3g4Ni9o dm0vc2F2ZS5jICAgICAgICB8ICAyOSArKystLS0tLS0tLQogeGVuL2FyY2gveDg2L2h2bS92aW9h cGljLmMgICAgIHwgIDEwICsrLS0KIHhlbi9hcmNoL3g4Ni9odm0vdmlyaWRpYW4uYyAgICB8ICAz NiArKysrKystLS0tLS0tCiB4ZW4vYXJjaC94ODYvaHZtL3ZsYXBpYy5jICAgICAgfCAgNDUgKysr KysrKy0tLS0tLS0tLQogeGVuL2FyY2gveDg2L2h2bS92cGljLmMgICAgICAgIHwgIDEyICsrKy0t CiB4ZW4vaW5jbHVkZS9hc20teDg2L2h2bS9zYXZlLmggfCAgIDggKystCiAxNCBmaWxlcyBjaGFu Z2VkLCAxNDggaW5zZXJ0aW9ucygrKSwgMjEyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3hl bi9hcmNoL3g4Ni9jcHUvbWNoZWNrL3ZtY2UuYyBiL3hlbi9hcmNoL3g4Ni9jcHUvbWNoZWNrL3Zt Y2UuYwppbmRleCA2MDkwMDM3Li4yNjVjZTYxIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvY3B1 L21jaGVjay92bWNlLmMKKysrIGIveGVuL2FyY2gveDg2L2NwdS9tY2hlY2svdm1jZS5jCkBAIC0z NDksNyArMzQ5LDggQEAgaW50IHZtY2Vfd3Jtc3IodWludDMyX3QgbXNyLCB1aW50NjRfdCB2YWwp CiAgICAgcmV0dXJuIHJldDsKIH0KIAotc3RhdGljIGludCB2bWNlX3NhdmVfdmNwdV9jdHh0X29u ZShzdHJ1Y3QgdmNwdSAqdiwgaHZtX2RvbWFpbl9jb250ZXh0X3QgKmgpCitzdGF0aWMgZW51bSBz YXZlX3JldHVybl90eXBlX3Qgdm1jZV9zYXZlX3ZjcHVfY3R4dChzdHJ1Y3QgdmNwdSAqdiwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh2bV9kb21h aW5fY29udGV4dF90ICpoKQogIHsKICAgICBzdHJ1Y3QgaHZtX3ZtY2VfdmNwdSBjdHh0OwogCkBA IC0zNjAsMjQgKzM2MSwxMSBAQCBzdGF0aWMgaW50IHZtY2Vfc2F2ZV92Y3B1X2N0eHRfb25lKHN0 cnVjdCB2Y3B1ICp2LCBodm1fZG9tYWluX2NvbnRleHRfdCAqaCkKICAgICBjdHh0Lm1jaV9jdGwy X2JhbmsxID0gdi0+YXJjaC52bWNlLmJhbmtbMV0ubWNpX2N0bDI7CiAgICAgY3R4dC5tY2dfZXh0 X2N0bCA9IHYtPmFyY2gudm1jZS5tY2dfZXh0X2N0bDsKIAotICAgIHJldHVybiBodm1fc2F2ZV9l bnRyeShWTUNFX1ZDUFUsIHYtPnZjcHVfaWQsIGgsICZjdHh0KTsKKyAgICBpZiAoIGh2bV9zYXZl X2VudHJ5KFZNQ0VfVkNQVSwgdi0+dmNwdV9pZCwgaCwgJmN0eHQpICE9IDAgKQorICAgICAgICBy ZXR1cm4gRVJSOworICAgIHJldHVybiBPSzsKICB9CiAKLXN0YXRpYyBpbnQgdm1jZV9zYXZlX3Zj cHVfY3R4dChzdHJ1Y3QgZG9tYWluICpkLCBodm1fZG9tYWluX2NvbnRleHRfdCAqaCkKLXsKLSAg ICBzdHJ1Y3QgdmNwdSAqdjsKLSAgICBpbnQgZXJyID0gMDsKLQotICAgIGZvcl9lYWNoX3ZjcHUg KCBkLCB2ICkKLSAgICB7Ci0gICAgICAgIGVyciA9IHZtY2Vfc2F2ZV92Y3B1X2N0eHRfb25lKHYs IGgpOwotICAgICAgICBpZiAoIGVyciApCi0gICAgICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAg ICByZXR1cm4gZXJyOwotfQotCiBzdGF0aWMgaW50IHZtY2VfbG9hZF92Y3B1X2N0eHQoc3RydWN0 IGRvbWFpbiAqZCwgaHZtX2RvbWFpbl9jb250ZXh0X3QgKmgpCiB7CiAgICAgdW5zaWduZWQgaW50 IHZjcHVpZCA9IGh2bV9sb2FkX2luc3RhbmNlKGgpOwpAQCAtMzk4LDcgKzM4Niw3IEBAIHN0YXRp YyBpbnQgdm1jZV9sb2FkX3ZjcHVfY3R4dChzdHJ1Y3QgZG9tYWluICpkLCBodm1fZG9tYWluX2Nv bnRleHRfdCAqaCkKIH0KIAogSFZNX1JFR0lTVEVSX1NBVkVfUkVTVE9SRShWTUNFX1ZDUFUsIHZt Y2Vfc2F2ZV92Y3B1X2N0eHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHZtY2Vfc2F2ZV92 Y3B1X2N0eHRfb25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLAogICAgICAgICAg ICAgICAgICAgICAgICAgICB2bWNlX2xvYWRfdmNwdV9jdHh0LCAxLCBIVk1TUl9QRVJfVkNQVSk7 CiAKIC8qCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvaHZtL2hwZXQuYyBiL3hlbi9hcmNoL3g4 Ni9odm0vaHBldC5jCmluZGV4IGFmZjg2MTMuLjBlYjMwMmYgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNo L3g4Ni9odm0vaHBldC5jCisrKyBiL3hlbi9hcmNoL3g4Ni9odm0vaHBldC5jCkBAIC01MTYsOCAr NTE2LDEwIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaHZtX21taW9fb3BzIGhwZXRfbW1pb19vcHMg PSB7CiB9OwogCiAKLXN0YXRpYyBpbnQgaHBldF9zYXZlKHN0cnVjdCBkb21haW4gKmQsIGh2bV9k b21haW5fY29udGV4dF90ICpoKQorc3RhdGljIGVudW0gc2F2ZV9yZXR1cm5fdHlwZV90IGhwZXRf c2F2ZShzdHJ1Y3QgdmNwdSAqdmNwdSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgaHZtX2RvbWFpbl9jb250ZXh0X3QgKmgpCiB7CisgICAgc3RydWN0IGRvbWFpbiAq ZCA9IHZjcHUtPmRvbWFpbjsKICAgICBIUEVUU3RhdGUgKmhwID0gZG9tYWluX3ZocGV0KGQpOwog ICAgIHN0cnVjdCB2Y3B1ICp2ID0gcHRfZ2xvYmFsX3ZjcHVfdGFyZ2V0KGQpOwogICAgIGludCBy YzsKQEAgLTU3NSw3ICs1NzcsOSBAQCBzdGF0aWMgaW50IGhwZXRfc2F2ZShzdHJ1Y3QgZG9tYWlu ICpkLCBodm1fZG9tYWluX2NvbnRleHRfdCAqaCkKIAogICAgIHdyaXRlX3VubG9jaygmaHAtPmxv Y2spOwogCi0gICAgcmV0dXJuIHJjOworICAgIGlmICggcmMgIT0gMCApCisgICAgICAgIHJldHVy biBFUlI7CisgICAgcmV0dXJuIE9LOwogfQogCiBzdGF0aWMgaW50IGhwZXRfbG9hZChzdHJ1Y3Qg ZG9tYWluICpkLCBodm1fZG9tYWluX2NvbnRleHRfdCAqaCkKZGlmZiAtLWdpdCBhL3hlbi9hcmNo L3g4Ni9odm0vaHZtLmMgYi94ZW4vYXJjaC94ODYvaHZtL2h2bS5jCmluZGV4IGViM2EwMTIuLmNk ZjkxZjQgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9odm0vaHZtLmMKKysrIGIveGVuL2FyY2gv eDg2L2h2bS9odm0uYwpAQCAtNzQwLDI5ICs3NDAsMTggQEAgdm9pZCBodm1fZG9tYWluX2Rlc3Ry b3koc3RydWN0IGRvbWFpbiAqZCkKICAgICBkZXN0cm95X3ZwY2lfbW1jZmcoZCk7CiB9CiAKLXN0 YXRpYyBpbnQgaHZtX3NhdmVfdHNjX2FkanVzdF9vbmUoc3RydWN0IHZjcHUgKnYsIGh2bV9kb21h aW5fY29udGV4dF90ICpoKQorc3RhdGljIGVudW0gc2F2ZV9yZXR1cm5fdHlwZV90IGh2bV9zYXZl X3RzY19hZGp1c3Qoc3RydWN0IHZjcHUgKnYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBodm1fZG9tYWluX2NvbnRleHRfdCAqaCkKICB7CiAgICAg c3RydWN0IGh2bV90c2NfYWRqdXN0IGN0eHQ7CiAKICAgICBjdHh0LnRzY19hZGp1c3QgPSB2LT5h cmNoLmh2bV92Y3B1Lm1zcl90c2NfYWRqdXN0OwogCi0gICAgcmV0dXJuIGh2bV9zYXZlX2VudHJ5 KFRTQ19BREpVU1QsIHYtPnZjcHVfaWQsIGgsICZjdHh0KTsKKyAgICBpZiAoIGh2bV9zYXZlX2Vu dHJ5KFRTQ19BREpVU1QsIHYtPnZjcHVfaWQsIGgsICZjdHh0KSAhPSAwICkKKyAgICAgICAgcmV0 dXJuIEVSUjsKKyAgICByZXR1cm4gT0s7CiAgfQogCi1zdGF0aWMgaW50IGh2bV9zYXZlX3RzY19h ZGp1c3Qoc3RydWN0IGRvbWFpbiAqZCwgaHZtX2RvbWFpbl9jb250ZXh0X3QgKmgpCi17Ci0gICAg c3RydWN0IHZjcHUgKnY7Ci0gICAgaW50IGVyciA9IDA7Ci0KLSAgICBmb3JfZWFjaF92Y3B1ICgg ZCwgdiApCi0gICAgewotICAgICAgICBlcnIgPSBodm1fc2F2ZV90c2NfYWRqdXN0X29uZSh2LCBo KTsKLSAgICAgICAgaWYgKCBlcnIgKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIHJl dHVybiBlcnI7Ci19Ci0KIHN0YXRpYyBpbnQgaHZtX2xvYWRfdHNjX2FkanVzdChzdHJ1Y3QgZG9t YWluICpkLCBodm1fZG9tYWluX2NvbnRleHRfdCAqaCkKIHsKICAgICB1bnNpZ25lZCBpbnQgdmNw dWlkID0gaHZtX2xvYWRfaW5zdGFuY2UoaCk7CkBAIC03ODQsMTQgKzc3MywyMiBAQCBzdGF0aWMg aW50IGh2bV9sb2FkX3RzY19hZGp1c3Qoc3RydWN0IGRvbWFpbiAqZCwgaHZtX2RvbWFpbl9jb250 ZXh0X3QgKmgpCiB9CiAKIEhWTV9SRUdJU1RFUl9TQVZFX1JFU1RPUkUoVFNDX0FESlVTVCwgaHZt X3NhdmVfdHNjX2FkanVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgaHZtX3NhdmVfdHNj X2FkanVzdF9vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsCiAgICAgICAgICAg ICAgICAgICAgICAgICAgIGh2bV9sb2FkX3RzY19hZGp1c3QsIDEsIEhWTVNSX1BFUl9WQ1BVKTsK IAotc3RhdGljIGludCBodm1fc2F2ZV9jcHVfY3R4dF9vbmUoc3RydWN0IHZjcHUgKnYsIGh2bV9k b21haW5fY29udGV4dF90ICpoKQorc3RhdGljIGVudW0gc2F2ZV9yZXR1cm5fdHlwZV90IGh2bV9z YXZlX2NwdV9jdHh0KHN0cnVjdCB2Y3B1ICp2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGh2bV9kb21haW5fY29udGV4dF90ICpoKQogewogICAgIHN0 cnVjdCBzZWdtZW50X3JlZ2lzdGVyIHNlZzsKICAgICBzdHJ1Y3QgaHZtX2h3X2NwdSBjdHh0Owog CisgICAgLyoKKyAgICAgKiBXZSBkb24ndCBuZWVkIHRvIHNhdmUgc3RhdGUgZm9yIGEgdmNwdSB0 aGF0IGlzIGRvd247IHRoZSByZXN0b3JlCisgICAgICogY29kZSB3aWxsIGxlYXZlIGl0IGRvd24g aWYgdGhlcmUgaXMgbm90aGluZyBzYXZlZC4KKyAgICAgKi8KKyAgICBpZiAoIHYtPnBhdXNlX2Zs YWdzICYgVlBGX2Rvd24gKQorICAgICAgICByZXR1cm4gQ09OVElOVUU7CisKICAgICBtZW1zZXQo JmN0eHQsIDAsIHNpemVvZihjdHh0KSk7CiAKICAgICAvKiBBcmNoaXRlY3R1cmUtc3BlY2lmaWMg dm1jcy92bWNiIGJpdHMgKi8KQEAgLTg4OCwyNyArODg1LDkgQEAgc3RhdGljIGludCBodm1fc2F2 ZV9jcHVfY3R4dF9vbmUoc3RydWN0IHZjcHUgKnYsIGh2bV9kb21haW5fY29udGV4dF90ICpoKQog ICAgIGN0eHQuZHI2ID0gdi0+YXJjaC5kZWJ1Z3JlZ1s2XTsKICAgICBjdHh0LmRyNyA9IHYtPmFy Y2guZGVidWdyZWdbN107CiAKLSAgICByZXR1cm4gaHZtX3NhdmVfZW50cnkoQ1BVLCB2LT52Y3B1 X2lkLCBoLCAmY3R4dCk7Ci19Ci0KLXN0YXRpYyBpbnQgaHZtX3NhdmVfY3B1X2N0eHQoc3RydWN0 IGRvbWFpbiAqZCwgaHZtX2RvbWFpbl9jb250ZXh0X3QgKmgpCi17Ci0gICAgc3RydWN0IHZjcHUg KnY7Ci0KLSAgICBmb3JfZWFjaF92Y3B1ICggZCwgdiApCi0gICAgewotICAgICAgICAvKgotICAg ICAgICAgKiBXZSBkb24ndCBuZWVkIHRvIHNhdmUgc3RhdGUgZm9yIGEgdmNwdSB0aGF0IGlzIGRv d247IHRoZSByZXN0b3JlCi0gICAgICAgICAqIGNvZGUgd2lsbCBsZWF2ZSBpdCBkb3duIGlmIHRo ZXJlIGlzIG5vdGhpbmcgc2F2ZWQuCi0gICAgICAgICAqLwotICAgICAgICBpZiAoIHYtPnBhdXNl X2ZsYWdzICYgVlBGX2Rvd24gKQotICAgICAgICAgICAgY29udGludWU7Ci0KLQotICAgICAgICBp ZiAoIGh2bV9zYXZlX2NwdV9jdHh0X29uZSh2LCBoKSAhPSAwICkKLSAgICAgICAgICAgIHJldHVy biAxOwotICAgIH0KLSAgICByZXR1cm4gMDsKKyAgICBpZiAoIGh2bV9zYXZlX2VudHJ5KENQVSwg di0+dmNwdV9pZCwgaCwgJmN0eHQpICE9IDAgKQorICAgICAgICByZXR1cm4gRVJSOworICAgIHJl dHVybiBPSzsKIH0KIAogLyogUmV0dXJuIGEgc3RyaW5nIGluZGljYXRpbmcgdGhlIGVycm9yLCBv ciBOVUxMIGZvciB2YWxpZC4gKi8KQEAgLTExODIsNyArMTE2MSw3IEBAIHN0YXRpYyBpbnQgaHZt X2xvYWRfY3B1X2N0eHQoc3RydWN0IGRvbWFpbiAqZCwgaHZtX2RvbWFpbl9jb250ZXh0X3QgKmgp CiAgICAgcmV0dXJuIDA7CiB9CiAKLUhWTV9SRUdJU1RFUl9TQVZFX1JFU1RPUkUoQ1BVLCBodm1f c2F2ZV9jcHVfY3R4dCwgaHZtX3NhdmVfY3B1X2N0eHRfb25lLAorSFZNX1JFR0lTVEVSX1NBVkVf UkVTVE9SRShDUFUsIGh2bV9zYXZlX2NwdV9jdHh0LCBOVUxMLAogICAgICAgICAgICAgICAgICAg ICAgICAgICBodm1fbG9hZF9jcHVfY3R4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgMSwg SFZNU1JfUEVSX1ZDUFUpOwogCkBAIC0xMTkwLDE4ICsxMTY5LDE4IEBAIEhWTV9SRUdJU1RFUl9T QVZFX1JFU1RPUkUoQ1BVLCBodm1fc2F2ZV9jcHVfY3R4dCwgaHZtX3NhdmVfY3B1X2N0eHRfb25l LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhdmVfYXJlYSkg KyBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeHN0YXRlX2N0eHRfc2l6ZSh4 Y3IwKSkKIAotc3RhdGljIGludCBodm1fc2F2ZV9jcHVfeHNhdmVfc3RhdGVzX29uZShzdHJ1Y3Qg dmNwdSAqdiwgaHZtX2RvbWFpbl9jb250ZXh0X3QgKmgpCitzdGF0aWMgZW51bSBzYXZlX3JldHVy bl90eXBlX3QgaHZtX3NhdmVfY3B1X3hzYXZlX3N0YXRlcyhzdHJ1Y3QgdmNwdSAqdiwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh2bV9k b21haW5fY29udGV4dF90ICpoKQogewogICAgIHN0cnVjdCBodm1faHdfY3B1X3hzYXZlICpjdHh0 OwogICAgIHVuc2lnbmVkIGludCBzaXplID0gSFZNX0NQVV9YU0FWRV9TSVpFKHYtPmFyY2gueGNy MF9hY2N1bSk7CiAKICAgICBpZiAoICFjcHVfaGFzX3hzYXZlICkKLSAgICAgICAgcmV0dXJuIDA7 ICAgLyogZG8gbm90aGluZyAqLwotCi0gICAgQVNTRVJUKCF4c2F2ZV9lbmFibGVkKHYpKTsKLQor ICAgICAgICByZXR1cm4gT0s7ICAgLyogZG8gbm90aGluZyAqLworICAgIGlmICggIXhzYXZlX2Vu YWJsZWQodikgKQorICAgICAgICByZXR1cm4gQ09OVElOVUU7CiAgICAgaWYgKCBfaHZtX2luaXRf ZW50cnkoaCwgQ1BVX1hTQVZFX0NPREUsIHYtPnZjcHVfaWQsIHNpemUpICkKLSAgICAgICAgcmV0 dXJuIDE7CisgICAgICAgIHJldHVybiBFUlI7CiAgICAgY3R4dCA9IChzdHJ1Y3QgaHZtX2h3X2Nw dV94c2F2ZSAqKSZoLT5kYXRhW2gtPmN1cl07CiAgICAgaC0+Y3VyICs9IHNpemU7CiAgICAgY3R4 dC0+eGZlYXR1cmVfbWFzayA9IHhmZWF0dXJlX21hc2s7CkBAIC0xMjEwLDI1ICsxMTg5LDkgQEAg c3RhdGljIGludCBodm1fc2F2ZV9jcHVfeHNhdmVfc3RhdGVzX29uZShzdHJ1Y3QgdmNwdSAqdiwg aHZtX2RvbWFpbl9jb250ZXh0X3QgKmgKIAogICAgIGV4cGFuZF94c2F2ZV9zdGF0ZXModiwgJmN0 eHQtPnNhdmVfYXJlYSwKICAgICAgICAgICAgICAgICAgICAgICAgIHNpemUgLSBvZmZzZXRvZih0 eXBlb2YoKmN0eHQpLCBzYXZlX2FyZWEpKTsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gT0s7 CiAgfQogCi1zdGF0aWMgaW50IGh2bV9zYXZlX2NwdV94c2F2ZV9zdGF0ZXMoc3RydWN0IGRvbWFp biAqZCwgaHZtX2RvbWFpbl9jb250ZXh0X3QgKmgpCi17Ci0gICAgc3RydWN0IHZjcHUgKnY7Ci0K LSAgICBmb3JfZWFjaF92Y3B1ICggZCwgdiApCi0gICAgewotICAgICAgICBpZiAoICF4c2F2ZV9l bmFibGVkKHYpICkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIGlmICggaHZtX3Nh dmVfY3B1X3hzYXZlX3N0YXRlc19vbmUodiwgaCkgIT0gMCApCi0gICAgICAgICAgICByZXR1cm4g MTsKLSAgICB9Ci0KLSAgICByZXR1cm4gMDsKLX0KLQogLyoKICAqIFN0cnVjdHVyZSBsYXlvdXQg Y29uZm9ybWl0eSBjaGVja3MsIGRvY3VtZW50aW5nIGNvcnJlY3RuZXNzIG9mIHRoZSBjYXN0IGlu CiAgKiB0aGUgaW52b2NhdGlvbiBvZiB2YWxpZGF0ZV94c3RhdGUoKSBiZWxvdy4KQEAgLTEzNjYs NyArMTMyOSw4IEBAIHN0YXRpYyBjb25zdCB1aW50MzJfdCBtc3JzX3RvX3NlbmRbXSA9IHsKIH07 CiBzdGF0aWMgdW5zaWduZWQgaW50IF9fcmVhZF9tb3N0bHkgbXNyX2NvdW50X21heCA9IEFSUkFZ X1NJWkUobXNyc190b19zZW5kKTsKIAotc3RhdGljIGludCBodm1fc2F2ZV9jcHVfbXNyc19vbmUo c3RydWN0IHZjcHUgKnYsIGh2bV9kb21haW5fY29udGV4dF90ICpoKQorc3RhdGljIGVudW0gc2F2 ZV9yZXR1cm5fdHlwZV90IGh2bV9zYXZlX2NwdV9tc3JzKHN0cnVjdCB2Y3B1ICp2LAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh2bV9kb21haW5fY29u dGV4dF90ICpoKQogewogICAgIHVuc2lnbmVkIGludCBpOwogICAgIHN0cnVjdCBodm1fbXNyICpj dHh0OwpAQCAtMTM3NCw3ICsxMzM4LDcgQEAgc3RhdGljIGludCBodm1fc2F2ZV9jcHVfbXNyc19v bmUoc3RydWN0IHZjcHUgKnYsIGh2bV9kb21haW5fY29udGV4dF90ICpoKQogCiAgICAgaWYgKCBf aHZtX2luaXRfZW50cnkoaCwgQ1BVX01TUl9DT0RFLCB2LT52Y3B1X2lkLAogICAgICAgICAgICAg ICAgICAgICAgICAgIEhWTV9DUFVfTVNSX1NJWkUobXNyX2NvdW50X21heCkpICkKLSAgICAgICAg cmV0dXJuIDE7CisgICAgICAgIHJldHVybiBFUlI7CiAgICAgY3R4dCA9IChzdHJ1Y3QgaHZtX21z ciAqKSZoLT5kYXRhW2gtPmN1cl07CiAKICAgICBjdHh0LT5jb3VudCA9IDA7CkBAIC0xNDIzLDIx ICsxMzg3LDcgQEAgc3RhdGljIGludCBodm1fc2F2ZV9jcHVfbXNyc19vbmUoc3RydWN0IHZjcHUg KnYsIGh2bV9kb21haW5fY29udGV4dF90ICpoKQogICAgICAgICAvKiBvciByZXdpbmQgYW5kIHJl bW92ZSB0aGUgZGVzY3JpcHRvciBmcm9tIHRoZSBzdHJlYW0uICovCiAgICAgICAgIGgtPmN1ciAt PSBzaXplb2Yoc3RydWN0IGh2bV9zYXZlX2Rlc2NyaXB0b3IpOwogCi0gICAgcmV0dXJuIDA7Ci19 Ci0KLQotc3RhdGljIGludCBodm1fc2F2ZV9jcHVfbXNycyhzdHJ1Y3QgZG9tYWluICpkLCBodm1f ZG9tYWluX2NvbnRleHRfdCAqaCkKLXsKLSAgICBzdHJ1Y3QgdmNwdSAqdjsKLQotICAgIGZvcl9l YWNoX3ZjcHUgKCBkLCB2ICkKLSAgICB7Ci0gICAgICAgIGlmICggaHZtX3NhdmVfY3B1X21zcnNf b25lKHYsIGgpICE9IDAgKQotICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgfQotCi0gICAgcmV0 dXJuIDA7CisgICAgcmV0dXJuIE9LOwogfQogCiBzdGF0aWMgaW50IGh2bV9sb2FkX2NwdV9tc3Jz KHN0cnVjdCBkb21haW4gKmQsIGh2bV9kb21haW5fY29udGV4dF90ICpoKQpAQCAtMTUzMiw3ICsx NDgyLDcgQEAgc3RhdGljIGludCBfX2luaXQgaHZtX3JlZ2lzdGVyX0NQVV9zYXZlX2FuZF9yZXN0 b3JlKHZvaWQpCiAgICAgaHZtX3JlZ2lzdGVyX3NhdmV2bShDUFVfWFNBVkVfQ09ERSwKICAgICAg ICAgICAgICAgICAgICAgICAgICJDUFVfWFNBVkUiLAogICAgICAgICAgICAgICAgICAgICAgICAg aHZtX3NhdmVfY3B1X3hzYXZlX3N0YXRlcywKLSAgICAgICAgICAgICAgICAgICAgICAgIGh2bV9z YXZlX2NwdV94c2F2ZV9zdGF0ZXNfb25lLAorICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwK ICAgICAgICAgICAgICAgICAgICAgICAgIGh2bV9sb2FkX2NwdV94c2F2ZV9zdGF0ZXMsCiAgICAg ICAgICAgICAgICAgICAgICAgICBIVk1fQ1BVX1hTQVZFX1NJWkUoeGZlYXR1cmVfbWFzaykgKwog ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihzdHJ1Y3QgaHZtX3NhdmVfZGVzY3Jp cHRvciksCkBAIC0xNTQ1LDcgKzE0OTUsNyBAQCBzdGF0aWMgaW50IF9faW5pdCBodm1fcmVnaXN0 ZXJfQ1BVX3NhdmVfYW5kX3Jlc3RvcmUodm9pZCkKICAgICAgICAgaHZtX3JlZ2lzdGVyX3NhdmV2 bShDUFVfTVNSX0NPREUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNQVV9NU1IiLAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh2bV9zYXZlX2NwdV9tc3JzLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGh2bV9zYXZlX2NwdV9tc3JzX29uZSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICBOVUxMLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh2bV9sb2Fk X2NwdV9tc3JzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhWTV9DUFVfTVNSX1NJWkUo bXNyX2NvdW50X21heCkgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2Yo c3RydWN0IGh2bV9zYXZlX2Rlc2NyaXB0b3IpLApkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2h2 bS9pODI1NC5jIGIveGVuL2FyY2gveDg2L2h2bS9pODI1NC5jCmluZGV4IGVjNzdiMjMuLjAwY2Fi YWMgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9odm0vaTgyNTQuYworKysgYi94ZW4vYXJjaC94 ODYvaHZtL2k4MjU0LmMKQEAgLTM5MCw4ICszOTAsMTAgQEAgdm9pZCBwaXRfc3RvcF9jaGFubmVs MF9pcnEoUElUU3RhdGUgKnBpdCkKICAgICBzcGluX3VubG9jaygmcGl0LT5sb2NrKTsKIH0KIAot c3RhdGljIGludCBwaXRfc2F2ZShzdHJ1Y3QgZG9tYWluICpkLCBodm1fZG9tYWluX2NvbnRleHRf dCAqaCkKK3N0YXRpYyBlbnVtIHNhdmVfcmV0dXJuX3R5cGVfdCBwaXRfc2F2ZShzdHJ1Y3QgdmNw dSAqdiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBodm1fZG9tYWlu X2NvbnRleHRfdCAqaCkKIHsKKyAgICBzdHJ1Y3QgZG9tYWluICpkID0gdi0+ZG9tYWluOwogICAg IFBJVFN0YXRlICpwaXQgPSBkb21haW5fdnBpdChkKTsKICAgICBpbnQgcmM7CiAKQEAgLTQwMyw4 ICs0MDUsOSBAQCBzdGF0aWMgaW50IHBpdF9zYXZlKHN0cnVjdCBkb21haW4gKmQsIGh2bV9kb21h aW5fY29udGV4dF90ICpoKQogICAgIHJjID0gaHZtX3NhdmVfZW50cnkoUElULCAwLCBoLCAmcGl0 LT5odyk7CiAKICAgICBzcGluX3VubG9jaygmcGl0LT5sb2NrKTsKLQotICAgIHJldHVybiByYzsK KyAgICBpZiAoIHJjICE9IDAgKQorICAgICAgICByZXR1cm4gRVJSOworICAgIHJldHVybiBPSzsK IH0KIAogc3RhdGljIGludCBwaXRfbG9hZChzdHJ1Y3QgZG9tYWluICpkLCBodm1fZG9tYWluX2Nv bnRleHRfdCAqaCkKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9odm0vaXJxLmMgYi94ZW4vYXJj aC94ODYvaHZtL2lycS5jCmluZGV4IDc3MGVhYjcuLjczZjQ4YTkgMTAwNjQ0Ci0tLSBhL3hlbi9h cmNoL3g4Ni9odm0vaXJxLmMKKysrIGIveGVuL2FyY2gveDg2L2h2bS9pcnEuYwpAQCAtNjMwLDgg KzYzMCwxMCBAQCBzdGF0aWMgaW50IF9faW5pdCBkdW1wX2lycV9pbmZvX2tleV9pbml0KHZvaWQp CiB9CiBfX2luaXRjYWxsKGR1bXBfaXJxX2luZm9fa2V5X2luaXQpOwogCi1zdGF0aWMgaW50IGly cV9zYXZlX3BjaShzdHJ1Y3QgZG9tYWluICpkLCBodm1fZG9tYWluX2NvbnRleHRfdCAqaCkKK3N0 YXRpYyBlbnVtIHNhdmVfcmV0dXJuX3R5cGVfdCBpcnFfc2F2ZV9wY2koc3RydWN0IHZjcHUgKnYs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh2bV9kb21haW5f Y29udGV4dF90ICpoKQogeworICAgIHN0cnVjdCBkb21haW4gKmQgPSB2LT5kb21haW47CiAgICAg c3RydWN0IGh2bV9pcnEgKmh2bV9pcnEgPSBodm1fZG9tYWluX2lycShkKTsKICAgICB1bnNpZ25l ZCBpbnQgYXNzZXJ0ZWQsIHBkZXYsIHBpbnR4OwogICAgIGludCByYzsKQEAgLTY1OSwyMyArNjYx LDMzIEBAIHN0YXRpYyBpbnQgaXJxX3NhdmVfcGNpKHN0cnVjdCBkb21haW4gKmQsIGh2bV9kb21h aW5fY29udGV4dF90ICpoKQogCiAgICAgc3Bpbl91bmxvY2soJmQtPmFyY2guaHZtX2RvbWFpbi5p cnFfbG9jayk7CiAKLSAgICByZXR1cm4gcmM7CisgICAgaWYgKCByYyAhPSAwICkKKyAgICAgICAg cmV0dXJuIEVSUjsKKyAgICByZXR1cm4gT0s7CiB9CiAKLXN0YXRpYyBpbnQgaXJxX3NhdmVfaXNh KHN0cnVjdCBkb21haW4gKmQsIGh2bV9kb21haW5fY29udGV4dF90ICpoKQorc3RhdGljIGVudW0g c2F2ZV9yZXR1cm5fdHlwZV90IGlycV9zYXZlX2lzYShzdHJ1Y3QgdmNwdSAqdiwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHZtX2RvbWFpbl9jb250ZXh0X3Qg KmgpCiB7CisgICAgc3RydWN0IGRvbWFpbiAqZCA9IHYtPmRvbWFpbjsKICAgICBzdHJ1Y3QgaHZt X2lycSAqaHZtX2lycSA9IGh2bV9kb21haW5faXJxKGQpOwogCiAgICAgLyogU2F2ZSBJU0EgSVJR IGxpbmVzICovCi0gICAgcmV0dXJuICggaHZtX3NhdmVfZW50cnkoSVNBX0lSUSwgMCwgaCwgJmh2 bV9pcnEtPmlzYV9pcnEpICk7CisgICAgaWYgKCBodm1fc2F2ZV9lbnRyeShJU0FfSVJRLCAwLCBo LCAmaHZtX2lycS0+aXNhX2lycSkgIT0gMCApCisgICAgICAgIHJldHVybiBFUlI7CisgICAgcmV0 dXJuIE9LOwogfQogCi1zdGF0aWMgaW50IGlycV9zYXZlX2xpbmsoc3RydWN0IGRvbWFpbiAqZCwg aHZtX2RvbWFpbl9jb250ZXh0X3QgKmgpCitzdGF0aWMgZW51bSBzYXZlX3JldHVybl90eXBlX3Qg aXJxX3NhdmVfbGluayhzdHJ1Y3QgdmNwdSAqdiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGh2bV9kb21haW5fY29udGV4dF90ICpoKQogeworICAgIHN0cnVj dCBkb21haW4gKmQgPSB2LT5kb21haW47CiAgICAgc3RydWN0IGh2bV9pcnEgKmh2bV9pcnEgPSBo dm1fZG9tYWluX2lycShkKTsKIAogICAgIC8qIFNhdmUgUENJLUlTQSBsaW5rIHN0YXRlICovCi0g ICAgcmV0dXJuICggaHZtX3NhdmVfZW50cnkoUENJX0xJTkssIDAsIGgsICZodm1faXJxLT5wY2lf bGluaykgKTsKKyAgICBpZiAoIGh2bV9zYXZlX2VudHJ5KFBDSV9MSU5LLCAwLCBoLCAmaHZtX2ly cS0+cGNpX2xpbmspICE9IDAgKQorICAgICAgICByZXR1cm4gRVJSOworICAgIHJldHVybiBPSzsK IH0KIAogc3RhdGljIGludCBpcnFfbG9hZF9wY2koc3RydWN0IGRvbWFpbiAqZCwgaHZtX2RvbWFp bl9jb250ZXh0X3QgKmgpCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvaHZtL210cnIuYyBiL3hl bi9hcmNoL3g4Ni9odm0vbXRyci5jCmluZGV4IDlmYTAyODUuLmJhMDA5OTggMTAwNjQ0Ci0tLSBh L3hlbi9hcmNoL3g4Ni9odm0vbXRyci5jCisrKyBiL3hlbi9hcmNoL3g4Ni9odm0vbXRyci5jCkBA IC03MTgsNyArNzE4LDggQEAgaW50IGh2bV9zZXRfbWVtX3Bpbm5lZF9jYWNoZWF0dHIoc3RydWN0 IGRvbWFpbiAqZCwgdWludDY0X3QgZ2ZuX3N0YXJ0LAogICAgIHJldHVybiAwOwogfQogCi1zdGF0 aWMgaW50IGh2bV9zYXZlX210cnJfbXNyX29uZShzdHJ1Y3QgdmNwdSAqdiwgaHZtX2RvbWFpbl9j b250ZXh0X3QgKmgpCitzdGF0aWMgZW51bSBzYXZlX3JldHVybl90eXBlX3QgaHZtX3NhdmVfbXRy cl9tc3Ioc3RydWN0IHZjcHUgKnYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgaHZtX2RvbWFpbl9jb250ZXh0X3QgKmgpCiB7CiAgICAgY29uc3Qgc3Ry dWN0IG10cnJfc3RhdGUgKm10cnJfc3RhdGUgPSAmdi0+YXJjaC5odm1fdmNwdS5tdHJyOwogICAg IHN0cnVjdCBodm1faHdfbXRyciBod19tdHJyOwpAQCAtNzU0LDIyICs3NTUsMTEgQEAgc3RhdGlj IGludCBodm1fc2F2ZV9tdHJyX21zcl9vbmUoc3RydWN0IHZjcHUgKnYsIGh2bV9kb21haW5fY29u dGV4dF90ICpoKQogICAgICAgICBod19tdHJyLm1zcl9tdHJyX2ZpeGVkW2ldID0KICAgICAgICAg ICAgICgodWludDY0X3QqKW10cnJfc3RhdGUtPmZpeGVkX3JhbmdlcylbaV07CiAKLSAgICByZXR1 cm4gaHZtX3NhdmVfZW50cnkoTVRSUiwgdi0+dmNwdV9pZCwgaCwgJmh3X210cnIpOworICAgIGlm ICggaHZtX3NhdmVfZW50cnkoTVRSUiwgdi0+dmNwdV9pZCwgaCwgJmh3X210cnIpICE9IDAgKQor ICAgICAgICByZXR1cm4gRVJSOworICAgIHJldHVybiBPSzsKICB9CiAKLXN0YXRpYyBpbnQgaHZt X3NhdmVfbXRycl9tc3Ioc3RydWN0IGRvbWFpbiAqZCwgaHZtX2RvbWFpbl9jb250ZXh0X3QgKmgp Ci17Ci0gICAgc3RydWN0IHZjcHUgKnY7Ci0KLSAgICAvKiBzYXZlIG10cnImcGF0ICovCi0gICAg Zm9yX2VhY2hfdmNwdShkLCB2KQotICAgIHsKLSAgICAgICAgaWYgKCBodm1fc2F2ZV9tdHJyX21z cl9vbmUodiwgaCkgIT0gMCApCi0gICAgICAgICAgICByZXR1cm4gMTsKLSAgICB9Ci0gICAgcmV0 dXJuIDA7Ci19Ci0KIHN0YXRpYyBpbnQgaHZtX2xvYWRfbXRycl9tc3Ioc3RydWN0IGRvbWFpbiAq ZCwgaHZtX2RvbWFpbl9jb250ZXh0X3QgKmgpCiB7CiAgICAgaW50IHZjcHVpZCwgaTsKQEAgLTgy MCw3ICs4MTAsNyBAQCBzdGF0aWMgaW50IGh2bV9sb2FkX210cnJfbXNyKHN0cnVjdCBkb21haW4g KmQsIGh2bV9kb21haW5fY29udGV4dF90ICpoKQogICAgIHJldHVybiAwOwogfQogCi1IVk1fUkVH SVNURVJfU0FWRV9SRVNUT1JFKE1UUlIsIGh2bV9zYXZlX210cnJfbXNyLCBodm1fc2F2ZV9tdHJy X21zcl9vbmUsCitIVk1fUkVHSVNURVJfU0FWRV9SRVNUT1JFKE1UUlIsIGh2bV9zYXZlX210cnJf bXNyLCBOVUxMLAogICAgICAgICAgICAgICAgICAgICAgICAgICBodm1fbG9hZF9tdHJyX21zciwg MSwgSFZNU1JfUEVSX1ZDUFUpOwogCiB2b2lkIG1lbW9yeV90eXBlX2NoYW5nZWQoc3RydWN0IGRv bWFpbiAqZCkKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9odm0vcG10aW1lci5jIGIveGVuL2Fy Y2gveDg2L2h2bS9wbXRpbWVyLmMKaW5kZXggMGE1ZThjZS4uYjk2YWI1YiAxMDA2NDQKLS0tIGEv eGVuL2FyY2gveDg2L2h2bS9wbXRpbWVyLmMKKysrIGIveGVuL2FyY2gveDg2L2h2bS9wbXRpbWVy LmMKQEAgLTI0OSwxNSArMjQ5LDE3IEBAIHN0YXRpYyBpbnQgaGFuZGxlX3BtdF9pbygKICAgICBy ZXR1cm4gWDg2RU1VTF9PS0FZOwogfQogCi1zdGF0aWMgaW50IGFjcGlfc2F2ZShzdHJ1Y3QgZG9t YWluICpkLCBodm1fZG9tYWluX2NvbnRleHRfdCAqaCkKK3N0YXRpYyBlbnVtIHNhdmVfcmV0dXJu X3R5cGVfdCBhY3BpX3NhdmUoc3RydWN0IHZjcHUgKnYsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGh2bV9kb21haW5fY29udGV4dF90ICpoKQogeworICAgIHN0cnVj dCBkb21haW4gKmQgPSB2LT5kb21haW47CiAgICAgc3RydWN0IGh2bV9od19hY3BpICphY3BpID0g JmQtPmFyY2guaHZtX2RvbWFpbi5hY3BpOwogICAgIFBNVFN0YXRlICpzID0gJmQtPmFyY2guaHZt X2RvbWFpbi5wbF90aW1lLT52cG10OwogICAgIHVpbnQzMl90IHgsIG1zYiA9IGFjcGktPnRtcl92 YWwgJiBUTVJfVkFMX01TQjsKICAgICBpbnQgcmM7CiAKICAgICBpZiAoICFoYXNfdnBtKGQpICkK LSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBPSzsKIAogICAgIHNwaW5fbG9jaygm cy0+bG9jayk7CiAKQEAgLTI3Nyw3ICsyNzksOSBAQCBzdGF0aWMgaW50IGFjcGlfc2F2ZShzdHJ1 Y3QgZG9tYWluICpkLCBodm1fZG9tYWluX2NvbnRleHRfdCAqaCkKIAogICAgIHNwaW5fdW5sb2Nr KCZzLT5sb2NrKTsKIAotICAgIHJldHVybiByYzsKKyAgICBpZiAoIHJjICE9IDAgKQorICAgICAg ICByZXR1cm4gRVJSOworICAgIHJldHVybiBPSzsKIH0KIAogc3RhdGljIGludCBhY3BpX2xvYWQo c3RydWN0IGRvbWFpbiAqZCwgaHZtX2RvbWFpbl9jb250ZXh0X3QgKmgpCmRpZmYgLS1naXQgYS94 ZW4vYXJjaC94ODYvaHZtL3J0Yy5jIGIveGVuL2FyY2gveDg2L2h2bS9ydGMuYwppbmRleCBjZTdl NzFiLi5lNGE5NzIwIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvaHZtL3J0Yy5jCisrKyBiL3hl bi9hcmNoL3g4Ni9odm0vcnRjLmMKQEAgLTczNywxOCArNzM3LDIxIEBAIHZvaWQgcnRjX21pZ3Jh dGVfdGltZXJzKHN0cnVjdCB2Y3B1ICp2KQogfQogCiAvKiBTYXZlIFJUQyBoYXJkd2FyZSBzdGF0 ZSAqLwotc3RhdGljIGludCBydGNfc2F2ZShzdHJ1Y3QgZG9tYWluICpkLCBodm1fZG9tYWluX2Nv bnRleHRfdCAqaCkKK3N0YXRpYyBlbnVtIHNhdmVfcmV0dXJuX3R5cGVfdCBydGNfc2F2ZShzdHJ1 Y3QgdmNwdSAqdiwgaHZtX2RvbWFpbl9jb250ZXh0X3QgKmgpCiB7CisgICAgc3RydWN0IGRvbWFp biAqZCA9IHYtPmRvbWFpbjsKICAgICBSVENTdGF0ZSAqcyA9IGRvbWFpbl92cnRjKGQpOwogICAg IGludCByYzsKIAogICAgIGlmICggIWhhc192cnRjKGQpICkKLSAgICAgICAgcmV0dXJuIDA7Cisg ICAgICAgIHJldHVybiBPSzsKIAogICAgIHNwaW5fbG9jaygmcy0+bG9jayk7CiAgICAgcmMgPSBo dm1fc2F2ZV9lbnRyeShSVEMsIDAsIGgsICZzLT5odyk7CiAgICAgc3Bpbl91bmxvY2soJnMtPmxv Y2spOwotICAgIHJldHVybiByYzsKKyAgICBpZiAoIHJjICE9IDAgKQorICAgICAgICByZXR1cm4g RVJSOworICAgIHJldHVybiBPSzsKIH0KIAogLyogUmVsb2FkIHRoZSBoYXJkd2FyZSBzdGF0ZSBm cm9tIGEgc2F2ZWQgZG9tYWluICovCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvaHZtL3NhdmUu YyBiL3hlbi9hcmNoL3g4Ni9odm0vc2F2ZS5jCmluZGV4IDFiMjhlN2YuLjEyMzBmMGUgMTAwNjQ0 Ci0tLSBhL3hlbi9hcmNoL3g4Ni9odm0vc2F2ZS5jCisrKyBiL3hlbi9hcmNoL3g4Ni9odm0vc2F2 ZS5jCkBAIC0xNzQsNyArMTc0LDcgQEAgaW50IGh2bV9zYXZlX29uZShzdHJ1Y3QgZG9tYWluICpk LCB1bnNpZ25lZCBpbnQgdHlwZWNvZGUsIHVuc2lnbmVkIGludCBpbnN0YW5jZSwKICAgICAgICAg ICAgIHJ2ID0gaHZtX3NyX2hhbmRsZXJzW3R5cGVjb2RlXS5zYXZlX29uZShkLT52Y3B1W2luc3Rh bmNlXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAmY3R4dCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJ2ID0gaHZtX3NyX2hhbmRsZXJz W3R5cGVjb2RlXS5zYXZlKGQsICZjdHh0KTsKKyAgICAgICAgICAgIHJ2ID0gaHZtX3NyX2hhbmRs ZXJzW3R5cGVjb2RlXS5zYXZlKGQtPnZjcHVbaW5zdGFuY2VdLCAmY3R4dCk7CiAKICAgICAgICAg aWYgKCBydiAhPSAwICkKICAgICAgICAgewpAQCAtMjA3LDcgKzIwNyw4IEBAIGludCBodm1fc2F2 ZV9vbmUoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgaW50IHR5cGVjb2RlLCB1bnNpZ25lZCBp bnQgaW5zdGFuY2UsCiAgICAgewogICAgICAgICBmb3JfZWFjaF92Y3B1ICggZCwgdiApCiAgICAg ICAgIHsKLSAgICAgICAgICAgIGlmICggKHJ2ID0gaHZtX3NyX2hhbmRsZXJzW3R5cGVjb2RlXS5z YXZlKGQsICZjdHh0KSkgIT0gMCApCisgICAgICAgICAgICBpZiAoIChydiA9IGh2bV9zcl9oYW5k bGVyc1t0eXBlY29kZV0uc2F2ZShkLT52Y3B1W2luc3RhbmNlXSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjdHh0KSkgIT0gMCApCiAgICAg ICAgICAgICB7CiAgICAgICAgICAgICAgICAgcHJpbnRrKFhFTkxPR19HX0VSUiAiSFZNJWQgc2F2 ZTogZmFpbGVkIHRvIHNhdmUgdHlwZSAlIlBSSXUxNiIgKCVkKVxuIiwKICAgICAgICAgICAgICAg ICAgICAgICAgZC0+ZG9tYWluX2lkLCB0eXBlY29kZSwgcnYpOwpAQCAtMjUwLDcgKzI1MSw2IEBA IGludCBodm1fc2F2ZShzdHJ1Y3QgZG9tYWluICpkLCBodm1fZG9tYWluX2NvbnRleHRfdCAqaCkK ICAgICBzdHJ1Y3QgaHZtX3NhdmVfaGVhZGVyIGhkcjsKICAgICBzdHJ1Y3QgaHZtX3NhdmVfZW5k IGVuZDsKICAgICBodm1fc2F2ZV9oYW5kbGVyIGhhbmRsZXI7Ci0gICAgaHZtX3NhdmVfb25lX2hh bmRsZXIgc2F2ZV9vbmVfaGFuZGxlcjsKICAgICB1bnNpZ25lZCBpbnQgaSwgcmM7CiAgICAgc3Ry dWN0IHZjcHUgKnYgPSBOVUxMOwogCkBAIC0yODAsMTQgKzI4MCwxNCBAQCBpbnQgaHZtX3NhdmUo c3RydWN0IGRvbWFpbiAqZCwgaHZtX2RvbWFpbl9jb250ZXh0X3QgKmgpCiAgICAgZm9yICggaSA9 IDA7IGkgPD0gSFZNX1NBVkVfQ09ERV9NQVg7IGkrKyApCiAgICAgewogICAgICAgICBoYW5kbGVy ID0gaHZtX3NyX2hhbmRsZXJzW2ldLnNhdmU7Ci0gICAgICAgIHNhdmVfb25lX2hhbmRsZXIgPSBo dm1fc3JfaGFuZGxlcnNbaV0uc2F2ZV9vbmU7Ci0gICAgICAgIGlmICggc2F2ZV9vbmVfaGFuZGxl ciAhPSBOVUxMICkKKyAgICAgICAgaWYgKCBoYW5kbGVyICE9IE5VTEwgKQogICAgICAgICB7CiAg ICAgICAgICAgICBwcmludGsoWEVOTE9HX0dfSU5GTyAiSFZNJWQgc2F2ZTogJXNcbiIsCiAgICAg ICAgICAgICAgICAgICAgZC0+ZG9tYWluX2lkLCBodm1fc3JfaGFuZGxlcnNbaV0ubmFtZSk7CisK ICAgICAgICAgICAgIGZvcl9lYWNoX3ZjcHUgKCBkLCB2ICkKICAgICAgICAgICAgIHsKLSAgICAg ICAgICAgICAgICByYyA9IHNhdmVfb25lX2hhbmRsZXIodiwgaCk7CisgICAgICAgICAgICAgICAg cmMgPSBoYW5kbGVyKHYsIGgpOwogICAgICAgICAgICAgICAgIGlmKCByYyA9PSBDT05USU5VRSAp CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCkBAIC0zMDAsMjMgKzMwMCw2IEBAIGlu dCBodm1fc2F2ZShzdHJ1Y3QgZG9tYWluICpkLCBodm1fZG9tYWluX2NvbnRleHRfdCAqaCkKICAg ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgZWxzZSBp ZiAoIGhhbmRsZXIgIT0gTlVMTCApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHByaW50ayhYRU5M T0dfR19JTkZPICJIVk0lZCBzYXZlOiAlc1xuIiwKLSAgICAgICAgICAgICAgICAgICBkLT5kb21h aW5faWQsIGh2bV9zcl9oYW5kbGVyc1tpXS5uYW1lKTsKLQotICAgICAgICAgICAgcmMgPSBoYW5k bGVyKGQsIGgpOwotICAgICAgICAgICAgaWYoIHJjID09IENPTlRJTlVFICkKLSAgICAgICAgICAg ICAgICBjb250aW51ZTsKLQotICAgICAgICAgICAgaWYoIHJjICE9IDAgKQotICAgICAgICAgICAg ewotICAgICAgICAgICAgICAgIHByaW50ayhYRU5MT0dfR19FUlIKLSAgICAgICAgICAgICAgICAg ICAgICAgIkhWTSVkIHNhdmU6IGZhaWxlZCB0byBzYXZlIHR5cGUgJSJQUkl1MTYiXG4iLAotICAg ICAgICAgICAgICAgICAgICAgICBkLT5kb21haW5faWQsIGkpOwotICAgICAgICAgICAgICAgIHJl dHVybiAtRUZBVUxUOwotICAgICAgICAgICAgfQotICAgICAgICB9CiAgICAgfQogCiAgICAgLyog U2F2ZSBhbiBlbmQtb2YtZmlsZSBtYXJrZXIgKi8KZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9o dm0vdmlvYXBpYy5jIGIveGVuL2FyY2gveDg2L2h2bS92aW9hcGljLmMKaW5kZXggNjZmNTRlNC4u MWY1OWQ2NCAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2h2bS92aW9hcGljLmMKKysrIGIveGVu L2FyY2gveDg2L2h2bS92aW9hcGljLmMKQEAgLTU2OSwxMiArNTY5LDE0IEBAIGludCB2aW9hcGlj X2dldF90cmlnZ2VyX21vZGUoY29uc3Qgc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgaW50IGdz aSkKICAgICByZXR1cm4gdmlvYXBpYy0+cmVkaXJ0YmxbcGluXS5maWVsZHMudHJpZ19tb2RlOwog fQogCi1zdGF0aWMgaW50IGlvYXBpY19zYXZlKHN0cnVjdCBkb21haW4gKmQsIGh2bV9kb21haW5f Y29udGV4dF90ICpoKQorc3RhdGljIGVudW0gc2F2ZV9yZXR1cm5fdHlwZV90IGlvYXBpY19zYXZl KHN0cnVjdCB2Y3B1ICp2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGh2bV9kb21haW5fY29udGV4dF90ICpoKQogeworICAgIHN0cnVjdCBkb21haW4gKmQgPSB2 LT5kb21haW47CiAgICAgc3RydWN0IGh2bV92aW9hcGljICpzOwogCiAgICAgaWYgKCAhaGFzX3Zp b2FwaWMoZCkgKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIE9LOwogCiAgICAg cyA9IGRvbWFpbl92aW9hcGljKGQsIDApOwogCkBAIC01ODIsNyArNTg0LDkgQEAgc3RhdGljIGlu dCBpb2FwaWNfc2F2ZShzdHJ1Y3QgZG9tYWluICpkLCBodm1fZG9tYWluX2NvbnRleHRfdCAqaCkK ICAgICAgICAgIGQtPmFyY2guaHZtX2RvbWFpbi5ucl92aW9hcGljcyAhPSAxICkKICAgICAgICAg cmV0dXJuIC1FT1BOT1RTVVBQOwogCi0gICAgcmV0dXJuIGh2bV9zYXZlX2VudHJ5KElPQVBJQywg MCwgaCwgJnMtPmRvbVUpOworICAgIGlmICggaHZtX3NhdmVfZW50cnkoSU9BUElDLCAwLCBoLCAm cy0+ZG9tVSkgIT0gMCApCisgICAgICAgIHJldHVybiBFUlI7CisgICAgcmV0dXJuIE9LOwogfQog CiBzdGF0aWMgaW50IGlvYXBpY19sb2FkKHN0cnVjdCBkb21haW4gKmQsIGh2bV9kb21haW5fY29u dGV4dF90ICpoKQpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2h2bS92aXJpZGlhbi5jIGIveGVu L2FyY2gveDg2L2h2bS92aXJpZGlhbi5jCmluZGV4IDQ2NmUwMTUuLmRkYWU2NTcgMTAwNjQ0Ci0t LSBhL3hlbi9hcmNoL3g4Ni9odm0vdmlyaWRpYW4uYworKysgYi94ZW4vYXJjaC94ODYvaHZtL3Zp cmlkaWFuLmMKQEAgLTk5MCw4ICs5OTAsMTAgQEAgb3V0OgogICAgIHJldHVybiBIVk1fSENBTExf Y29tcGxldGVkOwogfQogCi1zdGF0aWMgaW50IHZpcmlkaWFuX3NhdmVfZG9tYWluX2N0eHQoc3Ry dWN0IGRvbWFpbiAqZCwgaHZtX2RvbWFpbl9jb250ZXh0X3QgKmgpCitzdGF0aWMgZW51bSBzYXZl X3JldHVybl90eXBlX3QgdmlyaWRpYW5fc2F2ZV9kb21haW5fY3R4dChzdHJ1Y3QgdmNwdSAqdiwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGh2bV9kb21haW5fY29udGV4dF90ICpoKQogeworICAgIHN0cnVjdCBkb21haW4gKmQgPSB2LT5k b21haW47CiAgICAgc3RydWN0IGh2bV92aXJpZGlhbl9kb21haW5fY29udGV4dCBjdHh0ID0gewog ICAgICAgICAudGltZV9yZWZfY291bnQgPSBkLT5hcmNoLmh2bV9kb21haW4udmlyaWRpYW4udGlt ZV9yZWZfY291bnQudmFsLAogICAgICAgICAuaHlwZXJjYWxsX2dwYSAgPSBkLT5hcmNoLmh2bV9k b21haW4udmlyaWRpYW4uaHlwZXJjYWxsX2dwYS5yYXcsCkBAIC0xMDAwLDEyICsxMDAyLDE1IEBA IHN0YXRpYyBpbnQgdmlyaWRpYW5fc2F2ZV9kb21haW5fY3R4dChzdHJ1Y3QgZG9tYWluICpkLCBo dm1fZG9tYWluX2NvbnRleHRfdCAqaCkKICAgICB9OwogCiAgICAgaWYgKCAhaXNfdmlyaWRpYW5f ZG9tYWluKGQpICkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBPSzsKIAotICAg IHJldHVybiAoaHZtX3NhdmVfZW50cnkoVklSSURJQU5fRE9NQUlOLCAwLCBoLCAmY3R4dCkgIT0g MCk7CisgICAgaWYgKCBodm1fc2F2ZV9lbnRyeShWSVJJRElBTl9ET01BSU4sIDAsIGgsICZjdHh0 KSAhPSAwICkKKyAgICAgICAgcmV0dXJuIEVSUjsKKyAgICByZXR1cm4gT0s7CiB9CiAKLXN0YXRp YyBpbnQgdmlyaWRpYW5fbG9hZF9kb21haW5fY3R4dChzdHJ1Y3QgZG9tYWluICpkLCBodm1fZG9t YWluX2NvbnRleHRfdCAqaCkKK3N0YXRpYyBpbnQgdmlyaWRpYW5fbG9hZF9kb21haW5fY3R4dChz dHJ1Y3QgZG9tYWluICpkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh2 bV9kb21haW5fY29udGV4dF90ICpoKQogewogICAgIHN0cnVjdCBodm1fdmlyaWRpYW5fZG9tYWlu X2NvbnRleHQgY3R4dDsKIApAQCAtMTAyNiwzMCArMTAzMSwyMSBAQCBzdGF0aWMgaW50IHZpcmlk aWFuX2xvYWRfZG9tYWluX2N0eHQoc3RydWN0IGRvbWFpbiAqZCwgaHZtX2RvbWFpbl9jb250ZXh0 X3QgKmgpCiBIVk1fUkVHSVNURVJfU0FWRV9SRVNUT1JFKFZJUklESUFOX0RPTUFJTiwgdmlyaWRp YW5fc2F2ZV9kb21haW5fY3R4dCwgTlVMTCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgdmly aWRpYW5fbG9hZF9kb21haW5fY3R4dCwgMSwgSFZNU1JfUEVSX0RPTSk7CiAKLXN0YXRpYyBpbnQg dmlyaWRpYW5fc2F2ZV92Y3B1X2N0eHRfb25lKHN0cnVjdCB2Y3B1ICp2LCBodm1fZG9tYWluX2Nv bnRleHRfdCAqaCkKK3N0YXRpYyBlbnVtIHNhdmVfcmV0dXJuX3R5cGVfdCB2aXJpZGlhbl9zYXZl X3ZjcHVfY3R4dChzdHJ1Y3QgdmNwdSAqdiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBodm1fZG9tYWluX2NvbnRleHRfdCAqaCkKIHsKICAg ICBzdHJ1Y3QgaHZtX3ZpcmlkaWFuX3ZjcHVfY29udGV4dCBjdHh0OwogCiAgICAgaWYgKCAhaXNf dmlyaWRpYW5fZG9tYWluKHYtPmRvbWFpbikgKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAg cmV0dXJuIE9LOwogCiAgICAgbWVtc2V0KCZjdHh0LCAwLCBzaXplb2YoY3R4dCkpOwogICAgIGN0 eHQudnBfYXNzaXN0X21zciA9IHYtPmFyY2guaHZtX3ZjcHUudmlyaWRpYW4udnBfYXNzaXN0Lm1z ci5yYXc7CiAgICAgY3R4dC52cF9hc3Npc3RfcGVuZGluZyA9IHYtPmFyY2guaHZtX3ZjcHUudmly aWRpYW4udnBfYXNzaXN0LnBlbmRpbmc7CiAKLSAgICByZXR1cm4gaHZtX3NhdmVfZW50cnkoVklS SURJQU5fVkNQVSwgdi0+dmNwdV9pZCwgaCwgJmN0eHQpOwotfQotCi1zdGF0aWMgaW50IHZpcmlk aWFuX3NhdmVfdmNwdV9jdHh0KHN0cnVjdCBkb21haW4gKmQsIGh2bV9kb21haW5fY29udGV4dF90 ICpoKQotewotICAgIHN0cnVjdCB2Y3B1ICp2OwotCi0gICAgZm9yX2VhY2hfdmNwdSggZCwgdiAp IHsKLSAgICAgICAgaWYgKCB2aXJpZGlhbl9zYXZlX3ZjcHVfY3R4dF9vbmUodiwgaCkgIT0gMCAp Ci0gICAgICAgICAgICByZXR1cm4gMTsKLSAgICB9Ci0KLSAgICByZXR1cm4gMDsKKyAgICBpZiAo IGh2bV9zYXZlX2VudHJ5KFZJUklESUFOX1ZDUFUsIHYtPnZjcHVfaWQsIGgsICZjdHh0KSAhPSAw ICkKKyAgICAgICAgcmV0dXJuIEVSUjsKKyAgICByZXR1cm4gT0s7CiB9CiAKIHN0YXRpYyBpbnQg dmlyaWRpYW5fbG9hZF92Y3B1X2N0eHQoc3RydWN0IGRvbWFpbiAqZCwgaHZtX2RvbWFpbl9jb250 ZXh0X3QgKmgpCkBAIC0xMDgzLDcgKzEwNzksNyBAQCBzdGF0aWMgaW50IHZpcmlkaWFuX2xvYWRf dmNwdV9jdHh0KHN0cnVjdCBkb21haW4gKmQsIGh2bV9kb21haW5fY29udGV4dF90ICpoKQogfQog CiBIVk1fUkVHSVNURVJfU0FWRV9SRVNUT1JFKFZJUklESUFOX1ZDUFUsIHZpcmlkaWFuX3NhdmVf dmNwdV9jdHh0LAotICAgICAgICAgICAgICAgICAgICAgICAgICB2aXJpZGlhbl9zYXZlX3ZjcHVf Y3R4dF9vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsCiAgICAgICAgICAgICAg ICAgICAgICAgICAgIHZpcmlkaWFuX2xvYWRfdmNwdV9jdHh0LCAxLCBIVk1TUl9QRVJfVkNQVSk7 CiAKIHN0YXRpYyBpbnQgX19pbml0IHBhcnNlX3ZpcmlkaWFuX3ZlcnNpb24oY29uc3QgY2hhciAq YXJnKQpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2h2bS92bGFwaWMuYyBiL3hlbi9hcmNoL3g4 Ni9odm0vdmxhcGljLmMKaW5kZXggZWZmNjA3MC4uMjI3YmVkNCAxMDA2NDQKLS0tIGEveGVuL2Fy Y2gveDg2L2h2bS92bGFwaWMuYworKysgYi94ZW4vYXJjaC94ODYvaHZtL3ZsYXBpYy5jCkBAIC0x NDM1LDQ1ICsxNDM1LDM2IEBAIHN0YXRpYyB2b2lkIGxhcGljX3JlYXJtKHN0cnVjdCB2bGFwaWMg KnMpCiAgICAgcy0+dGltZXJfbGFzdF91cGRhdGUgPSBzLT5wdC5sYXN0X3BsdF9ndGltZTsKIH0K IAotc3RhdGljIGludCBsYXBpY19zYXZlX2hpZGRlbihzdHJ1Y3QgZG9tYWluICpkLCBodm1fZG9t YWluX2NvbnRleHRfdCAqaCkKK3N0YXRpYyBlbnVtIHNhdmVfcmV0dXJuX3R5cGVfdCBsYXBpY19z YXZlX2hpZGRlbihzdHJ1Y3QgdmNwdSAqdiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBodm1fZG9tYWluX2NvbnRleHRfdCAqaCkKIHsKLSAgICBzdHJ1 Y3QgdmNwdSAqdjsKKyAgICBzdHJ1Y3QgZG9tYWluICpkID0gdi0+ZG9tYWluOwogICAgIHN0cnVj dCB2bGFwaWMgKnM7Ci0gICAgaW50IHJjID0gMDsKIAogICAgIGlmICggIWhhc192bGFwaWMoZCkg KQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgICByZXR1cm4gT0s7CiAKLSAgICBmb3Jf ZWFjaF92Y3B1ICggZCwgdiApCi0gICAgewotICAgICAgICBzID0gdmNwdV92bGFwaWModik7Ci0g ICAgICAgIGlmICggKHJjID0gaHZtX3NhdmVfZW50cnkoTEFQSUMsIHYtPnZjcHVfaWQsIGgsICZz LT5odykpICE9IDAgKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgcmV0dXJuIHJj OworICAgIHMgPSB2Y3B1X3ZsYXBpYyh2KTsKKyAgICBpZiAoIGh2bV9zYXZlX2VudHJ5KExBUElD LCB2LT52Y3B1X2lkLCBoLCAmcy0+aHcpICE9IDAgKQorICAgICAgICByZXR1cm4gRVJSOworICAg IHJldHVybiBPSzsKIH0KIAotc3RhdGljIGludCBsYXBpY19zYXZlX3JlZ3Moc3RydWN0IGRvbWFp biAqZCwgaHZtX2RvbWFpbl9jb250ZXh0X3QgKmgpCitzdGF0aWMgZW51bSBzYXZlX3JldHVybl90 eXBlX3QgbGFwaWNfc2F2ZV9yZWdzKHN0cnVjdCB2Y3B1ICp2LAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBodm1fZG9tYWluX2NvbnRleHRfdCAqaCkKIHsK LSAgICBzdHJ1Y3QgdmNwdSAqdjsKKyAgICBzdHJ1Y3QgZG9tYWluICpkID0gdi0+ZG9tYWluOwog ICAgIHN0cnVjdCB2bGFwaWMgKnM7Ci0gICAgaW50IHJjID0gMDsKIAogICAgIGlmICggIWhhc192 bGFwaWMoZCkgKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIGZvcl9lYWNoX3ZjcHUgKCBkLCB2 ICkKLSAgICB7Ci0gICAgICAgIGlmICggaHZtX2Z1bmNzLnN5bmNfcGlyX3RvX2lyciApCi0gICAg ICAgICAgICBodm1fZnVuY3Muc3luY19waXJfdG9faXJyKHYpOwotCi0gICAgICAgIHMgPSB2Y3B1 X3ZsYXBpYyh2KTsKLSAgICAgICAgaWYgKCAocmMgPSBodm1fc2F2ZV9lbnRyeShMQVBJQ19SRUdT LCB2LT52Y3B1X2lkLCBoLCBzLT5yZWdzKSkgIT0gMCApCi0gICAgICAgICAgICBicmVhazsKLSAg ICB9CisgICAgICAgIHJldHVybiBPSzsKKyAgICBpZiAoIGh2bV9mdW5jcy5zeW5jX3Bpcl90b19p cnIgKQorICAgICAgICBodm1fZnVuY3Muc3luY19waXJfdG9faXJyKHYpOwogCi0gICAgcmV0dXJu IHJjOworICAgIHMgPSB2Y3B1X3ZsYXBpYyh2KTsKKyAgICBpZiAoIGh2bV9zYXZlX2VudHJ5KExB UElDX1JFR1MsIHYtPnZjcHVfaWQsIGgsIHMtPnJlZ3MpICE9IDAgKQorICAgICAgICByZXR1cm4g RVJSOworICAgIHJldHVybiBPSzsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9o dm0vdnBpYy5jIGIveGVuL2FyY2gveDg2L2h2bS92cGljLmMKaW5kZXggY2E5YjRjYi4uYTAxNDBk OCAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2h2bS92cGljLmMKKysrIGIveGVuL2FyY2gveDg2 L2h2bS92cGljLmMKQEAgLTM3MSwyMyArMzcxLDI1IEBAIHN0YXRpYyBpbnQgdnBpY19pbnRlcmNl cHRfZWxjcl9pbygKICAgICByZXR1cm4gWDg2RU1VTF9PS0FZOwogfQogCi1zdGF0aWMgaW50IHZw aWNfc2F2ZShzdHJ1Y3QgZG9tYWluICpkLCBodm1fZG9tYWluX2NvbnRleHRfdCAqaCkKK3N0YXRp YyBlbnVtIHNhdmVfcmV0dXJuX3R5cGVfdCB2cGljX3NhdmUoc3RydWN0IHZjcHUgKnYsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh2bV9kb21haW5fY29udGV4dF90 ICpoKQogeworICAgIHN0cnVjdCBkb21haW4gKmQgPSB2LT5kb21haW47CiAgICAgc3RydWN0IGh2 bV9od192cGljICpzOwogICAgIGludCBpOwogCiAgICAgaWYgKCAhaGFzX3ZwaWMoZCkgKQotICAg ICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIE9LOwogCiAgICAgLyogU2F2ZSB0aGUgc3Rh dGUgb2YgYm90aCBQSUNzICovCiAgICAgZm9yICggaSA9IDA7IGkgPCAyIDsgaSsrICkKICAgICB7 CiAgICAgICAgIHMgPSAmZC0+YXJjaC5odm1fZG9tYWluLnZwaWNbaV07Ci0gICAgICAgIGlmICgg aHZtX3NhdmVfZW50cnkoUElDLCBpLCBoLCBzKSApCi0gICAgICAgICAgICByZXR1cm4gMTsKKyAg ICAgICAgaWYgKCBodm1fc2F2ZV9lbnRyeShQSUMsIGksIGgsIHMpICE9IDAgKQorICAgICAgICAg ICAgcmV0dXJuIEVSUjsKICAgICB9CiAKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gT0s7CiB9 CiAKIHN0YXRpYyBpbnQgdnBpY19sb2FkKHN0cnVjdCBkb21haW4gKmQsIGh2bV9kb21haW5fY29u dGV4dF90ICpoKQpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vc2F2ZS5oIGIv eGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vc2F2ZS5oCmluZGV4IDI1Mzg2MjguLjIyZTVhOTIgMTAw NjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL2FzbS14ODYvaHZtL3NhdmUuaAorKysgYi94ZW4vaW5jbHVk ZS9hc20teDg2L2h2bS9zYXZlLmgKQEAgLTkxLDExICs5MSwxNyBAQCBzdGF0aWMgaW5saW5lIHVp bnQxNl90IGh2bV9sb2FkX2luc3RhbmNlKHN0cnVjdCBodm1fZG9tYWluX2NvbnRleHQgKmgpCiAg ICAgcmV0dXJuIGQtPmluc3RhbmNlOwogfQogCitlbnVtIHNhdmVfcmV0dXJuX3R5cGVfdCB7Cisg ICAgT0ssCisgICAgRVJSLAorICAgIENPTlRJTlVFLAorfTsKKwogLyogSGFuZGxlciB0eXBlcyBm b3IgZGlmZmVyZW50IHR5cGVzIG9mIHNhdmUtZmlsZSBlbnRyeS4gCiAgKiBUaGUgc2F2ZSBoYW5k bGVyIG1heSBzYXZlIG11bHRpcGxlIGluc3RhbmNlcyBvZiBhIHR5cGUgaW50byB0aGUgYnVmZmVy OwogICogdGhlIGxvYWQgaGFuZGxlciB3aWxsIGJlIGNhbGxlZCBvbmNlIGZvciBlYWNoIGluc3Rh bmNlIGZvdW5kIHdoZW4KICAqIHJlc3RvcmluZy4gIEJvdGggcmV0dXJuIG5vbi16ZXJvIG9uIGVy cm9yLiAqLwotdHlwZWRlZiBpbnQgKCpodm1fc2F2ZV9oYW5kbGVyKSAoc3RydWN0IGRvbWFpbiAq ZCwgCit0eXBlZGVmIGVudW0gc2F2ZV9yZXR1cm5fdHlwZV90ICgqaHZtX3NhdmVfaGFuZGxlcikg KHN0cnVjdCAgdmNwdSAqdiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh2bV9k b21haW5fY29udGV4dF90ICpoKTsKIHR5cGVkZWYgaW50ICgqaHZtX3NhdmVfb25lX2hhbmRsZXIp KHN0cnVjdCAgdmNwdSAqdiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh2 bV9kb21haW5fY29udGV4dF90ICpoKTsKLS0gCjIuNy40CgoKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2 ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWls bWFuL2xpc3RpbmZvL3hlbi1kZXZlbA==