From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 16/38] drm/i915: Pass around sg_table to get_pages/put_pages backend Date: Tue, 20 Sep 2016 09:29:50 +0100 Message-ID: <20160920083012.2754-17-chris@chris-wilson.co.uk> References: <20160920083012.2754-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-wm0-x243.google.com (mail-wm0-x243.google.com [IPv6:2a00:1450:400c:c09::243]) by gabe.freedesktop.org (Postfix) with ESMTPS id 0583B6E689 for ; Tue, 20 Sep 2016 08:30:38 +0000 (UTC) Received: by mail-wm0-x243.google.com with SMTP id 133so2071574wmq.2 for ; Tue, 20 Sep 2016 01:30:38 -0700 (PDT) In-Reply-To: <20160920083012.2754-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 Cc: mika.kuoppala@intel.com List-Id: intel-gfx@lists.freedesktop.org VGhlIHBsYW4gaXMgdG8gbW92ZSBvYmotPnBhZ2VzIG91dCBmcm9tIHVuZGVyIHRoZSBzdHJ1Y3Rf bXV0ZXggaW50byBpdHMKb3duIHBlci1vYmplY3QgbG9jay4gV2UgbmVlZCB0byBwcnVuZSBhbnkg YXNzdW1wdGlvbiBvZiB0aGUgc3RydWN0X211dGV4CmZyb20gdGhlIGdldF9wYWdlcy9wdXRfcGFn ZXMgYmFja2VuZHMsIGFuZCB0byBtYWtlIGl0IGVhc2llciB3ZSBwYXNzCmFyb3VuZCB0aGUgc2df dGFibGUgdG8gb3BlcmF0ZSBvbiByYXRoZXIgdGhhbiBpbmRpcmVjdGx5IHZpYSB0aGUgb2JqLgoK U2lnbmVkLW9mZi1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+Ci0t LQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICAgICB8ICAzNiArKysrKy0t CiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jICAgICAgICAgIHwgMTc0ICsrKysrKysr KysrKysrKy0tLS0tLS0tLS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2Rt YWJ1Zi5jICAgfCAgMjAgKystLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZmVuY2Uu YyAgICB8ICAxNiArLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jICAgICAg fCAgMTkgKystLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmggICAgICB8ICAg NiArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1faW50ZXJuYWwuYyB8ICAyMiArKy0t CiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9zaHJpbmtlci5jIHwgIDExICstCiBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9zdG9sZW4uYyAgIHwgIDQzICsrKystLS0tCiBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV91c2VycHRyLmMgIHwgIDg4ICsrKysrKysrLS0tLS0t LS0KIDEwIGZpbGVzIGNoYW5nZWQsIDIyNiBpbnNlcnRpb25zKCspLCAyMDkgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKaW5kZXggZDUxYTRlYzUxMmZhLi5lMjY3ZjI1ZmNhNmUg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaApAQCAtMjE1Nyw4ICsyMTU3LDggQEAgc3RydWN0IGRy bV9pOTE1X2dlbV9vYmplY3Rfb3BzIHsKIAkgKiBiZWluZyByZWxlYXNlZCBvciB1bmRlciBtZW1v cnkgcHJlc3N1cmUgKHdoZXJlIHdlIGF0dGVtcHQgdG8KIAkgKiByZWFwIHBhZ2VzIGZvciB0aGUg c2hyaW5rZXIpLgogCSAqLwotCWludCAoKmdldF9wYWdlcykoc3RydWN0IGRybV9pOTE1X2dlbV9v YmplY3QgKik7Ci0Jdm9pZCAoKnB1dF9wYWdlcykoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Qg Kik7CisJc3RydWN0IHNnX3RhYmxlICooKmdldF9wYWdlcykoc3RydWN0IGRybV9pOTE1X2dlbV9v YmplY3QgKik7CisJdm9pZCAoKnB1dF9wYWdlcykoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Qg Kiwgc3RydWN0IHNnX3RhYmxlICopOwogCiAJaW50ICgqZG1hYnVmX2V4cG9ydCkoc3RydWN0IGRy bV9pOTE1X2dlbV9vYmplY3QgKik7CiAJdm9pZCAoKnJlbGVhc2UpKHN0cnVjdCBkcm1faTkxNV9n ZW1fb2JqZWN0ICopOwpAQCAtMjMwMCw4ICsyMzAwLDYgQEAgc3RydWN0IGRybV9pOTE1X2dlbV9v YmplY3QgewogCQlzdHJ1Y3QgaTkxNV9nZW1fdXNlcnB0ciB7CiAJCQl1aW50cHRyX3QgcHRyOwog CQkJdW5zaWduZWQgcmVhZF9vbmx5IDoxOwotCQkJdW5zaWduZWQgd29ya2VycyA6NDsKLSNkZWZp bmUgSTkxNV9HRU1fVVNFUlBUUl9NQVhfV09SS0VSUyAxNQogCiAJCQlzdHJ1Y3QgaTkxNV9tbV9z dHJ1Y3QgKm1tOwogCQkJc3RydWN0IGk5MTVfbW11X29iamVjdCAqbW11X29iamVjdDsKQEAgLTIz NjEsNiArMjM1OSwxOSBAQCBfX2RlcHJlY2F0ZWQKIGV4dGVybiB2b2lkIGRybV9nZW1fb2JqZWN0 X3VucmVmZXJlbmNlX3VubG9ja2VkKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqKTsKIAogc3RhdGlj IGlubGluZSBib29sCitpOTE1X2dlbV9vYmplY3RfaXNfZGVhZChjb25zdCBzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX29iamVjdCAqb2JqKQoreworCXJldHVybiBhdG9taWNfcmVhZCgmb2JqLT5iYXNlLnJl ZmNvdW50LnJlZmNvdW50KSA9PSAwOworfQorCisjaWYgSVNfRU5BQkxFRChDT05GSUdfTE9DS0RF UCkKKyNkZWZpbmUgbG9ja2RlcF9hc3NlcnRfaGVsZF91bmxlc3MobG9jaywgY29uZCkgXAorCUdF TV9CVUdfT04oIWxvY2tkZXBfaXNfaGVsZChsb2NrKSAmJiAhKGNvbmQpKQorI2Vsc2UKKyNkZWZp bmUgbG9ja2RlcF9hc3NlcnRfaGVsZF91bmxlc3MobG9jaywgY29uZCkKKyNlbmRpZgorCitzdGF0 aWMgaW5saW5lIGJvb2wKIGk5MTVfZ2VtX29iamVjdF9oYXNfc3RydWN0X3BhZ2UoY29uc3Qgc3Ry dWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKIHsKIAlyZXR1cm4gb2JqLT5vcHMtPmZsYWdz ICYgSTkxNV9HRU1fT0JKRUNUX0hBU19TVFJVQ1RfUEFHRTsKQEAgLTMxNzIsNiArMzE4Myw4IEBA IGRtYV9hZGRyX3QKIGk5MTVfZ2VtX29iamVjdF9nZXRfZG1hX2FkZHJlc3Moc3RydWN0IGRybV9p OTE1X2dlbV9vYmplY3QgKm9iaiwKIAkJCQl1bnNpZ25lZCBsb25nIG4pOwogCit2b2lkIF9faTkx NV9nZW1fb2JqZWN0X3NldF9wYWdlcyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAor CQkJCSBzdHJ1Y3Qgc2dfdGFibGUgKnBhZ2VzKTsKIGludCBfX2k5MTVfZ2VtX29iamVjdF9nZXRf cGFnZXMoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaik7CiAKIHN0YXRpYyBpbmxpbmUg aW50IF9fbXVzdF9jaGVjawpAQCAtMzE4Nyw3ICszMjAwLDggQEAgaTkxNV9nZW1fb2JqZWN0X3Bp bl9wYWdlcyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQogc3RhdGljIGlubGluZSB2 b2lkCiBfX2k5MTVfZ2VtX29iamVjdF9waW5fcGFnZXMoc3RydWN0IGRybV9pOTE1X2dlbV9vYmpl Y3QgKm9iaikKIHsKLQlsb2NrZGVwX2Fzc2VydF9oZWxkKCZvYmotPmJhc2UuZGV2LT5zdHJ1Y3Rf bXV0ZXgpOworCWxvY2tkZXBfYXNzZXJ0X2hlbGRfdW5sZXNzKCZvYmotPmJhc2UuZGV2LT5zdHJ1 Y3RfbXV0ZXgsCisJCQkJICAgaTkxNV9nZW1fb2JqZWN0X2lzX2RlYWQob2JqKSk7CiAJR0VNX0JV R19PTighb2JqLT5tbS5wYWdlcyk7CiAJb2JqLT5tbS5wYWdlc19waW5fY291bnQrKzsKIH0KQEAg LTMyMDEsNyArMzIxNSw4IEBAIGk5MTVfZ2VtX29iamVjdF9oYXNfcGlubmVkX3BhZ2VzKHN0cnVj dCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCiBzdGF0aWMgaW5saW5lIHZvaWQKIF9faTkxNV9n ZW1fb2JqZWN0X3VucGluX3BhZ2VzKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCiB7 Ci0JbG9ja2RlcF9hc3NlcnRfaGVsZCgmb2JqLT5iYXNlLmRldi0+c3RydWN0X211dGV4KTsKKwls b2NrZGVwX2Fzc2VydF9oZWxkX3VubGVzcygmb2JqLT5iYXNlLmRldi0+c3RydWN0X211dGV4LAor CQkJCSAgIGk5MTVfZ2VtX29iamVjdF9pc19kZWFkKG9iaikpOwogCUdFTV9CVUdfT04oIWk5MTVf Z2VtX29iamVjdF9oYXNfcGlubmVkX3BhZ2VzKG9iaikpOwogCUdFTV9CVUdfT04oIW9iai0+bW0u cGFnZXMpOwogCW9iai0+bW0ucGFnZXNfcGluX2NvdW50LS07CkBAIC0zMjEyLDcgKzMyMjcsOCBA QCBzdGF0aWMgaW5saW5lIHZvaWQgaTkxNV9nZW1fb2JqZWN0X3VucGluX3BhZ2VzKHN0cnVjdCBk cm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCiAJX19pOTE1X2dlbV9vYmplY3RfdW5waW5fcGFnZXMo b2JqKTsKIH0KIAotaW50IF9faTkxNV9nZW1fb2JqZWN0X3B1dF9wYWdlcyhzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX29iamVjdCAqb2JqKTsKK3ZvaWQgX19pOTE1X2dlbV9vYmplY3RfcHV0X3BhZ2VzKHN0 cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopOwordm9pZCBfX2k5MTVfZ2VtX29iamVjdF9p bnZhbGlkYXRlKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopOwogCiBlbnVtIGk5MTVf bWFwX3R5cGUgewogCUk5MTVfTUFQX1dCID0gMCwKQEAgLTM0MzUsOCArMzQ1MSwxMCBAQCBpOTE1 X3ZtYV91bnBpbl9mZW5jZShzdHJ1Y3QgaTkxNV92bWEgKnZtYSkKIHZvaWQgaTkxNV9nZW1fcmVz dG9yZV9mZW5jZXMoc3RydWN0IGRybV9kZXZpY2UgKmRldik7CiAKIHZvaWQgaTkxNV9nZW1fZGV0 ZWN0X2JpdF82X3N3aXp6bGUoc3RydWN0IGRybV9kZXZpY2UgKmRldik7Ci12b2lkIGk5MTVfZ2Vt X29iamVjdF9kb19iaXRfMTdfc3dpenpsZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2Jq KTsKLXZvaWQgaTkxNV9nZW1fb2JqZWN0X3NhdmVfYml0XzE3X3N3aXp6bGUoc3RydWN0IGRybV9p OTE1X2dlbV9vYmplY3QgKm9iaik7Cit2b2lkIGk5MTVfZ2VtX29iamVjdF9kb19iaXRfMTdfc3dp enpsZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAorCQkJCSAgICAgICBzdHJ1Y3Qg c2dfdGFibGUgKnBhZ2VzKTsKK3ZvaWQgaTkxNV9nZW1fb2JqZWN0X3NhdmVfYml0XzE3X3N3aXp6 bGUoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKKwkJCQkJIHN0cnVjdCBzZ190YWJs ZSAqcGFnZXMpOwogCiAvKiBpOTE1X2dlbV9jb250ZXh0LmMgKi8KIGludCBfX211c3RfY2hlY2sg aTkxNV9nZW1fY29udGV4dF9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtLmMKaW5kZXggODNkNjhlMDY5MzgyLi44OGVkMDc1NzVmNWMgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW0uYwpAQCAtMTY5LDcgKzE2OSw3IEBAIGk5MTVfZ2VtX2dldF9hcGVydHVyZV9p b2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCXJldHVybiAwOwogfQog Ci1zdGF0aWMgaW50CitzdGF0aWMgc3RydWN0IHNnX3RhYmxlICoKIGk5MTVfZ2VtX29iamVjdF9n ZXRfcGFnZXNfcGh5cyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQogewogCXN0cnVj dCBhZGRyZXNzX3NwYWNlICptYXBwaW5nID0gb2JqLT5iYXNlLmZpbHAtPmZfbWFwcGluZzsKQEAg LTE3OSw3ICsxNzksNyBAQCBpOTE1X2dlbV9vYmplY3RfZ2V0X3BhZ2VzX3BoeXMoc3RydWN0IGRy bV9pOTE1X2dlbV9vYmplY3QgKm9iaikKIAlpbnQgaTsKIAogCWlmIChXQVJOX09OKGk5MTVfZ2Vt X29iamVjdF9uZWVkc19iaXQxN19zd2l6emxlKG9iaikpKQotCQlyZXR1cm4gLUVJTlZBTDsKKwkJ cmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7CiAKIAlmb3IgKGkgPSAwOyBpIDwgb2JqLT5iYXNlLnNp emUgLyBQQUdFX1NJWkU7IGkrKykgewogCQlzdHJ1Y3QgcGFnZSAqcGFnZTsKQEAgLTE4Nyw3ICsx ODcsNyBAQCBpOTE1X2dlbV9vYmplY3RfZ2V0X3BhZ2VzX3BoeXMoc3RydWN0IGRybV9pOTE1X2dl bV9vYmplY3QgKm9iaikKIAogCQlwYWdlID0gc2htZW1fcmVhZF9tYXBwaW5nX3BhZ2UobWFwcGlu ZywgaSk7CiAJCWlmIChJU19FUlIocGFnZSkpCi0JCQlyZXR1cm4gUFRSX0VSUihwYWdlKTsKKwkJ CXJldHVybiBFUlJfQ0FTVChwYWdlKTsKIAogCQlzcmMgPSBrbWFwX2F0b21pYyhwYWdlKTsKIAkJ bWVtY3B5KHZhZGRyLCBzcmMsIFBBR0VfU0laRSk7CkBAIC0yMDIsMTEgKzIwMiwxMSBAQCBpOTE1 X2dlbV9vYmplY3RfZ2V0X3BhZ2VzX3BoeXMoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9i aikKIAogCXN0ID0ga21hbGxvYyhzaXplb2YoKnN0KSwgR0ZQX0tFUk5FTCk7CiAJaWYgKHN0ID09 IE5VTEwpCi0JCXJldHVybiAtRU5PTUVNOworCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKIAog CWlmIChzZ19hbGxvY190YWJsZShzdCwgMSwgR0ZQX0tFUk5FTCkpIHsKIAkJa2ZyZWUoc3QpOwot CQlyZXR1cm4gLUVOT01FTTsKKwkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7CiAJfQogCiAJc2cg PSBzdC0+c2dsOwpAQCAtMjE2LDI4ICsyMTYsMzAgQEAgaTkxNV9nZW1fb2JqZWN0X2dldF9wYWdl c19waHlzKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCiAJc2dfZG1hX2FkZHJlc3Mo c2cpID0gb2JqLT5waHlzX2hhbmRsZS0+YnVzYWRkcjsKIAlzZ19kbWFfbGVuKHNnKSA9IG9iai0+ YmFzZS5zaXplOwogCi0Jb2JqLT5tbS5wYWdlcyA9IHN0OwotCXJldHVybiAwOworCXJldHVybiBz dDsKIH0KIAogc3RhdGljIHZvaWQKLWk5MTVfZ2VtX29iamVjdF9wdXRfcGFnZXNfcGh5cyhzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQorX19pOTE1X2dlbV9vYmplY3RfcmVsZWFzZV9z aG1lbShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQogewotCWludCByZXQ7Ci0KLQlC VUdfT04ob2JqLT5tbS5tYWR2ID09IF9fSTkxNV9NQURWX1BVUkdFRCk7Ci0KLQlyZXQgPSBpOTE1 X2dlbV9vYmplY3Rfc2V0X3RvX2NwdV9kb21haW4ob2JqLCB0cnVlKTsKLQlpZiAoV0FSTl9PTihy ZXQpKSB7Ci0JCS8qIEluIHRoZSBldmVudCBvZiBhIGRpc2FzdGVyLCBhYmFuZG9uIGFsbCBjYWNo ZXMgYW5kCi0JCSAqIGhvcGUgZm9yIHRoZSBiZXN0LgotCQkgKi8KLQkJb2JqLT5iYXNlLnJlYWRf ZG9tYWlucyA9IG9iai0+YmFzZS53cml0ZV9kb21haW4gPSBJOTE1X0dFTV9ET01BSU5fQ1BVOwot CX0KKwlHRU1fQlVHX09OKG9iai0+bW0ubWFkdiA9PSBfX0k5MTVfTUFEVl9QVVJHRUQpOwogCiAJ aWYgKG9iai0+bW0ubWFkdiA9PSBJOTE1X01BRFZfRE9OVE5FRUQpCiAJCW9iai0+bW0uZGlydHkg PSBmYWxzZTsKIAorCWlmICgob2JqLT5iYXNlLnJlYWRfZG9tYWlucyAmIEk5MTVfR0VNX0RPTUFJ Tl9DUFUpID09IDApCisJCWk5MTVfZ2VtX2NsZmx1c2hfb2JqZWN0KG9iaiwgZmFsc2UpOworCisJ b2JqLT5iYXNlLnJlYWRfZG9tYWlucyA9IEk5MTVfR0VNX0RPTUFJTl9DUFU7CisJb2JqLT5iYXNl LndyaXRlX2RvbWFpbiA9IEk5MTVfR0VNX0RPTUFJTl9DUFU7Cit9CisKK3N0YXRpYyB2b2lkCitp OTE1X2dlbV9vYmplY3RfcHV0X3BhZ2VzX3BoeXMoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Qg Km9iaiwKKwkJCSAgICAgICBzdHJ1Y3Qgc2dfdGFibGUgKnBhZ2VzKQoreworCV9faTkxNV9nZW1f b2JqZWN0X3JlbGVhc2Vfc2htZW0ob2JqKTsKKwogCWlmIChvYmotPm1tLmRpcnR5KSB7CiAJCXN0 cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nID0gb2JqLT5iYXNlLmZpbHAtPmZfbWFwcGluZzsK IAkJY2hhciAqdmFkZHIgPSBvYmotPnBoeXNfaGFuZGxlLT52YWRkcjsKQEAgLTI2NSw4ICsyNjcs OCBAQCBpOTE1X2dlbV9vYmplY3RfcHV0X3BhZ2VzX3BoeXMoc3RydWN0IGRybV9pOTE1X2dlbV9v YmplY3QgKm9iaikKIAkJb2JqLT5tbS5kaXJ0eSA9IGZhbHNlOwogCX0KIAotCXNnX2ZyZWVfdGFi bGUob2JqLT5tbS5wYWdlcyk7Ci0Ja2ZyZWUob2JqLT5tbS5wYWdlcyk7CisJc2dfZnJlZV90YWJs ZShwYWdlcyk7CisJa2ZyZWUocGFnZXMpOwogfQogCiBzdGF0aWMgdm9pZApAQCAtNTE3LDkgKzUx OSw5IEBAIGk5MTVfZ2VtX29iamVjdF9hdHRhY2hfcGh5cyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29i amVjdCAqb2JqLAogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKLQlyZXQgPSBfX2k5MTVfZ2Vt X29iamVjdF9wdXRfcGFnZXMob2JqKTsKLQlpZiAocmV0KQotCQlyZXR1cm4gcmV0OworCV9faTkx NV9nZW1fb2JqZWN0X3B1dF9wYWdlcyhvYmopOworCWlmIChvYmotPm1tLnBhZ2VzKQorCQlyZXR1 cm4gLUVCVVNZOwogCiAJLyogY3JlYXRlIGEgbmV3IG9iamVjdCAqLwogCXBoeXMgPSBkcm1fcGNp X2FsbG9jKG9iai0+YmFzZS5kZXYsIG9iai0+YmFzZS5zaXplLCBhbGlnbik7CkBAIC01MzUsNyAr NTM3LDcgQEAgaTkxNV9nZW1fb2JqZWN0X2F0dGFjaF9waHlzKHN0cnVjdCBkcm1faTkxNV9nZW1f b2JqZWN0ICpvYmosCiBzdGF0aWMgaW50CiBpOTE1X2dlbV9waHlzX3B3cml0ZShzdHJ1Y3QgZHJt X2k5MTVfZ2VtX29iamVjdCAqb2JqLAogCQkgICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fcHdyaXRl ICphcmdzLAotCQkgICAgIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2KQorCQkgICAgIHN0cnVj dCBkcm1fZmlsZSAqZmlsZSkKIHsKIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gb2JqLT5iYXNl LmRldjsKIAl2b2lkICp2YWRkciA9IG9iai0+cGh5c19oYW5kbGUtPnZhZGRyICsgYXJncy0+b2Zm c2V0OwpAQCAtNTUxLDcgKzU1Myw3IEBAIGk5MTVfZ2VtX3BoeXNfcHdyaXRlKHN0cnVjdCBkcm1f aTkxNV9nZW1fb2JqZWN0ICpvYmosCiAJCQkJICAgSTkxNV9XQUlUX0xPQ0tFRCB8CiAJCQkJICAg STkxNV9XQUlUX0FMTCwKIAkJCQkgICBNQVhfU0NIRURVTEVfVElNRU9VVCwKLQkJCQkgICB0b19y cHNfY2xpZW50KGZpbGVfcHJpdikpOworCQkJCSAgIHRvX3Jwc19jbGllbnQoZmlsZSkpOwogCWlm IChyZXQpCiAJCXJldHVybiByZXQ7CiAKQEAgLTIyMjUsOCArMjIyNyw3IEBAIGk5MTVfZ2VtX29i amVjdF90cnVuY2F0ZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQogfQogCiAvKiBU cnkgdG8gZGlzY2FyZCB1bndhbnRlZCBwYWdlcyAqLwotc3RhdGljIHZvaWQKLWk5MTVfZ2VtX29i amVjdF9pbnZhbGlkYXRlKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCit2b2lkIF9f aTkxNV9nZW1fb2JqZWN0X2ludmFsaWRhdGUoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9i aikKIHsKIAlzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZzsKIApAQCAtMjI0NSwzMiArMjI0 NiwyMCBAQCBpOTE1X2dlbV9vYmplY3RfaW52YWxpZGF0ZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29i amVjdCAqb2JqKQogfQogCiBzdGF0aWMgdm9pZAotaTkxNV9nZW1fb2JqZWN0X3B1dF9wYWdlc19n dHQoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKK2k5MTVfZ2VtX29iamVjdF9wdXRf cGFnZXNfZ3R0KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCisJCQkgICAgICBzdHJ1 Y3Qgc2dfdGFibGUgKnBhZ2VzKQogewogCXN0cnVjdCBzZ3RfaXRlciBzZ3RfaXRlcjsKIAlzdHJ1 Y3QgcGFnZSAqcGFnZTsKLQlpbnQgcmV0OwogCi0JQlVHX09OKG9iai0+bW0ubWFkdiA9PSBfX0k5 MTVfTUFEVl9QVVJHRUQpOwotCi0JcmV0ID0gaTkxNV9nZW1fb2JqZWN0X3NldF90b19jcHVfZG9t YWluKG9iaiwgdHJ1ZSk7Ci0JaWYgKFdBUk5fT04ocmV0KSkgewotCQkvKiBJbiB0aGUgZXZlbnQg b2YgYSBkaXNhc3RlciwgYWJhbmRvbiBhbGwgY2FjaGVzIGFuZAotCQkgKiBob3BlIGZvciB0aGUg YmVzdC4KLQkJICovCi0JCWk5MTVfZ2VtX2NsZmx1c2hfb2JqZWN0KG9iaiwgdHJ1ZSk7Ci0JCW9i ai0+YmFzZS5yZWFkX2RvbWFpbnMgPSBvYmotPmJhc2Uud3JpdGVfZG9tYWluID0gSTkxNV9HRU1f RE9NQUlOX0NQVTsKLQl9CisJX19pOTE1X2dlbV9vYmplY3RfcmVsZWFzZV9zaG1lbShvYmopOwog Ci0JaTkxNV9nZW1fZ3R0X2ZpbmlzaF9vYmplY3Qob2JqKTsKKwlpOTE1X2dlbV9ndHRfZmluaXNo X3BhZ2VzKG9iaiwgcGFnZXMpOwogCiAJaWYgKGk5MTVfZ2VtX29iamVjdF9uZWVkc19iaXQxN19z d2l6emxlKG9iaikpCi0JCWk5MTVfZ2VtX29iamVjdF9zYXZlX2JpdF8xN19zd2l6emxlKG9iaik7 Ci0KLQlpZiAob2JqLT5tbS5tYWR2ID09IEk5MTVfTUFEVl9ET05UTkVFRCkKLQkJb2JqLT5tbS5k aXJ0eSA9IGZhbHNlOworCQlpOTE1X2dlbV9vYmplY3Rfc2F2ZV9iaXRfMTdfc3dpenpsZShvYmos IHBhZ2VzKTsKIAotCWZvcl9lYWNoX3NndF9wYWdlKHBhZ2UsIHNndF9pdGVyLCBvYmotPm1tLnBh Z2VzKSB7CisJZm9yX2VhY2hfc2d0X3BhZ2UocGFnZSwgc2d0X2l0ZXIsIHBhZ2VzKSB7CiAJCWlm IChvYmotPm1tLmRpcnR5KQogCQkJc2V0X3BhZ2VfZGlydHkocGFnZSk7CiAKQEAgLTIyODEsOCAr MjI3MCw4IEBAIGk5MTVfZ2VtX29iamVjdF9wdXRfcGFnZXNfZ3R0KHN0cnVjdCBkcm1faTkxNV9n ZW1fb2JqZWN0ICpvYmopCiAJfQogCW9iai0+bW0uZGlydHkgPSBmYWxzZTsKIAotCXNnX2ZyZWVf dGFibGUob2JqLT5tbS5wYWdlcyk7Ci0Ja2ZyZWUob2JqLT5tbS5wYWdlcyk7CisJc2dfZnJlZV90 YWJsZShwYWdlcyk7CisJa2ZyZWUocGFnZXMpOwogfQogCiBzdGF0aWMgdm9pZCBfX2k5MTVfZ2Vt X29iamVjdF9yZXNldF9wYWdlX2l0ZXIoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikK QEAgLTIyOTQsMjQgKzIyODMsMjIgQEAgc3RhdGljIHZvaWQgX19pOTE1X2dlbV9vYmplY3RfcmVz ZXRfcGFnZV9pdGVyKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCiAJCXJhZGl4X3Ry ZWVfZGVsZXRlKCZvYmotPm1tLmdldF9wYWdlLnJhZGl4LCBpdGVyLmluZGV4KTsKIH0KIAotaW50 IF9faTkxNV9nZW1fb2JqZWN0X3B1dF9wYWdlcyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAq b2JqKQordm9pZCBfX2k5MTVfZ2VtX29iamVjdF9wdXRfcGFnZXMoc3RydWN0IGRybV9pOTE1X2dl bV9vYmplY3QgKm9iaikKIHsKLQljb25zdCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdF9vcHMg Km9wcyA9IG9iai0+b3BzOworCXN0cnVjdCBzZ190YWJsZSAqcGFnZXM7CiAKIAlsb2NrZGVwX2Fz c2VydF9oZWxkKCZvYmotPmJhc2UuZGV2LT5zdHJ1Y3RfbXV0ZXgpOwogCi0JaWYgKCFvYmotPm1t LnBhZ2VzKQotCQlyZXR1cm4gMDsKLQogCWlmIChpOTE1X2dlbV9vYmplY3RfaGFzX3Bpbm5lZF9w YWdlcyhvYmopKQotCQlyZXR1cm4gLUVCVVNZOworCQlyZXR1cm47CiAKIAlHRU1fQlVHX09OKG9i ai0+YmluZF9jb3VudCk7CiAKIAkvKiAtPnB1dF9wYWdlcyBtaWdodCBuZWVkIHRvIGFsbG9jYXRl IG1lbW9yeSBmb3IgdGhlIGJpdDE3IHN3aXp6bGUKIAkgKiBhcnJheSwgaGVuY2UgcHJvdGVjdCB0 aGVtIGZyb20gYmVpbmcgcmVhcGVkIGJ5IHJlbW92aW5nIHRoZW0gZnJvbSBndHQKIAkgKiBsaXN0 cyBlYXJseS4gKi8KLQlsaXN0X2RlbCgmb2JqLT5nbG9iYWxfbGlzdCk7CisJcGFnZXMgPSBmZXRj aF9hbmRfemVybygmb2JqLT5tbS5wYWdlcyk7CisJR0VNX0JVR19PTighcGFnZXMpOwogCiAJaWYg KG9iai0+bW0ubWFwcGluZykgewogCQl2b2lkICpwdHI7CkBAIC0yMzI3LDE1ICsyMzE0LDEwIEBA IGludCBfX2k5MTVfZ2VtX29iamVjdF9wdXRfcGFnZXMoc3RydWN0IGRybV9pOTE1X2dlbV9vYmpl Y3QgKm9iaikKIAogCV9faTkxNV9nZW1fb2JqZWN0X3Jlc2V0X3BhZ2VfaXRlcihvYmopOwogCi0J b3BzLT5wdXRfcGFnZXMob2JqKTsKLQlvYmotPm1tLnBhZ2VzID0gTlVMTDsKLQotCWk5MTVfZ2Vt X29iamVjdF9pbnZhbGlkYXRlKG9iaik7Ci0KLQlyZXR1cm4gMDsKKwlvYmotPm9wcy0+cHV0X3Bh Z2VzKG9iaiwgcGFnZXMpOwogfQogCi1zdGF0aWMgaW50CitzdGF0aWMgc3RydWN0IHNnX3RhYmxl ICoKIGk5MTVfZ2VtX29iamVjdF9nZXRfcGFnZXNfZ3R0KHN0cnVjdCBkcm1faTkxNV9nZW1fb2Jq ZWN0ICpvYmopCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkx NShvYmotPmJhc2UuZGV2KTsKQEAgLTIzNTMsMTcgKzIzMzUsMTcgQEAgaTkxNV9nZW1fb2JqZWN0 X2dldF9wYWdlc19ndHQoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKIAkgKiB3YXNu J3QgaW4gdGhlIEdUVCwgdGhlcmUgc2hvdWxkbid0IGJlIGFueSB3YXkgaXQgY291bGQgaGF2ZSBi ZWVuIGluCiAJICogYSBHUFUgY2FjaGUKIAkgKi8KLQlCVUdfT04ob2JqLT5iYXNlLnJlYWRfZG9t YWlucyAmIEk5MTVfR0VNX0dQVV9ET01BSU5TKTsKLQlCVUdfT04ob2JqLT5iYXNlLndyaXRlX2Rv bWFpbiAmIEk5MTVfR0VNX0dQVV9ET01BSU5TKTsKKwlHRU1fQlVHX09OKG9iai0+YmFzZS5yZWFk X2RvbWFpbnMgJiBJOTE1X0dFTV9HUFVfRE9NQUlOUyk7CisJR0VNX0JVR19PTihvYmotPmJhc2Uu d3JpdGVfZG9tYWluICYgSTkxNV9HRU1fR1BVX0RPTUFJTlMpOwogCiAJc3QgPSBrbWFsbG9jKHNp emVvZigqc3QpLCBHRlBfS0VSTkVMKTsKIAlpZiAoc3QgPT0gTlVMTCkKLQkJcmV0dXJuIC1FTk9N RU07CisJCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOwogCiAJcGFnZV9jb3VudCA9IG9iai0+YmFz ZS5zaXplIC8gUEFHRV9TSVpFOwogCWlmIChzZ19hbGxvY190YWJsZShzdCwgcGFnZV9jb3VudCwg R0ZQX0tFUk5FTCkpIHsKIAkJa2ZyZWUoc3QpOwotCQlyZXR1cm4gLUVOT01FTTsKKwkJcmV0dXJu IEVSUl9QVFIoLUVOT01FTSk7CiAJfQogCiAJLyogR2V0IHRoZSBsaXN0IG9mIHBhZ2VzIG91dCBv ZiBvdXIgc3RydWN0IGZpbGUuICBUaGV5J2xsIGJlIHBpbm5lZApAQCAtMjQyMywyMCArMjQwNSwx OSBAQCBpOTE1X2dlbV9vYmplY3RfZ2V0X3BhZ2VzX2d0dChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29i amVjdCAqb2JqKQogCWlmICghc3dpb3RsYl9ucl90YmwoKSkKICNlbmRpZgogCQlzZ19tYXJrX2Vu ZChzZyk7Ci0Jb2JqLT5tbS5wYWdlcyA9IHN0OwogCi0JcmV0ID0gaTkxNV9nZW1fZ3R0X3ByZXBh cmVfb2JqZWN0KG9iaik7CisJcmV0ID0gaTkxNV9nZW1fZ3R0X3ByZXBhcmVfcGFnZXMob2JqLCBz dCk7CiAJaWYgKHJldCkKIAkJZ290byBlcnJfcGFnZXM7CiAKIAlpZiAoaTkxNV9nZW1fb2JqZWN0 X25lZWRzX2JpdDE3X3N3aXp6bGUob2JqKSkKLQkJaTkxNV9nZW1fb2JqZWN0X2RvX2JpdF8xN19z d2l6emxlKG9iaik7CisJCWk5MTVfZ2VtX29iamVjdF9kb19iaXRfMTdfc3dpenpsZShvYmosIHN0 KTsKIAogCWlmIChpOTE1X2dlbV9vYmplY3RfaXNfdGlsZWQob2JqKSAmJgogCSAgICBkZXZfcHJp di0+cXVpcmtzICYgUVVJUktfUElOX1NXSVpaTEVEX1BBR0VTKQogCQlfX2k5MTVfZ2VtX29iamVj dF9waW5fcGFnZXMob2JqKTsKIAotCXJldHVybiAwOworCXJldHVybiBzdDsKIAogZXJyX3BhZ2Vz OgogCXNnX21hcmtfZW5kKHNnKTsKQEAgLTI0NTYsNyArMjQzNywzNSBAQCBlcnJfcGFnZXM6CiAJ aWYgKHJldCA9PSAtRU5PU1BDKQogCQlyZXQgPSAtRU5PTUVNOwogCi0JcmV0dXJuIHJldDsKKwly ZXR1cm4gRVJSX1BUUihyZXQpOworfQorCit2b2lkIF9faTkxNV9nZW1fb2JqZWN0X3NldF9wYWdl cyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAorCQkJCSBzdHJ1Y3Qgc2dfdGFibGUg KnBhZ2VzKQoreworCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJm9iai0+YmFzZS5kZXYtPnN0cnVjdF9t dXRleCk7CisKKwlvYmotPm1tLmdldF9wYWdlLnNnX3BvcyA9IHBhZ2VzLT5zZ2w7CisJb2JqLT5t bS5nZXRfcGFnZS5zZ19pZHggPSAwOworCisJb2JqLT5tbS5wYWdlcyA9IHBhZ2VzOworfQorCitz dGF0aWMgaW50IF9fX19pOTE1X2dlbV9vYmplY3RfZ2V0X3BhZ2VzKHN0cnVjdCBkcm1faTkxNV9n ZW1fb2JqZWN0ICpvYmopCit7CisJc3RydWN0IHNnX3RhYmxlICpwYWdlczsKKworCWlmICh1bmxp a2VseShvYmotPm1tLm1hZHYgIT0gSTkxNV9NQURWX1dJTExORUVEKSkgeworCQlEUk1fREVCVUco IkF0dGVtcHRpbmcgdG8gb2J0YWluIGEgcHVyZ2VhYmxlIG9iamVjdFxuIik7CisJCXJldHVybiAt RUZBVUxUOworCX0KKworCXBhZ2VzID0gb2JqLT5vcHMtPmdldF9wYWdlcyhvYmopOworCWlmICh1 bmxpa2VseShJU19FUlIocGFnZXMpKSkKKwkJcmV0dXJuIFBUUl9FUlIocGFnZXMpOworCisJX19p OTE1X2dlbV9vYmplY3Rfc2V0X3BhZ2VzKG9iaiwgcGFnZXMpOworCXJldHVybiAwOwogfQogCiAv KiBFbnN1cmUgdGhhdCB0aGUgYXNzb2NpYXRlZCBwYWdlcyBhcmUgZ2F0aGVyZWQgZnJvbSB0aGUg YmFja2luZyBzdG9yYWdlCkBAIC0yNDY4LDMzICsyNDc3LDE4IEBAIGVycl9wYWdlczoKICAqLwog aW50IF9faTkxNV9nZW1fb2JqZWN0X2dldF9wYWdlcyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVj dCAqb2JqKQogewotCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUo b2JqLT5iYXNlLmRldik7Ci0JY29uc3Qgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Rfb3BzICpv cHMgPSBvYmotPm9wczsKLQlpbnQgcmV0OworCWludCBlcnI7CiAKIAlsb2NrZGVwX2Fzc2VydF9o ZWxkKCZvYmotPmJhc2UuZGV2LT5zdHJ1Y3RfbXV0ZXgpOwogCiAJaWYgKG9iai0+bW0ucGFnZXMp CiAJCXJldHVybiAwOwogCi0JaWYgKG9iai0+bW0ubWFkdiAhPSBJOTE1X01BRFZfV0lMTE5FRUQp IHsKLQkJRFJNX0RFQlVHKCJBdHRlbXB0aW5nIHRvIG9idGFpbiBhIHB1cmdlYWJsZSBvYmplY3Rc biIpOwotCQlfX2k5MTVfZ2VtX29iamVjdF91bnBpbl9wYWdlcyhvYmopOwotCQlyZXR1cm4gLUVG QVVMVDsKLQl9Ci0KLQlyZXQgPSBvcHMtPmdldF9wYWdlcyhvYmopOwotCWlmIChyZXQpIHsKKwll cnIgPSBfX19faTkxNV9nZW1fb2JqZWN0X2dldF9wYWdlcyhvYmopOworCWlmIChlcnIpCiAJCV9f aTkxNV9nZW1fb2JqZWN0X3VucGluX3BhZ2VzKG9iaik7Ci0JCXJldHVybiByZXQ7Ci0JfQogCi0J bGlzdF9hZGRfdGFpbCgmb2JqLT5nbG9iYWxfbGlzdCwgJmRldl9wcml2LT5tbS51bmJvdW5kX2xp c3QpOwotCi0Jb2JqLT5tbS5nZXRfcGFnZS5zZ19wb3MgPSBvYmotPm1tLnBhZ2VzLT5zZ2w7Ci0J b2JqLT5tbS5nZXRfcGFnZS5zZ19pZHggPSAwOwotCi0JcmV0dXJuIDA7CisJcmV0dXJuIGVycjsK IH0KIAogLyogVGhlICdtYXBwaW5nJyBwYXJ0IG9mIGk5MTVfZ2VtX29iamVjdF9waW5fbWFwKCkg YmVsb3cgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2RtYWJ1 Zi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZG1hYnVmLmMKaW5kZXggZGZiODAz MTY4MzE3Li5hNGM5MGU5MTUwNTEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtX2RtYWJ1Zi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2RtYWJ1 Zi5jCkBAIC0yODksMjIgKzI4OSwxOCBAQCBzdHJ1Y3QgZG1hX2J1ZiAqaTkxNV9nZW1fcHJpbWVf ZXhwb3J0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJcmV0dXJuIGRtYV9idWY7CiB9CiAKLXN0 YXRpYyBpbnQgaTkxNV9nZW1fb2JqZWN0X2dldF9wYWdlc19kbWFidWYoc3RydWN0IGRybV9pOTE1 X2dlbV9vYmplY3QgKm9iaikKK3N0YXRpYyBzdHJ1Y3Qgc2dfdGFibGUgKgoraTkxNV9nZW1fb2Jq ZWN0X2dldF9wYWdlc19kbWFidWYoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKIHsK LQlzdHJ1Y3Qgc2dfdGFibGUgKnNnOwotCi0Jc2cgPSBkbWFfYnVmX21hcF9hdHRhY2htZW50KG9i ai0+YmFzZS5pbXBvcnRfYXR0YWNoLCBETUFfQklESVJFQ1RJT05BTCk7Ci0JaWYgKElTX0VSUihz ZykpCi0JCXJldHVybiBQVFJfRVJSKHNnKTsKLQotCW9iai0+bW0ucGFnZXMgPSBzZzsKLQlyZXR1 cm4gMDsKKwlyZXR1cm4gZG1hX2J1Zl9tYXBfYXR0YWNobWVudChvYmotPmJhc2UuaW1wb3J0X2F0 dGFjaCwKKwkJCQkgICAgICBETUFfQklESVJFQ1RJT05BTCk7CiB9CiAKLXN0YXRpYyB2b2lkIGk5 MTVfZ2VtX29iamVjdF9wdXRfcGFnZXNfZG1hYnVmKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0 ICpvYmopCitzdGF0aWMgdm9pZCBpOTE1X2dlbV9vYmplY3RfcHV0X3BhZ2VzX2RtYWJ1ZihzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAorCQkJCQkgICAgIHN0cnVjdCBzZ190YWJsZSAq cGFnZXMpCiB7Ci0JZG1hX2J1Zl91bm1hcF9hdHRhY2htZW50KG9iai0+YmFzZS5pbXBvcnRfYXR0 YWNoLAotCQkJCSBvYmotPm1tLnBhZ2VzLCBETUFfQklESVJFQ1RJT05BTCk7CisJZG1hX2J1Zl91 bm1hcF9hdHRhY2htZW50KG9iai0+YmFzZS5pbXBvcnRfYXR0YWNoLCBwYWdlcywKKwkJCQkgRE1B X0JJRElSRUNUSU9OQUwpOwogfQogCiBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9pOTE1X2dlbV9v YmplY3Rfb3BzIGk5MTVfZ2VtX29iamVjdF9kbWFidWZfb3BzID0gewpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZmVuY2UuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtX2ZlbmNlLmMKaW5kZXggMzk4ODU2MTYwNjU2Li5iNzliY2Q2Mjg4ZTUgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2ZlbmNlLmMKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZmVuY2UuYwpAQCAtNjM4LDcgKzYzOCw4IEBAIGk5MTVf Z2VtX3N3aXp6bGVfcGFnZShzdHJ1Y3QgcGFnZSAqcGFnZSkKICAqIGJ5IHN3YXBwaW5nIHRoZW0g b3V0IGFuZCBiYWNrIGluIGFnYWluKS4KICAqLwogdm9pZAotaTkxNV9nZW1fb2JqZWN0X2RvX2Jp dF8xN19zd2l6emxlKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCitpOTE1X2dlbV9v YmplY3RfZG9fYml0XzE3X3N3aXp6bGUoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwK KwkJCQkgIHN0cnVjdCBzZ190YWJsZSAqcGFnZXMpCiB7CiAJc3RydWN0IHNndF9pdGVyIHNndF9p dGVyOwogCXN0cnVjdCBwYWdlICpwYWdlOwpAQCAtNjQ4LDEwICs2NDksOSBAQCBpOTE1X2dlbV9v YmplY3RfZG9fYml0XzE3X3N3aXp6bGUoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikK IAkJcmV0dXJuOwogCiAJaSA9IDA7Ci0JZm9yX2VhY2hfc2d0X3BhZ2UocGFnZSwgc2d0X2l0ZXIs IG9iai0+bW0ucGFnZXMpIHsKKwlmb3JfZWFjaF9zZ3RfcGFnZShwYWdlLCBzZ3RfaXRlciwgcGFn ZXMpIHsKIAkJY2hhciBuZXdfYml0XzE3ID0gcGFnZV90b19waHlzKHBhZ2UpID4+IDE3OwotCQlp ZiAoKG5ld19iaXRfMTcgJiAweDEpICE9Ci0JCSAgICAodGVzdF9iaXQoaSwgb2JqLT5iaXRfMTcp ICE9IDApKSB7CisJCWlmICgobmV3X2JpdF8xNyAmIDB4MSkgIT0gKHRlc3RfYml0KGksIG9iai0+ Yml0XzE3KSAhPSAwKSkgewogCQkJaTkxNV9nZW1fc3dpenpsZV9wYWdlKHBhZ2UpOwogCQkJc2V0 X3BhZ2VfZGlydHkocGFnZSk7CiAJCX0KQEAgLTY2OCwxNSArNjY4LDE1IEBAIGk5MTVfZ2VtX29i amVjdF9kb19iaXRfMTdfc3dpenpsZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQog ICogYmUgY2FsbGVkIGJlZm9yZSB0aGUgYmFja2luZyBzdG9yYWdlIGNhbiBiZSB1bnBpbm5lZC4K ICAqLwogdm9pZAotaTkxNV9nZW1fb2JqZWN0X3NhdmVfYml0XzE3X3N3aXp6bGUoc3RydWN0IGRy bV9pOTE1X2dlbV9vYmplY3QgKm9iaikKK2k5MTVfZ2VtX29iamVjdF9zYXZlX2JpdF8xN19zd2l6 emxlKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCisJCQkJICAgIHN0cnVjdCBzZ190 YWJsZSAqcGFnZXMpCiB7CiAJc3RydWN0IHNndF9pdGVyIHNndF9pdGVyOwogCXN0cnVjdCBwYWdl ICpwYWdlOwotCWludCBwYWdlX2NvdW50ID0gb2JqLT5iYXNlLnNpemUgPj4gUEFHRV9TSElGVDsK IAlpbnQgaTsKIAogCWlmIChvYmotPmJpdF8xNyA9PSBOVUxMKSB7Ci0JCW9iai0+Yml0XzE3ID0g a2NhbGxvYyhCSVRTX1RPX0xPTkdTKHBhZ2VfY291bnQpLAorCQlvYmotPmJpdF8xNyA9IGtjYWxs b2MoQklUU19UT19MT05HUyhvYmotPmJhc2Uuc2l6ZSA+PiBQQUdFX1NISUZUKSwKIAkJCQkgICAg ICBzaXplb2YobG9uZyksIEdGUF9LRVJORUwpOwogCQlpZiAob2JqLT5iaXRfMTcgPT0gTlVMTCkg ewogCQkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gYWxsb2NhdGUgbWVtb3J5IGZvciBiaXQgMTcgIgpA QCAtNjg3LDcgKzY4Nyw3IEBAIGk5MTVfZ2VtX29iamVjdF9zYXZlX2JpdF8xN19zd2l6emxlKHN0 cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCiAKIAlpID0gMDsKIAotCWZvcl9lYWNoX3Nn dF9wYWdlKHBhZ2UsIHNndF9pdGVyLCBvYmotPm1tLnBhZ2VzKSB7CisJZm9yX2VhY2hfc2d0X3Bh Z2UocGFnZSwgc2d0X2l0ZXIsIHBhZ2VzKSB7CiAJCWlmIChwYWdlX3RvX3BoeXMocGFnZSkgJiAo MSA8PCAxNykpCiAJCQlfX3NldF9iaXQoaSwgb2JqLT5iaXRfMTcpOwogCQllbHNlCmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ2VtX2d0dC5jCmluZGV4IDE5MTA4YTMxMTU0Ny4uM2FjNmExZDk5NWFlIDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYworKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYwpAQCAtMjI5MiwxNCArMjI5MiwxNSBAQCB2 b2lkIGk5MTVfZ2VtX3N1c3BlbmRfZ3R0X21hcHBpbmdzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYp CiAJaTkxNV9nZ3R0X2ZsdXNoKGRldl9wcml2KTsKIH0KIAotaW50IGk5MTVfZ2VtX2d0dF9wcmVw YXJlX29iamVjdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQoraW50IGk5MTVfZ2Vt X2d0dF9wcmVwYXJlX3BhZ2VzKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCisJCQkg ICAgICAgc3RydWN0IHNnX3RhYmxlICpwYWdlcykKIHsKLQlpZiAoIWRtYV9tYXBfc2coJm9iai0+ YmFzZS5kZXYtPnBkZXYtPmRldiwKLQkJCW9iai0+bW0ucGFnZXMtPnNnbCwgb2JqLT5tbS5wYWdl cy0+bmVudHMsCi0JCQlQQ0lfRE1BX0JJRElSRUNUSU9OQUwpKQotCQlyZXR1cm4gLUVOT1NQQzsK KwlpZiAoZG1hX21hcF9zZygmb2JqLT5iYXNlLmRldi0+cGRldi0+ZGV2LAorCQkgICAgICAgcGFn ZXMtPnNnbCwgcGFnZXMtPm5lbnRzLAorCQkgICAgICAgUENJX0RNQV9CSURJUkVDVElPTkFMKSkK KwkJcmV0dXJuIDA7CiAKLQlyZXR1cm4gMDsKKwlyZXR1cm4gLUVOT1NQQzsKIH0KIAogc3RhdGlj IHZvaWQgZ2VuOF9zZXRfcHRlKHZvaWQgX19pb21lbSAqYWRkciwgZ2VuOF9wdGVfdCBwdGUpCkBA IC0yNjcxLDcgKzI2NzIsOCBAQCBzdGF0aWMgdm9pZCBnZ3R0X3VuYmluZF92bWEoc3RydWN0IGk5 MTVfdm1hICp2bWEpCiAJCQkJCSB0cnVlKTsKIH0KIAotdm9pZCBpOTE1X2dlbV9ndHRfZmluaXNo X29iamVjdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQordm9pZCBpOTE1X2dlbV9n dHRfZmluaXNoX3BhZ2VzKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCisJCQkgICAg ICAgc3RydWN0IHNnX3RhYmxlICpwYWdlcykKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSB0b19pOTE1KG9iai0+YmFzZS5kZXYpOwogCXN0cnVjdCBkZXZpY2UgKmtkZXYg PSAmZGV2X3ByaXYtPmRybS5wZGV2LT5kZXY7CkBAIC0yNjg1LDggKzI2ODcsNyBAQCB2b2lkIGk5 MTVfZ2VtX2d0dF9maW5pc2hfb2JqZWN0KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmop CiAJCX0KIAl9CiAKLQlkbWFfdW5tYXBfc2coa2Rldiwgb2JqLT5tbS5wYWdlcy0+c2dsLCBvYmot Pm1tLnBhZ2VzLT5uZW50cywKLQkJICAgICBQQ0lfRE1BX0JJRElSRUNUSU9OQUwpOworCWRtYV91 bm1hcF9zZyhrZGV2LCBwYWdlcy0+c2dsLCBwYWdlcy0+bmVudHMsIFBDSV9ETUFfQklESVJFQ1RJ T05BTCk7CiB9CiAKIHN0YXRpYyB2b2lkIGk5MTVfZ3R0X2NvbG9yX2FkanVzdChzdHJ1Y3QgZHJt X21tX25vZGUgKm5vZGUsCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bV9ndHQuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5oCmluZGV4IGE5MDk5 OWZlMmU1Ny4uY2ZhNDFhODg3ZjJkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV9ndHQuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuaApA QCAtNjI5LDggKzYyOSwxMCBAQCB2b2lkIGk5MTVfY2hlY2tfYW5kX2NsZWFyX2ZhdWx0cyhzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwogdm9pZCBpOTE1X2dlbV9zdXNwZW5kX2d0 dF9tYXBwaW5ncyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKIHZvaWQgaTkxNV9nZW1fcmVzdG9y ZV9ndHRfbWFwcGluZ3Moc3RydWN0IGRybV9kZXZpY2UgKmRldik7CiAKLWludCBfX211c3RfY2hl Y2sgaTkxNV9nZW1fZ3R0X3ByZXBhcmVfb2JqZWN0KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0 ICpvYmopOwotdm9pZCBpOTE1X2dlbV9ndHRfZmluaXNoX29iamVjdChzdHJ1Y3QgZHJtX2k5MTVf Z2VtX29iamVjdCAqb2JqKTsKK2ludCBfX211c3RfY2hlY2sgaTkxNV9nZW1fZ3R0X3ByZXBhcmVf cGFnZXMoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKKwkJCQkJICAgIHN0cnVjdCBz Z190YWJsZSAqcGFnZXMpOwordm9pZCBpOTE1X2dlbV9ndHRfZmluaXNoX3BhZ2VzKHN0cnVjdCBk cm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCisJCQkgICAgICAgc3RydWN0IHNnX3RhYmxlICpwYWdl cyk7CiAKIC8qIEZsYWdzIHVzZWQgYnkgcGluL2JpbmQmZnJpZW5kcy4gKi8KICNkZWZpbmUgUElO X05PTkJMT0NLCQlCSVQoMCkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtX2ludGVybmFsLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9pbnRlcm5hbC5j CmluZGV4IDE1ZWY2MTBiM2I0MS4uMzhhZTkyYzk4M2YxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbV9pbnRlcm5hbC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtX2ludGVybmFsLmMKQEAgLTM4LDcgKzM4LDggQEAgc3RhdGljIHZvaWQgX19pOTE1 X2dlbV9vYmplY3RfZnJlZV9wYWdlcyhzdHJ1Y3Qgc2dfdGFibGUgKnN0KQogCWtmcmVlKHN0KTsK IH0KIAotc3RhdGljIGludCBpOTE1X2dlbV9vYmplY3RfZ2V0X3BhZ2VzX2ludGVybmFsKHN0cnVj dCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCitzdGF0aWMgc3RydWN0IHNnX3RhYmxlICoKK2k5 MTVfZ2VtX29iamVjdF9nZXRfcGFnZXNfaW50ZXJuYWwoc3RydWN0IGRybV9pOTE1X2dlbV9vYmpl Y3QgKm9iaikKIHsKIAljb25zdCB1bnNpZ25lZCBpbnQgbnBhZ2VzID0gb2JqLT5iYXNlLnNpemUg LyBQQUdFX1NJWkU7CiAJc3RydWN0IHNnX3RhYmxlICpzdDsKQEAgLTQ5LDExICs1MCwxMSBAQCBz dGF0aWMgaW50IGk5MTVfZ2VtX29iamVjdF9nZXRfcGFnZXNfaW50ZXJuYWwoc3RydWN0IGRybV9p OTE1X2dlbV9vYmplY3QgKm9iaikKIAogCXN0ID0ga21hbGxvYyhzaXplb2YoKnN0KSwgR0ZQX0tF Uk5FTCk7CiAJaWYgKCFzdCkKLQkJcmV0dXJuIC1FTk9NRU07CisJCXJldHVybiBFUlJfUFRSKC1F Tk9NRU0pOwogCiAJaWYgKHNnX2FsbG9jX3RhYmxlKHN0LCBucGFnZXMsIEdGUF9LRVJORUwpKSB7 CiAJCWtmcmVlKHN0KTsKLQkJcmV0dXJuIC1FTk9NRU07CisJCXJldHVybiBFUlJfUFRSKC1FTk9N RU0pOwogCX0KIAogCXNnID0gc3QtPnNnbDsKQEAgLTk1LDI1ICs5NiwyNCBAQCBzdGF0aWMgaW50 IGk5MTVfZ2VtX29iamVjdF9nZXRfcGFnZXNfaW50ZXJuYWwoc3RydWN0IGRybV9pOTE1X2dlbV9v YmplY3QgKm9iaikKIAlpZiAoIXN3aW90bGJfbnJfdGJsKCkpCiAjZW5kaWYKIAkJc2dfbWFya19l bmQoc2cpOwotCW9iai0+bW0ucGFnZXMgPSBzdDsKIAotCWlmIChpOTE1X2dlbV9ndHRfcHJlcGFy ZV9vYmplY3Qob2JqKSkgewotCQlvYmotPm1tLnBhZ2VzID0gTlVMTDsKKwlpZiAoaTkxNV9nZW1f Z3R0X3ByZXBhcmVfcGFnZXMob2JqLCBzdCkpCiAJCWdvdG8gZXJyOwotCX0KIAogCW9iai0+bW0u bWFkdiA9IEk5MTVfTUFEVl9ET05UTkVFRDsKLQlyZXR1cm4gMDsKKwlyZXR1cm4gc3Q7CiAKIGVy cjoKIAlzZ19tYXJrX2VuZChzZyk7CiAJX19pOTE1X2dlbV9vYmplY3RfZnJlZV9wYWdlcyhzdCk7 Ci0JcmV0dXJuIC1FTk9NRU07CisJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7CiB9CiAKLXN0YXRp YyB2b2lkIGk5MTVfZ2VtX29iamVjdF9wdXRfcGFnZXNfaW50ZXJuYWwoc3RydWN0IGRybV9pOTE1 X2dlbV9vYmplY3QgKm9iaikKK3N0YXRpYyB2b2lkIGk5MTVfZ2VtX29iamVjdF9wdXRfcGFnZXNf aW50ZXJuYWwoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKKwkJCQkJICAgICAgIHN0 cnVjdCBzZ190YWJsZSAqcGFnZXMpCiB7Ci0JX19pOTE1X2dlbV9vYmplY3RfZnJlZV9wYWdlcyhv YmotPm1tLnBhZ2VzKTsKKwlpOTE1X2dlbV9ndHRfZmluaXNoX3BhZ2VzKG9iaiwgcGFnZXMpOwor CV9faTkxNV9nZW1fb2JqZWN0X2ZyZWVfcGFnZXMocGFnZXMpOwogCiAJb2JqLT5tbS5kaXJ0eSA9 IGZhbHNlOwogCW9iai0+bW0ubWFkdiA9IEk5MTVfTUFEVl9XSUxMTkVFRDsKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3Nocmlua2VyLmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dlbV9zaHJpbmtlci5jCmluZGV4IGUwZTZkNjhmZTQ3MC4uYThjM2QzN2I5 NWI5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9zaHJpbmtlci5j CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3Nocmlua2VyLmMKQEAgLTkxLDYg KzkxLDEzIEBAIHN0YXRpYyBib29sIGNhbl9yZWxlYXNlX3BhZ2VzKHN0cnVjdCBkcm1faTkxNV9n ZW1fb2JqZWN0ICpvYmopCiAJcmV0dXJuIHN3YXBfYXZhaWxhYmxlKCkgfHwgb2JqLT5tbS5tYWR2 ID09IEk5MTVfTUFEVl9ET05UTkVFRDsKIH0KIAorc3RhdGljIGJvb2wgdW5zYWZlX2Ryb3BfcGFn ZXMoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKK3sKKwlpZiAoaTkxNV9nZW1fb2Jq ZWN0X3VuYmluZChvYmopID09IDApCisJCV9faTkxNV9nZW1fb2JqZWN0X3B1dF9wYWdlcyhvYmop OworCXJldHVybiAhb2JqLT5tbS5wYWdlczsKK30KKwogLyoqCiAgKiBpOTE1X2dlbV9zaHJpbmsg LSBTaHJpbmsgYnVmZmVyIG9iamVjdCBjYWNoZXMKICAqIEBkZXZfcHJpdjogaTkxNSBkZXZpY2UK QEAgLTE5MSw5ICsxOTgsNyBAQCBpOTE1X2dlbV9zaHJpbmsoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2LAogCiAJCQlpOTE1X2dlbV9vYmplY3RfZ2V0KG9iaik7CiAKLQkJCS8qIEZv ciB0aGUgdW5ib3VuZCBwaGFzZSwgdGhpcyBzaG91bGQgYmUgYSBuby1vcCEgKi8KLQkJCWk5MTVf Z2VtX29iamVjdF91bmJpbmQob2JqKTsKLQkJCWlmIChfX2k5MTVfZ2VtX29iamVjdF9wdXRfcGFn ZXMob2JqKSA9PSAwKQorCQkJaWYgKHVuc2FmZV9kcm9wX3BhZ2VzKG9iaikpCiAJCQkJY291bnQg Kz0gb2JqLT5iYXNlLnNpemUgPj4gUEFHRV9TSElGVDsKIAogCQkJaTkxNV9nZW1fb2JqZWN0X3B1 dChvYmopOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fc3RvbGVu LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9zdG9sZW4uYwppbmRleCA2ZDEzOWQ2 YjQ2MDkuLjQxNjZlYWZhMjVkZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW1fc3RvbGVuLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fc3RvbGVu LmMKQEAgLTU0NSwxNyArNTQ1LDIwIEBAIGk5MTVfcGFnZXNfY3JlYXRlX2Zvcl9zdG9sZW4oc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwKIAlyZXR1cm4gc3Q7CiB9CiAKLXN0YXRpYyBpbnQgaTkxNV9n ZW1fb2JqZWN0X2dldF9wYWdlc19zdG9sZW4oc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9i aikKK3N0YXRpYyBzdHJ1Y3Qgc2dfdGFibGUgKgoraTkxNV9nZW1fb2JqZWN0X2dldF9wYWdlc19z dG9sZW4oc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKIHsKLQlCVUcoKTsKLQlyZXR1 cm4gLUVJTlZBTDsKKwlyZXR1cm4gaTkxNV9wYWdlc19jcmVhdGVfZm9yX3N0b2xlbihvYmotPmJh c2UuZGV2LAorCQkJCQkgICAgb2JqLT5zdG9sZW4tPnN0YXJ0LAorCQkJCQkgICAgb2JqLT5zdG9s ZW4tPnNpemUpOwogfQogCi1zdGF0aWMgdm9pZCBpOTE1X2dlbV9vYmplY3RfcHV0X3BhZ2VzX3N0 b2xlbihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQorc3RhdGljIHZvaWQgaTkxNV9n ZW1fb2JqZWN0X3B1dF9wYWdlc19zdG9sZW4oc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9i aiwKKwkJCQkJICAgICBzdHJ1Y3Qgc2dfdGFibGUgKnBhZ2VzKQogewogCS8qIFNob3VsZCBvbmx5 IGJlIGNhbGxlZCBkdXJpbmcgZnJlZSAqLwotCXNnX2ZyZWVfdGFibGUob2JqLT5tbS5wYWdlcyk7 Ci0Ja2ZyZWUob2JqLT5tbS5wYWdlcyk7CisJc2dfZnJlZV90YWJsZShwYWdlcyk7CisJa2ZyZWUo cGFnZXMpOwogfQogCiBzdGF0aWMgdm9pZApAQCAtNTkwLDIxICs1OTMsMTMgQEAgX2k5MTVfZ2Vt X29iamVjdF9jcmVhdGVfc3RvbGVuKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJZHJtX2dlbV9w cml2YXRlX29iamVjdF9pbml0KGRldiwgJm9iai0+YmFzZSwgc3RvbGVuLT5zaXplKTsKIAlpOTE1 X2dlbV9vYmplY3RfaW5pdChvYmosICZpOTE1X2dlbV9vYmplY3Rfc3RvbGVuX29wcyk7CiAKLQlv YmotPm1tLnBhZ2VzID0gaTkxNV9wYWdlc19jcmVhdGVfZm9yX3N0b2xlbihkZXYsCi0JCQkJCQkg ICAgIHN0b2xlbi0+c3RhcnQsCi0JCQkJCQkgICAgIHN0b2xlbi0+c2l6ZSk7Ci0JaWYgKCFvYmot Pm1tLnBhZ2VzKQotCQlnb3RvIGNsZWFudXA7Ci0KLQlvYmotPm1tLmdldF9wYWdlLnNnX3BvcyA9 IG9iai0+bW0ucGFnZXMtPnNnbDsKLQlvYmotPm1tLmdldF9wYWdlLnNnX2lkeCA9IDA7Ci0KLQlf X2k5MTVfZ2VtX29iamVjdF9waW5fcGFnZXMob2JqKTsKIAlvYmotPnN0b2xlbiA9IHN0b2xlbjsK LQogCW9iai0+YmFzZS5yZWFkX2RvbWFpbnMgPSBJOTE1X0dFTV9ET01BSU5fQ1BVIHwgSTkxNV9H RU1fRE9NQUlOX0dUVDsKIAlvYmotPmNhY2hlX2xldmVsID0gSEFTX0xMQyhkZXYpID8gSTkxNV9D QUNIRV9MTEMgOiBJOTE1X0NBQ0hFX05PTkU7CiAKKwlpZiAoaTkxNV9nZW1fb2JqZWN0X3Bpbl9w YWdlcyhvYmopKQorCQlnb3RvIGNsZWFudXA7CisKIAlyZXR1cm4gb2JqOwogCiBjbGVhbnVwOgpA QCAtNjk5LDEwICs2OTQsMTQgQEAgaTkxNV9nZW1fb2JqZWN0X2NyZWF0ZV9zdG9sZW5fZm9yX3By ZWFsbG9jYXRlZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCWlmIChndHRfb2Zmc2V0ID09IEk5 MTVfR1RUX09GRlNFVF9OT05FKQogCQlyZXR1cm4gb2JqOwogCisJcmV0ID0gaTkxNV9nZW1fb2Jq ZWN0X3Bpbl9wYWdlcyhvYmopOworCWlmIChyZXQpCisJCWdvdG8gZXJyOworCiAJdm1hID0gaTkx NV9nZW1fb2JqX2xvb2t1cF9vcl9jcmVhdGVfdm1hKG9iaiwgJmdndHQtPmJhc2UsIE5VTEwpOwog CWlmIChJU19FUlIodm1hKSkgewogCQlyZXQgPSBQVFJfRVJSKHZtYSk7Ci0JCWdvdG8gZXJyOwor CQlnb3RvIGVycl9wYWdlczsKIAl9CiAKIAkvKiBUbyBzaW1wbGlmeSB0aGUgaW5pdGlhbGlzYXRp b24gc2VxdWVuY2UgYmV0d2VlbiBLTVMgYW5kIEdUVCwKQEAgLTcxNiwyMCArNzE1LDIwIEBAIGk5 MTVfZ2VtX29iamVjdF9jcmVhdGVfc3RvbGVuX2Zvcl9wcmVhbGxvY2F0ZWQoc3RydWN0IGRybV9k ZXZpY2UgKmRldiwKIAlyZXQgPSBkcm1fbW1fcmVzZXJ2ZV9ub2RlKCZnZ3R0LT5iYXNlLm1tLCAm dm1hLT5ub2RlKTsKIAlpZiAocmV0KSB7CiAJCURSTV9ERUJVR19LTVMoImZhaWxlZCB0byBhbGxv Y2F0ZSBzdG9sZW4gR1RUIHNwYWNlXG4iKTsKLQkJZ290byBlcnI7CisJCWdvdG8gZXJyX3BhZ2Vz OwogCX0KIAogCXZtYS0+cGFnZXMgPSBvYmotPm1tLnBhZ2VzOwogCXZtYS0+ZmxhZ3MgfD0gSTkx NV9WTUFfR0xPQkFMX0JJTkQ7CiAJX19pOTE1X3ZtYV9zZXRfbWFwX2FuZF9mZW5jZWFibGUodm1h KTsKIAlsaXN0X21vdmVfdGFpbCgmdm1hLT52bV9saW5rLCAmZ2d0dC0+YmFzZS5pbmFjdGl2ZV9s aXN0KTsKKwlsaXN0X21vdmVfdGFpbCgmb2JqLT5nbG9iYWxfbGlzdCwgJmRldl9wcml2LT5tbS5i b3VuZF9saXN0KTsKIAlvYmotPmJpbmRfY291bnQrKzsKIAotCWxpc3RfYWRkX3RhaWwoJm9iai0+ Z2xvYmFsX2xpc3QsICZkZXZfcHJpdi0+bW0uYm91bmRfbGlzdCk7Ci0JX19pOTE1X2dlbV9vYmpl Y3RfcGluX3BhZ2VzKG9iaik7Ci0KIAlyZXR1cm4gb2JqOwogCitlcnJfcGFnZXM6CisJaTkxNV9n ZW1fb2JqZWN0X3VucGluX3BhZ2VzKG9iaik7CiBlcnI6CiAJaTkxNV9nZW1fb2JqZWN0X3B1dChv YmopOwogCXJldHVybiBOVUxMOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW1fdXNlcnB0ci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fdXNlcnB0ci5j CmluZGV4IGNiNmExODY2MDJkOC4uZTk3YzdiNTg5NDM5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbV91c2VycHRyLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW1fdXNlcnB0ci5jCkBAIC03MywxMSArNzMsMTQgQEAgc3RhdGljIHZvaWQgY2FuY2Vs X3VzZXJwdHIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQogCS8qIENhbmNlbCBhbnkgYWN0aXZl IHdvcmtlciBhbmQgZm9yY2UgdXMgdG8gcmUtZXZhbHVhdGUgZ3VwICovCiAJb2JqLT51c2VycHRy LndvcmsgPSBOVUxMOwogCi0JaWYgKG9iai0+bW0ucGFnZXMgIT0gTlVMTCkgewotCQkvKiBXZSBh cmUgaW5zaWRlIGEga3RocmVhZCBjb250ZXh0IGFuZCBjYW4ndCBiZSBpbnRlcnJ1cHRlZCAqLwot CQlXQVJOX09OKGk5MTVfZ2VtX29iamVjdF91bmJpbmQob2JqKSk7Ci0JCVdBUk5fT04oX19pOTE1 X2dlbV9vYmplY3RfcHV0X3BhZ2VzKG9iaikpOwotCX0KKwkvKiBXZSBhcmUgaW5zaWRlIGEga3Ro cmVhZCBjb250ZXh0IGFuZCBjYW4ndCBiZSBpbnRlcnJ1cHRlZCAqLworCWlmIChpOTE1X2dlbV9v YmplY3RfdW5iaW5kKG9iaikgPT0gMCkKKwkJX19pOTE1X2dlbV9vYmplY3RfcHV0X3BhZ2VzKG9i aik7CisJV0FSTl9PTkNFKG9iai0+bW0ucGFnZXMsCisJCSAgIkZhaWxlZCB0byByZWxlYXNlIHBh Z2VzOiBiaW5kX2NvdW50PSVkLCBwYWdlc19waW5fY291bnQ9JWQsIHBpbl9kaXNwbGF5PSVkXG4i LAorCQkgIG9iai0+YmluZF9jb3VudCwKKwkJICBvYmotPm1tLnBhZ2VzX3Bpbl9jb3VudCwKKwkJ ICBvYmotPnBpbl9kaXNwbGF5KTsKIAogCWk5MTVfZ2VtX29iamVjdF9wdXQob2JqKTsKIAltdXRl eF91bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsKQEAgLTQyNiwyNCArNDI5LDI1IEBAIGVycjoK IAlyZXR1cm4gcmV0OwogfQogCi1zdGF0aWMgaW50CitzdGF0aWMgc3RydWN0IHNnX3RhYmxlICoK IF9faTkxNV9nZW1fdXNlcnB0cl9zZXRfcGFnZXMoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Qg Km9iaiwKIAkJCSAgICAgc3RydWN0IHBhZ2UgKipwdmVjLCBpbnQgbnVtX3BhZ2VzKQogeworCXN0 cnVjdCBzZ190YWJsZSAqcGFnZXM7CiAJaW50IHJldDsKIAotCXJldCA9IHN0X3NldF9wYWdlcygm b2JqLT5tbS5wYWdlcywgcHZlYywgbnVtX3BhZ2VzKTsKKwlyZXQgPSBzdF9zZXRfcGFnZXMoJnBh Z2VzLCBwdmVjLCBudW1fcGFnZXMpOwogCWlmIChyZXQpCi0JCXJldHVybiByZXQ7CisJCXJldHVy biBFUlJfUFRSKHJldCk7CiAKLQlyZXQgPSBpOTE1X2dlbV9ndHRfcHJlcGFyZV9vYmplY3Qob2Jq KTsKKwlyZXQgPSBpOTE1X2dlbV9ndHRfcHJlcGFyZV9wYWdlcyhvYmosIHBhZ2VzKTsKIAlpZiAo cmV0KSB7Ci0JCXNnX2ZyZWVfdGFibGUob2JqLT5tbS5wYWdlcyk7Ci0JCWtmcmVlKG9iai0+bW0u cGFnZXMpOwotCQlvYmotPm1tLnBhZ2VzID0gTlVMTDsKKwkJc2dfZnJlZV90YWJsZShwYWdlcyk7 CisJCWtmcmVlKHBhZ2VzKTsKKwkJcmV0dXJuIEVSUl9QVFIocmV0KTsKIAl9CiAKLQlyZXR1cm4g cmV0OworCXJldHVybiBwYWdlczsKIH0KIAogc3RhdGljIGludApAQCAtNTIxLDIwICs1MjUsMjAg QEAgX19pOTE1X2dlbV91c2VycHRyX2dldF9wYWdlc193b3JrZXIoc3RydWN0IHdvcmtfc3RydWN0 ICpfd29yaykKIAogCW11dGV4X2xvY2soJmRldi0+c3RydWN0X211dGV4KTsKIAlpZiAob2JqLT51 c2VycHRyLndvcmsgPT0gJndvcmstPndvcmspIHsKKwkJc3RydWN0IHNnX3RhYmxlICpwYWdlcyA9 IEVSUl9QVFIocmV0KTsKKwogCQlpZiAocGlubmVkID09IG5wYWdlcykgewotCQkJcmV0ID0gX19p OTE1X2dlbV91c2VycHRyX3NldF9wYWdlcyhvYmosIHB2ZWMsIG5wYWdlcyk7Ci0JCQlpZiAocmV0 ID09IDApIHsKLQkJCQlsaXN0X2FkZF90YWlsKCZvYmotPmdsb2JhbF9saXN0LAotCQkJCQkgICAg ICAmdG9faTkxNShkZXYpLT5tbS51bmJvdW5kX2xpc3QpOwotCQkJCW9iai0+bW0uZ2V0X3BhZ2Uu c2dfcG9zID0gb2JqLT5tbS5wYWdlcy0+c2dsOwotCQkJCW9iai0+bW0uZ2V0X3BhZ2Uuc2dfaWR4 ID0gMDsKKwkJCXBhZ2VzID0gX19pOTE1X2dlbV91c2VycHRyX3NldF9wYWdlcyhvYmosIHB2ZWMs IG5wYWdlcyk7CisJCQlpZiAoIUlTX0VSUihwYWdlcykpIHsKKwkJCQlfX2k5MTVfZ2VtX29iamVj dF9zZXRfcGFnZXMob2JqLCBwYWdlcyk7CiAJCQkJcGlubmVkID0gMDsKKwkJCQlwYWdlcyA9IE5V TEw7CiAJCQl9CiAJCX0KLQkJb2JqLT51c2VycHRyLndvcmsgPSBFUlJfUFRSKHJldCk7CisKKwkJ b2JqLT51c2VycHRyLndvcmsgPSBFUlJfQ0FTVChwYWdlcyk7CiAJfQogCi0Jb2JqLT51c2VycHRy LndvcmtlcnMtLTsKIAlpOTE1X2dlbV9vYmplY3RfcHV0KG9iaik7CiAJbXV0ZXhfdW5sb2NrKCZk ZXYtPnN0cnVjdF9tdXRleCk7CiAKQEAgLTU0NSw3ICs1NDksNyBAQCBfX2k5MTVfZ2VtX3VzZXJw dHJfZ2V0X3BhZ2VzX3dvcmtlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKl93b3JrKQogCWtmcmVlKHdv cmspOwogfQogCi1zdGF0aWMgaW50CitzdGF0aWMgc3RydWN0IHNnX3RhYmxlICoKIF9faTkxNV9n ZW1fdXNlcnB0cl9nZXRfcGFnZXNfc2NoZWR1bGUoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Qg Km9iaiwKIAkJCQkgICAgICBib29sICphY3RpdmUpCiB7CkBAIC01NzAsMTUgKzU3NCwxMSBAQCBf X2k5MTVfZ2VtX3VzZXJwdHJfZ2V0X3BhZ2VzX3NjaGVkdWxlKHN0cnVjdCBkcm1faTkxNV9nZW1f b2JqZWN0ICpvYmosCiAJICogdGhhdCBlcnJvciBiYWNrIHRvIHRoaXMgZnVuY3Rpb24gdGhyb3Vn aAogCSAqIG9iai0+dXNlcnB0ci53b3JrID0gRVJSX1BUUi4KIAkgKi8KLQlpZiAob2JqLT51c2Vy cHRyLndvcmtlcnMgPj0gSTkxNV9HRU1fVVNFUlBUUl9NQVhfV09SS0VSUykKLQkJcmV0dXJuIC1F QUdBSU47Ci0KIAl3b3JrID0ga21hbGxvYyhzaXplb2YoKndvcmspLCBHRlBfS0VSTkVMKTsKIAlp ZiAod29yayA9PSBOVUxMKQotCQlyZXR1cm4gLUVOT01FTTsKKwkJcmV0dXJuIEVSUl9QVFIoLUVO T01FTSk7CiAKIAlvYmotPnVzZXJwdHIud29yayA9ICZ3b3JrLT53b3JrOwotCW9iai0+dXNlcnB0 ci53b3JrZXJzKys7CiAKIAl3b3JrLT5vYmogPSBpOTE1X2dlbV9vYmplY3RfZ2V0KG9iaik7CiAK QEAgLTU4OSwxNCArNTg5LDE1IEBAIF9faTkxNV9nZW1fdXNlcnB0cl9nZXRfcGFnZXNfc2NoZWR1 bGUoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKIAlzY2hlZHVsZV93b3JrKCZ3b3Jr LT53b3JrKTsKIAogCSphY3RpdmUgPSB0cnVlOwotCXJldHVybiAtRUFHQUlOOworCXJldHVybiBF UlJfUFRSKC1FQUdBSU4pOwogfQogCi1zdGF0aWMgaW50CitzdGF0aWMgc3RydWN0IHNnX3RhYmxl ICoKIGk5MTVfZ2VtX3VzZXJwdHJfZ2V0X3BhZ2VzKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0 ICpvYmopCiB7CiAJY29uc3QgaW50IG51bV9wYWdlcyA9IG9iai0+YmFzZS5zaXplID4+IFBBR0Vf U0hJRlQ7CiAJc3RydWN0IHBhZ2UgKipwdmVjOworCXN0cnVjdCBzZ190YWJsZSAqcGFnZXM7CiAJ aW50IHBpbm5lZCwgcmV0OwogCWJvb2wgYWN0aXZlOwogCkBAIC02MjAsMTUgKzYyMSwxNSBAQCBp OTE1X2dlbV91c2VycHRyX2dldF9wYWdlcyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2Jq KQogCWlmIChvYmotPnVzZXJwdHIud29yaykgewogCQkvKiBhY3RpdmUgZmxhZyBzaG91bGQgc3Rp bGwgYmUgaGVsZCBmb3IgdGhlIHBlbmRpbmcgd29yayAqLwogCQlpZiAoSVNfRVJSKG9iai0+dXNl cnB0ci53b3JrKSkKLQkJCXJldHVybiBQVFJfRVJSKG9iai0+dXNlcnB0ci53b3JrKTsKKwkJCXJl dHVybiBFUlJfQ0FTVChvYmotPnVzZXJwdHIud29yayk7CiAJCWVsc2UKLQkJCXJldHVybiAtRUFH QUlOOworCQkJcmV0dXJuIEVSUl9QVFIoLUVBR0FJTik7CiAJfQogCiAJLyogTGV0IHRoZSBtbXUt bm90aWZpZXIga25vdyB0aGF0IHdlIGhhdmUgYmVndW4gYW5kIG5lZWQgY2FuY2VsbGF0aW9uICov CiAJcmV0ID0gX19pOTE1X2dlbV91c2VycHRyX3NldF9hY3RpdmUob2JqLCB0cnVlKTsKIAlpZiAo cmV0KQotCQlyZXR1cm4gcmV0OworCQlyZXR1cm4gRVJSX1BUUihyZXQpOwogCiAJcHZlYyA9IE5V TEw7CiAJcGlubmVkID0gMDsKQEAgLTYzNyw3ICs2MzgsNyBAQCBpOTE1X2dlbV91c2VycHRyX2dl dF9wYWdlcyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQogCQkJCSAgICAgIEdGUF9U RU1QT1JBUlkpOwogCQlpZiAocHZlYyA9PSBOVUxMKSB7CiAJCQlfX2k5MTVfZ2VtX3VzZXJwdHJf c2V0X2FjdGl2ZShvYmosIGZhbHNlKTsKLQkJCXJldHVybiAtRU5PTUVNOworCQkJcmV0dXJuIEVS Ul9QVFIoLUVOT01FTSk7CiAJCX0KIAogCQlwaW5uZWQgPSBfX2dldF91c2VyX3BhZ2VzX2Zhc3Qo b2JqLT51c2VycHRyLnB0ciwgbnVtX3BhZ2VzLApAQCAtNjQ2LDIxICs2NDcsMjIgQEAgaTkxNV9n ZW1fdXNlcnB0cl9nZXRfcGFnZXMoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKIAog CWFjdGl2ZSA9IGZhbHNlOwogCWlmIChwaW5uZWQgPCAwKQotCQlyZXQgPSBwaW5uZWQsIHBpbm5l ZCA9IDA7CisJCXBhZ2VzID0gRVJSX1BUUihwaW5uZWQpLCBwaW5uZWQgPSAwOwogCWVsc2UgaWYg KHBpbm5lZCA8IG51bV9wYWdlcykKLQkJcmV0ID0gX19pOTE1X2dlbV91c2VycHRyX2dldF9wYWdl c19zY2hlZHVsZShvYmosICZhY3RpdmUpOworCQlwYWdlcyA9IF9faTkxNV9nZW1fdXNlcnB0cl9n ZXRfcGFnZXNfc2NoZWR1bGUob2JqLCAmYWN0aXZlKTsKIAllbHNlCi0JCXJldCA9IF9faTkxNV9n ZW1fdXNlcnB0cl9zZXRfcGFnZXMob2JqLCBwdmVjLCBudW1fcGFnZXMpOwotCWlmIChyZXQpIHsK KwkJcGFnZXMgPSBfX2k5MTVfZ2VtX3VzZXJwdHJfc2V0X3BhZ2VzKG9iaiwgcHZlYywgbnVtX3Bh Z2VzKTsKKwlpZiAoSVNfRVJSKHBhZ2VzKSkgewogCQlfX2k5MTVfZ2VtX3VzZXJwdHJfc2V0X2Fj dGl2ZShvYmosIGFjdGl2ZSk7CiAJCXJlbGVhc2VfcGFnZXMocHZlYywgcGlubmVkLCAwKTsKIAl9 CiAJZHJtX2ZyZWVfbGFyZ2UocHZlYyk7Ci0JcmV0dXJuIHJldDsKKwlyZXR1cm4gcGFnZXM7CiB9 CiAKIHN0YXRpYyB2b2lkCi1pOTE1X2dlbV91c2VycHRyX3B1dF9wYWdlcyhzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX29iamVjdCAqb2JqKQoraTkxNV9nZW1fdXNlcnB0cl9wdXRfcGFnZXMoc3RydWN0IGRy bV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKKwkJCSAgIHN0cnVjdCBzZ190YWJsZSAqcGFnZXMpCiB7 CiAJc3RydWN0IHNndF9pdGVyIHNndF9pdGVyOwogCXN0cnVjdCBwYWdlICpwYWdlOwpAQCAtNjcx LDkgKzY3Myw5IEBAIGk5MTVfZ2VtX3VzZXJwdHJfcHV0X3BhZ2VzKHN0cnVjdCBkcm1faTkxNV9n ZW1fb2JqZWN0ICpvYmopCiAJaWYgKG9iai0+bW0ubWFkdiAhPSBJOTE1X01BRFZfV0lMTE5FRUQp CiAJCW9iai0+bW0uZGlydHkgPSBmYWxzZTsKIAotCWk5MTVfZ2VtX2d0dF9maW5pc2hfb2JqZWN0 KG9iaik7CisJaTkxNV9nZW1fZ3R0X2ZpbmlzaF9wYWdlcyhvYmosIHBhZ2VzKTsKIAotCWZvcl9l YWNoX3NndF9wYWdlKHBhZ2UsIHNndF9pdGVyLCBvYmotPm1tLnBhZ2VzKSB7CisJZm9yX2VhY2hf c2d0X3BhZ2UocGFnZSwgc2d0X2l0ZXIsIHBhZ2VzKSB7CiAJCWlmIChvYmotPm1tLmRpcnR5KQog CQkJc2V0X3BhZ2VfZGlydHkocGFnZSk7CiAKQEAgLTY4Miw4ICs2ODQsOCBAQCBpOTE1X2dlbV91 c2VycHRyX3B1dF9wYWdlcyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQogCX0KIAlv YmotPm1tLmRpcnR5ID0gZmFsc2U7CiAKLQlzZ19mcmVlX3RhYmxlKG9iai0+bW0ucGFnZXMpOwot CWtmcmVlKG9iai0+bW0ucGFnZXMpOworCXNnX2ZyZWVfdGFibGUocGFnZXMpOworCWtmcmVlKHBh Z2VzKTsKIH0KIAogc3RhdGljIHZvaWQKLS0gCjIuOS4zCgpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdm eEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFp bG1hbi9saXN0aW5mby9pbnRlbC1nZngK