From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 26/42] drm/i915: Move GEM activity tracking into a common struct reservation_object Date: Fri, 7 Oct 2016 10:46:19 +0100 Message-ID: <20161007094635.28319-27-chris@chris-wilson.co.uk> References: <20161007094635.28319-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-wm0-x242.google.com (mail-wm0-x242.google.com [IPv6:2a00:1450:400c:c09::242]) by gabe.freedesktop.org (Postfix) with ESMTPS id 4EDB66EB34 for ; Fri, 7 Oct 2016 09:47:12 +0000 (UTC) Received: by mail-wm0-x242.google.com with SMTP id b201so2096874wmb.1 for ; Fri, 07 Oct 2016 02:47:12 -0700 (PDT) In-Reply-To: <20161007094635.28319-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 NDJzIHRvIDY2cyksIG1haW5seSBkdWUgdG8gYXRvbWljIG9wZXJhdGlvbnMuCgogKiBsb3NzIG9m IG9iamVjdC1sZXZlbCByZXRpcmVtZW50IGNhbGxiYWNrcywgZW11bGF0ZWQgYnkgVk1BIHJldGly ZW1lbnQKdHJhY2tpbmcuCgogKiBtaW5vciBsb3NzIG9mIG9iamVjdC1sZXZlbCBsYXN0IGFjdGl2 aXR5IGluZm9ybWF0aW9uIGZyb20gZGVidWdmcywKY291bGQgYmUgcmVwbGFjZWQgd2l0aCBwZXIt dm1hIGluZm9ybWF0aW9uIGlmIGRlc2lyZWQKClNpZ25lZC1vZmYtYnk6IENocmlzIFdpbHNvbiA8 Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZGVidWdmcy5jICAgICAgICB8ICAxNSArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYu aCAgICAgICAgICAgIHwgIDYyICsrKy0tLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt LmMgICAgICAgICAgICB8IDI2NiArKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQogZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fYmF0Y2hfcG9vbC5jIHwgICAzICstCiBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbV9kbWFidWYuYyAgICAgfCAgNTMgKy0tLS0tCiBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbV9kbWFidWYuaCAgICAgfCAgNDUgLS0tLS0KIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYyB8ICA4MiArKystLS0tLS0KIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jICAgICAgICB8ICAzMiArKysrCiBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuaCAgICAgICAgfCAgIDEgKwogZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW1fcmVxdWVzdC5jICAgIHwgIDQ4ICsrKy0tLQogZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW1fcmVxdWVzdC5oICAgIHwgIDM3ICstLS0KIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ3B1X2Vycm9yLmMgICAgICB8ICAgNiArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfYXRvbWljX3BsYW5lLmMgIHwgICAyIC0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2Rpc3BsYXkuYyAgICAgICB8IDExNCArKystLS0tLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kcnYuaCAgICAgICAgICAgfCAgIDMgLQogMTUgZmlsZXMgY2hhbmdlZCwgMjE1IGlu c2VydGlvbnMoKyksIDU1NCBkZWxldGlvbnMoLSkKIGRlbGV0ZSBtb2RlIDEwMDY0NCBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9kbWFidWYuaAoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1 Z2ZzLmMKaW5kZXggMTQ0MDEzODc1NTEzLi5iMjRhMDI3ZjUwNDAgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZGVidWdmcy5jCkBAIC0xMzYsMTEgKzEzNiwxMCBAQCBkZXNjcmliZV9vYmooc3RydWN0 IHNlcV9maWxlICptLCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQogCXN0cnVjdCBp OTE1X3ZtYSAqdm1hOwogCXVuc2lnbmVkIGludCBmcm9udGJ1ZmZlcl9iaXRzOwogCWludCBwaW5f Y291bnQgPSAwOwotCWVudW0gaW50ZWxfZW5naW5lX2lkIGlkOwogCiAJbG9ja2RlcF9hc3NlcnRf aGVsZCgmb2JqLT5iYXNlLmRldi0+c3RydWN0X211dGV4KTsKIAotCXNlcV9wcmludGYobSwgIiVw SzogJWMlYyVjJWMlYyAlOHpkS2lCICUwMnggJTAyeCBbICIsCisJc2VxX3ByaW50ZihtLCAiJXBL OiAlYyVjJWMlYyVjICU4emRLaUIgJTAyeCAlMDJ4ICVzJXMlcyIsCiAJCSAgICZvYmotPmJhc2Us CiAJCSAgIGdldF9hY3RpdmVfZmxhZyhvYmopLAogCQkgICBnZXRfcGluX2ZsYWcob2JqKSwKQEAg LTE0OSwxNCArMTQ4LDcgQEAgZGVzY3JpYmVfb2JqKHN0cnVjdCBzZXFfZmlsZSAqbSwgc3RydWN0 IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKIAkJICAgZ2V0X3Bpbl9tYXBwZWRfZmxhZyhvYmop LAogCQkgICBvYmotPmJhc2Uuc2l6ZSAvIDEwMjQsCiAJCSAgIG9iai0+YmFzZS5yZWFkX2RvbWFp bnMsCi0JCSAgIG9iai0+YmFzZS53cml0ZV9kb21haW4pOwotCWZvcl9lYWNoX2VuZ2luZV9pZChl bmdpbmUsIGRldl9wcml2LCBpZCkKLQkJc2VxX3ByaW50ZihtLCAiJXggIiwKLQkJCSAgIGk5MTVf Z2VtX2FjdGl2ZV9nZXRfc2Vxbm8oJm9iai0+bGFzdF9yZWFkW2lkXSwKLQkJCQkJCSAgICAgJm9i ai0+YmFzZS5kZXYtPnN0cnVjdF9tdXRleCkpOwotCXNlcV9wcmludGYobSwgIl0gJXggJXMlcyVz IiwKLQkJICAgaTkxNV9nZW1fYWN0aXZlX2dldF9zZXFubygmb2JqLT5sYXN0X3dyaXRlLAotCQkJ CQkgICAgICZvYmotPmJhc2UuZGV2LT5zdHJ1Y3RfbXV0ZXgpLAorCQkgICBvYmotPmJhc2Uud3Jp dGVfZG9tYWluLAogCQkgICBpOTE1X2NhY2hlX2xldmVsX3N0cihkZXZfcHJpdiwgb2JqLT5jYWNo ZV9sZXZlbCksCiAJCSAgIG9iai0+bW0uZGlydHkgPyAiIGRpcnR5IiA6ICIiLAogCQkgICBvYmot Pm1tLm1hZHYgPT0gSTkxNV9NQURWX0RPTlRORUVEID8gIiBwdXJnZWFibGUiIDogIiIpOwpAQCAt MTk2LDggKzE4OCw3IEBAIGRlc2NyaWJlX29iaihzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHN0cnVjdCBk cm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCiAJCXNlcV9wcmludGYobSwgIiAoJXMgbWFwcGFibGUp Iiwgcyk7CiAJfQogCi0JZW5naW5lID0gaTkxNV9nZW1fYWN0aXZlX2dldF9lbmdpbmUoJm9iai0+ bGFzdF93cml0ZSwKLQkJCQkJICAgICZkZXZfcHJpdi0+ZHJtLnN0cnVjdF9tdXRleCk7CisJZW5n aW5lID0gaTkxNV9nZW1fb2JqZWN0X2xhc3Rfd3JpdGVfZW5naW5lKG9iaik7CiAJaWYgKGVuZ2lu ZSkKIAkJc2VxX3ByaW50ZihtLCAiICglcykiLCBlbmdpbmUtPm5hbWUpOwogCmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kcnYuaAppbmRleCA4OWQzYjVhMTY4MjYuLjc3NTZmNWM3ZjFhYiAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2Rydi5oCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSA8bGludXgvaW50ZWwtaW9t bXUuaD4KICNpbmNsdWRlIDxsaW51eC9rcmVmLmg+CiAjaW5jbHVkZSA8bGludXgvcG1fcW9zLmg+ CisjaW5jbHVkZSA8bGludXgvcmVzZXJ2YXRpb24uaD4KICNpbmNsdWRlIDxsaW51eC9zaG1lbV9m cy5oPgogCiAjaW5jbHVkZSA8ZHJtL2RybVAuaD4KQEAgLTIyMzEsMjEgKzIyMzIsMTIgQEAgc3Ry dWN0IGRybV9pOTE1X2dlbV9vYmplY3QgewogCXN0cnVjdCBsaXN0X2hlYWQgYmF0Y2hfcG9vbF9s aW5rOwogCiAJdW5zaWduZWQgbG9uZyBmbGFnczsKLQkvKioKLQkgKiBUaGlzIGlzIHNldCBpZiB0 aGUgb2JqZWN0IGlzIG9uIHRoZSBhY3RpdmUgbGlzdHMgKGhhcyBwZW5kaW5nCi0JICogcmVuZGVy aW5nIGFuZCBzbyBhIG5vbi16ZXJvIHNlcW5vKSwgYW5kIGlzIG5vdCBzZXQgaWYgaXQgaSBzIG9u Ci0JICogaW5hY3RpdmUgKHJlYWR5IHRvIGJlIHVuYm91bmQpIGxpc3QuCi0JICovCi0jZGVmaW5l IEk5MTVfQk9fQUNUSVZFX1NISUZUIDAKLSNkZWZpbmUgSTkxNV9CT19BQ1RJVkVfTUFTSyAoKDEg PDwgSTkxNV9OVU1fRU5HSU5FUykgLSAxKQotI2RlZmluZSBfX0k5MTVfQk9fQUNUSVZFKGJvKSBc Ci0JKChSRUFEX09OQ0UoKGJvKS0+ZmxhZ3MpID4+IEk5MTVfQk9fQUNUSVZFX1NISUZUKSAmIEk5 MTVfQk9fQUNUSVZFX01BU0spCiAKIAkvKioKIAkgKiBIYXZlIHdlIHRha2VuIGEgcmVmZXJlbmNl IGZvciB0aGUgb2JqZWN0IGZvciBpbmNvbXBsZXRlIEdQVQogCSAqIGFjdGl2aXR5PwogCSAqLwot I2RlZmluZSBJOTE1X0JPX0FDVElWRV9SRUYgKEk5MTVfQk9fQUNUSVZFX1NISUZUICsgSTkxNV9O VU1fRU5HSU5FUykKKyNkZWZpbmUgSTkxNV9CT19BQ1RJVkVfUkVGIDAKIAogCS8qKgogCSAqIFdo ZXRoZXIgdGhlIGN1cnJlbnQgZ3R0IG1hcHBpbmcgbmVlZHMgdG8gYmUgbWFwcGFibGUgKGFuZCBp c24ndCBqdXN0CkBAIC0yMjczLDYgKzIyNjUsNyBAQCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVj dCB7CiAKIAkvKiogQ291bnQgb2YgVk1BIGFjdHVhbGx5IGJvdW5kIGJ5IHRoaXMgb2JqZWN0ICov CiAJdW5zaWduZWQgaW50IGJpbmRfY291bnQ7CisJdW5zaWduZWQgaW50IGFjdGl2ZV9jb3VudDsK IAl1bnNpZ25lZCBpbnQgcGluX2Rpc3BsYXk7CiAKIAlzdHJ1Y3QgewpAQCAtMjMxMiw4ICsyMzA1 LDcgQEAgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgewogCSAqIHJlYWQgcmVxdWVzdC4gVGhp cyBhbGxvd3MgZm9yIHRoZSBDUFUgdG8gcmVhZCBmcm9tIGFuIGFjdGl2ZQogCSAqIGJ1ZmZlciBi eSBvbmx5IHdhaXRpbmcgZm9yIHRoZSB3cml0ZSB0byBjb21wbGV0ZS4KIAkgKi8KLQlzdHJ1Y3Qg aTkxNV9nZW1fYWN0aXZlIGxhc3RfcmVhZFtJOTE1X05VTV9FTkdJTkVTXTsKLQlzdHJ1Y3QgaTkx NV9nZW1fYWN0aXZlIGxhc3Rfd3JpdGU7CisJc3RydWN0IHJlc2VydmF0aW9uX29iamVjdCAqcmVz djsKIAogCS8qKiBSZWZlcmVuY2VzIGZyb20gZnJhbWVidWZmZXJzLCBsb2NrcyBvdXQgdGlsaW5n IGNoYW5nZXMuICovCiAJdW5zaWduZWQgbG9uZyBmcmFtZWJ1ZmZlcl9yZWZlcmVuY2VzOwpAQCAt MjMzMiw2ICsyMzI0LDggQEAgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgewogCiAJLyoqIGZv ciBwaHlzIGFsbG9jYXRlZCBvYmplY3RzICovCiAJc3RydWN0IGRybV9kbWFfaGFuZGxlICpwaHlz X2hhbmRsZTsKKworCXN0cnVjdCByZXNlcnZhdGlvbl9vYmplY3QgX19idWlsdGluX3Jlc3Y7CiB9 OwogCiBzdGF0aWMgaW5saW5lIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICoKQEAgLTI0MjQs MzUgKzI0MTgsMTAgQEAgaTkxNV9nZW1fb2JqZWN0X2hhc19zdHJ1Y3RfcGFnZShjb25zdCBzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQogCXJldHVybiBvYmotPm9wcy0+ZmxhZ3MgJiBJ OTE1X0dFTV9PQkpFQ1RfSEFTX1NUUlVDVF9QQUdFOwogfQogCi1zdGF0aWMgaW5saW5lIHVuc2ln bmVkIGxvbmcKLWk5MTVfZ2VtX29iamVjdF9nZXRfYWN0aXZlKGNvbnN0IHN0cnVjdCBkcm1faTkx NV9nZW1fb2JqZWN0ICpvYmopCi17Ci0JcmV0dXJuIChvYmotPmZsYWdzID4+IEk5MTVfQk9fQUNU SVZFX1NISUZUKSAmIEk5MTVfQk9fQUNUSVZFX01BU0s7Ci19Ci0KIHN0YXRpYyBpbmxpbmUgYm9v bAogaTkxNV9nZW1fb2JqZWN0X2lzX2FjdGl2ZShjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29i amVjdCAqb2JqKQogewotCXJldHVybiBpOTE1X2dlbV9vYmplY3RfZ2V0X2FjdGl2ZShvYmopOwot fQotCi1zdGF0aWMgaW5saW5lIHZvaWQKLWk5MTVfZ2VtX29iamVjdF9zZXRfYWN0aXZlKHN0cnVj dCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosIGludCBlbmdpbmUpCi17Ci0Jb2JqLT5mbGFncyB8 PSBCSVQoZW5naW5lICsgSTkxNV9CT19BQ1RJVkVfU0hJRlQpOwotfQotCi1zdGF0aWMgaW5saW5l IHZvaWQKLWk5MTVfZ2VtX29iamVjdF9jbGVhcl9hY3RpdmUoc3RydWN0IGRybV9pOTE1X2dlbV9v YmplY3QgKm9iaiwgaW50IGVuZ2luZSkKLXsKLQlvYmotPmZsYWdzICY9IH5CSVQoZW5naW5lICsg STkxNV9CT19BQ1RJVkVfU0hJRlQpOwotfQotCi1zdGF0aWMgaW5saW5lIGJvb2wKLWk5MTVfZ2Vt X29iamVjdF9oYXNfYWN0aXZlX2VuZ2luZShjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVj dCAqb2JqLAotCQkJCSAgaW50IGVuZ2luZSkKLXsKLQlyZXR1cm4gb2JqLT5mbGFncyAmIEJJVChl bmdpbmUgKyBJOTE1X0JPX0FDVElWRV9TSElGVCk7CisJcmV0dXJuIG9iai0+YWN0aXZlX2NvdW50 OwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wKQEAgLTI0OTUsNiArMjQ2NCwyMyBAQCBpOTE1X2dl bV9vYmplY3RfZ2V0X3N0cmlkZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQogCXJl dHVybiBvYmotPnRpbGluZ19hbmRfc3RyaWRlICYgU1RSSURFX01BU0s7CiB9CiAKK3N0YXRpYyBp bmxpbmUgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqCitpOTE1X2dlbV9vYmplY3RfbGFzdF93cml0 ZV9lbmdpbmUoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKK3sKKwlzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICplbmdpbmUgPSBOVUxMOworCXN0cnVjdCBmZW5jZSAqZmVuY2U7CisKKwly Y3VfcmVhZF9sb2NrKCk7CisJZmVuY2UgPSByZXNlcnZhdGlvbl9vYmplY3RfZ2V0X2V4Y2xfcmN1 KG9iai0+cmVzdik7CisJcmN1X3JlYWRfdW5sb2NrKCk7CisKKwlpZiAoZmVuY2UgJiYgZmVuY2Vf aXNfaTkxNShmZW5jZSkgJiYgIWZlbmNlX2lzX3NpZ25hbGVkKGZlbmNlKSkKKwkJZW5naW5lID0g dG9fcmVxdWVzdChmZW5jZSktPmVuZ2luZTsKKwlmZW5jZV9wdXQoZmVuY2UpOworCisJcmV0dXJu IGVuZ2luZTsKK30KKwogc3RhdGljIGlubGluZSBzdHJ1Y3QgaTkxNV92bWEgKmk5MTVfdm1hX2dl dChzdHJ1Y3QgaTkxNV92bWEgKnZtYSkKIHsKIAlpOTE1X2dlbV9vYmplY3RfZ2V0KHZtYS0+b2Jq KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCmluZGV4IDI4ZTEwNjRiYWFkNS4uOTQzZWMzZmU2NmFk IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKQEAgLTI5LDcgKzI5LDYgQEAKICNpbmNsdWRlIDxk cm0vZHJtX3ZtYV9tYW5hZ2VyLmg+CiAjaW5jbHVkZSA8ZHJtL2k5MTVfZHJtLmg+CiAjaW5jbHVk ZSAiaTkxNV9kcnYuaCIKLSNpbmNsdWRlICJpOTE1X2dlbV9kbWFidWYuaCIKICNpbmNsdWRlICJp OTE1X3ZncHUuaCIKICNpbmNsdWRlICJpOTE1X3RyYWNlLmgiCiAjaW5jbHVkZSAiaW50ZWxfZHJ2 LmgiCkBAIC00NDcsMTEgKzQ0Niw2IEBAIGk5MTVfZ2VtX29iamVjdF93YWl0KHN0cnVjdCBkcm1f aTkxNV9nZW1fb2JqZWN0ICpvYmosCiAJCSAgICAgbG9uZyB0aW1lb3V0LAogCQkgICAgIHN0cnVj dCBpbnRlbF9ycHNfY2xpZW50ICpycHMpCiB7Ci0Jc3RydWN0IHJlc2VydmF0aW9uX29iamVjdCAq cmVzdjsKLQlzdHJ1Y3QgaTkxNV9nZW1fYWN0aXZlICphY3RpdmU7Ci0JdW5zaWduZWQgbG9uZyBh Y3RpdmVfbWFzazsKLQlpbnQgaWR4OwotCiAJbWlnaHRfc2xlZXAoKTsKICNpZiBJU19FTkFCTEVE KENPTkZJR19MT0NLREVQKQogCUdFTV9CVUdfT04oISFsb2NrZGVwX2lzX2hlbGQoJm9iai0+YmFz ZS5kZXYtPnN0cnVjdF9tdXRleCkgIT0KQEAgLTQ1OSwzMyArNDUzLDkgQEAgaTkxNV9nZW1fb2Jq ZWN0X3dhaXQoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKICNlbmRpZgogCUdFTV9C VUdfT04odGltZW91dCA8IDApOwogCi0JaWYgKGZsYWdzICYgSTkxNV9XQUlUX0FMTCkgewotCQlh Y3RpdmUgPSBvYmotPmxhc3RfcmVhZDsKLQkJYWN0aXZlX21hc2sgPSBpOTE1X2dlbV9vYmplY3Rf Z2V0X2FjdGl2ZShvYmopOwotCX0gZWxzZSB7Ci0JCWFjdGl2ZV9tYXNrID0gMTsKLQkJYWN0aXZl ID0gJm9iai0+bGFzdF93cml0ZTsKLQl9Ci0KLQlmb3JfZWFjaF9hY3RpdmUoYWN0aXZlX21hc2ss IGlkeCkgewotCQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3Q7Ci0KLQkJcmVx dWVzdCA9IGk5MTVfZ2VtX2FjdGl2ZV9nZXRfdW5sb2NrZWQoJmFjdGl2ZVtpZHhdKTsKLQkJaWYg KHJlcXVlc3QpIHsKLQkJCXRpbWVvdXQgPSBpOTE1X2dlbV9vYmplY3Rfd2FpdF9mZW5jZSgmcmVx dWVzdC0+ZmVuY2UsCi0JCQkJCQkJICAgICBmbGFncywgdGltZW91dCwKLQkJCQkJCQkgICAgIHJw cyk7Ci0JCQlpOTE1X2dlbV9yZXF1ZXN0X3B1dChyZXF1ZXN0KTsKLQkJfQotCQlpZiAodGltZW91 dCA8IDApCi0JCQlyZXR1cm4gdGltZW91dDsKLQl9Ci0KLQlyZXN2ID0gaTkxNV9nZW1fb2JqZWN0 X2dldF9kbWFidWZfcmVzdihvYmopOwotCWlmIChyZXN2KQotCQl0aW1lb3V0ID0gaTkxNV9nZW1f b2JqZWN0X3dhaXRfcmVzZXJ2YXRpb24ocmVzdiwKLQkJCQkJCQkgICBmbGFncywgdGltZW91dCwK LQkJCQkJCQkgICBycHMpOworCXRpbWVvdXQgPSBpOTE1X2dlbV9vYmplY3Rfd2FpdF9yZXNlcnZh dGlvbihvYmotPnJlc3YsCisJCQkJCQkgICBmbGFncywgdGltZW91dCwKKwkJCQkJCSAgIHJwcyk7 CiAJcmV0dXJuIHRpbWVvdXQgPCAwID8gdGltZW91dCA6IDA7CiB9CiAKQEAgLTI1MTIsNDQgKzI0 ODIsNiBAQCBlcnJfdW5sb2NrOgogCWdvdG8gb3V0X3VubG9jazsKIH0KIAotc3RhdGljIHZvaWQK LWk5MTVfZ2VtX29iamVjdF9yZXRpcmVfX3dyaXRlKHN0cnVjdCBpOTE1X2dlbV9hY3RpdmUgKmFj dGl2ZSwKLQkJCSAgICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdCkKLXsK LQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqID0KLQkJY29udGFpbmVyX29mKGFjdGl2 ZSwgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QsIGxhc3Rfd3JpdGUpOwotCi0JaW50ZWxfZmJf b2JqX2ZsdXNoKG9iaiwgdHJ1ZSwgT1JJR0lOX0NTKTsKLX0KLQotc3RhdGljIHZvaWQKLWk5MTVf Z2VtX29iamVjdF9yZXRpcmVfX3JlYWQoc3RydWN0IGk5MTVfZ2VtX2FjdGl2ZSAqYWN0aXZlLAot CQkJICAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3QpCi17Ci0JaW50IGlk eCA9IHJlcXVlc3QtPmVuZ2luZS0+aWQ7Ci0Jc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9i aiA9Ci0JCWNvbnRhaW5lcl9vZihhY3RpdmUsIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0LCBs YXN0X3JlYWRbaWR4XSk7Ci0KLQlHRU1fQlVHX09OKCFpOTE1X2dlbV9vYmplY3RfaGFzX2FjdGl2 ZV9lbmdpbmUob2JqLCBpZHgpKTsKLQotCWk5MTVfZ2VtX29iamVjdF9jbGVhcl9hY3RpdmUob2Jq LCBpZHgpOwotCWlmIChpOTE1X2dlbV9vYmplY3RfaXNfYWN0aXZlKG9iaikpCi0JCXJldHVybjsK LQotCS8qIEJ1bXAgb3VyIHBsYWNlIG9uIHRoZSBib3VuZCBsaXN0IHRvIGtlZXAgaXQgcm91Z2hs eSBpbiBMUlUgb3JkZXIKLQkgKiBzbyB0aGF0IHdlIGRvbid0IHN0ZWFsIGZyb20gcmVjZW50bHkg dXNlZCBidXQgaW5hY3RpdmUgb2JqZWN0cwotCSAqICh1bmxlc3Mgd2UgYXJlIGZvcmNlZCB0byBv ZmMhKQotCSAqLwotCWlmIChvYmotPmJpbmRfY291bnQpCi0JCWxpc3RfbW92ZV90YWlsKCZvYmot Pmdsb2JhbF9saXN0LAotCQkJICAgICAgICZyZXF1ZXN0LT5pOTE1LT5tbS5ib3VuZF9saXN0KTsK LQotCWlmIChpOTE1X2dlbV9vYmplY3RfaGFzX2FjdGl2ZV9yZWZlcmVuY2Uob2JqKSkgewotCQlp OTE1X2dlbV9vYmplY3RfY2xlYXJfYWN0aXZlX3JlZmVyZW5jZShvYmopOwotCQlpOTE1X2dlbV9v YmplY3RfcHV0KG9iaik7Ci0JfQotfQotCiBzdGF0aWMgYm9vbCBpOTE1X2NvbnRleHRfaXNfYmFu bmVkKGNvbnN0IHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgpCiB7CiAJdW5zaWduZWQgbG9u ZyBlbGFwc2VkOwpAQCAtMjkxNSw2ICsyODQ3LDEzIEBAIGludCBpOTE1X3ZtYV91bmJpbmQoc3Ry dWN0IGk5MTVfdm1hICp2bWEpCiAJCSAqIEluIG9yZGVyIHRvIHByZXZlbnQgaXQgZnJvbSBiZWlu ZyByZWN1cnNpdmVseSBjbG9zZWQsCiAJCSAqIHRha2UgYSBwaW4gb24gdGhlIHZtYSBzbyB0aGF0 IHRoZSBzZWNvbmQgdW5iaW5kIGlzCiAJCSAqIGFib3J0ZWQuCisJCSAqCisJCSAqIEV2ZW4gbW9y ZSBzY2FyeSBpcyB0aGF0IHRoZSByZXRpcmUgY2FsbGJhY2sgbWF5IGZyZWUKKwkJICogdGhlIG9i amVjdCAobGFzdCBhY3RpdmUgdm1hKS4gVG8gcHJldmVudCB0aGUgZXhwbG9zaW9uCisJCSAqIHdl IGRlZmVyIHRoZSBhY3R1YWwgb2JqZWN0IGZyZWUgdG8gYSB3b3JrZXIgdGhhdCBjYW4KKwkJICog b25seSBwcm9jZWVkIG9uY2UgaXQgYWNxdWlyZXMgdGhlIHN0cnVjdF9tdXRleCAod2hpY2gKKwkJ ICogd2UgY3VycmVudGx5IGhvbGQsIHRoZXJlZm9yZSBpdCBjYW5ub3QgZnJlZSB0aGlzIG9iamVj dAorCQkgKiBiZWZvcmUgd2UgYXJlIGZpbmlzaGVkKS4KIAkJICovCiAJCV9faTkxNV92bWFfcGlu KHZtYSk7CiAKQEAgLTM5MjIsODMgKzM4NjEsNDIgQEAgc3RhdGljIF9fYWx3YXlzX2lubGluZSB1 bnNpZ25lZCBpbnQgX19idXN5X3dyaXRlX2lkKHVuc2lnbmVkIGludCBpZCkKIH0KIAogc3RhdGlj IF9fYWx3YXlzX2lubGluZSB1bnNpZ25lZCBpbnQKLV9fYnVzeV9zZXRfaWZfYWN0aXZlKGNvbnN0 IHN0cnVjdCBpOTE1X2dlbV9hY3RpdmUgKmFjdGl2ZSwKK19fYnVzeV9zZXRfaWZfYWN0aXZlKGNv bnN0IHN0cnVjdCBmZW5jZSAqZmVuY2UsCiAJCSAgICAgdW5zaWduZWQgaW50ICgqZmxhZykodW5z aWduZWQgaW50IGlkKSkKIHsKLQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3Q7 Ci0KLQlyZXF1ZXN0ID0gcmN1X2RlcmVmZXJlbmNlKGFjdGl2ZS0+cmVxdWVzdCk7Ci0JaWYgKCFy ZXF1ZXN0IHx8IGk5MTVfZ2VtX3JlcXVlc3RfY29tcGxldGVkKHJlcXVlc3QpKQotCQlyZXR1cm4g MDsKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJxOwogCi0JLyogVGhpcyBpcyByYWN5 LiBTZWUgX19pOTE1X2dlbV9hY3RpdmVfZ2V0X3JjdSgpIGZvciBhbiBpbiBkZXRhaWwKLQkgKiBk aXNjdXNzaW9uIG9mIGhvdyB0byBoYW5kbGUgdGhlIHJhY2UgY29ycmVjdGx5LCBidXQgZm9yIHJl cG9ydGluZwotCSAqIHRoZSBidXN5IHN0YXRlIHdlIGVyciBvbiB0aGUgc2lkZSBvZiBwb3RlbnRp YWxseSByZXBvcnRpbmcgdGhlCi0JICogd3JvbmcgZW5naW5lIGFzIGJlaW5nIGJ1c3kgKGJ1dCB3 ZSBndWFyYW50ZWUgdGhhdCB0aGUgcmVzdWx0Ci0JICogaXMgYXQgbGVhc3Qgc2VsZi1jb25zaXN0 ZW50KS4KLQkgKgotCSAqIEFzIHdlIHVzZSBTTEFCX0RFU1RST1lfQllfUkNVLCB0aGUgcmVxdWVz dCBtYXkgYmUgcmVhbGxvY2F0ZWQKLQkgKiB3aGlsc3Qgd2UgYXJlIGluc3BlY3RpbmcgaXQsIGV2 ZW4gdW5kZXIgdGhlIFJDVSByZWFkIGxvY2sgYXMgd2UgYXJlLgotCSAqIFRoaXMgbWVhbnMgdGhh dCB0aGVyZSBpcyBhIHNtYWxsIHdpbmRvdyBmb3IgdGhlIGVuZ2luZSBhbmQvb3IgdGhlCi0JICog c2Vxbm8gdG8gaGF2ZSBiZWVuIG92ZXJ3cml0dGVuLiBUaGUgc2Vxbm8gd2lsbCBhbHdheXMgYmUg aW4gdGhlCi0JICogZnV0dXJlIGNvbXBhcmVkIHRvIHRoZSBpbnRlbmRlZCwgYW5kIHNvIHdlIGtu b3cgdGhhdCBpZiB0aGF0Ci0JICogc2Vxbm8gaXMgaWRsZSAob24gd2hhdGV2ZXIgZW5naW5lKSBv dXIgcmVxdWVzdCBpcyBpZGxlIGFuZCB0aGUKLQkgKiByZXR1cm4gMCBhYm92ZSBpcyBjb3JyZWN0 LgotCSAqCi0JICogVGhlIGlzc3VlIGlzIHRoYXQgaWYgdGhlIGVuZ2luZSBpcyBzd2l0Y2hlZCwg aXQgaXMganVzdCBhcyBsaWtlbHkKLQkgKiB0byByZXBvcnQgdGhhdCBpdCBpcyBidXN5IChidXQg c2luY2UgdGhlIHN3aXRjaCBoYXBwZW5lZCwgd2Uga25vdwotCSAqIHRoZSByZXF1ZXN0IHNob3Vs ZCBiZSBpZGxlKS4gU28gdGhlcmUgaXMgYSBzbWFsbCBjaGFuY2UgdGhhdCBhIGJ1c3kKLQkgKiBy ZXN1bHQgaXMgYWN0dWFsbHkgdGhlIHdyb25nIGVuZ2luZS4KLQkgKgotCSAqIFNvIHdoeSBkb24n dCB3ZSBjYXJlPworCS8qIFdlIGhhdmUgdG8gY2hlY2sgdGhlIGN1cnJlbnQgaHcgc3RhdHVzIG9m IHRoZSBmZW5jZSBhcyB0aGUgdUFCSQorCSAqIGd1YXJhbnRlZXMgZm9yd2FyZCBwcm9ncmVzcy4g V2UgY291bGQgcmVseSBvbiB0aGUgaWRsZSB3b3JrZXIKKwkgKiB0byBldmVudHVhbGx5IGZsdXNo IHVzLCBidXQgdG8gbWluaW1pc2UgbGF0ZW5jeSBqdXN0IGFzayB0aGUKKwkgKiBoYXJkd2FyZS4K IAkgKgotCSAqIEZvciBzdGFydGVycywgdGhlIGJ1c3kgaW9jdGwgaXMgYSBoZXVyaXN0aWMgdGhh dCBpcyBieSBkZWZpbml0aW9uCi0JICogcmFjeS4gRXZlbiB3aXRoIHBlcmZlY3Qgc2VyaWFsaXNh dGlvbiBpbiB0aGUgZHJpdmVyLCB0aGUgaGFyZHdhcmUKLQkgKiBzdGF0ZSBpcyBjb25zdGFudGx5 IGFkdmFuY2luZyAtIHRoZSBzdGF0ZSB3ZSByZXBvcnQgdG8gdGhlIHVzZXIKLQkgKiBpcyBzdGFs ZS4KLQkgKgotCSAqIFRoZSBjcml0aWNhbCBpbmZvcm1hdGlvbiBmb3IgdGhlIGJ1c3ktaW9jdGwg aXMgd2hldGhlciB0aGUgb2JqZWN0Ci0JICogaXMgaWRsZSBhcyB1c2Vyc3BhY2UgcmVsaWVzIG9u IHRoYXQgdG8gZGV0ZWN0IHdoZXRoZXIgaXRzIG5leHQKLQkgKiBhY2Nlc3Mgd2lsbCBzdGFsbCwg b3IgaWYgaXQgaGFzIG1pc3NlZCBzdWJtaXR0aW5nIGNvbW1hbmRzIHRvCi0JICogdGhlIGhhcmR3 YXJlIGFsbG93aW5nIHRoZSBHUFUgdG8gc3RhbGwuIFdlIG5ldmVyIGdlbmVyYXRlIGEKLQkgKiBm YWxzZS1wb3NpdGl2ZSBmb3IgaWRsZW5lc3MsIHRodXMgYnVzeS1pb2N0bCBpcyByZWxpYWJsZSBh dCB0aGUKLQkgKiBtb3N0IGZ1bmRhbWVudGFsIGxldmVsLCBhbmQgd2UgbWFpbnRhaW4gdGhlIGd1 YXJhbnRlZSB0aGF0IGEKLQkgKiBidXN5IG9iamVjdCBsZWZ0IHRvIGl0c2VsZiB3aWxsIGV2ZW50 dWFsbHkgYmVjb21lIGlkbGUgKGFuZCBzdGF5Ci0JICogaWRsZSEpLgotCSAqCi0JICogV2UgYWxs b3cgb3Vyc2VsdmVzIHRoZSBsZWV3YXkgb2YgcG90ZW50aWFsbHkgbWlzcmVwb3J0aW5nIHRoZSBi dXN5Ci0JICogc3RhdGUgYmVjYXVzZSB0aGF0IGlzIGFuIG9wdGltaXNhdGlvbiBoZXVyaXN0aWMg dGhhdCBpcyBjb25zdGFudGx5Ci0JICogaW4gZmx1eC4gQmVpbmcgcXVpY2tseSBhYmxlIHRvIGRl dGVjdCB0aGUgYnVzeS9pZGxlIHN0YXRlIGlzIG11Y2gKLQkgKiBtb3JlIGltcG9ydGFudCB0aGFu IGFjY3VyYXRlIGxvZ2dpbmcgb2YgZXhhY3RseSB3aGljaCBlbmdpbmVzIHdlcmUKLQkgKiBidXN5 LgotCSAqCi0JICogRm9yIGFjY3VyYWN5IGluIHJlcG9ydGluZyB0aGUgZW5naW5lLCB3ZSBjb3Vs ZCB1c2UKLQkgKgotCSAqCXJlc3VsdCA9IDA7Ci0JICoJcmVxdWVzdCA9IF9faTkxNV9nZW1fYWN0 aXZlX2dldF9yY3UoYWN0aXZlKTsKLQkgKglpZiAocmVxdWVzdCkgewotCSAqCQlpZiAoIWk5MTVf Z2VtX3JlcXVlc3RfY29tcGxldGVkKHJlcXVlc3QpKQotCSAqCQkJcmVzdWx0ID0gZmxhZyhyZXF1 ZXN0LT5lbmdpbmUtPmV4ZWNfaWQpOwotCSAqCQlpOTE1X2dlbV9yZXF1ZXN0X3B1dChyZXF1ZXN0 KTsKLQkgKgl9Ci0JICoKLQkgKiBidXQgdGhhdCBzdGlsbCByZW1haW5zIHN1c2NlcHRpYmxlIHRv IGJvdGggaGFyZHdhcmUgYW5kIHVzZXJzcGFjZQotCSAqIHJhY2VzLiBTbyB3ZSBhY2NlcHQgbWFr aW5nIHRoZSByZXN1bHQgb2YgdGhhdCByYWNlIHNsaWdodGx5IHdvcnNlLAotCSAqIGdpdmVuIHRo ZSByYXJpdHkgb2YgdGhlIHJhY2UgYW5kIGl0cyBsb3cgaW1wYWN0IG9uIHRoZSByZXN1bHQuCisJ ICogTm90ZSB3ZSBvbmx5IHJlcG9ydCBvbiB0aGUgc3RhdHVzIG9mIG5hdGl2ZSBmZW5jZXMuCiAJ ICovCi0JcmV0dXJuIGZsYWcoUkVBRF9PTkNFKHJlcXVlc3QtPmVuZ2luZS0+ZXhlY19pZCkpOwor CWlmICghZmVuY2VfaXNfaTkxNShmZW5jZSkpCisJCXJldHVybiAwOworCisJLyogb3BlbmNvZGUg dG9fcmVxdWVzdCgpIGluIG9yZGVyIHRvIGF2b2lkIGNvbnN0IHdhcm5pbmdzICovCisJcnEgPSBj b250YWluZXJfb2YoZmVuY2UsIHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCwgZmVuY2UpOwor CWlmIChpOTE1X2dlbV9yZXF1ZXN0X2NvbXBsZXRlZChycSkpCisJCXJldHVybiAwOworCisJcmV0 dXJuIGZsYWcocnEtPmVuZ2luZS0+ZXhlY19pZCk7CiB9CiAKIHN0YXRpYyBfX2Fsd2F5c19pbmxp bmUgdW5zaWduZWQgaW50Ci1idXN5X2NoZWNrX3JlYWRlcihjb25zdCBzdHJ1Y3QgaTkxNV9nZW1f YWN0aXZlICphY3RpdmUpCitidXN5X2NoZWNrX3JlYWRlcihjb25zdCBzdHJ1Y3QgZmVuY2UgKmZl bmNlKQogewotCXJldHVybiBfX2J1c3lfc2V0X2lmX2FjdGl2ZShhY3RpdmUsIF9fYnVzeV9yZWFk X2ZsYWcpOworCXJldHVybiBfX2J1c3lfc2V0X2lmX2FjdGl2ZShmZW5jZSwgX19idXN5X3JlYWRf ZmxhZyk7CiB9CiAKIHN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgdW5zaWduZWQgaW50Ci1idXN5X2No ZWNrX3dyaXRlcihjb25zdCBzdHJ1Y3QgaTkxNV9nZW1fYWN0aXZlICphY3RpdmUpCitidXN5X2No ZWNrX3dyaXRlcihjb25zdCBzdHJ1Y3QgZmVuY2UgKmZlbmNlKQogewotCXJldHVybiBfX2J1c3lf c2V0X2lmX2FjdGl2ZShhY3RpdmUsIF9fYnVzeV93cml0ZV9pZCk7CisJaWYgKCFmZW5jZSkKKwkJ cmV0dXJuIDA7CisKKwlyZXR1cm4gX19idXN5X3NldF9pZl9hY3RpdmUoZmVuY2UsIF9fYnVzeV93 cml0ZV9pZCk7CiB9CiAKIGludApAQCAtNDAwNyw2MyArMzkwNSw1MiBAQCBpOTE1X2dlbV9idXN5 X2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiB7CiAJc3RydWN0IGRy bV9pOTE1X2dlbV9idXN5ICphcmdzID0gZGF0YTsKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVj dCAqb2JqOwotCXVuc2lnbmVkIGxvbmcgYWN0aXZlOworCXN0cnVjdCByZXNlcnZhdGlvbl9vYmpl Y3RfbGlzdCAqbGlzdDsKKwl1bnNpZ25lZCBpbnQgc2VxOwogCWludCBlcnI7CiAKKwllcnIgPSAt RU5PRU5UOwogCXJjdV9yZWFkX2xvY2soKTsKIAlvYmogPSBpOTE1X2dlbV9vYmplY3RfbG9va3Vw X3JjdShmaWxlLCBhcmdzLT5oYW5kbGUpOwotCWlmICghb2JqKSB7Ci0JCWVyciA9IC1FTk9FTlQ7 CisJaWYgKCFvYmopCiAJCWdvdG8gb3V0OwotCX0KIAotCWFyZ3MtPmJ1c3kgPSAwOwotCWFjdGl2 ZSA9IF9fSTkxNV9CT19BQ1RJVkUob2JqKTsKLQlpZiAoYWN0aXZlKSB7Ci0JCWludCBpZHg7Ci0K LQkJLyogWWVzLCB0aGUgbG9va3VwcyBhcmUgaW50ZW50aW9uYWxseSByYWN5LgotCQkgKgotCQkg KiBGaXJzdCwgd2UgY2Fubm90IHNpbXBseSByZWx5IG9uIF9fSTkxNV9CT19BQ1RJVkUuIFdlIGhh dmUKLQkJICogdG8gcmVnYXJkIHRoZSB2YWx1ZSBhcyBzdGFsZSBhbmQgYXMgb3VyIEFCSSBndWFy YW50ZWVzCi0JCSAqIGZvcndhcmQgcHJvZ3Jlc3MsIHdlIGNvbmZpcm0gdGhlIHN0YXR1cyBvZiBl YWNoIGFjdGl2ZQotCQkgKiByZXF1ZXN0IHdpdGggdGhlIGhhcmR3YXJlLgotCQkgKgotCQkgKiBF dmVuIHRob3VnaCB3ZSBndWFyZCB0aGUgcG9pbnRlciBsb29rdXAgYnkgUkNVLCB0aGF0IG9ubHkK LQkJICogZ3VhcmFudGVlcyB0aGF0IHRoZSBwb2ludGVyIGFuZCBpdHMgY29udGVudHMgcmVtYWlu Ci0JCSAqIGRlcmVmZXJlbmNhYmxlIGFuZCBkb2VzICpub3QqIG1lYW4gdGhhdCB0aGUgcmVxdWVz dCB3ZQotCQkgKiBoYXZlIGlzIHRoZSBzYW1lIGFzIHRoZSBvbmUgYmVpbmcgdHJhY2tlZCBieSB0 aGUgb2JqZWN0LgotCQkgKgotCQkgKiBDb25zaWRlciB0aGF0IHdlIGxvb2t1cCB0aGUgcmVxdWVz dCBqdXN0IGFzIGl0IGlzIGJlaW5nCi0JCSAqIHJldGlyZWQgYW5kIGZyZWVkLiBXZSB0YWtlIGEg bG9jYWwgY29weSBvZiB0aGUgcG9pbnRlciwKLQkJICogYnV0IGJlZm9yZSB3ZSBhZGQgaXRzIGVu Z2luZSBpbnRvIHRoZSBidXN5IHNldCwgdGhlIG90aGVyCi0JCSAqIHRocmVhZCByZWFsbG9jYXRl cyBpdCBhbmQgYXNzaWducyBpdCB0byBhIHRhc2sgb24gYW5vdGhlcgotCQkgKiBlbmdpbmUgd2l0 aCBhIGZyZXNoIGFuZCBpbmNvbXBsZXRlIHNlcW5vLiBHdWFyZGluZyBhZ2FpbnN0Ci0JCSAqIHRo YXQgcmVxdWlyZXMgY2FyZWZ1bCBzZXJpYWxpc2F0aW9uIGFuZCByZWZlcmVuY2UgY291bnRpbmcs Ci0JCSAqIGkuZS4gdXNpbmcgX19pOTE1X2dlbV9hY3RpdmVfZ2V0X3JlcXVlc3RfcmN1KCkuIFdl IGRvbid0LAotCQkgKiBpbnN0ZWFkIHdlIGV4cGVjdCB0aGF0IGlmIHRoZSByZXN1bHQgaXMgYnVz eSwgd2hpY2ggZW5naW5lcwotCQkgKiBhcmUgYnVzeSBpcyBub3QgY29tcGxldGVseSByZWxpYWJs ZSAtIHdlIG9ubHkgZ3VhcmFudGVlCi0JCSAqIHRoYXQgdGhlIG9iamVjdCB3YXMgYnVzeS4KLQkJ ICovCi0KLQkJZm9yX2VhY2hfYWN0aXZlKGFjdGl2ZSwgaWR4KQotCQkJYXJncy0+YnVzeSB8PSBi dXN5X2NoZWNrX3JlYWRlcigmb2JqLT5sYXN0X3JlYWRbaWR4XSk7Ci0KLQkJLyogRm9yIEFCSSBz YW5pdHksIHdlIG9ubHkgY2FyZSB0aGF0IHRoZSB3cml0ZSBlbmdpbmUgaXMgaW4KLQkJICogdGhl IHNldCBvZiByZWFkIGVuZ2luZXMuIFRoaXMgc2hvdWxkIGJlIGVuc3VyZWQgYnkgdGhlCi0JCSAq IG9yZGVyaW5nIG9mIHNldHRpbmcgbGFzdF9yZWFkL2xhc3Rfd3JpdGUgaW4KLQkJICogaTkxNV92 bWFfbW92ZV90b19hY3RpdmUoKSwgYW5kIHRoZW4gaW4gcmV2ZXJzZSBpbiByZXRpcmUuCi0JCSAq IEhvd2V2ZXIsIGZvciBnb29kIG1lYXN1cmUsIHdlIGFsd2F5cyByZXBvcnQgdGhlIGxhc3Rfd3Jp dGUKLQkJICogcmVxdWVzdCBhcyBhIGJ1c3kgcmVhZCBhcyB3ZWxsIGFzIGJlaW5nIGEgYnVzeSB3 cml0ZS4KLQkJICoKLQkJICogV2UgZG9uJ3QgY2FyZSB0aGF0IHRoZSBzZXQgb2YgYWN0aXZlIHJl YWQvd3JpdGUgZW5naW5lcwotCQkgKiBtYXkgY2hhbmdlIGR1cmluZyBjb25zdHJ1Y3Rpb24gb2Yg dGhlIHJlc3VsdCwgYXMgaXQgaXMKLQkJICogZXF1YWxseSBsaWFibGUgdG8gY2hhbmdlIGJlZm9y ZSB1c2Vyc3BhY2UgY2FuIGluc3BlY3QKLQkJICogdGhlIHJlc3VsdC4KLQkJICovCi0JCWFyZ3Mt PmJ1c3kgfD0gYnVzeV9jaGVja193cml0ZXIoJm9iai0+bGFzdF93cml0ZSk7CisJLyogQSBkaXNj cmVwYW5jeSBoZXJlIGlzIHRoYXQgd2UgZG8gbm90IHJlcG9ydCB0aGUgc3RhdHVzIG9mCisJICog bm9uLWk5MTUgZmVuY2VzLCBpLmUuIGV2ZW4gdGhvdWdoIHdlIG1heSByZXBvcnQgdGhlIG9iamVj dCBhcyBpZGxlLAorCSAqIGEgY2FsbCB0byBzZXQtZG9tYWluIG1heSBzdGlsbCBzdGFsbCB3YWl0 aW5nIGZvciBmb3JlaWduIHJlbmRlcmluZy4KKwkgKiBUaGlzIGFsc28gbWVhbnMgdGhhdCB3YWl0 LWlvY3RsIG1heSByZXBvcnQgYW4gb2JqZWN0IGFzIGJ1c3ksCisJICogd2hlcmUgYnVzeS1pb2N0 bCBjb25zaWRlcnMgaXQgaWRsZS4KKwkgKgorCSAqIFdlIHRyYWRlIHRoZSBhYmlsaXR5IHRvIHdh cm4gb2YgZm9yZWlnbiBmZW5jZXMgdG8gcmVwb3J0IG9uIHdoaWNoCisJICogaTkxNSBlbmdpbmVz IGFyZSBhY3RpdmUgZm9yIHRoZSBvYmplY3QuCisJICoKKwkgKiBBbHRlcm5hdGl2ZWx5LCB3ZSBj YW4gdHJhZGUgdGhhdCBleHRyYSBpbmZvcm1hdGlvbiBvbiByZWFkL3dyaXRlCisJICogYWN0aXZp dHkgd2l0aAorCSAqCWFyZ3MtPmJ1c3kgPQorCSAqCQkhcmVzZXJ2YXRpb25fb2JqZWN0X3Rlc3Rf c2lnbmFsZWRfcmN1KG9iai0+cmVzdiwgdHJ1ZSk7CisJICogdG8gcmVwb3J0IHRoZSBvdmVyYWxs IGJ1c3luZXNzLiBUaGlzIGlzIHdoYXQgdGhlIHdhaXQtaW9jdGwgZG9lcy4KKwkgKgorCSAqLwor cmV0cnk6CisJc2VxID0gcmF3X3JlYWRfc2VxY291bnQoJm9iai0+cmVzdi0+c2VxKTsKKworCS8q IFRyYW5zbGF0ZSB0aGUgZXhjbHVzaXZlIGZlbmNlIHRvIHRoZSBSRUFEICphbmQqIFdSSVRFIGVu Z2luZSAqLworCWFyZ3MtPmJ1c3kgPSBidXN5X2NoZWNrX3dyaXRlcihyY3VfZGVyZWZlcmVuY2Uo b2JqLT5yZXN2LT5mZW5jZV9leGNsKSk7CisKKwkvKiBUcmFuc2xhdGUgc2hhcmVkIGZlbmNlcyB0 byBSRUFEIHNldCBvZiBlbmdpbmVzICovCisJbGlzdCA9IHJjdV9kZXJlZmVyZW5jZShvYmotPnJl c3YtPmZlbmNlKTsKKwlpZiAobGlzdCkgeworCQl1bnNpZ25lZCBpbnQgc2hhcmVkX2NvdW50ID0g bGlzdC0+c2hhcmVkX2NvdW50LCBpOworCQlmb3IgKGkgPSAwOyBpIDwgc2hhcmVkX2NvdW50OyAr K2kpIHsKKwkJCXN0cnVjdCBmZW5jZSAqZmVuY2UgPSByY3VfZGVyZWZlcmVuY2UobGlzdC0+c2hh cmVkW2ldKTsKKwkJCWFyZ3MtPmJ1c3kgfD0gYnVzeV9jaGVja19yZWFkZXIoZmVuY2UpOworCQl9 CiAJfQogCisJaWYgKGFyZ3MtPmJ1c3kgJiYgcmVhZF9zZXFjb3VudF9yZXRyeSgmb2JqLT5yZXN2 LT5zZXEsIHNlcSkpCisJCWdvdG8gcmV0cnk7CisKKwllcnIgPSAwOwogb3V0OgogCXJjdV9yZWFk X3VubG9jaygpOwogCXJldHVybiBlcnI7CkBAIC00MTI4LDIyICs0MDE1LDE4IEBAIGVycjoKIHZv aWQgaTkxNV9nZW1fb2JqZWN0X2luaXQoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwK IAkJCSAgY29uc3Qgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Rfb3BzICpvcHMpCiB7Ci0JaW50 IGk7Ci0KIAltdXRleF9pbml0KCZvYmotPm1tLmxvY2spOwogCiAJSU5JVF9MSVNUX0hFQUQoJm9i ai0+Z2xvYmFsX2xpc3QpOwotCWZvciAoaSA9IDA7IGkgPCBJOTE1X05VTV9FTkdJTkVTOyBpKysp Ci0JCWluaXRfcmVxdWVzdF9hY3RpdmUoJm9iai0+bGFzdF9yZWFkW2ldLAotCQkJCSAgICBpOTE1 X2dlbV9vYmplY3RfcmV0aXJlX19yZWFkKTsKLQlpbml0X3JlcXVlc3RfYWN0aXZlKCZvYmotPmxh c3Rfd3JpdGUsCi0JCQkgICAgaTkxNV9nZW1fb2JqZWN0X3JldGlyZV9fd3JpdGUpOwogCUlOSVRf TElTVF9IRUFEKCZvYmotPm9ial9leGVjX2xpbmspOwogCUlOSVRfTElTVF9IRUFEKCZvYmotPnZt YV9saXN0KTsKIAlJTklUX0xJU1RfSEVBRCgmb2JqLT5iYXRjaF9wb29sX2xpbmspOwogCiAJb2Jq LT5vcHMgPSBvcHM7CiAKKwlyZXNlcnZhdGlvbl9vYmplY3RfaW5pdCgmb2JqLT5fX2J1aWx0aW5f cmVzdik7CisJb2JqLT5yZXN2ID0gJm9iai0+X19idWlsdGluX3Jlc3Y7CisKIAlvYmotPmZyb250 YnVmZmVyX2dndHRfb3JpZ2luID0gT1JJR0lOX0dUVDsKIAogCW9iai0+bW0ubWFkdiA9IEk5MTVf TUFEVl9XSUxMTkVFRDsKQEAgLTQyODEsNiArNDE2NCw3IEBAIHN0YXRpYyB2b2lkIF9faTkxNV9n ZW1fZnJlZV9vYmplY3RzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAogCQlpZiAob2Jq LT5iYXNlLmltcG9ydF9hdHRhY2gpCiAJCQlkcm1fcHJpbWVfZ2VtX2Rlc3Ryb3koJm9iai0+YmFz ZSwgTlVMTCk7CiAKKwkJcmVzZXJ2YXRpb25fb2JqZWN0X2ZpbmkoJm9iai0+X19idWlsdGluX3Jl c3YpOwogCQlkcm1fZ2VtX29iamVjdF9yZWxlYXNlKCZvYmotPmJhc2UpOwogCQlpOTE1X2dlbV9p bmZvX3JlbW92ZV9vYmooaTkxNSwgb2JqLT5iYXNlLnNpemUpOwogCmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9iYXRjaF9wb29sLmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbV9iYXRjaF9wb29sLmMKaW5kZXggNmI2NTY4MjJiYjNhLi4xNTlhODY4Yzdj ZDIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2JhdGNoX3Bvb2wu YworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9iYXRjaF9wb29sLmMKQEAgLTEx NCw4ICsxMTQsNyBAQCBpOTE1X2dlbV9iYXRjaF9wb29sX2dldChzdHJ1Y3QgaTkxNV9nZW1fYmF0 Y2hfcG9vbCAqcG9vbCwKIAogCWxpc3RfZm9yX2VhY2hfZW50cnkodG1wLCBsaXN0LCBiYXRjaF9w b29sX2xpbmspIHsKIAkJLyogVGhlIGJhdGNoZXMgYXJlIHN0cmljdGx5IExSVSBvcmRlcmVkICov Ci0JCWlmICghaTkxNV9nZW1fYWN0aXZlX2lzX2lkbGUoJnRtcC0+bGFzdF9yZWFkW3Bvb2wtPmVu Z2luZS0+aWRdLAotCQkJCQkgICAgICZ0bXAtPmJhc2UuZGV2LT5zdHJ1Y3RfbXV0ZXgpKQorCQlp ZiAoaTkxNV9nZW1fb2JqZWN0X2lzX2FjdGl2ZSh0bXApKQogCQkJYnJlYWs7CiAKIAkJaWYgKHRt cC0+YmFzZS5zaXplID49IHNpemUpIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtX2RtYWJ1Zi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZG1hYnVm LmMKaW5kZXggOTAyMzExMGNmMWNhLi45NjE0MWE2NTg2MTEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtX2RtYWJ1Zi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtX2RtYWJ1Zi5jCkBAIC0yMTEsNjAgKzIxMSwxNyBAQCBzdGF0aWMgY29uc3Qgc3Ry dWN0IGRtYV9idWZfb3BzIGk5MTVfZG1hYnVmX29wcyA9ICB7CiAJLmVuZF9jcHVfYWNjZXNzID0g aTkxNV9nZW1fZW5kX2NwdV9hY2Nlc3MsCiB9OwogCi1zdGF0aWMgdm9pZCBleHBvcnRfZmVuY2Vz KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCi0JCQkgIHN0cnVjdCBkbWFfYnVmICpk bWFfYnVmKQotewotCXN0cnVjdCByZXNlcnZhdGlvbl9vYmplY3QgKnJlc3YgPSBkbWFfYnVmLT5y ZXN2OwotCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxOwotCXVuc2lnbmVkIGxvbmcg YWN0aXZlOwotCWludCBpZHg7Ci0KLQlhY3RpdmUgPSBfX0k5MTVfQk9fQUNUSVZFKG9iaik7Ci0J aWYgKCFhY3RpdmUpCi0JCXJldHVybjsKLQotCS8qIFNlcmlhbGlzZSB3aXRoIGV4ZWNidWYgdG8g cHJldmVudCBjb25jdXJyZW50IGZlbmNlLWxvb3BzICovCi0JbXV0ZXhfbG9jaygmb2JqLT5iYXNl LmRldi0+c3RydWN0X211dGV4KTsKLQotCS8qIE1hcmsgdGhlIG9iamVjdCBmb3IgZnV0dXJlIGZl bmNlcyBiZWZvcmUgcmFjaWx5IGFkZGluZyBvbGQgZmVuY2VzICovCi0Jb2JqLT5iYXNlLmRtYV9i dWYgPSBkbWFfYnVmOwotCi0Jd3dfbXV0ZXhfbG9jaygmcmVzdi0+bG9jaywgTlVMTCk7Ci0KLQlm b3JfZWFjaF9hY3RpdmUoYWN0aXZlLCBpZHgpIHsKLQkJcmVxID0gaTkxNV9nZW1fYWN0aXZlX2dl dCgmb2JqLT5sYXN0X3JlYWRbaWR4XSwKLQkJCQkJICAmb2JqLT5iYXNlLmRldi0+c3RydWN0X211 dGV4KTsKLQkJaWYgKCFyZXEpCi0JCQljb250aW51ZTsKLQotCQlpZiAocmVzZXJ2YXRpb25fb2Jq ZWN0X3Jlc2VydmVfc2hhcmVkKHJlc3YpID09IDApCi0JCQlyZXNlcnZhdGlvbl9vYmplY3RfYWRk X3NoYXJlZF9mZW5jZShyZXN2LCAmcmVxLT5mZW5jZSk7Ci0KLQkJaTkxNV9nZW1fcmVxdWVzdF9w dXQocmVxKTsKLQl9Ci0KLQlyZXEgPSBpOTE1X2dlbV9hY3RpdmVfZ2V0KCZvYmotPmxhc3Rfd3Jp dGUsCi0JCQkJICAmb2JqLT5iYXNlLmRldi0+c3RydWN0X211dGV4KTsKLQlpZiAocmVxKSB7Ci0J CXJlc2VydmF0aW9uX29iamVjdF9hZGRfZXhjbF9mZW5jZShyZXN2LCAmcmVxLT5mZW5jZSk7Ci0J CWk5MTVfZ2VtX3JlcXVlc3RfcHV0KHJlcSk7Ci0JfQotCi0Jd3dfbXV0ZXhfdW5sb2NrKCZyZXN2 LT5sb2NrKTsKLQltdXRleF91bmxvY2soJm9iai0+YmFzZS5kZXYtPnN0cnVjdF9tdXRleCk7Ci19 Ci0KIHN0cnVjdCBkbWFfYnVmICppOTE1X2dlbV9wcmltZV9leHBvcnQoc3RydWN0IGRybV9kZXZp Y2UgKmRldiwKIAkJCQkgICAgICBzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKmdlbV9vYmosIGludCBm bGFncykKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqID0gdG9faW50ZWxfYm8o Z2VtX29iaik7CiAJREVGSU5FX0RNQV9CVUZfRVhQT1JUX0lORk8oZXhwX2luZm8pOwotCXN0cnVj dCBkbWFfYnVmICpkbWFfYnVmOwogCiAJZXhwX2luZm8ub3BzID0gJmk5MTVfZG1hYnVmX29wczsK IAlleHBfaW5mby5zaXplID0gZ2VtX29iai0+c2l6ZTsKIAlleHBfaW5mby5mbGFncyA9IGZsYWdz OwogCWV4cF9pbmZvLnByaXYgPSBnZW1fb2JqOworCWV4cF9pbmZvLnJlc3YgPSBvYmotPnJlc3Y7 CiAKIAlpZiAob2JqLT5vcHMtPmRtYWJ1Zl9leHBvcnQpIHsKIAkJaW50IHJldCA9IG9iai0+b3Bz LT5kbWFidWZfZXhwb3J0KG9iaik7CkBAIC0yNzIsMTIgKzIyOSw3IEBAIHN0cnVjdCBkbWFfYnVm ICppOTE1X2dlbV9wcmltZV9leHBvcnQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkJCXJldHVy biBFUlJfUFRSKHJldCk7CiAJfQogCi0JZG1hX2J1ZiA9IGRybV9nZW1fZG1hYnVmX2V4cG9ydChk ZXYsICZleHBfaW5mbyk7Ci0JaWYgKElTX0VSUihkbWFfYnVmKSkKLQkJcmV0dXJuIGRtYV9idWY7 Ci0KLQlleHBvcnRfZmVuY2VzKG9iaiwgZG1hX2J1Zik7Ci0JcmV0dXJuIGRtYV9idWY7CisJcmV0 dXJuIGRybV9nZW1fZG1hYnVmX2V4cG9ydChkZXYsICZleHBfaW5mbyk7CiB9CiAKIHN0YXRpYyBz dHJ1Y3Qgc2dfdGFibGUgKgpAQCAtMzM1LDYgKzI4Nyw3IEBAIHN0cnVjdCBkcm1fZ2VtX29iamVj dCAqaTkxNV9nZW1fcHJpbWVfaW1wb3J0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJZHJtX2dl bV9wcml2YXRlX29iamVjdF9pbml0KGRldiwgJm9iai0+YmFzZSwgZG1hX2J1Zi0+c2l6ZSk7CiAJ aTkxNV9nZW1fb2JqZWN0X2luaXQob2JqLCAmaTkxNV9nZW1fb2JqZWN0X2RtYWJ1Zl9vcHMpOwog CW9iai0+YmFzZS5pbXBvcnRfYXR0YWNoID0gYXR0YWNoOworCW9iai0+cmVzdiA9IGRtYV9idWYt PnJlc3Y7CiAKIAkvKiBXZSB1c2UgR1RUIGFzIHNob3J0aGFuZCBmb3IgYSBjb2hlcmVudCBkb21h aW4sIG9uZSB0aGF0IGlzCiAJICogbmVpdGhlciBpbiB0aGUgR1BVIGNhY2hlIG5vciBpbiB0aGUg Q1BVIGNhY2hlLCB3aGVyZSBhbGwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtX2RtYWJ1Zi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZG1hYnVmLmgK ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkxMzE1NTU3ZTQyMS4uMDAwMDAwMDAwMDAw Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2RtYWJ1Zi5oCisrKyAvZGV2L251 bGwKQEAgLTEsNDUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAyMDE2IEludGVsIENvcnBvcmF0 aW9uCi0gKgotICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2Us IHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKLSAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQg YXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCi0gKiB0byBk ZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91 dCBsaW1pdGF0aW9uCi0gKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwg cHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKLSAqIGFuZC9vciBzZWxsIGNvcGllcyBv ZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQotICogU29m dHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29u ZGl0aW9uczoKLSAqCi0gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJt aXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0Ci0gKiBwYXJhZ3JhcGgpIHNoYWxsIGJl IGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCi0g KiBTb2Z0d2FyZS4KLSAqCi0gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lU SE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgotICogSU1QTElFRCwgSU5DTFVE SU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFks Ci0gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5U LiAgSU4gTk8gRVZFTlQgU0hBTEwKLSAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJT IEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCi0gKiBMSUFCSUxJVFks IFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJ U0lORwotICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUg T1IgVEhFIFVTRSBPUiBPVEhFUgotICogREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgotICoKLSAq LwotCi0jaWZuZGVmIF9JOTE1X0dFTV9ETUFCVUZfSF8KLSNkZWZpbmUgX0k5MTVfR0VNX0RNQUJV Rl9IXwotCi0jaW5jbHVkZSA8bGludXgvZG1hLWJ1Zi5oPgotCi1zdGF0aWMgaW5saW5lIHN0cnVj dCByZXNlcnZhdGlvbl9vYmplY3QgKgotaTkxNV9nZW1fb2JqZWN0X2dldF9kbWFidWZfcmVzdihz dHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQotewotCXN0cnVjdCBkbWFfYnVmICpkbWFf YnVmOwotCi0JaWYgKG9iai0+YmFzZS5kbWFfYnVmKQotCQlkbWFfYnVmID0gb2JqLT5iYXNlLmRt YV9idWY7Ci0JZWxzZSBpZiAob2JqLT5iYXNlLmltcG9ydF9hdHRhY2gpCi0JCWRtYV9idWYgPSBv YmotPmJhc2UuaW1wb3J0X2F0dGFjaC0+ZG1hYnVmOwotCWVsc2UKLQkJcmV0dXJuIE5VTEw7Ci0K LQlyZXR1cm4gZG1hX2J1Zi0+cmVzdjsKLX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9leGVjYnVmZmVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2dlbV9leGVjYnVmZmVyLmMKaW5kZXggMDYyZTA5OGIwOTA5Li5iNDg2NWJjYzhhM2Ug MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYwor KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9leGVjYnVmZmVyLmMKQEAgLTM0LDcg KzM0LDYgQEAKICNpbmNsdWRlIDxkcm0vaTkxNV9kcm0uaD4KIAogI2luY2x1ZGUgImk5MTVfZHJ2 LmgiCi0jaW5jbHVkZSAiaTkxNV9nZW1fZG1hYnVmLmgiCiAjaW5jbHVkZSAiaTkxNV90cmFjZS5o IgogI2luY2x1ZGUgImludGVsX2Rydi5oIgogI2luY2x1ZGUgImludGVsX2Zyb250YnVmZmVyLmgi CkBAIC0zOTEsNiArMzkwLDExIEBAIHN0YXRpYyB2b2lkICpyZWxvY19rbWFwKHN0cnVjdCBkcm1f aTkxNV9nZW1fb2JqZWN0ICpvYmosCiAJCXVuc2lnbmVkIGludCBmbHVzaGVzOwogCQlpbnQgcmV0 OwogCisJCS8qIFdlIGNhbid0IHdhaXQgZm9yIHJlbmRlcmluZyB3aXRoIHBhZ2VmYXVsdHMgZGlz YWJsZWQgKi8KKwkJaWYgKHBhZ2VmYXVsdF9kaXNhYmxlZCgpICYmCisJCSAgICAhcmVzZXJ2YXRp b25fb2JqZWN0X3Rlc3Rfc2lnbmFsZWRfcmN1KG9iai0+cmVzdiwgdHJ1ZSkpCisJCQlyZXR1cm4g RVJSX1BUUigtRUZBVUxUKTsKKwogCQlyZXQgPSBpOTE1X2dlbV9vYmpfcHJlcGFyZV9zaG1lbV93 cml0ZShvYmosICZmbHVzaGVzKTsKIAkJaWYgKHJldCkKIAkJCXJldHVybiBFUlJfUFRSKHJldCk7 CkBAIC00MzcsNiArNDQxLDExIEBAIHN0YXRpYyB2b2lkICpyZWxvY19pb21hcChzdHJ1Y3QgZHJt X2k5MTVfZ2VtX29iamVjdCAqb2JqLAogCQlpZiAodXNlX2NwdV9yZWxvYyhvYmopKQogCQkJcmV0 dXJuIE5VTEw7CiAKKwkJLyogV2UgY2FuJ3Qgd2FpdCBmb3IgcmVuZGVyaW5nIHdpdGggcGFnZWZh dWx0cyBkaXNhYmxlZCAqLworCQlpZiAocGFnZWZhdWx0X2Rpc2FibGVkKCkgJiYKKwkJICAgICFy ZXNlcnZhdGlvbl9vYmplY3RfdGVzdF9zaWduYWxlZF9yY3Uob2JqLT5yZXN2LCB0cnVlKSkKKwkJ CXJldHVybiBFUlJfUFRSKC1FRkFVTFQpOworCiAJCXJldCA9IGk5MTVfZ2VtX29iamVjdF9zZXRf dG9fZ3R0X2RvbWFpbihvYmosIHRydWUpOwogCQlpZiAocmV0KQogCQkJcmV0dXJuIEVSUl9QVFIo cmV0KTsKQEAgLTU1MiwyMCArNTYxLDYgQEAgcmVwZWF0OgogCXJldHVybiAwOwogfQogCi1zdGF0 aWMgYm9vbCBvYmplY3RfaXNfaWRsZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQot ewotCXVuc2lnbmVkIGxvbmcgYWN0aXZlID0gaTkxNV9nZW1fb2JqZWN0X2dldF9hY3RpdmUob2Jq KTsKLQlpbnQgaWR4OwotCi0JZm9yX2VhY2hfYWN0aXZlKGFjdGl2ZSwgaWR4KSB7Ci0JCWlmICgh aTkxNV9nZW1fYWN0aXZlX2lzX2lkbGUoJm9iai0+bGFzdF9yZWFkW2lkeF0sCi0JCQkJCSAgICAg Jm9iai0+YmFzZS5kZXYtPnN0cnVjdF9tdXRleCkpCi0JCQlyZXR1cm4gZmFsc2U7Ci0JfQotCi0J cmV0dXJuIHRydWU7Ci19Ci0KIHN0YXRpYyBpbnQKIGk5MTVfZ2VtX2V4ZWNidWZmZXJfcmVsb2Nh dGVfZW50cnkoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKIAkJCQkgICBzdHJ1Y3Qg ZWJfdm1hcyAqZWIsCkBAIC02NDksMTAgKzY0NCw2IEBAIGk5MTVfZ2VtX2V4ZWNidWZmZXJfcmVs b2NhdGVfZW50cnkoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKIAkJcmV0dXJuIC1F SU5WQUw7CiAJfQogCi0JLyogV2UgY2FuJ3Qgd2FpdCBmb3IgcmVuZGVyaW5nIHdpdGggcGFnZWZh dWx0cyBkaXNhYmxlZCAqLwotCWlmIChwYWdlZmF1bHRfZGlzYWJsZWQoKSAmJiAhb2JqZWN0X2lz X2lkbGUob2JqKSkKLQkJcmV0dXJuIC1FRkFVTFQ7Ci0KIAlyZXQgPSByZWxvY2F0ZV9lbnRyeShv YmosIHJlbG9jLCBjYWNoZSwgdGFyZ2V0X29mZnNldCk7CiAJaWYgKHJldCkKIAkJcmV0dXJuIHJl dDsKQEAgLTExMTEsNDQgKzExMDIsMjAgQEAgZXJyOgogCXJldHVybiByZXQ7CiB9CiAKLXN0YXRp YyB1bnNpZ25lZCBpbnQgZWJfb3RoZXJfZW5naW5lcyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVl c3QgKnJlcSkKLXsKLQl1bnNpZ25lZCBpbnQgbWFzazsKLQotCW1hc2sgPSB+aW50ZWxfZW5naW5l X2ZsYWcocmVxLT5lbmdpbmUpICYgSTkxNV9CT19BQ1RJVkVfTUFTSzsKLQltYXNrIDw8PSBJOTE1 X0JPX0FDVElWRV9TSElGVDsKLQotCXJldHVybiBtYXNrOwotfQotCiBzdGF0aWMgaW50CiBpOTE1 X2dlbV9leGVjYnVmZmVyX21vdmVfdG9fZ3B1KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAq cmVxLAogCQkJCXN0cnVjdCBsaXN0X2hlYWQgKnZtYXMpCiB7Ci0JY29uc3QgdW5zaWduZWQgaW50 IG90aGVyX3JpbmdzID0gZWJfb3RoZXJfZW5naW5lcyhyZXEpOwogCXN0cnVjdCBpOTE1X3ZtYSAq dm1hOwogCWludCByZXQ7CiAKIAlsaXN0X2Zvcl9lYWNoX2VudHJ5KHZtYSwgdm1hcywgZXhlY19s aXN0KSB7CiAJCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmogPSB2bWEtPm9iajsKLQkJ c3RydWN0IHJlc2VydmF0aW9uX29iamVjdCAqcmVzdjsKIAotCQlpZiAob2JqLT5mbGFncyAmIG90 aGVyX3JpbmdzKSB7Ci0JCQlyZXQgPSBpOTE1X2dlbV9yZXF1ZXN0X2F3YWl0X29iamVjdAotCQkJ CShyZXEsIG9iaiwgb2JqLT5iYXNlLnBlbmRpbmdfd3JpdGVfZG9tYWluKTsKLQkJCWlmIChyZXQp Ci0JCQkJcmV0dXJuIHJldDsKLQkJfQotCi0JCXJlc3YgPSBpOTE1X2dlbV9vYmplY3RfZ2V0X2Rt YWJ1Zl9yZXN2KG9iaik7Ci0JCWlmIChyZXN2KSB7Ci0JCQlyZXQgPSBpOTE1X3N3X2ZlbmNlX2F3 YWl0X3Jlc2VydmF0aW9uCi0JCQkJKCZyZXEtPnN1Ym1pdCwgcmVzdiwgJmk5MTVfZmVuY2Vfb3Bz LAotCQkJCSBvYmotPmJhc2UucGVuZGluZ193cml0ZV9kb21haW4sIDEwKkhaLAotCQkJCSBHRlBf S0VSTkVMIHwgX19HRlBfTk9XQVJOKTsKLQkJCWlmIChyZXQgPCAwKQotCQkJCXJldHVybiByZXQ7 Ci0JCX0KKwkJcmV0ID0gaTkxNV9nZW1fcmVxdWVzdF9hd2FpdF9vYmplY3QKKwkJCShyZXEsIG9i aiwgb2JqLT5iYXNlLnBlbmRpbmdfd3JpdGVfZG9tYWluKTsKKwkJaWYgKHJldCkKKwkJCXJldHVy biByZXQ7CiAKIAkJaWYgKG9iai0+YmFzZS53cml0ZV9kb21haW4gJiBJOTE1X0dFTV9ET01BSU5f Q1BVKQogCQkJaTkxNV9nZW1fY2xmbHVzaF9vYmplY3Qob2JqLCBmYWxzZSk7CkBAIC0xMjkwLDgg KzEyNTcsNiBAQCB2b2lkIGk5MTVfdm1hX21vdmVfdG9fYWN0aXZlKHN0cnVjdCBpOTE1X3ZtYSAq dm1hLAogCiAJR0VNX0JVR19PTighZHJtX21tX25vZGVfYWxsb2NhdGVkKCZ2bWEtPm5vZGUpKTsK IAotCW9iai0+bW0uZGlydHkgPSB0cnVlOyAvKiBiZSBwYXJhbm9pZCAgKi8KLQogCS8qIEFkZCBh IHJlZmVyZW5jZSBpZiB3ZSdyZSBuZXdseSBlbnRlcmluZyB0aGUgYWN0aXZlIGxpc3QuCiAJICog VGhlIG9yZGVyIGluIHdoaWNoIHdlIGFkZCBvcGVyYXRpb25zIHRvIHRoZSByZXRpcmVtZW50IHF1 ZXVlIGlzCiAJICogdml0YWwgaGVyZTogbWFya19hY3RpdmUgYWRkcyB0byB0aGUgc3RhcnQgb2Yg dGhlIGNhbGxiYWNrIGxpc3QsCkBAIC0xMjk5LDExICsxMjY0LDE0IEBAIHZvaWQgaTkxNV92bWFf bW92ZV90b19hY3RpdmUoc3RydWN0IGk5MTVfdm1hICp2bWEsCiAJICogYWRkIHRoZSBhY3RpdmUg cmVmZXJlbmNlIGZpcnN0IGFuZCBxdWV1ZSBmb3IgaXQgdG8gYmUgZHJvcHBlZAogCSAqICpsYXN0 Ki4KIAkgKi8KLQlpOTE1X2dlbV9vYmplY3Rfc2V0X2FjdGl2ZShvYmosIGlkeCk7Ci0JaTkxNV9n ZW1fYWN0aXZlX3NldCgmb2JqLT5sYXN0X3JlYWRbaWR4XSwgcmVxKTsKKwlpZiAoIWk5MTVfdm1h X2lzX2FjdGl2ZSh2bWEpKQorCQlvYmotPmFjdGl2ZV9jb3VudCsrOworCWk5MTVfdm1hX3NldF9h Y3RpdmUodm1hLCBpZHgpOworCWk5MTVfZ2VtX2FjdGl2ZV9zZXQoJnZtYS0+bGFzdF9yZWFkW2lk eF0sIHJlcSk7CisJbGlzdF9tb3ZlX3RhaWwoJnZtYS0+dm1fbGluaywgJnZtYS0+dm0tPmFjdGl2 ZV9saXN0KTsKIAogCWlmIChmbGFncyAmIEVYRUNfT0JKRUNUX1dSSVRFKSB7Ci0JCWk5MTVfZ2Vt X2FjdGl2ZV9zZXQoJm9iai0+bGFzdF93cml0ZSwgcmVxKTsKKwkJaTkxNV9nZW1fYWN0aXZlX3Nl dCgmdm1hLT5sYXN0X3dyaXRlLCByZXEpOwogCiAJCWludGVsX2ZiX29ial9pbnZhbGlkYXRlKG9i aiwgT1JJR0lOX0NTKTsKIApAQCAtMTMxMywyMSArMTI4MSwxMyBAQCB2b2lkIGk5MTVfdm1hX21v dmVfdG9fYWN0aXZlKHN0cnVjdCBpOTE1X3ZtYSAqdm1hLAogCiAJaWYgKGZsYWdzICYgRVhFQ19P QkpFQ1RfTkVFRFNfRkVOQ0UpCiAJCWk5MTVfZ2VtX2FjdGl2ZV9zZXQoJnZtYS0+bGFzdF9mZW5j ZSwgcmVxKTsKLQotCWk5MTVfdm1hX3NldF9hY3RpdmUodm1hLCBpZHgpOwotCWk5MTVfZ2VtX2Fj dGl2ZV9zZXQoJnZtYS0+bGFzdF9yZWFkW2lkeF0sIHJlcSk7Ci0JbGlzdF9tb3ZlX3RhaWwoJnZt YS0+dm1fbGluaywgJnZtYS0+dm0tPmFjdGl2ZV9saXN0KTsKIH0KIAogc3RhdGljIHZvaWQgZWJf ZXhwb3J0X2ZlbmNlKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCiAJCQkgICAgc3Ry dWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCiAJCQkgICAgdW5zaWduZWQgaW50IGZsYWdz KQogewotCXN0cnVjdCByZXNlcnZhdGlvbl9vYmplY3QgKnJlc3Y7Ci0KLQlyZXN2ID0gaTkxNV9n ZW1fb2JqZWN0X2dldF9kbWFidWZfcmVzdihvYmopOwotCWlmICghcmVzdikKLQkJcmV0dXJuOwor CXN0cnVjdCByZXNlcnZhdGlvbl9vYmplY3QgKnJlc3YgPSBvYmotPnJlc3Y7CiAKIAkvKiBJZ25v cmUgZXJyb3JzIGZyb20gZmFpbGluZyB0byBhbGxvY2F0ZSB0aGUgbmV3IGZlbmNlLCB3ZSBjYW4n dAogCSAqIGhhbmRsZSBhbiBlcnJvciByaWdodCBub3cuIFdvcnN0IGNhc2Ugc2hvdWxkIGJlIG1p c3NlZApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYwppbmRleCA1NzgwMjY1ODRmNDIuLjgw NjY5NzE5YjQ0YiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0 LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMKQEAgLTMxLDYgKzMx LDcgQEAKICNpbmNsdWRlICJpOTE1X3ZncHUuaCIKICNpbmNsdWRlICJpOTE1X3RyYWNlLmgiCiAj aW5jbHVkZSAiaW50ZWxfZHJ2LmgiCisjaW5jbHVkZSAiaW50ZWxfZnJvbnRidWZmZXIuaCIKIAog I2RlZmluZSBJOTE1X0dGUF9ETUEgKEdGUF9LRVJORUwgfCBfX0dGUF9ISUdITUVNKQogCkBAIC0z MzIxLDYgKzMzMjIsNyBAQCBpOTE1X3ZtYV9yZXRpcmUoc3RydWN0IGk5MTVfZ2VtX2FjdGl2ZSAq YWN0aXZlLAogCWNvbnN0IHVuc2lnbmVkIGludCBpZHggPSBycS0+ZW5naW5lLT5pZDsKIAlzdHJ1 Y3QgaTkxNV92bWEgKnZtYSA9CiAJCWNvbnRhaW5lcl9vZihhY3RpdmUsIHN0cnVjdCBpOTE1X3Zt YSwgbGFzdF9yZWFkW2lkeF0pOworCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmogPSB2 bWEtPm9iajsKIAogCUdFTV9CVUdfT04oIWk5MTVfdm1hX2hhc19hY3RpdmVfZW5naW5lKHZtYSwg aWR4KSk7CiAKQEAgLTMzMzEsNiArMzMzMywzNCBAQCBpOTE1X3ZtYV9yZXRpcmUoc3RydWN0IGk5 MTVfZ2VtX2FjdGl2ZSAqYWN0aXZlLAogCWxpc3RfbW92ZV90YWlsKCZ2bWEtPnZtX2xpbmssICZ2 bWEtPnZtLT5pbmFjdGl2ZV9saXN0KTsKIAlpZiAodW5saWtlbHkoaTkxNV92bWFfaXNfY2xvc2Vk KHZtYSkgJiYgIWk5MTVfdm1hX2lzX3Bpbm5lZCh2bWEpKSkKIAkJV0FSTl9PTihpOTE1X3ZtYV91 bmJpbmQodm1hKSk7CisKKwlHRU1fQlVHX09OKCFpOTE1X2dlbV9vYmplY3RfaXNfYWN0aXZlKG9i aikpOworCWlmICgtLW9iai0+YWN0aXZlX2NvdW50KQorCQlyZXR1cm47CisKKwkvKiBCdW1wIG91 ciBwbGFjZSBvbiB0aGUgYm91bmQgbGlzdCB0byBrZWVwIGl0IHJvdWdobHkgaW4gTFJVIG9yZGVy CisJICogc28gdGhhdCB3ZSBkb24ndCBzdGVhbCBmcm9tIHJlY2VudGx5IHVzZWQgYnV0IGluYWN0 aXZlIG9iamVjdHMKKwkgKiAodW5sZXNzIHdlIGFyZSBmb3JjZWQgdG8gb2ZjISkKKwkgKi8KKwlp ZiAob2JqLT5iaW5kX2NvdW50KQorCQlsaXN0X21vdmVfdGFpbCgmb2JqLT5nbG9iYWxfbGlzdCwg JnJxLT5pOTE1LT5tbS5ib3VuZF9saXN0KTsKKworCW9iai0+bW0uZGlydHkgPSB0cnVlOyAvKiBi ZSBwYXJhbm9pZCAgKi8KKworCWlmIChpOTE1X2dlbV9vYmplY3RfaGFzX2FjdGl2ZV9yZWZlcmVu Y2Uob2JqKSkgeworCQlpOTE1X2dlbV9vYmplY3RfY2xlYXJfYWN0aXZlX3JlZmVyZW5jZShvYmop OworCQlpOTE1X2dlbV9vYmplY3RfcHV0KG9iaik7CisJfQorfQorCitzdGF0aWMgdm9pZAoraTkx NV9nZ3R0X3JldGlyZV9fd3JpdGUoc3RydWN0IGk5MTVfZ2VtX2FjdGl2ZSAqYWN0aXZlLAorCQkJ c3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0KQoreworCXN0cnVjdCBpOTE1X3Zt YSAqdm1hID0KKwkJY29udGFpbmVyX29mKGFjdGl2ZSwgc3RydWN0IGk5MTVfdm1hLCBsYXN0X3dy aXRlKTsKKworCWludGVsX2ZiX29ial9mbHVzaCh2bWEtPm9iaiwgdHJ1ZSwgT1JJR0lOX0NTKTsK IH0KIAogdm9pZCBpOTE1X3ZtYV9kZXN0cm95KHN0cnVjdCBpOTE1X3ZtYSAqdm1hKQpAQCAtMzM3 NCw2ICszNDA0LDggQEAgX19pOTE1X3ZtYV9jcmVhdGUoc3RydWN0IGRybV9pOTE1X2dlbV9vYmpl Y3QgKm9iaiwKIAlJTklUX0xJU1RfSEVBRCgmdm1hLT5leGVjX2xpc3QpOwogCWZvciAoaSA9IDA7 IGkgPCBBUlJBWV9TSVpFKHZtYS0+bGFzdF9yZWFkKTsgaSsrKQogCQlpbml0X3JlcXVlc3RfYWN0 aXZlKCZ2bWEtPmxhc3RfcmVhZFtpXSwgaTkxNV92bWFfcmV0aXJlKTsKKwlpbml0X3JlcXVlc3Rf YWN0aXZlKCZ2bWEtPmxhc3Rfd3JpdGUsCisJCQkgICAgaTkxNV9pc19nZ3R0KHZtKSA/IGk5MTVf Z2d0dF9yZXRpcmVfX3dyaXRlIDogTlVMTCk7CiAJaW5pdF9yZXF1ZXN0X2FjdGl2ZSgmdm1hLT5s YXN0X2ZlbmNlLCBOVUxMKTsKIAlsaXN0X2FkZCgmdm1hLT52bV9saW5rLCAmdm0tPnVuYm91bmRf bGlzdCk7CiAJdm1hLT52bSA9IHZtOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW1fZ3R0LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuaAppbmRl eCBjMzQ5NDVmMjEzMjMuLjczN2I4ZDhmMjFiNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW1fZ3R0LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1f Z3R0LmgKQEAgLTIxMSw2ICsyMTEsNyBAQCBzdHJ1Y3QgaTkxNV92bWEgewogCiAJdW5zaWduZWQg aW50IGFjdGl2ZTsKIAlzdHJ1Y3QgaTkxNV9nZW1fYWN0aXZlIGxhc3RfcmVhZFtJOTE1X05VTV9F TkdJTkVTXTsKKwlzdHJ1Y3QgaTkxNV9nZW1fYWN0aXZlIGxhc3Rfd3JpdGU7CiAJc3RydWN0IGk5 MTVfZ2VtX2FjdGl2ZSBsYXN0X2ZlbmNlOwogCiAJLyoqCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbV9yZXF1ZXN0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbV9yZXF1ZXN0LmMKaW5kZXggNWFkOTkwYWRkMTRkLi5lODI3OGIwNTA3NGIgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlcXVlc3QuYworKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZXF1ZXN0LmMKQEAgLTE5Niw2ICsxOTYsOCBAQCBzdGF0 aWMgdm9pZCBpOTE1X2dlbV9yZXF1ZXN0X3JldGlyZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVl c3QgKnJlcXVlc3QpCiAJfQogCiAJaTkxNV9nZW1fY29udGV4dF9wdXQocmVxdWVzdC0+Y3R4KTsK KworCWZlbmNlX3NpZ25hbCgmcmVxdWVzdC0+ZmVuY2UpOwogCWk5MTVfZ2VtX3JlcXVlc3RfcHV0 KHJlcXVlc3QpOwogfQogCkBAIC01NDQsMzMgKzU0Niw0MSBAQCBpOTE1X2dlbV9yZXF1ZXN0X2F3 YWl0X29iamVjdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnRvLAogCQkJICAgICAgc3Ry dWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKIAkJCSAgICAgIGJvb2wgd3JpdGUpCiB7Ci0J c3RydWN0IGk5MTVfZ2VtX2FjdGl2ZSAqYWN0aXZlOwotCXVuc2lnbmVkIGxvbmcgYWN0aXZlX21h c2s7Ci0JaW50IGlkeDsKKwlzdHJ1Y3QgZmVuY2UgKmV4Y2w7CisJaW50IHJldCA9IDA7CiAKIAlp ZiAod3JpdGUpIHsKLQkJYWN0aXZlX21hc2sgPSBpOTE1X2dlbV9vYmplY3RfZ2V0X2FjdGl2ZShv YmopOwotCQlhY3RpdmUgPSBvYmotPmxhc3RfcmVhZDsKKwkJc3RydWN0IGZlbmNlICoqc2hhcmVk OworCQl1bnNpZ25lZCBpbnQgY291bnQsIGk7CisKKwkJcmV0ID0gcmVzZXJ2YXRpb25fb2JqZWN0 X2dldF9mZW5jZXNfcmN1KG9iai0+cmVzdiwKKwkJCQkJCQkmZXhjbCwgJmNvdW50LCAmc2hhcmVk KTsKKwkJaWYgKHJldCkKKwkJCXJldHVybiByZXQ7CisKKwkJZm9yIChpID0gMDsgaSA8IGNvdW50 OyBpKyspIHsKKwkJCXJldCA9IGk5MTVfZ2VtX3JlcXVlc3RfYXdhaXRfZmVuY2UodG8sIHNoYXJl ZFtpXSk7CisJCQlpZiAocmV0KQorCQkJCWJyZWFrOworCisJCQlmZW5jZV9wdXQoc2hhcmVkW2ld KTsKKwkJfQorCisJCWZvciAoOyBpIDwgY291bnQ7IGkrKykKKwkJCWZlbmNlX3B1dChzaGFyZWRb aV0pOworCQlrZnJlZShzaGFyZWQpOwogCX0gZWxzZSB7Ci0JCWFjdGl2ZV9tYXNrID0gMTsKLQkJ YWN0aXZlID0gJm9iai0+bGFzdF93cml0ZTsKKwkJZXhjbCA9IHJlc2VydmF0aW9uX29iamVjdF9n ZXRfZXhjbF9yY3Uob2JqLT5yZXN2KTsKIAl9CiAKLQlmb3JfZWFjaF9hY3RpdmUoYWN0aXZlX21h c2ssIGlkeCkgewotCQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3Q7Ci0JCWlu dCByZXQ7Ci0KLQkJcmVxdWVzdCA9IGk5MTVfZ2VtX2FjdGl2ZV9wZWVrKCZhY3RpdmVbaWR4XSwK LQkJCQkJICAgICAgICZvYmotPmJhc2UuZGV2LT5zdHJ1Y3RfbXV0ZXgpOwotCQlpZiAoIXJlcXVl c3QpCi0JCQljb250aW51ZTsKKwlpZiAoZXhjbCkgeworCQlpZiAocmV0ID09IDApCisJCQlyZXQg PSBpOTE1X2dlbV9yZXF1ZXN0X2F3YWl0X2ZlbmNlKHRvLCBleGNsKTsKIAotCQlyZXQgPSBpOTE1 X2dlbV9yZXF1ZXN0X2F3YWl0X3JlcXVlc3QodG8sIHJlcXVlc3QpOwotCQlpZiAocmV0KQotCQkJ cmV0dXJuIHJldDsKKwkJZmVuY2VfcHV0KGV4Y2wpOwogCX0KIAotCXJldHVybiAwOworCXJldHVy biByZXQ7CiB9CiAKIHN0YXRpYyB2b2lkIGk5MTVfZ2VtX21hcmtfYnVzeShjb25zdCBzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICplbmdpbmUpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2dlbV9yZXF1ZXN0LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZXF1 ZXN0LmgKaW5kZXggNDU5OThlZWRkYTJjLi5iOGZlZmY1ODU3YTAgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlcXVlc3QuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbV9yZXF1ZXN0LmgKQEAgLTE0Nyw3ICsxNDcsNyBAQCBzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX3JlcXVlc3QgewogCiBleHRlcm4gY29uc3Qgc3RydWN0IGZlbmNlX29wcyBpOTE1X2Zl bmNlX29wczsKIAotc3RhdGljIGlubGluZSBib29sIGZlbmNlX2lzX2k5MTUoc3RydWN0IGZlbmNl ICpmZW5jZSkKK3N0YXRpYyBpbmxpbmUgYm9vbCBmZW5jZV9pc19pOTE1KGNvbnN0IHN0cnVjdCBm ZW5jZSAqZmVuY2UpCiB7CiAJcmV0dXJuIGZlbmNlLT5vcHMgPT0gJmk5MTVfZmVuY2Vfb3BzOwog fQpAQCAtNTU0LDIyICs1NTQsNyBAQCBpOTE1X2dlbV9hY3RpdmVfaXNzZXQoY29uc3Qgc3RydWN0 IGk5MTVfZ2VtX2FjdGl2ZSAqYWN0aXZlKQogfQogCiAvKioKLSAqIGk5MTVfZ2VtX2FjdGl2ZV9p c19pZGxlIC0gcmVwb3J0IHdoZXRoZXIgdGhlIGFjdGl2ZSB0cmFja2VyIGlzIGlkbGUKLSAqIEBh Y3RpdmUgLSB0aGUgYWN0aXZlIHRyYWNrZXIKLSAqCi0gKiBpOTE1X2dlbV9hY3RpdmVfaXNfaWRs ZSgpIHJldHVybnMgdHJ1ZSBpZiB0aGUgYWN0aXZlIHRyYWNrZXIgaXMgY3VycmVudGx5Ci0gKiB1 bmFzc2lnbmVkIG9yIGlmIHRoZSByZXF1ZXN0IGlzIGNvbXBsZXRlIChidXQgbm90IHlldCByZXRp cmVkKS4gUmVxdWlyZXMKLSAqIHRoZSBjYWxsZXIgdG8gaG9sZCBzdHJ1Y3RfbXV0ZXggKGJ1dCB0 aGF0IGNhbiBiZSByZWxheGVkIGlmIGRlc2lyZWQpLgotICovCi1zdGF0aWMgaW5saW5lIGJvb2wK LWk5MTVfZ2VtX2FjdGl2ZV9pc19pZGxlKGNvbnN0IHN0cnVjdCBpOTE1X2dlbV9hY3RpdmUgKmFj dGl2ZSwKLQkJCXN0cnVjdCBtdXRleCAqbXV0ZXgpCi17Ci0JcmV0dXJuICFpOTE1X2dlbV9hY3Rp dmVfcGVlayhhY3RpdmUsIG11dGV4KTsKLX0KLQotLyoqCi0gKiBpOTE1X2dlbV9hY3RpdmVfd2Fp dC0gd2FpdHMgdW50aWwgdGhlIHJlcXVlc3QgaXMgY29tcGxldGVkCisgKiBpOTE1X2dlbV9hY3Rp dmVfd2FpdCAtIHdhaXRzIHVudGlsIHRoZSByZXF1ZXN0IGlzIGNvbXBsZXRlZAogICogQGFjdGl2 ZSAtIHRoZSBhY3RpdmUgcmVxdWVzdCBvbiB3aGljaCB0byB3YWl0CiAgKiBAZmxhZ3MgLSBob3cg dG8gd2FpdAogICogQHRpbWVvdXQgLSBob3cgbG9uZyB0byB3YWl0IGF0IG1vc3QKQEAgLTYzOSwy NCArNjI0LDYgQEAgaTkxNV9nZW1fYWN0aXZlX3JldGlyZShzdHJ1Y3QgaTkxNV9nZW1fYWN0aXZl ICphY3RpdmUsCiAJcmV0dXJuIDA7CiB9CiAKLS8qIENvbnZlbmllbmNlIGZ1bmN0aW9ucyBmb3Ig cGVla2luZyBhdCBzdGF0ZSBpbnNpZGUgYWN0aXZlJ3MgcmVxdWVzdCB3aGlsc3QKLSAqIGd1YXJk ZWQgYnkgdGhlIHN0cnVjdF9tdXRleC4KLSAqLwotCi1zdGF0aWMgaW5saW5lIHVpbnQzMl90Ci1p OTE1X2dlbV9hY3RpdmVfZ2V0X3NlcW5vKGNvbnN0IHN0cnVjdCBpOTE1X2dlbV9hY3RpdmUgKmFj dGl2ZSwKLQkJCSAgc3RydWN0IG11dGV4ICptdXRleCkKLXsKLQlyZXR1cm4gaTkxNV9nZW1fcmVx dWVzdF9nZXRfc2Vxbm8oaTkxNV9nZW1fYWN0aXZlX3BlZWsoYWN0aXZlLCBtdXRleCkpOwotfQot Ci1zdGF0aWMgaW5saW5lIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKgotaTkxNV9nZW1fYWN0aXZl X2dldF9lbmdpbmUoY29uc3Qgc3RydWN0IGk5MTVfZ2VtX2FjdGl2ZSAqYWN0aXZlLAotCQkJICAg c3RydWN0IG11dGV4ICptdXRleCkKLXsKLQlyZXR1cm4gaTkxNV9nZW1fcmVxdWVzdF9nZXRfZW5n aW5lKGk5MTVfZ2VtX2FjdGl2ZV9wZWVrKGFjdGl2ZSwgbXV0ZXgpKTsKLX0KLQogI2RlZmluZSBm b3JfZWFjaF9hY3RpdmUobWFzaywgaWR4KSBcCiAJZm9yICg7IG1hc2sgPyBpZHggPSBmZnMobWFz aykgLSAxLCAxIDogMDsgbWFzayAmPSB+QklUKGlkeCkpCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dwdV9lcnJvci5jCmluZGV4IDYyOGQ1Y2RmOTIwMC4uZjRhZDRhMzA4OGRmIDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5jCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMKQEAgLTg3Miw5ICs4NzIsOSBAQCBzdGF0aWMgdm9p ZCBjYXB0dXJlX2JvKHN0cnVjdCBkcm1faTkxNV9lcnJvcl9idWZmZXIgKmVyciwKIAllcnItPm5h bWUgPSBvYmotPmJhc2UubmFtZTsKIAogCWZvciAoaSA9IDA7IGkgPCBJOTE1X05VTV9FTkdJTkVT OyBpKyspCi0JCWVyci0+cnNlcW5vW2ldID0gX19hY3RpdmVfZ2V0X3NlcW5vKCZvYmotPmxhc3Rf cmVhZFtpXSk7Ci0JZXJyLT53c2Vxbm8gPSBfX2FjdGl2ZV9nZXRfc2Vxbm8oJm9iai0+bGFzdF93 cml0ZSk7Ci0JZXJyLT5lbmdpbmUgPSBfX2FjdGl2ZV9nZXRfZW5naW5lX2lkKCZvYmotPmxhc3Rf d3JpdGUpOworCQllcnItPnJzZXFub1tpXSA9IF9fYWN0aXZlX2dldF9zZXFubygmdm1hLT5sYXN0 X3JlYWRbaV0pOworCWVyci0+d3NlcW5vID0gX19hY3RpdmVfZ2V0X3NlcW5vKCZ2bWEtPmxhc3Rf d3JpdGUpOworCWVyci0+ZW5naW5lID0gX19hY3RpdmVfZ2V0X2VuZ2luZV9pZCgmdm1hLT5sYXN0 X3dyaXRlKTsKIAogCWVyci0+Z3R0X29mZnNldCA9IHZtYS0+bm9kZS5zdGFydDsKIAllcnItPnJl YWRfZG9tYWlucyA9IG9iai0+YmFzZS5yZWFkX2RvbWFpbnM7CmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9hdG9taWNfcGxhbmUuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2F0b21pY19wbGFuZS5jCmluZGV4IGI4MmRlMzA3MmQ0Zi4uYTg5Mjc5MjljNzQwIDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdG9taWNfcGxhbmUuYworKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdG9taWNfcGxhbmUuYwpAQCAtODQsNyArODQs NiBAQCBpbnRlbF9wbGFuZV9kdXBsaWNhdGVfc3RhdGUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUp CiAJc3RhdGUgPSAmaW50ZWxfc3RhdGUtPmJhc2U7CiAKIAlfX2RybV9hdG9taWNfaGVscGVyX3Bs YW5lX2R1cGxpY2F0ZV9zdGF0ZShwbGFuZSwgc3RhdGUpOwotCWludGVsX3N0YXRlLT53YWl0X3Jl cSA9IE5VTEw7CiAKIAlyZXR1cm4gc3RhdGU7CiB9CkBAIC0xMDEsNyArMTAwLDYgQEAgdm9pZAog aW50ZWxfcGxhbmVfZGVzdHJveV9zdGF0ZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKIAkJCSAg c3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqc3RhdGUpCiB7Ci0JV0FSTl9PTihzdGF0ZSAmJiB0b19p bnRlbF9wbGFuZV9zdGF0ZShzdGF0ZSktPndhaXRfcmVxKTsKIAlkcm1fYXRvbWljX2hlbHBlcl9w bGFuZV9kZXN0cm95X3N0YXRlKHBsYW5lLCBzdGF0ZSk7CiB9CiAKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2Rpc3BsYXkuYwppbmRleCA4YmVlYzBiNjUxY2QuLjk1Zjk3MmIxNThlYSAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwpAQCAtMzcsNyArMzcsNiBAQAogI2luY2x1ZGUgImlu dGVsX2Zyb250YnVmZmVyLmgiCiAjaW5jbHVkZSA8ZHJtL2k5MTVfZHJtLmg+CiAjaW5jbHVkZSAi aTkxNV9kcnYuaCIKLSNpbmNsdWRlICJpOTE1X2dlbV9kbWFidWYuaCIKICNpbmNsdWRlICJpbnRl bF9kc2kuaCIKICNpbmNsdWRlICJpOTE1X3RyYWNlLmgiCiAjaW5jbHVkZSA8ZHJtL2RybV9hdG9t aWMuaD4KQEAgLTExOTM3LDggKzExOTM2LDYgQEAgc3RhdGljIGludCBpbnRlbF9nZW43X3F1ZXVl X2ZsaXAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIHN0YXRpYyBib29sIHVzZV9tbWlvX2ZsaXAo c3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAogCQkJICBzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X29iamVjdCAqb2JqKQogewotCXN0cnVjdCByZXNlcnZhdGlvbl9vYmplY3QgKnJlc3Y7Ci0KIAkv KgogCSAqIFRoaXMgaXMgbm90IGJlaW5nIHVzZWQgZm9yIG9sZGVyIHBsYXRmb3JtcywgYmVjYXVz ZQogCSAqIG5vbi1hdmFpbGFiaWxpdHkgb2YgZmxpcCBkb25lIGludGVycnVwdCBmb3JjZXMgdXMg dG8gdXNlCkBAIC0xMTk2MCwxMiArMTE5NTcsNyBAQCBzdGF0aWMgYm9vbCB1c2VfbW1pb19mbGlw KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKIAllbHNlIGlmIChpOTE1LmVuYWJsZV9l eGVjbGlzdHMpCiAJCXJldHVybiB0cnVlOwogCi0JcmVzdiA9IGk5MTVfZ2VtX29iamVjdF9nZXRf ZG1hYnVmX3Jlc3Yob2JqKTsKLQlpZiAocmVzdiAmJiAhcmVzZXJ2YXRpb25fb2JqZWN0X3Rlc3Rf c2lnbmFsZWRfcmN1KHJlc3YsIGZhbHNlKSkKLQkJcmV0dXJuIHRydWU7Ci0KLQlyZXR1cm4gZW5n aW5lICE9IGk5MTVfZ2VtX2FjdGl2ZV9nZXRfZW5naW5lKCZvYmotPmxhc3Rfd3JpdGUsCi0JCQkJ CQkgICAgJm9iai0+YmFzZS5kZXYtPnN0cnVjdF9tdXRleCk7CisJcmV0dXJuIGVuZ2luZSAhPSBp OTE1X2dlbV9vYmplY3RfbGFzdF93cml0ZV9lbmdpbmUob2JqKTsKIH0KIAogc3RhdGljIHZvaWQg c2tsX2RvX21taW9fZmxpcChzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YywKQEAgLTEyMDM4 LDE3ICsxMjAzMCw4IEBAIHN0YXRpYyB2b2lkIGludGVsX21taW9fZmxpcF93b3JrX2Z1bmMoc3Ry dWN0IHdvcmtfc3RydWN0ICp3KQogCXN0cnVjdCBpbnRlbF9mcmFtZWJ1ZmZlciAqaW50ZWxfZmIg PQogCQl0b19pbnRlbF9mcmFtZWJ1ZmZlcihjcnRjLT5iYXNlLnByaW1hcnktPmZiKTsKIAlzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqID0gaW50ZWxfZmItPm9iajsKLQlzdHJ1Y3QgcmVz ZXJ2YXRpb25fb2JqZWN0ICpyZXN2OwogCi0JaWYgKHdvcmstPmZsaXBfcXVldWVkX3JlcSkKLQkJ V0FSTl9PTihpOTE1X3dhaXRfcmVxdWVzdCh3b3JrLT5mbGlwX3F1ZXVlZF9yZXEsCi0JCQkJCSAg MCwgTUFYX1NDSEVEVUxFX1RJTUVPVVQpIDwgMCk7Ci0KLQkvKiBGb3IgZnJhbWVidWZmZXIgYmFj a2VkIGJ5IGRtYWJ1Ziwgd2FpdCBmb3IgZmVuY2UgKi8KLQlyZXN2ID0gaTkxNV9nZW1fb2JqZWN0 X2dldF9kbWFidWZfcmVzdihvYmopOwotCWlmIChyZXN2KQotCQlXQVJOX09OKHJlc2VydmF0aW9u X29iamVjdF93YWl0X3RpbWVvdXRfcmN1KHJlc3YsIGZhbHNlLCBmYWxzZSwKLQkJCQkJCQkgICAg TUFYX1NDSEVEVUxFX1RJTUVPVVQpIDwgMCk7CisJV0FSTl9PTihpOTE1X2dlbV9vYmplY3Rfd2Fp dChvYmosIDAsIE1BWF9TQ0hFRFVMRV9USU1FT1VULCBOVUxMKSA8IDApOwogCiAJaW50ZWxfcGlw ZV91cGRhdGVfc3RhcnQoY3J0Yyk7CiAKQEAgLTEyMjQ5LDggKzEyMjMyLDcgQEAgc3RhdGljIGlu dCBpbnRlbF9jcnRjX3BhZ2VfZmxpcChzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAJfSBlbHNlIGlm IChJU19JVllCUklER0UoZGV2KSB8fCBJU19IQVNXRUxMKGRldikpIHsKIAkJZW5naW5lID0gJmRl dl9wcml2LT5lbmdpbmVbQkNTXTsKIAl9IGVsc2UgaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49 IDcpIHsKLQkJZW5naW5lID0gaTkxNV9nZW1fYWN0aXZlX2dldF9lbmdpbmUoJm9iai0+bGFzdF93 cml0ZSwKLQkJCQkJCSAgICAmb2JqLT5iYXNlLmRldi0+c3RydWN0X211dGV4KTsKKwkJZW5naW5l ID0gaTkxNV9nZW1fb2JqZWN0X2xhc3Rfd3JpdGVfZW5naW5lKG9iaik7CiAJCWlmIChlbmdpbmUg PT0gTlVMTCB8fCBlbmdpbmUtPmlkICE9IFJDUykKIAkJCWVuZ2luZSA9ICZkZXZfcHJpdi0+ZW5n aW5lW0JDU107CiAJfSBlbHNlIHsKQEAgLTEyMjgyLDkgKzEyMjY0LDYgQEAgc3RhdGljIGludCBp bnRlbF9jcnRjX3BhZ2VfZmxpcChzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAKIAlpZiAobW1pb19m bGlwKSB7CiAJCUlOSVRfV09SSygmd29yay0+bW1pb193b3JrLCBpbnRlbF9tbWlvX2ZsaXBfd29y a19mdW5jKTsKLQotCQl3b3JrLT5mbGlwX3F1ZXVlZF9yZXEgPSBpOTE1X2dlbV9hY3RpdmVfZ2V0 KCZvYmotPmxhc3Rfd3JpdGUsCi0JCQkJCQkJICAgICZvYmotPmJhc2UuZGV2LT5zdHJ1Y3RfbXV0 ZXgpOwogCQlxdWV1ZV93b3JrKHN5c3RlbV91bmJvdW5kX3dxLCAmd29yay0+bW1pb193b3JrKTsK IAl9IGVsc2UgewogCQlyZXF1ZXN0ID0gaTkxNV9nZW1fcmVxdWVzdF9hbGxvYyhlbmdpbmUsIGVu Z2luZS0+bGFzdF9jb250ZXh0KTsKQEAgLTE0MDU2LDEzICsxNDAzNSwxMCBAQCBzdGF0aWMgaW50 IGludGVsX2F0b21pY19jaGVjayhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogfQogCiBzdGF0aWMg aW50IGludGVsX2F0b21pY19wcmVwYXJlX2NvbW1pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAot CQkJCSAgICAgICBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUsCi0JCQkJICAgICAgIGJv b2wgbm9uYmxvY2spCisJCQkJICAgICAgIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkK IHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7Ci0J c3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGU7CiAJc3RydWN0IGRybV9jcnRjX3N0 YXRlICpjcnRjX3N0YXRlOwotCXN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lOwogCXN0cnVjdCBkcm1f Y3J0YyAqY3J0YzsKIAlpbnQgaSwgcmV0OwogCkBAIC0xNDA4NSwzMCArMTQwNjEsNiBAQCBzdGF0 aWMgaW50IGludGVsX2F0b21pY19wcmVwYXJlX2NvbW1pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LAogCXJldCA9IGRybV9hdG9taWNfaGVscGVyX3ByZXBhcmVfcGxhbmVzKGRldiwgc3RhdGUpOwog CW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwogCi0JaWYgKCFyZXQgJiYgIW5vbmJs b2NrKSB7Ci0JCWZvcl9lYWNoX3BsYW5lX2luX3N0YXRlKHN0YXRlLCBwbGFuZSwgcGxhbmVfc3Rh dGUsIGkpIHsKLQkJCXN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqaW50ZWxfcGxhbmVfc3RhdGUg PQotCQkJCXRvX2ludGVsX3BsYW5lX3N0YXRlKHBsYW5lX3N0YXRlKTsKLQkJCWxvbmcgdGltZW91 dDsKLQotCQkJaWYgKCFpbnRlbF9wbGFuZV9zdGF0ZS0+d2FpdF9yZXEpCi0JCQkJY29udGludWU7 Ci0KLQkJCXRpbWVvdXQgPSBpOTE1X3dhaXRfcmVxdWVzdChpbnRlbF9wbGFuZV9zdGF0ZS0+d2Fp dF9yZXEsCi0JCQkJCQkgICAgSTkxNV9XQUlUX0lOVEVSUlVQVElCTEUsCi0JCQkJCQkgICAgTUFY X1NDSEVEVUxFX1RJTUVPVVQpOwotCQkJaWYgKHRpbWVvdXQgPCAwKSB7Ci0JCQkJLyogQW55IGhh bmcgc2hvdWxkIGJlIHN3YWxsb3dlZCBieSB0aGUgd2FpdCAqLwotCQkJCVdBUk5fT04odGltZW91 dCA9PSAtRUlPKTsKLQkJCQltdXRleF9sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Ci0JCQkJZHJt X2F0b21pY19oZWxwZXJfY2xlYW51cF9wbGFuZXMoZGV2LCBzdGF0ZSk7Ci0JCQkJbXV0ZXhfdW5s b2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Ci0JCQkJcmV0ID0gdGltZW91dDsKLQkJCQlicmVhazsK LQkJCX0KLQkJfQotCX0KLQogCXJldHVybiByZXQ7CiB9CiAKQEAgLTE0MzAwLDI2ICsxNDI1Miwx MSBAQCBzdGF0aWMgdm9pZCBpbnRlbF9hdG9taWNfY29tbWl0X3RhaWwoc3RydWN0IGRybV9hdG9t aWNfc3RhdGUgKnN0YXRlKQogCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqb2xkX2NydGNfc3RhdGU7 CiAJc3RydWN0IGRybV9jcnRjICpjcnRjOwogCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICppbnRl bF9jc3RhdGU7Ci0Jc3RydWN0IGRybV9wbGFuZSAqcGxhbmU7Ci0Jc3RydWN0IGRybV9wbGFuZV9z dGF0ZSAqcGxhbmVfc3RhdGU7CiAJYm9vbCBod19jaGVjayA9IGludGVsX3N0YXRlLT5tb2Rlc2V0 OwogCXVuc2lnbmVkIGxvbmcgcHV0X2RvbWFpbnNbSTkxNV9NQVhfUElQRVNdID0ge307CiAJdW5z aWduZWQgY3J0Y192YmxhbmtfbWFzayA9IDA7CiAJaW50IGk7CiAKLQlmb3JfZWFjaF9wbGFuZV9p bl9zdGF0ZShzdGF0ZSwgcGxhbmUsIHBsYW5lX3N0YXRlLCBpKSB7Ci0JCXN0cnVjdCBpbnRlbF9w bGFuZV9zdGF0ZSAqaW50ZWxfcGxhbmVfc3RhdGUgPQotCQkJdG9faW50ZWxfcGxhbmVfc3RhdGUo cGxhbmVfc3RhdGUpOwotCi0JCWlmICghaW50ZWxfcGxhbmVfc3RhdGUtPndhaXRfcmVxKQotCQkJ Y29udGludWU7Ci0KLQkJLyogRUlPIHNob3VsZCBiZSBlYXRlbiwgYW5kIHdlIGNhbid0IGdldCBp bnRlcnJ1cHRlZCBpbiB0aGUKLQkJICogd29ya2VyLCBhbmQgYmxvY2tpbmcgY29tbWl0cyBoYXZl IHdhaXRlZCBhbHJlYWR5LiAqLwotCQlXQVJOX09OKGk5MTVfd2FpdF9yZXF1ZXN0KGludGVsX3Bs YW5lX3N0YXRlLT53YWl0X3JlcSwKLQkJCQkJICAwLCBNQVhfU0NIRURVTEVfVElNRU9VVCkgPCAw KTsKLQl9Ci0KIAlkcm1fYXRvbWljX2hlbHBlcl93YWl0X2Zvcl9kZXBlbmRlbmNpZXMoc3RhdGUp OwogCiAJaWYgKGludGVsX3N0YXRlLT5tb2Rlc2V0KSB7CkBAIC0xNDUyNiw3ICsxNDQ2Myw3IEBA IHN0YXRpYyBpbnQgaW50ZWxfYXRvbWljX2NvbW1pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAog CiAJSU5JVF9XT1JLKCZzdGF0ZS0+Y29tbWl0X3dvcmssIGludGVsX2F0b21pY19jb21taXRfd29y ayk7CiAKLQlyZXQgPSBpbnRlbF9hdG9taWNfcHJlcGFyZV9jb21taXQoZGV2LCBzdGF0ZSwgbm9u YmxvY2spOworCXJldCA9IGludGVsX2F0b21pY19wcmVwYXJlX2NvbW1pdChkZXYsIHN0YXRlKTsK IAlpZiAocmV0KSB7CiAJCURSTV9ERUJVR19BVE9NSUMoIlByZXBhcmluZyBzdGF0ZSBmYWlsZWQg d2l0aCAlaVxuIiwgcmV0KTsKIAkJcmV0dXJuIHJldDsKQEAgLTE0NjU4LDcgKzE0NTk1LDcgQEAg aW50ZWxfcHJlcGFyZV9wbGFuZV9mYihzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKIAlzdHJ1Y3Qg ZHJtX2ZyYW1lYnVmZmVyICpmYiA9IG5ld19zdGF0ZS0+ZmI7CiAJc3RydWN0IGRybV9pOTE1X2dl bV9vYmplY3QgKm9iaiA9IGludGVsX2ZiX29iaihmYik7CiAJc3RydWN0IGRybV9pOTE1X2dlbV9v YmplY3QgKm9sZF9vYmogPSBpbnRlbF9mYl9vYmoocGxhbmUtPnN0YXRlLT5mYik7Ci0Jc3RydWN0 IHJlc2VydmF0aW9uX29iamVjdCAqcmVzdjsKKwlsb25nIGxyZXQ7CiAJaW50IHJldCA9IDA7CiAK IAlpZiAoIW9iaiAmJiAhb2xkX29iaikKQEAgLTE0Njk2LDM5ICsxNDYzMywzNCBAQCBpbnRlbF9w cmVwYXJlX3BsYW5lX2ZiKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAogCQlyZXR1cm4gMDsKIAog CS8qIEZvciBmcmFtZWJ1ZmZlciBiYWNrZWQgYnkgZG1hYnVmLCB3YWl0IGZvciBmZW5jZSAqLwot CXJlc3YgPSBpOTE1X2dlbV9vYmplY3RfZ2V0X2RtYWJ1Zl9yZXN2KG9iaik7Ci0JaWYgKHJlc3Yp IHsKLQkJbG9uZyBscmV0OworCWxyZXQgPSBpOTE1X2dlbV9vYmplY3Rfd2FpdChvYmosCisJCQkJ ICAgIEk5MTVfV0FJVF9JTlRFUlJVUFRJQkxFIHwgSTkxNV9XQUlUX0xPQ0tFRCwKKwkJCQkgICAg TUFYX1NDSEVEVUxFX1RJTUVPVVQsCisJCQkJICAgIE5VTEwpOworCWlmIChscmV0ID09IC1FUkVT VEFSVFNZUykKKwkJcmV0dXJuIGxyZXQ7CiAKLQkJbHJldCA9IHJlc2VydmF0aW9uX29iamVjdF93 YWl0X3RpbWVvdXRfcmN1KHJlc3YsIGZhbHNlLCB0cnVlLAotCQkJCQkJCSAgIE1BWF9TQ0hFRFVM RV9USU1FT1VUKTsKLQkJaWYgKGxyZXQgPT0gLUVSRVNUQVJUU1lTKQotCQkJcmV0dXJuIGxyZXQ7 Ci0KLQkJV0FSTihscmV0IDwgMCwgIndhaXRpbmcgcmV0dXJucyAlbGlcbiIsIGxyZXQpOwotCX0K KwlXQVJOKGxyZXQgPCAwLCAid2FpdGluZyByZXR1cm5zICVsaVxuIiwgbHJldCk7CiAKIAlpZiAo cGxhbmUtPnR5cGUgPT0gRFJNX1BMQU5FX1RZUEVfQ1VSU09SICYmCiAJICAgIElOVEVMX0lORk8o ZGV2KS0+Y3Vyc29yX25lZWRzX3BoeXNpY2FsKSB7CiAJCWludCBhbGlnbiA9IElTX0k4MzAoZGV2 KSA/IDE2ICogMTAyNCA6IDI1NjsKIAkJcmV0ID0gaTkxNV9nZW1fb2JqZWN0X2F0dGFjaF9waHlz KG9iaiwgYWxpZ24pOwotCQlpZiAocmV0KQorCQlpZiAocmV0KSB7CiAJCQlEUk1fREVCVUdfS01T KCJmYWlsZWQgdG8gYXR0YWNoIHBoeXMgb2JqZWN0XG4iKTsKKwkJCXJldHVybiByZXQ7CisJCX0K IAl9IGVsc2UgewogCQlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsKIAogCQl2bWEgPSBpbnRlbF9waW5f YW5kX2ZlbmNlX2ZiX29iaihmYiwgbmV3X3N0YXRlLT5yb3RhdGlvbik7Ci0JCWlmIChJU19FUlIo dm1hKSkKLQkJCXJldCA9IFBUUl9FUlIodm1hKTsKLQl9Ci0KLQlpZiAocmV0ID09IDApIHsKLQkJ dG9faW50ZWxfcGxhbmVfc3RhdGUobmV3X3N0YXRlKS0+d2FpdF9yZXEgPQotCQkJaTkxNV9nZW1f YWN0aXZlX2dldCgmb2JqLT5sYXN0X3dyaXRlLAotCQkJCQkgICAgJm9iai0+YmFzZS5kZXYtPnN0 cnVjdF9tdXRleCk7CisJCWlmIChJU19FUlIodm1hKSkgeworCQkJRFJNX0RFQlVHX0tNUygiZmFp bGVkIHRvIHBpbiBvYmplY3RcbiIpOworCQkJcmV0dXJuIFBUUl9FUlIodm1hKTsKKwkJfQogCX0K IAotCXJldHVybiByZXQ7CisJcmV0dXJuIDA7CiB9CiAKIC8qKgpAQCAtMTQ3NDYsNyArMTQ2Nzgs NiBAQCBpbnRlbF9jbGVhbnVwX3BsYW5lX2ZiKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAogewog CXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBwbGFuZS0+ZGV2OwogCXN0cnVjdCBpbnRlbF9wbGFu ZV9zdGF0ZSAqb2xkX2ludGVsX3N0YXRlOwotCXN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqaW50 ZWxfc3RhdGUgPSB0b19pbnRlbF9wbGFuZV9zdGF0ZShwbGFuZS0+c3RhdGUpOwogCXN0cnVjdCBk cm1faTkxNV9nZW1fb2JqZWN0ICpvbGRfb2JqID0gaW50ZWxfZmJfb2JqKG9sZF9zdGF0ZS0+ZmIp OwogCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmogPSBpbnRlbF9mYl9vYmoocGxhbmUt PnN0YXRlLT5mYik7CiAKQEAgLTE0NzU4LDkgKzE0Njg5LDYgQEAgaW50ZWxfY2xlYW51cF9wbGFu ZV9mYihzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKIAlpZiAob2xkX29iaiAmJiAocGxhbmUtPnR5 cGUgIT0gRFJNX1BMQU5FX1RZUEVfQ1VSU09SIHx8CiAJICAgICFJTlRFTF9JTkZPKGRldiktPmN1 cnNvcl9uZWVkc19waHlzaWNhbCkpCiAJCWludGVsX3VucGluX2ZiX29iaihvbGRfc3RhdGUtPmZi LCBvbGRfc3RhdGUtPnJvdGF0aW9uKTsKLQotCWk5MTVfZ2VtX3JlcXVlc3RfYXNzaWduKCZpbnRl bF9zdGF0ZS0+d2FpdF9yZXEsIE5VTEwpOwotCWk5MTVfZ2VtX3JlcXVlc3RfYXNzaWduKCZvbGRf aW50ZWxfc3RhdGUtPndhaXRfcmVxLCBOVUxMKTsKIH0KIAogaW50CmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2Rydi5oCmluZGV4IGY0OGU3OWFlMmFjNi4uNzgyMTBkMTRiNjYwIDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kcnYuaApAQCAtNDAxLDkgKzQwMSw2IEBAIHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSB7 CiAJaW50IHNjYWxlcl9pZDsKIAogCXN0cnVjdCBkcm1faW50ZWxfc3ByaXRlX2NvbG9ya2V5IGNr ZXk7Ci0KLQkvKiBhc3luYyBmbGlwIHJlbGF0ZWQgc3RydWN0dXJlcyAqLwotCXN0cnVjdCBkcm1f aTkxNV9nZW1fcmVxdWVzdCAqd2FpdF9yZXE7CiB9OwogCiBzdHJ1Y3QgaW50ZWxfaW5pdGlhbF9w bGFuZV9jb25maWcgewotLSAKMi45LjMKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZy ZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2ludGVsLWdmeAo=