From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 26/41] drm/i915: Move GEM activity tracking into a common struct reservation_object Date: Thu, 20 Oct 2016 16:04:08 +0100 Message-ID: <20161020150423.4560-27-chris@chris-wilson.co.uk> References: <20161020150423.4560-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-lf0-x244.google.com (mail-lf0-x244.google.com [IPv6:2a00:1450:4010:c07::244]) by gabe.freedesktop.org (Postfix) with ESMTPS id 74F476EBAE for ; Thu, 20 Oct 2016 15:04:59 +0000 (UTC) Received: by mail-lf0-x244.google.com with SMTP id x79so462750lff.2 for ; Thu, 20 Oct 2016 08:04:59 -0700 (PDT) In-Reply-To: <20161020150423.4560-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 List-Id: intel-gfx@lists.freedesktop.org SW4gcHJlcGFyYXRpb24gdG8gc3VwcG9ydCBtYW55IGRpc3RpbmN0IHRpbWVsaW5lcywgd2UgbmVl ZCB0byBleHBhbmQgdGhlCmFjdGl2aXR5IHRyYWNraW5nIG9uIHRoZSBHRU0gb2JqZWN0IHRvIGhh bmRsZSBtb3JlIHRoYW4ganVzdCBhIHJlcXVlc3QKcGVyIGVuZ2luZS4gV2UgYWxyZWFkeSB1c2Ug dGhlIHN0cnVjdCByZXNlcnZhdGlvbl9vYmplY3Qgb24gdGhlIGRtYS1idWYKdG8gaGFuZGxlIG1h bnkgZmVuY2UgY29udGV4dHMsIHNvIGludGVncmF0aW5nIHRoYXQgaW50byB0aGUgR0VNIG9iamVj dAppdHNlbGYgaXMgdGhlIHByZWZlcnJlZCBzb2x1dGlvbi4gKEZvciBleGFtcGxlLCB3ZSBjYW4g bm93IHNoYXJlIHRoZSBzYW1lCnJlc2VydmF0aW9uX29iamVjdCBiZXR3ZWVuIGV2ZXJ5IGNvbnN1 bWVyL3Byb2R1Y2VyIHVzaW5nIHRoaXMgYnVmZmVyIGFuZApza2lwIHRoZSBtYW51YWwgaW1wb3J0 L2V4cG9ydCB2aWEgZG1hLWJ1Zi4pCgp2MjogUmVpbXBsZW1lbnQgYnVzeS1pb2N0bCAoYnkgd2Fs a2luZyB0aGUgcmVzZXJ2YXRpb24gb2JqZWN0KSwgcG9zdHBvbmUKdGhlIEFCSSBjaGFuZ2UgZm9y IGFub3RoZXIgZGF5LiBTaW1pbGFybHkgdXNlIHRoZSByZXNlcnZhdGlvbiBvYmplY3QgdG8KZmlu ZCB0aGUgbGFzdF93cml0ZSByZXF1ZXN0IChpZiBhY3RpdmUgYW5kIGZyb20gaTkxNSkgZm9yIGNo b29zaW5nCmRpc3BsYXkgQ1MgZmxpcHMuCgpDYXZlYXRzOgoKICogYnVzeS1pb2N0bDogYnVzeS1p b2N0bCBvbmx5IHJlcG9ydHMgb24gdGhlIG5hdGl2ZSBmZW5jZXMsIGl0IHdpbGwgbm90Cndhcm4g b2Ygc3RhbGxzIChpbiBzZXQtZG9tYWluLWlvY3RsLCBwcmVhZC9wd3JpdGUgZXRjKSBpZiB0aGUg b2JqZWN0IGlzCmJlaW5nIHJlbmRlcmVkIHRvIGJ5IGV4dGVybmFsIGZlbmNlcy4gSXQgYWxzbyB3 aWxsIG5vdCByZXBvcnQgdGhlIHNhbWUKYnVzeSBzdGF0ZSBhcyB3YWl0LWlvY3RsIChvciBwb2xs aW5nIG9uIHRoZSBkbWEtYnVmKSBpbiB0aGUgc2FtZQpjaXJjdW1zdGFuY2VzLiBPbiB0aGUgcGx1 cyBzaWRlLCBpdCBkb2VzIHJldGFpbiByZXBvcnRpbmcgb2Ygd2hpY2gKKmk5MTUqIGVuZ2luZXMg YXJlIGVuZ2FnZWQgd2l0aCB0aGlzIG9iamVjdC4KCiAqIG5vbi1ibG9ja2luZyBhdG9taWMgbW9k ZXNldHMgdGFrZSBhIHN0ZXAgYmFja3dhcmRzIGFzIHRoZSB3YWl0IGZvcgpyZW5kZXIgY29tcGxl dGlvbiBibG9ja3MgdGhlIGlvY3RsLiBUaGlzIGlzIGZpeGVkIGluIGEgc3Vic2VxdWVudApwYXRj aCB0byB1c2UgYSBmZW5jZSBpbnN0ZWFkIGZvciBhd2FpdGluZyBvbiB0aGUgcmVuZGVyaW5nLCBz ZWUKImRybS9pOTE1OiBSZXN0b3JlIG5vbmJsb2NraW5nIGF3YWl0cyBmb3IgbW9kZXNldHRpbmci CgogKiBkeW5hbWljIGFycmF5IG1hbmlwdWxhdGlvbiBmb3Igc2hhcmVkLWZlbmNlcyBpbiByZXNl cnZhdGlvbiBpcyBzbG93ZXIKdGhhbiB0aGUgcHJldmlvdXMgbG9ja2xlc3Mgc3RhdGljIGFzc2ln bm1lbnQgKGUuZy4gZ2VtX2V4ZWNfbHV0X2hhbmRsZQpydW50aW1lIG9uIGl2YiBnb2VzIGZyb20g NDJzIHRvIDY2cyksIG1haW5seSBkdWUgdG8gYXRvbWljIG9wZXJhdGlvbnMKKG1haW50YWluaW5n IHRoZSBmZW5jZSByZWZjb3VudHMpLgoKICogbG9zcyBvZiBvYmplY3QtbGV2ZWwgcmV0aXJlbWVu dCBjYWxsYmFja3MsIGVtdWxhdGVkIGJ5IFZNQSByZXRpcmVtZW50CnRyYWNraW5nLgoKICogbWlu b3IgbG9zcyBvZiBvYmplY3QtbGV2ZWwgbGFzdCBhY3Rpdml0eSBpbmZvcm1hdGlvbiBmcm9tIGRl YnVnZnMsCmNvdWxkIGJlIHJlcGxhY2VkIHdpdGggcGVyLXZtYSBpbmZvcm1hdGlvbiBpZiBkZXNp cmVkCgpTaWduZWQtb2ZmLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51 az4KUmV2aWV3ZWQtYnk6IEpvb25hcyBMYWh0aW5lbiA8am9vbmFzLmxhaHRpbmVuQGxpbnV4Lmlu dGVsLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyAgICAgICAg fCAgMTUgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgICAgICAgICB8ICA2 MiArKystLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jICAgICAgICAgICAgfCAy NjYgKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtX2JhdGNoX3Bvb2wuYyB8ICAxMSArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW1fZG1hYnVmLmMgICAgIHwgIDUzICstLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW1fZG1hYnVmLmggICAgIHwgIDQ1IC0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bV9leGVjYnVmZmVyLmMgfCAgNTUgKystLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bV9ndHQuYyAgICAgICAgfCAgMzIgKysrKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1f Z3R0LmggICAgICAgIHwgICAxICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlcXVl c3QuYyAgICB8ICA0OCArKystLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlcXVl c3QuaCAgICB8ICAzNyArLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5j ICAgICAgfCAgIDYgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F0b21pY19wbGFuZS5j ICB8ICAgMiAtCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgICAgICAgfCAx MTQgKysrLS0tLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggICAgICAg ICAgIHwgICAzIC0KIDE1IGZpbGVzIGNoYW5nZWQsIDIxMyBpbnNlcnRpb25zKCspLCA1MzcgZGVs ZXRpb25zKC0pCiBkZWxldGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW1fZG1hYnVmLmgKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVn ZnMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCmluZGV4IDI3ODBiMDdl MDRjMS4uYjY3ZGI1N2JjMTM1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2RlYnVnZnMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwpAQCAt MTM2LDExICsxMzYsMTAgQEAgZGVzY3JpYmVfb2JqKHN0cnVjdCBzZXFfZmlsZSAqbSwgc3RydWN0 IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKIAlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsKIAl1bnNp Z25lZCBpbnQgZnJvbnRidWZmZXJfYml0czsKIAlpbnQgcGluX2NvdW50ID0gMDsKLQllbnVtIGlu dGVsX2VuZ2luZV9pZCBpZDsKIAogCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJm9iai0+YmFzZS5kZXYt PnN0cnVjdF9tdXRleCk7CiAKLQlzZXFfcHJpbnRmKG0sICIlcEs6ICVjJWMlYyVjJWMgJTh6ZEtp QiAlMDJ4ICUwMnggWyAiLAorCXNlcV9wcmludGYobSwgIiVwSzogJWMlYyVjJWMlYyAlOHpkS2lC ICUwMnggJTAyeCAlcyVzJXMiLAogCQkgICAmb2JqLT5iYXNlLAogCQkgICBnZXRfYWN0aXZlX2Zs YWcob2JqKSwKIAkJICAgZ2V0X3Bpbl9mbGFnKG9iaiksCkBAIC0xNDksMTQgKzE0OCw3IEBAIGRl c2NyaWJlX29iaihzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0 ICpvYmopCiAJCSAgIGdldF9waW5fbWFwcGVkX2ZsYWcob2JqKSwKIAkJICAgb2JqLT5iYXNlLnNp emUgLyAxMDI0LAogCQkgICBvYmotPmJhc2UucmVhZF9kb21haW5zLAotCQkgICBvYmotPmJhc2Uu d3JpdGVfZG9tYWluKTsKLQlmb3JfZWFjaF9lbmdpbmUoZW5naW5lLCBkZXZfcHJpdiwgaWQpCi0J CXNlcV9wcmludGYobSwgIiV4ICIsCi0JCQkgICBpOTE1X2dlbV9hY3RpdmVfZ2V0X3NlcW5vKCZv YmotPmxhc3RfcmVhZFtpZF0sCi0JCQkJCQkgICAgICZvYmotPmJhc2UuZGV2LT5zdHJ1Y3RfbXV0 ZXgpKTsKLQlzZXFfcHJpbnRmKG0sICJdICV4ICVzJXMlcyIsCi0JCSAgIGk5MTVfZ2VtX2FjdGl2 ZV9nZXRfc2Vxbm8oJm9iai0+bGFzdF93cml0ZSwKLQkJCQkJICAgICAmb2JqLT5iYXNlLmRldi0+ c3RydWN0X211dGV4KSwKKwkJICAgb2JqLT5iYXNlLndyaXRlX2RvbWFpbiwKIAkJICAgaTkxNV9j YWNoZV9sZXZlbF9zdHIoZGV2X3ByaXYsIG9iai0+Y2FjaGVfbGV2ZWwpLAogCQkgICBvYmotPm1t LmRpcnR5ID8gIiBkaXJ0eSIgOiAiIiwKIAkJICAgb2JqLT5tbS5tYWR2ID09IEk5MTVfTUFEVl9E T05UTkVFRCA/ICIgcHVyZ2VhYmxlIiA6ICIiKTsKQEAgLTE4Nyw4ICsxNzksNyBAQCBkZXNjcmli ZV9vYmooc3RydWN0IHNlcV9maWxlICptLCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2Jq KQogCWlmIChvYmotPnN0b2xlbikKIAkJc2VxX3ByaW50ZihtLCAiIChzdG9sZW46ICUwOGxseCki LCBvYmotPnN0b2xlbi0+c3RhcnQpOwogCi0JZW5naW5lID0gaTkxNV9nZW1fYWN0aXZlX2dldF9l bmdpbmUoJm9iai0+bGFzdF93cml0ZSwKLQkJCQkJICAgICZkZXZfcHJpdi0+ZHJtLnN0cnVjdF9t dXRleCk7CisJZW5naW5lID0gaTkxNV9nZW1fb2JqZWN0X2xhc3Rfd3JpdGVfZW5naW5lKG9iaik7 CiAJaWYgKGVuZ2luZSkKIAkJc2VxX3ByaW50ZihtLCAiICglcykiLCBlbmdpbmUtPm5hbWUpOwog CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kcnYuaAppbmRleCAwNjFiZDM5OTdiM2UuLmY0OGI0ZmUxNDM3MCAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAorKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSA8bGlu dXgvaW50ZWwtaW9tbXUuaD4KICNpbmNsdWRlIDxsaW51eC9rcmVmLmg+CiAjaW5jbHVkZSA8bGlu dXgvcG1fcW9zLmg+CisjaW5jbHVkZSA8bGludXgvcmVzZXJ2YXRpb24uaD4KICNpbmNsdWRlIDxs aW51eC9zaG1lbV9mcy5oPgogCiAjaW5jbHVkZSA8ZHJtL2RybVAuaD4KQEAgLTIyMzMsMjEgKzIy MzQsMTIgQEAgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgewogCXN0cnVjdCBsaXN0X2hlYWQg YmF0Y2hfcG9vbF9saW5rOwogCiAJdW5zaWduZWQgbG9uZyBmbGFnczsKLQkvKioKLQkgKiBUaGlz IGlzIHNldCBpZiB0aGUgb2JqZWN0IGlzIG9uIHRoZSBhY3RpdmUgbGlzdHMgKGhhcyBwZW5kaW5n Ci0JICogcmVuZGVyaW5nIGFuZCBzbyBhIG5vbi16ZXJvIHNlcW5vKSwgYW5kIGlzIG5vdCBzZXQg aWYgaXQgaSBzIG9uCi0JICogaW5hY3RpdmUgKHJlYWR5IHRvIGJlIHVuYm91bmQpIGxpc3QuCi0J ICovCi0jZGVmaW5lIEk5MTVfQk9fQUNUSVZFX1NISUZUIDAKLSNkZWZpbmUgSTkxNV9CT19BQ1RJ VkVfTUFTSyAoKDEgPDwgSTkxNV9OVU1fRU5HSU5FUykgLSAxKQotI2RlZmluZSBfX0k5MTVfQk9f QUNUSVZFKGJvKSBcCi0JKChSRUFEX09OQ0UoKGJvKS0+ZmxhZ3MpID4+IEk5MTVfQk9fQUNUSVZF X1NISUZUKSAmIEk5MTVfQk9fQUNUSVZFX01BU0spCiAKIAkvKioKIAkgKiBIYXZlIHdlIHRha2Vu IGEgcmVmZXJlbmNlIGZvciB0aGUgb2JqZWN0IGZvciBpbmNvbXBsZXRlIEdQVQogCSAqIGFjdGl2 aXR5PwogCSAqLwotI2RlZmluZSBJOTE1X0JPX0FDVElWRV9SRUYgKEk5MTVfQk9fQUNUSVZFX1NI SUZUICsgSTkxNV9OVU1fRU5HSU5FUykKKyNkZWZpbmUgSTkxNV9CT19BQ1RJVkVfUkVGIDAKIAog CS8qCiAJICogSXMgdGhlIG9iamVjdCB0byBiZSBtYXBwZWQgYXMgcmVhZC1vbmx5IHRvIHRoZSBH UFUKQEAgLTIyNjgsNiArMjI2MCw3IEBAIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0IHsKIAog CS8qKiBDb3VudCBvZiBWTUEgYWN0dWFsbHkgYm91bmQgYnkgdGhpcyBvYmplY3QgKi8KIAl1bnNp Z25lZCBpbnQgYmluZF9jb3VudDsKKwl1bnNpZ25lZCBpbnQgYWN0aXZlX2NvdW50OwogCXVuc2ln bmVkIGludCBwaW5fZGlzcGxheTsKIAogCXN0cnVjdCB7CkBAIC0yMzA3LDggKzIzMDAsNyBAQCBz dHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCB7CiAJICogcmVhZCByZXF1ZXN0LiBUaGlzIGFsbG93 cyBmb3IgdGhlIENQVSB0byByZWFkIGZyb20gYW4gYWN0aXZlCiAJICogYnVmZmVyIGJ5IG9ubHkg d2FpdGluZyBmb3IgdGhlIHdyaXRlIHRvIGNvbXBsZXRlLgogCSAqLwotCXN0cnVjdCBpOTE1X2dl bV9hY3RpdmUgbGFzdF9yZWFkW0k5MTVfTlVNX0VOR0lORVNdOwotCXN0cnVjdCBpOTE1X2dlbV9h Y3RpdmUgbGFzdF93cml0ZTsKKwlzdHJ1Y3QgcmVzZXJ2YXRpb25fb2JqZWN0ICpyZXN2OwogCiAJ LyoqIFJlZmVyZW5jZXMgZnJvbSBmcmFtZWJ1ZmZlcnMsIGxvY2tzIG91dCB0aWxpbmcgY2hhbmdl cy4gKi8KIAl1bnNpZ25lZCBsb25nIGZyYW1lYnVmZmVyX3JlZmVyZW5jZXM7CkBAIC0yMzI3LDYg KzIzMTksOCBAQCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCB7CiAKIAkvKiogZm9yIHBoeXMg YWxsb2NhdGVkIG9iamVjdHMgKi8KIAlzdHJ1Y3QgZHJtX2RtYV9oYW5kbGUgKnBoeXNfaGFuZGxl OworCisJc3RydWN0IHJlc2VydmF0aW9uX29iamVjdCBfX2J1aWx0aW5fcmVzdjsKIH07CiAKIHN0 YXRpYyBpbmxpbmUgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKgpAQCAtMjQxMiwzNSArMjQw NiwxMCBAQCBpOTE1X2dlbV9vYmplY3RfaGFzX3N0cnVjdF9wYWdlKGNvbnN0IHN0cnVjdCBkcm1f aTkxNV9nZW1fb2JqZWN0ICpvYmopCiAJcmV0dXJuIG9iai0+b3BzLT5mbGFncyAmIEk5MTVfR0VN X09CSkVDVF9IQVNfU1RSVUNUX1BBR0U7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9u ZwotaTkxNV9nZW1fb2JqZWN0X2dldF9hY3RpdmUoY29uc3Qgc3RydWN0IGRybV9pOTE1X2dlbV9v YmplY3QgKm9iaikKLXsKLQlyZXR1cm4gKG9iai0+ZmxhZ3MgPj4gSTkxNV9CT19BQ1RJVkVfU0hJ RlQpICYgSTkxNV9CT19BQ1RJVkVfTUFTSzsKLX0KLQogc3RhdGljIGlubGluZSBib29sCiBpOTE1 X2dlbV9vYmplY3RfaXNfYWN0aXZlKGNvbnN0IHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpv YmopCiB7Ci0JcmV0dXJuIGk5MTVfZ2VtX29iamVjdF9nZXRfYWN0aXZlKG9iaik7Ci19Ci0KLXN0 YXRpYyBpbmxpbmUgdm9pZAotaTkxNV9nZW1fb2JqZWN0X3NldF9hY3RpdmUoc3RydWN0IGRybV9p OTE1X2dlbV9vYmplY3QgKm9iaiwgaW50IGVuZ2luZSkKLXsKLQlvYmotPmZsYWdzIHw9IEJJVChl bmdpbmUgKyBJOTE1X0JPX0FDVElWRV9TSElGVCk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgdm9pZAot aTkxNV9nZW1fb2JqZWN0X2NsZWFyX2FjdGl2ZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAq b2JqLCBpbnQgZW5naW5lKQotewotCW9iai0+ZmxhZ3MgJj0gfkJJVChlbmdpbmUgKyBJOTE1X0JP X0FDVElWRV9TSElGVCk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgYm9vbAotaTkxNV9nZW1fb2JqZWN0 X2hhc19hY3RpdmVfZW5naW5lKGNvbnN0IHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmos Ci0JCQkJICBpbnQgZW5naW5lKQotewotCXJldHVybiBvYmotPmZsYWdzICYgQklUKGVuZ2luZSAr IEk5MTVfQk9fQUNUSVZFX1NISUZUKTsKKwlyZXR1cm4gb2JqLT5hY3RpdmVfY291bnQ7CiB9CiAK IHN0YXRpYyBpbmxpbmUgYm9vbApAQCAtMjQ4Myw2ICsyNDUyLDIzIEBAIGk5MTVfZ2VtX29iamVj dF9nZXRfc3RyaWRlKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCiAJcmV0dXJuIG9i ai0+dGlsaW5nX2FuZF9zdHJpZGUgJiBTVFJJREVfTUFTSzsKIH0KIAorc3RhdGljIGlubGluZSBz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICoKK2k5MTVfZ2VtX29iamVjdF9sYXN0X3dyaXRlX2VuZ2lu ZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQoreworCXN0cnVjdCBpbnRlbF9lbmdp bmVfY3MgKmVuZ2luZSA9IE5VTEw7CisJc3RydWN0IGZlbmNlICpmZW5jZTsKKworCXJjdV9yZWFk X2xvY2soKTsKKwlmZW5jZSA9IHJlc2VydmF0aW9uX29iamVjdF9nZXRfZXhjbF9yY3Uob2JqLT5y ZXN2KTsKKwlyY3VfcmVhZF91bmxvY2soKTsKKworCWlmIChmZW5jZSAmJiBmZW5jZV9pc19pOTE1 KGZlbmNlKSAmJiAhZmVuY2VfaXNfc2lnbmFsZWQoZmVuY2UpKQorCQllbmdpbmUgPSB0b19yZXF1 ZXN0KGZlbmNlKS0+ZW5naW5lOworCWZlbmNlX3B1dChmZW5jZSk7CisKKwlyZXR1cm4gZW5naW5l OworfQorCiBzdGF0aWMgaW5saW5lIHN0cnVjdCBpOTE1X3ZtYSAqaTkxNV92bWFfZ2V0KHN0cnVj dCBpOTE1X3ZtYSAqdm1hKQogewogCWk5MTVfZ2VtX29iamVjdF9nZXQodm1hLT5vYmopOwpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ2VtLmMKaW5kZXggZGI4YjQ1NzcyZTZmLi5iZTRmZWUyY2IyMDggMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9nZW0uYwpAQCAtMjksNyArMjksNiBAQAogI2luY2x1ZGUgPGRybS9kcm1f dm1hX21hbmFnZXIuaD4KICNpbmNsdWRlIDxkcm0vaTkxNV9kcm0uaD4KICNpbmNsdWRlICJpOTE1 X2Rydi5oIgotI2luY2x1ZGUgImk5MTVfZ2VtX2RtYWJ1Zi5oIgogI2luY2x1ZGUgImk5MTVfdmdw dS5oIgogI2luY2x1ZGUgImk5MTVfdHJhY2UuaCIKICNpbmNsdWRlICJpbnRlbF9kcnYuaCIKQEAg LTQ0NywxMSArNDQ2LDYgQEAgaTkxNV9nZW1fb2JqZWN0X3dhaXQoc3RydWN0IGRybV9pOTE1X2dl bV9vYmplY3QgKm9iaiwKIAkJICAgICBsb25nIHRpbWVvdXQsCiAJCSAgICAgc3RydWN0IGludGVs X3Jwc19jbGllbnQgKnJwcykKIHsKLQlzdHJ1Y3QgcmVzZXJ2YXRpb25fb2JqZWN0ICpyZXN2Owot CXN0cnVjdCBpOTE1X2dlbV9hY3RpdmUgKmFjdGl2ZTsKLQl1bnNpZ25lZCBsb25nIGFjdGl2ZV9t YXNrOwotCWludCBpZHg7Ci0KIAltaWdodF9zbGVlcCgpOwogI2lmIElTX0VOQUJMRUQoQ09ORklH X0xPQ0tERVApCiAJR0VNX0JVR19PTighIWxvY2tkZXBfaXNfaGVsZCgmb2JqLT5iYXNlLmRldi0+ c3RydWN0X211dGV4KSAhPQpAQCAtNDU5LDMzICs0NTMsOSBAQCBpOTE1X2dlbV9vYmplY3Rfd2Fp dChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAogI2VuZGlmCiAJR0VNX0JVR19PTih0 aW1lb3V0IDwgMCk7CiAKLQlpZiAoZmxhZ3MgJiBJOTE1X1dBSVRfQUxMKSB7Ci0JCWFjdGl2ZSA9 IG9iai0+bGFzdF9yZWFkOwotCQlhY3RpdmVfbWFzayA9IGk5MTVfZ2VtX29iamVjdF9nZXRfYWN0 aXZlKG9iaik7Ci0JfSBlbHNlIHsKLQkJYWN0aXZlX21hc2sgPSAxOwotCQlhY3RpdmUgPSAmb2Jq LT5sYXN0X3dyaXRlOwotCX0KLQotCWZvcl9lYWNoX2FjdGl2ZShhY3RpdmVfbWFzaywgaWR4KSB7 Ci0JCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdDsKLQotCQlyZXF1ZXN0ID0g aTkxNV9nZW1fYWN0aXZlX2dldF91bmxvY2tlZCgmYWN0aXZlW2lkeF0pOwotCQlpZiAocmVxdWVz dCkgewotCQkJdGltZW91dCA9IGk5MTVfZ2VtX29iamVjdF93YWl0X2ZlbmNlKCZyZXF1ZXN0LT5m ZW5jZSwKLQkJCQkJCQkgICAgIGZsYWdzLCB0aW1lb3V0LAotCQkJCQkJCSAgICAgcnBzKTsKLQkJ CWk5MTVfZ2VtX3JlcXVlc3RfcHV0KHJlcXVlc3QpOwotCQl9Ci0JCWlmICh0aW1lb3V0IDwgMCkK LQkJCXJldHVybiB0aW1lb3V0OwotCX0KLQotCXJlc3YgPSBpOTE1X2dlbV9vYmplY3RfZ2V0X2Rt YWJ1Zl9yZXN2KG9iaik7Ci0JaWYgKHJlc3YpCi0JCXRpbWVvdXQgPSBpOTE1X2dlbV9vYmplY3Rf d2FpdF9yZXNlcnZhdGlvbihyZXN2LAotCQkJCQkJCSAgIGZsYWdzLCB0aW1lb3V0LAotCQkJCQkJ CSAgIHJwcyk7CisJdGltZW91dCA9IGk5MTVfZ2VtX29iamVjdF93YWl0X3Jlc2VydmF0aW9uKG9i ai0+cmVzdiwKKwkJCQkJCSAgIGZsYWdzLCB0aW1lb3V0LAorCQkJCQkJICAgcnBzKTsKIAlyZXR1 cm4gdGltZW91dCA8IDAgPyB0aW1lb3V0IDogMDsKIH0KIApAQCAtMjU1Miw0NCArMjUyMiw2IEBA IHZvaWQgKmk5MTVfZ2VtX29iamVjdF9waW5fbWFwKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0 ICpvYmosCiAJZ290byBvdXRfdW5sb2NrOwogfQogCi1zdGF0aWMgdm9pZAotaTkxNV9nZW1fb2Jq ZWN0X3JldGlyZV9fd3JpdGUoc3RydWN0IGk5MTVfZ2VtX2FjdGl2ZSAqYWN0aXZlLAotCQkJICAg ICAgc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0KQotewotCXN0cnVjdCBkcm1f aTkxNV9nZW1fb2JqZWN0ICpvYmogPQotCQljb250YWluZXJfb2YoYWN0aXZlLCBzdHJ1Y3QgZHJt X2k5MTVfZ2VtX29iamVjdCwgbGFzdF93cml0ZSk7Ci0KLQlpbnRlbF9mYl9vYmpfZmx1c2gob2Jq LCB0cnVlLCBPUklHSU5fQ1MpOwotfQotCi1zdGF0aWMgdm9pZAotaTkxNV9nZW1fb2JqZWN0X3Jl dGlyZV9fcmVhZChzdHJ1Y3QgaTkxNV9nZW1fYWN0aXZlICphY3RpdmUsCi0JCQkgICAgIHN0cnVj dCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdCkKLXsKLQlpbnQgaWR4ID0gcmVxdWVzdC0+ ZW5naW5lLT5pZDsKLQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqID0KLQkJY29udGFp bmVyX29mKGFjdGl2ZSwgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QsIGxhc3RfcmVhZFtpZHhd KTsKLQotCUdFTV9CVUdfT04oIWk5MTVfZ2VtX29iamVjdF9oYXNfYWN0aXZlX2VuZ2luZShvYmos IGlkeCkpOwotCi0JaTkxNV9nZW1fb2JqZWN0X2NsZWFyX2FjdGl2ZShvYmosIGlkeCk7Ci0JaWYg KGk5MTVfZ2VtX29iamVjdF9pc19hY3RpdmUob2JqKSkKLQkJcmV0dXJuOwotCi0JLyogQnVtcCBv dXIgcGxhY2Ugb24gdGhlIGJvdW5kIGxpc3QgdG8ga2VlcCBpdCByb3VnaGx5IGluIExSVSBvcmRl cgotCSAqIHNvIHRoYXQgd2UgZG9uJ3Qgc3RlYWwgZnJvbSByZWNlbnRseSB1c2VkIGJ1dCBpbmFj dGl2ZSBvYmplY3RzCi0JICogKHVubGVzcyB3ZSBhcmUgZm9yY2VkIHRvIG9mYyEpCi0JICovCi0J aWYgKG9iai0+YmluZF9jb3VudCkKLQkJbGlzdF9tb3ZlX3RhaWwoJm9iai0+Z2xvYmFsX2xpc3Qs Ci0JCQkgICAgICAgJnJlcXVlc3QtPmk5MTUtPm1tLmJvdW5kX2xpc3QpOwotCi0JaWYgKGk5MTVf Z2VtX29iamVjdF9oYXNfYWN0aXZlX3JlZmVyZW5jZShvYmopKSB7Ci0JCWk5MTVfZ2VtX29iamVj dF9jbGVhcl9hY3RpdmVfcmVmZXJlbmNlKG9iaik7Ci0JCWk5MTVfZ2VtX29iamVjdF9wdXQob2Jq KTsKLQl9Ci19Ci0KIHN0YXRpYyBib29sIGk5MTVfY29udGV4dF9pc19iYW5uZWQoY29uc3Qgc3Ry dWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCkKIHsKIAl1bnNpZ25lZCBsb25nIGVsYXBzZWQ7CkBA IC0yOTY5LDYgKzI5MDEsMTMgQEAgaW50IGk5MTVfdm1hX3VuYmluZChzdHJ1Y3QgaTkxNV92bWEg KnZtYSkKIAkJICogSW4gb3JkZXIgdG8gcHJldmVudCBpdCBmcm9tIGJlaW5nIHJlY3Vyc2l2ZWx5 IGNsb3NlZCwKIAkJICogdGFrZSBhIHBpbiBvbiB0aGUgdm1hIHNvIHRoYXQgdGhlIHNlY29uZCB1 bmJpbmQgaXMKIAkJICogYWJvcnRlZC4KKwkJICoKKwkJICogRXZlbiBtb3JlIHNjYXJ5IGlzIHRo YXQgdGhlIHJldGlyZSBjYWxsYmFjayBtYXkgZnJlZQorCQkgKiB0aGUgb2JqZWN0IChsYXN0IGFj dGl2ZSB2bWEpLiBUbyBwcmV2ZW50IHRoZSBleHBsb3Npb24KKwkJICogd2UgZGVmZXIgdGhlIGFj dHVhbCBvYmplY3QgZnJlZSB0byBhIHdvcmtlciB0aGF0IGNhbgorCQkgKiBvbmx5IHByb2NlZWQg b25jZSBpdCBhY3F1aXJlcyB0aGUgc3RydWN0X211dGV4ICh3aGljaAorCQkgKiB3ZSBjdXJyZW50 bHkgaG9sZCwgdGhlcmVmb3JlIGl0IGNhbm5vdCBmcmVlIHRoaXMgb2JqZWN0CisJCSAqIGJlZm9y ZSB3ZSBhcmUgZmluaXNoZWQpLgogCQkgKi8KIAkJX19pOTE1X3ZtYV9waW4odm1hKTsKIApAQCAt NDAxMSw4MyArMzk1MCw0MiBAQCBzdGF0aWMgX19hbHdheXNfaW5saW5lIHVuc2lnbmVkIGludCBf X2J1c3lfd3JpdGVfaWQodW5zaWduZWQgaW50IGlkKQogfQogCiBzdGF0aWMgX19hbHdheXNfaW5s aW5lIHVuc2lnbmVkIGludAotX19idXN5X3NldF9pZl9hY3RpdmUoY29uc3Qgc3RydWN0IGk5MTVf Z2VtX2FjdGl2ZSAqYWN0aXZlLAorX19idXN5X3NldF9pZl9hY3RpdmUoY29uc3Qgc3RydWN0IGZl bmNlICpmZW5jZSwKIAkJICAgICB1bnNpZ25lZCBpbnQgKCpmbGFnKSh1bnNpZ25lZCBpbnQgaWQp KQogewotCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdDsKLQotCXJlcXVlc3Qg PSByY3VfZGVyZWZlcmVuY2UoYWN0aXZlLT5yZXF1ZXN0KTsKLQlpZiAoIXJlcXVlc3QgfHwgaTkx NV9nZW1fcmVxdWVzdF9jb21wbGV0ZWQocmVxdWVzdCkpCi0JCXJldHVybiAwOworCXN0cnVjdCBk cm1faTkxNV9nZW1fcmVxdWVzdCAqcnE7CiAKLQkvKiBUaGlzIGlzIHJhY3kuIFNlZSBfX2k5MTVf Z2VtX2FjdGl2ZV9nZXRfcmN1KCkgZm9yIGFuIGluIGRldGFpbAotCSAqIGRpc2N1c3Npb24gb2Yg aG93IHRvIGhhbmRsZSB0aGUgcmFjZSBjb3JyZWN0bHksIGJ1dCBmb3IgcmVwb3J0aW5nCi0JICog dGhlIGJ1c3kgc3RhdGUgd2UgZXJyIG9uIHRoZSBzaWRlIG9mIHBvdGVudGlhbGx5IHJlcG9ydGlu ZyB0aGUKLQkgKiB3cm9uZyBlbmdpbmUgYXMgYmVpbmcgYnVzeSAoYnV0IHdlIGd1YXJhbnRlZSB0 aGF0IHRoZSByZXN1bHQKLQkgKiBpcyBhdCBsZWFzdCBzZWxmLWNvbnNpc3RlbnQpLgotCSAqCi0J ICogQXMgd2UgdXNlIFNMQUJfREVTVFJPWV9CWV9SQ1UsIHRoZSByZXF1ZXN0IG1heSBiZSByZWFs bG9jYXRlZAotCSAqIHdoaWxzdCB3ZSBhcmUgaW5zcGVjdGluZyBpdCwgZXZlbiB1bmRlciB0aGUg UkNVIHJlYWQgbG9jayBhcyB3ZSBhcmUuCi0JICogVGhpcyBtZWFucyB0aGF0IHRoZXJlIGlzIGEg c21hbGwgd2luZG93IGZvciB0aGUgZW5naW5lIGFuZC9vciB0aGUKLQkgKiBzZXFubyB0byBoYXZl IGJlZW4gb3ZlcndyaXR0ZW4uIFRoZSBzZXFubyB3aWxsIGFsd2F5cyBiZSBpbiB0aGUKLQkgKiBm dXR1cmUgY29tcGFyZWQgdG8gdGhlIGludGVuZGVkLCBhbmQgc28gd2Uga25vdyB0aGF0IGlmIHRo YXQKLQkgKiBzZXFubyBpcyBpZGxlIChvbiB3aGF0ZXZlciBlbmdpbmUpIG91ciByZXF1ZXN0IGlz IGlkbGUgYW5kIHRoZQotCSAqIHJldHVybiAwIGFib3ZlIGlzIGNvcnJlY3QuCi0JICoKLQkgKiBU aGUgaXNzdWUgaXMgdGhhdCBpZiB0aGUgZW5naW5lIGlzIHN3aXRjaGVkLCBpdCBpcyBqdXN0IGFz IGxpa2VseQotCSAqIHRvIHJlcG9ydCB0aGF0IGl0IGlzIGJ1c3kgKGJ1dCBzaW5jZSB0aGUgc3dp dGNoIGhhcHBlbmVkLCB3ZSBrbm93Ci0JICogdGhlIHJlcXVlc3Qgc2hvdWxkIGJlIGlkbGUpLiBT byB0aGVyZSBpcyBhIHNtYWxsIGNoYW5jZSB0aGF0IGEgYnVzeQotCSAqIHJlc3VsdCBpcyBhY3R1 YWxseSB0aGUgd3JvbmcgZW5naW5lLgorCS8qIFdlIGhhdmUgdG8gY2hlY2sgdGhlIGN1cnJlbnQg aHcgc3RhdHVzIG9mIHRoZSBmZW5jZSBhcyB0aGUgdUFCSQorCSAqIGd1YXJhbnRlZXMgZm9yd2Fy ZCBwcm9ncmVzcy4gV2UgY291bGQgcmVseSBvbiB0aGUgaWRsZSB3b3JrZXIKKwkgKiB0byBldmVu dHVhbGx5IGZsdXNoIHVzLCBidXQgdG8gbWluaW1pc2UgbGF0ZW5jeSBqdXN0IGFzayB0aGUKKwkg KiBoYXJkd2FyZS4KIAkgKgotCSAqIFNvIHdoeSBkb24ndCB3ZSBjYXJlPwotCSAqCi0JICogRm9y IHN0YXJ0ZXJzLCB0aGUgYnVzeSBpb2N0bCBpcyBhIGhldXJpc3RpYyB0aGF0IGlzIGJ5IGRlZmlu aXRpb24KLQkgKiByYWN5LiBFdmVuIHdpdGggcGVyZmVjdCBzZXJpYWxpc2F0aW9uIGluIHRoZSBk cml2ZXIsIHRoZSBoYXJkd2FyZQotCSAqIHN0YXRlIGlzIGNvbnN0YW50bHkgYWR2YW5jaW5nIC0g dGhlIHN0YXRlIHdlIHJlcG9ydCB0byB0aGUgdXNlcgotCSAqIGlzIHN0YWxlLgotCSAqCi0JICog VGhlIGNyaXRpY2FsIGluZm9ybWF0aW9uIGZvciB0aGUgYnVzeS1pb2N0bCBpcyB3aGV0aGVyIHRo ZSBvYmplY3QKLQkgKiBpcyBpZGxlIGFzIHVzZXJzcGFjZSByZWxpZXMgb24gdGhhdCB0byBkZXRl Y3Qgd2hldGhlciBpdHMgbmV4dAotCSAqIGFjY2VzcyB3aWxsIHN0YWxsLCBvciBpZiBpdCBoYXMg bWlzc2VkIHN1Ym1pdHRpbmcgY29tbWFuZHMgdG8KLQkgKiB0aGUgaGFyZHdhcmUgYWxsb3dpbmcg dGhlIEdQVSB0byBzdGFsbC4gV2UgbmV2ZXIgZ2VuZXJhdGUgYQotCSAqIGZhbHNlLXBvc2l0aXZl IGZvciBpZGxlbmVzcywgdGh1cyBidXN5LWlvY3RsIGlzIHJlbGlhYmxlIGF0IHRoZQotCSAqIG1v c3QgZnVuZGFtZW50YWwgbGV2ZWwsIGFuZCB3ZSBtYWludGFpbiB0aGUgZ3VhcmFudGVlIHRoYXQg YQotCSAqIGJ1c3kgb2JqZWN0IGxlZnQgdG8gaXRzZWxmIHdpbGwgZXZlbnR1YWxseSBiZWNvbWUg aWRsZSAoYW5kIHN0YXkKLQkgKiBpZGxlISkuCi0JICoKLQkgKiBXZSBhbGxvdyBvdXJzZWx2ZXMg dGhlIGxlZXdheSBvZiBwb3RlbnRpYWxseSBtaXNyZXBvcnRpbmcgdGhlIGJ1c3kKLQkgKiBzdGF0 ZSBiZWNhdXNlIHRoYXQgaXMgYW4gb3B0aW1pc2F0aW9uIGhldXJpc3RpYyB0aGF0IGlzIGNvbnN0 YW50bHkKLQkgKiBpbiBmbHV4LiBCZWluZyBxdWlja2x5IGFibGUgdG8gZGV0ZWN0IHRoZSBidXN5 L2lkbGUgc3RhdGUgaXMgbXVjaAotCSAqIG1vcmUgaW1wb3J0YW50IHRoYW4gYWNjdXJhdGUgbG9n Z2luZyBvZiBleGFjdGx5IHdoaWNoIGVuZ2luZXMgd2VyZQotCSAqIGJ1c3kuCi0JICoKLQkgKiBG b3IgYWNjdXJhY3kgaW4gcmVwb3J0aW5nIHRoZSBlbmdpbmUsIHdlIGNvdWxkIHVzZQotCSAqCi0J ICoJcmVzdWx0ID0gMDsKLQkgKglyZXF1ZXN0ID0gX19pOTE1X2dlbV9hY3RpdmVfZ2V0X3JjdShh Y3RpdmUpOwotCSAqCWlmIChyZXF1ZXN0KSB7Ci0JICoJCWlmICghaTkxNV9nZW1fcmVxdWVzdF9j b21wbGV0ZWQocmVxdWVzdCkpCi0JICoJCQlyZXN1bHQgPSBmbGFnKHJlcXVlc3QtPmVuZ2luZS0+ ZXhlY19pZCk7Ci0JICoJCWk5MTVfZ2VtX3JlcXVlc3RfcHV0KHJlcXVlc3QpOwotCSAqCX0KLQkg KgotCSAqIGJ1dCB0aGF0IHN0aWxsIHJlbWFpbnMgc3VzY2VwdGlibGUgdG8gYm90aCBoYXJkd2Fy ZSBhbmQgdXNlcnNwYWNlCi0JICogcmFjZXMuIFNvIHdlIGFjY2VwdCBtYWtpbmcgdGhlIHJlc3Vs dCBvZiB0aGF0IHJhY2Ugc2xpZ2h0bHkgd29yc2UsCi0JICogZ2l2ZW4gdGhlIHJhcml0eSBvZiB0 aGUgcmFjZSBhbmQgaXRzIGxvdyBpbXBhY3Qgb24gdGhlIHJlc3VsdC4KKwkgKiBOb3RlIHdlIG9u bHkgcmVwb3J0IG9uIHRoZSBzdGF0dXMgb2YgbmF0aXZlIGZlbmNlcy4KIAkgKi8KLQlyZXR1cm4g ZmxhZyhSRUFEX09OQ0UocmVxdWVzdC0+ZW5naW5lLT5leGVjX2lkKSk7CisJaWYgKCFmZW5jZV9p c19pOTE1KGZlbmNlKSkKKwkJcmV0dXJuIDA7CisKKwkvKiBvcGVuY29kZSB0b19yZXF1ZXN0KCkg aW4gb3JkZXIgdG8gYXZvaWQgY29uc3Qgd2FybmluZ3MgKi8KKwlycSA9IGNvbnRhaW5lcl9vZihm ZW5jZSwgc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0LCBmZW5jZSk7CisJaWYgKGk5MTVfZ2Vt X3JlcXVlc3RfY29tcGxldGVkKHJxKSkKKwkJcmV0dXJuIDA7CisKKwlyZXR1cm4gZmxhZyhycS0+ ZW5naW5lLT5leGVjX2lkKTsKIH0KIAogc3RhdGljIF9fYWx3YXlzX2lubGluZSB1bnNpZ25lZCBp bnQKLWJ1c3lfY2hlY2tfcmVhZGVyKGNvbnN0IHN0cnVjdCBpOTE1X2dlbV9hY3RpdmUgKmFjdGl2 ZSkKK2J1c3lfY2hlY2tfcmVhZGVyKGNvbnN0IHN0cnVjdCBmZW5jZSAqZmVuY2UpCiB7Ci0JcmV0 dXJuIF9fYnVzeV9zZXRfaWZfYWN0aXZlKGFjdGl2ZSwgX19idXN5X3JlYWRfZmxhZyk7CisJcmV0 dXJuIF9fYnVzeV9zZXRfaWZfYWN0aXZlKGZlbmNlLCBfX2J1c3lfcmVhZF9mbGFnKTsKIH0KIAog c3RhdGljIF9fYWx3YXlzX2lubGluZSB1bnNpZ25lZCBpbnQKLWJ1c3lfY2hlY2tfd3JpdGVyKGNv bnN0IHN0cnVjdCBpOTE1X2dlbV9hY3RpdmUgKmFjdGl2ZSkKK2J1c3lfY2hlY2tfd3JpdGVyKGNv bnN0IHN0cnVjdCBmZW5jZSAqZmVuY2UpCiB7Ci0JcmV0dXJuIF9fYnVzeV9zZXRfaWZfYWN0aXZl KGFjdGl2ZSwgX19idXN5X3dyaXRlX2lkKTsKKwlpZiAoIWZlbmNlKQorCQlyZXR1cm4gMDsKKwor CXJldHVybiBfX2J1c3lfc2V0X2lmX2FjdGl2ZShmZW5jZSwgX19idXN5X3dyaXRlX2lkKTsKIH0K IAogaW50CkBAIC00MDk2LDYzICszOTk0LDUyIEBAIGk5MTVfZ2VtX2J1c3lfaW9jdGwoc3RydWN0 IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2J1 c3kgKmFyZ3MgPSBkYXRhOwogCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7Ci0JdW5z aWduZWQgbG9uZyBhY3RpdmU7CisJc3RydWN0IHJlc2VydmF0aW9uX29iamVjdF9saXN0ICpsaXN0 OworCXVuc2lnbmVkIGludCBzZXE7CiAJaW50IGVycjsKIAorCWVyciA9IC1FTk9FTlQ7CiAJcmN1 X3JlYWRfbG9jaygpOwogCW9iaiA9IGk5MTVfZ2VtX29iamVjdF9sb29rdXBfcmN1KGZpbGUsIGFy Z3MtPmhhbmRsZSk7Ci0JaWYgKCFvYmopIHsKLQkJZXJyID0gLUVOT0VOVDsKKwlpZiAoIW9iaikK IAkJZ290byBvdXQ7Ci0JfQogCi0JYXJncy0+YnVzeSA9IDA7Ci0JYWN0aXZlID0gX19JOTE1X0JP X0FDVElWRShvYmopOwotCWlmIChhY3RpdmUpIHsKLQkJaW50IGlkeDsKLQotCQkvKiBZZXMsIHRo ZSBsb29rdXBzIGFyZSBpbnRlbnRpb25hbGx5IHJhY3kuCi0JCSAqCi0JCSAqIEZpcnN0LCB3ZSBj YW5ub3Qgc2ltcGx5IHJlbHkgb24gX19JOTE1X0JPX0FDVElWRS4gV2UgaGF2ZQotCQkgKiB0byBy ZWdhcmQgdGhlIHZhbHVlIGFzIHN0YWxlIGFuZCBhcyBvdXIgQUJJIGd1YXJhbnRlZXMKLQkJICog Zm9yd2FyZCBwcm9ncmVzcywgd2UgY29uZmlybSB0aGUgc3RhdHVzIG9mIGVhY2ggYWN0aXZlCi0J CSAqIHJlcXVlc3Qgd2l0aCB0aGUgaGFyZHdhcmUuCi0JCSAqCi0JCSAqIEV2ZW4gdGhvdWdoIHdl IGd1YXJkIHRoZSBwb2ludGVyIGxvb2t1cCBieSBSQ1UsIHRoYXQgb25seQotCQkgKiBndWFyYW50 ZWVzIHRoYXQgdGhlIHBvaW50ZXIgYW5kIGl0cyBjb250ZW50cyByZW1haW4KLQkJICogZGVyZWZl cmVuY2FibGUgYW5kIGRvZXMgKm5vdCogbWVhbiB0aGF0IHRoZSByZXF1ZXN0IHdlCi0JCSAqIGhh dmUgaXMgdGhlIHNhbWUgYXMgdGhlIG9uZSBiZWluZyB0cmFja2VkIGJ5IHRoZSBvYmplY3QuCi0J CSAqCi0JCSAqIENvbnNpZGVyIHRoYXQgd2UgbG9va3VwIHRoZSByZXF1ZXN0IGp1c3QgYXMgaXQg aXMgYmVpbmcKLQkJICogcmV0aXJlZCBhbmQgZnJlZWQuIFdlIHRha2UgYSBsb2NhbCBjb3B5IG9m IHRoZSBwb2ludGVyLAotCQkgKiBidXQgYmVmb3JlIHdlIGFkZCBpdHMgZW5naW5lIGludG8gdGhl IGJ1c3kgc2V0LCB0aGUgb3RoZXIKLQkJICogdGhyZWFkIHJlYWxsb2NhdGVzIGl0IGFuZCBhc3Np Z25zIGl0IHRvIGEgdGFzayBvbiBhbm90aGVyCi0JCSAqIGVuZ2luZSB3aXRoIGEgZnJlc2ggYW5k IGluY29tcGxldGUgc2Vxbm8uIEd1YXJkaW5nIGFnYWluc3QKLQkJICogdGhhdCByZXF1aXJlcyBj YXJlZnVsIHNlcmlhbGlzYXRpb24gYW5kIHJlZmVyZW5jZSBjb3VudGluZywKLQkJICogaS5lLiB1 c2luZyBfX2k5MTVfZ2VtX2FjdGl2ZV9nZXRfcmVxdWVzdF9yY3UoKS4gV2UgZG9uJ3QsCi0JCSAq IGluc3RlYWQgd2UgZXhwZWN0IHRoYXQgaWYgdGhlIHJlc3VsdCBpcyBidXN5LCB3aGljaCBlbmdp bmVzCi0JCSAqIGFyZSBidXN5IGlzIG5vdCBjb21wbGV0ZWx5IHJlbGlhYmxlIC0gd2Ugb25seSBn dWFyYW50ZWUKLQkJICogdGhhdCB0aGUgb2JqZWN0IHdhcyBidXN5LgotCQkgKi8KLQotCQlmb3Jf ZWFjaF9hY3RpdmUoYWN0aXZlLCBpZHgpCi0JCQlhcmdzLT5idXN5IHw9IGJ1c3lfY2hlY2tfcmVh ZGVyKCZvYmotPmxhc3RfcmVhZFtpZHhdKTsKLQotCQkvKiBGb3IgQUJJIHNhbml0eSwgd2Ugb25s eSBjYXJlIHRoYXQgdGhlIHdyaXRlIGVuZ2luZSBpcyBpbgotCQkgKiB0aGUgc2V0IG9mIHJlYWQg ZW5naW5lcy4gVGhpcyBzaG91bGQgYmUgZW5zdXJlZCBieSB0aGUKLQkJICogb3JkZXJpbmcgb2Yg c2V0dGluZyBsYXN0X3JlYWQvbGFzdF93cml0ZSBpbgotCQkgKiBpOTE1X3ZtYV9tb3ZlX3RvX2Fj dGl2ZSgpLCBhbmQgdGhlbiBpbiByZXZlcnNlIGluIHJldGlyZS4KLQkJICogSG93ZXZlciwgZm9y IGdvb2QgbWVhc3VyZSwgd2UgYWx3YXlzIHJlcG9ydCB0aGUgbGFzdF93cml0ZQotCQkgKiByZXF1 ZXN0IGFzIGEgYnVzeSByZWFkIGFzIHdlbGwgYXMgYmVpbmcgYSBidXN5IHdyaXRlLgotCQkgKgot CQkgKiBXZSBkb24ndCBjYXJlIHRoYXQgdGhlIHNldCBvZiBhY3RpdmUgcmVhZC93cml0ZSBlbmdp bmVzCi0JCSAqIG1heSBjaGFuZ2UgZHVyaW5nIGNvbnN0cnVjdGlvbiBvZiB0aGUgcmVzdWx0LCBh cyBpdCBpcwotCQkgKiBlcXVhbGx5IGxpYWJsZSB0byBjaGFuZ2UgYmVmb3JlIHVzZXJzcGFjZSBj YW4gaW5zcGVjdAotCQkgKiB0aGUgcmVzdWx0LgotCQkgKi8KLQkJYXJncy0+YnVzeSB8PSBidXN5 X2NoZWNrX3dyaXRlcigmb2JqLT5sYXN0X3dyaXRlKTsKKwkvKiBBIGRpc2NyZXBhbmN5IGhlcmUg aXMgdGhhdCB3ZSBkbyBub3QgcmVwb3J0IHRoZSBzdGF0dXMgb2YKKwkgKiBub24taTkxNSBmZW5j ZXMsIGkuZS4gZXZlbiB0aG91Z2ggd2UgbWF5IHJlcG9ydCB0aGUgb2JqZWN0IGFzIGlkbGUsCisJ ICogYSBjYWxsIHRvIHNldC1kb21haW4gbWF5IHN0aWxsIHN0YWxsIHdhaXRpbmcgZm9yIGZvcmVp Z24gcmVuZGVyaW5nLgorCSAqIFRoaXMgYWxzbyBtZWFucyB0aGF0IHdhaXQtaW9jdGwgbWF5IHJl cG9ydCBhbiBvYmplY3QgYXMgYnVzeSwKKwkgKiB3aGVyZSBidXN5LWlvY3RsIGNvbnNpZGVycyBp dCBpZGxlLgorCSAqCisJICogV2UgdHJhZGUgdGhlIGFiaWxpdHkgdG8gd2FybiBvZiBmb3JlaWdu IGZlbmNlcyB0byByZXBvcnQgb24gd2hpY2gKKwkgKiBpOTE1IGVuZ2luZXMgYXJlIGFjdGl2ZSBm b3IgdGhlIG9iamVjdC4KKwkgKgorCSAqIEFsdGVybmF0aXZlbHksIHdlIGNhbiB0cmFkZSB0aGF0 IGV4dHJhIGluZm9ybWF0aW9uIG9uIHJlYWQvd3JpdGUKKwkgKiBhY3Rpdml0eSB3aXRoCisJICoJ YXJncy0+YnVzeSA9CisJICoJCSFyZXNlcnZhdGlvbl9vYmplY3RfdGVzdF9zaWduYWxlZF9yY3Uo b2JqLT5yZXN2LCB0cnVlKTsKKwkgKiB0byByZXBvcnQgdGhlIG92ZXJhbGwgYnVzeW5lc3MuIFRo aXMgaXMgd2hhdCB0aGUgd2FpdC1pb2N0bCBkb2VzLgorCSAqCisJICovCityZXRyeToKKwlzZXEg PSByYXdfcmVhZF9zZXFjb3VudCgmb2JqLT5yZXN2LT5zZXEpOworCisJLyogVHJhbnNsYXRlIHRo ZSBleGNsdXNpdmUgZmVuY2UgdG8gdGhlIFJFQUQgKmFuZCogV1JJVEUgZW5naW5lICovCisJYXJn cy0+YnVzeSA9IGJ1c3lfY2hlY2tfd3JpdGVyKHJjdV9kZXJlZmVyZW5jZShvYmotPnJlc3YtPmZl bmNlX2V4Y2wpKTsKKworCS8qIFRyYW5zbGF0ZSBzaGFyZWQgZmVuY2VzIHRvIFJFQUQgc2V0IG9m IGVuZ2luZXMgKi8KKwlsaXN0ID0gcmN1X2RlcmVmZXJlbmNlKG9iai0+cmVzdi0+ZmVuY2UpOwor CWlmIChsaXN0KSB7CisJCXVuc2lnbmVkIGludCBzaGFyZWRfY291bnQgPSBsaXN0LT5zaGFyZWRf Y291bnQsIGk7CisJCWZvciAoaSA9IDA7IGkgPCBzaGFyZWRfY291bnQ7ICsraSkgeworCQkJc3Ry dWN0IGZlbmNlICpmZW5jZSA9IHJjdV9kZXJlZmVyZW5jZShsaXN0LT5zaGFyZWRbaV0pOworCQkJ YXJncy0+YnVzeSB8PSBidXN5X2NoZWNrX3JlYWRlcihmZW5jZSk7CisJCX0KIAl9CiAKKwlpZiAo YXJncy0+YnVzeSAmJiByZWFkX3NlcWNvdW50X3JldHJ5KCZvYmotPnJlc3YtPnNlcSwgc2VxKSkK KwkJZ290byByZXRyeTsKKworCWVyciA9IDA7CiBvdXQ6CiAJcmN1X3JlYWRfdW5sb2NrKCk7CiAJ cmV0dXJuIGVycjsKQEAgLTQyMTcsMjMgKzQxMDQsMTkgQEAgaTkxNV9nZW1fbWFkdmlzZV9pb2N0 bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogdm9pZCBpOTE1X2dlbV9vYmpl Y3RfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAogCQkJICBjb25zdCBzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX29iamVjdF9vcHMgKm9wcykKIHsKLQlpbnQgaTsKLQogCW11dGV4X2lu aXQoJm9iai0+bW0ubG9jayk7CiAKIAlJTklUX0xJU1RfSEVBRCgmb2JqLT5nbG9iYWxfbGlzdCk7 CiAJSU5JVF9MSVNUX0hFQUQoJm9iai0+dXNlcmZhdWx0X2xpbmspOwotCWZvciAoaSA9IDA7IGkg PCBJOTE1X05VTV9FTkdJTkVTOyBpKyspCi0JCWluaXRfcmVxdWVzdF9hY3RpdmUoJm9iai0+bGFz dF9yZWFkW2ldLAotCQkJCSAgICBpOTE1X2dlbV9vYmplY3RfcmV0aXJlX19yZWFkKTsKLQlpbml0 X3JlcXVlc3RfYWN0aXZlKCZvYmotPmxhc3Rfd3JpdGUsCi0JCQkgICAgaTkxNV9nZW1fb2JqZWN0 X3JldGlyZV9fd3JpdGUpOwogCUlOSVRfTElTVF9IRUFEKCZvYmotPm9ial9leGVjX2xpbmspOwog CUlOSVRfTElTVF9IRUFEKCZvYmotPnZtYV9saXN0KTsKIAlJTklUX0xJU1RfSEVBRCgmb2JqLT5i YXRjaF9wb29sX2xpbmspOwogCiAJb2JqLT5vcHMgPSBvcHM7CiAKKwlyZXNlcnZhdGlvbl9vYmpl Y3RfaW5pdCgmb2JqLT5fX2J1aWx0aW5fcmVzdik7CisJb2JqLT5yZXN2ID0gJm9iai0+X19idWls dGluX3Jlc3Y7CisKIAlvYmotPmZyb250YnVmZmVyX2dndHRfb3JpZ2luID0gT1JJR0lOX0dUVDsK IAogCW9iai0+bW0ubWFkdiA9IEk5MTVfTUFEVl9XSUxMTkVFRDsKQEAgLTQzODYsNiArNDI2OSw3 IEBAIHN0YXRpYyB2b2lkIF9faTkxNV9nZW1fZnJlZV9vYmplY3RzKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICppOTE1LAogCQlpZiAob2JqLT5iYXNlLmltcG9ydF9hdHRhY2gpCiAJCQlkcm1fcHJp bWVfZ2VtX2Rlc3Ryb3koJm9iai0+YmFzZSwgTlVMTCk7CiAKKwkJcmVzZXJ2YXRpb25fb2JqZWN0 X2ZpbmkoJm9iai0+X19idWlsdGluX3Jlc3YpOwogCQlkcm1fZ2VtX29iamVjdF9yZWxlYXNlKCZv YmotPmJhc2UpOwogCQlpOTE1X2dlbV9pbmZvX3JlbW92ZV9vYmooaTkxNSwgb2JqLT5iYXNlLnNp emUpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9iYXRjaF9w b29sLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9iYXRjaF9wb29sLmMKaW5kZXgg ZTBmMzhlNWMwZmJiLi5iM2JjMTE5ZWMxYmIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtX2JhdGNoX3Bvb2wuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbV9iYXRjaF9wb29sLmMKQEAgLTExNCwxMSArMTE0LDE4IEBAIGk5MTVfZ2VtX2JhdGNoX3Bv b2xfZ2V0KHN0cnVjdCBpOTE1X2dlbV9iYXRjaF9wb29sICpwb29sLAogCiAJbGlzdF9mb3JfZWFj aF9lbnRyeSh0bXAsIGxpc3QsIGJhdGNoX3Bvb2xfbGluaykgewogCQkvKiBUaGUgYmF0Y2hlcyBh cmUgc3RyaWN0bHkgTFJVIG9yZGVyZWQgKi8KLQkJaWYgKCFpOTE1X2dlbV9hY3RpdmVfaXNfaWRs ZSgmdG1wLT5sYXN0X3JlYWRbcG9vbC0+ZW5naW5lLT5pZF0sCi0JCQkJCSAgICAgJnRtcC0+YmFz ZS5kZXYtPnN0cnVjdF9tdXRleCkpCisJCWlmIChpOTE1X2dlbV9vYmplY3RfaXNfYWN0aXZlKHRt cCkpCiAJCQlicmVhazsKIAorCQlHRU1fQlVHX09OKCFyZXNlcnZhdGlvbl9vYmplY3RfdGVzdF9z aWduYWxlZF9yY3UodG1wLT5yZXN2LAorCQkJCQkJCQkgdHJ1ZSkpOworCiAJCWlmICh0bXAtPmJh c2Uuc2l6ZSA+PSBzaXplKSB7CisJCQkvKiBDbGVhciB0aGUgc2V0IG9mIHNoYXJlZCBmZW5jZXMg ZWFybHkgKi8KKwkJCXd3X211dGV4X2xvY2soJnRtcC0+cmVzdi0+bG9jaywgTlVMTCk7CisJCQly ZXNlcnZhdGlvbl9vYmplY3RfYWRkX2V4Y2xfZmVuY2UodG1wLT5yZXN2LCBOVUxMKTsKKwkJCXd3 X211dGV4X3VubG9jaygmdG1wLT5yZXN2LT5sb2NrKTsKKwogCQkJb2JqID0gdG1wOwogCQkJYnJl YWs7CiAJCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2RtYWJ1 Zi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZG1hYnVmLmMKaW5kZXggNGQ0NWYy MGQxMWVkLi41ZTM4Mjk5YjVkZjYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtX2RtYWJ1Zi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2RtYWJ1 Zi5jCkBAIC0yMTEsNjAgKzIxMSwxNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGRtYV9idWZfb3Bz IGk5MTVfZG1hYnVmX29wcyA9ICB7CiAJLmVuZF9jcHVfYWNjZXNzID0gaTkxNV9nZW1fZW5kX2Nw dV9hY2Nlc3MsCiB9OwogCi1zdGF0aWMgdm9pZCBleHBvcnRfZmVuY2VzKHN0cnVjdCBkcm1faTkx NV9nZW1fb2JqZWN0ICpvYmosCi0JCQkgIHN0cnVjdCBkbWFfYnVmICpkbWFfYnVmKQotewotCXN0 cnVjdCByZXNlcnZhdGlvbl9vYmplY3QgKnJlc3YgPSBkbWFfYnVmLT5yZXN2OwotCXN0cnVjdCBk cm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxOwotCXVuc2lnbmVkIGxvbmcgYWN0aXZlOwotCWludCBp ZHg7Ci0KLQlhY3RpdmUgPSBfX0k5MTVfQk9fQUNUSVZFKG9iaik7Ci0JaWYgKCFhY3RpdmUpCi0J CXJldHVybjsKLQotCS8qIFNlcmlhbGlzZSB3aXRoIGV4ZWNidWYgdG8gcHJldmVudCBjb25jdXJy ZW50IGZlbmNlLWxvb3BzICovCi0JbXV0ZXhfbG9jaygmb2JqLT5iYXNlLmRldi0+c3RydWN0X211 dGV4KTsKLQotCS8qIE1hcmsgdGhlIG9iamVjdCBmb3IgZnV0dXJlIGZlbmNlcyBiZWZvcmUgcmFj aWx5IGFkZGluZyBvbGQgZmVuY2VzICovCi0Jb2JqLT5iYXNlLmRtYV9idWYgPSBkbWFfYnVmOwot Ci0Jd3dfbXV0ZXhfbG9jaygmcmVzdi0+bG9jaywgTlVMTCk7Ci0KLQlmb3JfZWFjaF9hY3RpdmUo YWN0aXZlLCBpZHgpIHsKLQkJcmVxID0gaTkxNV9nZW1fYWN0aXZlX2dldCgmb2JqLT5sYXN0X3Jl YWRbaWR4XSwKLQkJCQkJICAmb2JqLT5iYXNlLmRldi0+c3RydWN0X211dGV4KTsKLQkJaWYgKCFy ZXEpCi0JCQljb250aW51ZTsKLQotCQlpZiAocmVzZXJ2YXRpb25fb2JqZWN0X3Jlc2VydmVfc2hh cmVkKHJlc3YpID09IDApCi0JCQlyZXNlcnZhdGlvbl9vYmplY3RfYWRkX3NoYXJlZF9mZW5jZShy ZXN2LCAmcmVxLT5mZW5jZSk7Ci0KLQkJaTkxNV9nZW1fcmVxdWVzdF9wdXQocmVxKTsKLQl9Ci0K LQlyZXEgPSBpOTE1X2dlbV9hY3RpdmVfZ2V0KCZvYmotPmxhc3Rfd3JpdGUsCi0JCQkJICAmb2Jq LT5iYXNlLmRldi0+c3RydWN0X211dGV4KTsKLQlpZiAocmVxKSB7Ci0JCXJlc2VydmF0aW9uX29i amVjdF9hZGRfZXhjbF9mZW5jZShyZXN2LCAmcmVxLT5mZW5jZSk7Ci0JCWk5MTVfZ2VtX3JlcXVl c3RfcHV0KHJlcSk7Ci0JfQotCi0Jd3dfbXV0ZXhfdW5sb2NrKCZyZXN2LT5sb2NrKTsKLQltdXRl eF91bmxvY2soJm9iai0+YmFzZS5kZXYtPnN0cnVjdF9tdXRleCk7Ci19Ci0KIHN0cnVjdCBkbWFf YnVmICppOTE1X2dlbV9wcmltZV9leHBvcnQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkJCQkg ICAgICBzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKmdlbV9vYmosIGludCBmbGFncykKIHsKIAlzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqID0gdG9faW50ZWxfYm8oZ2VtX29iaik7CiAJREVG SU5FX0RNQV9CVUZfRVhQT1JUX0lORk8oZXhwX2luZm8pOwotCXN0cnVjdCBkbWFfYnVmICpkbWFf YnVmOwogCiAJZXhwX2luZm8ub3BzID0gJmk5MTVfZG1hYnVmX29wczsKIAlleHBfaW5mby5zaXpl ID0gZ2VtX29iai0+c2l6ZTsKIAlleHBfaW5mby5mbGFncyA9IGZsYWdzOwogCWV4cF9pbmZvLnBy aXYgPSBnZW1fb2JqOworCWV4cF9pbmZvLnJlc3YgPSBvYmotPnJlc3Y7CiAKIAlpZiAob2JqLT5v cHMtPmRtYWJ1Zl9leHBvcnQpIHsKIAkJaW50IHJldCA9IG9iai0+b3BzLT5kbWFidWZfZXhwb3J0 KG9iaik7CkBAIC0yNzIsMTIgKzIyOSw3IEBAIHN0cnVjdCBkbWFfYnVmICppOTE1X2dlbV9wcmlt ZV9leHBvcnQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkJCXJldHVybiBFUlJfUFRSKHJldCk7 CiAJfQogCi0JZG1hX2J1ZiA9IGRybV9nZW1fZG1hYnVmX2V4cG9ydChkZXYsICZleHBfaW5mbyk7 Ci0JaWYgKElTX0VSUihkbWFfYnVmKSkKLQkJcmV0dXJuIGRtYV9idWY7Ci0KLQlleHBvcnRfZmVu Y2VzKG9iaiwgZG1hX2J1Zik7Ci0JcmV0dXJuIGRtYV9idWY7CisJcmV0dXJuIGRybV9nZW1fZG1h YnVmX2V4cG9ydChkZXYsICZleHBfaW5mbyk7CiB9CiAKIHN0YXRpYyBzdHJ1Y3Qgc2dfdGFibGUg KgpAQCAtMzM1LDYgKzI4Nyw3IEBAIHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqaTkxNV9nZW1fcHJp bWVfaW1wb3J0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJZHJtX2dlbV9wcml2YXRlX29iamVj dF9pbml0KGRldiwgJm9iai0+YmFzZSwgZG1hX2J1Zi0+c2l6ZSk7CiAJaTkxNV9nZW1fb2JqZWN0 X2luaXQob2JqLCAmaTkxNV9nZW1fb2JqZWN0X2RtYWJ1Zl9vcHMpOwogCW9iai0+YmFzZS5pbXBv cnRfYXR0YWNoID0gYXR0YWNoOworCW9iai0+cmVzdiA9IGRtYV9idWYtPnJlc3Y7CiAKIAkvKiBX ZSB1c2UgR1RUIGFzIHNob3J0aGFuZCBmb3IgYSBjb2hlcmVudCBkb21haW4sIG9uZSB0aGF0IGlz CiAJICogbmVpdGhlciBpbiB0aGUgR1BVIGNhY2hlIG5vciBpbiB0aGUgQ1BVIGNhY2hlLCB3aGVy ZSBhbGwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2RtYWJ1Zi5o IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZG1hYnVmLmgKZGVsZXRlZCBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDkxMzE1NTU3ZTQyMS4uMDAwMDAwMDAwMDAwCi0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtX2RtYWJ1Zi5oCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAs MCBAQAotLyoKLSAqIENvcHlyaWdodCAyMDE2IEludGVsIENvcnBvcmF0aW9uCi0gKgotICogUGVy bWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24g b2J0YWluaW5nIGEKLSAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1 bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCi0gKiB0byBkZWFsIGluIHRoZSBTb2Z0 d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCi0g KiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJp YnV0ZSwgc3VibGljZW5zZSwKLSAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUs IGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQotICogU29mdHdhcmUgaXMgZnVybmlz aGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKLSAqCi0g KiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAo aW5jbHVkaW5nIHRoZSBuZXh0Ci0gKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFs bCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCi0gKiBTb2Z0d2FyZS4KLSAq Ci0gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBP RiBBTlkgS0lORCwgRVhQUkVTUyBPUgotICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElN SVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCi0gKiBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQg U0hBTEwKLSAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1Ig QU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCi0gKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4g QUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORwotICogRlJPTSwg T1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBP VEhFUgotICogREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgotICoKLSAqLwotCi0jaWZuZGVmIF9J OTE1X0dFTV9ETUFCVUZfSF8KLSNkZWZpbmUgX0k5MTVfR0VNX0RNQUJVRl9IXwotCi0jaW5jbHVk ZSA8bGludXgvZG1hLWJ1Zi5oPgotCi1zdGF0aWMgaW5saW5lIHN0cnVjdCByZXNlcnZhdGlvbl9v YmplY3QgKgotaTkxNV9nZW1fb2JqZWN0X2dldF9kbWFidWZfcmVzdihzdHJ1Y3QgZHJtX2k5MTVf Z2VtX29iamVjdCAqb2JqKQotewotCXN0cnVjdCBkbWFfYnVmICpkbWFfYnVmOwotCi0JaWYgKG9i ai0+YmFzZS5kbWFfYnVmKQotCQlkbWFfYnVmID0gb2JqLT5iYXNlLmRtYV9idWY7Ci0JZWxzZSBp ZiAob2JqLT5iYXNlLmltcG9ydF9hdHRhY2gpCi0JCWRtYV9idWYgPSBvYmotPmJhc2UuaW1wb3J0 X2F0dGFjaC0+ZG1hYnVmOwotCWVsc2UKLQkJcmV0dXJuIE5VTEw7Ci0KLQlyZXR1cm4gZG1hX2J1 Zi0+cmVzdjsKLX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV9leGVjYnVmZmVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9leGVj YnVmZmVyLmMKaW5kZXggYWM2MmIwMTdiZjkzLi5hMjQ5NDg2ZDBlM2YgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYworKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbV9leGVjYnVmZmVyLmMKQEAgLTM0LDcgKzM0LDYgQEAKICNpbmNs dWRlIDxkcm0vaTkxNV9kcm0uaD4KIAogI2luY2x1ZGUgImk5MTVfZHJ2LmgiCi0jaW5jbHVkZSAi aTkxNV9nZW1fZG1hYnVmLmgiCiAjaW5jbHVkZSAiaTkxNV90cmFjZS5oIgogI2luY2x1ZGUgImlu dGVsX2Rydi5oIgogI2luY2x1ZGUgImludGVsX2Zyb250YnVmZmVyLmgiCkBAIC0xMTA5LDQ1ICsx MTA4LDIwIEBAIGk5MTVfZ2VtX2V4ZWNidWZmZXJfcmVsb2NhdGVfc2xvdyhzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LAogCXJldHVybiByZXQ7CiB9CiAKLXN0YXRpYyB1bnNpZ25lZCBpbnQgZWJfb3Ro ZXJfZW5naW5lcyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSkKLXsKLQl1bnNpZ25l ZCBpbnQgbWFzazsKLQotCW1hc2sgPSB+aW50ZWxfZW5naW5lX2ZsYWcocmVxLT5lbmdpbmUpICYg STkxNV9CT19BQ1RJVkVfTUFTSzsKLQltYXNrIDw8PSBJOTE1X0JPX0FDVElWRV9TSElGVDsKLQot CXJldHVybiBtYXNrOwotfQotCiBzdGF0aWMgaW50CiBpOTE1X2dlbV9leGVjYnVmZmVyX21vdmVf dG9fZ3B1KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAogCQkJCXN0cnVjdCBsaXN0 X2hlYWQgKnZtYXMpCiB7Ci0JY29uc3QgdW5zaWduZWQgaW50IG90aGVyX3JpbmdzID0gZWJfb3Ro ZXJfZW5naW5lcyhyZXEpOwogCXN0cnVjdCBpOTE1X3ZtYSAqdm1hOwogCWludCByZXQ7CiAKIAls aXN0X2Zvcl9lYWNoX2VudHJ5KHZtYSwgdm1hcywgZXhlY19saXN0KSB7CiAJCXN0cnVjdCBkcm1f aTkxNV9nZW1fb2JqZWN0ICpvYmogPSB2bWEtPm9iajsKLQkJc3RydWN0IHJlc2VydmF0aW9uX29i amVjdCAqcmVzdjsKIAotCQlpZiAob2JqLT5mbGFncyAmIG90aGVyX3JpbmdzKSB7Ci0JCQlyZXQg PSBpOTE1X2dlbV9yZXF1ZXN0X2F3YWl0X29iamVjdAotCQkJCShyZXEsIG9iaiwgb2JqLT5iYXNl LnBlbmRpbmdfd3JpdGVfZG9tYWluKTsKLQkJCWlmIChyZXQpCi0JCQkJcmV0dXJuIHJldDsKLQkJ fQotCi0JCXJlc3YgPSBpOTE1X2dlbV9vYmplY3RfZ2V0X2RtYWJ1Zl9yZXN2KG9iaik7Ci0JCWlm IChyZXN2KSB7Ci0JCQlyZXQgPSBpOTE1X3N3X2ZlbmNlX2F3YWl0X3Jlc2VydmF0aW9uCi0JCQkJ KCZyZXEtPnN1Ym1pdCwgcmVzdiwgJmk5MTVfZmVuY2Vfb3BzLAotCQkJCSBvYmotPmJhc2UucGVu ZGluZ193cml0ZV9kb21haW4sCi0JCQkJIEk5MTVfRkVOQ0VfVElNRU9VVCwKLQkJCQkgR0ZQX0tF Uk5FTCB8IF9fR0ZQX05PV0FSTik7Ci0JCQlpZiAocmV0IDwgMCkKLQkJCQlyZXR1cm4gcmV0Owot CQl9CisJCXJldCA9IGk5MTVfZ2VtX3JlcXVlc3RfYXdhaXRfb2JqZWN0CisJCQkocmVxLCBvYmos IG9iai0+YmFzZS5wZW5kaW5nX3dyaXRlX2RvbWFpbik7CisJCWlmIChyZXQpCisJCQlyZXR1cm4g cmV0OwogCiAJCWlmIChvYmotPmJhc2Uud3JpdGVfZG9tYWluICYgSTkxNV9HRU1fRE9NQUlOX0NQ VSkKIAkJCWk5MTVfZ2VtX2NsZmx1c2hfb2JqZWN0KG9iaiwgZmFsc2UpOwpAQCAtMTI4OSw4ICsx MjYzLDYgQEAgdm9pZCBpOTE1X3ZtYV9tb3ZlX3RvX2FjdGl2ZShzdHJ1Y3QgaTkxNV92bWEgKnZt YSwKIAogCUdFTV9CVUdfT04oIWRybV9tbV9ub2RlX2FsbG9jYXRlZCgmdm1hLT5ub2RlKSk7CiAK LQlvYmotPm1tLmRpcnR5ID0gdHJ1ZTsgLyogYmUgcGFyYW5vaWQgICovCi0KIAkvKiBBZGQgYSBy ZWZlcmVuY2UgaWYgd2UncmUgbmV3bHkgZW50ZXJpbmcgdGhlIGFjdGl2ZSBsaXN0LgogCSAqIFRo ZSBvcmRlciBpbiB3aGljaCB3ZSBhZGQgb3BlcmF0aW9ucyB0byB0aGUgcmV0aXJlbWVudCBxdWV1 ZSBpcwogCSAqIHZpdGFsIGhlcmU6IG1hcmtfYWN0aXZlIGFkZHMgdG8gdGhlIHN0YXJ0IG9mIHRo ZSBjYWxsYmFjayBsaXN0LApAQCAtMTI5OCwxMSArMTI3MCwxNCBAQCB2b2lkIGk5MTVfdm1hX21v dmVfdG9fYWN0aXZlKHN0cnVjdCBpOTE1X3ZtYSAqdm1hLAogCSAqIGFkZCB0aGUgYWN0aXZlIHJl ZmVyZW5jZSBmaXJzdCBhbmQgcXVldWUgZm9yIGl0IHRvIGJlIGRyb3BwZWQKIAkgKiAqbGFzdCou CiAJICovCi0JaTkxNV9nZW1fb2JqZWN0X3NldF9hY3RpdmUob2JqLCBpZHgpOwotCWk5MTVfZ2Vt X2FjdGl2ZV9zZXQoJm9iai0+bGFzdF9yZWFkW2lkeF0sIHJlcSk7CisJaWYgKCFpOTE1X3ZtYV9p c19hY3RpdmUodm1hKSkKKwkJb2JqLT5hY3RpdmVfY291bnQrKzsKKwlpOTE1X3ZtYV9zZXRfYWN0 aXZlKHZtYSwgaWR4KTsKKwlpOTE1X2dlbV9hY3RpdmVfc2V0KCZ2bWEtPmxhc3RfcmVhZFtpZHhd LCByZXEpOworCWxpc3RfbW92ZV90YWlsKCZ2bWEtPnZtX2xpbmssICZ2bWEtPnZtLT5hY3RpdmVf bGlzdCk7CiAKIAlpZiAoZmxhZ3MgJiBFWEVDX09CSkVDVF9XUklURSkgewotCQlpOTE1X2dlbV9h Y3RpdmVfc2V0KCZvYmotPmxhc3Rfd3JpdGUsIHJlcSk7CisJCWk5MTVfZ2VtX2FjdGl2ZV9zZXQo JnZtYS0+bGFzdF93cml0ZSwgcmVxKTsKIAogCQlpbnRlbF9mYl9vYmpfaW52YWxpZGF0ZShvYmos IE9SSUdJTl9DUyk7CiAKQEAgLTEzMTIsMjEgKzEyODcsMTMgQEAgdm9pZCBpOTE1X3ZtYV9tb3Zl X3RvX2FjdGl2ZShzdHJ1Y3QgaTkxNV92bWEgKnZtYSwKIAogCWlmIChmbGFncyAmIEVYRUNfT0JK RUNUX05FRURTX0ZFTkNFKQogCQlpOTE1X2dlbV9hY3RpdmVfc2V0KCZ2bWEtPmxhc3RfZmVuY2Us IHJlcSk7Ci0KLQlpOTE1X3ZtYV9zZXRfYWN0aXZlKHZtYSwgaWR4KTsKLQlpOTE1X2dlbV9hY3Rp dmVfc2V0KCZ2bWEtPmxhc3RfcmVhZFtpZHhdLCByZXEpOwotCWxpc3RfbW92ZV90YWlsKCZ2bWEt PnZtX2xpbmssICZ2bWEtPnZtLT5hY3RpdmVfbGlzdCk7CiB9CiAKIHN0YXRpYyB2b2lkIGViX2V4 cG9ydF9mZW5jZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAogCQkJICAgIHN0cnVj dCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAogCQkJICAgIHVuc2lnbmVkIGludCBmbGFncykK IHsKLQlzdHJ1Y3QgcmVzZXJ2YXRpb25fb2JqZWN0ICpyZXN2OwotCi0JcmVzdiA9IGk5MTVfZ2Vt X29iamVjdF9nZXRfZG1hYnVmX3Jlc3Yob2JqKTsKLQlpZiAoIXJlc3YpCi0JCXJldHVybjsKKwlz dHJ1Y3QgcmVzZXJ2YXRpb25fb2JqZWN0ICpyZXN2ID0gb2JqLT5yZXN2OwogCiAJLyogSWdub3Jl IGVycm9ycyBmcm9tIGZhaWxpbmcgdG8gYWxsb2NhdGUgdGhlIG5ldyBmZW5jZSwgd2UgY2FuJ3QK IAkgKiBoYW5kbGUgYW4gZXJyb3IgcmlnaHQgbm93LiBXb3JzdCBjYXNlIHNob3VsZCBiZSBtaXNz ZWQKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMKaW5kZXggMTAwODIwOWNhNzk3Li4xYjFh NDU5ZTJiNjggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5j CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jCkBAIC0zMSw2ICszMSw3 IEBACiAjaW5jbHVkZSAiaTkxNV92Z3B1LmgiCiAjaW5jbHVkZSAiaTkxNV90cmFjZS5oIgogI2lu Y2x1ZGUgImludGVsX2Rydi5oIgorI2luY2x1ZGUgImludGVsX2Zyb250YnVmZmVyLmgiCiAKICNk ZWZpbmUgSTkxNV9HRlBfRE1BIChHRlBfS0VSTkVMIHwgX19HRlBfSElHSE1FTSkKIApAQCAtMzM0 Myw2ICszMzQ0LDcgQEAgaTkxNV92bWFfcmV0aXJlKHN0cnVjdCBpOTE1X2dlbV9hY3RpdmUgKmFj dGl2ZSwKIAljb25zdCB1bnNpZ25lZCBpbnQgaWR4ID0gcnEtPmVuZ2luZS0+aWQ7CiAJc3RydWN0 IGk5MTVfdm1hICp2bWEgPQogCQljb250YWluZXJfb2YoYWN0aXZlLCBzdHJ1Y3QgaTkxNV92bWEs IGxhc3RfcmVhZFtpZHhdKTsKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqID0gdm1h LT5vYmo7CiAKIAlHRU1fQlVHX09OKCFpOTE1X3ZtYV9oYXNfYWN0aXZlX2VuZ2luZSh2bWEsIGlk eCkpOwogCkBAIC0zMzUzLDYgKzMzNTUsMzQgQEAgaTkxNV92bWFfcmV0aXJlKHN0cnVjdCBpOTE1 X2dlbV9hY3RpdmUgKmFjdGl2ZSwKIAlsaXN0X21vdmVfdGFpbCgmdm1hLT52bV9saW5rLCAmdm1h LT52bS0+aW5hY3RpdmVfbGlzdCk7CiAJaWYgKHVubGlrZWx5KGk5MTVfdm1hX2lzX2Nsb3NlZCh2 bWEpICYmICFpOTE1X3ZtYV9pc19waW5uZWQodm1hKSkpCiAJCVdBUk5fT04oaTkxNV92bWFfdW5i aW5kKHZtYSkpOworCisJR0VNX0JVR19PTighaTkxNV9nZW1fb2JqZWN0X2lzX2FjdGl2ZShvYmop KTsKKwlpZiAoLS1vYmotPmFjdGl2ZV9jb3VudCkKKwkJcmV0dXJuOworCisJLyogQnVtcCBvdXIg cGxhY2Ugb24gdGhlIGJvdW5kIGxpc3QgdG8ga2VlcCBpdCByb3VnaGx5IGluIExSVSBvcmRlcgor CSAqIHNvIHRoYXQgd2UgZG9uJ3Qgc3RlYWwgZnJvbSByZWNlbnRseSB1c2VkIGJ1dCBpbmFjdGl2 ZSBvYmplY3RzCisJICogKHVubGVzcyB3ZSBhcmUgZm9yY2VkIHRvIG9mYyEpCisJICovCisJaWYg KG9iai0+YmluZF9jb3VudCkKKwkJbGlzdF9tb3ZlX3RhaWwoJm9iai0+Z2xvYmFsX2xpc3QsICZy cS0+aTkxNS0+bW0uYm91bmRfbGlzdCk7CisKKwlvYmotPm1tLmRpcnR5ID0gdHJ1ZTsgLyogYmUg cGFyYW5vaWQgICovCisKKwlpZiAoaTkxNV9nZW1fb2JqZWN0X2hhc19hY3RpdmVfcmVmZXJlbmNl KG9iaikpIHsKKwkJaTkxNV9nZW1fb2JqZWN0X2NsZWFyX2FjdGl2ZV9yZWZlcmVuY2Uob2JqKTsK KwkJaTkxNV9nZW1fb2JqZWN0X3B1dChvYmopOworCX0KK30KKworc3RhdGljIHZvaWQKK2k5MTVf Z2d0dF9yZXRpcmVfX3dyaXRlKHN0cnVjdCBpOTE1X2dlbV9hY3RpdmUgKmFjdGl2ZSwKKwkJCXN0 cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdCkKK3sKKwlzdHJ1Y3QgaTkxNV92bWEg KnZtYSA9CisJCWNvbnRhaW5lcl9vZihhY3RpdmUsIHN0cnVjdCBpOTE1X3ZtYSwgbGFzdF93cml0 ZSk7CisKKwlpbnRlbF9mYl9vYmpfZmx1c2godm1hLT5vYmosIHRydWUsIE9SSUdJTl9DUyk7CiB9 CiAKIHZvaWQgaTkxNV92bWFfZGVzdHJveShzdHJ1Y3QgaTkxNV92bWEgKnZtYSkKQEAgLTMzOTYs NiArMzQyNiw4IEBAIF9faTkxNV92bWFfY3JlYXRlKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0 ICpvYmosCiAJSU5JVF9MSVNUX0hFQUQoJnZtYS0+ZXhlY19saXN0KTsKIAlmb3IgKGkgPSAwOyBp IDwgQVJSQVlfU0laRSh2bWEtPmxhc3RfcmVhZCk7IGkrKykKIAkJaW5pdF9yZXF1ZXN0X2FjdGl2 ZSgmdm1hLT5sYXN0X3JlYWRbaV0sIGk5MTVfdm1hX3JldGlyZSk7CisJaW5pdF9yZXF1ZXN0X2Fj dGl2ZSgmdm1hLT5sYXN0X3dyaXRlLAorCQkJICAgIGk5MTVfaXNfZ2d0dCh2bSkgPyBpOTE1X2dn dHRfcmV0aXJlX193cml0ZSA6IE5VTEwpOwogCWluaXRfcmVxdWVzdF9hY3RpdmUoJnZtYS0+bGFz dF9mZW5jZSwgTlVMTCk7CiAJbGlzdF9hZGQoJnZtYS0+dm1fbGluaywgJnZtLT51bmJvdW5kX2xp c3QpOwogCXZtYS0+dm0gPSB2bTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtX2d0dC5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmgKaW5kZXgg ZGJlNmE2Y2VjMjBkLi45ZjAzMjdlNTE3NmEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtX2d0dC5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0 dC5oCkBAIC0yMTEsNiArMjExLDcgQEAgc3RydWN0IGk5MTVfdm1hIHsKIAogCXVuc2lnbmVkIGlu dCBhY3RpdmU7CiAJc3RydWN0IGk5MTVfZ2VtX2FjdGl2ZSBsYXN0X3JlYWRbSTkxNV9OVU1fRU5H SU5FU107CisJc3RydWN0IGk5MTVfZ2VtX2FjdGl2ZSBsYXN0X3dyaXRlOwogCXN0cnVjdCBpOTE1 X2dlbV9hY3RpdmUgbGFzdF9mZW5jZTsKIAogCS8qKgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9nZW1fcmVxdWVzdC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW1fcmVxdWVzdC5jCmluZGV4IGY1OTBlOTJjZTg1NS4uYTc5MDU0NWJkZTczIDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZXF1ZXN0LmMKKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW1fcmVxdWVzdC5jCkBAIC0xOTYsNiArMTk2LDggQEAgc3RhdGlj IHZvaWQgaTkxNV9nZW1fcmVxdWVzdF9yZXRpcmUoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0 ICpyZXF1ZXN0KQogCX0KIAogCWk5MTVfZ2VtX2NvbnRleHRfcHV0KHJlcXVlc3QtPmN0eCk7CisK KwlmZW5jZV9zaWduYWwoJnJlcXVlc3QtPmZlbmNlKTsKIAlpOTE1X2dlbV9yZXF1ZXN0X3B1dChy ZXF1ZXN0KTsKIH0KIApAQCAtNTUzLDMzICs1NTUsNDEgQEAgaTkxNV9nZW1fcmVxdWVzdF9hd2Fp dF9vYmplY3Qoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICp0bywKIAkJCSAgICAgIHN0cnVj dCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCiAJCQkgICAgICBib29sIHdyaXRlKQogewotCXN0 cnVjdCBpOTE1X2dlbV9hY3RpdmUgKmFjdGl2ZTsKLQl1bnNpZ25lZCBsb25nIGFjdGl2ZV9tYXNr OwotCWludCBpZHg7CisJc3RydWN0IGZlbmNlICpleGNsOworCWludCByZXQgPSAwOwogCiAJaWYg KHdyaXRlKSB7Ci0JCWFjdGl2ZV9tYXNrID0gaTkxNV9nZW1fb2JqZWN0X2dldF9hY3RpdmUob2Jq KTsKLQkJYWN0aXZlID0gb2JqLT5sYXN0X3JlYWQ7CisJCXN0cnVjdCBmZW5jZSAqKnNoYXJlZDsK KwkJdW5zaWduZWQgaW50IGNvdW50LCBpOworCisJCXJldCA9IHJlc2VydmF0aW9uX29iamVjdF9n ZXRfZmVuY2VzX3JjdShvYmotPnJlc3YsCisJCQkJCQkJJmV4Y2wsICZjb3VudCwgJnNoYXJlZCk7 CisJCWlmIChyZXQpCisJCQlyZXR1cm4gcmV0OworCisJCWZvciAoaSA9IDA7IGkgPCBjb3VudDsg aSsrKSB7CisJCQlyZXQgPSBpOTE1X2dlbV9yZXF1ZXN0X2F3YWl0X2ZlbmNlKHRvLCBzaGFyZWRb aV0pOworCQkJaWYgKHJldCkKKwkJCQlicmVhazsKKworCQkJZmVuY2VfcHV0KHNoYXJlZFtpXSk7 CisJCX0KKworCQlmb3IgKDsgaSA8IGNvdW50OyBpKyspCisJCQlmZW5jZV9wdXQoc2hhcmVkW2ld KTsKKwkJa2ZyZWUoc2hhcmVkKTsKIAl9IGVsc2UgewotCQlhY3RpdmVfbWFzayA9IDE7Ci0JCWFj dGl2ZSA9ICZvYmotPmxhc3Rfd3JpdGU7CisJCWV4Y2wgPSByZXNlcnZhdGlvbl9vYmplY3RfZ2V0 X2V4Y2xfcmN1KG9iai0+cmVzdik7CiAJfQogCi0JZm9yX2VhY2hfYWN0aXZlKGFjdGl2ZV9tYXNr LCBpZHgpIHsKLQkJc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0OwotCQlpbnQg cmV0OwotCi0JCXJlcXVlc3QgPSBpOTE1X2dlbV9hY3RpdmVfcGVlaygmYWN0aXZlW2lkeF0sCi0J CQkJCSAgICAgICAmb2JqLT5iYXNlLmRldi0+c3RydWN0X211dGV4KTsKLQkJaWYgKCFyZXF1ZXN0 KQotCQkJY29udGludWU7CisJaWYgKGV4Y2wpIHsKKwkJaWYgKHJldCA9PSAwKQorCQkJcmV0ID0g aTkxNV9nZW1fcmVxdWVzdF9hd2FpdF9mZW5jZSh0bywgZXhjbCk7CiAKLQkJcmV0ID0gaTkxNV9n ZW1fcmVxdWVzdF9hd2FpdF9yZXF1ZXN0KHRvLCByZXF1ZXN0KTsKLQkJaWYgKHJldCkKLQkJCXJl dHVybiByZXQ7CisJCWZlbmNlX3B1dChleGNsKTsKIAl9CiAKLQlyZXR1cm4gMDsKKwlyZXR1cm4g cmV0OwogfQogCiBzdGF0aWMgdm9pZCBpOTE1X2dlbV9tYXJrX2J1c3koY29uc3Qgc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqZW5naW5lKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW1fcmVxdWVzdC5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fcmVxdWVz dC5oCmluZGV4IDQ1OTk4ZWVkZGEyYy4uYjhmZWZmNTg1N2EwIDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZXF1ZXN0LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW1fcmVxdWVzdC5oCkBAIC0xNDcsNyArMTQ3LDcgQEAgc3RydWN0IGRybV9pOTE1 X2dlbV9yZXF1ZXN0IHsKIAogZXh0ZXJuIGNvbnN0IHN0cnVjdCBmZW5jZV9vcHMgaTkxNV9mZW5j ZV9vcHM7CiAKLXN0YXRpYyBpbmxpbmUgYm9vbCBmZW5jZV9pc19pOTE1KHN0cnVjdCBmZW5jZSAq ZmVuY2UpCitzdGF0aWMgaW5saW5lIGJvb2wgZmVuY2VfaXNfaTkxNShjb25zdCBzdHJ1Y3QgZmVu Y2UgKmZlbmNlKQogewogCXJldHVybiBmZW5jZS0+b3BzID09ICZpOTE1X2ZlbmNlX29wczsKIH0K QEAgLTU1NCwyMiArNTU0LDcgQEAgaTkxNV9nZW1fYWN0aXZlX2lzc2V0KGNvbnN0IHN0cnVjdCBp OTE1X2dlbV9hY3RpdmUgKmFjdGl2ZSkKIH0KIAogLyoqCi0gKiBpOTE1X2dlbV9hY3RpdmVfaXNf aWRsZSAtIHJlcG9ydCB3aGV0aGVyIHRoZSBhY3RpdmUgdHJhY2tlciBpcyBpZGxlCi0gKiBAYWN0 aXZlIC0gdGhlIGFjdGl2ZSB0cmFja2VyCi0gKgotICogaTkxNV9nZW1fYWN0aXZlX2lzX2lkbGUo KSByZXR1cm5zIHRydWUgaWYgdGhlIGFjdGl2ZSB0cmFja2VyIGlzIGN1cnJlbnRseQotICogdW5h c3NpZ25lZCBvciBpZiB0aGUgcmVxdWVzdCBpcyBjb21wbGV0ZSAoYnV0IG5vdCB5ZXQgcmV0aXJl ZCkuIFJlcXVpcmVzCi0gKiB0aGUgY2FsbGVyIHRvIGhvbGQgc3RydWN0X211dGV4IChidXQgdGhh dCBjYW4gYmUgcmVsYXhlZCBpZiBkZXNpcmVkKS4KLSAqLwotc3RhdGljIGlubGluZSBib29sCi1p OTE1X2dlbV9hY3RpdmVfaXNfaWRsZShjb25zdCBzdHJ1Y3QgaTkxNV9nZW1fYWN0aXZlICphY3Rp dmUsCi0JCQlzdHJ1Y3QgbXV0ZXggKm11dGV4KQotewotCXJldHVybiAhaTkxNV9nZW1fYWN0aXZl X3BlZWsoYWN0aXZlLCBtdXRleCk7Ci19Ci0KLS8qKgotICogaTkxNV9nZW1fYWN0aXZlX3dhaXQt IHdhaXRzIHVudGlsIHRoZSByZXF1ZXN0IGlzIGNvbXBsZXRlZAorICogaTkxNV9nZW1fYWN0aXZl X3dhaXQgLSB3YWl0cyB1bnRpbCB0aGUgcmVxdWVzdCBpcyBjb21wbGV0ZWQKICAqIEBhY3RpdmUg LSB0aGUgYWN0aXZlIHJlcXVlc3Qgb24gd2hpY2ggdG8gd2FpdAogICogQGZsYWdzIC0gaG93IHRv IHdhaXQKICAqIEB0aW1lb3V0IC0gaG93IGxvbmcgdG8gd2FpdCBhdCBtb3N0CkBAIC02MzksMjQg KzYyNCw2IEBAIGk5MTVfZ2VtX2FjdGl2ZV9yZXRpcmUoc3RydWN0IGk5MTVfZ2VtX2FjdGl2ZSAq YWN0aXZlLAogCXJldHVybiAwOwogfQogCi0vKiBDb252ZW5pZW5jZSBmdW5jdGlvbnMgZm9yIHBl ZWtpbmcgYXQgc3RhdGUgaW5zaWRlIGFjdGl2ZSdzIHJlcXVlc3Qgd2hpbHN0Ci0gKiBndWFyZGVk IGJ5IHRoZSBzdHJ1Y3RfbXV0ZXguCi0gKi8KLQotc3RhdGljIGlubGluZSB1aW50MzJfdAotaTkx NV9nZW1fYWN0aXZlX2dldF9zZXFubyhjb25zdCBzdHJ1Y3QgaTkxNV9nZW1fYWN0aXZlICphY3Rp dmUsCi0JCQkgIHN0cnVjdCBtdXRleCAqbXV0ZXgpCi17Ci0JcmV0dXJuIGk5MTVfZ2VtX3JlcXVl c3RfZ2V0X3NlcW5vKGk5MTVfZ2VtX2FjdGl2ZV9wZWVrKGFjdGl2ZSwgbXV0ZXgpKTsKLX0KLQot c3RhdGljIGlubGluZSBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICoKLWk5MTVfZ2VtX2FjdGl2ZV9n ZXRfZW5naW5lKGNvbnN0IHN0cnVjdCBpOTE1X2dlbV9hY3RpdmUgKmFjdGl2ZSwKLQkJCSAgIHN0 cnVjdCBtdXRleCAqbXV0ZXgpCi17Ci0JcmV0dXJuIGk5MTVfZ2VtX3JlcXVlc3RfZ2V0X2VuZ2lu ZShpOTE1X2dlbV9hY3RpdmVfcGVlayhhY3RpdmUsIG11dGV4KSk7Ci19Ci0KICNkZWZpbmUgZm9y X2VhY2hfYWN0aXZlKG1hc2ssIGlkeCkgXAogCWZvciAoOyBtYXNrID8gaWR4ID0gZmZzKG1hc2sp IC0gMSwgMSA6IDA7IG1hc2sgJj0gfkJJVChpZHgpKQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n cHVfZXJyb3IuYwppbmRleCAzMjJjNWE4NmFiZjguLjk2ZWY2YzEzZDdkZCAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3IuYworKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dwdV9lcnJvci5jCkBAIC04ODAsOSArODgwLDkgQEAgc3RhdGljIHZvaWQg Y2FwdHVyZV9ibyhzdHJ1Y3QgZHJtX2k5MTVfZXJyb3JfYnVmZmVyICplcnIsCiAJZXJyLT5uYW1l ID0gb2JqLT5iYXNlLm5hbWU7CiAKIAlmb3IgKGkgPSAwOyBpIDwgSTkxNV9OVU1fRU5HSU5FUzsg aSsrKQotCQllcnItPnJzZXFub1tpXSA9IF9fYWN0aXZlX2dldF9zZXFubygmb2JqLT5sYXN0X3Jl YWRbaV0pOwotCWVyci0+d3NlcW5vID0gX19hY3RpdmVfZ2V0X3NlcW5vKCZvYmotPmxhc3Rfd3Jp dGUpOwotCWVyci0+ZW5naW5lID0gX19hY3RpdmVfZ2V0X2VuZ2luZV9pZCgmb2JqLT5sYXN0X3dy aXRlKTsKKwkJZXJyLT5yc2Vxbm9baV0gPSBfX2FjdGl2ZV9nZXRfc2Vxbm8oJnZtYS0+bGFzdF9y ZWFkW2ldKTsKKwllcnItPndzZXFubyA9IF9fYWN0aXZlX2dldF9zZXFubygmdm1hLT5sYXN0X3dy aXRlKTsKKwllcnItPmVuZ2luZSA9IF9fYWN0aXZlX2dldF9lbmdpbmVfaWQoJnZtYS0+bGFzdF93 cml0ZSk7CiAKIAllcnItPmd0dF9vZmZzZXQgPSB2bWEtPm5vZGUuc3RhcnQ7CiAJZXJyLT5yZWFk X2RvbWFpbnMgPSBvYmotPmJhc2UucmVhZF9kb21haW5zOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfYXRvbWljX3BsYW5lLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9hdG9taWNfcGxhbmUuYwppbmRleCBiODJkZTMwNzJkNGYuLmE4OTI3OTI5Yzc0MCAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXRvbWljX3BsYW5lLmMKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXRvbWljX3BsYW5lLmMKQEAgLTg0LDcgKzg0LDYg QEAgaW50ZWxfcGxhbmVfZHVwbGljYXRlX3N0YXRlKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lKQog CXN0YXRlID0gJmludGVsX3N0YXRlLT5iYXNlOwogCiAJX19kcm1fYXRvbWljX2hlbHBlcl9wbGFu ZV9kdXBsaWNhdGVfc3RhdGUocGxhbmUsIHN0YXRlKTsKLQlpbnRlbF9zdGF0ZS0+d2FpdF9yZXEg PSBOVUxMOwogCiAJcmV0dXJuIHN0YXRlOwogfQpAQCAtMTAxLDcgKzEwMCw2IEBAIHZvaWQKIGlu dGVsX3BsYW5lX2Rlc3Ryb3lfc3RhdGUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCiAJCQkgIHN0 cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnN0YXRlKQogewotCVdBUk5fT04oc3RhdGUgJiYgdG9faW50 ZWxfcGxhbmVfc3RhdGUoc3RhdGUpLT53YWl0X3JlcSk7CiAJZHJtX2F0b21pY19oZWxwZXJfcGxh bmVfZGVzdHJveV9zdGF0ZShwbGFuZSwgc3RhdGUpOwogfQogCmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kaXNwbGF5LmMKaW5kZXggOWU1MTA1YjI4YTFjLi4xMzUyMjkwM2VjNGUgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYworKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKQEAgLTM3LDcgKzM3LDYgQEAKICNpbmNsdWRlICJpbnRl bF9mcm9udGJ1ZmZlci5oIgogI2luY2x1ZGUgPGRybS9pOTE1X2RybS5oPgogI2luY2x1ZGUgImk5 MTVfZHJ2LmgiCi0jaW5jbHVkZSAiaTkxNV9nZW1fZG1hYnVmLmgiCiAjaW5jbHVkZSAiaW50ZWxf ZHNpLmgiCiAjaW5jbHVkZSAiaTkxNV90cmFjZS5oIgogI2luY2x1ZGUgPGRybS9kcm1fYXRvbWlj Lmg+CkBAIC0xMTk2Niw4ICsxMTk2NSw2IEBAIHN0YXRpYyBpbnQgaW50ZWxfZ2VuN19xdWV1ZV9m bGlwKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiBzdGF0aWMgYm9vbCB1c2VfbW1pb19mbGlwKHN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKIAkJCSAgc3RydWN0IGRybV9pOTE1X2dlbV9v YmplY3QgKm9iaikKIHsKLQlzdHJ1Y3QgcmVzZXJ2YXRpb25fb2JqZWN0ICpyZXN2OwotCiAJLyoK IAkgKiBUaGlzIGlzIG5vdCBiZWluZyB1c2VkIGZvciBvbGRlciBwbGF0Zm9ybXMsIGJlY2F1c2UK IAkgKiBub24tYXZhaWxhYmlsaXR5IG9mIGZsaXAgZG9uZSBpbnRlcnJ1cHQgZm9yY2VzIHVzIHRv IHVzZQpAQCAtMTE5ODksMTIgKzExOTg2LDcgQEAgc3RhdGljIGJvb2wgdXNlX21taW9fZmxpcChz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCiAJZWxzZSBpZiAoaTkxNS5lbmFibGVfZXhl Y2xpc3RzKQogCQlyZXR1cm4gdHJ1ZTsKIAotCXJlc3YgPSBpOTE1X2dlbV9vYmplY3RfZ2V0X2Rt YWJ1Zl9yZXN2KG9iaik7Ci0JaWYgKHJlc3YgJiYgIXJlc2VydmF0aW9uX29iamVjdF90ZXN0X3Np Z25hbGVkX3JjdShyZXN2LCBmYWxzZSkpCi0JCXJldHVybiB0cnVlOwotCi0JcmV0dXJuIGVuZ2lu ZSAhPSBpOTE1X2dlbV9hY3RpdmVfZ2V0X2VuZ2luZSgmb2JqLT5sYXN0X3dyaXRlLAotCQkJCQkJ ICAgICZvYmotPmJhc2UuZGV2LT5zdHJ1Y3RfbXV0ZXgpOworCXJldHVybiBlbmdpbmUgIT0gaTkx NV9nZW1fb2JqZWN0X2xhc3Rfd3JpdGVfZW5naW5lKG9iaik7CiB9CiAKIHN0YXRpYyB2b2lkIHNr bF9kb19tbWlvX2ZsaXAoc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMsCkBAIC0xMjA2Nywx NyArMTIwNTksOCBAQCBzdGF0aWMgdm9pZCBpbnRlbF9tbWlvX2ZsaXBfd29ya19mdW5jKHN0cnVj dCB3b3JrX3N0cnVjdCAqdykKIAlzdHJ1Y3QgaW50ZWxfZnJhbWVidWZmZXIgKmludGVsX2ZiID0K IAkJdG9faW50ZWxfZnJhbWVidWZmZXIoY3J0Yy0+YmFzZS5wcmltYXJ5LT5mYik7CiAJc3RydWN0 IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiA9IGludGVsX2ZiLT5vYmo7Ci0Jc3RydWN0IHJlc2Vy dmF0aW9uX29iamVjdCAqcmVzdjsKIAotCWlmICh3b3JrLT5mbGlwX3F1ZXVlZF9yZXEpCi0JCVdB Uk5fT04oaTkxNV93YWl0X3JlcXVlc3Qod29yay0+ZmxpcF9xdWV1ZWRfcmVxLAotCQkJCQkgIDAs IE1BWF9TQ0hFRFVMRV9USU1FT1VUKSA8IDApOwotCi0JLyogRm9yIGZyYW1lYnVmZmVyIGJhY2tl ZCBieSBkbWFidWYsIHdhaXQgZm9yIGZlbmNlICovCi0JcmVzdiA9IGk5MTVfZ2VtX29iamVjdF9n ZXRfZG1hYnVmX3Jlc3Yob2JqKTsKLQlpZiAocmVzdikKLQkJV0FSTl9PTihyZXNlcnZhdGlvbl9v YmplY3Rfd2FpdF90aW1lb3V0X3JjdShyZXN2LCBmYWxzZSwgZmFsc2UsCi0JCQkJCQkJICAgIE1B WF9TQ0hFRFVMRV9USU1FT1VUKSA8IDApOworCVdBUk5fT04oaTkxNV9nZW1fb2JqZWN0X3dhaXQo b2JqLCAwLCBNQVhfU0NIRURVTEVfVElNRU9VVCwgTlVMTCkgPCAwKTsKIAogCWludGVsX3BpcGVf dXBkYXRlX3N0YXJ0KGNydGMpOwogCkBAIC0xMjI3OCw4ICsxMjI2MSw3IEBAIHN0YXRpYyBpbnQg aW50ZWxfY3J0Y19wYWdlX2ZsaXAoc3RydWN0IGRybV9jcnRjICpjcnRjLAogCX0gZWxzZSBpZiAo SVNfSVZZQlJJREdFKGRldl9wcml2KSB8fCBJU19IQVNXRUxMKGRldl9wcml2KSkgewogCQllbmdp bmUgPSBkZXZfcHJpdi0+ZW5naW5lW0JDU107CiAJfSBlbHNlIGlmIChJTlRFTF9JTkZPKGRldikt PmdlbiA+PSA3KSB7Ci0JCWVuZ2luZSA9IGk5MTVfZ2VtX2FjdGl2ZV9nZXRfZW5naW5lKCZvYmot Pmxhc3Rfd3JpdGUsCi0JCQkJCQkgICAgJm9iai0+YmFzZS5kZXYtPnN0cnVjdF9tdXRleCk7CisJ CWVuZ2luZSA9IGk5MTVfZ2VtX29iamVjdF9sYXN0X3dyaXRlX2VuZ2luZShvYmopOwogCQlpZiAo ZW5naW5lID09IE5VTEwgfHwgZW5naW5lLT5pZCAhPSBSQ1MpCiAJCQllbmdpbmUgPSBkZXZfcHJp di0+ZW5naW5lW0JDU107CiAJfSBlbHNlIHsKQEAgLTEyMzExLDkgKzEyMjkzLDYgQEAgc3RhdGlj IGludCBpbnRlbF9jcnRjX3BhZ2VfZmxpcChzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAKIAlpZiAo bW1pb19mbGlwKSB7CiAJCUlOSVRfV09SSygmd29yay0+bW1pb193b3JrLCBpbnRlbF9tbWlvX2Zs aXBfd29ya19mdW5jKTsKLQotCQl3b3JrLT5mbGlwX3F1ZXVlZF9yZXEgPSBpOTE1X2dlbV9hY3Rp dmVfZ2V0KCZvYmotPmxhc3Rfd3JpdGUsCi0JCQkJCQkJICAgICZvYmotPmJhc2UuZGV2LT5zdHJ1 Y3RfbXV0ZXgpOwogCQlxdWV1ZV93b3JrKHN5c3RlbV91bmJvdW5kX3dxLCAmd29yay0+bW1pb193 b3JrKTsKIAl9IGVsc2UgewogCQlyZXF1ZXN0ID0gaTkxNV9nZW1fcmVxdWVzdF9hbGxvYyhlbmdp bmUsIGVuZ2luZS0+bGFzdF9jb250ZXh0KTsKQEAgLTE0MTUzLDEzICsxNDEzMiwxMCBAQCBzdGF0 aWMgaW50IGludGVsX2F0b21pY19jaGVjayhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogfQogCiBz dGF0aWMgaW50IGludGVsX2F0b21pY19wcmVwYXJlX2NvbW1pdChzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LAotCQkJCSAgICAgICBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUsCi0JCQkJICAg ICAgIGJvb2wgbm9uYmxvY2spCisJCQkJICAgICAgIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpz dGF0ZSkKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRl dik7Ci0Jc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGU7CiAJc3RydWN0IGRybV9j cnRjX3N0YXRlICpjcnRjX3N0YXRlOwotCXN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lOwogCXN0cnVj dCBkcm1fY3J0YyAqY3J0YzsKIAlpbnQgaSwgcmV0OwogCkBAIC0xNDE4MiwzMCArMTQxNTgsNiBA QCBzdGF0aWMgaW50IGludGVsX2F0b21pY19wcmVwYXJlX2NvbW1pdChzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2LAogCXJldCA9IGRybV9hdG9taWNfaGVscGVyX3ByZXBhcmVfcGxhbmVzKGRldiwgc3Rh dGUpOwogCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwogCi0JaWYgKCFyZXQgJiYg IW5vbmJsb2NrKSB7Ci0JCWZvcl9lYWNoX3BsYW5lX2luX3N0YXRlKHN0YXRlLCBwbGFuZSwgcGxh bmVfc3RhdGUsIGkpIHsKLQkJCXN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqaW50ZWxfcGxhbmVf c3RhdGUgPQotCQkJCXRvX2ludGVsX3BsYW5lX3N0YXRlKHBsYW5lX3N0YXRlKTsKLQkJCWxvbmcg dGltZW91dDsKLQotCQkJaWYgKCFpbnRlbF9wbGFuZV9zdGF0ZS0+d2FpdF9yZXEpCi0JCQkJY29u dGludWU7Ci0KLQkJCXRpbWVvdXQgPSBpOTE1X3dhaXRfcmVxdWVzdChpbnRlbF9wbGFuZV9zdGF0 ZS0+d2FpdF9yZXEsCi0JCQkJCQkgICAgSTkxNV9XQUlUX0lOVEVSUlVQVElCTEUsCi0JCQkJCQkg ICAgTUFYX1NDSEVEVUxFX1RJTUVPVVQpOwotCQkJaWYgKHRpbWVvdXQgPCAwKSB7Ci0JCQkJLyog QW55IGhhbmcgc2hvdWxkIGJlIHN3YWxsb3dlZCBieSB0aGUgd2FpdCAqLwotCQkJCVdBUk5fT04o dGltZW91dCA9PSAtRUlPKTsKLQkJCQltdXRleF9sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Ci0J CQkJZHJtX2F0b21pY19oZWxwZXJfY2xlYW51cF9wbGFuZXMoZGV2LCBzdGF0ZSk7Ci0JCQkJbXV0 ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Ci0JCQkJcmV0ID0gdGltZW91dDsKLQkJCQli cmVhazsKLQkJCX0KLQkJfQotCX0KLQogCXJldHVybiByZXQ7CiB9CiAKQEAgLTE0Mzk5LDI2ICsx NDM1MSwxMSBAQCBzdGF0aWMgdm9pZCBpbnRlbF9hdG9taWNfY29tbWl0X3RhaWwoc3RydWN0IGRy bV9hdG9taWNfc3RhdGUgKnN0YXRlKQogCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqb2xkX2NydGNf c3RhdGU7CiAJc3RydWN0IGRybV9jcnRjICpjcnRjOwogCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICppbnRlbF9jc3RhdGU7Ci0Jc3RydWN0IGRybV9wbGFuZSAqcGxhbmU7Ci0Jc3RydWN0IGRybV9w bGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGU7CiAJYm9vbCBod19jaGVjayA9IGludGVsX3N0YXRlLT5t b2Rlc2V0OwogCXVuc2lnbmVkIGxvbmcgcHV0X2RvbWFpbnNbSTkxNV9NQVhfUElQRVNdID0ge307 CiAJdW5zaWduZWQgY3J0Y192YmxhbmtfbWFzayA9IDA7CiAJaW50IGk7CiAKLQlmb3JfZWFjaF9w bGFuZV9pbl9zdGF0ZShzdGF0ZSwgcGxhbmUsIHBsYW5lX3N0YXRlLCBpKSB7Ci0JCXN0cnVjdCBp bnRlbF9wbGFuZV9zdGF0ZSAqaW50ZWxfcGxhbmVfc3RhdGUgPQotCQkJdG9faW50ZWxfcGxhbmVf c3RhdGUocGxhbmVfc3RhdGUpOwotCi0JCWlmICghaW50ZWxfcGxhbmVfc3RhdGUtPndhaXRfcmVx KQotCQkJY29udGludWU7Ci0KLQkJLyogRUlPIHNob3VsZCBiZSBlYXRlbiwgYW5kIHdlIGNhbid0 IGdldCBpbnRlcnJ1cHRlZCBpbiB0aGUKLQkJICogd29ya2VyLCBhbmQgYmxvY2tpbmcgY29tbWl0 cyBoYXZlIHdhaXRlZCBhbHJlYWR5LiAqLwotCQlXQVJOX09OKGk5MTVfd2FpdF9yZXF1ZXN0KGlu dGVsX3BsYW5lX3N0YXRlLT53YWl0X3JlcSwKLQkJCQkJICAwLCBNQVhfU0NIRURVTEVfVElNRU9V VCkgPCAwKTsKLQl9Ci0KIAlkcm1fYXRvbWljX2hlbHBlcl93YWl0X2Zvcl9kZXBlbmRlbmNpZXMo c3RhdGUpOwogCiAJaWYgKGludGVsX3N0YXRlLT5tb2Rlc2V0KSB7CkBAIC0xNDYyNSw3ICsxNDU2 Miw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfYXRvbWljX2NvbW1pdChzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LAogCiAJSU5JVF9XT1JLKCZzdGF0ZS0+Y29tbWl0X3dvcmssIGludGVsX2F0b21pY19jb21t aXRfd29yayk7CiAKLQlyZXQgPSBpbnRlbF9hdG9taWNfcHJlcGFyZV9jb21taXQoZGV2LCBzdGF0 ZSwgbm9uYmxvY2spOworCXJldCA9IGludGVsX2F0b21pY19wcmVwYXJlX2NvbW1pdChkZXYsIHN0 YXRlKTsKIAlpZiAocmV0KSB7CiAJCURSTV9ERUJVR19BVE9NSUMoIlByZXBhcmluZyBzdGF0ZSBm YWlsZWQgd2l0aCAlaVxuIiwgcmV0KTsKIAkJcmV0dXJuIHJldDsKQEAgLTE0NzU4LDcgKzE0Njk1 LDcgQEAgaW50ZWxfcHJlcGFyZV9wbGFuZV9mYihzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKIAlz dHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IG5ld19zdGF0ZS0+ZmI7CiAJc3RydWN0IGRybV9p OTE1X2dlbV9vYmplY3QgKm9iaiA9IGludGVsX2ZiX29iaihmYik7CiAJc3RydWN0IGRybV9pOTE1 X2dlbV9vYmplY3QgKm9sZF9vYmogPSBpbnRlbF9mYl9vYmoocGxhbmUtPnN0YXRlLT5mYik7Ci0J c3RydWN0IHJlc2VydmF0aW9uX29iamVjdCAqcmVzdjsKKwlsb25nIGxyZXQ7CiAJaW50IHJldCA9 IDA7CiAKIAlpZiAoIW9iaiAmJiAhb2xkX29iaikKQEAgLTE0Nzk2LDM5ICsxNDczMywzNCBAQCBp bnRlbF9wcmVwYXJlX3BsYW5lX2ZiKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAogCQlyZXR1cm4g MDsKIAogCS8qIEZvciBmcmFtZWJ1ZmZlciBiYWNrZWQgYnkgZG1hYnVmLCB3YWl0IGZvciBmZW5j ZSAqLwotCXJlc3YgPSBpOTE1X2dlbV9vYmplY3RfZ2V0X2RtYWJ1Zl9yZXN2KG9iaik7Ci0JaWYg KHJlc3YpIHsKLQkJbG9uZyBscmV0OworCWxyZXQgPSBpOTE1X2dlbV9vYmplY3Rfd2FpdChvYmos CisJCQkJICAgIEk5MTVfV0FJVF9JTlRFUlJVUFRJQkxFIHwgSTkxNV9XQUlUX0xPQ0tFRCwKKwkJ CQkgICAgTUFYX1NDSEVEVUxFX1RJTUVPVVQsCisJCQkJICAgIE5VTEwpOworCWlmIChscmV0ID09 IC1FUkVTVEFSVFNZUykKKwkJcmV0dXJuIGxyZXQ7CiAKLQkJbHJldCA9IHJlc2VydmF0aW9uX29i amVjdF93YWl0X3RpbWVvdXRfcmN1KHJlc3YsIGZhbHNlLCB0cnVlLAotCQkJCQkJCSAgIE1BWF9T Q0hFRFVMRV9USU1FT1VUKTsKLQkJaWYgKGxyZXQgPT0gLUVSRVNUQVJUU1lTKQotCQkJcmV0dXJu IGxyZXQ7Ci0KLQkJV0FSTihscmV0IDwgMCwgIndhaXRpbmcgcmV0dXJucyAlbGlcbiIsIGxyZXQp OwotCX0KKwlXQVJOKGxyZXQgPCAwLCAid2FpdGluZyByZXR1cm5zICVsaVxuIiwgbHJldCk7CiAK IAlpZiAocGxhbmUtPnR5cGUgPT0gRFJNX1BMQU5FX1RZUEVfQ1VSU09SICYmCiAJICAgIElOVEVM X0lORk8oZGV2KS0+Y3Vyc29yX25lZWRzX3BoeXNpY2FsKSB7CiAJCWludCBhbGlnbiA9IElTX0k4 MzAoZGV2X3ByaXYpID8gMTYgKiAxMDI0IDogMjU2OwogCQlyZXQgPSBpOTE1X2dlbV9vYmplY3Rf YXR0YWNoX3BoeXMob2JqLCBhbGlnbik7Ci0JCWlmIChyZXQpCisJCWlmIChyZXQpIHsKIAkJCURS TV9ERUJVR19LTVMoImZhaWxlZCB0byBhdHRhY2ggcGh5cyBvYmplY3RcbiIpOworCQkJcmV0dXJu IHJldDsKKwkJfQogCX0gZWxzZSB7CiAJCXN0cnVjdCBpOTE1X3ZtYSAqdm1hOwogCiAJCXZtYSA9 IGludGVsX3Bpbl9hbmRfZmVuY2VfZmJfb2JqKGZiLCBuZXdfc3RhdGUtPnJvdGF0aW9uKTsKLQkJ aWYgKElTX0VSUih2bWEpKQotCQkJcmV0ID0gUFRSX0VSUih2bWEpOwotCX0KLQotCWlmIChyZXQg PT0gMCkgewotCQl0b19pbnRlbF9wbGFuZV9zdGF0ZShuZXdfc3RhdGUpLT53YWl0X3JlcSA9Ci0J CQlpOTE1X2dlbV9hY3RpdmVfZ2V0KCZvYmotPmxhc3Rfd3JpdGUsCi0JCQkJCSAgICAmb2JqLT5i YXNlLmRldi0+c3RydWN0X211dGV4KTsKKwkJaWYgKElTX0VSUih2bWEpKSB7CisJCQlEUk1fREVC VUdfS01TKCJmYWlsZWQgdG8gcGluIG9iamVjdFxuIik7CisJCQlyZXR1cm4gUFRSX0VSUih2bWEp OworCQl9CiAJfQogCi0JcmV0dXJuIHJldDsKKwlyZXR1cm4gMDsKIH0KIAogLyoqCkBAIC0xNDg0 Niw3ICsxNDc3OCw2IEBAIGludGVsX2NsZWFudXBfcGxhbmVfZmIoc3RydWN0IGRybV9wbGFuZSAq cGxhbmUsCiB7CiAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IHBsYW5lLT5kZXY7CiAJc3RydWN0 IGludGVsX3BsYW5lX3N0YXRlICpvbGRfaW50ZWxfc3RhdGU7Ci0Jc3RydWN0IGludGVsX3BsYW5l X3N0YXRlICppbnRlbF9zdGF0ZSA9IHRvX2ludGVsX3BsYW5lX3N0YXRlKHBsYW5lLT5zdGF0ZSk7 CiAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9sZF9vYmogPSBpbnRlbF9mYl9vYmoob2xk X3N0YXRlLT5mYik7CiAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiA9IGludGVsX2Zi X29iaihwbGFuZS0+c3RhdGUtPmZiKTsKIApAQCAtMTQ4NTgsOSArMTQ3ODksNiBAQCBpbnRlbF9j bGVhbnVwX3BsYW5lX2ZiKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAogCWlmIChvbGRfb2JqICYm IChwbGFuZS0+dHlwZSAhPSBEUk1fUExBTkVfVFlQRV9DVVJTT1IgfHwKIAkgICAgIUlOVEVMX0lO Rk8oZGV2KS0+Y3Vyc29yX25lZWRzX3BoeXNpY2FsKSkKIAkJaW50ZWxfdW5waW5fZmJfb2JqKG9s ZF9zdGF0ZS0+ZmIsIG9sZF9zdGF0ZS0+cm90YXRpb24pOwotCi0JaTkxNV9nZW1fcmVxdWVzdF9h c3NpZ24oJmludGVsX3N0YXRlLT53YWl0X3JlcSwgTlVMTCk7Ci0JaTkxNV9nZW1fcmVxdWVzdF9h c3NpZ24oJm9sZF9pbnRlbF9zdGF0ZS0+d2FpdF9yZXEsIE5VTEwpOwogfQogCiBpbnQKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZHJ2LmgKaW5kZXggOTVhN2QzMDA1YTc0Li40NTg1OGI3MmU5NWMgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2Rydi5oCkBAIC00MDEsOSArNDAxLDYgQEAgc3RydWN0IGludGVsX3Bs YW5lX3N0YXRlIHsKIAlpbnQgc2NhbGVyX2lkOwogCiAJc3RydWN0IGRybV9pbnRlbF9zcHJpdGVf Y29sb3JrZXkgY2tleTsKLQotCS8qIGFzeW5jIGZsaXAgcmVsYXRlZCBzdHJ1Y3R1cmVzICovCi0J c3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICp3YWl0X3JlcTsKIH07CiAKIHN0cnVjdCBpbnRl bF9pbml0aWFsX3BsYW5lX2NvbmZpZyB7Ci0tIAoyLjkuMwoKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1n ZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21h aWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==