From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ramalingam C Subject: [PATCH v5 15/40] drm/i915: Implement HDCP2.2 receiver authentication Date: Wed, 27 Jun 2018 14:10:04 +0530 Message-ID: <1530088829-11730-16-git-send-email-ramalingam.c@intel.com> References: <1530088829-11730-1-git-send-email-ramalingam.c@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1530088829-11730-1-git-send-email-ramalingam.c@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, daniel@ffwll.ch, tomas.winkler@intel.com, alexander.usyskin@intel.com, uma.shankar@intel.com List-Id: intel-gfx@lists.freedesktop.org SW1wbGVtZW50cyBIRENQMi4yIGF1dGhlbnRpY2F0aW9uIGZvciBoZGNwMi4yIHJlY2VpdmVycywg d2l0aApmb2xsb3dpbmcgc3RlcHM6CglBdXRoZW50aWNhdGlvbiBhbmQgS2V5IGV4Y2hhbmdlIChB S0UpLgoJTG9jYWxpdHkgQ2hlY2sgKExDKS4KCVNlc3Npb24gS2V5IEV4Y2hhbmdlKFNLRSkuCglE UCBFcnJhdGEgZm9yIHN0cmVhbSB0eXBlIGNvbmZpZ3VyYXRpb24gZm9yIHJlY2VpdmVycy4KCkF0 IEFLRSwgdGhlIEhEQ1AgUmVjZWl2ZXLigJlzIHB1YmxpYyBrZXkgY2VydGlmaWNhdGUgaXMgdmVy aWZpZWQgYnkgdGhlCkhEQ1AgVHJhbnNtaXR0ZXIuIEEgTWFzdGVyIEtleSBrIG0gaXMgZXhjaGFu Z2VkLgoKQXQgTEMsIHRoZSBIRENQIFRyYW5zbWl0dGVyIGVuZm9yY2VzIGxvY2FsaXR5IG9uIHRo ZSBjb250ZW50IGJ5CnJlcXVpcmluZyB0aGF0IHRoZSBSb3VuZCBUcmlwIFRpbWUgKFJUVCkgYmV0 d2VlbiBhIHBhaXIgb2YgbWVzc2FnZXMKaXMgbm90IG1vcmUgdGhhbiAyMCBtcy4KCkF0IFNLRSwg VGhlIEhEQ1AgVHJhbnNtaXR0ZXIgZXhjaGFuZ2VzIFNlc3Npb24gS2V5IGtzIHdpdGgKdGhlIEhE Q1AgUmVjZWl2ZXIuCgpJbiBEUCBIRENQMi4yIGVuY3J5cHRpb24gYW5kIGRlY3J5cHRpb24gbG9n aWNzIHVzZSB0aGUgc3RyZWFtIHR5cGUgYXMKb25lIG9mIHRoZSBwYXJhbWV0ZXIuIFNvIEJlZm9y ZSBlbmFibGluZyB0aGUgRW5jcnlwdGlvbiBEUCBIRENQMi4yCnJlY2VpdmVyIG5lZWRzIHRvIGJl IGNvbW11bmljYXRlZCB3aXRoIHN0cmVhbSB0eXBlLiBUaGlzIGlzIGFkZGVkIHRvCnNwZWMgYXMg RVJSQVRBLgoKVGhpcyBnZW5lcmljIGltcGxlbWVudGF0aW9uIGlzIGNvbXBsZXRlIG9ubHkgd2l0 aCB0aGUgaGRjcDJfc2hpbQpkZWZpbmVkLgoKdjI6CiAgUmViYXNlZC4KdjM6CiAgTm8gQ2hhbmdl cy4KdjQ6CiAgJXMvUEFSSU5HL1BBSVJJTkcKICBDb2Rpbmcgc3R5bGUgZml4aW5nIFtVbWFdCnY1 OgogIFJlYmFzZWQgYXMgcGFydCBvZiBwYXRjaCByZW9yZGVyaW5nLgogIERlZmluZWQgdGhlIGZ1 bmN0aW9ucyBmb3IgbWVpIHNlcnZpY2VzLiBbRGFuaWVsXQoKU2lnbmVkLW9mZi1ieTogUmFtYWxp bmdhbSBDIDxyYW1hbGluZ2FtLmNAaW50ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2hkY3AuYyB8IDQwMCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr LQogMSBmaWxlIGNoYW5nZWQsIDM5OSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRjcC5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfaGRjcC5jCmluZGV4IDFlNzViNGZjOTc4YS4uYmI2ZTcyODA3MDYwIDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZGNwLmMKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRjcC5jCkBAIC0xOCw2ICsxOCw3IEBACiAKICNkZWZpbmUg S0VZX0xPQURfVFJJRVMJNQogI2RlZmluZSBUSU1FX0ZPUl9FTkNSWVBUX1NUQVRVU19DSEFOR0UJ MzIKKyNkZWZpbmUgSERDUDJfTENfUkVUUllfQ05UCQkzCiAjZGVmaW5lIEdFVF9NRUlfRERJX0lO REVYKHBvcnQpCQkoKChwb3J0KSA9PSBQT1JUX0EpID8gRERJX0EgOiBcCiAJCQkJCSAoZW51bSBo ZGNwX3BoeXNpY2FsX3BvcnQpKHBvcnQpKQogCkBAIC05OTUsNiArOTk2LDIyMiBAQCBpbnQgaW50 ZWxfaGRjcF9jaGVja19saW5rKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikKIAly ZXR1cm4gcmV0OwogfQogCitzdGF0aWMgaW50CitoZGNwMl9wcmVwYXJlX2FrZV9pbml0KHN0cnVj dCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciwKKwkJICAgICAgIHN0cnVjdCBoZGNwMl9ha2Vf aW5pdCAqYWtlX2RhdGEpCit7CisJc3RydWN0IG1laV9oZGNwX2RhdGEgKmRhdGEgPSAmY29ubmVj dG9yLT5oZGNwLm1laV9kYXRhOworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9 IHRvX2k5MTUoY29ubmVjdG9yLT5iYXNlLmRldik7CisJc3RydWN0IGk5MTVfaGRjcF9jb21wb25l bnQgKmNvbXAgPSBkZXZfcHJpdi0+aGRjcF9jb21wOworCWludCByZXQ7CisKKwlpZiAoIWNvbXAp CisJCXJldHVybiAtRUlOVkFMOworCisJbXV0ZXhfbG9jaygmY29tcC0+bXV0ZXgpOworCWlmICgh Y29tcC0+b3BzIHx8ICFjb21wLT5tZWlfY2xkZXYpIHsKKwkJbXV0ZXhfdW5sb2NrKCZjb21wLT5t dXRleCk7CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCWlmIChkYXRhLT5wb3J0ID09IElOVkFM SURfUE9SVCAmJiBjb25uZWN0b3ItPmVuY29kZXIpCisJCWRhdGEtPnBvcnQgPSBHRVRfTUVJX0RE SV9JTkRFWChjb25uZWN0b3ItPmVuY29kZXItPnBvcnQpOworCisJLyogQ2xlYXIgTUUgRlcgaW5z dGFuY2UgZm9yIHRoZSBwb3J0LCBqdXN0IGluY2FzZSAqLworCWNvbXAtPm9wcy0+Y2xvc2VfaGRj cF9zZXNzaW9uKGNvbXAtPm1laV9jbGRldiwgZGF0YSk7CisKKwlyZXQgPSBjb21wLT5vcHMtPmlu aXRpYXRlX2hkY3AyX3Nlc3Npb24oY29tcC0+bWVpX2NsZGV2LAorCQkJCQkJZGF0YSwgYWtlX2Rh dGEpOworCW11dGV4X3VubG9jaygmY29tcC0+bXV0ZXgpOworCisJcmV0dXJuIHJldDsKK30KKwor c3RhdGljIGludAoraGRjcDJfdmVyaWZ5X3J4X2NlcnRfcHJlcGFyZV9rbShzdHJ1Y3QgaW50ZWxf Y29ubmVjdG9yICpjb25uZWN0b3IsCisJCQkJc3RydWN0IGhkY3AyX2FrZV9zZW5kX2NlcnQgKnJ4 X2NlcnQsCisJCQkJYm9vbCAqcGFpcmVkLAorCQkJCXN0cnVjdCBoZGNwMl9ha2Vfbm9fc3RvcmVk X2ttICpla19wdWJfa20sCisJCQkJc2l6ZV90ICptc2dfc3opCit7CisJc3RydWN0IG1laV9oZGNw X2RhdGEgKmRhdGEgPSAmY29ubmVjdG9yLT5oZGNwLm1laV9kYXRhOworCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY29ubmVjdG9yLT5iYXNlLmRldik7CisJc3Ry dWN0IGk5MTVfaGRjcF9jb21wb25lbnQgKmNvbXAgPSBkZXZfcHJpdi0+aGRjcF9jb21wOworCWlu dCByZXQ7CisKKwlpZiAoIWNvbXApCisJCXJldHVybiAtRUlOVkFMOworCisJbXV0ZXhfbG9jaygm Y29tcC0+bXV0ZXgpOworCWlmICghY29tcC0+b3BzIHx8ICFjb21wLT5tZWlfY2xkZXYgfHwgZGF0 YS0+cG9ydCA9PSBJTlZBTElEX1BPUlQpIHsKKwkJbXV0ZXhfdW5sb2NrKCZjb21wLT5tdXRleCk7 CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCXJldCA9IGNvbXAtPm9wcy0+dmVyaWZ5X3JlY2Vp dmVyX2NlcnRfcHJlcGFyZV9rbShjb21wLT5tZWlfY2xkZXYsIGRhdGEsCisJCQkJCQkJIHJ4X2Nl cnQsIHBhaXJlZCwKKwkJCQkJCQkgZWtfcHViX2ttLCBtc2dfc3opOworCWlmIChyZXQgPCAwKQor CQljb21wLT5vcHMtPmNsb3NlX2hkY3Bfc2Vzc2lvbihjb21wLT5tZWlfY2xkZXYsIGRhdGEpOwor CisJbXV0ZXhfdW5sb2NrKCZjb21wLT5tdXRleCk7CisJcmV0dXJuIHJldDsKK30KKworc3RhdGlj IGludCBoZGNwMl92ZXJpZnlfaHByaW1lKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3Rv ciwKKwkJCSAgICAgICBzdHJ1Y3QgaGRjcDJfYWtlX3NlbmRfaHByaW1lICpyeF9ocHJpbWUpCit7 CisJc3RydWN0IG1laV9oZGNwX2RhdGEgKmRhdGEgPSAmY29ubmVjdG9yLT5oZGNwLm1laV9kYXRh OworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY29ubmVjdG9y LT5iYXNlLmRldik7CisJc3RydWN0IGk5MTVfaGRjcF9jb21wb25lbnQgKmNvbXAgPSBkZXZfcHJp di0+aGRjcF9jb21wOworCWludCByZXQ7CisKKwlpZiAoIWNvbXApCisJCXJldHVybiAtRUlOVkFM OworCisJbXV0ZXhfbG9jaygmY29tcC0+bXV0ZXgpOworCWlmICghY29tcC0+b3BzIHx8ICFjb21w LT5tZWlfY2xkZXYgfHwgZGF0YS0+cG9ydCA9PSBJTlZBTElEX1BPUlQpIHsKKwkJbXV0ZXhfdW5s b2NrKCZjb21wLT5tdXRleCk7CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCXJldCA9IGNvbXAt Pm9wcy0+dmVyaWZ5X2hwcmltZShjb21wLT5tZWlfY2xkZXYsIGRhdGEsIHJ4X2hwcmltZSk7CisJ aWYgKHJldCA8IDApCisJCWNvbXAtPm9wcy0+Y2xvc2VfaGRjcF9zZXNzaW9uKGNvbXAtPm1laV9j bGRldiwgZGF0YSk7CisKKwltdXRleF91bmxvY2soJmNvbXAtPm11dGV4KTsKKwlyZXR1cm4gcmV0 OworfQorCitzdGF0aWMgaW50CitoZGNwMl9zdG9yZV9wYWlyaW5nX2luZm8oc3RydWN0IGludGVs X2Nvbm5lY3RvciAqY29ubmVjdG9yLAorCQkJIHN0cnVjdCBoZGNwMl9ha2Vfc2VuZF9wYWlyaW5n X2luZm8gKnBhaXJpbmdfaW5mbykKK3sKKwlzdHJ1Y3QgbWVpX2hkY3BfZGF0YSAqZGF0YSA9ICZj b25uZWN0b3ItPmhkY3AubWVpX2RhdGE7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gdG9faTkxNShjb25uZWN0b3ItPmJhc2UuZGV2KTsKKwlzdHJ1Y3QgaTkxNV9oZGNwX2Nv bXBvbmVudCAqY29tcCA9IGRldl9wcml2LT5oZGNwX2NvbXA7CisJaW50IHJldDsKKworCWlmICgh Y29tcCkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwltdXRleF9sb2NrKCZjb21wLT5tdXRleCk7CisJ aWYgKCFjb21wLT5vcHMgfHwgIWNvbXAtPm1laV9jbGRldiB8fCBkYXRhLT5wb3J0ID09IElOVkFM SURfUE9SVCkgeworCQltdXRleF91bmxvY2soJmNvbXAtPm11dGV4KTsKKwkJcmV0dXJuIC1FSU5W QUw7CisJfQorCisJcmV0ID0gY29tcC0+b3BzLT5zdG9yZV9wYWlyaW5nX2luZm8oY29tcC0+bWVp X2NsZGV2LAorCQkJCQkgICAgZGF0YSwgcGFpcmluZ19pbmZvKTsKKwlpZiAocmV0IDwgMCkKKwkJ Y29tcC0+b3BzLT5jbG9zZV9oZGNwX3Nlc3Npb24oY29tcC0+bWVpX2NsZGV2LCBkYXRhKTsKKwor CW11dGV4X3VubG9jaygmY29tcC0+bXV0ZXgpOworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBp bnQKK2hkY3AyX3ByZXBhcmVfbGNfaW5pdChzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0 b3IsCisJCSAgICAgIHN0cnVjdCBoZGNwMl9sY19pbml0ICpsY19pbml0KQoreworCXN0cnVjdCBt ZWlfaGRjcF9kYXRhICpkYXRhID0gJmNvbm5lY3Rvci0+aGRjcC5tZWlfZGF0YTsKKwlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNvbm5lY3Rvci0+YmFzZS5kZXYp OworCXN0cnVjdCBpOTE1X2hkY3BfY29tcG9uZW50ICpjb21wID0gZGV2X3ByaXYtPmhkY3BfY29t cDsKKwlpbnQgcmV0OworCisJaWYgKCFjb21wKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCW11dGV4 X2xvY2soJmNvbXAtPm11dGV4KTsKKwlpZiAoIWNvbXAtPm9wcyB8fCAhY29tcC0+bWVpX2NsZGV2 IHx8IGRhdGEtPnBvcnQgPT0gSU5WQUxJRF9QT1JUKSB7CisJCW11dGV4X3VubG9jaygmY29tcC0+ bXV0ZXgpOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwlyZXQgPSBjb21wLT5vcHMtPmluaXRp YXRlX2xvY2FsaXR5X2NoZWNrKGNvbXAtPm1laV9jbGRldiwKKwkJCQkJCSBkYXRhLCBsY19pbml0 KTsKKwlpZiAocmV0IDwgMCkKKwkJY29tcC0+b3BzLT5jbG9zZV9oZGNwX3Nlc3Npb24oY29tcC0+ bWVpX2NsZGV2LCBkYXRhKTsKKworCW11dGV4X3VubG9jaygmY29tcC0+bXV0ZXgpOworCXJldHVy biByZXQ7Cit9CisKK3N0YXRpYyBpbnQKK2hkY3AyX3ZlcmlmeV9scHJpbWUoc3RydWN0IGludGVs X2Nvbm5lY3RvciAqY29ubmVjdG9yLAorCQkgICAgc3RydWN0IGhkY3AyX2xjX3NlbmRfbHByaW1l ICpyeF9scHJpbWUpCit7CisJc3RydWN0IG1laV9oZGNwX2RhdGEgKmRhdGEgPSAmY29ubmVjdG9y LT5oZGNwLm1laV9kYXRhOworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRv X2k5MTUoY29ubmVjdG9yLT5iYXNlLmRldik7CisJc3RydWN0IGk5MTVfaGRjcF9jb21wb25lbnQg KmNvbXAgPSBkZXZfcHJpdi0+aGRjcF9jb21wOworCWludCByZXQ7CisKKwlpZiAoIWNvbXApCisJ CXJldHVybiAtRUlOVkFMOworCisJbXV0ZXhfbG9jaygmY29tcC0+bXV0ZXgpOworCWlmICghY29t cC0+b3BzIHx8ICFjb21wLT5tZWlfY2xkZXYgfHwgZGF0YS0+cG9ydCA9PSBJTlZBTElEX1BPUlQp IHsKKwkJbXV0ZXhfdW5sb2NrKCZjb21wLT5tdXRleCk7CisJCXJldHVybiAtRUlOVkFMOworCX0K KworCXJldCA9IGNvbXAtPm9wcy0+dmVyaWZ5X2xwcmltZShjb21wLT5tZWlfY2xkZXYsIGRhdGEs IHJ4X2xwcmltZSk7CisJaWYgKHJldCA8IDApCisJCWNvbXAtPm9wcy0+Y2xvc2VfaGRjcF9zZXNz aW9uKGNvbXAtPm1laV9jbGRldiwgZGF0YSk7CisKKwltdXRleF91bmxvY2soJmNvbXAtPm11dGV4 KTsKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgaW50IGhkY3AyX3ByZXBhcmVfc2tleShzdHJ1 Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IsCisJCQkgICAgICBzdHJ1Y3QgaGRjcDJfc2tl X3NlbmRfZWtzICpza2VfZGF0YSkKK3sKKwlzdHJ1Y3QgbWVpX2hkY3BfZGF0YSAqZGF0YSA9ICZj b25uZWN0b3ItPmhkY3AubWVpX2RhdGE7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gdG9faTkxNShjb25uZWN0b3ItPmJhc2UuZGV2KTsKKwlzdHJ1Y3QgaTkxNV9oZGNwX2Nv bXBvbmVudCAqY29tcCA9IGRldl9wcml2LT5oZGNwX2NvbXA7CisJaW50IHJldDsKKworCWlmICgh Y29tcCkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwltdXRleF9sb2NrKCZjb21wLT5tdXRleCk7CisJ aWYgKCFjb21wLT5vcHMgfHwgIWNvbXAtPm1laV9jbGRldiB8fCBkYXRhLT5wb3J0ID09IElOVkFM SURfUE9SVCkgeworCQltdXRleF91bmxvY2soJmNvbXAtPm11dGV4KTsKKwkJcmV0dXJuIC1FSU5W QUw7CisJfQorCisJcmV0ID0gY29tcC0+b3BzLT5nZXRfc2Vzc2lvbl9rZXkoY29tcC0+bWVpX2Ns ZGV2LCBkYXRhLCBza2VfZGF0YSk7CisJaWYgKHJldCA8IDApCisJCWNvbXAtPm9wcy0+Y2xvc2Vf aGRjcF9zZXNzaW9uKGNvbXAtPm1laV9jbGRldiwgZGF0YSk7CisKKwltdXRleF91bmxvY2soJmNv bXAtPm11dGV4KTsKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgaW50IGhkY3AyX2F1dGhlbnRp Y2F0ZV9wb3J0KHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikKK3sKKwlzdHJ1Y3Qg bWVpX2hkY3BfZGF0YSAqZGF0YSA9ICZjb25uZWN0b3ItPmhkY3AubWVpX2RhdGE7CisJc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjb25uZWN0b3ItPmJhc2UuZGV2 KTsKKwlzdHJ1Y3QgaTkxNV9oZGNwX2NvbXBvbmVudCAqY29tcCA9IGRldl9wcml2LT5oZGNwX2Nv bXA7CisJaW50IHJldDsKKworCWlmICghY29tcCkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwltdXRl eF9sb2NrKCZjb21wLT5tdXRleCk7CisJaWYgKCFjb21wLT5vcHMgfHwgIWNvbXAtPm1laV9jbGRl diB8fCBkYXRhLT5wb3J0ID09IElOVkFMSURfUE9SVCkgeworCQltdXRleF91bmxvY2soJmNvbXAt Pm11dGV4KTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJcmV0ID0gY29tcC0+b3BzLT5lbmFi bGVfaGRjcF9hdXRoZW50aWNhdGlvbihjb21wLT5tZWlfY2xkZXYsIGRhdGEpOworCWlmIChyZXQg PCAwKQorCQljb21wLT5vcHMtPmNsb3NlX2hkY3Bfc2Vzc2lvbihjb21wLT5tZWlfY2xkZXYsIGRh dGEpOworCisJbXV0ZXhfdW5sb2NrKCZjb21wLT5tdXRleCk7CisJcmV0dXJuIHJldDsKK30KKwog c3RhdGljIGludCBoZGNwMl9jbG9zZV9tZWlfc2Vzc2lvbihzdHJ1Y3QgaW50ZWxfY29ubmVjdG9y ICpjb25uZWN0b3IpCiB7CiAJc3RydWN0IG1laV9oZGNwX2RhdGEgKmRhdGEgPSAmY29ubmVjdG9y LT5oZGNwLm1laV9kYXRhOwpAQCAtMTAyMSwxMSArMTIzOCwxOTIgQEAgc3RhdGljIGludCBoZGNw Ml9kZWF1dGhlbnRpY2F0ZV9wb3J0KHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikK IAlyZXR1cm4gaGRjcDJfY2xvc2VfbWVpX3Nlc3Npb24oY29ubmVjdG9yKTsKIH0KIAotc3RhdGlj IGludCBoZGNwMl9hdXRoZW50aWNhdGVfc2luayhzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25u ZWN0b3IpCisvKiBBdXRoZW50aWNhdGlvbiBmbG93IHN0YXJ0cyBmcm9tIGhlcmUgKi8KK3N0YXRp YyBpbnQgaGRjcDJfYXV0aGVudGljYXRpb25fa2V5X2V4Y2hhbmdlKHN0cnVjdCBpbnRlbF9jb25u ZWN0b3IgKmNvbm5lY3RvcikKK3sKKwlzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9k aWdfcG9ydCA9IGNvbm5fdG9fZGlnX3BvcnQoY29ubmVjdG9yKTsKKwlzdHJ1Y3QgaW50ZWxfaGRj cCAqaGRjcCA9ICZjb25uZWN0b3ItPmhkY3A7CisJdW5pb24geworCQlzdHJ1Y3QgaGRjcDJfYWtl X2luaXQgYWtlX2luaXQ7CisJCXN0cnVjdCBoZGNwMl9ha2Vfc2VuZF9jZXJ0IHNlbmRfY2VydDsK KwkJc3RydWN0IGhkY3AyX2FrZV9ub19zdG9yZWRfa20gbm9fc3RvcmVkX2ttOworCQlzdHJ1Y3Qg aGRjcDJfYWtlX3NlbmRfaHByaW1lIHNlbmRfaHByaW1lOworCQlzdHJ1Y3QgaGRjcDJfYWtlX3Nl bmRfcGFpcmluZ19pbmZvIHBhaXJpbmdfaW5mbzsKKwl9IG1zZ3M7CisJY29uc3Qgc3RydWN0IGlu dGVsX2hkY3Bfc2hpbSAqc2hpbSA9IGhkY3AtPmhkY3Bfc2hpbTsKKwlzaXplX3Qgc2l6ZTsKKwlp bnQgcmV0OworCisJLyogSW5pdCBmb3Igc2VxX251bSAqLworCWhkY3AtPnNlcV9udW1fdiA9IDA7 CisJaGRjcC0+c2VxX251bV9tID0gMDsKKworCXJldCA9IGhkY3AyX3ByZXBhcmVfYWtlX2luaXQo Y29ubmVjdG9yLCAmbXNncy5ha2VfaW5pdCk7CisJaWYgKHJldCA8IDApCisJCXJldHVybiByZXQ7 CisKKwlyZXQgPSBzaGltLT53cml0ZV8yXzJfbXNnKGludGVsX2RpZ19wb3J0LCAmbXNncy5ha2Vf aW5pdCwKKwkJCQkgIHNpemVvZihtc2dzLmFrZV9pbml0KSk7CisJaWYgKHJldCA8IDApCisJCXJl dHVybiByZXQ7CisKKwlyZXQgPSBzaGltLT5yZWFkXzJfMl9tc2coaW50ZWxfZGlnX3BvcnQsIEhE Q1BfMl8yX0FLRV9TRU5EX0NFUlQsCisJCQkJICZtc2dzLnNlbmRfY2VydCwgc2l6ZW9mKG1zZ3Mu c2VuZF9jZXJ0KSk7CisJaWYgKHJldCA8IDApCisJCXJldHVybiByZXQ7CisKKwlpZiAobXNncy5z ZW5kX2NlcnQucnhfY2Fwc1swXSAhPSBIRENQXzJfMl9SWF9DQVBTX1ZFUlNJT05fVkFMKQorCQly ZXR1cm4gLUVJTlZBTDsKKworCWhkY3AtPmlzX3JlcGVhdGVyID0gSERDUF8yXzJfUlhfUkVQRUFU RVIobXNncy5zZW5kX2NlcnQucnhfY2Fwc1syXSk7CisKKwkvKgorCSAqIEhlcmUgbXNncy5ub19z dG9yZWRfa20gd2lsbCBob2xkIG1zZ3MgY29ycmVzcG9uZGluZyB0byB0aGUga20KKwkgKiBzdG9y ZWQgYWxzby4KKwkgKi8KKwlyZXQgPSBoZGNwMl92ZXJpZnlfcnhfY2VydF9wcmVwYXJlX2ttKGNv bm5lY3RvciwgJm1zZ3Muc2VuZF9jZXJ0LAorCQkJCQkgICAgICAmaGRjcC0+aXNfcGFpcmVkLAor CQkJCQkgICAgICAmbXNncy5ub19zdG9yZWRfa20sICZzaXplKTsKKwlpZiAocmV0IDwgMCkKKwkJ cmV0dXJuIHJldDsKKworCXJldCA9IHNoaW0tPndyaXRlXzJfMl9tc2coaW50ZWxfZGlnX3BvcnQs ICZtc2dzLm5vX3N0b3JlZF9rbSwgc2l6ZSk7CisJaWYgKHJldCA8IDApCisJCXJldHVybiByZXQ7 CisKKwlyZXQgPSBzaGltLT5yZWFkXzJfMl9tc2coaW50ZWxfZGlnX3BvcnQsIEhEQ1BfMl8yX0FL RV9TRU5EX0hQUklNRSwKKwkJCQkgJm1zZ3Muc2VuZF9ocHJpbWUsIHNpemVvZihtc2dzLnNlbmRf aHByaW1lKSk7CisJaWYgKHJldCA8IDApCisJCXJldHVybiByZXQ7CisKKwlyZXQgPSBoZGNwMl92 ZXJpZnlfaHByaW1lKGNvbm5lY3RvciwgJm1zZ3Muc2VuZF9ocHJpbWUpOworCWlmIChyZXQgPCAw KQorCQlyZXR1cm4gcmV0OworCisJaWYgKCFoZGNwLT5pc19wYWlyZWQpIHsKKwkJLyogUGFpcmlu ZyBpcyByZXF1aXJlZCAqLworCQlyZXQgPSBzaGltLT5yZWFkXzJfMl9tc2coaW50ZWxfZGlnX3Bv cnQsCisJCQkJCSBIRENQXzJfMl9BS0VfU0VORF9QQUlSSU5HX0lORk8sCisJCQkJCSAmbXNncy5w YWlyaW5nX2luZm8sCisJCQkJCSBzaXplb2YobXNncy5wYWlyaW5nX2luZm8pKTsKKwkJaWYgKHJl dCA8IDApCisJCQlyZXR1cm4gcmV0OworCisJCXJldCA9IGhkY3AyX3N0b3JlX3BhaXJpbmdfaW5m byhjb25uZWN0b3IsICZtc2dzLnBhaXJpbmdfaW5mbyk7CisJCWlmIChyZXQgPCAwKQorCQkJcmV0 dXJuIHJldDsKKwkJaGRjcC0+aXNfcGFpcmVkID0gdHJ1ZTsKKwl9CisKKwlyZXR1cm4gMDsKK30K Kworc3RhdGljIGludCBoZGNwMl9sb2NhbGl0eV9jaGVjayhzdHJ1Y3QgaW50ZWxfY29ubmVjdG9y ICpjb25uZWN0b3IpCit7CisJc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3Bv cnQgPSBjb25uX3RvX2RpZ19wb3J0KGNvbm5lY3Rvcik7CisJc3RydWN0IGludGVsX2hkY3AgKmhk Y3AgPSAmY29ubmVjdG9yLT5oZGNwOworCXVuaW9uIHsKKwkJc3RydWN0IGhkY3AyX2xjX2luaXQg bGNfaW5pdDsKKwkJc3RydWN0IGhkY3AyX2xjX3NlbmRfbHByaW1lIHNlbmRfbHByaW1lOworCX0g bXNnczsKKwljb25zdCBzdHJ1Y3QgaW50ZWxfaGRjcF9zaGltICpzaGltID0gaGRjcC0+aGRjcF9z aGltOworCWludCB0cmllcyA9IEhEQ1AyX0xDX1JFVFJZX0NOVCwgcmV0LCBpOworCisJZm9yIChp ID0gMDsgaSA8IHRyaWVzOyBpKyspIHsKKwkJcmV0ID0gaGRjcDJfcHJlcGFyZV9sY19pbml0KGNv bm5lY3RvciwgJm1zZ3MubGNfaW5pdCk7CisJCWlmIChyZXQgPCAwKQorCQkJY29udGludWU7CisK KwkJcmV0ID0gc2hpbS0+d3JpdGVfMl8yX21zZyhpbnRlbF9kaWdfcG9ydCwgJm1zZ3MubGNfaW5p dCwKKwkJCQkgICAgICBzaXplb2YobXNncy5sY19pbml0KSk7CisJCWlmIChyZXQgPCAwKQorCQkJ Y29udGludWU7CisKKwkJcmV0ID0gc2hpbS0+cmVhZF8yXzJfbXNnKGludGVsX2RpZ19wb3J0LAor CQkJCQkgSERDUF8yXzJfTENfU0VORF9MUFJJTUUsCisJCQkJCSAmbXNncy5zZW5kX2xwcmltZSwK KwkJCQkJIHNpemVvZihtc2dzLnNlbmRfbHByaW1lKSk7CisJCWlmIChyZXQgPCAwKQorCQkJY29u dGludWU7CisKKwkJcmV0ID0gaGRjcDJfdmVyaWZ5X2xwcmltZShjb25uZWN0b3IsICZtc2dzLnNl bmRfbHByaW1lKTsKKwkJaWYgKCFyZXQpCisJCQlicmVhazsKKwl9CisKKwlyZXR1cm4gcmV0Owor fQorCitzdGF0aWMgaW50IGhkY3AyX3Nlc3Npb25fa2V5X2V4Y2hhbmdlKHN0cnVjdCBpbnRlbF9j b25uZWN0b3IgKmNvbm5lY3RvcikKIHsKKwlzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRl bF9kaWdfcG9ydCA9IGNvbm5fdG9fZGlnX3BvcnQoY29ubmVjdG9yKTsKKwlzdHJ1Y3QgaW50ZWxf aGRjcCAqaGRjcCA9ICZjb25uZWN0b3ItPmhkY3A7CisJc3RydWN0IGhkY3AyX3NrZV9zZW5kX2Vr cyBzZW5kX2VrczsKKwlpbnQgcmV0OworCisJcmV0ID0gaGRjcDJfcHJlcGFyZV9za2V5KGNvbm5l Y3RvciwgJnNlbmRfZWtzKTsKKwlpZiAocmV0IDwgMCkKKwkJcmV0dXJuIHJldDsKKworCXJldCA9 IGhkY3AtPmhkY3Bfc2hpbS0+d3JpdGVfMl8yX21zZyhpbnRlbF9kaWdfcG9ydCwgJnNlbmRfZWtz LAorCQkJCQkgICAgIHNpemVvZihzZW5kX2VrcykpOworCWlmIChyZXQgPCAwKQorCQlyZXR1cm4g cmV0OworCiAJcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyBpbnQgaGRjcDJfYXV0aGVudGljYXRlX3Np bmsoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQoreworCXN0cnVjdCBpbnRlbF9k aWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0ID0gY29ubl90b19kaWdfcG9ydChjb25uZWN0b3Ip OworCXN0cnVjdCBpbnRlbF9oZGNwICpoZGNwID0gJmNvbm5lY3Rvci0+aGRjcDsKKwljb25zdCBz dHJ1Y3QgaW50ZWxfaGRjcF9zaGltICpzaGltID0gaGRjcC0+aGRjcF9zaGltOworCXN0cnVjdCBo ZGNwMl9kcF9lcnJhdGFfc3RyZWFtX3R5cGUgc3RyZWFtX3R5cGVfbXNnOworCWludCByZXQ7CisK KwlyZXQgPSBoZGNwMl9hdXRoZW50aWNhdGlvbl9rZXlfZXhjaGFuZ2UoY29ubmVjdG9yKTsKKwlp ZiAocmV0IDwgMCkgeworCQlEUk1fREVCVUdfS01TKCJBS0UgRmFpbGVkLiBFcnIgOiAlZFxuIiwg cmV0KTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwlyZXQgPSBoZGNwMl9sb2NhbGl0eV9jaGVjayhj b25uZWN0b3IpOworCWlmIChyZXQgPCAwKSB7CisJCURSTV9ERUJVR19LTVMoIkxvY2FsaXR5IENo ZWNrIGZhaWxlZC4gRXJyIDogJWRcbiIsIHJldCk7CisJCXJldHVybiByZXQ7CisJfQorCisJcmV0 ID0gaGRjcDJfc2Vzc2lvbl9rZXlfZXhjaGFuZ2UoY29ubmVjdG9yKTsKKwlpZiAocmV0IDwgMCkg eworCQlEUk1fREVCVUdfS01TKCJTS0UgRmFpbGVkLiBFcnIgOiAlZFxuIiwgcmV0KTsKKwkJcmV0 dXJuIHJldDsKKwl9CisKKwlpZiAoIWhkY3AtPmlzX3JlcGVhdGVyICYmIHNoaW0tPmNvbmZpZ19z dHJlYW1fdHlwZSkgeworCQkvKgorCQkgKiBFcnJhdGEgZm9yIERQOiBBcyBTdHJlYW0gdHlwZSBp cyB1c2VkIGZvciBlbmNyeXB0aW9uLAorCQkgKiBSZWNlaXZlciBzaG91bGQgYmUgY29tbXVuaWNh dGVkIHdpdGggc3RyZWFtIHR5cGUgZm9yIHRoZQorCQkgKiBkZWNyeXB0aW9uIG9mIHRoZSBjb250 ZW50LgorCQkgKiBSZXBlYXRlciB3aWxsIGJlIGNvbW11bmljYXRlZCB3aXRoIHN0cmVhbSB0eXBl IGFzIGEKKwkJICogcGFydCBvZiBpdCdzIGF1dGggbGF0ZXIgaW4gdGltZS4KKwkJICovCisJCXN0 cmVhbV90eXBlX21zZy5tc2dfaWQgPSBIRENQXzJfMl9FUlJBVEFfRFBfU1RSRUFNX1RZUEU7CisJ CXN0cmVhbV90eXBlX21zZy5zdHJlYW1fdHlwZSA9IGhkY3AtPmNvbnRlbnRfdHlwZTsKKworCQly ZXQgPSBzaGltLT5jb25maWdfc3RyZWFtX3R5cGUoaW50ZWxfZGlnX3BvcnQsICZzdHJlYW1fdHlw ZV9tc2csCisJCQkJCSAgICAgICBzaXplb2Yoc3RyZWFtX3R5cGVfbXNnKSk7CisJCWlmIChyZXQg PCAwKQorCQkJcmV0dXJuIHJldDsKKwl9CisKKwloZGNwLT5tZWlfZGF0YS5zdHJlYW1zWzBdLnN0 cmVhbV90eXBlID0gaGRjcC0+Y29udGVudF90eXBlOworCXJldCA9IGhkY3AyX2F1dGhlbnRpY2F0 ZV9wb3J0KGNvbm5lY3Rvcik7CisJaWYgKHJldCA8IDApCisJCXJldHVybiByZXQ7CisKKwlyZXR1 cm4gcmV0OworfQorCiBzdGF0aWMgaW50IGhkY3AyX2VuYWJsZV9lbmNyeXB0aW9uKHN0cnVjdCBp bnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikKIHsKIAlzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0 ICppbnRlbF9kaWdfcG9ydCA9IGNvbm5fdG9fZGlnX3BvcnQoY29ubmVjdG9yKTsKLS0gCjIuNy40 CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2 ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK