From mboxrd@z Thu Jan 1 00:00:00 1970 From: Joonas Lahtinen Subject: [PATCH v2] drm/i915: Sanitize GuC client initialization Date: Tue, 14 Feb 2017 15:53:06 +0200 Message-ID: <1487080386-16022-1-git-send-email-joonas.lahtinen@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTPS id 4A57F6E6FF for ; Tue, 14 Feb 2017 13:53:13 +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 graphics driver community testing & development List-Id: intel-gfx@lists.freedesktop.org U3RhcnRlZCBhZGRpbmcgcHJvcGVyIHRlYXJkb3duIHRvIGd1Y19jbGllbnRfYWxsb2MsIGVuZGVk IHVwIHJlbW92aW5nCnF1aXRlIGEgZmV3IGRlYWQgZW5kcyB3aGVyZSBlcnJvcnMgY29tbXVuaWNh dGluZyB3aXRoIHRoZSBHdUMgd2VyZQpzaWxlbnRseSBpZ25vcmVkLiBUaGVyZSBhbHNvIHNlZW1l ZCB0byBiZSBxdWl0ZSBhIGZldyBlcnJvbm91cwp0ZWFyZG93biBhY3Rpb25zIHBlcmZvcm1lZCBp biBjYXNlIG9mIGFuIGVycm9yIChvcmRlcmluZyB3cm9uZykuCgp2MjoKCS0gSW5jcmVhc2UgZnVu Y3Rpb24gc3ltbWV0cnkvcHJveGltaXR5IChNaWNoYWwvRGFuaWVsZSkKCS0gRml4IF9fcmVzZXJ2 ZV9kb29yYmVsbCBhY2NvdW50aW5nIGZvciBoaWdoIHByaW9yaXR5IChEYW5pZWxlKQoJLSBDYWxs IF9fdXBkYXRlX2Rvb3JiZWxsX2Rlc2MhIChEYW5pZWxlKQoJLSBJc29sYXRlIF9fZ3VjX3ssZGV9 YWxsb2NhdGVfZG9vcmJlbGwgKE1pY2hhbC9EYW5pZWxlKQoKU2lnbmVkLW9mZi1ieTogSm9vbmFz IExhaHRpbmVuIDxqb29uYXMubGFodGluZW5AbGludXguaW50ZWwuY29tPgpDYzogTWljaGFsIFdh amRlY3prbyA8bWljaGFsLndhamRlY3prb0BpbnRlbC5jb20+CkNjOiBBcmthZGl1c3ogSGlsZXIg PGFya2FkaXVzei5oaWxlckBpbnRlbC5jb20+CkNjOiBPc2NhciBNYXRlbyA8b3NjYXIubWF0ZW9A aW50ZWwuY29tPgpDYzogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4K Q2M6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgpDYzogRGFuaWVsZSBD ZXJhb2xvIFNwdXJpbyA8ZGFuaWVsZS5jZXJhb2xvc3B1cmlvQGludGVsLmNvbT4KLS0tCiBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyAgICAgICAgfCAgIDQgKy0KIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ3VjX3N1Ym1pc3Npb24uYyB8IDM3MSArKysrKysrKysrKysrKysr LS0tLS0tLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2Z3aWYuaCAgICAg IHwgICA0ICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91Yy5oICAgICAgICAgICAgfCAg MTEgKy0KIDQgZmlsZXMgY2hhbmdlZCwgMjE1IGluc2VydGlvbnMoKyksIDE3NSBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCmluZGV4IGNkMDIzZmQuLmYzOTcyY2Yg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCkBAIC0yNDkyLDcgKzI0OTIsNyBAQCBz dGF0aWMgdm9pZCBpOTE1X2d1Y19jbGllbnRfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sCiAKIAlz ZXFfcHJpbnRmKG0sICJcdFByaW9yaXR5ICVkLCBHdUMgY3R4IGluZGV4OiAldSwgUEQgb2Zmc2V0 IDB4JXhcbiIsCiAJCWNsaWVudC0+cHJpb3JpdHksIGNsaWVudC0+Y3R4X2luZGV4LCBjbGllbnQt PnByb2NfZGVzY19vZmZzZXQpOwotCXNlcV9wcmludGYobSwgIlx0RG9vcmJlbGwgaWQgJWQsIG9m ZnNldDogMHgleCwgY29va2llIDB4JXhcbiIsCisJc2VxX3ByaW50ZihtLCAiXHREb29yYmVsbCBp ZCAlZCwgb2Zmc2V0OiAweCVseCwgY29va2llIDB4JXhcbiIsCiAJCWNsaWVudC0+ZG9vcmJlbGxf aWQsIGNsaWVudC0+ZG9vcmJlbGxfb2Zmc2V0LCBjbGllbnQtPmRvb3JiZWxsX2Nvb2tpZSk7CiAJ c2VxX3ByaW50ZihtLCAiXHRXUSBzaXplICVkLCBvZmZzZXQ6IDB4JXgsIHRhaWwgJWRcbiIsCiAJ CWNsaWVudC0+d3Ffc2l6ZSwgY2xpZW50LT53cV9vZmZzZXQsIGNsaWVudC0+d3FfdGFpbCk7CkBA IC0yNTI3LDcgKzI1MjcsNyBAQCBzdGF0aWMgaW50IGk5MTVfZ3VjX2luZm8oc3RydWN0IHNlcV9m aWxlICptLCB2b2lkICpkYXRhKQogCX0KIAogCXNlcV9wcmludGYobSwgIkRvb3JiZWxsIG1hcDpc biIpOwotCXNlcV9wcmludGYobSwgIlx0JSpwYlxuIiwgR1VDX01BWF9ET09SQkVMTFMsIGd1Yy0+ ZG9vcmJlbGxfYml0bWFwKTsKKwlzZXFfcHJpbnRmKG0sICJcdCUqcGJcbiIsIEdVQ19OVU1fRE9P UkJFTExTLCBndWMtPmRvb3JiZWxsX2JpdG1hcCk7CiAJc2VxX3ByaW50ZihtLCAiRG9vcmJlbGwg bmV4dCBjYWNoZWxpbmU6IDB4JXhcblxuIiwgZ3VjLT5kYl9jYWNoZWxpbmUpOwogCiAJc2VxX3By aW50ZihtLCAiR3VDIHRvdGFsIGFjdGlvbiBjb3VudDogJWxsdVxuIiwgZ3VjLT5hY3Rpb25fY291 bnQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfc3VibWlzc2lv bi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfc3VibWlzc2lvbi5jCmluZGV4IDhj ZWQ5ZTIuLjI1OGZjYTMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3Vj X3N1Ym1pc3Npb24uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19zdWJtaXNz aW9uLmMKQEAgLTYyLDI3ICs2Miw3MyBAQAogICoKICAqLwogCitzdGF0aWMgaW5saW5lIGJvb2wg aXNfaGlnaF9wcmlvcml0eShzdHJ1Y3QgaTkxNV9ndWNfY2xpZW50KiBjbGllbnQpCit7CisJcmV0 dXJuIGNsaWVudC0+cHJpb3JpdHkgPD0gR1VDX0NUWF9QUklPUklUWV9ISUdIOworfQorCitzdGF0 aWMgaW50IF9fcmVzZXJ2ZV9kb29yYmVsbChzdHJ1Y3QgaTkxNV9ndWNfY2xpZW50ICpjbGllbnQp Cit7CisJdW5zaWduZWQgbG9uZyBvZmZzZXQ7CisJdW5zaWduZWQgbG9uZyBlbmQ7CisJdTE2IGlk OworCisJR0VNX0JVR19PTihjbGllbnQtPmRvb3JiZWxsX2lkICE9IEdVQ19ET09SQkVMTF9JTlZB TElEKTsKKworCS8qCisJICogVGhlIGJpdG1hcCB0cmFja3Mgd2hpY2ggZG9vcmJlbGwgcmVnaXN0 ZXJzIGFyZSBjdXJyZW50bHkgaW4gdXNlLgorCSAqIEl0IGlzIHNwbGl0IGludG8gdHdvIGhhbHZl czsgdGhlIGZpcnN0IGhhbGYgaXMgdXNlZCBmb3Igbm9ybWFsCisJICogcHJpb3JpdHkgY29udGV4 dHMsIHRoZSBzZWNvbmQgaGFsZiBmb3IgaGlnaC1wcmlvcml0eSBvbmVzLgorCSAqIE5vdGUgdGhh dCBsb2dpY2FsbHkgaGlnaGVyIHByaW9yaXRpZXMgYXJlIG51bWVyaWNhbGx5IGxlc3MgdGhhbgor CSAqIG5vcm1hbCBvbmVzLCBzbyB0aGUgdGVzdCBiZWxvdyBtZWFucyAiaXMgaXQgaGlnaC1wcmlv cml0eT8iCisJICovCisKKwlvZmZzZXQgPSAwOworCWVuZCA9IEdVQ19OVU1fRE9PUkJFTExTLzI7 CisJaWYgKGlzX2hpZ2hfcHJpb3JpdHkoY2xpZW50KSkgeworCQlvZmZzZXQgPSBlbmQ7CisJCWVu ZCArPSBvZmZzZXQ7CisgICAgICAgIH0KKworCWlkID0gZmluZF9uZXh0X3plcm9fYml0KGNsaWVu dC0+Z3VjLT5kb29yYmVsbF9iaXRtYXAsIG9mZnNldCwgZW5kKTsKKwlpZiAoaWQgPT0gZW5kKQor CQlyZXR1cm4gLUVOT1NQQzsKKworCV9fc2V0X2JpdChpZCwgY2xpZW50LT5ndWMtPmRvb3JiZWxs X2JpdG1hcCk7CisJY2xpZW50LT5kb29yYmVsbF9pZCA9IGlkOworCURSTV9ERUJVR19EUklWRVIo ImNsaWVudCAldSAoaGlnaCBwcmlvPSVzKSByZXNlcnZlZCBkb29yYmVsbCAlZDogXG4iLAorCQkJ IGNsaWVudC0+Y3R4X2luZGV4LCB5ZXNubyhpc19oaWdoX3ByaW9yaXR5KGNsaWVudCkpLAorCQkJ IGlkKTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgX191bnJlc2VydmVfZG9vcmJlbGwo c3RydWN0IGk5MTVfZ3VjX2NsaWVudCAqY2xpZW50KQoreworCUdFTV9CVUdfT04oY2xpZW50LT5k b29yYmVsbF9pZCA9PSBHVUNfRE9PUkJFTExfSU5WQUxJRCk7CisKKwlfX2NsZWFyX2JpdChjbGll bnQtPmRvb3JiZWxsX2lkLCBjbGllbnQtPmd1Yy0+ZG9vcmJlbGxfYml0bWFwKTsKKwljbGllbnQt PmRvb3JiZWxsX2lkID0gR1VDX0RPT1JCRUxMX0lOVkFMSUQ7Cit9CisKIC8qCiAgKiBUZWxsIHRo ZSBHdUMgdG8gYWxsb2NhdGUgb3IgZGVhbGxvY2F0ZSBhIHNwZWNpZmljIGRvb3JiZWxsCiAgKi8K IAotc3RhdGljIGludCBndWNfYWxsb2NhdGVfZG9vcmJlbGwoc3RydWN0IGludGVsX2d1YyAqZ3Vj LAotCQkJCSBzdHJ1Y3QgaTkxNV9ndWNfY2xpZW50ICpjbGllbnQpCitzdGF0aWMgaW50IF9fZ3Vj X2FsbG9jYXRlX2Rvb3JiZWxsKHN0cnVjdCBpbnRlbF9ndWMgKmd1YywgdTMyIGN0eF9pbmRleCkK IHsKIAl1MzIgYWN0aW9uW10gPSB7CiAJCUlOVEVMX0dVQ19BQ1RJT05fQUxMT0NBVEVfRE9PUkJF TEwsCi0JCWNsaWVudC0+Y3R4X2luZGV4CisJCWN0eF9pbmRleAogCX07CiAKIAlyZXR1cm4gaW50 ZWxfZ3VjX3NlbmQoZ3VjLCBhY3Rpb24sIEFSUkFZX1NJWkUoYWN0aW9uKSk7CiB9CiAKLXN0YXRp YyBpbnQgZ3VjX3JlbGVhc2VfZG9vcmJlbGwoc3RydWN0IGludGVsX2d1YyAqZ3VjLAotCQkJCXN0 cnVjdCBpOTE1X2d1Y19jbGllbnQgKmNsaWVudCkKK3N0YXRpYyBpbnQgX19ndWNfZGVhbGxvY2F0 ZV9kb29yYmVsbChzdHJ1Y3QgaW50ZWxfZ3VjICpndWMsIHUzMiBjdHhfaW5kZXgpCiB7CiAJdTMy IGFjdGlvbltdID0gewogCQlJTlRFTF9HVUNfQUNUSU9OX0RFQUxMT0NBVEVfRE9PUkJFTEwsCi0J CWNsaWVudC0+Y3R4X2luZGV4CisJCWN0eF9pbmRleAogCX07CiAKIAlyZXR1cm4gaW50ZWxfZ3Vj X3NlbmQoZ3VjLCBhY3Rpb24sIEFSUkFZX1NJWkUoYWN0aW9uKSk7CkBAIC05NSwxMDQgKzE0MSw5 OCBAQCBzdGF0aWMgaW50IGd1Y19yZWxlYXNlX2Rvb3JiZWxsKHN0cnVjdCBpbnRlbF9ndWMgKmd1 YywKICAqIGNsaWVudCBvYmplY3Qgd2hpY2ggY29udGFpbnMgdGhlIHBhZ2UgYmVpbmcgdXNlZCBm b3IgdGhlIGRvb3JiZWxsCiAgKi8KIAotc3RhdGljIGludCBndWNfdXBkYXRlX2Rvb3JiZWxsX2lk KHN0cnVjdCBpbnRlbF9ndWMgKmd1YywKLQkJCQkgIHN0cnVjdCBpOTE1X2d1Y19jbGllbnQgKmNs aWVudCwKLQkJCQkgIHUxNiBuZXdfaWQpCitzdGF0aWMgaW50IF9fdXBkYXRlX2Rvb3JiZWxsX2Rl c2Moc3RydWN0IGk5MTVfZ3VjX2NsaWVudCAqY2xpZW50LCB1MTYgbmV3X2lkKQogewotCXN0cnVj dCBzZ190YWJsZSAqc2cgPSBndWMtPmN0eF9wb29sX3ZtYS0+cGFnZXM7Ci0Jdm9pZCAqZG9vcmJl bGxfYml0bWFwID0gZ3VjLT5kb29yYmVsbF9iaXRtYXA7Ci0Jc3RydWN0IGd1Y19kb29yYmVsbF9p bmZvICpkb29yYmVsbDsKKwlzdHJ1Y3Qgc2dfdGFibGUgKnNnID0gY2xpZW50LT5ndWMtPmN0eF9w b29sX3ZtYS0+cGFnZXM7CiAJc3RydWN0IGd1Y19jb250ZXh0X2Rlc2MgZGVzYzsKIAlzaXplX3Qg bGVuOwogCi0JZG9vcmJlbGwgPSBjbGllbnQtPnZhZGRyICsgY2xpZW50LT5kb29yYmVsbF9vZmZz ZXQ7Ci0KLQlpZiAoY2xpZW50LT5kb29yYmVsbF9pZCAhPSBHVUNfSU5WQUxJRF9ET09SQkVMTF9J RCAmJgotCSAgICB0ZXN0X2JpdChjbGllbnQtPmRvb3JiZWxsX2lkLCBkb29yYmVsbF9iaXRtYXAp KSB7Ci0JCS8qIERlYWN0aXZhdGUgdGhlIG9sZCBkb29yYmVsbCAqLwotCQlkb29yYmVsbC0+ZGJf c3RhdHVzID0gR1VDX0RPT1JCRUxMX0RJU0FCTEVEOwotCQkodm9pZClndWNfcmVsZWFzZV9kb29y YmVsbChndWMsIGNsaWVudCk7Ci0JCV9fY2xlYXJfYml0KGNsaWVudC0+ZG9vcmJlbGxfaWQsIGRv b3JiZWxsX2JpdG1hcCk7Ci0JfQotCiAJLyogVXBkYXRlIHRoZSBHdUMncyBpZGVhIG9mIHRoZSBk b29yYmVsbCBJRCAqLwogCWxlbiA9IHNnX3Bjb3B5X3RvX2J1ZmZlcihzZy0+c2dsLCBzZy0+bmVu dHMsICZkZXNjLCBzaXplb2YoZGVzYyksCi0JCQkgICAgIHNpemVvZihkZXNjKSAqIGNsaWVudC0+ Y3R4X2luZGV4KTsKKwkJCQkgc2l6ZW9mKGRlc2MpICogY2xpZW50LT5jdHhfaW5kZXgpOwogCWlm IChsZW4gIT0gc2l6ZW9mKGRlc2MpKQogCQlyZXR1cm4gLUVGQVVMVDsKKwogCWRlc2MuZGJfaWQg PSBuZXdfaWQ7CiAJbGVuID0gc2dfcGNvcHlfZnJvbV9idWZmZXIoc2ctPnNnbCwgc2ctPm5lbnRz LCAmZGVzYywgc2l6ZW9mKGRlc2MpLAotCQkJICAgICBzaXplb2YoZGVzYykgKiBjbGllbnQtPmN0 eF9pbmRleCk7CisJCQkJICAgc2l6ZW9mKGRlc2MpICogY2xpZW50LT5jdHhfaW5kZXgpOwogCWlm IChsZW4gIT0gc2l6ZW9mKGRlc2MpKQogCQlyZXR1cm4gLUVGQVVMVDsKIAotCWNsaWVudC0+ZG9v cmJlbGxfaWQgPSBuZXdfaWQ7Ci0JaWYgKG5ld19pZCA9PSBHVUNfSU5WQUxJRF9ET09SQkVMTF9J RCkKLQkJcmV0dXJuIDA7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgZ3VjX2Rvb3Ji ZWxsX2luZm8gKl9fZ2V0X2Rvb3JiZWxsKHN0cnVjdCBpOTE1X2d1Y19jbGllbnQgKmNsaWVudCkK K3sKKwlyZXR1cm4gY2xpZW50LT52YWRkciArIGNsaWVudC0+ZG9vcmJlbGxfb2Zmc2V0OworfQor CitzdGF0aWMgYm9vbCBoYXNfZG9vcmJlbGwoc3RydWN0IGk5MTVfZ3VjX2NsaWVudCAqY2xpZW50 KQoreworCWlmIChjbGllbnQtPmRvb3JiZWxsX2lkID09IEdVQ19ET09SQkVMTF9JTlZBTElEKQor CQlyZXR1cm4gZmFsc2U7CiAKLQkvKiBBY3RpdmF0ZSB0aGUgbmV3IGRvb3JiZWxsICovCi0JX19z ZXRfYml0KG5ld19pZCwgZG9vcmJlbGxfYml0bWFwKTsKKwlyZXR1cm4gdGVzdF9iaXQoY2xpZW50 LT5kb29yYmVsbF9pZCwgY2xpZW50LT5ndWMtPmRvb3JiZWxsX2JpdG1hcCk7Cit9CisKK3N0YXRp YyBpbnQgX19jcmVhdGVfZG9vcmJlbGwoc3RydWN0IGk5MTVfZ3VjX2NsaWVudCAqY2xpZW50KQor eworCXN0cnVjdCBndWNfZG9vcmJlbGxfaW5mbyAqZG9vcmJlbGw7CisJaW50IGVycjsKKworCWRv b3JiZWxsID0gX19nZXRfZG9vcmJlbGwoY2xpZW50KTsKIAlkb29yYmVsbC0+ZGJfc3RhdHVzID0g R1VDX0RPT1JCRUxMX0VOQUJMRUQ7CiAJZG9vcmJlbGwtPmNvb2tpZSA9IGNsaWVudC0+ZG9vcmJl bGxfY29va2llOwotCXJldHVybiBndWNfYWxsb2NhdGVfZG9vcmJlbGwoZ3VjLCBjbGllbnQpOwor CisJZXJyID0gX19ndWNfYWxsb2NhdGVfZG9vcmJlbGwoY2xpZW50LT5ndWMsIGNsaWVudC0+Y3R4 X2luZGV4KTsKKwlpZiAoZXJyKSB7CisJCWRvb3JiZWxsLT5kYl9zdGF0dXMgPSBHVUNfRE9PUkJF TExfRElTQUJMRUQ7CisJCWRvb3JiZWxsLT5jb29raWUgPSAwOworCX0KKwlyZXR1cm4gZXJyOwog fQogCi1zdGF0aWMgdm9pZCBndWNfZGlzYWJsZV9kb29yYmVsbChzdHJ1Y3QgaW50ZWxfZ3VjICpn dWMsCi0JCQkJIHN0cnVjdCBpOTE1X2d1Y19jbGllbnQgKmNsaWVudCkKK3N0YXRpYyBpbnQgX19k ZXN0cm95X2Rvb3JiZWxsKHN0cnVjdCBpOTE1X2d1Y19jbGllbnQgKmNsaWVudCkKIHsKLQkodm9p ZClndWNfdXBkYXRlX2Rvb3JiZWxsX2lkKGd1YywgY2xpZW50LCBHVUNfSU5WQUxJRF9ET09SQkVM TF9JRCk7CisJc3RydWN0IGd1Y19kb29yYmVsbF9pbmZvICpkb29yYmVsbDsKIAotCS8qIFhYWDog d2FpdCBmb3IgYW55IGludGVycnVwdHMgKi8KLQkvKiBYWFg6IHdhaXQgZm9yIHdvcmtxdWV1ZSB0 byBkcmFpbiAqLworCWRvb3JiZWxsID0gX19nZXRfZG9vcmJlbGwoY2xpZW50KTsKKwlkb29yYmVs bC0+ZGJfc3RhdHVzID0gR1VDX0RPT1JCRUxMX0RJU0FCTEVEOworCWRvb3JiZWxsLT5jb29raWUg PSAwOworCisJcmV0dXJuIF9fZ3VjX2RlYWxsb2NhdGVfZG9vcmJlbGwoY2xpZW50LT5ndWMsIGNs aWVudC0+Y3R4X2luZGV4KTsKIH0KIAotc3RhdGljIHVpbnQxNl90Ci1zZWxlY3RfZG9vcmJlbGxf cmVnaXN0ZXIoc3RydWN0IGludGVsX2d1YyAqZ3VjLCB1aW50MzJfdCBwcmlvcml0eSkKK3N0YXRp YyBpbnQgZGVzdHJveV9kb29yYmVsbChzdHJ1Y3QgaTkxNV9ndWNfY2xpZW50ICpjbGllbnQpCiB7 Ci0JLyoKLQkgKiBUaGUgYml0bWFwIHRyYWNrcyB3aGljaCBkb29yYmVsbCByZWdpc3RlcnMgYXJl IGN1cnJlbnRseSBpbiB1c2UuCi0JICogSXQgaXMgc3BsaXQgaW50byB0d28gaGFsdmVzOyB0aGUg Zmlyc3QgaGFsZiBpcyB1c2VkIGZvciBub3JtYWwKLQkgKiBwcmlvcml0eSBjb250ZXh0cywgdGhl IHNlY29uZCBoYWxmIGZvciBoaWdoLXByaW9yaXR5IG9uZXMuCi0JICogTm90ZSB0aGF0IGxvZ2lj YWxseSBoaWdoZXIgcHJpb3JpdGllcyBhcmUgbnVtZXJpY2FsbHkgbGVzcyB0aGFuCi0JICogbm9y bWFsIG9uZXMsIHNvIHRoZSB0ZXN0IGJlbG93IG1lYW5zICJpcyBpdCBoaWdoLXByaW9yaXR5PyIK LQkgKi8KLQljb25zdCBib29sIGhpX3ByaSA9IChwcmlvcml0eSA8PSBHVUNfQ1RYX1BSSU9SSVRZ X0hJR0gpOwotCWNvbnN0IHVpbnQxNl90IGhhbGYgPSBHVUNfTUFYX0RPT1JCRUxMUyAvIDI7Ci0J Y29uc3QgdWludDE2X3Qgc3RhcnQgPSBoaV9wcmkgPyBoYWxmIDogMDsKLQljb25zdCB1aW50MTZf dCBlbmQgPSBzdGFydCArIGhhbGY7Ci0JdWludDE2X3QgaWQ7CisJaW50IGVycjsKIAotCWlkID0g ZmluZF9uZXh0X3plcm9fYml0KGd1Yy0+ZG9vcmJlbGxfYml0bWFwLCBlbmQsIHN0YXJ0KTsKLQlp ZiAoaWQgPT0gZW5kKQotCQlpZCA9IEdVQ19JTlZBTElEX0RPT1JCRUxMX0lEOworCUdFTV9CVUdf T04oIWhhc19kb29yYmVsbChjbGllbnQpKTsKIAotCURSTV9ERUJVR19EUklWRVIoImFzc2lnbmVk ICVzIHByaW9yaXR5IGRvb3JiZWxsIGlkIDB4JXhcbiIsCi0JCQloaV9wcmkgPyAiaGlnaCIgOiAi bm9ybWFsIiwgaWQpOworCS8qIFhYWDogd2FpdCBmb3IgYW55IGludGVycnVwdHMgKi8KKwkvKiBY WFg6IHdhaXQgZm9yIHdvcmtxdWV1ZSB0byBkcmFpbiAqLwogCi0JcmV0dXJuIGlkOwotfQorCWVy ciA9IF9fZGVzdHJveV9kb29yYmVsbChjbGllbnQpOworCWlmIChlcnIpCisJCXJldHVybiBlcnI7 CiAKLS8qCi0gKiBTZWxlY3QsIGFzc2lnbiBhbmQgcmVsYXNlIGRvb3JiZWxsIGNhY2hlbGluZXMK LSAqCi0gKiBUaGVzZSBmdW5jdGlvbnMgdHJhY2sgd2hpY2ggZG9vcmJlbGwgY2FjaGVsaW5lcyBh cmUgaW4gdXNlLgotICogVGhlIGRhdGEgdGhleSBtYW5pcHVsYXRlIGlzIHByb3RlY3RlZCBieSB0 aGUgaW50ZWxfZ3VjX3NlbmQgbG9jay4KLSAqLworCV9fdW5yZXNlcnZlX2Rvb3JiZWxsKGNsaWVu dCk7CiAKLXN0YXRpYyB1aW50MzJfdCBzZWxlY3RfZG9vcmJlbGxfY2FjaGVsaW5lKHN0cnVjdCBp bnRlbF9ndWMgKmd1YykKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHVuc2lnbmVkIGxvbmcgX19y ZXNlcnZlX2NhY2hlbGluZShzdHJ1Y3QgaW50ZWxfZ3VjKiBndWMpCiB7Ci0JY29uc3QgdWludDMy X3QgY2FjaGVsaW5lX3NpemUgPSBjYWNoZV9saW5lX3NpemUoKTsKLQl1aW50MzJfdCBvZmZzZXQ7 CisJdW5zaWduZWQgbG9uZyBvZmZzZXQ7CiAKIAkvKiBEb29yYmVsbCB1c2VzIGEgc2luZ2xlIGNh Y2hlIGxpbmUgd2l0aGluIGEgcGFnZSAqLwogCW9mZnNldCA9IG9mZnNldF9pbl9wYWdlKGd1Yy0+ ZGJfY2FjaGVsaW5lKTsKIAogCS8qIE1vdmluZyB0byBuZXh0IGNhY2hlIGxpbmUgdG8gcmVkdWNl IGNvbnRlbnRpb24gKi8KLQlndWMtPmRiX2NhY2hlbGluZSArPSBjYWNoZWxpbmVfc2l6ZTsKLQot CURSTV9ERUJVR19EUklWRVIoInNlbGVjdGVkIGRvb3JiZWxsIGNhY2hlbGluZSAweCV4LCBuZXh0 IDB4JXgsIGxpbmVzaXplICV1XG4iLAotCQkJb2Zmc2V0LCBndWMtPmRiX2NhY2hlbGluZSwgY2Fj aGVsaW5lX3NpemUpOworCWd1Yy0+ZGJfY2FjaGVsaW5lICs9IGNhY2hlX2xpbmVfc2l6ZSgpOwog CisJRFJNX0RFQlVHX0RSSVZFUigicmVzZXJ2ZWQgY2FjaGVsaW5lIDB4JWx4LCBuZXh0IDB4JXgs IGxpbmVzaXplICV1XG4iLAorCQkJb2Zmc2V0LCBndWMtPmRiX2NhY2hlbGluZSwgY2FjaGVfbGlu ZV9zaXplKCkpOwogCXJldHVybiBvZmZzZXQ7CiB9CiAKQEAgLTU4NCw5MyArNjI0LDg0IEBAIHN0 cnVjdCBpOTE1X3ZtYSAqaW50ZWxfZ3VjX2FsbG9jYXRlX3ZtYShzdHJ1Y3QgaW50ZWxfZ3VjICpn dWMsIHUzMiBzaXplKQogCXJldHVybiB2bWE7CiB9CiAKLXN0YXRpYyB2b2lkCi1ndWNfY2xpZW50 X2ZyZWUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAotCQlzdHJ1Y3QgaTkxNV9n dWNfY2xpZW50ICpjbGllbnQpCitzdGF0aWMgdm9pZCBndWNfY2xpZW50X2ZyZWUoc3RydWN0IGk5 MTVfZ3VjX2NsaWVudCAqY2xpZW50KQogewotCXN0cnVjdCBpbnRlbF9ndWMgKmd1YyA9ICZkZXZf cHJpdi0+Z3VjOwotCi0JaWYgKCFjbGllbnQpCi0JCXJldHVybjsKLQogCS8qCiAJICogWFhYOiB3 YWl0IGZvciBhbnkgb3V0c3RhbmRpbmcgc3VibWlzc2lvbnMgYmVmb3JlIGZyZWVpbmcgbWVtb3J5 LgogCSAqIEJlIHN1cmUgdG8gZHJvcCBhbnkgbG9ja3MKIAkgKi8KLQotCWlmIChjbGllbnQtPnZh ZGRyKSB7Ci0JCS8qCi0JCSAqIElmIHdlIGdvdCBhcyBmYXIgYXMgc2V0dGluZyB1cCBhIGRvb3Ji ZWxsLCBtYWtlIHN1cmUgd2UKLQkJICogc2h1dCBpdCBkb3duIGJlZm9yZSB1bm1hcHBpbmcgJiBk ZWFsbG9jYXRpbmcgdGhlIG1lbW9yeS4KLQkJICovCi0JCWd1Y19kaXNhYmxlX2Rvb3JiZWxsKGd1 YywgY2xpZW50KTsKLQotCQlpOTE1X2dlbV9vYmplY3RfdW5waW5fbWFwKGNsaWVudC0+dm1hLT5v YmopOwotCX0KLQorCVdBUk5fT04oZGVzdHJveV9kb29yYmVsbChjbGllbnQpKTsKKwlndWNfY3R4 X2Rlc2NfZmluaShjbGllbnQtPmd1YywgY2xpZW50KTsKKwlpOTE1X2dlbV9vYmplY3RfdW5waW5f bWFwKGNsaWVudC0+dm1hLT5vYmopOwogCWk5MTVfdm1hX3VucGluX2FuZF9yZWxlYXNlKCZjbGll bnQtPnZtYSk7Ci0KLQlpZiAoY2xpZW50LT5jdHhfaW5kZXggIT0gR1VDX0lOVkFMSURfQ1RYX0lE KSB7Ci0JCWd1Y19jdHhfZGVzY19maW5pKGd1YywgY2xpZW50KTsKLQkJaWRhX3NpbXBsZV9yZW1v dmUoJmd1Yy0+Y3R4X2lkcywgY2xpZW50LT5jdHhfaW5kZXgpOwotCX0KLQorCWlkYV9zaW1wbGVf cmVtb3ZlKCZjbGllbnQtPmd1Yy0+Y3R4X2lkcywgY2xpZW50LT5jdHhfaW5kZXgpOwogCWtmcmVl KGNsaWVudCk7CiB9CiAKIC8qIENoZWNrIHRoYXQgYSBkb29yYmVsbCByZWdpc3RlciBpcyBpbiB0 aGUgZXhwZWN0ZWQgc3RhdGUgKi8KLXN0YXRpYyBib29sIGd1Y19kb29yYmVsbF9jaGVjayhzdHJ1 Y3QgaW50ZWxfZ3VjICpndWMsIHVpbnQxNl90IGRiX2lkKQorc3RhdGljIGJvb2wgZG9vcmJlbGxf b2soc3RydWN0IGludGVsX2d1YyAqZ3VjLCB1MTYgZGJfaWQpCiB7CiAJc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gZ3VjX3RvX2k5MTUoZ3VjKTsKLQlpOTE1X3JlZ190IGRyYnJl ZyA9IEdFTjhfRFJCUkVHTChkYl9pZCk7Ci0JdWludDMyX3QgdmFsdWUgPSBJOTE1X1JFQUQoZHJi cmVnKTsKLQlib29sIGVuYWJsZWQgPSAodmFsdWUgJiBHVUNfRE9PUkJFTExfRU5BQkxFRCkgIT0g MDsKLQlib29sIGV4cGVjdGVkID0gdGVzdF9iaXQoZGJfaWQsIGd1Yy0+ZG9vcmJlbGxfYml0bWFw KTsKKwl1MzIgZHJicmVnbDsKKwlib29sIHZhbGlkOworCisJR0VNX0JVR19PTihkYl9pZCA+PSBH VUNfRE9PUkJFTExfSU5WQUxJRCk7CiAKLQlpZiAoZW5hYmxlZCA9PSBleHBlY3RlZCkKKwlkcmJy ZWdsID0gSTkxNV9SRUFEKEdFTjhfRFJCUkVHTChkYl9pZCkpOworCXZhbGlkID0gZHJicmVnbCAm IEdFTjhfRFJCX1ZBTElEOworCisJaWYgKHRlc3RfYml0KGRiX2lkLCBndWMtPmRvb3JiZWxsX2Jp dG1hcCkgPT0gdmFsaWQpCiAJCXJldHVybiB0cnVlOwogCi0JRFJNX0RFQlVHX0RSSVZFUigiRG9v cmJlbGwgJWQgKHJlZyAweCV4KSAweCV4LCBzaG91bGQgYmUgJXNcbiIsCi0JCQkgZGJfaWQsIGRy YnJlZy5yZWcsIHZhbHVlLAotCQkJIGV4cGVjdGVkID8gImFjdGl2ZSIgOiAiaW5hY3RpdmUiKTsK KwlEUk1fREVCVUdfRFJJVkVSKCJEb29yYmVsbCAlZCBoYXMgdW5leHBlY3RlZCBzdGF0ZSAoMHgl eCk6IHZhbGlkPSVzXG4iLAorCQkJIGRiX2lkLCBkcmJyZWdsLCB5ZXNubyh2YWxpZCkpOwogCiAJ cmV0dXJuIGZhbHNlOwogfQogCitzdGF0aWMgaW50IF9fcmVzZXRfZG9vcmJlbGwoc3RydWN0IGk5 MTVfZ3VjX2NsaWVudCogY2xpZW50LCB1MTYgZGJfaWQpCit7CisJaW50IGVycjsKKworCWVyciA9 IF9fdXBkYXRlX2Rvb3JiZWxsX2Rlc2MoY2xpZW50LCBkYl9pZCk7CisJaWYgKCFlcnIpCisJCWVy ciA9IF9fY3JlYXRlX2Rvb3JiZWxsKGNsaWVudCk7CisJaWYgKCFlcnIpCisJCWVyciA9IF9fZGVz dHJveV9kb29yYmVsbChjbGllbnQpOworCisJcmV0dXJuIGVycjsKK30KKwogLyoKICAqIEJvcnJv dyB0aGUgZmlyc3QgY2xpZW50IHRvIHNldCB1cCAmIHRlYXIgZG93biBlYWNoIHVudXNlZCBkb29y YmVsbAogICogaW4gdHVybiwgdG8gZW5zdXJlIHRoYXQgYWxsIGRvb3JiZWxsIGgvdyBpcyAocmUp aW5pdGlhbGlzZWQuCiAgKi8KLXN0YXRpYyB2b2lkIGd1Y19pbml0X2Rvb3JiZWxsX2h3KHN0cnVj dCBpbnRlbF9ndWMgKmd1YykKK3N0YXRpYyBpbnQgZ3VjX2luaXRfZG9vcmJlbGxfaHcoc3RydWN0 IGludGVsX2d1YyAqZ3VjKQogewogCXN0cnVjdCBpOTE1X2d1Y19jbGllbnQgKmNsaWVudCA9IGd1 Yy0+ZXhlY2J1Zl9jbGllbnQ7Ci0JdWludDE2X3QgZGJfaWQ7Ci0JaW50IGksIGVycjsKKwlpbnQg ZXJyOworCWludCBpOwogCi0JZ3VjX2Rpc2FibGVfZG9vcmJlbGwoZ3VjLCBjbGllbnQpOworCWlm IChoYXNfZG9vcmJlbGwoY2xpZW50KSkKKwkJZGVzdHJveV9kb29yYmVsbChjbGllbnQpOwogCi0J Zm9yIChpID0gMDsgaSA8IEdVQ19NQVhfRE9PUkJFTExTOyArK2kpIHsKLQkJLyogU2tpcCBpZiBk b29yYmVsbCBpcyBPSyAqLwotCQlpZiAoZ3VjX2Rvb3JiZWxsX2NoZWNrKGd1YywgaSkpCisJZm9y IChpID0gMDsgaSA8IEdVQ19OVU1fRE9PUkJFTExTOyArK2kpIHsKKwkJaWYgKGRvb3JiZWxsX29r KGd1YywgaSkpCiAJCQljb250aW51ZTsKIAotCQllcnIgPSBndWNfdXBkYXRlX2Rvb3JiZWxsX2lk KGd1YywgY2xpZW50LCBpKTsKLQkJaWYgKGVycikKLQkJCURSTV9ERUJVR19EUklWRVIoIkRvb3Ji ZWxsICVkIHVwZGF0ZSBmYWlsZWQsIGVyciAlZFxuIiwKLQkJCQkJaSwgZXJyKTsKKwkJZXJyID0g X19yZXNldF9kb29yYmVsbChjbGllbnQsIGkpOworCQlXQVJOKGVyciwgIkRvb3JiZWxsICVkIHJl c2V0IGZhaWxlZCwgZXJyICVkXG4iLCBpLCBlcnIpOwogCX0KIAotCWRiX2lkID0gc2VsZWN0X2Rv b3JiZWxsX3JlZ2lzdGVyKGd1YywgY2xpZW50LT5wcmlvcml0eSk7Ci0JV0FSTl9PTihkYl9pZCA9 PSBHVUNfSU5WQUxJRF9ET09SQkVMTF9JRCk7Ci0KLQllcnIgPSBndWNfdXBkYXRlX2Rvb3JiZWxs X2lkKGd1YywgY2xpZW50LCBkYl9pZCk7CisJZXJyID0gX19yZXNlcnZlX2Rvb3JiZWxsKGNsaWVu dCk7CiAJaWYgKGVycikKLQkJRFJNX1dBUk4oIkZhaWxlZCB0byByZXN0b3JlIGRvb3JiZWxsIHRv ICVkLCBlcnIgJWRcbiIsCi0JCQkgZGJfaWQsIGVycik7CisJCXJldHVybiBlcnI7CiAKIAkvKiBS ZWFkIGJhY2sgJiB2ZXJpZnkgYWxsIGRvb3JiZWxsIHJlZ2lzdGVycyAqLwotCWZvciAoaSA9IDA7 IGkgPCBHVUNfTUFYX0RPT1JCRUxMUzsgKytpKQotCQkodm9pZClndWNfZG9vcmJlbGxfY2hlY2so Z3VjLCBpKTsKKwlmb3IgKGkgPSAwOyBpIDwgR1VDX05VTV9ET09SQkVMTFM7ICsraSkKKwkJV0FS Tl9PTighZG9vcmJlbGxfb2soZ3VjLCBpKSk7CisKKwlyZXR1cm4gMDsKIH0KIAogLyoqCkBAIC02 OTYsNDkgKzcyNyw0NiBAQCBndWNfY2xpZW50X2FsbG9jKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiwKIAlzdHJ1Y3QgaW50ZWxfZ3VjICpndWMgPSAmZGV2X3ByaXYtPmd1YzsKIAlz dHJ1Y3QgaTkxNV92bWEgKnZtYTsKIAl2b2lkICp2YWRkcjsKLQl1aW50MTZfdCBkYl9pZDsKKwlp bnQgcmV0OwogCiAJY2xpZW50ID0ga3phbGxvYyhzaXplb2YoKmNsaWVudCksIEdGUF9LRVJORUwp OwogCWlmICghY2xpZW50KQotCQlyZXR1cm4gTlVMTDsKKwkJcmV0dXJuIEVSUl9QVFIoLUVOT01F TSk7CiAKLQljbGllbnQtPm93bmVyID0gY3R4OwogCWNsaWVudC0+Z3VjID0gZ3VjOworCWNsaWVu dC0+b3duZXIgPSBjdHg7CiAJY2xpZW50LT5lbmdpbmVzID0gZW5naW5lczsKIAljbGllbnQtPnBy aW9yaXR5ID0gcHJpb3JpdHk7Ci0JY2xpZW50LT5kb29yYmVsbF9pZCA9IEdVQ19JTlZBTElEX0RP T1JCRUxMX0lEOworCWNsaWVudC0+ZG9vcmJlbGxfaWQgPSBHVUNfRE9PUkJFTExfSU5WQUxJRDsK KwljbGllbnQtPndxX29mZnNldCA9IEdVQ19EQl9TSVpFOworCWNsaWVudC0+d3Ffc2l6ZSA9IEdV Q19XUV9TSVpFOworCXNwaW5fbG9ja19pbml0KCZjbGllbnQtPndxX2xvY2spOwogCi0JY2xpZW50 LT5jdHhfaW5kZXggPSAodWludDMyX3QpaWRhX3NpbXBsZV9nZXQoJmd1Yy0+Y3R4X2lkcywgMCwK LQkJCUdVQ19NQVhfR1BVX0NPTlRFWFRTLCBHRlBfS0VSTkVMKTsKLQlpZiAoY2xpZW50LT5jdHhf aW5kZXggPj0gR1VDX01BWF9HUFVfQ09OVEVYVFMpIHsKLQkJY2xpZW50LT5jdHhfaW5kZXggPSBH VUNfSU5WQUxJRF9DVFhfSUQ7Ci0JCWdvdG8gZXJyOwotCX0KKwlyZXQgPSBpZGFfc2ltcGxlX2dl dCgmZ3VjLT5jdHhfaWRzLCAwLCBHVUNfTUFYX0dQVV9DT05URVhUUywKKwkJCQlHRlBfS0VSTkVM KTsKKwlpZiAocmV0IDwgMCkKKwkJZ290byBlcnJfY2xpZW50OworCisJY2xpZW50LT5jdHhfaW5k ZXggPSByZXQ7CiAKIAkvKiBUaGUgZmlyc3QgcGFnZSBpcyBkb29yYmVsbC9wcm9jX2Rlc2MuIFR3 byBmb2xsb3dlZCBwYWdlcyBhcmUgd3EuICovCiAJdm1hID0gaW50ZWxfZ3VjX2FsbG9jYXRlX3Zt YShndWMsIEdVQ19EQl9TSVpFICsgR1VDX1dRX1NJWkUpOwotCWlmIChJU19FUlIodm1hKSkKLQkJ Z290byBlcnI7CisJaWYgKElTX0VSUih2bWEpKSB7CisJCXJldCA9IFBUUl9FUlIodm1hKTsKKwkJ Z290byBlcnJfaWQ7CisJfQogCiAJLyogV2UnbGwga2VlcCBqdXN0IHRoZSBmaXJzdCAoZG9vcmJl bGwvcHJvYykgcGFnZSBwZXJtYW5lbnRseSBrbWFwJ2QuICovCiAJY2xpZW50LT52bWEgPSB2bWE7 CiAKIAl2YWRkciA9IGk5MTVfZ2VtX29iamVjdF9waW5fbWFwKHZtYS0+b2JqLCBJOTE1X01BUF9X Qik7Ci0JaWYgKElTX0VSUih2YWRkcikpCi0JCWdvdG8gZXJyOwotCisJaWYgKElTX0VSUih2YWRk cikpIHsKKwkJcmV0ID0gUFRSX0VSUih2YWRkcik7CisJCWdvdG8gZXJyX3ZtYTsKKwl9CiAJY2xp ZW50LT52YWRkciA9IHZhZGRyOwogCi0Jc3Bpbl9sb2NrX2luaXQoJmNsaWVudC0+d3FfbG9jayk7 Ci0JY2xpZW50LT53cV9vZmZzZXQgPSBHVUNfREJfU0laRTsKLQljbGllbnQtPndxX3NpemUgPSBH VUNfV1FfU0laRTsKLQotCWRiX2lkID0gc2VsZWN0X2Rvb3JiZWxsX3JlZ2lzdGVyKGd1YywgY2xp ZW50LT5wcmlvcml0eSk7Ci0JaWYgKGRiX2lkID09IEdVQ19JTlZBTElEX0RPT1JCRUxMX0lEKQot CQkvKiBYWFg6IGV2aWN0IGEgZG9vcmJlbGwgaW5zdGVhZD8gKi8KLQkJZ290byBlcnI7Ci0KLQlj bGllbnQtPmRvb3JiZWxsX29mZnNldCA9IHNlbGVjdF9kb29yYmVsbF9jYWNoZWxpbmUoZ3VjKTsK KwljbGllbnQtPmRvb3JiZWxsX29mZnNldCA9IF9fcmVzZXJ2ZV9jYWNoZWxpbmUoZ3VjKTsKIAog CS8qCiAJICogU2luY2UgdGhlIGRvb3JiZWxsIG9ubHkgcmVxdWlyZXMgYSBzaW5nbGUgY2FjaGVs aW5lLCB3ZSBjYW4gc2F2ZQpAQCAtNzUzLDI3ICs3ODEsMzUgQEAgZ3VjX2NsaWVudF9hbGxvYyhz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJZ3VjX3Byb2NfZGVzY19pbml0KGd1 YywgY2xpZW50KTsKIAlndWNfY3R4X2Rlc2NfaW5pdChndWMsIGNsaWVudCk7CiAKLQkvKiBGb3Ig cnVudGltZSBjbGllbnQgYWxsb2NhdGlvbiB3ZSBuZWVkIHRvIGVuYWJsZSB0aGUgZG9vcmJlbGwu IE5vdAotCSAqIHJlcXVpcmVkIHlldCBmb3IgdGhlIHN0YXRpYyBleGVjYnVmX2NsaWVudCBhcyB0 aGlzIHNwZWNpYWwga2VybmVsCi0JICogY2xpZW50IGlzIGVuYWJsZWQgZnJvbSBpOTE1X2d1Y19z dWJtaXNzaW9uX2VuYWJsZSgpLgotCSAqCi0JICogZ3VjX3VwZGF0ZV9kb29yYmVsbF9pZChndWMs IGNsaWVudCwgZGJfaWQpOwotCSAqLworCS8qIEZvciBydW50aW1lIGNsaWVudCBhbGxvY2F0aW9u IHdlIG5lZWQgdG8gZW5hYmxlIHRoZSBkb29yYmVsbC4gKi8KKwlyZXQgPSBfX3VwZGF0ZV9kb29y YmVsbF9kZXNjKGNsaWVudCwgY2xpZW50LT5kb29yYmVsbF9pZCk7CisJaWYgKHJldCkKKwkJZ290 byBlcnJfdmFkZHI7CisKKwlyZXQgPSBfX2NyZWF0ZV9kb29yYmVsbChjbGllbnQpOworCWlmIChy ZXQpCisJCWdvdG8gZXJyX2RiOwogCiAJRFJNX0RFQlVHX0RSSVZFUigibmV3IHByaW9yaXR5ICV1 IGNsaWVudCAlcCBmb3IgZW5naW5lKHMpIDB4JXg6IGN0eF9pbmRleCAldVxuIiwKLQkJcHJpb3Jp dHksIGNsaWVudCwgY2xpZW50LT5lbmdpbmVzLCBjbGllbnQtPmN0eF9pbmRleCk7Ci0JRFJNX0RF QlVHX0RSSVZFUigiZG9vcmJlbGwgaWQgJXUsIGNhY2hlbGluZSBvZmZzZXQgMHgleFxuIiwKLQkJ Y2xpZW50LT5kb29yYmVsbF9pZCwgY2xpZW50LT5kb29yYmVsbF9vZmZzZXQpOworCQkJIHByaW9y aXR5LCBjbGllbnQsIGNsaWVudC0+ZW5naW5lcywgY2xpZW50LT5jdHhfaW5kZXgpOworCURSTV9E RUJVR19EUklWRVIoImRvb3JiZWxsIGlkICV1LCBjYWNoZWxpbmUgb2Zmc2V0IDB4JWx4XG4iLAor CQkJIGNsaWVudC0+ZG9vcmJlbGxfaWQsIGNsaWVudC0+ZG9vcmJlbGxfb2Zmc2V0KTsKIAogCXJl dHVybiBjbGllbnQ7CitlcnJfZGI6CisJX191cGRhdGVfZG9vcmJlbGxfZGVzYyhjbGllbnQsIEdV Q19ET09SQkVMTF9JTlZBTElEKTsKK2Vycl92YWRkcjoKKwlpOTE1X2dlbV9vYmplY3RfdW5waW5f bWFwKGNsaWVudC0+dm1hLT5vYmopOworZXJyX3ZtYToKKwlpOTE1X3ZtYV91bnBpbl9hbmRfcmVs ZWFzZSgmY2xpZW50LT52bWEpOworZXJyX2lkOgorCWlkYV9zaW1wbGVfcmVtb3ZlKCZndWMtPmN0 eF9pZHMsIGNsaWVudC0+Y3R4X2luZGV4KTsKK2Vycl9jbGllbnQ6CisJa2ZyZWUoY2xpZW50KTsK IAotZXJyOgotCWd1Y19jbGllbnRfZnJlZShkZXZfcHJpdiwgY2xpZW50KTsKLQlyZXR1cm4gTlVM TDsKKwlyZXR1cm4gRVJSX1BUUihyZXQpOwogfQogCi0KLQogc3RhdGljIHZvaWQgZ3VjX3BvbGlj aWVzX2luaXQoc3RydWN0IGd1Y19wb2xpY2llcyAqcG9saWNpZXMpCiB7CiAJc3RydWN0IGd1Y19w b2xpY3kgKnBvbGljeTsKQEAgLTg4MSw3ICs5MTcsNyBAQCBpbnQgaTkxNV9ndWNfc3VibWlzc2lv bl9pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAkJcmV0dXJuIDA7CiAK IAkvKiBXaXBlIGJpdG1hcCAmIGRlbGV0ZSBjbGllbnQgaW4gY2FzZSBvZiByZWluaXRpYWxpc2F0 aW9uICovCi0JYml0bWFwX2NsZWFyKGd1Yy0+ZG9vcmJlbGxfYml0bWFwLCAwLCBHVUNfTUFYX0RP T1JCRUxMUyk7CisJYml0bWFwX2NsZWFyKGd1Yy0+ZG9vcmJlbGxfYml0bWFwLCAwLCBHVUNfTlVN X0RPT1JCRUxMUyk7CiAJaTkxNV9ndWNfc3VibWlzc2lvbl9kaXNhYmxlKGRldl9wcml2KTsKIAog CWlmICghaTkxNS5lbmFibGVfZ3VjX3N1Ym1pc3Npb24pCkBAIC05MzIsMTQgKzk2OCwxOSBAQCBp bnQgaTkxNV9ndWNfc3VibWlzc2lvbl9lbmFibGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2KQogCXN0cnVjdCBpOTE1X2d1Y19jbGllbnQgKmNsaWVudCA9IGd1Yy0+ZXhlY2J1Zl9j bGllbnQ7CiAJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOwogCWVudW0gaW50ZWxfZW5n aW5lX2lkIGlkOworCWludCBlcnI7CiAKIAlpZiAoIWNsaWVudCkKIAkJcmV0dXJuIC1FTk9ERVY7 CiAKLQlpbnRlbF9ndWNfc2FtcGxlX2ZvcmNld2FrZShndWMpOworCWVyciA9IGludGVsX2d1Y19z YW1wbGVfZm9yY2V3YWtlKGd1Yyk7CisJaWYgKGVycikKKwkJcmV0dXJuIGVycjsKIAogCWd1Y19y ZXNldF93cShjbGllbnQpOwotCWd1Y19pbml0X2Rvb3JiZWxsX2h3KGd1Yyk7CisJZXJyID0gZ3Vj X2luaXRfZG9vcmJlbGxfaHcoZ3VjKTsKKwlpZiAoZXJyKQorCQlyZXR1cm4gZXJyOwogCiAJLyog VGFrZSBvdmVyIGZyb20gbWFudWFsIGNvbnRyb2wgb2YgRUxTUCAoZXhlY2xpc3RzKSAqLwogCWZv cl9lYWNoX2VuZ2luZShlbmdpbmUsIGRldl9wcml2LCBpZCkgewpAQCAtOTc4LDcgKzEwMTksNyBA QCB2b2lkIGk5MTVfZ3VjX3N1Ym1pc3Npb25fZmluaShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYpCiAJaWYgKCFjbGllbnQpCiAJCXJldHVybjsKIAotCWd1Y19jbGllbnRfZnJlZShk ZXZfcHJpdiwgY2xpZW50KTsKKwlndWNfY2xpZW50X2ZyZWUoY2xpZW50KTsKIAogCWk5MTVfdm1h X3VucGluX2FuZF9yZWxlYXNlKCZndWMtPmFkc192bWEpOwogCWk5MTVfdm1hX3VucGluX2FuZF9y ZWxlYXNlKCZndWMtPmxvZy52bWEpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZ3VjX2Z3aWYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19md2lmLmgK aW5kZXggMjU2OTFmMC4uM2FlOGNlZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZ3VjX2Z3aWYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfZndp Zi5oCkBAIC0yNDEsOCArMjQxLDggQEAgdW5pb24gZ3VjX2Rvb3JiZWxsX3F3IHsKIAl1NjQgdmFs dWVfcXc7CiB9IF9fcGFja2VkOwogCi0jZGVmaW5lIEdVQ19NQVhfRE9PUkJFTExTCQkyNTYKLSNk ZWZpbmUgR1VDX0lOVkFMSURfRE9PUkJFTExfSUQJCShHVUNfTUFYX0RPT1JCRUxMUykKKyNkZWZp bmUgR1VDX05VTV9ET09SQkVMTFMJMjU2CisjZGVmaW5lIEdVQ19ET09SQkVMTF9JTlZBTElECShH VUNfTlVNX0RPT1JCRUxMUykKIAogI2RlZmluZSBHVUNfREJfU0laRQkJCShQQUdFX1NJWkUpCiAj ZGVmaW5lIEdVQ19XUV9TSVpFCQkJKFBBR0VfU0laRSAqIDIpCmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF91Yy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdWMu aAppbmRleCBkNzRmNGQzLi42MDRlNzFlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF91Yy5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VjLmgKQEAgLTcy LDEzICs3MiwxMiBAQCBzdHJ1Y3QgaTkxNV9ndWNfY2xpZW50IHsKIAogCXVpbnQzMl90IGVuZ2lu ZXM7CQkvKiBiaXRtYXAgb2YgKGhvc3QpIGVuZ2luZSBpZHMJKi8KIAl1aW50MzJfdCBwcmlvcml0 eTsKLQl1aW50MzJfdCBjdHhfaW5kZXg7CisJdTMyIGN0eF9pbmRleDsKIAl1aW50MzJfdCBwcm9j X2Rlc2Nfb2Zmc2V0OwogCi0JdWludDMyX3QgZG9vcmJlbGxfb2Zmc2V0OwotCXVpbnQzMl90IGRv b3JiZWxsX2Nvb2tpZTsKLQl1aW50MTZfdCBkb29yYmVsbF9pZDsKLQl1aW50MTZfdCBwYWRkaW5n WzNdOwkJLyogTWFpbnRhaW4gYWxpZ25tZW50CQkqLworCXUxNiBkb29yYmVsbF9pZDsKKwl1bnNp Z25lZCBsb25nIGRvb3JiZWxsX29mZnNldDsKKwl1MzIgZG9vcmJlbGxfY29va2llOwogCiAJc3Bp bmxvY2tfdCB3cV9sb2NrOwogCXVpbnQzMl90IHdxX29mZnNldDsKQEAgLTE1OSw3ICsxNTgsNyBA QCBzdHJ1Y3QgaW50ZWxfZ3VjIHsKIAogCXN0cnVjdCBpOTE1X2d1Y19jbGllbnQgKmV4ZWNidWZf Y2xpZW50OwogCi0JREVDTEFSRV9CSVRNQVAoZG9vcmJlbGxfYml0bWFwLCBHVUNfTUFYX0RPT1JC RUxMUyk7CisJREVDTEFSRV9CSVRNQVAoZG9vcmJlbGxfYml0bWFwLCBHVUNfTlVNX0RPT1JCRUxM Uyk7CiAJdWludDMyX3QgZGJfY2FjaGVsaW5lOwkJLyogQ3ljbGljIGNvdW50ZXIgbW9kIHBhZ2Vz aXplCSovCiAKIAkvKiBBY3Rpb24gc3RhdHVzICYgc3RhdGlzdGljcyAqLwotLSAKMi43LjQKCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBt YWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3Rz LmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=