From mboxrd@z Thu Jan 1 00:00:00 1970 From: Rex Zhu Subject: [PATCH 3/4] drm/amdgpu: Remove wrapper layer of amdgpu_powerplay Date: Mon, 12 Mar 2018 20:34:09 +0800 Message-ID: <1520858050-7338-3-git-send-email-Rex.Zhu@amd.com> References: <1520858050-7338-1-git-send-email-Rex.Zhu@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1520858050-7338-1-git-send-email-Rex.Zhu-5C7GfCeVMHo@public.gmane.org> List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Cc: Rex Zhu ZGVsZXRlIHN0cnVjdCBwcF9pbnN0YW5jZSwKbWFrZSBzdHJ1Y3QgaHdtZ3IgYXMgdGhlIHNtdSBo dyBjb250ZXh0LgoKQ2hhbmdlLUlkOiBJNDQ0YWFiZTIwNDc3ZmMyZmMxMjg4NTQyZDQ1YmY4ODdk NDViZjBjZApTaWduZWQtb2ZmLWJ5OiBSZXggWmh1IDxSZXguWmh1QGFtZC5jb20+Ci0tLQogZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvTWFrZWZpbGUgICAgICAgICAgICAgfCAgIDMgKy0KIGRy aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdS5oICAgICAgICAgICAgIHwgICAyIC0KIGRy aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9wbS5jICAgICAgICAgIHwgICAyICstCiBk cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcG93ZXJwbGF5LmMgICB8IDI4NSAtLS0t LS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3Bvd2VycGxheS5oICAg fCAgMzMgLS0KIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2NpX2RwbS5jICAgICAgICAgICAg IHwgIDE2ICstCiBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9jaWsuYyAgICAgICAgICAgICAg ICB8ICAxNSArLQogZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvY2lrX2RwbS5oICAgICAgICAg ICAgfCAgIDcgKy0KIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2t2X2RwbS5jICAgICAgICAg ICAgIHwgIDE2ICstCiBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9zaS5jICAgICAgICAgICAg ICAgICB8ICAgOCArLQogZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvc2lfZHBtLmMgICAgICAg ICAgICAgfCAgMTYgKy0KIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3NpX2RwbS5oICAgICAg ICAgICAgIHwgICAzICstCiBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9zb2MxNS5jICAgICAg ICAgICAgICB8ICAgNSArLQogZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvdmkuYyAgICAgICAg ICAgICAgICAgfCAgMTMgKy0KIGRyaXZlcnMvZ3B1L2RybS9hbWQvaW5jbHVkZS9rZ2RfcHBfaW50 ZXJmYWNlLmggIHwgICAzICstCiBkcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9hbWRfcG93 ZXJwbGF5LmMgICB8IDYxMSArKysrKysrKysrLS0tLS0tLS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2Ry bS9hbWQvcG93ZXJwbGF5L2h3bWdyL2h3bWdyLmMgICAgIHwgIDUwICstCiBkcml2ZXJzL2dwdS9k cm0vYW1kL3Bvd2VycGxheS9pbmMvaHdtZ3IuaCAgICAgICB8ICAxNiArLQogZHJpdmVycy9ncHUv ZHJtL2FtZC9wb3dlcnBsYXkvaW5jL3BwX2luc3RhbmNlLmggfCAgMzYgLS0KIDE5IGZpbGVzIGNo YW5nZWQsIDMzNiBpbnNlcnRpb25zKCspLCA4MDQgZGVsZXRpb25zKC0pCiBkZWxldGUgbW9kZSAx MDA2NDQgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3Bvd2VycGxheS5jCiBkZWxl dGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3Bvd2VycGxh eS5oCiBkZWxldGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvaW5j L3BwX2luc3RhbmNlLmgKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9N YWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L01ha2VmaWxlCmluZGV4IDM1M2M5 MzcuLjk0ZGIzNWEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L01ha2Vm aWxlCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L01ha2VmaWxlCkBAIC04Nyw4ICs4 Nyw3IEBAIGFtZGdwdS15ICs9IFwKIAogIyBhZGQgU01DIGJsb2NrCiBhbWRncHUteSArPSBcCi0J YW1kZ3B1X2RwbS5vIFwKLQlhbWRncHVfcG93ZXJwbGF5Lm8KKwlhbWRncHVfZHBtLm8KIAogIyBh ZGQgRENFIGJsb2NrCiBhbWRncHUteSArPSBcCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS9hbWRncHUuaCBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdS5o CmluZGV4IDk2YmNkYjkuLjYyNzczYjYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1L2FtZGdwdS5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdS5o CkBAIC0xMzk4LDkgKzEzOTgsNyBAQCBlbnVtIGFtZF9od19pcF9ibG9ja190eXBlIHsKICNkZWZp bmUgSFdJUF9NQVhfSU5TVEFOQ0UJNgogCiBzdHJ1Y3QgYW1kX3Bvd2VycGxheSB7Ci0Jc3RydWN0 IGNnc19kZXZpY2UgKmNnc19kZXZpY2U7CiAJdm9pZCAqcHBfaGFuZGxlOwotCWNvbnN0IHN0cnVj dCBhbWRfaXBfZnVuY3MgKmlwX2Z1bmNzOwogCWNvbnN0IHN0cnVjdCBhbWRfcG1fZnVuY3MgKnBw X2Z1bmNzOwogfTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1k Z3B1X3BtLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcG0uYwppbmRleCA2 MzJiMTg2Li4zNjE5NzVjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9h bWRncHVfcG0uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcG0uYwpA QCAtMTE1NCw3ICsxMTU0LDcgQEAgc3RhdGljIHVtb2RlX3QgaHdtb25fYXR0cmlidXRlc192aXNp YmxlKHN0cnVjdCBrb2JqZWN0ICprb2JqLAogCXVtb2RlX3QgZWZmZWN0aXZlX21vZGUgPSBhdHRy LT5tb2RlOwogCiAJLyogaGFuZGxlIG5vbi1wb3dlcnBsYXkgbGltaXRhdGlvbnMgKi8KLQlpZiAo IWFkZXYtPnBvd2VycGxheS5jZ3NfZGV2aWNlKSB7CisJaWYgKCFhZGV2LT5wb3dlcnBsYXkucHBf aGFuZGxlKSB7CiAJCS8qIFNraXAgZmFuIGF0dHJpYnV0ZXMgaWYgZmFuIGlzIG5vdCBwcmVzZW50 ICovCiAJCWlmIChhZGV2LT5wbS5ub19mYW4gJiYKIAkJICAgIChhdHRyID09ICZzZW5zb3JfZGV2 X2F0dHJfcHdtMS5kZXZfYXR0ci5hdHRyIHx8CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS9hbWRncHVfcG93ZXJwbGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS9hbWRncHVfcG93ZXJwbGF5LmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgyNWM5 YjkuLjAwMDAwMDAKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3Bvd2Vy cGxheS5jCisrKyAvZGV2L251bGwKQEAgLTEsMjg1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg MjAxNSBBZHZhbmNlZCBNaWNybyBEZXZpY2VzLCBJbmMuCi0gKgotICogUGVybWlzc2lvbiBpcyBo ZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEK LSAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZp bGVzICh0aGUgIlNvZnR3YXJlIiksCi0gKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0 IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCi0gKiB0aGUgcmlnaHRz IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGlj ZW5zZSwKLSAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJt aXQgcGVyc29ucyB0byB3aG9tIHRoZQotICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNv LCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKLSAqCi0gKiBUaGUgYWJvdmUg Y29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNs dWRlZCBpbgotICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29m dHdhcmUuCi0gKgotICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQg V0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKLSAqIElNUExJRUQsIElOQ0xVRElORyBC VVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAotICog RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElO IE5PIEVWRU5UIFNIQUxMCi0gKiBUSEUgQ09QWVJJR0hUIEhPTERFUihTKSBPUiBBVVRIT1IoUykg QkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IKLSAqIE9USEVSIExJQUJJTElUWSwg V0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLAotICog QVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBP UiBUSEUgVVNFIE9SCi0gKiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCi0gKgotICog QXV0aG9yczogQU1ECi0gKgotICovCi0jaW5jbHVkZSAiYXRvbS5oIgotI2luY2x1ZGUgImFtZGdw dS5oIgotI2luY2x1ZGUgImFtZF9zaGFyZWQuaCIKLSNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4K LSNpbmNsdWRlIDxsaW51eC9tb2R1bGVwYXJhbS5oPgotI2luY2x1ZGUgImFtZGdwdV9wbS5oIgot I2luY2x1ZGUgPGRybS9hbWRncHVfZHJtLmg+Ci0jaW5jbHVkZSAiYW1kZ3B1X3Bvd2VycGxheS5o IgotI2luY2x1ZGUgInNpX2RwbS5oIgotI2luY2x1ZGUgImNpa19kcG0uaCIKLSNpbmNsdWRlICJ2 aV9kcG0uaCIKLQotc3RhdGljIGludCBhbWRncHVfcHBfZWFybHlfaW5pdCh2b2lkICpoYW5kbGUp Ci17Ci0Jc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSAoc3RydWN0IGFtZGdwdV9kZXZpY2Ug KiloYW5kbGU7Ci0Jc3RydWN0IGFtZF9wb3dlcnBsYXkgKmFtZF9wcDsKLQlpbnQgcmV0ID0gMDsK LQotCWFtZF9wcCA9ICYoYWRldi0+cG93ZXJwbGF5KTsKLQlhbWRfcHAtPnBwX2hhbmRsZSA9ICh2 b2lkICopYWRldjsKLQotCXN3aXRjaCAoYWRldi0+YXNpY190eXBlKSB7Ci0JY2FzZSBDSElQX1BP TEFSSVMxMToKLQljYXNlIENISVBfUE9MQVJJUzEwOgotCWNhc2UgQ0hJUF9QT0xBUklTMTI6Ci0J Y2FzZSBDSElQX1RPTkdBOgotCWNhc2UgQ0hJUF9GSUpJOgotCWNhc2UgQ0hJUF9UT1BBWjoKLQlj YXNlIENISVBfQ0FSUklaTzoKLQljYXNlIENISVBfU1RPTkVZOgotCWNhc2UgQ0hJUF9WRUdBMTA6 Ci0JY2FzZSBDSElQX1JBVkVOOgotCQlhbWRfcHAtPmNnc19kZXZpY2UgPSBhbWRncHVfY2dzX2Ny ZWF0ZV9kZXZpY2UoYWRldik7Ci0JCWFtZF9wcC0+aXBfZnVuY3MgPSAmcHBfaXBfZnVuY3M7Ci0J CWFtZF9wcC0+cHBfZnVuY3MgPSAmcHBfZHBtX2Z1bmNzOwotCQlicmVhazsKLQkvKiBUaGVzZSBj aGlwcyBkb24ndCBoYXZlIHBvd2VycGxheSBpbXBsZW1lbmF0aW9ucyAqLwotI2lmZGVmIENPTkZJ R19EUk1fQU1ER1BVX1NJCi0JY2FzZSBDSElQX1RBSElUSToKLQljYXNlIENISVBfUElUQ0FJUk46 Ci0JY2FzZSBDSElQX1ZFUkRFOgotCWNhc2UgQ0hJUF9PTEFORDoKLQljYXNlIENISVBfSEFJTkFO OgotCQlhbWRfcHAtPmlwX2Z1bmNzID0gJnNpX2RwbV9pcF9mdW5jczsKLQkJYW1kX3BwLT5wcF9m dW5jcyA9ICZzaV9kcG1fZnVuY3M7Ci0JYnJlYWs7Ci0jZW5kaWYKLSNpZmRlZiBDT05GSUdfRFJN X0FNREdQVV9DSUsKLQljYXNlIENISVBfQk9OQUlSRToKLQljYXNlIENISVBfSEFXQUlJOgotCQlp ZiAoYW1kZ3B1X2RwbSA9PSAtMSkgewotCQkJYW1kX3BwLT5pcF9mdW5jcyA9ICZjaV9kcG1faXBf ZnVuY3M7Ci0JCQlhbWRfcHAtPnBwX2Z1bmNzID0gJmNpX2RwbV9mdW5jczsKLQkJfSBlbHNlIHsK LQkJCWFtZF9wcC0+Y2dzX2RldmljZSA9IGFtZGdwdV9jZ3NfY3JlYXRlX2RldmljZShhZGV2KTsK LQkJCWFtZF9wcC0+aXBfZnVuY3MgPSAmcHBfaXBfZnVuY3M7Ci0JCQlhbWRfcHAtPnBwX2Z1bmNz ID0gJnBwX2RwbV9mdW5jczsKLQkJfQotCQlicmVhazsKLQljYXNlIENISVBfS0FCSU5JOgotCWNh c2UgQ0hJUF9NVUxMSU5TOgotCWNhc2UgQ0hJUF9LQVZFUkk6Ci0JCWFtZF9wcC0+aXBfZnVuY3Mg PSAma3ZfZHBtX2lwX2Z1bmNzOwotCQlhbWRfcHAtPnBwX2Z1bmNzID0gJmt2X2RwbV9mdW5jczsK LQkJYnJlYWs7Ci0jZW5kaWYKLQlkZWZhdWx0OgotCQlyZXQgPSAtRUlOVkFMOwotCQlicmVhazsK LQl9Ci0KLQlpZiAoYWRldi0+cG93ZXJwbGF5LmlwX2Z1bmNzLT5lYXJseV9pbml0KQotCQlyZXQg PSBhZGV2LT5wb3dlcnBsYXkuaXBfZnVuY3MtPmVhcmx5X2luaXQoYWRldik7Ci0KLQlyZXR1cm4g cmV0OwotfQotCi0KLXN0YXRpYyBpbnQgYW1kZ3B1X3BwX2xhdGVfaW5pdCh2b2lkICpoYW5kbGUp Ci17Ci0JaW50IHJldCA9IDA7Ci0Jc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSAoc3RydWN0 IGFtZGdwdV9kZXZpY2UgKiloYW5kbGU7Ci0KLQlpZiAoYWRldi0+cG93ZXJwbGF5LmlwX2Z1bmNz LT5sYXRlX2luaXQpCi0JCXJldCA9IGFkZXYtPnBvd2VycGxheS5pcF9mdW5jcy0+bGF0ZV9pbml0 KAotCQkJCQlhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlKTsKLQotCXJldHVybiByZXQ7Ci19Ci0K LXN0YXRpYyBpbnQgYW1kZ3B1X3BwX3N3X2luaXQodm9pZCAqaGFuZGxlKQotewotCWludCByZXQg PSAwOwotCXN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2ID0gKHN0cnVjdCBhbWRncHVfZGV2aWNl ICopaGFuZGxlOwotCi0JaWYgKGFkZXYtPnBvd2VycGxheS5pcF9mdW5jcy0+c3dfaW5pdCkKLQkJ cmV0ID0gYWRldi0+cG93ZXJwbGF5LmlwX2Z1bmNzLT5zd19pbml0KAotCQkJCQlhZGV2LT5wb3dl cnBsYXkucHBfaGFuZGxlKTsKLQotCXJldHVybiByZXQ7Ci19Ci0KLXN0YXRpYyBpbnQgYW1kZ3B1 X3BwX3N3X2Zpbmkodm9pZCAqaGFuZGxlKQotewotCWludCByZXQgPSAwOwotCXN0cnVjdCBhbWRn cHVfZGV2aWNlICphZGV2ID0gKHN0cnVjdCBhbWRncHVfZGV2aWNlICopaGFuZGxlOwotCi0JaWYg KGFkZXYtPnBvd2VycGxheS5pcF9mdW5jcy0+c3dfZmluaSkKLQkJcmV0ID0gYWRldi0+cG93ZXJw bGF5LmlwX2Z1bmNzLT5zd19maW5pKAotCQkJCQlhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlKTsK LQlpZiAocmV0KQotCQlyZXR1cm4gcmV0OwotCi0JcmV0dXJuIHJldDsKLX0KLQotc3RhdGljIGlu dCBhbWRncHVfcHBfaHdfaW5pdCh2b2lkICpoYW5kbGUpCi17Ci0JaW50IHJldCA9IDA7Ci0Jc3Ry dWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSAoc3RydWN0IGFtZGdwdV9kZXZpY2UgKiloYW5kbGU7 Ci0KLQlpZiAoYWRldi0+ZmlybXdhcmUubG9hZF90eXBlID09IEFNREdQVV9GV19MT0FEX1NNVSkK LQkJYW1kZ3B1X3Vjb2RlX2luaXRfYm8oYWRldik7Ci0KLQlpZiAoYWRldi0+cG93ZXJwbGF5Lmlw X2Z1bmNzLT5od19pbml0KQotCQlyZXQgPSBhZGV2LT5wb3dlcnBsYXkuaXBfZnVuY3MtPmh3X2lu aXQoCi0JCQkJCWFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUpOwotCi0JcmV0dXJuIHJldDsKLX0K LQotc3RhdGljIGludCBhbWRncHVfcHBfaHdfZmluaSh2b2lkICpoYW5kbGUpCi17Ci0JaW50IHJl dCA9IDA7Ci0Jc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSAoc3RydWN0IGFtZGdwdV9kZXZp Y2UgKiloYW5kbGU7Ci0KLQlpZiAoYWRldi0+cG93ZXJwbGF5LmlwX2Z1bmNzLT5od19maW5pKQot CQlyZXQgPSBhZGV2LT5wb3dlcnBsYXkuaXBfZnVuY3MtPmh3X2ZpbmkoCi0JCQkJCWFkZXYtPnBv d2VycGxheS5wcF9oYW5kbGUpOwotCi0JcmV0dXJuIHJldDsKLX0KLQotc3RhdGljIHZvaWQgYW1k Z3B1X3BwX2xhdGVfZmluaSh2b2lkICpoYW5kbGUpCi17Ci0Jc3RydWN0IGFtZGdwdV9kZXZpY2Ug KmFkZXYgPSAoc3RydWN0IGFtZGdwdV9kZXZpY2UgKiloYW5kbGU7Ci0KLQlpZiAoYWRldi0+cG93 ZXJwbGF5LmlwX2Z1bmNzLT5sYXRlX2ZpbmkpCi0JCWFkZXYtPnBvd2VycGxheS5pcF9mdW5jcy0+ bGF0ZV9maW5pKAotCQkJICBhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlKTsKLQotCWlmIChhZGV2 LT5wb3dlcnBsYXkuY2dzX2RldmljZSkKLQkJYW1kZ3B1X2Nnc19kZXN0cm95X2RldmljZShhZGV2 LT5wb3dlcnBsYXkuY2dzX2RldmljZSk7Ci19Ci0KLXN0YXRpYyBpbnQgYW1kZ3B1X3BwX3N1c3Bl bmQodm9pZCAqaGFuZGxlKQotewotCWludCByZXQgPSAwOwotCXN0cnVjdCBhbWRncHVfZGV2aWNl ICphZGV2ID0gKHN0cnVjdCBhbWRncHVfZGV2aWNlICopaGFuZGxlOwotCi0JaWYgKGFkZXYtPnBv d2VycGxheS5pcF9mdW5jcy0+c3VzcGVuZCkKLQkJcmV0ID0gYWRldi0+cG93ZXJwbGF5LmlwX2Z1 bmNzLT5zdXNwZW5kKAotCQkJCQkgYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSk7Ci0JcmV0dXJu IHJldDsKLX0KLQotc3RhdGljIGludCBhbWRncHVfcHBfcmVzdW1lKHZvaWQgKmhhbmRsZSkKLXsK LQlpbnQgcmV0ID0gMDsKLQlzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiA9IChzdHJ1Y3QgYW1k Z3B1X2RldmljZSAqKWhhbmRsZTsKLQotCWlmIChhZGV2LT5wb3dlcnBsYXkuaXBfZnVuY3MtPnJl c3VtZSkKLQkJcmV0ID0gYWRldi0+cG93ZXJwbGF5LmlwX2Z1bmNzLT5yZXN1bWUoCi0JCQkJCWFk ZXYtPnBvd2VycGxheS5wcF9oYW5kbGUpOwotCXJldHVybiByZXQ7Ci19Ci0KLXN0YXRpYyBpbnQg YW1kZ3B1X3BwX3NldF9jbG9ja2dhdGluZ19zdGF0ZSh2b2lkICpoYW5kbGUsCi0JCQkJCWVudW0g YW1kX2Nsb2NrZ2F0aW5nX3N0YXRlIHN0YXRlKQotewotCWludCByZXQgPSAwOwotCXN0cnVjdCBh bWRncHVfZGV2aWNlICphZGV2ID0gKHN0cnVjdCBhbWRncHVfZGV2aWNlICopaGFuZGxlOwotCi0J aWYgKGFkZXYtPnBvd2VycGxheS5pcF9mdW5jcy0+c2V0X2Nsb2NrZ2F0aW5nX3N0YXRlKQotCQly ZXQgPSBhZGV2LT5wb3dlcnBsYXkuaXBfZnVuY3MtPnNldF9jbG9ja2dhdGluZ19zdGF0ZSgKLQkJ CQlhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLCBzdGF0ZSk7Ci0JcmV0dXJuIHJldDsKLX0KLQot c3RhdGljIGludCBhbWRncHVfcHBfc2V0X3Bvd2VyZ2F0aW5nX3N0YXRlKHZvaWQgKmhhbmRsZSwK LQkJCQkJZW51bSBhbWRfcG93ZXJnYXRpbmdfc3RhdGUgc3RhdGUpCi17Ci0JaW50IHJldCA9IDA7 Ci0Jc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSAoc3RydWN0IGFtZGdwdV9kZXZpY2UgKilo YW5kbGU7Ci0KLQlpZiAoYWRldi0+cG93ZXJwbGF5LmlwX2Z1bmNzLT5zZXRfcG93ZXJnYXRpbmdf c3RhdGUpCi0JCXJldCA9IGFkZXYtPnBvd2VycGxheS5pcF9mdW5jcy0+c2V0X3Bvd2VyZ2F0aW5n X3N0YXRlKAotCQkJCSBhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLCBzdGF0ZSk7Ci0JcmV0dXJu IHJldDsKLX0KLQotCi1zdGF0aWMgYm9vbCBhbWRncHVfcHBfaXNfaWRsZSh2b2lkICpoYW5kbGUp Ci17Ci0JYm9vbCByZXQgPSB0cnVlOwotCXN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2ID0gKHN0 cnVjdCBhbWRncHVfZGV2aWNlICopaGFuZGxlOwotCi0JaWYgKGFkZXYtPnBvd2VycGxheS5pcF9m dW5jcy0+aXNfaWRsZSkKLQkJcmV0ID0gYWRldi0+cG93ZXJwbGF5LmlwX2Z1bmNzLT5pc19pZGxl KAotCQkJCQlhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlKTsKLQlyZXR1cm4gcmV0OwotfQotCi1z dGF0aWMgaW50IGFtZGdwdV9wcF93YWl0X2Zvcl9pZGxlKHZvaWQgKmhhbmRsZSkKLXsKLQlpbnQg cmV0ID0gMDsKLQlzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiA9IChzdHJ1Y3QgYW1kZ3B1X2Rl dmljZSAqKWhhbmRsZTsKLQotCWlmIChhZGV2LT5wb3dlcnBsYXkuaXBfZnVuY3MtPndhaXRfZm9y X2lkbGUpCi0JCXJldCA9IGFkZXYtPnBvd2VycGxheS5pcF9mdW5jcy0+d2FpdF9mb3JfaWRsZSgK LQkJCQkJYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSk7Ci0JcmV0dXJuIHJldDsKLX0KLQotc3Rh dGljIGludCBhbWRncHVfcHBfc29mdF9yZXNldCh2b2lkICpoYW5kbGUpCi17Ci0JaW50IHJldCA9 IDA7Ci0Jc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSAoc3RydWN0IGFtZGdwdV9kZXZpY2Ug KiloYW5kbGU7Ci0KLQlpZiAoYWRldi0+cG93ZXJwbGF5LmlwX2Z1bmNzLT5zb2Z0X3Jlc2V0KQot CQlyZXQgPSBhZGV2LT5wb3dlcnBsYXkuaXBfZnVuY3MtPnNvZnRfcmVzZXQoCi0JCQkJCWFkZXYt PnBvd2VycGxheS5wcF9oYW5kbGUpOwotCXJldHVybiByZXQ7Ci19Ci0KLXN0YXRpYyBjb25zdCBz dHJ1Y3QgYW1kX2lwX2Z1bmNzIGFtZGdwdV9wcF9pcF9mdW5jcyA9IHsKLQkubmFtZSA9ICJhbWRn cHVfcG93ZXJwbGF5IiwKLQkuZWFybHlfaW5pdCA9IGFtZGdwdV9wcF9lYXJseV9pbml0LAotCS5s YXRlX2luaXQgPSBhbWRncHVfcHBfbGF0ZV9pbml0LAotCS5zd19pbml0ID0gYW1kZ3B1X3BwX3N3 X2luaXQsCi0JLnN3X2ZpbmkgPSBhbWRncHVfcHBfc3dfZmluaSwKLQkuaHdfaW5pdCA9IGFtZGdw dV9wcF9od19pbml0LAotCS5od19maW5pID0gYW1kZ3B1X3BwX2h3X2ZpbmksCi0JLmxhdGVfZmlu aSA9IGFtZGdwdV9wcF9sYXRlX2ZpbmksCi0JLnN1c3BlbmQgPSBhbWRncHVfcHBfc3VzcGVuZCwK LQkucmVzdW1lID0gYW1kZ3B1X3BwX3Jlc3VtZSwKLQkuaXNfaWRsZSA9IGFtZGdwdV9wcF9pc19p ZGxlLAotCS53YWl0X2Zvcl9pZGxlID0gYW1kZ3B1X3BwX3dhaXRfZm9yX2lkbGUsCi0JLnNvZnRf cmVzZXQgPSBhbWRncHVfcHBfc29mdF9yZXNldCwKLQkuc2V0X2Nsb2NrZ2F0aW5nX3N0YXRlID0g YW1kZ3B1X3BwX3NldF9jbG9ja2dhdGluZ19zdGF0ZSwKLQkuc2V0X3Bvd2VyZ2F0aW5nX3N0YXRl ID0gYW1kZ3B1X3BwX3NldF9wb3dlcmdhdGluZ19zdGF0ZSwKLX07Ci0KLWNvbnN0IHN0cnVjdCBh bWRncHVfaXBfYmxvY2tfdmVyc2lvbiBhbWRncHVfcHBfaXBfYmxvY2sgPQotewotCS50eXBlID0g QU1EX0lQX0JMT0NLX1RZUEVfU01DLAotCS5tYWpvciA9IDEsCi0JLm1pbm9yID0gMCwKLQkucmV2 ID0gMCwKLQkuZnVuY3MgPSAmYW1kZ3B1X3BwX2lwX2Z1bmNzLAotfTsKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9wb3dlcnBsYXkuaCBiL2RyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9wb3dlcnBsYXkuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggYzBjNGJmZC4uMDAwMDAwMAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS9hbWRncHVfcG93ZXJwbGF5LmgKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi0vKgot ICogIENvcHlyaWdodCAyMDE1IEFkdmFuY2VkIE1pY3JvIERldmljZXMsIEluYy4KLSAqCi0gKiBQ ZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNv biBvYnRhaW5pbmcgYQotICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRv Y3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKLSAqIHRvIGRlYWwgaW4gdGhlIFNv ZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24K LSAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0 cmlidXRlLCBzdWJsaWNlbnNlLAotICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2Fy ZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCi0gKiBTb2Z0d2FyZSBpcyBmdXJu aXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgotICoK LSAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNl IHNoYWxsIGJlIGluY2x1ZGVkIGluCi0gKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRp b25zIG9mIHRoZSBTb2Z0d2FyZS4KLSAqCi0gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFT IElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgotICogSU1QTElF RCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFO VEFCSUxJVFksCi0gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5G UklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKLSAqIFRIRSBDT1BZUklHSFQgSE9MREVSKFMp IE9SIEFVVEhPUihTKSBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUgotICogT1RI RVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBP VEhFUldJU0UsCi0gKiBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEgg VEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IKLSAqIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZU V0FSRS4KLSAqCi0gKiBBdXRob3JzOiBBTUQKLSAqCi0gKi8KLQotI2lmbmRlZiBfX0FNREdQVV9Q T1dFUlBMQVlfSF9fCi0jZGVmaW5lIF9fQU1ER1BVX1BPV0VSUExBWV9IX18KLQotI2luY2x1ZGUg ImFtZF9zaGFyZWQuaCIKLQotZXh0ZXJuIGNvbnN0IHN0cnVjdCBhbWRncHVfaXBfYmxvY2tfdmVy c2lvbiBhbWRncHVfcHBfaXBfYmxvY2s7Ci0KLSNlbmRpZiAvKiBfX0FNREdQVV9QT1dFUlBMQVlf SF9fICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9jaV9kcG0uYyBi L2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2NpX2RwbS5jCmluZGV4IGRkYjgxNGYuLmZhMTUx ZjAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2NpX2RwbS5jCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2NpX2RwbS5jCkBAIC02NSw2ICs2NSw4IEBACiAj ZGVmaW5lIFZPTFRBR0VfVklEX09GRlNFVF9TQ0FMRTEgICAgNjI1CiAjZGVmaW5lIFZPTFRBR0Vf VklEX09GRlNFVF9TQ0FMRTIgICAgMTAwCiAKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYW1kX3BtX2Z1 bmNzIGNpX2RwbV9mdW5jczsKKwogc3RhdGljIGNvbnN0IHN0cnVjdCBjaV9wdF9kZWZhdWx0cyBk ZWZhdWx0c19oYXdhaWlfeHQgPQogewogCTEsIDB4RiwgMHhGRCwgMHgxOSwgNSwgMHgxNCwgMCwg MHhCMDAwMCwKQEAgLTYyNDEsNiArNjI0Myw3IEBAIHN0YXRpYyBpbnQgY2lfZHBtX2Vhcmx5X2lu aXQodm9pZCAqaGFuZGxlKQogewogCXN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2ID0gKHN0cnVj dCBhbWRncHVfZGV2aWNlICopaGFuZGxlOwogCisJYWRldi0+cG93ZXJwbGF5LnBwX2Z1bmNzID0g JmNpX2RwbV9mdW5jczsKIAljaV9kcG1fc2V0X2lycV9mdW5jcyhhZGV2KTsKIAogCXJldHVybiAw OwpAQCAtNjc2MCw3ICs2NzYzLDcgQEAgc3RhdGljIGludCBjaV9kcG1fcmVhZF9zZW5zb3Iodm9p ZCAqaGFuZGxlLCBpbnQgaWR4LAogCX0KIH0KIAotY29uc3Qgc3RydWN0IGFtZF9pcF9mdW5jcyBj aV9kcG1faXBfZnVuY3MgPSB7CitzdGF0aWMgY29uc3Qgc3RydWN0IGFtZF9pcF9mdW5jcyBjaV9k cG1faXBfZnVuY3MgPSB7CiAJLm5hbWUgPSAiY2lfZHBtIiwKIAkuZWFybHlfaW5pdCA9IGNpX2Rw bV9lYXJseV9pbml0LAogCS5sYXRlX2luaXQgPSBjaV9kcG1fbGF0ZV9pbml0LApAQCAtNjc3Nyw3 ICs2NzgwLDE2IEBAIHN0YXRpYyBpbnQgY2lfZHBtX3JlYWRfc2Vuc29yKHZvaWQgKmhhbmRsZSwg aW50IGlkeCwKIAkuc2V0X3Bvd2VyZ2F0aW5nX3N0YXRlID0gY2lfZHBtX3NldF9wb3dlcmdhdGlu Z19zdGF0ZSwKIH07CiAKLWNvbnN0IHN0cnVjdCBhbWRfcG1fZnVuY3MgY2lfZHBtX2Z1bmNzID0g eworY29uc3Qgc3RydWN0IGFtZGdwdV9pcF9ibG9ja192ZXJzaW9uIGNpX3NtdV9pcF9ibG9jayA9 Cit7CisJLnR5cGUgPSBBTURfSVBfQkxPQ0tfVFlQRV9TTUMsCisJLm1ham9yID0gMSwKKwkubWlu b3IgPSAwLAorCS5yZXYgPSAwLAorCS5mdW5jcyA9ICZjaV9kcG1faXBfZnVuY3MsCit9OworCitz dGF0aWMgY29uc3Qgc3RydWN0IGFtZF9wbV9mdW5jcyBjaV9kcG1fZnVuY3MgPSB7CiAJLnByZV9z ZXRfcG93ZXJfc3RhdGUgPSAmY2lfZHBtX3ByZV9zZXRfcG93ZXJfc3RhdGUsCiAJLnNldF9wb3dl cl9zdGF0ZSA9ICZjaV9kcG1fc2V0X3Bvd2VyX3N0YXRlLAogCS5wb3N0X3NldF9wb3dlcl9zdGF0 ZSA9ICZjaV9kcG1fcG9zdF9zZXRfcG93ZXJfc3RhdGUsCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS9jaWsuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2Npay5j CmluZGV4IDQzMjQxODQuLmIyMjkwMjggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1L2Npay5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2Npay5jCkBAIC02 Nyw3ICs2Nyw2IEBACiAKICNpbmNsdWRlICJhbWRncHVfZG0uaCIKICNpbmNsdWRlICJhbWRncHVf YW1ka2ZkLmgiCi0jaW5jbHVkZSAiYW1kZ3B1X3Bvd2VycGxheS5oIgogI2luY2x1ZGUgImRjZV92 aXJ0dWFsLmgiCiAKIC8qCkBAIC0yMDAwLDcgKzE5OTksMTAgQEAgaW50IGNpa19zZXRfaXBfYmxv Y2tzKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQogCQlhbWRncHVfZGV2aWNlX2lwX2Jsb2Nr X2FkZChhZGV2LCAmY2lrX2NvbW1vbl9pcF9ibG9jayk7CiAJCWFtZGdwdV9kZXZpY2VfaXBfYmxv Y2tfYWRkKGFkZXYsICZnbWNfdjdfMF9pcF9ibG9jayk7CiAJCWFtZGdwdV9kZXZpY2VfaXBfYmxv Y2tfYWRkKGFkZXYsICZjaWtfaWhfaXBfYmxvY2spOwotCQlhbWRncHVfZGV2aWNlX2lwX2Jsb2Nr X2FkZChhZGV2LCAmYW1kZ3B1X3BwX2lwX2Jsb2NrKTsKKwkJaWYgKGFtZGdwdV9kcG0gPT0gLTEp CisJCQlhbWRncHVfZGV2aWNlX2lwX2Jsb2NrX2FkZChhZGV2LCAmY2lfc211X2lwX2Jsb2NrKTsK KwkJZWxzZQorCQkJYW1kZ3B1X2RldmljZV9pcF9ibG9ja19hZGQoYWRldiwgJnBwX3NtdV9pcF9i bG9jayk7CiAJCWlmIChhZGV2LT5lbmFibGVfdmlydHVhbF9kaXNwbGF5KQogCQkJYW1kZ3B1X2Rl dmljZV9pcF9ibG9ja19hZGQoYWRldiwgJmRjZV92aXJ0dWFsX2lwX2Jsb2NrKTsKICNpZiBkZWZp bmVkKENPTkZJR19EUk1fQU1EX0RDKQpAQCAtMjAxOCw3ICsyMDIwLDEwIEBAIGludCBjaWtfc2V0 X2lwX2Jsb2NrcyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKIAkJYW1kZ3B1X2RldmljZV9p cF9ibG9ja19hZGQoYWRldiwgJmNpa19jb21tb25faXBfYmxvY2spOwogCQlhbWRncHVfZGV2aWNl X2lwX2Jsb2NrX2FkZChhZGV2LCAmZ21jX3Y3XzBfaXBfYmxvY2spOwogCQlhbWRncHVfZGV2aWNl X2lwX2Jsb2NrX2FkZChhZGV2LCAmY2lrX2loX2lwX2Jsb2NrKTsKLQkJYW1kZ3B1X2RldmljZV9p cF9ibG9ja19hZGQoYWRldiwgJmFtZGdwdV9wcF9pcF9ibG9jayk7CisJCWlmIChhbWRncHVfZHBt ID09IC0xKQorCQkJYW1kZ3B1X2RldmljZV9pcF9ibG9ja19hZGQoYWRldiwgJmNpX3NtdV9pcF9i bG9jayk7CisJCWVsc2UKKwkJCWFtZGdwdV9kZXZpY2VfaXBfYmxvY2tfYWRkKGFkZXYsICZwcF9z bXVfaXBfYmxvY2spOwogCQlpZiAoYWRldi0+ZW5hYmxlX3ZpcnR1YWxfZGlzcGxheSkKIAkJCWFt ZGdwdV9kZXZpY2VfaXBfYmxvY2tfYWRkKGFkZXYsICZkY2VfdmlydHVhbF9pcF9ibG9jayk7CiAj aWYgZGVmaW5lZChDT05GSUdfRFJNX0FNRF9EQykKQEAgLTIwMzYsNyArMjA0MSw3IEBAIGludCBj aWtfc2V0X2lwX2Jsb2NrcyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKIAkJYW1kZ3B1X2Rl dmljZV9pcF9ibG9ja19hZGQoYWRldiwgJmNpa19jb21tb25faXBfYmxvY2spOwogCQlhbWRncHVf ZGV2aWNlX2lwX2Jsb2NrX2FkZChhZGV2LCAmZ21jX3Y3XzBfaXBfYmxvY2spOwogCQlhbWRncHVf ZGV2aWNlX2lwX2Jsb2NrX2FkZChhZGV2LCAmY2lrX2loX2lwX2Jsb2NrKTsKLQkJYW1kZ3B1X2Rl dmljZV9pcF9ibG9ja19hZGQoYWRldiwgJmFtZGdwdV9wcF9pcF9ibG9jayk7CisJCWFtZGdwdV9k ZXZpY2VfaXBfYmxvY2tfYWRkKGFkZXYsICZrdl9zbXVfaXBfYmxvY2spOwogCQlpZiAoYWRldi0+ ZW5hYmxlX3ZpcnR1YWxfZGlzcGxheSkKIAkJCWFtZGdwdV9kZXZpY2VfaXBfYmxvY2tfYWRkKGFk ZXYsICZkY2VfdmlydHVhbF9pcF9ibG9jayk7CiAjaWYgZGVmaW5lZChDT05GSUdfRFJNX0FNRF9E QykKQEAgLTIwNTUsNyArMjA2MCw3IEBAIGludCBjaWtfc2V0X2lwX2Jsb2NrcyhzdHJ1Y3QgYW1k Z3B1X2RldmljZSAqYWRldikKIAkJYW1kZ3B1X2RldmljZV9pcF9ibG9ja19hZGQoYWRldiwgJmNp a19jb21tb25faXBfYmxvY2spOwogCQlhbWRncHVfZGV2aWNlX2lwX2Jsb2NrX2FkZChhZGV2LCAm Z21jX3Y3XzBfaXBfYmxvY2spOwogCQlhbWRncHVfZGV2aWNlX2lwX2Jsb2NrX2FkZChhZGV2LCAm Y2lrX2loX2lwX2Jsb2NrKTsKLQkJYW1kZ3B1X2RldmljZV9pcF9ibG9ja19hZGQoYWRldiwgJmFt ZGdwdV9wcF9pcF9ibG9jayk7CisJCWFtZGdwdV9kZXZpY2VfaXBfYmxvY2tfYWRkKGFkZXYsICZr dl9zbXVfaXBfYmxvY2spOwogCQlpZiAoYWRldi0+ZW5hYmxlX3ZpcnR1YWxfZGlzcGxheSkKIAkJ CWFtZGdwdV9kZXZpY2VfaXBfYmxvY2tfYWRkKGFkZXYsICZkY2VfdmlydHVhbF9pcF9ibG9jayk7 CiAjaWYgZGVmaW5lZChDT05GSUdfRFJNX0FNRF9EQykKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1L2Npa19kcG0uaCBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2Np a19kcG0uaAppbmRleCBjN2I0MzQ5Li4yYTA4NjYxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS9jaWtfZHBtLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv Y2lrX2RwbS5oCkBAIC0yNCw4ICsyNCw3IEBACiAjaWZuZGVmIF9fQ0lLX0RQTV9IX18KICNkZWZp bmUgX19DSUtfRFBNX0hfXwogCi1leHRlcm4gY29uc3Qgc3RydWN0IGFtZF9pcF9mdW5jcyBjaV9k cG1faXBfZnVuY3M7Ci1leHRlcm4gY29uc3Qgc3RydWN0IGFtZF9pcF9mdW5jcyBrdl9kcG1faXBf ZnVuY3M7Ci1leHRlcm4gY29uc3Qgc3RydWN0IGFtZF9wbV9mdW5jcyBjaV9kcG1fZnVuY3M7Ci1l eHRlcm4gY29uc3Qgc3RydWN0IGFtZF9wbV9mdW5jcyBrdl9kcG1fZnVuY3M7CitleHRlcm4gY29u c3Qgc3RydWN0IGFtZGdwdV9pcF9ibG9ja192ZXJzaW9uIGNpX3NtdV9pcF9ibG9jazsKK2V4dGVy biBjb25zdCBzdHJ1Y3QgYW1kZ3B1X2lwX2Jsb2NrX3ZlcnNpb24ga3Zfc211X2lwX2Jsb2NrOwor CiAjZW5kaWYKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2t2X2RwbS5j IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUva3ZfZHBtLmMKaW5kZXggODc2NjY4MS4uODFi YWJlMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUva3ZfZHBtLmMKKysr IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUva3ZfZHBtLmMKQEAgLTQyLDYgKzQyLDggQEAK ICNkZWZpbmUgS1ZfTUlOSU1VTV9FTkdJTkVfQ0xPQ0sgICAgICAgICA4MDAKICNkZWZpbmUgU01D X1JBTV9FTkQgICAgICAgICAgICAgICAgICAgICAweDQwMDAwCiAKK3N0YXRpYyBjb25zdCBzdHJ1 Y3QgYW1kX3BtX2Z1bmNzIGt2X2RwbV9mdW5jczsKKwogc3RhdGljIHZvaWQga3ZfZHBtX3NldF9p cnFfZnVuY3Moc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpOwogc3RhdGljIGludCBrdl9lbmFi bGVfbmJfZHBtKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAogCQkJICAgIGJvb2wgZW5hYmxl KTsKQEAgLTI5NjAsNiArMjk2Miw3IEBAIHN0YXRpYyBpbnQga3ZfZHBtX2Vhcmx5X2luaXQodm9p ZCAqaGFuZGxlKQogewogCXN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2ID0gKHN0cnVjdCBhbWRn cHVfZGV2aWNlICopaGFuZGxlOwogCisJYWRldi0+cG93ZXJwbGF5LnBwX2Z1bmNzID0gJmt2X2Rw bV9mdW5jczsKIAlrdl9kcG1fc2V0X2lycV9mdW5jcyhhZGV2KTsKIAogCXJldHVybiAwOwpAQCAt MzMwMSw3ICszMzA0LDcgQEAgc3RhdGljIGludCBrdl9kcG1fcmVhZF9zZW5zb3Iodm9pZCAqaGFu ZGxlLCBpbnQgaWR4LAogCX0KIH0KIAotY29uc3Qgc3RydWN0IGFtZF9pcF9mdW5jcyBrdl9kcG1f aXBfZnVuY3MgPSB7CitzdGF0aWMgY29uc3Qgc3RydWN0IGFtZF9pcF9mdW5jcyBrdl9kcG1faXBf ZnVuY3MgPSB7CiAJLm5hbWUgPSAia3ZfZHBtIiwKIAkuZWFybHlfaW5pdCA9IGt2X2RwbV9lYXJs eV9pbml0LAogCS5sYXRlX2luaXQgPSBrdl9kcG1fbGF0ZV9pbml0LApAQCAtMzMxOCw3ICszMzIx LDE2IEBAIHN0YXRpYyBpbnQga3ZfZHBtX3JlYWRfc2Vuc29yKHZvaWQgKmhhbmRsZSwgaW50IGlk eCwKIAkuc2V0X3Bvd2VyZ2F0aW5nX3N0YXRlID0ga3ZfZHBtX3NldF9wb3dlcmdhdGluZ19zdGF0 ZSwKIH07CiAKLWNvbnN0IHN0cnVjdCBhbWRfcG1fZnVuY3Mga3ZfZHBtX2Z1bmNzID0geworY29u c3Qgc3RydWN0IGFtZGdwdV9pcF9ibG9ja192ZXJzaW9uIGt2X3NtdV9pcF9ibG9jayA9Cit7CisJ LnR5cGUgPSBBTURfSVBfQkxPQ0tfVFlQRV9TTUMsCisJLm1ham9yID0gMSwKKwkubWlub3IgPSAw LAorCS5yZXYgPSAwLAorCS5mdW5jcyA9ICZrdl9kcG1faXBfZnVuY3MsCit9OworCitzdGF0aWMg Y29uc3Qgc3RydWN0IGFtZF9wbV9mdW5jcyBrdl9kcG1fZnVuY3MgPSB7CiAJLnByZV9zZXRfcG93 ZXJfc3RhdGUgPSAma3ZfZHBtX3ByZV9zZXRfcG93ZXJfc3RhdGUsCiAJLnNldF9wb3dlcl9zdGF0 ZSA9ICZrdl9kcG1fc2V0X3Bvd2VyX3N0YXRlLAogCS5wb3N0X3NldF9wb3dlcl9zdGF0ZSA9ICZr dl9kcG1fcG9zdF9zZXRfcG93ZXJfc3RhdGUsCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS9zaS5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvc2kuYwppbmRleCA2 ZTYxYjU2Li5iMTU0NjY3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9z aS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3NpLmMKQEAgLTMyLDcgKzMyLDcg QEAKICNpbmNsdWRlICJhbWRncHVfdmNlLmgiCiAjaW5jbHVkZSAiYXRvbS5oIgogI2luY2x1ZGUg ImFtZF9wY2llLmgiCi0jaW5jbHVkZSAiYW1kZ3B1X3Bvd2VycGxheS5oIgorI2luY2x1ZGUgInNp X2RwbS5oIgogI2luY2x1ZGUgInNpZC5oIgogI2luY2x1ZGUgInNpX2loLmgiCiAjaW5jbHVkZSAi Z2Z4X3Y2XzAuaCIKQEAgLTE5ODMsNyArMTk4Myw3IEBAIGludCBzaV9zZXRfaXBfYmxvY2tzKHN0 cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQogCQlhbWRncHVfZGV2aWNlX2lwX2Jsb2NrX2FkZChh ZGV2LCAmc2lfY29tbW9uX2lwX2Jsb2NrKTsKIAkJYW1kZ3B1X2RldmljZV9pcF9ibG9ja19hZGQo YWRldiwgJmdtY192Nl8wX2lwX2Jsb2NrKTsKIAkJYW1kZ3B1X2RldmljZV9pcF9ibG9ja19hZGQo YWRldiwgJnNpX2loX2lwX2Jsb2NrKTsKLQkJYW1kZ3B1X2RldmljZV9pcF9ibG9ja19hZGQoYWRl diwgJmFtZGdwdV9wcF9pcF9ibG9jayk7CisJCWFtZGdwdV9kZXZpY2VfaXBfYmxvY2tfYWRkKGFk ZXYsICZzaV9zbXVfaXBfYmxvY2spOwogCQlpZiAoYWRldi0+ZW5hYmxlX3ZpcnR1YWxfZGlzcGxh eSkKIAkJCWFtZGdwdV9kZXZpY2VfaXBfYmxvY2tfYWRkKGFkZXYsICZkY2VfdmlydHVhbF9pcF9i bG9jayk7CiAJCWVsc2UKQEAgLTE5OTcsNyArMTk5Nyw3IEBAIGludCBzaV9zZXRfaXBfYmxvY2tz KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQogCQlhbWRncHVfZGV2aWNlX2lwX2Jsb2NrX2Fk ZChhZGV2LCAmc2lfY29tbW9uX2lwX2Jsb2NrKTsKIAkJYW1kZ3B1X2RldmljZV9pcF9ibG9ja19h ZGQoYWRldiwgJmdtY192Nl8wX2lwX2Jsb2NrKTsKIAkJYW1kZ3B1X2RldmljZV9pcF9ibG9ja19h ZGQoYWRldiwgJnNpX2loX2lwX2Jsb2NrKTsKLQkJYW1kZ3B1X2RldmljZV9pcF9ibG9ja19hZGQo YWRldiwgJmFtZGdwdV9wcF9pcF9ibG9jayk7CisJCWFtZGdwdV9kZXZpY2VfaXBfYmxvY2tfYWRk KGFkZXYsICZzaV9zbXVfaXBfYmxvY2spOwogCQlpZiAoYWRldi0+ZW5hYmxlX3ZpcnR1YWxfZGlz cGxheSkKIAkJCWFtZGdwdV9kZXZpY2VfaXBfYmxvY2tfYWRkKGFkZXYsICZkY2VfdmlydHVhbF9p cF9ibG9jayk7CiAJCWVsc2UKQEAgLTIwMTEsNyArMjAxMSw3IEBAIGludCBzaV9zZXRfaXBfYmxv Y2tzKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQogCQlhbWRncHVfZGV2aWNlX2lwX2Jsb2Nr X2FkZChhZGV2LCAmc2lfY29tbW9uX2lwX2Jsb2NrKTsKIAkJYW1kZ3B1X2RldmljZV9pcF9ibG9j a19hZGQoYWRldiwgJmdtY192Nl8wX2lwX2Jsb2NrKTsKIAkJYW1kZ3B1X2RldmljZV9pcF9ibG9j a19hZGQoYWRldiwgJnNpX2loX2lwX2Jsb2NrKTsKLQkJYW1kZ3B1X2RldmljZV9pcF9ibG9ja19h ZGQoYWRldiwgJmFtZGdwdV9wcF9pcF9ibG9jayk7CisJCWFtZGdwdV9kZXZpY2VfaXBfYmxvY2tf YWRkKGFkZXYsICZzaV9zbXVfaXBfYmxvY2spOwogCQlpZiAoYWRldi0+ZW5hYmxlX3ZpcnR1YWxf ZGlzcGxheSkKIAkJCWFtZGdwdV9kZXZpY2VfaXBfYmxvY2tfYWRkKGFkZXYsICZkY2VfdmlydHVh bF9pcF9ibG9jayk7CiAJCWFtZGdwdV9kZXZpY2VfaXBfYmxvY2tfYWRkKGFkZXYsICZnZnhfdjZf MF9pcF9ibG9jayk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9zaV9k cG0uYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3NpX2RwbS5jCmluZGV4IDgxMzdjMDIu LjZkNjhiY2QgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3NpX2RwbS5j CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3NpX2RwbS5jCkBAIC02Nyw2ICs2Nyw4 IEBACiBNT0RVTEVfRklSTVdBUkUoInJhZGVvbi9oYWluYW5fa19zbWMuYmluIik7CiBNT0RVTEVf RklSTVdBUkUoInJhZGVvbi9iYW5rc19rXzJfc21jLmJpbiIpOwogCitzdGF0aWMgY29uc3Qgc3Ry dWN0IGFtZF9wbV9mdW5jcyBzaV9kcG1fZnVuY3M7CisKIHVuaW9uIHBvd2VyX2luZm8gewogCXN0 cnVjdCBfQVRPTV9QT1dFUlBMQVlfSU5GTyBpbmZvOwogCXN0cnVjdCBfQVRPTV9QT1dFUlBMQVlf SU5GT19WMiBpbmZvXzI7CkBAIC03OTE0LDYgKzc5MTYsNyBAQCBzdGF0aWMgaW50IHNpX2RwbV9l YXJseV9pbml0KHZvaWQgKmhhbmRsZSkKIAogCXN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2ID0g KHN0cnVjdCBhbWRncHVfZGV2aWNlICopaGFuZGxlOwogCisJYWRldi0+cG93ZXJwbGF5LnBwX2Z1 bmNzID0gJnNpX2RwbV9mdW5jczsKIAlzaV9kcG1fc2V0X2lycV9mdW5jcyhhZGV2KTsKIAlyZXR1 cm4gMDsKIH0KQEAgLTgwMTQsNyArODAxNyw3IEBAIHN0YXRpYyBpbnQgc2lfZHBtX3JlYWRfc2Vu c29yKHZvaWQgKmhhbmRsZSwgaW50IGlkeCwKIAl9CiB9CiAKLWNvbnN0IHN0cnVjdCBhbWRfaXBf ZnVuY3Mgc2lfZHBtX2lwX2Z1bmNzID0geworc3RhdGljIGNvbnN0IHN0cnVjdCBhbWRfaXBfZnVu Y3Mgc2lfZHBtX2lwX2Z1bmNzID0gewogCS5uYW1lID0gInNpX2RwbSIsCiAJLmVhcmx5X2luaXQg PSBzaV9kcG1fZWFybHlfaW5pdCwKIAkubGF0ZV9pbml0ID0gc2lfZHBtX2xhdGVfaW5pdCwKQEAg LTgwMzEsNyArODAzNCwxNiBAQCBzdGF0aWMgaW50IHNpX2RwbV9yZWFkX3NlbnNvcih2b2lkICpo YW5kbGUsIGludCBpZHgsCiAJLnNldF9wb3dlcmdhdGluZ19zdGF0ZSA9IHNpX2RwbV9zZXRfcG93 ZXJnYXRpbmdfc3RhdGUsCiB9OwogCi1jb25zdCBzdHJ1Y3QgYW1kX3BtX2Z1bmNzIHNpX2RwbV9m dW5jcyA9IHsKK2NvbnN0IHN0cnVjdCBhbWRncHVfaXBfYmxvY2tfdmVyc2lvbiBzaV9zbXVfaXBf YmxvY2sgPQoreworCS50eXBlID0gQU1EX0lQX0JMT0NLX1RZUEVfU01DLAorCS5tYWpvciA9IDEs CisJLm1pbm9yID0gMCwKKwkucmV2ID0gMCwKKwkuZnVuY3MgPSAmc2lfZHBtX2lwX2Z1bmNzLAor fTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBhbWRfcG1fZnVuY3Mgc2lfZHBtX2Z1bmNzID0gewog CS5wcmVfc2V0X3Bvd2VyX3N0YXRlID0gJnNpX2RwbV9wcmVfc2V0X3Bvd2VyX3N0YXRlLAogCS5z ZXRfcG93ZXJfc3RhdGUgPSAmc2lfZHBtX3NldF9wb3dlcl9zdGF0ZSwKIAkucG9zdF9zZXRfcG93 ZXJfc3RhdGUgPSAmc2lfZHBtX3Bvc3Rfc2V0X3Bvd2VyX3N0YXRlLApkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvc2lfZHBtLmggYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS9zaV9kcG0uaAppbmRleCA5ZmUzNDNkLi42YjdkMjkyIDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS9zaV9kcG0uaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS9zaV9kcG0uaApAQCAtMjQ1LDggKzI0NSw3IEBAIGVudW0gc2lfZGlzcGxheV9nYXAKICAg ICBTSV9QTV9ESVNQTEFZX0dBUF9JR05PUkUgICAgICAgPSAzLAogfTsKIAotZXh0ZXJuIGNvbnN0 IHN0cnVjdCBhbWRfaXBfZnVuY3Mgc2lfZHBtX2lwX2Z1bmNzOwotZXh0ZXJuIGNvbnN0IHN0cnVj dCBhbWRfcG1fZnVuY3Mgc2lfZHBtX2Z1bmNzOworZXh0ZXJuIGNvbnN0IHN0cnVjdCBhbWRncHVf aXBfYmxvY2tfdmVyc2lvbiBzaV9zbXVfaXBfYmxvY2s7CiAKIHN0cnVjdCBuaV9sZWFrYWdlX2Nv ZWZmaWVudHMKIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3NvYzE1 LmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9zb2MxNS5jCmluZGV4IDhkYzhiNzIuLmZl YjM4M2EgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3NvYzE1LmMKKysr IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvc29jMTUuYwpAQCAtNTcsNyArNTcsNiBAQAog I2luY2x1ZGUgInV2ZF92N18wLmgiCiAjaW5jbHVkZSAidmNlX3Y0XzAuaCIKICNpbmNsdWRlICJ2 Y25fdjFfMC5oIgotI2luY2x1ZGUgImFtZGdwdV9wb3dlcnBsYXkuaCIKICNpbmNsdWRlICJkY2Vf dmlydHVhbC5oIgogI2luY2x1ZGUgIm14Z3B1X2FpLmgiCiAKQEAgLTUzNCw3ICs1MzMsNyBAQCBp bnQgc29jMTVfc2V0X2lwX2Jsb2NrcyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKIAkJaWYg KGFtZGdwdV9md19sb2FkX3R5cGUgPT0gMiB8fCBhbWRncHVfZndfbG9hZF90eXBlID09IC0xKQog CQkJYW1kZ3B1X2RldmljZV9pcF9ibG9ja19hZGQoYWRldiwgJnBzcF92M18xX2lwX2Jsb2NrKTsK IAkJaWYgKCFhbWRncHVfc3Jpb3ZfdmYoYWRldikpCi0JCQlhbWRncHVfZGV2aWNlX2lwX2Jsb2Nr X2FkZChhZGV2LCAmYW1kZ3B1X3BwX2lwX2Jsb2NrKTsKKwkJCWFtZGdwdV9kZXZpY2VfaXBfYmxv Y2tfYWRkKGFkZXYsICZwcF9zbXVfaXBfYmxvY2spOwogCQlpZiAoYWRldi0+ZW5hYmxlX3ZpcnR1 YWxfZGlzcGxheSB8fCBhbWRncHVfc3Jpb3ZfdmYoYWRldikpCiAJCQlhbWRncHVfZGV2aWNlX2lw X2Jsb2NrX2FkZChhZGV2LCAmZGNlX3ZpcnR1YWxfaXBfYmxvY2spOwogI2lmIGRlZmluZWQoQ09O RklHX0RSTV9BTURfREMpCkBAIC01NTMsNyArNTUyLDcgQEAgaW50IHNvYzE1X3NldF9pcF9ibG9j a3Moc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCiAJCWFtZGdwdV9kZXZpY2VfaXBfYmxvY2tf YWRkKGFkZXYsICZnbWNfdjlfMF9pcF9ibG9jayk7CiAJCWFtZGdwdV9kZXZpY2VfaXBfYmxvY2tf YWRkKGFkZXYsICZ2ZWdhMTBfaWhfaXBfYmxvY2spOwogCQlhbWRncHVfZGV2aWNlX2lwX2Jsb2Nr X2FkZChhZGV2LCAmcHNwX3YxMF8wX2lwX2Jsb2NrKTsKLQkJYW1kZ3B1X2RldmljZV9pcF9ibG9j a19hZGQoYWRldiwgJmFtZGdwdV9wcF9pcF9ibG9jayk7CisJCWFtZGdwdV9kZXZpY2VfaXBfYmxv Y2tfYWRkKGFkZXYsICZwcF9zbXVfaXBfYmxvY2spOwogCQlpZiAoYWRldi0+ZW5hYmxlX3ZpcnR1 YWxfZGlzcGxheSB8fCBhbWRncHVfc3Jpb3ZfdmYoYWRldikpCiAJCQlhbWRncHVfZGV2aWNlX2lw X2Jsb2NrX2FkZChhZGV2LCAmZGNlX3ZpcnR1YWxfaXBfYmxvY2spOwogI2lmIGRlZmluZWQoQ09O RklHX0RSTV9BTURfREMpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS92 aS5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvdmkuYwppbmRleCA2MTM2MGExLi43ZjAx NjUwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS92aS5jCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3ZpLmMKQEAgLTcxLDcgKzcxLDYgQEAKICNpbmNsdWRl ICJ1dmRfdjVfMC5oIgogI2luY2x1ZGUgInV2ZF92Nl8wLmgiCiAjaW5jbHVkZSAidmNlX3YzXzAu aCIKLSNpbmNsdWRlICJhbWRncHVfcG93ZXJwbGF5LmgiCiAjaWYgZGVmaW5lZChDT05GSUdfRFJN X0FNRF9BQ1ApCiAjaW5jbHVkZSAiYW1kZ3B1X2FjcC5oIgogI2VuZGlmCkBAIC0xNTE2LDcgKzE1 MTUsNyBAQCBpbnQgdmlfc2V0X2lwX2Jsb2NrcyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikK IAkJYW1kZ3B1X2RldmljZV9pcF9ibG9ja19hZGQoYWRldiwgJnZpX2NvbW1vbl9pcF9ibG9jayk7 CiAJCWFtZGdwdV9kZXZpY2VfaXBfYmxvY2tfYWRkKGFkZXYsICZnbWNfdjdfNF9pcF9ibG9jayk7 CiAJCWFtZGdwdV9kZXZpY2VfaXBfYmxvY2tfYWRkKGFkZXYsICZpY2VsYW5kX2loX2lwX2Jsb2Nr KTsKLQkJYW1kZ3B1X2RldmljZV9pcF9ibG9ja19hZGQoYWRldiwgJmFtZGdwdV9wcF9pcF9ibG9j ayk7CisJCWFtZGdwdV9kZXZpY2VfaXBfYmxvY2tfYWRkKGFkZXYsICZwcF9zbXVfaXBfYmxvY2sp OwogCQlpZiAoYWRldi0+ZW5hYmxlX3ZpcnR1YWxfZGlzcGxheSkKIAkJCWFtZGdwdV9kZXZpY2Vf aXBfYmxvY2tfYWRkKGFkZXYsICZkY2VfdmlydHVhbF9pcF9ibG9jayk7CiAJCWFtZGdwdV9kZXZp Y2VfaXBfYmxvY2tfYWRkKGFkZXYsICZnZnhfdjhfMF9pcF9ibG9jayk7CkBAIC0xNTI2LDcgKzE1 MjUsNyBAQCBpbnQgdmlfc2V0X2lwX2Jsb2NrcyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikK IAkJYW1kZ3B1X2RldmljZV9pcF9ibG9ja19hZGQoYWRldiwgJnZpX2NvbW1vbl9pcF9ibG9jayk7 CiAJCWFtZGdwdV9kZXZpY2VfaXBfYmxvY2tfYWRkKGFkZXYsICZnbWNfdjhfNV9pcF9ibG9jayk7 CiAJCWFtZGdwdV9kZXZpY2VfaXBfYmxvY2tfYWRkKGFkZXYsICZ0b25nYV9paF9pcF9ibG9jayk7 Ci0JCWFtZGdwdV9kZXZpY2VfaXBfYmxvY2tfYWRkKGFkZXYsICZhbWRncHVfcHBfaXBfYmxvY2sp OworCQlhbWRncHVfZGV2aWNlX2lwX2Jsb2NrX2FkZChhZGV2LCAmcHBfc211X2lwX2Jsb2NrKTsK IAkJaWYgKGFkZXYtPmVuYWJsZV92aXJ0dWFsX2Rpc3BsYXkgfHwgYW1kZ3B1X3NyaW92X3ZmKGFk ZXYpKQogCQkJYW1kZ3B1X2RldmljZV9pcF9ibG9ja19hZGQoYWRldiwgJmRjZV92aXJ0dWFsX2lw X2Jsb2NrKTsKICNpZiBkZWZpbmVkKENPTkZJR19EUk1fQU1EX0RDKQpAQCAtMTU0Niw3ICsxNTQ1 LDcgQEAgaW50IHZpX3NldF9pcF9ibG9ja3Moc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCiAJ CWFtZGdwdV9kZXZpY2VfaXBfYmxvY2tfYWRkKGFkZXYsICZ2aV9jb21tb25faXBfYmxvY2spOwog CQlhbWRncHVfZGV2aWNlX2lwX2Jsb2NrX2FkZChhZGV2LCAmZ21jX3Y4XzBfaXBfYmxvY2spOwog CQlhbWRncHVfZGV2aWNlX2lwX2Jsb2NrX2FkZChhZGV2LCAmdG9uZ2FfaWhfaXBfYmxvY2spOwot CQlhbWRncHVfZGV2aWNlX2lwX2Jsb2NrX2FkZChhZGV2LCAmYW1kZ3B1X3BwX2lwX2Jsb2NrKTsK KwkJYW1kZ3B1X2RldmljZV9pcF9ibG9ja19hZGQoYWRldiwgJnBwX3NtdV9pcF9ibG9jayk7CiAJ CWlmIChhZGV2LT5lbmFibGVfdmlydHVhbF9kaXNwbGF5IHx8IGFtZGdwdV9zcmlvdl92ZihhZGV2 KSkKIAkJCWFtZGdwdV9kZXZpY2VfaXBfYmxvY2tfYWRkKGFkZXYsICZkY2VfdmlydHVhbF9pcF9i bG9jayk7CiAjaWYgZGVmaW5lZChDT05GSUdfRFJNX0FNRF9EQykKQEAgLTE1NjgsNyArMTU2Nyw3 IEBAIGludCB2aV9zZXRfaXBfYmxvY2tzKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQogCQlh bWRncHVfZGV2aWNlX2lwX2Jsb2NrX2FkZChhZGV2LCAmdmlfY29tbW9uX2lwX2Jsb2NrKTsKIAkJ YW1kZ3B1X2RldmljZV9pcF9ibG9ja19hZGQoYWRldiwgJmdtY192OF8xX2lwX2Jsb2NrKTsKIAkJ YW1kZ3B1X2RldmljZV9pcF9ibG9ja19hZGQoYWRldiwgJnRvbmdhX2loX2lwX2Jsb2NrKTsKLQkJ YW1kZ3B1X2RldmljZV9pcF9ibG9ja19hZGQoYWRldiwgJmFtZGdwdV9wcF9pcF9ibG9jayk7CisJ CWFtZGdwdV9kZXZpY2VfaXBfYmxvY2tfYWRkKGFkZXYsICZwcF9zbXVfaXBfYmxvY2spOwogCQlp ZiAoYWRldi0+ZW5hYmxlX3ZpcnR1YWxfZGlzcGxheSkKIAkJCWFtZGdwdV9kZXZpY2VfaXBfYmxv Y2tfYWRkKGFkZXYsICZkY2VfdmlydHVhbF9pcF9ibG9jayk7CiAjaWYgZGVmaW5lZChDT05GSUdf RFJNX0FNRF9EQykKQEAgLTE1ODYsNyArMTU4NSw3IEBAIGludCB2aV9zZXRfaXBfYmxvY2tzKHN0 cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQogCQlhbWRncHVfZGV2aWNlX2lwX2Jsb2NrX2FkZChh ZGV2LCAmdmlfY29tbW9uX2lwX2Jsb2NrKTsKIAkJYW1kZ3B1X2RldmljZV9pcF9ibG9ja19hZGQo YWRldiwgJmdtY192OF8wX2lwX2Jsb2NrKTsKIAkJYW1kZ3B1X2RldmljZV9pcF9ibG9ja19hZGQo YWRldiwgJmN6X2loX2lwX2Jsb2NrKTsKLQkJYW1kZ3B1X2RldmljZV9pcF9ibG9ja19hZGQoYWRl diwgJmFtZGdwdV9wcF9pcF9ibG9jayk7CisJCWFtZGdwdV9kZXZpY2VfaXBfYmxvY2tfYWRkKGFk ZXYsICZwcF9zbXVfaXBfYmxvY2spOwogCQlpZiAoYWRldi0+ZW5hYmxlX3ZpcnR1YWxfZGlzcGxh eSkKIAkJCWFtZGdwdV9kZXZpY2VfaXBfYmxvY2tfYWRkKGFkZXYsICZkY2VfdmlydHVhbF9pcF9i bG9jayk7CiAjaWYgZGVmaW5lZChDT05GSUdfRFJNX0FNRF9EQykKQEAgLTE2MDcsNyArMTYwNiw3 IEBAIGludCB2aV9zZXRfaXBfYmxvY2tzKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQogCQlh bWRncHVfZGV2aWNlX2lwX2Jsb2NrX2FkZChhZGV2LCAmdmlfY29tbW9uX2lwX2Jsb2NrKTsKIAkJ YW1kZ3B1X2RldmljZV9pcF9ibG9ja19hZGQoYWRldiwgJmdtY192OF8wX2lwX2Jsb2NrKTsKIAkJ YW1kZ3B1X2RldmljZV9pcF9ibG9ja19hZGQoYWRldiwgJmN6X2loX2lwX2Jsb2NrKTsKLQkJYW1k Z3B1X2RldmljZV9pcF9ibG9ja19hZGQoYWRldiwgJmFtZGdwdV9wcF9pcF9ibG9jayk7CisJCWFt ZGdwdV9kZXZpY2VfaXBfYmxvY2tfYWRkKGFkZXYsICZwcF9zbXVfaXBfYmxvY2spOwogCQlpZiAo YWRldi0+ZW5hYmxlX3ZpcnR1YWxfZGlzcGxheSkKIAkJCWFtZGdwdV9kZXZpY2VfaXBfYmxvY2tf YWRkKGFkZXYsICZkY2VfdmlydHVhbF9pcF9ibG9jayk7CiAjaWYgZGVmaW5lZChDT05GSUdfRFJN X0FNRF9EQykKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvaW5jbHVkZS9rZ2RfcHBf aW50ZXJmYWNlLmggYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2luY2x1ZGUva2dkX3BwX2ludGVyZmFj ZS5oCmluZGV4IDE1YmQwZjkuLjVjODQwYzAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9h bWQvaW5jbHVkZS9rZ2RfcHBfaW50ZXJmYWNlLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9p bmNsdWRlL2tnZF9wcF9pbnRlcmZhY2UuaApAQCAtMjQsOCArMjQsNyBAQAogI2lmbmRlZiBfX0tH RF9QUF9JTlRFUkZBQ0VfSF9fCiAjZGVmaW5lIF9fS0dEX1BQX0lOVEVSRkFDRV9IX18KIAotZXh0 ZXJuIGNvbnN0IHN0cnVjdCBhbWRfaXBfZnVuY3MgcHBfaXBfZnVuY3M7Ci1leHRlcm4gY29uc3Qg c3RydWN0IGFtZF9wbV9mdW5jcyBwcF9kcG1fZnVuY3M7CitleHRlcm4gY29uc3Qgc3RydWN0IGFt ZGdwdV9pcF9ibG9ja192ZXJzaW9uIHBwX3NtdV9pcF9ibG9jazsKIAogc3RydWN0IGFtZF92Y2Vf c3RhdGUgewogCS8qIHZjZSBjbG9ja3MgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9h bWQvcG93ZXJwbGF5L2FtZF9wb3dlcnBsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJw bGF5L2FtZF9wb3dlcnBsYXkuYwppbmRleCBiOTg5YmYzLi5hNWJjNTJjIDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9hbWRfcG93ZXJwbGF5LmMKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvYW1kX3Bvd2VycGxheS5jCkBAIC0yNyw3ICsyNyw2IEBA CiAjaW5jbHVkZSA8bGludXgvc2xhYi5oPgogI2luY2x1ZGUgImFtZF9zaGFyZWQuaCIKICNpbmNs dWRlICJhbWRfcG93ZXJwbGF5LmgiCi0jaW5jbHVkZSAicHBfaW5zdGFuY2UuaCIKICNpbmNsdWRl ICJwb3dlcl9zdGF0ZS5oIgogI2luY2x1ZGUgImFtZGdwdS5oIgogI2luY2x1ZGUgImh3bWdyLmgi CkBAIC0zNywxOCArMzYsMTQgQEAKIHN0YXRpYyBpbnQgcHBfZHBtX2Rpc3BhdGNoX3Rhc2tzKHZv aWQgKmhhbmRsZSwgZW51bSBhbWRfcHBfdGFzayB0YXNrX2lkLAogCQllbnVtIGFtZF9wbV9zdGF0 ZV90eXBlICp1c2VyX3N0YXRlKTsKIAotc3RhdGljIGlubGluZSBpbnQgcHBfY2hlY2soc3RydWN0 IHBwX2luc3RhbmNlICpoYW5kbGUpCi17Ci0JaWYgKGhhbmRsZSA9PSBOVUxMKQotCQlyZXR1cm4g LUVJTlZBTDsKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYW1kX3BtX2Z1bmNzIHBwX2RwbV9mdW5jczsK IAotCWlmIChoYW5kbGUtPmh3bWdyID09IE5VTEwgfHwgaGFuZGxlLT5od21nci0+c211bWdyX2Z1 bmNzID09IE5VTEwpCitzdGF0aWMgaW5saW5lIGludCBwcF9jaGVjayhzdHJ1Y3QgcHBfaHdtZ3Ig Kmh3bWdyKQoreworCWlmIChod21nciA9PSBOVUxMIHx8IGh3bWdyLT5zbXVtZ3JfZnVuY3MgPT0g TlVMTCkKIAkJcmV0dXJuIC1FSU5WQUw7CiAKLQlpZiAoaGFuZGxlLT5wbV9lbiA9PSAwKQotCQly ZXR1cm4gUFBfRFBNX0RJU0FCTEVEOwotCi0JaWYgKGhhbmRsZS0+aHdtZ3ItPmh3bWdyX2Z1bmMg PT0gTlVMTCkKKwlpZiAoaHdtZ3ItPnBtX2VuID09IDAgfHwgaHdtZ3ItPmh3bWdyX2Z1bmMgPT0g TlVMTCkKIAkJcmV0dXJuIFBQX0RQTV9ESVNBQkxFRDsKIAogCXJldHVybiAwOwpAQCAtNTYsNTQg KzUxLDUyIEBAIHN0YXRpYyBpbmxpbmUgaW50IHBwX2NoZWNrKHN0cnVjdCBwcF9pbnN0YW5jZSAq aGFuZGxlKQogCiBzdGF0aWMgaW50IGFtZF9wb3dlcnBsYXlfY3JlYXRlKHN0cnVjdCBhbWRncHVf ZGV2aWNlICphZGV2KQogewotCXN0cnVjdCBwcF9pbnN0YW5jZSAqaW5zdGFuY2U7CisJc3RydWN0 IHBwX2h3bWdyICpod21ncjsKIAogCWlmIChhZGV2ID09IE5VTEwpCiAJCXJldHVybiAtRUlOVkFM OwogCi0JaW5zdGFuY2UgPSBremFsbG9jKHNpemVvZihzdHJ1Y3QgcHBfaW5zdGFuY2UpLCBHRlBf S0VSTkVMKTsKLQlpZiAoaW5zdGFuY2UgPT0gTlVMTCkKKwlod21nciA9IGt6YWxsb2Moc2l6ZW9m KHN0cnVjdCBwcF9od21nciksIEdGUF9LRVJORUwpOworCWlmIChod21nciA9PSBOVUxMKQogCQly ZXR1cm4gLUVOT01FTTsKIAotCWluc3RhbmNlLT5wYXJlbnQgPSBhZGV2OwotCWluc3RhbmNlLT5w bV9lbiA9IChhbWRncHVfZHBtICE9IDAgJiYgIWFtZGdwdV9zcmlvdl92ZihhZGV2KSkgPyB0cnVl IDogZmFsc2U7Ci0JaW5zdGFuY2UtPmRldmljZSA9IGFkZXYtPnBvd2VycGxheS5jZ3NfZGV2aWNl OwotCW11dGV4X2luaXQoJmluc3RhbmNlLT5wcF9sb2NrKTsKLQlhZGV2LT5wb3dlcnBsYXkucHBf aGFuZGxlID0gaW5zdGFuY2U7Ci0KKwlod21nci0+YWRldiA9IGFkZXY7CisJaHdtZ3ItPnBtX2Vu ID0gKGFtZGdwdV9kcG0gIT0gMCAmJiAhYW1kZ3B1X3NyaW92X3ZmKGFkZXYpKSA/IHRydWUgOiBm YWxzZTsKKwlod21nci0+ZGV2aWNlID0gYW1kZ3B1X2Nnc19jcmVhdGVfZGV2aWNlKGFkZXYpOwor CW11dGV4X2luaXQoJmh3bWdyLT5zbXVfbG9jayk7CisJaHdtZ3ItPmNoaXBfZmFtaWx5ID0gYWRl di0+ZmFtaWx5OworCWh3bWdyLT5jaGlwX2lkID0gYWRldi0+YXNpY190eXBlOworCWh3bWdyLT5m ZWF0dXJlX21hc2sgPSBhbWRncHVfcHBfZmVhdHVyZV9tYXNrOworCWFkZXYtPnBvd2VycGxheS5w cF9oYW5kbGUgPSBod21ncjsKKwlhZGV2LT5wb3dlcnBsYXkucHBfZnVuY3MgPSAmcHBfZHBtX2Z1 bmNzOwogCXJldHVybiAwOwogfQogCiAKLXN0YXRpYyBpbnQgYW1kX3Bvd2VycGxheV9kZXN0cm95 KHZvaWQgKmhhbmRsZSkKK3N0YXRpYyBpbnQgYW1kX3Bvd2VycGxheV9kZXN0cm95KHN0cnVjdCBh bWRncHVfZGV2aWNlICphZGV2KQogewotCXN0cnVjdCBwcF9pbnN0YW5jZSAqaW5zdGFuY2UgPSAo c3RydWN0IHBwX2luc3RhbmNlICopaGFuZGxlOworCXN0cnVjdCBwcF9od21nciAqaHdtZ3IgPSBh ZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlOwogCi0Ja2ZyZWUoaW5zdGFuY2UtPmh3bWdyLT5oYXJk Y29kZV9wcF90YWJsZSk7Ci0JaW5zdGFuY2UtPmh3bWdyLT5oYXJkY29kZV9wcF90YWJsZSA9IE5V TEw7CisJa2ZyZWUoaHdtZ3ItPmhhcmRjb2RlX3BwX3RhYmxlKTsKKwlod21nci0+aGFyZGNvZGVf cHBfdGFibGUgPSBOVUxMOwogCi0Ja2ZyZWUoaW5zdGFuY2UtPmh3bWdyKTsKLQlpbnN0YW5jZS0+ aHdtZ3IgPSBOVUxMOworCWtmcmVlKGh3bWdyKTsKKwlod21nciA9IE5VTEw7CiAKLQlrZnJlZShp bnN0YW5jZSk7Ci0JaW5zdGFuY2UgPSBOVUxMOwogCXJldHVybiAwOwogfQogCiBzdGF0aWMgaW50 IHBwX2Vhcmx5X2luaXQodm9pZCAqaGFuZGxlKQogewogCWludCByZXQ7Ci0Jc3RydWN0IHBwX2lu c3RhbmNlICpwcF9oYW5kbGUgPSBOVUxMOwotCXN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2ID0g KHN0cnVjdCBhbWRncHVfZGV2aWNlICopaGFuZGxlOworCXN0cnVjdCBhbWRncHVfZGV2aWNlICph ZGV2ID0gaGFuZGxlOwogCiAJcmV0ID0gYW1kX3Bvd2VycGxheV9jcmVhdGUoYWRldik7CiAKIAlp ZiAocmV0ICE9IDApCiAJCXJldHVybiByZXQ7CiAKLQlwcF9oYW5kbGUgPSBhZGV2LT5wb3dlcnBs YXkucHBfaGFuZGxlOwotCi0JcmV0ID0gaHdtZ3JfZWFybHlfaW5pdChwcF9oYW5kbGUpOworCXJl dCA9IGh3bWdyX2Vhcmx5X2luaXQoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSk7CiAJaWYgKHJl dCkKIAkJcmV0dXJuIC1FSU5WQUw7CiAKQEAgLTExMiwxNSArMTA1LDEzIEBAIHN0YXRpYyBpbnQg cHBfZWFybHlfaW5pdCh2b2lkICpoYW5kbGUpCiAKIHN0YXRpYyBpbnQgcHBfc3dfaW5pdCh2b2lk ICpoYW5kbGUpCiB7Ci0Jc3RydWN0IHBwX2h3bWdyICpod21ncjsKKwlzdHJ1Y3QgYW1kZ3B1X2Rl dmljZSAqYWRldiA9IGhhbmRsZTsKKwlzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyID0gYWRldi0+cG93 ZXJwbGF5LnBwX2hhbmRsZTsKIAlpbnQgcmV0ID0gMDsKLQlzdHJ1Y3QgcHBfaW5zdGFuY2UgKnBw X2hhbmRsZSA9IChzdHJ1Y3QgcHBfaW5zdGFuY2UgKiloYW5kbGU7CiAKLQlyZXQgPSBwcF9jaGVj ayhwcF9oYW5kbGUpOworCXJldCA9IHBwX2NoZWNrKGh3bWdyKTsKIAogCWlmIChyZXQgPj0gMCkg ewotCQlod21nciA9IHBwX2hhbmRsZS0+aHdtZ3I7Ci0KIAkJaWYgKGh3bWdyLT5zbXVtZ3JfZnVu Y3MtPnNtdV9pbml0ID09IE5VTEwpCiAJCQlyZXR1cm4gLUVJTlZBTDsKIApAQCAtMTI4LDU1ICsx MTksNTMgQEAgc3RhdGljIGludCBwcF9zd19pbml0KHZvaWQgKmhhbmRsZSkKIAogCQlwcl9kZWJ1 ZygiYW1kZ3B1OiBwb3dlcnBsYXkgc3cgaW5pdGlhbGl6ZWRcbiIpOwogCX0KKwogCXJldHVybiBy ZXQ7CiB9CiAKIHN0YXRpYyBpbnQgcHBfc3dfZmluaSh2b2lkICpoYW5kbGUpCiB7Ci0Jc3RydWN0 IHBwX2h3bWdyICpod21ncjsKKwlzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiA9IGhhbmRsZTsK KwlzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyID0gYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZTsKIAlp bnQgcmV0ID0gMDsKLQlzdHJ1Y3QgcHBfaW5zdGFuY2UgKnBwX2hhbmRsZSA9IChzdHJ1Y3QgcHBf aW5zdGFuY2UgKiloYW5kbGU7CiAKLQlyZXQgPSBwcF9jaGVjayhwcF9oYW5kbGUpOworCXJldCA9 IHBwX2NoZWNrKGh3bWdyKTsKIAlpZiAocmV0ID49IDApIHsKLQkJaHdtZ3IgPSBwcF9oYW5kbGUt Pmh3bWdyOwotCi0JCWlmIChod21nci0+c211bWdyX2Z1bmNzLT5zbXVfZmluaSA9PSBOVUxMKQot CQkJcmV0dXJuIC1FSU5WQUw7Ci0KLQkJcmV0ID0gaHdtZ3ItPnNtdW1ncl9mdW5jcy0+c211X2Zp bmkocHBfaGFuZGxlLT5od21ncik7CisJCWlmIChod21nci0+c211bWdyX2Z1bmNzLT5zbXVfZmlu aSAhPSBOVUxMKQorCQkJaHdtZ3ItPnNtdW1ncl9mdW5jcy0+c211X2ZpbmkoaHdtZ3IpOwogCX0K LQlyZXR1cm4gcmV0OworCXJldHVybiAwOwogfQogCiBzdGF0aWMgaW50IHBwX2h3X2luaXQodm9p ZCAqaGFuZGxlKQogewogCWludCByZXQgPSAwOwotCXN0cnVjdCBwcF9pbnN0YW5jZSAqcHBfaGFu ZGxlID0gKHN0cnVjdCBwcF9pbnN0YW5jZSAqKWhhbmRsZTsKLQlzdHJ1Y3QgcHBfaHdtZ3IgKmh3 bWdyOworCXN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2ID0gaGFuZGxlOworCXN0cnVjdCBwcF9o d21nciAqaHdtZ3IgPSBhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlOwogCi0JcmV0ID0gcHBfY2hl Y2socHBfaGFuZGxlKTsKKwlpZiAoYWRldi0+ZmlybXdhcmUubG9hZF90eXBlID09IEFNREdQVV9G V19MT0FEX1NNVSkKKwkJYW1kZ3B1X3Vjb2RlX2luaXRfYm8oYWRldik7CiAKLQlpZiAocmV0ID49 IDApIHsKLQkJaHdtZ3IgPSBwcF9oYW5kbGUtPmh3bWdyOworCXJldCA9IHBwX2NoZWNrKGh3bWdy KTsKIAorCWlmIChyZXQgPj0gMCkgewogCQlpZiAoaHdtZ3ItPnNtdW1ncl9mdW5jcy0+c3RhcnRf c211ID09IE5VTEwpCiAJCQlyZXR1cm4gLUVJTlZBTDsKIAotCQlpZihod21nci0+c211bWdyX2Z1 bmNzLT5zdGFydF9zbXUocHBfaGFuZGxlLT5od21ncikpIHsKKwkJaWYgKGh3bWdyLT5zbXVtZ3Jf ZnVuY3MtPnN0YXJ0X3NtdShod21ncikpIHsKIAkJCXByX2Vycigic21jIHN0YXJ0IGZhaWxlZFxu Iik7Ci0JCQlod21nci0+c211bWdyX2Z1bmNzLT5zbXVfZmluaShwcF9oYW5kbGUtPmh3bWdyKTsK KwkJCWh3bWdyLT5zbXVtZ3JfZnVuY3MtPnNtdV9maW5pKGh3bWdyKTsKIAkJCXJldHVybiAtRUlO VkFMOwogCQl9CiAJCWlmIChyZXQgPT0gUFBfRFBNX0RJU0FCTEVEKQogCQkJZ290byBleGl0Owot CQlyZXQgPSBod21ncl9od19pbml0KHBwX2hhbmRsZSk7CisJCXJldCA9IGh3bWdyX2h3X2luaXQo aHdtZ3IpOwogCQlpZiAocmV0KQogCQkJZ290byBleGl0OwogCX0KIAlyZXR1cm4gcmV0OwogZXhp dDoKLQlwcF9oYW5kbGUtPnBtX2VuID0gMDsKKwlod21nci0+cG1fZW4gPSAwOwogCWNnc19ub3Rp ZnlfZHBtX2VuYWJsZWQoaHdtZ3ItPmRldmljZSwgZmFsc2UpOwogCXJldHVybiAwOwogCkBAIC0x ODQsMjQgKzE3MywyNyBAQCBzdGF0aWMgaW50IHBwX2h3X2luaXQodm9pZCAqaGFuZGxlKQogCiBz dGF0aWMgaW50IHBwX2h3X2Zpbmkodm9pZCAqaGFuZGxlKQogewotCXN0cnVjdCBwcF9pbnN0YW5j ZSAqcHBfaGFuZGxlID0gKHN0cnVjdCBwcF9pbnN0YW5jZSAqKWhhbmRsZTsKKwlzdHJ1Y3QgYW1k Z3B1X2RldmljZSAqYWRldiA9IGhhbmRsZTsKKwlzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyID0gYWRl di0+cG93ZXJwbGF5LnBwX2hhbmRsZTsKIAlpbnQgcmV0ID0gMDsKIAotCXJldCA9IHBwX2NoZWNr KHBwX2hhbmRsZSk7CisJcmV0ID0gcHBfY2hlY2soaHdtZ3IpOwogCWlmIChyZXQgPT0gMCkKLQkJ aHdtZ3JfaHdfZmluaShwcF9oYW5kbGUpOworCQlod21ncl9od19maW5pKGh3bWdyKTsKIAogCXJl dHVybiAwOwogfQogCiBzdGF0aWMgaW50IHBwX2xhdGVfaW5pdCh2b2lkICpoYW5kbGUpCiB7Ci0J c3RydWN0IHBwX2luc3RhbmNlICpwcF9oYW5kbGUgPSAoc3RydWN0IHBwX2luc3RhbmNlICopaGFu ZGxlOworCXN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2ID0gaGFuZGxlOworCXN0cnVjdCBwcF9o d21nciAqaHdtZ3IgPSBhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlOwogCWludCByZXQgPSAwOwog Ci0JcmV0ID0gcHBfY2hlY2socHBfaGFuZGxlKTsKKwlyZXQgPSBwcF9jaGVjayhod21ncik7CisK IAlpZiAocmV0ID09IDApCi0JCXBwX2RwbV9kaXNwYXRjaF90YXNrcyhwcF9oYW5kbGUsCisJCXBw X2RwbV9kaXNwYXRjaF90YXNrcyhod21nciwKIAkJCQkJQU1EX1BQX1RBU0tfQ09NUExFVEVfSU5J VCwgTlVMTCk7CiAKIAlyZXR1cm4gMDsKQEAgLTIzMSwxNyArMjIzLDE1IEBAIHN0YXRpYyBpbnQg cHBfc3dfcmVzZXQodm9pZCAqaGFuZGxlKQogc3RhdGljIGludCBwcF9zZXRfcG93ZXJnYXRpbmdf c3RhdGUodm9pZCAqaGFuZGxlLAogCQkJCSAgICBlbnVtIGFtZF9wb3dlcmdhdGluZ19zdGF0ZSBz dGF0ZSkKIHsKLQlzdHJ1Y3QgcHBfaHdtZ3IgICpod21ncjsKLQlzdHJ1Y3QgcHBfaW5zdGFuY2Ug KnBwX2hhbmRsZSA9IChzdHJ1Y3QgcHBfaW5zdGFuY2UgKiloYW5kbGU7CisJc3RydWN0IGFtZGdw dV9kZXZpY2UgKmFkZXYgPSBoYW5kbGU7CisJc3RydWN0IHBwX2h3bWdyICpod21nciA9IGFkZXYt PnBvd2VycGxheS5wcF9oYW5kbGU7CiAJaW50IHJldCA9IDA7CiAKLQlyZXQgPSBwcF9jaGVjayhw cF9oYW5kbGUpOworCXJldCA9IHBwX2NoZWNrKGh3bWdyKTsKIAogCWlmIChyZXQpCiAJCXJldHVy biByZXQ7CiAKLQlod21nciA9IHBwX2hhbmRsZS0+aHdtZ3I7Ci0KIAlpZiAoaHdtZ3ItPmh3bWdy X2Z1bmMtPmVuYWJsZV9wZXJfY3VfcG93ZXJfZ2F0aW5nID09IE5VTEwpIHsKIAkJcHJfaW5mbygi JXMgd2FzIG5vdCBpbXBsZW1lbnRlZC5cbiIsIF9fZnVuY19fKTsKIAkJcmV0dXJuIDA7CkBAIC0y NTQsNDQgKzI0NCw0MyBAQCBzdGF0aWMgaW50IHBwX3NldF9wb3dlcmdhdGluZ19zdGF0ZSh2b2lk ICpoYW5kbGUsCiAKIHN0YXRpYyBpbnQgcHBfc3VzcGVuZCh2b2lkICpoYW5kbGUpCiB7Ci0Jc3Ry dWN0IHBwX2luc3RhbmNlICpwcF9oYW5kbGUgPSAoc3RydWN0IHBwX2luc3RhbmNlICopaGFuZGxl OworCXN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2ID0gaGFuZGxlOworCXN0cnVjdCBwcF9od21n ciAqaHdtZ3IgPSBhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlOwogCWludCByZXQgPSAwOwogCi0J cmV0ID0gcHBfY2hlY2socHBfaGFuZGxlKTsKKwlyZXQgPSBwcF9jaGVjayhod21ncik7CiAJaWYg KHJldCA9PSAwKQotCQlod21ncl9od19zdXNwZW5kKHBwX2hhbmRsZSk7CisJCWh3bWdyX2h3X3N1 c3BlbmQoaHdtZ3IpOwogCXJldHVybiAwOwogfQogCiBzdGF0aWMgaW50IHBwX3Jlc3VtZSh2b2lk ICpoYW5kbGUpCiB7Ci0Jc3RydWN0IHBwX2h3bWdyICAqaHdtZ3I7CisJc3RydWN0IGFtZGdwdV9k ZXZpY2UgKmFkZXYgPSBoYW5kbGU7CisJc3RydWN0IHBwX2h3bWdyICpod21nciA9IGFkZXYtPnBv d2VycGxheS5wcF9oYW5kbGU7CiAJaW50IHJldDsKLQlzdHJ1Y3QgcHBfaW5zdGFuY2UgKnBwX2hh bmRsZSA9IChzdHJ1Y3QgcHBfaW5zdGFuY2UgKiloYW5kbGU7CiAKLQlyZXQgPSBwcF9jaGVjayhw cF9oYW5kbGUpOworCXJldCA9IHBwX2NoZWNrKGh3bWdyKTsKIAogCWlmIChyZXQgPCAwKQogCQly ZXR1cm4gcmV0OwogCi0JaHdtZ3IgPSBwcF9oYW5kbGUtPmh3bWdyOwotCiAJaWYgKGh3bWdyLT5z bXVtZ3JfZnVuY3MtPnN0YXJ0X3NtdSA9PSBOVUxMKQogCQlyZXR1cm4gLUVJTlZBTDsKIAotCWlm IChod21nci0+c211bWdyX2Z1bmNzLT5zdGFydF9zbXUocHBfaGFuZGxlLT5od21ncikpIHsKKwlp ZiAoaHdtZ3ItPnNtdW1ncl9mdW5jcy0+c3RhcnRfc211KGh3bWdyKSkgewogCQlwcl9lcnIoInNt YyBzdGFydCBmYWlsZWRcbiIpOwotCQlod21nci0+c211bWdyX2Z1bmNzLT5zbXVfZmluaShwcF9o YW5kbGUtPmh3bWdyKTsKKwkJaHdtZ3ItPnNtdW1ncl9mdW5jcy0+c211X2ZpbmkoaHdtZ3IpOwog CQlyZXR1cm4gLUVJTlZBTDsKIAl9CiAKIAlpZiAocmV0ID09IFBQX0RQTV9ESVNBQkxFRCkKIAkJ cmV0dXJuIDA7CiAKLQlyZXR1cm4gaHdtZ3JfaHdfcmVzdW1lKHBwX2hhbmRsZSk7CisJcmV0dXJu IGh3bWdyX2h3X3Jlc3VtZShod21ncik7CiB9CiAKLWNvbnN0IHN0cnVjdCBhbWRfaXBfZnVuY3Mg cHBfaXBfZnVuY3MgPSB7CitzdGF0aWMgY29uc3Qgc3RydWN0IGFtZF9pcF9mdW5jcyBwcF9pcF9m dW5jcyA9IHsKIAkubmFtZSA9ICJwb3dlcnBsYXkiLAogCS5lYXJseV9pbml0ID0gcHBfZWFybHlf aW5pdCwKIAkubGF0ZV9pbml0ID0gcHBfbGF0ZV9pbml0LApAQCAtMzA5LDYgKzI5OCwxNSBAQCBz dGF0aWMgaW50IHBwX3Jlc3VtZSh2b2lkICpoYW5kbGUpCiAJLnNldF9wb3dlcmdhdGluZ19zdGF0 ZSA9IHBwX3NldF9wb3dlcmdhdGluZ19zdGF0ZSwKIH07CiAKK2NvbnN0IHN0cnVjdCBhbWRncHVf aXBfYmxvY2tfdmVyc2lvbiBwcF9zbXVfaXBfYmxvY2sgPQoreworCS50eXBlID0gQU1EX0lQX0JM T0NLX1RZUEVfU01DLAorCS5tYWpvciA9IDEsCisJLm1pbm9yID0gMCwKKwkucmV2ID0gMCwKKwku ZnVuY3MgPSAmcHBfaXBfZnVuY3MsCit9OworCiBzdGF0aWMgaW50IHBwX2RwbV9sb2FkX2Z3KHZv aWQgKmhhbmRsZSkKIHsKIAlyZXR1cm4gMDsKQEAgLTMyMSwxNyArMzE5LDE0IEBAIHN0YXRpYyBp bnQgcHBfZHBtX2Z3X2xvYWRpbmdfY29tcGxldGUodm9pZCAqaGFuZGxlKQogCiBzdGF0aWMgaW50 IHBwX3NldF9jbG9ja2dhdGluZ19ieV9zbXUodm9pZCAqaGFuZGxlLCB1aW50MzJfdCBtc2dfaWQp CiB7Ci0Jc3RydWN0IHBwX2h3bWdyICAqaHdtZ3I7Ci0Jc3RydWN0IHBwX2luc3RhbmNlICpwcF9o YW5kbGUgPSAoc3RydWN0IHBwX2luc3RhbmNlICopaGFuZGxlOworCXN0cnVjdCBwcF9od21nciAq aHdtZ3IgPSBoYW5kbGU7CiAJaW50IHJldCA9IDA7CiAKLQlyZXQgPSBwcF9jaGVjayhwcF9oYW5k bGUpOworCXJldCA9IHBwX2NoZWNrKGh3bWdyKTsKIAogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7 CiAKLQlod21nciA9IHBwX2hhbmRsZS0+aHdtZ3I7Ci0KIAlpZiAoaHdtZ3ItPmh3bWdyX2Z1bmMt PnVwZGF0ZV9jbG9ja19nYXRpbmdzID09IE5VTEwpIHsKIAkJcHJfaW5mbygiJXMgd2FzIG5vdCBp bXBsZW1lbnRlZC5cbiIsIF9fZnVuY19fKTsKIAkJcmV0dXJuIDA7CkBAIC0zNzksMjUgKzM3NCwy MiBAQCBzdGF0aWMgdm9pZCBwcF9kcG1fZW5fdW1kX3BzdGF0ZShzdHJ1Y3QgcHBfaHdtZ3IgICpo d21nciwKIHN0YXRpYyBpbnQgcHBfZHBtX2ZvcmNlX3BlcmZvcm1hbmNlX2xldmVsKHZvaWQgKmhh bmRsZSwKIAkJCQkJZW51bSBhbWRfZHBtX2ZvcmNlZF9sZXZlbCBsZXZlbCkKIHsKLQlzdHJ1Y3Qg cHBfaHdtZ3IgICpod21ncjsKLQlzdHJ1Y3QgcHBfaW5zdGFuY2UgKnBwX2hhbmRsZSA9IChzdHJ1 Y3QgcHBfaW5zdGFuY2UgKiloYW5kbGU7CisJc3RydWN0IHBwX2h3bWdyICpod21nciA9IGhhbmRs ZTsKIAlpbnQgcmV0ID0gMDsKIAotCXJldCA9IHBwX2NoZWNrKHBwX2hhbmRsZSk7CisJcmV0ID0g cHBfY2hlY2soaHdtZ3IpOwogCiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIAotCWh3bWdyID0g cHBfaGFuZGxlLT5od21ncjsKLQogCWlmIChsZXZlbCA9PSBod21nci0+ZHBtX2xldmVsKQogCQly ZXR1cm4gMDsKIAotCW11dGV4X2xvY2soJnBwX2hhbmRsZS0+cHBfbG9jayk7CisJbXV0ZXhfbG9j aygmaHdtZ3ItPnNtdV9sb2NrKTsKIAlwcF9kcG1fZW5fdW1kX3BzdGF0ZShod21nciwgJmxldmVs KTsKIAlod21nci0+cmVxdWVzdF9kcG1fbGV2ZWwgPSBsZXZlbDsKLQlod21ncl9oYW5kbGVfdGFz ayhwcF9oYW5kbGUsIEFNRF9QUF9UQVNLX1JFQURKVVNUX1BPV0VSX1NUQVRFLCBOVUxMKTsKLQlt dXRleF91bmxvY2soJnBwX2hhbmRsZS0+cHBfbG9jayk7CisJaHdtZ3JfaGFuZGxlX3Rhc2soaHdt Z3IsIEFNRF9QUF9UQVNLX1JFQURKVVNUX1BPV0VSX1NUQVRFLCBOVUxMKTsKKwltdXRleF91bmxv Y2soJmh3bWdyLT5zbXVfbG9jayk7CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTQwNSwxNTIgKzM5Nywx MzUgQEAgc3RhdGljIGludCBwcF9kcG1fZm9yY2VfcGVyZm9ybWFuY2VfbGV2ZWwodm9pZCAqaGFu ZGxlLAogc3RhdGljIGVudW0gYW1kX2RwbV9mb3JjZWRfbGV2ZWwgcHBfZHBtX2dldF9wZXJmb3Jt YW5jZV9sZXZlbCgKIAkJCQkJCQkJdm9pZCAqaGFuZGxlKQogewotCXN0cnVjdCBwcF9od21nciAg Kmh3bWdyOwotCXN0cnVjdCBwcF9pbnN0YW5jZSAqcHBfaGFuZGxlID0gKHN0cnVjdCBwcF9pbnN0 YW5jZSAqKWhhbmRsZTsKKwlzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyID0gaGFuZGxlOwogCWludCBy ZXQgPSAwOwogCWVudW0gYW1kX2RwbV9mb3JjZWRfbGV2ZWwgbGV2ZWw7CiAKLQlyZXQgPSBwcF9j aGVjayhwcF9oYW5kbGUpOworCXJldCA9IHBwX2NoZWNrKGh3bWdyKTsKIAogCWlmIChyZXQpCiAJ CXJldHVybiByZXQ7CiAKLQlod21nciA9IHBwX2hhbmRsZS0+aHdtZ3I7Ci0JbXV0ZXhfbG9jaygm cHBfaGFuZGxlLT5wcF9sb2NrKTsKKwltdXRleF9sb2NrKCZod21nci0+c211X2xvY2spOwogCWxl dmVsID0gaHdtZ3ItPmRwbV9sZXZlbDsKLQltdXRleF91bmxvY2soJnBwX2hhbmRsZS0+cHBfbG9j ayk7CisJbXV0ZXhfdW5sb2NrKCZod21nci0+c211X2xvY2spOwogCXJldHVybiBsZXZlbDsKIH0K IAogc3RhdGljIHVpbnQzMl90IHBwX2RwbV9nZXRfc2Nsayh2b2lkICpoYW5kbGUsIGJvb2wgbG93 KQogewotCXN0cnVjdCBwcF9od21nciAgKmh3bWdyOwotCXN0cnVjdCBwcF9pbnN0YW5jZSAqcHBf aGFuZGxlID0gKHN0cnVjdCBwcF9pbnN0YW5jZSAqKWhhbmRsZTsKKwlzdHJ1Y3QgcHBfaHdtZ3Ig Kmh3bWdyID0gaGFuZGxlOwogCWludCByZXQgPSAwOwogCXVpbnQzMl90IGNsayA9IDA7CiAKLQly ZXQgPSBwcF9jaGVjayhwcF9oYW5kbGUpOworCXJldCA9IHBwX2NoZWNrKGh3bWdyKTsKIAogCWlm IChyZXQpCiAJCXJldHVybiByZXQ7CiAKLQlod21nciA9IHBwX2hhbmRsZS0+aHdtZ3I7Ci0KIAlp ZiAoaHdtZ3ItPmh3bWdyX2Z1bmMtPmdldF9zY2xrID09IE5VTEwpIHsKIAkJcHJfaW5mbygiJXMg d2FzIG5vdCBpbXBsZW1lbnRlZC5cbiIsIF9fZnVuY19fKTsKIAkJcmV0dXJuIDA7CiAJfQotCW11 dGV4X2xvY2soJnBwX2hhbmRsZS0+cHBfbG9jayk7CisJbXV0ZXhfbG9jaygmaHdtZ3ItPnNtdV9s b2NrKTsKIAljbGsgPSBod21nci0+aHdtZ3JfZnVuYy0+Z2V0X3NjbGsoaHdtZ3IsIGxvdyk7Ci0J bXV0ZXhfdW5sb2NrKCZwcF9oYW5kbGUtPnBwX2xvY2spOworCW11dGV4X3VubG9jaygmaHdtZ3It PnNtdV9sb2NrKTsKIAlyZXR1cm4gY2xrOwogfQogCiBzdGF0aWMgdWludDMyX3QgcHBfZHBtX2dl dF9tY2xrKHZvaWQgKmhhbmRsZSwgYm9vbCBsb3cpCiB7Ci0Jc3RydWN0IHBwX2h3bWdyICAqaHdt Z3I7Ci0Jc3RydWN0IHBwX2luc3RhbmNlICpwcF9oYW5kbGUgPSAoc3RydWN0IHBwX2luc3RhbmNl ICopaGFuZGxlOworCXN0cnVjdCBwcF9od21nciAqaHdtZ3IgPSBoYW5kbGU7CiAJaW50IHJldCA9 IDA7CiAJdWludDMyX3QgY2xrID0gMDsKIAotCXJldCA9IHBwX2NoZWNrKHBwX2hhbmRsZSk7CisJ cmV0ID0gcHBfY2hlY2soaHdtZ3IpOwogCiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIAotCWh3 bWdyID0gcHBfaGFuZGxlLT5od21ncjsKLQogCWlmIChod21nci0+aHdtZ3JfZnVuYy0+Z2V0X21j bGsgPT0gTlVMTCkgewogCQlwcl9pbmZvKCIlcyB3YXMgbm90IGltcGxlbWVudGVkLlxuIiwgX19m dW5jX18pOwogCQlyZXR1cm4gMDsKIAl9Ci0JbXV0ZXhfbG9jaygmcHBfaGFuZGxlLT5wcF9sb2Nr KTsKKwltdXRleF9sb2NrKCZod21nci0+c211X2xvY2spOwogCWNsayA9IGh3bWdyLT5od21ncl9m dW5jLT5nZXRfbWNsayhod21nciwgbG93KTsKLQltdXRleF91bmxvY2soJnBwX2hhbmRsZS0+cHBf bG9jayk7CisJbXV0ZXhfdW5sb2NrKCZod21nci0+c211X2xvY2spOwogCXJldHVybiBjbGs7CiB9 CiAKIHN0YXRpYyB2b2lkIHBwX2RwbV9wb3dlcmdhdGVfdmNlKHZvaWQgKmhhbmRsZSwgYm9vbCBn YXRlKQogewotCXN0cnVjdCBwcF9od21nciAgKmh3bWdyOwotCXN0cnVjdCBwcF9pbnN0YW5jZSAq cHBfaGFuZGxlID0gKHN0cnVjdCBwcF9pbnN0YW5jZSAqKWhhbmRsZTsKKwlzdHJ1Y3QgcHBfaHdt Z3IgKmh3bWdyID0gaGFuZGxlOwogCWludCByZXQgPSAwOwogCi0JcmV0ID0gcHBfY2hlY2socHBf aGFuZGxlKTsKKwlyZXQgPSBwcF9jaGVjayhod21ncik7CiAKIAlpZiAocmV0KQogCQlyZXR1cm47 CiAKLQlod21nciA9IHBwX2hhbmRsZS0+aHdtZ3I7Ci0KIAlpZiAoaHdtZ3ItPmh3bWdyX2Z1bmMt PnBvd2VyZ2F0ZV92Y2UgPT0gTlVMTCkgewogCQlwcl9pbmZvKCIlcyB3YXMgbm90IGltcGxlbWVu dGVkLlxuIiwgX19mdW5jX18pOwogCQlyZXR1cm47CiAJfQotCW11dGV4X2xvY2soJnBwX2hhbmRs ZS0+cHBfbG9jayk7CisJbXV0ZXhfbG9jaygmaHdtZ3ItPnNtdV9sb2NrKTsKIAlod21nci0+aHdt Z3JfZnVuYy0+cG93ZXJnYXRlX3ZjZShod21nciwgZ2F0ZSk7Ci0JbXV0ZXhfdW5sb2NrKCZwcF9o YW5kbGUtPnBwX2xvY2spOworCW11dGV4X3VubG9jaygmaHdtZ3ItPnNtdV9sb2NrKTsKIH0KIAog c3RhdGljIHZvaWQgcHBfZHBtX3Bvd2VyZ2F0ZV91dmQodm9pZCAqaGFuZGxlLCBib29sIGdhdGUp CiB7Ci0Jc3RydWN0IHBwX2h3bWdyICAqaHdtZ3I7Ci0Jc3RydWN0IHBwX2luc3RhbmNlICpwcF9o YW5kbGUgPSAoc3RydWN0IHBwX2luc3RhbmNlICopaGFuZGxlOworCXN0cnVjdCBwcF9od21nciAq aHdtZ3IgPSBoYW5kbGU7CiAJaW50IHJldCA9IDA7CiAKLQlyZXQgPSBwcF9jaGVjayhwcF9oYW5k bGUpOworCXJldCA9IHBwX2NoZWNrKGh3bWdyKTsKIAogCWlmIChyZXQpCiAJCXJldHVybjsKIAot CWh3bWdyID0gcHBfaGFuZGxlLT5od21ncjsKLQogCWlmIChod21nci0+aHdtZ3JfZnVuYy0+cG93 ZXJnYXRlX3V2ZCA9PSBOVUxMKSB7CiAJCXByX2luZm8oIiVzIHdhcyBub3QgaW1wbGVtZW50ZWQu XG4iLCBfX2Z1bmNfXyk7CiAJCXJldHVybjsKIAl9Ci0JbXV0ZXhfbG9jaygmcHBfaGFuZGxlLT5w cF9sb2NrKTsKKwltdXRleF9sb2NrKCZod21nci0+c211X2xvY2spOwogCWh3bWdyLT5od21ncl9m dW5jLT5wb3dlcmdhdGVfdXZkKGh3bWdyLCBnYXRlKTsKLQltdXRleF91bmxvY2soJnBwX2hhbmRs ZS0+cHBfbG9jayk7CisJbXV0ZXhfdW5sb2NrKCZod21nci0+c211X2xvY2spOwogfQogCiBzdGF0 aWMgaW50IHBwX2RwbV9kaXNwYXRjaF90YXNrcyh2b2lkICpoYW5kbGUsIGVudW0gYW1kX3BwX3Rh c2sgdGFza19pZCwKIAkJZW51bSBhbWRfcG1fc3RhdGVfdHlwZSAqdXNlcl9zdGF0ZSkKIHsKIAlp bnQgcmV0ID0gMDsKLQlzdHJ1Y3QgcHBfaW5zdGFuY2UgKnBwX2hhbmRsZSA9IChzdHJ1Y3QgcHBf aW5zdGFuY2UgKiloYW5kbGU7CisJc3RydWN0IHBwX2h3bWdyICpod21nciA9IGhhbmRsZTsKIAot CXJldCA9IHBwX2NoZWNrKHBwX2hhbmRsZSk7CisJcmV0ID0gcHBfY2hlY2soaHdtZ3IpOwogCiAJ aWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIAotCW11dGV4X2xvY2soJnBwX2hhbmRsZS0+cHBfbG9j ayk7Ci0JcmV0ID0gaHdtZ3JfaGFuZGxlX3Rhc2socHBfaGFuZGxlLCB0YXNrX2lkLCB1c2VyX3N0 YXRlKTsKLQltdXRleF91bmxvY2soJnBwX2hhbmRsZS0+cHBfbG9jayk7CisJbXV0ZXhfbG9jaygm aHdtZ3ItPnNtdV9sb2NrKTsKKwlyZXQgPSBod21ncl9oYW5kbGVfdGFzayhod21nciwgdGFza19p ZCwgdXNlcl9zdGF0ZSk7CisJbXV0ZXhfdW5sb2NrKCZod21nci0+c211X2xvY2spOwogCiAJcmV0 dXJuIHJldDsKIH0KIAogc3RhdGljIGVudW0gYW1kX3BtX3N0YXRlX3R5cGUgcHBfZHBtX2dldF9j dXJyZW50X3Bvd2VyX3N0YXRlKHZvaWQgKmhhbmRsZSkKIHsKLQlzdHJ1Y3QgcHBfaHdtZ3IgKmh3 bWdyOworCXN0cnVjdCBwcF9od21nciAqaHdtZ3IgPSBoYW5kbGU7CiAJc3RydWN0IHBwX3Bvd2Vy X3N0YXRlICpzdGF0ZTsKLQlzdHJ1Y3QgcHBfaW5zdGFuY2UgKnBwX2hhbmRsZSA9IChzdHJ1Y3Qg cHBfaW5zdGFuY2UgKiloYW5kbGU7CiAJaW50IHJldCA9IDA7CiAJZW51bSBhbWRfcG1fc3RhdGVf dHlwZSBwbV90eXBlOwogCi0JcmV0ID0gcHBfY2hlY2socHBfaGFuZGxlKTsKKwlyZXQgPSBwcF9j aGVjayhod21ncik7CiAKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCi0JaHdtZ3IgPSBwcF9o YW5kbGUtPmh3bWdyOwotCiAJaWYgKGh3bWdyLT5jdXJyZW50X3BzID09IE5VTEwpCiAJCXJldHVy biAtRUlOVkFMOwogCi0JbXV0ZXhfbG9jaygmcHBfaGFuZGxlLT5wcF9sb2NrKTsKKwltdXRleF9s b2NrKCZod21nci0+c211X2xvY2spOwogCiAJc3RhdGUgPSBod21nci0+Y3VycmVudF9wczsKIApA QCAtNTcxLDE0NyArNTQ2LDEyOSBAQCBzdGF0aWMgZW51bSBhbWRfcG1fc3RhdGVfdHlwZSBwcF9k cG1fZ2V0X2N1cnJlbnRfcG93ZXJfc3RhdGUodm9pZCAqaGFuZGxlKQogCQkJcG1fdHlwZSA9IFBP V0VSX1NUQVRFX1RZUEVfREVGQVVMVDsKIAkJYnJlYWs7CiAJfQotCW11dGV4X3VubG9jaygmcHBf aGFuZGxlLT5wcF9sb2NrKTsKKwltdXRleF91bmxvY2soJmh3bWdyLT5zbXVfbG9jayk7CiAKIAly ZXR1cm4gcG1fdHlwZTsKIH0KIAogc3RhdGljIHZvaWQgcHBfZHBtX3NldF9mYW5fY29udHJvbF9t b2RlKHZvaWQgKmhhbmRsZSwgdWludDMyX3QgbW9kZSkKIHsKLQlzdHJ1Y3QgcHBfaHdtZ3IgICpo d21ncjsKLQlzdHJ1Y3QgcHBfaW5zdGFuY2UgKnBwX2hhbmRsZSA9IChzdHJ1Y3QgcHBfaW5zdGFu Y2UgKiloYW5kbGU7CisJc3RydWN0IHBwX2h3bWdyICpod21nciA9IGhhbmRsZTsKIAlpbnQgcmV0 ID0gMDsKIAotCXJldCA9IHBwX2NoZWNrKHBwX2hhbmRsZSk7CisJcmV0ID0gcHBfY2hlY2soaHdt Z3IpOwogCiAJaWYgKHJldCkKIAkJcmV0dXJuOwogCi0JaHdtZ3IgPSBwcF9oYW5kbGUtPmh3bWdy OwotCiAJaWYgKGh3bWdyLT5od21ncl9mdW5jLT5zZXRfZmFuX2NvbnRyb2xfbW9kZSA9PSBOVUxM KSB7CiAJCXByX2luZm8oIiVzIHdhcyBub3QgaW1wbGVtZW50ZWQuXG4iLCBfX2Z1bmNfXyk7CiAJ CXJldHVybjsKIAl9Ci0JbXV0ZXhfbG9jaygmcHBfaGFuZGxlLT5wcF9sb2NrKTsKKwltdXRleF9s b2NrKCZod21nci0+c211X2xvY2spOwogCWh3bWdyLT5od21ncl9mdW5jLT5zZXRfZmFuX2NvbnRy b2xfbW9kZShod21nciwgbW9kZSk7Ci0JbXV0ZXhfdW5sb2NrKCZwcF9oYW5kbGUtPnBwX2xvY2sp OworCW11dGV4X3VubG9jaygmaHdtZ3ItPnNtdV9sb2NrKTsKIH0KIAogc3RhdGljIHVpbnQzMl90 IHBwX2RwbV9nZXRfZmFuX2NvbnRyb2xfbW9kZSh2b2lkICpoYW5kbGUpCiB7Ci0Jc3RydWN0IHBw X2h3bWdyICAqaHdtZ3I7Ci0Jc3RydWN0IHBwX2luc3RhbmNlICpwcF9oYW5kbGUgPSAoc3RydWN0 IHBwX2luc3RhbmNlICopaGFuZGxlOworCXN0cnVjdCBwcF9od21nciAqaHdtZ3IgPSBoYW5kbGU7 CiAJaW50IHJldCA9IDA7CiAJdWludDMyX3QgbW9kZSA9IDA7CiAKLQlyZXQgPSBwcF9jaGVjayhw cF9oYW5kbGUpOworCXJldCA9IHBwX2NoZWNrKGh3bWdyKTsKIAogCWlmIChyZXQpCiAJCXJldHVy biByZXQ7CiAKLQlod21nciA9IHBwX2hhbmRsZS0+aHdtZ3I7Ci0KIAlpZiAoaHdtZ3ItPmh3bWdy X2Z1bmMtPmdldF9mYW5fY29udHJvbF9tb2RlID09IE5VTEwpIHsKIAkJcHJfaW5mbygiJXMgd2Fz IG5vdCBpbXBsZW1lbnRlZC5cbiIsIF9fZnVuY19fKTsKIAkJcmV0dXJuIDA7CiAJfQotCW11dGV4 X2xvY2soJnBwX2hhbmRsZS0+cHBfbG9jayk7CisJbXV0ZXhfbG9jaygmaHdtZ3ItPnNtdV9sb2Nr KTsKIAltb2RlID0gaHdtZ3ItPmh3bWdyX2Z1bmMtPmdldF9mYW5fY29udHJvbF9tb2RlKGh3bWdy KTsKLQltdXRleF91bmxvY2soJnBwX2hhbmRsZS0+cHBfbG9jayk7CisJbXV0ZXhfdW5sb2NrKCZo d21nci0+c211X2xvY2spOwogCXJldHVybiBtb2RlOwogfQogCiBzdGF0aWMgaW50IHBwX2RwbV9z ZXRfZmFuX3NwZWVkX3BlcmNlbnQodm9pZCAqaGFuZGxlLCB1aW50MzJfdCBwZXJjZW50KQogewot CXN0cnVjdCBwcF9od21nciAgKmh3bWdyOwotCXN0cnVjdCBwcF9pbnN0YW5jZSAqcHBfaGFuZGxl ID0gKHN0cnVjdCBwcF9pbnN0YW5jZSAqKWhhbmRsZTsKKwlzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdy ID0gaGFuZGxlOwogCWludCByZXQgPSAwOwogCi0JcmV0ID0gcHBfY2hlY2socHBfaGFuZGxlKTsK KwlyZXQgPSBwcF9jaGVjayhod21ncik7CiAKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCi0J aHdtZ3IgPSBwcF9oYW5kbGUtPmh3bWdyOwotCiAJaWYgKGh3bWdyLT5od21ncl9mdW5jLT5zZXRf ZmFuX3NwZWVkX3BlcmNlbnQgPT0gTlVMTCkgewogCQlwcl9pbmZvKCIlcyB3YXMgbm90IGltcGxl bWVudGVkLlxuIiwgX19mdW5jX18pOwogCQlyZXR1cm4gMDsKIAl9Ci0JbXV0ZXhfbG9jaygmcHBf aGFuZGxlLT5wcF9sb2NrKTsKKwltdXRleF9sb2NrKCZod21nci0+c211X2xvY2spOwogCXJldCA9 IGh3bWdyLT5od21ncl9mdW5jLT5zZXRfZmFuX3NwZWVkX3BlcmNlbnQoaHdtZ3IsIHBlcmNlbnQp OwotCW11dGV4X3VubG9jaygmcHBfaGFuZGxlLT5wcF9sb2NrKTsKKwltdXRleF91bmxvY2soJmh3 bWdyLT5zbXVfbG9jayk7CiAJcmV0dXJuIHJldDsKIH0KIAogc3RhdGljIGludCBwcF9kcG1fZ2V0 X2Zhbl9zcGVlZF9wZXJjZW50KHZvaWQgKmhhbmRsZSwgdWludDMyX3QgKnNwZWVkKQogewotCXN0 cnVjdCBwcF9od21nciAgKmh3bWdyOwotCXN0cnVjdCBwcF9pbnN0YW5jZSAqcHBfaGFuZGxlID0g KHN0cnVjdCBwcF9pbnN0YW5jZSAqKWhhbmRsZTsKKwlzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyID0g aGFuZGxlOwogCWludCByZXQgPSAwOwogCi0JcmV0ID0gcHBfY2hlY2socHBfaGFuZGxlKTsKKwly ZXQgPSBwcF9jaGVjayhod21ncik7CiAKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCi0JaHdt Z3IgPSBwcF9oYW5kbGUtPmh3bWdyOwotCiAJaWYgKGh3bWdyLT5od21ncl9mdW5jLT5nZXRfZmFu X3NwZWVkX3BlcmNlbnQgPT0gTlVMTCkgewogCQlwcl9pbmZvKCIlcyB3YXMgbm90IGltcGxlbWVu dGVkLlxuIiwgX19mdW5jX18pOwogCQlyZXR1cm4gMDsKIAl9CiAKLQltdXRleF9sb2NrKCZwcF9o YW5kbGUtPnBwX2xvY2spOworCW11dGV4X2xvY2soJmh3bWdyLT5zbXVfbG9jayk7CiAJcmV0ID0g aHdtZ3ItPmh3bWdyX2Z1bmMtPmdldF9mYW5fc3BlZWRfcGVyY2VudChod21nciwgc3BlZWQpOwot CW11dGV4X3VubG9jaygmcHBfaGFuZGxlLT5wcF9sb2NrKTsKKwltdXRleF91bmxvY2soJmh3bWdy LT5zbXVfbG9jayk7CiAJcmV0dXJuIHJldDsKIH0KIAogc3RhdGljIGludCBwcF9kcG1fZ2V0X2Zh bl9zcGVlZF9ycG0odm9pZCAqaGFuZGxlLCB1aW50MzJfdCAqcnBtKQogewotCXN0cnVjdCBwcF9o d21nciAqaHdtZ3I7Ci0Jc3RydWN0IHBwX2luc3RhbmNlICpwcF9oYW5kbGUgPSAoc3RydWN0IHBw X2luc3RhbmNlICopaGFuZGxlOworCXN0cnVjdCBwcF9od21nciAqaHdtZ3IgPSBoYW5kbGU7CiAJ aW50IHJldCA9IDA7CiAKLQlyZXQgPSBwcF9jaGVjayhwcF9oYW5kbGUpOworCXJldCA9IHBwX2No ZWNrKGh3bWdyKTsKIAogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKLQlod21nciA9IHBwX2hh bmRsZS0+aHdtZ3I7Ci0KIAlpZiAoaHdtZ3ItPmh3bWdyX2Z1bmMtPmdldF9mYW5fc3BlZWRfcnBt ID09IE5VTEwpCiAJCXJldHVybiAtRUlOVkFMOwogCi0JbXV0ZXhfbG9jaygmcHBfaGFuZGxlLT5w cF9sb2NrKTsKKwltdXRleF9sb2NrKCZod21nci0+c211X2xvY2spOwogCXJldCA9IGh3bWdyLT5o d21ncl9mdW5jLT5nZXRfZmFuX3NwZWVkX3JwbShod21nciwgcnBtKTsKLQltdXRleF91bmxvY2so JnBwX2hhbmRsZS0+cHBfbG9jayk7CisJbXV0ZXhfdW5sb2NrKCZod21nci0+c211X2xvY2spOwog CXJldHVybiByZXQ7CiB9CiAKIHN0YXRpYyBpbnQgcHBfZHBtX2dldF9wcF9udW1fc3RhdGVzKHZv aWQgKmhhbmRsZSwKIAkJc3RydWN0IHBwX3N0YXRlc19pbmZvICpkYXRhKQogewotCXN0cnVjdCBw cF9od21nciAqaHdtZ3I7CisJc3RydWN0IHBwX2h3bWdyICpod21nciA9IGhhbmRsZTsKIAlpbnQg aTsKLQlzdHJ1Y3QgcHBfaW5zdGFuY2UgKnBwX2hhbmRsZSA9IChzdHJ1Y3QgcHBfaW5zdGFuY2Ug KiloYW5kbGU7CiAJaW50IHJldCA9IDA7CiAKIAltZW1zZXQoZGF0YSwgMCwgc2l6ZW9mKCpkYXRh KSk7CiAKLQlyZXQgPSBwcF9jaGVjayhwcF9oYW5kbGUpOworCXJldCA9IHBwX2NoZWNrKGh3bWdy KTsKIAogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKLQlod21nciA9IHBwX2hhbmRsZS0+aHdt Z3I7Ci0KIAlpZiAoaHdtZ3ItPnBzID09IE5VTEwpCiAJCXJldHVybiAtRUlOVkFMOwogCi0JbXV0 ZXhfbG9jaygmcHBfaGFuZGxlLT5wcF9sb2NrKTsKKwltdXRleF9sb2NrKCZod21nci0+c211X2xv Y2spOwogCiAJZGF0YS0+bnVtcyA9IGh3bWdyLT5udW1fcHM7CiAKQEAgLTczNSw3MyArNjkyLDY4 IEBAIHN0YXRpYyBpbnQgcHBfZHBtX2dldF9wcF9udW1fc3RhdGVzKHZvaWQgKmhhbmRsZSwKIAkJ CQlkYXRhLT5zdGF0ZXNbaV0gPSBQT1dFUl9TVEFURV9UWVBFX0RFRkFVTFQ7CiAJCX0KIAl9Ci0J bXV0ZXhfdW5sb2NrKCZwcF9oYW5kbGUtPnBwX2xvY2spOworCW11dGV4X3VubG9jaygmaHdtZ3It PnNtdV9sb2NrKTsKIAlyZXR1cm4gMDsKIH0KIAogc3RhdGljIGludCBwcF9kcG1fZ2V0X3BwX3Rh YmxlKHZvaWQgKmhhbmRsZSwgY2hhciAqKnRhYmxlKQogewotCXN0cnVjdCBwcF9od21nciAqaHdt Z3I7Ci0Jc3RydWN0IHBwX2luc3RhbmNlICpwcF9oYW5kbGUgPSAoc3RydWN0IHBwX2luc3RhbmNl ICopaGFuZGxlOworCXN0cnVjdCBwcF9od21nciAqaHdtZ3IgPSBoYW5kbGU7CiAJaW50IHJldCA9 IDA7CiAJaW50IHNpemUgPSAwOwogCi0JcmV0ID0gcHBfY2hlY2socHBfaGFuZGxlKTsKKwlyZXQg PSBwcF9jaGVjayhod21ncik7CiAKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCi0JaHdtZ3Ig PSBwcF9oYW5kbGUtPmh3bWdyOwotCiAJaWYgKCFod21nci0+c29mdF9wcF90YWJsZSkKIAkJcmV0 dXJuIC1FSU5WQUw7CiAKLQltdXRleF9sb2NrKCZwcF9oYW5kbGUtPnBwX2xvY2spOworCW11dGV4 X2xvY2soJmh3bWdyLT5zbXVfbG9jayk7CiAJKnRhYmxlID0gKGNoYXIgKilod21nci0+c29mdF9w cF90YWJsZTsKIAlzaXplID0gaHdtZ3ItPnNvZnRfcHBfdGFibGVfc2l6ZTsKLQltdXRleF91bmxv Y2soJnBwX2hhbmRsZS0+cHBfbG9jayk7CisJbXV0ZXhfdW5sb2NrKCZod21nci0+c211X2xvY2sp OwogCXJldHVybiBzaXplOwogfQogCiBzdGF0aWMgaW50IGFtZF9wb3dlcnBsYXlfcmVzZXQodm9p ZCAqaGFuZGxlKQogewotCXN0cnVjdCBwcF9pbnN0YW5jZSAqaW5zdGFuY2UgPSAoc3RydWN0IHBw X2luc3RhbmNlICopaGFuZGxlOworCXN0cnVjdCBwcF9od21nciAqaHdtZ3IgPSBoYW5kbGU7CiAJ aW50IHJldDsKIAotCXJldCA9IHBwX2NoZWNrKGluc3RhbmNlKTsKKwlyZXQgPSBwcF9jaGVjayho d21ncik7CiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIAotCXJldCA9IHBwX2h3X2ZpbmkoaW5z dGFuY2UpOworCXJldCA9IHBwX2h3X2ZpbmkoaHdtZ3IpOwogCWlmIChyZXQpCiAJCXJldHVybiBy ZXQ7CiAKLQlyZXQgPSBod21ncl9od19pbml0KGluc3RhbmNlKTsKKwlyZXQgPSBod21ncl9od19p bml0KGh3bWdyKTsKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCi0JcmV0dXJuIGh3bWdyX2hh bmRsZV90YXNrKGluc3RhbmNlLCBBTURfUFBfVEFTS19DT01QTEVURV9JTklULCBOVUxMKTsKKwly ZXR1cm4gaHdtZ3JfaGFuZGxlX3Rhc2soaHdtZ3IsIEFNRF9QUF9UQVNLX0NPTVBMRVRFX0lOSVQs IE5VTEwpOwogfQogCiBzdGF0aWMgaW50IHBwX2RwbV9zZXRfcHBfdGFibGUodm9pZCAqaGFuZGxl LCBjb25zdCBjaGFyICpidWYsIHNpemVfdCBzaXplKQogewotCXN0cnVjdCBwcF9od21nciAqaHdt Z3I7Ci0Jc3RydWN0IHBwX2luc3RhbmNlICpwcF9oYW5kbGUgPSAoc3RydWN0IHBwX2luc3RhbmNl ICopaGFuZGxlOworCXN0cnVjdCBwcF9od21nciAqaHdtZ3IgPSBoYW5kbGU7CiAJaW50IHJldCA9 IDA7CiAKLQlyZXQgPSBwcF9jaGVjayhwcF9oYW5kbGUpOworCXJldCA9IHBwX2NoZWNrKGh3bWdy KTsKIAogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKLQlod21nciA9IHBwX2hhbmRsZS0+aHdt Z3I7Ci0JbXV0ZXhfbG9jaygmcHBfaGFuZGxlLT5wcF9sb2NrKTsKKwltdXRleF9sb2NrKCZod21n ci0+c211X2xvY2spOwogCWlmICghaHdtZ3ItPmhhcmRjb2RlX3BwX3RhYmxlKSB7CiAJCWh3bWdy LT5oYXJkY29kZV9wcF90YWJsZSA9IGttZW1kdXAoaHdtZ3ItPnNvZnRfcHBfdGFibGUsCiAJCQkJ CQkgICBod21nci0+c29mdF9wcF90YWJsZV9zaXplLAogCQkJCQkJICAgR0ZQX0tFUk5FTCk7CiAJ CWlmICghaHdtZ3ItPmhhcmRjb2RlX3BwX3RhYmxlKSB7Ci0JCQltdXRleF91bmxvY2soJnBwX2hh bmRsZS0+cHBfbG9jayk7CisJCQltdXRleF91bmxvY2soJmh3bWdyLT5zbXVfbG9jayk7CiAJCQly ZXR1cm4gLUVOT01FTTsKIAkJfQogCX0KQEAgLTgwOSw3ICs3NjEsNyBAQCBzdGF0aWMgaW50IHBw X2RwbV9zZXRfcHBfdGFibGUodm9pZCAqaGFuZGxlLCBjb25zdCBjaGFyICpidWYsIHNpemVfdCBz aXplKQogCW1lbWNweShod21nci0+aGFyZGNvZGVfcHBfdGFibGUsIGJ1Ziwgc2l6ZSk7CiAKIAlo d21nci0+c29mdF9wcF90YWJsZSA9IGh3bWdyLT5oYXJkY29kZV9wcF90YWJsZTsKLQltdXRleF91 bmxvY2soJnBwX2hhbmRsZS0+cHBfbG9jayk7CisJbXV0ZXhfdW5sb2NrKCZod21nci0+c211X2xv Y2spOwogCiAJcmV0ID0gYW1kX3Bvd2VycGxheV9yZXNldChoYW5kbGUpOwogCWlmIChyZXQpCkBA IC04MjcsMTYzICs3NzksMTQyIEBAIHN0YXRpYyBpbnQgcHBfZHBtX3NldF9wcF90YWJsZSh2b2lk ICpoYW5kbGUsIGNvbnN0IGNoYXIgKmJ1Ziwgc2l6ZV90IHNpemUpCiBzdGF0aWMgaW50IHBwX2Rw bV9mb3JjZV9jbG9ja19sZXZlbCh2b2lkICpoYW5kbGUsCiAJCWVudW0gcHBfY2xvY2tfdHlwZSB0 eXBlLCB1aW50MzJfdCBtYXNrKQogewotCXN0cnVjdCBwcF9od21nciAqaHdtZ3I7Ci0Jc3RydWN0 IHBwX2luc3RhbmNlICpwcF9oYW5kbGUgPSAoc3RydWN0IHBwX2luc3RhbmNlICopaGFuZGxlOwor CXN0cnVjdCBwcF9od21nciAqaHdtZ3IgPSBoYW5kbGU7CiAJaW50IHJldCA9IDA7CiAKLQlyZXQg PSBwcF9jaGVjayhwcF9oYW5kbGUpOworCXJldCA9IHBwX2NoZWNrKGh3bWdyKTsKIAogCWlmIChy ZXQpCiAJCXJldHVybiByZXQ7CiAKLQlod21nciA9IHBwX2hhbmRsZS0+aHdtZ3I7Ci0KIAlpZiAo aHdtZ3ItPmh3bWdyX2Z1bmMtPmZvcmNlX2Nsb2NrX2xldmVsID09IE5VTEwpIHsKIAkJcHJfaW5m bygiJXMgd2FzIG5vdCBpbXBsZW1lbnRlZC5cbiIsIF9fZnVuY19fKTsKIAkJcmV0dXJuIDA7CiAJ fQotCW11dGV4X2xvY2soJnBwX2hhbmRsZS0+cHBfbG9jayk7CisJbXV0ZXhfbG9jaygmaHdtZ3It PnNtdV9sb2NrKTsKIAlpZiAoaHdtZ3ItPmRwbV9sZXZlbCA9PSBBTURfRFBNX0ZPUkNFRF9MRVZF TF9NQU5VQUwpCiAJCXJldCA9IGh3bWdyLT5od21ncl9mdW5jLT5mb3JjZV9jbG9ja19sZXZlbCho d21nciwgdHlwZSwgbWFzayk7CiAJZWxzZQogCQlyZXQgPSAtRUlOVkFMOwotCW11dGV4X3VubG9j aygmcHBfaGFuZGxlLT5wcF9sb2NrKTsKKwltdXRleF91bmxvY2soJmh3bWdyLT5zbXVfbG9jayk7 CiAJcmV0dXJuIHJldDsKIH0KIAogc3RhdGljIGludCBwcF9kcG1fcHJpbnRfY2xvY2tfbGV2ZWxz KHZvaWQgKmhhbmRsZSwKIAkJZW51bSBwcF9jbG9ja190eXBlIHR5cGUsIGNoYXIgKmJ1ZikKIHsK LQlzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyOwotCXN0cnVjdCBwcF9pbnN0YW5jZSAqcHBfaGFuZGxl ID0gKHN0cnVjdCBwcF9pbnN0YW5jZSAqKWhhbmRsZTsKKwlzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdy ID0gaGFuZGxlOwogCWludCByZXQgPSAwOwogCi0JcmV0ID0gcHBfY2hlY2socHBfaGFuZGxlKTsK KwlyZXQgPSBwcF9jaGVjayhod21ncik7CiAKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCi0J aHdtZ3IgPSBwcF9oYW5kbGUtPmh3bWdyOwotCiAJaWYgKGh3bWdyLT5od21ncl9mdW5jLT5wcmlu dF9jbG9ja19sZXZlbHMgPT0gTlVMTCkgewogCQlwcl9pbmZvKCIlcyB3YXMgbm90IGltcGxlbWVu dGVkLlxuIiwgX19mdW5jX18pOwogCQlyZXR1cm4gMDsKIAl9Ci0JbXV0ZXhfbG9jaygmcHBfaGFu ZGxlLT5wcF9sb2NrKTsKKwltdXRleF9sb2NrKCZod21nci0+c211X2xvY2spOwogCXJldCA9IGh3 bWdyLT5od21ncl9mdW5jLT5wcmludF9jbG9ja19sZXZlbHMoaHdtZ3IsIHR5cGUsIGJ1Zik7Ci0J bXV0ZXhfdW5sb2NrKCZwcF9oYW5kbGUtPnBwX2xvY2spOworCW11dGV4X3VubG9jaygmaHdtZ3It PnNtdV9sb2NrKTsKIAlyZXR1cm4gcmV0OwogfQogCiBzdGF0aWMgaW50IHBwX2RwbV9nZXRfc2Ns a19vZCh2b2lkICpoYW5kbGUpCiB7Ci0Jc3RydWN0IHBwX2h3bWdyICpod21ncjsKLQlzdHJ1Y3Qg cHBfaW5zdGFuY2UgKnBwX2hhbmRsZSA9IChzdHJ1Y3QgcHBfaW5zdGFuY2UgKiloYW5kbGU7CisJ c3RydWN0IHBwX2h3bWdyICpod21nciA9IGhhbmRsZTsKIAlpbnQgcmV0ID0gMDsKIAotCXJldCA9 IHBwX2NoZWNrKHBwX2hhbmRsZSk7CisJcmV0ID0gcHBfY2hlY2soaHdtZ3IpOwogCiAJaWYgKHJl dCkKIAkJcmV0dXJuIHJldDsKIAotCWh3bWdyID0gcHBfaGFuZGxlLT5od21ncjsKLQogCWlmICho d21nci0+aHdtZ3JfZnVuYy0+Z2V0X3NjbGtfb2QgPT0gTlVMTCkgewogCQlwcl9pbmZvKCIlcyB3 YXMgbm90IGltcGxlbWVudGVkLlxuIiwgX19mdW5jX18pOwogCQlyZXR1cm4gMDsKIAl9Ci0JbXV0 ZXhfbG9jaygmcHBfaGFuZGxlLT5wcF9sb2NrKTsKKwltdXRleF9sb2NrKCZod21nci0+c211X2xv Y2spOwogCXJldCA9IGh3bWdyLT5od21ncl9mdW5jLT5nZXRfc2Nsa19vZChod21ncik7Ci0JbXV0 ZXhfdW5sb2NrKCZwcF9oYW5kbGUtPnBwX2xvY2spOworCW11dGV4X3VubG9jaygmaHdtZ3ItPnNt dV9sb2NrKTsKIAlyZXR1cm4gcmV0OwogfQogCiBzdGF0aWMgaW50IHBwX2RwbV9zZXRfc2Nsa19v ZCh2b2lkICpoYW5kbGUsIHVpbnQzMl90IHZhbHVlKQogewotCXN0cnVjdCBwcF9od21nciAqaHdt Z3I7Ci0Jc3RydWN0IHBwX2luc3RhbmNlICpwcF9oYW5kbGUgPSAoc3RydWN0IHBwX2luc3RhbmNl ICopaGFuZGxlOworCXN0cnVjdCBwcF9od21nciAqaHdtZ3IgPSBoYW5kbGU7CiAJaW50IHJldCA9 IDA7CiAKLQlyZXQgPSBwcF9jaGVjayhwcF9oYW5kbGUpOworCXJldCA9IHBwX2NoZWNrKGh3bWdy KTsKIAogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKLQlod21nciA9IHBwX2hhbmRsZS0+aHdt Z3I7Ci0KIAlpZiAoaHdtZ3ItPmh3bWdyX2Z1bmMtPnNldF9zY2xrX29kID09IE5VTEwpIHsKIAkJ cHJfaW5mbygiJXMgd2FzIG5vdCBpbXBsZW1lbnRlZC5cbiIsIF9fZnVuY19fKTsKIAkJcmV0dXJu IDA7CiAJfQogCi0JbXV0ZXhfbG9jaygmcHBfaGFuZGxlLT5wcF9sb2NrKTsKKwltdXRleF9sb2Nr KCZod21nci0+c211X2xvY2spOwogCXJldCA9IGh3bWdyLT5od21ncl9mdW5jLT5zZXRfc2Nsa19v ZChod21nciwgdmFsdWUpOwotCW11dGV4X3VubG9jaygmcHBfaGFuZGxlLT5wcF9sb2NrKTsKKwlt dXRleF91bmxvY2soJmh3bWdyLT5zbXVfbG9jayk7CiAJcmV0dXJuIHJldDsKIH0KIAogc3RhdGlj IGludCBwcF9kcG1fZ2V0X21jbGtfb2Qodm9pZCAqaGFuZGxlKQogewotCXN0cnVjdCBwcF9od21n ciAqaHdtZ3I7Ci0Jc3RydWN0IHBwX2luc3RhbmNlICpwcF9oYW5kbGUgPSAoc3RydWN0IHBwX2lu c3RhbmNlICopaGFuZGxlOworCXN0cnVjdCBwcF9od21nciAqaHdtZ3IgPSBoYW5kbGU7CiAJaW50 IHJldCA9IDA7CiAKLQlyZXQgPSBwcF9jaGVjayhwcF9oYW5kbGUpOworCXJldCA9IHBwX2NoZWNr KGh3bWdyKTsKIAogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKLQlod21nciA9IHBwX2hhbmRs ZS0+aHdtZ3I7Ci0KIAlpZiAoaHdtZ3ItPmh3bWdyX2Z1bmMtPmdldF9tY2xrX29kID09IE5VTEwp IHsKIAkJcHJfaW5mbygiJXMgd2FzIG5vdCBpbXBsZW1lbnRlZC5cbiIsIF9fZnVuY19fKTsKIAkJ cmV0dXJuIDA7CiAJfQotCW11dGV4X2xvY2soJnBwX2hhbmRsZS0+cHBfbG9jayk7CisJbXV0ZXhf bG9jaygmaHdtZ3ItPnNtdV9sb2NrKTsKIAlyZXQgPSBod21nci0+aHdtZ3JfZnVuYy0+Z2V0X21j bGtfb2QoaHdtZ3IpOwotCW11dGV4X3VubG9jaygmcHBfaGFuZGxlLT5wcF9sb2NrKTsKKwltdXRl eF91bmxvY2soJmh3bWdyLT5zbXVfbG9jayk7CiAJcmV0dXJuIHJldDsKIH0KIAogc3RhdGljIGlu dCBwcF9kcG1fc2V0X21jbGtfb2Qodm9pZCAqaGFuZGxlLCB1aW50MzJfdCB2YWx1ZSkKIHsKLQlz dHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyOwotCXN0cnVjdCBwcF9pbnN0YW5jZSAqcHBfaGFuZGxlID0g KHN0cnVjdCBwcF9pbnN0YW5jZSAqKWhhbmRsZTsKKwlzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyID0g aGFuZGxlOwogCWludCByZXQgPSAwOwogCi0JcmV0ID0gcHBfY2hlY2socHBfaGFuZGxlKTsKKwly ZXQgPSBwcF9jaGVjayhod21ncik7CiAKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCi0JaHdt Z3IgPSBwcF9oYW5kbGUtPmh3bWdyOwotCiAJaWYgKGh3bWdyLT5od21ncl9mdW5jLT5zZXRfbWNs a19vZCA9PSBOVUxMKSB7CiAJCXByX2luZm8oIiVzIHdhcyBub3QgaW1wbGVtZW50ZWQuXG4iLCBf X2Z1bmNfXyk7CiAJCXJldHVybiAwOwogCX0KLQltdXRleF9sb2NrKCZwcF9oYW5kbGUtPnBwX2xv Y2spOworCW11dGV4X2xvY2soJmh3bWdyLT5zbXVfbG9jayk7CiAJcmV0ID0gaHdtZ3ItPmh3bWdy X2Z1bmMtPnNldF9tY2xrX29kKGh3bWdyLCB2YWx1ZSk7Ci0JbXV0ZXhfdW5sb2NrKCZwcF9oYW5k bGUtPnBwX2xvY2spOworCW11dGV4X3VubG9jaygmaHdtZ3ItPnNtdV9sb2NrKTsKIAlyZXR1cm4g cmV0OwogfQogCiBzdGF0aWMgaW50IHBwX2RwbV9yZWFkX3NlbnNvcih2b2lkICpoYW5kbGUsIGlu dCBpZHgsCiAJCQkgICAgICB2b2lkICp2YWx1ZSwgaW50ICpzaXplKQogewotCXN0cnVjdCBwcF9o d21nciAqaHdtZ3I7Ci0Jc3RydWN0IHBwX2luc3RhbmNlICpwcF9oYW5kbGUgPSAoc3RydWN0IHBw X2luc3RhbmNlICopaGFuZGxlOworCXN0cnVjdCBwcF9od21nciAqaHdtZ3IgPSBoYW5kbGU7CiAJ aW50IHJldCA9IDA7CiAKLQlyZXQgPSBwcF9jaGVjayhwcF9oYW5kbGUpOworCXJldCA9IHBwX2No ZWNrKGh3bWdyKTsKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCiAJaWYgKHZhbHVlID09IE5V TEwpCiAJCXJldHVybiAtRUlOVkFMOwogCi0JaHdtZ3IgPSBwcF9oYW5kbGUtPmh3bWdyOwotCiAJ c3dpdGNoIChpZHgpIHsKIAljYXNlIEFNREdQVV9QUF9TRU5TT1JfU1RBQkxFX1BTVEFURV9TQ0xL OgogCQkqKCh1aW50MzJfdCAqKXZhbHVlKSA9IGh3bWdyLT5wc3RhdGVfc2NsazsKQEAgLTk5Miw5 ICs5MjMsOSBAQCBzdGF0aWMgaW50IHBwX2RwbV9yZWFkX3NlbnNvcih2b2lkICpoYW5kbGUsIGlu dCBpZHgsCiAJCSooKHVpbnQzMl90ICopdmFsdWUpID0gaHdtZ3ItPnBzdGF0ZV9tY2xrOwogCQly ZXR1cm4gMDsKIAlkZWZhdWx0OgotCQltdXRleF9sb2NrKCZwcF9oYW5kbGUtPnBwX2xvY2spOwor CQltdXRleF9sb2NrKCZod21nci0+c211X2xvY2spOwogCQlyZXQgPSBod21nci0+aHdtZ3JfZnVu Yy0+cmVhZF9zZW5zb3IoaHdtZ3IsIGlkeCwgdmFsdWUsIHNpemUpOwotCQltdXRleF91bmxvY2so JnBwX2hhbmRsZS0+cHBfbG9jayk7CisJCW11dGV4X3VubG9jaygmaHdtZ3ItPnNtdV9sb2NrKTsK IAkJcmV0dXJuIHJldDsKIAl9CiB9CkBAIC0xMDAyLDE3ICs5MzMsMTQgQEAgc3RhdGljIGludCBw cF9kcG1fcmVhZF9zZW5zb3Iodm9pZCAqaGFuZGxlLCBpbnQgaWR4LAogc3RhdGljIHN0cnVjdCBh bWRfdmNlX3N0YXRlKgogcHBfZHBtX2dldF92Y2VfY2xvY2tfc3RhdGUodm9pZCAqaGFuZGxlLCB1 bnNpZ25lZCBpZHgpCiB7Ci0Jc3RydWN0IHBwX2h3bWdyICpod21ncjsKLQlzdHJ1Y3QgcHBfaW5z dGFuY2UgKnBwX2hhbmRsZSA9IChzdHJ1Y3QgcHBfaW5zdGFuY2UgKiloYW5kbGU7CisJc3RydWN0 IHBwX2h3bWdyICpod21nciA9IGhhbmRsZTsKIAlpbnQgcmV0ID0gMDsKIAotCXJldCA9IHBwX2No ZWNrKHBwX2hhbmRsZSk7CisJcmV0ID0gcHBfY2hlY2soaHdtZ3IpOwogCiAJaWYgKHJldCkKIAkJ cmV0dXJuIE5VTEw7CiAKLQlod21nciA9IHBwX2hhbmRsZS0+aHdtZ3I7Ci0KIAlpZiAoaHdtZ3Ig JiYgaWR4IDwgaHdtZ3ItPm51bV92Y2Vfc3RhdGVfdGFibGVzKQogCQlyZXR1cm4gJmh3bWdyLT52 Y2Vfc3RhdGVzW2lkeF07CiAJcmV0dXJuIE5VTEw7CkBAIC0xMDIwLDE0ICs5NDgsMTEgQEAgc3Rh dGljIGludCBwcF9kcG1fcmVhZF9zZW5zb3Iodm9pZCAqaGFuZGxlLCBpbnQgaWR4LAogCiBzdGF0 aWMgaW50IHBwX2dldF9wb3dlcl9wcm9maWxlX21vZGUodm9pZCAqaGFuZGxlLCBjaGFyICpidWYp CiB7Ci0Jc3RydWN0IHBwX2h3bWdyICpod21ncjsKLQlzdHJ1Y3QgcHBfaW5zdGFuY2UgKnBwX2hh bmRsZSA9IChzdHJ1Y3QgcHBfaW5zdGFuY2UgKiloYW5kbGU7CisJc3RydWN0IHBwX2h3bWdyICpo d21nciA9IGhhbmRsZTsKIAotCWlmICghYnVmIHx8IHBwX2NoZWNrKHBwX2hhbmRsZSkpCisJaWYg KCFidWYgfHwgcHBfY2hlY2soaHdtZ3IpKQogCQlyZXR1cm4gLUVJTlZBTDsKIAotCWh3bWdyID0g cHBfaGFuZGxlLT5od21ncjsKLQogCWlmIChod21nci0+aHdtZ3JfZnVuYy0+Z2V0X3Bvd2VyX3By b2ZpbGVfbW9kZSA9PSBOVUxMKSB7CiAJCXByX2luZm8oIiVzIHdhcyBub3QgaW1wbGVtZW50ZWQu XG4iLCBfX2Z1bmNfXyk7CiAJCXJldHVybiBzbnByaW50ZihidWYsIFBBR0VfU0laRSwgIlxuIik7 CkBAIC0xMDM4LDM2ICs5NjMsMzAgQEAgc3RhdGljIGludCBwcF9nZXRfcG93ZXJfcHJvZmlsZV9t b2RlKHZvaWQgKmhhbmRsZSwgY2hhciAqYnVmKQogCiBzdGF0aWMgaW50IHBwX3NldF9wb3dlcl9w cm9maWxlX21vZGUodm9pZCAqaGFuZGxlLCBsb25nICppbnB1dCwgdWludDMyX3Qgc2l6ZSkKIHsK LQlzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyOwotCXN0cnVjdCBwcF9pbnN0YW5jZSAqcHBfaGFuZGxl ID0gKHN0cnVjdCBwcF9pbnN0YW5jZSAqKWhhbmRsZTsKKwlzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdy ID0gaGFuZGxlOwogCWludCByZXQgPSAtRUlOVkFMOwogCi0JaWYgKHBwX2NoZWNrKHBwX2hhbmRs ZSkpCisJaWYgKHBwX2NoZWNrKGh3bWdyKSkKIAkJcmV0dXJuIC1FSU5WQUw7CiAKLQlod21nciA9 IHBwX2hhbmRsZS0+aHdtZ3I7Ci0KIAlpZiAoaHdtZ3ItPmh3bWdyX2Z1bmMtPnNldF9wb3dlcl9w cm9maWxlX21vZGUgPT0gTlVMTCkgewogCQlwcl9pbmZvKCIlcyB3YXMgbm90IGltcGxlbWVudGVk LlxuIiwgX19mdW5jX18pOwogCQlyZXR1cm4gLUVJTlZBTDsKIAl9Ci0JbXV0ZXhfbG9jaygmcHBf aGFuZGxlLT5wcF9sb2NrKTsKKwltdXRleF9sb2NrKCZod21nci0+c211X2xvY2spOwogCWlmICho d21nci0+ZHBtX2xldmVsID09IEFNRF9EUE1fRk9SQ0VEX0xFVkVMX01BTlVBTCkKIAkJcmV0ID0g aHdtZ3ItPmh3bWdyX2Z1bmMtPnNldF9wb3dlcl9wcm9maWxlX21vZGUoaHdtZ3IsIGlucHV0LCBz aXplKTsKLQltdXRleF91bmxvY2soJnBwX2hhbmRsZS0+cHBfbG9jayk7CisJbXV0ZXhfdW5sb2Nr KCZod21nci0+c211X2xvY2spOwogCXJldHVybiByZXQ7CiB9CiAKIHN0YXRpYyBpbnQgcHBfb2Ru X2VkaXRfZHBtX3RhYmxlKHZvaWQgKmhhbmRsZSwgdWludDMyX3QgdHlwZSwgbG9uZyAqaW5wdXQs IHVpbnQzMl90IHNpemUpCiB7Ci0Jc3RydWN0IHBwX2h3bWdyICpod21ncjsKLQlzdHJ1Y3QgcHBf aW5zdGFuY2UgKnBwX2hhbmRsZSA9IChzdHJ1Y3QgcHBfaW5zdGFuY2UgKiloYW5kbGU7CisJc3Ry dWN0IHBwX2h3bWdyICpod21nciA9IGhhbmRsZTsKIAotCWlmIChwcF9jaGVjayhwcF9oYW5kbGUp KQorCWlmIChwcF9jaGVjayhod21ncikpCiAJCXJldHVybiAtRUlOVkFMOwogCi0JaHdtZ3IgPSBw cF9oYW5kbGUtPmh3bWdyOwotCiAJaWYgKGh3bWdyLT5od21ncl9mdW5jLT5vZG5fZWRpdF9kcG1f dGFibGUgPT0gTlVMTCkgewogCQlwcl9pbmZvKCIlcyB3YXMgbm90IGltcGxlbWVudGVkLlxuIiwg X19mdW5jX18pOwogCQlyZXR1cm4gLUVJTlZBTDsKQEAgLTEwNzksMTYgKzk5OCwxMyBAQCBzdGF0 aWMgaW50IHBwX29kbl9lZGl0X2RwbV90YWJsZSh2b2lkICpoYW5kbGUsIHVpbnQzMl90IHR5cGUs IGxvbmcgKmlucHV0LCB1aW50Mwogc3RhdGljIGludCBwcF9kcG1fc3dpdGNoX3Bvd2VyX3Byb2Zp bGUodm9pZCAqaGFuZGxlLAogCQllbnVtIFBQX1NNQ19QT1dFUl9QUk9GSUxFIHR5cGUsIGJvb2wg ZW4pCiB7Ci0Jc3RydWN0IHBwX2h3bWdyICpod21ncjsKLQlzdHJ1Y3QgcHBfaW5zdGFuY2UgKnBw X2hhbmRsZSA9IChzdHJ1Y3QgcHBfaW5zdGFuY2UgKiloYW5kbGU7CisJc3RydWN0IHBwX2h3bWdy ICpod21nciA9IGhhbmRsZTsKIAlsb25nIHdvcmtsb2FkOwogCXVpbnQzMl90IGluZGV4OwogCi0J aWYgKHBwX2NoZWNrKHBwX2hhbmRsZSkpCisJaWYgKHBwX2NoZWNrKGh3bWdyKSkKIAkJcmV0dXJu IC1FSU5WQUw7CiAKLQlod21nciA9IHBwX2hhbmRsZS0+aHdtZ3I7Ci0KIAlpZiAoaHdtZ3ItPmh3 bWdyX2Z1bmMtPnNldF9wb3dlcl9wcm9maWxlX21vZGUgPT0gTlVMTCkgewogCQlwcl9pbmZvKCIl cyB3YXMgbm90IGltcGxlbWVudGVkLlxuIiwgX19mdW5jX18pOwogCQlyZXR1cm4gLUVJTlZBTDsK QEAgLTEwOTcsNyArMTAxMyw3IEBAIHN0YXRpYyBpbnQgcHBfZHBtX3N3aXRjaF9wb3dlcl9wcm9m aWxlKHZvaWQgKmhhbmRsZSwKIAlpZiAoISh0eXBlIDwgUFBfU01DX1BPV0VSX1BST0ZJTEVfQ1VT VE9NKSkKIAkJcmV0dXJuIC1FSU5WQUw7CiAKLQltdXRleF9sb2NrKCZwcF9oYW5kbGUtPnBwX2xv Y2spOworCW11dGV4X2xvY2soJmh3bWdyLT5zbXVfbG9jayk7CiAKIAlpZiAoIWVuKSB7CiAJCWh3 bWdyLT53b3JrbG9hZF9tYXNrICY9IH4oMSA8PCBod21nci0+d29ya2xvYWRfcHJvcml0eVt0eXBl XSk7CkBAIC0xMTEzLDcgKzEwMjksNyBAQCBzdGF0aWMgaW50IHBwX2RwbV9zd2l0Y2hfcG93ZXJf cHJvZmlsZSh2b2lkICpoYW5kbGUsCiAKIAlpZiAoaHdtZ3ItPmRwbV9sZXZlbCAhPSBBTURfRFBN X0ZPUkNFRF9MRVZFTF9NQU5VQUwpCiAJCWh3bWdyLT5od21ncl9mdW5jLT5zZXRfcG93ZXJfcHJv ZmlsZV9tb2RlKGh3bWdyLCAmd29ya2xvYWQsIDApOwotCW11dGV4X3VubG9jaygmcHBfaGFuZGxl LT5wcF9sb2NrKTsKKwltdXRleF91bmxvY2soJmh3bWdyLT5zbXVfbG9jayk7CiAKIAlyZXR1cm4g MDsKIH0KQEAgLTExMjUsNDYgKzEwNDEsNDAgQEAgc3RhdGljIGludCBwcF9kcG1fbm90aWZ5X3Nt dV9tZW1vcnlfaW5mbyh2b2lkICpoYW5kbGUsCiAJCQkJCXVpbnQzMl90IG1jX2FkZHJfaGksCiAJ CQkJCXVpbnQzMl90IHNpemUpCiB7Ci0Jc3RydWN0IHBwX2h3bWdyICAqaHdtZ3I7Ci0Jc3RydWN0 IHBwX2luc3RhbmNlICpwcF9oYW5kbGUgPSAoc3RydWN0IHBwX2luc3RhbmNlICopaGFuZGxlOwor CXN0cnVjdCBwcF9od21nciAqaHdtZ3IgPSBoYW5kbGU7CiAJaW50IHJldCA9IDA7CiAKLQlyZXQg PSBwcF9jaGVjayhwcF9oYW5kbGUpOworCXJldCA9IHBwX2NoZWNrKGh3bWdyKTsKIAogCWlmIChy ZXQpCiAJCXJldHVybiByZXQ7CiAKLQlod21nciA9IHBwX2hhbmRsZS0+aHdtZ3I7Ci0KIAlpZiAo aHdtZ3ItPmh3bWdyX2Z1bmMtPm5vdGlmeV9jYWNfYnVmZmVyX2luZm8gPT0gTlVMTCkgewogCQlw cl9pbmZvKCIlcyB3YXMgbm90IGltcGxlbWVudGVkLlxuIiwgX19mdW5jX18pOwogCQlyZXR1cm4g LUVJTlZBTDsKIAl9CiAKLQltdXRleF9sb2NrKCZwcF9oYW5kbGUtPnBwX2xvY2spOworCW11dGV4 X2xvY2soJmh3bWdyLT5zbXVfbG9jayk7CiAKIAlyZXQgPSBod21nci0+aHdtZ3JfZnVuYy0+bm90 aWZ5X2NhY19idWZmZXJfaW5mbyhod21nciwgdmlydHVhbF9hZGRyX2xvdywKIAkJCQkJdmlydHVh bF9hZGRyX2hpLCBtY19hZGRyX2xvdywgbWNfYWRkcl9oaSwKIAkJCQkJc2l6ZSk7CiAKLQltdXRl eF91bmxvY2soJnBwX2hhbmRsZS0+cHBfbG9jayk7CisJbXV0ZXhfdW5sb2NrKCZod21nci0+c211 X2xvY2spOwogCiAJcmV0dXJuIHJldDsKIH0KIAogc3RhdGljIGludCBwcF9zZXRfcG93ZXJfbGlt aXQodm9pZCAqaGFuZGxlLCB1aW50MzJfdCBsaW1pdCkKIHsKLQlzdHJ1Y3QgcHBfaHdtZ3IgKmh3 bWdyOwotCXN0cnVjdCBwcF9pbnN0YW5jZSAqcHBfaGFuZGxlID0gKHN0cnVjdCBwcF9pbnN0YW5j ZSAqKWhhbmRsZTsKKwlzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyID0gaGFuZGxlOwogCWludCByZXQg PSAwOwogCi0JcmV0ID0gcHBfY2hlY2socHBfaGFuZGxlKTsKKwlyZXQgPSBwcF9jaGVjayhod21n cik7CiAKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCi0JaHdtZ3IgPSBwcF9oYW5kbGUtPmh3 bWdyOwotCiAJaWYgKGh3bWdyLT5od21ncl9mdW5jLT5zZXRfcG93ZXJfbGltaXQgPT0gTlVMTCkg ewogCQlwcl9pbmZvKCIlcyB3YXMgbm90IGltcGxlbWVudGVkLlxuIiwgX19mdW5jX18pOwogCQly ZXR1cm4gLUVJTlZBTDsKQEAgLTExNzYsMjAgKzEwODYsMTkgQEAgc3RhdGljIGludCBwcF9zZXRf cG93ZXJfbGltaXQodm9pZCAqaGFuZGxlLCB1aW50MzJfdCBsaW1pdCkKIAlpZiAobGltaXQgPiBo d21nci0+ZGVmYXVsdF9wb3dlcl9saW1pdCkKIAkJcmV0dXJuIC1FSU5WQUw7CiAKLQltdXRleF9s b2NrKCZwcF9oYW5kbGUtPnBwX2xvY2spOworCW11dGV4X2xvY2soJmh3bWdyLT5zbXVfbG9jayk7 CiAJaHdtZ3ItPmh3bWdyX2Z1bmMtPnNldF9wb3dlcl9saW1pdChod21nciwgbGltaXQpOwogCWh3 bWdyLT5wb3dlcl9saW1pdCA9IGxpbWl0OwotCW11dGV4X3VubG9jaygmcHBfaGFuZGxlLT5wcF9s b2NrKTsKKwltdXRleF91bmxvY2soJmh3bWdyLT5zbXVfbG9jayk7CiAJcmV0dXJuIHJldDsKIH0K IAogc3RhdGljIGludCBwcF9nZXRfcG93ZXJfbGltaXQodm9pZCAqaGFuZGxlLCB1aW50MzJfdCAq bGltaXQsIGJvb2wgZGVmYXVsdF9saW1pdCkKIHsKLQlzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyOwot CXN0cnVjdCBwcF9pbnN0YW5jZSAqcHBfaGFuZGxlID0gKHN0cnVjdCBwcF9pbnN0YW5jZSAqKWhh bmRsZTsKKwlzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyID0gaGFuZGxlOwogCWludCByZXQgPSAwOwog Ci0JcmV0ID0gcHBfY2hlY2socHBfaGFuZGxlKTsKKwlyZXQgPSBwcF9jaGVjayhod21ncik7CiAK IAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwpAQCAtMTE5NywxNiArMTEwNiwxNCBAQCBzdGF0aWMg aW50IHBwX2dldF9wb3dlcl9saW1pdCh2b2lkICpoYW5kbGUsIHVpbnQzMl90ICpsaW1pdCwgYm9v bCBkZWZhdWx0X2xpbWl0KQogCWlmIChsaW1pdCA9PSBOVUxMKQogCQlyZXR1cm4gLUVJTlZBTDsK IAotCWh3bWdyID0gcHBfaGFuZGxlLT5od21ncjsKLQotCW11dGV4X2xvY2soJnBwX2hhbmRsZS0+ cHBfbG9jayk7CisJbXV0ZXhfbG9jaygmaHdtZ3ItPnNtdV9sb2NrKTsKIAogCWlmIChkZWZhdWx0 X2xpbWl0KQogCQkqbGltaXQgPSBod21nci0+ZGVmYXVsdF9wb3dlcl9saW1pdDsKIAllbHNlCiAJ CSpsaW1pdCA9IGh3bWdyLT5wb3dlcl9saW1pdDsKIAotCW11dGV4X3VubG9jaygmcHBfaGFuZGxl LT5wcF9sb2NrKTsKKwltdXRleF91bmxvY2soJmh3bWdyLT5zbXVfbG9jayk7CiAKIAlyZXR1cm4g cmV0OwogfQpAQCAtMTIxNCw0MiArMTEyMSwzNyBAQCBzdGF0aWMgaW50IHBwX2dldF9wb3dlcl9s aW1pdCh2b2lkICpoYW5kbGUsIHVpbnQzMl90ICpsaW1pdCwgYm9vbCBkZWZhdWx0X2xpbWl0KQog c3RhdGljIGludCBwcF9kaXNwbGF5X2NvbmZpZ3VyYXRpb25fY2hhbmdlKHZvaWQgKmhhbmRsZSwK IAljb25zdCBzdHJ1Y3QgYW1kX3BwX2Rpc3BsYXlfY29uZmlndXJhdGlvbiAqZGlzcGxheV9jb25m aWcpCiB7Ci0Jc3RydWN0IHBwX2h3bWdyICAqaHdtZ3I7Ci0Jc3RydWN0IHBwX2luc3RhbmNlICpw cF9oYW5kbGUgPSAoc3RydWN0IHBwX2luc3RhbmNlICopaGFuZGxlOworCXN0cnVjdCBwcF9od21n ciAqaHdtZ3IgPSBoYW5kbGU7CiAJaW50IHJldCA9IDA7CiAKLQlyZXQgPSBwcF9jaGVjayhwcF9o YW5kbGUpOworCXJldCA9IHBwX2NoZWNrKGh3bWdyKTsKIAogCWlmIChyZXQpCiAJCXJldHVybiBy ZXQ7CiAKLQlod21nciA9IHBwX2hhbmRsZS0+aHdtZ3I7Ci0JbXV0ZXhfbG9jaygmcHBfaGFuZGxl LT5wcF9sb2NrKTsKKwltdXRleF9sb2NrKCZod21nci0+c211X2xvY2spOwogCXBobV9zdG9yZV9k YWxfY29uZmlndXJhdGlvbl9kYXRhKGh3bWdyLCBkaXNwbGF5X2NvbmZpZyk7Ci0JbXV0ZXhfdW5s b2NrKCZwcF9oYW5kbGUtPnBwX2xvY2spOworCW11dGV4X3VubG9jaygmaHdtZ3ItPnNtdV9sb2Nr KTsKIAlyZXR1cm4gMDsKIH0KIAogc3RhdGljIGludCBwcF9nZXRfZGlzcGxheV9wb3dlcl9sZXZl bCh2b2lkICpoYW5kbGUsCiAJCXN0cnVjdCBhbWRfcHBfc2ltcGxlX2Nsb2NrX2luZm8gKm91dHB1 dCkKIHsKLQlzdHJ1Y3QgcHBfaHdtZ3IgICpod21ncjsKLQlzdHJ1Y3QgcHBfaW5zdGFuY2UgKnBw X2hhbmRsZSA9IChzdHJ1Y3QgcHBfaW5zdGFuY2UgKiloYW5kbGU7CisJc3RydWN0IHBwX2h3bWdy ICpod21nciA9IGhhbmRsZTsKIAlpbnQgcmV0ID0gMDsKIAotCXJldCA9IHBwX2NoZWNrKHBwX2hh bmRsZSk7CisJcmV0ID0gcHBfY2hlY2soaHdtZ3IpOwogCiAJaWYgKHJldCkKIAkJcmV0dXJuIHJl dDsKIAotCWh3bWdyID0gcHBfaGFuZGxlLT5od21ncjsKLQogCWlmIChvdXRwdXQgPT0gTlVMTCkK IAkJcmV0dXJuIC1FSU5WQUw7CiAKLQltdXRleF9sb2NrKCZwcF9oYW5kbGUtPnBwX2xvY2spOwor CW11dGV4X2xvY2soJmh3bWdyLT5zbXVfbG9jayk7CiAJcmV0ID0gcGhtX2dldF9kYWxfcG93ZXJf bGV2ZWwoaHdtZ3IsIG91dHB1dCk7Ci0JbXV0ZXhfdW5sb2NrKCZwcF9oYW5kbGUtPnBwX2xvY2sp OworCW11dGV4X3VubG9jaygmaHdtZ3ItPnNtdV9sb2NrKTsKIAlyZXR1cm4gcmV0OwogfQogCkBA IC0xMjU4LDE4ICsxMTYwLDE1IEBAIHN0YXRpYyBpbnQgcHBfZ2V0X2N1cnJlbnRfY2xvY2tzKHZv aWQgKmhhbmRsZSwKIHsKIAlzdHJ1Y3QgYW1kX3BwX3NpbXBsZV9jbG9ja19pbmZvIHNpbXBsZV9j bG9ja3M7CiAJc3RydWN0IHBwX2Nsb2NrX2luZm8gaHdfY2xvY2tzOwotCXN0cnVjdCBwcF9od21n ciAgKmh3bWdyOwotCXN0cnVjdCBwcF9pbnN0YW5jZSAqcHBfaGFuZGxlID0gKHN0cnVjdCBwcF9p bnN0YW5jZSAqKWhhbmRsZTsKKwlzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyID0gaGFuZGxlOwogCWlu dCByZXQgPSAwOwogCi0JcmV0ID0gcHBfY2hlY2socHBfaGFuZGxlKTsKKwlyZXQgPSBwcF9jaGVj ayhod21ncik7CiAKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCi0JaHdtZ3IgPSBwcF9oYW5k bGUtPmh3bWdyOwotCi0JbXV0ZXhfbG9jaygmcHBfaGFuZGxlLT5wcF9sb2NrKTsKKwltdXRleF9s b2NrKCZod21nci0+c211X2xvY2spOwogCiAJcGhtX2dldF9kYWxfcG93ZXJfbGV2ZWwoaHdtZ3Is ICZzaW1wbGVfY2xvY2tzKTsKIApAQCAtMTI4Myw3ICsxMTgyLDcgQEAgc3RhdGljIGludCBwcF9n ZXRfY3VycmVudF9jbG9ja3Modm9pZCAqaGFuZGxlLAogCiAJaWYgKHJldCkgewogCQlwcl9pbmZv KCJFcnJvciBpbiBwaG1fZ2V0X2Nsb2NrX2luZm8gXG4iKTsKLQkJbXV0ZXhfdW5sb2NrKCZwcF9o YW5kbGUtPnBwX2xvY2spOworCQltdXRleF91bmxvY2soJmh3bWdyLT5zbXVfbG9jayk7CiAJCXJl dHVybiAtRUlOVkFMOwogCX0KIApAQCAtMTMwMywyOSArMTIwMiwyNiBAQCBzdGF0aWMgaW50IHBw X2dldF9jdXJyZW50X2Nsb2Nrcyh2b2lkICpoYW5kbGUsCiAJCWNsb2Nrcy0+bWF4X2VuZ2luZV9j bG9ja19pbl9zciA9IGh3X2Nsb2Nrcy5tYXhfZW5nX2NsazsKIAkJY2xvY2tzLT5taW5fZW5naW5l X2Nsb2NrX2luX3NyID0gaHdfY2xvY2tzLm1pbl9lbmdfY2xrOwogCX0KLQltdXRleF91bmxvY2so JnBwX2hhbmRsZS0+cHBfbG9jayk7CisJbXV0ZXhfdW5sb2NrKCZod21nci0+c211X2xvY2spOwog CXJldHVybiAwOwogfQogCiBzdGF0aWMgaW50IHBwX2dldF9jbG9ja19ieV90eXBlKHZvaWQgKmhh bmRsZSwgZW51bSBhbWRfcHBfY2xvY2tfdHlwZSB0eXBlLCBzdHJ1Y3QgYW1kX3BwX2Nsb2NrcyAq Y2xvY2tzKQogewotCXN0cnVjdCBwcF9od21nciAgKmh3bWdyOwotCXN0cnVjdCBwcF9pbnN0YW5j ZSAqcHBfaGFuZGxlID0gKHN0cnVjdCBwcF9pbnN0YW5jZSAqKWhhbmRsZTsKKwlzdHJ1Y3QgcHBf aHdtZ3IgKmh3bWdyID0gaGFuZGxlOwogCWludCByZXQgPSAwOwogCi0JcmV0ID0gcHBfY2hlY2so cHBfaGFuZGxlKTsKKwlyZXQgPSBwcF9jaGVjayhod21ncik7CiAKIAlpZiAocmV0KQogCQlyZXR1 cm4gcmV0OwogCi0JaHdtZ3IgPSBwcF9oYW5kbGUtPmh3bWdyOwotCiAJaWYgKGNsb2NrcyA9PSBO VUxMKQogCQlyZXR1cm4gLUVJTlZBTDsKIAotCW11dGV4X2xvY2soJnBwX2hhbmRsZS0+cHBfbG9j ayk7CisJbXV0ZXhfbG9jaygmaHdtZ3ItPnNtdV9sb2NrKTsKIAlyZXQgPSBwaG1fZ2V0X2Nsb2Nr X2J5X3R5cGUoaHdtZ3IsIHR5cGUsIGNsb2Nrcyk7Ci0JbXV0ZXhfdW5sb2NrKCZwcF9oYW5kbGUt PnBwX2xvY2spOworCW11dGV4X3VubG9jaygmaHdtZ3ItPnNtdV9sb2NrKTsKIAlyZXR1cm4gcmV0 OwogfQogCkBAIC0xMzMzLDIxICsxMjI5LDE5IEBAIHN0YXRpYyBpbnQgcHBfZ2V0X2Nsb2NrX2J5 X3R5cGVfd2l0aF9sYXRlbmN5KHZvaWQgKmhhbmRsZSwKIAkJZW51bSBhbWRfcHBfY2xvY2tfdHlw ZSB0eXBlLAogCQlzdHJ1Y3QgcHBfY2xvY2tfbGV2ZWxzX3dpdGhfbGF0ZW5jeSAqY2xvY2tzKQog ewotCXN0cnVjdCBwcF9od21nciAqaHdtZ3I7Ci0Jc3RydWN0IHBwX2luc3RhbmNlICpwcF9oYW5k bGUgPSAoc3RydWN0IHBwX2luc3RhbmNlICopaGFuZGxlOworCXN0cnVjdCBwcF9od21nciAqaHdt Z3IgPSBoYW5kbGU7CiAJaW50IHJldCA9IDA7CiAKLQlyZXQgPSBwcF9jaGVjayhwcF9oYW5kbGUp OworCXJldCA9IHBwX2NoZWNrKGh3bWdyKTsKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCiAJ aWYgKCFjbG9ja3MpCiAJCXJldHVybiAtRUlOVkFMOwogCi0JbXV0ZXhfbG9jaygmcHBfaGFuZGxl LT5wcF9sb2NrKTsKLQlod21nciA9ICgoc3RydWN0IHBwX2luc3RhbmNlICopaGFuZGxlKS0+aHdt Z3I7CisJbXV0ZXhfbG9jaygmaHdtZ3ItPnNtdV9sb2NrKTsKIAlyZXQgPSBwaG1fZ2V0X2Nsb2Nr X2J5X3R5cGVfd2l0aF9sYXRlbmN5KGh3bWdyLCB0eXBlLCBjbG9ja3MpOwotCW11dGV4X3VubG9j aygmcHBfaGFuZGxlLT5wcF9sb2NrKTsKKwltdXRleF91bmxvY2soJmh3bWdyLT5zbXVfbG9jayk7 CiAJcmV0dXJuIHJldDsKIH0KIApAQCAtMTM1NSw0NyArMTI0OSw0MSBAQCBzdGF0aWMgaW50IHBw X2dldF9jbG9ja19ieV90eXBlX3dpdGhfdm9sdGFnZSh2b2lkICpoYW5kbGUsCiAJCWVudW0gYW1k X3BwX2Nsb2NrX3R5cGUgdHlwZSwKIAkJc3RydWN0IHBwX2Nsb2NrX2xldmVsc193aXRoX3ZvbHRh Z2UgKmNsb2NrcykKIHsKLQlzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyOwotCXN0cnVjdCBwcF9pbnN0 YW5jZSAqcHBfaGFuZGxlID0gKHN0cnVjdCBwcF9pbnN0YW5jZSAqKWhhbmRsZTsKKwlzdHJ1Y3Qg cHBfaHdtZ3IgKmh3bWdyID0gaGFuZGxlOwogCWludCByZXQgPSAwOwogCi0JcmV0ID0gcHBfY2hl Y2socHBfaGFuZGxlKTsKKwlyZXQgPSBwcF9jaGVjayhod21ncik7CiAJaWYgKHJldCkKIAkJcmV0 dXJuIHJldDsKIAogCWlmICghY2xvY2tzKQogCQlyZXR1cm4gLUVJTlZBTDsKIAotCWh3bWdyID0g KChzdHJ1Y3QgcHBfaW5zdGFuY2UgKiloYW5kbGUpLT5od21ncjsKLQotCW11dGV4X2xvY2soJnBw X2hhbmRsZS0+cHBfbG9jayk7CisJbXV0ZXhfbG9jaygmaHdtZ3ItPnNtdV9sb2NrKTsKIAogCXJl dCA9IHBobV9nZXRfY2xvY2tfYnlfdHlwZV93aXRoX3ZvbHRhZ2UoaHdtZ3IsIHR5cGUsIGNsb2Nr cyk7CiAKLQltdXRleF91bmxvY2soJnBwX2hhbmRsZS0+cHBfbG9jayk7CisJbXV0ZXhfdW5sb2Nr KCZod21nci0+c211X2xvY2spOwogCXJldHVybiByZXQ7CiB9CiAKIHN0YXRpYyBpbnQgcHBfc2V0 X3dhdGVybWFya3NfZm9yX2Nsb2Nrc19yYW5nZXModm9pZCAqaGFuZGxlLAogCQlzdHJ1Y3QgcHBf d21fc2V0c193aXRoX2Nsb2NrX3Jhbmdlc19zb2MxNSAqd21fd2l0aF9jbG9ja19yYW5nZXMpCiB7 Ci0Jc3RydWN0IHBwX2h3bWdyICpod21ncjsKLQlzdHJ1Y3QgcHBfaW5zdGFuY2UgKnBwX2hhbmRs ZSA9IChzdHJ1Y3QgcHBfaW5zdGFuY2UgKiloYW5kbGU7CisJc3RydWN0IHBwX2h3bWdyICpod21n ciA9IGhhbmRsZTsKIAlpbnQgcmV0ID0gMDsKIAotCXJldCA9IHBwX2NoZWNrKHBwX2hhbmRsZSk7 CisJcmV0ID0gcHBfY2hlY2soaHdtZ3IpOwogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKIAlp ZiAoIXdtX3dpdGhfY2xvY2tfcmFuZ2VzKQogCQlyZXR1cm4gLUVJTlZBTDsKIAotCWh3bWdyID0g KChzdHJ1Y3QgcHBfaW5zdGFuY2UgKiloYW5kbGUpLT5od21ncjsKLQotCW11dGV4X2xvY2soJnBw X2hhbmRsZS0+cHBfbG9jayk7CisJbXV0ZXhfbG9jaygmaHdtZ3ItPnNtdV9sb2NrKTsKIAlyZXQg PSBwaG1fc2V0X3dhdGVybWFya3NfZm9yX2Nsb2Nrc19yYW5nZXMoaHdtZ3IsCiAJCQl3bV93aXRo X2Nsb2NrX3Jhbmdlcyk7Ci0JbXV0ZXhfdW5sb2NrKCZwcF9oYW5kbGUtPnBwX2xvY2spOworCW11 dGV4X3VubG9jaygmaHdtZ3ItPnNtdV9sb2NrKTsKIAogCXJldHVybiByZXQ7CiB9CkBAIC0xNDAz LDIyICsxMjkxLDE5IEBAIHN0YXRpYyBpbnQgcHBfc2V0X3dhdGVybWFya3NfZm9yX2Nsb2Nrc19y YW5nZXModm9pZCAqaGFuZGxlLAogc3RhdGljIGludCBwcF9kaXNwbGF5X2Nsb2NrX3ZvbHRhZ2Vf cmVxdWVzdCh2b2lkICpoYW5kbGUsCiAJCXN0cnVjdCBwcF9kaXNwbGF5X2Nsb2NrX3JlcXVlc3Qg KmNsb2NrKQogewotCXN0cnVjdCBwcF9od21nciAqaHdtZ3I7Ci0Jc3RydWN0IHBwX2luc3RhbmNl ICpwcF9oYW5kbGUgPSAoc3RydWN0IHBwX2luc3RhbmNlICopaGFuZGxlOworCXN0cnVjdCBwcF9o d21nciAqaHdtZ3IgPSBoYW5kbGU7CiAJaW50IHJldCA9IDA7CiAKLQlyZXQgPSBwcF9jaGVjayhw cF9oYW5kbGUpOworCXJldCA9IHBwX2NoZWNrKGh3bWdyKTsKIAlpZiAocmV0KQogCQlyZXR1cm4g cmV0OwogCiAJaWYgKCFjbG9jaykKIAkJcmV0dXJuIC1FSU5WQUw7CiAKLQlod21nciA9ICgoc3Ry dWN0IHBwX2luc3RhbmNlICopaGFuZGxlKS0+aHdtZ3I7Ci0KLQltdXRleF9sb2NrKCZwcF9oYW5k bGUtPnBwX2xvY2spOworCW11dGV4X2xvY2soJmh3bWdyLT5zbXVfbG9jayk7CiAJcmV0ID0gcGht X2Rpc3BsYXlfY2xvY2tfdm9sdGFnZV9yZXF1ZXN0KGh3bWdyLCBjbG9jayk7Ci0JbXV0ZXhfdW5s b2NrKCZwcF9oYW5kbGUtPnBwX2xvY2spOworCW11dGV4X3VubG9jaygmaHdtZ3ItPnNtdV9sb2Nr KTsKIAogCXJldHVybiByZXQ7CiB9CkBAIC0xNDI2LDQyICsxMzExLDM2IEBAIHN0YXRpYyBpbnQg cHBfZGlzcGxheV9jbG9ja192b2x0YWdlX3JlcXVlc3Qodm9pZCAqaGFuZGxlLAogc3RhdGljIGlu dCBwcF9nZXRfZGlzcGxheV9tb2RlX3ZhbGlkYXRpb25fY2xvY2tzKHZvaWQgKmhhbmRsZSwKIAkJ c3RydWN0IGFtZF9wcF9zaW1wbGVfY2xvY2tfaW5mbyAqY2xvY2tzKQogewotCXN0cnVjdCBwcF9o d21nciAgKmh3bWdyOwotCXN0cnVjdCBwcF9pbnN0YW5jZSAqcHBfaGFuZGxlID0gKHN0cnVjdCBw cF9pbnN0YW5jZSAqKWhhbmRsZTsKKwlzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyID0gaGFuZGxlOwog CWludCByZXQgPSAwOwogCi0JcmV0ID0gcHBfY2hlY2socHBfaGFuZGxlKTsKKwlyZXQgPSBwcF9j aGVjayhod21ncik7CiAKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCi0JaHdtZ3IgPSBwcF9o YW5kbGUtPmh3bWdyOwotCiAJaWYgKGNsb2NrcyA9PSBOVUxMKQogCQlyZXR1cm4gLUVJTlZBTDsK IAotCW11dGV4X2xvY2soJnBwX2hhbmRsZS0+cHBfbG9jayk7CisJbXV0ZXhfbG9jaygmaHdtZ3It PnNtdV9sb2NrKTsKIAogCWlmIChwaG1fY2FwX2VuYWJsZWQoaHdtZ3ItPnBsYXRmb3JtX2Rlc2Ny aXB0b3IucGxhdGZvcm1DYXBzLCBQSE1fUGxhdGZvcm1DYXBzX0R5bmFtaWNQYXRjaFBvd2VyU3Rh dGUpKQogCQlyZXQgPSBwaG1fZ2V0X21heF9oaWdoX2Nsb2Nrcyhod21nciwgY2xvY2tzKTsKIAot CW11dGV4X3VubG9jaygmcHBfaGFuZGxlLT5wcF9sb2NrKTsKKwltdXRleF91bmxvY2soJmh3bWdy LT5zbXVfbG9jayk7CiAJcmV0dXJuIHJldDsKIH0KIAogc3RhdGljIGludCBwcF9zZXRfbW1odWJf cG93ZXJnYXRpbmdfYnlfc211KHZvaWQgKmhhbmRsZSkKIHsKLQlzdHJ1Y3QgcHBfaHdtZ3IgKmh3 bWdyOwotCXN0cnVjdCBwcF9pbnN0YW5jZSAqcHBfaGFuZGxlID0gKHN0cnVjdCBwcF9pbnN0YW5j ZSAqKWhhbmRsZTsKKwlzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyID0gaGFuZGxlOwogCWludCByZXQg PSAwOwogCi0JcmV0ID0gcHBfY2hlY2socHBfaGFuZGxlKTsKKwlyZXQgPSBwcF9jaGVjayhod21n cik7CiAKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCi0JaHdtZ3IgPSBwcF9oYW5kbGUtPmh3 bWdyOwotCiAJaWYgKGh3bWdyLT5od21ncl9mdW5jLT5zZXRfbW1odWJfcG93ZXJnYXRpbmdfYnlf c211ID09IE5VTEwpIHsKIAkJcHJfaW5mbygiJXMgd2FzIG5vdCBpbXBsZW1lbnRlZC5cbiIsIF9f ZnVuY19fKTsKIAkJcmV0dXJuIDA7CkBAIC0xNDcwLDcgKzEzNDksNyBAQCBzdGF0aWMgaW50IHBw X3NldF9tbWh1Yl9wb3dlcmdhdGluZ19ieV9zbXUodm9pZCAqaGFuZGxlKQogCXJldHVybiBod21n ci0+aHdtZ3JfZnVuYy0+c2V0X21taHViX3Bvd2VyZ2F0aW5nX2J5X3NtdShod21ncik7CiB9CiAK LWNvbnN0IHN0cnVjdCBhbWRfcG1fZnVuY3MgcHBfZHBtX2Z1bmNzID0geworc3RhdGljIGNvbnN0 IHN0cnVjdCBhbWRfcG1fZnVuY3MgcHBfZHBtX2Z1bmNzID0gewogCS5sb2FkX2Zpcm13YXJlID0g cHBfZHBtX2xvYWRfZncsCiAJLndhaXRfZm9yX2Z3X2xvYWRpbmdfY29tcGxldGUgPSBwcF9kcG1f ZndfbG9hZGluZ19jb21wbGV0ZSwKIAkuZm9yY2VfcGVyZm9ybWFuY2VfbGV2ZWwgPSBwcF9kcG1f Zm9yY2VfcGVyZm9ybWFuY2VfbGV2ZWwsCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1k L3Bvd2VycGxheS9od21nci9od21nci5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkv aHdtZ3IvaHdtZ3IuYwppbmRleCA1NTYzYjY1Li4yMzhkZDU5IDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vYW1kL3Bvd2VycGxheS9od21nci9od21nci5jCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvcG93ZXJwbGF5L2h3bWdyL2h3bWdyLmMKQEAgLTExNiwyMyArMTE2LDExIEBAIHN0YXRp YyB2b2lkIGh3bWdyX2luaXRfd29ya2xvYWRfcHJvcml0eShzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdy KQogCWh3bWdyLT53b3JrbG9hZF9zZXR0aW5nWzRdID0gUFBfU01DX1BPV0VSX1BST0ZJTEVfQ09N UFVURTsKIH0KIAotaW50IGh3bWdyX2Vhcmx5X2luaXQoc3RydWN0IHBwX2luc3RhbmNlICpoYW5k bGUpCitpbnQgaHdtZ3JfZWFybHlfaW5pdChzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyKQogewotCXN0 cnVjdCBwcF9od21nciAqaHdtZ3I7Ci0KLQlpZiAoaGFuZGxlID09IE5VTEwpCisJaWYgKGh3bWdy ID09IE5VTEwpCiAJCXJldHVybiAtRUlOVkFMOwogCi0JaHdtZ3IgPSBremFsbG9jKHNpemVvZihz dHJ1Y3QgcHBfaHdtZ3IpLCBHRlBfS0VSTkVMKTsKLQlpZiAoaHdtZ3IgPT0gTlVMTCkKLQkJcmV0 dXJuIC1FTk9NRU07Ci0KLQloYW5kbGUtPmh3bWdyID0gaHdtZ3I7Ci0JaHdtZ3ItPmFkZXYgPSBo YW5kbGUtPnBhcmVudDsKLQlod21nci0+ZGV2aWNlID0gaGFuZGxlLT5kZXZpY2U7Ci0JaHdtZ3It PmNoaXBfZmFtaWx5ID0gKChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqKWhhbmRsZS0+cGFyZW50KS0+ ZmFtaWx5OwotCWh3bWdyLT5jaGlwX2lkID0gKChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqKWhhbmRs ZS0+cGFyZW50KS0+YXNpY190eXBlOwotCWh3bWdyLT5mZWF0dXJlX21hc2sgPSBhbWRncHVfcHBf ZmVhdHVyZV9tYXNrOwogCWh3bWdyLT51c2VjX3RpbWVvdXQgPSBBTURfTUFYX1VTRUNfVElNRU9V VDsKIAlod21nci0+cG93ZXJfc291cmNlID0gUFBfUG93ZXJTb3VyY2VfQUM7CiAJaHdtZ3ItPnBw X3RhYmxlX3ZlcnNpb24gPSBQUF9UQUJMRV9WMTsKQEAgLTIyMCwxNiArMjA4LDEzIEBAIGludCBo d21ncl9lYXJseV9pbml0KHN0cnVjdCBwcF9pbnN0YW5jZSAqaGFuZGxlKQogCXJldHVybiAwOwog fQogCi1pbnQgaHdtZ3JfaHdfaW5pdChzdHJ1Y3QgcHBfaW5zdGFuY2UgKmhhbmRsZSkKK2ludCBo d21ncl9od19pbml0KHN0cnVjdCBwcF9od21nciAqaHdtZ3IpCiB7Ci0Jc3RydWN0IHBwX2h3bWdy ICpod21ncjsKIAlpbnQgcmV0ID0gMDsKIAotCWlmIChoYW5kbGUgPT0gTlVMTCkKKwlpZiAoaHdt Z3IgPT0gTlVMTCkKIAkJcmV0dXJuIC1FSU5WQUw7CiAKLQlod21nciA9IGhhbmRsZS0+aHdtZ3I7 Ci0KIAlpZiAoaHdtZ3ItPnBwdGFibGVfZnVuYyA9PSBOVUxMIHx8CiAJICAgIGh3bWdyLT5wcHRh YmxlX2Z1bmMtPnBwdGFibGVfaW5pdCA9PSBOVUxMIHx8CiAJICAgIGh3bWdyLT5od21ncl9mdW5j LT5iYWNrZW5kX2luaXQgPT0gTlVMTCkKQEAgLTI3NSwxNSArMjYwLDExIEBAIGludCBod21ncl9o d19pbml0KHN0cnVjdCBwcF9pbnN0YW5jZSAqaGFuZGxlKQogCXJldHVybiByZXQ7CiB9CiAKLWlu dCBod21ncl9od19maW5pKHN0cnVjdCBwcF9pbnN0YW5jZSAqaGFuZGxlKQoraW50IGh3bWdyX2h3 X2Zpbmkoc3RydWN0IHBwX2h3bWdyICpod21ncikKIHsKLQlzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdy OwotCi0JaWYgKGhhbmRsZSA9PSBOVUxMIHx8IGhhbmRsZS0+aHdtZ3IgPT0gTlVMTCkKKwlpZiAo aHdtZ3IgPT0gTlVMTCkKIAkJcmV0dXJuIC1FSU5WQUw7CiAKLQlod21nciA9IGhhbmRsZS0+aHdt Z3I7Ci0KIAlwaG1fc3RvcF90aGVybWFsX2NvbnRyb2xsZXIoaHdtZ3IpOwogCXBzbV9zZXRfYm9v dF9zdGF0ZXMoaHdtZ3IpOwogCXBzbV9hZGp1c3RfcG93ZXJfc3RhdGVfZHluYW1pYyhod21nciwg ZmFsc2UsIE5VTEwpOwpAQCAtMjk3LDE1ICsyNzgsMTMgQEAgaW50IGh3bWdyX2h3X2Zpbmkoc3Ry dWN0IHBwX2luc3RhbmNlICpoYW5kbGUpCiAJcmV0dXJuIHBzbV9maW5pX3Bvd2VyX3N0YXRlX3Rh YmxlKGh3bWdyKTsKIH0KIAotaW50IGh3bWdyX2h3X3N1c3BlbmQoc3RydWN0IHBwX2luc3RhbmNl ICpoYW5kbGUpCitpbnQgaHdtZ3JfaHdfc3VzcGVuZChzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyKQog ewotCXN0cnVjdCBwcF9od21nciAqaHdtZ3I7CiAJaW50IHJldCA9IDA7CiAKLQlpZiAoaGFuZGxl ID09IE5VTEwgfHwgaGFuZGxlLT5od21nciA9PSBOVUxMKQorCWlmIChod21nciA9PSBOVUxMKQog CQlyZXR1cm4gLUVJTlZBTDsKIAotCWh3bWdyID0gaGFuZGxlLT5od21ncjsKIAlwaG1fZGlzYWJs ZV9zbWNfZmlybXdhcmVfY3RmKGh3bWdyKTsKIAlyZXQgPSBwc21fc2V0X2Jvb3Rfc3RhdGVzKGh3 bWdyKTsKIAlpZiAocmV0KQpAQCAtMzE4LDE1ICsyOTcsMTMgQEAgaW50IGh3bWdyX2h3X3N1c3Bl bmQoc3RydWN0IHBwX2luc3RhbmNlICpoYW5kbGUpCiAJcmV0dXJuIHJldDsKIH0KIAotaW50IGh3 bWdyX2h3X3Jlc3VtZShzdHJ1Y3QgcHBfaW5zdGFuY2UgKmhhbmRsZSkKK2ludCBod21ncl9od19y ZXN1bWUoc3RydWN0IHBwX2h3bWdyICpod21ncikKIHsKLQlzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdy OwogCWludCByZXQgPSAwOwogCi0JaWYgKGhhbmRsZSA9PSBOVUxMIHx8IGhhbmRsZS0+aHdtZ3Ig PT0gTlVMTCkKKwlpZiAoaHdtZ3IgPT0gTlVMTCkKIAkJcmV0dXJuIC1FSU5WQUw7CiAKLQlod21n ciA9IGhhbmRsZS0+aHdtZ3I7CiAJcmV0ID0gcGhtX3NldHVwX2FzaWMoaHdtZ3IpOwogCWlmIChy ZXQpCiAJCXJldHVybiByZXQ7CkBAIC0zNjEsMTcgKzMzOCwxNCBAQCBzdGF0aWMgZW51bSBQUF9T dGF0ZVVJTGFiZWwgcG93ZXJfc3RhdGVfY29udmVydChlbnVtIGFtZF9wbV9zdGF0ZV90eXBlICBz dGF0ZSkKIAl9CiB9CiAKLWludCBod21ncl9oYW5kbGVfdGFzayhzdHJ1Y3QgcHBfaW5zdGFuY2Ug KmhhbmRsZSwgZW51bSBhbWRfcHBfdGFzayB0YXNrX2lkLAoraW50IGh3bWdyX2hhbmRsZV90YXNr KHN0cnVjdCBwcF9od21nciAqaHdtZ3IsIGVudW0gYW1kX3BwX3Rhc2sgdGFza19pZCwKIAkJZW51 bSBhbWRfcG1fc3RhdGVfdHlwZSAqdXNlcl9zdGF0ZSkKIHsKIAlpbnQgcmV0ID0gMDsKLQlzdHJ1 Y3QgcHBfaHdtZ3IgKmh3bWdyOwogCi0JaWYgKGhhbmRsZSA9PSBOVUxMIHx8IGhhbmRsZS0+aHdt Z3IgPT0gTlVMTCkKKwlpZiAoaHdtZ3IgPT0gTlVMTCkKIAkJcmV0dXJuIC1FSU5WQUw7CiAKLQlo d21nciA9IGhhbmRsZS0+aHdtZ3I7Ci0KIAlzd2l0Y2ggKHRhc2tfaWQpIHsKIAljYXNlIEFNRF9Q UF9UQVNLX0RJU1BMQVlfQ09ORklHX0NIQU5HRToKIAkJcmV0ID0gcGhtX3NldF9jcHVfcG93ZXJf c3RhdGUoaHdtZ3IpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkv aW5jL2h3bWdyLmggYi9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9pbmMvaHdtZ3IuaApp bmRleCAyZTJlNGQwLi44NWI0NmFkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bv d2VycGxheS9pbmMvaHdtZ3IuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9p bmMvaHdtZ3IuaApAQCAtMjUsNyArMjUsNiBAQAogCiAjaW5jbHVkZSA8bGludXgvc2VxX2ZpbGUu aD4KICNpbmNsdWRlICJhbWRfcG93ZXJwbGF5LmgiCi0jaW5jbHVkZSAicHBfaW5zdGFuY2UuaCIK ICNpbmNsdWRlICJoYXJkd2FyZW1hbmFnZXIuaCIKICNpbmNsdWRlICJwcF9wb3dlcl9zb3VyY2Uu aCIKICNpbmNsdWRlICJod21ncl9wcHQuaCIKQEAgLTM0LDcgKzMzLDYgQEAKICNpbmNsdWRlICJw b3dlcl9zdGF0ZS5oIgogI2luY2x1ZGUgInNtdV9oZWxwZXIuaCIKIAotc3RydWN0IHBwX2luc3Rh bmNlOwogc3RydWN0IHBwX2h3bWdyOwogc3RydWN0IHBobV9mYW5fc3BlZWRfaW5mbzsKIHN0cnVj dCBwcF9hdG9tY3RybF92b2x0YWdlX3RhYmxlOwpAQCAtNzAzLDYgKzcwMSw4IEBAIHN0cnVjdCBw cF9od21nciB7CiAJdWludDMyX3QgY2hpcF9mYW1pbHk7CiAJdWludDMyX3QgY2hpcF9pZDsKIAl1 aW50MzJfdCBzbXVfdmVyc2lvbjsKKwlib29sIHBtX2VuOworCXN0cnVjdCBtdXRleCBzbXVfbG9j azsKIAogCXVpbnQzMl90IHBwX3RhYmxlX3ZlcnNpb247CiAJdm9pZCAqZGV2aWNlOwpAQCAtNzY5 LDEyICs3NjksMTIgQEAgc3RydWN0IGNnc19pcnFfc3JjX2Z1bmNzIHsKIAljZ3NfaXJxX2hhbmRs ZXJfZnVuY190IGhhbmRsZXI7CiB9OwogCi1leHRlcm4gaW50IGh3bWdyX2Vhcmx5X2luaXQoc3Ry dWN0IHBwX2luc3RhbmNlICpoYW5kbGUpOwotZXh0ZXJuIGludCBod21ncl9od19pbml0KHN0cnVj dCBwcF9pbnN0YW5jZSAqaGFuZGxlKTsKLWV4dGVybiBpbnQgaHdtZ3JfaHdfZmluaShzdHJ1Y3Qg cHBfaW5zdGFuY2UgKmhhbmRsZSk7Ci1leHRlcm4gaW50IGh3bWdyX2h3X3N1c3BlbmQoc3RydWN0 IHBwX2luc3RhbmNlICpoYW5kbGUpOwotZXh0ZXJuIGludCBod21ncl9od19yZXN1bWUoc3RydWN0 IHBwX2luc3RhbmNlICpoYW5kbGUpOwotZXh0ZXJuIGludCBod21ncl9oYW5kbGVfdGFzayhzdHJ1 Y3QgcHBfaW5zdGFuY2UgKmhhbmRsZSwKK2V4dGVybiBpbnQgaHdtZ3JfZWFybHlfaW5pdChzdHJ1 Y3QgcHBfaHdtZ3IgKmh3bWdyKTsKK2V4dGVybiBpbnQgaHdtZ3JfaHdfaW5pdChzdHJ1Y3QgcHBf aHdtZ3IgKmh3bWdyKTsKK2V4dGVybiBpbnQgaHdtZ3JfaHdfZmluaShzdHJ1Y3QgcHBfaHdtZ3Ig Kmh3bWdyKTsKK2V4dGVybiBpbnQgaHdtZ3JfaHdfc3VzcGVuZChzdHJ1Y3QgcHBfaHdtZ3IgKmh3 bWdyKTsKK2V4dGVybiBpbnQgaHdtZ3JfaHdfcmVzdW1lKHN0cnVjdCBwcF9od21nciAqaHdtZ3Ip OworZXh0ZXJuIGludCBod21ncl9oYW5kbGVfdGFzayhzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyLAog CQkJCWVudW0gYW1kX3BwX3Rhc2sgdGFza19pZCwKIAkJCQllbnVtIGFtZF9wbV9zdGF0ZV90eXBl ICp1c2VyX3N0YXRlKTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBs YXkvaW5jL3BwX2luc3RhbmNlLmggYi9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9pbmMv cHBfaW5zdGFuY2UuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmMyZmEzMy4uMDAw MDAwMAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9pbmMvcHBfaW5zdGFuY2Uu aAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgMjAxNSBB ZHZhbmNlZCBNaWNybyBEZXZpY2VzLCBJbmMuCi0gKgotICogUGVybWlzc2lvbiBpcyBoZXJlYnkg Z3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKLSAqIGNv cHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0 aGUgIlNvZnR3YXJlIiksCi0gKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3Ry aWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCi0gKiB0aGUgcmlnaHRzIHRvIHVz ZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwK LSAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVy c29ucyB0byB3aG9tIHRoZQotICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJq ZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKLSAqCi0gKiBUaGUgYWJvdmUgY29weXJp Z2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBp bgotICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUu Ci0gKgotICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFO VFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKLSAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9U IExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAotICogRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVW RU5UIFNIQUxMCi0gKiBUSEUgQ09QWVJJR0hUIEhPTERFUihTKSBPUiBBVVRIT1IoUykgQkUgTElB QkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IKLSAqIE9USEVSIExJQUJJTElUWSwgV0hFVEhF UiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLAotICogQVJJU0lO RyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUg VVNFIE9SCi0gKiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCi0gKgotICovCi0jaWZu ZGVmIF9QUF9JTlNUQU5DRV9IXwotI2RlZmluZSBfUFBfSU5TVEFOQ0VfSF8KLQotc3RydWN0IHBw X2h3bWdyOwotCi1zdHJ1Y3QgcHBfaW5zdGFuY2UgewotCXZvaWQgKnBhcmVudDsgLyogZS5nLiBh bWRncHVfZGV2aWNlICovCi0Jdm9pZCAqZGV2aWNlOyAvKiBlLmcuIGNnc19kZXZpY2UgKi8KLQli b29sIHBtX2VuOwotCXN0cnVjdCBwcF9od21nciAqaHdtZ3I7Ci0Jc3RydWN0IG11dGV4IHBwX2xv Y2s7Ci19OwotCi0jZW5kaWYKLS0gCjEuOS4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwphbWQtZ2Z4IG1haWxpbmcgbGlzdAphbWQtZ2Z4QGxpc3RzLmZy ZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2FtZC1nZngK