From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH] drm/i915/userptr: Avoid struct_mutex recursion for mmu_invalidate_range_start Date: Thu, 25 Oct 2018 13:45:42 +0100 Message-ID: <20181025124542.21830-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 fireflyinternet.com (mail.fireflyinternet.com [109.228.58.192]) by gabe.freedesktop.org (Postfix) with ESMTPS id 780616E0F4 for ; Thu, 25 Oct 2018 12:45:51 +0000 (UTC) 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 U2luY2UgY29tbWl0IDkzMDY1YWM3NTNlNCAoIm1tLCBvb206IGRpc3Rpbmd1aXNoIGJsb2NrYWJs ZSBtb2RlIGZvciBtbXUKbm90aWZpZXJzIikgd2UgaGF2ZSBiZWVuIGFibGUgdG8gcmVwb3J0IGZh aWx1cmUgZnJvbQptbXVfaW52YWxpZGF0ZV9yYW5nZV9zdGFydCB3aGljaCBhbGxvd3MgdXMgdG8g dXNlIGEgdHJ5bG9jayBvbiB0aGUKc3RydWN0X211dGV4IHRvIGF2b2lkIHBvdGVudGlhbCByZWN1 cnNpb24gYW5kIHJlcG9ydCAtRUJVU1kgaW5zdGVhZC4KRnVydGhlcm1vcmUsIHRoaXMgYWxsb3dz IHVzIHRvIHB1bGwgdGhlIHdvcmsgaW50byB0aGUgbWFpbiBjYWxsYmFjayBhbmQKYXZvaWQgdGhl IHNsZWlnaHQtb2YtaGFuZCBpbiB1c2luZyBhIHdvcmtxdWV1ZSB0byBhdm9pZCBsb2NrZGVwLgoK SG93ZXZlciwgbm90IGFsbCBwYXRocyB0byBtbXVfaW52YWxpZGF0ZV9yYW5nZV9zdGFydCBhcmUg cHJlcGFyZWQgdG8KaGFuZGxlIGZhaWx1cmUsIHNvIGluc3RlYWQgb2YgcmVwb3J0aW5nIHRoZSBy ZWN1cnNpb24sIGRlYWwgd2l0aCBpdC4KCkJ1Z3ppbGxhOiBodHRwczovL2J1Z3MuZnJlZWRlc2t0 b3Aub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDgzNzUKUmVmZXJlbmNlczogOTMwNjVhYzc1M2U0ICgi bW0sIG9vbTogZGlzdGluZ3Vpc2ggYmxvY2thYmxlIG1vZGUgZm9yIG1tdSBub3RpZmllcnMiKQpT aWduZWQtb2ZmLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KLS0t CiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgICAgfCAgIDQgKy0KIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgICAgICAgICB8ICAxMiArLQogZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9nZW1fdXNlcnB0ci5jIHwgMjE5ICsrKysrKysrKysrKy0tLS0tLS0tLS0t LQogMyBmaWxlcyBjaGFuZ2VkLCAxMTUgaW5zZXJ0aW9ucygrKSwgMTIwIGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2Rydi5oCmluZGV4IDJkNzc2MWI4YWMwNy4uYzNiOTRjM2Y5MzBmIDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKQEAgLTMwNzYsOCArMzA3Niw4IEBAIGVudW0gaTkxNV9t bV9zdWJjbGFzcyB7IC8qIGxvY2tkZXAgc3ViY2xhc3MgZm9yIG9iai0+bW0ubG9jayAqLwogCUk5 MTVfTU1fU0hSSU5LRVIKIH07CiAKLXZvaWQgX19pOTE1X2dlbV9vYmplY3RfcHV0X3BhZ2VzKHN0 cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCi0JCQkJIGVudW0gaTkxNV9tbV9zdWJjbGFz cyBzdWJjbGFzcyk7CitpbnQgX19pOTE1X2dlbV9vYmplY3RfcHV0X3BhZ2VzKHN0cnVjdCBkcm1f aTkxNV9nZW1fb2JqZWN0ICpvYmosCisJCQkJZW51bSBpOTE1X21tX3N1YmNsYXNzIHN1YmNsYXNz KTsKIHZvaWQgX19pOTE1X2dlbV9vYmplY3RfaW52YWxpZGF0ZShzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X29iamVjdCAqb2JqKTsKIAogZW51bSBpOTE1X21hcF90eXBlIHsKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bS5jCmluZGV4IDkzZDA5MjgyNzEwZC4uZGU3Y2NiM2ViN2I4IDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtLmMKQEAgLTI0NTQsMTcgKzI0NTQsMTggQEAgX19pOTE1X2dlbV9vYmplY3RfdW5zZXRfcGFn ZXMoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKIAlyZXR1cm4gcGFnZXM7CiB9CiAK LXZvaWQgX19pOTE1X2dlbV9vYmplY3RfcHV0X3BhZ2VzKHN0cnVjdCBkcm1faTkxNV9nZW1fb2Jq ZWN0ICpvYmosCi0JCQkJIGVudW0gaTkxNV9tbV9zdWJjbGFzcyBzdWJjbGFzcykKK2ludCBfX2k5 MTVfZ2VtX29iamVjdF9wdXRfcGFnZXMoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwK KwkJCQllbnVtIGk5MTVfbW1fc3ViY2xhc3Mgc3ViY2xhc3MpCiB7CiAJc3RydWN0IHNnX3RhYmxl ICpwYWdlczsKKwlpbnQgcmV0ID0gLUVCVVNZOwogCiAJaWYgKGk5MTVfZ2VtX29iamVjdF9oYXNf cGlubmVkX3BhZ2VzKG9iaikpCi0JCXJldHVybjsKKwkJcmV0dXJuIC1FQlVTWTsKIAogCUdFTV9C VUdfT04ob2JqLT5iaW5kX2NvdW50KTsKIAlpZiAoIWk5MTVfZ2VtX29iamVjdF9oYXNfcGFnZXMo b2JqKSkKLQkJcmV0dXJuOworCQlyZXR1cm4gMDsKIAogCS8qIE1heSBiZSBjYWxsZWQgYnkgc2hy aW5rZXIgZnJvbSB3aXRoaW4gZ2V0X3BhZ2VzKCkgKG9uIGFub3RoZXIgYm8pICovCiAJbXV0ZXhf bG9ja19uZXN0ZWQoJm9iai0+bW0ubG9jaywgc3ViY2xhc3MpOwpAQCAtMjQ4MCw4ICsyNDgxLDEx IEBAIHZvaWQgX19pOTE1X2dlbV9vYmplY3RfcHV0X3BhZ2VzKHN0cnVjdCBkcm1faTkxNV9nZW1f b2JqZWN0ICpvYmosCiAJaWYgKCFJU19FUlIocGFnZXMpKQogCQlvYmotPm9wcy0+cHV0X3BhZ2Vz KG9iaiwgcGFnZXMpOwogCisJcmV0ID0gMDsKIHVubG9jazoKIAltdXRleF91bmxvY2soJm9iai0+ bW0ubG9jayk7CisKKwlyZXR1cm4gcmV0OwogfQogCiBib29sIGk5MTVfc2dfdHJpbShzdHJ1Y3Qg c2dfdGFibGUgKm9yaWdfc3QpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbV91c2VycHRyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV91c2VycHRyLmMK aW5kZXggMmM5YjI4NDAzNmQxLi5hOGYzYzMwNGRiNTUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ2VtX3VzZXJwdHIuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV91c2VycHRyLmMKQEAgLTUwLDc5ICs1MCw4NCBAQCBzdHJ1Y3QgaTkxNV9tbXVfbm90 aWZpZXIgewogCXN0cnVjdCBobGlzdF9ub2RlIG5vZGU7CiAJc3RydWN0IG1tdV9ub3RpZmllciBt bjsKIAlzdHJ1Y3QgcmJfcm9vdF9jYWNoZWQgb2JqZWN0czsKLQlzdHJ1Y3Qgd29ya3F1ZXVlX3N0 cnVjdCAqd3E7CisJc3RydWN0IGk5MTVfbW1fc3RydWN0ICptbTsKIH07CiAKIHN0cnVjdCBpOTE1 X21tdV9vYmplY3QgewogCXN0cnVjdCBpOTE1X21tdV9ub3RpZmllciAqbW47CiAJc3RydWN0IGRy bV9pOTE1X2dlbV9vYmplY3QgKm9iajsKIAlzdHJ1Y3QgaW50ZXJ2YWxfdHJlZV9ub2RlIGl0Owot CXN0cnVjdCBsaXN0X2hlYWQgbGluazsKLQlzdHJ1Y3Qgd29ya19zdHJ1Y3Qgd29yazsKLQlib29s IGF0dGFjaGVkOwogfTsKIAotc3RhdGljIHZvaWQgY2FuY2VsX3VzZXJwdHIoc3RydWN0IHdvcmtf c3RydWN0ICp3b3JrKQotewotCXN0cnVjdCBpOTE1X21tdV9vYmplY3QgKm1vID0gY29udGFpbmVy X29mKHdvcmssIHR5cGVvZigqbW8pLCB3b3JrKTsKLQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVj dCAqb2JqID0gbW8tPm9iajsKLQlzdHJ1Y3Qgd29ya19zdHJ1Y3QgKmFjdGl2ZTsKLQotCS8qIENh bmNlbCBhbnkgYWN0aXZlIHdvcmtlciBhbmQgZm9yY2UgdXMgdG8gcmUtZXZhbHVhdGUgZ3VwICov Ci0JbXV0ZXhfbG9jaygmb2JqLT5tbS5sb2NrKTsKLQlhY3RpdmUgPSBmZXRjaF9hbmRfemVybygm b2JqLT51c2VycHRyLndvcmspOwotCW11dGV4X3VubG9jaygmb2JqLT5tbS5sb2NrKTsKLQlpZiAo YWN0aXZlKQotCQlnb3RvIG91dDsKLQotCWk5MTVfZ2VtX29iamVjdF93YWl0KG9iaiwgSTkxNV9X QUlUX0FMTCwgTUFYX1NDSEVEVUxFX1RJTUVPVVQsIE5VTEwpOwotCi0JbXV0ZXhfbG9jaygmb2Jq LT5iYXNlLmRldi0+c3RydWN0X211dGV4KTsKLQotCS8qIFdlIGFyZSBpbnNpZGUgYSBrdGhyZWFk IGNvbnRleHQgYW5kIGNhbid0IGJlIGludGVycnVwdGVkICovCi0JaWYgKGk5MTVfZ2VtX29iamVj dF91bmJpbmQob2JqKSA9PSAwKQotCQlfX2k5MTVfZ2VtX29iamVjdF9wdXRfcGFnZXMob2JqLCBJ OTE1X01NX05PUk1BTCk7Ci0JV0FSTl9PTkNFKGk5MTVfZ2VtX29iamVjdF9oYXNfcGFnZXMob2Jq KSwKLQkJICAiRmFpbGVkIHRvIHJlbGVhc2UgcGFnZXM6IGJpbmRfY291bnQ9JWQsIHBhZ2VzX3Bp bl9jb3VudD0lZCwgcGluX2dsb2JhbD0lZFxuIiwKLQkJICBvYmotPmJpbmRfY291bnQsCi0JCSAg YXRvbWljX3JlYWQoJm9iai0+bW0ucGFnZXNfcGluX2NvdW50KSwKLQkJICBvYmotPnBpbl9nbG9i YWwpOwotCi0JbXV0ZXhfdW5sb2NrKCZvYmotPmJhc2UuZGV2LT5zdHJ1Y3RfbXV0ZXgpOwotCi1v dXQ6Ci0JaTkxNV9nZW1fb2JqZWN0X3B1dChvYmopOwotfQotCiBzdGF0aWMgdm9pZCBhZGRfb2Jq ZWN0KHN0cnVjdCBpOTE1X21tdV9vYmplY3QgKm1vKQogewotCWlmIChtby0+YXR0YWNoZWQpCisJ aWYgKCFSQl9FTVBUWV9OT0RFKCZtby0+aXQucmIpKQogCQlyZXR1cm47CiAKIAlpbnRlcnZhbF90 cmVlX2luc2VydCgmbW8tPml0LCAmbW8tPm1uLT5vYmplY3RzKTsKLQltby0+YXR0YWNoZWQgPSB0 cnVlOwogfQogCiBzdGF0aWMgdm9pZCBkZWxfb2JqZWN0KHN0cnVjdCBpOTE1X21tdV9vYmplY3Qg Km1vKQogewotCWlmICghbW8tPmF0dGFjaGVkKQorCWlmIChSQl9FTVBUWV9OT0RFKCZtby0+aXQu cmIpKQogCQlyZXR1cm47CiAKIAlpbnRlcnZhbF90cmVlX3JlbW92ZSgmbW8tPml0LCAmbW8tPm1u LT5vYmplY3RzKTsKLQltby0+YXR0YWNoZWQgPSBmYWxzZTsKKwlSQl9DTEVBUl9OT0RFKCZtby0+ aXQucmIpOworfQorCitzdGF0aWMgdm9pZAorX19pOTE1X2dlbV91c2VycHRyX3NldF9hY3RpdmUo c3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwgYm9vbCB2YWx1ZSkKK3sKKwlzdHJ1Y3Qg aTkxNV9tbXVfb2JqZWN0ICptbyA9IG9iai0+dXNlcnB0ci5tbXVfb2JqZWN0OworCisJLyoKKwkg KiBEdXJpbmcgbW1faW52YWxpZGF0ZV9yYW5nZSB3ZSBuZWVkIHRvIGNhbmNlbCBhbnkgdXNlcnB0 ciB0aGF0CisJICogb3ZlcmxhcHMgdGhlIHJhbmdlIGJlaW5nIGludmFsaWRhdGVkLiBEb2luZyBz byByZXF1aXJlcyB0aGUKKwkgKiBzdHJ1Y3RfbXV0ZXgsIGFuZCB0aGF0IHJpc2tzIHJlY3Vyc2lv bi4gSW4gb3JkZXIgdG8gY2F1c2UKKwkgKiByZWN1cnNpb24sIHRoZSB1c2VyIG11c3QgYWxpYXMg dGhlIHVzZXJwdHIgYWRkcmVzcyBzcGFjZSB3aXRoCisJICogYSBHVFQgbW1hcHBpbmcgKHBvc3Np YmxlIHdpdGggYSBNQVBfRklYRUQpIC0gdGhlbiB3aGVuIHdlIGhhdmUKKwkgKiB0byBpbnZhbGlk YXRlIHRoYXQgbW1hcGluZywgbW1faW52YWxpZGF0ZV9yYW5nZSBpcyBjYWxsZWQgd2l0aAorCSAq IHRoZSB1c2VycHRyIGFkZHJlc3MgKmFuZCogdGhlIHN0cnVjdF9tdXRleCBoZWxkLiAgVG8gcHJl dmVudCB0aGF0CisJICogd2Ugc2V0IGEgZmxhZyB1bmRlciB0aGUgaTkxNV9tbXVfbm90aWZpZXIg c3BpbmxvY2sgdG8gaW5kaWNhdGUKKwkgKiB3aGV0aGVyIHRoaXMgb2JqZWN0IGlzIHZhbGlkLgor CSAqLworCWlmICghbW8pCisJCXJldHVybjsKKworCXNwaW5fbG9jaygmbW8tPm1uLT5sb2NrKTsK KwlpZiAodmFsdWUpCisJCWFkZF9vYmplY3QobW8pOworCWVsc2UKKwkJZGVsX29iamVjdChtbyk7 CisJc3Bpbl91bmxvY2soJm1vLT5tbi0+bG9jayk7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgbXV0ZXgg Kl9faTkxNV9tdXRleF9sb2NrX3JlY3Vyc2l2ZShzdHJ1Y3QgbXV0ZXggKm0pCit7CisJc3dpdGNo IChtdXRleF90cnlsb2NrX3JlY3Vyc2l2ZShtKSkgeworCWRlZmF1bHQ6CisJY2FzZSBNVVRFWF9U UllMT0NLX0ZBSUxFRDoKKwkJbXV0ZXhfbG9jayhtKTsKKwljYXNlIE1VVEVYX1RSWUxPQ0tfU1VD Q0VTUzoKKwkJcmV0dXJuIG07CisKKwljYXNlIE1VVEVYX1RSWUxPQ0tfUkVDVVJTSVZFOgorCQly ZXR1cm4gRVJSX1BUUigtRUVYSVNUKTsKKwl9CiB9CiAKIHN0YXRpYyBpbnQgaTkxNV9nZW1fdXNl cnB0cl9tbl9pbnZhbGlkYXRlX3JhbmdlX3N0YXJ0KHN0cnVjdCBtbXVfbm90aWZpZXIgKl9tbiwK LQkJCQkJCSAgICAgICBzdHJ1Y3QgbW1fc3RydWN0ICptbSwKLQkJCQkJCSAgICAgICB1bnNpZ25l ZCBsb25nIHN0YXJ0LAotCQkJCQkJICAgICAgIHVuc2lnbmVkIGxvbmcgZW5kLAotCQkJCQkJICAg ICAgIGJvb2wgYmxvY2thYmxlKQorCQkJCQkJICAgICAgc3RydWN0IG1tX3N0cnVjdCAqbW0sCisJ CQkJCQkgICAgICB1bnNpZ25lZCBsb25nIHN0YXJ0LAorCQkJCQkJICAgICAgdW5zaWduZWQgbG9u ZyBlbmQsCisJCQkJCQkgICAgICBib29sIGJsb2NrYWJsZSkKIHsKIAlzdHJ1Y3QgaTkxNV9tbXVf bm90aWZpZXIgKm1uID0KIAkJY29udGFpbmVyX29mKF9tbiwgc3RydWN0IGk5MTVfbW11X25vdGlm aWVyLCBtbik7Ci0Jc3RydWN0IGk5MTVfbW11X29iamVjdCAqbW87CiAJc3RydWN0IGludGVydmFs X3RyZWVfbm9kZSAqaXQ7Ci0JTElTVF9IRUFEKGNhbmNlbGxlZCk7CisJc3RydWN0IG11dGV4ICp1 bmxvY2sgPSBOVUxMOworCWludCByZXQgPSAwOwogCiAJaWYgKFJCX0VNUFRZX1JPT1QoJm1uLT5v YmplY3RzLnJiX3Jvb3QpKQogCQlyZXR1cm4gMDsKQEAgLTEzMywxMSArMTM4LDE2IEBAIHN0YXRp YyBpbnQgaTkxNV9nZW1fdXNlcnB0cl9tbl9pbnZhbGlkYXRlX3JhbmdlX3N0YXJ0KHN0cnVjdCBt bXVfbm90aWZpZXIgKl9tbiwKIAlzcGluX2xvY2soJm1uLT5sb2NrKTsKIAlpdCA9IGludGVydmFs X3RyZWVfaXRlcl9maXJzdCgmbW4tPm9iamVjdHMsIHN0YXJ0LCBlbmQpOwogCXdoaWxlIChpdCkg eworCQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqOworCQlib29sIGhhc19wYWdlcyA9 IGZhbHNlOworCiAJCWlmICghYmxvY2thYmxlKSB7Ci0JCQlzcGluX3VubG9jaygmbW4tPmxvY2sp OwotCQkJcmV0dXJuIC1FQUdBSU47CisJCQlyZXQgPSAtRUFHQUlOOworCQkJYnJlYWs7CiAJCX0K LQkJLyogVGhlIG1tdV9vYmplY3QgaXMgcmVsZWFzZWQgbGF0ZSB3aGVuIGRlc3Ryb3lpbmcgdGhl CisKKwkJLyoKKwkJICogVGhlIG1tdV9vYmplY3QgaXMgcmVsZWFzZWQgbGF0ZSB3aGVuIGRlc3Ry b3lpbmcgdGhlCiAJCSAqIEdFTSBvYmplY3Qgc28gaXQgaXMgZW50aXJlbHkgcG9zc2libGUgdG8g Z2FpbiBhCiAJCSAqIHJlZmVyZW5jZSBvbiBhbiBvYmplY3QgaW4gdGhlIHByb2Nlc3Mgb2YgYmVp bmcgZnJlZWQKIAkJICogc2luY2Ugb3VyIHNlcmlhbGlzYXRpb24gaXMgdmlhIHRoZSBzcGlubG9j ayBhbmQgbm90CkBAIC0xNDYsMjEgKzE1Niw0NCBAQCBzdGF0aWMgaW50IGk5MTVfZ2VtX3VzZXJw dHJfbW5faW52YWxpZGF0ZV9yYW5nZV9zdGFydChzdHJ1Y3QgbW11X25vdGlmaWVyICpfbW4sCiAJ CSAqIHVzZS1hZnRlci1mcmVlIHdlIG9ubHkgYWNxdWlyZSBhIHJlZmVyZW5jZSBvbiB0aGUKIAkJ ICogb2JqZWN0IGlmIGl0IGlzIG5vdCBpbiB0aGUgcHJvY2VzcyBvZiBiZWluZyBkZXN0cm95ZWQu CiAJCSAqLwotCQltbyA9IGNvbnRhaW5lcl9vZihpdCwgc3RydWN0IGk5MTVfbW11X29iamVjdCwg aXQpOwotCQlpZiAoa3JlZl9nZXRfdW5sZXNzX3plcm8oJm1vLT5vYmotPmJhc2UucmVmY291bnQp KQotCQkJcXVldWVfd29yayhtbi0+d3EsICZtby0+d29yayk7CisJCW9iaiA9IGNvbnRhaW5lcl9v ZihpdCwgc3RydWN0IGk5MTVfbW11X29iamVjdCwgaXQpLT5vYmo7CisJCWlmICgha3JlZl9nZXRf dW5sZXNzX3plcm8oJm9iai0+YmFzZS5yZWZjb3VudCkpIHsKKwkJCWl0ID0gaW50ZXJ2YWxfdHJl ZV9pdGVyX25leHQoaXQsIHN0YXJ0LCBlbmQpOworCQkJY29udGludWU7CisJCX0KKwkJc3Bpbl91 bmxvY2soJm1uLT5sb2NrKTsKIAotCQlsaXN0X2FkZCgmbW8tPmxpbmssICZjYW5jZWxsZWQpOwot CQlpdCA9IGludGVydmFsX3RyZWVfaXRlcl9uZXh0KGl0LCBzdGFydCwgZW5kKTsKKwkJLyogQ2Fu Y2VsIGFueSBwZW5kaW5nIHdvcmtlciBhbmQgZm9yY2UgdXMgdG8gcmUtZXZhbHVhdGUgZ3VwICov CisJCW11dGV4X2xvY2tfbmVzdGVkKCZvYmotPm1tLmxvY2ssIEk5MTVfTU1fU0hSSU5LRVIpOwor CQlpZiAoZmV0Y2hfYW5kX3plcm8oJm9iai0+dXNlcnB0ci53b3JrKSkKKwkJCV9faTkxNV9nZW1f dXNlcnB0cl9zZXRfYWN0aXZlKG9iaiwgZmFsc2UpOworCQllbHNlCisJCQloYXNfcGFnZXMgPSBp OTE1X2dlbV9vYmplY3RfaGFzX3BhZ2VzKG9iaik7CisJCW11dGV4X3VubG9jaygmb2JqLT5tbS5s b2NrKTsKKworCQlpZiAoaGFzX3BhZ2VzKSB7CisJCQlpZiAoIXVubG9jaykKKwkJCQl1bmxvY2sg PSBfX2k5MTVfbXV0ZXhfbG9ja19yZWN1cnNpdmUoJm1uLT5tbS0+aTkxNS0+ZHJtLnN0cnVjdF9t dXRleCk7CisJCQlyZXQgPSBpOTE1X2dlbV9vYmplY3RfdW5iaW5kKG9iaik7CisJCQlpZiAocmV0 ID09IDApCisJCQkJcmV0ID0gX19pOTE1X2dlbV9vYmplY3RfcHV0X3BhZ2VzKG9iaiwgSTkxNV9N TV9TSFJJTktFUik7CisJCX0KKworCQlpOTE1X2dlbV9vYmplY3RfcHV0KG9iaik7CisJCWlmIChy ZXQpCisJCQlnb3RvIHVubG9jazsKKworCQlzcGluX2xvY2soJm1uLT5sb2NrKTsKKwkJaXQgPSBp bnRlcnZhbF90cmVlX2l0ZXJfZmlyc3QoJm1uLT5vYmplY3RzLCBzdGFydCwgZW5kKTsKIAl9Ci0J bGlzdF9mb3JfZWFjaF9lbnRyeShtbywgJmNhbmNlbGxlZCwgbGluaykKLQkJZGVsX29iamVjdCht byk7CiAJc3Bpbl91bmxvY2soJm1uLT5sb2NrKTsKIAotCWlmICghbGlzdF9lbXB0eSgmY2FuY2Vs bGVkKSkKLQkJZmx1c2hfd29ya3F1ZXVlKG1uLT53cSk7Cit1bmxvY2s6CisJaWYgKCFJU19FUlJf T1JfTlVMTCh1bmxvY2spKQorCQltdXRleF91bmxvY2sodW5sb2NrKTsKKworCXJldHVybiByZXQ7 CiAKLQlyZXR1cm4gMDsKIH0KIAogc3RhdGljIGNvbnN0IHN0cnVjdCBtbXVfbm90aWZpZXJfb3Bz IGk5MTVfZ2VtX3VzZXJwdHJfbm90aWZpZXIgPSB7CkBAIC0xNjgsNyArMjAxLDcgQEAgc3RhdGlj IGNvbnN0IHN0cnVjdCBtbXVfbm90aWZpZXJfb3BzIGk5MTVfZ2VtX3VzZXJwdHJfbm90aWZpZXIg PSB7CiB9OwogCiBzdGF0aWMgc3RydWN0IGk5MTVfbW11X25vdGlmaWVyICoKLWk5MTVfbW11X25v dGlmaWVyX2NyZWF0ZShzdHJ1Y3QgbW1fc3RydWN0ICptbSkKK2k5MTVfbW11X25vdGlmaWVyX2Ny ZWF0ZShzdHJ1Y3QgaTkxNV9tbV9zdHJ1Y3QgKm1tKQogewogCXN0cnVjdCBpOTE1X21tdV9ub3Rp ZmllciAqbW47CiAKQEAgLTE3OSwxMyArMjEyLDcgQEAgaTkxNV9tbXVfbm90aWZpZXJfY3JlYXRl KHN0cnVjdCBtbV9zdHJ1Y3QgKm1tKQogCXNwaW5fbG9ja19pbml0KCZtbi0+bG9jayk7CiAJbW4t Pm1uLm9wcyA9ICZpOTE1X2dlbV91c2VycHRyX25vdGlmaWVyOwogCW1uLT5vYmplY3RzID0gUkJf Uk9PVF9DQUNIRUQ7Ci0JbW4tPndxID0gYWxsb2Nfd29ya3F1ZXVlKCJpOTE1LXVzZXJwdHItcmVs ZWFzZSIsCi0JCQkJIFdRX1VOQk9VTkQgfCBXUV9NRU1fUkVDTEFJTSwKLQkJCQkgMCk7Ci0JaWYg KG1uLT53cSA9PSBOVUxMKSB7Ci0JCWtmcmVlKG1uKTsKLQkJcmV0dXJuIEVSUl9QVFIoLUVOT01F TSk7Ci0JfQorCW1uLT5tbSA9IG1tOwogCiAJcmV0dXJuIG1uOwogfQpAQCAtMTk1LDE2ICsyMjIs MTQgQEAgaTkxNV9nZW1fdXNlcnB0cl9yZWxlYXNlX19tbXVfbm90aWZpZXIoc3RydWN0IGRybV9p OTE1X2dlbV9vYmplY3QgKm9iaikKIHsKIAlzdHJ1Y3QgaTkxNV9tbXVfb2JqZWN0ICptbzsKIAot CW1vID0gb2JqLT51c2VycHRyLm1tdV9vYmplY3Q7Ci0JaWYgKG1vID09IE5VTEwpCisJbW8gPSBm ZXRjaF9hbmRfemVybygmb2JqLT51c2VycHRyLm1tdV9vYmplY3QpOworCWlmICghbW8pCiAJCXJl dHVybjsKIAogCXNwaW5fbG9jaygmbW8tPm1uLT5sb2NrKTsKIAlkZWxfb2JqZWN0KG1vKTsKIAlz cGluX3VubG9jaygmbW8tPm1uLT5sb2NrKTsKIAlrZnJlZShtbyk7Ci0KLQlvYmotPnVzZXJwdHIu bW11X29iamVjdCA9IE5VTEw7CiB9CiAKIHN0YXRpYyBzdHJ1Y3QgaTkxNV9tbXVfbm90aWZpZXIg KgpAQCAtMjE3LDcgKzI0Miw3IEBAIGk5MTVfbW11X25vdGlmaWVyX2ZpbmQoc3RydWN0IGk5MTVf bW1fc3RydWN0ICptbSkKIAlpZiAobW4pCiAJCXJldHVybiBtbjsKIAotCW1uID0gaTkxNV9tbXVf bm90aWZpZXJfY3JlYXRlKG1tLT5tbSk7CisJbW4gPSBpOTE1X21tdV9ub3RpZmllcl9jcmVhdGUo bW0pOwogCWlmIChJU19FUlIobW4pKQogCQllcnIgPSBQVFJfRVJSKG1uKTsKIApAQCAtMjQwLDEw ICsyNjUsOCBAQCBpOTE1X21tdV9ub3RpZmllcl9maW5kKHN0cnVjdCBpOTE1X21tX3N0cnVjdCAq bW0pCiAJbXV0ZXhfdW5sb2NrKCZtbS0+aTkxNS0+bW1fbG9jayk7CiAJdXBfd3JpdGUoJm1tLT5t bS0+bW1hcF9zZW0pOwogCi0JaWYgKG1uICYmICFJU19FUlIobW4pKSB7Ci0JCWRlc3Ryb3lfd29y a3F1ZXVlKG1uLT53cSk7CisJaWYgKG1uICYmICFJU19FUlIobW4pKQogCQlrZnJlZShtbik7Ci0J fQogCiAJcmV0dXJuIGVyciA/IEVSUl9QVFIoZXJyKSA6IG1tLT5tbjsKIH0KQEAgLTI2NiwxNCAr Mjg5LDE0IEBAIGk5MTVfZ2VtX3VzZXJwdHJfaW5pdF9fbW11X25vdGlmaWVyKHN0cnVjdCBkcm1f aTkxNV9nZW1fb2JqZWN0ICpvYmosCiAJCXJldHVybiBQVFJfRVJSKG1uKTsKIAogCW1vID0ga3ph bGxvYyhzaXplb2YoKm1vKSwgR0ZQX0tFUk5FTCk7Ci0JaWYgKG1vID09IE5VTEwpCisJaWYgKCFt bykKIAkJcmV0dXJuIC1FTk9NRU07CiAKIAltby0+bW4gPSBtbjsKIAltby0+b2JqID0gb2JqOwog CW1vLT5pdC5zdGFydCA9IG9iai0+dXNlcnB0ci5wdHI7CiAJbW8tPml0Lmxhc3QgPSBvYmotPnVz ZXJwdHIucHRyICsgb2JqLT5iYXNlLnNpemUgLSAxOwotCUlOSVRfV09SSygmbW8tPndvcmssIGNh bmNlbF91c2VycHRyKTsKKwlSQl9DTEVBUl9OT0RFKCZtby0+aXQucmIpOwogCiAJb2JqLT51c2Vy cHRyLm1tdV9vYmplY3QgPSBtbzsKIAlyZXR1cm4gMDsKQEAgLTI4NywxMiArMzEwLDE2IEBAIGk5 MTVfbW11X25vdGlmaWVyX2ZyZWUoc3RydWN0IGk5MTVfbW11X25vdGlmaWVyICptbiwKIAkJcmV0 dXJuOwogCiAJbW11X25vdGlmaWVyX3VucmVnaXN0ZXIoJm1uLT5tbiwgbW0pOwotCWRlc3Ryb3lf d29ya3F1ZXVlKG1uLT53cSk7CiAJa2ZyZWUobW4pOwogfQogCiAjZWxzZQogCitzdGF0aWMgdm9p ZAorX19pOTE1X2dlbV91c2VycHRyX3NldF9hY3RpdmUoc3RydWN0IGRybV9pOTE1X2dlbV9vYmpl Y3QgKm9iaiwgYm9vbCB2YWx1ZSkKK3sKK30KKwogc3RhdGljIHZvaWQKIGk5MTVfZ2VtX3VzZXJw dHJfcmVsZWFzZV9fbW11X25vdGlmaWVyKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmop CiB7CkBAIC00NjEsNDIgKzQ4OCw2IEBAIF9faTkxNV9nZW1fdXNlcnB0cl9hbGxvY19wYWdlcyhz dHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAogCXJldHVybiBzdDsKIH0KIAotc3RhdGlj IGludAotX19pOTE1X2dlbV91c2VycHRyX3NldF9hY3RpdmUoc3RydWN0IGRybV9pOTE1X2dlbV9v YmplY3QgKm9iaiwKLQkJCSAgICAgIGJvb2wgdmFsdWUpCi17Ci0JaW50IHJldCA9IDA7Ci0KLQkv KiBEdXJpbmcgbW1faW52YWxpZGF0ZV9yYW5nZSB3ZSBuZWVkIHRvIGNhbmNlbCBhbnkgdXNlcnB0 ciB0aGF0Ci0JICogb3ZlcmxhcHMgdGhlIHJhbmdlIGJlaW5nIGludmFsaWRhdGVkLiBEb2luZyBz byByZXF1aXJlcyB0aGUKLQkgKiBzdHJ1Y3RfbXV0ZXgsIGFuZCB0aGF0IHJpc2tzIHJlY3Vyc2lv bi4gSW4gb3JkZXIgdG8gY2F1c2UKLQkgKiByZWN1cnNpb24sIHRoZSB1c2VyIG11c3QgYWxpYXMg dGhlIHVzZXJwdHIgYWRkcmVzcyBzcGFjZSB3aXRoCi0JICogYSBHVFQgbW1hcHBpbmcgKHBvc3Np YmxlIHdpdGggYSBNQVBfRklYRUQpIC0gdGhlbiB3aGVuIHdlIGhhdmUKLQkgKiB0byBpbnZhbGlk YXRlIHRoYXQgbW1hcGluZywgbW1faW52YWxpZGF0ZV9yYW5nZSBpcyBjYWxsZWQgd2l0aAotCSAq IHRoZSB1c2VycHRyIGFkZHJlc3MgKmFuZCogdGhlIHN0cnVjdF9tdXRleCBoZWxkLiAgVG8gcHJl dmVudCB0aGF0Ci0JICogd2Ugc2V0IGEgZmxhZyB1bmRlciB0aGUgaTkxNV9tbXVfbm90aWZpZXIg c3BpbmxvY2sgdG8gaW5kaWNhdGUKLQkgKiB3aGV0aGVyIHRoaXMgb2JqZWN0IGlzIHZhbGlkLgot CSAqLwotI2lmIGRlZmluZWQoQ09ORklHX01NVV9OT1RJRklFUikKLQlpZiAob2JqLT51c2VycHRy Lm1tdV9vYmplY3QgPT0gTlVMTCkKLQkJcmV0dXJuIDA7Ci0KLQlzcGluX2xvY2soJm9iai0+dXNl cnB0ci5tbXVfb2JqZWN0LT5tbi0+bG9jayk7Ci0JLyogSW4gb3JkZXIgdG8gc2VyaWFsaXNlIGdl dF9wYWdlcyB3aXRoIGFuIG91dHN0YW5kaW5nCi0JICogY2FuY2VsX3VzZXJwdHIsIHdlIG11c3Qg ZHJvcCB0aGUgc3RydWN0X211dGV4IGFuZCB0cnkgYWdhaW4uCi0JICovCi0JaWYgKCF2YWx1ZSkK LQkJZGVsX29iamVjdChvYmotPnVzZXJwdHIubW11X29iamVjdCk7Ci0JZWxzZSBpZiAoIXdvcmtf cGVuZGluZygmb2JqLT51c2VycHRyLm1tdV9vYmplY3QtPndvcmspKQotCQlhZGRfb2JqZWN0KG9i ai0+dXNlcnB0ci5tbXVfb2JqZWN0KTsKLQllbHNlCi0JCXJldCA9IC1FQUdBSU47Ci0Jc3Bpbl91 bmxvY2soJm9iai0+dXNlcnB0ci5tbXVfb2JqZWN0LT5tbi0+bG9jayk7Ci0jZW5kaWYKLQotCXJl dHVybiByZXQ7Ci19Ci0KIHN0YXRpYyB2b2lkCiBfX2k5MTVfZ2VtX3VzZXJwdHJfZ2V0X3BhZ2Vz X3dvcmtlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKl93b3JrKQogewotLSAKMi4xOS4xCgpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGlu ZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVl ZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK