From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jeykumar Sankaran Subject: [DPU PATCH v4 1/6] drm/msm: remove display stream compression(DSC) support for SM845 Date: Fri, 1 Jun 2018 10:45:48 -0700 Message-ID: <1527875153-27446-2-git-send-email-jsanka@codeaurora.org> References: <1527875153-27446-1-git-send-email-jsanka@codeaurora.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1527875153-27446-1-git-send-email-jsanka@codeaurora.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org, linux-arm-msm@vger.kernel.org Cc: hoegsberg@google.com, Rajesh Yadav List-Id: linux-arm-msm@vger.kernel.org VXBzdHJlYW0gRFNJIGRyaXZlciBkb2Vzbid0IHN1cHBvcnQgRFNDIHBhbmVscyB5ZXQuIFJlbW92 ZQp0aGUgc3VwcG9ydCBmb3IgY29tcHJlc3Npb24gZnJvbSBEUFUgZm9yIG5vdy4KCmNoYW5nZXMg aW4gdjI6CgktIGluZGVudHMgYW5kIHVucmVsYXRlZCBjaGFuZ2UgY2xlYW4gdXAgKFNlYW4gUGF1 bCkKCS0gZml4IGNvbXBpbGF0aW9uIGRlcGVuZGVuY3kgaW4gZHNpLXN0YWdpbmcKY2hhbmdlcyBp biB2MzoKCS1ub25lCmNoYW5nZXMgaW4gdjQ6Cgktbm9uZQoKU2lnbmVkLW9mZi1ieTogSmV5a3Vt YXIgU2Fua2FyYW4gPGpzYW5rYUBjb2RlYXVyb3JhLm9yZz4KU2lnbmVkLW9mZi1ieTogU2VhbiBQ YXVsIDxzZWFucGF1bEBjaHJvbWl1bS5vcmc+ClNpZ25lZC1vZmYtYnk6IFJhamVzaCBZYWRhdiA8 cnlhZGF2QGNvZGVhdXJvcmEub3JnPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9tc20vTWFrZWZpbGUg ICAgICAgICAgICAgICAgICAgICAgIHwgICAxIC0KIGRyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9k cHUxL2RwdV9jb25uZWN0b3IuYyAgICAgIHwgICA0IC0KIGRyaXZlcnMvZ3B1L2RybS9tc20vZGlz cC9kcHUxL2RwdV9lbmNvZGVyLmMgICAgICAgIHwgNDc2ICstLS0tLS0tLS0tLS0tLS0tLS0tLQog ZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2VuY29kZXIuaCAgICAgICAgfCAgMTQg LQogZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2VuY29kZXJfcGh5cy5oICAgfCAg IDcgKy0KIC4uLi9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2VuY29kZXJfcGh5c19jbWQuYyAg IHwgICAxIC0KIC4uLi9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2VuY29kZXJfcGh5c192aWQu YyAgIHwgICA3ICstCiBkcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdfY2F0YWxv Zy5jICAgICB8ICAyNSAtLQogZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3X2Nh dGFsb2cuaCAgICAgfCAgMTYgLQogZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3 X2RzYy5jICAgICAgICAgfCAyNTIgLS0tLS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9tc20vZGlz cC9kcHUxL2RwdV9od19kc2MuaCAgICAgICAgIHwgMTAwIC0tLS0tCiBkcml2ZXJzL2dwdS9kcm0v bXNtL2Rpc3AvZHB1MS9kcHVfaHdfbWRzcy5oICAgICAgICB8ICAxNyArLQogZHJpdmVycy9ncHUv ZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3X3Bpbmdwb25nLmMgICAgfCAgNDggLS0tCiBkcml2ZXJz L2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdfcGluZ3BvbmcuaCAgICB8ICAyMiAtCiBkcml2 ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdfdG9wLmMgICAgICAgICB8ICAxMyAtCiBk cml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdfdG9wLmggICAgICAgICB8ICAgNyAt CiBkcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfcm0uYyAgICAgICAgICAgICB8ICA1 NSAtLS0KIGRyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9ybS5oICAgICAgICAgICAg IHwgICA4IC0KIGRyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV93Yi5jICAgICAgICAg ICAgIHwgICAyIC0KIGRyaXZlcnMvZ3B1L2RybS9tc20vZHNpLXN0YWdpbmcvZHNpX2RybS5jICAg ICAgICAgIHwgICA3IC0KIGRyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2Rydi5oICAgICAgICAgICAg ICAgICAgICAgIHwgIDE2IC0KIDIxIGZpbGVzIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgMTA5 MyBkZWxldGlvbnMoLSkKIGRlbGV0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vbXNtL2Rp c3AvZHB1MS9kcHVfaHdfZHNjLmMKIGRlbGV0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0v bXNtL2Rpc3AvZHB1MS9kcHVfaHdfZHNjLmgKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v bXNtL01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL21zbS9NYWtlZmlsZQppbmRleCBhNDU4YjM2 Li5kOTQ3ZjJhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL01ha2VmaWxlCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9tc20vTWFrZWZpbGUKQEAgLTY0LDcgKzY0LDYgQEAgbXNtLXkgOj0g XAogCWRpc3AvZHB1MS9kcHVfaHdfY29sb3JfcHJvY2Vzc2luZ192MV83Lm8gXAogCWRpc3AvZHB1 MS9kcHVfaHdfY3RsLm8gXAogCWRpc3AvZHB1MS9kcHVfaHdfZHMubyBcCi0JZGlzcC9kcHUxL2Rw dV9od19kc2MubyBcCiAJZGlzcC9kcHUxL2RwdV9od19kc3BwLm8gXAogCWRpc3AvZHB1MS9kcHVf aHdfaW50ZXJydXB0cy5vIFwKIAlkaXNwL2RwdTEvZHB1X2h3X2ludGYubyBcCmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfY29ubmVjdG9yLmMgYi9kcml2ZXJz L2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfY29ubmVjdG9yLmMKaW5kZXggYTU3NDk1Zi4uNWYz ZWZlNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2Nvbm5l Y3Rvci5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9jb25uZWN0b3Iu YwpAQCAtMzYsMTIgKzM2LDggQEAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX3Byb3BfZW51bV9s aXN0IGVfdG9wb2xvZ3lfbmFtZVtdID0gewogCXtEUFVfUk1fVE9QT0xPR1lfTk9ORSwJImRwdV9u b25lIn0sCiAJe0RQVV9STV9UT1BPTE9HWV9TSU5HTEVQSVBFLAkiZHB1X3NpbmdsZXBpcGUifSwK LQl7RFBVX1JNX1RPUE9MT0dZX1NJTkdMRVBJUEVfRFNDLAkiZHB1X3NpbmdsZXBpcGVfZHNjIn0s CiAJe0RQVV9STV9UT1BPTE9HWV9EVUFMUElQRSwJImRwdV9kdWFscGlwZSJ9LAotCXtEUFVfUk1f VE9QT0xPR1lfRFVBTFBJUEVfRFNDLAkiZHB1X2R1YWxwaXBlX2RzYyJ9LAogCXtEUFVfUk1fVE9Q T0xPR1lfRFVBTFBJUEVfM0RNRVJHRSwJImRwdV9kdWFscGlwZW1lcmdlIn0sCi0Je0RQVV9STV9U T1BPTE9HWV9EVUFMUElQRV8zRE1FUkdFX0RTQywJImRwdV9kdWFscGlwZW1lcmdlX2RzYyJ9LAot CXtEUFVfUk1fVE9QT0xPR1lfRFVBTFBJUEVfRFNDTUVSR0UsCSJkcHVfZHVhbHBpcGVfZHNjbWVy Z2UifSwKIAl7RFBVX1JNX1RPUE9MT0dZX1BQU1BMSVQsCSJkcHVfcHBzcGxpdCJ9LAogfTsKIHN0 YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX3Byb3BfZW51bV9saXN0IGVfdG9wb2xvZ3lfY29udHJvbFtd ID0gewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2VuY29k ZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9lbmNvZGVyLmMKaW5kZXgg MTk4YzYxOC4uMTUxODg5YiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2Rw dTEvZHB1X2VuY29kZXIuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVf ZW5jb2Rlci5jCkBAIC0zMiw3ICszMiw2IEBACiAjaW5jbHVkZSAiZHB1X2Zvcm1hdHMuaCIKICNp bmNsdWRlICJkcHVfZW5jb2Rlcl9waHlzLmgiCiAjaW5jbHVkZSAiZHB1X3Bvd2VyX2hhbmRsZS5o IgotI2luY2x1ZGUgImRwdV9od19kc2MuaCIKICNpbmNsdWRlICJkcHVfY3J0Yy5oIgogI2luY2x1 ZGUgImRwdV90cmFjZS5oIgogI2luY2x1ZGUgImRwdV9jb3JlX2lycS5oIgpAQCAtMTUyLDcgKzE1 MSw2IEBAIGVudW0gZHB1X2VuY19yY19zdGF0ZXMgewogICoJCQlPbmx5IHZhbGlkIGFmdGVyIGVu YWJsZS4gQ2xlYXJlZCBhcyBkaXNhYmxlLgogICogQGh3X3BwCQlIYW5kbGUgdG8gdGhlIHBpbmdw b25nIGJsb2NrcyB1c2VkIGZvciB0aGUgZGlzcGxheS4gTm8uCiAgKgkJCXBpbmdwb25nIGJsb2Nr cyBjYW4gYmUgZGlmZmVyZW50IHRoYW4gbnVtX3BoeXNfZW5jcy4KLSAqIEBod19kc2M6CQlBcnJh eSBvZiBEU0MgYmxvY2sgaGFuZGxlcyB1c2VkIGZvciB0aGUgZGlzcGxheS4KICAqIEBpbnRmc19z d2FwcGVkCVdoZXRoZXIgb3Igbm90IHRoZSBwaHlzX2VuYyBpbnRlcmZhY2VzIGhhdmUgYmVlbiBz d2FwcGVkCiAgKgkJCWZvciBwYXJ0aWFsIHVwZGF0ZSByaWdodC1vbmx5IGNhc2VzLCBzdWNoIGFz IHBpbmdwb25nCiAgKgkJCXNwbGl0IHdoZXJlIHZpcnR1YWwgcGluZ3BvbmcgZG9lcyBub3QgZ2Vu ZXJhdGUgSVJRcwpAQCAtMTk5LDcgKzE5Nyw2IEBAIHN0cnVjdCBkcHVfZW5jb2Rlcl92aXJ0IHsK IAlzdHJ1Y3QgZHB1X2VuY29kZXJfcGh5cyAqcGh5c19lbmNzW01BWF9QSFlTX0VOQ09ERVJTX1BF Ul9WSVJUVUFMXTsKIAlzdHJ1Y3QgZHB1X2VuY29kZXJfcGh5cyAqY3VyX21hc3RlcjsKIAlzdHJ1 Y3QgZHB1X2h3X3Bpbmdwb25nICpod19wcFtNQVhfQ0hBTk5FTFNfUEVSX0VOQ107Ci0Jc3RydWN0 IGRwdV9od19kc2MgKmh3X2RzY1tNQVhfQ0hBTk5FTFNfUEVSX0VOQ107CiAKIAlib29sIGludGZz X3N3YXBwZWQ7CiAKQEAgLTIzNCwyMSArMjMxLDYgQEAgc3RydWN0IGRwdV9lbmNvZGVyX3ZpcnQg ewogCiAjZGVmaW5lIHRvX2RwdV9lbmNvZGVyX3ZpcnQoeCkgY29udGFpbmVyX29mKHgsIHN0cnVj dCBkcHVfZW5jb2Rlcl92aXJ0LCBiYXNlKQogCi1ib29sIGRwdV9lbmNvZGVyX2lzX2RzY19lbmFi bGVkKHN0cnVjdCBkcm1fZW5jb2RlciAqZHJtX2VuYykKLQotewotCXN0cnVjdCBkcHVfZW5jb2Rl cl92aXJ0ICpkcHVfZW5jOwotCXN0cnVjdCBtc21fY29tcHJlc3Npb25faW5mbyAqY29tcF9pbmZv OwotCi0JaWYgKCFkcm1fZW5jKQotCQlyZXR1cm4gZmFsc2U7Ci0KLQlkcHVfZW5jID0gdG9fZHB1 X2VuY29kZXJfdmlydChkcm1fZW5jKTsKLQljb21wX2luZm8gPSAmZHB1X2VuYy0+bW9kZV9pbmZv LmNvbXBfaW5mbzsKLQotCXJldHVybiAoY29tcF9pbmZvLT5jb21wX3R5cGUgPT0gTVNNX0RJU1BM QVlfQ09NUFJFU1NJT05fRFNDKTsKLX0KLQogdm9pZCBkcHVfZW5jb2Rlcl9zZXRfaWRsZV90aW1l b3V0KHN0cnVjdCBkcm1fZW5jb2RlciAqZHJtX2VuYywgdTMyIGlkbGVfdGltZW91dCkKIHsKIAlz dHJ1Y3QgZHB1X2VuY29kZXJfdmlydCAqZHB1X2VuYzsKQEAgLTI2MCwzMCArMjQyLDYgQEAgdm9p ZCBkcHVfZW5jb2Rlcl9zZXRfaWRsZV90aW1lb3V0KHN0cnVjdCBkcm1fZW5jb2RlciAqZHJtX2Vu YywgdTMyIGlkbGVfdGltZW91dCkKIAlkcHVfZW5jLT5pZGxlX3RpbWVvdXQgPSBpZGxlX3RpbWVv dXQ7CiB9CiAKLWJvb2wgZHB1X2VuY29kZXJfaXNfZHNjX21lcmdlKHN0cnVjdCBkcm1fZW5jb2Rl ciAqZHJtX2VuYykKLXsKLQllbnVtIGRwdV9ybV90b3BvbG9neV9uYW1lIHRvcG9sb2d5OwotCXN0 cnVjdCBkcHVfZW5jb2Rlcl92aXJ0ICpkcHVfZW5jOwotCXN0cnVjdCBkcm1fY29ubmVjdG9yICpk cm1fY29ubjsKLQotCWlmICghZHJtX2VuYykKLQkJcmV0dXJuIGZhbHNlOwotCi0JZHB1X2VuYyA9 IHRvX2RwdV9lbmNvZGVyX3ZpcnQoZHJtX2VuYyk7Ci0JaWYgKCFkcHVfZW5jLT5jdXJfbWFzdGVy KQotCQlyZXR1cm4gZmFsc2U7Ci0KLQlkcm1fY29ubiA9IGRwdV9lbmMtPmN1cl9tYXN0ZXItPmNv bm5lY3RvcjsKLQlpZiAoIWRybV9jb25uKQotCQlyZXR1cm4gZmFsc2U7Ci0KLQl0b3BvbG9neSA9 IGRwdV9jb25uZWN0b3JfZ2V0X3RvcG9sb2d5X25hbWUoZHJtX2Nvbm4pOwotCWlmICh0b3BvbG9n eSA9PSBEUFVfUk1fVE9QT0xPR1lfRFVBTFBJUEVfRFNDTUVSR0UpCi0JCXJldHVybiB0cnVlOwot Ci0JcmV0dXJuIGZhbHNlOwotfQotCiBzdGF0aWMgaW5saW5lIGludCBfZHB1X2VuY29kZXJfcG93 ZXJfZW5hYmxlKHN0cnVjdCBkcHVfZW5jb2Rlcl92aXJ0ICpkcHVfZW5jLAogCQkJCQkJCQlib29s IGVuYWJsZSkKIHsKQEAgLTc0NSwzMTIgKzcwMyw2IEBAIHN0YXRpYyBpbnQgZHB1X2VuY29kZXJf dmlydF9hdG9taWNfY2hlY2soCiAJcmV0dXJuIHJldDsKIH0KIAotc3RhdGljIGludCBfZHB1X2Vu Y29kZXJfZHNjX3VwZGF0ZV9waWNfZGltKHN0cnVjdCBtc21fZGlzcGxheV9kc2NfaW5mbyAqZHNj LAotCQlpbnQgcGljX3dpZHRoLCBpbnQgcGljX2hlaWdodCkKLXsKLQlpZiAoIWRzYyB8fCAhcGlj X3dpZHRoIHx8ICFwaWNfaGVpZ2h0KSB7Ci0JCURQVV9FUlJPUigiaW52YWxpZCBpbnB1dDogcGlj X3dpZHRoPSVkIHBpY19oZWlnaHQ9JWRcbiIsCi0JCQlwaWNfd2lkdGgsIHBpY19oZWlnaHQpOwot CQlyZXR1cm4gLUVJTlZBTDsKLQl9Ci0KLQlpZiAoKHBpY193aWR0aCAlIGRzYy0+c2xpY2Vfd2lk dGgpIHx8Ci0JICAgIChwaWNfaGVpZ2h0ICUgZHNjLT5zbGljZV9oZWlnaHQpKSB7Ci0JCURQVV9F UlJPUigicGljX2RpbT0lZHglZCBoYXMgdG8gYmUgbXVsdGlwbGUgb2Ygc2xpY2U9JWR4JWRcbiIs Ci0JCQlwaWNfd2lkdGgsIHBpY19oZWlnaHQsCi0JCQlkc2MtPnNsaWNlX3dpZHRoLCBkc2MtPnNs aWNlX2hlaWdodCk7Ci0JCXJldHVybiAtRUlOVkFMOwotCX0KLQotCWRzYy0+cGljX3dpZHRoID0g cGljX3dpZHRoOwotCWRzYy0+cGljX2hlaWdodCA9IHBpY19oZWlnaHQ7Ci0KLQlyZXR1cm4gMDsK LX0KLQotc3RhdGljIHZvaWQgX2RwdV9lbmNvZGVyX2RzY19wY2xrX3BhcmFtX2NhbGMoc3RydWN0 IG1zbV9kaXNwbGF5X2RzY19pbmZvICpkc2MsCi0JCWludCBpbnRmX3dpZHRoKQotewotCWludCBz bGljZV9wZXJfcGt0LCBzbGljZV9wZXJfaW50ZjsKLQlpbnQgYnl0ZXNfaW5fc2xpY2UsIHRvdGFs X2J5dGVzX3Blcl9pbnRmOwotCi0JaWYgKCFkc2MgfHwgIWRzYy0+c2xpY2Vfd2lkdGggfHwgIWRz Yy0+c2xpY2VfcGVyX3BrdCB8fAotCSAgICAoaW50Zl93aWR0aCA8IGRzYy0+c2xpY2Vfd2lkdGgp KSB7Ci0JCURQVV9FUlJPUigiaW52YWxpZCBpbnB1dDogaW50Zl93aWR0aD0lZCBzbGljZV93aWR0 aD0lZFxuIiwKLQkJCWludGZfd2lkdGgsIGRzYyA/IGRzYy0+c2xpY2Vfd2lkdGggOiAtMSk7Ci0J CXJldHVybjsKLQl9Ci0KLQlzbGljZV9wZXJfcGt0ID0gZHNjLT5zbGljZV9wZXJfcGt0OwotCXNs aWNlX3Blcl9pbnRmID0gRElWX1JPVU5EX1VQKGludGZfd2lkdGgsIGRzYy0+c2xpY2Vfd2lkdGgp OwotCi0JLyoKLQkgKiBJZiBzbGljZV9wZXJfcGt0IGlzIGdyZWF0ZXIgdGhhbiBzbGljZV9wZXJf aW50ZiB0aGVuIGRlZmF1bHQgdG8gMS4KLQkgKiBUaGlzIGNhbiBoYXBwZW4gZHVyaW5nIHBhcnRp YWwgdXBkYXRlLgotCSAqLwotCWlmIChzbGljZV9wZXJfcGt0ID4gc2xpY2VfcGVyX2ludGYpCi0J CXNsaWNlX3Blcl9wa3QgPSAxOwotCi0JYnl0ZXNfaW5fc2xpY2UgPSBESVZfUk9VTkRfVVAoZHNj LT5zbGljZV93aWR0aCAqIGRzYy0+YnBwLCA4KTsKLQl0b3RhbF9ieXRlc19wZXJfaW50ZiA9IGJ5 dGVzX2luX3NsaWNlICogc2xpY2VfcGVyX2ludGY7Ci0KLQlkc2MtPmVvbF9ieXRlX251bSA9IHRv dGFsX2J5dGVzX3Blcl9pbnRmICUgMzsKLQlkc2MtPnBjbGtfcGVyX2xpbmUgPSAgRElWX1JPVU5E X1VQKHRvdGFsX2J5dGVzX3Blcl9pbnRmLCAzKTsKLQlkc2MtPmJ5dGVzX2luX3NsaWNlID0gYnl0 ZXNfaW5fc2xpY2U7Ci0JZHNjLT5ieXRlc19wZXJfcGt0ID0gYnl0ZXNfaW5fc2xpY2UgKiBzbGlj ZV9wZXJfcGt0OwotCWRzYy0+cGt0X3Blcl9saW5lID0gc2xpY2VfcGVyX2ludGYgLyBzbGljZV9w ZXJfcGt0OwotfQotCi1zdGF0aWMgaW50IF9kcHVfZW5jb2Rlcl9kc2NfaW5pdGlhbF9saW5lX2Nh bGMoc3RydWN0IG1zbV9kaXNwbGF5X2RzY19pbmZvICpkc2MsCi0JCWludCBlbmNfaXBfd2lkdGgp Ci17Ci0JaW50IHNzbV9kZWxheSwgdG90YWxfcGl4ZWxzLCBzb2Z0X3NsaWNlX3Blcl9lbmM7Ci0K LQlzb2Z0X3NsaWNlX3Blcl9lbmMgPSBlbmNfaXBfd2lkdGggLyBkc2MtPnNsaWNlX3dpZHRoOwot Ci0JLyoKLQkgKiBtaW5pbXVtIG51bWJlciBvZiBpbml0aWFsIGxpbmUgcGl4ZWxzIGlzIGEgc3Vt IG9mOgotCSAqIDEuIHN1Yi1zdHJlYW0gbXVsdGlwbGV4ZXIgZGVsYXkgKDgzIGdyb3VwcyBmb3Ig OGJwYywKLQkgKiAgICA5MSBmb3IgMTAgYnBjKSAqIDMKLQkgKiAyLiBmb3IgdHdvIHNvZnQgc2xp Y2UgY2FzZXMsIGFkZCBleHRyYSBzdWItc3RyZWFtIG11bHRpcGxleGVyICogMwotCSAqIDMuIHRo ZSBpbml0aWFsIHhtaXQgZGVsYXkKLQkgKiA0LiB0b3RhbCBwaXBlbGluZSBkZWxheSB0aHJvdWdo IHRoZSAibG9jayBzdGVwIiBvZiBlbmNvZGVyICg0NykKLQkgKiA1LiA2IGFkZGl0aW9uYWwgcGl4 ZWxzIGFzIHRoZSBvdXRwdXQgb2YgdGhlIHJhdGUgYnVmZmVyIGlzCi0JICogICAgNDggYml0cyB3 aWRlCi0JICovCi0Jc3NtX2RlbGF5ID0gKChkc2MtPmJwYyA8IDEwKSA/IDg0IDogOTIpOwotCXRv dGFsX3BpeGVscyA9IHNzbV9kZWxheSAqIDMgKyBkc2MtPmluaXRpYWxfeG1pdF9kZWxheSArIDQ3 OwotCWlmIChzb2Z0X3NsaWNlX3Blcl9lbmMgPiAxKQotCQl0b3RhbF9waXhlbHMgKz0gKHNzbV9k ZWxheSAqIDMpOwotCWRzYy0+aW5pdGlhbF9saW5lcyA9IERJVl9ST1VORF9VUCh0b3RhbF9waXhl bHMsIGRzYy0+c2xpY2Vfd2lkdGgpOwotCXJldHVybiAwOwotfQotCi1zdGF0aWMgYm9vbCBfZHB1 X2VuY29kZXJfZHNjX2ljaF9yZXNldF9vdmVycmlkZV9uZWVkZWQoYm9vbCBwdV9lbiwKLQkJc3Ry dWN0IG1zbV9kaXNwbGF5X2RzY19pbmZvICpkc2MpCi17Ci0JLyoKLQkgKiBBcyBwZXIgdGhlIERT QyBzcGVjLCBJQ0hfUkVTRVQgY2FuIGJlIGVpdGhlciBlbmQgb2YgdGhlIHNsaWNlIGxpbmUKLQkg KiBvciBhdCB0aGUgZW5kIG9mIHRoZSBzbGljZS4gSFcgaW50ZXJuYWxseSBnZW5lcmF0ZXMgaWNo X3Jlc2V0IGF0Ci0JICogZW5kIG9mIHRoZSBzbGljZSBsaW5lIGlmIERTQ19NRVJHRSBpcyB1c2Vk IG9yIGVuY29kZXIgaGFzIHR3bwotCSAqIHNvZnQgc2xpY2VzLiBIb3dldmVyLCBpZiBlbmNvZGVy IGhhcyBvbmx5IDEgc29mdCBzbGljZSBhbmQgRFNDX01FUkdFCi0JICogaXMgbm90IHVzZWQgdGhl biBpdCB3aWxsIGdlbmVyYXRlIGljaF9yZXNldCBhdCB0aGUgZW5kIG9mIHNsaWNlLgotCSAqCi0J ICogTm93IGFzIHBlciB0aGUgc3BlYywgZHVyaW5nIG9uZSBQUFMgc2Vzc2lvbiwgcG9zaXRpb24g d2hlcmUKLQkgKiBpY2hfcmVzZXQgaXMgZ2VuZXJhdGVkIHNob3VsZCBub3QgY2hhbmdlLiBOb3cg aWYgZnVsbC1zY3JlZW4gZnJhbWUKLQkgKiBoYXMgbW9yZSB0aGFuIDEgc29mdCBzbGljZSB0aGVu IEhXIHdpbGwgYXV0b21hdGljYWxseSBnZW5lcmF0ZQotCSAqIGljaF9yZXNldCBhdCB0aGUgZW5k IG9mIHNsaWNlX2xpbmUuIEJ1dCBmb3IgdGhlIHNhbWUgcGFuZWwsIGlmCi0JICogcGFydGlhbCBm cmFtZSBpcyBlbmFibGVkIGFuZCBvbmx5IDEgZW5jb2RlciBpcyB1c2VkIHdpdGggMSBzbGljZSwK LQkgKiB0aGVuIEhXIHdpbGwgZ2VuZXJhdGUgaWNoX3Jlc2V0IGF0IGVuZCBvZiB0aGUgc2xpY2Uu IFRoaXMgaXMgYQotCSAqIG1pc21hdGNoLiBQcmV2ZW50IHRoaXMgYnkgb3ZlcnJpZGluZyBIVydz IGRlY2lzaW9uLgotCSAqLwotCXJldHVybiBwdV9lbiAmJiBkc2MgJiYgKGRzYy0+ZnVsbF9mcmFt ZV9zbGljZXMgPiAxKSAmJgotCQkoZHNjLT5zbGljZV93aWR0aCA9PSBkc2MtPnBpY193aWR0aCk7 Ci19Ci0KLXN0YXRpYyB2b2lkIF9kcHVfZW5jb2Rlcl9kc2NfcGlwZV9jZmcoc3RydWN0IGRwdV9o d19kc2MgKmh3X2RzYywKLQkJc3RydWN0IGRwdV9od19waW5ncG9uZyAqaHdfcHAsIHN0cnVjdCBt c21fZGlzcGxheV9kc2NfaW5mbyAqZHNjLAotCQl1MzIgY29tbW9uX21vZGUsIGJvb2wgaWNoX3Jl c2V0KQotewotCWlmIChod19kc2MtPm9wcy5kc2NfY29uZmlnKQotCQlod19kc2MtPm9wcy5kc2Nf Y29uZmlnKGh3X2RzYywgZHNjLCBjb21tb25fbW9kZSwgaWNoX3Jlc2V0KTsKLQotCWlmIChod19k c2MtPm9wcy5kc2NfY29uZmlnX3RocmVzaCkKLQkJaHdfZHNjLT5vcHMuZHNjX2NvbmZpZ190aHJl c2goaHdfZHNjLCBkc2MpOwotCi0JaWYgKGh3X3BwLT5vcHMuc2V0dXBfZHNjKQotCQlod19wcC0+ b3BzLnNldHVwX2RzYyhod19wcCk7Ci0KLQlpZiAoaHdfcHAtPm9wcy5lbmFibGVfZHNjKQotCQlo d19wcC0+b3BzLmVuYWJsZV9kc2MoaHdfcHApOwotfQotCi1zdGF0aWMgaW50IF9kcHVfZW5jb2Rl cl9kc2Nfbl9sbV8xX2VuY18xX2ludGYoc3RydWN0IGRwdV9lbmNvZGVyX3ZpcnQgKmRwdV9lbmMp Ci17Ci0JaW50IHRoaXNfZnJhbWVfc2xpY2VzOwotCWludCBpbnRmX2lwX3csIGVuY19pcF93Owot CWludCBpY2hfcmVzLCBkc2NfY29tbW9uX21vZGUgPSAwOwotCWludCByYyA9IDA7Ci0KLQlzdHJ1 Y3QgZHB1X2h3X3Bpbmdwb25nICpod19wcCA9IGRwdV9lbmMtPmh3X3BwWzBdOwotCXN0cnVjdCBk cHVfaHdfZHNjICpod19kc2MgPSBkcHVfZW5jLT5od19kc2NbMF07Ci0Jc3RydWN0IGRwdV9lbmNv ZGVyX3BoeXMgKmVuY19tYXN0ZXIgPSBkcHVfZW5jLT5jdXJfbWFzdGVyOwotCXN0cnVjdCBtc21f ZGlzcGxheV9kc2NfaW5mbyAqZHNjID0KLQkJJmRwdV9lbmMtPm1vZGVfaW5mby5jb21wX2luZm8u ZHNjX2luZm87Ci0KLQlyYyA9IF9kcHVfZW5jb2Rlcl9kc2NfdXBkYXRlX3BpY19kaW0oZHNjLCBk c2MtPnBpY193aWR0aCwKLQkJCWRzYy0+cGljX2hlaWdodCk7Ci0JaWYgKHJjKSB7Ci0JCURQVV9F UlJPUl9FTkMoZHB1X2VuYywgImZhaWxlZCB0byB1cGRhdGUgRFNDIHBpYyBkaW1cbiIpOwotCQly ZXR1cm4gcmM7Ci0JfQotCi0JdGhpc19mcmFtZV9zbGljZXMgPSBkc2MtPnBpY193aWR0aCAvIGRz Yy0+c2xpY2Vfd2lkdGg7Ci0JaW50Zl9pcF93ID0gdGhpc19mcmFtZV9zbGljZXMgKiBkc2MtPnNs aWNlX3dpZHRoOwotCV9kcHVfZW5jb2Rlcl9kc2NfcGNsa19wYXJhbV9jYWxjKGRzYywgaW50Zl9p cF93KTsKLQotCWVuY19pcF93ID0gaW50Zl9pcF93OwotCV9kcHVfZW5jb2Rlcl9kc2NfaW5pdGlh bF9saW5lX2NhbGMoZHNjLCBlbmNfaXBfdyk7Ci0KLQlpY2hfcmVzID0gX2RwdV9lbmNvZGVyX2Rz Y19pY2hfcmVzZXRfb3ZlcnJpZGVfbmVlZGVkKGZhbHNlLCBkc2MpOwotCi0JaWYgKGVuY19tYXN0 ZXItPmludGZfbW9kZSA9PSBJTlRGX01PREVfVklERU8pCi0JCWRzY19jb21tb25fbW9kZSA9IERT Q19NT0RFX1ZJREVPOwotCi0JRFBVX0RFQlVHX0VOQyhkcHVfZW5jLCAicGljX3c6ICVkIHBpY19o OiAlZCBtb2RlOiVkXG4iLAotCQlkc2MtPnBpY193aWR0aCwgZHNjLT5waWNfaGVpZ2h0LCBkc2Nf Y29tbW9uX21vZGUpOwotCURQVV9FVlQzMihEUk1JRCgmZHB1X2VuYy0+YmFzZSksIGRzYy0+cGlj X3dpZHRoLCBkc2MtPnBpY19oZWlnaHQsCi0JCQlkc2NfY29tbW9uX21vZGUpOwotCi0JX2RwdV9l bmNvZGVyX2RzY19waXBlX2NmZyhod19kc2MsIGh3X3BwLCBkc2MsIGRzY19jb21tb25fbW9kZSwK LQkJCWljaF9yZXMpOwotCi0JcmV0dXJuIDA7Ci19Ci1zdGF0aWMgaW50IF9kcHVfZW5jb2Rlcl9k c2NfMl9sbV8yX2VuY18yX2ludGYoc3RydWN0IGRwdV9lbmNvZGVyX3ZpcnQgKmRwdV9lbmMpCi17 Ci0JaW50IHRoaXNfZnJhbWVfc2xpY2VzOwotCWludCBpbnRmX2lwX3csIGVuY19pcF93OwotCWlu dCBpY2hfcmVzLCBkc2NfY29tbW9uX21vZGU7Ci0JaW50IHJjID0gMDsKLQotCXN0cnVjdCBkcHVf ZW5jb2Rlcl9waHlzICplbmNfbWFzdGVyID0gZHB1X2VuYy0+Y3VyX21hc3RlcjsKLQlzdHJ1Y3Qg ZHB1X2h3X2RzYyAqbF9od19kc2MgPSBkcHVfZW5jLT5od19kc2NbMF07Ci0Jc3RydWN0IGRwdV9o d19kc2MgKnJfaHdfZHNjID0gZHB1X2VuYy0+aHdfZHNjWzFdOwotCXN0cnVjdCBkcHVfaHdfcGlu Z3BvbmcgKmxfaHdfcHAgPSBkcHVfZW5jLT5od19wcFswXTsKLQlzdHJ1Y3QgZHB1X2h3X3Bpbmdw b25nICpyX2h3X3BwID0gZHB1X2VuYy0+aHdfcHBbMV07Ci0Jc3RydWN0IG1zbV9kaXNwbGF5X2Rz Y19pbmZvICpkc2MgPQotCQkmZHB1X2VuYy0+bW9kZV9pbmZvLmNvbXBfaW5mby5kc2NfaW5mbzsK LQotCXJjID0gX2RwdV9lbmNvZGVyX2RzY191cGRhdGVfcGljX2RpbShkc2MsCi0JCQlkc2MtPnBp Y193aWR0aCAqIGRwdV9lbmMtPmRpc3BsYXlfbnVtX29mX2hfdGlsZXMsCi0JCQlkc2MtPnBpY19o ZWlnaHQpOwotCWlmIChyYykgewotCQlEUFVfRVJST1JfRU5DKGRwdV9lbmMsICJmYWlsZWQgdG8g dXBkYXRlIERTQyBwaWMgZGltXG4iKTsKLQkJcmV0dXJuIHJjOwotCX0KLQotCi0JdGhpc19mcmFt ZV9zbGljZXMgPSBkc2MtPnBpY193aWR0aCAvIGRzYy0+c2xpY2Vfd2lkdGg7Ci0JaW50Zl9pcF93 ID0gdGhpc19mcmFtZV9zbGljZXMgKiBkc2MtPnNsaWNlX3dpZHRoOwotCi0JaW50Zl9pcF93IC89 IDI7Ci0JX2RwdV9lbmNvZGVyX2RzY19wY2xrX3BhcmFtX2NhbGMoZHNjLCBpbnRmX2lwX3cpOwot Ci0JZW5jX2lwX3cgPSBpbnRmX2lwX3c7Ci0JX2RwdV9lbmNvZGVyX2RzY19pbml0aWFsX2xpbmVf Y2FsYyhkc2MsIGVuY19pcF93KTsKLQotCWljaF9yZXMgPSBfZHB1X2VuY29kZXJfZHNjX2ljaF9y ZXNldF9vdmVycmlkZV9uZWVkZWQoZmFsc2UsIGRzYyk7Ci0KLQlkc2NfY29tbW9uX21vZGUgPSBE U0NfTU9ERV9TUExJVF9QQU5FTDsKLQlpZiAoZW5jX21hc3Rlci0+aW50Zl9tb2RlID09IElOVEZf TU9ERV9WSURFTykKLQkJZHNjX2NvbW1vbl9tb2RlIHw9IERTQ19NT0RFX1ZJREVPOwotCi0JRFBV X0RFQlVHX0VOQyhkcHVfZW5jLCAicGljX3c6ICVkIHBpY19oOiAlZCBtb2RlOiVkXG4iLAotCQlk c2MtPnBpY193aWR0aCwgZHNjLT5waWNfaGVpZ2h0LCBkc2NfY29tbW9uX21vZGUpOwotCURQVV9F VlQzMihEUk1JRCgmZHB1X2VuYy0+YmFzZSksIGRzYy0+cGljX3dpZHRoLCBkc2MtPnBpY19oZWln aHQsCi0JCQlkc2NfY29tbW9uX21vZGUpOwotCi0JX2RwdV9lbmNvZGVyX2RzY19waXBlX2NmZyhs X2h3X2RzYywgbF9od19wcCwgZHNjLCBkc2NfY29tbW9uX21vZGUsCi0JCQlpY2hfcmVzKTsKLQlf ZHB1X2VuY29kZXJfZHNjX3BpcGVfY2ZnKHJfaHdfZHNjLCByX2h3X3BwLCBkc2MsIGRzY19jb21t b25fbW9kZSwKLQkJCWljaF9yZXMpOwotCi0JcmV0dXJuIDA7Ci19Ci0KLXN0YXRpYyBpbnQgX2Rw dV9lbmNvZGVyX2RzY18yX2xtXzJfZW5jXzFfaW50ZihzdHJ1Y3QgZHB1X2VuY29kZXJfdmlydCAq ZHB1X2VuYykKLXsKLQlpbnQgdGhpc19mcmFtZV9zbGljZXM7Ci0JaW50IGludGZfaXBfdywgZW5j X2lwX3c7Ci0JaW50IGljaF9yZXMsIGRzY19jb21tb25fbW9kZTsKLQlpbnQgcmMgPSAwOwotCi0J c3RydWN0IGRwdV9lbmNvZGVyX3BoeXMgKmVuY19tYXN0ZXIgPSBkcHVfZW5jLT5jdXJfbWFzdGVy OwotCXN0cnVjdCBkcHVfaHdfZHNjICpsX2h3X2RzYyA9IGRwdV9lbmMtPmh3X2RzY1swXTsKLQlz dHJ1Y3QgZHB1X2h3X2RzYyAqcl9od19kc2MgPSBkcHVfZW5jLT5od19kc2NbMV07Ci0Jc3RydWN0 IGRwdV9od19waW5ncG9uZyAqbF9od19wcCA9IGRwdV9lbmMtPmh3X3BwWzBdOwotCXN0cnVjdCBk cHVfaHdfcGluZ3BvbmcgKnJfaHdfcHAgPSBkcHVfZW5jLT5od19wcFsxXTsKLQlzdHJ1Y3QgbXNt X2Rpc3BsYXlfZHNjX2luZm8gKmRzYyA9Ci0JCSZkcHVfZW5jLT5tb2RlX2luZm8uY29tcF9pbmZv LmRzY19pbmZvOwotCi0JcmMgPSBfZHB1X2VuY29kZXJfZHNjX3VwZGF0ZV9waWNfZGltKGRzYywg ZHNjLT5waWNfd2lkdGgsCi0JCQlkc2MtPnBpY19oZWlnaHQpOwotCWlmIChyYykgewotCQlEUFVf RVJST1JfRU5DKGRwdV9lbmMsICJmYWlsZWQgdG8gdXBkYXRlIERTQyBwaWMgZGltXG4iKTsKLQkJ cmV0dXJuIHJjOwotCX0KLQotCXRoaXNfZnJhbWVfc2xpY2VzID0gZHNjLT5waWNfd2lkdGggLyBk c2MtPnNsaWNlX3dpZHRoOwotCWludGZfaXBfdyA9IHRoaXNfZnJhbWVfc2xpY2VzICogZHNjLT5z bGljZV93aWR0aDsKLQlfZHB1X2VuY29kZXJfZHNjX3BjbGtfcGFyYW1fY2FsYyhkc2MsIGludGZf aXBfdyk7Ci0KLQkvKgotCSAqIHdoZW4gdXNpbmcgMiBlbmNvZGVycyBmb3IgdGhlIHNhbWUgc3Ry ZWFtLCBuby4gb2Ygc2xpY2VzCi0JICogbmVlZCB0byBiZSBzYW1lIG9uIGJvdGggdGhlIGVuY29k ZXJzLgotCSAqLwotCWVuY19pcF93ID0gaW50Zl9pcF93IC8gMjsKLQlfZHB1X2VuY29kZXJfZHNj X2luaXRpYWxfbGluZV9jYWxjKGRzYywgZW5jX2lwX3cpOwotCi0JaWNoX3JlcyA9IF9kcHVfZW5j b2Rlcl9kc2NfaWNoX3Jlc2V0X292ZXJyaWRlX25lZWRlZChmYWxzZSwgZHNjKTsKLQotCWRzY19j b21tb25fbW9kZSA9IERTQ19NT0RFX01VTFRJUExFWCB8IERTQ19NT0RFX1NQTElUX1BBTkVMOwot CWlmIChlbmNfbWFzdGVyLT5pbnRmX21vZGUgPT0gSU5URl9NT0RFX1ZJREVPKQotCQlkc2NfY29t bW9uX21vZGUgfD0gRFNDX01PREVfVklERU87Ci0KLQlEUFVfREVCVUdfRU5DKGRwdV9lbmMsICJw aWNfdzogJWQgcGljX2g6ICVkIG1vZGU6JWRcbiIsCi0JCWRzYy0+cGljX3dpZHRoLCBkc2MtPnBp Y19oZWlnaHQsIGRzY19jb21tb25fbW9kZSk7Ci0JRFBVX0VWVDMyKERSTUlEKCZkcHVfZW5jLT5i YXNlKSwgZHNjLT5waWNfd2lkdGgsIGRzYy0+cGljX2hlaWdodCwKLQkJCWRzY19jb21tb25fbW9k ZSk7Ci0KLQlfZHB1X2VuY29kZXJfZHNjX3BpcGVfY2ZnKGxfaHdfZHNjLCBsX2h3X3BwLCBkc2Ms IGRzY19jb21tb25fbW9kZSwKLQkJCWljaF9yZXMpOwotCV9kcHVfZW5jb2Rlcl9kc2NfcGlwZV9j Zmcocl9od19kc2MsIHJfaHdfcHAsIGRzYywgZHNjX2NvbW1vbl9tb2RlLAotCQkJaWNoX3Jlcyk7 Ci0KLQlyZXR1cm4gMDsKLX0KLQotc3RhdGljIGludCBfZHB1X2VuY29kZXJfZHNjX3NldHVwKHN0 cnVjdCBkcHVfZW5jb2Rlcl92aXJ0ICpkcHVfZW5jKQotewotCWVudW0gZHB1X3JtX3RvcG9sb2d5 X25hbWUgdG9wb2xvZ3k7Ci0Jc3RydWN0IGRybV9jb25uZWN0b3IgKmRybV9jb25uOwotCWludCBy ZXQgPSAwOwotCi0JaWYgKCFkcHVfZW5jKQotCQlyZXR1cm4gLUVJTlZBTDsKLQotCWRybV9jb25u ID0gZHB1X2VuYy0+cGh5c19lbmNzWzBdLT5jb25uZWN0b3I7Ci0KLQl0b3BvbG9neSA9IGRwdV9j b25uZWN0b3JfZ2V0X3RvcG9sb2d5X25hbWUoZHJtX2Nvbm4pOwotCWlmICh0b3BvbG9neSA9PSBE UFVfUk1fVE9QT0xPR1lfTk9ORSkgewotCQlEUFVfRVJST1JfRU5DKGRwdV9lbmMsICJ0b3BvbG9n eSBub3Qgc2V0IHlldFxuIik7Ci0JCXJldHVybiAtRUlOVkFMOwotCX0KLQotCURQVV9ERUJVR19F TkMoZHB1X2VuYywgInRvcG9sb2d5OiVkXG4iLCB0b3BvbG9neSk7Ci0JRFBVX0VWVDMyKERSTUlE KCZkcHVfZW5jLT5iYXNlKSk7Ci0KLQlzd2l0Y2ggKHRvcG9sb2d5KSB7Ci0JY2FzZSBEUFVfUk1f VE9QT0xPR1lfU0lOR0xFUElQRV9EU0M6Ci0JY2FzZSBEUFVfUk1fVE9QT0xPR1lfRFVBTFBJUEVf M0RNRVJHRV9EU0M6Ci0JCXJldCA9IF9kcHVfZW5jb2Rlcl9kc2Nfbl9sbV8xX2VuY18xX2ludGYo ZHB1X2VuYyk7Ci0JCWJyZWFrOwotCWNhc2UgRFBVX1JNX1RPUE9MT0dZX0RVQUxQSVBFX0RTQ01F UkdFOgotCQlyZXQgPSBfZHB1X2VuY29kZXJfZHNjXzJfbG1fMl9lbmNfMV9pbnRmKGRwdV9lbmMp OwotCQlicmVhazsKLQljYXNlIERQVV9STV9UT1BPTE9HWV9EVUFMUElQRV9EU0M6Ci0JCXJldCA9 IF9kcHVfZW5jb2Rlcl9kc2NfMl9sbV8yX2VuY18yX2ludGYoZHB1X2VuYyk7Ci0JCWJyZWFrOwot CWRlZmF1bHQ6Ci0JCURQVV9FUlJPUl9FTkMoZHB1X2VuYywgIk5vIERTQyBzdXBwb3J0IGZvciB0 b3BvbG9neSAlZCIsCi0JCQkJdG9wb2xvZ3kpOwotCQlyZXR1cm4gLUVJTlZBTDsKLQl9OwotCi0J cmV0dXJuIHJldDsKLX0KLQogc3RhdGljIHZvaWQgX2RwdV9lbmNvZGVyX3VwZGF0ZV92c3luY19z b3VyY2Uoc3RydWN0IGRwdV9lbmNvZGVyX3ZpcnQgKmRwdV9lbmMsCiAJCQlzdHJ1Y3QgbXNtX2Rp c3BsYXlfaW5mbyAqZGlzcF9pbmZvKQogewpAQCAtMTExMSwxMDIgKzc2Myw2IEBAIHN0YXRpYyB2 b2lkIF9kcHVfZW5jb2Rlcl91cGRhdGVfdnN5bmNfc291cmNlKHN0cnVjdCBkcHVfZW5jb2Rlcl92 aXJ0ICpkcHVfZW5jLAogCX0KIH0KIAotc3RhdGljIGludCBfZHB1X2VuY29kZXJfZHNjX2Rpc2Fi bGUoc3RydWN0IGRwdV9lbmNvZGVyX3ZpcnQgKmRwdV9lbmMpCi17Ci0JZW51bSBkcHVfcm1fdG9w b2xvZ3lfbmFtZSB0b3BvbG9neTsKLQlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqZHJtX2Nvbm47Ci0J aW50IGksIHJldCA9IDA7Ci0Jc3RydWN0IGRwdV9od19waW5ncG9uZyAqaHdfcHBbTUFYX0NIQU5O RUxTX1BFUl9FTkNdOwotCXN0cnVjdCBkcHVfaHdfZHNjICpod19kc2NbTUFYX0NIQU5ORUxTX1BF Ul9FTkNdID0ge05VTEx9OwotCWludCBwcF9jb3VudCA9IDA7Ci0JaW50IGRzY19jb3VudCA9IDA7 Ci0KLQlpZiAoIWRwdV9lbmMgfHwgIWRwdV9lbmMtPnBoeXNfZW5jc1swXSB8fAotCQkJIWRwdV9l bmMtPnBoeXNfZW5jc1swXS0+Y29ubmVjdG9yKSB7Ci0JCURQVV9FUlJPUigiaW52YWxpZCBwYXJh bXMgJWQgJWRcbiIsCi0JCQkhZHB1X2VuYywgZHB1X2VuYyA/ICFkcHVfZW5jLT5waHlzX2VuY3Nb MF0gOiAtMSk7Ci0JCXJldHVybiAtRUlOVkFMOwotCX0KLQotCWRybV9jb25uID0gZHB1X2VuYy0+ cGh5c19lbmNzWzBdLT5jb25uZWN0b3I7Ci0KLQl0b3BvbG9neSA9IGRwdV9jb25uZWN0b3JfZ2V0 X3RvcG9sb2d5X25hbWUoZHJtX2Nvbm4pOwotCWlmICh0b3BvbG9neSA9PSBEUFVfUk1fVE9QT0xP R1lfTk9ORSkgewotCQlEUFVfRVJST1JfRU5DKGRwdV9lbmMsICJ0b3BvbG9neSBub3Qgc2V0IHll dFxuIik7Ci0JCXJldHVybiAtRUlOVkFMOwotCX0KLQotCXN3aXRjaCAodG9wb2xvZ3kpIHsKLQlj YXNlIERQVV9STV9UT1BPTE9HWV9TSU5HTEVQSVBFOgotCWNhc2UgRFBVX1JNX1RPUE9MT0dZX1NJ TkdMRVBJUEVfRFNDOgotCQkvKiBzaW5nbGUgUFAgKi8KLQkJaHdfcHBbMF0gPSBkcHVfZW5jLT5o d19wcFswXTsKLQkJaHdfZHNjWzBdID0gZHB1X2VuYy0+aHdfZHNjWzBdOwotCQlwcF9jb3VudCA9 IDE7Ci0JCWRzY19jb3VudCA9IDE7Ci0JCWJyZWFrOwotCWNhc2UgRFBVX1JNX1RPUE9MT0dZX0RV QUxQSVBFX0RTQzoKLQljYXNlIERQVV9STV9UT1BPTE9HWV9EVUFMUElQRV8zRE1FUkdFX0RTQzoK LQljYXNlIERQVV9STV9UT1BPTE9HWV9EVUFMUElQRV9EU0NNRVJHRToKLQkJLyogZHVhbCBkc2Mg Ki8KLQkJZm9yIChpID0gMDsgaSA8IE1BWF9DSEFOTkVMU19QRVJfRU5DOyBpKyspIHsKLQkJCWh3 X2RzY1tpXSA9IGRwdV9lbmMtPmh3X2RzY1tpXTsKLQkJCWlmIChod19kc2NbaV0pCi0JCQkJZHNj X2NvdW50Kys7Ci0JCX0KLQkJLyogZmFsbCB0aHJvdWdoICovCi0JY2FzZSBEUFVfUk1fVE9QT0xP R1lfRFVBTFBJUEU6Ci0JY2FzZSBEUFVfUk1fVE9QT0xPR1lfRFVBTFBJUEVfM0RNRVJHRToKLQkJ LyogZHVhbCBwcCAqLwotCQlmb3IgKGkgPSAwOyBpIDwgTUFYX0NIQU5ORUxTX1BFUl9FTkM7IGkr KykgewotCQkJaHdfcHBbaV0gPSBkcHVfZW5jLT5od19wcFtpXTsKLQkJCWlmIChod19wcFtpXSkK LQkJCQlwcF9jb3VudCsrOwotCQl9Ci0JCWJyZWFrOwotCWRlZmF1bHQ6Ci0JCURQVV9ERUJVR19F TkMoZHB1X2VuYywgIlVuZXhwZWN0ZWQgdG9wb2xvZ3k6JWRcbiIsIHRvcG9sb2d5KTsKLQkJcmV0 dXJuIC1FSU5WQUw7Ci0JfTsKLQotCURQVV9FVlQzMihEUk1JRCgmZHB1X2VuYy0+YmFzZSksIHRv cG9sb2d5LCBwcF9jb3VudCwgZHNjX2NvdW50KTsKLQotCWlmIChwcF9jb3VudCA+IE1BWF9DSEFO TkVMU19QRVJfRU5DIHx8Ci0JCWRzY19jb3VudCA+IE1BWF9DSEFOTkVMU19QRVJfRU5DKSB7Ci0J CURQVV9FUlJPUl9FTkMoZHB1X2VuYywgIldyb25nIGNvdW50IHBwOiVkIGRzYzolZCB0b3A6JWRc biIsCi0JCQkJcHBfY291bnQsIGRzY19jb3VudCwgdG9wb2xvZ3kpOwotCQlyZXR1cm4gLUVJTlZB TDsKLQl9Ci0KLQkvKiBEaXNhYmxlIERTQyBmb3IgYWxsIHRoZSBwcCdzIHByZXNlbnQgaW4gdGhp cyB0b3BvbG9neSAqLwotCWZvciAoaSA9IDA7IGkgPCBwcF9jb3VudDsgaSsrKSB7Ci0KLQkJaWYg KCFod19wcFtpXSkgewotCQkJRFBVX0VSUk9SX0VOQyhkcHVfZW5jLCAibnVsbCBwcDolZCB0b3A6 JWQgY250OiVkXG4iLAotCQkJCQlpLCB0b3BvbG9neSwgcHBfY291bnQpOwotCQkJcmV0dXJuIC1F SU5WQUw7Ci0JCX0KLQotCQlpZiAoaHdfcHBbaV0tPm9wcy5kaXNhYmxlX2RzYykKLQkJCWh3X3Bw W2ldLT5vcHMuZGlzYWJsZV9kc2MoaHdfcHBbaV0pOwotCX0KLQotCS8qIERpc2FibGUgRFNDIEhX ICovCi0JZm9yIChpID0gMDsgaSA8IGRzY19jb3VudDsgaSsrKSB7Ci0KLQkJaWYgKCFod19kc2Nb aV0pIHsKLQkJCURQVV9FUlJPUl9FTkMoZHB1X2VuYywgIm51bGwgZHNjOiVkIHRvcDolZCBjbnQ6 JWRcbiIsCi0JCQkJCWksIHRvcG9sb2d5LCBkc2NfY291bnQpOwotCQkJcmV0dXJuIC1FSU5WQUw7 Ci0JCX0KLQotCQlpZiAoaHdfZHNjW2ldLT5vcHMuZHNjX2Rpc2FibGUpCi0JCQlod19kc2NbaV0t Pm9wcy5kc2NfZGlzYWJsZShod19kc2NbaV0pOwotCX0KLQotCXJldHVybiByZXQ7Ci19Ci0KIHN0 YXRpYyB2b2lkIF9kcHVfZW5jb2Rlcl9pcnFfY29udHJvbChzdHJ1Y3QgZHJtX2VuY29kZXIgKmRy bV9lbmMsIGJvb2wgZW5hYmxlKQogewogCXN0cnVjdCBkcHVfZW5jb2Rlcl92aXJ0ICpkcHVfZW5j OwpAQCAtMTYwNyw3ICsxMTYzLDcgQEAgc3RhdGljIHZvaWQgZHB1X2VuY29kZXJfdmlydF9tb2Rl X3NldChzdHJ1Y3QgZHJtX2VuY29kZXIgKmRybV9lbmMsCiAJc3RydWN0IGxpc3RfaGVhZCAqY29u bmVjdG9yX2xpc3Q7CiAJc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm4gPSBOVUxMLCAqY29ubl9p dGVyOwogCXN0cnVjdCBkcHVfY29ubmVjdG9yICpkcHVfY29ubiA9IE5VTEw7Ci0Jc3RydWN0IGRw dV9ybV9od19pdGVyIGRzY19pdGVyLCBwcF9pdGVyOworCXN0cnVjdCBkcHVfcm1faHdfaXRlciBw cF9pdGVyOwogCWludCBpID0gMCwgcmV0OwogCiAJaWYgKCFkcm1fZW5jKSB7CkBAIC0xNjU4LDEy ICsxMjE0LDYgQEAgc3RhdGljIHZvaWQgZHB1X2VuY29kZXJfdmlydF9tb2RlX3NldChzdHJ1Y3Qg ZHJtX2VuY29kZXIgKmRybV9lbmMsCiAJCQkJCXJldCk7CiAJCQlyZXR1cm47CiAJCX0KLQotCQkv KgotCQkgKiBEaXNhYmxlIGRzYyBiZWZvcmUgc3dpdGNoIHRoZSBtb2RlIGFuZCBhZnRlciBwcmVf bW9kZXNldCwKLQkJICogdG8gZ3VhcmFudGVlIHRoYXQgcHJldmlvdXMga2lja29mZiBmaW5pc2hl ZC4KLQkJICovCi0JCV9kcHVfZW5jb2Rlcl9kc2NfZGlzYWJsZShkcHVfZW5jKTsKIAl9CiAKIAkv KiBSZXNlcnZlIGR5bmFtaWMgcmVzb3VyY2VzIG5vdy4gSW5kaWNhdGluZyBub24tQXRvbWljVGVz dCBwaGFzZSAqLwpAQCAtMTY4MywxNCArMTIzMyw2IEBAIHN0YXRpYyB2b2lkIGRwdV9lbmNvZGVy X3ZpcnRfbW9kZV9zZXQoc3RydWN0IGRybV9lbmNvZGVyICpkcm1fZW5jLAogCQlkcHVfZW5jLT5o d19wcFtpXSA9IChzdHJ1Y3QgZHB1X2h3X3Bpbmdwb25nICopIHBwX2l0ZXIuaHc7CiAJfQogCi0J ZHB1X3JtX2luaXRfaHdfaXRlcigmZHNjX2l0ZXIsIGRybV9lbmMtPmJhc2UuaWQsIERQVV9IV19C TEtfRFNDKTsKLQlmb3IgKGkgPSAwOyBpIDwgTUFYX0NIQU5ORUxTX1BFUl9FTkM7IGkrKykgewot CQlkcHVfZW5jLT5od19kc2NbaV0gPSBOVUxMOwotCQlpZiAoIWRwdV9ybV9nZXRfaHcoJmRwdV9r bXMtPnJtLCAmZHNjX2l0ZXIpKQotCQkJYnJlYWs7Ci0JCWRwdV9lbmMtPmh3X2RzY1tpXSA9IChz dHJ1Y3QgZHB1X2h3X2RzYyAqKSBkc2NfaXRlci5odzsKLQl9Ci0KIAlmb3IgKGkgPSAwOyBpIDwg ZHB1X2VuYy0+bnVtX3BoeXNfZW5jczsgaSsrKSB7CiAJCXN0cnVjdCBkcHVfZW5jb2Rlcl9waHlz ICpwaHlzID0gZHB1X2VuYy0+cGh5c19lbmNzW2ldOwogCkBAIC0xNzgyLDcgKzEzMjQsNiBAQCBz dGF0aWMgdm9pZCBkcHVfZW5jb2Rlcl92aXJ0X2VuYWJsZShzdHJ1Y3QgZHJtX2VuY29kZXIgKmRy bV9lbmMpCiB7CiAJc3RydWN0IGRwdV9lbmNvZGVyX3ZpcnQgKmRwdV9lbmMgPSBOVUxMOwogCWlu dCBpLCByZXQgPSAwOwotCXN0cnVjdCBtc21fY29tcHJlc3Npb25faW5mbyAqY29tcF9pbmZvID0g TlVMTDsKIAlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqY3VyX21vZGUgPSBOVUxMOwogCiAJaWYg KCFkcm1fZW5jKSB7CkBAIC0xNzkwLDcgKzEzMzEsNiBAQCBzdGF0aWMgdm9pZCBkcHVfZW5jb2Rl cl92aXJ0X2VuYWJsZShzdHJ1Y3QgZHJtX2VuY29kZXIgKmRybV9lbmMpCiAJCXJldHVybjsKIAl9 CiAJZHB1X2VuYyA9IHRvX2RwdV9lbmNvZGVyX3ZpcnQoZHJtX2VuYyk7Ci0JY29tcF9pbmZvID0g JmRwdV9lbmMtPm1vZGVfaW5mby5jb21wX2luZm87CiAJY3VyX21vZGUgPSAmZHB1X2VuYy0+YmFz ZS5jcnRjLT5zdGF0ZS0+YWRqdXN0ZWRfbW9kZTsKIAogCURQVV9ERUJVR19FTkMoZHB1X2VuYywg IlxuIik7CkBAIC0xODI1LDcgKzEzNjUsNiBAQCBzdGF0aWMgdm9pZCBkcHVfZW5jb2Rlcl92aXJ0 X2VuYWJsZShzdHJ1Y3QgZHJtX2VuY29kZXIgKmRybV9lbmMpCiAJCWlmICghcGh5cykKIAkJCWNv bnRpbnVlOwogCi0JCXBoeXMtPmNvbXBfdHlwZSA9IGNvbXBfaW5mby0+Y29tcF90eXBlOwogCQlp ZiAocGh5cyAhPSBkcHVfZW5jLT5jdXJfbWFzdGVyKSB7CiAJCQkvKioKIAkJCSAqIG9uIERNUyBy ZXF1ZXN0LCB0aGUgZW5jb2RlciB3aWxsIGJlIGVuYWJsZWQKQEAgLTE5MDAsMTMgKzE0MzksNiBA QCBzdGF0aWMgdm9pZCBkcHVfZW5jb2Rlcl92aXJ0X2Rpc2FibGUoc3RydWN0IGRybV9lbmNvZGVy ICpkcm1fZW5jKQogCQkJcGh5cy0+b3BzLmRpc2FibGUocGh5cyk7CiAJfQogCi0JLyoKLQkgKiBk aXNhYmxlIGRzYyBhZnRlciB0aGUgdHJhbnNmZXIgaXMgY29tcGxldGUgKGZvciBjb21tYW5kIG1v ZGUpCi0JICogYW5kIGFmdGVyIHBoeXNpY2FsIGVuY29kZXIgaXMgZGlzYWJsZWQsIHRvIG1ha2Ug c3VyZSB0aW1pbmcKLQkgKiBlbmdpbmUgaXMgYWxyZWFkeSBkaXNhYmxlZCAoZm9yIHZpZGVvIG1v ZGUpLgotCSAqLwotCV9kcHVfZW5jb2Rlcl9kc2NfZGlzYWJsZShkcHVfZW5jKTsKLQogCS8qIGFm dGVyIHBoeXMgd2FpdHMgZm9yIGZyYW1lLWRvbmUsIHNob3VsZCBiZSBubyBtb3JlIGZyYW1lcyBw ZW5kaW5nICovCiAJaWYgKGF0b21pY194Y2hnKCZkcHVfZW5jLT5mcmFtZV9kb25lX3RpbWVvdXQs IDApKSB7CiAJCURQVV9FUlJPUigiZW5jJWQgdGltZW91dCBwZW5kaW5nXG4iLCBkcm1fZW5jLT5i YXNlLmlkKTsKQEAgLTI3NDIsMTIgKzIyNzQsNiBAQCB2b2lkIGRwdV9lbmNvZGVyX3ByZXBhcmVf Zm9yX2tpY2tvZmYoc3RydWN0IGRybV9lbmNvZGVyICpkcm1fZW5jLAogCQkJCQlkcHVfZW5jLT5j dXJfbWFzdGVyLT5jb25uZWN0b3ItPmJhc2UuaWQsCiAJCQkJCXJjKTsKIAl9Ci0KLQlpZiAoZHB1 X2VuY29kZXJfaXNfZHNjX2VuYWJsZWQoZHJtX2VuYykpIHsKLQkJcmMgPSBfZHB1X2VuY29kZXJf ZHNjX3NldHVwKGRwdV9lbmMpOwotCQlpZiAocmMpCi0JCQlEUFVfRVJST1JfRU5DKGRwdV9lbmMs ICJmYWlsZWQgdG8gc2V0dXAgRFNDOiAlZFxuIiwgcmMpOwotCX0KIH0KIAogdm9pZCBkcHVfZW5j b2Rlcl9raWNrb2ZmKHN0cnVjdCBkcm1fZW5jb2RlciAqZHJtX2VuYykKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9lbmNvZGVyLmggYi9kcml2ZXJzL2dwdS9k cm0vbXNtL2Rpc3AvZHB1MS9kcHVfZW5jb2Rlci5oCmluZGV4IGU4NWU1YTQuLmIyNTYxOWQgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9lbmNvZGVyLmgKKysr IGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2VuY29kZXIuaApAQCAtMTQ1LDIw ICsxNDUsNiBAQCBpbnQgZHB1X2VuY29kZXJfd2FpdF9mb3JfZXZlbnQoc3RydWN0IGRybV9lbmNv ZGVyICpkcm1fZW5jb2RlciwKIHZvaWQgZHB1X2VuY29kZXJfdmlydF9yZXN0b3JlKHN0cnVjdCBk cm1fZW5jb2RlciAqZW5jb2Rlcik7CiAKIC8qKgotICogZHB1X2VuY29kZXJfaXNfZHNjX2VuYWJs ZWQgLSBjaGVjayBpZiBlbmNvZGVyIGlzIGluIERTQyBtb2RlCi0gKiBAZHJtX2VuYzogUG9pbnRl ciB0byBkcm0gZW5jb2RlciBvYmplY3QKLSAqIEBSZXR1cm46IHRydWUgaWYgZW5jb2RlciBpcyBp biBEU0MgbW9kZQotICovCi1ib29sIGRwdV9lbmNvZGVyX2lzX2RzY19lbmFibGVkKHN0cnVjdCBk cm1fZW5jb2RlciAqZHJtX2VuYyk7Ci0KLS8qKgotICogZHB1X2VuY29kZXJfaXNfZHNjX21lcmdl IC0gY2hlY2sgaWYgZW5jb2RlciBpcyBpbiBEU0MgbWVyZ2UgbW9kZQotICogQGRybV9lbmM6IFBv aW50ZXIgdG8gZHJtIGVuY29kZXIgb2JqZWN0Ci0gKiBAUmV0dXJuOiB0cnVlIGlmIGVuY29kZXIg aXMgaW4gRFNDIG1lcmdlIG1vZGUKLSAqLwotYm9vbCBkcHVfZW5jb2Rlcl9pc19kc2NfbWVyZ2Uo c3RydWN0IGRybV9lbmNvZGVyICpkcm1fZW5jKTsKLQotLyoqCiAgKiBkcHVfZW5jb2Rlcl9jaGVj a19tb2RlIC0gY2hlY2sgaWYgZ2l2ZW4gbW9kZSBpcyBzdXBwb3J0ZWQgb3Igbm90CiAgKiBAZHJt X2VuYzogUG9pbnRlciB0byBkcm0gZW5jb2RlciBvYmplY3QKICAqIEBtb2RlOiBNb2RlIHRvIGJl IGNoZWNrZWQKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9l bmNvZGVyX3BoeXMuaCBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9lbmNvZGVy X3BoeXMuaAppbmRleCA5YmJmMzM5Yi4uYjU3ZjYxOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL21zbS9kaXNwL2RwdTEvZHB1X2VuY29kZXJfcGh5cy5oCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9tc20vZGlzcC9kcHUxL2RwdV9lbmNvZGVyX3BoeXMuaApAQCAtMjMyLDcgKzIzMiw2IEBAIHN0 cnVjdCBkcHVfZW5jb2Rlcl9pcnEgewogICogQHNwbGl0X3JvbGU6CQlSb2xlIHRvIHBsYXkgaW4g YSBzcGxpdC1wYW5lbCBjb25maWd1cmF0aW9uCiAgKiBAaW50Zl9tb2RlOgkJSW50ZXJmYWNlIG1v ZGUKICAqIEBpbnRmX2lkeDoJCUludGVyZmFjZSBpbmRleCBvbiBkcHUgaGFyZHdhcmUKLSAqIEBj b21wX3R5cGU6ICAgICAgVHlwZSBvZiBjb21wcmVzc2lvbiBzdXBwb3J0ZWQKICAqIEBlbmNfc3Bp bmxvY2s6CVZpcnR1YWwtRW5jb2Rlci1XaWRlIFNwaW4gTG9jayBmb3IgSVJRIHB1cnBvc2VzCiAg KiBAZW5hYmxlX3N0YXRlOglFbmFibGUgc3RhdGUgdHJhY2tpbmcKICAqIEB2YmxhbmtfcmVmY291 bnQ6CVJlZmVyZW5jZSBjb3VudCBvZiB2YmxhbmsgcmVxdWVzdApAQCAtMjYyLDcgKzI2MSw2IEBA IHN0cnVjdCBkcHVfZW5jb2Rlcl9waHlzIHsKIAllbnVtIGRwdV9lbmNfc3BsaXRfcm9sZSBzcGxp dF9yb2xlOwogCWVudW0gZHB1X2ludGZfbW9kZSBpbnRmX21vZGU7CiAJZW51bSBkcHVfaW50ZiBp bnRmX2lkeDsKLQllbnVtIG1zbV9kaXNwbGF5X2NvbXByZXNzaW9uX3R5cGUgY29tcF90eXBlOwog CXNwaW5sb2NrX3QgKmVuY19zcGlubG9jazsKIAllbnVtIGRwdV9lbmNfZW5hYmxlX3N0YXRlIGVu YWJsZV9zdGF0ZTsKIAlhdG9taWNfdCB2YmxhbmtfcmVmY291bnQ7CkBAIC0zODQsNyArMzgyLDYg QEAgc3RydWN0IGRwdV9lbmNvZGVyX3BoeXNfd2IgewogICogQHNwbGl0X3JvbGU6CQlSb2xlIHRv IHBsYXkgaW4gYSBzcGxpdC1wYW5lbCBjb25maWd1cmF0aW9uCiAgKiBAaW50Zl9pZHg6CQlJbnRl cmZhY2UgaW5kZXggdGhpcyBwaHlzX2VuYyB3aWxsIGNvbnRyb2wKICAqIEB3Yl9pZHg6CQlXcml0 ZWJhY2sgaW5kZXggdGhpcyBwaHlzX2VuYyB3aWxsIGNvbnRyb2wKLSAqIEBjb21wX3R5cGU6ICAg ICAgVHlwZSBvZiBjb21wcmVzc2lvbiBzdXBwb3J0ZWQKICAqIEBlbmNfc3BpbmxvY2s6CVZpcnR1 YWwtRW5jb2Rlci1XaWRlIFNwaW4gTG9jayBmb3IgSVJRIHB1cnBvc2VzCiAgKi8KIHN0cnVjdCBk cHVfZW5jX3BoeXNfaW5pdF9wYXJhbXMgewpAQCAtMzk0LDcgKzM5MSw2IEBAIHN0cnVjdCBkcHVf ZW5jX3BoeXNfaW5pdF9wYXJhbXMgewogCWVudW0gZHB1X2VuY19zcGxpdF9yb2xlIHNwbGl0X3Jv bGU7CiAJZW51bSBkcHVfaW50ZiBpbnRmX2lkeDsKIAllbnVtIGRwdV93YiB3Yl9pZHg7Ci0JZW51 bSBtc21fZGlzcGxheV9jb21wcmVzc2lvbl90eXBlIGNvbXBfdHlwZTsKIAlzcGlubG9ja190ICpl bmNfc3BpbmxvY2s7CiB9OwogCkBAIC00NzksOCArNDc1LDcgQEAgc3RhdGljIGlubGluZSBlbnVt IGRwdV8zZF9ibGVuZF9tb2RlIGRwdV9lbmNvZGVyX2hlbHBlcl9nZXRfM2RfYmxlbmRfbW9kZSgK IAogCXRvcG9sb2d5ID0gZHB1X2Nvbm5lY3Rvcl9nZXRfdG9wb2xvZ3lfbmFtZShwaHlzX2VuYy0+ Y29ubmVjdG9yKTsKIAlpZiAocGh5c19lbmMtPnNwbGl0X3JvbGUgPT0gRU5DX1JPTEVfU09MTyAm JgotCQkJKHRvcG9sb2d5ID09IERQVV9STV9UT1BPTE9HWV9EVUFMUElQRV8zRE1FUkdFIHx8Ci0J CQkgdG9wb2xvZ3kgPT0gRFBVX1JNX1RPUE9MT0dZX0RVQUxQSVBFXzNETUVSR0VfRFNDKSkKKwkg ICAgdG9wb2xvZ3kgPT0gRFBVX1JNX1RPUE9MT0dZX0RVQUxQSVBFXzNETUVSR0UpCiAJCXJldHVy biBCTEVORF8zRF9IX1JPV19JTlQ7CiAKIAlyZXR1cm4gQkxFTkRfM0RfTk9ORTsKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9lbmNvZGVyX3BoeXNfY21kLmMg Yi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfZW5jb2Rlcl9waHlzX2NtZC5jCmlu ZGV4IDZjY2YzNzguLjcxZTJlNWEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlz cC9kcHUxL2RwdV9lbmNvZGVyX3BoeXNfY21kLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9k aXNwL2RwdTEvZHB1X2VuY29kZXJfcGh5c19jbWQuYwpAQCAtMTIzNyw3ICsxMjM3LDYgQEAgc3Ry dWN0IGRwdV9lbmNvZGVyX3BoeXMgKmRwdV9lbmNvZGVyX3BoeXNfY21kX2luaXQoCiAJcGh5c19l bmMtPmVuY19zcGlubG9jayA9IHAtPmVuY19zcGlubG9jazsKIAljbWRfZW5jLT5zdHJlYW1fc2Vs ID0gMDsKIAlwaHlzX2VuYy0+ZW5hYmxlX3N0YXRlID0gRFBVX0VOQ19ESVNBQkxFRDsKLQlwaHlz X2VuYy0+Y29tcF90eXBlID0gcC0+Y29tcF90eXBlOwogCWZvciAoaSA9IDA7IGkgPCBJTlRSX0lE WF9NQVg7IGkrKykgewogCQlpcnEgPSAmcGh5c19lbmMtPmlycVtpXTsKIAkJSU5JVF9MSVNUX0hF QUQoJmlycS0+Y2IubGlzdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3Av ZHB1MS9kcHVfZW5jb2Rlcl9waHlzX3ZpZC5jIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2Rw dTEvZHB1X2VuY29kZXJfcGh5c192aWQuYwppbmRleCAyN2VhMmIxLi5kNmI3MmEzIDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfZW5jb2Rlcl9waHlzX3ZpZC5j CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9lbmNvZGVyX3BoeXNfdmlk LmMKQEAgLTc3LDkgKzc3LDYgQEAgc3RhdGljIHZvaWQgZHJtX21vZGVfdG9faW50Zl90aW1pbmdf cGFyYW1zKAogCSAqIDwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFtodl10b3RhbCAtLS0t LS0tLS0tLS0tPgogCSAqLwogCXRpbWluZy0+d2lkdGggPSBtb2RlLT5oZGlzcGxheTsJLyogYWN0 aXZlIHdpZHRoICovCi0JaWYgKHZpZF9lbmMtPmJhc2UuY29tcF90eXBlID09IE1TTV9ESVNQTEFZ X0NPTVBSRVNTSU9OX0RTQykKLQkJdGltaW5nLT53aWR0aCA9IERJVl9ST1VORF9VUCh0aW1pbmct PndpZHRoLCAzKTsKLQogCXRpbWluZy0+aGVpZ2h0ID0gbW9kZS0+dmRpc3BsYXk7CS8qIGFjdGl2 ZSBoZWlnaHQgKi8KIAl0aW1pbmctPnhyZXMgPSB0aW1pbmctPndpZHRoOwogCXRpbWluZy0+eXJl cyA9IHRpbWluZy0+aGVpZ2h0OwpAQCAtMzc5LDggKzM3Niw3IEBAIHN0YXRpYyBib29sIF9kcHVf ZW5jb2Rlcl9waHlzX2lzX2R1YWxfY3RsKHN0cnVjdCBkcHVfZW5jb2Rlcl9waHlzICpwaHlzX2Vu YykKIAkJcmV0dXJuIGZhbHNlOwogCiAJdG9wb2xvZ3kgPSBkcHVfY29ubmVjdG9yX2dldF90b3Bv bG9neV9uYW1lKHBoeXNfZW5jLT5jb25uZWN0b3IpOwotCWlmICgodG9wb2xvZ3kgPT0gRFBVX1JN X1RPUE9MT0dZX0RVQUxQSVBFX0RTQykgfHwKLQkJKHRvcG9sb2d5ID09IERQVV9STV9UT1BPTE9H WV9EVUFMUElQRSkpCisJaWYgKHRvcG9sb2d5ID09IERQVV9STV9UT1BPTE9HWV9EVUFMUElQRSkK IAkJcmV0dXJuIHRydWU7CiAKIAlyZXR1cm4gZmFsc2U7CkBAIC05MTUsNyArOTExLDYgQEAgc3Ry dWN0IGRwdV9lbmNvZGVyX3BoeXMgKmRwdV9lbmNvZGVyX3BoeXNfdmlkX2luaXQoCiAJcGh5c19l bmMtPnNwbGl0X3JvbGUgPSBwLT5zcGxpdF9yb2xlOwogCXBoeXNfZW5jLT5pbnRmX21vZGUgPSBJ TlRGX01PREVfVklERU87CiAJcGh5c19lbmMtPmVuY19zcGlubG9jayA9IHAtPmVuY19zcGlubG9j azsKLQlwaHlzX2VuYy0+Y29tcF90eXBlID0gcC0+Y29tcF90eXBlOwogCWZvciAoaSA9IDA7IGkg PCBJTlRSX0lEWF9NQVg7IGkrKykgewogCQlpcnEgPSAmcGh5c19lbmMtPmlycVtpXTsKIAkJSU5J VF9MSVNUX0hFQUQoJmlycS0+Y2IubGlzdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v bXNtL2Rpc3AvZHB1MS9kcHVfaHdfY2F0YWxvZy5jIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNw L2RwdTEvZHB1X2h3X2NhdGFsb2cuYwppbmRleCBkZjczMTQ4Li4xNGU2NmNhIDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdfY2F0YWxvZy5jCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od19jYXRhbG9nLmMKQEAgLTM4MCwyOSAr MzgwLDYgQEAKIH07CiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqCi0gKiBEU0Mgc3ViIGJsb2NrcyBjb25maWcKLSAqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwot Ci1zdGF0aWMgc3RydWN0IGRwdV9kc2NfY2ZnIHNkbTg0NV9kc2NbXSA9IHsKLQl7Ci0JLm5hbWUg PSAiZHNjXzAiLCAuaWQgPSBEU0NfMCwKLQkuYmFzZSA9IDB4ODEwMDAsIC5sZW4gPSAweDE0MAot CX0sCi0JewotCS5uYW1lID0gImRzY18xIiwgLmlkID0gRFNDXzEsCi0JLmJhc2UgPSAweDgxNDAw LCAubGVuID0gMHgxNDAKLQl9LAotCXsKLQkubmFtZSA9ICJkc2NfMiIsIC5pZCA9IERTQ18yLAot CS5iYXNlID0gMHg4MTgwMCwgLmxlbiA9IDB4MTQwCi0JfSwKLQl7Ci0JLm5hbWUgPSAiZHNjXzMi LCAuaWQgPSBEU0NfMywKLQkuYmFzZSA9IDB4ODFjMDAsIC5sZW4gPSAweDE0MAotCX0sCi19Owot Ci0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKgogICogSU5URiBzdWIgYmxvY2tzIGNvbmZpZwogICoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAjZGVmaW5lIElOVEZf QkxLKF9uYW1lLCBfaWQsIF9iYXNlLCBfdHlwZSwgX2N0cmxfaWQpIFwKQEAgLTU5MSw4ICs1Njgs NiBAQCB2b2lkIHNkbTg0NV9jZmdfaW5pdChzdHJ1Y3QgZHB1X21kc3NfY2ZnICpkcHVfY2ZnKQog CQkuZHMgPSBzZG04NDVfZHMsCiAJCS5waW5ncG9uZ19jb3VudCA9IEFSUkFZX1NJWkUoc2RtODQ1 X3BwKSwKIAkJLnBpbmdwb25nID0gc2RtODQ1X3BwLAotCQkuZHNjX2NvdW50ID0gQVJSQVlfU0la RShzZG04NDVfZHNjKSwKLQkJLmRzYyA9IHNkbTg0NV9kc2MsCiAJCS5jZG1fY291bnQgPSBBUlJB WV9TSVpFKHNkbTg0NV9jZG0pLAogCQkuY2RtID0gc2RtODQ1X2NkbSwKIAkJLmludGZfY291bnQg PSBBUlJBWV9TSVpFKHNkbTg0NV9pbnRmKSwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9t c20vZGlzcC9kcHUxL2RwdV9od19jYXRhbG9nLmggYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3Av ZHB1MS9kcHVfaHdfY2F0YWxvZy5oCmluZGV4IDQwZDkwYzMuLmNlZmYzYjcgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od19jYXRhbG9nLmgKKysrIGIvZHJp dmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3X2NhdGFsb2cuaApAQCAtMTk5LDcgKzE5 OSw2IEBAIGVudW0gewogICogQERQVV9QSU5HUE9OR19URTIgICAgICAgIEFkZGl0aW9uYWwgdGVh ciBjaGVjayBibG9jayBmb3Igc3BsaXQgcGlwZXMKICAqIEBEUFVfUElOR1BPTkdfU1BMSVQgICAg ICBQUCBibG9jayBzdXBwb3J0cyBzcGxpdCBmaWZvCiAgKiBARFBVX1BJTkdQT05HX1NMQVZFICAg ICAgUFAgYmxvY2sgaXMgYSBzdWl0YWJsZSBzbGF2ZSBmb3Igc3BsaXQgZmlmbwotICogQERQVV9Q SU5HUE9OR19EU0MsICAgICAgIERpc3BsYXkgc3RyZWFtIGNvbXByZXNzaW9uIGJsb2NrcwogICog QERQVV9QSU5HUE9OR19ESVRIRVIsICAgIERpdGhlciBibG9ja3MKICAqIEBEUFVfUElOR1BPTkdf TUFYCiAgKi8KQEAgLTIwOCw3ICsyMDcsNiBAQCBlbnVtIHsKIAlEUFVfUElOR1BPTkdfVEUyLAog CURQVV9QSU5HUE9OR19TUExJVCwKIAlEUFVfUElOR1BPTkdfU0xBVkUsCi0JRFBVX1BJTkdQT05H X0RTQywKIAlEUFVfUElOR1BPTkdfRElUSEVSLAogCURQVV9QSU5HUE9OR19NQVgKIH07CkBAIC00 ODksNyArNDg3LDYgQEAgc3RydWN0IGRwdV9kc3BwX3N1Yl9ibGtzIHsKIHN0cnVjdCBkcHVfcGlu Z3Bvbmdfc3ViX2Jsa3MgewogCXN0cnVjdCBkcHVfcHBfYmxrIHRlOwogCXN0cnVjdCBkcHVfcHBf YmxrIHRlMjsKLQlzdHJ1Y3QgZHB1X3BwX2JsayBkc2M7CiAJc3RydWN0IGRwdV9wcF9ibGsgZGl0 aGVyOwogfTsKIApAQCAtNjcxLDE2ICs2NjgsNiBAQCBzdHJ1Y3QgZHB1X3Bpbmdwb25nX2NmZyAg ewogfTsKIAogLyoqCi0gKiBzdHJ1Y3QgZHB1X2RzY19jZmcgLSBpbmZvcm1hdGlvbiBvZiBEU0Mg YmxvY2tzCi0gKiBAaWQgICAgICAgICAgICAgICAgIGVudW0gaWRlbnRpZnlpbmcgdGhpcyBibG9j awotICogQGJhc2UgICAgICAgICAgICAgICByZWdpc3RlciBvZmZzZXQgb2YgdGhpcyBibG9jawot ICogQGZlYXR1cmVzICAgICAgICAgICBiaXQgbWFzayBpZGVudGlmeWluZyBzdWItYmxvY2tzL2Zl YXR1cmVzCi0gKi8KLXN0cnVjdCBkcHVfZHNjX2NmZyB7Ci0JRFBVX0hXX0JMS19JTkZPOwotfTsK LQotLyoqCiAgKiBzdHJ1Y3QgZHB1X2NkbV9jZmcgLSBpbmZvcm1hdGlvbiBvZiBjaHJvbWEgZG93 biBibG9ja3MKICAqIEBpZCAgICAgICAgICAgICAgICAgZW51bSBpZGVudGlmeWluZyB0aGlzIGJs b2NrCiAgKiBAYmFzZSAgICAgICAgICAgICAgIHJlZ2lzdGVyIG9mZnNldCBvZiB0aGlzIGJsb2Nr CkBAIC05MTYsOSArOTAzLDYgQEAgc3RydWN0IGRwdV9tZHNzX2NmZyB7CiAJdTMyIHBpbmdwb25n X2NvdW50OwogCXN0cnVjdCBkcHVfcGluZ3BvbmdfY2ZnICpwaW5ncG9uZzsKIAotCXUzMiBkc2Nf Y291bnQ7Ci0Jc3RydWN0IGRwdV9kc2NfY2ZnICpkc2M7Ci0KIAl1MzIgY2RtX2NvdW50OwogCXN0 cnVjdCBkcHVfY2RtX2NmZyAqY2RtOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNt L2Rpc3AvZHB1MS9kcHVfaHdfZHNjLmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9k cHVfaHdfZHNjLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZjM2MzMGUuLjAwMDAw MDAKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3X2RzYy5jCisrKyAv ZGV2L251bGwKQEAgLTEsMjUyICswLDAgQEAKLS8qIENvcHlyaWdodCAoYykgMjAxNy0yMDE4LCBU aGUgTGludXggRm91bmRhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBUaGlzIHBy b2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1v ZGlmeQotICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSB2ZXJzaW9uIDIgYW5kCi0gKiBvbmx5IHZlcnNpb24gMiBhcyBwdWJsaXNoZWQgYnkgdGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KLSAqCi0gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJp YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VU IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBN RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg dGhlCi0gKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICov Ci0KLSNpbmNsdWRlICJkcHVfaHdfbWRzcy5oIgotI2luY2x1ZGUgImRwdV9od2lvLmgiCi0jaW5j bHVkZSAiZHB1X2h3X2NhdGFsb2cuaCIKLSNpbmNsdWRlICJkcHVfaHdfZHNjLmgiCi0jaW5jbHVk ZSAiZHB1X2h3X3Bpbmdwb25nLmgiCi0jaW5jbHVkZSAiZHB1X2RiZy5oIgotI2luY2x1ZGUgImRw dV9rbXMuaCIKLQotI2RlZmluZSBEU0NfQ09NTU9OX01PREUJICAgICAgICAgICAgICAgIDB4MDAw Ci0jZGVmaW5lIERTQ19FTkMgICAgICAgICAgICAgICAgICAgICAgICAgMFgwMDQKLSNkZWZpbmUg RFNDX1BJQ1RVUkUgICAgICAgICAgICAgICAgICAgICAweDAwOAotI2RlZmluZSBEU0NfU0xJQ0Ug ICAgICAgICAgICAgICAgICAgICAgIDB4MDBDCi0jZGVmaW5lIERTQ19DSFVOS19TSVpFICAgICAg ICAgICAgICAgICAgMHgwMTAKLSNkZWZpbmUgRFNDX0RFTEFZICAgICAgICAgICAgICAgICAgICAg ICAweDAxNAotI2RlZmluZSBEU0NfU0NBTEVfSU5JVElBTCAgICAgICAgICAgICAgIDB4MDE4Ci0j ZGVmaW5lIERTQ19TQ0FMRV9ERUNfSU5URVJWQUwgICAgICAgICAgMHgwMUMKLSNkZWZpbmUgRFND X1NDQUxFX0lOQ19JTlRFUlZBTCAgICAgICAgICAweDAyMAotI2RlZmluZSBEU0NfRklSU1RfTElO RV9CUEdfT0ZGU0VUICAgICAgIDB4MDI0Ci0jZGVmaW5lIERTQ19CUEdfT0ZGU0VUICAgICAgICAg ICAgICAgICAgMHgwMjgKLSNkZWZpbmUgRFNDX0RTQ19PRkZTRVQgICAgICAgICAgICAgICAgICAw eDAyQwotI2RlZmluZSBEU0NfRkxBVE5FU1MgICAgICAgICAgICAgICAgICAgIDB4MDMwCi0jZGVm aW5lIERTQ19SQ19NT0RFTF9TSVpFICAgICAgICAgICAgICAgMHgwMzQKLSNkZWZpbmUgRFNDX1JD ICAgICAgICAgICAgICAgICAgICAgICAgICAweDAzOAotI2RlZmluZSBEU0NfUkNfQlVGX1RIUkVT SCAgICAgICAgICAgICAgIDB4MDNDCi0jZGVmaW5lIERTQ19SQU5HRV9NSU5fUVAgICAgICAgICAg ICAgICAgMHgwNzQKLSNkZWZpbmUgRFNDX1JBTkdFX01BWF9RUCAgICAgICAgICAgICAgICAweDBC MAotI2RlZmluZSBEU0NfUkFOR0VfQlBHX09GRlNFVCAgICAgICAgICAgIDB4MEVDCi0KLXN0YXRp YyB2b2lkIGRwdV9od19kc2NfZGlzYWJsZShzdHJ1Y3QgZHB1X2h3X2RzYyAqZHNjKQotewotCXN0 cnVjdCBkcHVfaHdfYmxrX3JlZ19tYXAgKmRzY19jID0gJmRzYy0+aHc7Ci0KLQlEUFVfUkVHX1dS SVRFKGRzY19jLCBEU0NfQ09NTU9OX01PREUsIDApOwotfQotCi1zdGF0aWMgdm9pZCBkcHVfaHdf ZHNjX2NvbmZpZyhzdHJ1Y3QgZHB1X2h3X2RzYyAqaHdfZHNjLAotCQlzdHJ1Y3QgbXNtX2Rpc3Bs YXlfZHNjX2luZm8gKmRzYywgdTMyIG1vZGUsCi0JCWJvb2wgaWNoX3Jlc2V0X292ZXJyaWRlKQot ewotCXUzMiBkYXRhOwotCWludCBicHAsIGxzYjsKLQl1MzIgaW5pdGlhbF9saW5lcyA9IGRzYy0+ aW5pdGlhbF9saW5lczsKLQlib29sIGlzX2NtZF9tb2RlID0gIShtb2RlICYgQklUKDIpKTsKLQlz dHJ1Y3QgZHB1X2h3X2Jsa19yZWdfbWFwICpkc2NfYyA9ICZod19kc2MtPmh3OwotCi0JRFBVX1JF R19XUklURShkc2NfYywgRFNDX0NPTU1PTl9NT0RFLCBtb2RlKTsKLQotCWRhdGEgPSAwOwotCWlm IChpY2hfcmVzZXRfb3ZlcnJpZGUpCi0JCWRhdGEgPSAzIDw8IDI4OwotCi0JaWYgKGlzX2NtZF9t b2RlKQotCQlpbml0aWFsX2xpbmVzICs9IDE7Ci0KLQlkYXRhIHw9IChpbml0aWFsX2xpbmVzIDw8 IDIwKTsKLQlkYXRhIHw9ICgoZHNjLT5zbGljZV9sYXN0X2dyb3VwX3NpemUgLSAxKSA8PCAxOCk7 Ci0JLyogYnBwIGlzIDYuNCBmb3JtYXQsIDQgTFNCcyBiaXRzIGFyZSBmb3IgZnJhY3Rpb25hbCBw YXJ0ICovCi0JbHNiID0gZHNjLT5icHAgJSA0OwotCWJwcCA9IGRzYy0+YnBwIC8gNDsKLQlicHAg Kj0gNDsJLyogZWl0aGVyIDggb3IgMTIgKi8KLQlicHAgPDw9IDQ7Ci0JYnBwIHw9IGxzYjsKLQlk YXRhIHw9IChicHAgPDwgOCk7Ci0JZGF0YSB8PSAoZHNjLT5ibG9ja19wcmVkX2VuYWJsZSA8PCA3 KTsKLQlkYXRhIHw9IChkc2MtPmxpbmVfYnVmX2RlcHRoIDw8IDMpOwotCWRhdGEgfD0gKGRzYy0+ ZW5hYmxlXzQyMiA8PCAyKTsKLQlkYXRhIHw9IChkc2MtPmNvbnZlcnRfcmdiIDw8IDEpOwotCWRh dGEgfD0gZHNjLT5pbnB1dF8xMF9iaXRzOwotCi0JRFBVX1JFR19XUklURShkc2NfYywgRFNDX0VO QywgZGF0YSk7Ci0KLQlkYXRhID0gZHNjLT5waWNfd2lkdGggPDwgMTY7Ci0JZGF0YSB8PSBkc2Mt PnBpY19oZWlnaHQ7Ci0JRFBVX1JFR19XUklURShkc2NfYywgRFNDX1BJQ1RVUkUsIGRhdGEpOwot Ci0JZGF0YSA9IGRzYy0+c2xpY2Vfd2lkdGggPDwgMTY7Ci0JZGF0YSB8PSBkc2MtPnNsaWNlX2hl aWdodDsKLQlEUFVfUkVHX1dSSVRFKGRzY19jLCBEU0NfU0xJQ0UsIGRhdGEpOwotCi0JZGF0YSA9 IGRzYy0+Y2h1bmtfc2l6ZSA8PCAxNjsKLQlEUFVfUkVHX1dSSVRFKGRzY19jLCBEU0NfQ0hVTktf U0laRSwgZGF0YSk7Ci0KLQlkYXRhID0gZHNjLT5pbml0aWFsX2RlY19kZWxheSA8PCAxNjsKLQlk YXRhIHw9IGRzYy0+aW5pdGlhbF94bWl0X2RlbGF5OwotCURQVV9SRUdfV1JJVEUoZHNjX2MsIERT Q19ERUxBWSwgZGF0YSk7Ci0KLQlkYXRhID0gZHNjLT5pbml0aWFsX3NjYWxlX3ZhbHVlOwotCURQ VV9SRUdfV1JJVEUoZHNjX2MsIERTQ19TQ0FMRV9JTklUSUFMLCBkYXRhKTsKLQotCWRhdGEgPSBk c2MtPnNjYWxlX2RlY3JlbWVudF9pbnRlcnZhbDsKLQlEUFVfUkVHX1dSSVRFKGRzY19jLCBEU0Nf U0NBTEVfREVDX0lOVEVSVkFMLCBkYXRhKTsKLQotCWRhdGEgPSBkc2MtPnNjYWxlX2luY3JlbWVu dF9pbnRlcnZhbDsKLQlEUFVfUkVHX1dSSVRFKGRzY19jLCBEU0NfU0NBTEVfSU5DX0lOVEVSVkFM LCBkYXRhKTsKLQotCWRhdGEgPSBkc2MtPmZpcnN0X2xpbmVfYnBnX29mZnNldDsKLQlEUFVfUkVH X1dSSVRFKGRzY19jLCBEU0NfRklSU1RfTElORV9CUEdfT0ZGU0VULCBkYXRhKTsKLQotCWRhdGEg PSBkc2MtPm5mbF9icGdfb2Zmc2V0IDw8IDE2OwotCWRhdGEgfD0gZHNjLT5zbGljZV9icGdfb2Zm c2V0OwotCURQVV9SRUdfV1JJVEUoZHNjX2MsIERTQ19CUEdfT0ZGU0VULCBkYXRhKTsKLQotCWRh dGEgPSBkc2MtPmluaXRpYWxfb2Zmc2V0IDw8IDE2OwotCWRhdGEgfD0gZHNjLT5maW5hbF9vZmZz ZXQ7Ci0JRFBVX1JFR19XUklURShkc2NfYywgRFNDX0RTQ19PRkZTRVQsIGRhdGEpOwotCi0JZGF0 YSA9IGRzYy0+ZGV0X3RocmVzaF9mbGF0bmVzcyA8PCAxMDsKLQlkYXRhIHw9IGRzYy0+bWF4X3Fw X2ZsYXRuZXNzIDw8IDU7Ci0JZGF0YSB8PSBkc2MtPm1pbl9xcF9mbGF0bmVzczsKLQlEUFVfUkVH X1dSSVRFKGRzY19jLCBEU0NfRkxBVE5FU1MsIGRhdGEpOwotCi0JZGF0YSA9IGRzYy0+cmNfbW9k ZWxfc2l6ZTsKLQlEUFVfUkVHX1dSSVRFKGRzY19jLCBEU0NfUkNfTU9ERUxfU0laRSwgZGF0YSk7 Ci0KLQlkYXRhID0gZHNjLT50Z3Rfb2Zmc2V0X2xvIDw8IDE4OwotCWRhdGEgfD0gZHNjLT50Z3Rf b2Zmc2V0X2hpIDw8IDE0OwotCWRhdGEgfD0gZHNjLT5xdWFudF9pbmNyX2xpbWl0MSA8PCA5Owot CWRhdGEgfD0gZHNjLT5xdWFudF9pbmNyX2xpbWl0MCA8PCA0OwotCWRhdGEgfD0gZHNjLT5lZGdl X2ZhY3RvcjsKLQlEUFVfUkVHX1dSSVRFKGRzY19jLCBEU0NfUkMsIGRhdGEpOwotfQotCi1zdGF0 aWMgdm9pZCBkcHVfaHdfZHNjX2NvbmZpZ190aHJlc2goc3RydWN0IGRwdV9od19kc2MgKmh3X2Rz YywKLQkJc3RydWN0IG1zbV9kaXNwbGF5X2RzY19pbmZvICpkc2MpCi17Ci0JdTMyICpscDsKLQlj aGFyICpjcDsKLQlpbnQgaTsKLQotCXN0cnVjdCBkcHVfaHdfYmxrX3JlZ19tYXAgKmRzY19jID0g Jmh3X2RzYy0+aHc7Ci0JdTMyIG9mZiA9IDB4MDsKLQotCWxwID0gZHNjLT5idWZfdGhyZXNoOwot CW9mZiA9IERTQ19SQ19CVUZfVEhSRVNIOwotCWZvciAoaSA9IDA7IGkgPCAxNDsgaSsrKSB7Ci0J CURQVV9SRUdfV1JJVEUoZHNjX2MsIG9mZiwgKmxwKyspOwotCQlvZmYgKz0gNDsKLQl9Ci0KLQlj cCA9IGRzYy0+cmFuZ2VfbWluX3FwOwotCW9mZiA9IERTQ19SQU5HRV9NSU5fUVA7Ci0JZm9yIChp ID0gMDsgaSA8IDE1OyBpKyspIHsKLQkJRFBVX1JFR19XUklURShkc2NfYywgb2ZmLCAqY3ArKyk7 Ci0JCW9mZiArPSA0OwotCX0KLQotCWNwID0gZHNjLT5yYW5nZV9tYXhfcXA7Ci0Jb2ZmID0gRFND X1JBTkdFX01BWF9RUDsKLQlmb3IgKGkgPSAwOyBpIDwgMTU7IGkrKykgewotCQlEUFVfUkVHX1dS SVRFKGRzY19jLCBvZmYsICpjcCsrKTsKLQkJb2ZmICs9IDQ7Ci0JfQotCi0JY3AgPSBkc2MtPnJh bmdlX2JwZ19vZmZzZXQ7Ci0Jb2ZmID0gRFNDX1JBTkdFX0JQR19PRkZTRVQ7Ci0JZm9yIChpID0g MDsgaSA8IDE1OyBpKyspIHsKLQkJRFBVX1JFR19XUklURShkc2NfYywgb2ZmLCAqY3ArKyk7Ci0J CW9mZiArPSA0OwotCX0KLX0KLQotc3RhdGljIHN0cnVjdCBkcHVfZHNjX2NmZyAqX2RzY19vZmZz ZXQoZW51bSBkcHVfZHNjIGRzYywKLQkJc3RydWN0IGRwdV9tZHNzX2NmZyAqbSwKLQkJdm9pZCBf X2lvbWVtICphZGRyLAotCQlzdHJ1Y3QgZHB1X2h3X2Jsa19yZWdfbWFwICpiKQotewotCWludCBp OwotCi0JZm9yIChpID0gMDsgaSA8IG0tPmRzY19jb3VudDsgaSsrKSB7Ci0JCWlmIChkc2MgPT0g bS0+ZHNjW2ldLmlkKSB7Ci0JCQliLT5iYXNlX29mZiA9IGFkZHI7Ci0JCQliLT5ibGtfb2ZmID0g bS0+ZHNjW2ldLmJhc2U7Ci0JCQliLT5sZW5ndGggPSBtLT5kc2NbaV0ubGVuOwotCQkJYi0+aHd2 ZXJzaW9uID0gbS0+aHd2ZXJzaW9uOwotCQkJYi0+bG9nX21hc2sgPSBEUFVfREJHX01BU0tfRFND OwotCQkJcmV0dXJuICZtLT5kc2NbaV07Ci0JCX0KLQl9Ci0KLQlyZXR1cm4gTlVMTDsKLX0KLQot c3RhdGljIHZvaWQgX3NldHVwX2RzY19vcHMoc3RydWN0IGRwdV9od19kc2Nfb3BzICpvcHMsCi0J CXVuc2lnbmVkIGxvbmcgY2FwKQotewotCW9wcy0+ZHNjX2Rpc2FibGUgPSBkcHVfaHdfZHNjX2Rp c2FibGU7Ci0Jb3BzLT5kc2NfY29uZmlnID0gZHB1X2h3X2RzY19jb25maWc7Ci0Jb3BzLT5kc2Nf Y29uZmlnX3RocmVzaCA9IGRwdV9od19kc2NfY29uZmlnX3RocmVzaDsKLX07Ci0KLXN0YXRpYyBz dHJ1Y3QgZHB1X2h3X2Jsa19vcHMgZHB1X2h3X29wcyA9IHsKLQkuc3RhcnQgPSBOVUxMLAotCS5z dG9wID0gTlVMTCwKLX07Ci0KLXN0cnVjdCBkcHVfaHdfZHNjICpkcHVfaHdfZHNjX2luaXQoZW51 bSBkcHVfZHNjIGlkeCwKLQkJdm9pZCBfX2lvbWVtICphZGRyLAotCQlzdHJ1Y3QgZHB1X21kc3Nf Y2ZnICptKQotewotCXN0cnVjdCBkcHVfaHdfZHNjICpjOwotCXN0cnVjdCBkcHVfZHNjX2NmZyAq Y2ZnOwotCWludCByYzsKLQotCWMgPSBremFsbG9jKHNpemVvZigqYyksIEdGUF9LRVJORUwpOwot CWlmICghYykKLQkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7Ci0KLQljZmcgPSBfZHNjX29mZnNl dChpZHgsIG0sIGFkZHIsICZjLT5odyk7Ci0JaWYgKElTX0VSUl9PUl9OVUxMKGNmZykpIHsKLQkJ a2ZyZWUoYyk7Ci0JCXJldHVybiBFUlJfUFRSKC1FSU5WQUwpOwotCX0KLQotCWMtPmlkeCA9IGlk eDsKLQljLT5jYXBzID0gY2ZnOwotCV9zZXR1cF9kc2Nfb3BzKCZjLT5vcHMsIGMtPmNhcHMtPmZl YXR1cmVzKTsKLQotCXJjID0gZHB1X2h3X2Jsa19pbml0KCZjLT5iYXNlLCBEUFVfSFdfQkxLX0RT QywgaWR4LCAmZHB1X2h3X29wcyk7Ci0JaWYgKHJjKSB7Ci0JCURQVV9FUlJPUigiZmFpbGVkIHRv IGluaXQgaHcgYmxrICVkXG4iLCByYyk7Ci0JCWdvdG8gYmxrX2luaXRfZXJyb3I7Ci0JfQotCi0J ZHB1X2RiZ19yZWdfcmVnaXN0ZXJfZHVtcF9yYW5nZShEUFVfREJHX05BTUUsIGNmZy0+bmFtZSwg Yy0+aHcuYmxrX29mZiwKLQkJYy0+aHcuYmxrX29mZiArIGMtPmh3Lmxlbmd0aCwgYy0+aHcueGlu X2lkKTsKLQotCXJldHVybiBjOwotCi1ibGtfaW5pdF9lcnJvcjoKLQlremZyZWUoYyk7Ci0KLQly ZXR1cm4gRVJSX1BUUihyYyk7Ci19Ci0KLXZvaWQgZHB1X2h3X2RzY19kZXN0cm95KHN0cnVjdCBk cHVfaHdfZHNjICpkc2MpCi17Ci0JaWYgKGRzYykKLQkJZHB1X2h3X2Jsa19kZXN0cm95KCZkc2Mt PmJhc2UpOwotCWtmcmVlKGRzYyk7Ci19CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNt L2Rpc3AvZHB1MS9kcHVfaHdfZHNjLmggYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9k cHVfaHdfZHNjLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGViYWI5MjAuLjAwMDAw MDAKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3X2RzYy5oCisrKyAv ZGV2L251bGwKQEAgLTEsMTAwICswLDAgQEAKLS8qIENvcHlyaWdodCAoYykgMjAxNy0yMDE4LCBU aGUgTGludXggRm91bmRhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBUaGlzIHBy b2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1v ZGlmeQotICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSB2ZXJzaW9uIDIgYW5kCi0gKiBvbmx5IHZlcnNpb24gMiBhcyBwdWJsaXNoZWQgYnkgdGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KLSAqCi0gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJp YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VU IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBN RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg dGhlCi0gKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICov Ci0KLSNpZm5kZWYgX0RQVV9IV19EU0NfSAotI2RlZmluZSBfRFBVX0hXX0RTQ19ICi0KLSNpbmNs dWRlICJkcHVfaHdfY2F0YWxvZy5oIgotI2luY2x1ZGUgImRwdV9od19tZHNzLmgiCi0jaW5jbHVk ZSAiZHB1X2h3X3V0aWwuaCIKLSNpbmNsdWRlICJkcHVfaHdfYmxrLmgiCi0KLXN0cnVjdCBkcHVf aHdfZHNjOwotc3RydWN0IG1zbV9kaXNwbGF5X2RzY19pbmZvOwotCi0jZGVmaW5lIERTQ19NT0RF X1NQTElUX1BBTkVMICAgICAgICAgICAgQklUKDApCi0jZGVmaW5lIERTQ19NT0RFX01VTFRJUExF WCAgICAgICAgICAgICAgQklUKDEpCi0jZGVmaW5lIERTQ19NT0RFX1ZJREVPICAgICAgICAgICAg ICAgICAgQklUKDIpCi0KLS8qKgotICogc3RydWN0IGRwdV9od19kc2Nfb3BzIC0gaW50ZXJmYWNl IHRvIHRoZSBkc2MgaGFyZHdhcmUgZHJpdmVyIGZ1bmN0aW9ucwotICogQXNzdW1wdGlvbiBpcyB0 aGVzZSBmdW5jdGlvbnMgd2lsbCBiZSBjYWxsZWQgYWZ0ZXIgY2xvY2tzIGFyZSBlbmFibGVkCi0g Ki8KLXN0cnVjdCBkcHVfaHdfZHNjX29wcyB7Ci0JLyoqCi0JICogZHNjX2Rpc2FibGUgLSBkaXNh YmxlIGRzYwotCSAqIEBod19kc2M6IFBvaW50ZXIgdG8gZHNjIGNvbnRleHQKLQkgKi8KLQl2b2lk ICgqZHNjX2Rpc2FibGUpKHN0cnVjdCBkcHVfaHdfZHNjICpod19kc2MpOwotCi0JLyoqCi0JICog ZHNjX2NvbmZpZyAtIGNvbmZpZ3VyZXMgZHNjIGVuY29kZXIKLQkgKiBAaHdfZHNjOiBQb2ludGVy IHRvIGRzYyBjb250ZXh0Ci0JICogQGRzYzogcGFuZWwgZHNjIHBhcmFtZXRlcnMKLQkgKiBAbW9k ZTogZHNjIHRvcG9sb2d5IG1vZGUgdG8gYmUgc2V0Ci0JICogQGljaF9yZXNldF9vdmVycmlkZTog b3B0aW9uIHRvIHJlc2V0IGljaAotCSAqLwotCXZvaWQgKCpkc2NfY29uZmlnKShzdHJ1Y3QgZHB1 X2h3X2RzYyAqaHdfZHNjLAotCQkJc3RydWN0IG1zbV9kaXNwbGF5X2RzY19pbmZvICpkc2MsCi0J CQl1MzIgbW9kZSwgYm9vbCBpY2hfcmVzZXRfb3ZlcnJpZGUpOwotCi0JLyoqCi0JICogZHNjX2Nv bmZpZ190aHJlc2ggLSBwcm9ncmFtcyBwYW5lbCB0aHJlc2hvbGRzCi0JICogQGh3X2RzYzogUG9p bnRlciB0byBkc2MgY29udGV4dAotCSAqIEBkc2M6IHBhbmVsIGRzYyBwYXJhbWV0ZXJzCi0JICov Ci0Jdm9pZCAoKmRzY19jb25maWdfdGhyZXNoKShzdHJ1Y3QgZHB1X2h3X2RzYyAqaHdfZHNjLAot CQkJc3RydWN0IG1zbV9kaXNwbGF5X2RzY19pbmZvICpkc2MpOwotfTsKLQotc3RydWN0IGRwdV9o d19kc2MgewotCXN0cnVjdCBkcHVfaHdfYmxrIGJhc2U7Ci0Jc3RydWN0IGRwdV9od19ibGtfcmVn X21hcCBodzsKLQotCS8qIGRzYyAqLwotCWVudW0gZHB1X2RzYyBpZHg7Ci0JY29uc3Qgc3RydWN0 IGRwdV9kc2NfY2ZnICpjYXBzOwotCi0JLyogb3BzICovCi0Jc3RydWN0IGRwdV9od19kc2Nfb3Bz IG9wczsKLX07Ci0KLS8qKgotICogZHB1X2h3X2RzYyAtIGNvbnZlcnQgYmFzZSBvYmplY3QgZHB1 X2h3X2Jhc2UgdG8gY29udGFpbmVyCi0gKiBAaHc6IFBvaW50ZXIgdG8gYmFzZSBoYXJkd2FyZSBi bG9jawotICogcmV0dXJuOiBQb2ludGVyIHRvIGhhcmR3YXJlIGJsb2NrIGNvbnRhaW5lcgotICov Ci1zdGF0aWMgaW5saW5lIHN0cnVjdCBkcHVfaHdfZHNjICp0b19kcHVfaHdfZHNjKHN0cnVjdCBk cHVfaHdfYmxrICpodykKLXsKLQlyZXR1cm4gY29udGFpbmVyX29mKGh3LCBzdHJ1Y3QgZHB1X2h3 X2RzYywgYmFzZSk7Ci19Ci0KLS8qKgotICogZHB1X2h3X2RzY19pbml0IC0gaW5pdGlhbGl6ZXMg dGhlIGRzYyBibG9jayBmb3IgdGhlIHBhc3NlZAotICogICAgICAgICAgICAgICAgICAgZHNjIGlk eC4KLSAqIEBpZHg6ICBEU0MgaW5kZXggZm9yIHdoaWNoIGRyaXZlciBvYmplY3QgaXMgcmVxdWly ZWQKLSAqIEBhZGRyOiBNYXBwZWQgcmVnaXN0ZXIgaW8gYWRkcmVzcyBvZiBNRFAKLSAqIEBtOiAg ICBQb2ludGVyIHRvIG1kc3MgY2F0YWxvZyBkYXRhCi0gKiBSZXR1cm5zOiBFcnJvciBjb2RlIG9y IGFsbG9jYXRlZCBkcHVfaHdfZHNjIGNvbnRleHQKLSAqLwotc3RydWN0IGRwdV9od19kc2MgKmRw dV9od19kc2NfaW5pdChlbnVtIGRwdV9kc2MgaWR4LAotCQl2b2lkIF9faW9tZW0gKmFkZHIsCi0J CXN0cnVjdCBkcHVfbWRzc19jZmcgKm0pOwotCi0vKioKLSAqIGRwdV9od19kc2NfZGVzdHJveSAt IGRlc3Ryb3lzIGRzYyBkcml2ZXIgY29udGV4dAotICogICAgICAgICAgICAgICAgICAgICAgc2hv dWxkIGJlIGNhbGxlZCB0byBmcmVlIHRoZSBjb250ZXh0Ci0gKiBAZHNjOiAgIFBvaW50ZXIgdG8g ZHNjIGRyaXZlciBjb250ZXh0IHJldHVybmVkIGJ5IGRwdV9od19kc2NfaW5pdAotICovCi12b2lk IGRwdV9od19kc2NfZGVzdHJveShzdHJ1Y3QgZHB1X2h3X2RzYyAqZHNjKTsKLQotI2VuZGlmIC8q X0RQVV9IV19EU0NfSCAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2Rw dTEvZHB1X2h3X21kc3MuaCBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od19t ZHNzLmgKaW5kZXggNWVkZTJiNS4uNzBkNTdjOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L21zbS9kaXNwL2RwdTEvZHB1X2h3X21kc3MuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rp c3AvZHB1MS9kcHVfaHdfbWRzcy5oCkBAIC0xMDYsNyArMTA2LDYgQEAgZW51bSBkcHVfaHdfYmxr X3R5cGUgewogCURQVV9IV19CTEtfUElOR1BPTkcsCiAJRFBVX0hXX0JMS19JTlRGLAogCURQVV9I V19CTEtfV0IsCi0JRFBVX0hXX0JMS19EU0MsCiAJRFBVX0hXX0JMS19NQVgsCiB9OwogCkBAIC0y MDgsMTcgKzIwNyw2IEBAIGVudW0gZHB1X3Bpbmdwb25nIHsKIAlQSU5HUE9OR19NQVgKIH07CiAK LWVudW0gZHB1X2RzYyB7Ci0JRFNDX05PTkUgPSAwLAotCURTQ18wLAotCURTQ18xLAotCURTQ18y LAotCURTQ18zLAotCURTQ180LAotCURTQ181LAotCURTQ19NQVgKLX07Ci0KIGVudW0gZHB1X2lu dGYgewogCUlOVEZfMCA9IDEsCiAJSU5URl8xLApAQCAtNDgyLDkgKzQ3MCw4IEBAIHN0cnVjdCBk cHVfbWRzc19jb2xvciB7CiAjZGVmaW5lIERQVV9EQkdfTUFTS19XQiAgICAgICAoMSA8PCA4KQog I2RlZmluZSBEUFVfREJHX01BU0tfVE9QICAgICAgKDEgPDwgOSkKICNkZWZpbmUgRFBVX0RCR19N QVNLX1ZCSUYgICAgICgxIDw8IDEwKQotI2RlZmluZSBEUFVfREJHX01BU0tfRFNDICAgICAgKDEg PDwgMTEpCi0jZGVmaW5lIERQVV9EQkdfTUFTS19ST1QgICAgICAoMSA8PCAxMikKLSNkZWZpbmUg RFBVX0RCR19NQVNLX0RTICAgICAgICgxIDw8IDEzKQorI2RlZmluZSBEUFVfREJHX01BU0tfUk9U ICAgICAgKDEgPDwgMTEpCisjZGVmaW5lIERQVV9EQkdfTUFTS19EUyAgICAgICAoMSA8PCAxMikK IAogLyoqCiAgKiBzdHJ1Y3QgZHB1X2h3X2NwX2NmZzogaGFyZHdhcmUgZHNwcC9sbSBmZWF0dXJl IHBheWxvYWQuCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVf aHdfcGluZ3BvbmcuYyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od19waW5n cG9uZy5jCmluZGV4IGUyOTNkNmUuLjkzMDhmNWMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9tc20vZGlzcC9kcHUxL2RwdV9od19waW5ncG9uZy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9t c20vZGlzcC9kcHUxL2RwdV9od19waW5ncG9uZy5jCkBAIC0zNiw5ICszNiw2IEBACiAjZGVmaW5l IFBQX0ZCQ19NT0RFICAgICAgICAgICAgICAgICAgICAgMHgwMzQKICNkZWZpbmUgUFBfRkJDX0JV REdFVF9DVEwgICAgICAgICAgICAgICAweDAzOAogI2RlZmluZSBQUF9GQkNfTE9TU1lfTU9ERSAg ICAgICAgICAgICAgIDB4MDNDCi0jZGVmaW5lIFBQX0RTQ19NT0RFICAgICAgICAgICAgICAgICAg ICAgMHgwYTAKLSNkZWZpbmUgUFBfRENFX0RBVEFfSU5fU1dBUCAgICAgICAgICAgICAweDBhYwot I2RlZmluZSBQUF9EQ0VfREFUQV9PVVRfU1dBUCAgICAgICAgICAgIDB4MGM4CiAKICNkZWZpbmUg RElUSEVSX0RFUFRIX01BUF9JTkRFWCA5CiBzdGF0aWMgdTMyIGRpdGhlcl9kZXB0aF9tYXBbRElU SEVSX0RFUFRIX01BUF9JTkRFWF0gPSB7CkBAIC0xNTEsNDggKzE0OCw2IEBAIHN0YXRpYyBpbnQg ZHB1X2h3X3BwX3BvbGxfdGltZW91dF93cl9wdHIoc3RydWN0IGRwdV9od19waW5ncG9uZyAqcHAs CiAJcmV0dXJuIHJjOwogfQogCi1zdGF0aWMgdm9pZCBkcHVfaHdfcHBfZHNjX2VuYWJsZShzdHJ1 Y3QgZHB1X2h3X3Bpbmdwb25nICpwcCkKLXsKLQlzdHJ1Y3QgZHB1X2h3X2Jsa19yZWdfbWFwICpj OwotCi0JaWYgKCFwcCkKLQkJcmV0dXJuOwotCWMgPSAmcHAtPmh3OwotCi0JRFBVX1JFR19XUklU RShjLCBQUF9EU0NfTU9ERSwgMSk7Ci19Ci0KLXN0YXRpYyB2b2lkIGRwdV9od19wcF9kc2NfZGlz YWJsZShzdHJ1Y3QgZHB1X2h3X3Bpbmdwb25nICpwcCkKLXsKLQlzdHJ1Y3QgZHB1X2h3X2Jsa19y ZWdfbWFwICpjOwotCXUzMiBkYXRhOwotCi0JaWYgKCFwcCkKLQkJcmV0dXJuOwotCWMgPSAmcHAt Pmh3OwotCi0JZGF0YSA9IERQVV9SRUdfUkVBRChjLCBQUF9EQ0VfREFUQV9PVVRfU1dBUCk7Ci0J ZGF0YSAmPSB+QklUKDE4KTsgLyogZGlzYWJsZSBlbmRpYW4gZmxpcCAqLwotCURQVV9SRUdfV1JJ VEUoYywgUFBfRENFX0RBVEFfT1VUX1NXQVAsIGRhdGEpOwotCi0JRFBVX1JFR19XUklURShjLCBQ UF9EU0NfTU9ERSwgMCk7Ci19Ci0KLXN0YXRpYyBpbnQgZHB1X2h3X3BwX3NldHVwX2RzYyhzdHJ1 Y3QgZHB1X2h3X3Bpbmdwb25nICpwcCkKLXsKLQlzdHJ1Y3QgZHB1X2h3X2Jsa19yZWdfbWFwICpj OwotCWludCBkYXRhOwotCi0JaWYgKCFwcCkKLQkJcmV0dXJuIC1FSU5WQUw7Ci0JYyA9ICZwcC0+ aHc7Ci0KLQlkYXRhID0gRFBVX1JFR19SRUFEKGMsIFBQX0RDRV9EQVRBX09VVF9TV0FQKTsKLQlk YXRhIHw9IEJJVCgxOCk7IC8qIGVuZGlhbiBmbGlwICovCi0JRFBVX1JFR19XUklURShjLCBQUF9E Q0VfREFUQV9PVVRfU1dBUCwgZGF0YSk7Ci0JcmV0dXJuIDA7Ci19Ci0KIHN0YXRpYyBpbnQgZHB1 X2h3X3BwX3NldHVwX2RpdGhlcl92MShzdHJ1Y3QgZHB1X2h3X3Bpbmdwb25nICpwcCwKIAkJCQkJ dm9pZCAqY2ZnLCBzaXplX3QgbGVuKQogewpAQCAtMzM5LDkgKzI5NCw2IEBAIHN0YXRpYyB2b2lk IF9zZXR1cF9waW5ncG9uZ19vcHMoc3RydWN0IGRwdV9od19waW5ncG9uZ19vcHMgKm9wcywKIAlv cHMtPmNvbm5lY3RfZXh0ZXJuYWxfdGUgPSBkcHVfaHdfcHBfY29ubmVjdF9leHRlcm5hbF90ZTsK IAlvcHMtPmdldF92c3luY19pbmZvID0gZHB1X2h3X3BwX2dldF92c3luY19pbmZvOwogCW9wcy0+ c2V0dXBfYXV0b3JlZnJlc2ggPSBkcHVfaHdfcHBfc2V0dXBfYXV0b3JlZnJlc2hfY29uZmlnOwot CW9wcy0+c2V0dXBfZHNjID0gZHB1X2h3X3BwX3NldHVwX2RzYzsKLQlvcHMtPmVuYWJsZV9kc2Mg PSBkcHVfaHdfcHBfZHNjX2VuYWJsZTsKLQlvcHMtPmRpc2FibGVfZHNjID0gZHB1X2h3X3BwX2Rz Y19kaXNhYmxlOwogCW9wcy0+Z2V0X2F1dG9yZWZyZXNoID0gZHB1X2h3X3BwX2dldF9hdXRvcmVm cmVzaF9jb25maWc7CiAJb3BzLT5wb2xsX3RpbWVvdXRfd3JfcHRyID0gZHB1X2h3X3BwX3BvbGxf dGltZW91dF93cl9wdHI7CiAJb3BzLT5nZXRfbGluZV9jb3VudCA9IGRwdV9od19wcF9nZXRfbGlu ZV9jb3VudDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9o d19waW5ncG9uZy5oIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3X3Bpbmdw b25nLmgKaW5kZXggNzk4N2VlNi4uOTNkMDNjY2UgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9tc20vZGlzcC9kcHUxL2RwdV9od19waW5ncG9uZy5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9t c20vZGlzcC9kcHUxL2RwdV9od19waW5ncG9uZy5oCkBAIC00OCwxMCArNDgsNiBAQCBzdHJ1Y3Qg ZHB1X2h3X3BwX3ZzeW5jX2luZm8gewogCXUzMiB3cl9wdHJfbGluZV9jb3VudDsJLyogY3VycmVu dCBsaW5lIHdpdGhpbiBwcCBmaWZvICh3ciBwdHIpICovCiB9OwogCi1zdHJ1Y3QgZHB1X2h3X2Rz Y19jZmcgewotCXU4IGVuYWJsZTsKLX07Ci0KIC8qKgogICoKICAqIHN0cnVjdCBkcHVfaHdfcGlu Z3Bvbmdfb3BzIDogSW50ZXJmYWNlIHRvIHRoZSBwaW5ncG9uZyBIdyBkcml2ZXIgZnVuY3Rpb25z CkBAIC02MCw5ICs1Niw2IEBAIHN0cnVjdCBkcHVfaHdfZHNjX2NmZyB7CiAgKiAgQGVuYWJsZV90 ZWFyY2hlY2sgOiBlbmFibGVzIHRlYXIgY2hlY2sKICAqICBAZ2V0X3ZzeW5jX2luZm8gOiByZXRy aWVzIHRpbWluZyBpbmZvIG9mIHRoZSBwYW5lbAogICogIEBzZXR1cF9hdXRvcmVmcmVzaCA6IHBy b2dyYW0gYXV0byByZWZyZXNoCi0gKiAgQHNldHVwX2RzYyA6IHByb2dyYW0gRFNDIGJsb2NrIHdp dGggZW5jb2RpbmcgZGV0YWlscwotICogIEBlbmFibGVfZHNjIDogZW5hYmxlcyBEU0MgZW5jb2Rl cgotICogIEBkaXNhYmxlX2RzYyA6IGRpc2FibGVzIERTQyBlbmNvZGVyCiAgKiAgQHNldHVwX2Rp dGhlciA6IGZ1bmN0aW9uIHRvIHByb2dyYW0gdGhlIGRpdGhlciBodyBibG9jawogICogIEBnZXRf bGluZV9jb3VudDogb2J0YWluIGN1cnJlbnQgdmVydGljYWwgbGluZSBjb3VudGVyCiAgKi8KQEAg LTExMywyMSArMTA2LDYgQEAgc3RydWN0IGRwdV9od19waW5ncG9uZ19vcHMgewogCWludCAoKnBv bGxfdGltZW91dF93cl9wdHIpKHN0cnVjdCBkcHVfaHdfcGluZ3BvbmcgKnBwLCB1MzIgdGltZW91 dF91cyk7CiAKIAkvKioKLQkgKiBQcm9ncmFtIHRoZSBkc2MgY29tcHJlc3Npb24gYmxvY2sKLQkg Ki8KLQlpbnQgKCpzZXR1cF9kc2MpKHN0cnVjdCBkcHVfaHdfcGluZ3BvbmcgKnBwKTsKLQotCS8q KgotCSAqIEVuYWJsZXMgRFNDIGVuY29kZXIKLQkgKi8KLQl2b2lkICgqZW5hYmxlX2RzYykoc3Ry dWN0IGRwdV9od19waW5ncG9uZyAqcHApOwotCi0JLyoqCi0JICogRGlzYWJsZXMgRFNDIGVuY29k ZXIKLQkgKi8KLQl2b2lkICgqZGlzYWJsZV9kc2MpKHN0cnVjdCBkcHVfaHdfcGluZ3BvbmcgKnBw KTsKLQotCS8qKgogCSAqIFByb2dyYW0gdGhlIGRpdGhlciBodyBibG9jawogCSAqLwogCWludCAo KnNldHVwX2RpdGhlcikoc3RydWN0IGRwdV9od19waW5ncG9uZyAqcHAsIHZvaWQgKmNmZywgc2l6 ZV90IGxlbik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVf aHdfdG9wLmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdfdG9wLmMKaW5k ZXggNjgxNjNhMS4uNjBlNGJlZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNw L2RwdTEvZHB1X2h3X3RvcC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2Rw dV9od190b3AuYwpAQCAtMzE3LDE4ICszMTcsNiBAQCBzdGF0aWMgdm9pZCBkcHVfaHdfZ2V0X3Nh ZmVfc3RhdHVzKHN0cnVjdCBkcHVfaHdfbWRwICptZHAsCiAJc3RhdHVzLT53YltXQl8zXSA9IDA7 CiB9CiAKLXN0YXRpYyB2b2lkIGRwdV9od19zZXR1cF9kY2Uoc3RydWN0IGRwdV9od19tZHAgKm1k cCwgdTMyIGRjZV9zZWwpCi17Ci0Jc3RydWN0IGRwdV9od19ibGtfcmVnX21hcCAqYzsKLQotCWlm ICghbWRwKQotCQlyZXR1cm47Ci0KLQljID0gJm1kcC0+aHc7Ci0KLQlEUFVfUkVHX1dSSVRFKGMs IERDRV9TRUwsIGRjZV9zZWwpOwotfQotCiB2b2lkIGRwdV9od19yZXNldF91YndjKHN0cnVjdCBk cHVfaHdfbWRwICptZHAsIHN0cnVjdCBkcHVfbWRzc19jZmcgKm0pCiB7CiAJc3RydWN0IGRwdV9o d19ibGtfcmVnX21hcCBjOwpAQCAtMzY3LDcgKzM1NSw2IEBAIHN0YXRpYyB2b2lkIF9zZXR1cF9t ZHBfb3BzKHN0cnVjdCBkcHVfaHdfbWRwX29wcyAqb3BzLAogCW9wcy0+Z2V0X2Rhbmdlcl9zdGF0 dXMgPSBkcHVfaHdfZ2V0X2Rhbmdlcl9zdGF0dXM7CiAJb3BzLT5zZXR1cF92c3luY19zb3VyY2Ug PSBkcHVfaHdfc2V0dXBfdnN5bmNfc291cmNlOwogCW9wcy0+Z2V0X3NhZmVfc3RhdHVzID0gZHB1 X2h3X2dldF9zYWZlX3N0YXR1czsKLQlvcHMtPnNldHVwX2RjZSA9IGRwdV9od19zZXR1cF9kY2U7 CiAJb3BzLT5yZXNldF91YndjID0gZHB1X2h3X3Jlc2V0X3Vid2M7CiAJb3BzLT5pbnRmX2F1ZGlv X3NlbGVjdCA9IGRwdV9od19pbnRmX2F1ZGlvX3NlbGVjdDsKIH0KZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od190b3AuaCBiL2RyaXZlcnMvZ3B1L2RybS9t c20vZGlzcC9kcHUxL2RwdV9od190b3AuaAppbmRleCAzNzVjYjdjLi4xNDcwZDBmIDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdfdG9wLmgKKysrIGIvZHJp dmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3X3RvcC5oCkBAIC0xNDMsMTMgKzE0Myw2 IEBAIHN0cnVjdCBkcHVfaHdfbWRwX29wcyB7CiAJCQllbnVtIGRwdV9jbGtfY3RybF90eXBlIGNs a19jdHJsLCBib29sIGVuYWJsZSk7CiAKIAkvKioKLQkgKiBzZXR1cF9kY2UgLSBzZXQgRENFIG11 eCBmb3IgRFNDIGN0cmwgcGF0aAotCSAqIEBtZHA6IG1kcCB0b3AgY29udGV4dCBkcml2ZXIKLQkg KiBAZGNlX3NlbDogZGNlX211eCB2YWx1ZQotCSAqLwotCXZvaWQgKCpzZXR1cF9kY2UpKHN0cnVj dCBkcHVfaHdfbWRwICptZHAsIHUzMiBkY2Vfc2VsKTsKLQotCS8qKgogCSAqIGdldF9kYW5nZXJf c3RhdHVzIC0gZ2V0IGRhbmdlciBzdGF0dXMKIAkgKiBAbWRwOiBtZHAgdG9wIGNvbnRleHQgZHJp dmVyCiAJICogQHN0YXR1czogUG9pbnRlciB0byBkYW5nZXIgc2FmZSBzdGF0dXMKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9ybS5jIGIvZHJpdmVycy9ncHUv ZHJtL21zbS9kaXNwL2RwdTEvZHB1X3JtLmMKaW5kZXggMWQ4MWIxYi4uMTNlZmJlYiAxMDA2NDQK LS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X3JtLmMKKysrIGIvZHJpdmVy cy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X3JtLmMKQEAgLTI0LDcgKzI0LDYgQEAKICNpbmNs dWRlICJkcHVfaHdfd2IuaCIKICNpbmNsdWRlICJkcHVfZW5jb2Rlci5oIgogI2luY2x1ZGUgImRw dV9jb25uZWN0b3IuaCIKLSNpbmNsdWRlICJkcHVfaHdfZHNjLmgiCiAKICNkZWZpbmUgUkVTRVJW RURfQllfT1RIRVIoaCwgcikgXAogCSgoaCktPnJzdnAgJiYgKChoKS0+cnN2cC0+ZW5jX2lkICE9 IChyKS0+ZW5jX2lkKSkKQEAgLTQ5LDEyICs0OCw4IEBAIHN0cnVjdCBkcHVfcm1fdG9wb2xvZ3lf ZGVmIHsKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHB1X3JtX3RvcG9sb2d5X2RlZiBnX3RvcF90YWJs ZVtdID0gewogCXsgICBEUFVfUk1fVE9QT0xPR1lfTk9ORSwgICAgICAgICAgICAgICAgIDAsIDAs IDAsIDAsIGZhbHNlIH0sCiAJeyAgIERQVV9STV9UT1BPTE9HWV9TSU5HTEVQSVBFLCAgICAgICAg ICAgMSwgMCwgMSwgMSwgZmFsc2UgfSwKLQl7ICAgRFBVX1JNX1RPUE9MT0dZX1NJTkdMRVBJUEVf RFNDLCAgICAgICAxLCAxLCAxLCAxLCBmYWxzZSB9LAogCXsgICBEUFVfUk1fVE9QT0xPR1lfRFVB TFBJUEUsICAgICAgICAgICAgIDIsIDAsIDIsIDIsIHRydWUgIH0sCi0JeyAgIERQVV9STV9UT1BP TE9HWV9EVUFMUElQRV9EU0MsICAgICAgICAgMiwgMiwgMiwgMiwgdHJ1ZSAgfSwKIAl7ICAgRFBV X1JNX1RPUE9MT0dZX0RVQUxQSVBFXzNETUVSR0UsICAgICAyLCAwLCAxLCAxLCBmYWxzZSB9LAot CXsgICBEUFVfUk1fVE9QT0xPR1lfRFVBTFBJUEVfM0RNRVJHRV9EU0MsIDIsIDEsIDEsIDEsIGZh bHNlIH0sCi0JeyAgIERQVV9STV9UT1BPTE9HWV9EVUFMUElQRV9EU0NNRVJHRSwgICAgMiwgMiwg MSwgMSwgZmFsc2UgfSwKIAl7ICAgRFBVX1JNX1RPUE9MT0dZX1BQU1BMSVQsICAgICAgICAgICAg ICAxLCAwLCAyLCAxLCB0cnVlICB9LAogfTsKIApAQCAtMjUzLDkgKzI0OCw2IEBAIHN0YXRpYyB2 b2lkIF9kcHVfcm1faHdfZGVzdHJveShlbnVtIGRwdV9od19ibGtfdHlwZSB0eXBlLCB2b2lkICpo dykKIAljYXNlIERQVV9IV19CTEtfV0I6CiAJCWRwdV9od193Yl9kZXN0cm95KGh3KTsKIAkJYnJl YWs7Ci0JY2FzZSBEUFVfSFdfQkxLX0RTQzoKLQkJZHB1X2h3X2RzY19kZXN0cm95KGh3KTsKLQkJ YnJlYWs7CiAJY2FzZSBEUFVfSFdfQkxLX1NTUFA6CiAJCS8qIFNTUFBzIGFyZSBub3QgbWFuYWdl ZCBieSB0aGUgcmVzb3VyY2UgbWFuYWdlciAqLwogCWNhc2UgRFBVX0hXX0JMS19UT1A6CkBAIC0z NDEsOSArMzMzLDYgQEAgc3RhdGljIGludCBfZHB1X3JtX2h3X2Jsa19jcmVhdGUoCiAJY2FzZSBE UFVfSFdfQkxLX1dCOgogCQlodyA9IGRwdV9od193Yl9pbml0KGlkLCBtbWlvLCBjYXQsIGh3X21k cCk7CiAJCWJyZWFrOwotCWNhc2UgRFBVX0hXX0JMS19EU0M6Ci0JCWh3ID0gZHB1X2h3X2RzY19p bml0KGlkLCBtbWlvLCBjYXQpOwotCQlicmVhazsKIAljYXNlIERQVV9IV19CTEtfU1NQUDoKIAkJ LyogU1NQUHMgYXJlIG5vdCBtYW5hZ2VkIGJ5IHRoZSByZXNvdXJjZSBtYW5hZ2VyICovCiAJY2Fz ZSBEUFVfSFdfQkxLX1RPUDoKQEAgLTQ2NSwxNSArNDU0LDYgQEAgaW50IGRwdV9ybV9pbml0KHN0 cnVjdCBkcHVfcm0gKnJtLAogCQl9CiAJfQogCi0JZm9yIChpID0gMDsgaSA8IGNhdC0+ZHNjX2Nv dW50OyBpKyspIHsKLQkJcmMgPSBfZHB1X3JtX2h3X2Jsa19jcmVhdGUocm0sIGNhdCwgbW1pbywg RFBVX0hXX0JMS19EU0MsCi0JCQljYXQtPmRzY1tpXS5pZCwgJmNhdC0+ZHNjW2ldKTsKLQkJaWYg KHJjKSB7Ci0JCQlEUFVfRVJST1IoImZhaWxlZDogZHNjIGh3IG5vdCBhdmFpbGFibGVcbiIpOwot CQkJZ290byBmYWlsOwotCQl9Ci0JfQotCiAJZm9yIChpID0gMDsgaSA8IGNhdC0+aW50Zl9jb3Vu dDsgaSsrKSB7CiAJCWlmIChjYXQtPmludGZbaV0udHlwZSA9PSBJTlRGX05PTkUpIHsKIAkJCURQ VV9ERUJVRygic2tpcCBpbnRmICVkIHdpdGggdHlwZSBub25lXG4iLCBpKTsKQEAgLTgzNCwzNyAr ODE0LDYgQEAgc3RhdGljIGludCBfZHB1X3JtX3Jlc2VydmVfY3RscygKIAlyZXR1cm4gMDsKIH0K IAotc3RhdGljIGludCBfZHB1X3JtX3Jlc2VydmVfZHNjKAotCQlzdHJ1Y3QgZHB1X3JtICpybSwK LQkJc3RydWN0IGRwdV9ybV9yc3ZwICpyc3ZwLAotCQljb25zdCBzdHJ1Y3QgZHB1X3JtX3RvcG9s b2d5X2RlZiAqdG9wKQotewotCXN0cnVjdCBkcHVfcm1faHdfaXRlciBpdGVyOwotCWludCBhbGxv Y19jb3VudCA9IDA7Ci0JaW50IG51bV9kc2NfZW5jID0gdG9wLT5udW1fbG07Ci0KLQlpZiAoIXRv cC0+bnVtX2NvbXBfZW5jKQotCQlyZXR1cm4gMDsKLQotCWRwdV9ybV9pbml0X2h3X2l0ZXIoJml0 ZXIsIDAsIERQVV9IV19CTEtfRFNDKTsKLQotCXdoaWxlIChfZHB1X3JtX2dldF9od19sb2NrZWQo cm0sICZpdGVyKSkgewotCQlpZiAoUkVTRVJWRURfQllfT1RIRVIoaXRlci5ibGssIHJzdnApKQot CQkJY29udGludWU7Ci0KLQkJaXRlci5ibGstPnJzdnBfbnh0ID0gcnN2cDsKLQkJRFBVX0VWVDMy KGl0ZXIuYmxrLT50eXBlLCByc3ZwLT5lbmNfaWQsIGl0ZXIuYmxrLT5pZCk7Ci0KLQkJaWYgKCsr YWxsb2NfY291bnQgPT0gbnVtX2RzY19lbmMpCi0JCQlyZXR1cm4gMDsKLQl9Ci0KLQlEUFVfRVJS T1IoImNvdWxkbid0IHJlc2VydmUgJWQgZHNjIGJsb2NrcyBmb3IgZW5jIGlkICVkXG4iLAotCQlu dW1fZHNjX2VuYywgcnN2cC0+ZW5jX2lkKTsKLQotCXJldHVybiAtRU5BVkFJTDsKLX0KLQogc3Rh dGljIGludCBfZHB1X3JtX3Jlc2VydmVfY2RtKAogCQlzdHJ1Y3QgZHB1X3JtICpybSwKIAkJc3Ry dWN0IGRwdV9ybV9yc3ZwICpyc3ZwLApAQCAtMTAzMiwxMCArOTgxLDYgQEAgc3RhdGljIGludCBf ZHB1X3JtX21ha2VfbmV4dF9yc3ZwKAogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKLQlyZXQg PSBfZHB1X3JtX3Jlc2VydmVfZHNjKHJtLCByc3ZwLCByZXFzLT50b3BvbG9neSk7Ci0JaWYgKHJl dCkKLQkJcmV0dXJuIHJldDsKLQogCXJldHVybiByZXQ7CiB9CiAKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9ybS5oIGIvZHJpdmVycy9ncHUvZHJtL21zbS9k aXNwL2RwdTEvZHB1X3JtLmgKaW5kZXggMjJhNjgxYy4uM2RiNjFiNSAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X3JtLmgKKysrIGIvZHJpdmVycy9ncHUvZHJt L21zbS9kaXNwL2RwdTEvZHB1X3JtLmgKQEAgLTI0LDIzICsyNCwxNSBAQAogICogZW51bSBkcHVf cm1fdG9wb2xvZ3lfbmFtZSAtIEhXIHJlc291cmNlIHVzZSBjYXNlIGluIHVzZSBieSBjb25uZWN0 b3IKICAqIEBEUFVfUk1fVE9QT0xPR1lfTk9ORTogICAgICAgICAgICAgICAgIE5vIHRvcG9sb2d5 IGluIHVzZSBjdXJyZW50bHkKICAqIEBEUFVfUk1fVE9QT0xPR1lfU0lOR0xFUElQRTogICAgICAg ICAgIDEgTE0sIDEgUFAsIDEgSU5URi9XQgotICogQERQVV9STV9UT1BPTE9HWV9TSU5HTEVQSVBF X0RTQzogICAgICAgMSBMTSwgMSBEU0MsIDEgUFAsIDEgSU5URi9XQgogICogQERQVV9STV9UT1BP TE9HWV9EVUFMUElQRTogICAgICAgICAgICAgMiBMTSwgMiBQUCwgMiBJTlRGL1dCCi0gKiBARFBV X1JNX1RPUE9MT0dZX0RVQUxQSVBFX0RTQzogICAgICAgICAyIExNLCAyIERTQywgMiBQUCwgMiBJ TlRGL1dCCiAgKiBARFBVX1JNX1RPUE9MT0dZX0RVQUxQSVBFXzNETUVSR0U6ICAgICAyIExNLCAy IFBQLCAzRE11eCwgMSBJTlRGL1dCCi0gKiBARFBVX1JNX1RPUE9MT0dZX0RVQUxQSVBFXzNETUVS R0VfRFNDOiAyIExNLCAyIFBQLCAzRE11eCwgMSBEU0MsIDEgSU5URi9XQgotICogQERQVV9STV9U T1BPTE9HWV9EVUFMUElQRV9EU0NNRVJHRTogICAgMiBMTSwgMiBQUCwgMiBEU0MgTWVyZ2UsIDEg SU5URi9XQgogICogQERQVV9STV9UT1BPTE9HWV9QUFNQTElUOiAgICAgICAgICAgICAgMSBMTSwg MiBQUHMsIDIgSU5URi9XQgogICovCiBlbnVtIGRwdV9ybV90b3BvbG9neV9uYW1lIHsKIAlEUFVf Uk1fVE9QT0xPR1lfTk9ORSA9IDAsCiAJRFBVX1JNX1RPUE9MT0dZX1NJTkdMRVBJUEUsCi0JRFBV X1JNX1RPUE9MT0dZX1NJTkdMRVBJUEVfRFNDLAogCURQVV9STV9UT1BPTE9HWV9EVUFMUElQRSwK LQlEUFVfUk1fVE9QT0xPR1lfRFVBTFBJUEVfRFNDLAogCURQVV9STV9UT1BPTE9HWV9EVUFMUElQ RV8zRE1FUkdFLAotCURQVV9STV9UT1BPTE9HWV9EVUFMUElQRV8zRE1FUkdFX0RTQywKLQlEUFVf Uk1fVE9QT0xPR1lfRFVBTFBJUEVfRFNDTUVSR0UsCiAJRFBVX1JNX1RPUE9MT0dZX1BQU1BMSVQs CiAJRFBVX1JNX1RPUE9MT0dZX01BWCwKIH07CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v bXNtL2Rpc3AvZHB1MS9kcHVfd2IuYyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2Rw dV93Yi5jCmluZGV4IDBiYjA3ZWUuLmNjNzg3ODYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9tc20vZGlzcC9kcHUxL2RwdV93Yi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9k cHUxL2RwdV93Yi5jCkBAIC0zMDcsOCArMzA3LDYgQEAgaW50IGRwdV93Yl9nZXRfbW9kZV9pbmZv KGNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICpkcm1fbW9kZSwKIAl0b3BvbG9neS0+bnVt X2VuYyA9IG5vX2VuYzsKIAl0b3BvbG9neS0+bnVtX2ludGYgPSBzaW5nbGVfaW50ZjsKIAotCW1v ZGVfaW5mby0+Y29tcF9pbmZvLmNvbXBfdHlwZSA9IE1TTV9ESVNQTEFZX0NPTVBSRVNTSU9OX05P TkU7Ci0KIAlyZXR1cm4gMDsKIH0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9k c2ktc3RhZ2luZy9kc2lfZHJtLmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2RzaS1zdGFnaW5nL2Rz aV9kcm0uYwppbmRleCAwMTdmODgxLi4yZTc0MmEzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vbXNtL2RzaS1zdGFnaW5nL2RzaV9kcm0uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rz aS1zdGFnaW5nL2RzaV9kcm0uYwpAQCAtMzIyLDEzICszMjIsNiBAQCBpbnQgZHNpX2Nvbm5fZ2V0 X21vZGVfaW5mbyhjb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqZHJtX21vZGUsCiAJbWVt Y3B5KCZtb2RlX2luZm8tPnRvcG9sb2d5LCAmZHNpX21vZGUucHJpdl9pbmZvLT50b3BvbG9neSwK IAkJCXNpemVvZihzdHJ1Y3QgbXNtX2Rpc3BsYXlfdG9wb2xvZ3kpKTsKIAotCW1vZGVfaW5mby0+ Y29tcF9pbmZvLmNvbXBfdHlwZSA9IE1TTV9ESVNQTEFZX0NPTVBSRVNTSU9OX05PTkU7Ci0JaWYg KGRzaV9tb2RlLnByaXZfaW5mby0+ZHNjX2VuYWJsZWQpIHsKLQkJbW9kZV9pbmZvLT5jb21wX2lu Zm8uY29tcF90eXBlID0gTVNNX0RJU1BMQVlfQ09NUFJFU1NJT05fRFNDOwotCQltZW1jcHkoJm1v ZGVfaW5mby0+Y29tcF9pbmZvLmRzY19pbmZvLCAmZHNpX21vZGUucHJpdl9pbmZvLT5kc2MsCi0J CQlzaXplb2YoZHNpX21vZGUucHJpdl9pbmZvLT5kc2MpKTsKLQl9Ci0KIAlyZXR1cm4gMDsKIH0K IApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZHJ2LmggYi9kcml2ZXJzL2dw dS9kcm0vbXNtL21zbV9kcnYuaAppbmRleCA5ZTEzYzAxLi5lYWYyYjZhIDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vbXNtL21zbV9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL21z bV9kcnYuaApAQCAtMzE5LDIwICszMTksNiBAQCBzdHJ1Y3QgbXNtX2Rpc3BsYXlfZHNjX2luZm8g ewogfTsKIAogLyoqCi0gKiBzdHJ1Y3QgbXNtX2NvbXByZXNzaW9uX2luZm8gLSBkZWZpbmVkIHBh bmVsIGNvbXByZXNzaW9uCi0gKiBAY29tcF90eXBlOiAgICAgICAgdHlwZSBvZiBjb21wcmVzc2lv biBzdXBwb3J0ZWQKLSAqIEBkc2NfaW5mbzogICAgICAgICBkc2MgY29uZmlndXJhdGlvbiBpZiB0 aGUgY29tcHJlc3Npb24KLSAqICAgICAgICAgICAgICAgICAgICBzdXBwb3J0ZWQgaXMgRFNDCi0g Ki8KLXN0cnVjdCBtc21fY29tcHJlc3Npb25faW5mbyB7Ci0JZW51bSBtc21fZGlzcGxheV9jb21w cmVzc2lvbl90eXBlIGNvbXBfdHlwZTsKLQotCXVuaW9uewotCQlzdHJ1Y3QgbXNtX2Rpc3BsYXlf ZHNjX2luZm8gZHNjX2luZm87Ci0JfTsKLX07Ci0KLS8qKgogICogc3RydWN0IG1zbV9kaXNwbGF5 X3RvcG9sb2d5IC0gZGVmaW5lcyBhIGRpc3BsYXkgdG9wb2xvZ3kgcGlwZWxpbmUKICAqIEBudW1f bG06ICAgICAgIG51bWJlciBvZiBsYXllciBtaXhlcnMgdXNlZAogICogQG51bV9lbmM6ICAgICAg bnVtYmVyIG9mIGNvbXByZXNzaW9uIGVuY29kZXIgYmxvY2tzIHVzZWQKQEAgLTM1Miw3ICszMzgs NiBAQCBzdHJ1Y3QgbXNtX2Rpc3BsYXlfdG9wb2xvZ3kgewogICogQGppdHRlcl9udW1lcjoJZGlz cGxheSBwYW5lbCBqaXR0ZXIgbnVtZXJhdG9yIGNvbmZpZ3VyYXRpb24KICAqIEBqaXR0ZXJfZGVu b206CWRpc3BsYXkgcGFuZWwgaml0dGVyIGRlbm9taW5hdG9yIGNvbmZpZ3VyYXRpb24KICAqIEB0 b3BvbG9neTogICAgICAgIHN1cHBvcnRlZCB0b3BvbG9neSBmb3IgdGhlIG1vZGUKLSAqIEBjb21w X2luZm86ICAgICAgIGNvbXByZXNzaW9uIGluZm8gc3VwcG9ydGVkCiAgKi8KIHN0cnVjdCBtc21f bW9kZV9pbmZvIHsKIAl1aW50MzJfdCBmcmFtZV9yYXRlOwpAQCAtMzYxLDcgKzM0Niw2IEBAIHN0 cnVjdCBtc21fbW9kZV9pbmZvIHsKIAl1aW50MzJfdCBqaXR0ZXJfbnVtZXI7CiAJdWludDMyX3Qg aml0dGVyX2Rlbm9tOwogCXN0cnVjdCBtc21fZGlzcGxheV90b3BvbG9neSB0b3BvbG9neTsKLQlz dHJ1Y3QgbXNtX2NvbXByZXNzaW9uX2luZm8gY29tcF9pbmZvOwogfTsKIAogLyoqCi0tIApUaGUg UXVhbGNvbW0gSW5ub3ZhdGlvbiBDZW50ZXIsIEluYy4gaXMgYSBtZW1iZXIgb2YgdGhlIENvZGUg QXVyb3JhIEZvcnVtLAphIExpbnV4IEZvdW5kYXRpb24gQ29sbGFib3JhdGl2ZSBQcm9qZWN0Cgpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwg bWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0 cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK