From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jeykumar Sankaran Subject: [DPU PATCH v3 1/6] drm/msm: remove display stream compression(DSC) support for SM845 Date: Fri, 25 May 2018 14:26:02 -0700 Message-ID: <1527283567-6546-2-git-send-email-jsanka@codeaurora.org> References: <1527283567-6546-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: <1527283567-6546-1-git-send-email-jsanka-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: freedreno-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Freedreno" To: dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, linux-arm-msm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org Cc: hoegsberg-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org, Jeykumar Sankaran , seanpaul-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org, robdclark-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org, Rajesh Yadav List-Id: linux-arm-msm@vger.kernel.org VXBzdHJlYW0gRFNJIGRyaXZlciBkb2Vzbid0IHN1cHBvcnQgRFNDIHBhbmVscyB5ZXQuIFJlbW92 ZQp0aGUgc3VwcG9ydCBmb3IgY29tcHJlc3Npb24gZnJvbSBEUFUgZm9yIG5vdy4KCmNoYW5nZXMg aW4gdjI6CgktIGluZGVudHMgYW5kIHVucmVsYXRlZCBjaGFuZ2UgY2xlYW4gdXAgKFNlYW4gUGF1 bCkKCS0gZml4IGNvbXBpbGF0aW9uIGRlcGVuZGVuY3kgaW4gZHNpLXN0YWdpbmcKY2hhbmdlcyBp biB2MzoKCS0gbm9uZQoKU2lnbmVkLW9mZi1ieTogSmV5a3VtYXIgU2Fua2FyYW4gPGpzYW5rYUBj b2RlYXVyb3JhLm9yZz4KU2lnbmVkLW9mZi1ieTogU2VhbiBQYXVsIDxzZWFucGF1bEBjaHJvbWl1 bS5vcmc+ClNpZ25lZC1vZmYtYnk6IFJhamVzaCBZYWRhdiA8cnlhZGF2QGNvZGVhdXJvcmEub3Jn PgotLS0KIGRyaXZlcnMvZ3B1L2RybS9tc20vTWFrZWZpbGUgICAgICAgICAgICAgICAgICAgICAg IHwgICAxIC0KIGRyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9jb25uZWN0b3IuYyAg ICAgIHwgICA0IC0KIGRyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9lbmNvZGVyLmMg ICAgICAgIHwgNDc2ICstLS0tLS0tLS0tLS0tLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL21zbS9k aXNwL2RwdTEvZHB1X2VuY29kZXIuaCAgICAgICAgfCAgMTQgLQogZHJpdmVycy9ncHUvZHJtL21z bS9kaXNwL2RwdTEvZHB1X2VuY29kZXJfcGh5cy5oICAgfCAgIDcgKy0KIC4uLi9ncHUvZHJtL21z bS9kaXNwL2RwdTEvZHB1X2VuY29kZXJfcGh5c19jbWQuYyAgIHwgICAxIC0KIC4uLi9ncHUvZHJt L21zbS9kaXNwL2RwdTEvZHB1X2VuY29kZXJfcGh5c192aWQuYyAgIHwgICA3ICstCiBkcml2ZXJz L2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdfY2F0YWxvZy5jICAgICB8ICAyNSAtLQogZHJp dmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3X2NhdGFsb2cuaCAgICAgfCAgMTYgLQog ZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3X2RzYy5jICAgICAgICAgfCAyNTIg LS0tLS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od19kc2MuaCAg ICAgICAgIHwgMTAwIC0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdf bWRzcy5oICAgICAgICB8ICAxNyArLQogZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1 X2h3X3Bpbmdwb25nLmMgICAgfCAgNDggLS0tCiBkcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1 MS9kcHVfaHdfcGluZ3BvbmcuaCAgICB8ICAyMiAtCiBkcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3Av ZHB1MS9kcHVfaHdfdG9wLmMgICAgICAgICB8ICAxMyAtCiBkcml2ZXJzL2dwdS9kcm0vbXNtL2Rp c3AvZHB1MS9kcHVfaHdfdG9wLmggICAgICAgICB8ICAgNyAtCiBkcml2ZXJzL2dwdS9kcm0vbXNt L2Rpc3AvZHB1MS9kcHVfcm0uYyAgICAgICAgICAgICB8ICA1NSAtLS0KIGRyaXZlcnMvZ3B1L2Ry bS9tc20vZGlzcC9kcHUxL2RwdV9ybS5oICAgICAgICAgICAgIHwgICA4IC0KIGRyaXZlcnMvZ3B1 L2RybS9tc20vZGlzcC9kcHUxL2RwdV93Yi5jICAgICAgICAgICAgIHwgICAyIC0KIGRyaXZlcnMv Z3B1L2RybS9tc20vZHNpLXN0YWdpbmcvZHNpX2RybS5jICAgICAgICAgIHwgICA3IC0KIGRyaXZl cnMvZ3B1L2RybS9tc20vbXNtX2Rydi5oICAgICAgICAgICAgICAgICAgICAgIHwgIDE2IC0KIDIx IGZpbGVzIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgMTA5MyBkZWxldGlvbnMoLSkKIGRlbGV0 ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdfZHNjLmMK IGRlbGV0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdf ZHNjLmgKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL01ha2VmaWxlIGIvZHJpdmVy cy9ncHUvZHJtL21zbS9NYWtlZmlsZQppbmRleCBhNDU4YjM2Li5kOTQ3ZjJhIDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vbXNtL01ha2VmaWxlCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20v TWFrZWZpbGUKQEAgLTY0LDcgKzY0LDYgQEAgbXNtLXkgOj0gXAogCWRpc3AvZHB1MS9kcHVfaHdf Y29sb3JfcHJvY2Vzc2luZ192MV83Lm8gXAogCWRpc3AvZHB1MS9kcHVfaHdfY3RsLm8gXAogCWRp c3AvZHB1MS9kcHVfaHdfZHMubyBcCi0JZGlzcC9kcHUxL2RwdV9od19kc2MubyBcCiAJZGlzcC9k cHUxL2RwdV9od19kc3BwLm8gXAogCWRpc3AvZHB1MS9kcHVfaHdfaW50ZXJydXB0cy5vIFwKIAlk aXNwL2RwdTEvZHB1X2h3X2ludGYubyBcCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNt L2Rpc3AvZHB1MS9kcHVfY29ubmVjdG9yLmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1 MS9kcHVfY29ubmVjdG9yLmMKaW5kZXggYTU3NDk1Zi4uNWYzZWZlNSAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2Nvbm5lY3Rvci5jCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9jb25uZWN0b3IuYwpAQCAtMzYsMTIgKzM2LDggQEAK IHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX3Byb3BfZW51bV9saXN0IGVfdG9wb2xvZ3lfbmFtZVtd ID0gewogCXtEUFVfUk1fVE9QT0xPR1lfTk9ORSwJImRwdV9ub25lIn0sCiAJe0RQVV9STV9UT1BP TE9HWV9TSU5HTEVQSVBFLAkiZHB1X3NpbmdsZXBpcGUifSwKLQl7RFBVX1JNX1RPUE9MT0dZX1NJ TkdMRVBJUEVfRFNDLAkiZHB1X3NpbmdsZXBpcGVfZHNjIn0sCiAJe0RQVV9STV9UT1BPTE9HWV9E VUFMUElQRSwJImRwdV9kdWFscGlwZSJ9LAotCXtEUFVfUk1fVE9QT0xPR1lfRFVBTFBJUEVfRFND LAkiZHB1X2R1YWxwaXBlX2RzYyJ9LAogCXtEUFVfUk1fVE9QT0xPR1lfRFVBTFBJUEVfM0RNRVJH RSwJImRwdV9kdWFscGlwZW1lcmdlIn0sCi0Je0RQVV9STV9UT1BPTE9HWV9EVUFMUElQRV8zRE1F UkdFX0RTQywJImRwdV9kdWFscGlwZW1lcmdlX2RzYyJ9LAotCXtEUFVfUk1fVE9QT0xPR1lfRFVB TFBJUEVfRFNDTUVSR0UsCSJkcHVfZHVhbHBpcGVfZHNjbWVyZ2UifSwKIAl7RFBVX1JNX1RPUE9M T0dZX1BQU1BMSVQsCSJkcHVfcHBzcGxpdCJ9LAogfTsKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJt X3Byb3BfZW51bV9saXN0IGVfdG9wb2xvZ3lfY29udHJvbFtdID0gewpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2VuY29kZXIuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9tc20vZGlzcC9kcHUxL2RwdV9lbmNvZGVyLmMKaW5kZXggMTk4YzYxOC4uMTUxODg5YiAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2VuY29kZXIuYworKysg Yi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfZW5jb2Rlci5jCkBAIC0zMiw3ICsz Miw2IEBACiAjaW5jbHVkZSAiZHB1X2Zvcm1hdHMuaCIKICNpbmNsdWRlICJkcHVfZW5jb2Rlcl9w aHlzLmgiCiAjaW5jbHVkZSAiZHB1X3Bvd2VyX2hhbmRsZS5oIgotI2luY2x1ZGUgImRwdV9od19k c2MuaCIKICNpbmNsdWRlICJkcHVfY3J0Yy5oIgogI2luY2x1ZGUgImRwdV90cmFjZS5oIgogI2lu Y2x1ZGUgImRwdV9jb3JlX2lycS5oIgpAQCAtMTUyLDcgKzE1MSw2IEBAIGVudW0gZHB1X2VuY19y Y19zdGF0ZXMgewogICoJCQlPbmx5IHZhbGlkIGFmdGVyIGVuYWJsZS4gQ2xlYXJlZCBhcyBkaXNh YmxlLgogICogQGh3X3BwCQlIYW5kbGUgdG8gdGhlIHBpbmdwb25nIGJsb2NrcyB1c2VkIGZvciB0 aGUgZGlzcGxheS4gTm8uCiAgKgkJCXBpbmdwb25nIGJsb2NrcyBjYW4gYmUgZGlmZmVyZW50IHRo YW4gbnVtX3BoeXNfZW5jcy4KLSAqIEBod19kc2M6CQlBcnJheSBvZiBEU0MgYmxvY2sgaGFuZGxl cyB1c2VkIGZvciB0aGUgZGlzcGxheS4KICAqIEBpbnRmc19zd2FwcGVkCVdoZXRoZXIgb3Igbm90 IHRoZSBwaHlzX2VuYyBpbnRlcmZhY2VzIGhhdmUgYmVlbiBzd2FwcGVkCiAgKgkJCWZvciBwYXJ0 aWFsIHVwZGF0ZSByaWdodC1vbmx5IGNhc2VzLCBzdWNoIGFzIHBpbmdwb25nCiAgKgkJCXNwbGl0 IHdoZXJlIHZpcnR1YWwgcGluZ3BvbmcgZG9lcyBub3QgZ2VuZXJhdGUgSVJRcwpAQCAtMTk5LDcg KzE5Nyw2IEBAIHN0cnVjdCBkcHVfZW5jb2Rlcl92aXJ0IHsKIAlzdHJ1Y3QgZHB1X2VuY29kZXJf cGh5cyAqcGh5c19lbmNzW01BWF9QSFlTX0VOQ09ERVJTX1BFUl9WSVJUVUFMXTsKIAlzdHJ1Y3Qg ZHB1X2VuY29kZXJfcGh5cyAqY3VyX21hc3RlcjsKIAlzdHJ1Y3QgZHB1X2h3X3Bpbmdwb25nICpo d19wcFtNQVhfQ0hBTk5FTFNfUEVSX0VOQ107Ci0Jc3RydWN0IGRwdV9od19kc2MgKmh3X2RzY1tN QVhfQ0hBTk5FTFNfUEVSX0VOQ107CiAKIAlib29sIGludGZzX3N3YXBwZWQ7CiAKQEAgLTIzNCwy MSArMjMxLDYgQEAgc3RydWN0IGRwdV9lbmNvZGVyX3ZpcnQgewogCiAjZGVmaW5lIHRvX2RwdV9l bmNvZGVyX3ZpcnQoeCkgY29udGFpbmVyX29mKHgsIHN0cnVjdCBkcHVfZW5jb2Rlcl92aXJ0LCBi YXNlKQogCi1ib29sIGRwdV9lbmNvZGVyX2lzX2RzY19lbmFibGVkKHN0cnVjdCBkcm1fZW5jb2Rl ciAqZHJtX2VuYykKLQotewotCXN0cnVjdCBkcHVfZW5jb2Rlcl92aXJ0ICpkcHVfZW5jOwotCXN0 cnVjdCBtc21fY29tcHJlc3Npb25faW5mbyAqY29tcF9pbmZvOwotCi0JaWYgKCFkcm1fZW5jKQot CQlyZXR1cm4gZmFsc2U7Ci0KLQlkcHVfZW5jID0gdG9fZHB1X2VuY29kZXJfdmlydChkcm1fZW5j KTsKLQljb21wX2luZm8gPSAmZHB1X2VuYy0+bW9kZV9pbmZvLmNvbXBfaW5mbzsKLQotCXJldHVy biAoY29tcF9pbmZvLT5jb21wX3R5cGUgPT0gTVNNX0RJU1BMQVlfQ09NUFJFU1NJT05fRFNDKTsK LX0KLQogdm9pZCBkcHVfZW5jb2Rlcl9zZXRfaWRsZV90aW1lb3V0KHN0cnVjdCBkcm1fZW5jb2Rl ciAqZHJtX2VuYywgdTMyIGlkbGVfdGltZW91dCkKIHsKIAlzdHJ1Y3QgZHB1X2VuY29kZXJfdmly dCAqZHB1X2VuYzsKQEAgLTI2MCwzMCArMjQyLDYgQEAgdm9pZCBkcHVfZW5jb2Rlcl9zZXRfaWRs ZV90aW1lb3V0KHN0cnVjdCBkcm1fZW5jb2RlciAqZHJtX2VuYywgdTMyIGlkbGVfdGltZW91dCkK IAlkcHVfZW5jLT5pZGxlX3RpbWVvdXQgPSBpZGxlX3RpbWVvdXQ7CiB9CiAKLWJvb2wgZHB1X2Vu Y29kZXJfaXNfZHNjX21lcmdlKHN0cnVjdCBkcm1fZW5jb2RlciAqZHJtX2VuYykKLXsKLQllbnVt IGRwdV9ybV90b3BvbG9neV9uYW1lIHRvcG9sb2d5OwotCXN0cnVjdCBkcHVfZW5jb2Rlcl92aXJ0 ICpkcHVfZW5jOwotCXN0cnVjdCBkcm1fY29ubmVjdG9yICpkcm1fY29ubjsKLQotCWlmICghZHJt X2VuYykKLQkJcmV0dXJuIGZhbHNlOwotCi0JZHB1X2VuYyA9IHRvX2RwdV9lbmNvZGVyX3ZpcnQo ZHJtX2VuYyk7Ci0JaWYgKCFkcHVfZW5jLT5jdXJfbWFzdGVyKQotCQlyZXR1cm4gZmFsc2U7Ci0K LQlkcm1fY29ubiA9IGRwdV9lbmMtPmN1cl9tYXN0ZXItPmNvbm5lY3RvcjsKLQlpZiAoIWRybV9j b25uKQotCQlyZXR1cm4gZmFsc2U7Ci0KLQl0b3BvbG9neSA9IGRwdV9jb25uZWN0b3JfZ2V0X3Rv cG9sb2d5X25hbWUoZHJtX2Nvbm4pOwotCWlmICh0b3BvbG9neSA9PSBEUFVfUk1fVE9QT0xPR1lf RFVBTFBJUEVfRFNDTUVSR0UpCi0JCXJldHVybiB0cnVlOwotCi0JcmV0dXJuIGZhbHNlOwotfQot CiBzdGF0aWMgaW5saW5lIGludCBfZHB1X2VuY29kZXJfcG93ZXJfZW5hYmxlKHN0cnVjdCBkcHVf ZW5jb2Rlcl92aXJ0ICpkcHVfZW5jLAogCQkJCQkJCQlib29sIGVuYWJsZSkKIHsKQEAgLTc0NSwz MTIgKzcwMyw2IEBAIHN0YXRpYyBpbnQgZHB1X2VuY29kZXJfdmlydF9hdG9taWNfY2hlY2soCiAJ cmV0dXJuIHJldDsKIH0KIAotc3RhdGljIGludCBfZHB1X2VuY29kZXJfZHNjX3VwZGF0ZV9waWNf ZGltKHN0cnVjdCBtc21fZGlzcGxheV9kc2NfaW5mbyAqZHNjLAotCQlpbnQgcGljX3dpZHRoLCBp bnQgcGljX2hlaWdodCkKLXsKLQlpZiAoIWRzYyB8fCAhcGljX3dpZHRoIHx8ICFwaWNfaGVpZ2h0 KSB7Ci0JCURQVV9FUlJPUigiaW52YWxpZCBpbnB1dDogcGljX3dpZHRoPSVkIHBpY19oZWlnaHQ9 JWRcbiIsCi0JCQlwaWNfd2lkdGgsIHBpY19oZWlnaHQpOwotCQlyZXR1cm4gLUVJTlZBTDsKLQl9 Ci0KLQlpZiAoKHBpY193aWR0aCAlIGRzYy0+c2xpY2Vfd2lkdGgpIHx8Ci0JICAgIChwaWNfaGVp Z2h0ICUgZHNjLT5zbGljZV9oZWlnaHQpKSB7Ci0JCURQVV9FUlJPUigicGljX2RpbT0lZHglZCBo YXMgdG8gYmUgbXVsdGlwbGUgb2Ygc2xpY2U9JWR4JWRcbiIsCi0JCQlwaWNfd2lkdGgsIHBpY19o ZWlnaHQsCi0JCQlkc2MtPnNsaWNlX3dpZHRoLCBkc2MtPnNsaWNlX2hlaWdodCk7Ci0JCXJldHVy biAtRUlOVkFMOwotCX0KLQotCWRzYy0+cGljX3dpZHRoID0gcGljX3dpZHRoOwotCWRzYy0+cGlj X2hlaWdodCA9IHBpY19oZWlnaHQ7Ci0KLQlyZXR1cm4gMDsKLX0KLQotc3RhdGljIHZvaWQgX2Rw dV9lbmNvZGVyX2RzY19wY2xrX3BhcmFtX2NhbGMoc3RydWN0IG1zbV9kaXNwbGF5X2RzY19pbmZv ICpkc2MsCi0JCWludCBpbnRmX3dpZHRoKQotewotCWludCBzbGljZV9wZXJfcGt0LCBzbGljZV9w ZXJfaW50ZjsKLQlpbnQgYnl0ZXNfaW5fc2xpY2UsIHRvdGFsX2J5dGVzX3Blcl9pbnRmOwotCi0J aWYgKCFkc2MgfHwgIWRzYy0+c2xpY2Vfd2lkdGggfHwgIWRzYy0+c2xpY2VfcGVyX3BrdCB8fAot CSAgICAoaW50Zl93aWR0aCA8IGRzYy0+c2xpY2Vfd2lkdGgpKSB7Ci0JCURQVV9FUlJPUigiaW52 YWxpZCBpbnB1dDogaW50Zl93aWR0aD0lZCBzbGljZV93aWR0aD0lZFxuIiwKLQkJCWludGZfd2lk dGgsIGRzYyA/IGRzYy0+c2xpY2Vfd2lkdGggOiAtMSk7Ci0JCXJldHVybjsKLQl9Ci0KLQlzbGlj ZV9wZXJfcGt0ID0gZHNjLT5zbGljZV9wZXJfcGt0OwotCXNsaWNlX3Blcl9pbnRmID0gRElWX1JP VU5EX1VQKGludGZfd2lkdGgsIGRzYy0+c2xpY2Vfd2lkdGgpOwotCi0JLyoKLQkgKiBJZiBzbGlj ZV9wZXJfcGt0IGlzIGdyZWF0ZXIgdGhhbiBzbGljZV9wZXJfaW50ZiB0aGVuIGRlZmF1bHQgdG8g MS4KLQkgKiBUaGlzIGNhbiBoYXBwZW4gZHVyaW5nIHBhcnRpYWwgdXBkYXRlLgotCSAqLwotCWlm IChzbGljZV9wZXJfcGt0ID4gc2xpY2VfcGVyX2ludGYpCi0JCXNsaWNlX3Blcl9wa3QgPSAxOwot Ci0JYnl0ZXNfaW5fc2xpY2UgPSBESVZfUk9VTkRfVVAoZHNjLT5zbGljZV93aWR0aCAqIGRzYy0+ YnBwLCA4KTsKLQl0b3RhbF9ieXRlc19wZXJfaW50ZiA9IGJ5dGVzX2luX3NsaWNlICogc2xpY2Vf cGVyX2ludGY7Ci0KLQlkc2MtPmVvbF9ieXRlX251bSA9IHRvdGFsX2J5dGVzX3Blcl9pbnRmICUg MzsKLQlkc2MtPnBjbGtfcGVyX2xpbmUgPSAgRElWX1JPVU5EX1VQKHRvdGFsX2J5dGVzX3Blcl9p bnRmLCAzKTsKLQlkc2MtPmJ5dGVzX2luX3NsaWNlID0gYnl0ZXNfaW5fc2xpY2U7Ci0JZHNjLT5i eXRlc19wZXJfcGt0ID0gYnl0ZXNfaW5fc2xpY2UgKiBzbGljZV9wZXJfcGt0OwotCWRzYy0+cGt0 X3Blcl9saW5lID0gc2xpY2VfcGVyX2ludGYgLyBzbGljZV9wZXJfcGt0OwotfQotCi1zdGF0aWMg aW50IF9kcHVfZW5jb2Rlcl9kc2NfaW5pdGlhbF9saW5lX2NhbGMoc3RydWN0IG1zbV9kaXNwbGF5 X2RzY19pbmZvICpkc2MsCi0JCWludCBlbmNfaXBfd2lkdGgpCi17Ci0JaW50IHNzbV9kZWxheSwg dG90YWxfcGl4ZWxzLCBzb2Z0X3NsaWNlX3Blcl9lbmM7Ci0KLQlzb2Z0X3NsaWNlX3Blcl9lbmMg PSBlbmNfaXBfd2lkdGggLyBkc2MtPnNsaWNlX3dpZHRoOwotCi0JLyoKLQkgKiBtaW5pbXVtIG51 bWJlciBvZiBpbml0aWFsIGxpbmUgcGl4ZWxzIGlzIGEgc3VtIG9mOgotCSAqIDEuIHN1Yi1zdHJl YW0gbXVsdGlwbGV4ZXIgZGVsYXkgKDgzIGdyb3VwcyBmb3IgOGJwYywKLQkgKiAgICA5MSBmb3Ig MTAgYnBjKSAqIDMKLQkgKiAyLiBmb3IgdHdvIHNvZnQgc2xpY2UgY2FzZXMsIGFkZCBleHRyYSBz dWItc3RyZWFtIG11bHRpcGxleGVyICogMwotCSAqIDMuIHRoZSBpbml0aWFsIHhtaXQgZGVsYXkK LQkgKiA0LiB0b3RhbCBwaXBlbGluZSBkZWxheSB0aHJvdWdoIHRoZSAibG9jayBzdGVwIiBvZiBl bmNvZGVyICg0NykKLQkgKiA1LiA2IGFkZGl0aW9uYWwgcGl4ZWxzIGFzIHRoZSBvdXRwdXQgb2Yg dGhlIHJhdGUgYnVmZmVyIGlzCi0JICogICAgNDggYml0cyB3aWRlCi0JICovCi0Jc3NtX2RlbGF5 ID0gKChkc2MtPmJwYyA8IDEwKSA/IDg0IDogOTIpOwotCXRvdGFsX3BpeGVscyA9IHNzbV9kZWxh eSAqIDMgKyBkc2MtPmluaXRpYWxfeG1pdF9kZWxheSArIDQ3OwotCWlmIChzb2Z0X3NsaWNlX3Bl cl9lbmMgPiAxKQotCQl0b3RhbF9waXhlbHMgKz0gKHNzbV9kZWxheSAqIDMpOwotCWRzYy0+aW5p dGlhbF9saW5lcyA9IERJVl9ST1VORF9VUCh0b3RhbF9waXhlbHMsIGRzYy0+c2xpY2Vfd2lkdGgp OwotCXJldHVybiAwOwotfQotCi1zdGF0aWMgYm9vbCBfZHB1X2VuY29kZXJfZHNjX2ljaF9yZXNl dF9vdmVycmlkZV9uZWVkZWQoYm9vbCBwdV9lbiwKLQkJc3RydWN0IG1zbV9kaXNwbGF5X2RzY19p bmZvICpkc2MpCi17Ci0JLyoKLQkgKiBBcyBwZXIgdGhlIERTQyBzcGVjLCBJQ0hfUkVTRVQgY2Fu IGJlIGVpdGhlciBlbmQgb2YgdGhlIHNsaWNlIGxpbmUKLQkgKiBvciBhdCB0aGUgZW5kIG9mIHRo ZSBzbGljZS4gSFcgaW50ZXJuYWxseSBnZW5lcmF0ZXMgaWNoX3Jlc2V0IGF0Ci0JICogZW5kIG9m IHRoZSBzbGljZSBsaW5lIGlmIERTQ19NRVJHRSBpcyB1c2VkIG9yIGVuY29kZXIgaGFzIHR3bwot CSAqIHNvZnQgc2xpY2VzLiBIb3dldmVyLCBpZiBlbmNvZGVyIGhhcyBvbmx5IDEgc29mdCBzbGlj ZSBhbmQgRFNDX01FUkdFCi0JICogaXMgbm90IHVzZWQgdGhlbiBpdCB3aWxsIGdlbmVyYXRlIGlj aF9yZXNldCBhdCB0aGUgZW5kIG9mIHNsaWNlLgotCSAqCi0JICogTm93IGFzIHBlciB0aGUgc3Bl YywgZHVyaW5nIG9uZSBQUFMgc2Vzc2lvbiwgcG9zaXRpb24gd2hlcmUKLQkgKiBpY2hfcmVzZXQg aXMgZ2VuZXJhdGVkIHNob3VsZCBub3QgY2hhbmdlLiBOb3cgaWYgZnVsbC1zY3JlZW4gZnJhbWUK LQkgKiBoYXMgbW9yZSB0aGFuIDEgc29mdCBzbGljZSB0aGVuIEhXIHdpbGwgYXV0b21hdGljYWxs eSBnZW5lcmF0ZQotCSAqIGljaF9yZXNldCBhdCB0aGUgZW5kIG9mIHNsaWNlX2xpbmUuIEJ1dCBm b3IgdGhlIHNhbWUgcGFuZWwsIGlmCi0JICogcGFydGlhbCBmcmFtZSBpcyBlbmFibGVkIGFuZCBv bmx5IDEgZW5jb2RlciBpcyB1c2VkIHdpdGggMSBzbGljZSwKLQkgKiB0aGVuIEhXIHdpbGwgZ2Vu ZXJhdGUgaWNoX3Jlc2V0IGF0IGVuZCBvZiB0aGUgc2xpY2UuIFRoaXMgaXMgYQotCSAqIG1pc21h dGNoLiBQcmV2ZW50IHRoaXMgYnkgb3ZlcnJpZGluZyBIVydzIGRlY2lzaW9uLgotCSAqLwotCXJl dHVybiBwdV9lbiAmJiBkc2MgJiYgKGRzYy0+ZnVsbF9mcmFtZV9zbGljZXMgPiAxKSAmJgotCQko ZHNjLT5zbGljZV93aWR0aCA9PSBkc2MtPnBpY193aWR0aCk7Ci19Ci0KLXN0YXRpYyB2b2lkIF9k cHVfZW5jb2Rlcl9kc2NfcGlwZV9jZmcoc3RydWN0IGRwdV9od19kc2MgKmh3X2RzYywKLQkJc3Ry dWN0IGRwdV9od19waW5ncG9uZyAqaHdfcHAsIHN0cnVjdCBtc21fZGlzcGxheV9kc2NfaW5mbyAq ZHNjLAotCQl1MzIgY29tbW9uX21vZGUsIGJvb2wgaWNoX3Jlc2V0KQotewotCWlmIChod19kc2Mt Pm9wcy5kc2NfY29uZmlnKQotCQlod19kc2MtPm9wcy5kc2NfY29uZmlnKGh3X2RzYywgZHNjLCBj b21tb25fbW9kZSwgaWNoX3Jlc2V0KTsKLQotCWlmIChod19kc2MtPm9wcy5kc2NfY29uZmlnX3Ro cmVzaCkKLQkJaHdfZHNjLT5vcHMuZHNjX2NvbmZpZ190aHJlc2goaHdfZHNjLCBkc2MpOwotCi0J aWYgKGh3X3BwLT5vcHMuc2V0dXBfZHNjKQotCQlod19wcC0+b3BzLnNldHVwX2RzYyhod19wcCk7 Ci0KLQlpZiAoaHdfcHAtPm9wcy5lbmFibGVfZHNjKQotCQlod19wcC0+b3BzLmVuYWJsZV9kc2Mo aHdfcHApOwotfQotCi1zdGF0aWMgaW50IF9kcHVfZW5jb2Rlcl9kc2Nfbl9sbV8xX2VuY18xX2lu dGYoc3RydWN0IGRwdV9lbmNvZGVyX3ZpcnQgKmRwdV9lbmMpCi17Ci0JaW50IHRoaXNfZnJhbWVf c2xpY2VzOwotCWludCBpbnRmX2lwX3csIGVuY19pcF93OwotCWludCBpY2hfcmVzLCBkc2NfY29t bW9uX21vZGUgPSAwOwotCWludCByYyA9IDA7Ci0KLQlzdHJ1Y3QgZHB1X2h3X3Bpbmdwb25nICpo d19wcCA9IGRwdV9lbmMtPmh3X3BwWzBdOwotCXN0cnVjdCBkcHVfaHdfZHNjICpod19kc2MgPSBk cHVfZW5jLT5od19kc2NbMF07Ci0Jc3RydWN0IGRwdV9lbmNvZGVyX3BoeXMgKmVuY19tYXN0ZXIg PSBkcHVfZW5jLT5jdXJfbWFzdGVyOwotCXN0cnVjdCBtc21fZGlzcGxheV9kc2NfaW5mbyAqZHNj ID0KLQkJJmRwdV9lbmMtPm1vZGVfaW5mby5jb21wX2luZm8uZHNjX2luZm87Ci0KLQlyYyA9IF9k cHVfZW5jb2Rlcl9kc2NfdXBkYXRlX3BpY19kaW0oZHNjLCBkc2MtPnBpY193aWR0aCwKLQkJCWRz Yy0+cGljX2hlaWdodCk7Ci0JaWYgKHJjKSB7Ci0JCURQVV9FUlJPUl9FTkMoZHB1X2VuYywgImZh aWxlZCB0byB1cGRhdGUgRFNDIHBpYyBkaW1cbiIpOwotCQlyZXR1cm4gcmM7Ci0JfQotCi0JdGhp c19mcmFtZV9zbGljZXMgPSBkc2MtPnBpY193aWR0aCAvIGRzYy0+c2xpY2Vfd2lkdGg7Ci0JaW50 Zl9pcF93ID0gdGhpc19mcmFtZV9zbGljZXMgKiBkc2MtPnNsaWNlX3dpZHRoOwotCV9kcHVfZW5j b2Rlcl9kc2NfcGNsa19wYXJhbV9jYWxjKGRzYywgaW50Zl9pcF93KTsKLQotCWVuY19pcF93ID0g aW50Zl9pcF93OwotCV9kcHVfZW5jb2Rlcl9kc2NfaW5pdGlhbF9saW5lX2NhbGMoZHNjLCBlbmNf aXBfdyk7Ci0KLQlpY2hfcmVzID0gX2RwdV9lbmNvZGVyX2RzY19pY2hfcmVzZXRfb3ZlcnJpZGVf bmVlZGVkKGZhbHNlLCBkc2MpOwotCi0JaWYgKGVuY19tYXN0ZXItPmludGZfbW9kZSA9PSBJTlRG X01PREVfVklERU8pCi0JCWRzY19jb21tb25fbW9kZSA9IERTQ19NT0RFX1ZJREVPOwotCi0JRFBV X0RFQlVHX0VOQyhkcHVfZW5jLCAicGljX3c6ICVkIHBpY19oOiAlZCBtb2RlOiVkXG4iLAotCQlk c2MtPnBpY193aWR0aCwgZHNjLT5waWNfaGVpZ2h0LCBkc2NfY29tbW9uX21vZGUpOwotCURQVV9F VlQzMihEUk1JRCgmZHB1X2VuYy0+YmFzZSksIGRzYy0+cGljX3dpZHRoLCBkc2MtPnBpY19oZWln aHQsCi0JCQlkc2NfY29tbW9uX21vZGUpOwotCi0JX2RwdV9lbmNvZGVyX2RzY19waXBlX2NmZyho d19kc2MsIGh3X3BwLCBkc2MsIGRzY19jb21tb25fbW9kZSwKLQkJCWljaF9yZXMpOwotCi0JcmV0 dXJuIDA7Ci19Ci1zdGF0aWMgaW50IF9kcHVfZW5jb2Rlcl9kc2NfMl9sbV8yX2VuY18yX2ludGYo c3RydWN0IGRwdV9lbmNvZGVyX3ZpcnQgKmRwdV9lbmMpCi17Ci0JaW50IHRoaXNfZnJhbWVfc2xp Y2VzOwotCWludCBpbnRmX2lwX3csIGVuY19pcF93OwotCWludCBpY2hfcmVzLCBkc2NfY29tbW9u X21vZGU7Ci0JaW50IHJjID0gMDsKLQotCXN0cnVjdCBkcHVfZW5jb2Rlcl9waHlzICplbmNfbWFz dGVyID0gZHB1X2VuYy0+Y3VyX21hc3RlcjsKLQlzdHJ1Y3QgZHB1X2h3X2RzYyAqbF9od19kc2Mg PSBkcHVfZW5jLT5od19kc2NbMF07Ci0Jc3RydWN0IGRwdV9od19kc2MgKnJfaHdfZHNjID0gZHB1 X2VuYy0+aHdfZHNjWzFdOwotCXN0cnVjdCBkcHVfaHdfcGluZ3BvbmcgKmxfaHdfcHAgPSBkcHVf ZW5jLT5od19wcFswXTsKLQlzdHJ1Y3QgZHB1X2h3X3Bpbmdwb25nICpyX2h3X3BwID0gZHB1X2Vu Yy0+aHdfcHBbMV07Ci0Jc3RydWN0IG1zbV9kaXNwbGF5X2RzY19pbmZvICpkc2MgPQotCQkmZHB1 X2VuYy0+bW9kZV9pbmZvLmNvbXBfaW5mby5kc2NfaW5mbzsKLQotCXJjID0gX2RwdV9lbmNvZGVy X2RzY191cGRhdGVfcGljX2RpbShkc2MsCi0JCQlkc2MtPnBpY193aWR0aCAqIGRwdV9lbmMtPmRp c3BsYXlfbnVtX29mX2hfdGlsZXMsCi0JCQlkc2MtPnBpY19oZWlnaHQpOwotCWlmIChyYykgewot CQlEUFVfRVJST1JfRU5DKGRwdV9lbmMsICJmYWlsZWQgdG8gdXBkYXRlIERTQyBwaWMgZGltXG4i KTsKLQkJcmV0dXJuIHJjOwotCX0KLQotCi0JdGhpc19mcmFtZV9zbGljZXMgPSBkc2MtPnBpY193 aWR0aCAvIGRzYy0+c2xpY2Vfd2lkdGg7Ci0JaW50Zl9pcF93ID0gdGhpc19mcmFtZV9zbGljZXMg KiBkc2MtPnNsaWNlX3dpZHRoOwotCi0JaW50Zl9pcF93IC89IDI7Ci0JX2RwdV9lbmNvZGVyX2Rz Y19wY2xrX3BhcmFtX2NhbGMoZHNjLCBpbnRmX2lwX3cpOwotCi0JZW5jX2lwX3cgPSBpbnRmX2lw X3c7Ci0JX2RwdV9lbmNvZGVyX2RzY19pbml0aWFsX2xpbmVfY2FsYyhkc2MsIGVuY19pcF93KTsK LQotCWljaF9yZXMgPSBfZHB1X2VuY29kZXJfZHNjX2ljaF9yZXNldF9vdmVycmlkZV9uZWVkZWQo ZmFsc2UsIGRzYyk7Ci0KLQlkc2NfY29tbW9uX21vZGUgPSBEU0NfTU9ERV9TUExJVF9QQU5FTDsK LQlpZiAoZW5jX21hc3Rlci0+aW50Zl9tb2RlID09IElOVEZfTU9ERV9WSURFTykKLQkJZHNjX2Nv bW1vbl9tb2RlIHw9IERTQ19NT0RFX1ZJREVPOwotCi0JRFBVX0RFQlVHX0VOQyhkcHVfZW5jLCAi cGljX3c6ICVkIHBpY19oOiAlZCBtb2RlOiVkXG4iLAotCQlkc2MtPnBpY193aWR0aCwgZHNjLT5w aWNfaGVpZ2h0LCBkc2NfY29tbW9uX21vZGUpOwotCURQVV9FVlQzMihEUk1JRCgmZHB1X2VuYy0+ YmFzZSksIGRzYy0+cGljX3dpZHRoLCBkc2MtPnBpY19oZWlnaHQsCi0JCQlkc2NfY29tbW9uX21v ZGUpOwotCi0JX2RwdV9lbmNvZGVyX2RzY19waXBlX2NmZyhsX2h3X2RzYywgbF9od19wcCwgZHNj LCBkc2NfY29tbW9uX21vZGUsCi0JCQlpY2hfcmVzKTsKLQlfZHB1X2VuY29kZXJfZHNjX3BpcGVf Y2ZnKHJfaHdfZHNjLCByX2h3X3BwLCBkc2MsIGRzY19jb21tb25fbW9kZSwKLQkJCWljaF9yZXMp OwotCi0JcmV0dXJuIDA7Ci19Ci0KLXN0YXRpYyBpbnQgX2RwdV9lbmNvZGVyX2RzY18yX2xtXzJf ZW5jXzFfaW50ZihzdHJ1Y3QgZHB1X2VuY29kZXJfdmlydCAqZHB1X2VuYykKLXsKLQlpbnQgdGhp c19mcmFtZV9zbGljZXM7Ci0JaW50IGludGZfaXBfdywgZW5jX2lwX3c7Ci0JaW50IGljaF9yZXMs IGRzY19jb21tb25fbW9kZTsKLQlpbnQgcmMgPSAwOwotCi0Jc3RydWN0IGRwdV9lbmNvZGVyX3Bo eXMgKmVuY19tYXN0ZXIgPSBkcHVfZW5jLT5jdXJfbWFzdGVyOwotCXN0cnVjdCBkcHVfaHdfZHNj ICpsX2h3X2RzYyA9IGRwdV9lbmMtPmh3X2RzY1swXTsKLQlzdHJ1Y3QgZHB1X2h3X2RzYyAqcl9o d19kc2MgPSBkcHVfZW5jLT5od19kc2NbMV07Ci0Jc3RydWN0IGRwdV9od19waW5ncG9uZyAqbF9o d19wcCA9IGRwdV9lbmMtPmh3X3BwWzBdOwotCXN0cnVjdCBkcHVfaHdfcGluZ3BvbmcgKnJfaHdf cHAgPSBkcHVfZW5jLT5od19wcFsxXTsKLQlzdHJ1Y3QgbXNtX2Rpc3BsYXlfZHNjX2luZm8gKmRz YyA9Ci0JCSZkcHVfZW5jLT5tb2RlX2luZm8uY29tcF9pbmZvLmRzY19pbmZvOwotCi0JcmMgPSBf ZHB1X2VuY29kZXJfZHNjX3VwZGF0ZV9waWNfZGltKGRzYywgZHNjLT5waWNfd2lkdGgsCi0JCQlk c2MtPnBpY19oZWlnaHQpOwotCWlmIChyYykgewotCQlEUFVfRVJST1JfRU5DKGRwdV9lbmMsICJm YWlsZWQgdG8gdXBkYXRlIERTQyBwaWMgZGltXG4iKTsKLQkJcmV0dXJuIHJjOwotCX0KLQotCXRo aXNfZnJhbWVfc2xpY2VzID0gZHNjLT5waWNfd2lkdGggLyBkc2MtPnNsaWNlX3dpZHRoOwotCWlu dGZfaXBfdyA9IHRoaXNfZnJhbWVfc2xpY2VzICogZHNjLT5zbGljZV93aWR0aDsKLQlfZHB1X2Vu Y29kZXJfZHNjX3BjbGtfcGFyYW1fY2FsYyhkc2MsIGludGZfaXBfdyk7Ci0KLQkvKgotCSAqIHdo ZW4gdXNpbmcgMiBlbmNvZGVycyBmb3IgdGhlIHNhbWUgc3RyZWFtLCBuby4gb2Ygc2xpY2VzCi0J ICogbmVlZCB0byBiZSBzYW1lIG9uIGJvdGggdGhlIGVuY29kZXJzLgotCSAqLwotCWVuY19pcF93 ID0gaW50Zl9pcF93IC8gMjsKLQlfZHB1X2VuY29kZXJfZHNjX2luaXRpYWxfbGluZV9jYWxjKGRz YywgZW5jX2lwX3cpOwotCi0JaWNoX3JlcyA9IF9kcHVfZW5jb2Rlcl9kc2NfaWNoX3Jlc2V0X292 ZXJyaWRlX25lZWRlZChmYWxzZSwgZHNjKTsKLQotCWRzY19jb21tb25fbW9kZSA9IERTQ19NT0RF X01VTFRJUExFWCB8IERTQ19NT0RFX1NQTElUX1BBTkVMOwotCWlmIChlbmNfbWFzdGVyLT5pbnRm X21vZGUgPT0gSU5URl9NT0RFX1ZJREVPKQotCQlkc2NfY29tbW9uX21vZGUgfD0gRFNDX01PREVf VklERU87Ci0KLQlEUFVfREVCVUdfRU5DKGRwdV9lbmMsICJwaWNfdzogJWQgcGljX2g6ICVkIG1v ZGU6JWRcbiIsCi0JCWRzYy0+cGljX3dpZHRoLCBkc2MtPnBpY19oZWlnaHQsIGRzY19jb21tb25f bW9kZSk7Ci0JRFBVX0VWVDMyKERSTUlEKCZkcHVfZW5jLT5iYXNlKSwgZHNjLT5waWNfd2lkdGgs IGRzYy0+cGljX2hlaWdodCwKLQkJCWRzY19jb21tb25fbW9kZSk7Ci0KLQlfZHB1X2VuY29kZXJf ZHNjX3BpcGVfY2ZnKGxfaHdfZHNjLCBsX2h3X3BwLCBkc2MsIGRzY19jb21tb25fbW9kZSwKLQkJ CWljaF9yZXMpOwotCV9kcHVfZW5jb2Rlcl9kc2NfcGlwZV9jZmcocl9od19kc2MsIHJfaHdfcHAs IGRzYywgZHNjX2NvbW1vbl9tb2RlLAotCQkJaWNoX3Jlcyk7Ci0KLQlyZXR1cm4gMDsKLX0KLQot c3RhdGljIGludCBfZHB1X2VuY29kZXJfZHNjX3NldHVwKHN0cnVjdCBkcHVfZW5jb2Rlcl92aXJ0 ICpkcHVfZW5jKQotewotCWVudW0gZHB1X3JtX3RvcG9sb2d5X25hbWUgdG9wb2xvZ3k7Ci0Jc3Ry dWN0IGRybV9jb25uZWN0b3IgKmRybV9jb25uOwotCWludCByZXQgPSAwOwotCi0JaWYgKCFkcHVf ZW5jKQotCQlyZXR1cm4gLUVJTlZBTDsKLQotCWRybV9jb25uID0gZHB1X2VuYy0+cGh5c19lbmNz WzBdLT5jb25uZWN0b3I7Ci0KLQl0b3BvbG9neSA9IGRwdV9jb25uZWN0b3JfZ2V0X3RvcG9sb2d5 X25hbWUoZHJtX2Nvbm4pOwotCWlmICh0b3BvbG9neSA9PSBEUFVfUk1fVE9QT0xPR1lfTk9ORSkg ewotCQlEUFVfRVJST1JfRU5DKGRwdV9lbmMsICJ0b3BvbG9neSBub3Qgc2V0IHlldFxuIik7Ci0J CXJldHVybiAtRUlOVkFMOwotCX0KLQotCURQVV9ERUJVR19FTkMoZHB1X2VuYywgInRvcG9sb2d5 OiVkXG4iLCB0b3BvbG9neSk7Ci0JRFBVX0VWVDMyKERSTUlEKCZkcHVfZW5jLT5iYXNlKSk7Ci0K LQlzd2l0Y2ggKHRvcG9sb2d5KSB7Ci0JY2FzZSBEUFVfUk1fVE9QT0xPR1lfU0lOR0xFUElQRV9E U0M6Ci0JY2FzZSBEUFVfUk1fVE9QT0xPR1lfRFVBTFBJUEVfM0RNRVJHRV9EU0M6Ci0JCXJldCA9 IF9kcHVfZW5jb2Rlcl9kc2Nfbl9sbV8xX2VuY18xX2ludGYoZHB1X2VuYyk7Ci0JCWJyZWFrOwot CWNhc2UgRFBVX1JNX1RPUE9MT0dZX0RVQUxQSVBFX0RTQ01FUkdFOgotCQlyZXQgPSBfZHB1X2Vu Y29kZXJfZHNjXzJfbG1fMl9lbmNfMV9pbnRmKGRwdV9lbmMpOwotCQlicmVhazsKLQljYXNlIERQ VV9STV9UT1BPTE9HWV9EVUFMUElQRV9EU0M6Ci0JCXJldCA9IF9kcHVfZW5jb2Rlcl9kc2NfMl9s bV8yX2VuY18yX2ludGYoZHB1X2VuYyk7Ci0JCWJyZWFrOwotCWRlZmF1bHQ6Ci0JCURQVV9FUlJP Ul9FTkMoZHB1X2VuYywgIk5vIERTQyBzdXBwb3J0IGZvciB0b3BvbG9neSAlZCIsCi0JCQkJdG9w b2xvZ3kpOwotCQlyZXR1cm4gLUVJTlZBTDsKLQl9OwotCi0JcmV0dXJuIHJldDsKLX0KLQogc3Rh dGljIHZvaWQgX2RwdV9lbmNvZGVyX3VwZGF0ZV92c3luY19zb3VyY2Uoc3RydWN0IGRwdV9lbmNv ZGVyX3ZpcnQgKmRwdV9lbmMsCiAJCQlzdHJ1Y3QgbXNtX2Rpc3BsYXlfaW5mbyAqZGlzcF9pbmZv KQogewpAQCAtMTExMSwxMDIgKzc2Myw2IEBAIHN0YXRpYyB2b2lkIF9kcHVfZW5jb2Rlcl91cGRh dGVfdnN5bmNfc291cmNlKHN0cnVjdCBkcHVfZW5jb2Rlcl92aXJ0ICpkcHVfZW5jLAogCX0KIH0K IAotc3RhdGljIGludCBfZHB1X2VuY29kZXJfZHNjX2Rpc2FibGUoc3RydWN0IGRwdV9lbmNvZGVy X3ZpcnQgKmRwdV9lbmMpCi17Ci0JZW51bSBkcHVfcm1fdG9wb2xvZ3lfbmFtZSB0b3BvbG9neTsK LQlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqZHJtX2Nvbm47Ci0JaW50IGksIHJldCA9IDA7Ci0Jc3Ry dWN0IGRwdV9od19waW5ncG9uZyAqaHdfcHBbTUFYX0NIQU5ORUxTX1BFUl9FTkNdOwotCXN0cnVj dCBkcHVfaHdfZHNjICpod19kc2NbTUFYX0NIQU5ORUxTX1BFUl9FTkNdID0ge05VTEx9OwotCWlu dCBwcF9jb3VudCA9IDA7Ci0JaW50IGRzY19jb3VudCA9IDA7Ci0KLQlpZiAoIWRwdV9lbmMgfHwg IWRwdV9lbmMtPnBoeXNfZW5jc1swXSB8fAotCQkJIWRwdV9lbmMtPnBoeXNfZW5jc1swXS0+Y29u bmVjdG9yKSB7Ci0JCURQVV9FUlJPUigiaW52YWxpZCBwYXJhbXMgJWQgJWRcbiIsCi0JCQkhZHB1 X2VuYywgZHB1X2VuYyA/ICFkcHVfZW5jLT5waHlzX2VuY3NbMF0gOiAtMSk7Ci0JCXJldHVybiAt RUlOVkFMOwotCX0KLQotCWRybV9jb25uID0gZHB1X2VuYy0+cGh5c19lbmNzWzBdLT5jb25uZWN0 b3I7Ci0KLQl0b3BvbG9neSA9IGRwdV9jb25uZWN0b3JfZ2V0X3RvcG9sb2d5X25hbWUoZHJtX2Nv bm4pOwotCWlmICh0b3BvbG9neSA9PSBEUFVfUk1fVE9QT0xPR1lfTk9ORSkgewotCQlEUFVfRVJS T1JfRU5DKGRwdV9lbmMsICJ0b3BvbG9neSBub3Qgc2V0IHlldFxuIik7Ci0JCXJldHVybiAtRUlO VkFMOwotCX0KLQotCXN3aXRjaCAodG9wb2xvZ3kpIHsKLQljYXNlIERQVV9STV9UT1BPTE9HWV9T SU5HTEVQSVBFOgotCWNhc2UgRFBVX1JNX1RPUE9MT0dZX1NJTkdMRVBJUEVfRFNDOgotCQkvKiBz aW5nbGUgUFAgKi8KLQkJaHdfcHBbMF0gPSBkcHVfZW5jLT5od19wcFswXTsKLQkJaHdfZHNjWzBd ID0gZHB1X2VuYy0+aHdfZHNjWzBdOwotCQlwcF9jb3VudCA9IDE7Ci0JCWRzY19jb3VudCA9IDE7 Ci0JCWJyZWFrOwotCWNhc2UgRFBVX1JNX1RPUE9MT0dZX0RVQUxQSVBFX0RTQzoKLQljYXNlIERQ VV9STV9UT1BPTE9HWV9EVUFMUElQRV8zRE1FUkdFX0RTQzoKLQljYXNlIERQVV9STV9UT1BPTE9H WV9EVUFMUElQRV9EU0NNRVJHRToKLQkJLyogZHVhbCBkc2MgKi8KLQkJZm9yIChpID0gMDsgaSA8 IE1BWF9DSEFOTkVMU19QRVJfRU5DOyBpKyspIHsKLQkJCWh3X2RzY1tpXSA9IGRwdV9lbmMtPmh3 X2RzY1tpXTsKLQkJCWlmIChod19kc2NbaV0pCi0JCQkJZHNjX2NvdW50Kys7Ci0JCX0KLQkJLyog ZmFsbCB0aHJvdWdoICovCi0JY2FzZSBEUFVfUk1fVE9QT0xPR1lfRFVBTFBJUEU6Ci0JY2FzZSBE UFVfUk1fVE9QT0xPR1lfRFVBTFBJUEVfM0RNRVJHRToKLQkJLyogZHVhbCBwcCAqLwotCQlmb3Ig KGkgPSAwOyBpIDwgTUFYX0NIQU5ORUxTX1BFUl9FTkM7IGkrKykgewotCQkJaHdfcHBbaV0gPSBk cHVfZW5jLT5od19wcFtpXTsKLQkJCWlmIChod19wcFtpXSkKLQkJCQlwcF9jb3VudCsrOwotCQl9 Ci0JCWJyZWFrOwotCWRlZmF1bHQ6Ci0JCURQVV9ERUJVR19FTkMoZHB1X2VuYywgIlVuZXhwZWN0 ZWQgdG9wb2xvZ3k6JWRcbiIsIHRvcG9sb2d5KTsKLQkJcmV0dXJuIC1FSU5WQUw7Ci0JfTsKLQot CURQVV9FVlQzMihEUk1JRCgmZHB1X2VuYy0+YmFzZSksIHRvcG9sb2d5LCBwcF9jb3VudCwgZHNj X2NvdW50KTsKLQotCWlmIChwcF9jb3VudCA+IE1BWF9DSEFOTkVMU19QRVJfRU5DIHx8Ci0JCWRz Y19jb3VudCA+IE1BWF9DSEFOTkVMU19QRVJfRU5DKSB7Ci0JCURQVV9FUlJPUl9FTkMoZHB1X2Vu YywgIldyb25nIGNvdW50IHBwOiVkIGRzYzolZCB0b3A6JWRcbiIsCi0JCQkJcHBfY291bnQsIGRz Y19jb3VudCwgdG9wb2xvZ3kpOwotCQlyZXR1cm4gLUVJTlZBTDsKLQl9Ci0KLQkvKiBEaXNhYmxl IERTQyBmb3IgYWxsIHRoZSBwcCdzIHByZXNlbnQgaW4gdGhpcyB0b3BvbG9neSAqLwotCWZvciAo aSA9IDA7IGkgPCBwcF9jb3VudDsgaSsrKSB7Ci0KLQkJaWYgKCFod19wcFtpXSkgewotCQkJRFBV X0VSUk9SX0VOQyhkcHVfZW5jLCAibnVsbCBwcDolZCB0b3A6JWQgY250OiVkXG4iLAotCQkJCQlp LCB0b3BvbG9neSwgcHBfY291bnQpOwotCQkJcmV0dXJuIC1FSU5WQUw7Ci0JCX0KLQotCQlpZiAo aHdfcHBbaV0tPm9wcy5kaXNhYmxlX2RzYykKLQkJCWh3X3BwW2ldLT5vcHMuZGlzYWJsZV9kc2Mo aHdfcHBbaV0pOwotCX0KLQotCS8qIERpc2FibGUgRFNDIEhXICovCi0JZm9yIChpID0gMDsgaSA8 IGRzY19jb3VudDsgaSsrKSB7Ci0KLQkJaWYgKCFod19kc2NbaV0pIHsKLQkJCURQVV9FUlJPUl9F TkMoZHB1X2VuYywgIm51bGwgZHNjOiVkIHRvcDolZCBjbnQ6JWRcbiIsCi0JCQkJCWksIHRvcG9s b2d5LCBkc2NfY291bnQpOwotCQkJcmV0dXJuIC1FSU5WQUw7Ci0JCX0KLQotCQlpZiAoaHdfZHNj W2ldLT5vcHMuZHNjX2Rpc2FibGUpCi0JCQlod19kc2NbaV0tPm9wcy5kc2NfZGlzYWJsZShod19k c2NbaV0pOwotCX0KLQotCXJldHVybiByZXQ7Ci19Ci0KIHN0YXRpYyB2b2lkIF9kcHVfZW5jb2Rl cl9pcnFfY29udHJvbChzdHJ1Y3QgZHJtX2VuY29kZXIgKmRybV9lbmMsIGJvb2wgZW5hYmxlKQog ewogCXN0cnVjdCBkcHVfZW5jb2Rlcl92aXJ0ICpkcHVfZW5jOwpAQCAtMTYwNyw3ICsxMTYzLDcg QEAgc3RhdGljIHZvaWQgZHB1X2VuY29kZXJfdmlydF9tb2RlX3NldChzdHJ1Y3QgZHJtX2VuY29k ZXIgKmRybV9lbmMsCiAJc3RydWN0IGxpc3RfaGVhZCAqY29ubmVjdG9yX2xpc3Q7CiAJc3RydWN0 IGRybV9jb25uZWN0b3IgKmNvbm4gPSBOVUxMLCAqY29ubl9pdGVyOwogCXN0cnVjdCBkcHVfY29u bmVjdG9yICpkcHVfY29ubiA9IE5VTEw7Ci0Jc3RydWN0IGRwdV9ybV9od19pdGVyIGRzY19pdGVy LCBwcF9pdGVyOworCXN0cnVjdCBkcHVfcm1faHdfaXRlciBwcF9pdGVyOwogCWludCBpID0gMCwg cmV0OwogCiAJaWYgKCFkcm1fZW5jKSB7CkBAIC0xNjU4LDEyICsxMjE0LDYgQEAgc3RhdGljIHZv aWQgZHB1X2VuY29kZXJfdmlydF9tb2RlX3NldChzdHJ1Y3QgZHJtX2VuY29kZXIgKmRybV9lbmMs CiAJCQkJCXJldCk7CiAJCQlyZXR1cm47CiAJCX0KLQotCQkvKgotCQkgKiBEaXNhYmxlIGRzYyBi ZWZvcmUgc3dpdGNoIHRoZSBtb2RlIGFuZCBhZnRlciBwcmVfbW9kZXNldCwKLQkJICogdG8gZ3Vh cmFudGVlIHRoYXQgcHJldmlvdXMga2lja29mZiBmaW5pc2hlZC4KLQkJICovCi0JCV9kcHVfZW5j b2Rlcl9kc2NfZGlzYWJsZShkcHVfZW5jKTsKIAl9CiAKIAkvKiBSZXNlcnZlIGR5bmFtaWMgcmVz b3VyY2VzIG5vdy4gSW5kaWNhdGluZyBub24tQXRvbWljVGVzdCBwaGFzZSAqLwpAQCAtMTY4Mywx NCArMTIzMyw2IEBAIHN0YXRpYyB2b2lkIGRwdV9lbmNvZGVyX3ZpcnRfbW9kZV9zZXQoc3RydWN0 IGRybV9lbmNvZGVyICpkcm1fZW5jLAogCQlkcHVfZW5jLT5od19wcFtpXSA9IChzdHJ1Y3QgZHB1 X2h3X3Bpbmdwb25nICopIHBwX2l0ZXIuaHc7CiAJfQogCi0JZHB1X3JtX2luaXRfaHdfaXRlcigm ZHNjX2l0ZXIsIGRybV9lbmMtPmJhc2UuaWQsIERQVV9IV19CTEtfRFNDKTsKLQlmb3IgKGkgPSAw OyBpIDwgTUFYX0NIQU5ORUxTX1BFUl9FTkM7IGkrKykgewotCQlkcHVfZW5jLT5od19kc2NbaV0g PSBOVUxMOwotCQlpZiAoIWRwdV9ybV9nZXRfaHcoJmRwdV9rbXMtPnJtLCAmZHNjX2l0ZXIpKQot CQkJYnJlYWs7Ci0JCWRwdV9lbmMtPmh3X2RzY1tpXSA9IChzdHJ1Y3QgZHB1X2h3X2RzYyAqKSBk c2NfaXRlci5odzsKLQl9Ci0KIAlmb3IgKGkgPSAwOyBpIDwgZHB1X2VuYy0+bnVtX3BoeXNfZW5j czsgaSsrKSB7CiAJCXN0cnVjdCBkcHVfZW5jb2Rlcl9waHlzICpwaHlzID0gZHB1X2VuYy0+cGh5 c19lbmNzW2ldOwogCkBAIC0xNzgyLDcgKzEzMjQsNiBAQCBzdGF0aWMgdm9pZCBkcHVfZW5jb2Rl cl92aXJ0X2VuYWJsZShzdHJ1Y3QgZHJtX2VuY29kZXIgKmRybV9lbmMpCiB7CiAJc3RydWN0IGRw dV9lbmNvZGVyX3ZpcnQgKmRwdV9lbmMgPSBOVUxMOwogCWludCBpLCByZXQgPSAwOwotCXN0cnVj dCBtc21fY29tcHJlc3Npb25faW5mbyAqY29tcF9pbmZvID0gTlVMTDsKIAlzdHJ1Y3QgZHJtX2Rp c3BsYXlfbW9kZSAqY3VyX21vZGUgPSBOVUxMOwogCiAJaWYgKCFkcm1fZW5jKSB7CkBAIC0xNzkw LDcgKzEzMzEsNiBAQCBzdGF0aWMgdm9pZCBkcHVfZW5jb2Rlcl92aXJ0X2VuYWJsZShzdHJ1Y3Qg ZHJtX2VuY29kZXIgKmRybV9lbmMpCiAJCXJldHVybjsKIAl9CiAJZHB1X2VuYyA9IHRvX2RwdV9l bmNvZGVyX3ZpcnQoZHJtX2VuYyk7Ci0JY29tcF9pbmZvID0gJmRwdV9lbmMtPm1vZGVfaW5mby5j b21wX2luZm87CiAJY3VyX21vZGUgPSAmZHB1X2VuYy0+YmFzZS5jcnRjLT5zdGF0ZS0+YWRqdXN0 ZWRfbW9kZTsKIAogCURQVV9ERUJVR19FTkMoZHB1X2VuYywgIlxuIik7CkBAIC0xODI1LDcgKzEz NjUsNiBAQCBzdGF0aWMgdm9pZCBkcHVfZW5jb2Rlcl92aXJ0X2VuYWJsZShzdHJ1Y3QgZHJtX2Vu Y29kZXIgKmRybV9lbmMpCiAJCWlmICghcGh5cykKIAkJCWNvbnRpbnVlOwogCi0JCXBoeXMtPmNv bXBfdHlwZSA9IGNvbXBfaW5mby0+Y29tcF90eXBlOwogCQlpZiAocGh5cyAhPSBkcHVfZW5jLT5j dXJfbWFzdGVyKSB7CiAJCQkvKioKIAkJCSAqIG9uIERNUyByZXF1ZXN0LCB0aGUgZW5jb2RlciB3 aWxsIGJlIGVuYWJsZWQKQEAgLTE5MDAsMTMgKzE0MzksNiBAQCBzdGF0aWMgdm9pZCBkcHVfZW5j b2Rlcl92aXJ0X2Rpc2FibGUoc3RydWN0IGRybV9lbmNvZGVyICpkcm1fZW5jKQogCQkJcGh5cy0+ b3BzLmRpc2FibGUocGh5cyk7CiAJfQogCi0JLyoKLQkgKiBkaXNhYmxlIGRzYyBhZnRlciB0aGUg dHJhbnNmZXIgaXMgY29tcGxldGUgKGZvciBjb21tYW5kIG1vZGUpCi0JICogYW5kIGFmdGVyIHBo eXNpY2FsIGVuY29kZXIgaXMgZGlzYWJsZWQsIHRvIG1ha2Ugc3VyZSB0aW1pbmcKLQkgKiBlbmdp bmUgaXMgYWxyZWFkeSBkaXNhYmxlZCAoZm9yIHZpZGVvIG1vZGUpLgotCSAqLwotCV9kcHVfZW5j b2Rlcl9kc2NfZGlzYWJsZShkcHVfZW5jKTsKLQogCS8qIGFmdGVyIHBoeXMgd2FpdHMgZm9yIGZy YW1lLWRvbmUsIHNob3VsZCBiZSBubyBtb3JlIGZyYW1lcyBwZW5kaW5nICovCiAJaWYgKGF0b21p Y194Y2hnKCZkcHVfZW5jLT5mcmFtZV9kb25lX3RpbWVvdXQsIDApKSB7CiAJCURQVV9FUlJPUigi ZW5jJWQgdGltZW91dCBwZW5kaW5nXG4iLCBkcm1fZW5jLT5iYXNlLmlkKTsKQEAgLTI3NDIsMTIg KzIyNzQsNiBAQCB2b2lkIGRwdV9lbmNvZGVyX3ByZXBhcmVfZm9yX2tpY2tvZmYoc3RydWN0IGRy bV9lbmNvZGVyICpkcm1fZW5jLAogCQkJCQlkcHVfZW5jLT5jdXJfbWFzdGVyLT5jb25uZWN0b3It PmJhc2UuaWQsCiAJCQkJCXJjKTsKIAl9Ci0KLQlpZiAoZHB1X2VuY29kZXJfaXNfZHNjX2VuYWJs ZWQoZHJtX2VuYykpIHsKLQkJcmMgPSBfZHB1X2VuY29kZXJfZHNjX3NldHVwKGRwdV9lbmMpOwot CQlpZiAocmMpCi0JCQlEUFVfRVJST1JfRU5DKGRwdV9lbmMsICJmYWlsZWQgdG8gc2V0dXAgRFND OiAlZFxuIiwgcmMpOwotCX0KIH0KIAogdm9pZCBkcHVfZW5jb2Rlcl9raWNrb2ZmKHN0cnVjdCBk cm1fZW5jb2RlciAqZHJtX2VuYykKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlz cC9kcHUxL2RwdV9lbmNvZGVyLmggYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVf ZW5jb2Rlci5oCmluZGV4IGU4NWU1YTQuLmIyNTYxOWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9tc20vZGlzcC9kcHUxL2RwdV9lbmNvZGVyLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL21z bS9kaXNwL2RwdTEvZHB1X2VuY29kZXIuaApAQCAtMTQ1LDIwICsxNDUsNiBAQCBpbnQgZHB1X2Vu Y29kZXJfd2FpdF9mb3JfZXZlbnQoc3RydWN0IGRybV9lbmNvZGVyICpkcm1fZW5jb2RlciwKIHZv aWQgZHB1X2VuY29kZXJfdmlydF9yZXN0b3JlKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2Rlcik7 CiAKIC8qKgotICogZHB1X2VuY29kZXJfaXNfZHNjX2VuYWJsZWQgLSBjaGVjayBpZiBlbmNvZGVy IGlzIGluIERTQyBtb2RlCi0gKiBAZHJtX2VuYzogUG9pbnRlciB0byBkcm0gZW5jb2RlciBvYmpl Y3QKLSAqIEBSZXR1cm46IHRydWUgaWYgZW5jb2RlciBpcyBpbiBEU0MgbW9kZQotICovCi1ib29s IGRwdV9lbmNvZGVyX2lzX2RzY19lbmFibGVkKHN0cnVjdCBkcm1fZW5jb2RlciAqZHJtX2VuYyk7 Ci0KLS8qKgotICogZHB1X2VuY29kZXJfaXNfZHNjX21lcmdlIC0gY2hlY2sgaWYgZW5jb2RlciBp cyBpbiBEU0MgbWVyZ2UgbW9kZQotICogQGRybV9lbmM6IFBvaW50ZXIgdG8gZHJtIGVuY29kZXIg b2JqZWN0Ci0gKiBAUmV0dXJuOiB0cnVlIGlmIGVuY29kZXIgaXMgaW4gRFNDIG1lcmdlIG1vZGUK LSAqLwotYm9vbCBkcHVfZW5jb2Rlcl9pc19kc2NfbWVyZ2Uoc3RydWN0IGRybV9lbmNvZGVyICpk cm1fZW5jKTsKLQotLyoqCiAgKiBkcHVfZW5jb2Rlcl9jaGVja19tb2RlIC0gY2hlY2sgaWYgZ2l2 ZW4gbW9kZSBpcyBzdXBwb3J0ZWQgb3Igbm90CiAgKiBAZHJtX2VuYzogUG9pbnRlciB0byBkcm0g ZW5jb2RlciBvYmplY3QKICAqIEBtb2RlOiBNb2RlIHRvIGJlIGNoZWNrZWQKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9lbmNvZGVyX3BoeXMuaCBiL2RyaXZl cnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9lbmNvZGVyX3BoeXMuaAppbmRleCA5YmJmMzM5 Yi4uYjU3ZjYxOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1 X2VuY29kZXJfcGh5cy5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9l bmNvZGVyX3BoeXMuaApAQCAtMjMyLDcgKzIzMiw2IEBAIHN0cnVjdCBkcHVfZW5jb2Rlcl9pcnEg ewogICogQHNwbGl0X3JvbGU6CQlSb2xlIHRvIHBsYXkgaW4gYSBzcGxpdC1wYW5lbCBjb25maWd1 cmF0aW9uCiAgKiBAaW50Zl9tb2RlOgkJSW50ZXJmYWNlIG1vZGUKICAqIEBpbnRmX2lkeDoJCUlu dGVyZmFjZSBpbmRleCBvbiBkcHUgaGFyZHdhcmUKLSAqIEBjb21wX3R5cGU6ICAgICAgVHlwZSBv ZiBjb21wcmVzc2lvbiBzdXBwb3J0ZWQKICAqIEBlbmNfc3BpbmxvY2s6CVZpcnR1YWwtRW5jb2Rl ci1XaWRlIFNwaW4gTG9jayBmb3IgSVJRIHB1cnBvc2VzCiAgKiBAZW5hYmxlX3N0YXRlOglFbmFi bGUgc3RhdGUgdHJhY2tpbmcKICAqIEB2YmxhbmtfcmVmY291bnQ6CVJlZmVyZW5jZSBjb3VudCBv ZiB2YmxhbmsgcmVxdWVzdApAQCAtMjYyLDcgKzI2MSw2IEBAIHN0cnVjdCBkcHVfZW5jb2Rlcl9w aHlzIHsKIAllbnVtIGRwdV9lbmNfc3BsaXRfcm9sZSBzcGxpdF9yb2xlOwogCWVudW0gZHB1X2lu dGZfbW9kZSBpbnRmX21vZGU7CiAJZW51bSBkcHVfaW50ZiBpbnRmX2lkeDsKLQllbnVtIG1zbV9k aXNwbGF5X2NvbXByZXNzaW9uX3R5cGUgY29tcF90eXBlOwogCXNwaW5sb2NrX3QgKmVuY19zcGlu bG9jazsKIAllbnVtIGRwdV9lbmNfZW5hYmxlX3N0YXRlIGVuYWJsZV9zdGF0ZTsKIAlhdG9taWNf dCB2YmxhbmtfcmVmY291bnQ7CkBAIC0zODQsNyArMzgyLDYgQEAgc3RydWN0IGRwdV9lbmNvZGVy X3BoeXNfd2IgewogICogQHNwbGl0X3JvbGU6CQlSb2xlIHRvIHBsYXkgaW4gYSBzcGxpdC1wYW5l bCBjb25maWd1cmF0aW9uCiAgKiBAaW50Zl9pZHg6CQlJbnRlcmZhY2UgaW5kZXggdGhpcyBwaHlz X2VuYyB3aWxsIGNvbnRyb2wKICAqIEB3Yl9pZHg6CQlXcml0ZWJhY2sgaW5kZXggdGhpcyBwaHlz X2VuYyB3aWxsIGNvbnRyb2wKLSAqIEBjb21wX3R5cGU6ICAgICAgVHlwZSBvZiBjb21wcmVzc2lv biBzdXBwb3J0ZWQKICAqIEBlbmNfc3BpbmxvY2s6CVZpcnR1YWwtRW5jb2Rlci1XaWRlIFNwaW4g TG9jayBmb3IgSVJRIHB1cnBvc2VzCiAgKi8KIHN0cnVjdCBkcHVfZW5jX3BoeXNfaW5pdF9wYXJh bXMgewpAQCAtMzk0LDcgKzM5MSw2IEBAIHN0cnVjdCBkcHVfZW5jX3BoeXNfaW5pdF9wYXJhbXMg ewogCWVudW0gZHB1X2VuY19zcGxpdF9yb2xlIHNwbGl0X3JvbGU7CiAJZW51bSBkcHVfaW50ZiBp bnRmX2lkeDsKIAllbnVtIGRwdV93YiB3Yl9pZHg7Ci0JZW51bSBtc21fZGlzcGxheV9jb21wcmVz c2lvbl90eXBlIGNvbXBfdHlwZTsKIAlzcGlubG9ja190ICplbmNfc3BpbmxvY2s7CiB9OwogCkBA IC00NzksOCArNDc1LDcgQEAgc3RhdGljIGlubGluZSBlbnVtIGRwdV8zZF9ibGVuZF9tb2RlIGRw dV9lbmNvZGVyX2hlbHBlcl9nZXRfM2RfYmxlbmRfbW9kZSgKIAogCXRvcG9sb2d5ID0gZHB1X2Nv bm5lY3Rvcl9nZXRfdG9wb2xvZ3lfbmFtZShwaHlzX2VuYy0+Y29ubmVjdG9yKTsKIAlpZiAocGh5 c19lbmMtPnNwbGl0X3JvbGUgPT0gRU5DX1JPTEVfU09MTyAmJgotCQkJKHRvcG9sb2d5ID09IERQ VV9STV9UT1BPTE9HWV9EVUFMUElQRV8zRE1FUkdFIHx8Ci0JCQkgdG9wb2xvZ3kgPT0gRFBVX1JN X1RPUE9MT0dZX0RVQUxQSVBFXzNETUVSR0VfRFNDKSkKKwkgICAgdG9wb2xvZ3kgPT0gRFBVX1JN X1RPUE9MT0dZX0RVQUxQSVBFXzNETUVSR0UpCiAJCXJldHVybiBCTEVORF8zRF9IX1JPV19JTlQ7 CiAKIAlyZXR1cm4gQkxFTkRfM0RfTk9ORTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9t c20vZGlzcC9kcHUxL2RwdV9lbmNvZGVyX3BoeXNfY21kLmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNt L2Rpc3AvZHB1MS9kcHVfZW5jb2Rlcl9waHlzX2NtZC5jCmluZGV4IDZjY2YzNzguLjcxZTJlNWEg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9lbmNvZGVyX3Bo eXNfY21kLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2VuY29kZXJf cGh5c19jbWQuYwpAQCAtMTIzNyw3ICsxMjM3LDYgQEAgc3RydWN0IGRwdV9lbmNvZGVyX3BoeXMg KmRwdV9lbmNvZGVyX3BoeXNfY21kX2luaXQoCiAJcGh5c19lbmMtPmVuY19zcGlubG9jayA9IHAt PmVuY19zcGlubG9jazsKIAljbWRfZW5jLT5zdHJlYW1fc2VsID0gMDsKIAlwaHlzX2VuYy0+ZW5h YmxlX3N0YXRlID0gRFBVX0VOQ19ESVNBQkxFRDsKLQlwaHlzX2VuYy0+Y29tcF90eXBlID0gcC0+ Y29tcF90eXBlOwogCWZvciAoaSA9IDA7IGkgPCBJTlRSX0lEWF9NQVg7IGkrKykgewogCQlpcnEg PSAmcGh5c19lbmMtPmlycVtpXTsKIAkJSU5JVF9MSVNUX0hFQUQoJmlycS0+Y2IubGlzdCk7CmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfZW5jb2Rlcl9waHlz X3ZpZC5jIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2VuY29kZXJfcGh5c192 aWQuYwppbmRleCAyN2VhMmIxLi5kNmI3MmEzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v bXNtL2Rpc3AvZHB1MS9kcHVfZW5jb2Rlcl9waHlzX3ZpZC5jCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9tc20vZGlzcC9kcHUxL2RwdV9lbmNvZGVyX3BoeXNfdmlkLmMKQEAgLTc3LDkgKzc3LDYgQEAg c3RhdGljIHZvaWQgZHJtX21vZGVfdG9faW50Zl90aW1pbmdfcGFyYW1zKAogCSAqIDwtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tIFtodl10b3RhbCAtLS0tLS0tLS0tLS0tPgogCSAqLwogCXRp bWluZy0+d2lkdGggPSBtb2RlLT5oZGlzcGxheTsJLyogYWN0aXZlIHdpZHRoICovCi0JaWYgKHZp ZF9lbmMtPmJhc2UuY29tcF90eXBlID09IE1TTV9ESVNQTEFZX0NPTVBSRVNTSU9OX0RTQykKLQkJ dGltaW5nLT53aWR0aCA9IERJVl9ST1VORF9VUCh0aW1pbmctPndpZHRoLCAzKTsKLQogCXRpbWlu Zy0+aGVpZ2h0ID0gbW9kZS0+dmRpc3BsYXk7CS8qIGFjdGl2ZSBoZWlnaHQgKi8KIAl0aW1pbmct PnhyZXMgPSB0aW1pbmctPndpZHRoOwogCXRpbWluZy0+eXJlcyA9IHRpbWluZy0+aGVpZ2h0OwpA QCAtMzc5LDggKzM3Niw3IEBAIHN0YXRpYyBib29sIF9kcHVfZW5jb2Rlcl9waHlzX2lzX2R1YWxf Y3RsKHN0cnVjdCBkcHVfZW5jb2Rlcl9waHlzICpwaHlzX2VuYykKIAkJcmV0dXJuIGZhbHNlOwog CiAJdG9wb2xvZ3kgPSBkcHVfY29ubmVjdG9yX2dldF90b3BvbG9neV9uYW1lKHBoeXNfZW5jLT5j b25uZWN0b3IpOwotCWlmICgodG9wb2xvZ3kgPT0gRFBVX1JNX1RPUE9MT0dZX0RVQUxQSVBFX0RT QykgfHwKLQkJKHRvcG9sb2d5ID09IERQVV9STV9UT1BPTE9HWV9EVUFMUElQRSkpCisJaWYgKHRv cG9sb2d5ID09IERQVV9STV9UT1BPTE9HWV9EVUFMUElQRSkKIAkJcmV0dXJuIHRydWU7CiAKIAly ZXR1cm4gZmFsc2U7CkBAIC05MTUsNyArOTExLDYgQEAgc3RydWN0IGRwdV9lbmNvZGVyX3BoeXMg KmRwdV9lbmNvZGVyX3BoeXNfdmlkX2luaXQoCiAJcGh5c19lbmMtPnNwbGl0X3JvbGUgPSBwLT5z cGxpdF9yb2xlOwogCXBoeXNfZW5jLT5pbnRmX21vZGUgPSBJTlRGX01PREVfVklERU87CiAJcGh5 c19lbmMtPmVuY19zcGlubG9jayA9IHAtPmVuY19zcGlubG9jazsKLQlwaHlzX2VuYy0+Y29tcF90 eXBlID0gcC0+Y29tcF90eXBlOwogCWZvciAoaSA9IDA7IGkgPCBJTlRSX0lEWF9NQVg7IGkrKykg ewogCQlpcnEgPSAmcGh5c19lbmMtPmlycVtpXTsKIAkJSU5JVF9MSVNUX0hFQUQoJmlycS0+Y2Iu bGlzdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdf Y2F0YWxvZy5jIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3X2NhdGFsb2cu YwppbmRleCBkZjczMTQ4Li4xNGU2NmNhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNt L2Rpc3AvZHB1MS9kcHVfaHdfY2F0YWxvZy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlz cC9kcHUxL2RwdV9od19jYXRhbG9nLmMKQEAgLTM4MCwyOSArMzgwLDYgQEAKIH07CiAKIC8qKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Ci0gKiBEU0Mgc3ViIGJsb2NrcyBjb25maWcKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1zdGF0aWMgc3RydWN0IGRwdV9k c2NfY2ZnIHNkbTg0NV9kc2NbXSA9IHsKLQl7Ci0JLm5hbWUgPSAiZHNjXzAiLCAuaWQgPSBEU0Nf MCwKLQkuYmFzZSA9IDB4ODEwMDAsIC5sZW4gPSAweDE0MAotCX0sCi0JewotCS5uYW1lID0gImRz Y18xIiwgLmlkID0gRFNDXzEsCi0JLmJhc2UgPSAweDgxNDAwLCAubGVuID0gMHgxNDAKLQl9LAot CXsKLQkubmFtZSA9ICJkc2NfMiIsIC5pZCA9IERTQ18yLAotCS5iYXNlID0gMHg4MTgwMCwgLmxl biA9IDB4MTQwCi0JfSwKLQl7Ci0JLm5hbWUgPSAiZHNjXzMiLCAuaWQgPSBEU0NfMywKLQkuYmFz ZSA9IDB4ODFjMDAsIC5sZW4gPSAweDE0MAotCX0sCi19OwotCi0vKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICogSU5URiBzdWIg YmxvY2tzIGNvbmZpZwogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKiovCiAjZGVmaW5lIElOVEZfQkxLKF9uYW1lLCBfaWQsIF9iYXNl LCBfdHlwZSwgX2N0cmxfaWQpIFwKQEAgLTU5MSw4ICs1NjgsNiBAQCB2b2lkIHNkbTg0NV9jZmdf aW5pdChzdHJ1Y3QgZHB1X21kc3NfY2ZnICpkcHVfY2ZnKQogCQkuZHMgPSBzZG04NDVfZHMsCiAJ CS5waW5ncG9uZ19jb3VudCA9IEFSUkFZX1NJWkUoc2RtODQ1X3BwKSwKIAkJLnBpbmdwb25nID0g c2RtODQ1X3BwLAotCQkuZHNjX2NvdW50ID0gQVJSQVlfU0laRShzZG04NDVfZHNjKSwKLQkJLmRz YyA9IHNkbTg0NV9kc2MsCiAJCS5jZG1fY291bnQgPSBBUlJBWV9TSVpFKHNkbTg0NV9jZG0pLAog CQkuY2RtID0gc2RtODQ1X2NkbSwKIAkJLmludGZfY291bnQgPSBBUlJBWV9TSVpFKHNkbTg0NV9p bnRmKSwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od19j YXRhbG9nLmggYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdfY2F0YWxvZy5o CmluZGV4IDQwZDkwYzMuLmNlZmYzYjcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20v ZGlzcC9kcHUxL2RwdV9od19jYXRhbG9nLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNw L2RwdTEvZHB1X2h3X2NhdGFsb2cuaApAQCAtMTk5LDcgKzE5OSw2IEBAIGVudW0gewogICogQERQ VV9QSU5HUE9OR19URTIgICAgICAgIEFkZGl0aW9uYWwgdGVhciBjaGVjayBibG9jayBmb3Igc3Bs aXQgcGlwZXMKICAqIEBEUFVfUElOR1BPTkdfU1BMSVQgICAgICBQUCBibG9jayBzdXBwb3J0cyBz cGxpdCBmaWZvCiAgKiBARFBVX1BJTkdQT05HX1NMQVZFICAgICAgUFAgYmxvY2sgaXMgYSBzdWl0 YWJsZSBzbGF2ZSBmb3Igc3BsaXQgZmlmbwotICogQERQVV9QSU5HUE9OR19EU0MsICAgICAgIERp c3BsYXkgc3RyZWFtIGNvbXByZXNzaW9uIGJsb2NrcwogICogQERQVV9QSU5HUE9OR19ESVRIRVIs ICAgIERpdGhlciBibG9ja3MKICAqIEBEUFVfUElOR1BPTkdfTUFYCiAgKi8KQEAgLTIwOCw3ICsy MDcsNiBAQCBlbnVtIHsKIAlEUFVfUElOR1BPTkdfVEUyLAogCURQVV9QSU5HUE9OR19TUExJVCwK IAlEUFVfUElOR1BPTkdfU0xBVkUsCi0JRFBVX1BJTkdQT05HX0RTQywKIAlEUFVfUElOR1BPTkdf RElUSEVSLAogCURQVV9QSU5HUE9OR19NQVgKIH07CkBAIC00ODksNyArNDg3LDYgQEAgc3RydWN0 IGRwdV9kc3BwX3N1Yl9ibGtzIHsKIHN0cnVjdCBkcHVfcGluZ3Bvbmdfc3ViX2Jsa3MgewogCXN0 cnVjdCBkcHVfcHBfYmxrIHRlOwogCXN0cnVjdCBkcHVfcHBfYmxrIHRlMjsKLQlzdHJ1Y3QgZHB1 X3BwX2JsayBkc2M7CiAJc3RydWN0IGRwdV9wcF9ibGsgZGl0aGVyOwogfTsKIApAQCAtNjcxLDE2 ICs2NjgsNiBAQCBzdHJ1Y3QgZHB1X3Bpbmdwb25nX2NmZyAgewogfTsKIAogLyoqCi0gKiBzdHJ1 Y3QgZHB1X2RzY19jZmcgLSBpbmZvcm1hdGlvbiBvZiBEU0MgYmxvY2tzCi0gKiBAaWQgICAgICAg ICAgICAgICAgIGVudW0gaWRlbnRpZnlpbmcgdGhpcyBibG9jawotICogQGJhc2UgICAgICAgICAg ICAgICByZWdpc3RlciBvZmZzZXQgb2YgdGhpcyBibG9jawotICogQGZlYXR1cmVzICAgICAgICAg ICBiaXQgbWFzayBpZGVudGlmeWluZyBzdWItYmxvY2tzL2ZlYXR1cmVzCi0gKi8KLXN0cnVjdCBk cHVfZHNjX2NmZyB7Ci0JRFBVX0hXX0JMS19JTkZPOwotfTsKLQotLyoqCiAgKiBzdHJ1Y3QgZHB1 X2NkbV9jZmcgLSBpbmZvcm1hdGlvbiBvZiBjaHJvbWEgZG93biBibG9ja3MKICAqIEBpZCAgICAg ICAgICAgICAgICAgZW51bSBpZGVudGlmeWluZyB0aGlzIGJsb2NrCiAgKiBAYmFzZSAgICAgICAg ICAgICAgIHJlZ2lzdGVyIG9mZnNldCBvZiB0aGlzIGJsb2NrCkBAIC05MTYsOSArOTAzLDYgQEAg c3RydWN0IGRwdV9tZHNzX2NmZyB7CiAJdTMyIHBpbmdwb25nX2NvdW50OwogCXN0cnVjdCBkcHVf cGluZ3BvbmdfY2ZnICpwaW5ncG9uZzsKIAotCXUzMiBkc2NfY291bnQ7Ci0Jc3RydWN0IGRwdV9k c2NfY2ZnICpkc2M7Ci0KIAl1MzIgY2RtX2NvdW50OwogCXN0cnVjdCBkcHVfY2RtX2NmZyAqY2Rt OwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdfZHNj LmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdfZHNjLmMKZGVsZXRlZCBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZjM2MzMGUuLjAwMDAwMDAKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3X2RzYy5jCisrKyAvZGV2L251bGwKQEAgLTEsMjUyICsw LDAgQEAKLS8qIENvcHlyaWdodCAoYykgMjAxNy0yMDE4LCBUaGUgTGludXggRm91bmRhdGlvbi4g QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2Fy ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotICogaXQgdW5kZXIgdGhl IHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYW5kCi0g KiBvbmx5IHZlcnNpb24gMiBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbi4KLSAqCi0gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh dCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91 dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklU TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0gKiBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICovCi0KLSNpbmNsdWRlICJkcHVfaHdf bWRzcy5oIgotI2luY2x1ZGUgImRwdV9od2lvLmgiCi0jaW5jbHVkZSAiZHB1X2h3X2NhdGFsb2cu aCIKLSNpbmNsdWRlICJkcHVfaHdfZHNjLmgiCi0jaW5jbHVkZSAiZHB1X2h3X3Bpbmdwb25nLmgi Ci0jaW5jbHVkZSAiZHB1X2RiZy5oIgotI2luY2x1ZGUgImRwdV9rbXMuaCIKLQotI2RlZmluZSBE U0NfQ09NTU9OX01PREUJICAgICAgICAgICAgICAgIDB4MDAwCi0jZGVmaW5lIERTQ19FTkMgICAg ICAgICAgICAgICAgICAgICAgICAgMFgwMDQKLSNkZWZpbmUgRFNDX1BJQ1RVUkUgICAgICAgICAg ICAgICAgICAgICAweDAwOAotI2RlZmluZSBEU0NfU0xJQ0UgICAgICAgICAgICAgICAgICAgICAg IDB4MDBDCi0jZGVmaW5lIERTQ19DSFVOS19TSVpFICAgICAgICAgICAgICAgICAgMHgwMTAKLSNk ZWZpbmUgRFNDX0RFTEFZICAgICAgICAgICAgICAgICAgICAgICAweDAxNAotI2RlZmluZSBEU0Nf U0NBTEVfSU5JVElBTCAgICAgICAgICAgICAgIDB4MDE4Ci0jZGVmaW5lIERTQ19TQ0FMRV9ERUNf SU5URVJWQUwgICAgICAgICAgMHgwMUMKLSNkZWZpbmUgRFNDX1NDQUxFX0lOQ19JTlRFUlZBTCAg ICAgICAgICAweDAyMAotI2RlZmluZSBEU0NfRklSU1RfTElORV9CUEdfT0ZGU0VUICAgICAgIDB4 MDI0Ci0jZGVmaW5lIERTQ19CUEdfT0ZGU0VUICAgICAgICAgICAgICAgICAgMHgwMjgKLSNkZWZp bmUgRFNDX0RTQ19PRkZTRVQgICAgICAgICAgICAgICAgICAweDAyQwotI2RlZmluZSBEU0NfRkxB VE5FU1MgICAgICAgICAgICAgICAgICAgIDB4MDMwCi0jZGVmaW5lIERTQ19SQ19NT0RFTF9TSVpF ICAgICAgICAgICAgICAgMHgwMzQKLSNkZWZpbmUgRFNDX1JDICAgICAgICAgICAgICAgICAgICAg ICAgICAweDAzOAotI2RlZmluZSBEU0NfUkNfQlVGX1RIUkVTSCAgICAgICAgICAgICAgIDB4MDND Ci0jZGVmaW5lIERTQ19SQU5HRV9NSU5fUVAgICAgICAgICAgICAgICAgMHgwNzQKLSNkZWZpbmUg RFNDX1JBTkdFX01BWF9RUCAgICAgICAgICAgICAgICAweDBCMAotI2RlZmluZSBEU0NfUkFOR0Vf QlBHX09GRlNFVCAgICAgICAgICAgIDB4MEVDCi0KLXN0YXRpYyB2b2lkIGRwdV9od19kc2NfZGlz YWJsZShzdHJ1Y3QgZHB1X2h3X2RzYyAqZHNjKQotewotCXN0cnVjdCBkcHVfaHdfYmxrX3JlZ19t YXAgKmRzY19jID0gJmRzYy0+aHc7Ci0KLQlEUFVfUkVHX1dSSVRFKGRzY19jLCBEU0NfQ09NTU9O X01PREUsIDApOwotfQotCi1zdGF0aWMgdm9pZCBkcHVfaHdfZHNjX2NvbmZpZyhzdHJ1Y3QgZHB1 X2h3X2RzYyAqaHdfZHNjLAotCQlzdHJ1Y3QgbXNtX2Rpc3BsYXlfZHNjX2luZm8gKmRzYywgdTMy IG1vZGUsCi0JCWJvb2wgaWNoX3Jlc2V0X292ZXJyaWRlKQotewotCXUzMiBkYXRhOwotCWludCBi cHAsIGxzYjsKLQl1MzIgaW5pdGlhbF9saW5lcyA9IGRzYy0+aW5pdGlhbF9saW5lczsKLQlib29s IGlzX2NtZF9tb2RlID0gIShtb2RlICYgQklUKDIpKTsKLQlzdHJ1Y3QgZHB1X2h3X2Jsa19yZWdf bWFwICpkc2NfYyA9ICZod19kc2MtPmh3OwotCi0JRFBVX1JFR19XUklURShkc2NfYywgRFNDX0NP TU1PTl9NT0RFLCBtb2RlKTsKLQotCWRhdGEgPSAwOwotCWlmIChpY2hfcmVzZXRfb3ZlcnJpZGUp Ci0JCWRhdGEgPSAzIDw8IDI4OwotCi0JaWYgKGlzX2NtZF9tb2RlKQotCQlpbml0aWFsX2xpbmVz ICs9IDE7Ci0KLQlkYXRhIHw9IChpbml0aWFsX2xpbmVzIDw8IDIwKTsKLQlkYXRhIHw9ICgoZHNj LT5zbGljZV9sYXN0X2dyb3VwX3NpemUgLSAxKSA8PCAxOCk7Ci0JLyogYnBwIGlzIDYuNCBmb3Jt YXQsIDQgTFNCcyBiaXRzIGFyZSBmb3IgZnJhY3Rpb25hbCBwYXJ0ICovCi0JbHNiID0gZHNjLT5i cHAgJSA0OwotCWJwcCA9IGRzYy0+YnBwIC8gNDsKLQlicHAgKj0gNDsJLyogZWl0aGVyIDggb3Ig MTIgKi8KLQlicHAgPDw9IDQ7Ci0JYnBwIHw9IGxzYjsKLQlkYXRhIHw9IChicHAgPDwgOCk7Ci0J ZGF0YSB8PSAoZHNjLT5ibG9ja19wcmVkX2VuYWJsZSA8PCA3KTsKLQlkYXRhIHw9IChkc2MtPmxp bmVfYnVmX2RlcHRoIDw8IDMpOwotCWRhdGEgfD0gKGRzYy0+ZW5hYmxlXzQyMiA8PCAyKTsKLQlk YXRhIHw9IChkc2MtPmNvbnZlcnRfcmdiIDw8IDEpOwotCWRhdGEgfD0gZHNjLT5pbnB1dF8xMF9i aXRzOwotCi0JRFBVX1JFR19XUklURShkc2NfYywgRFNDX0VOQywgZGF0YSk7Ci0KLQlkYXRhID0g ZHNjLT5waWNfd2lkdGggPDwgMTY7Ci0JZGF0YSB8PSBkc2MtPnBpY19oZWlnaHQ7Ci0JRFBVX1JF R19XUklURShkc2NfYywgRFNDX1BJQ1RVUkUsIGRhdGEpOwotCi0JZGF0YSA9IGRzYy0+c2xpY2Vf d2lkdGggPDwgMTY7Ci0JZGF0YSB8PSBkc2MtPnNsaWNlX2hlaWdodDsKLQlEUFVfUkVHX1dSSVRF KGRzY19jLCBEU0NfU0xJQ0UsIGRhdGEpOwotCi0JZGF0YSA9IGRzYy0+Y2h1bmtfc2l6ZSA8PCAx NjsKLQlEUFVfUkVHX1dSSVRFKGRzY19jLCBEU0NfQ0hVTktfU0laRSwgZGF0YSk7Ci0KLQlkYXRh ID0gZHNjLT5pbml0aWFsX2RlY19kZWxheSA8PCAxNjsKLQlkYXRhIHw9IGRzYy0+aW5pdGlhbF94 bWl0X2RlbGF5OwotCURQVV9SRUdfV1JJVEUoZHNjX2MsIERTQ19ERUxBWSwgZGF0YSk7Ci0KLQlk YXRhID0gZHNjLT5pbml0aWFsX3NjYWxlX3ZhbHVlOwotCURQVV9SRUdfV1JJVEUoZHNjX2MsIERT Q19TQ0FMRV9JTklUSUFMLCBkYXRhKTsKLQotCWRhdGEgPSBkc2MtPnNjYWxlX2RlY3JlbWVudF9p bnRlcnZhbDsKLQlEUFVfUkVHX1dSSVRFKGRzY19jLCBEU0NfU0NBTEVfREVDX0lOVEVSVkFMLCBk YXRhKTsKLQotCWRhdGEgPSBkc2MtPnNjYWxlX2luY3JlbWVudF9pbnRlcnZhbDsKLQlEUFVfUkVH X1dSSVRFKGRzY19jLCBEU0NfU0NBTEVfSU5DX0lOVEVSVkFMLCBkYXRhKTsKLQotCWRhdGEgPSBk c2MtPmZpcnN0X2xpbmVfYnBnX29mZnNldDsKLQlEUFVfUkVHX1dSSVRFKGRzY19jLCBEU0NfRklS U1RfTElORV9CUEdfT0ZGU0VULCBkYXRhKTsKLQotCWRhdGEgPSBkc2MtPm5mbF9icGdfb2Zmc2V0 IDw8IDE2OwotCWRhdGEgfD0gZHNjLT5zbGljZV9icGdfb2Zmc2V0OwotCURQVV9SRUdfV1JJVEUo ZHNjX2MsIERTQ19CUEdfT0ZGU0VULCBkYXRhKTsKLQotCWRhdGEgPSBkc2MtPmluaXRpYWxfb2Zm c2V0IDw8IDE2OwotCWRhdGEgfD0gZHNjLT5maW5hbF9vZmZzZXQ7Ci0JRFBVX1JFR19XUklURShk c2NfYywgRFNDX0RTQ19PRkZTRVQsIGRhdGEpOwotCi0JZGF0YSA9IGRzYy0+ZGV0X3RocmVzaF9m bGF0bmVzcyA8PCAxMDsKLQlkYXRhIHw9IGRzYy0+bWF4X3FwX2ZsYXRuZXNzIDw8IDU7Ci0JZGF0 YSB8PSBkc2MtPm1pbl9xcF9mbGF0bmVzczsKLQlEUFVfUkVHX1dSSVRFKGRzY19jLCBEU0NfRkxB VE5FU1MsIGRhdGEpOwotCi0JZGF0YSA9IGRzYy0+cmNfbW9kZWxfc2l6ZTsKLQlEUFVfUkVHX1dS SVRFKGRzY19jLCBEU0NfUkNfTU9ERUxfU0laRSwgZGF0YSk7Ci0KLQlkYXRhID0gZHNjLT50Z3Rf b2Zmc2V0X2xvIDw8IDE4OwotCWRhdGEgfD0gZHNjLT50Z3Rfb2Zmc2V0X2hpIDw8IDE0OwotCWRh dGEgfD0gZHNjLT5xdWFudF9pbmNyX2xpbWl0MSA8PCA5OwotCWRhdGEgfD0gZHNjLT5xdWFudF9p bmNyX2xpbWl0MCA8PCA0OwotCWRhdGEgfD0gZHNjLT5lZGdlX2ZhY3RvcjsKLQlEUFVfUkVHX1dS SVRFKGRzY19jLCBEU0NfUkMsIGRhdGEpOwotfQotCi1zdGF0aWMgdm9pZCBkcHVfaHdfZHNjX2Nv bmZpZ190aHJlc2goc3RydWN0IGRwdV9od19kc2MgKmh3X2RzYywKLQkJc3RydWN0IG1zbV9kaXNw bGF5X2RzY19pbmZvICpkc2MpCi17Ci0JdTMyICpscDsKLQljaGFyICpjcDsKLQlpbnQgaTsKLQot CXN0cnVjdCBkcHVfaHdfYmxrX3JlZ19tYXAgKmRzY19jID0gJmh3X2RzYy0+aHc7Ci0JdTMyIG9m ZiA9IDB4MDsKLQotCWxwID0gZHNjLT5idWZfdGhyZXNoOwotCW9mZiA9IERTQ19SQ19CVUZfVEhS RVNIOwotCWZvciAoaSA9IDA7IGkgPCAxNDsgaSsrKSB7Ci0JCURQVV9SRUdfV1JJVEUoZHNjX2Ms IG9mZiwgKmxwKyspOwotCQlvZmYgKz0gNDsKLQl9Ci0KLQljcCA9IGRzYy0+cmFuZ2VfbWluX3Fw OwotCW9mZiA9IERTQ19SQU5HRV9NSU5fUVA7Ci0JZm9yIChpID0gMDsgaSA8IDE1OyBpKyspIHsK LQkJRFBVX1JFR19XUklURShkc2NfYywgb2ZmLCAqY3ArKyk7Ci0JCW9mZiArPSA0OwotCX0KLQot CWNwID0gZHNjLT5yYW5nZV9tYXhfcXA7Ci0Jb2ZmID0gRFNDX1JBTkdFX01BWF9RUDsKLQlmb3Ig KGkgPSAwOyBpIDwgMTU7IGkrKykgewotCQlEUFVfUkVHX1dSSVRFKGRzY19jLCBvZmYsICpjcCsr KTsKLQkJb2ZmICs9IDQ7Ci0JfQotCi0JY3AgPSBkc2MtPnJhbmdlX2JwZ19vZmZzZXQ7Ci0Jb2Zm ID0gRFNDX1JBTkdFX0JQR19PRkZTRVQ7Ci0JZm9yIChpID0gMDsgaSA8IDE1OyBpKyspIHsKLQkJ RFBVX1JFR19XUklURShkc2NfYywgb2ZmLCAqY3ArKyk7Ci0JCW9mZiArPSA0OwotCX0KLX0KLQot c3RhdGljIHN0cnVjdCBkcHVfZHNjX2NmZyAqX2RzY19vZmZzZXQoZW51bSBkcHVfZHNjIGRzYywK LQkJc3RydWN0IGRwdV9tZHNzX2NmZyAqbSwKLQkJdm9pZCBfX2lvbWVtICphZGRyLAotCQlzdHJ1 Y3QgZHB1X2h3X2Jsa19yZWdfbWFwICpiKQotewotCWludCBpOwotCi0JZm9yIChpID0gMDsgaSA8 IG0tPmRzY19jb3VudDsgaSsrKSB7Ci0JCWlmIChkc2MgPT0gbS0+ZHNjW2ldLmlkKSB7Ci0JCQli LT5iYXNlX29mZiA9IGFkZHI7Ci0JCQliLT5ibGtfb2ZmID0gbS0+ZHNjW2ldLmJhc2U7Ci0JCQli LT5sZW5ndGggPSBtLT5kc2NbaV0ubGVuOwotCQkJYi0+aHd2ZXJzaW9uID0gbS0+aHd2ZXJzaW9u OwotCQkJYi0+bG9nX21hc2sgPSBEUFVfREJHX01BU0tfRFNDOwotCQkJcmV0dXJuICZtLT5kc2Nb aV07Ci0JCX0KLQl9Ci0KLQlyZXR1cm4gTlVMTDsKLX0KLQotc3RhdGljIHZvaWQgX3NldHVwX2Rz Y19vcHMoc3RydWN0IGRwdV9od19kc2Nfb3BzICpvcHMsCi0JCXVuc2lnbmVkIGxvbmcgY2FwKQot ewotCW9wcy0+ZHNjX2Rpc2FibGUgPSBkcHVfaHdfZHNjX2Rpc2FibGU7Ci0Jb3BzLT5kc2NfY29u ZmlnID0gZHB1X2h3X2RzY19jb25maWc7Ci0Jb3BzLT5kc2NfY29uZmlnX3RocmVzaCA9IGRwdV9o d19kc2NfY29uZmlnX3RocmVzaDsKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgZHB1X2h3X2Jsa19vcHMg ZHB1X2h3X29wcyA9IHsKLQkuc3RhcnQgPSBOVUxMLAotCS5zdG9wID0gTlVMTCwKLX07Ci0KLXN0 cnVjdCBkcHVfaHdfZHNjICpkcHVfaHdfZHNjX2luaXQoZW51bSBkcHVfZHNjIGlkeCwKLQkJdm9p ZCBfX2lvbWVtICphZGRyLAotCQlzdHJ1Y3QgZHB1X21kc3NfY2ZnICptKQotewotCXN0cnVjdCBk cHVfaHdfZHNjICpjOwotCXN0cnVjdCBkcHVfZHNjX2NmZyAqY2ZnOwotCWludCByYzsKLQotCWMg PSBremFsbG9jKHNpemVvZigqYyksIEdGUF9LRVJORUwpOwotCWlmICghYykKLQkJcmV0dXJuIEVS Ul9QVFIoLUVOT01FTSk7Ci0KLQljZmcgPSBfZHNjX29mZnNldChpZHgsIG0sIGFkZHIsICZjLT5o dyk7Ci0JaWYgKElTX0VSUl9PUl9OVUxMKGNmZykpIHsKLQkJa2ZyZWUoYyk7Ci0JCXJldHVybiBF UlJfUFRSKC1FSU5WQUwpOwotCX0KLQotCWMtPmlkeCA9IGlkeDsKLQljLT5jYXBzID0gY2ZnOwot CV9zZXR1cF9kc2Nfb3BzKCZjLT5vcHMsIGMtPmNhcHMtPmZlYXR1cmVzKTsKLQotCXJjID0gZHB1 X2h3X2Jsa19pbml0KCZjLT5iYXNlLCBEUFVfSFdfQkxLX0RTQywgaWR4LCAmZHB1X2h3X29wcyk7 Ci0JaWYgKHJjKSB7Ci0JCURQVV9FUlJPUigiZmFpbGVkIHRvIGluaXQgaHcgYmxrICVkXG4iLCBy Yyk7Ci0JCWdvdG8gYmxrX2luaXRfZXJyb3I7Ci0JfQotCi0JZHB1X2RiZ19yZWdfcmVnaXN0ZXJf ZHVtcF9yYW5nZShEUFVfREJHX05BTUUsIGNmZy0+bmFtZSwgYy0+aHcuYmxrX29mZiwKLQkJYy0+ aHcuYmxrX29mZiArIGMtPmh3Lmxlbmd0aCwgYy0+aHcueGluX2lkKTsKLQotCXJldHVybiBjOwot Ci1ibGtfaW5pdF9lcnJvcjoKLQlremZyZWUoYyk7Ci0KLQlyZXR1cm4gRVJSX1BUUihyYyk7Ci19 Ci0KLXZvaWQgZHB1X2h3X2RzY19kZXN0cm95KHN0cnVjdCBkcHVfaHdfZHNjICpkc2MpCi17Ci0J aWYgKGRzYykKLQkJZHB1X2h3X2Jsa19kZXN0cm95KCZkc2MtPmJhc2UpOwotCWtmcmVlKGRzYyk7 Ci19CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdfZHNj LmggYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdfZHNjLmgKZGVsZXRlZCBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGViYWI5MjAuLjAwMDAwMDAKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3X2RzYy5oCisrKyAvZGV2L251bGwKQEAgLTEsMTAwICsw LDAgQEAKLS8qIENvcHlyaWdodCAoYykgMjAxNy0yMDE4LCBUaGUgTGludXggRm91bmRhdGlvbi4g QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2Fy ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotICogaXQgdW5kZXIgdGhl IHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYW5kCi0g KiBvbmx5IHZlcnNpb24gMiBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbi4KLSAqCi0gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh dCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91 dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklU TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0gKiBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICovCi0KLSNpZm5kZWYgX0RQVV9IV19E U0NfSAotI2RlZmluZSBfRFBVX0hXX0RTQ19ICi0KLSNpbmNsdWRlICJkcHVfaHdfY2F0YWxvZy5o IgotI2luY2x1ZGUgImRwdV9od19tZHNzLmgiCi0jaW5jbHVkZSAiZHB1X2h3X3V0aWwuaCIKLSNp bmNsdWRlICJkcHVfaHdfYmxrLmgiCi0KLXN0cnVjdCBkcHVfaHdfZHNjOwotc3RydWN0IG1zbV9k aXNwbGF5X2RzY19pbmZvOwotCi0jZGVmaW5lIERTQ19NT0RFX1NQTElUX1BBTkVMICAgICAgICAg ICAgQklUKDApCi0jZGVmaW5lIERTQ19NT0RFX01VTFRJUExFWCAgICAgICAgICAgICAgQklUKDEp Ci0jZGVmaW5lIERTQ19NT0RFX1ZJREVPICAgICAgICAgICAgICAgICAgQklUKDIpCi0KLS8qKgot ICogc3RydWN0IGRwdV9od19kc2Nfb3BzIC0gaW50ZXJmYWNlIHRvIHRoZSBkc2MgaGFyZHdhcmUg ZHJpdmVyIGZ1bmN0aW9ucwotICogQXNzdW1wdGlvbiBpcyB0aGVzZSBmdW5jdGlvbnMgd2lsbCBi ZSBjYWxsZWQgYWZ0ZXIgY2xvY2tzIGFyZSBlbmFibGVkCi0gKi8KLXN0cnVjdCBkcHVfaHdfZHNj X29wcyB7Ci0JLyoqCi0JICogZHNjX2Rpc2FibGUgLSBkaXNhYmxlIGRzYwotCSAqIEBod19kc2M6 IFBvaW50ZXIgdG8gZHNjIGNvbnRleHQKLQkgKi8KLQl2b2lkICgqZHNjX2Rpc2FibGUpKHN0cnVj dCBkcHVfaHdfZHNjICpod19kc2MpOwotCi0JLyoqCi0JICogZHNjX2NvbmZpZyAtIGNvbmZpZ3Vy ZXMgZHNjIGVuY29kZXIKLQkgKiBAaHdfZHNjOiBQb2ludGVyIHRvIGRzYyBjb250ZXh0Ci0JICog QGRzYzogcGFuZWwgZHNjIHBhcmFtZXRlcnMKLQkgKiBAbW9kZTogZHNjIHRvcG9sb2d5IG1vZGUg dG8gYmUgc2V0Ci0JICogQGljaF9yZXNldF9vdmVycmlkZTogb3B0aW9uIHRvIHJlc2V0IGljaAot CSAqLwotCXZvaWQgKCpkc2NfY29uZmlnKShzdHJ1Y3QgZHB1X2h3X2RzYyAqaHdfZHNjLAotCQkJ c3RydWN0IG1zbV9kaXNwbGF5X2RzY19pbmZvICpkc2MsCi0JCQl1MzIgbW9kZSwgYm9vbCBpY2hf cmVzZXRfb3ZlcnJpZGUpOwotCi0JLyoqCi0JICogZHNjX2NvbmZpZ190aHJlc2ggLSBwcm9ncmFt cyBwYW5lbCB0aHJlc2hvbGRzCi0JICogQGh3X2RzYzogUG9pbnRlciB0byBkc2MgY29udGV4dAot CSAqIEBkc2M6IHBhbmVsIGRzYyBwYXJhbWV0ZXJzCi0JICovCi0Jdm9pZCAoKmRzY19jb25maWdf dGhyZXNoKShzdHJ1Y3QgZHB1X2h3X2RzYyAqaHdfZHNjLAotCQkJc3RydWN0IG1zbV9kaXNwbGF5 X2RzY19pbmZvICpkc2MpOwotfTsKLQotc3RydWN0IGRwdV9od19kc2MgewotCXN0cnVjdCBkcHVf aHdfYmxrIGJhc2U7Ci0Jc3RydWN0IGRwdV9od19ibGtfcmVnX21hcCBodzsKLQotCS8qIGRzYyAq LwotCWVudW0gZHB1X2RzYyBpZHg7Ci0JY29uc3Qgc3RydWN0IGRwdV9kc2NfY2ZnICpjYXBzOwot Ci0JLyogb3BzICovCi0Jc3RydWN0IGRwdV9od19kc2Nfb3BzIG9wczsKLX07Ci0KLS8qKgotICog ZHB1X2h3X2RzYyAtIGNvbnZlcnQgYmFzZSBvYmplY3QgZHB1X2h3X2Jhc2UgdG8gY29udGFpbmVy Ci0gKiBAaHc6IFBvaW50ZXIgdG8gYmFzZSBoYXJkd2FyZSBibG9jawotICogcmV0dXJuOiBQb2lu dGVyIHRvIGhhcmR3YXJlIGJsb2NrIGNvbnRhaW5lcgotICovCi1zdGF0aWMgaW5saW5lIHN0cnVj dCBkcHVfaHdfZHNjICp0b19kcHVfaHdfZHNjKHN0cnVjdCBkcHVfaHdfYmxrICpodykKLXsKLQly ZXR1cm4gY29udGFpbmVyX29mKGh3LCBzdHJ1Y3QgZHB1X2h3X2RzYywgYmFzZSk7Ci19Ci0KLS8q KgotICogZHB1X2h3X2RzY19pbml0IC0gaW5pdGlhbGl6ZXMgdGhlIGRzYyBibG9jayBmb3IgdGhl IHBhc3NlZAotICogICAgICAgICAgICAgICAgICAgZHNjIGlkeC4KLSAqIEBpZHg6ICBEU0MgaW5k ZXggZm9yIHdoaWNoIGRyaXZlciBvYmplY3QgaXMgcmVxdWlyZWQKLSAqIEBhZGRyOiBNYXBwZWQg cmVnaXN0ZXIgaW8gYWRkcmVzcyBvZiBNRFAKLSAqIEBtOiAgICBQb2ludGVyIHRvIG1kc3MgY2F0 YWxvZyBkYXRhCi0gKiBSZXR1cm5zOiBFcnJvciBjb2RlIG9yIGFsbG9jYXRlZCBkcHVfaHdfZHNj IGNvbnRleHQKLSAqLwotc3RydWN0IGRwdV9od19kc2MgKmRwdV9od19kc2NfaW5pdChlbnVtIGRw dV9kc2MgaWR4LAotCQl2b2lkIF9faW9tZW0gKmFkZHIsCi0JCXN0cnVjdCBkcHVfbWRzc19jZmcg Km0pOwotCi0vKioKLSAqIGRwdV9od19kc2NfZGVzdHJveSAtIGRlc3Ryb3lzIGRzYyBkcml2ZXIg Y29udGV4dAotICogICAgICAgICAgICAgICAgICAgICAgc2hvdWxkIGJlIGNhbGxlZCB0byBmcmVl IHRoZSBjb250ZXh0Ci0gKiBAZHNjOiAgIFBvaW50ZXIgdG8gZHNjIGRyaXZlciBjb250ZXh0IHJl dHVybmVkIGJ5IGRwdV9od19kc2NfaW5pdAotICovCi12b2lkIGRwdV9od19kc2NfZGVzdHJveShz dHJ1Y3QgZHB1X2h3X2RzYyAqZHNjKTsKLQotI2VuZGlmIC8qX0RQVV9IV19EU0NfSCAqLwpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3X21kc3MuaCBiL2Ry aXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od19tZHNzLmgKaW5kZXggNWVkZTJiNS4u NzBkNTdjOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3 X21kc3MuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdfbWRzcy5o CkBAIC0xMDYsNyArMTA2LDYgQEAgZW51bSBkcHVfaHdfYmxrX3R5cGUgewogCURQVV9IV19CTEtf UElOR1BPTkcsCiAJRFBVX0hXX0JMS19JTlRGLAogCURQVV9IV19CTEtfV0IsCi0JRFBVX0hXX0JM S19EU0MsCiAJRFBVX0hXX0JMS19NQVgsCiB9OwogCkBAIC0yMDgsMTcgKzIwNyw2IEBAIGVudW0g ZHB1X3Bpbmdwb25nIHsKIAlQSU5HUE9OR19NQVgKIH07CiAKLWVudW0gZHB1X2RzYyB7Ci0JRFND X05PTkUgPSAwLAotCURTQ18wLAotCURTQ18xLAotCURTQ18yLAotCURTQ18zLAotCURTQ180LAot CURTQ181LAotCURTQ19NQVgKLX07Ci0KIGVudW0gZHB1X2ludGYgewogCUlOVEZfMCA9IDEsCiAJ SU5URl8xLApAQCAtNDgyLDkgKzQ3MCw4IEBAIHN0cnVjdCBkcHVfbWRzc19jb2xvciB7CiAjZGVm aW5lIERQVV9EQkdfTUFTS19XQiAgICAgICAoMSA8PCA4KQogI2RlZmluZSBEUFVfREJHX01BU0tf VE9QICAgICAgKDEgPDwgOSkKICNkZWZpbmUgRFBVX0RCR19NQVNLX1ZCSUYgICAgICgxIDw8IDEw KQotI2RlZmluZSBEUFVfREJHX01BU0tfRFNDICAgICAgKDEgPDwgMTEpCi0jZGVmaW5lIERQVV9E QkdfTUFTS19ST1QgICAgICAoMSA8PCAxMikKLSNkZWZpbmUgRFBVX0RCR19NQVNLX0RTICAgICAg ICgxIDw8IDEzKQorI2RlZmluZSBEUFVfREJHX01BU0tfUk9UICAgICAgKDEgPDwgMTEpCisjZGVm aW5lIERQVV9EQkdfTUFTS19EUyAgICAgICAoMSA8PCAxMikKIAogLyoqCiAgKiBzdHJ1Y3QgZHB1 X2h3X2NwX2NmZzogaGFyZHdhcmUgZHNwcC9sbSBmZWF0dXJlIHBheWxvYWQuCmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdfcGluZ3BvbmcuYyBiL2RyaXZl cnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od19waW5ncG9uZy5jCmluZGV4IGUyOTNkNmUu LjkzMDhmNWMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9o d19waW5ncG9uZy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od19w aW5ncG9uZy5jCkBAIC0zNiw5ICszNiw2IEBACiAjZGVmaW5lIFBQX0ZCQ19NT0RFICAgICAgICAg ICAgICAgICAgICAgMHgwMzQKICNkZWZpbmUgUFBfRkJDX0JVREdFVF9DVEwgICAgICAgICAgICAg ICAweDAzOAogI2RlZmluZSBQUF9GQkNfTE9TU1lfTU9ERSAgICAgICAgICAgICAgIDB4MDNDCi0j ZGVmaW5lIFBQX0RTQ19NT0RFICAgICAgICAgICAgICAgICAgICAgMHgwYTAKLSNkZWZpbmUgUFBf RENFX0RBVEFfSU5fU1dBUCAgICAgICAgICAgICAweDBhYwotI2RlZmluZSBQUF9EQ0VfREFUQV9P VVRfU1dBUCAgICAgICAgICAgIDB4MGM4CiAKICNkZWZpbmUgRElUSEVSX0RFUFRIX01BUF9JTkRF WCA5CiBzdGF0aWMgdTMyIGRpdGhlcl9kZXB0aF9tYXBbRElUSEVSX0RFUFRIX01BUF9JTkRFWF0g PSB7CkBAIC0xNTEsNDggKzE0OCw2IEBAIHN0YXRpYyBpbnQgZHB1X2h3X3BwX3BvbGxfdGltZW91 dF93cl9wdHIoc3RydWN0IGRwdV9od19waW5ncG9uZyAqcHAsCiAJcmV0dXJuIHJjOwogfQogCi1z dGF0aWMgdm9pZCBkcHVfaHdfcHBfZHNjX2VuYWJsZShzdHJ1Y3QgZHB1X2h3X3Bpbmdwb25nICpw cCkKLXsKLQlzdHJ1Y3QgZHB1X2h3X2Jsa19yZWdfbWFwICpjOwotCi0JaWYgKCFwcCkKLQkJcmV0 dXJuOwotCWMgPSAmcHAtPmh3OwotCi0JRFBVX1JFR19XUklURShjLCBQUF9EU0NfTU9ERSwgMSk7 Ci19Ci0KLXN0YXRpYyB2b2lkIGRwdV9od19wcF9kc2NfZGlzYWJsZShzdHJ1Y3QgZHB1X2h3X3Bp bmdwb25nICpwcCkKLXsKLQlzdHJ1Y3QgZHB1X2h3X2Jsa19yZWdfbWFwICpjOwotCXUzMiBkYXRh OwotCi0JaWYgKCFwcCkKLQkJcmV0dXJuOwotCWMgPSAmcHAtPmh3OwotCi0JZGF0YSA9IERQVV9S RUdfUkVBRChjLCBQUF9EQ0VfREFUQV9PVVRfU1dBUCk7Ci0JZGF0YSAmPSB+QklUKDE4KTsgLyog ZGlzYWJsZSBlbmRpYW4gZmxpcCAqLwotCURQVV9SRUdfV1JJVEUoYywgUFBfRENFX0RBVEFfT1VU X1NXQVAsIGRhdGEpOwotCi0JRFBVX1JFR19XUklURShjLCBQUF9EU0NfTU9ERSwgMCk7Ci19Ci0K LXN0YXRpYyBpbnQgZHB1X2h3X3BwX3NldHVwX2RzYyhzdHJ1Y3QgZHB1X2h3X3Bpbmdwb25nICpw cCkKLXsKLQlzdHJ1Y3QgZHB1X2h3X2Jsa19yZWdfbWFwICpjOwotCWludCBkYXRhOwotCi0JaWYg KCFwcCkKLQkJcmV0dXJuIC1FSU5WQUw7Ci0JYyA9ICZwcC0+aHc7Ci0KLQlkYXRhID0gRFBVX1JF R19SRUFEKGMsIFBQX0RDRV9EQVRBX09VVF9TV0FQKTsKLQlkYXRhIHw9IEJJVCgxOCk7IC8qIGVu ZGlhbiBmbGlwICovCi0JRFBVX1JFR19XUklURShjLCBQUF9EQ0VfREFUQV9PVVRfU1dBUCwgZGF0 YSk7Ci0JcmV0dXJuIDA7Ci19Ci0KIHN0YXRpYyBpbnQgZHB1X2h3X3BwX3NldHVwX2RpdGhlcl92 MShzdHJ1Y3QgZHB1X2h3X3Bpbmdwb25nICpwcCwKIAkJCQkJdm9pZCAqY2ZnLCBzaXplX3QgbGVu KQogewpAQCAtMzM5LDkgKzI5NCw2IEBAIHN0YXRpYyB2b2lkIF9zZXR1cF9waW5ncG9uZ19vcHMo c3RydWN0IGRwdV9od19waW5ncG9uZ19vcHMgKm9wcywKIAlvcHMtPmNvbm5lY3RfZXh0ZXJuYWxf dGUgPSBkcHVfaHdfcHBfY29ubmVjdF9leHRlcm5hbF90ZTsKIAlvcHMtPmdldF92c3luY19pbmZv ID0gZHB1X2h3X3BwX2dldF92c3luY19pbmZvOwogCW9wcy0+c2V0dXBfYXV0b3JlZnJlc2ggPSBk cHVfaHdfcHBfc2V0dXBfYXV0b3JlZnJlc2hfY29uZmlnOwotCW9wcy0+c2V0dXBfZHNjID0gZHB1 X2h3X3BwX3NldHVwX2RzYzsKLQlvcHMtPmVuYWJsZV9kc2MgPSBkcHVfaHdfcHBfZHNjX2VuYWJs ZTsKLQlvcHMtPmRpc2FibGVfZHNjID0gZHB1X2h3X3BwX2RzY19kaXNhYmxlOwogCW9wcy0+Z2V0 X2F1dG9yZWZyZXNoID0gZHB1X2h3X3BwX2dldF9hdXRvcmVmcmVzaF9jb25maWc7CiAJb3BzLT5w b2xsX3RpbWVvdXRfd3JfcHRyID0gZHB1X2h3X3BwX3BvbGxfdGltZW91dF93cl9wdHI7CiAJb3Bz LT5nZXRfbGluZV9jb3VudCA9IGRwdV9od19wcF9nZXRfbGluZV9jb3VudDsKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od19waW5ncG9uZy5oIGIvZHJpdmVy cy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3X3Bpbmdwb25nLmgKaW5kZXggNzk4N2VlNi4u OTNkMDNjY2UgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9o d19waW5ncG9uZy5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od19w aW5ncG9uZy5oCkBAIC00OCwxMCArNDgsNiBAQCBzdHJ1Y3QgZHB1X2h3X3BwX3ZzeW5jX2luZm8g ewogCXUzMiB3cl9wdHJfbGluZV9jb3VudDsJLyogY3VycmVudCBsaW5lIHdpdGhpbiBwcCBmaWZv ICh3ciBwdHIpICovCiB9OwogCi1zdHJ1Y3QgZHB1X2h3X2RzY19jZmcgewotCXU4IGVuYWJsZTsK LX07Ci0KIC8qKgogICoKICAqIHN0cnVjdCBkcHVfaHdfcGluZ3Bvbmdfb3BzIDogSW50ZXJmYWNl IHRvIHRoZSBwaW5ncG9uZyBIdyBkcml2ZXIgZnVuY3Rpb25zCkBAIC02MCw5ICs1Niw2IEBAIHN0 cnVjdCBkcHVfaHdfZHNjX2NmZyB7CiAgKiAgQGVuYWJsZV90ZWFyY2hlY2sgOiBlbmFibGVzIHRl YXIgY2hlY2sKICAqICBAZ2V0X3ZzeW5jX2luZm8gOiByZXRyaWVzIHRpbWluZyBpbmZvIG9mIHRo ZSBwYW5lbAogICogIEBzZXR1cF9hdXRvcmVmcmVzaCA6IHByb2dyYW0gYXV0byByZWZyZXNoCi0g KiAgQHNldHVwX2RzYyA6IHByb2dyYW0gRFNDIGJsb2NrIHdpdGggZW5jb2RpbmcgZGV0YWlscwot ICogIEBlbmFibGVfZHNjIDogZW5hYmxlcyBEU0MgZW5jb2RlcgotICogIEBkaXNhYmxlX2RzYyA6 IGRpc2FibGVzIERTQyBlbmNvZGVyCiAgKiAgQHNldHVwX2RpdGhlciA6IGZ1bmN0aW9uIHRvIHBy b2dyYW0gdGhlIGRpdGhlciBodyBibG9jawogICogIEBnZXRfbGluZV9jb3VudDogb2J0YWluIGN1 cnJlbnQgdmVydGljYWwgbGluZSBjb3VudGVyCiAgKi8KQEAgLTExMywyMSArMTA2LDYgQEAgc3Ry dWN0IGRwdV9od19waW5ncG9uZ19vcHMgewogCWludCAoKnBvbGxfdGltZW91dF93cl9wdHIpKHN0 cnVjdCBkcHVfaHdfcGluZ3BvbmcgKnBwLCB1MzIgdGltZW91dF91cyk7CiAKIAkvKioKLQkgKiBQ cm9ncmFtIHRoZSBkc2MgY29tcHJlc3Npb24gYmxvY2sKLQkgKi8KLQlpbnQgKCpzZXR1cF9kc2Mp KHN0cnVjdCBkcHVfaHdfcGluZ3BvbmcgKnBwKTsKLQotCS8qKgotCSAqIEVuYWJsZXMgRFNDIGVu Y29kZXIKLQkgKi8KLQl2b2lkICgqZW5hYmxlX2RzYykoc3RydWN0IGRwdV9od19waW5ncG9uZyAq cHApOwotCi0JLyoqCi0JICogRGlzYWJsZXMgRFNDIGVuY29kZXIKLQkgKi8KLQl2b2lkICgqZGlz YWJsZV9kc2MpKHN0cnVjdCBkcHVfaHdfcGluZ3BvbmcgKnBwKTsKLQotCS8qKgogCSAqIFByb2dy YW0gdGhlIGRpdGhlciBodyBibG9jawogCSAqLwogCWludCAoKnNldHVwX2RpdGhlcikoc3RydWN0 IGRwdV9od19waW5ncG9uZyAqcHAsIHZvaWQgKmNmZywgc2l6ZV90IGxlbik7CmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdfdG9wLmMgYi9kcml2ZXJzL2dw dS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdfdG9wLmMKaW5kZXggNjgxNjNhMS4uNjBlNGJlZiAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3X3RvcC5jCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od190b3AuYwpAQCAtMzE3LDE4 ICszMTcsNiBAQCBzdGF0aWMgdm9pZCBkcHVfaHdfZ2V0X3NhZmVfc3RhdHVzKHN0cnVjdCBkcHVf aHdfbWRwICptZHAsCiAJc3RhdHVzLT53YltXQl8zXSA9IDA7CiB9CiAKLXN0YXRpYyB2b2lkIGRw dV9od19zZXR1cF9kY2Uoc3RydWN0IGRwdV9od19tZHAgKm1kcCwgdTMyIGRjZV9zZWwpCi17Ci0J c3RydWN0IGRwdV9od19ibGtfcmVnX21hcCAqYzsKLQotCWlmICghbWRwKQotCQlyZXR1cm47Ci0K LQljID0gJm1kcC0+aHc7Ci0KLQlEUFVfUkVHX1dSSVRFKGMsIERDRV9TRUwsIGRjZV9zZWwpOwot fQotCiB2b2lkIGRwdV9od19yZXNldF91YndjKHN0cnVjdCBkcHVfaHdfbWRwICptZHAsIHN0cnVj dCBkcHVfbWRzc19jZmcgKm0pCiB7CiAJc3RydWN0IGRwdV9od19ibGtfcmVnX21hcCBjOwpAQCAt MzY3LDcgKzM1NSw2IEBAIHN0YXRpYyB2b2lkIF9zZXR1cF9tZHBfb3BzKHN0cnVjdCBkcHVfaHdf bWRwX29wcyAqb3BzLAogCW9wcy0+Z2V0X2Rhbmdlcl9zdGF0dXMgPSBkcHVfaHdfZ2V0X2Rhbmdl cl9zdGF0dXM7CiAJb3BzLT5zZXR1cF92c3luY19zb3VyY2UgPSBkcHVfaHdfc2V0dXBfdnN5bmNf c291cmNlOwogCW9wcy0+Z2V0X3NhZmVfc3RhdHVzID0gZHB1X2h3X2dldF9zYWZlX3N0YXR1czsK LQlvcHMtPnNldHVwX2RjZSA9IGRwdV9od19zZXR1cF9kY2U7CiAJb3BzLT5yZXNldF91YndjID0g ZHB1X2h3X3Jlc2V0X3Vid2M7CiAJb3BzLT5pbnRmX2F1ZGlvX3NlbGVjdCA9IGRwdV9od19pbnRm X2F1ZGlvX3NlbGVjdDsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9k cHUxL2RwdV9od190b3AuaCBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od190 b3AuaAppbmRleCAzNzVjYjdjLi4xNDcwZDBmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v bXNtL2Rpc3AvZHB1MS9kcHVfaHdfdG9wLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNw L2RwdTEvZHB1X2h3X3RvcC5oCkBAIC0xNDMsMTMgKzE0Myw2IEBAIHN0cnVjdCBkcHVfaHdfbWRw X29wcyB7CiAJCQllbnVtIGRwdV9jbGtfY3RybF90eXBlIGNsa19jdHJsLCBib29sIGVuYWJsZSk7 CiAKIAkvKioKLQkgKiBzZXR1cF9kY2UgLSBzZXQgRENFIG11eCBmb3IgRFNDIGN0cmwgcGF0aAot CSAqIEBtZHA6IG1kcCB0b3AgY29udGV4dCBkcml2ZXIKLQkgKiBAZGNlX3NlbDogZGNlX211eCB2 YWx1ZQotCSAqLwotCXZvaWQgKCpzZXR1cF9kY2UpKHN0cnVjdCBkcHVfaHdfbWRwICptZHAsIHUz MiBkY2Vfc2VsKTsKLQotCS8qKgogCSAqIGdldF9kYW5nZXJfc3RhdHVzIC0gZ2V0IGRhbmdlciBz dGF0dXMKIAkgKiBAbWRwOiBtZHAgdG9wIGNvbnRleHQgZHJpdmVyCiAJICogQHN0YXR1czogUG9p bnRlciB0byBkYW5nZXIgc2FmZSBzdGF0dXMKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9t c20vZGlzcC9kcHUxL2RwdV9ybS5jIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1 X3JtLmMKaW5kZXggMWQ4MWIxYi4uMTNlZmJlYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L21zbS9kaXNwL2RwdTEvZHB1X3JtLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2Rw dTEvZHB1X3JtLmMKQEAgLTI0LDcgKzI0LDYgQEAKICNpbmNsdWRlICJkcHVfaHdfd2IuaCIKICNp bmNsdWRlICJkcHVfZW5jb2Rlci5oIgogI2luY2x1ZGUgImRwdV9jb25uZWN0b3IuaCIKLSNpbmNs dWRlICJkcHVfaHdfZHNjLmgiCiAKICNkZWZpbmUgUkVTRVJWRURfQllfT1RIRVIoaCwgcikgXAog CSgoaCktPnJzdnAgJiYgKChoKS0+cnN2cC0+ZW5jX2lkICE9IChyKS0+ZW5jX2lkKSkKQEAgLTQ5 LDEyICs0OCw4IEBAIHN0cnVjdCBkcHVfcm1fdG9wb2xvZ3lfZGVmIHsKIHN0YXRpYyBjb25zdCBz dHJ1Y3QgZHB1X3JtX3RvcG9sb2d5X2RlZiBnX3RvcF90YWJsZVtdID0gewogCXsgICBEUFVfUk1f VE9QT0xPR1lfTk9ORSwgICAgICAgICAgICAgICAgIDAsIDAsIDAsIDAsIGZhbHNlIH0sCiAJeyAg IERQVV9STV9UT1BPTE9HWV9TSU5HTEVQSVBFLCAgICAgICAgICAgMSwgMCwgMSwgMSwgZmFsc2Ug fSwKLQl7ICAgRFBVX1JNX1RPUE9MT0dZX1NJTkdMRVBJUEVfRFNDLCAgICAgICAxLCAxLCAxLCAx LCBmYWxzZSB9LAogCXsgICBEUFVfUk1fVE9QT0xPR1lfRFVBTFBJUEUsICAgICAgICAgICAgIDIs IDAsIDIsIDIsIHRydWUgIH0sCi0JeyAgIERQVV9STV9UT1BPTE9HWV9EVUFMUElQRV9EU0MsICAg ICAgICAgMiwgMiwgMiwgMiwgdHJ1ZSAgfSwKIAl7ICAgRFBVX1JNX1RPUE9MT0dZX0RVQUxQSVBF XzNETUVSR0UsICAgICAyLCAwLCAxLCAxLCBmYWxzZSB9LAotCXsgICBEUFVfUk1fVE9QT0xPR1lf RFVBTFBJUEVfM0RNRVJHRV9EU0MsIDIsIDEsIDEsIDEsIGZhbHNlIH0sCi0JeyAgIERQVV9STV9U T1BPTE9HWV9EVUFMUElQRV9EU0NNRVJHRSwgICAgMiwgMiwgMSwgMSwgZmFsc2UgfSwKIAl7ICAg RFBVX1JNX1RPUE9MT0dZX1BQU1BMSVQsICAgICAgICAgICAgICAxLCAwLCAyLCAxLCB0cnVlICB9 LAogfTsKIApAQCAtMjUzLDkgKzI0OCw2IEBAIHN0YXRpYyB2b2lkIF9kcHVfcm1faHdfZGVzdHJv eShlbnVtIGRwdV9od19ibGtfdHlwZSB0eXBlLCB2b2lkICpodykKIAljYXNlIERQVV9IV19CTEtf V0I6CiAJCWRwdV9od193Yl9kZXN0cm95KGh3KTsKIAkJYnJlYWs7Ci0JY2FzZSBEUFVfSFdfQkxL X0RTQzoKLQkJZHB1X2h3X2RzY19kZXN0cm95KGh3KTsKLQkJYnJlYWs7CiAJY2FzZSBEUFVfSFdf QkxLX1NTUFA6CiAJCS8qIFNTUFBzIGFyZSBub3QgbWFuYWdlZCBieSB0aGUgcmVzb3VyY2UgbWFu YWdlciAqLwogCWNhc2UgRFBVX0hXX0JMS19UT1A6CkBAIC0zNDEsOSArMzMzLDYgQEAgc3RhdGlj IGludCBfZHB1X3JtX2h3X2Jsa19jcmVhdGUoCiAJY2FzZSBEUFVfSFdfQkxLX1dCOgogCQlodyA9 IGRwdV9od193Yl9pbml0KGlkLCBtbWlvLCBjYXQsIGh3X21kcCk7CiAJCWJyZWFrOwotCWNhc2Ug RFBVX0hXX0JMS19EU0M6Ci0JCWh3ID0gZHB1X2h3X2RzY19pbml0KGlkLCBtbWlvLCBjYXQpOwot CQlicmVhazsKIAljYXNlIERQVV9IV19CTEtfU1NQUDoKIAkJLyogU1NQUHMgYXJlIG5vdCBtYW5h Z2VkIGJ5IHRoZSByZXNvdXJjZSBtYW5hZ2VyICovCiAJY2FzZSBEUFVfSFdfQkxLX1RPUDoKQEAg LTQ2NSwxNSArNDU0LDYgQEAgaW50IGRwdV9ybV9pbml0KHN0cnVjdCBkcHVfcm0gKnJtLAogCQl9 CiAJfQogCi0JZm9yIChpID0gMDsgaSA8IGNhdC0+ZHNjX2NvdW50OyBpKyspIHsKLQkJcmMgPSBf ZHB1X3JtX2h3X2Jsa19jcmVhdGUocm0sIGNhdCwgbW1pbywgRFBVX0hXX0JMS19EU0MsCi0JCQlj YXQtPmRzY1tpXS5pZCwgJmNhdC0+ZHNjW2ldKTsKLQkJaWYgKHJjKSB7Ci0JCQlEUFVfRVJST1Io ImZhaWxlZDogZHNjIGh3IG5vdCBhdmFpbGFibGVcbiIpOwotCQkJZ290byBmYWlsOwotCQl9Ci0J fQotCiAJZm9yIChpID0gMDsgaSA8IGNhdC0+aW50Zl9jb3VudDsgaSsrKSB7CiAJCWlmIChjYXQt PmludGZbaV0udHlwZSA9PSBJTlRGX05PTkUpIHsKIAkJCURQVV9ERUJVRygic2tpcCBpbnRmICVk IHdpdGggdHlwZSBub25lXG4iLCBpKTsKQEAgLTgzNCwzNyArODE0LDYgQEAgc3RhdGljIGludCBf ZHB1X3JtX3Jlc2VydmVfY3RscygKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIGludCBfZHB1X3Jt X3Jlc2VydmVfZHNjKAotCQlzdHJ1Y3QgZHB1X3JtICpybSwKLQkJc3RydWN0IGRwdV9ybV9yc3Zw ICpyc3ZwLAotCQljb25zdCBzdHJ1Y3QgZHB1X3JtX3RvcG9sb2d5X2RlZiAqdG9wKQotewotCXN0 cnVjdCBkcHVfcm1faHdfaXRlciBpdGVyOwotCWludCBhbGxvY19jb3VudCA9IDA7Ci0JaW50IG51 bV9kc2NfZW5jID0gdG9wLT5udW1fbG07Ci0KLQlpZiAoIXRvcC0+bnVtX2NvbXBfZW5jKQotCQly ZXR1cm4gMDsKLQotCWRwdV9ybV9pbml0X2h3X2l0ZXIoJml0ZXIsIDAsIERQVV9IV19CTEtfRFND KTsKLQotCXdoaWxlIChfZHB1X3JtX2dldF9od19sb2NrZWQocm0sICZpdGVyKSkgewotCQlpZiAo UkVTRVJWRURfQllfT1RIRVIoaXRlci5ibGssIHJzdnApKQotCQkJY29udGludWU7Ci0KLQkJaXRl ci5ibGstPnJzdnBfbnh0ID0gcnN2cDsKLQkJRFBVX0VWVDMyKGl0ZXIuYmxrLT50eXBlLCByc3Zw LT5lbmNfaWQsIGl0ZXIuYmxrLT5pZCk7Ci0KLQkJaWYgKCsrYWxsb2NfY291bnQgPT0gbnVtX2Rz Y19lbmMpCi0JCQlyZXR1cm4gMDsKLQl9Ci0KLQlEUFVfRVJST1IoImNvdWxkbid0IHJlc2VydmUg JWQgZHNjIGJsb2NrcyBmb3IgZW5jIGlkICVkXG4iLAotCQludW1fZHNjX2VuYywgcnN2cC0+ZW5j X2lkKTsKLQotCXJldHVybiAtRU5BVkFJTDsKLX0KLQogc3RhdGljIGludCBfZHB1X3JtX3Jlc2Vy dmVfY2RtKAogCQlzdHJ1Y3QgZHB1X3JtICpybSwKIAkJc3RydWN0IGRwdV9ybV9yc3ZwICpyc3Zw LApAQCAtMTAzMiwxMCArOTgxLDYgQEAgc3RhdGljIGludCBfZHB1X3JtX21ha2VfbmV4dF9yc3Zw KAogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKLQlyZXQgPSBfZHB1X3JtX3Jlc2VydmVfZHNj KHJtLCByc3ZwLCByZXFzLT50b3BvbG9neSk7Ci0JaWYgKHJldCkKLQkJcmV0dXJuIHJldDsKLQog CXJldHVybiByZXQ7CiB9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9k cHUxL2RwdV9ybS5oIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X3JtLmgKaW5k ZXggMjJhNjgxYy4uM2RiNjFiNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNw L2RwdTEvZHB1X3JtLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X3Jt LmgKQEAgLTI0LDIzICsyNCwxNSBAQAogICogZW51bSBkcHVfcm1fdG9wb2xvZ3lfbmFtZSAtIEhX IHJlc291cmNlIHVzZSBjYXNlIGluIHVzZSBieSBjb25uZWN0b3IKICAqIEBEUFVfUk1fVE9QT0xP R1lfTk9ORTogICAgICAgICAgICAgICAgIE5vIHRvcG9sb2d5IGluIHVzZSBjdXJyZW50bHkKICAq IEBEUFVfUk1fVE9QT0xPR1lfU0lOR0xFUElQRTogICAgICAgICAgIDEgTE0sIDEgUFAsIDEgSU5U Ri9XQgotICogQERQVV9STV9UT1BPTE9HWV9TSU5HTEVQSVBFX0RTQzogICAgICAgMSBMTSwgMSBE U0MsIDEgUFAsIDEgSU5URi9XQgogICogQERQVV9STV9UT1BPTE9HWV9EVUFMUElQRTogICAgICAg ICAgICAgMiBMTSwgMiBQUCwgMiBJTlRGL1dCCi0gKiBARFBVX1JNX1RPUE9MT0dZX0RVQUxQSVBF X0RTQzogICAgICAgICAyIExNLCAyIERTQywgMiBQUCwgMiBJTlRGL1dCCiAgKiBARFBVX1JNX1RP UE9MT0dZX0RVQUxQSVBFXzNETUVSR0U6ICAgICAyIExNLCAyIFBQLCAzRE11eCwgMSBJTlRGL1dC Ci0gKiBARFBVX1JNX1RPUE9MT0dZX0RVQUxQSVBFXzNETUVSR0VfRFNDOiAyIExNLCAyIFBQLCAz RE11eCwgMSBEU0MsIDEgSU5URi9XQgotICogQERQVV9STV9UT1BPTE9HWV9EVUFMUElQRV9EU0NN RVJHRTogICAgMiBMTSwgMiBQUCwgMiBEU0MgTWVyZ2UsIDEgSU5URi9XQgogICogQERQVV9STV9U T1BPTE9HWV9QUFNQTElUOiAgICAgICAgICAgICAgMSBMTSwgMiBQUHMsIDIgSU5URi9XQgogICov CiBlbnVtIGRwdV9ybV90b3BvbG9neV9uYW1lIHsKIAlEUFVfUk1fVE9QT0xPR1lfTk9ORSA9IDAs CiAJRFBVX1JNX1RPUE9MT0dZX1NJTkdMRVBJUEUsCi0JRFBVX1JNX1RPUE9MT0dZX1NJTkdMRVBJ UEVfRFNDLAogCURQVV9STV9UT1BPTE9HWV9EVUFMUElQRSwKLQlEUFVfUk1fVE9QT0xPR1lfRFVB TFBJUEVfRFNDLAogCURQVV9STV9UT1BPTE9HWV9EVUFMUElQRV8zRE1FUkdFLAotCURQVV9STV9U T1BPTE9HWV9EVUFMUElQRV8zRE1FUkdFX0RTQywKLQlEUFVfUk1fVE9QT0xPR1lfRFVBTFBJUEVf RFNDTUVSR0UsCiAJRFBVX1JNX1RPUE9MT0dZX1BQU1BMSVQsCiAJRFBVX1JNX1RPUE9MT0dZX01B WCwKIH07CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfd2Iu YyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV93Yi5jCmluZGV4IDBiYjA3ZWUu LmNjNzg3ODYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV93 Yi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV93Yi5jCkBAIC0zMDcs OCArMzA3LDYgQEAgaW50IGRwdV93Yl9nZXRfbW9kZV9pbmZvKGNvbnN0IHN0cnVjdCBkcm1fZGlz cGxheV9tb2RlICpkcm1fbW9kZSwKIAl0b3BvbG9neS0+bnVtX2VuYyA9IG5vX2VuYzsKIAl0b3Bv bG9neS0+bnVtX2ludGYgPSBzaW5nbGVfaW50ZjsKIAotCW1vZGVfaW5mby0+Y29tcF9pbmZvLmNv bXBfdHlwZSA9IE1TTV9ESVNQTEFZX0NPTVBSRVNTSU9OX05PTkU7Ci0KIAlyZXR1cm4gMDsKIH0K IApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kc2ktc3RhZ2luZy9kc2lfZHJtLmMg Yi9kcml2ZXJzL2dwdS9kcm0vbXNtL2RzaS1zdGFnaW5nL2RzaV9kcm0uYwppbmRleCAwMTdmODgx Li4yZTc0MmEzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2RzaS1zdGFnaW5nL2Rz aV9kcm0uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2RzaS1zdGFnaW5nL2RzaV9kcm0uYwpA QCAtMzIyLDEzICszMjIsNiBAQCBpbnQgZHNpX2Nvbm5fZ2V0X21vZGVfaW5mbyhjb25zdCBzdHJ1 Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqZHJtX21vZGUsCiAJbWVtY3B5KCZtb2RlX2luZm8tPnRvcG9s b2d5LCAmZHNpX21vZGUucHJpdl9pbmZvLT50b3BvbG9neSwKIAkJCXNpemVvZihzdHJ1Y3QgbXNt X2Rpc3BsYXlfdG9wb2xvZ3kpKTsKIAotCW1vZGVfaW5mby0+Y29tcF9pbmZvLmNvbXBfdHlwZSA9 IE1TTV9ESVNQTEFZX0NPTVBSRVNTSU9OX05PTkU7Ci0JaWYgKGRzaV9tb2RlLnByaXZfaW5mby0+ ZHNjX2VuYWJsZWQpIHsKLQkJbW9kZV9pbmZvLT5jb21wX2luZm8uY29tcF90eXBlID0gTVNNX0RJ U1BMQVlfQ09NUFJFU1NJT05fRFNDOwotCQltZW1jcHkoJm1vZGVfaW5mby0+Y29tcF9pbmZvLmRz Y19pbmZvLCAmZHNpX21vZGUucHJpdl9pbmZvLT5kc2MsCi0JCQlzaXplb2YoZHNpX21vZGUucHJp dl9pbmZvLT5kc2MpKTsKLQl9Ci0KIAlyZXR1cm4gMDsKIH0KIApkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL21zbS9tc21fZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9kcnYuaApp bmRleCA5ZTEzYzAxLi5lYWYyYjZhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL21z bV9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9kcnYuaApAQCAtMzE5LDIwICsz MTksNiBAQCBzdHJ1Y3QgbXNtX2Rpc3BsYXlfZHNjX2luZm8gewogfTsKIAogLyoqCi0gKiBzdHJ1 Y3QgbXNtX2NvbXByZXNzaW9uX2luZm8gLSBkZWZpbmVkIHBhbmVsIGNvbXByZXNzaW9uCi0gKiBA Y29tcF90eXBlOiAgICAgICAgdHlwZSBvZiBjb21wcmVzc2lvbiBzdXBwb3J0ZWQKLSAqIEBkc2Nf aW5mbzogICAgICAgICBkc2MgY29uZmlndXJhdGlvbiBpZiB0aGUgY29tcHJlc3Npb24KLSAqICAg ICAgICAgICAgICAgICAgICBzdXBwb3J0ZWQgaXMgRFNDCi0gKi8KLXN0cnVjdCBtc21fY29tcHJl c3Npb25faW5mbyB7Ci0JZW51bSBtc21fZGlzcGxheV9jb21wcmVzc2lvbl90eXBlIGNvbXBfdHlw ZTsKLQotCXVuaW9uewotCQlzdHJ1Y3QgbXNtX2Rpc3BsYXlfZHNjX2luZm8gZHNjX2luZm87Ci0J fTsKLX07Ci0KLS8qKgogICogc3RydWN0IG1zbV9kaXNwbGF5X3RvcG9sb2d5IC0gZGVmaW5lcyBh IGRpc3BsYXkgdG9wb2xvZ3kgcGlwZWxpbmUKICAqIEBudW1fbG06ICAgICAgIG51bWJlciBvZiBs YXllciBtaXhlcnMgdXNlZAogICogQG51bV9lbmM6ICAgICAgbnVtYmVyIG9mIGNvbXByZXNzaW9u IGVuY29kZXIgYmxvY2tzIHVzZWQKQEAgLTM1Miw3ICszMzgsNiBAQCBzdHJ1Y3QgbXNtX2Rpc3Bs YXlfdG9wb2xvZ3kgewogICogQGppdHRlcl9udW1lcjoJZGlzcGxheSBwYW5lbCBqaXR0ZXIgbnVt ZXJhdG9yIGNvbmZpZ3VyYXRpb24KICAqIEBqaXR0ZXJfZGVub206CWRpc3BsYXkgcGFuZWwgaml0 dGVyIGRlbm9taW5hdG9yIGNvbmZpZ3VyYXRpb24KICAqIEB0b3BvbG9neTogICAgICAgIHN1cHBv cnRlZCB0b3BvbG9neSBmb3IgdGhlIG1vZGUKLSAqIEBjb21wX2luZm86ICAgICAgIGNvbXByZXNz aW9uIGluZm8gc3VwcG9ydGVkCiAgKi8KIHN0cnVjdCBtc21fbW9kZV9pbmZvIHsKIAl1aW50MzJf dCBmcmFtZV9yYXRlOwpAQCAtMzYxLDcgKzM0Niw2IEBAIHN0cnVjdCBtc21fbW9kZV9pbmZvIHsK IAl1aW50MzJfdCBqaXR0ZXJfbnVtZXI7CiAJdWludDMyX3Qgaml0dGVyX2Rlbm9tOwogCXN0cnVj dCBtc21fZGlzcGxheV90b3BvbG9neSB0b3BvbG9neTsKLQlzdHJ1Y3QgbXNtX2NvbXByZXNzaW9u X2luZm8gY29tcF9pbmZvOwogfTsKIAogLyoqCi0tIApUaGUgUXVhbGNvbW0gSW5ub3ZhdGlvbiBD ZW50ZXIsIEluYy4gaXMgYSBtZW1iZXIgb2YgdGhlIENvZGUgQXVyb3JhIEZvcnVtLAphIExpbnV4 IEZvdW5kYXRpb24gQ29sbGFib3JhdGl2ZSBQcm9qZWN0CgpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpGcmVlZHJlbm8gbWFpbGluZyBsaXN0CkZyZWVkcmVu b0BsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFp bG1hbi9saXN0aW5mby9mcmVlZHJlbm8K