From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maarten Lankhorst Subject: [PATCH 06/14] drm/i915: Perform automated conversions for crtc uapi/hw split, base -> hw. Date: Thu, 24 Oct 2019 14:47:57 +0200 Message-ID: <20191024124805.26840-6-maarten.lankhorst@linux.intel.com> References: <20191024124805.26840-1-maarten.lankhorst@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mblankhorst.nl (mblankhorst.nl [141.105.120.124]) by gabe.freedesktop.org (Postfix) with ESMTPS id 8860C6E3C6 for ; Thu, 24 Oct 2019 12:48:11 +0000 (UTC) In-Reply-To: <20191024124805.26840-1-maarten.lankhorst@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org U3BsaXQgdXAgY3J0Y19zdGF0ZS0+YmFzZSB0byBodyB3aGVyZSBhcHByb3ByaWF0ZS4gVGhpcyBp cyBkb25lIHVzaW5nIHRoZSBmb2xsb3dpbmcgcGF0Y2g6CgpAQApzdHJ1Y3QgaW50ZWxfY3J0Y19z dGF0ZSAqVDsKaWRlbnRpZmllciB4ID1+ICJeKGFjdGl2ZXxlbmFibGV8ZGVnYW1tYV9sdXR8Z2Ft bWFfbHV0fGN0bXxtb2RlfGFkanVzdGVkX21vZGUpJCI7CkBACi1ULT5iYXNlLngKK1QtPmh3LngK CkBACnN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqVDsKaWRlbnRpZmllciB4ID1+ICJeKGFjdGl2ZXxl bmFibGV8ZGVnYW1tYV9sdXR8Z2FtbWFfbHV0fGN0bXxtb2RlfGFkanVzdGVkX21vZGUpJCI7CkBA Ci10b19pbnRlbF9jcnRjX3N0YXRlKFQpLT5iYXNlLngKK3RvX2ludGVsX2NydGNfc3RhdGUoVCkt Pmh3LngKClNpZ25lZC1vZmYtYnk6IE1hYXJ0ZW4gTGFua2hvcnN0IDxtYWFydGVuLmxhbmtob3Jz dEBsaW51eC5pbnRlbC5jb20+ClJldmlld2VkLWJ5OiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5 cmphbGFAbGludXguaW50ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkv aWNsX2RzaS5jICAgICAgICB8ICAxMiArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9p bnRlbF9hdWRpby5jICAgIHwgICA0ICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2lu dGVsX2NkY2xrLmMgICAgfCAgIDggKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50 ZWxfY29sb3IuYyAgICB8IDEwOCArKysrLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxh eS9pbnRlbF9jcnQuYyAgICAgIHwgIDE4ICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5 L2ludGVsX2RkaS5jICAgICAgfCAgMTggKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkv aW50ZWxfZGlzcGxheS5jICB8IDI2MiArKysrKysrKystLS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHAuYyAgICAgICB8ICAyMiArLQogZHJpdmVycy9ncHUvZHJt L2k5MTUvZGlzcGxheS9pbnRlbF9kcF9tc3QuYyAgIHwgICA2ICstCiBkcml2ZXJzL2dwdS9kcm0v aTkxNS9kaXNwbGF5L2ludGVsX2R2by5jICAgICAgfCAgMTIgKy0KIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2Rpc3BsYXkvaW50ZWxfZmJjLmMgICAgICB8ICAgMiArLQogZHJpdmVycy9ncHUvZHJtL2k5 MTUvZGlzcGxheS9pbnRlbF9oZG1pLmMgICAgIHwgIDIwICstCiBkcml2ZXJzL2dwdS9kcm0vaTkx NS9kaXNwbGF5L2ludGVsX2xzcGNvbi5jICAgfCAgIDQgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2Rpc3BsYXkvaW50ZWxfbHZkcy5jICAgICB8ICAgOCArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUv ZGlzcGxheS9pbnRlbF9wYW5lbC5jICAgIHwgICA4ICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9k aXNwbGF5L2ludGVsX3BpcGVfY3JjLmMgfCAgIDIgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rp c3BsYXkvaW50ZWxfcHNyLmMgICAgICB8ICAxMiArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlz cGxheS9pbnRlbF9zZHZvLmMgICAgIHwgIDE2ICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNw bGF5L2ludGVsX3Nwcml0ZS5jICAgfCAgIDggKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3Bs YXkvaW50ZWxfdHYuYyAgICAgICB8ICAgNCArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxh eS9pbnRlbF92ZHNjLmMgICAgIHwgICA0ICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5 L3Zsdl9kc2kuYyAgICAgICAgfCAgMTAgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVi dWdmcy5jICAgICAgICAgICB8ICAgOCArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0u YyAgICAgICAgICAgICAgIHwgIDYyICsrLS0tCiAyNCBmaWxlcyBjaGFuZ2VkLCAzMjEgaW5zZXJ0 aW9ucygrKSwgMzE3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2Rpc3BsYXkvaWNsX2RzaS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pY2xf ZHNpLmMKaW5kZXggNmUzOThjMzNhNTI0Li40ZWM0OTNlNDc1NWIgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaWNsX2RzaS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2Rpc3BsYXkvaWNsX2RzaS5jCkBAIC0yNzYsNyArMjc2LDcgQEAgc3RhdGljIHZvaWQgY29u ZmlndXJlX2R1YWxfbGlua19tb2RlKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAogCiAJ aWYgKGludGVsX2RzaS0+ZHVhbF9saW5rID09IERTSV9EVUFMX0xJTktfRlJPTlRfQkFDSykgewog CQljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9Ci0JCQkJCSZw aXBlX2NvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlOworCQkJCQkmcGlwZV9jb25maWctPmh3LmFk anVzdGVkX21vZGU7CiAJCXUzMiBkc3NfY3RsMjsKIAkJdTE2IGhhY3RpdmUgPSBhZGp1c3RlZF9t b2RlLT5jcnRjX2hkaXNwbGF5OwogCQl1MTYgZGxfYnVmZmVyX2RlcHRoOwpAQCAtNzY4LDcgKzc2 OCw3IEBAIGdlbjExX2RzaV9zZXRfdHJhbnNjb2Rlcl90aW1pbmdzKHN0cnVjdCBpbnRlbF9lbmNv ZGVyICplbmNvZGVyLAogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5 MTUoZW5jb2Rlci0+YmFzZS5kZXYpOwogCXN0cnVjdCBpbnRlbF9kc2kgKmludGVsX2RzaSA9IGVu Y190b19pbnRlbF9kc2koJmVuY29kZXItPmJhc2UpOwogCWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxh eV9tb2RlICphZGp1c3RlZF9tb2RlID0KLQkJCQkJJnBpcGVfY29uZmlnLT5iYXNlLmFkanVzdGVk X21vZGU7CisJCQkJCSZwaXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZTsKIAllbnVtIHBvcnQg cG9ydDsKIAllbnVtIHRyYW5zY29kZXIgZHNpX3RyYW5zOwogCS8qIGhvcml6b250YWwgdGltaW5n cyAqLwpAQCAtMTIxNiw3ICsxMjE2LDcgQEAgc3RhdGljIHZvaWQgZ2VuMTFfZHNpX2dldF90aW1p bmdzKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAogewogCXN0cnVjdCBpbnRlbF9kc2kg KmludGVsX2RzaSA9IGVuY190b19pbnRlbF9kc2koJmVuY29kZXItPmJhc2UpOwogCXN0cnVjdCBk cm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2RlID0KLQkJCQkJJnBpcGVfY29uZmlnLT5iYXNl LmFkanVzdGVkX21vZGU7CisJCQkJCSZwaXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZTsKIAog CWlmIChpbnRlbF9kc2ktPmR1YWxfbGluaykgewogCQlhZGp1c3RlZF9tb2RlLT5jcnRjX2hkaXNw bGF5ICo9IDI7CkBAIC0xMjQ5LDkgKzEyNDksOSBAQCBzdGF0aWMgdm9pZCBnZW4xMV9kc2lfZ2V0 X2NvbmZpZyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKIAlwaXBlX2NvbmZpZy0+cG9y dF9jbG9jayA9CiAJCWNubF9jYWxjX3dycGxsX2xpbmsoZGV2X3ByaXYsICZwaXBlX2NvbmZpZy0+ ZHBsbF9od19zdGF0ZSk7CiAKLQlwaXBlX2NvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlLmNydGNf Y2xvY2sgPSBpbnRlbF9kc2ktPnBjbGs7CisJcGlwZV9jb25maWctPmh3LmFkanVzdGVkX21vZGUu Y3J0Y19jbG9jayA9IGludGVsX2RzaS0+cGNsazsKIAlpZiAoaW50ZWxfZHNpLT5kdWFsX2xpbmsp Ci0JCXBpcGVfY29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGUuY3J0Y19jbG9jayAqPSAyOworCQlw aXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZS5jcnRjX2Nsb2NrICo9IDI7CiAKIAlnZW4xMV9k c2lfZ2V0X3RpbWluZ3MoZW5jb2RlciwgcGlwZV9jb25maWcpOwogCXBpcGVfY29uZmlnLT5vdXRw dXRfdHlwZXMgfD0gQklUKElOVEVMX09VVFBVVF9EU0kpOwpAQCAtMTI2OSw3ICsxMjY5LDcgQEAg c3RhdGljIGludCBnZW4xMV9kc2lfY29tcHV0ZV9jb25maWcoc3RydWN0IGludGVsX2VuY29kZXIg KmVuY29kZXIsCiAJY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmZpeGVkX21vZGUgPQog CQkJCQlpbnRlbF9jb25uZWN0b3ItPnBhbmVsLmZpeGVkX21vZGU7CiAJc3RydWN0IGRybV9kaXNw bGF5X21vZGUgKmFkanVzdGVkX21vZGUgPQotCQkJCQkmcGlwZV9jb25maWctPmJhc2UuYWRqdXN0 ZWRfbW9kZTsKKwkJCQkJJnBpcGVfY29uZmlnLT5ody5hZGp1c3RlZF9tb2RlOwogCiAJcGlwZV9j b25maWctPm91dHB1dF9mb3JtYXQgPSBJTlRFTF9PVVRQVVRfRk9STUFUX1JHQjsKIAlpbnRlbF9m aXhlZF9wYW5lbF9tb2RlKGZpeGVkX21vZGUsIGFkanVzdGVkX21vZGUpOwpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9hdWRpby5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9hdWRpby5jCmluZGV4IGVkMTg1MTFiZWZhMy4uNmE1OGU4 YWQ4NmY4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2F1 ZGlvLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9hdWRpby5jCkBA IC0yMzMsNyArMjMzLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBoZG1pX2F1ZF9uY3RzIGhkbWlf YXVkX25jdHNfMzZicHBbXSA9IHsKIHN0YXRpYyB1MzIgYXVkaW9fY29uZmlnX2hkbWlfcGl4ZWxf Y2xvY2soY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCiB7CiAJY29u c3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUgPQotCQkmY3J0Y19zdGF0 ZS0+YmFzZS5hZGp1c3RlZF9tb2RlOworCQkmY3J0Y19zdGF0ZS0+aHcuYWRqdXN0ZWRfbW9kZTsK IAlpbnQgaTsKIAogCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGhkbWlfYXVkaW9fY2xvY2sp OyBpKyspIHsKQEAgLTY5NCw3ICs2OTQsNyBAQCB2b2lkIGludGVsX2F1ZGlvX2NvZGVjX2VuYWJs ZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0 YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+YmFzZS5jcnRjKTsKIAlzdHJ1Y3QgZHJtX2Nv bm5lY3RvciAqY29ubmVjdG9yID0gY29ubl9zdGF0ZS0+Y29ubmVjdG9yOwogCWNvbnN0IHN0cnVj dCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2RlID0KLQkJJmNydGNfc3RhdGUtPmJhc2Uu YWRqdXN0ZWRfbW9kZTsKKwkJJmNydGNfc3RhdGUtPmh3LmFkanVzdGVkX21vZGU7CiAJZW51bSBw b3J0IHBvcnQgPSBlbmNvZGVyLT5wb3J0OwogCWVudW0gcGlwZSBwaXBlID0gY3J0Yy0+cGlwZTsK IApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9jZGNsay5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9jZGNsay5jCmluZGV4IGFiMWY3 Y2VjNTBjNi4uZmQxZWQwZmI4NzQ4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9k aXNwbGF5L2ludGVsX2NkY2xrLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9p bnRlbF9jZGNsay5jCkBAIC0xOTI0LDcgKzE5MjQsNyBAQCBpbnQgaW50ZWxfY3J0Y19jb21wdXRl X21pbl9jZGNsayhjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKIAkJ dG9faTkxNShjcnRjX3N0YXRlLT5iYXNlLmNydGMtPmRldik7CiAJaW50IG1pbl9jZGNsazsKIAot CWlmICghY3J0Y19zdGF0ZS0+YmFzZS5lbmFibGUpCisJaWYgKCFjcnRjX3N0YXRlLT5ody5lbmFi bGUpCiAJCXJldHVybiAwOwogCiAJbWluX2NkY2xrID0gaW50ZWxfcGl4ZWxfcmF0ZV90b19jZGNs ayhjcnRjX3N0YXRlKTsKQEAgLTIwNDcsNyArMjA0Nyw3IEBAIHN0YXRpYyB1OCBieHRfY29tcHV0 ZV9taW5fdm9sdGFnZV9sZXZlbChzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSkKIAkg ICAgICAgc2l6ZW9mKHN0YXRlLT5taW5fdm9sdGFnZV9sZXZlbCkpOwogCiAJZm9yX2VhY2hfbmV3 X2ludGVsX2NydGNfaW5fc3RhdGUoc3RhdGUsIGNydGMsIGNydGNfc3RhdGUsIGkpIHsKLQkJaWYg KGNydGNfc3RhdGUtPmJhc2UuZW5hYmxlKQorCQlpZiAoY3J0Y19zdGF0ZS0+aHcuZW5hYmxlKQog CQkJc3RhdGUtPm1pbl92b2x0YWdlX2xldmVsW2ldID0KIAkJCQljcnRjX3N0YXRlLT5taW5fdm9s dGFnZV9sZXZlbDsKIAkJZWxzZQpAQCAtMjEzMyw3ICsyMTMzLDcgQEAgc3RhdGljIGludCBza2xf ZHBsbDBfdmNvKHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlKQogCQl2Y28gPSBkZXZf cHJpdi0+c2tsX3ByZWZlcnJlZF92Y29fZnJlcTsKIAogCWZvcl9lYWNoX25ld19pbnRlbF9jcnRj X2luX3N0YXRlKHN0YXRlLCBjcnRjLCBjcnRjX3N0YXRlLCBpKSB7Ci0JCWlmICghY3J0Y19zdGF0 ZS0+YmFzZS5lbmFibGUpCisJCWlmICghY3J0Y19zdGF0ZS0+aHcuZW5hYmxlKQogCQkJY29udGlu dWU7CiAKIAkJaWYgKCFpbnRlbF9jcnRjX2hhc190eXBlKGNydGNfc3RhdGUsIElOVEVMX09VVFBV VF9FRFApKQpAQCAtMjI2MCw3ICsyMjYwLDcgQEAgc3RhdGljIGludCBpbnRlbF9tb2Rlc2V0X2Fs bF9waXBlcyhzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSkKIAkJaWYgKElTX0VSUihj cnRjX3N0YXRlKSkKIAkJCXJldHVybiBQVFJfRVJSKGNydGNfc3RhdGUpOwogCi0JCWlmICghY3J0 Y19zdGF0ZS0+YmFzZS5hY3RpdmUgfHwKKwkJaWYgKCFjcnRjX3N0YXRlLT5ody5hY3RpdmUgfHwK IAkJICAgIGRybV9hdG9taWNfY3J0Y19uZWVkc19tb2Rlc2V0KCZjcnRjX3N0YXRlLT5iYXNlKSkK IAkJCWNvbnRpbnVlOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5 L2ludGVsX2NvbG9yLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2NvbG9y LmMKaW5kZXggOTU1ODZhNTg4MjM0Li42NWUxYjE4YmQ3ZTMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfY29sb3IuYworKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9kaXNwbGF5L2ludGVsX2NvbG9yLmMKQEAgLTExNywxMCArMTE3LDEwIEBAIHN0YXRpYyBi b29sIGx1dF9pc19sZWdhY3koY29uc3Qgc3RydWN0IGRybV9wcm9wZXJ0eV9ibG9iICpsdXQpCiAK IHN0YXRpYyBib29sIGNydGNfc3RhdGVfaXNfbGVnYWN5X2dhbW1hKGNvbnN0IHN0cnVjdCBpbnRl bF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQogewotCXJldHVybiAhY3J0Y19zdGF0ZS0+YmFzZS5k ZWdhbW1hX2x1dCAmJgotCQkhY3J0Y19zdGF0ZS0+YmFzZS5jdG0gJiYKLQkJY3J0Y19zdGF0ZS0+ YmFzZS5nYW1tYV9sdXQgJiYKLQkJbHV0X2lzX2xlZ2FjeShjcnRjX3N0YXRlLT5iYXNlLmdhbW1h X2x1dCk7CisJcmV0dXJuICFjcnRjX3N0YXRlLT5ody5kZWdhbW1hX2x1dCAmJgorCQkhY3J0Y19z dGF0ZS0+aHcuY3RtICYmCisJCWNydGNfc3RhdGUtPmh3LmdhbW1hX2x1dCAmJgorCQlsdXRfaXNf bGVnYWN5KGNydGNfc3RhdGUtPmh3LmdhbW1hX2x1dCk7CiB9CiAKIC8qCkBAIC0yMTksNyArMjE5 LDcgQEAgc3RhdGljIGJvb2wgaWxrX2NzY19saW1pdGVkX3JhbmdlKGNvbnN0IHN0cnVjdCBpbnRl bF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQogc3RhdGljIHZvaWQgaWxrX2NzY19jb252ZXJ0X2N0 bShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKIAkJCQl1MTYgY29l ZmZzWzldKQogewotCWNvbnN0IHN0cnVjdCBkcm1fY29sb3JfY3RtICpjdG0gPSBjcnRjX3N0YXRl LT5iYXNlLmN0bS0+ZGF0YTsKKwljb25zdCBzdHJ1Y3QgZHJtX2NvbG9yX2N0bSAqY3RtID0gY3J0 Y19zdGF0ZS0+aHcuY3RtLT5kYXRhOwogCWNvbnN0IHU2NCAqaW5wdXQ7CiAJdTY0IHRlbXBbOV07 CiAJaW50IGk7CkBAIC0yNzQsNyArMjc0LDcgQEAgc3RhdGljIHZvaWQgaWxrX2xvYWRfY3NjX21h dHJpeChjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKIAlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGMtPmJhc2UuZGV2KTsKIAli b29sIGxpbWl0ZWRfY29sb3JfcmFuZ2UgPSBpbGtfY3NjX2xpbWl0ZWRfcmFuZ2UoY3J0Y19zdGF0 ZSk7CiAKLQlpZiAoY3J0Y19zdGF0ZS0+YmFzZS5jdG0pIHsKKwlpZiAoY3J0Y19zdGF0ZS0+aHcu Y3RtKSB7CiAJCXUxNiBjb2VmZls5XTsKIAogCQlpbGtfY3NjX2NvbnZlcnRfY3RtKGNydGNfc3Rh dGUsIGNvZWZmKTsKQEAgLTMxMiw3ICszMTIsNyBAQCBzdGF0aWMgdm9pZCBpY2xfbG9hZF9jc2Nf bWF0cml4KGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQogCXN0cnVj dCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLT5iYXNlLmNydGMp OwogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Yy0+YmFz ZS5kZXYpOwogCi0JaWYgKGNydGNfc3RhdGUtPmJhc2UuY3RtKSB7CisJaWYgKGNydGNfc3RhdGUt Pmh3LmN0bSkgewogCQl1MTYgY29lZmZbOV07CiAKIAkJaWxrX2NzY19jb252ZXJ0X2N0bShjcnRj X3N0YXRlLCBjb2VmZik7CkBAIC0zNDIsOCArMzQyLDggQEAgc3RhdGljIHZvaWQgY2hlcnJ5dmll d19sb2FkX2NzY19tYXRyaXgoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3Rh dGUKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGMtPmJh c2UuZGV2KTsKIAllbnVtIHBpcGUgcGlwZSA9IGNydGMtPnBpcGU7CiAKLQlpZiAoY3J0Y19zdGF0 ZS0+YmFzZS5jdG0pIHsKLQkJY29uc3Qgc3RydWN0IGRybV9jb2xvcl9jdG0gKmN0bSA9IGNydGNf c3RhdGUtPmJhc2UuY3RtLT5kYXRhOworCWlmIChjcnRjX3N0YXRlLT5ody5jdG0pIHsKKwkJY29u c3Qgc3RydWN0IGRybV9jb2xvcl9jdG0gKmN0bSA9IGNydGNfc3RhdGUtPmh3LmN0bS0+ZGF0YTsK IAkJdTE2IGNvZWZmc1s5XSA9IHt9OwogCQlpbnQgaTsKIApAQCAtNDM1LDcgKzQzNSw3IEBAIHN0 YXRpYyB2b2lkIGk5eHhfbG9hZF9sdXRzX2ludGVybmFsKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRj X3N0YXRlICpjcnRjX3N0YXRlLAogCiBzdGF0aWMgdm9pZCBpOXh4X2xvYWRfbHV0cyhjb25zdCBz dHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKIHsKLQlpOXh4X2xvYWRfbHV0c19p bnRlcm5hbChjcnRjX3N0YXRlLCBjcnRjX3N0YXRlLT5iYXNlLmdhbW1hX2x1dCk7CisJaTl4eF9s b2FkX2x1dHNfaW50ZXJuYWwoY3J0Y19zdGF0ZSwgY3J0Y19zdGF0ZS0+aHcuZ2FtbWFfbHV0KTsK IH0KIAogc3RhdGljIHZvaWQgaTl4eF9jb2xvcl9jb21taXQoY29uc3Qgc3RydWN0IGludGVsX2Ny dGNfc3RhdGUgKmNydGNfc3RhdGUpCkBAIC01MjUsNyArNTI1LDcgQEAgc3RhdGljIHZvaWQgaTk2 NV9sb2FkX2x1dF8xMHA2KHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAogc3RhdGljIHZvaWQgaTk2 NV9sb2FkX2x1dHMoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCiB7 CiAJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPmJh c2UuY3J0Yyk7Ci0JY29uc3Qgc3RydWN0IGRybV9wcm9wZXJ0eV9ibG9iICpnYW1tYV9sdXQgPSBj cnRjX3N0YXRlLT5iYXNlLmdhbW1hX2x1dDsKKwljb25zdCBzdHJ1Y3QgZHJtX3Byb3BlcnR5X2Js b2IgKmdhbW1hX2x1dCA9IGNydGNfc3RhdGUtPmh3LmdhbW1hX2x1dDsKIAogCWlmIChjcnRjX3N0 YXRlLT5nYW1tYV9tb2RlID09IEdBTU1BX01PREVfTU9ERV84QklUKQogCQlpOXh4X2xvYWRfbHV0 cyhjcnRjX3N0YXRlKTsKQEAgLTU0OCw3ICs1NDgsNyBAQCBzdGF0aWMgdm9pZCBpbGtfbG9hZF9s dXRfMTAoc3RydWN0IGludGVsX2NydGMgKmNydGMsCiBzdGF0aWMgdm9pZCBpbGtfbG9hZF9sdXRz KGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQogewogCXN0cnVjdCBp bnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLT5iYXNlLmNydGMpOwot CWNvbnN0IHN0cnVjdCBkcm1fcHJvcGVydHlfYmxvYiAqZ2FtbWFfbHV0ID0gY3J0Y19zdGF0ZS0+ YmFzZS5nYW1tYV9sdXQ7CisJY29uc3Qgc3RydWN0IGRybV9wcm9wZXJ0eV9ibG9iICpnYW1tYV9s dXQgPSBjcnRjX3N0YXRlLT5ody5nYW1tYV9sdXQ7CiAKIAlpZiAoY3J0Y19zdGF0ZS0+Z2FtbWFf bW9kZSA9PSBHQU1NQV9NT0RFX01PREVfOEJJVCkKIAkJaTl4eF9sb2FkX2x1dHMoY3J0Y19zdGF0 ZSk7CkBAIC02NTUsOCArNjU1LDggQEAgc3RhdGljIHZvaWQgaXZiX2xvYWRfbHV0X2V4dF9tYXgo c3RydWN0IGludGVsX2NydGMgKmNydGMpCiBzdGF0aWMgdm9pZCBpdmJfbG9hZF9sdXRzKGNvbnN0 IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQogewogCXN0cnVjdCBpbnRlbF9j cnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLT5iYXNlLmNydGMpOwotCWNvbnN0 IHN0cnVjdCBkcm1fcHJvcGVydHlfYmxvYiAqZ2FtbWFfbHV0ID0gY3J0Y19zdGF0ZS0+YmFzZS5n YW1tYV9sdXQ7Ci0JY29uc3Qgc3RydWN0IGRybV9wcm9wZXJ0eV9ibG9iICpkZWdhbW1hX2x1dCA9 IGNydGNfc3RhdGUtPmJhc2UuZGVnYW1tYV9sdXQ7CisJY29uc3Qgc3RydWN0IGRybV9wcm9wZXJ0 eV9ibG9iICpnYW1tYV9sdXQgPSBjcnRjX3N0YXRlLT5ody5nYW1tYV9sdXQ7CisJY29uc3Qgc3Ry dWN0IGRybV9wcm9wZXJ0eV9ibG9iICpkZWdhbW1hX2x1dCA9IGNydGNfc3RhdGUtPmh3LmRlZ2Ft bWFfbHV0OwogCiAJaWYgKGNydGNfc3RhdGUtPmdhbW1hX21vZGUgPT0gR0FNTUFfTU9ERV9NT0RF XzhCSVQpIHsKIAkJaTl4eF9sb2FkX2x1dHMoY3J0Y19zdGF0ZSk7CkBAIC02NzgsOCArNjc4LDgg QEAgc3RhdGljIHZvaWQgaXZiX2xvYWRfbHV0cyhjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0 ZSAqY3J0Y19zdGF0ZSkKIHN0YXRpYyB2b2lkIGJkd19sb2FkX2x1dHMoY29uc3Qgc3RydWN0IGlu dGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCiB7CiAJc3RydWN0IGludGVsX2NydGMgKmNydGMg PSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPmJhc2UuY3J0Yyk7Ci0JY29uc3Qgc3RydWN0IGRy bV9wcm9wZXJ0eV9ibG9iICpnYW1tYV9sdXQgPSBjcnRjX3N0YXRlLT5iYXNlLmdhbW1hX2x1dDsK LQljb25zdCBzdHJ1Y3QgZHJtX3Byb3BlcnR5X2Jsb2IgKmRlZ2FtbWFfbHV0ID0gY3J0Y19zdGF0 ZS0+YmFzZS5kZWdhbW1hX2x1dDsKKwljb25zdCBzdHJ1Y3QgZHJtX3Byb3BlcnR5X2Jsb2IgKmdh bW1hX2x1dCA9IGNydGNfc3RhdGUtPmh3LmdhbW1hX2x1dDsKKwljb25zdCBzdHJ1Y3QgZHJtX3By b3BlcnR5X2Jsb2IgKmRlZ2FtbWFfbHV0ID0gY3J0Y19zdGF0ZS0+aHcuZGVnYW1tYV9sdXQ7CiAK IAlpZiAoY3J0Y19zdGF0ZS0+Z2FtbWFfbW9kZSA9PSBHQU1NQV9NT0RFX01PREVfOEJJVCkgewog CQlpOXh4X2xvYWRfbHV0cyhjcnRjX3N0YXRlKTsKQEAgLTcwNCw3ICs3MDQsNyBAQCBzdGF0aWMg dm9pZCBnbGtfbG9hZF9kZWdhbW1hX2x1dChjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAq Y3J0Y19zdGF0ZSkKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1 KGNydGMtPmJhc2UuZGV2KTsKIAllbnVtIHBpcGUgcGlwZSA9IGNydGMtPnBpcGU7CiAJY29uc3Qg dTMyIGx1dF9zaXplID0gSU5URUxfSU5GTyhkZXZfcHJpdiktPmNvbG9yLmRlZ2FtbWFfbHV0X3Np emU7Ci0JY29uc3Qgc3RydWN0IGRybV9jb2xvcl9sdXQgKmx1dCA9IGNydGNfc3RhdGUtPmJhc2Uu ZGVnYW1tYV9sdXQtPmRhdGE7CisJY29uc3Qgc3RydWN0IGRybV9jb2xvcl9sdXQgKmx1dCA9IGNy dGNfc3RhdGUtPmh3LmRlZ2FtbWFfbHV0LT5kYXRhOwogCXUzMiBpOwogCiAJLyoKQEAgLTc2Niw3 ICs3NjYsNyBAQCBzdGF0aWMgdm9pZCBnbGtfbG9hZF9kZWdhbW1hX2x1dF9saW5lYXIoY29uc3Qg c3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdAogCiBzdGF0aWMgdm9pZCBnbGtfbG9h ZF9sdXRzKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQogewotCWNv bnN0IHN0cnVjdCBkcm1fcHJvcGVydHlfYmxvYiAqZ2FtbWFfbHV0ID0gY3J0Y19zdGF0ZS0+YmFz ZS5nYW1tYV9sdXQ7CisJY29uc3Qgc3RydWN0IGRybV9wcm9wZXJ0eV9ibG9iICpnYW1tYV9sdXQg PSBjcnRjX3N0YXRlLT5ody5nYW1tYV9sdXQ7CiAJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0 b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPmJhc2UuY3J0Yyk7CiAKIAkvKgpAQCAtNzc3LDcgKzc3 Nyw3IEBAIHN0YXRpYyB2b2lkIGdsa19sb2FkX2x1dHMoY29uc3Qgc3RydWN0IGludGVsX2NydGNf c3RhdGUgKmNydGNfc3RhdGUpCiAJICogdGhlIGRlZ2FtYSBMVVQgc28gdGhhdCB3ZSBkb24ndCBo YXZlIHRvIHJlbG9hZAogCSAqIGl0IGV2ZXJ5IHRpbWUgdGhlIHBpcGUgQ1NDIGlzIGJlaW5nIGVu YWJsZWQuCiAJICovCi0JaWYgKGNydGNfc3RhdGUtPmJhc2UuZGVnYW1tYV9sdXQpCisJaWYgKGNy dGNfc3RhdGUtPmh3LmRlZ2FtbWFfbHV0KQogCQlnbGtfbG9hZF9kZWdhbW1hX2x1dChjcnRjX3N0 YXRlKTsKIAllbHNlCiAJCWdsa19sb2FkX2RlZ2FtbWFfbHV0X2xpbmVhcihjcnRjX3N0YXRlKTsK QEAgLTgyMyw3ICs4MjMsNyBAQCBzdGF0aWMgdm9pZAogaWNsX3Byb2dyYW1fZ2FtbWFfc3VwZXJm aW5lX3NlZ21lbnQoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCiB7 CiAJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPmJh c2UuY3J0Yyk7Ci0JY29uc3Qgc3RydWN0IGRybV9wcm9wZXJ0eV9ibG9iICpibG9iID0gY3J0Y19z dGF0ZS0+YmFzZS5nYW1tYV9sdXQ7CisJY29uc3Qgc3RydWN0IGRybV9wcm9wZXJ0eV9ibG9iICpi bG9iID0gY3J0Y19zdGF0ZS0+aHcuZ2FtbWFfbHV0OwogCWNvbnN0IHN0cnVjdCBkcm1fY29sb3Jf bHV0ICpsdXQgPSBibG9iLT5kYXRhOwogCXN0cnVjdCBpbnRlbF9kc2IgKmRzYiA9IGludGVsX2Rz Yl9nZXQoY3J0Yyk7CiAJZW51bSBwaXBlIHBpcGUgPSBjcnRjLT5waXBlOwpAQCAtODU1LDcgKzg1 NSw3IEBAIHN0YXRpYyB2b2lkCiBpY2xfcHJvZ3JhbV9nYW1tYV9tdWx0aV9zZWdtZW50KGNvbnN0 IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQogewogCXN0cnVjdCBpbnRlbF9j cnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLT5iYXNlLmNydGMpOwotCWNvbnN0 IHN0cnVjdCBkcm1fcHJvcGVydHlfYmxvYiAqYmxvYiA9IGNydGNfc3RhdGUtPmJhc2UuZ2FtbWFf bHV0OworCWNvbnN0IHN0cnVjdCBkcm1fcHJvcGVydHlfYmxvYiAqYmxvYiA9IGNydGNfc3RhdGUt Pmh3LmdhbW1hX2x1dDsKIAljb25zdCBzdHJ1Y3QgZHJtX2NvbG9yX2x1dCAqbHV0ID0gYmxvYi0+ ZGF0YTsKIAljb25zdCBzdHJ1Y3QgZHJtX2NvbG9yX2x1dCAqZW50cnk7CiAJc3RydWN0IGludGVs X2RzYiAqZHNiID0gaW50ZWxfZHNiX2dldChjcnRjKTsKQEAgLTkxMCwxMSArOTEwLDExIEBAIGlj bF9wcm9ncmFtX2dhbW1hX211bHRpX3NlZ21lbnQoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3Rh dGUgKmNydGNfc3RhdGUpCiAKIHN0YXRpYyB2b2lkIGljbF9sb2FkX2x1dHMoY29uc3Qgc3RydWN0 IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCiB7Ci0JY29uc3Qgc3RydWN0IGRybV9wcm9w ZXJ0eV9ibG9iICpnYW1tYV9sdXQgPSBjcnRjX3N0YXRlLT5iYXNlLmdhbW1hX2x1dDsKKwljb25z dCBzdHJ1Y3QgZHJtX3Byb3BlcnR5X2Jsb2IgKmdhbW1hX2x1dCA9IGNydGNfc3RhdGUtPmh3Lmdh bW1hX2x1dDsKIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19z dGF0ZS0+YmFzZS5jcnRjKTsKIAlzdHJ1Y3QgaW50ZWxfZHNiICpkc2IgPSBpbnRlbF9kc2JfZ2V0 KGNydGMpOwogCi0JaWYgKGNydGNfc3RhdGUtPmJhc2UuZGVnYW1tYV9sdXQpCisJaWYgKGNydGNf c3RhdGUtPmh3LmRlZ2FtbWFfbHV0KQogCQlnbGtfbG9hZF9kZWdhbW1hX2x1dChjcnRjX3N0YXRl KTsKIAogCXN3aXRjaCAoY3J0Y19zdGF0ZS0+Z2FtbWFfbW9kZSAmIEdBTU1BX01PREVfTU9ERV9N QVNLKSB7CkBAIC05OTEsOCArOTkxLDggQEAgc3RhdGljIHZvaWQgY2h2X2xvYWRfY2dtX2dhbW1h KHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAogc3RhdGljIHZvaWQgY2h2X2xvYWRfbHV0cyhjb25z dCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKIHsKIAlzdHJ1Y3QgaW50ZWxf Y3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+YmFzZS5jcnRjKTsKLQljb25z dCBzdHJ1Y3QgZHJtX3Byb3BlcnR5X2Jsb2IgKmdhbW1hX2x1dCA9IGNydGNfc3RhdGUtPmJhc2Uu Z2FtbWFfbHV0OwotCWNvbnN0IHN0cnVjdCBkcm1fcHJvcGVydHlfYmxvYiAqZGVnYW1tYV9sdXQg PSBjcnRjX3N0YXRlLT5iYXNlLmRlZ2FtbWFfbHV0OworCWNvbnN0IHN0cnVjdCBkcm1fcHJvcGVy dHlfYmxvYiAqZ2FtbWFfbHV0ID0gY3J0Y19zdGF0ZS0+aHcuZ2FtbWFfbHV0OworCWNvbnN0IHN0 cnVjdCBkcm1fcHJvcGVydHlfYmxvYiAqZGVnYW1tYV9sdXQgPSBjcnRjX3N0YXRlLT5ody5kZWdh bW1hX2x1dDsKIAogCWNoZXJyeXZpZXdfbG9hZF9jc2NfbWF0cml4KGNydGNfc3RhdGUpOwogCkBA IC0xMDYzLDcgKzEwNjMsNyBAQCBpbnRlbF9jb2xvcl9hZGRfYWZmZWN0ZWRfcGxhbmVzKHN0cnVj dCBpbnRlbF9jcnRjX3N0YXRlICpuZXdfY3J0Y19zdGF0ZSkKIAkJaW50ZWxfYXRvbWljX2dldF9v bGRfY3J0Y19zdGF0ZShzdGF0ZSwgY3J0Yyk7CiAJc3RydWN0IGludGVsX3BsYW5lICpwbGFuZTsK IAotCWlmICghbmV3X2NydGNfc3RhdGUtPmJhc2UuYWN0aXZlIHx8CisJaWYgKCFuZXdfY3J0Y19z dGF0ZS0+aHcuYWN0aXZlIHx8CiAJICAgIGRybV9hdG9taWNfY3J0Y19uZWVkc19tb2Rlc2V0KCZu ZXdfY3J0Y19zdGF0ZS0+YmFzZSkpCiAJCXJldHVybiAwOwogCkBAIC0xMTA4LDggKzExMDgsOCBA QCBzdGF0aWMgaW50IGNoZWNrX2x1dF9zaXplKGNvbnN0IHN0cnVjdCBkcm1fcHJvcGVydHlfYmxv YiAqbHV0LCBpbnQgZXhwZWN0ZWQpCiBzdGF0aWMgaW50IGNoZWNrX2x1dHMoY29uc3Qgc3RydWN0 IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRjX3N0YXRlLT5iYXNlLmNydGMtPmRldik7Ci0JY29u c3Qgc3RydWN0IGRybV9wcm9wZXJ0eV9ibG9iICpnYW1tYV9sdXQgPSBjcnRjX3N0YXRlLT5iYXNl LmdhbW1hX2x1dDsKLQljb25zdCBzdHJ1Y3QgZHJtX3Byb3BlcnR5X2Jsb2IgKmRlZ2FtbWFfbHV0 ID0gY3J0Y19zdGF0ZS0+YmFzZS5kZWdhbW1hX2x1dDsKKwljb25zdCBzdHJ1Y3QgZHJtX3Byb3Bl cnR5X2Jsb2IgKmdhbW1hX2x1dCA9IGNydGNfc3RhdGUtPmh3LmdhbW1hX2x1dDsKKwljb25zdCBz dHJ1Y3QgZHJtX3Byb3BlcnR5X2Jsb2IgKmRlZ2FtbWFfbHV0ID0gY3J0Y19zdGF0ZS0+aHcuZGVn YW1tYV9sdXQ7CiAJaW50IGdhbW1hX2xlbmd0aCwgZGVnYW1tYV9sZW5ndGg7CiAJdTMyIGdhbW1h X3Rlc3RzLCBkZWdhbW1hX3Rlc3RzOwogCkBAIC0xMTU3LDcgKzExNTcsNyBAQCBzdGF0aWMgaW50 IGk5eHhfY29sb3JfY2hlY2soc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCiAJ CXJldHVybiByZXQ7CiAKIAljcnRjX3N0YXRlLT5nYW1tYV9lbmFibGUgPQotCQljcnRjX3N0YXRl LT5iYXNlLmdhbW1hX2x1dCAmJgorCQljcnRjX3N0YXRlLT5ody5nYW1tYV9sdXQgJiYKIAkJIWNy dGNfc3RhdGUtPmM4X3BsYW5lczsKIAogCWNydGNfc3RhdGUtPmdhbW1hX21vZGUgPSBpOXh4X2dh bW1hX21vZGUoY3J0Y19zdGF0ZSk7CkBAIC0xMTc2LDExICsxMTc2LDExIEBAIHN0YXRpYyB1MzIg Y2h2X2NnbV9tb2RlKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQog CWlmIChjcnRjX3N0YXRlX2lzX2xlZ2FjeV9nYW1tYShjcnRjX3N0YXRlKSkKIAkJcmV0dXJuIDA7 CiAKLQlpZiAoY3J0Y19zdGF0ZS0+YmFzZS5kZWdhbW1hX2x1dCkKKwlpZiAoY3J0Y19zdGF0ZS0+ aHcuZGVnYW1tYV9sdXQpCiAJCWNnbV9tb2RlIHw9IENHTV9QSVBFX01PREVfREVHQU1NQTsKLQlp ZiAoY3J0Y19zdGF0ZS0+YmFzZS5jdG0pCisJaWYgKGNydGNfc3RhdGUtPmh3LmN0bSkKIAkJY2dt X21vZGUgfD0gQ0dNX1BJUEVfTU9ERV9DU0M7Ci0JaWYgKGNydGNfc3RhdGUtPmJhc2UuZ2FtbWFf bHV0KQorCWlmIChjcnRjX3N0YXRlLT5ody5nYW1tYV9sdXQpCiAJCWNnbV9tb2RlIHw9IENHTV9Q SVBFX01PREVfR0FNTUE7CiAKIAlyZXR1cm4gY2dtX21vZGU7CkBAIC0xMjU0LDcgKzEyNTQsNyBA QCBzdGF0aWMgaW50IGlsa19jb2xvcl9jaGVjayhzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0 Y19zdGF0ZSkKIAkJcmV0dXJuIHJldDsKIAogCWNydGNfc3RhdGUtPmdhbW1hX2VuYWJsZSA9Ci0J CWNydGNfc3RhdGUtPmJhc2UuZ2FtbWFfbHV0ICYmCisJCWNydGNfc3RhdGUtPmh3LmdhbW1hX2x1 dCAmJgogCQkhY3J0Y19zdGF0ZS0+YzhfcGxhbmVzOwogCiAJLyoKQEAgLTEyODAsOCArMTI4MCw4 IEBAIHN0YXRpYyB1MzIgaXZiX2dhbW1hX21vZGUoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3Rh dGUgKmNydGNfc3RhdGUpCiAJaWYgKCFjcnRjX3N0YXRlLT5nYW1tYV9lbmFibGUgfHwKIAkgICAg Y3J0Y19zdGF0ZV9pc19sZWdhY3lfZ2FtbWEoY3J0Y19zdGF0ZSkpCiAJCXJldHVybiBHQU1NQV9N T0RFX01PREVfOEJJVDsKLQllbHNlIGlmIChjcnRjX3N0YXRlLT5iYXNlLmdhbW1hX2x1dCAmJgot CQkgY3J0Y19zdGF0ZS0+YmFzZS5kZWdhbW1hX2x1dCkKKwllbHNlIGlmIChjcnRjX3N0YXRlLT5o dy5nYW1tYV9sdXQgJiYKKwkJIGNydGNfc3RhdGUtPmh3LmRlZ2FtbWFfbHV0KQogCQlyZXR1cm4g R0FNTUFfTU9ERV9NT0RFX1NQTElUOwogCWVsc2UKIAkJcmV0dXJuIEdBTU1BX01PREVfTU9ERV8x MEJJVDsKQEAgLTEyOTUsNyArMTI5NSw3IEBAIHN0YXRpYyB1MzIgaXZiX2NzY19tb2RlKGNvbnN0 IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQogCSAqIENTQyBjb21lcyBhZnRl ciB0aGUgTFVUIGluIGRlZ2FtbWEsIFJHQi0+WUNiQ3IsCiAJICogYW5kIFJHQiBmdWxsLT5saW1p dGVkIHJhbmdlIG1vZGUuCiAJICovCi0JaWYgKGNydGNfc3RhdGUtPmJhc2UuZGVnYW1tYV9sdXQg fHwKKwlpZiAoY3J0Y19zdGF0ZS0+aHcuZGVnYW1tYV9sdXQgfHwKIAkgICAgY3J0Y19zdGF0ZS0+ b3V0cHV0X2Zvcm1hdCAhPSBJTlRFTF9PVVRQVVRfRk9STUFUX1JHQiB8fAogCSAgICBsaW1pdGVk X2NvbG9yX3JhbmdlKQogCQlyZXR1cm4gMDsKQEAgLTEzMTMsMTMgKzEzMTMsMTMgQEAgc3RhdGlj IGludCBpdmJfY29sb3JfY2hlY2soc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUp CiAJCXJldHVybiByZXQ7CiAKIAljcnRjX3N0YXRlLT5nYW1tYV9lbmFibGUgPQotCQkoY3J0Y19z dGF0ZS0+YmFzZS5nYW1tYV9sdXQgfHwKLQkJIGNydGNfc3RhdGUtPmJhc2UuZGVnYW1tYV9sdXQp ICYmCisJCShjcnRjX3N0YXRlLT5ody5nYW1tYV9sdXQgfHwKKwkJIGNydGNfc3RhdGUtPmh3LmRl Z2FtbWFfbHV0KSAmJgogCQkhY3J0Y19zdGF0ZS0+YzhfcGxhbmVzOwogCiAJY3J0Y19zdGF0ZS0+ Y3NjX2VuYWJsZSA9CiAJCWNydGNfc3RhdGUtPm91dHB1dF9mb3JtYXQgIT0gSU5URUxfT1VUUFVU X0ZPUk1BVF9SR0IgfHwKLQkJY3J0Y19zdGF0ZS0+YmFzZS5jdG0gfHwgbGltaXRlZF9jb2xvcl9y YW5nZTsKKwkJY3J0Y19zdGF0ZS0+aHcuY3RtIHx8IGxpbWl0ZWRfY29sb3JfcmFuZ2U7CiAKIAlj cnRjX3N0YXRlLT5nYW1tYV9tb2RlID0gaXZiX2dhbW1hX21vZGUoY3J0Y19zdGF0ZSk7CiAKQEAg LTEzNTAsMTQgKzEzNTAsMTQgQEAgc3RhdGljIGludCBnbGtfY29sb3JfY2hlY2soc3RydWN0IGlu dGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCiAJCXJldHVybiByZXQ7CiAKIAljcnRjX3N0YXRl LT5nYW1tYV9lbmFibGUgPQotCQljcnRjX3N0YXRlLT5iYXNlLmdhbW1hX2x1dCAmJgorCQljcnRj X3N0YXRlLT5ody5nYW1tYV9sdXQgJiYKIAkJIWNydGNfc3RhdGUtPmM4X3BsYW5lczsKIAogCS8q IE9uIEdMSysgZGVnYW1tYSBMVVQgaXMgY29udHJvbGxlZCBieSBjc2NfZW5hYmxlICovCiAJY3J0 Y19zdGF0ZS0+Y3NjX2VuYWJsZSA9Ci0JCWNydGNfc3RhdGUtPmJhc2UuZGVnYW1tYV9sdXQgfHwK KwkJY3J0Y19zdGF0ZS0+aHcuZGVnYW1tYV9sdXQgfHwKIAkJY3J0Y19zdGF0ZS0+b3V0cHV0X2Zv cm1hdCAhPSBJTlRFTF9PVVRQVVRfRk9STUFUX1JHQiB8fAotCQljcnRjX3N0YXRlLT5iYXNlLmN0 bSB8fCBjcnRjX3N0YXRlLT5saW1pdGVkX2NvbG9yX3JhbmdlOworCQljcnRjX3N0YXRlLT5ody5j dG0gfHwgY3J0Y19zdGF0ZS0+bGltaXRlZF9jb2xvcl9yYW5nZTsKIAogCWNydGNfc3RhdGUtPmdh bW1hX21vZGUgPSBnbGtfZ2FtbWFfbW9kZShjcnRjX3N0YXRlKTsKIApAQCAtMTM3NCwxNCArMTM3 NCwxNCBAQCBzdGF0aWMgdTMyIGljbF9nYW1tYV9tb2RlKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRj X3N0YXRlICpjcnRjX3N0YXRlKQogewogCXUzMiBnYW1tYV9tb2RlID0gMDsKIAotCWlmIChjcnRj X3N0YXRlLT5iYXNlLmRlZ2FtbWFfbHV0KQorCWlmIChjcnRjX3N0YXRlLT5ody5kZWdhbW1hX2x1 dCkKIAkJZ2FtbWFfbW9kZSB8PSBQUkVfQ1NDX0dBTU1BX0VOQUJMRTsKIAotCWlmIChjcnRjX3N0 YXRlLT5iYXNlLmdhbW1hX2x1dCAmJgorCWlmIChjcnRjX3N0YXRlLT5ody5nYW1tYV9sdXQgJiYK IAkgICAgIWNydGNfc3RhdGUtPmM4X3BsYW5lcykKIAkJZ2FtbWFfbW9kZSB8PSBQT1NUX0NTQ19H QU1NQV9FTkFCTEU7CiAKLQlpZiAoIWNydGNfc3RhdGUtPmJhc2UuZ2FtbWFfbHV0IHx8CisJaWYg KCFjcnRjX3N0YXRlLT5ody5nYW1tYV9sdXQgfHwKIAkgICAgY3J0Y19zdGF0ZV9pc19sZWdhY3lf Z2FtbWEoY3J0Y19zdGF0ZSkpCiAJCWdhbW1hX21vZGUgfD0gR0FNTUFfTU9ERV9NT0RFXzhCSVQ7 CiAJZWxzZQpAQCAtMTM5NCw3ICsxMzk0LDcgQEAgc3RhdGljIHUzMiBpY2xfY3NjX21vZGUoY29u c3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCiB7CiAJdTMyIGNzY19tb2Rl ID0gMDsKIAotCWlmIChjcnRjX3N0YXRlLT5iYXNlLmN0bSkKKwlpZiAoY3J0Y19zdGF0ZS0+aHcu Y3RtKQogCQljc2NfbW9kZSB8PSBJQ0xfQ1NDX0VOQUJMRTsKIAogCWlmIChjcnRjX3N0YXRlLT5v dXRwdXRfZm9ybWF0ICE9IElOVEVMX09VVFBVVF9GT1JNQVRfUkdCIHx8CkBAIC0xNjIzLDcgKzE2 MjMsNyBAQCBzdGF0aWMgdm9pZCBpOXh4X3JlYWRfbHV0cyhzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0 ZSAqY3J0Y19zdGF0ZSkKIAlpZiAoIWNydGNfc3RhdGUtPmdhbW1hX2VuYWJsZSkKIAkJcmV0dXJu OwogCi0JY3J0Y19zdGF0ZS0+YmFzZS5nYW1tYV9sdXQgPSBpOXh4X3JlYWRfbHV0XzgoY3J0Y19z dGF0ZSk7CisJY3J0Y19zdGF0ZS0+aHcuZ2FtbWFfbHV0ID0gaTl4eF9yZWFkX2x1dF84KGNydGNf c3RhdGUpOwogfQogCiBzdGF0aWMgc3RydWN0IGRybV9wcm9wZXJ0eV9ibG9iICoKQEAgLTE2NzMs OSArMTY3Myw5IEBAIHN0YXRpYyB2b2lkIGk5NjVfcmVhZF9sdXRzKHN0cnVjdCBpbnRlbF9jcnRj X3N0YXRlICpjcnRjX3N0YXRlKQogCQlyZXR1cm47CiAKIAlpZiAoY3J0Y19zdGF0ZS0+Z2FtbWFf bW9kZSA9PSBHQU1NQV9NT0RFX01PREVfOEJJVCkKLQkJY3J0Y19zdGF0ZS0+YmFzZS5nYW1tYV9s dXQgPSBpOXh4X3JlYWRfbHV0XzgoY3J0Y19zdGF0ZSk7CisJCWNydGNfc3RhdGUtPmh3LmdhbW1h X2x1dCA9IGk5eHhfcmVhZF9sdXRfOChjcnRjX3N0YXRlKTsKIAllbHNlCi0JCWNydGNfc3RhdGUt PmJhc2UuZ2FtbWFfbHV0ID0gaTk2NV9yZWFkX2x1dF8xMHA2KGNydGNfc3RhdGUpOworCQljcnRj X3N0YXRlLT5ody5nYW1tYV9sdXQgPSBpOTY1X3JlYWRfbHV0XzEwcDYoY3J0Y19zdGF0ZSk7CiB9 CiAKIHN0YXRpYyBzdHJ1Y3QgZHJtX3Byb3BlcnR5X2Jsb2IgKgpAQCAtMTcxNSw3ICsxNzE1LDcg QEAgY2h2X3JlYWRfY2dtX2x1dChjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19z dGF0ZSkKIHN0YXRpYyB2b2lkIGNodl9yZWFkX2x1dHMoc3RydWN0IGludGVsX2NydGNfc3RhdGUg KmNydGNfc3RhdGUpCiB7CiAJaWYgKGNydGNfc3RhdGUtPmNnbV9tb2RlICYgQ0dNX1BJUEVfTU9E RV9HQU1NQSkKLQkJY3J0Y19zdGF0ZS0+YmFzZS5nYW1tYV9sdXQgPSBjaHZfcmVhZF9jZ21fbHV0 KGNydGNfc3RhdGUpOworCQljcnRjX3N0YXRlLT5ody5nYW1tYV9sdXQgPSBjaHZfcmVhZF9jZ21f bHV0KGNydGNfc3RhdGUpOwogCWVsc2UKIAkJaTk2NV9yZWFkX2x1dHMoY3J0Y19zdGF0ZSk7CiB9 CkBAIC0xNzYyLDkgKzE3NjIsOSBAQCBzdGF0aWMgdm9pZCBpbGtfcmVhZF9sdXRzKHN0cnVjdCBp bnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQogCQlyZXR1cm47CiAKIAlpZiAoY3J0Y19zdGF0 ZS0+Z2FtbWFfbW9kZSA9PSBHQU1NQV9NT0RFX01PREVfOEJJVCkKLQkJY3J0Y19zdGF0ZS0+YmFz ZS5nYW1tYV9sdXQgPSBpOXh4X3JlYWRfbHV0XzgoY3J0Y19zdGF0ZSk7CisJCWNydGNfc3RhdGUt Pmh3LmdhbW1hX2x1dCA9IGk5eHhfcmVhZF9sdXRfOChjcnRjX3N0YXRlKTsKIAllbHNlCi0JCWNy dGNfc3RhdGUtPmJhc2UuZ2FtbWFfbHV0ID0gaWxrX3JlYWRfbHV0XzEwKGNydGNfc3RhdGUpOwor CQljcnRjX3N0YXRlLT5ody5nYW1tYV9sdXQgPSBpbGtfcmVhZF9sdXRfMTAoY3J0Y19zdGF0ZSk7 CiB9CiAKIHN0YXRpYyBzdHJ1Y3QgZHJtX3Byb3BlcnR5X2Jsb2IgKgpAQCAtMTgxMSw5ICsxODEx LDkgQEAgc3RhdGljIHZvaWQgZ2xrX3JlYWRfbHV0cyhzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAq Y3J0Y19zdGF0ZSkKIAkJcmV0dXJuOwogCiAJaWYgKGNydGNfc3RhdGUtPmdhbW1hX21vZGUgPT0g R0FNTUFfTU9ERV9NT0RFXzhCSVQpCi0JCWNydGNfc3RhdGUtPmJhc2UuZ2FtbWFfbHV0ID0gaTl4 eF9yZWFkX2x1dF84KGNydGNfc3RhdGUpOworCQljcnRjX3N0YXRlLT5ody5nYW1tYV9sdXQgPSBp OXh4X3JlYWRfbHV0XzgoY3J0Y19zdGF0ZSk7CiAJZWxzZQotCQljcnRjX3N0YXRlLT5iYXNlLmdh bW1hX2x1dCA9IGdsa19yZWFkX2x1dF8xMChjcnRjX3N0YXRlLCBQQUxfUFJFQ19JTkRFWF9WQUxV RSgwKSk7CisJCWNydGNfc3RhdGUtPmh3LmdhbW1hX2x1dCA9IGdsa19yZWFkX2x1dF8xMChjcnRj X3N0YXRlLCBQQUxfUFJFQ19JTkRFWF9WQUxVRSgwKSk7CiB9CiAKIHZvaWQgaW50ZWxfY29sb3Jf aW5pdChzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YykKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2Rpc3BsYXkvaW50ZWxfY3J0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5 L2ludGVsX2NydC5jCmluZGV4IGZmNjEyNmVhNzkzYy4uMzk5YWJjM2Q1MjFlIDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2NydC5jCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfY3J0LmMKQEAgLTEzMiw5ICsxMzIsOSBAQCBzdGF0 aWMgdm9pZCBpbnRlbF9jcnRfZ2V0X2NvbmZpZyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2Rl ciwKIHsKIAlwaXBlX2NvbmZpZy0+b3V0cHV0X3R5cGVzIHw9IEJJVChJTlRFTF9PVVRQVVRfQU5B TE9HKTsKIAotCXBpcGVfY29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGUuZmxhZ3MgfD0gaW50ZWxf Y3J0X2dldF9mbGFncyhlbmNvZGVyKTsKKwlwaXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZS5m bGFncyB8PSBpbnRlbF9jcnRfZ2V0X2ZsYWdzKGVuY29kZXIpOwogCi0JcGlwZV9jb25maWctPmJh c2UuYWRqdXN0ZWRfbW9kZS5jcnRjX2Nsb2NrID0gcGlwZV9jb25maWctPnBvcnRfY2xvY2s7CisJ cGlwZV9jb25maWctPmh3LmFkanVzdGVkX21vZGUuY3J0Y19jbG9jayA9IHBpcGVfY29uZmlnLT5w b3J0X2Nsb2NrOwogfQogCiBzdGF0aWMgdm9pZCBoc3dfY3J0X2dldF9jb25maWcoc3RydWN0IGlu dGVsX2VuY29kZXIgKmVuY29kZXIsCkBAIC0xNDQsMTMgKzE0NCwxMyBAQCBzdGF0aWMgdm9pZCBo c3dfY3J0X2dldF9jb25maWcoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCiAKIAlpbnRl bF9kZGlfZ2V0X2NvbmZpZyhlbmNvZGVyLCBwaXBlX2NvbmZpZyk7CiAKLQlwaXBlX2NvbmZpZy0+ YmFzZS5hZGp1c3RlZF9tb2RlLmZsYWdzICY9IH4oRFJNX01PREVfRkxBR19QSFNZTkMgfAorCXBp cGVfY29uZmlnLT5ody5hZGp1c3RlZF9tb2RlLmZsYWdzICY9IH4oRFJNX01PREVfRkxBR19QSFNZ TkMgfAogCQkJCQkgICAgICBEUk1fTU9ERV9GTEFHX05IU1lOQyB8CiAJCQkJCSAgICAgIERSTV9N T0RFX0ZMQUdfUFZTWU5DIHwKIAkJCQkJICAgICAgRFJNX01PREVfRkxBR19OVlNZTkMpOwotCXBp cGVfY29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGUuZmxhZ3MgfD0gaW50ZWxfY3J0X2dldF9mbGFn cyhlbmNvZGVyKTsKKwlwaXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZS5mbGFncyB8PSBpbnRl bF9jcnRfZ2V0X2ZsYWdzKGVuY29kZXIpOwogCi0JcGlwZV9jb25maWctPmJhc2UuYWRqdXN0ZWRf bW9kZS5jcnRjX2Nsb2NrID0gbHB0X2dldF9pY2xraXAoZGV2X3ByaXYpOworCXBpcGVfY29uZmln LT5ody5hZGp1c3RlZF9tb2RlLmNydGNfY2xvY2sgPSBscHRfZ2V0X2ljbGtpcChkZXZfcHJpdik7 CiB9CiAKIC8qIE5vdGU6IFRoZSBjYWxsZXIgaXMgcmVxdWlyZWQgdG8gZmlsdGVyIG91dCBkcG1z IG1vZGVzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlCkBAIC0xNjIsNyArMTYyLDcgQEAgc3RhdGljIHZv aWQgaW50ZWxfY3J0X3NldF9kcG1zKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAogCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZW5jb2Rlci0+YmFzZS5k ZXYpOwogCXN0cnVjdCBpbnRlbF9jcnQgKmNydCA9IGludGVsX2VuY29kZXJfdG9fY3J0KGVuY29k ZXIpOwogCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRl LT5iYXNlLmNydGMpOwotCWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9t b2RlID0gJmNydGNfc3RhdGUtPmJhc2UuYWRqdXN0ZWRfbW9kZTsKKwljb25zdCBzdHJ1Y3QgZHJt X2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9ICZjcnRjX3N0YXRlLT5ody5hZGp1c3RlZF9t b2RlOwogCXUzMiBhZHBhOwogCiAJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNSkKQEAgLTM1 OCw3ICszNTgsNyBAQCBzdGF0aWMgaW50IGludGVsX2NydF9jb21wdXRlX2NvbmZpZyhzdHJ1Y3Qg aW50ZWxfZW5jb2RlciAqZW5jb2RlciwKIAkJCQkgICAgc3RydWN0IGRybV9jb25uZWN0b3Jfc3Rh dGUgKmNvbm5fc3RhdGUpCiB7CiAJc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21v ZGUgPQotCQkmcGlwZV9jb25maWctPmJhc2UuYWRqdXN0ZWRfbW9kZTsKKwkJJnBpcGVfY29uZmln LT5ody5hZGp1c3RlZF9tb2RlOwogCiAJaWYgKGFkanVzdGVkX21vZGUtPmZsYWdzICYgRFJNX01P REVfRkxBR19EQkxTQ0FOKQogCQlyZXR1cm4gLUVJTlZBTDsKQEAgLTM3Myw3ICszNzMsNyBAQCBz dGF0aWMgaW50IHBjaF9jcnRfY29tcHV0ZV9jb25maWcoc3RydWN0IGludGVsX2VuY29kZXIgKmVu Y29kZXIsCiAJCQkJICBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubl9zdGF0ZSkKIHsK IAlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9Ci0JCSZwaXBlX2NvbmZp Zy0+YmFzZS5hZGp1c3RlZF9tb2RlOworCQkmcGlwZV9jb25maWctPmh3LmFkanVzdGVkX21vZGU7 CiAKIAlpZiAoYWRqdXN0ZWRfbW9kZS0+ZmxhZ3MgJiBEUk1fTU9ERV9GTEFHX0RCTFNDQU4pCiAJ CXJldHVybiAtRUlOVkFMOwpAQCAtMzkwLDcgKzM5MCw3IEBAIHN0YXRpYyBpbnQgaHN3X2NydF9j b21wdXRlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKIHsKIAlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVuY29kZXItPmJhc2UuZGV2KTsK IAlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9Ci0JCSZwaXBlX2NvbmZp Zy0+YmFzZS5hZGp1c3RlZF9tb2RlOworCQkmcGlwZV9jb25maWctPmh3LmFkanVzdGVkX21vZGU7 CiAKIAlpZiAoYWRqdXN0ZWRfbW9kZS0+ZmxhZ3MgJiBEUk1fTU9ERV9GTEFHX0RCTFNDQU4pCiAJ CXJldHVybiAtRUlOVkFMOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxh eS9pbnRlbF9kZGkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGRpLmMK aW5kZXggMWE0OTI2NmY0ZjU3Li43Y2QwNWNhN2M4MTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGRpLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv ZGlzcGxheS9pbnRlbF9kZGkuYwpAQCAtMTUyOCw3ICsxNTI4LDcgQEAgc3RhdGljIHZvaWQgZGRp X2RvdGNsb2NrX2dldChzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcpCiAJaWYg KHBpcGVfY29uZmlnLT5waXhlbF9tdWx0aXBsaWVyKQogCQlkb3RjbG9jayAvPSBwaXBlX2NvbmZp Zy0+cGl4ZWxfbXVsdGlwbGllcjsKIAotCXBpcGVfY29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGUu Y3J0Y19jbG9jayA9IGRvdGNsb2NrOworCXBpcGVfY29uZmlnLT5ody5hZGp1c3RlZF9tb2RlLmNy dGNfY2xvY2sgPSBkb3RjbG9jazsKIH0KIAogc3RhdGljIHZvaWQgaWNsX2RkaV9jbG9ja19nZXQo c3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCkBAIC0xODYwLDkgKzE4NjAsOSBAQCBpbnRl bF9kZGlfdHJhbnNjb2Rlcl9mdW5jX3JlZ192YWxfZ2V0KGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRj X3N0YXRlICpjcnRjX3N0YXRlKQogCQlCVUcoKTsKIAl9CiAKLQlpZiAoY3J0Y19zdGF0ZS0+YmFz ZS5hZGp1c3RlZF9tb2RlLmZsYWdzICYgRFJNX01PREVfRkxBR19QVlNZTkMpCisJaWYgKGNydGNf c3RhdGUtPmh3LmFkanVzdGVkX21vZGUuZmxhZ3MgJiBEUk1fTU9ERV9GTEFHX1BWU1lOQykKIAkJ dGVtcCB8PSBUUkFOU19ERElfUFZTWU5DOwotCWlmIChjcnRjX3N0YXRlLT5iYXNlLmFkanVzdGVk X21vZGUuZmxhZ3MgJiBEUk1fTU9ERV9GTEFHX1BIU1lOQykKKwlpZiAoY3J0Y19zdGF0ZS0+aHcu YWRqdXN0ZWRfbW9kZS5mbGFncyAmIERSTV9NT0RFX0ZMQUdfUEhTWU5DKQogCQl0ZW1wIHw9IFRS QU5TX0RESV9QSFNZTkM7CiAKIAlpZiAoY3B1X3RyYW5zY29kZXIgPT0gVFJBTlNDT0RFUl9FRFAp IHsKQEAgLTMzNzEsNyArMzM3MSw3IEBAIHN0YXRpYyB2b2lkIHRnbF9kYzNjb19leGl0bGluZV9j b21wdXRlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKIHsKIAl1MzIgZXhp dF9zY2FubGluZXM7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkx NShjc3RhdGUtPmJhc2UuY3J0Yy0+ZGV2KTsKLQl1MzIgY3J0Y192ZGlzcGxheSA9IGNzdGF0ZS0+ YmFzZS5hZGp1c3RlZF9tb2RlLmNydGNfdmRpc3BsYXk7CisJdTMyIGNydGNfdmRpc3BsYXkgPSBj c3RhdGUtPmh3LmFkanVzdGVkX21vZGUuY3J0Y192ZGlzcGxheTsKIAogCWNzdGF0ZS0+ZGMzY29f ZXhpdGxpbmUgPSAwOwogCkBAIC0zMzgzLDcgKzMzODMsNyBAQCBzdGF0aWMgdm9pZCB0Z2xfZGMz Y29fZXhpdGxpbmVfY29tcHV0ZV9jb25maWcoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIs CiAJICAgIGVuY29kZXItPnBvcnQgIT0gUE9SVF9BKQogCQlyZXR1cm47CiAKLQlpZiAoIWNzdGF0 ZS0+aGFzX3BzcjIgfHwgIWNzdGF0ZS0+YmFzZS5hY3RpdmUpCisJaWYgKCFjc3RhdGUtPmhhc19w c3IyIHx8ICFjc3RhdGUtPmh3LmFjdGl2ZSkKIAkJcmV0dXJuOwogCiAJLyoKQEAgLTMzOTEsNyAr MzM5MSw3IEBAIHN0YXRpYyB2b2lkIHRnbF9kYzNjb19leGl0bGluZV9jb21wdXRlX2NvbmZpZyhz dHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKIAkgKiBQU1IyIHRyYW5zY29kZXIgRWFybHkg RXhpdCBzY2FubGluZXMgPSBST1VORFVQKDIwMCAvIGxpbmUgdGltZSkgKyAxCiAJICovCiAJZXhp dF9zY2FubGluZXMgPQotCQlpbnRlbF91c2Vjc190b19zY2FubGluZXMoJmNzdGF0ZS0+YmFzZS5h ZGp1c3RlZF9tb2RlLCAyMDApICsgMTsKKwkJaW50ZWxfdXNlY3NfdG9fc2NhbmxpbmVzKCZjc3Rh dGUtPmh3LmFkanVzdGVkX21vZGUsIDIwMCkgKyAxOwogCiAJaWYgKFdBUk5fT04oZXhpdF9zY2Fu bGluZXMgPiBjcnRjX3ZkaXNwbGF5KSkKIAkJcmV0dXJuOwpAQCAtNDA3OCw3ICs0MDc4LDcgQEAg aW50ZWxfZGRpX3VwZGF0ZV9wcmVwYXJlKHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRl LAogCVdBUk5fT04oY3J0YyAmJiBjcnRjLT5hY3RpdmUpOwogCiAJaW50ZWxfdGNfcG9ydF9nZXRf bGluayhlbmNfdG9fZGlnX3BvcnQoJmVuY29kZXItPmJhc2UpLCByZXF1aXJlZF9sYW5lcyk7Ci0J aWYgKGNydGNfc3RhdGUgJiYgY3J0Y19zdGF0ZS0+YmFzZS5hY3RpdmUpCisJaWYgKGNydGNfc3Rh dGUgJiYgY3J0Y19zdGF0ZS0+aHcuYWN0aXZlKQogCQlpbnRlbF91cGRhdGVfYWN0aXZlX2RwbGwo c3RhdGUsIGNydGMsIGVuY29kZXIpOwogfQogCkBAIC00MjI2LDcgKzQyMjYsNyBAQCB2b2lkIGlu dGVsX2RkaV9nZXRfY29uZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAogCWVsc2UK IAkJZmxhZ3MgfD0gRFJNX01PREVfRkxBR19OVlNZTkM7CiAKLQlwaXBlX2NvbmZpZy0+YmFzZS5h ZGp1c3RlZF9tb2RlLmZsYWdzIHw9IGZsYWdzOworCXBpcGVfY29uZmlnLT5ody5hZGp1c3RlZF9t b2RlLmZsYWdzIHw9IGZsYWdzOwogCiAJc3dpdGNoICh0ZW1wICYgVFJBTlNfRERJX0JQQ19NQVNL KSB7CiAJY2FzZSBUUkFOU19ERElfQlBDXzY6CkBAIC00NTA5LDcgKzQ1MDksNyBAQCBzdGF0aWMg aW50IGludGVsX2hkbWlfcmVzZXRfbGluayhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwK IAogCVdBUk5fT04oIWludGVsX2NydGNfaGFzX3R5cGUoY3J0Y19zdGF0ZSwgSU5URUxfT1VUUFVU X0hETUkpKTsKIAotCWlmICghY3J0Y19zdGF0ZS0+YmFzZS5hY3RpdmUpCisJaWYgKCFjcnRjX3N0 YXRlLT5ody5hY3RpdmUpCiAJCXJldHVybiAwOwogCiAJaWYgKCFjcnRjX3N0YXRlLT5oZG1pX2hp Z2hfdG1kc19jbG9ja19yYXRpbyAmJgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv ZGlzcGxheS9pbnRlbF9kaXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2lu dGVsX2Rpc3BsYXkuYwppbmRleCA3MWQzODQ1N2RmMzYuLjg5NWY2MzE1M2U4ZSAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5LmMKKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5LmMKQEAgLTEwMjcsNyArMTAy Nyw3IEBAIGJvb2wgaW50ZWxfY3J0Y19hY3RpdmUoc3RydWN0IGludGVsX2NydGMgKmNydGMpCiAJ ICogZm9yIGF0b21pYy4KIAkgKi8KIAlyZXR1cm4gY3J0Yy0+YWN0aXZlICYmIGNydGMtPmJhc2Uu cHJpbWFyeS0+c3RhdGUtPmZiICYmCi0JCWNydGMtPmNvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2Rl LmNydGNfY2xvY2s7CisJCWNydGMtPmNvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZS5jcnRjX2Nsb2Nr OwogfQogCiBlbnVtIHRyYW5zY29kZXIgaW50ZWxfcGlwZV90b19jcHVfdHJhbnNjb2RlcihzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCkBAIC01MDE0LDcgKzUwMTQsNyBAQCBzdGF0 aWMgdm9pZCBscHRfcHJvZ3JhbV9pY2xraXAoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUg KmNydGNfc3RhdGUpCiB7CiAJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRj KGNydGNfc3RhdGUtPmJhc2UuY3J0Yyk7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gdG9faTkxNShjcnRjLT5iYXNlLmRldik7Ci0JaW50IGNsb2NrID0gY3J0Y19zdGF0ZS0+ YmFzZS5hZGp1c3RlZF9tb2RlLmNydGNfY2xvY2s7CisJaW50IGNsb2NrID0gY3J0Y19zdGF0ZS0+ aHcuYWRqdXN0ZWRfbW9kZS5jcnRjX2Nsb2NrOwogCXUzMiBkaXZzZWwsIHBoYXNlaW5jLCBhdXhk aXYsIHBoYXNlZGlyID0gMDsKIAl1MzIgdGVtcDsKIApAQCAtNTI4Nyw3ICs1Mjg3LDcgQEAgc3Rh dGljIHZvaWQgaXJvbmxha2VfcGNoX2VuYWJsZShjb25zdCBzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0 YXRlICpzdGF0ZSwKIAlpZiAoSEFTX1BDSF9DUFQoZGV2X3ByaXYpICYmCiAJICAgIGludGVsX2Ny dGNfaGFzX2RwX2VuY29kZXIoY3J0Y19zdGF0ZSkpIHsKIAkJY29uc3Qgc3RydWN0IGRybV9kaXNw bGF5X21vZGUgKmFkanVzdGVkX21vZGUgPQotCQkJJmNydGNfc3RhdGUtPmJhc2UuYWRqdXN0ZWRf bW9kZTsKKwkJCSZjcnRjX3N0YXRlLT5ody5hZGp1c3RlZF9tb2RlOwogCQl1MzIgYnBjID0gKEk5 MTVfUkVBRChQSVBFQ09ORihwaXBlKSkgJiBQSVBFQ09ORl9CUENfTUFTSykgPj4gNTsKIAkJaTkx NV9yZWdfdCByZWcgPSBUUkFOU19EUF9DVEwocGlwZSk7CiAJCWVudW0gcG9ydCBwb3J0OwpAQCAt NTQzNyw3ICs1NDM3LDcgQEAgc2tsX3VwZGF0ZV9zY2FsZXIoc3RydWN0IGludGVsX2NydGNfc3Rh dGUgKmNydGNfc3RhdGUsIGJvb2wgZm9yY2VfZGV0YWNoLAogCQl0b19pbnRlbF9jcnRjKGNydGNf c3RhdGUtPmJhc2UuY3J0Yyk7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0g dG9faTkxNShpbnRlbF9jcnRjLT5iYXNlLmRldik7CiAJY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5 X21vZGUgKmFkanVzdGVkX21vZGUgPQotCQkmY3J0Y19zdGF0ZS0+YmFzZS5hZGp1c3RlZF9tb2Rl OworCQkmY3J0Y19zdGF0ZS0+aHcuYWRqdXN0ZWRfbW9kZTsKIAogCS8qCiAJICogU3JjIGNvb3Jk aW5hdGVzIGFyZSBhbHJlYWR5IHJvdGF0ZWQgYnkgMjcwIGRlZ3JlZXMgZm9yCkBAIC01NDUzLDcg KzU0NTMsNyBAQCBza2xfdXBkYXRlX3NjYWxlcihzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0 Y19zdGF0ZSwgYm9vbCBmb3JjZV9kZXRhY2gsCiAJICogT25jZSBOVjEyIGlzIGVuYWJsZWQsIGhh bmRsZSBpdCBoZXJlIHdoaWxlIGFsbG9jYXRpbmcgc2NhbGVyCiAJICogZm9yIE5WMTIuCiAJICov Ci0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSAmJiBjcnRjX3N0YXRlLT5iYXNlLmVuYWJs ZSAmJgorCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkgJiYgY3J0Y19zdGF0ZS0+aHcuZW5h YmxlICYmCiAJICAgIG5lZWRfc2NhbGVyICYmIGFkanVzdGVkX21vZGUtPmZsYWdzICYgRFJNX01P REVfRkxBR19JTlRFUkxBQ0UpIHsKIAkJRFJNX0RFQlVHX0tNUygiUGlwZS9QbGFuZSBzY2FsaW5n IG5vdCBzdXBwb3J0ZWQgd2l0aCBJRi1JRCBtb2RlXG4iKTsKIAkJcmV0dXJuIC1FSU5WQUw7CkBA IC01NTI1LDEzICs1NTI1LDEzIEBAIHNrbF91cGRhdGVfc2NhbGVyKHN0cnVjdCBpbnRlbF9jcnRj X3N0YXRlICpjcnRjX3N0YXRlLCBib29sIGZvcmNlX2RldGFjaCwKICAqLwogaW50IHNrbF91cGRh dGVfc2NhbGVyX2NydGMoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnN0YXRlKQogewotCWNvbnN0 IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2RlID0gJnN0YXRlLT5iYXNlLmFk anVzdGVkX21vZGU7CisJY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21v ZGUgPSAmc3RhdGUtPmh3LmFkanVzdGVkX21vZGU7CiAJYm9vbCBuZWVkX3NjYWxlciA9IGZhbHNl OwogCiAJaWYgKHN0YXRlLT5vdXRwdXRfZm9ybWF0ID09IElOVEVMX09VVFBVVF9GT1JNQVRfWUNC Q1I0MjApCiAJCW5lZWRfc2NhbGVyID0gdHJ1ZTsKIAotCXJldHVybiBza2xfdXBkYXRlX3NjYWxl cihzdGF0ZSwgIXN0YXRlLT5iYXNlLmFjdGl2ZSwgU0tMX0NSVENfSU5ERVgsCisJcmV0dXJuIHNr bF91cGRhdGVfc2NhbGVyKHN0YXRlLCAhc3RhdGUtPmh3LmFjdGl2ZSwgU0tMX0NSVENfSU5ERVgs CiAJCQkJICZzdGF0ZS0+c2NhbGVyX3N0YXRlLnNjYWxlcl9pZCwKIAkJCQkgc3RhdGUtPnBpcGVf c3JjX3csIHN0YXRlLT5waXBlX3NyY19oLAogCQkJCSBhZGp1c3RlZF9tb2RlLT5jcnRjX2hkaXNw bGF5LApAQCAtNTg4Myw3ICs1ODgzLDcgQEAgc3RhdGljIGJvb2wgaHN3X3Bvc3RfdXBkYXRlX2Vu YWJsZV9pcHMoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm9sZF9jcnRjX3MKIAkgKiBm b3JjaWJseSBlbmFibGUgSVBTIG9uIHRoZSBmaXJzdCBmYXN0c2V0LgogCSAqLwogCWlmIChuZXdf Y3J0Y19zdGF0ZS0+dXBkYXRlX3BpcGUgJiYKLQkgICAgb2xkX2NydGNfc3RhdGUtPmJhc2UuYWRq dXN0ZWRfbW9kZS5wcml2YXRlX2ZsYWdzICYgSTkxNV9NT0RFX0ZMQUdfSU5IRVJJVEVEKQorCSAg ICBvbGRfY3J0Y19zdGF0ZS0+aHcuYWRqdXN0ZWRfbW9kZS5wcml2YXRlX2ZsYWdzICYgSTkxNV9N T0RFX0ZMQUdfSU5IRVJJVEVEKQogCQlyZXR1cm4gdHJ1ZTsKIAogCXJldHVybiAhb2xkX2NydGNf c3RhdGUtPmlwc19lbmFibGVkOwpAQCAtNTkyNyw3ICs1OTI3LDcgQEAgc3RhdGljIHZvaWQgaW50 ZWxfcG9zdF9wbGFuZV91cGRhdGUoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0 YXRlKQogCiAJaW50ZWxfZnJvbnRidWZmZXJfZmxpcCh0b19pOTE1KGNydGMtPmJhc2UuZGV2KSwg cGlwZV9jb25maWctPmZiX2JpdHMpOwogCi0JaWYgKHBpcGVfY29uZmlnLT51cGRhdGVfd21fcG9z dCAmJiBwaXBlX2NvbmZpZy0+YmFzZS5hY3RpdmUpCisJaWYgKHBpcGVfY29uZmlnLT51cGRhdGVf d21fcG9zdCAmJiBwaXBlX2NvbmZpZy0+aHcuYWN0aXZlKQogCQlpbnRlbF91cGRhdGVfd2F0ZXJt YXJrcyhjcnRjKTsKIAogCWlmIChoc3dfcG9zdF91cGRhdGVfZW5hYmxlX2lwcyhvbGRfY3J0Y19z dGF0ZSwgcGlwZV9jb25maWcpKQpAQCAtNjAwNSw3ICs2MDA1LDcgQEAgc3RhdGljIHZvaWQgaW50 ZWxfcHJlX3BsYW5lX3VwZGF0ZShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqb2xkX2NydGNfc3Rh dGUsCiAJICogZXZlbnQgd2hpY2ggaXMgYWZ0ZXIgdGhlIHZibGFuayBzdGFydCBldmVudCwgc28g d2UgbmVlZCB0byBoYXZlIGEKIAkgKiB3YWl0LWZvci12YmxhbmsgYmV0d2VlbiBkaXNhYmxpbmcg dGhlIHBsYW5lIGFuZCB0aGUgcGlwZS4KIAkgKi8KLQlpZiAoSEFTX0dNQ0goZGV2X3ByaXYpICYm IG9sZF9jcnRjX3N0YXRlLT5iYXNlLmFjdGl2ZSAmJgorCWlmIChIQVNfR01DSChkZXZfcHJpdikg JiYgb2xkX2NydGNfc3RhdGUtPmh3LmFjdGl2ZSAmJgogCSAgICBwaXBlX2NvbmZpZy0+ZGlzYWJs ZV9jeHNyICYmIGludGVsX3NldF9tZW1vcnlfY3hzcihkZXZfcHJpdiwgZmFsc2UpKQogCQlpbnRl bF93YWl0X2Zvcl92YmxhbmsoZGV2X3ByaXYsIGNydGMtPnBpcGUpOwogCkBAIC02MDE3LDcgKzYw MTcsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9wcmVfcGxhbmVfdXBkYXRlKHN0cnVjdCBpbnRlbF9j cnRjX3N0YXRlICpvbGRfY3J0Y19zdGF0ZSwKIAkgKiBXYUN4U1JEaXNhYmxlZEZvclNwcml0ZVNj YWxpbmc6aXZiCiAJICovCiAJaWYgKHBpcGVfY29uZmlnLT5kaXNhYmxlX2xwX3dtICYmIGlsa19k aXNhYmxlX2xwX3dtKGRldikgJiYKLQkgICAgb2xkX2NydGNfc3RhdGUtPmJhc2UuYWN0aXZlKQor CSAgICBvbGRfY3J0Y19zdGF0ZS0+aHcuYWN0aXZlKQogCQlpbnRlbF93YWl0X2Zvcl92Ymxhbmso ZGV2X3ByaXYsIGNydGMtPnBpcGUpOwogCiAJLyoKQEAgLTY4MjEsNyArNjgyMSw3IEBAIHN0YXRp YyB1NjQgZ2V0X2NydGNfcG93ZXJfZG9tYWlucyhzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0 Y19zdGF0ZSkKIAl1NjQgbWFzazsKIAllbnVtIHRyYW5zY29kZXIgdHJhbnNjb2RlciA9IGNydGNf c3RhdGUtPmNwdV90cmFuc2NvZGVyOwogCi0JaWYgKCFjcnRjX3N0YXRlLT5iYXNlLmFjdGl2ZSkK KwlpZiAoIWNydGNfc3RhdGUtPmh3LmFjdGl2ZSkKIAkJcmV0dXJuIDA7CiAKIAltYXNrID0gQklU X1VMTChQT1dFUl9ET01BSU5fUElQRShwaXBlKSk7CkBAIC03MTc4LDggKzcxNzgsOCBAQCBzdGF0 aWMgdm9pZCBpbnRlbF9jb25uZWN0b3JfdmVyaWZ5X3N0YXRlKHN0cnVjdCBpbnRlbF9jcnRjX3N0 YXRlICpjcnRjX3N0YXRlLAogCQlpZiAoIWNydGNfc3RhdGUpCiAJCQlyZXR1cm47CiAKLQkJSTkx NV9TVEFURV9XQVJOKCFjcnRjX3N0YXRlLT5iYXNlLmFjdGl2ZSwKLQkJICAgICAgImNvbm5lY3Rv ciBpcyBhY3RpdmUsIGJ1dCBhdHRhY2hlZCBjcnRjIGlzbid0XG4iKTsKKwkJSTkxNV9TVEFURV9X QVJOKCFjcnRjX3N0YXRlLT5ody5hY3RpdmUsCisJCQkJImNvbm5lY3RvciBpcyBhY3RpdmUsIGJ1 dCBhdHRhY2hlZCBjcnRjIGlzbid0XG4iKTsKIAogCQlpZiAoIWVuY29kZXIgfHwgZW5jb2Rlci0+ dHlwZSA9PSBJTlRFTF9PVVRQVVRfRFBfTVNUKQogCQkJcmV0dXJuOwpAQCAtNzE5MCw4ICs3MTkw LDggQEAgc3RhdGljIHZvaWQgaW50ZWxfY29ubmVjdG9yX3ZlcmlmeV9zdGF0ZShzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKIAkJSTkxNV9TVEFURV9XQVJOKGNvbm5fc3RhdGUt PmNydGMgIT0gZW5jb2Rlci0+YmFzZS5jcnRjLAogCQkJImF0dGFjaGVkIGVuY29kZXIgY3J0YyBk aWZmZXJzIGZyb20gY29ubmVjdG9yIGNydGNcbiIpOwogCX0gZWxzZSB7Ci0JCUk5MTVfU1RBVEVf V0FSTihjcnRjX3N0YXRlICYmIGNydGNfc3RhdGUtPmJhc2UuYWN0aXZlLAotCQkJImF0dGFjaGVk IGNydGMgaXMgYWN0aXZlLCBidXQgY29ubmVjdG9yIGlzbid0XG4iKTsKKwkJSTkxNV9TVEFURV9X QVJOKGNydGNfc3RhdGUgJiYgY3J0Y19zdGF0ZS0+aHcuYWN0aXZlLAorCQkJCSJhdHRhY2hlZCBj cnRjIGlzIGFjdGl2ZSwgYnV0IGNvbm5lY3RvciBpc24ndFxuIik7CiAJCUk5MTVfU1RBVEVfV0FS TighY3J0Y19zdGF0ZSAmJiBjb25uX3N0YXRlLT5iZXN0X2VuY29kZXIsCiAJCQkiYmVzdCBlbmNv ZGVyIHNldCB3aXRob3V0IGNydGMhXG4iKTsKIAl9CkBAIC03MTk5LDcgKzcxOTksNyBAQCBzdGF0 aWMgdm9pZCBpbnRlbF9jb25uZWN0b3JfdmVyaWZ5X3N0YXRlKHN0cnVjdCBpbnRlbF9jcnRjX3N0 YXRlICpjcnRjX3N0YXRlLAogCiBzdGF0aWMgaW50IHBpcGVfcmVxdWlyZWRfZmRpX2xhbmVzKHN0 cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQogewotCWlmIChjcnRjX3N0YXRlLT5i YXNlLmVuYWJsZSAmJiBjcnRjX3N0YXRlLT5oYXNfcGNoX2VuY29kZXIpCisJaWYgKGNydGNfc3Rh dGUtPmh3LmVuYWJsZSAmJiBjcnRjX3N0YXRlLT5oYXNfcGNoX2VuY29kZXIpCiAJCXJldHVybiBj cnRjX3N0YXRlLT5mZGlfbGFuZXM7CiAKIAlyZXR1cm4gMDsKQEAgLTcyODIsNyArNzI4Miw3IEBA IHN0YXRpYyBpbnQgaXJvbmxha2VfZmRpX2NvbXB1dGVfY29uZmlnKHN0cnVjdCBpbnRlbF9jcnRj ICppbnRlbF9jcnRjLAogCQkJCSAgICAgICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9j b25maWcpCiB7CiAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGludGVsX2NydGMtPmJhc2UuZGV2 OwotCWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2RlID0gJnBpcGVf Y29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGU7CisJY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21v ZGUgKmFkanVzdGVkX21vZGUgPSAmcGlwZV9jb25maWctPmh3LmFkanVzdGVkX21vZGU7CiAJaW50 IGxhbmUsIGxpbmtfYncsIGZkaV9kb3RjbG9jaywgcmV0OwogCWJvb2wgbmVlZHNfcmVjb21wdXRl ID0gZmFsc2U7CiAKQEAgLTczOTksNyArNzM5OSw3IEBAIHN0YXRpYyB1MzIgaWxrX3BpcGVfcGl4 ZWxfcmF0ZShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcpCiB7CiAJ dTMyIHBpeGVsX3JhdGU7CiAKLQlwaXhlbF9yYXRlID0gcGlwZV9jb25maWctPmJhc2UuYWRqdXN0 ZWRfbW9kZS5jcnRjX2Nsb2NrOworCXBpeGVsX3JhdGUgPSBwaXBlX2NvbmZpZy0+aHcuYWRqdXN0 ZWRfbW9kZS5jcnRjX2Nsb2NrOwogCiAJLyoKIAkgKiBXZSBvbmx5IHVzZSBJRi1JRCBpbnRlcmxh Y2luZy4gSWYgd2UgZXZlciB1c2UKQEAgLTc0MzcsNyArNzQzNyw3IEBAIHN0YXRpYyB2b2lkIGlu dGVsX2NydGNfY29tcHV0ZV9waXhlbF9yYXRlKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRj X3N0YXRlKQogCWlmIChIQVNfR01DSChkZXZfcHJpdikpCiAJCS8qIEZJWE1FIGNhbGN1bGF0ZSBw cm9wZXIgcGlwZSBwaXhlbCByYXRlIGZvciBHTUNIIHBmaXQgKi8KIAkJY3J0Y19zdGF0ZS0+cGl4 ZWxfcmF0ZSA9Ci0JCQljcnRjX3N0YXRlLT5iYXNlLmFkanVzdGVkX21vZGUuY3J0Y19jbG9jazsK KwkJCWNydGNfc3RhdGUtPmh3LmFkanVzdGVkX21vZGUuY3J0Y19jbG9jazsKIAllbHNlCiAJCWNy dGNfc3RhdGUtPnBpeGVsX3JhdGUgPQogCQkJaWxrX3BpcGVfcGl4ZWxfcmF0ZShjcnRjX3N0YXRl KTsKQEAgLTc0NDcsNyArNzQ0Nyw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfY3J0Y19jb21wdXRlX2Nv bmZpZyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKIAkJCQkgICAgIHN0cnVjdCBpbnRlbF9jcnRj X3N0YXRlICpwaXBlX2NvbmZpZykKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYgPSB0b19pOTE1KGNydGMtPmJhc2UuZGV2KTsKLQljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlf bW9kZSAqYWRqdXN0ZWRfbW9kZSA9ICZwaXBlX2NvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlOwor CWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2RlID0gJnBpcGVfY29u ZmlnLT5ody5hZGp1c3RlZF9tb2RlOwogCWludCBjbG9ja19saW1pdCA9IGRldl9wcml2LT5tYXhf ZG90Y2xrX2ZyZXE7CiAKIAlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDQpIHsKQEAgLTc0NzMs NyArNzQ3Myw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfY3J0Y19jb21wdXRlX2NvbmZpZyhzdHJ1Y3Qg aW50ZWxfY3J0YyAqY3J0YywKIAogCWlmICgocGlwZV9jb25maWctPm91dHB1dF9mb3JtYXQgPT0g SU5URUxfT1VUUFVUX0ZPUk1BVF9ZQ0JDUjQyMCB8fAogCSAgICAgcGlwZV9jb25maWctPm91dHB1 dF9mb3JtYXQgPT0gSU5URUxfT1VUUFVUX0ZPUk1BVF9ZQ0JDUjQ0NCkgJiYKLQkgICAgIHBpcGVf Y29uZmlnLT5iYXNlLmN0bSkgeworCSAgICAgcGlwZV9jb25maWctPmh3LmN0bSkgewogCQkvKgog CQkgKiBUaGVyZSBpcyBvbmx5IG9uZSBwaXBlIENTQyB1bml0IHBlciBwaXBlLCBhbmQgd2UgbmVl ZCB0aGF0CiAJCSAqIGZvciBvdXRwdXQgY29udmVyc2lvbiBmcm9tIFJHQi0+WUNCQ1IuIFNvIGlm IENUTSBpcyBhbHJlYWR5CkBAIC04MTcxLDcgKzgxNzEsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9z ZXRfcGlwZV90aW1pbmdzKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRl KQogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Yy0+YmFz ZS5kZXYpOwogCWVudW0gcGlwZSBwaXBlID0gY3J0Yy0+cGlwZTsKIAllbnVtIHRyYW5zY29kZXIg Y3B1X3RyYW5zY29kZXIgPSBjcnRjX3N0YXRlLT5jcHVfdHJhbnNjb2RlcjsKLQljb25zdCBzdHJ1 Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9ICZjcnRjX3N0YXRlLT5iYXNlLmFk anVzdGVkX21vZGU7CisJY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21v ZGUgPSAmY3J0Y19zdGF0ZS0+aHcuYWRqdXN0ZWRfbW9kZTsKIAl1MzIgY3J0Y192dG90YWwsIGNy dGNfdmJsYW5rX2VuZDsKIAlpbnQgdnN5bmNzaGlmdCA9IDA7CiAKQEAgLTgyNjUsMzkgKzgyNjUs MzkgQEAgc3RhdGljIHZvaWQgaW50ZWxfZ2V0X3BpcGVfdGltaW5ncyhzdHJ1Y3QgaW50ZWxfY3J0 YyAqY3J0YywKIAl1MzIgdG1wOwogCiAJdG1wID0gSTkxNV9SRUFEKEhUT1RBTChjcHVfdHJhbnNj b2RlcikpOwotCXBpcGVfY29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGUuY3J0Y19oZGlzcGxheSA9 ICh0bXAgJiAweGZmZmYpICsgMTsKLQlwaXBlX2NvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlLmNy dGNfaHRvdGFsID0gKCh0bXAgPj4gMTYpICYgMHhmZmZmKSArIDE7CisJcGlwZV9jb25maWctPmh3 LmFkanVzdGVkX21vZGUuY3J0Y19oZGlzcGxheSA9ICh0bXAgJiAweGZmZmYpICsgMTsKKwlwaXBl X2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZS5jcnRjX2h0b3RhbCA9ICgodG1wID4+IDE2KSAmIDB4 ZmZmZikgKyAxOwogCiAJaWYgKCF0cmFuc2NvZGVyX2lzX2RzaShjcHVfdHJhbnNjb2RlcikpIHsK IAkJdG1wID0gSTkxNV9SRUFEKEhCTEFOSyhjcHVfdHJhbnNjb2RlcikpOwotCQlwaXBlX2NvbmZp Zy0+YmFzZS5hZGp1c3RlZF9tb2RlLmNydGNfaGJsYW5rX3N0YXJ0ID0KKwkJcGlwZV9jb25maWct Pmh3LmFkanVzdGVkX21vZGUuY3J0Y19oYmxhbmtfc3RhcnQgPQogCQkJCQkJCSh0bXAgJiAweGZm ZmYpICsgMTsKLQkJcGlwZV9jb25maWctPmJhc2UuYWRqdXN0ZWRfbW9kZS5jcnRjX2hibGFua19l bmQgPQorCQlwaXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZS5jcnRjX2hibGFua19lbmQgPQog CQkJCQkJKCh0bXAgPj4gMTYpICYgMHhmZmZmKSArIDE7CiAJfQogCXRtcCA9IEk5MTVfUkVBRChI U1lOQyhjcHVfdHJhbnNjb2RlcikpOwotCXBpcGVfY29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGUu Y3J0Y19oc3luY19zdGFydCA9ICh0bXAgJiAweGZmZmYpICsgMTsKLQlwaXBlX2NvbmZpZy0+YmFz ZS5hZGp1c3RlZF9tb2RlLmNydGNfaHN5bmNfZW5kID0gKCh0bXAgPj4gMTYpICYgMHhmZmZmKSAr IDE7CisJcGlwZV9jb25maWctPmh3LmFkanVzdGVkX21vZGUuY3J0Y19oc3luY19zdGFydCA9ICh0 bXAgJiAweGZmZmYpICsgMTsKKwlwaXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZS5jcnRjX2hz eW5jX2VuZCA9ICgodG1wID4+IDE2KSAmIDB4ZmZmZikgKyAxOwogCiAJdG1wID0gSTkxNV9SRUFE KFZUT1RBTChjcHVfdHJhbnNjb2RlcikpOwotCXBpcGVfY29uZmlnLT5iYXNlLmFkanVzdGVkX21v ZGUuY3J0Y192ZGlzcGxheSA9ICh0bXAgJiAweGZmZmYpICsgMTsKLQlwaXBlX2NvbmZpZy0+YmFz ZS5hZGp1c3RlZF9tb2RlLmNydGNfdnRvdGFsID0gKCh0bXAgPj4gMTYpICYgMHhmZmZmKSArIDE7 CisJcGlwZV9jb25maWctPmh3LmFkanVzdGVkX21vZGUuY3J0Y192ZGlzcGxheSA9ICh0bXAgJiAw eGZmZmYpICsgMTsKKwlwaXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZS5jcnRjX3Z0b3RhbCA9 ICgodG1wID4+IDE2KSAmIDB4ZmZmZikgKyAxOwogCiAJaWYgKCF0cmFuc2NvZGVyX2lzX2RzaShj cHVfdHJhbnNjb2RlcikpIHsKIAkJdG1wID0gSTkxNV9SRUFEKFZCTEFOSyhjcHVfdHJhbnNjb2Rl cikpOwotCQlwaXBlX2NvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlLmNydGNfdmJsYW5rX3N0YXJ0 ID0KKwkJcGlwZV9jb25maWctPmh3LmFkanVzdGVkX21vZGUuY3J0Y192Ymxhbmtfc3RhcnQgPQog CQkJCQkJCSh0bXAgJiAweGZmZmYpICsgMTsKLQkJcGlwZV9jb25maWctPmJhc2UuYWRqdXN0ZWRf bW9kZS5jcnRjX3ZibGFua19lbmQgPQorCQlwaXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZS5j cnRjX3ZibGFua19lbmQgPQogCQkJCQkJKCh0bXAgPj4gMTYpICYgMHhmZmZmKSArIDE7CiAJfQog CXRtcCA9IEk5MTVfUkVBRChWU1lOQyhjcHVfdHJhbnNjb2RlcikpOwotCXBpcGVfY29uZmlnLT5i YXNlLmFkanVzdGVkX21vZGUuY3J0Y192c3luY19zdGFydCA9ICh0bXAgJiAweGZmZmYpICsgMTsK LQlwaXBlX2NvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlLmNydGNfdnN5bmNfZW5kID0gKCh0bXAg Pj4gMTYpICYgMHhmZmZmKSArIDE7CisJcGlwZV9jb25maWctPmh3LmFkanVzdGVkX21vZGUuY3J0 Y192c3luY19zdGFydCA9ICh0bXAgJiAweGZmZmYpICsgMTsKKwlwaXBlX2NvbmZpZy0+aHcuYWRq dXN0ZWRfbW9kZS5jcnRjX3ZzeW5jX2VuZCA9ICgodG1wID4+IDE2KSAmIDB4ZmZmZikgKyAxOwog CiAJaWYgKGludGVsX3BpcGVfaXNfaW50ZXJsYWNlZChwaXBlX2NvbmZpZykpIHsKLQkJcGlwZV9j b25maWctPmJhc2UuYWRqdXN0ZWRfbW9kZS5mbGFncyB8PSBEUk1fTU9ERV9GTEFHX0lOVEVSTEFD RTsKLQkJcGlwZV9jb25maWctPmJhc2UuYWRqdXN0ZWRfbW9kZS5jcnRjX3Z0b3RhbCArPSAxOwot CQlwaXBlX2NvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlLmNydGNfdmJsYW5rX2VuZCArPSAxOwor CQlwaXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZS5mbGFncyB8PSBEUk1fTU9ERV9GTEFHX0lO VEVSTEFDRTsKKwkJcGlwZV9jb25maWctPmh3LmFkanVzdGVkX21vZGUuY3J0Y192dG90YWwgKz0g MTsKKwkJcGlwZV9jb25maWctPmh3LmFkanVzdGVkX21vZGUuY3J0Y192YmxhbmtfZW5kICs9IDE7 CiAJfQogfQogCkBAIC04MzEyLDI3ICs4MzEyLDI3IEBAIHN0YXRpYyB2b2lkIGludGVsX2dldF9w aXBlX3NyY19zaXplKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAogCXBpcGVfY29uZmlnLT5waXBl X3NyY19oID0gKHRtcCAmIDB4ZmZmZikgKyAxOwogCXBpcGVfY29uZmlnLT5waXBlX3NyY193ID0g KCh0bXAgPj4gMTYpICYgMHhmZmZmKSArIDE7CiAKLQlwaXBlX2NvbmZpZy0+YmFzZS5tb2RlLnZk aXNwbGF5ID0gcGlwZV9jb25maWctPnBpcGVfc3JjX2g7Ci0JcGlwZV9jb25maWctPmJhc2UubW9k ZS5oZGlzcGxheSA9IHBpcGVfY29uZmlnLT5waXBlX3NyY193OworCXBpcGVfY29uZmlnLT5ody5t b2RlLnZkaXNwbGF5ID0gcGlwZV9jb25maWctPnBpcGVfc3JjX2g7CisJcGlwZV9jb25maWctPmh3 Lm1vZGUuaGRpc3BsYXkgPSBwaXBlX2NvbmZpZy0+cGlwZV9zcmNfdzsKIH0KIAogdm9pZCBpbnRl bF9tb2RlX2Zyb21fcGlwZV9jb25maWcoc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUsCiAJ CQkJIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZykKIHsKLQltb2RlLT5oZGlz cGxheSA9IHBpcGVfY29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGUuY3J0Y19oZGlzcGxheTsKLQlt b2RlLT5odG90YWwgPSBwaXBlX2NvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlLmNydGNfaHRvdGFs OwotCW1vZGUtPmhzeW5jX3N0YXJ0ID0gcGlwZV9jb25maWctPmJhc2UuYWRqdXN0ZWRfbW9kZS5j cnRjX2hzeW5jX3N0YXJ0OwotCW1vZGUtPmhzeW5jX2VuZCA9IHBpcGVfY29uZmlnLT5iYXNlLmFk anVzdGVkX21vZGUuY3J0Y19oc3luY19lbmQ7CisJbW9kZS0+aGRpc3BsYXkgPSBwaXBlX2NvbmZp Zy0+aHcuYWRqdXN0ZWRfbW9kZS5jcnRjX2hkaXNwbGF5OworCW1vZGUtPmh0b3RhbCA9IHBpcGVf Y29uZmlnLT5ody5hZGp1c3RlZF9tb2RlLmNydGNfaHRvdGFsOworCW1vZGUtPmhzeW5jX3N0YXJ0 ID0gcGlwZV9jb25maWctPmh3LmFkanVzdGVkX21vZGUuY3J0Y19oc3luY19zdGFydDsKKwltb2Rl LT5oc3luY19lbmQgPSBwaXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZS5jcnRjX2hzeW5jX2Vu ZDsKIAotCW1vZGUtPnZkaXNwbGF5ID0gcGlwZV9jb25maWctPmJhc2UuYWRqdXN0ZWRfbW9kZS5j cnRjX3ZkaXNwbGF5OwotCW1vZGUtPnZ0b3RhbCA9IHBpcGVfY29uZmlnLT5iYXNlLmFkanVzdGVk X21vZGUuY3J0Y192dG90YWw7Ci0JbW9kZS0+dnN5bmNfc3RhcnQgPSBwaXBlX2NvbmZpZy0+YmFz ZS5hZGp1c3RlZF9tb2RlLmNydGNfdnN5bmNfc3RhcnQ7Ci0JbW9kZS0+dnN5bmNfZW5kID0gcGlw ZV9jb25maWctPmJhc2UuYWRqdXN0ZWRfbW9kZS5jcnRjX3ZzeW5jX2VuZDsKKwltb2RlLT52ZGlz cGxheSA9IHBpcGVfY29uZmlnLT5ody5hZGp1c3RlZF9tb2RlLmNydGNfdmRpc3BsYXk7CisJbW9k ZS0+dnRvdGFsID0gcGlwZV9jb25maWctPmh3LmFkanVzdGVkX21vZGUuY3J0Y192dG90YWw7CisJ bW9kZS0+dnN5bmNfc3RhcnQgPSBwaXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZS5jcnRjX3Zz eW5jX3N0YXJ0OworCW1vZGUtPnZzeW5jX2VuZCA9IHBpcGVfY29uZmlnLT5ody5hZGp1c3RlZF9t b2RlLmNydGNfdnN5bmNfZW5kOwogCi0JbW9kZS0+ZmxhZ3MgPSBwaXBlX2NvbmZpZy0+YmFzZS5h ZGp1c3RlZF9tb2RlLmZsYWdzOworCW1vZGUtPmZsYWdzID0gcGlwZV9jb25maWctPmh3LmFkanVz dGVkX21vZGUuZmxhZ3M7CiAJbW9kZS0+dHlwZSA9IERSTV9NT0RFX1RZUEVfRFJJVkVSOwogCi0J bW9kZS0+Y2xvY2sgPSBwaXBlX2NvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlLmNydGNfY2xvY2s7 CisJbW9kZS0+Y2xvY2sgPSBwaXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZS5jcnRjX2Nsb2Nr OwogCiAJbW9kZS0+aHN5bmMgPSBkcm1fbW9kZV9oc3luYyhtb2RlKTsKIAltb2RlLT52cmVmcmVz aCA9IGRybV9tb2RlX3ZyZWZyZXNoKG1vZGUpOwpAQCAtODM3OCw3ICs4Mzc4LDcgQEAgc3RhdGlj IHZvaWQgaTl4eF9zZXRfcGlwZWNvbmYoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNy dGNfc3RhdGUpCiAJCX0KIAl9CiAKLQlpZiAoY3J0Y19zdGF0ZS0+YmFzZS5hZGp1c3RlZF9tb2Rl LmZsYWdzICYgRFJNX01PREVfRkxBR19JTlRFUkxBQ0UpIHsKKwlpZiAoY3J0Y19zdGF0ZS0+aHcu YWRqdXN0ZWRfbW9kZS5mbGFncyAmIERSTV9NT0RFX0ZMQUdfSU5URVJMQUNFKSB7CiAJCWlmIChJ TlRFTF9HRU4oZGV2X3ByaXYpIDwgNCB8fAogCQkgICAgaW50ZWxfY3J0Y19oYXNfdHlwZShjcnRj X3N0YXRlLCBJTlRFTF9PVVRQVVRfU0RWTykpCiAJCQlwaXBlY29uZiB8PSBQSVBFQ09ORl9JTlRF UkxBQ0VfV19GSUVMRF9JTkRJQ0FUSU9OOwpAQCAtODkxMSw3ICs4OTExLDcgQEAgc3RhdGljIGJv b2wgaTl4eF9nZXRfcGlwZV9jb25maWcoc3RydWN0IGludGVsX2NydGMgKmNydGMsCiAJICogYnV0 IGluIGNhc2UgdGhlIHBpcGUgaXMgZW5hYmxlZCB3L28gYW55IHBvcnRzIHdlIG5lZWQgYSBzYW5l CiAJICogZGVmYXVsdC4KIAkgKi8KLQlwaXBlX2NvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlLmNy dGNfY2xvY2sgPQorCXBpcGVfY29uZmlnLT5ody5hZGp1c3RlZF9tb2RlLmNydGNfY2xvY2sgPQog CQlwaXBlX2NvbmZpZy0+cG9ydF9jbG9jayAvIHBpcGVfY29uZmlnLT5waXhlbF9tdWx0aXBsaWVy OwogCiAJcmV0ID0gdHJ1ZTsKQEAgLTk0NTQsNyArOTQ1NCw3IEBAIHN0YXRpYyB2b2lkIGlyb25s YWtlX3NldF9waXBlY29uZihjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0 ZSkKIAlpZiAoY3J0Y19zdGF0ZS0+ZGl0aGVyKQogCQl2YWwgfD0gKFBJUEVDT05GX0RJVEhFUl9F TiB8IFBJUEVDT05GX0RJVEhFUl9UWVBFX1NQKTsKIAotCWlmIChjcnRjX3N0YXRlLT5iYXNlLmFk anVzdGVkX21vZGUuZmxhZ3MgJiBEUk1fTU9ERV9GTEFHX0lOVEVSTEFDRSkKKwlpZiAoY3J0Y19z dGF0ZS0+aHcuYWRqdXN0ZWRfbW9kZS5mbGFncyAmIERSTV9NT0RFX0ZMQUdfSU5URVJMQUNFKQog CQl2YWwgfD0gUElQRUNPTkZfSU5URVJMQUNFRF9JTEs7CiAJZWxzZQogCQl2YWwgfD0gUElQRUNP TkZfUFJPR1JFU1NJVkU7CkBAIC05NDg4LDcgKzk0ODgsNyBAQCBzdGF0aWMgdm9pZCBoYXN3ZWxs X3NldF9waXBlY29uZihjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkK IAlpZiAoSVNfSEFTV0VMTChkZXZfcHJpdikgJiYgY3J0Y19zdGF0ZS0+ZGl0aGVyKQogCQl2YWwg fD0gKFBJUEVDT05GX0RJVEhFUl9FTiB8IFBJUEVDT05GX0RJVEhFUl9UWVBFX1NQKTsKIAotCWlm IChjcnRjX3N0YXRlLT5iYXNlLmFkanVzdGVkX21vZGUuZmxhZ3MgJiBEUk1fTU9ERV9GTEFHX0lO VEVSTEFDRSkKKwlpZiAoY3J0Y19zdGF0ZS0+aHcuYWRqdXN0ZWRfbW9kZS5mbGFncyAmIERSTV9N T0RFX0ZMQUdfSU5URVJMQUNFKQogCQl2YWwgfD0gUElQRUNPTkZfSU5URVJMQUNFRF9JTEs7CiAJ ZWxzZQogCQl2YWwgfD0gUElQRUNPTkZfUFJPR1JFU1NJVkU7CkBAIC0xMTU3MCw3ICsxMTU3MCw3 IEBAIHN0YXRpYyB2b2lkIGlyb25sYWtlX3BjaF9jbG9ja19nZXQoc3RydWN0IGludGVsX2NydGMg KmNydGMsCiAJICogd2UgbWF5IG5lZWQgc29tZSBpZGVhIGZvciB0aGUgZG90Y2xvY2sgYW55d2F5 LgogCSAqIENhbGN1bGF0ZSBvbmUgYmFzZWQgb24gdGhlIEZESSBjb25maWd1cmF0aW9uLgogCSAq LwotCXBpcGVfY29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGUuY3J0Y19jbG9jayA9CisJcGlwZV9j b25maWctPmh3LmFkanVzdGVkX21vZGUuY3J0Y19jbG9jayA9CiAJCWludGVsX2RvdGNsb2NrX2Nh bGN1bGF0ZShpbnRlbF9mZGlfbGlua19mcmVxKGRldl9wcml2LCBwaXBlX2NvbmZpZyksCiAJCQkJ CSAmcGlwZV9jb25maWctPmZkaV9tX24pOwogfQpAQCAtMTE2NzUsOCArMTE2NzUsOCBAQCBpbnQg aW50ZWxfcGxhbmVfYXRvbWljX2NhbGNfY2hhbmdlcyhjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19z dGF0ZSAqb2xkX2NydGNfc3RhdAogCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRl bF9wbGFuZShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFuZSk7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRjLT5iYXNlLmRldik7CiAJYm9vbCBtb2RlX2NoYW5n ZWQgPSBuZWVkc19tb2Rlc2V0KGNydGNfc3RhdGUpOwotCWJvb2wgd2FzX2NydGNfZW5hYmxlZCA9 IG9sZF9jcnRjX3N0YXRlLT5iYXNlLmFjdGl2ZTsKLQlib29sIGlzX2NydGNfZW5hYmxlZCA9IGNy dGNfc3RhdGUtPmJhc2UuYWN0aXZlOworCWJvb2wgd2FzX2NydGNfZW5hYmxlZCA9IG9sZF9jcnRj X3N0YXRlLT5ody5hY3RpdmU7CisJYm9vbCBpc19jcnRjX2VuYWJsZWQgPSBjcnRjX3N0YXRlLT5o dy5hY3RpdmU7CiAJYm9vbCB0dXJuX29mZiwgdHVybl9vbiwgdmlzaWJsZSwgd2FzX3Zpc2libGU7 CiAJaW50IHJldDsKIApAQCAtMTE5NTIsOCArMTE5NTIsOCBAQCBzdGF0aWMgaW50IGljbF9hZGRf c3luY19tb2RlX2NydGNzKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQogCQkJ Y29udGludWU7CiAJCWlmICghY29ubmVjdG9yLT5oYXNfdGlsZSkKIAkJCWNvbnRpbnVlOwotCQlp ZiAoY3J0Y19zdGF0ZS0+YmFzZS5tb2RlLmhkaXNwbGF5ICE9IGNvbm5lY3Rvci0+dGlsZV9oX3Np emUgfHwKLQkJICAgIGNydGNfc3RhdGUtPmJhc2UubW9kZS52ZGlzcGxheSAhPSBjb25uZWN0b3It PnRpbGVfdl9zaXplKQorCQlpZiAoY3J0Y19zdGF0ZS0+aHcubW9kZS5oZGlzcGxheSAhPSBjb25u ZWN0b3ItPnRpbGVfaF9zaXplIHx8CisJCSAgICBjcnRjX3N0YXRlLT5ody5tb2RlLnZkaXNwbGF5 ICE9IGNvbm5lY3Rvci0+dGlsZV92X3NpemUpCiAJCQlyZXR1cm4gMDsKIAkJaWYgKGNvbm5lY3Rv ci0+dGlsZV9oX2xvYyA9PSBjb25uZWN0b3ItPm51bV9oX3RpbGUgLSAxICYmCiAJCSAgICBjb25u ZWN0b3ItPnRpbGVfdl9sb2MgPT0gY29ubmVjdG9yLT5udW1fdl90aWxlIC0gMSkKQEAgLTEyMDE5 LDEwICsxMjAxOSwxMCBAQCBzdGF0aWMgaW50IGludGVsX2NydGNfYXRvbWljX2NoZWNrKHN0cnVj dCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlLAogCWludCByZXQ7CiAKIAlpZiAoSU5URUxfR0VO KGRldl9wcml2KSA8IDUgJiYgIUlTX0c0WChkZXZfcHJpdikgJiYKLQkgICAgbW9kZV9jaGFuZ2Vk ICYmICFjcnRjX3N0YXRlLT5iYXNlLmFjdGl2ZSkKKwkgICAgbW9kZV9jaGFuZ2VkICYmICFjcnRj X3N0YXRlLT5ody5hY3RpdmUpCiAJCWNydGNfc3RhdGUtPnVwZGF0ZV93bV9wb3N0ID0gdHJ1ZTsK IAotCWlmIChtb2RlX2NoYW5nZWQgJiYgY3J0Y19zdGF0ZS0+YmFzZS5lbmFibGUgJiYKKwlpZiAo bW9kZV9jaGFuZ2VkICYmIGNydGNfc3RhdGUtPmh3LmVuYWJsZSAmJgogCSAgICBkZXZfcHJpdi0+ ZGlzcGxheS5jcnRjX2NvbXB1dGVfY2xvY2sgJiYKIAkgICAgIVdBUk5fT04oY3J0Y19zdGF0ZS0+ c2hhcmVkX2RwbGwpKSB7CiAJCXJldCA9IGRldl9wcml2LT5kaXNwbGF5LmNydGNfY29tcHV0ZV9j bG9jayhjcnRjLCBjcnRjX3N0YXRlKTsKQEAgLTEyMzE4LDE0ICsxMjMxOCwxNCBAQCBzdGF0aWMg dm9pZCBpbnRlbF9kdW1wX3BpcGVfY29uZmlnKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpwaXBlX2NvbmZpZywKIAogCURSTV9ERUJVR19LTVMoIltDUlRDOiVkOiVzXSBlbmFibGU6ICVz ICVzXG4iLAogCQkgICAgICBjcnRjLT5iYXNlLmJhc2UuaWQsIGNydGMtPmJhc2UubmFtZSwKLQkJ ICAgICAgeWVzbm8ocGlwZV9jb25maWctPmJhc2UuZW5hYmxlKSwgY29udGV4dCk7CisJCSAgICAg IHllc25vKHBpcGVfY29uZmlnLT5ody5lbmFibGUpLCBjb250ZXh0KTsKIAotCWlmICghcGlwZV9j b25maWctPmJhc2UuZW5hYmxlKQorCWlmICghcGlwZV9jb25maWctPmh3LmVuYWJsZSkKIAkJZ290 byBkdW1wX3BsYW5lczsKIAogCXNucHJpbnRmX291dHB1dF90eXBlcyhidWYsIHNpemVvZihidWYp LCBwaXBlX2NvbmZpZy0+b3V0cHV0X3R5cGVzKTsKIAlEUk1fREVCVUdfS01TKCJhY3RpdmU6ICVz LCBvdXRwdXRfdHlwZXM6ICVzICgweCV4KSwgb3V0cHV0IGZvcm1hdDogJXNcbiIsCi0JCSAgICAg IHllc25vKHBpcGVfY29uZmlnLT5iYXNlLmFjdGl2ZSksCisJCSAgICAgIHllc25vKHBpcGVfY29u ZmlnLT5ody5hY3RpdmUpLAogCQkgICAgICBidWYsIHBpcGVfY29uZmlnLT5vdXRwdXRfdHlwZXMs CiAJCSAgICAgIG91dHB1dF9mb3JtYXRzKHBpcGVfY29uZmlnLT5vdXRwdXRfZm9ybWF0KSk7CiAK QEAgLTEyMzY1LDEwICsxMjM2NSwxMCBAQCBzdGF0aWMgdm9pZCBpbnRlbF9kdW1wX3BpcGVfY29u ZmlnKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZywKIAkJaW50ZWxf ZHVtcF9pbmZvZnJhbWUoZGV2X3ByaXYsICZwaXBlX2NvbmZpZy0+aW5mb2ZyYW1lcy5oZG1pKTsK IAogCURSTV9ERUJVR19LTVMoInJlcXVlc3RlZCBtb2RlOlxuIik7Ci0JZHJtX21vZGVfZGVidWdf cHJpbnRtb2RlbGluZSgmcGlwZV9jb25maWctPmJhc2UubW9kZSk7CisJZHJtX21vZGVfZGVidWdf cHJpbnRtb2RlbGluZSgmcGlwZV9jb25maWctPmh3Lm1vZGUpOwogCURSTV9ERUJVR19LTVMoImFk anVzdGVkIG1vZGU6XG4iKTsKLQlkcm1fbW9kZV9kZWJ1Z19wcmludG1vZGVsaW5lKCZwaXBlX2Nv bmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlKTsKLQlpbnRlbF9kdW1wX2NydGNfdGltaW5ncygmcGlw ZV9jb25maWctPmJhc2UuYWRqdXN0ZWRfbW9kZSk7CisJZHJtX21vZGVfZGVidWdfcHJpbnRtb2Rl bGluZSgmcGlwZV9jb25maWctPmh3LmFkanVzdGVkX21vZGUpOworCWludGVsX2R1bXBfY3J0Y190 aW1pbmdzKCZwaXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZSk7CiAJRFJNX0RFQlVHX0tNUygi cG9ydCBjbG9jazogJWQsIHBpcGUgc3JjIHNpemU6ICVkeCVkLCBwaXhlbCByYXRlICVkXG4iLAog CQkgICAgICBwaXBlX2NvbmZpZy0+cG9ydF9jbG9jaywKIAkJICAgICAgcGlwZV9jb25maWctPnBp cGVfc3JjX3csIHBpcGVfY29uZmlnLT5waXBlX3NyY19oLApAQCAtMTI1NTAsMTMgKzEyNTUwLDEz IEBAIGludGVsX21vZGVzZXRfcGlwZV9jb25maWcoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBp cGVfY29uZmlnKQogCSAqIHBvc2l0aXZlIG9yIG5lZ2F0aXZlIHBvbGFyaXR5IGlzIHJlcXVlc3Rl ZCwgdHJlYXQgdGhpcyBhcyBtZWFuaW5nCiAJICogbmVnYXRpdmUgcG9sYXJpdHkuCiAJICovCi0J aWYgKCEocGlwZV9jb25maWctPmJhc2UuYWRqdXN0ZWRfbW9kZS5mbGFncyAmCisJaWYgKCEocGlw ZV9jb25maWctPmh3LmFkanVzdGVkX21vZGUuZmxhZ3MgJgogCSAgICAgIChEUk1fTU9ERV9GTEFH X1BIU1lOQyB8IERSTV9NT0RFX0ZMQUdfTkhTWU5DKSkpCi0JCXBpcGVfY29uZmlnLT5iYXNlLmFk anVzdGVkX21vZGUuZmxhZ3MgfD0gRFJNX01PREVfRkxBR19OSFNZTkM7CisJCXBpcGVfY29uZmln LT5ody5hZGp1c3RlZF9tb2RlLmZsYWdzIHw9IERSTV9NT0RFX0ZMQUdfTkhTWU5DOwogCi0JaWYg KCEocGlwZV9jb25maWctPmJhc2UuYWRqdXN0ZWRfbW9kZS5mbGFncyAmCisJaWYgKCEocGlwZV9j b25maWctPmh3LmFkanVzdGVkX21vZGUuZmxhZ3MgJgogCSAgICAgIChEUk1fTU9ERV9GTEFHX1BW U1lOQyB8IERSTV9NT0RFX0ZMQUdfTlZTWU5DKSkpCi0JCXBpcGVfY29uZmlnLT5iYXNlLmFkanVz dGVkX21vZGUuZmxhZ3MgfD0gRFJNX01PREVfRkxBR19OVlNZTkM7CisJCXBpcGVfY29uZmlnLT5o dy5hZGp1c3RlZF9tb2RlLmZsYWdzIHw9IERSTV9NT0RFX0ZMQUdfTlZTWU5DOwogCiAJcmV0ID0g Y29tcHV0ZV9iYXNlbGluZV9waXBlX2JwcCh0b19pbnRlbF9jcnRjKGNydGMpLAogCQkJCQlwaXBl X2NvbmZpZyk7CkBAIC0xMjU3Myw3ICsxMjU3Myw3IEBAIGludGVsX21vZGVzZXRfcGlwZV9jb25m aWcoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnKQogCSAqIGNvbXB1dGF0aW9u IHRvIGNsZWFybHkgZGlzdGluZ3Vpc2ggaXQgZnJvbSB0aGUgYWRqdXN0ZWQgbW9kZSwgd2hpY2gK IAkgKiBjYW4gYmUgY2hhbmdlZCBieSB0aGUgY29ubmVjdG9ycyBpbiB0aGUgYmVsb3cgcmV0cnkg bG9vcC4KIAkgKi8KLQlkcm1fbW9kZV9nZXRfaHZfdGltaW5nKCZwaXBlX2NvbmZpZy0+YmFzZS5t b2RlLAorCWRybV9tb2RlX2dldF9odl90aW1pbmcoJnBpcGVfY29uZmlnLT5ody5tb2RlLAogCQkJ ICAgICAgICZwaXBlX2NvbmZpZy0+cGlwZV9zcmNfdywKIAkJCSAgICAgICAmcGlwZV9jb25maWct PnBpcGVfc3JjX2gpOwogCkBAIC0xMjYwNiw3ICsxMjYwNiw3IEBAIGludGVsX21vZGVzZXRfcGlw ZV9jb25maWcoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnKQogCXBpcGVfY29u ZmlnLT5waXhlbF9tdWx0aXBsaWVyID0gMTsKIAogCS8qIEZpbGwgaW4gZGVmYXVsdCBjcnRjIHRp bWluZ3MsIGFsbG93IGVuY29kZXJzIHRvIG92ZXJ3cml0ZSB0aGVtLiAqLwotCWRybV9tb2RlX3Nl dF9jcnRjaW5mbygmcGlwZV9jb25maWctPmJhc2UuYWRqdXN0ZWRfbW9kZSwKKwlkcm1fbW9kZV9z ZXRfY3J0Y2luZm8oJnBpcGVfY29uZmlnLT5ody5hZGp1c3RlZF9tb2RlLAogCQkJICAgICAgQ1JU Q19TVEVSRU9fRE9VQkxFKTsKIAogCS8qIFNldCB0aGUgY3J0Y19zdGF0ZSBkZWZhdWx0cyBmb3Ig dHJhbnNfcG9ydF9zeW5jICovCkBAIC0xMjY0MCw3ICsxMjY0MCw3IEBAIGludGVsX21vZGVzZXRf cGlwZV9jb25maWcoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnKQogCS8qIFNl dCBkZWZhdWx0IHBvcnQgY2xvY2sgaWYgbm90IG92ZXJ3cml0dGVuIGJ5IHRoZSBlbmNvZGVyLiBO ZWVkcyB0byBiZQogCSAqIGRvbmUgYWZ0ZXJ3YXJkcyBpbiBjYXNlIHRoZSBlbmNvZGVyIGFkanVz dHMgdGhlIG1vZGUuICovCiAJaWYgKCFwaXBlX2NvbmZpZy0+cG9ydF9jbG9jaykKLQkJcGlwZV9j b25maWctPnBvcnRfY2xvY2sgPSBwaXBlX2NvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlLmNydGNf Y2xvY2sKKwkJcGlwZV9jb25maWctPnBvcnRfY2xvY2sgPSBwaXBlX2NvbmZpZy0+aHcuYWRqdXN0 ZWRfbW9kZS5jcnRjX2Nsb2NrCiAJCQkqIHBpcGVfY29uZmlnLT5waXhlbF9tdWx0aXBsaWVyOwog CiAJcmV0ID0gaW50ZWxfY3J0Y19jb21wdXRlX2NvbmZpZyh0b19pbnRlbF9jcnRjKGNydGMpLCBw aXBlX2NvbmZpZyk7CkBAIC0xMjgxMiw4ICsxMjgxMiw4IEBAIGludGVsX3BpcGVfY29uZmlnX2Nv bXBhcmUoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmN1cnJlbnRfY29uZmlnLAogCWJv b2wgcmV0ID0gdHJ1ZTsKIAl1MzIgYnBfZ2FtbWEgPSAwOwogCWJvb2wgZml4dXBfaW5oZXJpdGVk ID0gZmFzdHNldCAmJgotCQkoY3VycmVudF9jb25maWctPmJhc2UubW9kZS5wcml2YXRlX2ZsYWdz ICYgSTkxNV9NT0RFX0ZMQUdfSU5IRVJJVEVEKSAmJgotCQkhKHBpcGVfY29uZmlnLT5iYXNlLm1v ZGUucHJpdmF0ZV9mbGFncyAmIEk5MTVfTU9ERV9GTEFHX0lOSEVSSVRFRCk7CisJCShjdXJyZW50 X2NvbmZpZy0+aHcubW9kZS5wcml2YXRlX2ZsYWdzICYgSTkxNV9NT0RFX0ZMQUdfSU5IRVJJVEVE KSAmJgorCQkhKHBpcGVfY29uZmlnLT5ody5tb2RlLnByaXZhdGVfZmxhZ3MgJiBJOTE1X01PREVf RkxBR19JTkhFUklURUQpOwogCiAJaWYgKGZpeHVwX2luaGVyaXRlZCAmJiAhZmFzdGJvb3RfZW5h YmxlZChkZXZfcHJpdikpIHsKIAkJRFJNX0RFQlVHX0tNUygiaW5pdGlhbCBtb2Rlc2V0IGFuZCBm YXN0Ym9vdCBub3Qgc2V0XG4iKTsKQEAgLTEzMTU5LDcgKzEzMTU5LDcgQEAgc3RhdGljIHZvaWQg aW50ZWxfcGlwZV9jb25maWdfc2FuaXR5X2NoZWNrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiwKIAlpZiAocGlwZV9jb25maWctPmhhc19wY2hfZW5jb2RlcikgewogCQlpbnQgZmRp X2RvdGNsb2NrID0gaW50ZWxfZG90Y2xvY2tfY2FsY3VsYXRlKGludGVsX2ZkaV9saW5rX2ZyZXEo ZGV2X3ByaXYsIHBpcGVfY29uZmlnKSwKIAkJCQkJCQkgICAgJnBpcGVfY29uZmlnLT5mZGlfbV9u KTsKLQkJaW50IGRvdGNsb2NrID0gcGlwZV9jb25maWctPmJhc2UuYWRqdXN0ZWRfbW9kZS5jcnRj X2Nsb2NrOworCQlpbnQgZG90Y2xvY2sgPSBwaXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZS5j cnRjX2Nsb2NrOwogCiAJCS8qCiAJCSAqIEZESSBhbHJlYWR5IHByb3ZpZGVkIG9uZSBpZGVhIGZv ciB0aGUgZG90Y2xvY2suCkBAIC0xMzE4OCw3ICsxMzE4OCw3IEBAIHN0YXRpYyB2b2lkIHZlcmlm eV93bV9zdGF0ZShzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKIAlpbnQgbGV2ZWwsIG1heF9sZXZl bCA9IGlsa193bV9tYXhfbGV2ZWwoZGV2X3ByaXYpOwogCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxh bmU7CiAKLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDkgfHwgIW5ld19jcnRjX3N0YXRlLT5i YXNlLmFjdGl2ZSkKKwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDkgfHwgIW5ld19jcnRjX3N0 YXRlLT5ody5hY3RpdmUpCiAJCXJldHVybjsKIAogCWh3ID0ga3phbGxvYyhzaXplb2YoKmh3KSwg R0ZQX0tFUk5FTCk7CkBAIC0xMzM3MiwyMyArMTMzNzIsMjYgQEAgdmVyaWZ5X2NydGNfc3RhdGUo c3RydWN0IGludGVsX2NydGMgKmNydGMsCiAKIAkvKiB3ZSBrZWVwIGJvdGggcGlwZXMgZW5hYmxl ZCBvbiA4MzAgKi8KIAlpZiAoSVNfSTgzMChkZXZfcHJpdikpCi0JCWFjdGl2ZSA9IG5ld19jcnRj X3N0YXRlLT5iYXNlLmFjdGl2ZTsKKwkJYWN0aXZlID0gbmV3X2NydGNfc3RhdGUtPmh3LmFjdGl2 ZTsKIAotCUk5MTVfU1RBVEVfV0FSTihuZXdfY3J0Y19zdGF0ZS0+YmFzZS5hY3RpdmUgIT0gYWN0 aXZlLAotCSAgICAgImNydGMgYWN0aXZlIHN0YXRlIGRvZXNuJ3QgbWF0Y2ggd2l0aCBodyBzdGF0 ZSAiCi0JICAgICAiKGV4cGVjdGVkICVpLCBmb3VuZCAlaSlcbiIsIG5ld19jcnRjX3N0YXRlLT5i YXNlLmFjdGl2ZSwgYWN0aXZlKTsKKwlJOTE1X1NUQVRFX1dBUk4obmV3X2NydGNfc3RhdGUtPmh3 LmFjdGl2ZSAhPSBhY3RpdmUsCisJCQkiY3J0YyBhY3RpdmUgc3RhdGUgZG9lc24ndCBtYXRjaCB3 aXRoIGh3IHN0YXRlICIKKwkJCSIoZXhwZWN0ZWQgJWksIGZvdW5kICVpKVxuIiwKKwkJCW5ld19j cnRjX3N0YXRlLT5ody5hY3RpdmUsIGFjdGl2ZSk7CiAKLQlJOTE1X1NUQVRFX1dBUk4oY3J0Yy0+ YWN0aXZlICE9IG5ld19jcnRjX3N0YXRlLT5iYXNlLmFjdGl2ZSwKLQkgICAgICJ0cmFuc2l0aW9u YWwgYWN0aXZlIHN0YXRlIGRvZXMgbm90IG1hdGNoIGF0b21pYyBodyBzdGF0ZSAiCi0JICAgICAi KGV4cGVjdGVkICVpLCBmb3VuZCAlaSlcbiIsIG5ld19jcnRjX3N0YXRlLT5iYXNlLmFjdGl2ZSwg Y3J0Yy0+YWN0aXZlKTsKKwlJOTE1X1NUQVRFX1dBUk4oY3J0Yy0+YWN0aXZlICE9IG5ld19jcnRj X3N0YXRlLT5ody5hY3RpdmUsCisJCQkidHJhbnNpdGlvbmFsIGFjdGl2ZSBzdGF0ZSBkb2VzIG5v dCBtYXRjaCBhdG9taWMgaHcgc3RhdGUgIgorCQkJIihleHBlY3RlZCAlaSwgZm91bmQgJWkpXG4i LAorCQkJbmV3X2NydGNfc3RhdGUtPmh3LmFjdGl2ZSwgY3J0Yy0+YWN0aXZlKTsKIAogCWZvcl9l YWNoX2VuY29kZXJfb25fY3J0YyhkZXYsICZjcnRjLT5iYXNlLCBlbmNvZGVyKSB7CiAJCWVudW0g cGlwZSBwaXBlOwogCiAJCWFjdGl2ZSA9IGVuY29kZXItPmdldF9od19zdGF0ZShlbmNvZGVyLCAm cGlwZSk7Ci0JCUk5MTVfU1RBVEVfV0FSTihhY3RpdmUgIT0gbmV3X2NydGNfc3RhdGUtPmJhc2Uu YWN0aXZlLAotCQkJIltFTkNPREVSOiVpXSBhY3RpdmUgJWkgd2l0aCBjcnRjIGFjdGl2ZSAlaVxu IiwKLQkJCWVuY29kZXItPmJhc2UuYmFzZS5pZCwgYWN0aXZlLCBuZXdfY3J0Y19zdGF0ZS0+YmFz ZS5hY3RpdmUpOworCQlJOTE1X1NUQVRFX1dBUk4oYWN0aXZlICE9IG5ld19jcnRjX3N0YXRlLT5o dy5hY3RpdmUsCisJCQkJIltFTkNPREVSOiVpXSBhY3RpdmUgJWkgd2l0aCBjcnRjIGFjdGl2ZSAl aVxuIiwKKwkJCQllbmNvZGVyLT5iYXNlLmJhc2UuaWQsIGFjdGl2ZSwKKwkJCQluZXdfY3J0Y19z dGF0ZS0+aHcuYWN0aXZlKTsKIAogCQlJOTE1X1NUQVRFX1dBUk4oYWN0aXZlICYmIGNydGMtPnBp cGUgIT0gcGlwZSwKIAkJCQkiRW5jb2RlciBjb25uZWN0ZWQgdG8gd3JvbmcgcGlwZSAlY1xuIiwK QEAgLTEzNDAwLDcgKzEzNDAzLDcgQEAgdmVyaWZ5X2NydGNfc3RhdGUoc3RydWN0IGludGVsX2Ny dGMgKmNydGMsCiAKIAlpbnRlbF9jcnRjX2NvbXB1dGVfcGl4ZWxfcmF0ZShwaXBlX2NvbmZpZyk7 CiAKLQlpZiAoIW5ld19jcnRjX3N0YXRlLT5iYXNlLmFjdGl2ZSkKKwlpZiAoIW5ld19jcnRjX3N0 YXRlLT5ody5hY3RpdmUpCiAJCXJldHVybjsKIAogCWludGVsX3BpcGVfY29uZmlnX3Nhbml0eV9j aGVjayhkZXZfcHJpdiwgcGlwZV9jb25maWcpOwpAQCAtMTM0NjIsNyArMTM0NjUsNyBAQCB2ZXJp Znlfc2luZ2xlX2RwbGxfc3RhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAog CiAJY3J0Y19tYXNrID0gZHJtX2NydGNfbWFzaygmY3J0Yy0+YmFzZSk7CiAKLQlpZiAobmV3X2Ny dGNfc3RhdGUtPmJhc2UuYWN0aXZlKQorCWlmIChuZXdfY3J0Y19zdGF0ZS0+aHcuYWN0aXZlKQog CQlJOTE1X1NUQVRFX1dBUk4oIShwbGwtPmFjdGl2ZV9tYXNrICYgY3J0Y19tYXNrKSwKIAkJCQki cGxsIGFjdGl2ZSBtaXNtYXRjaCAoZXhwZWN0ZWQgcGlwZSAlYyBpbiBhY3RpdmUgbWFzayAweCUw MngpXG4iLAogCQkJCXBpcGVfbmFtZShkcm1fY3J0Y19pbmRleCgmY3J0Yy0+YmFzZSkpLCBwbGwt PmFjdGl2ZV9tYXNrKTsKQEAgLTEzNTQ0LDcgKzEzNTQ3LDcgQEAgaW50ZWxfY3J0Y191cGRhdGVf YWN0aXZlX3RpbWluZ3MoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUp CiAJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPmJh c2UuY3J0Yyk7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShj cnRjLT5iYXNlLmRldik7CiAJY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVk X21vZGUgPQotCQkmY3J0Y19zdGF0ZS0+YmFzZS5hZGp1c3RlZF9tb2RlOworCQkmY3J0Y19zdGF0 ZS0+aHcuYWRqdXN0ZWRfbW9kZTsKIAogCWRybV9jYWxjX3RpbWVzdGFtcGluZ19jb25zdGFudHMo JmNydGMtPmJhc2UsIGFkanVzdGVkX21vZGUpOwogCkBAIC0xMzYyNiw3ICsxMzYyOSw3IEBAIHN0 YXRpYyBpbnQgaGFzd2VsbF9tb2RlX3NldF9wbGFuZXNfd29ya2Fyb3VuZChzdHJ1Y3QgaW50ZWxf YXRvbWljX3N0YXRlICpzdGF0ZSkKIAogCS8qIGxvb2sgYXQgYWxsIGNydGMncyB0aGF0IGFyZSBn b2luZyB0byBiZSBlbmFibGVkIGluIGR1cmluZyBtb2Rlc2V0ICovCiAJZm9yX2VhY2hfbmV3X2lu dGVsX2NydGNfaW5fc3RhdGUoc3RhdGUsIGNydGMsIGNydGNfc3RhdGUsIGkpIHsKLQkJaWYgKCFj cnRjX3N0YXRlLT5iYXNlLmFjdGl2ZSB8fAorCQlpZiAoIWNydGNfc3RhdGUtPmh3LmFjdGl2ZSB8 fAogCQkgICAgIW5lZWRzX21vZGVzZXQoY3J0Y19zdGF0ZSkpCiAJCQljb250aW51ZTsKIApAQCAt MTM2NTEsNyArMTM2NTQsNyBAQCBzdGF0aWMgaW50IGhhc3dlbGxfbW9kZV9zZXRfcGxhbmVzX3dv cmthcm91bmQoc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUpCiAKIAkJY3J0Y19zdGF0 ZS0+aHN3X3dvcmthcm91bmRfcGlwZSA9IElOVkFMSURfUElQRTsKIAotCQlpZiAoIWNydGNfc3Rh dGUtPmJhc2UuYWN0aXZlIHx8CisJCWlmICghY3J0Y19zdGF0ZS0+aHcuYWN0aXZlIHx8CiAJCSAg ICBuZWVkc19tb2Rlc2V0KGNydGNfc3RhdGUpKQogCQkJY29udGludWU7CiAKQEAgLTEzNjk0LDEy ICsxMzY5NywxMiBAQCBzdGF0aWMgaW50IGludGVsX21vZGVzZXRfY2hlY2tzKHN0cnVjdCBpbnRl bF9hdG9taWNfc3RhdGUgKnN0YXRlKQogCiAJZm9yX2VhY2hfb2xkbmV3X2ludGVsX2NydGNfaW5f c3RhdGUoc3RhdGUsIGNydGMsIG9sZF9jcnRjX3N0YXRlLAogCQkJCQkgICAgbmV3X2NydGNfc3Rh dGUsIGkpIHsKLQkJaWYgKG5ld19jcnRjX3N0YXRlLT5iYXNlLmFjdGl2ZSkKKwkJaWYgKG5ld19j cnRjX3N0YXRlLT5ody5hY3RpdmUpCiAJCQlzdGF0ZS0+YWN0aXZlX3BpcGVzIHw9IEJJVChjcnRj LT5waXBlKTsKIAkJZWxzZQogCQkJc3RhdGUtPmFjdGl2ZV9waXBlcyAmPSB+QklUKGNydGMtPnBp cGUpOwogCi0JCWlmIChvbGRfY3J0Y19zdGF0ZS0+YmFzZS5hY3RpdmUgIT0gbmV3X2NydGNfc3Rh dGUtPmJhc2UuYWN0aXZlKQorCQlpZiAob2xkX2NydGNfc3RhdGUtPmh3LmFjdGl2ZSAhPSBuZXdf Y3J0Y19zdGF0ZS0+aHcuYWN0aXZlKQogCQkJc3RhdGUtPmFjdGl2ZV9waXBlX2NoYW5nZXMgfD0g QklUKGNydGMtPnBpcGUpOwogCX0KIApAQCAtMTM4MDksOCArMTM4MTIsOCBAQCBzdGF0aWMgaW50 IGludGVsX2F0b21pY19jaGVjayhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCS8qIENhdGNoIEk5 MTVfTU9ERV9GTEFHX0lOSEVSSVRFRCAqLwogCWZvcl9lYWNoX29sZG5ld19pbnRlbF9jcnRjX2lu X3N0YXRlKHN0YXRlLCBjcnRjLCBvbGRfY3J0Y19zdGF0ZSwKIAkJCQkJICAgIG5ld19jcnRjX3N0 YXRlLCBpKSB7Ci0JCWlmIChuZXdfY3J0Y19zdGF0ZS0+YmFzZS5tb2RlLnByaXZhdGVfZmxhZ3Mg IT0KLQkJICAgIG9sZF9jcnRjX3N0YXRlLT5iYXNlLm1vZGUucHJpdmF0ZV9mbGFncykKKwkJaWYg KG5ld19jcnRjX3N0YXRlLT5ody5tb2RlLnByaXZhdGVfZmxhZ3MgIT0KKwkJICAgIG9sZF9jcnRj X3N0YXRlLT5ody5tb2RlLnByaXZhdGVfZmxhZ3MpCiAJCQluZXdfY3J0Y19zdGF0ZS0+YmFzZS5t b2RlX2NoYW5nZWQgPSB0cnVlOwogCX0KIApAQCAtMTM5MzksNyArMTM5NDIsNyBAQCBzdGF0aWMg dm9pZCBpbnRlbF9waXBlX2Zhc3RzZXQoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm9s ZF9jcnRjX3N0YXRlLAogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5 MTUoY3J0Yy0+YmFzZS5kZXYpOwogCiAJLyogZHJtX2F0b21pY19oZWxwZXJfdXBkYXRlX2xlZ2Fj eV9tb2Rlc2V0X3N0YXRlIG1pZ2h0IG5vdCBiZSBjYWxsZWQuICovCi0JY3J0Yy0+YmFzZS5tb2Rl ID0gbmV3X2NydGNfc3RhdGUtPmJhc2UubW9kZTsKKwljcnRjLT5iYXNlLm1vZGUgPSBuZXdfY3J0 Y19zdGF0ZS0+aHcubW9kZTsKIAogCS8qCiAJICogVXBkYXRlIHBpcGUgc2l6ZSBhbmQgYWRqdXN0 IGZpdHRlciBpZiBuZWVkZWQ6IHRoZSByZWFzb24gZm9yIHRoaXMgaXMKQEAgLTE0MDQ4LDcgKzE0 MDUxLDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfdXBkYXRlX2NydGMoc3RydWN0IGludGVsX2NydGMg KmNydGMsCiAJICogb2YgZW5hYmxpbmcgdGhlbSBvbiB0aGUgQ1JUQydzIGZpcnN0IGZhc3RzZXQu CiAJICovCiAJaWYgKG5ld19jcnRjX3N0YXRlLT51cGRhdGVfcGlwZSAmJiAhbW9kZXNldCAmJgot CSAgICBvbGRfY3J0Y19zdGF0ZS0+YmFzZS5tb2RlLnByaXZhdGVfZmxhZ3MgJiBJOTE1X01PREVf RkxBR19JTkhFUklURUQpCisJICAgIG9sZF9jcnRjX3N0YXRlLT5ody5tb2RlLnByaXZhdGVfZmxh Z3MgJiBJOTE1X01PREVfRkxBR19JTkhFUklURUQpCiAJCWludGVsX2NydGNfYXJtX2ZpZm9fdW5k ZXJydW4oY3J0YywgbmV3X2NydGNfc3RhdGUpOwogfQogCkBAIC0xNDA5Miw3ICsxNDA5NSw3IEBA IHN0YXRpYyB2b2lkIGludGVsX29sZF9jcnRjX3N0YXRlX2Rpc2FibGVzKHN0cnVjdCBpbnRlbF9h dG9taWNfc3RhdGUgKnN0YXRlLAogCWludGVsX2NoZWNrX3BjaF9maWZvX3VuZGVycnVucyhkZXZf cHJpdik7CiAKIAkvKiBGSVhNRSB1bmlmeSB0aGlzIGZvciBhbGwgcGxhdGZvcm1zICovCi0JaWYg KCFuZXdfY3J0Y19zdGF0ZS0+YmFzZS5hY3RpdmUgJiYKKwlpZiAoIW5ld19jcnRjX3N0YXRlLT5o dy5hY3RpdmUgJiYKIAkgICAgIUhBU19HTUNIKGRldl9wcml2KSAmJgogCSAgICBkZXZfcHJpdi0+ ZGlzcGxheS5pbml0aWFsX3dhdGVybWFya3MpCiAJCWRldl9wcml2LT5kaXNwbGF5LmluaXRpYWxf d2F0ZXJtYXJrcyhzdGF0ZSwKQEAgLTE0MTE1LDcgKzE0MTE4LDcgQEAgc3RhdGljIHZvaWQgaW50 ZWxfdHJhbnNfcG9ydF9zeW5jX21vZGVzZXRfZGlzYWJsZXMoc3RydWN0IGludGVsX2F0b21pY19z dGF0ZSAqc3QKIAogCS8qIERpc2FibGUgU2xhdmUgZmlyc3QgKi8KIAlpbnRlbF9wcmVfcGxhbmVf dXBkYXRlKG9sZF9zbGF2ZV9jcnRjX3N0YXRlLCBuZXdfc2xhdmVfY3J0Y19zdGF0ZSk7Ci0JaWYg KG9sZF9zbGF2ZV9jcnRjX3N0YXRlLT5iYXNlLmFjdGl2ZSkKKwlpZiAob2xkX3NsYXZlX2NydGNf c3RhdGUtPmh3LmFjdGl2ZSkKIAkJaW50ZWxfb2xkX2NydGNfc3RhdGVfZGlzYWJsZXMoc3RhdGUs CiAJCQkJCSAgICAgIG9sZF9zbGF2ZV9jcnRjX3N0YXRlLAogCQkJCQkgICAgICBuZXdfc2xhdmVf Y3J0Y19zdGF0ZSwKQEAgLTE0MTIzLDcgKzE0MTI2LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfdHJh bnNfcG9ydF9zeW5jX21vZGVzZXRfZGlzYWJsZXMoc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAq c3QKIAogCS8qIERpc2FibGUgTWFzdGVyICovCiAJaW50ZWxfcHJlX3BsYW5lX3VwZGF0ZShvbGRf Y3J0Y19zdGF0ZSwgbmV3X2NydGNfc3RhdGUpOwotCWlmIChvbGRfY3J0Y19zdGF0ZS0+YmFzZS5h Y3RpdmUpCisJaWYgKG9sZF9jcnRjX3N0YXRlLT5ody5hY3RpdmUpCiAJCWludGVsX29sZF9jcnRj X3N0YXRlX2Rpc2FibGVzKHN0YXRlLAogCQkJCQkgICAgICBvbGRfY3J0Y19zdGF0ZSwKIAkJCQkJ ICAgICAgbmV3X2NydGNfc3RhdGUsCkBAIC0xNDE2NCw3ICsxNDE2Nyw3IEBAIHN0YXRpYyB2b2lk IGludGVsX2NvbW1pdF9tb2Rlc2V0X2Rpc2FibGVzKHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUg KnN0YXRlKQogCQl9IGVsc2UgewogCQkJaW50ZWxfcHJlX3BsYW5lX3VwZGF0ZShvbGRfY3J0Y19z dGF0ZSwgbmV3X2NydGNfc3RhdGUpOwogCi0JCQlpZiAob2xkX2NydGNfc3RhdGUtPmJhc2UuYWN0 aXZlKQorCQkJaWYgKG9sZF9jcnRjX3N0YXRlLT5ody5hY3RpdmUpCiAJCQkJaW50ZWxfb2xkX2Ny dGNfc3RhdGVfZGlzYWJsZXMoc3RhdGUsCiAJCQkJCQkJICAgICAgb2xkX2NydGNfc3RhdGUsCiAJ CQkJCQkJICAgICAgbmV3X2NydGNfc3RhdGUsCkBAIC0xNDE4MCw3ICsxNDE4Myw3IEBAIHN0YXRp YyB2b2lkIGludGVsX2NvbW1pdF9tb2Rlc2V0X2VuYWJsZXMoc3RydWN0IGludGVsX2F0b21pY19z dGF0ZSAqc3RhdGUpCiAJaW50IGk7CiAKIAlmb3JfZWFjaF9vbGRuZXdfaW50ZWxfY3J0Y19pbl9z dGF0ZShzdGF0ZSwgY3J0Yywgb2xkX2NydGNfc3RhdGUsIG5ld19jcnRjX3N0YXRlLCBpKSB7Ci0J CWlmICghbmV3X2NydGNfc3RhdGUtPmJhc2UuYWN0aXZlKQorCQlpZiAoIW5ld19jcnRjX3N0YXRl LT5ody5hY3RpdmUpCiAJCQljb250aW51ZTsKIAogCQlpbnRlbF91cGRhdGVfY3J0YyhjcnRjLCBz dGF0ZSwgb2xkX2NydGNfc3RhdGUsCkBAIC0xNDI0NSw3ICsxNDI0OCw3IEBAIHN0YXRpYyB2b2lk IGludGVsX3Bvc3RfY3J0Y19lbmFibGVfdXBkYXRlcyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywK IAkgKiBvZiBlbmFibGluZyB0aGVtIG9uIHRoZSBDUlRDJ3MgZmlyc3QgZmFzdHNldC4KIAkgKi8K IAlpZiAobmV3X2NydGNfc3RhdGUtPnVwZGF0ZV9waXBlICYmICFtb2Rlc2V0ICYmCi0JICAgIG9s ZF9jcnRjX3N0YXRlLT5iYXNlLm1vZGUucHJpdmF0ZV9mbGFncyAmIEk5MTVfTU9ERV9GTEFHX0lO SEVSSVRFRCkKKwkgICAgb2xkX2NydGNfc3RhdGUtPmh3Lm1vZGUucHJpdmF0ZV9mbGFncyAmIEk5 MTVfTU9ERV9GTEFHX0lOSEVSSVRFRCkKIAkJaW50ZWxfY3J0Y19hcm1fZmlmb191bmRlcnJ1bihj cnRjLCBuZXdfY3J0Y19zdGF0ZSk7CiB9CiAKQEAgLTE0MzA5LDcgKzE0MzEyLDcgQEAgc3RhdGlj IHZvaWQgc2tsX2NvbW1pdF9tb2Rlc2V0X2VuYWJsZXMoc3RydWN0IGludGVsX2F0b21pY19zdGF0 ZSAqc3RhdGUpCiAKIAlmb3JfZWFjaF9vbGRuZXdfaW50ZWxfY3J0Y19pbl9zdGF0ZShzdGF0ZSwg Y3J0Yywgb2xkX2NydGNfc3RhdGUsIG5ld19jcnRjX3N0YXRlLCBpKQogCQkvKiBpZ25vcmUgYWxs b2NhdGlvbnMgZm9yIGNydGMncyB0aGF0IGhhdmUgYmVlbiB0dXJuZWQgb2ZmLiAqLwotCQlpZiAo bmV3X2NydGNfc3RhdGUtPmJhc2UuYWN0aXZlKQorCQlpZiAobmV3X2NydGNfc3RhdGUtPmh3LmFj dGl2ZSkKIAkJCWVudHJpZXNbaV0gPSBvbGRfY3J0Y19zdGF0ZS0+d20uc2tsLmRkYjsKIAogCS8q IElmIDJuZCBEQnVmIHNsaWNlIHJlcXVpcmVkLCBlbmFibGUgaXQgaGVyZSAqLwpAQCAtMTQzMzAs NyArMTQzMzMsNyBAQCBzdGF0aWMgdm9pZCBza2xfY29tbWl0X21vZGVzZXRfZW5hYmxlcyhzdHJ1 Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSkKIAkJCWJvb2wgdmJsX3dhaXQgPSBmYWxzZTsK IAkJCWJvb2wgbW9kZXNldCA9IG5lZWRzX21vZGVzZXQobmV3X2NydGNfc3RhdGUpOwogCi0JCQlp ZiAodXBkYXRlZCAmIEJJVChjcnRjLT5waXBlKSB8fCAhbmV3X2NydGNfc3RhdGUtPmJhc2UuYWN0 aXZlKQorCQkJaWYgKHVwZGF0ZWQgJiBCSVQoY3J0Yy0+cGlwZSkgfHwgIW5ld19jcnRjX3N0YXRl LT5ody5hY3RpdmUpCiAJCQkJY29udGludWU7CiAKIAkJCWlmIChza2xfZGRiX2FsbG9jYXRpb25f b3ZlcmxhcHMoJm5ld19jcnRjX3N0YXRlLT53bS5za2wuZGRiLApAQCAtMTQ0OTIsNyArMTQ0OTUs NyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9hdG9taWNfY29tbWl0X3RhaWwoc3RydWN0IGludGVsX2F0 b21pY19zdGF0ZSAqc3RhdGUpCiAJCWJvb2wgbW9kZXNldCA9IG5lZWRzX21vZGVzZXQobmV3X2Ny dGNfc3RhdGUpOwogCiAJCS8qIENvbXBsZXRlIGV2ZW50cyBmb3Igbm93IGRpc2FibGUgcGlwZXMg aGVyZS4gKi8KLQkJaWYgKG1vZGVzZXQgJiYgIW5ld19jcnRjX3N0YXRlLT5iYXNlLmFjdGl2ZSAm JiBuZXdfY3J0Y19zdGF0ZS0+YmFzZS5ldmVudCkgeworCQlpZiAobW9kZXNldCAmJiAhbmV3X2Ny dGNfc3RhdGUtPmh3LmFjdGl2ZSAmJiBuZXdfY3J0Y19zdGF0ZS0+YmFzZS5ldmVudCkgewogCQkJ c3Bpbl9sb2NrX2lycSgmZGV2LT5ldmVudF9sb2NrKTsKIAkJCWRybV9jcnRjX3NlbmRfdmJsYW5r X2V2ZW50KCZjcnRjLT5iYXNlLCBuZXdfY3J0Y19zdGF0ZS0+YmFzZS5ldmVudCk7CiAJCQlzcGlu X3VubG9ja19pcnEoJmRldi0+ZXZlbnRfbG9jayk7CkBAIC0xNDUyOCw3ICsxNDUzMSw3IEBAIHN0 YXRpYyB2b2lkIGludGVsX2F0b21pY19jb21taXRfdGFpbChzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0 YXRlICpzdGF0ZSkKIAlkcm1fYXRvbWljX2hlbHBlcl93YWl0X2Zvcl9mbGlwX2RvbmUoZGV2LCAm c3RhdGUtPmJhc2UpOwogCiAJZm9yX2VhY2hfbmV3X2ludGVsX2NydGNfaW5fc3RhdGUoc3RhdGUs IGNydGMsIG5ld19jcnRjX3N0YXRlLCBpKSB7Ci0JCWlmIChuZXdfY3J0Y19zdGF0ZS0+YmFzZS5h Y3RpdmUgJiYKKwkJaWYgKG5ld19jcnRjX3N0YXRlLT5ody5hY3RpdmUgJiYKIAkJICAgICFuZWVk c19tb2Rlc2V0KG5ld19jcnRjX3N0YXRlKSAmJgogCQkgICAgKG5ld19jcnRjX3N0YXRlLT5iYXNl LmNvbG9yX21nbXRfY2hhbmdlZCB8fAogCQkgICAgIG5ld19jcnRjX3N0YXRlLT51cGRhdGVfcGlw ZSkpCkBAIC0xNDk4MywxMCArMTQ5ODYsMTAgQEAgc2tsX21heF9zY2FsZShjb25zdCBzdHJ1Y3Qg aW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKIAlpbnQgbWF4X3NjYWxlOwogCWludCBjcnRj X2Nsb2NrLCBtYXhfZG90Y2xrLCB0bXBjbGsxLCB0bXBjbGsyOwogCi0JaWYgKCFjcnRjX3N0YXRl LT5iYXNlLmVuYWJsZSkKKwlpZiAoIWNydGNfc3RhdGUtPmh3LmVuYWJsZSkKIAkJcmV0dXJuIERS TV9QTEFORV9IRUxQRVJfTk9fU0NBTElORzsKIAotCWNydGNfY2xvY2sgPSBjcnRjX3N0YXRlLT5i YXNlLmFkanVzdGVkX21vZGUuY3J0Y19jbG9jazsKKwljcnRjX2Nsb2NrID0gY3J0Y19zdGF0ZS0+ aHcuYWRqdXN0ZWRfbW9kZS5jcnRjX2Nsb2NrOwogCW1heF9kb3RjbGsgPSB0b19pbnRlbF9hdG9t aWNfc3RhdGUoY3J0Y19zdGF0ZS0+YmFzZS5zdGF0ZSktPmNkY2xrLmxvZ2ljYWwuY2RjbGs7CiAK IAlpZiAoSVNfR0VNSU5JTEFLRShkZXZfcHJpdikgfHwgSU5URUxfR0VOKGRldl9wcml2KSA+PSAx MCkKQEAgLTE1MTIyLDcgKzE1MTI1LDcgQEAgaW50ZWxfbGVnYWN5X2N1cnNvcl91cGRhdGUoc3Ry dWN0IGRybV9wbGFuZSAqX3BsYW5lLAogCSAqIFdoZW4gY3J0YyBpcyBpbmFjdGl2ZSBvciB0aGVy ZSBpcyBhIG1vZGVzZXQgcGVuZGluZywKIAkgKiB3YWl0IGZvciBpdCB0byBjb21wbGV0ZSBpbiB0 aGUgc2xvd3BhdGgKIAkgKi8KLQlpZiAoIWNydGNfc3RhdGUtPmJhc2UuYWN0aXZlIHx8IG5lZWRz X21vZGVzZXQoY3J0Y19zdGF0ZSkgfHwKKwlpZiAoIWNydGNfc3RhdGUtPmh3LmFjdGl2ZSB8fCBu ZWVkc19tb2Rlc2V0KGNydGNfc3RhdGUpIHx8CiAJICAgIGNydGNfc3RhdGUtPnVwZGF0ZV9waXBl KQogCQlnb3RvIHNsb3c7CiAKQEAgLTE2NTUxLDcgKzE2NTU0LDcgQEAgc3RhdGljIGludCBpbnRl bF9pbml0aWFsX2NvbW1pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCQkJZ290byBvdXQ7CiAJ CX0KIAotCQlpZiAoY3J0Y19zdGF0ZS0+YmFzZS5hY3RpdmUpIHsKKwkJaWYgKGNydGNfc3RhdGUt Pmh3LmFjdGl2ZSkgewogCQkJcmV0ID0gZHJtX2F0b21pY19hZGRfYWZmZWN0ZWRfcGxhbmVzKHN0 YXRlLCAmY3J0Yy0+YmFzZSk7CiAJCQlpZiAocmV0KQogCQkJCWdvdG8gb3V0OwpAQCAtMTY5MDEs NyArMTY5MDQsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9zYW5pdGl6ZV9jcnRjKHN0cnVjdCBpbnRl bF9jcnRjICpjcnRjLAogCQkJICAgSTkxNV9SRUFEKHJlZykgJiB+UElQRUNPTkZfRlJBTUVfU1RB UlRfREVMQVlfTUFTSyk7CiAJfQogCi0JaWYgKGNydGNfc3RhdGUtPmJhc2UuYWN0aXZlKSB7CisJ aWYgKGNydGNfc3RhdGUtPmh3LmFjdGl2ZSkgewogCQlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5l OwogCiAJCS8qIERpc2FibGUgZXZlcnl0aGluZyBidXQgdGhlIHByaW1hcnkgcGxhbmUgKi8KQEAg LTE2OTI2LDEwICsxNjkyOSwxMCBAQCBzdGF0aWMgdm9pZCBpbnRlbF9zYW5pdGl6ZV9jcnRjKHN0 cnVjdCBpbnRlbF9jcnRjICpjcnRjLAogCiAJLyogQWRqdXN0IHRoZSBzdGF0ZSBvZiB0aGUgb3V0 cHV0IHBpcGUgYWNjb3JkaW5nIHRvIHdoZXRoZXIgd2UKIAkgKiBoYXZlIGFjdGl2ZSBjb25uZWN0 b3JzL2VuY29kZXJzLiAqLwotCWlmIChjcnRjX3N0YXRlLT5iYXNlLmFjdGl2ZSAmJiAhaW50ZWxf Y3J0Y19oYXNfZW5jb2RlcnMoY3J0YykpCisJaWYgKGNydGNfc3RhdGUtPmh3LmFjdGl2ZSAmJiAh aW50ZWxfY3J0Y19oYXNfZW5jb2RlcnMoY3J0YykpCiAJCWludGVsX2NydGNfZGlzYWJsZV9ub2F0 b21pYygmY3J0Yy0+YmFzZSwgY3R4KTsKIAotCWlmIChjcnRjX3N0YXRlLT5iYXNlLmFjdGl2ZSB8 fCBIQVNfR01DSChkZXZfcHJpdikpIHsKKwlpZiAoY3J0Y19zdGF0ZS0+aHcuYWN0aXZlIHx8IEhB U19HTUNIKGRldl9wcml2KSkgewogCQkvKgogCQkgKiBXZSBzdGFydCBvdXQgd2l0aCB1bmRlcnJ1 biByZXBvcnRpbmcgZGlzYWJsZWQgdG8gYXZvaWQgcmFjZXMuCiAJCSAqIEZvciBjb3JyZWN0IGJv b2trZWVwaW5nIG1hcmsgdGhpcyBvbiBhY3RpdmUgY3J0Y3MuCkBAIC0xNjk3Myw3ICsxNjk3Niw3 IEBAIHN0YXRpYyBib29sIGhhc19ib2d1c19kcGxsX2NvbmZpZyhjb25zdCBzdHJ1Y3QgaW50ZWxf Y3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKIAkgKiByb2FkLgogCSAqLwogCXJldHVybiBJU19HRU4o ZGV2X3ByaXYsIDYpICYmCi0JCWNydGNfc3RhdGUtPmJhc2UuYWN0aXZlICYmCisJCWNydGNfc3Rh dGUtPmh3LmFjdGl2ZSAmJgogCQljcnRjX3N0YXRlLT5zaGFyZWRfZHBsbCAmJgogCQljcnRjX3N0 YXRlLT5wb3J0X2Nsb2NrID09IDA7CiB9CkBAIC0xNjk5MCw3ICsxNjk5Myw3IEBAIHN0YXRpYyB2 b2lkIGludGVsX3Nhbml0aXplX2VuY29kZXIoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIp CiAJICogZW5jb2RlciBpcyBhY3RpdmUgYW5kIHRyeWluZyB0byByZWFkIGZyb20gYSBwaXBlKSBh bmQgdGhlCiAJICogcGlwZSBpdHNlbGYgYmVpbmcgYWN0aXZlLiAqLwogCWJvb2wgaGFzX2FjdGl2 ZV9jcnRjID0gY3J0Y19zdGF0ZSAmJgotCQljcnRjX3N0YXRlLT5iYXNlLmFjdGl2ZTsKKwkJY3J0 Y19zdGF0ZS0+aHcuYWN0aXZlOwogCiAJaWYgKGNydGNfc3RhdGUgJiYgaGFzX2JvZ3VzX2RwbGxf Y29uZmlnKGNydGNfc3RhdGUpKSB7CiAJCURSTV9ERUJVR19LTVMoIkJJT1MgaGFzIG1pc3Byb2dy YW1tZWQgdGhlIGhhcmR3YXJlLiBEaXNhYmxpbmcgcGlwZSAlY1xuIiwKQEAgLTE3MDk4LDE4ICsx NzEwMSwxOCBAQCBzdGF0aWMgdm9pZCBpbnRlbF9tb2Rlc2V0X3JlYWRvdXRfaHdfc3RhdGUoc3Ry dWN0IGRybV9kZXZpY2UgKmRldikKIAkJbWVtc2V0KGNydGNfc3RhdGUsIDAsIHNpemVvZigqY3J0 Y19zdGF0ZSkpOwogCQlfX2RybV9hdG9taWNfaGVscGVyX2NydGNfcmVzZXQoJmNydGMtPmJhc2Us ICZjcnRjX3N0YXRlLT5iYXNlKTsKIAotCQljcnRjX3N0YXRlLT5iYXNlLmFjdGl2ZSA9IGNydGNf c3RhdGUtPmJhc2UuZW5hYmxlID0KKwkJY3J0Y19zdGF0ZS0+aHcuYWN0aXZlID0gY3J0Y19zdGF0 ZS0+aHcuZW5hYmxlID0KIAkJCWRldl9wcml2LT5kaXNwbGF5LmdldF9waXBlX2NvbmZpZyhjcnRj LCBjcnRjX3N0YXRlKTsKIAotCQljcnRjLT5iYXNlLmVuYWJsZWQgPSBjcnRjX3N0YXRlLT5iYXNl LmVuYWJsZTsKLQkJY3J0Yy0+YWN0aXZlID0gY3J0Y19zdGF0ZS0+YmFzZS5hY3RpdmU7CisJCWNy dGMtPmJhc2UuZW5hYmxlZCA9IGNydGNfc3RhdGUtPmh3LmVuYWJsZTsKKwkJY3J0Yy0+YWN0aXZl ID0gY3J0Y19zdGF0ZS0+aHcuYWN0aXZlOwogCi0JCWlmIChjcnRjX3N0YXRlLT5iYXNlLmFjdGl2 ZSkKKwkJaWYgKGNydGNfc3RhdGUtPmh3LmFjdGl2ZSkKIAkJCWRldl9wcml2LT5hY3RpdmVfcGlw ZXMgfD0gQklUKGNydGMtPnBpcGUpOwogCiAJCURSTV9ERUJVR19LTVMoIltDUlRDOiVkOiVzXSBo dyBzdGF0ZSByZWFkb3V0OiAlc1xuIiwKIAkJCSAgICAgIGNydGMtPmJhc2UuYmFzZS5pZCwgY3J0 Yy0+YmFzZS5uYW1lLAotCQkJICAgICAgZW5hYmxlZGRpc2FibGVkKGNydGNfc3RhdGUtPmJhc2Uu YWN0aXZlKSk7CisJCQkgICAgICBlbmFibGVkZGlzYWJsZWQoY3J0Y19zdGF0ZS0+aHcuYWN0aXZl KSk7CiAJfQogCiAJcmVhZG91dF9wbGFuZV9zdGF0ZShkZXZfcHJpdik7CkBAIC0xNzEzMSw3ICsx NzEzNCw3IEBAIHN0YXRpYyB2b2lkIGludGVsX21vZGVzZXRfcmVhZG91dF9od19zdGF0ZShzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2KQogCQkJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3Rh dGUgPQogCQkJCXRvX2ludGVsX2NydGNfc3RhdGUoY3J0Yy0+YmFzZS5zdGF0ZSk7CiAKLQkJCWlm IChjcnRjX3N0YXRlLT5iYXNlLmFjdGl2ZSAmJgorCQkJaWYgKGNydGNfc3RhdGUtPmh3LmFjdGl2 ZSAmJgogCQkJICAgIGNydGNfc3RhdGUtPnNoYXJlZF9kcGxsID09IHBsbCkKIAkJCQlwbGwtPnN0 YXRlLmNydGNfbWFzayB8PSAxIDw8IGNydGMtPnBpcGU7CiAJCX0KQEAgLTE3MTc2LDcgKzE3MTc5 LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfbW9kZXNldF9yZWFkb3V0X2h3X3N0YXRlKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYpCiAJCQljcnRjID0gdG9faW50ZWxfY3J0YyhlbmNvZGVyLT5iYXNlLmNy dGMpOwogCQkJY3J0Y19zdGF0ZSA9IGNydGMgPyB0b19pbnRlbF9jcnRjX3N0YXRlKGNydGMtPmJh c2Uuc3RhdGUpIDogTlVMTDsKIAotCQkJaWYgKGNydGNfc3RhdGUgJiYgY3J0Y19zdGF0ZS0+YmFz ZS5hY3RpdmUpIHsKKwkJCWlmIChjcnRjX3N0YXRlICYmIGNydGNfc3RhdGUtPmh3LmFjdGl2ZSkg ewogCQkJCS8qCiAJCQkJICogVGhpcyBoYXMgdG8gYmUgZG9uZSBkdXJpbmcgaGFyZHdhcmUgcmVh ZG91dAogCQkJCSAqIGJlY2F1c2UgYW55dGhpbmcgY2FsbGluZyAuY3J0Y19kaXNhYmxlIG1heQpA QCAtMTcyMDYsMTEgKzE3MjA5LDEyIEBAIHN0YXRpYyB2b2lkIGludGVsX21vZGVzZXRfcmVhZG91 dF9od19zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCQlpbnQgbWluX2NkY2xrID0gMDsK IAogCQltZW1zZXQoJmNydGMtPmJhc2UubW9kZSwgMCwgc2l6ZW9mKGNydGMtPmJhc2UubW9kZSkp OwotCQlpZiAoY3J0Y19zdGF0ZS0+YmFzZS5hY3RpdmUpIHsKKwkJaWYgKGNydGNfc3RhdGUtPmh3 LmFjdGl2ZSkgewogCQkJaW50ZWxfbW9kZV9mcm9tX3BpcGVfY29uZmlnKCZjcnRjLT5iYXNlLm1v ZGUsIGNydGNfc3RhdGUpOwogCQkJY3J0Yy0+YmFzZS5tb2RlLmhkaXNwbGF5ID0gY3J0Y19zdGF0 ZS0+cGlwZV9zcmNfdzsKIAkJCWNydGMtPmJhc2UubW9kZS52ZGlzcGxheSA9IGNydGNfc3RhdGUt PnBpcGVfc3JjX2g7Ci0JCQlpbnRlbF9tb2RlX2Zyb21fcGlwZV9jb25maWcoJmNydGNfc3RhdGUt PmJhc2UuYWRqdXN0ZWRfbW9kZSwgY3J0Y19zdGF0ZSk7CisJCQlpbnRlbF9tb2RlX2Zyb21fcGlw ZV9jb25maWcoJmNydGNfc3RhdGUtPmh3LmFkanVzdGVkX21vZGUsCisJCQkJCQkgICAgY3J0Y19z dGF0ZSk7CiAJCQlXQVJOX09OKGRybV9hdG9taWNfc2V0X21vZGVfZm9yX2NydGMoJmNydGNfc3Rh dGUtPmJhc2UsICZjcnRjLT5iYXNlLm1vZGUpKTsKIAogCQkJLyoKQEAgLTE3MjIyLDcgKzE3MjI2 LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfbW9kZXNldF9yZWFkb3V0X2h3X3N0YXRlKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYpCiAJCQkgKiBzZXQgYSBmbGFnIHRvIGluZGljYXRlIHRoYXQgYSBmdWxs IHJlY2FsY3VsYXRpb24gaXMKIAkJCSAqIG5lZWRlZCBvbiB0aGUgbmV4dCBjb21taXQuCiAJCQkg Ki8KLQkJCWNydGNfc3RhdGUtPmJhc2UubW9kZS5wcml2YXRlX2ZsYWdzID0gSTkxNV9NT0RFX0ZM QUdfSU5IRVJJVEVEOworCQkJY3J0Y19zdGF0ZS0+aHcubW9kZS5wcml2YXRlX2ZsYWdzID0gSTkx NV9NT0RFX0ZMQUdfSU5IRVJJVEVEOwogCiAJCQlpbnRlbF9jcnRjX2NvbXB1dGVfcGl4ZWxfcmF0 ZShjcnRjX3N0YXRlKTsKIApAQCAtMTc0MDAsNyArMTc0MDQsNyBAQCBpbnRlbF9tb2Rlc2V0X3Nl dHVwX2h3X3N0YXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAKIAkJZHJtX2NydGNfdmJsYW5r X3Jlc2V0KCZjcnRjLT5iYXNlKTsKIAotCQlpZiAoY3J0Y19zdGF0ZS0+YmFzZS5hY3RpdmUpCisJ CWlmIChjcnRjX3N0YXRlLT5ody5hY3RpdmUpCiAJCQlpbnRlbF9jcnRjX3ZibGFua19vbihjcnRj X3N0YXRlKTsKIAl9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkv aW50ZWxfZHAuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHAuYwppbmRl eCA1MjFjZTIzZjM4YWMuLmYyZjAyYWQ4ZDM5ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvZGlzcGxheS9pbnRlbF9kcC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3Bs YXkvaW50ZWxfZHAuYwpAQCAtMTk5MCw3ICsxOTkwLDcgQEAgaW50ZWxfZHBfY29tcHV0ZV9saW5r X2NvbmZpZ193aWRlKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCiAJCQkJICBzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcsCiAJCQkJICBjb25zdCBzdHJ1Y3QgbGlua19jb25m aWdfbGltaXRzICpsaW1pdHMpCiB7Ci0Jc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVk X21vZGUgPSAmcGlwZV9jb25maWctPmJhc2UuYWRqdXN0ZWRfbW9kZTsKKwlzdHJ1Y3QgZHJtX2Rp c3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9ICZwaXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9k ZTsKIAlpbnQgYnBwLCBjbG9jaywgbGFuZV9jb3VudDsKIAlpbnQgbW9kZV9yYXRlLCBsaW5rX2Ns b2NrLCBsaW5rX2F2YWlsOwogCkBAIC0yMDQ0LDcgKzIwNDQsNyBAQCBzdGF0aWMgaW50IGludGVs X2RwX2RzY19jb21wdXRlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAogewogCXN0 cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmRpZ19wb3J0ID0gZHBfdG9fZGlnX3BvcnQoaW50ZWxf ZHApOwogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGlnX3Bv cnQtPmJhc2UuYmFzZS5kZXYpOwotCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9t b2RlID0gJnBpcGVfY29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGU7CisJc3RydWN0IGRybV9kaXNw bGF5X21vZGUgKmFkanVzdGVkX21vZGUgPSAmcGlwZV9jb25maWctPmh3LmFkanVzdGVkX21vZGU7 CiAJdTggZHNjX21heF9icGM7CiAJaW50IHBpcGVfYnBwOwogCWludCByZXQ7CkBAIC0yMTU1LDcg KzIxNTUsNyBAQCBpbnRlbF9kcF9jb21wdXRlX2xpbmtfY29uZmlnKHN0cnVjdCBpbnRlbF9lbmNv ZGVyICplbmNvZGVyLAogCQkJICAgICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25m aWcsCiAJCQkgICAgIHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25uX3N0YXRlKQogewot CXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2RlID0gJnBpcGVfY29uZmlnLT5i YXNlLmFkanVzdGVkX21vZGU7CisJc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21v ZGUgPSAmcGlwZV9jb25maWctPmh3LmFkanVzdGVkX21vZGU7CiAJc3RydWN0IGludGVsX2RwICpp bnRlbF9kcCA9IGVuY190b19pbnRlbF9kcCgmZW5jb2Rlci0+YmFzZSk7CiAJc3RydWN0IGxpbmtf Y29uZmlnX2xpbWl0cyBsaW1pdHM7CiAJaW50IGNvbW1vbl9sZW47CkBAIC0yMjQzLDcgKzIyNDMs NyBAQCBpbnRlbF9kcF95Y2JjcjQyMF9jb25maWcoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwK IHsKIAljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfaW5mbyAqaW5mbyA9ICZjb25uZWN0b3ItPmRp c3BsYXlfaW5mbzsKIAljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9k ZSA9Ci0JCSZjcnRjX3N0YXRlLT5iYXNlLmFkanVzdGVkX21vZGU7CisJCSZjcnRjX3N0YXRlLT5o dy5hZGp1c3RlZF9tb2RlOwogCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0 YyhjcnRjX3N0YXRlLT5iYXNlLmNydGMpOwogCWludCByZXQ7CiAKQEAgLTIyNzIsNyArMjI3Miw3 IEBAIGJvb2wgaW50ZWxfZHBfbGltaXRlZF9jb2xvcl9yYW5nZShjb25zdCBzdHJ1Y3QgaW50ZWxf Y3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKIAljb25zdCBzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9jb25u ZWN0b3Jfc3RhdGUgKmludGVsX2Nvbm5fc3RhdGUgPQogCQl0b19pbnRlbF9kaWdpdGFsX2Nvbm5l Y3Rvcl9zdGF0ZShjb25uX3N0YXRlKTsKIAljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAq YWRqdXN0ZWRfbW9kZSA9Ci0JCSZjcnRjX3N0YXRlLT5iYXNlLmFkanVzdGVkX21vZGU7CisJCSZj cnRjX3N0YXRlLT5ody5hZGp1c3RlZF9tb2RlOwogCiAJLyoKIAkgKiBPdXIgWUNiQ3Igb3V0cHV0 IGlzIGFsd2F5cyBsaW1pdGVkIHJhbmdlLgpAQCAtMjMwNSw3ICsyMzA1LDcgQEAgaW50ZWxfZHBf Y29tcHV0ZV9jb25maWcoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCiAJCQlzdHJ1Y3Qg ZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubl9zdGF0ZSkKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVuY29kZXItPmJhc2UuZGV2KTsKLQlzdHJ1Y3QgZHJt X2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9ICZwaXBlX2NvbmZpZy0+YmFzZS5hZGp1c3Rl ZF9tb2RlOworCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2RlID0gJnBpcGVf Y29uZmlnLT5ody5hZGp1c3RlZF9tb2RlOwogCXN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAgPSBl bmNfdG9faW50ZWxfZHAoJmVuY29kZXItPmJhc2UpOwogCXN0cnVjdCBpbnRlbF9sc3Bjb24gKmxz cGNvbiA9IGVuY190b19pbnRlbF9sc3Bjb24oJmVuY29kZXItPmJhc2UpOwogCWVudW0gcG9ydCBw b3J0ID0gZW5jb2Rlci0+cG9ydDsKQEAgLTI0MjgsNyArMjQyOCw3IEBAIHN0YXRpYyB2b2lkIGlu dGVsX2RwX3ByZXBhcmUoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCiAJc3RydWN0IGlu dGVsX2RwICppbnRlbF9kcCA9IGVuY190b19pbnRlbF9kcCgmZW5jb2Rlci0+YmFzZSk7CiAJZW51 bSBwb3J0IHBvcnQgPSBlbmNvZGVyLT5wb3J0OwogCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0g dG9faW50ZWxfY3J0YyhwaXBlX2NvbmZpZy0+YmFzZS5jcnRjKTsKLQljb25zdCBzdHJ1Y3QgZHJt X2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9ICZwaXBlX2NvbmZpZy0+YmFzZS5hZGp1c3Rl ZF9tb2RlOworCWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2RlID0g JnBpcGVfY29uZmlnLT5ody5hZGp1c3RlZF9tb2RlOwogCiAJaW50ZWxfZHBfc2V0X2xpbmtfcGFy YW1zKGludGVsX2RwLCBwaXBlX2NvbmZpZy0+cG9ydF9jbG9jaywKIAkJCQkgcGlwZV9jb25maWct PmxhbmVfY291bnQsCkBAIC0zMjYwLDcgKzMyNjAsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9kcF9n ZXRfY29uZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAogCQkJZmxhZ3MgfD0gRFJN X01PREVfRkxBR19OVlNZTkM7CiAJfQogCi0JcGlwZV9jb25maWctPmJhc2UuYWRqdXN0ZWRfbW9k ZS5mbGFncyB8PSBmbGFnczsKKwlwaXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZS5mbGFncyB8 PSBmbGFnczsKIAogCWlmIChJU19HNFgoZGV2X3ByaXYpICYmIHRtcCAmIERQX0NPTE9SX1JBTkdF XzE2XzIzNSkKIAkJcGlwZV9jb25maWctPmxpbWl0ZWRfY29sb3JfcmFuZ2UgPSB0cnVlOwpAQCAt MzI3Nyw3ICszMjc3LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfZHBfZ2V0X2NvbmZpZyhzdHJ1Y3Qg aW50ZWxfZW5jb2RlciAqZW5jb2RlciwKIAkJCXBpcGVfY29uZmlnLT5wb3J0X2Nsb2NrID0gMjcw MDAwOwogCX0KIAotCXBpcGVfY29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGUuY3J0Y19jbG9jayA9 CisJcGlwZV9jb25maWctPmh3LmFkanVzdGVkX21vZGUuY3J0Y19jbG9jayA9CiAJCWludGVsX2Rv dGNsb2NrX2NhbGN1bGF0ZShwaXBlX2NvbmZpZy0+cG9ydF9jbG9jaywKIAkJCQkJICZwaXBlX2Nv bmZpZy0+ZHBfbV9uKTsKIApAQCAtNTA3MCw3ICs1MDcwLDcgQEAgaW50IGludGVsX2RwX3JldHJh aW5fbGluayhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKIAogCVdBUk5fT04oIWludGVs X2NydGNfaGFzX2RwX2VuY29kZXIoY3J0Y19zdGF0ZSkpOwogCi0JaWYgKCFjcnRjX3N0YXRlLT5i YXNlLmFjdGl2ZSkKKwlpZiAoIWNydGNfc3RhdGUtPmh3LmFjdGl2ZSkKIAkJcmV0dXJuIDA7CiAK IAlpZiAoY29ubl9zdGF0ZS0+Y29tbWl0ICYmCkBAIC02OTMyLDcgKzY5MzIsNyBAQCBzdGF0aWMg dm9pZCBpbnRlbF9kcF9zZXRfZHJyc19zdGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYsCiAJCXJldHVybjsKIAl9CiAKLQlpZiAoIWNydGNfc3RhdGUtPmJhc2UuYWN0aXZlKSB7 CisJaWYgKCFjcnRjX3N0YXRlLT5ody5hY3RpdmUpIHsKIAkJRFJNX0RFQlVHX0tNUygiZURQIGVu Y29kZXIgZGlzYWJsZWQuIENSVEMgbm90IEFjdGl2ZVxuIik7CiAJCXJldHVybjsKIAl9CmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RwX21zdC5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kcF9tc3QuYwppbmRleCBiYjFiMzE4MGNj ZmQuLjZiMDg2YWM3ODI4ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxh eS9pbnRlbF9kcF9tc3QuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVs X2RwX21zdC5jCkBAIC00OCw3ICs0OCw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfZHBfbXN0X2NvbXB1 dGVfbGlua19jb25maWcoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCiAJc3RydWN0IGlu dGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yID0KIAkJdG9faW50ZWxfY29ubmVjdG9yKGNvbm5fc3Rh dGUtPmNvbm5lY3Rvcik7CiAJY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVk X21vZGUgPQotCQkmY3J0Y19zdGF0ZS0+YmFzZS5hZGp1c3RlZF9tb2RlOworCQkmY3J0Y19zdGF0 ZS0+aHcuYWRqdXN0ZWRfbW9kZTsKIAl2b2lkICpwb3J0ID0gY29ubmVjdG9yLT5wb3J0OwogCWJv b2wgY29uc3RhbnRfbiA9IGRybV9kcF9oYXNfcXVpcmsoJmludGVsX2RwLT5kZXNjLAogCQkJCQkg ICBEUF9EUENEX1FVSVJLX0NPTlNUQU5UX04pOwpAQCAtOTksNyArOTksNyBAQCBzdGF0aWMgaW50 IGludGVsX2RwX21zdF9jb21wdXRlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2Rl ciwKIAlzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9jb25uZWN0b3Jfc3RhdGUgKmludGVsX2Nvbm5fc3Rh dGUgPQogCQl0b19pbnRlbF9kaWdpdGFsX2Nvbm5lY3Rvcl9zdGF0ZShjb25uX3N0YXRlKTsKIAlj b25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9Ci0JCSZwaXBlX2Nv bmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlOworCQkmcGlwZV9jb25maWctPmh3LmFkanVzdGVkX21v ZGU7CiAJdm9pZCAqcG9ydCA9IGNvbm5lY3Rvci0+cG9ydDsKIAlzdHJ1Y3QgbGlua19jb25maWdf bGltaXRzIGxpbWl0czsKIAlpbnQgcmV0OwpAQCAtMTkxLDcgKzE5MSw3IEBAIGludGVsX2RwX21z dF9hdG9taWNfY2hlY2soc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKIAogCQlpZiAo IWNydGNfc3RhdGUgfHwKIAkJICAgICFkcm1fYXRvbWljX2NydGNfbmVlZHNfbW9kZXNldCgmY3J0 Y19zdGF0ZS0+YmFzZSkgfHwKLQkJICAgIGNydGNfc3RhdGUtPmJhc2UuZW5hYmxlKQorCQkgICAg Y3J0Y19zdGF0ZS0+aHcuZW5hYmxlKQogCQkJcmV0dXJuIDA7CiAJfQogCmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2R2by5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvZGlzcGxheS9pbnRlbF9kdm8uYwppbmRleCA5ODI3Zjk5NDkxZDEuLmE2OGU1YzViOTFi NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kdm8uYwor KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2R2by5jCkBAIC0xNzgsOSAr MTc4LDkgQEAgc3RhdGljIHZvaWQgaW50ZWxfZHZvX2dldF9jb25maWcoc3RydWN0IGludGVsX2Vu Y29kZXIgKmVuY29kZXIsCiAJZWxzZQogCQlmbGFncyB8PSBEUk1fTU9ERV9GTEFHX05WU1lOQzsK IAotCXBpcGVfY29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGUuZmxhZ3MgfD0gZmxhZ3M7CisJcGlw ZV9jb25maWctPmh3LmFkanVzdGVkX21vZGUuZmxhZ3MgfD0gZmxhZ3M7CiAKLQlwaXBlX2NvbmZp Zy0+YmFzZS5hZGp1c3RlZF9tb2RlLmNydGNfY2xvY2sgPSBwaXBlX2NvbmZpZy0+cG9ydF9jbG9j azsKKwlwaXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZS5jcnRjX2Nsb2NrID0gcGlwZV9jb25m aWctPnBvcnRfY2xvY2s7CiB9CiAKIHN0YXRpYyB2b2lkIGludGVsX2Rpc2FibGVfZHZvKHN0cnVj dCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLApAQCAtMjA3LDggKzIwNyw4IEBAIHN0YXRpYyB2b2lk IGludGVsX2VuYWJsZV9kdm8oc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCiAJdTMyIHRl bXAgPSBJOTE1X1JFQUQoZHZvX3JlZyk7CiAKIAlpbnRlbF9kdm8tPmRldi5kZXZfb3BzLT5tb2Rl X3NldCgmaW50ZWxfZHZvLT5kZXYsCi0JCQkJCSAmcGlwZV9jb25maWctPmJhc2UubW9kZSwKLQkJ CQkJICZwaXBlX2NvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlKTsKKwkJCQkJICZwaXBlX2NvbmZp Zy0+aHcubW9kZSwKKwkJCQkJICZwaXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZSk7CiAKIAlJ OTE1X1dSSVRFKGR2b19yZWcsIHRlbXAgfCBEVk9fRU5BQkxFKTsKIAlJOTE1X1JFQUQoZHZvX3Jl Zyk7CkBAIC0yNTMsNyArMjUzLDcgQEAgc3RhdGljIGludCBpbnRlbF9kdm9fY29tcHV0ZV9jb25m aWcoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCiAJc3RydWN0IGludGVsX2R2byAqaW50 ZWxfZHZvID0gZW5jX3RvX2R2byhlbmNvZGVyKTsKIAljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlf bW9kZSAqZml4ZWRfbW9kZSA9CiAJCWludGVsX2R2by0+YXR0YWNoZWRfY29ubmVjdG9yLT5wYW5l bC5maXhlZF9tb2RlOwotCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2RlID0g JnBpcGVfY29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGU7CisJc3RydWN0IGRybV9kaXNwbGF5X21v ZGUgKmFkanVzdGVkX21vZGUgPSAmcGlwZV9jb25maWctPmh3LmFkanVzdGVkX21vZGU7CiAKIAkv KgogCSAqIElmIHdlIGhhdmUgdGltaW5ncyBmcm9tIHRoZSBCSU9TIGZvciB0aGUgcGFuZWwsIHB1 dCB0aGVtIGluCkBAIC0yNzgsNyArMjc4LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfZHZvX3ByZV9l bmFibGUoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCiB7CiAJc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShlbmNvZGVyLT5iYXNlLmRldik7CiAJc3RydWN0 IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKHBpcGVfY29uZmlnLT5iYXNlLmNydGMp OwotCWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2RlID0gJnBpcGVf Y29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGU7CisJY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21v ZGUgKmFkanVzdGVkX21vZGUgPSAmcGlwZV9jb25maWctPmh3LmFkanVzdGVkX21vZGU7CiAJc3Ry dWN0IGludGVsX2R2byAqaW50ZWxfZHZvID0gZW5jX3RvX2R2byhlbmNvZGVyKTsKIAllbnVtIHBp cGUgcGlwZSA9IGNydGMtPnBpcGU7CiAJdTMyIGR2b192YWw7CmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2ZiYy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv ZGlzcGxheS9pbnRlbF9mYmMuYwppbmRleCAzMTExZWNhZWFiZDAuLmM2Y2MzNzc1ZjNiOCAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9mYmMuYworKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2ZiYy5jCkBAIC02NjcsNyArNjY3LDcg QEAgc3RhdGljIHZvaWQgaW50ZWxfZmJjX3VwZGF0ZV9zdGF0ZV9jYWNoZShzdHJ1Y3QgaW50ZWxf Y3J0YyAqY3J0YywKIAljYWNoZS0+dm1hID0gTlVMTDsKIAljYWNoZS0+ZmxhZ3MgPSAwOwogCi0J Y2FjaGUtPmNydGMubW9kZV9mbGFncyA9IGNydGNfc3RhdGUtPmJhc2UuYWRqdXN0ZWRfbW9kZS5m bGFnczsKKwljYWNoZS0+Y3J0Yy5tb2RlX2ZsYWdzID0gY3J0Y19zdGF0ZS0+aHcuYWRqdXN0ZWRf bW9kZS5mbGFnczsKIAlpZiAoSVNfSEFTV0VMTChkZXZfcHJpdikgfHwgSVNfQlJPQURXRUxMKGRl dl9wcml2KSkKIAkJY2FjaGUtPmNydGMuaHN3X2Jkd19waXhlbF9yYXRlID0gY3J0Y19zdGF0ZS0+ cGl4ZWxfcmF0ZTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9p bnRlbF9oZG1pLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2hkbWkuYwpp bmRleCBiNTRjY2JiNWFhZDUuLjI1YjQ0NTZiZmQ2MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9oZG1pLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv ZGlzcGxheS9pbnRlbF9oZG1pLmMKQEAgLTcwOCw3ICs3MDgsNyBAQCBpbnRlbF9oZG1pX2NvbXB1 dGVfYXZpX2luZm9mcmFtZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKIHsKIAlzdHJ1 Y3QgaGRtaV9hdmlfaW5mb2ZyYW1lICpmcmFtZSA9ICZjcnRjX3N0YXRlLT5pbmZvZnJhbWVzLmF2 aS5hdmk7CiAJY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUgPQot CQkmY3J0Y19zdGF0ZS0+YmFzZS5hZGp1c3RlZF9tb2RlOworCQkmY3J0Y19zdGF0ZS0+aHcuYWRq dXN0ZWRfbW9kZTsKIAlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yID0gY29ubl9zdGF0 ZS0+Y29ubmVjdG9yOwogCWludCByZXQ7CiAKQEAgLTgwNCw3ICs4MDQsNyBAQCBpbnRlbF9oZG1p X2NvbXB1dGVfaGRtaV9pbmZvZnJhbWUoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCiAK IAlyZXQgPSBkcm1faGRtaV92ZW5kb3JfaW5mb2ZyYW1lX2Zyb21fZGlzcGxheV9tb2RlKGZyYW1l LAogCQkJCQkJCSAgY29ubl9zdGF0ZS0+Y29ubmVjdG9yLAotCQkJCQkJCSAgJmNydGNfc3RhdGUt PmJhc2UuYWRqdXN0ZWRfbW9kZSk7CisJCQkJCQkJICAmY3J0Y19zdGF0ZS0+aHcuYWRqdXN0ZWRf bW9kZSk7CiAJaWYgKFdBUk5fT04ocmV0KSkKIAkJcmV0dXJuIGZhbHNlOwogCkBAIC0xMDI3LDcg KzEwMjcsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9oZG1pX2NvbXB1dGVfZ2NwX2luZm9mcmFtZShz dHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKIAogCS8qIEVuYWJsZSBkZWZhdWx0X3BoYXNl IHdoZW5ldmVyIHRoZSBkaXNwbGF5IG1vZGUgaXMgc3VpdGFibHkgYWxpZ25lZCAqLwogCWlmIChn Y3BfZGVmYXVsdF9waGFzZV9wb3NzaWJsZShjcnRjX3N0YXRlLT5waXBlX2JwcCwKLQkJCQkgICAg ICAgJmNydGNfc3RhdGUtPmJhc2UuYWRqdXN0ZWRfbW9kZSkpCisJCQkJICAgICAgICZjcnRjX3N0 YXRlLT5ody5hZGp1c3RlZF9tb2RlKSkKIAkJY3J0Y19zdGF0ZS0+aW5mb2ZyYW1lcy5nY3AgfD0g R0NQX0RFRkFVTFRfUEhBU0VfRU5BQkxFOwogfQogCkBAIC0xNzM4LDcgKzE3MzgsNyBAQCBzdGF0 aWMgdm9pZCBpbnRlbF9oZG1pX3ByZXBhcmUoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIs CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwogCXN0 cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLT5iYXNlLmNy dGMpOwogCXN0cnVjdCBpbnRlbF9oZG1pICppbnRlbF9oZG1pID0gZW5jX3RvX2ludGVsX2hkbWko JmVuY29kZXItPmJhc2UpOwotCWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3Rl ZF9tb2RlID0gJmNydGNfc3RhdGUtPmJhc2UuYWRqdXN0ZWRfbW9kZTsKKwljb25zdCBzdHJ1Y3Qg ZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9ICZjcnRjX3N0YXRlLT5ody5hZGp1c3Rl ZF9tb2RlOwogCXUzMiBoZG1pX3ZhbDsKIAogCWludGVsX2RwX2R1YWxfbW9kZV9zZXRfdG1kc19v dXRwdXQoaW50ZWxfaGRtaSwgdHJ1ZSk7CkBAIC0xODI5LDcgKzE4MjksNyBAQCBzdGF0aWMgdm9p ZCBpbnRlbF9oZG1pX2dldF9jb25maWcoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCiAJ ICAgIHRtcCAmIEhETUlfQ09MT1JfUkFOR0VfMTZfMjM1KQogCQlwaXBlX2NvbmZpZy0+bGltaXRl ZF9jb2xvcl9yYW5nZSA9IHRydWU7CiAKLQlwaXBlX2NvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2Rl LmZsYWdzIHw9IGZsYWdzOworCXBpcGVfY29uZmlnLT5ody5hZGp1c3RlZF9tb2RlLmZsYWdzIHw9 IGZsYWdzOwogCiAJaWYgKCh0bXAgJiBTRFZPX0NPTE9SX0ZPUk1BVF9NQVNLKSA9PSBIRE1JX0NP TE9SX0ZPUk1BVF8xMmJwYykKIAkJZG90Y2xvY2sgPSBwaXBlX2NvbmZpZy0+cG9ydF9jbG9jayAq IDIgLyAzOwpAQCAtMTgzOSw3ICsxODM5LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfaGRtaV9nZXRf Y29uZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAogCWlmIChwaXBlX2NvbmZpZy0+ cGl4ZWxfbXVsdGlwbGllcikKIAkJZG90Y2xvY2sgLz0gcGlwZV9jb25maWctPnBpeGVsX211bHRp cGxpZXI7CiAKLQlwaXBlX2NvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlLmNydGNfY2xvY2sgPSBk b3RjbG9jazsKKwlwaXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZS5jcnRjX2Nsb2NrID0gZG90 Y2xvY2s7CiAKIAlwaXBlX2NvbmZpZy0+bGFuZV9jb3VudCA9IDQ7CiAKQEAgLTIyMTUsNyArMjIx NSw3IEBAIHN0YXRpYyBib29sIGhkbWlfZGVlcF9jb2xvcl9wb3NzaWJsZShjb25zdCBzdHJ1Y3Qg aW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKIAlzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0 ZSAqY29ubmVjdG9yX3N0YXRlOwogCXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3I7CiAJ Y29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUgPQotCQkmY3J0Y19z dGF0ZS0+YmFzZS5hZGp1c3RlZF9tb2RlOworCQkmY3J0Y19zdGF0ZS0+aHcuYWRqdXN0ZWRfbW9k ZTsKIAlpbnQgaTsKIAogCWlmIChIQVNfR01DSChkZXZfcHJpdikpCkBAIC0yMzM2LDcgKzIzMzYs NyBAQCBzdGF0aWMgaW50IGludGVsX2hkbWlfY29tcHV0ZV9jbG9jayhzdHJ1Y3QgaW50ZWxfZW5j b2RlciAqZW5jb2RlciwKIHsKIAlzdHJ1Y3QgaW50ZWxfaGRtaSAqaW50ZWxfaGRtaSA9IGVuY190 b19pbnRlbF9oZG1pKCZlbmNvZGVyLT5iYXNlKTsKIAljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlf bW9kZSAqYWRqdXN0ZWRfbW9kZSA9Ci0JCSZjcnRjX3N0YXRlLT5iYXNlLmFkanVzdGVkX21vZGU7 CisJCSZjcnRjX3N0YXRlLT5ody5hZGp1c3RlZF9tb2RlOwogCWludCBicGMsIGNsb2NrID0gYWRq dXN0ZWRfbW9kZS0+Y3J0Y19jbG9jazsKIAogCWlmIChhZGp1c3RlZF9tb2RlLT5mbGFncyAmIERS TV9NT0RFX0ZMQUdfREJMQ0xLKQpAQCAtMjM3OCw3ICsyMzc4LDcgQEAgc3RhdGljIGJvb2wgaW50 ZWxfaGRtaV9saW1pdGVkX2NvbG9yX3JhbmdlKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpjcnRjX3MKIAljb25zdCBzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9jb25uZWN0b3Jfc3RhdGUgKmlu dGVsX2Nvbm5fc3RhdGUgPQogCQl0b19pbnRlbF9kaWdpdGFsX2Nvbm5lY3Rvcl9zdGF0ZShjb25u X3N0YXRlKTsKIAljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9 Ci0JCSZjcnRjX3N0YXRlLT5iYXNlLmFkanVzdGVkX21vZGU7CisJCSZjcnRjX3N0YXRlLT5ody5h ZGp1c3RlZF9tb2RlOwogCiAJLyoKIAkgKiBPdXIgWUNiQ3Igb3V0cHV0IGlzIGFsd2F5cyBsaW1p dGVkIHJhbmdlLgpAQCAtMjQwNiw3ICsyNDA2LDcgQEAgaW50IGludGVsX2hkbWlfY29tcHV0ZV9j b25maWcoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCiB7CiAJc3RydWN0IGludGVsX2hk bWkgKmludGVsX2hkbWkgPSBlbmNfdG9faW50ZWxfaGRtaSgmZW5jb2Rlci0+YmFzZSk7CiAJc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShlbmNvZGVyLT5iYXNlLmRl dik7Ci0Jc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUgPSAmcGlwZV9jb25m aWctPmJhc2UuYWRqdXN0ZWRfbW9kZTsKKwlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0 ZWRfbW9kZSA9ICZwaXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZTsKIAlzdHJ1Y3QgZHJtX2Nv bm5lY3RvciAqY29ubmVjdG9yID0gY29ubl9zdGF0ZS0+Y29ubmVjdG9yOwogCXN0cnVjdCBkcm1f c2NkYyAqc2NkYyA9ICZjb25uZWN0b3ItPmRpc3BsYXlfaW5mby5oZG1pLnNjZGM7CiAJc3RydWN0 IGludGVsX2RpZ2l0YWxfY29ubmVjdG9yX3N0YXRlICppbnRlbF9jb25uX3N0YXRlID0KZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfbHNwY29uLmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2xzcGNvbi5jCmluZGV4IGY4ZjEzMDg2NDNh OS4uNTE0NWZmOGI5NjJiIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5 L2ludGVsX2xzcGNvbi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxf bHNwY29uLmMKQEAgLTE4OSw3ICsxODksNyBAQCB2b2lkIGxzcGNvbl95Y2JjcjQyMF9jb25maWco c3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKIHsKIAljb25zdCBzdHJ1Y3QgZHJtX2Rp c3BsYXlfaW5mbyAqaW5mbyA9ICZjb25uZWN0b3ItPmRpc3BsYXlfaW5mbzsKIAljb25zdCBzdHJ1 Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9Ci0JCQkJCSZjcnRjX3N0YXRlLT5i YXNlLmFkanVzdGVkX21vZGU7CisJCQkJCSZjcnRjX3N0YXRlLT5ody5hZGp1c3RlZF9tb2RlOwog CiAJaWYgKGRybV9tb2RlX2lzXzQyMF9vbmx5KGluZm8sIGFkanVzdGVkX21vZGUpICYmCiAJICAg IGNvbm5lY3Rvci0+eWNiY3JfNDIwX2FsbG93ZWQpIHsKQEAgLTQ3NSw3ICs0NzUsNyBAQCB2b2lk IGxzcGNvbl9zZXRfaW5mb2ZyYW1lcyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKIAlz dHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICpkaWdfcG9ydCA9IGVuY190b19kaWdfcG9ydCgmZW5j b2Rlci0+YmFzZSk7CiAJc3RydWN0IGludGVsX2xzcGNvbiAqbHNwY29uID0gJmRpZ19wb3J0LT5s c3Bjb247CiAJY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUgPQot CQkmY3J0Y19zdGF0ZS0+YmFzZS5hZGp1c3RlZF9tb2RlOworCQkmY3J0Y19zdGF0ZS0+aHcuYWRq dXN0ZWRfbW9kZTsKIAogCWlmICghbHNwY29uLT5hY3RpdmUpIHsKIAkJRFJNX0VSUk9SKCJXcml0 aW5nIGluZm9mcmFtZXMgd2hpbGUgTFNQQ09OIGRpc2FibGVkID9cbiIpOwpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9sdmRzLmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9kaXNwbGF5L2ludGVsX2x2ZHMuYwppbmRleCAxMzg0MWQ3YzQ1NWIuLmYxN2Q2ZTAy NDYwZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9sdmRz LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9sdmRzLmMKQEAgLTEz NSw3ICsxMzUsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9sdmRzX2dldF9jb25maWcoc3RydWN0IGlu dGVsX2VuY29kZXIgKmVuY29kZXIsCiAJZWxzZQogCQlmbGFncyB8PSBEUk1fTU9ERV9GTEFHX1BW U1lOQzsKIAotCXBpcGVfY29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGUuZmxhZ3MgfD0gZmxhZ3M7 CisJcGlwZV9jb25maWctPmh3LmFkanVzdGVkX21vZGUuZmxhZ3MgfD0gZmxhZ3M7CiAKIAlpZiAo SU5URUxfR0VOKGRldl9wcml2KSA8IDUpCiAJCXBpcGVfY29uZmlnLT5nbWNoX3BmaXQubHZkc19i b3JkZXJfYml0cyA9CkBAIC0xNDgsNyArMTQ4LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfbHZkc19n ZXRfY29uZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAogCQlwaXBlX2NvbmZpZy0+ Z21jaF9wZml0LmNvbnRyb2wgfD0gdG1wICYgUEFORUxfOFRPNl9ESVRIRVJfRU5BQkxFOwogCX0K IAotCXBpcGVfY29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGUuY3J0Y19jbG9jayA9IHBpcGVfY29u ZmlnLT5wb3J0X2Nsb2NrOworCXBpcGVfY29uZmlnLT5ody5hZGp1c3RlZF9tb2RlLmNydGNfY2xv Y2sgPSBwaXBlX2NvbmZpZy0+cG9ydF9jbG9jazsKIH0KIAogc3RhdGljIHZvaWQgaW50ZWxfbHZk c19wcHNfZ2V0X2h3X3N0YXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKQEAg LTIzMSw3ICsyMzEsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9wcmVfZW5hYmxlX2x2ZHMoc3RydWN0 IGludGVsX2VuY29kZXIgKmVuY29kZXIsCiAJc3RydWN0IGludGVsX2x2ZHNfZW5jb2RlciAqbHZk c19lbmNvZGVyID0gdG9fbHZkc19lbmNvZGVyKCZlbmNvZGVyLT5iYXNlKTsKIAlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVuY29kZXItPmJhc2UuZGV2KTsKIAlz dHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMocGlwZV9jb25maWctPmJhc2Uu Y3J0Yyk7Ci0JY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUgPSAm cGlwZV9jb25maWctPmJhc2UuYWRqdXN0ZWRfbW9kZTsKKwljb25zdCBzdHJ1Y3QgZHJtX2Rpc3Bs YXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9ICZwaXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZTsK IAllbnVtIHBpcGUgcGlwZSA9IGNydGMtPnBpcGU7CiAJdTMyIHRlbXA7CiAKQEAgLTM5Miw3ICsz OTIsNyBAQCBzdGF0aWMgaW50IGludGVsX2x2ZHNfY29tcHV0ZV9jb25maWcoc3RydWN0IGludGVs X2VuY29kZXIgKmludGVsX2VuY29kZXIsCiAJCXRvX2x2ZHNfZW5jb2RlcigmaW50ZWxfZW5jb2Rl ci0+YmFzZSk7CiAJc3RydWN0IGludGVsX2Nvbm5lY3RvciAqaW50ZWxfY29ubmVjdG9yID0KIAkJ bHZkc19lbmNvZGVyLT5hdHRhY2hlZF9jb25uZWN0b3I7Ci0Jc3RydWN0IGRybV9kaXNwbGF5X21v ZGUgKmFkanVzdGVkX21vZGUgPSAmcGlwZV9jb25maWctPmJhc2UuYWRqdXN0ZWRfbW9kZTsKKwlz dHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9ICZwaXBlX2NvbmZpZy0+aHcu YWRqdXN0ZWRfbW9kZTsKIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVs X2NydGMocGlwZV9jb25maWctPmJhc2UuY3J0Yyk7CiAJdW5zaWduZWQgaW50IGx2ZHNfYnBwOwog CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3BhbmVsLmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3BhbmVsLmMKaW5kZXggYmMxNGU5 YzAyODVhLi41ZTNmZDM3ZDk0NzEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rp c3BsYXkvaW50ZWxfcGFuZWwuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2lu dGVsX3BhbmVsLmMKQEAgLTE3OCw3ICsxNzgsNyBAQCBpbnRlbF9wY2hfcGFuZWxfZml0dGluZyhz dHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YywKIAkJCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpwaXBlX2NvbmZpZywKIAkJCWludCBmaXR0aW5nX21vZGUpCiB7Ci0JY29uc3Qgc3RydWN0IGRy bV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUgPSAmcGlwZV9jb25maWctPmJhc2UuYWRqdXN0 ZWRfbW9kZTsKKwljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9 ICZwaXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZTsKIAlpbnQgeCA9IDAsIHkgPSAwLCB3aWR0 aCA9IDAsIGhlaWdodCA9IDA7CiAKIAkvKiBOYXRpdmUgbW9kZXMgZG9uJ3QgbmVlZCBmaXR0aW5n ICovCkBAIC0zMDAsNyArMzAwLDcgQEAgc3RhdGljIGlubGluZSB1MzIgcGFuZWxfZml0dGVyX3Nj YWxpbmcodTMyIHNvdXJjZSwgdTMyIHRhcmdldCkKIHN0YXRpYyB2b2lkIGk5NjVfc2NhbGVfYXNw ZWN0KHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZywKIAkJCSAgICAgIHUzMiAq cGZpdF9jb250cm9sKQogewotCWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3Rl ZF9tb2RlID0gJnBpcGVfY29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGU7CisJY29uc3Qgc3RydWN0 IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUgPSAmcGlwZV9jb25maWctPmh3LmFkanVz dGVkX21vZGU7CiAJdTMyIHNjYWxlZF93aWR0aCA9IGFkanVzdGVkX21vZGUtPmNydGNfaGRpc3Bs YXkgKgogCQlwaXBlX2NvbmZpZy0+cGlwZV9zcmNfaDsKIAl1MzIgc2NhbGVkX2hlaWdodCA9IHBp cGVfY29uZmlnLT5waXBlX3NyY193ICoKQEAgLTMyMSw3ICszMjEsNyBAQCBzdGF0aWMgdm9pZCBp OXh4X3NjYWxlX2FzcGVjdChzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcsCiAJ CQkgICAgICB1MzIgKnBmaXRfY29udHJvbCwgdTMyICpwZml0X3BnbV9yYXRpb3MsCiAJCQkgICAg ICB1MzIgKmJvcmRlcikKIHsKLQlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9k ZSA9ICZwaXBlX2NvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlOworCXN0cnVjdCBkcm1fZGlzcGxh eV9tb2RlICphZGp1c3RlZF9tb2RlID0gJnBpcGVfY29uZmlnLT5ody5hZGp1c3RlZF9tb2RlOwog CXUzMiBzY2FsZWRfd2lkdGggPSBhZGp1c3RlZF9tb2RlLT5jcnRjX2hkaXNwbGF5ICoKIAkJcGlw ZV9jb25maWctPnBpcGVfc3JjX2g7CiAJdTMyIHNjYWxlZF9oZWlnaHQgPSBwaXBlX2NvbmZpZy0+ cGlwZV9zcmNfdyAqCkBAIC0zODAsNyArMzgwLDcgQEAgdm9pZCBpbnRlbF9nbWNoX3BhbmVsX2Zp dHRpbmcoc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMsCiB7CiAJc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShpbnRlbF9jcnRjLT5iYXNlLmRldik7CiAJdTMy IHBmaXRfY29udHJvbCA9IDAsIHBmaXRfcGdtX3JhdGlvcyA9IDAsIGJvcmRlciA9IDA7Ci0Jc3Ry dWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUgPSAmcGlwZV9jb25maWctPmJhc2Uu YWRqdXN0ZWRfbW9kZTsKKwlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9 ICZwaXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZTsKIAogCS8qIE5hdGl2ZSBtb2RlcyBkb24n dCBuZWVkIGZpdHRpbmcgKi8KIAlpZiAoYWRqdXN0ZWRfbW9kZS0+Y3J0Y19oZGlzcGxheSA9PSBw aXBlX2NvbmZpZy0+cGlwZV9zcmNfdyAmJgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZGlzcGxheS9pbnRlbF9waXBlX2NyYy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxh eS9pbnRlbF9waXBlX2NyYy5jCmluZGV4IDYyNjBhMjA4MjcxOS4uZmM2MDI1MzNhNjAyIDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3BpcGVfY3JjLmMKKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9waXBlX2NyYy5jCkBAIC0zMTMs NyArMzEzLDcgQEAgaW50ZWxfY3J0Y19jcmNfc2V0dXBfd29ya2Fyb3VuZHMoc3RydWN0IGludGVs X2NydGMgKmNydGMsIGJvb2wgZW5hYmxlKQogCXBpcGVfY29uZmlnLT5jcmNfZW5hYmxlZCA9IGVu YWJsZTsKIAogCWlmIChJU19IQVNXRUxMKGRldl9wcml2KSAmJgotCSAgICBwaXBlX2NvbmZpZy0+ YmFzZS5hY3RpdmUgJiYgY3J0Yy0+cGlwZSA9PSBQSVBFX0EgJiYKKwkgICAgcGlwZV9jb25maWct Pmh3LmFjdGl2ZSAmJiBjcnRjLT5waXBlID09IFBJUEVfQSAmJgogCSAgICBwaXBlX2NvbmZpZy0+ Y3B1X3RyYW5zY29kZXIgPT0gVFJBTlNDT0RFUl9FRFApCiAJCXBpcGVfY29uZmlnLT5iYXNlLm1v ZGVfY2hhbmdlZCA9IHRydWU7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rp c3BsYXkvaW50ZWxfcHNyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3Bz ci5jCmluZGV4IGE4ZjNlZGM5YzQ4Mi4uNjJhOTBiNWFlZThmIDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3Bzci5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2Rpc3BsYXkvaW50ZWxfcHNyLmMKQEAgLTUzNywxMSArNTM3LDExIEBAIHRyYW5zY29kZXJf aGFzX3BzcjIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBlbnVtIHRyYW5zY29k ZXIgdHJhbnMpCiAKIHN0YXRpYyB1MzIgaW50ZWxfZ2V0X2ZyYW1lX3RpbWVfdXMoY29uc3Qgc3Ry dWN0IGludGVsX2NydGNfc3RhdGUgKmNzdGF0ZSkKIHsKLQlpZiAoIWNzdGF0ZSB8fCAhY3N0YXRl LT5iYXNlLmFjdGl2ZSkKKwlpZiAoIWNzdGF0ZSB8fCAhY3N0YXRlLT5ody5hY3RpdmUpCiAJCXJl dHVybiAwOwogCiAJcmV0dXJuIERJVl9ST1VORF9VUCgxMDAwICogMTAwMCwKLQkJCSAgICBkcm1f bW9kZV92cmVmcmVzaCgmY3N0YXRlLT5iYXNlLmFkanVzdGVkX21vZGUpKTsKKwkJCSAgICBkcm1f bW9kZV92cmVmcmVzaCgmY3N0YXRlLT5ody5hZGp1c3RlZF9tb2RlKSk7CiB9CiAKIHN0YXRpYyB2 b2lkIHBzcjJfcHJvZ3JhbV9pZGxlX2ZyYW1lcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYsCkBAIC02MDYsOCArNjA2LDggQEAgc3RhdGljIGJvb2wgaW50ZWxfcHNyMl9jb25maWdf dmFsaWQoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwKIAkJCQkgICAgc3RydWN0IGludGVsX2Ny dGNfc3RhdGUgKmNydGNfc3RhdGUpCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gZHBfdG9faTkxNShpbnRlbF9kcCk7Ci0JaW50IGNydGNfaGRpc3BsYXkgPSBjcnRjX3N0 YXRlLT5iYXNlLmFkanVzdGVkX21vZGUuY3J0Y19oZGlzcGxheTsKLQlpbnQgY3J0Y192ZGlzcGxh eSA9IGNydGNfc3RhdGUtPmJhc2UuYWRqdXN0ZWRfbW9kZS5jcnRjX3ZkaXNwbGF5OworCWludCBj cnRjX2hkaXNwbGF5ID0gY3J0Y19zdGF0ZS0+aHcuYWRqdXN0ZWRfbW9kZS5jcnRjX2hkaXNwbGF5 OworCWludCBjcnRjX3ZkaXNwbGF5ID0gY3J0Y19zdGF0ZS0+aHcuYWRqdXN0ZWRfbW9kZS5jcnRj X3ZkaXNwbGF5OwogCWludCBwc3JfbWF4X2ggPSAwLCBwc3JfbWF4X3YgPSAwOwogCiAJaWYgKCFk ZXZfcHJpdi0+cHNyLnNpbmtfcHNyMl9zdXBwb3J0KQpAQCAtNjczLDcgKzY3Myw3IEBAIHZvaWQg aW50ZWxfcHNyX2NvbXB1dGVfY29uZmlnKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCiAJc3Ry dWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqZGlnX3BvcnQgPSBkcF90b19kaWdfcG9ydChpbnRlbF9k cCk7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZHBfdG9faTkxNShpbnRl bF9kcCk7CiAJY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUgPQot CQkmY3J0Y19zdGF0ZS0+YmFzZS5hZGp1c3RlZF9tb2RlOworCQkmY3J0Y19zdGF0ZS0+aHcuYWRq dXN0ZWRfbW9kZTsKIAlpbnQgcHNyX3NldHVwX3RpbWU7CiAKIAlpZiAoIUNBTl9QU1IoZGV2X3By aXYpKQpAQCAtMTEzNyw3ICsxMTM3LDcgQEAgc3RhdGljIGludCBpbnRlbF9wc3JfZmFzdHNldF9m b3JjZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJCQlnb3RvIGVycm9yOwog CQl9CiAKLQkJaWYgKGNydGNfc3RhdGUtPmJhc2UuYWN0aXZlICYmIGNydGNfc3RhdGUtPmhhc19w c3IpIHsKKwkJaWYgKGNydGNfc3RhdGUtPmh3LmFjdGl2ZSAmJiBjcnRjX3N0YXRlLT5oYXNfcHNy KSB7CiAJCQkvKiBNYXJrIG1vZGUgYXMgY2hhbmdlZCB0byB0cmlnZ2VyIGEgcGlwZS0+dXBkYXRl KCkgKi8KIAkJCWNydGNfc3RhdGUtPmJhc2UubW9kZV9jaGFuZ2VkID0gdHJ1ZTsKIAkJCWJyZWFr OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9zZHZvLmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3Nkdm8uYwppbmRleCA0N2Y1ZDg3 YTkzOGEuLjk3YWU4Y2MxMzE0ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlz cGxheS9pbnRlbF9zZHZvLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRl bF9zZHZvLmMKQEAgLTEwODcsNyArMTA4Nyw3IEBAIHN0YXRpYyBib29sIGludGVsX3Nkdm9fY29t cHV0ZV9hdmlfaW5mb2ZyYW1lKHN0cnVjdCBpbnRlbF9zZHZvICppbnRlbF9zZHZvLAogewogCXN0 cnVjdCBoZG1pX2F2aV9pbmZvZnJhbWUgKmZyYW1lID0gJmNydGNfc3RhdGUtPmluZm9mcmFtZXMu YXZpLmF2aTsKIAljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9 Ci0JCSZjcnRjX3N0YXRlLT5iYXNlLmFkanVzdGVkX21vZGU7CisJCSZjcnRjX3N0YXRlLT5ody5h ZGp1c3RlZF9tb2RlOwogCWludCByZXQ7CiAKIAlpZiAoIWNydGNfc3RhdGUtPmhhc19oZG1pX3Np bmspCkBAIC0xMjc2LDggKzEyNzYsOCBAQCBzdGF0aWMgaW50IGludGVsX3Nkdm9fY29tcHV0ZV9j b25maWcoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCiAJCXRvX2ludGVsX3Nkdm9fY29u bmVjdG9yX3N0YXRlKGNvbm5fc3RhdGUpOwogCXN0cnVjdCBpbnRlbF9zZHZvX2Nvbm5lY3RvciAq aW50ZWxfc2R2b19jb25uZWN0b3IgPQogCQl0b19pbnRlbF9zZHZvX2Nvbm5lY3Rvcihjb25uX3N0 YXRlLT5jb25uZWN0b3IpOwotCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2Rl ID0gJnBpcGVfY29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGU7Ci0Jc3RydWN0IGRybV9kaXNwbGF5 X21vZGUgKm1vZGUgPSAmcGlwZV9jb25maWctPmJhc2UubW9kZTsKKwlzdHJ1Y3QgZHJtX2Rpc3Bs YXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9ICZwaXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZTsK KwlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSA9ICZwaXBlX2NvbmZpZy0+aHcubW9kZTsK IAogCURSTV9ERUJVR19LTVMoImZvcmNpbmcgYnBjIHRvIDggZm9yIFNEVk9cbiIpOwogCXBpcGVf Y29uZmlnLT5waXBlX2JwcCA9IDgqMzsKQEAgLTE0MzAsMTIgKzE0MzAsMTIgQEAgc3RhdGljIHZv aWQgaW50ZWxfc2R2b19wcmVfZW5hYmxlKHN0cnVjdCBpbnRlbF9lbmNvZGVyICppbnRlbF9lbmNv ZGVyLAogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoaW50 ZWxfZW5jb2Rlci0+YmFzZS5kZXYpOwogCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50 ZWxfY3J0YyhjcnRjX3N0YXRlLT5iYXNlLmNydGMpOwotCWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxh eV9tb2RlICphZGp1c3RlZF9tb2RlID0gJmNydGNfc3RhdGUtPmJhc2UuYWRqdXN0ZWRfbW9kZTsK Kwljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9ICZjcnRjX3N0 YXRlLT5ody5hZGp1c3RlZF9tb2RlOwogCWNvbnN0IHN0cnVjdCBpbnRlbF9zZHZvX2Nvbm5lY3Rv cl9zdGF0ZSAqc2R2b19zdGF0ZSA9CiAJCXRvX2ludGVsX3Nkdm9fY29ubmVjdG9yX3N0YXRlKGNv bm5fc3RhdGUpOwogCWNvbnN0IHN0cnVjdCBpbnRlbF9zZHZvX2Nvbm5lY3RvciAqaW50ZWxfc2R2 b19jb25uZWN0b3IgPQogCQl0b19pbnRlbF9zZHZvX2Nvbm5lY3Rvcihjb25uX3N0YXRlLT5jb25u ZWN0b3IpOwotCWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlID0gJmNydGNfc3Rh dGUtPmJhc2UubW9kZTsKKwljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSA9ICZj cnRjX3N0YXRlLT5ody5tb2RlOwogCXN0cnVjdCBpbnRlbF9zZHZvICppbnRlbF9zZHZvID0gdG9f c2R2byhpbnRlbF9lbmNvZGVyKTsKIAl1MzIgc2R2b3g7CiAJc3RydWN0IGludGVsX3Nkdm9faW5f b3V0X21hcCBpbl9vdXQ7CkBAIC0xNjI5LDcgKzE2MjksNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9z ZHZvX2dldF9jb25maWcoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCiAJCQlmbGFncyB8 PSBEUk1fTU9ERV9GTEFHX05WU1lOQzsKIAl9CiAKLQlwaXBlX2NvbmZpZy0+YmFzZS5hZGp1c3Rl ZF9tb2RlLmZsYWdzIHw9IGZsYWdzOworCXBpcGVfY29uZmlnLT5ody5hZGp1c3RlZF9tb2RlLmZs YWdzIHw9IGZsYWdzOwogCiAJLyoKIAkgKiBwaXhlbCBtdWx0aXBsaWVyIHJlYWRvdXQgaXMgdHJp Y2t5OiBPbmx5IG9uIGk5MTVnL2dtIGl0IGlzIHN0b3JlZCBpbgpAQCAtMTY0OSw3ICsxNjQ5LDcg QEAgc3RhdGljIHZvaWQgaW50ZWxfc2R2b19nZXRfY29uZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVy ICplbmNvZGVyLAogCWlmIChwaXBlX2NvbmZpZy0+cGl4ZWxfbXVsdGlwbGllcikKIAkJZG90Y2xv Y2sgLz0gcGlwZV9jb25maWctPnBpeGVsX211bHRpcGxpZXI7CiAKLQlwaXBlX2NvbmZpZy0+YmFz ZS5hZGp1c3RlZF9tb2RlLmNydGNfY2xvY2sgPSBkb3RjbG9jazsKKwlwaXBlX2NvbmZpZy0+aHcu YWRqdXN0ZWRfbW9kZS5jcnRjX2Nsb2NrID0gZG90Y2xvY2s7CiAKIAkvKiBDcm9zcyBjaGVjayB0 aGUgcG9ydCBwaXhlbCBtdWx0aXBsaWVyIHdpdGggdGhlIHNkdm8gZW5jb2RlciBzdGF0ZS4gKi8K IAlpZiAoaW50ZWxfc2R2b19nZXRfdmFsdWUoaW50ZWxfc2R2bywgU0RWT19DTURfR0VUX0NMT0NL X1JBVEVfTVVMVCwKQEAgLTE3MDEsNyArMTcwMSw3IEBAIHN0YXRpYyB2b2lkIGludGVsX3Nkdm9f ZW5hYmxlX2F1ZGlvKHN0cnVjdCBpbnRlbF9zZHZvICppbnRlbF9zZHZvLAogCQkJCSAgICBjb25z dCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubl9zdGF0ZSkKIHsKIAljb25zdCBzdHJ1 Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9Ci0JCSZjcnRjX3N0YXRlLT5iYXNl LmFkanVzdGVkX21vZGU7CisJCSZjcnRjX3N0YXRlLT5ody5hZGp1c3RlZF9tb2RlOwogCXN0cnVj dCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IgPSBjb25uX3N0YXRlLT5jb25uZWN0b3I7CiAJdTgg KmVsZCA9IGNvbm5lY3Rvci0+ZWxkOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9kaXNwbGF5L2ludGVsX3Nwcml0ZS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9p bnRlbF9zcHJpdGUuYwppbmRleCA1YWUxMmFiM2M1YjcuLmVmMGNhN2M2ZDExZiAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9zcHJpdGUuYworKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3Nwcml0ZS5jCkBAIC04Myw3ICs4Myw3IEBA IHZvaWQgaW50ZWxfcGlwZV91cGRhdGVfc3RhcnQoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3Rh dGUgKm5ld19jcnRjX3N0YXRlKQogewogCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50 ZWxfY3J0YyhuZXdfY3J0Y19zdGF0ZS0+YmFzZS5jcnRjKTsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGMtPmJhc2UuZGV2KTsKLQljb25zdCBzdHJ1Y3Qg ZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9ICZuZXdfY3J0Y19zdGF0ZS0+YmFzZS5h ZGp1c3RlZF9tb2RlOworCWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9t b2RlID0gJm5ld19jcnRjX3N0YXRlLT5ody5hZGp1c3RlZF9tb2RlOwogCWxvbmcgdGltZW91dCA9 IG1zZWNzX3RvX2ppZmZpZXNfdGltZW91dCgxKTsKIAlpbnQgc2NhbmxpbmUsIG1pbiwgbWF4LCB2 Ymxhbmtfc3RhcnQ7CiAJd2FpdF9xdWV1ZV9oZWFkX3QgKndxID0gZHJtX2NydGNfdmJsYW5rX3dh aXRxdWV1ZSgmY3J0Yy0+YmFzZSk7CkBAIC0xNTEzLDcgKzE1MTMsNyBAQCBnNHhfc3ByaXRlX2No ZWNrX3NjYWxpbmcoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCiAJY29uc3Qg c3RydWN0IGRybV9yZWN0ICpkc3QgPSAmcGxhbmVfc3RhdGUtPmJhc2UuZHN0OwogCWludCBzcmNf eCwgc3JjX3csIHNyY19oLCBjcnRjX3csIGNydGNfaDsKIAljb25zdCBzdHJ1Y3QgZHJtX2Rpc3Bs YXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9Ci0JCSZjcnRjX3N0YXRlLT5iYXNlLmFkanVzdGVkX21v ZGU7CisJCSZjcnRjX3N0YXRlLT5ody5hZGp1c3RlZF9tb2RlOwogCXVuc2lnbmVkIGludCBzdHJp ZGUgPSBwbGFuZV9zdGF0ZS0+Y29sb3JfcGxhbmVbMF0uc3RyaWRlOwogCXVuc2lnbmVkIGludCBj cHAgPSBmYi0+Zm9ybWF0LT5jcHBbMF07CiAJdW5zaWduZWQgaW50IHdpZHRoX2J5dGVzOwpAQCAt MTcyNyw4ICsxNzI3LDggQEAgc3RhdGljIGludCBza2xfcGxhbmVfY2hlY2tfZmIoY29uc3Qgc3Ry dWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCiAJfQogCiAJLyogWS10aWxpbmcgaXMg bm90IHN1cHBvcnRlZCBpbiBJRi1JRCBJbnRlcmxhY2UgbW9kZSAqLwotCWlmIChjcnRjX3N0YXRl LT5iYXNlLmVuYWJsZSAmJgotCSAgICBjcnRjX3N0YXRlLT5iYXNlLmFkanVzdGVkX21vZGUuZmxh Z3MgJiBEUk1fTU9ERV9GTEFHX0lOVEVSTEFDRSAmJgorCWlmIChjcnRjX3N0YXRlLT5ody5lbmFi bGUgJiYKKwkgICAgY3J0Y19zdGF0ZS0+aHcuYWRqdXN0ZWRfbW9kZS5mbGFncyAmIERSTV9NT0RF X0ZMQUdfSU5URVJMQUNFICYmCiAJICAgIChmYi0+bW9kaWZpZXIgPT0gSTkxNV9GT1JNQVRfTU9E X1lfVElMRUQgfHwKIAkgICAgIGZiLT5tb2RpZmllciA9PSBJOTE1X0ZPUk1BVF9NT0RfWWZfVElM RUQgfHwKIAkgICAgIGZiLT5tb2RpZmllciA9PSBJOTE1X0ZPUk1BVF9NT0RfWV9USUxFRF9DQ1Mg fHwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfdHYuYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfdHYuYwppbmRleCA3MDcyNmI0ODEy NDQuLmU4MDBkNDViODEzZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxh eS9pbnRlbF90di5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfdHYu YwpAQCAtMTA4NSw3ICsxMDg1LDcgQEAgaW50ZWxfdHZfZ2V0X2NvbmZpZyhzdHJ1Y3QgaW50ZWxf ZW5jb2RlciAqZW5jb2RlciwKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PSB0b19pOTE1KGVuY29kZXItPmJhc2UuZGV2KTsKIAlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAq YWRqdXN0ZWRfbW9kZSA9Ci0JCSZwaXBlX2NvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlOworCQkm cGlwZV9jb25maWctPmh3LmFkanVzdGVkX21vZGU7CiAJc3RydWN0IGRybV9kaXNwbGF5X21vZGUg bW9kZSA9IHt9OwogCXUzMiB0dl9jdGwsIGhjdGwxLCBoY3RsMywgdmN0bDEsIHZjdGwyLCB0bXA7 CiAJc3RydWN0IHR2X21vZGUgdHZfbW9kZSA9IHt9OwpAQCAtMTE4OCw3ICsxMTg4LDcgQEAgaW50 ZWxfdHZfY29tcHV0ZV9jb25maWcoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCiAJCXRv X2ludGVsX3R2X2Nvbm5lY3Rvcl9zdGF0ZShjb25uX3N0YXRlKTsKIAljb25zdCBzdHJ1Y3QgdHZf bW9kZSAqdHZfbW9kZSA9IGludGVsX3R2X21vZGVfZmluZChjb25uX3N0YXRlKTsKIAlzdHJ1Y3Qg ZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9Ci0JCSZwaXBlX2NvbmZpZy0+YmFzZS5h ZGp1c3RlZF9tb2RlOworCQkmcGlwZV9jb25maWctPmh3LmFkanVzdGVkX21vZGU7CiAJaW50IGhk aXNwbGF5ID0gYWRqdXN0ZWRfbW9kZS0+Y3J0Y19oZGlzcGxheTsKIAlpbnQgdmRpc3BsYXkgPSBh ZGp1c3RlZF9tb2RlLT5jcnRjX3ZkaXNwbGF5OwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9kaXNwbGF5L2ludGVsX3Zkc2MuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3Bs YXkvaW50ZWxfdmRzYy5jCmluZGV4IDg5NmIwYzMzNGY1ZS4uNzU3YjI3NmViM2ZjIDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3Zkc2MuYworKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3Zkc2MuYwpAQCAtMzI5LDggKzMyOSw4IEBA IGludCBpbnRlbF9kcF9jb21wdXRlX2RzY19wYXJhbXMoc3RydWN0IGludGVsX2RwICppbnRlbF9k cCwKIAlpbnQgY29sdW1uX2luZGV4ID0gMDsKIAl1OCBsaW5lX2J1Zl9kZXB0aCA9IDA7CiAKLQl2 ZHNjX2NmZy0+cGljX3dpZHRoID0gcGlwZV9jb25maWctPmJhc2UuYWRqdXN0ZWRfbW9kZS5jcnRj X2hkaXNwbGF5OwotCXZkc2NfY2ZnLT5waWNfaGVpZ2h0ID0gcGlwZV9jb25maWctPmJhc2UuYWRq dXN0ZWRfbW9kZS5jcnRjX3ZkaXNwbGF5OworCXZkc2NfY2ZnLT5waWNfd2lkdGggPSBwaXBlX2Nv bmZpZy0+aHcuYWRqdXN0ZWRfbW9kZS5jcnRjX2hkaXNwbGF5OworCXZkc2NfY2ZnLT5waWNfaGVp Z2h0ID0gcGlwZV9jb25maWctPmh3LmFkanVzdGVkX21vZGUuY3J0Y192ZGlzcGxheTsKIAl2ZHNj X2NmZy0+c2xpY2Vfd2lkdGggPSBESVZfUk9VTkRfVVAodmRzY19jZmctPnBpY193aWR0aCwKIAkJ CQkJICAgICBwaXBlX2NvbmZpZy0+ZHNjLnNsaWNlX2NvdW50KTsKIAkvKgpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS92bHZfZHNpLmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9kaXNwbGF5L3Zsdl9kc2kuYwppbmRleCA1MDA2NGNkZTA3MjQuLjNiZjgzODI3OWZjMiAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS92bHZfZHNpLmMKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS92bHZfZHNpLmMKQEAgLTI2Myw3ICsyNjMsNyBA QCBzdGF0aWMgaW50IGludGVsX2RzaV9jb21wdXRlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfZW5jb2Rl ciAqZW5jb2RlciwKIAlzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICppbnRlbF9jb25uZWN0b3IgPSBp bnRlbF9kc2ktPmF0dGFjaGVkX2Nvbm5lY3RvcjsKIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9 IHRvX2ludGVsX2NydGMocGlwZV9jb25maWctPmJhc2UuY3J0Yyk7CiAJY29uc3Qgc3RydWN0IGRy bV9kaXNwbGF5X21vZGUgKmZpeGVkX21vZGUgPSBpbnRlbF9jb25uZWN0b3ItPnBhbmVsLmZpeGVk X21vZGU7Ci0Jc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUgPSAmcGlwZV9j b25maWctPmJhc2UuYWRqdXN0ZWRfbW9kZTsKKwlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRq dXN0ZWRfbW9kZSA9ICZwaXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZTsKIAlpbnQgcmV0Owog CiAJRFJNX0RFQlVHX0tNUygiXG4iKTsKQEAgLTEwMzIsNyArMTAzMiw3IEBAIHN0YXRpYyB2b2lk IGJ4dF9kc2lfZ2V0X3BpcGVfY29uZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAog CXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBlbmNvZGVyLT5iYXNlLmRldjsKIAlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7CiAJc3RydWN0IGRybV9kaXNw bGF5X21vZGUgKmFkanVzdGVkX21vZGUgPQotCQkJCQkmcGlwZV9jb25maWctPmJhc2UuYWRqdXN0 ZWRfbW9kZTsKKwkJCQkJJnBpcGVfY29uZmlnLT5ody5hZGp1c3RlZF9tb2RlOwogCXN0cnVjdCBk cm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2RlX3N3OwogCXN0cnVjdCBpbnRlbF9jcnRjICpj cnRjID0gdG9faW50ZWxfY3J0YyhwaXBlX2NvbmZpZy0+YmFzZS5jcnRjKTsKIAlzdHJ1Y3QgaW50 ZWxfZHNpICppbnRlbF9kc2kgPSBlbmNfdG9faW50ZWxfZHNpKCZlbmNvZGVyLT5iYXNlKTsKQEAg LTEwNDUsNyArMTA0NSw3IEBAIHN0YXRpYyB2b2lkIGJ4dF9kc2lfZ2V0X3BpcGVfY29uZmlnKHN0 cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAogCQkJCWNydGNfaGJsYW5rX3N0YXJ0X3N3LCBj cnRjX2hibGFua19lbmRfc3c7CiAKIAkvKiBGSVhNRTogaHcgcmVhZG91dCBzaG91bGQgbm90IGRl cGVuZCBvbiBTVyBzdGF0ZSAqLwotCWFkanVzdGVkX21vZGVfc3cgPSAmY3J0Yy0+Y29uZmlnLT5i YXNlLmFkanVzdGVkX21vZGU7CisJYWRqdXN0ZWRfbW9kZV9zdyA9ICZjcnRjLT5jb25maWctPmh3 LmFkanVzdGVkX21vZGU7CiAKIAkvKgogCSAqIEF0bGVhc3Qgb25lIHBvcnQgaXMgYWN0aXZlIGFz IGVuY29kZXItPmdldF9jb25maWcgY2FsbGVkIG9ubHkgaWYKQEAgLTEyMDQsNyArMTIwNCw3IEBA IHN0YXRpYyB2b2lkIGludGVsX2RzaV9nZXRfY29uZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVyICpl bmNvZGVyLAogCX0KIAogCWlmIChwY2xrKSB7Ci0JCXBpcGVfY29uZmlnLT5iYXNlLmFkanVzdGVk X21vZGUuY3J0Y19jbG9jayA9IHBjbGs7CisJCXBpcGVfY29uZmlnLT5ody5hZGp1c3RlZF9tb2Rl LmNydGNfY2xvY2sgPSBwY2xrOwogCQlwaXBlX2NvbmZpZy0+cG9ydF9jbG9jayA9IHBjbGs7CiAJ fQogfQpAQCAtMTMxNyw3ICsxMzE3LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfZHNpX3ByZXBhcmUo c3RydWN0IGludGVsX2VuY29kZXIgKmludGVsX2VuY29kZXIsCiAJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwogCXN0cnVjdCBpbnRlbF9jcnRjICppbnRl bF9jcnRjID0gdG9faW50ZWxfY3J0YyhwaXBlX2NvbmZpZy0+YmFzZS5jcnRjKTsKIAlzdHJ1Y3Qg aW50ZWxfZHNpICppbnRlbF9kc2kgPSBlbmNfdG9faW50ZWxfZHNpKGVuY29kZXIpOwotCWNvbnN0 IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2RlID0gJnBpcGVfY29uZmlnLT5i YXNlLmFkanVzdGVkX21vZGU7CisJY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVz dGVkX21vZGUgPSAmcGlwZV9jb25maWctPmh3LmFkanVzdGVkX21vZGU7CiAJZW51bSBwb3J0IHBv cnQ7CiAJdW5zaWduZWQgaW50IGJwcCA9IG1pcGlfZHNpX3BpeGVsX2Zvcm1hdF90b19icHAoaW50 ZWxfZHNpLT5waXhlbF9mb3JtYXQpOwogCXUzMiB2YWwsIHRtcDsKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kZWJ1Z2ZzLmMKaW5kZXggYjNmNzhlNjQ5NWZkLi4xNGNmYmEyNjY1ODUgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZGVidWdmcy5jCkBAIC0yNjc5LDExICsyNjc5LDExIEBAIHN0YXRpYyBpbnQg aTkxNV9kaXNwbGF5X2luZm8oc3RydWN0IHNlcV9maWxlICptLCB2b2lkICp1bnVzZWQpCiAKIAkJ c2VxX3ByaW50ZihtLCAiQ1JUQyAlZDogcGlwZTogJWMsIGFjdGl2ZT0lcywgKHNpemU9JWR4JWQp LCBkaXRoZXI9JXMsIGJwcD0lZFxuIiwKIAkJCSAgIGNydGMtPmJhc2UuYmFzZS5pZCwgcGlwZV9u YW1lKGNydGMtPnBpcGUpLAotCQkJICAgeWVzbm8ocGlwZV9jb25maWctPmJhc2UuYWN0aXZlKSwK KwkJCSAgIHllc25vKHBpcGVfY29uZmlnLT5ody5hY3RpdmUpLAogCQkJICAgcGlwZV9jb25maWct PnBpcGVfc3JjX3csIHBpcGVfY29uZmlnLT5waXBlX3NyY19oLAogCQkJICAgeWVzbm8ocGlwZV9j b25maWctPmRpdGhlciksIHBpcGVfY29uZmlnLT5waXBlX2JwcCk7CiAKLQkJaWYgKHBpcGVfY29u ZmlnLT5iYXNlLmFjdGl2ZSkgeworCQlpZiAocGlwZV9jb25maWctPmh3LmFjdGl2ZSkgewogCQkJ c3RydWN0IGludGVsX3BsYW5lICpjdXJzb3IgPQogCQkJCXRvX2ludGVsX3BsYW5lKGNydGMtPmJh c2UuY3Vyc29yKTsKIApAQCAtNDE1Niw3ICs0MTU2LDcgQEAgc3RhdGljIGludCBpOTE1X2RycnNf Y3RsX3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKQogCiAJCWNydGNfc3RhdGUgPSB0b19pbnRlbF9j cnRjX3N0YXRlKGNydGMtPmJhc2Uuc3RhdGUpOwogCi0JCWlmICghY3J0Y19zdGF0ZS0+YmFzZS5h Y3RpdmUgfHwKKwkJaWYgKCFjcnRjX3N0YXRlLT5ody5hY3RpdmUgfHwKIAkJICAgICFjcnRjX3N0 YXRlLT5oYXNfZHJycykKIAkJCWdvdG8gb3V0OwogCkBAIC00MjM4LDcgKzQyMzgsNyBAQCBpOTE1 X2ZpZm9fdW5kZXJydW5fcmVzZXRfd3JpdGUoc3RydWN0IGZpbGUgKmZpbHAsCiAJCQkJcmV0ID0g d2FpdF9mb3JfY29tcGxldGlvbl9pbnRlcnJ1cHRpYmxlKCZjb21taXQtPmZsaXBfZG9uZSk7CiAJ CX0KIAotCQlpZiAoIXJldCAmJiBjcnRjX3N0YXRlLT5iYXNlLmFjdGl2ZSkgeworCQlpZiAoIXJl dCAmJiBjcnRjX3N0YXRlLT5ody5hY3RpdmUpIHsKIAkJCURSTV9ERUJVR19LTVMoIlJlLWFybWlu ZyBGSUZPIHVuZGVycnVucyBvbiBwaXBlICVjXG4iLAogCQkJCSAgICAgIHBpcGVfbmFtZShpbnRl bF9jcnRjLT5waXBlKSk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X3BtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCmluZGV4IDU2MTgwZmRmOTVl Zi4uNWM5YTYxZjM4ZjdhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9w bS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKQEAgLTc5OSw3ICs3OTks NyBAQCBzdGF0aWMgYm9vbCBpbnRlbF93bV9wbGFuZV92aXNpYmxlKGNvbnN0IHN0cnVjdCBpbnRl bF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAogCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0 b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFuZSk7CiAKIAkvKiBGSVhNRSBjaGVj ayB0aGUgJ2VuYWJsZScgaW5zdGVhZCAqLwotCWlmICghY3J0Y19zdGF0ZS0+YmFzZS5hY3RpdmUp CisJaWYgKCFjcnRjX3N0YXRlLT5ody5hY3RpdmUpCiAJCXJldHVybiBmYWxzZTsKIAogCS8qCkBA IC04NTIsNyArODUyLDcgQEAgc3RhdGljIHZvaWQgcGluZXZpZXdfdXBkYXRlX3dtKHN0cnVjdCBp bnRlbF9jcnRjICp1bnVzZWRfY3J0YykKIAljcnRjID0gc2luZ2xlX2VuYWJsZWRfY3J0YyhkZXZf cHJpdik7CiAJaWYgKGNydGMpIHsKIAkJY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFk anVzdGVkX21vZGUgPQotCQkJJmNydGMtPmNvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlOworCQkJ JmNydGMtPmNvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZTsKIAkJY29uc3Qgc3RydWN0IGRybV9mcmFt ZWJ1ZmZlciAqZmIgPQogCQkJY3J0Yy0+YmFzZS5wcmltYXJ5LT5zdGF0ZS0+ZmI7CiAJCWludCBj cHAgPSBmYi0+Zm9ybWF0LT5jcHBbMF07CkBAIC0xMDg4LDcgKzEwODgsNyBAQCBzdGF0aWMgdTE2 IGc0eF9jb21wdXRlX3dtKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRl LAogCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0 ZS0+YmFzZS5wbGFuZSk7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9f aTkxNShwbGFuZS0+YmFzZS5kZXYpOwogCWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICph ZGp1c3RlZF9tb2RlID0KLQkJJmNydGNfc3RhdGUtPmJhc2UuYWRqdXN0ZWRfbW9kZTsKKwkJJmNy dGNfc3RhdGUtPmh3LmFkanVzdGVkX21vZGU7CiAJdW5zaWduZWQgaW50IGxhdGVuY3kgPSBkZXZf cHJpdi0+d20ucHJpX2xhdGVuY3lbbGV2ZWxdICogMTA7CiAJdW5zaWduZWQgaW50IGNsb2NrLCBo dG90YWwsIGNwcCwgd2lkdGgsIHdtOwogCkBAIC0xNDAwLDcgKzE0MDAsNyBAQCBzdGF0aWMgaW50 IGc0eF9jb21wdXRlX2ludGVybWVkaWF0ZV93bShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqbmV3 X2NydGNfc3RhdGUpCiAJY29uc3Qgc3RydWN0IGc0eF93bV9zdGF0ZSAqYWN0aXZlID0gJm9sZF9j cnRjX3N0YXRlLT53bS5nNHgub3B0aW1hbDsKIAllbnVtIHBsYW5lX2lkIHBsYW5lX2lkOwogCi0J aWYgKCFuZXdfY3J0Y19zdGF0ZS0+YmFzZS5hY3RpdmUgfHwgZHJtX2F0b21pY19jcnRjX25lZWRz X21vZGVzZXQoJm5ld19jcnRjX3N0YXRlLT5iYXNlKSkgeworCWlmICghbmV3X2NydGNfc3RhdGUt Pmh3LmFjdGl2ZSB8fCBkcm1fYXRvbWljX2NydGNfbmVlZHNfbW9kZXNldCgmbmV3X2NydGNfc3Rh dGUtPmJhc2UpKSB7CiAJCSppbnRlcm1lZGlhdGUgPSAqb3B0aW1hbDsKIAogCQlpbnRlcm1lZGlh dGUtPmN4c3IgPSBmYWxzZTsKQEAgLTE1OTQsNyArMTU5NCw3IEBAIHN0YXRpYyB1MTYgdmx2X2Nv bXB1dGVfd21fbGV2ZWwoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUs CiAJc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRl LT5iYXNlLnBsYW5lKTsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19p OTE1KHBsYW5lLT5iYXNlLmRldik7CiAJY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFk anVzdGVkX21vZGUgPQotCQkmY3J0Y19zdGF0ZS0+YmFzZS5hZGp1c3RlZF9tb2RlOworCQkmY3J0 Y19zdGF0ZS0+aHcuYWRqdXN0ZWRfbW9kZTsKIAl1bnNpZ25lZCBpbnQgY2xvY2ssIGh0b3RhbCwg Y3BwLCB3aWR0aCwgd207CiAKIAlpZiAoZGV2X3ByaXYtPndtLnByaV9sYXRlbmN5W2xldmVsXSA9 PSAwKQpAQCAtMjAzMyw3ICsyMDMzLDcgQEAgc3RhdGljIGludCB2bHZfY29tcHV0ZV9pbnRlcm1l ZGlhdGVfd20oc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm5ld19jcnRjX3N0YXRlKQogCWNvbnN0 IHN0cnVjdCB2bHZfd21fc3RhdGUgKmFjdGl2ZSA9ICZvbGRfY3J0Y19zdGF0ZS0+d20udmx2Lm9w dGltYWw7CiAJaW50IGxldmVsOwogCi0JaWYgKCFuZXdfY3J0Y19zdGF0ZS0+YmFzZS5hY3RpdmUg fHwgZHJtX2F0b21pY19jcnRjX25lZWRzX21vZGVzZXQoJm5ld19jcnRjX3N0YXRlLT5iYXNlKSkg eworCWlmICghbmV3X2NydGNfc3RhdGUtPmh3LmFjdGl2ZSB8fCBkcm1fYXRvbWljX2NydGNfbmVl ZHNfbW9kZXNldCgmbmV3X2NydGNfc3RhdGUtPmJhc2UpKSB7CiAJCSppbnRlcm1lZGlhdGUgPSAq b3B0aW1hbDsKIAogCQlpbnRlcm1lZGlhdGUtPmN4c3IgPSBmYWxzZTsKQEAgLTIxODksNyArMjE4 OSw3IEBAIHN0YXRpYyB2b2lkIGk5NjVfdXBkYXRlX3dtKHN0cnVjdCBpbnRlbF9jcnRjICp1bnVz ZWRfY3J0YykKIAkJLyogc2VsZi1yZWZyZXNoIGhhcyBtdWNoIGhpZ2hlciBsYXRlbmN5ICovCiAJ CXN0YXRpYyBjb25zdCBpbnQgc3JfbGF0ZW5jeV9ucyA9IDEyMDAwOwogCQljb25zdCBzdHJ1Y3Qg ZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9Ci0JCQkmY3J0Yy0+Y29uZmlnLT5iYXNl LmFkanVzdGVkX21vZGU7CisJCQkmY3J0Yy0+Y29uZmlnLT5ody5hZGp1c3RlZF9tb2RlOwogCQlj b25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9CiAJCQljcnRjLT5iYXNlLnByaW1hcnkt PnN0YXRlLT5mYjsKIAkJaW50IGNsb2NrID0gYWRqdXN0ZWRfbW9kZS0+Y3J0Y19jbG9jazsKQEAg LTIyNzAsNyArMjI3MCw3IEBAIHN0YXRpYyB2b2lkIGk5eHhfdXBkYXRlX3dtKHN0cnVjdCBpbnRl bF9jcnRjICp1bnVzZWRfY3J0YykKIAljcnRjID0gaW50ZWxfZ2V0X2NydGNfZm9yX3BsYW5lKGRl dl9wcml2LCBQTEFORV9BKTsKIAlpZiAoaW50ZWxfY3J0Y19hY3RpdmUoY3J0YykpIHsKIAkJY29u c3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUgPQotCQkJJmNydGMtPmNv bmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlOworCQkJJmNydGMtPmNvbmZpZy0+aHcuYWRqdXN0ZWRf bW9kZTsKIAkJY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPQogCQkJY3J0Yy0+YmFz ZS5wcmltYXJ5LT5zdGF0ZS0+ZmI7CiAJCWludCBjcHA7CkBAIC0yMjk3LDcgKzIyOTcsNyBAQCBz dGF0aWMgdm9pZCBpOXh4X3VwZGF0ZV93bShzdHJ1Y3QgaW50ZWxfY3J0YyAqdW51c2VkX2NydGMp CiAJY3J0YyA9IGludGVsX2dldF9jcnRjX2Zvcl9wbGFuZShkZXZfcHJpdiwgUExBTkVfQik7CiAJ aWYgKGludGVsX2NydGNfYWN0aXZlKGNydGMpKSB7CiAJCWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxh eV9tb2RlICphZGp1c3RlZF9tb2RlID0KLQkJCSZjcnRjLT5jb25maWctPmJhc2UuYWRqdXN0ZWRf bW9kZTsKKwkJCSZjcnRjLT5jb25maWctPmh3LmFkanVzdGVkX21vZGU7CiAJCWNvbnN0IHN0cnVj dCBkcm1fZnJhbWVidWZmZXIgKmZiID0KIAkJCWNydGMtPmJhc2UucHJpbWFyeS0+c3RhdGUtPmZi OwogCQlpbnQgY3BwOwpAQCAtMjM0NSw3ICsyMzQ1LDcgQEAgc3RhdGljIHZvaWQgaTl4eF91cGRh dGVfd20oc3RydWN0IGludGVsX2NydGMgKnVudXNlZF9jcnRjKQogCQkvKiBzZWxmLXJlZnJlc2gg aGFzIG11Y2ggaGlnaGVyIGxhdGVuY3kgKi8KIAkJc3RhdGljIGNvbnN0IGludCBzcl9sYXRlbmN5 X25zID0gNjAwMDsKIAkJY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21v ZGUgPQotCQkJJmVuYWJsZWQtPmNvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlOworCQkJJmVuYWJs ZWQtPmNvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZTsKIAkJY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1 ZmZlciAqZmIgPQogCQkJZW5hYmxlZC0+YmFzZS5wcmltYXJ5LT5zdGF0ZS0+ZmI7CiAJCWludCBj bG9jayA9IGFkanVzdGVkX21vZGUtPmNydGNfY2xvY2s7CkBAIC0yNDAzLDcgKzI0MDMsNyBAQCBz dGF0aWMgdm9pZCBpODQ1X3VwZGF0ZV93bShzdHJ1Y3QgaW50ZWxfY3J0YyAqdW51c2VkX2NydGMp CiAJaWYgKGNydGMgPT0gTlVMTCkKIAkJcmV0dXJuOwogCi0JYWRqdXN0ZWRfbW9kZSA9ICZjcnRj LT5jb25maWctPmJhc2UuYWRqdXN0ZWRfbW9kZTsKKwlhZGp1c3RlZF9tb2RlID0gJmNydGMtPmNv bmZpZy0+aHcuYWRqdXN0ZWRfbW9kZTsKIAlwbGFuZWFfd20gPSBpbnRlbF9jYWxjdWxhdGVfd20o YWRqdXN0ZWRfbW9kZS0+Y3J0Y19jbG9jaywKIAkJCQkgICAgICAgJmk4NDVfd21faW5mbywKIAkJ CQkgICAgICAgZGV2X3ByaXYtPmRpc3BsYXkuZ2V0X2ZpZm9fc2l6ZShkZXZfcHJpdiwgUExBTkVf QSksCkBAIC0yNDkzLDcgKzI0OTMsNyBAQCBzdGF0aWMgdTMyIGlsa19jb21wdXRlX3ByaV93bShj b25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKIAkJcmV0dXJuIG1ldGhv ZDE7CiAKIAltZXRob2QyID0gaWxrX3dtX21ldGhvZDIoY3J0Y19zdGF0ZS0+cGl4ZWxfcmF0ZSwK LQkJCQkgY3J0Y19zdGF0ZS0+YmFzZS5hZGp1c3RlZF9tb2RlLmNydGNfaHRvdGFsLAorCQkJCSBj cnRjX3N0YXRlLT5ody5hZGp1c3RlZF9tb2RlLmNydGNfaHRvdGFsLAogCQkJCSBkcm1fcmVjdF93 aWR0aCgmcGxhbmVfc3RhdGUtPmJhc2UuZHN0KSwKIAkJCQkgY3BwLCBtZW1fdmFsdWUpOwogCkBA IC0yNTIxLDcgKzI1MjEsNyBAQCBzdGF0aWMgdTMyIGlsa19jb21wdXRlX3Nwcl93bShjb25zdCBz dHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKIAogCW1ldGhvZDEgPSBpbGtfd21f bWV0aG9kMShjcnRjX3N0YXRlLT5waXhlbF9yYXRlLCBjcHAsIG1lbV92YWx1ZSk7CiAJbWV0aG9k MiA9IGlsa193bV9tZXRob2QyKGNydGNfc3RhdGUtPnBpeGVsX3JhdGUsCi0JCQkJIGNydGNfc3Rh dGUtPmJhc2UuYWRqdXN0ZWRfbW9kZS5jcnRjX2h0b3RhbCwKKwkJCQkgY3J0Y19zdGF0ZS0+aHcu YWRqdXN0ZWRfbW9kZS5jcnRjX2h0b3RhbCwKIAkJCQkgZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0 YXRlLT5iYXNlLmRzdCksCiAJCQkJIGNwcCwgbWVtX3ZhbHVlKTsKIAlyZXR1cm4gbWluKG1ldGhv ZDEsIG1ldGhvZDIpOwpAQCAtMjU0Niw3ICsyNTQ2LDcgQEAgc3RhdGljIHUzMiBpbGtfY29tcHV0 ZV9jdXJfd20oY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCiAJY3Bw ID0gcGxhbmVfc3RhdGUtPmJhc2UuZmItPmZvcm1hdC0+Y3BwWzBdOwogCiAJcmV0dXJuIGlsa193 bV9tZXRob2QyKGNydGNfc3RhdGUtPnBpeGVsX3JhdGUsCi0JCQkgICAgICBjcnRjX3N0YXRlLT5i YXNlLmFkanVzdGVkX21vZGUuY3J0Y19odG90YWwsCisJCQkgICAgICBjcnRjX3N0YXRlLT5ody5h ZGp1c3RlZF9tb2RlLmNydGNfaHRvdGFsLAogCQkJICAgICAgZHJtX3JlY3Rfd2lkdGgoJnBsYW5l X3N0YXRlLT5iYXNlLmRzdCksCiAJCQkgICAgICBjcHAsIG1lbV92YWx1ZSk7CiB9CkBAIC0yNzcw LDEwICsyNzcwLDEwIEBAIGhzd19jb21wdXRlX2xpbmV0aW1lX3dtKGNvbnN0IHN0cnVjdCBpbnRl bF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQogCWNvbnN0IHN0cnVjdCBpbnRlbF9hdG9taWNfc3Rh dGUgKmludGVsX3N0YXRlID0KIAkJdG9faW50ZWxfYXRvbWljX3N0YXRlKGNydGNfc3RhdGUtPmJh c2Uuc3RhdGUpOwogCWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2Rl ID0KLQkJJmNydGNfc3RhdGUtPmJhc2UuYWRqdXN0ZWRfbW9kZTsKKwkJJmNydGNfc3RhdGUtPmh3 LmFkanVzdGVkX21vZGU7CiAJdTMyIGxpbmV0aW1lLCBpcHNfbGluZXRpbWU7CiAKLQlpZiAoIWNy dGNfc3RhdGUtPmJhc2UuYWN0aXZlKQorCWlmICghY3J0Y19zdGF0ZS0+aHcuYWN0aXZlKQogCQly ZXR1cm4gMDsKIAlpZiAoV0FSTl9PTihhZGp1c3RlZF9tb2RlLT5jcnRjX2Nsb2NrID09IDApKQog CQlyZXR1cm4gMDsKQEAgLTMxMDUsNyArMzEwNSw3IEBAIHN0YXRpYyBpbnQgaWxrX2NvbXB1dGVf cGlwZV93bShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKIAkJCWN1cnN0YXRl ID0gcGxhbmVfc3RhdGU7CiAJfQogCi0JcGlwZV93bS0+cGlwZV9lbmFibGVkID0gY3J0Y19zdGF0 ZS0+YmFzZS5hY3RpdmU7CisJcGlwZV93bS0+cGlwZV9lbmFibGVkID0gY3J0Y19zdGF0ZS0+aHcu YWN0aXZlOwogCWlmIChzcHJzdGF0ZSkgewogCQlwaXBlX3dtLT5zcHJpdGVzX2VuYWJsZWQgPSBz cHJzdGF0ZS0+YmFzZS52aXNpYmxlOwogCQlwaXBlX3dtLT5zcHJpdGVzX3NjYWxlZCA9IHNwcnN0 YXRlLT5iYXNlLnZpc2libGUgJiYKQEAgLTMxNzgsNyArMzE3OCw3IEBAIHN0YXRpYyBpbnQgaWxr X2NvbXB1dGVfaW50ZXJtZWRpYXRlX3dtKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpuZXdzdGF0 ZSkKIAkgKiBhbmQgYWZ0ZXIgdGhlIHZibGFuay4KIAkgKi8KIAkqYSA9IG5ld3N0YXRlLT53bS5p bGsub3B0aW1hbDsKLQlpZiAoIW5ld3N0YXRlLT5iYXNlLmFjdGl2ZSB8fCBkcm1fYXRvbWljX2Ny dGNfbmVlZHNfbW9kZXNldCgmbmV3c3RhdGUtPmJhc2UpIHx8CisJaWYgKCFuZXdzdGF0ZS0+aHcu YWN0aXZlIHx8IGRybV9hdG9taWNfY3J0Y19uZWVkc19tb2Rlc2V0KCZuZXdzdGF0ZS0+YmFzZSkg fHwKIAkgICAgaW50ZWxfc3RhdGUtPnNraXBfaW50ZXJtZWRpYXRlX3dtKQogCQlyZXR1cm4gMDsK IApAQCAtMzc4MCw3ICszNzgwLDcgQEAgYm9vbCBpbnRlbF9jYW5fZW5hYmxlX3NhZ3Yoc3RydWN0 IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUpCiAJY3J0YyA9IGludGVsX2dldF9jcnRjX2Zvcl9w aXBlKGRldl9wcml2LCBwaXBlKTsKIAljcnRjX3N0YXRlID0gdG9faW50ZWxfY3J0Y19zdGF0ZShj cnRjLT5iYXNlLnN0YXRlKTsKIAotCWlmIChjcnRjX3N0YXRlLT5iYXNlLmFkanVzdGVkX21vZGUu ZmxhZ3MgJiBEUk1fTU9ERV9GTEFHX0lOVEVSTEFDRSkKKwlpZiAoY3J0Y19zdGF0ZS0+aHcuYWRq dXN0ZWRfbW9kZS5mbGFncyAmIERSTV9NT0RFX0ZMQUdfSU5URVJMQUNFKQogCQlyZXR1cm4gZmFs c2U7CiAKIAlmb3JfZWFjaF9pbnRlbF9wbGFuZV9vbl9jcnRjKGRldiwgY3J0YywgcGxhbmUpIHsK QEAgLTM4MzAsNyArMzgzMCw3IEBAIHN0YXRpYyB1MTYgaW50ZWxfZ2V0X2RkYl9zaXplKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8 IDExKQogCQlyZXR1cm4gZGRiX3NpemUgLSA0OyAvKiA0IGJsb2NrcyBmb3IgYnlwYXNzIHBhdGgg YWxsb2NhdGlvbiAqLwogCi0JYWRqdXN0ZWRfbW9kZSA9ICZjcnRjX3N0YXRlLT5iYXNlLmFkanVz dGVkX21vZGU7CisJYWRqdXN0ZWRfbW9kZSA9ICZjcnRjX3N0YXRlLT5ody5hZGp1c3RlZF9tb2Rl OwogCXRvdGFsX2RhdGFfYncgPSB0b3RhbF9kYXRhX3JhdGUgKiBkcm1fbW9kZV92cmVmcmVzaChh ZGp1c3RlZF9tb2RlKTsKIAogCS8qCkBAIC0zODY4LDcgKzM4NjgsNyBAQCBza2xfZGRiX2dldF9w aXBlX2FsbG9jYXRpb25fbGltaXRzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwK IAl1MTYgZGRiX3NpemU7CiAJdTMyIGk7CiAKLQlpZiAoV0FSTl9PTighc3RhdGUpIHx8ICFjcnRj X3N0YXRlLT5iYXNlLmFjdGl2ZSkgeworCWlmIChXQVJOX09OKCFzdGF0ZSkgfHwgIWNydGNfc3Rh dGUtPmh3LmFjdGl2ZSkgewogCQlhbGxvYy0+c3RhcnQgPSAwOwogCQlhbGxvYy0+ZW5kID0gMDsK IAkJKm51bV9hY3RpdmUgPSBod2VpZ2h0OChkZXZfcHJpdi0+YWN0aXZlX3BpcGVzKTsKQEAgLTM5 MDcsMTEgKzM5MDcsMTEgQEAgc2tsX2RkYl9nZXRfcGlwZV9hbGxvY2F0aW9uX2xpbWl0cyhzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJICovCiAJZm9yX2VhY2hfbmV3X2ludGVs X2NydGNfaW5fc3RhdGUoaW50ZWxfc3RhdGUsIGNydGMsIGNydGNfc3RhdGUsIGkpIHsKIAkJY29u c3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUgPQotCQkJJmNydGNfc3Rh dGUtPmJhc2UuYWRqdXN0ZWRfbW9kZTsKKwkJCSZjcnRjX3N0YXRlLT5ody5hZGp1c3RlZF9tb2Rl OwogCQllbnVtIHBpcGUgcGlwZSA9IGNydGMtPnBpcGU7CiAJCWludCBoZGlzcGxheSwgdmRpc3Bs YXk7CiAKLQkJaWYgKCFjcnRjX3N0YXRlLT5iYXNlLmVuYWJsZSkKKwkJaWYgKCFjcnRjX3N0YXRl LT5ody5lbmFibGUpCiAJCQljb250aW51ZTsKIAogCQlkcm1fbW9kZV9nZXRfaHZfdGltaW5nKGFk anVzdGVkX21vZGUsICZoZGlzcGxheSwgJnZkaXNwbGF5KTsKQEAgLTQxMDAsNyArNDEwMCw3IEBA IHNrbF9waXBlX2Rvd25zY2FsZV9hbW91bnQoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUg KmNydGNfc3RhdGUpCiB7CiAJdWludF9maXhlZF8xNl8xNl90IHBpcGVfZG93bnNjYWxlID0gdTMy X3RvX2ZpeGVkMTYoMSk7CiAKLQlpZiAoIWNydGNfc3RhdGUtPmJhc2UuZW5hYmxlKQorCWlmICgh Y3J0Y19zdGF0ZS0+aHcuZW5hYmxlKQogCQlyZXR1cm4gcGlwZV9kb3duc2NhbGU7CiAKIAlpZiAo Y3J0Y19zdGF0ZS0+cGNoX3BmaXQuZW5hYmxlZCkgewpAQCAtNDE0MCw3ICs0MTQwLDcgQEAgaW50 IHNrbF9jaGVja19waXBlX21heF9waXhlbF9yYXRlKHN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9j cnRjLAogCXVpbnRfZml4ZWRfMTZfMTZfdCBwaXBlX2Rvd25zY2FsZTsKIAl1aW50X2ZpeGVkXzE2 XzE2X3QgbWF4X2Rvd25zY2FsZSA9IHUzMl90b19maXhlZDE2KDEpOwogCi0JaWYgKCFjcnRjX3N0 YXRlLT5iYXNlLmVuYWJsZSkKKwlpZiAoIWNydGNfc3RhdGUtPmh3LmVuYWJsZSkKIAkJcmV0dXJu IDA7CiAKIAlpbnRlbF9hdG9taWNfY3J0Y19zdGF0ZV9mb3JfZWFjaF9wbGFuZV9zdGF0ZShwbGFu ZSwgcGxhbmVfc3RhdGUsIGNydGNfc3RhdGUpIHsKQEAgLTQxNjYsNyArNDE2Niw3IEBAIGludCBz a2xfY2hlY2tfcGlwZV9tYXhfcGl4ZWxfcmF0ZShzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0 YywKIAogCXBpcGVfZG93bnNjYWxlID0gbXVsX2ZpeGVkMTYocGlwZV9kb3duc2NhbGUsIG1heF9k b3duc2NhbGUpOwogCi0JY3J0Y19jbG9jayA9IGNydGNfc3RhdGUtPmJhc2UuYWRqdXN0ZWRfbW9k ZS5jcnRjX2Nsb2NrOworCWNydGNfY2xvY2sgPSBjcnRjX3N0YXRlLT5ody5hZGp1c3RlZF9tb2Rl LmNydGNfY2xvY2s7CiAJZG90Y2xrID0gdG9faW50ZWxfYXRvbWljX3N0YXRlKHN0YXRlKS0+Y2Rj bGsubG9naWNhbC5jZGNsazsKIAogCWlmIChJU19HRU1JTklMQUtFKGRldl9wcml2KSB8fCBJTlRF TF9HRU4oZGV2X3ByaXYpID49IDEwKQpAQCAtNDMzNSw3ICs0MzM1LDcgQEAgc2tsX2FsbG9jYXRl X3BpcGVfZGRiKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAogCWlmIChXQVJO X09OKCFzdGF0ZSkpCiAJCXJldHVybiAwOwogCi0JaWYgKCFjcnRjX3N0YXRlLT5iYXNlLmFjdGl2 ZSkgeworCWlmICghY3J0Y19zdGF0ZS0+aHcuYWN0aXZlKSB7CiAJCWFsbG9jLT5zdGFydCA9IGFs bG9jLT5lbmQgPSAwOwogCQlyZXR1cm4gMDsKIAl9CkBAIC00NTc3LDcgKzQ1NzcsNyBAQCBpbnRl bF9nZXRfbGluZXRpbWVfdXMoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3Rh dGUpCiAJdTMyIGNydGNfaHRvdGFsOwogCXVpbnRfZml4ZWRfMTZfMTZfdCBsaW5ldGltZV91czsK IAotCWlmICghY3J0Y19zdGF0ZS0+YmFzZS5hY3RpdmUpCisJaWYgKCFjcnRjX3N0YXRlLT5ody5h Y3RpdmUpCiAJCXJldHVybiB1MzJfdG9fZml4ZWQxNigwKTsKIAogCXBpeGVsX3JhdGUgPSBjcnRj X3N0YXRlLT5waXhlbF9yYXRlOwpAQCAtNDU4NSw3ICs0NTg1LDcgQEAgaW50ZWxfZ2V0X2xpbmV0 aW1lX3VzKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQogCWlmIChX QVJOX09OKHBpeGVsX3JhdGUgPT0gMCkpCiAJCXJldHVybiB1MzJfdG9fZml4ZWQxNigwKTsKIAot CWNydGNfaHRvdGFsID0gY3J0Y19zdGF0ZS0+YmFzZS5hZGp1c3RlZF9tb2RlLmNydGNfaHRvdGFs OworCWNydGNfaHRvdGFsID0gY3J0Y19zdGF0ZS0+aHcuYWRqdXN0ZWRfbW9kZS5jcnRjX2h0b3Rh bDsKIAlsaW5ldGltZV91cyA9IGRpdl9maXhlZDE2KGNydGNfaHRvdGFsICogMTAwMCwgcGl4ZWxf cmF0ZSk7CiAKIAlyZXR1cm4gbGluZXRpbWVfdXM7CkBAIC00NzY3LDE0ICs0NzY3LDE0IEBAIHN0 YXRpYyB2b2lkIHNrbF9jb21wdXRlX3BsYW5lX3dtKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0 YXRlICpjcnRjX3N0YXRlLAogCW1ldGhvZDEgPSBza2xfd21fbWV0aG9kMShkZXZfcHJpdiwgd3At PnBsYW5lX3BpeGVsX3JhdGUsCiAJCQkJIHdwLT5jcHAsIGxhdGVuY3ksIHdwLT5kYnVmX2Jsb2Nr X3NpemUpOwogCW1ldGhvZDIgPSBza2xfd21fbWV0aG9kMih3cC0+cGxhbmVfcGl4ZWxfcmF0ZSwK LQkJCQkgY3J0Y19zdGF0ZS0+YmFzZS5hZGp1c3RlZF9tb2RlLmNydGNfaHRvdGFsLAorCQkJCSBj cnRjX3N0YXRlLT5ody5hZGp1c3RlZF9tb2RlLmNydGNfaHRvdGFsLAogCQkJCSBsYXRlbmN5LAog CQkJCSB3cC0+cGxhbmVfYmxvY2tzX3Blcl9saW5lKTsKIAogCWlmICh3cC0+eV90aWxlZCkgewog CQlzZWxlY3RlZF9yZXN1bHQgPSBtYXhfZml4ZWQxNihtZXRob2QyLCB3cC0+eV90aWxlX21pbmlt dW0pOwogCX0gZWxzZSB7Ci0JCWlmICgod3AtPmNwcCAqIGNydGNfc3RhdGUtPmJhc2UuYWRqdXN0 ZWRfbW9kZS5jcnRjX2h0b3RhbCAvCisJCWlmICgod3AtPmNwcCAqIGNydGNfc3RhdGUtPmh3LmFk anVzdGVkX21vZGUuY3J0Y19odG90YWwgLwogCQkgICAgIHdwLT5kYnVmX2Jsb2NrX3NpemUgPCAx KSAmJgogCQkgICAgICh3cC0+cGxhbmVfYnl0ZXNfcGVyX2xpbmUgLyB3cC0+ZGJ1Zl9ibG9ja19z aXplIDwgMSkpIHsKIAkJCXNlbGVjdGVkX3Jlc3VsdCA9IG1ldGhvZDI7Ci0tIAoyLjIzLjAKCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBt YWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3Rz LmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeA== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.7 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 891B8CA9EBD for ; Thu, 24 Oct 2019 12:48:58 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 65DD721906 for ; Thu, 24 Oct 2019 12:48:58 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 65DD721906 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linux.intel.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=intel-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 9C6FC6E3CB; Thu, 24 Oct 2019 12:48:57 +0000 (UTC) Received: from mblankhorst.nl (mblankhorst.nl [141.105.120.124]) by gabe.freedesktop.org (Postfix) with ESMTPS id 8860C6E3C6 for ; Thu, 24 Oct 2019 12:48:11 +0000 (UTC) From: Maarten Lankhorst To: intel-gfx@lists.freedesktop.org Date: Thu, 24 Oct 2019 14:47:57 +0200 Message-Id: <20191024124805.26840-6-maarten.lankhorst@linux.intel.com> X-Mailer: git-send-email 2.23.0 In-Reply-To: <20191024124805.26840-1-maarten.lankhorst@linux.intel.com> References: <20191024124805.26840-1-maarten.lankhorst@linux.intel.com> MIME-Version: 1.0 Subject: [Intel-gfx] [PATCH 06/14] drm/i915: Perform automated conversions for crtc uapi/hw split, base -> hw. X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" Message-ID: <20191024124757.6iqHBxJBxRyOMaZgaZDh4fYJFfwRtU_ILFrjNR9DJfg@z> U3BsaXQgdXAgY3J0Y19zdGF0ZS0+YmFzZSB0byBodyB3aGVyZSBhcHByb3ByaWF0ZS4gVGhpcyBp cyBkb25lIHVzaW5nIHRoZSBmb2xsb3dpbmcgcGF0Y2g6CgpAQApzdHJ1Y3QgaW50ZWxfY3J0Y19z dGF0ZSAqVDsKaWRlbnRpZmllciB4ID1+ICJeKGFjdGl2ZXxlbmFibGV8ZGVnYW1tYV9sdXR8Z2Ft bWFfbHV0fGN0bXxtb2RlfGFkanVzdGVkX21vZGUpJCI7CkBACi1ULT5iYXNlLngKK1QtPmh3LngK CkBACnN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqVDsKaWRlbnRpZmllciB4ID1+ICJeKGFjdGl2ZXxl bmFibGV8ZGVnYW1tYV9sdXR8Z2FtbWFfbHV0fGN0bXxtb2RlfGFkanVzdGVkX21vZGUpJCI7CkBA Ci10b19pbnRlbF9jcnRjX3N0YXRlKFQpLT5iYXNlLngKK3RvX2ludGVsX2NydGNfc3RhdGUoVCkt Pmh3LngKClNpZ25lZC1vZmYtYnk6IE1hYXJ0ZW4gTGFua2hvcnN0IDxtYWFydGVuLmxhbmtob3Jz dEBsaW51eC5pbnRlbC5jb20+ClJldmlld2VkLWJ5OiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5 cmphbGFAbGludXguaW50ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkv aWNsX2RzaS5jICAgICAgICB8ICAxMiArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9p bnRlbF9hdWRpby5jICAgIHwgICA0ICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2lu dGVsX2NkY2xrLmMgICAgfCAgIDggKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50 ZWxfY29sb3IuYyAgICB8IDEwOCArKysrLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxh eS9pbnRlbF9jcnQuYyAgICAgIHwgIDE4ICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5 L2ludGVsX2RkaS5jICAgICAgfCAgMTggKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkv aW50ZWxfZGlzcGxheS5jICB8IDI2MiArKysrKysrKystLS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHAuYyAgICAgICB8ICAyMiArLQogZHJpdmVycy9ncHUvZHJt L2k5MTUvZGlzcGxheS9pbnRlbF9kcF9tc3QuYyAgIHwgICA2ICstCiBkcml2ZXJzL2dwdS9kcm0v aTkxNS9kaXNwbGF5L2ludGVsX2R2by5jICAgICAgfCAgMTIgKy0KIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2Rpc3BsYXkvaW50ZWxfZmJjLmMgICAgICB8ICAgMiArLQogZHJpdmVycy9ncHUvZHJtL2k5 MTUvZGlzcGxheS9pbnRlbF9oZG1pLmMgICAgIHwgIDIwICstCiBkcml2ZXJzL2dwdS9kcm0vaTkx NS9kaXNwbGF5L2ludGVsX2xzcGNvbi5jICAgfCAgIDQgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2Rpc3BsYXkvaW50ZWxfbHZkcy5jICAgICB8ICAgOCArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUv ZGlzcGxheS9pbnRlbF9wYW5lbC5jICAgIHwgICA4ICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9k aXNwbGF5L2ludGVsX3BpcGVfY3JjLmMgfCAgIDIgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rp c3BsYXkvaW50ZWxfcHNyLmMgICAgICB8ICAxMiArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlz cGxheS9pbnRlbF9zZHZvLmMgICAgIHwgIDE2ICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNw bGF5L2ludGVsX3Nwcml0ZS5jICAgfCAgIDggKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3Bs YXkvaW50ZWxfdHYuYyAgICAgICB8ICAgNCArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxh eS9pbnRlbF92ZHNjLmMgICAgIHwgICA0ICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5 L3Zsdl9kc2kuYyAgICAgICAgfCAgMTAgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVi dWdmcy5jICAgICAgICAgICB8ICAgOCArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0u YyAgICAgICAgICAgICAgIHwgIDYyICsrLS0tCiAyNCBmaWxlcyBjaGFuZ2VkLCAzMjEgaW5zZXJ0 aW9ucygrKSwgMzE3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2Rpc3BsYXkvaWNsX2RzaS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pY2xf ZHNpLmMKaW5kZXggNmUzOThjMzNhNTI0Li40ZWM0OTNlNDc1NWIgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaWNsX2RzaS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2Rpc3BsYXkvaWNsX2RzaS5jCkBAIC0yNzYsNyArMjc2LDcgQEAgc3RhdGljIHZvaWQgY29u ZmlndXJlX2R1YWxfbGlua19tb2RlKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAogCiAJ aWYgKGludGVsX2RzaS0+ZHVhbF9saW5rID09IERTSV9EVUFMX0xJTktfRlJPTlRfQkFDSykgewog CQljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9Ci0JCQkJCSZw aXBlX2NvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlOworCQkJCQkmcGlwZV9jb25maWctPmh3LmFk anVzdGVkX21vZGU7CiAJCXUzMiBkc3NfY3RsMjsKIAkJdTE2IGhhY3RpdmUgPSBhZGp1c3RlZF9t b2RlLT5jcnRjX2hkaXNwbGF5OwogCQl1MTYgZGxfYnVmZmVyX2RlcHRoOwpAQCAtNzY4LDcgKzc2 OCw3IEBAIGdlbjExX2RzaV9zZXRfdHJhbnNjb2Rlcl90aW1pbmdzKHN0cnVjdCBpbnRlbF9lbmNv ZGVyICplbmNvZGVyLAogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5 MTUoZW5jb2Rlci0+YmFzZS5kZXYpOwogCXN0cnVjdCBpbnRlbF9kc2kgKmludGVsX2RzaSA9IGVu Y190b19pbnRlbF9kc2koJmVuY29kZXItPmJhc2UpOwogCWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxh eV9tb2RlICphZGp1c3RlZF9tb2RlID0KLQkJCQkJJnBpcGVfY29uZmlnLT5iYXNlLmFkanVzdGVk X21vZGU7CisJCQkJCSZwaXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZTsKIAllbnVtIHBvcnQg cG9ydDsKIAllbnVtIHRyYW5zY29kZXIgZHNpX3RyYW5zOwogCS8qIGhvcml6b250YWwgdGltaW5n cyAqLwpAQCAtMTIxNiw3ICsxMjE2LDcgQEAgc3RhdGljIHZvaWQgZ2VuMTFfZHNpX2dldF90aW1p bmdzKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAogewogCXN0cnVjdCBpbnRlbF9kc2kg KmludGVsX2RzaSA9IGVuY190b19pbnRlbF9kc2koJmVuY29kZXItPmJhc2UpOwogCXN0cnVjdCBk cm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2RlID0KLQkJCQkJJnBpcGVfY29uZmlnLT5iYXNl LmFkanVzdGVkX21vZGU7CisJCQkJCSZwaXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZTsKIAog CWlmIChpbnRlbF9kc2ktPmR1YWxfbGluaykgewogCQlhZGp1c3RlZF9tb2RlLT5jcnRjX2hkaXNw bGF5ICo9IDI7CkBAIC0xMjQ5LDkgKzEyNDksOSBAQCBzdGF0aWMgdm9pZCBnZW4xMV9kc2lfZ2V0 X2NvbmZpZyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKIAlwaXBlX2NvbmZpZy0+cG9y dF9jbG9jayA9CiAJCWNubF9jYWxjX3dycGxsX2xpbmsoZGV2X3ByaXYsICZwaXBlX2NvbmZpZy0+ ZHBsbF9od19zdGF0ZSk7CiAKLQlwaXBlX2NvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlLmNydGNf Y2xvY2sgPSBpbnRlbF9kc2ktPnBjbGs7CisJcGlwZV9jb25maWctPmh3LmFkanVzdGVkX21vZGUu Y3J0Y19jbG9jayA9IGludGVsX2RzaS0+cGNsazsKIAlpZiAoaW50ZWxfZHNpLT5kdWFsX2xpbmsp Ci0JCXBpcGVfY29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGUuY3J0Y19jbG9jayAqPSAyOworCQlw aXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZS5jcnRjX2Nsb2NrICo9IDI7CiAKIAlnZW4xMV9k c2lfZ2V0X3RpbWluZ3MoZW5jb2RlciwgcGlwZV9jb25maWcpOwogCXBpcGVfY29uZmlnLT5vdXRw dXRfdHlwZXMgfD0gQklUKElOVEVMX09VVFBVVF9EU0kpOwpAQCAtMTI2OSw3ICsxMjY5LDcgQEAg c3RhdGljIGludCBnZW4xMV9kc2lfY29tcHV0ZV9jb25maWcoc3RydWN0IGludGVsX2VuY29kZXIg KmVuY29kZXIsCiAJY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmZpeGVkX21vZGUgPQog CQkJCQlpbnRlbF9jb25uZWN0b3ItPnBhbmVsLmZpeGVkX21vZGU7CiAJc3RydWN0IGRybV9kaXNw bGF5X21vZGUgKmFkanVzdGVkX21vZGUgPQotCQkJCQkmcGlwZV9jb25maWctPmJhc2UuYWRqdXN0 ZWRfbW9kZTsKKwkJCQkJJnBpcGVfY29uZmlnLT5ody5hZGp1c3RlZF9tb2RlOwogCiAJcGlwZV9j b25maWctPm91dHB1dF9mb3JtYXQgPSBJTlRFTF9PVVRQVVRfRk9STUFUX1JHQjsKIAlpbnRlbF9m aXhlZF9wYW5lbF9tb2RlKGZpeGVkX21vZGUsIGFkanVzdGVkX21vZGUpOwpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9hdWRpby5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9hdWRpby5jCmluZGV4IGVkMTg1MTFiZWZhMy4uNmE1OGU4 YWQ4NmY4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2F1 ZGlvLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9hdWRpby5jCkBA IC0yMzMsNyArMjMzLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBoZG1pX2F1ZF9uY3RzIGhkbWlf YXVkX25jdHNfMzZicHBbXSA9IHsKIHN0YXRpYyB1MzIgYXVkaW9fY29uZmlnX2hkbWlfcGl4ZWxf Y2xvY2soY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCiB7CiAJY29u c3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUgPQotCQkmY3J0Y19zdGF0 ZS0+YmFzZS5hZGp1c3RlZF9tb2RlOworCQkmY3J0Y19zdGF0ZS0+aHcuYWRqdXN0ZWRfbW9kZTsK IAlpbnQgaTsKIAogCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGhkbWlfYXVkaW9fY2xvY2sp OyBpKyspIHsKQEAgLTY5NCw3ICs2OTQsNyBAQCB2b2lkIGludGVsX2F1ZGlvX2NvZGVjX2VuYWJs ZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0 YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+YmFzZS5jcnRjKTsKIAlzdHJ1Y3QgZHJtX2Nv bm5lY3RvciAqY29ubmVjdG9yID0gY29ubl9zdGF0ZS0+Y29ubmVjdG9yOwogCWNvbnN0IHN0cnVj dCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2RlID0KLQkJJmNydGNfc3RhdGUtPmJhc2Uu YWRqdXN0ZWRfbW9kZTsKKwkJJmNydGNfc3RhdGUtPmh3LmFkanVzdGVkX21vZGU7CiAJZW51bSBw b3J0IHBvcnQgPSBlbmNvZGVyLT5wb3J0OwogCWVudW0gcGlwZSBwaXBlID0gY3J0Yy0+cGlwZTsK IApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9jZGNsay5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9jZGNsay5jCmluZGV4IGFiMWY3 Y2VjNTBjNi4uZmQxZWQwZmI4NzQ4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9k aXNwbGF5L2ludGVsX2NkY2xrLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9p bnRlbF9jZGNsay5jCkBAIC0xOTI0LDcgKzE5MjQsNyBAQCBpbnQgaW50ZWxfY3J0Y19jb21wdXRl X21pbl9jZGNsayhjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKIAkJ dG9faTkxNShjcnRjX3N0YXRlLT5iYXNlLmNydGMtPmRldik7CiAJaW50IG1pbl9jZGNsazsKIAot CWlmICghY3J0Y19zdGF0ZS0+YmFzZS5lbmFibGUpCisJaWYgKCFjcnRjX3N0YXRlLT5ody5lbmFi bGUpCiAJCXJldHVybiAwOwogCiAJbWluX2NkY2xrID0gaW50ZWxfcGl4ZWxfcmF0ZV90b19jZGNs ayhjcnRjX3N0YXRlKTsKQEAgLTIwNDcsNyArMjA0Nyw3IEBAIHN0YXRpYyB1OCBieHRfY29tcHV0 ZV9taW5fdm9sdGFnZV9sZXZlbChzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSkKIAkg ICAgICAgc2l6ZW9mKHN0YXRlLT5taW5fdm9sdGFnZV9sZXZlbCkpOwogCiAJZm9yX2VhY2hfbmV3 X2ludGVsX2NydGNfaW5fc3RhdGUoc3RhdGUsIGNydGMsIGNydGNfc3RhdGUsIGkpIHsKLQkJaWYg KGNydGNfc3RhdGUtPmJhc2UuZW5hYmxlKQorCQlpZiAoY3J0Y19zdGF0ZS0+aHcuZW5hYmxlKQog CQkJc3RhdGUtPm1pbl92b2x0YWdlX2xldmVsW2ldID0KIAkJCQljcnRjX3N0YXRlLT5taW5fdm9s dGFnZV9sZXZlbDsKIAkJZWxzZQpAQCAtMjEzMyw3ICsyMTMzLDcgQEAgc3RhdGljIGludCBza2xf ZHBsbDBfdmNvKHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlKQogCQl2Y28gPSBkZXZf cHJpdi0+c2tsX3ByZWZlcnJlZF92Y29fZnJlcTsKIAogCWZvcl9lYWNoX25ld19pbnRlbF9jcnRj X2luX3N0YXRlKHN0YXRlLCBjcnRjLCBjcnRjX3N0YXRlLCBpKSB7Ci0JCWlmICghY3J0Y19zdGF0 ZS0+YmFzZS5lbmFibGUpCisJCWlmICghY3J0Y19zdGF0ZS0+aHcuZW5hYmxlKQogCQkJY29udGlu dWU7CiAKIAkJaWYgKCFpbnRlbF9jcnRjX2hhc190eXBlKGNydGNfc3RhdGUsIElOVEVMX09VVFBV VF9FRFApKQpAQCAtMjI2MCw3ICsyMjYwLDcgQEAgc3RhdGljIGludCBpbnRlbF9tb2Rlc2V0X2Fs bF9waXBlcyhzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSkKIAkJaWYgKElTX0VSUihj cnRjX3N0YXRlKSkKIAkJCXJldHVybiBQVFJfRVJSKGNydGNfc3RhdGUpOwogCi0JCWlmICghY3J0 Y19zdGF0ZS0+YmFzZS5hY3RpdmUgfHwKKwkJaWYgKCFjcnRjX3N0YXRlLT5ody5hY3RpdmUgfHwK IAkJICAgIGRybV9hdG9taWNfY3J0Y19uZWVkc19tb2Rlc2V0KCZjcnRjX3N0YXRlLT5iYXNlKSkK IAkJCWNvbnRpbnVlOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5 L2ludGVsX2NvbG9yLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2NvbG9y LmMKaW5kZXggOTU1ODZhNTg4MjM0Li42NWUxYjE4YmQ3ZTMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfY29sb3IuYworKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9kaXNwbGF5L2ludGVsX2NvbG9yLmMKQEAgLTExNywxMCArMTE3LDEwIEBAIHN0YXRpYyBi b29sIGx1dF9pc19sZWdhY3koY29uc3Qgc3RydWN0IGRybV9wcm9wZXJ0eV9ibG9iICpsdXQpCiAK IHN0YXRpYyBib29sIGNydGNfc3RhdGVfaXNfbGVnYWN5X2dhbW1hKGNvbnN0IHN0cnVjdCBpbnRl bF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQogewotCXJldHVybiAhY3J0Y19zdGF0ZS0+YmFzZS5k ZWdhbW1hX2x1dCAmJgotCQkhY3J0Y19zdGF0ZS0+YmFzZS5jdG0gJiYKLQkJY3J0Y19zdGF0ZS0+ YmFzZS5nYW1tYV9sdXQgJiYKLQkJbHV0X2lzX2xlZ2FjeShjcnRjX3N0YXRlLT5iYXNlLmdhbW1h X2x1dCk7CisJcmV0dXJuICFjcnRjX3N0YXRlLT5ody5kZWdhbW1hX2x1dCAmJgorCQkhY3J0Y19z dGF0ZS0+aHcuY3RtICYmCisJCWNydGNfc3RhdGUtPmh3LmdhbW1hX2x1dCAmJgorCQlsdXRfaXNf bGVnYWN5KGNydGNfc3RhdGUtPmh3LmdhbW1hX2x1dCk7CiB9CiAKIC8qCkBAIC0yMTksNyArMjE5 LDcgQEAgc3RhdGljIGJvb2wgaWxrX2NzY19saW1pdGVkX3JhbmdlKGNvbnN0IHN0cnVjdCBpbnRl bF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQogc3RhdGljIHZvaWQgaWxrX2NzY19jb252ZXJ0X2N0 bShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKIAkJCQl1MTYgY29l ZmZzWzldKQogewotCWNvbnN0IHN0cnVjdCBkcm1fY29sb3JfY3RtICpjdG0gPSBjcnRjX3N0YXRl LT5iYXNlLmN0bS0+ZGF0YTsKKwljb25zdCBzdHJ1Y3QgZHJtX2NvbG9yX2N0bSAqY3RtID0gY3J0 Y19zdGF0ZS0+aHcuY3RtLT5kYXRhOwogCWNvbnN0IHU2NCAqaW5wdXQ7CiAJdTY0IHRlbXBbOV07 CiAJaW50IGk7CkBAIC0yNzQsNyArMjc0LDcgQEAgc3RhdGljIHZvaWQgaWxrX2xvYWRfY3NjX21h dHJpeChjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKIAlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGMtPmJhc2UuZGV2KTsKIAli b29sIGxpbWl0ZWRfY29sb3JfcmFuZ2UgPSBpbGtfY3NjX2xpbWl0ZWRfcmFuZ2UoY3J0Y19zdGF0 ZSk7CiAKLQlpZiAoY3J0Y19zdGF0ZS0+YmFzZS5jdG0pIHsKKwlpZiAoY3J0Y19zdGF0ZS0+aHcu Y3RtKSB7CiAJCXUxNiBjb2VmZls5XTsKIAogCQlpbGtfY3NjX2NvbnZlcnRfY3RtKGNydGNfc3Rh dGUsIGNvZWZmKTsKQEAgLTMxMiw3ICszMTIsNyBAQCBzdGF0aWMgdm9pZCBpY2xfbG9hZF9jc2Nf bWF0cml4KGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQogCXN0cnVj dCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLT5iYXNlLmNydGMp OwogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Yy0+YmFz ZS5kZXYpOwogCi0JaWYgKGNydGNfc3RhdGUtPmJhc2UuY3RtKSB7CisJaWYgKGNydGNfc3RhdGUt Pmh3LmN0bSkgewogCQl1MTYgY29lZmZbOV07CiAKIAkJaWxrX2NzY19jb252ZXJ0X2N0bShjcnRj X3N0YXRlLCBjb2VmZik7CkBAIC0zNDIsOCArMzQyLDggQEAgc3RhdGljIHZvaWQgY2hlcnJ5dmll d19sb2FkX2NzY19tYXRyaXgoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3Rh dGUKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGMtPmJh c2UuZGV2KTsKIAllbnVtIHBpcGUgcGlwZSA9IGNydGMtPnBpcGU7CiAKLQlpZiAoY3J0Y19zdGF0 ZS0+YmFzZS5jdG0pIHsKLQkJY29uc3Qgc3RydWN0IGRybV9jb2xvcl9jdG0gKmN0bSA9IGNydGNf c3RhdGUtPmJhc2UuY3RtLT5kYXRhOworCWlmIChjcnRjX3N0YXRlLT5ody5jdG0pIHsKKwkJY29u c3Qgc3RydWN0IGRybV9jb2xvcl9jdG0gKmN0bSA9IGNydGNfc3RhdGUtPmh3LmN0bS0+ZGF0YTsK IAkJdTE2IGNvZWZmc1s5XSA9IHt9OwogCQlpbnQgaTsKIApAQCAtNDM1LDcgKzQzNSw3IEBAIHN0 YXRpYyB2b2lkIGk5eHhfbG9hZF9sdXRzX2ludGVybmFsKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRj X3N0YXRlICpjcnRjX3N0YXRlLAogCiBzdGF0aWMgdm9pZCBpOXh4X2xvYWRfbHV0cyhjb25zdCBz dHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKIHsKLQlpOXh4X2xvYWRfbHV0c19p bnRlcm5hbChjcnRjX3N0YXRlLCBjcnRjX3N0YXRlLT5iYXNlLmdhbW1hX2x1dCk7CisJaTl4eF9s b2FkX2x1dHNfaW50ZXJuYWwoY3J0Y19zdGF0ZSwgY3J0Y19zdGF0ZS0+aHcuZ2FtbWFfbHV0KTsK IH0KIAogc3RhdGljIHZvaWQgaTl4eF9jb2xvcl9jb21taXQoY29uc3Qgc3RydWN0IGludGVsX2Ny dGNfc3RhdGUgKmNydGNfc3RhdGUpCkBAIC01MjUsNyArNTI1LDcgQEAgc3RhdGljIHZvaWQgaTk2 NV9sb2FkX2x1dF8xMHA2KHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAogc3RhdGljIHZvaWQgaTk2 NV9sb2FkX2x1dHMoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCiB7 CiAJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPmJh c2UuY3J0Yyk7Ci0JY29uc3Qgc3RydWN0IGRybV9wcm9wZXJ0eV9ibG9iICpnYW1tYV9sdXQgPSBj cnRjX3N0YXRlLT5iYXNlLmdhbW1hX2x1dDsKKwljb25zdCBzdHJ1Y3QgZHJtX3Byb3BlcnR5X2Js b2IgKmdhbW1hX2x1dCA9IGNydGNfc3RhdGUtPmh3LmdhbW1hX2x1dDsKIAogCWlmIChjcnRjX3N0 YXRlLT5nYW1tYV9tb2RlID09IEdBTU1BX01PREVfTU9ERV84QklUKQogCQlpOXh4X2xvYWRfbHV0 cyhjcnRjX3N0YXRlKTsKQEAgLTU0OCw3ICs1NDgsNyBAQCBzdGF0aWMgdm9pZCBpbGtfbG9hZF9s dXRfMTAoc3RydWN0IGludGVsX2NydGMgKmNydGMsCiBzdGF0aWMgdm9pZCBpbGtfbG9hZF9sdXRz KGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQogewogCXN0cnVjdCBp bnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLT5iYXNlLmNydGMpOwot CWNvbnN0IHN0cnVjdCBkcm1fcHJvcGVydHlfYmxvYiAqZ2FtbWFfbHV0ID0gY3J0Y19zdGF0ZS0+ YmFzZS5nYW1tYV9sdXQ7CisJY29uc3Qgc3RydWN0IGRybV9wcm9wZXJ0eV9ibG9iICpnYW1tYV9s dXQgPSBjcnRjX3N0YXRlLT5ody5nYW1tYV9sdXQ7CiAKIAlpZiAoY3J0Y19zdGF0ZS0+Z2FtbWFf bW9kZSA9PSBHQU1NQV9NT0RFX01PREVfOEJJVCkKIAkJaTl4eF9sb2FkX2x1dHMoY3J0Y19zdGF0 ZSk7CkBAIC02NTUsOCArNjU1LDggQEAgc3RhdGljIHZvaWQgaXZiX2xvYWRfbHV0X2V4dF9tYXgo c3RydWN0IGludGVsX2NydGMgKmNydGMpCiBzdGF0aWMgdm9pZCBpdmJfbG9hZF9sdXRzKGNvbnN0 IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQogewogCXN0cnVjdCBpbnRlbF9j cnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLT5iYXNlLmNydGMpOwotCWNvbnN0 IHN0cnVjdCBkcm1fcHJvcGVydHlfYmxvYiAqZ2FtbWFfbHV0ID0gY3J0Y19zdGF0ZS0+YmFzZS5n YW1tYV9sdXQ7Ci0JY29uc3Qgc3RydWN0IGRybV9wcm9wZXJ0eV9ibG9iICpkZWdhbW1hX2x1dCA9 IGNydGNfc3RhdGUtPmJhc2UuZGVnYW1tYV9sdXQ7CisJY29uc3Qgc3RydWN0IGRybV9wcm9wZXJ0 eV9ibG9iICpnYW1tYV9sdXQgPSBjcnRjX3N0YXRlLT5ody5nYW1tYV9sdXQ7CisJY29uc3Qgc3Ry dWN0IGRybV9wcm9wZXJ0eV9ibG9iICpkZWdhbW1hX2x1dCA9IGNydGNfc3RhdGUtPmh3LmRlZ2Ft bWFfbHV0OwogCiAJaWYgKGNydGNfc3RhdGUtPmdhbW1hX21vZGUgPT0gR0FNTUFfTU9ERV9NT0RF XzhCSVQpIHsKIAkJaTl4eF9sb2FkX2x1dHMoY3J0Y19zdGF0ZSk7CkBAIC02NzgsOCArNjc4LDgg QEAgc3RhdGljIHZvaWQgaXZiX2xvYWRfbHV0cyhjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0 ZSAqY3J0Y19zdGF0ZSkKIHN0YXRpYyB2b2lkIGJkd19sb2FkX2x1dHMoY29uc3Qgc3RydWN0IGlu dGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCiB7CiAJc3RydWN0IGludGVsX2NydGMgKmNydGMg PSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPmJhc2UuY3J0Yyk7Ci0JY29uc3Qgc3RydWN0IGRy bV9wcm9wZXJ0eV9ibG9iICpnYW1tYV9sdXQgPSBjcnRjX3N0YXRlLT5iYXNlLmdhbW1hX2x1dDsK LQljb25zdCBzdHJ1Y3QgZHJtX3Byb3BlcnR5X2Jsb2IgKmRlZ2FtbWFfbHV0ID0gY3J0Y19zdGF0 ZS0+YmFzZS5kZWdhbW1hX2x1dDsKKwljb25zdCBzdHJ1Y3QgZHJtX3Byb3BlcnR5X2Jsb2IgKmdh bW1hX2x1dCA9IGNydGNfc3RhdGUtPmh3LmdhbW1hX2x1dDsKKwljb25zdCBzdHJ1Y3QgZHJtX3By b3BlcnR5X2Jsb2IgKmRlZ2FtbWFfbHV0ID0gY3J0Y19zdGF0ZS0+aHcuZGVnYW1tYV9sdXQ7CiAK IAlpZiAoY3J0Y19zdGF0ZS0+Z2FtbWFfbW9kZSA9PSBHQU1NQV9NT0RFX01PREVfOEJJVCkgewog CQlpOXh4X2xvYWRfbHV0cyhjcnRjX3N0YXRlKTsKQEAgLTcwNCw3ICs3MDQsNyBAQCBzdGF0aWMg dm9pZCBnbGtfbG9hZF9kZWdhbW1hX2x1dChjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAq Y3J0Y19zdGF0ZSkKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1 KGNydGMtPmJhc2UuZGV2KTsKIAllbnVtIHBpcGUgcGlwZSA9IGNydGMtPnBpcGU7CiAJY29uc3Qg dTMyIGx1dF9zaXplID0gSU5URUxfSU5GTyhkZXZfcHJpdiktPmNvbG9yLmRlZ2FtbWFfbHV0X3Np emU7Ci0JY29uc3Qgc3RydWN0IGRybV9jb2xvcl9sdXQgKmx1dCA9IGNydGNfc3RhdGUtPmJhc2Uu ZGVnYW1tYV9sdXQtPmRhdGE7CisJY29uc3Qgc3RydWN0IGRybV9jb2xvcl9sdXQgKmx1dCA9IGNy dGNfc3RhdGUtPmh3LmRlZ2FtbWFfbHV0LT5kYXRhOwogCXUzMiBpOwogCiAJLyoKQEAgLTc2Niw3 ICs3NjYsNyBAQCBzdGF0aWMgdm9pZCBnbGtfbG9hZF9kZWdhbW1hX2x1dF9saW5lYXIoY29uc3Qg c3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdAogCiBzdGF0aWMgdm9pZCBnbGtfbG9h ZF9sdXRzKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQogewotCWNv bnN0IHN0cnVjdCBkcm1fcHJvcGVydHlfYmxvYiAqZ2FtbWFfbHV0ID0gY3J0Y19zdGF0ZS0+YmFz ZS5nYW1tYV9sdXQ7CisJY29uc3Qgc3RydWN0IGRybV9wcm9wZXJ0eV9ibG9iICpnYW1tYV9sdXQg PSBjcnRjX3N0YXRlLT5ody5nYW1tYV9sdXQ7CiAJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0 b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPmJhc2UuY3J0Yyk7CiAKIAkvKgpAQCAtNzc3LDcgKzc3 Nyw3IEBAIHN0YXRpYyB2b2lkIGdsa19sb2FkX2x1dHMoY29uc3Qgc3RydWN0IGludGVsX2NydGNf c3RhdGUgKmNydGNfc3RhdGUpCiAJICogdGhlIGRlZ2FtYSBMVVQgc28gdGhhdCB3ZSBkb24ndCBo YXZlIHRvIHJlbG9hZAogCSAqIGl0IGV2ZXJ5IHRpbWUgdGhlIHBpcGUgQ1NDIGlzIGJlaW5nIGVu YWJsZWQuCiAJICovCi0JaWYgKGNydGNfc3RhdGUtPmJhc2UuZGVnYW1tYV9sdXQpCisJaWYgKGNy dGNfc3RhdGUtPmh3LmRlZ2FtbWFfbHV0KQogCQlnbGtfbG9hZF9kZWdhbW1hX2x1dChjcnRjX3N0 YXRlKTsKIAllbHNlCiAJCWdsa19sb2FkX2RlZ2FtbWFfbHV0X2xpbmVhcihjcnRjX3N0YXRlKTsK QEAgLTgyMyw3ICs4MjMsNyBAQCBzdGF0aWMgdm9pZAogaWNsX3Byb2dyYW1fZ2FtbWFfc3VwZXJm aW5lX3NlZ21lbnQoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCiB7 CiAJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPmJh c2UuY3J0Yyk7Ci0JY29uc3Qgc3RydWN0IGRybV9wcm9wZXJ0eV9ibG9iICpibG9iID0gY3J0Y19z dGF0ZS0+YmFzZS5nYW1tYV9sdXQ7CisJY29uc3Qgc3RydWN0IGRybV9wcm9wZXJ0eV9ibG9iICpi bG9iID0gY3J0Y19zdGF0ZS0+aHcuZ2FtbWFfbHV0OwogCWNvbnN0IHN0cnVjdCBkcm1fY29sb3Jf bHV0ICpsdXQgPSBibG9iLT5kYXRhOwogCXN0cnVjdCBpbnRlbF9kc2IgKmRzYiA9IGludGVsX2Rz Yl9nZXQoY3J0Yyk7CiAJZW51bSBwaXBlIHBpcGUgPSBjcnRjLT5waXBlOwpAQCAtODU1LDcgKzg1 NSw3IEBAIHN0YXRpYyB2b2lkCiBpY2xfcHJvZ3JhbV9nYW1tYV9tdWx0aV9zZWdtZW50KGNvbnN0 IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQogewogCXN0cnVjdCBpbnRlbF9j cnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLT5iYXNlLmNydGMpOwotCWNvbnN0 IHN0cnVjdCBkcm1fcHJvcGVydHlfYmxvYiAqYmxvYiA9IGNydGNfc3RhdGUtPmJhc2UuZ2FtbWFf bHV0OworCWNvbnN0IHN0cnVjdCBkcm1fcHJvcGVydHlfYmxvYiAqYmxvYiA9IGNydGNfc3RhdGUt Pmh3LmdhbW1hX2x1dDsKIAljb25zdCBzdHJ1Y3QgZHJtX2NvbG9yX2x1dCAqbHV0ID0gYmxvYi0+ ZGF0YTsKIAljb25zdCBzdHJ1Y3QgZHJtX2NvbG9yX2x1dCAqZW50cnk7CiAJc3RydWN0IGludGVs X2RzYiAqZHNiID0gaW50ZWxfZHNiX2dldChjcnRjKTsKQEAgLTkxMCwxMSArOTEwLDExIEBAIGlj bF9wcm9ncmFtX2dhbW1hX211bHRpX3NlZ21lbnQoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3Rh dGUgKmNydGNfc3RhdGUpCiAKIHN0YXRpYyB2b2lkIGljbF9sb2FkX2x1dHMoY29uc3Qgc3RydWN0 IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCiB7Ci0JY29uc3Qgc3RydWN0IGRybV9wcm9w ZXJ0eV9ibG9iICpnYW1tYV9sdXQgPSBjcnRjX3N0YXRlLT5iYXNlLmdhbW1hX2x1dDsKKwljb25z dCBzdHJ1Y3QgZHJtX3Byb3BlcnR5X2Jsb2IgKmdhbW1hX2x1dCA9IGNydGNfc3RhdGUtPmh3Lmdh bW1hX2x1dDsKIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19z dGF0ZS0+YmFzZS5jcnRjKTsKIAlzdHJ1Y3QgaW50ZWxfZHNiICpkc2IgPSBpbnRlbF9kc2JfZ2V0 KGNydGMpOwogCi0JaWYgKGNydGNfc3RhdGUtPmJhc2UuZGVnYW1tYV9sdXQpCisJaWYgKGNydGNf c3RhdGUtPmh3LmRlZ2FtbWFfbHV0KQogCQlnbGtfbG9hZF9kZWdhbW1hX2x1dChjcnRjX3N0YXRl KTsKIAogCXN3aXRjaCAoY3J0Y19zdGF0ZS0+Z2FtbWFfbW9kZSAmIEdBTU1BX01PREVfTU9ERV9N QVNLKSB7CkBAIC05OTEsOCArOTkxLDggQEAgc3RhdGljIHZvaWQgY2h2X2xvYWRfY2dtX2dhbW1h KHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAogc3RhdGljIHZvaWQgY2h2X2xvYWRfbHV0cyhjb25z dCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKIHsKIAlzdHJ1Y3QgaW50ZWxf Y3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+YmFzZS5jcnRjKTsKLQljb25z dCBzdHJ1Y3QgZHJtX3Byb3BlcnR5X2Jsb2IgKmdhbW1hX2x1dCA9IGNydGNfc3RhdGUtPmJhc2Uu Z2FtbWFfbHV0OwotCWNvbnN0IHN0cnVjdCBkcm1fcHJvcGVydHlfYmxvYiAqZGVnYW1tYV9sdXQg PSBjcnRjX3N0YXRlLT5iYXNlLmRlZ2FtbWFfbHV0OworCWNvbnN0IHN0cnVjdCBkcm1fcHJvcGVy dHlfYmxvYiAqZ2FtbWFfbHV0ID0gY3J0Y19zdGF0ZS0+aHcuZ2FtbWFfbHV0OworCWNvbnN0IHN0 cnVjdCBkcm1fcHJvcGVydHlfYmxvYiAqZGVnYW1tYV9sdXQgPSBjcnRjX3N0YXRlLT5ody5kZWdh bW1hX2x1dDsKIAogCWNoZXJyeXZpZXdfbG9hZF9jc2NfbWF0cml4KGNydGNfc3RhdGUpOwogCkBA IC0xMDYzLDcgKzEwNjMsNyBAQCBpbnRlbF9jb2xvcl9hZGRfYWZmZWN0ZWRfcGxhbmVzKHN0cnVj dCBpbnRlbF9jcnRjX3N0YXRlICpuZXdfY3J0Y19zdGF0ZSkKIAkJaW50ZWxfYXRvbWljX2dldF9v bGRfY3J0Y19zdGF0ZShzdGF0ZSwgY3J0Yyk7CiAJc3RydWN0IGludGVsX3BsYW5lICpwbGFuZTsK IAotCWlmICghbmV3X2NydGNfc3RhdGUtPmJhc2UuYWN0aXZlIHx8CisJaWYgKCFuZXdfY3J0Y19z dGF0ZS0+aHcuYWN0aXZlIHx8CiAJICAgIGRybV9hdG9taWNfY3J0Y19uZWVkc19tb2Rlc2V0KCZu ZXdfY3J0Y19zdGF0ZS0+YmFzZSkpCiAJCXJldHVybiAwOwogCkBAIC0xMTA4LDggKzExMDgsOCBA QCBzdGF0aWMgaW50IGNoZWNrX2x1dF9zaXplKGNvbnN0IHN0cnVjdCBkcm1fcHJvcGVydHlfYmxv YiAqbHV0LCBpbnQgZXhwZWN0ZWQpCiBzdGF0aWMgaW50IGNoZWNrX2x1dHMoY29uc3Qgc3RydWN0 IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRjX3N0YXRlLT5iYXNlLmNydGMtPmRldik7Ci0JY29u c3Qgc3RydWN0IGRybV9wcm9wZXJ0eV9ibG9iICpnYW1tYV9sdXQgPSBjcnRjX3N0YXRlLT5iYXNl LmdhbW1hX2x1dDsKLQljb25zdCBzdHJ1Y3QgZHJtX3Byb3BlcnR5X2Jsb2IgKmRlZ2FtbWFfbHV0 ID0gY3J0Y19zdGF0ZS0+YmFzZS5kZWdhbW1hX2x1dDsKKwljb25zdCBzdHJ1Y3QgZHJtX3Byb3Bl cnR5X2Jsb2IgKmdhbW1hX2x1dCA9IGNydGNfc3RhdGUtPmh3LmdhbW1hX2x1dDsKKwljb25zdCBz dHJ1Y3QgZHJtX3Byb3BlcnR5X2Jsb2IgKmRlZ2FtbWFfbHV0ID0gY3J0Y19zdGF0ZS0+aHcuZGVn YW1tYV9sdXQ7CiAJaW50IGdhbW1hX2xlbmd0aCwgZGVnYW1tYV9sZW5ndGg7CiAJdTMyIGdhbW1h X3Rlc3RzLCBkZWdhbW1hX3Rlc3RzOwogCkBAIC0xMTU3LDcgKzExNTcsNyBAQCBzdGF0aWMgaW50 IGk5eHhfY29sb3JfY2hlY2soc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCiAJ CXJldHVybiByZXQ7CiAKIAljcnRjX3N0YXRlLT5nYW1tYV9lbmFibGUgPQotCQljcnRjX3N0YXRl LT5iYXNlLmdhbW1hX2x1dCAmJgorCQljcnRjX3N0YXRlLT5ody5nYW1tYV9sdXQgJiYKIAkJIWNy dGNfc3RhdGUtPmM4X3BsYW5lczsKIAogCWNydGNfc3RhdGUtPmdhbW1hX21vZGUgPSBpOXh4X2dh bW1hX21vZGUoY3J0Y19zdGF0ZSk7CkBAIC0xMTc2LDExICsxMTc2LDExIEBAIHN0YXRpYyB1MzIg Y2h2X2NnbV9tb2RlKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQog CWlmIChjcnRjX3N0YXRlX2lzX2xlZ2FjeV9nYW1tYShjcnRjX3N0YXRlKSkKIAkJcmV0dXJuIDA7 CiAKLQlpZiAoY3J0Y19zdGF0ZS0+YmFzZS5kZWdhbW1hX2x1dCkKKwlpZiAoY3J0Y19zdGF0ZS0+ aHcuZGVnYW1tYV9sdXQpCiAJCWNnbV9tb2RlIHw9IENHTV9QSVBFX01PREVfREVHQU1NQTsKLQlp ZiAoY3J0Y19zdGF0ZS0+YmFzZS5jdG0pCisJaWYgKGNydGNfc3RhdGUtPmh3LmN0bSkKIAkJY2dt X21vZGUgfD0gQ0dNX1BJUEVfTU9ERV9DU0M7Ci0JaWYgKGNydGNfc3RhdGUtPmJhc2UuZ2FtbWFf bHV0KQorCWlmIChjcnRjX3N0YXRlLT5ody5nYW1tYV9sdXQpCiAJCWNnbV9tb2RlIHw9IENHTV9Q SVBFX01PREVfR0FNTUE7CiAKIAlyZXR1cm4gY2dtX21vZGU7CkBAIC0xMjU0LDcgKzEyNTQsNyBA QCBzdGF0aWMgaW50IGlsa19jb2xvcl9jaGVjayhzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0 Y19zdGF0ZSkKIAkJcmV0dXJuIHJldDsKIAogCWNydGNfc3RhdGUtPmdhbW1hX2VuYWJsZSA9Ci0J CWNydGNfc3RhdGUtPmJhc2UuZ2FtbWFfbHV0ICYmCisJCWNydGNfc3RhdGUtPmh3LmdhbW1hX2x1 dCAmJgogCQkhY3J0Y19zdGF0ZS0+YzhfcGxhbmVzOwogCiAJLyoKQEAgLTEyODAsOCArMTI4MCw4 IEBAIHN0YXRpYyB1MzIgaXZiX2dhbW1hX21vZGUoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3Rh dGUgKmNydGNfc3RhdGUpCiAJaWYgKCFjcnRjX3N0YXRlLT5nYW1tYV9lbmFibGUgfHwKIAkgICAg Y3J0Y19zdGF0ZV9pc19sZWdhY3lfZ2FtbWEoY3J0Y19zdGF0ZSkpCiAJCXJldHVybiBHQU1NQV9N T0RFX01PREVfOEJJVDsKLQllbHNlIGlmIChjcnRjX3N0YXRlLT5iYXNlLmdhbW1hX2x1dCAmJgot CQkgY3J0Y19zdGF0ZS0+YmFzZS5kZWdhbW1hX2x1dCkKKwllbHNlIGlmIChjcnRjX3N0YXRlLT5o dy5nYW1tYV9sdXQgJiYKKwkJIGNydGNfc3RhdGUtPmh3LmRlZ2FtbWFfbHV0KQogCQlyZXR1cm4g R0FNTUFfTU9ERV9NT0RFX1NQTElUOwogCWVsc2UKIAkJcmV0dXJuIEdBTU1BX01PREVfTU9ERV8x MEJJVDsKQEAgLTEyOTUsNyArMTI5NSw3IEBAIHN0YXRpYyB1MzIgaXZiX2NzY19tb2RlKGNvbnN0 IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQogCSAqIENTQyBjb21lcyBhZnRl ciB0aGUgTFVUIGluIGRlZ2FtbWEsIFJHQi0+WUNiQ3IsCiAJICogYW5kIFJHQiBmdWxsLT5saW1p dGVkIHJhbmdlIG1vZGUuCiAJICovCi0JaWYgKGNydGNfc3RhdGUtPmJhc2UuZGVnYW1tYV9sdXQg fHwKKwlpZiAoY3J0Y19zdGF0ZS0+aHcuZGVnYW1tYV9sdXQgfHwKIAkgICAgY3J0Y19zdGF0ZS0+ b3V0cHV0X2Zvcm1hdCAhPSBJTlRFTF9PVVRQVVRfRk9STUFUX1JHQiB8fAogCSAgICBsaW1pdGVk X2NvbG9yX3JhbmdlKQogCQlyZXR1cm4gMDsKQEAgLTEzMTMsMTMgKzEzMTMsMTMgQEAgc3RhdGlj IGludCBpdmJfY29sb3JfY2hlY2soc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUp CiAJCXJldHVybiByZXQ7CiAKIAljcnRjX3N0YXRlLT5nYW1tYV9lbmFibGUgPQotCQkoY3J0Y19z dGF0ZS0+YmFzZS5nYW1tYV9sdXQgfHwKLQkJIGNydGNfc3RhdGUtPmJhc2UuZGVnYW1tYV9sdXQp ICYmCisJCShjcnRjX3N0YXRlLT5ody5nYW1tYV9sdXQgfHwKKwkJIGNydGNfc3RhdGUtPmh3LmRl Z2FtbWFfbHV0KSAmJgogCQkhY3J0Y19zdGF0ZS0+YzhfcGxhbmVzOwogCiAJY3J0Y19zdGF0ZS0+ Y3NjX2VuYWJsZSA9CiAJCWNydGNfc3RhdGUtPm91dHB1dF9mb3JtYXQgIT0gSU5URUxfT1VUUFVU X0ZPUk1BVF9SR0IgfHwKLQkJY3J0Y19zdGF0ZS0+YmFzZS5jdG0gfHwgbGltaXRlZF9jb2xvcl9y YW5nZTsKKwkJY3J0Y19zdGF0ZS0+aHcuY3RtIHx8IGxpbWl0ZWRfY29sb3JfcmFuZ2U7CiAKIAlj cnRjX3N0YXRlLT5nYW1tYV9tb2RlID0gaXZiX2dhbW1hX21vZGUoY3J0Y19zdGF0ZSk7CiAKQEAg LTEzNTAsMTQgKzEzNTAsMTQgQEAgc3RhdGljIGludCBnbGtfY29sb3JfY2hlY2soc3RydWN0IGlu dGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCiAJCXJldHVybiByZXQ7CiAKIAljcnRjX3N0YXRl LT5nYW1tYV9lbmFibGUgPQotCQljcnRjX3N0YXRlLT5iYXNlLmdhbW1hX2x1dCAmJgorCQljcnRj X3N0YXRlLT5ody5nYW1tYV9sdXQgJiYKIAkJIWNydGNfc3RhdGUtPmM4X3BsYW5lczsKIAogCS8q IE9uIEdMSysgZGVnYW1tYSBMVVQgaXMgY29udHJvbGxlZCBieSBjc2NfZW5hYmxlICovCiAJY3J0 Y19zdGF0ZS0+Y3NjX2VuYWJsZSA9Ci0JCWNydGNfc3RhdGUtPmJhc2UuZGVnYW1tYV9sdXQgfHwK KwkJY3J0Y19zdGF0ZS0+aHcuZGVnYW1tYV9sdXQgfHwKIAkJY3J0Y19zdGF0ZS0+b3V0cHV0X2Zv cm1hdCAhPSBJTlRFTF9PVVRQVVRfRk9STUFUX1JHQiB8fAotCQljcnRjX3N0YXRlLT5iYXNlLmN0 bSB8fCBjcnRjX3N0YXRlLT5saW1pdGVkX2NvbG9yX3JhbmdlOworCQljcnRjX3N0YXRlLT5ody5j dG0gfHwgY3J0Y19zdGF0ZS0+bGltaXRlZF9jb2xvcl9yYW5nZTsKIAogCWNydGNfc3RhdGUtPmdh bW1hX21vZGUgPSBnbGtfZ2FtbWFfbW9kZShjcnRjX3N0YXRlKTsKIApAQCAtMTM3NCwxNCArMTM3 NCwxNCBAQCBzdGF0aWMgdTMyIGljbF9nYW1tYV9tb2RlKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRj X3N0YXRlICpjcnRjX3N0YXRlKQogewogCXUzMiBnYW1tYV9tb2RlID0gMDsKIAotCWlmIChjcnRj X3N0YXRlLT5iYXNlLmRlZ2FtbWFfbHV0KQorCWlmIChjcnRjX3N0YXRlLT5ody5kZWdhbW1hX2x1 dCkKIAkJZ2FtbWFfbW9kZSB8PSBQUkVfQ1NDX0dBTU1BX0VOQUJMRTsKIAotCWlmIChjcnRjX3N0 YXRlLT5iYXNlLmdhbW1hX2x1dCAmJgorCWlmIChjcnRjX3N0YXRlLT5ody5nYW1tYV9sdXQgJiYK IAkgICAgIWNydGNfc3RhdGUtPmM4X3BsYW5lcykKIAkJZ2FtbWFfbW9kZSB8PSBQT1NUX0NTQ19H QU1NQV9FTkFCTEU7CiAKLQlpZiAoIWNydGNfc3RhdGUtPmJhc2UuZ2FtbWFfbHV0IHx8CisJaWYg KCFjcnRjX3N0YXRlLT5ody5nYW1tYV9sdXQgfHwKIAkgICAgY3J0Y19zdGF0ZV9pc19sZWdhY3lf Z2FtbWEoY3J0Y19zdGF0ZSkpCiAJCWdhbW1hX21vZGUgfD0gR0FNTUFfTU9ERV9NT0RFXzhCSVQ7 CiAJZWxzZQpAQCAtMTM5NCw3ICsxMzk0LDcgQEAgc3RhdGljIHUzMiBpY2xfY3NjX21vZGUoY29u c3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCiB7CiAJdTMyIGNzY19tb2Rl ID0gMDsKIAotCWlmIChjcnRjX3N0YXRlLT5iYXNlLmN0bSkKKwlpZiAoY3J0Y19zdGF0ZS0+aHcu Y3RtKQogCQljc2NfbW9kZSB8PSBJQ0xfQ1NDX0VOQUJMRTsKIAogCWlmIChjcnRjX3N0YXRlLT5v dXRwdXRfZm9ybWF0ICE9IElOVEVMX09VVFBVVF9GT1JNQVRfUkdCIHx8CkBAIC0xNjIzLDcgKzE2 MjMsNyBAQCBzdGF0aWMgdm9pZCBpOXh4X3JlYWRfbHV0cyhzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0 ZSAqY3J0Y19zdGF0ZSkKIAlpZiAoIWNydGNfc3RhdGUtPmdhbW1hX2VuYWJsZSkKIAkJcmV0dXJu OwogCi0JY3J0Y19zdGF0ZS0+YmFzZS5nYW1tYV9sdXQgPSBpOXh4X3JlYWRfbHV0XzgoY3J0Y19z dGF0ZSk7CisJY3J0Y19zdGF0ZS0+aHcuZ2FtbWFfbHV0ID0gaTl4eF9yZWFkX2x1dF84KGNydGNf c3RhdGUpOwogfQogCiBzdGF0aWMgc3RydWN0IGRybV9wcm9wZXJ0eV9ibG9iICoKQEAgLTE2NzMs OSArMTY3Myw5IEBAIHN0YXRpYyB2b2lkIGk5NjVfcmVhZF9sdXRzKHN0cnVjdCBpbnRlbF9jcnRj X3N0YXRlICpjcnRjX3N0YXRlKQogCQlyZXR1cm47CiAKIAlpZiAoY3J0Y19zdGF0ZS0+Z2FtbWFf bW9kZSA9PSBHQU1NQV9NT0RFX01PREVfOEJJVCkKLQkJY3J0Y19zdGF0ZS0+YmFzZS5nYW1tYV9s dXQgPSBpOXh4X3JlYWRfbHV0XzgoY3J0Y19zdGF0ZSk7CisJCWNydGNfc3RhdGUtPmh3LmdhbW1h X2x1dCA9IGk5eHhfcmVhZF9sdXRfOChjcnRjX3N0YXRlKTsKIAllbHNlCi0JCWNydGNfc3RhdGUt PmJhc2UuZ2FtbWFfbHV0ID0gaTk2NV9yZWFkX2x1dF8xMHA2KGNydGNfc3RhdGUpOworCQljcnRj X3N0YXRlLT5ody5nYW1tYV9sdXQgPSBpOTY1X3JlYWRfbHV0XzEwcDYoY3J0Y19zdGF0ZSk7CiB9 CiAKIHN0YXRpYyBzdHJ1Y3QgZHJtX3Byb3BlcnR5X2Jsb2IgKgpAQCAtMTcxNSw3ICsxNzE1LDcg QEAgY2h2X3JlYWRfY2dtX2x1dChjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19z dGF0ZSkKIHN0YXRpYyB2b2lkIGNodl9yZWFkX2x1dHMoc3RydWN0IGludGVsX2NydGNfc3RhdGUg KmNydGNfc3RhdGUpCiB7CiAJaWYgKGNydGNfc3RhdGUtPmNnbV9tb2RlICYgQ0dNX1BJUEVfTU9E RV9HQU1NQSkKLQkJY3J0Y19zdGF0ZS0+YmFzZS5nYW1tYV9sdXQgPSBjaHZfcmVhZF9jZ21fbHV0 KGNydGNfc3RhdGUpOworCQljcnRjX3N0YXRlLT5ody5nYW1tYV9sdXQgPSBjaHZfcmVhZF9jZ21f bHV0KGNydGNfc3RhdGUpOwogCWVsc2UKIAkJaTk2NV9yZWFkX2x1dHMoY3J0Y19zdGF0ZSk7CiB9 CkBAIC0xNzYyLDkgKzE3NjIsOSBAQCBzdGF0aWMgdm9pZCBpbGtfcmVhZF9sdXRzKHN0cnVjdCBp bnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQogCQlyZXR1cm47CiAKIAlpZiAoY3J0Y19zdGF0 ZS0+Z2FtbWFfbW9kZSA9PSBHQU1NQV9NT0RFX01PREVfOEJJVCkKLQkJY3J0Y19zdGF0ZS0+YmFz ZS5nYW1tYV9sdXQgPSBpOXh4X3JlYWRfbHV0XzgoY3J0Y19zdGF0ZSk7CisJCWNydGNfc3RhdGUt Pmh3LmdhbW1hX2x1dCA9IGk5eHhfcmVhZF9sdXRfOChjcnRjX3N0YXRlKTsKIAllbHNlCi0JCWNy dGNfc3RhdGUtPmJhc2UuZ2FtbWFfbHV0ID0gaWxrX3JlYWRfbHV0XzEwKGNydGNfc3RhdGUpOwor CQljcnRjX3N0YXRlLT5ody5nYW1tYV9sdXQgPSBpbGtfcmVhZF9sdXRfMTAoY3J0Y19zdGF0ZSk7 CiB9CiAKIHN0YXRpYyBzdHJ1Y3QgZHJtX3Byb3BlcnR5X2Jsb2IgKgpAQCAtMTgxMSw5ICsxODEx LDkgQEAgc3RhdGljIHZvaWQgZ2xrX3JlYWRfbHV0cyhzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAq Y3J0Y19zdGF0ZSkKIAkJcmV0dXJuOwogCiAJaWYgKGNydGNfc3RhdGUtPmdhbW1hX21vZGUgPT0g R0FNTUFfTU9ERV9NT0RFXzhCSVQpCi0JCWNydGNfc3RhdGUtPmJhc2UuZ2FtbWFfbHV0ID0gaTl4 eF9yZWFkX2x1dF84KGNydGNfc3RhdGUpOworCQljcnRjX3N0YXRlLT5ody5nYW1tYV9sdXQgPSBp OXh4X3JlYWRfbHV0XzgoY3J0Y19zdGF0ZSk7CiAJZWxzZQotCQljcnRjX3N0YXRlLT5iYXNlLmdh bW1hX2x1dCA9IGdsa19yZWFkX2x1dF8xMChjcnRjX3N0YXRlLCBQQUxfUFJFQ19JTkRFWF9WQUxV RSgwKSk7CisJCWNydGNfc3RhdGUtPmh3LmdhbW1hX2x1dCA9IGdsa19yZWFkX2x1dF8xMChjcnRj X3N0YXRlLCBQQUxfUFJFQ19JTkRFWF9WQUxVRSgwKSk7CiB9CiAKIHZvaWQgaW50ZWxfY29sb3Jf aW5pdChzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YykKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2Rpc3BsYXkvaW50ZWxfY3J0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5 L2ludGVsX2NydC5jCmluZGV4IGZmNjEyNmVhNzkzYy4uMzk5YWJjM2Q1MjFlIDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2NydC5jCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfY3J0LmMKQEAgLTEzMiw5ICsxMzIsOSBAQCBzdGF0 aWMgdm9pZCBpbnRlbF9jcnRfZ2V0X2NvbmZpZyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2Rl ciwKIHsKIAlwaXBlX2NvbmZpZy0+b3V0cHV0X3R5cGVzIHw9IEJJVChJTlRFTF9PVVRQVVRfQU5B TE9HKTsKIAotCXBpcGVfY29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGUuZmxhZ3MgfD0gaW50ZWxf Y3J0X2dldF9mbGFncyhlbmNvZGVyKTsKKwlwaXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZS5m bGFncyB8PSBpbnRlbF9jcnRfZ2V0X2ZsYWdzKGVuY29kZXIpOwogCi0JcGlwZV9jb25maWctPmJh c2UuYWRqdXN0ZWRfbW9kZS5jcnRjX2Nsb2NrID0gcGlwZV9jb25maWctPnBvcnRfY2xvY2s7CisJ cGlwZV9jb25maWctPmh3LmFkanVzdGVkX21vZGUuY3J0Y19jbG9jayA9IHBpcGVfY29uZmlnLT5w b3J0X2Nsb2NrOwogfQogCiBzdGF0aWMgdm9pZCBoc3dfY3J0X2dldF9jb25maWcoc3RydWN0IGlu dGVsX2VuY29kZXIgKmVuY29kZXIsCkBAIC0xNDQsMTMgKzE0NCwxMyBAQCBzdGF0aWMgdm9pZCBo c3dfY3J0X2dldF9jb25maWcoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCiAKIAlpbnRl bF9kZGlfZ2V0X2NvbmZpZyhlbmNvZGVyLCBwaXBlX2NvbmZpZyk7CiAKLQlwaXBlX2NvbmZpZy0+ YmFzZS5hZGp1c3RlZF9tb2RlLmZsYWdzICY9IH4oRFJNX01PREVfRkxBR19QSFNZTkMgfAorCXBp cGVfY29uZmlnLT5ody5hZGp1c3RlZF9tb2RlLmZsYWdzICY9IH4oRFJNX01PREVfRkxBR19QSFNZ TkMgfAogCQkJCQkgICAgICBEUk1fTU9ERV9GTEFHX05IU1lOQyB8CiAJCQkJCSAgICAgIERSTV9N T0RFX0ZMQUdfUFZTWU5DIHwKIAkJCQkJICAgICAgRFJNX01PREVfRkxBR19OVlNZTkMpOwotCXBp cGVfY29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGUuZmxhZ3MgfD0gaW50ZWxfY3J0X2dldF9mbGFn cyhlbmNvZGVyKTsKKwlwaXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZS5mbGFncyB8PSBpbnRl bF9jcnRfZ2V0X2ZsYWdzKGVuY29kZXIpOwogCi0JcGlwZV9jb25maWctPmJhc2UuYWRqdXN0ZWRf bW9kZS5jcnRjX2Nsb2NrID0gbHB0X2dldF9pY2xraXAoZGV2X3ByaXYpOworCXBpcGVfY29uZmln LT5ody5hZGp1c3RlZF9tb2RlLmNydGNfY2xvY2sgPSBscHRfZ2V0X2ljbGtpcChkZXZfcHJpdik7 CiB9CiAKIC8qIE5vdGU6IFRoZSBjYWxsZXIgaXMgcmVxdWlyZWQgdG8gZmlsdGVyIG91dCBkcG1z IG1vZGVzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlCkBAIC0xNjIsNyArMTYyLDcgQEAgc3RhdGljIHZv aWQgaW50ZWxfY3J0X3NldF9kcG1zKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAogCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZW5jb2Rlci0+YmFzZS5k ZXYpOwogCXN0cnVjdCBpbnRlbF9jcnQgKmNydCA9IGludGVsX2VuY29kZXJfdG9fY3J0KGVuY29k ZXIpOwogCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRl LT5iYXNlLmNydGMpOwotCWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9t b2RlID0gJmNydGNfc3RhdGUtPmJhc2UuYWRqdXN0ZWRfbW9kZTsKKwljb25zdCBzdHJ1Y3QgZHJt X2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9ICZjcnRjX3N0YXRlLT5ody5hZGp1c3RlZF9t b2RlOwogCXUzMiBhZHBhOwogCiAJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNSkKQEAgLTM1 OCw3ICszNTgsNyBAQCBzdGF0aWMgaW50IGludGVsX2NydF9jb21wdXRlX2NvbmZpZyhzdHJ1Y3Qg aW50ZWxfZW5jb2RlciAqZW5jb2RlciwKIAkJCQkgICAgc3RydWN0IGRybV9jb25uZWN0b3Jfc3Rh dGUgKmNvbm5fc3RhdGUpCiB7CiAJc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21v ZGUgPQotCQkmcGlwZV9jb25maWctPmJhc2UuYWRqdXN0ZWRfbW9kZTsKKwkJJnBpcGVfY29uZmln LT5ody5hZGp1c3RlZF9tb2RlOwogCiAJaWYgKGFkanVzdGVkX21vZGUtPmZsYWdzICYgRFJNX01P REVfRkxBR19EQkxTQ0FOKQogCQlyZXR1cm4gLUVJTlZBTDsKQEAgLTM3Myw3ICszNzMsNyBAQCBz dGF0aWMgaW50IHBjaF9jcnRfY29tcHV0ZV9jb25maWcoc3RydWN0IGludGVsX2VuY29kZXIgKmVu Y29kZXIsCiAJCQkJICBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubl9zdGF0ZSkKIHsK IAlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9Ci0JCSZwaXBlX2NvbmZp Zy0+YmFzZS5hZGp1c3RlZF9tb2RlOworCQkmcGlwZV9jb25maWctPmh3LmFkanVzdGVkX21vZGU7 CiAKIAlpZiAoYWRqdXN0ZWRfbW9kZS0+ZmxhZ3MgJiBEUk1fTU9ERV9GTEFHX0RCTFNDQU4pCiAJ CXJldHVybiAtRUlOVkFMOwpAQCAtMzkwLDcgKzM5MCw3IEBAIHN0YXRpYyBpbnQgaHN3X2NydF9j b21wdXRlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKIHsKIAlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVuY29kZXItPmJhc2UuZGV2KTsK IAlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9Ci0JCSZwaXBlX2NvbmZp Zy0+YmFzZS5hZGp1c3RlZF9tb2RlOworCQkmcGlwZV9jb25maWctPmh3LmFkanVzdGVkX21vZGU7 CiAKIAlpZiAoYWRqdXN0ZWRfbW9kZS0+ZmxhZ3MgJiBEUk1fTU9ERV9GTEFHX0RCTFNDQU4pCiAJ CXJldHVybiAtRUlOVkFMOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxh eS9pbnRlbF9kZGkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGRpLmMK aW5kZXggMWE0OTI2NmY0ZjU3Li43Y2QwNWNhN2M4MTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGRpLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv ZGlzcGxheS9pbnRlbF9kZGkuYwpAQCAtMTUyOCw3ICsxNTI4LDcgQEAgc3RhdGljIHZvaWQgZGRp X2RvdGNsb2NrX2dldChzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcpCiAJaWYg KHBpcGVfY29uZmlnLT5waXhlbF9tdWx0aXBsaWVyKQogCQlkb3RjbG9jayAvPSBwaXBlX2NvbmZp Zy0+cGl4ZWxfbXVsdGlwbGllcjsKIAotCXBpcGVfY29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGUu Y3J0Y19jbG9jayA9IGRvdGNsb2NrOworCXBpcGVfY29uZmlnLT5ody5hZGp1c3RlZF9tb2RlLmNy dGNfY2xvY2sgPSBkb3RjbG9jazsKIH0KIAogc3RhdGljIHZvaWQgaWNsX2RkaV9jbG9ja19nZXQo c3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCkBAIC0xODYwLDkgKzE4NjAsOSBAQCBpbnRl bF9kZGlfdHJhbnNjb2Rlcl9mdW5jX3JlZ192YWxfZ2V0KGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRj X3N0YXRlICpjcnRjX3N0YXRlKQogCQlCVUcoKTsKIAl9CiAKLQlpZiAoY3J0Y19zdGF0ZS0+YmFz ZS5hZGp1c3RlZF9tb2RlLmZsYWdzICYgRFJNX01PREVfRkxBR19QVlNZTkMpCisJaWYgKGNydGNf c3RhdGUtPmh3LmFkanVzdGVkX21vZGUuZmxhZ3MgJiBEUk1fTU9ERV9GTEFHX1BWU1lOQykKIAkJ dGVtcCB8PSBUUkFOU19ERElfUFZTWU5DOwotCWlmIChjcnRjX3N0YXRlLT5iYXNlLmFkanVzdGVk X21vZGUuZmxhZ3MgJiBEUk1fTU9ERV9GTEFHX1BIU1lOQykKKwlpZiAoY3J0Y19zdGF0ZS0+aHcu YWRqdXN0ZWRfbW9kZS5mbGFncyAmIERSTV9NT0RFX0ZMQUdfUEhTWU5DKQogCQl0ZW1wIHw9IFRS QU5TX0RESV9QSFNZTkM7CiAKIAlpZiAoY3B1X3RyYW5zY29kZXIgPT0gVFJBTlNDT0RFUl9FRFAp IHsKQEAgLTMzNzEsNyArMzM3MSw3IEBAIHN0YXRpYyB2b2lkIHRnbF9kYzNjb19leGl0bGluZV9j b21wdXRlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKIHsKIAl1MzIgZXhp dF9zY2FubGluZXM7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkx NShjc3RhdGUtPmJhc2UuY3J0Yy0+ZGV2KTsKLQl1MzIgY3J0Y192ZGlzcGxheSA9IGNzdGF0ZS0+ YmFzZS5hZGp1c3RlZF9tb2RlLmNydGNfdmRpc3BsYXk7CisJdTMyIGNydGNfdmRpc3BsYXkgPSBj c3RhdGUtPmh3LmFkanVzdGVkX21vZGUuY3J0Y192ZGlzcGxheTsKIAogCWNzdGF0ZS0+ZGMzY29f ZXhpdGxpbmUgPSAwOwogCkBAIC0zMzgzLDcgKzMzODMsNyBAQCBzdGF0aWMgdm9pZCB0Z2xfZGMz Y29fZXhpdGxpbmVfY29tcHV0ZV9jb25maWcoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIs CiAJICAgIGVuY29kZXItPnBvcnQgIT0gUE9SVF9BKQogCQlyZXR1cm47CiAKLQlpZiAoIWNzdGF0 ZS0+aGFzX3BzcjIgfHwgIWNzdGF0ZS0+YmFzZS5hY3RpdmUpCisJaWYgKCFjc3RhdGUtPmhhc19w c3IyIHx8ICFjc3RhdGUtPmh3LmFjdGl2ZSkKIAkJcmV0dXJuOwogCiAJLyoKQEAgLTMzOTEsNyAr MzM5MSw3IEBAIHN0YXRpYyB2b2lkIHRnbF9kYzNjb19leGl0bGluZV9jb21wdXRlX2NvbmZpZyhz dHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKIAkgKiBQU1IyIHRyYW5zY29kZXIgRWFybHkg RXhpdCBzY2FubGluZXMgPSBST1VORFVQKDIwMCAvIGxpbmUgdGltZSkgKyAxCiAJICovCiAJZXhp dF9zY2FubGluZXMgPQotCQlpbnRlbF91c2Vjc190b19zY2FubGluZXMoJmNzdGF0ZS0+YmFzZS5h ZGp1c3RlZF9tb2RlLCAyMDApICsgMTsKKwkJaW50ZWxfdXNlY3NfdG9fc2NhbmxpbmVzKCZjc3Rh dGUtPmh3LmFkanVzdGVkX21vZGUsIDIwMCkgKyAxOwogCiAJaWYgKFdBUk5fT04oZXhpdF9zY2Fu bGluZXMgPiBjcnRjX3ZkaXNwbGF5KSkKIAkJcmV0dXJuOwpAQCAtNDA3OCw3ICs0MDc4LDcgQEAg aW50ZWxfZGRpX3VwZGF0ZV9wcmVwYXJlKHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRl LAogCVdBUk5fT04oY3J0YyAmJiBjcnRjLT5hY3RpdmUpOwogCiAJaW50ZWxfdGNfcG9ydF9nZXRf bGluayhlbmNfdG9fZGlnX3BvcnQoJmVuY29kZXItPmJhc2UpLCByZXF1aXJlZF9sYW5lcyk7Ci0J aWYgKGNydGNfc3RhdGUgJiYgY3J0Y19zdGF0ZS0+YmFzZS5hY3RpdmUpCisJaWYgKGNydGNfc3Rh dGUgJiYgY3J0Y19zdGF0ZS0+aHcuYWN0aXZlKQogCQlpbnRlbF91cGRhdGVfYWN0aXZlX2RwbGwo c3RhdGUsIGNydGMsIGVuY29kZXIpOwogfQogCkBAIC00MjI2LDcgKzQyMjYsNyBAQCB2b2lkIGlu dGVsX2RkaV9nZXRfY29uZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAogCWVsc2UK IAkJZmxhZ3MgfD0gRFJNX01PREVfRkxBR19OVlNZTkM7CiAKLQlwaXBlX2NvbmZpZy0+YmFzZS5h ZGp1c3RlZF9tb2RlLmZsYWdzIHw9IGZsYWdzOworCXBpcGVfY29uZmlnLT5ody5hZGp1c3RlZF9t b2RlLmZsYWdzIHw9IGZsYWdzOwogCiAJc3dpdGNoICh0ZW1wICYgVFJBTlNfRERJX0JQQ19NQVNL KSB7CiAJY2FzZSBUUkFOU19ERElfQlBDXzY6CkBAIC00NTA5LDcgKzQ1MDksNyBAQCBzdGF0aWMg aW50IGludGVsX2hkbWlfcmVzZXRfbGluayhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwK IAogCVdBUk5fT04oIWludGVsX2NydGNfaGFzX3R5cGUoY3J0Y19zdGF0ZSwgSU5URUxfT1VUUFVU X0hETUkpKTsKIAotCWlmICghY3J0Y19zdGF0ZS0+YmFzZS5hY3RpdmUpCisJaWYgKCFjcnRjX3N0 YXRlLT5ody5hY3RpdmUpCiAJCXJldHVybiAwOwogCiAJaWYgKCFjcnRjX3N0YXRlLT5oZG1pX2hp Z2hfdG1kc19jbG9ja19yYXRpbyAmJgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv ZGlzcGxheS9pbnRlbF9kaXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2lu dGVsX2Rpc3BsYXkuYwppbmRleCA3MWQzODQ1N2RmMzYuLjg5NWY2MzE1M2U4ZSAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5LmMKKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5LmMKQEAgLTEwMjcsNyArMTAy Nyw3IEBAIGJvb2wgaW50ZWxfY3J0Y19hY3RpdmUoc3RydWN0IGludGVsX2NydGMgKmNydGMpCiAJ ICogZm9yIGF0b21pYy4KIAkgKi8KIAlyZXR1cm4gY3J0Yy0+YWN0aXZlICYmIGNydGMtPmJhc2Uu cHJpbWFyeS0+c3RhdGUtPmZiICYmCi0JCWNydGMtPmNvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2Rl LmNydGNfY2xvY2s7CisJCWNydGMtPmNvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZS5jcnRjX2Nsb2Nr OwogfQogCiBlbnVtIHRyYW5zY29kZXIgaW50ZWxfcGlwZV90b19jcHVfdHJhbnNjb2RlcihzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCkBAIC01MDE0LDcgKzUwMTQsNyBAQCBzdGF0 aWMgdm9pZCBscHRfcHJvZ3JhbV9pY2xraXAoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUg KmNydGNfc3RhdGUpCiB7CiAJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRj KGNydGNfc3RhdGUtPmJhc2UuY3J0Yyk7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gdG9faTkxNShjcnRjLT5iYXNlLmRldik7Ci0JaW50IGNsb2NrID0gY3J0Y19zdGF0ZS0+ YmFzZS5hZGp1c3RlZF9tb2RlLmNydGNfY2xvY2s7CisJaW50IGNsb2NrID0gY3J0Y19zdGF0ZS0+ aHcuYWRqdXN0ZWRfbW9kZS5jcnRjX2Nsb2NrOwogCXUzMiBkaXZzZWwsIHBoYXNlaW5jLCBhdXhk aXYsIHBoYXNlZGlyID0gMDsKIAl1MzIgdGVtcDsKIApAQCAtNTI4Nyw3ICs1Mjg3LDcgQEAgc3Rh dGljIHZvaWQgaXJvbmxha2VfcGNoX2VuYWJsZShjb25zdCBzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0 YXRlICpzdGF0ZSwKIAlpZiAoSEFTX1BDSF9DUFQoZGV2X3ByaXYpICYmCiAJICAgIGludGVsX2Ny dGNfaGFzX2RwX2VuY29kZXIoY3J0Y19zdGF0ZSkpIHsKIAkJY29uc3Qgc3RydWN0IGRybV9kaXNw bGF5X21vZGUgKmFkanVzdGVkX21vZGUgPQotCQkJJmNydGNfc3RhdGUtPmJhc2UuYWRqdXN0ZWRf bW9kZTsKKwkJCSZjcnRjX3N0YXRlLT5ody5hZGp1c3RlZF9tb2RlOwogCQl1MzIgYnBjID0gKEk5 MTVfUkVBRChQSVBFQ09ORihwaXBlKSkgJiBQSVBFQ09ORl9CUENfTUFTSykgPj4gNTsKIAkJaTkx NV9yZWdfdCByZWcgPSBUUkFOU19EUF9DVEwocGlwZSk7CiAJCWVudW0gcG9ydCBwb3J0OwpAQCAt NTQzNyw3ICs1NDM3LDcgQEAgc2tsX3VwZGF0ZV9zY2FsZXIoc3RydWN0IGludGVsX2NydGNfc3Rh dGUgKmNydGNfc3RhdGUsIGJvb2wgZm9yY2VfZGV0YWNoLAogCQl0b19pbnRlbF9jcnRjKGNydGNf c3RhdGUtPmJhc2UuY3J0Yyk7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0g dG9faTkxNShpbnRlbF9jcnRjLT5iYXNlLmRldik7CiAJY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5 X21vZGUgKmFkanVzdGVkX21vZGUgPQotCQkmY3J0Y19zdGF0ZS0+YmFzZS5hZGp1c3RlZF9tb2Rl OworCQkmY3J0Y19zdGF0ZS0+aHcuYWRqdXN0ZWRfbW9kZTsKIAogCS8qCiAJICogU3JjIGNvb3Jk aW5hdGVzIGFyZSBhbHJlYWR5IHJvdGF0ZWQgYnkgMjcwIGRlZ3JlZXMgZm9yCkBAIC01NDUzLDcg KzU0NTMsNyBAQCBza2xfdXBkYXRlX3NjYWxlcihzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0 Y19zdGF0ZSwgYm9vbCBmb3JjZV9kZXRhY2gsCiAJICogT25jZSBOVjEyIGlzIGVuYWJsZWQsIGhh bmRsZSBpdCBoZXJlIHdoaWxlIGFsbG9jYXRpbmcgc2NhbGVyCiAJICogZm9yIE5WMTIuCiAJICov Ci0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSAmJiBjcnRjX3N0YXRlLT5iYXNlLmVuYWJs ZSAmJgorCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkgJiYgY3J0Y19zdGF0ZS0+aHcuZW5h YmxlICYmCiAJICAgIG5lZWRfc2NhbGVyICYmIGFkanVzdGVkX21vZGUtPmZsYWdzICYgRFJNX01P REVfRkxBR19JTlRFUkxBQ0UpIHsKIAkJRFJNX0RFQlVHX0tNUygiUGlwZS9QbGFuZSBzY2FsaW5n IG5vdCBzdXBwb3J0ZWQgd2l0aCBJRi1JRCBtb2RlXG4iKTsKIAkJcmV0dXJuIC1FSU5WQUw7CkBA IC01NTI1LDEzICs1NTI1LDEzIEBAIHNrbF91cGRhdGVfc2NhbGVyKHN0cnVjdCBpbnRlbF9jcnRj X3N0YXRlICpjcnRjX3N0YXRlLCBib29sIGZvcmNlX2RldGFjaCwKICAqLwogaW50IHNrbF91cGRh dGVfc2NhbGVyX2NydGMoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnN0YXRlKQogewotCWNvbnN0 IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2RlID0gJnN0YXRlLT5iYXNlLmFk anVzdGVkX21vZGU7CisJY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21v ZGUgPSAmc3RhdGUtPmh3LmFkanVzdGVkX21vZGU7CiAJYm9vbCBuZWVkX3NjYWxlciA9IGZhbHNl OwogCiAJaWYgKHN0YXRlLT5vdXRwdXRfZm9ybWF0ID09IElOVEVMX09VVFBVVF9GT1JNQVRfWUNC Q1I0MjApCiAJCW5lZWRfc2NhbGVyID0gdHJ1ZTsKIAotCXJldHVybiBza2xfdXBkYXRlX3NjYWxl cihzdGF0ZSwgIXN0YXRlLT5iYXNlLmFjdGl2ZSwgU0tMX0NSVENfSU5ERVgsCisJcmV0dXJuIHNr bF91cGRhdGVfc2NhbGVyKHN0YXRlLCAhc3RhdGUtPmh3LmFjdGl2ZSwgU0tMX0NSVENfSU5ERVgs CiAJCQkJICZzdGF0ZS0+c2NhbGVyX3N0YXRlLnNjYWxlcl9pZCwKIAkJCQkgc3RhdGUtPnBpcGVf c3JjX3csIHN0YXRlLT5waXBlX3NyY19oLAogCQkJCSBhZGp1c3RlZF9tb2RlLT5jcnRjX2hkaXNw bGF5LApAQCAtNTg4Myw3ICs1ODgzLDcgQEAgc3RhdGljIGJvb2wgaHN3X3Bvc3RfdXBkYXRlX2Vu YWJsZV9pcHMoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm9sZF9jcnRjX3MKIAkgKiBm b3JjaWJseSBlbmFibGUgSVBTIG9uIHRoZSBmaXJzdCBmYXN0c2V0LgogCSAqLwogCWlmIChuZXdf Y3J0Y19zdGF0ZS0+dXBkYXRlX3BpcGUgJiYKLQkgICAgb2xkX2NydGNfc3RhdGUtPmJhc2UuYWRq dXN0ZWRfbW9kZS5wcml2YXRlX2ZsYWdzICYgSTkxNV9NT0RFX0ZMQUdfSU5IRVJJVEVEKQorCSAg ICBvbGRfY3J0Y19zdGF0ZS0+aHcuYWRqdXN0ZWRfbW9kZS5wcml2YXRlX2ZsYWdzICYgSTkxNV9N T0RFX0ZMQUdfSU5IRVJJVEVEKQogCQlyZXR1cm4gdHJ1ZTsKIAogCXJldHVybiAhb2xkX2NydGNf c3RhdGUtPmlwc19lbmFibGVkOwpAQCAtNTkyNyw3ICs1OTI3LDcgQEAgc3RhdGljIHZvaWQgaW50 ZWxfcG9zdF9wbGFuZV91cGRhdGUoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0 YXRlKQogCiAJaW50ZWxfZnJvbnRidWZmZXJfZmxpcCh0b19pOTE1KGNydGMtPmJhc2UuZGV2KSwg cGlwZV9jb25maWctPmZiX2JpdHMpOwogCi0JaWYgKHBpcGVfY29uZmlnLT51cGRhdGVfd21fcG9z dCAmJiBwaXBlX2NvbmZpZy0+YmFzZS5hY3RpdmUpCisJaWYgKHBpcGVfY29uZmlnLT51cGRhdGVf d21fcG9zdCAmJiBwaXBlX2NvbmZpZy0+aHcuYWN0aXZlKQogCQlpbnRlbF91cGRhdGVfd2F0ZXJt YXJrcyhjcnRjKTsKIAogCWlmIChoc3dfcG9zdF91cGRhdGVfZW5hYmxlX2lwcyhvbGRfY3J0Y19z dGF0ZSwgcGlwZV9jb25maWcpKQpAQCAtNjAwNSw3ICs2MDA1LDcgQEAgc3RhdGljIHZvaWQgaW50 ZWxfcHJlX3BsYW5lX3VwZGF0ZShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqb2xkX2NydGNfc3Rh dGUsCiAJICogZXZlbnQgd2hpY2ggaXMgYWZ0ZXIgdGhlIHZibGFuayBzdGFydCBldmVudCwgc28g d2UgbmVlZCB0byBoYXZlIGEKIAkgKiB3YWl0LWZvci12YmxhbmsgYmV0d2VlbiBkaXNhYmxpbmcg dGhlIHBsYW5lIGFuZCB0aGUgcGlwZS4KIAkgKi8KLQlpZiAoSEFTX0dNQ0goZGV2X3ByaXYpICYm IG9sZF9jcnRjX3N0YXRlLT5iYXNlLmFjdGl2ZSAmJgorCWlmIChIQVNfR01DSChkZXZfcHJpdikg JiYgb2xkX2NydGNfc3RhdGUtPmh3LmFjdGl2ZSAmJgogCSAgICBwaXBlX2NvbmZpZy0+ZGlzYWJs ZV9jeHNyICYmIGludGVsX3NldF9tZW1vcnlfY3hzcihkZXZfcHJpdiwgZmFsc2UpKQogCQlpbnRl bF93YWl0X2Zvcl92YmxhbmsoZGV2X3ByaXYsIGNydGMtPnBpcGUpOwogCkBAIC02MDE3LDcgKzYw MTcsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9wcmVfcGxhbmVfdXBkYXRlKHN0cnVjdCBpbnRlbF9j cnRjX3N0YXRlICpvbGRfY3J0Y19zdGF0ZSwKIAkgKiBXYUN4U1JEaXNhYmxlZEZvclNwcml0ZVNj YWxpbmc6aXZiCiAJICovCiAJaWYgKHBpcGVfY29uZmlnLT5kaXNhYmxlX2xwX3dtICYmIGlsa19k aXNhYmxlX2xwX3dtKGRldikgJiYKLQkgICAgb2xkX2NydGNfc3RhdGUtPmJhc2UuYWN0aXZlKQor CSAgICBvbGRfY3J0Y19zdGF0ZS0+aHcuYWN0aXZlKQogCQlpbnRlbF93YWl0X2Zvcl92Ymxhbmso ZGV2X3ByaXYsIGNydGMtPnBpcGUpOwogCiAJLyoKQEAgLTY4MjEsNyArNjgyMSw3IEBAIHN0YXRp YyB1NjQgZ2V0X2NydGNfcG93ZXJfZG9tYWlucyhzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0 Y19zdGF0ZSkKIAl1NjQgbWFzazsKIAllbnVtIHRyYW5zY29kZXIgdHJhbnNjb2RlciA9IGNydGNf c3RhdGUtPmNwdV90cmFuc2NvZGVyOwogCi0JaWYgKCFjcnRjX3N0YXRlLT5iYXNlLmFjdGl2ZSkK KwlpZiAoIWNydGNfc3RhdGUtPmh3LmFjdGl2ZSkKIAkJcmV0dXJuIDA7CiAKIAltYXNrID0gQklU X1VMTChQT1dFUl9ET01BSU5fUElQRShwaXBlKSk7CkBAIC03MTc4LDggKzcxNzgsOCBAQCBzdGF0 aWMgdm9pZCBpbnRlbF9jb25uZWN0b3JfdmVyaWZ5X3N0YXRlKHN0cnVjdCBpbnRlbF9jcnRjX3N0 YXRlICpjcnRjX3N0YXRlLAogCQlpZiAoIWNydGNfc3RhdGUpCiAJCQlyZXR1cm47CiAKLQkJSTkx NV9TVEFURV9XQVJOKCFjcnRjX3N0YXRlLT5iYXNlLmFjdGl2ZSwKLQkJICAgICAgImNvbm5lY3Rv ciBpcyBhY3RpdmUsIGJ1dCBhdHRhY2hlZCBjcnRjIGlzbid0XG4iKTsKKwkJSTkxNV9TVEFURV9X QVJOKCFjcnRjX3N0YXRlLT5ody5hY3RpdmUsCisJCQkJImNvbm5lY3RvciBpcyBhY3RpdmUsIGJ1 dCBhdHRhY2hlZCBjcnRjIGlzbid0XG4iKTsKIAogCQlpZiAoIWVuY29kZXIgfHwgZW5jb2Rlci0+ dHlwZSA9PSBJTlRFTF9PVVRQVVRfRFBfTVNUKQogCQkJcmV0dXJuOwpAQCAtNzE5MCw4ICs3MTkw LDggQEAgc3RhdGljIHZvaWQgaW50ZWxfY29ubmVjdG9yX3ZlcmlmeV9zdGF0ZShzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKIAkJSTkxNV9TVEFURV9XQVJOKGNvbm5fc3RhdGUt PmNydGMgIT0gZW5jb2Rlci0+YmFzZS5jcnRjLAogCQkJImF0dGFjaGVkIGVuY29kZXIgY3J0YyBk aWZmZXJzIGZyb20gY29ubmVjdG9yIGNydGNcbiIpOwogCX0gZWxzZSB7Ci0JCUk5MTVfU1RBVEVf V0FSTihjcnRjX3N0YXRlICYmIGNydGNfc3RhdGUtPmJhc2UuYWN0aXZlLAotCQkJImF0dGFjaGVk IGNydGMgaXMgYWN0aXZlLCBidXQgY29ubmVjdG9yIGlzbid0XG4iKTsKKwkJSTkxNV9TVEFURV9X QVJOKGNydGNfc3RhdGUgJiYgY3J0Y19zdGF0ZS0+aHcuYWN0aXZlLAorCQkJCSJhdHRhY2hlZCBj cnRjIGlzIGFjdGl2ZSwgYnV0IGNvbm5lY3RvciBpc24ndFxuIik7CiAJCUk5MTVfU1RBVEVfV0FS TighY3J0Y19zdGF0ZSAmJiBjb25uX3N0YXRlLT5iZXN0X2VuY29kZXIsCiAJCQkiYmVzdCBlbmNv ZGVyIHNldCB3aXRob3V0IGNydGMhXG4iKTsKIAl9CkBAIC03MTk5LDcgKzcxOTksNyBAQCBzdGF0 aWMgdm9pZCBpbnRlbF9jb25uZWN0b3JfdmVyaWZ5X3N0YXRlKHN0cnVjdCBpbnRlbF9jcnRjX3N0 YXRlICpjcnRjX3N0YXRlLAogCiBzdGF0aWMgaW50IHBpcGVfcmVxdWlyZWRfZmRpX2xhbmVzKHN0 cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQogewotCWlmIChjcnRjX3N0YXRlLT5i YXNlLmVuYWJsZSAmJiBjcnRjX3N0YXRlLT5oYXNfcGNoX2VuY29kZXIpCisJaWYgKGNydGNfc3Rh dGUtPmh3LmVuYWJsZSAmJiBjcnRjX3N0YXRlLT5oYXNfcGNoX2VuY29kZXIpCiAJCXJldHVybiBj cnRjX3N0YXRlLT5mZGlfbGFuZXM7CiAKIAlyZXR1cm4gMDsKQEAgLTcyODIsNyArNzI4Miw3IEBA IHN0YXRpYyBpbnQgaXJvbmxha2VfZmRpX2NvbXB1dGVfY29uZmlnKHN0cnVjdCBpbnRlbF9jcnRj ICppbnRlbF9jcnRjLAogCQkJCSAgICAgICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9j b25maWcpCiB7CiAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGludGVsX2NydGMtPmJhc2UuZGV2 OwotCWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2RlID0gJnBpcGVf Y29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGU7CisJY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21v ZGUgKmFkanVzdGVkX21vZGUgPSAmcGlwZV9jb25maWctPmh3LmFkanVzdGVkX21vZGU7CiAJaW50 IGxhbmUsIGxpbmtfYncsIGZkaV9kb3RjbG9jaywgcmV0OwogCWJvb2wgbmVlZHNfcmVjb21wdXRl ID0gZmFsc2U7CiAKQEAgLTczOTksNyArNzM5OSw3IEBAIHN0YXRpYyB1MzIgaWxrX3BpcGVfcGl4 ZWxfcmF0ZShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcpCiB7CiAJ dTMyIHBpeGVsX3JhdGU7CiAKLQlwaXhlbF9yYXRlID0gcGlwZV9jb25maWctPmJhc2UuYWRqdXN0 ZWRfbW9kZS5jcnRjX2Nsb2NrOworCXBpeGVsX3JhdGUgPSBwaXBlX2NvbmZpZy0+aHcuYWRqdXN0 ZWRfbW9kZS5jcnRjX2Nsb2NrOwogCiAJLyoKIAkgKiBXZSBvbmx5IHVzZSBJRi1JRCBpbnRlcmxh Y2luZy4gSWYgd2UgZXZlciB1c2UKQEAgLTc0MzcsNyArNzQzNyw3IEBAIHN0YXRpYyB2b2lkIGlu dGVsX2NydGNfY29tcHV0ZV9waXhlbF9yYXRlKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRj X3N0YXRlKQogCWlmIChIQVNfR01DSChkZXZfcHJpdikpCiAJCS8qIEZJWE1FIGNhbGN1bGF0ZSBw cm9wZXIgcGlwZSBwaXhlbCByYXRlIGZvciBHTUNIIHBmaXQgKi8KIAkJY3J0Y19zdGF0ZS0+cGl4 ZWxfcmF0ZSA9Ci0JCQljcnRjX3N0YXRlLT5iYXNlLmFkanVzdGVkX21vZGUuY3J0Y19jbG9jazsK KwkJCWNydGNfc3RhdGUtPmh3LmFkanVzdGVkX21vZGUuY3J0Y19jbG9jazsKIAllbHNlCiAJCWNy dGNfc3RhdGUtPnBpeGVsX3JhdGUgPQogCQkJaWxrX3BpcGVfcGl4ZWxfcmF0ZShjcnRjX3N0YXRl KTsKQEAgLTc0NDcsNyArNzQ0Nyw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfY3J0Y19jb21wdXRlX2Nv bmZpZyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKIAkJCQkgICAgIHN0cnVjdCBpbnRlbF9jcnRj X3N0YXRlICpwaXBlX2NvbmZpZykKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYgPSB0b19pOTE1KGNydGMtPmJhc2UuZGV2KTsKLQljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlf bW9kZSAqYWRqdXN0ZWRfbW9kZSA9ICZwaXBlX2NvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlOwor CWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2RlID0gJnBpcGVfY29u ZmlnLT5ody5hZGp1c3RlZF9tb2RlOwogCWludCBjbG9ja19saW1pdCA9IGRldl9wcml2LT5tYXhf ZG90Y2xrX2ZyZXE7CiAKIAlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDQpIHsKQEAgLTc0NzMs NyArNzQ3Myw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfY3J0Y19jb21wdXRlX2NvbmZpZyhzdHJ1Y3Qg aW50ZWxfY3J0YyAqY3J0YywKIAogCWlmICgocGlwZV9jb25maWctPm91dHB1dF9mb3JtYXQgPT0g SU5URUxfT1VUUFVUX0ZPUk1BVF9ZQ0JDUjQyMCB8fAogCSAgICAgcGlwZV9jb25maWctPm91dHB1 dF9mb3JtYXQgPT0gSU5URUxfT1VUUFVUX0ZPUk1BVF9ZQ0JDUjQ0NCkgJiYKLQkgICAgIHBpcGVf Y29uZmlnLT5iYXNlLmN0bSkgeworCSAgICAgcGlwZV9jb25maWctPmh3LmN0bSkgewogCQkvKgog CQkgKiBUaGVyZSBpcyBvbmx5IG9uZSBwaXBlIENTQyB1bml0IHBlciBwaXBlLCBhbmQgd2UgbmVl ZCB0aGF0CiAJCSAqIGZvciBvdXRwdXQgY29udmVyc2lvbiBmcm9tIFJHQi0+WUNCQ1IuIFNvIGlm IENUTSBpcyBhbHJlYWR5CkBAIC04MTcxLDcgKzgxNzEsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9z ZXRfcGlwZV90aW1pbmdzKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRl KQogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Yy0+YmFz ZS5kZXYpOwogCWVudW0gcGlwZSBwaXBlID0gY3J0Yy0+cGlwZTsKIAllbnVtIHRyYW5zY29kZXIg Y3B1X3RyYW5zY29kZXIgPSBjcnRjX3N0YXRlLT5jcHVfdHJhbnNjb2RlcjsKLQljb25zdCBzdHJ1 Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9ICZjcnRjX3N0YXRlLT5iYXNlLmFk anVzdGVkX21vZGU7CisJY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21v ZGUgPSAmY3J0Y19zdGF0ZS0+aHcuYWRqdXN0ZWRfbW9kZTsKIAl1MzIgY3J0Y192dG90YWwsIGNy dGNfdmJsYW5rX2VuZDsKIAlpbnQgdnN5bmNzaGlmdCA9IDA7CiAKQEAgLTgyNjUsMzkgKzgyNjUs MzkgQEAgc3RhdGljIHZvaWQgaW50ZWxfZ2V0X3BpcGVfdGltaW5ncyhzdHJ1Y3QgaW50ZWxfY3J0 YyAqY3J0YywKIAl1MzIgdG1wOwogCiAJdG1wID0gSTkxNV9SRUFEKEhUT1RBTChjcHVfdHJhbnNj b2RlcikpOwotCXBpcGVfY29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGUuY3J0Y19oZGlzcGxheSA9 ICh0bXAgJiAweGZmZmYpICsgMTsKLQlwaXBlX2NvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlLmNy dGNfaHRvdGFsID0gKCh0bXAgPj4gMTYpICYgMHhmZmZmKSArIDE7CisJcGlwZV9jb25maWctPmh3 LmFkanVzdGVkX21vZGUuY3J0Y19oZGlzcGxheSA9ICh0bXAgJiAweGZmZmYpICsgMTsKKwlwaXBl X2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZS5jcnRjX2h0b3RhbCA9ICgodG1wID4+IDE2KSAmIDB4 ZmZmZikgKyAxOwogCiAJaWYgKCF0cmFuc2NvZGVyX2lzX2RzaShjcHVfdHJhbnNjb2RlcikpIHsK IAkJdG1wID0gSTkxNV9SRUFEKEhCTEFOSyhjcHVfdHJhbnNjb2RlcikpOwotCQlwaXBlX2NvbmZp Zy0+YmFzZS5hZGp1c3RlZF9tb2RlLmNydGNfaGJsYW5rX3N0YXJ0ID0KKwkJcGlwZV9jb25maWct Pmh3LmFkanVzdGVkX21vZGUuY3J0Y19oYmxhbmtfc3RhcnQgPQogCQkJCQkJCSh0bXAgJiAweGZm ZmYpICsgMTsKLQkJcGlwZV9jb25maWctPmJhc2UuYWRqdXN0ZWRfbW9kZS5jcnRjX2hibGFua19l bmQgPQorCQlwaXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZS5jcnRjX2hibGFua19lbmQgPQog CQkJCQkJKCh0bXAgPj4gMTYpICYgMHhmZmZmKSArIDE7CiAJfQogCXRtcCA9IEk5MTVfUkVBRChI U1lOQyhjcHVfdHJhbnNjb2RlcikpOwotCXBpcGVfY29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGUu Y3J0Y19oc3luY19zdGFydCA9ICh0bXAgJiAweGZmZmYpICsgMTsKLQlwaXBlX2NvbmZpZy0+YmFz ZS5hZGp1c3RlZF9tb2RlLmNydGNfaHN5bmNfZW5kID0gKCh0bXAgPj4gMTYpICYgMHhmZmZmKSAr IDE7CisJcGlwZV9jb25maWctPmh3LmFkanVzdGVkX21vZGUuY3J0Y19oc3luY19zdGFydCA9ICh0 bXAgJiAweGZmZmYpICsgMTsKKwlwaXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZS5jcnRjX2hz eW5jX2VuZCA9ICgodG1wID4+IDE2KSAmIDB4ZmZmZikgKyAxOwogCiAJdG1wID0gSTkxNV9SRUFE KFZUT1RBTChjcHVfdHJhbnNjb2RlcikpOwotCXBpcGVfY29uZmlnLT5iYXNlLmFkanVzdGVkX21v ZGUuY3J0Y192ZGlzcGxheSA9ICh0bXAgJiAweGZmZmYpICsgMTsKLQlwaXBlX2NvbmZpZy0+YmFz ZS5hZGp1c3RlZF9tb2RlLmNydGNfdnRvdGFsID0gKCh0bXAgPj4gMTYpICYgMHhmZmZmKSArIDE7 CisJcGlwZV9jb25maWctPmh3LmFkanVzdGVkX21vZGUuY3J0Y192ZGlzcGxheSA9ICh0bXAgJiAw eGZmZmYpICsgMTsKKwlwaXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZS5jcnRjX3Z0b3RhbCA9 ICgodG1wID4+IDE2KSAmIDB4ZmZmZikgKyAxOwogCiAJaWYgKCF0cmFuc2NvZGVyX2lzX2RzaShj cHVfdHJhbnNjb2RlcikpIHsKIAkJdG1wID0gSTkxNV9SRUFEKFZCTEFOSyhjcHVfdHJhbnNjb2Rl cikpOwotCQlwaXBlX2NvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlLmNydGNfdmJsYW5rX3N0YXJ0 ID0KKwkJcGlwZV9jb25maWctPmh3LmFkanVzdGVkX21vZGUuY3J0Y192Ymxhbmtfc3RhcnQgPQog CQkJCQkJCSh0bXAgJiAweGZmZmYpICsgMTsKLQkJcGlwZV9jb25maWctPmJhc2UuYWRqdXN0ZWRf bW9kZS5jcnRjX3ZibGFua19lbmQgPQorCQlwaXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZS5j cnRjX3ZibGFua19lbmQgPQogCQkJCQkJKCh0bXAgPj4gMTYpICYgMHhmZmZmKSArIDE7CiAJfQog CXRtcCA9IEk5MTVfUkVBRChWU1lOQyhjcHVfdHJhbnNjb2RlcikpOwotCXBpcGVfY29uZmlnLT5i YXNlLmFkanVzdGVkX21vZGUuY3J0Y192c3luY19zdGFydCA9ICh0bXAgJiAweGZmZmYpICsgMTsK LQlwaXBlX2NvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlLmNydGNfdnN5bmNfZW5kID0gKCh0bXAg Pj4gMTYpICYgMHhmZmZmKSArIDE7CisJcGlwZV9jb25maWctPmh3LmFkanVzdGVkX21vZGUuY3J0 Y192c3luY19zdGFydCA9ICh0bXAgJiAweGZmZmYpICsgMTsKKwlwaXBlX2NvbmZpZy0+aHcuYWRq dXN0ZWRfbW9kZS5jcnRjX3ZzeW5jX2VuZCA9ICgodG1wID4+IDE2KSAmIDB4ZmZmZikgKyAxOwog CiAJaWYgKGludGVsX3BpcGVfaXNfaW50ZXJsYWNlZChwaXBlX2NvbmZpZykpIHsKLQkJcGlwZV9j b25maWctPmJhc2UuYWRqdXN0ZWRfbW9kZS5mbGFncyB8PSBEUk1fTU9ERV9GTEFHX0lOVEVSTEFD RTsKLQkJcGlwZV9jb25maWctPmJhc2UuYWRqdXN0ZWRfbW9kZS5jcnRjX3Z0b3RhbCArPSAxOwot CQlwaXBlX2NvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlLmNydGNfdmJsYW5rX2VuZCArPSAxOwor CQlwaXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZS5mbGFncyB8PSBEUk1fTU9ERV9GTEFHX0lO VEVSTEFDRTsKKwkJcGlwZV9jb25maWctPmh3LmFkanVzdGVkX21vZGUuY3J0Y192dG90YWwgKz0g MTsKKwkJcGlwZV9jb25maWctPmh3LmFkanVzdGVkX21vZGUuY3J0Y192YmxhbmtfZW5kICs9IDE7 CiAJfQogfQogCkBAIC04MzEyLDI3ICs4MzEyLDI3IEBAIHN0YXRpYyB2b2lkIGludGVsX2dldF9w aXBlX3NyY19zaXplKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAogCXBpcGVfY29uZmlnLT5waXBl X3NyY19oID0gKHRtcCAmIDB4ZmZmZikgKyAxOwogCXBpcGVfY29uZmlnLT5waXBlX3NyY193ID0g KCh0bXAgPj4gMTYpICYgMHhmZmZmKSArIDE7CiAKLQlwaXBlX2NvbmZpZy0+YmFzZS5tb2RlLnZk aXNwbGF5ID0gcGlwZV9jb25maWctPnBpcGVfc3JjX2g7Ci0JcGlwZV9jb25maWctPmJhc2UubW9k ZS5oZGlzcGxheSA9IHBpcGVfY29uZmlnLT5waXBlX3NyY193OworCXBpcGVfY29uZmlnLT5ody5t b2RlLnZkaXNwbGF5ID0gcGlwZV9jb25maWctPnBpcGVfc3JjX2g7CisJcGlwZV9jb25maWctPmh3 Lm1vZGUuaGRpc3BsYXkgPSBwaXBlX2NvbmZpZy0+cGlwZV9zcmNfdzsKIH0KIAogdm9pZCBpbnRl bF9tb2RlX2Zyb21fcGlwZV9jb25maWcoc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUsCiAJ CQkJIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZykKIHsKLQltb2RlLT5oZGlz cGxheSA9IHBpcGVfY29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGUuY3J0Y19oZGlzcGxheTsKLQlt b2RlLT5odG90YWwgPSBwaXBlX2NvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlLmNydGNfaHRvdGFs OwotCW1vZGUtPmhzeW5jX3N0YXJ0ID0gcGlwZV9jb25maWctPmJhc2UuYWRqdXN0ZWRfbW9kZS5j cnRjX2hzeW5jX3N0YXJ0OwotCW1vZGUtPmhzeW5jX2VuZCA9IHBpcGVfY29uZmlnLT5iYXNlLmFk anVzdGVkX21vZGUuY3J0Y19oc3luY19lbmQ7CisJbW9kZS0+aGRpc3BsYXkgPSBwaXBlX2NvbmZp Zy0+aHcuYWRqdXN0ZWRfbW9kZS5jcnRjX2hkaXNwbGF5OworCW1vZGUtPmh0b3RhbCA9IHBpcGVf Y29uZmlnLT5ody5hZGp1c3RlZF9tb2RlLmNydGNfaHRvdGFsOworCW1vZGUtPmhzeW5jX3N0YXJ0 ID0gcGlwZV9jb25maWctPmh3LmFkanVzdGVkX21vZGUuY3J0Y19oc3luY19zdGFydDsKKwltb2Rl LT5oc3luY19lbmQgPSBwaXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZS5jcnRjX2hzeW5jX2Vu ZDsKIAotCW1vZGUtPnZkaXNwbGF5ID0gcGlwZV9jb25maWctPmJhc2UuYWRqdXN0ZWRfbW9kZS5j cnRjX3ZkaXNwbGF5OwotCW1vZGUtPnZ0b3RhbCA9IHBpcGVfY29uZmlnLT5iYXNlLmFkanVzdGVk X21vZGUuY3J0Y192dG90YWw7Ci0JbW9kZS0+dnN5bmNfc3RhcnQgPSBwaXBlX2NvbmZpZy0+YmFz ZS5hZGp1c3RlZF9tb2RlLmNydGNfdnN5bmNfc3RhcnQ7Ci0JbW9kZS0+dnN5bmNfZW5kID0gcGlw ZV9jb25maWctPmJhc2UuYWRqdXN0ZWRfbW9kZS5jcnRjX3ZzeW5jX2VuZDsKKwltb2RlLT52ZGlz cGxheSA9IHBpcGVfY29uZmlnLT5ody5hZGp1c3RlZF9tb2RlLmNydGNfdmRpc3BsYXk7CisJbW9k ZS0+dnRvdGFsID0gcGlwZV9jb25maWctPmh3LmFkanVzdGVkX21vZGUuY3J0Y192dG90YWw7CisJ bW9kZS0+dnN5bmNfc3RhcnQgPSBwaXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZS5jcnRjX3Zz eW5jX3N0YXJ0OworCW1vZGUtPnZzeW5jX2VuZCA9IHBpcGVfY29uZmlnLT5ody5hZGp1c3RlZF9t b2RlLmNydGNfdnN5bmNfZW5kOwogCi0JbW9kZS0+ZmxhZ3MgPSBwaXBlX2NvbmZpZy0+YmFzZS5h ZGp1c3RlZF9tb2RlLmZsYWdzOworCW1vZGUtPmZsYWdzID0gcGlwZV9jb25maWctPmh3LmFkanVz dGVkX21vZGUuZmxhZ3M7CiAJbW9kZS0+dHlwZSA9IERSTV9NT0RFX1RZUEVfRFJJVkVSOwogCi0J bW9kZS0+Y2xvY2sgPSBwaXBlX2NvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlLmNydGNfY2xvY2s7 CisJbW9kZS0+Y2xvY2sgPSBwaXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZS5jcnRjX2Nsb2Nr OwogCiAJbW9kZS0+aHN5bmMgPSBkcm1fbW9kZV9oc3luYyhtb2RlKTsKIAltb2RlLT52cmVmcmVz aCA9IGRybV9tb2RlX3ZyZWZyZXNoKG1vZGUpOwpAQCAtODM3OCw3ICs4Mzc4LDcgQEAgc3RhdGlj IHZvaWQgaTl4eF9zZXRfcGlwZWNvbmYoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNy dGNfc3RhdGUpCiAJCX0KIAl9CiAKLQlpZiAoY3J0Y19zdGF0ZS0+YmFzZS5hZGp1c3RlZF9tb2Rl LmZsYWdzICYgRFJNX01PREVfRkxBR19JTlRFUkxBQ0UpIHsKKwlpZiAoY3J0Y19zdGF0ZS0+aHcu YWRqdXN0ZWRfbW9kZS5mbGFncyAmIERSTV9NT0RFX0ZMQUdfSU5URVJMQUNFKSB7CiAJCWlmIChJ TlRFTF9HRU4oZGV2X3ByaXYpIDwgNCB8fAogCQkgICAgaW50ZWxfY3J0Y19oYXNfdHlwZShjcnRj X3N0YXRlLCBJTlRFTF9PVVRQVVRfU0RWTykpCiAJCQlwaXBlY29uZiB8PSBQSVBFQ09ORl9JTlRF UkxBQ0VfV19GSUVMRF9JTkRJQ0FUSU9OOwpAQCAtODkxMSw3ICs4OTExLDcgQEAgc3RhdGljIGJv b2wgaTl4eF9nZXRfcGlwZV9jb25maWcoc3RydWN0IGludGVsX2NydGMgKmNydGMsCiAJICogYnV0 IGluIGNhc2UgdGhlIHBpcGUgaXMgZW5hYmxlZCB3L28gYW55IHBvcnRzIHdlIG5lZWQgYSBzYW5l CiAJICogZGVmYXVsdC4KIAkgKi8KLQlwaXBlX2NvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlLmNy dGNfY2xvY2sgPQorCXBpcGVfY29uZmlnLT5ody5hZGp1c3RlZF9tb2RlLmNydGNfY2xvY2sgPQog CQlwaXBlX2NvbmZpZy0+cG9ydF9jbG9jayAvIHBpcGVfY29uZmlnLT5waXhlbF9tdWx0aXBsaWVy OwogCiAJcmV0ID0gdHJ1ZTsKQEAgLTk0NTQsNyArOTQ1NCw3IEBAIHN0YXRpYyB2b2lkIGlyb25s YWtlX3NldF9waXBlY29uZihjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0 ZSkKIAlpZiAoY3J0Y19zdGF0ZS0+ZGl0aGVyKQogCQl2YWwgfD0gKFBJUEVDT05GX0RJVEhFUl9F TiB8IFBJUEVDT05GX0RJVEhFUl9UWVBFX1NQKTsKIAotCWlmIChjcnRjX3N0YXRlLT5iYXNlLmFk anVzdGVkX21vZGUuZmxhZ3MgJiBEUk1fTU9ERV9GTEFHX0lOVEVSTEFDRSkKKwlpZiAoY3J0Y19z dGF0ZS0+aHcuYWRqdXN0ZWRfbW9kZS5mbGFncyAmIERSTV9NT0RFX0ZMQUdfSU5URVJMQUNFKQog CQl2YWwgfD0gUElQRUNPTkZfSU5URVJMQUNFRF9JTEs7CiAJZWxzZQogCQl2YWwgfD0gUElQRUNP TkZfUFJPR1JFU1NJVkU7CkBAIC05NDg4LDcgKzk0ODgsNyBAQCBzdGF0aWMgdm9pZCBoYXN3ZWxs X3NldF9waXBlY29uZihjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkK IAlpZiAoSVNfSEFTV0VMTChkZXZfcHJpdikgJiYgY3J0Y19zdGF0ZS0+ZGl0aGVyKQogCQl2YWwg fD0gKFBJUEVDT05GX0RJVEhFUl9FTiB8IFBJUEVDT05GX0RJVEhFUl9UWVBFX1NQKTsKIAotCWlm IChjcnRjX3N0YXRlLT5iYXNlLmFkanVzdGVkX21vZGUuZmxhZ3MgJiBEUk1fTU9ERV9GTEFHX0lO VEVSTEFDRSkKKwlpZiAoY3J0Y19zdGF0ZS0+aHcuYWRqdXN0ZWRfbW9kZS5mbGFncyAmIERSTV9N T0RFX0ZMQUdfSU5URVJMQUNFKQogCQl2YWwgfD0gUElQRUNPTkZfSU5URVJMQUNFRF9JTEs7CiAJ ZWxzZQogCQl2YWwgfD0gUElQRUNPTkZfUFJPR1JFU1NJVkU7CkBAIC0xMTU3MCw3ICsxMTU3MCw3 IEBAIHN0YXRpYyB2b2lkIGlyb25sYWtlX3BjaF9jbG9ja19nZXQoc3RydWN0IGludGVsX2NydGMg KmNydGMsCiAJICogd2UgbWF5IG5lZWQgc29tZSBpZGVhIGZvciB0aGUgZG90Y2xvY2sgYW55d2F5 LgogCSAqIENhbGN1bGF0ZSBvbmUgYmFzZWQgb24gdGhlIEZESSBjb25maWd1cmF0aW9uLgogCSAq LwotCXBpcGVfY29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGUuY3J0Y19jbG9jayA9CisJcGlwZV9j b25maWctPmh3LmFkanVzdGVkX21vZGUuY3J0Y19jbG9jayA9CiAJCWludGVsX2RvdGNsb2NrX2Nh bGN1bGF0ZShpbnRlbF9mZGlfbGlua19mcmVxKGRldl9wcml2LCBwaXBlX2NvbmZpZyksCiAJCQkJ CSAmcGlwZV9jb25maWctPmZkaV9tX24pOwogfQpAQCAtMTE2NzUsOCArMTE2NzUsOCBAQCBpbnQg aW50ZWxfcGxhbmVfYXRvbWljX2NhbGNfY2hhbmdlcyhjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19z dGF0ZSAqb2xkX2NydGNfc3RhdAogCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRl bF9wbGFuZShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFuZSk7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRjLT5iYXNlLmRldik7CiAJYm9vbCBtb2RlX2NoYW5n ZWQgPSBuZWVkc19tb2Rlc2V0KGNydGNfc3RhdGUpOwotCWJvb2wgd2FzX2NydGNfZW5hYmxlZCA9 IG9sZF9jcnRjX3N0YXRlLT5iYXNlLmFjdGl2ZTsKLQlib29sIGlzX2NydGNfZW5hYmxlZCA9IGNy dGNfc3RhdGUtPmJhc2UuYWN0aXZlOworCWJvb2wgd2FzX2NydGNfZW5hYmxlZCA9IG9sZF9jcnRj X3N0YXRlLT5ody5hY3RpdmU7CisJYm9vbCBpc19jcnRjX2VuYWJsZWQgPSBjcnRjX3N0YXRlLT5o dy5hY3RpdmU7CiAJYm9vbCB0dXJuX29mZiwgdHVybl9vbiwgdmlzaWJsZSwgd2FzX3Zpc2libGU7 CiAJaW50IHJldDsKIApAQCAtMTE5NTIsOCArMTE5NTIsOCBAQCBzdGF0aWMgaW50IGljbF9hZGRf c3luY19tb2RlX2NydGNzKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQogCQkJ Y29udGludWU7CiAJCWlmICghY29ubmVjdG9yLT5oYXNfdGlsZSkKIAkJCWNvbnRpbnVlOwotCQlp ZiAoY3J0Y19zdGF0ZS0+YmFzZS5tb2RlLmhkaXNwbGF5ICE9IGNvbm5lY3Rvci0+dGlsZV9oX3Np emUgfHwKLQkJICAgIGNydGNfc3RhdGUtPmJhc2UubW9kZS52ZGlzcGxheSAhPSBjb25uZWN0b3It PnRpbGVfdl9zaXplKQorCQlpZiAoY3J0Y19zdGF0ZS0+aHcubW9kZS5oZGlzcGxheSAhPSBjb25u ZWN0b3ItPnRpbGVfaF9zaXplIHx8CisJCSAgICBjcnRjX3N0YXRlLT5ody5tb2RlLnZkaXNwbGF5 ICE9IGNvbm5lY3Rvci0+dGlsZV92X3NpemUpCiAJCQlyZXR1cm4gMDsKIAkJaWYgKGNvbm5lY3Rv ci0+dGlsZV9oX2xvYyA9PSBjb25uZWN0b3ItPm51bV9oX3RpbGUgLSAxICYmCiAJCSAgICBjb25u ZWN0b3ItPnRpbGVfdl9sb2MgPT0gY29ubmVjdG9yLT5udW1fdl90aWxlIC0gMSkKQEAgLTEyMDE5 LDEwICsxMjAxOSwxMCBAQCBzdGF0aWMgaW50IGludGVsX2NydGNfYXRvbWljX2NoZWNrKHN0cnVj dCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlLAogCWludCByZXQ7CiAKIAlpZiAoSU5URUxfR0VO KGRldl9wcml2KSA8IDUgJiYgIUlTX0c0WChkZXZfcHJpdikgJiYKLQkgICAgbW9kZV9jaGFuZ2Vk ICYmICFjcnRjX3N0YXRlLT5iYXNlLmFjdGl2ZSkKKwkgICAgbW9kZV9jaGFuZ2VkICYmICFjcnRj X3N0YXRlLT5ody5hY3RpdmUpCiAJCWNydGNfc3RhdGUtPnVwZGF0ZV93bV9wb3N0ID0gdHJ1ZTsK IAotCWlmIChtb2RlX2NoYW5nZWQgJiYgY3J0Y19zdGF0ZS0+YmFzZS5lbmFibGUgJiYKKwlpZiAo bW9kZV9jaGFuZ2VkICYmIGNydGNfc3RhdGUtPmh3LmVuYWJsZSAmJgogCSAgICBkZXZfcHJpdi0+ ZGlzcGxheS5jcnRjX2NvbXB1dGVfY2xvY2sgJiYKIAkgICAgIVdBUk5fT04oY3J0Y19zdGF0ZS0+ c2hhcmVkX2RwbGwpKSB7CiAJCXJldCA9IGRldl9wcml2LT5kaXNwbGF5LmNydGNfY29tcHV0ZV9j bG9jayhjcnRjLCBjcnRjX3N0YXRlKTsKQEAgLTEyMzE4LDE0ICsxMjMxOCwxNCBAQCBzdGF0aWMg dm9pZCBpbnRlbF9kdW1wX3BpcGVfY29uZmlnKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpwaXBlX2NvbmZpZywKIAogCURSTV9ERUJVR19LTVMoIltDUlRDOiVkOiVzXSBlbmFibGU6ICVz ICVzXG4iLAogCQkgICAgICBjcnRjLT5iYXNlLmJhc2UuaWQsIGNydGMtPmJhc2UubmFtZSwKLQkJ ICAgICAgeWVzbm8ocGlwZV9jb25maWctPmJhc2UuZW5hYmxlKSwgY29udGV4dCk7CisJCSAgICAg IHllc25vKHBpcGVfY29uZmlnLT5ody5lbmFibGUpLCBjb250ZXh0KTsKIAotCWlmICghcGlwZV9j b25maWctPmJhc2UuZW5hYmxlKQorCWlmICghcGlwZV9jb25maWctPmh3LmVuYWJsZSkKIAkJZ290 byBkdW1wX3BsYW5lczsKIAogCXNucHJpbnRmX291dHB1dF90eXBlcyhidWYsIHNpemVvZihidWYp LCBwaXBlX2NvbmZpZy0+b3V0cHV0X3R5cGVzKTsKIAlEUk1fREVCVUdfS01TKCJhY3RpdmU6ICVz LCBvdXRwdXRfdHlwZXM6ICVzICgweCV4KSwgb3V0cHV0IGZvcm1hdDogJXNcbiIsCi0JCSAgICAg IHllc25vKHBpcGVfY29uZmlnLT5iYXNlLmFjdGl2ZSksCisJCSAgICAgIHllc25vKHBpcGVfY29u ZmlnLT5ody5hY3RpdmUpLAogCQkgICAgICBidWYsIHBpcGVfY29uZmlnLT5vdXRwdXRfdHlwZXMs CiAJCSAgICAgIG91dHB1dF9mb3JtYXRzKHBpcGVfY29uZmlnLT5vdXRwdXRfZm9ybWF0KSk7CiAK QEAgLTEyMzY1LDEwICsxMjM2NSwxMCBAQCBzdGF0aWMgdm9pZCBpbnRlbF9kdW1wX3BpcGVfY29u ZmlnKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZywKIAkJaW50ZWxf ZHVtcF9pbmZvZnJhbWUoZGV2X3ByaXYsICZwaXBlX2NvbmZpZy0+aW5mb2ZyYW1lcy5oZG1pKTsK IAogCURSTV9ERUJVR19LTVMoInJlcXVlc3RlZCBtb2RlOlxuIik7Ci0JZHJtX21vZGVfZGVidWdf cHJpbnRtb2RlbGluZSgmcGlwZV9jb25maWctPmJhc2UubW9kZSk7CisJZHJtX21vZGVfZGVidWdf cHJpbnRtb2RlbGluZSgmcGlwZV9jb25maWctPmh3Lm1vZGUpOwogCURSTV9ERUJVR19LTVMoImFk anVzdGVkIG1vZGU6XG4iKTsKLQlkcm1fbW9kZV9kZWJ1Z19wcmludG1vZGVsaW5lKCZwaXBlX2Nv bmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlKTsKLQlpbnRlbF9kdW1wX2NydGNfdGltaW5ncygmcGlw ZV9jb25maWctPmJhc2UuYWRqdXN0ZWRfbW9kZSk7CisJZHJtX21vZGVfZGVidWdfcHJpbnRtb2Rl bGluZSgmcGlwZV9jb25maWctPmh3LmFkanVzdGVkX21vZGUpOworCWludGVsX2R1bXBfY3J0Y190 aW1pbmdzKCZwaXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZSk7CiAJRFJNX0RFQlVHX0tNUygi cG9ydCBjbG9jazogJWQsIHBpcGUgc3JjIHNpemU6ICVkeCVkLCBwaXhlbCByYXRlICVkXG4iLAog CQkgICAgICBwaXBlX2NvbmZpZy0+cG9ydF9jbG9jaywKIAkJICAgICAgcGlwZV9jb25maWctPnBp cGVfc3JjX3csIHBpcGVfY29uZmlnLT5waXBlX3NyY19oLApAQCAtMTI1NTAsMTMgKzEyNTUwLDEz IEBAIGludGVsX21vZGVzZXRfcGlwZV9jb25maWcoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBp cGVfY29uZmlnKQogCSAqIHBvc2l0aXZlIG9yIG5lZ2F0aXZlIHBvbGFyaXR5IGlzIHJlcXVlc3Rl ZCwgdHJlYXQgdGhpcyBhcyBtZWFuaW5nCiAJICogbmVnYXRpdmUgcG9sYXJpdHkuCiAJICovCi0J aWYgKCEocGlwZV9jb25maWctPmJhc2UuYWRqdXN0ZWRfbW9kZS5mbGFncyAmCisJaWYgKCEocGlw ZV9jb25maWctPmh3LmFkanVzdGVkX21vZGUuZmxhZ3MgJgogCSAgICAgIChEUk1fTU9ERV9GTEFH X1BIU1lOQyB8IERSTV9NT0RFX0ZMQUdfTkhTWU5DKSkpCi0JCXBpcGVfY29uZmlnLT5iYXNlLmFk anVzdGVkX21vZGUuZmxhZ3MgfD0gRFJNX01PREVfRkxBR19OSFNZTkM7CisJCXBpcGVfY29uZmln LT5ody5hZGp1c3RlZF9tb2RlLmZsYWdzIHw9IERSTV9NT0RFX0ZMQUdfTkhTWU5DOwogCi0JaWYg KCEocGlwZV9jb25maWctPmJhc2UuYWRqdXN0ZWRfbW9kZS5mbGFncyAmCisJaWYgKCEocGlwZV9j b25maWctPmh3LmFkanVzdGVkX21vZGUuZmxhZ3MgJgogCSAgICAgIChEUk1fTU9ERV9GTEFHX1BW U1lOQyB8IERSTV9NT0RFX0ZMQUdfTlZTWU5DKSkpCi0JCXBpcGVfY29uZmlnLT5iYXNlLmFkanVz dGVkX21vZGUuZmxhZ3MgfD0gRFJNX01PREVfRkxBR19OVlNZTkM7CisJCXBpcGVfY29uZmlnLT5o dy5hZGp1c3RlZF9tb2RlLmZsYWdzIHw9IERSTV9NT0RFX0ZMQUdfTlZTWU5DOwogCiAJcmV0ID0g Y29tcHV0ZV9iYXNlbGluZV9waXBlX2JwcCh0b19pbnRlbF9jcnRjKGNydGMpLAogCQkJCQlwaXBl X2NvbmZpZyk7CkBAIC0xMjU3Myw3ICsxMjU3Myw3IEBAIGludGVsX21vZGVzZXRfcGlwZV9jb25m aWcoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnKQogCSAqIGNvbXB1dGF0aW9u IHRvIGNsZWFybHkgZGlzdGluZ3Vpc2ggaXQgZnJvbSB0aGUgYWRqdXN0ZWQgbW9kZSwgd2hpY2gK IAkgKiBjYW4gYmUgY2hhbmdlZCBieSB0aGUgY29ubmVjdG9ycyBpbiB0aGUgYmVsb3cgcmV0cnkg bG9vcC4KIAkgKi8KLQlkcm1fbW9kZV9nZXRfaHZfdGltaW5nKCZwaXBlX2NvbmZpZy0+YmFzZS5t b2RlLAorCWRybV9tb2RlX2dldF9odl90aW1pbmcoJnBpcGVfY29uZmlnLT5ody5tb2RlLAogCQkJ ICAgICAgICZwaXBlX2NvbmZpZy0+cGlwZV9zcmNfdywKIAkJCSAgICAgICAmcGlwZV9jb25maWct PnBpcGVfc3JjX2gpOwogCkBAIC0xMjYwNiw3ICsxMjYwNiw3IEBAIGludGVsX21vZGVzZXRfcGlw ZV9jb25maWcoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnKQogCXBpcGVfY29u ZmlnLT5waXhlbF9tdWx0aXBsaWVyID0gMTsKIAogCS8qIEZpbGwgaW4gZGVmYXVsdCBjcnRjIHRp bWluZ3MsIGFsbG93IGVuY29kZXJzIHRvIG92ZXJ3cml0ZSB0aGVtLiAqLwotCWRybV9tb2RlX3Nl dF9jcnRjaW5mbygmcGlwZV9jb25maWctPmJhc2UuYWRqdXN0ZWRfbW9kZSwKKwlkcm1fbW9kZV9z ZXRfY3J0Y2luZm8oJnBpcGVfY29uZmlnLT5ody5hZGp1c3RlZF9tb2RlLAogCQkJICAgICAgQ1JU Q19TVEVSRU9fRE9VQkxFKTsKIAogCS8qIFNldCB0aGUgY3J0Y19zdGF0ZSBkZWZhdWx0cyBmb3Ig dHJhbnNfcG9ydF9zeW5jICovCkBAIC0xMjY0MCw3ICsxMjY0MCw3IEBAIGludGVsX21vZGVzZXRf cGlwZV9jb25maWcoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnKQogCS8qIFNl dCBkZWZhdWx0IHBvcnQgY2xvY2sgaWYgbm90IG92ZXJ3cml0dGVuIGJ5IHRoZSBlbmNvZGVyLiBO ZWVkcyB0byBiZQogCSAqIGRvbmUgYWZ0ZXJ3YXJkcyBpbiBjYXNlIHRoZSBlbmNvZGVyIGFkanVz dHMgdGhlIG1vZGUuICovCiAJaWYgKCFwaXBlX2NvbmZpZy0+cG9ydF9jbG9jaykKLQkJcGlwZV9j b25maWctPnBvcnRfY2xvY2sgPSBwaXBlX2NvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlLmNydGNf Y2xvY2sKKwkJcGlwZV9jb25maWctPnBvcnRfY2xvY2sgPSBwaXBlX2NvbmZpZy0+aHcuYWRqdXN0 ZWRfbW9kZS5jcnRjX2Nsb2NrCiAJCQkqIHBpcGVfY29uZmlnLT5waXhlbF9tdWx0aXBsaWVyOwog CiAJcmV0ID0gaW50ZWxfY3J0Y19jb21wdXRlX2NvbmZpZyh0b19pbnRlbF9jcnRjKGNydGMpLCBw aXBlX2NvbmZpZyk7CkBAIC0xMjgxMiw4ICsxMjgxMiw4IEBAIGludGVsX3BpcGVfY29uZmlnX2Nv bXBhcmUoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmN1cnJlbnRfY29uZmlnLAogCWJv b2wgcmV0ID0gdHJ1ZTsKIAl1MzIgYnBfZ2FtbWEgPSAwOwogCWJvb2wgZml4dXBfaW5oZXJpdGVk ID0gZmFzdHNldCAmJgotCQkoY3VycmVudF9jb25maWctPmJhc2UubW9kZS5wcml2YXRlX2ZsYWdz ICYgSTkxNV9NT0RFX0ZMQUdfSU5IRVJJVEVEKSAmJgotCQkhKHBpcGVfY29uZmlnLT5iYXNlLm1v ZGUucHJpdmF0ZV9mbGFncyAmIEk5MTVfTU9ERV9GTEFHX0lOSEVSSVRFRCk7CisJCShjdXJyZW50 X2NvbmZpZy0+aHcubW9kZS5wcml2YXRlX2ZsYWdzICYgSTkxNV9NT0RFX0ZMQUdfSU5IRVJJVEVE KSAmJgorCQkhKHBpcGVfY29uZmlnLT5ody5tb2RlLnByaXZhdGVfZmxhZ3MgJiBJOTE1X01PREVf RkxBR19JTkhFUklURUQpOwogCiAJaWYgKGZpeHVwX2luaGVyaXRlZCAmJiAhZmFzdGJvb3RfZW5h YmxlZChkZXZfcHJpdikpIHsKIAkJRFJNX0RFQlVHX0tNUygiaW5pdGlhbCBtb2Rlc2V0IGFuZCBm YXN0Ym9vdCBub3Qgc2V0XG4iKTsKQEAgLTEzMTU5LDcgKzEzMTU5LDcgQEAgc3RhdGljIHZvaWQg aW50ZWxfcGlwZV9jb25maWdfc2FuaXR5X2NoZWNrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiwKIAlpZiAocGlwZV9jb25maWctPmhhc19wY2hfZW5jb2RlcikgewogCQlpbnQgZmRp X2RvdGNsb2NrID0gaW50ZWxfZG90Y2xvY2tfY2FsY3VsYXRlKGludGVsX2ZkaV9saW5rX2ZyZXEo ZGV2X3ByaXYsIHBpcGVfY29uZmlnKSwKIAkJCQkJCQkgICAgJnBpcGVfY29uZmlnLT5mZGlfbV9u KTsKLQkJaW50IGRvdGNsb2NrID0gcGlwZV9jb25maWctPmJhc2UuYWRqdXN0ZWRfbW9kZS5jcnRj X2Nsb2NrOworCQlpbnQgZG90Y2xvY2sgPSBwaXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZS5j cnRjX2Nsb2NrOwogCiAJCS8qCiAJCSAqIEZESSBhbHJlYWR5IHByb3ZpZGVkIG9uZSBpZGVhIGZv ciB0aGUgZG90Y2xvY2suCkBAIC0xMzE4OCw3ICsxMzE4OCw3IEBAIHN0YXRpYyB2b2lkIHZlcmlm eV93bV9zdGF0ZShzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKIAlpbnQgbGV2ZWwsIG1heF9sZXZl bCA9IGlsa193bV9tYXhfbGV2ZWwoZGV2X3ByaXYpOwogCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxh bmU7CiAKLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDkgfHwgIW5ld19jcnRjX3N0YXRlLT5i YXNlLmFjdGl2ZSkKKwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDkgfHwgIW5ld19jcnRjX3N0 YXRlLT5ody5hY3RpdmUpCiAJCXJldHVybjsKIAogCWh3ID0ga3phbGxvYyhzaXplb2YoKmh3KSwg R0ZQX0tFUk5FTCk7CkBAIC0xMzM3MiwyMyArMTMzNzIsMjYgQEAgdmVyaWZ5X2NydGNfc3RhdGUo c3RydWN0IGludGVsX2NydGMgKmNydGMsCiAKIAkvKiB3ZSBrZWVwIGJvdGggcGlwZXMgZW5hYmxl ZCBvbiA4MzAgKi8KIAlpZiAoSVNfSTgzMChkZXZfcHJpdikpCi0JCWFjdGl2ZSA9IG5ld19jcnRj X3N0YXRlLT5iYXNlLmFjdGl2ZTsKKwkJYWN0aXZlID0gbmV3X2NydGNfc3RhdGUtPmh3LmFjdGl2 ZTsKIAotCUk5MTVfU1RBVEVfV0FSTihuZXdfY3J0Y19zdGF0ZS0+YmFzZS5hY3RpdmUgIT0gYWN0 aXZlLAotCSAgICAgImNydGMgYWN0aXZlIHN0YXRlIGRvZXNuJ3QgbWF0Y2ggd2l0aCBodyBzdGF0 ZSAiCi0JICAgICAiKGV4cGVjdGVkICVpLCBmb3VuZCAlaSlcbiIsIG5ld19jcnRjX3N0YXRlLT5i YXNlLmFjdGl2ZSwgYWN0aXZlKTsKKwlJOTE1X1NUQVRFX1dBUk4obmV3X2NydGNfc3RhdGUtPmh3 LmFjdGl2ZSAhPSBhY3RpdmUsCisJCQkiY3J0YyBhY3RpdmUgc3RhdGUgZG9lc24ndCBtYXRjaCB3 aXRoIGh3IHN0YXRlICIKKwkJCSIoZXhwZWN0ZWQgJWksIGZvdW5kICVpKVxuIiwKKwkJCW5ld19j cnRjX3N0YXRlLT5ody5hY3RpdmUsIGFjdGl2ZSk7CiAKLQlJOTE1X1NUQVRFX1dBUk4oY3J0Yy0+ YWN0aXZlICE9IG5ld19jcnRjX3N0YXRlLT5iYXNlLmFjdGl2ZSwKLQkgICAgICJ0cmFuc2l0aW9u YWwgYWN0aXZlIHN0YXRlIGRvZXMgbm90IG1hdGNoIGF0b21pYyBodyBzdGF0ZSAiCi0JICAgICAi KGV4cGVjdGVkICVpLCBmb3VuZCAlaSlcbiIsIG5ld19jcnRjX3N0YXRlLT5iYXNlLmFjdGl2ZSwg Y3J0Yy0+YWN0aXZlKTsKKwlJOTE1X1NUQVRFX1dBUk4oY3J0Yy0+YWN0aXZlICE9IG5ld19jcnRj X3N0YXRlLT5ody5hY3RpdmUsCisJCQkidHJhbnNpdGlvbmFsIGFjdGl2ZSBzdGF0ZSBkb2VzIG5v dCBtYXRjaCBhdG9taWMgaHcgc3RhdGUgIgorCQkJIihleHBlY3RlZCAlaSwgZm91bmQgJWkpXG4i LAorCQkJbmV3X2NydGNfc3RhdGUtPmh3LmFjdGl2ZSwgY3J0Yy0+YWN0aXZlKTsKIAogCWZvcl9l YWNoX2VuY29kZXJfb25fY3J0YyhkZXYsICZjcnRjLT5iYXNlLCBlbmNvZGVyKSB7CiAJCWVudW0g cGlwZSBwaXBlOwogCiAJCWFjdGl2ZSA9IGVuY29kZXItPmdldF9od19zdGF0ZShlbmNvZGVyLCAm cGlwZSk7Ci0JCUk5MTVfU1RBVEVfV0FSTihhY3RpdmUgIT0gbmV3X2NydGNfc3RhdGUtPmJhc2Uu YWN0aXZlLAotCQkJIltFTkNPREVSOiVpXSBhY3RpdmUgJWkgd2l0aCBjcnRjIGFjdGl2ZSAlaVxu IiwKLQkJCWVuY29kZXItPmJhc2UuYmFzZS5pZCwgYWN0aXZlLCBuZXdfY3J0Y19zdGF0ZS0+YmFz ZS5hY3RpdmUpOworCQlJOTE1X1NUQVRFX1dBUk4oYWN0aXZlICE9IG5ld19jcnRjX3N0YXRlLT5o dy5hY3RpdmUsCisJCQkJIltFTkNPREVSOiVpXSBhY3RpdmUgJWkgd2l0aCBjcnRjIGFjdGl2ZSAl aVxuIiwKKwkJCQllbmNvZGVyLT5iYXNlLmJhc2UuaWQsIGFjdGl2ZSwKKwkJCQluZXdfY3J0Y19z dGF0ZS0+aHcuYWN0aXZlKTsKIAogCQlJOTE1X1NUQVRFX1dBUk4oYWN0aXZlICYmIGNydGMtPnBp cGUgIT0gcGlwZSwKIAkJCQkiRW5jb2RlciBjb25uZWN0ZWQgdG8gd3JvbmcgcGlwZSAlY1xuIiwK QEAgLTEzNDAwLDcgKzEzNDAzLDcgQEAgdmVyaWZ5X2NydGNfc3RhdGUoc3RydWN0IGludGVsX2Ny dGMgKmNydGMsCiAKIAlpbnRlbF9jcnRjX2NvbXB1dGVfcGl4ZWxfcmF0ZShwaXBlX2NvbmZpZyk7 CiAKLQlpZiAoIW5ld19jcnRjX3N0YXRlLT5iYXNlLmFjdGl2ZSkKKwlpZiAoIW5ld19jcnRjX3N0 YXRlLT5ody5hY3RpdmUpCiAJCXJldHVybjsKIAogCWludGVsX3BpcGVfY29uZmlnX3Nhbml0eV9j aGVjayhkZXZfcHJpdiwgcGlwZV9jb25maWcpOwpAQCAtMTM0NjIsNyArMTM0NjUsNyBAQCB2ZXJp Znlfc2luZ2xlX2RwbGxfc3RhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAog CiAJY3J0Y19tYXNrID0gZHJtX2NydGNfbWFzaygmY3J0Yy0+YmFzZSk7CiAKLQlpZiAobmV3X2Ny dGNfc3RhdGUtPmJhc2UuYWN0aXZlKQorCWlmIChuZXdfY3J0Y19zdGF0ZS0+aHcuYWN0aXZlKQog CQlJOTE1X1NUQVRFX1dBUk4oIShwbGwtPmFjdGl2ZV9tYXNrICYgY3J0Y19tYXNrKSwKIAkJCQki cGxsIGFjdGl2ZSBtaXNtYXRjaCAoZXhwZWN0ZWQgcGlwZSAlYyBpbiBhY3RpdmUgbWFzayAweCUw MngpXG4iLAogCQkJCXBpcGVfbmFtZShkcm1fY3J0Y19pbmRleCgmY3J0Yy0+YmFzZSkpLCBwbGwt PmFjdGl2ZV9tYXNrKTsKQEAgLTEzNTQ0LDcgKzEzNTQ3LDcgQEAgaW50ZWxfY3J0Y191cGRhdGVf YWN0aXZlX3RpbWluZ3MoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUp CiAJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPmJh c2UuY3J0Yyk7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShj cnRjLT5iYXNlLmRldik7CiAJY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVk X21vZGUgPQotCQkmY3J0Y19zdGF0ZS0+YmFzZS5hZGp1c3RlZF9tb2RlOworCQkmY3J0Y19zdGF0 ZS0+aHcuYWRqdXN0ZWRfbW9kZTsKIAogCWRybV9jYWxjX3RpbWVzdGFtcGluZ19jb25zdGFudHMo JmNydGMtPmJhc2UsIGFkanVzdGVkX21vZGUpOwogCkBAIC0xMzYyNiw3ICsxMzYyOSw3IEBAIHN0 YXRpYyBpbnQgaGFzd2VsbF9tb2RlX3NldF9wbGFuZXNfd29ya2Fyb3VuZChzdHJ1Y3QgaW50ZWxf YXRvbWljX3N0YXRlICpzdGF0ZSkKIAogCS8qIGxvb2sgYXQgYWxsIGNydGMncyB0aGF0IGFyZSBn b2luZyB0byBiZSBlbmFibGVkIGluIGR1cmluZyBtb2Rlc2V0ICovCiAJZm9yX2VhY2hfbmV3X2lu dGVsX2NydGNfaW5fc3RhdGUoc3RhdGUsIGNydGMsIGNydGNfc3RhdGUsIGkpIHsKLQkJaWYgKCFj cnRjX3N0YXRlLT5iYXNlLmFjdGl2ZSB8fAorCQlpZiAoIWNydGNfc3RhdGUtPmh3LmFjdGl2ZSB8 fAogCQkgICAgIW5lZWRzX21vZGVzZXQoY3J0Y19zdGF0ZSkpCiAJCQljb250aW51ZTsKIApAQCAt MTM2NTEsNyArMTM2NTQsNyBAQCBzdGF0aWMgaW50IGhhc3dlbGxfbW9kZV9zZXRfcGxhbmVzX3dv cmthcm91bmQoc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUpCiAKIAkJY3J0Y19zdGF0 ZS0+aHN3X3dvcmthcm91bmRfcGlwZSA9IElOVkFMSURfUElQRTsKIAotCQlpZiAoIWNydGNfc3Rh dGUtPmJhc2UuYWN0aXZlIHx8CisJCWlmICghY3J0Y19zdGF0ZS0+aHcuYWN0aXZlIHx8CiAJCSAg ICBuZWVkc19tb2Rlc2V0KGNydGNfc3RhdGUpKQogCQkJY29udGludWU7CiAKQEAgLTEzNjk0LDEy ICsxMzY5NywxMiBAQCBzdGF0aWMgaW50IGludGVsX21vZGVzZXRfY2hlY2tzKHN0cnVjdCBpbnRl bF9hdG9taWNfc3RhdGUgKnN0YXRlKQogCiAJZm9yX2VhY2hfb2xkbmV3X2ludGVsX2NydGNfaW5f c3RhdGUoc3RhdGUsIGNydGMsIG9sZF9jcnRjX3N0YXRlLAogCQkJCQkgICAgbmV3X2NydGNfc3Rh dGUsIGkpIHsKLQkJaWYgKG5ld19jcnRjX3N0YXRlLT5iYXNlLmFjdGl2ZSkKKwkJaWYgKG5ld19j cnRjX3N0YXRlLT5ody5hY3RpdmUpCiAJCQlzdGF0ZS0+YWN0aXZlX3BpcGVzIHw9IEJJVChjcnRj LT5waXBlKTsKIAkJZWxzZQogCQkJc3RhdGUtPmFjdGl2ZV9waXBlcyAmPSB+QklUKGNydGMtPnBp cGUpOwogCi0JCWlmIChvbGRfY3J0Y19zdGF0ZS0+YmFzZS5hY3RpdmUgIT0gbmV3X2NydGNfc3Rh dGUtPmJhc2UuYWN0aXZlKQorCQlpZiAob2xkX2NydGNfc3RhdGUtPmh3LmFjdGl2ZSAhPSBuZXdf Y3J0Y19zdGF0ZS0+aHcuYWN0aXZlKQogCQkJc3RhdGUtPmFjdGl2ZV9waXBlX2NoYW5nZXMgfD0g QklUKGNydGMtPnBpcGUpOwogCX0KIApAQCAtMTM4MDksOCArMTM4MTIsOCBAQCBzdGF0aWMgaW50 IGludGVsX2F0b21pY19jaGVjayhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCS8qIENhdGNoIEk5 MTVfTU9ERV9GTEFHX0lOSEVSSVRFRCAqLwogCWZvcl9lYWNoX29sZG5ld19pbnRlbF9jcnRjX2lu X3N0YXRlKHN0YXRlLCBjcnRjLCBvbGRfY3J0Y19zdGF0ZSwKIAkJCQkJICAgIG5ld19jcnRjX3N0 YXRlLCBpKSB7Ci0JCWlmIChuZXdfY3J0Y19zdGF0ZS0+YmFzZS5tb2RlLnByaXZhdGVfZmxhZ3Mg IT0KLQkJICAgIG9sZF9jcnRjX3N0YXRlLT5iYXNlLm1vZGUucHJpdmF0ZV9mbGFncykKKwkJaWYg KG5ld19jcnRjX3N0YXRlLT5ody5tb2RlLnByaXZhdGVfZmxhZ3MgIT0KKwkJICAgIG9sZF9jcnRj X3N0YXRlLT5ody5tb2RlLnByaXZhdGVfZmxhZ3MpCiAJCQluZXdfY3J0Y19zdGF0ZS0+YmFzZS5t b2RlX2NoYW5nZWQgPSB0cnVlOwogCX0KIApAQCAtMTM5MzksNyArMTM5NDIsNyBAQCBzdGF0aWMg dm9pZCBpbnRlbF9waXBlX2Zhc3RzZXQoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm9s ZF9jcnRjX3N0YXRlLAogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5 MTUoY3J0Yy0+YmFzZS5kZXYpOwogCiAJLyogZHJtX2F0b21pY19oZWxwZXJfdXBkYXRlX2xlZ2Fj eV9tb2Rlc2V0X3N0YXRlIG1pZ2h0IG5vdCBiZSBjYWxsZWQuICovCi0JY3J0Yy0+YmFzZS5tb2Rl ID0gbmV3X2NydGNfc3RhdGUtPmJhc2UubW9kZTsKKwljcnRjLT5iYXNlLm1vZGUgPSBuZXdfY3J0 Y19zdGF0ZS0+aHcubW9kZTsKIAogCS8qCiAJICogVXBkYXRlIHBpcGUgc2l6ZSBhbmQgYWRqdXN0 IGZpdHRlciBpZiBuZWVkZWQ6IHRoZSByZWFzb24gZm9yIHRoaXMgaXMKQEAgLTE0MDQ4LDcgKzE0 MDUxLDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfdXBkYXRlX2NydGMoc3RydWN0IGludGVsX2NydGMg KmNydGMsCiAJICogb2YgZW5hYmxpbmcgdGhlbSBvbiB0aGUgQ1JUQydzIGZpcnN0IGZhc3RzZXQu CiAJICovCiAJaWYgKG5ld19jcnRjX3N0YXRlLT51cGRhdGVfcGlwZSAmJiAhbW9kZXNldCAmJgot CSAgICBvbGRfY3J0Y19zdGF0ZS0+YmFzZS5tb2RlLnByaXZhdGVfZmxhZ3MgJiBJOTE1X01PREVf RkxBR19JTkhFUklURUQpCisJICAgIG9sZF9jcnRjX3N0YXRlLT5ody5tb2RlLnByaXZhdGVfZmxh Z3MgJiBJOTE1X01PREVfRkxBR19JTkhFUklURUQpCiAJCWludGVsX2NydGNfYXJtX2ZpZm9fdW5k ZXJydW4oY3J0YywgbmV3X2NydGNfc3RhdGUpOwogfQogCkBAIC0xNDA5Miw3ICsxNDA5NSw3IEBA IHN0YXRpYyB2b2lkIGludGVsX29sZF9jcnRjX3N0YXRlX2Rpc2FibGVzKHN0cnVjdCBpbnRlbF9h dG9taWNfc3RhdGUgKnN0YXRlLAogCWludGVsX2NoZWNrX3BjaF9maWZvX3VuZGVycnVucyhkZXZf cHJpdik7CiAKIAkvKiBGSVhNRSB1bmlmeSB0aGlzIGZvciBhbGwgcGxhdGZvcm1zICovCi0JaWYg KCFuZXdfY3J0Y19zdGF0ZS0+YmFzZS5hY3RpdmUgJiYKKwlpZiAoIW5ld19jcnRjX3N0YXRlLT5o dy5hY3RpdmUgJiYKIAkgICAgIUhBU19HTUNIKGRldl9wcml2KSAmJgogCSAgICBkZXZfcHJpdi0+ ZGlzcGxheS5pbml0aWFsX3dhdGVybWFya3MpCiAJCWRldl9wcml2LT5kaXNwbGF5LmluaXRpYWxf d2F0ZXJtYXJrcyhzdGF0ZSwKQEAgLTE0MTE1LDcgKzE0MTE4LDcgQEAgc3RhdGljIHZvaWQgaW50 ZWxfdHJhbnNfcG9ydF9zeW5jX21vZGVzZXRfZGlzYWJsZXMoc3RydWN0IGludGVsX2F0b21pY19z dGF0ZSAqc3QKIAogCS8qIERpc2FibGUgU2xhdmUgZmlyc3QgKi8KIAlpbnRlbF9wcmVfcGxhbmVf dXBkYXRlKG9sZF9zbGF2ZV9jcnRjX3N0YXRlLCBuZXdfc2xhdmVfY3J0Y19zdGF0ZSk7Ci0JaWYg KG9sZF9zbGF2ZV9jcnRjX3N0YXRlLT5iYXNlLmFjdGl2ZSkKKwlpZiAob2xkX3NsYXZlX2NydGNf c3RhdGUtPmh3LmFjdGl2ZSkKIAkJaW50ZWxfb2xkX2NydGNfc3RhdGVfZGlzYWJsZXMoc3RhdGUs CiAJCQkJCSAgICAgIG9sZF9zbGF2ZV9jcnRjX3N0YXRlLAogCQkJCQkgICAgICBuZXdfc2xhdmVf Y3J0Y19zdGF0ZSwKQEAgLTE0MTIzLDcgKzE0MTI2LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfdHJh bnNfcG9ydF9zeW5jX21vZGVzZXRfZGlzYWJsZXMoc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAq c3QKIAogCS8qIERpc2FibGUgTWFzdGVyICovCiAJaW50ZWxfcHJlX3BsYW5lX3VwZGF0ZShvbGRf Y3J0Y19zdGF0ZSwgbmV3X2NydGNfc3RhdGUpOwotCWlmIChvbGRfY3J0Y19zdGF0ZS0+YmFzZS5h Y3RpdmUpCisJaWYgKG9sZF9jcnRjX3N0YXRlLT5ody5hY3RpdmUpCiAJCWludGVsX29sZF9jcnRj X3N0YXRlX2Rpc2FibGVzKHN0YXRlLAogCQkJCQkgICAgICBvbGRfY3J0Y19zdGF0ZSwKIAkJCQkJ ICAgICAgbmV3X2NydGNfc3RhdGUsCkBAIC0xNDE2NCw3ICsxNDE2Nyw3IEBAIHN0YXRpYyB2b2lk IGludGVsX2NvbW1pdF9tb2Rlc2V0X2Rpc2FibGVzKHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUg KnN0YXRlKQogCQl9IGVsc2UgewogCQkJaW50ZWxfcHJlX3BsYW5lX3VwZGF0ZShvbGRfY3J0Y19z dGF0ZSwgbmV3X2NydGNfc3RhdGUpOwogCi0JCQlpZiAob2xkX2NydGNfc3RhdGUtPmJhc2UuYWN0 aXZlKQorCQkJaWYgKG9sZF9jcnRjX3N0YXRlLT5ody5hY3RpdmUpCiAJCQkJaW50ZWxfb2xkX2Ny dGNfc3RhdGVfZGlzYWJsZXMoc3RhdGUsCiAJCQkJCQkJICAgICAgb2xkX2NydGNfc3RhdGUsCiAJ CQkJCQkJICAgICAgbmV3X2NydGNfc3RhdGUsCkBAIC0xNDE4MCw3ICsxNDE4Myw3IEBAIHN0YXRp YyB2b2lkIGludGVsX2NvbW1pdF9tb2Rlc2V0X2VuYWJsZXMoc3RydWN0IGludGVsX2F0b21pY19z dGF0ZSAqc3RhdGUpCiAJaW50IGk7CiAKIAlmb3JfZWFjaF9vbGRuZXdfaW50ZWxfY3J0Y19pbl9z dGF0ZShzdGF0ZSwgY3J0Yywgb2xkX2NydGNfc3RhdGUsIG5ld19jcnRjX3N0YXRlLCBpKSB7Ci0J CWlmICghbmV3X2NydGNfc3RhdGUtPmJhc2UuYWN0aXZlKQorCQlpZiAoIW5ld19jcnRjX3N0YXRl LT5ody5hY3RpdmUpCiAJCQljb250aW51ZTsKIAogCQlpbnRlbF91cGRhdGVfY3J0YyhjcnRjLCBz dGF0ZSwgb2xkX2NydGNfc3RhdGUsCkBAIC0xNDI0NSw3ICsxNDI0OCw3IEBAIHN0YXRpYyB2b2lk IGludGVsX3Bvc3RfY3J0Y19lbmFibGVfdXBkYXRlcyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywK IAkgKiBvZiBlbmFibGluZyB0aGVtIG9uIHRoZSBDUlRDJ3MgZmlyc3QgZmFzdHNldC4KIAkgKi8K IAlpZiAobmV3X2NydGNfc3RhdGUtPnVwZGF0ZV9waXBlICYmICFtb2Rlc2V0ICYmCi0JICAgIG9s ZF9jcnRjX3N0YXRlLT5iYXNlLm1vZGUucHJpdmF0ZV9mbGFncyAmIEk5MTVfTU9ERV9GTEFHX0lO SEVSSVRFRCkKKwkgICAgb2xkX2NydGNfc3RhdGUtPmh3Lm1vZGUucHJpdmF0ZV9mbGFncyAmIEk5 MTVfTU9ERV9GTEFHX0lOSEVSSVRFRCkKIAkJaW50ZWxfY3J0Y19hcm1fZmlmb191bmRlcnJ1bihj cnRjLCBuZXdfY3J0Y19zdGF0ZSk7CiB9CiAKQEAgLTE0MzA5LDcgKzE0MzEyLDcgQEAgc3RhdGlj IHZvaWQgc2tsX2NvbW1pdF9tb2Rlc2V0X2VuYWJsZXMoc3RydWN0IGludGVsX2F0b21pY19zdGF0 ZSAqc3RhdGUpCiAKIAlmb3JfZWFjaF9vbGRuZXdfaW50ZWxfY3J0Y19pbl9zdGF0ZShzdGF0ZSwg Y3J0Yywgb2xkX2NydGNfc3RhdGUsIG5ld19jcnRjX3N0YXRlLCBpKQogCQkvKiBpZ25vcmUgYWxs b2NhdGlvbnMgZm9yIGNydGMncyB0aGF0IGhhdmUgYmVlbiB0dXJuZWQgb2ZmLiAqLwotCQlpZiAo bmV3X2NydGNfc3RhdGUtPmJhc2UuYWN0aXZlKQorCQlpZiAobmV3X2NydGNfc3RhdGUtPmh3LmFj dGl2ZSkKIAkJCWVudHJpZXNbaV0gPSBvbGRfY3J0Y19zdGF0ZS0+d20uc2tsLmRkYjsKIAogCS8q IElmIDJuZCBEQnVmIHNsaWNlIHJlcXVpcmVkLCBlbmFibGUgaXQgaGVyZSAqLwpAQCAtMTQzMzAs NyArMTQzMzMsNyBAQCBzdGF0aWMgdm9pZCBza2xfY29tbWl0X21vZGVzZXRfZW5hYmxlcyhzdHJ1 Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSkKIAkJCWJvb2wgdmJsX3dhaXQgPSBmYWxzZTsK IAkJCWJvb2wgbW9kZXNldCA9IG5lZWRzX21vZGVzZXQobmV3X2NydGNfc3RhdGUpOwogCi0JCQlp ZiAodXBkYXRlZCAmIEJJVChjcnRjLT5waXBlKSB8fCAhbmV3X2NydGNfc3RhdGUtPmJhc2UuYWN0 aXZlKQorCQkJaWYgKHVwZGF0ZWQgJiBCSVQoY3J0Yy0+cGlwZSkgfHwgIW5ld19jcnRjX3N0YXRl LT5ody5hY3RpdmUpCiAJCQkJY29udGludWU7CiAKIAkJCWlmIChza2xfZGRiX2FsbG9jYXRpb25f b3ZlcmxhcHMoJm5ld19jcnRjX3N0YXRlLT53bS5za2wuZGRiLApAQCAtMTQ0OTIsNyArMTQ0OTUs NyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9hdG9taWNfY29tbWl0X3RhaWwoc3RydWN0IGludGVsX2F0 b21pY19zdGF0ZSAqc3RhdGUpCiAJCWJvb2wgbW9kZXNldCA9IG5lZWRzX21vZGVzZXQobmV3X2Ny dGNfc3RhdGUpOwogCiAJCS8qIENvbXBsZXRlIGV2ZW50cyBmb3Igbm93IGRpc2FibGUgcGlwZXMg aGVyZS4gKi8KLQkJaWYgKG1vZGVzZXQgJiYgIW5ld19jcnRjX3N0YXRlLT5iYXNlLmFjdGl2ZSAm JiBuZXdfY3J0Y19zdGF0ZS0+YmFzZS5ldmVudCkgeworCQlpZiAobW9kZXNldCAmJiAhbmV3X2Ny dGNfc3RhdGUtPmh3LmFjdGl2ZSAmJiBuZXdfY3J0Y19zdGF0ZS0+YmFzZS5ldmVudCkgewogCQkJ c3Bpbl9sb2NrX2lycSgmZGV2LT5ldmVudF9sb2NrKTsKIAkJCWRybV9jcnRjX3NlbmRfdmJsYW5r X2V2ZW50KCZjcnRjLT5iYXNlLCBuZXdfY3J0Y19zdGF0ZS0+YmFzZS5ldmVudCk7CiAJCQlzcGlu X3VubG9ja19pcnEoJmRldi0+ZXZlbnRfbG9jayk7CkBAIC0xNDUyOCw3ICsxNDUzMSw3IEBAIHN0 YXRpYyB2b2lkIGludGVsX2F0b21pY19jb21taXRfdGFpbChzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0 YXRlICpzdGF0ZSkKIAlkcm1fYXRvbWljX2hlbHBlcl93YWl0X2Zvcl9mbGlwX2RvbmUoZGV2LCAm c3RhdGUtPmJhc2UpOwogCiAJZm9yX2VhY2hfbmV3X2ludGVsX2NydGNfaW5fc3RhdGUoc3RhdGUs IGNydGMsIG5ld19jcnRjX3N0YXRlLCBpKSB7Ci0JCWlmIChuZXdfY3J0Y19zdGF0ZS0+YmFzZS5h Y3RpdmUgJiYKKwkJaWYgKG5ld19jcnRjX3N0YXRlLT5ody5hY3RpdmUgJiYKIAkJICAgICFuZWVk c19tb2Rlc2V0KG5ld19jcnRjX3N0YXRlKSAmJgogCQkgICAgKG5ld19jcnRjX3N0YXRlLT5iYXNl LmNvbG9yX21nbXRfY2hhbmdlZCB8fAogCQkgICAgIG5ld19jcnRjX3N0YXRlLT51cGRhdGVfcGlw ZSkpCkBAIC0xNDk4MywxMCArMTQ5ODYsMTAgQEAgc2tsX21heF9zY2FsZShjb25zdCBzdHJ1Y3Qg aW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKIAlpbnQgbWF4X3NjYWxlOwogCWludCBjcnRj X2Nsb2NrLCBtYXhfZG90Y2xrLCB0bXBjbGsxLCB0bXBjbGsyOwogCi0JaWYgKCFjcnRjX3N0YXRl LT5iYXNlLmVuYWJsZSkKKwlpZiAoIWNydGNfc3RhdGUtPmh3LmVuYWJsZSkKIAkJcmV0dXJuIERS TV9QTEFORV9IRUxQRVJfTk9fU0NBTElORzsKIAotCWNydGNfY2xvY2sgPSBjcnRjX3N0YXRlLT5i YXNlLmFkanVzdGVkX21vZGUuY3J0Y19jbG9jazsKKwljcnRjX2Nsb2NrID0gY3J0Y19zdGF0ZS0+ aHcuYWRqdXN0ZWRfbW9kZS5jcnRjX2Nsb2NrOwogCW1heF9kb3RjbGsgPSB0b19pbnRlbF9hdG9t aWNfc3RhdGUoY3J0Y19zdGF0ZS0+YmFzZS5zdGF0ZSktPmNkY2xrLmxvZ2ljYWwuY2RjbGs7CiAK IAlpZiAoSVNfR0VNSU5JTEFLRShkZXZfcHJpdikgfHwgSU5URUxfR0VOKGRldl9wcml2KSA+PSAx MCkKQEAgLTE1MTIyLDcgKzE1MTI1LDcgQEAgaW50ZWxfbGVnYWN5X2N1cnNvcl91cGRhdGUoc3Ry dWN0IGRybV9wbGFuZSAqX3BsYW5lLAogCSAqIFdoZW4gY3J0YyBpcyBpbmFjdGl2ZSBvciB0aGVy ZSBpcyBhIG1vZGVzZXQgcGVuZGluZywKIAkgKiB3YWl0IGZvciBpdCB0byBjb21wbGV0ZSBpbiB0 aGUgc2xvd3BhdGgKIAkgKi8KLQlpZiAoIWNydGNfc3RhdGUtPmJhc2UuYWN0aXZlIHx8IG5lZWRz X21vZGVzZXQoY3J0Y19zdGF0ZSkgfHwKKwlpZiAoIWNydGNfc3RhdGUtPmh3LmFjdGl2ZSB8fCBu ZWVkc19tb2Rlc2V0KGNydGNfc3RhdGUpIHx8CiAJICAgIGNydGNfc3RhdGUtPnVwZGF0ZV9waXBl KQogCQlnb3RvIHNsb3c7CiAKQEAgLTE2NTUxLDcgKzE2NTU0LDcgQEAgc3RhdGljIGludCBpbnRl bF9pbml0aWFsX2NvbW1pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCQkJZ290byBvdXQ7CiAJ CX0KIAotCQlpZiAoY3J0Y19zdGF0ZS0+YmFzZS5hY3RpdmUpIHsKKwkJaWYgKGNydGNfc3RhdGUt Pmh3LmFjdGl2ZSkgewogCQkJcmV0ID0gZHJtX2F0b21pY19hZGRfYWZmZWN0ZWRfcGxhbmVzKHN0 YXRlLCAmY3J0Yy0+YmFzZSk7CiAJCQlpZiAocmV0KQogCQkJCWdvdG8gb3V0OwpAQCAtMTY5MDEs NyArMTY5MDQsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9zYW5pdGl6ZV9jcnRjKHN0cnVjdCBpbnRl bF9jcnRjICpjcnRjLAogCQkJICAgSTkxNV9SRUFEKHJlZykgJiB+UElQRUNPTkZfRlJBTUVfU1RB UlRfREVMQVlfTUFTSyk7CiAJfQogCi0JaWYgKGNydGNfc3RhdGUtPmJhc2UuYWN0aXZlKSB7CisJ aWYgKGNydGNfc3RhdGUtPmh3LmFjdGl2ZSkgewogCQlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5l OwogCiAJCS8qIERpc2FibGUgZXZlcnl0aGluZyBidXQgdGhlIHByaW1hcnkgcGxhbmUgKi8KQEAg LTE2OTI2LDEwICsxNjkyOSwxMCBAQCBzdGF0aWMgdm9pZCBpbnRlbF9zYW5pdGl6ZV9jcnRjKHN0 cnVjdCBpbnRlbF9jcnRjICpjcnRjLAogCiAJLyogQWRqdXN0IHRoZSBzdGF0ZSBvZiB0aGUgb3V0 cHV0IHBpcGUgYWNjb3JkaW5nIHRvIHdoZXRoZXIgd2UKIAkgKiBoYXZlIGFjdGl2ZSBjb25uZWN0 b3JzL2VuY29kZXJzLiAqLwotCWlmIChjcnRjX3N0YXRlLT5iYXNlLmFjdGl2ZSAmJiAhaW50ZWxf Y3J0Y19oYXNfZW5jb2RlcnMoY3J0YykpCisJaWYgKGNydGNfc3RhdGUtPmh3LmFjdGl2ZSAmJiAh aW50ZWxfY3J0Y19oYXNfZW5jb2RlcnMoY3J0YykpCiAJCWludGVsX2NydGNfZGlzYWJsZV9ub2F0 b21pYygmY3J0Yy0+YmFzZSwgY3R4KTsKIAotCWlmIChjcnRjX3N0YXRlLT5iYXNlLmFjdGl2ZSB8 fCBIQVNfR01DSChkZXZfcHJpdikpIHsKKwlpZiAoY3J0Y19zdGF0ZS0+aHcuYWN0aXZlIHx8IEhB U19HTUNIKGRldl9wcml2KSkgewogCQkvKgogCQkgKiBXZSBzdGFydCBvdXQgd2l0aCB1bmRlcnJ1 biByZXBvcnRpbmcgZGlzYWJsZWQgdG8gYXZvaWQgcmFjZXMuCiAJCSAqIEZvciBjb3JyZWN0IGJv b2trZWVwaW5nIG1hcmsgdGhpcyBvbiBhY3RpdmUgY3J0Y3MuCkBAIC0xNjk3Myw3ICsxNjk3Niw3 IEBAIHN0YXRpYyBib29sIGhhc19ib2d1c19kcGxsX2NvbmZpZyhjb25zdCBzdHJ1Y3QgaW50ZWxf Y3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKIAkgKiByb2FkLgogCSAqLwogCXJldHVybiBJU19HRU4o ZGV2X3ByaXYsIDYpICYmCi0JCWNydGNfc3RhdGUtPmJhc2UuYWN0aXZlICYmCisJCWNydGNfc3Rh dGUtPmh3LmFjdGl2ZSAmJgogCQljcnRjX3N0YXRlLT5zaGFyZWRfZHBsbCAmJgogCQljcnRjX3N0 YXRlLT5wb3J0X2Nsb2NrID09IDA7CiB9CkBAIC0xNjk5MCw3ICsxNjk5Myw3IEBAIHN0YXRpYyB2 b2lkIGludGVsX3Nhbml0aXplX2VuY29kZXIoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIp CiAJICogZW5jb2RlciBpcyBhY3RpdmUgYW5kIHRyeWluZyB0byByZWFkIGZyb20gYSBwaXBlKSBh bmQgdGhlCiAJICogcGlwZSBpdHNlbGYgYmVpbmcgYWN0aXZlLiAqLwogCWJvb2wgaGFzX2FjdGl2 ZV9jcnRjID0gY3J0Y19zdGF0ZSAmJgotCQljcnRjX3N0YXRlLT5iYXNlLmFjdGl2ZTsKKwkJY3J0 Y19zdGF0ZS0+aHcuYWN0aXZlOwogCiAJaWYgKGNydGNfc3RhdGUgJiYgaGFzX2JvZ3VzX2RwbGxf Y29uZmlnKGNydGNfc3RhdGUpKSB7CiAJCURSTV9ERUJVR19LTVMoIkJJT1MgaGFzIG1pc3Byb2dy YW1tZWQgdGhlIGhhcmR3YXJlLiBEaXNhYmxpbmcgcGlwZSAlY1xuIiwKQEAgLTE3MDk4LDE4ICsx NzEwMSwxOCBAQCBzdGF0aWMgdm9pZCBpbnRlbF9tb2Rlc2V0X3JlYWRvdXRfaHdfc3RhdGUoc3Ry dWN0IGRybV9kZXZpY2UgKmRldikKIAkJbWVtc2V0KGNydGNfc3RhdGUsIDAsIHNpemVvZigqY3J0 Y19zdGF0ZSkpOwogCQlfX2RybV9hdG9taWNfaGVscGVyX2NydGNfcmVzZXQoJmNydGMtPmJhc2Us ICZjcnRjX3N0YXRlLT5iYXNlKTsKIAotCQljcnRjX3N0YXRlLT5iYXNlLmFjdGl2ZSA9IGNydGNf c3RhdGUtPmJhc2UuZW5hYmxlID0KKwkJY3J0Y19zdGF0ZS0+aHcuYWN0aXZlID0gY3J0Y19zdGF0 ZS0+aHcuZW5hYmxlID0KIAkJCWRldl9wcml2LT5kaXNwbGF5LmdldF9waXBlX2NvbmZpZyhjcnRj LCBjcnRjX3N0YXRlKTsKIAotCQljcnRjLT5iYXNlLmVuYWJsZWQgPSBjcnRjX3N0YXRlLT5iYXNl LmVuYWJsZTsKLQkJY3J0Yy0+YWN0aXZlID0gY3J0Y19zdGF0ZS0+YmFzZS5hY3RpdmU7CisJCWNy dGMtPmJhc2UuZW5hYmxlZCA9IGNydGNfc3RhdGUtPmh3LmVuYWJsZTsKKwkJY3J0Yy0+YWN0aXZl ID0gY3J0Y19zdGF0ZS0+aHcuYWN0aXZlOwogCi0JCWlmIChjcnRjX3N0YXRlLT5iYXNlLmFjdGl2 ZSkKKwkJaWYgKGNydGNfc3RhdGUtPmh3LmFjdGl2ZSkKIAkJCWRldl9wcml2LT5hY3RpdmVfcGlw ZXMgfD0gQklUKGNydGMtPnBpcGUpOwogCiAJCURSTV9ERUJVR19LTVMoIltDUlRDOiVkOiVzXSBo dyBzdGF0ZSByZWFkb3V0OiAlc1xuIiwKIAkJCSAgICAgIGNydGMtPmJhc2UuYmFzZS5pZCwgY3J0 Yy0+YmFzZS5uYW1lLAotCQkJICAgICAgZW5hYmxlZGRpc2FibGVkKGNydGNfc3RhdGUtPmJhc2Uu YWN0aXZlKSk7CisJCQkgICAgICBlbmFibGVkZGlzYWJsZWQoY3J0Y19zdGF0ZS0+aHcuYWN0aXZl KSk7CiAJfQogCiAJcmVhZG91dF9wbGFuZV9zdGF0ZShkZXZfcHJpdik7CkBAIC0xNzEzMSw3ICsx NzEzNCw3IEBAIHN0YXRpYyB2b2lkIGludGVsX21vZGVzZXRfcmVhZG91dF9od19zdGF0ZShzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2KQogCQkJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3Rh dGUgPQogCQkJCXRvX2ludGVsX2NydGNfc3RhdGUoY3J0Yy0+YmFzZS5zdGF0ZSk7CiAKLQkJCWlm IChjcnRjX3N0YXRlLT5iYXNlLmFjdGl2ZSAmJgorCQkJaWYgKGNydGNfc3RhdGUtPmh3LmFjdGl2 ZSAmJgogCQkJICAgIGNydGNfc3RhdGUtPnNoYXJlZF9kcGxsID09IHBsbCkKIAkJCQlwbGwtPnN0 YXRlLmNydGNfbWFzayB8PSAxIDw8IGNydGMtPnBpcGU7CiAJCX0KQEAgLTE3MTc2LDcgKzE3MTc5 LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfbW9kZXNldF9yZWFkb3V0X2h3X3N0YXRlKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYpCiAJCQljcnRjID0gdG9faW50ZWxfY3J0YyhlbmNvZGVyLT5iYXNlLmNy dGMpOwogCQkJY3J0Y19zdGF0ZSA9IGNydGMgPyB0b19pbnRlbF9jcnRjX3N0YXRlKGNydGMtPmJh c2Uuc3RhdGUpIDogTlVMTDsKIAotCQkJaWYgKGNydGNfc3RhdGUgJiYgY3J0Y19zdGF0ZS0+YmFz ZS5hY3RpdmUpIHsKKwkJCWlmIChjcnRjX3N0YXRlICYmIGNydGNfc3RhdGUtPmh3LmFjdGl2ZSkg ewogCQkJCS8qCiAJCQkJICogVGhpcyBoYXMgdG8gYmUgZG9uZSBkdXJpbmcgaGFyZHdhcmUgcmVh ZG91dAogCQkJCSAqIGJlY2F1c2UgYW55dGhpbmcgY2FsbGluZyAuY3J0Y19kaXNhYmxlIG1heQpA QCAtMTcyMDYsMTEgKzE3MjA5LDEyIEBAIHN0YXRpYyB2b2lkIGludGVsX21vZGVzZXRfcmVhZG91 dF9od19zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCQlpbnQgbWluX2NkY2xrID0gMDsK IAogCQltZW1zZXQoJmNydGMtPmJhc2UubW9kZSwgMCwgc2l6ZW9mKGNydGMtPmJhc2UubW9kZSkp OwotCQlpZiAoY3J0Y19zdGF0ZS0+YmFzZS5hY3RpdmUpIHsKKwkJaWYgKGNydGNfc3RhdGUtPmh3 LmFjdGl2ZSkgewogCQkJaW50ZWxfbW9kZV9mcm9tX3BpcGVfY29uZmlnKCZjcnRjLT5iYXNlLm1v ZGUsIGNydGNfc3RhdGUpOwogCQkJY3J0Yy0+YmFzZS5tb2RlLmhkaXNwbGF5ID0gY3J0Y19zdGF0 ZS0+cGlwZV9zcmNfdzsKIAkJCWNydGMtPmJhc2UubW9kZS52ZGlzcGxheSA9IGNydGNfc3RhdGUt PnBpcGVfc3JjX2g7Ci0JCQlpbnRlbF9tb2RlX2Zyb21fcGlwZV9jb25maWcoJmNydGNfc3RhdGUt PmJhc2UuYWRqdXN0ZWRfbW9kZSwgY3J0Y19zdGF0ZSk7CisJCQlpbnRlbF9tb2RlX2Zyb21fcGlw ZV9jb25maWcoJmNydGNfc3RhdGUtPmh3LmFkanVzdGVkX21vZGUsCisJCQkJCQkgICAgY3J0Y19z dGF0ZSk7CiAJCQlXQVJOX09OKGRybV9hdG9taWNfc2V0X21vZGVfZm9yX2NydGMoJmNydGNfc3Rh dGUtPmJhc2UsICZjcnRjLT5iYXNlLm1vZGUpKTsKIAogCQkJLyoKQEAgLTE3MjIyLDcgKzE3MjI2 LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfbW9kZXNldF9yZWFkb3V0X2h3X3N0YXRlKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYpCiAJCQkgKiBzZXQgYSBmbGFnIHRvIGluZGljYXRlIHRoYXQgYSBmdWxs IHJlY2FsY3VsYXRpb24gaXMKIAkJCSAqIG5lZWRlZCBvbiB0aGUgbmV4dCBjb21taXQuCiAJCQkg Ki8KLQkJCWNydGNfc3RhdGUtPmJhc2UubW9kZS5wcml2YXRlX2ZsYWdzID0gSTkxNV9NT0RFX0ZM QUdfSU5IRVJJVEVEOworCQkJY3J0Y19zdGF0ZS0+aHcubW9kZS5wcml2YXRlX2ZsYWdzID0gSTkx NV9NT0RFX0ZMQUdfSU5IRVJJVEVEOwogCiAJCQlpbnRlbF9jcnRjX2NvbXB1dGVfcGl4ZWxfcmF0 ZShjcnRjX3N0YXRlKTsKIApAQCAtMTc0MDAsNyArMTc0MDQsNyBAQCBpbnRlbF9tb2Rlc2V0X3Nl dHVwX2h3X3N0YXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAKIAkJZHJtX2NydGNfdmJsYW5r X3Jlc2V0KCZjcnRjLT5iYXNlKTsKIAotCQlpZiAoY3J0Y19zdGF0ZS0+YmFzZS5hY3RpdmUpCisJ CWlmIChjcnRjX3N0YXRlLT5ody5hY3RpdmUpCiAJCQlpbnRlbF9jcnRjX3ZibGFua19vbihjcnRj X3N0YXRlKTsKIAl9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkv aW50ZWxfZHAuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHAuYwppbmRl eCA1MjFjZTIzZjM4YWMuLmYyZjAyYWQ4ZDM5ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvZGlzcGxheS9pbnRlbF9kcC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3Bs YXkvaW50ZWxfZHAuYwpAQCAtMTk5MCw3ICsxOTkwLDcgQEAgaW50ZWxfZHBfY29tcHV0ZV9saW5r X2NvbmZpZ193aWRlKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCiAJCQkJICBzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcsCiAJCQkJICBjb25zdCBzdHJ1Y3QgbGlua19jb25m aWdfbGltaXRzICpsaW1pdHMpCiB7Ci0Jc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVk X21vZGUgPSAmcGlwZV9jb25maWctPmJhc2UuYWRqdXN0ZWRfbW9kZTsKKwlzdHJ1Y3QgZHJtX2Rp c3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9ICZwaXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9k ZTsKIAlpbnQgYnBwLCBjbG9jaywgbGFuZV9jb3VudDsKIAlpbnQgbW9kZV9yYXRlLCBsaW5rX2Ns b2NrLCBsaW5rX2F2YWlsOwogCkBAIC0yMDQ0LDcgKzIwNDQsNyBAQCBzdGF0aWMgaW50IGludGVs X2RwX2RzY19jb21wdXRlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAogewogCXN0 cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmRpZ19wb3J0ID0gZHBfdG9fZGlnX3BvcnQoaW50ZWxf ZHApOwogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGlnX3Bv cnQtPmJhc2UuYmFzZS5kZXYpOwotCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9t b2RlID0gJnBpcGVfY29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGU7CisJc3RydWN0IGRybV9kaXNw bGF5X21vZGUgKmFkanVzdGVkX21vZGUgPSAmcGlwZV9jb25maWctPmh3LmFkanVzdGVkX21vZGU7 CiAJdTggZHNjX21heF9icGM7CiAJaW50IHBpcGVfYnBwOwogCWludCByZXQ7CkBAIC0yMTU1LDcg KzIxNTUsNyBAQCBpbnRlbF9kcF9jb21wdXRlX2xpbmtfY29uZmlnKHN0cnVjdCBpbnRlbF9lbmNv ZGVyICplbmNvZGVyLAogCQkJICAgICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25m aWcsCiAJCQkgICAgIHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25uX3N0YXRlKQogewot CXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2RlID0gJnBpcGVfY29uZmlnLT5i YXNlLmFkanVzdGVkX21vZGU7CisJc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21v ZGUgPSAmcGlwZV9jb25maWctPmh3LmFkanVzdGVkX21vZGU7CiAJc3RydWN0IGludGVsX2RwICpp bnRlbF9kcCA9IGVuY190b19pbnRlbF9kcCgmZW5jb2Rlci0+YmFzZSk7CiAJc3RydWN0IGxpbmtf Y29uZmlnX2xpbWl0cyBsaW1pdHM7CiAJaW50IGNvbW1vbl9sZW47CkBAIC0yMjQzLDcgKzIyNDMs NyBAQCBpbnRlbF9kcF95Y2JjcjQyMF9jb25maWcoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwK IHsKIAljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfaW5mbyAqaW5mbyA9ICZjb25uZWN0b3ItPmRp c3BsYXlfaW5mbzsKIAljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9k ZSA9Ci0JCSZjcnRjX3N0YXRlLT5iYXNlLmFkanVzdGVkX21vZGU7CisJCSZjcnRjX3N0YXRlLT5o dy5hZGp1c3RlZF9tb2RlOwogCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0 YyhjcnRjX3N0YXRlLT5iYXNlLmNydGMpOwogCWludCByZXQ7CiAKQEAgLTIyNzIsNyArMjI3Miw3 IEBAIGJvb2wgaW50ZWxfZHBfbGltaXRlZF9jb2xvcl9yYW5nZShjb25zdCBzdHJ1Y3QgaW50ZWxf Y3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKIAljb25zdCBzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9jb25u ZWN0b3Jfc3RhdGUgKmludGVsX2Nvbm5fc3RhdGUgPQogCQl0b19pbnRlbF9kaWdpdGFsX2Nvbm5l Y3Rvcl9zdGF0ZShjb25uX3N0YXRlKTsKIAljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAq YWRqdXN0ZWRfbW9kZSA9Ci0JCSZjcnRjX3N0YXRlLT5iYXNlLmFkanVzdGVkX21vZGU7CisJCSZj cnRjX3N0YXRlLT5ody5hZGp1c3RlZF9tb2RlOwogCiAJLyoKIAkgKiBPdXIgWUNiQ3Igb3V0cHV0 IGlzIGFsd2F5cyBsaW1pdGVkIHJhbmdlLgpAQCAtMjMwNSw3ICsyMzA1LDcgQEAgaW50ZWxfZHBf Y29tcHV0ZV9jb25maWcoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCiAJCQlzdHJ1Y3Qg ZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubl9zdGF0ZSkKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVuY29kZXItPmJhc2UuZGV2KTsKLQlzdHJ1Y3QgZHJt X2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9ICZwaXBlX2NvbmZpZy0+YmFzZS5hZGp1c3Rl ZF9tb2RlOworCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2RlID0gJnBpcGVf Y29uZmlnLT5ody5hZGp1c3RlZF9tb2RlOwogCXN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAgPSBl bmNfdG9faW50ZWxfZHAoJmVuY29kZXItPmJhc2UpOwogCXN0cnVjdCBpbnRlbF9sc3Bjb24gKmxz cGNvbiA9IGVuY190b19pbnRlbF9sc3Bjb24oJmVuY29kZXItPmJhc2UpOwogCWVudW0gcG9ydCBw b3J0ID0gZW5jb2Rlci0+cG9ydDsKQEAgLTI0MjgsNyArMjQyOCw3IEBAIHN0YXRpYyB2b2lkIGlu dGVsX2RwX3ByZXBhcmUoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCiAJc3RydWN0IGlu dGVsX2RwICppbnRlbF9kcCA9IGVuY190b19pbnRlbF9kcCgmZW5jb2Rlci0+YmFzZSk7CiAJZW51 bSBwb3J0IHBvcnQgPSBlbmNvZGVyLT5wb3J0OwogCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0g dG9faW50ZWxfY3J0YyhwaXBlX2NvbmZpZy0+YmFzZS5jcnRjKTsKLQljb25zdCBzdHJ1Y3QgZHJt X2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9ICZwaXBlX2NvbmZpZy0+YmFzZS5hZGp1c3Rl ZF9tb2RlOworCWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2RlID0g JnBpcGVfY29uZmlnLT5ody5hZGp1c3RlZF9tb2RlOwogCiAJaW50ZWxfZHBfc2V0X2xpbmtfcGFy YW1zKGludGVsX2RwLCBwaXBlX2NvbmZpZy0+cG9ydF9jbG9jaywKIAkJCQkgcGlwZV9jb25maWct PmxhbmVfY291bnQsCkBAIC0zMjYwLDcgKzMyNjAsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9kcF9n ZXRfY29uZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAogCQkJZmxhZ3MgfD0gRFJN X01PREVfRkxBR19OVlNZTkM7CiAJfQogCi0JcGlwZV9jb25maWctPmJhc2UuYWRqdXN0ZWRfbW9k ZS5mbGFncyB8PSBmbGFnczsKKwlwaXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZS5mbGFncyB8 PSBmbGFnczsKIAogCWlmIChJU19HNFgoZGV2X3ByaXYpICYmIHRtcCAmIERQX0NPTE9SX1JBTkdF XzE2XzIzNSkKIAkJcGlwZV9jb25maWctPmxpbWl0ZWRfY29sb3JfcmFuZ2UgPSB0cnVlOwpAQCAt MzI3Nyw3ICszMjc3LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfZHBfZ2V0X2NvbmZpZyhzdHJ1Y3Qg aW50ZWxfZW5jb2RlciAqZW5jb2RlciwKIAkJCXBpcGVfY29uZmlnLT5wb3J0X2Nsb2NrID0gMjcw MDAwOwogCX0KIAotCXBpcGVfY29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGUuY3J0Y19jbG9jayA9 CisJcGlwZV9jb25maWctPmh3LmFkanVzdGVkX21vZGUuY3J0Y19jbG9jayA9CiAJCWludGVsX2Rv dGNsb2NrX2NhbGN1bGF0ZShwaXBlX2NvbmZpZy0+cG9ydF9jbG9jaywKIAkJCQkJICZwaXBlX2Nv bmZpZy0+ZHBfbV9uKTsKIApAQCAtNTA3MCw3ICs1MDcwLDcgQEAgaW50IGludGVsX2RwX3JldHJh aW5fbGluayhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKIAogCVdBUk5fT04oIWludGVs X2NydGNfaGFzX2RwX2VuY29kZXIoY3J0Y19zdGF0ZSkpOwogCi0JaWYgKCFjcnRjX3N0YXRlLT5i YXNlLmFjdGl2ZSkKKwlpZiAoIWNydGNfc3RhdGUtPmh3LmFjdGl2ZSkKIAkJcmV0dXJuIDA7CiAK IAlpZiAoY29ubl9zdGF0ZS0+Y29tbWl0ICYmCkBAIC02OTMyLDcgKzY5MzIsNyBAQCBzdGF0aWMg dm9pZCBpbnRlbF9kcF9zZXRfZHJyc19zdGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYsCiAJCXJldHVybjsKIAl9CiAKLQlpZiAoIWNydGNfc3RhdGUtPmJhc2UuYWN0aXZlKSB7 CisJaWYgKCFjcnRjX3N0YXRlLT5ody5hY3RpdmUpIHsKIAkJRFJNX0RFQlVHX0tNUygiZURQIGVu Y29kZXIgZGlzYWJsZWQuIENSVEMgbm90IEFjdGl2ZVxuIik7CiAJCXJldHVybjsKIAl9CmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RwX21zdC5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kcF9tc3QuYwppbmRleCBiYjFiMzE4MGNj ZmQuLjZiMDg2YWM3ODI4ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxh eS9pbnRlbF9kcF9tc3QuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVs X2RwX21zdC5jCkBAIC00OCw3ICs0OCw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfZHBfbXN0X2NvbXB1 dGVfbGlua19jb25maWcoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCiAJc3RydWN0IGlu dGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yID0KIAkJdG9faW50ZWxfY29ubmVjdG9yKGNvbm5fc3Rh dGUtPmNvbm5lY3Rvcik7CiAJY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVk X21vZGUgPQotCQkmY3J0Y19zdGF0ZS0+YmFzZS5hZGp1c3RlZF9tb2RlOworCQkmY3J0Y19zdGF0 ZS0+aHcuYWRqdXN0ZWRfbW9kZTsKIAl2b2lkICpwb3J0ID0gY29ubmVjdG9yLT5wb3J0OwogCWJv b2wgY29uc3RhbnRfbiA9IGRybV9kcF9oYXNfcXVpcmsoJmludGVsX2RwLT5kZXNjLAogCQkJCQkg ICBEUF9EUENEX1FVSVJLX0NPTlNUQU5UX04pOwpAQCAtOTksNyArOTksNyBAQCBzdGF0aWMgaW50 IGludGVsX2RwX21zdF9jb21wdXRlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2Rl ciwKIAlzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9jb25uZWN0b3Jfc3RhdGUgKmludGVsX2Nvbm5fc3Rh dGUgPQogCQl0b19pbnRlbF9kaWdpdGFsX2Nvbm5lY3Rvcl9zdGF0ZShjb25uX3N0YXRlKTsKIAlj b25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9Ci0JCSZwaXBlX2Nv bmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlOworCQkmcGlwZV9jb25maWctPmh3LmFkanVzdGVkX21v ZGU7CiAJdm9pZCAqcG9ydCA9IGNvbm5lY3Rvci0+cG9ydDsKIAlzdHJ1Y3QgbGlua19jb25maWdf bGltaXRzIGxpbWl0czsKIAlpbnQgcmV0OwpAQCAtMTkxLDcgKzE5MSw3IEBAIGludGVsX2RwX21z dF9hdG9taWNfY2hlY2soc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKIAogCQlpZiAo IWNydGNfc3RhdGUgfHwKIAkJICAgICFkcm1fYXRvbWljX2NydGNfbmVlZHNfbW9kZXNldCgmY3J0 Y19zdGF0ZS0+YmFzZSkgfHwKLQkJICAgIGNydGNfc3RhdGUtPmJhc2UuZW5hYmxlKQorCQkgICAg Y3J0Y19zdGF0ZS0+aHcuZW5hYmxlKQogCQkJcmV0dXJuIDA7CiAJfQogCmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2R2by5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvZGlzcGxheS9pbnRlbF9kdm8uYwppbmRleCA5ODI3Zjk5NDkxZDEuLmE2OGU1YzViOTFi NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kdm8uYwor KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2R2by5jCkBAIC0xNzgsOSAr MTc4LDkgQEAgc3RhdGljIHZvaWQgaW50ZWxfZHZvX2dldF9jb25maWcoc3RydWN0IGludGVsX2Vu Y29kZXIgKmVuY29kZXIsCiAJZWxzZQogCQlmbGFncyB8PSBEUk1fTU9ERV9GTEFHX05WU1lOQzsK IAotCXBpcGVfY29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGUuZmxhZ3MgfD0gZmxhZ3M7CisJcGlw ZV9jb25maWctPmh3LmFkanVzdGVkX21vZGUuZmxhZ3MgfD0gZmxhZ3M7CiAKLQlwaXBlX2NvbmZp Zy0+YmFzZS5hZGp1c3RlZF9tb2RlLmNydGNfY2xvY2sgPSBwaXBlX2NvbmZpZy0+cG9ydF9jbG9j azsKKwlwaXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZS5jcnRjX2Nsb2NrID0gcGlwZV9jb25m aWctPnBvcnRfY2xvY2s7CiB9CiAKIHN0YXRpYyB2b2lkIGludGVsX2Rpc2FibGVfZHZvKHN0cnVj dCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLApAQCAtMjA3LDggKzIwNyw4IEBAIHN0YXRpYyB2b2lk IGludGVsX2VuYWJsZV9kdm8oc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCiAJdTMyIHRl bXAgPSBJOTE1X1JFQUQoZHZvX3JlZyk7CiAKIAlpbnRlbF9kdm8tPmRldi5kZXZfb3BzLT5tb2Rl X3NldCgmaW50ZWxfZHZvLT5kZXYsCi0JCQkJCSAmcGlwZV9jb25maWctPmJhc2UubW9kZSwKLQkJ CQkJICZwaXBlX2NvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlKTsKKwkJCQkJICZwaXBlX2NvbmZp Zy0+aHcubW9kZSwKKwkJCQkJICZwaXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZSk7CiAKIAlJ OTE1X1dSSVRFKGR2b19yZWcsIHRlbXAgfCBEVk9fRU5BQkxFKTsKIAlJOTE1X1JFQUQoZHZvX3Jl Zyk7CkBAIC0yNTMsNyArMjUzLDcgQEAgc3RhdGljIGludCBpbnRlbF9kdm9fY29tcHV0ZV9jb25m aWcoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCiAJc3RydWN0IGludGVsX2R2byAqaW50 ZWxfZHZvID0gZW5jX3RvX2R2byhlbmNvZGVyKTsKIAljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlf bW9kZSAqZml4ZWRfbW9kZSA9CiAJCWludGVsX2R2by0+YXR0YWNoZWRfY29ubmVjdG9yLT5wYW5l bC5maXhlZF9tb2RlOwotCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2RlID0g JnBpcGVfY29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGU7CisJc3RydWN0IGRybV9kaXNwbGF5X21v ZGUgKmFkanVzdGVkX21vZGUgPSAmcGlwZV9jb25maWctPmh3LmFkanVzdGVkX21vZGU7CiAKIAkv KgogCSAqIElmIHdlIGhhdmUgdGltaW5ncyBmcm9tIHRoZSBCSU9TIGZvciB0aGUgcGFuZWwsIHB1 dCB0aGVtIGluCkBAIC0yNzgsNyArMjc4LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfZHZvX3ByZV9l bmFibGUoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCiB7CiAJc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShlbmNvZGVyLT5iYXNlLmRldik7CiAJc3RydWN0 IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKHBpcGVfY29uZmlnLT5iYXNlLmNydGMp OwotCWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2RlID0gJnBpcGVf Y29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGU7CisJY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21v ZGUgKmFkanVzdGVkX21vZGUgPSAmcGlwZV9jb25maWctPmh3LmFkanVzdGVkX21vZGU7CiAJc3Ry dWN0IGludGVsX2R2byAqaW50ZWxfZHZvID0gZW5jX3RvX2R2byhlbmNvZGVyKTsKIAllbnVtIHBp cGUgcGlwZSA9IGNydGMtPnBpcGU7CiAJdTMyIGR2b192YWw7CmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2ZiYy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv ZGlzcGxheS9pbnRlbF9mYmMuYwppbmRleCAzMTExZWNhZWFiZDAuLmM2Y2MzNzc1ZjNiOCAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9mYmMuYworKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2ZiYy5jCkBAIC02NjcsNyArNjY3LDcg QEAgc3RhdGljIHZvaWQgaW50ZWxfZmJjX3VwZGF0ZV9zdGF0ZV9jYWNoZShzdHJ1Y3QgaW50ZWxf Y3J0YyAqY3J0YywKIAljYWNoZS0+dm1hID0gTlVMTDsKIAljYWNoZS0+ZmxhZ3MgPSAwOwogCi0J Y2FjaGUtPmNydGMubW9kZV9mbGFncyA9IGNydGNfc3RhdGUtPmJhc2UuYWRqdXN0ZWRfbW9kZS5m bGFnczsKKwljYWNoZS0+Y3J0Yy5tb2RlX2ZsYWdzID0gY3J0Y19zdGF0ZS0+aHcuYWRqdXN0ZWRf bW9kZS5mbGFnczsKIAlpZiAoSVNfSEFTV0VMTChkZXZfcHJpdikgfHwgSVNfQlJPQURXRUxMKGRl dl9wcml2KSkKIAkJY2FjaGUtPmNydGMuaHN3X2Jkd19waXhlbF9yYXRlID0gY3J0Y19zdGF0ZS0+ cGl4ZWxfcmF0ZTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9p bnRlbF9oZG1pLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2hkbWkuYwpp bmRleCBiNTRjY2JiNWFhZDUuLjI1YjQ0NTZiZmQ2MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9oZG1pLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv ZGlzcGxheS9pbnRlbF9oZG1pLmMKQEAgLTcwOCw3ICs3MDgsNyBAQCBpbnRlbF9oZG1pX2NvbXB1 dGVfYXZpX2luZm9mcmFtZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKIHsKIAlzdHJ1 Y3QgaGRtaV9hdmlfaW5mb2ZyYW1lICpmcmFtZSA9ICZjcnRjX3N0YXRlLT5pbmZvZnJhbWVzLmF2 aS5hdmk7CiAJY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUgPQot CQkmY3J0Y19zdGF0ZS0+YmFzZS5hZGp1c3RlZF9tb2RlOworCQkmY3J0Y19zdGF0ZS0+aHcuYWRq dXN0ZWRfbW9kZTsKIAlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yID0gY29ubl9zdGF0 ZS0+Y29ubmVjdG9yOwogCWludCByZXQ7CiAKQEAgLTgwNCw3ICs4MDQsNyBAQCBpbnRlbF9oZG1p X2NvbXB1dGVfaGRtaV9pbmZvZnJhbWUoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCiAK IAlyZXQgPSBkcm1faGRtaV92ZW5kb3JfaW5mb2ZyYW1lX2Zyb21fZGlzcGxheV9tb2RlKGZyYW1l LAogCQkJCQkJCSAgY29ubl9zdGF0ZS0+Y29ubmVjdG9yLAotCQkJCQkJCSAgJmNydGNfc3RhdGUt PmJhc2UuYWRqdXN0ZWRfbW9kZSk7CisJCQkJCQkJICAmY3J0Y19zdGF0ZS0+aHcuYWRqdXN0ZWRf bW9kZSk7CiAJaWYgKFdBUk5fT04ocmV0KSkKIAkJcmV0dXJuIGZhbHNlOwogCkBAIC0xMDI3LDcg KzEwMjcsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9oZG1pX2NvbXB1dGVfZ2NwX2luZm9mcmFtZShz dHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKIAogCS8qIEVuYWJsZSBkZWZhdWx0X3BoYXNl IHdoZW5ldmVyIHRoZSBkaXNwbGF5IG1vZGUgaXMgc3VpdGFibHkgYWxpZ25lZCAqLwogCWlmIChn Y3BfZGVmYXVsdF9waGFzZV9wb3NzaWJsZShjcnRjX3N0YXRlLT5waXBlX2JwcCwKLQkJCQkgICAg ICAgJmNydGNfc3RhdGUtPmJhc2UuYWRqdXN0ZWRfbW9kZSkpCisJCQkJICAgICAgICZjcnRjX3N0 YXRlLT5ody5hZGp1c3RlZF9tb2RlKSkKIAkJY3J0Y19zdGF0ZS0+aW5mb2ZyYW1lcy5nY3AgfD0g R0NQX0RFRkFVTFRfUEhBU0VfRU5BQkxFOwogfQogCkBAIC0xNzM4LDcgKzE3MzgsNyBAQCBzdGF0 aWMgdm9pZCBpbnRlbF9oZG1pX3ByZXBhcmUoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIs CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwogCXN0 cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLT5iYXNlLmNy dGMpOwogCXN0cnVjdCBpbnRlbF9oZG1pICppbnRlbF9oZG1pID0gZW5jX3RvX2ludGVsX2hkbWko JmVuY29kZXItPmJhc2UpOwotCWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3Rl ZF9tb2RlID0gJmNydGNfc3RhdGUtPmJhc2UuYWRqdXN0ZWRfbW9kZTsKKwljb25zdCBzdHJ1Y3Qg ZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9ICZjcnRjX3N0YXRlLT5ody5hZGp1c3Rl ZF9tb2RlOwogCXUzMiBoZG1pX3ZhbDsKIAogCWludGVsX2RwX2R1YWxfbW9kZV9zZXRfdG1kc19v dXRwdXQoaW50ZWxfaGRtaSwgdHJ1ZSk7CkBAIC0xODI5LDcgKzE4MjksNyBAQCBzdGF0aWMgdm9p ZCBpbnRlbF9oZG1pX2dldF9jb25maWcoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCiAJ ICAgIHRtcCAmIEhETUlfQ09MT1JfUkFOR0VfMTZfMjM1KQogCQlwaXBlX2NvbmZpZy0+bGltaXRl ZF9jb2xvcl9yYW5nZSA9IHRydWU7CiAKLQlwaXBlX2NvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2Rl LmZsYWdzIHw9IGZsYWdzOworCXBpcGVfY29uZmlnLT5ody5hZGp1c3RlZF9tb2RlLmZsYWdzIHw9 IGZsYWdzOwogCiAJaWYgKCh0bXAgJiBTRFZPX0NPTE9SX0ZPUk1BVF9NQVNLKSA9PSBIRE1JX0NP TE9SX0ZPUk1BVF8xMmJwYykKIAkJZG90Y2xvY2sgPSBwaXBlX2NvbmZpZy0+cG9ydF9jbG9jayAq IDIgLyAzOwpAQCAtMTgzOSw3ICsxODM5LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfaGRtaV9nZXRf Y29uZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAogCWlmIChwaXBlX2NvbmZpZy0+ cGl4ZWxfbXVsdGlwbGllcikKIAkJZG90Y2xvY2sgLz0gcGlwZV9jb25maWctPnBpeGVsX211bHRp cGxpZXI7CiAKLQlwaXBlX2NvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlLmNydGNfY2xvY2sgPSBk b3RjbG9jazsKKwlwaXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZS5jcnRjX2Nsb2NrID0gZG90 Y2xvY2s7CiAKIAlwaXBlX2NvbmZpZy0+bGFuZV9jb3VudCA9IDQ7CiAKQEAgLTIyMTUsNyArMjIx NSw3IEBAIHN0YXRpYyBib29sIGhkbWlfZGVlcF9jb2xvcl9wb3NzaWJsZShjb25zdCBzdHJ1Y3Qg aW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKIAlzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0 ZSAqY29ubmVjdG9yX3N0YXRlOwogCXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3I7CiAJ Y29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUgPQotCQkmY3J0Y19z dGF0ZS0+YmFzZS5hZGp1c3RlZF9tb2RlOworCQkmY3J0Y19zdGF0ZS0+aHcuYWRqdXN0ZWRfbW9k ZTsKIAlpbnQgaTsKIAogCWlmIChIQVNfR01DSChkZXZfcHJpdikpCkBAIC0yMzM2LDcgKzIzMzYs NyBAQCBzdGF0aWMgaW50IGludGVsX2hkbWlfY29tcHV0ZV9jbG9jayhzdHJ1Y3QgaW50ZWxfZW5j b2RlciAqZW5jb2RlciwKIHsKIAlzdHJ1Y3QgaW50ZWxfaGRtaSAqaW50ZWxfaGRtaSA9IGVuY190 b19pbnRlbF9oZG1pKCZlbmNvZGVyLT5iYXNlKTsKIAljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlf bW9kZSAqYWRqdXN0ZWRfbW9kZSA9Ci0JCSZjcnRjX3N0YXRlLT5iYXNlLmFkanVzdGVkX21vZGU7 CisJCSZjcnRjX3N0YXRlLT5ody5hZGp1c3RlZF9tb2RlOwogCWludCBicGMsIGNsb2NrID0gYWRq dXN0ZWRfbW9kZS0+Y3J0Y19jbG9jazsKIAogCWlmIChhZGp1c3RlZF9tb2RlLT5mbGFncyAmIERS TV9NT0RFX0ZMQUdfREJMQ0xLKQpAQCAtMjM3OCw3ICsyMzc4LDcgQEAgc3RhdGljIGJvb2wgaW50 ZWxfaGRtaV9saW1pdGVkX2NvbG9yX3JhbmdlKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpjcnRjX3MKIAljb25zdCBzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9jb25uZWN0b3Jfc3RhdGUgKmlu dGVsX2Nvbm5fc3RhdGUgPQogCQl0b19pbnRlbF9kaWdpdGFsX2Nvbm5lY3Rvcl9zdGF0ZShjb25u X3N0YXRlKTsKIAljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9 Ci0JCSZjcnRjX3N0YXRlLT5iYXNlLmFkanVzdGVkX21vZGU7CisJCSZjcnRjX3N0YXRlLT5ody5h ZGp1c3RlZF9tb2RlOwogCiAJLyoKIAkgKiBPdXIgWUNiQ3Igb3V0cHV0IGlzIGFsd2F5cyBsaW1p dGVkIHJhbmdlLgpAQCAtMjQwNiw3ICsyNDA2LDcgQEAgaW50IGludGVsX2hkbWlfY29tcHV0ZV9j b25maWcoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCiB7CiAJc3RydWN0IGludGVsX2hk bWkgKmludGVsX2hkbWkgPSBlbmNfdG9faW50ZWxfaGRtaSgmZW5jb2Rlci0+YmFzZSk7CiAJc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShlbmNvZGVyLT5iYXNlLmRl dik7Ci0Jc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUgPSAmcGlwZV9jb25m aWctPmJhc2UuYWRqdXN0ZWRfbW9kZTsKKwlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0 ZWRfbW9kZSA9ICZwaXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZTsKIAlzdHJ1Y3QgZHJtX2Nv bm5lY3RvciAqY29ubmVjdG9yID0gY29ubl9zdGF0ZS0+Y29ubmVjdG9yOwogCXN0cnVjdCBkcm1f c2NkYyAqc2NkYyA9ICZjb25uZWN0b3ItPmRpc3BsYXlfaW5mby5oZG1pLnNjZGM7CiAJc3RydWN0 IGludGVsX2RpZ2l0YWxfY29ubmVjdG9yX3N0YXRlICppbnRlbF9jb25uX3N0YXRlID0KZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfbHNwY29uLmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2xzcGNvbi5jCmluZGV4IGY4ZjEzMDg2NDNh OS4uNTE0NWZmOGI5NjJiIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5 L2ludGVsX2xzcGNvbi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxf bHNwY29uLmMKQEAgLTE4OSw3ICsxODksNyBAQCB2b2lkIGxzcGNvbl95Y2JjcjQyMF9jb25maWco c3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKIHsKIAljb25zdCBzdHJ1Y3QgZHJtX2Rp c3BsYXlfaW5mbyAqaW5mbyA9ICZjb25uZWN0b3ItPmRpc3BsYXlfaW5mbzsKIAljb25zdCBzdHJ1 Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9Ci0JCQkJCSZjcnRjX3N0YXRlLT5i YXNlLmFkanVzdGVkX21vZGU7CisJCQkJCSZjcnRjX3N0YXRlLT5ody5hZGp1c3RlZF9tb2RlOwog CiAJaWYgKGRybV9tb2RlX2lzXzQyMF9vbmx5KGluZm8sIGFkanVzdGVkX21vZGUpICYmCiAJICAg IGNvbm5lY3Rvci0+eWNiY3JfNDIwX2FsbG93ZWQpIHsKQEAgLTQ3NSw3ICs0NzUsNyBAQCB2b2lk IGxzcGNvbl9zZXRfaW5mb2ZyYW1lcyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKIAlz dHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICpkaWdfcG9ydCA9IGVuY190b19kaWdfcG9ydCgmZW5j b2Rlci0+YmFzZSk7CiAJc3RydWN0IGludGVsX2xzcGNvbiAqbHNwY29uID0gJmRpZ19wb3J0LT5s c3Bjb247CiAJY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUgPQot CQkmY3J0Y19zdGF0ZS0+YmFzZS5hZGp1c3RlZF9tb2RlOworCQkmY3J0Y19zdGF0ZS0+aHcuYWRq dXN0ZWRfbW9kZTsKIAogCWlmICghbHNwY29uLT5hY3RpdmUpIHsKIAkJRFJNX0VSUk9SKCJXcml0 aW5nIGluZm9mcmFtZXMgd2hpbGUgTFNQQ09OIGRpc2FibGVkID9cbiIpOwpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9sdmRzLmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9kaXNwbGF5L2ludGVsX2x2ZHMuYwppbmRleCAxMzg0MWQ3YzQ1NWIuLmYxN2Q2ZTAy NDYwZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9sdmRz LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9sdmRzLmMKQEAgLTEz NSw3ICsxMzUsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9sdmRzX2dldF9jb25maWcoc3RydWN0IGlu dGVsX2VuY29kZXIgKmVuY29kZXIsCiAJZWxzZQogCQlmbGFncyB8PSBEUk1fTU9ERV9GTEFHX1BW U1lOQzsKIAotCXBpcGVfY29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGUuZmxhZ3MgfD0gZmxhZ3M7 CisJcGlwZV9jb25maWctPmh3LmFkanVzdGVkX21vZGUuZmxhZ3MgfD0gZmxhZ3M7CiAKIAlpZiAo SU5URUxfR0VOKGRldl9wcml2KSA8IDUpCiAJCXBpcGVfY29uZmlnLT5nbWNoX3BmaXQubHZkc19i b3JkZXJfYml0cyA9CkBAIC0xNDgsNyArMTQ4LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfbHZkc19n ZXRfY29uZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAogCQlwaXBlX2NvbmZpZy0+ Z21jaF9wZml0LmNvbnRyb2wgfD0gdG1wICYgUEFORUxfOFRPNl9ESVRIRVJfRU5BQkxFOwogCX0K IAotCXBpcGVfY29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGUuY3J0Y19jbG9jayA9IHBpcGVfY29u ZmlnLT5wb3J0X2Nsb2NrOworCXBpcGVfY29uZmlnLT5ody5hZGp1c3RlZF9tb2RlLmNydGNfY2xv Y2sgPSBwaXBlX2NvbmZpZy0+cG9ydF9jbG9jazsKIH0KIAogc3RhdGljIHZvaWQgaW50ZWxfbHZk c19wcHNfZ2V0X2h3X3N0YXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKQEAg LTIzMSw3ICsyMzEsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9wcmVfZW5hYmxlX2x2ZHMoc3RydWN0 IGludGVsX2VuY29kZXIgKmVuY29kZXIsCiAJc3RydWN0IGludGVsX2x2ZHNfZW5jb2RlciAqbHZk c19lbmNvZGVyID0gdG9fbHZkc19lbmNvZGVyKCZlbmNvZGVyLT5iYXNlKTsKIAlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVuY29kZXItPmJhc2UuZGV2KTsKIAlz dHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMocGlwZV9jb25maWctPmJhc2Uu Y3J0Yyk7Ci0JY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUgPSAm cGlwZV9jb25maWctPmJhc2UuYWRqdXN0ZWRfbW9kZTsKKwljb25zdCBzdHJ1Y3QgZHJtX2Rpc3Bs YXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9ICZwaXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZTsK IAllbnVtIHBpcGUgcGlwZSA9IGNydGMtPnBpcGU7CiAJdTMyIHRlbXA7CiAKQEAgLTM5Miw3ICsz OTIsNyBAQCBzdGF0aWMgaW50IGludGVsX2x2ZHNfY29tcHV0ZV9jb25maWcoc3RydWN0IGludGVs X2VuY29kZXIgKmludGVsX2VuY29kZXIsCiAJCXRvX2x2ZHNfZW5jb2RlcigmaW50ZWxfZW5jb2Rl ci0+YmFzZSk7CiAJc3RydWN0IGludGVsX2Nvbm5lY3RvciAqaW50ZWxfY29ubmVjdG9yID0KIAkJ bHZkc19lbmNvZGVyLT5hdHRhY2hlZF9jb25uZWN0b3I7Ci0Jc3RydWN0IGRybV9kaXNwbGF5X21v ZGUgKmFkanVzdGVkX21vZGUgPSAmcGlwZV9jb25maWctPmJhc2UuYWRqdXN0ZWRfbW9kZTsKKwlz dHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9ICZwaXBlX2NvbmZpZy0+aHcu YWRqdXN0ZWRfbW9kZTsKIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVs X2NydGMocGlwZV9jb25maWctPmJhc2UuY3J0Yyk7CiAJdW5zaWduZWQgaW50IGx2ZHNfYnBwOwog CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3BhbmVsLmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3BhbmVsLmMKaW5kZXggYmMxNGU5 YzAyODVhLi41ZTNmZDM3ZDk0NzEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rp c3BsYXkvaW50ZWxfcGFuZWwuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2lu dGVsX3BhbmVsLmMKQEAgLTE3OCw3ICsxNzgsNyBAQCBpbnRlbF9wY2hfcGFuZWxfZml0dGluZyhz dHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YywKIAkJCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpwaXBlX2NvbmZpZywKIAkJCWludCBmaXR0aW5nX21vZGUpCiB7Ci0JY29uc3Qgc3RydWN0IGRy bV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUgPSAmcGlwZV9jb25maWctPmJhc2UuYWRqdXN0 ZWRfbW9kZTsKKwljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9 ICZwaXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZTsKIAlpbnQgeCA9IDAsIHkgPSAwLCB3aWR0 aCA9IDAsIGhlaWdodCA9IDA7CiAKIAkvKiBOYXRpdmUgbW9kZXMgZG9uJ3QgbmVlZCBmaXR0aW5n ICovCkBAIC0zMDAsNyArMzAwLDcgQEAgc3RhdGljIGlubGluZSB1MzIgcGFuZWxfZml0dGVyX3Nj YWxpbmcodTMyIHNvdXJjZSwgdTMyIHRhcmdldCkKIHN0YXRpYyB2b2lkIGk5NjVfc2NhbGVfYXNw ZWN0KHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZywKIAkJCSAgICAgIHUzMiAq cGZpdF9jb250cm9sKQogewotCWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3Rl ZF9tb2RlID0gJnBpcGVfY29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGU7CisJY29uc3Qgc3RydWN0 IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUgPSAmcGlwZV9jb25maWctPmh3LmFkanVz dGVkX21vZGU7CiAJdTMyIHNjYWxlZF93aWR0aCA9IGFkanVzdGVkX21vZGUtPmNydGNfaGRpc3Bs YXkgKgogCQlwaXBlX2NvbmZpZy0+cGlwZV9zcmNfaDsKIAl1MzIgc2NhbGVkX2hlaWdodCA9IHBp cGVfY29uZmlnLT5waXBlX3NyY193ICoKQEAgLTMyMSw3ICszMjEsNyBAQCBzdGF0aWMgdm9pZCBp OXh4X3NjYWxlX2FzcGVjdChzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcsCiAJ CQkgICAgICB1MzIgKnBmaXRfY29udHJvbCwgdTMyICpwZml0X3BnbV9yYXRpb3MsCiAJCQkgICAg ICB1MzIgKmJvcmRlcikKIHsKLQlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9k ZSA9ICZwaXBlX2NvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlOworCXN0cnVjdCBkcm1fZGlzcGxh eV9tb2RlICphZGp1c3RlZF9tb2RlID0gJnBpcGVfY29uZmlnLT5ody5hZGp1c3RlZF9tb2RlOwog CXUzMiBzY2FsZWRfd2lkdGggPSBhZGp1c3RlZF9tb2RlLT5jcnRjX2hkaXNwbGF5ICoKIAkJcGlw ZV9jb25maWctPnBpcGVfc3JjX2g7CiAJdTMyIHNjYWxlZF9oZWlnaHQgPSBwaXBlX2NvbmZpZy0+ cGlwZV9zcmNfdyAqCkBAIC0zODAsNyArMzgwLDcgQEAgdm9pZCBpbnRlbF9nbWNoX3BhbmVsX2Zp dHRpbmcoc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMsCiB7CiAJc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShpbnRlbF9jcnRjLT5iYXNlLmRldik7CiAJdTMy IHBmaXRfY29udHJvbCA9IDAsIHBmaXRfcGdtX3JhdGlvcyA9IDAsIGJvcmRlciA9IDA7Ci0Jc3Ry dWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUgPSAmcGlwZV9jb25maWctPmJhc2Uu YWRqdXN0ZWRfbW9kZTsKKwlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9 ICZwaXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZTsKIAogCS8qIE5hdGl2ZSBtb2RlcyBkb24n dCBuZWVkIGZpdHRpbmcgKi8KIAlpZiAoYWRqdXN0ZWRfbW9kZS0+Y3J0Y19oZGlzcGxheSA9PSBw aXBlX2NvbmZpZy0+cGlwZV9zcmNfdyAmJgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZGlzcGxheS9pbnRlbF9waXBlX2NyYy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxh eS9pbnRlbF9waXBlX2NyYy5jCmluZGV4IDYyNjBhMjA4MjcxOS4uZmM2MDI1MzNhNjAyIDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3BpcGVfY3JjLmMKKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9waXBlX2NyYy5jCkBAIC0zMTMs NyArMzEzLDcgQEAgaW50ZWxfY3J0Y19jcmNfc2V0dXBfd29ya2Fyb3VuZHMoc3RydWN0IGludGVs X2NydGMgKmNydGMsIGJvb2wgZW5hYmxlKQogCXBpcGVfY29uZmlnLT5jcmNfZW5hYmxlZCA9IGVu YWJsZTsKIAogCWlmIChJU19IQVNXRUxMKGRldl9wcml2KSAmJgotCSAgICBwaXBlX2NvbmZpZy0+ YmFzZS5hY3RpdmUgJiYgY3J0Yy0+cGlwZSA9PSBQSVBFX0EgJiYKKwkgICAgcGlwZV9jb25maWct Pmh3LmFjdGl2ZSAmJiBjcnRjLT5waXBlID09IFBJUEVfQSAmJgogCSAgICBwaXBlX2NvbmZpZy0+ Y3B1X3RyYW5zY29kZXIgPT0gVFJBTlNDT0RFUl9FRFApCiAJCXBpcGVfY29uZmlnLT5iYXNlLm1v ZGVfY2hhbmdlZCA9IHRydWU7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rp c3BsYXkvaW50ZWxfcHNyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3Bz ci5jCmluZGV4IGE4ZjNlZGM5YzQ4Mi4uNjJhOTBiNWFlZThmIDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3Bzci5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2Rpc3BsYXkvaW50ZWxfcHNyLmMKQEAgLTUzNywxMSArNTM3LDExIEBAIHRyYW5zY29kZXJf aGFzX3BzcjIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBlbnVtIHRyYW5zY29k ZXIgdHJhbnMpCiAKIHN0YXRpYyB1MzIgaW50ZWxfZ2V0X2ZyYW1lX3RpbWVfdXMoY29uc3Qgc3Ry dWN0IGludGVsX2NydGNfc3RhdGUgKmNzdGF0ZSkKIHsKLQlpZiAoIWNzdGF0ZSB8fCAhY3N0YXRl LT5iYXNlLmFjdGl2ZSkKKwlpZiAoIWNzdGF0ZSB8fCAhY3N0YXRlLT5ody5hY3RpdmUpCiAJCXJl dHVybiAwOwogCiAJcmV0dXJuIERJVl9ST1VORF9VUCgxMDAwICogMTAwMCwKLQkJCSAgICBkcm1f bW9kZV92cmVmcmVzaCgmY3N0YXRlLT5iYXNlLmFkanVzdGVkX21vZGUpKTsKKwkJCSAgICBkcm1f bW9kZV92cmVmcmVzaCgmY3N0YXRlLT5ody5hZGp1c3RlZF9tb2RlKSk7CiB9CiAKIHN0YXRpYyB2 b2lkIHBzcjJfcHJvZ3JhbV9pZGxlX2ZyYW1lcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYsCkBAIC02MDYsOCArNjA2LDggQEAgc3RhdGljIGJvb2wgaW50ZWxfcHNyMl9jb25maWdf dmFsaWQoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwKIAkJCQkgICAgc3RydWN0IGludGVsX2Ny dGNfc3RhdGUgKmNydGNfc3RhdGUpCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gZHBfdG9faTkxNShpbnRlbF9kcCk7Ci0JaW50IGNydGNfaGRpc3BsYXkgPSBjcnRjX3N0 YXRlLT5iYXNlLmFkanVzdGVkX21vZGUuY3J0Y19oZGlzcGxheTsKLQlpbnQgY3J0Y192ZGlzcGxh eSA9IGNydGNfc3RhdGUtPmJhc2UuYWRqdXN0ZWRfbW9kZS5jcnRjX3ZkaXNwbGF5OworCWludCBj cnRjX2hkaXNwbGF5ID0gY3J0Y19zdGF0ZS0+aHcuYWRqdXN0ZWRfbW9kZS5jcnRjX2hkaXNwbGF5 OworCWludCBjcnRjX3ZkaXNwbGF5ID0gY3J0Y19zdGF0ZS0+aHcuYWRqdXN0ZWRfbW9kZS5jcnRj X3ZkaXNwbGF5OwogCWludCBwc3JfbWF4X2ggPSAwLCBwc3JfbWF4X3YgPSAwOwogCiAJaWYgKCFk ZXZfcHJpdi0+cHNyLnNpbmtfcHNyMl9zdXBwb3J0KQpAQCAtNjczLDcgKzY3Myw3IEBAIHZvaWQg aW50ZWxfcHNyX2NvbXB1dGVfY29uZmlnKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCiAJc3Ry dWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqZGlnX3BvcnQgPSBkcF90b19kaWdfcG9ydChpbnRlbF9k cCk7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZHBfdG9faTkxNShpbnRl bF9kcCk7CiAJY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUgPQot CQkmY3J0Y19zdGF0ZS0+YmFzZS5hZGp1c3RlZF9tb2RlOworCQkmY3J0Y19zdGF0ZS0+aHcuYWRq dXN0ZWRfbW9kZTsKIAlpbnQgcHNyX3NldHVwX3RpbWU7CiAKIAlpZiAoIUNBTl9QU1IoZGV2X3By aXYpKQpAQCAtMTEzNyw3ICsxMTM3LDcgQEAgc3RhdGljIGludCBpbnRlbF9wc3JfZmFzdHNldF9m b3JjZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJCQlnb3RvIGVycm9yOwog CQl9CiAKLQkJaWYgKGNydGNfc3RhdGUtPmJhc2UuYWN0aXZlICYmIGNydGNfc3RhdGUtPmhhc19w c3IpIHsKKwkJaWYgKGNydGNfc3RhdGUtPmh3LmFjdGl2ZSAmJiBjcnRjX3N0YXRlLT5oYXNfcHNy KSB7CiAJCQkvKiBNYXJrIG1vZGUgYXMgY2hhbmdlZCB0byB0cmlnZ2VyIGEgcGlwZS0+dXBkYXRl KCkgKi8KIAkJCWNydGNfc3RhdGUtPmJhc2UubW9kZV9jaGFuZ2VkID0gdHJ1ZTsKIAkJCWJyZWFr OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9zZHZvLmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3Nkdm8uYwppbmRleCA0N2Y1ZDg3 YTkzOGEuLjk3YWU4Y2MxMzE0ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlz cGxheS9pbnRlbF9zZHZvLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRl bF9zZHZvLmMKQEAgLTEwODcsNyArMTA4Nyw3IEBAIHN0YXRpYyBib29sIGludGVsX3Nkdm9fY29t cHV0ZV9hdmlfaW5mb2ZyYW1lKHN0cnVjdCBpbnRlbF9zZHZvICppbnRlbF9zZHZvLAogewogCXN0 cnVjdCBoZG1pX2F2aV9pbmZvZnJhbWUgKmZyYW1lID0gJmNydGNfc3RhdGUtPmluZm9mcmFtZXMu YXZpLmF2aTsKIAljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9 Ci0JCSZjcnRjX3N0YXRlLT5iYXNlLmFkanVzdGVkX21vZGU7CisJCSZjcnRjX3N0YXRlLT5ody5h ZGp1c3RlZF9tb2RlOwogCWludCByZXQ7CiAKIAlpZiAoIWNydGNfc3RhdGUtPmhhc19oZG1pX3Np bmspCkBAIC0xMjc2LDggKzEyNzYsOCBAQCBzdGF0aWMgaW50IGludGVsX3Nkdm9fY29tcHV0ZV9j b25maWcoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCiAJCXRvX2ludGVsX3Nkdm9fY29u bmVjdG9yX3N0YXRlKGNvbm5fc3RhdGUpOwogCXN0cnVjdCBpbnRlbF9zZHZvX2Nvbm5lY3RvciAq aW50ZWxfc2R2b19jb25uZWN0b3IgPQogCQl0b19pbnRlbF9zZHZvX2Nvbm5lY3Rvcihjb25uX3N0 YXRlLT5jb25uZWN0b3IpOwotCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2Rl ID0gJnBpcGVfY29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGU7Ci0Jc3RydWN0IGRybV9kaXNwbGF5 X21vZGUgKm1vZGUgPSAmcGlwZV9jb25maWctPmJhc2UubW9kZTsKKwlzdHJ1Y3QgZHJtX2Rpc3Bs YXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9ICZwaXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZTsK KwlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSA9ICZwaXBlX2NvbmZpZy0+aHcubW9kZTsK IAogCURSTV9ERUJVR19LTVMoImZvcmNpbmcgYnBjIHRvIDggZm9yIFNEVk9cbiIpOwogCXBpcGVf Y29uZmlnLT5waXBlX2JwcCA9IDgqMzsKQEAgLTE0MzAsMTIgKzE0MzAsMTIgQEAgc3RhdGljIHZv aWQgaW50ZWxfc2R2b19wcmVfZW5hYmxlKHN0cnVjdCBpbnRlbF9lbmNvZGVyICppbnRlbF9lbmNv ZGVyLAogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoaW50 ZWxfZW5jb2Rlci0+YmFzZS5kZXYpOwogCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50 ZWxfY3J0YyhjcnRjX3N0YXRlLT5iYXNlLmNydGMpOwotCWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxh eV9tb2RlICphZGp1c3RlZF9tb2RlID0gJmNydGNfc3RhdGUtPmJhc2UuYWRqdXN0ZWRfbW9kZTsK Kwljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9ICZjcnRjX3N0 YXRlLT5ody5hZGp1c3RlZF9tb2RlOwogCWNvbnN0IHN0cnVjdCBpbnRlbF9zZHZvX2Nvbm5lY3Rv cl9zdGF0ZSAqc2R2b19zdGF0ZSA9CiAJCXRvX2ludGVsX3Nkdm9fY29ubmVjdG9yX3N0YXRlKGNv bm5fc3RhdGUpOwogCWNvbnN0IHN0cnVjdCBpbnRlbF9zZHZvX2Nvbm5lY3RvciAqaW50ZWxfc2R2 b19jb25uZWN0b3IgPQogCQl0b19pbnRlbF9zZHZvX2Nvbm5lY3Rvcihjb25uX3N0YXRlLT5jb25u ZWN0b3IpOwotCWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlID0gJmNydGNfc3Rh dGUtPmJhc2UubW9kZTsKKwljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSA9ICZj cnRjX3N0YXRlLT5ody5tb2RlOwogCXN0cnVjdCBpbnRlbF9zZHZvICppbnRlbF9zZHZvID0gdG9f c2R2byhpbnRlbF9lbmNvZGVyKTsKIAl1MzIgc2R2b3g7CiAJc3RydWN0IGludGVsX3Nkdm9faW5f b3V0X21hcCBpbl9vdXQ7CkBAIC0xNjI5LDcgKzE2MjksNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9z ZHZvX2dldF9jb25maWcoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCiAJCQlmbGFncyB8 PSBEUk1fTU9ERV9GTEFHX05WU1lOQzsKIAl9CiAKLQlwaXBlX2NvbmZpZy0+YmFzZS5hZGp1c3Rl ZF9tb2RlLmZsYWdzIHw9IGZsYWdzOworCXBpcGVfY29uZmlnLT5ody5hZGp1c3RlZF9tb2RlLmZs YWdzIHw9IGZsYWdzOwogCiAJLyoKIAkgKiBwaXhlbCBtdWx0aXBsaWVyIHJlYWRvdXQgaXMgdHJp Y2t5OiBPbmx5IG9uIGk5MTVnL2dtIGl0IGlzIHN0b3JlZCBpbgpAQCAtMTY0OSw3ICsxNjQ5LDcg QEAgc3RhdGljIHZvaWQgaW50ZWxfc2R2b19nZXRfY29uZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVy ICplbmNvZGVyLAogCWlmIChwaXBlX2NvbmZpZy0+cGl4ZWxfbXVsdGlwbGllcikKIAkJZG90Y2xv Y2sgLz0gcGlwZV9jb25maWctPnBpeGVsX211bHRpcGxpZXI7CiAKLQlwaXBlX2NvbmZpZy0+YmFz ZS5hZGp1c3RlZF9tb2RlLmNydGNfY2xvY2sgPSBkb3RjbG9jazsKKwlwaXBlX2NvbmZpZy0+aHcu YWRqdXN0ZWRfbW9kZS5jcnRjX2Nsb2NrID0gZG90Y2xvY2s7CiAKIAkvKiBDcm9zcyBjaGVjayB0 aGUgcG9ydCBwaXhlbCBtdWx0aXBsaWVyIHdpdGggdGhlIHNkdm8gZW5jb2RlciBzdGF0ZS4gKi8K IAlpZiAoaW50ZWxfc2R2b19nZXRfdmFsdWUoaW50ZWxfc2R2bywgU0RWT19DTURfR0VUX0NMT0NL X1JBVEVfTVVMVCwKQEAgLTE3MDEsNyArMTcwMSw3IEBAIHN0YXRpYyB2b2lkIGludGVsX3Nkdm9f ZW5hYmxlX2F1ZGlvKHN0cnVjdCBpbnRlbF9zZHZvICppbnRlbF9zZHZvLAogCQkJCSAgICBjb25z dCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubl9zdGF0ZSkKIHsKIAljb25zdCBzdHJ1 Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9Ci0JCSZjcnRjX3N0YXRlLT5iYXNl LmFkanVzdGVkX21vZGU7CisJCSZjcnRjX3N0YXRlLT5ody5hZGp1c3RlZF9tb2RlOwogCXN0cnVj dCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IgPSBjb25uX3N0YXRlLT5jb25uZWN0b3I7CiAJdTgg KmVsZCA9IGNvbm5lY3Rvci0+ZWxkOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9kaXNwbGF5L2ludGVsX3Nwcml0ZS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9p bnRlbF9zcHJpdGUuYwppbmRleCA1YWUxMmFiM2M1YjcuLmVmMGNhN2M2ZDExZiAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9zcHJpdGUuYworKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3Nwcml0ZS5jCkBAIC04Myw3ICs4Myw3IEBA IHZvaWQgaW50ZWxfcGlwZV91cGRhdGVfc3RhcnQoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3Rh dGUgKm5ld19jcnRjX3N0YXRlKQogewogCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50 ZWxfY3J0YyhuZXdfY3J0Y19zdGF0ZS0+YmFzZS5jcnRjKTsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGMtPmJhc2UuZGV2KTsKLQljb25zdCBzdHJ1Y3Qg ZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9ICZuZXdfY3J0Y19zdGF0ZS0+YmFzZS5h ZGp1c3RlZF9tb2RlOworCWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9t b2RlID0gJm5ld19jcnRjX3N0YXRlLT5ody5hZGp1c3RlZF9tb2RlOwogCWxvbmcgdGltZW91dCA9 IG1zZWNzX3RvX2ppZmZpZXNfdGltZW91dCgxKTsKIAlpbnQgc2NhbmxpbmUsIG1pbiwgbWF4LCB2 Ymxhbmtfc3RhcnQ7CiAJd2FpdF9xdWV1ZV9oZWFkX3QgKndxID0gZHJtX2NydGNfdmJsYW5rX3dh aXRxdWV1ZSgmY3J0Yy0+YmFzZSk7CkBAIC0xNTEzLDcgKzE1MTMsNyBAQCBnNHhfc3ByaXRlX2No ZWNrX3NjYWxpbmcoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCiAJY29uc3Qg c3RydWN0IGRybV9yZWN0ICpkc3QgPSAmcGxhbmVfc3RhdGUtPmJhc2UuZHN0OwogCWludCBzcmNf eCwgc3JjX3csIHNyY19oLCBjcnRjX3csIGNydGNfaDsKIAljb25zdCBzdHJ1Y3QgZHJtX2Rpc3Bs YXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9Ci0JCSZjcnRjX3N0YXRlLT5iYXNlLmFkanVzdGVkX21v ZGU7CisJCSZjcnRjX3N0YXRlLT5ody5hZGp1c3RlZF9tb2RlOwogCXVuc2lnbmVkIGludCBzdHJp ZGUgPSBwbGFuZV9zdGF0ZS0+Y29sb3JfcGxhbmVbMF0uc3RyaWRlOwogCXVuc2lnbmVkIGludCBj cHAgPSBmYi0+Zm9ybWF0LT5jcHBbMF07CiAJdW5zaWduZWQgaW50IHdpZHRoX2J5dGVzOwpAQCAt MTcyNyw4ICsxNzI3LDggQEAgc3RhdGljIGludCBza2xfcGxhbmVfY2hlY2tfZmIoY29uc3Qgc3Ry dWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCiAJfQogCiAJLyogWS10aWxpbmcgaXMg bm90IHN1cHBvcnRlZCBpbiBJRi1JRCBJbnRlcmxhY2UgbW9kZSAqLwotCWlmIChjcnRjX3N0YXRl LT5iYXNlLmVuYWJsZSAmJgotCSAgICBjcnRjX3N0YXRlLT5iYXNlLmFkanVzdGVkX21vZGUuZmxh Z3MgJiBEUk1fTU9ERV9GTEFHX0lOVEVSTEFDRSAmJgorCWlmIChjcnRjX3N0YXRlLT5ody5lbmFi bGUgJiYKKwkgICAgY3J0Y19zdGF0ZS0+aHcuYWRqdXN0ZWRfbW9kZS5mbGFncyAmIERSTV9NT0RF X0ZMQUdfSU5URVJMQUNFICYmCiAJICAgIChmYi0+bW9kaWZpZXIgPT0gSTkxNV9GT1JNQVRfTU9E X1lfVElMRUQgfHwKIAkgICAgIGZiLT5tb2RpZmllciA9PSBJOTE1X0ZPUk1BVF9NT0RfWWZfVElM RUQgfHwKIAkgICAgIGZiLT5tb2RpZmllciA9PSBJOTE1X0ZPUk1BVF9NT0RfWV9USUxFRF9DQ1Mg fHwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfdHYuYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfdHYuYwppbmRleCA3MDcyNmI0ODEy NDQuLmU4MDBkNDViODEzZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxh eS9pbnRlbF90di5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfdHYu YwpAQCAtMTA4NSw3ICsxMDg1LDcgQEAgaW50ZWxfdHZfZ2V0X2NvbmZpZyhzdHJ1Y3QgaW50ZWxf ZW5jb2RlciAqZW5jb2RlciwKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PSB0b19pOTE1KGVuY29kZXItPmJhc2UuZGV2KTsKIAlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAq YWRqdXN0ZWRfbW9kZSA9Ci0JCSZwaXBlX2NvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlOworCQkm cGlwZV9jb25maWctPmh3LmFkanVzdGVkX21vZGU7CiAJc3RydWN0IGRybV9kaXNwbGF5X21vZGUg bW9kZSA9IHt9OwogCXUzMiB0dl9jdGwsIGhjdGwxLCBoY3RsMywgdmN0bDEsIHZjdGwyLCB0bXA7 CiAJc3RydWN0IHR2X21vZGUgdHZfbW9kZSA9IHt9OwpAQCAtMTE4OCw3ICsxMTg4LDcgQEAgaW50 ZWxfdHZfY29tcHV0ZV9jb25maWcoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCiAJCXRv X2ludGVsX3R2X2Nvbm5lY3Rvcl9zdGF0ZShjb25uX3N0YXRlKTsKIAljb25zdCBzdHJ1Y3QgdHZf bW9kZSAqdHZfbW9kZSA9IGludGVsX3R2X21vZGVfZmluZChjb25uX3N0YXRlKTsKIAlzdHJ1Y3Qg ZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9Ci0JCSZwaXBlX2NvbmZpZy0+YmFzZS5h ZGp1c3RlZF9tb2RlOworCQkmcGlwZV9jb25maWctPmh3LmFkanVzdGVkX21vZGU7CiAJaW50IGhk aXNwbGF5ID0gYWRqdXN0ZWRfbW9kZS0+Y3J0Y19oZGlzcGxheTsKIAlpbnQgdmRpc3BsYXkgPSBh ZGp1c3RlZF9tb2RlLT5jcnRjX3ZkaXNwbGF5OwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9kaXNwbGF5L2ludGVsX3Zkc2MuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3Bs YXkvaW50ZWxfdmRzYy5jCmluZGV4IDg5NmIwYzMzNGY1ZS4uNzU3YjI3NmViM2ZjIDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3Zkc2MuYworKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3Zkc2MuYwpAQCAtMzI5LDggKzMyOSw4IEBA IGludCBpbnRlbF9kcF9jb21wdXRlX2RzY19wYXJhbXMoc3RydWN0IGludGVsX2RwICppbnRlbF9k cCwKIAlpbnQgY29sdW1uX2luZGV4ID0gMDsKIAl1OCBsaW5lX2J1Zl9kZXB0aCA9IDA7CiAKLQl2 ZHNjX2NmZy0+cGljX3dpZHRoID0gcGlwZV9jb25maWctPmJhc2UuYWRqdXN0ZWRfbW9kZS5jcnRj X2hkaXNwbGF5OwotCXZkc2NfY2ZnLT5waWNfaGVpZ2h0ID0gcGlwZV9jb25maWctPmJhc2UuYWRq dXN0ZWRfbW9kZS5jcnRjX3ZkaXNwbGF5OworCXZkc2NfY2ZnLT5waWNfd2lkdGggPSBwaXBlX2Nv bmZpZy0+aHcuYWRqdXN0ZWRfbW9kZS5jcnRjX2hkaXNwbGF5OworCXZkc2NfY2ZnLT5waWNfaGVp Z2h0ID0gcGlwZV9jb25maWctPmh3LmFkanVzdGVkX21vZGUuY3J0Y192ZGlzcGxheTsKIAl2ZHNj X2NmZy0+c2xpY2Vfd2lkdGggPSBESVZfUk9VTkRfVVAodmRzY19jZmctPnBpY193aWR0aCwKIAkJ CQkJICAgICBwaXBlX2NvbmZpZy0+ZHNjLnNsaWNlX2NvdW50KTsKIAkvKgpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS92bHZfZHNpLmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9kaXNwbGF5L3Zsdl9kc2kuYwppbmRleCA1MDA2NGNkZTA3MjQuLjNiZjgzODI3OWZjMiAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS92bHZfZHNpLmMKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS92bHZfZHNpLmMKQEAgLTI2Myw3ICsyNjMsNyBA QCBzdGF0aWMgaW50IGludGVsX2RzaV9jb21wdXRlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfZW5jb2Rl ciAqZW5jb2RlciwKIAlzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICppbnRlbF9jb25uZWN0b3IgPSBp bnRlbF9kc2ktPmF0dGFjaGVkX2Nvbm5lY3RvcjsKIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9 IHRvX2ludGVsX2NydGMocGlwZV9jb25maWctPmJhc2UuY3J0Yyk7CiAJY29uc3Qgc3RydWN0IGRy bV9kaXNwbGF5X21vZGUgKmZpeGVkX21vZGUgPSBpbnRlbF9jb25uZWN0b3ItPnBhbmVsLmZpeGVk X21vZGU7Ci0Jc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUgPSAmcGlwZV9j b25maWctPmJhc2UuYWRqdXN0ZWRfbW9kZTsKKwlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRq dXN0ZWRfbW9kZSA9ICZwaXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZTsKIAlpbnQgcmV0Owog CiAJRFJNX0RFQlVHX0tNUygiXG4iKTsKQEAgLTEwMzIsNyArMTAzMiw3IEBAIHN0YXRpYyB2b2lk IGJ4dF9kc2lfZ2V0X3BpcGVfY29uZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAog CXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBlbmNvZGVyLT5iYXNlLmRldjsKIAlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7CiAJc3RydWN0IGRybV9kaXNw bGF5X21vZGUgKmFkanVzdGVkX21vZGUgPQotCQkJCQkmcGlwZV9jb25maWctPmJhc2UuYWRqdXN0 ZWRfbW9kZTsKKwkJCQkJJnBpcGVfY29uZmlnLT5ody5hZGp1c3RlZF9tb2RlOwogCXN0cnVjdCBk cm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2RlX3N3OwogCXN0cnVjdCBpbnRlbF9jcnRjICpj cnRjID0gdG9faW50ZWxfY3J0YyhwaXBlX2NvbmZpZy0+YmFzZS5jcnRjKTsKIAlzdHJ1Y3QgaW50 ZWxfZHNpICppbnRlbF9kc2kgPSBlbmNfdG9faW50ZWxfZHNpKCZlbmNvZGVyLT5iYXNlKTsKQEAg LTEwNDUsNyArMTA0NSw3IEBAIHN0YXRpYyB2b2lkIGJ4dF9kc2lfZ2V0X3BpcGVfY29uZmlnKHN0 cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAogCQkJCWNydGNfaGJsYW5rX3N0YXJ0X3N3LCBj cnRjX2hibGFua19lbmRfc3c7CiAKIAkvKiBGSVhNRTogaHcgcmVhZG91dCBzaG91bGQgbm90IGRl cGVuZCBvbiBTVyBzdGF0ZSAqLwotCWFkanVzdGVkX21vZGVfc3cgPSAmY3J0Yy0+Y29uZmlnLT5i YXNlLmFkanVzdGVkX21vZGU7CisJYWRqdXN0ZWRfbW9kZV9zdyA9ICZjcnRjLT5jb25maWctPmh3 LmFkanVzdGVkX21vZGU7CiAKIAkvKgogCSAqIEF0bGVhc3Qgb25lIHBvcnQgaXMgYWN0aXZlIGFz IGVuY29kZXItPmdldF9jb25maWcgY2FsbGVkIG9ubHkgaWYKQEAgLTEyMDQsNyArMTIwNCw3IEBA IHN0YXRpYyB2b2lkIGludGVsX2RzaV9nZXRfY29uZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVyICpl bmNvZGVyLAogCX0KIAogCWlmIChwY2xrKSB7Ci0JCXBpcGVfY29uZmlnLT5iYXNlLmFkanVzdGVk X21vZGUuY3J0Y19jbG9jayA9IHBjbGs7CisJCXBpcGVfY29uZmlnLT5ody5hZGp1c3RlZF9tb2Rl LmNydGNfY2xvY2sgPSBwY2xrOwogCQlwaXBlX2NvbmZpZy0+cG9ydF9jbG9jayA9IHBjbGs7CiAJ fQogfQpAQCAtMTMxNyw3ICsxMzE3LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfZHNpX3ByZXBhcmUo c3RydWN0IGludGVsX2VuY29kZXIgKmludGVsX2VuY29kZXIsCiAJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwogCXN0cnVjdCBpbnRlbF9jcnRjICppbnRl bF9jcnRjID0gdG9faW50ZWxfY3J0YyhwaXBlX2NvbmZpZy0+YmFzZS5jcnRjKTsKIAlzdHJ1Y3Qg aW50ZWxfZHNpICppbnRlbF9kc2kgPSBlbmNfdG9faW50ZWxfZHNpKGVuY29kZXIpOwotCWNvbnN0 IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2RlID0gJnBpcGVfY29uZmlnLT5i YXNlLmFkanVzdGVkX21vZGU7CisJY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVz dGVkX21vZGUgPSAmcGlwZV9jb25maWctPmh3LmFkanVzdGVkX21vZGU7CiAJZW51bSBwb3J0IHBv cnQ7CiAJdW5zaWduZWQgaW50IGJwcCA9IG1pcGlfZHNpX3BpeGVsX2Zvcm1hdF90b19icHAoaW50 ZWxfZHNpLT5waXhlbF9mb3JtYXQpOwogCXUzMiB2YWwsIHRtcDsKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kZWJ1Z2ZzLmMKaW5kZXggYjNmNzhlNjQ5NWZkLi4xNGNmYmEyNjY1ODUgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZGVidWdmcy5jCkBAIC0yNjc5LDExICsyNjc5LDExIEBAIHN0YXRpYyBpbnQg aTkxNV9kaXNwbGF5X2luZm8oc3RydWN0IHNlcV9maWxlICptLCB2b2lkICp1bnVzZWQpCiAKIAkJ c2VxX3ByaW50ZihtLCAiQ1JUQyAlZDogcGlwZTogJWMsIGFjdGl2ZT0lcywgKHNpemU9JWR4JWQp LCBkaXRoZXI9JXMsIGJwcD0lZFxuIiwKIAkJCSAgIGNydGMtPmJhc2UuYmFzZS5pZCwgcGlwZV9u YW1lKGNydGMtPnBpcGUpLAotCQkJICAgeWVzbm8ocGlwZV9jb25maWctPmJhc2UuYWN0aXZlKSwK KwkJCSAgIHllc25vKHBpcGVfY29uZmlnLT5ody5hY3RpdmUpLAogCQkJICAgcGlwZV9jb25maWct PnBpcGVfc3JjX3csIHBpcGVfY29uZmlnLT5waXBlX3NyY19oLAogCQkJICAgeWVzbm8ocGlwZV9j b25maWctPmRpdGhlciksIHBpcGVfY29uZmlnLT5waXBlX2JwcCk7CiAKLQkJaWYgKHBpcGVfY29u ZmlnLT5iYXNlLmFjdGl2ZSkgeworCQlpZiAocGlwZV9jb25maWctPmh3LmFjdGl2ZSkgewogCQkJ c3RydWN0IGludGVsX3BsYW5lICpjdXJzb3IgPQogCQkJCXRvX2ludGVsX3BsYW5lKGNydGMtPmJh c2UuY3Vyc29yKTsKIApAQCAtNDE1Niw3ICs0MTU2LDcgQEAgc3RhdGljIGludCBpOTE1X2RycnNf Y3RsX3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKQogCiAJCWNydGNfc3RhdGUgPSB0b19pbnRlbF9j cnRjX3N0YXRlKGNydGMtPmJhc2Uuc3RhdGUpOwogCi0JCWlmICghY3J0Y19zdGF0ZS0+YmFzZS5h Y3RpdmUgfHwKKwkJaWYgKCFjcnRjX3N0YXRlLT5ody5hY3RpdmUgfHwKIAkJICAgICFjcnRjX3N0 YXRlLT5oYXNfZHJycykKIAkJCWdvdG8gb3V0OwogCkBAIC00MjM4LDcgKzQyMzgsNyBAQCBpOTE1 X2ZpZm9fdW5kZXJydW5fcmVzZXRfd3JpdGUoc3RydWN0IGZpbGUgKmZpbHAsCiAJCQkJcmV0ID0g d2FpdF9mb3JfY29tcGxldGlvbl9pbnRlcnJ1cHRpYmxlKCZjb21taXQtPmZsaXBfZG9uZSk7CiAJ CX0KIAotCQlpZiAoIXJldCAmJiBjcnRjX3N0YXRlLT5iYXNlLmFjdGl2ZSkgeworCQlpZiAoIXJl dCAmJiBjcnRjX3N0YXRlLT5ody5hY3RpdmUpIHsKIAkJCURSTV9ERUJVR19LTVMoIlJlLWFybWlu ZyBGSUZPIHVuZGVycnVucyBvbiBwaXBlICVjXG4iLAogCQkJCSAgICAgIHBpcGVfbmFtZShpbnRl bF9jcnRjLT5waXBlKSk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X3BtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCmluZGV4IDU2MTgwZmRmOTVl Zi4uNWM5YTYxZjM4ZjdhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9w bS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKQEAgLTc5OSw3ICs3OTks NyBAQCBzdGF0aWMgYm9vbCBpbnRlbF93bV9wbGFuZV92aXNpYmxlKGNvbnN0IHN0cnVjdCBpbnRl bF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAogCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0 b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFuZSk7CiAKIAkvKiBGSVhNRSBjaGVj ayB0aGUgJ2VuYWJsZScgaW5zdGVhZCAqLwotCWlmICghY3J0Y19zdGF0ZS0+YmFzZS5hY3RpdmUp CisJaWYgKCFjcnRjX3N0YXRlLT5ody5hY3RpdmUpCiAJCXJldHVybiBmYWxzZTsKIAogCS8qCkBA IC04NTIsNyArODUyLDcgQEAgc3RhdGljIHZvaWQgcGluZXZpZXdfdXBkYXRlX3dtKHN0cnVjdCBp bnRlbF9jcnRjICp1bnVzZWRfY3J0YykKIAljcnRjID0gc2luZ2xlX2VuYWJsZWRfY3J0YyhkZXZf cHJpdik7CiAJaWYgKGNydGMpIHsKIAkJY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFk anVzdGVkX21vZGUgPQotCQkJJmNydGMtPmNvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlOworCQkJ JmNydGMtPmNvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZTsKIAkJY29uc3Qgc3RydWN0IGRybV9mcmFt ZWJ1ZmZlciAqZmIgPQogCQkJY3J0Yy0+YmFzZS5wcmltYXJ5LT5zdGF0ZS0+ZmI7CiAJCWludCBj cHAgPSBmYi0+Zm9ybWF0LT5jcHBbMF07CkBAIC0xMDg4LDcgKzEwODgsNyBAQCBzdGF0aWMgdTE2 IGc0eF9jb21wdXRlX3dtKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRl LAogCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0 ZS0+YmFzZS5wbGFuZSk7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9f aTkxNShwbGFuZS0+YmFzZS5kZXYpOwogCWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICph ZGp1c3RlZF9tb2RlID0KLQkJJmNydGNfc3RhdGUtPmJhc2UuYWRqdXN0ZWRfbW9kZTsKKwkJJmNy dGNfc3RhdGUtPmh3LmFkanVzdGVkX21vZGU7CiAJdW5zaWduZWQgaW50IGxhdGVuY3kgPSBkZXZf cHJpdi0+d20ucHJpX2xhdGVuY3lbbGV2ZWxdICogMTA7CiAJdW5zaWduZWQgaW50IGNsb2NrLCBo dG90YWwsIGNwcCwgd2lkdGgsIHdtOwogCkBAIC0xNDAwLDcgKzE0MDAsNyBAQCBzdGF0aWMgaW50 IGc0eF9jb21wdXRlX2ludGVybWVkaWF0ZV93bShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqbmV3 X2NydGNfc3RhdGUpCiAJY29uc3Qgc3RydWN0IGc0eF93bV9zdGF0ZSAqYWN0aXZlID0gJm9sZF9j cnRjX3N0YXRlLT53bS5nNHgub3B0aW1hbDsKIAllbnVtIHBsYW5lX2lkIHBsYW5lX2lkOwogCi0J aWYgKCFuZXdfY3J0Y19zdGF0ZS0+YmFzZS5hY3RpdmUgfHwgZHJtX2F0b21pY19jcnRjX25lZWRz X21vZGVzZXQoJm5ld19jcnRjX3N0YXRlLT5iYXNlKSkgeworCWlmICghbmV3X2NydGNfc3RhdGUt Pmh3LmFjdGl2ZSB8fCBkcm1fYXRvbWljX2NydGNfbmVlZHNfbW9kZXNldCgmbmV3X2NydGNfc3Rh dGUtPmJhc2UpKSB7CiAJCSppbnRlcm1lZGlhdGUgPSAqb3B0aW1hbDsKIAogCQlpbnRlcm1lZGlh dGUtPmN4c3IgPSBmYWxzZTsKQEAgLTE1OTQsNyArMTU5NCw3IEBAIHN0YXRpYyB1MTYgdmx2X2Nv bXB1dGVfd21fbGV2ZWwoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUs CiAJc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRl LT5iYXNlLnBsYW5lKTsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19p OTE1KHBsYW5lLT5iYXNlLmRldik7CiAJY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFk anVzdGVkX21vZGUgPQotCQkmY3J0Y19zdGF0ZS0+YmFzZS5hZGp1c3RlZF9tb2RlOworCQkmY3J0 Y19zdGF0ZS0+aHcuYWRqdXN0ZWRfbW9kZTsKIAl1bnNpZ25lZCBpbnQgY2xvY2ssIGh0b3RhbCwg Y3BwLCB3aWR0aCwgd207CiAKIAlpZiAoZGV2X3ByaXYtPndtLnByaV9sYXRlbmN5W2xldmVsXSA9 PSAwKQpAQCAtMjAzMyw3ICsyMDMzLDcgQEAgc3RhdGljIGludCB2bHZfY29tcHV0ZV9pbnRlcm1l ZGlhdGVfd20oc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm5ld19jcnRjX3N0YXRlKQogCWNvbnN0 IHN0cnVjdCB2bHZfd21fc3RhdGUgKmFjdGl2ZSA9ICZvbGRfY3J0Y19zdGF0ZS0+d20udmx2Lm9w dGltYWw7CiAJaW50IGxldmVsOwogCi0JaWYgKCFuZXdfY3J0Y19zdGF0ZS0+YmFzZS5hY3RpdmUg fHwgZHJtX2F0b21pY19jcnRjX25lZWRzX21vZGVzZXQoJm5ld19jcnRjX3N0YXRlLT5iYXNlKSkg eworCWlmICghbmV3X2NydGNfc3RhdGUtPmh3LmFjdGl2ZSB8fCBkcm1fYXRvbWljX2NydGNfbmVl ZHNfbW9kZXNldCgmbmV3X2NydGNfc3RhdGUtPmJhc2UpKSB7CiAJCSppbnRlcm1lZGlhdGUgPSAq b3B0aW1hbDsKIAogCQlpbnRlcm1lZGlhdGUtPmN4c3IgPSBmYWxzZTsKQEAgLTIxODksNyArMjE4 OSw3IEBAIHN0YXRpYyB2b2lkIGk5NjVfdXBkYXRlX3dtKHN0cnVjdCBpbnRlbF9jcnRjICp1bnVz ZWRfY3J0YykKIAkJLyogc2VsZi1yZWZyZXNoIGhhcyBtdWNoIGhpZ2hlciBsYXRlbmN5ICovCiAJ CXN0YXRpYyBjb25zdCBpbnQgc3JfbGF0ZW5jeV9ucyA9IDEyMDAwOwogCQljb25zdCBzdHJ1Y3Qg ZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9Ci0JCQkmY3J0Yy0+Y29uZmlnLT5iYXNl LmFkanVzdGVkX21vZGU7CisJCQkmY3J0Yy0+Y29uZmlnLT5ody5hZGp1c3RlZF9tb2RlOwogCQlj b25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9CiAJCQljcnRjLT5iYXNlLnByaW1hcnkt PnN0YXRlLT5mYjsKIAkJaW50IGNsb2NrID0gYWRqdXN0ZWRfbW9kZS0+Y3J0Y19jbG9jazsKQEAg LTIyNzAsNyArMjI3MCw3IEBAIHN0YXRpYyB2b2lkIGk5eHhfdXBkYXRlX3dtKHN0cnVjdCBpbnRl bF9jcnRjICp1bnVzZWRfY3J0YykKIAljcnRjID0gaW50ZWxfZ2V0X2NydGNfZm9yX3BsYW5lKGRl dl9wcml2LCBQTEFORV9BKTsKIAlpZiAoaW50ZWxfY3J0Y19hY3RpdmUoY3J0YykpIHsKIAkJY29u c3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUgPQotCQkJJmNydGMtPmNv bmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlOworCQkJJmNydGMtPmNvbmZpZy0+aHcuYWRqdXN0ZWRf bW9kZTsKIAkJY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPQogCQkJY3J0Yy0+YmFz ZS5wcmltYXJ5LT5zdGF0ZS0+ZmI7CiAJCWludCBjcHA7CkBAIC0yMjk3LDcgKzIyOTcsNyBAQCBz dGF0aWMgdm9pZCBpOXh4X3VwZGF0ZV93bShzdHJ1Y3QgaW50ZWxfY3J0YyAqdW51c2VkX2NydGMp CiAJY3J0YyA9IGludGVsX2dldF9jcnRjX2Zvcl9wbGFuZShkZXZfcHJpdiwgUExBTkVfQik7CiAJ aWYgKGludGVsX2NydGNfYWN0aXZlKGNydGMpKSB7CiAJCWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxh eV9tb2RlICphZGp1c3RlZF9tb2RlID0KLQkJCSZjcnRjLT5jb25maWctPmJhc2UuYWRqdXN0ZWRf bW9kZTsKKwkJCSZjcnRjLT5jb25maWctPmh3LmFkanVzdGVkX21vZGU7CiAJCWNvbnN0IHN0cnVj dCBkcm1fZnJhbWVidWZmZXIgKmZiID0KIAkJCWNydGMtPmJhc2UucHJpbWFyeS0+c3RhdGUtPmZi OwogCQlpbnQgY3BwOwpAQCAtMjM0NSw3ICsyMzQ1LDcgQEAgc3RhdGljIHZvaWQgaTl4eF91cGRh dGVfd20oc3RydWN0IGludGVsX2NydGMgKnVudXNlZF9jcnRjKQogCQkvKiBzZWxmLXJlZnJlc2gg aGFzIG11Y2ggaGlnaGVyIGxhdGVuY3kgKi8KIAkJc3RhdGljIGNvbnN0IGludCBzcl9sYXRlbmN5 X25zID0gNjAwMDsKIAkJY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21v ZGUgPQotCQkJJmVuYWJsZWQtPmNvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlOworCQkJJmVuYWJs ZWQtPmNvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZTsKIAkJY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1 ZmZlciAqZmIgPQogCQkJZW5hYmxlZC0+YmFzZS5wcmltYXJ5LT5zdGF0ZS0+ZmI7CiAJCWludCBj bG9jayA9IGFkanVzdGVkX21vZGUtPmNydGNfY2xvY2s7CkBAIC0yNDAzLDcgKzI0MDMsNyBAQCBz dGF0aWMgdm9pZCBpODQ1X3VwZGF0ZV93bShzdHJ1Y3QgaW50ZWxfY3J0YyAqdW51c2VkX2NydGMp CiAJaWYgKGNydGMgPT0gTlVMTCkKIAkJcmV0dXJuOwogCi0JYWRqdXN0ZWRfbW9kZSA9ICZjcnRj LT5jb25maWctPmJhc2UuYWRqdXN0ZWRfbW9kZTsKKwlhZGp1c3RlZF9tb2RlID0gJmNydGMtPmNv bmZpZy0+aHcuYWRqdXN0ZWRfbW9kZTsKIAlwbGFuZWFfd20gPSBpbnRlbF9jYWxjdWxhdGVfd20o YWRqdXN0ZWRfbW9kZS0+Y3J0Y19jbG9jaywKIAkJCQkgICAgICAgJmk4NDVfd21faW5mbywKIAkJ CQkgICAgICAgZGV2X3ByaXYtPmRpc3BsYXkuZ2V0X2ZpZm9fc2l6ZShkZXZfcHJpdiwgUExBTkVf QSksCkBAIC0yNDkzLDcgKzI0OTMsNyBAQCBzdGF0aWMgdTMyIGlsa19jb21wdXRlX3ByaV93bShj b25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKIAkJcmV0dXJuIG1ldGhv ZDE7CiAKIAltZXRob2QyID0gaWxrX3dtX21ldGhvZDIoY3J0Y19zdGF0ZS0+cGl4ZWxfcmF0ZSwK LQkJCQkgY3J0Y19zdGF0ZS0+YmFzZS5hZGp1c3RlZF9tb2RlLmNydGNfaHRvdGFsLAorCQkJCSBj cnRjX3N0YXRlLT5ody5hZGp1c3RlZF9tb2RlLmNydGNfaHRvdGFsLAogCQkJCSBkcm1fcmVjdF93 aWR0aCgmcGxhbmVfc3RhdGUtPmJhc2UuZHN0KSwKIAkJCQkgY3BwLCBtZW1fdmFsdWUpOwogCkBA IC0yNTIxLDcgKzI1MjEsNyBAQCBzdGF0aWMgdTMyIGlsa19jb21wdXRlX3Nwcl93bShjb25zdCBz dHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKIAogCW1ldGhvZDEgPSBpbGtfd21f bWV0aG9kMShjcnRjX3N0YXRlLT5waXhlbF9yYXRlLCBjcHAsIG1lbV92YWx1ZSk7CiAJbWV0aG9k MiA9IGlsa193bV9tZXRob2QyKGNydGNfc3RhdGUtPnBpeGVsX3JhdGUsCi0JCQkJIGNydGNfc3Rh dGUtPmJhc2UuYWRqdXN0ZWRfbW9kZS5jcnRjX2h0b3RhbCwKKwkJCQkgY3J0Y19zdGF0ZS0+aHcu YWRqdXN0ZWRfbW9kZS5jcnRjX2h0b3RhbCwKIAkJCQkgZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0 YXRlLT5iYXNlLmRzdCksCiAJCQkJIGNwcCwgbWVtX3ZhbHVlKTsKIAlyZXR1cm4gbWluKG1ldGhv ZDEsIG1ldGhvZDIpOwpAQCAtMjU0Niw3ICsyNTQ2LDcgQEAgc3RhdGljIHUzMiBpbGtfY29tcHV0 ZV9jdXJfd20oY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCiAJY3Bw ID0gcGxhbmVfc3RhdGUtPmJhc2UuZmItPmZvcm1hdC0+Y3BwWzBdOwogCiAJcmV0dXJuIGlsa193 bV9tZXRob2QyKGNydGNfc3RhdGUtPnBpeGVsX3JhdGUsCi0JCQkgICAgICBjcnRjX3N0YXRlLT5i YXNlLmFkanVzdGVkX21vZGUuY3J0Y19odG90YWwsCisJCQkgICAgICBjcnRjX3N0YXRlLT5ody5h ZGp1c3RlZF9tb2RlLmNydGNfaHRvdGFsLAogCQkJICAgICAgZHJtX3JlY3Rfd2lkdGgoJnBsYW5l X3N0YXRlLT5iYXNlLmRzdCksCiAJCQkgICAgICBjcHAsIG1lbV92YWx1ZSk7CiB9CkBAIC0yNzcw LDEwICsyNzcwLDEwIEBAIGhzd19jb21wdXRlX2xpbmV0aW1lX3dtKGNvbnN0IHN0cnVjdCBpbnRl bF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQogCWNvbnN0IHN0cnVjdCBpbnRlbF9hdG9taWNfc3Rh dGUgKmludGVsX3N0YXRlID0KIAkJdG9faW50ZWxfYXRvbWljX3N0YXRlKGNydGNfc3RhdGUtPmJh c2Uuc3RhdGUpOwogCWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2Rl ID0KLQkJJmNydGNfc3RhdGUtPmJhc2UuYWRqdXN0ZWRfbW9kZTsKKwkJJmNydGNfc3RhdGUtPmh3 LmFkanVzdGVkX21vZGU7CiAJdTMyIGxpbmV0aW1lLCBpcHNfbGluZXRpbWU7CiAKLQlpZiAoIWNy dGNfc3RhdGUtPmJhc2UuYWN0aXZlKQorCWlmICghY3J0Y19zdGF0ZS0+aHcuYWN0aXZlKQogCQly ZXR1cm4gMDsKIAlpZiAoV0FSTl9PTihhZGp1c3RlZF9tb2RlLT5jcnRjX2Nsb2NrID09IDApKQog CQlyZXR1cm4gMDsKQEAgLTMxMDUsNyArMzEwNSw3IEBAIHN0YXRpYyBpbnQgaWxrX2NvbXB1dGVf cGlwZV93bShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKIAkJCWN1cnN0YXRl ID0gcGxhbmVfc3RhdGU7CiAJfQogCi0JcGlwZV93bS0+cGlwZV9lbmFibGVkID0gY3J0Y19zdGF0 ZS0+YmFzZS5hY3RpdmU7CisJcGlwZV93bS0+cGlwZV9lbmFibGVkID0gY3J0Y19zdGF0ZS0+aHcu YWN0aXZlOwogCWlmIChzcHJzdGF0ZSkgewogCQlwaXBlX3dtLT5zcHJpdGVzX2VuYWJsZWQgPSBz cHJzdGF0ZS0+YmFzZS52aXNpYmxlOwogCQlwaXBlX3dtLT5zcHJpdGVzX3NjYWxlZCA9IHNwcnN0 YXRlLT5iYXNlLnZpc2libGUgJiYKQEAgLTMxNzgsNyArMzE3OCw3IEBAIHN0YXRpYyBpbnQgaWxr X2NvbXB1dGVfaW50ZXJtZWRpYXRlX3dtKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpuZXdzdGF0 ZSkKIAkgKiBhbmQgYWZ0ZXIgdGhlIHZibGFuay4KIAkgKi8KIAkqYSA9IG5ld3N0YXRlLT53bS5p bGsub3B0aW1hbDsKLQlpZiAoIW5ld3N0YXRlLT5iYXNlLmFjdGl2ZSB8fCBkcm1fYXRvbWljX2Ny dGNfbmVlZHNfbW9kZXNldCgmbmV3c3RhdGUtPmJhc2UpIHx8CisJaWYgKCFuZXdzdGF0ZS0+aHcu YWN0aXZlIHx8IGRybV9hdG9taWNfY3J0Y19uZWVkc19tb2Rlc2V0KCZuZXdzdGF0ZS0+YmFzZSkg fHwKIAkgICAgaW50ZWxfc3RhdGUtPnNraXBfaW50ZXJtZWRpYXRlX3dtKQogCQlyZXR1cm4gMDsK IApAQCAtMzc4MCw3ICszNzgwLDcgQEAgYm9vbCBpbnRlbF9jYW5fZW5hYmxlX3NhZ3Yoc3RydWN0 IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUpCiAJY3J0YyA9IGludGVsX2dldF9jcnRjX2Zvcl9w aXBlKGRldl9wcml2LCBwaXBlKTsKIAljcnRjX3N0YXRlID0gdG9faW50ZWxfY3J0Y19zdGF0ZShj cnRjLT5iYXNlLnN0YXRlKTsKIAotCWlmIChjcnRjX3N0YXRlLT5iYXNlLmFkanVzdGVkX21vZGUu ZmxhZ3MgJiBEUk1fTU9ERV9GTEFHX0lOVEVSTEFDRSkKKwlpZiAoY3J0Y19zdGF0ZS0+aHcuYWRq dXN0ZWRfbW9kZS5mbGFncyAmIERSTV9NT0RFX0ZMQUdfSU5URVJMQUNFKQogCQlyZXR1cm4gZmFs c2U7CiAKIAlmb3JfZWFjaF9pbnRlbF9wbGFuZV9vbl9jcnRjKGRldiwgY3J0YywgcGxhbmUpIHsK QEAgLTM4MzAsNyArMzgzMCw3IEBAIHN0YXRpYyB1MTYgaW50ZWxfZ2V0X2RkYl9zaXplKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8 IDExKQogCQlyZXR1cm4gZGRiX3NpemUgLSA0OyAvKiA0IGJsb2NrcyBmb3IgYnlwYXNzIHBhdGgg YWxsb2NhdGlvbiAqLwogCi0JYWRqdXN0ZWRfbW9kZSA9ICZjcnRjX3N0YXRlLT5iYXNlLmFkanVz dGVkX21vZGU7CisJYWRqdXN0ZWRfbW9kZSA9ICZjcnRjX3N0YXRlLT5ody5hZGp1c3RlZF9tb2Rl OwogCXRvdGFsX2RhdGFfYncgPSB0b3RhbF9kYXRhX3JhdGUgKiBkcm1fbW9kZV92cmVmcmVzaChh ZGp1c3RlZF9tb2RlKTsKIAogCS8qCkBAIC0zODY4LDcgKzM4NjgsNyBAQCBza2xfZGRiX2dldF9w aXBlX2FsbG9jYXRpb25fbGltaXRzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwK IAl1MTYgZGRiX3NpemU7CiAJdTMyIGk7CiAKLQlpZiAoV0FSTl9PTighc3RhdGUpIHx8ICFjcnRj X3N0YXRlLT5iYXNlLmFjdGl2ZSkgeworCWlmIChXQVJOX09OKCFzdGF0ZSkgfHwgIWNydGNfc3Rh dGUtPmh3LmFjdGl2ZSkgewogCQlhbGxvYy0+c3RhcnQgPSAwOwogCQlhbGxvYy0+ZW5kID0gMDsK IAkJKm51bV9hY3RpdmUgPSBod2VpZ2h0OChkZXZfcHJpdi0+YWN0aXZlX3BpcGVzKTsKQEAgLTM5 MDcsMTEgKzM5MDcsMTEgQEAgc2tsX2RkYl9nZXRfcGlwZV9hbGxvY2F0aW9uX2xpbWl0cyhzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJICovCiAJZm9yX2VhY2hfbmV3X2ludGVs X2NydGNfaW5fc3RhdGUoaW50ZWxfc3RhdGUsIGNydGMsIGNydGNfc3RhdGUsIGkpIHsKIAkJY29u c3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUgPQotCQkJJmNydGNfc3Rh dGUtPmJhc2UuYWRqdXN0ZWRfbW9kZTsKKwkJCSZjcnRjX3N0YXRlLT5ody5hZGp1c3RlZF9tb2Rl OwogCQllbnVtIHBpcGUgcGlwZSA9IGNydGMtPnBpcGU7CiAJCWludCBoZGlzcGxheSwgdmRpc3Bs YXk7CiAKLQkJaWYgKCFjcnRjX3N0YXRlLT5iYXNlLmVuYWJsZSkKKwkJaWYgKCFjcnRjX3N0YXRl LT5ody5lbmFibGUpCiAJCQljb250aW51ZTsKIAogCQlkcm1fbW9kZV9nZXRfaHZfdGltaW5nKGFk anVzdGVkX21vZGUsICZoZGlzcGxheSwgJnZkaXNwbGF5KTsKQEAgLTQxMDAsNyArNDEwMCw3IEBA IHNrbF9waXBlX2Rvd25zY2FsZV9hbW91bnQoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUg KmNydGNfc3RhdGUpCiB7CiAJdWludF9maXhlZF8xNl8xNl90IHBpcGVfZG93bnNjYWxlID0gdTMy X3RvX2ZpeGVkMTYoMSk7CiAKLQlpZiAoIWNydGNfc3RhdGUtPmJhc2UuZW5hYmxlKQorCWlmICgh Y3J0Y19zdGF0ZS0+aHcuZW5hYmxlKQogCQlyZXR1cm4gcGlwZV9kb3duc2NhbGU7CiAKIAlpZiAo Y3J0Y19zdGF0ZS0+cGNoX3BmaXQuZW5hYmxlZCkgewpAQCAtNDE0MCw3ICs0MTQwLDcgQEAgaW50 IHNrbF9jaGVja19waXBlX21heF9waXhlbF9yYXRlKHN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9j cnRjLAogCXVpbnRfZml4ZWRfMTZfMTZfdCBwaXBlX2Rvd25zY2FsZTsKIAl1aW50X2ZpeGVkXzE2 XzE2X3QgbWF4X2Rvd25zY2FsZSA9IHUzMl90b19maXhlZDE2KDEpOwogCi0JaWYgKCFjcnRjX3N0 YXRlLT5iYXNlLmVuYWJsZSkKKwlpZiAoIWNydGNfc3RhdGUtPmh3LmVuYWJsZSkKIAkJcmV0dXJu IDA7CiAKIAlpbnRlbF9hdG9taWNfY3J0Y19zdGF0ZV9mb3JfZWFjaF9wbGFuZV9zdGF0ZShwbGFu ZSwgcGxhbmVfc3RhdGUsIGNydGNfc3RhdGUpIHsKQEAgLTQxNjYsNyArNDE2Niw3IEBAIGludCBz a2xfY2hlY2tfcGlwZV9tYXhfcGl4ZWxfcmF0ZShzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0 YywKIAogCXBpcGVfZG93bnNjYWxlID0gbXVsX2ZpeGVkMTYocGlwZV9kb3duc2NhbGUsIG1heF9k b3duc2NhbGUpOwogCi0JY3J0Y19jbG9jayA9IGNydGNfc3RhdGUtPmJhc2UuYWRqdXN0ZWRfbW9k ZS5jcnRjX2Nsb2NrOworCWNydGNfY2xvY2sgPSBjcnRjX3N0YXRlLT5ody5hZGp1c3RlZF9tb2Rl LmNydGNfY2xvY2s7CiAJZG90Y2xrID0gdG9faW50ZWxfYXRvbWljX3N0YXRlKHN0YXRlKS0+Y2Rj bGsubG9naWNhbC5jZGNsazsKIAogCWlmIChJU19HRU1JTklMQUtFKGRldl9wcml2KSB8fCBJTlRF TF9HRU4oZGV2X3ByaXYpID49IDEwKQpAQCAtNDMzNSw3ICs0MzM1LDcgQEAgc2tsX2FsbG9jYXRl X3BpcGVfZGRiKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAogCWlmIChXQVJO X09OKCFzdGF0ZSkpCiAJCXJldHVybiAwOwogCi0JaWYgKCFjcnRjX3N0YXRlLT5iYXNlLmFjdGl2 ZSkgeworCWlmICghY3J0Y19zdGF0ZS0+aHcuYWN0aXZlKSB7CiAJCWFsbG9jLT5zdGFydCA9IGFs bG9jLT5lbmQgPSAwOwogCQlyZXR1cm4gMDsKIAl9CkBAIC00NTc3LDcgKzQ1NzcsNyBAQCBpbnRl bF9nZXRfbGluZXRpbWVfdXMoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3Rh dGUpCiAJdTMyIGNydGNfaHRvdGFsOwogCXVpbnRfZml4ZWRfMTZfMTZfdCBsaW5ldGltZV91czsK IAotCWlmICghY3J0Y19zdGF0ZS0+YmFzZS5hY3RpdmUpCisJaWYgKCFjcnRjX3N0YXRlLT5ody5h Y3RpdmUpCiAJCXJldHVybiB1MzJfdG9fZml4ZWQxNigwKTsKIAogCXBpeGVsX3JhdGUgPSBjcnRj X3N0YXRlLT5waXhlbF9yYXRlOwpAQCAtNDU4NSw3ICs0NTg1LDcgQEAgaW50ZWxfZ2V0X2xpbmV0 aW1lX3VzKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQogCWlmIChX QVJOX09OKHBpeGVsX3JhdGUgPT0gMCkpCiAJCXJldHVybiB1MzJfdG9fZml4ZWQxNigwKTsKIAot CWNydGNfaHRvdGFsID0gY3J0Y19zdGF0ZS0+YmFzZS5hZGp1c3RlZF9tb2RlLmNydGNfaHRvdGFs OworCWNydGNfaHRvdGFsID0gY3J0Y19zdGF0ZS0+aHcuYWRqdXN0ZWRfbW9kZS5jcnRjX2h0b3Rh bDsKIAlsaW5ldGltZV91cyA9IGRpdl9maXhlZDE2KGNydGNfaHRvdGFsICogMTAwMCwgcGl4ZWxf cmF0ZSk7CiAKIAlyZXR1cm4gbGluZXRpbWVfdXM7CkBAIC00NzY3LDE0ICs0NzY3LDE0IEBAIHN0 YXRpYyB2b2lkIHNrbF9jb21wdXRlX3BsYW5lX3dtKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0 YXRlICpjcnRjX3N0YXRlLAogCW1ldGhvZDEgPSBza2xfd21fbWV0aG9kMShkZXZfcHJpdiwgd3At PnBsYW5lX3BpeGVsX3JhdGUsCiAJCQkJIHdwLT5jcHAsIGxhdGVuY3ksIHdwLT5kYnVmX2Jsb2Nr X3NpemUpOwogCW1ldGhvZDIgPSBza2xfd21fbWV0aG9kMih3cC0+cGxhbmVfcGl4ZWxfcmF0ZSwK LQkJCQkgY3J0Y19zdGF0ZS0+YmFzZS5hZGp1c3RlZF9tb2RlLmNydGNfaHRvdGFsLAorCQkJCSBj cnRjX3N0YXRlLT5ody5hZGp1c3RlZF9tb2RlLmNydGNfaHRvdGFsLAogCQkJCSBsYXRlbmN5LAog CQkJCSB3cC0+cGxhbmVfYmxvY2tzX3Blcl9saW5lKTsKIAogCWlmICh3cC0+eV90aWxlZCkgewog CQlzZWxlY3RlZF9yZXN1bHQgPSBtYXhfZml4ZWQxNihtZXRob2QyLCB3cC0+eV90aWxlX21pbmlt dW0pOwogCX0gZWxzZSB7Ci0JCWlmICgod3AtPmNwcCAqIGNydGNfc3RhdGUtPmJhc2UuYWRqdXN0 ZWRfbW9kZS5jcnRjX2h0b3RhbCAvCisJCWlmICgod3AtPmNwcCAqIGNydGNfc3RhdGUtPmh3LmFk anVzdGVkX21vZGUuY3J0Y19odG90YWwgLwogCQkgICAgIHdwLT5kYnVmX2Jsb2NrX3NpemUgPCAx KSAmJgogCQkgICAgICh3cC0+cGxhbmVfYnl0ZXNfcGVyX2xpbmUgLyB3cC0+ZGJ1Zl9ibG9ja19z aXplIDwgMSkpIHsKIAkJCXNlbGVjdGVkX3Jlc3VsdCA9IG1ldGhvZDI7Ci0tIAoyLjIzLjAKCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBt YWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3Rz LmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeA==