From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ramalingam C Subject: [PATCH v7 04/11] drm: revocation check at drm subsystem Date: Tue, 7 May 2019 21:57:38 +0530 Message-ID: <20190507162745.25600-5-ramalingam.c@intel.com> References: <20190507162745.25600-1-ramalingam.c@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190507162745.25600-1-ramalingam.c@intel.com> 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, dri-devel@lists.freedesktop.org, daniel.vetter@intel.com List-Id: intel-gfx@lists.freedesktop.org T24gZXZlcnkgaGRjcCByZXZvY2F0aW9uIGNoZWNrIHJlcXVlc3QgU1JNIGlzIHJlYWQgZnJvbSBm dyBmaWxlCi9saWIvZmlybXdhcmUvZGlzcGxheV9oZGNwX3NybS5iaW4KClNSTSB0YWJsZSBpcyBw YXJzZWQgYW5kIHN0b3JlZCBhdCBkcm1faGRjcC5jLCB3aXRoIGZ1bmN0aW9ucyBleHBvcnRlZApm b3IgdGhlIHNlcnZpY2VzIGZvciByZXZvY2F0aW9uIGNoZWNrIGZyb20gZHJpdmVycyAod2hpY2gK aW1wbGVtZW50cyB0aGUgSERDUCBhdXRoZW50aWNhdGlvbikKClRoaXMgcGF0Y2ggaGFuZGxlcyB0 aGUgSERDUDEuNCBhbmQgMi4yIHZlcnNpb25zIG9mIFNSTSB0YWJsZS4KCnYyOgogIG1vdmVkIHRo ZSB1QVBJIHRvIHJlcXVlc3RfZmlybXdhcmVfZGlyZWN0KCkgW0RhbmllbF0KdjM6CiAga2RvYyBh ZGRlZC4gW0RhbmllbF0KICBzcm1faGVhZGVyIHVuaWZpZWQgYW5kIGJpdCBmaWVsZCBkZWZpbml0 aW9ucyBhcmUgcmVtb3ZlZC4gW0RhbmllbF0KICBsb2NraW5nIGltcHJvdmVkLiBbRGFuaWVsXQog IHZybCBsZW5ndGggdmlvbGF0aW9uIGlzIGZpeGVkLiBbRGFuaWVsXQp2NDoKICBzL19fc3dhYjE2 L2JlMTZfdG9fY3B1IFtEYW5pZWxdCiAgYmUyNF90b19jcHUgaXMgZG9uZSB0aHJvdWdoIGEgZ2xv YmFsIGZ1bmMgW0RhbmllbF0KICBVbnVzZWQgdmFyaWFibGVzIGFyZSByZW1vdmVkLiBbRGFuaWVs XQogIHVuY2hlY2tlZCByZXR1cm4gdmFsdWVzIGFyZSBkcm9wcGVkIGZyb20gc3RhdGljIGZ1bmNz IFtEYW5pZWxdCgpTaWduZWQtb2ZmLWJ5OiBSYW1hbGluZ2FtIEMgPHJhbWFsaW5nYW0uY0BpbnRl bC5jb20+CkFja2VkLWJ5OiBTYXR5ZXNod2FyIFNpbmdoIDxzYXR5ZXNod2FyLnNpbmdoQGludGVs LmNvbT4KUmV2aWV3ZWQtYnk6IERhbmllbCBWZXR0ZXIgPGRhbmllbEBmZndsbC5jaD4KLS0tCiBE b2N1bWVudGF0aW9uL2dwdS9kcm0ta21zLWhlbHBlcnMucnN0IHwgICA2ICsKIGRyaXZlcnMvZ3B1 L2RybS9NYWtlZmlsZSAgICAgICAgICAgICAgfCAgIDIgKy0KIGRyaXZlcnMvZ3B1L2RybS9kcm1f aGRjcC5jICAgICAgICAgICAgfCAzMzMgKysrKysrKysrKysrKysrKysrKysrKysrKysKIGRyaXZl cnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaCAgICAgICAgfCAgIDQgKwogZHJpdmVycy9ncHUvZHJt L2RybV9zeXNmcy5jICAgICAgICAgICB8ICAgMiArCiBpbmNsdWRlL2RybS9kcm1faGRjcC5oICAg ICAgICAgICAgICAgIHwgIDI0ICsrCiA2IGZpbGVzIGNoYW5nZWQsIDM3MCBpbnNlcnRpb25zKCsp LCAxIGRlbGV0aW9uKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2RybV9o ZGNwLmMKCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dwdS9kcm0ta21zLWhlbHBlcnMucnN0 IGIvRG9jdW1lbnRhdGlvbi9ncHUvZHJtLWttcy1oZWxwZXJzLnJzdAppbmRleCAxNDEwMmFlMDM1 ZGMuLjBmZTcyNmE2ZWU2NyAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9ncHUvZHJtLWttcy1o ZWxwZXJzLnJzdAorKysgYi9Eb2N1bWVudGF0aW9uL2dwdS9kcm0ta21zLWhlbHBlcnMucnN0CkBA IC0xODEsNiArMTgxLDEyIEBAIFBhbmVsIEhlbHBlciBSZWZlcmVuY2UKIC4uIGtlcm5lbC1kb2M6 OiBkcml2ZXJzL2dwdS9kcm0vZHJtX3BhbmVsX29yaWVudGF0aW9uX3F1aXJrcy5jCiAgICA6ZXhw b3J0OgogCitIRENQIEhlbHBlciBGdW5jdGlvbnMgUmVmZXJlbmNlCis9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09CisKKy4uIGtlcm5lbC1kb2M6OiBkcml2ZXJzL2dwdS9kcm0vZHJtX2hk Y3AuYworICAgOmV4cG9ydDoKKwogRGlzcGxheSBQb3J0IEhlbHBlciBGdW5jdGlvbnMgUmVmZXJl bmNlCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIApkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlCmlu ZGV4IDcyZjUwMzZkOWJmYS4uZGQwMmU5ZGVjODEwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vTWFrZWZpbGUKKysrIGIvZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlCkBAIC0xNyw3ICsxNyw3 IEBAIGRybS15ICAgICAgIDo9CWRybV9hdXRoLm8gZHJtX2NhY2hlLm8gXAogCQlkcm1fcGxhbmUu byBkcm1fY29sb3JfbWdtdC5vIGRybV9wcmludC5vIFwKIAkJZHJtX2R1bWJfYnVmZmVycy5vIGRy bV9tb2RlX2NvbmZpZy5vIGRybV92YmxhbmsubyBcCiAJCWRybV9zeW5jb2JqLm8gZHJtX2xlYXNl Lm8gZHJtX3dyaXRlYmFjay5vIGRybV9jbGllbnQubyBcCi0JCWRybV9hdG9taWNfdWFwaS5vCisJ CWRybV9hdG9taWNfdWFwaS5vIGRybV9oZGNwLm8KIAogZHJtLSQoQ09ORklHX0RSTV9MRUdBQ1kp ICs9IGRybV9sZWdhY3lfbWlzYy5vIGRybV9idWZzLm8gZHJtX2NvbnRleHQubyBkcm1fZG1hLm8g ZHJtX3NjYXR0ZXIubyBkcm1fbG9jay5vCiBkcm0tJChDT05GSUdfRFJNX0xJQl9SQU5ET00pICs9 IGxpYi9kcm1fcmFuZG9tLm8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1faGRjcC5j IGIvZHJpdmVycy9ncHUvZHJtL2RybV9oZGNwLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMDAwLi41ZTU0MDk1MDVjMzEKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dw dS9kcm0vZHJtX2hkY3AuYwpAQCAtMCwwICsxLDMzMyBAQAorLy8gU1BEWC1MaWNlbnNlLUlkZW50 aWZpZXI6IEdQTC0yLjAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgSW50ZWwgQ29ycG9yYXRp b24uCisgKgorICogQXV0aG9yczoKKyAqIFJhbWFsaW5nYW0gQyA8cmFtYWxpbmdhbS5jQGludGVs LmNvbT4KKyAqLworCisjaW5jbHVkZSA8bGludXgvZGV2aWNlLmg+CisjaW5jbHVkZSA8bGludXgv ZXJyLmg+CisjaW5jbHVkZSA8bGludXgvZ2ZwLmg+CisjaW5jbHVkZSA8bGludXgvZXhwb3J0Lmg+ CisjaW5jbHVkZSA8bGludXgvc2xhYi5oPgorI2luY2x1ZGUgPGxpbnV4L2Zpcm13YXJlLmg+CisK KyNpbmNsdWRlIDxkcm0vZHJtX2hkY3AuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX3N5c2ZzLmg+Cisj aW5jbHVkZSA8ZHJtL2RybV9wcmludC5oPgorI2luY2x1ZGUgPGRybS9kcm1fZGV2aWNlLmg+CisK K3N0cnVjdCBoZGNwX3NybSB7CisJdTMyIHJldm9rZWRfa3N2X2NudDsKKwl1OCAqcmV2b2tlZF9r c3ZfbGlzdDsKKworCS8qIE11dGV4IHRvIHByb3RlY3QgYWJvdmUgc3RydWN0IG1lbWJlciAqLwor CXN0cnVjdCBtdXRleCBtdXRleDsKK30gKnNybV9kYXRhOworCitzdGF0aWMgaW5saW5lIHZvaWQg ZHJtX2hkY3BfcHJpbnRfa3N2KGNvbnN0IHU4ICprc3YpCit7CisJRFJNX0RFQlVHKCJcdCUjMDJ4 LCAlIzAyeCwgJSMwMngsICUjMDJ4LCAlIzAyeFxuIiwKKwkJICBrc3ZbMF0sIGtzdlsxXSwga3N2 WzJdLCBrc3ZbM10sIGtzdls0XSk7Cit9CisKK3N0YXRpYyB1MzIgZHJtX2hkY3BfZ2V0X3Jldm9r ZWRfa3N2X2NvdW50KGNvbnN0IHU4ICpidWYsIHUzMiB2cmxzX2xlbmd0aCkKK3sKKwl1MzIgcGFy c2VkX2J5dGVzID0gMCwga3N2X2NvdW50ID0gMCwgdnJsX2tzdl9jbnQsIHZybF9zejsKKworCXdo aWxlIChwYXJzZWRfYnl0ZXMgPCB2cmxzX2xlbmd0aCkgeworCQl2cmxfa3N2X2NudCA9ICpidWY7 CisJCWtzdl9jb3VudCArPSB2cmxfa3N2X2NudDsKKworCQl2cmxfc3ogPSAodnJsX2tzdl9jbnQg KiBEUk1fSERDUF9LU1ZfTEVOKSArIDE7CisJCWJ1ZiArPSB2cmxfc3o7CisJCXBhcnNlZF9ieXRl cyArPSB2cmxfc3o7CisJfQorCisJLyoKKwkgKiBXaGVuIHZybHMgYXJlIG5vdCB2YWxpZCwga3N2 cyBhcmUgbm90IGNvbnNpZGVyZWQuCisJICogSGVuY2UgU1JNIHdpbGwgYmUgZGlzY2FyZGVkLgor CSAqLworCWlmIChwYXJzZWRfYnl0ZXMgIT0gdnJsc19sZW5ndGgpCisJCWtzdl9jb3VudCA9IDA7 CisKKwlyZXR1cm4ga3N2X2NvdW50OworfQorCitzdGF0aWMgdTMyIGRybV9oZGNwX2dldF9yZXZv a2VkX2tzdnMoY29uc3QgdTggKmJ1ZiwgdTggKnJldm9rZWRfa3N2X2xpc3QsCisJCQkJICAgICB1 MzIgdnJsc19sZW5ndGgpCit7CisJdTMyIHBhcnNlZF9ieXRlcyA9IDAsIGtzdl9jb3VudCA9IDA7 CisJdTMyIHZybF9rc3ZfY250LCB2cmxfa3N2X3N6LCB2cmxfaWR4ID0gMDsKKworCWRvIHsKKwkJ dnJsX2tzdl9jbnQgPSAqYnVmOworCQl2cmxfa3N2X3N6ID0gdnJsX2tzdl9jbnQgKiBEUk1fSERD UF9LU1ZfTEVOOworCisJCWJ1ZisrOworCisJCURSTV9ERUJVRygidnJsOiAlZCwgUmV2b2tlZCBL U1ZzOiAlZFxuIiwgdnJsX2lkeCsrLAorCQkJICB2cmxfa3N2X2NudCk7CisJCW1lbWNweShyZXZv a2VkX2tzdl9saXN0LCBidWYsIHZybF9rc3Zfc3opOworCisJCWtzdl9jb3VudCArPSB2cmxfa3N2 X2NudDsKKwkJcmV2b2tlZF9rc3ZfbGlzdCArPSB2cmxfa3N2X3N6OworCQlidWYgKz0gdnJsX2tz dl9zejsKKworCQlwYXJzZWRfYnl0ZXMgKz0gKHZybF9rc3Zfc3ogKyAxKTsKKwl9IHdoaWxlIChw YXJzZWRfYnl0ZXMgPCB2cmxzX2xlbmd0aCk7CisKKwlyZXR1cm4ga3N2X2NvdW50OworfQorCitz dGF0aWMgaW5saW5lIHUzMiBnZXRfdnJsX2xlbmd0aChjb25zdCB1OCAqYnVmKQoreworCXJldHVy biBkcm1faGRjcF9iZTI0X3RvX2NwdShidWYpOworfQorCitzdGF0aWMgaW50IGRybV9oZGNwX3Bh cnNlX2hkY3AxX3NybShjb25zdCB1OCAqYnVmLCBzaXplX3QgY291bnQpCit7CisJc3RydWN0IGhk Y3Bfc3JtX2hlYWRlciAqaGVhZGVyOworCXUzMiB2cmxfbGVuZ3RoLCBrc3ZfY291bnQ7CisKKwlp ZiAoY291bnQgPCAoc2l6ZW9mKHN0cnVjdCBoZGNwX3NybV9oZWFkZXIpICsKKwkgICAgRFJNX0hE Q1BfMV80X1ZSTF9MRU5HVEhfU0laRSArIERSTV9IRENQXzFfNF9EQ1BfU0lHX1NJWkUpKSB7CisJ CURSTV9FUlJPUigiSW52YWxpZCBibG9iIGxlbmd0aFxuIik7CisJCXJldHVybiAtRUlOVkFMOwor CX0KKworCWhlYWRlciA9IChzdHJ1Y3QgaGRjcF9zcm1faGVhZGVyICopYnVmOworCURSTV9ERUJV RygiU1JNIElEOiAweCV4LCBTUk0gVmVyOiAweCV4LCBTUk0gR2VuIE5vOiAweCV4XG4iLAorCQkg IGhlYWRlci0+c3JtX2lkLAorCQkgIGJlMTZfdG9fY3B1KGhlYWRlci0+c3JtX3ZlcnNpb24pLCBo ZWFkZXItPnNybV9nZW5fbm8pOworCisJV0FSTl9PTihoZWFkZXItPnJlc2VydmVkKTsKKworCWJ1 ZiA9IGJ1ZiArIHNpemVvZigqaGVhZGVyKTsKKwl2cmxfbGVuZ3RoID0gZ2V0X3ZybF9sZW5ndGgo YnVmKTsKKwlpZiAoY291bnQgPCAoc2l6ZW9mKHN0cnVjdCBoZGNwX3NybV9oZWFkZXIpICsgdnJs X2xlbmd0aCkgfHwKKwkgICAgdnJsX2xlbmd0aCA8IChEUk1fSERDUF8xXzRfVlJMX0xFTkdUSF9T SVpFICsKKwkJCSAgRFJNX0hEQ1BfMV80X0RDUF9TSUdfU0laRSkpIHsKKwkJRFJNX0VSUk9SKCJJ bnZhbGlkIGJsb2IgbGVuZ3RoIG9yIHZybCBsZW5ndGhcbiIpOworCQlyZXR1cm4gLUVJTlZBTDsK Kwl9CisKKwkvKiBMZW5ndGggb2YgdGhlIGFsbCB2cmxzIGNvbWJpbmVkICovCisJdnJsX2xlbmd0 aCAtPSAoRFJNX0hEQ1BfMV80X1ZSTF9MRU5HVEhfU0laRSArCisJCSAgICAgICBEUk1fSERDUF8x XzRfRENQX1NJR19TSVpFKTsKKworCWlmICghdnJsX2xlbmd0aCkgeworCQlEUk1fRVJST1IoIk5v IHZybCBmb3VuZFxuIik7CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCWJ1ZiArPSBEUk1fSERD UF8xXzRfVlJMX0xFTkdUSF9TSVpFOworCWtzdl9jb3VudCA9IGRybV9oZGNwX2dldF9yZXZva2Vk X2tzdl9jb3VudChidWYsIHZybF9sZW5ndGgpOworCWlmICgha3N2X2NvdW50KSB7CisJCURSTV9E RUJVRygiUmV2b2tlZCBLU1YgY291bnQgaXMgMFxuIik7CisJCXJldHVybiBjb3VudDsKKwl9CisK KwlrZnJlZShzcm1fZGF0YS0+cmV2b2tlZF9rc3ZfbGlzdCk7CisJc3JtX2RhdGEtPnJldm9rZWRf a3N2X2xpc3QgPSBrY2FsbG9jKGtzdl9jb3VudCwgRFJNX0hEQ1BfS1NWX0xFTiwKKwkJCQkJICAg ICBHRlBfS0VSTkVMKTsKKwlpZiAoIXNybV9kYXRhLT5yZXZva2VkX2tzdl9saXN0KSB7CisJCURS TV9FUlJPUigiT3V0IG9mIE1lbW9yeVxuIik7CisJCXJldHVybiAtRU5PTUVNOworCX0KKworCWlm IChkcm1faGRjcF9nZXRfcmV2b2tlZF9rc3ZzKGJ1Ziwgc3JtX2RhdGEtPnJldm9rZWRfa3N2X2xp c3QsCisJCQkJICAgICAgdnJsX2xlbmd0aCkgIT0ga3N2X2NvdW50KSB7CisJCXNybV9kYXRhLT5y ZXZva2VkX2tzdl9jbnQgPSAwOworCQlrZnJlZShzcm1fZGF0YS0+cmV2b2tlZF9rc3ZfbGlzdCk7 CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCXNybV9kYXRhLT5yZXZva2VkX2tzdl9jbnQgPSBr c3ZfY291bnQ7CisJcmV0dXJuIGNvdW50OworfQorCitzdGF0aWMgaW50IGRybV9oZGNwX3BhcnNl X2hkY3AyX3NybShjb25zdCB1OCAqYnVmLCBzaXplX3QgY291bnQpCit7CisJc3RydWN0IGhkY3Bf c3JtX2hlYWRlciAqaGVhZGVyOworCXUzMiB2cmxfbGVuZ3RoLCBrc3ZfY291bnQsIGtzdl9zejsK KworCWlmIChjb3VudCA8IChzaXplb2Yoc3RydWN0IGhkY3Bfc3JtX2hlYWRlcikgKworCSAgICBE Uk1fSERDUF8yX1ZSTF9MRU5HVEhfU0laRSArIERSTV9IRENQXzJfRENQX1NJR19TSVpFKSkgewor CQlEUk1fRVJST1IoIkludmFsaWQgYmxvYiBsZW5ndGhcbiIpOworCQlyZXR1cm4gLUVJTlZBTDsK Kwl9CisKKwloZWFkZXIgPSAoc3RydWN0IGhkY3Bfc3JtX2hlYWRlciAqKWJ1ZjsKKwlEUk1fREVC VUcoIlNSTSBJRDogMHgleCwgU1JNIFZlcjogMHgleCwgU1JNIEdlbiBObzogMHgleFxuIiwKKwkJ ICBoZWFkZXItPnNybV9pZCAmIERSTV9IRENQX1NSTV9JRF9NQVNLLAorCQkgIGJlMTZfdG9fY3B1 KGhlYWRlci0+c3JtX3ZlcnNpb24pLCBoZWFkZXItPnNybV9nZW5fbm8pOworCisJaWYgKGhlYWRl ci0+cmVzZXJ2ZWQpCisJCXJldHVybiAtRUlOVkFMOworCisJYnVmID0gYnVmICsgc2l6ZW9mKCpo ZWFkZXIpOworCXZybF9sZW5ndGggPSBnZXRfdnJsX2xlbmd0aChidWYpOworCisJaWYgKGNvdW50 IDwgKHNpemVvZihzdHJ1Y3QgaGRjcF9zcm1faGVhZGVyKSArIHZybF9sZW5ndGgpIHx8CisJICAg IHZybF9sZW5ndGggPCAoRFJNX0hEQ1BfMl9WUkxfTEVOR1RIX1NJWkUgKworCSAgICBEUk1fSERD UF8yX0RDUF9TSUdfU0laRSkpIHsKKwkJRFJNX0VSUk9SKCJJbnZhbGlkIGJsb2IgbGVuZ3RoIG9y IHZybCBsZW5ndGhcbiIpOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwkvKiBMZW5ndGggb2Yg dGhlIGFsbCB2cmxzIGNvbWJpbmVkICovCisJdnJsX2xlbmd0aCAtPSAoRFJNX0hEQ1BfMl9WUkxf TEVOR1RIX1NJWkUgKworCQkgICAgICAgRFJNX0hEQ1BfMl9EQ1BfU0lHX1NJWkUpOworCisJaWYg KCF2cmxfbGVuZ3RoKSB7CisJCURSTV9FUlJPUigiTm8gdnJsIGZvdW5kXG4iKTsKKwkJcmV0dXJu IC1FSU5WQUw7CisJfQorCisJYnVmICs9IERSTV9IRENQXzJfVlJMX0xFTkdUSF9TSVpFOworCWtz dl9jb3VudCA9ICgqYnVmIDw8IDIpIHwgRFJNX0hEQ1BfMl9LU1ZfQ09VTlRfMl9MU0JJVFMoKihi dWYgKyAxKSk7CisJaWYgKCFrc3ZfY291bnQpIHsKKwkJRFJNX0RFQlVHKCJSZXZva2VkIEtTViBj b3VudCBpcyAwXG4iKTsKKwkJcmV0dXJuIGNvdW50OworCX0KKworCWtmcmVlKHNybV9kYXRhLT5y ZXZva2VkX2tzdl9saXN0KTsKKwlzcm1fZGF0YS0+cmV2b2tlZF9rc3ZfbGlzdCA9IGtjYWxsb2Mo a3N2X2NvdW50LCBEUk1fSERDUF9LU1ZfTEVOLAorCQkJCQkgICAgIEdGUF9LRVJORUwpOworCWlm ICghc3JtX2RhdGEtPnJldm9rZWRfa3N2X2xpc3QpIHsKKwkJRFJNX0VSUk9SKCJPdXQgb2YgTWVt b3J5XG4iKTsKKwkJcmV0dXJuIC1FTk9NRU07CisJfQorCisJa3N2X3N6ID0ga3N2X2NvdW50ICog RFJNX0hEQ1BfS1NWX0xFTjsKKwlidWYgKz0gRFJNX0hEQ1BfMl9OT19PRl9ERVZfUExVU19SRVNF UlZFRF9TWjsKKworCURSTV9ERUJVRygiUmV2b2tlZCBLU1ZzOiAlZFxuIiwga3N2X2NvdW50KTsK KwltZW1jcHkoc3JtX2RhdGEtPnJldm9rZWRfa3N2X2xpc3QsIGJ1Ziwga3N2X3N6KTsKKworCXNy bV9kYXRhLT5yZXZva2VkX2tzdl9jbnQgPSBrc3ZfY291bnQ7CisJcmV0dXJuIGNvdW50OworfQor CitzdGF0aWMgaW5saW5lIGJvb2wgaXNfc3JtX3ZlcnNpb25faGRjcDEoY29uc3QgdTggKmJ1ZikK K3sKKwlyZXR1cm4gKmJ1ZiA9PSAodTgpKERSTV9IRENQXzFfNF9TUk1fSUQgPDwgNCk7Cit9CisK K3N0YXRpYyBpbmxpbmUgYm9vbCBpc19zcm1fdmVyc2lvbl9oZGNwMihjb25zdCB1OCAqYnVmKQor eworCXJldHVybiAqYnVmID09ICh1OCkoRFJNX0hEQ1BfMl9TUk1fSUQgPDwgNCB8IERSTV9IRENQ XzJfSU5ESUNBVE9SKTsKK30KKworc3RhdGljIHZvaWQgZHJtX2hkY3Bfc3JtX3VwZGF0ZShjb25z dCB1OCAqYnVmLCBzaXplX3QgY291bnQpCit7CisJaWYgKGNvdW50IDwgc2l6ZW9mKHN0cnVjdCBo ZGNwX3NybV9oZWFkZXIpKQorCQlyZXR1cm47CisKKwlpZiAoaXNfc3JtX3ZlcnNpb25faGRjcDEo YnVmKSkKKwkJZHJtX2hkY3BfcGFyc2VfaGRjcDFfc3JtKGJ1ZiwgY291bnQpOworCWVsc2UgaWYg KGlzX3NybV92ZXJzaW9uX2hkY3AyKGJ1ZikpCisJCWRybV9oZGNwX3BhcnNlX2hkY3AyX3NybShi dWYsIGNvdW50KTsKK30KKwordm9pZCBkcm1faGRjcF9yZXF1ZXN0X3NybShzdHJ1Y3QgZHJtX2Rl dmljZSAqZHJtX2RldikKK3sKKwljaGFyIGZ3X25hbWVbMzZdID0gImRpc3BsYXlfaGRjcF9zcm0u YmluIjsKKwljb25zdCBzdHJ1Y3QgZmlybXdhcmUgKmZ3OworCisJaW50IHJldDsKKworCXJldCA9 IHJlcXVlc3RfZmlybXdhcmVfZGlyZWN0KCZmdywgKGNvbnN0IGNoYXIgKilmd19uYW1lLAorCQkJ CSAgICAgIGRybV9kZXYtPmRldik7CisJaWYgKHJldCA8IDApCisJCWdvdG8gZXhpdDsKKworCWlm IChmdy0+c2l6ZSAmJiBmdy0+ZGF0YSkKKwkJZHJtX2hkY3Bfc3JtX3VwZGF0ZShmdy0+ZGF0YSwg ZnctPnNpemUpOworCitleGl0OgorCXJlbGVhc2VfZmlybXdhcmUoZncpOworfQorCisvKioKKyAq IGRybV9oZGNwX2NoZWNrX2tzdnNfcmV2b2tlZCAtIENoZWNrIHRoZSByZXZva2VkIHN0YXR1cyBv ZiB0aGUgSURzCisgKgorICogQGRybV9kZXY6IGRybV9kZXZpY2UgZm9yIHdoaWNoIEhEQ1AgcmV2 b2NhdGlvbiBjaGVjayBpcyByZXF1ZXN0ZWQKKyAqIEBrc3ZzOiBMaXN0IG9mIEtTVnMgKEhEQ1Ag cmVjZWl2ZXIgSURzKQorICogQGtzdl9jb3VudDogS1NWIGNvdW50IHBhc3NlZCBpbiB0aHJvdWdo IEBrc3ZzCisgKgorICogVGhpcyBmdW5jdGlvbiByZWFkcyB0aGUgSERDUCBTeXN0ZW0gcmVuZXdh YmlsaXR5IE1lc3NhZ2UoU1JNIFRhYmxlKQorICogZnJvbSB1c2Vyc3BhY2UgYXMgYSBmaXJtd2Fy ZSBhbmQgcGFyc2VzIGl0IGZvciB0aGUgcmV2b2tlZCBIRENQCisgKiBLU1ZzKFJlY2VpdmVyIElE cykgZGV0ZWN0ZWQgYnkgRENQIExMQy4gT25jZSB0aGUgcmV2b2tlZCBLU1ZzIGFyZSBrbm93biwK KyAqIHJldm9rZWQgc3RhdGUgb2YgdGhlIEtTVnMgaW4gdGhlIGxpc3QgcGFzc2VkIGluIGJ5IGRp c3BsYXkgZHJpdmVycyBhcmUKKyAqIGRlY2lkZWQgYW5kIHJlc3BvbnNlIGlzIHNlbnQuCisgKgor ICogU1JNIHNob3VsZCBiZSBwcmVzZW50ZWQgaW4gdGhlIG5hbWUgb2YgImRpc3BsYXlfaGRjcF9z cm0uYmluIi4KKyAqCisgKiBSZXR1cm5zOgorICogVFJVRSBvbiBhbnkgb2YgdGhlIEtTViBpcyBy ZXZva2VkLCBlbHNlIEZBTFNFLgorICovCitib29sIGRybV9oZGNwX2NoZWNrX2tzdnNfcmV2b2tl ZChzdHJ1Y3QgZHJtX2RldmljZSAqZHJtX2RldiwgdTggKmtzdnMsCisJCQkJIHUzMiBrc3ZfY291 bnQpCit7CisJdTMyIHJldl9rc3ZfY250LCBjbnQsIGksIGo7CisJdTggKnJldl9rc3ZfbGlzdDsK KworCWlmICghc3JtX2RhdGEpCisJCXJldHVybiBmYWxzZTsKKworCW11dGV4X2xvY2soJnNybV9k YXRhLT5tdXRleCk7CisJZHJtX2hkY3BfcmVxdWVzdF9zcm0oZHJtX2Rldik7CisKKwlyZXZfa3N2 X2NudCA9IHNybV9kYXRhLT5yZXZva2VkX2tzdl9jbnQ7CisJcmV2X2tzdl9saXN0ID0gc3JtX2Rh dGEtPnJldm9rZWRfa3N2X2xpc3Q7CisKKwkvKiBJZiB0aGUgUmV2b2tlZCBrc3YgbGlzdCBpcyBl bXB0eSAqLworCWlmICghcmV2X2tzdl9jbnQgfHwgIXJldl9rc3ZfbGlzdCkgeworCQltdXRleF91 bmxvY2soJnNybV9kYXRhLT5tdXRleCk7CisJCXJldHVybiBmYWxzZTsKKwl9CisKKwlmb3IgIChj bnQgPSAwOyBjbnQgPCBrc3ZfY291bnQ7IGNudCsrKSB7CisJCXJldl9rc3ZfbGlzdCA9IHNybV9k YXRhLT5yZXZva2VkX2tzdl9saXN0OworCQlmb3IgKGkgPSAwOyBpIDwgcmV2X2tzdl9jbnQ7IGkr KykgeworCQkJZm9yIChqID0gMDsgaiA8IERSTV9IRENQX0tTVl9MRU47IGorKykKKwkJCQlpZiAo a3N2c1tqXSAhPSByZXZfa3N2X2xpc3Rbal0pIHsKKwkJCQkJYnJlYWs7CisJCQkJfSBlbHNlIGlm IChqID09IChEUk1fSERDUF9LU1ZfTEVOIC0gMSkpIHsKKwkJCQkJRFJNX0RFQlVHKCJSZXZva2Vk IEtTViBpcyAiKTsKKwkJCQkJZHJtX2hkY3BfcHJpbnRfa3N2KGtzdnMpOworCQkJCQltdXRleF91 bmxvY2soJnNybV9kYXRhLT5tdXRleCk7CisJCQkJCXJldHVybiB0cnVlOworCQkJCX0KKwkJCS8q IE1vdmUgdGhlIG9mZnNldCB0byBuZXh0IEtTViBpbiB0aGUgcmV2b2tlZCBsaXN0ICovCisJCQly ZXZfa3N2X2xpc3QgKz0gRFJNX0hEQ1BfS1NWX0xFTjsKKwkJfQorCisJCS8qIEl0ZXJhdGUgdG8g bmV4dCBrc3Zfb2Zmc2V0ICovCisJCWtzdnMgKz0gRFJNX0hEQ1BfS1NWX0xFTjsKKwl9CisJbXV0 ZXhfdW5sb2NrKCZzcm1fZGF0YS0+bXV0ZXgpOworCXJldHVybiBmYWxzZTsKK30KK0VYUE9SVF9T WU1CT0xfR1BMKGRybV9oZGNwX2NoZWNrX2tzdnNfcmV2b2tlZCk7CisKK2ludCBkcm1fc2V0dXBf aGRjcF9zcm0oc3RydWN0IGNsYXNzICpkcm1fY2xhc3MpCit7CisJc3JtX2RhdGEgPSBremFsbG9j KHNpemVvZigqc3JtX2RhdGEpLCBHRlBfS0VSTkVMKTsKKwlpZiAoIXNybV9kYXRhKQorCQlyZXR1 cm4gLUVOT01FTTsKKwltdXRleF9pbml0KCZzcm1fZGF0YS0+bXV0ZXgpOworCisJcmV0dXJuIDA7 Cit9CisKK3ZvaWQgZHJtX3RlYXJkb3duX2hkY3Bfc3JtKHN0cnVjdCBjbGFzcyAqZHJtX2NsYXNz KQoreworCWlmIChzcm1fZGF0YSkgeworCQlrZnJlZShzcm1fZGF0YS0+cmV2b2tlZF9rc3ZfbGlz dCk7CisJCWtmcmVlKHNybV9kYXRhKTsKKwl9Cit9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vZHJtX2ludGVybmFsLmggYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2ludGVybmFsLmgKaW5kZXgg ZTE5YWM3Y2E2MDJkLi40NzZhNDIyNDE0ZjYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9k cm1faW50ZXJuYWwuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2ludGVybmFsLmgKQEAgLTIw MSwzICsyMDEsNyBAQCBpbnQgZHJtX3N5bmNvYmpfcXVlcnlfaW9jdGwoc3RydWN0IGRybV9kZXZp Y2UgKmRldiwgdm9pZCAqZGF0YSwKIHZvaWQgZHJtX2ZyYW1lYnVmZmVyX3ByaW50X2luZm8oc3Ry dWN0IGRybV9wcmludGVyICpwLCB1bnNpZ25lZCBpbnQgaW5kZW50LAogCQkJCWNvbnN0IHN0cnVj dCBkcm1fZnJhbWVidWZmZXIgKmZiKTsKIGludCBkcm1fZnJhbWVidWZmZXJfZGVidWdmc19pbml0 KHN0cnVjdCBkcm1fbWlub3IgKm1pbm9yKTsKKworLyogZHJtX2hkY3AuYyAqLworaW50IGRybV9z ZXR1cF9oZGNwX3NybShzdHJ1Y3QgY2xhc3MgKmRybV9jbGFzcyk7Cit2b2lkIGRybV90ZWFyZG93 bl9oZGNwX3NybShzdHJ1Y3QgY2xhc3MgKmRybV9jbGFzcyk7CmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vZHJtX3N5c2ZzLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX3N5c2ZzLmMKaW5kZXgg ZWNiN2IzMzAwMmJiLi4xOGIxYWM0NDI5OTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9k cm1fc3lzZnMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX3N5c2ZzLmMKQEAgLTc4LDYgKzc4 LDcgQEAgaW50IGRybV9zeXNmc19pbml0KHZvaWQpCiAJfQogCiAJZHJtX2NsYXNzLT5kZXZub2Rl ID0gZHJtX2Rldm5vZGU7CisJZHJtX3NldHVwX2hkY3Bfc3JtKGRybV9jbGFzcyk7CiAJcmV0dXJu IDA7CiB9CiAKQEAgLTkwLDYgKzkxLDcgQEAgdm9pZCBkcm1fc3lzZnNfZGVzdHJveSh2b2lkKQog ewogCWlmIChJU19FUlJfT1JfTlVMTChkcm1fY2xhc3MpKQogCQlyZXR1cm47CisJZHJtX3RlYXJk b3duX2hkY3Bfc3JtKGRybV9jbGFzcyk7CiAJY2xhc3NfcmVtb3ZlX2ZpbGUoZHJtX2NsYXNzLCAm Y2xhc3NfYXR0cl92ZXJzaW9uLmF0dHIpOwogCWNsYXNzX2Rlc3Ryb3koZHJtX2NsYXNzKTsKIAlk cm1fY2xhc3MgPSBOVUxMOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX2hkY3AuaCBiL2lu Y2x1ZGUvZHJtL2RybV9oZGNwLmgKaW5kZXggMWNjNjZkZjA1YTQzLi4yZjAzMzVkMGE1MGYgMTAw NjQ0Ci0tLSBhL2luY2x1ZGUvZHJtL2RybV9oZGNwLmgKKysrIGIvaW5jbHVkZS9kcm0vZHJtX2hk Y3AuaApAQCAtMjY1LDQgKzI2NSwyOCBAQCB2b2lkIGRybV9oZGNwX2NwdV90b19iZTI0KHU4IHNl cV9udW1bSERDUF8yXzJfU0VRX05VTV9MRU5dLCB1MzIgdmFsKQogCXNlcV9udW1bMl0gPSB2YWw7 CiB9CiAKKyNkZWZpbmUgRFJNX0hEQ1BfU1JNX0dFTjFfTUFYX0JZVEVTCQkoNSAqIDEwMjQpCisj ZGVmaW5lIERSTV9IRENQXzFfNF9TUk1fSUQJCQkweDgKKyNkZWZpbmUgRFJNX0hEQ1BfU1JNX0lE X01BU0sJCQkoMHhGIDw8IDQpCisjZGVmaW5lIERSTV9IRENQXzFfNF9WUkxfTEVOR1RIX1NJWkUJ CTMKKyNkZWZpbmUgRFJNX0hEQ1BfMV80X0RDUF9TSUdfU0laRQkJNDAKKyNkZWZpbmUgRFJNX0hE Q1BfMl9TUk1fSUQJCQkweDkKKyNkZWZpbmUgRFJNX0hEQ1BfMl9JTkRJQ0FUT1IJCQkweDEKKyNk ZWZpbmUgRFJNX0hEQ1BfMl9JTkRJQ0FUT1JfTUFTSwkJMHhGCisjZGVmaW5lIERSTV9IRENQXzJf VlJMX0xFTkdUSF9TSVpFCQkzCisjZGVmaW5lIERSTV9IRENQXzJfRENQX1NJR19TSVpFCQkJMzg0 CisjZGVmaW5lIERSTV9IRENQXzJfTk9fT0ZfREVWX1BMVVNfUkVTRVJWRURfU1oJNAorI2RlZmlu ZSBEUk1fSERDUF8yX0tTVl9DT1VOVF8yX0xTQklUUyhieXRlKQkoKChieXRlKSAmIDB4QykgPj4g NikKKworc3RydWN0IGhkY3Bfc3JtX2hlYWRlciB7CisJdTggc3JtX2lkOworCXU4IHJlc2VydmVk OworCV9fYmUxNiBzcm1fdmVyc2lvbjsKKwl1OCBzcm1fZ2VuX25vOworfSBfX3BhY2tlZDsKKwor c3RydWN0IGRybV9kZXZpY2U7CisKK2Jvb2wgZHJtX2hkY3BfY2hlY2tfa3N2c19yZXZva2VkKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsCisJCQkJIHU4ICprc3ZzLCB1MzIga3N2X2NvdW50KTsKICNl bmRpZgotLSAKMi4xOS4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3Rv cC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRl bC1nZng=