From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alexandru Isaila Subject: [PATCH v17 12/13] x86/hvm: Remove redundant save functions Date: Wed, 22 Aug 2018 17:02:42 +0300 Message-ID: <1534946563-12084-13-git-send-email-aisaila@bitdefender.com> References: <1534946563-12084-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: <1534946563-12084-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 bSB0byB2Y3B1IGluIHRoZQpzYXZlIGZ1bmNzLgoKU2lnbmVkLW9mZi1ieTogQWxleGFuZHJ1IElz YWlsYSA8YWlzYWlsYUBiaXRkZWZlbmRlci5jb20+CgotLS0KQ2hhbmdlcyBzaW5jZSBWMTY6CiAg ICAgICAgLSBEcm9wIHRoZSAiaW5zdGFuY2UgPSAwIiBmcm9tIGh2bV9zYXZlX29uZQoJLSBDaGFu Z2VkIGlmICggaGFuZGxlciApIHRvIGlmICggIWhhbmRsZXIgKQoJLSBDYWxsIGhhbmRsZXIoZC0+ dmNwdVswXSBmb3IgdGhlIEhWTVNSX1BFUl9ET00gY2FzZS4KLS0tCiB4ZW4vYXJjaC94ODYvY3B1 L21jaGVjay92bWNlLmMgfCAxOCArLS0tLS0tLS0tLQogeGVuL2FyY2gveDg2L2h2bS9ocGV0LmMg ICAgICAgIHwgIDcgKystLQogeGVuL2FyY2gveDg2L2h2bS9odm0uYyAgICAgICAgIHwgNzMgKysr LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiB4ZW4vYXJjaC94ODYvaHZt L2k4MjU0LmMgICAgICAgfCAgNSArLS0KIHhlbi9hcmNoL3g4Ni9odm0vaXJxLmMgICAgICAgICB8 IDE1ICsrKysrLS0tLQogeGVuL2FyY2gveDg2L2h2bS9tdHJyLmMgICAgICAgIHwgMjAgKystLS0t LS0tLS0tCiB4ZW4vYXJjaC94ODYvaHZtL3BtdGltZXIuYyAgICAgfCAgNSArLS0KIHhlbi9hcmNo L3g4Ni9odm0vcnRjLmMgICAgICAgICB8ICA1ICstLQogeGVuL2FyY2gveDg2L2h2bS9zYXZlLmMg ICAgICAgIHwgMjYgKysrKysrKystLS0tLS0tCiB4ZW4vYXJjaC94ODYvaHZtL3Zpb2FwaWMuYyAg ICAgfCAgNSArLS0KIHhlbi9hcmNoL3g4Ni9odm0vdmlyaWRpYW4uYyAgICB8IDIzICsrKy0tLS0t LS0tLS0KIHhlbi9hcmNoL3g4Ni9odm0vdmxhcGljLmMgICAgICB8IDM4ICsrKy0tLS0tLS0tLS0t LS0tLS0tLS0KIHhlbi9hcmNoL3g4Ni9odm0vdnBpYy5jICAgICAgICB8ICA1ICstLQogeGVuL2lu Y2x1ZGUvYXNtLXg4Ni9odm0vc2F2ZS5oIHwgIDggKystLS0KIDE0IGZpbGVzIGNoYW5nZWQsIDYw IGluc2VydGlvbnMoKyksIDE5MyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94 ODYvY3B1L21jaGVjay92bWNlLmMgYi94ZW4vYXJjaC94ODYvY3B1L21jaGVjay92bWNlLmMKaW5k ZXggMzUwNDRkNy4uNzYzZDU2YiAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2NwdS9tY2hlY2sv dm1jZS5jCisrKyBiL3hlbi9hcmNoL3g4Ni9jcHUvbWNoZWNrL3ZtY2UuYwpAQCAtMzQ5LDcgKzM0 OSw3IEBAIGludCB2bWNlX3dybXNyKHVpbnQzMl90IG1zciwgdWludDY0X3QgdmFsKQogICAgIHJl dHVybiByZXQ7CiB9CiAKLXN0YXRpYyBpbnQgdm1jZV9zYXZlX3ZjcHVfY3R4dF9vbmUoc3RydWN0 IHZjcHUgKnYsIGh2bV9kb21haW5fY29udGV4dF90ICpoKQorc3RhdGljIGludCB2bWNlX3NhdmVf dmNwdV9jdHh0KHN0cnVjdCB2Y3B1ICp2LCBodm1fZG9tYWluX2NvbnRleHRfdCAqaCkKIHsKICAg ICBzdHJ1Y3QgaHZtX3ZtY2VfdmNwdSBjdHh0ID0gewogICAgICAgICAuY2FwcyA9IHYtPmFyY2gu dm1jZS5tY2dfY2FwLApAQCAtMzYxLDIxICszNjEsNiBAQCBzdGF0aWMgaW50IHZtY2Vfc2F2ZV92 Y3B1X2N0eHRfb25lKHN0cnVjdCB2Y3B1ICp2LCBodm1fZG9tYWluX2NvbnRleHRfdCAqaCkKICAg ICByZXR1cm4gaHZtX3NhdmVfZW50cnkoVk1DRV9WQ1BVLCB2LT52Y3B1X2lkLCBoLCAmY3R4dCk7 CiB9CiAKLXN0YXRpYyBpbnQgdm1jZV9zYXZlX3ZjcHVfY3R4dChzdHJ1Y3QgZG9tYWluICpkLCBo dm1fZG9tYWluX2NvbnRleHRfdCAqaCkKLXsKLSAgICBzdHJ1Y3QgdmNwdSAqdjsKLSAgICBpbnQg ZXJyID0gMDsKLQotICAgIGZvcl9lYWNoX3ZjcHUgKCBkLCB2ICkKLSAgICB7Ci0gICAgICAgIGVy ciA9IHZtY2Vfc2F2ZV92Y3B1X2N0eHRfb25lKHYsIGgpOwotICAgICAgICBpZiAoIGVyciApCi0g ICAgICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICByZXR1cm4gZXJyOwotfQotCiBzdGF0aWMg aW50IHZtY2VfbG9hZF92Y3B1X2N0eHQoc3RydWN0IGRvbWFpbiAqZCwgaHZtX2RvbWFpbl9jb250 ZXh0X3QgKmgpCiB7CiAgICAgdW5zaWduZWQgaW50IHZjcHVpZCA9IGh2bV9sb2FkX2luc3RhbmNl KGgpOwpAQCAtMzk2LDcgKzM4MSw2IEBAIHN0YXRpYyBpbnQgdm1jZV9sb2FkX3ZjcHVfY3R4dChz dHJ1Y3QgZG9tYWluICpkLCBodm1fZG9tYWluX2NvbnRleHRfdCAqaCkKIH0KIAogSFZNX1JFR0lT VEVSX1NBVkVfUkVTVE9SRShWTUNFX1ZDUFUsIHZtY2Vfc2F2ZV92Y3B1X2N0eHQsCi0gICAgICAg ICAgICAgICAgICAgICAgICAgIHZtY2Vfc2F2ZV92Y3B1X2N0eHRfb25lLAogICAgICAgICAgICAg ICAgICAgICAgICAgICB2bWNlX2xvYWRfdmNwdV9jdHh0LCAxLCBIVk1TUl9QRVJfVkNQVSk7CiAK IC8qCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvaHZtL2hwZXQuYyBiL3hlbi9hcmNoL3g4Ni9o dm0vaHBldC5jCmluZGV4IGFmZjg2MTMuLjRhZmEyYWIgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4 Ni9odm0vaHBldC5jCisrKyBiL3hlbi9hcmNoL3g4Ni9odm0vaHBldC5jCkBAIC01MTYsMTYgKzUx NiwxNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGh2bV9tbWlvX29wcyBocGV0X21taW9fb3BzID0g ewogfTsKIAogCi1zdGF0aWMgaW50IGhwZXRfc2F2ZShzdHJ1Y3QgZG9tYWluICpkLCBodm1fZG9t YWluX2NvbnRleHRfdCAqaCkKK3N0YXRpYyBpbnQgaHBldF9zYXZlKHN0cnVjdCB2Y3B1ICp2LCBo dm1fZG9tYWluX2NvbnRleHRfdCAqaCkKIHsKKyAgICBzdHJ1Y3QgZG9tYWluICpkID0gdi0+ZG9t YWluOwogICAgIEhQRVRTdGF0ZSAqaHAgPSBkb21haW5fdmhwZXQoZCk7Ci0gICAgc3RydWN0IHZj cHUgKnYgPSBwdF9nbG9iYWxfdmNwdV90YXJnZXQoZCk7CiAgICAgaW50IHJjOwogICAgIHVpbnQ2 NF90IGd1ZXN0X3RpbWU7CiAKICAgICBpZiAoICFoYXNfdmhwZXQoZCkgKQogICAgICAgICByZXR1 cm4gMDsKIAorICAgIHYgPSBwdF9nbG9iYWxfdmNwdV90YXJnZXQoZCk7CiAgICAgd3JpdGVfbG9j aygmaHAtPmxvY2spOwogICAgIGd1ZXN0X3RpbWUgPSAodi0+YXJjaC5odm1fdmNwdS5ndWVzdF90 aW1lID86IGh2bV9nZXRfZ3Vlc3RfdGltZSh2KSkgLwogICAgICAgICAgICAgICAgICBTVElNRV9Q RVJfSFBFVF9USUNLOwpAQCAtNjQwLDcgKzY0MSw3IEBAIHN0YXRpYyBpbnQgaHBldF9sb2FkKHN0 cnVjdCBkb21haW4gKmQsIGh2bV9kb21haW5fY29udGV4dF90ICpoKQogICAgIHJldHVybiAwOwog fQogCi1IVk1fUkVHSVNURVJfU0FWRV9SRVNUT1JFKEhQRVQsIGhwZXRfc2F2ZSwgTlVMTCwgaHBl dF9sb2FkLCAxLCBIVk1TUl9QRVJfRE9NKTsKK0hWTV9SRUdJU1RFUl9TQVZFX1JFU1RPUkUoSFBF VCwgaHBldF9zYXZlLCBocGV0X2xvYWQsIDEsIEhWTVNSX1BFUl9ET00pOwogCiBzdGF0aWMgdm9p ZCBocGV0X3NldChIUEVUU3RhdGUgKmgpCiB7CmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvaHZt L2h2bS5jIGIveGVuL2FyY2gveDg2L2h2bS9odm0uYwppbmRleCA0YTcwMjUxLi44MzFmODZiIDEw MDY0NAotLS0gYS94ZW4vYXJjaC94ODYvaHZtL2h2bS5jCisrKyBiL3hlbi9hcmNoL3g4Ni9odm0v aHZtLmMKQEAgLTc0MCw3ICs3NDAsNyBAQCB2b2lkIGh2bV9kb21haW5fZGVzdHJveShzdHJ1Y3Qg ZG9tYWluICpkKQogICAgIGRlc3Ryb3lfdnBjaV9tbWNmZyhkKTsKIH0KIAotc3RhdGljIGludCBo dm1fc2F2ZV90c2NfYWRqdXN0X29uZShzdHJ1Y3QgdmNwdSAqdiwgaHZtX2RvbWFpbl9jb250ZXh0 X3QgKmgpCitzdGF0aWMgaW50IGh2bV9zYXZlX3RzY19hZGp1c3Qoc3RydWN0IHZjcHUgKnYsIGh2 bV9kb21haW5fY29udGV4dF90ICpoKQogewogICAgIHN0cnVjdCBodm1fdHNjX2FkanVzdCBjdHh0 ID0gewogICAgICAgICAudHNjX2FkanVzdCA9IHYtPmFyY2guaHZtX3ZjcHUubXNyX3RzY19hZGp1 c3QsCkBAIC03NDksMjEgKzc0OSw2IEBAIHN0YXRpYyBpbnQgaHZtX3NhdmVfdHNjX2FkanVzdF9v bmUoc3RydWN0IHZjcHUgKnYsIGh2bV9kb21haW5fY29udGV4dF90ICpoKQogICAgIHJldHVybiBo dm1fc2F2ZV9lbnRyeShUU0NfQURKVVNULCB2LT52Y3B1X2lkLCBoLCAmY3R4dCk7CiB9CiAKLXN0 YXRpYyBpbnQgaHZtX3NhdmVfdHNjX2FkanVzdChzdHJ1Y3QgZG9tYWluICpkLCBodm1fZG9tYWlu X2NvbnRleHRfdCAqaCkKLXsKLSAgICBzdHJ1Y3QgdmNwdSAqdjsKLSAgICBpbnQgZXJyID0gMDsK LQotICAgIGZvcl9lYWNoX3ZjcHUgKCBkLCB2ICkKLSAgICB7Ci0gICAgICAgIGVyciA9IGh2bV9z YXZlX3RzY19hZGp1c3Rfb25lKHYsIGgpOwotICAgICAgICBpZiAoIGVyciApCi0gICAgICAgICAg ICBicmVhazsKLSAgICB9Ci0KLSAgICByZXR1cm4gZXJyOwotfQotCiBzdGF0aWMgaW50IGh2bV9s b2FkX3RzY19hZGp1c3Qoc3RydWN0IGRvbWFpbiAqZCwgaHZtX2RvbWFpbl9jb250ZXh0X3QgKmgp CiB7CiAgICAgdW5zaWduZWQgaW50IHZjcHVpZCA9IGh2bV9sb2FkX2luc3RhbmNlKGgpOwpAQCAt Nzg1LDEwICs3NzAsOSBAQCBzdGF0aWMgaW50IGh2bV9sb2FkX3RzY19hZGp1c3Qoc3RydWN0IGRv bWFpbiAqZCwgaHZtX2RvbWFpbl9jb250ZXh0X3QgKmgpCiB9CiAKIEhWTV9SRUdJU1RFUl9TQVZF X1JFU1RPUkUoVFNDX0FESlVTVCwgaHZtX3NhdmVfdHNjX2FkanVzdCwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgaHZtX3NhdmVfdHNjX2FkanVzdF9vbmUsCiAgICAgICAgICAgICAgICAgICAg ICAgICAgIGh2bV9sb2FkX3RzY19hZGp1c3QsIDEsIEhWTVNSX1BFUl9WQ1BVKTsKIAotc3RhdGlj IGludCBodm1fc2F2ZV9jcHVfY3R4dF9vbmUoc3RydWN0IHZjcHUgKnYsIGh2bV9kb21haW5fY29u dGV4dF90ICpoKQorc3RhdGljIGludCBodm1fc2F2ZV9jcHVfY3R4dChzdHJ1Y3QgdmNwdSAqdiwg aHZtX2RvbWFpbl9jb250ZXh0X3QgKmgpCiB7CiAgICAgc3RydWN0IHNlZ21lbnRfcmVnaXN0ZXIg c2VnOwogICAgIHN0cnVjdCBodm1faHdfY3B1IGN0eHQgPSB7CkBAIC04OTUsMjEgKzg3OSw2IEBA IHN0YXRpYyBpbnQgaHZtX3NhdmVfY3B1X2N0eHRfb25lKHN0cnVjdCB2Y3B1ICp2LCBodm1fZG9t YWluX2NvbnRleHRfdCAqaCkKICAgICByZXR1cm4gaHZtX3NhdmVfZW50cnkoQ1BVLCB2LT52Y3B1 X2lkLCBoLCAmY3R4dCk7CiB9CiAKLXN0YXRpYyBpbnQgaHZtX3NhdmVfY3B1X2N0eHQoc3RydWN0 IGRvbWFpbiAqZCwgaHZtX2RvbWFpbl9jb250ZXh0X3QgKmgpCi17Ci0gICAgc3RydWN0IHZjcHUg KnY7Ci0gICAgaW50IGVyciA9IDA7Ci0KLSAgICBmb3JfZWFjaF92Y3B1ICggZCwgdiApCi0gICAg ewotICAgICAgICBlcnIgPSBodm1fc2F2ZV9jcHVfY3R4dF9vbmUodiwgaCk7Ci0gICAgICAgIGlm ICggZXJyICkKLSAgICAgICAgICAgIGJyZWFrOwotICAgIH0KLQotICAgIHJldHVybiBlcnI7Ci19 Ci0KIC8qIFJldHVybiBhIHN0cmluZyBpbmRpY2F0aW5nIHRoZSBlcnJvciwgb3IgTlVMTCBmb3Ig dmFsaWQuICovCiBjb25zdCBjaGFyICpodm1fZWZlcl92YWxpZChjb25zdCBzdHJ1Y3QgdmNwdSAq diwgdWludDY0X3QgdmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWduZWQgaW50 IGNyMF9wZykKQEAgLTExODEsNyArMTE1MCw3IEBAIHN0YXRpYyBpbnQgaHZtX2xvYWRfY3B1X2N0 eHQoc3RydWN0IGRvbWFpbiAqZCwgaHZtX2RvbWFpbl9jb250ZXh0X3QgKmgpCiAgICAgcmV0dXJu IDA7CiB9CiAKLUhWTV9SRUdJU1RFUl9TQVZFX1JFU1RPUkUoQ1BVLCBodm1fc2F2ZV9jcHVfY3R4 dCwgaHZtX3NhdmVfY3B1X2N0eHRfb25lLAorSFZNX1JFR0lTVEVSX1NBVkVfUkVTVE9SRShDUFUs IGh2bV9zYXZlX2NwdV9jdHh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICBodm1fbG9hZF9j cHVfY3R4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgMSwgSFZNU1JfUEVSX1ZDUFUpOwog CkBAIC0xMTg5LDcgKzExNTgsNyBAQCBIVk1fUkVHSVNURVJfU0FWRV9SRVNUT1JFKENQVSwgaHZt X3NhdmVfY3B1X2N0eHQsIGh2bV9zYXZlX2NwdV9jdHh0X29uZSwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzYXZlX2FyZWEpICsgXAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHhzdGF0ZV9jdHh0X3NpemUoeGNyMCkpCiAKLXN0YXRpYyBpbnQg aHZtX3NhdmVfY3B1X3hzYXZlX3N0YXRlc19vbmUoc3RydWN0IHZjcHUgKnYsIGh2bV9kb21haW5f Y29udGV4dF90ICpoKQorc3RhdGljIGludCBodm1fc2F2ZV9jcHVfeHNhdmVfc3RhdGVzKHN0cnVj dCB2Y3B1ICp2LCBodm1fZG9tYWluX2NvbnRleHRfdCAqaCkKIHsKICAgICBzdHJ1Y3QgaHZtX2h3 X2NwdV94c2F2ZSAqY3R4dDsKICAgICB1bnNpZ25lZCBpbnQgc2l6ZSA9IEhWTV9DUFVfWFNBVkVf U0laRSh2LT5hcmNoLnhjcjBfYWNjdW0pOwpAQCAtMTIxNCwyMSArMTE4Myw2IEBAIHN0YXRpYyBp bnQgaHZtX3NhdmVfY3B1X3hzYXZlX3N0YXRlc19vbmUoc3RydWN0IHZjcHUgKnYsIGh2bV9kb21h aW5fY29udGV4dF90ICpoCiAgICAgcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBpbnQgaHZtX3NhdmVf Y3B1X3hzYXZlX3N0YXRlcyhzdHJ1Y3QgZG9tYWluICpkLCBodm1fZG9tYWluX2NvbnRleHRfdCAq aCkKLXsKLSAgICBzdHJ1Y3QgdmNwdSAqdjsKLSAgICBpbnQgZXJyID0gMDsKLQotICAgIGZvcl9l YWNoX3ZjcHUgKCBkLCB2ICkKLSAgICB7Ci0gICAgICAgIGVyciA9IGh2bV9zYXZlX2NwdV94c2F2 ZV9zdGF0ZXNfb25lKHYsIGgpOwotICAgICAgICBpZiAoIGVyciApCi0gICAgICAgICAgICBicmVh azsKLSAgICB9Ci0KLSAgICByZXR1cm4gZXJyOwotfQotCiAvKgogICogU3RydWN0dXJlIGxheW91 dCBjb25mb3JtaXR5IGNoZWNrcywgZG9jdW1lbnRpbmcgY29ycmVjdG5lc3Mgb2YgdGhlIGNhc3Qg aW4KICAqIHRoZSBpbnZvY2F0aW9uIG9mIHZhbGlkYXRlX3hzdGF0ZSgpIGJlbG93LgpAQCAtMTM2 Niw3ICsxMzIwLDcgQEAgc3RhdGljIGNvbnN0IHVpbnQzMl90IG1zcnNfdG9fc2VuZFtdID0gewog fTsKIHN0YXRpYyB1bnNpZ25lZCBpbnQgX19yZWFkX21vc3RseSBtc3JfY291bnRfbWF4ID0gQVJS QVlfU0laRShtc3JzX3RvX3NlbmQpOwogCi1zdGF0aWMgaW50IGh2bV9zYXZlX2NwdV9tc3JzX29u ZShzdHJ1Y3QgdmNwdSAqdiwgaHZtX2RvbWFpbl9jb250ZXh0X3QgKmgpCitzdGF0aWMgaW50IGh2 bV9zYXZlX2NwdV9tc3JzKHN0cnVjdCB2Y3B1ICp2LCBodm1fZG9tYWluX2NvbnRleHRfdCAqaCkK IHsKICAgICBzdHJ1Y3QgaHZtX3NhdmVfZGVzY3JpcHRvciAqZGVzYyA9IF9wKCZoLT5kYXRhW2gt PmN1cl0pOwogICAgIHN0cnVjdCBodm1fbXNyICpjdHh0OwpAQCAtMTQyOCwyMSArMTM4Miw2IEBA IHN0YXRpYyBpbnQgaHZtX3NhdmVfY3B1X21zcnNfb25lKHN0cnVjdCB2Y3B1ICp2LCBodm1fZG9t YWluX2NvbnRleHRfdCAqaCkKICAgICByZXR1cm4gMDsKIH0KIAotc3RhdGljIGludCBodm1fc2F2 ZV9jcHVfbXNycyhzdHJ1Y3QgZG9tYWluICpkLCBodm1fZG9tYWluX2NvbnRleHRfdCAqaCkKLXsK LSAgICBzdHJ1Y3QgdmNwdSAqdjsKLSAgICBpbnQgZXJyID0gMDsKLQotICAgIGZvcl9lYWNoX3Zj cHUgKCBkLCB2ICkKLSAgICB7Ci0gICAgICAgIGVyciA9IGh2bV9zYXZlX2NwdV9tc3JzX29uZSh2 LCBoKTsKLSAgICAgICAgaWYgKCBlcnIgKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0g ICAgcmV0dXJuIGVycjsKLX0KLQogc3RhdGljIGludCBodm1fbG9hZF9jcHVfbXNycyhzdHJ1Y3Qg ZG9tYWluICpkLCBodm1fZG9tYWluX2NvbnRleHRfdCAqaCkKIHsKICAgICB1bnNpZ25lZCBpbnQg aSwgdmNwdWlkID0gaHZtX2xvYWRfaW5zdGFuY2UoaCk7CkBAIC0xNTM1LDcgKzE0NzQsNiBAQCBz dGF0aWMgaW50IF9faW5pdCBodm1fcmVnaXN0ZXJfQ1BVX3NhdmVfYW5kX3Jlc3RvcmUodm9pZCkK ICAgICBodm1fcmVnaXN0ZXJfc2F2ZXZtKENQVV9YU0FWRV9DT0RFLAogICAgICAgICAgICAgICAg ICAgICAgICAgIkNQVV9YU0FWRSIsCiAgICAgICAgICAgICAgICAgICAgICAgICBodm1fc2F2ZV9j cHVfeHNhdmVfc3RhdGVzLAotICAgICAgICAgICAgICAgICAgICAgICAgaHZtX3NhdmVfY3B1X3hz YXZlX3N0YXRlc19vbmUsCiAgICAgICAgICAgICAgICAgICAgICAgICBodm1fbG9hZF9jcHVfeHNh dmVfc3RhdGVzLAogICAgICAgICAgICAgICAgICAgICAgICAgSFZNX0NQVV9YU0FWRV9TSVpFKHhm ZWF0dXJlX21hc2spICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2Yoc3RydWN0 IGh2bV9zYXZlX2Rlc2NyaXB0b3IpLApAQCAtMTU0OCw3ICsxNDg2LDYgQEAgc3RhdGljIGludCBf X2luaXQgaHZtX3JlZ2lzdGVyX0NQVV9zYXZlX2FuZF9yZXN0b3JlKHZvaWQpCiAgICAgICAgIGh2 bV9yZWdpc3Rlcl9zYXZldm0oQ1BVX01TUl9DT0RFLAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICJDUFVfTVNSIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBodm1fc2F2ZV9jcHVf bXNycywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBodm1fc2F2ZV9jcHVfbXNyc19vbmUs CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHZtX2xvYWRfY3B1X21zcnMsCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgSFZNX0NQVV9NU1JfU0laRShtc3JfY291bnRfbWF4KSArCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihzdHJ1Y3QgaHZtX3NhdmVfZGVz Y3JpcHRvciksCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvaHZtL2k4MjU0LmMgYi94ZW4vYXJj aC94ODYvaHZtL2k4MjU0LmMKaW5kZXggZWM3N2IyMy4uZTBkMjI1NSAxMDA2NDQKLS0tIGEveGVu L2FyY2gveDg2L2h2bS9pODI1NC5jCisrKyBiL3hlbi9hcmNoL3g4Ni9odm0vaTgyNTQuYwpAQCAt MzkwLDggKzM5MCw5IEBAIHZvaWQgcGl0X3N0b3BfY2hhbm5lbDBfaXJxKFBJVFN0YXRlICpwaXQp CiAgICAgc3Bpbl91bmxvY2soJnBpdC0+bG9jayk7CiB9CiAKLXN0YXRpYyBpbnQgcGl0X3NhdmUo c3RydWN0IGRvbWFpbiAqZCwgaHZtX2RvbWFpbl9jb250ZXh0X3QgKmgpCitzdGF0aWMgaW50IHBp dF9zYXZlKHN0cnVjdCB2Y3B1ICp2LCBodm1fZG9tYWluX2NvbnRleHRfdCAqaCkKIHsKKyAgICBz dHJ1Y3QgZG9tYWluICpkID0gdi0+ZG9tYWluOwogICAgIFBJVFN0YXRlICpwaXQgPSBkb21haW5f dnBpdChkKTsKICAgICBpbnQgcmM7CiAKQEAgLTQzNyw3ICs0MzgsNyBAQCBzdGF0aWMgaW50IHBp dF9sb2FkKHN0cnVjdCBkb21haW4gKmQsIGh2bV9kb21haW5fY29udGV4dF90ICpoKQogICAgIHJl dHVybiAwOwogfQogCi1IVk1fUkVHSVNURVJfU0FWRV9SRVNUT1JFKFBJVCwgcGl0X3NhdmUsIE5V TEwsIHBpdF9sb2FkLCAxLCBIVk1TUl9QRVJfRE9NKTsKK0hWTV9SRUdJU1RFUl9TQVZFX1JFU1RP UkUoUElULCBwaXRfc2F2ZSwgcGl0X2xvYWQsIDEsIEhWTVNSX1BFUl9ET00pOwogCiB2b2lkIHBp dF9yZXNldChzdHJ1Y3QgZG9tYWluICpkKQogewpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2h2 bS9pcnEuYyBiL3hlbi9hcmNoL3g4Ni9odm0vaXJxLmMKaW5kZXggNzcwZWFiNy4uYjM3Mjc1YyAx MDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2h2bS9pcnEuYworKysgYi94ZW4vYXJjaC94ODYvaHZt L2lycS5jCkBAIC02MzAsOCArNjMwLDkgQEAgc3RhdGljIGludCBfX2luaXQgZHVtcF9pcnFfaW5m b19rZXlfaW5pdCh2b2lkKQogfQogX19pbml0Y2FsbChkdW1wX2lycV9pbmZvX2tleV9pbml0KTsK IAotc3RhdGljIGludCBpcnFfc2F2ZV9wY2koc3RydWN0IGRvbWFpbiAqZCwgaHZtX2RvbWFpbl9j b250ZXh0X3QgKmgpCitzdGF0aWMgaW50IGlycV9zYXZlX3BjaShzdHJ1Y3QgdmNwdSAqdiwgaHZt X2RvbWFpbl9jb250ZXh0X3QgKmgpCiB7CisgICAgc3RydWN0IGRvbWFpbiAqZCA9IHYtPmRvbWFp bjsKICAgICBzdHJ1Y3QgaHZtX2lycSAqaHZtX2lycSA9IGh2bV9kb21haW5faXJxKGQpOwogICAg IHVuc2lnbmVkIGludCBhc3NlcnRlZCwgcGRldiwgcGludHg7CiAgICAgaW50IHJjOwpAQCAtNjYy LDE2ICs2NjMsMTggQEAgc3RhdGljIGludCBpcnFfc2F2ZV9wY2koc3RydWN0IGRvbWFpbiAqZCwg aHZtX2RvbWFpbl9jb250ZXh0X3QgKmgpCiAgICAgcmV0dXJuIHJjOwogfQogCi1zdGF0aWMgaW50 IGlycV9zYXZlX2lzYShzdHJ1Y3QgZG9tYWluICpkLCBodm1fZG9tYWluX2NvbnRleHRfdCAqaCkK K3N0YXRpYyBpbnQgaXJxX3NhdmVfaXNhKHN0cnVjdCB2Y3B1ICp2LCBodm1fZG9tYWluX2NvbnRl eHRfdCAqaCkKIHsKKyAgICBzdHJ1Y3QgZG9tYWluICpkID0gdi0+ZG9tYWluOwogICAgIHN0cnVj dCBodm1faXJxICpodm1faXJxID0gaHZtX2RvbWFpbl9pcnEoZCk7CiAKICAgICAvKiBTYXZlIElT QSBJUlEgbGluZXMgKi8KICAgICByZXR1cm4gKCBodm1fc2F2ZV9lbnRyeShJU0FfSVJRLCAwLCBo LCAmaHZtX2lycS0+aXNhX2lycSkgKTsKIH0KIAotc3RhdGljIGludCBpcnFfc2F2ZV9saW5rKHN0 cnVjdCBkb21haW4gKmQsIGh2bV9kb21haW5fY29udGV4dF90ICpoKQorc3RhdGljIGludCBpcnFf c2F2ZV9saW5rKHN0cnVjdCB2Y3B1ICp2LCBodm1fZG9tYWluX2NvbnRleHRfdCAqaCkKIHsKKyAg ICBzdHJ1Y3QgZG9tYWluICpkID0gdi0+ZG9tYWluOwogICAgIHN0cnVjdCBodm1faXJxICpodm1f aXJxID0gaHZtX2RvbWFpbl9pcnEoZCk7CiAKICAgICAvKiBTYXZlIFBDSS1JU0EgbGluayBzdGF0 ZSAqLwpAQCAtNzY0LDkgKzc2Nyw5IEBAIHN0YXRpYyBpbnQgaXJxX2xvYWRfbGluayhzdHJ1Y3Qg ZG9tYWluICpkLCBodm1fZG9tYWluX2NvbnRleHRfdCAqaCkKICAgICByZXR1cm4gMDsKIH0KIAot SFZNX1JFR0lTVEVSX1NBVkVfUkVTVE9SRShQQ0lfSVJRLCBpcnFfc2F2ZV9wY2ksIE5VTEwsIGly cV9sb2FkX3BjaSwKK0hWTV9SRUdJU1RFUl9TQVZFX1JFU1RPUkUoUENJX0lSUSwgaXJxX3NhdmVf cGNpLCBpcnFfbG9hZF9wY2ksCiAgICAgICAgICAgICAgICAgICAgICAgICAgIDEsIEhWTVNSX1BF Ul9ET00pOwotSFZNX1JFR0lTVEVSX1NBVkVfUkVTVE9SRShJU0FfSVJRLCBpcnFfc2F2ZV9pc2Es IE5VTEwsIGlycV9sb2FkX2lzYSwKK0hWTV9SRUdJU1RFUl9TQVZFX1JFU1RPUkUoSVNBX0lSUSwg aXJxX3NhdmVfaXNhLCBpcnFfbG9hZF9pc2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIDEs IEhWTVNSX1BFUl9ET00pOwotSFZNX1JFR0lTVEVSX1NBVkVfUkVTVE9SRShQQ0lfTElOSywgaXJx X3NhdmVfbGluaywgTlVMTCwgaXJxX2xvYWRfbGluaywKK0hWTV9SRUdJU1RFUl9TQVZFX1JFU1RP UkUoUENJX0xJTkssIGlycV9zYXZlX2xpbmssIGlycV9sb2FkX2xpbmssCiAgICAgICAgICAgICAg ICAgICAgICAgICAgIDEsIEhWTVNSX1BFUl9ET00pOwpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2 L2h2bS9tdHJyLmMgYi94ZW4vYXJjaC94ODYvaHZtL210cnIuYwppbmRleCAxYzRlNzMxLi5kZTFi YjgwIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvaHZtL210cnIuYworKysgYi94ZW4vYXJjaC94 ODYvaHZtL210cnIuYwpAQCAtNzE4LDcgKzcxOCw3IEBAIGludCBodm1fc2V0X21lbV9waW5uZWRf Y2FjaGVhdHRyKHN0cnVjdCBkb21haW4gKmQsIHVpbnQ2NF90IGdmbl9zdGFydCwKICAgICByZXR1 cm4gMDsKIH0KIAotc3RhdGljIGludCBodm1fc2F2ZV9tdHJyX21zcl9vbmUoc3RydWN0IHZjcHUg KnYsIGh2bV9kb21haW5fY29udGV4dF90ICpoKQorc3RhdGljIGludCBodm1fc2F2ZV9tdHJyX21z cihzdHJ1Y3QgdmNwdSAqdiwgaHZtX2RvbWFpbl9jb250ZXh0X3QgKmgpCiB7CiAgICAgY29uc3Qg c3RydWN0IG10cnJfc3RhdGUgKm10cnJfc3RhdGUgPSAmdi0+YXJjaC5odm1fdmNwdS5tdHJyOwog ICAgIHN0cnVjdCBodm1faHdfbXRyciBod19tdHJyID0gewpAQCAtNzU2LDIyICs3NTYsNiBAQCBz dGF0aWMgaW50IGh2bV9zYXZlX210cnJfbXNyX29uZShzdHJ1Y3QgdmNwdSAqdiwgaHZtX2RvbWFp bl9jb250ZXh0X3QgKmgpCiAgICAgcmV0dXJuIGh2bV9zYXZlX2VudHJ5KE1UUlIsIHYtPnZjcHVf aWQsIGgsICZod19tdHJyKTsKIH0KIAotc3RhdGljIGludCBodm1fc2F2ZV9tdHJyX21zcihzdHJ1 Y3QgZG9tYWluICpkLCBodm1fZG9tYWluX2NvbnRleHRfdCAqaCkKLXsKLSAgICBzdHJ1Y3QgdmNw dSAqdjsKLSAgICBpbnQgZXJyID0gMDsKLQotICAgIC8qIHNhdmUgbXRyciZwYXQgKi8KLSAgICBm b3JfZWFjaF92Y3B1KGQsIHYpCi0gICAgewotICAgICAgIGVyciA9IGh2bV9zYXZlX210cnJfbXNy X29uZSh2LCBoKTsKLSAgICAgICBpZiAoIGVyciApCi0gICAgICAgICAgIGJyZWFrOwotICAgIH0K LQotICAgIHJldHVybiBlcnI7Ci19Ci0KIHN0YXRpYyBpbnQgaHZtX2xvYWRfbXRycl9tc3Ioc3Ry dWN0IGRvbWFpbiAqZCwgaHZtX2RvbWFpbl9jb250ZXh0X3QgKmgpCiB7CiAgICAgaW50IHZjcHVp ZCwgaTsKQEAgLTgyMiw3ICs4MDYsNyBAQCBzdGF0aWMgaW50IGh2bV9sb2FkX210cnJfbXNyKHN0 cnVjdCBkb21haW4gKmQsIGh2bV9kb21haW5fY29udGV4dF90ICpoKQogICAgIHJldHVybiAwOwog fQogCi1IVk1fUkVHSVNURVJfU0FWRV9SRVNUT1JFKE1UUlIsIGh2bV9zYXZlX210cnJfbXNyLCBo dm1fc2F2ZV9tdHJyX21zcl9vbmUsCitIVk1fUkVHSVNURVJfU0FWRV9SRVNUT1JFKE1UUlIsIGh2 bV9zYXZlX210cnJfbXNyLAogICAgICAgICAgICAgICAgICAgICAgICAgICBodm1fbG9hZF9tdHJy X21zciwgMSwgSFZNU1JfUEVSX1ZDUFUpOwogCiB2b2lkIG1lbW9yeV90eXBlX2NoYW5nZWQoc3Ry dWN0IGRvbWFpbiAqZCkKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9odm0vcG10aW1lci5jIGIv eGVuL2FyY2gveDg2L2h2bS9wbXRpbWVyLmMKaW5kZXggMGE1ZThjZS4uZDhkY2JjMiAxMDA2NDQK LS0tIGEveGVuL2FyY2gveDg2L2h2bS9wbXRpbWVyLmMKKysrIGIveGVuL2FyY2gveDg2L2h2bS9w bXRpbWVyLmMKQEAgLTI0OSw4ICsyNDksOSBAQCBzdGF0aWMgaW50IGhhbmRsZV9wbXRfaW8oCiAg ICAgcmV0dXJuIFg4NkVNVUxfT0tBWTsKIH0KIAotc3RhdGljIGludCBhY3BpX3NhdmUoc3RydWN0 IGRvbWFpbiAqZCwgaHZtX2RvbWFpbl9jb250ZXh0X3QgKmgpCitzdGF0aWMgaW50IGFjcGlfc2F2 ZShzdHJ1Y3QgdmNwdSAqdiwgaHZtX2RvbWFpbl9jb250ZXh0X3QgKmgpCiB7CisgICAgc3RydWN0 IGRvbWFpbiAqZCA9IHYtPmRvbWFpbjsKICAgICBzdHJ1Y3QgaHZtX2h3X2FjcGkgKmFjcGkgPSAm ZC0+YXJjaC5odm1fZG9tYWluLmFjcGk7CiAgICAgUE1UU3RhdGUgKnMgPSAmZC0+YXJjaC5odm1f ZG9tYWluLnBsX3RpbWUtPnZwbXQ7CiAgICAgdWludDMyX3QgeCwgbXNiID0gYWNwaS0+dG1yX3Zh bCAmIFRNUl9WQUxfTVNCOwpAQCAtMzA5LDcgKzMxMCw3IEBAIHN0YXRpYyBpbnQgYWNwaV9sb2Fk KHN0cnVjdCBkb21haW4gKmQsIGh2bV9kb21haW5fY29udGV4dF90ICpoKQogICAgIHJldHVybiAw OwogfQogCi1IVk1fUkVHSVNURVJfU0FWRV9SRVNUT1JFKFBNVElNRVIsIGFjcGlfc2F2ZSwgTlVM TCwgYWNwaV9sb2FkLAorSFZNX1JFR0lTVEVSX1NBVkVfUkVTVE9SRShQTVRJTUVSLCBhY3BpX3Nh dmUsIGFjcGlfbG9hZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgMSwgSFZNU1JfUEVSX0RP TSk7CiAKIGludCBwbXRpbWVyX2NoYW5nZV9pb3BvcnQoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWdu ZWQgaW50IHZlcnNpb24pCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvaHZtL3J0Yy5jIGIveGVu L2FyY2gveDg2L2h2bS9ydGMuYwppbmRleCBjZTdlNzFiLi41OGI3MGZjIDEwMDY0NAotLS0gYS94 ZW4vYXJjaC94ODYvaHZtL3J0Yy5jCisrKyBiL3hlbi9hcmNoL3g4Ni9odm0vcnRjLmMKQEAgLTcz Nyw4ICs3MzcsOSBAQCB2b2lkIHJ0Y19taWdyYXRlX3RpbWVycyhzdHJ1Y3QgdmNwdSAqdikKIH0K IAogLyogU2F2ZSBSVEMgaGFyZHdhcmUgc3RhdGUgKi8KLXN0YXRpYyBpbnQgcnRjX3NhdmUoc3Ry dWN0IGRvbWFpbiAqZCwgaHZtX2RvbWFpbl9jb250ZXh0X3QgKmgpCitzdGF0aWMgaW50IHJ0Y19z YXZlKHN0cnVjdCB2Y3B1ICp2LCBodm1fZG9tYWluX2NvbnRleHRfdCAqaCkKIHsKKyAgICBzdHJ1 Y3QgZG9tYWluICpkID0gdi0+ZG9tYWluOwogICAgIFJUQ1N0YXRlICpzID0gZG9tYWluX3ZydGMo ZCk7CiAgICAgaW50IHJjOwogCkBAIC03ODMsNyArNzg0LDcgQEAgc3RhdGljIGludCBydGNfbG9h ZChzdHJ1Y3QgZG9tYWluICpkLCBodm1fZG9tYWluX2NvbnRleHRfdCAqaCkKICAgICByZXR1cm4g MDsKIH0KIAotSFZNX1JFR0lTVEVSX1NBVkVfUkVTVE9SRShSVEMsIHJ0Y19zYXZlLCBOVUxMLCBy dGNfbG9hZCwgMSwgSFZNU1JfUEVSX0RPTSk7CitIVk1fUkVHSVNURVJfU0FWRV9SRVNUT1JFKFJU QywgcnRjX3NhdmUsIHJ0Y19sb2FkLCAxLCBIVk1TUl9QRVJfRE9NKTsKIAogdm9pZCBydGNfcmVz ZXQoc3RydWN0IGRvbWFpbiAqZCkKIHsKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9odm0vc2F2 ZS5jIGIveGVuL2FyY2gveDg2L2h2bS9zYXZlLmMKaW5kZXggMWViMmIwMS4uNDk3NDFlMCAxMDA2 NDQKLS0tIGEveGVuL2FyY2gveDg2L2h2bS9zYXZlLmMKKysrIGIveGVuL2FyY2gveDg2L2h2bS9z YXZlLmMKQEAgLTg1LDcgKzg1LDYgQEAgaW50IGFyY2hfaHZtX2xvYWQoc3RydWN0IGRvbWFpbiAq ZCwgc3RydWN0IGh2bV9zYXZlX2hlYWRlciAqaGRyKQogLyogTGlzdCBvZiBoYW5kbGVycyBmb3Ig dmFyaW91cyBIVk0gc2F2ZSBhbmQgcmVzdG9yZSB0eXBlcyAqLwogc3RhdGljIHN0cnVjdCB7CiAg ICAgaHZtX3NhdmVfaGFuZGxlciBzYXZlOwotICAgIGh2bV9zYXZlX3ZjcHVfaGFuZGxlciBzYXZl X29uZTsKICAgICBodm1fbG9hZF9oYW5kbGVyIGxvYWQ7CiAgICAgY29uc3QgY2hhciAqbmFtZTsK ICAgICBzaXplX3Qgc2l6ZTsKQEAgLTk2LDcgKzk1LDYgQEAgc3RhdGljIHN0cnVjdCB7CiB2b2lk IF9faW5pdCBodm1fcmVnaXN0ZXJfc2F2ZXZtKHVpbnQxNl90IHR5cGVjb2RlLAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lLAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBodm1fc2F2ZV9oYW5kbGVyIHNhdmVfc3RhdGUsCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGh2bV9zYXZlX3ZjcHVfaGFuZGxlciBzYXZlX29uZSwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHZtX2xvYWRfaGFuZGxlciBsb2FkX3N0YXRl LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc2l6ZSwgaW50IGtpbmQp CiB7CkBAIC0xMDQsNyArMTAyLDYgQEAgdm9pZCBfX2luaXQgaHZtX3JlZ2lzdGVyX3NhdmV2bSh1 aW50MTZfdCB0eXBlY29kZSwKICAgICBBU1NFUlQoaHZtX3NyX2hhbmRsZXJzW3R5cGVjb2RlXS5z YXZlID09IE5VTEwpOwogICAgIEFTU0VSVChodm1fc3JfaGFuZGxlcnNbdHlwZWNvZGVdLmxvYWQg PT0gTlVMTCk7CiAgICAgaHZtX3NyX2hhbmRsZXJzW3R5cGVjb2RlXS5zYXZlID0gc2F2ZV9zdGF0 ZTsKLSAgICBodm1fc3JfaGFuZGxlcnNbdHlwZWNvZGVdLnNhdmVfb25lID0gc2F2ZV9vbmU7CiAg ICAgaHZtX3NyX2hhbmRsZXJzW3R5cGVjb2RlXS5sb2FkID0gbG9hZF9zdGF0ZTsKICAgICBodm1f c3JfaGFuZGxlcnNbdHlwZWNvZGVdLm5hbWUgPSBuYW1lOwogICAgIGh2bV9zcl9oYW5kbGVyc1t0 eXBlY29kZV0uc2l6ZSA9IHNpemU7CkBAIC0xNDgsNiArMTQ1LDkgQEAgaW50IGh2bV9zYXZlX29u ZShzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBpbnQgdHlwZWNvZGUsIHVuc2lnbmVkIGludCBp bnN0YW5jZSwKICAgICAgICAgICFodm1fc3JfaGFuZGxlcnNbdHlwZWNvZGVdLnNhdmUgKQogICAg ICAgICByZXR1cm4gLUVJTlZBTDsKIAorICAgIGlmICggaHZtX3NyX2hhbmRsZXJzW3R5cGVjb2Rl XS5raW5kID09IEhWTVNSX1BFUl9WQ1BVICYmCisgICAgICAgIGluc3RhbmNlID49IGQtPm1heF92 Y3B1cyApCisgICAgICAgIHJldHVybiAtRU5PRU5UOwogICAgIGN0eHQuc2l6ZSA9IGh2bV9zcl9o YW5kbGVyc1t0eXBlY29kZV0uc2l6ZTsKICAgICBpZiAoIGh2bV9zcl9oYW5kbGVyc1t0eXBlY29k ZV0ua2luZCA9PSBIVk1TUl9QRVJfVkNQVSApCiAgICAgICAgIGN0eHQuc2l6ZSAqPSBkLT5tYXhf dmNwdXM7CkBAIC0xNTUsNyArMTU1LDcgQEAgaW50IGh2bV9zYXZlX29uZShzdHJ1Y3QgZG9tYWlu ICpkLCB1bnNpZ25lZCBpbnQgdHlwZWNvZGUsIHVuc2lnbmVkIGludCBpbnN0YW5jZSwKICAgICBp ZiAoICFjdHh0LmRhdGEgKQogICAgICAgICByZXR1cm4gLUVOT01FTTsKIAotICAgIGlmICggKHJ2 ID0gaHZtX3NyX2hhbmRsZXJzW3R5cGVjb2RlXS5zYXZlKGQsICZjdHh0KSkgIT0gMCApCisgICAg aWYgKCAocnYgPSBodm1fc3JfaGFuZGxlcnNbdHlwZWNvZGVdLnNhdmUoZC0+dmNwdVtpbnN0YW5j ZV0sICZjdHh0KSkgIT0gMCApCiAgICAgICAgIHByaW50ayhYRU5MT0dfR19FUlIgIkhWTSVkIHNh dmU6IGZhaWxlZCB0byBzYXZlIHR5cGUgJSJQUkl1MTYiICglZClcbiIsCiAgICAgICAgICAgICAg ICBkLT5kb21haW5faWQsIHR5cGVjb2RlLCBydik7CiAgICAgZWxzZSBpZiAoIHJ2ID0gLUVOT0VO VCwgY3R4dC5jdXIgPj0gc2l6ZW9mKCpkZXNjKSApCkBAIC0yMjMsMTcgKzIyMywxOSBAQCBpbnQg aHZtX3NhdmUoc3RydWN0IGRvbWFpbiAqZCwgaHZtX2RvbWFpbl9jb250ZXh0X3QgKmgpCiAgICAg Zm9yICggaSA9IDA7IGkgPD0gSFZNX1NBVkVfQ09ERV9NQVg7IGkrKyApCiAgICAgewogICAgICAg ICBzdHJ1Y3QgdmNwdSAqdjsKLSAgICAgICAgaHZtX3NhdmVfdmNwdV9oYW5kbGVyIHNhdmVfb25l X2hhbmRsZXIgPSBodm1fc3JfaGFuZGxlcnNbaV0uc2F2ZV9vbmU7Ci0gICAgICAgIGh2bV9zYXZl X2hhbmRsZXIgaGFuZGxlciA9IGh2bV9zcl9oYW5kbGVyc1tpXS5zYXZlOzsKKyAgICAgICAgaHZt X3NhdmVfaGFuZGxlciBoYW5kbGVyID0gaHZtX3NyX2hhbmRsZXJzW2ldLnNhdmU7CiAKLSAgICAg ICAgaWYgKCBzYXZlX29uZV9oYW5kbGVyICkKKyAgICAgICAgaWYgKCAhaGFuZGxlciApCisgICAg ICAgICAgICBjb250aW51ZTsKKworICAgICAgICBpZiAoIGh2bV9zcl9oYW5kbGVyc1tpXS5raW5k ID09IEhWTVNSX1BFUl9WQ1BVICkKICAgICAgICAgewogICAgICAgICAgICAgZm9yX2VhY2hfdmNw dSAoIGQsIHYgKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIHByaW50ayhYRU5MT0df R19JTkZPICJIVk0gJXB2IHNhdmU6ICVzXG4iLAogICAgICAgICAgICAgICAgICAgICAgICB2LCBo dm1fc3JfaGFuZGxlcnNbaV0ubmFtZSk7CiAKLSAgICAgICAgICAgICAgICBpZiAoIHNhdmVfb25l X2hhbmRsZXIodiwgaCkgIT0gMCApCisgICAgICAgICAgICAgICAgaWYgKCBoYW5kbGVyKHYsIGgp ICE9IDAgKQogICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgcHJpbnRrKFhF TkxPR19HX0VSUgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIkhWTSAlcHYgc2F2ZTogZmFp bGVkIHRvIHNhdmUgdHlwZSAlIlBSSXUxNiJcbiIsCkBAIC0yNDIsMTUgKzI0NCwxNSBAQCBpbnQg aHZtX3NhdmUoc3RydWN0IGRvbWFpbiAqZCwgaHZtX2RvbWFpbl9jb250ZXh0X3QgKmgpCiAgICAg ICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYg KCBoYW5kbGVyICkKKyAgICAgICAgZWxzZQogICAgICAgICB7Ci0gICAgICAgICAgICBwcmludGso WEVOTE9HX0dfSU5GTyAiSFZNJWQgc2F2ZTogJXNcbiIsCisgICAgICAgICAgICBwcmludGsoWEVO TE9HX0dfSU5GTyAiSFZNIGQlZCBzYXZlOiAlc1xuIiwKICAgICAgICAgICAgICAgICAgICBkLT5k b21haW5faWQsIGh2bV9zcl9oYW5kbGVyc1tpXS5uYW1lKTsKIAotICAgICAgICAgICAgaWYgKCBo YW5kbGVyKGQsIGgpICE9IDAgKQorICAgICAgICAgICAgaWYgKCBoYW5kbGVyKGQtPnZjcHVbMF0s IGgpICE9IDAgKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIHByaW50ayhYRU5MT0df R19FUlIKLSAgICAgICAgICAgICAgICAgICAgICAgIkhWTSVkIHNhdmU6IGZhaWxlZCB0byBzYXZl IHR5cGUgJSJQUkl1MTYiXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAiSFZNIGQlZCBzYXZl OiBmYWlsZWQgdG8gc2F2ZSB0eXBlICUiUFJJdTE2IlxuIiwKICAgICAgICAgICAgICAgICAgICAg ICAgZC0+ZG9tYWluX2lkLCBpKTsKICAgICAgICAgICAgICAgICByZXR1cm4gLUVOT0RBVEE7CiAg ICAgICAgICAgICB9CmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvaHZtL3Zpb2FwaWMuYyBiL3hl bi9hcmNoL3g4Ni9odm0vdmlvYXBpYy5jCmluZGV4IDY2ZjU0ZTQuLjg2ZDAyY2YgMTAwNjQ0Ci0t LSBhL3hlbi9hcmNoL3g4Ni9odm0vdmlvYXBpYy5jCisrKyBiL3hlbi9hcmNoL3g4Ni9odm0vdmlv YXBpYy5jCkBAIC01NjksOCArNTY5LDkgQEAgaW50IHZpb2FwaWNfZ2V0X3RyaWdnZXJfbW9kZShj b25zdCBzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBpbnQgZ3NpKQogICAgIHJldHVybiB2aW9h cGljLT5yZWRpcnRibFtwaW5dLmZpZWxkcy50cmlnX21vZGU7CiB9CiAKLXN0YXRpYyBpbnQgaW9h cGljX3NhdmUoc3RydWN0IGRvbWFpbiAqZCwgaHZtX2RvbWFpbl9jb250ZXh0X3QgKmgpCitzdGF0 aWMgaW50IGlvYXBpY19zYXZlKHN0cnVjdCB2Y3B1ICp2LCBodm1fZG9tYWluX2NvbnRleHRfdCAq aCkKIHsKKyAgICBzdHJ1Y3QgZG9tYWluICpkID0gdi0+ZG9tYWluOwogICAgIHN0cnVjdCBodm1f dmlvYXBpYyAqczsKIAogICAgIGlmICggIWhhc192aW9hcGljKGQpICkKQEAgLTYwMSw3ICs2MDIs NyBAQCBzdGF0aWMgaW50IGlvYXBpY19sb2FkKHN0cnVjdCBkb21haW4gKmQsIGh2bV9kb21haW5f Y29udGV4dF90ICpoKQogICAgIHJldHVybiBodm1fbG9hZF9lbnRyeShJT0FQSUMsIGgsICZzLT5k b21VKTsKIH0KIAotSFZNX1JFR0lTVEVSX1NBVkVfUkVTVE9SRShJT0FQSUMsIGlvYXBpY19zYXZl LCBOVUxMLCBpb2FwaWNfbG9hZCwgMSwgSFZNU1JfUEVSX0RPTSk7CitIVk1fUkVHSVNURVJfU0FW RV9SRVNUT1JFKElPQVBJQywgaW9hcGljX3NhdmUsIGlvYXBpY19sb2FkLCAxLCBIVk1TUl9QRVJf RE9NKTsKIAogdm9pZCB2aW9hcGljX3Jlc2V0KHN0cnVjdCBkb21haW4gKmQpCiB7CmRpZmYgLS1n aXQgYS94ZW4vYXJjaC94ODYvaHZtL3ZpcmlkaWFuLmMgYi94ZW4vYXJjaC94ODYvaHZtL3Zpcmlk aWFuLmMKaW5kZXggMjY4Y2NjZS4uY2MzN2FiNCAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2h2 bS92aXJpZGlhbi5jCisrKyBiL3hlbi9hcmNoL3g4Ni9odm0vdmlyaWRpYW4uYwpAQCAtOTkwLDgg Kzk5MCw5IEBAIG91dDoKICAgICByZXR1cm4gSFZNX0hDQUxMX2NvbXBsZXRlZDsKIH0KIAotc3Rh dGljIGludCB2aXJpZGlhbl9zYXZlX2RvbWFpbl9jdHh0KHN0cnVjdCBkb21haW4gKmQsIGh2bV9k b21haW5fY29udGV4dF90ICpoKQorc3RhdGljIGludCB2aXJpZGlhbl9zYXZlX2RvbWFpbl9jdHh0 KHN0cnVjdCB2Y3B1ICp2LCBodm1fZG9tYWluX2NvbnRleHRfdCAqaCkKIHsKKyAgICBzdHJ1Y3Qg ZG9tYWluICpkID0gdi0+ZG9tYWluOwogICAgIHN0cnVjdCBodm1fdmlyaWRpYW5fZG9tYWluX2Nv bnRleHQgY3R4dCA9IHsKICAgICAgICAgLnRpbWVfcmVmX2NvdW50ID0gZC0+YXJjaC5odm1fZG9t YWluLnZpcmlkaWFuLnRpbWVfcmVmX2NvdW50LnZhbCwKICAgICAgICAgLmh5cGVyY2FsbF9ncGEg ID0gZC0+YXJjaC5odm1fZG9tYWluLnZpcmlkaWFuLmh5cGVyY2FsbF9ncGEucmF3LApAQCAtMTAy MywxMCArMTAyNCwxMCBAQCBzdGF0aWMgaW50IHZpcmlkaWFuX2xvYWRfZG9tYWluX2N0eHQoc3Ry dWN0IGRvbWFpbiAqZCwgaHZtX2RvbWFpbl9jb250ZXh0X3QgKmgpCiAgICAgcmV0dXJuIDA7CiB9 CiAKLUhWTV9SRUdJU1RFUl9TQVZFX1JFU1RPUkUoVklSSURJQU5fRE9NQUlOLCB2aXJpZGlhbl9z YXZlX2RvbWFpbl9jdHh0LCBOVUxMLAorSFZNX1JFR0lTVEVSX1NBVkVfUkVTVE9SRShWSVJJRElB Tl9ET01BSU4sIHZpcmlkaWFuX3NhdmVfZG9tYWluX2N0eHQsCiAgICAgICAgICAgICAgICAgICAg ICAgICAgIHZpcmlkaWFuX2xvYWRfZG9tYWluX2N0eHQsIDEsIEhWTVNSX1BFUl9ET00pOwogCi1z dGF0aWMgaW50IHZpcmlkaWFuX3NhdmVfdmNwdV9jdHh0X29uZShzdHJ1Y3QgdmNwdSAqdiwgaHZt X2RvbWFpbl9jb250ZXh0X3QgKmgpCitzdGF0aWMgaW50IHZpcmlkaWFuX3NhdmVfdmNwdV9jdHh0 KHN0cnVjdCB2Y3B1ICp2LCBodm1fZG9tYWluX2NvbnRleHRfdCAqaCkKIHsKICAgICBzdHJ1Y3Qg aHZtX3ZpcmlkaWFuX3ZjcHVfY29udGV4dCBjdHh0ID0gewogICAgICAgICAudnBfYXNzaXN0X21z ciA9IHYtPmFyY2guaHZtX3ZjcHUudmlyaWRpYW4udnBfYXNzaXN0Lm1zci5yYXcsCkBAIC0xMDM5 LDIxICsxMDQwLDYgQEAgc3RhdGljIGludCB2aXJpZGlhbl9zYXZlX3ZjcHVfY3R4dF9vbmUoc3Ry dWN0IHZjcHUgKnYsIGh2bV9kb21haW5fY29udGV4dF90ICpoKQogICAgIHJldHVybiBodm1fc2F2 ZV9lbnRyeShWSVJJRElBTl9WQ1BVLCB2LT52Y3B1X2lkLCBoLCAmY3R4dCk7CiB9CiAKLXN0YXRp YyBpbnQgdmlyaWRpYW5fc2F2ZV92Y3B1X2N0eHQoc3RydWN0IGRvbWFpbiAqZCwgaHZtX2RvbWFp bl9jb250ZXh0X3QgKmgpCi17Ci0gICAgc3RydWN0IHZjcHUgKnY7Ci0gICAgaW50IGVyciA9IDA7 Ci0KLSAgICBmb3JfZWFjaF92Y3B1ICggZCwgdiApCi0gICAgewotICAgICAgICBlcnIgPSB2aXJp ZGlhbl9zYXZlX3ZjcHVfY3R4dF9vbmUodiwgaCk7Ci0gICAgICAgIGlmICggZXJyICkKLSAgICAg ICAgICAgIGJyZWFrOwotICAgIH0KLQotICAgIHJldHVybiBlcnI7Ci19Ci0KIHN0YXRpYyBpbnQg dmlyaWRpYW5fbG9hZF92Y3B1X2N0eHQoc3RydWN0IGRvbWFpbiAqZCwgaHZtX2RvbWFpbl9jb250 ZXh0X3QgKmgpCiB7CiAgICAgaW50IHZjcHVpZDsKQEAgLTEwODUsNyArMTA3MSw2IEBAIHN0YXRp YyBpbnQgdmlyaWRpYW5fbG9hZF92Y3B1X2N0eHQoc3RydWN0IGRvbWFpbiAqZCwgaHZtX2RvbWFp bl9jb250ZXh0X3QgKmgpCiB9CiAKIEhWTV9SRUdJU1RFUl9TQVZFX1JFU1RPUkUoVklSSURJQU5f VkNQVSwgdmlyaWRpYW5fc2F2ZV92Y3B1X2N0eHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg IHZpcmlkaWFuX3NhdmVfdmNwdV9jdHh0X29uZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg dmlyaWRpYW5fbG9hZF92Y3B1X2N0eHQsIDEsIEhWTVNSX1BFUl9WQ1BVKTsKIAogc3RhdGljIGlu dCBfX2luaXQgcGFyc2VfdmlyaWRpYW5fdmVyc2lvbihjb25zdCBjaGFyICphcmcpCmRpZmYgLS1n aXQgYS94ZW4vYXJjaC94ODYvaHZtL3ZsYXBpYy5jIGIveGVuL2FyY2gveDg2L2h2bS92bGFwaWMu YwppbmRleCA3YjZmNDAwLi5hMjBiZGU4IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvaHZtL3Zs YXBpYy5jCisrKyBiL3hlbi9hcmNoL3g4Ni9odm0vdmxhcGljLmMKQEAgLTE0MzUsNyArMTQzNSw3 IEBAIHN0YXRpYyB2b2lkIGxhcGljX3JlYXJtKHN0cnVjdCB2bGFwaWMgKnMpCiAgICAgcy0+dGlt ZXJfbGFzdF91cGRhdGUgPSBzLT5wdC5sYXN0X3BsdF9ndGltZTsKIH0KIAotc3RhdGljIGludCBs YXBpY19zYXZlX2hpZGRlbl9vbmUoc3RydWN0IHZjcHUgKnYsIGh2bV9kb21haW5fY29udGV4dF90 ICpoKQorc3RhdGljIGludCBsYXBpY19zYXZlX2hpZGRlbihzdHJ1Y3QgdmNwdSAqdiwgaHZtX2Rv bWFpbl9jb250ZXh0X3QgKmgpCiB7CiAgICAgaWYgKCAhaGFzX3ZsYXBpYyh2LT5kb21haW4pICkK ICAgICAgICAgcmV0dXJuIDA7CkBAIC0xNDQzLDIyICsxNDQzLDcgQEAgc3RhdGljIGludCBsYXBp Y19zYXZlX2hpZGRlbl9vbmUoc3RydWN0IHZjcHUgKnYsIGh2bV9kb21haW5fY29udGV4dF90ICpo KQogICAgIHJldHVybiBodm1fc2F2ZV9lbnRyeShMQVBJQywgdi0+dmNwdV9pZCwgaCwgJnZjcHVf dmxhcGljKHYpLT5odyk7CiB9CiAKLXN0YXRpYyBpbnQgbGFwaWNfc2F2ZV9oaWRkZW4oc3RydWN0 IGRvbWFpbiAqZCwgaHZtX2RvbWFpbl9jb250ZXh0X3QgKmgpCi17Ci0gICAgc3RydWN0IHZjcHUg KnY7Ci0gICAgaW50IGVyciA9IDA7Ci0KLSAgICBmb3JfZWFjaF92Y3B1ICggZCwgdiApCi0gICAg ewotICAgICAgICBlcnIgPSBsYXBpY19zYXZlX2hpZGRlbl9vbmUodiwgaCk7Ci0gICAgICAgIGlm ICggZXJyICkKLSAgICAgICAgICAgIGJyZWFrOwotICAgIH0KLQotICAgIHJldHVybiBlcnI7Ci19 Ci0KLXN0YXRpYyBpbnQgbGFwaWNfc2F2ZV9yZWdzX29uZShzdHJ1Y3QgdmNwdSAqdiwgaHZtX2Rv bWFpbl9jb250ZXh0X3QgKmgpCitzdGF0aWMgaW50IGxhcGljX3NhdmVfcmVncyhzdHJ1Y3QgdmNw dSAqdiwgaHZtX2RvbWFpbl9jb250ZXh0X3QgKmgpCiB7CiAgICAgaWYgKCAhaGFzX3ZsYXBpYyh2 LT5kb21haW4pICkKICAgICAgICAgcmV0dXJuIDA7CkBAIC0xNDY5LDIxICsxNDU0LDYgQEAgc3Rh dGljIGludCBsYXBpY19zYXZlX3JlZ3Nfb25lKHN0cnVjdCB2Y3B1ICp2LCBodm1fZG9tYWluX2Nv bnRleHRfdCAqaCkKICAgICByZXR1cm4gaHZtX3NhdmVfZW50cnkoTEFQSUNfUkVHUywgdi0+dmNw dV9pZCwgaCwgdmNwdV92bGFwaWModiktPnJlZ3MpOwogfQogCi1zdGF0aWMgaW50IGxhcGljX3Nh dmVfcmVncyhzdHJ1Y3QgZG9tYWluICpkLCBodm1fZG9tYWluX2NvbnRleHRfdCAqaCkKLXsKLSAg ICBzdHJ1Y3QgdmNwdSAqdjsKLSAgICBpbnQgZXJyID0gMDsKLQotICAgIGZvcl9lYWNoX3ZjcHUg KCBkLCB2ICkKLSAgICB7Ci0gICAgICAgIGVyciA9IGxhcGljX3NhdmVfcmVnc19vbmUodiwgaCk7 Ci0gICAgICAgIGlmICggZXJyICkKLSAgICAgICAgICAgIGJyZWFrOwotICAgIH0KLQotICAgIHJl dHVybiBlcnI7Ci19Ci0KIC8qCiAgKiBGb2xsb3dpbmcgbGFwaWNfbG9hZF9oaWRkZW4oKS9sYXBp Y19sb2FkX3JlZ3MoKSB3ZSBtYXkgbmVlZCB0bwogICogY29ycmVjdCBJRCBhbmQgTERSIHdoZW4g dGhleSBjb21lIGZyb20gYW4gb2xkLCBicm9rZW4gaHlwZXJ2aXNvci4KQEAgLTE1ODQsOSArMTU1 NCw5IEBAIHN0YXRpYyBpbnQgbGFwaWNfbG9hZF9yZWdzKHN0cnVjdCBkb21haW4gKmQsIGh2bV9k b21haW5fY29udGV4dF90ICpoKQogICAgIHJldHVybiAwOwogfQogCi1IVk1fUkVHSVNURVJfU0FW RV9SRVNUT1JFKExBUElDLCBsYXBpY19zYXZlX2hpZGRlbiwgbGFwaWNfc2F2ZV9oaWRkZW5fb25l LCBsYXBpY19sb2FkX2hpZGRlbiwKK0hWTV9SRUdJU1RFUl9TQVZFX1JFU1RPUkUoTEFQSUMsIGxh cGljX3NhdmVfaGlkZGVuLCBsYXBpY19sb2FkX2hpZGRlbiwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgMSwgSFZNU1JfUEVSX1ZDUFUpOwotSFZNX1JFR0lTVEVSX1NBVkVfUkVTVE9SRShMQVBJ Q19SRUdTLCBsYXBpY19zYXZlX3JlZ3MsIGxhcGljX3NhdmVfcmVnc19vbmUsIGxhcGljX2xvYWRf cmVncywKK0hWTV9SRUdJU1RFUl9TQVZFX1JFU1RPUkUoTEFQSUNfUkVHUywgbGFwaWNfc2F2ZV9y ZWdzLCBsYXBpY19sb2FkX3JlZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIDEsIEhWTVNS X1BFUl9WQ1BVKTsKIAogaW50IHZsYXBpY19pbml0KHN0cnVjdCB2Y3B1ICp2KQpkaWZmIC0tZ2l0 IGEveGVuL2FyY2gveDg2L2h2bS92cGljLmMgYi94ZW4vYXJjaC94ODYvaHZtL3ZwaWMuYwppbmRl eCBjYTliNGNiLi5iYWQ1MDY2IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvaHZtL3ZwaWMuYwor KysgYi94ZW4vYXJjaC94ODYvaHZtL3ZwaWMuYwpAQCAtMzcxLDggKzM3MSw5IEBAIHN0YXRpYyBp bnQgdnBpY19pbnRlcmNlcHRfZWxjcl9pbygKICAgICByZXR1cm4gWDg2RU1VTF9PS0FZOwogfQog Ci1zdGF0aWMgaW50IHZwaWNfc2F2ZShzdHJ1Y3QgZG9tYWluICpkLCBodm1fZG9tYWluX2NvbnRl eHRfdCAqaCkKK3N0YXRpYyBpbnQgdnBpY19zYXZlKHN0cnVjdCB2Y3B1ICp2LCBodm1fZG9tYWlu X2NvbnRleHRfdCAqaCkKIHsKKyAgICBzdHJ1Y3QgZG9tYWluICpkID0gdi0+ZG9tYWluOwogICAg IHN0cnVjdCBodm1faHdfdnBpYyAqczsKICAgICBpbnQgaTsKIApAQCAtNDExLDcgKzQxMiw3IEBA IHN0YXRpYyBpbnQgdnBpY19sb2FkKHN0cnVjdCBkb21haW4gKmQsIGh2bV9kb21haW5fY29udGV4 dF90ICpoKQogICAgIHJldHVybiAwOwogfQogCi1IVk1fUkVHSVNURVJfU0FWRV9SRVNUT1JFKFBJ QywgdnBpY19zYXZlLCBOVUxMLCB2cGljX2xvYWQsIDIsIEhWTVNSX1BFUl9ET00pOworSFZNX1JF R0lTVEVSX1NBVkVfUkVTVE9SRShQSUMsIHZwaWNfc2F2ZSwgdnBpY19sb2FkLCAyLCBIVk1TUl9Q RVJfRE9NKTsKIAogdm9pZCB2cGljX3Jlc2V0KHN0cnVjdCBkb21haW4gKmQpCiB7CmRpZmYgLS1n aXQgYS94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS9zYXZlLmggYi94ZW4vaW5jbHVkZS9hc20teDg2 L2h2bS9zYXZlLmgKaW5kZXggZjIyODNmYy4uYjg2NzAyNyAxMDA2NDQKLS0tIGEveGVuL2luY2x1 ZGUvYXNtLXg4Ni9odm0vc2F2ZS5oCisrKyBiL3hlbi9pbmNsdWRlL2FzbS14ODYvaHZtL3NhdmUu aApAQCAtOTUsMTAgKzk1LDggQEAgc3RhdGljIGlubGluZSB1aW50MTZfdCBodm1fbG9hZF9pbnN0 YW5jZShzdHJ1Y3QgaHZtX2RvbWFpbl9jb250ZXh0ICpoKQogICogVGhlIHNhdmUgaGFuZGxlciBt YXkgc2F2ZSBtdWx0aXBsZSBpbnN0YW5jZXMgb2YgYSB0eXBlIGludG8gdGhlIGJ1ZmZlcjsKICAq IHRoZSBsb2FkIGhhbmRsZXIgd2lsbCBiZSBjYWxsZWQgb25jZSBmb3IgZWFjaCBpbnN0YW5jZSBm b3VuZCB3aGVuCiAgKiByZXN0b3JpbmcuICBCb3RoIHJldHVybiBub24temVybyBvbiBlcnJvci4g Ki8KLXR5cGVkZWYgaW50ICgqaHZtX3NhdmVfaGFuZGxlcikgKHN0cnVjdCBkb21haW4gKmQsIAor dHlwZWRlZiBpbnQgKCpodm1fc2F2ZV9oYW5kbGVyKSAoc3RydWN0IHZjcHUgKnYsCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBodm1fZG9tYWluX2NvbnRleHRfdCAqaCk7Ci10eXBl ZGVmIGludCAoKmh2bV9zYXZlX3ZjcHVfaGFuZGxlcikoc3RydWN0ICB2Y3B1ICp2LAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHZtX2RvbWFpbl9jb250ZXh0X3QgKmgpOwog dHlwZWRlZiBpbnQgKCpodm1fbG9hZF9oYW5kbGVyKSAoc3RydWN0IGRvbWFpbiAqZCwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh2bV9kb21haW5fY29udGV4dF90ICpoKTsKIApA QCAtMTA3LDcgKzEwNSw2IEBAIHR5cGVkZWYgaW50ICgqaHZtX2xvYWRfaGFuZGxlcikgKHN0cnVj dCBkb21haW4gKmQsCiB2b2lkIGh2bV9yZWdpc3Rlcl9zYXZldm0odWludDE2X3QgdHlwZWNvZGUs CiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbmFtZSwgCiAgICAgICAgICAg ICAgICAgICAgICAgICAgaHZtX3NhdmVfaGFuZGxlciBzYXZlX3N0YXRlLAotICAgICAgICAgICAg ICAgICAgICAgICAgIGh2bV9zYXZlX3ZjcHVfaGFuZGxlciBzYXZlX29uZSwKICAgICAgICAgICAg ICAgICAgICAgICAgICBodm1fbG9hZF9oYW5kbGVyIGxvYWRfc3RhdGUsCiAgICAgICAgICAgICAg ICAgICAgICAgICAgc2l6ZV90IHNpemUsIGludCBraW5kKTsKIApAQCAtMTE3LDEzICsxMTQsMTIg QEAgdm9pZCBodm1fcmVnaXN0ZXJfc2F2ZXZtKHVpbnQxNl90IHR5cGVjb2RlLAogCiAvKiBTeW50 YWN0aWMgc3VnYXIgYXJvdW5kIHRoYXQgZnVuY3Rpb246IHNwZWNpZnkgdGhlIG1heCBudW1iZXIg b2YKICAqIHNhdmVzLCBhbmQgdGhpcyBjYWxjdWxhdGVzIHRoZSBzaXplIG9mIGJ1ZmZlciBuZWVk ZWQgKi8KLSNkZWZpbmUgSFZNX1JFR0lTVEVSX1NBVkVfUkVTVE9SRShfeCwgX3NhdmUsIF9zYXZl X29uZSwgX2xvYWQsIF9udW0sIF9rKSAgXAorI2RlZmluZSBIVk1fUkVHSVNURVJfU0FWRV9SRVNU T1JFKF94LCBfc2F2ZSwgX2xvYWQsIF9udW0sIF9rKSAgXAogc3RhdGljIGludCBfX2luaXQgX19o dm1fcmVnaXN0ZXJfIyNfeCMjX3NhdmVfYW5kX3Jlc3RvcmUodm9pZCkgICAgICAgICAgICBcCiB7 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFwKICAgICBodm1fcmVnaXN0ZXJfc2F2ZXZtKEhWTV9TQVZFX0NPREUo X3gpLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAg ICAgICAgI194LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc CiAgICAgICAgICAgICAgICAgICAgICAgICAmX3NhdmUsICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgIF9zYXZlX29uZSwg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAg ICAgICAgICAgJl9sb2FkLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAoX251bSkgKiAoSFZNX1NBVkVfTEVOR1RIKF94 KSAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICArIHNpemVvZiAoc3RydWN0IGh2bV9zYXZlX2Rlc2NyaXB0b3IpKSwgXAotLSAKMi43LjQKCgpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwg bWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3Rz LnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8veGVuLWRldmVs