From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alexandru Isaila Subject: [PATCH v4 1/2] x86/hvm: Introduce *save_one() functions Date: Mon, 7 May 2018 11:24:00 +0300 Message-ID: <1525681441-13559-1-git-send-email-aisaila@bitdefender.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: 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 VGhpcyBwYXRjaCBpbnRyb2R1Y2VzIHNhdmVfb25lKCkgZnVuY3Rpb25zLiBUaGV5IHdpbGwgYmUg Y2FsbGVkIGluIHRoZQoqc2F2ZSgpIHNvIHdlIGNhbiBleHRyYWN0IGRhdGEgZm9yIGEgc2luZ2xl IGluc3RhbmNlLgoKU2lnbmVkLW9mZi1ieTogQWxleGFuZHJ1IElzYWlsYSA8YWlzYWlsYUBiaXRk ZWZlbmRlci5jb20+CgotLS0KQ2hhbmdlcyBzaW5jZSBWMzoKCS0gUmIgdG8gdGhlIGxhdGVzdGUg c3RhZ2luZyB2ZXJzaW9uCgktIFNwbGl0IHRoZSBwYXRjaCBpbnRvIDIgcGF0Y2hlcy4KLS0tCiB4 ZW4vYXJjaC94ODYvY3B1L21jaGVjay92bWNlLmMgfCAgMTYgKystCiB4ZW4vYXJjaC94ODYvaHZt L2h2bS5jICAgICAgICAgfCAyNzkgKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0t LS0tLS0KIHhlbi9hcmNoL3g4Ni9odm0vbXRyci5jICAgICAgICB8ICA1MSArKysrLS0tLQogeGVu L2FyY2gveDg2L2h2bS92aXJpZGlhbi5jICAgIHwgIDEzICstCiA0IGZpbGVzIGNoYW5nZWQsIDIw MCBpbnNlcnRpb25zKCspLCAxNTkgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gv eDg2L2NwdS9tY2hlY2svdm1jZS5jIGIveGVuL2FyY2gveDg2L2NwdS9tY2hlY2svdm1jZS5jCmlu ZGV4IGUwN2NkMmYuLjE1YjBmMmEgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9jcHUvbWNoZWNr L3ZtY2UuYworKysgYi94ZW4vYXJjaC94ODYvY3B1L21jaGVjay92bWNlLmMKQEAgLTM0OSw2ICsz NDksMTQgQEAgaW50IHZtY2Vfd3Jtc3IodWludDMyX3QgbXNyLCB1aW50NjRfdCB2YWwpCiAgICAg cmV0dXJuIHJldDsKIH0KIAordm9pZCB2bWNlX3NhdmVfdmNwdV9jdHh0X29uZShzdHJ1Y3QgdmNw dSAqdiwgc3RydWN0IGh2bV92bWNlX3ZjcHUgKmN0eHQpCit7CisgICAgY3R4dC0+Y2FwcyA9IHYt PmFyY2gudm1jZS5tY2dfY2FwOworICAgIGN0eHQtPm1jaV9jdGwyX2JhbmswID0gdi0+YXJjaC52 bWNlLmJhbmtbMF0ubWNpX2N0bDI7CisgICAgY3R4dC0+bWNpX2N0bDJfYmFuazEgPSB2LT5hcmNo LnZtY2UuYmFua1sxXS5tY2lfY3RsMjsKKyAgICBjdHh0LT5tY2dfZXh0X2N0bCA9IHYtPmFyY2gu dm1jZS5tY2dfZXh0X2N0bDsKK30KKwogc3RhdGljIGludCB2bWNlX3NhdmVfdmNwdV9jdHh0KHN0 cnVjdCBkb21haW4gKmQsIGh2bV9kb21haW5fY29udGV4dF90ICpoKQogewogICAgIHN0cnVjdCB2 Y3B1ICp2OwpAQCAtMzU2LDEzICszNjQsOSBAQCBzdGF0aWMgaW50IHZtY2Vfc2F2ZV92Y3B1X2N0 eHQoc3RydWN0IGRvbWFpbiAqZCwgaHZtX2RvbWFpbl9jb250ZXh0X3QgKmgpCiAKICAgICBmb3Jf ZWFjaF92Y3B1ICggZCwgdiApCiAgICAgewotICAgICAgICBzdHJ1Y3QgaHZtX3ZtY2VfdmNwdSBj dHh0ID0gewotICAgICAgICAgICAgLmNhcHMgPSB2LT5hcmNoLnZtY2UubWNnX2NhcCwKLSAgICAg ICAgICAgIC5tY2lfY3RsMl9iYW5rMCA9IHYtPmFyY2gudm1jZS5iYW5rWzBdLm1jaV9jdGwyLAot ICAgICAgICAgICAgLm1jaV9jdGwyX2JhbmsxID0gdi0+YXJjaC52bWNlLmJhbmtbMV0ubWNpX2N0 bDIsCi0gICAgICAgICAgICAubWNnX2V4dF9jdGwgPSB2LT5hcmNoLnZtY2UubWNnX2V4dF9jdGws Ci0gICAgICAgIH07CisgICAgICAgIHN0cnVjdCBodm1fdm1jZV92Y3B1IGN0eHQ7CiAKKyAgICAg ICAgdm1jZV9zYXZlX3ZjcHVfY3R4dF9vbmUodiwgJmN0eHQpOwogICAgICAgICBlcnIgPSBodm1f c2F2ZV9lbnRyeShWTUNFX1ZDUFUsIHYtPnZjcHVfaWQsIGgsICZjdHh0KTsKICAgICAgICAgaWYg KCBlcnIgKQogICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvaHZt L2h2bS5jIGIveGVuL2FyY2gveDg2L2h2bS9odm0uYwppbmRleCBjMjM5ODNjLi42NzMzZjI2IDEw MDY0NAotLS0gYS94ZW4vYXJjaC94ODYvaHZtL2h2bS5jCisrKyBiL3hlbi9hcmNoL3g4Ni9odm0v aHZtLmMKQEAgLTc0MCw2ICs3NDAsMTEgQEAgdm9pZCBodm1fZG9tYWluX2Rlc3Ryb3koc3RydWN0 IGRvbWFpbiAqZCkKICAgICBkZXN0cm95X3ZwY2lfbW1jZmcoZCk7CiB9CiAKK3ZvaWQgaHZtX3Nh dmVfdHNjX2FkanVzdF9vbmUoc3RydWN0IHZjcHUgKnYsIHN0cnVjdCBodm1fdHNjX2FkanVzdCAq Y3R4dCkKK3sKKyAgICBjdHh0LT50c2NfYWRqdXN0ID0gdi0+YXJjaC5odm1fdmNwdS5tc3JfdHNj X2FkanVzdDsKK30KKwogc3RhdGljIGludCBodm1fc2F2ZV90c2NfYWRqdXN0KHN0cnVjdCBkb21h aW4gKmQsIGh2bV9kb21haW5fY29udGV4dF90ICpoKQogewogICAgIHN0cnVjdCB2Y3B1ICp2OwpA QCAtNzQ4LDcgKzc1Myw3IEBAIHN0YXRpYyBpbnQgaHZtX3NhdmVfdHNjX2FkanVzdChzdHJ1Y3Qg ZG9tYWluICpkLCBodm1fZG9tYWluX2NvbnRleHRfdCAqaCkKIAogICAgIGZvcl9lYWNoX3ZjcHUg KCBkLCB2ICkKICAgICB7Ci0gICAgICAgIGN0eHQudHNjX2FkanVzdCA9IHYtPmFyY2guaHZtX3Zj cHUubXNyX3RzY19hZGp1c3Q7CisgICAgICAgIGh2bV9zYXZlX3RzY19hZGp1c3Rfb25lKHYsICZj dHh0KTsKICAgICAgICAgZXJyID0gaHZtX3NhdmVfZW50cnkoVFNDX0FESlVTVCwgdi0+dmNwdV9p ZCwgaCwgJmN0eHQpOwogICAgICAgICBpZiAoIGVyciApCiAgICAgICAgICAgICBicmVhazsKQEAg LTc4MCwxMSArNzg1LDEwOSBAQCBzdGF0aWMgaW50IGh2bV9sb2FkX3RzY19hZGp1c3Qoc3RydWN0 IGRvbWFpbiAqZCwgaHZtX2RvbWFpbl9jb250ZXh0X3QgKmgpCiBIVk1fUkVHSVNURVJfU0FWRV9S RVNUT1JFKFRTQ19BREpVU1QsIGh2bV9zYXZlX3RzY19hZGp1c3QsCiAgICAgICAgICAgICAgICAg ICAgICAgICAgIGh2bV9sb2FkX3RzY19hZGp1c3QsIDEsIEhWTVNSX1BFUl9WQ1BVKTsKIAordm9p ZCBodm1fc2F2ZV9jcHVfY3R4dF9vbmUoc3RydWN0IHZjcHUgKnYsIHN0cnVjdCBodm1faHdfY3B1 ICpjdHh0KQoreworICAgIHN0cnVjdCBzZWdtZW50X3JlZ2lzdGVyIHNlZzsKKworICAgIC8qIEFy Y2hpdGVjdHVyZS1zcGVjaWZpYyB2bWNzL3ZtY2IgYml0cyAqLworICAgIGh2bV9mdW5jcy5zYXZl X2NwdV9jdHh0KHYsIGN0eHQpOworCisgICAgY3R4dC0+dHNjID0gaHZtX2dldF9ndWVzdF90c2Nf Zml4ZWQodiwgdi0+ZG9tYWluLT5hcmNoLmh2bV9kb21haW4uc3luY190c2MpOworCisgICAgY3R4 dC0+bXNyX3RzY19hdXggPSBodm1fbXNyX3RzY19hdXgodik7CisKKyAgICBodm1fZ2V0X3NlZ21l bnRfcmVnaXN0ZXIodiwgeDg2X3NlZ19pZHRyLCAmc2VnKTsKKyAgICBjdHh0LT5pZHRyX2xpbWl0 ID0gc2VnLmxpbWl0OworICAgIGN0eHQtPmlkdHJfYmFzZSA9IHNlZy5iYXNlOworCisgICAgaHZt X2dldF9zZWdtZW50X3JlZ2lzdGVyKHYsIHg4Nl9zZWdfZ2R0ciwgJnNlZyk7CisgICAgY3R4dC0+ Z2R0cl9saW1pdCA9IHNlZy5saW1pdDsKKyAgICBjdHh0LT5nZHRyX2Jhc2UgPSBzZWcuYmFzZTsK KworICAgIGh2bV9nZXRfc2VnbWVudF9yZWdpc3Rlcih2LCB4ODZfc2VnX2NzLCAmc2VnKTsKKyAg ICBjdHh0LT5jc19zZWwgPSBzZWcuc2VsOworICAgIGN0eHQtPmNzX2xpbWl0ID0gc2VnLmxpbWl0 OworICAgIGN0eHQtPmNzX2Jhc2UgPSBzZWcuYmFzZTsKKyAgICBjdHh0LT5jc19hcmJ5dGVzID0g c2VnLmF0dHI7CisKKyAgICBodm1fZ2V0X3NlZ21lbnRfcmVnaXN0ZXIodiwgeDg2X3NlZ19kcywg JnNlZyk7CisgICAgY3R4dC0+ZHNfc2VsID0gc2VnLnNlbDsKKyAgICBjdHh0LT5kc19saW1pdCA9 IHNlZy5saW1pdDsKKyAgICBjdHh0LT5kc19iYXNlID0gc2VnLmJhc2U7CisgICAgY3R4dC0+ZHNf YXJieXRlcyA9IHNlZy5hdHRyOworCisgICAgaHZtX2dldF9zZWdtZW50X3JlZ2lzdGVyKHYsIHg4 Nl9zZWdfZXMsICZzZWcpOworICAgIGN0eHQtPmVzX3NlbCA9IHNlZy5zZWw7CisgICAgY3R4dC0+ ZXNfbGltaXQgPSBzZWcubGltaXQ7CisgICAgY3R4dC0+ZXNfYmFzZSA9IHNlZy5iYXNlOworICAg IGN0eHQtPmVzX2FyYnl0ZXMgPSBzZWcuYXR0cjsKKworICAgIGh2bV9nZXRfc2VnbWVudF9yZWdp c3Rlcih2LCB4ODZfc2VnX3NzLCAmc2VnKTsKKyAgICBjdHh0LT5zc19zZWwgPSBzZWcuc2VsOwor ICAgIGN0eHQtPnNzX2xpbWl0ID0gc2VnLmxpbWl0OworICAgIGN0eHQtPnNzX2Jhc2UgPSBzZWcu YmFzZTsKKyAgICBjdHh0LT5zc19hcmJ5dGVzID0gc2VnLmF0dHI7CisKKyAgICBodm1fZ2V0X3Nl Z21lbnRfcmVnaXN0ZXIodiwgeDg2X3NlZ19mcywgJnNlZyk7CisgICAgY3R4dC0+ZnNfc2VsID0g c2VnLnNlbDsKKyAgICBjdHh0LT5mc19saW1pdCA9IHNlZy5saW1pdDsKKyAgICBjdHh0LT5mc19i YXNlID0gc2VnLmJhc2U7CisgICAgY3R4dC0+ZnNfYXJieXRlcyA9IHNlZy5hdHRyOworCisgICAg aHZtX2dldF9zZWdtZW50X3JlZ2lzdGVyKHYsIHg4Nl9zZWdfZ3MsICZzZWcpOworICAgIGN0eHQt PmdzX3NlbCA9IHNlZy5zZWw7CisgICAgY3R4dC0+Z3NfbGltaXQgPSBzZWcubGltaXQ7CisgICAg Y3R4dC0+Z3NfYmFzZSA9IHNlZy5iYXNlOworICAgIGN0eHQtPmdzX2FyYnl0ZXMgPSBzZWcuYXR0 cjsKKworICAgIGh2bV9nZXRfc2VnbWVudF9yZWdpc3Rlcih2LCB4ODZfc2VnX3RyLCAmc2VnKTsK KyAgICBjdHh0LT50cl9zZWwgPSBzZWcuc2VsOworICAgIGN0eHQtPnRyX2xpbWl0ID0gc2VnLmxp bWl0OworICAgIGN0eHQtPnRyX2Jhc2UgPSBzZWcuYmFzZTsKKyAgICBjdHh0LT50cl9hcmJ5dGVz ID0gc2VnLmF0dHI7CisKKyAgICBodm1fZ2V0X3NlZ21lbnRfcmVnaXN0ZXIodiwgeDg2X3NlZ19s ZHRyLCAmc2VnKTsKKyAgICBjdHh0LT5sZHRyX3NlbCA9IHNlZy5zZWw7CisgICAgY3R4dC0+bGR0 cl9saW1pdCA9IHNlZy5saW1pdDsKKyAgICBjdHh0LT5sZHRyX2Jhc2UgPSBzZWcuYmFzZTsKKyAg ICBjdHh0LT5sZHRyX2FyYnl0ZXMgPSBzZWcuYXR0cjsKKworICAgIGlmICggdi0+ZnB1X2luaXRp YWxpc2VkICkKKyAgICB7CisgICAgICAgIG1lbWNweShjdHh0LT5mcHVfcmVncywgdi0+YXJjaC5m cHVfY3R4dCwgc2l6ZW9mKGN0eHQtPmZwdV9yZWdzKSk7CisgICAgICAgIGN0eHQtPmZsYWdzID0g WEVOX1g4Nl9GUFVfSU5JVElBTElTRUQ7CisgICAgfQorCisgICAgY3R4dC0+cmF4ID0gdi0+YXJj aC51c2VyX3JlZ3MucmF4OworICAgIGN0eHQtPnJieCA9IHYtPmFyY2gudXNlcl9yZWdzLnJieDsK KyAgICBjdHh0LT5yY3ggPSB2LT5hcmNoLnVzZXJfcmVncy5yY3g7CisgICAgY3R4dC0+cmR4ID0g di0+YXJjaC51c2VyX3JlZ3MucmR4OworICAgIGN0eHQtPnJicCA9IHYtPmFyY2gudXNlcl9yZWdz LnJicDsKKyAgICBjdHh0LT5yc2kgPSB2LT5hcmNoLnVzZXJfcmVncy5yc2k7CisgICAgY3R4dC0+ cmRpID0gdi0+YXJjaC51c2VyX3JlZ3MucmRpOworICAgIGN0eHQtPnJzcCA9IHYtPmFyY2gudXNl cl9yZWdzLnJzcDsKKyAgICBjdHh0LT5yaXAgPSB2LT5hcmNoLnVzZXJfcmVncy5yaXA7CisgICAg Y3R4dC0+cmZsYWdzID0gdi0+YXJjaC51c2VyX3JlZ3MucmZsYWdzOworICAgIGN0eHQtPnI4ICA9 IHYtPmFyY2gudXNlcl9yZWdzLnI4OworICAgIGN0eHQtPnI5ICA9IHYtPmFyY2gudXNlcl9yZWdz LnI5OworICAgIGN0eHQtPnIxMCA9IHYtPmFyY2gudXNlcl9yZWdzLnIxMDsKKyAgICBjdHh0LT5y MTEgPSB2LT5hcmNoLnVzZXJfcmVncy5yMTE7CisgICAgY3R4dC0+cjEyID0gdi0+YXJjaC51c2Vy X3JlZ3MucjEyOworICAgIGN0eHQtPnIxMyA9IHYtPmFyY2gudXNlcl9yZWdzLnIxMzsKKyAgICBj dHh0LT5yMTQgPSB2LT5hcmNoLnVzZXJfcmVncy5yMTQ7CisgICAgY3R4dC0+cjE1ID0gdi0+YXJj aC51c2VyX3JlZ3MucjE1OworICAgIGN0eHQtPmRyMCA9IHYtPmFyY2guZGVidWdyZWdbMF07Cisg ICAgY3R4dC0+ZHIxID0gdi0+YXJjaC5kZWJ1Z3JlZ1sxXTsKKyAgICBjdHh0LT5kcjIgPSB2LT5h cmNoLmRlYnVncmVnWzJdOworICAgIGN0eHQtPmRyMyA9IHYtPmFyY2guZGVidWdyZWdbM107Cisg ICAgY3R4dC0+ZHI2ID0gdi0+YXJjaC5kZWJ1Z3JlZ1s2XTsKKyAgICBjdHh0LT5kcjcgPSB2LT5h cmNoLmRlYnVncmVnWzddOworfQorCiBzdGF0aWMgaW50IGh2bV9zYXZlX2NwdV9jdHh0KHN0cnVj dCBkb21haW4gKmQsIGh2bV9kb21haW5fY29udGV4dF90ICpoKQogewogICAgIHN0cnVjdCB2Y3B1 ICp2OwogICAgIHN0cnVjdCBodm1faHdfY3B1IGN0eHQ7Ci0gICAgc3RydWN0IHNlZ21lbnRfcmVn aXN0ZXIgc2VnOwogCiAgICAgZm9yX2VhY2hfdmNwdSAoIGQsIHYgKQogICAgIHsKQEAgLTc5NSw5 OSArODk4LDcgQEAgc3RhdGljIGludCBodm1fc2F2ZV9jcHVfY3R4dChzdHJ1Y3QgZG9tYWluICpk LCBodm1fZG9tYWluX2NvbnRleHRfdCAqaCkKIAogICAgICAgICBtZW1zZXQoJmN0eHQsIDAsIHNp emVvZihjdHh0KSk7CiAKLSAgICAgICAgLyogQXJjaGl0ZWN0dXJlLXNwZWNpZmljIHZtY3Mvdm1j YiBiaXRzICovCi0gICAgICAgIGh2bV9mdW5jcy5zYXZlX2NwdV9jdHh0KHYsICZjdHh0KTsKLQot ICAgICAgICBjdHh0LnRzYyA9IGh2bV9nZXRfZ3Vlc3RfdHNjX2ZpeGVkKHYsIGQtPmFyY2guaHZt X2RvbWFpbi5zeW5jX3RzYyk7Ci0KLSAgICAgICAgY3R4dC5tc3JfdHNjX2F1eCA9IGh2bV9tc3Jf dHNjX2F1eCh2KTsKLQotICAgICAgICBodm1fZ2V0X3NlZ21lbnRfcmVnaXN0ZXIodiwgeDg2X3Nl Z19pZHRyLCAmc2VnKTsKLSAgICAgICAgY3R4dC5pZHRyX2xpbWl0ID0gc2VnLmxpbWl0OwotICAg ICAgICBjdHh0LmlkdHJfYmFzZSA9IHNlZy5iYXNlOwotCi0gICAgICAgIGh2bV9nZXRfc2VnbWVu dF9yZWdpc3Rlcih2LCB4ODZfc2VnX2dkdHIsICZzZWcpOwotICAgICAgICBjdHh0LmdkdHJfbGlt aXQgPSBzZWcubGltaXQ7Ci0gICAgICAgIGN0eHQuZ2R0cl9iYXNlID0gc2VnLmJhc2U7Ci0KLSAg ICAgICAgaHZtX2dldF9zZWdtZW50X3JlZ2lzdGVyKHYsIHg4Nl9zZWdfY3MsICZzZWcpOwotICAg ICAgICBjdHh0LmNzX3NlbCA9IHNlZy5zZWw7Ci0gICAgICAgIGN0eHQuY3NfbGltaXQgPSBzZWcu bGltaXQ7Ci0gICAgICAgIGN0eHQuY3NfYmFzZSA9IHNlZy5iYXNlOwotICAgICAgICBjdHh0LmNz X2FyYnl0ZXMgPSBzZWcuYXR0cjsKLQotICAgICAgICBodm1fZ2V0X3NlZ21lbnRfcmVnaXN0ZXIo diwgeDg2X3NlZ19kcywgJnNlZyk7Ci0gICAgICAgIGN0eHQuZHNfc2VsID0gc2VnLnNlbDsKLSAg ICAgICAgY3R4dC5kc19saW1pdCA9IHNlZy5saW1pdDsKLSAgICAgICAgY3R4dC5kc19iYXNlID0g c2VnLmJhc2U7Ci0gICAgICAgIGN0eHQuZHNfYXJieXRlcyA9IHNlZy5hdHRyOwotCi0gICAgICAg IGh2bV9nZXRfc2VnbWVudF9yZWdpc3Rlcih2LCB4ODZfc2VnX2VzLCAmc2VnKTsKLSAgICAgICAg Y3R4dC5lc19zZWwgPSBzZWcuc2VsOwotICAgICAgICBjdHh0LmVzX2xpbWl0ID0gc2VnLmxpbWl0 OwotICAgICAgICBjdHh0LmVzX2Jhc2UgPSBzZWcuYmFzZTsKLSAgICAgICAgY3R4dC5lc19hcmJ5 dGVzID0gc2VnLmF0dHI7Ci0KLSAgICAgICAgaHZtX2dldF9zZWdtZW50X3JlZ2lzdGVyKHYsIHg4 Nl9zZWdfc3MsICZzZWcpOwotICAgICAgICBjdHh0LnNzX3NlbCA9IHNlZy5zZWw7Ci0gICAgICAg IGN0eHQuc3NfbGltaXQgPSBzZWcubGltaXQ7Ci0gICAgICAgIGN0eHQuc3NfYmFzZSA9IHNlZy5i YXNlOwotICAgICAgICBjdHh0LnNzX2FyYnl0ZXMgPSBzZWcuYXR0cjsKLQotICAgICAgICBodm1f Z2V0X3NlZ21lbnRfcmVnaXN0ZXIodiwgeDg2X3NlZ19mcywgJnNlZyk7Ci0gICAgICAgIGN0eHQu ZnNfc2VsID0gc2VnLnNlbDsKLSAgICAgICAgY3R4dC5mc19saW1pdCA9IHNlZy5saW1pdDsKLSAg ICAgICAgY3R4dC5mc19iYXNlID0gc2VnLmJhc2U7Ci0gICAgICAgIGN0eHQuZnNfYXJieXRlcyA9 IHNlZy5hdHRyOwotCi0gICAgICAgIGh2bV9nZXRfc2VnbWVudF9yZWdpc3Rlcih2LCB4ODZfc2Vn X2dzLCAmc2VnKTsKLSAgICAgICAgY3R4dC5nc19zZWwgPSBzZWcuc2VsOwotICAgICAgICBjdHh0 LmdzX2xpbWl0ID0gc2VnLmxpbWl0OwotICAgICAgICBjdHh0LmdzX2Jhc2UgPSBzZWcuYmFzZTsK LSAgICAgICAgY3R4dC5nc19hcmJ5dGVzID0gc2VnLmF0dHI7Ci0KLSAgICAgICAgaHZtX2dldF9z ZWdtZW50X3JlZ2lzdGVyKHYsIHg4Nl9zZWdfdHIsICZzZWcpOwotICAgICAgICBjdHh0LnRyX3Nl bCA9IHNlZy5zZWw7Ci0gICAgICAgIGN0eHQudHJfbGltaXQgPSBzZWcubGltaXQ7Ci0gICAgICAg IGN0eHQudHJfYmFzZSA9IHNlZy5iYXNlOwotICAgICAgICBjdHh0LnRyX2FyYnl0ZXMgPSBzZWcu YXR0cjsKLQotICAgICAgICBodm1fZ2V0X3NlZ21lbnRfcmVnaXN0ZXIodiwgeDg2X3NlZ19sZHRy LCAmc2VnKTsKLSAgICAgICAgY3R4dC5sZHRyX3NlbCA9IHNlZy5zZWw7Ci0gICAgICAgIGN0eHQu bGR0cl9saW1pdCA9IHNlZy5saW1pdDsKLSAgICAgICAgY3R4dC5sZHRyX2Jhc2UgPSBzZWcuYmFz ZTsKLSAgICAgICAgY3R4dC5sZHRyX2FyYnl0ZXMgPSBzZWcuYXR0cjsKLQotICAgICAgICBpZiAo IHYtPmZwdV9pbml0aWFsaXNlZCApCi0gICAgICAgIHsKLSAgICAgICAgICAgIG1lbWNweShjdHh0 LmZwdV9yZWdzLCB2LT5hcmNoLmZwdV9jdHh0LCBzaXplb2YoY3R4dC5mcHVfcmVncykpOwotICAg ICAgICAgICAgY3R4dC5mbGFncyA9IFhFTl9YODZfRlBVX0lOSVRJQUxJU0VEOwotICAgICAgICB9 Ci0KLSAgICAgICAgY3R4dC5yYXggPSB2LT5hcmNoLnVzZXJfcmVncy5yYXg7Ci0gICAgICAgIGN0 eHQucmJ4ID0gdi0+YXJjaC51c2VyX3JlZ3MucmJ4OwotICAgICAgICBjdHh0LnJjeCA9IHYtPmFy Y2gudXNlcl9yZWdzLnJjeDsKLSAgICAgICAgY3R4dC5yZHggPSB2LT5hcmNoLnVzZXJfcmVncy5y ZHg7Ci0gICAgICAgIGN0eHQucmJwID0gdi0+YXJjaC51c2VyX3JlZ3MucmJwOwotICAgICAgICBj dHh0LnJzaSA9IHYtPmFyY2gudXNlcl9yZWdzLnJzaTsKLSAgICAgICAgY3R4dC5yZGkgPSB2LT5h cmNoLnVzZXJfcmVncy5yZGk7Ci0gICAgICAgIGN0eHQucnNwID0gdi0+YXJjaC51c2VyX3JlZ3Mu cnNwOwotICAgICAgICBjdHh0LnJpcCA9IHYtPmFyY2gudXNlcl9yZWdzLnJpcDsKLSAgICAgICAg Y3R4dC5yZmxhZ3MgPSB2LT5hcmNoLnVzZXJfcmVncy5yZmxhZ3M7Ci0gICAgICAgIGN0eHQucjgg ID0gdi0+YXJjaC51c2VyX3JlZ3Mucjg7Ci0gICAgICAgIGN0eHQucjkgID0gdi0+YXJjaC51c2Vy X3JlZ3Mucjk7Ci0gICAgICAgIGN0eHQucjEwID0gdi0+YXJjaC51c2VyX3JlZ3MucjEwOwotICAg ICAgICBjdHh0LnIxMSA9IHYtPmFyY2gudXNlcl9yZWdzLnIxMTsKLSAgICAgICAgY3R4dC5yMTIg PSB2LT5hcmNoLnVzZXJfcmVncy5yMTI7Ci0gICAgICAgIGN0eHQucjEzID0gdi0+YXJjaC51c2Vy X3JlZ3MucjEzOwotICAgICAgICBjdHh0LnIxNCA9IHYtPmFyY2gudXNlcl9yZWdzLnIxNDsKLSAg ICAgICAgY3R4dC5yMTUgPSB2LT5hcmNoLnVzZXJfcmVncy5yMTU7Ci0gICAgICAgIGN0eHQuZHIw ID0gdi0+YXJjaC5kZWJ1Z3JlZ1swXTsKLSAgICAgICAgY3R4dC5kcjEgPSB2LT5hcmNoLmRlYnVn cmVnWzFdOwotICAgICAgICBjdHh0LmRyMiA9IHYtPmFyY2guZGVidWdyZWdbMl07Ci0gICAgICAg IGN0eHQuZHIzID0gdi0+YXJjaC5kZWJ1Z3JlZ1szXTsKLSAgICAgICAgY3R4dC5kcjYgPSB2LT5h cmNoLmRlYnVncmVnWzZdOwotICAgICAgICBjdHh0LmRyNyA9IHYtPmFyY2guZGVidWdyZWdbN107 CisgICAgICAgIGh2bV9zYXZlX2NwdV9jdHh0X29uZSh2LCAmY3R4dCk7CiAKICAgICAgICAgaWYg KCBodm1fc2F2ZV9lbnRyeShDUFUsIHYtPnZjcHVfaWQsIGgsICZjdHh0KSAhPSAwICkKICAgICAg ICAgICAgIHJldHVybiAxOyAKQEAgLTExNzMsNiArMTE4NCwxOCBAQCBIVk1fUkVHSVNURVJfU0FW RV9SRVNUT1JFKENQVSwgaHZtX3NhdmVfY3B1X2N0eHQsIGh2bV9sb2FkX2NwdV9jdHh0LAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhdmVfYXJlYSkgKyBcCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeHN0YXRlX2N0eHRfc2l6ZSh4Y3IwKSkK IAordm9pZCBodm1fc2F2ZV9jcHVfeHNhdmVfc3RhdGVzX29uZShzdHJ1Y3QgdmNwdSAqdiwgc3Ry dWN0IGh2bV9od19jcHVfeHNhdmUgKipjdHgsIGh2bV9kb21haW5fY29udGV4dF90ICpoKQorewor ICAgIHVuc2lnbmVkIGludCBzaXplID0gSFZNX0NQVV9YU0FWRV9TSVpFKHYtPmFyY2gueGNyMF9h Y2N1bSk7CisgICAgc3RydWN0IGh2bV9od19jcHVfeHNhdmUgKmN0eHQgPSAqIGN0eDsKKworICAg IGgtPmN1ciArPSBzaXplOworCisgICAgY3R4dC0+eGZlYXR1cmVfbWFzayA9IHhmZWF0dXJlX21h c2s7CisgICAgY3R4dC0+eGNyMCA9IHYtPmFyY2gueGNyMDsKKyAgICBjdHh0LT54Y3IwX2FjY3Vt ID0gdi0+YXJjaC54Y3IwX2FjY3VtOworfQorCiBzdGF0aWMgaW50IGh2bV9zYXZlX2NwdV94c2F2 ZV9zdGF0ZXMoc3RydWN0IGRvbWFpbiAqZCwgaHZtX2RvbWFpbl9jb250ZXh0X3QgKmgpCiB7CiAg ICAgc3RydWN0IHZjcHUgKnY7CkBAIC0xMTkwLDExICsxMjEzLDcgQEAgc3RhdGljIGludCBodm1f c2F2ZV9jcHVfeHNhdmVfc3RhdGVzKHN0cnVjdCBkb21haW4gKmQsIGh2bV9kb21haW5fY29udGV4 dF90ICpoKQogICAgICAgICBpZiAoIF9odm1faW5pdF9lbnRyeShoLCBDUFVfWFNBVkVfQ09ERSwg di0+dmNwdV9pZCwgc2l6ZSkgKQogICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgIGN0eHQg PSAoc3RydWN0IGh2bV9od19jcHVfeHNhdmUgKikmaC0+ZGF0YVtoLT5jdXJdOwotICAgICAgICBo LT5jdXIgKz0gc2l6ZTsKLQotICAgICAgICBjdHh0LT54ZmVhdHVyZV9tYXNrID0geGZlYXR1cmVf bWFzazsKLSAgICAgICAgY3R4dC0+eGNyMCA9IHYtPmFyY2gueGNyMDsKLSAgICAgICAgY3R4dC0+ eGNyMF9hY2N1bSA9IHYtPmFyY2gueGNyMF9hY2N1bTsKKyAgICAgICAgaHZtX3NhdmVfY3B1X3hz YXZlX3N0YXRlc19vbmUodiwgJmN0eHQsIGgpOwogICAgICAgICBleHBhbmRfeHNhdmVfc3RhdGVz KHYsICZjdHh0LT5zYXZlX2FyZWEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZSAt IG9mZnNldG9mKHR5cGVvZigqY3R4dCksIHNhdmVfYXJlYSkpOwogICAgIH0KQEAgLTEzMzksNiAr MTM1OCwzOSBAQCBzdGF0aWMgY29uc3QgdWludDMyX3QgbXNyc190b19zZW5kW10gPSB7CiB9Owog c3RhdGljIHVuc2lnbmVkIGludCBfX3JlYWRfbW9zdGx5IG1zcl9jb3VudF9tYXggPSBBUlJBWV9T SVpFKG1zcnNfdG9fc2VuZCk7CiAKK2ludCBodm1fc2F2ZV9jcHVfbXNyc19vbmUoc3RydWN0IHZj cHUgKnYsIHN0cnVjdCBodm1fbXNyICoqY3R4LCBodm1fZG9tYWluX2NvbnRleHRfdCAqaCkKK3sK KyAgICB1bnNpZ25lZCBpbnQgaTsKKyAgICBzdHJ1Y3QgaHZtX21zciAqY3R4dCA9ICpjdHg7CisK KyAgICBmb3IgKCBpID0gMDsgaSA8IEFSUkFZX1NJWkUobXNyc190b19zZW5kKTsgKytpICkKKyAg ICB7CisgICAgICAgIHVpbnQ2NF90IHZhbDsKKyAgICAgICAgaW50IHJjID0gZ3Vlc3RfcmRtc3Io diwgbXNyc190b19zZW5kW2ldLCAmdmFsKTsKKworICAgICAgICAvKgorICAgICAgICAgKiBJdCBp cyB0aGUgcHJvZ3JhbW1lcnMgcmVzcG9uc2liaWxpdHkgdG8gZW5zdXJlIHRoYXQKKyAgICAgICAg ICogbXNyc190b19zZW5kW10gY29udGFpbiBnZW5lcmFsbHktcmVhZC93cml0ZSBNU1JzLgorICAg ICAgICAgKiBYODZFTVVMX0VYQ0VQVElPTiBoZXJlIGltcGxpZXMgYSBtaXNzaW5nIGZlYXR1cmUs IGFuZCB0aGF0IHRoZQorICAgICAgICAgKiBndWVzdCBkb2Vzbid0IGhhdmUgYWNjZXNzIHRvIHRo ZSBNU1IuCisgICAgICAgICAqLworICAgICAgICBpZiAoIHJjID09IFg4NkVNVUxfRVhDRVBUSU9O ICkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGlmICggcmMgIT0gWDg2RU1VTF9P S0FZICkKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUX1VOUkVBQ0hBQkxFKCk7CisgICAg ICAgICAgICByZXR1cm4gLUVOWElPOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCAhdmFsICkK KyAgICAgICAgICAgY29udGludWU7IC8qIFNraXAgZW1wdHkgTVNScy4gKi8KKyAgICAgICAgY3R4 dC0+bXNyW2N0eHQtPmNvdW50XS5pbmRleCA9IG1zcnNfdG9fc2VuZFtpXTsKKyAgICAgICAgY3R4 dC0+bXNyW2N0eHQtPmNvdW50KytdLnZhbCA9IHZhbDsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9 CisKIHN0YXRpYyBpbnQgaHZtX3NhdmVfY3B1X21zcnMoc3RydWN0IGRvbWFpbiAqZCwgaHZtX2Rv bWFpbl9jb250ZXh0X3QgKmgpCiB7CiAgICAgc3RydWN0IHZjcHUgKnY7CkBAIC0xMzU1LDMyICsx NDA3LDcgQEAgc3RhdGljIGludCBodm1fc2F2ZV9jcHVfbXNycyhzdHJ1Y3QgZG9tYWluICpkLCBo dm1fZG9tYWluX2NvbnRleHRfdCAqaCkKICAgICAgICAgY3R4dCA9IChzdHJ1Y3QgaHZtX21zciAq KSZoLT5kYXRhW2gtPmN1cl07CiAgICAgICAgIGN0eHQtPmNvdW50ID0gMDsKIAotICAgICAgICBm b3IgKCBpID0gMDsgaSA8IEFSUkFZX1NJWkUobXNyc190b19zZW5kKTsgKytpICkKLSAgICAgICAg ewotICAgICAgICAgICAgdWludDY0X3QgdmFsOwotICAgICAgICAgICAgaW50IHJjID0gZ3Vlc3Rf cmRtc3IodiwgbXNyc190b19zZW5kW2ldLCAmdmFsKTsKLQotICAgICAgICAgICAgLyoKLSAgICAg ICAgICAgICAqIEl0IGlzIHRoZSBwcm9ncmFtbWVycyByZXNwb25zaWJpbGl0eSB0byBlbnN1cmUg dGhhdAotICAgICAgICAgICAgICogbXNyc190b19zZW5kW10gY29udGFpbiBnZW5lcmFsbHktcmVh ZC93cml0ZSBNU1JzLgotICAgICAgICAgICAgICogWDg2RU1VTF9FWENFUFRJT04gaGVyZSBpbXBs aWVzIGEgbWlzc2luZyBmZWF0dXJlLCBhbmQgdGhhdCB0aGUKLSAgICAgICAgICAgICAqIGd1ZXN0 IGRvZXNuJ3QgaGF2ZSBhY2Nlc3MgdG8gdGhlIE1TUi4KLSAgICAgICAgICAgICAqLwotICAgICAg ICAgICAgaWYgKCByYyA9PSBYODZFTVVMX0VYQ0VQVElPTiApCi0gICAgICAgICAgICAgICAgY29u dGludWU7Ci0KLSAgICAgICAgICAgIGlmICggcmMgIT0gWDg2RU1VTF9PS0FZICkKLSAgICAgICAg ICAgIHsKLSAgICAgICAgICAgICAgICBBU1NFUlRfVU5SRUFDSEFCTEUoKTsKLSAgICAgICAgICAg ICAgICByZXR1cm4gLUVOWElPOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAoICF2 YWwgKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOyAvKiBTa2lwIGVtcHR5IE1TUnMuICovCi0K LSAgICAgICAgICAgIGN0eHQtPm1zcltjdHh0LT5jb3VudF0uaW5kZXggPSBtc3JzX3RvX3NlbmRb aV07Ci0gICAgICAgICAgICBjdHh0LT5tc3JbY3R4dC0+Y291bnQrK10udmFsID0gdmFsOwotICAg ICAgICB9CisgICAgICAgIGh2bV9zYXZlX2NwdV9tc3JzX29uZSh2LCAmY3R4dCwgaCk7CiAKICAg ICAgICAgaWYgKCBodm1fZnVuY3Muc2F2ZV9tc3IgKQogICAgICAgICAgICAgaHZtX2Z1bmNzLnNh dmVfbXNyKHYsIGN0eHQpOwpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2h2bS9tdHJyLmMgYi94 ZW4vYXJjaC94ODYvaHZtL210cnIuYwppbmRleCBiNzIxYzYzLi4yNjc4YjI1IDEwMDY0NAotLS0g YS94ZW4vYXJjaC94ODYvaHZtL210cnIuYworKysgYi94ZW4vYXJjaC94ODYvaHZtL210cnIuYwpA QCAtNjY2LDM2ICs2NjYsNDEgQEAgaW50IGh2bV9zZXRfbWVtX3Bpbm5lZF9jYWNoZWF0dHIoc3Ry dWN0IGRvbWFpbiAqZCwgdWludDY0X3QgZ2ZuX3N0YXJ0LAogICAgIHJldHVybiAwOwogfQogCit2 b2lkIGh2bV9zYXZlX210cnJfbXNyX29uZShzdHJ1Y3QgdmNwdSAqdiwgc3RydWN0IGh2bV9od19t dHJyICpod19tdHJyKQoreworICAgIHN0cnVjdCBtdHJyX3N0YXRlICptdHJyX3N0YXRlID0gJnYt PmFyY2guaHZtX3ZjcHUubXRycjsKKyAgICAgaW50IGk7CisKKyAgICBodm1fZ2V0X2d1ZXN0X3Bh dCh2LCAmaHdfbXRyci0+bXNyX3BhdF9jcik7CisKKyAgICBod19tdHJyLT5tc3JfbXRycl9kZWZf dHlwZSA9IG10cnJfc3RhdGUtPmRlZl90eXBlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg fCAobXRycl9zdGF0ZS0+ZW5hYmxlZCA8PCAxMCk7CisgICAgaHdfbXRyci0+bXNyX210cnJfY2Fw ID0gbXRycl9zdGF0ZS0+bXRycl9jYXA7CisKKyAgICBmb3IgKCBpID0gMDsgaSA8IE1UUlJfVkNO VDsgaSsrICkKKyAgICB7CisgICAgICAgIC8qIHNhdmUgcGh5c2Jhc2UgKi8KKyAgICAgICAgaHdf bXRyci0+bXNyX210cnJfdmFyW2kqMl0gPQorICAgICAgICAgICAgKCh1aW50NjRfdCopbXRycl9z dGF0ZS0+dmFyX3JhbmdlcylbaSoyXTsKKyAgICAgICAgLyogc2F2ZSBwaHlzbWFzayAqLworICAg ICAgICBod19tdHJyLT5tc3JfbXRycl92YXJbaSoyKzFdID0KKyAgICAgICAgICAgICgodWludDY0 X3QqKW10cnJfc3RhdGUtPnZhcl9yYW5nZXMpW2kqMisxXTsKKyAgICB9CisKKyAgICBmb3IgKCBp ID0gMDsgaSA8IE5VTV9GSVhFRF9NU1I7IGkrKyApCisgICAgICAgIGh3X210cnItPm1zcl9tdHJy X2ZpeGVkW2ldID0KKyAgICAgICAgICAgICgodWludDY0X3QqKW10cnJfc3RhdGUtPmZpeGVkX3Jh bmdlcylbaV07CisKK30KKwogc3RhdGljIGludCBodm1fc2F2ZV9tdHJyX21zcihzdHJ1Y3QgZG9t YWluICpkLCBodm1fZG9tYWluX2NvbnRleHRfdCAqaCkKIHsKLSAgICBpbnQgaTsKICAgICBzdHJ1 Y3QgdmNwdSAqdjsKICAgICBzdHJ1Y3QgaHZtX2h3X210cnIgaHdfbXRycjsKLSAgICBzdHJ1Y3Qg bXRycl9zdGF0ZSAqbXRycl9zdGF0ZTsKICAgICAvKiBzYXZlIG10cnImcGF0ICovCiAgICAgZm9y X2VhY2hfdmNwdShkLCB2KQogICAgIHsKLSAgICAgICAgbXRycl9zdGF0ZSA9ICZ2LT5hcmNoLmh2 bV92Y3B1Lm10cnI7Ci0KLSAgICAgICAgaHZtX2dldF9ndWVzdF9wYXQodiwgJmh3X210cnIubXNy X3BhdF9jcik7Ci0KLSAgICAgICAgaHdfbXRyci5tc3JfbXRycl9kZWZfdHlwZSA9IG10cnJfc3Rh dGUtPmRlZl90eXBlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKG10cnJfc3Rh dGUtPmVuYWJsZWQgPDwgMTApOwotICAgICAgICBod19tdHJyLm1zcl9tdHJyX2NhcCA9IG10cnJf c3RhdGUtPm10cnJfY2FwOwotCi0gICAgICAgIGZvciAoIGkgPSAwOyBpIDwgTVRSUl9WQ05UOyBp KysgKQotICAgICAgICB7Ci0gICAgICAgICAgICAvKiBzYXZlIHBoeXNiYXNlICovCi0gICAgICAg ICAgICBod19tdHJyLm1zcl9tdHJyX3ZhcltpKjJdID0KLSAgICAgICAgICAgICAgICAoKHVpbnQ2 NF90KiltdHJyX3N0YXRlLT52YXJfcmFuZ2VzKVtpKjJdOwotICAgICAgICAgICAgLyogc2F2ZSBw aHlzbWFzayAqLwotICAgICAgICAgICAgaHdfbXRyci5tc3JfbXRycl92YXJbaSoyKzFdID0KLSAg ICAgICAgICAgICAgICAoKHVpbnQ2NF90KiltdHJyX3N0YXRlLT52YXJfcmFuZ2VzKVtpKjIrMV07 Ci0gICAgICAgIH0KLQotICAgICAgICBmb3IgKCBpID0gMDsgaSA8IE5VTV9GSVhFRF9NU1I7IGkr KyApCi0gICAgICAgICAgICBod19tdHJyLm1zcl9tdHJyX2ZpeGVkW2ldID0KLSAgICAgICAgICAg ICAgICAoKHVpbnQ2NF90KiltdHJyX3N0YXRlLT5maXhlZF9yYW5nZXMpW2ldOworICAgICAgICBo dm1fc2F2ZV9tdHJyX21zcl9vbmUodiwgJmh3X210cnIpOwogCiAgICAgICAgIGlmICggaHZtX3Nh dmVfZW50cnkoTVRSUiwgdi0+dmNwdV9pZCwgaCwgJmh3X210cnIpICE9IDAgKQogICAgICAgICAg ICAgcmV0dXJuIDE7CmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvaHZtL3ZpcmlkaWFuLmMgYi94 ZW4vYXJjaC94ODYvaHZtL3ZpcmlkaWFuLmMKaW5kZXggZDZhYTg5ZC4uOWE0OWU3NiAxMDA2NDQK LS0tIGEveGVuL2FyY2gveDg2L2h2bS92aXJpZGlhbi5jCisrKyBiL3hlbi9hcmNoL3g4Ni9odm0v dmlyaWRpYW4uYwpAQCAtMTAyOCw2ICsxMDI4LDEyIEBAIHN0YXRpYyBpbnQgdmlyaWRpYW5fbG9h ZF9kb21haW5fY3R4dChzdHJ1Y3QgZG9tYWluICpkLCBodm1fZG9tYWluX2NvbnRleHRfdCAqaCkK IEhWTV9SRUdJU1RFUl9TQVZFX1JFU1RPUkUoVklSSURJQU5fRE9NQUlOLCB2aXJpZGlhbl9zYXZl X2RvbWFpbl9jdHh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICB2aXJpZGlhbl9sb2FkX2Rv bWFpbl9jdHh0LCAxLCBIVk1TUl9QRVJfRE9NKTsKIAordm9pZCB2aXJpZGlhbl9zYXZlX3ZjcHVf Y3R4dF9vbmUoc3RydWN0IHZjcHUgKnYsIHN0cnVjdCBodm1fdmlyaWRpYW5fdmNwdV9jb250ZXh0 ICpjdHh0KQoreworICAgIGN0eHQtPnZwX2Fzc2lzdF9tc3IgPSB2LT5hcmNoLmh2bV92Y3B1LnZp cmlkaWFuLnZwX2Fzc2lzdC5tc3IucmF3OworICAgIGN0eHQtPnZwX2Fzc2lzdF9wZW5kaW5nID0g di0+YXJjaC5odm1fdmNwdS52aXJpZGlhbi52cF9hc3Npc3QucGVuZGluZzsKK30KKwogc3RhdGlj IGludCB2aXJpZGlhbl9zYXZlX3ZjcHVfY3R4dChzdHJ1Y3QgZG9tYWluICpkLCBodm1fZG9tYWlu X2NvbnRleHRfdCAqaCkKIHsKICAgICBzdHJ1Y3QgdmNwdSAqdjsKQEAgLTEwMzYsMTAgKzEwNDIs OSBAQCBzdGF0aWMgaW50IHZpcmlkaWFuX3NhdmVfdmNwdV9jdHh0KHN0cnVjdCBkb21haW4gKmQs IGh2bV9kb21haW5fY29udGV4dF90ICpoKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIGZvcl9l YWNoX3ZjcHUoIGQsIHYgKSB7Ci0gICAgICAgIHN0cnVjdCBodm1fdmlyaWRpYW5fdmNwdV9jb250 ZXh0IGN0eHQgPSB7Ci0gICAgICAgICAgICAudnBfYXNzaXN0X21zciA9IHYtPmFyY2guaHZtX3Zj cHUudmlyaWRpYW4udnBfYXNzaXN0Lm1zci5yYXcsCi0gICAgICAgICAgICAudnBfYXNzaXN0X3Bl bmRpbmcgPSB2LT5hcmNoLmh2bV92Y3B1LnZpcmlkaWFuLnZwX2Fzc2lzdC5wZW5kaW5nLAotICAg ICAgICB9OworICAgICAgICBzdHJ1Y3QgaHZtX3ZpcmlkaWFuX3ZjcHVfY29udGV4dCBjdHh0Owor CisgICAgICAgIHZpcmlkaWFuX3NhdmVfdmNwdV9jdHh0X29uZSh2LCAmY3R4dCk7CiAKICAgICAg ICAgaWYgKCBodm1fc2F2ZV9lbnRyeShWSVJJRElBTl9WQ1BVLCB2LT52Y3B1X2lkLCBoLCAmY3R4 dCkgIT0gMCApCiAgICAgICAgICAgICByZXR1cm4gMTsKLS0gCjIuNy40CgoKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlz dApYZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0 Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZlbA==