Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S941288AbcKNEFq (ORCPT ); Sun, 13 Nov 2016 23:05:46 -0500 Received: from shadbolt.e.decadent.org.uk ([88.96.1.126]:48164 "EHLO shadbolt.e.decadent.org.uk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S933472AbcKNEF3 (ORCPT ); Sun, 13 Nov 2016 23:05:29 -0500 Message-ID: <1479096317.3755.13.camel@decadent.org.uk> Subject: Re: [PATCH 3.2 000/152] 3.2.84-rc1 review From: Ben Hutchings To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: torvalds@linux-foundation.org, Guenter Roeck , akpm@linux-foundation.org Date: Mon, 14 Nov 2016 04:05:17 +0000 In-Reply-To: References: Content-Type: multipart/signed; micalg="pgp-sha512"; protocol="application/pgp-signature"; boundary="=-J33oBKbWyqNpXO9gLZtz" X-Mailer: Evolution 3.22.1-2 Mime-Version: 1.0 X-SA-Exim-Connect-IP: 2a02:8011:400e:2:6f00:88c8:c921:d332 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 Content-Length: 256218 Lines: 3356 --=-J33oBKbWyqNpXO9gLZtz Content-Type: multipart/mixed; boundary="=-UP7ka0/orhuGBOl5sCw9" --=-UP7ka0/orhuGBOl5sCw9 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable This is the combined diff for 3.2.84-rc1 relative to 3.2.83. Ben. --=20 Ben Hutchings If more than one person is responsible for a bug, no one is at fault. --=-UP7ka0/orhuGBOl5sCw9 Content-Disposition: attachment; filename="linux-3.2.84-rc1.patch" Content-Transfer-Encoding: base64 Content-Type: text/x-patch; name="linux-3.2.84-rc1.patch"; charset="UTF-8" ZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvcG9ydGluZyBiL0RvY3VtZW50 YXRpb24vZmlsZXN5c3RlbXMvcG9ydGluZwppbmRleCBiNGEzZDc2NWZmOWEuLjU2YTljNmVhYjMz ZiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9wb3J0aW5nCisrKyBiL0Rv Y3VtZW50YXRpb24vZmlsZXN5c3RlbXMvcG9ydGluZwpAQCAtMjg4LDggKzI4OCw4IEBAIGltcGxl bWVudGluZyBvbi1kaXNrIHNpemUgY2hhbmdlcy4gIFN0YXJ0IHdpdGggYSBjb3B5IG9mIHRoZSBv bGQgaW5vZGVfc2V0YXR0cgogYW5kIHZtdHJ1bmNhdGUsIGFuZCB0aGUgcmVvcmRlciB0aGUgdm10 cnVuY2F0ZSArIGZvb2ZzX3ZtdHJ1bmNhdGUgc2VxdWVuY2UgdG8KIGJlIGluIG9yZGVyIG9mIHpl cm9pbmcgYmxvY2tzIHVzaW5nIGJsb2NrX3RydW5jYXRlX3BhZ2Ugb3Igc2ltaWxhciBoZWxwZXJz LAogc2l6ZSB1cGRhdGUgYW5kIG9uIGZpbmFsbHkgb24tZGlzayB0cnVuY2F0aW9uIHdoaWNoIHNo b3VsZCBub3QgZmFpbC4KLWlub2RlX2NoYW5nZV9vayBub3cgaW5jbHVkZXMgdGhlIHNpemUgY2hl Y2tzIGZvciBBVFRSX1NJWkUgYW5kIG11c3QgYmUgY2FsbGVkCi1pbiB0aGUgYmVnaW5uaW5nIG9m IC0+c2V0YXR0ciB1bmNvbmRpdGlvbmFsbHkuCitzZXRhdHRyX3ByZXBhcmUgKHdoaWNoIHVzZWQg dG8gYmUgaW5vZGVfY2hhbmdlX29rKSBub3cgaW5jbHVkZXMgdGhlIHNpemUgY2hlY2tzCitmb3Ig QVRUUl9TSVpFIGFuZCBtdXN0IGJlIGNhbGxlZCBpbiB0aGUgYmVnaW5uaW5nIG9mIC0+c2V0YXR0 ciB1bmNvbmRpdGlvbmFsbHkuCiAKIFttYW5kYXRvcnldCiAKZGlmZiAtLWdpdCBhL01ha2VmaWxl IGIvTWFrZWZpbGUKaW5kZXggNzE2Y2RhZGUwMzRkLi5jODI2NmEwZjZhOWQgMTAwNjQ0Ci0tLSBh L01ha2VmaWxlCisrKyBiL01ha2VmaWxlCkBAIC0xLDcgKzEsNyBAQAogVkVSU0lPTiA9IDMKIFBB VENITEVWRUwgPSAyCi1TVUJMRVZFTCA9IDgzCi1FWFRSQVZFUlNJT04gPQorU1VCTEVWRUwgPSA4 NAorRVhUUkFWRVJTSU9OID0gLXJjMQogTkFNRSA9IFNhYmVyLXRvb3RoZWQgU3F1aXJyZWwKIAog IyAqRE9DVU1FTlRBVElPTioKZGlmZiAtLWdpdCBhL2FyY2gvYWxwaGEvaW5jbHVkZS9hc20vdWFj Y2Vzcy5oIGIvYXJjaC9hbHBoYS9pbmNsdWRlL2FzbS91YWNjZXNzLmgKaW5kZXggYjQ5ZWMyZjhk NmUzLi4zY2Q2MTMyMGUwMjQgMTAwNjQ0Ci0tLSBhL2FyY2gvYWxwaGEvaW5jbHVkZS9hc20vdWFj Y2Vzcy5oCisrKyBiL2FyY2gvYWxwaGEvaW5jbHVkZS9hc20vdWFjY2Vzcy5oCkBAIC0zNzEsMTQg KzM3MSw2IEBAIF9fY29weV90b2Zyb21fdXNlcl9ub2NoZWNrKHZvaWQgKnRvLCBjb25zdCB2b2lk ICpmcm9tLCBsb25nIGxlbikKIAlyZXR1cm4gX19jdV9sZW47CiB9CiAKLWV4dGVybiBpbmxpbmUg bG9uZwotX19jb3B5X3RvZnJvbV91c2VyKHZvaWQgKnRvLCBjb25zdCB2b2lkICpmcm9tLCBsb25n IGxlbiwgY29uc3Qgdm9pZCBfX3VzZXIgKnZhbGlkYXRlKQotewotCWlmIChfX2FjY2Vzc19vaygo dW5zaWduZWQgbG9uZyl2YWxpZGF0ZSwgbGVuLCBnZXRfZnMoKSkpCi0JCWxlbiA9IF9fY29weV90 b2Zyb21fdXNlcl9ub2NoZWNrKHRvLCBmcm9tLCBsZW4pOwotCXJldHVybiBsZW47Ci19Ci0KICNk ZWZpbmUgX19jb3B5X3RvX3VzZXIodG8sZnJvbSxuKQkJCQkJXAogKHsJCQkJCQkJCQlcCiAJX19j aGtfdXNlcl9wdHIodG8pOwkJCQkJCVwKQEAgLTM5MywxNyArMzg1LDIyIEBAIF9fY29weV90b2Zy b21fdXNlcih2b2lkICp0bywgY29uc3Qgdm9pZCAqZnJvbSwgbG9uZyBsZW4sIGNvbnN0IHZvaWQg X191c2VyICp2YWxpCiAjZGVmaW5lIF9fY29weV90b191c2VyX2luYXRvbWljIF9fY29weV90b191 c2VyCiAjZGVmaW5lIF9fY29weV9mcm9tX3VzZXJfaW5hdG9taWMgX19jb3B5X2Zyb21fdXNlcgog Ci0KIGV4dGVybiBpbmxpbmUgbG9uZwogY29weV90b191c2VyKHZvaWQgX191c2VyICp0bywgY29u c3Qgdm9pZCAqZnJvbSwgbG9uZyBuKQogewotCXJldHVybiBfX2NvcHlfdG9mcm9tX3VzZXIoKF9f Zm9yY2Ugdm9pZCAqKXRvLCBmcm9tLCBuLCB0byk7CisJaWYgKGxpa2VseShfX2FjY2Vzc19vaygo dW5zaWduZWQgbG9uZyl0bywgbiwgZ2V0X2ZzKCkpKSkKKwkJbiA9IF9fY29weV90b2Zyb21fdXNl cl9ub2NoZWNrKChfX2ZvcmNlIHZvaWQgKil0bywgZnJvbSwgbik7CisJcmV0dXJuIG47CiB9CiAK IGV4dGVybiBpbmxpbmUgbG9uZwogY29weV9mcm9tX3VzZXIodm9pZCAqdG8sIGNvbnN0IHZvaWQg X191c2VyICpmcm9tLCBsb25nIG4pCiB7Ci0JcmV0dXJuIF9fY29weV90b2Zyb21fdXNlcih0bywg KF9fZm9yY2Ugdm9pZCAqKWZyb20sIG4sIGZyb20pOworCWlmIChsaWtlbHkoX19hY2Nlc3Nfb2so KHVuc2lnbmVkIGxvbmcpZnJvbSwgbiwgZ2V0X2ZzKCkpKSkKKwkJbiA9IF9fY29weV90b2Zyb21f dXNlcl9ub2NoZWNrKHRvLCAoX19mb3JjZSB2b2lkICopZnJvbSwgbik7CisJZWxzZQorCQltZW1z ZXQodG8sIDAsIG4pOworCXJldHVybiBuOwogfQogCiBleHRlcm4gdm9pZCBfX2RvX2NsZWFyX3Vz ZXIodm9pZCk7CmRpZmYgLS1naXQgYS9hcmNoL2FybS9jb21tb24vc2ExMTExLmMgYi9hcmNoL2Fy bS9jb21tb24vc2ExMTExLmMKaW5kZXggNjE2OTFjZGJkY2YyLi5jYWIxNzI1YTEwMTcgMTAwNjQ0 Ci0tLSBhL2FyY2gvYXJtL2NvbW1vbi9zYTExMTEuYworKysgYi9hcmNoL2FybS9jb21tb24vc2Ex MTExLmMKQEAgLTg3OCw5ICs4NzgsOSBAQCBzdHJ1Y3Qgc2ExMTExX3NhdmVfZGF0YSB7CiAKICNp ZmRlZiBDT05GSUdfUE0KIAotc3RhdGljIGludCBzYTExMTFfc3VzcGVuZChzdHJ1Y3QgcGxhdGZv cm1fZGV2aWNlICpkZXYsIHBtX21lc3NhZ2VfdCBzdGF0ZSkKK3N0YXRpYyBpbnQgc2ExMTExX3N1 c3BlbmRfbm9pcnEoc3RydWN0IGRldmljZSAqZGV2KQogewotCXN0cnVjdCBzYTExMTEgKnNhY2hp cCA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKGRldik7CisJc3RydWN0IHNhMTExMSAqc2FjaGlwID0g ZGV2X2dldF9kcnZkYXRhKGRldik7CiAJc3RydWN0IHNhMTExMV9zYXZlX2RhdGEgKnNhdmU7CiAJ dW5zaWduZWQgbG9uZyBmbGFnczsKIAl1bnNpZ25lZCBpbnQgdmFsOwpAQCAtOTM4LDkgKzkzOCw5 IEBAIHN0YXRpYyBpbnQgc2ExMTExX3N1c3BlbmQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqZGV2 LCBwbV9tZXNzYWdlX3Qgc3RhdGUpCiAgKglyZXN0b3JlZCBieSB0aGVpciByZXNwZWN0aXZlIGRy aXZlcnMsIGFuZCBtdXN0IGJlIGNhbGxlZAogICoJdmlhIExETSBhZnRlciB0aGlzIGZ1bmN0aW9u LgogICovCi1zdGF0aWMgaW50IHNhMTExMV9yZXN1bWUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAq ZGV2KQorc3RhdGljIGludCBzYTExMTFfcmVzdW1lX25vaXJxKHN0cnVjdCBkZXZpY2UgKmRldikK IHsKLQlzdHJ1Y3Qgc2ExMTExICpzYWNoaXAgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShkZXYpOwor CXN0cnVjdCBzYTExMTEgKnNhY2hpcCA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOwogCXN0cnVjdCBz YTExMTFfc2F2ZV9kYXRhICpzYXZlOwogCXVuc2lnbmVkIGxvbmcgZmxhZ3MsIGlkOwogCXZvaWQg X19pb21lbSAqYmFzZTsKQEAgLTk1Niw3ICs5NTYsNyBAQCBzdGF0aWMgaW50IHNhMTExMV9yZXN1 bWUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqZGV2KQogCWlkID0gc2ExMTExX3JlYWRsKHNhY2hp cC0+YmFzZSArIFNBMTExMV9TS0lEKTsKIAlpZiAoKGlkICYgU0tJRF9JRF9NQVNLKSAhPSBTS0lE X1NBMTExMV9JRCkgewogCQlfX3NhMTExMV9yZW1vdmUoc2FjaGlwKTsKLQkJcGxhdGZvcm1fc2V0 X2RydmRhdGEoZGV2LCBOVUxMKTsKKwkJZGV2X3NldF9kcnZkYXRhKGRldiwgTlVMTCk7CiAJCWtm cmVlKHNhdmUpOwogCQlyZXR1cm4gMDsKIAl9CkBAIC0xMDAyLDggKzEwMDIsOCBAQCBzdGF0aWMg aW50IHNhMTExMV9yZXN1bWUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqZGV2KQogfQogCiAjZWxz ZQotI2RlZmluZSBzYTExMTFfc3VzcGVuZCBOVUxMCi0jZGVmaW5lIHNhMTExMV9yZXN1bWUgIE5V TEwKKyNkZWZpbmUgc2ExMTExX3N1c3BlbmRfbm9pcnEgTlVMTAorI2RlZmluZSBzYTExMTFfcmVz dW1lX25vaXJxICBOVUxMCiAjZW5kaWYKIAogc3RhdGljIGludCBfX2RldmluaXQgc2ExMTExX3By b2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCkBAIC0xMDM3LDYgKzEwMzcsMTEgQEAg c3RhdGljIGludCBzYTExMTFfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiAJ cmV0dXJuIDA7CiB9CiAKK3N0YXRpYyBzdHJ1Y3QgZGV2X3BtX29wcyBzYTExMTFfcG1fb3BzID0g eworCS5zdXNwZW5kX25vaXJxID0gc2ExMTExX3N1c3BlbmRfbm9pcnEsCisJLnJlc3VtZV9ub2ly cSA9IHNhMTExMV9yZXN1bWVfbm9pcnEsCit9OworCiAvKgogICoJTm90IHN1cmUgaWYgdGhpcyBz aG91bGQgYmUgb24gdGhlIHN5c3RlbSBidXMgb3Igbm90IHlldC4KICAqCVdlIHJlYWxseSB3YW50 IHNvbWUgd2F5IHRvIHJlZ2lzdGVyIGEgc3lzdGVtIGRldmljZSBhdApAQCAtMTA0OSwxMCArMTA1 NCw5IEBAIHN0YXRpYyBpbnQgc2ExMTExX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpw ZGV2KQogc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgc2ExMTExX2RldmljZV9kcml2ZXIg PSB7CiAJLnByb2JlCQk9IHNhMTExMV9wcm9iZSwKIAkucmVtb3ZlCQk9IHNhMTExMV9yZW1vdmUs Ci0JLnN1c3BlbmQJPSBzYTExMTFfc3VzcGVuZCwKLQkucmVzdW1lCQk9IHNhMTExMV9yZXN1bWUs CiAJLmRyaXZlcgkJPSB7CiAJCS5uYW1lCT0gInNhMTExMSIsCisJCS5wbQk9ICZzYTExMTFfcG1f b3BzLAogCX0sCiB9OwogCmRpZmYgLS1naXQgYS9hcmNoL2FybS9rZXJuZWwvc3lzX29hYmktY29t cGF0LmMgYi9hcmNoL2FybS9rZXJuZWwvc3lzX29hYmktY29tcGF0LmMKaW5kZXggYWYwYWFlYmY0 ZGU2Li4zMjg4NGE2MDA2Y2YgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL2tlcm5lbC9zeXNfb2FiaS1j b21wYXQuYworKysgYi9hcmNoL2FybS9rZXJuZWwvc3lzX29hYmktY29tcGF0LmMKQEAgLTI3NSw4 ICsyNzUsMTIgQEAgYXNtbGlua2FnZSBsb25nIHN5c19vYWJpX2Vwb2xsX3dhaXQoaW50IGVwZmQs CiAJbW1fc2VnbWVudF90IGZzOwogCWxvbmcgcmV0LCBlcnIsIGk7CiAKLQlpZiAobWF4ZXZlbnRz IDw9IDAgfHwgbWF4ZXZlbnRzID4gKElOVF9NQVgvc2l6ZW9mKHN0cnVjdCBlcG9sbF9ldmVudCkp KQorCWlmIChtYXhldmVudHMgPD0gMCB8fAorCQkJbWF4ZXZlbnRzID4gKElOVF9NQVgvc2l6ZW9m KCprYnVmKSkgfHwKKwkJCW1heGV2ZW50cyA+IChJTlRfTUFYL3NpemVvZigqZXZlbnRzKSkpCiAJ CXJldHVybiAtRUlOVkFMOworCWlmICghYWNjZXNzX29rKFZFUklGWV9XUklURSwgZXZlbnRzLCBz aXplb2YoKmV2ZW50cykgKiBtYXhldmVudHMpKQorCQlyZXR1cm4gLUVGQVVMVDsKIAlrYnVmID0g a21hbGxvYyhzaXplb2YoKmtidWYpICogbWF4ZXZlbnRzLCBHRlBfS0VSTkVMKTsKIAlpZiAoIWti dWYpCiAJCXJldHVybiAtRU5PTUVNOwpAQCAtMzEzLDYgKzMxNyw4IEBAIGFzbWxpbmthZ2UgbG9u ZyBzeXNfb2FiaV9zZW10aW1lZG9wKGludCBzZW1pZCwKIAogCWlmIChuc29wcyA8IDEgfHwgbnNv cHMgPiBTRU1PUE0pCiAJCXJldHVybiAtRUlOVkFMOworCWlmICghYWNjZXNzX29rKFZFUklGWV9S RUFELCB0c29wcywgc2l6ZW9mKCp0c29wcykgKiBuc29wcykpCisJCXJldHVybiAtRUZBVUxUOwog CXNvcHMgPSBrbWFsbG9jKHNpemVvZigqc29wcykgKiBuc29wcywgR0ZQX0tFUk5FTCk7CiAJaWYg KCFzb3BzKQogCQlyZXR1cm4gLUVOT01FTTsKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtb21h cDIvb21hcF9od21vZF8zeHh4X2RhdGEuYyBiL2FyY2gvYXJtL21hY2gtb21hcDIvb21hcF9od21v ZF8zeHh4X2RhdGEuYwppbmRleCBlZWY0M2UyZTE2M2UuLmQ4YTE4NWQ3YmRjMSAxMDA2NDQKLS0t IGEvYXJjaC9hcm0vbWFjaC1vbWFwMi9vbWFwX2h3bW9kXzN4eHhfZGF0YS5jCisrKyBiL2FyY2gv YXJtL21hY2gtb21hcDIvb21hcF9od21vZF8zeHh4X2RhdGEuYwpAQCAtMTQ3MCw4ICsxNDcwLDIw IEBAIHN0YXRpYyBzdHJ1Y3Qgb21hcF9od21vZCBvbWFwM3h4eF9kc3NfZGlzcGNfaHdtb2QgPSB7 CiAgKiBkaXNwbGF5IHNlcmlhbCBpbnRlcmZhY2UgY29udHJvbGxlcgogICovCiAKK3N0YXRpYyBz dHJ1Y3Qgb21hcF9od21vZF9jbGFzc19zeXNjb25maWcgb21hcDN4eHhfZHNpX3N5c2MgPSB7CisJ LnJldl9vZmZzCT0gMHgwMDAwLAorCS5zeXNjX29mZnMJPSAweDAwMTAsCisJLnN5c3Nfb2Zmcwk9 IDB4MDAxNCwKKwkuc3lzY19mbGFncwk9IChTWVNDX0hBU19BVVRPSURMRSB8IFNZU0NfSEFTX0NM T0NLQUNUSVZJVFkgfAorCQkJICAgU1lTQ19IQVNfRU5BV0FLRVVQIHwgU1lTQ19IQVNfU0lETEVN T0RFIHwKKwkJCSAgIFNZU0NfSEFTX1NPRlRSRVNFVCB8IFNZU1NfSEFTX1JFU0VUX1NUQVRVUyks CisJLmlkbGVtb2Rlcwk9IChTSURMRV9GT1JDRSB8IFNJRExFX05PIHwgU0lETEVfU01BUlQpLAor CS5zeXNjX2ZpZWxkcwk9ICZvbWFwX2h3bW9kX3N5c2NfdHlwZTEsCit9OworCiBzdGF0aWMgc3Ry dWN0IG9tYXBfaHdtb2RfY2xhc3Mgb21hcDN4eHhfZHNpX2h3bW9kX2NsYXNzID0gewogCS5uYW1l ID0gImRzaSIsCisJLnN5c2MJPSAmb21hcDN4eHhfZHNpX3N5c2MsCiB9OwogCiBzdGF0aWMgc3Ry dWN0IG9tYXBfaHdtb2RfaXJxX2luZm8gb21hcDN4eHhfZHNpMV9pcnFzW10gPSB7CmRpZmYgLS1n aXQgYS9hcmNoL2F2cjMyL2luY2x1ZGUvYXNtL3VhY2Nlc3MuaCBiL2FyY2gvYXZyMzIvaW5jbHVk ZS9hc20vdWFjY2Vzcy5oCmluZGV4IDI0NWIyZWUyMTNjOS4uYTBhOWI4YzMxMDQxIDEwMDY0NAot LS0gYS9hcmNoL2F2cjMyL2luY2x1ZGUvYXNtL3VhY2Nlc3MuaAorKysgYi9hcmNoL2F2cjMyL2lu Y2x1ZGUvYXNtL3VhY2Nlc3MuaApAQCAtNzQsNyArNzQsNyBAQCBleHRlcm4gX19rZXJuZWxfc2l6 ZV90IF9fY29weV91c2VyKHZvaWQgKnRvLCBjb25zdCB2b2lkICpmcm9tLAogCiBleHRlcm4gX19r ZXJuZWxfc2l6ZV90IGNvcHlfdG9fdXNlcih2b2lkIF9fdXNlciAqdG8sIGNvbnN0IHZvaWQgKmZy b20sCiAJCQkJICAgIF9fa2VybmVsX3NpemVfdCBuKTsKLWV4dGVybiBfX2tlcm5lbF9zaXplX3Qg Y29weV9mcm9tX3VzZXIodm9pZCAqdG8sIGNvbnN0IHZvaWQgX191c2VyICpmcm9tLAorZXh0ZXJu IF9fa2VybmVsX3NpemVfdCBfX19jb3B5X2Zyb21fdXNlcih2b2lkICp0bywgY29uc3Qgdm9pZCBf X3VzZXIgKmZyb20sCiAJCQkJICAgICAgX19rZXJuZWxfc2l6ZV90IG4pOwogCiBzdGF0aWMgaW5s aW5lIF9fa2VybmVsX3NpemVfdCBfX2NvcHlfdG9fdXNlcih2b2lkIF9fdXNlciAqdG8sIGNvbnN0 IHZvaWQgKmZyb20sCkBAIC04OCw2ICs4OCwxNSBAQCBzdGF0aWMgaW5saW5lIF9fa2VybmVsX3Np emVfdCBfX2NvcHlfZnJvbV91c2VyKHZvaWQgKnRvLAogewogCXJldHVybiBfX2NvcHlfdXNlcih0 bywgKGNvbnN0IHZvaWQgX19mb3JjZSAqKWZyb20sIG4pOwogfQorc3RhdGljIGlubGluZSBfX2tl cm5lbF9zaXplX3QgY29weV9mcm9tX3VzZXIodm9pZCAqdG8sCisJCQkJCSAgICAgICBjb25zdCB2 b2lkIF9fdXNlciAqZnJvbSwKKwkJCQkJICAgICAgIF9fa2VybmVsX3NpemVfdCBuKQoreworCXNp emVfdCByZXMgPSBfX19jb3B5X2Zyb21fdXNlcih0bywgZnJvbSwgbik7CisJaWYgKHVubGlrZWx5 KHJlcykpCisJCW1lbXNldCh0byArIChuIC0gcmVzKSwgMCwgcmVzKTsKKwlyZXR1cm4gcmVzOwor fQogCiAjZGVmaW5lIF9fY29weV90b191c2VyX2luYXRvbWljIF9fY29weV90b191c2VyCiAjZGVm aW5lIF9fY29weV9mcm9tX3VzZXJfaW5hdG9taWMgX19jb3B5X2Zyb21fdXNlcgpkaWZmIC0tZ2l0 IGEvYXJjaC9hdnIzMi9rZXJuZWwvYXZyMzJfa3N5bXMuYyBiL2FyY2gvYXZyMzIva2VybmVsL2F2 cjMyX2tzeW1zLmMKaW5kZXggZDkzZWFkMDJkYWVkLi43YzZjZjE0ZjA5ODUgMTAwNjQ0Ci0tLSBh L2FyY2gvYXZyMzIva2VybmVsL2F2cjMyX2tzeW1zLmMKKysrIGIvYXJjaC9hdnIzMi9rZXJuZWwv YXZyMzJfa3N5bXMuYwpAQCAtMzYsNyArMzYsNyBAQCBFWFBPUlRfU1lNQk9MKGNvcHlfcGFnZSk7 CiAvKgogICogVXNlcnNwYWNlIGFjY2VzcyBzdHVmZi4KICAqLwotRVhQT1JUX1NZTUJPTChjb3B5 X2Zyb21fdXNlcik7CitFWFBPUlRfU1lNQk9MKF9fX2NvcHlfZnJvbV91c2VyKTsKIEVYUE9SVF9T WU1CT0woY29weV90b191c2VyKTsKIEVYUE9SVF9TWU1CT0woX19jb3B5X3VzZXIpOwogRVhQT1JU X1NZTUJPTChzdHJuY3B5X2Zyb21fdXNlcik7CmRpZmYgLS1naXQgYS9hcmNoL2F2cjMyL2xpYi9j b3B5X3VzZXIuUyBiL2FyY2gvYXZyMzIvbGliL2NvcHlfdXNlci5TCmluZGV4IGVhNTljMDRiMDdk ZS4uMDc1MzczNDcxZGExIDEwMDY0NAotLS0gYS9hcmNoL2F2cjMyL2xpYi9jb3B5X3VzZXIuUwor KysgYi9hcmNoL2F2cjMyL2xpYi9jb3B5X3VzZXIuUwpAQCAtMjMsMTMgKzIzLDEzIEBACiAJICov CiAJLnRleHQKIAkuYWxpZ24JMQotCS5nbG9iYWwJY29weV9mcm9tX3VzZXIKLQkudHlwZQljb3B5 X2Zyb21fdXNlciwgQGZ1bmN0aW9uCi1jb3B5X2Zyb21fdXNlcjoKKwkuZ2xvYmFsCV9fX2NvcHlf ZnJvbV91c2VyCisJLnR5cGUJX19fY29weV9mcm9tX3VzZXIsIEBmdW5jdGlvbgorX19fY29weV9m cm9tX3VzZXI6CiAJYnJhbmNoX2lmX2tlcm5lbCByOCwgX19jb3B5X3VzZXIKIAlyZXRfaWZfcHJp dmlsZWdlZCByOCwgcjExLCByMTAsIHIxMAogCXJqbXAJX19jb3B5X3VzZXIKLQkuc2l6ZQljb3B5 X2Zyb21fdXNlciwgLiAtIGNvcHlfZnJvbV91c2VyCisJLnNpemUJX19fY29weV9mcm9tX3VzZXIs IC4gLSBfX19jb3B5X2Zyb21fdXNlcgogCiAJLmdsb2JhbAljb3B5X3RvX3VzZXIKIAkudHlwZQlj b3B5X3RvX3VzZXIsIEBmdW5jdGlvbgpkaWZmIC0tZ2l0IGEvYXJjaC9hdnIzMi9tYWNoLWF0MzJh cC9waW8uYyBiL2FyY2gvYXZyMzIvbWFjaC1hdDMyYXAvcGlvLmMKaW5kZXggOTAzYzdkODFkMGQ1 Li5hOGUyMDhlYWYyYTQgMTAwNjQ0Ci0tLSBhL2FyY2gvYXZyMzIvbWFjaC1hdDMyYXAvcGlvLmMK KysrIGIvYXJjaC9hdnIzMi9tYWNoLWF0MzJhcC9waW8uYwpAQCAtNDM1LDcgKzQzNSw3IEBAIHZv aWQgX19pbml0IGF0MzJfaW5pdF9waW8oc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKIAlz dHJ1Y3QgcmVzb3VyY2UgKnJlZ3M7CiAJc3RydWN0IHBpb19kZXZpY2UgKnBpbzsKIAotCWlmIChw ZGV2LT5pZCA+IE1BWF9OUl9QSU9fREVWSUNFUykgeworCWlmIChwZGV2LT5pZCA+PSBNQVhfTlJf UElPX0RFVklDRVMpIHsKIAkJZGV2X2VycigmcGRldi0+ZGV2LCAib25seSAlZCBQSU8gZGV2aWNl cyBzdXBwb3J0ZWRcbiIsCiAJCQlNQVhfTlJfUElPX0RFVklDRVMpOwogCQlyZXR1cm47CmRpZmYg LS1naXQgYS9hcmNoL2JsYWNrZmluL2luY2x1ZGUvYXNtL3VhY2Nlc3MuaCBiL2FyY2gvYmxhY2tm aW4vaW5jbHVkZS9hc20vdWFjY2Vzcy5oCmluZGV4IDVjYzExMTUwMjgyMi4uOGY5ZDQ5N2EyMGEz IDEwMDY0NAotLS0gYS9hcmNoL2JsYWNrZmluL2luY2x1ZGUvYXNtL3VhY2Nlc3MuaAorKysgYi9h cmNoL2JsYWNrZmluL2luY2x1ZGUvYXNtL3VhY2Nlc3MuaApAQCAtMTk0LDExICsxOTQsMTIgQEAg c3RhdGljIGlubGluZSBpbnQgYmFkX3VzZXJfYWNjZXNzX2xlbmd0aCh2b2lkKQogc3RhdGljIGlu bGluZSB1bnNpZ25lZCBsb25nIF9fbXVzdF9jaGVjawogY29weV9mcm9tX3VzZXIodm9pZCAqdG8s IGNvbnN0IHZvaWQgX191c2VyICpmcm9tLCB1bnNpZ25lZCBsb25nIG4pCiB7Ci0JaWYgKGFjY2Vz c19vayhWRVJJRllfUkVBRCwgZnJvbSwgbikpCisJaWYgKGxpa2VseShhY2Nlc3Nfb2soVkVSSUZZ X1JFQUQsIGZyb20sIG4pKSkgewogCQltZW1jcHkodG8sIChjb25zdCB2b2lkIF9fZm9yY2UgKilm cm9tLCBuKTsKLQllbHNlCi0JCXJldHVybiBuOwotCXJldHVybiAwOworCQlyZXR1cm4gMDsKKwl9 CisJbWVtc2V0KHRvLCAwLCBuKTsKKwlyZXR1cm4gbjsKIH0KIAogc3RhdGljIGlubGluZSB1bnNp Z25lZCBsb25nIF9fbXVzdF9jaGVjawpkaWZmIC0tZ2l0IGEvYXJjaC9jcmlzL2luY2x1ZGUvYXNt L3VhY2Nlc3MuaCBiL2FyY2gvY3Jpcy9pbmNsdWRlL2FzbS91YWNjZXNzLmgKaW5kZXggOTE0NTQw ODAxYzVlLi45M2JmYThhY2MzOGIgMTAwNjQ0Ci0tLSBhL2FyY2gvY3Jpcy9pbmNsdWRlL2FzbS91 YWNjZXNzLmgKKysrIGIvYXJjaC9jcmlzL2luY2x1ZGUvYXNtL3VhY2Nlc3MuaApAQCAtMTc2LDMw ICsxNzYsNiBAQCBleHRlcm4gdW5zaWduZWQgbG9uZyBfX2NvcHlfdXNlcih2b2lkIF9fdXNlciAq dG8sIGNvbnN0IHZvaWQgKmZyb20sIHVuc2lnbmVkIGxvbgogZXh0ZXJuIHVuc2lnbmVkIGxvbmcg X19jb3B5X3VzZXJfemVyb2luZyh2b2lkICp0bywgY29uc3Qgdm9pZCBfX3VzZXIgKmZyb20sIHVu c2lnbmVkIGxvbmcgbik7CiBleHRlcm4gdW5zaWduZWQgbG9uZyBfX2RvX2NsZWFyX3VzZXIodm9p ZCBfX3VzZXIgKnRvLCB1bnNpZ25lZCBsb25nIG4pOwogCi1zdGF0aWMgaW5saW5lIHVuc2lnbmVk IGxvbmcKLV9fZ2VuZXJpY19jb3B5X3RvX3VzZXIodm9pZCBfX3VzZXIgKnRvLCBjb25zdCB2b2lk ICpmcm9tLCB1bnNpZ25lZCBsb25nIG4pCi17Ci0JaWYgKGFjY2Vzc19vayhWRVJJRllfV1JJVEUs IHRvLCBuKSkKLQkJcmV0dXJuIF9fY29weV91c2VyKHRvLGZyb20sbik7Ci0JcmV0dXJuIG47Ci19 Ci0KLXN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZwotX19nZW5lcmljX2NvcHlfZnJvbV91c2Vy KHZvaWQgKnRvLCBjb25zdCB2b2lkIF9fdXNlciAqZnJvbSwgdW5zaWduZWQgbG9uZyBuKQotewot CWlmIChhY2Nlc3Nfb2soVkVSSUZZX1JFQUQsIGZyb20sIG4pKQotCQlyZXR1cm4gX19jb3B5X3Vz ZXJfemVyb2luZyh0byxmcm9tLG4pOwotCXJldHVybiBuOwotfQotCi1zdGF0aWMgaW5saW5lIHVu c2lnbmVkIGxvbmcKLV9fZ2VuZXJpY19jbGVhcl91c2VyKHZvaWQgX191c2VyICp0bywgdW5zaWdu ZWQgbG9uZyBuKQotewotCWlmIChhY2Nlc3Nfb2soVkVSSUZZX1dSSVRFLCB0bywgbikpCi0JCXJl dHVybiBfX2RvX2NsZWFyX3VzZXIodG8sbik7Ci0JcmV0dXJuIG47Ci19Ci0KIHN0YXRpYyBpbmxp bmUgbG9uZwogX19zdHJuY3B5X2Zyb21fdXNlcihjaGFyICpkc3QsIGNvbnN0IGNoYXIgX191c2Vy ICpzcmMsIGxvbmcgY291bnQpCiB7CkBAIC0yNjIsNyArMjM4LDcgQEAgX19jb25zdGFudF9jb3B5 X2Zyb21fdXNlcih2b2lkICp0bywgY29uc3Qgdm9pZCBfX3VzZXIgKmZyb20sIHVuc2lnbmVkIGxv bmcgbikKIAllbHNlIGlmIChuID09IDI0KQogCQlfX2FzbV9jb3B5X2Zyb21fdXNlcl8yNCh0bywg ZnJvbSwgcmV0KTsKIAllbHNlCi0JCXJldCA9IF9fZ2VuZXJpY19jb3B5X2Zyb21fdXNlcih0bywg ZnJvbSwgbik7CisJCXJldCA9IF9fY29weV91c2VyX3plcm9pbmcodG8sIGZyb20sIG4pOwogCiAJ cmV0dXJuIHJldDsKIH0KQEAgLTMxMiw3ICsyODgsNyBAQCBfX2NvbnN0YW50X2NvcHlfdG9fdXNl cih2b2lkIF9fdXNlciAqdG8sIGNvbnN0IHZvaWQgKmZyb20sIHVuc2lnbmVkIGxvbmcgbikKIAll bHNlIGlmIChuID09IDI0KQogCQlfX2FzbV9jb3B5X3RvX3VzZXJfMjQodG8sIGZyb20sIHJldCk7 CiAJZWxzZQotCQlyZXQgPSBfX2dlbmVyaWNfY29weV90b191c2VyKHRvLCBmcm9tLCBuKTsKKwkJ cmV0ID0gX19jb3B5X3VzZXIodG8sIGZyb20sIG4pOwogCiAJcmV0dXJuIHJldDsKIH0KQEAgLTM0 NCwyNiArMzIwLDQzIEBAIF9fY29uc3RhbnRfY2xlYXJfdXNlcih2b2lkIF9fdXNlciAqdG8sIHVu c2lnbmVkIGxvbmcgbikKIAllbHNlIGlmIChuID09IDI0KQogCQlfX2FzbV9jbGVhcl8yNCh0bywg cmV0KTsKIAllbHNlCi0JCXJldCA9IF9fZ2VuZXJpY19jbGVhcl91c2VyKHRvLCBuKTsKKwkJcmV0 ID0gX19kb19jbGVhcl91c2VyKHRvLCBuKTsKIAogCXJldHVybiByZXQ7CiB9CiAKIAotI2RlZmlu ZSBjbGVhcl91c2VyKHRvLCBuKQkJCVwKLShfX2J1aWx0aW5fY29uc3RhbnRfcChuKSA/CQkJXAot IF9fY29uc3RhbnRfY2xlYXJfdXNlcih0bywgbikgOgkJCVwKLSBfX2dlbmVyaWNfY2xlYXJfdXNl cih0bywgbikpCitzdGF0aWMgaW5saW5lIHNpemVfdCBjbGVhcl91c2VyKHZvaWQgX191c2VyICp0 bywgc2l6ZV90IG4pCit7CisJaWYgKHVubGlrZWx5KCFhY2Nlc3Nfb2soVkVSSUZZX1dSSVRFLCB0 bywgbikpKQorCQlyZXR1cm4gbjsKKwlpZiAoX19idWlsdGluX2NvbnN0YW50X3AobikpCisJCXJl dHVybiBfX2NvbnN0YW50X2NsZWFyX3VzZXIodG8sIG4pOworCWVsc2UKKwkJcmV0dXJuIF9fZG9f Y2xlYXJfdXNlcih0bywgbik7Cit9CiAKLSNkZWZpbmUgY29weV9mcm9tX3VzZXIodG8sIGZyb20s IG4pCQlcCi0oX19idWlsdGluX2NvbnN0YW50X3AobikgPwkJCVwKLSBfX2NvbnN0YW50X2NvcHlf ZnJvbV91c2VyKHRvLCBmcm9tLCBuKSA6CVwKLSBfX2dlbmVyaWNfY29weV9mcm9tX3VzZXIodG8s IGZyb20sIG4pKQorc3RhdGljIGlubGluZSBzaXplX3QgY29weV9mcm9tX3VzZXIodm9pZCAqdG8s IGNvbnN0IHZvaWQgX191c2VyICpmcm9tLCBzaXplX3QgbikKK3sKKwlpZiAodW5saWtlbHkoIWFj Y2Vzc19vayhWRVJJRllfUkVBRCwgZnJvbSwgbikpKSB7CisJCW1lbXNldCh0bywgMCwgbik7CisJ CXJldHVybiBuOworCX0KKwlpZiAoX19idWlsdGluX2NvbnN0YW50X3AobikpCisJCXJldHVybiBf X2NvbnN0YW50X2NvcHlfZnJvbV91c2VyKHRvLCBmcm9tLCBuKTsKKwllbHNlCisJCXJldHVybiBf X2NvcHlfdXNlcl96ZXJvaW5nKHRvLCBmcm9tLCBuKTsKK30KIAotI2RlZmluZSBjb3B5X3RvX3Vz ZXIodG8sIGZyb20sIG4pCQlcCi0oX19idWlsdGluX2NvbnN0YW50X3AobikgPwkJCVwKLSBfX2Nv bnN0YW50X2NvcHlfdG9fdXNlcih0bywgZnJvbSwgbikgOgkJXAotIF9fZ2VuZXJpY19jb3B5X3Rv X3VzZXIodG8sIGZyb20sIG4pKQorc3RhdGljIGlubGluZSBzaXplX3QgY29weV90b191c2VyKHZv aWQgX191c2VyICp0bywgY29uc3Qgdm9pZCAqZnJvbSwgc2l6ZV90IG4pCit7CisJaWYgKHVubGlr ZWx5KCFhY2Nlc3Nfb2soVkVSSUZZX1dSSVRFLCB0bywgbikpKQorCQlyZXR1cm4gbjsKKwlpZiAo X19idWlsdGluX2NvbnN0YW50X3AobikpCisJCXJldHVybiBfX2NvbnN0YW50X2NvcHlfdG9fdXNl cih0bywgZnJvbSwgbik7CisJZWxzZQorCQlyZXR1cm4gX19jb3B5X3VzZXIodG8sIGZyb20sIG4p OworfQogCiAvKiBXZSBsZXQgdGhlIF9fIHZlcnNpb25zIG9mIGNvcHlfZnJvbS90b191c2VyIGlu bGluZSwgYmVjYXVzZSB0aGV5J3JlIG9mdGVuCiAgKiB1c2VkIGluIGZhc3QgcGF0aHMgYW5kIGhh dmUgb25seSBhIHNtYWxsIHNwYWNlIG92ZXJoZWFkLgpkaWZmIC0tZ2l0IGEvYXJjaC9mcnYvaW5j bHVkZS9hc20vdWFjY2Vzcy5oIGIvYXJjaC9mcnYvaW5jbHVkZS9hc20vdWFjY2Vzcy5oCmluZGV4 IDBiNjdlYzViNDQxNC4uM2E3NDEzN2VlZWY4IDEwMDY0NAotLS0gYS9hcmNoL2Zydi9pbmNsdWRl L2FzbS91YWNjZXNzLmgKKysrIGIvYXJjaC9mcnYvaW5jbHVkZS9hc20vdWFjY2Vzcy5oCkBAIC0y NjMsMTkgKzI2MywyNSBAQCBkbyB7CQkJCQkJCVwKIGV4dGVybiBsb25nIF9fbWVtc2V0X3VzZXIo dm9pZCAqZHN0LCB1bnNpZ25lZCBsb25nIGNvdW50KTsKIGV4dGVybiBsb25nIF9fbWVtY3B5X3Vz ZXIodm9pZCAqZHN0LCBjb25zdCB2b2lkICpzcmMsIHVuc2lnbmVkIGxvbmcgY291bnQpOwogCi0j ZGVmaW5lIGNsZWFyX3VzZXIoZHN0LGNvdW50KQkJCV9fbWVtc2V0X3VzZXIoX19fX2ZvcmNlKGRz dCksIChjb3VudCkpCisjZGVmaW5lIF9fY2xlYXJfdXNlcihkc3QsY291bnQpCQkJX19tZW1zZXRf dXNlcihfX19fZm9yY2UoZHN0KSwgKGNvdW50KSkKICNkZWZpbmUgX19jb3B5X2Zyb21fdXNlcl9p bmF0b21pYyh0bywgZnJvbSwgbikJX19tZW1jcHlfdXNlcigodG8pLCBfX19fZm9yY2UoZnJvbSks IChuKSkKICNkZWZpbmUgX19jb3B5X3RvX3VzZXJfaW5hdG9taWModG8sIGZyb20sIG4pCV9fbWVt Y3B5X3VzZXIoX19fX2ZvcmNlKHRvKSwgKGZyb20pLCAobikpCiAKICNlbHNlCiAKLSNkZWZpbmUg Y2xlYXJfdXNlcihkc3QsY291bnQpCQkJKG1lbXNldChfX19fZm9yY2UoZHN0KSwgMCwgKGNvdW50 KSksIDApCisjZGVmaW5lIF9fY2xlYXJfdXNlcihkc3QsY291bnQpCQkJKG1lbXNldChfX19fZm9y Y2UoZHN0KSwgMCwgKGNvdW50KSksIDApCiAjZGVmaW5lIF9fY29weV9mcm9tX3VzZXJfaW5hdG9t aWModG8sIGZyb20sIG4pCShtZW1jcHkoKHRvKSwgX19fX2ZvcmNlKGZyb20pLCAobikpLCAwKQog I2RlZmluZSBfX2NvcHlfdG9fdXNlcl9pbmF0b21pYyh0bywgZnJvbSwgbikJKG1lbWNweShfX19f Zm9yY2UodG8pLCAoZnJvbSksIChuKSksIDApCiAKICNlbmRpZgogCi0jZGVmaW5lIF9fY2xlYXJf dXNlciBjbGVhcl91c2VyCitzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgX19tdXN0X2NoZWNr CitjbGVhcl91c2VyKHZvaWQgX191c2VyICp0bywgdW5zaWduZWQgbG9uZyBuKQoreworCWlmIChs aWtlbHkoX19hY2Nlc3Nfb2sodG8sIG4pKSkKKwkJbiA9IF9fY2xlYXJfdXNlcih0bywgbik7CisJ cmV0dXJuIG47Cit9CiAKIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBfX211c3RfY2hlY2sK IF9fY29weV90b191c2VyKHZvaWQgX191c2VyICp0bywgY29uc3Qgdm9pZCAqZnJvbSwgdW5zaWdu ZWQgbG9uZyBuKQpkaWZmIC0tZ2l0IGEvYXJjaC9oZXhhZ29uL2luY2x1ZGUvYXNtL3VhY2Nlc3Mu aCBiL2FyY2gvaGV4YWdvbi9pbmNsdWRlL2FzbS91YWNjZXNzLmgKaW5kZXggN2U3MDZlYWRiZjBh Li5jNzM4OTdjNWY3YjMgMTAwNjQ0Ci0tLSBhL2FyY2gvaGV4YWdvbi9pbmNsdWRlL2FzbS91YWNj ZXNzLmgKKysrIGIvYXJjaC9oZXhhZ29uL2luY2x1ZGUvYXNtL3VhY2Nlc3MuaApAQCAtMTAyLDcg KzEwMiw4IEBAIHN0YXRpYyBpbmxpbmUgbG9uZyBoZXhhZ29uX3N0cm5jcHlfZnJvbV91c2VyKGNo YXIgKmRzdCwgY29uc3QgY2hhciBfX3VzZXIgKnNyYywKIHsKIAlsb25nIHJlcyA9IF9fc3Rybmxl bl91c2VyKHNyYywgbik7CiAKLQkvKiByZXR1cm4gZnJvbSBzdHJubGVuIGNhbid0IGJlIHplcm8g LS0gdGhhdCB3b3VsZCBiZSBydWJiaXNoLiAqLworCWlmICh1bmxpa2VseSghcmVzKSkKKwkJcmV0 dXJuIC1FRkFVTFQ7CiAKIAlpZiAocmVzID4gbikgewogCQljb3B5X2Zyb21fdXNlcihkc3QsIHNy Yywgbik7CmRpZmYgLS1naXQgYS9hcmNoL2lhNjQvaW5jbHVkZS9hc20vdWFjY2Vzcy5oIGIvYXJj aC9pYTY0L2luY2x1ZGUvYXNtL3VhY2Nlc3MuaAppbmRleCA0NDljOGMwZmEyYmQuLjgxMDkyNmM1 NmUzMSAxMDA2NDQKLS0tIGEvYXJjaC9pYTY0L2luY2x1ZGUvYXNtL3VhY2Nlc3MuaAorKysgYi9h cmNoL2lhNjQvaW5jbHVkZS9hc20vdWFjY2Vzcy5oCkBAIC0yNjIsMTcgKzI2MiwxNSBAQCBfX2Nv cHlfZnJvbV91c2VyICh2b2lkICp0bywgY29uc3Qgdm9pZCBfX3VzZXIgKmZyb20sIHVuc2lnbmVk IGxvbmcgY291bnQpCiAJX19jdV9sZW47CQkJCQkJCQkJXAogfSkKIAotI2RlZmluZSBjb3B5X2Zy b21fdXNlcih0bywgZnJvbSwgbikJCQkJCQkJXAotKHsJCQkJCQkJCQkJCVwKLQl2b2lkICpfX2N1 X3RvID0gKHRvKTsJCQkJCQkJCVwKLQljb25zdCB2b2lkIF9fdXNlciAqX19jdV9mcm9tID0gKGZy b20pOwkJCQkJCVwKLQlsb25nIF9fY3VfbGVuID0gKG4pOwkJCQkJCQkJXAotCQkJCQkJCQkJCQlc Ci0JX19jaGtfdXNlcl9wdHIoX19jdV9mcm9tKTsJCQkJCQkJXAotCWlmIChfX2FjY2Vzc19vayhf X2N1X2Zyb20sIF9fY3VfbGVuLCBnZXRfZnMoKSkpCQkJCQlcCi0JCV9fY3VfbGVuID0gX19jb3B5 X3VzZXIoKF9fZm9yY2Ugdm9pZCBfX3VzZXIgKikgX19jdV90bywgX19jdV9mcm9tLCBfX2N1X2xl bik7CVwKLQlfX2N1X2xlbjsJCQkJCQkJCQlcCi19KQorc3RhdGljIGlubGluZSB1bnNpZ25lZCBs b25nCitjb3B5X2Zyb21fdXNlcih2b2lkICp0bywgY29uc3Qgdm9pZCBfX3VzZXIgKmZyb20sIHVu c2lnbmVkIGxvbmcgbikKK3sKKwlpZiAobGlrZWx5KF9fYWNjZXNzX29rKGZyb20sIG4sIGdldF9m cygpKSkpCisJCW4gPSBfX2NvcHlfdXNlcigoX19mb3JjZSB2b2lkIF9fdXNlciAqKSB0bywgZnJv bSwgbik7CisJZWxzZQorCQltZW1zZXQodG8sIDAsIG4pOworCXJldHVybiBuOworfQogCiAjZGVm aW5lIF9fY29weV9pbl91c2VyKHRvLCBmcm9tLCBzaXplKQlfX2NvcHlfdXNlcigodG8pLCAoZnJv bSksIChzaXplKSkKIApkaWZmIC0tZ2l0IGEvYXJjaC9tMzJyL2luY2x1ZGUvYXNtL3VhY2Nlc3Mu aCBiL2FyY2gvbTMyci9pbmNsdWRlL2FzbS91YWNjZXNzLmgKaW5kZXggMWM3MDQ3YmVhMjAwLi5h MjZkMjhkNTlhZTYgMTAwNjQ0Ci0tLSBhL2FyY2gvbTMyci9pbmNsdWRlL2FzbS91YWNjZXNzLmgK KysrIGIvYXJjaC9tMzJyL2luY2x1ZGUvYXNtL3VhY2Nlc3MuaApAQCAtMjE1LDcgKzIxNSw3IEBA IGV4dGVybiBpbnQgZml4dXBfZXhjZXB0aW9uKHN0cnVjdCBwdF9yZWdzICpyZWdzKTsKICNkZWZp bmUgX19nZXRfdXNlcl9ub2NoZWNrKHgscHRyLHNpemUpCQkJCQlcCiAoewkJCQkJCQkJCVwKIAls b25nIF9fZ3VfZXJyID0gMDsJCQkJCQlcCi0JdW5zaWduZWQgbG9uZyBfX2d1X3ZhbDsJCQkJCQlc CisJdW5zaWduZWQgbG9uZyBfX2d1X3ZhbCA9IDA7CQkJCQlcCiAJbWlnaHRfc2xlZXAoKTsJCQkJ CQkJXAogCV9fZ2V0X3VzZXJfc2l6ZShfX2d1X3ZhbCwocHRyKSwoc2l6ZSksX19ndV9lcnIpOwkJ XAogCSh4KSA9IChfX3R5cGVvZl9fKCoocHRyKSkpX19ndV92YWw7CQkJCVwKZGlmZiAtLWdpdCBh L2FyY2gvbWljcm9ibGF6ZS9pbmNsdWRlL2FzbS91YWNjZXNzLmggYi9hcmNoL21pY3JvYmxhemUv aW5jbHVkZS9hc20vdWFjY2Vzcy5oCmluZGV4IDA3MmIwMDc3YWJmOS4uN2E1YjFlZTIyNTg2IDEw MDY0NAotLS0gYS9hcmNoL21pY3JvYmxhemUvaW5jbHVkZS9hc20vdWFjY2Vzcy5oCisrKyBiL2Fy Y2gvbWljcm9ibGF6ZS9pbmNsdWRlL2FzbS91YWNjZXNzLmgKQEAgLTIxOCw3ICsyMTgsNyBAQCBl eHRlcm4gbG9uZyBfX3VzZXJfYmFkKHZvaWQpOwogCiAjZGVmaW5lIF9fZ2V0X3VzZXIoeCwgcHRy KQkJCQkJCVwKICh7CQkJCQkJCQkJXAotCXVuc2lnbmVkIGxvbmcgX19ndV92YWw7CQkJCQkJXAor CXVuc2lnbmVkIGxvbmcgX19ndV92YWwgPSAwOwkJCQkJXAogCS8qdW5zaWduZWQgbG9uZyBfX2d1 X3B0ciA9ICh1bnNpZ25lZCBsb25nKShwdHIpOyovCQlcCiAJbG9uZyBfX2d1X2VycjsJCQkJCQkJ XAogCXN3aXRjaCAoc2l6ZW9mKCoocHRyKSkpIHsJCQkJCVwKQEAgLTM2NCwxMCArMzY0LDEzIEBA IGV4dGVybiBsb25nIF9fdXNlcl9iYWQodm9pZCk7CiBzdGF0aWMgaW5saW5lIGxvbmcgY29weV9m cm9tX3VzZXIodm9pZCAqdG8sCiAJCWNvbnN0IHZvaWQgX191c2VyICpmcm9tLCB1bnNpZ25lZCBs b25nIG4pCiB7CisJdW5zaWduZWQgbG9uZyByZXMgPSBuOwogCW1pZ2h0X3NsZWVwKCk7Ci0JaWYg KGFjY2Vzc19vayhWRVJJRllfUkVBRCwgZnJvbSwgbikpCi0JCXJldHVybiBfX2NvcHlfZnJvbV91 c2VyKHRvLCBmcm9tLCBuKTsKLQlyZXR1cm4gbjsKKwlpZiAobGlrZWx5KGFjY2Vzc19vayhWRVJJ RllfUkVBRCwgZnJvbSwgbikpKQorCQlyZXMgPSBfX2NvcHlfZnJvbV91c2VyKHRvLCBmcm9tLCBu KTsKKwlpZiAodW5saWtlbHkocmVzKSkKKwkJbWVtc2V0KHRvICsgKG4gLSByZXMpLCAwLCByZXMp OworCXJldHVybiByZXM7CiB9CiAKICNkZWZpbmUgX19jb3B5X3RvX3VzZXIodG8sIGZyb20sIG4p CVwKZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9rZXJuZWwvc2NhbGw2NC1uMzIuUyBiL2FyY2gvbWlw cy9rZXJuZWwvc2NhbGw2NC1uMzIuUwppbmRleCA1NDc2Y2U0Y2EzNWUuLmNmNjg1MjA4NjA1NSAx MDA2NDQKLS0tIGEvYXJjaC9taXBzL2tlcm5lbC9zY2FsbDY0LW4zMi5TCisrKyBiL2FyY2gvbWlw cy9rZXJuZWwvc2NhbGw2NC1uMzIuUwpAQCAtMzY2LDcgKzM2Niw3IEBAIEVYUE9SVChzeXNuMzJf Y2FsbF90YWJsZSkKIAlQVFIJc3lzX25pX3N5c2NhbGwJCQkvKiBhdmFpbGFibGUsIHdhcyBzZXRh bHRyb290ICovCiAJUFRSCXN5c19hZGRfa2V5CiAJUFRSCXN5c19yZXF1ZXN0X2tleQotCVBUUglz eXNfa2V5Y3RsCQkJLyogNjI0NSAqLworCVBUUgljb21wYXRfc3lzX2tleWN0bAkJLyogNjI0NSAq LwogCVBUUglzeXNfc2V0X3RocmVhZF9hcmVhCiAJUFRSCXN5c19pbm90aWZ5X2luaXQKIAlQVFIJ c3lzX2lub3RpZnlfYWRkX3dhdGNoCmRpZmYgLS1naXQgYS9hcmNoL21pcHMva2VybmVsL3NjYWxs NjQtbzMyLlMgYi9hcmNoL21pcHMva2VybmVsL3NjYWxsNjQtbzMyLlMKaW5kZXggNjY1MTc1OWVk ZGUwLi40ZWI1MzkxMDA3ZWUgMTAwNjQ0Ci0tLSBhL2FyY2gvbWlwcy9rZXJuZWwvc2NhbGw2NC1v MzIuUworKysgYi9hcmNoL21pcHMva2VybmVsL3NjYWxsNjQtbzMyLlMKQEAgLTQ4Niw3ICs0ODYs NyBAQCBzeXNfY2FsbF90YWJsZToKIAlQVFIJc3lzX25pX3N5c2NhbGwJCQkvKiBhdmFpbGFibGUs IHdhcyBzZXRhbHRyb290ICovCiAJUFRSCXN5c19hZGRfa2V5CQkJLyogNDI4MCAqLwogCVBUUglz eXNfcmVxdWVzdF9rZXkKLQlQVFIJc3lzX2tleWN0bAorCVBUUgljb21wYXRfc3lzX2tleWN0bAog CVBUUglzeXNfc2V0X3RocmVhZF9hcmVhCiAJUFRSCXN5c19pbm90aWZ5X2luaXQKIAlQVFIJc3lz X2lub3RpZnlfYWRkX3dhdGNoCQkvKiA0Mjg1ICovCmRpZmYgLS1naXQgYS9hcmNoL21pcHMvbW0v c2Mtcm03ay5jIGIvYXJjaC9taXBzL21tL3NjLXJtN2suYwppbmRleCAyNzRhZjNiZTE0NDIuLmEz MGViNWQ3ZDUwYSAxMDA2NDQKLS0tIGEvYXJjaC9taXBzL21tL3NjLXJtN2suYworKysgYi9hcmNo L21pcHMvbW0vc2Mtcm03ay5jCkBAIC0xNjIsNyArMTYyLDcgQEAgc3RhdGljIHZvaWQgcm03a190 Y19kaXNhYmxlKHZvaWQpCiAJbG9jYWxfaXJxX3NhdmUoZmxhZ3MpOwogCWJsYXN0X3JtN2tfdGNh Y2hlKCk7CiAJY2xlYXJfYzBfY29uZmlnKFJNN0tfQ09ORl9URSk7Ci0JbG9jYWxfaXJxX3NhdmUo ZmxhZ3MpOworCWxvY2FsX2lycV9yZXN0b3JlKGZsYWdzKTsKIH0KIAogc3RhdGljIHZvaWQgcm03 a19zY19kaXNhYmxlKHZvaWQpCmRpZmYgLS1naXQgYS9hcmNoL21uMTAzMDAvaW5jbHVkZS9hc20v dWFjY2Vzcy5oIGIvYXJjaC9tbjEwMzAwL2luY2x1ZGUvYXNtL3VhY2Nlc3MuaAppbmRleCA3ODA1 NjBiMzMwZDkuLjU3MGEyNWRiOGRmMiAxMDA2NDQKLS0tIGEvYXJjaC9tbjEwMzAwL2luY2x1ZGUv YXNtL3VhY2Nlc3MuaAorKysgYi9hcmNoL21uMTAzMDAvaW5jbHVkZS9hc20vdWFjY2Vzcy5oCkBA IC0xODEsNiArMTgxLDcgQEAgc3RydWN0IF9fbGFyZ2Vfc3RydWN0IHsgdW5zaWduZWQgbG9uZyBi dWZbMTAwXTsgfTsKIAkJIjI6XG4iCQkJCQkJXAogCQkiCS5zZWN0aW9uCS5maXh1cCxcImF4XCJc biIJXAogCQkiMzpcblx0IgkJCQkJXAorCQkiCW1vdgkJMCwlMVxuIgkJCVwKIAkJIgltb3YJCSUz LCUwXG4iCQlcCiAJCSIJam1wCQkyYlxuIgkJCVwKIAkJIgkucHJldmlvdXNcbiIJCQkJXApkaWZm IC0tZ2l0IGEvYXJjaC9tbjEwMzAwL2xpYi91c2VyY29weS5jIGIvYXJjaC9tbjEwMzAwL2xpYi91 c2VyY29weS5jCmluZGV4IDc4MjZlNmMzNjRlNy4uYTI5YzVkYzJhYjVlIDEwMDY0NAotLS0gYS9h cmNoL21uMTAzMDAvbGliL3VzZXJjb3B5LmMKKysrIGIvYXJjaC9tbjEwMzAwL2xpYi91c2VyY29w eS5jCkBAIC05LDcgKzksOCBAQAogICogYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uCiAgKiAyIG9mIHRoZSBMaWNlbmNlLCBvciAoYXQg eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogICovCi0jaW5jbHVkZSA8YXNtL3VhY2Nl c3MuaD4KKyNpbmNsdWRlIDxsaW51eC9zdHJpbmcuaD4KKyNpbmNsdWRlIDxsaW51eC91YWNjZXNz Lmg+CiAKIHVuc2lnbmVkIGxvbmcKIF9fZ2VuZXJpY19jb3B5X3RvX3VzZXIodm9pZCAqdG8sIGNv bnN0IHZvaWQgKmZyb20sIHVuc2lnbmVkIGxvbmcgbikKQEAgLTI0LDYgKzI1LDggQEAgX19nZW5l cmljX2NvcHlfZnJvbV91c2VyKHZvaWQgKnRvLCBjb25zdCB2b2lkICpmcm9tLCB1bnNpZ25lZCBs b25nIG4pCiB7CiAJaWYgKGFjY2Vzc19vayhWRVJJRllfUkVBRCwgZnJvbSwgbikpCiAJCV9fY29w eV91c2VyX3plcm9pbmcodG8sIGZyb20sIG4pOworCWVsc2UKKwkJbWVtc2V0KHRvLCAwLCBuKTsK IAlyZXR1cm4gbjsKIH0KIApkaWZmIC0tZ2l0IGEvYXJjaC9vcGVucmlzYy9pbmNsdWRlL2FzbS91 YWNjZXNzLmggYi9hcmNoL29wZW5yaXNjL2luY2x1ZGUvYXNtL3VhY2Nlc3MuaAppbmRleCBjMzEw ZTQ1YjUzOGUuLjFhY2ZlNTJmNjkyOSAxMDA2NDQKLS0tIGEvYXJjaC9vcGVucmlzYy9pbmNsdWRl L2FzbS91YWNjZXNzLmgKKysrIGIvYXJjaC9vcGVucmlzYy9pbmNsdWRlL2FzbS91YWNjZXNzLmgK QEAgLTI3NCwyOCArMjc0LDIwIEBAIF9fY29weV90b2Zyb21fdXNlcih2b2lkICp0bywgY29uc3Qg dm9pZCAqZnJvbSwgdW5zaWduZWQgbG9uZyBzaXplKTsKIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQg bG9uZwogY29weV9mcm9tX3VzZXIodm9pZCAqdG8sIGNvbnN0IHZvaWQgKmZyb20sIHVuc2lnbmVk IGxvbmcgbikKIHsKLQl1bnNpZ25lZCBsb25nIG92ZXI7Ci0KLQlpZiAoYWNjZXNzX29rKFZFUklG WV9SRUFELCBmcm9tLCBuKSkKLQkJcmV0dXJuIF9fY29weV90b2Zyb21fdXNlcih0bywgZnJvbSwg bik7Ci0JaWYgKCh1bnNpZ25lZCBsb25nKWZyb20gPCBUQVNLX1NJWkUpIHsKLQkJb3ZlciA9ICh1 bnNpZ25lZCBsb25nKWZyb20gKyBuIC0gVEFTS19TSVpFOwotCQlyZXR1cm4gX19jb3B5X3RvZnJv bV91c2VyKHRvLCBmcm9tLCBuIC0gb3ZlcikgKyBvdmVyOwotCX0KLQlyZXR1cm4gbjsKKwl1bnNp Z25lZCBsb25nIHJlcyA9IG47CisKKwlpZiAobGlrZWx5KGFjY2Vzc19vayhWRVJJRllfUkVBRCwg ZnJvbSwgbikpKQorCQlyZXMgPSBfX2NvcHlfdG9mcm9tX3VzZXIodG8sIGZyb20sIG4pOworCWlm ICh1bmxpa2VseShyZXMpKQorCQltZW1zZXQodG8gKyAobiAtIHJlcyksIDAsIHJlcyk7CisJcmV0 dXJuIHJlczsKIH0KIAogc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nCiBjb3B5X3RvX3VzZXIo dm9pZCAqdG8sIGNvbnN0IHZvaWQgKmZyb20sIHVuc2lnbmVkIGxvbmcgbikKIHsKLQl1bnNpZ25l ZCBsb25nIG92ZXI7Ci0KLQlpZiAoYWNjZXNzX29rKFZFUklGWV9XUklURSwgdG8sIG4pKQotCQly ZXR1cm4gX19jb3B5X3RvZnJvbV91c2VyKHRvLCBmcm9tLCBuKTsKLQlpZiAoKHVuc2lnbmVkIGxv bmcpdG8gPCBUQVNLX1NJWkUpIHsKLQkJb3ZlciA9ICh1bnNpZ25lZCBsb25nKXRvICsgbiAtIFRB U0tfU0laRTsKLQkJcmV0dXJuIF9fY29weV90b2Zyb21fdXNlcih0bywgZnJvbSwgbiAtIG92ZXIp ICsgb3ZlcjsKLQl9CisJaWYgKGxpa2VseShhY2Nlc3Nfb2soVkVSSUZZX1dSSVRFLCB0bywgbikp KQorCQluID0gX19jb3B5X3RvZnJvbV91c2VyKHRvLCBmcm9tLCBuKTsKIAlyZXR1cm4gbjsKIH0K IApAQCAtMzA0LDEzICsyOTYsOCBAQCBleHRlcm4gdW5zaWduZWQgbG9uZyBfX2NsZWFyX3VzZXIo dm9pZCAqYWRkciwgdW5zaWduZWQgbG9uZyBzaXplKTsKIHN0YXRpYyBpbmxpbmUgX19tdXN0X2No ZWNrIHVuc2lnbmVkIGxvbmcKIGNsZWFyX3VzZXIodm9pZCAqYWRkciwgdW5zaWduZWQgbG9uZyBz aXplKQogewotCi0JaWYgKGFjY2Vzc19vayhWRVJJRllfV1JJVEUsIGFkZHIsIHNpemUpKQotCQly ZXR1cm4gX19jbGVhcl91c2VyKGFkZHIsIHNpemUpOwotCWlmICgodW5zaWduZWQgbG9uZylhZGRy IDwgVEFTS19TSVpFKSB7Ci0JCXVuc2lnbmVkIGxvbmcgb3ZlciA9ICh1bnNpZ25lZCBsb25nKWFk ZHIgKyBzaXplIC0gVEFTS19TSVpFOwotCQlyZXR1cm4gX19jbGVhcl91c2VyKGFkZHIsIHNpemUg LSBvdmVyKSArIG92ZXI7Ci0JfQorCWlmIChsaWtlbHkoYWNjZXNzX29rKFZFUklGWV9XUklURSwg YWRkciwgc2l6ZSkpKQorCQlzaXplID0gX19jbGVhcl91c2VyKGFkZHIsIHNpemUpOwogCXJldHVy biBzaXplOwogfQogCmRpZmYgLS1naXQgYS9hcmNoL3BhcmlzYy9pbmNsdWRlL2FzbS9lcnJuby5o IGIvYXJjaC9wYXJpc2MvaW5jbHVkZS9hc20vZXJybm8uaAppbmRleCAxMzVhZDYwNDdlNTEuLjI5 MDExMmVkYjljYSAxMDA2NDQKLS0tIGEvYXJjaC9wYXJpc2MvaW5jbHVkZS9hc20vZXJybm8uaAor KysgYi9hcmNoL3BhcmlzYy9pbmNsdWRlL2FzbS9lcnJuby5oCkBAIC05NywxMCArOTcsMTAgQEAK ICNkZWZpbmUJRU5PVENPTk4JMjM1CS8qIFRyYW5zcG9ydCBlbmRwb2ludCBpcyBub3QgY29ubmVj dGVkICovCiAjZGVmaW5lCUVTSFVURE9XTgkyMzYJLyogQ2Fubm90IHNlbmQgYWZ0ZXIgdHJhbnNw b3J0IGVuZHBvaW50IHNodXRkb3duICovCiAjZGVmaW5lCUVUT09NQU5ZUkVGUwkyMzcJLyogVG9v IG1hbnkgcmVmZXJlbmNlczogY2Fubm90IHNwbGljZSAqLwotI2RlZmluZSBFUkVGVVNFRAlFQ09O TlJFRlVTRUQJLyogZm9yIEhQJ3MgTkZTIGFwcGFyZW50bHkgKi8KICNkZWZpbmUJRVRJTUVET1VU CTIzOAkvKiBDb25uZWN0aW9uIHRpbWVkIG91dCAqLwogI2RlZmluZQlFQ09OTlJFRlVTRUQJMjM5 CS8qIENvbm5lY3Rpb24gcmVmdXNlZCAqLwotI2RlZmluZSBFUkVNT1RFUkVMRUFTRQkyNDAJLyog UmVtb3RlIHBlZXIgcmVsZWFzZWQgY29ubmVjdGlvbiAqLworI2RlZmluZQlFUkVGVVNFRAlFQ09O TlJFRlVTRUQJLyogZm9yIEhQJ3MgTkZTIGFwcGFyZW50bHkgKi8KKyNkZWZpbmUJRVJFTU9URVJF TEVBU0UJMjQwCS8qIFJlbW90ZSBwZWVyIHJlbGVhc2VkIGNvbm5lY3Rpb24gKi8KICNkZWZpbmUJ RUhPU1RET1dOCTI0MQkvKiBIb3N0IGlzIGRvd24gKi8KICNkZWZpbmUJRUhPU1RVTlJFQUNICTI0 MgkvKiBObyByb3V0ZSB0byBob3N0ICovCiAKZGlmZiAtLWdpdCBhL2FyY2gvcGFyaXNjL2luY2x1 ZGUvYXNtL3VhY2Nlc3MuaCBiL2FyY2gvcGFyaXNjL2luY2x1ZGUvYXNtL3VhY2Nlc3MuaAppbmRl eCAzMzczNTNkZTIzN2IuLmE2MTU0MDM5MDdhMiAxMDA2NDQKLS0tIGEvYXJjaC9wYXJpc2MvaW5j bHVkZS9hc20vdWFjY2Vzcy5oCisrKyBiL2FyY2gvcGFyaXNjL2luY2x1ZGUvYXNtL3VhY2Nlc3Mu aApAQCAtMTAsNiArMTAsOCBAQAogI2luY2x1ZGUgPGFzbS9lcnJuby5oPgogI2luY2x1ZGUgPGFz bS1nZW5lcmljL3VhY2Nlc3MtdW5hbGlnbmVkLmg+CiAKKyNpbmNsdWRlIDxsaW51eC9zdHJpbmcu aD4KKwogI2RlZmluZSBWRVJJRllfUkVBRCAwCiAjZGVmaW5lIFZFUklGWV9XUklURSAxCiAKQEAg LTI1NSwxMyArMjU3LDE0IEBAIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBfX211c3RfY2hl Y2sgY29weV9mcm9tX3VzZXIodm9pZCAqdG8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIG4pCiB7CiAgICAgICAgIGludCBzeiA9IF9fY29t cGlsZXRpbWVfb2JqZWN0X3NpemUodG8pOwotICAgICAgICBpbnQgcmV0ID0gLUVGQVVMVDsKKyAg ICAgICAgdW5zaWduZWQgbG9uZyByZXQgPSBuOwogCiAgICAgICAgIGlmIChsaWtlbHkoc3ogPT0g LTEgfHwgIV9fYnVpbHRpbl9jb25zdGFudF9wKG4pIHx8IHN6ID49IG4pKQogICAgICAgICAgICAg ICAgIHJldCA9IF9fY29weV9mcm9tX3VzZXIodG8sIGZyb20sIG4pOwogICAgICAgICBlbHNlCiAg ICAgICAgICAgICAgICAgY29weV9mcm9tX3VzZXJfb3ZlcmZsb3coKTsKLQorCWlmICh1bmxpa2Vs eShyZXQpKQorCQltZW1zZXQodG8gKyAobiAtIHJldCksIDAsIHJldCk7CiAgICAgICAgIHJldHVy biByZXQ7CiB9CiAKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS91YWNjZXNz LmggYi9hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vdWFjY2Vzcy5oCmluZGV4IGJkMGZiODQ5NTE1 NC4uNGQ0YTMwY2NjMjQ5IDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vdWFj Y2Vzcy5oCisrKyBiL2FyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS91YWNjZXNzLmgKQEAgLTMzMiwz MCArMzMyLDE3IEBAIGV4dGVybiB1bnNpZ25lZCBsb25nIF9fY29weV90b2Zyb21fdXNlcih2b2lk IF9fdXNlciAqdG8sCiBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgY29weV9mcm9tX3VzZXIo dm9pZCAqdG8sCiAJCWNvbnN0IHZvaWQgX191c2VyICpmcm9tLCB1bnNpZ25lZCBsb25nIG4pCiB7 Ci0JdW5zaWduZWQgbG9uZyBvdmVyOwotCi0JaWYgKGFjY2Vzc19vayhWRVJJRllfUkVBRCwgZnJv bSwgbikpCisJaWYgKGxpa2VseShhY2Nlc3Nfb2soVkVSSUZZX1JFQUQsIGZyb20sIG4pKSkKIAkJ cmV0dXJuIF9fY29weV90b2Zyb21fdXNlcigoX19mb3JjZSB2b2lkIF9fdXNlciAqKXRvLCBmcm9t LCBuKTsKLQlpZiAoKHVuc2lnbmVkIGxvbmcpZnJvbSA8IFRBU0tfU0laRSkgewotCQlvdmVyID0g KHVuc2lnbmVkIGxvbmcpZnJvbSArIG4gLSBUQVNLX1NJWkU7Ci0JCXJldHVybiBfX2NvcHlfdG9m cm9tX3VzZXIoKF9fZm9yY2Ugdm9pZCBfX3VzZXIgKil0bywgZnJvbSwKLQkJCQluIC0gb3Zlcikg KyBvdmVyOwotCX0KKwltZW1zZXQodG8sIDAsIG4pOwogCXJldHVybiBuOwogfQogCiBzdGF0aWMg aW5saW5lIHVuc2lnbmVkIGxvbmcgY29weV90b191c2VyKHZvaWQgX191c2VyICp0bywKIAkJY29u c3Qgdm9pZCAqZnJvbSwgdW5zaWduZWQgbG9uZyBuKQogewotCXVuc2lnbmVkIGxvbmcgb3ZlcjsK LQogCWlmIChhY2Nlc3Nfb2soVkVSSUZZX1dSSVRFLCB0bywgbikpCiAJCXJldHVybiBfX2NvcHlf dG9mcm9tX3VzZXIodG8sIChfX2ZvcmNlIHZvaWQgX191c2VyICopZnJvbSwgbik7Ci0JaWYgKCh1 bnNpZ25lZCBsb25nKXRvIDwgVEFTS19TSVpFKSB7Ci0JCW92ZXIgPSAodW5zaWduZWQgbG9uZyl0 byArIG4gLSBUQVNLX1NJWkU7Ci0JCXJldHVybiBfX2NvcHlfdG9mcm9tX3VzZXIodG8sIChfX2Zv cmNlIHZvaWQgX191c2VyICopZnJvbSwKLQkJCQluIC0gb3ZlcikgKyBvdmVyOwotCX0KIAlyZXR1 cm4gbjsKIH0KIApAQCAtNDQ2LDEwICs0MzMsNiBAQCBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxv bmcgY2xlYXJfdXNlcih2b2lkIF9fdXNlciAqYWRkciwgdW5zaWduZWQgbG9uZyBzaXplKQogCW1p Z2h0X3NsZWVwKCk7CiAJaWYgKGxpa2VseShhY2Nlc3Nfb2soVkVSSUZZX1dSSVRFLCBhZGRyLCBz aXplKSkpCiAJCXJldHVybiBfX2NsZWFyX3VzZXIoYWRkciwgc2l6ZSk7Ci0JaWYgKCh1bnNpZ25l ZCBsb25nKWFkZHIgPCBUQVNLX1NJWkUpIHsKLQkJdW5zaWduZWQgbG9uZyBvdmVyID0gKHVuc2ln bmVkIGxvbmcpYWRkciArIHNpemUgLSBUQVNLX1NJWkU7Ci0JCXJldHVybiBfX2NsZWFyX3VzZXIo YWRkciwgc2l6ZSAtIG92ZXIpICsgb3ZlcjsKLQl9CiAJcmV0dXJuIHNpemU7CiB9CiAKZGlmZiAt LWdpdCBhL2FyY2gvcG93ZXJwYy9tbS9udW1hLmMgYi9hcmNoL3Bvd2VycGMvbW0vbnVtYS5jCmlu ZGV4IGY0Yjc4YTM5Yjc5Yi4uOWE1ZWM5YWFjYmMxIDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMv bW0vbnVtYS5jCisrKyBiL2FyY2gvcG93ZXJwYy9tbS9udW1hLmMKQEAgLTEyNzUsMTcgKzEyNzUs MzMgQEAgaW50IGhvdF9hZGRfc2NuX3RvX25pZCh1bnNpZ25lZCBsb25nIHNjbl9hZGRyKQogc3Rh dGljIHU2NCBob3RfYWRkX2RyY29uZl9tZW1vcnlfbWF4KHZvaWQpCiB7CiAgICAgICAgIHN0cnVj dCBkZXZpY2Vfbm9kZSAqbWVtb3J5ID0gTlVMTDsKKwlzdHJ1Y3QgZGV2aWNlX25vZGUgKmRuID0g TlVMTDsKICAgICAgICAgdW5zaWduZWQgaW50IGRyY29uZl9jZWxsX2NudCA9IDA7CiAgICAgICAg IHU2NCBsbWJfc2l6ZSA9IDA7CiAgICAgICAgIGNvbnN0IHUzMiAqZG0gPSAwOworCWNvbnN0IF9f YmU2NCAqbHJkciA9IE5VTEw7CisJc3RydWN0IG9mX2RyY29uZl9jZWxsIGRybWVtOworCisJZG4g PSBvZl9maW5kX25vZGVfYnlfcGF0aCgiL3J0YXMiKTsKKwlpZiAoZG4pIHsKKwkJbHJkciA9IG9m X2dldF9wcm9wZXJ0eShkbiwgImlibSxscmRyLWNhcGFjaXR5IiwgTlVMTCk7CisJCW9mX25vZGVf cHV0KGRuKTsKKwkJaWYgKGxyZHIpCisJCQlyZXR1cm4gYmU2NF90b19jcHVwKGxyZHIpOworCX0K IAogICAgICAgICBtZW1vcnkgPSBvZl9maW5kX25vZGVfYnlfcGF0aCgiL2libSxkeW5hbWljLXJl Y29uZmlndXJhdGlvbi1tZW1vcnkiKTsKICAgICAgICAgaWYgKG1lbW9yeSkgewogICAgICAgICAg ICAgICAgIGRyY29uZl9jZWxsX2NudCA9IG9mX2dldF9kcmNvbmZfbWVtb3J5KG1lbW9yeSwgJmRt KTsKICAgICAgICAgICAgICAgICBsbWJfc2l6ZSA9IG9mX2dldF9sbWJfc2l6ZShtZW1vcnkpOwor CisJCS8qIEFkdmFuY2UgdG8gdGhlIGxhc3QgY2VsbCwgZWFjaCBjZWxsIGhhcyA2IDMyIGJpdCBp bnRlZ2VycyAqLworCQlkbSArPSAoZHJjb25mX2NlbGxfY250IC0gMSkgKiA2OworCQlyZWFkX2Ry Y29uZl9jZWxsKCZkcm1lbSwgJmRtKTsKICAgICAgICAgICAgICAgICBvZl9ub2RlX3B1dChtZW1v cnkpOworCQlyZXR1cm4gZHJtZW0uYmFzZV9hZGRyICsgbG1iX3NpemU7CiAgICAgICAgIH0KLSAg ICAgICAgcmV0dXJuIGxtYl9zaXplICogZHJjb25mX2NlbGxfY250OworCXJldHVybiAwOwogfQog CiAvKgpkaWZmIC0tZ2l0IGEvYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2F1eHZlYy5oIGIvYXJjaC9z MzkwL2luY2x1ZGUvYXNtL2F1eHZlYy5oCmluZGV4IGExZjE1M2U4OTEzMy4uYzUzZTA4NDQyMjU1 IDEwMDY0NAotLS0gYS9hcmNoL3MzOTAvaW5jbHVkZS9hc20vYXV4dmVjLmgKKysrIGIvYXJjaC9z MzkwL2luY2x1ZGUvYXNtL2F1eHZlYy5oCkBAIC0zLDQgKzMsNiBAQAogCiAjZGVmaW5lIEFUX1NZ U0lORk9fRUhEUgkJMzMKIAorI2RlZmluZSBBVF9WRUNUT1JfU0laRV9BUkNIIDEgLyogZW50cmll cyBpbiBBUkNIX0RMSU5GTyAqLworCiAjZW5kaWYKZGlmZiAtLWdpdCBhL2FyY2gvczM5MC9pbmNs dWRlL2FzbS9lbGYuaCBiL2FyY2gvczM5MC9pbmNsdWRlL2FzbS9lbGYuaAppbmRleCA1NDdmMWE2 YTM1ZDQuLmM2ZTRjODM3YzI0OCAxMDA2NDQKLS0tIGEvYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2Vs Zi5oCisrKyBiL2FyY2gvczM5MC9pbmNsdWRlL2FzbS9lbGYuaApAQCAtMTk5LDYgKzE5OSw3IEBA IGRvIHsJCQkJCQkJCVwKIAogI2RlZmluZSBTVEFDS19STkRfTUFTSwkweDdmZlVMCiAKKy8qIHVw ZGF0ZSBBVF9WRUNUT1JfU0laRV9BUkNIIGlmIHRoZSBudW1iZXIgb2YgTkVXX0FVWF9FTlQgZW50 cmllcyBjaGFuZ2VzICovCiAjZGVmaW5lIEFSQ0hfRExJTkZPCQkJCQkJCSAgICBcCiBkbyB7CQkJ CQkJCQkJICAgIFwKIAlpZiAodmRzb19lbmFibGVkKQkJCQkJCSAgICBcCmRpZmYgLS1naXQgYS9h cmNoL3MzOTAvaW5jbHVkZS9hc20vdWFjY2Vzcy5oIGIvYXJjaC9zMzkwL2luY2x1ZGUvYXNtL3Vh Y2Nlc3MuaAppbmRleCAyYjIzODg1ZTgxZTkuLjdhZWU0MWI2MjRmZiAxMDA2NDQKLS0tIGEvYXJj aC9zMzkwL2luY2x1ZGUvYXNtL3VhY2Nlc3MuaAorKysgYi9hcmNoL3MzOTAvaW5jbHVkZS9hc20v dWFjY2Vzcy5oCkBAIC0xNDcsMjggKzE0NywyOCBAQCBleHRlcm4gaW50IF9fcHV0X3VzZXJfYmFk KHZvaWQpIF9fYXR0cmlidXRlX18oKG5vcmV0dXJuKSk7CiAJX19jaGtfdXNlcl9wdHIocHRyKTsJ CQkJCVwKIAlzd2l0Y2ggKHNpemVvZigqKHB0cikpKSB7CQkJCVwKIAljYXNlIDE6IHsJCQkJCQlc Ci0JCXVuc2lnbmVkIGNoYXIgX194OwkJCQlcCisJCXVuc2lnbmVkIGNoYXIgX194ID0gMDsJCQkJ XAogCQlfX2d1X2VyciA9IF9fZ2V0X3VzZXJfZm4oc2l6ZW9mICgqKHB0cikpLAlcCiAJCQkJCSBw dHIsICZfX3gpOwkJXAogCQkoeCkgPSAqKF9fZm9yY2UgX190eXBlb2ZfXygqKHB0cikpICopICZf X3g7CVwKIAkJYnJlYWs7CQkJCQkJXAogCX07CQkJCQkJCVwKIAljYXNlIDI6IHsJCQkJCQlcCi0J CXVuc2lnbmVkIHNob3J0IF9feDsJCQkJXAorCQl1bnNpZ25lZCBzaG9ydCBfX3ggPSAwOwkJCQlc CiAJCV9fZ3VfZXJyID0gX19nZXRfdXNlcl9mbihzaXplb2YgKCoocHRyKSksCVwKIAkJCQkJIHB0 ciwgJl9feCk7CQlcCiAJCSh4KSA9ICooX19mb3JjZSBfX3R5cGVvZl9fKCoocHRyKSkgKikgJl9f eDsJXAogCQlicmVhazsJCQkJCQlcCiAJfTsJCQkJCQkJXAogCWNhc2UgNDogewkJCQkJCVwKLQkJ dW5zaWduZWQgaW50IF9feDsJCQkJXAorCQl1bnNpZ25lZCBpbnQgX194ID0gMDsJCQkJXAogCQlf X2d1X2VyciA9IF9fZ2V0X3VzZXJfZm4oc2l6ZW9mICgqKHB0cikpLAlcCiAJCQkJCSBwdHIsICZf X3gpOwkJXAogCQkoeCkgPSAqKF9fZm9yY2UgX190eXBlb2ZfXygqKHB0cikpICopICZfX3g7CVwK IAkJYnJlYWs7CQkJCQkJXAogCX07CQkJCQkJCVwKIAljYXNlIDg6IHsJCQkJCQlcCi0JCXVuc2ln bmVkIGxvbmcgbG9uZyBfX3g7CQkJCVwKKwkJdW5zaWduZWQgbG9uZyBsb25nIF9feCA9IDA7CQkJ XAogCQlfX2d1X2VyciA9IF9fZ2V0X3VzZXJfZm4oc2l6ZW9mICgqKHB0cikpLAlcCiAJCQkJCSBw dHIsICZfX3gpOwkJXAogCQkoeCkgPSAqKF9fZm9yY2UgX190eXBlb2ZfXygqKHB0cikpICopICZf X3g7CVwKZGlmZiAtLWdpdCBhL2FyY2gvc2NvcmUvaW5jbHVkZS9hc20vdWFjY2Vzcy5oIGIvYXJj aC9zY29yZS9pbmNsdWRlL2FzbS91YWNjZXNzLmgKaW5kZXggYWI2NmRkZGU3NzdiLi42OTMyNmRm Yjg5NGQgMTAwNjQ0Ci0tLSBhL2FyY2gvc2NvcmUvaW5jbHVkZS9hc20vdWFjY2Vzcy5oCisrKyBi L2FyY2gvc2NvcmUvaW5jbHVkZS9hc20vdWFjY2Vzcy5oCkBAIC0xNTgsNyArMTU4LDcgQEAgZG8g ewkJCQkJCQkJCVwKIAkJX19nZXRfdXNlcl9hc20odmFsLCAibHciLCBwdHIpOwkJCQlcCiAJCSBi cmVhazsJCQkJCQkJXAogCWNhc2UgODogCQkJCQkJCVwKLQkJaWYgKChjb3B5X2Zyb21fdXNlcigo dm9pZCAqKSZ2YWwsIHB0ciwgOCkpID09IDApCVwKKwkJaWYgKF9fY29weV9mcm9tX3VzZXIoKHZv aWQgKikmdmFsLCBwdHIsIDgpID09IDApCVwKIAkJCV9fZ3VfZXJyID0gMDsJCQkJCVwKIAkJZWxz ZQkJCQkJCQlcCiAJCQlfX2d1X2VyciA9IC1FRkFVTFQ7CQkJCVwKQEAgLTE4Myw2ICsxODMsOCBA QCBkbyB7CQkJCQkJCQkJXAogCQkJCQkJCQkJXAogCWlmIChsaWtlbHkoYWNjZXNzX29rKFZFUklG WV9SRUFELCBfX2d1X3B0ciwgc2l6ZSkpKQkJXAogCQlfX2dldF91c2VyX2NvbW1vbigoeCksIHNp emUsIF9fZ3VfcHRyKTsJCQlcCisJZWxzZQkJCQkJCQkJXAorCQkoeCkgPSAwOwkJCQkJCVwKIAkJ CQkJCQkJCVwKIAlfX2d1X2VycjsJCQkJCQkJXAogfSkKQEAgLTE5Niw2ICsxOTgsNyBAQCBkbyB7 CQkJCQkJCQkJXAogCQkiMjpcbiIJCQkJCQkJXAogCQkiLnNlY3Rpb24gLmZpeHVwLFwiYXhcIlxu IgkJCQlcCiAJCSIzOmxpCSUwLCAlNFxuIgkJCQkJXAorCQkibGkJJTEsIDBcbiIJCQkJCVwKIAkJ ImoJMmJcbiIJCQkJCQlcCiAJCSIucHJldmlvdXNcbiIJCQkJCQlcCiAJCSIuc2VjdGlvbiBfX2V4 X3RhYmxlLFwiYVwiXG4iCQkJCVwKQEAgLTI5MywzNSArMjk2LDM0IEBAIGV4dGVybiBpbnQgX19j b3B5X3RvZnJvbV91c2VyKHZvaWQgKnRvLCBjb25zdCB2b2lkICpmcm9tLCB1bnNpZ25lZCBsb25n IGxlbik7CiBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcKIGNvcHlfZnJvbV91c2VyKHZvaWQg KnRvLCBjb25zdCB2b2lkICpmcm9tLCB1bnNpZ25lZCBsb25nIGxlbikKIHsKLQl1bnNpZ25lZCBs b25nIG92ZXI7CisJdW5zaWduZWQgbG9uZyByZXMgPSBsZW47CiAKLQlpZiAoYWNjZXNzX29rKFZF UklGWV9SRUFELCBmcm9tLCBsZW4pKQotCQlyZXR1cm4gX19jb3B5X3RvZnJvbV91c2VyKHRvLCBm cm9tLCBsZW4pOworCWlmIChsaWtlbHkoYWNjZXNzX29rKFZFUklGWV9SRUFELCBmcm9tLCBsZW4p KSkKKwkJcmVzID0gX19jb3B5X3RvZnJvbV91c2VyKHRvLCBmcm9tLCBsZW4pOwogCi0JaWYgKCh1 bnNpZ25lZCBsb25nKWZyb20gPCBUQVNLX1NJWkUpIHsKLQkJb3ZlciA9ICh1bnNpZ25lZCBsb25n KWZyb20gKyBsZW4gLSBUQVNLX1NJWkU7Ci0JCXJldHVybiBfX2NvcHlfdG9mcm9tX3VzZXIodG8s IGZyb20sIGxlbiAtIG92ZXIpICsgb3ZlcjsKLQl9Ci0JcmV0dXJuIGxlbjsKKwlpZiAodW5saWtl bHkocmVzKSkKKwkJbWVtc2V0KHRvICsgKGxlbiAtIHJlcyksIDAsIHJlcyk7CisKKwlyZXR1cm4g cmVzOwogfQogCiBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcKIGNvcHlfdG9fdXNlcih2b2lk ICp0bywgY29uc3Qgdm9pZCAqZnJvbSwgdW5zaWduZWQgbG9uZyBsZW4pCiB7Ci0JdW5zaWduZWQg bG9uZyBvdmVyOwotCi0JaWYgKGFjY2Vzc19vayhWRVJJRllfV1JJVEUsIHRvLCBsZW4pKQotCQly ZXR1cm4gX19jb3B5X3RvZnJvbV91c2VyKHRvLCBmcm9tLCBsZW4pOworCWlmIChsaWtlbHkoYWNj ZXNzX29rKFZFUklGWV9XUklURSwgdG8sIGxlbikpKQorCQlsZW4gPSBfX2NvcHlfdG9mcm9tX3Vz ZXIodG8sIGZyb20sIGxlbik7CiAKLQlpZiAoKHVuc2lnbmVkIGxvbmcpdG8gPCBUQVNLX1NJWkUp IHsKLQkJb3ZlciA9ICh1bnNpZ25lZCBsb25nKXRvICsgbGVuIC0gVEFTS19TSVpFOwotCQlyZXR1 cm4gX19jb3B5X3RvZnJvbV91c2VyKHRvLCBmcm9tLCBsZW4gLSBvdmVyKSArIG92ZXI7Ci0JfQog CXJldHVybiBsZW47CiB9CiAKLSNkZWZpbmUgX19jb3B5X2Zyb21fdXNlcih0bywgZnJvbSwgbGVu KQlcCi0JCV9fY29weV90b2Zyb21fdXNlcigodG8pLCAoZnJvbSksIChsZW4pKQorc3RhdGljIGlu bGluZSB1bnNpZ25lZCBsb25nCitfX2NvcHlfZnJvbV91c2VyKHZvaWQgKnRvLCBjb25zdCB2b2lk ICpmcm9tLCB1bnNpZ25lZCBsb25nIGxlbikKK3sKKwl1bnNpZ25lZCBsb25nIGxlZnQgPSBfX2Nv cHlfdG9mcm9tX3VzZXIodG8sIGZyb20sIGxlbik7CisJaWYgKHVubGlrZWx5KGxlZnQpKQorCQlt ZW1zZXQodG8gKyAobGVuIC0gbGVmdCksIDAsIGxlZnQpOworCXJldHVybiBsZWZ0OworfQogCiAj ZGVmaW5lIF9fY29weV90b191c2VyKHRvLCBmcm9tLCBsZW4pCQlcCiAJCV9fY29weV90b2Zyb21f dXNlcigodG8pLCAoZnJvbSksIChsZW4pKQpAQCAtMzM1LDE3ICszMzcsMTcgQEAgX19jb3B5X3Rv X3VzZXJfaW5hdG9taWModm9pZCAqdG8sIGNvbnN0IHZvaWQgKmZyb20sIHVuc2lnbmVkIGxvbmcg bGVuKQogc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nCiBfX2NvcHlfZnJvbV91c2VyX2luYXRv bWljKHZvaWQgKnRvLCBjb25zdCB2b2lkICpmcm9tLCB1bnNpZ25lZCBsb25nIGxlbikKIHsKLQly ZXR1cm4gX19jb3B5X2Zyb21fdXNlcih0bywgZnJvbSwgbGVuKTsKKwlyZXR1cm4gX19jb3B5X3Rv ZnJvbV91c2VyKHRvLCBmcm9tLCBsZW4pOwogfQogCi0jZGVmaW5lIF9fY29weV9pbl91c2VyKHRv LCBmcm9tLCBsZW4pCV9fY29weV9mcm9tX3VzZXIodG8sIGZyb20sIGxlbikKKyNkZWZpbmUgX19j b3B5X2luX3VzZXIodG8sIGZyb20sIGxlbikJX19jb3B5X3RvZnJvbV91c2VyKHRvLCBmcm9tLCBs ZW4pCiAKIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZwogY29weV9pbl91c2VyKHZvaWQgKnRv LCBjb25zdCB2b2lkICpmcm9tLCB1bnNpZ25lZCBsb25nIGxlbikKIHsKIAlpZiAoYWNjZXNzX29r KFZFUklGWV9SRUFELCBmcm9tLCBsZW4pICYmCiAJCSAgICAgIGFjY2Vzc19vayhWRVJGSVRZX1dS SVRFLCB0bywgbGVuKSkKLQkJcmV0dXJuIGNvcHlfZnJvbV91c2VyKHRvLCBmcm9tLCBsZW4pOwor CQlyZXR1cm4gX19jb3B5X3RvZnJvbV91c2VyKHRvLCBmcm9tLCBsZW4pOwogfQogCiAvKgpkaWZm IC0tZ2l0IGEvYXJjaC9zaC9pbmNsdWRlL2FzbS91YWNjZXNzLmggYi9hcmNoL3NoL2luY2x1ZGUv YXNtL3VhY2Nlc3MuaAppbmRleCAwNzU4NDhmNDNiNmEuLjBlNzk3MTE4NWJlNSAxMDA2NDQKLS0t IGEvYXJjaC9zaC9pbmNsdWRlL2FzbS91YWNjZXNzLmgKKysrIGIvYXJjaC9zaC9pbmNsdWRlL2Fz bS91YWNjZXNzLmgKQEAgLTE3NSw3ICsxNzUsMTAgQEAgY29weV9mcm9tX3VzZXIodm9pZCAqdG8s IGNvbnN0IHZvaWQgX191c2VyICpmcm9tLCB1bnNpZ25lZCBsb25nIG4pCiAJX19rZXJuZWxfc2l6 ZV90IF9fY29weV9zaXplID0gKF9fa2VybmVsX3NpemVfdCkgbjsKIAogCWlmIChfX2NvcHlfc2l6 ZSAmJiBfX2FjY2Vzc19vayhfX2NvcHlfZnJvbSwgX19jb3B5X3NpemUpKQotCQlyZXR1cm4gX19j b3B5X3VzZXIodG8sIGZyb20sIF9fY29weV9zaXplKTsKKwkJX19jb3B5X3NpemUgPSBfX2NvcHlf dXNlcih0bywgZnJvbSwgX19jb3B5X3NpemUpOworCisJaWYgKHVubGlrZWx5KF9fY29weV9zaXpl KSkKKwkJbWVtc2V0KHRvICsgKG4gLSBfX2NvcHlfc2l6ZSksIDAsIF9fY29weV9zaXplKTsKIAog CXJldHVybiBfX2NvcHlfc2l6ZTsKIH0KZGlmZiAtLWdpdCBhL2FyY2gvc2gvaW5jbHVkZS9hc20v dWFjY2Vzc182NC5oIGIvYXJjaC9zaC9pbmNsdWRlL2FzbS91YWNjZXNzXzY0LmgKaW5kZXggNTZm ZDIwYjhjZGNjLi4xYTQ4YTRhYjhjNjkgMTAwNjQ0Ci0tLSBhL2FyY2gvc2gvaW5jbHVkZS9hc20v dWFjY2Vzc182NC5oCisrKyBiL2FyY2gvc2gvaW5jbHVkZS9hc20vdWFjY2Vzc182NC5oCkBAIC0y NCw2ICsyNCw3IEBACiAjZGVmaW5lIF9fZ2V0X3VzZXJfc2l6ZSh4LHB0cixzaXplLHJldHZhbCkJ CQlcCiBkbyB7CQkJCQkJCQlcCiAJcmV0dmFsID0gMDsJCQkJCQlcCisJeCA9IDA7CQkJCQkJCVwK IAlzd2l0Y2ggKHNpemUpIHsJCQkJCQlcCiAJY2FzZSAxOgkJCQkJCQlcCiAJCXJldHZhbCA9IF9f Z2V0X3VzZXJfYXNtX2IoKHZvaWQgKikmeCwJCVwKZGlmZiAtLWdpdCBhL2FyY2gvc3BhcmMvaW5j bHVkZS9hc20vdWFjY2Vzc18zMi5oIGIvYXJjaC9zcGFyYy9pbmNsdWRlL2FzbS91YWNjZXNzXzMy LmgKaW5kZXggODMwM2FjNDgxMDM0Li40M2MyYTBkZjQzNjggMTAwNjQ0Ci0tLSBhL2FyY2gvc3Bh cmMvaW5jbHVkZS9hc20vdWFjY2Vzc18zMi5oCisrKyBiL2FyY2gvc3BhcmMvaW5jbHVkZS9hc20v dWFjY2Vzc18zMi5oCkBAIC0yNjQsOCArMjY0LDEwIEBAIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQg bG9uZyBjb3B5X2Zyb21fdXNlcih2b2lkICp0bywgY29uc3Qgdm9pZCBfX3VzZXIgKmZyb20sIHVu CiB7CiAJaWYgKG4gJiYgX19hY2Nlc3Nfb2soKHVuc2lnbmVkIGxvbmcpIGZyb20sIG4pKQogCQly ZXR1cm4gX19jb3B5X3VzZXIoKF9fZm9yY2Ugdm9pZCBfX3VzZXIgKikgdG8sIGZyb20sIG4pOwot CWVsc2UKKwllbHNlIHsKKwkJbWVtc2V0KHRvLCAwLCBuKTsKIAkJcmV0dXJuIG47CisJfQogfQog CiBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgX19jb3B5X2Zyb21fdXNlcih2b2lkICp0bywg Y29uc3Qgdm9pZCBfX3VzZXIgKmZyb20sIHVuc2lnbmVkIGxvbmcgbikKZGlmZiAtLWdpdCBhL2Fy Y2gveDg2L2lhMzIvaWEzMmVudHJ5LlMgYi9hcmNoL3g4Ni9pYTMyL2lhMzJlbnRyeS5TCmluZGV4 IDk1YjRlYjM0MjRhMC4uMmI1NTI3NzI2YWUxIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9pYTMyL2lh MzJlbnRyeS5TCisrKyBiL2FyY2gveDg2L2lhMzIvaWEzMmVudHJ5LlMKQEAgLTc5MSw3ICs3OTEs NyBAQCBpYTMyX3N5c19jYWxsX3RhYmxlOgogCS5xdWFkIHF1aWV0X25pX3N5c2NhbGwJCS8qIDI4 NTogc3lzX2FsdHJvb3QgKi8KIAkucXVhZCBzeXNfYWRkX2tleQogCS5xdWFkIHN5c19yZXF1ZXN0 X2tleQotCS5xdWFkIHN5c19rZXljdGwKKwkucXVhZCBjb21wYXRfc3lzX2tleWN0bAogCS5xdWFk IHN5c19pb3ByaW9fc2V0CiAJLnF1YWQgc3lzX2lvcHJpb19nZXQJCS8qIDI5MCAqLwogCS5xdWFk IHN5c19pbm90aWZ5X2luaXQKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL3RsYmZs dXNoLmggYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS90bGJmbHVzaC5oCmluZGV4IDE2OWJlODkzOGI5 Ni4uYTc5NzNkZGYyZDFiIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS90bGJmbHVz aC5oCisrKyBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL3RsYmZsdXNoLmgKQEAgLTE3LDcgKzE3LDE0 IEBACiAKIHN0YXRpYyBpbmxpbmUgdm9pZCBfX25hdGl2ZV9mbHVzaF90bGIodm9pZCkKIHsKKwkv KgorCSAqIElmIGN1cnJlbnQtPm1tID09IE5VTEwgdGhlbiB3ZSBib3Jyb3cgYSBtbSB3aGljaCBt YXkgY2hhbmdlIGR1cmluZyBhCisJICogdGFzayBzd2l0Y2ggYW5kIHRoZXJlZm9yZSB3ZSBtdXN0 IG5vdCBiZSBwcmVlbXB0ZWQgd2hpbGUgd2Ugd3JpdGUgQ1IzCisJICogYmFjazoKKwkgKi8KKwlw cmVlbXB0X2Rpc2FibGUoKTsKIAluYXRpdmVfd3JpdGVfY3IzKG5hdGl2ZV9yZWFkX2NyMygpKTsK KwlwcmVlbXB0X2VuYWJsZSgpOwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQgX19uYXRpdmVfZmx1 c2hfdGxiX2dsb2JhbCh2b2lkKQpkaWZmIC0tZ2l0IGEvYXJjaC94ODYva2VybmVsL2FwaWMvYXBp Yy5jIGIvYXJjaC94ODYva2VybmVsL2FwaWMvYXBpYy5jCmluZGV4IDgzOGEzYjQwYTRiMC4uOGZj ZDkyZTk1ODliIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9rZXJuZWwvYXBpYy9hcGljLmMKKysrIGIv YXJjaC94ODYva2VybmVsL2FwaWMvYXBpYy5jCkBAIC0xNDgxLDYgKzE0ODEsOSBAQCB2b2lkIF9f aW5pdCBlbmFibGVfSVJfeDJhcGljKHZvaWQpCiAJaW50IHJldCwgeDJhcGljX2VuYWJsZWQgPSAw OwogCWludCBkbWFyX3RhYmxlX2luaXRfcmV0OwogCisJaWYgKHNraXBfaW9hcGljX3NldHVwKQor CQlyZXR1cm47CisKIAlkbWFyX3RhYmxlX2luaXRfcmV0ID0gZG1hcl90YWJsZV9pbml0KCk7CiAJ aWYgKGRtYXJfdGFibGVfaW5pdF9yZXQgJiYgIXgyYXBpY19zdXBwb3J0ZWQoKSkKIAkJcmV0dXJu OwpkaWZmIC0tZ2l0IGEvYXJjaC94ODYva2VybmVsL2Vhcmx5LXF1aXJrcy5jIGIvYXJjaC94ODYv a2VybmVsL2Vhcmx5LXF1aXJrcy5jCmluZGV4IDM3NTVlZjQ5NDM5MC4uMDgzYTM2ZWIyYTA2IDEw MDY0NAotLS0gYS9hcmNoL3g4Ni9rZXJuZWwvZWFybHktcXVpcmtzLmMKKysrIGIvYXJjaC94ODYv a2VybmVsL2Vhcmx5LXF1aXJrcy5jCkBAIC0xMSwxMyArMTEsMjAgQEAKIAogI2luY2x1ZGUgPGxp bnV4L3BjaS5oPgogI2luY2x1ZGUgPGxpbnV4L2FjcGkuaD4KKyNpbmNsdWRlIDxsaW51eC9kZWxh eS5oPgorI2luY2x1ZGUgPGxpbnV4L2RtaS5oPgogI2luY2x1ZGUgPGxpbnV4L3BjaV9pZHMuaD4K KyNpbmNsdWRlIDxsaW51eC9iY21hL2JjbWEuaD4KKyNpbmNsdWRlIDxsaW51eC9iY21hL2JjbWFf cmVncy5oPgogI2luY2x1ZGUgPGFzbS9wY2ktZGlyZWN0Lmg+CiAjaW5jbHVkZSA8YXNtL2RtYS5o PgogI2luY2x1ZGUgPGFzbS9pb19hcGljLmg+CiAjaW5jbHVkZSA8YXNtL2FwaWMuaD4KICNpbmNs dWRlIDxhc20vaW9tbXUuaD4KICNpbmNsdWRlIDxhc20vZ2FydC5oPgorI2luY2x1ZGUgPGFzbS9p by5oPgorCisjZGVmaW5lIGRldl9lcnIobXNnKSAgcHJfZXJyKCJwY2kgMDAwMDolMDJ4OiUwMngu JWQ6ICVzIiwgYnVzLCBzbG90LCBmdW5jLCBtc2cpCiAKIHN0YXRpYyB2b2lkIF9faW5pdCBmaXhf aHlwZXJ0cmFuc3BvcnRfY29uZmlnKGludCBudW0sIGludCBzbG90LCBpbnQgZnVuYykKIHsKQEAg LTczLDYgKzgwLDEzIEBAIHN0YXRpYyB2b2lkIF9faW5pdCBudmlkaWFfYnVncyhpbnQgbnVtLCBp bnQgc2xvdCwgaW50IGZ1bmMpCiAjaWZkZWYgQ09ORklHX0FDUEkKICNpZmRlZiBDT05GSUdfWDg2 X0lPX0FQSUMKIAkvKgorCSAqIE9ubHkgYXBwbGllcyB0byBOdmlkaWEgcm9vdCBwb3J0cyAoYnVz IDApIGFuZCBub3QgdG8KKwkgKiBOdmlkaWEgZ3JhcGhpY3MgY2FyZHMgd2l0aCBQQ0kgcG9ydHMg b24gc2Vjb25kYXJ5IGJ1c2VzLgorCSAqLworCWlmIChudW0pCisJCXJldHVybjsKKworCS8qCiAJ ICogQWxsIHRpbWVyIG92ZXJyaWRlcyBvbiBOdmlkaWEgYXJlCiAJICogd3JvbmcgdW5sZXNzIEhQ RVQgaXMgZW5hYmxlZC4KIAkgKiBVbmZvcnR1bmF0ZWx5IHRoYXQncyBub3QgdHJ1ZSBvbiBtYW55 IEFzdXMgYm9hcmRzLgpAQCAtMTkyLDYgKzIwNiw2MiBAQCBzdGF0aWMgdm9pZCBfX2luaXQgYXRp X2J1Z3NfY29udGQoaW50IG51bSwgaW50IHNsb3QsIGludCBmdW5jKQogfQogI2VuZGlmCiAKKyNk ZWZpbmUgQkNNNDMzMV9NTUlPX1NJWkUJMTYzODQKKyNkZWZpbmUgQkNNNDMzMV9QTV9DQVAJCTB4 NDAKKyNkZWZpbmUgYmNtYV9hcmVhZDMyKHJlZykJaW9yZWFkMzIobW1pbyArIDEgKiBCQ01BX0NP UkVfU0laRSArIHJlZykKKyNkZWZpbmUgYmNtYV9hd3JpdGUzMihyZWcsIHZhbCkJaW93cml0ZTMy KHZhbCwgbW1pbyArIDEgKiBCQ01BX0NPUkVfU0laRSArIHJlZykKKworc3RhdGljIHZvaWQgX19p bml0IGFwcGxlX2FpcnBvcnRfcmVzZXQoaW50IGJ1cywgaW50IHNsb3QsIGludCBmdW5jKQorewor CXZvaWQgX19pb21lbSAqbW1pbzsKKwl1MTYgcG1jc3I7CisJdTY0IGFkZHI7CisJaW50IGk7CisK KwlpZiAoIWRtaV9tYXRjaChETUlfU1lTX1ZFTkRPUiwgIkFwcGxlIEluYy4iKSkKKwkJcmV0dXJu OworCisJLyogQ2FyZCBtYXkgaGF2ZSBiZWVuIHB1dCBpbnRvIFBDSV9EM2hvdCBieSBncnViIHF1 aXJrICovCisJcG1jc3IgPSByZWFkX3BjaV9jb25maWdfMTYoYnVzLCBzbG90LCBmdW5jLCBCQ000 MzMxX1BNX0NBUCArIFBDSV9QTV9DVFJMKTsKKworCWlmICgocG1jc3IgJiBQQ0lfUE1fQ1RSTF9T VEFURV9NQVNLKSAhPSBQQ0lfRDApIHsKKwkJcG1jc3IgJj0gflBDSV9QTV9DVFJMX1NUQVRFX01B U0s7CisJCXdyaXRlX3BjaV9jb25maWdfMTYoYnVzLCBzbG90LCBmdW5jLCBCQ000MzMxX1BNX0NB UCArIFBDSV9QTV9DVFJMLCBwbWNzcik7CisJCW1kZWxheSgxMCk7CisKKwkJcG1jc3IgPSByZWFk X3BjaV9jb25maWdfMTYoYnVzLCBzbG90LCBmdW5jLCBCQ000MzMxX1BNX0NBUCArIFBDSV9QTV9D VFJMKTsKKwkJaWYgKChwbWNzciAmIFBDSV9QTV9DVFJMX1NUQVRFX01BU0spICE9IFBDSV9EMCkg eworCQkJZGV2X2VycigiQ2Fubm90IHBvd2VyIHVwIEFwcGxlIEFpclBvcnQgY2FyZFxuIik7CisJ CQlyZXR1cm47CisJCX0KKwl9CisKKwlhZGRyICA9ICAgICAgcmVhZF9wY2lfY29uZmlnKGJ1cywg c2xvdCwgZnVuYywgUENJX0JBU0VfQUREUkVTU18wKTsKKwlhZGRyIHw9ICh1NjQpcmVhZF9wY2lf Y29uZmlnKGJ1cywgc2xvdCwgZnVuYywgUENJX0JBU0VfQUREUkVTU18xKSA8PCAzMjsKKwlhZGRy ICY9IFBDSV9CQVNFX0FERFJFU1NfTUVNX01BU0s7CisKKwltbWlvID0gZWFybHlfaW9yZW1hcChh ZGRyLCBCQ000MzMxX01NSU9fU0laRSk7CisJaWYgKCFtbWlvKSB7CisJCWRldl9lcnIoIkNhbm5v dCBpb21hcCBBcHBsZSBBaXJQb3J0IGNhcmRcbiIpOworCQlyZXR1cm47CisJfQorCisJcHJfaW5m bygiUmVzZXR0aW5nIEFwcGxlIEFpclBvcnQgY2FyZCAobGVmdCBlbmFibGVkIGJ5IEVGSSlcbiIp OworCisJZm9yIChpID0gMDsgYmNtYV9hcmVhZDMyKEJDTUFfUkVTRVRfU1QpICYmIGkgPCAzMDsg aSsrKQorCQl1ZGVsYXkoMTApOworCisJYmNtYV9hd3JpdGUzMihCQ01BX1JFU0VUX0NUTCwgQkNN QV9SRVNFVF9DVExfUkVTRVQpOworCWJjbWFfYXJlYWQzMihCQ01BX1JFU0VUX0NUTCk7CisJdWRl bGF5KDEpOworCisJYmNtYV9hd3JpdGUzMihCQ01BX1JFU0VUX0NUTCwgMCk7CisJYmNtYV9hcmVh ZDMyKEJDTUFfUkVTRVRfQ1RMKTsKKwl1ZGVsYXkoMTApOworCisJZWFybHlfaW91bm1hcChtbWlv LCBCQ000MzMxX01NSU9fU0laRSk7Cit9CisKICNkZWZpbmUgUUZMQUdfQVBQTFlfT05DRSAJMHgx CiAjZGVmaW5lIFFGTEFHX0FQUExJRUQJCTB4MgogI2RlZmluZSBRRkxBR19ET05FCQkoUUZMQUdf QVBQTFlfT05DRXxRRkxBR19BUFBMSUVEKQpAQCAtMjA0LDEyICsyNzQsNiBAQCBzdHJ1Y3QgY2hp cHNldCB7CiAJdm9pZCAoKmYpKGludCBudW0sIGludCBzbG90LCBpbnQgZnVuYyk7CiB9OwogCi0v KgotICogT25seSB3b3JrcyBmb3IgZGV2aWNlcyBvbiB0aGUgcm9vdCBidXMuIElmIHlvdSBhZGQg YW55IGRldmljZXMKLSAqIG5vdCBvbiBidXMgMCByZWFkZCBhbm90aGVyIGxvb3AgbGV2ZWwgaW4g ZWFybHlfcXVpcmtzKCkuIEJ1dAotICogYmUgY2FyZWZ1bCBiZWNhdXNlIGF0IGxlYXN0IHRoZSBO dmlkaWEgcXVpcmsgaGVyZSByZWxpZXMgb24KLSAqIG9ubHkgbWF0Y2hpbmcgb24gYnVzIDAuCi0g Ki8KIHN0YXRpYyBzdHJ1Y3QgY2hpcHNldCBlYXJseV9xcmtbXSBfX2luaXRkYXRhID0gewogCXsg UENJX1ZFTkRPUl9JRF9OVklESUEsIFBDSV9BTllfSUQsCiAJICBQQ0lfQ0xBU1NfQlJJREdFX1BD SSwgUENJX0FOWV9JRCwgUUZMQUdfQVBQTFlfT05DRSwgbnZpZGlhX2J1Z3MgfSwKQEAgLTIyMSw5 ICsyODUsMTMgQEAgc3RhdGljIHN0cnVjdCBjaGlwc2V0IGVhcmx5X3Fya1tdIF9faW5pdGRhdGEg PSB7CiAJICBQQ0lfQ0xBU1NfU0VSSUFMX1NNQlVTLCBQQ0lfQU5ZX0lELCAwLCBhdGlfYnVncyB9 LAogCXsgUENJX1ZFTkRPUl9JRF9BVEksIFBDSV9ERVZJQ0VfSURfQVRJX1NCWDAwX1NNQlVTLAog CSAgUENJX0NMQVNTX1NFUklBTF9TTUJVUywgUENJX0FOWV9JRCwgMCwgYXRpX2J1Z3NfY29udGQg fSwKKwl7IFBDSV9WRU5ET1JfSURfQlJPQURDT00sIDB4NDMzMSwKKwkgIFBDSV9DTEFTU19ORVRX T1JLX09USEVSLCBQQ0lfQU5ZX0lELCAwLCBhcHBsZV9haXJwb3J0X3Jlc2V0fSwKIAl7fQogfTsK IAorc3RhdGljIHZvaWQgX19pbml0IGVhcmx5X3BjaV9zY2FuX2J1cyhpbnQgYnVzKTsKKwogLyoq CiAgKiBjaGVja19kZXZfcXVpcmsgLSBhcHBseSBlYXJseSBxdWlya3MgdG8gYSBnaXZlbiBQQ0kg ZGV2aWNlCiAgKiBAbnVtOiBidXMgbnVtYmVyCkBAIC0yMzIsNyArMzAwLDcgQEAgc3RhdGljIHN0 cnVjdCBjaGlwc2V0IGVhcmx5X3Fya1tdIF9faW5pdGRhdGEgPSB7CiAgKgogICogQ2hlY2sgdGhl IHZlbmRvciAmIGRldmljZSBJRCBhZ2FpbnN0IHRoZSBlYXJseSBxdWlya3MgdGFibGUuCiAgKgot ICogSWYgdGhlIGRldmljZSBpcyBzaW5nbGUgZnVuY3Rpb24sIGxldCBlYXJseV9xdWlya3MoKSBr bm93IHNvIHdlIGRvbid0CisgKiBJZiB0aGUgZGV2aWNlIGlzIHNpbmdsZSBmdW5jdGlvbiwgbGV0 IGVhcmx5X3BjaV9zY2FuX2J1cygpIGtub3cgc28gd2UgZG9uJ3QKICAqIHBva2UgYXQgdGhpcyBk ZXZpY2UgYWdhaW4uCiAgKi8KIHN0YXRpYyBpbnQgX19pbml0IGNoZWNrX2Rldl9xdWlyayhpbnQg bnVtLCBpbnQgc2xvdCwgaW50IGZ1bmMpCkBAIC0yNDEsNiArMzA5LDcgQEAgc3RhdGljIGludCBf X2luaXQgY2hlY2tfZGV2X3F1aXJrKGludCBudW0sIGludCBzbG90LCBpbnQgZnVuYykKIAl1MTYg dmVuZG9yOwogCXUxNiBkZXZpY2U7CiAJdTggdHlwZTsKKwl1OCBzZWM7CiAJaW50IGk7CiAKIAlj bGFzcyA9IHJlYWRfcGNpX2NvbmZpZ18xNihudW0sIHNsb3QsIGZ1bmMsIFBDSV9DTEFTU19ERVZJ Q0UpOwpAQCAtMjY4LDI1ICszMzcsMzYgQEAgc3RhdGljIGludCBfX2luaXQgY2hlY2tfZGV2X3F1 aXJrKGludCBudW0sIGludCBzbG90LCBpbnQgZnVuYykKIAogCXR5cGUgPSByZWFkX3BjaV9jb25m aWdfYnl0ZShudW0sIHNsb3QsIGZ1bmMsCiAJCQkJICAgIFBDSV9IRUFERVJfVFlQRSk7CisKKwlp ZiAoKHR5cGUgJiAweDdmKSA9PSBQQ0lfSEVBREVSX1RZUEVfQlJJREdFKSB7CisJCXNlYyA9IHJl YWRfcGNpX2NvbmZpZ19ieXRlKG51bSwgc2xvdCwgZnVuYywgUENJX1NFQ09OREFSWV9CVVMpOwor CQlpZiAoc2VjID4gbnVtKQorCQkJZWFybHlfcGNpX3NjYW5fYnVzKHNlYyk7CisJfQorCiAJaWYg KCEodHlwZSAmIDB4ODApKQogCQlyZXR1cm4gLTE7CiAKIAlyZXR1cm4gMDsKIH0KIAotdm9pZCBf X2luaXQgZWFybHlfcXVpcmtzKHZvaWQpCitzdGF0aWMgdm9pZCBfX2luaXQgZWFybHlfcGNpX3Nj YW5fYnVzKGludCBidXMpCiB7CiAJaW50IHNsb3QsIGZ1bmM7CiAKLQlpZiAoIWVhcmx5X3BjaV9h bGxvd2VkKCkpCi0JCXJldHVybjsKLQogCS8qIFBvb3IgbWFuJ3MgUENJIGRpc2NvdmVyeSAqLwot CS8qIE9ubHkgc2NhbiB0aGUgcm9vdCBidXMgKi8KIAlmb3IgKHNsb3QgPSAwOyBzbG90IDwgMzI7 IHNsb3QrKykKIAkJZm9yIChmdW5jID0gMDsgZnVuYyA8IDg7IGZ1bmMrKykgewogCQkJLyogT25s eSBwcm9iZSBmdW5jdGlvbiAwIG9uIHNpbmdsZSBmbiBkZXZpY2VzICovCi0JCQlpZiAoY2hlY2tf ZGV2X3F1aXJrKDAsIHNsb3QsIGZ1bmMpKQorCQkJaWYgKGNoZWNrX2Rldl9xdWlyayhidXMsIHNs b3QsIGZ1bmMpKQogCQkJCWJyZWFrOwogCQl9CiB9CisKK3ZvaWQgX19pbml0IGVhcmx5X3F1aXJr cyh2b2lkKQoreworCWlmICghZWFybHlfcGNpX2FsbG93ZWQoKSkKKwkJcmV0dXJuOworCisJZWFy bHlfcGNpX3NjYW5fYnVzKDApOworfQpkaWZmIC0tZ2l0IGEvYXJjaC94ODYva2VybmVsL3BhcmF2 aXJ0LmMgYi9hcmNoL3g4Ni9rZXJuZWwvcGFyYXZpcnQuYwppbmRleCBhZjViNjc1YzdmNjguLmQy MWIzMmVlYWE1OSAxMDA2NDQKLS0tIGEvYXJjaC94ODYva2VybmVsL3BhcmF2aXJ0LmMKKysrIGIv YXJjaC94ODYva2VybmVsL3BhcmF2aXJ0LmMKQEAgLTUyLDEyICs1MiwxMiBAQCBhc20gKCIucHVz aHNlY3Rpb24gLmVudHJ5LnRleHQsIFwiYXhcIlxuIgogICAgICAiLnBvcHNlY3Rpb24iKTsKIAog LyogaWRlbnRpdHkgZnVuY3Rpb24sIHdoaWNoIGNhbiBiZSBpbmxpbmVkICovCi11MzIgX3BhcmF2 aXJ0X2lkZW50XzMyKHUzMiB4KQordTMyIG5vdHJhY2UgX3BhcmF2aXJ0X2lkZW50XzMyKHUzMiB4 KQogewogCXJldHVybiB4OwogfQogCi11NjQgX3BhcmF2aXJ0X2lkZW50XzY0KHU2NCB4KQordTY0 IG5vdHJhY2UgX3BhcmF2aXJ0X2lkZW50XzY0KHU2NCB4KQogewogCXJldHVybiB4OwogfQpkaWZm IC0tZ2l0IGEvYXJjaC94ODYva3ZtL3ZteC5jIGIvYXJjaC94ODYva3ZtL3ZteC5jCmluZGV4IGZi OGMyM2QyZmRmNi4uYmQwZWQ0Nzk4OWU0IDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9rdm0vdm14LmMK KysrIGIvYXJjaC94ODYva3ZtL3ZteC5jCkBAIC00OTk5LDIyICs0OTk5LDI3IEBAIHN0YXRpYyB2 b2lkIG5lc3RlZF9mcmVlX3ZtY3MwMihzdHJ1Y3QgdmNwdV92bXggKnZteCwgZ3BhX3Qgdm1wdHIp CiAKIC8qCiAgKiBGcmVlIGFsbCBWTUNTcyBzYXZlZCBmb3IgdGhpcyB2Y3B1LCBleGNlcHQgdGhl IG9uZSBwb2ludGVkIGJ5Ci0gKiB2bXgtPmxvYWRlZF92bWNzLiBUaGVzZSBpbmNsdWRlIHRoZSBW TUNTcyBpbiB2bWNzMDJfcG9vbCAoZXhjZXB0IHRoZSBvbmUKLSAqIGN1cnJlbnRseSB1c2VkLCBp ZiBydW5uaW5nIEwyKSwgYW5kIHZtY3MwMSB3aGVuIHJ1bm5pbmcgTDIuCisgKiB2bXgtPmxvYWRl ZF92bWNzLiBXZSBtdXN0IGJlIHJ1bm5pbmcgTDEsIHNvIHZteC0+bG9hZGVkX3ZtY3MKKyAqIG11 c3QgYmUgJnZteC0+dm1jczAxLgogICovCiBzdGF0aWMgdm9pZCBuZXN0ZWRfZnJlZV9hbGxfc2F2 ZWRfdm1jc3Moc3RydWN0IHZjcHVfdm14ICp2bXgpCiB7CiAJc3RydWN0IHZtY3MwMl9saXN0ICpp dGVtLCAqbjsKKworCVdBUk5fT04odm14LT5sb2FkZWRfdm1jcyAhPSAmdm14LT52bWNzMDEpOwog CWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShpdGVtLCBuLCAmdm14LT5uZXN0ZWQudm1jczAyX3Bv b2wsIGxpc3QpIHsKLQkJaWYgKHZteC0+bG9hZGVkX3ZtY3MgIT0gJml0ZW0tPnZtY3MwMikKLQkJ CWZyZWVfbG9hZGVkX3ZtY3MoJml0ZW0tPnZtY3MwMik7CisJCS8qCisJCSAqIFNvbWV0aGluZyB3 aWxsIGxlYWsgaWYgdGhlIGFib3ZlIFdBUk4gdHJpZ2dlcnMuICBCZXR0ZXIgdGhhbgorCQkgKiBh IHVzZS1hZnRlci1mcmVlLgorCQkgKi8KKwkJaWYgKHZteC0+bG9hZGVkX3ZtY3MgPT0gJml0ZW0t PnZtY3MwMikKKwkJCWNvbnRpbnVlOworCisJCWZyZWVfbG9hZGVkX3ZtY3MoJml0ZW0tPnZtY3Mw Mik7CiAJCWxpc3RfZGVsKCZpdGVtLT5saXN0KTsKIAkJa2ZyZWUoaXRlbSk7CisJCXZteC0+bmVz dGVkLnZtY3MwMl9udW0tLTsKIAl9Ci0Jdm14LT5uZXN0ZWQudm1jczAyX251bSA9IDA7Ci0KLQlp ZiAodm14LT5sb2FkZWRfdm1jcyAhPSAmdm14LT52bWNzMDEpCi0JCWZyZWVfbG9hZGVkX3ZtY3Mo JnZteC0+dm1jczAxKTsKIH0KIAogLyoKQEAgLTYzMDcsMTMgKzYzMTIsNDQgQEAgc3RhdGljIHZv aWQgX19ub2Nsb25lIHZteF92Y3B1X3J1bihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiAjdW5kZWYg UgogI3VuZGVmIFEKIAorc3RhdGljIHZvaWQgdm14X2xvYWRfdm1jczAxKHN0cnVjdCBrdm1fdmNw dSAqdmNwdSkKK3sKKwlzdHJ1Y3QgdmNwdV92bXggKnZteCA9IHRvX3ZteCh2Y3B1KTsKKwlpbnQg Y3B1OworCisJaWYgKHZteC0+bG9hZGVkX3ZtY3MgPT0gJnZteC0+dm1jczAxKQorCQlyZXR1cm47 CisKKwljcHUgPSBnZXRfY3B1KCk7CisJdm14LT5sb2FkZWRfdm1jcyA9ICZ2bXgtPnZtY3MwMTsK Kwl2bXhfdmNwdV9wdXQodmNwdSk7CisJdm14X3ZjcHVfbG9hZCh2Y3B1LCBjcHUpOworCXZjcHUt PmNwdSA9IGNwdTsKKwlwdXRfY3B1KCk7Cit9CisKKy8qCisgKiBFbnN1cmUgdGhhdCB0aGUgY3Vy cmVudCB2bWNzIG9mIHRoZSBsb2dpY2FsIHByb2Nlc3NvciBpcyB0aGUKKyAqIHZtY3MwMSBvZiB0 aGUgdmNwdSBiZWZvcmUgY2FsbGluZyBmcmVlX25lc3RlZCgpLgorICovCitzdGF0aWMgdm9pZCB2 bXhfZnJlZV92Y3B1X25lc3RlZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCit7CisgICAgICAgc3Ry dWN0IHZjcHVfdm14ICp2bXggPSB0b192bXgodmNwdSk7CisKKyAgICAgICB2Y3B1X2xvYWQodmNw dSk7CisgICAgICAgdm14X2xvYWRfdm1jczAxKHZjcHUpOworICAgICAgIGZyZWVfbmVzdGVkKHZt eCk7CisgICAgICAgdmNwdV9wdXQodmNwdSk7Cit9CisKIHN0YXRpYyB2b2lkIHZteF9mcmVlX3Zj cHUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogewogCXN0cnVjdCB2Y3B1X3ZteCAqdm14ID0gdG9f dm14KHZjcHUpOwogCiAJZnJlZV92cGlkKHZteCk7CisJbGVhdmVfZ3Vlc3RfbW9kZSh2Y3B1KTsK Kwl2bXhfZnJlZV92Y3B1X25lc3RlZCh2Y3B1KTsKIAlmcmVlX2xvYWRlZF92bWNzKHZteC0+bG9h ZGVkX3ZtY3MpOwotCWZyZWVfbmVzdGVkKHZteCk7CiAJa2ZyZWUodm14LT5ndWVzdF9tc3JzKTsK IAlrdm1fdmNwdV91bmluaXQodmNwdSk7CiAJa21lbV9jYWNoZV9mcmVlKGt2bV92Y3B1X2NhY2hl LCB2bXgpOwpAQCAtNzA1OSwxOCArNzA5NSwxMiBAQCB2b2lkIGxvYWRfdm1jczEyX2hvc3Rfc3Rh dGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qgdm1jczEyICp2bWNzMTIpCiBzdGF0aWMg dm9pZCBuZXN0ZWRfdm14X3ZtZXhpdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiB7CiAJc3RydWN0 IHZjcHVfdm14ICp2bXggPSB0b192bXgodmNwdSk7Ci0JaW50IGNwdTsKIAlzdHJ1Y3Qgdm1jczEy ICp2bWNzMTIgPSBnZXRfdm1jczEyKHZjcHUpOwogCiAJbGVhdmVfZ3Vlc3RfbW9kZSh2Y3B1KTsK IAlwcmVwYXJlX3ZtY3MxMih2Y3B1LCB2bWNzMTIpOwogCi0JY3B1ID0gZ2V0X2NwdSgpOwotCXZt eC0+bG9hZGVkX3ZtY3MgPSAmdm14LT52bWNzMDE7Ci0Jdm14X3ZjcHVfcHV0KHZjcHUpOwotCXZt eF92Y3B1X2xvYWQodmNwdSwgY3B1KTsKLQl2Y3B1LT5jcHUgPSBjcHU7Ci0JcHV0X2NwdSgpOwor CXZteF9sb2FkX3ZtY3MwMSh2Y3B1KTsKIAogCS8qIGlmIG5vIHZtY3MwMiBjYWNoZSByZXF1ZXN0 ZWQsIHJlbW92ZSB0aGUgb25lIHdlIHVzZWQgKi8KIAlpZiAoVk1DUzAyX1BPT0xfU0laRSA9PSAw KQpkaWZmIC0tZ2l0IGEvYmxvY2svZ2VuaGQuYyBiL2Jsb2NrL2dlbmhkLmMKaW5kZXggNDI0ZDFm YTFjMDM5Li40YzNmNmRiMDg2MjYgMTAwNjQ0Ci0tLSBhL2Jsb2NrL2dlbmhkLmMKKysrIGIvYmxv Y2svZ2VuaGQuYwpAQCAtODI5LDYgKzgyOSw3IEBAIHN0YXRpYyB2b2lkIGRpc2tfc2VxZl9zdG9w KHN0cnVjdCBzZXFfZmlsZSAqc2VxZiwgdm9pZCAqdikKIAlpZiAoaXRlcikgewogCQljbGFzc19k ZXZfaXRlcl9leGl0KGl0ZXIpOwogCQlrZnJlZShpdGVyKTsKKwkJc2VxZi0+cHJpdmF0ZSA9IE5V TEw7CiAJfQogfQogCmRpZmYgLS1naXQgYS9jcnlwdG8vYmxrY2lwaGVyLmMgYi9jcnlwdG8vYmxr Y2lwaGVyLmMKaW5kZXggN2I2OWQ3YTkwMmE5Li5hNTI4NGUwYTUyM2QgMTAwNjQ0Ci0tLSBhL2Ny eXB0by9ibGtjaXBoZXIuYworKysgYi9jcnlwdG8vYmxrY2lwaGVyLmMKQEAgLTIzOCw2ICsyMzgs OCBAQCBzdGF0aWMgaW50IGJsa2NpcGhlcl93YWxrX25leHQoc3RydWN0IGJsa2NpcGhlcl9kZXNj ICpkZXNjLAogCQlyZXR1cm4gYmxrY2lwaGVyX3dhbGtfZG9uZShkZXNjLCB3YWxrLCAtRUlOVkFM KTsKIAl9CiAKKwlic2l6ZSA9IG1pbih3YWxrLT5ibG9ja3NpemUsIG4pOworCiAJd2Fsay0+Zmxh Z3MgJj0gfihCTEtDSVBIRVJfV0FMS19TTE9XIHwgQkxLQ0lQSEVSX1dBTEtfQ09QWSB8CiAJCQkg QkxLQ0lQSEVSX1dBTEtfRElGRik7CiAJaWYgKCFzY2F0dGVyd2Fsa19hbGlnbmVkKCZ3YWxrLT5p biwgYWxpZ25tYXNrKSB8fApAQCAtMjUwLDcgKzI1Miw2IEBAIHN0YXRpYyBpbnQgYmxrY2lwaGVy X3dhbGtfbmV4dChzdHJ1Y3QgYmxrY2lwaGVyX2Rlc2MgKmRlc2MsCiAJCX0KIAl9CiAKLQlic2l6 ZSA9IG1pbih3YWxrLT5ibG9ja3NpemUsIG4pOwogCW4gPSBzY2F0dGVyd2Fsa19jbGFtcCgmd2Fs ay0+aW4sIG4pOwogCW4gPSBzY2F0dGVyd2Fsa19jbGFtcCgmd2Fsay0+b3V0LCBuKTsKIApkaWZm IC0tZ2l0IGEvY3J5cHRvL2NyeXB0ZC5jIGIvY3J5cHRvL2NyeXB0ZC5jCmluZGV4IDc1YzQxNWQz NzA4Ni4uZDg1ZmFiOTc1NTE0IDEwMDY0NAotLS0gYS9jcnlwdG8vY3J5cHRkLmMKKysrIGIvY3J5 cHRvL2NyeXB0ZC5jCkBAIC01NjUsOSArNTY1LDE0IEBAIHN0YXRpYyBpbnQgY3J5cHRkX2hhc2hf ZXhwb3J0KHN0cnVjdCBhaGFzaF9yZXF1ZXN0ICpyZXEsIHZvaWQgKm91dCkKIAogc3RhdGljIGlu dCBjcnlwdGRfaGFzaF9pbXBvcnQoc3RydWN0IGFoYXNoX3JlcXVlc3QgKnJlcSwgY29uc3Qgdm9p ZCAqaW4pCiB7Ci0Jc3RydWN0IGNyeXB0ZF9oYXNoX3JlcXVlc3RfY3R4ICpyY3R4ID0gYWhhc2hf cmVxdWVzdF9jdHgocmVxKTsKKwlzdHJ1Y3QgY3J5cHRvX2FoYXNoICp0Zm0gPSBjcnlwdG9fYWhh c2hfcmVxdGZtKHJlcSk7CisJc3RydWN0IGNyeXB0ZF9oYXNoX2N0eCAqY3R4ID0gY3J5cHRvX2Fo YXNoX2N0eCh0Zm0pOworCXN0cnVjdCBzaGFzaF9kZXNjICpkZXNjID0gY3J5cHRkX3NoYXNoX2Rl c2MocmVxKTsKKworCWRlc2MtPnRmbSA9IGN0eC0+Y2hpbGQ7CisJZGVzYy0+ZmxhZ3MgPSByZXEt PmJhc2UuZmxhZ3M7CiAKLQlyZXR1cm4gY3J5cHRvX3NoYXNoX2ltcG9ydCgmcmN0eC0+ZGVzYywg aW4pOworCXJldHVybiBjcnlwdG9fc2hhc2hfaW1wb3J0KGRlc2MsIGluKTsKIH0KIAogc3RhdGlj IGludCBjcnlwdGRfY3JlYXRlX2hhc2goc3RydWN0IGNyeXB0b190ZW1wbGF0ZSAqdG1wbCwgc3Ry dWN0IHJ0YXR0ciAqKnRiLApkaWZmIC0tZ2l0IGEvY3J5cHRvL2djbS5jIGIvY3J5cHRvL2djbS5j CmluZGV4IDk0M2NiY2VjYTQyNi4uOWU0N2M0ZGZhOTFjIDEwMDY0NAotLS0gYS9jcnlwdG8vZ2Nt LmMKKysrIGIvY3J5cHRvL2djbS5jCkBAIC03MTEsNyArNzExLDkgQEAgc3RhdGljIHN0cnVjdCBj cnlwdG9faW5zdGFuY2UgKmNyeXB0b19nY21fYWxsb2NfY29tbW9uKHN0cnVjdCBydGF0dHIgKip0 YiwKIAogCWdoYXNoX2FsZyA9IGNyeXB0b19maW5kX2FsZyhnaGFzaF9uYW1lLCAmY3J5cHRvX2Fo YXNoX3R5cGUsCiAJCQkJICAgIENSWVBUT19BTEdfVFlQRV9IQVNILAotCQkJCSAgICBDUllQVE9f QUxHX1RZUEVfQUhBU0hfTUFTSyk7CisJCQkJICAgIENSWVBUT19BTEdfVFlQRV9BSEFTSF9NQVNL IHwKKwkJCQkgICAgY3J5cHRvX3JlcXVpcmVzX3N5bmMoYWxndC0+dHlwZSwKKwkJCQkJCQkgYWxn dC0+bWFzaykpOwogCWVyciA9IFBUUl9FUlIoZ2hhc2hfYWxnKTsKIAlpZiAoSVNfRVJSKGdoYXNo X2FsZykpCiAJCXJldHVybiBFUlJfUFRSKGVycik7CmRpZmYgLS1naXQgYS9jcnlwdG8vc2NhdHRl cndhbGsuYyBiL2NyeXB0by9zY2F0dGVyd2Fsay5jCmluZGV4IDQxZTUyOWFmMDc3My4uOGI1OTY5 OTg3YzBkIDEwMDY0NAotLS0gYS9jcnlwdG8vc2NhdHRlcndhbGsuYworKysgYi9jcnlwdG8vc2Nh dHRlcndhbGsuYwpAQCAtNjgsNyArNjgsOCBAQCBzdGF0aWMgdm9pZCBzY2F0dGVyd2Fsa19wYWdl ZG9uZShzdHJ1Y3Qgc2NhdHRlcl93YWxrICp3YWxrLCBpbnQgb3V0LAogCiB2b2lkIHNjYXR0ZXJ3 YWxrX2RvbmUoc3RydWN0IHNjYXR0ZXJfd2FsayAqd2FsaywgaW50IG91dCwgaW50IG1vcmUpCiB7 Ci0JaWYgKCEoc2NhdHRlcndhbGtfcGFnZWxlbih3YWxrKSAmIChQQUdFX1NJWkUgLSAxKSkgfHwg IW1vcmUpCisJaWYgKCFtb3JlIHx8IHdhbGstPm9mZnNldCA+PSB3YWxrLT5zZy0+b2Zmc2V0ICsg d2Fsay0+c2ctPmxlbmd0aCB8fAorCSAgICAhKHdhbGstPm9mZnNldCAmIChQQUdFX1NJWkUgLSAx KSkpCiAJCXNjYXR0ZXJ3YWxrX3BhZ2Vkb25lKHdhbGssIG91dCwgbW9yZSk7CiB9CiBFWFBPUlRf U1lNQk9MX0dQTChzY2F0dGVyd2Fsa19kb25lKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmNtYS9i Y21hX3ByaXZhdGUuaCBiL2RyaXZlcnMvYmNtYS9iY21hX3ByaXZhdGUuaAppbmRleCBmZGE1NmJk ZTM2YjguLjM4NzJlMGQ4MzNiZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9iY21hL2JjbWFfcHJpdmF0 ZS5oCisrKyBiL2RyaXZlcnMvYmNtYS9iY21hX3ByaXZhdGUuaApAQCAtOCw4ICs4LDYgQEAKICNp bmNsdWRlIDxsaW51eC9iY21hL2JjbWEuaD4KICNpbmNsdWRlIDxsaW51eC9kZWxheS5oPgogCi0j ZGVmaW5lIEJDTUFfQ09SRV9TSVpFCQkweDEwMDAKLQogc3RydWN0IGJjbWFfYnVzOwogCiAvKiBt YWluLmMgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmx1ZXRvb3RoL2F0aDNrLmMgYi9kcml2ZXJz L2JsdWV0b290aC9hdGgzay5jCmluZGV4IDBiODdmYjZjYzM2NS4uNTU1NGE1YjcxM2E5IDEwMDY0 NAotLS0gYS9kcml2ZXJzL2JsdWV0b290aC9hdGgzay5jCisrKyBiL2RyaXZlcnMvYmx1ZXRvb3Ro L2F0aDNrLmMKQEAgLTExOCw2ICsxMTgsOCBAQCBzdGF0aWMgc3RydWN0IHVzYl9kZXZpY2VfaWQg YXRoM2tfdGFibGVbXSA9IHsKIAl7IFVTQl9ERVZJQ0UoMHgxM2QzLCAweDM0MzIpIH0sCiAJeyBV U0JfREVWSUNFKDB4MTNkMywgMHgzNDcyKSB9LAogCXsgVVNCX0RFVklDRSgweDEzZDMsIDB4MzQ3 NCkgfSwKKwl7IFVTQl9ERVZJQ0UoMHgxM2QzLCAweDM0ODcpIH0sCisJeyBVU0JfREVWSUNFKDB4 MTNkMywgMHgzNDkwKSB9LAogCiAJLyogQXRoZXJvcyBBUjVCQlUxMiB3aXRoIHNmbGFzaCBmaXJt d2FyZSAqLwogCXsgVVNCX0RFVklDRSgweDA0ODksIDB4RTAyQykgfSwKQEAgLTE4Miw2ICsxODQs OCBAQCBzdGF0aWMgc3RydWN0IHVzYl9kZXZpY2VfaWQgYXRoM2tfYmxpc3RfdGJsW10gPSB7CiAJ eyBVU0JfREVWSUNFKDB4MTNkMywgMHgzNDMyKSwgLmRyaXZlcl9pbmZvID0gQlRVU0JfQVRIMzAx MiB9LAogCXsgVVNCX0RFVklDRSgweDEzZDMsIDB4MzQ3MiksIC5kcml2ZXJfaW5mbyA9IEJUVVNC X0FUSDMwMTIgfSwKIAl7IFVTQl9ERVZJQ0UoMHgxM2QzLCAweDM0NzQpLCAuZHJpdmVyX2luZm8g PSBCVFVTQl9BVEgzMDEyIH0sCisJeyBVU0JfREVWSUNFKDB4MTNkMywgMHgzNDg3KSwgLmRyaXZl cl9pbmZvID0gQlRVU0JfQVRIMzAxMiB9LAorCXsgVVNCX0RFVklDRSgweDEzZDMsIDB4MzQ5MCks IC5kcml2ZXJfaW5mbyA9IEJUVVNCX0FUSDMwMTIgfSwKIAogCS8qIEF0aGVyb3MgQVI1QkJVMjIg d2l0aCBzZmxhc2ggZmlybXdhcmUgKi8KIAl7IFVTQl9ERVZJQ0UoMHgwNDg5LCAweEUwMzYpLCAu ZHJpdmVyX2luZm8gPSBCVFVTQl9BVEgzMDEyIH0sCmRpZmYgLS1naXQgYS9kcml2ZXJzL2JsdWV0 b290aC9idHVzYi5jIGIvZHJpdmVycy9ibHVldG9vdGgvYnR1c2IuYwppbmRleCAxY2JhMTEzZjI3 Y2UuLjU5ODM4Njk1YzQ2YiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ibHVldG9vdGgvYnR1c2IuYwor KysgYi9kcml2ZXJzL2JsdWV0b290aC9idHVzYi5jCkBAIC0yMDMsNiArMjAzLDggQEAgc3RhdGlj IHN0cnVjdCB1c2JfZGV2aWNlX2lkIGJsYWNrbGlzdF90YWJsZVtdID0gewogCXsgVVNCX0RFVklD RSgweDEzZDMsIDB4MzQzMiksIC5kcml2ZXJfaW5mbyA9IEJUVVNCX0FUSDMwMTIgfSwKIAl7IFVT Ql9ERVZJQ0UoMHgxM2QzLCAweDM0NzIpLCAuZHJpdmVyX2luZm8gPSBCVFVTQl9BVEgzMDEyIH0s CiAJeyBVU0JfREVWSUNFKDB4MTNkMywgMHgzNDc0KSwgLmRyaXZlcl9pbmZvID0gQlRVU0JfQVRI MzAxMiB9LAorCXsgVVNCX0RFVklDRSgweDEzZDMsIDB4MzQ4NyksIC5kcml2ZXJfaW5mbyA9IEJU VVNCX0FUSDMwMTIgfSwKKwl7IFVTQl9ERVZJQ0UoMHgxM2QzLCAweDM0OTApLCAuZHJpdmVyX2lu Zm8gPSBCVFVTQl9BVEgzMDEyIH0sCiAKIAkvKiBBdGhlcm9zIEFSNUJCVTEyIHdpdGggc2ZsYXNo IGZpcm13YXJlICovCiAJeyBVU0JfREVWSUNFKDB4MDQ4OSwgMHhlMDJjKSwgLmRyaXZlcl9pbmZv ID0gQlRVU0JfSUdOT1JFIH0sCmRpZmYgLS1naXQgYS9kcml2ZXJzL2NoYXIvdHBtL3RwbV90aXMu YyBiL2RyaXZlcnMvY2hhci90cG0vdHBtX3Rpcy5jCmluZGV4IGY4ZTk0ZmUxOTdiOS4uMGM0ODg1 ZGQ0M2I4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2NoYXIvdHBtL3RwbV90aXMuYworKysgYi9kcml2 ZXJzL2NoYXIvdHBtL3RwbV90aXMuYwpAQCAtMTc2LDE2ICsxNzYsMTUgQEAgc3RhdGljIGludCBn ZXRfYnVyc3Rjb3VudChzdHJ1Y3QgdHBtX2NoaXAgKmNoaXApCiB7CiAJdW5zaWduZWQgbG9uZyBz dG9wOwogCWludCBidXJzdGNudDsKKwl1MzIgdmFsdWU7CiAKIAkvKiB3YWl0IGZvciBidXJzdGNv dW50ICovCiAJLyogd2hpY2ggdGltZW91dCB2YWx1ZSwgc3BlYyBoYXMgMiBhbnN3ZXJzIChjICYg ZCkgKi8KIAlzdG9wID0gamlmZmllcyArIGNoaXAtPnZlbmRvci50aW1lb3V0X2Q7CiAJZG8gewot CQlidXJzdGNudCA9IGlvcmVhZDgoY2hpcC0+dmVuZG9yLmlvYmFzZSArCi0JCQkJICAgVFBNX1NU UyhjaGlwLT52ZW5kb3IubG9jYWxpdHkpICsgMSk7Ci0JCWJ1cnN0Y250ICs9IGlvcmVhZDgoY2hp cC0+dmVuZG9yLmlvYmFzZSArCi0JCQkJICAgIFRQTV9TVFMoY2hpcC0+dmVuZG9yLmxvY2FsaXR5 KSArCi0JCQkJICAgIDIpIDw8IDg7CisJCXZhbHVlID0gaW9yZWFkMzIoY2hpcC0+dmVuZG9yLmlv YmFzZSArCisJCQkJIFRQTV9TVFMoY2hpcC0+dmVuZG9yLmxvY2FsaXR5KSk7CisJCWJ1cnN0Y250 ID0gKHZhbHVlID4+IDgpICYgMHhGRkZGOwogCQlpZiAoYnVyc3RjbnQpCiAJCQlyZXR1cm4gYnVy c3RjbnQ7CiAJCW1zbGVlcChUUE1fVElNRU9VVCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2ZpcmV3 aXJlL25ldC5jIGIvZHJpdmVycy9maXJld2lyZS9uZXQuYwppbmRleCA3Yzg2OWI3M2E1N2UuLjQx OGM0ZGE1NGZkYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9maXJld2lyZS9uZXQuYworKysgYi9kcml2 ZXJzL2ZpcmV3aXJlL25ldC5jCkBAIC02NzcsNiArNjc3LDkgQEAgc3RhdGljIGludCBmd25ldF9p bmNvbWluZ19wYWNrZXQoc3RydWN0IGZ3bmV0X2RldmljZSAqZGV2LCBfX2JlMzIgKmJ1ZiwgaW50 IGxlbiwKIAlpbnQgcmV0dmFsOwogCXUxNiBldGhlcl90eXBlOwogCisJaWYgKGxlbiA8PSBSRkMy Mzc0X1VORlJBR19IRFJfU0laRSkKKwkJcmV0dXJuIDA7CisKIAloZHIudzAgPSBiZTMyX3RvX2Nw dShidWZbMF0pOwogCWxmID0gZnduZXRfZ2V0X2hkcl9sZigmaGRyKTsKIAlpZiAobGYgPT0gUkZD MjM3NF9IRFJfVU5GUkFHKSB7CkBAIC03MDIsNyArNzA1LDEyIEBAIHN0YXRpYyBpbnQgZnduZXRf aW5jb21pbmdfcGFja2V0KHN0cnVjdCBmd25ldF9kZXZpY2UgKmRldiwgX19iZTMyICpidWYsIGlu dCBsZW4sCiAJCXJldHVybiBmd25ldF9maW5pc2hfaW5jb21pbmdfcGFja2V0KG5ldCwgc2tiLCBz b3VyY2Vfbm9kZV9pZCwKIAkJCQkJCSAgICBpc19icm9hZGNhc3QsIGV0aGVyX3R5cGUpOwogCX0K KwogCS8qIEEgZGF0YWdyYW0gZnJhZ21lbnQgaGFzIGJlZW4gcmVjZWl2ZWQsIG5vdyB0aGUgZnVu IGJlZ2lucy4gKi8KKworCWlmIChsZW4gPD0gUkZDMjM3NF9GUkFHX0hEUl9TSVpFKQorCQlyZXR1 cm4gMDsKKwogCWhkci53MSA9IG50b2hsKGJ1ZlsxXSk7CiAJYnVmICs9IDI7CiAJbGVuIC09IFJG QzIzNzRfRlJBR19IRFJfU0laRTsKQEAgLTcxNiw2ICs3MjQsOSBAQCBzdGF0aWMgaW50IGZ3bmV0 X2luY29taW5nX3BhY2tldChzdHJ1Y3QgZnduZXRfZGV2aWNlICpkZXYsIF9fYmUzMiAqYnVmLCBp bnQgbGVuLAogCWRhdGFncmFtX2xhYmVsID0gZnduZXRfZ2V0X2hkcl9kZ2woJmhkcik7CiAJZGdf c2l6ZSA9IGZ3bmV0X2dldF9oZHJfZGdfc2l6ZSgmaGRyKTsgLyogPz8/ICsgMSAqLwogCisJaWYg KGZnX29mZiArIGxlbiA+IGRnX3NpemUpCisJCXJldHVybiAwOworCiAJc3Bpbl9sb2NrX2lycXNh dmUoJmRldi0+bG9jaywgZmxhZ3MpOwogCiAJcGVlciA9IGZ3bmV0X3BlZXJfZmluZF9ieV9ub2Rl X2lkKGRldiwgc291cmNlX25vZGVfaWQsIGdlbmVyYXRpb24pOwpAQCAtODIyLDYgKzgzMywyMiBA QCBzdGF0aWMgdm9pZCBmd25ldF9yZWNlaXZlX3BhY2tldChzdHJ1Y3QgZndfY2FyZCAqY2FyZCwg c3RydWN0IGZ3X3JlcXVlc3QgKnIsCiAJZndfc2VuZF9yZXNwb25zZShjYXJkLCByLCByY29kZSk7 CiB9CiAKK3N0YXRpYyBpbnQgZ2FzcF9zb3VyY2VfaWQoX19iZTMyICpwKQoreworCXJldHVybiBi ZTMyX3RvX2NwdShwWzBdKSA+PiAxNjsKK30KKworc3RhdGljIHUzMiBnYXNwX3NwZWNpZmllcl9p ZChfX2JlMzIgKnApCit7CisJcmV0dXJuIChiZTMyX3RvX2NwdShwWzBdKSAmIDB4ZmZmZikgPDwg OCB8CisJICAgICAgIChiZTMyX3RvX2NwdShwWzFdKSAmIDB4ZmYwMDAwMDApID4+IDI0OworfQor CitzdGF0aWMgdTMyIGdhc3BfdmVyc2lvbihfX2JlMzIgKnApCit7CisJcmV0dXJuIGJlMzJfdG9f Y3B1KHBbMV0pICYgMHhmZmZmZmY7Cit9CisKIHN0YXRpYyB2b2lkIGZ3bmV0X3JlY2VpdmVfYnJv YWRjYXN0KHN0cnVjdCBmd19pc29fY29udGV4dCAqY29udGV4dCwKIAkJdTMyIGN5Y2xlLCBzaXpl X3QgaGVhZGVyX2xlbmd0aCwgdm9pZCAqaGVhZGVyLCB2b2lkICpkYXRhKQogewpAQCAtODMyLDkg Kzg1OSw2IEBAIHN0YXRpYyB2b2lkIGZ3bmV0X3JlY2VpdmVfYnJvYWRjYXN0KHN0cnVjdCBmd19p c29fY29udGV4dCAqY29udGV4dCwKIAlfX2JlMzIgKmJ1Zl9wdHI7CiAJaW50IHJldHZhbDsKIAl1 MzIgbGVuZ3RoOwotCXUxNiBzb3VyY2Vfbm9kZV9pZDsKLQl1MzIgc3BlY2lmaWVyX2lkOwotCXUz MiB2ZXI7CiAJdW5zaWduZWQgbG9uZyBvZmZzZXQ7CiAJdW5zaWduZWQgbG9uZyBmbGFnczsKIApA QCAtODUyLDE3ICs4NzYsMTMgQEAgc3RhdGljIHZvaWQgZnduZXRfcmVjZWl2ZV9icm9hZGNhc3Qo c3RydWN0IGZ3X2lzb19jb250ZXh0ICpjb250ZXh0LAogCiAJc3Bpbl91bmxvY2tfaXJxcmVzdG9y ZSgmZGV2LT5sb2NrLCBmbGFncyk7CiAKLQlzcGVjaWZpZXJfaWQgPSAgICAoYmUzMl90b19jcHUo YnVmX3B0clswXSkgJiAweGZmZmYpIDw8IDgKLQkJCXwgKGJlMzJfdG9fY3B1KGJ1Zl9wdHJbMV0p ICYgMHhmZjAwMDAwMCkgPj4gMjQ7Ci0JdmVyID0gYmUzMl90b19jcHUoYnVmX3B0clsxXSkgJiAw eGZmZmZmZjsKLQlzb3VyY2Vfbm9kZV9pZCA9IGJlMzJfdG9fY3B1KGJ1Zl9wdHJbMF0pID4+IDE2 OwotCi0JaWYgKHNwZWNpZmllcl9pZCA9PSBJQU5BX1NQRUNJRklFUl9JRCAmJiB2ZXIgPT0gUkZD MjczNF9TV19WRVJTSU9OKSB7Ci0JCWJ1Zl9wdHIgKz0gMjsKLQkJbGVuZ3RoIC09IElFRUUxMzk0 X0dBU1BfSERSX1NJWkU7Ci0JCWZ3bmV0X2luY29taW5nX3BhY2tldChkZXYsIGJ1Zl9wdHIsIGxl bmd0aCwgc291cmNlX25vZGVfaWQsCisJaWYgKGxlbmd0aCA+IElFRUUxMzk0X0dBU1BfSERSX1NJ WkUgJiYKKwkgICAgZ2FzcF9zcGVjaWZpZXJfaWQoYnVmX3B0cikgPT0gSUFOQV9TUEVDSUZJRVJf SUQgJiYKKwkgICAgZ2FzcF92ZXJzaW9uKGJ1Zl9wdHIpID09IFJGQzI3MzRfU1dfVkVSU0lPTikK KwkJZnduZXRfaW5jb21pbmdfcGFja2V0KGRldiwgYnVmX3B0ciArIDIsCisJCQkJICAgICAgbGVu Z3RoIC0gSUVFRTEzOTRfR0FTUF9IRFJfU0laRSwKKwkJCQkgICAgICBnYXNwX3NvdXJjZV9pZChi dWZfcHRyKSwKIAkJCQkgICAgICBjb250ZXh0LT5jYXJkLT5nZW5lcmF0aW9uLCB0cnVlKTsKLQl9 CiAKIAlwYWNrZXQucGF5bG9hZF9sZW5ndGggPSBkZXYtPnJjdl9idWZmZXJfc2l6ZTsKIAlwYWNr ZXQuaW50ZXJydXB0ID0gMTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fY3J0Yy5j IGIvZHJpdmVycy9ncHUvZHJtL2RybV9jcnRjLmMKaW5kZXggMjAxMTBiNGFkNzkxLi40Y2E0NTRi ZjY5YTMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fY3J0Yy5jCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9kcm1fY3J0Yy5jCkBAIC0yNjc1LDYgKzI2NzUsOSBAQCBpbnQgZHJtX21vZGVf cGFnZV9mbGlwX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJdW5zaWduZWQgbG9uZyBm bGFnczsKIAlpbnQgcmV0ID0gLUVJTlZBTDsKIAorCWlmICghZHJtX2NvcmVfY2hlY2tfZmVhdHVy ZShkZXYsIERSSVZFUl9NT0RFU0VUKSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKIAlpZiAocGFnZV9m bGlwLT5mbGFncyAmIH5EUk1fTU9ERV9QQUdFX0ZMSVBfRkxBR1MgfHwKIAkgICAgcGFnZV9mbGlw LT5yZXNlcnZlZCAhPSAwKQogCQlyZXR1cm4gLUVJTlZBTDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9kcm1fZWRpZC5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9lZGlkLmMKaW5kZXggNzJm NDYwZTIyYjc2Li5iY2ZjZmJiMzI4NzcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1f ZWRpZC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZWRpZC5jCkBAIC02OCw2ICs2OCw4IEBA CiAjZGVmaW5lIEVESURfUVVJUktfREVUQUlMRURfU1lOQ19QUAkJKDEgPDwgNikKIC8qIEZvcmNl IHJlZHVjZWQtYmxhbmtpbmcgdGltaW5ncyBmb3IgZGV0YWlsZWQgbW9kZXMgKi8KICNkZWZpbmUg RURJRF9RVUlSS19GT1JDRV9SRURVQ0VEX0JMQU5LSU5HCSgxIDw8IDcpCisvKiBGb3JjZSA2YnBj ICovCisjZGVmaW5lIEVESURfUVVJUktfRk9SQ0VfNkJQQwkJCSgxIDw8IDEwKQogCiBzdHJ1Y3Qg ZGV0YWlsZWRfbW9kZV9jbG9zdXJlIHsKIAlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9y OwpAQCAtOTQsNiArOTYsOSBAQCBzdGF0aWMgc3RydWN0IGVkaWRfcXVpcmsgewogCS8qIFVua25v d24gQWNlciAqLwogCXsgIkFDUiIsIDI0MjMsIEVESURfUVVJUktfRklSU1RfREVUQUlMRURfUFJF RkVSUkVEIH0sCiAKKwkvKiBBRU8gbW9kZWwgMCByZXBvcnRzIDggYnBjLCBidXQgaXMgYSA2IGJw YyBwYW5lbCAqLworCXsgIkFFTyIsIDAsIEVESURfUVVJUktfRk9SQ0VfNkJQQyB9LAorCiAJLyog QmVsaW5lYSAxMCAxNSA1NSAqLwogCXsgIk1BWCIsIDE1MTYsIEVESURfUVVJUktfUFJFRkVSX0xB UkdFXzYwIH0sCiAJeyAiTUFYIiwgMHg3N2UsIEVESURfUVVJUktfUFJFRkVSX0xBUkdFXzYwIH0s CkBAIC0xNzUyLDYgKzE3NTcsOSBAQCBpbnQgZHJtX2FkZF9lZGlkX21vZGVzKHN0cnVjdCBkcm1f Y29ubmVjdG9yICpjb25uZWN0b3IsIHN0cnVjdCBlZGlkICplZGlkKQogCiAJZHJtX2FkZF9kaXNw bGF5X2luZm8oZWRpZCwgJmNvbm5lY3Rvci0+ZGlzcGxheV9pbmZvKTsKIAorCWlmIChxdWlya3Mg JiBFRElEX1FVSVJLX0ZPUkNFXzZCUEMpCisJCWNvbm5lY3Rvci0+ZGlzcGxheV9pbmZvLmJwYyA9 IDY7CisKIAlyZXR1cm4gbnVtX21vZGVzOwogfQogRVhQT1JUX1NZTUJPTChkcm1fYWRkX2VkaWRf bW9kZXMpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fYXRvbWJp b3MuYyBiL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX2F0b21iaW9zLmMKaW5kZXggNDcz YmQzMzAwMzJlLi5mZGU1MmEwNWQ5MTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9yYWRl b24vcmFkZW9uX2F0b21iaW9zLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25f YXRvbWJpb3MuYwpAQCAtMTEzOCw3ICsxMTM4LDcgQEAgYm9vbCByYWRlb25fYXRvbV9nZXRfY2xv Y2tfaW5mbyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCQkgICAgbGUxNl90b19jcHUoZmlybXdh cmVfaW5mby0+aW5mby51c1JlZmVyZW5jZUNsb2NrKTsKIAkJcDFwbGwtPnJlZmVyZW5jZV9kaXYg PSAwOwogCi0JCWlmIChjcmV2IDwgMikKKwkJaWYgKChmcmV2IDwgMikgJiYgKGNyZXYgPCAyKSkK IAkJCXAxcGxsLT5wbGxfb3V0X21pbiA9CiAJCQkJbGUxNl90b19jcHUoZmlybXdhcmVfaW5mby0+ aW5mby51c01pblBpeGVsQ2xvY2tQTExfT3V0cHV0KTsKIAkJZWxzZQpAQCAtMTE0Nyw3ICsxMTQ3 LDcgQEAgYm9vbCByYWRlb25fYXRvbV9nZXRfY2xvY2tfaW5mbyhzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2KQogCQlwMXBsbC0+cGxsX291dF9tYXggPQogCQkgICAgbGUzMl90b19jcHUoZmlybXdhcmVf aW5mby0+aW5mby51bE1heFBpeGVsQ2xvY2tQTExfT3V0cHV0KTsKIAotCQlpZiAoY3JldiA+PSA0 KSB7CisJCWlmICgoKGZyZXYgPCAyKSAmJiAoY3JldiA+PSA0KSkgfHwgKGZyZXYgPj0gMikpIHsK IAkJCXAxcGxsLT5sY2RfcGxsX291dF9taW4gPQogCQkJCWxlMTZfdG9fY3B1KGZpcm13YXJlX2lu Zm8tPmluZm9fMTQudXNMY2RNaW5QaXhlbENsb2NrUExMX091dHB1dCkgKiAxMDA7CiAJCQlpZiAo cDFwbGwtPmxjZF9wbGxfb3V0X21pbiA9PSAwKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L3JhZGVvbi9yYWRlb25fY29ubmVjdG9ycy5jIGIvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRl b25fY29ubmVjdG9ycy5jCmluZGV4IDYzMDNmYzhmY2I4ZS4uNDA2MzNmM2FkMDQ0IDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9jb25uZWN0b3JzLmMKKysrIGIvZHJp dmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fY29ubmVjdG9ycy5jCkBAIC0xNTg5LDcgKzE1ODks NiBAQCByYWRlb25fYWRkX2F0b21fY29ubmVjdG9yKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJ CQkJCQkgICAgICAxKTsKIAkJCS8qIG5vIEhQRCBvbiBhbmFsb2cgY29ubmVjdG9ycyAqLwogCQkJ cmFkZW9uX2Nvbm5lY3Rvci0+aHBkLmhwZCA9IFJBREVPTl9IUERfTk9ORTsKLQkJCWNvbm5lY3Rv ci0+cG9sbGVkID0gRFJNX0NPTk5FQ1RPUl9QT0xMX0NPTk5FQ1Q7CiAJCQljb25uZWN0b3ItPmlu dGVybGFjZV9hbGxvd2VkID0gdHJ1ZTsKIAkJCWNvbm5lY3Rvci0+ZG91Ymxlc2Nhbl9hbGxvd2Vk ID0gdHJ1ZTsKIAkJCWJyZWFrOwpAQCAtMTc4Nyw4ICsxNzg2LDEwIEBAIHJhZGVvbl9hZGRfYXRv bV9jb25uZWN0b3Ioc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAl9CiAKIAlpZiAocmFkZW9uX2Nv bm5lY3Rvci0+aHBkLmhwZCA9PSBSQURFT05fSFBEX05PTkUpIHsKLQkJaWYgKGkyY19idXMtPnZh bGlkKQotCQkJY29ubmVjdG9yLT5wb2xsZWQgPSBEUk1fQ09OTkVDVE9SX1BPTExfQ09OTkVDVDsK KwkJaWYgKGkyY19idXMtPnZhbGlkKSB7CisJCQljb25uZWN0b3ItPnBvbGxlZCA9IERSTV9DT05O RUNUT1JfUE9MTF9DT05ORUNUIHwKKwkJCSAgICAgICAgICAgICAgICAgICAgRFJNX0NPTk5FQ1RP Ul9QT0xMX0RJU0NPTk5FQ1Q7CisJCX0KIAl9IGVsc2UKIAkJY29ubmVjdG9yLT5wb2xsZWQgPSBE Uk1fQ09OTkVDVE9SX1BPTExfSFBEOwogCkBAIC0xODYwLDcgKzE4NjEsNiBAQCByYWRlb25fYWRk X2xlZ2FjeV9jb25uZWN0b3Ioc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkJCQkJICAgICAgMSk7 CiAJCS8qIG5vIEhQRCBvbiBhbmFsb2cgY29ubmVjdG9ycyAqLwogCQlyYWRlb25fY29ubmVjdG9y LT5ocGQuaHBkID0gUkFERU9OX0hQRF9OT05FOwotCQljb25uZWN0b3ItPnBvbGxlZCA9IERSTV9D T05ORUNUT1JfUE9MTF9DT05ORUNUOwogCQljb25uZWN0b3ItPmludGVybGFjZV9hbGxvd2VkID0g dHJ1ZTsKIAkJY29ubmVjdG9yLT5kb3VibGVzY2FuX2FsbG93ZWQgPSB0cnVlOwogCQlicmVhazsK QEAgLTE5NDUsMTAgKzE5NDUsMTMgQEAgcmFkZW9uX2FkZF9sZWdhY3lfY29ubmVjdG9yKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsCiAJfQogCiAJaWYgKHJhZGVvbl9jb25uZWN0b3ItPmhwZC5ocGQg PT0gUkFERU9OX0hQRF9OT05FKSB7Ci0JCWlmIChpMmNfYnVzLT52YWxpZCkKLQkJCWNvbm5lY3Rv ci0+cG9sbGVkID0gRFJNX0NPTk5FQ1RPUl9QT0xMX0NPTk5FQ1Q7CisJCWlmIChpMmNfYnVzLT52 YWxpZCkgeworCQkJY29ubmVjdG9yLT5wb2xsZWQgPSBEUk1fQ09OTkVDVE9SX1BPTExfQ09OTkVD VCB8CisJCQkgICAgICAgICAgICAgICAgICAgIERSTV9DT05ORUNUT1JfUE9MTF9ESVNDT05ORUNU OworCQl9CiAJfSBlbHNlCiAJCWNvbm5lY3Rvci0+cG9sbGVkID0gRFJNX0NPTk5FQ1RPUl9QT0xM X0hQRDsKKwogCWNvbm5lY3Rvci0+ZGlzcGxheV9pbmZvLnN1YnBpeGVsX29yZGVyID0gc3VicGl4 ZWxfb3JkZXI7CiAJZHJtX3N5c2ZzX2Nvbm5lY3Rvcl9hZGQoY29ubmVjdG9yKTsKIAlpZiAoY29u bmVjdG9yX3R5cGUgPT0gRFJNX01PREVfQ09OTkVDVE9SX0xWRFMpIHsKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX3R0bS5jIGIvZHJpdmVycy9ncHUvZHJtL3JhZGVv bi9yYWRlb25fdHRtLmMKaW5kZXggMGI1NDY4YmZhZjU0Li5hNDMyNzQzNjIyMWIgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX3R0bS5jCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9yYWRlb24vcmFkZW9uX3R0bS5jCkBAIC0yNDgsOCArMjQ4LDggQEAgc3RhdGljIGludCBy YWRlb25fbW92ZV9ibGl0KHN0cnVjdCB0dG1fYnVmZmVyX29iamVjdCAqYm8sCiAJaWYgKHVubGlr ZWx5KHIpKSB7CiAJCXJldHVybiByOwogCX0KLQlvbGRfc3RhcnQgPSBvbGRfbWVtLT5zdGFydCA8 PCBQQUdFX1NISUZUOwotCW5ld19zdGFydCA9IG5ld19tZW0tPnN0YXJ0IDw8IFBBR0VfU0hJRlQ7 CisJb2xkX3N0YXJ0ID0gKHU2NClvbGRfbWVtLT5zdGFydCA8PCBQQUdFX1NISUZUOworCW5ld19z dGFydCA9ICh1NjQpbmV3X21lbS0+c3RhcnQgPDwgUEFHRV9TSElGVDsKIAogCXN3aXRjaCAob2xk X21lbS0+bWVtX3R5cGUpIHsKIAljYXNlIFRUTV9QTF9WUkFNOgpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9od21vbi9hZHQ3NDExLmMgYi9kcml2ZXJzL2h3bW9uL2FkdDc0MTEuYwppbmRleCA1Y2MzZTM3 ODRiNDIuLmFhMDlmMjY5YTdkNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9hZHQ3NDExLmMK KysrIGIvZHJpdmVycy9od21vbi9hZHQ3NDExLmMKQEAgLTMxLDYgKzMxLDcgQEAKIAogI2RlZmlu ZSBBRFQ3NDExX1JFR19DRkcxCQkJMHgxOAogI2RlZmluZSBBRFQ3NDExX0NGRzFfU1RBUlRfTU9O SVRPUgkJKDEgPDwgMCkKKyNkZWZpbmUgQURUNzQxMV9DRkcxX1JFU0VSVkVEX0JJVDMJCSgxIDw8 IDMpCiAKICNkZWZpbmUgQURUNzQxMV9SRUdfQ0ZHMgkJCTB4MTkKICNkZWZpbmUgQURUNzQxMV9D RkcyX0RJU0FCTEVfQVZHCQkoMSA8PCA1KQpAQCAtMjkxLDggKzI5MiwxMCBAQCBzdGF0aWMgaW50 IF9fZGV2aW5pdCBhZHQ3NDExX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQsCiAJbXV0 ZXhfaW5pdCgmZGF0YS0+ZGV2aWNlX2xvY2spOwogCW11dGV4X2luaXQoJmRhdGEtPnVwZGF0ZV9s b2NrKTsKIAorCS8qIEFjY29yZGluZyB0byB0aGUgZGF0YXNoZWV0LCB3ZSBtdXN0IG9ubHkgd3Jp dGUgMSB0byBiaXQgMyAqLwogCXJldCA9IGFkdDc0MTFfbW9kaWZ5X2JpdChjbGllbnQsIEFEVDc0 MTFfUkVHX0NGRzEsCi0JCQkJIEFEVDc0MTFfQ0ZHMV9TVEFSVF9NT05JVE9SLCAxKTsKKwkJCQkg QURUNzQxMV9DRkcxX1JFU0VSVkVEX0JJVDMKKwkJCQkgfCBBRFQ3NDExX0NGRzFfU1RBUlRfTU9O SVRPUiwgMSk7CiAJaWYgKHJldCA8IDApCiAJCWdvdG8gZXhpdF9mcmVlOwogCmRpZmYgLS1naXQg YS9kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWVnMjB0LmMgYi9kcml2ZXJzL2kyYy9idXNzZXMvaTJj LWVnMjB0LmMKaW5kZXggMmNkYTY1YmYyYzBlLi40NmY3YmVhMDM4NWMgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvaTJjL2J1c3Nlcy9pMmMtZWcyMHQuYworKysgYi9kcml2ZXJzL2kyYy9idXNzZXMvaTJj LWVnMjB0LmMKQEAgLTg5MywxMyArODkzLDYgQEAgc3RhdGljIGludCBfX2RldmluaXQgcGNoX2ky Y19wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwKIAkvKiBTZXQgdGhlIG51bWJlciBvZiBJMkMg Y2hhbm5lbCBpbnN0YW5jZSAqLwogCWFkYXBfaW5mby0+Y2hfbnVtID0gaWQtPmRyaXZlcl9kYXRh OwogCi0JcmV0ID0gcmVxdWVzdF9pcnEocGRldi0+aXJxLCBwY2hfaTJjX2hhbmRsZXIsIElSUUZf U0hBUkVELAotCQkgIEtCVUlMRF9NT0ROQU1FLCBhZGFwX2luZm8pOwotCWlmIChyZXQpIHsKLQkJ cGNoX3BjaV9lcnIocGRldiwgInJlcXVlc3RfaXJxIEZBSUxFRFxuIik7Ci0JCWdvdG8gZXJyX3Jl cXVlc3RfaXJxOwotCX0KLQogCWZvciAoaSA9IDA7IGkgPCBhZGFwX2luZm8tPmNoX251bTsgaSsr KSB7CiAJCXBjaF9hZGFwID0gJmFkYXBfaW5mby0+cGNoX2RhdGFbaV0ucGNoX2FkYXB0ZXI7CiAJ CWFkYXBfaW5mby0+cGNoX2kyY19zdXNwZW5kZWQgPSBmYWxzZTsKQEAgLTkxNiw2ICs5MDksMTcg QEAgc3RhdGljIGludCBfX2RldmluaXQgcGNoX2kyY19wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRl diwKIAkJYWRhcF9pbmZvLT5wY2hfZGF0YVtpXS5wY2hfYmFzZV9hZGRyZXNzID0gYmFzZV9hZGRy ICsgMHgxMDAgKiBpOwogCiAJCXBjaF9hZGFwLT5kZXYucGFyZW50ID0gJnBkZXYtPmRldjsKKwl9 CisKKwlyZXQgPSByZXF1ZXN0X2lycShwZGV2LT5pcnEsIHBjaF9pMmNfaGFuZGxlciwgSVJRRl9T SEFSRUQsCisJCSAgS0JVSUxEX01PRE5BTUUsIGFkYXBfaW5mbyk7CisJaWYgKHJldCkgeworCQlw Y2hfcGNpX2VycihwZGV2LCAicmVxdWVzdF9pcnEgRkFJTEVEXG4iKTsKKwkJZ290byBlcnJfcmVx dWVzdF9pcnE7CisJfQorCisJZm9yIChpID0gMDsgaSA8IGFkYXBfaW5mby0+Y2hfbnVtOyBpKysp IHsKKwkJcGNoX2FkYXAgPSAmYWRhcF9pbmZvLT5wY2hfZGF0YVtpXS5wY2hfYWRhcHRlcjsKIAog CQlwY2hfaTJjX2luaXQoJmFkYXBfaW5mby0+cGNoX2RhdGFbaV0pOwogCQlyZXQgPSBpMmNfYWRk X2FkYXB0ZXIocGNoX2FkYXApOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbmZpbmliYW5kL2NvcmUv bXVsdGljYXN0LmMgYi9kcml2ZXJzL2luZmluaWJhbmQvY29yZS9tdWx0aWNhc3QuYwppbmRleCBk MjM2MGE4ZWYwYjIuLjE4MGQ3ZjQzNmVkNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9pbmZpbmliYW5k L2NvcmUvbXVsdGljYXN0LmMKKysrIGIvZHJpdmVycy9pbmZpbmliYW5kL2NvcmUvbXVsdGljYXN0 LmMKQEAgLTEwNiw3ICsxMDYsNiBAQCBzdHJ1Y3QgbWNhc3RfZ3JvdXAgewogCWF0b21pY190CQly ZWZjb3VudDsKIAllbnVtIG1jYXN0X2dyb3VwX3N0YXRlCXN0YXRlOwogCXN0cnVjdCBpYl9zYV9x dWVyeQkqcXVlcnk7Ci0JaW50CQkJcXVlcnlfaWQ7CiAJdTE2CQkJcGtleV9pbmRleDsKIAl1OAkJ CWxlYXZlX3N0YXRlOwogCWludAkJCXJldHJpZXM7CkBAIC0zMzksMTEgKzMzOCw3IEBAIHN0YXRp YyBpbnQgc2VuZF9qb2luKHN0cnVjdCBtY2FzdF9ncm91cCAqZ3JvdXAsIHN0cnVjdCBtY2FzdF9t ZW1iZXIgKm1lbWJlcikKIAkJCQkgICAgICAgbWVtYmVyLT5tdWx0aWNhc3QuY29tcF9tYXNrLAog CQkJCSAgICAgICAzMDAwLCBHRlBfS0VSTkVMLCBqb2luX2hhbmRsZXIsIGdyb3VwLAogCQkJCSAg ICAgICAmZ3JvdXAtPnF1ZXJ5KTsKLQlpZiAocmV0ID49IDApIHsKLQkJZ3JvdXAtPnF1ZXJ5X2lk ID0gcmV0OwotCQlyZXQgPSAwOwotCX0KLQlyZXR1cm4gcmV0OworCXJldHVybiAocmV0ID4gMCkg PyAwIDogcmV0OwogfQogCiBzdGF0aWMgaW50IHNlbmRfbGVhdmUoc3RydWN0IG1jYXN0X2dyb3Vw ICpncm91cCwgdTggbGVhdmVfc3RhdGUpCkBAIC0zNjMsMTEgKzM1OCw3IEBAIHN0YXRpYyBpbnQg c2VuZF9sZWF2ZShzdHJ1Y3QgbWNhc3RfZ3JvdXAgKmdyb3VwLCB1OCBsZWF2ZV9zdGF0ZSkKIAkJ CQkgICAgICAgSUJfU0FfTUNNRU1CRVJfUkVDX0pPSU5fU1RBVEUsCiAJCQkJICAgICAgIDMwMDAs IEdGUF9LRVJORUwsIGxlYXZlX2hhbmRsZXIsCiAJCQkJICAgICAgIGdyb3VwLCAmZ3JvdXAtPnF1 ZXJ5KTsKLQlpZiAocmV0ID49IDApIHsKLQkJZ3JvdXAtPnF1ZXJ5X2lkID0gcmV0OwotCQlyZXQg PSAwOwotCX0KLQlyZXR1cm4gcmV0OworCXJldHVybiAocmV0ID4gMCkgPyAwIDogcmV0OwogfQog CiBzdGF0aWMgdm9pZCBqb2luX2dyb3VwKHN0cnVjdCBtY2FzdF9ncm91cCAqZ3JvdXAsIHN0cnVj dCBtY2FzdF9tZW1iZXIgKm1lbWJlciwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC91 bHAvaXBvaWIvaXBvaWIuaCBiL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvaXBvaWIvaXBvaWIuaApp bmRleCA4NmRmNjMyZWE2MTIuLjE5YjcwYzBjNTZkZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9pbmZp bmliYW5kL3VscC9pcG9pYi9pcG9pYi5oCisrKyBiL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvaXBv aWIvaXBvaWIuaApAQCAtNDM0LDYgKzQzNCw3IEBAIHZvaWQgaXBvaWJfc2VuZChzdHJ1Y3QgbmV0 X2RldmljZSAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCQlzdHJ1Y3QgaXBvaWJfYWggKmFk ZHJlc3MsIHUzMiBxcG4pOwogdm9pZCBpcG9pYl9yZWFwX2FoKHN0cnVjdCB3b3JrX3N0cnVjdCAq d29yayk7CiAKK3N0cnVjdCBpcG9pYl9wYXRoICpfX3BhdGhfZmluZChzdHJ1Y3QgbmV0X2Rldmlj ZSAqZGV2LCB2b2lkICpnaWQpOwogdm9pZCBpcG9pYl9tYXJrX3BhdGhzX2ludmFsaWQoc3RydWN0 IG5ldF9kZXZpY2UgKmRldik7CiB2b2lkIGlwb2liX2ZsdXNoX3BhdGhzKHN0cnVjdCBuZXRfZGV2 aWNlICpkZXYpOwogc3RydWN0IGlwb2liX2Rldl9wcml2ICppcG9pYl9pbnRmX2FsbG9jKGNvbnN0 IGNoYXIgKmZvcm1hdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lwb2li L2lwb2liX2NtLmMgYi9kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lwb2liL2lwb2liX2NtLmMKaW5k ZXggMzc2Nzg1MzY0NDIwLi4wYmJlMDMwZDI2YTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaW5maW5p YmFuZC91bHAvaXBvaWIvaXBvaWJfY20uYworKysgYi9kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lw b2liL2lwb2liX2NtLmMKQEAgLTEyODgsNiArMTI4OCw4IEBAIHZvaWQgaXBvaWJfY21fZGVzdHJv eV90eChzdHJ1Y3QgaXBvaWJfY21fdHggKnR4KQogCX0KIH0KIAorI2RlZmluZSBRUE5fQU5EX09Q VElPTlNfT0ZGU0VUCTQKKwogc3RhdGljIHZvaWQgaXBvaWJfY21fdHhfc3RhcnQoc3RydWN0IHdv cmtfc3RydWN0ICp3b3JrKQogewogCXN0cnVjdCBpcG9pYl9kZXZfcHJpdiAqcHJpdiA9IGNvbnRh aW5lcl9vZih3b3JrLCBzdHJ1Y3QgaXBvaWJfZGV2X3ByaXYsCkBAIC0xMjk2LDYgKzEyOTgsNyBA QCBzdGF0aWMgdm9pZCBpcG9pYl9jbV90eF9zdGFydChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmsp CiAJc3RydWN0IGlwb2liX25laWdoICpuZWlnaDsKIAlzdHJ1Y3QgaXBvaWJfY21fdHggKnA7CiAJ dW5zaWduZWQgbG9uZyBmbGFnczsKKwlzdHJ1Y3QgaXBvaWJfcGF0aCAqcGF0aDsKIAlpbnQgcmV0 OwogCiAJc3RydWN0IGliX3NhX3BhdGhfcmVjIHBhdGhyZWM7CkBAIC0xMzA4LDcgKzEzMTEsMTkg QEAgc3RhdGljIHZvaWQgaXBvaWJfY21fdHhfc3RhcnQoc3RydWN0IHdvcmtfc3RydWN0ICp3b3Jr KQogCQlwID0gbGlzdF9lbnRyeShwcml2LT5jbS5zdGFydF9saXN0Lm5leHQsIHR5cGVvZigqcCks IGxpc3QpOwogCQlsaXN0X2RlbF9pbml0KCZwLT5saXN0KTsKIAkJbmVpZ2ggPSBwLT5uZWlnaDsK KwogCQlxcG4gPSBJUE9JQl9RUE4obmVpZ2gtPm5laWdoYm91ci0+aGEpOworCQkvKgorCQkgKiBB cyBsb25nIGFzIHRoZSBzZWFyY2ggaXMgd2l0aCB0aGVzZSAyIGxvY2tzLAorCQkgKiBwYXRoIGV4 aXN0ZW5jZSBpbmRpY2F0ZXMgaXRzIHZhbGlkaXR5LgorCQkgKi8KKwkJcGF0aCA9IF9fcGF0aF9m aW5kKGRldiwgbmVpZ2gtPm5laWdoYm91ci0+aGEgKyBRUE5fQU5EX09QVElPTlNfT0ZGU0VUKTsK KwkJaWYgKCFwYXRoKSB7CisJCQlwcl9pbmZvKCIlcyBpZ25vcmUgbm90IHZhbGlkIHBhdGggJXBJ NlxuIiwKKwkJCQlfX2Z1bmNfXywKKwkJCQluZWlnaC0+bmVpZ2hib3VyLT5oYSArIFFQTl9BTkRf T1BUSU9OU19PRkZTRVQpOworCQkJZ290byBmcmVlX25laWdoOworCQl9CiAJCW1lbWNweSgmcGF0 aHJlYywgJnAtPnBhdGgtPnBhdGhyZWMsIHNpemVvZiBwYXRocmVjKTsKIAogCQlzcGluX3VubG9j a19pcnFyZXN0b3JlKCZwcml2LT5sb2NrLCBmbGFncyk7CkBAIC0xMzIwLDYgKzEzMzUsNyBAQCBz dGF0aWMgdm9pZCBpcG9pYl9jbV90eF9zdGFydChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCiAJ CXNwaW5fbG9ja19pcnFzYXZlKCZwcml2LT5sb2NrLCBmbGFncyk7CiAKIAkJaWYgKHJldCkgewor ZnJlZV9uZWlnaDoKIAkJCW5laWdoID0gcC0+bmVpZ2g7CiAJCQlpZiAobmVpZ2gpIHsKIAkJCQlu ZWlnaC0+Y20gPSBOVUxMOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbmZpbmliYW5kL3VscC9pcG9p Yi9pcG9pYl9pYi5jIGIvZHJpdmVycy9pbmZpbmliYW5kL3VscC9pcG9pYi9pcG9pYl9pYi5jCmlu ZGV4IDQxMTViZTU0YmEzYi4uMTI4MmNiMzE2NTNkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2luZmlu aWJhbmQvdWxwL2lwb2liL2lwb2liX2liLmMKKysrIGIvZHJpdmVycy9pbmZpbmliYW5kL3VscC9p cG9pYi9pcG9pYl9pYi5jCkBAIC05NzMsOCArOTczLDE3IEBAIHN0YXRpYyB2b2lkIF9faXBvaWJf aWJfZGV2X2ZsdXNoKHN0cnVjdCBpcG9pYl9kZXZfcHJpdiAqcHJpdiwKIAl9CiAKIAlpZiAobGV2 ZWwgPT0gSVBPSUJfRkxVU0hfTElHSFQpIHsKKwkJaW50IG9wZXJfdXA7CiAJCWlwb2liX21hcmtf cGF0aHNfaW52YWxpZChkZXYpOworCQkvKiBTZXQgSVBvSUIgb3BlcmF0aW9uIGFzIGRvd24gdG8g cHJldmVudCByYWNlcyBiZXR3ZWVuOgorCQkgKiB0aGUgZmx1c2ggZmxvdyB3aGljaCBsZWF2ZXMg TUNHIGFuZCBvbiB0aGUgZmx5IGpvaW5zCisJCSAqIHdoaWNoIGNhbiBoYXBwZW4gZHVyaW5nIHRo YXQgdGltZS4gbWNhc3QgcmVzdGFydCB0YXNrCisJCSAqIHNob3VsZCBkZWFsIHdpdGggam9pbiBy ZXF1ZXN0cyB3ZSBtaXNzZWQuCisJCSAqLworCQlvcGVyX3VwID0gdGVzdF9hbmRfY2xlYXJfYml0 KElQT0lCX0ZMQUdfT1BFUl9VUCwgJnByaXYtPmZsYWdzKTsKIAkJaXBvaWJfbWNhc3RfZGV2X2Zs dXNoKGRldik7CisJCWlmIChvcGVyX3VwKQorCQkJc2V0X2JpdChJUE9JQl9GTEFHX09QRVJfVVAs ICZwcml2LT5mbGFncyk7CiAJfQogCiAJaWYgKGxldmVsID49IElQT0lCX0ZMVVNIX05PUk1BTCkK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvaXBvaWIvaXBvaWJfbWFpbi5jIGIv ZHJpdmVycy9pbmZpbmliYW5kL3VscC9pcG9pYi9pcG9pYl9tYWluLmMKaW5kZXggMTc0MGI4MjE3 YzRkLi5hZTNiMWQyMWU5ZWIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvaXBv aWIvaXBvaWJfbWFpbi5jCisrKyBiL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvaXBvaWIvaXBvaWJf bWFpbi5jCkBAIC0yMDgsNyArMjA4LDcgQEAgc3RhdGljIGludCBpcG9pYl9jaGFuZ2VfbXR1KHN0 cnVjdCBuZXRfZGV2aWNlICpkZXYsIGludCBuZXdfbXR1KQogCXJldHVybiAwOwogfQogCi1zdGF0 aWMgc3RydWN0IGlwb2liX3BhdGggKl9fcGF0aF9maW5kKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYs IHZvaWQgKmdpZCkKK3N0cnVjdCBpcG9pYl9wYXRoICpfX3BhdGhfZmluZChzdHJ1Y3QgbmV0X2Rl dmljZSAqZGV2LCB2b2lkICpnaWQpCiB7CiAJc3RydWN0IGlwb2liX2Rldl9wcml2ICpwcml2ID0g bmV0ZGV2X3ByaXYoZGV2KTsKIAlzdHJ1Y3QgcmJfbm9kZSAqbiA9IHByaXYtPnBhdGhfdHJlZS5y Yl9ub2RlOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbnB1dC9qb3lzdGljay94cGFkLmMgYi9kcml2 ZXJzL2lucHV0L2pveXN0aWNrL3hwYWQuYwppbmRleCA3ZjM5YWJkNTY2YzIuLjM3NDcxZTAwNGEy OSAxMDA2NDQKLS0tIGEvZHJpdmVycy9pbnB1dC9qb3lzdGljay94cGFkLmMKKysrIGIvZHJpdmVy cy9pbnB1dC9qb3lzdGljay94cGFkLmMKQEAgLTgyNSw2ICs4MjUsOSBAQCBzdGF0aWMgaW50IHhw YWRfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsIGNvbnN0IHN0cnVjdCB1c2JfZGV2 aWNlX2lkICppZAogCXN0cnVjdCB1c2JfZW5kcG9pbnRfZGVzY3JpcHRvciAqZXBfaXJxX2luOwog CWludCBpLCBlcnJvcjsKIAorCWlmIChpbnRmLT5jdXJfYWx0c2V0dGluZy0+ZGVzYy5iTnVtRW5k cG9pbnRzICE9IDIpCisJCXJldHVybiAtRU5PREVWOworCiAJZm9yIChpID0gMDsgeHBhZF9kZXZp Y2VbaV0uaWRWZW5kb3I7IGkrKykgewogCQlpZiAoKGxlMTZfdG9fY3B1KHVkZXYtPmRlc2NyaXB0 b3IuaWRWZW5kb3IpID09IHhwYWRfZGV2aWNlW2ldLmlkVmVuZG9yKSAmJgogCQkgICAgKGxlMTZf dG9fY3B1KHVkZXYtPmRlc2NyaXB0b3IuaWRQcm9kdWN0KSA9PSB4cGFkX2RldmljZVtpXS5pZFBy b2R1Y3QpKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbnB1dC9zZXJpby9pODA0Mi5jIGIvZHJpdmVy cy9pbnB1dC9zZXJpby9pODA0Mi5jCmluZGV4IDE3OGU3NWQ2YmIwNi4uMTI4NGI5MjIxMTc5IDEw MDY0NAotLS0gYS9kcml2ZXJzL2lucHV0L3NlcmlvL2k4MDQyLmMKKysrIGIvZHJpdmVycy9pbnB1 dC9zZXJpby9pODA0Mi5jCkBAIC0xMjIzLDYgKzEyMjMsNyBAQCBzdGF0aWMgaW50IF9faW5pdCBp ODA0Ml9jcmVhdGVfa2JkX3BvcnQodm9pZCkKIAlzZXJpby0+c3RhcnQJCT0gaTgwNDJfc3RhcnQ7 CiAJc2VyaW8tPnN0b3AJCT0gaTgwNDJfc3RvcDsKIAlzZXJpby0+Y2xvc2UJCT0gaTgwNDJfcG9y dF9jbG9zZTsKKwlzZXJpby0+cHMyX2NtZF9tdXRleAk9ICZpODA0Ml9tdXRleDsKIAlzZXJpby0+ cG9ydF9kYXRhCT0gcG9ydDsKIAlzZXJpby0+ZGV2LnBhcmVudAk9ICZpODA0Ml9wbGF0Zm9ybV9k ZXZpY2UtPmRldjsKIAlzdHJsY3B5KHNlcmlvLT5uYW1lLCAiaTgwNDIgS0JEIHBvcnQiLCBzaXpl b2Yoc2VyaW8tPm5hbWUpKTsKQEAgLTEyNDgsNiArMTI0OSw3IEBAIHN0YXRpYyBpbnQgX19pbml0 IGk4MDQyX2NyZWF0ZV9hdXhfcG9ydChpbnQgaWR4KQogCXNlcmlvLT53cml0ZQkJPSBpODA0Ml9h dXhfd3JpdGU7CiAJc2VyaW8tPnN0YXJ0CQk9IGk4MDQyX3N0YXJ0OwogCXNlcmlvLT5zdG9wCQk9 IGk4MDQyX3N0b3A7CisJc2VyaW8tPnBzMl9jbWRfbXV0ZXgJPSAmaTgwNDJfbXV0ZXg7CiAJc2Vy aW8tPnBvcnRfZGF0YQk9IHBvcnQ7CiAJc2VyaW8tPmRldi5wYXJlbnQJPSAmaTgwNDJfcGxhdGZv cm1fZGV2aWNlLT5kZXY7CiAJaWYgKGlkeCA8IDApIHsKQEAgLTEzMTAsMjEgKzEzMTIsNiBAQCBz dGF0aWMgdm9pZCBfX2RldmV4aXQgaTgwNDJfdW5yZWdpc3Rlcl9wb3J0cyh2b2lkKQogCX0KIH0K IAotLyoKLSAqIENoZWNrcyB3aGV0aGVyIHBvcnQgYmVsb25ncyB0byBpODA0MiBjb250cm9sbGVy LgotICovCi1ib29sIGk4MDQyX2NoZWNrX3BvcnRfb3duZXIoY29uc3Qgc3RydWN0IHNlcmlvICpw b3J0KQotewotCWludCBpOwotCi0JZm9yIChpID0gMDsgaSA8IEk4MDQyX05VTV9QT1JUUzsgaSsr KQotCQlpZiAoaTgwNDJfcG9ydHNbaV0uc2VyaW8gPT0gcG9ydCkKLQkJCXJldHVybiB0cnVlOwot Ci0JcmV0dXJuIGZhbHNlOwotfQotRVhQT1JUX1NZTUJPTChpODA0Ml9jaGVja19wb3J0X293bmVy KTsKLQogc3RhdGljIHZvaWQgaTgwNDJfZnJlZV9pcnFzKHZvaWQpCiB7CiAJaWYgKGk4MDQyX2F1 eF9pcnFfcmVnaXN0ZXJlZCkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5wdXQvc2VyaW8vbGlicHMy LmMgYi9kcml2ZXJzL2lucHV0L3NlcmlvL2xpYnBzMi5jCmluZGV4IDA3YTgzNjNmM2M1Yy4uYjVl YzMxM2NiOWM5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2lucHV0L3NlcmlvL2xpYnBzMi5jCisrKyBi L2RyaXZlcnMvaW5wdXQvc2VyaW8vbGlicHMyLmMKQEAgLTU3LDE5ICs1NywxNyBAQCBFWFBPUlRf U1lNQk9MKHBzMl9zZW5kYnl0ZSk7CiAKIHZvaWQgcHMyX2JlZ2luX2NvbW1hbmQoc3RydWN0IHBz MmRldiAqcHMyZGV2KQogewotCW11dGV4X2xvY2soJnBzMmRldi0+Y21kX211dGV4KTsKKwlzdHJ1 Y3QgbXV0ZXggKm0gPSBwczJkZXYtPnNlcmlvLT5wczJfY21kX211dGV4ID86ICZwczJkZXYtPmNt ZF9tdXRleDsKIAotCWlmIChpODA0Ml9jaGVja19wb3J0X293bmVyKHBzMmRldi0+c2VyaW8pKQot CQlpODA0Ml9sb2NrX2NoaXAoKTsKKwltdXRleF9sb2NrKG0pOwogfQogRVhQT1JUX1NZTUJPTChw czJfYmVnaW5fY29tbWFuZCk7CiAKIHZvaWQgcHMyX2VuZF9jb21tYW5kKHN0cnVjdCBwczJkZXYg KnBzMmRldikKIHsKLQlpZiAoaTgwNDJfY2hlY2tfcG9ydF9vd25lcihwczJkZXYtPnNlcmlvKSkK LQkJaTgwNDJfdW5sb2NrX2NoaXAoKTsKKwlzdHJ1Y3QgbXV0ZXggKm0gPSBwczJkZXYtPnNlcmlv LT5wczJfY21kX211dGV4ID86ICZwczJkZXYtPmNtZF9tdXRleDsKIAotCW11dGV4X3VubG9jaygm cHMyZGV2LT5jbWRfbXV0ZXgpOworCW11dGV4X3VubG9jayhtKTsKIH0KIEVYUE9SVF9TWU1CT0wo cHMyX2VuZF9jb21tYW5kKTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZC9kbS1mbGFrZXkuYyBi L2RyaXZlcnMvbWQvZG0tZmxha2V5LmMKaW5kZXggNzQ2YjVlOGJjYWNkLi42MzIyNmQxYzY3ZjMg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWQvZG0tZmxha2V5LmMKKysrIGIvZHJpdmVycy9tZC9kbS1m bGFrZXkuYwpAQCAtMjc5LDEwICsyNzksMTYgQEAgc3RhdGljIGludCBmbGFrZXlfbWFwKHN0cnVj dCBkbV90YXJnZXQgKnRpLCBzdHJ1Y3QgYmlvICpiaW8sCiAJCW1hcF9jb250ZXh0LT5sbCA9IDE7 CiAKIAkJLyoKLQkJICogTWFwIHJlYWRzIGFzIG5vcm1hbC4KKwkJICogTWFwIHJlYWRzIGFzIG5v cm1hbCBvbmx5IGlmIGNvcnJ1cHRfYmlvX2J5dGUgc2V0LgogCQkgKi8KLQkJaWYgKGJpb19kYXRh X2RpcihiaW8pID09IFJFQUQpCi0JCQlnb3RvIG1hcF9iaW87CisJCWlmIChiaW9fZGF0YV9kaXIo YmlvKSA9PSBSRUFEKSB7CisJCQkvKiBJZiBmbGFncyB3ZXJlIHNwZWNpZmllZCwgb25seSBjb3Jy dXB0IHRob3NlIHRoYXQgbWF0Y2guICovCisJCQlpZiAoZmMtPmNvcnJ1cHRfYmlvX2J5dGUgJiYg KGZjLT5jb3JydXB0X2Jpb19ydyA9PSBSRUFEKSAmJgorCQkJICAgIGFsbF9jb3JydXB0X2Jpb19m bGFnc19tYXRjaChiaW8sIGZjKSkKKwkJCQlnb3RvIG1hcF9iaW87CisJCQllbHNlCisJCQkJcmV0 dXJuIC1FSU87CisJCX0KIAogCQkvKgogCQkgKiBEcm9wIHdyaXRlcz8KQEAgLTMyMSwxMiArMzI3 LDEzIEBAIHN0YXRpYyBpbnQgZmxha2V5X2VuZF9pbyhzdHJ1Y3QgZG1fdGFyZ2V0ICp0aSwgc3Ry dWN0IGJpbyAqYmlvLAogCiAJLyoKIAkgKiBDb3JydXB0IHN1Y2Nlc3NmdWwgUkVBRHMgd2hpbGUg aW4gZG93biBzdGF0ZS4KLQkgKiBJZiBmbGFncyB3ZXJlIHNwZWNpZmllZCwgb25seSBjb3JydXB0 IHRob3NlIHRoYXQgbWF0Y2guCiAJICovCi0JaWYgKGZjLT5jb3JydXB0X2Jpb19ieXRlICYmICFl cnJvciAmJiBiaW9fc3VibWl0dGVkX3doaWxlX2Rvd24gJiYKLQkgICAgKGJpb19kYXRhX2Rpcihi aW8pID09IFJFQUQpICYmIChmYy0+Y29ycnVwdF9iaW9fcncgPT0gUkVBRCkgJiYKLQkgICAgYWxs X2NvcnJ1cHRfYmlvX2ZsYWdzX21hdGNoKGJpbywgZmMpKQotCQljb3JydXB0X2Jpb19kYXRhKGJp bywgZmMpOworCWlmICghZXJyb3IgJiYgYmlvX3N1Ym1pdHRlZF93aGlsZV9kb3duICYmIChiaW9f ZGF0YV9kaXIoYmlvKSA9PSBSRUFEKSkgeworCQlpZiAoZmMtPmNvcnJ1cHRfYmlvX2J5dGUpCisJ CQljb3JydXB0X2Jpb19kYXRhKGJpbywgZmMpOworCQllbHNlCisJCQlyZXR1cm4gLUVJTzsKKwl9 CiAKIAlyZXR1cm4gZXJyb3I7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL3Vz YnZpc2lvbi91c2J2aXNpb24tdmlkZW8uYyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vdXNidmlzaW9u L3VzYnZpc2lvbi12aWRlby5jCmluZGV4IDkwMjE0MGU4ZGIzZS4uOGY3NDA4MTE2MzYyIDEwMDY0 NAotLS0gYS9kcml2ZXJzL21lZGlhL3ZpZGVvL3VzYnZpc2lvbi91c2J2aXNpb24tdmlkZW8uYwor KysgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL3VzYnZpc2lvbi91c2J2aXNpb24tdmlkZW8uYwpAQCAt MTUwMiwxMyArMTUwMiw2IEBAIHN0YXRpYyBpbnQgX19kZXZpbml0IHVzYnZpc2lvbl9wcm9iZShz dHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZiwKIAlwcmludGsoS0VSTl9JTkZPICIlczogJXMgZm91 bmRcbiIsIF9fZnVuY19fLAogCQkJCXVzYnZpc2lvbl9kZXZpY2VfZGF0YVttb2RlbF0ubW9kZWxf c3RyaW5nKTsKIAotCS8qCi0JICogdGhpcyBpcyBhIHNlY3VyaXR5IGNoZWNrLgotCSAqIGFuIGV4 cGxvaXQgdXNpbmcgYW4gaW5jb3JyZWN0IGJJbnRlcmZhY2VOdW1iZXIgaXMga25vd24KLQkgKi8K LQlpZiAoaWZudW0gPj0gVVNCX01BWElOVEVSRkFDRVMgfHwgIWRldi0+YWN0Y29uZmlnLT5pbnRl cmZhY2VbaWZudW1dKQotCQlyZXR1cm4gLUVOT0RFVjsKLQogCWlmICh1c2J2aXNpb25fZGV2aWNl X2RhdGFbbW9kZWxdLmludGVyZmFjZSA+PSAwKQogCQlpbnRlcmZhY2UgPSAmZGV2LT5hY3Rjb25m aWctPmludGVyZmFjZVt1c2J2aXNpb25fZGV2aWNlX2RhdGFbbW9kZWxdLmludGVyZmFjZV0tPmFs dHNldHRpbmdbMF07CiAJZWxzZSBpZiAoaWZudW0gPCBkZXYtPmFjdGNvbmZpZy0+ZGVzYy5iTnVt SW50ZXJmYWNlcykKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbXRkL21hcHMvcG1jbXNwLWZsYXNoLmMg Yi9kcml2ZXJzL210ZC9tYXBzL3BtY21zcC1mbGFzaC5jCmluZGV4IDc0NGNhNWNhY2M5Yi4uZjlm YTNmYWQ3MjhlIDEwMDY0NAotLS0gYS9kcml2ZXJzL210ZC9tYXBzL3BtY21zcC1mbGFzaC5jCisr KyBiL2RyaXZlcnMvbXRkL21hcHMvcG1jbXNwLWZsYXNoLmMKQEAgLTc1LDE1ICs3NSwxNSBAQCBz dGF0aWMgaW50IF9faW5pdCBpbml0X21zcF9mbGFzaCh2b2lkKQogCiAJcHJpbnRrKEtFUk5fTk9U SUNFICJGb3VuZCAlZCBQTUMgZmxhc2ggZGV2aWNlc1xuIiwgZmNudCk7CiAKLQltc3BfZmxhc2gg PSBrbWFsbG9jKGZjbnQgKiBzaXplb2Yoc3RydWN0IG1hcF9pbmZvICopLCBHRlBfS0VSTkVMKTsK Kwltc3BfZmxhc2ggPSBrY2FsbG9jKGZjbnQsIHNpemVvZigqbXNwX2ZsYXNoKSwgR0ZQX0tFUk5F TCk7CiAJaWYgKCFtc3BfZmxhc2gpCiAJCXJldHVybiAtRU5PTUVNOwogCi0JbXNwX3BhcnRzID0g a21hbGxvYyhmY250ICogc2l6ZW9mKHN0cnVjdCBtdGRfcGFydGl0aW9uICopLCBHRlBfS0VSTkVM KTsKKwltc3BfcGFydHMgPSBrY2FsbG9jKGZjbnQsIHNpemVvZigqbXNwX3BhcnRzKSwgR0ZQX0tF Uk5FTCk7CiAJaWYgKCFtc3BfcGFydHMpCiAJCWdvdG8gZnJlZV9tc3BfZmxhc2g7CiAKLQltc3Bf bWFwcyA9IGtjYWxsb2MoZmNudCwgc2l6ZW9mKHN0cnVjdCBtdGRfaW5mbyksIEdGUF9LRVJORUwp OworCW1zcF9tYXBzID0ga2NhbGxvYyhmY250LCBzaXplb2YoKm1zcF9tYXBzKSwgR0ZQX0tFUk5F TCk7CiAJaWYgKCFtc3BfbWFwcykKIAkJZ290byBmcmVlX21zcF9wYXJ0czsKIApkaWZmIC0tZ2l0 IGEvZHJpdmVycy9tdGQvbmFuZC9kYXZpbmNpX25hbmQuYyBiL2RyaXZlcnMvbXRkL25hbmQvZGF2 aW5jaV9uYW5kLmMKaW5kZXggYzE1M2UxZjc3ZjkwLi40YWEyNWQ3M2RmZWYgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvbXRkL25hbmQvZGF2aW5jaV9uYW5kLmMKKysrIGIvZHJpdmVycy9tdGQvbmFuZC9k YXZpbmNpX25hbmQuYwpAQCAtMjM5LDYgKzIzOSw5IEBAIHN0YXRpYyB2b2lkIG5hbmRfZGF2aW5j aV9od2N0bF80Yml0KHN0cnVjdCBtdGRfaW5mbyAqbXRkLCBpbnQgbW9kZSkKIAl1bnNpZ25lZCBs b25nIGZsYWdzOwogCXUzMiB2YWw7CiAKKwkvKiBSZXNldCBFQ0MgaGFyZHdhcmUgKi8KKwlkYXZp bmNpX25hbmRfcmVhZGwoaW5mbywgTkFORF80QklUX0VDQzFfT0ZGU0VUKTsKKwogCXNwaW5fbG9j a19pcnFzYXZlKCZkYXZpbmNpX25hbmRfbG9jaywgZmxhZ3MpOwogCiAJLyogU3RhcnQgNC1iaXQg RUNDIGNhbGN1bGF0aW9uIGZvciByZWFkL3dyaXRlICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL210 ZC9uYW5kL25hbmRfYmFzZS5jIGIvZHJpdmVycy9tdGQvbmFuZC9uYW5kX2Jhc2UuYwppbmRleCA0 NmVkMjk2MmFkMDguLjg5Yjg1ODM4Y2YzZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9tdGQvbmFuZC9u YW5kX2Jhc2UuYworKysgYi9kcml2ZXJzL210ZC9uYW5kL25hbmRfYmFzZS5jCkBAIC0yMjI5LDcg KzIyMjksNyBAQCBzdGF0aWMgaW50IG5hbmRfZG9fd3JpdGVfb3BzKHN0cnVjdCBtdGRfaW5mbyAq bXRkLCBsb2ZmX3QgdG8sCiAJCXVpbnQ4X3QgKndidWYgPSBidWY7CiAKIAkJLyogUGFydGlhbCBw YWdlIHdyaXRlPyAqLwotCQlpZiAodW5saWtlbHkoY29sdW1uIHx8IHdyaXRlbGVuIDwgKG10ZC0+ d3JpdGVzaXplIC0gMSkpKSB7CisJCWlmICh1bmxpa2VseShjb2x1bW4gfHwgd3JpdGVsZW4gPCBt dGQtPndyaXRlc2l6ZSkpIHsKIAkJCWNhY2hlZCA9IDA7CiAJCQlieXRlcyA9IG1pbl90KGludCwg Ynl0ZXMgLSBjb2x1bW4sIChpbnQpIHdyaXRlbGVuKTsKIAkJCWNoaXAtPnBhZ2VidWYgPSAtMTsK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvbXRkL3ViaS9idWlsZC5jIGIvZHJpdmVycy9tdGQvdWJpL2J1 aWxkLmMKaW5kZXggMWY5YzM2Mzc3NTVhLi41Yzg3Yzk0ZDZlYWIgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvbXRkL3ViaS9idWlsZC5jCisrKyBiL2RyaXZlcnMvbXRkL3ViaS9idWlsZC5jCkBAIC05NzQs NiArOTc0LDkgQEAgaW50IHViaV9hdHRhY2hfbXRkX2RldihzdHJ1Y3QgbXRkX2luZm8gKm10ZCwg aW50IHViaV9udW0sIGludCB2aWRfaGRyX29mZnNldCkKIAkJCWdvdG8gb3V0X2RldGFjaDsKIAl9 CiAKKwkvKiBNYWtlIGRldmljZSAiYXZhaWxhYmxlIiBiZWZvcmUgaXQgYmVjb21lcyBhY2Nlc3Np YmxlIHZpYSBzeXNmcyAqLworCXViaV9kZXZpY2VzW3ViaV9udW1dID0gdWJpOworCiAJZXJyID0g dWlmX2luaXQodWJpLCAmcmVmKTsKIAlpZiAoZXJyKQogCQlnb3RvIG91dF9kZXRhY2g7CkBAIC0x MDE3LDcgKzEwMjAsNiBAQCBpbnQgdWJpX2F0dGFjaF9tdGRfZGV2KHN0cnVjdCBtdGRfaW5mbyAq bXRkLCBpbnQgdWJpX251bSwgaW50IHZpZF9oZHJfb2Zmc2V0KQogCXdha2VfdXBfcHJvY2Vzcyh1 YmktPmJndF90aHJlYWQpOwogCXNwaW5fdW5sb2NrKCZ1YmktPndsX2xvY2spOwogCi0JdWJpX2Rl dmljZXNbdWJpX251bV0gPSB1Ymk7CiAJdWJpX25vdGlmeV9hbGwodWJpLCBVQklfVk9MVU1FX0FE REVELCBOVUxMKTsKIAlyZXR1cm4gdWJpX251bTsKIApAQCAtMTAyOCw2ICsxMDMwLDcgQEAgb3V0 X3VpZjoKIAl1YmlfYXNzZXJ0KHJlZik7CiAJdWlmX2Nsb3NlKHViaSk7CiBvdXRfZGV0YWNoOgor CXViaV9kZXZpY2VzW3ViaV9udW1dID0gTlVMTDsKIAl1Ymlfd2xfY2xvc2UodWJpKTsKIAlmcmVl X2ludGVybmFsX3ZvbHVtZXModWJpKTsKIAl2ZnJlZSh1YmktPnZ0YmwpOwpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9uZXQvY2FuL2Rldi5jIGIvZHJpdmVycy9uZXQvY2FuL2Rldi5jCmluZGV4IDIxN2Iw YTM4OTNmYy4uYTFmNDM0ZTFiMjlmIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9jYW4vZGV2LmMK KysrIGIvZHJpdmVycy9uZXQvY2FuL2Rldi5jCkBAIC0yMiw2ICsyMiw3IEBACiAjaW5jbHVkZSA8 bGludXgvc2xhYi5oPgogI2luY2x1ZGUgPGxpbnV4L25ldGRldmljZS5oPgogI2luY2x1ZGUgPGxp bnV4L2lmX2FycC5oPgorI2luY2x1ZGUgPGxpbnV4L3dvcmtxdWV1ZS5oPgogI2luY2x1ZGUgPGxp bnV4L2Nhbi5oPgogI2luY2x1ZGUgPGxpbnV4L2Nhbi9kZXYuaD4KICNpbmNsdWRlIDxsaW51eC9j YW4vbmV0bGluay5oPgpAQCAtMzYxLDkgKzM2Miw4IEBAIEVYUE9SVF9TWU1CT0xfR1BMKGNhbl9m cmVlX2VjaG9fc2tiKTsKIC8qCiAgKiBDQU4gZGV2aWNlIHJlc3RhcnQgZm9yIGJ1cy1vZmYgcmVj b3ZlcnkKICAqLwotdm9pZCBjYW5fcmVzdGFydCh1bnNpZ25lZCBsb25nIGRhdGEpCit2b2lkIGNh bl9yZXN0YXJ0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiB7Ci0Jc3RydWN0IG5ldF9kZXZpY2Ug KmRldiA9IChzdHJ1Y3QgbmV0X2RldmljZSAqKWRhdGE7CiAJc3RydWN0IGNhbl9wcml2ICpwcml2 ID0gbmV0ZGV2X3ByaXYoZGV2KTsKIAlzdHJ1Y3QgbmV0X2RldmljZV9zdGF0cyAqc3RhdHMgPSAm ZGV2LT5zdGF0czsKIAlzdHJ1Y3Qgc2tfYnVmZiAqc2tiOwpAQCAtNDAzLDYgKzQwMywxNCBAQCBy ZXN0YXJ0OgogCQlkZXZfZXJyKGRldi0+ZGV2LnBhcmVudCwgIkVycm9yICVkIGR1cmluZyByZXN0 YXJ0IiwgZXJyKTsKIH0KIAorc3RhdGljIHZvaWQgY2FuX3Jlc3RhcnRfd29yayhzdHJ1Y3Qgd29y a19zdHJ1Y3QgKndvcmspCit7CisJc3RydWN0IGRlbGF5ZWRfd29yayAqZHdvcmsgPSB0b19kZWxh eWVkX3dvcmsod29yayk7CisJc3RydWN0IGNhbl9wcml2ICpwcml2ID0gY29udGFpbmVyX29mKGR3 b3JrLCBzdHJ1Y3QgY2FuX3ByaXYsIHJlc3RhcnRfd29yayk7CisKKwljYW5fcmVzdGFydChwcml2 LT5kZXYpOworfQorCiBpbnQgY2FuX3Jlc3RhcnRfbm93KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYp CiB7CiAJc3RydWN0IGNhbl9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYoZGV2KTsKQEAgLTQxNiw4 ICs0MjQsOCBAQCBpbnQgY2FuX3Jlc3RhcnRfbm93KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiAJ aWYgKHByaXYtPnN0YXRlICE9IENBTl9TVEFURV9CVVNfT0ZGKQogCQlyZXR1cm4gLUVCVVNZOwog Ci0JLyogUnVucyBhcyBzb29uIGFzIHBvc3NpYmxlIGluIHRoZSB0aW1lciBjb250ZXh0ICovCi0J bW9kX3RpbWVyKCZwcml2LT5yZXN0YXJ0X3RpbWVyLCBqaWZmaWVzKTsKKwljYW5jZWxfZGVsYXll ZF93b3JrX3N5bmMoJnByaXYtPnJlc3RhcnRfd29yayk7CisJY2FuX3Jlc3RhcnQoZGV2KTsKIAog CXJldHVybiAwOwogfQpAQCAtNDM5LDggKzQ0Nyw4IEBAIHZvaWQgY2FuX2J1c19vZmYoc3RydWN0 IG5ldF9kZXZpY2UgKmRldikKIAlwcml2LT5jYW5fc3RhdHMuYnVzX29mZisrOwogCiAJaWYgKHBy aXYtPnJlc3RhcnRfbXMpCi0JCW1vZF90aW1lcigmcHJpdi0+cmVzdGFydF90aW1lciwKLQkJCSAg amlmZmllcyArIChwcml2LT5yZXN0YXJ0X21zICogSFopIC8gMTAwMCk7CisJCXNjaGVkdWxlX2Rl bGF5ZWRfd29yaygmcHJpdi0+cmVzdGFydF93b3JrLAorCQkJCSAgICAgIG1zZWNzX3RvX2ppZmZp ZXMocHJpdi0+cmVzdGFydF9tcykpOwogfQogRVhQT1JUX1NZTUJPTF9HUEwoY2FuX2J1c19vZmYp OwogCkBAIC01MTUsNiArNTIzLDcgQEAgc3RydWN0IG5ldF9kZXZpY2UgKmFsbG9jX2NhbmRldihp bnQgc2l6ZW9mX3ByaXYsIHVuc2lnbmVkIGludCBlY2hvX3NrYl9tYXgpCiAJCXJldHVybiBOVUxM OwogCiAJcHJpdiA9IG5ldGRldl9wcml2KGRldik7CisJcHJpdi0+ZGV2ID0gZGV2OwogCiAJaWYg KGVjaG9fc2tiX21heCkgewogCQlwcml2LT5lY2hvX3NrYl9tYXggPSBlY2hvX3NrYl9tYXg7CkBA IC01MjQsNyArNTMzLDcgQEAgc3RydWN0IG5ldF9kZXZpY2UgKmFsbG9jX2NhbmRldihpbnQgc2l6 ZW9mX3ByaXYsIHVuc2lnbmVkIGludCBlY2hvX3NrYl9tYXgpCiAKIAlwcml2LT5zdGF0ZSA9IENB Tl9TVEFURV9TVE9QUEVEOwogCi0JaW5pdF90aW1lcigmcHJpdi0+cmVzdGFydF90aW1lcik7CisJ SU5JVF9ERUxBWUVEX1dPUksoJnByaXYtPnJlc3RhcnRfd29yaywgY2FuX3Jlc3RhcnRfd29yayk7 CiAKIAlyZXR1cm4gZGV2OwogfQpAQCAtNTU4LDggKzU2Nyw2IEBAIGludCBvcGVuX2NhbmRldihz dHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogCWlmICghbmV0aWZfY2Fycmllcl9vayhkZXYpKQogCQlu ZXRpZl9jYXJyaWVyX29uKGRldik7CiAKLQlzZXR1cF90aW1lcigmcHJpdi0+cmVzdGFydF90aW1l ciwgY2FuX3Jlc3RhcnQsICh1bnNpZ25lZCBsb25nKWRldik7Ci0KIAlyZXR1cm4gMDsKIH0KIEVY UE9SVF9TWU1CT0xfR1BMKG9wZW5fY2FuZGV2KTsKQEAgLTU3NCw3ICs1ODEsNyBAQCB2b2lkIGNs b3NlX2NhbmRldihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogewogCXN0cnVjdCBjYW5fcHJpdiAq cHJpdiA9IG5ldGRldl9wcml2KGRldik7CiAKLQlkZWxfdGltZXJfc3luYygmcHJpdi0+cmVzdGFy dF90aW1lcik7CisJY2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKCZwcml2LT5yZXN0YXJ0X3dvcmsp OwogCWNhbl9mbHVzaF9lY2hvX3NrYihkZXYpOwogfQogRVhQT1JUX1NZTUJPTF9HUEwoY2xvc2Vf Y2FuZGV2KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2V0aG9jLmMgYi9kcml2 ZXJzL25ldC9ldGhlcm5ldC9ldGhvYy5jCmluZGV4IDI1MWI2MzVmZTc1YS4uYjNiMjJmNDg3YjQx IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9ldGhvYy5jCisrKyBiL2RyaXZlcnMv bmV0L2V0aGVybmV0L2V0aG9jLmMKQEAgLTk3Niw3ICs5NzYsNyBAQCBzdGF0aWMgaW50IF9fZGV2 aW5pdCBldGhvY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogCWlmICghcHJp di0+aW9iYXNlKSB7CiAJCWRldl9lcnIoJnBkZXYtPmRldiwgImNhbm5vdCByZW1hcCBJL08gbWVt b3J5IHNwYWNlXG4iKTsKIAkJcmV0ID0gLUVOWElPOwotCQlnb3RvIGVycm9yOworCQlnb3RvIGZy ZWU7CiAJfQogCiAJaWYgKG5ldGRldi0+bWVtX2VuZCkgewpAQCAtOTg1LDcgKzk4NSw3IEBAIHN0 YXRpYyBpbnQgX19kZXZpbml0IGV0aG9jX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBk ZXYpCiAJCWlmICghcHJpdi0+bWVtYmFzZSkgewogCQkJZGV2X2VycigmcGRldi0+ZGV2LCAiY2Fu bm90IHJlbWFwIG1lbW9yeSBzcGFjZVxuIik7CiAJCQlyZXQgPSAtRU5YSU87Ci0JCQlnb3RvIGVy cm9yOworCQkJZ290byBmcmVlOwogCQl9CiAJfSBlbHNlIHsKIAkJLyogQWxsb2NhdGUgYnVmZmVy IG1lbW9yeSAqLwpAQCAtOTk2LDcgKzk5Niw3IEBAIHN0YXRpYyBpbnQgX19kZXZpbml0IGV0aG9j X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiAJCQlkZXZfZXJyKCZwZGV2LT5k ZXYsICJjYW5ub3QgYWxsb2NhdGUgJWRCIGJ1ZmZlclxuIiwKIAkJCQlidWZmZXJfc2l6ZSk7CiAJ CQlyZXQgPSAtRU5PTUVNOwotCQkJZ290byBlcnJvcjsKKwkJCWdvdG8gZnJlZTsKIAkJfQogCQlu ZXRkZXYtPm1lbV9lbmQgPSBuZXRkZXYtPm1lbV9zdGFydCArIGJ1ZmZlcl9zaXplOwogCQlwcml2 LT5kbWFfYWxsb2MgPSBidWZmZXJfc2l6ZTsKQEAgLTEwMDcsNyArMTAwNyw3IEBAIHN0YXRpYyBp bnQgX19kZXZpbml0IGV0aG9jX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiAJ CTEyOCwgKG5ldGRldi0+bWVtX2VuZCAtIG5ldGRldi0+bWVtX3N0YXJ0ICsgMSkgLyBFVEhPQ19C VUZTSVopOwogCWlmIChudW1fYmQgPCA0KSB7CiAJCXJldCA9IC1FTk9ERVY7Ci0JCWdvdG8gZXJy b3I7CisJCWdvdG8gZnJlZTsKIAl9CiAJLyogbnVtX3R4IG11c3QgYmUgYSBwb3dlciBvZiB0d28g Ki8KIAlwcml2LT5udW1fdHggPSByb3VuZGRvd25fcG93X29mX3R3byhudW1fYmQgPj4gMSk7CkBA IC0xMDE5LDcgKzEwMTksNyBAQCBzdGF0aWMgaW50IF9fZGV2aW5pdCBldGhvY19wcm9iZShzdHJ1 Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogCXByaXYtPnZtYSA9IGRldm1fa3phbGxvYygmcGRl di0+ZGV2LCBudW1fYmQqc2l6ZW9mKHZvaWQqKSwgR0ZQX0tFUk5FTCk7CiAJaWYgKCFwcml2LT52 bWEpIHsKIAkJcmV0ID0gLUVOT01FTTsKLQkJZ290byBlcnJvcjsKKwkJZ290byBmcmVlOwogCX0K IAogCS8qIEFsbG93IHRoZSBwbGF0Zm9ybSBzZXR1cCBjb2RlIHRvIHBhc3MgaW4gYSBNQUMgYWRk cmVzcy4gKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BwcC9wcHBfZ2VuZXJpYy5jIGIvZHJp dmVycy9uZXQvcHBwL3BwcF9nZW5lcmljLmMKaW5kZXggOTkwN2FjNzhhZWQwLi40ODEwZDI2Mjhi MTAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3BwcC9wcHBfZ2VuZXJpYy5jCisrKyBiL2RyaXZl cnMvbmV0L3BwcC9wcHBfZ2VuZXJpYy5jCkBAIC0yMjc1LDggKzIyNzUsNiBAQCBwcHBfdW5yZWdp c3Rlcl9jaGFubmVsKHN0cnVjdCBwcHBfY2hhbm5lbCAqY2hhbikKIAlzcGluX2xvY2tfYmgoJnBu LT5hbGxfY2hhbm5lbHNfbG9jayk7CiAJbGlzdF9kZWwoJnBjaC0+bGlzdCk7CiAJc3Bpbl91bmxv Y2tfYmgoJnBuLT5hbGxfY2hhbm5lbHNfbG9jayk7Ci0JcHV0X25ldChwY2gtPmNoYW5fbmV0KTsK LQlwY2gtPmNoYW5fbmV0ID0gTlVMTDsKIAogCXBjaC0+ZmlsZS5kZWFkID0gMTsKIAl3YWtlX3Vw X2ludGVycnVwdGlibGUoJnBjaC0+ZmlsZS5yd2FpdCk7CkBAIC0yODgzLDYgKzI4ODEsOSBAQCBw cHBfZGlzY29ubmVjdF9jaGFubmVsKHN0cnVjdCBjaGFubmVsICpwY2gpCiAgKi8KIHN0YXRpYyB2 b2lkIHBwcF9kZXN0cm95X2NoYW5uZWwoc3RydWN0IGNoYW5uZWwgKnBjaCkKIHsKKwlwdXRfbmV0 KHBjaC0+Y2hhbl9uZXQpOworCXBjaC0+Y2hhbl9uZXQgPSBOVUxMOworCiAJYXRvbWljX2RlYygm Y2hhbm5lbF9jb3VudCk7CiAKIAlpZiAoIXBjaC0+ZmlsZS5kZWFkKSB7CmRpZmYgLS1naXQgYS9k cml2ZXJzL25ldC93aXJlbGVzcy9icmNtODAyMTEvYnJjbXNtYWMvc3RmLmMgYi9kcml2ZXJzL25l dC93aXJlbGVzcy9icmNtODAyMTEvYnJjbXNtYWMvc3RmLmMKaW5kZXggZDhmNTI4ZWIxODBjLi42 ZmM0N2ZmMGM5ZjkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2JyY204MDIxMS9i cmNtc21hYy9zdGYuYworKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icmNtODAyMTEvYnJjbXNt YWMvc3RmLmMKQEAgLTg2LDcgKzg2LDcgQEAgdm9pZAogYnJjbXNfY19zdGZfc3NfYWxnb19jaGFu bmVsX2dldChzdHJ1Y3QgYnJjbXNfY19pbmZvICp3bGMsIHUxNiAqc3NfYWxnb19jaGFubmVsLAog CQkJICAgIHUxNiBjaGFuc3BlYykKIHsKLQlzdHJ1Y3QgdHhfcG93ZXIgcG93ZXI7CisJc3RydWN0 IHR4X3Bvd2VyIHBvd2VyID0geyB9OwogCXU4IHNpc29fbWNzX2lkLCBjZGRfbWNzX2lkLCBzdGJj X21jc19pZDsKIAogCS8qIENsZWFyIHByZXZpb3VzIHNldHRpbmdzICovCmRpZmYgLS1naXQgYS9k cml2ZXJzL3Bwcy9jbGllbnRzL3Bwc19wYXJwb3J0LmMgYi9kcml2ZXJzL3Bwcy9jbGllbnRzL3Bw c19wYXJwb3J0LmMKaW5kZXggZTFiNDcwNWFlM2VjLi43ZTliY2Q0YTE4N2UgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvcHBzL2NsaWVudHMvcHBzX3BhcnBvcnQuYworKysgYi9kcml2ZXJzL3Bwcy9jbGll bnRzL3Bwc19wYXJwb3J0LmMKQEAgLTE5NCw3ICsxOTQsNyBAQCBzdGF0aWMgdm9pZCBwYXJwb3J0 X2RldGFjaChzdHJ1Y3QgcGFycG9ydCAqcG9ydCkKIAlzdHJ1Y3QgcHBzX2NsaWVudF9wcCAqZGV2 aWNlOwogCiAJLyogRklYTUU6IG9vb2gsIHRoaXMgaXMgdWdseSEgKi8KLQlpZiAoc3RyY21wKHBh cmRldi0+bmFtZSwgS0JVSUxEX01PRE5BTUUpKQorCWlmICghcGFyZGV2IHx8IHN0cmNtcChwYXJk ZXYtPm5hbWUsIEtCVUlMRF9NT0ROQU1FKSkKIAkJLyogbm90IG91ciBwb3J0ICovCiAJCXJldHVy bjsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zMzkwL2Jsb2NrL2Rhc2QuYyBiL2RyaXZlcnMvczM5 MC9ibG9jay9kYXNkLmMKaW5kZXggNjU4OTRmMDVhODAxLi5hMDYzMGViNDFhZTEgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvczM5MC9ibG9jay9kYXNkLmMKKysrIGIvZHJpdmVycy9zMzkwL2Jsb2NrL2Rh c2QuYwpAQCAtMTU5Myw5ICsxNTkzLDE4IEBAIHZvaWQgZGFzZF9pbnRfaGFuZGxlcihzdHJ1Y3Qg Y2N3X2RldmljZSAqY2RldiwgdW5zaWduZWQgbG9uZyBpbnRwYXJtLAogCXVuc2lnbmVkIGxvbmcg bG9uZyBub3c7CiAJaW50IGV4cGlyZXM7CiAKKwljcXIgPSAoc3RydWN0IGRhc2RfY2N3X3JlcSAq KSBpbnRwYXJtOwogCWlmIChJU19FUlIoaXJiKSkgewogCQlzd2l0Y2ggKFBUUl9FUlIoaXJiKSkg ewogCQljYXNlIC1FSU86CisJCQlpZiAoY3FyICYmIGNxci0+c3RhdHVzID09IERBU0RfQ1FSX0NM RUFSX1BFTkRJTkcpIHsKKwkJCQlkZXZpY2UgPSAoc3RydWN0IGRhc2RfZGV2aWNlICopIGNxci0+ c3RhcnRkZXY7CisJCQkJY3FyLT5zdGF0dXMgPSBEQVNEX0NRUl9DTEVBUkVEOworCQkJCWRhc2Rf ZGV2aWNlX2NsZWFyX3RpbWVyKGRldmljZSk7CisJCQkJd2FrZV91cCgmZGFzZF9mbHVzaF93cSk7 CisJCQkJZGFzZF9zY2hlZHVsZV9kZXZpY2VfYmgoZGV2aWNlKTsKKwkJCQlyZXR1cm47CisJCQl9 CiAJCQlicmVhazsKIAkJY2FzZSAtRVRJTUVET1VUOgogCQkJREJGX0VWRU5UX0RFVklEKERCRl9X QVJOSU5HLCBjZGV2LCAiJXM6ICIKQEAgLTE2MTEsNyArMTYyMCw2IEBAIHZvaWQgZGFzZF9pbnRf aGFuZGxlcihzdHJ1Y3QgY2N3X2RldmljZSAqY2RldiwgdW5zaWduZWQgbG9uZyBpbnRwYXJtLAog CX0KIAogCW5vdyA9IGdldF9jbG9jaygpOwotCWNxciA9IChzdHJ1Y3QgZGFzZF9jY3dfcmVxICop IGludHBhcm07CiAJLyogY2hlY2sgZm9yIGNvbmRpdGlvbnMgdGhhdCBzaG91bGQgYmUgaGFuZGxl ZCBpbW1lZGlhdGVseSAqLwogCWlmICghY3FyIHx8CiAJICAgICEoc2Nzd19kc3RhdCgmaXJiLT5z Y3N3KSA9PSAoREVWX1NUQVRfQ0hOX0VORCB8IERFVl9TVEFUX0RFVl9FTkQpICYmCmRpZmYgLS1n aXQgYS9kcml2ZXJzL3Njc2kvYWFjcmFpZC9jb21tY3RybC5jIGIvZHJpdmVycy9zY3NpL2FhY3Jh aWQvY29tbWN0cmwuYwppbmRleCAxMjU0NDMxZDMwNTMuLmU2OGZlYmRmMWE0MCAxMDA2NDQKLS0t IGEvZHJpdmVycy9zY3NpL2FhY3JhaWQvY29tbWN0cmwuYworKysgYi9kcml2ZXJzL3Njc2kvYWFj cmFpZC9jb21tY3RybC5jCkBAIC02Myw3ICs2Myw3IEBAIHN0YXRpYyBpbnQgaW9jdGxfc2VuZF9m aWIoc3RydWN0IGFhY19kZXYgKiBkZXYsIHZvaWQgX191c2VyICphcmcpCiAJc3RydWN0IGZpYiAq ZmlicHRyOwogCXN0cnVjdCBod19maWIgKiBod19maWIgPSAoc3RydWN0IGh3X2ZpYiAqKTA7CiAJ ZG1hX2FkZHJfdCBod19maWJfcGEgPSAoZG1hX2FkZHJfdCkwTEw7Ci0JdW5zaWduZWQgc2l6ZTsK Kwl1bnNpZ25lZCBpbnQgc2l6ZSwgb3NpemU7CiAJaW50IHJldHZhbDsKIAogCWlmIChkZXYtPmlu X3Jlc2V0KSB7CkBAIC04Nyw3ICs4Nyw4IEBAIHN0YXRpYyBpbnQgaW9jdGxfc2VuZF9maWIoc3Ry dWN0IGFhY19kZXYgKiBkZXYsIHZvaWQgX191c2VyICphcmcpCiAJICoJd2lsbCBub3Qgb3ZlcnJ1 biB0aGUgYnVmZmVyIHdoZW4gd2UgY29weSB0aGUgbWVtb3J5LiBSZXR1cm4KIAkgKglhbiBlcnJv ciBpZiB3ZSB3b3VsZC4KIAkgKi8KLQlzaXplID0gbGUxNl90b19jcHUoa2ZpYi0+aGVhZGVyLlNp emUpICsgc2l6ZW9mKHN0cnVjdCBhYWNfZmliaGRyKTsKKwlvc2l6ZSA9IHNpemUgPSBsZTE2X3Rv X2NwdShrZmliLT5oZWFkZXIuU2l6ZSkgKworCQlzaXplb2Yoc3RydWN0IGFhY19maWJoZHIpOwog CWlmIChzaXplIDwgbGUxNl90b19jcHUoa2ZpYi0+aGVhZGVyLlNlbmRlclNpemUpKQogCQlzaXpl ID0gbGUxNl90b19jcHUoa2ZpYi0+aGVhZGVyLlNlbmRlclNpemUpOwogCWlmIChzaXplID4gZGV2 LT5tYXhfZmliX3NpemUpIHsKQEAgLTExOCw2ICsxMTksMTQgQEAgc3RhdGljIGludCBpb2N0bF9z ZW5kX2ZpYihzdHJ1Y3QgYWFjX2RldiAqIGRldiwgdm9pZCBfX3VzZXIgKmFyZykKIAkJZ290byBj bGVhbnVwOwogCX0KIAorCS8qIFNhbml0eSBjaGVjayB0aGUgc2Vjb25kIGNvcHkgKi8KKwlpZiAo KG9zaXplICE9IGxlMTZfdG9fY3B1KGtmaWItPmhlYWRlci5TaXplKSArCisJCXNpemVvZihzdHJ1 Y3QgYWFjX2ZpYmhkcikpCisJCXx8IChzaXplIDwgbGUxNl90b19jcHUoa2ZpYi0+aGVhZGVyLlNl bmRlclNpemUpKSkgeworCQlyZXR2YWwgPSAtRUlOVkFMOworCQlnb3RvIGNsZWFudXA7CisJfQor CiAJaWYgKGtmaWItPmhlYWRlci5Db21tYW5kID09IGNwdV90b19sZTE2KFRha2VBQnJlYWtQdCkp IHsKIAkJYWFjX2FkYXB0ZXJfaW50ZXJydXB0KGRldik7CiAJCS8qCmRpZmYgLS1naXQgYS9kcml2 ZXJzL3Njc2kvYXJjbXNyL2FyY21zcl9oYmEuYyBiL2RyaXZlcnMvc2NzaS9hcmNtc3IvYXJjbXNy X2hiYS5jCmluZGV4IGY5ODA2MDBmNzhhOC4uMmRjYmI5NzBkZWJhIDEwMDY0NAotLS0gYS9kcml2 ZXJzL3Njc2kvYXJjbXNyL2FyY21zcl9oYmEuYworKysgYi9kcml2ZXJzL3Njc2kvYXJjbXNyL2Fy Y21zcl9oYmEuYwpAQCAtMTgwMyw3ICsxODAzLDggQEAgc3RhdGljIGludCBhcmNtc3JfaW9wX21l c3NhZ2VfeGZlcihzdHJ1Y3QgQWRhcHRlckNvbnRyb2xCbG9jayAqYWNiLAogCiAJY2FzZSBBUkNN U1JfTUVTU0FHRV9XUklURV9XUUJVRkZFUjogewogCQl1bnNpZ25lZCBjaGFyICp2ZXJfYWRkcjsK LQkJaW50MzJfdCBteV9lbXB0eV9sZW4sIHVzZXJfbGVuLCB3cWJ1Zl9maXJzdGluZGV4LCB3cWJ1 Zl9sYXN0aW5kZXg7CisJCXVpbnQzMl90IHVzZXJfbGVuOworCQlpbnQzMl90IG15X2VtcHR5X2xl biwgd3FidWZfZmlyc3RpbmRleCwgd3FidWZfbGFzdGluZGV4OwogCQl1aW50OF90ICpwUWJ1ZmZl ciwgKnB0bXB1c2VyYnVmZmVyOwogCiAJCXZlcl9hZGRyID0ga21hbGxvYygxMDMyLCBHRlBfQVRP TUlDKTsKQEAgLTE4MjAsNiArMTgyMSwxMSBAQCBzdGF0aWMgaW50IGFyY21zcl9pb3BfbWVzc2Fn ZV94ZmVyKHN0cnVjdCBBZGFwdGVyQ29udHJvbEJsb2NrICphY2IsCiAJCX0KIAkJcHRtcHVzZXJi dWZmZXIgPSB2ZXJfYWRkcjsKIAkJdXNlcl9sZW4gPSBwY21kbWVzc2FnZWZsZC0+Y21kbWVzc2Fn ZS5MZW5ndGg7CisJCWlmICh1c2VyX2xlbiA+IDEwMzIpIHsKKwkJCXJldHZhbHVlID0gQVJDTVNS X01FU1NBR0VfRkFJTDsKKwkJCWtmcmVlKHZlcl9hZGRyKTsKKwkJCWdvdG8gbWVzc2FnZV9vdXQ7 CisJCX0KIAkJbWVtY3B5KHB0bXB1c2VyYnVmZmVyLCBwY21kbWVzc2FnZWZsZC0+bWVzc2FnZWRh dGFidWZmZXIsIHVzZXJfbGVuKTsKIAkJd3FidWZfbGFzdGluZGV4ID0gYWNiLT53cWJ1Zl9sYXN0 aW5kZXg7CiAJCXdxYnVmX2ZpcnN0aW5kZXggPSBhY2ItPndxYnVmX2ZpcnN0aW5kZXg7CmRpZmYg LS1naXQgYS9kcml2ZXJzL3Njc2kvbWVnYXJhaWQvbWVnYXJhaWRfc2FzX2Jhc2UuYyBiL2RyaXZl cnMvc2NzaS9tZWdhcmFpZC9tZWdhcmFpZF9zYXNfYmFzZS5jCmluZGV4IDNiMWJhMTAzZGUyYi4u MTA1NTBmM2M3YjQ1IDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvbWVnYXJhaWQvbWVnYXJhaWRf c2FzX2Jhc2UuYworKysgYi9kcml2ZXJzL3Njc2kvbWVnYXJhaWQvbWVnYXJhaWRfc2FzX2Jhc2Uu YwpAQCAtMzUwOCw3ICszNTA4LDcgQEAgc3RhdGljIGludCBtZWdhc2FzX2luaXRfZncoc3RydWN0 IG1lZ2FzYXNfaW5zdGFuY2UgKmluc3RhbmNlKQogCS8qIEZpbmQgZmlyc3QgbWVtb3J5IGJhciAq LwogCWJhcl9saXN0ID0gcGNpX3NlbGVjdF9iYXJzKGluc3RhbmNlLT5wZGV2LCBJT1JFU09VUkNF X01FTSk7CiAJaW5zdGFuY2UtPmJhciA9IGZpbmRfZmlyc3RfYml0KCZiYXJfbGlzdCwgc2l6ZW9m KHVuc2lnbmVkIGxvbmcpKTsKLQlpZiAocGNpX3JlcXVlc3Rfc2VsZWN0ZWRfcmVnaW9ucyhpbnN0 YW5jZS0+cGRldiwgaW5zdGFuY2UtPmJhciwKKwlpZiAocGNpX3JlcXVlc3Rfc2VsZWN0ZWRfcmVn aW9ucyhpbnN0YW5jZS0+cGRldiwgMTw8aW5zdGFuY2UtPmJhciwKIAkJCQkJICJtZWdhc2FzOiBM U0kiKSkgewogCQlwcmludGsoS0VSTl9ERUJVRyAibWVnYXNhczogSU8gbWVtb3J5IHJlZ2lvbiBi dXN5IVxuIik7CiAJCXJldHVybiAtRUJVU1k7CkBAIC0zNjYxLDcgKzM2NjEsNyBAQCBmYWlsX3Jl YWR5X3N0YXRlOgogCWlvdW5tYXAoaW5zdGFuY2UtPnJlZ19zZXQpOwogCiAgICAgICBmYWlsX2lv cmVtYXA6Ci0JcGNpX3JlbGVhc2Vfc2VsZWN0ZWRfcmVnaW9ucyhpbnN0YW5jZS0+cGRldiwgaW5z dGFuY2UtPmJhcik7CisJcGNpX3JlbGVhc2Vfc2VsZWN0ZWRfcmVnaW9ucyhpbnN0YW5jZS0+cGRl diwgMTw8aW5zdGFuY2UtPmJhcik7CiAKIAlyZXR1cm4gLUVJTlZBTDsKIH0KQEAgLTM2ODIsNyAr MzY4Miw3IEBAIHN0YXRpYyB2b2lkIG1lZ2FzYXNfcmVsZWFzZV9tZmkoc3RydWN0IG1lZ2FzYXNf aW5zdGFuY2UgKmluc3RhbmNlKQogCiAJaW91bm1hcChpbnN0YW5jZS0+cmVnX3NldCk7CiAKLQlw Y2lfcmVsZWFzZV9zZWxlY3RlZF9yZWdpb25zKGluc3RhbmNlLT5wZGV2LCBpbnN0YW5jZS0+YmFy KTsKKwlwY2lfcmVsZWFzZV9zZWxlY3RlZF9yZWdpb25zKGluc3RhbmNlLT5wZGV2LCAxPDxpbnN0 YW5jZS0+YmFyKTsKIH0KIAogLyoqCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvbWVnYXJhaWQv bWVnYXJhaWRfc2FzX2Z1c2lvbi5jIGIvZHJpdmVycy9zY3NpL21lZ2FyYWlkL21lZ2FyYWlkX3Nh c19mdXNpb24uYwppbmRleCAzZTBmNzFjMTU1YTMuLjE5NTFmNGU3M2JiNSAxMDA2NDQKLS0tIGEv ZHJpdmVycy9zY3NpL21lZ2FyYWlkL21lZ2FyYWlkX3Nhc19mdXNpb24uYworKysgYi9kcml2ZXJz L3Njc2kvbWVnYXJhaWQvbWVnYXJhaWRfc2FzX2Z1c2lvbi5jCkBAIC0yMDI2LDcgKzIwMjYsNyBA QCBtZWdhc2FzX3JlbGVhc2VfZnVzaW9uKHN0cnVjdCBtZWdhc2FzX2luc3RhbmNlICppbnN0YW5j ZSkKIAogCWlvdW5tYXAoaW5zdGFuY2UtPnJlZ19zZXQpOwogCi0JcGNpX3JlbGVhc2Vfc2VsZWN0 ZWRfcmVnaW9ucyhpbnN0YW5jZS0+cGRldiwgaW5zdGFuY2UtPmJhcik7CisJcGNpX3JlbGVhc2Vf c2VsZWN0ZWRfcmVnaW9ucyhpbnN0YW5jZS0+cGRldiwgMTw8aW5zdGFuY2UtPmJhcik7CiB9CiAK IC8qKgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2lpby9hY2NlbC9reHNkOS5jIGIvZHJp dmVycy9zdGFnaW5nL2lpby9hY2NlbC9reHNkOS5jCmluZGV4IDU1NDFlZDM4ZTA5MC4uM2VjN2Uz NGU4YWRhIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvaWlvL2FjY2VsL2t4c2Q5LmMKKysr IGIvZHJpdmVycy9zdGFnaW5nL2lpby9hY2NlbC9reHNkOS5jCkBAIC0xNjMsMTEgKzE2MywxMyBA QCBzdGF0aWMgaW50IGt4c2Q5X3JlYWRfcmF3KHN0cnVjdCBpaW9fZGV2ICppbmRpb19kZXYsCiAJ CWlmIChyZXQgPCAwKQogCQkJZ290byBlcnJvcl9yZXQ7CiAJCSp2YWwgPSByZXQ7CisJCXJldCA9 IElJT19WQUxfSU5UOwogCQlicmVhazsKIAljYXNlICgxIDw8IElJT19DSEFOX0lORk9fU0NBTEVf U0hBUkVEKToKIAkJcmV0ID0gc3BpX3c4cjgoc3QtPnVzLCBLWFNEOV9SRUFEKEtYU0Q5X1JFR19D VFJMX0MpKTsKIAkJaWYgKHJldCA8IDApCiAJCQlnb3RvIGVycm9yX3JldDsKKwkJKnZhbCA9IDA7 CiAJCSp2YWwyID0ga3hzZDlfbWljcm9fc2NhbGVzW3JldCAmIEtYU0Q5X0ZTX01BU0tdOwogCQly ZXQgPSBJSU9fVkFMX0lOVF9QTFVTX01JQ1JPOwogCQlicmVhazsKZGlmZiAtLWdpdCBhL2RyaXZl cnMvc3RhZ2luZy9wb2htZWxmcy9LY29uZmlnIGIvZHJpdmVycy9zdGFnaW5nL3BvaG1lbGZzL0tj b25maWcKaW5kZXggOGQ1M2IxYTFlNzE1Li5iODg3NjljMDNjY2IgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvc3RhZ2luZy9wb2htZWxmcy9LY29uZmlnCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9wb2htZWxm cy9LY29uZmlnCkBAIC0xLDUgKzEsNiBAQAogY29uZmlnIFBPSE1FTEZTCiAJdHJpc3RhdGUgIlBP SE1FTEZTIGZpbGVzeXN0ZW0gc3VwcG9ydCIKKwlkZXBlbmRzIG9uIEJST0tFTgogCWRlcGVuZHMg b24gTkVUCiAJc2VsZWN0IENPTk5FQ1RPUgogCXNlbGVjdCBDUllQVE8KZGlmZiAtLWdpdCBhL2Ry aXZlcnMvdHR5L3NlcmlhbC9zYW1zdW5nLmMgYi9kcml2ZXJzL3R0eS9zZXJpYWwvc2Ftc3VuZy5j CmluZGV4IDYyNmU3NWI2MGNhYS4uODA4ZDE3MWJkMWFmIDEwMDY0NAotLS0gYS9kcml2ZXJzL3R0 eS9zZXJpYWwvc2Ftc3VuZy5jCisrKyBiL2RyaXZlcnMvdHR5L3NlcmlhbC9zYW1zdW5nLmMKQEAg LTEyMzcsOCArMTIzNyw2IEBAIGludCBzM2MyNHh4X3NlcmlhbF9wcm9iZShzdHJ1Y3QgcGxhdGZv cm1fZGV2aWNlICpkZXYsCiAJZGJnKCJzM2MyNHh4X3NlcmlhbF9wcm9iZSglcCwgJXApICVkXG4i LCBkZXYsIGluZm8sIHByb2JlX2luZGV4KTsKIAogCW91cnBvcnQgPSAmczNjMjR4eF9zZXJpYWxf cG9ydHNbcHJvYmVfaW5kZXhdOwotCXByb2JlX2luZGV4Kys7Ci0KIAlkYmcoIiVzOiBpbml0aWFs aXNpbmcgcG9ydCAlcC4uLlxuIiwgX19mdW5jX18sIG91cnBvcnQpOwogCiAJcmV0ID0gczNjMjR4 eF9zZXJpYWxfaW5pdF9wb3J0KG91cnBvcnQsIGluZm8sIGRldik7CkBAIC0xMjc1LDYgKzEyNzMs OCBAQCBpbnQgX19kZXZleGl0IHMzYzI0eHhfc2VyaWFsX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1f ZGV2aWNlICpkZXYpCiAJCXVhcnRfcmVtb3ZlX29uZV9wb3J0KCZzM2MyNHh4X3VhcnRfZHJ2LCBw b3J0KTsKIAl9CiAKKwlwcm9iZV9pbmRleCsrOworCiAJcmV0dXJuIDA7CiB9CiAKZGlmZiAtLWdp dCBhL2RyaXZlcnMvdHR5L3Z0L2tleWJvYXJkLmMgYi9kcml2ZXJzL3R0eS92dC9rZXlib2FyZC5j CmluZGV4IGE2MDU1NDllZTI4Zi4uODljMDdkNjlhNTRhIDEwMDY0NAotLS0gYS9kcml2ZXJzL3R0 eS92dC9rZXlib2FyZC5jCisrKyBiL2RyaXZlcnMvdHR5L3Z0L2tleWJvYXJkLmMKQEAgLTM4Niwz NCArMzg2LDIyIEBAIHN0YXRpYyB2b2lkIHRvX3V0Zjgoc3RydWN0IHZjX2RhdGEgKnZjLCB1aW50 IGMpCiAgKi8KIHZvaWQgY29tcHV0ZV9zaGlmdHN0YXRlKHZvaWQpCiB7Ci0JdW5zaWduZWQgaW50 IGksIGosIGssIHN5bSwgdmFsOworCXVuc2lnbmVkIGludCBrLCBzeW0sIHZhbDsKIAogCXNoaWZ0 X3N0YXRlID0gMDsKIAltZW1zZXQoc2hpZnRfZG93biwgMCwgc2l6ZW9mKHNoaWZ0X2Rvd24pKTsK IAotCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGtleV9kb3duKTsgaSsrKSB7Ci0KLQkJaWYg KCFrZXlfZG93bltpXSkKKwlmb3JfZWFjaF9zZXRfYml0KGssIGtleV9kb3duLCBtaW4oTlJfS0VZ UywgS0VZX0NOVCkpIHsKKwkJc3ltID0gVShrZXlfbWFwc1swXVtrXSk7CisJCWlmIChLVFlQKHN5 bSkgIT0gS1RfU0hJRlQgJiYgS1RZUChzeW0pICE9IEtUX1NMT0NLKQogCQkJY29udGludWU7CiAK LQkJayA9IGkgKiBCSVRTX1BFUl9MT05HOwotCi0JCWZvciAoaiA9IDA7IGogPCBCSVRTX1BFUl9M T05HOyBqKyssIGsrKykgewotCi0JCQlpZiAoIXRlc3RfYml0KGssIGtleV9kb3duKSkKLQkJCQlj b250aW51ZTsKKwkJdmFsID0gS1ZBTChzeW0pOworCQlpZiAodmFsID09IEtWQUwoS19DQVBTU0hJ RlQpKQorCQkJdmFsID0gS1ZBTChLX1NISUZUKTsKIAotCQkJc3ltID0gVShrZXlfbWFwc1swXVtr XSk7Ci0JCQlpZiAoS1RZUChzeW0pICE9IEtUX1NISUZUICYmIEtUWVAoc3ltKSAhPSBLVF9TTE9D SykKLQkJCQljb250aW51ZTsKLQotCQkJdmFsID0gS1ZBTChzeW0pOwotCQkJaWYgKHZhbCA9PSBL VkFMKEtfQ0FQU1NISUZUKSkKLQkJCQl2YWwgPSBLVkFMKEtfU0hJRlQpOwotCi0JCQlzaGlmdF9k b3duW3ZhbF0rKzsKLQkJCXNoaWZ0X3N0YXRlIHw9ICgxIDw8IHZhbCk7Ci0JCX0KKwkJc2hpZnRf ZG93blt2YWxdKys7CisJCXNoaWZ0X3N0YXRlIHw9IEJJVCh2YWwpOwogCX0KIH0KIApkaWZmIC0t Z2l0IGEvZHJpdmVycy91c2IvY2xhc3MvY2RjLWFjbS5jIGIvZHJpdmVycy91c2IvY2xhc3MvY2Rj LWFjbS5jCmluZGV4IDNkOTZkZTBiMjc4Yy4uYTFiMzg0ZWNhYmJhIDEwMDY0NAotLS0gYS9kcml2 ZXJzL3VzYi9jbGFzcy9jZGMtYWNtLmMKKysrIGIvZHJpdmVycy91c2IvY2xhc3MvY2RjLWFjbS5j CkBAIC0xMTU2LDcgKzExNTYsNiBAQCBtYWRlX2NvbXByZXNzZWRfcHJvYmU6CiAJc3Bpbl9sb2Nr X2luaXQoJmFjbS0+d3JpdGVfbG9jayk7CiAJc3Bpbl9sb2NrX2luaXQoJmFjbS0+cmVhZF9sb2Nr KTsKIAltdXRleF9pbml0KCZhY20tPm11dGV4KTsKLQlhY20tPnJ4X2VuZHBvaW50ID0gdXNiX3Jj dmJ1bGtwaXBlKHVzYl9kZXYsIGVwcmVhZC0+YkVuZHBvaW50QWRkcmVzcyk7CiAJYWNtLT5pc19p bnRfZXAgPSB1c2JfZW5kcG9pbnRfeGZlcl9pbnQoZXByZWFkKTsKIAlpZiAoYWNtLT5pc19pbnRf ZXApCiAJCWFjbS0+YkludGVydmFsID0gZXByZWFkLT5iSW50ZXJ2YWw7CkBAIC0xMjA1LDE0ICsx MjA0LDE0IEBAIG1hZGVfY29tcHJlc3NlZF9wcm9iZToKIAkJdXJiLT50cmFuc2Zlcl9kbWEgPSBy Yi0+ZG1hOwogCQlpZiAoYWNtLT5pc19pbnRfZXApIHsKIAkJCXVzYl9maWxsX2ludF91cmIodXJi LCBhY20tPmRldiwKLQkJCQkJIGFjbS0+cnhfZW5kcG9pbnQsCisJCQkJCSB1c2JfcmN2aW50cGlw ZSh1c2JfZGV2LCBlcHJlYWQtPmJFbmRwb2ludEFkZHJlc3MpLAogCQkJCQkgcmItPmJhc2UsCiAJ CQkJCSBhY20tPnJlYWRzaXplLAogCQkJCQkgYWNtX3JlYWRfYnVsa19jYWxsYmFjaywgcmIsCiAJ CQkJCSBhY20tPmJJbnRlcnZhbCk7CiAJCX0gZWxzZSB7CiAJCQl1c2JfZmlsbF9idWxrX3VyYih1 cmIsIGFjbS0+ZGV2LAotCQkJCQkgIGFjbS0+cnhfZW5kcG9pbnQsCisJCQkJCSAgdXNiX3JjdmJ1 bGtwaXBlKHVzYl9kZXYsIGVwcmVhZC0+YkVuZHBvaW50QWRkcmVzcyksCiAJCQkJCSAgcmItPmJh c2UsCiAJCQkJCSAgYWNtLT5yZWFkc2l6ZSwKIAkJCQkJICBhY21fcmVhZF9idWxrX2NhbGxiYWNr LCByYik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9jbGFzcy9jZGMtYWNtLmggYi9kcml2ZXJz L3VzYi9jbGFzcy9jZGMtYWNtLmgKaW5kZXggZGZkNjZiYjU5NzdhLi4zMmVmMTc4YjhmODYgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2NsYXNzL2NkYy1hY20uaAorKysgYi9kcml2ZXJzL3VzYi9j bGFzcy9jZGMtYWNtLmgKQEAgLTk1LDcgKzk1LDYgQEAgc3RydWN0IGFjbSB7CiAJc3RydWN0IHVy YiAqcmVhZF91cmJzW0FDTV9OUl07CiAJc3RydWN0IGFjbV9yYiByZWFkX2J1ZmZlcnNbQUNNX05S XTsKIAlpbnQgcnhfYnVmbGltaXQ7Ci0JaW50IHJ4X2VuZHBvaW50OwogCXNwaW5sb2NrX3QgcmVh ZF9sb2NrOwogCWludCB3cml0ZV91c2VkOwkJCQkJLyogbnVtYmVyIG9mIG5vbi1lbXB0eSB3cml0 ZSBidWZmZXJzICovCiAJaW50IHRyYW5zbWl0dGluZzsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNi L2NvcmUvY29uZmlnLmMgYi9kcml2ZXJzL3VzYi9jb3JlL2NvbmZpZy5jCmluZGV4IGZmYzY5ODkx MzE4YS4uNWEyOGExNGZmYTFiIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9jb3JlL2NvbmZpZy5j CisrKyBiL2RyaXZlcnMvdXNiL2NvcmUvY29uZmlnLmMKQEAgLTE0NCw2ICsxNDQsMzEgQEAgc3Rh dGljIHZvaWQgdXNiX3BhcnNlX3NzX2VuZHBvaW50X2NvbXBhbmlvbihzdHJ1Y3QgZGV2aWNlICpk ZGV2LCBpbnQgY2Znbm8sCiAJfQogfQogCitzdGF0aWMgY29uc3QgdW5zaWduZWQgc2hvcnQgbG93 X3NwZWVkX21heHBhY2tldF9tYXhlc1s0XSA9IHsKKwlbVVNCX0VORFBPSU5UX1hGRVJfQ09OVFJP TF0gPSA4LAorCVtVU0JfRU5EUE9JTlRfWEZFUl9JU09DXSA9IDAsCisJW1VTQl9FTkRQT0lOVF9Y RkVSX0JVTEtdID0gMCwKKwlbVVNCX0VORFBPSU5UX1hGRVJfSU5UXSA9IDgsCit9Oworc3RhdGlj IGNvbnN0IHVuc2lnbmVkIHNob3J0IGZ1bGxfc3BlZWRfbWF4cGFja2V0X21heGVzWzRdID0gewor CVtVU0JfRU5EUE9JTlRfWEZFUl9DT05UUk9MXSA9IDY0LAorCVtVU0JfRU5EUE9JTlRfWEZFUl9J U09DXSA9IDEwMjMsCisJW1VTQl9FTkRQT0lOVF9YRkVSX0JVTEtdID0gNjQsCisJW1VTQl9FTkRQ T0lOVF9YRkVSX0lOVF0gPSA2NCwKK307CitzdGF0aWMgY29uc3QgdW5zaWduZWQgc2hvcnQgaGln aF9zcGVlZF9tYXhwYWNrZXRfbWF4ZXNbNF0gPSB7CisJW1VTQl9FTkRQT0lOVF9YRkVSX0NPTlRS T0xdID0gNjQsCisJW1VTQl9FTkRQT0lOVF9YRkVSX0lTT0NdID0gMTAyNCwKKwlbVVNCX0VORFBP SU5UX1hGRVJfQlVMS10gPSA1MTIsCisJW1VTQl9FTkRQT0lOVF9YRkVSX0lOVF0gPSAxMDI0LAor fTsKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBzaG9ydCBzdXBlcl9zcGVlZF9tYXhwYWNrZXRfbWF4 ZXNbNF0gPSB7CisJW1VTQl9FTkRQT0lOVF9YRkVSX0NPTlRST0xdID0gNTEyLAorCVtVU0JfRU5E UE9JTlRfWEZFUl9JU09DXSA9IDEwMjQsCisJW1VTQl9FTkRQT0lOVF9YRkVSX0JVTEtdID0gMTAy NCwKKwlbVVNCX0VORFBPSU5UX1hGRVJfSU5UXSA9IDEwMjQsCit9OworCiBzdGF0aWMgaW50IHVz Yl9wYXJzZV9lbmRwb2ludChzdHJ1Y3QgZGV2aWNlICpkZGV2LCBpbnQgY2Znbm8sIGludCBpbnVt LAogICAgIGludCBhc251bSwgc3RydWN0IHVzYl9ob3N0X2ludGVyZmFjZSAqaWZwLCBpbnQgbnVt X2VwLAogICAgIHVuc2lnbmVkIGNoYXIgKmJ1ZmZlciwgaW50IHNpemUpCkBAIC0xNTIsNiArMTc3 LDggQEAgc3RhdGljIGludCB1c2JfcGFyc2VfZW5kcG9pbnQoc3RydWN0IGRldmljZSAqZGRldiwg aW50IGNmZ25vLCBpbnQgaW51bSwKIAlzdHJ1Y3QgdXNiX2VuZHBvaW50X2Rlc2NyaXB0b3IgKmQ7 CiAJc3RydWN0IHVzYl9ob3N0X2VuZHBvaW50ICplbmRwb2ludDsKIAlpbnQgbiwgaSwgaiwgcmV0 dmFsOworCXVuc2lnbmVkIGludCBtYXhwOworCWNvbnN0IHVuc2lnbmVkIHNob3J0ICptYXhwYWNr ZXRfbWF4ZXM7CiAKIAlkID0gKHN0cnVjdCB1c2JfZW5kcG9pbnRfZGVzY3JpcHRvciAqKSBidWZm ZXI7CiAJYnVmZmVyICs9IGQtPmJMZW5ndGg7CkBAIC0xODYsOCArMjEzLDEwIEBAIHN0YXRpYyBp bnQgdXNiX3BhcnNlX2VuZHBvaW50KHN0cnVjdCBkZXZpY2UgKmRkZXYsIGludCBjZmdubywgaW50 IGludW0sCiAJbWVtY3B5KCZlbmRwb2ludC0+ZGVzYywgZCwgbik7CiAJSU5JVF9MSVNUX0hFQUQo JmVuZHBvaW50LT51cmJfbGlzdCk7CiAKLQkvKiBGaXggdXAgYkludGVydmFsIHZhbHVlcyBvdXRz aWRlIHRoZSBsZWdhbCByYW5nZS4gVXNlIDMyIG1zIGlmIG5vCi0JICogcHJvcGVyIHZhbHVlIGNh biBiZSBndWVzc2VkLiAqLworCS8qCisJICogRml4IHVwIGJJbnRlcnZhbCB2YWx1ZXMgb3V0c2lk ZSB0aGUgbGVnYWwgcmFuZ2UuCisJICogVXNlIDEwIG9yIDggbXMgaWYgbm8gcHJvcGVyIHZhbHVl IGNhbiBiZSBndWVzc2VkLgorCSAqLwogCWkgPSAwOwkJLyogaSA9IG1pbiwgaiA9IG1heCwgbiA9 IGRlZmF1bHQgKi8KIAlqID0gMjU1OwogCWlmICh1c2JfZW5kcG9pbnRfeGZlcl9pbnQoZCkpIHsK QEAgLTE5NSwxMyArMjI0LDE1IEBAIHN0YXRpYyBpbnQgdXNiX3BhcnNlX2VuZHBvaW50KHN0cnVj dCBkZXZpY2UgKmRkZXYsIGludCBjZmdubywgaW50IGludW0sCiAJCXN3aXRjaCAodG9fdXNiX2Rl dmljZShkZGV2KS0+c3BlZWQpIHsKIAkJY2FzZSBVU0JfU1BFRURfU1VQRVI6CiAJCWNhc2UgVVNC X1NQRUVEX0hJR0g6Ci0JCQkvKiBNYW55IGRldmljZSBtYW51ZmFjdHVyZXJzIGFyZSB1c2luZyBm dWxsLXNwZWVkCisJCQkvKgorCQkJICogTWFueSBkZXZpY2UgbWFudWZhY3R1cmVycyBhcmUgdXNp bmcgZnVsbC1zcGVlZAogCQkJICogYkludGVydmFsIHZhbHVlcyBpbiBoaWdoLXNwZWVkIGludGVy cnVwdCBlbmRwb2ludAotCQkJICogZGVzY3JpcHRvcnMuIFRyeSB0byBmaXggdGhvc2UgYW5kIGZh bGwgYmFjayB0byBhCi0JCQkgKiAzMiBtcyBkZWZhdWx0IHZhbHVlIG90aGVyd2lzZS4gKi8KKwkJ CSAqIGRlc2NyaXB0b3JzLiBUcnkgdG8gZml4IHRob3NlIGFuZCBmYWxsIGJhY2sgdG8gYW4KKwkJ CSAqIDgtbXMgZGVmYXVsdCB2YWx1ZSBvdGhlcndpc2UuCisJCQkgKi8KIAkJCW4gPSBmbHMoZC0+ YkludGVydmFsKjgpOwogCQkJaWYgKG4gPT0gMCkKLQkJCQluID0gOTsJLyogMzIgbXMgPSAyXig5 LTEpIHVmcmFtZXMgKi8KKwkJCQluID0gNzsJLyogOCBtcyA9IDJeKDctMSkgdWZyYW1lcyAqLwog CQkJaiA9IDE2OwogCiAJCQkvKgpAQCAtMjE2LDEwICsyNDcsMTIgQEAgc3RhdGljIGludCB1c2Jf cGFyc2VfZW5kcG9pbnQoc3RydWN0IGRldmljZSAqZGRldiwgaW50IGNmZ25vLCBpbnQgaW51bSwK IAkJCX0KIAkJCWJyZWFrOwogCQlkZWZhdWx0OgkJLyogVVNCX1NQRUVEX0ZVTEwgb3IgX0xPVyAq LwotCQkJLyogRm9yIGxvdy1zcGVlZCwgMTAgbXMgaXMgdGhlIG9mZmljaWFsIG1pbmltdW0uCisJ CQkvKgorCQkJICogRm9yIGxvdy1zcGVlZCwgMTAgbXMgaXMgdGhlIG9mZmljaWFsIG1pbmltdW0u CiAJCQkgKiBCdXQgc29tZSAib3ZlcmNsb2NrZWQiIGRldmljZXMgbWlnaHQgd2FudCBmYXN0ZXIK LQkJCSAqIHBvbGxpbmcgc28gd2UnbGwgYWxsb3cgaXQuICovCi0JCQluID0gMzI7CisJCQkgKiBw b2xsaW5nIHNvIHdlJ2xsIGFsbG93IGl0LgorCQkJICovCisJCQluID0gMTA7CiAJCQlicmVhazsK IAkJfQogCX0gZWxzZSBpZiAodXNiX2VuZHBvaW50X3hmZXJfaXNvYyhkKSkgewpAQCAtMjI3LDEw ICsyNjAsMTAgQEAgc3RhdGljIGludCB1c2JfcGFyc2VfZW5kcG9pbnQoc3RydWN0IGRldmljZSAq ZGRldiwgaW50IGNmZ25vLCBpbnQgaW51bSwKIAkJaiA9IDE2OwogCQlzd2l0Y2ggKHRvX3VzYl9k ZXZpY2UoZGRldiktPnNwZWVkKSB7CiAJCWNhc2UgVVNCX1NQRUVEX0hJR0g6Ci0JCQluID0gOTsJ CS8qIDMyIG1zID0gMl4oOS0xKSB1ZnJhbWVzICovCisJCQluID0gNzsJCS8qIDggbXMgPSAyXig3 LTEpIHVmcmFtZXMgKi8KIAkJCWJyZWFrOwogCQlkZWZhdWx0OgkJLyogVVNCX1NQRUVEX0ZVTEwg Ki8KLQkJCW4gPSA2OwkJLyogMzIgbXMgPSAyXig2LTEpIGZyYW1lcyAqLworCQkJbiA9IDQ7CQkv KiA4IG1zID0gMl4oNC0xKSBmcmFtZXMgKi8KIAkJCWJyZWFrOwogCQl9CiAJfQpAQCAtMjU4LDYg KzI5MSw0MSBAQCBzdGF0aWMgaW50IHVzYl9wYXJzZV9lbmRwb2ludChzdHJ1Y3QgZGV2aWNlICpk ZGV2LCBpbnQgY2Znbm8sIGludCBpbnVtLAogCQkJZW5kcG9pbnQtPmRlc2Mud01heFBhY2tldFNp emUgPSBjcHVfdG9fbGUxNig4KTsKIAl9CiAKKwkvKiBWYWxpZGF0ZSB0aGUgd01heFBhY2tldFNp emUgZmllbGQgKi8KKwltYXhwID0gdXNiX2VuZHBvaW50X21heHAoJmVuZHBvaW50LT5kZXNjKTsK KworCS8qIEZpbmQgdGhlIGhpZ2hlc3QgbGVnYWwgbWF4cGFja2V0IHNpemUgZm9yIHRoaXMgZW5k cG9pbnQgKi8KKwlpID0gMDsJCS8qIGFkZGl0aW9uYWwgdHJhbnNhY3Rpb25zIHBlciBtaWNyb2Zy YW1lICovCisJc3dpdGNoICh0b191c2JfZGV2aWNlKGRkZXYpLT5zcGVlZCkgeworCWNhc2UgVVNC X1NQRUVEX0xPVzoKKwkJbWF4cGFja2V0X21heGVzID0gbG93X3NwZWVkX21heHBhY2tldF9tYXhl czsKKwkJYnJlYWs7CisJY2FzZSBVU0JfU1BFRURfRlVMTDoKKwkJbWF4cGFja2V0X21heGVzID0g ZnVsbF9zcGVlZF9tYXhwYWNrZXRfbWF4ZXM7CisJCWJyZWFrOworCWNhc2UgVVNCX1NQRUVEX0hJ R0g6CisJCS8qIEJpdHMgMTIuLjExIGFyZSBhbGxvd2VkIG9ubHkgZm9yIEhTIHBlcmlvZGljIGVu ZHBvaW50cyAqLworCQlpZiAodXNiX2VuZHBvaW50X3hmZXJfaW50KGQpIHx8IHVzYl9lbmRwb2lu dF94ZmVyX2lzb2MoZCkpIHsKKwkJCWkgPSBtYXhwICYgKEJJVCgxMikgfCBCSVQoMTEpKTsKKwkJ CW1heHAgJj0gfmk7CisJCX0KKwkJLyogZmFsbHRocm91Z2ggKi8KKwlkZWZhdWx0OgorCQltYXhw YWNrZXRfbWF4ZXMgPSBoaWdoX3NwZWVkX21heHBhY2tldF9tYXhlczsKKwkJYnJlYWs7CisJY2Fz ZSBVU0JfU1BFRURfU1VQRVI6CisJCW1heHBhY2tldF9tYXhlcyA9IHN1cGVyX3NwZWVkX21heHBh Y2tldF9tYXhlczsKKwkJYnJlYWs7CisJfQorCWogPSBtYXhwYWNrZXRfbWF4ZXNbdXNiX2VuZHBv aW50X3R5cGUoJmVuZHBvaW50LT5kZXNjKV07CisKKwlpZiAobWF4cCA+IGopIHsKKwkJZGV2X3dh cm4oZGRldiwgImNvbmZpZyAlZCBpbnRlcmZhY2UgJWQgYWx0c2V0dGluZyAlZCBlbmRwb2ludCAw eCVYIGhhcyBpbnZhbGlkIG1heHBhY2tldCAlZCwgc2V0dGluZyB0byAlZFxuIiwKKwkJICAgIGNm Z25vLCBpbnVtLCBhc251bSwgZC0+YkVuZHBvaW50QWRkcmVzcywgbWF4cCwgaik7CisJCW1heHAg PSBqOworCQllbmRwb2ludC0+ZGVzYy53TWF4UGFja2V0U2l6ZSA9IGNwdV90b19sZTE2KGkgfCBt YXhwKTsKKwl9CisKIAkvKgogCSAqIFNvbWUgYnVnZ3kgaGlnaCBzcGVlZCBkZXZpY2VzIGhhdmUg YnVsayBlbmRwb2ludHMgdXNpbmcKIAkgKiBtYXhwYWNrZXQgc2l6ZXMgb3RoZXIgdGhhbiA1MTIu ICBIaWdoIHNwZWVkIEhDRHMgbWF5IG5vdApAQCAtMjY1LDkgKzMzMyw2IEBAIHN0YXRpYyBpbnQg dXNiX3BhcnNlX2VuZHBvaW50KHN0cnVjdCBkZXZpY2UgKmRkZXYsIGludCBjZmdubywgaW50IGlu dW0sCiAJICovCiAJaWYgKHRvX3VzYl9kZXZpY2UoZGRldiktPnNwZWVkID09IFVTQl9TUEVFRF9I SUdICiAJCQkmJiB1c2JfZW5kcG9pbnRfeGZlcl9idWxrKGQpKSB7Ci0JCXVuc2lnbmVkIG1heHA7 Ci0KLQkJbWF4cCA9IHVzYl9lbmRwb2ludF9tYXhwKCZlbmRwb2ludC0+ZGVzYykgJiAweDA3ZmY7 CiAJCWlmIChtYXhwICE9IDUxMikKIAkJCWRldl93YXJuKGRkZXYsICJjb25maWcgJWQgaW50ZXJm YWNlICVkIGFsdHNldHRpbmcgJWQgIgogCQkJCSJidWxrIGVuZHBvaW50IDB4JVggaGFzIGludmFs aWQgbWF4cGFja2V0ICVkXG4iLApkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvY29yZS9kZXZpby5j IGIvZHJpdmVycy91c2IvY29yZS9kZXZpby5jCmluZGV4IGVkMTE5MDFhYjhhYi4uNDVkMzAwN2Nm ODZlIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9jb3JlL2RldmlvLmMKKysrIGIvZHJpdmVycy91 c2IvY29yZS9kZXZpby5jCkBAIC0xMjgxLDExICsxMjgxLDE3IEBAIHN0YXRpYyBpbnQgcHJvY19k b19zdWJtaXR1cmIoc3RydWN0IGRldl9zdGF0ZSAqcHMsIHN0cnVjdCB1c2JkZXZmc191cmIgKnV1 cmIsCiAJYXMtPnVyYi0+c2V0dXBfcGFja2V0ID0gKHVuc2lnbmVkIGNoYXIgKilkcjsKIAlhcy0+ dXJiLT5zdGFydF9mcmFtZSA9IHV1cmItPnN0YXJ0X2ZyYW1lOwogCWFzLT51cmItPm51bWJlcl9v Zl9wYWNrZXRzID0gdXVyYi0+bnVtYmVyX29mX3BhY2tldHM7Ci0JaWYgKHV1cmItPnR5cGUgPT0g VVNCREVWRlNfVVJCX1RZUEVfSVNPIHx8Ci0JCQlwcy0+ZGV2LT5zcGVlZCA9PSBVU0JfU1BFRURf SElHSCkKLQkJYXMtPnVyYi0+aW50ZXJ2YWwgPSAxIDw8IG1pbigxNSwgZXAtPmRlc2MuYkludGVy dmFsIC0gMSk7Ci0JZWxzZQotCQlhcy0+dXJiLT5pbnRlcnZhbCA9IGVwLT5kZXNjLmJJbnRlcnZh bDsKKworCWlmIChlcC0+ZGVzYy5iSW50ZXJ2YWwpIHsKKwkJaWYgKHV1cmItPnR5cGUgPT0gVVNC REVWRlNfVVJCX1RZUEVfSVNPIHx8CisJCQkJcHMtPmRldi0+c3BlZWQgPT0gVVNCX1NQRUVEX0hJ R0ggfHwKKwkJCQlwcy0+ZGV2LT5zcGVlZCA+PSBVU0JfU1BFRURfU1VQRVIpCisJCQlhcy0+dXJi LT5pbnRlcnZhbCA9IDEgPDwKKwkJCQkJbWluKDE1LCBlcC0+ZGVzYy5iSW50ZXJ2YWwgLSAxKTsK KwkJZWxzZQorCQkJYXMtPnVyYi0+aW50ZXJ2YWwgPSBlcC0+ZGVzYy5iSW50ZXJ2YWw7CisJfQor CiAJYXMtPnVyYi0+Y29udGV4dCA9IGFzOwogCWFzLT51cmItPmNvbXBsZXRlID0gYXN5bmNfY29t cGxldGVkOwogCWZvciAodG90bGVuID0gdSA9IDA7IHUgPCB1dXJiLT5udW1iZXJfb2ZfcGFja2V0 czsgdSsrKSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9nYWRnZXQvZnNsX3FlX3VkYy5jIGIv ZHJpdmVycy91c2IvZ2FkZ2V0L2ZzbF9xZV91ZGMuYwppbmRleCBlMDBjZjkyNDA5Y2UuLjRlMmI1 YTkwMWZmZSAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvZ2FkZ2V0L2ZzbF9xZV91ZGMuYworKysg Yi9kcml2ZXJzL3VzYi9nYWRnZXQvZnNsX3FlX3VkYy5jCkBAIC0xODgzLDExICsxODgzLDggQEAg c3RhdGljIGludCBxZV9nZXRfZnJhbWUoc3RydWN0IHVzYl9nYWRnZXQgKmdhZGdldCkKIAogCXRt cCA9IGluX2JlMTYoJnVkY19jb250cm9sbGVyLT51c2JfcGFyYW0tPmZyYW1lX24pOwogCWlmICh0 bXAgJiAweDgwMDApCi0JCXRtcCA9IHRtcCAmIDB4MDdmZjsKLQllbHNlCi0JCXRtcCA9IC1FSU5W QUw7Ci0KLQlyZXR1cm4gKGludCl0bXA7CisJCXJldHVybiB0bXAgJiAweDA3ZmY7CisJcmV0dXJu IC1FSU5WQUw7CiB9CiAKIC8qIFRyaWVzIHRvIHdha2UgdXAgdGhlIGhvc3QgY29ubmVjdGVkIHRv IHRoaXMgZ2FkZ2V0CmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9ob3N0L3hoY2ktaHViLmMgYi9k cml2ZXJzL3VzYi9ob3N0L3hoY2ktaHViLmMKaW5kZXggODYwNTgxMzA4Zjg3Li4xM2JiMzE2ZTgz MmIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2hvc3QveGhjaS1odWIuYworKysgYi9kcml2ZXJz L3VzYi9ob3N0L3hoY2ktaHViLmMKQEAgLTI3OCw2ICsyNzgsOSBAQCBzdGF0aWMgaW50IHhoY2lf c3RvcF9kZXZpY2Uoc3RydWN0IHhoY2lfaGNkICp4aGNpLCBpbnQgc2xvdF9pZCwgaW50IHN1c3Bl bmQpCiAKIAlyZXQgPSAwOwogCXZpcnRfZGV2ID0geGhjaS0+ZGV2c1tzbG90X2lkXTsKKwlpZiAo IXZpcnRfZGV2KQorCQlyZXR1cm4gLUVOT0RFVjsKKwogCWNtZCA9IHhoY2lfYWxsb2NfY29tbWFu ZCh4aGNpLCBmYWxzZSwgdHJ1ZSwgR0ZQX05PSU8pOwogCWlmICghY21kKSB7CiAJCXhoY2lfZGJn KHhoY2ksICJDb3VsZG4ndCBhbGxvY2F0ZSBjb21tYW5kIHN0cnVjdHVyZS5cbiIpOwpkaWZmIC0t Z2l0IGEvZHJpdmVycy91c2IvaG9zdC94aGNpLXBjaS5jIGIvZHJpdmVycy91c2IvaG9zdC94aGNp LXBjaS5jCmluZGV4IDUwYWY1NTkxODNlYi4uY2M2YWE2NmY0Mjc4IDEwMDY0NAotLS0gYS9kcml2 ZXJzL3VzYi9ob3N0L3hoY2ktcGNpLmMKKysrIGIvZHJpdmVycy91c2IvaG9zdC94aGNpLXBjaS5j CkBAIC0yNTIsMTIgKzI1MiwxMyBAQCBzdGF0aWMgdm9pZCB4aGNpX3BjaV9yZW1vdmUoc3RydWN0 IHBjaV9kZXYgKmRldikKIAkJdXNiX3JlbW92ZV9oY2QoeGhjaS0+c2hhcmVkX2hjZCk7CiAJCXVz Yl9wdXRfaGNkKHhoY2ktPnNoYXJlZF9oY2QpOwogCX0KLQl1c2JfaGNkX3BjaV9yZW1vdmUoZGV2 KTsKIAogCS8qIFdvcmthcm91bmQgZm9yIHNwdXJpb3VzIHdha2V1cHMgYXQgc2h1dGRvd24gd2l0 aCBIU1cgKi8KIAlpZiAoeGhjaS0+cXVpcmtzICYgWEhDSV9TUFVSSU9VU19XQUtFVVApCiAJCXBj aV9zZXRfcG93ZXJfc3RhdGUoZGV2LCBQQ0lfRDNob3QpOwogCisJdXNiX2hjZF9wY2lfcmVtb3Zl KGRldik7CisKIAlrZnJlZSh4aGNpKTsKIH0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvcmVu ZXNhc191c2Jocy9maWZvLmMgYi9kcml2ZXJzL3VzYi9yZW5lc2FzX3VzYmhzL2ZpZm8uYwppbmRl eCA2ZmI1NTE0NzZjY2EuLjJlYjM5YjM5ZWExYiAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvcmVu ZXNhc191c2Jocy9maWZvLmMKKysrIGIvZHJpdmVycy91c2IvcmVuZXNhc191c2Jocy9maWZvLmMK QEAgLTc2MCwxNSArNzYwLDIyIEBAIHN0YXRpYyB2b2lkIHVzYmhzZl9kbWFfcHJlcGFyZV90YXNr bGV0KHVuc2lnbmVkIGxvbmcgZGF0YSkKIHsKIAlzdHJ1Y3QgdXNiaHNfcGt0ICpwa3QgPSAoc3Ry dWN0IHVzYmhzX3BrdCAqKWRhdGE7CiAJc3RydWN0IHVzYmhzX3BpcGUgKnBpcGUgPSBwa3QtPnBp cGU7Ci0Jc3RydWN0IHVzYmhzX2ZpZm8gKmZpZm8gPSB1c2Joc19waXBlX3RvX2ZpZm8ocGlwZSk7 CisJc3RydWN0IHVzYmhzX2ZpZm8gKmZpZm87CiAJc3RydWN0IHVzYmhzX3ByaXYgKnByaXYgPSB1 c2Joc19waXBlX3RvX3ByaXYocGlwZSk7CiAJc3RydWN0IHNjYXR0ZXJsaXN0IHNnOwogCXN0cnVj dCBkbWFfYXN5bmNfdHhfZGVzY3JpcHRvciAqZGVzYzsKLQlzdHJ1Y3QgZG1hX2NoYW4gKmNoYW4g PSB1c2Joc2ZfZG1hX2NoYW5fZ2V0KGZpZm8sIHBrdCk7CisJc3RydWN0IGRtYV9jaGFuICpjaGFu OwogCXN0cnVjdCBkZXZpY2UgKmRldiA9IHVzYmhzX3ByaXZfdG9fZGV2KHByaXYpOwogCWVudW0g ZG1hX2RhdGFfZGlyZWN0aW9uIGRpcjsKIAlkbWFfY29va2llX3QgY29va2llOworCXVuc2lnbmVk IGxvbmcgZmxhZ3M7CisKKwl1c2Joc19sb2NrKHByaXYsIGZsYWdzKTsKKwlmaWZvID0gdXNiaHNf cGlwZV90b19maWZvKHBpcGUpOworCWlmICghZmlmbykKKwkJZ290byB4ZmVyX3dvcmtfZW5kOwog CisJY2hhbiA9IHVzYmhzZl9kbWFfY2hhbl9nZXQoZmlmbywgcGt0KTsKIAlkaXIgPSB1c2Joc19w aXBlX2lzX2Rpcl9pbihwaXBlKSA/IERNQV9GUk9NX0RFVklDRSA6IERNQV9UT19ERVZJQ0U7CiAK IAlzZ19pbml0X3RhYmxlKCZzZywgMSk7CkBAIC03ODEsNyArNzg4LDcgQEAgc3RhdGljIHZvaWQg dXNiaHNmX2RtYV9wcmVwYXJlX3Rhc2tsZXQodW5zaWduZWQgbG9uZyBkYXRhKQogCQkJCQkJICBE TUFfUFJFUF9JTlRFUlJVUFQgfAogCQkJCQkJICBETUFfQ1RSTF9BQ0spOwogCWlmICghZGVzYykK LQkJcmV0dXJuOworCQlnb3RvIHhmZXJfd29ya19lbmQ7CiAKIAlkZXNjLT5jYWxsYmFjawkJPSB1 c2Joc2ZfZG1hX2NvbXBsZXRlOwogCWRlc2MtPmNhbGxiYWNrX3BhcmFtCT0gcGlwZTsKQEAgLTc4 OSw3ICs3OTYsNyBAQCBzdGF0aWMgdm9pZCB1c2Joc2ZfZG1hX3ByZXBhcmVfdGFza2xldCh1bnNp Z25lZCBsb25nIGRhdGEpCiAJY29va2llID0gZGVzYy0+dHhfc3VibWl0KGRlc2MpOwogCWlmIChj b29raWUgPCAwKSB7CiAJCWRldl9lcnIoZGV2LCAiRmFpbGVkIHRvIHN1Ym1pdCBkbWEgZGVzY3Jp cHRvclxuIik7Ci0JCXJldHVybjsKKwkJZ290byB4ZmVyX3dvcmtfZW5kOwogCX0KIAogCWRldl9k YmcoZGV2LCAiICAlcyAlZCAoJWQvICVkKVxuIiwKQEAgLTc5Nyw2ICs4MDQsOSBAQCBzdGF0aWMg dm9pZCB1c2Joc2ZfZG1hX3ByZXBhcmVfdGFza2xldCh1bnNpZ25lZCBsb25nIGRhdGEpCiAKIAl1 c2Joc2ZfZG1hX3N0YXJ0KHBpcGUsIGZpZm8pOwogCWRtYV9hc3luY19pc3N1ZV9wZW5kaW5nKGNo YW4pOworCit4ZmVyX3dvcmtfZW5kOgorCXVzYmhzX3VubG9jayhwcml2LCBmbGFncyk7CiB9CiAK IC8qCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9yZW5lc2FzX3VzYmhzL21vZF9nYWRnZXQuYyBi L2RyaXZlcnMvdXNiL3JlbmVzYXNfdXNiaHMvbW9kX2dhZGdldC5jCmluZGV4IDBiMWZjMDc3NmI4 Mi4uZWI0NjU2MjExOTNiIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9yZW5lc2FzX3VzYmhzL21v ZF9nYWRnZXQuYworKysgYi9kcml2ZXJzL3VzYi9yZW5lc2FzX3VzYmhzL21vZF9nYWRnZXQuYwpA QCAtNDcyLDYgKzQ3Miw5IEBAIHN0YXRpYyBpbnQgdXNiaHNnX2VwX2VuYWJsZShzdHJ1Y3QgdXNi X2VwICplcCwKIAlzdHJ1Y3QgdXNiaHNfcHJpdiAqcHJpdiA9IHVzYmhzZ19ncHJpdl90b19wcml2 KGdwcml2KTsKIAlzdHJ1Y3QgdXNiaHNfcGlwZSAqcGlwZTsKIAlpbnQgcmV0ID0gLUVJTzsKKwl1 bnNpZ25lZCBsb25nIGZsYWdzOworCisJdXNiaHNfbG9jayhwcml2LCBmbGFncyk7CiAKIAkvKgog CSAqIGlmIGl0IGFscmVhZHkgaGF2ZSBwaXBlLApAQCAtNDgwLDcgKzQ4Myw4IEBAIHN0YXRpYyBp bnQgdXNiaHNnX2VwX2VuYWJsZShzdHJ1Y3QgdXNiX2VwICplcCwKIAlpZiAodWVwLT5waXBlKSB7 CiAJCXVzYmhzX3BpcGVfY2xlYXIodWVwLT5waXBlKTsKIAkJdXNiaHNfcGlwZV9zZXF1ZW5jZV9k YXRhMCh1ZXAtPnBpcGUpOwotCQlyZXR1cm4gMDsKKwkJcmV0ID0gMDsKKwkJZ290byB1c2Joc2df ZXBfZW5hYmxlX2VuZDsKIAl9CiAKIAlwaXBlID0gdXNiaHNfcGlwZV9tYWxsb2MocHJpdiwKQEAg LTUwOCw2ICs1MTIsOSBAQCBzdGF0aWMgaW50IHVzYmhzZ19lcF9lbmFibGUoc3RydWN0IHVzYl9l cCAqZXAsCiAJCXJldCA9IDA7CiAJfQogCit1c2Joc2dfZXBfZW5hYmxlX2VuZDoKKwl1c2Joc191 bmxvY2socHJpdiwgZmxhZ3MpOworCiAJcmV0dXJuIHJldDsKIH0KIApkaWZmIC0tZ2l0IGEvZHJp dmVycy91c2Ivc2VyaWFsL2Z0ZGlfc2lvLmMgYi9kcml2ZXJzL3VzYi9zZXJpYWwvZnRkaV9zaW8u YwppbmRleCBmMGI3NTI1OTFmMmUuLjkzZmUwMDc3ZjEwOCAxMDA2NDQKLS0tIGEvZHJpdmVycy91 c2Ivc2VyaWFsL2Z0ZGlfc2lvLmMKKysrIGIvZHJpdmVycy91c2Ivc2VyaWFsL2Z0ZGlfc2lvLmMK QEAgLTY3Miw2ICs2NzIsOCBAQCBzdGF0aWMgc3RydWN0IHVzYl9kZXZpY2VfaWQgaWRfdGFibGVf Y29tYmluZWQgW10gPSB7CiAJeyBVU0JfREVWSUNFKEZURElfVklELCBGVERJX0VMVl9URkQxMjhf UElEKSB9LAogCXsgVVNCX0RFVklDRShGVERJX1ZJRCwgRlRESV9FTFZfRk0zUlhfUElEKSB9LAog CXsgVVNCX0RFVklDRShGVERJX1ZJRCwgRlRESV9FTFZfV1M3NzdfUElEKSB9LAorCXsgVVNCX0RF VklDRShGVERJX1ZJRCwgRlRESV9QQUxNU0VOU19QSUQpIH0sCisJeyBVU0JfREVWSUNFKEZURElf VklELCBGVERJX0lWSVVNX1hTVEFUX1BJRCkgfSwKIAl7IFVTQl9ERVZJQ0UoRlRESV9WSUQsIExJ TlhfU0RNVVNCUVNTX1BJRCkgfSwKIAl7IFVTQl9ERVZJQ0UoRlRESV9WSUQsIExJTlhfTUFTVEVS REVWRUwyX1BJRCkgfSwKIAl7IFVTQl9ERVZJQ0UoRlRESV9WSUQsIExJTlhfRlVUVVJFXzBfUElE KSB9LApAQCAtMTAzMCw2ICsxMDMyLDcgQEAgc3RhdGljIHN0cnVjdCB1c2JfZGV2aWNlX2lkIGlk X3RhYmxlX2NvbWJpbmVkIFtdID0gewogCXsgVVNCX0RFVklDRShJQ1BEQVNfVklELCBJQ1BEQVNf STc1NjBVX1BJRCkgfSwKIAl7IFVTQl9ERVZJQ0UoSUNQREFTX1ZJRCwgSUNQREFTX0k3NTYxVV9Q SUQpIH0sCiAJeyBVU0JfREVWSUNFKElDUERBU19WSUQsIElDUERBU19JNzU2M1VfUElEKSB9LAor CXsgVVNCX0RFVklDRShXSUNFRF9WSUQsIFdJQ0VEX1VTQjIwNzA2VjJfUElEKSB9LAogCXsgfSwJ CQkJCS8qIE9wdGlvbmFsIHBhcmFtZXRlciBlbnRyeSAqLwogCXsgfQkJCQkJLyogVGVybWluYXRp bmcgZW50cnkgKi8KIH07CmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9zZXJpYWwvZnRkaV9zaW9f aWRzLmggYi9kcml2ZXJzL3VzYi9zZXJpYWwvZnRkaV9zaW9faWRzLmgKaW5kZXggYzJlODBlYmUz NGE5Li41NTk2Njk3ODZhMjAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL3NlcmlhbC9mdGRpX3Np b19pZHMuaAorKysgYi9kcml2ZXJzL3VzYi9zZXJpYWwvZnRkaV9zaW9faWRzLmgKQEAgLTQwNiw2 ICs0MDYsMTIgQEAKICNkZWZpbmUgRlRESV80Tl9HQUxBWFlfREVfM19QSUQJMHhGM0MyCiAKIC8q CisgKiBJdml1bSBUZWNobm9sb2dpZXMgcHJvZHVjdCBJRHMKKyAqLworI2RlZmluZSBGVERJX1BB TE1TRU5TX1BJRAkweGY0NDAKKyNkZWZpbmUgRlRESV9JVklVTV9YU1RBVF9QSUQJMHhmNDQxCisK Ky8qCiAgKiBMaW54IFRlY2hub2xvZ2llcyBwcm9kdWN0IGlkcwogICovCiAjZGVmaW5lIExJTlhf U0RNVVNCUVNTX1BJRAkweEY0NDgJLyogTGlueCBTRE0tVVNCLVFTLVMgKi8KQEAgLTY2Nyw2ICs2 NzMsMTIgQEAKICNkZWZpbmUgSU5UUkVQSURfTkVPVklfUElECTB4MDcwMQogCiAvKgorICogV0lD RUQgVVNCIFVBUlQKKyAqLworI2RlZmluZSBXSUNFRF9WSUQJCTB4MEE1QworI2RlZmluZSBXSUNF RF9VU0IyMDcwNlYyX1BJRAkweDY0MjIKKworLyoKICAqIERlZmluaXRpb25zIGZvciBJRCBURUNI ICh3d3cuaWR0LW5ldC5jb20pIGRldmljZXMKICAqLwogI2RlZmluZSBJRFRFQ0hfVklECQkweDBB Q0QJLyogSUQgVEVDSCBWZW5kb3IgSUQgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL3Nlcmlh bC9tb3M3NzIwLmMgYi9kcml2ZXJzL3VzYi9zZXJpYWwvbW9zNzcyMC5jCmluZGV4IDhlMDJmZjJi N2Q3Zi4uZTM2MDliODRiN2E4IDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9zZXJpYWwvbW9zNzcy MC5jCisrKyBiL2RyaXZlcnMvdXNiL3NlcmlhbC9tb3M3NzIwLmMKQEAgLTEzMjAsNyArMTMyMCw3 IEBAIHN0YXRpYyBpbnQgbW9zNzcyMF93cml0ZShzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5LCBzdHJ1 Y3QgdXNiX3NlcmlhbF9wb3J0ICpwb3J0LAogCiAJaWYgKHVyYi0+dHJhbnNmZXJfYnVmZmVyID09 IE5VTEwpIHsKIAkJdXJiLT50cmFuc2Zlcl9idWZmZXIgPSBrbWFsbG9jKFVSQl9UUkFOU0ZFUl9C VUZGRVJfU0laRSwKLQkJCQkJICAgICAgIEdGUF9LRVJORUwpOworCQkJCQkgICAgICAgR0ZQX0FU T01JQyk7CiAJCWlmICh1cmItPnRyYW5zZmVyX2J1ZmZlciA9PSBOVUxMKSB7CiAJCQlkZXZfZXJy KCZwb3J0LT5kZXYsICIlcyBubyBtb3JlIGtlcm5lbCBtZW1vcnkuLi5cbiIsCiAJCQkJX19mdW5j X18pOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2Ivc2VyaWFsL21vczc4NDAuYyBiL2RyaXZlcnMv dXNiL3NlcmlhbC9tb3M3ODQwLmMKaW5kZXggODBmYzQwYTBjOTlhLi41OWZkYjg0ZDAxNmYgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL3NlcmlhbC9tb3M3ODQwLmMKKysrIGIvZHJpdmVycy91c2Iv c2VyaWFsL21vczc4NDAuYwpAQCAtMTUyNCw4ICsxNTI0LDggQEAgc3RhdGljIGludCBtb3M3ODQw X3dyaXRlKHN0cnVjdCB0dHlfc3RydWN0ICp0dHksIHN0cnVjdCB1c2Jfc2VyaWFsX3BvcnQgKnBv cnQsCiAJfQogCiAJaWYgKHVyYi0+dHJhbnNmZXJfYnVmZmVyID09IE5VTEwpIHsKLQkJdXJiLT50 cmFuc2Zlcl9idWZmZXIgPQotCQkgICAga21hbGxvYyhVUkJfVFJBTlNGRVJfQlVGRkVSX1NJWkUs IEdGUF9LRVJORUwpOworCQl1cmItPnRyYW5zZmVyX2J1ZmZlciA9IGttYWxsb2MoVVJCX1RSQU5T RkVSX0JVRkZFUl9TSVpFLAorCQkJCQkgICAgICAgR0ZQX0FUT01JQyk7CiAKIAkJaWYgKHVyYi0+ dHJhbnNmZXJfYnVmZmVyID09IE5VTEwpIHsKIAkJCWRldl9lcnIoJnBvcnQtPmRldiwgIiVzIG5v IG1vcmUga2VybmVsIG1lbW9yeS4uLlxuIiwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL3Nlcmlh bC9vcHRpb24uYyBiL2RyaXZlcnMvdXNiL3NlcmlhbC9vcHRpb24uYwppbmRleCBkNTQxYjI1NDA4 MzcuLjEwZTc5Yjc2ZThkMSAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2Ivc2VyaWFsL29wdGlvbi5j CisrKyBiL2RyaXZlcnMvdXNiL3NlcmlhbC9vcHRpb24uYwpAQCAtMjczLDYgKzI3Myw3IEBAIHN0 YXRpYyB2b2lkIG9wdGlvbl9pbnN0YXRfY2FsbGJhY2soc3RydWN0IHVyYiAqdXJiKTsKICNkZWZp bmUgVEVMSVRfUFJPRFVDVF9MRTkyMl9VU0JDRkczCQkweDEwNDMKICNkZWZpbmUgVEVMSVRfUFJP RFVDVF9MRTkyMAkJCTB4MTIwMAogI2RlZmluZSBURUxJVF9QUk9EVUNUX0xFOTEwCQkJMHgxMjAx CisjZGVmaW5lIFRFTElUX1BST0RVQ1RfTEU5MTBfVVNCQ0ZHNAkJMHgxMjA2CiAKIC8qIFpURSBQ Uk9EVUNUUyAqLwogI2RlZmluZSBaVEVfVkVORE9SX0lECQkJCTB4MTlkMgpAQCAtNTExLDYgKzUx MiwxMiBAQCBzdGF0aWMgdm9pZCBvcHRpb25faW5zdGF0X2NhbGxiYWNrKHN0cnVjdCB1cmIgKnVy Yik7CiAjZGVmaW5lIFZJQVRFTEVDT01fVkVORE9SX0lECQkJMHgxNWViCiAjZGVmaW5lIFZJQVRF TEVDT01fUFJPRFVDVF9DRFM3CQkJMHgwMDAxCiAKKy8qIFdlVGVsZWNvbSBwcm9kdWN0cyAqLwor I2RlZmluZSBXRVRFTEVDT01fVkVORE9SX0lECQkJMHgyMmRlCisjZGVmaW5lIFdFVEVMRUNPTV9Q Uk9EVUNUX1dNRDIwMAkJMHg2ODAxCisjZGVmaW5lIFdFVEVMRUNPTV9QUk9EVUNUXzY4MDIJCQkw eDY4MDIKKyNkZWZpbmUgV0VURUxFQ09NX1BST0RVQ1RfV01EMzAwCQkweDY4MDMKKwogLyogc29t ZSBkZXZpY2VzIGludGVyZmFjZXMgbmVlZCBzcGVjaWFsIGhhbmRsaW5nIGR1ZSB0byBhIG51bWJl ciBvZiByZWFzb25zICovCiBlbnVtIG9wdGlvbl9ibGFja2xpc3RfcmVhc29uIHsKIAkJT1BUSU9O X0JMQUNLTElTVF9OT05FID0gMCwKQEAgLTExOTMsNiArMTIwMCw4IEBAIHN0YXRpYyBjb25zdCBz dHJ1Y3QgdXNiX2RldmljZV9pZCBvcHRpb25faWRzW10gPSB7CiAJCS5kcml2ZXJfaW5mbyA9IChr ZXJuZWxfdWxvbmdfdCkmdGVsaXRfbGU5MjJfYmxhY2tsaXN0X3VzYmNmZzMgfSwKIAl7IFVTQl9E RVZJQ0UoVEVMSVRfVkVORE9SX0lELCBURUxJVF9QUk9EVUNUX0xFOTEwKSwKIAkJLmRyaXZlcl9p bmZvID0gKGtlcm5lbF91bG9uZ190KSZ0ZWxpdF9sZTkxMF9ibGFja2xpc3QgfSwKKwl7IFVTQl9E RVZJQ0UoVEVMSVRfVkVORE9SX0lELCBURUxJVF9QUk9EVUNUX0xFOTEwX1VTQkNGRzQpLAorCQku ZHJpdmVyX2luZm8gPSAoa2VybmVsX3Vsb25nX3QpJnRlbGl0X2xlOTIyX2JsYWNrbGlzdF91c2Jj ZmczIH0sCiAJeyBVU0JfREVWSUNFKFRFTElUX1ZFTkRPUl9JRCwgVEVMSVRfUFJPRFVDVF9MRTky MCksCiAJCS5kcml2ZXJfaW5mbyA9IChrZXJuZWxfdWxvbmdfdCkmdGVsaXRfbGU5MjBfYmxhY2ts aXN0IH0sCiAJeyBVU0JfREVWSUNFX0FORF9JTlRFUkZBQ0VfSU5GTyhaVEVfVkVORE9SX0lELCBa VEVfUFJPRFVDVF9NRjYyMiwgMHhmZiwgMHhmZiwgMHhmZikgfSwgLyogWlRFIFdDRE1BIHByb2R1 Y3RzICovCkBAIC0xOTQyLDggKzE5NTEsMTIgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCB1c2JfZGV2 aWNlX2lkIG9wdGlvbl9pZHNbXSA9IHsKIAl7IFVTQl9ERVZJQ0VfQU5EX0lOVEVSRkFDRV9JTkZP KDB4MjAwMSwgMHg3ZDAzLCAweGZmLCAweDAwLCAweDAwKSB9LAogCXsgVVNCX0RFVklDRV9BTkRf SU5URVJGQUNFX0lORk8oMHgwN2QxLCAweDNlMDEsIDB4ZmYsIDB4ZmYsIDB4ZmYpIH0sIC8qIEQt TGluayBEV00tMTUyL0MxICovCiAJeyBVU0JfREVWSUNFX0FORF9JTlRFUkZBQ0VfSU5GTygweDA3 ZDEsIDB4M2UwMiwgMHhmZiwgMHhmZiwgMHhmZikgfSwgLyogRC1MaW5rIERXTS0xNTYvQzEgKi8K Kwl7IFVTQl9ERVZJQ0VfQU5EX0lOVEVSRkFDRV9JTkZPKDB4MDdkMSwgMHg3ZTExLCAweGZmLCAw eGZmLCAweGZmKSB9LCAvKiBELUxpbmsgRFdNLTE1Ni9BMyAqLwogCXsgVVNCX0RFVklDRShJTk9W SUFfVkVORE9SX0lELCBJTk9WSUFfU0VXODU4KSB9LAogCXsgVVNCX0RFVklDRShWSUFURUxFQ09N X1ZFTkRPUl9JRCwgVklBVEVMRUNPTV9QUk9EVUNUX0NEUzcpIH0sCisJeyBVU0JfREVWSUNFX0FO RF9JTlRFUkZBQ0VfSU5GTyhXRVRFTEVDT01fVkVORE9SX0lELCBXRVRFTEVDT01fUFJPRFVDVF9X TUQyMDAsIDB4ZmYsIDB4ZmYsIDB4ZmYpIH0sCisJeyBVU0JfREVWSUNFX0FORF9JTlRFUkZBQ0Vf SU5GTyhXRVRFTEVDT01fVkVORE9SX0lELCBXRVRFTEVDT01fUFJPRFVDVF82ODAyLCAweGZmLCAw eGZmLCAweGZmKSB9LAorCXsgVVNCX0RFVklDRV9BTkRfSU5URVJGQUNFX0lORk8oV0VURUxFQ09N X1ZFTkRPUl9JRCwgV0VURUxFQ09NX1BST0RVQ1RfV01EMzAwLCAweGZmLCAweGZmLCAweGZmKSB9 LAogCXsgfSAvKiBUZXJtaW5hdGluZyBlbnRyeSAqLwogfTsKIE1PRFVMRV9ERVZJQ0VfVEFCTEUo dXNiLCBvcHRpb25faWRzKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlydGlvL3ZpcnRpb19iYWxs b29uLmMgYi9kcml2ZXJzL3ZpcnRpby92aXJ0aW9fYmFsbG9vbi5jCmluZGV4IDI4MTUzZmIyMjI1 ZC4uMjk3NWM1MDg5ZGFjIDEwMDY0NAotLS0gYS9kcml2ZXJzL3ZpcnRpby92aXJ0aW9fYmFsbG9v bi5jCisrKyBiL2RyaXZlcnMvdmlydGlvL3ZpcnRpb19iYWxsb29uLmMKQEAgLTE0Miw2ICsxNDIs OCBAQCBzdGF0aWMgdm9pZCBsZWFrX2JhbGxvb24oc3RydWN0IHZpcnRpb19iYWxsb29uICp2Yiwg c2l6ZV90IG51bSkKIAkvKiBXZSBjYW4gb25seSBkbyBvbmUgYXJyYXkgd29ydGggYXQgYSB0aW1l LiAqLwogCW51bSA9IG1pbihudW0sIEFSUkFZX1NJWkUodmItPnBmbnMpKTsKIAorCS8qIFdlIGNh bid0IHJlbGVhc2UgbW9yZSBwYWdlcyB0aGFuIHRha2VuICovCisJbnVtID0gbWluKG51bSwgKHNp emVfdCl2Yi0+bnVtX3BhZ2VzKTsKIAlmb3IgKHZiLT5udW1fcGZucyA9IDA7IHZiLT5udW1fcGZu cyA8IG51bTsgdmItPm51bV9wZm5zKyspIHsKIAkJcGFnZSA9IGxpc3RfZmlyc3RfZW50cnkoJnZi LT5wYWdlcywgc3RydWN0IHBhZ2UsIGxydSk7CiAJCWxpc3RfZGVsKCZwYWdlLT5scnUpOwpkaWZm IC0tZ2l0IGEvZHJpdmVycy94ZW4veGVuZnMveGVuYnVzLmMgYi9kcml2ZXJzL3hlbi94ZW5mcy94 ZW5idXMuYwppbmRleCBiYmQwMDBmODhhZjcuLjk4NTU5YjA1YWFjZCAxMDA2NDQKLS0tIGEvZHJp dmVycy94ZW4veGVuZnMveGVuYnVzLmMKKysrIGIvZHJpdmVycy94ZW4veGVuZnMveGVuYnVzLmMK QEAgLTMxMCwxMSArMzEwLDE4IEBAIHN0YXRpYyBpbnQgeGVuYnVzX3dyaXRlX3RyYW5zYWN0aW9u KHVuc2lnbmVkIG1zZ190eXBlLAogCQkJcmMgPSAtRU5PTUVNOwogCQkJZ290byBvdXQ7CiAJCX0K Kwl9IGVsc2UgaWYgKG1zZ190eXBlID09IFhTX1RSQU5TQUNUSU9OX0VORCkgeworCQlsaXN0X2Zv cl9lYWNoX2VudHJ5KHRyYW5zLCAmdS0+dHJhbnNhY3Rpb25zLCBsaXN0KQorCQkJaWYgKHRyYW5z LT5oYW5kbGUuaWQgPT0gdS0+dS5tc2cudHhfaWQpCisJCQkJYnJlYWs7CisJCWlmICgmdHJhbnMt Pmxpc3QgPT0gJnUtPnRyYW5zYWN0aW9ucykKKwkJCXJldHVybiAtRVNSQ0g7CiAJfQogCiAJcmVw bHkgPSB4ZW5idXNfZGV2X3JlcXVlc3RfYW5kX3JlcGx5KCZ1LT51Lm1zZyk7CiAJaWYgKElTX0VS UihyZXBseSkpIHsKLQkJa2ZyZWUodHJhbnMpOworCQlpZiAobXNnX3R5cGUgPT0gWFNfVFJBTlNB Q1RJT05fU1RBUlQpCisJCQlrZnJlZSh0cmFucyk7CiAJCXJjID0gUFRSX0VSUihyZXBseSk7CiAJ CWdvdG8gb3V0OwogCX0KQEAgLTMyNCwxMiArMzMxLDcgQEAgc3RhdGljIGludCB4ZW5idXNfd3Jp dGVfdHJhbnNhY3Rpb24odW5zaWduZWQgbXNnX3R5cGUsCiAKIAkJbGlzdF9hZGQoJnRyYW5zLT5s aXN0LCAmdS0+dHJhbnNhY3Rpb25zKTsKIAl9IGVsc2UgaWYgKG1zZ190eXBlID09IFhTX1RSQU5T QUNUSU9OX0VORCkgewotCQlsaXN0X2Zvcl9lYWNoX2VudHJ5KHRyYW5zLCAmdS0+dHJhbnNhY3Rp b25zLCBsaXN0KQotCQkJaWYgKHRyYW5zLT5oYW5kbGUuaWQgPT0gdS0+dS5tc2cudHhfaWQpCi0J CQkJYnJlYWs7Ci0JCUJVR19PTigmdHJhbnMtPmxpc3QgPT0gJnUtPnRyYW5zYWN0aW9ucyk7CiAJ CWxpc3RfZGVsKCZ0cmFucy0+bGlzdCk7Ci0KIAkJa2ZyZWUodHJhbnMpOwogCX0KIApkaWZmIC0t Z2l0IGEvZnMvOXAvYWNsLmMgYi9mcy85cC9hY2wuYwppbmRleCA5YTFkNDI2MzA3NTEuLmE0MTg4 Y2ZjYzlmOSAxMDA2NDQKLS0tIGEvZnMvOXAvYWNsLmMKKysrIGIvZnMvOXAvYWNsLmMKQEAgLTMx OSwzMiArMzE5LDI2IEBAIHN0YXRpYyBpbnQgdjlmc194YXR0cl9zZXRfYWNsKHN0cnVjdCBkZW50 cnkgKmRlbnRyeSwgY29uc3QgY2hhciAqbmFtZSwKIAljYXNlIEFDTF9UWVBFX0FDQ0VTUzoKIAkJ bmFtZSA9IFBPU0lYX0FDTF9YQVRUUl9BQ0NFU1M7CiAJCWlmIChhY2wpIHsKLQkJCXVtb2RlX3Qg bW9kZSA9IGlub2RlLT5pX21vZGU7Ci0JCQlyZXR2YWwgPSBwb3NpeF9hY2xfZXF1aXZfbW9kZShh Y2wsICZtb2RlKTsKLQkJCWlmIChyZXR2YWwgPCAwKQorCQkJc3RydWN0IGlhdHRyIGlhdHRyOwor CisJCQlyZXR2YWwgPSBwb3NpeF9hY2xfdXBkYXRlX21vZGUoaW5vZGUsICZpYXR0ci5pYV9tb2Rl LCAmYWNsKTsKKwkJCWlmIChyZXR2YWwpCiAJCQkJZ290byBlcnJfb3V0OwotCQkJZWxzZSB7Ci0J CQkJc3RydWN0IGlhdHRyIGlhdHRyOwotCQkJCWlmIChyZXR2YWwgPT0gMCkgewotCQkJCQkvKgot CQkJCQkgKiBBQ0wgY2FuIGJlIHJlcHJlc2VudGVkCi0JCQkJCSAqIGJ5IHRoZSBtb2RlIGJpdHMu IFNvIGRvbid0Ci0JCQkJCSAqIHVwZGF0ZSBBQ0wuCi0JCQkJCSAqLwotCQkJCQlhY2wgPSBOVUxM OwotCQkJCQl2YWx1ZSA9IE5VTEw7Ci0JCQkJCXNpemUgPSAwOwotCQkJCX0KLQkJCQkvKiBVcGR0 ZSB0aGUgbW9kZSBiaXRzICovCi0JCQkJaWF0dHIuaWFfbW9kZSA9ICgobW9kZSAmIFNfSUFMTFVH TykgfAotCQkJCQkJIChpbm9kZS0+aV9tb2RlICYgflNfSUFMTFVHTykpOwotCQkJCWlhdHRyLmlh X3ZhbGlkID0gQVRUUl9NT0RFOwotCQkJCS8qIEZJWE1FIHNob3VsZCB3ZSB1cGRhdGUgY3RpbWUg PwotCQkJCSAqIFdoYXQgaXMgdGhlIGZvbGxvd2luZyBzZXR4YXR0ciB1cGRhdGUgdGhlCi0JCQkJ ICogbW9kZSA/CisJCQlpZiAoIWFjbCkgeworCQkJCS8qCisJCQkJICogQUNMIGNhbiBiZSByZXBy ZXNlbnRlZAorCQkJCSAqIGJ5IHRoZSBtb2RlIGJpdHMuIFNvIGRvbid0CisJCQkJICogdXBkYXRl IEFDTC4KIAkJCQkgKi8KLQkJCQl2OWZzX3Zmc19zZXRhdHRyX2RvdGwoZGVudHJ5LCAmaWF0dHIp OworCQkJCXZhbHVlID0gTlVMTDsKKwkJCQlzaXplID0gMDsKIAkJCX0KKwkJCWlhdHRyLmlhX3Zh bGlkID0gQVRUUl9NT0RFOworCQkJLyogRklYTUUgc2hvdWxkIHdlIHVwZGF0ZSBjdGltZSA/CisJ CQkgKiBXaGF0IGlzIHRoZSBmb2xsb3dpbmcgc2V0eGF0dHIgdXBkYXRlIHRoZQorCQkJICogbW9k ZSA/CisJCQkgKi8KKwkJCXY5ZnNfdmZzX3NldGF0dHJfZG90bChkZW50cnksICZpYXR0cik7CiAJ CX0KIAkJYnJlYWs7CiAJY2FzZSBBQ0xfVFlQRV9ERUZBVUxUOgpkaWZmIC0tZ2l0IGEvZnMvOXAv dmZzX2lub2RlLmMgYi9mcy85cC92ZnNfaW5vZGUuYwppbmRleCBhZGVkZmQ0MDFhMzAuLjM0ZGVm YTE5NWE4MCAxMDA2NDQKLS0tIGEvZnMvOXAvdmZzX2lub2RlLmMKKysrIGIvZnMvOXAvdmZzX2lu b2RlLmMKQEAgLTEwNjgsNyArMTA2OCw3IEBAIHN0YXRpYyBpbnQgdjlmc192ZnNfc2V0YXR0cihz dHJ1Y3QgZGVudHJ5ICpkZW50cnksIHN0cnVjdCBpYXR0ciAqaWF0dHIpCiAJc3RydWN0IHA5X3dz dGF0IHdzdGF0OwogCiAJUDlfRFBSSU5USyhQOV9ERUJVR19WRlMsICJcbiIpOwotCXJldHZhbCA9 IGlub2RlX2NoYW5nZV9vayhkZW50cnktPmRfaW5vZGUsIGlhdHRyKTsKKwlyZXR2YWwgPSBzZXRh dHRyX3ByZXBhcmUoZGVudHJ5LCBpYXR0cik7CiAJaWYgKHJldHZhbCkKIAkJcmV0dXJuIHJldHZh bDsKIApkaWZmIC0tZ2l0IGEvZnMvOXAvdmZzX2lub2RlX2RvdGwuYyBiL2ZzLzlwL3Zmc19pbm9k ZV9kb3RsLmMKaW5kZXggZGJiYzgzZjZkYzNiLi43ODFlNTZlMzI4ZWIgMTAwNjQ0Ci0tLSBhL2Zz LzlwL3Zmc19pbm9kZV9kb3RsLmMKKysrIGIvZnMvOXAvdmZzX2lub2RlX2RvdGwuYwpAQCAtNTM4 LDcgKzUzOCw3IEBAIGludCB2OWZzX3Zmc19zZXRhdHRyX2RvdGwoc3RydWN0IGRlbnRyeSAqZGVu dHJ5LCBzdHJ1Y3QgaWF0dHIgKmlhdHRyKQogCiAJUDlfRFBSSU5USyhQOV9ERUJVR19WRlMsICJc biIpOwogCi0JcmV0dmFsID0gaW5vZGVfY2hhbmdlX29rKGRlbnRyeS0+ZF9pbm9kZSwgaWF0dHIp OworCXJldHZhbCA9IHNldGF0dHJfcHJlcGFyZShkZW50cnksIGlhdHRyKTsKIAlpZiAocmV0dmFs KQogCQlyZXR1cm4gcmV0dmFsOwogCmRpZmYgLS1naXQgYS9mcy9hZGZzL2lub2RlLmMgYi9mcy9h ZGZzL2lub2RlLmMKaW5kZXggMWRhYjZhMTc0ZDZhLi5jNWU0MmQ4YzA2YTEgMTAwNjQ0Ci0tLSBh L2ZzL2FkZnMvaW5vZGUuYworKysgYi9mcy9hZGZzL2lub2RlLmMKQEAgLTI5OCw3ICsyOTgsNyBA QCBhZGZzX25vdGlmeV9jaGFuZ2Uoc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBzdHJ1Y3QgaWF0dHIg KmF0dHIpCiAJdW5zaWduZWQgaW50IGlhX3ZhbGlkID0gYXR0ci0+aWFfdmFsaWQ7CiAJaW50IGVy cm9yOwogCQotCWVycm9yID0gaW5vZGVfY2hhbmdlX29rKGlub2RlLCBhdHRyKTsKKwllcnJvciA9 IHNldGF0dHJfcHJlcGFyZShkZW50cnksIGF0dHIpOwogCiAJLyoKIAkgKiB3ZSBjYW4ndCBjaGFu Z2UgdGhlIFVJRCBvciBHSUQgb2YgYW55IGZpbGUgLQpkaWZmIC0tZ2l0IGEvZnMvYWZmcy9pbm9k ZS5jIGIvZnMvYWZmcy9pbm9kZS5jCmluZGV4IDg4YTRiMGI1MDA1OC4uYWJkYTBkYzYzZWMzIDEw MDY0NAotLS0gYS9mcy9hZmZzL2lub2RlLmMKKysrIGIvZnMvYWZmcy9pbm9kZS5jCkBAIC0yMjIs NyArMjIyLDcgQEAgYWZmc19ub3RpZnlfY2hhbmdlKHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgc3Ry dWN0IGlhdHRyICphdHRyKQogCiAJcHJfZGVidWcoIkFGRlM6IG5vdGlmeV9jaGFuZ2UoJWx1LDB4 JXgpXG4iLGlub2RlLT5pX2lubyxhdHRyLT5pYV92YWxpZCk7CiAKLQllcnJvciA9IGlub2RlX2No YW5nZV9vayhpbm9kZSxhdHRyKTsKKwllcnJvciA9IHNldGF0dHJfcHJlcGFyZShkZW50cnksIGF0 dHIpOwogCWlmIChlcnJvcikKIAkJZ290byBvdXQ7CiAKZGlmZiAtLWdpdCBhL2ZzL2F0dHIuYyBi L2ZzL2F0dHIuYwppbmRleCBiOGY1NWM0MGZiMWQuLmE3ZjBjNzU3MzRjMiAxMDA2NDQKLS0tIGEv ZnMvYXR0ci5jCisrKyBiL2ZzL2F0dHIuYwpAQCAtMTYsMTkgKzE2LDIyIEBACiAjaW5jbHVkZSA8 bGludXgvZXZtLmg+CiAKIC8qKgotICogaW5vZGVfY2hhbmdlX29rIC0gY2hlY2sgaWYgYXR0cmli dXRlIGNoYW5nZXMgdG8gYW4gaW5vZGUgYXJlIGFsbG93ZWQKLSAqIEBpbm9kZToJaW5vZGUgdG8g Y2hlY2sKKyAqIHNldGF0dHJfcHJlcGFyZSAtIGNoZWNrIGlmIGF0dHJpYnV0ZSBjaGFuZ2VzIHRv IGEgZGVudHJ5IGFyZSBhbGxvd2VkCisgKiBAZGVudHJ5OglkZW50cnkgdG8gY2hlY2sKICAqIEBh dHRyOglhdHRyaWJ1dGVzIHRvIGNoYW5nZQogICoKICAqIENoZWNrIGlmIHdlIGFyZSBhbGxvd2Vk IHRvIGNoYW5nZSB0aGUgYXR0cmlidXRlcyBjb250YWluZWQgaW4gQGF0dHIKLSAqIGluIHRoZSBn aXZlbiBpbm9kZS4gIFRoaXMgaW5jbHVkZXMgdGhlIG5vcm1hbCB1bml4IGFjY2VzcyBwZXJtaXNz aW9uCi0gKiBjaGVja3MsIGFzIHdlbGwgYXMgY2hlY2tzIGZvciBybGltaXRzIGFuZCBvdGhlcnMu CisgKiBpbiB0aGUgZ2l2ZW4gZGVudHJ5LiAgVGhpcyBpbmNsdWRlcyB0aGUgbm9ybWFsIHVuaXgg YWNjZXNzIHBlcm1pc3Npb24KKyAqIGNoZWNrcywgYXMgd2VsbCBhcyBjaGVja3MgZm9yIHJsaW1p dHMgYW5kIG90aGVycy4gVGhlIGZ1bmN0aW9uIGFsc28gY2xlYXJzCisgKiBTR0lEIGJpdCBmcm9t IG1vZGUgaWYgdXNlciBpcyBub3QgYWxsb3dlZCB0byBzZXQgaXQuIEFsc28gZmlsZSBjYXBhYmls aXRpZXMKKyAqIGFuZCBJTUEgZXh0ZW5kZWQgYXR0cmlidXRlcyBhcmUgY2xlYXJlZCBpZiBBVFRS X0tJTExfUFJJViBpcyBzZXQuCiAgKgogICogU2hvdWxkIGJlIGNhbGxlZCBhcyB0aGUgZmlyc3Qg dGhpbmcgaW4gLT5zZXRhdHRyIGltcGxlbWVudGF0aW9ucywKICAqIHBvc3NpYmx5IGFmdGVyIHRh a2luZyBhZGRpdGlvbmFsIGxvY2tzLgogICovCi1pbnQgaW5vZGVfY2hhbmdlX29rKGNvbnN0IHN0 cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBpYXR0ciAqYXR0cikKK2ludCBzZXRhdHRyX3ByZXBh cmUoc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBzdHJ1Y3QgaWF0dHIgKmF0dHIpCiB7CisJc3RydWN0 IGlub2RlICppbm9kZSA9IGRlbnRyeS0+ZF9pbm9kZTsKIAl1bnNpZ25lZCBpbnQgaWFfdmFsaWQg PSBhdHRyLT5pYV92YWxpZDsKIAogCS8qCkBAIC00Myw3ICs0Niw3IEBAIGludCBpbm9kZV9jaGFu Z2Vfb2soY29uc3Qgc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGlhdHRyICphdHRyKQogCiAJ LyogSWYgZm9yY2UgaXMgc2V0IGRvIGl0IGFueXdheS4gKi8KIAlpZiAoaWFfdmFsaWQgJiBBVFRS X0ZPUkNFKQotCQlyZXR1cm4gMDsKKwkJZ290byBraWxsX3ByaXY7CiAKIAkvKiBNYWtlIHN1cmUg YSBjYWxsZXIgY2FuIGNob3duLiAqLwogCWlmICgoaWFfdmFsaWQgJiBBVFRSX1VJRCkgJiYKQEAg LTc0LDkgKzc3LDE5IEBAIGludCBpbm9kZV9jaGFuZ2Vfb2soY29uc3Qgc3RydWN0IGlub2RlICpp bm9kZSwgc3RydWN0IGlhdHRyICphdHRyKQogCQkJcmV0dXJuIC1FUEVSTTsKIAl9CiAKK2tpbGxf cHJpdjoKKwkvKiBVc2VyIGhhcyBwZXJtaXNzaW9uIGZvciB0aGUgY2hhbmdlICovCisJaWYgKGlh X3ZhbGlkICYgQVRUUl9LSUxMX1BSSVYpIHsKKwkJaW50IGVycm9yOworCisJCWVycm9yID0gc2Vj dXJpdHlfaW5vZGVfa2lsbHByaXYoZGVudHJ5KTsKKwkJaWYgKGVycm9yKQorCQkJcmV0dXJuIGVy cm9yOworCX0KKwogCXJldHVybiAwOwogfQotRVhQT1JUX1NZTUJPTChpbm9kZV9jaGFuZ2Vfb2sp OworRVhQT1JUX1NZTUJPTChzZXRhdHRyX3ByZXBhcmUpOwogCiAvKioKICAqIGlub2RlX25ld3Np emVfb2sgLSBtYXkgdGhpcyBpbm9kZSBiZSB0cnVuY2F0ZWQgdG8gYSBnaXZlbiBzaXplCkBAIC0x OTYsMTMgKzIwOSwxMSBAQCBpbnQgbm90aWZ5X2NoYW5nZShzdHJ1Y3QgZGVudHJ5ICogZGVudHJ5 LCBzdHJ1Y3QgaWF0dHIgKiBhdHRyKQogCWlmICghKGlhX3ZhbGlkICYgQVRUUl9NVElNRV9TRVQp KQogCQlhdHRyLT5pYV9tdGltZSA9IG5vdzsKIAlpZiAoaWFfdmFsaWQgJiBBVFRSX0tJTExfUFJJ VikgewotCQlhdHRyLT5pYV92YWxpZCAmPSB+QVRUUl9LSUxMX1BSSVY7Ci0JCWlhX3ZhbGlkICY9 IH5BVFRSX0tJTExfUFJJVjsKIAkJZXJyb3IgPSBzZWN1cml0eV9pbm9kZV9uZWVkX2tpbGxwcml2 KGRlbnRyeSk7Ci0JCWlmIChlcnJvciA+IDApCi0JCQllcnJvciA9IHNlY3VyaXR5X2lub2RlX2tp bGxwcml2KGRlbnRyeSk7Ci0JCWlmIChlcnJvcikKKwkJaWYgKGVycm9yIDwgMCkKIAkJCXJldHVy biBlcnJvcjsKKwkJaWYgKGVycm9yID09IDApCisJCQlpYV92YWxpZCA9IGF0dHItPmlhX3ZhbGlk ICY9IH5BVFRSX0tJTExfUFJJVjsKIAl9CiAKIAkvKgpkaWZmIC0tZ2l0IGEvZnMvYnRyZnMvYWNs LmMgYi9mcy9idHJmcy9hY2wuYwppbmRleCA4OWIxNTZkODVkNjMuLjlmNTViNTQ1ZWE0NCAxMDA2 NDQKLS0tIGEvZnMvYnRyZnMvYWNsLmMKKysrIGIvZnMvYnRyZnMvYWNsLmMKQEAgLTExOCw4ICsx MTgsOCBAQCBzdGF0aWMgaW50IGJ0cmZzX3NldF9hY2woc3RydWN0IGJ0cmZzX3RyYW5zX2hhbmRs ZSAqdHJhbnMsCiAJY2FzZSBBQ0xfVFlQRV9BQ0NFU1M6CiAJCW5hbWUgPSBQT1NJWF9BQ0xfWEFU VFJfQUNDRVNTOwogCQlpZiAoYWNsKSB7Ci0JCQlyZXQgPSBwb3NpeF9hY2xfZXF1aXZfbW9kZShh Y2wsICZpbm9kZS0+aV9tb2RlKTsKLQkJCWlmIChyZXQgPCAwKQorCQkJcmV0ID0gcG9zaXhfYWNs X3VwZGF0ZV9tb2RlKGlub2RlLCAmaW5vZGUtPmlfbW9kZSwgJmFjbCk7CisJCQlpZiAocmV0KQog CQkJCXJldHVybiByZXQ7CiAJCX0KIAkJcmV0ID0gMDsKZGlmZiAtLWdpdCBhL2ZzL2J0cmZzL2lu b2RlLmMgYi9mcy9idHJmcy9pbm9kZS5jCmluZGV4IDlhN2VmYmVjOGM2My4uZDg0OTc3ZDE2YjAy IDEwMDY0NAotLS0gYS9mcy9idHJmcy9pbm9kZS5jCisrKyBiL2ZzL2J0cmZzL2lub2RlLmMKQEAg LTM1MzMsNyArMzUzMyw3IEBAIHN0YXRpYyBpbnQgYnRyZnNfc2V0YXR0cihzdHJ1Y3QgZGVudHJ5 ICpkZW50cnksIHN0cnVjdCBpYXR0ciAqYXR0cikKIAlpZiAoYnRyZnNfcm9vdF9yZWFkb25seShy b290KSkKIAkJcmV0dXJuIC1FUk9GUzsKIAotCWVyciA9IGlub2RlX2NoYW5nZV9vayhpbm9kZSwg YXR0cik7CisJZXJyID0gc2V0YXR0cl9wcmVwYXJlKGRlbnRyeSwgYXR0cik7CiAJaWYgKGVycikK IAkJcmV0dXJuIGVycjsKIApkaWZmIC0tZ2l0IGEvZnMvYnRyZnMvaW9jdGwuYyBiL2ZzL2J0cmZz L2lvY3RsLmMKaW5kZXggZWI2YTBlNmY2ZWNkLi4zNjAwNzJmNDJhZmUgMTAwNjQ0Ci0tLSBhL2Zz L2J0cmZzL2lvY3RsLmMKKysrIGIvZnMvYnRyZnMvaW9jdGwuYwpAQCAtMTMwMiw2ICsxMzAyLDkg QEAgc3RhdGljIG5vaW5saW5lIGludCBidHJmc19pb2N0bF9zbmFwX2NyZWF0ZV90cmFuc2lkKHN0 cnVjdCBmaWxlICpmaWxlLAogCWludCBuYW1lbGVuOwogCWludCByZXQgPSAwOwogCisJaWYgKCFT X0lTRElSKGZpbGUtPmZfZGVudHJ5LT5kX2lub2RlLT5pX21vZGUpKQorCQlyZXR1cm4gLUVOT1RE SVI7CisKIAlpZiAocm9vdC0+ZnNfaW5mby0+c2ItPnNfZmxhZ3MgJiBNU19SRE9OTFkpCiAJCXJl dHVybiAtRVJPRlM7CiAKQEAgLTEzNTAsNiArMTM1Myw5IEBAIHN0YXRpYyBub2lubGluZSBpbnQg YnRyZnNfaW9jdGxfc25hcF9jcmVhdGUoc3RydWN0IGZpbGUgKmZpbGUsCiAJc3RydWN0IGJ0cmZz X2lvY3RsX3ZvbF9hcmdzICp2b2xfYXJnczsKIAlpbnQgcmV0OwogCisJaWYgKCFTX0lTRElSKGZp bGUtPmZfZGVudHJ5LT5kX2lub2RlLT5pX21vZGUpKQorCQlyZXR1cm4gLUVOT1RESVI7CisKIAl2 b2xfYXJncyA9IG1lbWR1cF91c2VyKGFyZywgc2l6ZW9mKCp2b2xfYXJncykpOwogCWlmIChJU19F UlIodm9sX2FyZ3MpKQogCQlyZXR1cm4gUFRSX0VSUih2b2xfYXJncyk7CkBAIC0xMzcyLDYgKzEz NzgsOSBAQCBzdGF0aWMgbm9pbmxpbmUgaW50IGJ0cmZzX2lvY3RsX3NuYXBfY3JlYXRlX3YyKHN0 cnVjdCBmaWxlICpmaWxlLAogCXU2NCAqcHRyID0gTlVMTDsKIAlib29sIHJlYWRvbmx5ID0gZmFs c2U7CiAKKwlpZiAoIVNfSVNESVIoZmlsZS0+Zl9kZW50cnktPmRfaW5vZGUtPmlfbW9kZSkpCisJ CXJldHVybiAtRU5PVERJUjsKKwogCXZvbF9hcmdzID0gbWVtZHVwX3VzZXIoYXJnLCBzaXplb2Yo KnZvbF9hcmdzKSk7CiAJaWYgKElTX0VSUih2b2xfYXJncykpCiAJCXJldHVybiBQVFJfRVJSKHZv bF9hcmdzKTsKQEAgLTE4NDgsNiArMTg1Nyw5IEBAIHN0YXRpYyBub2lubGluZSBpbnQgYnRyZnNf aW9jdGxfc25hcF9kZXN0cm95KHN0cnVjdCBmaWxlICpmaWxlLAogCWludCByZXQ7CiAJaW50IGVy ciA9IDA7CiAKKwlpZiAoIVNfSVNESVIoZGlyLT5pX21vZGUpKQorCQlyZXR1cm4gLUVOT1RESVI7 CisKIAl2b2xfYXJncyA9IG1lbWR1cF91c2VyKGFyZywgc2l6ZW9mKCp2b2xfYXJncykpOwogCWlm IChJU19FUlIodm9sX2FyZ3MpKQogCQlyZXR1cm4gUFRSX0VSUih2b2xfYXJncyk7CmRpZmYgLS1n aXQgYS9mcy9jZXBoL2ZpbGUuYyBiL2ZzL2NlcGgvZmlsZS5jCmluZGV4IGVkNzI0MjhkOWM3NS4u M2NkZjEzN2U5YzViIDEwMDY0NAotLS0gYS9mcy9jZXBoL2ZpbGUuYworKysgYi9mcy9jZXBoL2Zp bGUuYwpAQCAtNzkzLDE3ICs3OTMsMTUgQEAgb3V0Ogogc3RhdGljIGxvZmZfdCBjZXBoX2xsc2Vl ayhzdHJ1Y3QgZmlsZSAqZmlsZSwgbG9mZl90IG9mZnNldCwgaW50IG9yaWdpbikKIHsKIAlzdHJ1 Y3QgaW5vZGUgKmlub2RlID0gZmlsZS0+Zl9tYXBwaW5nLT5ob3N0OwotCWludCByZXQ7CisJbG9m Zl90IHJldDsKIAogCW11dGV4X2xvY2soJmlub2RlLT5pX211dGV4KTsKIAlfX2NlcGhfZG9fcGVu ZGluZ192bXRydW5jYXRlKGlub2RlKTsKIAogCWlmIChvcmlnaW4gPT0gU0VFS19FTkQgfHwgb3Jp Z2luID09IFNFRUtfREFUQSB8fCBvcmlnaW4gPT0gU0VFS19IT0xFKSB7CiAJCXJldCA9IGNlcGhf ZG9fZ2V0YXR0cihpbm9kZSwgQ0VQSF9TVEFUX0NBUF9TSVpFKTsKLQkJaWYgKHJldCA8IDApIHsK LQkJCW9mZnNldCA9IHJldDsKKwkJaWYgKHJldCA8IDApCiAJCQlnb3RvIG91dDsKLQkJfQogCX0K IAogCXN3aXRjaCAob3JpZ2luKSB7CkBAIC04MTgsNyArODE2LDcgQEAgc3RhdGljIGxvZmZfdCBj ZXBoX2xsc2VlayhzdHJ1Y3QgZmlsZSAqZmlsZSwgbG9mZl90IG9mZnNldCwgaW50IG9yaWdpbikK IAkJICogd3JpdGUoKSBvciBsc2VlaygpIG1pZ2h0IGhhdmUgYWx0ZXJlZCBpdAogCQkgKi8KIAkJ aWYgKG9mZnNldCA9PSAwKSB7Ci0JCQlvZmZzZXQgPSBmaWxlLT5mX3BvczsKKwkJCXJldCA9IGZp bGUtPmZfcG9zOwogCQkJZ290byBvdXQ7CiAJCX0KIAkJb2Zmc2V0ICs9IGZpbGUtPmZfcG9zOwpA QCAtODM5LDcgKzgzNyw3IEBAIHN0YXRpYyBsb2ZmX3QgY2VwaF9sbHNlZWsoc3RydWN0IGZpbGUg KmZpbGUsIGxvZmZfdCBvZmZzZXQsIGludCBvcmlnaW4pCiAJfQogCiAJaWYgKG9mZnNldCA8IDAg fHwgb2Zmc2V0ID4gaW5vZGUtPmlfc2ItPnNfbWF4Ynl0ZXMpIHsKLQkJb2Zmc2V0ID0gLUVJTlZB TDsKKwkJcmV0ID0gLUVJTlZBTDsKIAkJZ290byBvdXQ7CiAJfQogCkBAIC04NDgsMTAgKzg0Niwx MSBAQCBzdGF0aWMgbG9mZl90IGNlcGhfbGxzZWVrKHN0cnVjdCBmaWxlICpmaWxlLCBsb2ZmX3Qg b2Zmc2V0LCBpbnQgb3JpZ2luKQogCQlmaWxlLT5mX3BvcyA9IG9mZnNldDsKIAkJZmlsZS0+Zl92 ZXJzaW9uID0gMDsKIAl9CisJcmV0ID0gb2Zmc2V0OwogCiBvdXQ6CiAJbXV0ZXhfdW5sb2NrKCZp bm9kZS0+aV9tdXRleCk7Ci0JcmV0dXJuIG9mZnNldDsKKwlyZXR1cm4gcmV0OwogfQogCiBjb25z dCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGNlcGhfZmlsZV9mb3BzID0gewpkaWZmIC0tZ2l0IGEv ZnMvY2VwaC9pbm9kZS5jIGIvZnMvY2VwaC9pbm9kZS5jCmluZGV4IDhlODg5Yjc3M2QyNC4uNmE2 YzJlM2Y5OWFkIDEwMDY0NAotLS0gYS9mcy9jZXBoL2lub2RlLmMKKysrIGIvZnMvY2VwaC9pbm9k ZS5jCkBAIC0xNTQxLDcgKzE1NDEsNyBAQCBpbnQgY2VwaF9zZXRhdHRyKHN0cnVjdCBkZW50cnkg KmRlbnRyeSwgc3RydWN0IGlhdHRyICphdHRyKQogCiAJX19jZXBoX2RvX3BlbmRpbmdfdm10cnVu Y2F0ZShpbm9kZSk7CiAKLQllcnIgPSBpbm9kZV9jaGFuZ2Vfb2soaW5vZGUsIGF0dHIpOworCWVy ciA9IHNldGF0dHJfcHJlcGFyZShkZW50cnksIGF0dHIpOwogCWlmIChlcnIgIT0gMCkKIAkJcmV0 dXJuIGVycjsKIApkaWZmIC0tZ2l0IGEvZnMvY2lmcy9pbm9kZS5jIGIvZnMvY2lmcy9pbm9kZS5j CmluZGV4IDFkYzBhZjdmMzRjMC4uOTFmNjZjNTE4YTU0IDEwMDY0NAotLS0gYS9mcy9jaWZzL2lu b2RlLmMKKysrIGIvZnMvY2lmcy9pbm9kZS5jCkBAIC0xOTQ4LDcgKzE5NDgsNyBAQCBjaWZzX3Nl dGF0dHJfdW5peChzdHJ1Y3QgZGVudHJ5ICpkaXJlbnRyeSwgc3RydWN0IGlhdHRyICphdHRycykK IAlpZiAoY2lmc19zYi0+bW50X2NpZnNfZmxhZ3MgJiBDSUZTX01PVU5UX05PX1BFUk0pCiAJCWF0 dHJzLT5pYV92YWxpZCB8PSBBVFRSX0ZPUkNFOwogCi0JcmMgPSBpbm9kZV9jaGFuZ2Vfb2soaW5v ZGUsIGF0dHJzKTsKKwlyYyA9IHNldGF0dHJfcHJlcGFyZShkaXJlbnRyeSwgYXR0cnMpOwogCWlm IChyYyA8IDApCiAJCWdvdG8gb3V0OwogCkBAIC0yMDg5LDcgKzIwODksNyBAQCBjaWZzX3NldGF0 dHJfbm91bml4KHN0cnVjdCBkZW50cnkgKmRpcmVudHJ5LCBzdHJ1Y3QgaWF0dHIgKmF0dHJzKQog CWlmIChjaWZzX3NiLT5tbnRfY2lmc19mbGFncyAmIENJRlNfTU9VTlRfTk9fUEVSTSkKIAkJYXR0 cnMtPmlhX3ZhbGlkIHw9IEFUVFJfRk9SQ0U7CiAKLQlyYyA9IGlub2RlX2NoYW5nZV9vayhpbm9k ZSwgYXR0cnMpOworCXJjID0gc2V0YXR0cl9wcmVwYXJlKGRpcmVudHJ5LCBhdHRycyk7CiAJaWYg KHJjIDwgMCkgewogCQlGcmVlWGlkKHhpZCk7CiAJCXJldHVybiByYzsKZGlmZiAtLWdpdCBhL2Zz L2VjcnlwdGZzL2lub2RlLmMgYi9mcy9lY3J5cHRmcy9pbm9kZS5jCmluZGV4IDc4MjU2OWJlMGJi NC4uMDM5MzU3OThhNDVlIDEwMDY0NAotLS0gYS9mcy9lY3J5cHRmcy9pbm9kZS5jCisrKyBiL2Zz L2VjcnlwdGZzL2lub2RlLmMKQEAgLTEwMjYsNyArMTAyNiw3IEBAIHN0YXRpYyBpbnQgZWNyeXB0 ZnNfc2V0YXR0cihzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIHN0cnVjdCBpYXR0ciAqaWEpCiAJfQog CW11dGV4X3VubG9jaygmY3J5cHRfc3RhdC0+Y3NfbXV0ZXgpOwogCi0JcmMgPSBpbm9kZV9jaGFu Z2Vfb2soaW5vZGUsIGlhKTsKKwlyYyA9IHNldGF0dHJfcHJlcGFyZShkZW50cnksIGlhKTsKIAlp ZiAocmMpCiAJCWdvdG8gb3V0OwogCWlmIChpYS0+aWFfdmFsaWQgJiBBVFRSX1NJWkUpIHsKZGlm ZiAtLWdpdCBhL2ZzL2V4b2ZzL2lub2RlLmMgYi9mcy9leG9mcy9pbm9kZS5jCmluZGV4IGY2ZGJm Nzc2OGNlNi4uYjQzODg0MjYxYzQ4IDEwMDY0NAotLS0gYS9mcy9leG9mcy9pbm9kZS5jCisrKyBi L2ZzL2V4b2ZzL2lub2RlLmMKQEAgLTEwMTgsNyArMTAxOCw3IEBAIGludCBleG9mc19zZXRhdHRy KHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgc3RydWN0IGlhdHRyICppYXR0cikKIAlpZiAodW5saWtl bHkoZXJyb3IpKQogCQlyZXR1cm4gZXJyb3I7CiAKLQllcnJvciA9IGlub2RlX2NoYW5nZV9vayhp bm9kZSwgaWF0dHIpOworCWVycm9yID0gc2V0YXR0cl9wcmVwYXJlKGRlbnRyeSwgaWF0dHIpOwog CWlmICh1bmxpa2VseShlcnJvcikpCiAJCXJldHVybiBlcnJvcjsKIApkaWZmIC0tZ2l0IGEvZnMv ZXh0Mi9hY2wuYyBiL2ZzL2V4dDIvYWNsLmMKaW5kZXggMzVkNmEzY2ZkOWZmLi5lMzhhOWI2MWFm M2YgMTAwNjQ0Ci0tLSBhL2ZzL2V4dDIvYWNsLmMKKysrIGIvZnMvZXh0Mi9hY2wuYwpAQCAtMTk0 LDE1ICsxOTQsMTEgQEAgZXh0Ml9zZXRfYWNsKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGludCB0eXBl LCBzdHJ1Y3QgcG9zaXhfYWNsICphY2wpCiAJCWNhc2UgQUNMX1RZUEVfQUNDRVNTOgogCQkJbmFt ZV9pbmRleCA9IEVYVDJfWEFUVFJfSU5ERVhfUE9TSVhfQUNMX0FDQ0VTUzsKIAkJCWlmIChhY2wp IHsKLQkJCQllcnJvciA9IHBvc2l4X2FjbF9lcXVpdl9tb2RlKGFjbCwgJmlub2RlLT5pX21vZGUp OwotCQkJCWlmIChlcnJvciA8IDApCisJCQkJZXJyb3IgPSBwb3NpeF9hY2xfdXBkYXRlX21vZGUo aW5vZGUsICZpbm9kZS0+aV9tb2RlLCAmYWNsKTsKKwkJCQlpZiAoZXJyb3IpCiAJCQkJCXJldHVy biBlcnJvcjsKLQkJCQllbHNlIHsKLQkJCQkJaW5vZGUtPmlfY3RpbWUgPSBDVVJSRU5UX1RJTUVf U0VDOwotCQkJCQltYXJrX2lub2RlX2RpcnR5KGlub2RlKTsKLQkJCQkJaWYgKGVycm9yID09IDAp Ci0JCQkJCQlhY2wgPSBOVUxMOwotCQkJCX0KKwkJCQlpbm9kZS0+aV9jdGltZSA9IENVUlJFTlRf VElNRV9TRUM7CisJCQkJbWFya19pbm9kZV9kaXJ0eShpbm9kZSk7CiAJCQl9CiAJCQlicmVhazsK IApkaWZmIC0tZ2l0IGEvZnMvZXh0Mi9pbm9kZS5jIGIvZnMvZXh0Mi9pbm9kZS5jCmluZGV4IDVh NDViOGZlZjRlNi4uMGQwZjFhNjNiNjkxIDEwMDY0NAotLS0gYS9mcy9leHQyL2lub2RlLmMKKysr IGIvZnMvZXh0Mi9pbm9kZS5jCkBAIC0xNTMwLDcgKzE1MzAsNyBAQCBpbnQgZXh0Ml9zZXRhdHRy KHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgc3RydWN0IGlhdHRyICppYXR0cikKIAlzdHJ1Y3QgaW5v ZGUgKmlub2RlID0gZGVudHJ5LT5kX2lub2RlOwogCWludCBlcnJvcjsKIAotCWVycm9yID0gaW5v ZGVfY2hhbmdlX29rKGlub2RlLCBpYXR0cik7CisJZXJyb3IgPSBzZXRhdHRyX3ByZXBhcmUoZGVu dHJ5LCBpYXR0cik7CiAJaWYgKGVycm9yKQogCQlyZXR1cm4gZXJyb3I7CiAKZGlmZiAtLWdpdCBh L2ZzL2V4dDMvYWNsLmMgYi9mcy9leHQzL2FjbC5jCmluZGV4IDMwOTFmNjJlNTViNi4uODgwZDNk NjRiYjE0IDEwMDY0NAotLS0gYS9mcy9leHQzL2FjbC5jCisrKyBiL2ZzL2V4dDMvYWNsLmMKQEAg LTE5OSwxNSArMTk5LDExIEBAIGV4dDNfc2V0X2FjbChoYW5kbGVfdCAqaGFuZGxlLCBzdHJ1Y3Qg aW5vZGUgKmlub2RlLCBpbnQgdHlwZSwKIAkJY2FzZSBBQ0xfVFlQRV9BQ0NFU1M6CiAJCQluYW1l X2luZGV4ID0gRVhUM19YQVRUUl9JTkRFWF9QT1NJWF9BQ0xfQUNDRVNTOwogCQkJaWYgKGFjbCkg ewotCQkJCWVycm9yID0gcG9zaXhfYWNsX2VxdWl2X21vZGUoYWNsLCAmaW5vZGUtPmlfbW9kZSk7 Ci0JCQkJaWYgKGVycm9yIDwgMCkKKwkJCQllcnJvciA9IHBvc2l4X2FjbF91cGRhdGVfbW9kZShp bm9kZSwgJmlub2RlLT5pX21vZGUsICZhY2wpOworCQkJCWlmIChlcnJvcikKIAkJCQkJcmV0dXJu IGVycm9yOwotCQkJCWVsc2UgewotCQkJCQlpbm9kZS0+aV9jdGltZSA9IENVUlJFTlRfVElNRV9T RUM7Ci0JCQkJCWV4dDNfbWFya19pbm9kZV9kaXJ0eShoYW5kbGUsIGlub2RlKTsKLQkJCQkJaWYg KGVycm9yID09IDApCi0JCQkJCQlhY2wgPSBOVUxMOwotCQkJCX0KKwkJCQlpbm9kZS0+aV9jdGlt ZSA9IENVUlJFTlRfVElNRV9TRUM7CisJCQkJZXh0M19tYXJrX2lub2RlX2RpcnR5KGhhbmRsZSwg aW5vZGUpOwogCQkJfQogCQkJYnJlYWs7CiAKZGlmZiAtLWdpdCBhL2ZzL2V4dDMvaW5vZGUuYyBi L2ZzL2V4dDMvaW5vZGUuYwppbmRleCA3MWIyNjNmYmNhMzIuLmZmMzMxODhkMjI1ZSAxMDA2NDQK LS0tIGEvZnMvZXh0My9pbm9kZS5jCisrKyBiL2ZzL2V4dDMvaW5vZGUuYwpAQCAtMjIzLDggKzIy MywxMiBAQCB2b2lkIGV4dDNfZXZpY3RfaW5vZGUgKHN0cnVjdCBpbm9kZSAqaW5vZGUpCiAJICoK IAkgKiBOb3RlIHRoYXQgZGlyZWN0b3JpZXMgZG8gbm90IGhhdmUgdGhpcyBwcm9ibGVtIGJlY2F1 c2UgdGhleSBkb24ndAogCSAqIHVzZSBwYWdlIGNhY2hlLgorCSAqCisJICogVGhlIHNfam91cm5h bCBjaGVjayBoYW5kbGVzIHRoZSBjYXNlIHdoZW4gZXh0M19nZXRfam91cm5hbCgpIGZhaWxzCisJ ICogYW5kIHB1dHMgdGhlIGpvdXJuYWwgaW5vZGUuCiAJICovCiAJaWYgKGlub2RlLT5pX25saW5r ICYmIGV4dDNfc2hvdWxkX2pvdXJuYWxfZGF0YShpbm9kZSkgJiYKKwkgICAgRVhUM19TQihpbm9k ZS0+aV9zYiktPnNfam91cm5hbCAmJgogCSAgICAoU19JU0xOSyhpbm9kZS0+aV9tb2RlKSB8fCBT X0lTUkVHKGlub2RlLT5pX21vZGUpKSkgewogCQl0aWRfdCBjb21taXRfdGlkID0gYXRvbWljX3Jl YWQoJmVpLT5pX2RhdGFzeW5jX3RpZCk7CiAJCWpvdXJuYWxfdCAqam91cm5hbCA9IEVYVDNfU0Io aW5vZGUtPmlfc2IpLT5zX2pvdXJuYWw7CkBAIC0zMjcxLDcgKzMyNzUsNyBAQCBpbnQgZXh0M19z ZXRhdHRyKHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgc3RydWN0IGlhdHRyICphdHRyKQogCWludCBl cnJvciwgcmMgPSAwOwogCWNvbnN0IHVuc2lnbmVkIGludCBpYV92YWxpZCA9IGF0dHItPmlhX3Zh bGlkOwogCi0JZXJyb3IgPSBpbm9kZV9jaGFuZ2Vfb2soaW5vZGUsIGF0dHIpOworCWVycm9yID0g c2V0YXR0cl9wcmVwYXJlKGRlbnRyeSwgYXR0cik7CiAJaWYgKGVycm9yKQogCQlyZXR1cm4gZXJy b3I7CiAKZGlmZiAtLWdpdCBhL2ZzL2V4dDQvYWNsLmMgYi9mcy9leHQ0L2FjbC5jCmluZGV4IDg1 MzVjNDVkZmNlYi4uNWQ0MTlhNDk2ZDk2IDEwMDY0NAotLS0gYS9mcy9leHQ0L2FjbC5jCisrKyBi L2ZzL2V4dDQvYWNsLmMKQEAgLTE5OCwxNSArMTk4LDExIEBAIGV4dDRfc2V0X2FjbChoYW5kbGVf dCAqaGFuZGxlLCBzdHJ1Y3QgaW5vZGUgKmlub2RlLCBpbnQgdHlwZSwKIAljYXNlIEFDTF9UWVBF X0FDQ0VTUzoKIAkJbmFtZV9pbmRleCA9IEVYVDRfWEFUVFJfSU5ERVhfUE9TSVhfQUNMX0FDQ0VT UzsKIAkJaWYgKGFjbCkgewotCQkJZXJyb3IgPSBwb3NpeF9hY2xfZXF1aXZfbW9kZShhY2wsICZp bm9kZS0+aV9tb2RlKTsKLQkJCWlmIChlcnJvciA8IDApCisJCQllcnJvciA9IHBvc2l4X2FjbF91 cGRhdGVfbW9kZShpbm9kZSwgJmlub2RlLT5pX21vZGUsICZhY2wpOworCQkJaWYgKGVycm9yKQog CQkJCXJldHVybiBlcnJvcjsKLQkJCWVsc2UgewotCQkJCWlub2RlLT5pX2N0aW1lID0gZXh0NF9j dXJyZW50X3RpbWUoaW5vZGUpOwotCQkJCWV4dDRfbWFya19pbm9kZV9kaXJ0eShoYW5kbGUsIGlu b2RlKTsKLQkJCQlpZiAoZXJyb3IgPT0gMCkKLQkJCQkJYWNsID0gTlVMTDsKLQkJCX0KKwkJCWlu b2RlLT5pX2N0aW1lID0gZXh0NF9jdXJyZW50X3RpbWUoaW5vZGUpOworCQkJZXh0NF9tYXJrX2lu b2RlX2RpcnR5KGhhbmRsZSwgaW5vZGUpOwogCQl9CiAJCWJyZWFrOwogCmRpZmYgLS1naXQgYS9m cy9leHQ0L2V4dGVudHMuYyBiL2ZzL2V4dDQvZXh0ZW50cy5jCmluZGV4IGUzZDY1YWJiNDFiMy4u YmI0MGE3MGVkNDEyIDEwMDY0NAotLS0gYS9mcy9leHQ0L2V4dGVudHMuYworKysgYi9mcy9leHQ0 L2V4dGVudHMuYwpAQCAtMzE5LDkgKzMxOSwxMyBAQCBzdGF0aWMgaW50IGV4dDRfdmFsaWRfZXh0 ZW50KHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBleHQ0X2V4dGVudCAqZXh0KQogCWV4dDRf ZnNibGtfdCBibG9jayA9IGV4dDRfZXh0X3BibG9jayhleHQpOwogCWludCBsZW4gPSBleHQ0X2V4 dF9nZXRfYWN0dWFsX2xlbihleHQpOwogCWV4dDRfbGJsa190IGxibG9jayA9IGxlMzJfdG9fY3B1 KGV4dC0+ZWVfYmxvY2spOwotCWV4dDRfbGJsa190IGxhc3QgPSBsYmxvY2sgKyBsZW4gLSAxOwog Ci0JaWYgKGxlbiA9PSAwIHx8IGxibG9jayA+IGxhc3QpCisJLyoKKwkgKiBXZSBhbGxvdyBuZWl0 aGVyOgorCSAqICAtIHplcm8gbGVuZ3RoCisJICogIC0gb3ZlcmZsb3cvd3JhcC1hcm91bmQKKwkg Ki8KKwlpZiAobGJsb2NrICsgbGVuIDw9IGxibG9jaykKIAkJcmV0dXJuIDA7CiAJcmV0dXJuIGV4 dDRfZGF0YV9ibG9ja192YWxpZChFWFQ0X1NCKGlub2RlLT5pX3NiKSwgYmxvY2ssIGxlbik7CiB9 CmRpZmYgLS1naXQgYS9mcy9leHQ0L2lub2RlLmMgYi9mcy9leHQ0L2lub2RlLmMKaW5kZXggMDEw ZjA1MGE4N2IzLi5mZjJlMzY5ZGUwNDAgMTAwNjQ0Ci0tLSBhL2ZzL2V4dDQvaW5vZGUuYworKysg Yi9mcy9leHQ0L2lub2RlLmMKQEAgLTE0Miw5ICsxNDIsOSBAQCB2b2lkIGV4dDRfZXZpY3RfaW5v ZGUoc3RydWN0IGlub2RlICppbm9kZSkKIAkJICogTm90ZSB0aGF0IGRpcmVjdG9yaWVzIGRvIG5v dCBoYXZlIHRoaXMgcHJvYmxlbSBiZWNhdXNlIHRoZXkKIAkJICogZG9uJ3QgdXNlIHBhZ2UgY2Fj aGUuCiAJCSAqLwotCQlpZiAoZXh0NF9zaG91bGRfam91cm5hbF9kYXRhKGlub2RlKSAmJgotCQkg ICAgKFNfSVNMTksoaW5vZGUtPmlfbW9kZSkgfHwgU19JU1JFRyhpbm9kZS0+aV9tb2RlKSkgJiYK LQkJICAgIGlub2RlLT5pX2lubyAhPSBFWFQ0X0pPVVJOQUxfSU5PKSB7CisJCWlmIChpbm9kZS0+ aV9pbm8gIT0gRVhUNF9KT1VSTkFMX0lOTyAmJgorCQkgICAgZXh0NF9zaG91bGRfam91cm5hbF9k YXRhKGlub2RlKSAmJgorCQkgICAgKFNfSVNMTksoaW5vZGUtPmlfbW9kZSkgfHwgU19JU1JFRyhp bm9kZS0+aV9tb2RlKSkpIHsKIAkJCWpvdXJuYWxfdCAqam91cm5hbCA9IEVYVDRfU0IoaW5vZGUt Pmlfc2IpLT5zX2pvdXJuYWw7CiAJCQl0aWRfdCBjb21taXRfdGlkID0gRVhUNF9JKGlub2RlKS0+ aV9kYXRhc3luY190aWQ7CiAKQEAgLTQyOTEsNyArNDI5MSw3IEBAIGludCBleHQ0X3NldGF0dHIo c3RydWN0IGRlbnRyeSAqZGVudHJ5LCBzdHJ1Y3QgaWF0dHIgKmF0dHIpCiAJaW50IG9ycGhhbiA9 IDA7CiAJY29uc3QgdW5zaWduZWQgaW50IGlhX3ZhbGlkID0gYXR0ci0+aWFfdmFsaWQ7CiAKLQll cnJvciA9IGlub2RlX2NoYW5nZV9vayhpbm9kZSwgYXR0cik7CisJZXJyb3IgPSBzZXRhdHRyX3By ZXBhcmUoZGVudHJ5LCBhdHRyKTsKIAlpZiAoZXJyb3IpCiAJCXJldHVybiBlcnJvcjsKIApkaWZm IC0tZ2l0IGEvZnMvZXh0NC9tYmFsbG9jLmMgYi9mcy9leHQ0L21iYWxsb2MuYwppbmRleCA3YzAz ODI2YmRlMjYuLjI0MmZlMTFhZWEyMCAxMDA2NDQKLS0tIGEvZnMvZXh0NC9tYmFsbG9jLmMKKysr IGIvZnMvZXh0NC9tYmFsbG9jLmMKQEAgLTI4MjQsNyArMjgyNCw3IEBAIGV4dDRfbWJfbWFya19k aXNrc3BhY2VfdXNlZChzdHJ1Y3QgZXh0NF9hbGxvY2F0aW9uX2NvbnRleHQgKmFjLAogCQlleHQ0 X2Vycm9yKHNiLCAiQWxsb2NhdGluZyBibG9ja3MgJWxsdS0lbGx1IHdoaWNoIG92ZXJsYXAgIgog CQkJICAgImZzIG1ldGFkYXRhXG4iLCBibG9jaywgYmxvY2srbGVuKTsKIAkJLyogRmlsZSBzeXN0 ZW0gbW91bnRlZCBub3QgdG8gcGFuaWMgb24gZXJyb3IKLQkJICogRml4IHRoZSBiaXRtYXAgYW5k IHJlcGVhdCB0aGUgYmxvY2sgYWxsb2NhdGlvbgorCQkgKiBGaXggdGhlIGJpdG1hcCBhbmQgcmV0 dXJuIEVJTwogCQkgKiBXZSBsZWFrIHNvbWUgb2YgdGhlIGJsb2NrcyBoZXJlLgogCQkgKi8KIAkJ ZXh0NF9sb2NrX2dyb3VwKHNiLCBhYy0+YWNfYl9leC5mZV9ncm91cCk7CkBAIC0yODMzLDcgKzI4 MzMsNyBAQCBleHQ0X21iX21hcmtfZGlza3NwYWNlX3VzZWQoc3RydWN0IGV4dDRfYWxsb2NhdGlv bl9jb250ZXh0ICphYywKIAkJZXh0NF91bmxvY2tfZ3JvdXAoc2IsIGFjLT5hY19iX2V4LmZlX2dy b3VwKTsKIAkJZXJyID0gZXh0NF9oYW5kbGVfZGlydHlfbWV0YWRhdGEoaGFuZGxlLCBOVUxMLCBi aXRtYXBfYmgpOwogCQlpZiAoIWVycikKLQkJCWVyciA9IC1FQUdBSU47CisJCQllcnIgPSAtRUlP OwogCQlnb3RvIG91dF9lcnI7CiAJfQogCkBAIC00NDAxLDE4ICs0NDAxLDcgQEAgcmVwZWF0Ogog CX0KIAlpZiAobGlrZWx5KGFjLT5hY19zdGF0dXMgPT0gQUNfU1RBVFVTX0ZPVU5EKSkgewogCQkq ZXJycCA9IGV4dDRfbWJfbWFya19kaXNrc3BhY2VfdXNlZChhYywgaGFuZGxlLCByZXNlcnZfY2xz dHJzKTsKLQkJaWYgKCplcnJwID09IC1FQUdBSU4pIHsKLQkJCS8qCi0JCQkgKiBkcm9wIHRoZSBy ZWZlcmVuY2UgdGhhdCB3ZSB0b29rCi0JCQkgKiBpbiBleHQ0X21iX3VzZV9iZXN0X2ZvdW5kCi0J CQkgKi8KLQkJCWV4dDRfbWJfcmVsZWFzZV9jb250ZXh0KGFjKTsKLQkJCWFjLT5hY19iX2V4LmZl X2dyb3VwID0gMDsKLQkJCWFjLT5hY19iX2V4LmZlX3N0YXJ0ID0gMDsKLQkJCWFjLT5hY19iX2V4 LmZlX2xlbiA9IDA7Ci0JCQlhYy0+YWNfc3RhdHVzID0gQUNfU1RBVFVTX0NPTlRJTlVFOwotCQkJ Z290byByZXBlYXQ7Ci0JCX0gZWxzZSBpZiAoKmVycnApCisJCWlmICgqZXJycCkKIAkJZXJyb3V0 OgogCQkJZXh0NF9kaXNjYXJkX2FsbG9jYXRlZF9ibG9ja3MoYWMpOwogCQllbHNlIHsKZGlmZiAt LWdpdCBhL2ZzL2V4dDQvc3VwZXIuYyBiL2ZzL2V4dDQvc3VwZXIuYwppbmRleCA1MmI4YWM3NDAy MDEuLjcyNjZhMmU1YmVmYyAxMDA2NDQKLS0tIGEvZnMvZXh0NC9zdXBlci5jCisrKyBiL2ZzL2V4 dDQvc3VwZXIuYwpAQCAtMjA5Nyw2ICsyMDk3LDcgQEAgaW50IGV4dDRfZ3JvdXBfZGVzY19jc3Vt X3ZlcmlmeShzdHJ1Y3QgZXh0NF9zYl9pbmZvICpzYmksIF9fdTMyIGJsb2NrX2dyb3VwLAogCiAv KiBDYWxsZWQgYXQgbW91bnQtdGltZSwgc3VwZXItYmxvY2sgaXMgbG9ja2VkICovCiBzdGF0aWMg aW50IGV4dDRfY2hlY2tfZGVzY3JpcHRvcnMoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwKKwkJCQkg IGV4dDRfZnNibGtfdCBzYl9ibG9jaywKIAkJCQkgIGV4dDRfZ3JvdXBfdCAqZmlyc3Rfbm90X3pl cm9lZCkKIHsKIAlzdHJ1Y3QgZXh0NF9zYl9pbmZvICpzYmkgPSBFWFQ0X1NCKHNiKTsKQEAgLTIx MjcsNiArMjEyOCwxMSBAQCBzdGF0aWMgaW50IGV4dDRfY2hlY2tfZGVzY3JpcHRvcnMoc3RydWN0 IHN1cGVyX2Jsb2NrICpzYiwKIAkJCWdycCA9IGk7CiAKIAkJYmxvY2tfYml0bWFwID0gZXh0NF9i bG9ja19iaXRtYXAoc2IsIGdkcCk7CisJCWlmIChibG9ja19iaXRtYXAgPT0gc2JfYmxvY2spIHsK KwkJCWV4dDRfbXNnKHNiLCBLRVJOX0VSUiwgImV4dDRfY2hlY2tfZGVzY3JpcHRvcnM6ICIKKwkJ CQkgIkJsb2NrIGJpdG1hcCBmb3IgZ3JvdXAgJXUgb3ZlcmxhcHMgIgorCQkJCSAic3VwZXJibG9j ayIsIGkpOworCQl9CiAJCWlmIChibG9ja19iaXRtYXAgPCBmaXJzdF9ibG9jayB8fCBibG9ja19i aXRtYXAgPiBsYXN0X2Jsb2NrKSB7CiAJCQlleHQ0X21zZyhzYiwgS0VSTl9FUlIsICJleHQ0X2No ZWNrX2Rlc2NyaXB0b3JzOiAiCiAJCQkgICAgICAgIkJsb2NrIGJpdG1hcCBmb3IgZ3JvdXAgJXUg bm90IGluIGdyb3VwICIKQEAgLTIxMzQsNiArMjE0MCwxMSBAQCBzdGF0aWMgaW50IGV4dDRfY2hl Y2tfZGVzY3JpcHRvcnMoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwKIAkJCXJldHVybiAwOwogCQl9 CiAJCWlub2RlX2JpdG1hcCA9IGV4dDRfaW5vZGVfYml0bWFwKHNiLCBnZHApOworCQlpZiAoaW5v ZGVfYml0bWFwID09IHNiX2Jsb2NrKSB7CisJCQlleHQ0X21zZyhzYiwgS0VSTl9FUlIsICJleHQ0 X2NoZWNrX2Rlc2NyaXB0b3JzOiAiCisJCQkJICJJbm9kZSBiaXRtYXAgZm9yIGdyb3VwICV1IG92 ZXJsYXBzICIKKwkJCQkgInN1cGVyYmxvY2siLCBpKTsKKwkJfQogCQlpZiAoaW5vZGVfYml0bWFw IDwgZmlyc3RfYmxvY2sgfHwgaW5vZGVfYml0bWFwID4gbGFzdF9ibG9jaykgewogCQkJZXh0NF9t c2coc2IsIEtFUk5fRVJSLCAiZXh0NF9jaGVja19kZXNjcmlwdG9yczogIgogCQkJICAgICAgICJJ bm9kZSBiaXRtYXAgZm9yIGdyb3VwICV1IG5vdCBpbiBncm91cCAiCkBAIC0yMTQxLDYgKzIxNTIs MTEgQEAgc3RhdGljIGludCBleHQ0X2NoZWNrX2Rlc2NyaXB0b3JzKHN0cnVjdCBzdXBlcl9ibG9j ayAqc2IsCiAJCQlyZXR1cm4gMDsKIAkJfQogCQlpbm9kZV90YWJsZSA9IGV4dDRfaW5vZGVfdGFi bGUoc2IsIGdkcCk7CisJCWlmIChpbm9kZV90YWJsZSA9PSBzYl9ibG9jaykgeworCQkJZXh0NF9t c2coc2IsIEtFUk5fRVJSLCAiZXh0NF9jaGVja19kZXNjcmlwdG9yczogIgorCQkJCSAiSW5vZGUg dGFibGUgZm9yIGdyb3VwICV1IG92ZXJsYXBzICIKKwkJCQkgInN1cGVyYmxvY2siLCBpKTsKKwkJ fQogCQlpZiAoaW5vZGVfdGFibGUgPCBmaXJzdF9ibG9jayB8fAogCQkgICAgaW5vZGVfdGFibGUg KyBzYmktPnNfaXRiX3Blcl9ncm91cCAtIDEgPiBsYXN0X2Jsb2NrKSB7CiAJCQlleHQ0X21zZyhz YiwgS0VSTl9FUlIsICJleHQ0X2NoZWNrX2Rlc2NyaXB0b3JzOiAiCkBAIC0yMjQ2LDYgKzIyNjIs MTYgQEAgc3RhdGljIHZvaWQgZXh0NF9vcnBoYW5fY2xlYW51cChzdHJ1Y3Qgc3VwZXJfYmxvY2sg KnNiLAogCXdoaWxlIChlcy0+c19sYXN0X29ycGhhbikgewogCQlzdHJ1Y3QgaW5vZGUgKmlub2Rl OwogCisJCS8qCisJCSAqIFdlIG1heSBoYXZlIGVuY291bnRlcmVkIGFuIGVycm9yIGR1cmluZyBj bGVhbnVwOyBpZgorCQkgKiBzbywgc2tpcCB0aGUgcmVzdC4KKwkJICovCisJCWlmIChFWFQ0X1NC KHNiKS0+c19tb3VudF9zdGF0ZSAmIEVYVDRfRVJST1JfRlMpIHsKKwkJCWpiZF9kZWJ1ZygxLCAi U2tpcHBpbmcgb3JwaGFuIHJlY292ZXJ5IG9uIGZzIHdpdGggZXJyb3JzLlxuIik7CisJCQllcy0+ c19sYXN0X29ycGhhbiA9IDA7CisJCQlicmVhazsKKwkJfQorCiAJCWlub2RlID0gZXh0NF9vcnBo YW5fZ2V0KHNiLCBsZTMyX3RvX2NwdShlcy0+c19sYXN0X29ycGhhbikpOwogCQlpZiAoSVNfRVJS KGlub2RlKSkgewogCQkJZXMtPnNfbGFzdF9vcnBoYW4gPSAwOwpAQCAtMzQyOSw2ICszNDU1LDEz IEBAIHN0YXRpYyBpbnQgZXh0NF9maWxsX3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHZv aWQgKmRhdGEsIGludCBzaWxlbnQpCiAJCWdvdG8gZmFpbGVkX21vdW50OwogCX0KIAorCWlmIChs ZTE2X3RvX2NwdShzYmktPnNfZXMtPnNfcmVzZXJ2ZWRfZ2R0X2Jsb2NrcykgPiAoYmxvY2tzaXpl IC8gNCkpIHsKKwkJZXh0NF9tc2coc2IsIEtFUk5fRVJSLAorCQkJICJOdW1iZXIgb2YgcmVzZXJ2 ZWQgR0RUIGJsb2NrcyBpbnNhbmVseSBsYXJnZTogJWQiLAorCQkJIGxlMTZfdG9fY3B1KHNiaS0+ c19lcy0+c19yZXNlcnZlZF9nZHRfYmxvY2tzKSk7CisJCWdvdG8gZmFpbGVkX21vdW50OworCX0K KwogCWlmIChzYi0+c19ibG9ja3NpemUgIT0gYmxvY2tzaXplKSB7CiAJCS8qIFZhbGlkYXRlIHRo ZSBmaWxlc3lzdGVtIGJsb2Nrc2l6ZSAqLwogCQlpZiAoIXNiX3NldF9ibG9ja3NpemUoc2IsIGJs b2Nrc2l6ZSkpIHsKQEAgLTM2NTcsNyArMzY5MCw3IEBAIHN0YXRpYyBpbnQgZXh0NF9maWxsX3N1 cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHZvaWQgKmRhdGEsIGludCBzaWxlbnQpCiAJCQln b3RvIGZhaWxlZF9tb3VudDI7CiAJCX0KIAl9Ci0JaWYgKCFleHQ0X2NoZWNrX2Rlc2NyaXB0b3Jz KHNiLCAmZmlyc3Rfbm90X3plcm9lZCkpIHsKKwlpZiAoIWV4dDRfY2hlY2tfZGVzY3JpcHRvcnMo c2IsIGxvZ2ljYWxfc2JfYmxvY2ssICZmaXJzdF9ub3RfemVyb2VkKSkgewogCQlleHQ0X21zZyhz YiwgS0VSTl9FUlIsICJncm91cCBkZXNjcmlwdG9ycyBjb3JydXB0ZWQhIik7CiAJCWdvdG8gZmFp bGVkX21vdW50MjsKIAl9CmRpZmYgLS1naXQgYS9mcy9mYXQvZmlsZS5jIGIvZnMvZmF0L2ZpbGUu YwppbmRleCBjMTE4YWNmMTZlNDMuLmVmNDc1M2VlMjIwZCAxMDA2NDQKLS0tIGEvZnMvZmF0L2Zp bGUuYworKysgYi9mcy9mYXQvZmlsZS5jCkBAIC0zODIsNyArMzgyLDcgQEAgaW50IGZhdF9zZXRh dHRyKHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgc3RydWN0IGlhdHRyICphdHRyKQogCQkJYXR0ci0+ aWFfdmFsaWQgJj0gflRJTUVTX1NFVF9GTEFHUzsKIAl9CiAKLQllcnJvciA9IGlub2RlX2NoYW5n ZV9vayhpbm9kZSwgYXR0cik7CisJZXJyb3IgPSBzZXRhdHRyX3ByZXBhcmUoZGVudHJ5LCBhdHRy KTsKIAlhdHRyLT5pYV92YWxpZCA9IGlhX3ZhbGlkOwogCWlmIChlcnJvcikgewogCQlpZiAoc2Jp LT5vcHRpb25zLnF1aWV0KQpkaWZmIC0tZ2l0IGEvZnMvZnVzZS9kaXIuYyBiL2ZzL2Z1c2UvZGly LmMKaW5kZXggZTEzNTU4Y2E0YjA5Li4xNWMxZDI5NDhmNGEgMTAwNjQ0Ci0tLSBhL2ZzL2Z1c2Uv ZGlyLmMKKysrIGIvZnMvZnVzZS9kaXIuYwpAQCAtMTI5OCw3ICsxMjk4LDcgQEAgc3RhdGljIGlu dCBmdXNlX2RvX3NldGF0dHIoc3RydWN0IGRlbnRyeSAqZW50cnksIHN0cnVjdCBpYXR0ciAqYXR0 ciwKIAlpZiAoIShmYy0+ZmxhZ3MgJiBGVVNFX0RFRkFVTFRfUEVSTUlTU0lPTlMpKQogCQlhdHRy LT5pYV92YWxpZCB8PSBBVFRSX0ZPUkNFOwogCi0JZXJyID0gaW5vZGVfY2hhbmdlX29rKGlub2Rl LCBhdHRyKTsKKwllcnIgPSBzZXRhdHRyX3ByZXBhcmUoZW50cnksIGF0dHIpOwogCWlmIChlcnIp CiAJCXJldHVybiBlcnI7CiAKZGlmZiAtLWdpdCBhL2ZzL2dlbmVyaWNfYWNsLmMgYi9mcy9nZW5l cmljX2FjbC5jCmluZGV4IGQwZGRkYWNlYWM1OS4uYTNmM2U3MGY5NzUwIDEwMDY0NAotLS0gYS9m cy9nZW5lcmljX2FjbC5jCisrKyBiL2ZzL2dlbmVyaWNfYWNsLmMKQEAgLTg2LDE2ICs4NiwxNyBA QCBnZW5lcmljX2FjbF9zZXQoc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBjb25zdCBjaGFyICpuYW1l LCBjb25zdCB2b2lkICp2YWx1ZSwKIAkJaWYgKGVycm9yKQogCQkJZ290byBmYWlsZWQ7CiAJCXN3 aXRjaCAodHlwZSkgewotCQljYXNlIEFDTF9UWVBFX0FDQ0VTUzoKLQkJCWVycm9yID0gcG9zaXhf YWNsX2VxdWl2X21vZGUoYWNsLCAmaW5vZGUtPmlfbW9kZSk7Ci0JCQlpZiAoZXJyb3IgPCAwKQor CQljYXNlIEFDTF9UWVBFX0FDQ0VTUzogeworCQkJc3RydWN0IHBvc2l4X2FjbCAqc2F2ZWRfYWNs ID0gYWNsOworCisJCQllcnJvciA9IHBvc2l4X2FjbF91cGRhdGVfbW9kZShpbm9kZSwgJmlub2Rl LT5pX21vZGUsICZhY2wpOworCQkJaWYgKGFjbCA9PSBOVUxMKQorCQkJCXBvc2l4X2FjbF9yZWxl YXNlKHNhdmVkX2FjbCk7CisJCQlpZiAoZXJyb3IpCiAJCQkJZ290byBmYWlsZWQ7CiAJCQlpbm9k ZS0+aV9jdGltZSA9IENVUlJFTlRfVElNRTsKLQkJCWlmIChlcnJvciA9PSAwKSB7Ci0JCQkJcG9z aXhfYWNsX3JlbGVhc2UoYWNsKTsKLQkJCQlhY2wgPSBOVUxMOwotCQkJfQogCQkJYnJlYWs7CisJ CX0KIAkJY2FzZSBBQ0xfVFlQRV9ERUZBVUxUOgogCQkJaWYgKCFTX0lTRElSKGlub2RlLT5pX21v ZGUpKSB7CiAJCQkJZXJyb3IgPSAtRUlOVkFMOwpkaWZmIC0tZ2l0IGEvZnMvZ2ZzMi9hY2wuYyBi L2ZzL2dmczIvYWNsLmMKaW5kZXggNjU5NzhkNzg4NWM4Li43NWY2MDg1ZGEzNTAgMTAwNjQ0Ci0t LSBhL2ZzL2dmczIvYWNsLmMKKysrIGIvZnMvZ2ZzMi9hY2wuYwpAQCAtMjc3LDE2ICsyNzcsMTQg QEAgc3RhdGljIGludCBnZnMyX3hhdHRyX3N5c3RlbV9zZXQoc3RydWN0IGRlbnRyeSAqZGVudHJ5 LCBjb25zdCBjaGFyICpuYW1lLAogCQlnb3RvIG91dF9yZWxlYXNlOwogCiAJaWYgKHR5cGUgPT0g QUNMX1RZUEVfQUNDRVNTKSB7Ci0JCXVtb2RlX3QgbW9kZSA9IGlub2RlLT5pX21vZGU7Ci0JCWVy cm9yID0gcG9zaXhfYWNsX2VxdWl2X21vZGUoYWNsLCAmbW9kZSk7CisJCXN0cnVjdCBwb3NpeF9h Y2wgKnNhdmVkX2FjbCA9IGFjbDsKKwkJdW1vZGVfdCBtb2RlOwogCi0JCWlmIChlcnJvciA8PSAw KSB7Ci0JCQlwb3NpeF9hY2xfcmVsZWFzZShhY2wpOwotCQkJYWNsID0gTlVMTDsKLQotCQkJaWYg KGVycm9yIDwgMCkKLQkJCQlyZXR1cm4gZXJyb3I7Ci0JCX0KKwkJZXJyb3IgPSBwb3NpeF9hY2xf dXBkYXRlX21vZGUoaW5vZGUsICZtb2RlLCAmYWNsKTsKKwkJaWYgKGVycm9yIHx8IGFjbCA9PSBO VUxMKQorCQkJcG9zaXhfYWNsX3JlbGVhc2Uoc2F2ZWRfYWNsKTsKKwkJaWYgKGVycm9yKQorCQkJ cmV0dXJuIGVycm9yOwogCiAJCWVycm9yID0gZ2ZzMl9zZXRfbW9kZShpbm9kZSwgbW9kZSk7CiAJ CWlmIChlcnJvcikKZGlmZiAtLWdpdCBhL2ZzL2dmczIvaW5vZGUuYyBiL2ZzL2dmczIvaW5vZGUu YwppbmRleCBjZmQ0OTU5YjIxOGMuLmQ0ZjgzODA0YjAwOCAxMDA2NDQKLS0tIGEvZnMvZ2ZzMi9p bm9kZS5jCisrKyBiL2ZzL2dmczIvaW5vZGUuYwpAQCAtMTY0Niw3ICsxNjQ2LDcgQEAgc3RhdGlj IGludCBnZnMyX3NldGF0dHIoc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBzdHJ1Y3QgaWF0dHIgKmF0 dHIpCiAJaWYgKElTX0lNTVVUQUJMRShpbm9kZSkgfHwgSVNfQVBQRU5EKGlub2RlKSkKIAkJZ290 byBvdXQ7CiAKLQllcnJvciA9IGlub2RlX2NoYW5nZV9vayhpbm9kZSwgYXR0cik7CisJZXJyb3Ig PSBzZXRhdHRyX3ByZXBhcmUoZGVudHJ5LCBhdHRyKTsKIAlpZiAoZXJyb3IpCiAJCWdvdG8gb3V0 OwogCmRpZmYgLS1naXQgYS9mcy9oZnMvaW5vZGUuYyBiL2ZzL2hmcy9pbm9kZS5jCmluZGV4IGEx YTlmZGNkMmEwMC4uNTMyZDZjYjJkY2E4IDEwMDY0NAotLS0gYS9mcy9oZnMvaW5vZGUuYworKysg Yi9mcy9oZnMvaW5vZGUuYwpAQCAtNTg4LDcgKzU4OCw3IEBAIGludCBoZnNfaW5vZGVfc2V0YXR0 cihzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIHN0cnVjdCBpYXR0ciAqIGF0dHIpCiAJc3RydWN0IGhm c19zYl9pbmZvICpoc2IgPSBIRlNfU0IoaW5vZGUtPmlfc2IpOwogCWludCBlcnJvcjsKIAotCWVy cm9yID0gaW5vZGVfY2hhbmdlX29rKGlub2RlLCBhdHRyKTsgLyogYmFzaWMgcGVybWlzc2lvbiBj aGVja3MgKi8KKwllcnJvciA9IHNldGF0dHJfcHJlcGFyZShkZW50cnksIGF0dHIpOyAvKiBiYXNp YyBwZXJtaXNzaW9uIGNoZWNrcyAqLwogCWlmIChlcnJvcikKIAkJcmV0dXJuIGVycm9yOwogCmRp ZmYgLS1naXQgYS9mcy9oZnNwbHVzL2lub2RlLmMgYi9mcy9oZnNwbHVzL2lub2RlLmMKaW5kZXgg NDBlMTQxM2JlNGNmLi42M2EyNTI0MjgzNzAgMTAwNjQ0Ci0tLSBhL2ZzL2hmc3BsdXMvaW5vZGUu YworKysgYi9mcy9oZnNwbHVzL2lub2RlLmMKQEAgLTI5Miw3ICsyOTIsNyBAQCBzdGF0aWMgaW50 IGhmc3BsdXNfc2V0YXR0cihzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIHN0cnVjdCBpYXR0ciAqYXR0 cikKIAlzdHJ1Y3QgaW5vZGUgKmlub2RlID0gZGVudHJ5LT5kX2lub2RlOwogCWludCBlcnJvcjsK IAotCWVycm9yID0gaW5vZGVfY2hhbmdlX29rKGlub2RlLCBhdHRyKTsKKwllcnJvciA9IHNldGF0 dHJfcHJlcGFyZShkZW50cnksIGF0dHIpOwogCWlmIChlcnJvcikKIAkJcmV0dXJuIGVycm9yOwog CmRpZmYgLS1naXQgYS9mcy9ob3N0ZnMvaG9zdGZzX2tlcm4uYyBiL2ZzL2hvc3Rmcy9ob3N0ZnNf a2Vybi5jCmluZGV4IDhkYjM5NzljZGJhNi4uM2YzYjFiZDdkNzUxIDEwMDY0NAotLS0gYS9mcy9o b3N0ZnMvaG9zdGZzX2tlcm4uYworKysgYi9mcy9ob3N0ZnMvaG9zdGZzX2tlcm4uYwpAQCAtNzky LDcgKzc5Miw3IEBAIGludCBob3N0ZnNfc2V0YXR0cihzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIHN0 cnVjdCBpYXR0ciAqYXR0cikKIAogCWludCBmZCA9IEhPU1RGU19JKGlub2RlKS0+ZmQ7CiAKLQll cnIgPSBpbm9kZV9jaGFuZ2Vfb2soaW5vZGUsIGF0dHIpOworCWVyciA9IHNldGF0dHJfcHJlcGFy ZShkZW50cnksIGF0dHIpOwogCWlmIChlcnIpCiAJCXJldHVybiBlcnI7CiAKQEAgLTk1NSwxMCAr OTU1LDExIEBAIHN0YXRpYyBpbnQgaG9zdGZzX2ZpbGxfc2JfY29tbW9uKHN0cnVjdCBzdXBlcl9i bG9jayAqc2IsIHZvaWQgKmQsIGludCBzaWxlbnQpCiAKIAlpZiAoU19JU0xOSyhyb290X2lub2Rl LT5pX21vZGUpKSB7CiAJCWNoYXIgKm5hbWUgPSBmb2xsb3dfbGluayhob3N0X3Jvb3RfcGF0aCk7 Ci0JCWlmIChJU19FUlIobmFtZSkpCisJCWlmIChJU19FUlIobmFtZSkpIHsKIAkJCWVyciA9IFBU Ul9FUlIobmFtZSk7Ci0JCWVsc2UKLQkJCWVyciA9IHJlYWRfbmFtZShyb290X2lub2RlLCBuYW1l KTsKKwkJCWdvdG8gb3V0X3B1dDsKKwkJfQorCQllcnIgPSByZWFkX25hbWUocm9vdF9pbm9kZSwg bmFtZSk7CiAJCWtmcmVlKG5hbWUpOwogCQlpZiAoZXJyKQogCQkJZ290byBvdXRfcHV0OwpkaWZm IC0tZ2l0IGEvZnMvaHBmcy9pbm9kZS5jIGIvZnMvaHBmcy9pbm9kZS5jCmluZGV4IDNiMmNlYzI5 OTcyYi4uMDBmYzk0MzQ1MDFhIDEwMDY0NAotLS0gYS9mcy9ocGZzL2lub2RlLmMKKysrIGIvZnMv aHBmcy9pbm9kZS5jCkBAIC0yNjgsNyArMjY4LDcgQEAgaW50IGhwZnNfc2V0YXR0cihzdHJ1Y3Qg ZGVudHJ5ICpkZW50cnksIHN0cnVjdCBpYXR0ciAqYXR0cikKIAlpZiAoKGF0dHItPmlhX3ZhbGlk ICYgQVRUUl9TSVpFKSAmJiBhdHRyLT5pYV9zaXplID4gaW5vZGUtPmlfc2l6ZSkKIAkJZ290byBv dXRfdW5sb2NrOwogCi0JZXJyb3IgPSBpbm9kZV9jaGFuZ2Vfb2soaW5vZGUsIGF0dHIpOworCWVy cm9yID0gc2V0YXR0cl9wcmVwYXJlKGRlbnRyeSwgYXR0cik7CiAJaWYgKGVycm9yKQogCQlnb3Rv IG91dF91bmxvY2s7CiAKZGlmZiAtLWdpdCBhL2ZzL2h1Z2V0bGJmcy9pbm9kZS5jIGIvZnMvaHVn ZXRsYmZzL2lub2RlLmMKaW5kZXggZWJhYjExNmIwNzc5Li41NTU3MzMyMmQxYmIgMTAwNjQ0Ci0t LSBhL2ZzL2h1Z2V0bGJmcy9pbm9kZS5jCisrKyBiL2ZzL2h1Z2V0bGJmcy9pbm9kZS5jCkBAIC00 MjIsNyArNDIyLDcgQEAgc3RhdGljIGludCBodWdldGxiZnNfc2V0YXR0cihzdHJ1Y3QgZGVudHJ5 ICpkZW50cnksIHN0cnVjdCBpYXR0ciAqYXR0cikKIAogCUJVR19PTighaW5vZGUpOwogCi0JZXJy b3IgPSBpbm9kZV9jaGFuZ2Vfb2soaW5vZGUsIGF0dHIpOworCWVycm9yID0gc2V0YXR0cl9wcmVw YXJlKGRlbnRyeSwgYXR0cik7CiAJaWYgKGVycm9yKQogCQlyZXR1cm4gZXJyb3I7CiAKZGlmZiAt LWdpdCBhL2ZzL2pmZnMyL2FjbC5jIGIvZnMvamZmczIvYWNsLmMKaW5kZXggOTI2ZDAyMDY4YTE0 Li5kOTYzZTU1Zjk4ZmIgMTAwNjQ0Ci0tLSBhL2ZzL2pmZnMyL2FjbC5jCisrKyBiL2ZzL2pmZnMy L2FjbC5jCkBAIC0yMjcsOSArMjI3LDEwIEBAIHN0YXRpYyBpbnQgamZmczJfc2V0X2FjbChzdHJ1 Y3QgaW5vZGUgKmlub2RlLCBpbnQgdHlwZSwgc3RydWN0IHBvc2l4X2FjbCAqYWNsKQogCWNhc2Ug QUNMX1RZUEVfQUNDRVNTOgogCQl4cHJlZml4ID0gSkZGUzJfWFBSRUZJWF9BQ0xfQUNDRVNTOwog CQlpZiAoYWNsKSB7Ci0JCQl1bW9kZV90IG1vZGUgPSBpbm9kZS0+aV9tb2RlOwotCQkJcmMgPSBw b3NpeF9hY2xfZXF1aXZfbW9kZShhY2wsICZtb2RlKTsKLQkJCWlmIChyYyA8IDApCisJCQl1bW9k ZV90IG1vZGU7CisKKwkJCXJjID0gcG9zaXhfYWNsX3VwZGF0ZV9tb2RlKGlub2RlLCAmbW9kZSwg JmFjbCk7CisJCQlpZiAocmMpCiAJCQkJcmV0dXJuIHJjOwogCQkJaWYgKGlub2RlLT5pX21vZGUg IT0gbW9kZSkgewogCQkJCXN0cnVjdCBpYXR0ciBhdHRyOwpAQCAtMjQxLDggKzI0Miw2IEBAIHN0 YXRpYyBpbnQgamZmczJfc2V0X2FjbChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBpbnQgdHlwZSwgc3Ry dWN0IHBvc2l4X2FjbCAqYWNsKQogCQkJCWlmIChyYyA8IDApCiAJCQkJCXJldHVybiByYzsKIAkJ CX0KLQkJCWlmIChyYyA9PSAwKQotCQkJCWFjbCA9IE5VTEw7CiAJCX0KIAkJYnJlYWs7CiAJY2Fz ZSBBQ0xfVFlQRV9ERUZBVUxUOgpkaWZmIC0tZ2l0IGEvZnMvamZmczIvZnMuYyBiL2ZzL2pmZnMy L2ZzLmMKaW5kZXggNGI4YWZlMzlhODdmLi43MzY1MmIyMDkzYjQgMTAwNjQ0Ci0tLSBhL2ZzL2pm ZnMyL2ZzLmMKKysrIGIvZnMvamZmczIvZnMuYwpAQCAtMTg2LDcgKzE4Niw3IEBAIGludCBqZmZz Ml9zZXRhdHRyKHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgc3RydWN0IGlhdHRyICppYXR0cikKIHsK IAlpbnQgcmM7CiAKLQlyYyA9IGlub2RlX2NoYW5nZV9vayhkZW50cnktPmRfaW5vZGUsIGlhdHRy KTsKKwlyYyA9IHNldGF0dHJfcHJlcGFyZShkZW50cnksIGlhdHRyKTsKIAlpZiAocmMpCiAJCXJl dHVybiByYzsKIApkaWZmIC0tZ2l0IGEvZnMvamZzL2ZpbGUuYyBiL2ZzL2pmcy9maWxlLmMKaW5k ZXggODQ0Zjk0NjBjYjExLi41YWIzYTBjMjE0YjUgMTAwNjQ0Ci0tLSBhL2ZzL2pmcy9maWxlLmMK KysrIGIvZnMvamZzL2ZpbGUuYwpAQCAtMTAyLDcgKzEwMiw3IEBAIGludCBqZnNfc2V0YXR0cihz dHJ1Y3QgZGVudHJ5ICpkZW50cnksIHN0cnVjdCBpYXR0ciAqaWF0dHIpCiAJc3RydWN0IGlub2Rl ICppbm9kZSA9IGRlbnRyeS0+ZF9pbm9kZTsKIAlpbnQgcmM7CiAKLQlyYyA9IGlub2RlX2NoYW5n ZV9vayhpbm9kZSwgaWF0dHIpOworCXJjID0gc2V0YXR0cl9wcmVwYXJlKGRlbnRyeSwgaWF0dHIp OwogCWlmIChyYykKIAkJcmV0dXJuIHJjOwogCmRpZmYgLS1naXQgYS9mcy9qZnMveGF0dHIuYyBi L2ZzL2pmcy94YXR0ci5jCmluZGV4IDI2NjgzZTE1YjNhYy4uMTA3OGM5MzgyNDI5IDEwMDY0NAot LS0gYS9mcy9qZnMveGF0dHIuYworKysgYi9mcy9qZnMveGF0dHIuYwpAQCAtNjkzLDkgKzY5Mywx MSBAQCBzdGF0aWMgaW50IGNhbl9zZXRfc3lzdGVtX3hhdHRyKHN0cnVjdCBpbm9kZSAqaW5vZGUs IGNvbnN0IGNoYXIgKm5hbWUsCiAJCQlyZXR1cm4gcmM7CiAJCX0KIAkJaWYgKGFjbCkgewotCQkJ cmMgPSBwb3NpeF9hY2xfZXF1aXZfbW9kZShhY2wsICZpbm9kZS0+aV9tb2RlKTsKKwkJCXN0cnVj dCBwb3NpeF9hY2wgKmR1bW15ID0gYWNsOworCisJCQlyYyA9IHBvc2l4X2FjbF91cGRhdGVfbW9k ZShpbm9kZSwgJmlub2RlLT5pX21vZGUsICZkdW1teSk7CiAJCQlwb3NpeF9hY2xfcmVsZWFzZShh Y2wpOwotCQkJaWYgKHJjIDwgMCkgeworCQkJaWYgKHJjKSB7CiAJCQkJcHJpbnRrKEtFUk5fRVJS CiAJCQkJICAgICAgICJwb3NpeF9hY2xfZXF1aXZfbW9kZSByZXR1cm5lZCAlZFxuIiwKIAkJCQkg ICAgICAgcmMpOwpkaWZmIC0tZ2l0IGEvZnMvbGliZnMuYyBiL2ZzL2xpYmZzLmMKaW5kZXggY2U4 NWVkZjhhY2E1Li5kMmY0M2M5MDY4ZDIgMTAwNjQ0Ci0tLSBhL2ZzL2xpYmZzLmMKKysrIGIvZnMv bGliZnMuYwpAQCAtMzY0LDcgKzM2NCw3IEBAIGludCBzaW1wbGVfc2V0YXR0cihzdHJ1Y3QgZGVu dHJ5ICpkZW50cnksIHN0cnVjdCBpYXR0ciAqaWF0dHIpCiAKIAlXQVJOX09OX09OQ0UoaW5vZGUt Pmlfb3AtPnRydW5jYXRlKTsKIAotCWVycm9yID0gaW5vZGVfY2hhbmdlX29rKGlub2RlLCBpYXR0 cik7CisJZXJyb3IgPSBzZXRhdHRyX3ByZXBhcmUoZGVudHJ5LCBpYXR0cik7CiAJaWYgKGVycm9y KQogCQlyZXR1cm4gZXJyb3I7CiAKZGlmZiAtLWdpdCBhL2ZzL2xvZ2ZzL2ZpbGUuYyBiL2ZzL2xv Z2ZzL2ZpbGUuYwppbmRleCBiNTQ4Yzg3YTg2ZjEuLjU2MmJiYzYyYmVjMiAxMDA2NDQKLS0tIGEv ZnMvbG9nZnMvZmlsZS5jCisrKyBiL2ZzL2xvZ2ZzL2ZpbGUuYwpAQCAtMjQxLDcgKzI0MSw3IEBA IHN0YXRpYyBpbnQgbG9nZnNfc2V0YXR0cihzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIHN0cnVjdCBp YXR0ciAqYXR0cikKIAlzdHJ1Y3QgaW5vZGUgKmlub2RlID0gZGVudHJ5LT5kX2lub2RlOwogCWlu dCBlcnIgPSAwOwogCi0JZXJyID0gaW5vZGVfY2hhbmdlX29rKGlub2RlLCBhdHRyKTsKKwllcnIg PSBzZXRhdHRyX3ByZXBhcmUoZGVudHJ5LCBhdHRyKTsKIAlpZiAoZXJyKQogCQlyZXR1cm4gZXJy OwogCmRpZmYgLS1naXQgYS9mcy9taW5peC9maWxlLmMgYi9mcy9taW5peC9maWxlLmMKaW5kZXgg NDQ5M2NlNjk1YWI4Li5kMjNlMTNjYmZiMGMgMTAwNjQ0Ci0tLSBhL2ZzL21pbml4L2ZpbGUuYwor KysgYi9mcy9taW5peC9maWxlLmMKQEAgLTI4LDcgKzI4LDcgQEAgc3RhdGljIGludCBtaW5peF9z ZXRhdHRyKHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgc3RydWN0IGlhdHRyICphdHRyKQogCXN0cnVj dCBpbm9kZSAqaW5vZGUgPSBkZW50cnktPmRfaW5vZGU7CiAJaW50IGVycm9yOwogCi0JZXJyb3Ig PSBpbm9kZV9jaGFuZ2Vfb2soaW5vZGUsIGF0dHIpOworCWVycm9yID0gc2V0YXR0cl9wcmVwYXJl KGRlbnRyeSwgYXR0cik7CiAJaWYgKGVycm9yKQogCQlyZXR1cm4gZXJyb3I7CiAKZGlmZiAtLWdp dCBhL2ZzL25jcGZzL2lub2RlLmMgYi9mcy9uY3Bmcy9pbm9kZS5jCmluZGV4IGNiZDFhNjFjMTEw YS4uZGNlODhlOTM5OWE0IDEwMDY0NAotLS0gYS9mcy9uY3Bmcy9pbm9kZS5jCisrKyBiL2ZzL25j cGZzL2lub2RlLmMKQEAgLTg4MCw3ICs4ODAsNyBAQCBpbnQgbmNwX25vdGlmeV9jaGFuZ2Uoc3Ry dWN0IGRlbnRyeSAqZGVudHJ5LCBzdHJ1Y3QgaWF0dHIgKmF0dHIpCiAJLyogYWdlaW5nIHRoZSBk ZW50cnkgdG8gZm9yY2UgdmFsaWRhdGlvbiAqLwogCW5jcF9hZ2VfZGVudHJ5KHNlcnZlciwgZGVu dHJ5KTsKIAotCXJlc3VsdCA9IGlub2RlX2NoYW5nZV9vayhpbm9kZSwgYXR0cik7CisJcmVzdWx0 ID0gc2V0YXR0cl9wcmVwYXJlKGRlbnRyeSwgYXR0cik7CiAJaWYgKHJlc3VsdCA8IDApCiAJCWdv dG8gb3V0OwogCmRpZmYgLS1naXQgYS9mcy9uZnMvY2FsbGJhY2tfeGRyLmMgYi9mcy9uZnMvY2Fs bGJhY2tfeGRyLmMKaW5kZXggNmQyMmQzNTY5MzdiLi45ODM5NzI2ZmU0MGMgMTAwNjQ0Ci0tLSBh L2ZzL25mcy9jYWxsYmFja194ZHIuYworKysgYi9mcy9uZnMvY2FsbGJhY2tfeGRyLmMKQEAgLTg3 OCw3ICs4NzgsNyBAQCBzdGF0aWMgX19iZTMyIG5mczRfY2FsbGJhY2tfY29tcG91bmQoc3RydWN0 IHN2Y19ycXN0ICpycXN0cCwgdm9pZCAqYXJncCwgdm9pZCAqcgogCWlmIChoZHJfYXJnLm1pbm9y dmVyc2lvbiA9PSAwKSB7CiAJCWNwcy5jbHAgPSBuZnM0X2ZpbmRfY2xpZW50X2lkZW50KGhkcl9h cmcuY2JfaWRlbnQpOwogCQlpZiAoIWNwcy5jbHAgfHwgIWNoZWNrX2dzc19jYWxsYmFja19wcmlu Y2lwYWwoY3BzLmNscCwgcnFzdHApKQotCQkJcmV0dXJuIHJwY19kcm9wX3JlcGx5OworCQkJZ290 byBvdXRfaW52YWxpZGNyZWQ7CiAJfQogCiAJaGRyX3Jlcy50YWdsZW4gPSBoZHJfYXJnLnRhZ2xl bjsKQEAgLTkwNSw2ICs5MDUsMTAgQEAgc3RhdGljIF9fYmUzMiBuZnM0X2NhbGxiYWNrX2NvbXBv dW5kKHN0cnVjdCBzdmNfcnFzdCAqcnFzdHAsIHZvaWQgKmFyZ3AsIHZvaWQgKnIKIAluZnNfcHV0 X2NsaWVudChjcHMuY2xwKTsKIAlkcHJpbnRrKCIlczogZG9uZSwgc3RhdHVzID0gJXVcbiIsIF9f ZnVuY19fLCBudG9obChzdGF0dXMpKTsKIAlyZXR1cm4gcnBjX3N1Y2Nlc3M7CisKK291dF9pbnZh bGlkY3JlZDoKKwlwcl93YXJuX3JhdGVsaW1pdGVkKCJORlM6IE5GU3Y0IGNhbGxiYWNrIGNvbnRh aW5zIGludmFsaWQgY3JlZFxuIik7CisJcmV0dXJuIHJwY19hdXRoZXJyX2JhZGNyZWQ7CiB9CiAK IC8qCmRpZmYgLS1naXQgYS9mcy9uZnMvbmZzNHByb2MuYyBiL2ZzL25mcy9uZnM0cHJvYy5jCmlu ZGV4IDlmYzc5OTgyOGVhNy4uMGJhOWJmNzcwNGQxIDEwMDY0NAotLS0gYS9mcy9uZnMvbmZzNHBy b2MuYworKysgYi9mcy9uZnMvbmZzNHByb2MuYwpAQCAtNTM2MCwxNCArNTM2MCwyMSBAQCBzdGF0 aWMgaW50IF9uZnM0X3Byb2NfY3JlYXRlX3Nlc3Npb24oc3RydWN0IG5mc19jbGllbnQgKmNscCkK IAogCXN0YXR1cyA9IHJwY19jYWxsX3N5bmMoc2Vzc2lvbi0+Y2xwLT5jbF9ycGNjbGllbnQsICZt c2csIFJQQ19UQVNLX1RJTUVPVVQpOwogCisJc3dpdGNoIChzdGF0dXMpIHsKKwljYXNlIC1ORlM0 RVJSX1NUQUxFX0NMSUVOVElEOgorCWNhc2UgLU5GUzRFUlJfREVMQVk6CisJY2FzZSAtRVRJTUVE T1VUOgorCWNhc2UgLUVBQ0NFUzoKKwljYXNlIC1FQUdBSU46CisJCWdvdG8gb3V0OworCX07CisK KwljbHAtPmNsX3NlcWlkKys7CiAJaWYgKCFzdGF0dXMpCiAJCS8qIFZlcmlmeSB0aGUgc2Vzc2lv bidzIG5lZ290aWF0ZWQgY2hhbm5lbF9hdHRycyB2YWx1ZXMgKi8KIAkJc3RhdHVzID0gbmZzNF92 ZXJpZnlfY2hhbm5lbF9hdHRycygmYXJncywgc2Vzc2lvbik7Ci0JaWYgKCFzdGF0dXMpIHsKLQkJ LyogSW5jcmVtZW50IHRoZSBjbGllbnRpZCBzbG90IHNlcXVlbmNlIGlkICovCi0JCWNscC0+Y2xf c2VxaWQrKzsKLQl9CiAKK291dDoKIAlyZXR1cm4gc3RhdHVzOwogfQogCmRpZmYgLS1naXQgYS9m cy9uZnMvd3JpdGUuYyBiL2ZzL25mcy93cml0ZS5jCmluZGV4IDMwMTM5MWEwYmZmYy4uZmNjYzU0 NWQxMjkyIDEwMDY0NAotLS0gYS9mcy9uZnMvd3JpdGUuYworKysgYi9mcy9uZnMvd3JpdGUuYwpA QCAtNzQ3LDYgKzc0Nyw5IEBAIGludCBuZnNfdXBkYXRlcGFnZShzdHJ1Y3QgZmlsZSAqZmlsZSwg c3RydWN0IHBhZ2UgKnBhZ2UsCiAJCWZpbGUtPmZfcGF0aC5kZW50cnktPmRfbmFtZS5uYW1lLCBj b3VudCwKIAkJKGxvbmcgbG9uZykocGFnZV9vZmZzZXQocGFnZSkgKyBvZmZzZXQpKTsKIAorCWlm ICghY291bnQpCisJCWdvdG8gb3V0OworCiAJLyogSWYgd2UncmUgbm90IHVzaW5nIGJ5dGUgcmFu Z2UgbG9ja3MsIGFuZCB3ZSBrbm93IHRoZSBwYWdlCiAJICogaXMgdXAgdG8gZGF0ZSwgaXQgbWF5 IGJlIG1vcmUgZWZmaWNpZW50IHRvIGV4dGVuZCB0aGUgd3JpdGUKIAkgKiB0byBjb3ZlciB0aGUg ZW50aXJlIHBhZ2UgaW4gb3JkZXIgdG8gYXZvaWQgZnJhZ21lbnRhdGlvbgpAQCAtNzY0LDcgKzc2 Nyw3IEBAIGludCBuZnNfdXBkYXRlcGFnZShzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IHBhZ2Ug KnBhZ2UsCiAJCW5mc19zZXRfcGFnZWVycm9yKHBhZ2UpOwogCWVsc2UKIAkJX19zZXRfcGFnZV9k aXJ0eV9ub2J1ZmZlcnMocGFnZSk7Ci0KK291dDoKIAlkcHJpbnRrKCJORlM6ICAgICAgIG5mc191 cGRhdGVwYWdlIHJldHVybnMgJWQgKGlzaXplICVsbGQpXG4iLAogCQkJc3RhdHVzLCAobG9uZyBs b25nKWlfc2l6ZV9yZWFkKGlub2RlKSk7CiAJcmV0dXJuIHN0YXR1czsKZGlmZiAtLWdpdCBhL2Zz L25mc2QvdmZzLmMgYi9mcy9uZnNkL3Zmcy5jCmluZGV4IGUyZTc5MTRhZmYzYi4uODU1ZTNmODBl NGUxIDEwMDY0NAotLS0gYS9mcy9uZnNkL3Zmcy5jCisrKyBiL2ZzL25mc2QvdmZzLmMKQEAgLTMw MSwxNyArMzAxLDE5IEBAIGNvbW1pdF9tZXRhZGF0YShzdHJ1Y3Qgc3ZjX2ZoICpmaHApCiAgKiBO RlMgc2VtYW50aWNzIGFuZCB3aGF0IExpbnV4IGV4cGVjdHMuCiAgKi8KIHN0YXRpYyB2b2lkCi1u ZnNkX3Nhbml0aXplX2F0dHJzKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBpYXR0ciAqaWFw KQorbmZzZF9zYW5pdGl6ZV9hdHRycyhzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIHN0cnVjdCBpYXR0 ciAqaWFwKQogeworCXN0cnVjdCBpbm9kZSAqaW5vZGUgPSBkZW50cnktPmRfaW5vZGU7CisKIAkv KgogCSAqIE5GU3YyIGRvZXMgbm90IGRpZmZlcmVudGlhdGUgYmV0d2VlbiAic2V0LVthY110aW1l LXRvLW5vdyIKIAkgKiB3aGljaCBvbmx5IHJlcXVpcmVzIGFjY2VzcywgYW5kICJzZXQtW2FjXXRp bWUtdG8tWCIgd2hpY2gKIAkgKiByZXF1aXJlcyBvd25lcnNoaXAuCiAJICogU28gaWYgaXQgbG9v a3MgbGlrZSBpdCBtaWdodCBiZSAic2V0IGJvdGggdG8gdGhlIHNhbWUgdGltZSB3aGljaAotCSAq IGlzIGNsb3NlIHRvIG5vdyIsIGFuZCBpZiBpbm9kZV9jaGFuZ2Vfb2sgZmFpbHMsIHRoZW4gd2UK KwkgKiBpcyBjbG9zZSB0byBub3ciLCBhbmQgaWYgc2V0YXR0cl9wcmVwYXJlIGZhaWxzLCB0aGVu IHdlCiAJICogY29udmVydCB0byAic2V0IHRvIG5vdyIgaW5zdGVhZCBvZiAic2V0IHRvIGV4cGxp Y2l0IHRpbWUiCiAJICoKLQkgKiBXZSBvbmx5IGNhbGwgaW5vZGVfY2hhbmdlX29rIGFzIHRoZSBs YXN0IHRlc3QgYXMgdGVjaG5pY2FsbHkKKwkgKiBXZSBvbmx5IGNhbGwgc2V0YXR0cl9wcmVwYXJl IGFzIHRoZSBsYXN0IHRlc3QgYXMgdGVjaG5pY2FsbHkKIAkgKiBpdCBpcyBub3QgYW4gaW50ZXJm YWNlIHRoYXQgd2Ugc2hvdWxkIGJlIHVzaW5nLgogCSAqLwogI2RlZmluZSBCT1RIX1RJTUVfU0VU IChBVFRSX0FUSU1FX1NFVCB8IEFUVFJfTVRJTUVfU0VUKQpAQCAtMzI5LDcgKzMzMSw3IEBAIG5m c2Rfc2FuaXRpemVfYXR0cnMoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGlhdHRyICppYXAp CiAJCWlmIChkZWx0YSA8IDApCiAJCQlkZWx0YSA9IC1kZWx0YTsKIAkJaWYgKGRlbHRhIDwgTUFY X1RPVUNIX1RJTUVfRVJST1IgJiYKLQkJICAgIGlub2RlX2NoYW5nZV9vayhpbm9kZSwgaWFwKSAh PSAwKSB7CisJCSAgICBzZXRhdHRyX3ByZXBhcmUoZGVudHJ5LCBpYXApICE9IDApIHsKIAkJCS8q CiAJCQkgKiBUdXJuIG9mZiBBVFRSX1tBTV1USU1FX1NFVCBidXQgbGVhdmUgQVRUUl9bQU1dVElN RS4KIAkJCSAqIFRoaXMgd2lsbCBjYXVzZSBub3RpZnlfY2hhbmdlIHRvIHNldCB0aGVzZSB0aW1l cwpAQCAtNDM3LDcgKzQzOSw3IEBAIG5mc2Rfc2V0YXR0cihzdHJ1Y3Qgc3ZjX3Jxc3QgKnJxc3Rw LCBzdHJ1Y3Qgc3ZjX2ZoICpmaHAsIHN0cnVjdCBpYXR0ciAqaWFwLAogCWlmICghaWFwLT5pYV92 YWxpZCkKIAkJZ290byBvdXQ7CiAKLQluZnNkX3Nhbml0aXplX2F0dHJzKGlub2RlLCBpYXApOwor CW5mc2Rfc2FuaXRpemVfYXR0cnMoZGVudHJ5LCBpYXApOwogCiAJLyoKIAkgKiBUaGUgc2l6ZSBj YXNlIGlzIHNwZWNpYWwsIGl0IGNoYW5nZXMgdGhlIGZpbGUgaW4gYWRkaXRpb24gdG8gdGhlCmRp ZmYgLS1naXQgYS9mcy9uaWxmczIvaW5vZGUuYyBiL2ZzL25pbGZzMi9pbm9kZS5jCmluZGV4IGIy ZDhhOTY3ZDFkNi4uM2E3MDgxODllN2E5IDEwMDY0NAotLS0gYS9mcy9uaWxmczIvaW5vZGUuYwor KysgYi9mcy9uaWxmczIvaW5vZGUuYwpAQCAtNzkyLDcgKzc5Miw3IEBAIGludCBuaWxmc19zZXRh dHRyKHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgc3RydWN0IGlhdHRyICppYXR0cikKIAlzdHJ1Y3Qg c3VwZXJfYmxvY2sgKnNiID0gaW5vZGUtPmlfc2I7CiAJaW50IGVycjsKIAotCWVyciA9IGlub2Rl X2NoYW5nZV9vayhpbm9kZSwgaWF0dHIpOworCWVyciA9IHNldGF0dHJfcHJlcGFyZShkZW50cnks IGlhdHRyKTsKIAlpZiAoZXJyKQogCQlyZXR1cm4gZXJyOwogCmRpZmYgLS1naXQgYS9mcy9udGZz L2lub2RlLmMgYi9mcy9udGZzL2lub2RlLmMKaW5kZXggOTdlMmRhY2JjODY3Li5jODRmMDI2Yzc5 YWIgMTAwNjQ0Ci0tLSBhL2ZzL250ZnMvaW5vZGUuYworKysgYi9mcy9udGZzL2lub2RlLmMKQEAg LTI4OTAsNyArMjg5MCw3IEBAIGludCBudGZzX3NldGF0dHIoc3RydWN0IGRlbnRyeSAqZGVudHJ5 LCBzdHJ1Y3QgaWF0dHIgKmF0dHIpCiAJaW50IGVycjsKIAl1bnNpZ25lZCBpbnQgaWFfdmFsaWQg PSBhdHRyLT5pYV92YWxpZDsKIAotCWVyciA9IGlub2RlX2NoYW5nZV9vayh2aSwgYXR0cik7CisJ ZXJyID0gc2V0YXR0cl9wcmVwYXJlKGRlbnRyeSwgYXR0cik7CiAJaWYgKGVycikKIAkJZ290byBv dXQ7CiAJLyogV2UgZG8gbm90IHN1cHBvcnQgTlRGUyBBQ0xzIHlldC4gKi8KZGlmZiAtLWdpdCBh L2ZzL29jZnMyL2FjbC5jIGIvZnMvb2NmczIvYWNsLmMKaW5kZXggYTcyMTkwNzViNGRlLi43ZTZl MWY4MjYzNTggMTAwNjQ0Ci0tLSBhL2ZzL29jZnMyL2FjbC5jCisrKyBiL2ZzL29jZnMyL2FjbC5j CkBAIC0yNDcsMTQgKzI0NywxMSBAQCBzdGF0aWMgaW50IG9jZnMyX3NldF9hY2woaGFuZGxlX3Qg KmhhbmRsZSwKIAljYXNlIEFDTF9UWVBFX0FDQ0VTUzoKIAkJbmFtZV9pbmRleCA9IE9DRlMyX1hB VFRSX0lOREVYX1BPU0lYX0FDTF9BQ0NFU1M7CiAJCWlmIChhY2wpIHsKLQkJCXVtb2RlX3QgbW9k ZSA9IGlub2RlLT5pX21vZGU7Ci0JCQlyZXQgPSBwb3NpeF9hY2xfZXF1aXZfbW9kZShhY2wsICZt b2RlKTsKLQkJCWlmIChyZXQgPCAwKQorCQkJdW1vZGVfdCBtb2RlOworCQkJcmV0ID0gcG9zaXhf YWNsX3VwZGF0ZV9tb2RlKGlub2RlLCAmbW9kZSwgJmFjbCk7CisJCQlpZiAocmV0KQogCQkJCXJl dHVybiByZXQ7CiAJCQllbHNlIHsKLQkJCQlpZiAocmV0ID09IDApCi0JCQkJCWFjbCA9IE5VTEw7 Ci0KIAkJCQlyZXQgPSBvY2ZzMl9hY2xfc2V0X21vZGUoaW5vZGUsIGRpX2JoLAogCQkJCQkJCSBo YW5kbGUsIG1vZGUpOwogCQkJCWlmIChyZXQpCmRpZmYgLS1naXQgYS9mcy9vY2ZzMi9kbG0vZGxt Y29udmVydC5jIGIvZnMvb2NmczIvZGxtL2RsbWNvbnZlcnQuYwppbmRleCBmNjViZGNmNjE1MjYu LjZkOTc4ODNlMjY1MiAxMDA2NDQKLS0tIGEvZnMvb2NmczIvZGxtL2RsbWNvbnZlcnQuYworKysg Yi9mcy9vY2ZzMi9kbG0vZGxtY29udmVydC5jCkBAIC0yNjUsNyArMjY1LDYgQEAgZW51bSBkbG1f c3RhdHVzIGRsbWNvbnZlcnRfcmVtb3RlKHN0cnVjdCBkbG1fY3R4dCAqZGxtLAogCQkJCSAgc3Ry dWN0IGRsbV9sb2NrICpsb2NrLCBpbnQgZmxhZ3MsIGludCB0eXBlKQogewogCWVudW0gZGxtX3N0 YXR1cyBzdGF0dXM7Ci0JdTggb2xkX293bmVyID0gcmVzLT5vd25lcjsKIAogCW1sb2coMCwgInR5 cGU9JWQsIGNvbnZlcnRfdHlwZT0lZCwgYnVzeT0lZFxuIiwgbG9jay0+bWwudHlwZSwKIAkgICAg IGxvY2stPm1sLmNvbnZlcnRfdHlwZSwgcmVzLT5zdGF0ZSAmIERMTV9MT0NLX1JFU19JTl9QUk9H UkVTUyk7CkBAIC0zMzIsNyArMzMxLDYgQEAgZW51bSBkbG1fc3RhdHVzIGRsbWNvbnZlcnRfcmVt b3RlKHN0cnVjdCBkbG1fY3R4dCAqZGxtLAogCiAJc3Bpbl9sb2NrKCZyZXMtPnNwaW5sb2NrKTsK IAlyZXMtPnN0YXRlICY9IH5ETE1fTE9DS19SRVNfSU5fUFJPR1JFU1M7Ci0JbG9jay0+Y29udmVy dF9wZW5kaW5nID0gMDsKIAkvKiBpZiBpdCBmYWlsZWQsIG1vdmUgaXQgYmFjayB0byBncmFudGVk IHF1ZXVlLgogCSAqIGlmIG1hc3RlciByZXR1cm5zIERMTV9OT1JNQUwgYW5kIHRoZW4gZG93biBi ZWZvcmUgc2VuZGluZyBhc3QsCiAJICogaXQgbWF5IGhhdmUgYWxyZWFkeSBiZWVuIG1vdmVkIHRv IGdyYW50ZWQgcXVldWUsIHJlc2V0IHRvCkBAIC0zNDEsMTIgKzMzOSwxNCBAQCBlbnVtIGRsbV9z dGF0dXMgZGxtY29udmVydF9yZW1vdGUoc3RydWN0IGRsbV9jdHh0ICpkbG0sCiAJCWlmIChzdGF0 dXMgIT0gRExNX05PVFFVRVVFRCkKIAkJCWRsbV9lcnJvcihzdGF0dXMpOwogCQlkbG1fcmV2ZXJ0 X3BlbmRpbmdfY29udmVydChyZXMsIGxvY2spOwotCX0gZWxzZSBpZiAoKHJlcy0+c3RhdGUgJiBE TE1fTE9DS19SRVNfUkVDT1ZFUklORykgfHwKLQkJCShvbGRfb3duZXIgIT0gcmVzLT5vd25lcikp IHsKLQkJbWxvZygwLCAicmVzICUuKnMgaXMgaW4gcmVjb3ZlcmluZyBvciBoYXMgYmVlbiByZWNv dmVyZWQuXG4iLAotCQkJCXJlcy0+bG9ja25hbWUubGVuLCByZXMtPmxvY2tuYW1lLm5hbWUpOwor CX0gZWxzZSBpZiAoIWxvY2stPmNvbnZlcnRfcGVuZGluZykgeworCQltbG9nKDAsICIlczogcmVz ICUuKnMsIG93bmVyIGRpZWQgYW5kIGxvY2sgaGFzIGJlZW4gbW92ZWQgYmFjayAiCisJCQkJInRv IGdyYW50ZWQgbGlzdCwgcmV0cnkgY29udmVydC5cbiIsCisJCQkJZGxtLT5uYW1lLCByZXMtPmxv Y2tuYW1lLmxlbiwgcmVzLT5sb2NrbmFtZS5uYW1lKTsKIAkJc3RhdHVzID0gRExNX1JFQ09WRVJJ Tkc7CiAJfQorCisJbG9jay0+Y29udmVydF9wZW5kaW5nID0gMDsKIGJhaWw6CiAJc3Bpbl91bmxv Y2soJnJlcy0+c3BpbmxvY2spOwogCmRpZmYgLS1naXQgYS9mcy9vY2ZzMi9kbG1mcy9kbG1mcy5j IGIvZnMvb2NmczIvZGxtZnMvZGxtZnMuYwppbmRleCBiNDIwNzY3OTcwNDkuLmQwYWIwYmZkMWVm YSAxMDA2NDQKLS0tIGEvZnMvb2NmczIvZGxtZnMvZGxtZnMuYworKysgYi9mcy9vY2ZzMi9kbG1m cy9kbG1mcy5jCkBAIC0yMTIsNyArMjEyLDcgQEAgc3RhdGljIGludCBkbG1mc19maWxlX3NldGF0 dHIoc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBzdHJ1Y3QgaWF0dHIgKmF0dHIpCiAJc3RydWN0IGlu b2RlICppbm9kZSA9IGRlbnRyeS0+ZF9pbm9kZTsKIAogCWF0dHItPmlhX3ZhbGlkICY9IH5BVFRS X1NJWkU7Ci0JZXJyb3IgPSBpbm9kZV9jaGFuZ2Vfb2soaW5vZGUsIGF0dHIpOworCWVycm9yID0g c2V0YXR0cl9wcmVwYXJlKGRlbnRyeSwgYXR0cik7CiAJaWYgKGVycm9yKQogCQlyZXR1cm4gZXJy b3I7CiAKZGlmZiAtLWdpdCBhL2ZzL29jZnMyL2ZpbGUuYyBiL2ZzL29jZnMyL2ZpbGUuYwppbmRl eCA2YTdhM2Q5YTU2YjguLmE2NzhlMjI4N2Y1MiAxMDA2NDQKLS0tIGEvZnMvb2NmczIvZmlsZS5j CisrKyBiL2ZzL29jZnMyL2ZpbGUuYwpAQCAtMTEyNyw3ICsxMTI3LDcgQEAgaW50IG9jZnMyX3Nl dGF0dHIoc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBzdHJ1Y3QgaWF0dHIgKmF0dHIpCiAJaWYgKCEo YXR0ci0+aWFfdmFsaWQgJiBPQ0ZTMl9WQUxJRF9BVFRSUykpCiAJCXJldHVybiAwOwogCi0Jc3Rh dHVzID0gaW5vZGVfY2hhbmdlX29rKGlub2RlLCBhdHRyKTsKKwlzdGF0dXMgPSBzZXRhdHRyX3By ZXBhcmUoZGVudHJ5LCBhdHRyKTsKIAlpZiAoc3RhdHVzKQogCQlyZXR1cm4gc3RhdHVzOwogCkBA IC0xNTE4LDcgKzE1MTgsOCBAQCBzdGF0aWMgaW50IG9jZnMyX3plcm9fcGFydGlhbF9jbHVzdGVy cyhzdHJ1Y3QgaW5vZGUgKmlub2RlLAogCQkJCSAgICAgICB1NjQgc3RhcnQsIHU2NCBsZW4pCiB7 CiAJaW50IHJldCA9IDA7Ci0JdTY0IHRtcGVuZCwgZW5kID0gc3RhcnQgKyBsZW47CisJdTY0IHRt cGVuZCA9IDA7CisJdTY0IGVuZCA9IHN0YXJ0ICsgbGVuOwogCXN0cnVjdCBvY2ZzMl9zdXBlciAq b3NiID0gT0NGUzJfU0IoaW5vZGUtPmlfc2IpOwogCXVuc2lnbmVkIGludCBjc2l6ZSA9IG9zYi0+ c19jbHVzdGVyc2l6ZTsKIAloYW5kbGVfdCAqaGFuZGxlOwpAQCAtMTU1MCwxOCArMTU1MSwzMSBA QCBzdGF0aWMgaW50IG9jZnMyX3plcm9fcGFydGlhbF9jbHVzdGVycyhzdHJ1Y3QgaW5vZGUgKmlu b2RlLAogCX0KIAogCS8qCi0JICogV2Ugd2FudCB0byBnZXQgdGhlIGJ5dGUgb2Zmc2V0IG9mIHRo ZSBlbmQgb2YgdGhlIDFzdCBjbHVzdGVyLgorCSAqIElmIHN0YXJ0IGlzIG9uIGEgY2x1c3RlciBi b3VuZGFyeSBhbmQgZW5kIGlzIHNvbWV3aGVyZSBpbiBhbm90aGVyCisJICogY2x1c3Rlciwgd2Ug aGF2ZSBub3QgQ09XZWQgdGhlIGNsdXN0ZXIgc3RhcnRpbmcgYXQgc3RhcnQsIHVubGVzcworCSAq IGVuZCBpcyBhbHNvIHdpdGhpbiB0aGUgc2FtZSBjbHVzdGVyLiBTbywgaW4gdGhpcyBjYXNlLCB3 ZSBza2lwIHRoaXMKKwkgKiBmaXJzdCBjYWxsIHRvIG9jZnMyX3plcm9fcmFuZ2VfZm9yX3RydW5j YXRlKCkgdHJ1bmNhdGUgYW5kIG1vdmUgb24KKwkgKiB0byB0aGUgbmV4dCBvbmUuCiAJICovCi0J dG1wZW5kID0gKHU2NClvc2ItPnNfY2x1c3RlcnNpemUgKyAoc3RhcnQgJiB+KG9zYi0+c19jbHVz dGVyc2l6ZSAtIDEpKTsKLQlpZiAodG1wZW5kID4gZW5kKQotCQl0bXBlbmQgPSBlbmQ7CisJaWYg KChzdGFydCAmIChjc2l6ZSAtIDEpKSAhPSAwKSB7CisJCS8qCisJCSAqIFdlIHdhbnQgdG8gZ2V0 IHRoZSBieXRlIG9mZnNldCBvZiB0aGUgZW5kIG9mIHRoZSAxc3QKKwkJICogY2x1c3Rlci4KKwkJ ICovCisJCXRtcGVuZCA9ICh1NjQpb3NiLT5zX2NsdXN0ZXJzaXplICsKKwkJCShzdGFydCAmIH4o b3NiLT5zX2NsdXN0ZXJzaXplIC0gMSkpOworCQlpZiAodG1wZW5kID4gZW5kKQorCQkJdG1wZW5k ID0gZW5kOwogCi0JdHJhY2Vfb2NmczJfemVyb19wYXJ0aWFsX2NsdXN0ZXJzX3JhbmdlMSgodW5z aWduZWQgbG9uZyBsb25nKXN0YXJ0LAotCQkJCQkJICh1bnNpZ25lZCBsb25nIGxvbmcpdG1wZW5k KTsKKwkJdHJhY2Vfb2NmczJfemVyb19wYXJ0aWFsX2NsdXN0ZXJzX3JhbmdlMSgKKwkJCSh1bnNp Z25lZCBsb25nIGxvbmcpc3RhcnQsCisJCQkodW5zaWduZWQgbG9uZyBsb25nKXRtcGVuZCk7CiAK LQlyZXQgPSBvY2ZzMl96ZXJvX3JhbmdlX2Zvcl90cnVuY2F0ZShpbm9kZSwgaGFuZGxlLCBzdGFy dCwgdG1wZW5kKTsKLQlpZiAocmV0KQotCQltbG9nX2Vycm5vKHJldCk7CisJCXJldCA9IG9jZnMy X3plcm9fcmFuZ2VfZm9yX3RydW5jYXRlKGlub2RlLCBoYW5kbGUsIHN0YXJ0LAorCQkJCQkJICAg IHRtcGVuZCk7CisJCWlmIChyZXQpCisJCQltbG9nX2Vycm5vKHJldCk7CisJfQogCiAJaWYgKHRt cGVuZCA8IGVuZCkgewogCQkvKgpkaWZmIC0tZ2l0IGEvZnMvb21mcy9maWxlLmMgYi9mcy9vbWZz L2ZpbGUuYwppbmRleCAyYzZkOTUyNTdhNGQuLjI2OTcyZTc0YjlhYSAxMDA2NDQKLS0tIGEvZnMv b21mcy9maWxlLmMKKysrIGIvZnMvb21mcy9maWxlLmMKQEAgLTM0NSw3ICszNDUsNyBAQCBzdGF0 aWMgaW50IG9tZnNfc2V0YXR0cihzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIHN0cnVjdCBpYXR0ciAq YXR0cikKIAlzdHJ1Y3QgaW5vZGUgKmlub2RlID0gZGVudHJ5LT5kX2lub2RlOwogCWludCBlcnJv cjsKIAotCWVycm9yID0gaW5vZGVfY2hhbmdlX29rKGlub2RlLCBhdHRyKTsKKwllcnJvciA9IHNl dGF0dHJfcHJlcGFyZShkZW50cnksIGF0dHIpOwogCWlmIChlcnJvcikKIAkJcmV0dXJuIGVycm9y OwogCmRpZmYgLS1naXQgYS9mcy9wb3NpeF9hY2wuYyBiL2ZzL3Bvc2l4X2FjbC5jCmluZGV4IDZj NzBhYjIyYTNlMy4uMGZmMjA3OTdlMTYyIDEwMDY0NAotLS0gYS9mcy9wb3NpeF9hY2wuYworKysg Yi9mcy9wb3NpeF9hY2wuYwpAQCAtMzQxLDYgKzM0MSwzNiBAQCBzdGF0aWMgaW50IHBvc2l4X2Fj bF9jcmVhdGVfbWFzcShzdHJ1Y3QgcG9zaXhfYWNsICphY2wsIHVtb2RlX3QgKm1vZGVfcCkKICAg ICAgICAgcmV0dXJuIG5vdF9lcXVpdjsKIH0KIAorLyoqCisgKiBwb3NpeF9hY2xfdXBkYXRlX21v ZGUgIC0gIHVwZGF0ZSBtb2RlIGluIHNldF9hY2wKKyAqCisgKiBVcGRhdGUgdGhlIGZpbGUgbW9k ZSB3aGVuIHNldHRpbmcgYW4gQUNMOiBjb21wdXRlIHRoZSBuZXcgZmlsZSBwZXJtaXNzaW9uCisg KiBiaXRzIGJhc2VkIG9uIHRoZSBBQ0wuICBJbiBhZGRpdGlvbiwgaWYgdGhlIEFDTCBpcyBlcXVp dmFsZW50IHRvIHRoZSBuZXcKKyAqIGZpbGUgbW9kZSwgc2V0ICphY2wgdG8gTlVMTCB0byBpbmRp Y2F0ZSB0aGF0IG5vIEFDTCBzaG91bGQgYmUgc2V0LgorICoKKyAqIEFzIHdpdGggY2htb2QsIGNs ZWFyIHRoZSBzZXRnaXQgYml0IGlmIHRoZSBjYWxsZXIgaXMgbm90IGluIHRoZSBvd25pbmcgZ3Jv dXAKKyAqIG9yIGNhcGFibGUgb2YgQ0FQX0ZTRVRJRCAoc2VlIGlub2RlX2NoYW5nZV9vaykuCisg KgorICogQ2FsbGVkIGZyb20gc2V0X2FjbCBpbm9kZSBvcGVyYXRpb25zLgorICovCitpbnQgcG9z aXhfYWNsX3VwZGF0ZV9tb2RlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHVtb2RlX3QgKm1vZGVfcCwK KwkJCSAgc3RydWN0IHBvc2l4X2FjbCAqKmFjbCkKK3sKKwl1bW9kZV90IG1vZGUgPSBpbm9kZS0+ aV9tb2RlOworCWludCBlcnJvcjsKKworCWVycm9yID0gcG9zaXhfYWNsX2VxdWl2X21vZGUoKmFj bCwgJm1vZGUpOworCWlmIChlcnJvciA8IDApCisJCXJldHVybiBlcnJvcjsKKwlpZiAoZXJyb3Ig PT0gMCkKKwkJKmFjbCA9IE5VTEw7CisJaWYgKCFpbl9ncm91cF9wKGlub2RlLT5pX2dpZCkgJiYg IWNhcGFibGUoQ0FQX0ZTRVRJRCkpCisJCW1vZGUgJj0gflNfSVNHSUQ7CisJKm1vZGVfcCA9IG1v ZGU7CisJcmV0dXJuIDA7Cit9CitFWFBPUlRfU1lNQk9MKHBvc2l4X2FjbF91cGRhdGVfbW9kZSk7 CisKIC8qCiAgKiBNb2RpZnkgdGhlIEFDTCBmb3IgdGhlIGNobW9kIHN5c2NhbGwuCiAgKi8KZGlm ZiAtLWdpdCBhL2ZzL3Byb2MvYmFzZS5jIGIvZnMvcHJvYy9iYXNlLmMKaW5kZXggNDAyOTc2YWI3 NDZhLi4yYzM4YTNlNGZhNTEgMTAwNjQ0Ci0tLSBhL2ZzL3Byb2MvYmFzZS5jCisrKyBiL2ZzL3By b2MvYmFzZS5jCkBAIC01NTgsNyArNTU4LDcgQEAgaW50IHByb2Nfc2V0YXR0cihzdHJ1Y3QgZGVu dHJ5ICpkZW50cnksIHN0cnVjdCBpYXR0ciAqYXR0cikKIAlpZiAoYXR0ci0+aWFfdmFsaWQgJiBB VFRSX01PREUpCiAJCXJldHVybiAtRVBFUk07CiAKLQllcnJvciA9IGlub2RlX2NoYW5nZV9vayhp bm9kZSwgYXR0cik7CisJZXJyb3IgPSBzZXRhdHRyX3ByZXBhcmUoZGVudHJ5LCBhdHRyKTsKIAlp ZiAoZXJyb3IpCiAJCXJldHVybiBlcnJvcjsKIApkaWZmIC0tZ2l0IGEvZnMvcHJvYy9nZW5lcmlj LmMgYi9mcy9wcm9jL2dlbmVyaWMuYwppbmRleCAxMDA5MGQ5YzdhZDUuLmQwZDZiYjZlNjJjOCAx MDA2NDQKLS0tIGEvZnMvcHJvYy9nZW5lcmljLmMKKysrIGIvZnMvcHJvYy9nZW5lcmljLmMKQEAg LTI1Nyw3ICsyNTcsNyBAQCBzdGF0aWMgaW50IHByb2Nfbm90aWZ5X2NoYW5nZShzdHJ1Y3QgZGVu dHJ5ICpkZW50cnksIHN0cnVjdCBpYXR0ciAqaWF0dHIpCiAJc3RydWN0IHByb2NfZGlyX2VudHJ5 ICpkZSA9IFBERShpbm9kZSk7CiAJaW50IGVycm9yOwogCi0JZXJyb3IgPSBpbm9kZV9jaGFuZ2Vf b2soaW5vZGUsIGlhdHRyKTsKKwllcnJvciA9IHNldGF0dHJfcHJlcGFyZShkZW50cnksIGlhdHRy KTsKIAlpZiAoZXJyb3IpCiAJCXJldHVybiBlcnJvcjsKIApkaWZmIC0tZ2l0IGEvZnMvcHJvYy9w cm9jX3N5c2N0bC5jIGIvZnMvcHJvYy9wcm9jX3N5c2N0bC5jCmluZGV4IDBiZTFhYTQ2ZDlkMS4u ZWMyMDU5NTNmZDU4IDEwMDY0NAotLS0gYS9mcy9wcm9jL3Byb2Nfc3lzY3RsLmMKKysrIGIvZnMv cHJvYy9wcm9jX3N5c2N0bC5jCkBAIC0zODcsNyArMzg3LDcgQEAgc3RhdGljIGludCBwcm9jX3N5 c19zZXRhdHRyKHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgc3RydWN0IGlhdHRyICphdHRyKQogCWlm IChhdHRyLT5pYV92YWxpZCAmIChBVFRSX01PREUgfCBBVFRSX1VJRCB8IEFUVFJfR0lEKSkKIAkJ cmV0dXJuIC1FUEVSTTsKIAotCWVycm9yID0gaW5vZGVfY2hhbmdlX29rKGlub2RlLCBhdHRyKTsK KwllcnJvciA9IHNldGF0dHJfcHJlcGFyZShkZW50cnksIGF0dHIpOwogCWlmIChlcnJvcikKIAkJ cmV0dXJuIGVycm9yOwogCmRpZmYgLS1naXQgYS9mcy9yYW1mcy9maWxlLW5vbW11LmMgYi9mcy9y YW1mcy9maWxlLW5vbW11LmMKaW5kZXggZDUzNzhkMDI4NTg5Li5iNzljNTQ1MzQwYTcgMTAwNjQ0 Ci0tLSBhL2ZzL3JhbWZzL2ZpbGUtbm9tbXUuYworKysgYi9mcy9yYW1mcy9maWxlLW5vbW11LmMK QEAgLTE2NCw3ICsxNjQsNyBAQCBzdGF0aWMgaW50IHJhbWZzX25vbW11X3NldGF0dHIoc3RydWN0 IGRlbnRyeSAqZGVudHJ5LCBzdHJ1Y3QgaWF0dHIgKmlhKQogCWludCByZXQgPSAwOwogCiAJLyog UE9TSVggVUlEL0dJRCB2ZXJpZmljYXRpb24gZm9yIHNldHRpbmcgaW5vZGUgYXR0cmlidXRlcyAq LwotCXJldCA9IGlub2RlX2NoYW5nZV9vayhpbm9kZSwgaWEpOworCXJldCA9IHNldGF0dHJfcHJl cGFyZShkZW50cnksIGlhKTsKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCmRpZmYgLS1naXQg YS9mcy9yZWlzZXJmcy9pbm9kZS5jIGIvZnMvcmVpc2VyZnMvaW5vZGUuYwppbmRleCBmY2IwN2U1 YTUxNTkuLmZmMTBkZGE3M2JiNSAxMDA2NDQKLS0tIGEvZnMvcmVpc2VyZnMvaW5vZGUuYworKysg Yi9mcy9yZWlzZXJmcy9pbm9kZS5jCkBAIC0zMTA3LDcgKzMxMDcsNyBAQCBpbnQgcmVpc2VyZnNf c2V0YXR0cihzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIHN0cnVjdCBpYXR0ciAqYXR0cikKIAlpbnQg ZGVwdGg7CiAJaW50IGVycm9yOwogCi0JZXJyb3IgPSBpbm9kZV9jaGFuZ2Vfb2soaW5vZGUsIGF0 dHIpOworCWVycm9yID0gc2V0YXR0cl9wcmVwYXJlKGRlbnRyeSwgYXR0cik7CiAJaWYgKGVycm9y KQogCQlyZXR1cm4gZXJyb3I7CiAKZGlmZiAtLWdpdCBhL2ZzL3JlaXNlcmZzL3hhdHRyX2FjbC5j IGIvZnMvcmVpc2VyZnMveGF0dHJfYWNsLmMKaW5kZXggNmRhMDM5NmU1MDUyLi4xZDRmNGM3NGQy YzMgMTAwNjQ0Ci0tLSBhL2ZzL3JlaXNlcmZzL3hhdHRyX2FjbC5jCisrKyBiL2ZzL3JlaXNlcmZz L3hhdHRyX2FjbC5jCkBAIC0yNzIsMTMgKzI3Miw5IEBAIHJlaXNlcmZzX3NldF9hY2woc3RydWN0 IHJlaXNlcmZzX3RyYW5zYWN0aW9uX2hhbmRsZSAqdGgsIHN0cnVjdCBpbm9kZSAqaW5vZGUsCiAJ Y2FzZSBBQ0xfVFlQRV9BQ0NFU1M6CiAJCW5hbWUgPSBQT1NJWF9BQ0xfWEFUVFJfQUNDRVNTOwog CQlpZiAoYWNsKSB7Ci0JCQllcnJvciA9IHBvc2l4X2FjbF9lcXVpdl9tb2RlKGFjbCwgJmlub2Rl LT5pX21vZGUpOwotCQkJaWYgKGVycm9yIDwgMCkKKwkJCWVycm9yID0gcG9zaXhfYWNsX3VwZGF0 ZV9tb2RlKGlub2RlLCAmaW5vZGUtPmlfbW9kZSwgJmFjbCk7CisJCQlpZiAoZXJyb3IpCiAJCQkJ cmV0dXJuIGVycm9yOwotCQkJZWxzZSB7Ci0JCQkJaWYgKGVycm9yID09IDApCi0JCQkJCWFjbCA9 IE5VTEw7Ci0JCQl9CiAJCX0KIAkJYnJlYWs7CiAJY2FzZSBBQ0xfVFlQRV9ERUZBVUxUOgpkaWZm IC0tZ2l0IGEvZnMvc2VxX2ZpbGUuYyBiL2ZzL3NlcV9maWxlLmMKaW5kZXggZGJhNDNjM2VhM2Fm Li4yNTNhMzNiOGM1N2EgMTAwNjQ0Ci0tLSBhL2ZzL3NlcV9maWxlLmMKKysrIGIvZnMvc2VxX2Zp bGUuYwpAQCAtMTg0LDggKzE4NCwxMCBAQCBzc2l6ZV90IHNlcV9yZWFkKHN0cnVjdCBmaWxlICpm aWxlLCBjaGFyIF9fdXNlciAqYnVmLCBzaXplX3Qgc2l6ZSwgbG9mZl90ICpwcG9zKQogCQlzaXpl IC09IG47CiAJCWJ1ZiArPSBuOwogCQljb3BpZWQgKz0gbjsKLQkJaWYgKCFtLT5jb3VudCkKKwkJ aWYgKCFtLT5jb3VudCkgeworCQkJbS0+ZnJvbSA9IDA7CiAJCQltLT5pbmRleCsrOworCQl9CiAJ CWlmICghc2l6ZSkKIAkJCWdvdG8gRG9uZTsKIAl9CmRpZmYgLS1naXQgYS9mcy9zeXNmcy9pbm9k ZS5jIGIvZnMvc3lzZnMvaW5vZGUuYwppbmRleCA5ZGI2MWE0MWMxYWQuLjZmNTRlNjJmNDY0ZSAx MDA2NDQKLS0tIGEvZnMvc3lzZnMvaW5vZGUuYworKysgYi9mcy9zeXNmcy9pbm9kZS5jCkBAIC0x MTQsNyArMTE0LDcgQEAgaW50IHN5c2ZzX3NldGF0dHIoc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBz dHJ1Y3QgaWF0dHIgKmlhdHRyKQogCQlyZXR1cm4gLUVJTlZBTDsKIAogCW11dGV4X2xvY2soJnN5 c2ZzX211dGV4KTsKLQllcnJvciA9IGlub2RlX2NoYW5nZV9vayhpbm9kZSwgaWF0dHIpOworCWVy cm9yID0gc2V0YXR0cl9wcmVwYXJlKGRlbnRyeSwgaWF0dHIpOwogCWlmIChlcnJvcikKIAkJZ290 byBvdXQ7CiAKZGlmZiAtLWdpdCBhL2ZzL3N5c3YvZmlsZS5jIGIvZnMvc3lzdi9maWxlLmMKaW5k ZXggMGE2NTkzOTUwOGU5Li5lNDhmZTI1ODQ3OWYgMTAwNjQ0Ci0tLSBhL2ZzL3N5c3YvZmlsZS5j CisrKyBiL2ZzL3N5c3YvZmlsZS5jCkBAIC0zNSw3ICszNSw3IEBAIHN0YXRpYyBpbnQgc3lzdl9z ZXRhdHRyKHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgc3RydWN0IGlhdHRyICphdHRyKQogCXN0cnVj dCBpbm9kZSAqaW5vZGUgPSBkZW50cnktPmRfaW5vZGU7CiAJaW50IGVycm9yOwogCi0JZXJyb3Ig PSBpbm9kZV9jaGFuZ2Vfb2soaW5vZGUsIGF0dHIpOworCWVycm9yID0gc2V0YXR0cl9wcmVwYXJl KGRlbnRyeSwgYXR0cik7CiAJaWYgKGVycm9yKQogCQlyZXR1cm4gZXJyb3I7CiAKZGlmZiAtLWdp dCBhL2ZzL3ViaWZzL2ZpbGUuYyBiL2ZzL3ViaWZzL2ZpbGUuYwppbmRleCA5ZGY2MjE3OTVlZDIu LjNjYzkwNjdiNzE0ZSAxMDA2NDQKLS0tIGEvZnMvdWJpZnMvZmlsZS5jCisrKyBiL2ZzL3ViaWZz L2ZpbGUuYwpAQCAtMTI2MCw3ICsxMjYwLDcgQEAgaW50IHViaWZzX3NldGF0dHIoc3RydWN0IGRl bnRyeSAqZGVudHJ5LCBzdHJ1Y3QgaWF0dHIgKmF0dHIpCiAKIAlkYmdfZ2VuKCJpbm8gJWx1LCBt b2RlICUjeCwgaWFfdmFsaWQgJSN4IiwKIAkJaW5vZGUtPmlfaW5vLCBpbm9kZS0+aV9tb2RlLCBh dHRyLT5pYV92YWxpZCk7Ci0JZXJyID0gaW5vZGVfY2hhbmdlX29rKGlub2RlLCBhdHRyKTsKKwll cnIgPSBzZXRhdHRyX3ByZXBhcmUoZGVudHJ5LCBhdHRyKTsKIAlpZiAoZXJyKQogCQlyZXR1cm4g ZXJyOwogCmRpZmYgLS1naXQgYS9mcy91Ymlmcy90bmNfY29tbWl0LmMgYi9mcy91Ymlmcy90bmNf Y29tbWl0LmMKaW5kZXggNGMxNWYwN2E4YmIyLi5mZjEwOGRiMTZiNzUgMTAwNjQ0Ci0tLSBhL2Zz L3ViaWZzL3RuY19jb21taXQuYworKysgYi9mcy91Ymlmcy90bmNfY29tbWl0LmMKQEAgLTM3Myw3 ICszNzMsNyBAQCBzdGF0aWMgaW50IGxheW91dF9pbl9nYXBzKHN0cnVjdCB1Ymlmc19pbmZvICpj LCBpbnQgY250KQogCiAJcCA9IGMtPmdhcF9sZWJzOwogCWRvIHsKLQkJdWJpZnNfYXNzZXJ0KHAg PCBjLT5nYXBfbGVicyArIHNpemVvZihpbnQpICogYy0+bHN0LmlkeF9sZWJzKTsKKwkJdWJpZnNf YXNzZXJ0KHAgPCBjLT5nYXBfbGVicyArIGMtPmxzdC5pZHhfbGVicyk7CiAJCXdyaXR0ZW4gPSBs YXlvdXRfbGViX2luX2dhcHMoYywgcCk7CiAJCWlmICh3cml0dGVuIDwgMCkgewogCQkJZXJyID0g d3JpdHRlbjsKZGlmZiAtLWdpdCBhL2ZzL3VkZi9maWxlLmMgYi9mcy91ZGYvZmlsZS5jCmluZGV4 IDg3NGM5ZTNjMDY4Ni4uMjZmOWI1MjA2YTc4IDEwMDY0NAotLS0gYS9mcy91ZGYvZmlsZS5jCisr KyBiL2ZzL3VkZi9maWxlLmMKQEAgLTI1MSw3ICsyNTEsNyBAQCBzdGF0aWMgaW50IHVkZl9zZXRh dHRyKHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgc3RydWN0IGlhdHRyICphdHRyKQogCXN0cnVjdCBp bm9kZSAqaW5vZGUgPSBkZW50cnktPmRfaW5vZGU7CiAJaW50IGVycm9yOwogCi0JZXJyb3IgPSBp bm9kZV9jaGFuZ2Vfb2soaW5vZGUsIGF0dHIpOworCWVycm9yID0gc2V0YXR0cl9wcmVwYXJlKGRl bnRyeSwgYXR0cik7CiAJaWYgKGVycm9yKQogCQlyZXR1cm4gZXJyb3I7CiAKZGlmZiAtLWdpdCBh L2ZzL3Vmcy90cnVuY2F0ZS5jIGIvZnMvdWZzL3RydW5jYXRlLmMKaW5kZXggZjA0Zjg5ZmJkNGQ5 Li45MmNkZTk5OGFlYWQgMTAwNjQ0Ci0tLSBhL2ZzL3Vmcy90cnVuY2F0ZS5jCisrKyBiL2ZzL3Vm cy90cnVuY2F0ZS5jCkBAIC00OTYsNyArNDk2LDcgQEAgaW50IHVmc19zZXRhdHRyKHN0cnVjdCBk ZW50cnkgKmRlbnRyeSwgc3RydWN0IGlhdHRyICphdHRyKQogCXVuc2lnbmVkIGludCBpYV92YWxp ZCA9IGF0dHItPmlhX3ZhbGlkOwogCWludCBlcnJvcjsKIAotCWVycm9yID0gaW5vZGVfY2hhbmdl X29rKGlub2RlLCBhdHRyKTsKKwllcnJvciA9IHNldGF0dHJfcHJlcGFyZShkZW50cnksIGF0dHIp OwogCWlmIChlcnJvcikKIAkJcmV0dXJuIGVycm9yOwogCmRpZmYgLS1naXQgYS9mcy91dGltZXMu YyBiL2ZzL3V0aW1lcy5jCmluZGV4IGJhNjUzZjNkYzFiYy4uY2M0MjhiMjFkNzg5IDEwMDY0NAot LS0gYS9mcy91dGltZXMuYworKysgYi9mcy91dGltZXMuYwpAQCAtODAsNyArODAsNyBAQCBzdGF0 aWMgaW50IHV0aW1lc19jb21tb24oc3RydWN0IHBhdGggKnBhdGgsIHN0cnVjdCB0aW1lc3BlYyAq dGltZXMpCiAJCQluZXdhdHRycy5pYV92YWxpZCB8PSBBVFRSX01USU1FX1NFVDsKIAkJfQogCQkv KgotCQkgKiBUZWxsIGlub2RlX2NoYW5nZV9vaygpLCB0aGF0IHRoaXMgaXMgYW4gZXhwbGljaXQg dGltZQorCQkgKiBUZWxsIHNldGF0dHJfcHJlcGFyZSgpLCB0aGF0IHRoaXMgaXMgYW4gZXhwbGlj aXQgdGltZQogCQkgKiB1cGRhdGUsIGV2ZW4gaWYgbmVpdGhlciBBVFRSX0FUSU1FX1NFVCBub3Ig QVRUUl9NVElNRV9TRVQKIAkJICogd2VyZSB1c2VkLgogCQkgKi8KQEAgLTg5LDcgKzg5LDcgQEAg c3RhdGljIGludCB1dGltZXNfY29tbW9uKHN0cnVjdCBwYXRoICpwYXRoLCBzdHJ1Y3QgdGltZXNw ZWMgKnRpbWVzKQogCQkvKgogCQkgKiBJZiB0aW1lcyBpcyBOVUxMIChvciBib3RoIHRpbWVzIGFy ZSBVVElNRV9OT1cpLAogCQkgKiB0aGVuIHdlIG5lZWQgdG8gY2hlY2sgcGVybWlzc2lvbnMsIGJl Y2F1c2UKLQkJICogaW5vZGVfY2hhbmdlX29rKCkgd29uJ3QgZG8gaXQuCisJCSAqIHNldGF0dHJf cHJlcGFyZSgpIHdvbid0IGRvIGl0LgogCQkgKi8KIAkJZXJyb3IgPSAtRUFDQ0VTOwogICAgICAg ICAgICAgICAgIGlmIChJU19JTU1VVEFCTEUoaW5vZGUpKQpkaWZmIC0tZ2l0IGEvZnMveGZzL3hm c19hY2wuYyBiL2ZzL3hmcy94ZnNfYWNsLmMKaW5kZXggYWM3MDJhNmVhYjliLi5lYmVkNWE4MjVh NTggMTAwNjQ0Ci0tLSBhL2ZzL3hmcy94ZnNfYWNsLmMKKysrIGIvZnMveGZzL3hmc19hY2wuYwpA QCAtMjIzLDcgKzIyMyw3IEBAIHhmc19zZXRfYWNsKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGludCB0 eXBlLCBzdHJ1Y3QgcG9zaXhfYWNsICphY2wpCiB9CiAKIHN0YXRpYyBpbnQKLXhmc19zZXRfbW9k ZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCB1bW9kZV90IG1vZGUpCit4ZnNfc2V0X21vZGUoc3RydWN0 IGRlbnRyeSAqZGVudHJ5LCBzdHJ1Y3QgaW5vZGUgKmlub2RlLCB1bW9kZV90IG1vZGUpCiB7CiAJ aW50IGVycm9yID0gMDsKIApAQCAtMjM0LDcgKzIzNCw4IEBAIHhmc19zZXRfbW9kZShzdHJ1Y3Qg aW5vZGUgKmlub2RlLCB1bW9kZV90IG1vZGUpCiAJCWlhdHRyLmlhX21vZGUgPSBtb2RlOwogCQlp YXR0ci5pYV9jdGltZSA9IGN1cnJlbnRfZnNfdGltZShpbm9kZS0+aV9zYik7CiAKLQkJZXJyb3Ig PSAteGZzX3NldGF0dHJfbm9uc2l6ZShYRlNfSShpbm9kZSksICZpYXR0ciwgWEZTX0FUVFJfTk9B Q0wpOworCQllcnJvciA9IC14ZnNfc2V0YXR0cl9ub25zaXplKGRlbnRyeSwgWEZTX0koaW5vZGUp LCAmaWF0dHIsCisJCQkJCSAgICAgWEZTX0FUVFJfTk9BQ0wpOwogCX0KIAogCXJldHVybiBlcnJv cjsKQEAgLTI5MCw3ICsyOTEsNyBAQCB4ZnNfaW5oZXJpdF9hY2woc3RydWN0IGlub2RlICppbm9k ZSwgc3RydWN0IHBvc2l4X2FjbCAqYWNsKQogCWlmIChlcnJvciA+IDApCiAJCWluaGVyaXQgPSAx OwogCi0JZXJyb3IgPSB4ZnNfc2V0X21vZGUoaW5vZGUsIG1vZGUpOworCWVycm9yID0geGZzX3Nl dF9tb2RlKE5VTEwsIGlub2RlLCBtb2RlKTsKIAlpZiAoZXJyb3IpCiAJCWdvdG8gb3V0OwogCkBA IC0zODMsMTggKzM4NCwxNSBAQCB4ZnNfeGF0dHJfYWNsX3NldChzdHJ1Y3QgZGVudHJ5ICpkZW50 cnksIGNvbnN0IGNoYXIgKm5hbWUsCiAJCWdvdG8gb3V0X3JlbGVhc2U7CiAKIAlpZiAodHlwZSA9 PSBBQ0xfVFlQRV9BQ0NFU1MpIHsKLQkJdW1vZGVfdCBtb2RlID0gaW5vZGUtPmlfbW9kZTsKLQkJ ZXJyb3IgPSBwb3NpeF9hY2xfZXF1aXZfbW9kZShhY2wsICZtb2RlKTsKKwkJc3RydWN0IHBvc2l4 X2FjbCAqc2F2ZWRfYWNsID0gYWNsOworCQl1bW9kZV90IG1vZGU7CiAKLQkJaWYgKGVycm9yIDw9 IDApIHsKLQkJCXBvc2l4X2FjbF9yZWxlYXNlKGFjbCk7Ci0JCQlhY2wgPSBOVUxMOwotCi0JCQlp ZiAoZXJyb3IgPCAwKQotCQkJCXJldHVybiBlcnJvcjsKLQkJfQotCi0JCWVycm9yID0geGZzX3Nl dF9tb2RlKGlub2RlLCBtb2RlKTsKKwkJZXJyb3IgPSBwb3NpeF9hY2xfdXBkYXRlX21vZGUoaW5v ZGUsICZtb2RlLCAmYWNsKTsKKwkJaWYgKGVycm9yIHx8IGFjbCA9PSBOVUxMKQorCQkJcG9zaXhf YWNsX3JlbGVhc2Uoc2F2ZWRfYWNsKTsKKwkJaWYgKGVycm9yKQorCQkJcmV0dXJuIGVycm9yOwor CQllcnJvciA9IHhmc19zZXRfbW9kZShkZW50cnksIGlub2RlLCBtb2RlKTsKIAkJaWYgKGVycm9y KQogCQkJZ290byBvdXRfcmVsZWFzZTsKIAl9CmRpZmYgLS1naXQgYS9mcy94ZnMveGZzX2ZpbGUu YyBiL2ZzL3hmcy94ZnNfZmlsZS5jCmluZGV4IDhhZTkzN2ExOGRhMy4uYmExZDQ3NzllY2U2IDEw MDY0NAotLS0gYS9mcy94ZnMveGZzX2ZpbGUuYworKysgYi9mcy94ZnMveGZzX2ZpbGUuYwpAQCAt MTAyNiw3ICsxMDI2LDggQEAgeGZzX2ZpbGVfZmFsbG9jYXRlKAogCWlmIChmaWxlLT5mX2ZsYWdz ICYgT19EU1lOQykKIAkJYXR0cl9mbGFncyB8PSBYRlNfQVRUUl9TWU5DOwogCi0JZXJyb3IgPSAt eGZzX2NoYW5nZV9maWxlX3NwYWNlKGlwLCBjbWQsICZiZiwgMCwgYXR0cl9mbGFncyk7CisJZXJy b3IgPSAteGZzX2NoYW5nZV9maWxlX3NwYWNlKGZpbGUtPmZfZGVudHJ5LCBjbWQsICZiZiwgMCwK KwkJCQkgICAgICAgYXR0cl9mbGFncyk7CiAJaWYgKGVycm9yKQogCQlnb3RvIG91dF91bmxvY2s7 CiAKQEAgLTEwMzYsNyArMTAzNyw4IEBAIHhmc19maWxlX2ZhbGxvY2F0ZSgKIAogCQlpYXR0ci5p YV92YWxpZCA9IEFUVFJfU0laRTsKIAkJaWF0dHIuaWFfc2l6ZSA9IG5ld19zaXplOwotCQllcnJv ciA9IC14ZnNfc2V0YXR0cl9zaXplKGlwLCAmaWF0dHIsIFhGU19BVFRSX05PTE9DSyk7CisJCWVy cm9yID0gLXhmc19zZXRhdHRyX3NpemUoZmlsZS0+Zl9kZW50cnksICZpYXR0ciwKKwkJCQkJICBY RlNfQVRUUl9OT0xPQ0spOwogCX0KIAogb3V0X3VubG9jazoKZGlmZiAtLWdpdCBhL2ZzL3hmcy94 ZnNfaW9jdGwuYyBiL2ZzL3hmcy94ZnNfaW9jdGwuYwppbmRleCBlYjUxOWRlNjgwNDcuLjVhMjEz Yzk2ZDUxZiAxMDA2NDQKLS0tIGEvZnMveGZzL3hmc19pb2N0bC5jCisrKyBiL2ZzL3hmcy94ZnNf aW9jdGwuYwpAQCAtNjMyLDcgKzYzMiw4IEBAIHhmc19pb2Nfc3BhY2UoCiAJaWYgKGlvZmxhZ3Mg JiBJT19JTlZJUykKIAkJYXR0cl9mbGFncyB8PSBYRlNfQVRUUl9ETUk7CiAKLQllcnJvciA9IHhm c19jaGFuZ2VfZmlsZV9zcGFjZShpcCwgY21kLCBiZiwgZmlscC0+Zl9wb3MsIGF0dHJfZmxhZ3Mp OworCWVycm9yID0geGZzX2NoYW5nZV9maWxlX3NwYWNlKGZpbHAtPmZfZGVudHJ5LCBjbWQsIGJm LCBmaWxwLT5mX3BvcywKKwkJCQkgICAgICBhdHRyX2ZsYWdzKTsKIAlyZXR1cm4gLWVycm9yOwog fQogCmRpZmYgLS1naXQgYS9mcy94ZnMveGZzX2lvcHMuYyBiL2ZzL3hmcy94ZnNfaW9wcy5jCmlu ZGV4IDFjMDFmMDRmNDZkMi4uYTIwMzc4ZTM0MTIyIDEwMDY0NAotLS0gYS9mcy94ZnMveGZzX2lv cHMuYworKysgYi9mcy94ZnMveGZzX2lvcHMuYwpAQCAtNTMxLDYgKzUzMSw3IEBAIHhmc19zZXRh dHRyX21vZGUoCiAKIGludAogeGZzX3NldGF0dHJfbm9uc2l6ZSgKKwlzdHJ1Y3QgZGVudHJ5CQkq ZGVudHJ5LAogCXN0cnVjdCB4ZnNfaW5vZGUJKmlwLAogCXN0cnVjdCBpYXR0cgkJKmlhdHRyLAog CWludAkJCWZsYWdzKQpAQCAtNTUzLDkgKzU1NCwxNSBAQCB4ZnNfc2V0YXR0cl9ub25zaXplKAog CWlmIChYRlNfRk9SQ0VEX1NIVVRET1dOKG1wKSkKIAkJcmV0dXJuIFhGU19FUlJPUihFSU8pOwog Ci0JZXJyb3IgPSAtaW5vZGVfY2hhbmdlX29rKGlub2RlLCBpYXR0cik7Ci0JaWYgKGVycm9yKQot CQlyZXR1cm4gWEZTX0VSUk9SKGVycm9yKTsKKwkvKgorCSAqIGRlbnRyeSBjYW4gYmUgTlVMTCBv bmx5IHdoZW4gd2UncmUgY2FsbGVkIGZyb20geGZzX2luaGVyaXRfYWNsKCksCisJICogaW4gd2hp Y2ggY2FzZSBubyBwZXJtaXNzaW9uIGNoZWNrcyBhcmUgbmVlZGVkCisJICovCisJaWYgKGRlbnRy eSkgeworCQllcnJvciA9IC1zZXRhdHRyX3ByZXBhcmUoZGVudHJ5LCBpYXR0cik7CisJCWlmIChl cnJvcikKKwkJCXJldHVybiBYRlNfRVJST1IoZXJyb3IpOworCX0KIAogCUFTU0VSVCgobWFzayAm IEFUVFJfU0laRSkgPT0gMCk7CiAKQEAgLTc1NSwxMiArNzYyLDEzIEBAIG91dF9kcXJlbGU6CiAg Ki8KIGludAogeGZzX3NldGF0dHJfc2l6ZSgKLQlzdHJ1Y3QgeGZzX2lub2RlCSppcCwKKwlzdHJ1 Y3QgZGVudHJ5CQkqZGVudHJ5LAogCXN0cnVjdCBpYXR0cgkJKmlhdHRyLAogCWludAkJCWZsYWdz KQogeworCXN0cnVjdCBpbm9kZQkJKmlub2RlID0gZGVudHJ5LT5kX2lub2RlOworCXN0cnVjdCB4 ZnNfaW5vZGUJKmlwID0gWEZTX0koaW5vZGUpOwogCXN0cnVjdCB4ZnNfbW91bnQJKm1wID0gaXAt PmlfbW91bnQ7Ci0Jc3RydWN0IGlub2RlCQkqaW5vZGUgPSBWRlNfSShpcCk7CiAJaW50CQkJbWFz ayA9IGlhdHRyLT5pYV92YWxpZDsKIAlzdHJ1Y3QgeGZzX3RyYW5zCSp0cDsKIAlpbnQJCQllcnJv cjsKQEAgLTc3Niw3ICs3ODQsNyBAQCB4ZnNfc2V0YXR0cl9zaXplKAogCWlmIChYRlNfRk9SQ0VE X1NIVVRET1dOKG1wKSkKIAkJcmV0dXJuIFhGU19FUlJPUihFSU8pOwogCi0JZXJyb3IgPSAtaW5v ZGVfY2hhbmdlX29rKGlub2RlLCBpYXR0cik7CisJZXJyb3IgPSAtc2V0YXR0cl9wcmVwYXJlKGRl bnRyeSwgaWF0dHIpOwogCWlmIChlcnJvcikKIAkJcmV0dXJuIFhGU19FUlJPUihlcnJvcik7CiAK QEAgLTgwMiw3ICs4MTAsNyBAQCB4ZnNfc2V0YXR0cl9zaXplKAogCQkgKi8KIAkJeGZzX2l1bmxv Y2soaXAsIGxvY2tfZmxhZ3MpOwogCQlpYXR0ci0+aWFfdmFsaWQgJj0gfkFUVFJfU0laRTsKLQkJ cmV0dXJuIHhmc19zZXRhdHRyX25vbnNpemUoaXAsIGlhdHRyLCAwKTsKKwkJcmV0dXJuIHhmc19z ZXRhdHRyX25vbnNpemUoZGVudHJ5LCBpcCwgaWF0dHIsIDApOwogCX0KIAogCS8qCkBAIC05NTAs OCArOTU4LDggQEAgeGZzX3ZuX3NldGF0dHIoCiAJc3RydWN0IGlhdHRyCSppYXR0cikKIHsKIAlp ZiAoaWF0dHItPmlhX3ZhbGlkICYgQVRUUl9TSVpFKQotCQlyZXR1cm4gLXhmc19zZXRhdHRyX3Np emUoWEZTX0koZGVudHJ5LT5kX2lub2RlKSwgaWF0dHIsIDApOwotCXJldHVybiAteGZzX3NldGF0 dHJfbm9uc2l6ZShYRlNfSShkZW50cnktPmRfaW5vZGUpLCBpYXR0ciwgMCk7CisJCXJldHVybiAt eGZzX3NldGF0dHJfc2l6ZShkZW50cnksIGlhdHRyLCAwKTsKKwlyZXR1cm4gLXhmc19zZXRhdHRy X25vbnNpemUoZGVudHJ5LCBYRlNfSShkZW50cnktPmRfaW5vZGUpLCBpYXR0ciwgMCk7CiB9CiAK ICNkZWZpbmUgWEZTX0ZJRU1BUF9GTEFHUwkoRklFTUFQX0ZMQUdfU1lOQ3xGSUVNQVBfRkxBR19Y QVRUUikKZGlmZiAtLWdpdCBhL2ZzL3hmcy94ZnNfdm5vZGVvcHMuYyBiL2ZzL3hmcy94ZnNfdm5v ZGVvcHMuYwppbmRleCBlZTk4ZDBiZjBmNmEuLmZlYjllNzU1NjgyOSAxMDA2NDQKLS0tIGEvZnMv eGZzL3hmc192bm9kZW9wcy5jCisrKyBiL2ZzL3hmcy94ZnNfdm5vZGVvcHMuYwpAQCAtMjIzNCwx MiArMjIzNCwxMyBAQCB4ZnNfZnJlZV9maWxlX3NwYWNlKAogICovCiBpbnQKIHhmc19jaGFuZ2Vf ZmlsZV9zcGFjZSgKLQl4ZnNfaW5vZGVfdAkqaXAsCisJc3RydWN0IGRlbnRyeQkqZGVudHJ5LAog CWludAkJY21kLAogCXhmc19mbG9jazY0X3QJKmJmLAogCXhmc19vZmZfdAlvZmZzZXQsCiAJaW50 CQlhdHRyX2ZsYWdzKQogeworCXhmc19pbm9kZV90CSppcCA9IFhGU19JKGRlbnRyeS0+ZF9pbm9k ZSk7CiAJeGZzX21vdW50X3QJKm1wID0gaXAtPmlfbW91bnQ7CiAJaW50CQljbHJwcmVhbGxvYzsK IAlpbnQJCWVycm9yOwpAQCAtMjMyOSw3ICsyMzMwLDcgQEAgeGZzX2NoYW5nZV9maWxlX3NwYWNl KAogCQlpYXR0ci5pYV92YWxpZCA9IEFUVFJfU0laRTsKIAkJaWF0dHIuaWFfc2l6ZSA9IHN0YXJ0 b2Zmc2V0OwogCi0JCWVycm9yID0geGZzX3NldGF0dHJfc2l6ZShpcCwgJmlhdHRyLCBhdHRyX2Zs YWdzKTsKKwkJZXJyb3IgPSB4ZnNfc2V0YXR0cl9zaXplKGRlbnRyeSwgJmlhdHRyLCBhdHRyX2Zs YWdzKTsKIAogCQlpZiAoZXJyb3IpCiAJCQlyZXR1cm4gZXJyb3I7CmRpZmYgLS1naXQgYS9mcy94 ZnMveGZzX3Zub2Rlb3BzLmggYi9mcy94ZnMveGZzX3Zub2Rlb3BzLmgKaW5kZXggYzBmNzcxNGI5 OGQwLi45MzhjNDI2N2Q0NGIgMTAwNjQ0Ci0tLSBhL2ZzL3hmcy94ZnNfdm5vZGVvcHMuaAorKysg Yi9mcy94ZnMveGZzX3Zub2Rlb3BzLmgKQEAgLTEzLDggKzEzLDkgQEAgc3RydWN0IHhmc19pbm9k ZTsKIHN0cnVjdCB4ZnNfaW9tYXA7CiAKIAotaW50IHhmc19zZXRhdHRyX25vbnNpemUoc3RydWN0 IHhmc19pbm9kZSAqaXAsIHN0cnVjdCBpYXR0ciAqdmFwLCBpbnQgZmxhZ3MpOwotaW50IHhmc19z ZXRhdHRyX3NpemUoc3RydWN0IHhmc19pbm9kZSAqaXAsIHN0cnVjdCBpYXR0ciAqdmFwLCBpbnQg ZmxhZ3MpOworaW50IHhmc19zZXRhdHRyX25vbnNpemUoc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBz dHJ1Y3QgeGZzX2lub2RlICppcCwKKwkJCXN0cnVjdCBpYXR0ciAqdmFwLCBpbnQgZmxhZ3MpOwor aW50IHhmc19zZXRhdHRyX3NpemUoc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBzdHJ1Y3QgaWF0dHIg KnZhcCwgaW50IGZsYWdzKTsKICNkZWZpbmUJWEZTX0FUVFJfRE1JCQkweDAxCS8qIGludm9jYXRp b24gZnJvbSBhIERNSSBmdW5jdGlvbiAqLwogI2RlZmluZQlYRlNfQVRUUl9OT05CTE9DSwkweDAy CS8qIHJldHVybiBFQUdBSU4gaWYgb3BlcmF0aW9uIHdvdWxkIGJsb2NrICovCiAjZGVmaW5lIFhG U19BVFRSX05PTE9DSwkJMHgwNAkvKiBEb24ndCBncmFiIGFueSBjb25mbGljdGluZyBsb2NrcyAq LwpAQCAtMzcsNyArMzgsNyBAQCBpbnQgeGZzX3JlYWRkaXIoc3RydWN0IHhmc19pbm9kZQkqZHAs IHZvaWQgKmRpcmVudCwgc2l6ZV90IGJ1ZnNpemUsCiBpbnQgeGZzX3N5bWxpbmsoc3RydWN0IHhm c19pbm9kZSAqZHAsIHN0cnVjdCB4ZnNfbmFtZSAqbGlua19uYW1lLAogCQljb25zdCBjaGFyICp0 YXJnZXRfcGF0aCwgbW9kZV90IG1vZGUsIHN0cnVjdCB4ZnNfaW5vZGUgKippcHApOwogaW50IHhm c19zZXRfZG1hdHRycyhzdHJ1Y3QgeGZzX2lub2RlICppcCwgdV9pbnQgZXZtYXNrLCB1X2ludDE2 X3Qgc3RhdGUpOwotaW50IHhmc19jaGFuZ2VfZmlsZV9zcGFjZShzdHJ1Y3QgeGZzX2lub2RlICpp cCwgaW50IGNtZCwKK2ludCB4ZnNfY2hhbmdlX2ZpbGVfc3BhY2Uoc3RydWN0IGRlbnRyeSAqZGVu dHJ5LCBpbnQgY21kLAogCQl4ZnNfZmxvY2s2NF90ICpiZiwgeGZzX29mZl90IG9mZnNldCwgaW50 IGF0dHJfZmxhZ3MpOwogaW50IHhmc19yZW5hbWUoc3RydWN0IHhmc19pbm9kZSAqc3JjX2RwLCBz dHJ1Y3QgeGZzX25hbWUgKnNyY19uYW1lLAogCQlzdHJ1Y3QgeGZzX2lub2RlICpzcmNfaXAsIHN0 cnVjdCB4ZnNfaW5vZGUgKnRhcmdldF9kcCwKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWdlbmVy aWMvdWFjY2Vzcy5oIGIvaW5jbHVkZS9hc20tZ2VuZXJpYy91YWNjZXNzLmgKaW5kZXggYWM2OGM5 OTliNmMyLi41YmEyYzQ1NzBiZDMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvYXNtLWdlbmVyaWMvdWFj Y2Vzcy5oCisrKyBiL2luY2x1ZGUvYXNtLWdlbmVyaWMvdWFjY2Vzcy5oCkBAIC0yMjEsMTMgKzIy MSwxNyBAQCBleHRlcm4gaW50IF9fcHV0X3VzZXJfYmFkKHZvaWQpIF9fYXR0cmlidXRlX18oKG5v cmV0dXJuKSk7CiAJbWlnaHRfc2xlZXAoKTsJCQkJCQlcCiAJYWNjZXNzX29rKFZFUklGWV9SRUFE LCBwdHIsIHNpemVvZigqcHRyKSkgPwkJXAogCQlfX2dldF91c2VyKHgsIHB0cikgOgkJCQlcCi0J CS1FRkFVTFQ7CQkJCQlcCisJCSgoeCkgPSAoX190eXBlb2ZfXygqKHB0cikpKTAsLUVGQVVMVCk7 CQlcCiB9KQogCiBzdGF0aWMgaW5saW5lIGludCBfX2dldF91c2VyX2ZuKHNpemVfdCBzaXplLCBj b25zdCB2b2lkIF9fdXNlciAqcHRyLCB2b2lkICp4KQogewotCXNpemUgPSBfX2NvcHlfZnJvbV91 c2VyKHgsIHB0ciwgc2l6ZSk7Ci0JcmV0dXJuIHNpemUgPyAtRUZBVUxUIDogc2l6ZTsKKwlzaXpl X3QgbiA9IF9fY29weV9mcm9tX3VzZXIoeCwgcHRyLCBzaXplKTsKKwlpZiAodW5saWtlbHkobikp IHsKKwkJbWVtc2V0KHggKyAoc2l6ZSAtIG4pLCAwLCBuKTsKKwkJcmV0dXJuIC1FRkFVTFQ7CisJ fQorCXJldHVybiAwOwogfQogCiBleHRlcm4gaW50IF9fZ2V0X3VzZXJfYmFkKHZvaWQpIF9fYXR0 cmlidXRlX18oKG5vcmV0dXJuKSk7CkBAIC0yNDMsMTEgKzI0NywxMyBAQCBleHRlcm4gaW50IF9f Z2V0X3VzZXJfYmFkKHZvaWQpIF9fYXR0cmlidXRlX18oKG5vcmV0dXJuKSk7CiBzdGF0aWMgaW5s aW5lIGxvbmcgY29weV9mcm9tX3VzZXIodm9pZCAqdG8sCiAJCWNvbnN0IHZvaWQgX191c2VyICog ZnJvbSwgdW5zaWduZWQgbG9uZyBuKQogeworCXVuc2lnbmVkIGxvbmcgcmVzID0gbjsKIAltaWdo dF9zbGVlcCgpOwotCWlmIChhY2Nlc3Nfb2soVkVSSUZZX1JFQUQsIGZyb20sIG4pKQotCQlyZXR1 cm4gX19jb3B5X2Zyb21fdXNlcih0bywgZnJvbSwgbik7Ci0JZWxzZQotCQlyZXR1cm4gbjsKKwlp ZiAobGlrZWx5KGFjY2Vzc19vayhWRVJJRllfUkVBRCwgZnJvbSwgbikpKQorCQlyZXMgPSBfX2Nv cHlfZnJvbV91c2VyKHRvLCBmcm9tLCBuKTsKKwlpZiAodW5saWtlbHkocmVzKSkKKwkJbWVtc2V0 KHRvICsgKG4gLSByZXMpLCAwLCByZXMpOworCXJldHVybiByZXM7CiB9CiAKIHN0YXRpYyBpbmxp bmUgbG9uZyBjb3B5X3RvX3VzZXIodm9pZCBfX3VzZXIgKnRvLApkaWZmIC0tZ2l0IGEvaW5jbHVk ZS9saW51eC9iY21hL2JjbWEuaCBiL2luY2x1ZGUvbGludXgvYmNtYS9iY21hLmgKaW5kZXggNGQ0 YjU5ZGU5NDY3Li43NTUzNzg5Yjk3MjkgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvYmNtYS9i Y21hLmgKKysrIGIvaW5jbHVkZS9saW51eC9iY21hL2JjbWEuaApAQCAtMTI0LDYgKzEyNCw3IEBA IHN0cnVjdCBiY21hX2hvc3Rfb3BzIHsKICNkZWZpbmUgQkNNQV9DT1JFX0RFRkFVTFQJCTB4RkZG CiAKICNkZWZpbmUgQkNNQV9NQVhfTlJfQ09SRVMJCTE2CisjZGVmaW5lIEJDTUFfQ09SRV9TSVpF CQkJMHgxMDAwCiAKIHN0cnVjdCBiY21hX2RldmljZSB7CiAJc3RydWN0IGJjbWFfYnVzICpidXM7 CmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2JjbWEvYmNtYV9yZWdzLmggYi9pbmNsdWRlL2xp bnV4L2JjbWEvYmNtYV9yZWdzLmgKaW5kZXggOWZhYWUyYWUwMmU4Li5iNjQ0ZDQzOTJlNDMgMTAw NjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvYmNtYS9iY21hX3JlZ3MuaAorKysgYi9pbmNsdWRlL2xp bnV4L2JjbWEvYmNtYV9yZWdzLmgKQEAgLTM1LDYgKzM1LDcgQEAKICNkZWZpbmUgIEJDTUFfSU9T VF9CSVNUX0RPTkUJCTB4ODAwMAogI2RlZmluZSBCQ01BX1JFU0VUX0NUTAkJCTB4MDgwMAogI2Rl ZmluZSAgQkNNQV9SRVNFVF9DVExfUkVTRVQJCTB4MDAwMQorI2RlZmluZSBCQ01BX1JFU0VUX1NU CQkJMHgwODA0CiAKIC8qIEJDTUEgUENJIGNvbmZpZyBzcGFjZSByZWdpc3RlcnMuICovCiAjZGVm aW5lIEJDTUFfUENJX1BNQ1NSCQkJMHg0NApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9jYW4v ZGV2LmggYi9pbmNsdWRlL2xpbnV4L2Nhbi9kZXYuaAppbmRleCBhMDk2OWZjYjcyYjkuLjMwOWQy YWEzZGZkOCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9jYW4vZGV2LmgKKysrIGIvaW5jbHVk ZS9saW51eC9jYW4vZGV2LmgKQEAgLTMwLDYgKzMwLDcgQEAgZW51bSBjYW5fbW9kZSB7CiAgKiBD QU4gY29tbW9uIHByaXZhdGUgZGF0YQogICovCiBzdHJ1Y3QgY2FuX3ByaXYgeworCXN0cnVjdCBu ZXRfZGV2aWNlICpkZXY7CiAJc3RydWN0IGNhbl9kZXZpY2Vfc3RhdHMgY2FuX3N0YXRzOwogCiAJ c3RydWN0IGNhbl9iaXR0aW1pbmcgYml0dGltaW5nOwpAQCAtNDEsNyArNDIsNyBAQCBzdHJ1Y3Qg Y2FuX3ByaXYgewogCXUzMiBjdHJsbW9kZV9zdXBwb3J0ZWQ7CiAKIAlpbnQgcmVzdGFydF9tczsK LQlzdHJ1Y3QgdGltZXJfbGlzdCByZXN0YXJ0X3RpbWVyOworCXN0cnVjdCBkZWxheWVkX3dvcmsg cmVzdGFydF93b3JrOwogCiAJaW50ICgqZG9fc2V0X2JpdHRpbWluZykoc3RydWN0IG5ldF9kZXZp Y2UgKmRldik7CiAJaW50ICgqZG9fc2V0X21vZGUpKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGVu dW0gY2FuX21vZGUgbW9kZSk7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2ZzLmggYi9pbmNs dWRlL2xpbnV4L2ZzLmgKaW5kZXggYTUwOWJlZTMwYzUwLi44YzYzZWM1OGIwMTUgMTAwNjQ0Ci0t LSBhL2luY2x1ZGUvbGludXgvZnMuaAorKysgYi9pbmNsdWRlL2xpbnV4L2ZzLmgKQEAgLTI2MTUs NyArMjYxNSw3IEBAIGV4dGVybiBpbnQgYnVmZmVyX21pZ3JhdGVfcGFnZShzdHJ1Y3QgYWRkcmVz c19zcGFjZSAqLAogI2RlZmluZSBidWZmZXJfbWlncmF0ZV9wYWdlIE5VTEwKICNlbmRpZgogCi1l eHRlcm4gaW50IGlub2RlX2NoYW5nZV9vayhjb25zdCBzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGlh dHRyICopOworZXh0ZXJuIGludCBzZXRhdHRyX3ByZXBhcmUoc3RydWN0IGRlbnRyeSAqLCBzdHJ1 Y3QgaWF0dHIgKik7CiBleHRlcm4gaW50IGlub2RlX25ld3NpemVfb2soY29uc3Qgc3RydWN0IGlu b2RlICosIGxvZmZfdCBvZmZzZXQpOwogZXh0ZXJuIHZvaWQgc2V0YXR0cl9jb3B5KHN0cnVjdCBp bm9kZSAqaW5vZGUsIGNvbnN0IHN0cnVjdCBpYXR0ciAqYXR0cik7CiAKZGlmZiAtLWdpdCBhL2lu Y2x1ZGUvbGludXgvaTgwNDIuaCBiL2luY2x1ZGUvbGludXgvaTgwNDIuaAppbmRleCBhOTg2ZmY1 ODg5NDQuLjgwMWMzMDdmNmZjYyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9pODA0Mi5oCisr KyBiL2luY2x1ZGUvbGludXgvaTgwNDIuaApAQCAtMzgsNyArMzgsNiBAQCBzdHJ1Y3Qgc2VyaW87 CiB2b2lkIGk4MDQyX2xvY2tfY2hpcCh2b2lkKTsKIHZvaWQgaTgwNDJfdW5sb2NrX2NoaXAodm9p ZCk7CiBpbnQgaTgwNDJfY29tbWFuZCh1bnNpZ25lZCBjaGFyICpwYXJhbSwgaW50IGNvbW1hbmQp OwotYm9vbCBpODA0Ml9jaGVja19wb3J0X293bmVyKGNvbnN0IHN0cnVjdCBzZXJpbyAqKTsKIGlu dCBpODA0Ml9pbnN0YWxsX2ZpbHRlcihib29sICgqZmlsdGVyKSh1bnNpZ25lZCBjaGFyIGRhdGEs IHVuc2lnbmVkIGNoYXIgc3RyLAogCQkJCQlzdHJ1Y3Qgc2VyaW8gKnNlcmlvKSk7CiBpbnQgaTgw NDJfcmVtb3ZlX2ZpbHRlcihib29sICgqZmlsdGVyKSh1bnNpZ25lZCBjaGFyIGRhdGEsIHVuc2ln bmVkIGNoYXIgc3RyLApAQCAtNTksMTEgKzU4LDYgQEAgc3RhdGljIGlubGluZSBpbnQgaTgwNDJf Y29tbWFuZCh1bnNpZ25lZCBjaGFyICpwYXJhbSwgaW50IGNvbW1hbmQpCiAJcmV0dXJuIC1FTk9E RVY7CiB9CiAKLXN0YXRpYyBpbmxpbmUgYm9vbCBpODA0Ml9jaGVja19wb3J0X293bmVyKGNvbnN0 IHN0cnVjdCBzZXJpbyAqc2VyaW8pCi17Ci0JcmV0dXJuIGZhbHNlOwotfQotCiBzdGF0aWMgaW5s aW5lIGludCBpODA0Ml9pbnN0YWxsX2ZpbHRlcihib29sICgqZmlsdGVyKSh1bnNpZ25lZCBjaGFy IGRhdGEsIHVuc2lnbmVkIGNoYXIgc3RyLAogCQkJCQlzdHJ1Y3Qgc2VyaW8gKnNlcmlvKSkKIHsK ZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbXJvdXRlLmggYi9pbmNsdWRlL2xpbnV4L21yb3V0 ZS5oCmluZGV4IDQ2Y2FhZjQ0MzM5ZC4uNGUzNjRiYjZkMWFhIDEwMDY0NAotLS0gYS9pbmNsdWRl L2xpbnV4L21yb3V0ZS5oCisrKyBiL2luY2x1ZGUvbGludXgvbXJvdXRlLmgKQEAgLTI0NSw3ICsy NDUsNyBAQCBzdHJ1Y3QgbWZjX2NhY2hlIHsKIHN0cnVjdCBydG1zZzsKIGV4dGVybiBpbnQgaXBt cl9nZXRfcm91dGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCQkJICBf X2JlMzIgc2FkZHIsIF9fYmUzMiBkYWRkciwKLQkJCSAgc3RydWN0IHJ0bXNnICpydG0sIGludCBu b3dhaXQpOworCQkJICBzdHJ1Y3QgcnRtc2cgKnJ0bSwgaW50IG5vd2FpdCwgdTMyIHBvcnRpZCk7 CiAjZW5kaWYKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L21yb3V0ZTYuaCBi L2luY2x1ZGUvbGludXgvbXJvdXRlNi5oCmluZGV4IGEzNzU5Y2IwYWMxMC4uOWIzMDE1MGM5NzNh IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L21yb3V0ZTYuaAorKysgYi9pbmNsdWRlL2xpbnV4 L21yb3V0ZTYuaApAQCAtMjI4LDcgKzIyOCw3IEBAIHN0cnVjdCBtZmM2X2NhY2hlIHsKICNpZmRl ZiBfX0tFUk5FTF9fCiBzdHJ1Y3QgcnRtc2c7CiBleHRlcm4gaW50IGlwNm1yX2dldF9yb3V0ZShz dHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IsCi0JCQkgICBzdHJ1Y3QgcnRtc2cg KnJ0bSwgaW50IG5vd2FpdCk7CisJCQkgICBzdHJ1Y3QgcnRtc2cgKnJ0bSwgaW50IG5vd2FpdCwg dTMyIHBvcnRpZCk7CiAKICNpZmRlZiBDT05GSUdfSVBWNl9NUk9VVEUKIGV4dGVybiBzdHJ1Y3Qg c29jayAqbXJvdXRlNl9zb2NrZXQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2ti KTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcG9zaXhfYWNsLmggYi9pbmNsdWRlL2xpbnV4 L3Bvc2l4X2FjbC5oCmluZGV4IGI3NjgxMTAyYTRiOS4uZGE0MzI4Njg5NTRmIDEwMDY0NAotLS0g YS9pbmNsdWRlL2xpbnV4L3Bvc2l4X2FjbC5oCisrKyBiL2luY2x1ZGUvbGludXgvcG9zaXhfYWNs LmgKQEAgLTgzLDYgKzgzLDcgQEAgZXh0ZXJuIHN0cnVjdCBwb3NpeF9hY2wgKnBvc2l4X2FjbF9m cm9tX21vZGUodW1vZGVfdCwgZ2ZwX3QpOwogZXh0ZXJuIGludCBwb3NpeF9hY2xfZXF1aXZfbW9k ZShjb25zdCBzdHJ1Y3QgcG9zaXhfYWNsICosIHVtb2RlX3QgKik7CiBleHRlcm4gaW50IHBvc2l4 X2FjbF9jcmVhdGUoc3RydWN0IHBvc2l4X2FjbCAqKiwgZ2ZwX3QsIHVtb2RlX3QgKik7CiBleHRl cm4gaW50IHBvc2l4X2FjbF9jaG1vZChzdHJ1Y3QgcG9zaXhfYWNsICoqLCBnZnBfdCwgdW1vZGVf dCk7CitleHRlcm4gaW50IHBvc2l4X2FjbF91cGRhdGVfbW9kZShzdHJ1Y3QgaW5vZGUgKiwgdW1v ZGVfdCAqLCBzdHJ1Y3QgcG9zaXhfYWNsICoqKTsKIAogZXh0ZXJuIHN0cnVjdCBwb3NpeF9hY2wg KmdldF9wb3NpeF9hY2woc3RydWN0IGlub2RlICosIGludCk7CiBleHRlcm4gaW50IHNldF9wb3Np eF9hY2woc3RydWN0IGlub2RlICosIGludCwgc3RydWN0IHBvc2l4X2FjbCAqKTsKZGlmZiAtLWdp dCBhL2luY2x1ZGUvbGludXgvc2VyaW8uaCBiL2luY2x1ZGUvbGludXgvc2VyaW8uaAppbmRleCBj YTgyODYxYjBlNDYuLjM0YjQwM2E2ZDI4NCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9zZXJp by5oCisrKyBiL2luY2x1ZGUvbGludXgvc2VyaW8uaApAQCAtMzMsNyArMzMsOCBAQCBzdHJ1Y3Qg c2VyaW8gewogCiAJc3RydWN0IHNlcmlvX2RldmljZV9pZCBpZDsKIAotCXNwaW5sb2NrX3QgbG9j azsJCS8qIHByb3RlY3RzIGNyaXRpY2FsIHNlY3Rpb25zIGZyb20gcG9ydCdzIGludGVycnVwdCBo YW5kbGVyICovCisJLyogUHJvdGVjdHMgY3JpdGljYWwgc2VjdGlvbnMgZnJvbSBwb3J0J3MgaW50 ZXJydXB0IGhhbmRsZXIgKi8KKwlzcGlubG9ja190IGxvY2s7CiAKIAlpbnQgKCp3cml0ZSkoc3Ry dWN0IHNlcmlvICosIHVuc2lnbmVkIGNoYXIpOwogCWludCAoKm9wZW4pKHN0cnVjdCBzZXJpbyAq KTsKQEAgLTQyLDE2ICs0MywyOSBAQCBzdHJ1Y3Qgc2VyaW8gewogCXZvaWQgKCpzdG9wKShzdHJ1 Y3Qgc2VyaW8gKik7CiAKIAlzdHJ1Y3Qgc2VyaW8gKnBhcmVudDsKLQlzdHJ1Y3QgbGlzdF9oZWFk IGNoaWxkX25vZGU7CS8qIEVudHJ5IGluIHBhcmVudC0+Y2hpbGRyZW4gbGlzdCAqLworCS8qIEVu dHJ5IGluIHBhcmVudC0+Y2hpbGRyZW4gbGlzdCAqLworCXN0cnVjdCBsaXN0X2hlYWQgY2hpbGRf bm9kZTsKIAlzdHJ1Y3QgbGlzdF9oZWFkIGNoaWxkcmVuOwotCXVuc2lnbmVkIGludCBkZXB0aDsJ CS8qIGxldmVsIG9mIG5lc3RpbmcgaW4gc2VyaW8gaGllcmFyY2h5ICovCisJLyogTGV2ZWwgb2Yg bmVzdGluZyBpbiBzZXJpbyBoaWVyYXJjaHkgKi8KKwl1bnNpZ25lZCBpbnQgZGVwdGg7CiAKLQlz dHJ1Y3Qgc2VyaW9fZHJpdmVyICpkcnY7CS8qIGFjY2Vzc2VkIGZyb20gaW50ZXJydXB0LCBtdXN0 IGJlIHByb3RlY3RlZCBieSBzZXJpby0+bG9jayBhbmQgc2VyaW8tPnNlbSAqLwotCXN0cnVjdCBt dXRleCBkcnZfbXV0ZXg7CQkvKiBwcm90ZWN0cyBzZXJpby0+ZHJ2IHNvIGF0dHJpYnV0ZXMgY2Fu IHBpbiBkcml2ZXIgKi8KKwkvKgorCSAqIHNlcmlvLT5kcnYgaXMgYWNjZXNzZWQgZnJvbSBpbnRl cnJ1cHQgaGFuZGxlcnM7IHdoZW4gbW9kaWZ5aW5nCisJICogY2FsbGVyIHNob3VsZCBhY3F1aXJl IHNlcmlvLT5kcnZfbXV0ZXggYW5kIHNlcmlvLT5sb2NrLgorCSAqLworCXN0cnVjdCBzZXJpb19k cml2ZXIgKmRydjsKKwkvKiBQcm90ZWN0cyBzZXJpby0+ZHJ2IHNvIGF0dHJpYnV0ZXMgY2FuIHBp biBjdXJyZW50IGRyaXZlciAqLworCXN0cnVjdCBtdXRleCBkcnZfbXV0ZXg7CiAKIAlzdHJ1Y3Qg ZGV2aWNlIGRldjsKIAogCXN0cnVjdCBsaXN0X2hlYWQgbm9kZTsKKworCS8qCisJICogRm9yIHVz ZSBieSBQUy8yIGxheWVyIHdoZW4gc2V2ZXJhbCBwb3J0cyBzaGFyZSBoYXJkd2FyZSBhbmQKKwkg KiBtYXkgZ2V0IGluZGlnZXN0aW9uIHdoZW4gZXhwb3NlZCB0byBjb25jdXJyZW50IGFjY2VzcyAo aTgwNDIpLgorCSAqLworCXN0cnVjdCBtdXRleCAqcHMyX2NtZF9tdXRleDsKIH07CiAjZGVmaW5l IHRvX3NlcmlvX3BvcnQoZCkJY29udGFpbmVyX29mKGQsIHN0cnVjdCBzZXJpbywgZGV2KQogCmRp ZmYgLS1naXQgYS9pbmNsdWRlL25ldC90Y3AuaCBiL2luY2x1ZGUvbmV0L3RjcC5oCmluZGV4IGU5 MDIzNWZiMWIxOC4uMGY0ZTFkNDE5YmZiIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC90Y3AuaAor KysgYi9pbmNsdWRlL25ldC90Y3AuaApAQCAtMTI5Myw2ICsxMjkzLDggQEAgc3RhdGljIGlubGlu ZSB2b2lkIHRjcF9jaGVja19zZW5kX2hlYWQoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVm ZiAqc2tiX3VubGkKIHsKIAlpZiAoc2stPnNrX3NlbmRfaGVhZCA9PSBza2JfdW5saW5rZWQpCiAJ CXNrLT5za19zZW5kX2hlYWQgPSBOVUxMOworCWlmICh0Y3Bfc2soc2spLT5oaWdoZXN0X3NhY2sg PT0gc2tiX3VubGlua2VkKQorCQl0Y3Bfc2soc2spLT5oaWdoZXN0X3NhY2sgPSBOVUxMOwogfQog CiBzdGF0aWMgaW5saW5lIHZvaWQgdGNwX2luaXRfc2VuZF9oZWFkKHN0cnVjdCBzb2NrICpzaykK ZGlmZiAtLWdpdCBhL2tlcm5lbC9zY2hlZC5jIGIva2VybmVsL3NjaGVkLmMKaW5kZXggZmI1NTQy OTljYTQ0Li5mZmEzMTkwZGYxZWQgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9zY2hlZC5jCisrKyBiL2tl cm5lbC9zY2hlZC5jCkBAIC0yMDg0LDE5ICsyMDg0LDYgQEAgRVhQT1JUX1NZTUJPTF9HUEwoYWNj b3VudF9zeXN0ZW1fdnRpbWUpOwogCiAjZW5kaWYgLyogQ09ORklHX0lSUV9USU1FX0FDQ09VTlRJ TkcgKi8KIAotc3RhdGljIGlubGluZSB2b2lkIGFjY291bnRfcmVzZXRfcnEoc3RydWN0IHJxICpy cSkKLXsKLSNpZmRlZiBDT05GSUdfSVJRX1RJTUVfQUNDT1VOVElORwotCXJxLT5wcmV2X2lycV90 aW1lID0gMDsKLSNlbmRpZgotI2lmZGVmIENPTkZJR19QQVJBVklSVAotCXJxLT5wcmV2X3N0ZWFs X3RpbWUgPSAwOwotI2VuZGlmCi0jaWZkZWYgQ09ORklHX1BBUkFWSVJUX1RJTUVfQUNDT1VOVElO RwotCXJxLT5wcmV2X3N0ZWFsX3RpbWVfcnEgPSAwOwotI2VuZGlmCi19Ci0KICNpZmRlZiBDT05G SUdfUEFSQVZJUlQKIHN0YXRpYyBpbmxpbmUgdTY0IHN0ZWFsX3RpY2tzKHU2NCBzdGVhbCkKIHsK QEAgLTI4NDYsNiArMjgzMywyOCBAQCB0cnlfdG9fd2FrZV91cChzdHJ1Y3QgdGFza19zdHJ1Y3Qg KnAsIHVuc2lnbmVkIGludCBzdGF0ZSwgaW50IHdha2VfZmxhZ3MpCiAJc3VjY2VzcyA9IDE7IC8q IHdlJ3JlIGdvaW5nIHRvIGNoYW5nZSAtPnN0YXRlICovCiAJY3B1ID0gdGFza19jcHUocCk7CiAK KwkvKgorCSAqIEVuc3VyZSB3ZSBsb2FkIHAtPm9uX3JxIF9hZnRlcl8gcC0+c3RhdGUsIG90aGVy d2lzZSBpdCB3b3VsZAorCSAqIGJlIHBvc3NpYmxlIHRvLCBmYWxzZWx5LCBvYnNlcnZlIHAtPm9u X3JxID09IDAgYW5kIGdldCBzdHVjaworCSAqIGluIHNtcF9jb25kX2xvYWRfYWNxdWlyZSgpIGJl bG93LgorCSAqCisJICogc2NoZWRfdHR3dV9wZW5kaW5nKCkgICAgICAgICAgICAgICAgIHRyeV90 b193YWtlX3VwKCkKKwkgKiAgIFtTXSBwLT5vbl9ycSA9IDE7ICAgICAgICAgICAgICAgICAgW0xd IFAtPnN0YXRlCisJICogICAgICAgVU5MT0NLIHJxLT5sb2NrICAtLS0tLS4KKwkgKiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwKKwkgKgkJCQkgKy0tLSAgIFJNQgorCSAqIHNjaGVkdWxl KCkgICAgICAgICAgICAgICAgICAgLworCSAqICAgICAgIExPQ0sgcnEtPmxvY2sgICAgLS0tLS0n CisJICogICAgICAgVU5MT0NLIHJxLT5sb2NrCisJICoKKwkgKiBbdGFzayBwXQorCSAqICAgW1Nd IHAtPnN0YXRlID0gVU5JTlRFUlJVUFRJQkxFICAgICBbTF0gcC0+b25fcnEKKwkgKgorCSAqIFBh aXJzIHdpdGggdGhlIFVOTE9DSytMT0NLIG9uIHJxLT5sb2NrIGZyb20gdGhlCisJICogbGFzdCB3 YWtldXAgb2Ygb3VyIHRhc2sgYW5kIHRoZSBzY2hlZHVsZSB0aGF0IGdvdCBvdXIgdGFzaworCSAq IGN1cnJlbnQuCisJICovCisJc21wX3JtYigpOwogCWlmIChwLT5vbl9ycSAmJiB0dHd1X3JlbW90 ZShwLCB3YWtlX2ZsYWdzKSkKIAkJZ290byBzdGF0OwogCkBAIC02ODY5LDcgKzY4NzgsNiBAQCBt aWdyYXRpb25fY2FsbChzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5mYiwgdW5zaWduZWQgbG9uZyBh Y3Rpb24sIHZvaWQgKmhjcHUpCiAKIAljYXNlIENQVV9VUF9QUkVQQVJFOgogCQlycS0+Y2FsY19s b2FkX3VwZGF0ZSA9IGNhbGNfbG9hZF91cGRhdGU7Ci0JCWFjY291bnRfcmVzZXRfcnEocnEpOwog CQlicmVhazsKIAogCWNhc2UgQ1BVX09OTElORToKZGlmZiAtLWdpdCBhL2tlcm5lbC90cmFjZS90 cmFjZS5jIGIva2VybmVsL3RyYWNlL3RyYWNlLmMKaW5kZXggZjRiOTNhMjA3MDI2Li5jYTczOTZl NGFmZjQgMTAwNjQ0Ci0tLSBhL2tlcm5lbC90cmFjZS90cmFjZS5jCisrKyBiL2tlcm5lbC90cmFj ZS90cmFjZS5jCkBAIC0zMzMxLDEzICszMzMxLDYgQEAgdHJhY2luZ19yZWFkX3BpcGUoc3RydWN0 IGZpbGUgKmZpbHAsIGNoYXIgX191c2VyICp1YnVmLAogCXN0YXRpYyBzdHJ1Y3QgdHJhY2VyICpv bGRfdHJhY2VyOwogCXNzaXplX3Qgc3JldDsKIAotCS8qIHJldHVybiBhbnkgbGVmdG92ZXIgZGF0 YSAqLwotCXNyZXQgPSB0cmFjZV9zZXFfdG9fdXNlcigmaXRlci0+c2VxLCB1YnVmLCBjbnQpOwot CWlmIChzcmV0ICE9IC1FQlVTWSkKLQkJcmV0dXJuIHNyZXQ7Ci0KLQl0cmFjZV9zZXFfaW5pdCgm aXRlci0+c2VxKTsKLQogCS8qIGNvcHkgdGhlIHRyYWNlciB0byBhdm9pZCB1c2luZyBhIGdsb2Jh bCBsb2NrIGFsbCBhcm91bmQgKi8KIAltdXRleF9sb2NrKCZ0cmFjZV90eXBlc19sb2NrKTsKIAlp ZiAodW5saWtlbHkob2xkX3RyYWNlciAhPSBjdXJyZW50X3RyYWNlICYmIGN1cnJlbnRfdHJhY2Up KSB7CkBAIC0zMzUyLDYgKzMzNDUsMTQgQEAgdHJhY2luZ19yZWFkX3BpcGUoc3RydWN0IGZpbGUg KmZpbHAsIGNoYXIgX191c2VyICp1YnVmLAogCSAqIGlzIHByb3RlY3RlZC4KIAkgKi8KIAltdXRl eF9sb2NrKCZpdGVyLT5tdXRleCk7CisKKwkvKiByZXR1cm4gYW55IGxlZnRvdmVyIGRhdGEgKi8K KwlzcmV0ID0gdHJhY2Vfc2VxX3RvX3VzZXIoJml0ZXItPnNlcSwgdWJ1ZiwgY250KTsKKwlpZiAo c3JldCAhPSAtRUJVU1kpCisJCWdvdG8gb3V0OworCisJdHJhY2Vfc2VxX2luaXQoJml0ZXItPnNl cSk7CisKIAlpZiAoaXRlci0+dHJhY2UtPnJlYWQpIHsKIAkJc3JldCA9IGl0ZXItPnRyYWNlLT5y ZWFkKGl0ZXIsIGZpbHAsIHVidWYsIGNudCwgcHBvcyk7CiAJCWlmIChzcmV0KQpkaWZmIC0tZ2l0 IGEvbW0vaHVnZXRsYi5jIGIvbW0vaHVnZXRsYi5jCmluZGV4IGM1MjA5NWNlNDBiNC4uMzkwZjBh YzRlZWQ2IDEwMDY0NAotLS0gYS9tbS9odWdldGxiLmMKKysrIGIvbW0vaHVnZXRsYi5jCkBAIC0x NDE3LDYgKzE0MTcsMTAgQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgc2V0X21heF9odWdlX3BhZ2Vz KHN0cnVjdCBoc3RhdGUgKmgsIHVuc2lnbmVkIGxvbmcgY291bnQsCiAJCSAqIGFuZCByZWR1Y2lu ZyB0aGUgc3VycGx1cy4KIAkJICovCiAJCXNwaW5fdW5sb2NrKCZodWdldGxiX2xvY2spOworCisJ CS8qIHlpZWxkIGNwdSB0byBhdm9pZCBzb2Z0IGxvY2t1cCAqLworCQljb25kX3Jlc2NoZWQoKTsK KwogCQlyZXQgPSBhbGxvY19mcmVzaF9odWdlX3BhZ2UoaCwgbm9kZXNfYWxsb3dlZCk7CiAJCXNw aW5fbG9jaygmaHVnZXRsYl9sb2NrKTsKIAkJaWYgKCFyZXQpCmRpZmYgLS1naXQgYS9tbS9rc20u YyBiL21tL2tzbS5jCmluZGV4IDY3NDFjOWRmNWM4MC4uMTY4Yjk4MGFjOTE5IDEwMDY0NAotLS0g YS9tbS9rc20uYworKysgYi9tbS9rc20uYwpAQCAtMjM4LDcgKzIzOCw4IEBAIHN0YXRpYyBpbmxp bmUgc3RydWN0IHJtYXBfaXRlbSAqYWxsb2Nfcm1hcF9pdGVtKHZvaWQpCiB7CiAJc3RydWN0IHJt YXBfaXRlbSAqcm1hcF9pdGVtOwogCi0Jcm1hcF9pdGVtID0ga21lbV9jYWNoZV96YWxsb2Mocm1h cF9pdGVtX2NhY2hlLCBHRlBfS0VSTkVMKTsKKwlybWFwX2l0ZW0gPSBrbWVtX2NhY2hlX3phbGxv YyhybWFwX2l0ZW1fY2FjaGUsIEdGUF9LRVJORUwgfAorCQkJCQkJX19HRlBfTk9SRVRSWSB8IF9f R0ZQX05PV0FSTik7CiAJaWYgKHJtYXBfaXRlbSkKIAkJa3NtX3JtYXBfaXRlbXMrKzsKIAlyZXR1 cm4gcm1hcF9pdGVtOwpkaWZmIC0tZ2l0IGEvbW0vc2htZW0uYyBiL21tL3NobWVtLmMKaW5kZXgg ODNlZmFjNmRkZWYwLi4wYTlkODkxOWRkZmEgMTAwNjQ0Ci0tLSBhL21tL3NobWVtLmMKKysrIGIv bW0vc2htZW0uYwpAQCAtNTYyLDcgKzU2Miw3IEBAIHN0YXRpYyBpbnQgc2htZW1fc2V0YXR0cihz dHJ1Y3QgZGVudHJ5ICpkZW50cnksIHN0cnVjdCBpYXR0ciAqYXR0cikKIAlzdHJ1Y3QgaW5vZGUg Kmlub2RlID0gZGVudHJ5LT5kX2lub2RlOwogCWludCBlcnJvcjsKIAotCWVycm9yID0gaW5vZGVf Y2hhbmdlX29rKGlub2RlLCBhdHRyKTsKKwllcnJvciA9IHNldGF0dHJfcHJlcGFyZShkZW50cnks IGF0dHIpOwogCWlmIChlcnJvcikKIAkJcmV0dXJuIGVycm9yOwogCmRpZmYgLS1naXQgYS9uZXQv Ymx1ZXRvb3RoL2wyY2FwX3NvY2suYyBiL25ldC9ibHVldG9vdGgvbDJjYXBfc29jay5jCmluZGV4 IDc0ZTU5Y2RkMDQ3Yi4uNmM4OWQ2MWFhYTZmIDEwMDY0NAotLS0gYS9uZXQvYmx1ZXRvb3RoL2wy Y2FwX3NvY2suYworKysgYi9uZXQvYmx1ZXRvb3RoL2wyY2FwX3NvY2suYwpAQCAtNjMwLDcgKzYz MCw3IEBAIHN0YXRpYyBpbnQgbDJjYXBfc29ja19zZXRzb2Nrb3B0KHN0cnVjdCBzb2NrZXQgKnNv Y2ssIGludCBsZXZlbCwgaW50IG9wdG5hbWUsIGNoCiAJCQlicmVhazsKIAkJfQogCi0JCWlmIChn ZXRfdXNlcihvcHQsICh1MzIgX191c2VyICopIG9wdHZhbCkpIHsKKwkJaWYgKGdldF91c2VyKG9w dCwgKHUxNiBfX3VzZXIgKikgb3B0dmFsKSkgewogCQkJZXJyID0gLUVGQVVMVDsKIAkJCWJyZWFr OwogCQl9CmRpZmYgLS1naXQgYS9uZXQvYmx1ZXRvb3RoL3JmY29tbS9zb2NrLmMgYi9uZXQvYmx1 ZXRvb3RoL3JmY29tbS9zb2NrLmMKaW5kZXggOTNhODI0MTc5NDU4Li42Yzc0MjY0ODc1YzkgMTAw NjQ0Ci0tLSBhL25ldC9ibHVldG9vdGgvcmZjb21tL3NvY2suYworKysgYi9uZXQvYmx1ZXRvb3Ro L3JmY29tbS9zb2NrLmMKQEAgLTM0OSwxNSArMzQ5LDE5IEBAIHN0YXRpYyBpbnQgcmZjb21tX3Nv Y2tfY3JlYXRlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2tldCAqc29jaywKIAogc3RhdGlj IGludCByZmNvbW1fc29ja19iaW5kKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrYWRk ciAqYWRkciwgaW50IGFkZHJfbGVuKQogewotCXN0cnVjdCBzb2NrYWRkcl9yYyAqc2EgPSAoc3Ry dWN0IHNvY2thZGRyX3JjICopIGFkZHI7CisJc3RydWN0IHNvY2thZGRyX3JjIHNhOwogCXN0cnVj dCBzb2NrICpzayA9IHNvY2stPnNrOwotCWludCBlcnIgPSAwOwotCi0JQlRfREJHKCJzayAlcCAl cyIsIHNrLCBiYXRvc3RyKCZzYS0+cmNfYmRhZGRyKSk7CisJaW50IGxlbiwgZXJyID0gMDsKIAog CWlmICghYWRkciB8fCBhZGRyLT5zYV9mYW1pbHkgIT0gQUZfQkxVRVRPT1RIKQogCQlyZXR1cm4g LUVJTlZBTDsKIAorCW1lbXNldCgmc2EsIDAsIHNpemVvZihzYSkpOworCWxlbiA9IG1pbl90KHVu c2lnbmVkIGludCwgc2l6ZW9mKHNhKSwgYWRkcl9sZW4pOworCW1lbWNweSgmc2EsIGFkZHIsIGxl bik7CisKKwlCVF9EQkcoInNrICVwICVzIiwgc2ssIGJhdG9zdHIoJnNhLnJjX2JkYWRkcikpOwor CiAJbG9ja19zb2NrKHNrKTsKIAogCWlmIChzay0+c2tfc3RhdGUgIT0gQlRfT1BFTikgewpAQCAt MzcyLDEyICszNzYsMTMgQEAgc3RhdGljIGludCByZmNvbW1fc29ja19iaW5kKHN0cnVjdCBzb2Nr ZXQgKnNvY2ssIHN0cnVjdCBzb2NrYWRkciAqYWRkciwgaW50IGFkZHIKIAogCXdyaXRlX2xvY2tf YmgoJnJmY29tbV9za19saXN0LmxvY2spOwogCi0JaWYgKHNhLT5yY19jaGFubmVsICYmIF9fcmZj b21tX2dldF9zb2NrX2J5X2FkZHIoc2EtPnJjX2NoYW5uZWwsICZzYS0+cmNfYmRhZGRyKSkgewor CWlmIChzYS5yY19jaGFubmVsICYmCisJICAgIF9fcmZjb21tX2dldF9zb2NrX2J5X2FkZHIoc2Eu cmNfY2hhbm5lbCwgJnNhLnJjX2JkYWRkcikpIHsKIAkJZXJyID0gLUVBRERSSU5VU0U7CiAJfSBl bHNlIHsKIAkJLyogU2F2ZSBzb3VyY2UgYWRkcmVzcyAqLwotCQliYWNweSgmYnRfc2soc2spLT5z cmMsICZzYS0+cmNfYmRhZGRyKTsKLQkJcmZjb21tX3BpKHNrKS0+Y2hhbm5lbCA9IHNhLT5yY19j aGFubmVsOworCQliYWNweSgmYnRfc2soc2spLT5zcmMsICZzYS5yY19iZGFkZHIpOworCQlyZmNv bW1fcGkoc2spLT5jaGFubmVsID0gc2EucmNfY2hhbm5lbDsKIAkJc2stPnNrX3N0YXRlID0gQlRf Qk9VTkQ7CiAJfQogCmRpZmYgLS1naXQgYS9uZXQvaXB2NC9pcG1yLmMgYi9uZXQvaXB2NC9pcG1y LmMKaW5kZXggOTViNDdmZjRjZTZmLi42NTU4YTkxODI3OTMgMTAwNjQ0Ci0tLSBhL25ldC9pcHY0 L2lwbXIuYworKysgYi9uZXQvaXB2NC9pcG1yLmMKQEAgLTIwNTgsNyArMjA1OCw3IEBAIHJ0YXR0 cl9mYWlsdXJlOgogCiBpbnQgaXBtcl9nZXRfcm91dGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qg c2tfYnVmZiAqc2tiLAogCQkgICBfX2JlMzIgc2FkZHIsIF9fYmUzMiBkYWRkciwKLQkJICAgc3Ry dWN0IHJ0bXNnICpydG0sIGludCBub3dhaXQpCisJCSAgIHN0cnVjdCBydG1zZyAqcnRtLCBpbnQg bm93YWl0LCB1MzIgcG9ydGlkKQogewogCXN0cnVjdCBtZmNfY2FjaGUgKmNhY2hlOwogCXN0cnVj dCBtcl90YWJsZSAqbXJ0OwpAQCAtMjA5OCw2ICsyMDk4LDcgQEAgaW50IGlwbXJfZ2V0X3JvdXRl KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkJCXJldHVybiAtRU5PTUVN OwogCQl9CiAKKwkJTkVUTElOS19DQihza2IyKS5waWQgPSBwb3J0aWQ7CiAJCXNrYl9wdXNoKHNr YjIsIHNpemVvZihzdHJ1Y3QgaXBoZHIpKTsKIAkJc2tiX3Jlc2V0X25ldHdvcmtfaGVhZGVyKHNr YjIpOwogCQlpcGggPSBpcF9oZHIoc2tiMik7CmRpZmYgLS1naXQgYS9uZXQvaXB2NC9yb3V0ZS5j IGIvbmV0L2lwdjQvcm91dGUuYwppbmRleCA4ZTc5YTllMDQyNzYuLjMwMjZiNjVmOWE4NCAxMDA2 NDQKLS0tIGEvbmV0L2lwdjQvcm91dGUuYworKysgYi9uZXQvaXB2NC9yb3V0ZS5jCkBAIC0zMDc3 LDcgKzMwNzcsOCBAQCBzdGF0aWMgaW50IHJ0X2ZpbGxfaW5mbyhzdHJ1Y3QgbmV0ICpuZXQsCiAJ CSAgICBJUFY0X0RFVkNPTkZfQUxMKG5ldCwgTUNfRk9SV0FSRElORykpIHsKIAkJCWludCBlcnIg PSBpcG1yX2dldF9yb3V0ZShuZXQsIHNrYiwKIAkJCQkJCSBydC0+cnRfc3JjLCBydC0+cnRfZHN0 LAotCQkJCQkJIHIsIG5vd2FpdCk7CisJCQkJCQkgciwgbm93YWl0LCBwaWQpOworCiAJCQlpZiAo ZXJyIDw9IDApIHsKIAkJCQlpZiAoIW5vd2FpdCkgewogCQkJCQlpZiAoZXJyID09IDApCmRpZmYg LS1naXQgYS9uZXQvaXB2NC90Y3Bfb3V0cHV0LmMgYi9uZXQvaXB2NC90Y3Bfb3V0cHV0LmMKaW5k ZXggZTYxNDgxMDA5ODAxLi45MThlY2Q3MjRjMWIgMTAwNjQ0Ci0tLSBhL25ldC9pcHY0L3RjcF9v dXRwdXQuYworKysgYi9uZXQvaXB2NC90Y3Bfb3V0cHV0LmMKQEAgLTIyMCw3ICsyMjAsOCBAQCB2 b2lkIHRjcF9zZWxlY3RfaW5pdGlhbF93aW5kb3coaW50IF9fc3BhY2UsIF9fdTMyIG1zcywKIAkJ LyogU2V0IHdpbmRvdyBzY2FsaW5nIG9uIG1heCBwb3NzaWJsZSB3aW5kb3cKIAkJICogU2VlIFJG QzEzMjMgZm9yIGFuIGV4cGxhbmF0aW9uIG9mIHRoZSBsaW1pdCB0byAxNAogCQkgKi8KLQkJc3Bh Y2UgPSBtYXhfdCh1MzIsIHN5c2N0bF90Y3Bfcm1lbVsyXSwgc3lzY3RsX3JtZW1fbWF4KTsKKwkJ c3BhY2UgPSBtYXhfdCh1MzIsIHNwYWNlLCBzeXNjdGxfdGNwX3JtZW1bMl0pOworCQlzcGFjZSA9 IG1heF90KHUzMiwgc3BhY2UsIHN5c2N0bF9ybWVtX21heCk7CiAJCXNwYWNlID0gbWluX3QodTMy LCBzcGFjZSwgKndpbmRvd19jbGFtcCk7CiAJCXdoaWxlIChzcGFjZSA+IDY1NTM1ICYmICgqcmN2 X3dzY2FsZSkgPCAxNCkgewogCQkJc3BhY2UgPj49IDE7CmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9p cDZtci5jIGIvbmV0L2lwdjYvaXA2bXIuYwppbmRleCAwMmIzYzgyN2RmZTAuLjdhMzkyM2IzZTgy OCAxMDA2NDQKLS0tIGEvbmV0L2lwdjYvaXA2bXIuYworKysgYi9uZXQvaXB2Ni9pcDZtci5jCkBA IC0yMTM3LDggKzIxMzcsOCBAQCBydGF0dHJfZmFpbHVyZToKIAlyZXR1cm4gLUVNU0dTSVpFOwog fQogCi1pbnQgaXA2bXJfZ2V0X3JvdXRlKHN0cnVjdCBuZXQgKm5ldCwKLQkJICAgIHN0cnVjdCBz a19idWZmICpza2IsIHN0cnVjdCBydG1zZyAqcnRtLCBpbnQgbm93YWl0KQoraW50IGlwNm1yX2dl dF9yb3V0ZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBydG1z ZyAqcnRtLAorCQkgICAgaW50IG5vd2FpdCwgdTMyIHBvcnRpZCkKIHsKIAlpbnQgZXJyOwogCXN0 cnVjdCBtcjZfdGFibGUgKm1ydDsKQEAgLTIxNzYsNiArMjE3Niw3IEBAIGludCBpcDZtcl9nZXRf cm91dGUoc3RydWN0IG5ldCAqbmV0LAogCQkJcmV0dXJuIC1FTk9NRU07CiAJCX0KIAorCQlORVRM SU5LX0NCKHNrYjIpLnBpZCA9IHBvcnRpZDsKIAkJc2tiX3Jlc2V0X3RyYW5zcG9ydF9oZWFkZXIo c2tiMik7CiAKIAkJc2tiX3B1dChza2IyLCBzaXplb2Yoc3RydWN0IGlwdjZoZHIpKTsKZGlmZiAt LWdpdCBhL25ldC9pcHY2L3JvdXRlLmMgYi9uZXQvaXB2Ni9yb3V0ZS5jCmluZGV4IDNhODc3NmQ5 Yjg5NS4uZDQwNTlmYTU5NTQ4IDEwMDY0NAotLS0gYS9uZXQvaXB2Ni9yb3V0ZS5jCisrKyBiL25l dC9pcHY2L3JvdXRlLmMKQEAgLTI0MTYsNyArMjQxNiw5IEBAIHN0YXRpYyBpbnQgcnQ2X2ZpbGxf bm9kZShzdHJ1Y3QgbmV0ICpuZXQsCiAJaWYgKGlpZikgewogI2lmZGVmIENPTkZJR19JUFY2X01S T1VURQogCQlpZiAoaXB2Nl9hZGRyX2lzX211bHRpY2FzdCgmcnQtPnJ0NmlfZHN0LmFkZHIpKSB7 Ci0JCQlpbnQgZXJyID0gaXA2bXJfZ2V0X3JvdXRlKG5ldCwgc2tiLCBydG0sIG5vd2FpdCk7CisJ CQlpbnQgZXJyID0gaXA2bXJfZ2V0X3JvdXRlKG5ldCwgc2tiLCBydG0sIG5vd2FpdCwKKwkJCQkJ CSAgcGlkKTsKKwogCQkJaWYgKGVyciA8PSAwKSB7CiAJCQkJaWYgKCFub3dhaXQpIHsKIAkJCQkJ aWYgKGVyciA9PSAwKQpkaWZmIC0tZ2l0IGEvbmV0L2lyZGEvYWZfaXJkYS5jIGIvbmV0L2lyZGEv YWZfaXJkYS5jCmluZGV4IDAzYzhlYTlkZWFmNi4uMDc4OTY3ZmJiODA5IDEwMDY0NAotLS0gYS9u ZXQvaXJkYS9hZl9pcmRhLmMKKysrIGIvbmV0L2lyZGEvYWZfaXJkYS5jCkBAIC04NDYsNyArODQ2 LDcgQEAgc3RhdGljIGludCBpcmRhX2FjY2VwdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qg c29ja2V0ICpuZXdzb2NrLCBpbnQgZmxhZ3MpCiAJc3RydWN0IHNvY2sgKnNrID0gc29jay0+c2s7 CiAJc3RydWN0IGlyZGFfc29jayAqbmV3LCAqc2VsZiA9IGlyZGFfc2soc2spOwogCXN0cnVjdCBz b2NrICpuZXdzazsKLQlzdHJ1Y3Qgc2tfYnVmZiAqc2tiOworCXN0cnVjdCBza19idWZmICpza2Ig PSBOVUxMOwogCWludCBlcnI7CiAKIAlJUkRBX0RFQlVHKDIsICIlcygpXG4iLCBfX2Z1bmNfXyk7 CkBAIC05MTYsNyArOTE2LDYgQEAgc3RhdGljIGludCBpcmRhX2FjY2VwdChzdHJ1Y3Qgc29ja2V0 ICpzb2NrLCBzdHJ1Y3Qgc29ja2V0ICpuZXdzb2NrLCBpbnQgZmxhZ3MpCiAJZXJyID0gLUVQRVJN OyAvKiB2YWx1ZSBkb2VzIG5vdCBzZWVtIHRvIG1ha2Ugc2Vuc2UuIC1hcm5kICovCiAJaWYgKCFu ZXctPnRzYXApIHsKIAkJSVJEQV9ERUJVRygwLCAiJXMoKSwgZHVwIGZhaWxlZCFcbiIsIF9fZnVu Y19fKTsKLQkJa2ZyZWVfc2tiKHNrYik7CiAJCWdvdG8gb3V0OwogCX0KIApAQCAtOTM1LDcgKzkz NCw2IEBAIHN0YXRpYyBpbnQgaXJkYV9hY2NlcHQoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0 IHNvY2tldCAqbmV3c29jaywgaW50IGZsYWdzKQogCS8qIENsZWFuIHVwIHRoZSBvcmlnaW5hbCBv bmUgdG8ga2VlcCBpdCBpbiBsaXN0ZW4gc3RhdGUgKi8KIAlpcnR0cF9saXN0ZW4oc2VsZi0+dHNh cCk7CiAKLQlrZnJlZV9za2Ioc2tiKTsKIAlzay0+c2tfYWNrX2JhY2tsb2ctLTsKIAogCW5ld3Nv Y2stPnN0YXRlID0gU1NfQ09OTkVDVEVEOwpAQCAtOTQzLDYgKzk0MSw3IEBAIHN0YXRpYyBpbnQg aXJkYV9hY2NlcHQoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHNvY2tldCAqbmV3c29jaywg aW50IGZsYWdzKQogCWlyZGFfY29ubmVjdF9yZXNwb25zZShuZXcpOwogCWVyciA9IDA7CiBvdXQ6 CisJa2ZyZWVfc2tiKHNrYik7CiAJcmVsZWFzZV9zb2NrKHNrKTsKIAlyZXR1cm4gZXJyOwogfQpA QCAtMTA0MCw4ICsxMDM5LDExIEBAIHN0YXRpYyBpbnQgaXJkYV9jb25uZWN0KHN0cnVjdCBzb2Nr ZXQgKnNvY2ssIHN0cnVjdCBzb2NrYWRkciAqdWFkZHIsCiAJfQogCiAJLyogQ2hlY2sgaWYgd2Ug aGF2ZSBvcGVuZWQgYSBsb2NhbCBUU0FQICovCi0JaWYgKCFzZWxmLT50c2FwKQotCQlpcmRhX29w ZW5fdHNhcChzZWxmLCBMU0FQX0FOWSwgYWRkci0+c2lyX25hbWUpOworCWlmICghc2VsZi0+dHNh cCkgeworCQllcnIgPSBpcmRhX29wZW5fdHNhcChzZWxmLCBMU0FQX0FOWSwgYWRkci0+c2lyX25h bWUpOworCQlpZiAoZXJyKQorCQkJZ290byBvdXQ7CisJfQogCiAJLyogTW92ZSB0byBjb25uZWN0 aW5nIHNvY2tldCwgc3RhcnQgc2VuZGluZyBDb25uZWN0IFJlcXVlc3RzICovCiAJc29jay0+c3Rh dGUgPSBTU19DT05ORUNUSU5HOwpkaWZmIC0tZ2l0IGEvbmV0L2wydHAvbDJ0cF9wcHAuYyBiL25l dC9sMnRwL2wydHBfcHBwLmMKaW5kZXggNzY3YmY0YWZlZmJkLi4wNDE3NzQzYjA5ZTUgMTAwNjQ0 Ci0tLSBhL25ldC9sMnRwL2wydHBfcHBwLmMKKysrIGIvbmV0L2wydHAvbDJ0cF9wcHAuYwpAQCAt OTE0LDEwICs5MTQsOCBAQCBzdGF0aWMgaW50IHBwcG9sMnRwX2dldG5hbWUoc3RydWN0IHNvY2tl dCAqc29jaywgc3RydWN0IHNvY2thZGRyICp1YWRkciwKIAogCXBscyA9IGwydHBfc2Vzc2lvbl9w cml2KHNlc3Npb24pOwogCXR1bm5lbCA9IGwydHBfc29ja190b190dW5uZWwocGxzLT50dW5uZWxf c29jayk7Ci0JaWYgKHR1bm5lbCA9PSBOVUxMKSB7Ci0JCWVycm9yID0gLUVCQURGOworCWlmICh0 dW5uZWwgPT0gTlVMTCkKIAkJZ290byBlbmRfcHV0X3Nlc3M7Ci0JfQogCiAJaW5ldCA9IGluZXRf c2sodHVubmVsLT5zb2NrKTsKIAlpZiAodHVubmVsLT52ZXJzaW9uID09IDIpIHsKQEAgLTk1NSwx MiArOTUzLDExIEBAIHN0YXRpYyBpbnQgcHBwb2wydHBfZ2V0bmFtZShzdHJ1Y3Qgc29ja2V0ICpz b2NrLCBzdHJ1Y3Qgc29ja2FkZHIgKnVhZGRyLAogCX0KIAogCSp1c29ja2FkZHJfbGVuID0gbGVu OworCWVycm9yID0gMDsKIAogCXNvY2tfcHV0KHBscy0+dHVubmVsX3NvY2spOwogZW5kX3B1dF9z ZXNzOgogCXNvY2tfcHV0KHNrKTsKLQllcnJvciA9IDA7Ci0KIGVuZDoKIAlyZXR1cm4gZXJyb3I7 CiB9CmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jIGIvbmV0L25l dGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYwppbmRleCBhODBiMGNiMDNmMTcuLjI3NTkwNmM5YTM0 MiAxMDA2NDQKLS0tIGEvbmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYworKysgYi9uZXQv bmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jCkBAIC03MTYsOSArNzE2LDYgQEAgbmZxbmxfcmVj dl92ZXJkaWN0KHN0cnVjdCBzb2NrICpjdG5sLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCXVuc2ln bmVkIGludCB2ZXJkaWN0OwogCXN0cnVjdCBuZl9xdWV1ZV9lbnRyeSAqZW50cnk7CiAKLQlxdWV1 ZSA9IGluc3RhbmNlX2xvb2t1cChxdWV1ZV9udW0pOwotCWlmICghcXVldWUpCi0KIAlxdWV1ZSA9 IHZlcmRpY3RfaW5zdGFuY2VfbG9va3VwKHF1ZXVlX251bSwgTkVUTElOS19DQihza2IpLnBpZCk7 CiAJaWYgKElTX0VSUihxdWV1ZSkpCiAJCXJldHVybiBQVFJfRVJSKHF1ZXVlKTsKZGlmZiAtLWdp dCBhL25ldC9uZXRsYWJlbC9uZXRsYWJlbF9rYXBpLmMgYi9uZXQvbmV0bGFiZWwvbmV0bGFiZWxf a2FwaS5jCmluZGV4IGJjZWNhZTBmMDBjNi4uMjkwYzdiYjg4NjViIDEwMDY0NAotLS0gYS9uZXQv bmV0bGFiZWwvbmV0bGFiZWxfa2FwaS5jCisrKyBiL25ldC9uZXRsYWJlbC9uZXRsYWJlbF9rYXBp LmMKQEAgLTcxMCw3ICs3MTAsMTEgQEAgc29ja2V0X3NldGF0dHJfcmV0dXJuOgogICovCiB2b2lk IG5ldGxibF9zb2NrX2RlbGF0dHIoc3RydWN0IHNvY2sgKnNrKQogewotCWNpcHNvX3Y0X3NvY2tf ZGVsYXR0cihzayk7CisJc3dpdGNoIChzay0+c2tfZmFtaWx5KSB7CisJY2FzZSBBRl9JTkVUOgor CQljaXBzb192NF9zb2NrX2RlbGF0dHIoc2spOworCQlicmVhazsKKwl9CiB9CiAKIC8qKgpAQCAt ODg5LDcgKzg5MywxMSBAQCByZXFfc2V0YXR0cl9yZXR1cm46CiAqLwogdm9pZCBuZXRsYmxfcmVx X2RlbGF0dHIoc3RydWN0IHJlcXVlc3Rfc29jayAqcmVxKQogewotCWNpcHNvX3Y0X3JlcV9kZWxh dHRyKHJlcSk7CisJc3dpdGNoIChyZXEtPnJza19vcHMtPmZhbWlseSkgeworCWNhc2UgQUZfSU5F VDoKKwkJY2lwc29fdjRfcmVxX2RlbGF0dHIocmVxKTsKKwkJYnJlYWs7CisJfQogfQogCiAvKioK ZGlmZiAtLWdpdCBhL25ldC9zdW5ycGMvc3ZjLmMgYi9uZXQvc3VucnBjL3N2Yy5jCmluZGV4IGM4 MGMxNjI0OGEzYy4uZWZkNDQzZGJhY2Y5IDEwMDY0NAotLS0gYS9uZXQvc3VucnBjL3N2Yy5jCisr KyBiL25ldC9zdW5ycGMvc3ZjLmMKQEAgLTExNjcsMTEgKzExNjcsMTYgQEAgc3ZjX3Byb2Nlc3Nf Y29tbW9uKHN0cnVjdCBzdmNfcnFzdCAqcnFzdHAsIHN0cnVjdCBrdmVjICphcmd2LCBzdHJ1Y3Qg a3ZlYyAqcmVzdikKIAkJKnN0YXRwID0gcHJvY3AtPnBjX2Z1bmMocnFzdHAsIHJxc3RwLT5ycV9h cmdwLCBycXN0cC0+cnFfcmVzcCk7CiAKIAkJLyogRW5jb2RlIHJlcGx5ICovCi0JCWlmIChycXN0 cC0+cnFfZHJvcG1lKSB7CisJCWlmICgqc3RhdHAgPT0gcnBjX2Ryb3BfcmVwbHkgfHwgcnFzdHAt PnJxX2Ryb3BtZSkgewogCQkJaWYgKHByb2NwLT5wY19yZWxlYXNlKQogCQkJCXByb2NwLT5wY19y ZWxlYXNlKHJxc3RwLCBOVUxMLCBycXN0cC0+cnFfcmVzcCk7CiAJCQlnb3RvIGRyb3BpdDsKIAkJ fQorCQlpZiAoKnN0YXRwID09IHJwY19hdXRoZXJyX2JhZGNyZWQpIHsKKwkJCWlmIChwcm9jcC0+ cGNfcmVsZWFzZSkKKwkJCQlwcm9jcC0+cGNfcmVsZWFzZShycXN0cCwgTlVMTCwgcnFzdHAtPnJx X3Jlc3ApOworCQkJZ290byBlcnJfYmFkX2F1dGg7CisJCX0KIAkJaWYgKCpzdGF0cCA9PSBycGNf c3VjY2VzcyAmJgogCQkgICAgKHhkciA9IHByb2NwLT5wY19lbmNvZGUpICYmCiAJCSAgICAheGRy KHJxc3RwLCByZXN2LT5pb3ZfYmFzZStyZXN2LT5pb3ZfbGVuLCBycXN0cC0+cnFfcmVzcCkpIHsK ZGlmZiAtLWdpdCBhL25ldC94ZnJtL3hmcm1fc3RhdGUuYyBiL25ldC94ZnJtL3hmcm1fc3RhdGUu YwppbmRleCA5NDE0YjljNWIxZTQuLjQ1ZjhkOTI1NjA4MSAxMDA2NDQKLS0tIGEvbmV0L3hmcm0v eGZybV9zdGF0ZS5jCisrKyBiL25ldC94ZnJtL3hmcm1fc3RhdGUuYwpAQCAtMzUxLDYgKzM1MSw3 IEBAIHN0YXRpYyB2b2lkIHhmcm1fc3RhdGVfZ2NfZGVzdHJveShzdHJ1Y3QgeGZybV9zdGF0ZSAq eCkKIHsKIAl0YXNrbGV0X2hydGltZXJfY2FuY2VsKCZ4LT5tdGltZXIpOwogCWRlbF90aW1lcl9z eW5jKCZ4LT5ydGltZXIpOworCWtmcmVlKHgtPmFlYWQpOwogCWtmcmVlKHgtPmFhbGcpOwogCWtm cmVlKHgtPmVhbGcpOwogCWtmcmVlKHgtPmNhbGcpOwpkaWZmIC0tZ2l0IGEvbmV0L3hmcm0veGZy bV91c2VyLmMgYi9uZXQveGZybS94ZnJtX3VzZXIuYwppbmRleCBlZGUwMWE4ZDlmNGUuLjA5NTQy MjQ4ZjcyYiAxMDA2NDQKLS0tIGEvbmV0L3hmcm0veGZybV91c2VyLmMKKysrIGIvbmV0L3hmcm0v eGZybV91c2VyLmMKQEAgLTU1OCw5ICs1NTgsMTIgQEAgc3RhdGljIHN0cnVjdCB4ZnJtX3N0YXRl ICp4ZnJtX3N0YXRlX2NvbnN0cnVjdChzdHJ1Y3QgbmV0ICpuZXQsCiAJaWYgKGVycikKIAkJZ290 byBlcnJvcjsKIAotCWlmIChhdHRyc1tYRlJNQV9TRUNfQ1RYXSAmJgotCSAgICBzZWN1cml0eV94 ZnJtX3N0YXRlX2FsbG9jKHgsIG5sYV9kYXRhKGF0dHJzW1hGUk1BX1NFQ19DVFhdKSkpCi0JCWdv dG8gZXJyb3I7CisJaWYgKGF0dHJzW1hGUk1BX1NFQ19DVFhdKSB7CisJCWVyciA9IHNlY3VyaXR5 X3hmcm1fc3RhdGVfYWxsb2MoeCwKKwkJCQkJCW5sYV9kYXRhKGF0dHJzW1hGUk1BX1NFQ19DVFhd KSk7CisJCWlmIChlcnIpCisJCQlnb3RvIGVycm9yOworCX0KIAogCWlmICgoZXJyID0geGZybV9h bGxvY19yZXBsYXlfc3RhdGVfZXNuKCZ4LT5yZXBsYXlfZXNuLCAmeC0+cHJlcGxheV9lc24sCiAJ CQkJCSAgICAgICBhdHRyc1tYRlJNQV9SRVBMQVlfRVNOX1ZBTF0pKSkKZGlmZiAtLWdpdCBhL3Nl Y3VyaXR5L2tleXMvcHJvYy5jIGIvc2VjdXJpdHkva2V5cy9wcm9jLmMKaW5kZXggNDliYmM5Nzk0 M2FkLi4zZjdiNDEwMmEzNTAgMTAwNjQ0Ci0tLSBhL3NlY3VyaXR5L2tleXMvcHJvYy5jCisrKyBi L3NlY3VyaXR5L2tleXMvcHJvYy5jCkBAIC0xODgsNyArMTg4LDcgQEAgc3RhdGljIGludCBwcm9j X2tleXNfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnYpCiAJc3RydWN0IHRpbWVzcGVj IG5vdzsKIAl1bnNpZ25lZCBsb25nIHRpbW87CiAJa2V5X3JlZl90IGtleV9yZWYsIHNrZXlfcmVm OwotCWNoYXIgeGJ1ZlsxMl07CisJY2hhciB4YnVmWzE2XTsKIAlpbnQgcmM7CiAKIAlrZXlfcmVm ID0gbWFrZV9rZXlfcmVmKGtleSwgMCk7CmRpZmYgLS1naXQgYS9zb3VuZC9jb3JlL2NvbnRyb2wu YyBiL3NvdW5kL2NvcmUvY29udHJvbC5jCmluZGV4IDk2YzYyZTU4ZDk1MC4uMTMyODU2YjE2Yjhk IDEwMDY0NAotLS0gYS9zb3VuZC9jb3JlL2NvbnRyb2wuYworKysgYi9zb3VuZC9jb3JlL2NvbnRy b2wuYwpAQCAtMTUwLDYgKzE1MCw4IEBAIHZvaWQgc25kX2N0bF9ub3RpZnkoc3RydWN0IHNuZF9j YXJkICpjYXJkLCB1bnNpZ25lZCBpbnQgbWFzaywKIAkKIAlpZiAoc25kX0JVR19PTighY2FyZCB8 fCAhaWQpKQogCQlyZXR1cm47CisJaWYgKGNhcmQtPnNodXRkb3duKQorCQlyZXR1cm47CiAJcmVh ZF9sb2NrKCZjYXJkLT5jdGxfZmlsZXNfcndsb2NrKTsKICNpZiBkZWZpbmVkKENPTkZJR19TTkRf TUlYRVJfT1NTKSB8fCBkZWZpbmVkKENPTkZJR19TTkRfTUlYRVJfT1NTX01PRFVMRSkKIAljYXJk LT5taXhlcl9vc3NfY2hhbmdlX2NvdW50Kys7CmRpZmYgLS1naXQgYS9zb3VuZC9jb3JlL3Jhd21p ZGkuYyBiL3NvdW5kL2NvcmUvcmF3bWlkaS5jCmluZGV4IDE0ZTc0NTM5NjlhZi4uMjVmNjM2NTM2 ZWM5IDEwMDY0NAotLS0gYS9zb3VuZC9jb3JlL3Jhd21pZGkuYworKysgYi9zb3VuZC9jb3JlL3Jh d21pZGkuYwpAQCAtMTYwOSwxMSArMTYwOSwxMyBAQCBzdGF0aWMgaW50IHNuZF9yYXdtaWRpX2Rl dl9yZWdpc3RlcihzdHJ1Y3Qgc25kX2RldmljZSAqZGV2aWNlKQogCQlyZXR1cm4gLUVCVVNZOwog CX0KIAlsaXN0X2FkZF90YWlsKCZybWlkaS0+bGlzdCwgJnNuZF9yYXdtaWRpX2RldmljZXMpOwor CW11dGV4X3VubG9jaygmcmVnaXN0ZXJfbXV0ZXgpOwogCXNwcmludGYobmFtZSwgIm1pZGlDJWlE JWkiLCBybWlkaS0+Y2FyZC0+bnVtYmVyLCBybWlkaS0+ZGV2aWNlKTsKIAlpZiAoKGVyciA9IHNu ZF9yZWdpc3Rlcl9kZXZpY2UoU05EUlZfREVWSUNFX1RZUEVfUkFXTUlESSwKIAkJCQkgICAgICAg cm1pZGktPmNhcmQsIHJtaWRpLT5kZXZpY2UsCiAJCQkJICAgICAgICZzbmRfcmF3bWlkaV9mX29w cywgcm1pZGksIG5hbWUpKSA8IDApIHsKIAkJc25kX3ByaW50ayhLRVJOX0VSUiAidW5hYmxlIHRv IHJlZ2lzdGVyIHJhd21pZGkgZGV2aWNlICVpOiVpXG4iLCBybWlkaS0+Y2FyZC0+bnVtYmVyLCBy bWlkaS0+ZGV2aWNlKTsKKwkJbXV0ZXhfbG9jaygmcmVnaXN0ZXJfbXV0ZXgpOwogCQlsaXN0X2Rl bCgmcm1pZGktPmxpc3QpOwogCQltdXRleF91bmxvY2soJnJlZ2lzdGVyX211dGV4KTsKIAkJcmV0 dXJuIGVycjsKQEAgLTE2MjEsNiArMTYyMyw3IEBAIHN0YXRpYyBpbnQgc25kX3Jhd21pZGlfZGV2 X3JlZ2lzdGVyKHN0cnVjdCBzbmRfZGV2aWNlICpkZXZpY2UpCiAJaWYgKHJtaWRpLT5vcHMgJiYg cm1pZGktPm9wcy0+ZGV2X3JlZ2lzdGVyICYmCiAJICAgIChlcnIgPSBybWlkaS0+b3BzLT5kZXZf cmVnaXN0ZXIocm1pZGkpKSA8IDApIHsKIAkJc25kX3VucmVnaXN0ZXJfZGV2aWNlKFNORFJWX0RF VklDRV9UWVBFX1JBV01JREksIHJtaWRpLT5jYXJkLCBybWlkaS0+ZGV2aWNlKTsKKwkJbXV0ZXhf bG9jaygmcmVnaXN0ZXJfbXV0ZXgpOwogCQlsaXN0X2RlbCgmcm1pZGktPmxpc3QpOwogCQltdXRl eF91bmxvY2soJnJlZ2lzdGVyX211dGV4KTsKIAkJcmV0dXJuIGVycjsKQEAgLTE2NDksNyArMTY1 Miw2IEBAIHN0YXRpYyBpbnQgc25kX3Jhd21pZGlfZGV2X3JlZ2lzdGVyKHN0cnVjdCBzbmRfZGV2 aWNlICpkZXZpY2UpCiAJCX0KIAl9CiAjZW5kaWYgLyogQ09ORklHX1NORF9PU1NFTVVMICovCi0J bXV0ZXhfdW5sb2NrKCZyZWdpc3Rlcl9tdXRleCk7CiAJc3ByaW50ZihuYW1lLCAibWlkaSVkIiwg cm1pZGktPmRldmljZSk7CiAJZW50cnkgPSBzbmRfaW5mb19jcmVhdGVfY2FyZF9lbnRyeShybWlk aS0+Y2FyZCwgbmFtZSwgcm1pZGktPmNhcmQtPnByb2Nfcm9vdCk7CiAJaWYgKGVudHJ5KSB7CmRp ZmYgLS1naXQgYS9zb3VuZC9jb3JlL3RpbWVyLmMgYi9zb3VuZC9jb3JlL3RpbWVyLmMKaW5kZXgg YmNlM2ZlMDUxZmJmLi41NjI4YjY1NDhkMTggMTAwNjQ0Ci0tLSBhL3NvdW5kL2NvcmUvdGltZXIu YworKysgYi9zb3VuZC9jb3JlL3RpbWVyLmMKQEAgLTM0LDYgKzM0LDkgQEAKICNpbmNsdWRlIDxz b3VuZC9pbml0dmFsLmg+CiAjaW5jbHVkZSA8bGludXgva21vZC5oPgogCisvKiBpbnRlcm5hbCBm bGFncyAqLworI2RlZmluZSBTTkRSVl9USU1FUl9JRkxHX1BBVVNFRAkJMHgwMDAxMDAwMAorCiAj aWYgZGVmaW5lZChDT05GSUdfU05EX0hSVElNRVIpIHx8IGRlZmluZWQoQ09ORklHX1NORF9IUlRJ TUVSX01PRFVMRSkKICNkZWZpbmUgREVGQVVMVF9USU1FUl9MSU1JVCA0CiAjZWxpZiBkZWZpbmVk KENPTkZJR19TTkRfUlRDVElNRVIpIHx8IGRlZmluZWQoQ09ORklHX1NORF9SVENUSU1FUl9NT0RV TEUpCkBAIC0yOTAsOCArMjkzLDE5IEBAIGludCBzbmRfdGltZXJfb3BlbihzdHJ1Y3Qgc25kX3Rp bWVyX2luc3RhbmNlICoqdGksCiAJfQogCXRpbWVyaS0+c2xhdmVfY2xhc3MgPSB0aWQtPmRldl9z Y2xhc3M7CiAJdGltZXJpLT5zbGF2ZV9pZCA9IHNsYXZlX2lkOwotCWlmIChsaXN0X2VtcHR5KCZ0 aW1lci0+b3Blbl9saXN0X2hlYWQpICYmIHRpbWVyLT5ody5vcGVuKQotCQl0aW1lci0+aHcub3Bl bih0aW1lcik7CisKKwlpZiAobGlzdF9lbXB0eSgmdGltZXItPm9wZW5fbGlzdF9oZWFkKSAmJiB0 aW1lci0+aHcub3BlbikgeworCQlpbnQgZXJyID0gdGltZXItPmh3Lm9wZW4odGltZXIpOworCQlp ZiAoZXJyKSB7CisJCQlrZnJlZSh0aW1lcmktPm93bmVyKTsKKwkJCWtmcmVlKHRpbWVyaSk7CisK KwkJCW1vZHVsZV9wdXQodGltZXItPm1vZHVsZSk7CisJCQltdXRleF91bmxvY2soJnJlZ2lzdGVy X211dGV4KTsKKwkJCXJldHVybiBlcnI7CisJCX0KKwl9CisKIAlsaXN0X2FkZF90YWlsKCZ0aW1l cmktPm9wZW5fbGlzdCwgJnRpbWVyLT5vcGVuX2xpc3RfaGVhZCk7CiAJc25kX3RpbWVyX2NoZWNr X21hc3Rlcih0aW1lcmkpOwogCW11dGV4X3VubG9jaygmcmVnaXN0ZXJfbXV0ZXgpOwpAQCAtMjk5 LDggKzMxMyw3IEBAIGludCBzbmRfdGltZXJfb3BlbihzdHJ1Y3Qgc25kX3RpbWVyX2luc3RhbmNl ICoqdGksCiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBpbnQgX3NuZF90aW1lcl9zdG9wKHN0cnVj dCBzbmRfdGltZXJfaW5zdGFuY2UgKnRpbWVyaSwKLQkJCSAgIGludCBrZWVwX2ZsYWcsIGludCBl dmVudCk7CitzdGF0aWMgaW50IF9zbmRfdGltZXJfc3RvcChzdHJ1Y3Qgc25kX3RpbWVyX2luc3Rh bmNlICp0aW1lcmksIGludCBldmVudCk7CiAKIC8qCiAgKiBjbG9zZSBhIHRpbWVyIGluc3RhbmNl CkBAIC0zNDIsNyArMzU1LDcgQEAgaW50IHNuZF90aW1lcl9jbG9zZShzdHJ1Y3Qgc25kX3RpbWVy X2luc3RhbmNlICp0aW1lcmkpCiAJCXNwaW5fdW5sb2NrX2lycSgmdGltZXItPmxvY2spOwogCQlt dXRleF9sb2NrKCZyZWdpc3Rlcl9tdXRleCk7CiAJCWxpc3RfZGVsKCZ0aW1lcmktPm9wZW5fbGlz dCk7Ci0JCWlmICh0aW1lciAmJiBsaXN0X2VtcHR5KCZ0aW1lci0+b3Blbl9saXN0X2hlYWQpICYm CisJCWlmIChsaXN0X2VtcHR5KCZ0aW1lci0+b3Blbl9saXN0X2hlYWQpICYmCiAJCSAgICB0aW1l ci0+aHcuY2xvc2UpCiAJCQl0aW1lci0+aHcuY2xvc2UodGltZXIpOwogCQkvKiByZW1vdmUgc2xh dmUgbGlua3MgKi8KQEAgLTQ5NCw4ICs1MDcsNyBAQCBpbnQgc25kX3RpbWVyX3N0YXJ0KHN0cnVj dCBzbmRfdGltZXJfaW5zdGFuY2UgKnRpbWVyaSwgdW5zaWduZWQgaW50IHRpY2tzKQogCXJldHVy biByZXN1bHQ7CiB9CiAKLXN0YXRpYyBpbnQgX3NuZF90aW1lcl9zdG9wKHN0cnVjdCBzbmRfdGlt ZXJfaW5zdGFuY2UgKiB0aW1lcmksCi0JCQkgICBpbnQga2VlcF9mbGFnLCBpbnQgZXZlbnQpCitz dGF0aWMgaW50IF9zbmRfdGltZXJfc3RvcChzdHJ1Y3Qgc25kX3RpbWVyX2luc3RhbmNlICp0aW1l cmksIGludCBldmVudCkKIHsKIAlzdHJ1Y3Qgc25kX3RpbWVyICp0aW1lcjsKIAl1bnNpZ25lZCBs b25nIGZsYWdzOwpAQCAtNTA0LDIxICs1MTYsMTkgQEAgc3RhdGljIGludCBfc25kX3RpbWVyX3N0 b3Aoc3RydWN0IHNuZF90aW1lcl9pbnN0YW5jZSAqIHRpbWVyaSwKIAkJcmV0dXJuIC1FTlhJTzsK IAogCWlmICh0aW1lcmktPmZsYWdzICYgU05EUlZfVElNRVJfSUZMR19TTEFWRSkgewotCQlpZiAo IWtlZXBfZmxhZykgewotCQkJc3Bpbl9sb2NrX2lycXNhdmUoJnNsYXZlX2FjdGl2ZV9sb2NrLCBm bGFncyk7Ci0JCQlpZiAoISh0aW1lcmktPmZsYWdzICYgU05EUlZfVElNRVJfSUZMR19SVU5OSU5H KSkgewotCQkJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnNsYXZlX2FjdGl2ZV9sb2NrLCBmbGFn cyk7Ci0JCQkJcmV0dXJuIC1FQlVTWTsKLQkJCX0KLQkJCWlmICh0aW1lcmktPnRpbWVyKQotCQkJ CXNwaW5fbG9jaygmdGltZXJpLT50aW1lci0+bG9jayk7Ci0JCQl0aW1lcmktPmZsYWdzICY9IH5T TkRSVl9USU1FUl9JRkxHX1JVTk5JTkc7Ci0JCQlsaXN0X2RlbF9pbml0KCZ0aW1lcmktPmFja19s aXN0KTsKLQkJCWxpc3RfZGVsX2luaXQoJnRpbWVyaS0+YWN0aXZlX2xpc3QpOwotCQkJaWYgKHRp bWVyaS0+dGltZXIpCi0JCQkJc3Bpbl91bmxvY2soJnRpbWVyaS0+dGltZXItPmxvY2spOworCQlz cGluX2xvY2tfaXJxc2F2ZSgmc2xhdmVfYWN0aXZlX2xvY2ssIGZsYWdzKTsKKwkJaWYgKCEodGlt ZXJpLT5mbGFncyAmIFNORFJWX1RJTUVSX0lGTEdfUlVOTklORykpIHsKIAkJCXNwaW5fdW5sb2Nr X2lycXJlc3RvcmUoJnNsYXZlX2FjdGl2ZV9sb2NrLCBmbGFncyk7CisJCQlyZXR1cm4gLUVCVVNZ OwogCQl9CisJCWlmICh0aW1lcmktPnRpbWVyKQorCQkJc3Bpbl9sb2NrKCZ0aW1lcmktPnRpbWVy LT5sb2NrKTsKKwkJdGltZXJpLT5mbGFncyAmPSB+U05EUlZfVElNRVJfSUZMR19SVU5OSU5HOwor CQlsaXN0X2RlbF9pbml0KCZ0aW1lcmktPmFja19saXN0KTsKKwkJbGlzdF9kZWxfaW5pdCgmdGlt ZXJpLT5hY3RpdmVfbGlzdCk7CisJCWlmICh0aW1lcmktPnRpbWVyKQorCQkJc3Bpbl91bmxvY2so JnRpbWVyaS0+dGltZXItPmxvY2spOworCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZzbGF2ZV9h Y3RpdmVfbG9jaywgZmxhZ3MpOwogCQlnb3RvIF9fZW5kOwogCX0KIAl0aW1lciA9IHRpbWVyaS0+ dGltZXI7CkBAIC01NDQsOSArNTU0LDExIEBAIHN0YXRpYyBpbnQgX3NuZF90aW1lcl9zdG9wKHN0 cnVjdCBzbmRfdGltZXJfaW5zdGFuY2UgKiB0aW1lcmksCiAJCQl9CiAJCX0KIAl9Ci0JaWYgKCFr ZWVwX2ZsYWcpCi0JCXRpbWVyaS0+ZmxhZ3MgJj0KLQkJCX4oU05EUlZfVElNRVJfSUZMR19SVU5O SU5HIHwgU05EUlZfVElNRVJfSUZMR19TVEFSVCk7CisJdGltZXJpLT5mbGFncyAmPSB+KFNORFJW X1RJTUVSX0lGTEdfUlVOTklORyB8IFNORFJWX1RJTUVSX0lGTEdfU1RBUlQpOworCWlmIChldmVu dCA9PSBTTkRSVl9USU1FUl9FVkVOVF9TVE9QKQorCQl0aW1lcmktPmZsYWdzICY9IH5TTkRSVl9U SU1FUl9JRkxHX1BBVVNFRDsKKwllbHNlCisJCXRpbWVyaS0+ZmxhZ3MgfD0gU05EUlZfVElNRVJf SUZMR19QQVVTRUQ7CiAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmdGltZXItPmxvY2ssIGZsYWdz KTsKICAgICAgIF9fZW5kOgogCWlmIChldmVudCAhPSBTTkRSVl9USU1FUl9FVkVOVF9SRVNPTFVU SU9OKQpAQCAtNTY1LDcgKzU3Nyw3IEBAIGludCBzbmRfdGltZXJfc3RvcChzdHJ1Y3Qgc25kX3Rp bWVyX2luc3RhbmNlICp0aW1lcmkpCiAJdW5zaWduZWQgbG9uZyBmbGFnczsKIAlpbnQgZXJyOwog Ci0JZXJyID0gX3NuZF90aW1lcl9zdG9wKHRpbWVyaSwgMCwgU05EUlZfVElNRVJfRVZFTlRfU1RP UCk7CisJZXJyID0gX3NuZF90aW1lcl9zdG9wKHRpbWVyaSwgU05EUlZfVElNRVJfRVZFTlRfU1RP UCk7CiAJaWYgKGVyciA8IDApCiAJCXJldHVybiBlcnI7CiAJdGltZXIgPSB0aW1lcmktPnRpbWVy OwpAQCAtNTg5LDYgKzYwMSwxMCBAQCBpbnQgc25kX3RpbWVyX2NvbnRpbnVlKHN0cnVjdCBzbmRf dGltZXJfaW5zdGFuY2UgKnRpbWVyaSkKIAogCWlmICh0aW1lcmkgPT0gTlVMTCkKIAkJcmV0dXJu IHJlc3VsdDsKKwkvKiB0aW1lciBjYW4gY29udGludWUgb25seSBhZnRlciBwYXVzZSAqLworCWlm ICghKHRpbWVyaS0+ZmxhZ3MgJiBTTkRSVl9USU1FUl9JRkxHX1BBVVNFRCkpCisJCXJldHVybiAt RUlOVkFMOworCiAJaWYgKHRpbWVyaS0+ZmxhZ3MgJiBTTkRSVl9USU1FUl9JRkxHX1NMQVZFKQog CQlyZXR1cm4gc25kX3RpbWVyX3N0YXJ0X3NsYXZlKHRpbWVyaSk7CiAJdGltZXIgPSB0aW1lcmkt PnRpbWVyOwpAQCAtNjE0LDcgKzYzMCw3IEBAIGludCBzbmRfdGltZXJfY29udGludWUoc3RydWN0 IHNuZF90aW1lcl9pbnN0YW5jZSAqdGltZXJpKQogICovCiBpbnQgc25kX3RpbWVyX3BhdXNlKHN0 cnVjdCBzbmRfdGltZXJfaW5zdGFuY2UgKiB0aW1lcmkpCiB7Ci0JcmV0dXJuIF9zbmRfdGltZXJf c3RvcCh0aW1lcmksIDAsIFNORFJWX1RJTUVSX0VWRU5UX1BBVVNFKTsKKwlyZXR1cm4gX3NuZF90 aW1lcl9zdG9wKHRpbWVyaSwgU05EUlZfVElNRVJfRVZFTlRfUEFVU0UpOwogfQogCiAvKgpAQCAt ODIyLDYgKzgzOCw3IEBAIGludCBzbmRfdGltZXJfbmV3KHN0cnVjdCBzbmRfY2FyZCAqY2FyZCwg Y2hhciAqaWQsIHN0cnVjdCBzbmRfdGltZXJfaWQgKnRpZCwKIAl0aW1lci0+dG1yX3N1YmRldmlj ZSA9IHRpZC0+c3ViZGV2aWNlOwogCWlmIChpZCkKIAkJc3RybGNweSh0aW1lci0+aWQsIGlkLCBz aXplb2YodGltZXItPmlkKSk7CisJdGltZXItPnN0aWNrcyA9IDE7CiAJSU5JVF9MSVNUX0hFQUQo JnRpbWVyLT5kZXZpY2VfbGlzdCk7CiAJSU5JVF9MSVNUX0hFQUQoJnRpbWVyLT5vcGVuX2xpc3Rf aGVhZCk7CiAJSU5JVF9MSVNUX0hFQUQoJnRpbWVyLT5hY3RpdmVfbGlzdF9oZWFkKTsKQEAgLTE3 OTIsNiArMTgwOSw5IEBAIHN0YXRpYyBpbnQgc25kX3RpbWVyX3VzZXJfY29udGludWUoc3RydWN0 IGZpbGUgKmZpbGUpCiAJdHUgPSBmaWxlLT5wcml2YXRlX2RhdGE7CiAJaWYgKCF0dS0+dGltZXJp KQogCQlyZXR1cm4gLUVCQURGRDsKKwkvKiBzdGFydCB0aW1lciBpbnN0ZWFkIG9mIGNvbnRpbnVl IGlmIGl0J3Mgbm90IHVzZWQgYmVmb3JlICovCisJaWYgKCEodHUtPnRpbWVyaS0+ZmxhZ3MgJiBT TkRSVl9USU1FUl9JRkxHX1BBVVNFRCkpCisJCXJldHVybiBzbmRfdGltZXJfdXNlcl9zdGFydChm aWxlKTsKIAl0dS0+dGltZXJpLT5sb3N0ID0gMDsKIAlyZXR1cm4gKGVyciA9IHNuZF90aW1lcl9j b250aW51ZSh0dS0+dGltZXJpKSkgPCAwID8gZXJyIDogMDsKIH0KQEAgLTE5MjksNiArMTk0OSw3 IEBAIHN0YXRpYyBzc2l6ZV90IHNuZF90aW1lcl91c2VyX3JlYWQoc3RydWN0IGZpbGUgKmZpbGUs IGNoYXIgX191c2VyICpidWZmZXIsCiAJCXR1LT5xdXNlZC0tOwogCQlzcGluX3VubG9ja19pcnEo JnR1LT5xbG9jayk7CiAKKwkJbXV0ZXhfbG9jaygmdHUtPmlvY3RsX2xvY2spOwogCQlpZiAodHUt PnRyZWFkKSB7CiAJCQlpZiAoY29weV90b191c2VyKGJ1ZmZlciwgJnR1LT50cXVldWVbcWhlYWRd LAogCQkJCQkgc2l6ZW9mKHN0cnVjdCBzbmRfdGltZXJfdHJlYWQpKSkKQEAgLTE5MzgsNiArMTk1 OSw3IEBAIHN0YXRpYyBzc2l6ZV90IHNuZF90aW1lcl91c2VyX3JlYWQoc3RydWN0IGZpbGUgKmZp bGUsIGNoYXIgX191c2VyICpidWZmZXIsCiAJCQkJCSBzaXplb2Yoc3RydWN0IHNuZF90aW1lcl9y ZWFkKSkpCiAJCQkJZXJyID0gLUVGQVVMVDsKIAkJfQorCQltdXRleF91bmxvY2soJnR1LT5pb2N0 bF9sb2NrKTsKIAogCQlzcGluX2xvY2tfaXJxKCZ0dS0+cWxvY2spOwogCQlpZiAoZXJyIDwgMCkK ZGlmZiAtLWdpdCBhL3ZpcnQva3ZtL2t2bV9tYWluLmMgYi92aXJ0L2t2bS9rdm1fbWFpbi5jCmlu ZGV4IDhiMDYxN2E2NDhkMS4uMzc1ZTA1Mzk1OTdjIDEwMDY0NAotLS0gYS92aXJ0L2t2bS9rdm1f bWFpbi5jCisrKyBiL3ZpcnQva3ZtL2t2bV9tYWluLmMKQEAgLTE1Niw2ICsxNTYsNyBAQCB2b2lk IHZjcHVfbG9hZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiAJa3ZtX2FyY2hfdmNwdV9sb2FkKHZj cHUsIGNwdSk7CiAJcHV0X2NwdSgpOwogfQorRVhQT1JUX1NZTUJPTF9HUEwodmNwdV9sb2FkKTsK IAogdm9pZCB2Y3B1X3B1dChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiB7CkBAIC0xNjUsNiArMTY2 LDcgQEAgdm9pZCB2Y3B1X3B1dChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiAJcHJlZW1wdF9lbmFi bGUoKTsKIAltdXRleF91bmxvY2soJnZjcHUtPm11dGV4KTsKIH0KK0VYUE9SVF9TWU1CT0xfR1BM KHZjcHVfcHV0KTsKIAogc3RhdGljIHZvaWQgYWNrX2ZsdXNoKHZvaWQgKl9jb21wbGV0ZWQpCiB7 Cn== --=-UP7ka0/orhuGBOl5sCw9-- --=-J33oBKbWyqNpXO9gLZtz Content-Type: application/pgp-signature; name="signature.asc" Content-Description: This is a digitally signed message part -----BEGIN PGP SIGNATURE----- iQIcBAABCgAGBQJYKTf9AAoJEOe/yOyVhhEJyRwQAMG7dCU/BvtjpXn2JSNpjyrP NzU/HMlmmcO+ycqZr4OwZqgMCtIKuAAxVXYuOnJP0ngsRjr/f3b4YSdLndP5yQS3 xjMaH05Jo2lnHhSPMT7ET/Q7fWpi9mlcwBd5iezN1y+3PLVp/6eYWRHw+LKdXT2a G2AgVuYUPgJ20+O3/+wk/uTFBdQ3NPH7RgRnV+7/h1u2zmKUjV8UVdF1QxOCdZHk sSP+j3eSujqzvS8oUqXTLcMdV5SP4hn/7IxpbAzzUp7i+adSKZDjpBQavnphbdQh TBO3WRejZgvgTaUmj48+QBg/3nFk6ju4/4gfl9jzXr2nfV4Hb+rWJRW46bY3jNNp qkO7vMkocc1xOvnGF1yaCXDBWb49w8Iq0Cu2yQMMowjcqeJvkogJEk56nKGQTVOX EJX3FtZnZ3IoADhO63Ud35u6fhiJoIXsnC/LmG/O6/TrKFb3fLoSPw6DoLXJsH3K 9hVeqAcd9FKWI3cjB8l7jgmDC9MiF6tDLvYiEXIXiG5zROVHc4z3OZmqLNQnNy2h Hxp/r5tKbDYMovSzpOCkHhngaubAitXfeMwRBT2y+ONNRBAsWMwSgv91eXfh8hF7 qmlz9hLJJ0eRwQis6ldmylREbugoCbaZsOYl7A4Fzqm1ToHRqpaJgZ7n43j4L4Q8 zBH4evwkyzLcJycAyD4g =rd1S -----END PGP SIGNATURE----- --=-J33oBKbWyqNpXO9gLZtz--