From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 18/41] drm/i915: Pass around sg_table to get_pages/put_pages backend Date: Thu, 20 Oct 2016 16:04:00 +0100 Message-ID: <20161020150423.4560-19-chris@chris-wilson.co.uk> References: <20161020150423.4560-1-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-lf0-x244.google.com (mail-lf0-x244.google.com [IPv6:2a00:1450:4010:c07::244]) by gabe.freedesktop.org (Postfix) with ESMTPS id C5C2689254 for ; Thu, 20 Oct 2016 15:04:50 +0000 (UTC) Received: by mail-lf0-x244.google.com with SMTP id b75so717362lfg.3 for ; Thu, 20 Oct 2016 08:04:50 -0700 (PDT) In-Reply-To: <20161020150423.4560-1-chris@chris-wilson.co.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org VGhlIHBsYW4gaXMgdG8gbW92ZSBvYmotPnBhZ2VzIG91dCBmcm9tIHVuZGVyIHRoZSBzdHJ1Y3Rf bXV0ZXggaW50byBpdHMKb3duIHBlci1vYmplY3QgbG9jay4gV2UgbmVlZCB0byBwcnVuZSBhbnkg YXNzdW1wdGlvbiBvZiB0aGUgc3RydWN0X211dGV4CmZyb20gdGhlIGdldF9wYWdlcy9wdXRfcGFn ZXMgYmFja2VuZHMsIGFuZCB0byBtYWtlIGl0IGVhc2llciB3ZSBwYXNzCmFyb3VuZCB0aGUgc2df dGFibGUgdG8gb3BlcmF0ZSBvbiByYXRoZXIgdGhhbiBpbmRpcmVjdGx5IHZpYSB0aGUgb2JqLgoK U2lnbmVkLW9mZi1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+ClJl dmlld2VkLWJ5OiBKb29uYXMgTGFodGluZW4gPGpvb25hcy5sYWh0aW5lbkBsaW51eC5pbnRlbC5j b20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICAgICB8ICAzNiAr KysrKy0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jICAgICAgICAgIHwgMTcyICsr KysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtX2RtYWJ1Zi5jICAgfCAgMjAgKystLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1f ZmVuY2UuYyAgICB8ICAxNyArLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5j ICAgICAgfCAgMTkgKystLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmggICAg ICB8ICAgNiArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1faW50ZXJuYWwuYyB8ICAy MyArKy0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fc2hyaW5rZXIuYyB8ICAxMSAr LQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fc3RvbGVuLmMgICB8ICA0MyArKysrLS0t LQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fdXNlcnB0ci5jICB8ICA4OCArKysrKysr Ky0tLS0tLS0tCiAxMCBmaWxlcyBjaGFuZ2VkLCAyMjcgaW5zZXJ0aW9ucygrKSwgMjA4IGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCmluZGV4IGYyZWRhMmJmMDIyOC4uMDgxYWNh MmM3NmMwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKQEAgLTIxNzIsOCArMjE3Miw4IEBAIHN0 cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0X29wcyB7CiAJICogYmVpbmcgcmVsZWFzZWQgb3IgdW5k ZXIgbWVtb3J5IHByZXNzdXJlICh3aGVyZSB3ZSBhdHRlbXB0IHRvCiAJICogcmVhcCBwYWdlcyBm b3IgdGhlIHNocmlua2VyKS4KIAkgKi8KLQlpbnQgKCpnZXRfcGFnZXMpKHN0cnVjdCBkcm1faTkx NV9nZW1fb2JqZWN0ICopOwotCXZvaWQgKCpwdXRfcGFnZXMpKHN0cnVjdCBkcm1faTkxNV9nZW1f b2JqZWN0ICopOworCXN0cnVjdCBzZ190YWJsZSAqKCpnZXRfcGFnZXMpKHN0cnVjdCBkcm1faTkx NV9nZW1fb2JqZWN0ICopOworCXZvaWQgKCpwdXRfcGFnZXMpKHN0cnVjdCBkcm1faTkxNV9nZW1f b2JqZWN0ICosIHN0cnVjdCBzZ190YWJsZSAqKTsKIAogCWludCAoKmRtYWJ1Zl9leHBvcnQpKHN0 cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICopOwogCXZvaWQgKCpyZWxlYXNlKShzdHJ1Y3QgZHJt X2k5MTVfZ2VtX29iamVjdCAqKTsKQEAgLTIzMDgsOCArMjMwOCw2IEBAIHN0cnVjdCBkcm1faTkx NV9nZW1fb2JqZWN0IHsKIAlzdHJ1Y3QgaTkxNV9nZW1fdXNlcnB0ciB7CiAJCXVpbnRwdHJfdCBw dHI7CiAJCXVuc2lnbmVkIHJlYWRfb25seSA6MTsKLQkJdW5zaWduZWQgd29ya2VycyA6NDsKLSNk ZWZpbmUgSTkxNV9HRU1fVVNFUlBUUl9NQVhfV09SS0VSUyAxNQogCiAJCXN0cnVjdCBpOTE1X21t X3N0cnVjdCAqbW07CiAJCXN0cnVjdCBpOTE1X21tdV9vYmplY3QgKm1tdV9vYmplY3Q7CkBAIC0y MzcxLDYgKzIzNjksMTkgQEAgX19kZXByZWNhdGVkCiBleHRlcm4gdm9pZCBkcm1fZ2VtX29iamVj dF91bnJlZmVyZW5jZV91bmxvY2tlZChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKik7CiAKIHN0YXRp YyBpbmxpbmUgYm9vbAoraTkxNV9nZW1fb2JqZWN0X2lzX2RlYWQoY29uc3Qgc3RydWN0IGRybV9p OTE1X2dlbV9vYmplY3QgKm9iaikKK3sKKwlyZXR1cm4gYXRvbWljX3JlYWQoJm9iai0+YmFzZS5y ZWZjb3VudC5yZWZjb3VudCkgPT0gMDsKK30KKworI2lmIElTX0VOQUJMRUQoQ09ORklHX0xPQ0tE RVApCisjZGVmaW5lIGxvY2tkZXBfYXNzZXJ0X2hlbGRfdW5sZXNzKGxvY2ssIGNvbmQpIFwKKwlH RU1fQlVHX09OKGRlYnVnX2xvY2tzICYmICFsb2NrZGVwX2lzX2hlbGQobG9jaykgJiYgIShjb25k KSkKKyNlbHNlCisjZGVmaW5lIGxvY2tkZXBfYXNzZXJ0X2hlbGRfdW5sZXNzKGxvY2ssIGNvbmQp CisjZW5kaWYKKworc3RhdGljIGlubGluZSBib29sCiBpOTE1X2dlbV9vYmplY3RfaGFzX3N0cnVj dF9wYWdlKGNvbnN0IHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCiB7CiAJcmV0dXJu IG9iai0+b3BzLT5mbGFncyAmIEk5MTVfR0VNX09CSkVDVF9IQVNfU1RSVUNUX1BBR0U7CkBAIC0z MTk4LDYgKzMyMDksOCBAQCBkbWFfYWRkcl90CiBpOTE1X2dlbV9vYmplY3RfZ2V0X2RtYV9hZGRy ZXNzKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCiAJCQkJdW5zaWduZWQgbG9uZyBu KTsKIAordm9pZCBfX2k5MTVfZ2VtX29iamVjdF9zZXRfcGFnZXMoc3RydWN0IGRybV9pOTE1X2dl bV9vYmplY3QgKm9iaiwKKwkJCQkgc3RydWN0IHNnX3RhYmxlICpwYWdlcyk7CiBpbnQgX19pOTE1 X2dlbV9vYmplY3RfZ2V0X3BhZ2VzKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopOwog CiBzdGF0aWMgaW5saW5lIGludCBfX211c3RfY2hlY2sKQEAgLTMyMTQsNyArMzIyNyw4IEBAIGk5 MTVfZ2VtX29iamVjdF9waW5fcGFnZXMoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikK IHN0YXRpYyBpbmxpbmUgdm9pZAogX19pOTE1X2dlbV9vYmplY3RfcGluX3BhZ2VzKHN0cnVjdCBk cm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCiB7Ci0JbG9ja2RlcF9hc3NlcnRfaGVsZCgmb2JqLT5i YXNlLmRldi0+c3RydWN0X211dGV4KTsKKwlsb2NrZGVwX2Fzc2VydF9oZWxkX3VubGVzcygmb2Jq LT5iYXNlLmRldi0+c3RydWN0X211dGV4LAorCQkJCSAgIGk5MTVfZ2VtX29iamVjdF9pc19kZWFk KG9iaikpOwogCUdFTV9CVUdfT04oIW9iai0+bW0ucGFnZXMpOwogCiAJb2JqLT5tbS5wYWdlc19w aW5fY291bnQrKzsKQEAgLTMyMjksNyArMzI0Myw4IEBAIGk5MTVfZ2VtX29iamVjdF9oYXNfcGlu bmVkX3BhZ2VzKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCiBzdGF0aWMgaW5saW5l IHZvaWQKIF9faTkxNV9nZW1fb2JqZWN0X3VucGluX3BhZ2VzKHN0cnVjdCBkcm1faTkxNV9nZW1f b2JqZWN0ICpvYmopCiB7Ci0JbG9ja2RlcF9hc3NlcnRfaGVsZCgmb2JqLT5iYXNlLmRldi0+c3Ry dWN0X211dGV4KTsKKwlsb2NrZGVwX2Fzc2VydF9oZWxkX3VubGVzcygmb2JqLT5iYXNlLmRldi0+ c3RydWN0X211dGV4LAorCQkJCSAgIGk5MTVfZ2VtX29iamVjdF9pc19kZWFkKG9iaikpOwogCUdF TV9CVUdfT04oIWk5MTVfZ2VtX29iamVjdF9oYXNfcGlubmVkX3BhZ2VzKG9iaikpOwogCUdFTV9C VUdfT04oIW9iai0+bW0ucGFnZXMpOwogCkBAIC0zMjQyLDcgKzMyNTcsOCBAQCBzdGF0aWMgaW5s aW5lIHZvaWQgaTkxNV9nZW1fb2JqZWN0X3VucGluX3BhZ2VzKHN0cnVjdCBkcm1faTkxNV9nZW1f b2JqZWN0ICpvYmopCiAJX19pOTE1X2dlbV9vYmplY3RfdW5waW5fcGFnZXMob2JqKTsKIH0KIAot aW50IF9faTkxNV9nZW1fb2JqZWN0X3B1dF9wYWdlcyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVj dCAqb2JqKTsKK3ZvaWQgX19pOTE1X2dlbV9vYmplY3RfcHV0X3BhZ2VzKHN0cnVjdCBkcm1faTkx NV9nZW1fb2JqZWN0ICpvYmopOwordm9pZCBfX2k5MTVfZ2VtX29iamVjdF9pbnZhbGlkYXRlKHN0 cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopOwogCiBlbnVtIGk5MTVfbWFwX3R5cGUgewog CUk5MTVfTUFQX1dCID0gMCwKQEAgLTM0NjcsOCArMzQ4MywxMCBAQCBpOTE1X3ZtYV91bnBpbl9m ZW5jZShzdHJ1Y3QgaTkxNV92bWEgKnZtYSkKIHZvaWQgaTkxNV9nZW1fcmVzdG9yZV9mZW5jZXMo c3RydWN0IGRybV9kZXZpY2UgKmRldik7CiAKIHZvaWQgaTkxNV9nZW1fZGV0ZWN0X2JpdF82X3N3 aXp6bGUoc3RydWN0IGRybV9kZXZpY2UgKmRldik7Ci12b2lkIGk5MTVfZ2VtX29iamVjdF9kb19i aXRfMTdfc3dpenpsZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKTsKLXZvaWQgaTkx NV9nZW1fb2JqZWN0X3NhdmVfYml0XzE3X3N3aXp6bGUoc3RydWN0IGRybV9pOTE1X2dlbV9vYmpl Y3QgKm9iaik7Cit2b2lkIGk5MTVfZ2VtX29iamVjdF9kb19iaXRfMTdfc3dpenpsZShzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAorCQkJCSAgICAgICBzdHJ1Y3Qgc2dfdGFibGUgKnBh Z2VzKTsKK3ZvaWQgaTkxNV9nZW1fb2JqZWN0X3NhdmVfYml0XzE3X3N3aXp6bGUoc3RydWN0IGRy bV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKKwkJCQkJIHN0cnVjdCBzZ190YWJsZSAqcGFnZXMpOwog CiAvKiBpOTE1X2dlbV9jb250ZXh0LmMgKi8KIGludCBfX211c3RfY2hlY2sgaTkxNV9nZW1fY29u dGV4dF9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMK aW5kZXggMDUzNTI3MzhjMDcxLi5kYTI5OWUzZTQ4ZDEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ2VtLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0u YwpAQCAtMTY5LDcgKzE2OSw3IEBAIGk5MTVfZ2VtX2dldF9hcGVydHVyZV9pb2N0bChzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCXJldHVybiAwOwogfQogCi1zdGF0aWMgaW50 CitzdGF0aWMgc3RydWN0IHNnX3RhYmxlICoKIGk5MTVfZ2VtX29iamVjdF9nZXRfcGFnZXNfcGh5 cyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQogewogCXN0cnVjdCBhZGRyZXNzX3Nw YWNlICptYXBwaW5nID0gb2JqLT5iYXNlLmZpbHAtPmZfbWFwcGluZzsKQEAgLTE3OSw3ICsxNzks NyBAQCBpOTE1X2dlbV9vYmplY3RfZ2V0X3BhZ2VzX3BoeXMoc3RydWN0IGRybV9pOTE1X2dlbV9v YmplY3QgKm9iaikKIAlpbnQgaTsKIAogCWlmIChXQVJOX09OKGk5MTVfZ2VtX29iamVjdF9uZWVk c19iaXQxN19zd2l6emxlKG9iaikpKQotCQlyZXR1cm4gLUVJTlZBTDsKKwkJcmV0dXJuIEVSUl9Q VFIoLUVJTlZBTCk7CiAKIAlmb3IgKGkgPSAwOyBpIDwgb2JqLT5iYXNlLnNpemUgLyBQQUdFX1NJ WkU7IGkrKykgewogCQlzdHJ1Y3QgcGFnZSAqcGFnZTsKQEAgLTE4Nyw3ICsxODcsNyBAQCBpOTE1 X2dlbV9vYmplY3RfZ2V0X3BhZ2VzX3BoeXMoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9i aikKIAogCQlwYWdlID0gc2htZW1fcmVhZF9tYXBwaW5nX3BhZ2UobWFwcGluZywgaSk7CiAJCWlm IChJU19FUlIocGFnZSkpCi0JCQlyZXR1cm4gUFRSX0VSUihwYWdlKTsKKwkJCXJldHVybiBFUlJf Q0FTVChwYWdlKTsKIAogCQlzcmMgPSBrbWFwX2F0b21pYyhwYWdlKTsKIAkJbWVtY3B5KHZhZGRy LCBzcmMsIFBBR0VfU0laRSk7CkBAIC0yMDIsMTEgKzIwMiwxMSBAQCBpOTE1X2dlbV9vYmplY3Rf Z2V0X3BhZ2VzX3BoeXMoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKIAogCXN0ID0g a21hbGxvYyhzaXplb2YoKnN0KSwgR0ZQX0tFUk5FTCk7CiAJaWYgKHN0ID09IE5VTEwpCi0JCXJl dHVybiAtRU5PTUVNOworCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKIAogCWlmIChzZ19hbGxv Y190YWJsZShzdCwgMSwgR0ZQX0tFUk5FTCkpIHsKIAkJa2ZyZWUoc3QpOwotCQlyZXR1cm4gLUVO T01FTTsKKwkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7CiAJfQogCiAJc2cgPSBzdC0+c2dsOwpA QCAtMjE2LDI4ICsyMTYsMzAgQEAgaTkxNV9nZW1fb2JqZWN0X2dldF9wYWdlc19waHlzKHN0cnVj dCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCiAJc2dfZG1hX2FkZHJlc3Moc2cpID0gb2JqLT5w aHlzX2hhbmRsZS0+YnVzYWRkcjsKIAlzZ19kbWFfbGVuKHNnKSA9IG9iai0+YmFzZS5zaXplOwog Ci0Jb2JqLT5tbS5wYWdlcyA9IHN0OwotCXJldHVybiAwOworCXJldHVybiBzdDsKIH0KIAogc3Rh dGljIHZvaWQKLWk5MTVfZ2VtX29iamVjdF9wdXRfcGFnZXNfcGh5cyhzdHJ1Y3QgZHJtX2k5MTVf Z2VtX29iamVjdCAqb2JqKQorX19pOTE1X2dlbV9vYmplY3RfcmVsZWFzZV9zaG1lbShzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQogewotCWludCByZXQ7Ci0KIAlHRU1fQlVHX09OKG9i ai0+bW0ubWFkdiA9PSBfX0k5MTVfTUFEVl9QVVJHRUQpOwogCi0JcmV0ID0gaTkxNV9nZW1fb2Jq ZWN0X3NldF90b19jcHVfZG9tYWluKG9iaiwgdHJ1ZSk7Ci0JaWYgKFdBUk5fT04ocmV0KSkgewot CQkvKiBJbiB0aGUgZXZlbnQgb2YgYSBkaXNhc3RlciwgYWJhbmRvbiBhbGwgY2FjaGVzIGFuZAot CQkgKiBob3BlIGZvciB0aGUgYmVzdC4KLQkJICovCi0JCW9iai0+YmFzZS5yZWFkX2RvbWFpbnMg PSBvYmotPmJhc2Uud3JpdGVfZG9tYWluID0gSTkxNV9HRU1fRE9NQUlOX0NQVTsKLQl9Ci0KIAlp ZiAob2JqLT5tbS5tYWR2ID09IEk5MTVfTUFEVl9ET05UTkVFRCkKIAkJb2JqLT5tbS5kaXJ0eSA9 IGZhbHNlOwogCisJaWYgKChvYmotPmJhc2UucmVhZF9kb21haW5zICYgSTkxNV9HRU1fRE9NQUlO X0NQVSkgPT0gMCkKKwkJaTkxNV9nZW1fY2xmbHVzaF9vYmplY3Qob2JqLCBmYWxzZSk7CisKKwlv YmotPmJhc2UucmVhZF9kb21haW5zID0gSTkxNV9HRU1fRE9NQUlOX0NQVTsKKwlvYmotPmJhc2Uu d3JpdGVfZG9tYWluID0gSTkxNV9HRU1fRE9NQUlOX0NQVTsKK30KKworc3RhdGljIHZvaWQKK2k5 MTVfZ2VtX29iamVjdF9wdXRfcGFnZXNfcGh5cyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAq b2JqLAorCQkJICAgICAgIHN0cnVjdCBzZ190YWJsZSAqcGFnZXMpCit7CisJX19pOTE1X2dlbV9v YmplY3RfcmVsZWFzZV9zaG1lbShvYmopOworCiAJaWYgKG9iai0+bW0uZGlydHkpIHsKIAkJc3Ry dWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcgPSBvYmotPmJhc2UuZmlscC0+Zl9tYXBwaW5nOwog CQljaGFyICp2YWRkciA9IG9iai0+cGh5c19oYW5kbGUtPnZhZGRyOwpAQCAtMjY1LDggKzI2Nyw4 IEBAIGk5MTVfZ2VtX29iamVjdF9wdXRfcGFnZXNfcGh5cyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29i amVjdCAqb2JqKQogCQlvYmotPm1tLmRpcnR5ID0gZmFsc2U7CiAJfQogCi0Jc2dfZnJlZV90YWJs ZShvYmotPm1tLnBhZ2VzKTsKLQlrZnJlZShvYmotPm1tLnBhZ2VzKTsKKwlzZ19mcmVlX3RhYmxl KHBhZ2VzKTsKKwlrZnJlZShwYWdlcyk7CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC01MTcsOSArNTE5 LDkgQEAgaTkxNV9nZW1fb2JqZWN0X2F0dGFjaF9waHlzKHN0cnVjdCBkcm1faTkxNV9nZW1fb2Jq ZWN0ICpvYmosCiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIAotCXJldCA9IF9faTkxNV9nZW1f b2JqZWN0X3B1dF9wYWdlcyhvYmopOwotCWlmIChyZXQpCi0JCXJldHVybiByZXQ7CisJX19pOTE1 X2dlbV9vYmplY3RfcHV0X3BhZ2VzKG9iaik7CisJaWYgKG9iai0+bW0ucGFnZXMpCisJCXJldHVy biAtRUJVU1k7CiAKIAkvKiBjcmVhdGUgYSBuZXcgb2JqZWN0ICovCiAJcGh5cyA9IGRybV9wY2lf YWxsb2Mob2JqLT5iYXNlLmRldiwgb2JqLT5iYXNlLnNpemUsIGFsaWduKTsKQEAgLTUzNSw3ICs1 MzcsNyBAQCBpOTE1X2dlbV9vYmplY3RfYXR0YWNoX3BoeXMoc3RydWN0IGRybV9pOTE1X2dlbV9v YmplY3QgKm9iaiwKIHN0YXRpYyBpbnQKIGk5MTVfZ2VtX3BoeXNfcHdyaXRlKHN0cnVjdCBkcm1f aTkxNV9nZW1fb2JqZWN0ICpvYmosCiAJCSAgICAgc3RydWN0IGRybV9pOTE1X2dlbV9wd3JpdGUg KmFyZ3MsCi0JCSAgICAgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYpCisJCSAgICAgc3RydWN0 IGRybV9maWxlICpmaWxlKQogewogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBvYmotPmJhc2Uu ZGV2OwogCXZvaWQgKnZhZGRyID0gb2JqLT5waHlzX2hhbmRsZS0+dmFkZHIgKyBhcmdzLT5vZmZz ZXQ7CkBAIC01NTEsNyArNTUzLDcgQEAgaTkxNV9nZW1fcGh5c19wd3JpdGUoc3RydWN0IGRybV9p OTE1X2dlbV9vYmplY3QgKm9iaiwKIAkJCQkgICBJOTE1X1dBSVRfTE9DS0VEIHwKIAkJCQkgICBJ OTE1X1dBSVRfQUxMLAogCQkJCSAgIE1BWF9TQ0hFRFVMRV9USU1FT1VULAotCQkJCSAgIHRvX3Jw c19jbGllbnQoZmlsZV9wcml2KSk7CisJCQkJICAgdG9fcnBzX2NsaWVudChmaWxlKSk7CiAJaWYg KHJldCkKIAkJcmV0dXJuIHJldDsKIApAQCAtMjI2Niw4ICsyMjY4LDcgQEAgaTkxNV9nZW1fb2Jq ZWN0X3RydW5jYXRlKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCiB9CiAKIC8qIFRy eSB0byBkaXNjYXJkIHVud2FudGVkIHBhZ2VzICovCi1zdGF0aWMgdm9pZAotaTkxNV9nZW1fb2Jq ZWN0X2ludmFsaWRhdGUoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKK3ZvaWQgX19p OTE1X2dlbV9vYmplY3RfaW52YWxpZGF0ZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2Jq KQogewogCXN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nOwogCkBAIC0yMjg2LDMyICsyMjg3 LDIwIEBAIGk5MTVfZ2VtX29iamVjdF9pbnZhbGlkYXRlKHN0cnVjdCBkcm1faTkxNV9nZW1fb2Jq ZWN0ICpvYmopCiB9CiAKIHN0YXRpYyB2b2lkCi1pOTE1X2dlbV9vYmplY3RfcHV0X3BhZ2VzX2d0 dChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQoraTkxNV9nZW1fb2JqZWN0X3B1dF9w YWdlc19ndHQoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKKwkJCSAgICAgIHN0cnVj dCBzZ190YWJsZSAqcGFnZXMpCiB7CiAJc3RydWN0IHNndF9pdGVyIHNndF9pdGVyOwogCXN0cnVj dCBwYWdlICpwYWdlOwotCWludCByZXQ7CiAKLQlHRU1fQlVHX09OKG9iai0+bW0ubWFkdiA9PSBf X0k5MTVfTUFEVl9QVVJHRUQpOwotCi0JcmV0ID0gaTkxNV9nZW1fb2JqZWN0X3NldF90b19jcHVf ZG9tYWluKG9iaiwgdHJ1ZSk7Ci0JaWYgKFdBUk5fT04ocmV0KSkgewotCQkvKiBJbiB0aGUgZXZl bnQgb2YgYSBkaXNhc3RlciwgYWJhbmRvbiBhbGwgY2FjaGVzIGFuZAotCQkgKiBob3BlIGZvciB0 aGUgYmVzdC4KLQkJICovCi0JCWk5MTVfZ2VtX2NsZmx1c2hfb2JqZWN0KG9iaiwgdHJ1ZSk7Ci0J CW9iai0+YmFzZS5yZWFkX2RvbWFpbnMgPSBvYmotPmJhc2Uud3JpdGVfZG9tYWluID0gSTkxNV9H RU1fRE9NQUlOX0NQVTsKLQl9CisJX19pOTE1X2dlbV9vYmplY3RfcmVsZWFzZV9zaG1lbShvYmop OwogCi0JaTkxNV9nZW1fZ3R0X2ZpbmlzaF9vYmplY3Qob2JqKTsKKwlpOTE1X2dlbV9ndHRfZmlu aXNoX3BhZ2VzKG9iaiwgcGFnZXMpOwogCiAJaWYgKGk5MTVfZ2VtX29iamVjdF9uZWVkc19iaXQx N19zd2l6emxlKG9iaikpCi0JCWk5MTVfZ2VtX29iamVjdF9zYXZlX2JpdF8xN19zd2l6emxlKG9i aik7Ci0KLQlpZiAob2JqLT5tbS5tYWR2ID09IEk5MTVfTUFEVl9ET05UTkVFRCkKLQkJb2JqLT5t bS5kaXJ0eSA9IGZhbHNlOworCQlpOTE1X2dlbV9vYmplY3Rfc2F2ZV9iaXRfMTdfc3dpenpsZShv YmosIHBhZ2VzKTsKIAotCWZvcl9lYWNoX3NndF9wYWdlKHBhZ2UsIHNndF9pdGVyLCBvYmotPm1t LnBhZ2VzKSB7CisJZm9yX2VhY2hfc2d0X3BhZ2UocGFnZSwgc2d0X2l0ZXIsIHBhZ2VzKSB7CiAJ CWlmIChvYmotPm1tLmRpcnR5KQogCQkJc2V0X3BhZ2VfZGlydHkocGFnZSk7CiAKQEAgLTIzMjIs OCArMjMxMSw4IEBAIGk5MTVfZ2VtX29iamVjdF9wdXRfcGFnZXNfZ3R0KHN0cnVjdCBkcm1faTkx NV9nZW1fb2JqZWN0ICpvYmopCiAJfQogCW9iai0+bW0uZGlydHkgPSBmYWxzZTsKIAotCXNnX2Zy ZWVfdGFibGUob2JqLT5tbS5wYWdlcyk7Ci0Ja2ZyZWUob2JqLT5tbS5wYWdlcyk7CisJc2dfZnJl ZV90YWJsZShwYWdlcyk7CisJa2ZyZWUocGFnZXMpOwogfQogCiBzdGF0aWMgdm9pZCBfX2k5MTVf Z2VtX29iamVjdF9yZXNldF9wYWdlX2l0ZXIoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9i aikKQEAgLTIzMzUsMjQgKzIzMjQsMjIgQEAgc3RhdGljIHZvaWQgX19pOTE1X2dlbV9vYmplY3Rf cmVzZXRfcGFnZV9pdGVyKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCiAJCXJhZGl4 X3RyZWVfZGVsZXRlKCZvYmotPm1tLmdldF9wYWdlLnJhZGl4LCBpdGVyLmluZGV4KTsKIH0KIAot aW50IF9faTkxNV9nZW1fb2JqZWN0X3B1dF9wYWdlcyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVj dCAqb2JqKQordm9pZCBfX2k5MTVfZ2VtX29iamVjdF9wdXRfcGFnZXMoc3RydWN0IGRybV9pOTE1 X2dlbV9vYmplY3QgKm9iaikKIHsKLQljb25zdCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdF9v cHMgKm9wcyA9IG9iai0+b3BzOworCXN0cnVjdCBzZ190YWJsZSAqcGFnZXM7CiAKIAlsb2NrZGVw X2Fzc2VydF9oZWxkKCZvYmotPmJhc2UuZGV2LT5zdHJ1Y3RfbXV0ZXgpOwogCi0JaWYgKCFvYmot Pm1tLnBhZ2VzKQotCQlyZXR1cm4gMDsKLQogCWlmIChpOTE1X2dlbV9vYmplY3RfaGFzX3Bpbm5l ZF9wYWdlcyhvYmopKQotCQlyZXR1cm4gLUVCVVNZOworCQlyZXR1cm47CiAKIAlHRU1fQlVHX09O KG9iai0+YmluZF9jb3VudCk7CiAKIAkvKiAtPnB1dF9wYWdlcyBtaWdodCBuZWVkIHRvIGFsbG9j YXRlIG1lbW9yeSBmb3IgdGhlIGJpdDE3IHN3aXp6bGUKIAkgKiBhcnJheSwgaGVuY2UgcHJvdGVj dCB0aGVtIGZyb20gYmVpbmcgcmVhcGVkIGJ5IHJlbW92aW5nIHRoZW0gZnJvbSBndHQKIAkgKiBs aXN0cyBlYXJseS4gKi8KLQlsaXN0X2RlbCgmb2JqLT5nbG9iYWxfbGlzdCk7CisJcGFnZXMgPSBm ZXRjaF9hbmRfemVybygmb2JqLT5tbS5wYWdlcyk7CisJR0VNX0JVR19PTighcGFnZXMpOwogCiAJ aWYgKG9iai0+bW0ubWFwcGluZykgewogCQl2b2lkICpwdHI7CkBAIC0yMzY4LDEyICsyMzU1LDcg QEAgaW50IF9faTkxNV9nZW1fb2JqZWN0X3B1dF9wYWdlcyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29i amVjdCAqb2JqKQogCiAJX19pOTE1X2dlbV9vYmplY3RfcmVzZXRfcGFnZV9pdGVyKG9iaik7CiAK LQlvcHMtPnB1dF9wYWdlcyhvYmopOwotCW9iai0+bW0ucGFnZXMgPSBOVUxMOwotCi0JaTkxNV9n ZW1fb2JqZWN0X2ludmFsaWRhdGUob2JqKTsKLQotCXJldHVybiAwOworCW9iai0+b3BzLT5wdXRf cGFnZXMob2JqLCBwYWdlcyk7CiB9CiAKIHN0YXRpYyB1bnNpZ25lZCBpbnQgc3dpb3RsYl9tYXhf c2l6ZSh2b2lkKQpAQCAtMjM4NSw3ICsyMzY3LDcgQEAgc3RhdGljIHVuc2lnbmVkIGludCBzd2lv dGxiX21heF9zaXplKHZvaWQpCiAjZW5kaWYKIH0KIAotc3RhdGljIGludAorc3RhdGljIHN0cnVj dCBzZ190YWJsZSAqCiBpOTE1X2dlbV9vYmplY3RfZ2V0X3BhZ2VzX2d0dChzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX29iamVjdCAqb2JqKQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IHRvX2k5MTUob2JqLT5iYXNlLmRldik7CkBAIC0yNDA0LDggKzIzODYsOCBAQCBpOTE1X2dl bV9vYmplY3RfZ2V0X3BhZ2VzX2d0dChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQog CSAqIHdhc24ndCBpbiB0aGUgR1RULCB0aGVyZSBzaG91bGRuJ3QgYmUgYW55IHdheSBpdCBjb3Vs ZCBoYXZlIGJlZW4gaW4KIAkgKiBhIEdQVSBjYWNoZQogCSAqLwotCUJVR19PTihvYmotPmJhc2Uu cmVhZF9kb21haW5zICYgSTkxNV9HRU1fR1BVX0RPTUFJTlMpOwotCUJVR19PTihvYmotPmJhc2Uu d3JpdGVfZG9tYWluICYgSTkxNV9HRU1fR1BVX0RPTUFJTlMpOworCUdFTV9CVUdfT04ob2JqLT5i YXNlLnJlYWRfZG9tYWlucyAmIEk5MTVfR0VNX0dQVV9ET01BSU5TKTsKKwlHRU1fQlVHX09OKG9i ai0+YmFzZS53cml0ZV9kb21haW4gJiBJOTE1X0dFTV9HUFVfRE9NQUlOUyk7CiAKIAltYXhfc2Vn bWVudCA9IHN3aW90bGJfbWF4X3NpemUoKTsKIAlpZiAoIW1heF9zZWdtZW50KQpAQCAtMjQxMywx MiArMjM5NSwxMiBAQCBpOTE1X2dlbV9vYmplY3RfZ2V0X3BhZ2VzX2d0dChzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX29iamVjdCAqb2JqKQogCiAJc3QgPSBrbWFsbG9jKHNpemVvZigqc3QpLCBHRlBfS0VS TkVMKTsKIAlpZiAoc3QgPT0gTlVMTCkKLQkJcmV0dXJuIC1FTk9NRU07CisJCXJldHVybiBFUlJf UFRSKC1FTk9NRU0pOwogCiAJcGFnZV9jb3VudCA9IG9iai0+YmFzZS5zaXplIC8gUEFHRV9TSVpF OwogCWlmIChzZ19hbGxvY190YWJsZShzdCwgcGFnZV9jb3VudCwgR0ZQX0tFUk5FTCkpIHsKIAkJ a2ZyZWUoc3QpOwotCQlyZXR1cm4gLUVOT01FTTsKKwkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7 CiAJfQogCiAJLyogR2V0IHRoZSBsaXN0IG9mIHBhZ2VzIG91dCBvZiBvdXIgc3RydWN0IGZpbGUu ICBUaGV5J2xsIGJlIHBpbm5lZApAQCAtMjQ2OSwyMCArMjQ1MSwxOSBAQCBpOTE1X2dlbV9vYmpl Y3RfZ2V0X3BhZ2VzX2d0dChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQogCX0KIAlp ZiAoc2cpIC8qIGxvb3AgdGVybWluYXRlZCBlYXJseTsgc2hvcnQgc2cgdGFibGUgKi8KIAkJc2df bWFya19lbmQoc2cpOwotCW9iai0+bW0ucGFnZXMgPSBzdDsKIAotCXJldCA9IGk5MTVfZ2VtX2d0 dF9wcmVwYXJlX29iamVjdChvYmopOworCXJldCA9IGk5MTVfZ2VtX2d0dF9wcmVwYXJlX3BhZ2Vz KG9iaiwgc3QpOwogCWlmIChyZXQpCiAJCWdvdG8gZXJyX3BhZ2VzOwogCiAJaWYgKGk5MTVfZ2Vt X29iamVjdF9uZWVkc19iaXQxN19zd2l6emxlKG9iaikpCi0JCWk5MTVfZ2VtX29iamVjdF9kb19i aXRfMTdfc3dpenpsZShvYmopOworCQlpOTE1X2dlbV9vYmplY3RfZG9fYml0XzE3X3N3aXp6bGUo b2JqLCBzdCk7CiAKIAlpZiAoaTkxNV9nZW1fb2JqZWN0X2lzX3RpbGVkKG9iaikgJiYKIAkgICAg ZGV2X3ByaXYtPnF1aXJrcyAmIFFVSVJLX1BJTl9TV0laWkxFRF9QQUdFUykKIAkJX19pOTE1X2dl bV9vYmplY3RfcGluX3BhZ2VzKG9iaik7CiAKLQlyZXR1cm4gMDsKKwlyZXR1cm4gc3Q7CiAKIGVy cl9wYWdlczoKIAlzZ19tYXJrX2VuZChzZyk7CkBAIC0yNTAyLDcgKzI0ODMsMzUgQEAgaTkxNV9n ZW1fb2JqZWN0X2dldF9wYWdlc19ndHQoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikK IAlpZiAocmV0ID09IC1FTk9TUEMpCiAJCXJldCA9IC1FTk9NRU07CiAKLQlyZXR1cm4gcmV0Owor CXJldHVybiBFUlJfUFRSKHJldCk7Cit9CisKK3ZvaWQgX19pOTE1X2dlbV9vYmplY3Rfc2V0X3Bh Z2VzKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCisJCQkJIHN0cnVjdCBzZ190YWJs ZSAqcGFnZXMpCit7CisJbG9ja2RlcF9hc3NlcnRfaGVsZCgmb2JqLT5iYXNlLmRldi0+c3RydWN0 X211dGV4KTsKKworCW9iai0+bW0uZ2V0X3BhZ2Uuc2dfcG9zID0gcGFnZXMtPnNnbDsKKwlvYmot Pm1tLmdldF9wYWdlLnNnX2lkeCA9IDA7CisKKwlvYmotPm1tLnBhZ2VzID0gcGFnZXM7Cit9CisK K3N0YXRpYyBpbnQgX19fX2k5MTVfZ2VtX29iamVjdF9nZXRfcGFnZXMoc3RydWN0IGRybV9pOTE1 X2dlbV9vYmplY3QgKm9iaikKK3sKKwlzdHJ1Y3Qgc2dfdGFibGUgKnBhZ2VzOworCisJaWYgKHVu bGlrZWx5KG9iai0+bW0ubWFkdiAhPSBJOTE1X01BRFZfV0lMTE5FRUQpKSB7CisJCURSTV9ERUJV RygiQXR0ZW1wdGluZyB0byBvYnRhaW4gYSBwdXJnZWFibGUgb2JqZWN0XG4iKTsKKwkJcmV0dXJu IC1FRkFVTFQ7CisJfQorCisJcGFnZXMgPSBvYmotPm9wcy0+Z2V0X3BhZ2VzKG9iaik7CisJaWYg KHVubGlrZWx5KElTX0VSUihwYWdlcykpKQorCQlyZXR1cm4gUFRSX0VSUihwYWdlcyk7CisKKwlf X2k5MTVfZ2VtX29iamVjdF9zZXRfcGFnZXMob2JqLCBwYWdlcyk7CisJcmV0dXJuIDA7CiB9CiAK IC8qIEVuc3VyZSB0aGF0IHRoZSBhc3NvY2lhdGVkIHBhZ2VzIGFyZSBnYXRoZXJlZCBmcm9tIHRo ZSBiYWNraW5nIHN0b3JhZ2UKQEAgLTI1MTQsMzMgKzI1MjMsMTggQEAgaTkxNV9nZW1fb2JqZWN0 X2dldF9wYWdlc19ndHQoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKICAqLwogaW50 IF9faTkxNV9nZW1fb2JqZWN0X2dldF9wYWdlcyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAq b2JqKQogewotCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUob2Jq LT5iYXNlLmRldik7Ci0JY29uc3Qgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Rfb3BzICpvcHMg PSBvYmotPm9wczsKLQlpbnQgcmV0OworCWludCBlcnI7CiAKIAlsb2NrZGVwX2Fzc2VydF9oZWxk KCZvYmotPmJhc2UuZGV2LT5zdHJ1Y3RfbXV0ZXgpOwogCiAJaWYgKG9iai0+bW0ucGFnZXMpCiAJ CXJldHVybiAwOwogCi0JaWYgKG9iai0+bW0ubWFkdiAhPSBJOTE1X01BRFZfV0lMTE5FRUQpIHsK LQkJRFJNX0RFQlVHKCJBdHRlbXB0aW5nIHRvIG9idGFpbiBhIHB1cmdlYWJsZSBvYmplY3RcbiIp OwotCQlfX2k5MTVfZ2VtX29iamVjdF91bnBpbl9wYWdlcyhvYmopOwotCQlyZXR1cm4gLUVGQVVM VDsKLQl9Ci0KLQlyZXQgPSBvcHMtPmdldF9wYWdlcyhvYmopOwotCWlmIChyZXQpIHsKKwllcnIg PSBfX19faTkxNV9nZW1fb2JqZWN0X2dldF9wYWdlcyhvYmopOworCWlmIChlcnIpCiAJCV9faTkx NV9nZW1fb2JqZWN0X3VucGluX3BhZ2VzKG9iaik7Ci0JCXJldHVybiByZXQ7Ci0JfQogCi0JbGlz dF9hZGRfdGFpbCgmb2JqLT5nbG9iYWxfbGlzdCwgJmRldl9wcml2LT5tbS51bmJvdW5kX2xpc3Qp OwotCi0Jb2JqLT5tbS5nZXRfcGFnZS5zZ19wb3MgPSBvYmotPm1tLnBhZ2VzLT5zZ2w7Ci0Jb2Jq LT5tbS5nZXRfcGFnZS5zZ19pZHggPSAwOwotCi0JcmV0dXJuIDA7CisJcmV0dXJuIGVycjsKIH0K IAogLyogVGhlICdtYXBwaW5nJyBwYXJ0IG9mIGk5MTVfZ2VtX29iamVjdF9waW5fbWFwKCkgYmVs b3cgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2RtYWJ1Zi5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZG1hYnVmLmMKaW5kZXggMTA0NDFkYzcy ZTczLi4yYWJkNTI0YWJhMTQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtX2RtYWJ1Zi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2RtYWJ1Zi5j CkBAIC0yODksMjIgKzI4OSwxOCBAQCBzdHJ1Y3QgZG1hX2J1ZiAqaTkxNV9nZW1fcHJpbWVfZXhw b3J0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJcmV0dXJuIGRtYV9idWY7CiB9CiAKLXN0YXRp YyBpbnQgaTkxNV9nZW1fb2JqZWN0X2dldF9wYWdlc19kbWFidWYoc3RydWN0IGRybV9pOTE1X2dl bV9vYmplY3QgKm9iaikKK3N0YXRpYyBzdHJ1Y3Qgc2dfdGFibGUgKgoraTkxNV9nZW1fb2JqZWN0 X2dldF9wYWdlc19kbWFidWYoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKIHsKLQlz dHJ1Y3Qgc2dfdGFibGUgKnNnOwotCi0Jc2cgPSBkbWFfYnVmX21hcF9hdHRhY2htZW50KG9iai0+ YmFzZS5pbXBvcnRfYXR0YWNoLCBETUFfQklESVJFQ1RJT05BTCk7Ci0JaWYgKElTX0VSUihzZykp Ci0JCXJldHVybiBQVFJfRVJSKHNnKTsKLQotCW9iai0+bW0ucGFnZXMgPSBzZzsKLQlyZXR1cm4g MDsKKwlyZXR1cm4gZG1hX2J1Zl9tYXBfYXR0YWNobWVudChvYmotPmJhc2UuaW1wb3J0X2F0dGFj aCwKKwkJCQkgICAgICBETUFfQklESVJFQ1RJT05BTCk7CiB9CiAKLXN0YXRpYyB2b2lkIGk5MTVf Z2VtX29iamVjdF9wdXRfcGFnZXNfZG1hYnVmKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpv YmopCitzdGF0aWMgdm9pZCBpOTE1X2dlbV9vYmplY3RfcHV0X3BhZ2VzX2RtYWJ1ZihzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAorCQkJCQkgICAgIHN0cnVjdCBzZ190YWJsZSAqcGFn ZXMpCiB7Ci0JZG1hX2J1Zl91bm1hcF9hdHRhY2htZW50KG9iai0+YmFzZS5pbXBvcnRfYXR0YWNo LAotCQkJCSBvYmotPm1tLnBhZ2VzLCBETUFfQklESVJFQ1RJT05BTCk7CisJZG1hX2J1Zl91bm1h cF9hdHRhY2htZW50KG9iai0+YmFzZS5pbXBvcnRfYXR0YWNoLCBwYWdlcywKKwkJCQkgRE1BX0JJ RElSRUNUSU9OQUwpOwogfQogCiBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9pOTE1X2dlbV9vYmpl Y3Rfb3BzIGk5MTVfZ2VtX29iamVjdF9kbWFidWZfb3BzID0gewpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZmVuY2UuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtX2ZlbmNlLmMKaW5kZXggNWFhZGFiNTlmMDcxLi5jZDU5ZGJjNjU4OGMgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2ZlbmNlLmMKKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW1fZmVuY2UuYwpAQCAtNjQ0LDYgKzY0NCw3IEBAIGk5MTVfZ2Vt X3N3aXp6bGVfcGFnZShzdHJ1Y3QgcGFnZSAqcGFnZSkKIC8qKgogICogaTkxNV9nZW1fb2JqZWN0 X2RvX2JpdF8xN19zd2l6emxlIC0gZml4dXAgYml0IDE3IHN3aXp6bGluZwogICogQG9iajogaTkx NSBHRU0gYnVmZmVyIG9iamVjdAorICogQHBhZ2VzOiB0aGUgc2NhdHRlcmdhdGhlciBsaXN0IG9m IHBoeXNpY2FsIHBhZ2VzCiAgKgogICogVGhpcyBmdW5jdGlvbiBmaXhlcyB1cCB0aGUgc3dpenps aW5nIGluIGNhc2UgYW55IHBhZ2UgZnJhbWUgbnVtYmVyIGZvciB0aGlzCiAgKiBvYmplY3QgaGFz IGNoYW5nZWQgaW4gYml0IDE3IHNpbmNlIHRoYXQgc3RhdGUgaGFzIGJlZW4gc2F2ZWQgd2l0aApA QCAtNjU0LDcgKzY1NSw4IEBAIGk5MTVfZ2VtX3N3aXp6bGVfcGFnZShzdHJ1Y3QgcGFnZSAqcGFn ZSkKICAqIGJ5IHN3YXBwaW5nIHRoZW0gb3V0IGFuZCBiYWNrIGluIGFnYWluKS4KICAqLwogdm9p ZAotaTkxNV9nZW1fb2JqZWN0X2RvX2JpdF8xN19zd2l6emxlKHN0cnVjdCBkcm1faTkxNV9nZW1f b2JqZWN0ICpvYmopCitpOTE1X2dlbV9vYmplY3RfZG9fYml0XzE3X3N3aXp6bGUoc3RydWN0IGRy bV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKKwkJCQkgIHN0cnVjdCBzZ190YWJsZSAqcGFnZXMpCiB7 CiAJc3RydWN0IHNndF9pdGVyIHNndF9pdGVyOwogCXN0cnVjdCBwYWdlICpwYWdlOwpAQCAtNjY0 LDEwICs2NjYsOSBAQCBpOTE1X2dlbV9vYmplY3RfZG9fYml0XzE3X3N3aXp6bGUoc3RydWN0IGRy bV9pOTE1X2dlbV9vYmplY3QgKm9iaikKIAkJcmV0dXJuOwogCiAJaSA9IDA7Ci0JZm9yX2VhY2hf c2d0X3BhZ2UocGFnZSwgc2d0X2l0ZXIsIG9iai0+bW0ucGFnZXMpIHsKKwlmb3JfZWFjaF9zZ3Rf cGFnZShwYWdlLCBzZ3RfaXRlciwgcGFnZXMpIHsKIAkJY2hhciBuZXdfYml0XzE3ID0gcGFnZV90 b19waHlzKHBhZ2UpID4+IDE3OwotCQlpZiAoKG5ld19iaXRfMTcgJiAweDEpICE9Ci0JCSAgICAo dGVzdF9iaXQoaSwgb2JqLT5iaXRfMTcpICE9IDApKSB7CisJCWlmICgobmV3X2JpdF8xNyAmIDB4 MSkgIT0gKHRlc3RfYml0KGksIG9iai0+Yml0XzE3KSAhPSAwKSkgewogCQkJaTkxNV9nZW1fc3dp enpsZV9wYWdlKHBhZ2UpOwogCQkJc2V0X3BhZ2VfZGlydHkocGFnZSk7CiAJCX0KQEAgLTY3OCwx NyArNjc5LDE5IEBAIGk5MTVfZ2VtX29iamVjdF9kb19iaXRfMTdfc3dpenpsZShzdHJ1Y3QgZHJt X2k5MTVfZ2VtX29iamVjdCAqb2JqKQogLyoqCiAgKiBpOTE1X2dlbV9vYmplY3Rfc2F2ZV9iaXRf MTdfc3dpenpsZSAtIHNhdmUgYml0IDE3IHN3aXp6bGluZwogICogQG9iajogaTkxNSBHRU0gYnVm ZmVyIG9iamVjdAorICogQHBhZ2VzOiB0aGUgc2NhdHRlcmdhdGhlciBsaXN0IG9mIHBoeXNpY2Fs IHBhZ2VzCiAgKgogICogVGhpcyBmdW5jdGlvbiBzYXZlcyB0aGUgYml0IDE3IG9mIGVhY2ggcGFn ZSBmcmFtZSBudW1iZXIgc28gdGhhdCBzd2l6emxpbmcKICAqIGNhbiBiZSBmaXhlZCB1cCBsYXRl ciBvbiB3aXRoIGk5MTVfZ2VtX29iamVjdF9kb19iaXRfMTdfc3dpenpsZSgpLiBUaGlzIG11c3QK ICAqIGJlIGNhbGxlZCBiZWZvcmUgdGhlIGJhY2tpbmcgc3RvcmFnZSBjYW4gYmUgdW5waW5uZWQu CiAgKi8KIHZvaWQKLWk5MTVfZ2VtX29iamVjdF9zYXZlX2JpdF8xN19zd2l6emxlKHN0cnVjdCBk cm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCitpOTE1X2dlbV9vYmplY3Rfc2F2ZV9iaXRfMTdfc3dp enpsZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAorCQkJCSAgICBzdHJ1Y3Qgc2df dGFibGUgKnBhZ2VzKQogeworCWNvbnN0IHVuc2lnbmVkIGludCBwYWdlX2NvdW50ID0gb2JqLT5i YXNlLnNpemUgPj4gUEFHRV9TSElGVDsKIAlzdHJ1Y3Qgc2d0X2l0ZXIgc2d0X2l0ZXI7CiAJc3Ry dWN0IHBhZ2UgKnBhZ2U7Ci0JaW50IHBhZ2VfY291bnQgPSBvYmotPmJhc2Uuc2l6ZSA+PiBQQUdF X1NISUZUOwogCWludCBpOwogCiAJaWYgKG9iai0+Yml0XzE3ID09IE5VTEwpIHsKQEAgLTcwMyw3 ICs3MDYsNyBAQCBpOTE1X2dlbV9vYmplY3Rfc2F2ZV9iaXRfMTdfc3dpenpsZShzdHJ1Y3QgZHJt X2k5MTVfZ2VtX29iamVjdCAqb2JqKQogCiAJaSA9IDA7CiAKLQlmb3JfZWFjaF9zZ3RfcGFnZShw YWdlLCBzZ3RfaXRlciwgb2JqLT5tbS5wYWdlcykgeworCWZvcl9lYWNoX3NndF9wYWdlKHBhZ2Us IHNndF9pdGVyLCBwYWdlcykgewogCQlpZiAocGFnZV90b19waHlzKHBhZ2UpICYgKDEgPDwgMTcp KQogCQkJX19zZXRfYml0KGksIG9iai0+Yml0XzE3KTsKIAkJZWxzZQpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV9ndHQuYwppbmRleCA3OTRjY2M0Y2ZmYWEuLjEwMDgyMDljYTc5NyAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMKQEAgLTIzNzAsMTQgKzIzNzAsMTUgQEAgdm9pZCBpOTE1 X2dlbV9zdXNwZW5kX2d0dF9tYXBwaW5ncyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCWk5MTVf Z2d0dF9mbHVzaChkZXZfcHJpdik7CiB9CiAKLWludCBpOTE1X2dlbV9ndHRfcHJlcGFyZV9vYmpl Y3Qoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKK2ludCBpOTE1X2dlbV9ndHRfcHJl cGFyZV9wYWdlcyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAorCQkJICAgICAgIHN0 cnVjdCBzZ190YWJsZSAqcGFnZXMpCiB7Ci0JaWYgKCFkbWFfbWFwX3NnKCZvYmotPmJhc2UuZGV2 LT5wZGV2LT5kZXYsCi0JCQlvYmotPm1tLnBhZ2VzLT5zZ2wsIG9iai0+bW0ucGFnZXMtPm5lbnRz LAotCQkJUENJX0RNQV9CSURJUkVDVElPTkFMKSkKLQkJcmV0dXJuIC1FTk9TUEM7CisJaWYgKGRt YV9tYXBfc2coJm9iai0+YmFzZS5kZXYtPnBkZXYtPmRldiwKKwkJICAgICAgIHBhZ2VzLT5zZ2ws IHBhZ2VzLT5uZW50cywKKwkJICAgICAgIFBDSV9ETUFfQklESVJFQ1RJT05BTCkpCisJCXJldHVy biAwOwogCi0JcmV0dXJuIDA7CisJcmV0dXJuIC1FTk9TUEM7CiB9CiAKIHN0YXRpYyB2b2lkIGdl bjhfc2V0X3B0ZSh2b2lkIF9faW9tZW0gKmFkZHIsIGdlbjhfcHRlX3QgcHRlKQpAQCAtMjY5Niw3 ICsyNjk3LDggQEAgc3RhdGljIHZvaWQgZ2d0dF91bmJpbmRfdm1hKHN0cnVjdCBpOTE1X3ZtYSAq dm1hKQogCQkJCQkgdm1hLT5ub2RlLnN0YXJ0LCBzaXplKTsKIH0KIAotdm9pZCBpOTE1X2dlbV9n dHRfZmluaXNoX29iamVjdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQordm9pZCBp OTE1X2dlbV9ndHRfZmluaXNoX3BhZ2VzKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmos CisJCQkgICAgICAgc3RydWN0IHNnX3RhYmxlICpwYWdlcykKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KG9iai0+YmFzZS5kZXYpOwogCXN0cnVjdCBkZXZp Y2UgKmtkZXYgPSAmZGV2X3ByaXYtPmRybS5wZGV2LT5kZXY7CkBAIC0yNzEwLDggKzI3MTIsNyBA QCB2b2lkIGk5MTVfZ2VtX2d0dF9maW5pc2hfb2JqZWN0KHN0cnVjdCBkcm1faTkxNV9nZW1fb2Jq ZWN0ICpvYmopCiAJCX0KIAl9CiAKLQlkbWFfdW5tYXBfc2coa2Rldiwgb2JqLT5tbS5wYWdlcy0+ c2dsLCBvYmotPm1tLnBhZ2VzLT5uZW50cywKLQkJICAgICBQQ0lfRE1BX0JJRElSRUNUSU9OQUwp OworCWRtYV91bm1hcF9zZyhrZGV2LCBwYWdlcy0+c2dsLCBwYWdlcy0+bmVudHMsIFBDSV9ETUFf QklESVJFQ1RJT05BTCk7CiB9CiAKIHN0YXRpYyB2b2lkIGk5MTVfZ3R0X2NvbG9yX2FkanVzdChz dHJ1Y3QgZHJtX21tX25vZGUgKm5vZGUsCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2dlbV9ndHQuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5oCmlu ZGV4IGMyNDFkODE0MzI1NS4uZGJlNmE2Y2VjMjBkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dlbV9ndHQuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bV9ndHQuaApAQCAtNjI4LDggKzYyOCwxMCBAQCB2b2lkIGk5MTVfY2hlY2tfYW5kX2NsZWFyX2Zh dWx0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwogdm9pZCBpOTE1X2dlbV9z dXNwZW5kX2d0dF9tYXBwaW5ncyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKIHZvaWQgaTkxNV9n ZW1fcmVzdG9yZV9ndHRfbWFwcGluZ3Moc3RydWN0IGRybV9kZXZpY2UgKmRldik7CiAKLWludCBf X211c3RfY2hlY2sgaTkxNV9nZW1fZ3R0X3ByZXBhcmVfb2JqZWN0KHN0cnVjdCBkcm1faTkxNV9n ZW1fb2JqZWN0ICpvYmopOwotdm9pZCBpOTE1X2dlbV9ndHRfZmluaXNoX29iamVjdChzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKTsKK2ludCBfX211c3RfY2hlY2sgaTkxNV9nZW1fZ3R0 X3ByZXBhcmVfcGFnZXMoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKKwkJCQkJICAg IHN0cnVjdCBzZ190YWJsZSAqcGFnZXMpOwordm9pZCBpOTE1X2dlbV9ndHRfZmluaXNoX3BhZ2Vz KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCisJCQkgICAgICAgc3RydWN0IHNnX3Rh YmxlICpwYWdlcyk7CiAKIC8qIEZsYWdzIHVzZWQgYnkgcGluL2JpbmQmZnJpZW5kcy4gKi8KICNk ZWZpbmUgUElOX05PTkJMT0NLCQlCSVQoMCkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtX2ludGVybmFsLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9p bnRlcm5hbC5jCmluZGV4IDE5NDViOGEyODQ2ZS4uNjMzMWE5MDNkZjhhIDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9pbnRlcm5hbC5jCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ2VtX2ludGVybmFsLmMKQEAgLTM5LDcgKzM5LDggQEAgc3RhdGljIHZv aWQgaW50ZXJuYWxfZnJlZV9wYWdlcyhzdHJ1Y3Qgc2dfdGFibGUgKnN0KQogCWtmcmVlKHN0KTsK IH0KIAotc3RhdGljIGludCBpOTE1X2dlbV9vYmplY3RfZ2V0X3BhZ2VzX2ludGVybmFsKHN0cnVj dCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCitzdGF0aWMgc3RydWN0IHNnX3RhYmxlICoKK2k5 MTVfZ2VtX29iamVjdF9nZXRfcGFnZXNfaW50ZXJuYWwoc3RydWN0IGRybV9pOTE1X2dlbV9vYmpl Y3QgKm9iaikKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IHRvX2k5MTUob2Jq LT5iYXNlLmRldik7CiAJdW5zaWduZWQgaW50IG5wYWdlcyA9IG9iai0+YmFzZS5zaXplIC8gUEFH RV9TSVpFOwpAQCAtNTAsMTEgKzUxLDExIEBAIHN0YXRpYyBpbnQgaTkxNV9nZW1fb2JqZWN0X2dl dF9wYWdlc19pbnRlcm5hbChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQogCiAJc3Qg PSBrbWFsbG9jKHNpemVvZigqc3QpLCBHRlBfS0VSTkVMKTsKIAlpZiAoIXN0KQotCQlyZXR1cm4g LUVOT01FTTsKKwkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7CiAKIAlpZiAoc2dfYWxsb2NfdGFi bGUoc3QsIG5wYWdlcywgR0ZQX0tFUk5FTCkpIHsKIAkJa2ZyZWUoc3QpOwotCQlyZXR1cm4gLUVO T01FTTsKKwkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7CiAJfQogCiAJc2cgPSBzdC0+c2dsOwpA QCAtOTksMTIgKzEwMCw5IEBAIHN0YXRpYyBpbnQgaTkxNV9nZW1fb2JqZWN0X2dldF9wYWdlc19p bnRlcm5hbChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQogCiAJCXNnID0gX19zZ19u ZXh0KHNnKTsKIAl9IHdoaWxlICgxKTsKLQlvYmotPm1tLnBhZ2VzID0gc3Q7CiAKLQlpZiAoaTkx NV9nZW1fZ3R0X3ByZXBhcmVfb2JqZWN0KG9iaikpIHsKLQkJb2JqLT5tbS5wYWdlcyA9IE5VTEw7 CisJaWYgKGk5MTVfZ2VtX2d0dF9wcmVwYXJlX3BhZ2VzKG9iaiwgc3QpKQogCQlnb3RvIGVycjsK LQl9CiAKIAkvKiBNYXJrIHRoZSBwYWdlcyBhcyBkb250bmVlZCB3aGlsc3QgdGhleSBhcmUgc3Rp bGwgcGlubmVkLiBBcyBzb29uCiAJICogYXMgdGhleSBhcmUgdW5waW5uZWQgdGhleSBhcmUgYWxs b3dlZCB0byBiZSByZWFwZWQgYnkgdGhlIHNocmlua2VyLApAQCAtMTEyLDE4ICsxMTAsMTkgQEAg c3RhdGljIGludCBpOTE1X2dlbV9vYmplY3RfZ2V0X3BhZ2VzX2ludGVybmFsKHN0cnVjdCBkcm1f aTkxNV9nZW1fb2JqZWN0ICpvYmopCiAJICogb2JqZWN0IGFyZSBvbmx5IHZhbGlkIHdoaWxzdCBh Y3RpdmUgYW5kIHBpbm5lZC4KIAkgKi8KIAlvYmotPm1tLm1hZHYgPSBJOTE1X01BRFZfRE9OVE5F RUQ7Ci0JcmV0dXJuIDA7CisJcmV0dXJuIHN0OwogCiBlcnI6CiAJc2dfbWFya19lbmQoc2cpOwog CWludGVybmFsX2ZyZWVfcGFnZXMoc3QpOwotCXJldHVybiAtRU5PTUVNOworCXJldHVybiBFUlJf UFRSKC1FTk9NRU0pOwogfQogCi1zdGF0aWMgdm9pZCBpOTE1X2dlbV9vYmplY3RfcHV0X3BhZ2Vz X2ludGVybmFsKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCitzdGF0aWMgdm9pZCBp OTE1X2dlbV9vYmplY3RfcHV0X3BhZ2VzX2ludGVybmFsKHN0cnVjdCBkcm1faTkxNV9nZW1fb2Jq ZWN0ICpvYmosCisJCQkJCSAgICAgICBzdHJ1Y3Qgc2dfdGFibGUgKnBhZ2VzKQogewotCWk5MTVf Z2VtX2d0dF9maW5pc2hfb2JqZWN0KG9iaik7Ci0JaW50ZXJuYWxfZnJlZV9wYWdlcyhvYmotPm1t LnBhZ2VzKTsKKwlpOTE1X2dlbV9ndHRfZmluaXNoX3BhZ2VzKG9iaiwgcGFnZXMpOworCWludGVy bmFsX2ZyZWVfcGFnZXMocGFnZXMpOwogCiAJb2JqLT5tbS5kaXJ0eSA9IGZhbHNlOwogCW9iai0+ bW0ubWFkdiA9IEk5MTVfTUFEVl9XSUxMTkVFRDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ2VtX3Nocmlua2VyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bV9zaHJpbmtlci5jCmluZGV4IDEyNGY2OWE4MDE2Mi4uZjk1MDYxZmFlYWU2IDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9zaHJpbmtlci5jCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtX3Nocmlua2VyLmMKQEAgLTkxLDYgKzkxLDEzIEBAIHN0YXRp YyBib29sIGNhbl9yZWxlYXNlX3BhZ2VzKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmop CiAJcmV0dXJuIHN3YXBfYXZhaWxhYmxlKCkgfHwgb2JqLT5tbS5tYWR2ID09IEk5MTVfTUFEVl9E T05UTkVFRDsKIH0KIAorc3RhdGljIGJvb2wgdW5zYWZlX2Ryb3BfcGFnZXMoc3RydWN0IGRybV9p OTE1X2dlbV9vYmplY3QgKm9iaikKK3sKKwlpZiAoaTkxNV9nZW1fb2JqZWN0X3VuYmluZChvYmop ID09IDApCisJCV9faTkxNV9nZW1fb2JqZWN0X3B1dF9wYWdlcyhvYmopOworCXJldHVybiAhb2Jq LT5tbS5wYWdlczsKK30KKwogLyoqCiAgKiBpOTE1X2dlbV9zaHJpbmsgLSBTaHJpbmsgYnVmZmVy IG9iamVjdCBjYWNoZXMKICAqIEBkZXZfcHJpdjogaTkxNSBkZXZpY2UKQEAgLTE5Miw5ICsxOTks NyBAQCBpOTE1X2dlbV9zaHJpbmsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAog CiAJCQlpOTE1X2dlbV9vYmplY3RfZ2V0KG9iaik7CiAKLQkJCS8qIEZvciB0aGUgdW5ib3VuZCBw aGFzZSwgdGhpcyBzaG91bGQgYmUgYSBuby1vcCEgKi8KLQkJCWk5MTVfZ2VtX29iamVjdF91bmJp bmQob2JqKTsKLQkJCWlmIChfX2k5MTVfZ2VtX29iamVjdF9wdXRfcGFnZXMob2JqKSA9PSAwKQor CQkJaWYgKHVuc2FmZV9kcm9wX3BhZ2VzKG9iaikpCiAJCQkJY291bnQgKz0gb2JqLT5iYXNlLnNp emUgPj4gUEFHRV9TSElGVDsKIAogCQkJaTkxNV9nZW1fb2JqZWN0X3B1dChvYmopOwpkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fc3RvbGVuLmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbV9zdG9sZW4uYwppbmRleCAwYWNiZGNiZDhmM2EuLjFhNjNmZmE0 ZDE4OSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fc3RvbGVuLmMK KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fc3RvbGVuLmMKQEAgLTU0NiwxNyAr NTQ2LDIwIEBAIGk5MTVfcGFnZXNfY3JlYXRlX2Zvcl9zdG9sZW4oc3RydWN0IGRybV9kZXZpY2Ug KmRldiwKIAlyZXR1cm4gc3Q7CiB9CiAKLXN0YXRpYyBpbnQgaTkxNV9nZW1fb2JqZWN0X2dldF9w YWdlc19zdG9sZW4oc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKK3N0YXRpYyBzdHJ1 Y3Qgc2dfdGFibGUgKgoraTkxNV9nZW1fb2JqZWN0X2dldF9wYWdlc19zdG9sZW4oc3RydWN0IGRy bV9pOTE1X2dlbV9vYmplY3QgKm9iaikKIHsKLQlCVUcoKTsKLQlyZXR1cm4gLUVJTlZBTDsKKwly ZXR1cm4gaTkxNV9wYWdlc19jcmVhdGVfZm9yX3N0b2xlbihvYmotPmJhc2UuZGV2LAorCQkJCQkg ICAgb2JqLT5zdG9sZW4tPnN0YXJ0LAorCQkJCQkgICAgb2JqLT5zdG9sZW4tPnNpemUpOwogfQog Ci1zdGF0aWMgdm9pZCBpOTE1X2dlbV9vYmplY3RfcHV0X3BhZ2VzX3N0b2xlbihzdHJ1Y3QgZHJt X2k5MTVfZ2VtX29iamVjdCAqb2JqKQorc3RhdGljIHZvaWQgaTkxNV9nZW1fb2JqZWN0X3B1dF9w YWdlc19zdG9sZW4oc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKKwkJCQkJICAgICBz dHJ1Y3Qgc2dfdGFibGUgKnBhZ2VzKQogewogCS8qIFNob3VsZCBvbmx5IGJlIGNhbGxlZCBkdXJp bmcgZnJlZSAqLwotCXNnX2ZyZWVfdGFibGUob2JqLT5tbS5wYWdlcyk7Ci0Ja2ZyZWUob2JqLT5t bS5wYWdlcyk7CisJc2dfZnJlZV90YWJsZShwYWdlcyk7CisJa2ZyZWUocGFnZXMpOwogfQogCiBz dGF0aWMgdm9pZApAQCAtNTkxLDIxICs1OTQsMTMgQEAgX2k5MTVfZ2VtX29iamVjdF9jcmVhdGVf c3RvbGVuKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJZHJtX2dlbV9wcml2YXRlX29iamVjdF9p bml0KGRldiwgJm9iai0+YmFzZSwgc3RvbGVuLT5zaXplKTsKIAlpOTE1X2dlbV9vYmplY3RfaW5p dChvYmosICZpOTE1X2dlbV9vYmplY3Rfc3RvbGVuX29wcyk7CiAKLQlvYmotPm1tLnBhZ2VzID0g aTkxNV9wYWdlc19jcmVhdGVfZm9yX3N0b2xlbihkZXYsCi0JCQkJCQkgICAgIHN0b2xlbi0+c3Rh cnQsCi0JCQkJCQkgICAgIHN0b2xlbi0+c2l6ZSk7Ci0JaWYgKCFvYmotPm1tLnBhZ2VzKQotCQln b3RvIGNsZWFudXA7Ci0KLQlvYmotPm1tLmdldF9wYWdlLnNnX3BvcyA9IG9iai0+bW0ucGFnZXMt PnNnbDsKLQlvYmotPm1tLmdldF9wYWdlLnNnX2lkeCA9IDA7Ci0KLQlfX2k5MTVfZ2VtX29iamVj dF9waW5fcGFnZXMob2JqKTsKIAlvYmotPnN0b2xlbiA9IHN0b2xlbjsKLQogCW9iai0+YmFzZS5y ZWFkX2RvbWFpbnMgPSBJOTE1X0dFTV9ET01BSU5fQ1BVIHwgSTkxNV9HRU1fRE9NQUlOX0dUVDsK IAlvYmotPmNhY2hlX2xldmVsID0gSEFTX0xMQyhkZXYpID8gSTkxNV9DQUNIRV9MTEMgOiBJOTE1 X0NBQ0hFX05PTkU7CiAKKwlpZiAoaTkxNV9nZW1fb2JqZWN0X3Bpbl9wYWdlcyhvYmopKQorCQln b3RvIGNsZWFudXA7CisKIAlyZXR1cm4gb2JqOwogCiBjbGVhbnVwOgpAQCAtNzAwLDEwICs2OTUs MTQgQEAgaTkxNV9nZW1fb2JqZWN0X2NyZWF0ZV9zdG9sZW5fZm9yX3ByZWFsbG9jYXRlZChzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LAogCWlmIChndHRfb2Zmc2V0ID09IEk5MTVfR1RUX09GRlNFVF9O T05FKQogCQlyZXR1cm4gb2JqOwogCisJcmV0ID0gaTkxNV9nZW1fb2JqZWN0X3Bpbl9wYWdlcyhv YmopOworCWlmIChyZXQpCisJCWdvdG8gZXJyOworCiAJdm1hID0gaTkxNV9nZW1fb2JqX2xvb2t1 cF9vcl9jcmVhdGVfdm1hKG9iaiwgJmdndHQtPmJhc2UsIE5VTEwpOwogCWlmIChJU19FUlIodm1h KSkgewogCQlyZXQgPSBQVFJfRVJSKHZtYSk7Ci0JCWdvdG8gZXJyOworCQlnb3RvIGVycl9wYWdl czsKIAl9CiAKIAkvKiBUbyBzaW1wbGlmeSB0aGUgaW5pdGlhbGlzYXRpb24gc2VxdWVuY2UgYmV0 d2VlbiBLTVMgYW5kIEdUVCwKQEAgLTcxNywyMCArNzE2LDIwIEBAIGk5MTVfZ2VtX29iamVjdF9j cmVhdGVfc3RvbGVuX2Zvcl9wcmVhbGxvY2F0ZWQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAly ZXQgPSBkcm1fbW1fcmVzZXJ2ZV9ub2RlKCZnZ3R0LT5iYXNlLm1tLCAmdm1hLT5ub2RlKTsKIAlp ZiAocmV0KSB7CiAJCURSTV9ERUJVR19LTVMoImZhaWxlZCB0byBhbGxvY2F0ZSBzdG9sZW4gR1RU IHNwYWNlXG4iKTsKLQkJZ290byBlcnI7CisJCWdvdG8gZXJyX3BhZ2VzOwogCX0KIAogCXZtYS0+ cGFnZXMgPSBvYmotPm1tLnBhZ2VzOwogCXZtYS0+ZmxhZ3MgfD0gSTkxNV9WTUFfR0xPQkFMX0JJ TkQ7CiAJX19pOTE1X3ZtYV9zZXRfbWFwX2FuZF9mZW5jZWFibGUodm1hKTsKIAlsaXN0X21vdmVf dGFpbCgmdm1hLT52bV9saW5rLCAmZ2d0dC0+YmFzZS5pbmFjdGl2ZV9saXN0KTsKKwlsaXN0X21v dmVfdGFpbCgmb2JqLT5nbG9iYWxfbGlzdCwgJmRldl9wcml2LT5tbS5ib3VuZF9saXN0KTsKIAlv YmotPmJpbmRfY291bnQrKzsKIAotCWxpc3RfYWRkX3RhaWwoJm9iai0+Z2xvYmFsX2xpc3QsICZk ZXZfcHJpdi0+bW0uYm91bmRfbGlzdCk7Ci0JX19pOTE1X2dlbV9vYmplY3RfcGluX3BhZ2VzKG9i aik7Ci0KIAlyZXR1cm4gb2JqOwogCitlcnJfcGFnZXM6CisJaTkxNV9nZW1fb2JqZWN0X3VucGlu X3BhZ2VzKG9iaik7CiBlcnI6CiAJaTkxNV9nZW1fb2JqZWN0X3B1dChvYmopOwogCXJldHVybiBO VUxMOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fdXNlcnB0ci5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fdXNlcnB0ci5jCmluZGV4IDBmZGQxZDY3 MjNkMS4uZTk3YzdiNTg5NDM5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbV91c2VycHRyLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fdXNlcnB0 ci5jCkBAIC03MywxMSArNzMsMTQgQEAgc3RhdGljIHZvaWQgY2FuY2VsX3VzZXJwdHIoc3RydWN0 IHdvcmtfc3RydWN0ICp3b3JrKQogCS8qIENhbmNlbCBhbnkgYWN0aXZlIHdvcmtlciBhbmQgZm9y Y2UgdXMgdG8gcmUtZXZhbHVhdGUgZ3VwICovCiAJb2JqLT51c2VycHRyLndvcmsgPSBOVUxMOwog Ci0JaWYgKG9iai0+bW0ucGFnZXMpIHsKLQkJLyogV2UgYXJlIGluc2lkZSBhIGt0aHJlYWQgY29u dGV4dCBhbmQgY2FuJ3QgYmUgaW50ZXJydXB0ZWQgKi8KLQkJV0FSTl9PTihpOTE1X2dlbV9vYmpl Y3RfdW5iaW5kKG9iaikpOwotCQlXQVJOX09OKF9faTkxNV9nZW1fb2JqZWN0X3B1dF9wYWdlcyhv YmopKTsKLQl9CisJLyogV2UgYXJlIGluc2lkZSBhIGt0aHJlYWQgY29udGV4dCBhbmQgY2FuJ3Qg YmUgaW50ZXJydXB0ZWQgKi8KKwlpZiAoaTkxNV9nZW1fb2JqZWN0X3VuYmluZChvYmopID09IDAp CisJCV9faTkxNV9nZW1fb2JqZWN0X3B1dF9wYWdlcyhvYmopOworCVdBUk5fT05DRShvYmotPm1t LnBhZ2VzLAorCQkgICJGYWlsZWQgdG8gcmVsZWFzZSBwYWdlczogYmluZF9jb3VudD0lZCwgcGFn ZXNfcGluX2NvdW50PSVkLCBwaW5fZGlzcGxheT0lZFxuIiwKKwkJICBvYmotPmJpbmRfY291bnQs CisJCSAgb2JqLT5tbS5wYWdlc19waW5fY291bnQsCisJCSAgb2JqLT5waW5fZGlzcGxheSk7CiAK IAlpOTE1X2dlbV9vYmplY3RfcHV0KG9iaik7CiAJbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9t dXRleCk7CkBAIC00MjYsMjQgKzQyOSwyNSBAQCBzdF9zZXRfcGFnZXMoc3RydWN0IHNnX3RhYmxl ICoqc3QsIHN0cnVjdCBwYWdlICoqcHZlYywgaW50IG51bV9wYWdlcykKIAlyZXR1cm4gcmV0Owog fQogCi1zdGF0aWMgaW50CitzdGF0aWMgc3RydWN0IHNnX3RhYmxlICoKIF9faTkxNV9nZW1fdXNl cnB0cl9zZXRfcGFnZXMoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKIAkJCSAgICAg c3RydWN0IHBhZ2UgKipwdmVjLCBpbnQgbnVtX3BhZ2VzKQogeworCXN0cnVjdCBzZ190YWJsZSAq cGFnZXM7CiAJaW50IHJldDsKIAotCXJldCA9IHN0X3NldF9wYWdlcygmb2JqLT5tbS5wYWdlcywg cHZlYywgbnVtX3BhZ2VzKTsKKwlyZXQgPSBzdF9zZXRfcGFnZXMoJnBhZ2VzLCBwdmVjLCBudW1f cGFnZXMpOwogCWlmIChyZXQpCi0JCXJldHVybiByZXQ7CisJCXJldHVybiBFUlJfUFRSKHJldCk7 CiAKLQlyZXQgPSBpOTE1X2dlbV9ndHRfcHJlcGFyZV9vYmplY3Qob2JqKTsKKwlyZXQgPSBpOTE1 X2dlbV9ndHRfcHJlcGFyZV9wYWdlcyhvYmosIHBhZ2VzKTsKIAlpZiAocmV0KSB7Ci0JCXNnX2Zy ZWVfdGFibGUob2JqLT5tbS5wYWdlcyk7Ci0JCWtmcmVlKG9iai0+bW0ucGFnZXMpOwotCQlvYmot Pm1tLnBhZ2VzID0gTlVMTDsKKwkJc2dfZnJlZV90YWJsZShwYWdlcyk7CisJCWtmcmVlKHBhZ2Vz KTsKKwkJcmV0dXJuIEVSUl9QVFIocmV0KTsKIAl9CiAKLQlyZXR1cm4gcmV0OworCXJldHVybiBw YWdlczsKIH0KIAogc3RhdGljIGludApAQCAtNTIxLDIwICs1MjUsMjAgQEAgX19pOTE1X2dlbV91 c2VycHRyX2dldF9wYWdlc193b3JrZXIoc3RydWN0IHdvcmtfc3RydWN0ICpfd29yaykKIAogCW11 dGV4X2xvY2soJmRldi0+c3RydWN0X211dGV4KTsKIAlpZiAob2JqLT51c2VycHRyLndvcmsgPT0g JndvcmstPndvcmspIHsKKwkJc3RydWN0IHNnX3RhYmxlICpwYWdlcyA9IEVSUl9QVFIocmV0KTsK KwogCQlpZiAocGlubmVkID09IG5wYWdlcykgewotCQkJcmV0ID0gX19pOTE1X2dlbV91c2VycHRy X3NldF9wYWdlcyhvYmosIHB2ZWMsIG5wYWdlcyk7Ci0JCQlpZiAocmV0ID09IDApIHsKLQkJCQls aXN0X2FkZF90YWlsKCZvYmotPmdsb2JhbF9saXN0LAotCQkJCQkgICAgICAmdG9faTkxNShkZXYp LT5tbS51bmJvdW5kX2xpc3QpOwotCQkJCW9iai0+bW0uZ2V0X3BhZ2Uuc2dfcG9zID0gb2JqLT5t bS5wYWdlcy0+c2dsOwotCQkJCW9iai0+bW0uZ2V0X3BhZ2Uuc2dfaWR4ID0gMDsKKwkJCXBhZ2Vz ID0gX19pOTE1X2dlbV91c2VycHRyX3NldF9wYWdlcyhvYmosIHB2ZWMsIG5wYWdlcyk7CisJCQlp ZiAoIUlTX0VSUihwYWdlcykpIHsKKwkJCQlfX2k5MTVfZ2VtX29iamVjdF9zZXRfcGFnZXMob2Jq LCBwYWdlcyk7CiAJCQkJcGlubmVkID0gMDsKKwkJCQlwYWdlcyA9IE5VTEw7CiAJCQl9CiAJCX0K LQkJb2JqLT51c2VycHRyLndvcmsgPSBFUlJfUFRSKHJldCk7CisKKwkJb2JqLT51c2VycHRyLndv cmsgPSBFUlJfQ0FTVChwYWdlcyk7CiAJfQogCi0Jb2JqLT51c2VycHRyLndvcmtlcnMtLTsKIAlp OTE1X2dlbV9vYmplY3RfcHV0KG9iaik7CiAJbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRl eCk7CiAKQEAgLTU0NSw3ICs1NDksNyBAQCBfX2k5MTVfZ2VtX3VzZXJwdHJfZ2V0X3BhZ2VzX3dv cmtlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKl93b3JrKQogCWtmcmVlKHdvcmspOwogfQogCi1zdGF0 aWMgaW50CitzdGF0aWMgc3RydWN0IHNnX3RhYmxlICoKIF9faTkxNV9nZW1fdXNlcnB0cl9nZXRf cGFnZXNfc2NoZWR1bGUoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKIAkJCQkgICAg ICBib29sICphY3RpdmUpCiB7CkBAIC01NzAsMTUgKzU3NCwxMSBAQCBfX2k5MTVfZ2VtX3VzZXJw dHJfZ2V0X3BhZ2VzX3NjaGVkdWxlKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCiAJ ICogdGhhdCBlcnJvciBiYWNrIHRvIHRoaXMgZnVuY3Rpb24gdGhyb3VnaAogCSAqIG9iai0+dXNl cnB0ci53b3JrID0gRVJSX1BUUi4KIAkgKi8KLQlpZiAob2JqLT51c2VycHRyLndvcmtlcnMgPj0g STkxNV9HRU1fVVNFUlBUUl9NQVhfV09SS0VSUykKLQkJcmV0dXJuIC1FQUdBSU47Ci0KIAl3b3Jr ID0ga21hbGxvYyhzaXplb2YoKndvcmspLCBHRlBfS0VSTkVMKTsKIAlpZiAod29yayA9PSBOVUxM KQotCQlyZXR1cm4gLUVOT01FTTsKKwkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7CiAKIAlvYmot PnVzZXJwdHIud29yayA9ICZ3b3JrLT53b3JrOwotCW9iai0+dXNlcnB0ci53b3JrZXJzKys7CiAK IAl3b3JrLT5vYmogPSBpOTE1X2dlbV9vYmplY3RfZ2V0KG9iaik7CiAKQEAgLTU4OSwxNCArNTg5 LDE1IEBAIF9faTkxNV9nZW1fdXNlcnB0cl9nZXRfcGFnZXNfc2NoZWR1bGUoc3RydWN0IGRybV9p OTE1X2dlbV9vYmplY3QgKm9iaiwKIAlzY2hlZHVsZV93b3JrKCZ3b3JrLT53b3JrKTsKIAogCSph Y3RpdmUgPSB0cnVlOwotCXJldHVybiAtRUFHQUlOOworCXJldHVybiBFUlJfUFRSKC1FQUdBSU4p OwogfQogCi1zdGF0aWMgaW50CitzdGF0aWMgc3RydWN0IHNnX3RhYmxlICoKIGk5MTVfZ2VtX3Vz ZXJwdHJfZ2V0X3BhZ2VzKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCiB7CiAJY29u c3QgaW50IG51bV9wYWdlcyA9IG9iai0+YmFzZS5zaXplID4+IFBBR0VfU0hJRlQ7CiAJc3RydWN0 IHBhZ2UgKipwdmVjOworCXN0cnVjdCBzZ190YWJsZSAqcGFnZXM7CiAJaW50IHBpbm5lZCwgcmV0 OwogCWJvb2wgYWN0aXZlOwogCkBAIC02MjAsMTUgKzYyMSwxNSBAQCBpOTE1X2dlbV91c2VycHRy X2dldF9wYWdlcyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQogCWlmIChvYmotPnVz ZXJwdHIud29yaykgewogCQkvKiBhY3RpdmUgZmxhZyBzaG91bGQgc3RpbGwgYmUgaGVsZCBmb3Ig dGhlIHBlbmRpbmcgd29yayAqLwogCQlpZiAoSVNfRVJSKG9iai0+dXNlcnB0ci53b3JrKSkKLQkJ CXJldHVybiBQVFJfRVJSKG9iai0+dXNlcnB0ci53b3JrKTsKKwkJCXJldHVybiBFUlJfQ0FTVChv YmotPnVzZXJwdHIud29yayk7CiAJCWVsc2UKLQkJCXJldHVybiAtRUFHQUlOOworCQkJcmV0dXJu IEVSUl9QVFIoLUVBR0FJTik7CiAJfQogCiAJLyogTGV0IHRoZSBtbXUtbm90aWZpZXIga25vdyB0 aGF0IHdlIGhhdmUgYmVndW4gYW5kIG5lZWQgY2FuY2VsbGF0aW9uICovCiAJcmV0ID0gX19pOTE1 X2dlbV91c2VycHRyX3NldF9hY3RpdmUob2JqLCB0cnVlKTsKIAlpZiAocmV0KQotCQlyZXR1cm4g cmV0OworCQlyZXR1cm4gRVJSX1BUUihyZXQpOwogCiAJcHZlYyA9IE5VTEw7CiAJcGlubmVkID0g MDsKQEAgLTYzNyw3ICs2MzgsNyBAQCBpOTE1X2dlbV91c2VycHRyX2dldF9wYWdlcyhzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQogCQkJCSAgICAgIEdGUF9URU1QT1JBUlkpOwogCQlp ZiAocHZlYyA9PSBOVUxMKSB7CiAJCQlfX2k5MTVfZ2VtX3VzZXJwdHJfc2V0X2FjdGl2ZShvYmos IGZhbHNlKTsKLQkJCXJldHVybiAtRU5PTUVNOworCQkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7 CiAJCX0KIAogCQlwaW5uZWQgPSBfX2dldF91c2VyX3BhZ2VzX2Zhc3Qob2JqLT51c2VycHRyLnB0 ciwgbnVtX3BhZ2VzLApAQCAtNjQ2LDIxICs2NDcsMjIgQEAgaTkxNV9nZW1fdXNlcnB0cl9nZXRf cGFnZXMoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKIAogCWFjdGl2ZSA9IGZhbHNl OwogCWlmIChwaW5uZWQgPCAwKQotCQlyZXQgPSBwaW5uZWQsIHBpbm5lZCA9IDA7CisJCXBhZ2Vz ID0gRVJSX1BUUihwaW5uZWQpLCBwaW5uZWQgPSAwOwogCWVsc2UgaWYgKHBpbm5lZCA8IG51bV9w YWdlcykKLQkJcmV0ID0gX19pOTE1X2dlbV91c2VycHRyX2dldF9wYWdlc19zY2hlZHVsZShvYmos ICZhY3RpdmUpOworCQlwYWdlcyA9IF9faTkxNV9nZW1fdXNlcnB0cl9nZXRfcGFnZXNfc2NoZWR1 bGUob2JqLCAmYWN0aXZlKTsKIAllbHNlCi0JCXJldCA9IF9faTkxNV9nZW1fdXNlcnB0cl9zZXRf cGFnZXMob2JqLCBwdmVjLCBudW1fcGFnZXMpOwotCWlmIChyZXQpIHsKKwkJcGFnZXMgPSBfX2k5 MTVfZ2VtX3VzZXJwdHJfc2V0X3BhZ2VzKG9iaiwgcHZlYywgbnVtX3BhZ2VzKTsKKwlpZiAoSVNf RVJSKHBhZ2VzKSkgewogCQlfX2k5MTVfZ2VtX3VzZXJwdHJfc2V0X2FjdGl2ZShvYmosIGFjdGl2 ZSk7CiAJCXJlbGVhc2VfcGFnZXMocHZlYywgcGlubmVkLCAwKTsKIAl9CiAJZHJtX2ZyZWVfbGFy Z2UocHZlYyk7Ci0JcmV0dXJuIHJldDsKKwlyZXR1cm4gcGFnZXM7CiB9CiAKIHN0YXRpYyB2b2lk Ci1pOTE1X2dlbV91c2VycHRyX3B1dF9wYWdlcyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAq b2JqKQoraTkxNV9nZW1fdXNlcnB0cl9wdXRfcGFnZXMoc3RydWN0IGRybV9pOTE1X2dlbV9vYmpl Y3QgKm9iaiwKKwkJCSAgIHN0cnVjdCBzZ190YWJsZSAqcGFnZXMpCiB7CiAJc3RydWN0IHNndF9p dGVyIHNndF9pdGVyOwogCXN0cnVjdCBwYWdlICpwYWdlOwpAQCAtNjcxLDkgKzY3Myw5IEBAIGk5 MTVfZ2VtX3VzZXJwdHJfcHV0X3BhZ2VzKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmop CiAJaWYgKG9iai0+bW0ubWFkdiAhPSBJOTE1X01BRFZfV0lMTE5FRUQpCiAJCW9iai0+bW0uZGly dHkgPSBmYWxzZTsKIAotCWk5MTVfZ2VtX2d0dF9maW5pc2hfb2JqZWN0KG9iaik7CisJaTkxNV9n ZW1fZ3R0X2ZpbmlzaF9wYWdlcyhvYmosIHBhZ2VzKTsKIAotCWZvcl9lYWNoX3NndF9wYWdlKHBh Z2UsIHNndF9pdGVyLCBvYmotPm1tLnBhZ2VzKSB7CisJZm9yX2VhY2hfc2d0X3BhZ2UocGFnZSwg c2d0X2l0ZXIsIHBhZ2VzKSB7CiAJCWlmIChvYmotPm1tLmRpcnR5KQogCQkJc2V0X3BhZ2VfZGly dHkocGFnZSk7CiAKQEAgLTY4Miw4ICs2ODQsOCBAQCBpOTE1X2dlbV91c2VycHRyX3B1dF9wYWdl cyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQogCX0KIAlvYmotPm1tLmRpcnR5ID0g ZmFsc2U7CiAKLQlzZ19mcmVlX3RhYmxlKG9iai0+bW0ucGFnZXMpOwotCWtmcmVlKG9iai0+bW0u cGFnZXMpOworCXNnX2ZyZWVfdGFibGUocGFnZXMpOworCWtmcmVlKHBhZ2VzKTsKIH0KIAogc3Rh dGljIHZvaWQKLS0gCjIuOS4zCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVz a3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9p bnRlbC1nZngK