From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id D244E29E06 for ; Fri, 17 May 2013 06:13:44 -0500 (CDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id 794ABAC001 for ; Fri, 17 May 2013 04:13:44 -0700 (PDT) Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id tcxClgTUearWwDql for ; Fri, 17 May 2013 04:13:39 -0700 (PDT) Received: from disappointment ([192.168.1.1]) by dastard with esmtp (Exim 4.76) (envelope-from ) id 1UdIbM-0008RT-On for xfs@oss.sgi.com; Fri, 17 May 2013 21:13:32 +1000 Received: from dave by disappointment with local (Exim 4.80) (envelope-from ) id 1UdIbM-0005Dt-Kk for xfs@oss.sgi.com; Fri, 17 May 2013 21:13:32 +1000 From: Dave Chinner Subject: =?UTF-8?q?=5BPATCH=2003/30=5D=20libxfs=3A=20add=20crc=20format=20changes=20to=20generic=20btrees?= Date: Fri, 17 May 2013 21:12:58 +1000 Message-Id: <1368789205-19969-4-git-send-email-david@fromorbit.com> In-Reply-To: <1368789205-19969-1-git-send-email-david@fromorbit.com> References: <1368789205-19969-1-git-send-email-david@fromorbit.com> MIME-Version: 1.0 List-Id: XFS Filesystem from SGI List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: xfs-bounces@oss.sgi.com Sender: xfs-bounces@oss.sgi.com To: xfs@oss.sgi.com RnJvbTogRGF2ZSBDaGlubmVyIDxkY2hpbm5lckByZWRoYXQuY29tPgoKU2lnbmVkLW9mZi1ieTog RGF2ZSBDaGlubmVyIDxkY2hpbm5lckByZWRoYXQuY29tPgotLS0KIGluY2x1ZGUvbGlieGZzLmgg ICAgICAgICAgIHwgICAxNSArLS0KIGluY2x1ZGUveGZzX2FsbG9jX2J0cmVlLmggIHwgICAxMyAr Ky0KIGluY2x1ZGUveGZzX2JtYXBfYnRyZWUuaCAgIHwgICAyMCArKy0tCiBpbmNsdWRlL3hmc19i dHJlZS5oICAgICAgICB8ICAgNjAgKysrKysrKysrLS0KIGluY2x1ZGUveGZzX2J1Zl9pdGVtLmgg ICAgIHwgICAyNCArKysrLQogaW5jbHVkZS94ZnNfZGlub2RlLmggICAgICAgfCAgICA0ICstCiBp bmNsdWRlL3hmc19pYWxsb2NfYnRyZWUuaCB8ICAgMTAgKy0KIGluY2x1ZGUveGZzX3RyYW5zLmgg ICAgICAgIHwgICAgMiArCiBsaWJ4ZnMvcmR3ci5jICAgICAgICAgICAgICB8ICAgMjQgKystLS0K IGxpYnhmcy94ZnMuaCAgICAgICAgICAgICAgIHwgICAgNCArCiBsaWJ4ZnMveGZzX2FsbG9jX2J0 cmVlLmMgICB8ICAgOTkgKysrKysrKysrKystLS0tLS0KIGxpYnhmcy94ZnNfYXR0cl9sZWFmLmMg ICAgIHwgICAgMiArLQogbGlieGZzL3hmc19ibWFwLmMgICAgICAgICAgfCAgIDQ5ICsrKysrKy0t LQogbGlieGZzL3hmc19ibWFwX2J0cmVlLmMgICAgfCAgMTA3ICsrKysrKysrKysrKy0tLS0tLQog bGlieGZzL3hmc19idHJlZS5jICAgICAgICAgfCAgMjU3ICsrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKy0tLS0tLS0tCiBsaWJ4ZnMveGZzX2lhbGxvY19idHJlZS5jICB8ICAgODAg KysrKysrKysrLS0tLS0KIGxpYnhmcy94ZnNfaW5vZGUuYyAgICAgICAgIHwgICAzMyArKystLS0K IGxpYnhmcy94ZnNfbW91bnQuYyAgICAgICAgIHwgICAgMiArLQogbWRyZXN0b3JlL01ha2VmaWxl ICAgICAgICAgfCAgICAyICstCiAxOSBmaWxlcyBjaGFuZ2VkLCA1ODcgaW5zZXJ0aW9ucygrKSwg MjIwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGlieGZzLmggYi9pbmNsdWRl L2xpYnhmcy5oCmluZGV4IGI2ZTgzZjQuLmE0NTY0ZmQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGli eGZzLmgKKysrIGIvaW5jbHVkZS9saWJ4ZnMuaApAQCAtMjQwLDE0ICsyNDAsMTQgQEAgc3RydWN0 IHhmc19idWZfb3BzIHsKIHR5cGVkZWYgc3RydWN0IHhmc19idWYgewogCXN0cnVjdCBjYWNoZV9u b2RlCWJfbm9kZTsKIAl1bnNpZ25lZCBpbnQJCWJfZmxhZ3M7Ci0JeGZzX2RhZGRyX3QJCWJfYmxr bm87CisJeGZzX2RhZGRyX3QJCWJfYm47CiAJdW5zaWduZWQJCWJfYmNvdW50OwogCXVuc2lnbmVk IGludAkJYl9sZW5ndGg7CiAJZGV2X3QJCQliX2RldjsKIAlwdGhyZWFkX211dGV4X3QJCWJfbG9j azsKIAlwdGhyZWFkX3QJCWJfaG9sZGVyOwogCXVuc2lnbmVkIGludAkJYl9yZWN1cjsKLQl2b2lk CQkJKmJfZnNwcml2YXRlOworCXZvaWQJCQkqYl9mc3ByaXY7CiAJdm9pZAkJCSpiX2ZzcHJpdmF0 ZTI7CiAJdm9pZAkJCSpiX2ZzcHJpdmF0ZTM7CiAJdm9pZAkJCSpiX2FkZHI7CkBAIC0yNzMsOSAr MjczLDExIEBAIGVudW0geGZzX2J1Zl9mbGFnc190IHsJLyogYl9mbGFncyBiaXRzICovCiAJTElC WEZTX0JfRElTQ09OVElHCT0gMHgwMDEwLAkvKiBkaXNjb250aWd1b3VzIGJ1ZmZlciAqLwogfTsK IAorI2RlZmluZSBYRlNfQlVGX0RBRERSX05VTEwJCSgoeGZzX2RhZGRyX3QpICgtMUxMKSkKKwog I2RlZmluZSBYRlNfQlVGX1BUUihicCkJCQkoKGNoYXIgKikoYnApLT5iX2FkZHIpCiAjZGVmaW5l IHhmc19idWZfb2Zmc2V0KGJwLCBvZmZzZXQpCShYRlNfQlVGX1BUUihicCkgKyAob2Zmc2V0KSkK LSNkZWZpbmUgWEZTX0JVRl9BRERSKGJwKQkJKChicCktPmJfYmxrbm8pCisjZGVmaW5lIFhGU19C VUZfQUREUihicCkJCSgoYnApLT5iX2JuKQogI2RlZmluZSBYRlNfQlVGX1NJWkUoYnApCQkoKGJw KS0+Yl9iY291bnQpCiAjZGVmaW5lIFhGU19CVUZfQ09VTlQoYnApCQkoKGJwKS0+Yl9iY291bnQp CiAjZGVmaW5lIFhGU19CVUZfVEFSR0VUKGJwKQkJKChicCktPmJfZGV2KQpAQCAtMjg0LDExICsy ODYsMTEgQEAgZW51bSB4ZnNfYnVmX2ZsYWdzX3QgewkvKiBiX2ZsYWdzIGJpdHMgKi8KIAlYRlNf QlVGX1NFVF9DT1VOVChicCxjbnQpOwkJXAogfSkKIAotI2RlZmluZSBYRlNfQlVGX1NFVF9BRERS KGJwLGJsaykJKChicCktPmJfYmxrbm8gPSAoYmxrKSkKKyNkZWZpbmUgWEZTX0JVRl9TRVRfQURE UihicCxibGspCSgoYnApLT5iX2JuID0gKGJsaykpCiAjZGVmaW5lIFhGU19CVUZfU0VUX0NPVU5U KGJwLGNudCkJKChicCktPmJfYmNvdW50ID0gKGNudCkpCiAKLSNkZWZpbmUgWEZTX0JVRl9GU1BS SVZBVEUoYnAsdHlwZSkJKCh0eXBlKShicCktPmJfZnNwcml2YXRlKQotI2RlZmluZSBYRlNfQlVG X1NFVF9GU1BSSVZBVEUoYnAsdmFsKQkoYnApLT5iX2ZzcHJpdmF0ZSA9ICh2b2lkICopKHZhbCkK KyNkZWZpbmUgWEZTX0JVRl9GU1BSSVZBVEUoYnAsdHlwZSkJKCh0eXBlKShicCktPmJfZnNwcml2 KQorI2RlZmluZSBYRlNfQlVGX1NFVF9GU1BSSVZBVEUoYnAsdmFsKQkoYnApLT5iX2ZzcHJpdiA9 ICh2b2lkICopKHZhbCkKICNkZWZpbmUgWEZTX0JVRl9GU1BSSVZBVEUyKGJwLHR5cGUpCSgodHlw ZSkoYnApLT5iX2ZzcHJpdmF0ZTIpCiAjZGVmaW5lIFhGU19CVUZfU0VUX0ZTUFJJVkFURTIoYnAs dmFsKQkoYnApLT5iX2ZzcHJpdmF0ZTIgPSAodm9pZCAqKSh2YWwpCiAjZGVmaW5lIFhGU19CVUZf RlNQUklWQVRFMyhicCx0eXBlKQkoKHR5cGUpKGJwKS0+Yl9mc3ByaXZhdGUzKQpAQCAtMzkyLDYg KzM5NCw3IEBAIHR5cGVkZWYgc3RydWN0IHhmc19sb2dfaXRlbSB7CiAJc3RydWN0IHhmc19sb2df aXRlbV9kZXNjCSpsaV9kZXNjOwkvKiBwdHIgdG8gY3VycmVudCBkZXNjKi8KIAlzdHJ1Y3QgeGZz X21vdW50CQkqbGlfbW91bnRwOwkvKiBwdHIgdG8gZnMgbW91bnQgKi8KIAl1aW50CQkJCWxpX3R5 cGU7CS8qIGl0ZW0gdHlwZSAqLworCXhmc19sc25fdAkJCWxpX2xzbjsKIH0geGZzX2xvZ19pdGVt X3Q7CiAKIHR5cGVkZWYgc3RydWN0IHhmc19pbm9kZV9sb2dfaXRlbSB7CmRpZmYgLS1naXQgYS9p bmNsdWRlL3hmc19hbGxvY19idHJlZS5oIGIvaW5jbHVkZS94ZnNfYWxsb2NfYnRyZWUuaAppbmRl eCA3ZTg5YTJiLi43MGMzZWEwIDEwMDY0NAotLS0gYS9pbmNsdWRlL3hmc19hbGxvY19idHJlZS5o CisrKyBiL2luY2x1ZGUveGZzX2FsbG9jX2J0cmVlLmgKQEAgLTMxLDggKzMxLDEwIEBAIHN0cnVj dCB4ZnNfbW91bnQ7CiAgKiBieSBibG9ja2NvdW50IGFuZCBibG9ja25vLiAgQWxsIGJsb2NrcyBs b29rIHRoZSBzYW1lIHRvIG1ha2UgdGhlIGNvZGUKICAqIHNpbXBsZXI7IGlmIHdlIGhhdmUgdGlt ZSBsYXRlciwgd2UnbGwgbWFrZSB0aGUgb3B0aW1pemF0aW9ucy4KICAqLwotI2RlZmluZQlYRlNf QUJUQl9NQUdJQwkweDQxNDI1NDQyCS8qICdBQlRCJyBmb3IgYm5vIHRyZWUgKi8KLSNkZWZpbmUJ WEZTX0FCVENfTUFHSUMJMHg0MTQyNTQ0MwkvKiAnQUJUQycgZm9yIGNudCB0cmVlICovCisjZGVm aW5lCVhGU19BQlRCX01BR0lDCQkweDQxNDI1NDQyCS8qICdBQlRCJyBmb3IgYm5vIHRyZWUgKi8K KyNkZWZpbmUJWEZTX0FCVEJfQ1JDX01BR0lDCTB4NDE0MjMzNDIJLyogJ0FCM0InICovCisjZGVm aW5lCVhGU19BQlRDX01BR0lDCQkweDQxNDI1NDQzCS8qICdBQlRDJyBmb3IgY250IHRyZWUgKi8K KyNkZWZpbmUJWEZTX0FCVENfQ1JDX01BR0lDCTB4NDE0MjMzNDMJLyogJ0FCM0MnICovCiAKIC8q CiAgKiBEYXRhIHJlY29yZC9rZXkgc3RydWN0dXJlCkBAIC01OSwxMCArNjEsMTEgQEAgdHlwZWRl ZiBfX2JlMzIgeGZzX2FsbG9jX3B0cl90OwogCiAvKgogICogQnRyZWUgYmxvY2sgaGVhZGVyIHNp emUgZGVwZW5kcyBvbiBhIHN1cGVyYmxvY2sgZmxhZy4KLSAqCi0gKiAobm90IHF1aXRlIHlldCwg YnV0IHNvb24pCiAgKi8KLSNkZWZpbmUgWEZTX0FMTE9DX0JMT0NLX0xFTihtcCkJWEZTX0JUUkVF X1NCTE9DS19MRU4KKyNkZWZpbmUgWEZTX0FMTE9DX0JMT0NLX0xFTihtcCkgXAorCSh4ZnNfc2Jf dmVyc2lvbl9oYXNjcmMoJigobXApLT5tX3NiKSkgPyBcCisJIFhGU19CVFJFRV9TQkxPQ0tfTEVO ICsgWEZTX0JUUkVFX0NSQ0JMT0NLX0FERCA6IFwKKwkgWEZTX0JUUkVFX1NCTE9DS19MRU4pCiAK IC8qCiAgKiBSZWNvcmQsIGtleSwgYW5kIHBvaW50ZXIgYWRkcmVzcyBtYWNyb3MgZm9yIGJ0cmVl IGJsb2Nrcy4KZGlmZiAtLWdpdCBhL2luY2x1ZGUveGZzX2JtYXBfYnRyZWUuaCBiL2luY2x1ZGUv eGZzX2JtYXBfYnRyZWUuaAppbmRleCA4ODQ2OWNhLi44YTI4Yjg5IDEwMDY0NAotLS0gYS9pbmNs dWRlL3hmc19ibWFwX2J0cmVlLmgKKysrIGIvaW5jbHVkZS94ZnNfYm1hcF9idHJlZS5oCkBAIC0x OCw3ICsxOCw4IEBACiAjaWZuZGVmIF9fWEZTX0JNQVBfQlRSRUVfSF9fCiAjZGVmaW5lIF9fWEZT X0JNQVBfQlRSRUVfSF9fCiAKLSNkZWZpbmUgWEZTX0JNQVBfTUFHSUMJMHg0MjRkNDE1MAkvKiAn Qk1BUCcgKi8KKyNkZWZpbmUgWEZTX0JNQVBfTUFHSUMJCTB4NDI0ZDQxNTAJLyogJ0JNQVAnICov CisjZGVmaW5lIFhGU19CTUFQX0NSQ19NQUdJQwkweDQyNGQ0MTMzCS8qICdCTUEzJyAqLwogCiBz dHJ1Y3QgeGZzX2J0cmVlX2N1cjsKIHN0cnVjdCB4ZnNfYnRyZWVfYmxvY2s7CkBAIC0xMzYsMTAg KzEzNywxMSBAQCB0eXBlZGVmIF9fYmU2NCB4ZnNfYm1idF9wdHJfdCwgeGZzX2JtZHJfcHRyX3Q7 CiAKIC8qCiAgKiBCdHJlZSBibG9jayBoZWFkZXIgc2l6ZSBkZXBlbmRzIG9uIGEgc3VwZXJibG9j ayBmbGFnLgotICoKLSAqIChub3QgcXVpdGUgeWV0LCBidXQgc29vbikKICAqLwotI2RlZmluZSBY RlNfQk1CVF9CTE9DS19MRU4obXApCVhGU19CVFJFRV9MQkxPQ0tfTEVOCisjZGVmaW5lIFhGU19C TUJUX0JMT0NLX0xFTihtcCkgXAorCSh4ZnNfc2JfdmVyc2lvbl9oYXNjcmMoJigobXApLT5tX3Ni KSkgPyBcCisJIFhGU19CVFJFRV9MQkxPQ0tfTEVOICsgWEZTX0JUUkVFX0NSQ0JMT0NLX0FERCA6 IFwKKwkgWEZTX0JUUkVFX0xCTE9DS19MRU4pCiAKICNkZWZpbmUgWEZTX0JNQlRfUkVDX0FERFIo bXAsIGJsb2NrLCBpbmRleCkgXAogCSgoeGZzX2JtYnRfcmVjX3QgKikgXApAQCAtMTg2LDEyICsx ODgsMTIgQEAgdHlwZWRlZiBfX2JlNjQgeGZzX2JtYnRfcHRyX3QsIHhmc19ibWRyX3B0cl90Owog I2RlZmluZSBYRlNfQk1BUF9CUk9PVF9QVFJfQUREUihtcCwgYmIsIGksIHN6KSBcCiAJWEZTX0JN QlRfUFRSX0FERFIobXAsIGJiLCBpLCB4ZnNfYm1idF9tYXhyZWNzKG1wLCBzeiwgMCkpCiAKLSNk ZWZpbmUgWEZTX0JNQVBfQlJPT1RfU1BBQ0VfQ0FMQyhucmVjcykgXAotCShpbnQpKFhGU19CVFJF RV9MQkxPQ0tfTEVOICsgXAorI2RlZmluZSBYRlNfQk1BUF9CUk9PVF9TUEFDRV9DQUxDKG1wLCBu cmVjcykgXAorCShpbnQpKFhGU19CTUJUX0JMT0NLX0xFTihtcCkgKyBcCiAJICAgICAgICgobnJl Y3MpICogKHNpemVvZih4ZnNfYm1idF9rZXlfdCkgKyBzaXplb2YoeGZzX2JtYnRfcHRyX3QpKSkp CiAKLSNkZWZpbmUgWEZTX0JNQVBfQlJPT1RfU1BBQ0UoYmIpIFwKLQkoWEZTX0JNQVBfQlJPT1Rf U1BBQ0VfQ0FMQyhiZTE2X3RvX2NwdSgoYmIpLT5iYl9udW1yZWNzKSkpCisjZGVmaW5lIFhGU19C TUFQX0JST09UX1NQQUNFKG1wLCBiYikgXAorCShYRlNfQk1BUF9CUk9PVF9TUEFDRV9DQUxDKG1w LCBiZTE2X3RvX2NwdSgoYmIpLT5iYl9udW1yZWNzKSkpCiAjZGVmaW5lIFhGU19CTURSX1NQQUNF X0NBTEMobnJlY3MpIFwKIAkoaW50KShzaXplb2YoeGZzX2JtZHJfYmxvY2tfdCkgKyBcCiAJICAg ICAgICgobnJlY3MpICogKHNpemVvZih4ZnNfYm1idF9rZXlfdCkgKyBzaXplb2YoeGZzX2JtYnRf cHRyX3QpKSkpCkBAIC0yMDQsNyArMjA2LDcgQEAgdHlwZWRlZiBfX2JlNjQgeGZzX2JtYnRfcHRy X3QsIHhmc19ibWRyX3B0cl90OwogLyoKICAqIFByb3RvdHlwZXMgZm9yIHhmc19ibWFwLmMgdG8g Y2FsbC4KICAqLwotZXh0ZXJuIHZvaWQgeGZzX2JtZHJfdG9fYm1idChzdHJ1Y3QgeGZzX21vdW50 ICosIHhmc19ibWRyX2Jsb2NrX3QgKiwgaW50LAorZXh0ZXJuIHZvaWQgeGZzX2JtZHJfdG9fYm1i dChzdHJ1Y3QgeGZzX2lub2RlICosIHhmc19ibWRyX2Jsb2NrX3QgKiwgaW50LAogCQkJc3RydWN0 IHhmc19idHJlZV9ibG9jayAqLCBpbnQpOwogZXh0ZXJuIHZvaWQgeGZzX2JtYnRfZ2V0X2FsbCh4 ZnNfYm1idF9yZWNfaG9zdF90ICpyLCB4ZnNfYm1idF9pcmVjX3QgKnMpOwogZXh0ZXJuIHhmc19m aWxibGtzX3QgeGZzX2JtYnRfZ2V0X2Jsb2NrY291bnQoeGZzX2JtYnRfcmVjX2hvc3RfdCAqcik7 CmRpZmYgLS1naXQgYS9pbmNsdWRlL3hmc19idHJlZS5oIGIvaW5jbHVkZS94ZnNfYnRyZWUuaApp bmRleCBiZTFlYjIzLi4wMmY4OWQ4IDEwMDY0NAotLS0gYS9pbmNsdWRlL3hmc19idHJlZS5oCisr KyBiL2luY2x1ZGUveGZzX2J0cmVlLmgKQEAgLTQyLDExICs0MiwxNSBAQCBleHRlcm4ga21lbV96 b25lX3QJKnhmc19idHJlZV9jdXJfem9uZTsKICAqIEdlbmVyaWMgYnRyZWUgaGVhZGVyLgogICoK ICAqIFRoaXMgaXMgYSBjb21iaW5hdGlvbiBvZiB0aGUgYWN0dWFsIGZvcm1hdCB1c2VkIG9uIGRp c2sgZm9yIHNob3J0IGFuZCBsb25nCi0gKiBmb3JtYXQgYnRyZWVzLiAgVGhlIGZpcnN0IHRocmVl IGZpZWxkcyBhcmUgc2hhcmVkIGJ5IGJvdGggZm9ybWF0LCBidXQKLSAqIHRoZSBwb2ludGVycyBh cmUgZGlmZmVyZW50IGFuZCBzaG91bGQgYmUgdXNlZCB3aXRoIGNhcmUuCisgKiBmb3JtYXQgYnRy ZWVzLiAgVGhlIGZpcnN0IHRocmVlIGZpZWxkcyBhcmUgc2hhcmVkIGJ5IGJvdGggZm9ybWF0LCBi dXQgdGhlCisgKiBwb2ludGVycyBhcmUgZGlmZmVyZW50IGFuZCBzaG91bGQgYmUgdXNlZCB3aXRo IGNhcmUuCiAgKgotICogVG8gZ2V0IHRoZSBzaXplIG9mIHRoZSBhY3R1YWwgc2hvcnQgb3IgbG9u ZyBmb3JtIGhlYWRlcnMgcGxlYXNlIHVzZQotICogdGhlIHNpemUgbWFjcm9zIGJlbG93LiAgTmV2 ZXIgdXNlIHNpemVvZih4ZnNfYnRyZWVfYmxvY2spLgorICogVG8gZ2V0IHRoZSBzaXplIG9mIHRo ZSBhY3R1YWwgc2hvcnQgb3IgbG9uZyBmb3JtIGhlYWRlcnMgcGxlYXNlIHVzZSB0aGUgc2l6ZQor ICogbWFjcm9zIGJlbG93LiAgTmV2ZXIgdXNlIHNpemVvZih4ZnNfYnRyZWVfYmxvY2spLgorICoK KyAqIFRoZSBibGtubywgY3JjLCBsc24sIG93bmVyIGFuZCB1dWlkIGZpZWxkcyBhcmUgb25seSBh dmFpbGFibGUgaW4gZmlsZXN5c3RlbXMKKyAqIHdpdGggdGhlIGNyYyBmZWF0dXJlIGJpdCwgYW5k IGFsbCBhY2Nlc3NlcyB0byB0aGVtIG11c3QgYmUgY29uZGl0aW9uYWwgb24KKyAqIHRoYXQgZmxh Zy4KICAqLwogc3RydWN0IHhmc19idHJlZV9ibG9jayB7CiAJX19iZTMyCQliYl9tYWdpYzsJLyog bWFnaWMgbnVtYmVyIGZvciBibG9jayB0eXBlICovCkBAIC01NiwxNiArNjAsMzUgQEAgc3RydWN0 IHhmc19idHJlZV9ibG9jayB7CiAJCXN0cnVjdCB7CiAJCQlfX2JlMzIJCWJiX2xlZnRzaWI7CiAJ CQlfX2JlMzIJCWJiX3JpZ2h0c2liOworCisJCQlfX2JlNjQJCWJiX2Jsa25vOworCQkJX19iZTY0 CQliYl9sc247CisJCQl1dWlkX3QJCWJiX3V1aWQ7CisJCQlfX2JlMzIJCWJiX293bmVyOworCQkJ X19sZTMyCQliYl9jcmM7CiAJCX0gczsJCQkvKiBzaG9ydCBmb3JtIHBvaW50ZXJzICovCiAJCXN0 cnVjdAl7CiAJCQlfX2JlNjQJCWJiX2xlZnRzaWI7CiAJCQlfX2JlNjQJCWJiX3JpZ2h0c2liOwor CisJCQlfX2JlNjQJCWJiX2Jsa25vOworCQkJX19iZTY0CQliYl9sc247CisJCQl1dWlkX3QJCWJi X3V1aWQ7CisJCQlfX2JlNjQJCWJiX293bmVyOworCQkJX19sZTMyCQliYl9jcmM7CisJCQlfX2Jl MzIJCWJiX3BhZDsgLyogcGFkZGluZyBmb3IgYWxpZ25tZW50ICovCiAJCX0gbDsJCQkvKiBsb25n IGZvcm0gcG9pbnRlcnMgKi8KIAl9IGJiX3U7CQkJCS8qIHJlc3QgKi8KIH07CiAKICNkZWZpbmUg WEZTX0JUUkVFX1NCTE9DS19MRU4JMTYJLyogc2l6ZSBvZiBhIHNob3J0IGZvcm0gYmxvY2sgKi8K ICNkZWZpbmUgWEZTX0JUUkVFX0xCTE9DS19MRU4JMjQJLyogc2l6ZSBvZiBhIGxvbmcgZm9ybSBi bG9jayAqLworI2RlZmluZSBYRlNfQlRSRUVfQ1JDQkxPQ0tfQURECTMyCS8qIHNpemUgb2YgYmxr bm8gKyBjcmMgKyB1dWlkICovCisKKyNkZWZpbmUgWEZTX0JUUkVFX1NCTE9DS19DUkNfT0ZGIFwK KwlvZmZzZXRvZihzdHJ1Y3QgeGZzX2J0cmVlX2Jsb2NrLCBiYl91LnMuYmJfY3JjKQorI2RlZmlu ZSBYRlNfQlRSRUVfTEJMT0NLX0NSQ19PRkYgXAorCW9mZnNldG9mKHN0cnVjdCB4ZnNfYnRyZWVf YmxvY2ssIGJiX3UubC5iYl9jcmMpCiAKIAogLyoKQEAgLTEwMSwxMyArMTI0LDExIEBAIHVuaW9u IHhmc19idHJlZV9yZWMgewogI2RlZmluZQlYRlNfQkJfTlVNUkVDUwkJMHgwNAogI2RlZmluZQlY RlNfQkJfTEVGVFNJQgkJMHgwOAogI2RlZmluZQlYRlNfQkJfUklHSFRTSUIJCTB4MTAKKyNkZWZp bmUJWEZTX0JCX0JMS05PCQkweDIwCiAjZGVmaW5lCVhGU19CQl9OVU1fQklUUwkJNQogI2RlZmlu ZQlYRlNfQkJfQUxMX0JJVFMJCSgoMSA8PCBYRlNfQkJfTlVNX0JJVFMpIC0gMSkKLQotLyoKLSAq IE1hZ2ljIG51bWJlcnMgZm9yIGJ0cmVlIGJsb2Nrcy4KLSAqLwotZXh0ZXJuIGNvbnN0IF9fdWlu dDMyX3QJeGZzX21hZ2ljc1tdOworI2RlZmluZQlYRlNfQkJfTlVNX0JJVFNfQ1JDCTgKKyNkZWZp bmUJWEZTX0JCX0FMTF9CSVRTX0NSQwkoKDEgPDwgWEZTX0JCX05VTV9CSVRTX0NSQykgLSAxKQog CiAvKgogICogR2VuZXJpYyBzdGF0cyBpbnRlcmZhY2UKQEAgLTI3NSw2ICsyOTYsNyBAQCB0eXBl ZGVmIHN0cnVjdCB4ZnNfYnRyZWVfY3VyCiAjZGVmaW5lIFhGU19CVFJFRV9MT05HX1BUUlMJCSgx PDwwKQkvKiBwb2ludGVycyBhcmUgNjRiaXRzIGxvbmcgKi8KICNkZWZpbmUgWEZTX0JUUkVFX1JP T1RfSU5fSU5PREUJCSgxPDwxKQkvKiByb290IG1heSBiZSB2YXJpYWJsZSBzaXplICovCiAjZGVm aW5lIFhGU19CVFJFRV9MQVNUUkVDX1VQREFURQkoMTw8MikJLyogdHJhY2sgbGFzdCByZWMgZXh0 ZXJuYWxseSAqLworI2RlZmluZSBYRlNfQlRSRUVfQ1JDX0JMT0NLUwkJKDE8PDMpCS8qIHVzZXMg ZXh0ZW5kZWQgYnRyZWUgYmxvY2tzICovCiAKIAogI2RlZmluZQlYRlNfQlRSRUVfTk9FUlJPUgkw CkBAIC00MTIsOCArNDM0LDIwIEBAIHhmc19idHJlZV9pbml0X2Jsb2NrKAogCV9fdTMyCQltYWdp YywKIAlfX3UxNgkJbGV2ZWwsCiAJX191MTYJCW51bXJlY3MsCisJX191NjQJCW93bmVyLAogCXVu c2lnbmVkIGludAlmbGFncyk7CiAKK3ZvaWQKK3hmc19idHJlZV9pbml0X2Jsb2NrX2ludCgKKwlz dHJ1Y3QgeGZzX21vdW50CSptcCwKKwlzdHJ1Y3QgeGZzX2J0cmVlX2Jsb2NrCSpidWYsCisJeGZz X2RhZGRyX3QJCWJsa25vLAorCV9fdTMyCQkJbWFnaWMsCisJX191MTYJCQlsZXZlbCwKKwlfX3Ux NgkJCW51bXJlY3MsCisJX191NjQJCQlvd25lciwKKwl1bnNpZ25lZCBpbnQJCWZsYWdzKTsKKwog LyoKICAqIENvbW1vbiBidHJlZSBjb3JlIGVudHJ5IHBvaW50cy4KICAqLwpAQCAtNDI3LDYgKzQ2 MSwxNCBAQCBpbnQgeGZzX2J0cmVlX2RlbGV0ZShzdHJ1Y3QgeGZzX2J0cmVlX2N1ciAqLCBpbnQg Kik7CiBpbnQgeGZzX2J0cmVlX2dldF9yZWMoc3RydWN0IHhmc19idHJlZV9jdXIgKiwgdW5pb24g eGZzX2J0cmVlX3JlYyAqKiwgaW50ICopOwogCiAvKgorICogYnRyZWUgYmxvY2sgQ1JDIGhlbHBl cnMKKyAqLwordm9pZCB4ZnNfYnRyZWVfbGJsb2NrX2NhbGNfY3JjKHN0cnVjdCB4ZnNfYnVmICop OworYm9vbCB4ZnNfYnRyZWVfbGJsb2NrX3ZlcmlmeV9jcmMoc3RydWN0IHhmc19idWYgKik7Cit2 b2lkIHhmc19idHJlZV9zYmxvY2tfY2FsY19jcmMoc3RydWN0IHhmc19idWYgKik7Citib29sIHhm c19idHJlZV9zYmxvY2tfdmVyaWZ5X2NyYyhzdHJ1Y3QgeGZzX2J1ZiAqKTsKKworLyoKICAqIElu dGVybmFsIGJ0cmVlIGhlbHBlcnMgYWxzbyB1c2VkIGJ5IHhmc19ibWFwLmMuCiAgKi8KIHZvaWQg eGZzX2J0cmVlX2xvZ19ibG9jayhzdHJ1Y3QgeGZzX2J0cmVlX2N1ciAqLCBzdHJ1Y3QgeGZzX2J1 ZiAqLCBpbnQpOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS94ZnNfYnVmX2l0ZW0uaCBiL2luY2x1ZGUv eGZzX2J1Zl9pdGVtLmgKaW5kZXggZWUzNmM4OC4uMTAxZWY4MyAxMDA2NDQKLS0tIGEvaW5jbHVk ZS94ZnNfYnVmX2l0ZW0uaAorKysgYi9pbmNsdWRlL3hmc19idWZfaXRlbS5oCkBAIC0yNCwxOSAr MjQsMzMgQEAgZXh0ZXJuIGttZW1fem9uZV90CSp4ZnNfYnVmX2l0ZW1fem9uZTsKICAqIFRoaXMg ZmxhZyBpbmRpY2F0ZXMgdGhhdCB0aGUgYnVmZmVyIGNvbnRhaW5zIG9uIGRpc2sgaW5vZGVzCiAg KiBhbmQgcmVxdWlyZXMgc3BlY2lhbCByZWNvdmVyeSBoYW5kbGluZy4KICAqLwotI2RlZmluZQlY RlNfQkxGX0lOT0RFX0JVRgkweDEKKyNkZWZpbmUJWEZTX0JMRl9JTk9ERV9CVUYJKDE8PDApCiAv KgogICogVGhpcyBmbGFnIGluZGljYXRlcyB0aGF0IHRoZSBidWZmZXIgc2hvdWxkIG5vdCBiZSBy ZXBsYXllZAogICogZHVyaW5nIHJlY292ZXJ5IGJlY2F1c2UgaXRzIGJsb2NrcyBhcmUgYmVpbmcg ZnJlZWQuCiAgKi8KLSNkZWZpbmUJWEZTX0JMRl9DQU5DRUwJCTB4MgorI2RlZmluZQlYRlNfQkxG X0NBTkNFTAkJKDE8PDEpCisKIC8qCiAgKiBUaGlzIGZsYWcgaW5kaWNhdGVzIHRoYXQgdGhlIGJ1 ZmZlciBjb250YWlucyBvbiBkaXNrCiAgKiB1c2VyIG9yIGdyb3VwIGRxdW90cyBhbmQgbWF5IHJl cXVpcmUgc3BlY2lhbCByZWNvdmVyeSBoYW5kbGluZy4KICAqLwotI2RlZmluZQlYRlNfQkxGX1VE UVVPVF9CVUYJMHg0Ci0jZGVmaW5lIFhGU19CTEZfUERRVU9UX0JVRgkweDgKLSNkZWZpbmUJWEZT X0JMRl9HRFFVT1RfQlVGCTB4MTAKKyNkZWZpbmUJWEZTX0JMRl9VRFFVT1RfQlVGCSgxPDwyKQor I2RlZmluZSBYRlNfQkxGX1BEUVVPVF9CVUYJKDE8PDMpCisjZGVmaW5lCVhGU19CTEZfR0RRVU9U X0JVRgkoMTw8NCkKKworLyoKKyAqIGFsbCBidWZmZXJzIG5vdyBuZWVkIGZsYWdzIHRvIHRlbGwg cmVjb3Zlcnkgd2hlcmUgdGhlIG1hZ2ljIG51bWJlcgorICogaXMgc28gdGhhdCBpdCBjYW4gdmVy aWZ5IGFuZCBjYWxjdWxhdGUgdGhlIENSQ3Mgb24gdGhlIGJ1ZmZlciBjb3JyZWN0bHkKKyAqIG9u Y2UgdGhlIGNoYW5nZXMgaGF2ZSBiZWVuIHJlcGxheWVkIGludG8gdGhlIGJ1ZmZlci4KKyAqLwor I2RlZmluZSBYRlNfQkxGX0JUUkVFX0JVRgkoMTw8NSkKKworI2RlZmluZSBYRlNfQkxGX1RZUEVf TUFTSwlcCisJCShYRlNfQkxGX1VEUVVPVF9CVUYgfCBcCisJCSBYRlNfQkxGX1BEUVVPVF9CVUYg fCBcCisJCSBYRlNfQkxGX0dEUVVPVF9CVUYgfCBcCisJCSBYRlNfQkxGX0JUUkVFX0JVRikKIAog I2RlZmluZQlYRlNfQkxGX0NIVU5LCQkxMjgKICNkZWZpbmUJWEZTX0JMRl9TSElGVAkJNwpkaWZm IC0tZ2l0IGEvaW5jbHVkZS94ZnNfZGlub2RlLmggYi9pbmNsdWRlL3hmc19kaW5vZGUuaAppbmRl eCA4OGEzMzY4Li42YjViZDE3IDEwMDY0NAotLS0gYS9pbmNsdWRlL3hmc19kaW5vZGUuaAorKysg Yi9pbmNsdWRlL3hmc19kaW5vZGUuaApAQCAtMTA3LDggKzEwNyw4IEBAIHR5cGVkZWYgZW51bSB4 ZnNfZGlub2RlX2ZtdCB7CiAjZGVmaW5lIFhGU19MSVRJTk8obXAsIHZlcnNpb24pIFwKIAkoKGlu dCkoKChtcCktPm1fc2Iuc2JfaW5vZGVzaXplKSAtIHNpemVvZihzdHJ1Y3QgeGZzX2Rpbm9kZSkp KQogCi0jZGVmaW5lCVhGU19CUk9PVF9TSVpFX0FESglcCi0JKFhGU19CVFJFRV9MQkxPQ0tfTEVO IC0gc2l6ZW9mKHhmc19ibWRyX2Jsb2NrX3QpKQorI2RlZmluZSBYRlNfQlJPT1RfU0laRV9BREoo aXApIFwKKwkoWEZTX0JNQlRfQkxPQ0tfTEVOKChpcCktPmlfbW91bnQpIC0gc2l6ZW9mKHhmc19i bWRyX2Jsb2NrX3QpKQogCiAvKgogICogSW5vZGUgZGF0YSAmIGF0dHJpYnV0ZSBmb3JrIHNpemVz LCBwZXIgaW5vZGUuCmRpZmYgLS1naXQgYS9pbmNsdWRlL3hmc19pYWxsb2NfYnRyZWUuaCBiL2lu Y2x1ZGUveGZzX2lhbGxvY19idHJlZS5oCmluZGV4IDI1YzAyMzkuLmExYmZhN2EgMTAwNjQ0Ci0t LSBhL2luY2x1ZGUveGZzX2lhbGxvY19idHJlZS5oCisrKyBiL2luY2x1ZGUveGZzX2lhbGxvY19i dHJlZS5oCkBAIC0yOSw3ICsyOSw4IEBAIHN0cnVjdCB4ZnNfbW91bnQ7CiAvKgogICogVGhlcmUg aXMgYSBidHJlZSBmb3IgdGhlIGlub2RlIG1hcCBwZXIgYWxsb2NhdGlvbiBncm91cC4KICAqLwot I2RlZmluZQlYRlNfSUJUX01BR0lDCTB4NDk0MTQyNTQJLyogJ0lBQlQnICovCisjZGVmaW5lCVhG U19JQlRfTUFHSUMJCTB4NDk0MTQyNTQJLyogJ0lBQlQnICovCisjZGVmaW5lCVhGU19JQlRfQ1JD X01BR0lDCTB4NDk0MTQyMzMJLyogJ0lBQjMnICovCiAKIHR5cGVkZWYJX191aW50NjRfdAl4ZnNf aW5vZnJlZV90OwogI2RlZmluZQlYRlNfSU5PREVTX1BFUl9DSFVOSwkJKE5CQlkgKiBzaXplb2Yo eGZzX2lub2ZyZWVfdCkpCkBAIC03NiwxMCArNzcsMTEgQEAgdHlwZWRlZiBfX2JlMzIgeGZzX2lu b2J0X3B0cl90OwogCiAvKgogICogQnRyZWUgYmxvY2sgaGVhZGVyIHNpemUgZGVwZW5kcyBvbiBh IHN1cGVyYmxvY2sgZmxhZy4KLSAqCi0gKiAobm90IHF1aXRlIHlldCwgYnV0IHNvb24pCiAgKi8K LSNkZWZpbmUgWEZTX0lOT0JUX0JMT0NLX0xFTihtcCkJWEZTX0JUUkVFX1NCTE9DS19MRU4KKyNk ZWZpbmUgWEZTX0lOT0JUX0JMT0NLX0xFTihtcCkgXAorCSh4ZnNfc2JfdmVyc2lvbl9oYXNjcmMo JigobXApLT5tX3NiKSkgPyBcCisJIFhGU19CVFJFRV9TQkxPQ0tfTEVOICsgWEZTX0JUUkVFX0NS Q0JMT0NLX0FERCA6IFwKKwkgWEZTX0JUUkVFX1NCTE9DS19MRU4pCiAKIC8qCiAgKiBSZWNvcmQs IGtleSwgYW5kIHBvaW50ZXIgYWRkcmVzcyBtYWNyb3MgZm9yIGJ0cmVlIGJsb2Nrcy4KZGlmZiAt LWdpdCBhL2luY2x1ZGUveGZzX3RyYW5zLmggYi9pbmNsdWRlL3hmc190cmFucy5oCmluZGV4IGFj ZjEzODEuLmE5YmQ4MjYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUveGZzX3RyYW5zLmgKKysrIGIvaW5j bHVkZS94ZnNfdHJhbnMuaApAQCAtNTAwLDYgKzUwMCw4IEBAIHZvaWQJCXhmc190cmFuc19pbm9k ZV9idWYoeGZzX3RyYW5zX3QgKiwgc3RydWN0IHhmc19idWYgKik7CiB2b2lkCQl4ZnNfdHJhbnNf c3RhbGVfaW5vZGVfYnVmKHhmc190cmFuc190ICosIHN0cnVjdCB4ZnNfYnVmICopOwogdm9pZAkJ eGZzX3RyYW5zX2RxdW90X2J1Zih4ZnNfdHJhbnNfdCAqLCBzdHJ1Y3QgeGZzX2J1ZiAqLCB1aW50 KTsKIHZvaWQJCXhmc190cmFuc19pbm9kZV9hbGxvY19idWYoeGZzX3RyYW5zX3QgKiwgc3RydWN0 IHhmc19idWYgKik7Cit2b2lkCQl4ZnNfdHJhbnNfYnVmX3NldF90eXBlKHN0cnVjdCB4ZnNfdHJh bnMgKiwgc3RydWN0IHhmc19idWYgKiwKKwkJCQkgICAgICAgdWludCk7CiB2b2lkCQl4ZnNfdHJh bnNfaWNoZ3RpbWUoc3RydWN0IHhmc190cmFucyAqLCBzdHJ1Y3QgeGZzX2lub2RlICosIGludCk7 CiB2b2lkCQl4ZnNfdHJhbnNfaWpvaW4oc3RydWN0IHhmc190cmFucyAqLCBzdHJ1Y3QgeGZzX2lu b2RlICosIHVpbnQpOwogdm9pZAkJeGZzX3RyYW5zX2xvZ19idWYoeGZzX3RyYW5zX3QgKiwgc3Ry dWN0IHhmc19idWYgKiwgdWludCwgdWludCk7CmRpZmYgLS1naXQgYS9saWJ4ZnMvcmR3ci5jIGIv bGlieGZzL3Jkd3IuYwppbmRleCBlNzVlZGQwLi5lOWNjN2IxIDEwMDY0NAotLS0gYS9saWJ4ZnMv cmR3ci5jCisrKyBiL2xpYnhmcy9yZHdyLmMKQEAgLTMyMywxNyArMzIzLDE3IEBAIGxpYnhmc19i Y29tcGFyZShzdHJ1Y3QgY2FjaGVfbm9kZSAqbm9kZSwgY2FjaGVfa2V5X3Qga2V5KQogCiAjaWZk ZWYgSU9fQkNPTVBBUkVfQ0hFQ0sKIAlpZiAoYnAtPmJfZGV2ID09IGJrZXktPmRldmljZSAmJgot CSAgICBicC0+Yl9ibGtubyA9PSBia2V5LT5ibGtubyAmJgorCSAgICBicC0+Yl9ibiA9PSBia2V5 LT5ibGtubyAmJgogCSAgICBicC0+Yl9iY291bnQgIT0gQkJUT0IoYmtleS0+YmJsZW4pKQogCQlm cHJpbnRmKHN0ZGVyciwgIiVseDogQmFkbmVzcyBpbiBrZXkgbG9va3VwIChsZW5ndGgpXG4iCiAJ CQkiYnA9KGJubyAweCVsbHgsIGxlbiAldSBieXRlcykga2V5PShibm8gMHglbGx4LCBsZW4gJXUg Ynl0ZXMpXG4iLAogCQkJcHRocmVhZF9zZWxmKCksCi0JCQkodW5zaWduZWQgbG9uZyBsb25nKWJw LT5iX2Jsa25vLCAoaW50KWJwLT5iX2Jjb3VudCwKKwkJCSh1bnNpZ25lZCBsb25nIGxvbmcpYnAt PmJfYm4sIChpbnQpYnAtPmJfYmNvdW50LAogCQkJKHVuc2lnbmVkIGxvbmcgbG9uZylia2V5LT5i bGtubywgQkJUT0IoYmtleS0+YmJsZW4pKTsKICNlbmRpZgogCiAJcmV0dXJuIChicC0+Yl9kZXYg PT0gYmtleS0+ZGV2aWNlICYmCi0JCWJwLT5iX2Jsa25vID09IGJrZXktPmJsa25vICYmCisJCWJw LT5iX2JuID09IGJrZXktPmJsa25vICYmCiAJCWJwLT5iX2Jjb3VudCA9PSBCQlRPQihia2V5LT5i YmxlbikpOwogfQogCkBAIC0zNDEsNyArMzQxLDcgQEAgdm9pZAogbGlieGZzX2JwcmludCh4ZnNf YnVmX3QgKmJwKQogewogCWZwcmludGYoc3RkZXJyLCAiQnVmZmVyIDB4JXAgYmxrbm89JWxsdSBi eXRlcz0ldSBmbGFncz0weCV4IGNvdW50PSV1XG4iLAotCQlicCwgKHVuc2lnbmVkIGxvbmcgbG9u ZylicC0+Yl9ibGtubywgKHVuc2lnbmVkKWJwLT5iX2Jjb3VudCwKKwkJYnAsICh1bnNpZ25lZCBs b25nIGxvbmcpYnAtPmJfYm4sICh1bnNpZ25lZClicC0+Yl9iY291bnQsCiAJCWJwLT5iX2ZsYWdz LCBicC0+Yl9ub2RlLmNuX2NvdW50KTsKIH0KIApAQCAtMzQ5LDcgKzM0OSw3IEBAIHN0YXRpYyB2 b2lkCiBfX2luaXRidWYoeGZzX2J1Zl90ICpicCwgZGV2X3QgZGV2aWNlLCB4ZnNfZGFkZHJfdCBi bm8sIHVuc2lnbmVkIGludCBieXRlcykKIHsKIAlicC0+Yl9mbGFncyA9IDA7Ci0JYnAtPmJfYmxr bm8gPSBibm87CisJYnAtPmJfYm4gPSBibm87CiAJYnAtPmJfYmNvdW50ID0gYnl0ZXM7CiAJYnAt PmJfbGVuZ3RoID0gQlRPQkIoYnl0ZXMpOwogCWJwLT5iX2RldiA9IGRldmljZTsKQEAgLTYxMyw3 ICs2MTMsNyBAQCBsaWJ4ZnNfcHVyZ2VidWYoeGZzX2J1Zl90ICpicCkKIAlzdHJ1Y3QgeGZzX2J1 ZmtleSBrZXkgPSB7MH07CiAKIAlrZXkuZGV2aWNlID0gYnAtPmJfZGV2OwotCWtleS5ibGtubyA9 IGJwLT5iX2Jsa25vOworCWtleS5ibGtubyA9IGJwLT5iX2JuOwogCWtleS5iYmxlbiA9IGJwLT5i X2Jjb3VudCA+PiBCQlNISUZUOwogCiAJY2FjaGVfbm9kZV9wdXJnZShsaWJ4ZnNfYmNhY2hlLCAm a2V5LCAoc3RydWN0IGNhY2hlX25vZGUgKilicCk7CkBAIC02NjksNyArNjY5LDcgQEAgbGlieGZz X3JlYWRidWZyKGRldl90IGRldiwgeGZzX2RhZGRyX3QgYmxrbm8sIHhmc19idWZfdCAqYnAsIGlu dCBsZW4sIGludCBmbGFncykKIAllcnJvciA9IF9fcmVhZF9idWYoZmQsIGJwLT5iX2FkZHIsIGJ5 dGVzLCBMSUJYRlNfQkJUT09GRjY0KGJsa25vKSwgZmxhZ3MpOwogCWlmICghZXJyb3IgJiYKIAkg ICAgYnAtPmJfZGV2ID09IGRldiAmJgotCSAgICBicC0+Yl9ibGtubyA9PSBibGtubyAmJgorCSAg ICBicC0+Yl9ibiA9PSBibGtubyAmJgogCSAgICBicC0+Yl9iY291bnQgPT0gYnl0ZXMpCiAJCWJw LT5iX2ZsYWdzIHw9IExJQlhGU19CX1VQVE9EQVRFOwogI2lmZGVmIElPX0RFQlVHCkBAIC03MzYs NyArNzM2LDcgQEAgbGlieGZzX3JlYWRidWZfbWFwKGRldl90IGRldiwgc3RydWN0IHhmc19idWZf bWFwICptYXAsIGludCBubWFwcywgaW50IGZsYWdzKQogI2lmZGVmIElPX0RFQlVHCiAJcHJpbnRm KCIlbHg6ICVzOiByZWFkICVsdSBieXRlcywgZXJyb3IgJWQsIGJsa25vPSVsbHUoJWxsdSksICVw XG4iLAogCQlwdGhyZWFkX3NlbGYoKSwgX19GVU5DVElPTl9fLCBidWYgLSAoY2hhciAqKWJwLT5i X2FkZHIsIGVycm9yLAotCQkobG9uZyBsb25nKUxJQlhGU19CQlRPT0ZGNjQoYnAtPmJfYmxrbm8p LCAobG9uZyBsb25nKWJwLT5iX2Jsa25vLCBicCk7CisJCShsb25nIGxvbmcpTElCWEZTX0JCVE9P RkY2NChicC0+Yl9ibiksIChsb25nIGxvbmcpYnAtPmJfYm4sIGJwKTsKICNlbmRpZgogCXJldHVy biBicDsKIH0KQEAgLTc3Miw3ICs3NzIsNyBAQCBsaWJ4ZnNfd3JpdGVidWZyKHhmc19idWZfdCAq YnApCiAKIAlpZiAoIShicC0+Yl9mbGFncyAmIExJQlhGU19CX0RJU0NPTlRJRykpIHsKIAkJZXJy b3IgPSBfX3dyaXRlX2J1ZihmZCwgYnAtPmJfYWRkciwgYnAtPmJfYmNvdW50LAotCQkJCSAgICBM SUJYRlNfQkJUT09GRjY0KGJwLT5iX2Jsa25vKSwgYnAtPmJfZmxhZ3MpOworCQkJCSAgICBMSUJY RlNfQkJUT09GRjY0KGJwLT5iX2JuKSwgYnAtPmJfZmxhZ3MpOwogCX0gZWxzZSB7CiAJCWludAlp OwogCQljaGFyCSpidWYgPSBicC0+Yl9hZGRyOwpAQCAtNzk0LDggKzc5NCw4IEBAIGxpYnhmc193 cml0ZWJ1ZnIoeGZzX2J1Zl90ICpicCkKICNpZmRlZiBJT19ERUJVRwogCXByaW50ZigiJWx4OiAl czogd3JvdGUgJXUgYnl0ZXMsIGJsa25vPSVsbHUoJWxsdSksICVwXG4iLAogCQkJcHRocmVhZF9z ZWxmKCksIF9fRlVOQ1RJT05fXywgYnAtPmJfYmNvdW50LAotCQkJKGxvbmcgbG9uZylMSUJYRlNf QkJUT09GRjY0KGJwLT5iX2Jsa25vKSwKLQkJCShsb25nIGxvbmcpYnAtPmJfYmxrbm8sIGJwKTsK KwkJCShsb25nIGxvbmcpTElCWEZTX0JCVE9PRkY2NChicC0+Yl9ibiksCisJCQkobG9uZyBsb25n KWJwLT5iX2JuLCBicCk7CiAjZW5kaWYKIAlpZiAoIWVycm9yKSB7CiAJCWJwLT5iX2ZsYWdzIHw9 IExJQlhGU19CX1VQVE9EQVRFOwpAQCAtODI2LDcgKzgyNiw3IEBAIGxpYnhmc19pb21vdmUoeGZz X2J1Zl90ICpicCwgdWludCBib2ZmLCBpbnQgbGVuLCB2b2lkICpkYXRhLCBpbnQgZmxhZ3MpCiAJ aWYgKGJvZmYgKyBsZW4gPiBicC0+Yl9iY291bnQpIHsKIAkJcHJpbnRmKCJCYWRuZXNzLCBpb21v dmUgb3V0IG9mIHJhbmdlIVxuIgogCQkJImJwPShibm8gMHglbGx4LCBieXRlcyAldSkgcmFuZ2U9 KGJvZmYgJXUsIGJ5dGVzICV1KVxuIiwKLQkJCShsb25nIGxvbmcpYnAtPmJfYmxrbm8sIGJwLT5i X2Jjb3VudCwgYm9mZiwgbGVuKTsKKwkJCShsb25nIGxvbmcpYnAtPmJfYm4sIGJwLT5iX2Jjb3Vu dCwgYm9mZiwgbGVuKTsKIAkJYWJvcnQoKTsKIAl9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL2xpYnhm cy94ZnMuaCBiL2xpYnhmcy94ZnMuaAppbmRleCA5ZmJlMjYxLi5iM2I0NWJiIDEwMDY0NAotLS0g YS9saWJ4ZnMveGZzLmgKKysrIGIvbGlieGZzL3hmcy5oCkBAIC0yNDksNiArMjQ5LDcgQEAgcm91 bmR1cF9wb3dfb2ZfdHdvKHVpbnQgdikKICNkZWZpbmUJeGZzX3RyYW5zX2FnYmxvY2tzX2RlbHRh KHRwLCBkKQogI2RlZmluZQl4ZnNfdHJhbnNfYWdmbGlzdF9kZWx0YSh0cCwgZCkKICNkZWZpbmUJ eGZzX3RyYW5zX2FnYnRyZWVfZGVsdGEodHAsIGQpCisjZGVmaW5lIHhmc190cmFuc19idWZfc2V0 X3R5cGUodHAsIGJwLCB0KQogCiAjZGVmaW5lIHhmc19idWZfcmVhZGFoZWFkKGEsYixjLG9wcykJ CSgodm9pZCkgMCkJLyogbm8gcmVhZGFoZWFkICovCiAjZGVmaW5lIHhmc19idWZfcmVhZGFoZWFk X21hcChhLGIsYyxvcHMpCSgodm9pZCkgMCkJLyogbm8gcmVhZGFoZWFkICovCkBAIC0zMTQsNiAr MzE1LDkgQEAgZG8geyBcCiAjZGVmaW5lIHhmc190cmFuc191bnJlc2VydmVfcXVvdGFfbmJsa3Mo dCxpLGIsbixmKQkoKHZvaWQpIDApCiAjZGVmaW5lIHhmc19xbV9kcWF0dGFjaChpLGYpCQkJCSgw KQogCisjZGVmaW5lIHV1aWRfY29weShzLGQpCQlwbGF0Zm9ybV91dWlkX2NvcHkoKHMpLChkKSkK KyNkZWZpbmUgdXVpZF9lcXVhbChzLGQpCQkocGxhdGZvcm1fdXVpZF9jb21wYXJlKChzKSwoZCkp ID09IDApCisKIC8qCiAgKiBQcm90b3R5cGVzIGZvciBrZXJuZWwgc3RhdGljIGZ1bmN0aW9ucyB0 aGF0IGFyZSBhcmVuJ3QgaW4gdGhlaXIKICAqIGFzc29jaWF0ZWQgaGVhZGVyIGZpbGVzCmRpZmYg LS1naXQgYS9saWJ4ZnMveGZzX2FsbG9jX2J0cmVlLmMgYi9saWJ4ZnMveGZzX2FsbG9jX2J0cmVl LmMKaW5kZXggYTc1MWMzNy4uMWVlMWY0OCAxMDA2NDQKLS0tIGEvbGlieGZzL3hmc19hbGxvY19i dHJlZS5jCisrKyBiL2xpYnhmcy94ZnNfYWxsb2NfYnRyZWUuYwpAQCAtMjUzLDcgKzI1Myw3IEBA IHhmc19hbGxvY2J0X2tleV9kaWZmKAogCXJldHVybiAoX19pbnQ2NF90KWJlMzJfdG9fY3B1KGtw LT5hcl9zdGFydGJsb2NrKSAtIHJlYy0+YXJfc3RhcnRibG9jazsKIH0KIAotc3RhdGljIHZvaWQK K3N0YXRpYyBib29sCiB4ZnNfYWxsb2NidF92ZXJpZnkoCiAJc3RydWN0IHhmc19idWYJCSpicCkK IHsKQEAgLTI2MSw2NiArMjYxLDk4IEBAIHhmc19hbGxvY2J0X3ZlcmlmeSgKIAlzdHJ1Y3QgeGZz X2J0cmVlX2Jsb2NrCSpibG9jayA9IFhGU19CVUZfVE9fQkxPQ0soYnApOwogCXN0cnVjdCB4ZnNf cGVyYWcJKnBhZyA9IGJwLT5iX3BhZzsKIAl1bnNpZ25lZCBpbnQJCWxldmVsOwotCWludAkJCXNi bG9ja19vazsgLyogYmxvY2sgcGFzc2VzIGNoZWNrcyAqLwogCiAJLyoKIAkgKiBtYWdpYyBudW1i ZXIgYW5kIGxldmVsIHZlcmlmaWNhdGlvbgogCSAqCi0JICogRHVyaW5nIGdyb3dmcyBvcGVyYXRp b25zLCB3ZSBjYW4ndCB2ZXJpZnkgdGhlIGV4YWN0IGxldmVsIGFzIHRoZQotCSAqIHBlcmFnIGlz IG5vdCBmdWxseSBpbml0aWFsaXNlZCBhbmQgaGVuY2Ugbm90IGF0dGFjaGVkIHRvIHRoZSBidWZm ZXIuCi0JICogSW4gdGhpcyBjYXNlLCBjaGVjayBhZ2FpbnN0IHRoZSBtYXhpbXVtIHRyZWUgZGVw dGguCisJICogRHVyaW5nIGdyb3dmcyBvcGVyYXRpb25zLCB3ZSBjYW4ndCB2ZXJpZnkgdGhlIGV4 YWN0IGxldmVsIG9yIG93bmVyIGFzCisJICogdGhlIHBlcmFnIGlzIG5vdCBmdWxseSBpbml0aWFs aXNlZCBhbmQgaGVuY2Ugbm90IGF0dGFjaGVkIHRvIHRoZQorCSAqIGJ1ZmZlci4gIEluIHRoaXMg Y2FzZSwgY2hlY2sgYWdhaW5zdCB0aGUgbWF4aW11bSB0cmVlIGRlcHRoLgogCSAqLwogCWxldmVs ID0gYmUxNl90b19jcHUoYmxvY2stPmJiX2xldmVsKTsKIAlzd2l0Y2ggKGNwdV90b19iZTMyKGJs b2NrLT5iYl9tYWdpYykpIHsKKwljYXNlIFhGU19BQlRCX0NSQ19NQUdJQzoKKwkJaWYgKCF4ZnNf c2JfdmVyc2lvbl9oYXNjcmMoJm1wLT5tX3NiKSkKKwkJCXJldHVybiBmYWxzZTsKKwkJaWYgKCF1 dWlkX2VxdWFsKCZibG9jay0+YmJfdS5zLmJiX3V1aWQsICZtcC0+bV9zYi5zYl91dWlkKSkKKwkJ CXJldHVybiBmYWxzZTsKKwkJaWYgKGJsb2NrLT5iYl91LnMuYmJfYmxrbm8gIT0gY3B1X3RvX2Jl NjQoYnAtPmJfYm4pKQorCQkJcmV0dXJuIGZhbHNlOworCQlpZiAocGFnICYmCisJCSAgICBiZTMy X3RvX2NwdShibG9jay0+YmJfdS5zLmJiX293bmVyKSAhPSBwYWctPnBhZ19hZ25vKQorCQkJcmV0 dXJuIGZhbHNlOworCQkvKiBmYWxsIHRocm91Z2ggKi8KIAljYXNlIFhGU19BQlRCX01BR0lDOgot CQlpZiAocGFnKQotCQkJc2Jsb2NrX29rID0gbGV2ZWwgPCBwYWctPnBhZ2ZfbGV2ZWxzW1hGU19C VE5VTV9CTk9pXTsKLQkJZWxzZQotCQkJc2Jsb2NrX29rID0gbGV2ZWwgPCBtcC0+bV9hZ19tYXhs ZXZlbHM7CisJCWlmIChwYWcpIHsKKwkJCWlmIChsZXZlbCA+PSBwYWctPnBhZ2ZfbGV2ZWxzW1hG U19CVE5VTV9CTk9pXSkKKwkJCQlyZXR1cm4gZmFsc2U7CisJCX0gZWxzZSBpZiAobGV2ZWwgPj0g bXAtPm1fYWdfbWF4bGV2ZWxzKQorCQkJcmV0dXJuIGZhbHNlOwogCQlicmVhazsKKwljYXNlIFhG U19BQlRDX0NSQ19NQUdJQzoKKwkJaWYgKCF4ZnNfc2JfdmVyc2lvbl9oYXNjcmMoJm1wLT5tX3Ni KSkKKwkJCXJldHVybiBmYWxzZTsKKwkJaWYgKCF1dWlkX2VxdWFsKCZibG9jay0+YmJfdS5zLmJi X3V1aWQsICZtcC0+bV9zYi5zYl91dWlkKSkKKwkJCXJldHVybiBmYWxzZTsKKwkJaWYgKGJsb2Nr LT5iYl91LnMuYmJfYmxrbm8gIT0gY3B1X3RvX2JlNjQoYnAtPmJfYm4pKQorCQkJcmV0dXJuIGZh bHNlOworCQlpZiAocGFnICYmCisJCSAgICBiZTMyX3RvX2NwdShibG9jay0+YmJfdS5zLmJiX293 bmVyKSAhPSBwYWctPnBhZ19hZ25vKQorCQkJcmV0dXJuIGZhbHNlOworCQkvKiBmYWxsIHRocm91 Z2ggKi8KIAljYXNlIFhGU19BQlRDX01BR0lDOgotCQlpZiAocGFnKQotCQkJc2Jsb2NrX29rID0g bGV2ZWwgPCBwYWctPnBhZ2ZfbGV2ZWxzW1hGU19CVE5VTV9DTlRpXTsKLQkJZWxzZQotCQkJc2Js b2NrX29rID0gbGV2ZWwgPCBtcC0+bV9hZ19tYXhsZXZlbHM7CisJCWlmIChwYWcpIHsKKwkJCWlm IChsZXZlbCA+PSBwYWctPnBhZ2ZfbGV2ZWxzW1hGU19CVE5VTV9DTlRpXSkKKwkJCQlyZXR1cm4g ZmFsc2U7CisJCX0gZWxzZSBpZiAobGV2ZWwgPj0gbXAtPm1fYWdfbWF4bGV2ZWxzKQorCQkJcmV0 dXJuIGZhbHNlOwogCQlicmVhazsKIAlkZWZhdWx0OgotCQlzYmxvY2tfb2sgPSAwOwotCQlicmVh azsKKwkJcmV0dXJuIGZhbHNlOwogCX0KIAogCS8qIG51bXJlY3MgdmVyaWZpY2F0aW9uICovCi0J c2Jsb2NrX29rID0gc2Jsb2NrX29rICYmCi0JCWJlMTZfdG9fY3B1KGJsb2NrLT5iYl9udW1yZWNz KSA8PSBtcC0+bV9hbGxvY19teHJbbGV2ZWwgIT0gMF07CisJaWYgKGJlMTZfdG9fY3B1KGJsb2Nr LT5iYl9udW1yZWNzKSA+IG1wLT5tX2FsbG9jX214cltsZXZlbCAhPSAwXSkKKwkJcmV0dXJuIGZh bHNlOwogCiAJLyogc2libGluZyBwb2ludGVyIHZlcmlmaWNhdGlvbiAqLwotCXNibG9ja19vayA9 IHNibG9ja19vayAmJgotCQkoYmxvY2stPmJiX3Uucy5iYl9sZWZ0c2liID09IGNwdV90b19iZTMy KE5VTExBR0JMT0NLKSB8fAotCQkgYmUzMl90b19jcHUoYmxvY2stPmJiX3Uucy5iYl9sZWZ0c2li KSA8IG1wLT5tX3NiLnNiX2FnYmxvY2tzKSAmJgotCQlibG9jay0+YmJfdS5zLmJiX2xlZnRzaWIg JiYKLQkJKGJsb2NrLT5iYl91LnMuYmJfcmlnaHRzaWIgPT0gY3B1X3RvX2JlMzIoTlVMTEFHQkxP Q0spIHx8Ci0JCSBiZTMyX3RvX2NwdShibG9jay0+YmJfdS5zLmJiX3JpZ2h0c2liKSA8IG1wLT5t X3NiLnNiX2FnYmxvY2tzKSAmJgotCQlibG9jay0+YmJfdS5zLmJiX3JpZ2h0c2liOwotCi0JaWYg KCFzYmxvY2tfb2spIHsKLQkJdHJhY2VfeGZzX2J0cmVlX2NvcnJ1cHQoYnAsIF9SRVRfSVBfKTsK LQkJWEZTX0NPUlJVUFRJT05fRVJST1IoX19mdW5jX18sIFhGU19FUlJMRVZFTF9MT1csIG1wLCBi bG9jayk7Ci0JCXhmc19idWZfaW9lcnJvcihicCwgRUZTQ09SUlVQVEVEKTsKLQl9CisJaWYgKCFi bG9jay0+YmJfdS5zLmJiX2xlZnRzaWIgfHwKKwkgICAgKGJlMzJfdG9fY3B1KGJsb2NrLT5iYl91 LnMuYmJfbGVmdHNpYikgPj0gbXAtPm1fc2Iuc2JfYWdibG9ja3MgJiYKKwkgICAgIGJsb2NrLT5i Yl91LnMuYmJfbGVmdHNpYiAhPSBjcHVfdG9fYmUzMihOVUxMQUdCTE9DSykpKQorCQlyZXR1cm4g ZmFsc2U7CisJaWYgKCFibG9jay0+YmJfdS5zLmJiX3JpZ2h0c2liIHx8CisJICAgIChiZTMyX3Rv X2NwdShibG9jay0+YmJfdS5zLmJiX3JpZ2h0c2liKSA+PSBtcC0+bV9zYi5zYl9hZ2Jsb2NrcyAm JgorCSAgICAgYmxvY2stPmJiX3Uucy5iYl9yaWdodHNpYiAhPSBjcHVfdG9fYmUzMihOVUxMQUdC TE9DSykpKQorCQlyZXR1cm4gZmFsc2U7CisKKwlyZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIHZv aWQKIHhmc19hbGxvY2J0X3JlYWRfdmVyaWZ5KAogCXN0cnVjdCB4ZnNfYnVmCSpicCkKIHsKLQl4 ZnNfYWxsb2NidF92ZXJpZnkoYnApOworCWlmICghKHhmc19idHJlZV9zYmxvY2tfdmVyaWZ5X2Ny YyhicCkgJiYKKwkgICAgICB4ZnNfYWxsb2NidF92ZXJpZnkoYnApKSkgeworCQl0cmFjZV94ZnNf YnRyZWVfY29ycnVwdChicCwgX1JFVF9JUF8pOworCQlYRlNfQ09SUlVQVElPTl9FUlJPUihfX2Z1 bmNfXywgWEZTX0VSUkxFVkVMX0xPVywKKwkJCQkgICAgIGJwLT5iX3RhcmdldC0+YnRfbW91bnQs IGJwLT5iX2FkZHIpOworCQl4ZnNfYnVmX2lvZXJyb3IoYnAsIEVGU0NPUlJVUFRFRCk7CisJfQog fQogCiBzdGF0aWMgdm9pZAogeGZzX2FsbG9jYnRfd3JpdGVfdmVyaWZ5KAogCXN0cnVjdCB4ZnNf YnVmCSpicCkKIHsKLQl4ZnNfYWxsb2NidF92ZXJpZnkoYnApOworCWlmICgheGZzX2FsbG9jYnRf dmVyaWZ5KGJwKSkgeworCQl0cmFjZV94ZnNfYnRyZWVfY29ycnVwdChicCwgX1JFVF9JUF8pOwor CQlYRlNfQ09SUlVQVElPTl9FUlJPUihfX2Z1bmNfXywgWEZTX0VSUkxFVkVMX0xPVywKKwkJCQkg ICAgIGJwLT5iX3RhcmdldC0+YnRfbW91bnQsIGJwLT5iX2FkZHIpOworCQl4ZnNfYnVmX2lvZXJy b3IoYnAsIEVGU0NPUlJVUFRFRCk7CisJfQorCXhmc19idHJlZV9zYmxvY2tfY2FsY19jcmMoYnAp OworCiB9CiAKIGNvbnN0IHN0cnVjdCB4ZnNfYnVmX29wcyB4ZnNfYWxsb2NidF9idWZfb3BzID0g ewpAQCAtNDk4LDYgKzUzMCw5IEBAIHhmc19hbGxvY2J0X2luaXRfY3Vyc29yKAogCWN1ci0+YmNf cHJpdmF0ZS5hLmFnYnAgPSBhZ2JwOwogCWN1ci0+YmNfcHJpdmF0ZS5hLmFnbm8gPSBhZ25vOwog CisJaWYgKHhmc19zYl92ZXJzaW9uX2hhc2NyYygmbXAtPm1fc2IpKQorCQljdXItPmJjX2ZsYWdz IHw9IFhGU19CVFJFRV9DUkNfQkxPQ0tTOworCiAJcmV0dXJuIGN1cjsKIH0KIApkaWZmIC0tZ2l0 IGEvbGlieGZzL3hmc19hdHRyX2xlYWYuYyBiL2xpYnhmcy94ZnNfYXR0cl9sZWFmLmMKaW5kZXgg NDI2MTMwZi4uODVjYjMxZCAxMDA2NDQKLS0tIGEvbGlieGZzL3hmc19hdHRyX2xlYWYuYworKysg Yi9saWJ4ZnMveGZzX2F0dHJfbGVhZi5jCkBAIC0yMDEsNyArMjAxLDcgQEAgeGZzX2F0dHJfc2hv cnRmb3JtX2J5dGVzZml0KHhmc19pbm9kZV90ICpkcCwgaW50IGJ5dGVzKQogCQkJCXJldHVybiAw OwogCQkJcmV0dXJuIGRwLT5pX2QuZGlfZm9ya29mZjsKIAkJfQotCQlkc2l6ZSA9IFhGU19CTUFQ X0JST09UX1NQQUNFKGRwLT5pX2RmLmlmX2Jyb290KTsKKwkJZHNpemUgPSBYRlNfQk1BUF9CUk9P VF9TUEFDRShtcCwgZHAtPmlfZGYuaWZfYnJvb3QpOwogCQlicmVhazsKIAl9CiAKZGlmZiAtLWdp dCBhL2xpYnhmcy94ZnNfYm1hcC5jIGIvbGlieGZzL3hmc19ibWFwLmMKaW5kZXggYzgyMzJhOS4u NWU3MzZhNSAxMDA2NDQKLS0tIGEvbGlieGZzL3hmc19ibWFwLmMKKysrIGIvbGlieGZzL3hmc19i bWFwLmMKQEAgLTQwNywxMSArNDA3LDE1IEBAIHhmc19ibWFwX3Nhbml0eV9jaGVjaygKIHsKIAlz dHJ1Y3QgeGZzX2J0cmVlX2Jsb2NrICAqYmxvY2sgPSBYRlNfQlVGX1RPX0JMT0NLKGJwKTsKIAot CWlmIChibG9jay0+YmJfbWFnaWMgIT0gY3B1X3RvX2JlMzIoWEZTX0JNQVBfTUFHSUMpIHx8Ci0J ICAgIGJlMTZfdG9fY3B1KGJsb2NrLT5iYl9sZXZlbCkgIT0gbGV2ZWwgfHwKKwlpZiAoYmxvY2st PmJiX21hZ2ljICE9IGNwdV90b19iZTMyKFhGU19CTUFQX0NSQ19NQUdJQykgJiYKKwkgICAgYmxv Y2stPmJiX21hZ2ljICE9IGNwdV90b19iZTMyKFhGU19CTUFQX01BR0lDKSkKKwkJcmV0dXJuIDA7 CisKKwlpZiAoYmUxNl90b19jcHUoYmxvY2stPmJiX2xldmVsKSAhPSBsZXZlbCB8fAogCSAgICBi ZTE2X3RvX2NwdShibG9jay0+YmJfbnVtcmVjcykgPT0gMCB8fAogCSAgICBiZTE2X3RvX2NwdShi bG9jay0+YmJfbnVtcmVjcykgPiBtcC0+bV9ibWFwX2RteHJbbGV2ZWwgIT0gMF0pCiAJCXJldHVy biAwOworCiAJcmV0dXJuIDE7CiB9CiAKQEAgLTkxNCw2ICs5MTgsNyBAQCB4ZnNfYm1hcF9leHRl bnRzX3RvX2J0cmVlKAogCXhmc19leHRudW1fdAkJbmV4dGVudHM7CS8qIG51bWJlciBvZiBmaWxl IGV4dGVudHMgKi8KIAl4ZnNfYm1idF9wdHJfdAkJKnBwOwkJLyogcm9vdCBibG9jayBhZGRyZXNz IHBvaW50ZXIgKi8KIAorCW1wID0gaXAtPmlfbW91bnQ7CiAJaWZwID0gWEZTX0lGT1JLX1BUUihp cCwgd2hpY2hmb3JrKTsKIAlBU1NFUlQoWEZTX0lGT1JLX0ZPUk1BVChpcCwgd2hpY2hmb3JrKSA9 PSBYRlNfRElOT0RFX0ZNVF9FWFRFTlRTKTsKIApAQCAtOTI3LDE2ICs5MzIsMTggQEAgeGZzX2Jt YXBfZXh0ZW50c190b19idHJlZSgKIAkgKiBGaWxsIGluIHRoZSByb290LgogCSAqLwogCWJsb2Nr ID0gaWZwLT5pZl9icm9vdDsKLQlibG9jay0+YmJfbWFnaWMgPSBjcHVfdG9fYmUzMihYRlNfQk1B UF9NQUdJQyk7Ci0JYmxvY2stPmJiX2xldmVsID0gY3B1X3RvX2JlMTYoMSk7Ci0JYmxvY2stPmJi X251bXJlY3MgPSBjcHVfdG9fYmUxNigxKTsKLQlibG9jay0+YmJfdS5sLmJiX2xlZnRzaWIgPSBj cHVfdG9fYmU2NChOVUxMREZTQk5PKTsKLQlibG9jay0+YmJfdS5sLmJiX3JpZ2h0c2liID0gY3B1 X3RvX2JlNjQoTlVMTERGU0JOTyk7CisJaWYgKHhmc19zYl92ZXJzaW9uX2hhc2NyYygmbXAtPm1f c2IpKQorCQl4ZnNfYnRyZWVfaW5pdF9ibG9ja19pbnQobXAsIGJsb2NrLCBYRlNfQlVGX0RBRERS X05VTEwsCisJCQkJIFhGU19CTUFQX0NSQ19NQUdJQywgMSwgMSwgaXAtPmlfaW5vLAorCQkJCSBY RlNfQlRSRUVfTE9OR19QVFJTIHwgWEZTX0JUUkVFX0NSQ19CTE9DS1MpOworCWVsc2UKKwkJeGZz X2J0cmVlX2luaXRfYmxvY2tfaW50KG1wLCBibG9jaywgWEZTX0JVRl9EQUREUl9OVUxMLAorCQkJ CSBYRlNfQk1BUF9NQUdJQywgMSwgMSwgaXAtPmlfaW5vLAorCQkJCSBYRlNfQlRSRUVfTE9OR19Q VFJTKTsKIAogCS8qCiAJICogTmVlZCBhIGN1cnNvci4gIENhbid0IGFsbG9jYXRlIHVudGlsIGJi X2xldmVsIGlzIGZpbGxlZCBpbi4KIAkgKi8KLQltcCA9IGlwLT5pX21vdW50OwogCWN1ciA9IHhm c19ibWJ0X2luaXRfY3Vyc29yKG1wLCB0cCwgaXAsIHdoaWNoZm9yayk7CiAJY3VyLT5iY19wcml2 YXRlLmIuZmlyc3RibG9jayA9ICpmaXJzdGJsb2NrOwogCWN1ci0+YmNfcHJpdmF0ZS5iLmZsaXN0 ID0gZmxpc3Q7CkBAIC05ODUsMTAgKzk5MiwxNSBAQCB4ZnNfYm1hcF9leHRlbnRzX3RvX2J0cmVl KAogCSAqLwogCWFicC0+Yl9vcHMgPSAmeGZzX2JtYnRfYnVmX29wczsKIAlhYmxvY2sgPSBYRlNf QlVGX1RPX0JMT0NLKGFicCk7Ci0JYWJsb2NrLT5iYl9tYWdpYyA9IGNwdV90b19iZTMyKFhGU19C TUFQX01BR0lDKTsKLQlhYmxvY2stPmJiX2xldmVsID0gMDsKLQlhYmxvY2stPmJiX3UubC5iYl9s ZWZ0c2liID0gY3B1X3RvX2JlNjQoTlVMTERGU0JOTyk7Ci0JYWJsb2NrLT5iYl91LmwuYmJfcmln aHRzaWIgPSBjcHVfdG9fYmU2NChOVUxMREZTQk5PKTsKKwlpZiAoeGZzX3NiX3ZlcnNpb25faGFz Y3JjKCZtcC0+bV9zYikpCisJCXhmc19idHJlZV9pbml0X2Jsb2NrX2ludChtcCwgYWJsb2NrLCBh YnAtPmJfYm4sCisJCQkJWEZTX0JNQVBfQ1JDX01BR0lDLCAwLCAwLCBpcC0+aV9pbm8sCisJCQkJ WEZTX0JUUkVFX0xPTkdfUFRSUyB8IFhGU19CVFJFRV9DUkNfQkxPQ0tTKTsKKwllbHNlCisJCXhm c19idHJlZV9pbml0X2Jsb2NrX2ludChtcCwgYWJsb2NrLCBhYnAtPmJfYm4sCisJCQkJWEZTX0JN QVBfTUFHSUMsIDAsIDAsIGlwLT5pX2lubywKKwkJCQlYRlNfQlRSRUVfTE9OR19QVFJTKTsKKwog CWFycCA9IFhGU19CTUJUX1JFQ19BRERSKG1wLCBhYmxvY2ssIDEpOwogCW5leHRlbnRzID0gaWZw LT5pZl9ieXRlcyAvICh1aW50KXNpemVvZih4ZnNfYm1idF9yZWNfdCk7CiAJZm9yIChjbnQgPSBp ID0gMDsgaSA8IG5leHRlbnRzOyBpKyspIHsKQEAgLTEwMTYsOCArMTAyOCw4IEBAIHhmc19ibWFw X2V4dGVudHNfdG9fYnRyZWUoCiAJICogRG8gYWxsIHRoaXMgbG9nZ2luZyBhdCB0aGUgZW5kIHNv IHRoYXQKIAkgKiB0aGUgcm9vdCBpcyBhdCB0aGUgcmlnaHQgbGV2ZWwuCiAJICovCi0JeGZzX2J0 cmVlX2xvZ19ibG9jayhjdXIsIGFicCwgWEZTX0JCX0FMTF9CSVRTKTsKIAl4ZnNfYnRyZWVfbG9n X3JlY3MoY3VyLCBhYnAsIDEsIGJlMTZfdG9fY3B1KGFibG9jay0+YmJfbnVtcmVjcykpOworCXhm c19idHJlZV9sb2dfYmxvY2soY3VyLCBhYnAsIFhGU19CQl9BTExfQklUUyk7CiAJQVNTRVJUKCpj dXJwID09IE5VTEwpOwogCSpjdXJwID0gY3VyOwogCSpsb2dmbGFnc3AgPSBYRlNfSUxPR19DT1JF IHwgeGZzX2lsb2dfZmJyb290KHdoaWNoZm9yayk7CkBAIC0xMDM4LDcgKzEwNTAsOCBAQCB4ZnNf Ym1hcF9sb2NhbF90b19leHRlbnRzKAogCXhmc19leHRsZW5fdAl0b3RhbCwJCS8qIHRvdGFsIGJs b2NrcyBuZWVkZWQgYnkgdHJhbnNhY3Rpb24gKi8KIAlpbnQJCSpsb2dmbGFnc3AsCS8qIGlub2Rl IGxvZ2dpbmcgZmxhZ3MgKi8KIAlpbnQJCXdoaWNoZm9yaywKLQl2b2lkCQkoKmluaXRfZm4pKHN0 cnVjdCB4ZnNfYnVmICpicCwKKwl2b2lkCQkoKmluaXRfZm4pKHN0cnVjdCB4ZnNfdHJhbnMgKnRw LAorCQkJCSAgIHN0cnVjdCB4ZnNfYnVmICpicCwKIAkJCQkgICBzdHJ1Y3QgeGZzX2lub2RlICpp cCwKIAkJCQkgICBzdHJ1Y3QgeGZzX2lmb3JrICppZnApKQogewpAQCAtMTA5MCw3ICsxMTAzLDcg QEAgeGZzX2JtYXBfbG9jYWxfdG9fZXh0ZW50cygKIAkJYnAgPSB4ZnNfYnRyZWVfZ2V0X2J1Zmwo YXJncy5tcCwgdHAsIGFyZ3MuZnNibm8sIDApOwogCiAJCS8qIGluaXRpYWxpc2UgdGhlIGJsb2Nr IGFuZCBjb3B5IHRoZSBkYXRhICovCi0JCWluaXRfZm4oYnAsIGlwLCBpZnApOworCQlpbml0X2Zu KHRwLCBicCwgaXAsIGlmcCk7CiAKIAkJLyogYWNjb3VudCBmb3IgdGhlIGNoYW5nZSBpbiBmb3Jr IHNpemUgYW5kIGxvZyBldmVyeXRoaW5nICovCiAJCXhmc190cmFuc19sb2dfYnVmKHRwLCBicCwg MCwgaWZwLT5pZl9ieXRlcyAtIDEpOwpAQCAtMTE5NywxNiArMTIxMCwxOSBAQCB4ZnNfYm1hcF9h ZGRfYXR0cmZvcmtfZXh0ZW50cygKICAqLwogU1RBVElDIHZvaWQKIHhmc19ibWFwX2xvY2FsX3Rv X2V4dGVudHNfaW5pdF9mbigKKwlzdHJ1Y3QgeGZzX3RyYW5zCSp0cCwKIAlzdHJ1Y3QgeGZzX2J1 ZgkJKmJwLAogCXN0cnVjdCB4ZnNfaW5vZGUJKmlwLAogCXN0cnVjdCB4ZnNfaWZvcmsJKmlmcCkK IHsKIAlicC0+Yl9vcHMgPSAmeGZzX2JtYnRfYnVmX29wczsKIAltZW1jcHkoYnAtPmJfYWRkciwg aWZwLT5pZl91MS5pZl9kYXRhLCBpZnAtPmlmX2J5dGVzKTsKKwl4ZnNfdHJhbnNfYnVmX3NldF90 eXBlKHRwLCBicCwgWEZTX0JMRl9CVFJFRV9CVUYpOwogfQogCiBTVEFUSUMgdm9pZAogeGZzX3N5 bWxpbmtfbG9jYWxfdG9fcmVtb3RlKAorCXN0cnVjdCB4ZnNfdHJhbnMJKnRwLAogCXN0cnVjdCB4 ZnNfYnVmCQkqYnAsCiAJc3RydWN0IHhmc19pbm9kZQkqaXAsCiAJc3RydWN0IHhmc19pZm9yawkq aWZwKQpAQCAtMTIyNSw4ICsxMjQxLDcgQEAgeGZzX3N5bWxpbmtfbG9jYWxfdG9fcmVtb3RlKAog ICoKICAqIFhYWCAoZGdjKTogaW52ZXN0aWdhdGUgd2hldGhlciBkaXJlY3RvcnkgY29udmVyc2lv biBjYW4gdXNlIHRoZSBnZW5lcmljCiAgKiBmb3JtYXR0aW5nIGNhbGxvdXQuIEl0IHNob3VsZCBi ZSBwb3NzaWJsZSAtIGl0J3MganVzdCBhIHZlcnkgY29tcGxleAotICogZm9ybWF0dGVyLiBpdCB3 b3VsZCBhbHNvIHJlcXVpcmUgcGFzc2luZyB0aGUgdHJhbnNhY3Rpb24gdGhyb3VnaCB0byB0aGUg aW5pdAotICogZnVuY3Rpb24uCisgKiBmb3JtYXR0ZXIuCiAgKi8KIFNUQVRJQyBpbnQJCQkJCS8q IGVycm9yICovCiB4ZnNfYm1hcF9hZGRfYXR0cmZvcmtfbG9jYWwoCmRpZmYgLS1naXQgYS9saWJ4 ZnMveGZzX2JtYXBfYnRyZWUuYyBiL2xpYnhmcy94ZnNfYm1hcF9idHJlZS5jCmluZGV4IDgzNmY1 MmYuLjQ3M2RiNGEgMTAwNjQ0Ci0tLSBhL2xpYnhmcy94ZnNfYm1hcF9idHJlZS5jCisrKyBiL2xp Ynhmcy94ZnNfYm1hcF9idHJlZS5jCkBAIC0zOCwyNCArMzgsMzEgQEAgeGZzX2V4dGVudF9zdGF0 ZSgKICAqLwogdm9pZAogeGZzX2JtZHJfdG9fYm1idCgKLQlzdHJ1Y3QgeGZzX21vdW50CSptcCwK KwlzdHJ1Y3QgeGZzX2lub2RlCSppcCwKIAl4ZnNfYm1kcl9ibG9ja190CSpkYmxvY2ssCiAJaW50 CQkJZGJsb2NrbGVuLAogCXN0cnVjdCB4ZnNfYnRyZWVfYmxvY2sJKnJibG9jaywKIAlpbnQJCQly YmxvY2tsZW4pCiB7CisJc3RydWN0IHhmc19tb3VudAkqbXAgPSBpcC0+aV9tb3VudDsKIAlpbnQJ CQlkbXhyOwogCXhmc19ibWJ0X2tleV90CQkqZmtwOwogCV9fYmU2NAkJCSpmcHA7CiAJeGZzX2Jt YnRfa2V5X3QJCSp0a3A7CiAJX19iZTY0CQkJKnRwcDsKIAotCXJibG9jay0+YmJfbWFnaWMgPSBj cHVfdG9fYmUzMihYRlNfQk1BUF9NQUdJQyk7CisJaWYgKHhmc19zYl92ZXJzaW9uX2hhc2NyYygm bXAtPm1fc2IpKQorCQl4ZnNfYnRyZWVfaW5pdF9ibG9ja19pbnQobXAsIHJibG9jaywgWEZTX0JV Rl9EQUREUl9OVUxMLAorCQkJCSBYRlNfQk1BUF9DUkNfTUFHSUMsIDAsIDAsIGlwLT5pX2lubywK KwkJCQkgWEZTX0JUUkVFX0xPTkdfUFRSUyB8IFhGU19CVFJFRV9DUkNfQkxPQ0tTKTsKKwllbHNl CisJCXhmc19idHJlZV9pbml0X2Jsb2NrX2ludChtcCwgcmJsb2NrLCBYRlNfQlVGX0RBRERSX05V TEwsCisJCQkJIFhGU19CTUFQX01BR0lDLCAwLCAwLCBpcC0+aV9pbm8sCisJCQkJIFhGU19CVFJF RV9MT05HX1BUUlMpOworCiAJcmJsb2NrLT5iYl9sZXZlbCA9IGRibG9jay0+YmJfbGV2ZWw7CiAJ QVNTRVJUKGJlMTZfdG9fY3B1KHJibG9jay0+YmJfbGV2ZWwpID4gMCk7CiAJcmJsb2NrLT5iYl9u dW1yZWNzID0gZGJsb2NrLT5iYl9udW1yZWNzOwotCXJibG9jay0+YmJfdS5sLmJiX2xlZnRzaWIg PSBjcHVfdG9fYmU2NChOVUxMREZTQk5PKTsKLQlyYmxvY2stPmJiX3UubC5iYl9yaWdodHNpYiA9 IGNwdV90b19iZTY0KE5VTExERlNCTk8pOwogCWRteHIgPSB4ZnNfYm1kcl9tYXhyZWNzKG1wLCBk YmxvY2tsZW4sIDApOwogCWZrcCA9IFhGU19CTURSX0tFWV9BRERSKGRibG9jaywgMSk7CiAJdGtw ID0gWEZTX0JNQlRfS0VZX0FERFIobXAsIHJibG9jaywgMSk7CkBAIC00MDMsNyArNDEwLDEzIEBA IHhmc19ibWJ0X3RvX2JtZHIoCiAJeGZzX2JtYnRfa2V5X3QJCSp0a3A7CiAJX19iZTY0CQkJKnRw cDsKIAotCUFTU0VSVChyYmxvY2stPmJiX21hZ2ljID09IGNwdV90b19iZTMyKFhGU19CTUFQX01B R0lDKSk7CisJaWYgKHhmc19zYl92ZXJzaW9uX2hhc2NyYygmbXAtPm1fc2IpKSB7CisJCUFTU0VS VChyYmxvY2stPmJiX21hZ2ljID09IGNwdV90b19iZTMyKFhGU19CTUFQX0NSQ19NQUdJQykpOwor CQlBU1NFUlQodXVpZF9lcXVhbCgmcmJsb2NrLT5iYl91LmwuYmJfdXVpZCwgJm1wLT5tX3NiLnNi X3V1aWQpKTsKKwkJQVNTRVJUKHJibG9jay0+YmJfdS5sLmJiX2Jsa25vID09CisJCSAgICAgICBj cHVfdG9fYmU2NChYRlNfQlVGX0RBRERSX05VTEwpKTsKKwl9IGVsc2UKKwkJQVNTRVJUKHJibG9j ay0+YmJfbWFnaWMgPT0gY3B1X3RvX2JlMzIoWEZTX0JNQVBfTUFHSUMpKTsKIAlBU1NFUlQocmJs b2NrLT5iYl91LmwuYmJfbGVmdHNpYiA9PSBjcHVfdG9fYmU2NChOVUxMREZTQk5PKSk7CiAJQVNT RVJUKHJibG9jay0+YmJfdS5sLmJiX3JpZ2h0c2liID09IGNwdV90b19iZTY0KE5VTExERlNCTk8p KTsKIAlBU1NFUlQocmJsb2NrLT5iYl9sZXZlbCAhPSAwKTsKQEAgLTY4Nyw0NSArNzAwLDU5IEBA IHhmc19ibWJ0X2tleV9kaWZmKAogCQkJCSAgICAgIGN1ci0+YmNfcmVjLmIuYnJfc3RhcnRvZmY7 CiB9CiAKLXN0YXRpYyB2b2lkCitzdGF0aWMgYm9vbAogeGZzX2JtYnRfdmVyaWZ5KAogCXN0cnVj dCB4ZnNfYnVmCQkqYnApCiB7CiAJc3RydWN0IHhmc19tb3VudAkqbXAgPSBicC0+Yl90YXJnZXQt PmJ0X21vdW50OwogCXN0cnVjdCB4ZnNfYnRyZWVfYmxvY2sJKmJsb2NrID0gWEZTX0JVRl9UT19C TE9DSyhicCk7CiAJdW5zaWduZWQgaW50CQlsZXZlbDsKLQlpbnQJCQlsYmxvY2tfb2s7IC8qIGJs b2NrIHBhc3NlcyBjaGVja3MgKi8KIAotCS8qIG1hZ2ljIG51bWJlciBhbmQgbGV2ZWwgdmVyaWZp Y2F0aW9uLgorCXN3aXRjaCAoYmUzMl90b19jcHUoYmxvY2stPmJiX21hZ2ljKSkgeworCWNhc2Ug WEZTX0JNQVBfQ1JDX01BR0lDOgorCQlpZiAoIXhmc19zYl92ZXJzaW9uX2hhc2NyYygmbXAtPm1f c2IpKQorCQkJcmV0dXJuIGZhbHNlOworCQlpZiAoIXV1aWRfZXF1YWwoJmJsb2NrLT5iYl91Lmwu YmJfdXVpZCwgJm1wLT5tX3NiLnNiX3V1aWQpKQorCQkJcmV0dXJuIGZhbHNlOworCQlpZiAoYmxv Y2stPmJiX3UubC5iYl9ibGtubyAhPSBjcHVfdG9fYmU2NChicC0+Yl9ibikpCisJCQlyZXR1cm4g ZmFsc2U7CisJCS8qCisJCSAqIFhYWDogbmVlZCBhIGJldHRlciB3YXkgb2YgdmVyaWZ5aW5nIHRo ZSBvd25lciBoZXJlLiBSaWdodCBub3cKKwkJICoganVzdCBtYWtlIHN1cmUgdGhlcmUgaGFzIGJl ZW4gb25lIHNldC4KKwkJICovCisJCWlmIChiZTY0X3RvX2NwdShibG9jay0+YmJfdS5sLmJiX293 bmVyKSA9PSAwKQorCQkJcmV0dXJuIGZhbHNlOworCQkvKiBmYWxsIHRocm91Z2ggKi8KKwljYXNl IFhGU19CTUFQX01BR0lDOgorCQlicmVhazsKKwlkZWZhdWx0OgorCQlyZXR1cm4gZmFsc2U7CisJ fQorCisJLyoKKwkgKiBudW1yZWNzIGFuZCBsZXZlbCB2ZXJpZmljYXRpb24uCiAJICoKLQkgKiBX ZSBkb24ndCBrbm93IHdhaHQgZm9yayB3ZSBiZWxvbmcgdG8sIHNvIGp1c3QgdmVyaWZ5IHRoYXQg dGhlIGxldmVsCisJICogV2UgZG9uJ3Qga25vdyB3aGF0IGZvcmsgd2UgYmVsb25nIHRvLCBzbyBq dXN0IHZlcmlmeSB0aGF0IHRoZSBsZXZlbAogCSAqIGlzIGxlc3MgdGhhbiB0aGUgbWF4aW11bSBv ZiB0aGUgdHdvLiBMYXRlciBjaGVja3Mgd2lsbCBiZSBtb3JlCiAJICogcHJlY2lzZS4KIAkgKi8K IAlsZXZlbCA9IGJlMTZfdG9fY3B1KGJsb2NrLT5iYl9sZXZlbCk7Ci0JbGJsb2NrX29rID0gYmxv Y2stPmJiX21hZ2ljID09IGNwdV90b19iZTMyKFhGU19CTUFQX01BR0lDKSAmJgotCQkgICAgbGV2 ZWwgPCBNQVgobXAtPm1fYm1fbWF4bGV2ZWxzWzBdLCBtcC0+bV9ibV9tYXhsZXZlbHNbMV0pOwot Ci0JLyogbnVtcmVjcyB2ZXJpZmljYXRpb24gKi8KLQlsYmxvY2tfb2sgPSBsYmxvY2tfb2sgJiYK LQkJYmUxNl90b19jcHUoYmxvY2stPmJiX251bXJlY3MpIDw9IG1wLT5tX2JtYXBfZG14cltsZXZl bCAhPSAwXTsKKwlpZiAobGV2ZWwgPiBNQVgobXAtPm1fYm1fbWF4bGV2ZWxzWzBdLCBtcC0+bV9i bV9tYXhsZXZlbHNbMV0pKQorCQlyZXR1cm4gZmFsc2U7CisJaWYgKGJlMTZfdG9fY3B1KGJsb2Nr LT5iYl9udW1yZWNzKSA+IG1wLT5tX2JtYXBfZG14cltsZXZlbCAhPSAwXSkKKwkJcmV0dXJuIGZh bHNlOwogCiAJLyogc2libGluZyBwb2ludGVyIHZlcmlmaWNhdGlvbiAqLwotCWxibG9ja19vayA9 IGxibG9ja19vayAmJgotCQlibG9jay0+YmJfdS5sLmJiX2xlZnRzaWIgJiYKLQkJKGJsb2NrLT5i Yl91LmwuYmJfbGVmdHNpYiA9PSBjcHVfdG9fYmU2NChOVUxMREZTQk5PKSB8fAotCQkgWEZTX0ZT Ql9TQU5JVFlfQ0hFQ0sobXAsCi0JCQliZTY0X3RvX2NwdShibG9jay0+YmJfdS5sLmJiX2xlZnRz aWIpKSkgJiYKLQkJYmxvY2stPmJiX3UubC5iYl9yaWdodHNpYiAmJgotCQkoYmxvY2stPmJiX3Uu bC5iYl9yaWdodHNpYiA9PSBjcHVfdG9fYmU2NChOVUxMREZTQk5PKSB8fAotCQkgWEZTX0ZTQl9T QU5JVFlfQ0hFQ0sobXAsCi0JCQliZTY0X3RvX2NwdShibG9jay0+YmJfdS5sLmJiX3JpZ2h0c2li KSkpOwotCi0JaWYgKCFsYmxvY2tfb2spIHsKLQkJdHJhY2VfeGZzX2J0cmVlX2NvcnJ1cHQoYnAs IF9SRVRfSVBfKTsKLQkJWEZTX0NPUlJVUFRJT05fRVJST1IoX19mdW5jX18sIFhGU19FUlJMRVZF TF9MT1csIG1wLCBibG9jayk7Ci0JCXhmc19idWZfaW9lcnJvcihicCwgRUZTQ09SUlVQVEVEKTsK LQl9CisJaWYgKCFibG9jay0+YmJfdS5sLmJiX2xlZnRzaWIgfHwKKwkgICAgKGJsb2NrLT5iYl91 LmwuYmJfbGVmdHNpYiAhPSBjcHVfdG9fYmU2NChOVUxMREZTQk5PKSAmJgorCSAgICAgIVhGU19G U0JfU0FOSVRZX0NIRUNLKG1wLCBiZTY0X3RvX2NwdShibG9jay0+YmJfdS5sLmJiX2xlZnRzaWIp KSkpCisJCXJldHVybiBmYWxzZTsKKwlpZiAoIWJsb2NrLT5iYl91LmwuYmJfcmlnaHRzaWIgfHwK KwkgICAgKGJsb2NrLT5iYl91LmwuYmJfcmlnaHRzaWIgIT0gY3B1X3RvX2JlNjQoTlVMTERGU0JO TykgJiYKKwkgICAgICFYRlNfRlNCX1NBTklUWV9DSEVDSyhtcCwgYmU2NF90b19jcHUoYmxvY2st PmJiX3UubC5iYl9yaWdodHNpYikpKSkKKwkJcmV0dXJuIGZhbHNlOworCisJcmV0dXJuIHRydWU7 CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC03MzMsMTMgKzc2MCwyOSBAQCB4ZnNfYm1idF9yZWFkX3Zl cmlmeSgKIAlzdHJ1Y3QgeGZzX2J1ZgkqYnApCiB7CiAJeGZzX2JtYnRfdmVyaWZ5KGJwKTsKKwlp ZiAoISh4ZnNfYnRyZWVfbGJsb2NrX3ZlcmlmeV9jcmMoYnApICYmCisJICAgICAgeGZzX2JtYnRf dmVyaWZ5KGJwKSkpIHsKKwkJdHJhY2VfeGZzX2J0cmVlX2NvcnJ1cHQoYnAsIF9SRVRfSVBfKTsK KwkJWEZTX0NPUlJVUFRJT05fRVJST1IoX19mdW5jX18sIFhGU19FUlJMRVZFTF9MT1csCisJCQkJ ICAgICBicC0+Yl90YXJnZXQtPmJ0X21vdW50LCBicC0+Yl9hZGRyKTsKKwkJeGZzX2J1Zl9pb2Vy cm9yKGJwLCBFRlNDT1JSVVBURUQpOworCX0KKwogfQogCiBzdGF0aWMgdm9pZAogeGZzX2JtYnRf d3JpdGVfdmVyaWZ5KAogCXN0cnVjdCB4ZnNfYnVmCSpicCkKIHsKLQl4ZnNfYm1idF92ZXJpZnko YnApOworCWlmICgheGZzX2JtYnRfdmVyaWZ5KGJwKSkgeworCQl4ZnNfd2FybihicC0+Yl90YXJn ZXQtPmJ0X21vdW50LCAiYm1idCBkYWRkciAweCVsbHggZmFpbGVkIiwgYnAtPmJfYm4pOworCQl0 cmFjZV94ZnNfYnRyZWVfY29ycnVwdChicCwgX1JFVF9JUF8pOworCQlYRlNfQ09SUlVQVElPTl9F UlJPUihfX2Z1bmNfXywgWEZTX0VSUkxFVkVMX0xPVywKKwkJCQkgICAgIGJwLT5iX3RhcmdldC0+ YnRfbW91bnQsIGJwLT5iX2FkZHIpOworCQl4ZnNfYnVmX2lvZXJyb3IoYnAsIEVGU0NPUlJVUFRF RCk7CisJCXJldHVybjsKKwl9CisJeGZzX2J0cmVlX2xibG9ja19jYWxjX2NyYyhicCk7CiB9CiAK IGNvbnN0IHN0cnVjdCB4ZnNfYnVmX29wcyB4ZnNfYm1idF9idWZfb3BzID0gewpAQCAtOTEzLDYg Kzk1Niw4IEBAIHhmc19ibWJ0X2luaXRfY3Vyc29yKAogCiAJY3VyLT5iY19vcHMgPSAmeGZzX2Jt YnRfb3BzOwogCWN1ci0+YmNfZmxhZ3MgPSBYRlNfQlRSRUVfTE9OR19QVFJTIHwgWEZTX0JUUkVF X1JPT1RfSU5fSU5PREU7CisJaWYgKHhmc19zYl92ZXJzaW9uX2hhc2NyYygmbXAtPm1fc2IpKQor CQljdXItPmJjX2ZsYWdzIHw9IFhGU19CVFJFRV9DUkNfQkxPQ0tTOwogCiAJY3VyLT5iY19wcml2 YXRlLmIuZm9ya3NpemUgPSBYRlNfSUZPUktfU0laRShpcCwgd2hpY2hmb3JrKTsKIAljdXItPmJj X3ByaXZhdGUuYi5pcCA9IGlwOwpkaWZmIC0tZ2l0IGEvbGlieGZzL3hmc19idHJlZS5jIGIvbGli eGZzL3hmc19idHJlZS5jCmluZGV4IGMzNTI2OWIuLmE3YzE5ZTkgMTAwNjQ0Ci0tLSBhL2xpYnhm cy94ZnNfYnRyZWUuYworKysgYi9saWJ4ZnMveGZzX2J0cmVlLmMKQEAgLTI2LDkgKzI2LDEzIEBA IGttZW1fem9uZV90CSp4ZnNfYnRyZWVfY3VyX3pvbmU7CiAvKgogICogQnRyZWUgbWFnaWMgbnVt YmVycy4KICAqLwotY29uc3QgX191aW50MzJfdCB4ZnNfbWFnaWNzW1hGU19CVE5VTV9NQVhdID0g ewotCVhGU19BQlRCX01BR0lDLCBYRlNfQUJUQ19NQUdJQywgWEZTX0JNQVBfTUFHSUMsIFhGU19J QlRfTUFHSUMKK3N0YXRpYyBjb25zdCBfX3VpbnQzMl90IHhmc19tYWdpY3NbMl1bWEZTX0JUTlVN X01BWF0gPSB7CisJeyBYRlNfQUJUQl9NQUdJQywgWEZTX0FCVENfTUFHSUMsIFhGU19CTUFQX01B R0lDLCBYRlNfSUJUX01BR0lDIH0sCisJeyBYRlNfQUJUQl9DUkNfTUFHSUMsIFhGU19BQlRDX0NS Q19NQUdJQywKKwkgIFhGU19CTUFQX0NSQ19NQUdJQywgWEZTX0lCVF9DUkNfTUFHSUMgfQogfTsK KyNkZWZpbmUgeGZzX2J0cmVlX21hZ2ljKGN1cikgXAorCXhmc19tYWdpY3NbISEoKGN1ciktPmJj X2ZsYWdzICYgWEZTX0JUUkVFX0NSQ19CTE9DS1MpXVtjdXItPmJjX2J0bnVtXQogCiAKIFNUQVRJ QyBpbnQJCQkJLyogZXJyb3IgKDAgb3IgRUZTQ09SUlVQVEVEKSAqLwpAQCAtMzgsMzAgKzQyLDM4 IEBAIHhmc19idHJlZV9jaGVja19sYmxvY2soCiAJaW50CQkJbGV2ZWwsCS8qIGxldmVsIG9mIHRo ZSBidHJlZSBibG9jayAqLwogCXN0cnVjdCB4ZnNfYnVmCQkqYnApCS8qIGJ1ZmZlciBmb3IgYmxv Y2ssIGlmIGFueSAqLwogewotCWludAkJCWxibG9ja19vazsgLyogYmxvY2sgcGFzc2VzIGNoZWNr cyAqLworCWludAkJCWxibG9ja19vayA9IDE7IC8qIGJsb2NrIHBhc3NlcyBjaGVja3MgKi8KIAlz dHJ1Y3QgeGZzX21vdW50CSptcDsJLyogZmlsZSBzeXN0ZW0gbW91bnQgcG9pbnQgKi8KIAogCW1w ID0gY3VyLT5iY19tcDsKLQlsYmxvY2tfb2sgPQotCQliZTMyX3RvX2NwdShibG9jay0+YmJfbWFn aWMpID09IHhmc19tYWdpY3NbY3VyLT5iY19idG51bV0gJiYKKworCWlmICh4ZnNfc2JfdmVyc2lv bl9oYXNjcmMoJm1wLT5tX3NiKSkgeworCQlsYmxvY2tfb2sgPSBsYmxvY2tfb2sgJiYKKwkJCXV1 aWRfZXF1YWwoJmJsb2NrLT5iYl91LmwuYmJfdXVpZCwgJm1wLT5tX3NiLnNiX3V1aWQpICYmCisJ CQlibG9jay0+YmJfdS5sLmJiX2Jsa25vID09IGNwdV90b19iZTY0KAorCQkJCWJwID8gYnAtPmJf Ym4gOiBYRlNfQlVGX0RBRERSX05VTEwpOworCX0KKworCWxibG9ja19vayA9IGxibG9ja19vayAm JgorCQliZTMyX3RvX2NwdShibG9jay0+YmJfbWFnaWMpID09IHhmc19idHJlZV9tYWdpYyhjdXIp ICYmCiAJCWJlMTZfdG9fY3B1KGJsb2NrLT5iYl9sZXZlbCkgPT0gbGV2ZWwgJiYKIAkJYmUxNl90 b19jcHUoYmxvY2stPmJiX251bXJlY3MpIDw9CiAJCQljdXItPmJjX29wcy0+Z2V0X21heHJlY3Mo Y3VyLCBsZXZlbCkgJiYKIAkJYmxvY2stPmJiX3UubC5iYl9sZWZ0c2liICYmCiAJCShibG9jay0+ YmJfdS5sLmJiX2xlZnRzaWIgPT0gY3B1X3RvX2JlNjQoTlVMTERGU0JOTykgfHwKIAkJIFhGU19G U0JfU0FOSVRZX0NIRUNLKG1wLAotCQkgCWJlNjRfdG9fY3B1KGJsb2NrLT5iYl91LmwuYmJfbGVm dHNpYikpKSAmJgorCQkJYmU2NF90b19jcHUoYmxvY2stPmJiX3UubC5iYl9sZWZ0c2liKSkpICYm CiAJCWJsb2NrLT5iYl91LmwuYmJfcmlnaHRzaWIgJiYKIAkJKGJsb2NrLT5iYl91LmwuYmJfcmln aHRzaWIgPT0gY3B1X3RvX2JlNjQoTlVMTERGU0JOTykgfHwKIAkJIFhGU19GU0JfU0FOSVRZX0NI RUNLKG1wLAotCQkgCWJlNjRfdG9fY3B1KGJsb2NrLT5iYl91LmwuYmJfcmlnaHRzaWIpKSk7CisJ CQliZTY0X3RvX2NwdShibG9jay0+YmJfdS5sLmJiX3JpZ2h0c2liKSkpOworCiAJaWYgKHVubGlr ZWx5KFhGU19URVNUX0VSUk9SKCFsYmxvY2tfb2ssIG1wLAogCQkJWEZTX0VSUlRBR19CVFJFRV9D SEVDS19MQkxPQ0ssCiAJCQlYRlNfUkFORE9NX0JUUkVFX0NIRUNLX0xCTE9DSykpKSB7CiAJCWlm IChicCkKIAkJCXRyYWNlX3hmc19idHJlZV9jb3JydXB0KGJwLCBfUkVUX0lQXyk7Ci0JCVhGU19F UlJPUl9SRVBPUlQoInhmc19idHJlZV9jaGVja19sYmxvY2siLCBYRlNfRVJSTEVWRUxfTE9XLAot CQkJCSBtcCk7CisJCVhGU19FUlJPUl9SRVBPUlQoX19mdW5jX18sIFhGU19FUlJMRVZFTF9MT1cs IG1wKTsKIAkJcmV0dXJuIFhGU19FUlJPUihFRlNDT1JSVVBURUQpOwogCX0KIAlyZXR1cm4gMDsK QEAgLTc0LDE2ICs4NiwyNiBAQCB4ZnNfYnRyZWVfY2hlY2tfc2Jsb2NrKAogCWludAkJCWxldmVs LAkvKiBsZXZlbCBvZiB0aGUgYnRyZWUgYmxvY2sgKi8KIAlzdHJ1Y3QgeGZzX2J1ZgkJKmJwKQkv KiBidWZmZXIgY29udGFpbmluZyBibG9jayAqLwogeworCXN0cnVjdCB4ZnNfbW91bnQJKm1wOwkv KiBmaWxlIHN5c3RlbSBtb3VudCBwb2ludCAqLwogCXN0cnVjdCB4ZnNfYnVmCQkqYWdicDsJLyog YnVmZmVyIGZvciBhZy4gZnJlZXNwYWNlIHN0cnVjdCAqLwogCXN0cnVjdCB4ZnNfYWdmCQkqYWdm OwkvKiBhZy4gZnJlZXNwYWNlIHN0cnVjdHVyZSAqLwogCXhmc19hZ2Jsb2NrX3QJCWFnZmxlbjsJ LyogbmF0aXZlIGFnLiBmcmVlc3BhY2UgbGVuZ3RoICovCi0JaW50CQkJc2Jsb2NrX29rOyAvKiBi bG9jayBwYXNzZXMgY2hlY2tzICovCisJaW50CQkJc2Jsb2NrX29rID0gMTsgLyogYmxvY2sgcGFz c2VzIGNoZWNrcyAqLwogCisJbXAgPSBjdXItPmJjX21wOwogCWFnYnAgPSBjdXItPmJjX3ByaXZh dGUuYS5hZ2JwOwogCWFnZiA9IFhGU19CVUZfVE9fQUdGKGFnYnApOwogCWFnZmxlbiA9IGJlMzJf dG9fY3B1KGFnZi0+YWdmX2xlbmd0aCk7Ci0Jc2Jsb2NrX29rID0KLQkJYmUzMl90b19jcHUoYmxv Y2stPmJiX21hZ2ljKSA9PSB4ZnNfbWFnaWNzW2N1ci0+YmNfYnRudW1dICYmCisKKwlpZiAoeGZz X3NiX3ZlcnNpb25faGFzY3JjKCZtcC0+bV9zYikpIHsKKwkJc2Jsb2NrX29rID0gc2Jsb2NrX29r ICYmCisJCQl1dWlkX2VxdWFsKCZibG9jay0+YmJfdS5zLmJiX3V1aWQsICZtcC0+bV9zYi5zYl91 dWlkKSAmJgorCQkJYmxvY2stPmJiX3Uucy5iYl9ibGtubyA9PSBjcHVfdG9fYmU2NCgKKwkJCQli cCA/IGJwLT5iX2JuIDogWEZTX0JVRl9EQUREUl9OVUxMKTsKKwl9CisKKwlzYmxvY2tfb2sgPSBz YmxvY2tfb2sgJiYKKwkJYmUzMl90b19jcHUoYmxvY2stPmJiX21hZ2ljKSA9PSB4ZnNfYnRyZWVf bWFnaWMoY3VyKSAmJgogCQliZTE2X3RvX2NwdShibG9jay0+YmJfbGV2ZWwpID09IGxldmVsICYm CiAJCWJlMTZfdG9fY3B1KGJsb2NrLT5iYl9udW1yZWNzKSA8PQogCQkJY3VyLT5iY19vcHMtPmdl dF9tYXhyZWNzKGN1ciwgbGV2ZWwpICYmCkBAIC05MywxMyArMTE1LDEzIEBAIHhmc19idHJlZV9j aGVja19zYmxvY2soCiAJCShibG9jay0+YmJfdS5zLmJiX3JpZ2h0c2liID09IGNwdV90b19iZTMy KE5VTExBR0JMT0NLKSB8fAogCQkgYmUzMl90b19jcHUoYmxvY2stPmJiX3Uucy5iYl9yaWdodHNp YikgPCBhZ2ZsZW4pICYmCiAJCWJsb2NrLT5iYl91LnMuYmJfcmlnaHRzaWI7Ci0JaWYgKHVubGlr ZWx5KFhGU19URVNUX0VSUk9SKCFzYmxvY2tfb2ssIGN1ci0+YmNfbXAsCisKKwlpZiAodW5saWtl bHkoWEZTX1RFU1RfRVJST1IoIXNibG9ja19vaywgbXAsCiAJCQlYRlNfRVJSVEFHX0JUUkVFX0NI RUNLX1NCTE9DSywKIAkJCVhGU19SQU5ET01fQlRSRUVfQ0hFQ0tfU0JMT0NLKSkpIHsKIAkJaWYg KGJwKQogCQkJdHJhY2VfeGZzX2J0cmVlX2NvcnJ1cHQoYnAsIF9SRVRfSVBfKTsKLQkJWEZTX0NP UlJVUFRJT05fRVJST1IoInhmc19idHJlZV9jaGVja19zYmxvY2siLAotCQkJWEZTX0VSUkxFVkVM X0xPVywgY3VyLT5iY19tcCwgYmxvY2spOworCQlYRlNfRVJST1JfUkVQT1JUKF9fZnVuY19fLCBY RlNfRVJSTEVWRUxfTE9XLCBtcCk7CiAJCXJldHVybiBYRlNfRVJST1IoRUZTQ09SUlVQVEVEKTsK IAl9CiAJcmV0dXJuIDA7CkBAIC0xNzgsNiArMjAwLDcyIEBAIHhmc19idHJlZV9jaGVja19wdHIo CiAjZW5kaWYKIAogLyoKKyAqIENhbGN1bGF0ZSBDUkMgb24gdGhlIHdob2xlIGJ0cmVlIGJsb2Nr IGFuZCBzdHVmZiBpdCBpbnRvIHRoZQorICogbG9uZy1mb3JtIGJ0cmVlIGhlYWRlci4KKyAqCisg KiBQcmlvciB0byBjYWxjdWx0aW5nIHRoZSBDUkMsIHB1bGwgdGhlIExTTiBvdXQgb2YgdGhlIGJ1 ZmZlciBsb2cgaXRlbSBhbmQgcHV0CisgKiBpdCBpbnRvIHRoZSBidWZmZXIgc28gcmVjb3Zlcnkg a25vd3Mgd2hhdCB0aGUgbGFzdCBtb2RpZmNhdGlvbiB3YXMgdGhhdCBtYWRlCisgKiBpdCB0byBk aXNrLgorICovCit2b2lkCit4ZnNfYnRyZWVfbGJsb2NrX2NhbGNfY3JjKAorCXN0cnVjdCB4ZnNf YnVmCQkqYnApCit7CisJc3RydWN0IHhmc19idHJlZV9ibG9jawkqYmxvY2sgPSBYRlNfQlVGX1RP X0JMT0NLKGJwKTsKKwlzdHJ1Y3QgeGZzX2J1Zl9sb2dfaXRlbQkqYmlwID0gYnAtPmJfZnNwcml2 OworCisJaWYgKCF4ZnNfc2JfdmVyc2lvbl9oYXNjcmMoJmJwLT5iX3RhcmdldC0+YnRfbW91bnQt Pm1fc2IpKQorCQlyZXR1cm47CisJaWYgKGJpcCkKKwkJYmxvY2stPmJiX3UubC5iYl9sc24gPSBj cHVfdG9fYmU2NChiaXAtPmJsaV9pdGVtLmxpX2xzbik7CisJeGZzX3VwZGF0ZV9ja3N1bShicC0+ Yl9hZGRyLCBCQlRPQihicC0+Yl9sZW5ndGgpLAorCQkJIFhGU19CVFJFRV9MQkxPQ0tfQ1JDX09G Rik7Cit9CisKK2Jvb2wKK3hmc19idHJlZV9sYmxvY2tfdmVyaWZ5X2NyYygKKwlzdHJ1Y3QgeGZz X2J1ZgkJKmJwKQoreworCWlmICh4ZnNfc2JfdmVyc2lvbl9oYXNjcmMoJmJwLT5iX3RhcmdldC0+ YnRfbW91bnQtPm1fc2IpKQorCQlyZXR1cm4geGZzX3ZlcmlmeV9ja3N1bShicC0+Yl9hZGRyLCBC QlRPQihicC0+Yl9sZW5ndGgpLAorCQkJCQlYRlNfQlRSRUVfTEJMT0NLX0NSQ19PRkYpOworCXJl dHVybiB0cnVlOworfQorCisvKgorICogQ2FsY3VsYXRlIENSQyBvbiB0aGUgd2hvbGUgYnRyZWUg YmxvY2sgYW5kIHN0dWZmIGl0IGludG8gdGhlCisgKiBzaG9ydC1mb3JtIGJ0cmVlIGhlYWRlci4K KyAqCisgKiBQcmlvciB0byBjYWxjdWx0aW5nIHRoZSBDUkMsIHB1bGwgdGhlIExTTiBvdXQgb2Yg dGhlIGJ1ZmZlciBsb2cgaXRlbSBhbmQgcHV0CisgKiBpdCBpbnRvIHRoZSBidWZmZXIgc28gcmVj b3Zlcnkga25vd3Mgd2hhdCB0aGUgbGFzdCBtb2RpZmNhdGlvbiB3YXMgdGhhdCBtYWRlCisgKiBp dCB0byBkaXNrLgorICovCit2b2lkCit4ZnNfYnRyZWVfc2Jsb2NrX2NhbGNfY3JjKAorCXN0cnVj dCB4ZnNfYnVmCQkqYnApCit7CisJc3RydWN0IHhmc19idHJlZV9ibG9jawkqYmxvY2sgPSBYRlNf QlVGX1RPX0JMT0NLKGJwKTsKKwlzdHJ1Y3QgeGZzX2J1Zl9sb2dfaXRlbQkqYmlwID0gYnAtPmJf ZnNwcml2OworCisJaWYgKCF4ZnNfc2JfdmVyc2lvbl9oYXNjcmMoJmJwLT5iX3RhcmdldC0+YnRf bW91bnQtPm1fc2IpKQorCQlyZXR1cm47CisJaWYgKGJpcCkKKwkJYmxvY2stPmJiX3Uucy5iYl9s c24gPSBjcHVfdG9fYmU2NChiaXAtPmJsaV9pdGVtLmxpX2xzbik7CisJeGZzX3VwZGF0ZV9ja3N1 bShicC0+Yl9hZGRyLCBCQlRPQihicC0+Yl9sZW5ndGgpLAorCQkJIFhGU19CVFJFRV9TQkxPQ0tf Q1JDX09GRik7Cit9CisKK2Jvb2wKK3hmc19idHJlZV9zYmxvY2tfdmVyaWZ5X2NyYygKKwlzdHJ1 Y3QgeGZzX2J1ZgkJKmJwKQoreworCWlmICh4ZnNfc2JfdmVyc2lvbl9oYXNjcmMoJmJwLT5iX3Rh cmdldC0+YnRfbW91bnQtPm1fc2IpKQorCQlyZXR1cm4geGZzX3ZlcmlmeV9ja3N1bShicC0+Yl9h ZGRyLCBCQlRPQihicC0+Yl9sZW5ndGgpLAorCQkJCQlYRlNfQlRSRUVfU0JMT0NLX0NSQ19PRkYp OworCXJldHVybiB0cnVlOworfQorCisvKgogICogRGVsZXRlIHRoZSBidHJlZSBjdXJzb3IuCiAg Ki8KIHZvaWQKQEAgLTI2MSwxMCArMzQ5LDggQEAgeGZzX2J0cmVlX2R1cF9jdXJzb3IoCiAJCQkJ Km5jdXIgPSBOVUxMOwogCQkJCXJldHVybiBlcnJvcjsKIAkJCX0KLQkJCW5ldy0+YmNfYnVmc1tp XSA9IGJwOwotCQkJQVNTRVJUKCF4ZnNfYnVmX2dldGVycm9yKGJwKSk7Ci0JCX0gZWxzZQotCQkJ bmV3LT5iY19idWZzW2ldID0gTlVMTDsKKwkJfQorCQluZXctPmJjX2J1ZnNbaV0gPSBicDsKIAl9 CiAJKm5jdXIgPSBuZXc7CiAJcmV0dXJuIDA7CkBAIC0zMDUsOSArMzkxLDE3IEBAIHhmc19idHJl ZV9kdXBfY3Vyc29yKAogICovCiBzdGF0aWMgaW5saW5lIHNpemVfdCB4ZnNfYnRyZWVfYmxvY2tf bGVuKHN0cnVjdCB4ZnNfYnRyZWVfY3VyICpjdXIpCiB7Ci0JcmV0dXJuIChjdXItPmJjX2ZsYWdz ICYgWEZTX0JUUkVFX0xPTkdfUFRSUykgPwotCQlYRlNfQlRSRUVfTEJMT0NLX0xFTiA6Ci0JCVhG U19CVFJFRV9TQkxPQ0tfTEVOOworCXNpemVfdCBsZW47CisKKwlpZiAoY3VyLT5iY19mbGFncyAm IFhGU19CVFJFRV9MT05HX1BUUlMpCisJCWxlbiA9IFhGU19CVFJFRV9MQkxPQ0tfTEVOOworCWVs c2UKKwkJbGVuID0gWEZTX0JUUkVFX1NCTE9DS19MRU47CisKKwlpZiAoY3VyLT5iY19mbGFncyAm IFhGU19CVFJFRV9DUkNfQkxPQ0tTKQorCQlsZW4gKz0gWEZTX0JUUkVFX0NSQ0JMT0NLX0FERDsK KworCXJldHVybiBsZW47CiB9CiAKIC8qCkBAIC04MDcsNDMgKzkwMSw4NSBAQCB4ZnNfYnRyZWVf c2V0X3NpYmxpbmcoCiB9CiAKIHZvaWQKK3hmc19idHJlZV9pbml0X2Jsb2NrX2ludCgKKwlzdHJ1 Y3QgeGZzX21vdW50CSptcCwKKwlzdHJ1Y3QgeGZzX2J0cmVlX2Jsb2NrCSpidWYsCisJeGZzX2Rh ZGRyX3QJCWJsa25vLAorCV9fdTMyCQkJbWFnaWMsCisJX191MTYJCQlsZXZlbCwKKwlfX3UxNgkJ CW51bXJlY3MsCisJX191NjQJCQlvd25lciwKKwl1bnNpZ25lZCBpbnQJCWZsYWdzKQoreworCWJ1 Zi0+YmJfbWFnaWMgPSBjcHVfdG9fYmUzMihtYWdpYyk7CisJYnVmLT5iYl9sZXZlbCA9IGNwdV90 b19iZTE2KGxldmVsKTsKKwlidWYtPmJiX251bXJlY3MgPSBjcHVfdG9fYmUxNihudW1yZWNzKTsK KworCWlmIChmbGFncyAmIFhGU19CVFJFRV9MT05HX1BUUlMpIHsKKwkJYnVmLT5iYl91LmwuYmJf bGVmdHNpYiA9IGNwdV90b19iZTY0KE5VTExERlNCTk8pOworCQlidWYtPmJiX3UubC5iYl9yaWdo dHNpYiA9IGNwdV90b19iZTY0KE5VTExERlNCTk8pOworCQlpZiAoZmxhZ3MgJiBYRlNfQlRSRUVf Q1JDX0JMT0NLUykgeworCQkJYnVmLT5iYl91LmwuYmJfYmxrbm8gPSBjcHVfdG9fYmU2NChibGtu byk7CisJCQlidWYtPmJiX3UubC5iYl9vd25lciA9IGNwdV90b19iZTY0KG93bmVyKTsKKwkJCXV1 aWRfY29weSgmYnVmLT5iYl91LmwuYmJfdXVpZCwgJm1wLT5tX3NiLnNiX3V1aWQpOworCQkJYnVm LT5iYl91LmwuYmJfcGFkID0gMDsKKwkJfQorCX0gZWxzZSB7CisJCS8qIG93bmVyIGlzIGEgMzIg Yml0IHZhbHVlIG9uIHNob3J0IGJsb2NrcyAqLworCQlfX3UzMiBfX293bmVyID0gKF9fdTMyKW93 bmVyOworCisJCWJ1Zi0+YmJfdS5zLmJiX2xlZnRzaWIgPSBjcHVfdG9fYmUzMihOVUxMQUdCTE9D Syk7CisJCWJ1Zi0+YmJfdS5zLmJiX3JpZ2h0c2liID0gY3B1X3RvX2JlMzIoTlVMTEFHQkxPQ0sp OworCQlpZiAoZmxhZ3MgJiBYRlNfQlRSRUVfQ1JDX0JMT0NLUykgeworCQkJYnVmLT5iYl91LnMu YmJfYmxrbm8gPSBjcHVfdG9fYmU2NChibGtubyk7CisJCQlidWYtPmJiX3Uucy5iYl9vd25lciA9 IGNwdV90b19iZTMyKF9fb3duZXIpOworCQkJdXVpZF9jb3B5KCZidWYtPmJiX3Uucy5iYl91dWlk LCAmbXAtPm1fc2Iuc2JfdXVpZCk7CisJCX0KKwl9Cit9CisKK3ZvaWQKIHhmc19idHJlZV9pbml0 X2Jsb2NrKAogCXN0cnVjdCB4ZnNfbW91bnQgKm1wLAogCXN0cnVjdCB4ZnNfYnVmCSpicCwKIAlf X3UzMgkJbWFnaWMsCiAJX191MTYJCWxldmVsLAogCV9fdTE2CQludW1yZWNzLAorCV9fdTY0CQlv d25lciwKIAl1bnNpZ25lZCBpbnQJZmxhZ3MpCiB7Ci0Jc3RydWN0IHhmc19idHJlZV9ibG9jawkq bmV3ID0gWEZTX0JVRl9UT19CTE9DSyhicCk7Ci0KLQluZXctPmJiX21hZ2ljID0gY3B1X3RvX2Jl MzIobWFnaWMpOwotCW5ldy0+YmJfbGV2ZWwgPSBjcHVfdG9fYmUxNihsZXZlbCk7Ci0JbmV3LT5i Yl9udW1yZWNzID0gY3B1X3RvX2JlMTYobnVtcmVjcyk7Ci0KLQlpZiAoZmxhZ3MgJiBYRlNfQlRS RUVfTE9OR19QVFJTKSB7Ci0JCW5ldy0+YmJfdS5sLmJiX2xlZnRzaWIgPSBjcHVfdG9fYmU2NChO VUxMREZTQk5PKTsKLQkJbmV3LT5iYl91LmwuYmJfcmlnaHRzaWIgPSBjcHVfdG9fYmU2NChOVUxM REZTQk5PKTsKLQl9IGVsc2UgewotCQluZXctPmJiX3Uucy5iYl9sZWZ0c2liID0gY3B1X3RvX2Jl MzIoTlVMTEFHQkxPQ0spOwotCQluZXctPmJiX3Uucy5iYl9yaWdodHNpYiA9IGNwdV90b19iZTMy KE5VTExBR0JMT0NLKTsKLQl9CisJeGZzX2J0cmVlX2luaXRfYmxvY2tfaW50KG1wLCBYRlNfQlVG X1RPX0JMT0NLKGJwKSwgYnAtPmJfYm4sCisJCQkJIG1hZ2ljLCBsZXZlbCwgbnVtcmVjcywgb3du ZXIsIGZsYWdzKTsKIH0KIAogU1RBVElDIHZvaWQKIHhmc19idHJlZV9pbml0X2Jsb2NrX2N1cigK IAlzdHJ1Y3QgeGZzX2J0cmVlX2N1cgkqY3VyLAorCXN0cnVjdCB4ZnNfYnVmCQkqYnAsCiAJaW50 CQkJbGV2ZWwsCi0JaW50CQkJbnVtcmVjcywKLQlzdHJ1Y3QgeGZzX2J1ZgkJKmJwKQorCWludAkJ CW51bXJlY3MpCiB7Ci0JeGZzX2J0cmVlX2luaXRfYmxvY2soY3VyLT5iY19tcCwgYnAsIHhmc19t YWdpY3NbY3VyLT5iY19idG51bV0sCi0JCQkgICAgICAgbGV2ZWwsIG51bXJlY3MsIGN1ci0+YmNf ZmxhZ3MpOworCV9fdTY0IG93bmVyOworCisJLyoKKwkgKiB3ZSBjYW4gcHVsbCB0aGUgb3duZXIg ZnJvbSB0aGUgY3Vyc29yIHJpZ2h0IG5vdyBhcyB0aGUgZGlmZmVyZW50CisJICogb3duZXJzIGFs aWduIGRpcmVjdGx5IHdpdGggdGhlIHBvaW50ZXIgc2l6ZSBvZiB0aGUgYnRyZWUuIFRoaXMgbWF5 CisJICogY2hhbmdlIGluIGZ1dHVyZSwgYnV0IGlzIHNhZmUgZm9yIGN1cnJlbnQgdXNlcnMgb2Yg dGhlIGdlbmVyaWMgYnRyZWUKKwkgKiBjb2RlLgorCSAqLworCWlmIChjdXItPmJjX2ZsYWdzICYg WEZTX0JUUkVFX0xPTkdfUFRSUykKKwkJb3duZXIgPSBjdXItPmJjX3ByaXZhdGUuYi5pcC0+aV9p bm87CisJZWxzZQorCQlvd25lciA9IGN1ci0+YmNfcHJpdmF0ZS5hLmFnbm87CisKKwl4ZnNfYnRy ZWVfaW5pdF9ibG9ja19pbnQoY3VyLT5iY19tcCwgWEZTX0JVRl9UT19CTE9DSyhicCksIGJwLT5i X2JuLAorCQkJCSB4ZnNfYnRyZWVfbWFnaWMoY3VyKSwgbGV2ZWwsIG51bXJlY3MsCisJCQkJIG93 bmVyLCBjdXItPmJjX2ZsYWdzKTsKIH0KIAogLyoKICAqIFJldHVybiB0cnVlIGlmIHB0ciBpcyB0 aGUgbGFzdCByZWNvcmQgaW4gdGhlIGJ0cmVlIGFuZAotICogd2UgbmVlZCB0byB0cmFjayB1cGRh dGXRlSB0byB0aGlzIHJlY29yZC4gIFRoZSBkZWNpc2lvbgorICogd2UgbmVlZCB0byB0cmFjayB1 cGRhdGVzIHRvIHRoaXMgcmVjb3JkLiAgVGhlIGRlY2lzaW9uCiAgKiB3aWxsIGJlIGZ1cnRoZXIg cmVmaW5lZCBpbiB0aGUgdXBkYXRlX2xhc3RyZWMgbWV0aG9kLgogICovCiBTVEFUSUMgaW50CkBA IC0xMDkxLDYgKzEyMjcsNyBAQCB4ZnNfYnRyZWVfbG9nX2tleXMoCiAJWEZTX0JUUkVFX1RSQUNF X0FSR0JJSShjdXIsIGJwLCBmaXJzdCwgbGFzdCk7CiAKIAlpZiAoYnApIHsKKwkJeGZzX3RyYW5z X2J1Zl9zZXRfdHlwZShjdXItPmJjX3RwLCBicCwgWEZTX0JMRl9CVFJFRV9CVUYpOwogCQl4ZnNf dHJhbnNfbG9nX2J1ZihjdXItPmJjX3RwLCBicCwKIAkJCQkgIHhmc19idHJlZV9rZXlfb2Zmc2V0 KGN1ciwgZmlyc3QpLAogCQkJCSAgeGZzX2J0cmVlX2tleV9vZmZzZXQoY3VyLCBsYXN0ICsgMSkg LSAxKTsKQEAgLTExMTUsNiArMTI1Miw3IEBAIHhmc19idHJlZV9sb2dfcmVjcygKIAlYRlNfQlRS RUVfVFJBQ0VfQ1VSU09SKGN1ciwgWEJUX0VOVFJZKTsKIAlYRlNfQlRSRUVfVFJBQ0VfQVJHQklJ KGN1ciwgYnAsIGZpcnN0LCBsYXN0KTsKIAorCXhmc190cmFuc19idWZfc2V0X3R5cGUoY3VyLT5i Y190cCwgYnAsIFhGU19CTEZfQlRSRUVfQlVGKTsKIAl4ZnNfdHJhbnNfbG9nX2J1ZihjdXItPmJj X3RwLCBicCwKIAkJCSAgeGZzX2J0cmVlX3JlY19vZmZzZXQoY3VyLCBmaXJzdCksCiAJCQkgIHhm c19idHJlZV9yZWNfb2Zmc2V0KGN1ciwgbGFzdCArIDEpIC0gMSk7CkBAIC0xMTM5LDYgKzEyNzcs NyBAQCB4ZnNfYnRyZWVfbG9nX3B0cnMoCiAJCXN0cnVjdCB4ZnNfYnRyZWVfYmxvY2sJKmJsb2Nr ID0gWEZTX0JVRl9UT19CTE9DSyhicCk7CiAJCWludAkJCWxldmVsID0geGZzX2J0cmVlX2dldF9s ZXZlbChibG9jayk7CiAKKwkJeGZzX3RyYW5zX2J1Zl9zZXRfdHlwZShjdXItPmJjX3RwLCBicCwg WEZTX0JMRl9CVFJFRV9CVUYpOwogCQl4ZnNfdHJhbnNfbG9nX2J1ZihjdXItPmJjX3RwLCBicCwK IAkJCQl4ZnNfYnRyZWVfcHRyX29mZnNldChjdXIsIGZpcnN0LCBsZXZlbCksCiAJCQkJeGZzX2J0 cmVlX3B0cl9vZmZzZXQoY3VyLCBsYXN0ICsgMSwgbGV2ZWwpIC0gMSk7CkBAIC0xMTY3LDcgKzEz MDYsMTIgQEAgeGZzX2J0cmVlX2xvZ19ibG9jaygKIAkJb2Zmc2V0b2Yoc3RydWN0IHhmc19idHJl ZV9ibG9jaywgYmJfbnVtcmVjcyksCiAJCW9mZnNldG9mKHN0cnVjdCB4ZnNfYnRyZWVfYmxvY2ss IGJiX3Uucy5iYl9sZWZ0c2liKSwKIAkJb2Zmc2V0b2Yoc3RydWN0IHhmc19idHJlZV9ibG9jaywg YmJfdS5zLmJiX3JpZ2h0c2liKSwKLQkJWEZTX0JUUkVFX1NCTE9DS19MRU4KKwkJb2Zmc2V0b2Yo c3RydWN0IHhmc19idHJlZV9ibG9jaywgYmJfdS5zLmJiX2Jsa25vKSwKKwkJb2Zmc2V0b2Yoc3Ry dWN0IHhmc19idHJlZV9ibG9jaywgYmJfdS5zLmJiX2xzbiksCisJCW9mZnNldG9mKHN0cnVjdCB4 ZnNfYnRyZWVfYmxvY2ssIGJiX3Uucy5iYl91dWlkKSwKKwkJb2Zmc2V0b2Yoc3RydWN0IHhmc19i dHJlZV9ibG9jaywgYmJfdS5zLmJiX293bmVyKSwKKwkJb2Zmc2V0b2Yoc3RydWN0IHhmc19idHJl ZV9ibG9jaywgYmJfdS5zLmJiX2NyYyksCisJCVhGU19CVFJFRV9TQkxPQ0tfTEVOICsgWEZTX0JU UkVFX0NSQ0JMT0NLX0FERAogCX07CiAJc3RhdGljIGNvbnN0IHNob3J0CWxvZmZzZXRzW10gPSB7 CS8qIHRhYmxlIG9mIG9mZnNldHMgKGxvbmcpICovCiAJCW9mZnNldG9mKHN0cnVjdCB4ZnNfYnRy ZWVfYmxvY2ssIGJiX21hZ2ljKSwKQEAgLTExNzUsMTcgKzEzMTksNDAgQEAgeGZzX2J0cmVlX2xv Z19ibG9jaygKIAkJb2Zmc2V0b2Yoc3RydWN0IHhmc19idHJlZV9ibG9jaywgYmJfbnVtcmVjcyks CiAJCW9mZnNldG9mKHN0cnVjdCB4ZnNfYnRyZWVfYmxvY2ssIGJiX3UubC5iYl9sZWZ0c2liKSwK IAkJb2Zmc2V0b2Yoc3RydWN0IHhmc19idHJlZV9ibG9jaywgYmJfdS5sLmJiX3JpZ2h0c2liKSwK LQkJWEZTX0JUUkVFX0xCTE9DS19MRU4KKwkJb2Zmc2V0b2Yoc3RydWN0IHhmc19idHJlZV9ibG9j aywgYmJfdS5sLmJiX2Jsa25vKSwKKwkJb2Zmc2V0b2Yoc3RydWN0IHhmc19idHJlZV9ibG9jaywg YmJfdS5sLmJiX2xzbiksCisJCW9mZnNldG9mKHN0cnVjdCB4ZnNfYnRyZWVfYmxvY2ssIGJiX3Uu bC5iYl91dWlkKSwKKwkJb2Zmc2V0b2Yoc3RydWN0IHhmc19idHJlZV9ibG9jaywgYmJfdS5sLmJi X293bmVyKSwKKwkJb2Zmc2V0b2Yoc3RydWN0IHhmc19idHJlZV9ibG9jaywgYmJfdS5sLmJiX2Ny YyksCisJCW9mZnNldG9mKHN0cnVjdCB4ZnNfYnRyZWVfYmxvY2ssIGJiX3UubC5iYl9wYWQpLAor CQlYRlNfQlRSRUVfTEJMT0NLX0xFTiArIFhGU19CVFJFRV9DUkNCTE9DS19BREQKIAl9OwogCiAJ WEZTX0JUUkVFX1RSQUNFX0NVUlNPUihjdXIsIFhCVF9FTlRSWSk7CiAJWEZTX0JUUkVFX1RSQUNF X0FSR0JJKGN1ciwgYnAsIGZpZWxkcyk7CiAKIAlpZiAoYnApIHsKKwkJaW50IG5iaXRzOworCisJ CWlmIChjdXItPmJjX2ZsYWdzICYgWEZTX0JUUkVFX0NSQ19CTE9DS1MpIHsKKwkJCS8qCisJCQkg KiBXZSBkb24ndCBsb2cgdGhlIENSQyB3aGVuIHVwZGF0aW5nIGEgYnRyZWUKKwkJCSAqIGJsb2Nr IGJ1dCBpbnN0ZWFkIHJlY3JlYXRlIGl0IGR1cmluZyBsb2cKKwkJCSAqIHJlY292ZXJ5LiAgQXMg dGhlIGxvZyBidWZmZXJzIGhhdmUgY2hlY2tzdW1zCisJCQkgKiBvZiB0aGVpciB0aGlzIGlzIHNh ZmUgYW5kIGF2b2lkcyBsb2dnaW5nIGEgY3JjCisJCQkgKiB1cGRhdGUgaW4gYSBsb3Qgb2YgcGxh Y2VzLgorCQkJICovCisJCQlpZiAoZmllbGRzID09IFhGU19CQl9BTExfQklUUykKKwkJCQlmaWVs ZHMgPSBYRlNfQkJfQUxMX0JJVFNfQ1JDOworCQkJbmJpdHMgPSBYRlNfQkJfTlVNX0JJVFNfQ1JD OworCQl9IGVsc2UgeworCQkJbmJpdHMgPSBYRlNfQkJfTlVNX0JJVFM7CisJCX0KIAkJeGZzX2J0 cmVlX29mZnNldHMoZmllbGRzLAogCQkJCSAgKGN1ci0+YmNfZmxhZ3MgJiBYRlNfQlRSRUVfTE9O R19QVFJTKSA/CiAJCQkJCWxvZmZzZXRzIDogc29mZnNldHMsCi0JCQkJICBYRlNfQkJfTlVNX0JJ VFMsICZmaXJzdCwgJmxhc3QpOworCQkJCSAgbmJpdHMsICZmaXJzdCwgJmxhc3QpOworCQl4ZnNf dHJhbnNfYnVmX3NldF90eXBlKGN1ci0+YmNfdHAsIGJwLCBYRlNfQkxGX0JUUkVFX0JVRik7CiAJ CXhmc190cmFuc19sb2dfYnVmKGN1ci0+YmNfdHAsIGJwLCBmaXJzdCwgbGFzdCk7CiAJfSBlbHNl IHsKIAkJeGZzX3RyYW5zX2xvZ19pbm9kZShjdXItPmJjX3RwLCBjdXItPmJjX3ByaXZhdGUuYi5p cCwKQEAgLTIxNDgsNyArMjMxNSw3IEBAIHhmc19idHJlZV9zcGxpdCgKIAkJZ290byBlcnJvcjA7 CiAKIAkvKiBGaWxsIGluIHRoZSBidHJlZSBoZWFkZXIgZm9yIHRoZSBuZXcgcmlnaHQgYmxvY2su ICovCi0JeGZzX2J0cmVlX2luaXRfYmxvY2tfY3VyKGN1ciwgeGZzX2J0cmVlX2dldF9sZXZlbChs ZWZ0KSwgMCwgcmJwKTsKKwl4ZnNfYnRyZWVfaW5pdF9ibG9ja19jdXIoY3VyLCByYnAsIHhmc19i dHJlZV9nZXRfbGV2ZWwobGVmdCksIDApOwogCiAJLyoKIAkgKiBTcGxpdCB0aGUgZW50cmllcyBi ZXR3ZWVuIHRoZSBvbGQgYW5kIHRoZSBuZXcgYmxvY2sgZXZlbmx5LgpAQCAtMjQ1Nyw3ICsyNjI0 LDcgQEAgeGZzX2J0cmVlX25ld19yb290KAogCQlucHRyID0gMjsKIAl9CiAJLyogRmlsbCBpbiB0 aGUgbmV3IGJsb2NrJ3MgYnRyZWUgaGVhZGVyIGFuZCBsb2cgaXQuICovCi0JeGZzX2J0cmVlX2lu aXRfYmxvY2tfY3VyKGN1ciwgY3VyLT5iY19ubGV2ZWxzLCAyLCBuYnApOworCXhmc19idHJlZV9p bml0X2Jsb2NrX2N1cihjdXIsIG5icCwgY3VyLT5iY19ubGV2ZWxzLCAyKTsKIAl4ZnNfYnRyZWVf bG9nX2Jsb2NrKGN1ciwgbmJwLCBYRlNfQkJfQUxMX0JJVFMpOwogCUFTU0VSVCgheGZzX2J0cmVl X3B0cl9pc19udWxsKGN1ciwgJmxwdHIpICYmCiAJCQkheGZzX2J0cmVlX3B0cl9pc19udWxsKGN1 ciwgJnJwdHIpKTsKZGlmZiAtLWdpdCBhL2xpYnhmcy94ZnNfaWFsbG9jX2J0cmVlLmMgYi9saWJ4 ZnMveGZzX2lhbGxvY19idHJlZS5jCmluZGV4IDBiYzI0Y2MuLmVlMDM2YmYgMTAwNjQ0Ci0tLSBh L2xpYnhmcy94ZnNfaWFsbG9jX2J0cmVlLmMKKysrIGIvbGlieGZzL3hmc19pYWxsb2NfYnRyZWUu YwpAQCAtMTYzLDUyICsxNjMsODIgQEAgeGZzX2lub2J0X2tleV9kaWZmKAogCQkJICBjdXItPmJj X3JlYy5pLmlyX3N0YXJ0aW5vOwogfQogCi12b2lkCitzdGF0aWMgaW50CiB4ZnNfaW5vYnRfdmVy aWZ5KAogCXN0cnVjdCB4ZnNfYnVmCQkqYnApCiB7CiAJc3RydWN0IHhmc19tb3VudAkqbXAgPSBi cC0+Yl90YXJnZXQtPmJ0X21vdW50OwogCXN0cnVjdCB4ZnNfYnRyZWVfYmxvY2sJKmJsb2NrID0g WEZTX0JVRl9UT19CTE9DSyhicCk7CisJc3RydWN0IHhmc19wZXJhZwkqcGFnID0gYnAtPmJfcGFn OwogCXVuc2lnbmVkIGludAkJbGV2ZWw7Ci0JaW50CQkJc2Jsb2NrX29rOyAvKiBibG9jayBwYXNz ZXMgY2hlY2tzICovCiAKLQkvKiBtYWdpYyBudW1iZXIgYW5kIGxldmVsIHZlcmlmaWNhdGlvbiAq LwotCWxldmVsID0gYmUxNl90b19jcHUoYmxvY2stPmJiX2xldmVsKTsKLQlzYmxvY2tfb2sgPSBi bG9jay0+YmJfbWFnaWMgPT0gY3B1X3RvX2JlMzIoWEZTX0lCVF9NQUdJQykgJiYKLQkJICAgIGxl dmVsIDwgbXAtPm1faW5fbWF4bGV2ZWxzOworCS8qCisJICogRHVyaW5nIGdyb3dmcyBvcGVyYXRp b25zLCB3ZSBjYW4ndCB2ZXJpZnkgdGhlIGV4YWN0IG93bmVyIGFzIHRoZQorCSAqIHBlcmFnIGlz IG5vdCBmdWxseSBpbml0aWFsaXNlZCBhbmQgaGVuY2Ugbm90IGF0dGFjaGVkIHRvIHRoZSBidWZm ZXIuCisJICovCisJc3dpdGNoIChiZTMyX3RvX2NwdShibG9jay0+YmJfbWFnaWMpKSB7CisJY2Fz ZSBYRlNfSUJUX0NSQ19NQUdJQzoKKwkJaWYgKCF4ZnNfc2JfdmVyc2lvbl9oYXNjcmMoJm1wLT5t X3NiKSkKKwkJCXJldHVybiBmYWxzZTsKKwkJaWYgKCF1dWlkX2VxdWFsKCZibG9jay0+YmJfdS5z LmJiX3V1aWQsICZtcC0+bV9zYi5zYl91dWlkKSkKKwkJCXJldHVybiBmYWxzZTsKKwkJaWYgKGJs b2NrLT5iYl91LnMuYmJfYmxrbm8gIT0gY3B1X3RvX2JlNjQoYnAtPmJfYm4pKQorCQkJcmV0dXJu IGZhbHNlOworCQlpZiAocGFnICYmCisJCSAgICBiZTMyX3RvX2NwdShibG9jay0+YmJfdS5zLmJi X293bmVyKSAhPSBwYWctPnBhZ19hZ25vKQorCQkJcmV0dXJuIGZhbHNlOworCQkvKiBmYWxsIHRo cm91Z2ggKi8KKwljYXNlIFhGU19JQlRfTUFHSUM6CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCXJl dHVybiAwOworCX0KIAotCS8qIG51bXJlY3MgdmVyaWZpY2F0aW9uICovCi0Jc2Jsb2NrX29rID0g c2Jsb2NrX29rICYmCi0JCWJlMTZfdG9fY3B1KGJsb2NrLT5iYl9udW1yZWNzKSA8PSBtcC0+bV9p bm9idF9teHJbbGV2ZWwgIT0gMF07CisJLyogbnVtcmVjcyBhbmQgbGV2ZWwgdmVyaWZpY2F0aW9u ICovCisJbGV2ZWwgPSBiZTE2X3RvX2NwdShibG9jay0+YmJfbGV2ZWwpOworCWlmIChsZXZlbCA+ PSBtcC0+bV9pbl9tYXhsZXZlbHMpCisJCXJldHVybiBmYWxzZTsKKwlpZiAoYmUxNl90b19jcHUo YmxvY2stPmJiX251bXJlY3MpID4gbXAtPm1faW5vYnRfbXhyW2xldmVsICE9IDBdKQorCQlyZXR1 cm4gZmFsc2U7CiAKIAkvKiBzaWJsaW5nIHBvaW50ZXIgdmVyaWZpY2F0aW9uICovCi0Jc2Jsb2Nr X29rID0gc2Jsb2NrX29rICYmCi0JCShibG9jay0+YmJfdS5zLmJiX2xlZnRzaWIgPT0gY3B1X3Rv X2JlMzIoTlVMTEFHQkxPQ0spIHx8Ci0JCSBiZTMyX3RvX2NwdShibG9jay0+YmJfdS5zLmJiX2xl ZnRzaWIpIDwgbXAtPm1fc2Iuc2JfYWdibG9ja3MpICYmCi0JCWJsb2NrLT5iYl91LnMuYmJfbGVm dHNpYiAmJgotCQkoYmxvY2stPmJiX3Uucy5iYl9yaWdodHNpYiA9PSBjcHVfdG9fYmUzMihOVUxM QUdCTE9DSykgfHwKLQkJIGJlMzJfdG9fY3B1KGJsb2NrLT5iYl91LnMuYmJfcmlnaHRzaWIpIDwg bXAtPm1fc2Iuc2JfYWdibG9ja3MpICYmCi0JCWJsb2NrLT5iYl91LnMuYmJfcmlnaHRzaWI7Ci0K LQlpZiAoIXNibG9ja19vaykgewotCQl0cmFjZV94ZnNfYnRyZWVfY29ycnVwdChicCwgX1JFVF9J UF8pOwotCQlYRlNfQ09SUlVQVElPTl9FUlJPUihfX2Z1bmNfXywgWEZTX0VSUkxFVkVMX0xPVywg bXAsIGJsb2NrKTsKLQkJeGZzX2J1Zl9pb2Vycm9yKGJwLCBFRlNDT1JSVVBURUQpOwotCX0KKwlp ZiAoIWJsb2NrLT5iYl91LnMuYmJfbGVmdHNpYiB8fAorCSAgICAoYmUzMl90b19jcHUoYmxvY2st PmJiX3Uucy5iYl9sZWZ0c2liKSA+PSBtcC0+bV9zYi5zYl9hZ2Jsb2NrcyAmJgorCSAgICAgYmxv Y2stPmJiX3Uucy5iYl9sZWZ0c2liICE9IGNwdV90b19iZTMyKE5VTExBR0JMT0NLKSkpCisJCXJl dHVybiBmYWxzZTsKKwlpZiAoIWJsb2NrLT5iYl91LnMuYmJfcmlnaHRzaWIgfHwKKwkgICAgKGJl MzJfdG9fY3B1KGJsb2NrLT5iYl91LnMuYmJfcmlnaHRzaWIpID49IG1wLT5tX3NiLnNiX2FnYmxv Y2tzICYmCisJICAgICBibG9jay0+YmJfdS5zLmJiX3JpZ2h0c2liICE9IGNwdV90b19iZTMyKE5V TExBR0JMT0NLKSkpCisJCXJldHVybiBmYWxzZTsKKworCXJldHVybiB0cnVlOwogfQogCiBzdGF0 aWMgdm9pZAogeGZzX2lub2J0X3JlYWRfdmVyaWZ5KAogCXN0cnVjdCB4ZnNfYnVmCSpicCkKIHsK LQl4ZnNfaW5vYnRfdmVyaWZ5KGJwKTsKKwlpZiAoISh4ZnNfYnRyZWVfc2Jsb2NrX3ZlcmlmeV9j cmMoYnApICYmCisJICAgICAgeGZzX2lub2J0X3ZlcmlmeShicCkpKSB7CisJCXRyYWNlX3hmc19i dHJlZV9jb3JydXB0KGJwLCBfUkVUX0lQXyk7CisJCVhGU19DT1JSVVBUSU9OX0VSUk9SKF9fZnVu Y19fLCBYRlNfRVJSTEVWRUxfTE9XLAorCQkJCSAgICAgYnAtPmJfdGFyZ2V0LT5idF9tb3VudCwg YnAtPmJfYWRkcik7CisJCXhmc19idWZfaW9lcnJvcihicCwgRUZTQ09SUlVQVEVEKTsKKwl9CiB9 CiAKIHN0YXRpYyB2b2lkCiB4ZnNfaW5vYnRfd3JpdGVfdmVyaWZ5KAogCXN0cnVjdCB4ZnNfYnVm CSpicCkKIHsKLQl4ZnNfaW5vYnRfdmVyaWZ5KGJwKTsKKwlpZiAoIXhmc19pbm9idF92ZXJpZnko YnApKSB7CisJCXRyYWNlX3hmc19idHJlZV9jb3JydXB0KGJwLCBfUkVUX0lQXyk7CisJCVhGU19D T1JSVVBUSU9OX0VSUk9SKF9fZnVuY19fLCBYRlNfRVJSTEVWRUxfTE9XLAorCQkJCSAgICAgYnAt PmJfdGFyZ2V0LT5idF9tb3VudCwgYnAtPmJfYWRkcik7CisJCXhmc19idWZfaW9lcnJvcihicCwg RUZTQ09SUlVQVEVEKTsKKwl9CisJeGZzX2J0cmVlX3NibG9ja19jYWxjX2NyYyhicCk7CisKIH0K IAogY29uc3Qgc3RydWN0IHhmc19idWZfb3BzIHhmc19pbm9idF9idWZfb3BzID0gewpAQCAtMzU1 LDYgKzM4NSw4IEBAIHhmc19pbm9idF9pbml0X2N1cnNvcigKIAljdXItPmJjX2Jsb2NrbG9nID0g bXAtPm1fc2Iuc2JfYmxvY2tsb2c7CiAKIAljdXItPmJjX29wcyA9ICZ4ZnNfaW5vYnRfb3BzOwor CWlmICh4ZnNfc2JfdmVyc2lvbl9oYXNjcmMoJm1wLT5tX3NiKSkKKwkJY3VyLT5iY19mbGFncyB8 PSBYRlNfQlRSRUVfQ1JDX0JMT0NLUzsKIAogCWN1ci0+YmNfcHJpdmF0ZS5hLmFnYnAgPSBhZ2Jw OwogCWN1ci0+YmNfcHJpdmF0ZS5hLmFnbm8gPSBhZ25vOwpkaWZmIC0tZ2l0IGEvbGlieGZzL3hm c19pbm9kZS5jIGIvbGlieGZzL3hmc19pbm9kZS5jCmluZGV4IDNjZjI0MjMuLmY5Zjc5MmMgMTAw NjQ0Ci0tLSBhL2xpYnhmcy94ZnNfaW5vZGUuYworKysgYi9saWJ4ZnMveGZzX2lub2RlLmMKQEAg LTQ5Miw2ICs0OTIsNyBAQCB4ZnNfaWZvcm1hdF9idHJlZSgKIAl4ZnNfZGlub2RlX3QJCSpkaXAs CiAJaW50CQkJd2hpY2hmb3JrKQogeworCXN0cnVjdCB4ZnNfbW91bnQJKm1wID0gaXAtPmlfbW91 bnQ7CiAJeGZzX2JtZHJfYmxvY2tfdAkqZGZwOwogCXhmc19pZm9ya190CQkqaWZwOwogCS8qIFJF RkVSRU5DRUQgKi8KQEAgLTUwMCw3ICs1MDEsNyBAQCB4ZnNfaWZvcm1hdF9idHJlZSgKIAogCWlm cCA9IFhGU19JRk9SS19QVFIoaXAsIHdoaWNoZm9yayk7CiAJZGZwID0gKHhmc19ibWRyX2Jsb2Nr X3QgKilYRlNfREZPUktfUFRSKGRpcCwgd2hpY2hmb3JrKTsKLQlzaXplID0gWEZTX0JNQVBfQlJP T1RfU1BBQ0UoZGZwKTsKKwlzaXplID0gWEZTX0JNQVBfQlJPT1RfU1BBQ0UobXAsIGRmcCk7CiAJ bnJlY3MgPSBiZTE2X3RvX2NwdShkZnAtPmJiX251bXJlY3MpOwogCiAJLyoKQEAgLTUxMSwxNCAr NTEyLDE0IEBAIHhmc19pZm9ybWF0X2J0cmVlKAogCSAqIGJsb2Nrcy4KIAkgKi8KIAlpZiAodW5s aWtlbHkoWEZTX0lGT1JLX05FWFRFTlRTKGlwLCB3aGljaGZvcmspIDw9Ci0JCQlYRlNfSUZPUktf TUFYRVhUKGlwLCB3aGljaGZvcmspIHx8CisJCQkJCVhGU19JRk9SS19NQVhFWFQoaXAsIHdoaWNo Zm9yaykgfHwKIAkJICAgICBYRlNfQk1EUl9TUEFDRV9DQUxDKG5yZWNzKSA+Ci0JCQlYRlNfREZP UktfU0laRShkaXAsIGlwLT5pX21vdW50LCB3aGljaGZvcmspIHx8CisJCQkJCVhGU19ERk9SS19T SVpFKGRpcCwgbXAsIHdoaWNoZm9yaykgfHwKIAkJICAgICBYRlNfSUZPUktfTkVYVEVOVFMoaXAs IHdoaWNoZm9yaykgPiBpcC0+aV9kLmRpX25ibG9ja3MpKSB7Ci0JCXhmc193YXJuKGlwLT5pX21v dW50LCAiY29ycnVwdCBpbm9kZSAlTHUgKGJ0cmVlKS4iLAotCQkJKHVuc2lnbmVkIGxvbmcgbG9u ZykgaXAtPmlfaW5vKTsKKwkJeGZzX3dhcm4obXAsICJjb3JydXB0IGlub2RlICVMdSAoYnRyZWUp LiIsCisJCQkJCSh1bnNpZ25lZCBsb25nIGxvbmcpIGlwLT5pX2lubyk7CiAJCVhGU19DT1JSVVBU SU9OX0VSUk9SKCJ4ZnNfaWZvcm1hdF9idHJlZSIsIFhGU19FUlJMRVZFTF9MT1csCi0JCQkJIGlw LT5pX21vdW50LCBkaXApOworCQkJCQkgbXAsIGRpcCk7CiAJCXJldHVybiBYRlNfRVJST1IoRUZT Q09SUlVQVEVEKTsKIAl9CiAKQEAgLTUyOSw4ICs1MzAsNyBAQCB4ZnNfaWZvcm1hdF9idHJlZSgK IAkgKiBDb3B5IGFuZCBjb252ZXJ0IGZyb20gdGhlIG9uLWRpc2sgc3RydWN0dXJlCiAJICogdG8g dGhlIGluLW1lbW9yeSBzdHJ1Y3R1cmUuCiAJICovCi0JeGZzX2JtZHJfdG9fYm1idChpcC0+aV9t b3VudCwgZGZwLAotCQkJIFhGU19ERk9SS19TSVpFKGRpcCwgaXAtPmlfbW91bnQsIHdoaWNoZm9y ayksCisJeGZzX2JtZHJfdG9fYm1idChpcCwgZGZwLCBYRlNfREZPUktfU0laRShkaXAsIGlwLT5p X21vdW50LCB3aGljaGZvcmspLAogCQkJIGlmcC0+aWZfYnJvb3QsIHNpemUpOwogCWlmcC0+aWZf ZmxhZ3MgJj0gflhGU19JRkVYVEVOVFM7CiAJaWZwLT5pZl9mbGFncyB8PSBYRlNfSUZCUk9PVDsK QEAgLTgxMyw3ICs4MTMsNyBAQCB4ZnNfaXJvb3RfcmVhbGxvYygKIAkJICogYWxsb2NhdGUgaXQg bm93IGFuZCBnZXQgb3V0LgogCQkgKi8KIAkJaWYgKGlmcC0+aWZfYnJvb3RfYnl0ZXMgPT0gMCkg ewotCQkJbmV3X3NpemUgPSAoc2l6ZV90KVhGU19CTUFQX0JST09UX1NQQUNFX0NBTEMocmVjX2Rp ZmYpOworCQkJbmV3X3NpemUgPSBYRlNfQk1BUF9CUk9PVF9TUEFDRV9DQUxDKG1wLCByZWNfZGlm Zik7CiAJCQlpZnAtPmlmX2Jyb290ID0ga21lbV9hbGxvYyhuZXdfc2l6ZSwgS01fU0xFRVAgfCBL TV9OT0ZTKTsKIAkJCWlmcC0+aWZfYnJvb3RfYnl0ZXMgPSAoaW50KW5ld19zaXplOwogCQkJcmV0 dXJuOwpAQCAtODI3LDkgKzgyNyw5IEBAIHhmc19pcm9vdF9yZWFsbG9jKAogCQkgKi8KIAkJY3Vy X21heCA9IHhmc19ibWJ0X21heHJlY3MobXAsIGlmcC0+aWZfYnJvb3RfYnl0ZXMsIDApOwogCQlu ZXdfbWF4ID0gY3VyX21heCArIHJlY19kaWZmOwotCQluZXdfc2l6ZSA9IChzaXplX3QpWEZTX0JN QVBfQlJPT1RfU1BBQ0VfQ0FMQyhuZXdfbWF4KTsKKwkJbmV3X3NpemUgPSBYRlNfQk1BUF9CUk9P VF9TUEFDRV9DQUxDKG1wLCBuZXdfbWF4KTsKIAkJaWZwLT5pZl9icm9vdCA9IGttZW1fcmVhbGxv YyhpZnAtPmlmX2Jyb290LCBuZXdfc2l6ZSwKLQkJCQkoc2l6ZV90KVhGU19CTUFQX0JST09UX1NQ QUNFX0NBTEMoY3VyX21heCksIC8qIG9sZCBzaXplICovCisJCQkJWEZTX0JNQVBfQlJPT1RfU1BB Q0VfQ0FMQyhtcCwgY3VyX21heCksCiAJCQkJS01fU0xFRVAgfCBLTV9OT0ZTKTsKIAkJb3AgPSAo Y2hhciAqKVhGU19CTUFQX0JST09UX1BUUl9BRERSKG1wLCBpZnAtPmlmX2Jyb290LCAxLAogCQkJ CQkJICAgICBpZnAtPmlmX2Jyb290X2J5dGVzKTsKQEAgLTgzNyw3ICs4MzcsNyBAQCB4ZnNfaXJv b3RfcmVhbGxvYygKIAkJCQkJCSAgICAgKGludCluZXdfc2l6ZSk7CiAJCWlmcC0+aWZfYnJvb3Rf Ynl0ZXMgPSAoaW50KW5ld19zaXplOwogCQlBU1NFUlQoaWZwLT5pZl9icm9vdF9ieXRlcyA8PQot CQkJWEZTX0lGT1JLX1NJWkUoaXAsIHdoaWNoZm9yaykgKyBYRlNfQlJPT1RfU0laRV9BREopOwor CQkJWEZTX0lGT1JLX1NJWkUoaXAsIHdoaWNoZm9yaykgKyBYRlNfQlJPT1RfU0laRV9BREooaXAp KTsKIAkJbWVtbW92ZShucCwgb3AsIGN1cl9tYXggKiAodWludClzaXplb2YoeGZzX2Rmc2Jub190 KSk7CiAJCXJldHVybjsKIAl9CkBAIC04NTIsNyArODUyLDcgQEAgeGZzX2lyb290X3JlYWxsb2Mo CiAJbmV3X21heCA9IGN1cl9tYXggKyByZWNfZGlmZjsKIAlBU1NFUlQobmV3X21heCA+PSAwKTsK IAlpZiAobmV3X21heCA+IDApCi0JCW5ld19zaXplID0gKHNpemVfdClYRlNfQk1BUF9CUk9PVF9T UEFDRV9DQUxDKG5ld19tYXgpOworCQluZXdfc2l6ZSA9IFhGU19CTUFQX0JST09UX1NQQUNFX0NB TEMobXAsIG5ld19tYXgpOwogCWVsc2UKIAkJbmV3X3NpemUgPSAwOwogCWlmIChuZXdfc2l6ZSA+ IDApIHsKQEAgLTg2MCw3ICs4NjAsOCBAQCB4ZnNfaXJvb3RfcmVhbGxvYygKIAkJLyoKIAkJICog Rmlyc3QgY29weSBvdmVyIHRoZSBidHJlZSBibG9jayBoZWFkZXIuCiAJCSAqLwotCQltZW1jcHko bmV3X2Jyb290LCBpZnAtPmlmX2Jyb290LCBYRlNfQlRSRUVfTEJMT0NLX0xFTik7CisJCW1lbWNw eShuZXdfYnJvb3QsIGlmcC0+aWZfYnJvb3QsCisJCQlYRlNfQk1CVF9CTE9DS19MRU4oaXAtPmlf bW91bnQpKTsKIAl9IGVsc2UgewogCQluZXdfYnJvb3QgPSBOVUxMOwogCQlpZnAtPmlmX2ZsYWdz ICY9IH5YRlNfSUZCUk9PVDsKQEAgLTg5MCw3ICs4OTEsNyBAQCB4ZnNfaXJvb3RfcmVhbGxvYygK IAlpZnAtPmlmX2Jyb290ID0gbmV3X2Jyb290OwogCWlmcC0+aWZfYnJvb3RfYnl0ZXMgPSAoaW50 KW5ld19zaXplOwogCUFTU0VSVChpZnAtPmlmX2Jyb290X2J5dGVzIDw9Ci0JCVhGU19JRk9SS19T SVpFKGlwLCB3aGljaGZvcmspICsgWEZTX0JST09UX1NJWkVfQURKKTsKKwkJWEZTX0lGT1JLX1NJ WkUoaXAsIHdoaWNoZm9yaykgKyBYRlNfQlJPT1RfU0laRV9BREooaXApKTsKIAlyZXR1cm47CiB9 CiAKQEAgLTExNjEsNyArMTE2Miw3IEBAIHhmc19pZmx1c2hfZm9yaygKIAkJCUFTU0VSVChpZnAt PmlmX2Jyb290ICE9IE5VTEwpOwogCQkJQVNTRVJUKGlmcC0+aWZfYnJvb3RfYnl0ZXMgPD0KIAkJ CSAgICAgICAoWEZTX0lGT1JLX1NJWkUoaXAsIHdoaWNoZm9yaykgKwotCQkJCVhGU19CUk9PVF9T SVpFX0FESikpOworCQkJCVhGU19CUk9PVF9TSVpFX0FESihpcCkpKTsKIAkJCXhmc19ibWJ0X3Rv X2JtZHIobXAsIGlmcC0+aWZfYnJvb3QsIGlmcC0+aWZfYnJvb3RfYnl0ZXMsCiAJCQkJKHhmc19i bWRyX2Jsb2NrX3QgKiljcCwKIAkJCQlYRlNfREZPUktfU0laRShkaXAsIG1wLCB3aGljaGZvcmsp KTsKZGlmZiAtLWdpdCBhL2xpYnhmcy94ZnNfbW91bnQuYyBiL2xpYnhmcy94ZnNfbW91bnQuYwpp bmRleCBiNzUxNGZiLi43YWIzNTE5IDEwMDY0NAotLS0gYS9saWJ4ZnMveGZzX21vdW50LmMKKysr IGIvbGlieGZzL3hmc19tb3VudC5jCkBAIC0zMzMsNyArMzMzLDcgQEAgeGZzX3NiX3ZlcmlmeSgK IAkgKiBPbmx5IGNoZWNrIHRoZSBpbiBwcm9ncmVzcyBmaWVsZCBmb3IgdGhlIHByaW1hcnkgc3Vw ZXJibG9jayBhcwogCSAqIG1rZnMueGZzIGRvZXNuJ3QgY2xlYXIgaXQgZnJvbSBzZWNvbmRhcnkg c3VwZXJibG9ja3MuCiAJICovCi0JZXJyb3IgPSB4ZnNfbW91bnRfdmFsaWRhdGVfc2IobXAsICZz YiwgYnAtPmJfYmxrbm8gPT0gWEZTX1NCX0RBRERSKTsKKwllcnJvciA9IHhmc19tb3VudF92YWxp ZGF0ZV9zYihtcCwgJnNiLCBicC0+Yl9ibiA9PSBYRlNfU0JfREFERFIpOwogCWlmIChlcnJvcikK IAkJeGZzX2J1Zl9pb2Vycm9yKGJwLCBlcnJvcik7CiB9CmRpZmYgLS1naXQgYS9tZHJlc3RvcmUv TWFrZWZpbGUgYi9tZHJlc3RvcmUvTWFrZWZpbGUKaW5kZXggY2EyZDFhMC4uNTE3MTMwNiAxMDA2 NDQKLS0tIGEvbWRyZXN0b3JlL01ha2VmaWxlCisrKyBiL21kcmVzdG9yZS9NYWtlZmlsZQpAQCAt OCw3ICs4LDcgQEAgaW5jbHVkZSAkKFRPUERJUikvaW5jbHVkZS9idWlsZGRlZnMKIExUQ09NTUFO RCA9IHhmc19tZHJlc3RvcmUKIENGSUxFUyA9IHhmc19tZHJlc3RvcmUuYwogCi1MTERMSUJTID0g JChMSUJYRlMpICQoTElCUlQpICQoTElCUFRIUkVBRCkKK0xMRExJQlMgPSAkKExJQlhGUykgJChM SUJSVCkgJChMSUJQVEhSRUFEKSAkKExJQlVVSUQpCiBMVERFUEVOREVOQ0lFUyA9ICQoTElCWEZT KQogTExERkxBR1MgPSAtc3RhdGljCiAKLS0gCjEuNy4xMC40CgpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwp4ZnMgbWFpbGluZyBsaXN0Cnhmc0Bvc3Muc2dp LmNvbQpodHRwOi8vb3NzLnNnaS5jb20vbWFpbG1hbi9saXN0aW5mby94ZnMK