Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753773AbaGICkm (ORCPT ); Tue, 8 Jul 2014 22:40:42 -0400 Received: from shadbolt.e.decadent.org.uk ([88.96.1.126]:55737 "EHLO shadbolt.e.decadent.org.uk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751104AbaGICkd (ORCPT ); Tue, 8 Jul 2014 22:40:33 -0400 Message-ID: <1404873605.26540.41.camel@deadeye.wl.decadent.org.uk> Subject: Re: [PATCH 3.2 000/125] 3.2.61-rc1 review From: Ben Hutchings To: linux-kernel@vger.kernel.org Cc: stable@vger.kernel.org, torvalds@linux-foundation.org, Satoru Takeuchi , Guenter Roeck , akpm@linux-foundation.org Date: Wed, 09 Jul 2014 03:40:05 +0100 In-Reply-To: References: Content-Type: multipart/signed; micalg="pgp-sha512"; protocol="application/pgp-signature"; boundary="=-m6eri7lwhduUMIJ5YzIV" X-Mailer: Evolution 3.12.2-1 Mime-Version: 1.0 X-SA-Exim-Connect-IP: 192.168.4.249 X-SA-Exim-Mail-From: ben@decadent.org.uk X-SA-Exim-Scanned: No (on shadbolt.decadent.org.uk); SAEximRunCond expanded to false Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org --=-m6eri7lwhduUMIJ5YzIV Content-Type: multipart/mixed; boundary="=-D8WDOWcB5TInTmXya5Wu" --=-D8WDOWcB5TInTmXya5Wu Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable This is the combined patch for 3.2.61-rc1 relative to 3.2.60. An additional fix is needed for some architectures: diff -u b/lib/nlattr.c b/lib/nlattr.c --- b/lib/nlattr.c +++ b/lib/nlattr.c @@ -13,6 +13,7 @@ #include #include #include +#include #include #include =20 --- END --- Ben. --=20 Ben Hutchings All the simple programs have been written, and all the good names taken. --=-D8WDOWcB5TInTmXya5Wu Content-Disposition: attachment; filename="linux-3.2.61-rc1.patch" Content-Type: text/x-patch; name="linux-3.2.61-rc1.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vamFfSlAvSE9XVE8gYi9Eb2N1bWVudGF0aW9uL2ph X0pQL0hPV1RPDQppbmRleCAwNTBkMzdmLi40NmVkNzM1IDEwMDY0NA0KLS0tIGEvRG9jdW1lbnRh dGlvbi9qYV9KUC9IT1dUTw0KKysrIGIvRG9jdW1lbnRhdGlvbi9qYV9KUC9IT1dUTw0KQEAgLTMx NSw3ICszMTUsNyBAQCBBbmRyZXcgTW9ydG9uIOOBjCBMaW51eC1rZXJuZWwg44Oh44O844Oq44Oz 44Kw44Oq44K544OI44Gr44Kr44O844ON44Or44Oq44Oq44O8DQog44KC44GX44CBMi42LngueSDj gqvjg7zjg43jg6vjgYzlrZjlnKjjgZfjgarjgYTloLTlkIjjgavjga/jgIHnlarlj7fjgYzkuIDn larlpKfjgY3jgYQgMi42Lngg44GMDQog5pyA5paw44Gu5a6J5a6a54mI44Kr44O844ON44Or44Gn 44GZ44CCDQogDQotMi42LngueSDjga8gInN0YWJsZSIg44OB44O844OgIDxzdGFibGVAa2VybmVs Lm9yZz4g44Gn44Oh44Oz44OG44GV44KM44Gm44GK44KK44CB5b+FDQorMi42LngueSDjga8gInN0 YWJsZSIg44OB44O844OgIDxzdGFibGVAdmdlci5rZXJuZWwub3JnPiDjgafjg6Hjg7Pjg4bjgZXj gozjgabjgYrjgorjgIHlv4UNCiDopoHjgavlv5zjgZjjgabjg6rjg6rjg7zjgrnjgZXjgozjgb7j gZnjgILpgJrluLjjga7jg6rjg6rjg7zjgrnmnJ/plpPjga8gMumAsemWk+avjuOBp+OBmeOBjOOA geW3ruOBl+i/q+OBow0KIOOBn+WVj+mhjOOBjOOBquOBkeOCjOOBsOOCguOBhuWwkeOBl+mVt+OB j+OBquOCi+OBk+OBqOOCguOBguOCiuOBvuOBmeOAguOCu+OCreODpeODquODhuOCo+mWoumAo+OB ruWVj+mhjA0KIOOBruWgtOWQiOOBr+OBk+OCjOOBq+WvvuOBl+OBpuOBoOOBhOOBn+OBhOOBruWg tOWQiOOAgeOBmeOBkOOBq+ODquODquODvOOCueOBjOOBleOCjOOBvuOBmeOAgg0KZGlmZiAtLWdp dCBhL0RvY3VtZW50YXRpb24vamFfSlAvc3RhYmxlX2tlcm5lbF9ydWxlcy50eHQgYi9Eb2N1bWVu dGF0aW9uL2phX0pQL3N0YWJsZV9rZXJuZWxfcnVsZXMudHh0DQppbmRleCAxNDI2NTgzLi45ZGJk YTliIDEwMDY0NA0KLS0tIGEvRG9jdW1lbnRhdGlvbi9qYV9KUC9zdGFibGVfa2VybmVsX3J1bGVz LnR4dA0KKysrIGIvRG9jdW1lbnRhdGlvbi9qYV9KUC9zdGFibGVfa2VybmVsX3J1bGVzLnR4dA0K QEAgLTUwLDE2ICs1MCwxNiBAQCBsaW51eC0yLjYuMjkvRG9jdW1lbnRhdGlvbi9zdGFibGVfa2Vy bmVsX3J1bGVzLnR4dA0KIA0KIC1zdGFibGUg44OE44Oq44O844Gr44OR44OD44OB44KS6YCB5LuY 44GZ44KL5omL57aa44GNLQ0KIA0KLSAtIOS4iuiomOOBruimj+WJh+OBq+W+k+OBo+OBpuOBhOOC i+OBi+OCkueiuuiqjeOBl+OBn+W+jOOBq+OAgXN0YWJsZUBrZXJuZWwub3JnIOOBq+ODkeODg+OD gQ0KKyAtIOS4iuiomOOBruimj+WJh+OBq+W+k+OBo+OBpuOBhOOCi+OBi+OCkueiuuiqjeOBl+OB n+W+jOOBq+OAgXN0YWJsZUB2Z2VyLmtlcm5lbC5vcmcg44Gr44OR44OD44OBDQogICAg44KS6YCB 44KL44CCDQogIC0g6YCB5L+h6ICF44Gv44OR44OD44OB44GM44Kt44Ol44O844Gr5Y+X44GR5LuY 44GR44KJ44KM44Gf6Zqb44Gr44GvIEFDSyDjgpLjgIHljbTkuIvjgZXjgozjgZ/loLTlkIgNCiAg ICDjgavjga8gTkFLIOOCkuWPl+OBkeWPluOCi+OAguOBk+OBruWPjeW/nOOBr+mWi+eZuuiAheOB n+OBoeOBruOCueOCseOCuOODpeODvOODq+OBq+OCiOOBo+OBpuOAgeaVsA0KICAgIOaXpeOBi+OB i+OCi+WgtOWQiOOBjOOBguOCi+OAgg0KICAtIOOCguOBl+WPl+OBkeWPluOCieOCjOOBn+OCieOA geODkeODg+ODgeOBr+S7luOBrumWi+eZuuiAheOBn+OBoeOBqOmWoumAo+OBmeOCi+OCteODluOC t+OCueODhuODoOOBrg0KICAgIOODoeODs+ODhuODiuODvOOBq+OCiOOCi+ODrOODk+ODpeODvOOB ruOBn+OCgeOBqyAtc3RhYmxlIOOCreODpeODvOOBq+i/veWKoOOBleOCjOOCi+OAgg0KLSAtIOOD keODg+ODgeOBqyBzdGFibGVAa2VybmVsLm9yZyDjga7jgqLjg4njg6zjgrnjgYzku5jliqDjgZXj gozjgabjgYTjgovjgajjgY3jgavjga/jgIHjgZ3jgowNCisgLSDjg5Hjg4Pjg4Hjgasgc3RhYmxl QHZnZXIua2VybmVsLm9yZyDjga7jgqLjg4njg6zjgrnjgYzku5jliqDjgZXjgozjgabjgYTjgovj gajjgY3jgavjga/jgIHjgZ3jgowNCiAgICDjgYwgTGludXMg44Gu44OE44Oq44O844Gr5YWl44KL 5pmC44Gr6Ieq5YuV55qE44GrIHN0YWJsZSDjg4Hjg7zjg6DjgasgZW1haWwg44GV44KM44KL44CC DQotIC0g44K744Kt44Ol44Oq44OG44Kj44OR44OD44OB44Gv44GT44Gu44Ko44Kk44Oq44Ki44K5 IChzdGFibGVAa2VybmVsLm9yZykg44Gr6YCB44KJ44KM44KL44G5DQorIC0g44K744Kt44Ol44Oq 44OG44Kj44OR44OD44OB44Gv44GT44Gu44Ko44Kk44Oq44Ki44K5IChzdGFibGVAdmdlci5rZXJu ZWwub3JnKSDjgavpgIHjgonjgozjgovjgbkNCiAgICDjgY3jgafjga/jgarjgY/jgIHku6Pjgo/j gorjgasgc2VjdXJpdHlAa2VybmVsLm9yZyDjga7jgqLjg4njg6zjgrnjgavpgIHjgonjgozjgovj gIINCiANCiDjg6zjg5Pjg6Xjg7zjgrXjgqTjgq/jg6stDQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRh dGlvbi96aF9DTi9IT1dUTyBiL0RvY3VtZW50YXRpb24vemhfQ04vSE9XVE8NCmluZGV4IGZhZjk3 NmMuLjU2Y2ViMDUgMTAwNjQ0DQotLS0gYS9Eb2N1bWVudGF0aW9uL3poX0NOL0hPV1RPDQorKysg Yi9Eb2N1bWVudGF0aW9uL3poX0NOL0hPV1RPDQpAQCAtMjM3LDcgKzIzNyw3IEBAIGtlcm5lbC5v cmfnvZHnq5nnmoRwdWIvbGludXgva2VybmVsL3YyLjYv55uu5b2V5LiL5om+5Yiw5a6D44CC5a6D 55qE5byA5Y+R6YG15b6qDQog5aaC5p6c5rKh5pyJMi42LngueeeJiOacrOWGheaguOWtmOWcqO+8 jOmCo+S5iOacgOaWsOeahDIuNi5454mI5pys5YaF5qC45bCx55u45b2T5LqO5piv5b2T5YmN55qE 56iz5a6aDQog54mI5YaF5qC444CCDQogDQotMi42LngueeeJiOacrOeUseKAnOeos+WumueJiOKA neWwj+e7hO+8iOmCruS7tuWcsOWdgDxzdGFibGVAa2VybmVsLm9yZz7vvInnu7TmiqTvvIzkuIDo iKzpmpTlkajlj5ENCisyLjYueC5554mI5pys55Sx4oCc56iz5a6a54mI4oCd5bCP57uE77yI6YKu 5Lu25Zyw5Z2APHN0YWJsZUB2Z2VyLmtlcm5lbC5vcmc+77yJ57u05oqk77yM5LiA6Iis6ZqU5ZGo 5Y+RDQog5biD5paw54mI5pys44CCDQogDQog5YaF5qC45rqQ56CB5Lit55qERG9jdW1lbnRhdGlv bi9zdGFibGVfa2VybmVsX3J1bGVzLnR4dOaWh+S7tuWFt+S9k+aPj+i/sOS6huWPr+iiq+eos+Wu mg0KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vemhfQ04vc3RhYmxlX2tlcm5lbF9ydWxlcy50 eHQgYi9Eb2N1bWVudGF0aW9uL3poX0NOL3N0YWJsZV9rZXJuZWxfcnVsZXMudHh0DQppbmRleCBi NWI5YjBhLi4yNmVhNWVkIDEwMDY0NA0KLS0tIGEvRG9jdW1lbnRhdGlvbi96aF9DTi9zdGFibGVf a2VybmVsX3J1bGVzLnR4dA0KKysrIGIvRG9jdW1lbnRhdGlvbi96aF9DTi9zdGFibGVfa2VybmVs X3J1bGVzLnR4dA0KQEAgLTQyLDcgKzQyLDcgQEAgRG9jdW1lbnRhdGlvbi9zdGFibGVfa2VybmVs X3J1bGVzLnR4dCDnmoTkuK3mlofnv7vor5ENCiANCiDlkJHnqLPlrprniYjku6PnoIHmoJHmj5Dk uqTooaXkuIHnmoTov4fnqIvvvJoNCiANCi0gIC0g5Zyo56Gu6K6k5LqG6KGl5LiB56ym5ZCI5Lul 5LiK55qE6KeE5YiZ5ZCO77yM5bCG6KGl5LiB5Y+R6YCB5Yiwc3RhYmxlQGtlcm5lbC5vcmfjgIIN CisgIC0g5Zyo56Gu6K6k5LqG6KGl5LiB56ym5ZCI5Lul5LiK55qE6KeE5YiZ5ZCO77yM5bCG6KGl 5LiB5Y+R6YCB5Yiwc3RhYmxlQHZnZXIua2VybmVsLm9yZ+OAgg0KICAgLSDlpoLmnpzooaXkuIHo oqvmjqXlj5fliLDpmJ/liJfph4zvvIzlj5HpgIHogIXkvJrmlLbliLDkuIDkuKpBQ0vlm57lpI3v vIzlpoLmnpzmsqHmnInooqvmjqXlj5fvvIzmlLYNCiAgICAg5Yiw55qE5pivTkFL5Zue5aSN44CC 5Zue5aSN6ZyA6KaB5Yeg5aSp55qE5pe26Ze077yM6L+Z5Y+W5Yaz5LqO5byA5Y+R6ICF55qE5pe2 6Ze05a6J5o6S44CCDQogICAtIOiiq+aOpeWPl+eahOihpeS4geS8muiiq+WKoOWIsOeos+WumueJ iOacrOmYn+WIl+mHjO+8jOetieW+heWFtuS7luW8gOWPkeiAheeahOWuoeafpeOAgg0KZGlmZiAt LWdpdCBhL01ha2VmaWxlIGIvTWFrZWZpbGUNCmluZGV4IDMxN2Q1ZWEuLjg3N2JiMTMgMTAwNjQ0 DQotLS0gYS9NYWtlZmlsZQ0KKysrIGIvTWFrZWZpbGUNCkBAIC0xLDcgKzEsNyBAQA0KIFZFUlNJ T04gPSAzDQogUEFUQ0hMRVZFTCA9IDINCi1TVUJMRVZFTCA9IDYwDQotRVhUUkFWRVJTSU9OID0N CitTVUJMRVZFTCA9IDYxDQorRVhUUkFWRVJTSU9OID0gLXJjMQ0KIE5BTUUgPSBTYWJlci10b290 aGVkIFNxdWlycmVsDQogDQogIyAqRE9DVU1FTlRBVElPTioNCmRpZmYgLS1naXQgYS9hcmNoL2Fy bS9pbmNsdWRlL2FzbS91YWNjZXNzLmggYi9hcmNoL2FybS9pbmNsdWRlL2FzbS91YWNjZXNzLmgN CmluZGV4IDI5MmMzZjguLjE4YTI4NTggMTAwNjQ0DQotLS0gYS9hcmNoL2FybS9pbmNsdWRlL2Fz bS91YWNjZXNzLmgNCisrKyBiL2FyY2gvYXJtL2luY2x1ZGUvYXNtL3VhY2Nlc3MuaA0KQEAgLTE1 OCw4ICsxNTgsOSBAQCBleHRlcm4gaW50IF9fcHV0X3VzZXJfOCh2b2lkICosIHVuc2lnbmVkIGxv bmcgbG9uZyk7DQogI2RlZmluZSBwdXRfdXNlcih4LHApCQkJCQkJCVwNCiAJKHsJCQkJCQkJCVwN CiAJCXVuc2lnbmVkIGxvbmcgX19saW1pdCA9IGN1cnJlbnRfdGhyZWFkX2luZm8oKS0+YWRkcl9s aW1pdCAtIDE7IFwNCisJCWNvbnN0IHR5cGVvZigqKHApKSBfX3VzZXIgKl9fdG1wX3AgPSAocCk7 CQlcDQogCQlyZWdpc3RlciBjb25zdCB0eXBlb2YoKihwKSkgX19yMiBhc20oInIyIikgPSAoeCk7 CVwNCi0JCXJlZ2lzdGVyIGNvbnN0IHR5cGVvZigqKHApKSBfX3VzZXIgKl9fcCBhc20oInIwIikg PSAocCk7XA0KKwkJcmVnaXN0ZXIgY29uc3QgdHlwZW9mKCoocCkpIF9fdXNlciAqX19wIGFzbSgi cjAiKSA9IF9fdG1wX3A7IFwNCiAJCXJlZ2lzdGVyIHVuc2lnbmVkIGxvbmcgX19sIGFzbSgicjEi KSA9IF9fbGltaXQ7CQlcDQogCQlyZWdpc3RlciBpbnQgX19lIGFzbSgicjAiKTsJCQkJXA0KIAkJ c3dpdGNoIChzaXplb2YoKihfX3ApKSkgewkJCQlcDQpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0va2Vy bmVsL2NyYXNoX2R1bXAuYyBiL2FyY2gvYXJtL2tlcm5lbC9jcmFzaF9kdW1wLmMNCmluZGV4IDkw YzUwZDQuLjVkMTI4NmQgMTAwNjQ0DQotLS0gYS9hcmNoL2FybS9rZXJuZWwvY3Jhc2hfZHVtcC5j DQorKysgYi9hcmNoL2FybS9rZXJuZWwvY3Jhc2hfZHVtcC5jDQpAQCAtMzksNyArMzksNyBAQCBz c2l6ZV90IGNvcHlfb2xkbWVtX3BhZ2UodW5zaWduZWQgbG9uZyBwZm4sIGNoYXIgKmJ1ZiwNCiAJ aWYgKCFjc2l6ZSkNCiAJCXJldHVybiAwOw0KIA0KLQl2YWRkciA9IGlvcmVtYXAocGZuIDw8IFBB R0VfU0hJRlQsIFBBR0VfU0laRSk7DQorCXZhZGRyID0gaW9yZW1hcChfX3Bmbl90b19waHlzKHBm biksIFBBR0VfU0laRSk7DQogCWlmICghdmFkZHIpDQogCQlyZXR1cm4gLUVOT01FTTsNCiANCmRp ZmYgLS1naXQgYS9hcmNoL2FybS9wbGF0LW14Yy9kZXZpY2VzL3BsYXRmb3JtLWlwdS1jb3JlLmMg Yi9hcmNoL2FybS9wbGF0LW14Yy9kZXZpY2VzL3BsYXRmb3JtLWlwdS1jb3JlLmMNCmluZGV4IDc5 ZDM0MGEuLjE1ZjM0MjEgMTAwNjQ0DQotLS0gYS9hcmNoL2FybS9wbGF0LW14Yy9kZXZpY2VzL3Bs YXRmb3JtLWlwdS1jb3JlLmMNCisrKyBiL2FyY2gvYXJtL3BsYXQtbXhjL2RldmljZXMvcGxhdGZv cm0taXB1LWNvcmUuYw0KQEAgLTc3LDcgKzc3LDcgQEAgc3RydWN0IHBsYXRmb3JtX2RldmljZSAq X19pbml0IGlteF9hbGxvY19teDNfY2FtZXJhKA0KIA0KIAlwZGV2ID0gcGxhdGZvcm1fZGV2aWNl X2FsbG9jKCJteDMtY2FtZXJhIiwgMCk7DQogCWlmICghcGRldikNCi0JCWdvdG8gZXJyOw0KKwkJ cmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7DQogDQogCXBkZXYtPmRldi5kbWFfbWFzayA9IGttYWxs b2Moc2l6ZW9mKCpwZGV2LT5kZXYuZG1hX21hc2spLCBHRlBfS0VSTkVMKTsNCiAJaWYgKCFwZGV2 LT5kZXYuZG1hX21hc2spDQpkaWZmIC0tZ2l0IGEvYXJjaC9taXBzL2luY2x1ZGUvYXNtL3RocmVh ZF9pbmZvLmggYi9hcmNoL21pcHMvaW5jbHVkZS9hc20vdGhyZWFkX2luZm8uaA0KaW5kZXggYWRk YTAzNi4uMzVkMWI0NyAxMDA2NDQNCi0tLSBhL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS90aHJlYWRf aW5mby5oDQorKysgYi9hcmNoL21pcHMvaW5jbHVkZS9hc20vdGhyZWFkX2luZm8uaA0KQEAgLTE0 OSw2ICsxNDksOCBAQCByZWdpc3RlciBzdHJ1Y3QgdGhyZWFkX2luZm8gKl9fY3VycmVudF90aHJl YWRfaW5mbyBfX2FzbV9fKCIkMjgiKTsNCiAjZGVmaW5lIF9USUZfRlBVQk9VTkQJCSgxPDxUSUZf RlBVQk9VTkQpDQogI2RlZmluZSBfVElGX0xPQURfV0FUQ0gJCSgxPDxUSUZfTE9BRF9XQVRDSCkN CiANCisjZGVmaW5lIF9USUZfV09SS19TWVNDQUxMX0VOVFJZCShfVElGX1NZU0NBTExfVFJBQ0Ug fCBfVElGX1NZU0NBTExfQVVESVQgfCBfVElGX1NFQ0NPTVApDQorDQogLyogd29yayB0byBkbyBp biBzeXNjYWxsX3RyYWNlX2xlYXZlKCkgKi8NCiAjZGVmaW5lIF9USUZfV09SS19TWVNDQUxMX0VY SVQJKF9USUZfU1lTQ0FMTF9UUkFDRSB8IF9USUZfU1lTQ0FMTF9BVURJVCkNCiANCmRpZmYgLS1n aXQgYS9hcmNoL21pcHMva2VybmVsL2lycS1tc2MwMS5jIGIvYXJjaC9taXBzL2tlcm5lbC9pcnEt bXNjMDEuYw0KaW5kZXggMTRhYzUyYy4uODg0ZGUzNCAxMDA2NDQNCi0tLSBhL2FyY2gvbWlwcy9r ZXJuZWwvaXJxLW1zYzAxLmMNCisrKyBiL2FyY2gvbWlwcy9rZXJuZWwvaXJxLW1zYzAxLmMNCkBA IC0xMzEsNyArMTMxLDcgQEAgdm9pZCBfX2luaXQgaW5pdF9tc2NfaXJxcyh1bnNpZ25lZCBsb25n IGljdWJhc2UsIHVuc2lnbmVkIGludCBpcnFiYXNlLCBtc2NfaXJxbWENCiANCiAJYm9hcmRfYmlu ZF9laWNfaW50ZXJydXB0ID0gJm1zY19iaW5kX2VpY19pbnRlcnJ1cHQ7DQogDQotCWZvciAoOyBu aXJxID49IDA7IG5pcnEtLSwgaW1wKyspIHsNCisJZm9yICg7IG5pcnEgPiAwOyBuaXJxLS0sIGlt cCsrKSB7DQogCQlpbnQgbiA9IGltcC0+aW1faXJxOw0KIA0KIAkJc3dpdGNoIChpbXAtPmltX3R5 cGUpIHsNCmRpZmYgLS1naXQgYS9hcmNoL21pcHMva2VybmVsL3NjYWxsMzItbzMyLlMgYi9hcmNo L21pcHMva2VybmVsL3NjYWxsMzItbzMyLlMNCmluZGV4IGE2MzJiYzEuLjFkMzliZWEgMTAwNjQ0 DQotLS0gYS9hcmNoL21pcHMva2VybmVsL3NjYWxsMzItbzMyLlMNCisrKyBiL2FyY2gvbWlwcy9r ZXJuZWwvc2NhbGwzMi1vMzIuUw0KQEAgLTUyLDcgKzUyLDcgQEAgTkVTVEVEKGhhbmRsZV9zeXMs IFBUX1NJWkUsIHNwKQ0KIA0KIHN0YWNrX2RvbmU6DQogCWx3CXQwLCBUSV9GTEFHUygkMjgpCSMg c3lzY2FsbCB0cmFjaW5nIGVuYWJsZWQ/DQotCWxpCXQxLCBfVElGX1NZU0NBTExfVFJBQ0UgfCBf VElGX1NZU0NBTExfQVVESVQNCisJbGkJdDEsIF9USUZfV09SS19TWVNDQUxMX0VOVFJZDQogCWFu ZAl0MCwgdDENCiAJYm5legl0MCwgc3lzY2FsbF90cmFjZV9lbnRyeQkjIC0+IHllcw0KIA0KZGlm ZiAtLWdpdCBhL2FyY2gvbWlwcy9rZXJuZWwvc2NhbGw2NC02NC5TIGIvYXJjaC9taXBzL2tlcm5l bC9zY2FsbDY0LTY0LlMNCmluZGV4IDNiNWE1ZTkuLjUzZTY1ZmYgMTAwNjQ0DQotLS0gYS9hcmNo L21pcHMva2VybmVsL3NjYWxsNjQtNjQuUw0KKysrIGIvYXJjaC9taXBzL2tlcm5lbC9zY2FsbDY0 LTY0LlMNCkBAIC01NCw3ICs1NCw3IEBAIE5FU1RFRChoYW5kbGVfc3lzNjQsIFBUX1NJWkUsIHNw KQ0KIA0KIAlzZAlhMywgUFRfUjI2KHNwKQkJIyBzYXZlIGEzIGZvciBzeXNjYWxsIHJlc3RhcnRp bmcNCiANCi0JbGkJdDEsIF9USUZfU1lTQ0FMTF9UUkFDRSB8IF9USUZfU1lTQ0FMTF9BVURJVA0K KwlsaQl0MSwgX1RJRl9XT1JLX1NZU0NBTExfRU5UUlkNCiAJTE9OR19MCXQwLCBUSV9GTEFHUygk MjgpCSMgc3lzY2FsbCB0cmFjaW5nIGVuYWJsZWQ/DQogCWFuZAl0MCwgdDEsIHQwDQogCWJuZXoJ dDAsIHN5c2NhbGxfdHJhY2VfZW50cnkNCmRpZmYgLS1naXQgYS9hcmNoL21pcHMva2VybmVsL3Nj YWxsNjQtbjMyLlMgYi9hcmNoL21pcHMva2VybmVsL3NjYWxsNjQtbjMyLlMNCmluZGV4IDZiZTZm NzAuLjU0NzZjZTQgMTAwNjQ0DQotLS0gYS9hcmNoL21pcHMva2VybmVsL3NjYWxsNjQtbjMyLlMN CisrKyBiL2FyY2gvbWlwcy9rZXJuZWwvc2NhbGw2NC1uMzIuUw0KQEAgLTUzLDcgKzUzLDcgQEAg TkVTVEVEKGhhbmRsZV9zeXNuMzIsIFBUX1NJWkUsIHNwKQ0KIA0KIAlzZAlhMywgUFRfUjI2KHNw KQkJIyBzYXZlIGEzIGZvciBzeXNjYWxsIHJlc3RhcnRpbmcNCiANCi0JbGkJdDEsIF9USUZfU1lT Q0FMTF9UUkFDRSB8IF9USUZfU1lTQ0FMTF9BVURJVA0KKwlsaQl0MSwgX1RJRl9XT1JLX1NZU0NB TExfRU5UUlkNCiAJTE9OR19MCXQwLCBUSV9GTEFHUygkMjgpCSMgc3lzY2FsbCB0cmFjaW5nIGVu YWJsZWQ/DQogCWFuZAl0MCwgdDEsIHQwDQogCWJuZXoJdDAsIG4zMl9zeXNjYWxsX3RyYWNlX2Vu dHJ5DQpkaWZmIC0tZ2l0IGEvYXJjaC9taXBzL2tlcm5lbC9zY2FsbDY0LW8zMi5TIGIvYXJjaC9t aXBzL2tlcm5lbC9zY2FsbDY0LW8zMi5TDQppbmRleCA1NDIyODU1Li5hNTYxNzViIDEwMDY0NA0K LS0tIGEvYXJjaC9taXBzL2tlcm5lbC9zY2FsbDY0LW8zMi5TDQorKysgYi9hcmNoL21pcHMva2Vy bmVsL3NjYWxsNjQtbzMyLlMNCkBAIC04MSw3ICs4MSw3IEBAIE5FU1RFRChoYW5kbGVfc3lzLCBQ VF9TSVpFLCBzcCkNCiAJUFRSCTRiLCBiYWRfc3RhY2sNCiAJLnByZXZpb3VzDQogDQotCWxpCXQx LCBfVElGX1NZU0NBTExfVFJBQ0UgfCBfVElGX1NZU0NBTExfQVVESVQNCisJbGkJdDEsIF9USUZf V09SS19TWVNDQUxMX0VOVFJZDQogCUxPTkdfTAl0MCwgVElfRkxBR1MoJDI4KQkjIHN5c2NhbGwg dHJhY2luZyBlbmFibGVkPw0KIAlhbmQJdDAsIHQxLCB0MA0KIAlibmV6CXQwLCB0cmFjZV9hX3N5 c2NhbGwNCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvTWFrZWZpbGUgYi9hcmNoL3Bvd2VycGMv TWFrZWZpbGUNCmluZGV4IDcwYmEwYzAuLjlhOTgwYjMgMTAwNjQ0DQotLS0gYS9hcmNoL3Bvd2Vy cGMvTWFrZWZpbGUNCisrKyBiL2FyY2gvcG93ZXJwYy9NYWtlZmlsZQ0KQEAgLTY5LDcgKzY5LDkg QEAgTERGTEFHU192bWxpbnV4CTo9ICQoTERGTEFHU192bWxpbnV4LXl5KQ0KIA0KIENGTEFHUy0k KENPTkZJR19QUEM2NCkJOj0gLW1taW5pbWFsLXRvYyAtbXRyYWNlYmFjaz1ubyAtbWNhbGwtYWl4 ZGVzYw0KIENGTEFHUy0kKENPTkZJR19QUEMzMikJOj0gLWZmaXhlZC1yMiAtbW11bHRpcGxlDQot S0JVSUxEX0NQUEZMQUdTCSs9IC1JYXJjaC8kKEFSQ0gpDQorYXNpbnN0ciA6PSAkKGNhbGwgYXMt aW5zdHIsbGlzIDkkKGNvbW1hKWZvb0BoaWdoLC1ESEFWRV9BU19BVEhJR0g9MSkNCisNCitLQlVJ TERfQ1BQRkxBR1MJKz0gLUlhcmNoLyQoQVJDSCkgJChhc2luc3RyKQ0KIEtCVUlMRF9BRkxBR1MJ Kz0gLUlhcmNoLyQoQVJDSCkNCiBLQlVJTERfQ0ZMQUdTCSs9IC1tc29mdC1mbG9hdCAtcGlwZSAt SWFyY2gvJChBUkNIKSAkKENGTEFHUy15KQ0KIENQUAkJPSAkKENDKSAtRSAkKEtCVUlMRF9DRkxB R1MpDQpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3BwY19hc20uaCBiL2Fy Y2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9wcGNfYXNtLmgNCmluZGV4IDM2OGY3MmYuLjBmM2E3NDAg MTAwNjQ0DQotLS0gYS9hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vcHBjX2FzbS5oDQorKysgYi9h cmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vcHBjX2FzbS5oDQpAQCAtMjkyLDExICsyOTIsMTYgQEAg bjoNCiAgKiAgICAgIGxkCXJZLEFERFJPRkYobmFtZSkoclgpDQogICovDQogI2lmZGVmIF9fcG93 ZXJwYzY0X18NCisjaWZkZWYgSEFWRV9BU19BVEhJR0gNCisjZGVmaW5lIF9fQVNfQVRISUdIIGhp Z2gNCisjZWxzZQ0KKyNkZWZpbmUgX19BU19BVEhJR0ggaA0KKyNlbmRpZg0KICNkZWZpbmUgTE9B RF9SRUdfSU1NRURJQVRFKHJlZyxleHByKQkJXA0KIAlsaXMgICAgIChyZWcpLChleHByKUBoaWdo ZXN0OwkJXA0KIAlvcmkgICAgIChyZWcpLChyZWcpLChleHByKUBoaWdoZXI7CVwNCiAJcmxkaWNy ICAocmVnKSwocmVnKSwzMiwzMTsJCVwNCi0Jb3JpcyAgICAocmVnKSwocmVnKSwoZXhwcilAaDsJ CVwNCisJb3JpcyAgICByZWcscmVnLChleHByKUBfX0FTX0FUSElHSDsJXA0KIAlvcmkgICAgIChy ZWcpLChyZWcpLChleHByKUBsOw0KIA0KICNkZWZpbmUgTE9BRF9SRUdfQUREUihyZWcsbmFtZSkJ CQlcDQpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2tlcm5lbC9sZWdhY3lfc2VyaWFsLmMgYi9h cmNoL3Bvd2VycGMva2VybmVsL2xlZ2FjeV9zZXJpYWwuYw0KaW5kZXggYzdiNWFmZS4uYzc3MTU5 ZCAxMDA2NDQNCi0tLSBhL2FyY2gvcG93ZXJwYy9rZXJuZWwvbGVnYWN5X3NlcmlhbC5jDQorKysg Yi9hcmNoL3Bvd2VycGMva2VybmVsL2xlZ2FjeV9zZXJpYWwuYw0KQEAgLTQ4LDYgKzQ4LDkgQEAg c3RhdGljIHN0cnVjdCBfX2luaXRkYXRhIG9mX2RldmljZV9pZCBsZWdhY3lfc2VyaWFsX3BhcmVu dHNbXSA9IHsNCiBzdGF0aWMgdW5zaWduZWQgaW50IGxlZ2FjeV9zZXJpYWxfY291bnQ7DQogc3Rh dGljIGludCBsZWdhY3lfc2VyaWFsX2NvbnNvbGUgPSAtMTsNCiANCitzdGF0aWMgY29uc3QgdXBm X3QgbGVnYWN5X3BvcnRfZmxhZ3MgPSBVUEZfQk9PVF9BVVRPQ09ORiB8IFVQRl9TS0lQX1RFU1Qg fA0KKwlVUEZfU0hBUkVfSVJRIHwgVVBGX0ZJWEVEX1BPUlQ7DQorDQogc3RhdGljIHVuc2lnbmVk IGludCB0c2lfc2VyaWFsX2luKHN0cnVjdCB1YXJ0X3BvcnQgKnAsIGludCBvZmZzZXQpDQogew0K IAl1bnNpZ25lZCBpbnQgdG1wOw0KQEAgLTE1Myw4ICsxNTYsNiBAQCBzdGF0aWMgaW50IF9faW5p dCBhZGRfbGVnYWN5X3NvY19wb3J0KHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAsDQogew0KIAl1NjQg YWRkcjsNCiAJY29uc3QgdTMyICphZGRycDsNCi0JdXBmX3QgZmxhZ3MgPSBVUEZfQk9PVF9BVVRP Q09ORiB8IFVQRl9TS0lQX1RFU1QgfCBVUEZfU0hBUkVfSVJRDQotCQl8IFVQRl9GSVhFRF9QT1JU Ow0KIAlzdHJ1Y3QgZGV2aWNlX25vZGUgKnRzaSA9IG9mX2dldF9wYXJlbnQobnApOw0KIA0KIAkv KiBXZSBvbmx5IHN1cHBvcnQgcG9ydHMgdGhhdCBoYXZlIGEgY2xvY2sgZnJlcXVlbmN5IHByb3Bl cmx5DQpAQCAtMTg1LDkgKzE4NiwxMSBAQCBzdGF0aWMgaW50IF9faW5pdCBhZGRfbGVnYWN5X3Nv Y19wb3J0KHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAsDQogCSAqIElPIHBvcnQgdmFsdWUuIEl0IHdp bGwgYmUgZml4ZWQgdXAgbGF0ZXIgYWxvbmcgd2l0aCB0aGUgaXJxDQogCSAqLw0KIAlpZiAodHNp ICYmICFzdHJjbXAodHNpLT50eXBlLCAidHNpLWJyaWRnZSIpKQ0KLQkJcmV0dXJuIGFkZF9sZWdh Y3lfcG9ydChucCwgLTEsIFVQSU9fVFNJLCBhZGRyLCBhZGRyLCBOT19JUlEsIGZsYWdzLCAwKTsN CisJCXJldHVybiBhZGRfbGVnYWN5X3BvcnQobnAsIC0xLCBVUElPX1RTSSwgYWRkciwgYWRkciwN CisJCQkJICAgICAgIE5PX0lSUSwgbGVnYWN5X3BvcnRfZmxhZ3MsIDApOw0KIAllbHNlDQotCQly ZXR1cm4gYWRkX2xlZ2FjeV9wb3J0KG5wLCAtMSwgVVBJT19NRU0sIGFkZHIsIGFkZHIsIE5PX0lS USwgZmxhZ3MsIDApOw0KKwkJcmV0dXJuIGFkZF9sZWdhY3lfcG9ydChucCwgLTEsIFVQSU9fTUVN LCBhZGRyLCBhZGRyLA0KKwkJCQkgICAgICAgTk9fSVJRLCBsZWdhY3lfcG9ydF9mbGFncywgMCk7 DQogfQ0KIA0KIHN0YXRpYyBpbnQgX19pbml0IGFkZF9sZWdhY3lfaXNhX3BvcnQoc3RydWN0IGRl dmljZV9ub2RlICpucCwNCkBAIC0yMjgsNyArMjMxLDcgQEAgc3RhdGljIGludCBfX2luaXQgYWRk X2xlZ2FjeV9pc2FfcG9ydChzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wLA0KIA0KIAkvKiBBZGQgcG9y dCwgaXJxIHdpbGwgYmUgZGVhbHQgd2l0aCBsYXRlciAqLw0KIAlyZXR1cm4gYWRkX2xlZ2FjeV9w b3J0KG5wLCBpbmRleCwgVVBJT19QT1JULCBiZTMyX3RvX2NwdShyZWdbMV0pLCB0YWRkciwNCi0J CQkgICAgICAgTk9fSVJRLCBVUEZfQk9PVF9BVVRPQ09ORiwgMCk7DQorCQkJICAgICAgIE5PX0lS USwgbGVnYWN5X3BvcnRfZmxhZ3MsIDApOw0KIA0KIH0NCiANCkBAIC0zMDEsNyArMzA0LDcgQEAg c3RhdGljIGludCBfX2luaXQgYWRkX2xlZ2FjeV9wY2lfcG9ydChzdHJ1Y3QgZGV2aWNlX25vZGUg Km5wLA0KIAkgKiBJTyBwb3J0IHZhbHVlLiBJdCB3aWxsIGJlIGZpeGVkIHVwIGxhdGVyIGFsb25n IHdpdGggdGhlIGlycQ0KIAkgKi8NCiAJcmV0dXJuIGFkZF9sZWdhY3lfcG9ydChucCwgaW5kZXgs IGlvdHlwZSwgYmFzZSwgYWRkciwgTk9fSVJRLA0KLQkJCSAgICAgICBVUEZfQk9PVF9BVVRPQ09O RiwgbnAgIT0gcGNpX2Rldik7DQorCQkJICAgICAgIGxlZ2FjeV9wb3J0X2ZsYWdzLCBucCAhPSBw Y2lfZGV2KTsNCiB9DQogI2VuZGlmDQogDQpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2tlcm5l bC9zZXR1cC1jb21tb24uYyBiL2FyY2gvcG93ZXJwYy9rZXJuZWwvc2V0dXAtY29tbW9uLmMNCmlu ZGV4IDc3YmI3N2QuLjgyMjg4ZTkgMTAwNjQ0DQotLS0gYS9hcmNoL3Bvd2VycGMva2VybmVsL3Nl dHVwLWNvbW1vbi5jDQorKysgYi9hcmNoL3Bvd2VycGMva2VybmVsL3NldHVwLWNvbW1vbi5jDQpA QCAtNDQ5LDcgKzQ0OSw3IEBAIHZvaWQgX19pbml0IHNtcF9zZXR1cF9jcHVfbWFwcyh2b2lkKQ0K IAkJZm9yIChqID0gMDsgaiA8IG50aHJlYWRzICYmIGNwdSA8IG5yX2NwdV9pZHM7IGorKykgew0K IAkJCURCRygiICAgIHRocmVhZCAlZCAtPiBjcHUgJWQgKGhhcmQgaWQgJWQpXG4iLA0KIAkJCSAg ICBqLCBjcHUsIGludHNlcnZbal0pOw0KLQkJCXNldF9jcHVfcHJlc2VudChjcHUsIHRydWUpOw0K KwkJCXNldF9jcHVfcHJlc2VudChjcHUsIG9mX2RldmljZV9pc19hdmFpbGFibGUoZG4pKTsNCiAJ CQlzZXRfaGFyZF9zbXBfcHJvY2Vzc29yX2lkKGNwdSwgaW50c2VydltqXSk7DQogCQkJc2V0X2Nw dV9wb3NzaWJsZShjcHUsIHRydWUpOw0KIAkJCWNwdSsrOw0KZGlmZiAtLWdpdCBhL2FyY2gvczM5 MC9pbmNsdWRlL2FzbS9sb3djb3JlLmggYi9hcmNoL3MzOTAvaW5jbHVkZS9hc20vbG93Y29yZS5o DQppbmRleCA5ZTEzYzdkLi40NTQ1NjRiIDEwMDY0NA0KLS0tIGEvYXJjaC9zMzkwL2luY2x1ZGUv YXNtL2xvd2NvcmUuaA0KKysrIGIvYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2xvd2NvcmUuaA0KQEAg LTE0MCw5ICsxNDAsOSBAQCBzdHJ1Y3QgX2xvd2NvcmUgew0KIAlfX3U4CXBhZF8weDAyZThbMHgw MzAwLTB4MDJlOF07CS8qIDB4MDJlOCAqLw0KIA0KIAkvKiBJbnRlcnJ1cHQgcmVzcG9uc2UgYmxv Y2sgKi8NCi0JX191OAlpcmJbNjRdOwkJCS8qIDB4MDMwMCAqLw0KKwlfX3U4CWlyYls5Nl07CQkJ LyogMHgwMzAwICovDQogDQotCV9fdTgJcGFkXzB4MDM0MFsweDBlMDAtMHgwMzQwXTsJLyogMHgw MzQwICovDQorCV9fdTgJcGFkXzB4MDM2MFsweDBlMDAtMHgwMzYwXTsJLyogMHgwMzYwICovDQog DQogCS8qDQogCSAqIDB4ZTAwIGNvbnRhaW5zIHRoZSBhZGRyZXNzIG9mIHRoZSBJUEwgUGFyYW1l dGVyIEluZm9ybWF0aW9uDQpAQCAtMjc0LDEyICsyNzQsMTMgQEAgc3RydWN0IF9sb3djb3JlIHsN CiAJX191NjQJY21mX2hwcDsJCQkvKiAweDAzNzggKi8NCiANCiAJLyogSW50ZXJydXB0IHJlc3Bv bnNlIGJsb2NrLiAqLw0KLQlfX3U4CWlyYls2NF07CQkJLyogMHgwMzgwICovDQorCV9fdTgJaXJi Wzk2XTsJCQkvKiAweDAzODAgKi8NCisJX191OAlwYWRfMHgwM2UwWzB4MDQwMC0weDAzZTBdOwkv KiAweDAzZTAgKi8NCiANCiAJLyogUGVyIGNwdSBwcmltYXJ5IHNwYWNlIGFjY2VzcyBsaXN0ICov DQotCV9fdTMyCXBhc3RlWzE2XTsJCQkvKiAweDAzYzAgKi8NCisJX191MzIJcGFzdGVbMTZdOwkJ CS8qIDB4MDQwMCAqLw0KIA0KLQlfX3U4CXBhZF8weDA0MDBbMHgwZTAwLTB4MDQwMF07CS8qIDB4 MDQwMCAqLw0KKwlfX3U4CXBhZF8weDA0NDBbMHgwZTAwLTB4MDQ0MF07CS8qIDB4MDQ0MCAqLw0K IA0KIAkvKg0KIAkgKiAweGUwMCBjb250YWlucyB0aGUgYWRkcmVzcyBvZiB0aGUgSVBMIFBhcmFt ZXRlciBJbmZvcm1hdGlvbg0KZGlmZiAtLWdpdCBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL3B0cmFj ZS5oIGIvYXJjaC94ODYvaW5jbHVkZS9hc20vcHRyYWNlLmgNCmluZGV4IDNiOTZmZDQuLjA1ODFh ODUgMTAwNjQ0DQotLS0gYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wdHJhY2UuaA0KKysrIGIvYXJj aC94ODYvaW5jbHVkZS9hc20vcHRyYWNlLmgNCkBAIC0yODcsNiArMjg3LDIyIEBAIHN0YXRpYyBp bmxpbmUgdW5zaWduZWQgbG9uZyByZWdzX2dldF9rZXJuZWxfc3RhY2tfbnRoKHN0cnVjdCBwdF9y ZWdzICpyZWdzLA0KIA0KICNkZWZpbmUgQVJDSF9IQVNfVVNFUl9TSU5HTEVfU1RFUF9JTkZPDQog DQorLyoNCisgKiBXaGVuIGhpdHRpbmcgcHRyYWNlX3N0b3AoKSwgd2UgY2Fubm90IHJldHVybiB1 c2luZyBTWVNSRVQgYmVjYXVzZQ0KKyAqIHRoYXQgZG9lcyBub3QgcmVzdG9yZSB0aGUgZnVsbCBD UFUgc3RhdGUsIG9ubHkgYSBtaW5pbWFsIHNldC4gIFRoZQ0KKyAqIHB0cmFjZXIgY2FuIGNoYW5n ZSBhcmJpdHJhcnkgcmVnaXN0ZXIgdmFsdWVzLCB3aGljaCBpcyB1c3VhbGx5IG9rYXkNCisgKiBi ZWNhdXNlIHRoZSB1c3VhbCBwdHJhY2Ugc3RvcHMgcnVuIG9mZiB0aGUgc2lnbmFsIGRlbGl2ZXJ5 IHBhdGggd2hpY2gNCisgKiBmb3JjZXMgSVJFVDsgaG93ZXZlciwgcHRyYWNlX2V2ZW50KCkgc3Rv cHMgaGFwcGVuIGluIGFyYml0cmFyeSBwbGFjZXMNCisgKiBpbiB0aGUga2VybmVsIGFuZCBkb24n dCBmb3JjZSBJUkVUIHBhdGguDQorICoNCisgKiBTbyBmb3JjZSBJUkVUIHBhdGggYWZ0ZXIgYSBw dHJhY2Ugc3RvcC4NCisgKi8NCisjZGVmaW5lIGFyY2hfcHRyYWNlX3N0b3BfbmVlZGVkKGNvZGUs IGluZm8pCQkJCVwNCisoewkJCQkJCQkJCVwNCisJc2V0X3RocmVhZF9mbGFnKFRJRl9OT1RJRllf UkVTVU1FKTsJCQkJXA0KKwlmYWxzZTsJCQkJCQkJCVwNCit9KQ0KKw0KIHN0cnVjdCB1c2VyX2Rl c2M7DQogZXh0ZXJuIGludCBkb19nZXRfdGhyZWFkX2FyZWEoc3RydWN0IHRhc2tfc3RydWN0ICpw LCBpbnQgaWR4LA0KIAkJCSAgICAgIHN0cnVjdCB1c2VyX2Rlc2MgX191c2VyICppbmZvKTsNCmRp ZmYgLS1naXQgYS9hcmNoL3g4Ni9rZXJuZWwvZW50cnlfMzIuUyBiL2FyY2gveDg2L2tlcm5lbC9l bnRyeV8zMi5TDQppbmRleCBkMmQ0ODhiOC4uZGIwOTBmNiAxMDA2NDQNCi0tLSBhL2FyY2gveDg2 L2tlcm5lbC9lbnRyeV8zMi5TDQorKysgYi9hcmNoL3g4Ni9rZXJuZWwvZW50cnlfMzIuUw0KQEAg LTQyNyw5ICs0MjcsMTAgQEAgc3lzZW50ZXJfcGFzdF9lc3A6DQogCWpueiBzeXNlbnRlcl9hdWRp dA0KIHN5c2VudGVyX2RvX2NhbGw6DQogCWNtcGwgJChucl9zeXNjYWxscyksICVlYXgNCi0JamFl IHN5c2NhbGxfYmFkc3lzDQorCWphZSBzeXNlbnRlcl9iYWRzeXMNCiAJY2FsbCAqc3lzX2NhbGxf dGFibGUoLCVlYXgsNCkNCiAJbW92bCAlZWF4LFBUX0VBWCglZXNwKQ0KK3N5c2VudGVyX2FmdGVy X2NhbGw6DQogCUxPQ0tERVBfU1lTX0VYSVQNCiAJRElTQUJMRV9JTlRFUlJVUFRTKENMQlJfQU5Z KQ0KIAlUUkFDRV9JUlFTX09GRg0KQEAgLTY4MSw3ICs2ODIsMTIgQEAgRU5EKHN5c2NhbGxfZmF1 bHQpDQogDQogc3lzY2FsbF9iYWRzeXM6DQogCW1vdmwgJC1FTk9TWVMsUFRfRUFYKCVlc3ApDQot CWptcCByZXN1bWVfdXNlcnNwYWNlDQorCWptcCBzeXNjYWxsX2V4aXQNCitFTkQoc3lzY2FsbF9i YWRzeXMpDQorDQorc3lzZW50ZXJfYmFkc3lzOg0KKwltb3ZsICQtRU5PU1lTLFBUX0VBWCglZXNw KQ0KKwlqbXAgc3lzZW50ZXJfYWZ0ZXJfY2FsbA0KIEVORChzeXNjYWxsX2JhZHN5cykNCiAJQ0ZJ X0VORFBST0MNCiAvKg0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvYWNwaS9idXMuYyBiL2RyaXZlcnMv YWNwaS9idXMuYw0KaW5kZXggZjMyNDQyOS4uM2EwZTkyYSAxMDA2NDQNCi0tLSBhL2RyaXZlcnMv YWNwaS9idXMuYw0KKysrIGIvZHJpdmVycy9hY3BpL2J1cy5jDQpAQCAtNTcsNiArNTcsMTIgQEAg RVhQT1JUX1NZTUJPTChhY3BpX3Jvb3RfZGlyKTsNCiANCiANCiAjaWZkZWYgQ09ORklHX1g4Ng0K KyNpZmRlZiBDT05GSUdfQUNQSV9DVVNUT01fRFNEVA0KK3N0YXRpYyBpbmxpbmUgaW50IHNldF9j b3B5X2RzZHQoY29uc3Qgc3RydWN0IGRtaV9zeXN0ZW1faWQgKmlkKQ0KK3sNCisJcmV0dXJuIDA7 DQorfQ0KKyNlbHNlDQogc3RhdGljIGludCBzZXRfY29weV9kc2R0KGNvbnN0IHN0cnVjdCBkbWlf c3lzdGVtX2lkICppZCkNCiB7DQogCXByaW50ayhLRVJOX05PVElDRSAiJXMgZGV0ZWN0ZWQgLSAi DQpAQCAtNjQsNiArNzAsNyBAQCBzdGF0aWMgaW50IHNldF9jb3B5X2RzZHQoY29uc3Qgc3RydWN0 IGRtaV9zeXN0ZW1faWQgKmlkKQ0KIAlhY3BpX2dibF9jb3B5X2RzZHRfbG9jYWxseSA9IDE7DQog CXJldHVybiAwOw0KIH0NCisjZW5kaWYNCiANCiBzdGF0aWMgc3RydWN0IGRtaV9zeXN0ZW1faWQg ZHNkdF9kbWlfdGFibGVbXSBfX2luaXRkYXRhID0gew0KIAkvKg0KZGlmZiAtLWdpdCBhL2RyaXZl cnMvYXRhL2FoY2kuYyBiL2RyaXZlcnMvYXRhL2FoY2kuYw0KaW5kZXggMGZlZmZjMy4uNDRhNDQz NCAxMDA2NDQNCi0tLSBhL2RyaXZlcnMvYXRhL2FoY2kuYw0KKysrIGIvZHJpdmVycy9hdGEvYWhj aS5jDQpAQCAtNDUyLDEwICs0NTIsMTQgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNl X2lkIGFoY2lfcGNpX3RibFtdID0gew0KIAkgIC5kcml2ZXJfZGF0YSA9IGJvYXJkX2FoY2lfeWVz X2ZicyB9LAkJCS8qIDg4c2U5MTcyICovDQogCXsgUENJX0RFVklDRShQQ0lfVkVORE9SX0lEX01B UlZFTExfRVhULCAweDkxOTIpLA0KIAkgIC5kcml2ZXJfZGF0YSA9IGJvYXJkX2FoY2lfeWVzX2Zi cyB9LAkJCS8qIDg4c2U5MTcyIG9uIHNvbWUgR2lnYWJ5dGUgKi8NCisJeyBQQ0lfREVWSUNFKFBD SV9WRU5ET1JfSURfTUFSVkVMTF9FWFQsIDB4OTFhMCksDQorCSAgLmRyaXZlcl9kYXRhID0gYm9h cmRfYWhjaV95ZXNfZmJzIH0sDQogCXsgUENJX0RFVklDRShQQ0lfVkVORE9SX0lEX01BUlZFTExf RVhULCAweDkxYTMpLA0KIAkgIC5kcml2ZXJfZGF0YSA9IGJvYXJkX2FoY2lfeWVzX2ZicyB9LA0K IAl7IFBDSV9ERVZJQ0UoUENJX1ZFTkRPUl9JRF9NQVJWRUxMX0VYVCwgMHg5MjMwKSwNCiAJICAu ZHJpdmVyX2RhdGEgPSBib2FyZF9haGNpX3llc19mYnMgfSwNCisJeyBQQ0lfREVWSUNFKFBDSV9W RU5ET1JfSURfVFRJLCAweDA2NDIpLA0KKwkgIC5kcml2ZXJfZGF0YSA9IGJvYXJkX2FoY2lfeWVz X2ZicyB9LA0KIA0KIAkvKiBQcm9taXNlICovDQogCXsgUENJX1ZERVZJQ0UoUFJPTUlTRSwgMHgz ZjIwKSwgYm9hcmRfYWhjaSB9LAkvKiBQREM0MjgxOSAqLw0KZGlmZiAtLWdpdCBhL2RyaXZlcnMv Ymx1ZXRvb3RoL2hjaV9sZGlzYy5jIGIvZHJpdmVycy9ibHVldG9vdGgvaGNpX2xkaXNjLmMNCmlu ZGV4IDhmM2Q2ZGIuLjA4YmJjNDggMTAwNjQ0DQotLS0gYS9kcml2ZXJzL2JsdWV0b290aC9oY2lf bGRpc2MuYw0KKysrIGIvZHJpdmVycy9ibHVldG9vdGgvaGNpX2xkaXNjLmMNCkBAIC0xMjAsMTAg KzEyMCw2IEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IHNrX2J1ZmYgKmhjaV91YXJ0X2RlcXVldWUo c3RydWN0IGhjaV91YXJ0ICpodSkNCiANCiBpbnQgaGNpX3VhcnRfdHhfd2FrZXVwKHN0cnVjdCBo Y2lfdWFydCAqaHUpDQogew0KLQlzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5ID0gaHUtPnR0eTsNCi0J c3RydWN0IGhjaV9kZXYgKmhkZXYgPSBodS0+aGRldjsNCi0Jc3RydWN0IHNrX2J1ZmYgKnNrYjsN Ci0NCiAJaWYgKHRlc3RfYW5kX3NldF9iaXQoSENJX1VBUlRfU0VORElORywgJmh1LT50eF9zdGF0 ZSkpIHsNCiAJCXNldF9iaXQoSENJX1VBUlRfVFhfV0FLRVVQLCAmaHUtPnR4X3N0YXRlKTsNCiAJ CXJldHVybiAwOw0KQEAgLTEzMSw2ICsxMjcsMjIgQEAgaW50IGhjaV91YXJ0X3R4X3dha2V1cChz dHJ1Y3QgaGNpX3VhcnQgKmh1KQ0KIA0KIAlCVF9EQkcoIiIpOw0KIA0KKwlzY2hlZHVsZV93b3Jr KCZodS0+d3JpdGVfd29yayk7DQorDQorCXJldHVybiAwOw0KK30NCisNCitzdGF0aWMgdm9pZCBo Y2lfdWFydF93cml0ZV93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykNCit7DQorCXN0cnVj dCBoY2lfdWFydCAqaHUgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IGhjaV91YXJ0LCB3cml0 ZV93b3JrKTsNCisJc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSA9IGh1LT50dHk7DQorCXN0cnVjdCBo Y2lfZGV2ICpoZGV2ID0gaHUtPmhkZXY7DQorCXN0cnVjdCBza19idWZmICpza2I7DQorDQorCS8q IFJFVklTSVQ6IHNob3VsZCB3ZSBjb3BlIHdpdGggYmFkIHNrYnMgb3IgLT53cml0ZSgpIHJldHVy bmluZw0KKwkgKiBhbmQgZXJyb3IgdmFsdWUgPw0KKwkgKi8NCisNCiByZXN0YXJ0Og0KIAljbGVh cl9iaXQoSENJX1VBUlRfVFhfV0FLRVVQLCAmaHUtPnR4X3N0YXRlKTsNCiANCkBAIC0xNTUsNyAr MTY3LDYgQEAgcmVzdGFydDoNCiAJCWdvdG8gcmVzdGFydDsNCiANCiAJY2xlYXJfYml0KEhDSV9V QVJUX1NFTkRJTkcsICZodS0+dHhfc3RhdGUpOw0KLQlyZXR1cm4gMDsNCiB9DQogDQogLyogLS0t LS0tLSBJbnRlcmZhY2UgdG8gSENJIGxheWVyIC0tLS0tLSAqLw0KQEAgLTI3NCw2ICsyODUsOCBA QCBzdGF0aWMgaW50IGhjaV91YXJ0X3R0eV9vcGVuKHN0cnVjdCB0dHlfc3RydWN0ICp0dHkpDQog CWh1LT50dHkgPSB0dHk7DQogCXR0eS0+cmVjZWl2ZV9yb29tID0gNjU1MzY7DQogDQorCUlOSVRf V09SSygmaHUtPndyaXRlX3dvcmssIGhjaV91YXJ0X3dyaXRlX3dvcmspOw0KKw0KIAlzcGluX2xv Y2tfaW5pdCgmaHUtPnJ4X2xvY2spOw0KIA0KIAkvKiBGbHVzaCBhbnkgcGVuZGluZyBjaGFyYWN0 ZXJzIGluIHRoZSBkcml2ZXIgYW5kIGxpbmUgZGlzY2lwbGluZS4gKi8NCkBAIC0zMDgsNiArMzIx LDggQEAgc3RhdGljIHZvaWQgaGNpX3VhcnRfdHR5X2Nsb3NlKHN0cnVjdCB0dHlfc3RydWN0ICp0 dHkpDQogCQlpZiAoaGRldikNCiAJCQloY2lfdWFydF9jbG9zZShoZGV2KTsNCiANCisJCWNhbmNl bF93b3JrX3N5bmMoJmh1LT53cml0ZV93b3JrKTsNCisNCiAJCWlmICh0ZXN0X2FuZF9jbGVhcl9i aXQoSENJX1VBUlRfUFJPVE9fU0VULCAmaHUtPmZsYWdzKSkgew0KIAkJCWlmIChoZGV2KSB7DQog CQkJCWhjaV91bnJlZ2lzdGVyX2RldihoZGV2KTsNCmRpZmYgLS1naXQgYS9kcml2ZXJzL2JsdWV0 b290aC9oY2lfdWFydC5oIGIvZHJpdmVycy9ibHVldG9vdGgvaGNpX3VhcnQuaA0KaW5kZXggOTlm YjM1Mi4uZmY0MDQwMCAxMDA2NDQNCi0tLSBhL2RyaXZlcnMvYmx1ZXRvb3RoL2hjaV91YXJ0LmgN CisrKyBiL2RyaXZlcnMvYmx1ZXRvb3RoL2hjaV91YXJ0LmgNCkBAIC02NCw2ICs2NCw4IEBAIHN0 cnVjdCBoY2lfdWFydCB7DQogCXVuc2lnbmVkIGxvbmcJCWZsYWdzOw0KIAl1bnNpZ25lZCBsb25n CQloZGV2X2ZsYWdzOw0KIA0KKwlzdHJ1Y3Qgd29ya19zdHJ1Y3QJd3JpdGVfd29yazsNCisNCiAJ c3RydWN0IGhjaV91YXJ0X3Byb3RvCSpwcm90bzsNCiAJdm9pZAkJCSpwcml2Ow0KIA0KZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZHJ2LmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2Ry di5jDQppbmRleCBhY2ZlNTY3Li4wNzMxZDQzIDEwMDY0NA0KLS0tIGEvZHJpdmVycy9ncHUvZHJt L2RybV9kcnYuYw0KKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9kcnYuYw0KQEAgLTQ1Niw4ICs0 NTYsOSBAQCBsb25nIGRybV9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCwNCiAJCQkJcmV0Y29kZSA9 IC1FRkFVTFQ7DQogCQkJCWdvdG8gZXJyX2kxOw0KIAkJCX0NCi0JCX0gZWxzZQ0KKwkJfSBlbHNl IGlmIChjbWQgJiBJT0NfT1VUKSB7DQogCQkJbWVtc2V0KGtkYXRhLCAwLCB1c2l6ZSk7DQorCQl9 DQogDQogCQlpZiAoaW9jdGwtPmZsYWdzICYgRFJNX1VOTE9DS0VEKQ0KIAkJCXJldGNvZGUgPSBm dW5jKGRldiwga2RhdGEsIGZpbGVfcHJpdik7DQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW1fZXhlY2J1ZmZlci5jDQppbmRleCBiMWJiNzM0Li5hMGI2OWFlIDEwMDY0NA0KLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jDQorKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbV9leGVjYnVmZmVyLmMNCkBAIC0yODcsMTQgKzI4NywxNCBAQCBp OTE1X2dlbV9leGVjYnVmZmVyX3JlbG9jYXRlX2VudHJ5KHN0cnVjdCBkcm1faTkxNV9nZW1fb2Jq ZWN0ICpvYmosDQogCSAqIGV4ZWNfb2JqZWN0IGxpc3QsIHNvIGl0IHNob3VsZCBoYXZlIGEgR1RU IHNwYWNlIGJvdW5kIGJ5IG5vdy4NCiAJICovDQogCWlmICh1bmxpa2VseSh0YXJnZXRfb2Zmc2V0 ID09IDApKSB7DQotCQlEUk1fRVJST1IoIk5vIEdUVCBzcGFjZSBmb3VuZCBmb3Igb2JqZWN0ICVk XG4iLA0KKwkJRFJNX0RFQlVHKCJObyBHVFQgc3BhY2UgZm91bmQgZm9yIG9iamVjdCAlZFxuIiwN CiAJCQkgIHJlbG9jLT50YXJnZXRfaGFuZGxlKTsNCiAJCXJldHVybiByZXQ7DQogCX0NCiANCiAJ LyogVmFsaWRhdGUgdGhhdCB0aGUgdGFyZ2V0IGlzIGluIGEgdmFsaWQgci93IEdQVSBkb21haW4g Ki8NCiAJaWYgKHVubGlrZWx5KHJlbG9jLT53cml0ZV9kb21haW4gJiAocmVsb2MtPndyaXRlX2Rv bWFpbiAtIDEpKSkgew0KLQkJRFJNX0VSUk9SKCJyZWxvYyB3aXRoIG11bHRpcGxlIHdyaXRlIGRv bWFpbnM6ICINCisJCURSTV9ERUJVRygicmVsb2Mgd2l0aCBtdWx0aXBsZSB3cml0ZSBkb21haW5z OiAiDQogCQkJICAib2JqICVwIHRhcmdldCAlZCBvZmZzZXQgJWQgIg0KIAkJCSAgInJlYWQgJTA4 eCB3cml0ZSAlMDh4IiwNCiAJCQkgIG9iaiwgcmVsb2MtPnRhcmdldF9oYW5kbGUsDQpAQCAtMzA0 LDcgKzMwNCw3IEBAIGk5MTVfZ2VtX2V4ZWNidWZmZXJfcmVsb2NhdGVfZW50cnkoc3RydWN0IGRy bV9pOTE1X2dlbV9vYmplY3QgKm9iaiwNCiAJCXJldHVybiByZXQ7DQogCX0NCiAJaWYgKHVubGlr ZWx5KChyZWxvYy0+d3JpdGVfZG9tYWluIHwgcmVsb2MtPnJlYWRfZG9tYWlucykgJiBJOTE1X0dF TV9ET01BSU5fQ1BVKSkgew0KLQkJRFJNX0VSUk9SKCJyZWxvYyB3aXRoIHJlYWQvd3JpdGUgQ1BV IGRvbWFpbnM6ICINCisJCURSTV9ERUJVRygicmVsb2Mgd2l0aCByZWFkL3dyaXRlIENQVSBkb21h aW5zOiAiDQogCQkJICAib2JqICVwIHRhcmdldCAlZCBvZmZzZXQgJWQgIg0KIAkJCSAgInJlYWQg JTA4eCB3cml0ZSAlMDh4IiwNCiAJCQkgIG9iaiwgcmVsb2MtPnRhcmdldF9oYW5kbGUsDQpAQCAt MzE1LDcgKzMxNSw3IEBAIGk5MTVfZ2VtX2V4ZWNidWZmZXJfcmVsb2NhdGVfZW50cnkoc3RydWN0 IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwNCiAJfQ0KIAlpZiAodW5saWtlbHkocmVsb2MtPndy aXRlX2RvbWFpbiAmJiB0YXJnZXRfb2JqLT5wZW5kaW5nX3dyaXRlX2RvbWFpbiAmJg0KIAkJICAg ICByZWxvYy0+d3JpdGVfZG9tYWluICE9IHRhcmdldF9vYmotPnBlbmRpbmdfd3JpdGVfZG9tYWlu KSkgew0KLQkJRFJNX0VSUk9SKCJXcml0ZSBkb21haW4gY29uZmxpY3Q6ICINCisJCURSTV9ERUJV RygiV3JpdGUgZG9tYWluIGNvbmZsaWN0OiAiDQogCQkJICAib2JqICVwIHRhcmdldCAlZCBvZmZz ZXQgJWQgIg0KIAkJCSAgIm5ldyAlMDh4IG9sZCAlMDh4XG4iLA0KIAkJCSAgb2JqLCByZWxvYy0+ dGFyZ2V0X2hhbmRsZSwNCkBAIC0zMzYsNyArMzM2LDcgQEAgaTkxNV9nZW1fZXhlY2J1ZmZlcl9y ZWxvY2F0ZV9lbnRyeShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLA0KIA0KIAkvKiBD aGVjayB0aGF0IHRoZSByZWxvY2F0aW9uIGFkZHJlc3MgaXMgdmFsaWQuLi4gKi8NCiAJaWYgKHVu bGlrZWx5KHJlbG9jLT5vZmZzZXQgPiBvYmotPmJhc2Uuc2l6ZSAtIDQpKSB7DQotCQlEUk1fRVJS T1IoIlJlbG9jYXRpb24gYmV5b25kIG9iamVjdCBib3VuZHM6ICINCisJCURSTV9ERUJVRygiUmVs b2NhdGlvbiBiZXlvbmQgb2JqZWN0IGJvdW5kczogIg0KIAkJCSAgIm9iaiAlcCB0YXJnZXQgJWQg b2Zmc2V0ICVkIHNpemUgJWQuXG4iLA0KIAkJCSAgb2JqLCByZWxvYy0+dGFyZ2V0X2hhbmRsZSwN CiAJCQkgIChpbnQpIHJlbG9jLT5vZmZzZXQsDQpAQCAtMzQ0LDcgKzM0NCw3IEBAIGk5MTVfZ2Vt X2V4ZWNidWZmZXJfcmVsb2NhdGVfZW50cnkoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9i aiwNCiAJCXJldHVybiByZXQ7DQogCX0NCiAJaWYgKHVubGlrZWx5KHJlbG9jLT5vZmZzZXQgJiAz KSkgew0KLQkJRFJNX0VSUk9SKCJSZWxvY2F0aW9uIG5vdCA0LWJ5dGUgYWxpZ25lZDogIg0KKwkJ RFJNX0RFQlVHKCJSZWxvY2F0aW9uIG5vdCA0LWJ5dGUgYWxpZ25lZDogIg0KIAkJCSAgIm9iaiAl cCB0YXJnZXQgJWQgb2Zmc2V0ICVkLlxuIiwNCiAJCQkgIG9iaiwgcmVsb2MtPnRhcmdldF9oYW5k bGUsDQogCQkJICAoaW50KSByZWxvYy0+b2Zmc2V0KTsNCkBAIC02NzksOSArNjc5LDkgQEAgaTkx NV9nZW1fZXhlY2J1ZmZlcl9yZWxvY2F0ZV9zbG93KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsDQog CQkgKiByZWxvY2F0aW9ucyB3ZXJlIHZhbGlkLg0KIAkJICovDQogCQlmb3IgKGogPSAwOyBqIDwg ZXhlY1tpXS5yZWxvY2F0aW9uX2NvdW50OyBqKyspIHsNCi0JCQlpZiAoY29weV90b191c2VyKCZ1 c2VyX3JlbG9jc1tqXS5wcmVzdW1lZF9vZmZzZXQsDQotCQkJCQkgJmludmFsaWRfb2Zmc2V0LA0K LQkJCQkJIHNpemVvZihpbnZhbGlkX29mZnNldCkpKSB7DQorCQkJaWYgKF9fY29weV90b191c2Vy KCZ1c2VyX3JlbG9jc1tqXS5wcmVzdW1lZF9vZmZzZXQsDQorCQkJCQkgICAmaW52YWxpZF9vZmZz ZXQsDQorCQkJCQkgICBzaXplb2YoaW52YWxpZF9vZmZzZXQpKSkgew0KIAkJCQlyZXQgPSAtRUZB VUxUOw0KIAkJCQltdXRleF9sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7DQogCQkJCWdvdG8gZXJy Ow0KQEAgLTcwNCw3ICs3MDQsNyBAQCBpOTE1X2dlbV9leGVjYnVmZmVyX3JlbG9jYXRlX3Nsb3co c3RydWN0IGRybV9kZXZpY2UgKmRldiwNCiAJCW9iaiA9IHRvX2ludGVsX2JvKGRybV9nZW1fb2Jq ZWN0X2xvb2t1cChkZXYsIGZpbGUsDQogCQkJCQkJCWV4ZWNbaV0uaGFuZGxlKSk7DQogCQlpZiAo Jm9iai0+YmFzZSA9PSBOVUxMKSB7DQotCQkJRFJNX0VSUk9SKCJJbnZhbGlkIG9iamVjdCBoYW5k bGUgJWQgYXQgaW5kZXggJWRcbiIsDQorCQkJRFJNX0RFQlVHKCJJbnZhbGlkIG9iamVjdCBoYW5k bGUgJWQgYXQgaW5kZXggJWRcbiIsDQogCQkJCSAgIGV4ZWNbaV0uaGFuZGxlLCBpKTsNCiAJCQly ZXQgPSAtRU5PRU5UOw0KIAkJCWdvdG8gZXJyOw0KQEAgLTEwMTUsNyArMTAxNSw3IEBAIGk5MTVf Z2VtX2RvX2V4ZWNidWZmZXIoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwNCiAJ aW50IHJldCwgbW9kZSwgaTsNCiANCiAJaWYgKCFpOTE1X2dlbV9jaGVja19leGVjYnVmZmVyKGFy Z3MpKSB7DQotCQlEUk1fRVJST1IoImV4ZWNidWYgd2l0aCBpbnZhbGlkIG9mZnNldC9sZW5ndGhc biIpOw0KKwkJRFJNX0RFQlVHKCJleGVjYnVmIHdpdGggaW52YWxpZCBvZmZzZXQvbGVuZ3RoXG4i KTsNCiAJCXJldHVybiAtRUlOVkFMOw0KIAl9DQogDQpAQCAtMTAzMCwyMCArMTAzMCwyMCBAQCBp OTE1X2dlbV9kb19leGVjYnVmZmVyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEs DQogCQlicmVhazsNCiAJY2FzZSBJOTE1X0VYRUNfQlNEOg0KIAkJaWYgKCFIQVNfQlNEKGRldikp IHsNCi0JCQlEUk1fRVJST1IoImV4ZWNidWYgd2l0aCBpbnZhbGlkIHJpbmcgKEJTRClcbiIpOw0K KwkJCURSTV9ERUJVRygiZXhlY2J1ZiB3aXRoIGludmFsaWQgcmluZyAoQlNEKVxuIik7DQogCQkJ cmV0dXJuIC1FSU5WQUw7DQogCQl9DQogCQlyaW5nID0gJmRldl9wcml2LT5yaW5nW1ZDU107DQog CQlicmVhazsNCiAJY2FzZSBJOTE1X0VYRUNfQkxUOg0KIAkJaWYgKCFIQVNfQkxUKGRldikpIHsN Ci0JCQlEUk1fRVJST1IoImV4ZWNidWYgd2l0aCBpbnZhbGlkIHJpbmcgKEJMVClcbiIpOw0KKwkJ CURSTV9ERUJVRygiZXhlY2J1ZiB3aXRoIGludmFsaWQgcmluZyAoQkxUKVxuIik7DQogCQkJcmV0 dXJuIC1FSU5WQUw7DQogCQl9DQogCQlyaW5nID0gJmRldl9wcml2LT5yaW5nW0JDU107DQogCQli cmVhazsNCiAJZGVmYXVsdDoNCi0JCURSTV9FUlJPUigiZXhlY2J1ZiB3aXRoIHVua25vd24gcmlu ZzogJWRcbiIsDQorCQlEUk1fREVCVUcoImV4ZWNidWYgd2l0aCB1bmtub3duIHJpbmc6ICVkXG4i LA0KIAkJCSAgKGludCkoYXJncy0+ZmxhZ3MgJiBJOTE1X0VYRUNfUklOR19NQVNLKSk7DQogCQly ZXR1cm4gLUVJTlZBTDsNCiAJfQ0KQEAgLTEwNjksMTggKzEwNjksMTggQEAgaTkxNV9nZW1fZG9f ZXhlY2J1ZmZlcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLA0KIAkJfQ0KIAkJ YnJlYWs7DQogCWRlZmF1bHQ6DQotCQlEUk1fRVJST1IoImV4ZWNidWYgd2l0aCB1bmtub3duIGNv bnN0YW50czogJWRcbiIsIG1vZGUpOw0KKwkJRFJNX0RFQlVHKCJleGVjYnVmIHdpdGggdW5rbm93 biBjb25zdGFudHM6ICVkXG4iLCBtb2RlKTsNCiAJCXJldHVybiAtRUlOVkFMOw0KIAl9DQogDQog CWlmIChhcmdzLT5idWZmZXJfY291bnQgPCAxKSB7DQotCQlEUk1fRVJST1IoImV4ZWNidWYgd2l0 aCAlZCBidWZmZXJzXG4iLCBhcmdzLT5idWZmZXJfY291bnQpOw0KKwkJRFJNX0RFQlVHKCJleGVj YnVmIHdpdGggJWQgYnVmZmVyc1xuIiwgYXJncy0+YnVmZmVyX2NvdW50KTsNCiAJCXJldHVybiAt RUlOVkFMOw0KIAl9DQogDQogCWlmIChhcmdzLT5udW1fY2xpcHJlY3RzICE9IDApIHsNCiAJCWlm IChyaW5nICE9ICZkZXZfcHJpdi0+cmluZ1tSQ1NdKSB7DQotCQkJRFJNX0VSUk9SKCJjbGlwIHJl Y3RhbmdsZXMgYXJlIG9ubHkgdmFsaWQgd2l0aCB0aGUgcmVuZGVyIHJpbmdcbiIpOw0KKwkJCURS TV9ERUJVRygiY2xpcCByZWN0YW5nbGVzIGFyZSBvbmx5IHZhbGlkIHdpdGggdGhlIHJlbmRlciBy aW5nXG4iKTsNCiAJCQlyZXR1cm4gLUVJTlZBTDsNCiAJCX0NCiANCkBAIC0xMTMwLDcgKzExMzAs NyBAQCBpOTE1X2dlbV9kb19leGVjYnVmZmVyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQg KmRhdGEsDQogCQlvYmogPSB0b19pbnRlbF9ibyhkcm1fZ2VtX29iamVjdF9sb29rdXAoZGV2LCBm aWxlLA0KIAkJCQkJCQlleGVjW2ldLmhhbmRsZSkpOw0KIAkJaWYgKCZvYmotPmJhc2UgPT0gTlVM TCkgew0KLQkJCURSTV9FUlJPUigiSW52YWxpZCBvYmplY3QgaGFuZGxlICVkIGF0IGluZGV4ICVk XG4iLA0KKwkJCURSTV9ERUJVRygiSW52YWxpZCBvYmplY3QgaGFuZGxlICVkIGF0IGluZGV4ICVk XG4iLA0KIAkJCQkgICBleGVjW2ldLmhhbmRsZSwgaSk7DQogCQkJLyogcHJldmVudCBlcnJvciBw YXRoIGZyb20gcmVhZGluZyB1bmluaXRpYWxpemVkIGRhdGEgKi8NCiAJCQlyZXQgPSAtRU5PRU5U Ow0KQEAgLTExMzgsNyArMTEzOCw3IEBAIGk5MTVfZ2VtX2RvX2V4ZWNidWZmZXIoc3RydWN0IGRy bV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwNCiAJCX0NCiANCiAJCWlmICghbGlzdF9lbXB0eSgm b2JqLT5leGVjX2xpc3QpKSB7DQotCQkJRFJNX0VSUk9SKCJPYmplY3QgJXAgW2hhbmRsZSAlZCwg aW5kZXggJWRdIGFwcGVhcnMgbW9yZSB0aGFuIG9uY2UgaW4gb2JqZWN0IGxpc3RcbiIsDQorCQkJ RFJNX0RFQlVHKCJPYmplY3QgJXAgW2hhbmRsZSAlZCwgaW5kZXggJWRdIGFwcGVhcnMgbW9yZSB0 aGFuIG9uY2UgaW4gb2JqZWN0IGxpc3RcbiIsDQogCQkJCSAgIG9iaiwgZXhlY1tpXS5oYW5kbGUs IGkpOw0KIAkJCXJldCA9IC1FSU5WQUw7DQogCQkJZ290byBlcnI7DQpAQCAtMTE3Niw3ICsxMTc2 LDcgQEAgaTkxNV9nZW1fZG9fZXhlY2J1ZmZlcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lk ICpkYXRhLA0KIA0KIAkvKiBTZXQgdGhlIHBlbmRpbmcgcmVhZCBkb21haW5zIGZvciB0aGUgYmF0 Y2ggYnVmZmVyIHRvIENPTU1BTkQgKi8NCiAJaWYgKGJhdGNoX29iai0+YmFzZS5wZW5kaW5nX3dy aXRlX2RvbWFpbikgew0KLQkJRFJNX0VSUk9SKCJBdHRlbXB0aW5nIHRvIHVzZSBzZWxmLW1vZGlm eWluZyBiYXRjaCBidWZmZXJcbiIpOw0KKwkJRFJNX0RFQlVHKCJBdHRlbXB0aW5nIHRvIHVzZSBz ZWxmLW1vZGlmeWluZyBiYXRjaCBidWZmZXJcbiIpOw0KIAkJcmV0ID0gLUVJTlZBTDsNCiAJCWdv dG8gZXJyOw0KIAl9DQpAQCAtMTI3NSw3ICsxMjc1LDcgQEAgaTkxNV9nZW1fZXhlY2J1ZmZlcihz dHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLA0KIAlpbnQgcmV0LCBpOw0KIA0KIAlp ZiAoYXJncy0+YnVmZmVyX2NvdW50IDwgMSkgew0KLQkJRFJNX0VSUk9SKCJleGVjYnVmIHdpdGgg JWQgYnVmZmVyc1xuIiwgYXJncy0+YnVmZmVyX2NvdW50KTsNCisJCURSTV9ERUJVRygiZXhlY2J1 ZiB3aXRoICVkIGJ1ZmZlcnNcbiIsIGFyZ3MtPmJ1ZmZlcl9jb3VudCk7DQogCQlyZXR1cm4gLUVJ TlZBTDsNCiAJfQ0KIA0KQEAgLTEyODMsNyArMTI4Myw3IEBAIGk5MTVfZ2VtX2V4ZWNidWZmZXIo c3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwNCiAJZXhlY19saXN0ID0gZHJtX21h bGxvY19hYihzaXplb2YoKmV4ZWNfbGlzdCksIGFyZ3MtPmJ1ZmZlcl9jb3VudCk7DQogCWV4ZWMy X2xpc3QgPSBkcm1fbWFsbG9jX2FiKHNpemVvZigqZXhlYzJfbGlzdCksIGFyZ3MtPmJ1ZmZlcl9j b3VudCk7DQogCWlmIChleGVjX2xpc3QgPT0gTlVMTCB8fCBleGVjMl9saXN0ID09IE5VTEwpIHsN Ci0JCURSTV9FUlJPUigiRmFpbGVkIHRvIGFsbG9jYXRlIGV4ZWMgbGlzdCBmb3IgJWQgYnVmZmVy c1xuIiwNCisJCURSTV9ERUJVRygiRmFpbGVkIHRvIGFsbG9jYXRlIGV4ZWMgbGlzdCBmb3IgJWQg YnVmZmVyc1xuIiwNCiAJCQkgIGFyZ3MtPmJ1ZmZlcl9jb3VudCk7DQogCQlkcm1fZnJlZV9sYXJn ZShleGVjX2xpc3QpOw0KIAkJZHJtX2ZyZWVfbGFyZ2UoZXhlYzJfbGlzdCk7DQpAQCAtMTI5NCw3 ICsxMjk0LDcgQEAgaTkxNV9nZW1fZXhlY2J1ZmZlcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2 b2lkICpkYXRhLA0KIAkJCSAgICAgKHVpbnRwdHJfdCkgYXJncy0+YnVmZmVyc19wdHIsDQogCQkJ ICAgICBzaXplb2YoKmV4ZWNfbGlzdCkgKiBhcmdzLT5idWZmZXJfY291bnQpOw0KIAlpZiAocmV0 ICE9IDApIHsNCi0JCURSTV9FUlJPUigiY29weSAlZCBleGVjIGVudHJpZXMgZmFpbGVkICVkXG4i LA0KKwkJRFJNX0RFQlVHKCJjb3B5ICVkIGV4ZWMgZW50cmllcyBmYWlsZWQgJWRcbiIsDQogCQkJ ICBhcmdzLT5idWZmZXJfY291bnQsIHJldCk7DQogCQlkcm1fZnJlZV9sYXJnZShleGVjX2xpc3Qp Ow0KIAkJZHJtX2ZyZWVfbGFyZ2UoZXhlYzJfbGlzdCk7DQpAQCAtMTMyNSwxOSArMTMyNSwyMSBA QCBpOTE1X2dlbV9leGVjYnVmZmVyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEs DQogDQogCXJldCA9IGk5MTVfZ2VtX2RvX2V4ZWNidWZmZXIoZGV2LCBkYXRhLCBmaWxlLCAmZXhl YzIsIGV4ZWMyX2xpc3QpOw0KIAlpZiAoIXJldCkgew0KKwkJc3RydWN0IGRybV9pOTE1X2dlbV9l eGVjX29iamVjdCBfX3VzZXIgKnVzZXJfZXhlY19saXN0ID0NCisJCQkodm9pZCBfX3VzZXIgKiko dWludHB0cl90KWFyZ3MtPmJ1ZmZlcnNfcHRyOw0KKw0KIAkJLyogQ29weSB0aGUgbmV3IGJ1ZmZl ciBvZmZzZXRzIGJhY2sgdG8gdGhlIHVzZXIncyBleGVjIGxpc3QuICovDQotCQlmb3IgKGkgPSAw OyBpIDwgYXJncy0+YnVmZmVyX2NvdW50OyBpKyspDQotCQkJZXhlY19saXN0W2ldLm9mZnNldCA9 IGV4ZWMyX2xpc3RbaV0ub2Zmc2V0Ow0KLQkJLyogLi4uIGFuZCBiYWNrIG91dCB0byB1c2Vyc3Bh Y2UgKi8NCi0JCXJldCA9IGNvcHlfdG9fdXNlcigoc3RydWN0IGRybV9pOTE1X3JlbG9jYXRpb25f ZW50cnkgX191c2VyICopDQotCQkJCSAgICh1aW50cHRyX3QpIGFyZ3MtPmJ1ZmZlcnNfcHRyLA0K LQkJCQkgICBleGVjX2xpc3QsDQotCQkJCSAgIHNpemVvZigqZXhlY19saXN0KSAqIGFyZ3MtPmJ1 ZmZlcl9jb3VudCk7DQotCQlpZiAocmV0KSB7DQotCQkJcmV0ID0gLUVGQVVMVDsNCi0JCQlEUk1f RVJST1IoImZhaWxlZCB0byBjb3B5ICVkIGV4ZWMgZW50cmllcyAiDQotCQkJCSAgImJhY2sgdG8g dXNlciAoJWQpXG4iLA0KLQkJCQkgIGFyZ3MtPmJ1ZmZlcl9jb3VudCwgcmV0KTsNCisJCWZvciAo aSA9IDA7IGkgPCBhcmdzLT5idWZmZXJfY291bnQ7IGkrKykgew0KKwkJCXJldCA9IF9fY29weV90 b191c2VyKCZ1c2VyX2V4ZWNfbGlzdFtpXS5vZmZzZXQsDQorCQkJCQkgICAgICZleGVjMl9saXN0 W2ldLm9mZnNldCwNCisJCQkJCSAgICAgc2l6ZW9mKHVzZXJfZXhlY19saXN0W2ldLm9mZnNldCkp Ow0KKwkJCWlmIChyZXQpIHsNCisJCQkJcmV0ID0gLUVGQVVMVDsNCisJCQkJRFJNX0RFQlVHKCJm YWlsZWQgdG8gY29weSAlZCBleGVjIGVudHJpZXMgIg0KKwkJCQkJICAiYmFjayB0byB1c2VyICgl ZClcbiIsDQorCQkJCQkgIGFyZ3MtPmJ1ZmZlcl9jb3VudCwgcmV0KTsNCisJCQkJYnJlYWs7DQor CQkJfQ0KIAkJfQ0KIAl9DQogDQpAQCAtMTM1Niw3ICsxMzU4LDcgQEAgaTkxNV9nZW1fZXhlY2J1 ZmZlcjIoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwNCiANCiAJaWYgKGFyZ3Mt PmJ1ZmZlcl9jb3VudCA8IDEgfHwNCiAJICAgIGFyZ3MtPmJ1ZmZlcl9jb3VudCA+IFVJTlRfTUFY IC8gc2l6ZW9mKCpleGVjMl9saXN0KSkgew0KLQkJRFJNX0VSUk9SKCJleGVjYnVmMiB3aXRoICVk IGJ1ZmZlcnNcbiIsIGFyZ3MtPmJ1ZmZlcl9jb3VudCk7DQorCQlEUk1fREVCVUcoImV4ZWNidWYy IHdpdGggJWQgYnVmZmVyc1xuIiwgYXJncy0+YnVmZmVyX2NvdW50KTsNCiAJCXJldHVybiAtRUlO VkFMOw0KIAl9DQogDQpAQCAtMTM2Niw3ICsxMzY4LDcgQEAgaTkxNV9nZW1fZXhlY2J1ZmZlcjIo c3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwNCiAJCWV4ZWMyX2xpc3QgPSBkcm1f bWFsbG9jX2FiKHNpemVvZigqZXhlYzJfbGlzdCksDQogCQkJCQkgICBhcmdzLT5idWZmZXJfY291 bnQpOw0KIAlpZiAoZXhlYzJfbGlzdCA9PSBOVUxMKSB7DQotCQlEUk1fRVJST1IoIkZhaWxlZCB0 byBhbGxvY2F0ZSBleGVjIGxpc3QgZm9yICVkIGJ1ZmZlcnNcbiIsDQorCQlEUk1fREVCVUcoIkZh aWxlZCB0byBhbGxvY2F0ZSBleGVjIGxpc3QgZm9yICVkIGJ1ZmZlcnNcbiIsDQogCQkJICBhcmdz LT5idWZmZXJfY291bnQpOw0KIAkJcmV0dXJuIC1FTk9NRU07DQogCX0NCkBAIC0xMzc1LDcgKzEz NzcsNyBAQCBpOTE1X2dlbV9leGVjYnVmZmVyMihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lk ICpkYXRhLA0KIAkJCSAgICAgKHVpbnRwdHJfdCkgYXJncy0+YnVmZmVyc19wdHIsDQogCQkJICAg ICBzaXplb2YoKmV4ZWMyX2xpc3QpICogYXJncy0+YnVmZmVyX2NvdW50KTsNCiAJaWYgKHJldCAh PSAwKSB7DQotCQlEUk1fRVJST1IoImNvcHkgJWQgZXhlYyBlbnRyaWVzIGZhaWxlZCAlZFxuIiwN CisJCURSTV9ERUJVRygiY29weSAlZCBleGVjIGVudHJpZXMgZmFpbGVkICVkXG4iLA0KIAkJCSAg YXJncy0+YnVmZmVyX2NvdW50LCByZXQpOw0KIAkJZHJtX2ZyZWVfbGFyZ2UoZXhlYzJfbGlzdCk7 DQogCQlyZXR1cm4gLUVGQVVMVDsNCkBAIC0xMzg0LDE1ICsxMzg2LDIxIEBAIGk5MTVfZ2VtX2V4 ZWNidWZmZXIyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsDQogCXJldCA9IGk5 MTVfZ2VtX2RvX2V4ZWNidWZmZXIoZGV2LCBkYXRhLCBmaWxlLCBhcmdzLCBleGVjMl9saXN0KTsN CiAJaWYgKCFyZXQpIHsNCiAJCS8qIENvcHkgdGhlIG5ldyBidWZmZXIgb2Zmc2V0cyBiYWNrIHRv IHRoZSB1c2VyJ3MgZXhlYyBsaXN0LiAqLw0KLQkJcmV0ID0gY29weV90b191c2VyKChzdHJ1Y3Qg ZHJtX2k5MTVfcmVsb2NhdGlvbl9lbnRyeSBfX3VzZXIgKikNCi0JCQkJICAgKHVpbnRwdHJfdCkg YXJncy0+YnVmZmVyc19wdHIsDQotCQkJCSAgIGV4ZWMyX2xpc3QsDQotCQkJCSAgIHNpemVvZigq ZXhlYzJfbGlzdCkgKiBhcmdzLT5idWZmZXJfY291bnQpOw0KLQkJaWYgKHJldCkgew0KLQkJCXJl dCA9IC1FRkFVTFQ7DQotCQkJRFJNX0VSUk9SKCJmYWlsZWQgdG8gY29weSAlZCBleGVjIGVudHJp ZXMgIg0KLQkJCQkgICJiYWNrIHRvIHVzZXIgKCVkKVxuIiwNCi0JCQkJICBhcmdzLT5idWZmZXJf Y291bnQsIHJldCk7DQorCQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNfb2JqZWN0MiBfX3VzZXIg KnVzZXJfZXhlY19saXN0ID0NCisJCQkodm9pZCBfX3VzZXIgKikodWludHB0cl90KWFyZ3MtPmJ1 ZmZlcnNfcHRyOw0KKwkJaW50IGk7DQorDQorCQlmb3IgKGkgPSAwOyBpIDwgYXJncy0+YnVmZmVy X2NvdW50OyBpKyspIHsNCisJCQlyZXQgPSBfX2NvcHlfdG9fdXNlcigmdXNlcl9leGVjX2xpc3Rb aV0ub2Zmc2V0LA0KKwkJCQkJICAgICAmZXhlYzJfbGlzdFtpXS5vZmZzZXQsDQorCQkJCQkgICAg IHNpemVvZih1c2VyX2V4ZWNfbGlzdFtpXS5vZmZzZXQpKTsNCisJCQlpZiAocmV0KSB7DQorCQkJ CXJldCA9IC1FRkFVTFQ7DQorCQkJCURSTV9ERUJVRygiZmFpbGVkIHRvIGNvcHkgJWQgZXhlYyBl bnRyaWVzICINCisJCQkJCSAgImJhY2sgdG8gdXNlclxuIiwNCisJCQkJCSAgYXJncy0+YnVmZmVy X2NvdW50KTsNCisJCQkJYnJlYWs7DQorCQkJfQ0KIAkJfQ0KIAl9DQogDQpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9hdG9tYmlvc19jcnRjLmMgYi9kcml2ZXJzL2dwdS9kcm0v cmFkZW9uL2F0b21iaW9zX2NydGMuYw0KaW5kZXggY2Q5OGMwNi4uOTI3ZDE3MCAxMDA2NDQNCi0t LSBhL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vYXRvbWJpb3NfY3J0Yy5jDQorKysgYi9kcml2ZXJz L2dwdS9kcm0vcmFkZW9uL2F0b21iaW9zX2NydGMuYw0KQEAgLTgzMCwxNCArODMwLDE2IEBAIHN0 YXRpYyB2b2lkIGF0b21iaW9zX2NydGNfcHJvZ3JhbV9wbGwoc3RydWN0IGRybV9jcnRjICpjcnRj LA0KIAkJCWFyZ3MudjUudWNNaXNjSW5mbyA9IDA7IC8qIEhETUkgZGVwdGgsIGV0Yy4gKi8NCiAJ CQlpZiAoc3NfZW5hYmxlZCAmJiAoc3MtPnR5cGUgJiBBVE9NX0VYVEVSTkFMX1NTX01BU0spKQ0K IAkJCQlhcmdzLnY1LnVjTWlzY0luZm8gfD0gUElYRUxfQ0xPQ0tfVjVfTUlTQ19SRUZfRElWX1NS QzsNCi0JCQlzd2l0Y2ggKGJwYykgew0KLQkJCWNhc2UgODoNCi0JCQlkZWZhdWx0Og0KLQkJCQlh cmdzLnY1LnVjTWlzY0luZm8gfD0gUElYRUxfQ0xPQ0tfVjVfTUlTQ19IRE1JXzI0QlBQOw0KLQkJ CQlicmVhazsNCi0JCQljYXNlIDEwOg0KLQkJCQlhcmdzLnY1LnVjTWlzY0luZm8gfD0gUElYRUxf Q0xPQ0tfVjVfTUlTQ19IRE1JXzMwQlBQOw0KLQkJCQlicmVhazsNCisJCQlpZiAoZW5jb2Rlcl9t b2RlID09IEFUT01fRU5DT0RFUl9NT0RFX0hETUkpIHsNCisJCQkJc3dpdGNoIChicGMpIHsNCisJ CQkJY2FzZSA4Og0KKwkJCQlkZWZhdWx0Og0KKwkJCQkJYXJncy52NS51Y01pc2NJbmZvIHw9IFBJ WEVMX0NMT0NLX1Y1X01JU0NfSERNSV8yNEJQUDsNCisJCQkJCWJyZWFrOw0KKwkJCQljYXNlIDEw Og0KKwkJCQkJYXJncy52NS51Y01pc2NJbmZvIHw9IFBJWEVMX0NMT0NLX1Y1X01JU0NfSERNSV8z MEJQUDsNCisJCQkJCWJyZWFrOw0KKwkJCQl9DQogCQkJfQ0KIAkJCWFyZ3MudjUudWNUcmFuc21p dHRlcklEID0gZW5jb2Rlcl9pZDsNCiAJCQlhcmdzLnY1LnVjRW5jb2Rlck1vZGUgPSBlbmNvZGVy X21vZGU7DQpAQCAtODUyLDIwICs4NTQsMjIgQEAgc3RhdGljIHZvaWQgYXRvbWJpb3NfY3J0Y19w cm9ncmFtX3BsbChzdHJ1Y3QgZHJtX2NydGMgKmNydGMsDQogCQkJYXJncy52Ni51Y01pc2NJbmZv ID0gMDsgLyogSERNSSBkZXB0aCwgZXRjLiAqLw0KIAkJCWlmIChzc19lbmFibGVkICYmIChzcy0+ dHlwZSAmIEFUT01fRVhURVJOQUxfU1NfTUFTSykpDQogCQkJCWFyZ3MudjYudWNNaXNjSW5mbyB8 PSBQSVhFTF9DTE9DS19WNl9NSVNDX1JFRl9ESVZfU1JDOw0KLQkJCXN3aXRjaCAoYnBjKSB7DQot CQkJY2FzZSA4Og0KLQkJCWRlZmF1bHQ6DQotCQkJCWFyZ3MudjYudWNNaXNjSW5mbyB8PSBQSVhF TF9DTE9DS19WNl9NSVNDX0hETUlfMjRCUFA7DQotCQkJCWJyZWFrOw0KLQkJCWNhc2UgMTA6DQot CQkJCWFyZ3MudjYudWNNaXNjSW5mbyB8PSBQSVhFTF9DTE9DS19WNl9NSVNDX0hETUlfMzBCUFA7 DQotCQkJCWJyZWFrOw0KLQkJCWNhc2UgMTI6DQotCQkJCWFyZ3MudjYudWNNaXNjSW5mbyB8PSBQ SVhFTF9DTE9DS19WNl9NSVNDX0hETUlfMzZCUFA7DQotCQkJCWJyZWFrOw0KLQkJCWNhc2UgMTY6 DQotCQkJCWFyZ3MudjYudWNNaXNjSW5mbyB8PSBQSVhFTF9DTE9DS19WNl9NSVNDX0hETUlfNDhC UFA7DQotCQkJCWJyZWFrOw0KKwkJCWlmIChlbmNvZGVyX21vZGUgPT0gQVRPTV9FTkNPREVSX01P REVfSERNSSkgew0KKwkJCQlzd2l0Y2ggKGJwYykgew0KKwkJCQljYXNlIDg6DQorCQkJCWRlZmF1 bHQ6DQorCQkJCQlhcmdzLnY2LnVjTWlzY0luZm8gfD0gUElYRUxfQ0xPQ0tfVjZfTUlTQ19IRE1J XzI0QlBQOw0KKwkJCQkJYnJlYWs7DQorCQkJCWNhc2UgMTA6DQorCQkJCQlhcmdzLnY2LnVjTWlz Y0luZm8gfD0gUElYRUxfQ0xPQ0tfVjZfTUlTQ19IRE1JXzMwQlBQOw0KKwkJCQkJYnJlYWs7DQor CQkJCWNhc2UgMTI6DQorCQkJCQlhcmdzLnY2LnVjTWlzY0luZm8gfD0gUElYRUxfQ0xPQ0tfVjZf TUlTQ19IRE1JXzM2QlBQOw0KKwkJCQkJYnJlYWs7DQorCQkJCWNhc2UgMTY6DQorCQkJCQlhcmdz LnY2LnVjTWlzY0luZm8gfD0gUElYRUxfQ0xPQ0tfVjZfTUlTQ19IRE1JXzQ4QlBQOw0KKwkJCQkJ YnJlYWs7DQorCQkJCX0NCiAJCQl9DQogCQkJYXJncy52Ni51Y1RyYW5zbWl0dGVySUQgPSBlbmNv ZGVyX2lkOw0KIAkJCWFyZ3MudjYudWNFbmNvZGVyTW9kZSA9IGVuY29kZXJfbW9kZTsNCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL2F0b21iaW9zX2VuY29kZXJzLmMgYi9kcml2 ZXJzL2dwdS9kcm0vcmFkZW9uL2F0b21iaW9zX2VuY29kZXJzLmMNCmluZGV4IDQ3NWEyNzUuLjI4 NmYxZmEgMTAwNjQ0DQotLS0gYS9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL2F0b21iaW9zX2VuY29k ZXJzLmMNCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vYXRvbWJpb3NfZW5jb2RlcnMuYw0K QEAgLTE2MjYsOCArMTYyNiwxMSBAQCBhdG9tYmlvc19zZXRfZW5jb2Rlcl9jcnRjX3NvdXJjZShz dHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIpDQogCQkJCQlhcmdzLnYyLnVjRW5jb2RlTW9kZSA9 IEFUT01fRU5DT0RFUl9NT0RFX0NSVDsNCiAJCQkJZWxzZQ0KIAkJCQkJYXJncy52Mi51Y0VuY29k ZU1vZGUgPSBhdG9tYmlvc19nZXRfZW5jb2Rlcl9tb2RlKGVuY29kZXIpOw0KLQkJCX0gZWxzZQ0K KwkJCX0gZWxzZSBpZiAocmFkZW9uX2VuY29kZXItPmRldmljZXMgJiAoQVRPTV9ERVZJQ0VfTENE X1NVUFBPUlQpKSB7DQorCQkJCWFyZ3MudjIudWNFbmNvZGVNb2RlID0gQVRPTV9FTkNPREVSX01P REVfTFZEUzsNCisJCQl9IGVsc2Ugew0KIAkJCQlhcmdzLnYyLnVjRW5jb2RlTW9kZSA9IGF0b21i aW9zX2dldF9lbmNvZGVyX21vZGUoZW5jb2Rlcik7DQorCQkJfQ0KIAkJCXN3aXRjaCAocmFkZW9u X2VuY29kZXItPmVuY29kZXJfaWQpIHsNCiAJCQljYXNlIEVOQ09ERVJfT0JKRUNUX0lEX0lOVEVS TkFMX1VOSVBIWToNCiAJCQljYXNlIEVOQ09ERVJfT0JKRUNUX0lEX0lOVEVSTkFMX1VOSVBIWTE6 DQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fY29ubmVjdG9ycy5j IGIvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fY29ubmVjdG9ycy5jDQppbmRleCBiMTAx ODQzLi42ODNjZWRlIDEwMDY0NA0KLS0tIGEvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25f Y29ubmVjdG9ycy5jDQorKysgYi9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9jb25uZWN0 b3JzLmMNCkBAIC0xMjQ2LDcgKzEyNDYsNyBAQCBib29sIHJhZGVvbl9jb25uZWN0b3JfaXNfZHAx Ml9jYXBhYmxlKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpDQogCXN0cnVjdCByYWRl b25fZGV2aWNlICpyZGV2ID0gZGV2LT5kZXZfcHJpdmF0ZTsNCiANCiAJaWYgKEFTSUNfSVNfRENF NShyZGV2KSAmJg0KLQkgICAgKHJkZXYtPmNsb2NrLmRwX2V4dGNsayA+PSA1MzkwMCkgJiYNCisJ ICAgIChyZGV2LT5jbG9jay5kZWZhdWx0X2Rpc3BjbGsgPj0gNTM5MDApICYmDQogCSAgICByYWRl b25fY29ubmVjdG9yX2VuY29kZXJfaXNfaGJyMihjb25uZWN0b3IpKSB7DQogCQlyZXR1cm4gdHJ1 ZTsNCiAJfQ0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcnM2MDAuYyBiL2Ry aXZlcnMvZ3B1L2RybS9yYWRlb24vcnM2MDAuYw0KaW5kZXggY2VhNDgyYS4uZGMwMDE1NSAxMDA2 NDQNCi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcnM2MDAuYw0KKysrIGIvZHJpdmVycy9n cHUvZHJtL3JhZGVvbi9yczYwMC5jDQpAQCAtNTI5LDggKzUyOSwxMSBAQCBpbnQgcnM2MDBfZ2Fy dF9zZXRfcGFnZShzdHJ1Y3QgcmFkZW9uX2RldmljZSAqcmRldiwgaW50IGksIHVpbnQ2NF90IGFk ZHIpDQogCQlyZXR1cm4gLUVJTlZBTDsNCiAJfQ0KIAlhZGRyID0gYWRkciAmIDB4RkZGRkZGRkZG RkZGRjAwMFVMTDsNCi0JYWRkciB8PSBSNjAwX1BURV9WQUxJRCB8IFI2MDBfUFRFX1NZU1RFTSB8 IFI2MDBfUFRFX1NOT09QRUQ7DQotCWFkZHIgfD0gUjYwMF9QVEVfUkVBREFCTEUgfCBSNjAwX1BU RV9XUklURUFCTEU7DQorCWlmIChhZGRyID09IHJkZXYtPmR1bW15X3BhZ2UuYWRkcikNCisJCWFk ZHIgfD0gUjYwMF9QVEVfU1lTVEVNIHwgUjYwMF9QVEVfU05PT1BFRDsNCisJZWxzZQ0KKwkJYWRk ciB8PSAoUjYwMF9QVEVfVkFMSUQgfCBSNjAwX1BURV9TWVNURU0gfCBSNjAwX1BURV9TTk9PUEVE IHwNCisJCQkgUjYwMF9QVEVfUkVBREFCTEUgfCBSNjAwX1BURV9XUklURUFCTEUpOw0KIAl3cml0 ZXEoYWRkciwgcHRyICsgKGkgKiA4KSk7DQogCXJldHVybiAwOw0KIH0NCmRpZmYgLS1naXQgYS9k cml2ZXJzL2hpZC9oaWQtY29yZS5jIGIvZHJpdmVycy9oaWQvaGlkLWNvcmUuYw0KaW5kZXggOWFj NDM4OS4uNjRkNzlkMiAxMDA2NDQNCi0tLSBhL2RyaXZlcnMvaGlkL2hpZC1jb3JlLmMNCisrKyBi L2RyaXZlcnMvaGlkL2hpZC1jb3JlLmMNCkBAIC03NTQsNyArNzU0LDE3IEBAIHN0cnVjdCBoaWRf cmVwb3J0ICpoaWRfdmFsaWRhdGVfdmFsdWVzKHN0cnVjdCBoaWRfZGV2aWNlICpoaWQsDQogCSAq IC0+bnVtYmVyZWQgYmVpbmcgY2hlY2tlZCwgd2hpY2ggbWF5IG5vdCBhbHdheXMgYmUgdGhlIGNh c2Ugd2hlbg0KIAkgKiBkcml2ZXJzIGdvIHRvIGFjY2VzcyByZXBvcnQgdmFsdWVzLg0KIAkgKi8N Ci0JcmVwb3J0ID0gaGlkLT5yZXBvcnRfZW51bVt0eXBlXS5yZXBvcnRfaWRfaGFzaFtpZF07DQor CWlmIChpZCA9PSAwKSB7DQorCQkvKg0KKwkJICogVmFsaWRhdGluZyBvbiBpZCAwIG1lYW5zIHdl IHNob3VsZCBleGFtaW5lIHRoZSBmaXJzdA0KKwkJICogcmVwb3J0IGluIHRoZSBsaXN0Lg0KKwkJ ICovDQorCQlyZXBvcnQgPSBsaXN0X2VudHJ5KA0KKwkJCQloaWQtPnJlcG9ydF9lbnVtW3R5cGVd LnJlcG9ydF9saXN0Lm5leHQsDQorCQkJCXN0cnVjdCBoaWRfcmVwb3J0LCBsaXN0KTsNCisJfSBl bHNlIHsNCisJCXJlcG9ydCA9IGhpZC0+cmVwb3J0X2VudW1bdHlwZV0ucmVwb3J0X2lkX2hhc2hb aWRdOw0KKwl9DQogCWlmICghcmVwb3J0KSB7DQogCQloaWRfZXJyKGhpZCwgIm1pc3NpbmcgJXMg JXVcbiIsIGhpZF9yZXBvcnRfbmFtZXNbdHlwZV0sIGlkKTsNCiAJCXJldHVybiBOVUxMOw0KZGlm ZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC9jb3JlL3VzZXJfbWFkLmMgYi9kcml2ZXJzL2lu ZmluaWJhbmQvY29yZS91c2VyX21hZC5jDQppbmRleCAwN2RiMjI5Li5jNjg1ODgxIDEwMDY0NA0K LS0tIGEvZHJpdmVycy9pbmZpbmliYW5kL2NvcmUvdXNlcl9tYWQuYw0KKysrIGIvZHJpdmVycy9p bmZpbmliYW5kL2NvcmUvdXNlcl9tYWQuYw0KQEAgLTc4MCwyNyArNzgwLDE5IEBAIHN0YXRpYyBp bnQgaWJfdW1hZF9vcGVuKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxwKQ0K IHsNCiAJc3RydWN0IGliX3VtYWRfcG9ydCAqcG9ydDsNCiAJc3RydWN0IGliX3VtYWRfZmlsZSAq ZmlsZTsNCi0JaW50IHJldDsNCisJaW50IHJldCA9IC1FTlhJTzsNCiANCiAJcG9ydCA9IGNvbnRh aW5lcl9vZihpbm9kZS0+aV9jZGV2LCBzdHJ1Y3QgaWJfdW1hZF9wb3J0LCBjZGV2KTsNCi0JaWYg KHBvcnQpDQotCQlrcmVmX2dldCgmcG9ydC0+dW1hZF9kZXYtPnJlZik7DQotCWVsc2UNCi0JCXJl dHVybiAtRU5YSU87DQogDQogCW11dGV4X2xvY2soJnBvcnQtPmZpbGVfbXV0ZXgpOw0KIA0KLQlp ZiAoIXBvcnQtPmliX2Rldikgew0KLQkJcmV0ID0gLUVOWElPOw0KKwlpZiAoIXBvcnQtPmliX2Rl dikNCiAJCWdvdG8gb3V0Ow0KLQl9DQogDQorCXJldCA9IC1FTk9NRU07DQogCWZpbGUgPSBremFs bG9jKHNpemVvZiAqZmlsZSwgR0ZQX0tFUk5FTCk7DQotCWlmICghZmlsZSkgew0KLQkJa3JlZl9w dXQoJnBvcnQtPnVtYWRfZGV2LT5yZWYsIGliX3VtYWRfcmVsZWFzZV9kZXYpOw0KLQkJcmV0ID0g LUVOT01FTTsNCisJaWYgKCFmaWxlKQ0KIAkJZ290byBvdXQ7DQotCX0NCiANCiAJbXV0ZXhfaW5p dCgmZmlsZS0+bXV0ZXgpOw0KIAlzcGluX2xvY2tfaW5pdCgmZmlsZS0+c2VuZF9sb2NrKTsNCkBA IC04MTQsNiArODA2LDEzIEBAIHN0YXRpYyBpbnQgaWJfdW1hZF9vcGVuKHN0cnVjdCBpbm9kZSAq aW5vZGUsIHN0cnVjdCBmaWxlICpmaWxwKQ0KIAlsaXN0X2FkZF90YWlsKCZmaWxlLT5wb3J0X2xp c3QsICZwb3J0LT5maWxlX2xpc3QpOw0KIA0KIAlyZXQgPSBub25zZWVrYWJsZV9vcGVuKGlub2Rl LCBmaWxwKTsNCisJaWYgKHJldCkgew0KKwkJbGlzdF9kZWwoJmZpbGUtPnBvcnRfbGlzdCk7DQor CQlrZnJlZShmaWxlKTsNCisJCWdvdG8gb3V0Ow0KKwl9DQorDQorCWtyZWZfZ2V0KCZwb3J0LT51 bWFkX2Rldi0+cmVmKTsNCiANCiBvdXQ6DQogCW11dGV4X3VubG9jaygmcG9ydC0+ZmlsZV9tdXRl eCk7DQpAQCAtODgwLDEwICs4NzksNiBAQCBzdGF0aWMgaW50IGliX3VtYWRfc21fb3BlbihzdHJ1 Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlscCkNCiAJaW50IHJldDsNCiANCiAJcG9y dCA9IGNvbnRhaW5lcl9vZihpbm9kZS0+aV9jZGV2LCBzdHJ1Y3QgaWJfdW1hZF9wb3J0LCBzbV9j ZGV2KTsNCi0JaWYgKHBvcnQpDQotCQlrcmVmX2dldCgmcG9ydC0+dW1hZF9kZXYtPnJlZik7DQot CWVsc2UNCi0JCXJldHVybiAtRU5YSU87DQogDQogCWlmIChmaWxwLT5mX2ZsYWdzICYgT19OT05C TE9DSykgew0KIAkJaWYgKGRvd25fdHJ5bG9jaygmcG9ydC0+c21fc2VtKSkgew0KQEAgLTg5OCwx NyArODkzLDI3IEBAIHN0YXRpYyBpbnQgaWJfdW1hZF9zbV9vcGVuKHN0cnVjdCBpbm9kZSAqaW5v ZGUsIHN0cnVjdCBmaWxlICpmaWxwKQ0KIAl9DQogDQogCXJldCA9IGliX21vZGlmeV9wb3J0KHBv cnQtPmliX2RldiwgcG9ydC0+cG9ydF9udW0sIDAsICZwcm9wcyk7DQotCWlmIChyZXQpIHsNCi0J CXVwKCZwb3J0LT5zbV9zZW0pOw0KLQkJZ290byBmYWlsOw0KLQl9DQorCWlmIChyZXQpDQorCQln b3RvIGVycl91cF9zZW07DQogDQogCWZpbHAtPnByaXZhdGVfZGF0YSA9IHBvcnQ7DQogDQotCXJl dHVybiBub25zZWVrYWJsZV9vcGVuKGlub2RlLCBmaWxwKTsNCisJcmV0ID0gbm9uc2Vla2FibGVf b3Blbihpbm9kZSwgZmlscCk7DQorCWlmIChyZXQpDQorCQlnb3RvIGVycl9jbHJfc21fY2FwOw0K Kw0KKwlrcmVmX2dldCgmcG9ydC0+dW1hZF9kZXYtPnJlZik7DQorDQorCXJldHVybiAwOw0KKw0K K2Vycl9jbHJfc21fY2FwOg0KKwlzd2FwKHByb3BzLnNldF9wb3J0X2NhcF9tYXNrLCBwcm9wcy5j bHJfcG9ydF9jYXBfbWFzayk7DQorCWliX21vZGlmeV9wb3J0KHBvcnQtPmliX2RldiwgcG9ydC0+ cG9ydF9udW0sIDAsICZwcm9wcyk7DQorDQorZXJyX3VwX3NlbToNCisJdXAoJnBvcnQtPnNtX3Nl bSk7DQogDQogZmFpbDoNCi0Ja3JlZl9wdXQoJnBvcnQtPnVtYWRfZGV2LT5yZWYsIGliX3VtYWRf cmVsZWFzZV9kZXYpOw0KIAlyZXR1cm4gcmV0Ow0KIH0NCiANCmRpZmYgLS1naXQgYS9kcml2ZXJz L2luZmluaWJhbmQvaHcvY3hnYjQvY3EuYyBiL2RyaXZlcnMvaW5maW5pYmFuZC9ody9jeGdiNC9j cS5jDQppbmRleCAwZjE2MDdjLi4zYmQ2YjY5IDEwMDY0NA0KLS0tIGEvZHJpdmVycy9pbmZpbmli YW5kL2h3L2N4Z2I0L2NxLmMNCisrKyBiL2RyaXZlcnMvaW5maW5pYmFuZC9ody9jeGdiNC9jcS5j DQpAQCAtODQzLDcgKzg0Myw4IEBAIHN0cnVjdCBpYl9jcSAqYzRpd19jcmVhdGVfY3Eoc3RydWN0 IGliX2RldmljZSAqaWJkZXYsIGludCBlbnRyaWVzLA0KIAkJdXJlc3AuZ3RzX2tleSA9IHVjb250 ZXh0LT5rZXk7DQogCQl1Y29udGV4dC0+a2V5ICs9IFBBR0VfU0laRTsNCiAJCXNwaW5fdW5sb2Nr KCZ1Y29udGV4dC0+bW1hcF9sb2NrKTsNCi0JCXJldCA9IGliX2NvcHlfdG9fdWRhdGEodWRhdGEs ICZ1cmVzcCwgc2l6ZW9mIHVyZXNwKTsNCisJCXJldCA9IGliX2NvcHlfdG9fdWRhdGEodWRhdGEs ICZ1cmVzcCwNCisJCQkJICAgICAgIHNpemVvZih1cmVzcCkgLSBzaXplb2YodXJlc3AucmVzZXJ2 ZWQpKTsNCiAJCWlmIChyZXQpDQogCQkJZ290byBlcnI1Ow0KIA0KZGlmZiAtLWdpdCBhL2RyaXZl cnMvaW5maW5pYmFuZC9ody9jeGdiNC91c2VyLmggYi9kcml2ZXJzL2luZmluaWJhbmQvaHcvY3hn YjQvdXNlci5oDQppbmRleCBlNjY2OWQ1Li4wNmU4OTM4IDEwMDY0NA0KLS0tIGEvZHJpdmVycy9p bmZpbmliYW5kL2h3L2N4Z2I0L3VzZXIuaA0KKysrIGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L2N4 Z2I0L3VzZXIuaA0KQEAgLTQ4LDYgKzQ4LDcgQEAgc3RydWN0IGM0aXdfY3JlYXRlX2NxX3Jlc3Ag ew0KIAlfX3UzMiBjcWlkOw0KIAlfX3UzMiBzaXplOw0KIAlfX3UzMiBxaWRfbWFzazsNCisJX191 MzIgcmVzZXJ2ZWQ7IC8qIGV4cGxpY2l0IHBhZGRpbmcgKG9wdGlvbmFsIGZvciBpMzg2KSAqLw0K IH07DQogDQogDQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbmZpbmliYW5kL2h3L2lwYXRoL2lwYXRo X2RpYWcuYyBiL2RyaXZlcnMvaW5maW5pYmFuZC9ody9pcGF0aC9pcGF0aF9kaWFnLmMNCmluZGV4 IGUyZjlhNTEuLjQ1ODAyZTkgMTAwNjQ0DQotLS0gYS9kcml2ZXJzL2luZmluaWJhbmQvaHcvaXBh dGgvaXBhdGhfZGlhZy5jDQorKysgYi9kcml2ZXJzL2luZmluaWJhbmQvaHcvaXBhdGgvaXBhdGhf ZGlhZy5jDQpAQCAtMzQ2LDYgKzM0NiwxMCBAQCBzdGF0aWMgc3NpemVfdCBpcGF0aF9kaWFncGt0 X3dyaXRlKHN0cnVjdCBmaWxlICpmcCwNCiAJCQlyZXQgPSAtRUZBVUxUOw0KIAkJCWdvdG8gYmFp bDsNCiAJCX0NCisJCWRwLmxlbiA9IG9kcC5sZW47DQorCQlkcC51bml0ID0gb2RwLnVuaXQ7DQor CQlkcC5kYXRhID0gb2RwLmRhdGE7DQorCQlkcC5wYmNfd2QgPSAwOw0KIAl9IGVsc2Ugew0KIAkJ cmV0ID0gLUVJTlZBTDsNCiAJCWdvdG8gYmFpbDsNCmRpZmYgLS1naXQgYS9kcml2ZXJzL2luZmlu aWJhbmQvaHcvcWliL3FpYl9tYWQuYyBiL2RyaXZlcnMvaW5maW5pYmFuZC9ody9xaWIvcWliX21h ZC5jDQppbmRleCAzYjM3NDVmLi5kZDJhZDZkMyAxMDA2NDQNCi0tLSBhL2RyaXZlcnMvaW5maW5p YmFuZC9ody9xaWIvcWliX21hZC5jDQorKysgYi9kcml2ZXJzL2luZmluaWJhbmQvaHcvcWliL3Fp Yl9tYWQuYw0KQEAgLTEwMDcsNyArMTAwNyw3IEBAIHN0YXRpYyBpbnQgc2V0X3BrZXlzKHN0cnVj dCBxaWJfZGV2ZGF0YSAqZGQsIHU4IHBvcnQsIHUxNiAqcGtleXMpDQogDQogCQlldmVudC5ldmVu dCA9IElCX0VWRU5UX1BLRVlfQ0hBTkdFOw0KIAkJZXZlbnQuZGV2aWNlID0gJmRkLT52ZXJic19k ZXYuaWJkZXY7DQotCQlldmVudC5lbGVtZW50LnBvcnRfbnVtID0gMTsNCisJCWV2ZW50LmVsZW1l bnQucG9ydF9udW0gPSBwb3J0Ow0KIAkJaWJfZGlzcGF0Y2hfZXZlbnQoJmV2ZW50KTsNCiAJfQ0K IAlyZXR1cm4gMDsNCmRpZmYgLS1naXQgYS9kcml2ZXJzL2luZmluaWJhbmQvdWxwL3NycC9pYl9z cnAuYyBiL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvc3JwL2liX3NycC5jDQppbmRleCA0ZWMwNDlk Li44NzcwZDQ0IDEwMDY0NA0KLS0tIGEvZHJpdmVycy9pbmZpbmliYW5kL3VscC9zcnAvaWJfc3Jw LmMNCisrKyBiL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvc3JwL2liX3NycC5jDQpAQCAtMTM1Myw2 ICsxMzUzLDEyIEBAIGVycl91bm1hcDoNCiBlcnJfaXU6DQogCXNycF9wdXRfdHhfaXUodGFyZ2V0 LCBpdSwgU1JQX0lVX0NNRCk7DQogDQorCS8qDQorCSAqIEF2b2lkIHRoYXQgdGhlIGxvb3BzIHRo YXQgaXRlcmF0ZSBvdmVyIHRoZSByZXF1ZXN0IHJpbmcgY2FuDQorCSAqIGVuY291bnRlciBhIGRh bmdsaW5nIFNDU0kgY29tbWFuZCBwb2ludGVyLg0KKwkgKi8NCisJcmVxLT5zY21uZCA9IE5VTEw7 DQorDQogCXNwaW5fbG9ja19pcnFzYXZlKCZ0YXJnZXQtPmxvY2ssIGZsYWdzKTsNCiAJbGlzdF9h ZGQoJnJlcS0+bGlzdCwgJnRhcmdldC0+ZnJlZV9yZXFzKTsNCiANCmRpZmYgLS1naXQgYS9kcml2 ZXJzL2lucHV0L21vdXNlL2VsYW50ZWNoLmMgYi9kcml2ZXJzL2lucHV0L21vdXNlL2VsYW50ZWNo LmMNCmluZGV4IDM0MmEwNTkuLjcwNDIzZGMgMTAwNjQ0DQotLS0gYS9kcml2ZXJzL2lucHV0L21v dXNlL2VsYW50ZWNoLmMNCisrKyBiL2RyaXZlcnMvaW5wdXQvbW91c2UvZWxhbnRlY2guYw0KQEAg LTQ1NSw4ICs0NTUsMTUgQEAgc3RhdGljIHZvaWQgZWxhbnRlY2hfcmVwb3J0X2Fic29sdXRlX3Yz KHN0cnVjdCBwc21vdXNlICpwc21vdXNlLA0KIAlpbnB1dF9yZXBvcnRfa2V5KGRldiwgQlROX1RP T0xfRklOR0VSLCBmaW5nZXJzID09IDEpOw0KIAlpbnB1dF9yZXBvcnRfa2V5KGRldiwgQlROX1RP T0xfRE9VQkxFVEFQLCBmaW5nZXJzID09IDIpOw0KIAlpbnB1dF9yZXBvcnRfa2V5KGRldiwgQlRO X1RPT0xfVFJJUExFVEFQLCBmaW5nZXJzID09IDMpOw0KLQlpbnB1dF9yZXBvcnRfa2V5KGRldiwg QlROX0xFRlQsIHBhY2tldFswXSAmIDB4MDEpOw0KLQlpbnB1dF9yZXBvcnRfa2V5KGRldiwgQlRO X1JJR0hULCBwYWNrZXRbMF0gJiAweDAyKTsNCisNCisJLyogRm9yIGNsaWNrcGFkcyBtYXAgYm90 aCBidXR0b25zIHRvIEJUTl9MRUZUICovDQorCWlmIChldGQtPmZ3X3ZlcnNpb24gJiAweDAwMTAw MCkgew0KKwkJaW5wdXRfcmVwb3J0X2tleShkZXYsIEJUTl9MRUZULCBwYWNrZXRbMF0gJiAweDAz KTsNCisJfSBlbHNlIHsNCisJCWlucHV0X3JlcG9ydF9rZXkoZGV2LCBCVE5fTEVGVCwgcGFja2V0 WzBdICYgMHgwMSk7DQorCQlpbnB1dF9yZXBvcnRfa2V5KGRldiwgQlROX1JJR0hULCBwYWNrZXRb MF0gJiAweDAyKTsNCisJfQ0KKw0KIAlpbnB1dF9yZXBvcnRfYWJzKGRldiwgQUJTX1BSRVNTVVJF LCBwcmVzKTsNCiAJaW5wdXRfcmVwb3J0X2FicyhkZXYsIEFCU19UT09MX1dJRFRILCB3aWR0aCk7 DQogDQpAQCAtNDY2LDEwICs0NzMsMTcgQEAgc3RhdGljIHZvaWQgZWxhbnRlY2hfcmVwb3J0X2Fi c29sdXRlX3YzKHN0cnVjdCBwc21vdXNlICpwc21vdXNlLA0KIHN0YXRpYyB2b2lkIGVsYW50ZWNo X2lucHV0X3N5bmNfdjQoc3RydWN0IHBzbW91c2UgKnBzbW91c2UpDQogew0KIAlzdHJ1Y3QgaW5w dXRfZGV2ICpkZXYgPSBwc21vdXNlLT5kZXY7DQorCXN0cnVjdCBlbGFudGVjaF9kYXRhICpldGQg PSBwc21vdXNlLT5wcml2YXRlOw0KIAl1bnNpZ25lZCBjaGFyICpwYWNrZXQgPSBwc21vdXNlLT5w YWNrZXQ7DQogDQotCWlucHV0X3JlcG9ydF9rZXkoZGV2LCBCVE5fTEVGVCwgcGFja2V0WzBdICYg MHgwMSk7DQotCWlucHV0X3JlcG9ydF9rZXkoZGV2LCBCVE5fUklHSFQsIHBhY2tldFswXSAmIDB4 MDIpOw0KKwkvKiBGb3IgY2xpY2twYWRzIG1hcCBib3RoIGJ1dHRvbnMgdG8gQlROX0xFRlQgKi8N CisJaWYgKGV0ZC0+ZndfdmVyc2lvbiAmIDB4MDAxMDAwKSB7DQorCQlpbnB1dF9yZXBvcnRfa2V5 KGRldiwgQlROX0xFRlQsIHBhY2tldFswXSAmIDB4MDMpOw0KKwl9IGVsc2Ugew0KKwkJaW5wdXRf cmVwb3J0X2tleShkZXYsIEJUTl9MRUZULCBwYWNrZXRbMF0gJiAweDAxKTsNCisJCWlucHV0X3Jl cG9ydF9rZXkoZGV2LCBCVE5fUklHSFQsIHBhY2tldFswXSAmIDB4MDIpOw0KKwl9DQorDQogCWlu cHV0X210X3JlcG9ydF9wb2ludGVyX2VtdWxhdGlvbihkZXYsIHRydWUpOw0KIAlpbnB1dF9zeW5j KGRldik7DQogfQ0KQEAgLTc4Nyw3ICs4MDEsNyBAQCBzdGF0aWMgaW50IGVsYW50ZWNoX3NldF9h YnNvbHV0ZV9tb2RlKHN0cnVjdCBwc21vdXNlICpwc21vdXNlKQ0KIAkJaWYgKGV0ZC0+c2V0X2h3 X3Jlc29sdXRpb24pDQogCQkJZXRkLT5yZWdfMTAgPSAweDBiOw0KIAkJZWxzZQ0KLQkJCWV0ZC0+ cmVnXzEwID0gMHgwMzsNCisJCQlldGQtPnJlZ18xMCA9IDB4MDE7DQogDQogCQlpZiAoZWxhbnRl Y2hfd3JpdGVfcmVnKHBzbW91c2UsIDB4MTAsIGV0ZC0+cmVnXzEwKSkNCiAJCQlyYyA9IC0xOw0K QEAgLTEyMTEsNyArMTIyNSw4IEBAIHN0YXRpYyBpbnQgZWxhbnRlY2hfcmVjb25uZWN0KHN0cnVj dCBwc21vdXNlICpwc21vdXNlKQ0KIH0NCiANCiAvKg0KLSAqIFNvbWUgaHdfdmVyc2lvbiAzIG1v ZGVscyBnbyBpbnRvIGVycm9yIHN0YXRlIHdoZW4gd2UgdHJ5IHRvIHNldCBiaXQgMyBvZiByMTAN CisgKiBTb21lIGh3X3ZlcnNpb24gMyBtb2RlbHMgZ28gaW50byBlcnJvciBzdGF0ZSB3aGVuIHdl IHRyeSB0byBzZXQNCisgKiBiaXQgMyBhbmQvb3IgYml0IDEgb2YgcjEwLg0KICAqLw0KIHN0YXRp YyBjb25zdCBzdHJ1Y3QgZG1pX3N5c3RlbV9pZCBub19od19yZXNfZG1pX3RhYmxlW10gPSB7DQog I2lmIGRlZmluZWQoQ09ORklHX0RNSSkgJiYgZGVmaW5lZChDT05GSUdfWDg2KQ0KZGlmZiAtLWdp dCBhL2RyaXZlcnMvaW5wdXQvbW91c2Uvc3luYXB0aWNzLmMgYi9kcml2ZXJzL2lucHV0L21vdXNl L3N5bmFwdGljcy5jDQppbmRleCA4YTM5ODA3Li5kZjhiNzJiIDEwMDY0NA0KLS0tIGEvZHJpdmVy cy9pbnB1dC9tb3VzZS9zeW5hcHRpY3MuYw0KKysrIGIvZHJpdmVycy9pbnB1dC9tb3VzZS9zeW5h cHRpY3MuYw0KQEAgLTI0NSwxNCArMjQ1LDYgQEAgc3RhdGljIGludCBzeW5hcHRpY3NfcmVzb2x1 dGlvbihzdHJ1Y3QgcHNtb3VzZSAqcHNtb3VzZSkNCiAJc3RydWN0IHN5bmFwdGljc19kYXRhICpw cml2ID0gcHNtb3VzZS0+cHJpdmF0ZTsNCiAJdW5zaWduZWQgY2hhciByZXNwWzNdOw0KIA0KLQlp ZiAocXVpcmtfbWluX21heCkgew0KLQkJcHJpdi0+eF9taW4gPSBxdWlya19taW5fbWF4WzBdOw0K LQkJcHJpdi0+eF9tYXggPSBxdWlya19taW5fbWF4WzFdOw0KLQkJcHJpdi0+eV9taW4gPSBxdWly a19taW5fbWF4WzJdOw0KLQkJcHJpdi0+eV9tYXggPSBxdWlya19taW5fbWF4WzNdOw0KLQkJcmV0 dXJuIDA7DQotCX0NCi0NCiAJaWYgKFNZTl9JRF9NQUpPUihwcml2LT5pZGVudGl0eSkgPCA0KQ0K IAkJcmV0dXJuIDA7DQogDQpAQCAtMjYzLDYgKzI1NSwxNCBAQCBzdGF0aWMgaW50IHN5bmFwdGlj c19yZXNvbHV0aW9uKHN0cnVjdCBwc21vdXNlICpwc21vdXNlKQ0KIAkJfQ0KIAl9DQogDQorCWlm IChxdWlya19taW5fbWF4KSB7DQorCQlwcml2LT54X21pbiA9IHF1aXJrX21pbl9tYXhbMF07DQor CQlwcml2LT54X21heCA9IHF1aXJrX21pbl9tYXhbMV07DQorCQlwcml2LT55X21pbiA9IHF1aXJr X21pbl9tYXhbMl07DQorCQlwcml2LT55X21heCA9IHF1aXJrX21pbl9tYXhbM107DQorCQlyZXR1 cm4gMDsNCisJfQ0KKw0KIAlpZiAoU1lOX0VYVF9DQVBfUkVRVUVTVFMocHJpdi0+Y2FwYWJpbGl0 aWVzKSA+PSA1ICYmDQogCSAgICBTWU5fQ0FQX01BWF9ESU1FTlNJT05TKHByaXYtPmV4dF9jYXBf MGMpKSB7DQogCQlpZiAoc3luYXB0aWNzX3NlbmRfY21kKHBzbW91c2UsIFNZTl9RVUVfRVhUX01B WF9DT09SRFMsIHJlc3ApKSB7DQpAQCAtMTQzMSw3ICsxNDMxLDcgQEAgc3RhdGljIGNvbnN0IHN0 cnVjdCBkbWlfc3lzdGVtX2lkIG1pbl9tYXhfZG1pX3RhYmxlW10gX19pbml0Y29uc3QgPSB7DQog CQkJRE1JX01BVENIKERNSV9TWVNfVkVORE9SLCAiTEVOT1ZPIiksDQogCQkJRE1JX01BVENIKERN SV9QUk9EVUNUX1ZFUlNJT04sICJUaGlua1BhZCBUNTQwIiksDQogCQl9LA0KLQkJLmRyaXZlcl9k YXRhID0gKGludCBbXSl7MTAyNCwgNTA1NiwgMjA1OCwgNDgzMn0sDQorCQkuZHJpdmVyX2RhdGEg PSAoaW50IFtdKXsxMDI0LCA1MTEyLCAyMDI0LCA0ODMyfSwNCiAJfSwNCiAJew0KIAkJLyogTGVu b3ZvIFRoaW5rUGFkIEw1NDAgKi8NCkBAIC0xNDQyLDYgKzE0NDIsMTQgQEAgc3RhdGljIGNvbnN0 IHN0cnVjdCBkbWlfc3lzdGVtX2lkIG1pbl9tYXhfZG1pX3RhYmxlW10gX19pbml0Y29uc3QgPSB7 DQogCQkuZHJpdmVyX2RhdGEgPSAoaW50IFtdKXsxMDI0LCA1MTEyLCAyMDI0LCA0ODMyfSwNCiAJ fSwNCiAJew0KKwkJLyogTGVub3ZvIFRoaW5rUGFkIFc1NDAgKi8NCisJCS5tYXRjaGVzID0gew0K KwkJCURNSV9NQVRDSChETUlfU1lTX1ZFTkRPUiwgIkxFTk9WTyIpLA0KKwkJCURNSV9NQVRDSChE TUlfUFJPRFVDVF9WRVJTSU9OLCAiVGhpbmtQYWQgVzU0MCIpLA0KKwkJfSwNCisJCS5kcml2ZXJf ZGF0YSA9IChpbnQgW10pezEwMjQsIDUxMTIsIDIwMjQsIDQ4MzJ9LA0KKwl9LA0KKwl7DQogCQkv KiBMZW5vdm8gWW9nYSBTMSAqLw0KIAkJLm1hdGNoZXMgPSB7DQogCQkJRE1JX01BVENIKERNSV9T WVNfVkVORE9SLCAiTEVOT1ZPIiksDQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pb21tdS9pbnRlbC1p b21tdS5jIGIvZHJpdmVycy9pb21tdS9pbnRlbC1pb21tdS5jDQppbmRleCAxYTUxYjNkLi5iYjFl NTc5IDEwMDY0NA0KLS0tIGEvZHJpdmVycy9pb21tdS9pbnRlbC1pb21tdS5jDQorKysgYi9kcml2 ZXJzL2lvbW11L2ludGVsLWlvbW11LmMNCkBAIC00MDcwLDcgKzQwNzAsNyBAQCBzdGF0aWMgaW50 IGludGVsX2lvbW11X3VubWFwKHN0cnVjdCBpb21tdV9kb21haW4gKmRvbWFpbiwNCiB7DQogCXN0 cnVjdCBkbWFyX2RvbWFpbiAqZG1hcl9kb21haW4gPSBkb21haW4tPnByaXY7DQogCXNpemVfdCBz aXplID0gUEFHRV9TSVpFIDw8IGdmcF9vcmRlcjsNCi0JaW50IG9yZGVyOw0KKwlpbnQgb3JkZXIs IGlvbW11X2lkOw0KIA0KIAlvcmRlciA9IGRtYV9wdGVfY2xlYXJfcmFuZ2UoZG1hcl9kb21haW4s IGlvdmEgPj4gVlREX1BBR0VfU0hJRlQsDQogCQkJICAgIChpb3ZhICsgc2l6ZSAtIDEpID4+IFZU RF9QQUdFX1NISUZUKTsNCkBAIC00MDc4LDYgKzQwNzgsMjIgQEAgc3RhdGljIGludCBpbnRlbF9p b21tdV91bm1hcChzdHJ1Y3QgaW9tbXVfZG9tYWluICpkb21haW4sDQogCWlmIChkbWFyX2RvbWFp bi0+bWF4X2FkZHIgPT0gaW92YSArIHNpemUpDQogCQlkbWFyX2RvbWFpbi0+bWF4X2FkZHIgPSBp b3ZhOw0KIA0KKwlmb3JfZWFjaF9zZXRfYml0KGlvbW11X2lkLCAmZG1hcl9kb21haW4tPmlvbW11 X2JtcCwgZ19udW1fb2ZfaW9tbXVzKSB7DQorCQlzdHJ1Y3QgaW50ZWxfaW9tbXUgKmlvbW11ID0g Z19pb21tdXNbaW9tbXVfaWRdOw0KKwkJaW50IG51bSwgbmRvbWFpbnM7DQorDQorCQkvKg0KKwkJ ICogZmluZCBiaXQgcG9zaXRpb24gb2YgZG1hcl9kb21haW4NCisJCSAqLw0KKwkJbmRvbWFpbnMg PSBjYXBfbmRvbXMoaW9tbXUtPmNhcCk7DQorCQlmb3JfZWFjaF9zZXRfYml0KG51bSwgaW9tbXUt PmRvbWFpbl9pZHMsIG5kb21haW5zKSB7DQorCQkJaWYgKGlvbW11LT5kb21haW5zW251bV0gPT0g ZG1hcl9kb21haW4pDQorCQkJCWlvbW11X2ZsdXNoX2lvdGxiX3BzaShpb21tdSwgbnVtLA0KKwkJ CQkJCSAgICAgIGlvdmEgPj4gVlREX1BBR0VfU0hJRlQsDQorCQkJCQkJICAgICAgMSA8PCBvcmRl ciwgMCk7DQorCQl9DQorCX0NCisNCiAJcmV0dXJuIG9yZGVyOw0KIH0NCiANCmRpZmYgLS1naXQg YS9kcml2ZXJzL21kL21kLmMgYi9kcml2ZXJzL21kL21kLmMNCmluZGV4IGRiNGI0YTguLjMwYTdi NTIgMTAwNjQ0DQotLS0gYS9kcml2ZXJzL21kL21kLmMNCisrKyBiL2RyaXZlcnMvbWQvbWQuYw0K QEAgLTcwMzUsOCArNzAzNSwxMCBAQCB2b2lkIG1kX2RvX3N5bmMoc3RydWN0IG1kZGV2ICptZGRl dikNCiAJLyoganVzdCBpbmNhc2UgdGhyZWFkIHJlc3RhcnRzLi4uICovDQogCWlmICh0ZXN0X2Jp dChNRF9SRUNPVkVSWV9ET05FLCAmbWRkZXYtPnJlY292ZXJ5KSkNCiAJCXJldHVybjsNCi0JaWYg KG1kZGV2LT5ybykgLyogbmV2ZXIgdHJ5IHRvIHN5bmMgYSByZWFkLW9ubHkgYXJyYXkgKi8NCisJ aWYgKG1kZGV2LT5ybykgey8qIG5ldmVyIHRyeSB0byBzeW5jIGEgcmVhZC1vbmx5IGFycmF5ICov DQorCQlzZXRfYml0KE1EX1JFQ09WRVJZX0lOVFIsICZtZGRldi0+cmVjb3ZlcnkpOw0KIAkJcmV0 dXJuOw0KKwl9DQogDQogCWlmICh0ZXN0X2JpdChNRF9SRUNPVkVSWV9TWU5DLCAmbWRkZXYtPnJl Y292ZXJ5KSkgew0KIAkJaWYgKHRlc3RfYml0KE1EX1JFQ09WRVJZX0NIRUNLLCAmbWRkZXYtPnJl Y292ZXJ5KSkNCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0 L21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvbWFpbi5jDQppbmRl eCA5NGJiYzg1Li5iMDJhZGJjIDEwMDY0NA0KLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVs bGFub3gvbWx4NC9tYWluLmMNCisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21s eDQvbWFpbi5jDQpAQCAtMTIyMCw3ICsxMjIwLDcgQEAgc3RhdGljIHZvaWQgbWx4NF9jbGVhcl9z dGVlcmluZyhzdHJ1Y3QgbWx4NF9kZXYgKmRldikNCiAJa2ZyZWUocHJpdi0+c3RlZXIpOw0KIH0N CiANCi1zdGF0aWMgaW50IF9fbWx4NF9pbml0X29uZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29u c3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKQ0KK3N0YXRpYyBpbnQgX19tbHg0X2luaXRfb25l KHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBpbnQgcGNpX2Rldl9kYXRhKQ0KIHsNCiAJc3RydWN0IG1s eDRfcHJpdiAqcHJpdjsNCiAJc3RydWN0IG1seDRfZGV2ICpkZXY7DQpAQCAtMTI4MywxNSArMTI4 Myw4IEBAIHN0YXRpYyBpbnQgX19tbHg0X2luaXRfb25lKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBj b25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpDQogCS8qIEFsbG93IGxhcmdlIERNQSBzZWdt ZW50cywgdXAgdG8gdGhlIGZpcm13YXJlIGxpbWl0IG9mIDEgR0IgKi8NCiAJZG1hX3NldF9tYXhf c2VnX3NpemUoJnBkZXYtPmRldiwgMTAyNCAqIDEwMjQgKiAxMDI0KTsNCiANCi0JcHJpdiA9IGt6 YWxsb2Moc2l6ZW9mICpwcml2LCBHRlBfS0VSTkVMKTsNCi0JaWYgKCFwcml2KSB7DQotCQlkZXZf ZXJyKCZwZGV2LT5kZXYsICJEZXZpY2Ugc3RydWN0IGFsbG9jIGZhaWxlZCwgIg0KLQkJCSJhYm9y dGluZy5cbiIpOw0KLQkJZXJyID0gLUVOT01FTTsNCi0JCWdvdG8gZXJyX3JlbGVhc2VfcmVnaW9u czsNCi0JfQ0KLQ0KLQlkZXYgICAgICAgPSAmcHJpdi0+ZGV2Ow0KKwlkZXYgICAgICAgPSBwY2lf Z2V0X2RydmRhdGEocGRldik7DQorCXByaXYgICAgICA9IG1seDRfcHJpdihkZXYpOw0KIAlkZXYt PnBkZXYgPSBwZGV2Ow0KIAlJTklUX0xJU1RfSEVBRCgmcHJpdi0+Y3R4X2xpc3QpOw0KIAlzcGlu X2xvY2tfaW5pdCgmcHJpdi0+Y3R4X2xvY2spOw0KQEAgLTEzNjIsNyArMTM1NSw3IEBAIHN0YXRp YyBpbnQgX19tbHg0X2luaXRfb25lKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3Qg cGNpX2RldmljZV9pZCAqaWQpDQogCW1seDRfc2Vuc2VfaW5pdChkZXYpOw0KIAltbHg0X3N0YXJ0 X3NlbnNlKGRldik7DQogDQotCXBjaV9zZXRfZHJ2ZGF0YShwZGV2LCBkZXYpOw0KKwlwcml2LT5y ZW1vdmVkID0gMDsNCiANCiAJcmV0dXJuIDA7DQogDQpAQCAtMTQxMiw1OSArMTQwNSw5MCBAQCBl cnJfZGlzYWJsZV9wZGV2Og0KIHN0YXRpYyBpbnQgX19kZXZpbml0IG1seDRfaW5pdF9vbmUoc3Ry dWN0IHBjaV9kZXYgKnBkZXYsDQogCQkJCSAgIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICpp ZCkNCiB7DQorCXN0cnVjdCBtbHg0X3ByaXYgKnByaXY7DQorCXN0cnVjdCBtbHg0X2RldiAqZGV2 Ow0KKw0KIAlwcmludGtfb25jZShLRVJOX0lORk8gIiVzIiwgbWx4NF92ZXJzaW9uKTsNCiANCi0J cmV0dXJuIF9fbWx4NF9pbml0X29uZShwZGV2LCBpZCk7DQorCXByaXYgPSBremFsbG9jKHNpemVv ZigqcHJpdiksIEdGUF9LRVJORUwpOw0KKwlpZiAoIXByaXYpDQorCQlyZXR1cm4gLUVOT01FTTsN CisNCisJZGV2ICAgICAgID0gJnByaXYtPmRldjsNCisJcGNpX3NldF9kcnZkYXRhKHBkZXYsIGRl dik7DQorCXByaXYtPnBjaV9kZXZfZGF0YSA9IGlkLT5kcml2ZXJfZGF0YTsNCisNCisJcmV0dXJu IF9fbWx4NF9pbml0X29uZShwZGV2LCBpZC0+ZHJpdmVyX2RhdGEpOw0KIH0NCiANCi1zdGF0aWMg dm9pZCBtbHg0X3JlbW92ZV9vbmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpDQorc3RhdGljIHZvaWQg X19tbHg0X3JlbW92ZV9vbmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpDQogew0KIAlzdHJ1Y3QgbWx4 NF9kZXYgICpkZXYgID0gcGNpX2dldF9kcnZkYXRhKHBkZXYpOw0KIAlzdHJ1Y3QgbWx4NF9wcml2 ICpwcml2ID0gbWx4NF9wcml2KGRldik7DQorCWludCAgICAgICAgICAgICAgIHBjaV9kZXZfZGF0 YTsNCiAJaW50IHA7DQogDQotCWlmIChkZXYpIHsNCi0JCW1seDRfc3RvcF9zZW5zZShkZXYpOw0K LQkJbWx4NF91bnJlZ2lzdGVyX2RldmljZShkZXYpOw0KKwlpZiAocHJpdi0+cmVtb3ZlZCkNCisJ CXJldHVybjsNCiANCi0JCWZvciAocCA9IDE7IHAgPD0gZGV2LT5jYXBzLm51bV9wb3J0czsgcCsr KSB7DQotCQkJbWx4NF9jbGVhbnVwX3BvcnRfaW5mbygmcHJpdi0+cG9ydFtwXSk7DQotCQkJbWx4 NF9DTE9TRV9QT1JUKGRldiwgcCk7DQotCQl9DQorCXBjaV9kZXZfZGF0YSA9IHByaXYtPnBjaV9k ZXZfZGF0YTsNCiANCi0JCW1seDRfY2xlYW51cF9jb3VudGVyc190YWJsZShkZXYpOw0KLQkJbWx4 NF9jbGVhbnVwX21jZ190YWJsZShkZXYpOw0KLQkJbWx4NF9jbGVhbnVwX3FwX3RhYmxlKGRldik7 DQotCQltbHg0X2NsZWFudXBfc3JxX3RhYmxlKGRldik7DQotCQltbHg0X2NsZWFudXBfY3FfdGFi bGUoZGV2KTsNCi0JCW1seDRfY21kX3VzZV9wb2xsaW5nKGRldik7DQotCQltbHg0X2NsZWFudXBf ZXFfdGFibGUoZGV2KTsNCi0JCW1seDRfY2xlYW51cF9tcl90YWJsZShkZXYpOw0KLQkJbWx4NF9j bGVhbnVwX3hyY2RfdGFibGUoZGV2KTsNCi0JCW1seDRfY2xlYW51cF9wZF90YWJsZShkZXYpOw0K LQ0KLQkJaW91bm1hcChwcml2LT5rYXIpOw0KLQkJbWx4NF91YXJfZnJlZShkZXYsICZwcml2LT5k cml2ZXJfdWFyKTsNCi0JCW1seDRfY2xlYW51cF91YXJfdGFibGUoZGV2KTsNCi0JCW1seDRfY2xl YXJfc3RlZXJpbmcoZGV2KTsNCi0JCW1seDRfZnJlZV9lcV90YWJsZShkZXYpOw0KLQkJbWx4NF9j bG9zZV9oY2EoZGV2KTsNCi0JCW1seDRfY21kX2NsZWFudXAoZGV2KTsNCi0NCi0JCWlmIChkZXYt PmZsYWdzICYgTUxYNF9GTEFHX01TSV9YKQ0KLQkJCXBjaV9kaXNhYmxlX21zaXgocGRldik7DQot DQotCQlrZnJlZShwcml2KTsNCi0JCXBjaV9yZWxlYXNlX3JlZ2lvbnMocGRldik7DQotCQlwY2lf ZGlzYWJsZV9kZXZpY2UocGRldik7DQotCQlwY2lfc2V0X2RydmRhdGEocGRldiwgTlVMTCk7DQor CW1seDRfc3RvcF9zZW5zZShkZXYpOw0KKwltbHg0X3VucmVnaXN0ZXJfZGV2aWNlKGRldik7DQor DQorCWZvciAocCA9IDE7IHAgPD0gZGV2LT5jYXBzLm51bV9wb3J0czsgcCsrKSB7DQorCQltbHg0 X2NsZWFudXBfcG9ydF9pbmZvKCZwcml2LT5wb3J0W3BdKTsNCisJCW1seDRfQ0xPU0VfUE9SVChk ZXYsIHApOw0KIAl9DQorDQorCW1seDRfY2xlYW51cF9jb3VudGVyc190YWJsZShkZXYpOw0KKwlt bHg0X2NsZWFudXBfbWNnX3RhYmxlKGRldik7DQorCW1seDRfY2xlYW51cF9xcF90YWJsZShkZXYp Ow0KKwltbHg0X2NsZWFudXBfc3JxX3RhYmxlKGRldik7DQorCW1seDRfY2xlYW51cF9jcV90YWJs ZShkZXYpOw0KKwltbHg0X2NtZF91c2VfcG9sbGluZyhkZXYpOw0KKwltbHg0X2NsZWFudXBfZXFf dGFibGUoZGV2KTsNCisJbWx4NF9jbGVhbnVwX21yX3RhYmxlKGRldik7DQorCW1seDRfY2xlYW51 cF94cmNkX3RhYmxlKGRldik7DQorCW1seDRfY2xlYW51cF9wZF90YWJsZShkZXYpOw0KKw0KKwlp b3VubWFwKHByaXYtPmthcik7DQorCW1seDRfdWFyX2ZyZWUoZGV2LCAmcHJpdi0+ZHJpdmVyX3Vh cik7DQorCW1seDRfY2xlYW51cF91YXJfdGFibGUoZGV2KTsNCisJbWx4NF9jbGVhcl9zdGVlcmlu ZyhkZXYpOw0KKwltbHg0X2ZyZWVfZXFfdGFibGUoZGV2KTsNCisJbWx4NF9jbG9zZV9oY2EoZGV2 KTsNCisJbWx4NF9jbWRfY2xlYW51cChkZXYpOw0KKw0KKwlpZiAoZGV2LT5mbGFncyAmIE1MWDRf RkxBR19NU0lfWCkNCisJCXBjaV9kaXNhYmxlX21zaXgocGRldik7DQorDQorCXBjaV9yZWxlYXNl X3JlZ2lvbnMocGRldik7DQorCXBjaV9kaXNhYmxlX2RldmljZShwZGV2KTsNCisJbWVtc2V0KHBy aXYsIDAsIHNpemVvZigqcHJpdikpOw0KKwlwcml2LT5wY2lfZGV2X2RhdGEgPSBwY2lfZGV2X2Rh dGE7DQorCXByaXYtPnJlbW92ZWQgPSAxOw0KK30NCisNCitzdGF0aWMgdm9pZCBtbHg0X3JlbW92 ZV9vbmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpDQorew0KKwlzdHJ1Y3QgbWx4NF9kZXYgICpkZXYg ID0gcGNpX2dldF9kcnZkYXRhKHBkZXYpOw0KKwlzdHJ1Y3QgbWx4NF9wcml2ICpwcml2ID0gbWx4 NF9wcml2KGRldik7DQorDQorCV9fbWx4NF9yZW1vdmVfb25lKHBkZXYpOw0KKwlrZnJlZShwcml2 KTsNCisJcGNpX3NldF9kcnZkYXRhKHBkZXYsIE5VTEwpOw0KIH0NCiANCiBpbnQgbWx4NF9yZXN0 YXJ0X29uZShzdHJ1Y3QgcGNpX2RldiAqcGRldikNCiB7DQotCW1seDRfcmVtb3ZlX29uZShwZGV2 KTsNCi0JcmV0dXJuIF9fbWx4NF9pbml0X29uZShwZGV2LCBOVUxMKTsNCisJc3RydWN0IG1seDRf ZGV2ICAqZGV2ICA9IHBjaV9nZXRfZHJ2ZGF0YShwZGV2KTsNCisJc3RydWN0IG1seDRfcHJpdiAq cHJpdiA9IG1seDRfcHJpdihkZXYpOw0KKwlpbnQgICAgICAgICAgICAgICBwY2lfZGV2X2RhdGE7 DQorDQorCXBjaV9kZXZfZGF0YSA9IHByaXYtPnBjaV9kZXZfZGF0YTsNCisJX19tbHg0X3JlbW92 ZV9vbmUocGRldik7DQorCXJldHVybiBfX21seDRfaW5pdF9vbmUocGRldiwgcGNpX2Rldl9kYXRh KTsNCiB9DQogDQogc3RhdGljIERFRklORV9QQ0lfREVWSUNFX1RBQkxFKG1seDRfcGNpX3RhYmxl KSA9IHsNCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L21s eDQuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvbWx4NC5oDQppbmRleCA1 ZGZhNjhmLi4xNjk4NTNkIDEwMDY0NA0KLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFu b3gvbWx4NC9tbHg0LmgNCisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQv bWx4NC5oDQpAQCAtMzI4LDYgKzMyOCw5IEBAIHN0cnVjdCBtbHg0X3ByaXYgew0KIAlzdHJ1Y3Qg bGlzdF9oZWFkCWN0eF9saXN0Ow0KIAlzcGlubG9ja190CQljdHhfbG9jazsNCiANCisJaW50ICAg ICAgICAgICAgICAgICAgICAgcGNpX2Rldl9kYXRhOw0KKwlpbnQgICAgICAgICAgICAgICAgICAg ICByZW1vdmVkOw0KKw0KIAlzdHJ1Y3QgbGlzdF9oZWFkICAgICAgICBwZ2Rpcl9saXN0Ow0KIAlz dHJ1Y3QgbXV0ZXggICAgICAgICAgICBwZ2Rpcl9tdXRleDsNCiANCmRpZmYgLS1naXQgYS9kcml2 ZXJzL25ldC93aXJlbGVzcy9iNDMveG1pdC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYjQzL3ht aXQuYw0KaW5kZXggYzZjMzRiZi4uZThhZmQzNSAxMDA2NDQNCi0tLSBhL2RyaXZlcnMvbmV0L3dp cmVsZXNzL2I0My94bWl0LmMNCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2I0My94bWl0LmMN CkBAIC04MDgsOSArODA4LDEzIEBAIHZvaWQgYjQzX3J4KHN0cnVjdCBiNDNfd2xkZXYgKmRldiwg c3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgdm9pZCAqX3J4aGRyKQ0KIAkJYnJlYWs7DQogCWNh c2UgQjQzX1BIWVRZUEVfRzoNCiAJCXN0YXR1cy5iYW5kID0gSUVFRTgwMjExX0JBTkRfMkdIWjsN Ci0JCS8qIGNoYW5pZCBpcyB0aGUgcmFkaW8gY2hhbm5lbCBjb29raWUgdmFsdWUgYXMgdXNlZA0K LQkJICogdG8gdHVuZSB0aGUgcmFkaW8uICovDQotCQlzdGF0dXMuZnJlcSA9IGNoYW5pZCArIDI0 MDA7DQorCQkvKiBTb21ld2hlcmUgYmV0d2VlbiA0NzguMTA0IGFuZCA1MDguMTA4NCBmaXJtd2Fy ZSBmb3IgRy1QSFkNCisJCSAqIGhhcyBiZWVuIG1vZGlmaWVkIHRvIGJlIGNvbXBhdGlibGUgd2l0 aCBOLVBIWSBhbmQgb3RoZXJzLg0KKwkJICovDQorCQlpZiAoZGV2LT5mdy5yZXYgPj0gNTA4KQ0K KwkJCXN0YXR1cy5mcmVxID0gaWVlZTgwMjExX2NoYW5uZWxfdG9fZnJlcXVlbmN5KGNoYW5pZCwg c3RhdHVzLmJhbmQpOw0KKwkJZWxzZQ0KKwkJCXN0YXR1cy5mcmVxID0gY2hhbmlkICsgMjQwMDsN CiAJCWJyZWFrOw0KIAljYXNlIEI0M19QSFlUWVBFX046DQogCWNhc2UgQjQzX1BIWVRZUEVfTFA6 DQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnQyeDAwL3J0MngwMG1hYy5jIGIv ZHJpdmVycy9uZXQvd2lyZWxlc3MvcnQyeDAwL3J0MngwMG1hYy5jDQppbmRleCAxZDRjNTc5Li5h YjE5OTQ5IDEwMDY0NA0KLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnQyeDAwL3J0MngwMG1h Yy5jDQorKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ydDJ4MDAvcnQyeDAwbWFjLmMNCkBAIC01 MTcsNiArNTE3LDggQEAgaW50IHJ0MngwMG1hY19zZXRfa2V5KHN0cnVjdCBpZWVlODAyMTFfaHcg Kmh3LCBlbnVtIHNldF9rZXlfY21kIGNtZCwNCiAJY3J5cHRvLmNpcGhlciA9IHJ0MngwMGNyeXB0 b19rZXlfdG9fY2lwaGVyKGtleSk7DQogCWlmIChjcnlwdG8uY2lwaGVyID09IENJUEhFUl9OT05F KQ0KIAkJcmV0dXJuIC1FT1BOT1RTVVBQOw0KKwlpZiAoY3J5cHRvLmNpcGhlciA9PSBDSVBIRVJf VEtJUCAmJiBydDJ4MDBfaXNfdXNiKHJ0MngwMGRldikpDQorCQlyZXR1cm4gLUVPUE5PVFNVUFA7 DQogDQogCWNyeXB0by5jbWQgPSBjbWQ7DQogDQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ydGMvcnRj LWF0OTFybTkyMDAuYyBiL2RyaXZlcnMvcnRjL3J0Yy1hdDkxcm05MjAwLmMNCmluZGV4IDE1NDA2 ZDUuLmZlYWI2OTcgMTAwNjQ0DQotLS0gYS9kcml2ZXJzL3J0Yy9ydGMtYXQ5MXJtOTIwMC5jDQor KysgYi9kcml2ZXJzL3J0Yy9ydGMtYXQ5MXJtOTIwMC5jDQpAQCAtMzYsNiArMzYsNyBAQA0KICNk ZWZpbmUgQVQ5MV9SVENfRVBPQ0gJCTE5MDBVTAkvKiBqdXN0IGxpa2UgYXJjaC9hcm0vY29tbW9u L3J0Y3RpbWUuYyAqLw0KIA0KIHN0YXRpYyBERUNMQVJFX0NPTVBMRVRJT04oYXQ5MV9ydGNfdXBk YXRlZCk7DQorc3RhdGljIERFQ0xBUkVfQ09NUExFVElPTihhdDkxX3J0Y191cGRfcmR5KTsNCiBz dGF0aWMgdW5zaWduZWQgaW50IGF0OTFfYWxhcm1feWVhciA9IEFUOTFfUlRDX0VQT0NIOw0KIA0K IC8qDQpAQCAtOTcsNiArOTgsOCBAQCBzdGF0aWMgaW50IGF0OTFfcnRjX3NldHRpbWUoc3RydWN0 IGRldmljZSAqZGV2LCBzdHJ1Y3QgcnRjX3RpbWUgKnRtKQ0KIAkJMTkwMCArIHRtLT50bV95ZWFy LCB0bS0+dG1fbW9uLCB0bS0+dG1fbWRheSwNCiAJCXRtLT50bV9ob3VyLCB0bS0+dG1fbWluLCB0 bS0+dG1fc2VjKTsNCiANCisJd2FpdF9mb3JfY29tcGxldGlvbigmYXQ5MV9ydGNfdXBkX3JkeSk7 DQorDQogCS8qIFN0b3AgVGltZS9DYWxlbmRhciBmcm9tIGNvdW50aW5nICovDQogCWNyID0gYXQ5 MV9zeXNfcmVhZChBVDkxX1JUQ19DUik7DQogCWF0OTFfc3lzX3dyaXRlKEFUOTFfUlRDX0NSLCBj ciB8IEFUOTFfUlRDX1VQRENBTCB8IEFUOTFfUlRDX1VQRFRJTSk7DQpAQCAtMTE5LDcgKzEyMiw5 IEBAIHN0YXRpYyBpbnQgYXQ5MV9ydGNfc2V0dGltZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVj dCBydGNfdGltZSAqdG0pDQogDQogCS8qIFJlc3RhcnQgVGltZS9DYWxlbmRhciAqLw0KIAljciA9 IGF0OTFfc3lzX3JlYWQoQVQ5MV9SVENfQ1IpOw0KKwlhdDkxX3N5c193cml0ZShBVDkxX1JUQ19T Q0NSLCBBVDkxX1JUQ19TRUNFVik7DQogCWF0OTFfc3lzX3dyaXRlKEFUOTFfUlRDX0NSLCBjciAm IH4oQVQ5MV9SVENfVVBEQ0FMIHwgQVQ5MV9SVENfVVBEVElNKSk7DQorCWF0OTFfc3lzX3dyaXRl KEFUOTFfUlRDX0lFUiwgQVQ5MV9SVENfU0VDRVYpOw0KIA0KIAlyZXR1cm4gMDsNCiB9DQpAQCAt MjI2LDggKzIzMSwxMCBAQCBzdGF0aWMgaXJxcmV0dXJuX3QgYXQ5MV9ydGNfaW50ZXJydXB0KGlu dCBpcnEsIHZvaWQgKmRldl9pZCkNCiAJaWYgKHJ0c3IpIHsJCS8qIHRoaXMgaW50ZXJydXB0IGlz IHNoYXJlZCEgIElzIGl0IG91cnM/ICovDQogCQlpZiAocnRzciAmIEFUOTFfUlRDX0FMQVJNKQ0K IAkJCWV2ZW50cyB8PSAoUlRDX0FGIHwgUlRDX0lSUUYpOw0KLQkJaWYgKHJ0c3IgJiBBVDkxX1JU Q19TRUNFVikNCi0JCQlldmVudHMgfD0gKFJUQ19VRiB8IFJUQ19JUlFGKTsNCisJCWlmIChydHNy ICYgQVQ5MV9SVENfU0VDRVYpIHsNCisJCQljb21wbGV0ZSgmYXQ5MV9ydGNfdXBkX3JkeSk7DQor CQkJYXQ5MV9zeXNfd3JpdGUoQVQ5MV9SVENfSURSLCBBVDkxX1JUQ19TRUNFVik7DQorCQl9DQog CQlpZiAocnRzciAmIEFUOTFfUlRDX0FDS1VQRCkNCiAJCQljb21wbGV0ZSgmYXQ5MV9ydGNfdXBk YXRlZCk7DQogDQpAQCAtMjkxLDYgKzI5OCwxMSBAQCBzdGF0aWMgaW50IF9faW5pdCBhdDkxX3J0 Y19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQ0KIAl9DQogCXBsYXRmb3JtX3Nl dF9kcnZkYXRhKHBkZXYsIHJ0Yyk7DQogDQorCS8qIGVuYWJsZSBTRUNFViBpbnRlcnJ1cHQgaW4g b3JkZXIgdG8gaW5pdGlhbGl6ZSBhdDkxX3J0Y191cGRfcmR5DQorCSAqIGNvbXBsZXRpb24uDQor CSAqLw0KKwlhdDkxX3N5c193cml0ZShBVDkxX1JUQ19JRVIsIEFUOTFfUlRDX1NFQ0VWKTsNCisN CiAJcHJpbnRrKEtFUk5fSU5GTyAiQVQ5MSBSZWFsIFRpbWUgQ2xvY2sgZHJpdmVyLlxuIik7DQog CXJldHVybiAwOw0KIH0NCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvbWVnYXJhaWQvbWVnYXJh aWRfc2FzLmggYi9kcml2ZXJzL3Njc2kvbWVnYXJhaWQvbWVnYXJhaWRfc2FzLmgNCmluZGV4IGRk OTRjN2QuLjA0OWMyMmYgMTAwNjQ0DQotLS0gYS9kcml2ZXJzL3Njc2kvbWVnYXJhaWQvbWVnYXJh aWRfc2FzLmgNCisrKyBiL2RyaXZlcnMvc2NzaS9tZWdhcmFpZC9tZWdhcmFpZF9zYXMuaA0KQEAg LTEyOTUsNyArMTI5NSw2IEBAIHN0cnVjdCBtZWdhc2FzX2luc3RhbmNlIHsNCiAJdTMyICpyZXBs eV9xdWV1ZTsNCiAJZG1hX2FkZHJfdCByZXBseV9xdWV1ZV9oOw0KIA0KLQl1bnNpZ25lZCBsb25n IGJhc2VfYWRkcjsNCiAJc3RydWN0IG1lZ2FzYXNfcmVnaXN0ZXJfc2V0IF9faW9tZW0gKnJlZ19z ZXQ7DQogDQogCXN0cnVjdCBtZWdhc2FzX3BkX2xpc3QgICAgICAgICAgcGRfbGlzdFtNRUdBU0FT X01BWF9QRF07DQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL21lZ2FyYWlkL21lZ2FyYWlkX3Nh c19iYXNlLmMgYi9kcml2ZXJzL3Njc2kvbWVnYXJhaWQvbWVnYXJhaWRfc2FzX2Jhc2UuYw0KaW5k ZXggYjAxODk5Ny4uZTQ1Yzg2NSAxMDA2NDQNCi0tLSBhL2RyaXZlcnMvc2NzaS9tZWdhcmFpZC9t ZWdhcmFpZF9zYXNfYmFzZS5jDQorKysgYi9kcml2ZXJzL3Njc2kvbWVnYXJhaWQvbWVnYXJhaWRf c2FzX2Jhc2UuYw0KQEAgLTM0OTksNiArMzQ5OSw3IEBAIHN0YXRpYyBpbnQgbWVnYXNhc19pbml0 X2Z3KHN0cnVjdCBtZWdhc2FzX2luc3RhbmNlICppbnN0YW5jZSkNCiAJdTMyIG1heF9zZWN0b3Jz XzE7DQogCXUzMiBtYXhfc2VjdG9yc18yOw0KIAl1MzIgdG1wX3NlY3RvcnMsIG1zaXhfZW5hYmxl Ow0KKwlyZXNvdXJjZV9zaXplX3QgYmFzZV9hZGRyOw0KIAlzdHJ1Y3QgbWVnYXNhc19yZWdpc3Rl cl9zZXQgX19pb21lbSAqcmVnX3NldDsNCiAJc3RydWN0IG1lZ2FzYXNfY3RybF9pbmZvICpjdHJs X2luZm87DQogCXVuc2lnbmVkIGxvbmcgYmFyX2xpc3Q7DQpAQCAtMzUwNywxNCArMzUwOCwxNCBA QCBzdGF0aWMgaW50IG1lZ2FzYXNfaW5pdF9mdyhzdHJ1Y3QgbWVnYXNhc19pbnN0YW5jZSAqaW5z dGFuY2UpDQogCS8qIEZpbmQgZmlyc3QgbWVtb3J5IGJhciAqLw0KIAliYXJfbGlzdCA9IHBjaV9z ZWxlY3RfYmFycyhpbnN0YW5jZS0+cGRldiwgSU9SRVNPVVJDRV9NRU0pOw0KIAlpbnN0YW5jZS0+ YmFyID0gZmluZF9maXJzdF9iaXQoJmJhcl9saXN0LCBzaXplb2YodW5zaWduZWQgbG9uZykpOw0K LQlpbnN0YW5jZS0+YmFzZV9hZGRyID0gcGNpX3Jlc291cmNlX3N0YXJ0KGluc3RhbmNlLT5wZGV2 LCBpbnN0YW5jZS0+YmFyKTsNCiAJaWYgKHBjaV9yZXF1ZXN0X3NlbGVjdGVkX3JlZ2lvbnMoaW5z dGFuY2UtPnBkZXYsIGluc3RhbmNlLT5iYXIsDQogCQkJCQkgIm1lZ2FzYXM6IExTSSIpKSB7DQog CQlwcmludGsoS0VSTl9ERUJVRyAibWVnYXNhczogSU8gbWVtb3J5IHJlZ2lvbiBidXN5IVxuIik7 DQogCQlyZXR1cm4gLUVCVVNZOw0KIAl9DQogDQotCWluc3RhbmNlLT5yZWdfc2V0ID0gaW9yZW1h cF9ub2NhY2hlKGluc3RhbmNlLT5iYXNlX2FkZHIsIDgxOTIpOw0KKwliYXNlX2FkZHIgPSBwY2lf cmVzb3VyY2Vfc3RhcnQoaW5zdGFuY2UtPnBkZXYsIGluc3RhbmNlLT5iYXIpOw0KKwlpbnN0YW5j ZS0+cmVnX3NldCA9IGlvcmVtYXBfbm9jYWNoZShiYXNlX2FkZHIsIDgxOTIpOw0KIA0KIAlpZiAo IWluc3RhbmNlLT5yZWdfc2V0KSB7DQogCQlwcmludGsoS0VSTl9ERUJVRyAibWVnYXNhczogRmFp bGVkIHRvIG1hcCBJTyBtZW1cbiIpOw0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9zY3NpX2Vy cm9yLmMgYi9kcml2ZXJzL3Njc2kvc2NzaV9lcnJvci5jDQppbmRleCBjODM1NzFlLi5kMmY4MDYx IDEwMDY0NA0KLS0tIGEvZHJpdmVycy9zY3NpL3Njc2lfZXJyb3IuYw0KKysrIGIvZHJpdmVycy9z Y3NpL3Njc2lfZXJyb3IuYw0KQEAgLTkwMiw2ICs5MDIsMTUgQEAgaW50IHNjc2lfZWhfZ2V0X3Nl bnNlKHN0cnVjdCBsaXN0X2hlYWQgKndvcmtfcSwNCiAJCSAgICBTQ1NJX1NFTlNFX1ZBTElEKHNj bWQpKQ0KIAkJCWNvbnRpbnVlOw0KIA0KKwkJaWYgKHN0YXR1c19ieXRlKHNjbWQtPnJlc3VsdCkg IT0gQ0hFQ0tfQ09ORElUSU9OKQ0KKwkJCS8qDQorCQkJICogZG9uJ3QgcmVxdWVzdCBzZW5zZSBp ZiB0aGVyZSdzIG5vIGNoZWNrIGNvbmRpdGlvbg0KKwkJCSAqIHN0YXR1cyBiZWNhdXNlIHRoZSBl cnJvciB3ZSdyZSBwcm9jZXNzaW5nIGlzbid0IG9uZQ0KKwkJCSAqIHRoYXQgaGFzIGEgc2Vuc2Ug Y29kZSAoYW5kIHNvbWUgZGV2aWNlcyBnZXQNCisJCQkgKiBjb25mdXNlZCBieSBzZW5zZSByZXF1 ZXN0cyBvdXQgb2YgdGhlIGJsdWUpDQorCQkJICovDQorCQkJY29udGludWU7DQorDQogCQlTQ1NJ X0xPR19FUlJPUl9SRUNPVkVSWSgyLCBzY21kX3ByaW50ayhLRVJOX0lORk8sIHNjbWQsDQogCQkJ CQkJICAiJXM6IHJlcXVlc3Rpbmcgc2Vuc2VcbiIsDQogCQkJCQkJICBjdXJyZW50LT5jb21tKSk7 DQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL3Njc2lfbGliLmMgYi9kcml2ZXJzL3Njc2kvc2Nz aV9saWIuYw0KaW5kZXggNmM0YjYyMC4uY2Q0YWMzOCAxMDA2NDQNCi0tLSBhL2RyaXZlcnMvc2Nz aS9zY3NpX2xpYi5jDQorKysgYi9kcml2ZXJzL3Njc2kvc2NzaV9saWIuYw0KQEAgLTE1NSwxMyAr MTU1LDE0IEBAIHN0YXRpYyBpbnQgX19zY3NpX3F1ZXVlX2luc2VydChzdHJ1Y3Qgc2NzaV9jbW5k ICpjbWQsIGludCByZWFzb24sIGludCB1bmJ1c3kpDQogDQogCS8qDQogCSAqIFJlcXVldWUgdGhp cyBjb21tYW5kLiAgSXQgd2lsbCBnbyBiZWZvcmUgYWxsIG90aGVyIGNvbW1hbmRzDQotCSAqIHRo YXQgYXJlIGFscmVhZHkgaW4gdGhlIHF1ZXVlLg0KKwkgKiB0aGF0IGFyZSBhbHJlYWR5IGluIHRo ZSBxdWV1ZS4gU2NoZWR1bGUgcmVxdWV1ZSB3b3JrIHVuZGVyDQorCSAqIGxvY2sgc3VjaCB0aGF0 IHRoZSBrYmxvY2tkX3NjaGVkdWxlX3dvcmsoKSBjYWxsIGhhcHBlbnMNCisJICogYmVmb3JlIGJs a19jbGVhbnVwX3F1ZXVlKCkgZmluaXNoZXMuDQogCSAqLw0KIAlzcGluX2xvY2tfaXJxc2F2ZShx LT5xdWV1ZV9sb2NrLCBmbGFncyk7DQogCWJsa19yZXF1ZXVlX3JlcXVlc3QocSwgY21kLT5yZXF1 ZXN0KTsNCi0Jc3Bpbl91bmxvY2tfaXJxcmVzdG9yZShxLT5xdWV1ZV9sb2NrLCBmbGFncyk7DQot DQogCWtibG9ja2Rfc2NoZWR1bGVfd29yayhxLCAmZGV2aWNlLT5yZXF1ZXVlX3dvcmspOw0KKwlz cGluX3VubG9ja19pcnFyZXN0b3JlKHEtPnF1ZXVlX2xvY2ssIGZsYWdzKTsNCiANCiAJcmV0dXJu IDA7DQogfQ0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9zY3NpX3NjYW4uYyBiL2RyaXZlcnMv c2NzaS9zY3NpX3NjYW4uYw0KaW5kZXggYzZjODBjOS4uMjlmNTc1MSAxMDA2NDQNCi0tLSBhL2Ry aXZlcnMvc2NzaS9zY3NpX3NjYW4uYw0KKysrIGIvZHJpdmVycy9zY3NpL3Njc2lfc2Nhbi5jDQpA QCAtMzMyLDYgKzMzMiw3IEBAIHN0YXRpYyB2b2lkIHNjc2lfdGFyZ2V0X2Rlc3Ryb3koc3RydWN0 IHNjc2lfdGFyZ2V0ICpzdGFyZ2V0KQ0KIAlzdHJ1Y3QgU2NzaV9Ib3N0ICpzaG9zdCA9IGRldl90 b19zaG9zdChkZXYtPnBhcmVudCk7DQogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7DQogDQorCXN0YXJn ZXQtPnN0YXRlID0gU1RBUkdFVF9ERUw7DQogCXRyYW5zcG9ydF9kZXN0cm95X2RldmljZShkZXYp Ow0KIAlzcGluX2xvY2tfaXJxc2F2ZShzaG9zdC0+aG9zdF9sb2NrLCBmbGFncyk7DQogCWlmIChz aG9zdC0+aG9zdHQtPnRhcmdldF9kZXN0cm95KQ0KQEAgLTM4Myw2ICszODQsMzcgQEAgc3RhdGlj IHN0cnVjdCBzY3NpX3RhcmdldCAqX19zY3NpX2ZpbmRfdGFyZ2V0KHN0cnVjdCBkZXZpY2UgKnBh cmVudCwNCiB9DQogDQogLyoqDQorICogc2NzaV90YXJnZXRfcmVhcF9yZWZfcmVsZWFzZSAtIHJl bW92ZSB0YXJnZXQgZnJvbSB2aXNpYmlsaXR5DQorICogQGtyZWY6IHRoZSByZWFwX3JlZiBpbiB0 aGUgdGFyZ2V0IGJlaW5nIHJlbGVhc2VkDQorICoNCisgKiBDYWxsZWQgb24gbGFzdCBwdXQgb2Yg cmVhcF9yZWYsIHdoaWNoIGlzIHRoZSBpbmRpY2F0aW9uIHRoYXQgbm8gZGV2aWNlDQorICogdW5k ZXIgdGhpcyB0YXJnZXQgaXMgdmlzaWJsZSBhbnltb3JlLCBzbyByZW5kZXIgdGhlIHRhcmdldCBp bnZpc2libGUgaW4NCisgKiBzeXNmcy4gIE5vdGU6IHdlIGhhdmUgdG8gYmUgaW4gdXNlciBjb250 ZXh0IGhlcmUgYmVjYXVzZSB0aGUgdGFyZ2V0IHJlYXBzDQorICogc2hvdWxkIGJlIGRvbmUgaW4g cGxhY2VzIHdoZXJlIHRoZSBzY3NpIGRldmljZSB2aXNpYmlsaXR5IGlzIGJlaW5nIHJlbW92ZWQu DQorICovDQorc3RhdGljIHZvaWQgc2NzaV90YXJnZXRfcmVhcF9yZWZfcmVsZWFzZShzdHJ1Y3Qg a3JlZiAqa3JlZikNCit7DQorCXN0cnVjdCBzY3NpX3RhcmdldCAqc3RhcmdldA0KKwkJPSBjb250 YWluZXJfb2Yoa3JlZiwgc3RydWN0IHNjc2lfdGFyZ2V0LCByZWFwX3JlZik7DQorDQorCS8qDQor CSAqIGlmIHdlIGdldCBoZXJlIGFuZCB0aGUgdGFyZ2V0IGlzIHN0aWxsIGluIHRoZSBDUkVBVEVE IHN0YXRlIHRoYXQNCisJICogbWVhbnMgaXQgd2FzIGFsbG9jYXRlZCBidXQgbmV2ZXIgbWFkZSB2 aXNpYmxlIChiZWNhdXNlIGEgc2Nhbg0KKwkgKiB0dXJuZWQgdXAgbm8gTFVOcyksIHNvIGRvbid0 IGNhbGwgZGV2aWNlX2RlbCgpIG9uIGl0Lg0KKwkgKi8NCisJaWYgKHN0YXJnZXQtPnN0YXRlICE9 IFNUQVJHRVRfQ1JFQVRFRCkgew0KKwkJdHJhbnNwb3J0X3JlbW92ZV9kZXZpY2UoJnN0YXJnZXQt PmRldik7DQorCQlkZXZpY2VfZGVsKCZzdGFyZ2V0LT5kZXYpOw0KKwl9DQorCXNjc2lfdGFyZ2V0 X2Rlc3Ryb3koc3RhcmdldCk7DQorfQ0KKw0KK3N0YXRpYyB2b2lkIHNjc2lfdGFyZ2V0X3JlYXBf cmVmX3B1dChzdHJ1Y3Qgc2NzaV90YXJnZXQgKnN0YXJnZXQpDQorew0KKwlrcmVmX3B1dCgmc3Rh cmdldC0+cmVhcF9yZWYsIHNjc2lfdGFyZ2V0X3JlYXBfcmVmX3JlbGVhc2UpOw0KK30NCisNCisv KioNCiAgKiBzY3NpX2FsbG9jX3RhcmdldCAtIGFsbG9jYXRlIGEgbmV3IG9yIGZpbmQgYW4gZXhp c3RpbmcgdGFyZ2V0DQogICogQHBhcmVudDoJcGFyZW50IG9mIHRoZSB0YXJnZXQgKG5lZWQgbm90 IGJlIGEgc2NzaSBob3N0KQ0KICAqIEBjaGFubmVsOgl0YXJnZXQgY2hhbm5lbCBudW1iZXIgKHpl cm8gaWYgbm8gY2hhbm5lbHMpDQpAQCAtNDA0LDcgKzQzNiw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2Nz aV90YXJnZXQgKnNjc2lfYWxsb2NfdGFyZ2V0KHN0cnVjdCBkZXZpY2UgKnBhcmVudCwNCiAJCSsg c2hvc3QtPnRyYW5zcG9ydHQtPnRhcmdldF9zaXplOw0KIAlzdHJ1Y3Qgc2NzaV90YXJnZXQgKnN0 YXJnZXQ7DQogCXN0cnVjdCBzY3NpX3RhcmdldCAqZm91bmRfdGFyZ2V0Ow0KLQlpbnQgZXJyb3I7 DQorCWludCBlcnJvciwgcmVmX2dvdDsNCiANCiAJc3RhcmdldCA9IGt6YWxsb2Moc2l6ZSwgR0ZQ X0tFUk5FTCk7DQogCWlmICghc3RhcmdldCkgew0KQEAgLTQxMyw3ICs0NDUsNyBAQCBzdGF0aWMg c3RydWN0IHNjc2lfdGFyZ2V0ICpzY3NpX2FsbG9jX3RhcmdldChzdHJ1Y3QgZGV2aWNlICpwYXJl bnQsDQogCX0NCiAJZGV2ID0gJnN0YXJnZXQtPmRldjsNCiAJZGV2aWNlX2luaXRpYWxpemUoZGV2 KTsNCi0Jc3RhcmdldC0+cmVhcF9yZWYgPSAxOw0KKwlrcmVmX2luaXQoJnN0YXJnZXQtPnJlYXBf cmVmKTsNCiAJZGV2LT5wYXJlbnQgPSBnZXRfZGV2aWNlKHBhcmVudCk7DQogCWRldl9zZXRfbmFt ZShkZXYsICJ0YXJnZXQlZDolZDolZCIsIHNob3N0LT5ob3N0X25vLCBjaGFubmVsLCBpZCk7DQog CWRldi0+YnVzID0gJnNjc2lfYnVzX3R5cGU7DQpAQCAtNDUzLDI5ICs0ODUsMzYgQEAgc3RhdGlj IHN0cnVjdCBzY3NpX3RhcmdldCAqc2NzaV9hbGxvY190YXJnZXQoc3RydWN0IGRldmljZSAqcGFy ZW50LA0KIAlyZXR1cm4gc3RhcmdldDsNCiANCiAgZm91bmQ6DQotCWZvdW5kX3RhcmdldC0+cmVh cF9yZWYrKzsNCisJLyoNCisJICogcmVsZWFzZSByb3V0aW5lIGFscmVhZHkgZmlyZWQgaWYga3Jl ZiBpcyB6ZXJvLCBzbyBpZiB3ZSBjYW4gc3RpbGwNCisJICogdGFrZSB0aGUgcmVmZXJlbmNlLCB0 aGUgdGFyZ2V0IG11c3QgYmUgYWxpdmUuICBJZiB3ZSBjYW4ndCwgaXQgbXVzdA0KKwkgKiBiZSBk eWluZyBhbmQgd2UgbmVlZCB0byB3YWl0IGZvciBhIG5ldyB0YXJnZXQNCisJICovDQorCXJlZl9n b3QgPSBrcmVmX2dldF91bmxlc3NfemVybygmZm91bmRfdGFyZ2V0LT5yZWFwX3JlZik7DQorDQog CXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoc2hvc3QtPmhvc3RfbG9jaywgZmxhZ3MpOw0KLQlpZiAo Zm91bmRfdGFyZ2V0LT5zdGF0ZSAhPSBTVEFSR0VUX0RFTCkgew0KKwlpZiAocmVmX2dvdCkgew0K IAkJcHV0X2RldmljZShkZXYpOw0KIAkJcmV0dXJuIGZvdW5kX3RhcmdldDsNCiAJfQ0KLQkvKiBV bmZvcnR1bmF0ZWx5LCB3ZSBmb3VuZCBhIGR5aW5nIHRhcmdldDsgbmVlZCB0bw0KLQkgKiB3YWl0 IHVudGlsIGl0J3MgZGVhZCBiZWZvcmUgd2UgY2FuIGdldCBhIG5ldyBvbmUgKi8NCisJLyoNCisJ ICogVW5mb3J0dW5hdGVseSwgd2UgZm91bmQgYSBkeWluZyB0YXJnZXQ7IG5lZWQgdG8gd2FpdCB1 bnRpbCBpdCdzDQorCSAqIGRlYWQgYmVmb3JlIHdlIGNhbiBnZXQgYSBuZXcgb25lLiAgVGhlcmUg aXMgYW4gYW5vbWFseSBoZXJlLiAgV2UNCisJICogKnNob3VsZCogY2FsbCBzY3NpX3RhcmdldF9y ZWFwKCkgdG8gYmFsYW5jZSB0aGUga3JlZl9nZXQoKSBvZiB0aGUNCisJICogcmVhcF9yZWYgYWJv dmUuICBIb3dldmVyLCBzaW5jZSB0aGUgdGFyZ2V0IGJlaW5nIHJlbGVhc2VkLCBpdCdzDQorCSAq IGFscmVhZHkgaW52aXNpYmxlIGFuZCB0aGUgcmVhcF9yZWYgaXMgaXJyZWxldmFudC4gIElmIHdl IGNhbGwNCisJICogc2NzaV90YXJnZXRfcmVhcCgpIHdlIG1pZ2h0IHNwdXJpb3VzbHkgZG8gYW5v dGhlciBkZXZpY2VfZGVsKCkgb24NCisJICogYW4gYWxyZWFkeSBpbnZpc2libGUgdGFyZ2V0Lg0K KwkgKi8NCiAJcHV0X2RldmljZSgmZm91bmRfdGFyZ2V0LT5kZXYpOw0KLQlmbHVzaF9zY2hlZHVs ZWRfd29yaygpOw0KKwkvKg0KKwkgKiBsZW5ndGggb2YgdGltZSBpcyBpcnJlbGV2YW50IGhlcmUs IHdlIGp1c3Qgd2FudCB0byB5aWVsZCB0aGUgQ1BVDQorCSAqIGZvciBhIHRpY2sgdG8gYXZvaWQg YnVzeSB3YWl0aW5nIGZvciB0aGUgdGFyZ2V0IHRvIGRpZS4NCisJICovDQorCW1zbGVlcCgxKTsN CiAJZ290byByZXRyeTsNCiB9DQogDQotc3RhdGljIHZvaWQgc2NzaV90YXJnZXRfcmVhcF91c2Vy Y29udGV4dChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspDQotew0KLQlzdHJ1Y3Qgc2NzaV90YXJn ZXQgKnN0YXJnZXQgPQ0KLQkJY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBzY3NpX3RhcmdldCwg ZXcud29yayk7DQotDQotCXRyYW5zcG9ydF9yZW1vdmVfZGV2aWNlKCZzdGFyZ2V0LT5kZXYpOw0K LQlkZXZpY2VfZGVsKCZzdGFyZ2V0LT5kZXYpOw0KLQlzY3NpX3RhcmdldF9kZXN0cm95KHN0YXJn ZXQpOw0KLX0NCi0NCiAvKioNCiAgKiBzY3NpX3RhcmdldF9yZWFwIC0gY2hlY2sgdG8gc2VlIGlm IHRhcmdldCBpcyBpbiB1c2UgYW5kIGRlc3Ryb3kgaWYgbm90DQogICogQHN0YXJnZXQ6IHRhcmdl dCB0byBiZSBjaGVja2VkDQpAQCAtNDg2LDI4ICs1MjUsMTMgQEAgc3RhdGljIHZvaWQgc2NzaV90 YXJnZXRfcmVhcF91c2VyY29udGV4dChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspDQogICovDQog dm9pZCBzY3NpX3RhcmdldF9yZWFwKHN0cnVjdCBzY3NpX3RhcmdldCAqc3RhcmdldCkNCiB7DQot CXN0cnVjdCBTY3NpX0hvc3QgKnNob3N0ID0gZGV2X3RvX3Nob3N0KHN0YXJnZXQtPmRldi5wYXJl bnQpOw0KLQl1bnNpZ25lZCBsb25nIGZsYWdzOw0KLQllbnVtIHNjc2lfdGFyZ2V0X3N0YXRlIHN0 YXRlOw0KLQlpbnQgZW1wdHkgPSAwOw0KLQ0KLQlzcGluX2xvY2tfaXJxc2F2ZShzaG9zdC0+aG9z dF9sb2NrLCBmbGFncyk7DQotCXN0YXRlID0gc3RhcmdldC0+c3RhdGU7DQotCWlmICgtLXN0YXJn ZXQtPnJlYXBfcmVmID09IDAgJiYgbGlzdF9lbXB0eSgmc3RhcmdldC0+ZGV2aWNlcykpIHsNCi0J CWVtcHR5ID0gMTsNCi0JCXN0YXJnZXQtPnN0YXRlID0gU1RBUkdFVF9ERUw7DQotCX0NCi0Jc3Bp bl91bmxvY2tfaXJxcmVzdG9yZShzaG9zdC0+aG9zdF9sb2NrLCBmbGFncyk7DQotDQotCWlmICgh ZW1wdHkpDQotCQlyZXR1cm47DQotDQotCUJVR19PTihzdGF0ZSA9PSBTVEFSR0VUX0RFTCk7DQot CWlmIChzdGF0ZSA9PSBTVEFSR0VUX0NSRUFURUQpDQotCQlzY3NpX3RhcmdldF9kZXN0cm95KHN0 YXJnZXQpOw0KLQllbHNlDQotCQlleGVjdXRlX2luX3Byb2Nlc3NfY29udGV4dChzY3NpX3Rhcmdl dF9yZWFwX3VzZXJjb250ZXh0LA0KLQkJCQkJICAgJnN0YXJnZXQtPmV3KTsNCisJLyoNCisJICog c2VyaW91cyBwcm9ibGVtIGlmIHRoaXMgdHJpZ2dlcnM6IFNUQVJHRVRfREVMIGlzIG9ubHkgc2V0 IGluIHRoZSBpZg0KKwkgKiB0aGUgcmVhcF9yZWYgZHJvcHMgdG8gemVybywgc28gd2UncmUgdHJ5 aW5nIHRvIGRvIGFub3RoZXIgZmluYWwgcHV0DQorCSAqIG9uIGFuIGFscmVhZHkgcmVsZWFzZWQg a3JlZg0KKwkgKi8NCisJQlVHX09OKHN0YXJnZXQtPnN0YXRlID09IFNUQVJHRVRfREVMKTsNCisJ c2NzaV90YXJnZXRfcmVhcF9yZWZfcHV0KHN0YXJnZXQpOw0KIH0NCiANCiAvKioNCkBAIC0xNTMy LDYgKzE1NTYsMTAgQEAgc3RydWN0IHNjc2lfZGV2aWNlICpfX3Njc2lfYWRkX2RldmljZShzdHJ1 Y3QgU2NzaV9Ib3N0ICpzaG9zdCwgdWludCBjaGFubmVsLA0KIAl9DQogCW11dGV4X3VubG9jaygm c2hvc3QtPnNjYW5fbXV0ZXgpOw0KIAlzY3NpX2F1dG9wbV9wdXRfdGFyZ2V0KHN0YXJnZXQpOw0K KwkvKg0KKwkgKiBwYWlyZWQgd2l0aCBzY3NpX2FsbG9jX3RhcmdldCgpLiAgVGFyZ2V0IHdpbGwg YmUgZGVzdHJveWVkIHVubGVzcw0KKwkgKiBzY3NpX3Byb2JlX2FuZF9hZGRfbHVuIG1hZGUgYW4g dW5kZXJseWluZyBkZXZpY2UgdmlzaWJsZQ0KKwkgKi8NCiAJc2NzaV90YXJnZXRfcmVhcChzdGFy Z2V0KTsNCiAJcHV0X2RldmljZSgmc3RhcmdldC0+ZGV2KTsNCiANCkBAIC0xNjEyLDggKzE2NDAs MTAgQEAgc3RhdGljIHZvaWQgX19zY3NpX3NjYW5fdGFyZ2V0KHN0cnVjdCBkZXZpY2UgKnBhcmVu dCwgdW5zaWduZWQgaW50IGNoYW5uZWwsDQogDQogIG91dF9yZWFwOg0KIAlzY3NpX2F1dG9wbV9w dXRfdGFyZ2V0KHN0YXJnZXQpOw0KLQkvKiBub3cgZGV0ZXJtaW5lIGlmIHRoZSB0YXJnZXQgaGFz IGFueSBjaGlsZHJlbiBhdCBhbGwNCi0JICogYW5kIGlmIG5vdCwgbnVrZSBpdCAqLw0KKwkvKg0K KwkgKiBwYWlyZWQgd2l0aCBzY3NpX2FsbG9jX3RhcmdldCgpOiBkZXRlcm1pbmUgaWYgdGhlIHRh cmdldCBoYXMNCisJICogYW55IGNoaWxkcmVuIGF0IGFsbCBhbmQgaWYgbm90LCBudWtlIGl0DQor CSAqLw0KIAlzY3NpX3RhcmdldF9yZWFwKHN0YXJnZXQpOw0KIA0KIAlwdXRfZGV2aWNlKCZzdGFy Z2V0LT5kZXYpOw0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9zY3NpX3N5c2ZzLmMgYi9kcml2 ZXJzL3Njc2kvc2NzaV9zeXNmcy5jDQppbmRleCA3MmNhNTE1Li44OGJjODJlIDEwMDY0NA0KLS0t IGEvZHJpdmVycy9zY3NpL3Njc2lfc3lzZnMuYw0KKysrIGIvZHJpdmVycy9zY3NpL3Njc2lfc3lz ZnMuYw0KQEAgLTMzMSwxNyArMzMxLDE0IEBAIHN0YXRpYyB2b2lkIHNjc2lfZGV2aWNlX2Rldl9y ZWxlYXNlX3VzZXJjb250ZXh0KHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykNCiB7DQogCXN0cnVj dCBzY3NpX2RldmljZSAqc2RldjsNCiAJc3RydWN0IGRldmljZSAqcGFyZW50Ow0KLQlzdHJ1Y3Qg c2NzaV90YXJnZXQgKnN0YXJnZXQ7DQogCXN0cnVjdCBsaXN0X2hlYWQgKnRoaXMsICp0bXA7DQog CXVuc2lnbmVkIGxvbmcgZmxhZ3M7DQogDQogCXNkZXYgPSBjb250YWluZXJfb2Yod29yaywgc3Ry dWN0IHNjc2lfZGV2aWNlLCBldy53b3JrKTsNCiANCiAJcGFyZW50ID0gc2Rldi0+c2Rldl9nZW5k ZXYucGFyZW50Ow0KLQlzdGFyZ2V0ID0gdG9fc2NzaV90YXJnZXQocGFyZW50KTsNCiANCiAJc3Bp bl9sb2NrX2lycXNhdmUoc2Rldi0+aG9zdC0+aG9zdF9sb2NrLCBmbGFncyk7DQotCXN0YXJnZXQt PnJlYXBfcmVmKys7DQogCWxpc3RfZGVsKCZzZGV2LT5zaWJsaW5ncyk7DQogCWxpc3RfZGVsKCZz ZGV2LT5zYW1lX3RhcmdldF9zaWJsaW5ncyk7DQogCWxpc3RfZGVsKCZzZGV2LT5zdGFydmVkX2Vu dHJ5KTsNCkBAIC0zNjEsOCArMzU4LDYgQEAgc3RhdGljIHZvaWQgc2NzaV9kZXZpY2VfZGV2X3Jl bGVhc2VfdXNlcmNvbnRleHQoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQ0KIAkvKiBOVUxMIHF1 ZXVlIG1lYW5zIHRoZSBkZXZpY2UgY2FuJ3QgYmUgdXNlZCAqLw0KIAlzZGV2LT5yZXF1ZXN0X3F1 ZXVlID0gTlVMTDsNCiANCi0Jc2NzaV90YXJnZXRfcmVhcChzY3NpX3RhcmdldChzZGV2KSk7DQot DQogCWtmcmVlKHNkZXYtPmlucXVpcnkpOw0KIAlrZnJlZShzZGV2KTsNCiANCkBAIC05NjMsMTMg Kzk1OCwyNyBAQCB2b2lkIF9fc2NzaV9yZW1vdmVfZGV2aWNlKHN0cnVjdCBzY3NpX2RldmljZSAq c2RldikNCiAJCWRldmljZV9kZWwoZGV2KTsNCiAJfSBlbHNlDQogCQlwdXRfZGV2aWNlKCZzZGV2 LT5zZGV2X2Rldik7DQorDQorCS8qDQorCSAqIFN0b3AgYWNjZXB0aW5nIG5ldyByZXF1ZXN0cyBh bmQgd2FpdCB1bnRpbCBhbGwgcXVldWVjb21tYW5kKCkgYW5kDQorCSAqIHNjc2lfcnVuX3F1ZXVl KCkgaW52b2NhdGlvbnMgaGF2ZSBmaW5pc2hlZCBiZWZvcmUgdGVhcmluZyBkb3duIHRoZQ0KKwkg KiBkZXZpY2UuDQorCSAqLw0KIAlzY3NpX2RldmljZV9zZXRfc3RhdGUoc2RldiwgU0RFVl9ERUwp Ow0KKwlibGtfY2xlYW51cF9xdWV1ZShzZGV2LT5yZXF1ZXN0X3F1ZXVlKTsNCisJY2FuY2VsX3dv cmtfc3luYygmc2Rldi0+cmVxdWV1ZV93b3JrKTsNCisNCiAJaWYgKHNkZXYtPmhvc3QtPmhvc3R0 LT5zbGF2ZV9kZXN0cm95KQ0KIAkJc2Rldi0+aG9zdC0+aG9zdHQtPnNsYXZlX2Rlc3Ryb3koc2Rl dik7DQogCXRyYW5zcG9ydF9kZXN0cm95X2RldmljZShkZXYpOw0KIA0KLQkvKiBGcmVlaW5nIHRo ZSBxdWV1ZSBzaWduYWxzIHRvIGJsb2NrIHRoYXQgd2UncmUgZG9uZSAqLw0KLQlibGtfY2xlYW51 cF9xdWV1ZShzZGV2LT5yZXF1ZXN0X3F1ZXVlKTsNCisJLyoNCisJICogUGFpcmVkIHdpdGggdGhl IGtyZWZfZ2V0KCkgaW4gc2NzaV9zeXNmc19pbml0aWFsaXplKCkuICBXZSBoYXZlDQorCSAqIHJl bW9lZCBzeXNmcyB2aXNpYmlsaXR5IGZyb20gdGhlIGRldmljZSwgc28gbWFrZSB0aGUgdGFyZ2V0 DQorCSAqIGludmlzaWJsZSBpZiB0aGlzIHdhcyB0aGUgbGFzdCBkZXZpY2UgdW5kZXJuZWF0aCBp dC4NCisJICovDQorCXNjc2lfdGFyZ2V0X3JlYXAoc2NzaV90YXJnZXQoc2RldikpOw0KKw0KIAlw dXRfZGV2aWNlKGRldik7DQogfQ0KIA0KQEAgLTEwMzIsNyArMTA0MSw3IEBAIHZvaWQgc2NzaV9y ZW1vdmVfdGFyZ2V0KHN0cnVjdCBkZXZpY2UgKmRldikNCiAJCQljb250aW51ZTsNCiAJCWlmIChz dGFyZ2V0LT5kZXYucGFyZW50ID09IGRldiB8fCAmc3RhcmdldC0+ZGV2ID09IGRldikgew0KIAkJ CS8qIGFzc3VtaW5nIG5ldyB0YXJnZXRzIGFycml2ZSBhdCB0aGUgZW5kICovDQotCQkJc3Rhcmdl dC0+cmVhcF9yZWYrKzsNCisJCQlrcmVmX2dldCgmc3RhcmdldC0+cmVhcF9yZWYpOw0KIAkJCXNw aW5fdW5sb2NrX2lycXJlc3RvcmUoc2hvc3QtPmhvc3RfbG9jaywgZmxhZ3MpOw0KIAkJCWlmIChs YXN0KQ0KIAkJCQlzY3NpX3RhcmdldF9yZWFwKGxhc3QpOw0KQEAgLTExMTYsNiArMTEyNSwxMiBA QCB2b2lkIHNjc2lfc3lzZnNfZGV2aWNlX2luaXRpYWxpemUoc3RydWN0IHNjc2lfZGV2aWNlICpz ZGV2KQ0KIAlsaXN0X2FkZF90YWlsKCZzZGV2LT5zYW1lX3RhcmdldF9zaWJsaW5ncywgJnN0YXJn ZXQtPmRldmljZXMpOw0KIAlsaXN0X2FkZF90YWlsKCZzZGV2LT5zaWJsaW5ncywgJnNob3N0LT5f X2RldmljZXMpOw0KIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKHNob3N0LT5ob3N0X2xvY2ssIGZs YWdzKTsNCisJLyoNCisJICogZGV2aWNlIGNhbiBub3cgb25seSBiZSByZW1vdmVkIHZpYSBfX3Nj c2lfcmVtb3ZlX2RldmljZSgpIHNvIGhvbGQNCisJICogdGhlIHRhcmdldC4gIFRhcmdldCB3aWxs IGJlIGhlbGQgaW4gQ1JFQVRFRCBzdGF0ZSB1bnRpbCBzb21ldGhpbmcNCisJICogYmVuZWF0aCBp dCBiZWNvbWVzIHZpc2libGUgKGluIHdoaWNoIGNhc2UgaXQgbW92ZXMgdG8gUlVOTklORykNCisJ ICovDQorCWtyZWZfZ2V0KCZzdGFyZ2V0LT5yZWFwX3JlZik7DQogfQ0KIA0KIGludCBzY3NpX2lz X3NkZXZfZGV2aWNlKGNvbnN0IHN0cnVjdCBkZXZpY2UgKmRldikNCmRpZmYgLS1naXQgYS9kcml2 ZXJzL3RhcmdldC9pc2NzaS9pc2NzaV90YXJnZXRfYXV0aC5jIGIvZHJpdmVycy90YXJnZXQvaXNj c2kvaXNjc2lfdGFyZ2V0X2F1dGguYw0KaW5kZXggNTllNzM3OC4uMzJlYjZiNCAxMDA2NDQNCi0t LSBhL2RyaXZlcnMvdGFyZ2V0L2lzY3NpL2lzY3NpX3RhcmdldF9hdXRoLmMNCisrKyBiL2RyaXZl cnMvdGFyZ2V0L2lzY3NpL2lzY3NpX3RhcmdldF9hdXRoLmMNCkBAIC0zMzcsNiArMzM3LDE2IEBA IHN0YXRpYyBpbnQgY2hhcF9zZXJ2ZXJfY29tcHV0ZV9tZDUoDQogCQlnb3RvIG91dDsNCiAJfQ0K IAkvKg0KKwkgKiBEdXJpbmcgbXV0dWFsIGF1dGhlbnRpY2F0aW9uLCB0aGUgQ0hBUF9DIGdlbmVy YXRlZCBieSB0aGUNCisJICogaW5pdGlhdG9yIG11c3Qgbm90IG1hdGNoIHRoZSBvcmlnaW5hbCBD SEFQX0MgZ2VuZXJhdGVkIGJ5DQorCSAqIHRoZSB0YXJnZXQuDQorCSAqLw0KKwlpZiAoIW1lbWNt cChjaGFsbGVuZ2VfYmluaGV4LCBjaGFwLT5jaGFsbGVuZ2UsIENIQVBfQ0hBTExFTkdFX0xFTkdU SCkpIHsNCisJCXByX2VycigiaW5pdGlhdG9yIENIQVBfQyBtYXRjaGVzIHRhcmdldCBDSEFQX0Ms IGZhaWxpbmciDQorCQkgICAgICAgIiBsb2dpbiBhdHRlbXB0XG4iKTsNCisJCWdvdG8gb3V0Ow0K Kwl9DQorCS8qDQogCSAqIEdlbmVyYXRlIENIQVBfTiBhbmQgQ0hBUF9SIGZvciBtdXR1YWwgYXV0 aGVudGljYXRpb24uDQogCSAqLw0KIAl0Zm0gPSBjcnlwdG9fYWxsb2NfaGFzaCgibWQ1IiwgMCwg Q1JZUFRPX0FMR19BU1lOQyk7DQpkaWZmIC0tZ2l0IGEvZHJpdmVycy90YXJnZXQvdGFyZ2V0X2Nv cmVfZGV2aWNlLmMgYi9kcml2ZXJzL3RhcmdldC90YXJnZXRfY29yZV9kZXZpY2UuYw0KaW5kZXgg NWRlZjM1OS4uNjk5Mzk2MSAxMDA2NDQNCi0tLSBhL2RyaXZlcnMvdGFyZ2V0L3RhcmdldF9jb3Jl X2RldmljZS5jDQorKysgYi9kcml2ZXJzL3RhcmdldC90YXJnZXRfY29yZV9kZXZpY2UuYw0KQEAg LTY0Niw2ICs2NDYsNyBAQCB2b2lkIGNvcmVfZGV2X3VuZXhwb3J0KA0KIAlzcGluX3VubG9jaygm ZGV2LT5zZV9wb3J0X2xvY2spOw0KIA0KIAlzZV9kZXZfc3RvcChkZXYpOw0KKwlsdW4tPmx1bl9z ZXAgPSBOVUxMOw0KIAlsdW4tPmx1bl9zZV9kZXYgPSBOVUxMOw0KIH0NCiANCmRpZmYgLS1naXQg YS9kcml2ZXJzL3RhcmdldC90YXJnZXRfY29yZV9yZC5jIGIvZHJpdmVycy90YXJnZXQvdGFyZ2V0 X2NvcmVfcmQuYw0KaW5kZXggMDJlNTFmYS4uNmM3ODg2YiAxMDA2NDQNCi0tLSBhL2RyaXZlcnMv dGFyZ2V0L3RhcmdldF9jb3JlX3JkLmMNCisrKyBiL2RyaXZlcnMvdGFyZ2V0L3RhcmdldF9jb3Jl X3JkLmMNCkBAIC0xNzksNyArMTc5LDcgQEAgc3RhdGljIGludCByZF9idWlsZF9kZXZpY2Vfc3Bh Y2Uoc3RydWN0IHJkX2RldiAqcmRfZGV2KQ0KIAkJCQkJCS0gMTsNCiANCiAJCWZvciAoaiA9IDA7 IGogPCBzZ19wZXJfdGFibGU7IGorKykgew0KLQkJCXBnID0gYWxsb2NfcGFnZXMoR0ZQX0tFUk5F TCwgMCk7DQorCQkJcGcgPSBhbGxvY19wYWdlcyhHRlBfS0VSTkVMIHwgX19HRlBfWkVSTywgMCk7 DQogCQkJaWYgKCFwZykgew0KIAkJCQlwcl9lcnIoIlVuYWJsZSB0byBhbGxvY2F0ZSBzY2F0dGVy bGlzdCINCiAJCQkJCSIgcGFnZXMgZm9yIHN0cnVjdCByZF9kZXZfc2dfdGFibGVcbiIpOw0KZGlm ZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2NsYXNzL2NkYy1hY20uYyBiL2RyaXZlcnMvdXNiL2NsYXNz L2NkYy1hY20uYw0KaW5kZXggMzIwZGIyYS4uMjllNzZiZSAxMDA2NDQNCi0tLSBhL2RyaXZlcnMv dXNiL2NsYXNzL2NkYy1hY20uYw0KKysrIGIvZHJpdmVycy91c2IvY2xhc3MvY2RjLWFjbS5jDQpA QCAtNzIsMTMgKzcyLDIzIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgdHR5X3BvcnRfb3BlcmF0aW9u cyBhY21fcG9ydF9vcHMgPSB7DQogc3RhdGljIGludCBhY21fY3RybF9tc2coc3RydWN0IGFjbSAq YWNtLCBpbnQgcmVxdWVzdCwgaW50IHZhbHVlLA0KIAkJCQkJCQl2b2lkICpidWYsIGludCBsZW4p DQogew0KLQlpbnQgcmV0dmFsID0gdXNiX2NvbnRyb2xfbXNnKGFjbS0+ZGV2LCB1c2Jfc25kY3Ry bHBpcGUoYWNtLT5kZXYsIDApLA0KKwlpbnQgcmV0dmFsOw0KKw0KKwlyZXR2YWwgPSB1c2JfYXV0 b3BtX2dldF9pbnRlcmZhY2UoYWNtLT5jb250cm9sKTsNCisJaWYgKHJldHZhbCkNCisJCXJldHVy biByZXR2YWw7DQorDQorCXJldHZhbCA9IHVzYl9jb250cm9sX21zZyhhY20tPmRldiwgdXNiX3Nu ZGN0cmxwaXBlKGFjbS0+ZGV2LCAwKSwNCiAJCXJlcXVlc3QsIFVTQl9SVF9BQ00sIHZhbHVlLA0K IAkJYWNtLT5jb250cm9sLT5hbHRzZXR0aW5nWzBdLmRlc2MuYkludGVyZmFjZU51bWJlciwNCiAJ CWJ1ZiwgbGVuLCA1MDAwKTsNCisNCiAJZGV2X2RiZygmYWNtLT5jb250cm9sLT5kZXYsDQogCQkJ IiVzIC0gcnEgMHglMDJ4LCB2YWwgJSN4LCBsZW4gJSN4LCByZXN1bHQgJWRcbiIsDQogCQkJX19m dW5jX18sIHJlcXVlc3QsIHZhbHVlLCBsZW4sIHJldHZhbCk7DQorDQorCXVzYl9hdXRvcG1fcHV0 X2ludGVyZmFjZShhY20tPmNvbnRyb2wpOw0KKw0KIAlyZXR1cm4gcmV0dmFsIDwgMCA/IHJldHZh bCA6IDA7DQogfQ0KIA0KQEAgLTE4MSwxNCArMTkxLDE3IEBAIHN0YXRpYyBpbnQgYWNtX3dyaXRl X3N0YXJ0KHN0cnVjdCBhY20gKmFjbSwgaW50IHdibikNCiANCiAJZGV2X3ZkYmcoJmFjbS0+ZGF0 YS0+ZGV2LCAiJXMgLSBzdXNwX2NvdW50ICVkXG4iLCBfX2Z1bmNfXywNCiAJCQkJCQkJYWNtLT5z dXNwX2NvdW50KTsNCi0JdXNiX2F1dG9wbV9nZXRfaW50ZXJmYWNlX2FzeW5jKGFjbS0+Y29udHJv bCk7DQorCXJjID0gdXNiX2F1dG9wbV9nZXRfaW50ZXJmYWNlX2FzeW5jKGFjbS0+Y29udHJvbCk7 DQorCWlmIChyYykgew0KKwkJd2ItPnVzZSA9IDA7DQorCQlzcGluX3VubG9ja19pcnFyZXN0b3Jl KCZhY20tPndyaXRlX2xvY2ssIGZsYWdzKTsNCisJCXJldHVybiByYzsNCisJfQ0KKw0KIAlpZiAo YWNtLT5zdXNwX2NvdW50KSB7DQotCQlpZiAoIWFjbS0+ZGVsYXllZF93YikNCi0JCQlhY20tPmRl bGF5ZWRfd2IgPSB3YjsNCi0JCWVsc2UNCi0JCQl1c2JfYXV0b3BtX3B1dF9pbnRlcmZhY2VfYXN5 bmMoYWNtLT5jb250cm9sKTsNCisJCXVzYl9hbmNob3JfdXJiKHdiLT51cmIsICZhY20tPmRlbGF5 ZWQpOw0KIAkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmYWNtLT53cml0ZV9sb2NrLCBmbGFncyk7 DQotCQlyZXR1cm4gMDsJLyogQSB3aGl0ZSBsaWUgKi8NCisJCXJldHVybiAwOw0KIAl9DQogCXVz Yl9tYXJrX2xhc3RfYnVzeShhY20tPmRldik7DQogDQpAQCAtNTQ1LDExICs1NTgsMjMgQEAgc3Rh dGljIHZvaWQgYWNtX3R0eV91bnJlZ2lzdGVyKHN0cnVjdCBhY20gKmFjbSkNCiANCiBzdGF0aWMg dm9pZCBhY21fcG9ydF9kb3duKHN0cnVjdCBhY20gKmFjbSkNCiB7DQorCXN0cnVjdCB1cmIgKnVy YjsNCisJc3RydWN0IGFjbV93YiAqd2I7DQogCWludCBpOw0KIA0KIAlpZiAoYWNtLT5kZXYpIHsN CiAJCXVzYl9hdXRvcG1fZ2V0X2ludGVyZmFjZShhY20tPmNvbnRyb2wpOw0KIAkJYWNtX3NldF9j b250cm9sKGFjbSwgYWNtLT5jdHJsb3V0ID0gMCk7DQorDQorCQlmb3IgKDs7KSB7DQorCQkJdXJi ID0gdXNiX2dldF9mcm9tX2FuY2hvcigmYWNtLT5kZWxheWVkKTsNCisJCQlpZiAoIXVyYikNCisJ CQkJYnJlYWs7DQorCQkJd2IgPSB1cmItPmNvbnRleHQ7DQorCQkJd2ItPnVzZSA9IDA7DQorCQkJ dXNiX2F1dG9wbV9wdXRfaW50ZXJmYWNlX2FzeW5jKGFjbS0+Y29udHJvbCk7DQorCQl9DQorDQog CQl1c2Jfa2lsbF91cmIoYWNtLT5jdHJsdXJiKTsNCiAJCWZvciAoaSA9IDA7IGkgPCBBQ01fTlc7 IGkrKykNCiAJCQl1c2Jfa2lsbF91cmIoYWNtLT53YltpXS51cmIpOw0KQEAgLTExMTIsNiArMTEz Nyw3IEBAIG1hZGVfY29tcHJlc3NlZF9wcm9iZToNCiAJCWFjbS0+YkludGVydmFsID0gZXByZWFk LT5iSW50ZXJ2YWw7DQogCXR0eV9wb3J0X2luaXQoJmFjbS0+cG9ydCk7DQogCWFjbS0+cG9ydC5v cHMgPSAmYWNtX3BvcnRfb3BzOw0KKwlpbml0X3VzYl9hbmNob3IoJmFjbS0+ZGVsYXllZCk7DQog DQogCWJ1ZiA9IHVzYl9hbGxvY19jb2hlcmVudCh1c2JfZGV2LCBjdHJsc2l6ZSwgR0ZQX0tFUk5F TCwgJmFjbS0+Y3RybF9kbWEpOw0KIAlpZiAoIWJ1Zikgew0KQEAgLTEzMzgsMTggKzEzNjQsMTUg QEAgc3RhdGljIGludCBhY21fc3VzcGVuZChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZiwgcG1f bWVzc2FnZV90IG1lc3NhZ2UpDQogCXN0cnVjdCBhY20gKmFjbSA9IHVzYl9nZXRfaW50ZmRhdGEo aW50Zik7DQogCWludCBjbnQ7DQogDQorCXNwaW5fbG9ja19pcnEoJmFjbS0+cmVhZF9sb2NrKTsN CisJc3Bpbl9sb2NrKCZhY20tPndyaXRlX2xvY2spOw0KIAlpZiAoUE1TR19JU19BVVRPKG1lc3Nh Z2UpKSB7DQotCQlpbnQgYjsNCi0NCi0JCXNwaW5fbG9ja19pcnEoJmFjbS0+d3JpdGVfbG9jayk7 DQotCQliID0gYWNtLT50cmFuc21pdHRpbmc7DQotCQlzcGluX3VubG9ja19pcnEoJmFjbS0+d3Jp dGVfbG9jayk7DQotCQlpZiAoYikNCisJCWlmIChhY20tPnRyYW5zbWl0dGluZykgew0KKwkJCXNw aW5fdW5sb2NrKCZhY20tPndyaXRlX2xvY2spOw0KKwkJCXNwaW5fdW5sb2NrX2lycSgmYWNtLT5y ZWFkX2xvY2spOw0KIAkJCXJldHVybiAtRUJVU1k7DQorCQl9DQogCX0NCi0NCi0Jc3Bpbl9sb2Nr X2lycSgmYWNtLT5yZWFkX2xvY2spOw0KLQlzcGluX2xvY2soJmFjbS0+d3JpdGVfbG9jayk7DQog CWNudCA9IGFjbS0+c3VzcF9jb3VudCsrOw0KIAlzcGluX3VubG9jaygmYWNtLT53cml0ZV9sb2Nr KTsNCiAJc3Bpbl91bmxvY2tfaXJxKCZhY20tPnJlYWRfbG9jayk7DQpAQCAtMTM3MiwzMCArMTM5 NSwyNSBAQCBzdGF0aWMgaW50IGFjbV9zdXNwZW5kKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRm LCBwbV9tZXNzYWdlX3QgbWVzc2FnZSkNCiBzdGF0aWMgaW50IGFjbV9yZXN1bWUoc3RydWN0IHVz Yl9pbnRlcmZhY2UgKmludGYpDQogew0KIAlzdHJ1Y3QgYWNtICphY20gPSB1c2JfZ2V0X2ludGZk YXRhKGludGYpOw0KLQlzdHJ1Y3QgYWNtX3diICp3YjsNCisJc3RydWN0IHVyYiAqdXJiOw0KIAlp bnQgcnYgPSAwOw0KLQlpbnQgY250Ow0KIA0KKwltdXRleF9sb2NrKCZhY20tPm11dGV4KTsNCiAJ c3Bpbl9sb2NrX2lycSgmYWNtLT5yZWFkX2xvY2spOw0KLQlhY20tPnN1c3BfY291bnQgLT0gMTsN Ci0JY250ID0gYWNtLT5zdXNwX2NvdW50Ow0KLQlzcGluX3VubG9ja19pcnEoJmFjbS0+cmVhZF9s b2NrKTsNCisJc3Bpbl9sb2NrKCZhY20tPndyaXRlX2xvY2spOw0KIA0KLQlpZiAoY250KQ0KLQkJ cmV0dXJuIDA7DQorCWlmICgtLWFjbS0+c3VzcF9jb3VudCkNCisJCWdvdG8gb3V0Ow0KIA0KLQlt dXRleF9sb2NrKCZhY20tPm11dGV4KTsNCiAJaWYgKGFjbS0+cG9ydC5jb3VudCkgew0KLQkJcnYg PSB1c2Jfc3VibWl0X3VyYihhY20tPmN0cmx1cmIsIEdGUF9OT0lPKTsNCi0NCi0JCXNwaW5fbG9j a19pcnEoJmFjbS0+d3JpdGVfbG9jayk7DQotCQlpZiAoYWNtLT5kZWxheWVkX3diKSB7DQotCQkJ d2IgPSBhY20tPmRlbGF5ZWRfd2I7DQotCQkJYWNtLT5kZWxheWVkX3diID0gTlVMTDsNCi0JCQlz cGluX3VubG9ja19pcnEoJmFjbS0+d3JpdGVfbG9jayk7DQotCQkJYWNtX3N0YXJ0X3diKGFjbSwg d2IpOw0KLQkJfSBlbHNlIHsNCi0JCQlzcGluX3VubG9ja19pcnEoJmFjbS0+d3JpdGVfbG9jayk7 DQorCQlydiA9IHVzYl9zdWJtaXRfdXJiKGFjbS0+Y3RybHVyYiwgR0ZQX0FUT01JQyk7DQorDQor CQlmb3IgKDs7KSB7DQorCQkJdXJiID0gdXNiX2dldF9mcm9tX2FuY2hvcigmYWNtLT5kZWxheWVk KTsNCisJCQlpZiAoIXVyYikNCisJCQkJYnJlYWs7DQorDQorCQkJYWNtX3N0YXJ0X3diKGFjbSwg dXJiLT5jb250ZXh0KTsNCiAJCX0NCiANCiAJCS8qDQpAQCAtMTQwMywxMyArMTQyMSwxNSBAQCBz dGF0aWMgaW50IGFjbV9yZXN1bWUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpDQogCQkgKiBk byB0aGUgd3JpdGUgcGF0aCBhdCBhbGwgY29zdA0KIAkJICovDQogCQlpZiAocnYgPCAwKQ0KLQkJ CWdvdG8gZXJyX291dDsNCisJCQlnb3RvIG91dDsNCiANCi0JCXJ2ID0gYWNtX3N1Ym1pdF9yZWFk X3VyYnMoYWNtLCBHRlBfTk9JTyk7DQorCQlydiA9IGFjbV9zdWJtaXRfcmVhZF91cmJzKGFjbSwg R0ZQX0FUT01JQyk7DQogCX0NCi0NCi1lcnJfb3V0Og0KK291dDoNCisJc3Bpbl91bmxvY2soJmFj bS0+d3JpdGVfbG9jayk7DQorCXNwaW5fdW5sb2NrX2lycSgmYWNtLT5yZWFkX2xvY2spOw0KIAlt dXRleF91bmxvY2soJmFjbS0+bXV0ZXgpOw0KKw0KIAlyZXR1cm4gcnY7DQogfQ0KIA0KZGlmZiAt LWdpdCBhL2RyaXZlcnMvdXNiL2NsYXNzL2NkYy1hY20uaCBiL2RyaXZlcnMvdXNiL2NsYXNzL2Nk Yy1hY20uaA0KaW5kZXggY2E3OTM3Zi4uYzNmMWIzNiAxMDA2NDQNCi0tLSBhL2RyaXZlcnMvdXNi L2NsYXNzL2NkYy1hY20uaA0KKysrIGIvZHJpdmVycy91c2IvY2xhc3MvY2RjLWFjbS5oDQpAQCAt MTE2LDcgKzExNiw3IEBAIHN0cnVjdCBhY20gew0KIAl1bnNpZ25lZCBpbnQgdGhyb3R0bGVkOjE7 CQkJLyogYWN0dWFsbHkgdGhyb3R0bGVkICovDQogCXVuc2lnbmVkIGludCB0aHJvdHRsZV9yZXE6 MTsJCQkvKiB0aHJvdHRsZSByZXF1ZXN0ZWQgKi8NCiAJdTggYkludGVydmFsOw0KLQlzdHJ1Y3Qg YWNtX3diICpkZWxheWVkX3diOwkJCS8qIHdyaXRlIHF1ZXVlZCBmb3IgYSBkZXZpY2UgYWJvdXQg dG8gYmUgd29rZW4gKi8NCisJc3RydWN0IHVzYl9hbmNob3IgZGVsYXllZDsJCQkvKiB3cml0ZXMg cXVldWVkIGZvciBhIGRldmljZSBhYm91dCB0byBiZSB3b2tlbiAqLw0KIH07DQogDQogI2RlZmlu ZSBDRENfREFUQV9JTlRFUkZBQ0VfVFlQRQkweDBhDQpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2Iv Y29yZS9kcml2ZXIuYyBiL2RyaXZlcnMvdXNiL2NvcmUvZHJpdmVyLmMNCmluZGV4IDlmMzAwM2Uu LmNjMTNhYmYgMTAwNjQ0DQotLS0gYS9kcml2ZXJzL3VzYi9jb3JlL2RyaXZlci5jDQorKysgYi9k cml2ZXJzL3VzYi9jb3JlL2RyaXZlci5jDQpAQCAtMTY4NiwxMCArMTY4NiwxMyBAQCBpbnQgdXNi X3J1bnRpbWVfc3VzcGVuZChzdHJ1Y3QgZGV2aWNlICpkZXYpDQogCWlmIChzdGF0dXMgPT0gLUVB R0FJTiB8fCBzdGF0dXMgPT0gLUVCVVNZKQ0KIAkJdXNiX21hcmtfbGFzdF9idXN5KHVkZXYpOw0K IA0KLQkvKiBUaGUgUE0gY29yZSByZWFjdHMgYmFkbHkgdW5sZXNzIHRoZSByZXR1cm4gY29kZSBp cyAwLA0KLQkgKiAtRUFHQUlOLCBvciAtRUJVU1ksIHNvIGFsd2F5cyByZXR1cm4gLUVCVVNZIG9u IGFuIGVycm9yLg0KKwkvKg0KKwkgKiBUaGUgUE0gY29yZSByZWFjdHMgYmFkbHkgdW5sZXNzIHRo ZSByZXR1cm4gY29kZSBpcyAwLA0KKwkgKiAtRUFHQUlOLCBvciAtRUJVU1ksIHNvIGFsd2F5cyBy ZXR1cm4gLUVCVVNZIG9uIGFuIGVycm9yDQorCSAqIChleGNlcHQgZm9yIHJvb3QgaHVicywgYmVj YXVzZSB0aGV5IGRvbid0IHN1c3BlbmQgdGhyb3VnaA0KKwkgKiBhbiB1cHN0cmVhbSBwb3J0IGxp a2Ugb3RoZXIgVVNCIGRldmljZXMpLg0KIAkgKi8NCi0JaWYgKHN0YXR1cyAhPSAwKQ0KKwlpZiAo c3RhdHVzICE9IDAgJiYgdWRldi0+cGFyZW50KQ0KIAkJcmV0dXJuIC1FQlVTWTsNCiAJcmV0dXJu IHN0YXR1czsNCiB9DQpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvY29yZS9odWIuYyBiL2RyaXZl cnMvdXNiL2NvcmUvaHViLmMNCmluZGV4IDcwMTMxNjUuLjEyZjNhMzcgMTAwNjQ0DQotLS0gYS9k cml2ZXJzL3VzYi9jb3JlL2h1Yi5jDQorKysgYi9kcml2ZXJzL3VzYi9jb3JlL2h1Yi5jDQpAQCAt MTM3MCwxNCArMTM3MCwyNCBAQCBzdGF0aWMgaW50IGh1Yl9wcm9iZShzdHJ1Y3QgdXNiX2ludGVy ZmFjZSAqaW50ZiwgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKmlkKQ0KIAlkZXNjID0gaW50 Zi0+Y3VyX2FsdHNldHRpbmc7DQogCWhkZXYgPSBpbnRlcmZhY2VfdG9fdXNiZGV2KGludGYpOw0K IA0KLQkvKiBIdWJzIGhhdmUgcHJvcGVyIHN1c3BlbmQvcmVzdW1lIHN1cHBvcnQuICBVU0IgMy4w IGRldmljZSBzdXNwZW5kIGlzDQorCS8qDQorCSAqIEh1YnMgaGF2ZSBwcm9wZXIgc3VzcGVuZC9y ZXN1bWUgc3VwcG9ydCwgZXhjZXB0IGZvciByb290IGh1YnMNCisJICogd2hlcmUgdGhlIGNvbnRy b2xsZXIgZHJpdmVyIGRvZXNuJ3QgaGF2ZSBidXNfc3VzcGVuZCBhbmQNCisJICogYnVzX3Jlc3Vt ZSBtZXRob2RzLiAgQWxzbywgVVNCIDMuMCBkZXZpY2Ugc3VzcGVuZCBpcw0KIAkgKiBkaWZmZXJl bnQgZnJvbSBVU0IgMi4wLzEuMSBkZXZpY2Ugc3VzcGVuZCwgYW5kIHVuZm9ydHVuYXRlbHkgd2UN CiAJICogZG9uJ3Qgc3VwcG9ydCBpdCB5ZXQuICBTbyBsZWF2ZSBhdXRvc3VzcGVuZCBkaXNhYmxl ZCBmb3IgVVNCIDMuMA0KIAkgKiBleHRlcm5hbCBodWJzIGZvciBub3cuICBFbmFibGUgYXV0b3N1 c3BlbmQgZm9yIFVTQiAzLjAgcm9vdGh1YnMsDQogCSAqIHNpbmNlIHRoYXQgaXNuJ3QgYSAicmVh bCIgaHViLg0KIAkgKi8NCi0JaWYgKCFodWJfaXNfc3VwZXJzcGVlZChoZGV2KSB8fCAhaGRldi0+ cGFyZW50KQ0KLQkJdXNiX2VuYWJsZV9hdXRvc3VzcGVuZChoZGV2KTsNCisJaWYgKGhkZXYtPnBh cmVudCkgewkJLyogbm9ybWFsIGRldmljZSAqLw0KKwkJaWYgKCFodWJfaXNfc3VwZXJzcGVlZCho ZGV2KSkNCisJCQl1c2JfZW5hYmxlX2F1dG9zdXNwZW5kKGhkZXYpOw0KKwl9IGVsc2UgewkJCS8q IHJvb3QgaHViICovDQorCQljb25zdCBzdHJ1Y3QgaGNfZHJpdmVyICpkcnYgPSBidXNfdG9faGNk KGhkZXYtPmJ1cyktPmRyaXZlcjsNCisNCisJCWlmIChkcnYtPmJ1c19zdXNwZW5kICYmIGRydi0+ YnVzX3Jlc3VtZSkNCisJCQl1c2JfZW5hYmxlX2F1dG9zdXNwZW5kKGhkZXYpOw0KKwl9DQogDQog CWlmIChoZGV2LT5sZXZlbCA9PSBNQVhfVE9QT19MRVZFTCkgew0KIAkJZGV2X2VycigmaW50Zi0+ ZGV2LA0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2hvc3QvcGNpLXF1aXJrcy5jIGIvZHJpdmVy cy91c2IvaG9zdC9wY2ktcXVpcmtzLmMNCmluZGV4IGM3Y2ZiY2UuLmVhZTM1YzEgMTAwNjQ0DQot LS0gYS9kcml2ZXJzL3VzYi9ob3N0L3BjaS1xdWlya3MuYw0KKysrIGIvZHJpdmVycy91c2IvaG9z dC9wY2ktcXVpcmtzLmMNCkBAIC01NTUsNiArNTU1LDE0IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qg ZG1pX3N5c3RlbV9pZCBfX2RldmluaXRjb25zdCBlaGNpX2RtaV9ub2hhbmRvZmZfdGFibGVbXSA9 IHsNCiAJCQlETUlfTUFUQ0goRE1JX0JJT1NfVkVSU0lPTiwgIkx1Y2lkLSIpLA0KIAkJfSwNCiAJ fSwNCisJew0KKwkJLyogSEFTRUUgRTIwMCAqLw0KKwkJLm1hdGNoZXMgPSB7DQorCQkJRE1JX01B VENIKERNSV9CT0FSRF9WRU5ET1IsICJIQVNFRSIpLA0KKwkJCURNSV9NQVRDSChETUlfQk9BUkRf TkFNRSwgIkUyMTAiKSwNCisJCQlETUlfTUFUQ0goRE1JX0JJT1NfVkVSU0lPTiwgIjYuMDAiKSwN CisJCX0sDQorCX0sDQogCXsgfQ0KIH07DQogDQpAQCAtNTY0LDkgKzU3MiwxNCBAQCBzdGF0aWMg dm9pZCBfX2RldmluaXQgZWhjaV9iaW9zX2hhbmRvZmYoc3RydWN0IHBjaV9kZXYgKnBkZXYsDQog ew0KIAlpbnQgdHJ5X2hhbmRvZmYgPSAxLCB0cmllZF9oYW5kb2ZmID0gMDsNCiANCi0JLyogVGhl IFBlZ2F0cm9uIEx1Y2lkIHRhYmxldCBzcG9yYWRpY2FsbHkgd2FpdHMgZm9yIDk4IHNlY29uZHMg dHJ5aW5nDQotCSAqIHRoZSBoYW5kb2ZmIG9uIGl0cyB1bnVzZWQgY29udHJvbGxlci4gIFNraXAg aXQuICovDQotCWlmIChwZGV2LT52ZW5kb3IgPT0gMHg4MDg2ICYmIHBkZXYtPmRldmljZSA9PSAw eDI4M2EpIHsNCisJLyoNCisJICogVGhlIFBlZ2F0cm9uIEx1Y2lkIHRhYmxldCBzcG9yYWRpY2Fs bHkgd2FpdHMgZm9yIDk4IHNlY29uZHMgdHJ5aW5nDQorCSAqIHRoZSBoYW5kb2ZmIG9uIGl0cyB1 bnVzZWQgY29udHJvbGxlci4gIFNraXAgaXQuDQorCSAqDQorCSAqIFRoZSBIQVNFRSBFMjAwIGhh bmdzIHdoZW4gdGhlIHNlbWFwaG9yZSBpcyBzZXQgKGJ1Z3ppbGxhICM3NzAyMSkuDQorCSAqLw0K KwlpZiAocGRldi0+dmVuZG9yID09IDB4ODA4NiAmJiAocGRldi0+ZGV2aWNlID09IDB4MjgzYSB8 fA0KKwkJCXBkZXYtPmRldmljZSA9PSAweDI3Y2MpKSB7DQogCQlpZiAoZG1pX2NoZWNrX3N5c3Rl bShlaGNpX2RtaV9ub2hhbmRvZmZfdGFibGUpKQ0KIAkJCXRyeV9oYW5kb2ZmID0gMDsNCiAJfQ0K ZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2hvc3QveGhjaS1tZW0uYyBiL2RyaXZlcnMvdXNiL2hv c3QveGhjaS1tZW0uYw0KaW5kZXggZWM3MzU0MS4uNzQ5MjJiOSAxMDA2NDQNCi0tLSBhL2RyaXZl cnMvdXNiL2hvc3QveGhjaS1tZW0uYw0KKysrIGIvZHJpdmVycy91c2IvaG9zdC94aGNpLW1lbS5j DQpAQCAtMTcyMiw2ICsxNzIyLDE2IEBAIHZvaWQgeGhjaV9tZW1fY2xlYW51cChzdHJ1Y3QgeGhj aV9oY2QgKnhoY2kpDQogCQlrZnJlZShjdXJfY2QpOw0KIAl9DQogDQorCW51bV9wb3J0cyA9IEhD U19NQVhfUE9SVFMoeGhjaS0+aGNzX3BhcmFtczEpOw0KKwlmb3IgKGkgPSAwOyBpIDwgbnVtX3Bv cnRzOyBpKyspIHsNCisJCXN0cnVjdCB4aGNpX2ludGVydmFsX2J3X3RhYmxlICpid3QgPSAmeGhj aS0+cmhfYndbaV0uYndfdGFibGU7DQorCQlmb3IgKGogPSAwOyBqIDwgWEhDSV9NQVhfSU5URVJW QUw7IGorKykgew0KKwkJCXN0cnVjdCBsaXN0X2hlYWQgKmVwID0gJmJ3dC0+aW50ZXJ2YWxfYndb al0uZW5kcG9pbnRzOw0KKwkJCXdoaWxlICghbGlzdF9lbXB0eShlcCkpDQorCQkJCWxpc3RfZGVs X2luaXQoZXAtPm5leHQpOw0KKwkJfQ0KKwl9DQorDQogCWZvciAoaSA9IDE7IGkgPCBNQVhfSENf U0xPVFM7ICsraSkNCiAJCXhoY2lfZnJlZV92aXJ0X2RldmljZSh4aGNpLCBpKTsNCiANCkBAIC0x NzYyLDE2ICsxNzcyLDYgQEAgdm9pZCB4aGNpX21lbV9jbGVhbnVwKHN0cnVjdCB4aGNpX2hjZCAq eGhjaSkNCiAJaWYgKCF4aGNpLT5yaF9idykNCiAJCWdvdG8gbm9fYnc7DQogDQotCW51bV9wb3J0 cyA9IEhDU19NQVhfUE9SVFMoeGhjaS0+aGNzX3BhcmFtczEpOw0KLQlmb3IgKGkgPSAwOyBpIDwg bnVtX3BvcnRzOyBpKyspIHsNCi0JCXN0cnVjdCB4aGNpX2ludGVydmFsX2J3X3RhYmxlICpid3Qg PSAmeGhjaS0+cmhfYndbaV0uYndfdGFibGU7DQotCQlmb3IgKGogPSAwOyBqIDwgWEhDSV9NQVhf SU5URVJWQUw7IGorKykgew0KLQkJCXN0cnVjdCBsaXN0X2hlYWQgKmVwID0gJmJ3dC0+aW50ZXJ2 YWxfYndbal0uZW5kcG9pbnRzOw0KLQkJCXdoaWxlICghbGlzdF9lbXB0eShlcCkpDQotCQkJCWxp c3RfZGVsX2luaXQoZXAtPm5leHQpOw0KLQkJfQ0KLQl9DQotDQogCWZvciAoaSA9IDA7IGkgPCBu dW1fcG9ydHM7IGkrKykgew0KIAkJc3RydWN0IHhoY2lfdHRfYndfaW5mbyAqdHQsICpuOw0KIAkJ bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHR0LCBuLCAmeGhjaS0+cmhfYndbaV0udHRzLCB0dF9s aXN0KSB7DQpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvbWlzYy91c2J0ZXN0LmMgYi9kcml2ZXJz L3VzYi9taXNjL3VzYnRlc3QuYw0KaW5kZXggYjlhYzlhMy4uMmEzOGExNyAxMDA2NDQNCi0tLSBh L2RyaXZlcnMvdXNiL21pc2MvdXNidGVzdC5jDQorKysgYi9kcml2ZXJzL3VzYi9taXNjL3VzYnRl c3QuYw0KQEAgLTExMzIsNiArMTEzMiwxMSBAQCBzdGF0aWMgaW50IHVubGluazEoc3RydWN0IHVz YnRlc3RfZGV2ICpkZXYsIGludCBwaXBlLCBpbnQgc2l6ZSwgaW50IGFzeW5jKQ0KIAl1cmItPmNv bnRleHQgPSAmY29tcGxldGlvbjsNCiAJdXJiLT5jb21wbGV0ZSA9IHVubGluazFfY2FsbGJhY2s7 DQogDQorCWlmICh1c2JfcGlwZW91dCh1cmItPnBpcGUpKSB7DQorCQlzaW1wbGVfZmlsbF9idWYo dXJiKTsNCisJCXVyYi0+dHJhbnNmZXJfZmxhZ3MgfD0gVVJCX1pFUk9fUEFDS0VUOw0KKwl9DQor DQogCS8qIGtlZXAgdGhlIGVuZHBvaW50IGJ1c3kuICB0aGVyZSBhcmUgbG90cyBvZiBoYy9oY2Qt aW50ZXJuYWwNCiAJICogc3RhdGVzLCBhbmQgdGVzdGluZyBzaG91bGQgZ2V0IHRvIGFsbCBvZiB0 aGVtIG92ZXIgdGltZS4NCiAJICoNCkBAIC0xMjYyLDYgKzEyNjcsMTEgQEAgc3RhdGljIGludCB1 bmxpbmtfcXVldWVkKHN0cnVjdCB1c2J0ZXN0X2RldiAqZGV2LCBpbnQgcGlwZSwgdW5zaWduZWQg bnVtLA0KIAkJCQl1bmxpbmtfcXVldWVkX2NhbGxiYWNrLCAmY3R4KTsNCiAJCWN0eC51cmJzW2ld LT50cmFuc2Zlcl9kbWEgPSBidWZfZG1hOw0KIAkJY3R4LnVyYnNbaV0tPnRyYW5zZmVyX2ZsYWdz ID0gVVJCX05PX1RSQU5TRkVSX0RNQV9NQVA7DQorDQorCQlpZiAodXNiX3BpcGVvdXQoY3R4LnVy YnNbaV0tPnBpcGUpKSB7DQorCQkJc2ltcGxlX2ZpbGxfYnVmKGN0eC51cmJzW2ldKTsNCisJCQlj dHgudXJic1tpXS0+dHJhbnNmZXJfZmxhZ3MgfD0gVVJCX1pFUk9fUEFDS0VUOw0KKwkJfQ0KIAl9 DQogDQogCS8qIFN1Ym1pdCBhbGwgdGhlIFVSQnMgYW5kIHRoZW4gdW5saW5rIFVSQnMgbnVtIC0g NCBhbmQgbnVtIC0gMi4gKi8NCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9zZXJpYWwvZnRkaV9z aW8uYyBiL2RyaXZlcnMvdXNiL3NlcmlhbC9mdGRpX3Npby5jDQppbmRleCAzMzJmMDRkLi42ZTA4 NjM5IDEwMDY0NA0KLS0tIGEvZHJpdmVycy91c2Ivc2VyaWFsL2Z0ZGlfc2lvLmMNCisrKyBiL2Ry aXZlcnMvdXNiL3NlcmlhbC9mdGRpX3Npby5jDQpAQCAtNTkxLDYgKzU5MSw4IEBAIHN0YXRpYyBz dHJ1Y3QgdXNiX2RldmljZV9pZCBpZF90YWJsZV9jb21iaW5lZCBbXSA9IHsNCiAJeyBVU0JfREVW SUNFKEZURElfVklELCBGVERJX1RBVklSX1NUSzUwMF9QSUQpIH0sDQogCXsgVVNCX0RFVklDRShG VERJX1ZJRCwgRlRESV9USUFPX1VNUEFfUElEKSwNCiAJCS5kcml2ZXJfaW5mbyA9IChrZXJuZWxf dWxvbmdfdCkmZnRkaV9qdGFnX3F1aXJrIH0sDQorCXsgVVNCX0RFVklDRShGVERJX1ZJRCwgRlRE SV9OVF9PUklPTkxYTV9QSUQpLA0KKwkJLmRyaXZlcl9pbmZvID0gKGtlcm5lbF91bG9uZ190KSZm dGRpX2p0YWdfcXVpcmsgfSwNCiAJLyoNCiAJICogRUxWIGRldmljZXM6DQogCSAqLw0KZGlmZiAt LWdpdCBhL2RyaXZlcnMvdXNiL3NlcmlhbC9mdGRpX3Npb19pZHMuaCBiL2RyaXZlcnMvdXNiL3Nl cmlhbC9mdGRpX3Npb19pZHMuaA0KaW5kZXggODNhNDQwZi4uNjc3Y2Y0OSAxMDA2NDQNCi0tLSBh L2RyaXZlcnMvdXNiL3NlcmlhbC9mdGRpX3Npb19pZHMuaA0KKysrIGIvZHJpdmVycy91c2Ivc2Vy aWFsL2Z0ZGlfc2lvX2lkcy5oDQpAQCAtNTM4LDYgKzUzOCwxMSBAQA0KICAqLw0KICNkZWZpbmUg RlRESV9USUFPX1VNUEFfUElECTB4OGE5OAkvKiBUSUFPL0RJWUdBREdFVCBVU0IgTXVsdGktUHJv dG9jb2wgQWRhcHRlciAqLw0KIA0KKy8qDQorICogTm92YVRlY2ggcHJvZHVjdCBpZHMgKEZURElf VklEKQ0KKyAqLw0KKyNkZWZpbmUgRlRESV9OVF9PUklPTkxYTV9QSUQJMHg3YzkwCS8qIE9yaW9u TFhtIFN1YnN0YXRpb24gQXV0b21hdGlvbiBQbGF0Zm9ybSAqLw0KKw0KIA0KIC8qKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKi8NCiAvKiogdGhpcmQtcGFydHkgVklEL1BJRCBjb21ib3Mg KiovDQpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2Ivc2VyaWFsL2lvX3RpLmMgYi9kcml2ZXJzL3Vz Yi9zZXJpYWwvaW9fdGkuYw0KaW5kZXggYzU3NWUwYS4uNDM4MTM4ZiAxMDA2NDQNCi0tLSBhL2Ry aXZlcnMvdXNiL3NlcmlhbC9pb190aS5jDQorKysgYi9kcml2ZXJzL3VzYi9zZXJpYWwvaW9fdGku Yw0KQEAgLTkyMyw3ICs5MjMsNyBAQCBzdGF0aWMgaW50IGJ1aWxkX2kyY19md19oZHIoX191OCAq aGVhZGVyLCBzdHJ1Y3QgZGV2aWNlICpkZXYpDQogCWZpcm13YXJlX3JlYyA9ICAoc3RydWN0IHRp X2kyY19maXJtd2FyZV9yZWMqKWkyY19oZWFkZXItPkRhdGE7DQogDQogCWkyY19oZWFkZXItPlR5 cGUJPSBJMkNfREVTQ19UWVBFX0ZJUk1XQVJFX0JMQU5LOw0KLQlpMmNfaGVhZGVyLT5TaXplCT0g KF9fdTE2KWJ1ZmZlcl9zaXplOw0KKwlpMmNfaGVhZGVyLT5TaXplCT0gY3B1X3RvX2xlMTYoYnVm ZmVyX3NpemUpOw0KIAlpMmNfaGVhZGVyLT5DaGVja1N1bQk9IGNzOw0KIAlmaXJtd2FyZV9yZWMt PlZlcl9NYWpvcgk9IE9wZXJhdGlvbmFsTWFqb3JWZXJzaW9uOw0KIAlmaXJtd2FyZV9yZWMtPlZl cl9NaW5vcgk9IE9wZXJhdGlvbmFsTWlub3JWZXJzaW9uOw0KZGlmZiAtLWdpdCBhL2RyaXZlcnMv dXNiL3NlcmlhbC9pb191c2J2ZW5kLmggYi9kcml2ZXJzL3VzYi9zZXJpYWwvaW9fdXNidmVuZC5o DQppbmRleCA1MWY4M2ZiLi42ZjZhODU2IDEwMDY0NA0KLS0tIGEvZHJpdmVycy91c2Ivc2VyaWFs L2lvX3VzYnZlbmQuaA0KKysrIGIvZHJpdmVycy91c2Ivc2VyaWFsL2lvX3VzYnZlbmQuaA0KQEAg LTU5NCw3ICs1OTQsNyBAQCBzdHJ1Y3QgZWRnZV9ib290X2Rlc2NyaXB0b3Igew0KIA0KIHN0cnVj dCB0aV9pMmNfZGVzYyB7DQogCV9fdTgJVHlwZTsJCQkvLyBUeXBlIG9mIGRlc2NyaXB0b3INCi0J X191MTYJU2l6ZTsJCQkvLyBTaXplIG9mIGRhdGEgb25seSBub3QgaW5jbHVkaW5nIGhlYWRlcg0K KwlfX2xlMTYJU2l6ZTsJCQkvLyBTaXplIG9mIGRhdGEgb25seSBub3QgaW5jbHVkaW5nIGhlYWRl cg0KIAlfX3U4CUNoZWNrU3VtOwkJLy8gQ2hlY2tzdW0gKDggYml0IHN1bSBvZiBkYXRhIG9ubHkp DQogCV9fdTgJRGF0YVswXTsJCS8vIERhdGEgc3RhcnRzIGhlcmUNCiB9IF9fYXR0cmlidXRlX18o KHBhY2tlZCkpOw0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL3NlcmlhbC9vcHRpb24uYyBiL2Ry aXZlcnMvdXNiL3NlcmlhbC9vcHRpb24uYw0KaW5kZXggOTgyM2U3OS4uYTBmNDdkNSAxMDA2NDQN Ci0tLSBhL2RyaXZlcnMvdXNiL3NlcmlhbC9vcHRpb24uYw0KKysrIGIvZHJpdmVycy91c2Ivc2Vy aWFsL29wdGlvbi5jDQpAQCAtMTYxLDYgKzE2MSw3IEBAIHN0YXRpYyB2b2lkIG9wdGlvbl9pbnN0 YXRfY2FsbGJhY2soc3RydWN0IHVyYiAqdXJiKTsNCiAjZGVmaW5lIE5PVkFURUxXSVJFTEVTU19Q Uk9EVUNUX0hTUEFfRU1CRURERURfRlVMTFNQRUVECTB4OTAwMA0KICNkZWZpbmUgTk9WQVRFTFdJ UkVMRVNTX1BST0RVQ1RfSFNQQV9FTUJFRERFRF9ISUdIU1BFRUQJMHg5MDAxDQogI2RlZmluZSBO T1ZBVEVMV0lSRUxFU1NfUFJPRFVDVF9FMzYyCQkweDkwMTANCisjZGVmaW5lIE5PVkFURUxXSVJF TEVTU19QUk9EVUNUX0UzNzEJCTB4OTAxMQ0KICNkZWZpbmUgTk9WQVRFTFdJUkVMRVNTX1BST0RV Q1RfRzIJCTB4QTAxMA0KICNkZWZpbmUgTk9WQVRFTFdJUkVMRVNTX1BST0RVQ1RfTUM1NTEJCTB4 QjAwMQ0KIA0KQEAgLTEwMjUsNiArMTAyNiw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgdXNiX2Rl dmljZV9pZCBvcHRpb25faWRzW10gPSB7DQogCS8qIE5vdmF0ZWwgT3ZhdGlvbiBNQzU1MSBhLmsu YS4gVmVyaXpvbiBVU0I1NTFMICovDQogCXsgVVNCX0RFVklDRV9BTkRfSU5URVJGQUNFX0lORk8o Tk9WQVRFTFdJUkVMRVNTX1ZFTkRPUl9JRCwgTk9WQVRFTFdJUkVMRVNTX1BST0RVQ1RfTUM1NTEs IDB4ZmYsIDB4ZmYsIDB4ZmYpIH0sDQogCXsgVVNCX0RFVklDRV9BTkRfSU5URVJGQUNFX0lORk8o Tk9WQVRFTFdJUkVMRVNTX1ZFTkRPUl9JRCwgTk9WQVRFTFdJUkVMRVNTX1BST0RVQ1RfRTM2Miwg MHhmZiwgMHhmZiwgMHhmZikgfSwNCisJeyBVU0JfREVWSUNFX0FORF9JTlRFUkZBQ0VfSU5GTyhO T1ZBVEVMV0lSRUxFU1NfVkVORE9SX0lELCBOT1ZBVEVMV0lSRUxFU1NfUFJPRFVDVF9FMzcxLCAw eGZmLCAweGZmLCAweGZmKSB9LA0KIA0KIAl7IFVTQl9ERVZJQ0UoQU1PSV9WRU5ET1JfSUQsIEFN T0lfUFJPRFVDVF9IMDEpIH0sDQogCXsgVVNCX0RFVklDRShBTU9JX1ZFTkRPUl9JRCwgQU1PSV9Q Uk9EVUNUX0gwMUEpIH0sDQpAQCAtMTk1NSw2ICsxOTU3LDcgQEAgc3RhdGljIGludCBvcHRpb25f c2VuZF9zZXR1cChzdHJ1Y3QgdXNiX3NlcmlhbF9wb3J0ICpwb3J0KQ0KIAlzdHJ1Y3QgdXNiX3d3 YW5fcG9ydF9wcml2YXRlICpwb3J0ZGF0YTsNCiAJaW50IGlmTnVtID0gc2VyaWFsLT5pbnRlcmZh Y2UtPmN1cl9hbHRzZXR0aW5nLT5kZXNjLmJJbnRlcmZhY2VOdW1iZXI7DQogCWludCB2YWwgPSAw Ow0KKwlpbnQgcmVzOw0KIAlkYmcoIiVzIiwgX19mdW5jX18pOw0KIA0KIAlpZiAoaXNfYmxhY2ts aXN0ZWQoaWZOdW0sIE9QVElPTl9CTEFDS0xJU1RfU0VORFNFVFVQLA0KQEAgLTE5NzAsOSArMTk3 MywxNiBAQCBzdGF0aWMgaW50IG9wdGlvbl9zZW5kX3NldHVwKHN0cnVjdCB1c2Jfc2VyaWFsX3Bv cnQgKnBvcnQpDQogCWlmIChwb3J0ZGF0YS0+cnRzX3N0YXRlKQ0KIAkJdmFsIHw9IDB4MDI7DQog DQotCXJldHVybiB1c2JfY29udHJvbF9tc2coc2VyaWFsLT5kZXYsDQotCQl1c2JfcmN2Y3RybHBp cGUoc2VyaWFsLT5kZXYsIDApLA0KKwlyZXMgPSB1c2JfYXV0b3BtX2dldF9pbnRlcmZhY2Uoc2Vy aWFsLT5pbnRlcmZhY2UpOw0KKwlpZiAocmVzKQ0KKwkJcmV0dXJuIHJlczsNCisNCisJcmVzID0g dXNiX2NvbnRyb2xfbXNnKHNlcmlhbC0+ZGV2LCB1c2JfcmN2Y3RybHBpcGUoc2VyaWFsLT5kZXYs IDApLA0KIAkJMHgyMiwgMHgyMSwgdmFsLCBpZk51bSwgTlVMTCwgMCwgVVNCX0NUUkxfU0VUX1RJ TUVPVVQpOw0KKw0KKwl1c2JfYXV0b3BtX3B1dF9pbnRlcmZhY2Uoc2VyaWFsLT5pbnRlcmZhY2Up Ow0KKw0KKwlyZXR1cm4gcmVzOw0KIH0NCiANCiBNT0RVTEVfQVVUSE9SKERSSVZFUl9BVVRIT1Ip Ow0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL3NlcmlhbC9zaWVycmEuYyBiL2RyaXZlcnMvdXNi L3NlcmlhbC9zaWVycmEuYw0KaW5kZXggZGJkZmViNC4uMGQyNmFiNiAxMDA2NDQNCi0tLSBhL2Ry aXZlcnMvdXNiL3NlcmlhbC9zaWVycmEuYw0KKysrIGIvZHJpdmVycy91c2Ivc2VyaWFsL3NpZXJy YS5jDQpAQCAtNTksNiArNTksNyBAQCBzdHJ1Y3Qgc2llcnJhX2ludGZfcHJpdmF0ZSB7DQogCXNw aW5sb2NrX3Qgc3VzcF9sb2NrOw0KIAl1bnNpZ25lZCBpbnQgc3VzcGVuZGVkOjE7DQogCWludCBp bl9mbGlnaHQ7DQorCXVuc2lnbmVkIGludCBvcGVuX3BvcnRzOw0KIH07DQogDQogc3RhdGljIGlu dCBzaWVycmFfc2V0X3Bvd2VyX3N0YXRlKHN0cnVjdCB1c2JfZGV2aWNlICp1ZGV2LCBfX3UxNiBz d2lTdGF0ZSkNCkBAIC04MDIsNiArODAzLDcgQEAgc3RhdGljIHZvaWQgc2llcnJhX2Nsb3NlKHN0 cnVjdCB1c2Jfc2VyaWFsX3BvcnQgKnBvcnQpDQogCXN0cnVjdCB1c2Jfc2VyaWFsICpzZXJpYWwg PSBwb3J0LT5zZXJpYWw7DQogCXN0cnVjdCBzaWVycmFfcG9ydF9wcml2YXRlICpwb3J0ZGF0YTsN CiAJc3RydWN0IHNpZXJyYV9pbnRmX3ByaXZhdGUgKmludGZkYXRhID0gcG9ydC0+c2VyaWFsLT5w cml2YXRlOw0KKwlzdHJ1Y3QgdXJiICp1cmI7DQogDQogDQogCWRldl9kYmcoJnBvcnQtPmRldiwg IiVzXG4iLCBfX2Z1bmNfXyk7DQpAQCAtODEzLDcgKzgxNSw2IEBAIHN0YXRpYyB2b2lkIHNpZXJy YV9jbG9zZShzdHJ1Y3QgdXNiX3NlcmlhbF9wb3J0ICpwb3J0KQ0KIAlpZiAoc2VyaWFsLT5kZXYp IHsNCiAJCW11dGV4X2xvY2soJnNlcmlhbC0+ZGlzY19tdXRleCk7DQogCQlpZiAoIXNlcmlhbC0+ ZGlzY29ubmVjdGVkKSB7DQotCQkJc2VyaWFsLT5pbnRlcmZhY2UtPm5lZWRzX3JlbW90ZV93YWtl dXAgPSAwOw0KIAkJCS8qIG9kZCBlcnJvciBoYW5kbGluZyBkdWUgdG8gcG0gY291bnRlcnMgKi8N CiAJCQlpZiAoIXVzYl9hdXRvcG1fZ2V0X2ludGVyZmFjZShzZXJpYWwtPmludGVyZmFjZSkpDQog CQkJCXNpZXJyYV9zZW5kX3NldHVwKHBvcnQpOw0KQEAgLTgyNCw4ICs4MjUsMjEgQEAgc3RhdGlj IHZvaWQgc2llcnJhX2Nsb3NlKHN0cnVjdCB1c2Jfc2VyaWFsX3BvcnQgKnBvcnQpDQogCQltdXRl eF91bmxvY2soJnNlcmlhbC0+ZGlzY19tdXRleCk7DQogCQlzcGluX2xvY2tfaXJxKCZpbnRmZGF0 YS0+c3VzcF9sb2NrKTsNCiAJCXBvcnRkYXRhLT5vcGVuZWQgPSAwOw0KKwkJaWYgKC0taW50ZmRh dGEtPm9wZW5fcG9ydHMgPT0gMCkNCisJCQlzZXJpYWwtPmludGVyZmFjZS0+bmVlZHNfcmVtb3Rl X3dha2V1cCA9IDA7DQogCQlzcGluX3VubG9ja19pcnEoJmludGZkYXRhLT5zdXNwX2xvY2spOw0K IA0KKwkJZm9yICg7Oykgew0KKwkJCXVyYiA9IHVzYl9nZXRfZnJvbV9hbmNob3IoJnBvcnRkYXRh LT5kZWxheWVkKTsNCisJCQlpZiAoIXVyYikNCisJCQkJYnJlYWs7DQorCQkJa2ZyZWUodXJiLT50 cmFuc2Zlcl9idWZmZXIpOw0KKwkJCXVzYl9mcmVlX3VyYih1cmIpOw0KKwkJCXVzYl9hdXRvcG1f cHV0X2ludGVyZmFjZV9hc3luYyhzZXJpYWwtPmludGVyZmFjZSk7DQorCQkJc3Bpbl9sb2NrKCZw b3J0ZGF0YS0+bG9jayk7DQorCQkJcG9ydGRhdGEtPm91dHN0YW5kaW5nX3VyYnMtLTsNCisJCQlz cGluX3VubG9jaygmcG9ydGRhdGEtPmxvY2spOw0KKwkJfQ0KIA0KIAkJLyogU3RvcCByZWFkaW5n IHVyYnMgKi8NCiAJCXNpZXJyYV9zdG9wX3J4X3VyYnMocG9ydCk7DQpAQCAtODY4LDIzICs4ODIs MjkgQEAgc3RhdGljIGludCBzaWVycmFfb3BlbihzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5LCBzdHJ1 Y3QgdXNiX3NlcmlhbF9wb3J0ICpwb3J0KQ0KIAkJCXVzYl9zbmRidWxrcGlwZShzZXJpYWwtPmRl diwgZW5kcG9pbnQpIHwgVVNCX0RJUl9JTik7DQogDQogCWVyciA9IHNpZXJyYV9zdWJtaXRfcnhf dXJicyhwb3J0LCBHRlBfS0VSTkVMKTsNCi0JaWYgKGVycikgew0KLQkJLyogZ2V0IHJpZCBvZiBl dmVyeXRoaW5nIGFzIGluIGNsb3NlICovDQotCQlzaWVycmFfY2xvc2UocG9ydCk7DQotCQkvKiBy ZXN0b3JlIGJhbGFuY2UgZm9yIGF1dG9wbSAqLw0KLQkJaWYgKCFzZXJpYWwtPmRpc2Nvbm5lY3Rl ZCkNCi0JCQl1c2JfYXV0b3BtX3B1dF9pbnRlcmZhY2Uoc2VyaWFsLT5pbnRlcmZhY2UpOw0KLQkJ cmV0dXJuIGVycjsNCi0JfQ0KKwlpZiAoZXJyKQ0KKwkJZ290byBlcnJfc3VibWl0Ow0KKw0KIAlz aWVycmFfc2VuZF9zZXR1cChwb3J0KTsNCiANCi0Jc2VyaWFsLT5pbnRlcmZhY2UtPm5lZWRzX3Jl bW90ZV93YWtldXAgPSAxOw0KIAlzcGluX2xvY2tfaXJxKCZpbnRmZGF0YS0+c3VzcF9sb2NrKTsN CiAJcG9ydGRhdGEtPm9wZW5lZCA9IDE7DQorCWlmICgrK2ludGZkYXRhLT5vcGVuX3BvcnRzID09 IDEpDQorCQlzZXJpYWwtPmludGVyZmFjZS0+bmVlZHNfcmVtb3RlX3dha2V1cCA9IDE7DQogCXNw aW5fdW5sb2NrX2lycSgmaW50ZmRhdGEtPnN1c3BfbG9jayk7DQogCXVzYl9hdXRvcG1fcHV0X2lu dGVyZmFjZShzZXJpYWwtPmludGVyZmFjZSk7DQogDQogCXJldHVybiAwOw0KKw0KK2Vycl9zdWJt aXQ6DQorCXNpZXJyYV9zdG9wX3J4X3VyYnMocG9ydCk7DQorDQorCWZvciAoaSA9IDA7IGkgPCBw b3J0ZGF0YS0+bnVtX2luX3VyYnM7IGkrKykgew0KKwkJc2llcnJhX3JlbGVhc2VfdXJiKHBvcnRk YXRhLT5pbl91cmJzW2ldKTsNCisJCXBvcnRkYXRhLT5pbl91cmJzW2ldID0gTlVMTDsNCisJfQ0K Kw0KKwlyZXR1cm4gZXJyOw0KIH0NCiANCiANCkBAIC0xMDYwLDggKzEwODAsMTIgQEAgc3RhdGlj IGludCBzaWVycmFfcmVzdW1lKHN0cnVjdCB1c2Jfc2VyaWFsICpzZXJpYWwpDQogCQkJaWYgKGVy ciA8IDApIHsNCiAJCQkJaW50ZmRhdGEtPmluX2ZsaWdodC0tOw0KIAkJCQl1c2JfdW5hbmNob3Jf dXJiKHVyYik7DQotCQkJCXVzYl9zY3V0dGxlX2FuY2hvcmVkX3VyYnMoJnBvcnRkYXRhLT5kZWxh eWVkKTsNCi0JCQkJYnJlYWs7DQorCQkJCWtmcmVlKHVyYi0+dHJhbnNmZXJfYnVmZmVyKTsNCisJ CQkJdXNiX2ZyZWVfdXJiKHVyYik7DQorCQkJCXNwaW5fbG9jaygmcG9ydGRhdGEtPmxvY2spOw0K KwkJCQlwb3J0ZGF0YS0+b3V0c3RhbmRpbmdfdXJicy0tOw0KKwkJCQlzcGluX3VubG9jaygmcG9y dGRhdGEtPmxvY2spOw0KKwkJCQljb250aW51ZTsNCiAJCQl9DQogCQl9DQogDQpkaWZmIC0tZ2l0 IGEvZHJpdmVycy91c2Ivc2VyaWFsL3VzYl93d2FuLmMgYi9kcml2ZXJzL3VzYi9zZXJpYWwvdXNi X3d3YW4uYw0KaW5kZXggNmM5MjMwMS4uYjM4OTk0ZSAxMDA2NDQNCi0tLSBhL2RyaXZlcnMvdXNi L3NlcmlhbC91c2Jfd3dhbi5jDQorKysgYi9kcml2ZXJzL3VzYi9zZXJpYWwvdXNiX3d3YW4uYw0K QEAgLTIzNiw4ICsyMzYsMTAgQEAgaW50IHVzYl93d2FuX3dyaXRlKHN0cnVjdCB0dHlfc3RydWN0 ICp0dHksIHN0cnVjdCB1c2Jfc2VyaWFsX3BvcnQgKnBvcnQsDQogCQkgICAgdXNiX3BpcGVlbmRw b2ludCh0aGlzX3VyYi0+cGlwZSksIGkpOw0KIA0KIAkJZXJyID0gdXNiX2F1dG9wbV9nZXRfaW50 ZXJmYWNlX2FzeW5jKHBvcnQtPnNlcmlhbC0+aW50ZXJmYWNlKTsNCi0JCWlmIChlcnIgPCAwKQ0K KwkJaWYgKGVyciA8IDApIHsNCisJCQljbGVhcl9iaXQoaSwgJnBvcnRkYXRhLT5vdXRfYnVzeSk7 DQogCQkJYnJlYWs7DQorCQl9DQogDQogCQkvKiBzZW5kIHRoZSBkYXRhICovDQogCQltZW1jcHko dGhpc191cmItPnRyYW5zZmVyX2J1ZmZlciwgYnVmLCB0b2RvKTsNCkBAIC00MzIsMTIgKzQzNCwy NiBAQCBpbnQgdXNiX3d3YW5fb3BlbihzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5LCBzdHJ1Y3QgdXNi X3NlcmlhbF9wb3J0ICpwb3J0KQ0KIH0NCiBFWFBPUlRfU1lNQk9MKHVzYl93d2FuX29wZW4pOw0K IA0KK3N0YXRpYyB2b2lkIHVuYnVzeV9xdWV1ZWRfdXJiKHN0cnVjdCB1cmIgKnVyYiwNCisJCQkJ CXN0cnVjdCB1c2Jfd3dhbl9wb3J0X3ByaXZhdGUgKnBvcnRkYXRhKQ0KK3sNCisJaW50IGk7DQor DQorCWZvciAoaSA9IDA7IGkgPCBOX09VVF9VUkI7IGkrKykgew0KKwkJaWYgKHVyYiA9PSBwb3J0 ZGF0YS0+b3V0X3VyYnNbaV0pIHsNCisJCQljbGVhcl9iaXQoaSwgJnBvcnRkYXRhLT5vdXRfYnVz eSk7DQorCQkJYnJlYWs7DQorCQl9DQorCX0NCit9DQorDQogdm9pZCB1c2Jfd3dhbl9jbG9zZShz dHJ1Y3QgdXNiX3NlcmlhbF9wb3J0ICpwb3J0KQ0KIHsNCiAJaW50IGk7DQogCXN0cnVjdCB1c2Jf c2VyaWFsICpzZXJpYWwgPSBwb3J0LT5zZXJpYWw7DQogCXN0cnVjdCB1c2Jfd3dhbl9wb3J0X3By aXZhdGUgKnBvcnRkYXRhOw0KIAlzdHJ1Y3QgdXNiX3d3YW5faW50Zl9wcml2YXRlICppbnRmZGF0 YSA9IHBvcnQtPnNlcmlhbC0+cHJpdmF0ZTsNCisJc3RydWN0IHVyYiAqdXJiOw0KIA0KIAlkYmco IiVzIiwgX19mdW5jX18pOw0KIAlwb3J0ZGF0YSA9IHVzYl9nZXRfc2VyaWFsX3BvcnRfZGF0YShw b3J0KTsNCkBAIC00NDgsNiArNDY0LDE0IEBAIHZvaWQgdXNiX3d3YW5fY2xvc2Uoc3RydWN0IHVz Yl9zZXJpYWxfcG9ydCAqcG9ydCkNCiAJCXBvcnRkYXRhLT5vcGVuZWQgPSAwOw0KIAkJc3Bpbl91 bmxvY2tfaXJxKCZpbnRmZGF0YS0+c3VzcF9sb2NrKTsNCiANCisJCWZvciAoOzspIHsNCisJCQl1 cmIgPSB1c2JfZ2V0X2Zyb21fYW5jaG9yKCZwb3J0ZGF0YS0+ZGVsYXllZCk7DQorCQkJaWYgKCF1 cmIpDQorCQkJCWJyZWFrOw0KKwkJCXVuYnVzeV9xdWV1ZWRfdXJiKHVyYiwgcG9ydGRhdGEpOw0K KwkJCXVzYl9hdXRvcG1fcHV0X2ludGVyZmFjZV9hc3luYyhzZXJpYWwtPmludGVyZmFjZSk7DQor CQl9DQorDQogCQlmb3IgKGkgPSAwOyBpIDwgTl9JTl9VUkI7IGkrKykNCiAJCQl1c2Jfa2lsbF91 cmIocG9ydGRhdGEtPmluX3VyYnNbaV0pOw0KIAkJZm9yIChpID0gMDsgaSA8IE5fT1VUX1VSQjsg aSsrKQ0KQEAgLTY0NSw0NiArNjY5LDMxIEBAIEVYUE9SVF9TWU1CT0wodXNiX3d3YW5fcmVsZWFz ZSk7DQogaW50IHVzYl93d2FuX3N1c3BlbmQoc3RydWN0IHVzYl9zZXJpYWwgKnNlcmlhbCwgcG1f bWVzc2FnZV90IG1lc3NhZ2UpDQogew0KIAlzdHJ1Y3QgdXNiX3d3YW5faW50Zl9wcml2YXRlICpp bnRmZGF0YSA9IHNlcmlhbC0+cHJpdmF0ZTsNCi0JaW50IGI7DQogDQogCWRiZygiJXMgZW50ZXJl ZCIsIF9fZnVuY19fKTsNCiANCisJc3Bpbl9sb2NrX2lycSgmaW50ZmRhdGEtPnN1c3BfbG9jayk7 DQogCWlmIChQTVNHX0lTX0FVVE8obWVzc2FnZSkpIHsNCi0JCXNwaW5fbG9ja19pcnEoJmludGZk YXRhLT5zdXNwX2xvY2spOw0KLQkJYiA9IGludGZkYXRhLT5pbl9mbGlnaHQ7DQotCQlzcGluX3Vu bG9ja19pcnEoJmludGZkYXRhLT5zdXNwX2xvY2spOw0KLQ0KLQkJaWYgKGIpDQorCQlpZiAoaW50 ZmRhdGEtPmluX2ZsaWdodCkgew0KKwkJCXNwaW5fdW5sb2NrX2lycSgmaW50ZmRhdGEtPnN1c3Bf bG9jayk7DQogCQkJcmV0dXJuIC1FQlVTWTsNCisJCX0NCiAJfQ0KLQ0KLQlzcGluX2xvY2tfaXJx KCZpbnRmZGF0YS0+c3VzcF9sb2NrKTsNCiAJaW50ZmRhdGEtPnN1c3BlbmRlZCA9IDE7DQogCXNw aW5fdW5sb2NrX2lycSgmaW50ZmRhdGEtPnN1c3BfbG9jayk7DQorDQogCXN0b3BfcmVhZF93cml0 ZV91cmJzKHNlcmlhbCk7DQogDQogCXJldHVybiAwOw0KIH0NCiBFWFBPUlRfU1lNQk9MKHVzYl93 d2FuX3N1c3BlbmQpOw0KIA0KLXN0YXRpYyB2b2lkIHVuYnVzeV9xdWV1ZWRfdXJiKHN0cnVjdCB1 cmIgKnVyYiwgc3RydWN0IHVzYl93d2FuX3BvcnRfcHJpdmF0ZSAqcG9ydGRhdGEpDQotew0KLQlp bnQgaTsNCi0NCi0JZm9yIChpID0gMDsgaSA8IE5fT1VUX1VSQjsgaSsrKSB7DQotCQlpZiAodXJi ID09IHBvcnRkYXRhLT5vdXRfdXJic1tpXSkgew0KLQkJCWNsZWFyX2JpdChpLCAmcG9ydGRhdGEt Pm91dF9idXN5KTsNCi0JCQlicmVhazsNCi0JCX0NCi0JfQ0KLX0NCi0NCi1zdGF0aWMgdm9pZCBw bGF5X2RlbGF5ZWQoc3RydWN0IHVzYl9zZXJpYWxfcG9ydCAqcG9ydCkNCitzdGF0aWMgaW50IHBs YXlfZGVsYXllZChzdHJ1Y3QgdXNiX3NlcmlhbF9wb3J0ICpwb3J0KQ0KIHsNCiAJc3RydWN0IHVz Yl93d2FuX2ludGZfcHJpdmF0ZSAqZGF0YTsNCiAJc3RydWN0IHVzYl93d2FuX3BvcnRfcHJpdmF0 ZSAqcG9ydGRhdGE7DQogCXN0cnVjdCB1cmIgKnVyYjsNCi0JaW50IGVycjsNCisJaW50IGVyciA9 IDA7DQogDQogCXBvcnRkYXRhID0gdXNiX2dldF9zZXJpYWxfcG9ydF9kYXRhKHBvcnQpOw0KIAlk YXRhID0gcG9ydC0+c2VyaWFsLT5wcml2YXRlOw0KQEAgLTcwMSw2ICs3MTAsOCBAQCBzdGF0aWMg dm9pZCBwbGF5X2RlbGF5ZWQoc3RydWN0IHVzYl9zZXJpYWxfcG9ydCAqcG9ydCkNCiAJCQlicmVh azsNCiAJCX0NCiAJfQ0KKw0KKwlyZXR1cm4gZXJyOw0KIH0NCiANCiBpbnQgdXNiX3d3YW5fcmVz dW1lKHN0cnVjdCB1c2Jfc2VyaWFsICpzZXJpYWwpDQpAQCAtNzEwLDcgKzcyMSw4IEBAIGludCB1 c2Jfd3dhbl9yZXN1bWUoc3RydWN0IHVzYl9zZXJpYWwgKnNlcmlhbCkNCiAJc3RydWN0IHVzYl93 d2FuX2ludGZfcHJpdmF0ZSAqaW50ZmRhdGEgPSBzZXJpYWwtPnByaXZhdGU7DQogCXN0cnVjdCB1 c2Jfd3dhbl9wb3J0X3ByaXZhdGUgKnBvcnRkYXRhOw0KIAlzdHJ1Y3QgdXJiICp1cmI7DQotCWlu dCBlcnIgPSAwOw0KKwlpbnQgZXJyOw0KKwlpbnQgZXJyX2NvdW50ID0gMDsNCiANCiAJZGJnKCIl cyBlbnRlcmVkIiwgX19mdW5jX18pOw0KIAkvKiBnZXQgdGhlIGludGVycnVwdCBVUkJzIHJlc3Vi bWl0dGVkIHVuY29uZGl0aW9uYWxseSAqLw0KQEAgLTcyNSwyMSArNzM3LDIzIEBAIGludCB1c2Jf d3dhbl9yZXN1bWUoc3RydWN0IHVzYl9zZXJpYWwgKnNlcmlhbCkNCiAJCWlmIChlcnIgPCAwKSB7 DQogCQkJZXJyKCIlczogRXJyb3IgJWQgZm9yIGludGVycnVwdCBVUkIgb2YgcG9ydCVkIiwNCiAJ CQkgICAgX19mdW5jX18sIGVyciwgaSk7DQotCQkJZ290byBlcnJfb3V0Ow0KKwkJCWVycl9jb3Vu dCsrOw0KIAkJfQ0KIAl9DQogDQorCXNwaW5fbG9ja19pcnEoJmludGZkYXRhLT5zdXNwX2xvY2sp Ow0KIAlmb3IgKGkgPSAwOyBpIDwgc2VyaWFsLT5udW1fcG9ydHM7IGkrKykgew0KIAkJLyogd2Fs ayBhbGwgcG9ydHMgKi8NCiAJCXBvcnQgPSBzZXJpYWwtPnBvcnRbaV07DQogCQlwb3J0ZGF0YSA9 IHVzYl9nZXRfc2VyaWFsX3BvcnRfZGF0YShwb3J0KTsNCiANCiAJCS8qIHNraXAgY2xvc2VkIHBv cnRzICovDQotCQlzcGluX2xvY2tfaXJxKCZpbnRmZGF0YS0+c3VzcF9sb2NrKTsNCi0JCWlmICgh cG9ydGRhdGEtPm9wZW5lZCkgew0KLQkJCXNwaW5fdW5sb2NrX2lycSgmaW50ZmRhdGEtPnN1c3Bf bG9jayk7DQorCQlpZiAoIXBvcnRkYXRhLT5vcGVuZWQpDQogCQkJY29udGludWU7DQotCQl9DQor DQorCQllcnIgPSBwbGF5X2RlbGF5ZWQocG9ydCk7DQorCQlpZiAoZXJyKQ0KKwkJCWVycl9jb3Vu dCsrOw0KIA0KIAkJZm9yIChqID0gMDsgaiA8IE5fSU5fVVJCOyBqKyspIHsNCiAJCQl1cmIgPSBw b3J0ZGF0YS0+aW5fdXJic1tqXTsNCkBAIC03NDcsMTggKzc2MSwxNyBAQCBpbnQgdXNiX3d3YW5f cmVzdW1lKHN0cnVjdCB1c2Jfc2VyaWFsICpzZXJpYWwpDQogCQkJaWYgKGVyciA8IDApIHsNCiAJ CQkJZXJyKCIlczogRXJyb3IgJWQgZm9yIGJ1bGsgVVJCICVkIiwNCiAJCQkJICAgIF9fZnVuY19f LCBlcnIsIGkpOw0KLQkJCQlzcGluX3VubG9ja19pcnEoJmludGZkYXRhLT5zdXNwX2xvY2spOw0K LQkJCQlnb3RvIGVycl9vdXQ7DQorCQkJCWVycl9jb3VudCsrOw0KIAkJCX0NCiAJCX0NCi0JCXBs YXlfZGVsYXllZChwb3J0KTsNCi0JCXNwaW5fdW5sb2NrX2lycSgmaW50ZmRhdGEtPnN1c3BfbG9j ayk7DQogCX0NCi0Jc3Bpbl9sb2NrX2lycSgmaW50ZmRhdGEtPnN1c3BfbG9jayk7DQogCWludGZk YXRhLT5zdXNwZW5kZWQgPSAwOw0KIAlzcGluX3VubG9ja19pcnEoJmludGZkYXRhLT5zdXNwX2xv Y2spOw0KLWVycl9vdXQ6DQotCXJldHVybiBlcnI7DQorDQorCWlmIChlcnJfY291bnQpDQorCQly ZXR1cm4gLUVJTzsNCisNCisJcmV0dXJuIDA7DQogfQ0KIEVYUE9SVF9TWU1CT0wodXNiX3d3YW5f cmVzdW1lKTsNCiAjZW5kaWYNCmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL21hdHJveC9tYXRy b3hmYl9iYXNlLmggYi9kcml2ZXJzL3ZpZGVvL21hdHJveC9tYXRyb3hmYl9iYXNlLmgNCmluZGV4 IDU1NmQ5NmMuLjg5YThhODlhIDEwMDY0NA0KLS0tIGEvZHJpdmVycy92aWRlby9tYXRyb3gvbWF0 cm94ZmJfYmFzZS5oDQorKysgYi9kcml2ZXJzL3ZpZGVvL21hdHJveC9tYXRyb3hmYl9iYXNlLmgN CkBAIC02OTgsNyArNjk4LDcgQEAgdm9pZCBtYXRyb3hmYl91bnJlZ2lzdGVyX2RyaXZlcihzdHJ1 Y3QgbWF0cm94ZmJfZHJpdmVyKiBkcnYpOw0KIA0KICNkZWZpbmUgbWdhX2ZpZm8obikJZG8ge30g d2hpbGUgKChtZ2FfaW5sKE1fRklGT1NUQVRVUykgJiAweEZGKSA8IChuKSkNCiANCi0jZGVmaW5l IFdhaXRUaWxsSWRsZSgpCWRvIHt9IHdoaWxlIChtZ2FfaW5sKE1fU1RBVFVTKSAmIDB4MTAwMDAp DQorI2RlZmluZSBXYWl0VGlsbElkbGUoKQlkbyB7IG1nYV9pbmwoTV9TVEFUVVMpOyBkbyB7fSB3 aGlsZSAobWdhX2lubChNX1NUQVRVUykgJiAweDEwMDAwKTsgfSB3aGlsZSAoMCkNCiANCiAvKiBj b2RlIHNwZWVkdXAgKi8NCiAjaWZkZWYgQ09ORklHX0ZCX01BVFJPWF9NSUxMRU5JVU0NCmRpZmYg LS1naXQgYS9kcml2ZXJzL3dhdGNoZG9nL2F0aDc5X3dkdC5jIGIvZHJpdmVycy93YXRjaGRvZy9h dGg3OV93ZHQuYw0KaW5kZXggNzI1Yzg0Yi4uZDI1NmNhNyAxMDA2NDQNCi0tLSBhL2RyaXZlcnMv d2F0Y2hkb2cvYXRoNzlfd2R0LmMNCisrKyBiL2RyaXZlcnMvd2F0Y2hkb2cvYXRoNzlfd2R0LmMN CkBAIC0xOCw2ICsxOCw3IEBADQogICovDQogDQogI2luY2x1ZGUgPGxpbnV4L2JpdG9wcy5oPg0K KyNpbmNsdWRlIDxsaW51eC9kZWxheS5oPg0KICNpbmNsdWRlIDxsaW51eC9lcnJuby5oPg0KICNp bmNsdWRlIDxsaW51eC9mcy5oPg0KICNpbmNsdWRlIDxsaW51eC9pbml0Lmg+DQpAQCAtNzMsNiAr NzQsMTUgQEAgc3RhdGljIGlubGluZSB2b2lkIGF0aDc5X3dkdF9rZWVwYWxpdmUodm9pZCkNCiBz dGF0aWMgaW5saW5lIHZvaWQgYXRoNzlfd2R0X2VuYWJsZSh2b2lkKQ0KIHsNCiAJYXRoNzlfd2R0 X2tlZXBhbGl2ZSgpOw0KKw0KKwkvKg0KKwkgKiBVcGRhdGluZyB0aGUgVElNRVIgcmVnaXN0ZXIg cmVxdWlyZXMgYSBmZXcgbWljcm9zZWNvbmRzDQorCSAqIG9uIHRoZSBBUjkzNHggU29DcyBhdCBs ZWFzdC4gVXNlIGEgc21hbGwgZGVsYXkgdG8gZW5zdXJlDQorCSAqIHRoYXQgdGhlIFRJTUVSIHJl Z2lzdGVyIGlzIHVwZGF0ZWQgd2l0aGluIHRoZSBoYXJkd2FyZQ0KKwkgKiBiZWZvcmUgZW5hYmxp bmcgdGhlIHdhdGNoZG9nLg0KKwkgKi8NCisJdWRlbGF5KDIpOw0KKw0KIAlhdGg3OV9yZXNldF93 cihBUjcxWFhfUkVTRVRfUkVHX1dET0dfQ1RSTCwgV0RPR19DVFJMX0FDVElPTl9GQ1IpOw0KIH0N CiANCmRpZmYgLS1naXQgYS9mcy9idHJmcy9leHRlbnRfaW8uYyBiL2ZzL2J0cmZzL2V4dGVudF9p by5jDQppbmRleCA3M2U0Y2JjLi4wNTkzN2E4IDEwMDY0NA0KLS0tIGEvZnMvYnRyZnMvZXh0ZW50 X2lvLmMNCisrKyBiL2ZzL2J0cmZzL2V4dGVudF9pby5jDQpAQCAtMTUyMyw2ICsxNTIzLDcgQEAg YWdhaW46DQogCQkgKiBzaG9ydGVuaW5nIHRoZSBzaXplIG9mIHRoZSBkZWxhbGxvYyByYW5nZSB3 ZSdyZSBzZWFyY2hpbmcNCiAJCSAqLw0KIAkJZnJlZV9leHRlbnRfc3RhdGUoY2FjaGVkX3N0YXRl KTsNCisJCWNhY2hlZF9zdGF0ZSA9IE5VTEw7DQogCQlpZiAoIWxvb3BzKSB7DQogCQkJdW5zaWdu ZWQgbG9uZyBvZmZzZXQgPSAoKnN0YXJ0KSAmIChQQUdFX0NBQ0hFX1NJWkUgLSAxKTsNCiAJCQlt YXhfYnl0ZXMgPSBQQUdFX0NBQ0hFX1NJWkUgLSBvZmZzZXQ7DQpkaWZmIC0tZ2l0IGEvZnMvZXh0 NC9tYmFsbG9jLmMgYi9mcy9leHQ0L21iYWxsb2MuYw0KaW5kZXggODFmZWIxNy4uNzE2OGVlYiAx MDA2NDQNCi0tLSBhL2ZzL2V4dDQvbWJhbGxvYy5jDQorKysgYi9mcy9leHQ0L21iYWxsb2MuYw0K QEAgLTMwNjcsNyArMzA2Nyw3IEBAIGV4dDRfbWJfbm9ybWFsaXplX3JlcXVlc3Qoc3RydWN0IGV4 dDRfYWxsb2NhdGlvbl9jb250ZXh0ICphYywNCiAJfQ0KIAlCVUdfT04oc3RhcnQgKyBzaXplIDw9 IGFjLT5hY19vX2V4LmZlX2xvZ2ljYWwgJiYNCiAJCQlzdGFydCA+IGFjLT5hY19vX2V4LmZlX2xv Z2ljYWwpOw0KLQlCVUdfT04oc2l6ZSA8PSAwIHx8IHNpemUgPiBFWFQ0X0NMVVNURVJTX1BFUl9H Uk9VUChhYy0+YWNfc2IpKTsNCisJQlVHX09OKHNpemUgPD0gMCB8fCBzaXplID4gRVhUNF9CTE9D S1NfUEVSX0dST1VQKGFjLT5hY19zYikpOw0KIA0KIAkvKiBub3cgcHJlcGFyZSBnb2FsIHJlcXVl c3QgKi8NCiANCmRpZmYgLS1naXQgYS9mcy9leHQ0L3BhZ2UtaW8uYyBiL2ZzL2V4dDQvcGFnZS1p by5jDQppbmRleCBiNDZhNjc1Li5kYzcyZWJmIDEwMDY0NA0KLS0tIGEvZnMvZXh0NC9wYWdlLWlv LmMNCisrKyBiL2ZzL2V4dDQvcGFnZS1pby5jDQpAQCAtMzg2LDI0ICszODYsMjQgQEAgaW50IGV4 dDRfYmlvX3dyaXRlX3BhZ2Uoc3RydWN0IGV4dDRfaW9fc3VibWl0ICppbywNCiAJc2V0X3BhZ2Vf d3JpdGViYWNrKHBhZ2UpOw0KIAlDbGVhclBhZ2VFcnJvcihwYWdlKTsNCiANCisJLyoNCisJICog Q29tbWVudHMgY29waWVkIGZyb20gYmxvY2tfd3JpdGVfZnVsbF9wYWdlX2VuZGlvOg0KKwkgKg0K KwkgKiBUaGUgcGFnZSBzdHJhZGRsZXMgaV9zaXplLiAgSXQgbXVzdCBiZSB6ZXJvZWQgb3V0IG9u IGVhY2ggYW5kIGV2ZXJ5DQorCSAqIHdyaXRlcGFnZSBpbnZvY2F0aW9uIGJlY2F1c2UgaXQgbWF5 IGJlIG1tYXBwZWQuICAiQSBmaWxlIGlzIG1hcHBlZA0KKwkgKiBpbiBtdWx0aXBsZXMgb2YgdGhl IHBhZ2Ugc2l6ZS4gIEZvciBhIGZpbGUgdGhhdCBpcyBub3QgYSBtdWx0aXBsZSBvZg0KKwkgKiB0 aGUgcGFnZSBzaXplLCB0aGUgcmVtYWluaW5nIG1lbW9yeSBpcyB6ZXJvZWQgd2hlbiBtYXBwZWQs IGFuZA0KKwkgKiB3cml0ZXMgdG8gdGhhdCByZWdpb24gYXJlIG5vdCB3cml0dGVuIG91dCB0byB0 aGUgZmlsZS4iDQorCSAqLw0KKwlpZiAobGVuIDwgUEFHRV9DQUNIRV9TSVpFKQ0KKwkJemVyb191 c2VyX3NlZ21lbnQocGFnZSwgbGVuLCBQQUdFX0NBQ0hFX1NJWkUpOw0KKw0KIAlmb3IgKGJoID0g aGVhZCA9IHBhZ2VfYnVmZmVycyhwYWdlKSwgYmxvY2tfc3RhcnQgPSAwOw0KIAkgICAgIGJoICE9 IGhlYWQgfHwgIWJsb2NrX3N0YXJ0Ow0KIAkgICAgIGJsb2NrX3N0YXJ0ID0gYmxvY2tfZW5kLCBi aCA9IGJoLT5iX3RoaXNfcGFnZSkgew0KIA0KIAkJYmxvY2tfZW5kID0gYmxvY2tfc3RhcnQgKyBi bG9ja3NpemU7DQogCQlpZiAoYmxvY2tfc3RhcnQgPj0gbGVuKSB7DQotCQkJLyoNCi0JCQkgKiBD b21tZW50cyBjb3BpZWQgZnJvbSBibG9ja193cml0ZV9mdWxsX3BhZ2VfZW5kaW86DQotCQkJICoN Ci0JCQkgKiBUaGUgcGFnZSBzdHJhZGRsZXMgaV9zaXplLiAgSXQgbXVzdCBiZSB6ZXJvZWQgb3V0 IG9uDQotCQkJICogZWFjaCBhbmQgZXZlcnkgd3JpdGVwYWdlIGludm9jYXRpb24gYmVjYXVzZSBp dCBtYXkNCi0JCQkgKiBiZSBtbWFwcGVkLiAgIkEgZmlsZSBpcyBtYXBwZWQgaW4gbXVsdGlwbGVz IG9mIHRoZQ0KLQkJCSAqIHBhZ2Ugc2l6ZS4gIEZvciBhIGZpbGUgdGhhdCBpcyBub3QgYSBtdWx0 aXBsZSBvZg0KLQkJCSAqIHRoZSAgcGFnZSBzaXplLCB0aGUgcmVtYWluaW5nIG1lbW9yeSBpcyB6 ZXJvZWQgd2hlbg0KLQkJCSAqIG1hcHBlZCwgYW5kIHdyaXRlcyB0byB0aGF0IHJlZ2lvbiBhcmUg bm90IHdyaXR0ZW4NCi0JCQkgKiBvdXQgdG8gdGhlIGZpbGUuIg0KLQkJCSAqLw0KLQkJCXplcm9f dXNlcl9zZWdtZW50KHBhZ2UsIGJsb2NrX3N0YXJ0LCBibG9ja19lbmQpOw0KIAkJCWNsZWFyX2J1 ZmZlcl9kaXJ0eShiaCk7DQogCQkJc2V0X2J1ZmZlcl91cHRvZGF0ZShiaCk7DQogCQkJY29udGlu dWU7DQpkaWZmIC0tZ2l0IGEvZnMvbmZzZC9uZnM0c3RhdGUuYyBiL2ZzL25mc2QvbmZzNHN0YXRl LmMNCmluZGV4IGIyZTBhNTUuLjZlOTFmOGIgMTAwNjQ0DQotLS0gYS9mcy9uZnNkL25mczRzdGF0 ZS5jDQorKysgYi9mcy9uZnNkL25mczRzdGF0ZS5jDQpAQCAtMzM3LDEzICszMzcsMjIgQEAgc3Rh dGljIHZvaWQgdW5oYXNoX3N0aWQoc3RydWN0IG5mczRfc3RpZCAqcykNCiAJaWRyX3JlbW92ZShz dGF0ZWlkcywgcy0+c2Nfc3RhdGVpZC5zaV9vcGFxdWUuc29faWQpOw0KIH0NCiANCitzdGF0aWMg dm9pZA0KK2hhc2hfZGVsZWdhdGlvbl9sb2NrZWQoc3RydWN0IG5mczRfZGVsZWdhdGlvbiAqZHAs IHN0cnVjdCBuZnM0X2ZpbGUgKmZwKQ0KK3sNCisJbG9ja2RlcF9hc3NlcnRfaGVsZCgmcmVjYWxs X2xvY2spOw0KKw0KKwlsaXN0X2FkZCgmZHAtPmRsX3BlcmZpbGUsICZmcC0+ZmlfZGVsZWdhdGlv bnMpOw0KKwlsaXN0X2FkZCgmZHAtPmRsX3BlcmNsbnQsICZkcC0+ZGxfc3RpZC5zY19jbGllbnQt PmNsX2RlbGVnYXRpb25zKTsNCit9DQorDQogLyogQ2FsbGVkIHVuZGVyIHRoZSBzdGF0ZSBsb2Nr LiAqLw0KIHN0YXRpYyB2b2lkDQogdW5oYXNoX2RlbGVnYXRpb24oc3RydWN0IG5mczRfZGVsZWdh dGlvbiAqZHApDQogew0KIAl1bmhhc2hfc3RpZCgmZHAtPmRsX3N0aWQpOw0KLQlsaXN0X2RlbF9p bml0KCZkcC0+ZGxfcGVyY2xudCk7DQogCXNwaW5fbG9jaygmcmVjYWxsX2xvY2spOw0KKwlsaXN0 X2RlbF9pbml0KCZkcC0+ZGxfcGVyY2xudCk7DQogCWxpc3RfZGVsX2luaXQoJmRwLT5kbF9wZXJm aWxlKTsNCiAJbGlzdF9kZWxfaW5pdCgmZHAtPmRsX3JlY2FsbF9scnUpOw0KIAlzcGluX3VubG9j aygmcmVjYWxsX2xvY2spOw0KQEAgLTI4MTAsMTAgKzI4MTksOCBAQCBzdGF0aWMgaW50IG5mczRf c2V0bGVhc2Uoc3RydWN0IG5mczRfZGVsZWdhdGlvbiAqZHAsIGludCBmbGFnKQ0KIAlpZiAoIWZs KQ0KIAkJcmV0dXJuIC1FTk9NRU07DQogCWZsLT5mbF9maWxlID0gZmluZF9yZWFkYWJsZV9maWxl KGZwKTsNCi0JbGlzdF9hZGQoJmRwLT5kbF9wZXJjbG50LCAmZHAtPmRsX3N0aWQuc2NfY2xpZW50 LT5jbF9kZWxlZ2F0aW9ucyk7DQogCXN0YXR1cyA9IHZmc19zZXRsZWFzZShmbC0+ZmxfZmlsZSwg ZmwtPmZsX3R5cGUsICZmbCk7DQogCWlmIChzdGF0dXMpIHsNCi0JCWxpc3RfZGVsX2luaXQoJmRw LT5kbF9wZXJjbG50KTsNCiAJCWxvY2tzX2ZyZWVfbG9jayhmbCk7DQogCQlyZXR1cm4gLUVOT01F TTsNCiAJfQ0KQEAgLTI4MjEsNyArMjgyOCw5IEBAIHN0YXRpYyBpbnQgbmZzNF9zZXRsZWFzZShz dHJ1Y3QgbmZzNF9kZWxlZ2F0aW9uICpkcCwgaW50IGZsYWcpDQogCWZwLT5maV9kZWxlZ19maWxl ID0gZmwtPmZsX2ZpbGU7DQogCWdldF9maWxlKGZwLT5maV9kZWxlZ19maWxlKTsNCiAJYXRvbWlj X3NldCgmZnAtPmZpX2RlbGVnZWVzLCAxKTsNCi0JbGlzdF9hZGQoJmRwLT5kbF9wZXJmaWxlLCAm ZnAtPmZpX2RlbGVnYXRpb25zKTsNCisJc3Bpbl9sb2NrKCZyZWNhbGxfbG9jayk7DQorCWhhc2hf ZGVsZWdhdGlvbl9sb2NrZWQoZHAsIGZwKTsNCisJc3Bpbl91bmxvY2soJnJlY2FsbF9sb2NrKTsN CiAJcmV0dXJuIDA7DQogfQ0KIA0KQEAgLTI4MzcsOSArMjg0Niw4IEBAIHN0YXRpYyBpbnQgbmZz NF9zZXRfZGVsZWdhdGlvbihzdHJ1Y3QgbmZzNF9kZWxlZ2F0aW9uICpkcCwgaW50IGZsYWcpDQog CQlyZXR1cm4gLUVBR0FJTjsNCiAJfQ0KIAlhdG9taWNfaW5jKCZmcC0+ZmlfZGVsZWdlZXMpOw0K LQlsaXN0X2FkZCgmZHAtPmRsX3BlcmZpbGUsICZmcC0+ZmlfZGVsZWdhdGlvbnMpOw0KKwloYXNo X2RlbGVnYXRpb25fbG9ja2VkKGRwLCBmcCk7DQogCXNwaW5fdW5sb2NrKCZyZWNhbGxfbG9jayk7 DQotCWxpc3RfYWRkKCZkcC0+ZGxfcGVyY2xudCwgJmRwLT5kbF9zdGlkLnNjX2NsaWVudC0+Y2xf ZGVsZWdhdGlvbnMpOw0KIAlyZXR1cm4gMDsNCiB9DQogDQpAQCAtMzM4NSw3ICszMzkzLDcgQEAg bmZzZDRfZnJlZV9sb2NrX3N0YXRlaWQoc3RydWN0IG5mczRfb2xfc3RhdGVpZCAqc3RwKQ0KIAkg KiBjb3JyZXNwb25kYW5jZSwgYW5kIHdlIGhhdmUgdG8gZGVsZXRlIHRoZSBsb2Nrb3duZXIgd2hl biB3ZQ0KIAkgKiBkZWxldGUgdGhlIGxvY2sgc3RhdGVpZDoNCiAJICovDQotCXVuaGFzaF9sb2Nr b3duZXIobG8pOw0KKwlyZWxlYXNlX2xvY2tvd25lcihsbyk7DQogCXJldHVybiBuZnNfb2s7DQog fQ0KIA0KZGlmZiAtLWdpdCBhL2ZzL25mc2QvbmZzNHhkci5jIGIvZnMvbmZzZC9uZnM0eGRyLmMN CmluZGV4IDQ4MzViOTAuLmE3OTMzZGQgMTAwNjQ0DQotLS0gYS9mcy9uZnNkL25mczR4ZHIuYw0K KysrIGIvZnMvbmZzZC9uZnM0eGRyLmMNCkBAIC0yMDM1LDggKzIwMzUsOCBAQCBuZnNkNF9lbmNv ZGVfZmF0dHIoc3RydWN0IHN2Y19maCAqZmhwLCBzdHJ1Y3Qgc3ZjX2V4cG9ydCAqZXhwLA0KIAll cnIgPSB2ZnNfZ2V0YXR0cihleHAtPmV4X3BhdGgubW50LCBkZW50cnksICZzdGF0KTsNCiAJaWYg KGVycikNCiAJCWdvdG8gb3V0X25mc2VycjsNCi0JaWYgKChibXZhbDAgJiAoRkFUVFI0X1dPUkQw X0ZJTEVTX0ZSRUUgfCBGQVRUUjRfV09SRDBfRklMRVNfVE9UQUwgfA0KLQkJCUZBVFRSNF9XT1JE MF9NQVhOQU1FKSkgfHwNCisJaWYgKChibXZhbDAgJiAoRkFUVFI0X1dPUkQwX0ZJTEVTX0FWQUlM IHwgRkFUVFI0X1dPUkQwX0ZJTEVTX0ZSRUUgfA0KKwkJCUZBVFRSNF9XT1JEMF9GSUxFU19UT1RB TCB8IEZBVFRSNF9XT1JEMF9NQVhOQU1FKSkgfHwNCiAJICAgIChibXZhbDEgJiAoRkFUVFI0X1dP UkQxX1NQQUNFX0FWQUlMIHwgRkFUVFI0X1dPUkQxX1NQQUNFX0ZSRUUgfA0KIAkJICAgICAgIEZB VFRSNF9XT1JEMV9TUEFDRV9UT1RBTCkpKSB7DQogCQllcnIgPSB2ZnNfc3RhdGZzKCZwYXRoLCAm c3RhdGZzKTsNCmRpZmYgLS1naXQgYS9mcy9yZWlzZXJmcy9maWxlLmMgYi9mcy9yZWlzZXJmcy9m aWxlLmMNCmluZGV4IGFjZTYzNTAuLmYwMTExODUgMTAwNjQ0DQotLS0gYS9mcy9yZWlzZXJmcy9m aWxlLmMNCisrKyBiL2ZzL3JlaXNlcmZzL2ZpbGUuYw0KQEAgLTEyNiw3ICsxMjYsNyBAQCBzdGF0 aWMgaW50IHJlaXNlcmZzX2ZpbGVfb3BlbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmls ZSAqZmlsZSkNCiAJcmV0dXJuIGVycjsNCiB9DQogDQotc3RhdGljIHZvaWQgcmVpc2VyZnNfdmZz X3RydW5jYXRlX2ZpbGUoc3RydWN0IGlub2RlICppbm9kZSkNCit2b2lkIHJlaXNlcmZzX3Zmc190 cnVuY2F0ZV9maWxlKHN0cnVjdCBpbm9kZSAqaW5vZGUpDQogew0KIAltdXRleF9sb2NrKCYoUkVJ U0VSRlNfSShpbm9kZSktPnRhaWxwYWNrKSk7DQogCXJlaXNlcmZzX3RydW5jYXRlX2ZpbGUoaW5v ZGUsIDEpOw0KQEAgLTMxMiw3ICszMTIsNiBAQCBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25z IHJlaXNlcmZzX2ZpbGVfb3BlcmF0aW9ucyA9IHsNCiB9Ow0KIA0KIGNvbnN0IHN0cnVjdCBpbm9k ZV9vcGVyYXRpb25zIHJlaXNlcmZzX2ZpbGVfaW5vZGVfb3BlcmF0aW9ucyA9IHsNCi0JLnRydW5j YXRlID0gcmVpc2VyZnNfdmZzX3RydW5jYXRlX2ZpbGUsDQogCS5zZXRhdHRyID0gcmVpc2VyZnNf c2V0YXR0ciwNCiAJLnNldHhhdHRyID0gcmVpc2VyZnNfc2V0eGF0dHIsDQogCS5nZXR4YXR0ciA9 IHJlaXNlcmZzX2dldHhhdHRyLA0KZGlmZiAtLWdpdCBhL2ZzL3JlaXNlcmZzL2lub2RlLmMgYi9m cy9yZWlzZXJmcy9pbm9kZS5jDQppbmRleCBmZTY3N2MwLi5mY2IwN2U1IDEwMDY0NA0KLS0tIGEv ZnMvcmVpc2VyZnMvaW5vZGUuYw0KKysrIGIvZnMvcmVpc2VyZnMvaW5vZGUuYw0KQEAgLTMwOTEs OCArMzA5MSwxMCBAQCBzdGF0aWMgc3NpemVfdCByZWlzZXJmc19kaXJlY3RfSU8oaW50IHJ3LCBz dHJ1Y3Qga2lvY2IgKmlvY2IsDQogCQlsb2ZmX3QgaXNpemUgPSBpX3NpemVfcmVhZChpbm9kZSk7 DQogCQlsb2ZmX3QgZW5kID0gb2Zmc2V0ICsgaW92X2xlbmd0aChpb3YsIG5yX3NlZ3MpOw0KIA0K LQkJaWYgKGVuZCA+IGlzaXplKQ0KLQkJCXZtdHJ1bmNhdGUoaW5vZGUsIGlzaXplKTsNCisJCWlm ICgoZW5kID4gaXNpemUpICYmIGlub2RlX25ld3NpemVfb2soaW5vZGUsIGlzaXplKSA9PSAwKSB7 DQorCQkJdHJ1bmNhdGVfc2V0c2l6ZShpbm9kZSwgaXNpemUpOw0KKwkJCXJlaXNlcmZzX3Zmc190 cnVuY2F0ZV9maWxlKGlub2RlKTsNCisJCX0NCiAJfQ0KIA0KIAlyZXR1cm4gcmV0Ow0KQEAgLTMy MDYsOCArMzIwOCwxOSBAQCBpbnQgcmVpc2VyZnNfc2V0YXR0cihzdHJ1Y3QgZGVudHJ5ICpkZW50 cnksIHN0cnVjdCBpYXR0ciAqYXR0cikNCiAJICovDQogCXJlaXNlcmZzX3dyaXRlX3VubG9ja19v bmNlKGlub2RlLT5pX3NiLCBkZXB0aCk7DQogCWlmICgoYXR0ci0+aWFfdmFsaWQgJiBBVFRSX1NJ WkUpICYmDQotCSAgICBhdHRyLT5pYV9zaXplICE9IGlfc2l6ZV9yZWFkKGlub2RlKSkNCi0JCWVy cm9yID0gdm10cnVuY2F0ZShpbm9kZSwgYXR0ci0+aWFfc2l6ZSk7DQorCSAgICBhdHRyLT5pYV9z aXplICE9IGlfc2l6ZV9yZWFkKGlub2RlKSkgew0KKwkJZXJyb3IgPSBpbm9kZV9uZXdzaXplX29r KGlub2RlLCBhdHRyLT5pYV9zaXplKTsNCisJCWlmICghZXJyb3IpIHsNCisJCQkvKg0KKwkJCSAq IENvdWxkIHJhY2UgYWdhaW5zdCByZWlzZXJmc19maWxlX3JlbGVhc2UNCisJCQkgKiBpZiBjYWxs ZWQgZnJvbSBORlMsIHNvIHRha2UgdGFpbHBhY2sgbXV0ZXguDQorCQkJICovDQorCQkJbXV0ZXhf bG9jaygmUkVJU0VSRlNfSShpbm9kZSktPnRhaWxwYWNrKTsNCisJCQl0cnVuY2F0ZV9zZXRzaXpl KGlub2RlLCBhdHRyLT5pYV9zaXplKTsNCisJCQlyZWlzZXJmc190cnVuY2F0ZV9maWxlKGlub2Rl LCAxKTsNCisJCQltdXRleF91bmxvY2soJlJFSVNFUkZTX0koaW5vZGUpLT50YWlscGFjayk7DQor CQl9DQorCX0NCiANCiAJaWYgKCFlcnJvcikgew0KIAkJc2V0YXR0cl9jb3B5KGlub2RlLCBhdHRy KTsNCmRpZmYgLS1naXQgYS9mcy91Ymlmcy9maWxlLmMgYi9mcy91Ymlmcy9maWxlLmMNCmluZGV4 IGY5YzIzNGIuLjY1ODkwMDYgMTAwNjQ0DQotLS0gYS9mcy91Ymlmcy9maWxlLmMNCisrKyBiL2Zz L3ViaWZzL2ZpbGUuYw0KQEAgLTE1MjIsOCArMTUyMiw3IEBAIHN0YXRpYyBpbnQgdWJpZnNfdm1f cGFnZV9ta3dyaXRlKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLA0KIAkJCXViaWZzX3JlbGVh c2VfZGlydHlfaW5vZGVfYnVkZ2V0KGMsIHVpKTsNCiAJfQ0KIA0KLQl1bmxvY2tfcGFnZShwYWdl KTsNCi0JcmV0dXJuIDA7DQorCXJldHVybiBWTV9GQVVMVF9MT0NLRUQ7DQogDQogb3V0X3VubG9j azoNCiAJdW5sb2NrX3BhZ2UocGFnZSk7DQpkaWZmIC0tZ2l0IGEvZnMvdWJpZnMvc2hyaW5rZXIu YyBiL2ZzL3ViaWZzL3Nocmlua2VyLmMNCmluZGV4IDllMWQwNTYuLmUwYTdhNzYgMTAwNjQ0DQot LS0gYS9mcy91Ymlmcy9zaHJpbmtlci5jDQorKysgYi9mcy91Ymlmcy9zaHJpbmtlci5jDQpAQCAt MTI4LDcgKzEyOCw2IEBAIHN0YXRpYyBpbnQgc2hyaW5rX3RuYyhzdHJ1Y3QgdWJpZnNfaW5mbyAq YywgaW50IG5yLCBpbnQgYWdlLCBpbnQgKmNvbnRlbnRpb24pDQogCQkJZnJlZWQgPSB1Ymlmc19k ZXN0cm95X3RuY19zdWJ0cmVlKHpub2RlKTsNCiAJCQlhdG9taWNfbG9uZ19zdWIoZnJlZWQsICZ1 Ymlmc19jbGVhbl96bl9jbnQpOw0KIAkJCWF0b21pY19sb25nX3N1YihmcmVlZCwgJmMtPmNsZWFu X3puX2NudCk7DQotCQkJdWJpZnNfYXNzZXJ0KGF0b21pY19sb25nX3JlYWQoJmMtPmNsZWFuX3pu X2NudCkgPj0gMCk7DQogCQkJdG90YWxfZnJlZWQgKz0gZnJlZWQ7DQogCQkJem5vZGUgPSB6cHJl djsNCiAJCX0NCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2lycWRlc2MuaCBiL2luY2x1ZGUv bGludXgvaXJxZGVzYy5oDQppbmRleCBmMWUyNTI3Li5lMmUxYWI1IDEwMDY0NA0KLS0tIGEvaW5j bHVkZS9saW51eC9pcnFkZXNjLmgNCisrKyBiL2luY2x1ZGUvbGludXgvaXJxZGVzYy5oDQpAQCAt MjcsNiArMjcsOCBAQCBzdHJ1Y3QgbW9kdWxlOw0KICAqIEBpcnFfY291bnQ6CQlzdGF0cyBmaWVs ZCB0byBkZXRlY3Qgc3RhbGxlZCBpcnFzDQogICogQGxhc3RfdW5oYW5kbGVkOglhZ2luZyB0aW1l ciBmb3IgdW5oYW5kbGVkIGNvdW50DQogICogQGlycXNfdW5oYW5kbGVkOglzdGF0cyBmaWVsZCBm b3Igc3B1cmlvdXMgdW5oYW5kbGVkIGludGVycnVwdHMNCisgKiBAdGhyZWFkc19oYW5kbGVkOglz dGF0cyBmaWVsZCBmb3IgZGVmZXJyZWQgc3B1cmlvdXMgZGV0ZWN0aW9uIG9mIHRocmVhZGVkIGhh bmRsZXJzDQorICogQHRocmVhZHNfaGFuZGxlZF9sYXN0OiBjb21wYXJhdG9yIGZpZWxkIGZvciBk ZWZlcnJlZCBzcHVyaW91cyBkZXRlY3Rpb24gb2YgdGhlcmFkZWQgaGFuZGxlcnMNCiAgKiBAbG9j azoJCWxvY2tpbmcgZm9yIFNNUA0KICAqIEBhZmZpbml0eV9oaW50OgloaW50IHRvIHVzZXIgc3Bh Y2UgZm9yIHByZWZlcnJlZCBpcnEgYWZmaW5pdHkNCiAgKiBAYWZmaW5pdHlfbm90aWZ5Ogljb250 ZXh0IGZvciBub3RpZmljYXRpb24gb2YgYWZmaW5pdHkgY2hhbmdlcw0KQEAgLTUzLDYgKzU1LDgg QEAgc3RydWN0IGlycV9kZXNjIHsNCiAJdW5zaWduZWQgaW50CQlpcnFfY291bnQ7CS8qIEZvciBk ZXRlY3RpbmcgYnJva2VuIElSUXMgKi8NCiAJdW5zaWduZWQgbG9uZwkJbGFzdF91bmhhbmRsZWQ7 CS8qIEFnaW5nIHRpbWVyIGZvciB1bmhhbmRsZWQgY291bnQgKi8NCiAJdW5zaWduZWQgaW50CQlp cnFzX3VuaGFuZGxlZDsNCisJYXRvbWljX3QJCXRocmVhZHNfaGFuZGxlZDsNCisJaW50CQkJdGhy ZWFkc19oYW5kbGVkX2xhc3Q7DQogCXJhd19zcGlubG9ja190CQlsb2NrOw0KIAlzdHJ1Y3QgY3B1 bWFzawkJKnBlcmNwdV9lbmFibGVkOw0KICNpZmRlZiBDT05GSUdfU01QDQpkaWZmIC0tZ2l0IGEv aW5jbHVkZS9saW51eC9sem8uaCBiL2luY2x1ZGUvbGludXgvbHpvLmgNCmluZGV4IGQ3OTM0OTcu LmEwODQ4ZDkgMTAwNjQ0DQotLS0gYS9pbmNsdWRlL2xpbnV4L2x6by5oDQorKysgYi9pbmNsdWRl L2xpbnV4L2x6by5oDQpAQCAtNCwyOCArNCwyOCBAQA0KICAqICBMWk8gUHVibGljIEtlcm5lbCBJ bnRlcmZhY2UNCiAgKiAgQSBtaW5pIHN1YnNldCBvZiB0aGUgTFpPIHJlYWwtdGltZSBkYXRhIGNv bXByZXNzaW9uIGxpYnJhcnkNCiAgKg0KLSAqICBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwNSBNYXJr dXMgRi5YLkouIE9iZXJodW1lciA8bWFya3VzQG9iZXJodW1lci5jb20+DQorICogIENvcHlyaWdo dCAoQykgMTk5Ni0yMDEyIE1hcmt1cyBGLlguSi4gT2Jlcmh1bWVyIDxtYXJrdXNAb2Jlcmh1bWVy LmNvbT4NCiAgKg0KICAqICBUaGUgZnVsbCBMWk8gcGFja2FnZSBjYW4gYmUgZm91bmQgYXQ6DQog ICogIGh0dHA6Ly93d3cub2Jlcmh1bWVyLmNvbS9vcGVuc291cmNlL2x6by8NCiAgKg0KLSAqICBD aGFuZ2VkIGZvciBrZXJuZWwgdXNlIGJ5Og0KKyAqICBDaGFuZ2VkIGZvciBMaW51eCBrZXJuZWwg dXNlIGJ5Og0KICAqICBOaXRpbiBHdXB0YSA8bml0aW5ndXB0YTkxMEBnbWFpbC5jb20+DQogICog IFJpY2hhcmQgUHVyZGllIDxycHVyZGllQG9wZW5lZGhhbmQuY29tPg0KICAqLw0KIA0KLSNkZWZp bmUgTFpPMVhfTUVNX0NPTVBSRVNTCSgxNjM4NCAqIHNpemVvZih1bnNpZ25lZCBjaGFyICopKQ0K LSNkZWZpbmUgTFpPMVhfMV9NRU1fQ09NUFJFU1MJTFpPMVhfTUVNX0NPTVBSRVNTDQorI2RlZmlu ZSBMWk8xWF8xX01FTV9DT01QUkVTUwkoODE5MiAqIHNpemVvZih1bnNpZ25lZCBzaG9ydCkpDQor I2RlZmluZSBMWk8xWF9NRU1fQ09NUFJFU1MJTFpPMVhfMV9NRU1fQ09NUFJFU1MNCiANCiAjZGVm aW5lIGx6bzF4X3dvcnN0X2NvbXByZXNzKHgpICgoeCkgKyAoKHgpIC8gMTYpICsgNjQgKyAzKQ0K IA0KLS8qIFRoaXMgcmVxdWlyZXMgJ3dvcmttZW0nIG9mIHNpemUgTFpPMVhfMV9NRU1fQ09NUFJF U1MgKi8NCisvKiBUaGlzIHJlcXVpcmVzICd3cmttZW0nIG9mIHNpemUgTFpPMVhfMV9NRU1fQ09N UFJFU1MgKi8NCiBpbnQgbHpvMXhfMV9jb21wcmVzcyhjb25zdCB1bnNpZ25lZCBjaGFyICpzcmMs IHNpemVfdCBzcmNfbGVuLA0KLQkJCXVuc2lnbmVkIGNoYXIgKmRzdCwgc2l6ZV90ICpkc3RfbGVu LCB2b2lkICp3cmttZW0pOw0KKwkJICAgICB1bnNpZ25lZCBjaGFyICpkc3QsIHNpemVfdCAqZHN0 X2xlbiwgdm9pZCAqd3JrbWVtKTsNCiANCiAvKiBzYWZlIGRlY29tcHJlc3Npb24gd2l0aCBvdmVy cnVuIHRlc3RpbmcgKi8NCiBpbnQgbHpvMXhfZGVjb21wcmVzc19zYWZlKGNvbnN0IHVuc2lnbmVk IGNoYXIgKnNyYywgc2l6ZV90IHNyY19sZW4sDQotCQkJdW5zaWduZWQgY2hhciAqZHN0LCBzaXpl X3QgKmRzdF9sZW4pOw0KKwkJCSAgdW5zaWduZWQgY2hhciAqZHN0LCBzaXplX3QgKmRzdF9sZW4p Ow0KIA0KIC8qDQogICogUmV0dXJuIHZhbHVlcyAoPCAwID0gRXJyb3IpDQpAQCAtNDAsNSArNDAs NiBAQCBpbnQgbHpvMXhfZGVjb21wcmVzc19zYWZlKGNvbnN0IHVuc2lnbmVkIGNoYXIgKnNyYywg c2l6ZV90IHNyY19sZW4sDQogI2RlZmluZSBMWk9fRV9FT0ZfTk9UX0ZPVU5ECQkoLTcpDQogI2Rl ZmluZSBMWk9fRV9JTlBVVF9OT1RfQ09OU1VNRUQJKC04KQ0KICNkZWZpbmUgTFpPX0VfTk9UX1lF VF9JTVBMRU1FTlRFRAkoLTkpDQorI2RlZmluZSBMWk9fRV9JTlZBTElEX0FSR1VNRU5UCQkoLTEw KQ0KIA0KICNlbmRpZg0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcHRyYWNlLmggYi9pbmNs dWRlL2xpbnV4L3B0cmFjZS5oDQppbmRleCA4MDBmMTEzLi5lNDkyNDBiIDEwMDY0NA0KLS0tIGEv aW5jbHVkZS9saW51eC9wdHJhY2UuaA0KKysrIGIvaW5jbHVkZS9saW51eC9wdHJhY2UuaA0KQEAg LTExMiw2ICsxMTIsNyBAQA0KIA0KICNpbmNsdWRlIDxsaW51eC9jb21waWxlci5oPgkJLyogRm9y IHVubGlrZWx5LiAgKi8NCiAjaW5jbHVkZSA8bGludXgvc2NoZWQuaD4JCS8qIEZvciBzdHJ1Y3Qg dGFza19zdHJ1Y3QuICAqLw0KKyNpbmNsdWRlIDxsaW51eC9waWRfbmFtZXNwYWNlLmg+CS8qIEZv ciB0YXNrX2FjdGl2ZV9waWRfbnMuICAqLw0KIA0KIA0KIGV4dGVybiBsb25nIGFyY2hfcHRyYWNl KHN0cnVjdCB0YXNrX3N0cnVjdCAqY2hpbGQsIGxvbmcgcmVxdWVzdCwNCkBAIC0yMDQsNiArMjA1 LDM3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBwdHJhY2VfZXZlbnQoaW50IGV2ZW50LCB1bnNpZ25l ZCBsb25nIG1lc3NhZ2UpDQogfQ0KIA0KIC8qKg0KKyAqIHB0cmFjZV9ldmVudF9waWQgLSBwb3Nz aWJseSBzdG9wIGZvciBhIHB0cmFjZSBldmVudCBub3RpZmljYXRpb24NCisgKiBAZXZlbnQ6CSVQ VFJBQ0VfRVZFTlRfKiB2YWx1ZSB0byByZXBvcnQNCisgKiBAcGlkOglwcm9jZXNzIGlkZW50aWZp ZXIgZm9yICVQVFJBQ0VfR0VURVZFTlRNU0cgdG8gcmV0dXJuDQorICoNCisgKiBDaGVjayB3aGV0 aGVyIEBldmVudCBpcyBlbmFibGVkIGFuZCwgaWYgc28sIHJlcG9ydCBAZXZlbnQgYW5kIEBwaWQN CisgKiB0byB0aGUgcHRyYWNlIHBhcmVudC4gIEBwaWQgaXMgcmVwb3J0ZWQgYXMgdGhlIHBpZF90 IHNlZW4gZnJvbSB0aGUNCisgKiB0aGUgcHRyYWNlIHBhcmVudCdzIHBpZCBuYW1lc3BhY2UuDQor ICoNCisgKiBDYWxsZWQgd2l0aG91dCBsb2Nrcy4NCisgKi8NCitzdGF0aWMgaW5saW5lIHZvaWQg cHRyYWNlX2V2ZW50X3BpZChpbnQgZXZlbnQsIHN0cnVjdCBwaWQgKnBpZCkNCit7DQorCS8qDQor CSAqIEZJWE1FOiBUaGVyZSdzIGEgcG90ZW50aWFsIHJhY2UgaWYgYSBwdHJhY2VyIGluIGEgZGlm ZmVyZW50IHBpZA0KKwkgKiBuYW1lc3BhY2UgdGhhbiBwYXJlbnQgYXR0YWNoZXMgYmV0d2VlbiBj b21wdXRpbmcgbWVzc2FnZSBiZWxvdyBhbmQNCisJICogd2hlbiB3ZSBhY3F1aXJlIHRhc2tsaXN0 X2xvY2sgaW4gcHRyYWNlX3N0b3AoKS4gIElmIHRoaXMgaGFwcGVucywNCisJICogdGhlIHB0cmFj ZXIgd2lsbCBnZXQgYSBib2d1cyBwaWQgZnJvbSBQVFJBQ0VfR0VURVZFTlRNU0cuDQorCSAqLw0K Kwl1bnNpZ25lZCBsb25nIG1lc3NhZ2UgPSAwOw0KKwlzdHJ1Y3QgcGlkX25hbWVzcGFjZSAqbnM7 DQorDQorCXJjdV9yZWFkX2xvY2soKTsNCisJbnMgPSB0YXNrX2FjdGl2ZV9waWRfbnMocmN1X2Rl cmVmZXJlbmNlKGN1cnJlbnQtPnBhcmVudCkpOw0KKwlpZiAobnMpDQorCQltZXNzYWdlID0gcGlk X25yX25zKHBpZCwgbnMpOw0KKwlyY3VfcmVhZF91bmxvY2soKTsNCisNCisJcHRyYWNlX2V2ZW50 KGV2ZW50LCBtZXNzYWdlKTsNCit9DQorDQorLyoqDQogICogcHRyYWNlX2luaXRfdGFzayAtIGlu aXRpYWxpemUgcHRyYWNlIHN0YXRlIGZvciBhIG5ldyBjaGlsZA0KICAqIEBjaGlsZDoJCW5ldyBj aGlsZCB0YXNrDQogICogQHB0cmFjZToJCXRydWUgaWYgY2hpbGQgc2hvdWxkIGJlIHB0cmFjZSdk IGJ5IHBhcmVudCdzIHRyYWNlcg0KQEAgLTM3MSw2ICs0MDMsOSBAQCBzdGF0aWMgaW5saW5lIHZv aWQgdXNlcl9zaW5nbGVfc3RlcF9zaWdpbmZvKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrLA0KICAq IGNhbGxpbmcgYXJjaF9wdHJhY2Vfc3RvcCgpIHdoZW4gaXQgd291bGQgYmUgc3VwZXJmbHVvdXMu ICBGb3IgZXhhbXBsZSwNCiAgKiBpZiB0aGUgdGhyZWFkIGhhcyBub3QgYmVlbiBiYWNrIHRvIHVz ZXIgbW9kZSBzaW5jZSB0aGUgbGFzdCBzdG9wLCB0aGUNCiAgKiB0aHJlYWQgc3RhdGUgbWlnaHQg aW5kaWNhdGUgdGhhdCBub3RoaW5nIG5lZWRzIHRvIGJlIGRvbmUuDQorICoNCisgKiBUaGlzIGlz IGd1YXJhbnRlZWQgdG8gYmUgaW52b2tlZCBvbmNlIGJlZm9yZSBhIHRhc2sgc3RvcHMgZm9yIHB0 cmFjZSBhbmQNCisgKiBtYXkgaW5jbHVkZSBhcmNoLXNwZWNpZmljIG9wZXJhdGlvbnMgbmVjZXNz YXJ5IHByaW9yIHRvIGEgcHRyYWNlIHN0b3AuDQogICovDQogI2RlZmluZSBhcmNoX3B0cmFjZV9z dG9wX25lZWRlZChjb2RlLCBpbmZvKQkoMCkNCiAjZW5kaWYNCmRpZmYgLS1naXQgYS9pbmNsdWRl L2xpbnV4L3JlaXNlcmZzX2ZzLmggYi9pbmNsdWRlL2xpbnV4L3JlaXNlcmZzX2ZzLmgNCmluZGV4 IDk2ZDQ2NWYuLjQzYzcyNTEgMTAwNjQ0DQotLS0gYS9pbmNsdWRlL2xpbnV4L3JlaXNlcmZzX2Zz LmgNCisrKyBiL2luY2x1ZGUvbGludXgvcmVpc2VyZnNfZnMuaA0KQEAgLTE4ODIsNiArMTg4Miw3 IEBAIHN0cnVjdCByZWlzZXJmc190cmFuc2FjdGlvbl9oYW5kbGUgKnJlaXNlcmZzX3BlcnNpc3Rl bnRfdHJhbnNhY3Rpb24oc3RydWN0DQogCQkJCQkJCQkgICAgKiwNCiAJCQkJCQkJCSAgICBpbnQg Y291bnQpOw0KIGludCByZWlzZXJmc19lbmRfcGVyc2lzdGVudF90cmFuc2FjdGlvbihzdHJ1Y3Qg cmVpc2VyZnNfdHJhbnNhY3Rpb25faGFuZGxlICopOw0KK3ZvaWQgcmVpc2VyZnNfdmZzX3RydW5j YXRlX2ZpbGUoc3RydWN0IGlub2RlICppbm9kZSk7DQogaW50IHJlaXNlcmZzX2NvbW1pdF9wYWdl KHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBwYWdlICpwYWdlLA0KIAkJCSB1bnNpZ25lZCBm cm9tLCB1bnNpZ25lZCB0byk7DQogaW50IHJlaXNlcmZzX2ZsdXNoX29sZF9jb21taXRzKHN0cnVj dCBzdXBlcl9ibG9jayAqKTsNCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3NrYnVmZi5oIGIv aW5jbHVkZS9saW51eC9za2J1ZmYuaA0KaW5kZXggYzQ0NWU1Mi4uNDBjMjcyNiAxMDA2NDQNCi0t LSBhL2luY2x1ZGUvbGludXgvc2tidWZmLmgNCisrKyBiL2luY2x1ZGUvbGludXgvc2tidWZmLmgN CkBAIC0xNjMzLDYgKzE2MzMsMjIgQEAgc3RhdGljIGlubGluZSB2b2lkIHNrYl9vcnBoYW4oc3Ry dWN0IHNrX2J1ZmYgKnNrYikNCiB9DQogDQogLyoqDQorICoJc2tiX29ycGhhbl9mcmFncyAtIG9y cGhhbiB0aGUgZnJhZ3MgY29udGFpbmVkIGluIGEgYnVmZmVyDQorICoJQHNrYjogYnVmZmVyIHRv IG9ycGhhbiBmcmFncyBmcm9tDQorICoJQGdmcF9tYXNrOiBhbGxvY2F0aW9uIG1hc2sgZm9yIHJl cGxhY2VtZW50IHBhZ2VzDQorICoNCisgKglGb3IgZWFjaCBmcmFnIGluIHRoZSBTS0Igd2hpY2gg bmVlZHMgYSBkZXN0cnVjdG9yIChpLmUuIGhhcyBhbg0KKyAqCW93bmVyKSBjcmVhdGUgYSBjb3B5 IG9mIHRoYXQgZnJhZyBhbmQgcmVsZWFzZSB0aGUgb3JpZ2luYWwNCisgKglwYWdlIGJ5IGNhbGxp bmcgdGhlIGRlc3RydWN0b3IuDQorICovDQorc3RhdGljIGlubGluZSBpbnQgc2tiX29ycGhhbl9m cmFncyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBnZnBfdCBnZnBfbWFzaykNCit7DQorCWlmIChsaWtl bHkoIShza2Jfc2hpbmZvKHNrYiktPnR4X2ZsYWdzICYgU0tCVFhfREVWX1pFUk9DT1BZKSkpDQor CQlyZXR1cm4gMDsNCisJcmV0dXJuIHNrYl9jb3B5X3VidWZzKHNrYiwgZ2ZwX21hc2spOw0KK30N CisNCisvKioNCiAgKglfX3NrYl9xdWV1ZV9wdXJnZSAtIGVtcHR5IGEgbGlzdA0KICAqCUBsaXN0 OiBsaXN0IHRvIGVtcHR5DQogICoNCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9pbmV0cGVlci5o IGIvaW5jbHVkZS9uZXQvaW5ldHBlZXIuaA0KaW5kZXggMzRiMDZkYS4uYmEwZGRiMCAxMDA2NDQN Ci0tLSBhL2luY2x1ZGUvbmV0L2luZXRwZWVyLmgNCisrKyBiL2luY2x1ZGUvbmV0L2luZXRwZWVy LmgNCkBAIC0xMTUsMTYgKzExNSw5IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBpbmV0X3BlZXJfcmVm Y2hlY2soY29uc3Qgc3RydWN0IGluZXRfcGVlciAqcCkNCiAvKiBjYW4gYmUgY2FsbGVkIHdpdGgg b3Igd2l0aG91dCBsb2NhbCBCSCBiZWluZyBkaXNhYmxlZCAqLw0KIHN0YXRpYyBpbmxpbmUgaW50 IGluZXRfZ2V0aWQoc3RydWN0IGluZXRfcGVlciAqcCwgaW50IG1vcmUpDQogew0KLQlpbnQgb2xk LCBuZXc7DQogCW1vcmUrKzsNCiAJaW5ldF9wZWVyX3JlZmNoZWNrKHApOw0KLQlkbyB7DQotCQlv bGQgPSBhdG9taWNfcmVhZCgmcC0+aXBfaWRfY291bnQpOw0KLQkJbmV3ID0gb2xkICsgbW9yZTsN Ci0JCWlmICghbmV3KQ0KLQkJCW5ldyA9IDE7DQotCX0gd2hpbGUgKGF0b21pY19jbXB4Y2hnKCZw LT5pcF9pZF9jb3VudCwgb2xkLCBuZXcpICE9IG9sZCk7DQotCXJldHVybiBuZXc7DQorCXJldHVy biBhdG9taWNfYWRkX3JldHVybihtb3JlLCAmcC0+aXBfaWRfY291bnQpIC0gbW9yZTsNCiB9DQog DQogI2VuZGlmIC8qIF9ORVRfSU5FVFBFRVJfSCAqLw0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvc2Nz aS9zY3NpX2RldmljZS5oIGIvaW5jbHVkZS9zY3NpL3Njc2lfZGV2aWNlLmgNCmluZGV4IDU1OTFl ZDUuLjMxNTJjYzMgMTAwNjQ0DQotLS0gYS9pbmNsdWRlL3Njc2kvc2NzaV9kZXZpY2UuaA0KKysr IGIvaW5jbHVkZS9zY3NpL3Njc2lfZGV2aWNlLmgNCkBAIC0yMzksNyArMjM5LDcgQEAgc3RydWN0 IHNjc2lfdGFyZ2V0IHsNCiAJc3RydWN0IGxpc3RfaGVhZAlzaWJsaW5nczsNCiAJc3RydWN0IGxp c3RfaGVhZAlkZXZpY2VzOw0KIAlzdHJ1Y3QgZGV2aWNlCQlkZXY7DQotCXVuc2lnbmVkIGludAkJ cmVhcF9yZWY7IC8qIHByb3RlY3RlZCBieSB0aGUgaG9zdCBsb2NrICovDQorCXN0cnVjdCBrcmVm CQlyZWFwX3JlZjsgLyogbGFzdCBwdXQgcmVuZGVycyB0YXJnZXQgaW52aXNpYmxlICovDQogCXVu c2lnbmVkIGludAkJY2hhbm5lbDsNCiAJdW5zaWduZWQgaW50CQlpZDsgLyogdGFyZ2V0IGlkIC4u LiByZXBsYWNlDQogCQkJCSAgICAgKiBzY3NpX2RldmljZS5pZCBldmVudHVhbGx5ICovDQpAQCAt MjYxLDcgKzI2MSw2IEBAIHN0cnVjdCBzY3NpX3RhcmdldCB7DQogI2RlZmluZSBTQ1NJX0RFRkFV TFRfVEFSR0VUX0JMT0NLRUQJMw0KIA0KIAljaGFyCQkJc2NzaV9sZXZlbDsNCi0Jc3RydWN0IGV4 ZWN1dGVfd29yawlldzsNCiAJZW51bSBzY3NpX3RhcmdldF9zdGF0ZQlzdGF0ZTsNCiAJdm9pZCAJ CQkqaG9zdGRhdGE7IC8qIGF2YWlsYWJsZSB0byBsb3ctbGV2ZWwgZHJpdmVyICovDQogCXVuc2ln bmVkIGxvbmcJCXN0YXJnZXRfZGF0YVswXTsgLyogZm9yIHRoZSB0cmFuc3BvcnQgKi8NCmRpZmYg LS1naXQgYS9pbmNsdWRlL3NvdW5kL2NvcmUuaCBiL2luY2x1ZGUvc291bmQvY29yZS5oDQppbmRl eCAyMjJmMTFlLi42YTNiMDNhIDEwMDY0NA0KLS0tIGEvaW5jbHVkZS9zb3VuZC9jb3JlLmgNCisr KyBiL2luY2x1ZGUvc291bmQvY29yZS5oDQpAQCAtMTIwLDYgKzEyMCw4IEBAIHN0cnVjdCBzbmRf Y2FyZCB7DQogCWludCB1c2VyX2N0bF9jb3VudDsJCS8qIGNvdW50IG9mIGFsbCB1c2VyIGNvbnRy b2xzICovDQogCXN0cnVjdCBsaXN0X2hlYWQgY29udHJvbHM7CS8qIGFsbCBjb250cm9scyBmb3Ig dGhpcyBjYXJkICovDQogCXN0cnVjdCBsaXN0X2hlYWQgY3RsX2ZpbGVzOwkvKiBhY3RpdmUgY29u dHJvbCBmaWxlcyAqLw0KKwlzdHJ1Y3QgbXV0ZXggdXNlcl9jdGxfbG9jazsJLyogcHJvdGVjdHMg dXNlciBjb250cm9scyBhZ2FpbnN0DQorCQkJCQkgICBjb25jdXJyZW50IGFjY2VzcyAqLw0KIA0K IAlzdHJ1Y3Qgc25kX2luZm9fZW50cnkgKnByb2Nfcm9vdDsJLyogcm9vdCBmb3Igc291bmRjYXJk IHNwZWNpZmljIGZpbGVzICovDQogCXN0cnVjdCBzbmRfaW5mb19lbnRyeSAqcHJvY19pZDsJLyog dGhlIGNhcmQgaWQgKi8NCmRpZmYgLS1naXQgYS9pbmNsdWRlL3RyYWNlL3N5c2NhbGwuaCBiL2lu Y2x1ZGUvdHJhY2Uvc3lzY2FsbC5oDQppbmRleCAzMTk2NmE0Li41MWI3MmQ4IDEwMDY0NA0KLS0t IGEvaW5jbHVkZS90cmFjZS9zeXNjYWxsLmgNCisrKyBiL2luY2x1ZGUvdHJhY2Uvc3lzY2FsbC5o DQpAQCAtNCw2ICs0LDcgQEANCiAjaW5jbHVkZSA8bGludXgvdHJhY2Vwb2ludC5oPg0KICNpbmNs dWRlIDxsaW51eC91bmlzdGQuaD4NCiAjaW5jbHVkZSA8bGludXgvZnRyYWNlX2V2ZW50Lmg+DQor I2luY2x1ZGUgPGxpbnV4L3RocmVhZF9pbmZvLmg+DQogDQogI2luY2x1ZGUgPGFzbS9wdHJhY2Uu aD4NCiANCkBAIC01NCw0ICs1NSwxOCBAQCBpbnQgcGVyZl9zeXNleGl0X2VuYWJsZShzdHJ1Y3Qg ZnRyYWNlX2V2ZW50X2NhbGwgKmNhbGwpOw0KIHZvaWQgcGVyZl9zeXNleGl0X2Rpc2FibGUoc3Ry dWN0IGZ0cmFjZV9ldmVudF9jYWxsICpjYWxsKTsNCiAjZW5kaWYNCiANCisjaWYgZGVmaW5lZChD T05GSUdfVFJBQ0VQT0lOVFMpICYmIGRlZmluZWQoQ09ORklHX0hBVkVfU1lTQ0FMTF9UUkFDRVBP SU5UUykNCitzdGF0aWMgaW5saW5lIHZvaWQgc3lzY2FsbF90cmFjZXBvaW50X3VwZGF0ZShzdHJ1 Y3QgdGFza19zdHJ1Y3QgKnApDQorew0KKwlpZiAodGVzdF90aHJlYWRfZmxhZyhUSUZfU1lTQ0FM TF9UUkFDRVBPSU5UKSkNCisJCXNldF90c2tfdGhyZWFkX2ZsYWcocCwgVElGX1NZU0NBTExfVFJB Q0VQT0lOVCk7DQorCWVsc2UNCisJCWNsZWFyX3Rza190aHJlYWRfZmxhZyhwLCBUSUZfU1lTQ0FM TF9UUkFDRVBPSU5UKTsNCit9DQorI2Vsc2UNCitzdGF0aWMgaW5saW5lIHZvaWQgc3lzY2FsbF90 cmFjZXBvaW50X3VwZGF0ZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApDQorew0KK30NCisjZW5kaWYN CisNCiAjZW5kaWYgLyogX1RSQUNFX1NZU0NBTExfSCAqLw0KZGlmZiAtLWdpdCBhL2tlcm5lbC9h dWRpdHNjLmMgYi9rZXJuZWwvYXVkaXRzYy5jDQppbmRleCBhZWFjN2NjLi5kMWQyODQzIDEwMDY0 NA0KLS0tIGEva2VybmVsL2F1ZGl0c2MuYw0KKysrIGIva2VybmVsL2F1ZGl0c2MuYw0KQEAgLTY4 OCw2ICs2ODgsMjIgQEAgc3RhdGljIGVudW0gYXVkaXRfc3RhdGUgYXVkaXRfZmlsdGVyX3Rhc2so c3RydWN0IHRhc2tfc3RydWN0ICp0c2ssIGNoYXIgKiprZXkpDQogCXJldHVybiBBVURJVF9CVUlM RF9DT05URVhUOw0KIH0NCiANCitzdGF0aWMgaW50IGF1ZGl0X2luX21hc2soY29uc3Qgc3RydWN0 IGF1ZGl0X2tydWxlICpydWxlLCB1bnNpZ25lZCBsb25nIHZhbCkNCit7DQorCWludCB3b3JkLCBi aXQ7DQorDQorCWlmICh2YWwgPiAweGZmZmZmZmZmKQ0KKwkJcmV0dXJuIGZhbHNlOw0KKw0KKwl3 b3JkID0gQVVESVRfV09SRCh2YWwpOw0KKwlpZiAod29yZCA+PSBBVURJVF9CSVRNQVNLX1NJWkUp DQorCQlyZXR1cm4gZmFsc2U7DQorDQorCWJpdCA9IEFVRElUX0JJVCh2YWwpOw0KKw0KKwlyZXR1 cm4gcnVsZS0+bWFza1t3b3JkXSAmIGJpdDsNCit9DQorDQogLyogQXQgc3lzY2FsbCBlbnRyeSBh bmQgZXhpdCB0aW1lLCB0aGlzIGZpbHRlciBpcyBjYWxsZWQgaWYgdGhlDQogICogYXVkaXRfc3Rh dGUgaXMgbm90IGxvdyBlbm91Z2ggdGhhdCBhdWRpdGluZyBjYW5ub3QgdGFrZSBwbGFjZSwgYnV0 IGlzDQogICogYWxzbyBub3QgaGlnaCBlbm91Z2ggdGhhdCB3ZSBhbHJlYWR5IGtub3cgd2UgaGF2 ZSB0byB3cml0ZSBhbiBhdWRpdA0KQEAgLTcwNSwxMSArNzIxLDggQEAgc3RhdGljIGVudW0gYXVk aXRfc3RhdGUgYXVkaXRfZmlsdGVyX3N5c2NhbGwoc3RydWN0IHRhc2tfc3RydWN0ICp0c2ssDQog DQogCXJjdV9yZWFkX2xvY2soKTsNCiAJaWYgKCFsaXN0X2VtcHR5KGxpc3QpKSB7DQotCQlpbnQg d29yZCA9IEFVRElUX1dPUkQoY3R4LT5tYWpvcik7DQotCQlpbnQgYml0ICA9IEFVRElUX0JJVChj dHgtPm1ham9yKTsNCi0NCiAJCWxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KGUsIGxpc3QsIGxpc3Qp IHsNCi0JCQlpZiAoKGUtPnJ1bGUubWFza1t3b3JkXSAmIGJpdCkgPT0gYml0ICYmDQorCQkJaWYg KGF1ZGl0X2luX21hc2soJmUtPnJ1bGUsIGN0eC0+bWFqb3IpICYmDQogCQkJICAgIGF1ZGl0X2Zp bHRlcl9ydWxlcyh0c2ssICZlLT5ydWxlLCBjdHgsIE5VTEwsDQogCQkJCQkgICAgICAgJnN0YXRl LCBmYWxzZSkpIHsNCiAJCQkJcmN1X3JlYWRfdW5sb2NrKCk7DQpAQCAtNzM4LDggKzc1MSw2IEBA IHZvaWQgYXVkaXRfZmlsdGVyX2lub2RlcyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaywgc3RydWN0 IGF1ZGl0X2NvbnRleHQgKmN0eCkNCiANCiAJcmN1X3JlYWRfbG9jaygpOw0KIAlmb3IgKGkgPSAw OyBpIDwgY3R4LT5uYW1lX2NvdW50OyBpKyspIHsNCi0JCWludCB3b3JkID0gQVVESVRfV09SRChj dHgtPm1ham9yKTsNCi0JCWludCBiaXQgID0gQVVESVRfQklUKGN0eC0+bWFqb3IpOw0KIAkJc3Ry dWN0IGF1ZGl0X25hbWVzICpuID0gJmN0eC0+bmFtZXNbaV07DQogCQlpbnQgaCA9IGF1ZGl0X2hh c2hfaW5vKCh1MzIpbi0+aW5vKTsNCiAJCXN0cnVjdCBsaXN0X2hlYWQgKmxpc3QgPSAmYXVkaXRf aW5vZGVfaGFzaFtoXTsNCkBAIC03NDgsNyArNzU5LDcgQEAgdm9pZCBhdWRpdF9maWx0ZXJfaW5v ZGVzKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrLCBzdHJ1Y3QgYXVkaXRfY29udGV4dCAqY3R4KQ0K IAkJCWNvbnRpbnVlOw0KIA0KIAkJbGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoZSwgbGlzdCwgbGlz dCkgew0KLQkJCWlmICgoZS0+cnVsZS5tYXNrW3dvcmRdICYgYml0KSA9PSBiaXQgJiYNCisJCQlp ZiAoYXVkaXRfaW5fbWFzaygmZS0+cnVsZSwgY3R4LT5tYWpvcikgJiYNCiAJCQkgICAgYXVkaXRf ZmlsdGVyX3J1bGVzKHRzaywgJmUtPnJ1bGUsIGN0eCwgbiwNCiAJCQkJICAgIAkgICAgICAgJnN0 YXRlLCBmYWxzZSkpIHsNCiAJCQkJcmN1X3JlYWRfdW5sb2NrKCk7DQpkaWZmIC0tZ2l0IGEva2Vy bmVsL2V2ZW50cy9jb3JlLmMgYi9rZXJuZWwvZXZlbnRzL2NvcmUuYw0KaW5kZXggMWQxZWRjYi4u MTRjMTExYyAxMDA2NDQNCi0tLSBhL2tlcm5lbC9ldmVudHMvY29yZS5jDQorKysgYi9rZXJuZWwv ZXZlbnRzL2NvcmUuYw0KQEAgLTExODAsNiArMTE4MCwxMSBAQCBncm91cF9zY2hlZF9vdXQoc3Ry dWN0IHBlcmZfZXZlbnQgKmdyb3VwX2V2ZW50LA0KIAkJY3B1Y3R4LT5leGNsdXNpdmUgPSAwOw0K IH0NCiANCitzdHJ1Y3QgcmVtb3ZlX2V2ZW50IHsNCisJc3RydWN0IHBlcmZfZXZlbnQgKmV2ZW50 Ow0KKwlib29sIGRldGFjaF9ncm91cDsNCit9Ow0KKw0KIC8qDQogICogQ3Jvc3MgQ1BVIGNhbGwg dG8gcmVtb3ZlIGEgcGVyZm9ybWFuY2UgZXZlbnQNCiAgKg0KQEAgLTExODgsMTIgKzExOTMsMTUg QEAgZ3JvdXBfc2NoZWRfb3V0KHN0cnVjdCBwZXJmX2V2ZW50ICpncm91cF9ldmVudCwNCiAgKi8N CiBzdGF0aWMgaW50IF9fcGVyZl9yZW1vdmVfZnJvbV9jb250ZXh0KHZvaWQgKmluZm8pDQogew0K LQlzdHJ1Y3QgcGVyZl9ldmVudCAqZXZlbnQgPSBpbmZvOw0KKwlzdHJ1Y3QgcmVtb3ZlX2V2ZW50 ICpyZSA9IGluZm87DQorCXN0cnVjdCBwZXJmX2V2ZW50ICpldmVudCA9IHJlLT5ldmVudDsNCiAJ c3RydWN0IHBlcmZfZXZlbnRfY29udGV4dCAqY3R4ID0gZXZlbnQtPmN0eDsNCiAJc3RydWN0IHBl cmZfY3B1X2NvbnRleHQgKmNwdWN0eCA9IF9fZ2V0X2NwdV9jb250ZXh0KGN0eCk7DQogDQogCXJh d19zcGluX2xvY2soJmN0eC0+bG9jayk7DQogCWV2ZW50X3NjaGVkX291dChldmVudCwgY3B1Y3R4 LCBjdHgpOw0KKwlpZiAocmUtPmRldGFjaF9ncm91cCkNCisJCXBlcmZfZ3JvdXBfZGV0YWNoKGV2 ZW50KTsNCiAJbGlzdF9kZWxfZXZlbnQoZXZlbnQsIGN0eCk7DQogCWlmICghY3R4LT5ucl9ldmVu dHMgJiYgY3B1Y3R4LT50YXNrX2N0eCA9PSBjdHgpIHsNCiAJCWN0eC0+aXNfYWN0aXZlID0gMDsN CkBAIC0xMjE4LDEwICsxMjI2LDE0IEBAIHN0YXRpYyBpbnQgX19wZXJmX3JlbW92ZV9mcm9tX2Nv bnRleHQodm9pZCAqaW5mbykNCiAgKiBXaGVuIGNhbGxlZCBmcm9tIHBlcmZfZXZlbnRfZXhpdF90 YXNrLCBpdCdzIE9LIGJlY2F1c2UgdGhlDQogICogY29udGV4dCBoYXMgYmVlbiBkZXRhY2hlZCBm cm9tIGl0cyB0YXNrLg0KICAqLw0KLXN0YXRpYyB2b2lkIHBlcmZfcmVtb3ZlX2Zyb21fY29udGV4 dChzdHJ1Y3QgcGVyZl9ldmVudCAqZXZlbnQpDQorc3RhdGljIHZvaWQgcGVyZl9yZW1vdmVfZnJv bV9jb250ZXh0KHN0cnVjdCBwZXJmX2V2ZW50ICpldmVudCwgYm9vbCBkZXRhY2hfZ3JvdXApDQog ew0KIAlzdHJ1Y3QgcGVyZl9ldmVudF9jb250ZXh0ICpjdHggPSBldmVudC0+Y3R4Ow0KIAlzdHJ1 Y3QgdGFza19zdHJ1Y3QgKnRhc2sgPSBjdHgtPnRhc2s7DQorCXN0cnVjdCByZW1vdmVfZXZlbnQg cmUgPSB7DQorCQkuZXZlbnQgPSBldmVudCwNCisJCS5kZXRhY2hfZ3JvdXAgPSBkZXRhY2hfZ3Jv dXAsDQorCX07DQogDQogCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmN0eC0+bXV0ZXgpOw0KIA0KQEAg LTEyMzAsMTIgKzEyNDIsMTIgQEAgc3RhdGljIHZvaWQgcGVyZl9yZW1vdmVfZnJvbV9jb250ZXh0 KHN0cnVjdCBwZXJmX2V2ZW50ICpldmVudCkNCiAJCSAqIFBlciBjcHUgZXZlbnRzIGFyZSByZW1v dmVkIHZpYSBhbiBzbXAgY2FsbCBhbmQNCiAJCSAqIHRoZSByZW1vdmFsIGlzIGFsd2F5cyBzdWNj ZXNzZnVsLg0KIAkJICovDQotCQljcHVfZnVuY3Rpb25fY2FsbChldmVudC0+Y3B1LCBfX3BlcmZf cmVtb3ZlX2Zyb21fY29udGV4dCwgZXZlbnQpOw0KKwkJY3B1X2Z1bmN0aW9uX2NhbGwoZXZlbnQt PmNwdSwgX19wZXJmX3JlbW92ZV9mcm9tX2NvbnRleHQsICZyZSk7DQogCQlyZXR1cm47DQogCX0N CiANCiByZXRyeToNCi0JaWYgKCF0YXNrX2Z1bmN0aW9uX2NhbGwodGFzaywgX19wZXJmX3JlbW92 ZV9mcm9tX2NvbnRleHQsIGV2ZW50KSkNCisJaWYgKCF0YXNrX2Z1bmN0aW9uX2NhbGwodGFzaywg X19wZXJmX3JlbW92ZV9mcm9tX2NvbnRleHQsICZyZSkpDQogCQlyZXR1cm47DQogDQogCXJhd19z cGluX2xvY2tfaXJxKCZjdHgtPmxvY2spOw0KQEAgLTEyNTIsNiArMTI2NCw4IEBAIHJldHJ5Og0K IAkgKiBTaW5jZSB0aGUgdGFzayBpc24ndCBydW5uaW5nLCBpdHMgc2FmZSB0byByZW1vdmUgdGhl IGV2ZW50LCB1cw0KIAkgKiBob2xkaW5nIHRoZSBjdHgtPmxvY2sgZW5zdXJlcyB0aGUgdGFzayB3 b24ndCBnZXQgc2NoZWR1bGVkIGluLg0KIAkgKi8NCisJaWYgKGRldGFjaF9ncm91cCkNCisJCXBl cmZfZ3JvdXBfZGV0YWNoKGV2ZW50KTsNCiAJbGlzdF9kZWxfZXZlbnQoZXZlbnQsIGN0eCk7DQog CXJhd19zcGluX3VubG9ja19pcnEoJmN0eC0+bG9jayk7DQogfQ0KQEAgLTMwNDYsMTAgKzMwNjAs NyBAQCBpbnQgcGVyZl9ldmVudF9yZWxlYXNlX2tlcm5lbChzdHJ1Y3QgcGVyZl9ldmVudCAqZXZl bnQpDQogCSAqICAgICB0byB0cmlnZ2VyIHRoZSBBQi1CQSBjYXNlLg0KIAkgKi8NCiAJbXV0ZXhf bG9ja19uZXN0ZWQoJmN0eC0+bXV0ZXgsIFNJTkdMRV9ERVBUSF9ORVNUSU5HKTsNCi0JcmF3X3Nw aW5fbG9ja19pcnEoJmN0eC0+bG9jayk7DQotCXBlcmZfZ3JvdXBfZGV0YWNoKGV2ZW50KTsNCi0J cmF3X3NwaW5fdW5sb2NrX2lycSgmY3R4LT5sb2NrKTsNCi0JcGVyZl9yZW1vdmVfZnJvbV9jb250 ZXh0KGV2ZW50KTsNCisJcGVyZl9yZW1vdmVfZnJvbV9jb250ZXh0KGV2ZW50LCB0cnVlKTsNCiAJ bXV0ZXhfdW5sb2NrKCZjdHgtPm11dGV4KTsNCiANCiAJZnJlZV9ldmVudChldmVudCk7DQpAQCAt NjQ1OSw3ICs2NDcwLDcgQEAgU1lTQ0FMTF9ERUZJTkU1KHBlcmZfZXZlbnRfb3BlbiwNCiAJCXN0 cnVjdCBwZXJmX2V2ZW50X2NvbnRleHQgKmdjdHggPSBncm91cF9sZWFkZXItPmN0eDsNCiANCiAJ CW11dGV4X2xvY2soJmdjdHgtPm11dGV4KTsNCi0JCXBlcmZfcmVtb3ZlX2Zyb21fY29udGV4dChn cm91cF9sZWFkZXIpOw0KKwkJcGVyZl9yZW1vdmVfZnJvbV9jb250ZXh0KGdyb3VwX2xlYWRlciwg ZmFsc2UpOw0KIA0KIAkJLyoNCiAJCSAqIFJlbW92aW5nIGZyb20gdGhlIGNvbnRleHQgZW5kcyB1 cCB3aXRoIGRpc2FibGVkDQpAQCAtNjQ2OSw3ICs2NDgwLDcgQEAgU1lTQ0FMTF9ERUZJTkU1KHBl cmZfZXZlbnRfb3BlbiwNCiAJCXBlcmZfZXZlbnRfX3N0YXRlX2luaXQoZ3JvdXBfbGVhZGVyKTsN CiAJCWxpc3RfZm9yX2VhY2hfZW50cnkoc2libGluZywgJmdyb3VwX2xlYWRlci0+c2libGluZ19s aXN0LA0KIAkJCQkgICAgZ3JvdXBfZW50cnkpIHsNCi0JCQlwZXJmX3JlbW92ZV9mcm9tX2NvbnRl eHQoc2libGluZyk7DQorCQkJcGVyZl9yZW1vdmVfZnJvbV9jb250ZXh0KHNpYmxpbmcsIGZhbHNl KTsNCiAJCQlwZXJmX2V2ZW50X19zdGF0ZV9pbml0KHNpYmxpbmcpOw0KIAkJCXB1dF9jdHgoZ2N0 eCk7DQogCQl9DQpAQCAtNjYyMiwxMyArNjYzMyw3IEBAIF9fcGVyZl9ldmVudF9leGl0X3Rhc2so c3RydWN0IHBlcmZfZXZlbnQgKmNoaWxkX2V2ZW50LA0KIAkJCSBzdHJ1Y3QgcGVyZl9ldmVudF9j b250ZXh0ICpjaGlsZF9jdHgsDQogCQkJIHN0cnVjdCB0YXNrX3N0cnVjdCAqY2hpbGQpDQogew0K LQlpZiAoY2hpbGRfZXZlbnQtPnBhcmVudCkgew0KLQkJcmF3X3NwaW5fbG9ja19pcnEoJmNoaWxk X2N0eC0+bG9jayk7DQotCQlwZXJmX2dyb3VwX2RldGFjaChjaGlsZF9ldmVudCk7DQotCQlyYXdf c3Bpbl91bmxvY2tfaXJxKCZjaGlsZF9jdHgtPmxvY2spOw0KLQl9DQotDQotCXBlcmZfcmVtb3Zl X2Zyb21fY29udGV4dChjaGlsZF9ldmVudCk7DQorCXBlcmZfcmVtb3ZlX2Zyb21fY29udGV4dChj aGlsZF9ldmVudCwgISFjaGlsZF9ldmVudC0+cGFyZW50KTsNCiANCiAJLyoNCiAJICogSXQgY2Fu IGhhcHBlbiB0aGF0IHRoZSBwYXJlbnQgZXhpdHMgZmlyc3QsIGFuZCBoYXMgZXZlbnRzDQpAQCAt NzExMywxNCArNzExOCwxNCBAQCBzdGF0aWMgdm9pZCBwZXJmX3BtdV9yb3RhdGVfc3RvcChzdHJ1 Y3QgcG11ICpwbXUpDQogDQogc3RhdGljIHZvaWQgX19wZXJmX2V2ZW50X2V4aXRfY29udGV4dCh2 b2lkICpfX2luZm8pDQogew0KKwlzdHJ1Y3QgcmVtb3ZlX2V2ZW50IHJlID0geyAuZGV0YWNoX2dy b3VwID0gZmFsc2UgfTsNCiAJc3RydWN0IHBlcmZfZXZlbnRfY29udGV4dCAqY3R4ID0gX19pbmZv Ow0KLQlzdHJ1Y3QgcGVyZl9ldmVudCAqZXZlbnQ7DQogDQogCXBlcmZfcG11X3JvdGF0ZV9zdG9w KGN0eC0+cG11KTsNCiANCiAJcmN1X3JlYWRfbG9jaygpOw0KLQlsaXN0X2Zvcl9lYWNoX2VudHJ5 X3JjdShldmVudCwgJmN0eC0+ZXZlbnRfbGlzdCwgZXZlbnRfZW50cnkpDQotCQlfX3BlcmZfcmVt b3ZlX2Zyb21fY29udGV4dChldmVudCk7DQorCWxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KHJlLmV2 ZW50LCAmY3R4LT5ldmVudF9saXN0LCBldmVudF9lbnRyeSkNCisJCV9fcGVyZl9yZW1vdmVfZnJv bV9jb250ZXh0KCZyZSk7DQogCXJjdV9yZWFkX3VubG9jaygpOw0KIH0NCiANCmRpZmYgLS1naXQg YS9rZXJuZWwvZm9yay5jIGIva2VybmVsL2ZvcmsuYw0KaW5kZXggY2UwYzE4Mi4uMTNiYmEzMCAx MDA2NDQNCi0tLSBhL2tlcm5lbC9mb3JrLmMNCisrKyBiL2tlcm5lbC9mb3JrLmMNCkBAIC0xMzcw LDcgKzEzNzAsOSBAQCBzdGF0aWMgc3RydWN0IHRhc2tfc3RydWN0ICpjb3B5X3Byb2Nlc3ModW5z aWduZWQgbG9uZyBjbG9uZV9mbGFncywNCiANCiAJdG90YWxfZm9ya3MrKzsNCiAJc3Bpbl91bmxv Y2soJmN1cnJlbnQtPnNpZ2hhbmQtPnNpZ2xvY2spOw0KKwlzeXNjYWxsX3RyYWNlcG9pbnRfdXBk YXRlKHApOw0KIAl3cml0ZV91bmxvY2tfaXJxKCZ0YXNrbGlzdF9sb2NrKTsNCisNCiAJcHJvY19m b3JrX2Nvbm5lY3RvcihwKTsNCiAJY2dyb3VwX3Bvc3RfZm9yayhwKTsNCiAJaWYgKGNsb25lX2Zs YWdzICYgQ0xPTkVfVEhSRUFEKQ0KQEAgLTE1MTMsMTAgKzE1MTUsMTIgQEAgbG9uZyBkb19mb3Jr KHVuc2lnbmVkIGxvbmcgY2xvbmVfZmxhZ3MsDQogCSAqLw0KIAlpZiAoIUlTX0VSUihwKSkgew0K IAkJc3RydWN0IGNvbXBsZXRpb24gdmZvcms7DQorCQlzdHJ1Y3QgcGlkICpwaWQ7DQogDQogCQl0 cmFjZV9zY2hlZF9wcm9jZXNzX2ZvcmsoY3VycmVudCwgcCk7DQogDQotCQluciA9IHRhc2tfcGlk X3ZucihwKTsNCisJCXBpZCA9IGdldF90YXNrX3BpZChwLCBQSURUWVBFX1BJRCk7DQorCQluciA9 IHBpZF92bnIocGlkKTsNCiANCiAJCWlmIChjbG9uZV9mbGFncyAmIENMT05FX1BBUkVOVF9TRVRU SUQpDQogCQkJcHV0X3VzZXIobnIsIHBhcmVudF90aWRwdHIpOw0KQEAgLTE1NDAsMTQgKzE1NDQs MTYgQEAgbG9uZyBkb19mb3JrKHVuc2lnbmVkIGxvbmcgY2xvbmVfZmxhZ3MsDQogDQogCQkvKiBm b3JraW5nIGNvbXBsZXRlIGFuZCBjaGlsZCBzdGFydGVkIHRvIHJ1biwgdGVsbCBwdHJhY2VyICov DQogCQlpZiAodW5saWtlbHkodHJhY2UpKQ0KLQkJCXB0cmFjZV9ldmVudCh0cmFjZSwgbnIpOw0K KwkJCXB0cmFjZV9ldmVudF9waWQodHJhY2UsIHBpZCk7DQogDQogCQlpZiAoY2xvbmVfZmxhZ3Mg JiBDTE9ORV9WRk9SSykgew0KIAkJCWZyZWV6ZXJfZG9fbm90X2NvdW50KCk7DQogCQkJd2FpdF9m b3JfY29tcGxldGlvbigmdmZvcmspOw0KIAkJCWZyZWV6ZXJfY291bnQoKTsNCi0JCQlwdHJhY2Vf ZXZlbnQoUFRSQUNFX0VWRU5UX1ZGT1JLX0RPTkUsIG5yKTsNCisJCQlwdHJhY2VfZXZlbnRfcGlk KFBUUkFDRV9FVkVOVF9WRk9SS19ET05FLCBwaWQpOw0KIAkJfQ0KKw0KKwkJcHV0X3BpZChwaWQp Ow0KIAl9IGVsc2Ugew0KIAkJbnIgPSBQVFJfRVJSKHApOw0KIAl9DQpkaWZmIC0tZ2l0IGEva2Vy bmVsL2lycS9tYW5hZ2UuYyBiL2tlcm5lbC9pcnEvbWFuYWdlLmMNCmluZGV4IDQ3NzUyMjkuLjEy N2EzMmUgMTAwNjQ0DQotLS0gYS9rZXJuZWwvaXJxL21hbmFnZS5jDQorKysgYi9rZXJuZWwvaXJx L21hbmFnZS5jDQpAQCAtODEzLDggKzgxMyw4IEBAIHN0YXRpYyBpbnQgaXJxX3RocmVhZCh2b2lk ICpkYXRhKQ0KIA0KIAkJCXJhd19zcGluX3VubG9ja19pcnEoJmRlc2MtPmxvY2spOw0KIAkJCWFj dGlvbl9yZXQgPSBoYW5kbGVyX2ZuKGRlc2MsIGFjdGlvbik7DQotCQkJaWYgKCFub2lycWRlYnVn KQ0KLQkJCQlub3RlX2ludGVycnVwdChhY3Rpb24tPmlycSwgZGVzYywgYWN0aW9uX3JldCk7DQor CQkJaWYgKGFjdGlvbl9yZXQgPT0gSVJRX0hBTkRMRUQpDQorCQkJCWF0b21pY19pbmMoJmRlc2Mt PnRocmVhZHNfaGFuZGxlZCk7DQogCQl9DQogDQogCQl3YWtlID0gYXRvbWljX2RlY19hbmRfdGVz dCgmZGVzYy0+dGhyZWFkc19hY3RpdmUpOw0KZGlmZiAtLWdpdCBhL2tlcm5lbC9pcnEvc3B1cmlv dXMuYyBiL2tlcm5lbC9pcnEvc3B1cmlvdXMuYw0KaW5kZXggNjM2MzNhMy4uNmQ0MjZlYiAxMDA2 NDQNCi0tLSBhL2tlcm5lbC9pcnEvc3B1cmlvdXMuYw0KKysrIGIva2VybmVsL2lycS9zcHVyaW91 cy5jDQpAQCAtMjY1LDIxICsyNjUsMTE5IEBAIHRyeV9taXNyb3V0ZWRfaXJxKHVuc2lnbmVkIGlu dCBpcnEsIHN0cnVjdCBpcnFfZGVzYyAqZGVzYywNCiAJcmV0dXJuIGFjdGlvbiAmJiAoYWN0aW9u LT5mbGFncyAmIElSUUZfSVJRUE9MTCk7DQogfQ0KIA0KKyNkZWZpbmUgU1BVUklPVVNfREVGRVJS RUQJMHg4MDAwMDAwMA0KKw0KIHZvaWQgbm90ZV9pbnRlcnJ1cHQodW5zaWduZWQgaW50IGlycSwg c3RydWN0IGlycV9kZXNjICpkZXNjLA0KIAkJICAgIGlycXJldHVybl90IGFjdGlvbl9yZXQpDQog ew0KIAlpZiAoZGVzYy0+aXN0YXRlICYgSVJRU19QT0xMX0lOUFJPR1JFU1MpDQogCQlyZXR1cm47 DQogDQotCS8qIHdlIGdldCBoZXJlIGFnYWluIHZpYSB0aGUgdGhyZWFkZWQgaGFuZGxlciAqLw0K LQlpZiAoYWN0aW9uX3JldCA9PSBJUlFfV0FLRV9USFJFQUQpDQotCQlyZXR1cm47DQotDQogCWlm IChiYWRfYWN0aW9uX3JldChhY3Rpb25fcmV0KSkgew0KIAkJcmVwb3J0X2JhZF9pcnEoaXJxLCBk ZXNjLCBhY3Rpb25fcmV0KTsNCiAJCXJldHVybjsNCiAJfQ0KIA0KKwkvKg0KKwkgKiBXZSBjYW5u b3QgY2FsbCBub3RlX2ludGVycnVwdCBmcm9tIHRoZSB0aHJlYWRlZCBoYW5kbGVyDQorCSAqIGJl Y2F1c2Ugd2UgbmVlZCB0byBsb29rIGF0IHRoZSBjb21wb3VuZCBvZiBhbGwgaGFuZGxlcnMNCisJ ICogKHByaW1hcnkgYW5kIHRocmVhZGVkKS4gQXNpZGUgb2YgdGhhdCBpbiB0aGUgdGhyZWFkZWQN CisJICogc2hhcmVkIGNhc2Ugd2UgaGF2ZSBubyBzZXJpYWxpemF0aW9uIGFnYWluc3QgYW4gaW5j b21pbmcNCisJICogaGFyZHdhcmUgaW50ZXJydXB0IHdoaWxlIHdlIGFyZSBkZWFsaW5nIHdpdGgg YSB0aHJlYWRlZA0KKwkgKiByZXN1bHQuDQorCSAqDQorCSAqIFNvIGluIGNhc2UgYSB0aHJlYWQg aXMgd29rZW4sIHdlIGp1c3Qgbm90ZSB0aGUgZmFjdCBhbmQNCisJICogZGVmZXIgdGhlIGFuYWx5 c2lzIHRvIHRoZSBuZXh0IGhhcmR3YXJlIGludGVycnVwdC4NCisJICoNCisJICogVGhlIHRocmVh ZGVkIGhhbmRsZXJzIHN0b3JlIHdoZXRoZXIgdGhleSBzdWNlc3NmdWxseQ0KKwkgKiBoYW5kbGVk IGFuIGludGVycnVwdCBhbmQgd2UgY2hlY2sgd2hldGhlciB0aGF0IG51bWJlcg0KKwkgKiBjaGFu Z2VkIHZlcnN1cyB0aGUgbGFzdCBpbnZvY2F0aW9uLg0KKwkgKg0KKwkgKiBXZSBjb3VsZCBoYW5k bGUgYWxsIGludGVycnVwdHMgd2l0aCB0aGUgZGVsYXllZCBieSBvbmUNCisJICogbWVjaGFuaXNt LCBidXQgZm9yIHRoZSBub24gZm9yY2VkIHRocmVhZGVkIGNhc2Ugd2UnZCBqdXN0DQorCSAqIGFk ZCBwb2ludGxlc3Mgb3ZlcmhlYWQgdG8gdGhlIHN0cmFpZ2h0IGhhcmRpcnEgaW50ZXJydXB0cw0K KwkgKiBmb3IgdGhlIHNha2Ugb2YgYSBmZXcgbGluZXMgbGVzcyBjb2RlLg0KKwkgKi8NCisJaWYg KGFjdGlvbl9yZXQgJiBJUlFfV0FLRV9USFJFQUQpIHsNCisJCS8qDQorCQkgKiBUaGVyZSBpcyBh IHRocmVhZCB3b2tlbi4gQ2hlY2sgd2hldGhlciBvbmUgb2YgdGhlDQorCQkgKiBzaGFyZWQgcHJp bWFyeSBoYW5kbGVycyByZXR1cm5lZCBJUlFfSEFORExFRC4gSWYNCisJCSAqIG5vdCB3ZSBkZWZl ciB0aGUgc3B1cmlvdXMgZGV0ZWN0aW9uIHRvIHRoZSBuZXh0DQorCQkgKiBpbnRlcnJ1cHQuDQor CQkgKi8NCisJCWlmIChhY3Rpb25fcmV0ID09IElSUV9XQUtFX1RIUkVBRCkgew0KKwkJCWludCBo YW5kbGVkOw0KKwkJCS8qDQorCQkJICogV2UgdXNlIGJpdCAzMSBvZiB0aHJlYWRfaGFuZGxlZF9s YXN0IHRvDQorCQkJICogZGVub3RlIHRoZSBkZWZlcnJlZCBzcHVyaW91cyBkZXRlY3Rpb24NCisJ CQkgKiBhY3RpdmUuIE5vIGxvY2tpbmcgbmVjZXNzYXJ5IGFzDQorCQkJICogdGhyZWFkX2hhbmRs ZWRfbGFzdCBpcyBvbmx5IGFjY2Vzc2VkIGhlcmUNCisJCQkgKiBhbmQgd2UgaGF2ZSB0aGUgZ3Vh cmFudGVlIHRoYXQgaGFyZA0KKwkJCSAqIGludGVycnVwdHMgYXJlIG5vdCByZWVudHJhbnQuDQor CQkJICovDQorCQkJaWYgKCEoZGVzYy0+dGhyZWFkc19oYW5kbGVkX2xhc3QgJiBTUFVSSU9VU19E RUZFUlJFRCkpIHsNCisJCQkJZGVzYy0+dGhyZWFkc19oYW5kbGVkX2xhc3QgfD0gU1BVUklPVVNf REVGRVJSRUQ7DQorCQkJCXJldHVybjsNCisJCQl9DQorCQkJLyoNCisJCQkgKiBDaGVjayB3aGV0 aGVyIG9uZSBvZiB0aGUgdGhyZWFkZWQgaGFuZGxlcnMNCisJCQkgKiByZXR1cm5lZCBJUlFfSEFO RExFRCBzaW5jZSB0aGUgbGFzdA0KKwkJCSAqIGludGVycnVwdCBoYXBwZW5lZC4NCisJCQkgKg0K KwkJCSAqIEZvciBzaW1wbGljaXR5IHdlIGp1c3Qgc2V0IGJpdCAzMSwgYXMgaXQgaXMNCisJCQkg KiBzZXQgaW4gdGhyZWFkc19oYW5kbGVkX2xhc3QgYXMgd2VsbC4gU28gd2UNCisJCQkgKiBhdm9p ZCBleHRyYSBtYXNraW5nLiBBbmQgd2UgcmVhbGx5IGRvIG5vdA0KKwkJCSAqIGNhcmUgYWJvdXQg dGhlIGhpZ2ggYml0cyBvZiB0aGUgaGFuZGxlZA0KKwkJCSAqIGNvdW50LiBXZSBqdXN0IGNhcmUg YWJvdXQgdGhlIGNvdW50IGJlaW5nDQorCQkJICogZGlmZmVyZW50IHRoYW4gdGhlIG9uZSB3ZSBz YXcgYmVmb3JlLg0KKwkJCSAqLw0KKwkJCWhhbmRsZWQgPSBhdG9taWNfcmVhZCgmZGVzYy0+dGhy ZWFkc19oYW5kbGVkKTsNCisJCQloYW5kbGVkIHw9IFNQVVJJT1VTX0RFRkVSUkVEOw0KKwkJCWlm IChoYW5kbGVkICE9IGRlc2MtPnRocmVhZHNfaGFuZGxlZF9sYXN0KSB7DQorCQkJCWFjdGlvbl9y ZXQgPSBJUlFfSEFORExFRDsNCisJCQkJLyoNCisJCQkJICogTm90ZTogV2Uga2VlcCB0aGUgU1BV UklPVVNfREVGRVJSRUQNCisJCQkJICogYml0IHNldC4gV2UgYXJlIGhhbmRsaW5nIHRoZQ0KKwkJ CQkgKiBwcmV2aW91cyBpbnZvY2F0aW9uIHJpZ2h0IG5vdy4NCisJCQkJICogS2VlcCBpdCBmb3Ig dGhlIGN1cnJlbnQgb25lLCBzbyB0aGUNCisJCQkJICogbmV4dCBoYXJkd2FyZSBpbnRlcnJ1cHQg d2lsbA0KKwkJCQkgKiBhY2NvdW50IGZvciBpdC4NCisJCQkJICovDQorCQkJCWRlc2MtPnRocmVh ZHNfaGFuZGxlZF9sYXN0ID0gaGFuZGxlZDsNCisJCQl9IGVsc2Ugew0KKwkJCQkvKg0KKwkJCQkg KiBOb25lIG9mIHRoZSB0aHJlYWRlZCBoYW5kbGVycyBmZWx0DQorCQkJCSAqIHJlc3BvbnNpYmxl IGZvciB0aGUgbGFzdCBpbnRlcnJ1cHQNCisJCQkJICoNCisJCQkJICogV2Uga2VlcCB0aGUgU1BV UklPVVNfREVGRVJSRUQgYml0DQorCQkJCSAqIHNldCBpbiB0aHJlYWRzX2hhbmRsZWRfbGFzdCBh cyB3ZQ0KKwkJCQkgKiBuZWVkIHRvIGFjY291bnQgZm9yIHRoZSBjdXJyZW50DQorCQkJCSAqIGlu dGVycnVwdCBhcyB3ZWxsLg0KKwkJCQkgKi8NCisJCQkJYWN0aW9uX3JldCA9IElSUV9OT05FOw0K KwkJCX0NCisJCX0gZWxzZSB7DQorCQkJLyoNCisJCQkgKiBPbmUgb2YgdGhlIHByaW1hcnkgaGFu ZGxlcnMgcmV0dXJuZWQNCisJCQkgKiBJUlFfSEFORExFRC4gU28gd2UgZG9uJ3QgY2FyZSBhYm91 dCB0aGUNCisJCQkgKiB0aHJlYWRlZCBoYW5kbGVycyBvbiB0aGUgc2FtZSBsaW5lLiBDbGVhcg0K KwkJCSAqIHRoZSBkZWZlcnJlZCBkZXRlY3Rpb24gYml0Lg0KKwkJCSAqDQorCQkJICogSW4gdGhl b3J5IHdlIGNvdWxkL3Nob3VsZCBjaGVjayB3aGV0aGVyIHRoZQ0KKwkJCSAqIGRlZmVycmVkIGJp dCBpcyBzZXQgYW5kIHRha2UgdGhlIHJlc3VsdCBvZg0KKwkJCSAqIHRoZSBwcmV2aW91cyBydW4g aW50byBhY2NvdW50IGhlcmUgYXMNCisJCQkgKiB3ZWxsLiBCdXQgaXQncyByZWFsbHkgbm90IHdv cnRoIHRoZQ0KKwkJCSAqIHRyb3VibGUuIElmIGV2ZXJ5IG90aGVyIGludGVycnVwdCBpcw0KKwkJ CSAqIGhhbmRsZWQgd2UgbmV2ZXIgdHJpZ2dlciB0aGUgc3B1cmlvdXMNCisJCQkgKiBkZXRlY3Rv ci4gQW5kIGlmIHRoaXMgaXMganVzdCB0aGUgb25lIG91dA0KKwkJCSAqIG9mIDEwMGsgdW5oYW5k bGVkIG9uZXMgd2hpY2ggaXMgaGFuZGxlZA0KKwkJCSAqIHRoZW4gd2UgbWVyaWx5IGRlbGF5IHRo ZSBzcHVyaW91cyBkZXRlY3Rpb24NCisJCQkgKiBieSBvbmUgaGFyZCBpbnRlcnJ1cHQuIE5vdCBh IHJlYWwgcHJvYmxlbS4NCisJCQkgKi8NCisJCQlkZXNjLT50aHJlYWRzX2hhbmRsZWRfbGFzdCAm PSB+U1BVUklPVVNfREVGRVJSRUQ7DQorCQl9DQorCX0NCisNCiAJaWYgKHVubGlrZWx5KGFjdGlv bl9yZXQgPT0gSVJRX05PTkUpKSB7DQogCQkvKg0KIAkJICogSWYgd2UgYXJlIHNlZWluZyBvbmx5 IHRoZSBvZGQgc3B1cmlvdXMgSVJRIGNhdXNlZCBieQ0KZGlmZiAtLWdpdCBhL2tlcm5lbC9ydG11 dGV4LWRlYnVnLmggYi9rZXJuZWwvcnRtdXRleC1kZWJ1Zy5oDQppbmRleCAxNDE5M2Q1Li5hYjI5 YjZhIDEwMDY0NA0KLS0tIGEva2VybmVsL3J0bXV0ZXgtZGVidWcuaA0KKysrIGIva2VybmVsL3J0 bXV0ZXgtZGVidWcuaA0KQEAgLTMxLDMgKzMxLDggQEAgc3RhdGljIGlubGluZSBpbnQgZGVidWdf cnRfbXV0ZXhfZGV0ZWN0X2RlYWRsb2NrKHN0cnVjdCBydF9tdXRleF93YWl0ZXIgKndhaXRlciwN CiB7DQogCXJldHVybiAod2FpdGVyICE9IE5VTEwpOw0KIH0NCisNCitzdGF0aWMgaW5saW5lIHZv aWQgcnRfbXV0ZXhfcHJpbnRfZGVhZGxvY2soc3RydWN0IHJ0X211dGV4X3dhaXRlciAqdykNCit7 DQorCWRlYnVnX3J0X211dGV4X3ByaW50X2RlYWRsb2NrKHcpOw0KK30NCmRpZmYgLS1naXQgYS9r ZXJuZWwvcnRtdXRleC5jIGIva2VybmVsL3J0bXV0ZXguYw0KaW5kZXggZjlkODQ4Mi4uMTkyOGYz ZCAxMDA2NDQNCi0tLSBhL2tlcm5lbC9ydG11dGV4LmMNCisrKyBiL2tlcm5lbC9ydG11dGV4LmMN CkBAIC04MSw2ICs4MSw0NyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgbWFya19ydF9tdXRleF93YWl0 ZXJzKHN0cnVjdCBydF9tdXRleCAqbG9jaykNCiAJCW93bmVyID0gKnA7DQogCX0gd2hpbGUgKGNt cHhjaGcocCwgb3duZXIsIG93bmVyIHwgUlRfTVVURVhfSEFTX1dBSVRFUlMpICE9IG93bmVyKTsN CiB9DQorDQorLyoNCisgKiBTYWZlIGZhc3RwYXRoIGF3YXJlIHVubG9jazoNCisgKiAxKSBDbGVh ciB0aGUgd2FpdGVycyBiaXQNCisgKiAyKSBEcm9wIGxvY2stPndhaXRfbG9jaw0KKyAqIDMpIFRy eSB0byB1bmxvY2sgdGhlIGxvY2sgd2l0aCBjbXB4Y2hnDQorICovDQorc3RhdGljIGlubGluZSBi b29sIHVubG9ja19ydF9tdXRleF9zYWZlKHN0cnVjdCBydF9tdXRleCAqbG9jaykNCisJX19yZWxl YXNlcyhsb2NrLT53YWl0X2xvY2spDQorew0KKwlzdHJ1Y3QgdGFza19zdHJ1Y3QgKm93bmVyID0g cnRfbXV0ZXhfb3duZXIobG9jayk7DQorDQorCWNsZWFyX3J0X211dGV4X3dhaXRlcnMobG9jayk7 DQorCXJhd19zcGluX3VubG9jaygmbG9jay0+d2FpdF9sb2NrKTsNCisJLyoNCisJICogSWYgYSBu ZXcgd2FpdGVyIGNvbWVzIGluIGJldHdlZW4gdGhlIHVubG9jayBhbmQgdGhlIGNtcHhjaGcNCisJ ICogd2UgaGF2ZSB0d28gc2l0dWF0aW9uczoNCisJICoNCisJICogdW5sb2NrKHdhaXRfbG9jayk7 DQorCSAqCQkJCQlsb2NrKHdhaXRfbG9jayk7DQorCSAqIGNtcHhjaGcocCwgb3duZXIsIDApID09 IG93bmVyDQorCSAqCQkJCQltYXJrX3J0X211dGV4X3dhaXRlcnMobG9jayk7DQorCSAqCQkJCQlh Y3F1aXJlKGxvY2spOw0KKwkgKiBvcjoNCisJICoNCisJICogdW5sb2NrKHdhaXRfbG9jayk7DQor CSAqCQkJCQlsb2NrKHdhaXRfbG9jayk7DQorCSAqCQkJCQltYXJrX3J0X211dGV4X3dhaXRlcnMo bG9jayk7DQorCSAqDQorCSAqIGNtcHhjaGcocCwgb3duZXIsIDApICE9IG93bmVyDQorCSAqCQkJ CQllbnF1ZXVlX3dhaXRlcigpOw0KKwkgKgkJCQkJdW5sb2NrKHdhaXRfbG9jayk7DQorCSAqIGxv Y2sod2FpdF9sb2NrKTsNCisJICogd2FrZSB3YWl0ZXIoKTsNCisJICogdW5sb2NrKHdhaXRfbG9j ayk7DQorCSAqCQkJCQlsb2NrKHdhaXRfbG9jayk7DQorCSAqCQkJCQlhY3F1aXJlKGxvY2spOw0K KwkgKi8NCisJcmV0dXJuIHJ0X211dGV4X2NtcHhjaGcobG9jaywgb3duZXIsIE5VTEwpOw0KK30N CisNCiAjZWxzZQ0KICMgZGVmaW5lIHJ0X211dGV4X2NtcHhjaGcobCxjLG4pCSgwKQ0KIHN0YXRp YyBpbmxpbmUgdm9pZCBtYXJrX3J0X211dGV4X3dhaXRlcnMoc3RydWN0IHJ0X211dGV4ICpsb2Nr KQ0KQEAgLTg4LDYgKzEyOSwxNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgbWFya19ydF9tdXRleF93 YWl0ZXJzKHN0cnVjdCBydF9tdXRleCAqbG9jaykNCiAJbG9jay0+b3duZXIgPSAoc3RydWN0IHRh c2tfc3RydWN0ICopDQogCQkJKCh1bnNpZ25lZCBsb25nKWxvY2stPm93bmVyIHwgUlRfTVVURVhf SEFTX1dBSVRFUlMpOw0KIH0NCisNCisvKg0KKyAqIFNpbXBsZSBzbG93IHBhdGggb25seSB2ZXJz aW9uOiBsb2NrLT5vd25lciBpcyBwcm90ZWN0ZWQgYnkgbG9jay0+d2FpdF9sb2NrLg0KKyAqLw0K K3N0YXRpYyBpbmxpbmUgYm9vbCB1bmxvY2tfcnRfbXV0ZXhfc2FmZShzdHJ1Y3QgcnRfbXV0ZXgg KmxvY2spDQorCV9fcmVsZWFzZXMobG9jay0+d2FpdF9sb2NrKQ0KK3sNCisJbG9jay0+b3duZXIg PSBOVUxMOw0KKwlyYXdfc3Bpbl91bmxvY2soJmxvY2stPndhaXRfbG9jayk7DQorCXJldHVybiB0 cnVlOw0KK30NCiAjZW5kaWYNCiANCiAvKg0KQEAgLTE0MSwxNCArMTkzLDM2IEBAIHN0YXRpYyB2 b2lkIHJ0X211dGV4X2FkanVzdF9wcmlvKHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzaykNCiAgKi8N CiBpbnQgbWF4X2xvY2tfZGVwdGggPSAxMDI0Ow0KIA0KK3N0YXRpYyBpbmxpbmUgc3RydWN0IHJ0 X211dGV4ICp0YXNrX2Jsb2NrZWRfb25fbG9jayhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApDQorew0K KwlyZXR1cm4gcC0+cGlfYmxvY2tlZF9vbiA/IHAtPnBpX2Jsb2NrZWRfb24tPmxvY2sgOiBOVUxM Ow0KK30NCisNCiAvKg0KICAqIEFkanVzdCB0aGUgcHJpb3JpdHkgY2hhaW4uIEFsc28gdXNlZCBm b3IgZGVhZGxvY2sgZGV0ZWN0aW9uLg0KICAqIERlY3JlYXNlcyB0YXNrJ3MgdXNhZ2UgYnkgb25l IC0gbWF5IHRodXMgZnJlZSB0aGUgdGFzay4NCisgKg0KKyAqIEB0YXNrOgl0aGUgdGFzayBvd25p bmcgdGhlIG11dGV4IChvd25lcikgZm9yIHdoaWNoIGEgY2hhaW4gd2FsayBpcw0KKyAqCQlwcm9i YWJseSBuZWVkZWQNCisgKiBAZGVhZGxvY2tfZGV0ZWN0OiBkbyB3ZSBoYXZlIHRvIGNhcnJ5IG91 dCBkZWFkbG9jayBkZXRlY3Rpb24/DQorICogQG9yaWdfbG9jazoJdGhlIG11dGV4IChjYW4gYmUg TlVMTCBpZiB3ZSBhcmUgd2Fsa2luZyB0aGUgY2hhaW4gdG8gcmVjaGVjaw0KKyAqCQl0aGluZ3Mg Zm9yIGEgdGFzayB0aGF0IGhhcyBqdXN0IGdvdCBpdHMgcHJpb3JpdHkgYWRqdXN0ZWQsIGFuZA0K KyAqCQlpcyB3YWl0aW5nIG9uIGEgbXV0ZXgpDQorICogQG5leHRfbG9jazoJdGhlIG11dGV4IG9u IHdoaWNoIHRoZSBvd25lciBvZiBAb3JpZ19sb2NrIHdhcyBibG9ja2VkIGJlZm9yZQ0KKyAqCQl3 ZSBkcm9wcGVkIGl0cyBwaV9sb2NrLiBJcyBuZXZlciBkZXJlZmVyZW5jZWQsIG9ubHkgdXNlZCBm b3INCisgKgkJY29tcGFyaXNvbiB0byBkZXRlY3QgbG9jayBjaGFpbiBjaGFuZ2VzLg0KKyAqIEBv cmlnX3dhaXRlcjogcnRfbXV0ZXhfd2FpdGVyIHN0cnVjdCBmb3IgdGhlIHRhc2sgdGhhdCBoYXMg anVzdCBkb25hdGVkDQorICoJCWl0cyBwcmlvcml0eSB0byB0aGUgbXV0ZXggb3duZXIgKGNhbiBi ZSBOVUxMIGluIHRoZSBjYXNlDQorICoJCWRlcGljdGVkIGFib3ZlIG9yIGlmIHRoZSB0b3Agd2Fp dGVyIGlzIGdvbmUgYXdheSBhbmQgd2UgYXJlDQorICoJCWFjdHVhbGx5IGRlYm9vc3RpbmcgdGhl IG93bmVyKQ0KKyAqIEB0b3BfdGFzazoJdGhlIGN1cnJlbnQgdG9wIHdhaXRlcg0KKyAqDQogICog UmV0dXJucyAwIG9yIC1FREVBRExLLg0KICAqLw0KIHN0YXRpYyBpbnQgcnRfbXV0ZXhfYWRqdXN0 X3ByaW9fY2hhaW4oc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrLA0KIAkJCQkgICAgICBpbnQgZGVh ZGxvY2tfZGV0ZWN0LA0KIAkJCQkgICAgICBzdHJ1Y3QgcnRfbXV0ZXggKm9yaWdfbG9jaywNCisJ CQkJICAgICAgc3RydWN0IHJ0X211dGV4ICpuZXh0X2xvY2ssDQogCQkJCSAgICAgIHN0cnVjdCBy dF9tdXRleF93YWl0ZXIgKm9yaWdfd2FpdGVyLA0KIAkJCQkgICAgICBzdHJ1Y3QgdGFza19zdHJ1 Y3QgKnRvcF90YXNrKQ0KIHsNCkBAIC0xODIsNyArMjU2LDcgQEAgc3RhdGljIGludCBydF9tdXRl eF9hZGp1c3RfcHJpb19jaGFpbihzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2ssDQogCQl9DQogCQlw dXRfdGFza19zdHJ1Y3QodGFzayk7DQogDQotCQlyZXR1cm4gZGVhZGxvY2tfZGV0ZWN0ID8gLUVE RUFETEsgOiAwOw0KKwkJcmV0dXJuIC1FREVBRExLOw0KIAl9DQogIHJldHJ5Og0KIAkvKg0KQEAg LTIwNywxMyArMjgxLDMyIEBAIHN0YXRpYyBpbnQgcnRfbXV0ZXhfYWRqdXN0X3ByaW9fY2hhaW4o c3RydWN0IHRhc2tfc3RydWN0ICp0YXNrLA0KIAkJZ290byBvdXRfdW5sb2NrX3BpOw0KIA0KIAkv Kg0KKwkgKiBXZSBkcm9wcGVkIGFsbCBsb2NrcyBhZnRlciB0YWtpbmcgYSByZWZjb3VudCBvbiBA dGFzaywgc28NCisJICogdGhlIHRhc2sgbWlnaHQgaGF2ZSBtb3ZlZCBvbiBpbiB0aGUgbG9jayBj aGFpbiBvciBldmVuIGxlZnQNCisJICogdGhlIGNoYWluIGNvbXBsZXRlbHkgYW5kIGJsb2NrcyBu b3cgb24gYW4gdW5yZWxhdGVkIGxvY2sgb3INCisJICogb24gQG9yaWdfbG9jay4NCisJICoNCisJ ICogV2Ugc3RvcmVkIHRoZSBsb2NrIG9uIHdoaWNoIEB0YXNrIHdhcyBibG9ja2VkIGluIEBuZXh0 X2xvY2ssDQorCSAqIHNvIHdlIGNhbiBkZXRlY3QgdGhlIGNoYWluIGNoYW5nZS4NCisJICovDQor CWlmIChuZXh0X2xvY2sgIT0gd2FpdGVyLT5sb2NrKQ0KKwkJZ290byBvdXRfdW5sb2NrX3BpOw0K Kw0KKwkvKg0KIAkgKiBEcm9wIG91dCwgd2hlbiB0aGUgdGFzayBoYXMgbm8gd2FpdGVycy4gTm90 ZSwNCiAJICogdG9wX3dhaXRlciBjYW4gYmUgTlVMTCwgd2hlbiB3ZSBhcmUgaW4gdGhlIGRlYm9v c3RpbmcNCiAJICogbW9kZSENCiAJICovDQotCWlmICh0b3Bfd2FpdGVyICYmICghdGFza19oYXNf cGlfd2FpdGVycyh0YXNrKSB8fA0KLQkJCSAgIHRvcF93YWl0ZXIgIT0gdGFza190b3BfcGlfd2Fp dGVyKHRhc2spKSkNCi0JCWdvdG8gb3V0X3VubG9ja19waTsNCisJaWYgKHRvcF93YWl0ZXIpIHsN CisJCWlmICghdGFza19oYXNfcGlfd2FpdGVycyh0YXNrKSkNCisJCQlnb3RvIG91dF91bmxvY2tf cGk7DQorCQkvKg0KKwkJICogSWYgZGVhZGxvY2sgZGV0ZWN0aW9uIGlzIG9mZiwgd2Ugc3RvcCBo ZXJlIGlmIHdlDQorCQkgKiBhcmUgbm90IHRoZSB0b3AgcGkgd2FpdGVyIG9mIHRoZSB0YXNrLg0K KwkJICovDQorCQlpZiAoIWRldGVjdF9kZWFkbG9jayAmJiB0b3Bfd2FpdGVyICE9IHRhc2tfdG9w X3BpX3dhaXRlcih0YXNrKSkNCisJCQlnb3RvIG91dF91bmxvY2tfcGk7DQorCX0NCiANCiAJLyoN CiAJICogV2hlbiBkZWFkbG9jayBkZXRlY3Rpb24gaXMgb2ZmIHRoZW4gd2UgY2hlY2ssIGlmIGZ1 cnRoZXINCkBAIC0yMjksMTEgKzMyMiwxNiBAQCBzdGF0aWMgaW50IHJ0X211dGV4X2FkanVzdF9w cmlvX2NoYWluKHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzaywNCiAJCWdvdG8gcmV0cnk7DQogCX0N CiANCi0JLyogRGVhZGxvY2sgZGV0ZWN0aW9uICovDQorCS8qDQorCSAqIERlYWRsb2NrIGRldGVj dGlvbi4gSWYgdGhlIGxvY2sgaXMgdGhlIHNhbWUgYXMgdGhlIG9yaWdpbmFsDQorCSAqIGxvY2sg d2hpY2ggY2F1c2VkIHVzIHRvIHdhbGsgdGhlIGxvY2sgY2hhaW4gb3IgaWYgdGhlDQorCSAqIGN1 cnJlbnQgbG9jayBpcyBvd25lZCBieSB0aGUgdGFzayB3aGljaCBpbml0aWF0ZWQgdGhlIGNoYWlu DQorCSAqIHdhbGssIHdlIGRldGVjdGVkIGEgZGVhZGxvY2suDQorCSAqLw0KIAlpZiAobG9jayA9 PSBvcmlnX2xvY2sgfHwgcnRfbXV0ZXhfb3duZXIobG9jaykgPT0gdG9wX3Rhc2spIHsNCiAJCWRl YnVnX3J0X211dGV4X2RlYWRsb2NrKGRlYWRsb2NrX2RldGVjdCwgb3JpZ193YWl0ZXIsIGxvY2sp Ow0KIAkJcmF3X3NwaW5fdW5sb2NrKCZsb2NrLT53YWl0X2xvY2spOw0KLQkJcmV0ID0gZGVhZGxv Y2tfZGV0ZWN0ID8gLUVERUFETEsgOiAwOw0KKwkJcmV0ID0gLUVERUFETEs7DQogCQlnb3RvIG91 dF91bmxvY2tfcGk7DQogCX0NCiANCkBAIC0yODAsMTEgKzM3OCwyNiBAQCBzdGF0aWMgaW50IHJ0 X211dGV4X2FkanVzdF9wcmlvX2NoYWluKHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzaywNCiAJCV9f cnRfbXV0ZXhfYWRqdXN0X3ByaW8odGFzayk7DQogCX0NCiANCisJLyoNCisJICogQ2hlY2sgd2hl dGhlciB0aGUgdGFzayB3aGljaCBvd25zIHRoZSBjdXJyZW50IGxvY2sgaXMgcGkNCisJICogYmxv Y2tlZCBpdHNlbGYuIElmIHllcyB3ZSBzdG9yZSBhIHBvaW50ZXIgdG8gdGhlIGxvY2sgZm9yDQor CSAqIHRoZSBsb2NrIGNoYWluIGNoYW5nZSBkZXRlY3Rpb24gYWJvdmUuIEFmdGVyIHdlIGRyb3Bw ZWQNCisJICogdGFzay0+cGlfbG9jayBuZXh0X2xvY2sgY2Fubm90IGJlIGRlcmVmZXJlbmNlZCBh bnltb3JlLg0KKwkgKi8NCisJbmV4dF9sb2NrID0gdGFza19ibG9ja2VkX29uX2xvY2sodGFzayk7 DQorDQogCXJhd19zcGluX3VubG9ja19pcnFyZXN0b3JlKCZ0YXNrLT5waV9sb2NrLCBmbGFncyk7 DQogDQogCXRvcF93YWl0ZXIgPSBydF9tdXRleF90b3Bfd2FpdGVyKGxvY2spOw0KIAlyYXdfc3Bp bl91bmxvY2soJmxvY2stPndhaXRfbG9jayk7DQogDQorCS8qDQorCSAqIFdlIHJlYWNoZWQgdGhl IGVuZCBvZiB0aGUgbG9jayBjaGFpbi4gU3RvcCByaWdodCBoZXJlLiBObw0KKwkgKiBwb2ludCB0 byBnbyBiYWNrIGp1c3QgdG8gZmlndXJlIHRoYXQgb3V0Lg0KKwkgKi8NCisJaWYgKCFuZXh0X2xv Y2spDQorCQlnb3RvIG91dF9wdXRfdGFzazsNCisNCiAJaWYgKCFkZXRlY3RfZGVhZGxvY2sgJiYg d2FpdGVyICE9IHRvcF93YWl0ZXIpDQogCQlnb3RvIG91dF9wdXRfdGFzazsNCiANCkBAIC0zOTUs OCArNTA4LDIxIEBAIHN0YXRpYyBpbnQgdGFza19ibG9ja3Nfb25fcnRfbXV0ZXgoc3RydWN0IHJ0 X211dGV4ICpsb2NrLA0KIHsNCiAJc3RydWN0IHRhc2tfc3RydWN0ICpvd25lciA9IHJ0X211dGV4 X293bmVyKGxvY2spOw0KIAlzdHJ1Y3QgcnRfbXV0ZXhfd2FpdGVyICp0b3Bfd2FpdGVyID0gd2Fp dGVyOw0KLQl1bnNpZ25lZCBsb25nIGZsYWdzOw0KKwlzdHJ1Y3QgcnRfbXV0ZXggKm5leHRfbG9j azsNCiAJaW50IGNoYWluX3dhbGsgPSAwLCByZXM7DQorCXVuc2lnbmVkIGxvbmcgZmxhZ3M7DQor DQorCS8qDQorCSAqIEVhcmx5IGRlYWRsb2NrIGRldGVjdGlvbi4gV2UgcmVhbGx5IGRvbid0IHdh bnQgdGhlIHRhc2sgdG8NCisJICogZW5xdWV1ZSBvbiBpdHNlbGYganVzdCB0byB1bnRhbmdsZSB0 aGUgbWVzcyBsYXRlci4gSXQncyBub3QNCisJICogb25seSBhbiBvcHRpbWl6YXRpb24uIFdlIGRy b3AgdGhlIGxvY2tzLCBzbyBhbm90aGVyIHdhaXRlcg0KKwkgKiBjYW4gY29tZSBpbiBiZWZvcmUg dGhlIGNoYWluIHdhbGsgZGV0ZWN0cyB0aGUgZGVhZGxvY2suIFNvDQorCSAqIHRoZSBvdGhlciB3 aWxsIGRldGVjdCB0aGUgZGVhZGxvY2sgYW5kIHJldHVybiAtRURFQURMT0NLLA0KKwkgKiB3aGlj aCBpcyB3cm9uZywgYXMgdGhlIG90aGVyIHdhaXRlciBpcyBub3QgaW4gYSBkZWFkbG9jaw0KKwkg KiBzaXR1YXRpb24uDQorCSAqLw0KKwlpZiAob3duZXIgPT0gdGFzaykNCisJCXJldHVybiAtRURF QURMSzsNCiANCiAJcmF3X3NwaW5fbG9ja19pcnFzYXZlKCZ0YXNrLT5waV9sb2NrLCBmbGFncyk7 DQogCV9fcnRfbXV0ZXhfYWRqdXN0X3ByaW8odGFzayk7DQpAQCAtNDE3LDIwICs1NDMsMjggQEAg c3RhdGljIGludCB0YXNrX2Jsb2Nrc19vbl9ydF9tdXRleChzdHJ1Y3QgcnRfbXV0ZXggKmxvY2ss DQogCWlmICghb3duZXIpDQogCQlyZXR1cm4gMDsNCiANCisJcmF3X3NwaW5fbG9ja19pcnFzYXZl KCZvd25lci0+cGlfbG9jaywgZmxhZ3MpOw0KIAlpZiAod2FpdGVyID09IHJ0X211dGV4X3RvcF93 YWl0ZXIobG9jaykpIHsNCi0JCXJhd19zcGluX2xvY2tfaXJxc2F2ZSgmb3duZXItPnBpX2xvY2ss IGZsYWdzKTsNCiAJCXBsaXN0X2RlbCgmdG9wX3dhaXRlci0+cGlfbGlzdF9lbnRyeSwgJm93bmVy LT5waV93YWl0ZXJzKTsNCiAJCXBsaXN0X2FkZCgmd2FpdGVyLT5waV9saXN0X2VudHJ5LCAmb3du ZXItPnBpX3dhaXRlcnMpOw0KIA0KIAkJX19ydF9tdXRleF9hZGp1c3RfcHJpbyhvd25lcik7DQog CQlpZiAob3duZXItPnBpX2Jsb2NrZWRfb24pDQogCQkJY2hhaW5fd2FsayA9IDE7DQotCQlyYXdf c3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmb3duZXItPnBpX2xvY2ssIGZsYWdzKTsNCi0JfQ0KLQll bHNlIGlmIChkZWJ1Z19ydF9tdXRleF9kZXRlY3RfZGVhZGxvY2sod2FpdGVyLCBkZXRlY3RfZGVh ZGxvY2spKQ0KKwl9IGVsc2UgaWYgKGRlYnVnX3J0X211dGV4X2RldGVjdF9kZWFkbG9jayh3YWl0 ZXIsIGRldGVjdF9kZWFkbG9jaykpIHsNCiAJCWNoYWluX3dhbGsgPSAxOw0KKwl9DQorDQorCS8q IFN0b3JlIHRoZSBsb2NrIG9uIHdoaWNoIG93bmVyIGlzIGJsb2NrZWQgb3IgTlVMTCAqLw0KKwlu ZXh0X2xvY2sgPSB0YXNrX2Jsb2NrZWRfb25fbG9jayhvd25lcik7DQogDQotCWlmICghY2hhaW5f d2FsaykNCisJcmF3X3NwaW5fdW5sb2NrX2lycXJlc3RvcmUoJm93bmVyLT5waV9sb2NrLCBmbGFn cyk7DQorCS8qDQorCSAqIEV2ZW4gaWYgZnVsbCBkZWFkbG9jayBkZXRlY3Rpb24gaXMgb24sIGlm IHRoZSBvd25lciBpcyBub3QNCisJICogYmxvY2tlZCBpdHNlbGYsIHdlIGNhbiBhdm9pZCBmaW5k aW5nIHRoaXMgb3V0IGluIHRoZSBjaGFpbg0KKwkgKiB3YWxrLg0KKwkgKi8NCisJaWYgKCFjaGFp bl93YWxrIHx8ICFuZXh0X2xvY2spDQogCQlyZXR1cm4gMDsNCiANCiAJLyoNCkBAIC00NDIsOCAr NTc2LDggQEAgc3RhdGljIGludCB0YXNrX2Jsb2Nrc19vbl9ydF9tdXRleChzdHJ1Y3QgcnRfbXV0 ZXggKmxvY2ssDQogDQogCXJhd19zcGluX3VubG9jaygmbG9jay0+d2FpdF9sb2NrKTsNCiANCi0J cmVzID0gcnRfbXV0ZXhfYWRqdXN0X3ByaW9fY2hhaW4ob3duZXIsIGRldGVjdF9kZWFkbG9jaywg bG9jaywgd2FpdGVyLA0KLQkJCQkJIHRhc2spOw0KKwlyZXMgPSBydF9tdXRleF9hZGp1c3RfcHJp b19jaGFpbihvd25lciwgZGV0ZWN0X2RlYWRsb2NrLCBsb2NrLA0KKwkJCQkJIG5leHRfbG9jaywg d2FpdGVyLCB0YXNrKTsNCiANCiAJcmF3X3NwaW5fbG9jaygmbG9jay0+d2FpdF9sb2NrKTsNCiAN CkBAIC00NTMsNyArNTg3LDggQEAgc3RhdGljIGludCB0YXNrX2Jsb2Nrc19vbl9ydF9tdXRleChz dHJ1Y3QgcnRfbXV0ZXggKmxvY2ssDQogLyoNCiAgKiBXYWtlIHVwIHRoZSBuZXh0IHdhaXRlciBv biB0aGUgbG9jay4NCiAgKg0KLSAqIFJlbW92ZSB0aGUgdG9wIHdhaXRlciBmcm9tIHRoZSBjdXJy ZW50IHRhc2tzIHdhaXRlciBsaXN0IGFuZCB3YWtlIGl0IHVwLg0KKyAqIFJlbW92ZSB0aGUgdG9w IHdhaXRlciBmcm9tIHRoZSBjdXJyZW50IHRhc2tzIHBpIHdhaXRlciBsaXN0IGFuZA0KKyAqIHdh a2UgaXQgdXAuDQogICoNCiAgKiBDYWxsZWQgd2l0aCBsb2NrLT53YWl0X2xvY2sgaGVsZC4NCiAg Ki8NCkBAIC00NzQsMTAgKzYwOSwyMyBAQCBzdGF0aWMgdm9pZCB3YWtldXBfbmV4dF93YWl0ZXIo c3RydWN0IHJ0X211dGV4ICpsb2NrKQ0KIAkgKi8NCiAJcGxpc3RfZGVsKCZ3YWl0ZXItPnBpX2xp c3RfZW50cnksICZjdXJyZW50LT5waV93YWl0ZXJzKTsNCiANCi0JcnRfbXV0ZXhfc2V0X293bmVy KGxvY2ssIE5VTEwpOw0KKwkvKg0KKwkgKiBBcyB3ZSBhcmUgd2FraW5nIHVwIHRoZSB0b3Agd2Fp dGVyLCBhbmQgdGhlIHdhaXRlciBzdGF5cw0KKwkgKiBxdWV1ZWQgb24gdGhlIGxvY2sgdW50aWwg aXQgZ2V0cyB0aGUgbG9jaywgdGhpcyBsb2NrDQorCSAqIG9idmlvdXNseSBoYXMgd2FpdGVycy4g SnVzdCBzZXQgdGhlIGJpdCBoZXJlIGFuZCB0aGlzIGhhcw0KKwkgKiB0aGUgYWRkZWQgYmVuZWZp dCBvZiBmb3JjaW5nIGFsbCBuZXcgdGFza3MgaW50byB0aGUNCisJICogc2xvdyBwYXRoIG1ha2lu ZyBzdXJlIG5vIHRhc2sgb2YgbG93ZXIgcHJpb3JpdHkgdGhhbg0KKwkgKiB0aGUgdG9wIHdhaXRl ciBjYW4gc3RlYWwgdGhpcyBsb2NrLg0KKwkgKi8NCisJbG9jay0+b3duZXIgPSAodm9pZCAqKSBS VF9NVVRFWF9IQVNfV0FJVEVSUzsNCiANCiAJcmF3X3NwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmN1 cnJlbnQtPnBpX2xvY2ssIGZsYWdzKTsNCiANCisJLyoNCisJICogSXQncyBzYWZlIHRvIGRlcmVm ZXJlbmNlIHdhaXRlciBhcyBpdCBjYW5ub3QgZ28gYXdheSBhcw0KKwkgKiBsb25nIGFzIHdlIGhv bGQgbG9jay0+d2FpdF9sb2NrLiBUaGUgd2FpdGVyIHRhc2sgbmVlZHMgdG8NCisJICogYWNxdWly ZSBpdCBpbiBvcmRlciB0byBkZXF1ZXVlIHRoZSB3YWl0ZXIuDQorCSAqLw0KIAl3YWtlX3VwX3By b2Nlc3Mod2FpdGVyLT50YXNrKTsNCiB9DQogDQpAQCAtNDkyLDggKzY0MCw4IEBAIHN0YXRpYyB2 b2lkIHJlbW92ZV93YWl0ZXIoc3RydWN0IHJ0X211dGV4ICpsb2NrLA0KIHsNCiAJaW50IGZpcnN0 ID0gKHdhaXRlciA9PSBydF9tdXRleF90b3Bfd2FpdGVyKGxvY2spKTsNCiAJc3RydWN0IHRhc2tf c3RydWN0ICpvd25lciA9IHJ0X211dGV4X293bmVyKGxvY2spOw0KKwlzdHJ1Y3QgcnRfbXV0ZXgg Km5leHRfbG9jayA9IE5VTEw7DQogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7DQotCWludCBjaGFpbl93 YWxrID0gMDsNCiANCiAJcmF3X3NwaW5fbG9ja19pcnFzYXZlKCZjdXJyZW50LT5waV9sb2NrLCBm bGFncyk7DQogCXBsaXN0X2RlbCgmd2FpdGVyLT5saXN0X2VudHJ5LCAmbG9jay0+d2FpdF9saXN0 KTsNCkBAIC01MTcsMTUgKzY2NSwxNSBAQCBzdGF0aWMgdm9pZCByZW1vdmVfd2FpdGVyKHN0cnVj dCBydF9tdXRleCAqbG9jaywNCiAJCX0NCiAJCV9fcnRfbXV0ZXhfYWRqdXN0X3ByaW8ob3duZXIp Ow0KIA0KLQkJaWYgKG93bmVyLT5waV9ibG9ja2VkX29uKQ0KLQkJCWNoYWluX3dhbGsgPSAxOw0K KwkJLyogU3RvcmUgdGhlIGxvY2sgb24gd2hpY2ggb3duZXIgaXMgYmxvY2tlZCBvciBOVUxMICov DQorCQluZXh0X2xvY2sgPSB0YXNrX2Jsb2NrZWRfb25fbG9jayhvd25lcik7DQogDQogCQlyYXdf c3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmb3duZXItPnBpX2xvY2ssIGZsYWdzKTsNCiAJfQ0KIA0K IAlXQVJOX09OKCFwbGlzdF9ub2RlX2VtcHR5KCZ3YWl0ZXItPnBpX2xpc3RfZW50cnkpKTsNCiAN Ci0JaWYgKCFjaGFpbl93YWxrKQ0KKwlpZiAoIW5leHRfbG9jaykNCiAJCXJldHVybjsNCiANCiAJ LyogZ2V0cyBkcm9wcGVkIGluIHJ0X211dGV4X2FkanVzdF9wcmlvX2NoYWluKCkhICovDQpAQCAt NTMzLDcgKzY4MSw3IEBAIHN0YXRpYyB2b2lkIHJlbW92ZV93YWl0ZXIoc3RydWN0IHJ0X211dGV4 ICpsb2NrLA0KIA0KIAlyYXdfc3Bpbl91bmxvY2soJmxvY2stPndhaXRfbG9jayk7DQogDQotCXJ0 X211dGV4X2FkanVzdF9wcmlvX2NoYWluKG93bmVyLCAwLCBsb2NrLCBOVUxMLCBjdXJyZW50KTsN CisJcnRfbXV0ZXhfYWRqdXN0X3ByaW9fY2hhaW4ob3duZXIsIDAsIGxvY2ssIG5leHRfbG9jaywg TlVMTCwgY3VycmVudCk7DQogDQogCXJhd19zcGluX2xvY2soJmxvY2stPndhaXRfbG9jayk7DQog fQ0KQEAgLTU0Niw2ICs2OTQsNyBAQCBzdGF0aWMgdm9pZCByZW1vdmVfd2FpdGVyKHN0cnVjdCBy dF9tdXRleCAqbG9jaywNCiB2b2lkIHJ0X211dGV4X2FkanVzdF9waShzdHJ1Y3QgdGFza19zdHJ1 Y3QgKnRhc2spDQogew0KIAlzdHJ1Y3QgcnRfbXV0ZXhfd2FpdGVyICp3YWl0ZXI7DQorCXN0cnVj dCBydF9tdXRleCAqbmV4dF9sb2NrOw0KIAl1bnNpZ25lZCBsb25nIGZsYWdzOw0KIA0KIAlyYXdf c3Bpbl9sb2NrX2lycXNhdmUoJnRhc2stPnBpX2xvY2ssIGZsYWdzKTsNCkBAIC01NTUsMTIgKzcw NCwxMyBAQCB2b2lkIHJ0X211dGV4X2FkanVzdF9waShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2sp DQogCQlyYXdfc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmdGFzay0+cGlfbG9jaywgZmxhZ3MpOw0K IAkJcmV0dXJuOw0KIAl9DQotDQorCW5leHRfbG9jayA9IHdhaXRlci0+bG9jazsNCiAJcmF3X3Nw aW5fdW5sb2NrX2lycXJlc3RvcmUoJnRhc2stPnBpX2xvY2ssIGZsYWdzKTsNCiANCiAJLyogZ2V0 cyBkcm9wcGVkIGluIHJ0X211dGV4X2FkanVzdF9wcmlvX2NoYWluKCkhICovDQogCWdldF90YXNr X3N0cnVjdCh0YXNrKTsNCi0JcnRfbXV0ZXhfYWRqdXN0X3ByaW9fY2hhaW4odGFzaywgMCwgTlVM TCwgTlVMTCwgdGFzayk7DQorDQorCXJ0X211dGV4X2FkanVzdF9wcmlvX2NoYWluKHRhc2ssIDAs IE5VTEwsIG5leHRfbG9jaywgTlVMTCwgdGFzayk7DQogfQ0KIA0KIC8qKg0KQEAgLTYyMCw2ICs3 NzAsMjYgQEAgX19ydF9tdXRleF9zbG93bG9jayhzdHJ1Y3QgcnRfbXV0ZXggKmxvY2ssIGludCBz dGF0ZSwNCiAJcmV0dXJuIHJldDsNCiB9DQogDQorc3RhdGljIHZvaWQgcnRfbXV0ZXhfaGFuZGxl X2RlYWRsb2NrKGludCByZXMsIGludCBkZXRlY3RfZGVhZGxvY2ssDQorCQkJCSAgICAgc3RydWN0 IHJ0X211dGV4X3dhaXRlciAqdykNCit7DQorCS8qDQorCSAqIElmIHRoZSByZXN1bHQgaXMgbm90 IC1FREVBRExPQ0sgb3IgdGhlIGNhbGxlciByZXF1ZXN0ZWQNCisJICogZGVhZGxvY2sgZGV0ZWN0 aW9uLCBub3RoaW5nIHRvIGRvIGhlcmUuDQorCSAqLw0KKwlpZiAocmVzICE9IC1FREVBRExPQ0sg fHwgZGV0ZWN0X2RlYWRsb2NrKQ0KKwkJcmV0dXJuOw0KKw0KKwkvKg0KKwkgKiBZZWxsIGxvd2Rs eSBhbmQgc3RvcCB0aGUgdGFzayByaWdodCBoZXJlLg0KKwkgKi8NCisJcnRfbXV0ZXhfcHJpbnRf ZGVhZGxvY2sodyk7DQorCXdoaWxlICgxKSB7DQorCQlzZXRfY3VycmVudF9zdGF0ZShUQVNLX0lO VEVSUlVQVElCTEUpOw0KKwkJc2NoZWR1bGUoKTsNCisJfQ0KK30NCisNCiAvKg0KICAqIFNsb3cg cGF0aCBsb2NrIGZ1bmN0aW9uOg0KICAqLw0KQEAgLTY1Nyw4ICs4MjcsMTAgQEAgcnRfbXV0ZXhf c2xvd2xvY2soc3RydWN0IHJ0X211dGV4ICpsb2NrLCBpbnQgc3RhdGUsDQogDQogCXNldF9jdXJy ZW50X3N0YXRlKFRBU0tfUlVOTklORyk7DQogDQotCWlmICh1bmxpa2VseShyZXQpKQ0KKwlpZiAo dW5saWtlbHkocmV0KSkgew0KIAkJcmVtb3ZlX3dhaXRlcihsb2NrLCAmd2FpdGVyKTsNCisJCXJ0 X211dGV4X2hhbmRsZV9kZWFkbG9jayhyZXQsIGRldGVjdF9kZWFkbG9jaywgJndhaXRlcik7DQor CX0NCiANCiAJLyoNCiAJICogdHJ5X3RvX3Rha2VfcnRfbXV0ZXgoKSBzZXRzIHRoZSB3YWl0ZXIg Yml0DQpAQCAtNzE0LDEyICs4ODYsNDkgQEAgcnRfbXV0ZXhfc2xvd3VubG9jayhzdHJ1Y3QgcnRf bXV0ZXggKmxvY2spDQogDQogCXJ0X211dGV4X2RlYWRsb2NrX2FjY291bnRfdW5sb2NrKGN1cnJl bnQpOw0KIA0KLQlpZiAoIXJ0X211dGV4X2hhc193YWl0ZXJzKGxvY2spKSB7DQotCQlsb2NrLT5v d25lciA9IE5VTEw7DQotCQlyYXdfc3Bpbl91bmxvY2soJmxvY2stPndhaXRfbG9jayk7DQotCQly ZXR1cm47DQorCS8qDQorCSAqIFdlIG11c3QgYmUgY2FyZWZ1bCBoZXJlIGlmIHRoZSBmYXN0IHBh dGggaXMgZW5hYmxlZC4gSWYgd2UNCisJICogaGF2ZSBubyB3YWl0ZXJzIHF1ZXVlZCB3ZSBjYW5u b3Qgc2V0IG93bmVyIHRvIE5VTEwgaGVyZQ0KKwkgKiBiZWNhdXNlIG9mOg0KKwkgKg0KKwkgKiBm b28tPmxvY2stPm93bmVyID0gTlVMTDsNCisJICoJCQlydG11dGV4X2xvY2soZm9vLT5sb2NrKTsg ICA8LSBmYXN0IHBhdGgNCisJICoJCQlmcmVlID0gYXRvbWljX2RlY19hbmRfdGVzdChmb28tPnJl ZmNudCk7DQorCSAqCQkJcnRtdXRleF91bmxvY2soZm9vLT5sb2NrKTsgPC0gZmFzdCBwYXRoDQor CSAqCQkJaWYgKGZyZWUpDQorCSAqCQkJCWtmcmVlKGZvbyk7DQorCSAqIHJhd19zcGluX3VubG9j ayhmb28tPmxvY2stPndhaXRfbG9jayk7DQorCSAqDQorCSAqIFNvIGZvciB0aGUgZmFzdHBhdGgg ZW5hYmxlZCBrZXJuZWw6DQorCSAqDQorCSAqIE5vdGhpbmcgY2FuIHNldCB0aGUgd2FpdGVycyBi aXQgYXMgbG9uZyBhcyB3ZSBob2xkDQorCSAqIGxvY2stPndhaXRfbG9jay4gU28gd2UgZG8gdGhl IGZvbGxvd2luZyBzZXF1ZW5jZToNCisJICoNCisJICoJb3duZXIgPSBydF9tdXRleF9vd25lcihs b2NrKTsNCisJICoJY2xlYXJfcnRfbXV0ZXhfd2FpdGVycyhsb2NrKTsNCisJICoJcmF3X3NwaW5f dW5sb2NrKCZsb2NrLT53YWl0X2xvY2spOw0KKwkgKglpZiAoY21weGNoZygmbG9jay0+b3duZXIs IG93bmVyLCAwKSA9PSBvd25lcikNCisJICoJCXJldHVybjsNCisJICoJZ290byByZXRyeTsNCisJ ICoNCisJICogVGhlIGZhc3RwYXRoIGRpc2FibGVkIHZhcmlhbnQgaXMgc2ltcGxlIGFzIGFsbCBh Y2Nlc3MgdG8NCisJICogbG9jay0+b3duZXIgaXMgc2VyaWFsaXplZCBieSBsb2NrLT53YWl0X2xv Y2s6DQorCSAqDQorCSAqCWxvY2stPm93bmVyID0gTlVMTDsNCisJICoJcmF3X3NwaW5fdW5sb2Nr KCZsb2NrLT53YWl0X2xvY2spOw0KKwkgKi8NCisJd2hpbGUgKCFydF9tdXRleF9oYXNfd2FpdGVy cyhsb2NrKSkgew0KKwkJLyogRHJvcHMgbG9jay0+d2FpdF9sb2NrICEgKi8NCisJCWlmICh1bmxv Y2tfcnRfbXV0ZXhfc2FmZShsb2NrKSA9PSB0cnVlKQ0KKwkJCXJldHVybjsNCisJCS8qIFJlbG9j ayB0aGUgcnRtdXRleCBhbmQgdHJ5IGFnYWluICovDQorCQlyYXdfc3Bpbl9sb2NrKCZsb2NrLT53 YWl0X2xvY2spOw0KIAl9DQogDQorCS8qDQorCSAqIFRoZSB3YWtldXAgbmV4dCB3YWl0ZXIgcGF0 aCBkb2VzIG5vdCBzdWZmZXIgZnJvbSB0aGUgYWJvdmUNCisJICogcmFjZS4gU2VlIHRoZSBjb21t ZW50cyB0aGVyZS4NCisJICovDQogCXdha2V1cF9uZXh0X3dhaXRlcihsb2NrKTsNCiANCiAJcmF3 X3NwaW5fdW5sb2NrKCZsb2NrLT53YWl0X2xvY2spOw0KQEAgLTk2Niw3ICsxMTc1LDggQEAgaW50 IHJ0X211dGV4X3N0YXJ0X3Byb3h5X2xvY2soc3RydWN0IHJ0X211dGV4ICpsb2NrLA0KIAkJcmV0 dXJuIDE7DQogCX0NCiANCi0JcmV0ID0gdGFza19ibG9ja3Nfb25fcnRfbXV0ZXgobG9jaywgd2Fp dGVyLCB0YXNrLCBkZXRlY3RfZGVhZGxvY2spOw0KKwkvKiBXZSBlbmZvcmNlIGRlYWRsb2NrIGRl dGVjdGlvbiBmb3IgZnV0ZXhlcyAqLw0KKwlyZXQgPSB0YXNrX2Jsb2Nrc19vbl9ydF9tdXRleChs b2NrLCB3YWl0ZXIsIHRhc2ssIDEpOw0KIA0KIAlpZiAocmV0ICYmICFydF9tdXRleF9vd25lcihs b2NrKSkgew0KIAkJLyoNCmRpZmYgLS1naXQgYS9rZXJuZWwvcnRtdXRleC5oIGIva2VybmVsL3J0 bXV0ZXguaA0KaW5kZXggYTFhMWRkMC4uZjZhMWYzYyAxMDA2NDQNCi0tLSBhL2tlcm5lbC9ydG11 dGV4LmgNCisrKyBiL2tlcm5lbC9ydG11dGV4LmgNCkBAIC0yNCwzICsyNCw4IEBADQogI2RlZmlu ZSBkZWJ1Z19ydF9tdXRleF9wcmludF9kZWFkbG9jayh3KQkJZG8geyB9IHdoaWxlICgwKQ0KICNk ZWZpbmUgZGVidWdfcnRfbXV0ZXhfZGV0ZWN0X2RlYWRsb2NrKHcsZCkJCShkKQ0KICNkZWZpbmUg ZGVidWdfcnRfbXV0ZXhfcmVzZXRfd2FpdGVyKHcpCQkJZG8geyB9IHdoaWxlICgwKQ0KKw0KK3N0 YXRpYyBpbmxpbmUgdm9pZCBydF9tdXRleF9wcmludF9kZWFkbG9jayhzdHJ1Y3QgcnRfbXV0ZXhf d2FpdGVyICp3KQ0KK3sNCisJV0FSTigxLCAicnRtdXRleCBkZWFkbG9jayBkZXRlY3RlZFxuIik7 DQorfQ0KZGlmZiAtLWdpdCBhL2xpYi9kZWNvbXByZXNzX3VubHpvLmMgYi9saWIvZGVjb21wcmVz c191bmx6by5jDQppbmRleCA1YTdhMmFkLi4yNmY4OWFkIDEwMDY0NA0KLS0tIGEvbGliL2RlY29t cHJlc3NfdW5sem8uYw0KKysrIGIvbGliL2RlY29tcHJlc3NfdW5sem8uYw0KQEAgLTMxLDcgKzMx LDcgQEANCiAgKi8NCiANCiAjaWZkZWYgU1RBVElDDQotI2luY2x1ZGUgImx6by9sem8xeF9kZWNv bXByZXNzLmMiDQorI2luY2x1ZGUgImx6by9sem8xeF9kZWNvbXByZXNzX3NhZmUuYyINCiAjZWxz ZQ0KICNpbmNsdWRlIDxsaW51eC9kZWNvbXByZXNzL3VubHpvLmg+DQogI2VuZGlmDQpkaWZmIC0t Z2l0IGEvbGliL2lkci5jIGIvbGliL2lkci5jDQppbmRleCBhYWRjNTI1Li4yZDM4NzliIDEwMDY0 NA0KLS0tIGEvbGliL2lkci5jDQorKysgYi9saWIvaWRyLmMNCkBAIC0xNjcsNyArMTY3LDcgQEAg c3RhdGljIGludCBzdWJfYWxsb2Moc3RydWN0IGlkciAqaWRwLCBpbnQgKnN0YXJ0aW5nX2lkLCBz dHJ1Y3QgaWRyX2xheWVyICoqcGEpDQogCQkJaWQgPSAoaWQgfCAoKDEgPDwgKElEUl9CSVRTICog bCkpIC0gMSkpICsgMTsNCiANCiAJCQkvKiBpZiBhbHJlYWR5IGF0IHRoZSB0b3AgbGF5ZXIsIHdl IG5lZWQgdG8gZ3JvdyAqLw0KLQkJCWlmIChpZCA+PSAxIDw8IChpZHAtPmxheWVycyAqIElEUl9C SVRTKSkgew0KKwkJCWlmIChpZCA+IGlkcl9tYXgoaWRwLT5sYXllcnMpKSB7DQogCQkJCSpzdGFy dGluZ19pZCA9IGlkOw0KIAkJCQlyZXR1cm4gSURSX05FRURfVE9fR1JPVzsNCiAJCQl9DQpAQCAt NjcyLDE0ICs2NzIsMTIgQEAgdm9pZCAqaWRyX3JlcGxhY2Uoc3RydWN0IGlkciAqaWRwLCB2b2lk ICpwdHIsIGludCBpZCkNCiAJaWYgKCFwKQ0KIAkJcmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7DQog DQotCW4gPSAocC0+bGF5ZXIrMSkgKiBJRFJfQklUUzsNCi0NCiAJaWQgJj0gTUFYX0lEX01BU0s7 DQogDQotCWlmIChpZCA+PSAoMSA8PCBuKSkNCisJaWYgKGlkID4gaWRyX21heChwLT5sYXllciAr IDEpKQ0KIAkJcmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7DQogDQotCW4gLT0gSURSX0JJVFM7DQor CW4gPSBwLT5sYXllciAqIElEUl9CSVRTOw0KIAl3aGlsZSAoKG4gPiAwKSAmJiBwKSB7DQogCQlw ID0gcC0+YXJ5WyhpZCA+PiBuKSAmIElEUl9NQVNLXTsNCiAJCW4gLT0gSURSX0JJVFM7DQpkaWZm IC0tZ2l0IGEvbGliL2x6by9NYWtlZmlsZSBiL2xpYi9sem8vTWFrZWZpbGUNCmluZGV4IGU3NjQx MTYuLmYwZjdkN2MgMTAwNjQ0DQotLS0gYS9saWIvbHpvL01ha2VmaWxlDQorKysgYi9saWIvbHpv L01ha2VmaWxlDQpAQCAtMSw1ICsxLDUgQEANCiBsem9fY29tcHJlc3Mtb2JqcyA6PSBsem8xeF9j b21wcmVzcy5vDQotbHpvX2RlY29tcHJlc3Mtb2JqcyA6PSBsem8xeF9kZWNvbXByZXNzLm8NCits em9fZGVjb21wcmVzcy1vYmpzIDo9IGx6bzF4X2RlY29tcHJlc3Nfc2FmZS5vDQogDQogb2JqLSQo Q09ORklHX0xaT19DT01QUkVTUykgKz0gbHpvX2NvbXByZXNzLm8NCiBvYmotJChDT05GSUdfTFpP X0RFQ09NUFJFU1MpICs9IGx6b19kZWNvbXByZXNzLm8NCmRpZmYgLS1naXQgYS9saWIvbHpvL2x6 bzF4X2NvbXByZXNzLmMgYi9saWIvbHpvL2x6bzF4X2NvbXByZXNzLmMNCmluZGV4IGE2MDQwOTku LjIzNmViMjEgMTAwNjQ0DQotLS0gYS9saWIvbHpvL2x6bzF4X2NvbXByZXNzLmMNCisrKyBiL2xp Yi9sem8vbHpvMXhfY29tcHJlc3MuYw0KQEAgLTEsMTk0ICsxLDI0MyBAQA0KIC8qDQotICogIExa TzFYIENvbXByZXNzb3IgZnJvbSBNaW5pTFpPDQorICogIExaTzFYIENvbXByZXNzb3IgZnJvbSBM Wk8NCiAgKg0KLSAqICBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwNSBNYXJrdXMgRi5YLkouIE9iZXJo dW1lciA8bWFya3VzQG9iZXJodW1lci5jb20+DQorICogIENvcHlyaWdodCAoQykgMTk5Ni0yMDEy IE1hcmt1cyBGLlguSi4gT2Jlcmh1bWVyIDxtYXJrdXNAb2Jlcmh1bWVyLmNvbT4NCiAgKg0KICAq ICBUaGUgZnVsbCBMWk8gcGFja2FnZSBjYW4gYmUgZm91bmQgYXQ6DQogICogIGh0dHA6Ly93d3cu b2Jlcmh1bWVyLmNvbS9vcGVuc291cmNlL2x6by8NCiAgKg0KLSAqICBDaGFuZ2VkIGZvciBrZXJu ZWwgdXNlIGJ5Og0KKyAqICBDaGFuZ2VkIGZvciBMaW51eCBrZXJuZWwgdXNlIGJ5Og0KICAqICBO aXRpbiBHdXB0YSA8bml0aW5ndXB0YTkxMEBnbWFpbC5jb20+DQogICogIFJpY2hhcmQgUHVyZGll IDxycHVyZGllQG9wZW5lZGhhbmQuY29tPg0KICAqLw0KIA0KICNpbmNsdWRlIDxsaW51eC9tb2R1 bGUuaD4NCiAjaW5jbHVkZSA8bGludXgva2VybmVsLmg+DQotI2luY2x1ZGUgPGxpbnV4L2x6by5o Pg0KICNpbmNsdWRlIDxhc20vdW5hbGlnbmVkLmg+DQorI2luY2x1ZGUgPGxpbnV4L2x6by5oPg0K ICNpbmNsdWRlICJsem9kZWZzLmgiDQogDQogc3RhdGljIG5vaW5saW5lIHNpemVfdA0KLV9sem8x eF8xX2RvX2NvbXByZXNzKGNvbnN0IHVuc2lnbmVkIGNoYXIgKmluLCBzaXplX3QgaW5fbGVuLA0K LQkJdW5zaWduZWQgY2hhciAqb3V0LCBzaXplX3QgKm91dF9sZW4sIHZvaWQgKndya21lbSkNCits em8xeF8xX2RvX2NvbXByZXNzKGNvbnN0IHVuc2lnbmVkIGNoYXIgKmluLCBzaXplX3QgaW5fbGVu LA0KKwkJICAgIHVuc2lnbmVkIGNoYXIgKm91dCwgc2l6ZV90ICpvdXRfbGVuLA0KKwkJICAgIHNp emVfdCB0aSwgdm9pZCAqd3JrbWVtKQ0KIHsNCisJY29uc3QgdW5zaWduZWQgY2hhciAqaXA7DQor CXVuc2lnbmVkIGNoYXIgKm9wOw0KIAljb25zdCB1bnNpZ25lZCBjaGFyICogY29uc3QgaW5fZW5k ID0gaW4gKyBpbl9sZW47DQotCWNvbnN0IHVuc2lnbmVkIGNoYXIgKiBjb25zdCBpcF9lbmQgPSBp biArIGluX2xlbiAtIE0yX01BWF9MRU4gLSA1Ow0KLQljb25zdCB1bnNpZ25lZCBjaGFyICoqIGNv bnN0IGRpY3QgPSB3cmttZW07DQotCWNvbnN0IHVuc2lnbmVkIGNoYXIgKmlwID0gaW4sICppaSA9 IGlwOw0KLQljb25zdCB1bnNpZ25lZCBjaGFyICplbmQsICptLCAqbV9wb3M7DQotCXNpemVfdCBt X29mZiwgbV9sZW4sIGRpbmRleDsNCi0JdW5zaWduZWQgY2hhciAqb3AgPSBvdXQ7DQorCWNvbnN0 IHVuc2lnbmVkIGNoYXIgKiBjb25zdCBpcF9lbmQgPSBpbiArIGluX2xlbiAtIDIwOw0KKwljb25z dCB1bnNpZ25lZCBjaGFyICppaTsNCisJbHpvX2RpY3RfdCAqIGNvbnN0IGRpY3QgPSAobHpvX2Rp Y3RfdCAqKSB3cmttZW07DQogDQotCWlwICs9IDQ7DQorCW9wID0gb3V0Ow0KKwlpcCA9IGluOw0K KwlpaSA9IGlwOw0KKwlpcCArPSB0aSA8IDQgPyA0IC0gdGkgOiAwOw0KIA0KIAlmb3IgKDs7KSB7 DQotCQlkaW5kZXggPSAoKHNpemVfdCkoMHgyMSAqIERYMyhpcCwgNSwgNSwgNikpID4+IDUpICYg RF9NQVNLOw0KLQkJbV9wb3MgPSBkaWN0W2RpbmRleF07DQotDQotCQlpZiAobV9wb3MgPCBpbikN Ci0JCQlnb3RvIGxpdGVyYWw7DQotDQotCQlpZiAoaXAgPT0gbV9wb3MgfHwgKChzaXplX3QpKGlw IC0gbV9wb3MpID4gTTRfTUFYX09GRlNFVCkpDQotCQkJZ290byBsaXRlcmFsOw0KLQ0KLQkJbV9v ZmYgPSBpcCAtIG1fcG9zOw0KLQkJaWYgKG1fb2ZmIDw9IE0yX01BWF9PRkZTRVQgfHwgbV9wb3Nb M10gPT0gaXBbM10pDQotCQkJZ290byB0cnlfbWF0Y2g7DQotDQotCQlkaW5kZXggPSAoZGluZGV4 ICYgKERfTUFTSyAmIDB4N2ZmKSkgXiAoRF9ISUdIIHwgMHgxZik7DQotCQltX3BvcyA9IGRpY3Rb ZGluZGV4XTsNCi0NCi0JCWlmIChtX3BvcyA8IGluKQ0KLQkJCWdvdG8gbGl0ZXJhbDsNCi0NCi0J CWlmIChpcCA9PSBtX3BvcyB8fCAoKHNpemVfdCkoaXAgLSBtX3BvcykgPiBNNF9NQVhfT0ZGU0VU KSkNCi0JCQlnb3RvIGxpdGVyYWw7DQotDQotCQltX29mZiA9IGlwIC0gbV9wb3M7DQotCQlpZiAo bV9vZmYgPD0gTTJfTUFYX09GRlNFVCB8fCBtX3Bvc1szXSA9PSBpcFszXSkNCi0JCQlnb3RvIHRy eV9tYXRjaDsNCi0NCi0JCWdvdG8gbGl0ZXJhbDsNCi0NCi10cnlfbWF0Y2g6DQotCQlpZiAoZ2V0 X3VuYWxpZ25lZCgoY29uc3QgdW5zaWduZWQgc2hvcnQgKiltX3BvcykNCi0JCQkJPT0gZ2V0X3Vu YWxpZ25lZCgoY29uc3QgdW5zaWduZWQgc2hvcnQgKilpcCkpIHsNCi0JCQlpZiAobGlrZWx5KG1f cG9zWzJdID09IGlwWzJdKSkNCi0JCQkJCWdvdG8gbWF0Y2g7DQotCQl9DQotDQorCQljb25zdCB1 bnNpZ25lZCBjaGFyICptX3BvczsNCisJCXNpemVfdCB0LCBtX2xlbiwgbV9vZmY7DQorCQl1MzIg ZHY7DQogbGl0ZXJhbDoNCi0JCWRpY3RbZGluZGV4XSA9IGlwOw0KLQkJKytpcDsNCisJCWlwICs9 IDEgKyAoKGlwIC0gaWkpID4+IDUpOw0KK25leHQ6DQogCQlpZiAodW5saWtlbHkoaXAgPj0gaXBf ZW5kKSkNCiAJCQlicmVhazsNCi0JCWNvbnRpbnVlOw0KLQ0KLW1hdGNoOg0KLQkJZGljdFtkaW5k ZXhdID0gaXA7DQotCQlpZiAoaXAgIT0gaWkpIHsNCi0JCQlzaXplX3QgdCA9IGlwIC0gaWk7DQor CQlkdiA9IGdldF91bmFsaWduZWRfbGUzMihpcCk7DQorCQl0ID0gKChkdiAqIDB4MTgyNDQyOWQp ID4+ICgzMiAtIERfQklUUykpICYgRF9NQVNLOw0KKwkJbV9wb3MgPSBpbiArIGRpY3RbdF07DQor CQlkaWN0W3RdID0gKGx6b19kaWN0X3QpIChpcCAtIGluKTsNCisJCWlmICh1bmxpa2VseShkdiAh PSBnZXRfdW5hbGlnbmVkX2xlMzIobV9wb3MpKSkNCisJCQlnb3RvIGxpdGVyYWw7DQogDQorCQlp aSAtPSB0aTsNCisJCXRpID0gMDsNCisJCXQgPSBpcCAtIGlpOw0KKwkJaWYgKHQgIT0gMCkgew0K IAkJCWlmICh0IDw9IDMpIHsNCiAJCQkJb3BbLTJdIHw9IHQ7DQotCQkJfSBlbHNlIGlmICh0IDw9 IDE4KSB7DQorCQkJCUNPUFk0KG9wLCBpaSk7DQorCQkJCW9wICs9IHQ7DQorCQkJfSBlbHNlIGlm ICh0IDw9IDE2KSB7DQogCQkJCSpvcCsrID0gKHQgLSAzKTsNCisJCQkJQ09QWTgob3AsIGlpKTsN CisJCQkJQ09QWTgob3AgKyA4LCBpaSArIDgpOw0KKwkJCQlvcCArPSB0Ow0KIAkJCX0gZWxzZSB7 DQotCQkJCXNpemVfdCB0dCA9IHQgLSAxODsNCi0NCi0JCQkJKm9wKysgPSAwOw0KLQkJCQl3aGls ZSAodHQgPiAyNTUpIHsNCi0JCQkJCXR0IC09IDI1NTsNCisJCQkJaWYgKHQgPD0gMTgpIHsNCisJ CQkJCSpvcCsrID0gKHQgLSAzKTsNCisJCQkJfSBlbHNlIHsNCisJCQkJCXNpemVfdCB0dCA9IHQg LSAxODsNCiAJCQkJCSpvcCsrID0gMDsNCisJCQkJCXdoaWxlICh1bmxpa2VseSh0dCA+IDI1NSkp IHsNCisJCQkJCQl0dCAtPSAyNTU7DQorCQkJCQkJKm9wKysgPSAwOw0KKwkJCQkJfQ0KKwkJCQkJ Km9wKysgPSB0dDsNCiAJCQkJfQ0KLQkJCQkqb3ArKyA9IHR0Ow0KKwkJCQlkbyB7DQorCQkJCQlD T1BZOChvcCwgaWkpOw0KKwkJCQkJQ09QWTgob3AgKyA4LCBpaSArIDgpOw0KKwkJCQkJb3AgKz0g MTY7DQorCQkJCQlpaSArPSAxNjsNCisJCQkJCXQgLT0gMTY7DQorCQkJCX0gd2hpbGUgKHQgPj0g MTYpOw0KKwkJCQlpZiAodCA+IDApIGRvIHsNCisJCQkJCSpvcCsrID0gKmlpKys7DQorCQkJCX0g d2hpbGUgKC0tdCA+IDApOw0KIAkJCX0NCi0JCQlkbyB7DQotCQkJCSpvcCsrID0gKmlpKys7DQot CQkJfSB3aGlsZSAoLS10ID4gMCk7DQogCQl9DQogDQotCQlpcCArPSAzOw0KLQkJaWYgKG1fcG9z WzNdICE9ICppcCsrIHx8IG1fcG9zWzRdICE9ICppcCsrDQotCQkJCXx8IG1fcG9zWzVdICE9ICpp cCsrIHx8IG1fcG9zWzZdICE9ICppcCsrDQotCQkJCXx8IG1fcG9zWzddICE9ICppcCsrIHx8IG1f cG9zWzhdICE9ICppcCsrKSB7DQotCQkJLS1pcDsNCi0JCQltX2xlbiA9IGlwIC0gaWk7DQorCQlt X2xlbiA9IDQ7DQorCQl7DQorI2lmIGRlZmluZWQoQ09ORklHX0hBVkVfRUZGSUNJRU5UX1VOQUxJ R05FRF9BQ0NFU1MpICYmIGRlZmluZWQoTFpPX1VTRV9DVFo2NCkNCisJCXU2NCB2Ow0KKwkJdiA9 IGdldF91bmFsaWduZWQoKGNvbnN0IHU2NCAqKSAoaXAgKyBtX2xlbikpIF4NCisJCSAgICBnZXRf dW5hbGlnbmVkKChjb25zdCB1NjQgKikgKG1fcG9zICsgbV9sZW4pKTsNCisJCWlmICh1bmxpa2Vs eSh2ID09IDApKSB7DQorCQkJZG8gew0KKwkJCQltX2xlbiArPSA4Ow0KKwkJCQl2ID0gZ2V0X3Vu YWxpZ25lZCgoY29uc3QgdTY0ICopIChpcCArIG1fbGVuKSkgXg0KKwkJCQkgICAgZ2V0X3VuYWxp Z25lZCgoY29uc3QgdTY0ICopIChtX3BvcyArIG1fbGVuKSk7DQorCQkJCWlmICh1bmxpa2VseShp cCArIG1fbGVuID49IGlwX2VuZCkpDQorCQkJCQlnb3RvIG1fbGVuX2RvbmU7DQorCQkJfSB3aGls ZSAodiA9PSAwKTsNCisJCX0NCisjICBpZiBkZWZpbmVkKF9fTElUVExFX0VORElBTikNCisJCW1f bGVuICs9ICh1bnNpZ25lZCkgX19idWlsdGluX2N0emxsKHYpIC8gODsNCisjICBlbGlmIGRlZmlu ZWQoX19CSUdfRU5ESUFOKQ0KKwkJbV9sZW4gKz0gKHVuc2lnbmVkKSBfX2J1aWx0aW5fY2x6bGwo dikgLyA4Ow0KKyMgIGVsc2UNCisjICAgIGVycm9yICJtaXNzaW5nIGVuZGlhbiBkZWZpbml0aW9u Ig0KKyMgIGVuZGlmDQorI2VsaWYgZGVmaW5lZChDT05GSUdfSEFWRV9FRkZJQ0lFTlRfVU5BTElH TkVEX0FDQ0VTUykgJiYgZGVmaW5lZChMWk9fVVNFX0NUWjMyKQ0KKwkJdTMyIHY7DQorCQl2ID0g Z2V0X3VuYWxpZ25lZCgoY29uc3QgdTMyICopIChpcCArIG1fbGVuKSkgXg0KKwkJICAgIGdldF91 bmFsaWduZWQoKGNvbnN0IHUzMiAqKSAobV9wb3MgKyBtX2xlbikpOw0KKwkJaWYgKHVubGlrZWx5 KHYgPT0gMCkpIHsNCisJCQlkbyB7DQorCQkJCW1fbGVuICs9IDQ7DQorCQkJCXYgPSBnZXRfdW5h bGlnbmVkKChjb25zdCB1MzIgKikgKGlwICsgbV9sZW4pKSBeDQorCQkJCSAgICBnZXRfdW5hbGln bmVkKChjb25zdCB1MzIgKikgKG1fcG9zICsgbV9sZW4pKTsNCisJCQkJaWYgKHYgIT0gMCkNCisJ CQkJCWJyZWFrOw0KKwkJCQltX2xlbiArPSA0Ow0KKwkJCQl2ID0gZ2V0X3VuYWxpZ25lZCgoY29u c3QgdTMyICopIChpcCArIG1fbGVuKSkgXg0KKwkJCQkgICAgZ2V0X3VuYWxpZ25lZCgoY29uc3Qg dTMyICopIChtX3BvcyArIG1fbGVuKSk7DQorCQkJCWlmICh1bmxpa2VseShpcCArIG1fbGVuID49 IGlwX2VuZCkpDQorCQkJCQlnb3RvIG1fbGVuX2RvbmU7DQorCQkJfSB3aGlsZSAodiA9PSAwKTsN CisJCX0NCisjICBpZiBkZWZpbmVkKF9fTElUVExFX0VORElBTikNCisJCW1fbGVuICs9ICh1bnNp Z25lZCkgX19idWlsdGluX2N0eih2KSAvIDg7DQorIyAgZWxpZiBkZWZpbmVkKF9fQklHX0VORElB TikNCisJCW1fbGVuICs9ICh1bnNpZ25lZCkgX19idWlsdGluX2Nseih2KSAvIDg7DQorIyAgZWxz ZQ0KKyMgICAgZXJyb3IgIm1pc3NpbmcgZW5kaWFuIGRlZmluaXRpb24iDQorIyAgZW5kaWYNCisj ZWxzZQ0KKwkJaWYgKHVubGlrZWx5KGlwW21fbGVuXSA9PSBtX3Bvc1ttX2xlbl0pKSB7DQorCQkJ ZG8gew0KKwkJCQltX2xlbiArPSAxOw0KKwkJCQlpZiAoaXBbbV9sZW5dICE9IG1fcG9zW21fbGVu XSkNCisJCQkJCWJyZWFrOw0KKwkJCQltX2xlbiArPSAxOw0KKwkJCQlpZiAoaXBbbV9sZW5dICE9 IG1fcG9zW21fbGVuXSkNCisJCQkJCWJyZWFrOw0KKwkJCQltX2xlbiArPSAxOw0KKwkJCQlpZiAo aXBbbV9sZW5dICE9IG1fcG9zW21fbGVuXSkNCisJCQkJCWJyZWFrOw0KKwkJCQltX2xlbiArPSAx Ow0KKwkJCQlpZiAoaXBbbV9sZW5dICE9IG1fcG9zW21fbGVuXSkNCisJCQkJCWJyZWFrOw0KKwkJ CQltX2xlbiArPSAxOw0KKwkJCQlpZiAoaXBbbV9sZW5dICE9IG1fcG9zW21fbGVuXSkNCisJCQkJ CWJyZWFrOw0KKwkJCQltX2xlbiArPSAxOw0KKwkJCQlpZiAoaXBbbV9sZW5dICE9IG1fcG9zW21f bGVuXSkNCisJCQkJCWJyZWFrOw0KKwkJCQltX2xlbiArPSAxOw0KKwkJCQlpZiAoaXBbbV9sZW5d ICE9IG1fcG9zW21fbGVuXSkNCisJCQkJCWJyZWFrOw0KKwkJCQltX2xlbiArPSAxOw0KKwkJCQlp ZiAodW5saWtlbHkoaXAgKyBtX2xlbiA+PSBpcF9lbmQpKQ0KKwkJCQkJZ290byBtX2xlbl9kb25l Ow0KKwkJCX0gd2hpbGUgKGlwW21fbGVuXSA9PSBtX3Bvc1ttX2xlbl0pOw0KKwkJfQ0KKyNlbmRp Zg0KKwkJfQ0KK21fbGVuX2RvbmU6DQogDQotCQkJaWYgKG1fb2ZmIDw9IE0yX01BWF9PRkZTRVQp IHsNCi0JCQkJbV9vZmYgLT0gMTsNCi0JCQkJKm9wKysgPSAoKChtX2xlbiAtIDEpIDw8IDUpDQot CQkJCQkJfCAoKG1fb2ZmICYgNykgPDwgMikpOw0KLQkJCQkqb3ArKyA9IChtX29mZiA+PiAzKTsN Ci0JCQl9IGVsc2UgaWYgKG1fb2ZmIDw9IE0zX01BWF9PRkZTRVQpIHsNCi0JCQkJbV9vZmYgLT0g MTsNCisJCW1fb2ZmID0gaXAgLSBtX3BvczsNCisJCWlwICs9IG1fbGVuOw0KKwkJaWkgPSBpcDsN CisJCWlmIChtX2xlbiA8PSBNMl9NQVhfTEVOICYmIG1fb2ZmIDw9IE0yX01BWF9PRkZTRVQpIHsN CisJCQltX29mZiAtPSAxOw0KKwkJCSpvcCsrID0gKCgobV9sZW4gLSAxKSA8PCA1KSB8ICgobV9v ZmYgJiA3KSA8PCAyKSk7DQorCQkJKm9wKysgPSAobV9vZmYgPj4gMyk7DQorCQl9IGVsc2UgaWYg KG1fb2ZmIDw9IE0zX01BWF9PRkZTRVQpIHsNCisJCQltX29mZiAtPSAxOw0KKwkJCWlmIChtX2xl biA8PSBNM19NQVhfTEVOKQ0KIAkJCQkqb3ArKyA9IChNM19NQVJLRVIgfCAobV9sZW4gLSAyKSk7 DQotCQkJCWdvdG8gbTNfbTRfb2Zmc2V0Ow0KLQkJCX0gZWxzZSB7DQotCQkJCW1fb2ZmIC09IDB4 NDAwMDsNCi0NCi0JCQkJKm9wKysgPSAoTTRfTUFSS0VSIHwgKChtX29mZiAmIDB4NDAwMCkgPj4g MTEpDQotCQkJCQkJfCAobV9sZW4gLSAyKSk7DQotCQkJCWdvdG8gbTNfbTRfb2Zmc2V0Ow0KKwkJ CWVsc2Ugew0KKwkJCQltX2xlbiAtPSBNM19NQVhfTEVOOw0KKwkJCQkqb3ArKyA9IE0zX01BUktF UiB8IDA7DQorCQkJCXdoaWxlICh1bmxpa2VseShtX2xlbiA+IDI1NSkpIHsNCisJCQkJCW1fbGVu IC09IDI1NTsNCisJCQkJCSpvcCsrID0gMDsNCisJCQkJfQ0KKwkJCQkqb3ArKyA9IChtX2xlbik7 DQogCQkJfQ0KKwkJCSpvcCsrID0gKG1fb2ZmIDw8IDIpOw0KKwkJCSpvcCsrID0gKG1fb2ZmID4+ IDYpOw0KIAkJfSBlbHNlIHsNCi0JCQllbmQgPSBpbl9lbmQ7DQotCQkJbSA9IG1fcG9zICsgTTJf TUFYX0xFTiArIDE7DQotDQotCQkJd2hpbGUgKGlwIDwgZW5kICYmICptID09ICppcCkgew0KLQkJ CQltKys7DQotCQkJCWlwKys7DQotCQkJfQ0KLQkJCW1fbGVuID0gaXAgLSBpaTsNCi0NCi0JCQlp ZiAobV9vZmYgPD0gTTNfTUFYX09GRlNFVCkgew0KLQkJCQltX29mZiAtPSAxOw0KLQkJCQlpZiAo bV9sZW4gPD0gMzMpIHsNCi0JCQkJCSpvcCsrID0gKE0zX01BUktFUiB8IChtX2xlbiAtIDIpKTsN Ci0JCQkJfSBlbHNlIHsNCi0JCQkJCW1fbGVuIC09IDMzOw0KLQkJCQkJKm9wKysgPSBNM19NQVJL RVIgfCAwOw0KLQkJCQkJZ290byBtM19tNF9sZW47DQotCQkJCX0NCi0JCQl9IGVsc2Ugew0KLQkJ CQltX29mZiAtPSAweDQwMDA7DQotCQkJCWlmIChtX2xlbiA8PSBNNF9NQVhfTEVOKSB7DQotCQkJ CQkqb3ArKyA9IChNNF9NQVJLRVINCi0JCQkJCQl8ICgobV9vZmYgJiAweDQwMDApID4+IDExKQ0K KwkJCW1fb2ZmIC09IDB4NDAwMDsNCisJCQlpZiAobV9sZW4gPD0gTTRfTUFYX0xFTikNCisJCQkJ Km9wKysgPSAoTTRfTUFSS0VSIHwgKChtX29mZiA+PiAxMSkgJiA4KQ0KIAkJCQkJCXwgKG1fbGVu IC0gMikpOw0KLQkJCQl9IGVsc2Ugew0KLQkJCQkJbV9sZW4gLT0gTTRfTUFYX0xFTjsNCi0JCQkJ CSpvcCsrID0gKE00X01BUktFUg0KLQkJCQkJCXwgKChtX29mZiAmIDB4NDAwMCkgPj4gMTEpKTsN Ci1tM19tNF9sZW46DQotCQkJCQl3aGlsZSAobV9sZW4gPiAyNTUpIHsNCi0JCQkJCQltX2xlbiAt PSAyNTU7DQotCQkJCQkJKm9wKysgPSAwOw0KLQkJCQkJfQ0KLQ0KLQkJCQkJKm9wKysgPSAobV9s ZW4pOw0KKwkJCWVsc2Ugew0KKwkJCQltX2xlbiAtPSBNNF9NQVhfTEVOOw0KKwkJCQkqb3ArKyA9 IChNNF9NQVJLRVIgfCAoKG1fb2ZmID4+IDExKSAmIDgpKTsNCisJCQkJd2hpbGUgKHVubGlrZWx5 KG1fbGVuID4gMjU1KSkgew0KKwkJCQkJbV9sZW4gLT0gMjU1Ow0KKwkJCQkJKm9wKysgPSAwOw0K IAkJCQl9DQorCQkJCSpvcCsrID0gKG1fbGVuKTsNCiAJCQl9DQotbTNfbTRfb2Zmc2V0Og0KLQkJ CSpvcCsrID0gKChtX29mZiAmIDYzKSA8PCAyKTsNCisJCQkqb3ArKyA9IChtX29mZiA8PCAyKTsN CiAJCQkqb3ArKyA9IChtX29mZiA+PiA2KTsNCiAJCX0NCi0NCi0JCWlpID0gaXA7DQotCQlpZiAo dW5saWtlbHkoaXAgPj0gaXBfZW5kKSkNCi0JCQlicmVhazsNCisJCWdvdG8gbmV4dDsNCiAJfQ0K LQ0KIAkqb3V0X2xlbiA9IG9wIC0gb3V0Ow0KLQlyZXR1cm4gaW5fZW5kIC0gaWk7DQorCXJldHVy biBpbl9lbmQgLSAoaWkgLSB0aSk7DQogfQ0KIA0KLWludCBsem8xeF8xX2NvbXByZXNzKGNvbnN0 IHVuc2lnbmVkIGNoYXIgKmluLCBzaXplX3QgaW5fbGVuLCB1bnNpZ25lZCBjaGFyICpvdXQsDQot CQkJc2l6ZV90ICpvdXRfbGVuLCB2b2lkICp3cmttZW0pDQoraW50IGx6bzF4XzFfY29tcHJlc3Mo Y29uc3QgdW5zaWduZWQgY2hhciAqaW4sIHNpemVfdCBpbl9sZW4sDQorCQkgICAgIHVuc2lnbmVk IGNoYXIgKm91dCwgc2l6ZV90ICpvdXRfbGVuLA0KKwkJICAgICB2b2lkICp3cmttZW0pDQogew0K LQljb25zdCB1bnNpZ25lZCBjaGFyICppaTsNCisJY29uc3QgdW5zaWduZWQgY2hhciAqaXAgPSBp bjsNCiAJdW5zaWduZWQgY2hhciAqb3AgPSBvdXQ7DQotCXNpemVfdCB0Ow0KKwlzaXplX3QgbCA9 IGluX2xlbjsNCisJc2l6ZV90IHQgPSAwOw0KIA0KLQlpZiAodW5saWtlbHkoaW5fbGVuIDw9IE0y X01BWF9MRU4gKyA1KSkgew0KLQkJdCA9IGluX2xlbjsNCi0JfSBlbHNlIHsNCi0JCXQgPSBfbHpv MXhfMV9kb19jb21wcmVzcyhpbiwgaW5fbGVuLCBvcCwgb3V0X2xlbiwgd3JrbWVtKTsNCisJd2hp bGUgKGwgPiAyMCkgew0KKwkJc2l6ZV90IGxsID0gbCA8PSAoTTRfTUFYX09GRlNFVCArIDEpID8g bCA6IChNNF9NQVhfT0ZGU0VUICsgMSk7DQorCQl1aW50cHRyX3QgbGxfZW5kID0gKHVpbnRwdHJf dCkgaXAgKyBsbDsNCisJCWlmICgobGxfZW5kICsgKCh0ICsgbGwpID4+IDUpKSA8PSBsbF9lbmQp DQorCQkJYnJlYWs7DQorCQlCVUlMRF9CVUdfT04oRF9TSVpFICogc2l6ZW9mKGx6b19kaWN0X3Qp ID4gTFpPMVhfMV9NRU1fQ09NUFJFU1MpOw0KKwkJbWVtc2V0KHdya21lbSwgMCwgRF9TSVpFICog c2l6ZW9mKGx6b19kaWN0X3QpKTsNCisJCXQgPSBsem8xeF8xX2RvX2NvbXByZXNzKGlwLCBsbCwg b3AsIG91dF9sZW4sIHQsIHdya21lbSk7DQorCQlpcCArPSBsbDsNCiAJCW9wICs9ICpvdXRfbGVu Ow0KKwkJbCAgLT0gbGw7DQogCX0NCisJdCArPSBsOw0KIA0KIAlpZiAodCA+IDApIHsNCi0JCWlp ID0gaW4gKyBpbl9sZW4gLSB0Ow0KKwkJY29uc3QgdW5zaWduZWQgY2hhciAqaWkgPSBpbiArIGlu X2xlbiAtIHQ7DQogDQogCQlpZiAob3AgPT0gb3V0ICYmIHQgPD0gMjM4KSB7DQogCQkJKm9wKysg PSAoMTcgKyB0KTsNCkBAIC0xOTgsMTYgKzI0NywyMSBAQCBpbnQgbHpvMXhfMV9jb21wcmVzcyhj b25zdCB1bnNpZ25lZCBjaGFyICppbiwgc2l6ZV90IGluX2xlbiwgdW5zaWduZWQgY2hhciAqb3V0 LA0KIAkJCSpvcCsrID0gKHQgLSAzKTsNCiAJCX0gZWxzZSB7DQogCQkJc2l6ZV90IHR0ID0gdCAt IDE4Ow0KLQ0KIAkJCSpvcCsrID0gMDsNCiAJCQl3aGlsZSAodHQgPiAyNTUpIHsNCiAJCQkJdHQg LT0gMjU1Ow0KIAkJCQkqb3ArKyA9IDA7DQogCQkJfQ0KLQ0KIAkJCSpvcCsrID0gdHQ7DQogCQl9 DQotCQlkbyB7DQorCQlpZiAodCA+PSAxNikgZG8gew0KKwkJCUNPUFk4KG9wLCBpaSk7DQorCQkJ Q09QWTgob3AgKyA4LCBpaSArIDgpOw0KKwkJCW9wICs9IDE2Ow0KKwkJCWlpICs9IDE2Ow0KKwkJ CXQgLT0gMTY7DQorCQl9IHdoaWxlICh0ID49IDE2KTsNCisJCWlmICh0ID4gMCkgZG8gew0KIAkJ CSpvcCsrID0gKmlpKys7DQogCQl9IHdoaWxlICgtLXQgPiAwKTsNCiAJfQ0KQEAgLTIyMyw0ICsy NzcsMyBAQCBFWFBPUlRfU1lNQk9MX0dQTChsem8xeF8xX2NvbXByZXNzKTsNCiANCiBNT0RVTEVf TElDRU5TRSgiR1BMIik7DQogTU9EVUxFX0RFU0NSSVBUSU9OKCJMWk8xWC0xIENvbXByZXNzb3Ii KTsNCi0NCmRpZmYgLS1naXQgYS9saWIvbHpvL2x6bzF4X2RlY29tcHJlc3MuYyBiL2xpYi9sem8v bHpvMXhfZGVjb21wcmVzcy5jDQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IGYyZmQw OTguLjAwMDAwMDANCi0tLSBhL2xpYi9sem8vbHpvMXhfZGVjb21wcmVzcy5jDQorKysgL2Rldi9u dWxsDQpAQCAtMSwyNTUgKzAsMCBAQA0KLS8qDQotICogIExaTzFYIERlY29tcHJlc3NvciBmcm9t IE1pbmlMWk8NCi0gKg0KLSAqICBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwNSBNYXJrdXMgRi5YLkou IE9iZXJodW1lciA8bWFya3VzQG9iZXJodW1lci5jb20+DQotICoNCi0gKiAgVGhlIGZ1bGwgTFpP IHBhY2thZ2UgY2FuIGJlIGZvdW5kIGF0Og0KLSAqICBodHRwOi8vd3d3Lm9iZXJodW1lci5jb20v b3BlbnNvdXJjZS9sem8vDQotICoNCi0gKiAgQ2hhbmdlZCBmb3Iga2VybmVsIHVzZSBieToNCi0g KiAgTml0aW4gR3VwdGEgPG5pdGluZ3VwdGE5MTBAZ21haWwuY29tPg0KLSAqICBSaWNoYXJkIFB1 cmRpZSA8cnB1cmRpZUBvcGVuZWRoYW5kLmNvbT4NCi0gKi8NCi0NCi0jaWZuZGVmIFNUQVRJQw0K LSNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4NCi0jaW5jbHVkZSA8bGludXgva2VybmVsLmg+DQot I2VuZGlmDQotDQotI2luY2x1ZGUgPGFzbS91bmFsaWduZWQuaD4NCi0jaW5jbHVkZSA8bGludXgv bHpvLmg+DQotI2luY2x1ZGUgImx6b2RlZnMuaCINCi0NCi0jZGVmaW5lIEhBVkVfSVAoeCwgaXBf ZW5kLCBpcCkgKChzaXplX3QpKGlwX2VuZCAtIGlwKSA8ICh4KSkNCi0jZGVmaW5lIEhBVkVfT1Ao eCwgb3BfZW5kLCBvcCkgKChzaXplX3QpKG9wX2VuZCAtIG9wKSA8ICh4KSkNCi0jZGVmaW5lIEhB VkVfTEIobV9wb3MsIG91dCwgb3ApIChtX3BvcyA8IG91dCB8fCBtX3BvcyA+PSBvcCkNCi0NCi0j ZGVmaW5lIENPUFk0KGRzdCwgc3JjKQlcDQotCQlwdXRfdW5hbGlnbmVkKGdldF91bmFsaWduZWQo KGNvbnN0IHUzMiAqKShzcmMpKSwgKHUzMiAqKShkc3QpKQ0KLQ0KLWludCBsem8xeF9kZWNvbXBy ZXNzX3NhZmUoY29uc3QgdW5zaWduZWQgY2hhciAqaW4sIHNpemVfdCBpbl9sZW4sDQotCQkJdW5z aWduZWQgY2hhciAqb3V0LCBzaXplX3QgKm91dF9sZW4pDQotew0KLQljb25zdCB1bnNpZ25lZCBj aGFyICogY29uc3QgaXBfZW5kID0gaW4gKyBpbl9sZW47DQotCXVuc2lnbmVkIGNoYXIgKiBjb25z dCBvcF9lbmQgPSBvdXQgKyAqb3V0X2xlbjsNCi0JY29uc3QgdW5zaWduZWQgY2hhciAqaXAgPSBp biwgKm1fcG9zOw0KLQl1bnNpZ25lZCBjaGFyICpvcCA9IG91dDsNCi0Jc2l6ZV90IHQ7DQotDQot CSpvdXRfbGVuID0gMDsNCi0NCi0JaWYgKCppcCA+IDE3KSB7DQotCQl0ID0gKmlwKysgLSAxNzsN Ci0JCWlmICh0IDwgNCkNCi0JCQlnb3RvIG1hdGNoX25leHQ7DQotCQlpZiAoSEFWRV9PUCh0LCBv cF9lbmQsIG9wKSkNCi0JCQlnb3RvIG91dHB1dF9vdmVycnVuOw0KLQkJaWYgKEhBVkVfSVAodCAr IDEsIGlwX2VuZCwgaXApKQ0KLQkJCWdvdG8gaW5wdXRfb3ZlcnJ1bjsNCi0JCWRvIHsNCi0JCQkq b3ArKyA9ICppcCsrOw0KLQkJfSB3aGlsZSAoLS10ID4gMCk7DQotCQlnb3RvIGZpcnN0X2xpdGVy YWxfcnVuOw0KLQl9DQotDQotCXdoaWxlICgoaXAgPCBpcF9lbmQpKSB7DQotCQl0ID0gKmlwKys7 DQotCQlpZiAodCA+PSAxNikNCi0JCQlnb3RvIG1hdGNoOw0KLQkJaWYgKHQgPT0gMCkgew0KLQkJ CWlmIChIQVZFX0lQKDEsIGlwX2VuZCwgaXApKQ0KLQkJCQlnb3RvIGlucHV0X292ZXJydW47DQot CQkJd2hpbGUgKCppcCA9PSAwKSB7DQotCQkJCXQgKz0gMjU1Ow0KLQkJCQlpcCsrOw0KLQkJCQlp ZiAoSEFWRV9JUCgxLCBpcF9lbmQsIGlwKSkNCi0JCQkJCWdvdG8gaW5wdXRfb3ZlcnJ1bjsNCi0J CQl9DQotCQkJdCArPSAxNSArICppcCsrOw0KLQkJfQ0KLQkJaWYgKEhBVkVfT1AodCArIDMsIG9w X2VuZCwgb3ApKQ0KLQkJCWdvdG8gb3V0cHV0X292ZXJydW47DQotCQlpZiAoSEFWRV9JUCh0ICsg NCwgaXBfZW5kLCBpcCkpDQotCQkJZ290byBpbnB1dF9vdmVycnVuOw0KLQ0KLQkJQ09QWTQob3As IGlwKTsNCi0JCW9wICs9IDQ7DQotCQlpcCArPSA0Ow0KLQkJaWYgKC0tdCA+IDApIHsNCi0JCQlp ZiAodCA+PSA0KSB7DQotCQkJCWRvIHsNCi0JCQkJCUNPUFk0KG9wLCBpcCk7DQotCQkJCQlvcCAr PSA0Ow0KLQkJCQkJaXAgKz0gNDsNCi0JCQkJCXQgLT0gNDsNCi0JCQkJfSB3aGlsZSAodCA+PSA0 KTsNCi0JCQkJaWYgKHQgPiAwKSB7DQotCQkJCQlkbyB7DQotCQkJCQkJKm9wKysgPSAqaXArKzsN Ci0JCQkJCX0gd2hpbGUgKC0tdCA+IDApOw0KLQkJCQl9DQotCQkJfSBlbHNlIHsNCi0JCQkJZG8g ew0KLQkJCQkJKm9wKysgPSAqaXArKzsNCi0JCQkJfSB3aGlsZSAoLS10ID4gMCk7DQotCQkJfQ0K LQkJfQ0KLQ0KLWZpcnN0X2xpdGVyYWxfcnVuOg0KLQkJdCA9ICppcCsrOw0KLQkJaWYgKHQgPj0g MTYpDQotCQkJZ290byBtYXRjaDsNCi0JCW1fcG9zID0gb3AgLSAoMSArIE0yX01BWF9PRkZTRVQp Ow0KLQkJbV9wb3MgLT0gdCA+PiAyOw0KLQkJbV9wb3MgLT0gKmlwKysgPDwgMjsNCi0NCi0JCWlm IChIQVZFX0xCKG1fcG9zLCBvdXQsIG9wKSkNCi0JCQlnb3RvIGxvb2tiZWhpbmRfb3ZlcnJ1bjsN Ci0NCi0JCWlmIChIQVZFX09QKDMsIG9wX2VuZCwgb3ApKQ0KLQkJCWdvdG8gb3V0cHV0X292ZXJy dW47DQotCQkqb3ArKyA9ICptX3BvcysrOw0KLQkJKm9wKysgPSAqbV9wb3MrKzsNCi0JCSpvcCsr ID0gKm1fcG9zOw0KLQ0KLQkJZ290byBtYXRjaF9kb25lOw0KLQ0KLQkJZG8gew0KLW1hdGNoOg0K LQkJCWlmICh0ID49IDY0KSB7DQotCQkJCW1fcG9zID0gb3AgLSAxOw0KLQkJCQltX3BvcyAtPSAo dCA+PiAyKSAmIDc7DQotCQkJCW1fcG9zIC09ICppcCsrIDw8IDM7DQotCQkJCXQgPSAodCA+PiA1 KSAtIDE7DQotCQkJCWlmIChIQVZFX0xCKG1fcG9zLCBvdXQsIG9wKSkNCi0JCQkJCWdvdG8gbG9v a2JlaGluZF9vdmVycnVuOw0KLQkJCQlpZiAoSEFWRV9PUCh0ICsgMyAtIDEsIG9wX2VuZCwgb3Ap KQ0KLQkJCQkJZ290byBvdXRwdXRfb3ZlcnJ1bjsNCi0JCQkJZ290byBjb3B5X21hdGNoOw0KLQkJ CX0gZWxzZSBpZiAodCA+PSAzMikgew0KLQkJCQl0ICY9IDMxOw0KLQkJCQlpZiAodCA9PSAwKSB7 DQotCQkJCQlpZiAoSEFWRV9JUCgxLCBpcF9lbmQsIGlwKSkNCi0JCQkJCQlnb3RvIGlucHV0X292 ZXJydW47DQotCQkJCQl3aGlsZSAoKmlwID09IDApIHsNCi0JCQkJCQl0ICs9IDI1NTsNCi0JCQkJ CQlpcCsrOw0KLQkJCQkJCWlmIChIQVZFX0lQKDEsIGlwX2VuZCwgaXApKQ0KLQkJCQkJCQlnb3Rv IGlucHV0X292ZXJydW47DQotCQkJCQl9DQotCQkJCQl0ICs9IDMxICsgKmlwKys7DQotCQkJCX0N Ci0JCQkJbV9wb3MgPSBvcCAtIDE7DQotCQkJCW1fcG9zIC09IGdldF91bmFsaWduZWRfbGUxNihp cCkgPj4gMjsNCi0JCQkJaXAgKz0gMjsNCi0JCQl9IGVsc2UgaWYgKHQgPj0gMTYpIHsNCi0JCQkJ bV9wb3MgPSBvcDsNCi0JCQkJbV9wb3MgLT0gKHQgJiA4KSA8PCAxMTsNCi0NCi0JCQkJdCAmPSA3 Ow0KLQkJCQlpZiAodCA9PSAwKSB7DQotCQkJCQlpZiAoSEFWRV9JUCgxLCBpcF9lbmQsIGlwKSkN Ci0JCQkJCQlnb3RvIGlucHV0X292ZXJydW47DQotCQkJCQl3aGlsZSAoKmlwID09IDApIHsNCi0J CQkJCQl0ICs9IDI1NTsNCi0JCQkJCQlpcCsrOw0KLQkJCQkJCWlmIChIQVZFX0lQKDEsIGlwX2Vu ZCwgaXApKQ0KLQkJCQkJCQlnb3RvIGlucHV0X292ZXJydW47DQotCQkJCQl9DQotCQkJCQl0ICs9 IDcgKyAqaXArKzsNCi0JCQkJfQ0KLQkJCQltX3BvcyAtPSBnZXRfdW5hbGlnbmVkX2xlMTYoaXAp ID4+IDI7DQotCQkJCWlwICs9IDI7DQotCQkJCWlmIChtX3BvcyA9PSBvcCkNCi0JCQkJCWdvdG8g ZW9mX2ZvdW5kOw0KLQkJCQltX3BvcyAtPSAweDQwMDA7DQotCQkJfSBlbHNlIHsNCi0JCQkJbV9w b3MgPSBvcCAtIDE7DQotCQkJCW1fcG9zIC09IHQgPj4gMjsNCi0JCQkJbV9wb3MgLT0gKmlwKysg PDwgMjsNCi0NCi0JCQkJaWYgKEhBVkVfTEIobV9wb3MsIG91dCwgb3ApKQ0KLQkJCQkJZ290byBs b29rYmVoaW5kX292ZXJydW47DQotCQkJCWlmIChIQVZFX09QKDIsIG9wX2VuZCwgb3ApKQ0KLQkJ CQkJZ290byBvdXRwdXRfb3ZlcnJ1bjsNCi0NCi0JCQkJKm9wKysgPSAqbV9wb3MrKzsNCi0JCQkJ Km9wKysgPSAqbV9wb3M7DQotCQkJCWdvdG8gbWF0Y2hfZG9uZTsNCi0JCQl9DQotDQotCQkJaWYg KEhBVkVfTEIobV9wb3MsIG91dCwgb3ApKQ0KLQkJCQlnb3RvIGxvb2tiZWhpbmRfb3ZlcnJ1bjsN Ci0JCQlpZiAoSEFWRV9PUCh0ICsgMyAtIDEsIG9wX2VuZCwgb3ApKQ0KLQkJCQlnb3RvIG91dHB1 dF9vdmVycnVuOw0KLQ0KLQkJCWlmICh0ID49IDIgKiA0IC0gKDMgLSAxKSAmJiAob3AgLSBtX3Bv cykgPj0gNCkgew0KLQkJCQlDT1BZNChvcCwgbV9wb3MpOw0KLQkJCQlvcCArPSA0Ow0KLQkJCQlt X3BvcyArPSA0Ow0KLQkJCQl0IC09IDQgLSAoMyAtIDEpOw0KLQkJCQlkbyB7DQotCQkJCQlDT1BZ NChvcCwgbV9wb3MpOw0KLQkJCQkJb3AgKz0gNDsNCi0JCQkJCW1fcG9zICs9IDQ7DQotCQkJCQl0 IC09IDQ7DQotCQkJCX0gd2hpbGUgKHQgPj0gNCk7DQotCQkJCWlmICh0ID4gMCkNCi0JCQkJCWRv IHsNCi0JCQkJCQkqb3ArKyA9ICptX3BvcysrOw0KLQkJCQkJfSB3aGlsZSAoLS10ID4gMCk7DQot CQkJfSBlbHNlIHsNCi1jb3B5X21hdGNoOg0KLQkJCQkqb3ArKyA9ICptX3BvcysrOw0KLQkJCQkq b3ArKyA9ICptX3BvcysrOw0KLQkJCQlkbyB7DQotCQkJCQkqb3ArKyA9ICptX3BvcysrOw0KLQkJ CQl9IHdoaWxlICgtLXQgPiAwKTsNCi0JCQl9DQotbWF0Y2hfZG9uZToNCi0JCQl0ID0gaXBbLTJd ICYgMzsNCi0JCQlpZiAodCA9PSAwKQ0KLQkJCQlicmVhazsNCi1tYXRjaF9uZXh0Og0KLQkJCWlm IChIQVZFX09QKHQsIG9wX2VuZCwgb3ApKQ0KLQkJCQlnb3RvIG91dHB1dF9vdmVycnVuOw0KLQkJ CWlmIChIQVZFX0lQKHQgKyAxLCBpcF9lbmQsIGlwKSkNCi0JCQkJZ290byBpbnB1dF9vdmVycnVu Ow0KLQ0KLQkJCSpvcCsrID0gKmlwKys7DQotCQkJaWYgKHQgPiAxKSB7DQotCQkJCSpvcCsrID0g KmlwKys7DQotCQkJCWlmICh0ID4gMikNCi0JCQkJCSpvcCsrID0gKmlwKys7DQotCQkJfQ0KLQ0K LQkJCXQgPSAqaXArKzsNCi0JCX0gd2hpbGUgKGlwIDwgaXBfZW5kKTsNCi0JfQ0KLQ0KLQkqb3V0 X2xlbiA9IG9wIC0gb3V0Ow0KLQlyZXR1cm4gTFpPX0VfRU9GX05PVF9GT1VORDsNCi0NCi1lb2Zf Zm91bmQ6DQotCSpvdXRfbGVuID0gb3AgLSBvdXQ7DQotCXJldHVybiAoaXAgPT0gaXBfZW5kID8g TFpPX0VfT0sgOg0KLQkJKGlwIDwgaXBfZW5kID8gTFpPX0VfSU5QVVRfTk9UX0NPTlNVTUVEIDog TFpPX0VfSU5QVVRfT1ZFUlJVTikpOw0KLWlucHV0X292ZXJydW46DQotCSpvdXRfbGVuID0gb3Ag LSBvdXQ7DQotCXJldHVybiBMWk9fRV9JTlBVVF9PVkVSUlVOOw0KLQ0KLW91dHB1dF9vdmVycnVu Og0KLQkqb3V0X2xlbiA9IG9wIC0gb3V0Ow0KLQlyZXR1cm4gTFpPX0VfT1VUUFVUX09WRVJSVU47 DQotDQotbG9va2JlaGluZF9vdmVycnVuOg0KLQkqb3V0X2xlbiA9IG9wIC0gb3V0Ow0KLQlyZXR1 cm4gTFpPX0VfTE9PS0JFSElORF9PVkVSUlVOOw0KLX0NCi0jaWZuZGVmIFNUQVRJQw0KLUVYUE9S VF9TWU1CT0xfR1BMKGx6bzF4X2RlY29tcHJlc3Nfc2FmZSk7DQotDQotTU9EVUxFX0xJQ0VOU0Uo IkdQTCIpOw0KLU1PRFVMRV9ERVNDUklQVElPTigiTFpPMVggRGVjb21wcmVzc29yIik7DQotDQot I2VuZGlmDQpkaWZmIC0tZ2l0IGEvbGliL2x6by9sem8xeF9kZWNvbXByZXNzX3NhZmUuYyBiL2xp Yi9sem8vbHpvMXhfZGVjb21wcmVzc19zYWZlLmMNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRl eCAwMDAwMDAwLi44NTYzMDgxDQotLS0gL2Rldi9udWxsDQorKysgYi9saWIvbHpvL2x6bzF4X2Rl Y29tcHJlc3Nfc2FmZS5jDQpAQCAtMCwwICsxLDI1NyBAQA0KKy8qDQorICogIExaTzFYIERlY29t cHJlc3NvciBmcm9tIExaTw0KKyAqDQorICogIENvcHlyaWdodCAoQykgMTk5Ni0yMDEyIE1hcmt1 cyBGLlguSi4gT2Jlcmh1bWVyIDxtYXJrdXNAb2Jlcmh1bWVyLmNvbT4NCisgKg0KKyAqICBUaGUg ZnVsbCBMWk8gcGFja2FnZSBjYW4gYmUgZm91bmQgYXQ6DQorICogIGh0dHA6Ly93d3cub2Jlcmh1 bWVyLmNvbS9vcGVuc291cmNlL2x6by8NCisgKg0KKyAqICBDaGFuZ2VkIGZvciBMaW51eCBrZXJu ZWwgdXNlIGJ5Og0KKyAqICBOaXRpbiBHdXB0YSA8bml0aW5ndXB0YTkxMEBnbWFpbC5jb20+DQor ICogIFJpY2hhcmQgUHVyZGllIDxycHVyZGllQG9wZW5lZGhhbmQuY29tPg0KKyAqLw0KKw0KKyNp Zm5kZWYgU1RBVElDDQorI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPg0KKyNpbmNsdWRlIDxsaW51 eC9rZXJuZWwuaD4NCisjZW5kaWYNCisjaW5jbHVkZSA8YXNtL3VuYWxpZ25lZC5oPg0KKyNpbmNs dWRlIDxsaW51eC9sem8uaD4NCisjaW5jbHVkZSAibHpvZGVmcy5oIg0KKw0KKyNkZWZpbmUgSEFW RV9JUCh0LCB4KQkJCQkJXA0KKwkoKChzaXplX3QpKGlwX2VuZCAtIGlwKSA+PSAoc2l6ZV90KSh0 ICsgeCkpICYmCVwNCisJICgoKHQgKyB4KSA+PSB0KSAmJiAoKHQgKyB4KSA+PSB4KSkpDQorDQor I2RlZmluZSBIQVZFX09QKHQsIHgpCQkJCQlcDQorCSgoKHNpemVfdCkob3BfZW5kIC0gb3ApID49 IChzaXplX3QpKHQgKyB4KSkgJiYJXA0KKwkgKCgodCArIHgpID49IHQpICYmICgodCArIHgpID49 IHgpKSkNCisNCisjZGVmaW5lIE5FRURfSVAodCwgeCkJCQkJCVwNCisJZG8gewkJCQkJCVwNCisJ CWlmICghSEFWRV9JUCh0LCB4KSkJCQlcDQorCQkJZ290byBpbnB1dF9vdmVycnVuOwkJXA0KKwl9 IHdoaWxlICgwKQ0KKw0KKyNkZWZpbmUgTkVFRF9PUCh0LCB4KQkJCQkJXA0KKwlkbyB7CQkJCQkJ XA0KKwkJaWYgKCFIQVZFX09QKHQsIHgpKQkJCVwNCisJCQlnb3RvIG91dHB1dF9vdmVycnVuOwkJ XA0KKwl9IHdoaWxlICgwKQ0KKw0KKyNkZWZpbmUgVEVTVF9MQihtX3BvcykJCQkJCVwNCisJZG8g ewkJCQkJCVwNCisJCWlmICgobV9wb3MpIDwgb3V0KQkJCVwNCisJCQlnb3RvIGxvb2tiZWhpbmRf b3ZlcnJ1bjsJXA0KKwl9IHdoaWxlICgwKQ0KKw0KK2ludCBsem8xeF9kZWNvbXByZXNzX3NhZmUo Y29uc3QgdW5zaWduZWQgY2hhciAqaW4sIHNpemVfdCBpbl9sZW4sDQorCQkJICB1bnNpZ25lZCBj aGFyICpvdXQsIHNpemVfdCAqb3V0X2xlbikNCit7DQorCXVuc2lnbmVkIGNoYXIgKm9wOw0KKwlj b25zdCB1bnNpZ25lZCBjaGFyICppcDsNCisJc2l6ZV90IHQsIG5leHQ7DQorCXNpemVfdCBzdGF0 ZSA9IDA7DQorCWNvbnN0IHVuc2lnbmVkIGNoYXIgKm1fcG9zOw0KKwljb25zdCB1bnNpZ25lZCBj aGFyICogY29uc3QgaXBfZW5kID0gaW4gKyBpbl9sZW47DQorCXVuc2lnbmVkIGNoYXIgKiBjb25z dCBvcF9lbmQgPSBvdXQgKyAqb3V0X2xlbjsNCisNCisJb3AgPSBvdXQ7DQorCWlwID0gaW47DQor DQorCWlmICh1bmxpa2VseShpbl9sZW4gPCAzKSkNCisJCWdvdG8gaW5wdXRfb3ZlcnJ1bjsNCisJ aWYgKCppcCA+IDE3KSB7DQorCQl0ID0gKmlwKysgLSAxNzsNCisJCWlmICh0IDwgNCkgew0KKwkJ CW5leHQgPSB0Ow0KKwkJCWdvdG8gbWF0Y2hfbmV4dDsNCisJCX0NCisJCWdvdG8gY29weV9saXRl cmFsX3J1bjsNCisJfQ0KKw0KKwlmb3IgKDs7KSB7DQorCQl0ID0gKmlwKys7DQorCQlpZiAodCA8 IDE2KSB7DQorCQkJaWYgKGxpa2VseShzdGF0ZSA9PSAwKSkgew0KKwkJCQlpZiAodW5saWtlbHko dCA9PSAwKSkgew0KKwkJCQkJd2hpbGUgKHVubGlrZWx5KCppcCA9PSAwKSkgew0KKwkJCQkJCXQg Kz0gMjU1Ow0KKwkJCQkJCWlwKys7DQorCQkJCQkJTkVFRF9JUCgxLCAwKTsNCisJCQkJCX0NCisJ CQkJCXQgKz0gMTUgKyAqaXArKzsNCisJCQkJfQ0KKwkJCQl0ICs9IDM7DQorY29weV9saXRlcmFs X3J1bjoNCisjaWYgZGVmaW5lZChDT05GSUdfSEFWRV9FRkZJQ0lFTlRfVU5BTElHTkVEX0FDQ0VT UykNCisJCQkJaWYgKGxpa2VseShIQVZFX0lQKHQsIDE1KSAmJiBIQVZFX09QKHQsIDE1KSkpIHsN CisJCQkJCWNvbnN0IHVuc2lnbmVkIGNoYXIgKmllID0gaXAgKyB0Ow0KKwkJCQkJdW5zaWduZWQg Y2hhciAqb2UgPSBvcCArIHQ7DQorCQkJCQlkbyB7DQorCQkJCQkJQ09QWTgob3AsIGlwKTsNCisJ CQkJCQlvcCArPSA4Ow0KKwkJCQkJCWlwICs9IDg7DQorCQkJCQkJQ09QWTgob3AsIGlwKTsNCisJ CQkJCQlvcCArPSA4Ow0KKwkJCQkJCWlwICs9IDg7DQorCQkJCQl9IHdoaWxlIChpcCA8IGllKTsN CisJCQkJCWlwID0gaWU7DQorCQkJCQlvcCA9IG9lOw0KKwkJCQl9IGVsc2UNCisjZW5kaWYNCisJ CQkJew0KKwkJCQkJTkVFRF9PUCh0LCAwKTsNCisJCQkJCU5FRURfSVAodCwgMyk7DQorCQkJCQlk byB7DQorCQkJCQkJKm9wKysgPSAqaXArKzsNCisJCQkJCX0gd2hpbGUgKC0tdCA+IDApOw0KKwkJ CQl9DQorCQkJCXN0YXRlID0gNDsNCisJCQkJY29udGludWU7DQorCQkJfSBlbHNlIGlmIChzdGF0 ZSAhPSA0KSB7DQorCQkJCW5leHQgPSB0ICYgMzsNCisJCQkJbV9wb3MgPSBvcCAtIDE7DQorCQkJ CW1fcG9zIC09IHQgPj4gMjsNCisJCQkJbV9wb3MgLT0gKmlwKysgPDwgMjsNCisJCQkJVEVTVF9M QihtX3Bvcyk7DQorCQkJCU5FRURfT1AoMiwgMCk7DQorCQkJCW9wWzBdID0gbV9wb3NbMF07DQor CQkJCW9wWzFdID0gbV9wb3NbMV07DQorCQkJCW9wICs9IDI7DQorCQkJCWdvdG8gbWF0Y2hfbmV4 dDsNCisJCQl9IGVsc2Ugew0KKwkJCQluZXh0ID0gdCAmIDM7DQorCQkJCW1fcG9zID0gb3AgLSAo MSArIE0yX01BWF9PRkZTRVQpOw0KKwkJCQltX3BvcyAtPSB0ID4+IDI7DQorCQkJCW1fcG9zIC09 ICppcCsrIDw8IDI7DQorCQkJCXQgPSAzOw0KKwkJCX0NCisJCX0gZWxzZSBpZiAodCA+PSA2NCkg ew0KKwkJCW5leHQgPSB0ICYgMzsNCisJCQltX3BvcyA9IG9wIC0gMTsNCisJCQltX3BvcyAtPSAo dCA+PiAyKSAmIDc7DQorCQkJbV9wb3MgLT0gKmlwKysgPDwgMzsNCisJCQl0ID0gKHQgPj4gNSkg LSAxICsgKDMgLSAxKTsNCisJCX0gZWxzZSBpZiAodCA+PSAzMikgew0KKwkJCXQgPSAodCAmIDMx KSArICgzIC0gMSk7DQorCQkJaWYgKHVubGlrZWx5KHQgPT0gMikpIHsNCisJCQkJd2hpbGUgKHVu bGlrZWx5KCppcCA9PSAwKSkgew0KKwkJCQkJdCArPSAyNTU7DQorCQkJCQlpcCsrOw0KKwkJCQkJ TkVFRF9JUCgxLCAwKTsNCisJCQkJfQ0KKwkJCQl0ICs9IDMxICsgKmlwKys7DQorCQkJCU5FRURf SVAoMiwgMCk7DQorCQkJfQ0KKwkJCW1fcG9zID0gb3AgLSAxOw0KKwkJCW5leHQgPSBnZXRfdW5h bGlnbmVkX2xlMTYoaXApOw0KKwkJCWlwICs9IDI7DQorCQkJbV9wb3MgLT0gbmV4dCA+PiAyOw0K KwkJCW5leHQgJj0gMzsNCisJCX0gZWxzZSB7DQorCQkJbV9wb3MgPSBvcDsNCisJCQltX3BvcyAt PSAodCAmIDgpIDw8IDExOw0KKwkJCXQgPSAodCAmIDcpICsgKDMgLSAxKTsNCisJCQlpZiAodW5s aWtlbHkodCA9PSAyKSkgew0KKwkJCQl3aGlsZSAodW5saWtlbHkoKmlwID09IDApKSB7DQorCQkJ CQl0ICs9IDI1NTsNCisJCQkJCWlwKys7DQorCQkJCQlORUVEX0lQKDEsIDApOw0KKwkJCQl9DQor CQkJCXQgKz0gNyArICppcCsrOw0KKwkJCQlORUVEX0lQKDIsIDApOw0KKwkJCX0NCisJCQluZXh0 ID0gZ2V0X3VuYWxpZ25lZF9sZTE2KGlwKTsNCisJCQlpcCArPSAyOw0KKwkJCW1fcG9zIC09IG5l eHQgPj4gMjsNCisJCQluZXh0ICY9IDM7DQorCQkJaWYgKG1fcG9zID09IG9wKQ0KKwkJCQlnb3Rv IGVvZl9mb3VuZDsNCisJCQltX3BvcyAtPSAweDQwMDA7DQorCQl9DQorCQlURVNUX0xCKG1fcG9z KTsNCisjaWYgZGVmaW5lZChDT05GSUdfSEFWRV9FRkZJQ0lFTlRfVU5BTElHTkVEX0FDQ0VTUykN CisJCWlmIChvcCAtIG1fcG9zID49IDgpIHsNCisJCQl1bnNpZ25lZCBjaGFyICpvZSA9IG9wICsg dDsNCisJCQlpZiAobGlrZWx5KEhBVkVfT1AodCwgMTUpKSkgew0KKwkJCQlkbyB7DQorCQkJCQlD T1BZOChvcCwgbV9wb3MpOw0KKwkJCQkJb3AgKz0gODsNCisJCQkJCW1fcG9zICs9IDg7DQorCQkJ CQlDT1BZOChvcCwgbV9wb3MpOw0KKwkJCQkJb3AgKz0gODsNCisJCQkJCW1fcG9zICs9IDg7DQor CQkJCX0gd2hpbGUgKG9wIDwgb2UpOw0KKwkJCQlvcCA9IG9lOw0KKwkJCQlpZiAoSEFWRV9JUCg2 LCAwKSkgew0KKwkJCQkJc3RhdGUgPSBuZXh0Ow0KKwkJCQkJQ09QWTQob3AsIGlwKTsNCisJCQkJ CW9wICs9IG5leHQ7DQorCQkJCQlpcCArPSBuZXh0Ow0KKwkJCQkJY29udGludWU7DQorCQkJCX0N CisJCQl9IGVsc2Ugew0KKwkJCQlORUVEX09QKHQsIDApOw0KKwkJCQlkbyB7DQorCQkJCQkqb3Ar KyA9ICptX3BvcysrOw0KKwkJCQl9IHdoaWxlIChvcCA8IG9lKTsNCisJCQl9DQorCQl9IGVsc2UN CisjZW5kaWYNCisJCXsNCisJCQl1bnNpZ25lZCBjaGFyICpvZSA9IG9wICsgdDsNCisJCQlORUVE X09QKHQsIDApOw0KKwkJCW9wWzBdID0gbV9wb3NbMF07DQorCQkJb3BbMV0gPSBtX3Bvc1sxXTsN CisJCQlvcCArPSAyOw0KKwkJCW1fcG9zICs9IDI7DQorCQkJZG8gew0KKwkJCQkqb3ArKyA9ICpt X3BvcysrOw0KKwkJCX0gd2hpbGUgKG9wIDwgb2UpOw0KKwkJfQ0KK21hdGNoX25leHQ6DQorCQlz dGF0ZSA9IG5leHQ7DQorCQl0ID0gbmV4dDsNCisjaWYgZGVmaW5lZChDT05GSUdfSEFWRV9FRkZJ Q0lFTlRfVU5BTElHTkVEX0FDQ0VTUykNCisJCWlmIChsaWtlbHkoSEFWRV9JUCg2LCAwKSAmJiBI QVZFX09QKDQsIDApKSkgew0KKwkJCUNPUFk0KG9wLCBpcCk7DQorCQkJb3AgKz0gdDsNCisJCQlp cCArPSB0Ow0KKwkJfSBlbHNlDQorI2VuZGlmDQorCQl7DQorCQkJTkVFRF9JUCh0LCAzKTsNCisJ CQlORUVEX09QKHQsIDApOw0KKwkJCXdoaWxlICh0ID4gMCkgew0KKwkJCQkqb3ArKyA9ICppcCsr Ow0KKwkJCQl0LS07DQorCQkJfQ0KKwkJfQ0KKwl9DQorDQorZW9mX2ZvdW5kOg0KKwkqb3V0X2xl biA9IG9wIC0gb3V0Ow0KKwlyZXR1cm4gKHQgIT0gMyAgICAgICA/IExaT19FX0VSUk9SIDoNCisJ CWlwID09IGlwX2VuZCA/IExaT19FX09LIDoNCisJCWlwIDwgIGlwX2VuZCA/IExaT19FX0lOUFVU X05PVF9DT05TVU1FRCA6IExaT19FX0lOUFVUX09WRVJSVU4pOw0KKw0KK2lucHV0X292ZXJydW46 DQorCSpvdXRfbGVuID0gb3AgLSBvdXQ7DQorCXJldHVybiBMWk9fRV9JTlBVVF9PVkVSUlVOOw0K Kw0KK291dHB1dF9vdmVycnVuOg0KKwkqb3V0X2xlbiA9IG9wIC0gb3V0Ow0KKwlyZXR1cm4gTFpP X0VfT1VUUFVUX09WRVJSVU47DQorDQorbG9va2JlaGluZF9vdmVycnVuOg0KKwkqb3V0X2xlbiA9 IG9wIC0gb3V0Ow0KKwlyZXR1cm4gTFpPX0VfTE9PS0JFSElORF9PVkVSUlVOOw0KK30NCisjaWZu ZGVmIFNUQVRJQw0KK0VYUE9SVF9TWU1CT0xfR1BMKGx6bzF4X2RlY29tcHJlc3Nfc2FmZSk7DQor DQorTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOw0KK01PRFVMRV9ERVNDUklQVElPTigiTFpPMVggRGVj b21wcmVzc29yIik7DQorDQorI2VuZGlmDQpkaWZmIC0tZ2l0IGEvbGliL2x6by9sem9kZWZzLmgg Yi9saWIvbHpvL2x6b2RlZnMuaA0KaW5kZXggYjZkNDgyYy4uNjcxMGI4MyAxMDA2NDQNCi0tLSBh L2xpYi9sem8vbHpvZGVmcy5oDQorKysgYi9saWIvbHpvL2x6b2RlZnMuaA0KQEAgLTEsMTkgKzEs MzcgQEANCiAvKg0KICAqICBsem9kZWZzLmggLS0gYXJjaGl0ZWN0dXJlLCBPUyBhbmQgY29tcGls ZXIgc3BlY2lmaWMgZGVmaW5lcw0KICAqDQotICogIENvcHlyaWdodCAoQykgMTk5Ni0yMDA1IE1h cmt1cyBGLlguSi4gT2Jlcmh1bWVyIDxtYXJrdXNAb2Jlcmh1bWVyLmNvbT4NCisgKiAgQ29weXJp Z2h0IChDKSAxOTk2LTIwMTIgTWFya3VzIEYuWC5KLiBPYmVyaHVtZXIgPG1hcmt1c0BvYmVyaHVt ZXIuY29tPg0KICAqDQogICogIFRoZSBmdWxsIExaTyBwYWNrYWdlIGNhbiBiZSBmb3VuZCBhdDoN CiAgKiAgaHR0cDovL3d3dy5vYmVyaHVtZXIuY29tL29wZW5zb3VyY2UvbHpvLw0KICAqDQotICog IENoYW5nZWQgZm9yIGtlcm5lbCB1c2UgYnk6DQorICogIENoYW5nZWQgZm9yIExpbnV4IGtlcm5l bCB1c2UgYnk6DQogICogIE5pdGluIEd1cHRhIDxuaXRpbmd1cHRhOTEwQGdtYWlsLmNvbT4NCiAg KiAgUmljaGFyZCBQdXJkaWUgPHJwdXJkaWVAb3BlbmVkaGFuZC5jb20+DQogICovDQogDQotI2Rl ZmluZSBMWk9fVkVSU0lPTgkJMHgyMDIwDQotI2RlZmluZSBMWk9fVkVSU0lPTl9TVFJJTkcJIjIu MDIiDQotI2RlZmluZSBMWk9fVkVSU0lPTl9EQVRFCSJPY3QgMTcgMjAwNSINCisNCisjZGVmaW5l IENPUFk0KGRzdCwgc3JjKQlcDQorCQlwdXRfdW5hbGlnbmVkKGdldF91bmFsaWduZWQoKGNvbnN0 IHUzMiAqKShzcmMpKSwgKHUzMiAqKShkc3QpKQ0KKyNpZiBkZWZpbmVkKF9feDg2XzY0X18pDQor I2RlZmluZSBDT1BZOChkc3QsIHNyYykJXA0KKwkJcHV0X3VuYWxpZ25lZChnZXRfdW5hbGlnbmVk KChjb25zdCB1NjQgKikoc3JjKSksICh1NjQgKikoZHN0KSkNCisjZWxzZQ0KKyNkZWZpbmUgQ09Q WTgoZHN0LCBzcmMpCVwNCisJCUNPUFk0KGRzdCwgc3JjKTsgQ09QWTQoKGRzdCkgKyA0LCAoc3Jj KSArIDQpDQorI2VuZGlmDQorDQorI2lmIGRlZmluZWQoX19CSUdfRU5ESUFOKSAmJiBkZWZpbmVk KF9fTElUVExFX0VORElBTikNCisjZXJyb3IgImNvbmZsaWN0aW5nIGVuZGlhbiBkZWZpbml0aW9u cyINCisjZWxpZiBkZWZpbmVkKF9feDg2XzY0X18pDQorI2RlZmluZSBMWk9fVVNFX0NUWjY0CTEN CisjZGVmaW5lIExaT19VU0VfQ1RaMzIJMQ0KKyNlbGlmIGRlZmluZWQoX19pMzg2X18pIHx8IGRl ZmluZWQoX19wb3dlcnBjX18pDQorI2RlZmluZSBMWk9fVVNFX0NUWjMyCTENCisjZWxpZiBkZWZp bmVkKF9fYXJtX18pICYmIChfX0xJTlVYX0FSTV9BUkNIX18gPj0gNSkNCisjZGVmaW5lIExaT19V U0VfQ1RaMzIJMQ0KKyNlbmRpZg0KIA0KICNkZWZpbmUgTTFfTUFYX09GRlNFVAkweDA0MDANCiAj ZGVmaW5lIE0yX01BWF9PRkZTRVQJMHgwODAwDQpAQCAtMzQsMTAgKzUyLDggQEANCiAjZGVmaW5l IE0zX01BUktFUgkzMg0KICNkZWZpbmUgTTRfTUFSS0VSCTE2DQogDQotI2RlZmluZSBEX0JJVFMJ CTE0DQotI2RlZmluZSBEX01BU0sJCSgoMXUgPDwgRF9CSVRTKSAtIDEpDQorI2RlZmluZSBsem9f ZGljdF90ICAgICAgdW5zaWduZWQgc2hvcnQNCisjZGVmaW5lIERfQklUUwkJMTMNCisjZGVmaW5l IERfU0laRQkJKDF1IDw8IERfQklUUykNCisjZGVmaW5lIERfTUFTSwkJKERfU0laRSAtIDEpDQog I2RlZmluZSBEX0hJR0gJCSgoRF9NQVNLID4+IDEpICsgMSkNCi0NCi0jZGVmaW5lIERYMihwLCBz MSwgczIpCSgoKCgoc2l6ZV90KSgocClbMl0pIDw8IChzMikpIF4gKHApWzFdKSBcDQotCQkJCQkJ CTw8IChzMSkpIF4gKHApWzBdKQ0KLSNkZWZpbmUgRFgzKHAsIHMxLCBzMiwgczMpCSgoRFgyKChw KSsxLCBzMiwgczMpIDw8IChzMSkpIF4gKHApWzBdKQ0KZGlmZiAtLWdpdCBhL2xpYi9ubGF0dHIu YyBiL2xpYi9ubGF0dHIuYw0KaW5kZXggMTkwYWUxMC4uNTIxYTlkZiAxMDA2NDQNCi0tLSBhL2xp Yi9ubGF0dHIuYw0KKysrIGIvbGliL25sYXR0ci5jDQpAQCAtMTIsNiArMTIsNyBAQA0KICNpbmNs dWRlIDxsaW51eC9uZXRkZXZpY2UuaD4NCiAjaW5jbHVkZSA8bGludXgvc2tidWZmLmg+DQogI2lu Y2x1ZGUgPGxpbnV4L3N0cmluZy5oPg0KKyNpbmNsdWRlIDxsaW51eC9yYXRlbGltaXQuaD4NCiAj aW5jbHVkZSA8bGludXgvdHlwZXMuaD4NCiAjaW5jbHVkZSA8bmV0L25ldGxpbmsuaD4NCiANCkBA IC0xOTcsOCArMTk4LDggQEAgaW50IG5sYV9wYXJzZShzdHJ1Y3QgbmxhdHRyICoqdGIsIGludCBt YXh0eXBlLCBjb25zdCBzdHJ1Y3QgbmxhdHRyICpoZWFkLA0KIAl9DQogDQogCWlmICh1bmxpa2Vs eShyZW0gPiAwKSkNCi0JCXByaW50ayhLRVJOX1dBUk5JTkcgIm5ldGxpbms6ICVkIGJ5dGVzIGxl ZnRvdmVyIGFmdGVyIHBhcnNpbmcgIg0KLQkJICAgICAgICJhdHRyaWJ1dGVzLlxuIiwgcmVtKTsN CisJCXByX3dhcm5fcmF0ZWxpbWl0ZWQoIm5ldGxpbms6ICVkIGJ5dGVzIGxlZnRvdmVyIGFmdGVy IHBhcnNpbmcgYXR0cmlidXRlcyBpbiBwcm9jZXNzIGAlcycuXG4iLA0KKwkJCQkgICAgcmVtLCBj dXJyZW50LT5jb21tKTsNCiANCiAJZXJyID0gMDsNCiBlcnJvdXQ6DQpkaWZmIC0tZ2l0IGEvbW0v aGlnaG1lbS5jIGIvbW0vaGlnaG1lbS5jDQppbmRleCAyYTA3Zjk3Li4wOWZjNzQ0IDEwMDY0NA0K LS0tIGEvbW0vaGlnaG1lbS5jDQorKysgYi9tbS9oaWdobWVtLmMNCkBAIC05OCw3ICs5OCw3IEBA IHN0cnVjdCBwYWdlICprbWFwX3RvX3BhZ2Uodm9pZCAqdmFkZHIpDQogew0KIAl1bnNpZ25lZCBs b25nIGFkZHIgPSAodW5zaWduZWQgbG9uZyl2YWRkcjsNCiANCi0JaWYgKGFkZHIgPj0gUEtNQVBf QUREUigwKSAmJiBhZGRyIDw9IFBLTUFQX0FERFIoTEFTVF9QS01BUCkpIHsNCisJaWYgKGFkZHIg Pj0gUEtNQVBfQUREUigwKSAmJiBhZGRyIDwgUEtNQVBfQUREUihMQVNUX1BLTUFQKSkgew0KIAkJ aW50IGkgPSAoYWRkciAtIFBLTUFQX0FERFIoMCkpID4+IFBBR0VfU0hJRlQ7DQogCQlyZXR1cm4g cHRlX3BhZ2UocGttYXBfcGFnZV90YWJsZVtpXSk7DQogCX0NCmRpZmYgLS1naXQgYS9tbS9odWdl dGxiLmMgYi9tbS9odWdldGxiLmMNCmluZGV4IGNhYzI0NDEuLjZmODg2ZDkgMTAwNjQ0DQotLS0g YS9tbS9odWdldGxiLmMNCisrKyBiL21tL2h1Z2V0bGIuYw0KQEAgLTIyNzIsNiArMjI3MiwzMSBA QCBzdGF0aWMgdm9pZCBzZXRfaHVnZV9wdGVwX3dyaXRhYmxlKHN0cnVjdCB2bV9hcmVhX3N0cnVj dCAqdm1hLA0KIAkJdXBkYXRlX21tdV9jYWNoZSh2bWEsIGFkZHJlc3MsIHB0ZXApOw0KIH0NCiAN CitzdGF0aWMgaW50IGlzX2h1Z2V0bGJfZW50cnlfbWlncmF0aW9uKHB0ZV90IHB0ZSkNCit7DQor CXN3cF9lbnRyeV90IHN3cDsNCisNCisJaWYgKGh1Z2VfcHRlX25vbmUocHRlKSB8fCBwdGVfcHJl c2VudChwdGUpKQ0KKwkJcmV0dXJuIDA7DQorCXN3cCA9IHB0ZV90b19zd3BfZW50cnkocHRlKTsN CisJaWYgKG5vbl9zd2FwX2VudHJ5KHN3cCkgJiYgaXNfbWlncmF0aW9uX2VudHJ5KHN3cCkpDQor CQlyZXR1cm4gMTsNCisJZWxzZQ0KKwkJcmV0dXJuIDA7DQorfQ0KKw0KK3N0YXRpYyBpbnQgaXNf aHVnZXRsYl9lbnRyeV9od3BvaXNvbmVkKHB0ZV90IHB0ZSkNCit7DQorCXN3cF9lbnRyeV90IHN3 cDsNCisNCisJaWYgKGh1Z2VfcHRlX25vbmUocHRlKSB8fCBwdGVfcHJlc2VudChwdGUpKQ0KKwkJ cmV0dXJuIDA7DQorCXN3cCA9IHB0ZV90b19zd3BfZW50cnkocHRlKTsNCisJaWYgKG5vbl9zd2Fw X2VudHJ5KHN3cCkgJiYgaXNfaHdwb2lzb25fZW50cnkoc3dwKSkNCisJCXJldHVybiAxOw0KKwll bHNlDQorCQlyZXR1cm4gMDsNCit9DQogDQogaW50IGNvcHlfaHVnZXRsYl9wYWdlX3JhbmdlKHN0 cnVjdCBtbV9zdHJ1Y3QgKmRzdCwgc3RydWN0IG1tX3N0cnVjdCAqc3JjLA0KIAkJCSAgICBzdHJ1 Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSkNCkBAIC0yMjk5LDEwICsyMzI0LDI2IEBAIGludCBjb3B5 X2h1Z2V0bGJfcGFnZV9yYW5nZShzdHJ1Y3QgbW1fc3RydWN0ICpkc3QsIHN0cnVjdCBtbV9zdHJ1 Y3QgKnNyYywNCiANCiAJCXNwaW5fbG9jaygmZHN0LT5wYWdlX3RhYmxlX2xvY2spOw0KIAkJc3Bp bl9sb2NrX25lc3RlZCgmc3JjLT5wYWdlX3RhYmxlX2xvY2ssIFNJTkdMRV9ERVBUSF9ORVNUSU5H KTsNCi0JCWlmICghaHVnZV9wdGVfbm9uZShodWdlX3B0ZXBfZ2V0KHNyY19wdGUpKSkgew0KKwkJ ZW50cnkgPSBodWdlX3B0ZXBfZ2V0KHNyY19wdGUpOw0KKwkJaWYgKGh1Z2VfcHRlX25vbmUoZW50 cnkpKSB7IC8qIHNraXAgbm9uZSBlbnRyeSAqLw0KKwkJCTsNCisJCX0gZWxzZSBpZiAodW5saWtl bHkoaXNfaHVnZXRsYl9lbnRyeV9taWdyYXRpb24oZW50cnkpIHx8DQorCQkJCSAgICBpc19odWdl dGxiX2VudHJ5X2h3cG9pc29uZWQoZW50cnkpKSkgew0KKwkJCXN3cF9lbnRyeV90IHN3cF9lbnRy eSA9IHB0ZV90b19zd3BfZW50cnkoZW50cnkpOw0KKw0KKwkJCWlmIChpc193cml0ZV9taWdyYXRp b25fZW50cnkoc3dwX2VudHJ5KSAmJiBjb3cpIHsNCisJCQkJLyoNCisJCQkJICogQ09XIG1hcHBp bmdzIHJlcXVpcmUgcGFnZXMgaW4gYm90aA0KKwkJCQkgKiBwYXJlbnQgYW5kIGNoaWxkIHRvIGJl IHNldCB0byByZWFkLg0KKwkJCQkgKi8NCisJCQkJbWFrZV9taWdyYXRpb25fZW50cnlfcmVhZCgm c3dwX2VudHJ5KTsNCisJCQkJZW50cnkgPSBzd3BfZW50cnlfdG9fcHRlKHN3cF9lbnRyeSk7DQor CQkJCXNldF9odWdlX3B0ZV9hdChzcmMsIGFkZHIsIHNyY19wdGUsIGVudHJ5KTsNCisJCQl9DQor CQkJc2V0X2h1Z2VfcHRlX2F0KGRzdCwgYWRkciwgZHN0X3B0ZSwgZW50cnkpOw0KKwkJfSBlbHNl IHsNCiAJCQlpZiAoY293KQ0KIAkJCQlodWdlX3B0ZXBfc2V0X3dycHJvdGVjdChzcmMsIGFkZHIs IHNyY19wdGUpOw0KLQkJCWVudHJ5ID0gaHVnZV9wdGVwX2dldChzcmNfcHRlKTsNCiAJCQlwdGVw YWdlID0gcHRlX3BhZ2UoZW50cnkpOw0KIAkJCWdldF9wYWdlKHB0ZXBhZ2UpOw0KIAkJCXBhZ2Vf ZHVwX3JtYXAocHRlcGFnZSk7DQpAQCAtMjMxNywzMiArMjM1OCw2IEBAIG5vbWVtOg0KIAlyZXR1 cm4gLUVOT01FTTsNCiB9DQogDQotc3RhdGljIGludCBpc19odWdldGxiX2VudHJ5X21pZ3JhdGlv bihwdGVfdCBwdGUpDQotew0KLQlzd3BfZW50cnlfdCBzd3A7DQotDQotCWlmIChodWdlX3B0ZV9u b25lKHB0ZSkgfHwgcHRlX3ByZXNlbnQocHRlKSkNCi0JCXJldHVybiAwOw0KLQlzd3AgPSBwdGVf dG9fc3dwX2VudHJ5KHB0ZSk7DQotCWlmIChub25fc3dhcF9lbnRyeShzd3ApICYmIGlzX21pZ3Jh dGlvbl9lbnRyeShzd3ApKQ0KLQkJcmV0dXJuIDE7DQotCWVsc2UNCi0JCXJldHVybiAwOw0KLX0N Ci0NCi1zdGF0aWMgaW50IGlzX2h1Z2V0bGJfZW50cnlfaHdwb2lzb25lZChwdGVfdCBwdGUpDQot ew0KLQlzd3BfZW50cnlfdCBzd3A7DQotDQotCWlmIChodWdlX3B0ZV9ub25lKHB0ZSkgfHwgcHRl X3ByZXNlbnQocHRlKSkNCi0JCXJldHVybiAwOw0KLQlzd3AgPSBwdGVfdG9fc3dwX2VudHJ5KHB0 ZSk7DQotCWlmIChub25fc3dhcF9lbnRyeShzd3ApICYmIGlzX2h3cG9pc29uX2VudHJ5KHN3cCkp DQotCQlyZXR1cm4gMTsNCi0JZWxzZQ0KLQkJcmV0dXJuIDA7DQotfQ0KLQ0KIHZvaWQgX191bm1h cF9odWdlcGFnZV9yYW5nZShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9u ZyBzdGFydCwNCiAJCQkgICAgdW5zaWduZWQgbG9uZyBlbmQsIHN0cnVjdCBwYWdlICpyZWZfcGFn ZSkNCiB7DQpkaWZmIC0tZ2l0IGEvbW0vbWVtcG9saWN5LmMgYi9tbS9tZW1wb2xpY3kuYw0KaW5k ZXggNGQxZTYzNy4uMmI1YmNjOSAxMDA2NDQNCi0tLSBhL21tL21lbXBvbGljeS5jDQorKysgYi9t bS9tZW1wb2xpY3kuYw0KQEAgLTU2NiwyNCArNTY2LDIzIEBAIHN0YXRpYyBpbmxpbmUgaW50IGNo ZWNrX3BnZF9yYW5nZShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwNCiAgKiBJZiBwYWdlbGlz dCAhPSBOVUxMIHRoZW4gaXNvbGF0ZSBwYWdlcyBmcm9tIHRoZSBMUlUgYW5kDQogICogcHV0IHRo ZW0gb24gdGhlIHBhZ2VsaXN0Lg0KICAqLw0KLXN0YXRpYyBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3Qg Kg0KK3N0YXRpYyBpbnQNCiBjaGVja19yYW5nZShzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWdu ZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQsDQogCQljb25zdCBub2RlbWFza190ICpu b2RlcywgdW5zaWduZWQgbG9uZyBmbGFncywgdm9pZCAqcHJpdmF0ZSkNCiB7DQotCWludCBlcnI7 DQotCXN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqZmlyc3QsICp2bWEsICpwcmV2Ow0KLQ0KKwlpbnQg ZXJyID0gMDsNCisJc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsICpwcmV2Ow0KIA0KLQlmaXJz dCA9IGZpbmRfdm1hKG1tLCBzdGFydCk7DQotCWlmICghZmlyc3QpDQotCQlyZXR1cm4gRVJSX1BU UigtRUZBVUxUKTsNCisJdm1hID0gZmluZF92bWEobW0sIHN0YXJ0KTsNCisJaWYgKCF2bWEpDQor CQlyZXR1cm4gLUVGQVVMVDsNCiAJcHJldiA9IE5VTEw7DQotCWZvciAodm1hID0gZmlyc3Q7IHZt YSAmJiB2bWEtPnZtX3N0YXJ0IDwgZW5kOyB2bWEgPSB2bWEtPnZtX25leHQpIHsNCisJZm9yICg7 IHZtYSAmJiB2bWEtPnZtX3N0YXJ0IDwgZW5kOyB2bWEgPSB2bWEtPnZtX25leHQpIHsNCiAJCWlm ICghKGZsYWdzICYgTVBPTF9NRl9ESVNDT05USUdfT0spKSB7DQogCQkJaWYgKCF2bWEtPnZtX25l eHQgJiYgdm1hLT52bV9lbmQgPCBlbmQpDQotCQkJCXJldHVybiBFUlJfUFRSKC1FRkFVTFQpOw0K KwkJCQlyZXR1cm4gLUVGQVVMVDsNCiAJCQlpZiAocHJldiAmJiBwcmV2LT52bV9lbmQgPCB2bWEt PnZtX3N0YXJ0KQ0KLQkJCQlyZXR1cm4gRVJSX1BUUigtRUZBVUxUKTsNCisJCQkJcmV0dXJuIC1F RkFVTFQ7DQogCQl9DQogCQlpZiAoIWlzX3ZtX2h1Z2V0bGJfcGFnZSh2bWEpICYmDQogCQkgICAg KChmbGFncyAmIE1QT0xfTUZfU1RSSUNUKSB8fA0KQEAgLTU5NywxNCArNTk2LDEyIEBAIGNoZWNr X3JhbmdlKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCB1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25l ZCBsb25nIGVuZCwNCiAJCQkJc3RhcnQgPSB2bWEtPnZtX3N0YXJ0Ow0KIAkJCWVyciA9IGNoZWNr X3BnZF9yYW5nZSh2bWEsIHN0YXJ0LCBlbmR2bWEsIG5vZGVzLA0KIAkJCQkJCWZsYWdzLCBwcml2 YXRlKTsNCi0JCQlpZiAoZXJyKSB7DQotCQkJCWZpcnN0ID0gRVJSX1BUUihlcnIpOw0KKwkJCWlm IChlcnIpDQogCQkJCWJyZWFrOw0KLQkJCX0NCiAJCX0NCiAJCXByZXYgPSB2bWE7DQogCX0NCi0J cmV0dXJuIGZpcnN0Ow0KKwlyZXR1cm4gZXJyOw0KIH0NCiANCiAvKg0KQEAgLTk0NSwxNSArOTQy LDE4IEBAIHN0YXRpYyBpbnQgbWlncmF0ZV90b19ub2RlKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCBp bnQgc291cmNlLCBpbnQgZGVzdCwNCiAJbm9kZW1hc2tfdCBubWFzazsNCiAJTElTVF9IRUFEKHBh Z2VsaXN0KTsNCiAJaW50IGVyciA9IDA7DQotCXN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hOw0K IA0KIAlub2Rlc19jbGVhcihubWFzayk7DQogCW5vZGVfc2V0KHNvdXJjZSwgbm1hc2spOw0KIA0K LQl2bWEgPSBjaGVja19yYW5nZShtbSwgbW0tPm1tYXAtPnZtX3N0YXJ0LCBtbS0+dGFza19zaXpl LCAmbm1hc2ssDQorCS8qDQorCSAqIFRoaXMgZG9lcyBub3QgImNoZWNrIiB0aGUgcmFuZ2UgYnV0 IGlzb2xhdGVzIGFsbCBwYWdlcyB0aGF0DQorCSAqIG5lZWQgbWlncmF0aW9uLiAgQmV0d2VlbiBw YXNzaW5nIGluIHRoZSBmdWxsIHVzZXIgYWRkcmVzcw0KKwkgKiBzcGFjZSByYW5nZSBhbmQgTVBP TF9NRl9ESVNDT05USUdfT0ssIHRoaXMgY2FsbCBjYW4gbm90IGZhaWwuDQorCSAqLw0KKwlWTV9C VUdfT04oIShmbGFncyAmIChNUE9MX01GX01PVkUgfCBNUE9MX01GX01PVkVfQUxMKSkpOw0KKwlj aGVja19yYW5nZShtbSwgbW0tPm1tYXAtPnZtX3N0YXJ0LCBtbS0+dGFza19zaXplLCAmbm1hc2ss DQogCQkJZmxhZ3MgfCBNUE9MX01GX0RJU0NPTlRJR19PSywgJnBhZ2VsaXN0KTsNCi0JaWYgKElT X0VSUih2bWEpKQ0KLQkJcmV0dXJuIFBUUl9FUlIodm1hKTsNCiANCiAJaWYgKCFsaXN0X2VtcHR5 KCZwYWdlbGlzdCkpIHsNCiAJCWVyciA9IG1pZ3JhdGVfcGFnZXMoJnBhZ2VsaXN0LCBuZXdfbm9k ZV9wYWdlLCBkZXN0LA0KQEAgLTEwNTcsMTYgKzEwNTcsMTcgQEAgb3V0Og0KIA0KIC8qDQogICog QWxsb2NhdGUgYSBuZXcgcGFnZSBmb3IgcGFnZSBtaWdyYXRpb24gYmFzZWQgb24gdm1hIHBvbGlj eS4NCi0gKiBTdGFydCBhc3N1bWluZyB0aGF0IHBhZ2UgaXMgbWFwcGVkIGJ5IHZtYSBwb2ludGVk IHRvIGJ5IEBwcml2YXRlLg0KKyAqIFN0YXJ0IGJ5IGFzc3VtaW5nIHRoZSBwYWdlIGlzIG1hcHBl ZCBieSB0aGUgc2FtZSB2bWEgYXMgY29udGFpbnMgQHN0YXJ0Lg0KICAqIFNlYXJjaCBmb3J3YXJk IGZyb20gdGhlcmUsIGlmIG5vdC4gIE4uQi4sIHRoaXMgYXNzdW1lcyB0aGF0IHRoZQ0KICAqIGxp c3Qgb2YgcGFnZXMgaGFuZGVkIHRvIG1pZ3JhdGVfcGFnZXMoKS0td2hpY2ggaXMgaG93IHdlIGdl dCBoZXJlLS0NCiAgKiBpcyBpbiB2aXJ0dWFsIGFkZHJlc3Mgb3JkZXIuDQogICovDQotc3RhdGlj IHN0cnVjdCBwYWdlICpuZXdfdm1hX3BhZ2Uoc3RydWN0IHBhZ2UgKnBhZ2UsIHVuc2lnbmVkIGxv bmcgcHJpdmF0ZSwgaW50ICoqeCkNCitzdGF0aWMgc3RydWN0IHBhZ2UgKm5ld19wYWdlKHN0cnVj dCBwYWdlICpwYWdlLCB1bnNpZ25lZCBsb25nIHN0YXJ0LCBpbnQgKip4KQ0KIHsNCi0Jc3RydWN0 IHZtX2FyZWFfc3RydWN0ICp2bWEgPSAoc3RydWN0IHZtX2FyZWFfc3RydWN0ICopcHJpdmF0ZTsN CisJc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWE7DQogCXVuc2lnbmVkIGxvbmcgdW5pbml0aWFs aXplZF92YXIoYWRkcmVzcyk7DQogDQorCXZtYSA9IGZpbmRfdm1hKGN1cnJlbnQtPm1tLCBzdGFy dCk7DQogCXdoaWxlICh2bWEpIHsNCiAJCWFkZHJlc3MgPSBwYWdlX2FkZHJlc3NfaW5fdm1hKHBh Z2UsIHZtYSk7DQogCQlpZiAoYWRkcmVzcyAhPSAtRUZBVUxUKQ0KQEAgLTEwOTIsNyArMTA5Myw3 IEBAIGludCBkb19taWdyYXRlX3BhZ2VzKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLA0KIAlyZXR1cm4g LUVOT1NZUzsNCiB9DQogDQotc3RhdGljIHN0cnVjdCBwYWdlICpuZXdfdm1hX3BhZ2Uoc3RydWN0 IHBhZ2UgKnBhZ2UsIHVuc2lnbmVkIGxvbmcgcHJpdmF0ZSwgaW50ICoqeCkNCitzdGF0aWMgc3Ry dWN0IHBhZ2UgKm5ld19wYWdlKHN0cnVjdCBwYWdlICpwYWdlLCB1bnNpZ25lZCBsb25nIHN0YXJ0 LCBpbnQgKip4KQ0KIHsNCiAJcmV0dXJuIE5VTEw7DQogfQ0KQEAgLTExMDIsNyArMTEwMyw2IEBA IHN0YXRpYyBsb25nIGRvX21iaW5kKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcg bGVuLA0KIAkJICAgICB1bnNpZ25lZCBzaG9ydCBtb2RlLCB1bnNpZ25lZCBzaG9ydCBtb2RlX2Zs YWdzLA0KIAkJICAgICBub2RlbWFza190ICpubWFzaywgdW5zaWduZWQgbG9uZyBmbGFncykNCiB7 DQotCXN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hOw0KIAlzdHJ1Y3QgbW1fc3RydWN0ICptbSA9 IGN1cnJlbnQtPm1tOw0KIAlzdHJ1Y3QgbWVtcG9saWN5ICpuZXc7DQogCXVuc2lnbmVkIGxvbmcg ZW5kOw0KQEAgLTExNjYsMTkgKzExNjYsMTYgQEAgc3RhdGljIGxvbmcgZG9fbWJpbmQodW5zaWdu ZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBsZW4sDQogCWlmIChlcnIpDQogCQlnb3RvIG1w b2xfb3V0Ow0KIA0KLQl2bWEgPSBjaGVja19yYW5nZShtbSwgc3RhcnQsIGVuZCwgbm1hc2ssDQor CWVyciA9IGNoZWNrX3JhbmdlKG1tLCBzdGFydCwgZW5kLCBubWFzaywNCiAJCQkgIGZsYWdzIHwg TVBPTF9NRl9JTlZFUlQsICZwYWdlbGlzdCk7DQotDQotCWVyciA9IFBUUl9FUlIodm1hKTsNCi0J aWYgKCFJU19FUlIodm1hKSkgew0KKwlpZiAoIWVycikgew0KIAkJaW50IG5yX2ZhaWxlZCA9IDA7 DQogDQogCQllcnIgPSBtYmluZF9yYW5nZShtbSwgc3RhcnQsIGVuZCwgbmV3KTsNCiANCiAJCWlm ICghbGlzdF9lbXB0eSgmcGFnZWxpc3QpKSB7DQotCQkJbnJfZmFpbGVkID0gbWlncmF0ZV9wYWdl cygmcGFnZWxpc3QsIG5ld192bWFfcGFnZSwNCi0JCQkJCQkodW5zaWduZWQgbG9uZyl2bWEsDQot CQkJCQkJZmFsc2UsIHRydWUpOw0KKwkJCW5yX2ZhaWxlZCA9IG1pZ3JhdGVfcGFnZXMoJnBhZ2Vs aXN0LCBuZXdfcGFnZSwNCisJCQkJCQlzdGFydCwgZmFsc2UsIHRydWUpOw0KIAkJCWlmIChucl9m YWlsZWQpDQogCQkJCXB1dGJhY2tfbHJ1X3BhZ2VzKCZwYWdlbGlzdCk7DQogCQl9DQpkaWZmIC0t Z2l0IGEvbW0vcm1hcC5jIGIvbW0vcm1hcC5jDQppbmRleCA5YWM0MDViLi5mM2Y2ZmQzIDEwMDY0 NA0KLS0tIGEvbW0vcm1hcC5jDQorKysgYi9tbS9ybWFwLmMNCkBAIC0xMDMsNiArMTAzLDcgQEAg c3RhdGljIGlubGluZSB2b2lkIGFub25fdm1hX2ZyZWUoc3RydWN0IGFub25fdm1hICphbm9uX3Zt YSkNCiAJICogTE9DSyBzaG91bGQgc3VmZmljZSBzaW5jZSB0aGUgYWN0dWFsIHRha2luZyBvZiB0 aGUgbG9jayBtdXN0DQogCSAqIGhhcHBlbiBfYmVmb3JlXyB3aGF0IGZvbGxvd3MuDQogCSAqLw0K KwltaWdodF9zbGVlcCgpOw0KIAlpZiAobXV0ZXhfaXNfbG9ja2VkKCZhbm9uX3ZtYS0+cm9vdC0+ bXV0ZXgpKSB7DQogCQlhbm9uX3ZtYV9sb2NrKGFub25fdm1hKTsNCiAJCWFub25fdm1hX3VubG9j ayhhbm9uX3ZtYSk7DQpAQCAtNDM0LDggKzQzNSw5IEBAIHN0cnVjdCBhbm9uX3ZtYSAqcGFnZV9n ZXRfYW5vbl92bWEoc3RydWN0IHBhZ2UgKnBhZ2UpDQogCSAqIGFib3ZlIGNhbm5vdCBjb3JydXB0 KS4NCiAJICovDQogCWlmICghcGFnZV9tYXBwZWQocGFnZSkpIHsNCisJCXJjdV9yZWFkX3VubG9j aygpOw0KIAkJcHV0X2Fub25fdm1hKGFub25fdm1hKTsNCi0JCWFub25fdm1hID0gTlVMTDsNCisJ CXJldHVybiBOVUxMOw0KIAl9DQogb3V0Og0KIAlyY3VfcmVhZF91bmxvY2soKTsNCkBAIC00ODUs OSArNDg3LDkgQEAgc3RydWN0IGFub25fdm1hICpwYWdlX2xvY2tfYW5vbl92bWEoc3RydWN0IHBh Z2UgKnBhZ2UpDQogCX0NCiANCiAJaWYgKCFwYWdlX21hcHBlZChwYWdlKSkgew0KKwkJcmN1X3Jl YWRfdW5sb2NrKCk7DQogCQlwdXRfYW5vbl92bWEoYW5vbl92bWEpOw0KLQkJYW5vbl92bWEgPSBO VUxMOw0KLQkJZ290byBvdXQ7DQorCQlyZXR1cm4gTlVMTDsNCiAJfQ0KIA0KIAkvKiB3ZSBwaW5u ZWQgdGhlIGFub25fdm1hLCBpdHMgc2FmZSB0byBzbGVlcCAqLw0KQEAgLTE2NjksMTAgKzE2NzEs OSBAQCB2b2lkIF9fcHV0X2Fub25fdm1hKHN0cnVjdCBhbm9uX3ZtYSAqYW5vbl92bWEpDQogew0K IAlzdHJ1Y3QgYW5vbl92bWEgKnJvb3QgPSBhbm9uX3ZtYS0+cm9vdDsNCiANCisJYW5vbl92bWFf ZnJlZShhbm9uX3ZtYSk7DQogCWlmIChyb290ICE9IGFub25fdm1hICYmIGF0b21pY19kZWNfYW5k X3Rlc3QoJnJvb3QtPnJlZmNvdW50KSkNCiAJCWFub25fdm1hX2ZyZWUocm9vdCk7DQotDQotCWFu b25fdm1hX2ZyZWUoYW5vbl92bWEpOw0KIH0NCiANCiAjaWZkZWYgQ09ORklHX01JR1JBVElPTg0K ZGlmZiAtLWdpdCBhL21tL3Ztc2Nhbi5jIGIvbW0vdm1zY2FuLmMNCmluZGV4IDMxMzM4MWMuLmFi OThkYzYgMTAwNjQ0DQotLS0gYS9tbS92bXNjYW4uYw0KKysrIGIvbW0vdm1zY2FuLmMNCkBAIC0z MDE2LDcgKzMwMTYsMTAgQEAgc3RhdGljIGludCBrc3dhcGQodm9pZCAqcCkNCiAJCX0NCiAJfQ0K IA0KKwl0c2stPmZsYWdzICY9IH4oUEZfTUVNQUxMT0MgfCBQRl9TV0FQV1JJVEUgfCBQRl9LU1dB UEQpOw0KIAljdXJyZW50LT5yZWNsYWltX3N0YXRlID0gTlVMTDsNCisJbG9ja2RlcF9jbGVhcl9j dXJyZW50X3JlY2xhaW1fc3RhdGUoKTsNCisNCiAJcmV0dXJuIDA7DQogfQ0KIA0KZGlmZiAtLWdp dCBhL25ldC9ibHVldG9vdGgvaGNpX2Nvbm4uYyBiL25ldC9ibHVldG9vdGgvaGNpX2Nvbm4uYw0K aW5kZXggNGQ5OWQ0Mi4uZjQ1NjY0NSAxMDA2NDQNCi0tLSBhL25ldC9ibHVldG9vdGgvaGNpX2Nv bm4uYw0KKysrIGIvbmV0L2JsdWV0b290aC9oY2lfY29ubi5jDQpAQCAtNjE3LDcgKzYxNyw3IEBA IHN0YXRpYyBpbnQgaGNpX2Nvbm5fYXV0aChzdHJ1Y3QgaGNpX2Nvbm4gKmNvbm4sIF9fdTggc2Vj X2xldmVsLCBfX3U4IGF1dGhfdHlwZSkNCiAJCS8qIElmIHdlJ3JlIGFscmVhZHkgZW5jcnlwdGVk IHNldCB0aGUgUkVBVVRIX1BFTkQgZmxhZywNCiAJCSAqIG90aGVyd2lzZSBzZXQgdGhlIEVOQ1JZ UFRfUEVORC4NCiAJCSAqLw0KLQkJaWYgKGNvbm4tPmtleV90eXBlICE9IDB4ZmYpDQorCQlpZiAo Y29ubi0+bGlua19tb2RlICYgSENJX0xNX0VOQ1JZUFQpDQogCQkJc2V0X2JpdChIQ0lfQ09OTl9S RUFVVEhfUEVORCwgJmNvbm4tPnBlbmQpOw0KIAkJZWxzZQ0KIAkJCXNldF9iaXQoSENJX0NPTk5f RU5DUllQVF9QRU5ELCAmY29ubi0+cGVuZCk7DQpkaWZmIC0tZ2l0IGEvbmV0L2JsdWV0b290aC9o Y2lfZXZlbnQuYyBiL25ldC9ibHVldG9vdGgvaGNpX2V2ZW50LmMNCmluZGV4IDdhMTU3YjMuLmQ5 OTA3NWEgMTAwNjQ0DQotLS0gYS9uZXQvYmx1ZXRvb3RoL2hjaV9ldmVudC5jDQorKysgYi9uZXQv Ymx1ZXRvb3RoL2hjaV9ldmVudC5jDQpAQCAtMjY5MCw4ICsyNjkwLDExIEBAIHN0YXRpYyBpbmxp bmUgdm9pZCBoY2lfdXNlcl9jb25maXJtX3JlcXVlc3RfZXZ0KHN0cnVjdCBoY2lfZGV2ICpoZGV2 LA0KIA0KIAkJLyogSWYgd2UncmUgbm90IHRoZSBpbml0aWF0b3JzIHJlcXVlc3QgYXV0aG9yaXph dGlvbiB0bw0KIAkJICogcHJvY2VlZCBmcm9tIHVzZXIgc3BhY2UgKG1nbXRfdXNlcl9jb25maXJt IHdpdGgNCi0JCSAqIGNvbmZpcm1faGludCBzZXQgdG8gMSkuICovDQotCQlpZiAoIXRlc3RfYml0 KEhDSV9DT05OX0FVVEhfUEVORCwgJmNvbm4tPnBlbmQpKSB7DQorCQkgKiBjb25maXJtX2hpbnQg c2V0IHRvIDEpLiBUaGUgZXhjZXB0aW9uIGlzIGlmIG5laXRoZXINCisJCSAqIHNpZGUgaGFkIE1J VE0gaW4gd2hpY2ggY2FzZSB3ZSBkbyBhdXRvLWFjY2VwdC4NCisJCSAqLw0KKwkJaWYgKCF0ZXN0 X2JpdChIQ0lfQ09OTl9BVVRIX1BFTkQsICZjb25uLT5wZW5kKSAmJg0KKwkJICAgIChsb2NfbWl0 bSB8fCByZW1fbWl0bSkpIHsNCiAJCQlCVF9EQkcoIkNvbmZpcm1pbmcgYXV0by1hY2NlcHQgYXMg YWNjZXB0b3IiKTsNCiAJCQljb25maXJtX2hpbnQgPSAxOw0KIAkJCWdvdG8gY29uZmlybTsNCmRp ZmYgLS1naXQgYS9uZXQvY29yZS9za2J1ZmYuYyBiL25ldC9jb3JlL3NrYnVmZi5jDQppbmRleCA5 MjA0ZDliLi43MTIxZDliIDEwMDY0NA0KLS0tIGEvbmV0L2NvcmUvc2tidWZmLmMNCisrKyBiL25l dC9jb3JlL3NrYnVmZi5jDQpAQCAtNjU1LDcgKzY1NSw3IEBAIGludCBza2JfY29weV91YnVmcyhz dHJ1Y3Qgc2tfYnVmZiAqc2tiLCBnZnBfdCBnZnBfbWFzaykNCiAJc2tiX3NoaW5mbyhza2IpLT50 eF9mbGFncyAmPSB+U0tCVFhfREVWX1pFUk9DT1BZOw0KIAlyZXR1cm4gMDsNCiB9DQotDQorRVhQ T1JUX1NZTUJPTF9HUEwoc2tiX2NvcHlfdWJ1ZnMpOw0KIA0KIC8qKg0KICAqCXNrYl9jbG9uZQkt CWR1cGxpY2F0ZSBhbiBza19idWZmDQpAQCAtMjY5OCw2ICsyNjk4LDkgQEAgc3RydWN0IHNrX2J1 ZmYgKnNrYl9zZWdtZW50KHN0cnVjdCBza19idWZmICpza2IsIHUzMiBmZWF0dXJlcykNCiAJCQkJ CQkgc2tiX3B1dChuc2tiLCBoc2l6ZSksIGhzaXplKTsNCiANCiAJCXdoaWxlIChwb3MgPCBvZmZz ZXQgKyBsZW4gJiYgaSA8IG5mcmFncykgew0KKwkJCWlmICh1bmxpa2VseShza2Jfb3JwaGFuX2Zy YWdzKHNrYiwgR0ZQX0FUT01JQykpKQ0KKwkJCQlnb3RvIGVycjsNCisNCiAJCQkqZnJhZyA9IHNr Yl9zaGluZm8oc2tiKS0+ZnJhZ3NbaV07DQogCQkJX19za2JfZnJhZ19yZWYoZnJhZyk7DQogCQkJ c2l6ZSA9IHNrYl9mcmFnX3NpemUoZnJhZyk7DQpkaWZmIC0tZ2l0IGEvbmV0L2lwdjQvaXBpcC5j IGIvbmV0L2lwdjQvaXBpcC5jDQppbmRleCA1ZGM1MTM3Li43Y2U2ZDlmIDEwMDY0NA0KLS0tIGEv bmV0L2lwdjQvaXBpcC5jDQorKysgYi9uZXQvaXB2NC9pcGlwLmMNCkBAIC05MDksNCArOTA5LDUg QEAgc3RhdGljIHZvaWQgX19leGl0IGlwaXBfZmluaSh2b2lkKQ0KIG1vZHVsZV9pbml0KGlwaXBf aW5pdCk7DQogbW9kdWxlX2V4aXQoaXBpcF9maW5pKTsNCiBNT0RVTEVfTElDRU5TRSgiR1BMIik7 DQorTU9EVUxFX0FMSUFTX1JUTkxfTElOSygiaXBpcCIpOw0KIE1PRFVMRV9BTElBU19ORVRERVYo InR1bmwwIik7DQpkaWZmIC0tZ2l0IGEvbmV0L2lwdjYvaXA2X291dHB1dC5jIGIvbmV0L2lwdjYv aXA2X291dHB1dC5jDQppbmRleCA3ODcxY2M2Li4xNDc1M2QzIDEwMDY0NA0KLS0tIGEvbmV0L2lw djYvaXA2X291dHB1dC5jDQorKysgYi9uZXQvaXB2Ni9pcDZfb3V0cHV0LmMNCkBAIC02MTIsNyAr NjEyLDcgQEAgaW50IGlwNl9maW5kXzFzdGZyYWdvcHQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTgg KipuZXh0aGRyKQ0KIHZvaWQgaXB2Nl9zZWxlY3RfaWRlbnQoc3RydWN0IGZyYWdfaGRyICpmaGRy LCBzdHJ1Y3QgcnQ2X2luZm8gKnJ0KQ0KIHsNCiAJc3RhdGljIGF0b21pY190IGlwdjZfZnJhZ21l bnRhdGlvbl9pZDsNCi0JaW50IG9sZCwgbmV3Ow0KKwlpbnQgaWRlbnQ7DQogDQogCWlmIChydCAm JiAhKHJ0LT5kc3QuZmxhZ3MgJiBEU1RfTk9QRUVSKSkgew0KIAkJc3RydWN0IGluZXRfcGVlciAq cGVlcjsNCkBAIC02MjUsMTMgKzYyNSw4IEBAIHZvaWQgaXB2Nl9zZWxlY3RfaWRlbnQoc3RydWN0 IGZyYWdfaGRyICpmaGRyLCBzdHJ1Y3QgcnQ2X2luZm8gKnJ0KQ0KIAkJCXJldHVybjsNCiAJCX0N CiAJfQ0KLQlkbyB7DQotCQlvbGQgPSBhdG9taWNfcmVhZCgmaXB2Nl9mcmFnbWVudGF0aW9uX2lk KTsNCi0JCW5ldyA9IG9sZCArIDE7DQotCQlpZiAoIW5ldykNCi0JCQluZXcgPSAxOw0KLQl9IHdo aWxlIChhdG9taWNfY21weGNoZygmaXB2Nl9mcmFnbWVudGF0aW9uX2lkLCBvbGQsIG5ldykgIT0g b2xkKTsNCi0JZmhkci0+aWRlbnRpZmljYXRpb24gPSBodG9ubChuZXcpOw0KKwlpZGVudCA9IGF0 b21pY19pbmNfcmV0dXJuKCZpcHY2X2ZyYWdtZW50YXRpb25faWQpOw0KKwlmaGRyLT5pZGVudGlm aWNhdGlvbiA9IGh0b25sKGlkZW50KTsNCiB9DQogDQogaW50IGlwNl9mcmFnbWVudChzdHJ1Y3Qg c2tfYnVmZiAqc2tiLCBpbnQgKCpvdXRwdXQpKHN0cnVjdCBza19idWZmICopKQ0KZGlmZiAtLWdp dCBhL25ldC9pcHY2L2lwNl90dW5uZWwuYyBiL25ldC9pcHY2L2lwNl90dW5uZWwuYw0KaW5kZXgg ZDE5ZjQ5OS4uYWUzMmZmNyAxMDA2NDQNCi0tLSBhL25ldC9pcHY2L2lwNl90dW5uZWwuYw0KKysr IGIvbmV0L2lwdjYvaXA2X3R1bm5lbC5jDQpAQCAtNTcsNiArNTcsNyBAQA0KIE1PRFVMRV9BVVRI T1IoIlZpbGxlIE51b3J2YWxhIik7DQogTU9EVUxFX0RFU0NSSVBUSU9OKCJJUHY2IHR1bm5lbGlu ZyBkZXZpY2UiKTsNCiBNT0RVTEVfTElDRU5TRSgiR1BMIik7DQorTU9EVUxFX0FMSUFTX1JUTkxf TElOSygiaXA2dG5sIik7DQogTU9EVUxFX0FMSUFTX05FVERFVigiaXA2dG5sMCIpOw0KIA0KICNp ZmRlZiBJUDZfVE5MX0RFQlVHDQpkaWZmIC0tZ2l0IGEvbmV0L2lwdjYvc2l0LmMgYi9uZXQvaXB2 Ni9zaXQuYw0KaW5kZXggNzJhOTM5ZC4uNTJjZTE5NiAxMDA2NDQNCi0tLSBhL25ldC9pcHY2L3Np dC5jDQorKysgYi9uZXQvaXB2Ni9zaXQuYw0KQEAgLTEyOTMsNCArMTI5Myw1IEBAIHN0YXRpYyBp bnQgX19pbml0IHNpdF9pbml0KHZvaWQpDQogbW9kdWxlX2luaXQoc2l0X2luaXQpOw0KIG1vZHVs ZV9leGl0KHNpdF9jbGVhbnVwKTsNCiBNT0RVTEVfTElDRU5TRSgiR1BMIik7DQorTU9EVUxFX0FM SUFTX1JUTkxfTElOSygic2l0Iik7DQogTU9EVUxFX0FMSUFTX05FVERFVigic2l0MCIpOw0KZGlm ZiAtLWdpdCBhL25ldC9tYWM4MDIxMS9kZWJ1Z2ZzX25ldGRldi5jIGIvbmV0L21hYzgwMjExL2Rl YnVnZnNfbmV0ZGV2LmMNCmluZGV4IDkzNTI4MTkuLjg4MGE1NWQgMTAwNjQ0DQotLS0gYS9uZXQv bWFjODAyMTEvZGVidWdmc19uZXRkZXYuYw0KKysrIGIvbmV0L21hYzgwMjExL2RlYnVnZnNfbmV0 ZGV2LmMNCkBAIC0zMyw4ICszMyw3IEBAIHN0YXRpYyBzc2l6ZV90IGllZWU4MDIxMV9pZl9yZWFk KA0KIAlzc2l6ZV90IHJldCA9IC1FSU5WQUw7DQogDQogCXJlYWRfbG9jaygmZGV2X2Jhc2VfbG9j ayk7DQotCWlmIChzZGF0YS0+ZGV2LT5yZWdfc3RhdGUgPT0gTkVUUkVHX1JFR0lTVEVSRUQpDQot CQlyZXQgPSAoKmZvcm1hdCkoc2RhdGEsIGJ1Ziwgc2l6ZW9mKGJ1ZikpOw0KKwlyZXQgPSAoKmZv cm1hdCkoc2RhdGEsIGJ1Ziwgc2l6ZW9mKGJ1ZikpOw0KIAlyZWFkX3VubG9jaygmZGV2X2Jhc2Vf bG9jayk7DQogDQogCWlmIChyZXQgPj0gMCkNCkBAIC02Miw4ICs2MSw3IEBAIHN0YXRpYyBzc2l6 ZV90IGllZWU4MDIxMV9pZl93cml0ZSgNCiANCiAJcmV0ID0gLUVOT0RFVjsNCiAJcnRubF9sb2Nr KCk7DQotCWlmIChzZGF0YS0+ZGV2LT5yZWdfc3RhdGUgPT0gTkVUUkVHX1JFR0lTVEVSRUQpDQot CQlyZXQgPSAoKndyaXRlKShzZGF0YSwgYnVmLCBjb3VudCk7DQorCXJldCA9ICgqd3JpdGUpKHNk YXRhLCBidWYsIGNvdW50KTsNCiAJcnRubF91bmxvY2soKTsNCiANCiBmcmVlYnVmOg0KZGlmZiAt LWdpdCBhL25ldC9tYWM4MDIxMS9pYnNzLmMgYi9uZXQvbWFjODAyMTEvaWJzcy5jDQppbmRleCA5 ZTIwY2I4Li4xYzAxOGQxIDEwMDY0NA0KLS0tIGEvbmV0L21hYzgwMjExL2lic3MuYw0KKysrIGIv bmV0L21hYzgwMjExL2lic3MuYw0KQEAgLTkxNCw2ICs5MTQsNyBAQCBpbnQgaWVlZTgwMjExX2li c3Nfam9pbihzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSwNCiANCiAJc2RhdGEt PnUuaWJzcy5wcml2YWN5ID0gcGFyYW1zLT5wcml2YWN5Ow0KIAlzZGF0YS0+dS5pYnNzLmJhc2lj X3JhdGVzID0gcGFyYW1zLT5iYXNpY19yYXRlczsNCisJc2RhdGEtPnUuaWJzcy5sYXN0X3NjYW5f Y29tcGxldGVkID0gamlmZmllczsNCiAJbWVtY3B5KHNkYXRhLT52aWYuYnNzX2NvbmYubWNhc3Rf cmF0ZSwgcGFyYW1zLT5tY2FzdF9yYXRlLA0KIAkgICAgICAgc2l6ZW9mKHBhcmFtcy0+bWNhc3Rf cmF0ZSkpOw0KIA0KZGlmZiAtLWdpdCBhL25ldC9zY3RwL2Fzc29jaW9sYS5jIGIvbmV0L3NjdHAv YXNzb2Npb2xhLmMNCmluZGV4IDNjMDQ2OTIuLjI1YjIwN2IgMTAwNjQ0DQotLS0gYS9uZXQvc2N0 cC9hc3NvY2lvbGEuYw0KKysrIGIvbmV0L3NjdHAvYXNzb2Npb2xhLmMNCkBAIC0zODksNyArMzg5 LDcgQEAgdm9pZCBzY3RwX2Fzc29jaWF0aW9uX2ZyZWUoc3RydWN0IHNjdHBfYXNzb2NpYXRpb24g KmFzb2MpDQogCS8qIE9ubHkgcmVhbCBhc3NvY2lhdGlvbnMgY291bnQgYWdhaW5zdCB0aGUgZW5k cG9pbnQsIHNvDQogCSAqIGRvbid0IGJvdGhlciBmb3IgaWYgdGhpcyBpcyBhIHRlbXBvcmFyeSBh c3NvY2lhdGlvbi4NCiAJICovDQotCWlmICghYXNvYy0+dGVtcCkgew0KKwlpZiAoIWxpc3RfZW1w dHkoJmFzb2MtPmFzb2NzKSkgew0KIAkJbGlzdF9kZWwoJmFzb2MtPmFzb2NzKTsNCiANCiAJCS8q IERlY3JlbWVudCB0aGUgYmFja2xvZyB2YWx1ZSBmb3IgYSBUQ1Atc3R5bGUgbGlzdGVuaW5nDQpk aWZmIC0tZ2l0IGEvc2NyaXB0cy9yZWNvcmRtY291bnQuaCBiL3NjcmlwdHMvcmVjb3JkbWNvdW50 LmgNCmluZGV4IDU0ZTM1YzEuLjVlMjk2MTAgMTAwNjQ0DQotLS0gYS9zY3JpcHRzL3JlY29yZG1j b3VudC5oDQorKysgYi9zY3JpcHRzL3JlY29yZG1jb3VudC5oDQpAQCAtMTYzLDExICsxNjMsMTEg QEAgc3RhdGljIGludCBtY291bnRfYWRqdXN0ID0gMDsNCiANCiBzdGF0aWMgaW50IE1JUFNfaXNf ZmFrZV9tY291bnQoRWxmX1JlbCBjb25zdCAqcnApDQogew0KLQlzdGF0aWMgRWxmX0FkZHIgb2xk X3Jfb2Zmc2V0Ow0KKwlzdGF0aWMgRWxmX0FkZHIgb2xkX3Jfb2Zmc2V0ID0gfihFbGZfQWRkcikw Ow0KIAlFbGZfQWRkciBjdXJyZW50X3Jfb2Zmc2V0ID0gX3cocnAtPnJfb2Zmc2V0KTsNCiAJaW50 IGlzX2Zha2U7DQogDQotCWlzX2Zha2UgPSBvbGRfcl9vZmZzZXQgJiYNCisJaXNfZmFrZSA9IChv bGRfcl9vZmZzZXQgIT0gfihFbGZfQWRkcikwKSAmJg0KIAkJKGN1cnJlbnRfcl9vZmZzZXQgLSBv bGRfcl9vZmZzZXQgPT0gTUlQU19GQUtFTUNPVU5UX09GRlNFVCk7DQogCW9sZF9yX29mZnNldCA9 IGN1cnJlbnRfcl9vZmZzZXQ7DQogDQpkaWZmIC0tZ2l0IGEvc2VjdXJpdHkvaW50ZWdyaXR5L2V2 bS9ldm1fbWFpbi5jIGIvc2VjdXJpdHkvaW50ZWdyaXR5L2V2bS9ldm1fbWFpbi5jDQppbmRleCA5 MmQzZDk5Li4zNDM5ODcyIDEwMDY0NA0KLS0tIGEvc2VjdXJpdHkvaW50ZWdyaXR5L2V2bS9ldm1f bWFpbi5jDQorKysgYi9zZWN1cml0eS9pbnRlZ3JpdHkvZXZtL2V2bV9tYWluLmMNCkBAIC0yMDcs MTIgKzIwNywyMCBAQCBzdGF0aWMgaW50IGV2bV9wcm90ZWN0X3hhdHRyKHN0cnVjdCBkZW50cnkg KmRlbnRyeSwgY29uc3QgY2hhciAqeGF0dHJfbmFtZSwNCiAgKiBAeGF0dHJfdmFsdWU6IHBvaW50 ZXIgdG8gdGhlIG5ldyBleHRlbmRlZCBhdHRyaWJ1dGUgdmFsdWUNCiAgKiBAeGF0dHJfdmFsdWVf bGVuOiBwb2ludGVyIHRvIHRoZSBuZXcgZXh0ZW5kZWQgYXR0cmlidXRlIHZhbHVlIGxlbmd0aA0K ICAqDQotICogVXBkYXRpbmcgJ3NlY3VyaXR5LmV2bScgcmVxdWlyZXMgQ0FQX1NZU19BRE1JTiBw cml2aWxlZ2VzIGFuZCB0aGF0DQotICogdGhlIGN1cnJlbnQgdmFsdWUgaXMgdmFsaWQuDQorICog QmVmb3JlIGFsbG93aW5nIHRoZSAnc2VjdXJpdHkuZXZtJyBwcm90ZWN0ZWQgeGF0dHIgdG8gYmUg dXBkYXRlZCwNCisgKiB2ZXJpZnkgdGhlIGV4aXN0aW5nIHZhbHVlIGlzIHZhbGlkLiAgQXMgb25s eSB0aGUga2VybmVsIHNob3VsZCBoYXZlDQorICogYWNjZXNzIHRvIHRoZSBFVk0gZW5jcnlwdGVk IGtleSBuZWVkZWQgdG8gY2FsY3VsYXRlIHRoZSBITUFDLCBwcmV2ZW50DQorICogdXNlcnNwYWNl IGZyb20gd3JpdGluZyBITUFDIHZhbHVlLiAgV3JpdGluZyAnc2VjdXJpdHkuZXZtJyByZXF1aXJl cw0KKyAqIHJlcXVpcmVzIENBUF9TWVNfQURNSU4gcHJpdmlsZWdlcy4NCiAgKi8NCiBpbnQgZXZt X2lub2RlX3NldHhhdHRyKHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgY29uc3QgY2hhciAqeGF0dHJf bmFtZSwNCiAJCSAgICAgICBjb25zdCB2b2lkICp4YXR0cl92YWx1ZSwgc2l6ZV90IHhhdHRyX3Zh bHVlX2xlbikNCiB7DQorCWNvbnN0IHN0cnVjdCBldm1faW1hX3hhdHRyX2RhdGEgKnhhdHRyX2Rh dGEgPSB4YXR0cl92YWx1ZTsNCisNCisJaWYgKChzdHJjbXAoeGF0dHJfbmFtZSwgWEFUVFJfTkFN RV9FVk0pID09IDApDQorCSAgICAmJiAoeGF0dHJfZGF0YS0+dHlwZSA9PSBFVk1fWEFUVFJfSE1B QykpDQorCQlyZXR1cm4gLUVQRVJNOw0KIAlyZXR1cm4gZXZtX3Byb3RlY3RfeGF0dHIoZGVudHJ5 LCB4YXR0cl9uYW1lLCB4YXR0cl92YWx1ZSwNCiAJCQkJIHhhdHRyX3ZhbHVlX2xlbik7DQogfQ0K ZGlmZiAtLWdpdCBhL3NvdW5kL2NvcmUvY29udHJvbC5jIGIvc291bmQvY29yZS9jb250cm9sLmMN CmluZGV4IDU1MTEzMDcuLjkyMTA1OTQgMTAwNjQ0DQotLS0gYS9zb3VuZC9jb3JlL2NvbnRyb2wu Yw0KKysrIGIvc291bmQvY29yZS9jb250cm9sLmMNCkBAIC0yODgsNiArMjg4LDEwIEBAIHN0YXRp YyBib29sIHNuZF9jdGxfcmVtb3ZlX251bWlkX2NvbmZsaWN0KHN0cnVjdCBzbmRfY2FyZCAqY2Fy ZCwNCiB7DQogCXN0cnVjdCBzbmRfa2NvbnRyb2wgKmtjdGw7DQogDQorCS8qIE1ha2Ugc3VyZSB0 aGF0IHRoZSBpZHMgYXNzaWduZWQgdG8gdGhlIGNvbnRyb2wgZG8gbm90IHdyYXAgYXJvdW5kICov DQorCWlmIChjYXJkLT5sYXN0X251bWlkID49IFVJTlRfTUFYIC0gY291bnQpDQorCQljYXJkLT5s YXN0X251bWlkID0gMDsNCisNCiAJbGlzdF9mb3JfZWFjaF9lbnRyeShrY3RsLCAmY2FyZC0+Y29u dHJvbHMsIGxpc3QpIHsNCiAJCWlmIChrY3RsLT5pZC5udW1pZCA8IGNhcmQtPmxhc3RfbnVtaWQg KyAxICsgY291bnQgJiYNCiAJCSAgICBrY3RsLT5pZC5udW1pZCArIGtjdGwtPmNvdW50ID4gY2Fy ZC0+bGFzdF9udW1pZCArIDEpIHsNCkBAIC0zMjksNiArMzMzLDcgQEAgaW50IHNuZF9jdGxfYWRk KHN0cnVjdCBzbmRfY2FyZCAqY2FyZCwgc3RydWN0IHNuZF9rY29udHJvbCAqa2NvbnRyb2wpDQog ew0KIAlzdHJ1Y3Qgc25kX2N0bF9lbGVtX2lkIGlkOw0KIAl1bnNpZ25lZCBpbnQgaWR4Ow0KKwl1 bnNpZ25lZCBpbnQgY291bnQ7DQogCWludCBlcnIgPSAtRUlOVkFMOw0KIA0KIAlpZiAoISBrY29u dHJvbCkNCkBAIC0zMzYsNiArMzQxLDkgQEAgaW50IHNuZF9jdGxfYWRkKHN0cnVjdCBzbmRfY2Fy ZCAqY2FyZCwgc3RydWN0IHNuZF9rY29udHJvbCAqa2NvbnRyb2wpDQogCWlmIChzbmRfQlVHX09O KCFjYXJkIHx8ICFrY29udHJvbC0+aW5mbykpDQogCQlnb3RvIGVycm9yOw0KIAlpZCA9IGtjb250 cm9sLT5pZDsNCisJaWYgKGlkLmluZGV4ID4gVUlOVF9NQVggLSBrY29udHJvbC0+Y291bnQpDQor CQlnb3RvIGVycm9yOw0KKw0KIAlkb3duX3dyaXRlKCZjYXJkLT5jb250cm9sc19yd3NlbSk7DQog CWlmIChzbmRfY3RsX2ZpbmRfaWQoY2FyZCwgJmlkKSkgew0KIAkJdXBfd3JpdGUoJmNhcmQtPmNv bnRyb2xzX3J3c2VtKTsNCkBAIC0zNTcsOCArMzY1LDkgQEAgaW50IHNuZF9jdGxfYWRkKHN0cnVj dCBzbmRfY2FyZCAqY2FyZCwgc3RydWN0IHNuZF9rY29udHJvbCAqa2NvbnRyb2wpDQogCWNhcmQt PmNvbnRyb2xzX2NvdW50ICs9IGtjb250cm9sLT5jb3VudDsNCiAJa2NvbnRyb2wtPmlkLm51bWlk ID0gY2FyZC0+bGFzdF9udW1pZCArIDE7DQogCWNhcmQtPmxhc3RfbnVtaWQgKz0ga2NvbnRyb2wt PmNvdW50Ow0KKwljb3VudCA9IGtjb250cm9sLT5jb3VudDsNCiAJdXBfd3JpdGUoJmNhcmQtPmNv bnRyb2xzX3J3c2VtKTsNCi0JZm9yIChpZHggPSAwOyBpZHggPCBrY29udHJvbC0+Y291bnQ7IGlk eCsrLCBpZC5pbmRleCsrLCBpZC5udW1pZCsrKQ0KKwlmb3IgKGlkeCA9IDA7IGlkeCA8IGNvdW50 OyBpZHgrKywgaWQuaW5kZXgrKywgaWQubnVtaWQrKykNCiAJCXNuZF9jdGxfbm90aWZ5KGNhcmQs IFNORFJWX0NUTF9FVkVOVF9NQVNLX0FERCwgJmlkKTsNCiAJcmV0dXJuIDA7DQogDQpAQCAtMzg3 LDYgKzM5Niw3IEBAIGludCBzbmRfY3RsX3JlcGxhY2Uoc3RydWN0IHNuZF9jYXJkICpjYXJkLCBz dHJ1Y3Qgc25kX2tjb250cm9sICprY29udHJvbCwNCiAJCSAgICBib29sIGFkZF9vbl9yZXBsYWNl KQ0KIHsNCiAJc3RydWN0IHNuZF9jdGxfZWxlbV9pZCBpZDsNCisJdW5zaWduZWQgaW50IGNvdW50 Ow0KIAl1bnNpZ25lZCBpbnQgaWR4Ow0KIAlzdHJ1Y3Qgc25kX2tjb250cm9sICpvbGQ7DQogCWlu dCByZXQ7DQpAQCAtNDIyLDggKzQzMiw5IEBAIGFkZDoNCiAJY2FyZC0+Y29udHJvbHNfY291bnQg Kz0ga2NvbnRyb2wtPmNvdW50Ow0KIAlrY29udHJvbC0+aWQubnVtaWQgPSBjYXJkLT5sYXN0X251 bWlkICsgMTsNCiAJY2FyZC0+bGFzdF9udW1pZCArPSBrY29udHJvbC0+Y291bnQ7DQorCWNvdW50 ID0ga2NvbnRyb2wtPmNvdW50Ow0KIAl1cF93cml0ZSgmY2FyZC0+Y29udHJvbHNfcndzZW0pOw0K LQlmb3IgKGlkeCA9IDA7IGlkeCA8IGtjb250cm9sLT5jb3VudDsgaWR4KyssIGlkLmluZGV4Kyss IGlkLm51bWlkKyspDQorCWZvciAoaWR4ID0gMDsgaWR4IDwgY291bnQ7IGlkeCsrLCBpZC5pbmRl eCsrLCBpZC5udW1pZCsrKQ0KIAkJc25kX2N0bF9ub3RpZnkoY2FyZCwgU05EUlZfQ1RMX0VWRU5U X01BU0tfQURELCAmaWQpOw0KIAlyZXR1cm4gMDsNCiANCkBAIC04OTQsOSArOTA1LDkgQEAgc3Rh dGljIGludCBzbmRfY3RsX2VsZW1fd3JpdGUoc3RydWN0IHNuZF9jYXJkICpjYXJkLCBzdHJ1Y3Qg c25kX2N0bF9maWxlICpmaWxlLA0KIAkJCXJlc3VsdCA9IGtjdGwtPnB1dChrY3RsLCBjb250cm9s KTsNCiAJCX0NCiAJCWlmIChyZXN1bHQgPiAwKSB7DQorCQkJc3RydWN0IHNuZF9jdGxfZWxlbV9p ZCBpZCA9IGNvbnRyb2wtPmlkOw0KIAkJCXVwX3JlYWQoJmNhcmQtPmNvbnRyb2xzX3J3c2VtKTsN Ci0JCQlzbmRfY3RsX25vdGlmeShjYXJkLCBTTkRSVl9DVExfRVZFTlRfTUFTS19WQUxVRSwNCi0J CQkJICAgICAgICZjb250cm9sLT5pZCk7DQorCQkJc25kX2N0bF9ub3RpZnkoY2FyZCwgU05EUlZf Q1RMX0VWRU5UX01BU0tfVkFMVUUsICZpZCk7DQogCQkJcmV0dXJuIDA7DQogCQl9DQogCX0NCkBA IC05ODgsNiArOTk5LDcgQEAgc3RhdGljIGludCBzbmRfY3RsX2VsZW1fdW5sb2NrKHN0cnVjdCBz bmRfY3RsX2ZpbGUgKmZpbGUsDQogDQogc3RydWN0IHVzZXJfZWxlbWVudCB7DQogCXN0cnVjdCBz bmRfY3RsX2VsZW1faW5mbyBpbmZvOw0KKwlzdHJ1Y3Qgc25kX2NhcmQgKmNhcmQ7DQogCXZvaWQg KmVsZW1fZGF0YTsJCS8qIGVsZW1lbnQgZGF0YSAqLw0KIAl1bnNpZ25lZCBsb25nIGVsZW1fZGF0 YV9zaXplOwkvKiBzaXplIG9mIGVsZW1lbnQgZGF0YSBpbiBieXRlcyAqLw0KIAl2b2lkICp0bHZf ZGF0YTsJCQkvKiBUTFYgZGF0YSAqLw0KQEAgLTEwMzEsNyArMTA0Myw5IEBAIHN0YXRpYyBpbnQg c25kX2N0bF9lbGVtX3VzZXJfZ2V0KHN0cnVjdCBzbmRfa2NvbnRyb2wgKmtjb250cm9sLA0KIHsN CiAJc3RydWN0IHVzZXJfZWxlbWVudCAqdWUgPSBrY29udHJvbC0+cHJpdmF0ZV9kYXRhOw0KIA0K KwltdXRleF9sb2NrKCZ1ZS0+Y2FyZC0+dXNlcl9jdGxfbG9jayk7DQogCW1lbWNweSgmdWNvbnRy b2wtPnZhbHVlLCB1ZS0+ZWxlbV9kYXRhLCB1ZS0+ZWxlbV9kYXRhX3NpemUpOw0KKwltdXRleF91 bmxvY2soJnVlLT5jYXJkLT51c2VyX2N0bF9sb2NrKTsNCiAJcmV0dXJuIDA7DQogfQ0KIA0KQEAg LTEwNDAsMTAgKzEwNTQsMTIgQEAgc3RhdGljIGludCBzbmRfY3RsX2VsZW1fdXNlcl9wdXQoc3Ry dWN0IHNuZF9rY29udHJvbCAqa2NvbnRyb2wsDQogew0KIAlpbnQgY2hhbmdlOw0KIAlzdHJ1Y3Qg dXNlcl9lbGVtZW50ICp1ZSA9IGtjb250cm9sLT5wcml2YXRlX2RhdGE7DQotCQ0KKw0KKwltdXRl eF9sb2NrKCZ1ZS0+Y2FyZC0+dXNlcl9jdGxfbG9jayk7DQogCWNoYW5nZSA9IG1lbWNtcCgmdWNv bnRyb2wtPnZhbHVlLCB1ZS0+ZWxlbV9kYXRhLCB1ZS0+ZWxlbV9kYXRhX3NpemUpICE9IDA7DQog CWlmIChjaGFuZ2UpDQogCQltZW1jcHkodWUtPmVsZW1fZGF0YSwgJnVjb250cm9sLT52YWx1ZSwg dWUtPmVsZW1fZGF0YV9zaXplKTsNCisJbXV0ZXhfdW5sb2NrKCZ1ZS0+Y2FyZC0+dXNlcl9jdGxf bG9jayk7DQogCXJldHVybiBjaGFuZ2U7DQogfQ0KIA0KQEAgLTEwNjMsMTkgKzEwNzksMzIgQEAg c3RhdGljIGludCBzbmRfY3RsX2VsZW1fdXNlcl90bHYoc3RydWN0IHNuZF9rY29udHJvbCAqa2Nv bnRyb2wsDQogCQluZXdfZGF0YSA9IG1lbWR1cF91c2VyKHRsdiwgc2l6ZSk7DQogCQlpZiAoSVNf RVJSKG5ld19kYXRhKSkNCiAJCQlyZXR1cm4gUFRSX0VSUihuZXdfZGF0YSk7DQorCQltdXRleF9s b2NrKCZ1ZS0+Y2FyZC0+dXNlcl9jdGxfbG9jayk7DQogCQljaGFuZ2UgPSB1ZS0+dGx2X2RhdGFf c2l6ZSAhPSBzaXplOw0KIAkJaWYgKCFjaGFuZ2UpDQogCQkJY2hhbmdlID0gbWVtY21wKHVlLT50 bHZfZGF0YSwgbmV3X2RhdGEsIHNpemUpOw0KIAkJa2ZyZWUodWUtPnRsdl9kYXRhKTsNCiAJCXVl LT50bHZfZGF0YSA9IG5ld19kYXRhOw0KIAkJdWUtPnRsdl9kYXRhX3NpemUgPSBzaXplOw0KKwkJ bXV0ZXhfdW5sb2NrKCZ1ZS0+Y2FyZC0+dXNlcl9jdGxfbG9jayk7DQogCX0gZWxzZSB7DQotCQlp ZiAoISB1ZS0+dGx2X2RhdGFfc2l6ZSB8fCAhIHVlLT50bHZfZGF0YSkNCi0JCQlyZXR1cm4gLUVO WElPOw0KLQkJaWYgKHNpemUgPCB1ZS0+dGx2X2RhdGFfc2l6ZSkNCi0JCQlyZXR1cm4gLUVOT1NQ QzsNCisJCWludCByZXQgPSAwOw0KKw0KKwkJbXV0ZXhfbG9jaygmdWUtPmNhcmQtPnVzZXJfY3Rs X2xvY2spOw0KKwkJaWYgKCF1ZS0+dGx2X2RhdGFfc2l6ZSB8fCAhdWUtPnRsdl9kYXRhKSB7DQor CQkJcmV0ID0gLUVOWElPOw0KKwkJCWdvdG8gZXJyX3VubG9jazsNCisJCX0NCisJCWlmIChzaXpl IDwgdWUtPnRsdl9kYXRhX3NpemUpIHsNCisJCQlyZXQgPSAtRU5PU1BDOw0KKwkJCWdvdG8gZXJy X3VubG9jazsNCisJCX0NCiAJCWlmIChjb3B5X3RvX3VzZXIodGx2LCB1ZS0+dGx2X2RhdGEsIHVl LT50bHZfZGF0YV9zaXplKSkNCi0JCQlyZXR1cm4gLUVGQVVMVDsNCisJCQlyZXQgPSAtRUZBVUxU Ow0KK2Vycl91bmxvY2s6DQorCQltdXRleF91bmxvY2soJnVlLT5jYXJkLT51c2VyX2N0bF9sb2Nr KTsNCisJCWlmIChyZXQpDQorCQkJcmV0dXJuIHJldDsNCiAJfQ0KIAlyZXR1cm4gY2hhbmdlOw0K IH0NCkBAIC0xMTMzLDggKzExNjIsNiBAQCBzdGF0aWMgaW50IHNuZF9jdGxfZWxlbV9hZGQoc3Ry dWN0IHNuZF9jdGxfZmlsZSAqZmlsZSwNCiAJc3RydWN0IHVzZXJfZWxlbWVudCAqdWU7DQogCWlu dCBpZHgsIGVycjsNCiANCi0JaWYgKCFyZXBsYWNlICYmIGNhcmQtPnVzZXJfY3RsX2NvdW50ID49 IE1BWF9VU0VSX0NPTlRST0xTKQ0KLQkJcmV0dXJuIC1FTk9NRU07DQogCWlmIChpbmZvLT5jb3Vu dCA8IDEpDQogCQlyZXR1cm4gLUVJTlZBTDsNCiAJYWNjZXNzID0gaW5mby0+YWNjZXNzID09IDAg PyBTTkRSVl9DVExfRUxFTV9BQ0NFU1NfUkVBRFdSSVRFIDoNCkBAIC0xMTQzLDIxICsxMTcwLDE2 IEBAIHN0YXRpYyBpbnQgc25kX2N0bF9lbGVtX2FkZChzdHJ1Y3Qgc25kX2N0bF9maWxlICpmaWxl LA0KIAkJCQkgU05EUlZfQ1RMX0VMRU1fQUNDRVNTX1RMVl9SRUFEV1JJVEUpKTsNCiAJaW5mby0+ aWQubnVtaWQgPSAwOw0KIAltZW1zZXQoJmtjdGwsIDAsIHNpemVvZihrY3RsKSk7DQotCWRvd25f d3JpdGUoJmNhcmQtPmNvbnRyb2xzX3J3c2VtKTsNCi0JX2tjdGwgPSBzbmRfY3RsX2ZpbmRfaWQo Y2FyZCwgJmluZm8tPmlkKTsNCi0JZXJyID0gMDsNCi0JaWYgKF9rY3RsKSB7DQotCQlpZiAocmVw bGFjZSkNCi0JCQllcnIgPSBzbmRfY3RsX3JlbW92ZShjYXJkLCBfa2N0bCk7DQotCQllbHNlDQot CQkJZXJyID0gLUVCVVNZOw0KLQl9IGVsc2Ugew0KLQkJaWYgKHJlcGxhY2UpDQotCQkJZXJyID0g LUVOT0VOVDsNCisNCisJaWYgKHJlcGxhY2UpIHsNCisJCWVyciA9IHNuZF9jdGxfcmVtb3ZlX3Vz ZXJfY3RsKGZpbGUsICZpbmZvLT5pZCk7DQorCQlpZiAoZXJyKQ0KKwkJCXJldHVybiBlcnI7DQog CX0NCi0JdXBfd3JpdGUoJmNhcmQtPmNvbnRyb2xzX3J3c2VtKTsNCi0JaWYgKGVyciA8IDApDQot CQlyZXR1cm4gZXJyOw0KKw0KKwlpZiAoY2FyZC0+dXNlcl9jdGxfY291bnQgPj0gTUFYX1VTRVJf Q09OVFJPTFMpDQorCQlyZXR1cm4gLUVOT01FTTsNCisNCiAJbWVtY3B5KCZrY3RsLmlkLCAmaW5m by0+aWQsIHNpemVvZihpbmZvLT5pZCkpOw0KIAlrY3RsLmNvdW50ID0gaW5mby0+b3duZXIgPyBp bmZvLT5vd25lciA6IDE7DQogCWFjY2VzcyB8PSBTTkRSVl9DVExfRUxFTV9BQ0NFU1NfVVNFUjsN CkBAIC0xMjA3LDYgKzEyMjksNyBAQCBzdGF0aWMgaW50IHNuZF9jdGxfZWxlbV9hZGQoc3RydWN0 IHNuZF9jdGxfZmlsZSAqZmlsZSwNCiAJdWUgPSBremFsbG9jKHNpemVvZihzdHJ1Y3QgdXNlcl9l bGVtZW50KSArIHByaXZhdGVfc2l6ZSwgR0ZQX0tFUk5FTCk7DQogCWlmICh1ZSA9PSBOVUxMKQ0K IAkJcmV0dXJuIC1FTk9NRU07DQorCXVlLT5jYXJkID0gY2FyZDsNCiAJdWUtPmluZm8gPSAqaW5m bzsNCiAJdWUtPmluZm8uYWNjZXNzID0gMDsNCiAJdWUtPmVsZW1fZGF0YSA9IChjaGFyICopdWUg KyBzaXplb2YoKnVlKTsNCkBAIC0xMzE4LDggKzEzNDEsOSBAQCBzdGF0aWMgaW50IHNuZF9jdGxf dGx2X2lvY3RsKHN0cnVjdCBzbmRfY3RsX2ZpbGUgKmZpbGUsDQogCQl9DQogCQllcnIgPSBrY3Rs LT50bHYuYyhrY3RsLCBvcF9mbGFnLCB0bHYubGVuZ3RoLCBfdGx2LT50bHYpOyANCiAJCWlmIChl cnIgPiAwKSB7DQorCQkJc3RydWN0IHNuZF9jdGxfZWxlbV9pZCBpZCA9IGtjdGwtPmlkOw0KIAkJ CXVwX3JlYWQoJmNhcmQtPmNvbnRyb2xzX3J3c2VtKTsNCi0JCQlzbmRfY3RsX25vdGlmeShjYXJk LCBTTkRSVl9DVExfRVZFTlRfTUFTS19UTFYsICZrY3RsLT5pZCk7DQorCQkJc25kX2N0bF9ub3Rp ZnkoY2FyZCwgU05EUlZfQ1RMX0VWRU5UX01BU0tfVExWLCAmaWQpOw0KIAkJCXJldHVybiAwOw0K IAkJfQ0KIAl9IGVsc2Ugew0KZGlmZiAtLWdpdCBhL3NvdW5kL2NvcmUvaW5pdC5jIGIvc291bmQv Y29yZS9pbml0LmMNCmluZGV4IGZhMGYzNWIuLjYzMzNmOGIgMTAwNjQ0DQotLS0gYS9zb3VuZC9j b3JlL2luaXQuYw0KKysrIGIvc291bmQvY29yZS9pbml0LmMNCkBAIC0yMDcsNiArMjA3LDcgQEAg aW50IHNuZF9jYXJkX2NyZWF0ZShpbnQgaWR4LCBjb25zdCBjaGFyICp4aWQsDQogCUlOSVRfTElT VF9IRUFEKCZjYXJkLT5kZXZpY2VzKTsNCiAJaW5pdF9yd3NlbSgmY2FyZC0+Y29udHJvbHNfcndz ZW0pOw0KIAlyd2xvY2tfaW5pdCgmY2FyZC0+Y3RsX2ZpbGVzX3J3bG9jayk7DQorCW11dGV4X2lu aXQoJmNhcmQtPnVzZXJfY3RsX2xvY2spOw0KIAlJTklUX0xJU1RfSEVBRCgmY2FyZC0+Y29udHJv bHMpOw0KIAlJTklUX0xJU1RfSEVBRCgmY2FyZC0+Y3RsX2ZpbGVzKTsNCiAJc3Bpbl9sb2NrX2lu aXQoJmNhcmQtPmZpbGVzX2xvY2spOw0KZGlmZiAtLWdpdCBhL3NvdW5kL3BjaS9oZGEvcGF0Y2hf cmVhbHRlay5jIGIvc291bmQvcGNpL2hkYS9wYXRjaF9yZWFsdGVrLmMNCmluZGV4IGQzMDdhZGIu LjQwMDE2OGUgMTAwNjQ0DQotLS0gYS9zb3VuZC9wY2kvaGRhL3BhdGNoX3JlYWx0ZWsuYw0KKysr IGIvc291bmQvcGNpL2hkYS9wYXRjaF9yZWFsdGVrLmMNCkBAIC00OTIwLDYgKzQ5MjAsNyBAQCBl bnVtIHsNCiAJQUxDMjY5X0ZJWFVQX1NURVJFT19ETUlDLA0KIAlBTEMyNjlfRklYVVBfUVVBTlRB X01VVEUsDQogCUFMQzI2OV9GSVhVUF9MSUZFQk9PSywNCisJQUxDMjY5X0ZJWFVQX0xJRkVCT09L X0VYVE1JQywNCiAJQUxDMjY5X0ZJWFVQX0FNSUMsDQogCUFMQzI2OV9GSVhVUF9ETUlDLA0KIAlB TEMyNjlWQl9GSVhVUF9BTUlDLA0KQEAgLTUwMDgsNiArNTAwOSwxMyBAQCBzdGF0aWMgY29uc3Qg c3RydWN0IGFsY19maXh1cCBhbGMyNjlfZml4dXBzW10gPSB7DQogCQkuY2hhaW5lZCA9IHRydWUs DQogCQkuY2hhaW5faWQgPSBBTEMyNjlfRklYVVBfUVVBTlRBX01VVEUNCiAJfSwNCisJW0FMQzI2 OV9GSVhVUF9MSUZFQk9PS19FWFRNSUNdID0gew0KKwkJLnR5cGUgPSBBTENfRklYVVBfUElOUywN CisJCS52LnBpbnMgPSAoY29uc3Qgc3RydWN0IGFsY19waW5jZmdbXSkgew0KKwkJCXsgMHgxOSwg MHgwMWExOTAzYyB9LCAvKiBoZWFkc2V0IG1pYywgd2l0aCBqYWNrIGRldGVjdCAqLw0KKwkJCXsg fQ0KKwkJfSwNCisJfSwNCiAJW0FMQzI2OV9GSVhVUF9BTUlDXSA9IHsNCiAJCS50eXBlID0gQUxD X0ZJWFVQX1BJTlMsDQogCQkudi5waW5zID0gKGNvbnN0IHN0cnVjdCBhbGNfcGluY2ZnW10pIHsN CkBAIC01MDc5LDYgKzUwODcsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHNuZF9wY2lfcXVpcmsg YWxjMjY5X2ZpeHVwX3RibFtdID0gew0KIAlTTkRfUENJX1FVSVJLKDB4MTAyOCwgMHgwNDcwLCAi RGVsbCBNMTAxeiIsIEFMQzI2OV9GSVhVUF9ERUxMX00xMDFaKSwNCiAJU05EX1BDSV9RVUlSS19W RU5ET1IoMHgxMDI1LCAiQWNlciBBc3BpcmUiLCBBTEMyNzFfRklYVVBfRE1JQyksDQogCVNORF9Q Q0lfUVVJUksoMHgxMGNmLCAweDE0NzUsICJMaWZlYm9vayIsIEFMQzI2OV9GSVhVUF9MSUZFQk9P SyksDQorCVNORF9QQ0lfUVVJUksoMHgxMGNmLCAweDE4NDUsICJMaWZlYm9vayBVOTA0IiwgQUxD MjY5X0ZJWFVQX0xJRkVCT09LX0VYVE1JQyksDQogCVNORF9QQ0lfUVVJUksoMHgxN2FhLCAweDIw ZjIsICJUaGlua3BhZCBTTDQxMC81MTAiLCBBTEMyNjlfRklYVVBfU0tVX0lHTk9SRSksDQogCVNO RF9QQ0lfUVVJUksoMHgxN2FhLCAweDIxNWUsICJUaGlua3BhZCBMNTEyIiwgQUxDMjY5X0ZJWFVQ X1NLVV9JR05PUkUpLA0KIAlTTkRfUENJX1FVSVJLKDB4MTdhYSwgMHgyMWI4LCAiVGhpbmtwYWQg RWRnZSAxNCIsIEFMQzI2OV9GSVhVUF9TS1VfSUdOT1JFKSwNCkBAIC02MDU2LDYgKzYwNjUsNyBA QCBzdGF0aWMgY29uc3Qgc3RydWN0IGhkYV9jb2RlY19wcmVzZXQgc25kX2hkYV9wcmVzZXRfcmVh bHRla1tdID0gew0KIAl7IC5pZCA9IDB4MTBlYzA2NzAsIC5uYW1lID0gIkFMQzY3MCIsIC5wYXRj aCA9IHBhdGNoX2FsYzY2MiB9LA0KIAl7IC5pZCA9IDB4MTBlYzA2NzEsIC5uYW1lID0gIkFMQzY3 MSIsIC5wYXRjaCA9IHBhdGNoX2FsYzY2MiB9LA0KIAl7IC5pZCA9IDB4MTBlYzA2ODAsIC5uYW1l ID0gIkFMQzY4MCIsIC5wYXRjaCA9IHBhdGNoX2FsYzY4MCB9LA0KKwl7IC5pZCA9IDB4MTBlYzA4 NjcsIC5uYW1lID0gIkFMQzg5MSIsIC5wYXRjaCA9IHBhdGNoX2FsYzg4MiB9LA0KIAl7IC5pZCA9 IDB4MTBlYzA4ODAsIC5uYW1lID0gIkFMQzg4MCIsIC5wYXRjaCA9IHBhdGNoX2FsYzg4MCB9LA0K IAl7IC5pZCA9IDB4MTBlYzA4ODIsIC5uYW1lID0gIkFMQzg4MiIsIC5wYXRjaCA9IHBhdGNoX2Fs Yzg4MiB9LA0KIAl7IC5pZCA9IDB4MTBlYzA4ODMsIC5uYW1lID0gIkFMQzg4MyIsIC5wYXRjaCA9 IHBhdGNoX2FsYzg4MiB9LA0K --=-D8WDOWcB5TInTmXya5Wu-- --=-m6eri7lwhduUMIJ5YzIV Content-Type: application/pgp-signature; name="signature.asc" Content-Description: This is a digitally signed message part -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iQIVAwUAU7yrkue/yOyVhhEJAQpL2A/+PX+ghPYC1fZPiTigCeDNfUqJbcqNH1OK mjcD5Tw+apEd0P8XBen2qe9otemDx16N6uYWvp4HUhpB2ouEwKHIO2wGSEKx42qq 5lS5QKsDXBTkazgMxLeKHSb19rwwz3xACcwGDke07svLpETAmIlRkrtY96wwJypU qQFea2c4Inc6DdpgLo7+fxDqMX7me9r5ncbV5HjIMv44igqGBcwtvKeQpUfuJxNQ Wzqxjzk1kRSuNdba3z2tXUsJaf+Hpd+zjuAhtdt4ynjUKNWDMB4R2FhLS4BObdS/ rchYFWKBVpDtmf6unqIUY6R9E/3Ll6OG+7uJkO2hrxaWL9Ox74gH2SkuviFhsRl+ +zQPzdX85l40MZNjtVTaeJYIs6Og79VIPiyFO5PnaIpjNOJkyyILIr+Z8Z5aDv4g SLwdz9oz+pXruBSNaTFuHbX7AAo8cM0xmlfNMTF5asWdJF8DTjL5FV2WYRGVf8PQ euzUkeTwS9LZKbBw1kNAyV0SkCrOqVHJWaTa9Bs/nacpmJOf3Q7d+v4ws0+vO3/+ L9vb1bSASl6yvZPyAmexpOEQL3v/dy432blNjt24DYvo2L/Oj18sX4nH8/IONlmQ xzYKNTRyQDPORkCdsrygr9Pvdu7uJDomIVUIXs9SMzO6/lecAtMfFBtkeLSKcsox X9fksOvXXTs= =JSMJ -----END PGP SIGNATURE----- --=-m6eri7lwhduUMIJ5YzIV-- -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/