From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 05/18] drm/i915: Move GEM activity tracking into a common struct reservation_object Date: Wed, 14 Sep 2016 07:52:37 +0100 Message-ID: <20160914065250.15482-6-chris@chris-wilson.co.uk> References: <20160914065250.15482-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 5D6236E66F for ; Wed, 14 Sep 2016 06:53:06 +0000 (UTC) Received: by mail-wm0-x242.google.com with SMTP id b187so1019580wme.0 for ; Tue, 13 Sep 2016 23:53:06 -0700 (PDT) In-Reply-To: <20160914065250.15482-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 L2V4cG9ydCB2aWEgZG1hLWJ1Zi4pCgpDYXZlYXRzOgoKICogYnVzeS1pb2N0bDogdGhlIG1vZGVy biBpbnRlcmZhY2UgaXMgY29tcGxldGVseSB0aHJvd24gYXdheSwKcmVncmVzc2luZyB1cyBiYWNr IHRvIGJlZm9yZQoKY29tbWl0IGU5ODA4ZWRkOTg2Nzk2ODA4MDRkZmJjNDJjNWVlOGYxYWE5MWY2 MTcgW3YzLjEwXQpBdXRob3I6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVr PgpEYXRlOiAgIFdlZCBKdWwgNCAxMjoyNTowOCAyMDEyICswMTAwCgogICAgZHJtL2k5MTU6IFJl dHVybiBhIG1hc2sgb2YgdGhlIGFjdGl2ZSByaW5ncyBpbiB0aGUgaGlnaCB3b3JkIG9mIGJ1c3lf aW9jdGwKCiAqIGxvY2FsIGVuZ2luZSBzZWxlY3Rpb24gYW5kIHNlbWFwaG9yZSBhdm9pZGFuY2Ug aXMgbG9zdCBmb3IgQ1MgZmxpcHMKCiAqIG5vbi1ibG9ja2luZyBhdG9taWMgbW9kZXNldHMgdGFr ZSBhIHN0ZXAgYmFja3dhcmRzIGFzIHRoZSB3YWl0IGZvcgpyZW5kZXIgY29tcGxldGlvbiBibG9j a3MgdGhlIGlvY3RsLiBUaGlzIGlzIGZpeGVkIGluIGEgc3Vic2VxdWVudApwYXRjaCB0byB1c2Ug YSBmZW5jZSBpbnN0ZWFkIGZvciBhd2FpdGluZyBvbiB0aGUgcmVuZGVyaW5nLgoKICogZHluYW1p YyBhcnJheSBtYW5pcHVsYXRpb24gZm9yIHNoYXJlZC1mZW5jZXMgaW4gcmVzZXJ2YXRpb24gaXMg c2xvd2VyCnRoYW4gdGhlIHByZXZpb3VzIGxvY2tsZXNzIHN0YXRpYyBhc3NpZ25tZW50IChlLmcu IGdlbV9leGVjX2x1dF9oYW5kbGUKcnVudGltZSBvbiBpdmIgZ29lcyBmcm9tIDQycyB0byA3MnMp CgogKiBsb3NzIG9mIG9iamVjdC1sZXZlbCByZXRpcmVtZW50IGNhbGxiYWNrcwoKICogbWlub3Ig bG9zcyBvZiBvYmplY3QtbGV2ZWwgbGFzdCBhY3Rpdml0eSBpbmZvcm1hdGlvbiBmcm9tIGRlYnVn ZnMsCmNvdWxkIGJlIHJlcGxhY2VkIHdpdGggcGVyLXZtYSBpbmZvcm1hdGlvbiBpZiBkZXNpcmVk CgpTaWduZWQtb2ZmLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4K LS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyAgICAgICAgfCAgMTggKy0t CiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgICAgICAgfCAgNDMgKy0tLS0K IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgICAgICAgICAgICB8IDI1MiArKystLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fYmF0 Y2hfcG9vbC5jIHwgICAzICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9kbWFidWYu YyAgICAgfCAgNDYgKy0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9kbWFidWYu aCAgICAgfCAgNDUgLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9leGVjYnVm ZmVyLmMgfCAgNzEgKystLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5j ICAgICAgICB8ICAyOSArKysrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuaCAg ICAgICAgfCAgIDEgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fcmVxdWVzdC5jICAg IHwgIDQ4ICsrKy0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fcmVxdWVzdC5oICAg IHwgIDM1ICstLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMgICAgICB8 ICAgNiArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXRvbWljX3BsYW5lLmMgIHwgICAy IC0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyAgICAgICB8IDEyMiArKyst LS0tLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggICAgICAgICAgIHwg ICAzIC0KIGluY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaCAgICAgICAgICAgICAgICB8ICAzMyAt LS0tCiAxNiBmaWxlcyBjaGFuZ2VkLCAxMjcgaW5zZXJ0aW9ucygrKSwgNjMwIGRlbGV0aW9ucygt KQogZGVsZXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2RtYWJ1 Zi5oCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwppbmRleCA2NDcwMmNjNjhlM2EuLmM0 ZTc1MzJjNWI2YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2Zz LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKQEAgLTEzNCwxNSAr MTM0LDEzIEBAIHN0YXRpYyB2b2lkCiBkZXNjcmliZV9vYmooc3RydWN0IHNlcV9maWxlICptLCBz dHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUob2JqLT5iYXNlLmRldik7Ci0Jc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqZW5naW5lOwogCXN0cnVjdCBpOTE1X3ZtYSAqdm1hOwogCXVuc2lnbmVkIGludCBm cm9udGJ1ZmZlcl9iaXRzOwogCWludCBwaW5fY291bnQgPSAwOwotCWVudW0gaW50ZWxfZW5naW5l X2lkIGlkOwogCiAJbG9ja2RlcF9hc3NlcnRfaGVsZCgmb2JqLT5iYXNlLmRldi0+c3RydWN0X211 dGV4KTsKIAotCXNlcV9wcmludGYobSwgIiVwSzogJWMlYyVjJWMlYyAlOHpkS2lCICUwMnggJTAy eCBbICIsCisJc2VxX3ByaW50ZihtLCAiJXBLOiAlYyVjJWMlYyVjICU4emRLaUIgJTAyeCAlMDJ4 ICVzJXMlcyIsCiAJCSAgICZvYmotPmJhc2UsCiAJCSAgIGdldF9hY3RpdmVfZmxhZyhvYmopLAog CQkgICBnZXRfcGluX2ZsYWcob2JqKSwKQEAgLTE1MSwxNCArMTQ5LDcgQEAgZGVzY3JpYmVfb2Jq KHN0cnVjdCBzZXFfZmlsZSAqbSwgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKIAkJ ICAgZ2V0X3Bpbl9tYXBwZWRfZmxhZyhvYmopLAogCQkgICBvYmotPmJhc2Uuc2l6ZSAvIDEwMjQs CiAJCSAgIG9iai0+YmFzZS5yZWFkX2RvbWFpbnMsCi0JCSAgIG9iai0+YmFzZS53cml0ZV9kb21h aW4pOwotCWZvcl9lYWNoX2VuZ2luZV9pZChlbmdpbmUsIGRldl9wcml2LCBpZCkKLQkJc2VxX3By aW50ZihtLCAiJXggIiwKLQkJCSAgIGk5MTVfZ2VtX2FjdGl2ZV9nZXRfc2Vxbm8oJm9iai0+bGFz dF9yZWFkW2lkXSwKLQkJCQkJCSAgICAgJm9iai0+YmFzZS5kZXYtPnN0cnVjdF9tdXRleCkpOwot CXNlcV9wcmludGYobSwgIl0gJXggJXMlcyVzIiwKLQkJICAgaTkxNV9nZW1fYWN0aXZlX2dldF9z ZXFubygmb2JqLT5sYXN0X3dyaXRlLAotCQkJCQkgICAgICZvYmotPmJhc2UuZGV2LT5zdHJ1Y3Rf bXV0ZXgpLAorCQkgICBvYmotPmJhc2Uud3JpdGVfZG9tYWluLAogCQkgICBpOTE1X2NhY2hlX2xl dmVsX3N0cihkZXZfcHJpdiwgb2JqLT5jYWNoZV9sZXZlbCksCiAJCSAgIG9iai0+ZGlydHkgPyAi IGRpcnR5IiA6ICIiLAogCQkgICBvYmotPm1hZHYgPT0gSTkxNV9NQURWX0RPTlRORUVEID8gIiBw dXJnZWFibGUiIDogIiIpOwpAQCAtMTk4LDExICsxODksNiBAQCBkZXNjcmliZV9vYmooc3RydWN0 IHNlcV9maWxlICptLCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQogCQlzZXFfcHJp bnRmKG0sICIgKCVzIG1hcHBhYmxlKSIsIHMpOwogCX0KIAotCWVuZ2luZSA9IGk5MTVfZ2VtX2Fj dGl2ZV9nZXRfZW5naW5lKCZvYmotPmxhc3Rfd3JpdGUsCi0JCQkJCSAgICAmZGV2X3ByaXYtPmRy bS5zdHJ1Y3RfbXV0ZXgpOwotCWlmIChlbmdpbmUpCi0JCXNlcV9wcmludGYobSwgIiAoJXMpIiwg ZW5naW5lLT5uYW1lKTsKLQogCWZyb250YnVmZmVyX2JpdHMgPSBhdG9taWNfcmVhZCgmb2JqLT5m cm9udGJ1ZmZlcl9iaXRzKTsKIAlpZiAoZnJvbnRidWZmZXJfYml0cykKIAkJc2VxX3ByaW50Ziht LCAiIChmcm9udGJ1ZmZlcjogMHglMDN4KSIsIGZyb250YnVmZmVyX2JpdHMpOwpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZHJ2LmgKaW5kZXggYWYwMjEyMDMyYjY0Li4yYmNhYjMwODdlOGMgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kcnYuaApAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgPGxpbnV4L2ludGVsLWlv bW11Lmg+CiAjaW5jbHVkZSA8bGludXgva3JlZi5oPgogI2luY2x1ZGUgPGxpbnV4L3BtX3Fvcy5o PgorI2luY2x1ZGUgPGxpbnV4L3Jlc2VydmF0aW9uLmg+CiAjaW5jbHVkZSA8bGludXgvc2htZW1f ZnMuaD4KIAogI2luY2x1ZGUgPGRybS9kcm1QLmg+CkBAIC0yMTk4LDE1ICsyMTk5LDYgQEAgc3Ry dWN0IGRybV9pOTE1X2dlbV9vYmplY3QgewogCXN0cnVjdCBsaXN0X2hlYWQgYmF0Y2hfcG9vbF9s aW5rOwogCiAJdW5zaWduZWQgbG9uZyBmbGFnczsKLQkvKioKLQkgKiBUaGlzIGlzIHNldCBpZiB0 aGUgb2JqZWN0IGlzIG9uIHRoZSBhY3RpdmUgbGlzdHMgKGhhcyBwZW5kaW5nCi0JICogcmVuZGVy aW5nIGFuZCBzbyBhIG5vbi16ZXJvIHNlcW5vKSwgYW5kIGlzIG5vdCBzZXQgaWYgaXQgaSBzIG9u Ci0JICogaW5hY3RpdmUgKHJlYWR5IHRvIGJlIHVuYm91bmQpIGxpc3QuCi0JICovCi0jZGVmaW5l IEk5MTVfQk9fQUNUSVZFX1NISUZUIDAKLSNkZWZpbmUgSTkxNV9CT19BQ1RJVkVfTUFTSyAoKDEg PDwgSTkxNV9OVU1fRU5HSU5FUykgLSAxKQotI2RlZmluZSBfX0k5MTVfQk9fQUNUSVZFKGJvKSBc Ci0JKChSRUFEX09OQ0UoKGJvKS0+ZmxhZ3MpID4+IEk5MTVfQk9fQUNUSVZFX1NISUZUKSAmIEk5 MTVfQk9fQUNUSVZFX01BU0spCiAKIAkvKioKIAkgKiBUaGlzIGlzIHNldCBpZiB0aGUgb2JqZWN0 IGhhcyBiZWVuIHdyaXR0ZW4gdG8gc2luY2UgbGFzdCBib3VuZApAQCAtMjI0NSw2ICsyMjM3LDcg QEAgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgewogCiAJLyoqIENvdW50IG9mIFZNQSBhY3R1 YWxseSBib3VuZCBieSB0aGlzIG9iamVjdCAqLwogCXVuc2lnbmVkIGludCBiaW5kX2NvdW50Owor CXVuc2lnbmVkIGludCBhY3RpdmVfY291bnQ7CiAJdW5zaWduZWQgaW50IHBpbl9kaXNwbGF5Owog CiAJc3RydWN0IHNnX3RhYmxlICpwYWdlczsKQEAgLTIyNjUsOCArMjI1OCw3IEBAIHN0cnVjdCBk cm1faTkxNV9nZW1fb2JqZWN0IHsKIAkgKiByZWFkIHJlcXVlc3QuIFRoaXMgYWxsb3dzIGZvciB0 aGUgQ1BVIHRvIHJlYWQgZnJvbSBhbiBhY3RpdmUKIAkgKiBidWZmZXIgYnkgb25seSB3YWl0aW5n IGZvciB0aGUgd3JpdGUgdG8gY29tcGxldGUuCiAJICovCi0Jc3RydWN0IGk5MTVfZ2VtX2FjdGl2 ZSBsYXN0X3JlYWRbSTkxNV9OVU1fRU5HSU5FU107Ci0Jc3RydWN0IGk5MTVfZ2VtX2FjdGl2ZSBs YXN0X3dyaXRlOworCXN0cnVjdCByZXNlcnZhdGlvbl9vYmplY3QgKnJlc3Y7CiAKIAkvKiogUmVm ZXJlbmNlcyBmcm9tIGZyYW1lYnVmZmVycywgbG9ja3Mgb3V0IHRpbGluZyBjaGFuZ2VzLiAqLwog CXVuc2lnbmVkIGxvbmcgZnJhbWVidWZmZXJfcmVmZXJlbmNlczsKQEAgLTIyODksNiArMjI4MSw4 IEBAIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0IHsKIAkJCXN0cnVjdCB3b3JrX3N0cnVjdCAq d29yazsKIAkJfSB1c2VycHRyOwogCX07CisKKwlzdHJ1Y3QgcmVzZXJ2YXRpb25fb2JqZWN0IF9f YnVpbHRpbl9yZXN2OwogfTsKIAogc3RhdGljIGlubGluZSBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29i amVjdCAqCkBAIC0yMzQ3LDM1ICsyMzQxLDEwIEBAIGk5MTVfZ2VtX29iamVjdF9oYXNfc3RydWN0 X3BhZ2UoY29uc3Qgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKIAlyZXR1cm4gb2Jq LT5vcHMtPmZsYWdzICYgSTkxNV9HRU1fT0JKRUNUX0hBU19TVFJVQ1RfUEFHRTsKIH0KIAotc3Rh dGljIGlubGluZSB1bnNpZ25lZCBsb25nCi1pOTE1X2dlbV9vYmplY3RfZ2V0X2FjdGl2ZShjb25z dCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQotewotCXJldHVybiAob2JqLT5mbGFn cyA+PiBJOTE1X0JPX0FDVElWRV9TSElGVCkgJiBJOTE1X0JPX0FDVElWRV9NQVNLOwotfQotCiBz dGF0aWMgaW5saW5lIGJvb2wKIGk5MTVfZ2VtX29iamVjdF9pc19hY3RpdmUoY29uc3Qgc3RydWN0 IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKIHsKLQlyZXR1cm4gaTkxNV9nZW1fb2JqZWN0X2dl dF9hY3RpdmUob2JqKTsKLX0KLQotc3RhdGljIGlubGluZSB2b2lkCi1pOTE1X2dlbV9vYmplY3Rf c2V0X2FjdGl2ZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLCBpbnQgZW5naW5lKQot ewotCW9iai0+ZmxhZ3MgfD0gQklUKGVuZ2luZSArIEk5MTVfQk9fQUNUSVZFX1NISUZUKTsKLX0K LQotc3RhdGljIGlubGluZSB2b2lkCi1pOTE1X2dlbV9vYmplY3RfY2xlYXJfYWN0aXZlKHN0cnVj dCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosIGludCBlbmdpbmUpCi17Ci0Jb2JqLT5mbGFncyAm PSB+QklUKGVuZ2luZSArIEk5MTVfQk9fQUNUSVZFX1NISUZUKTsKLX0KLQotc3RhdGljIGlubGlu ZSBib29sCi1pOTE1X2dlbV9vYmplY3RfaGFzX2FjdGl2ZV9lbmdpbmUoY29uc3Qgc3RydWN0IGRy bV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKLQkJCQkgIGludCBlbmdpbmUpCi17Ci0JcmV0dXJuIG9i ai0+ZmxhZ3MgJiBCSVQoZW5naW5lICsgSTkxNV9CT19BQ1RJVkVfU0hJRlQpOworCXJldHVybiBv YmotPmFjdGl2ZV9jb3VudDsKIH0KIAogc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbS5jCmluZGV4IGQ5MjE0YzlkMzFkMi4uYWI4ZDEwMzg4NTgxIDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ2VtLmMKQEAgLTI5LDcgKzI5LDYgQEAKICNpbmNsdWRlIDxkcm0vZHJtX3Zt YV9tYW5hZ2VyLmg+CiAjaW5jbHVkZSA8ZHJtL2k5MTVfZHJtLmg+CiAjaW5jbHVkZSAiaTkxNV9k cnYuaCIKLSNpbmNsdWRlICJpOTE1X2dlbV9kbWFidWYuaCIKICNpbmNsdWRlICJpOTE1X3ZncHUu aCIKICNpbmNsdWRlICJpOTE1X3RyYWNlLmgiCiAjaW5jbHVkZSAiaW50ZWxfZHJ2LmgiCkBAIC00 NDEsMTEgKzQ0MCw2IEBAIGk5MTVfZ2VtX29iamVjdF93YWl0KHN0cnVjdCBkcm1faTkxNV9nZW1f b2JqZWN0ICpvYmosCiAJCSAgICAgbG9uZyB0aW1lb3V0LAogCQkgICAgIHN0cnVjdCBpbnRlbF9y cHNfY2xpZW50ICpycHMpCiB7Ci0Jc3RydWN0IHJlc2VydmF0aW9uX29iamVjdCAqcmVzdjsKLQlz dHJ1Y3QgaTkxNV9nZW1fYWN0aXZlICphY3RpdmU7Ci0JdW5zaWduZWQgbG9uZyBhY3RpdmVfbWFz azsKLQlpbnQgaWR4OwotCiAJbWlnaHRfc2xlZXAoKTsKICNpZiBJU19FTkFCTEVEKENPTkZJR19M T0NLREVQKQogCUdFTV9CVUdfT04oISFsb2NrZGVwX2lzX2hlbGQoJm9iai0+YmFzZS5kZXYtPnN0 cnVjdF9tdXRleCkgIT0KQEAgLTQ1MywzMyArNDQ3LDkgQEAgaTkxNV9nZW1fb2JqZWN0X3dhaXQo c3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKICNlbmRpZgogCUdFTV9CVUdfT04odGlt ZW91dCA8IDApOwogCi0JaWYgKGZsYWdzICYgSTkxNV9XQUlUX0FMTCkgewotCQlhY3RpdmUgPSBv YmotPmxhc3RfcmVhZDsKLQkJYWN0aXZlX21hc2sgPSBpOTE1X2dlbV9vYmplY3RfZ2V0X2FjdGl2 ZShvYmopOwotCX0gZWxzZSB7Ci0JCWFjdGl2ZV9tYXNrID0gMTsKLQkJYWN0aXZlID0gJm9iai0+ bGFzdF93cml0ZTsKLQl9Ci0KLQlmb3JfZWFjaF9hY3RpdmUoYWN0aXZlX21hc2ssIGlkeCkgewot CQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3Q7Ci0KLQkJcmVxdWVzdCA9IGk5 MTVfZ2VtX2FjdGl2ZV9nZXRfdW5sb2NrZWQoJmFjdGl2ZVtpZHhdKTsKLQkJaWYgKHJlcXVlc3Qp IHsKLQkJCXRpbWVvdXQgPSBpOTE1X2dlbV9vYmplY3Rfd2FpdF9mZW5jZSgmcmVxdWVzdC0+ZmVu Y2UsCi0JCQkJCQkJICAgICBmbGFncywgdGltZW91dCwKLQkJCQkJCQkgICAgIHJwcyk7Ci0JCQlp OTE1X2dlbV9yZXF1ZXN0X3B1dChyZXF1ZXN0KTsKLQkJfQotCQlpZiAodGltZW91dCA8IDApCi0J CQlyZXR1cm4gdGltZW91dDsKLQl9Ci0KLQlyZXN2ID0gaTkxNV9nZW1fb2JqZWN0X2dldF9kbWFi dWZfcmVzdihvYmopOwotCWlmIChyZXN2KQotCQl0aW1lb3V0ID0gaTkxNV9nZW1fb2JqZWN0X3dh aXRfcmVzZXJ2YXRpb24ocmVzdiwKLQkJCQkJCQkgICBmbGFncywgdGltZW91dCwKLQkJCQkJCQkg ICBycHMpOworCXRpbWVvdXQgPSBpOTE1X2dlbV9vYmplY3Rfd2FpdF9yZXNlcnZhdGlvbihvYmot PnJlc3YsCisJCQkJCQkgICBmbGFncywgdGltZW91dCwKKwkJCQkJCSAgIHJwcyk7CiAJcmV0dXJu IHRpbWVvdXQgPCAwID8gdGltZW91dCA6IHRpbWVvdXQgPiAwID8gMCA6IC1FVElNRTsKIH0KIApA QCAtMjU4Niw0MSArMjU1Niw2IEBAIGVycjoKIAlyZXR1cm4gRVJSX1BUUihyZXQpOwogfQogCi1z dGF0aWMgdm9pZAotaTkxNV9nZW1fb2JqZWN0X3JldGlyZV9fd3JpdGUoc3RydWN0IGk5MTVfZ2Vt X2FjdGl2ZSAqYWN0aXZlLAotCQkJICAgICAgc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpy ZXF1ZXN0KQotewotCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmogPQotCQljb250YWlu ZXJfb2YoYWN0aXZlLCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCwgbGFzdF93cml0ZSk7Ci0K LQlpbnRlbF9mYl9vYmpfZmx1c2gob2JqLCB0cnVlLCBPUklHSU5fQ1MpOwotfQotCi1zdGF0aWMg dm9pZAotaTkxNV9nZW1fb2JqZWN0X3JldGlyZV9fcmVhZChzdHJ1Y3QgaTkxNV9nZW1fYWN0aXZl ICphY3RpdmUsCi0JCQkgICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdCkK LXsKLQlpbnQgaWR4ID0gcmVxdWVzdC0+ZW5naW5lLT5pZDsKLQlzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X29iamVjdCAqb2JqID0KLQkJY29udGFpbmVyX29mKGFjdGl2ZSwgc3RydWN0IGRybV9pOTE1X2dl bV9vYmplY3QsIGxhc3RfcmVhZFtpZHhdKTsKLQotCUdFTV9CVUdfT04oIWk5MTVfZ2VtX29iamVj dF9oYXNfYWN0aXZlX2VuZ2luZShvYmosIGlkeCkpOwotCi0JaTkxNV9nZW1fb2JqZWN0X2NsZWFy X2FjdGl2ZShvYmosIGlkeCk7Ci0JaWYgKGk5MTVfZ2VtX29iamVjdF9pc19hY3RpdmUob2JqKSkK LQkJcmV0dXJuOwotCi0JLyogQnVtcCBvdXIgcGxhY2Ugb24gdGhlIGJvdW5kIGxpc3QgdG8ga2Vl cCBpdCByb3VnaGx5IGluIExSVSBvcmRlcgotCSAqIHNvIHRoYXQgd2UgZG9uJ3Qgc3RlYWwgZnJv bSByZWNlbnRseSB1c2VkIGJ1dCBpbmFjdGl2ZSBvYmplY3RzCi0JICogKHVubGVzcyB3ZSBhcmUg Zm9yY2VkIHRvIG9mYyEpCi0JICovCi0JaWYgKG9iai0+YmluZF9jb3VudCkKLQkJbGlzdF9tb3Zl X3RhaWwoJm9iai0+Z2xvYmFsX2xpc3QsCi0JCQkgICAgICAgJnJlcXVlc3QtPmk5MTUtPm1tLmJv dW5kX2xpc3QpOwotCi0JaTkxNV9nZW1fb2JqZWN0X3B1dChvYmopOwotfQotCiBzdGF0aWMgYm9v bCBpOTE1X2NvbnRleHRfaXNfYmFubmVkKGNvbnN0IHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpj dHgpCiB7CiAJdW5zaWduZWQgbG9uZyBlbGFwc2VkOwpAQCAtMjkyMyw2ICsyODU4LDE2IEBAIGk5 MTVfZ2VtX3dhaXRfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwgc3Ry dWN0IGRybV9maWxlICpmaWxlKQogCWlmICghb2JqKQogCQlyZXR1cm4gLUVOT0VOVDsKIAorCWlm IChyZXNlcnZhdGlvbl9vYmplY3RfdGVzdF9zaWduYWxlZF9yY3Uob2JqLT5yZXN2LCB0cnVlKSkg eworCQlyZXQgPSAwOworCQlnb3RvIG91dDsKKwl9CisKKwlpZiAoIWFyZ3MtPnRpbWVvdXRfbnMp IHsKKwkJcmV0ID0gLUVUSU1FOworCQlnb3RvIG91dDsKKwl9CisKIAlzdGFydCA9IGt0aW1lX2dl dCgpOwogCiAJcmV0ID0gaTkxNV9nZW1fb2JqZWN0X3dhaXQob2JqLApAQCAtMjkzNiw4ICsyODgx LDggQEAgaTkxNV9nZW1fd2FpdF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpk YXRhLCBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUpCiAJCQlhcmdzLT50aW1lb3V0X25zID0gMDsKIAl9 CiAKK291dDoKIAlpOTE1X2dlbV9vYmplY3RfcHV0X3VubG9ja2VkKG9iaik7Ci0KIAlyZXR1cm4g cmV0OwogfQogCkBAIC0zOTU2LDE3MyArMzkwMSwxOCBAQCBpOTE1X2dlbV9vYmplY3RfZ2d0dF9w aW4oc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKIAlyZXR1cm4gdm1hOwogfQogCi1z dGF0aWMgX19hbHdheXNfaW5saW5lIHVuc2lnbmVkIGludCBfX2J1c3lfcmVhZF9mbGFnKHVuc2ln bmVkIGludCBpZCkKLXsKLQkvKiBOb3RlIHRoYXQgd2UgY291bGQgYWxpYXMgZW5naW5lcyBpbiB0 aGUgZXhlY2J1ZiBBUEksIGJ1dAotCSAqIHRoYXQgd291bGQgYmUgdmVyeSB1bndpc2UgYXMgaXQg cHJldmVudHMgdXNlcnNwYWNlIGZyb20KLQkgKiBmaW5lIGNvbnRyb2wgb3ZlciBlbmdpbmUgc2Vs ZWN0aW9uLiBBaGVtLgotCSAqCi0JICogVGhpcyBzaG91bGQgYmUgc29tZXRoaW5nIGxpa2UgRVhF Q19NQVhfRU5HSU5FIGluc3RlYWQgb2YKLQkgKiBJOTE1X05VTV9FTkdJTkVTLgotCSAqLwotCUJV SUxEX0JVR19PTihJOTE1X05VTV9FTkdJTkVTID4gMTYpOwotCXJldHVybiAweDEwMDAwIDw8IGlk OwotfQotCi1zdGF0aWMgX19hbHdheXNfaW5saW5lIHVuc2lnbmVkIGludCBfX2J1c3lfd3JpdGVf aWQodW5zaWduZWQgaW50IGlkKQotewotCS8qIFRoZSB1QUJJIGd1YXJhbnRlZXMgYW4gYWN0aXZl IHdyaXRlciBpcyBhbHNvIGFtb25nc3QgdGhlIHJlYWQKLQkgKiBlbmdpbmVzLiBUaGlzIHdvdWxk IGJlIHRydWUgaWYgd2UgYWNjZXNzZWQgdGhlIGFjdGl2aXR5IHRyYWNraW5nCi0JICogdW5kZXIg dGhlIGxvY2ssIGJ1dCBhcyB3ZSBwZXJmb3JtIHRoZSBsb29rdXAgb2YgdGhlIG9iamVjdCBhbmQK LQkgKiBpdHMgYWN0aXZpdHkgbG9ja2xlc3NseSB3ZSBjYW4gbm90IGd1YXJhbnRlZSB0aGF0IHRo ZSBsYXN0X3dyaXRlCi0JICogYmVpbmcgYWN0aXZlIGltcGxpZXMgdGhhdCB3ZSBoYXZlIHNldCB0 aGUgc2FtZSBlbmdpbmUgZmxhZyBmcm9tCi0JICogbGFzdF9yZWFkIC0gaGVuY2Ugd2UgYWx3YXlz IHNldCBib3RoIHJlYWQgYW5kIHdyaXRlIGJ1c3kgZm9yCi0JICogbGFzdF93cml0ZS4KLQkgKi8K LQlyZXR1cm4gaWQgfCBfX2J1c3lfcmVhZF9mbGFnKGlkKTsKLX0KLQotc3RhdGljIF9fYWx3YXlz X2lubGluZSB1bnNpZ25lZCBpbnQKLV9fYnVzeV9zZXRfaWZfYWN0aXZlKGNvbnN0IHN0cnVjdCBp OTE1X2dlbV9hY3RpdmUgKmFjdGl2ZSwKLQkJICAgICB1bnNpZ25lZCBpbnQgKCpmbGFnKSh1bnNp Z25lZCBpbnQgaWQpKQotewotCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdDsK LQotCXJlcXVlc3QgPSByY3VfZGVyZWZlcmVuY2UoYWN0aXZlLT5yZXF1ZXN0KTsKLQlpZiAoIXJl cXVlc3QgfHwgaTkxNV9nZW1fcmVxdWVzdF9jb21wbGV0ZWQocmVxdWVzdCkpCi0JCXJldHVybiAw OwotCi0JLyogVGhpcyBpcyByYWN5LiBTZWUgX19pOTE1X2dlbV9hY3RpdmVfZ2V0X3JjdSgpIGZv ciBhbiBpbiBkZXRhaWwKLQkgKiBkaXNjdXNzaW9uIG9mIGhvdyB0byBoYW5kbGUgdGhlIHJhY2Ug Y29ycmVjdGx5LCBidXQgZm9yIHJlcG9ydGluZwotCSAqIHRoZSBidXN5IHN0YXRlIHdlIGVyciBv biB0aGUgc2lkZSBvZiBwb3RlbnRpYWxseSByZXBvcnRpbmcgdGhlCi0JICogd3JvbmcgZW5naW5l IGFzIGJlaW5nIGJ1c3kgKGJ1dCB3ZSBndWFyYW50ZWUgdGhhdCB0aGUgcmVzdWx0Ci0JICogaXMg YXQgbGVhc3Qgc2VsZi1jb25zaXN0ZW50KS4KLQkgKgotCSAqIEFzIHdlIHVzZSBTTEFCX0RFU1RS T1lfQllfUkNVLCB0aGUgcmVxdWVzdCBtYXkgYmUgcmVhbGxvY2F0ZWQKLQkgKiB3aGlsc3Qgd2Ug YXJlIGluc3BlY3RpbmcgaXQsIGV2ZW4gdW5kZXIgdGhlIFJDVSByZWFkIGxvY2sgYXMgd2UgYXJl LgotCSAqIFRoaXMgbWVhbnMgdGhhdCB0aGVyZSBpcyBhIHNtYWxsIHdpbmRvdyBmb3IgdGhlIGVu Z2luZSBhbmQvb3IgdGhlCi0JICogc2Vxbm8gdG8gaGF2ZSBiZWVuIG92ZXJ3cml0dGVuLiBUaGUg c2Vxbm8gd2lsbCBhbHdheXMgYmUgaW4gdGhlCi0JICogZnV0dXJlIGNvbXBhcmVkIHRvIHRoZSBp bnRlbmRlZCwgYW5kIHNvIHdlIGtub3cgdGhhdCBpZiB0aGF0Ci0JICogc2Vxbm8gaXMgaWRsZSAo b24gd2hhdGV2ZXIgZW5naW5lKSBvdXIgcmVxdWVzdCBpcyBpZGxlIGFuZCB0aGUKLQkgKiByZXR1 cm4gMCBhYm92ZSBpcyBjb3JyZWN0LgotCSAqCi0JICogVGhlIGlzc3VlIGlzIHRoYXQgaWYgdGhl IGVuZ2luZSBpcyBzd2l0Y2hlZCwgaXQgaXMganVzdCBhcyBsaWtlbHkKLQkgKiB0byByZXBvcnQg dGhhdCBpdCBpcyBidXN5IChidXQgc2luY2UgdGhlIHN3aXRjaCBoYXBwZW5lZCwgd2Uga25vdwot CSAqIHRoZSByZXF1ZXN0IHNob3VsZCBiZSBpZGxlKS4gU28gdGhlcmUgaXMgYSBzbWFsbCBjaGFu Y2UgdGhhdCBhIGJ1c3kKLQkgKiByZXN1bHQgaXMgYWN0dWFsbHkgdGhlIHdyb25nIGVuZ2luZS4K LQkgKgotCSAqIFNvIHdoeSBkb24ndCB3ZSBjYXJlPwotCSAqCi0JICogRm9yIHN0YXJ0ZXJzLCB0 aGUgYnVzeSBpb2N0bCBpcyBhIGhldXJpc3RpYyB0aGF0IGlzIGJ5IGRlZmluaXRpb24KLQkgKiBy YWN5LiBFdmVuIHdpdGggcGVyZmVjdCBzZXJpYWxpc2F0aW9uIGluIHRoZSBkcml2ZXIsIHRoZSBo YXJkd2FyZQotCSAqIHN0YXRlIGlzIGNvbnN0YW50bHkgYWR2YW5jaW5nIC0gdGhlIHN0YXRlIHdl IHJlcG9ydCB0byB0aGUgdXNlcgotCSAqIGlzIHN0YWxlLgotCSAqCi0JICogVGhlIGNyaXRpY2Fs IGluZm9ybWF0aW9uIGZvciB0aGUgYnVzeS1pb2N0bCBpcyB3aGV0aGVyIHRoZSBvYmplY3QKLQkg KiBpcyBpZGxlIGFzIHVzZXJzcGFjZSByZWxpZXMgb24gdGhhdCB0byBkZXRlY3Qgd2hldGhlciBp dHMgbmV4dAotCSAqIGFjY2VzcyB3aWxsIHN0YWxsLCBvciBpZiBpdCBoYXMgbWlzc2VkIHN1Ym1p dHRpbmcgY29tbWFuZHMgdG8KLQkgKiB0aGUgaGFyZHdhcmUgYWxsb3dpbmcgdGhlIEdQVSB0byBz dGFsbC4gV2UgbmV2ZXIgZ2VuZXJhdGUgYQotCSAqIGZhbHNlLXBvc2l0aXZlIGZvciBpZGxlbmVz cywgdGh1cyBidXN5LWlvY3RsIGlzIHJlbGlhYmxlIGF0IHRoZQotCSAqIG1vc3QgZnVuZGFtZW50 YWwgbGV2ZWwsIGFuZCB3ZSBtYWludGFpbiB0aGUgZ3VhcmFudGVlIHRoYXQgYQotCSAqIGJ1c3kg b2JqZWN0IGxlZnQgdG8gaXRzZWxmIHdpbGwgZXZlbnR1YWxseSBiZWNvbWUgaWRsZSAoYW5kIHN0 YXkKLQkgKiBpZGxlISkuCi0JICoKLQkgKiBXZSBhbGxvdyBvdXJzZWx2ZXMgdGhlIGxlZXdheSBv ZiBwb3RlbnRpYWxseSBtaXNyZXBvcnRpbmcgdGhlIGJ1c3kKLQkgKiBzdGF0ZSBiZWNhdXNlIHRo YXQgaXMgYW4gb3B0aW1pc2F0aW9uIGhldXJpc3RpYyB0aGF0IGlzIGNvbnN0YW50bHkKLQkgKiBp biBmbHV4LiBCZWluZyBxdWlja2x5IGFibGUgdG8gZGV0ZWN0IHRoZSBidXN5L2lkbGUgc3RhdGUg aXMgbXVjaAotCSAqIG1vcmUgaW1wb3J0YW50IHRoYW4gYWNjdXJhdGUgbG9nZ2luZyBvZiBleGFj dGx5IHdoaWNoIGVuZ2luZXMgd2VyZQotCSAqIGJ1c3kuCi0JICoKLQkgKiBGb3IgYWNjdXJhY3kg aW4gcmVwb3J0aW5nIHRoZSBlbmdpbmUsIHdlIGNvdWxkIHVzZQotCSAqCi0JICoJcmVzdWx0ID0g MDsKLQkgKglyZXF1ZXN0ID0gX19pOTE1X2dlbV9hY3RpdmVfZ2V0X3JjdShhY3RpdmUpOwotCSAq CWlmIChyZXF1ZXN0KSB7Ci0JICoJCWlmICghaTkxNV9nZW1fcmVxdWVzdF9jb21wbGV0ZWQocmVx dWVzdCkpCi0JICoJCQlyZXN1bHQgPSBmbGFnKHJlcXVlc3QtPmVuZ2luZS0+ZXhlY19pZCk7Ci0J ICoJCWk5MTVfZ2VtX3JlcXVlc3RfcHV0KHJlcXVlc3QpOwotCSAqCX0KLQkgKgotCSAqIGJ1dCB0 aGF0IHN0aWxsIHJlbWFpbnMgc3VzY2VwdGlibGUgdG8gYm90aCBoYXJkd2FyZSBhbmQgdXNlcnNw YWNlCi0JICogcmFjZXMuIFNvIHdlIGFjY2VwdCBtYWtpbmcgdGhlIHJlc3VsdCBvZiB0aGF0IHJh Y2Ugc2xpZ2h0bHkgd29yc2UsCi0JICogZ2l2ZW4gdGhlIHJhcml0eSBvZiB0aGUgcmFjZSBhbmQg aXRzIGxvdyBpbXBhY3Qgb24gdGhlIHJlc3VsdC4KLQkgKi8KLQlyZXR1cm4gZmxhZyhSRUFEX09O Q0UocmVxdWVzdC0+ZW5naW5lLT5leGVjX2lkKSk7Ci19Ci0KLXN0YXRpYyBfX2Fsd2F5c19pbmxp bmUgdW5zaWduZWQgaW50Ci1idXN5X2NoZWNrX3JlYWRlcihjb25zdCBzdHJ1Y3QgaTkxNV9nZW1f YWN0aXZlICphY3RpdmUpCi17Ci0JcmV0dXJuIF9fYnVzeV9zZXRfaWZfYWN0aXZlKGFjdGl2ZSwg X19idXN5X3JlYWRfZmxhZyk7Ci19Ci0KLXN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgdW5zaWduZWQg aW50Ci1idXN5X2NoZWNrX3dyaXRlcihjb25zdCBzdHJ1Y3QgaTkxNV9nZW1fYWN0aXZlICphY3Rp dmUpCi17Ci0JcmV0dXJuIF9fYnVzeV9zZXRfaWZfYWN0aXZlKGFjdGl2ZSwgX19idXN5X3dyaXRl X2lkKTsKLX0KLQogaW50CiBpOTE1X2dlbV9idXN5X2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsIHZvaWQgKmRhdGEsCiAJCSAgICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUpCiB7CiAJc3RydWN0 IGRybV9pOTE1X2dlbV9idXN5ICphcmdzID0gZGF0YTsKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29i amVjdCAqb2JqOwotCXVuc2lnbmVkIGxvbmcgYWN0aXZlOwogCiAJb2JqID0gaTkxNV9nZW1fb2Jq ZWN0X2xvb2t1cChmaWxlLCBhcmdzLT5oYW5kbGUpOwogCWlmICghb2JqKQogCQlyZXR1cm4gLUVO T0VOVDsKIAotCWFyZ3MtPmJ1c3kgPSAwOwotCWFjdGl2ZSA9IF9fSTkxNV9CT19BQ1RJVkUob2Jq KTsKLQlpZiAoYWN0aXZlKSB7Ci0JCWludCBpZHg7Ci0KLQkJLyogWWVzLCB0aGUgbG9va3VwcyBh cmUgaW50ZW50aW9uYWxseSByYWN5LgotCQkgKgotCQkgKiBGaXJzdCwgd2UgY2Fubm90IHNpbXBs eSByZWx5IG9uIF9fSTkxNV9CT19BQ1RJVkUuIFdlIGhhdmUKLQkJICogdG8gcmVnYXJkIHRoZSB2 YWx1ZSBhcyBzdGFsZSBhbmQgYXMgb3VyIEFCSSBndWFyYW50ZWVzCi0JCSAqIGZvcndhcmQgcHJv Z3Jlc3MsIHdlIGNvbmZpcm0gdGhlIHN0YXR1cyBvZiBlYWNoIGFjdGl2ZQotCQkgKiByZXF1ZXN0 IHdpdGggdGhlIGhhcmR3YXJlLgotCQkgKgotCQkgKiBFdmVuIHRob3VnaCB3ZSBndWFyZCB0aGUg cG9pbnRlciBsb29rdXAgYnkgUkNVLCB0aGF0IG9ubHkKLQkJICogZ3VhcmFudGVlcyB0aGF0IHRo ZSBwb2ludGVyIGFuZCBpdHMgY29udGVudHMgcmVtYWluCi0JCSAqIGRlcmVmZXJlbmNhYmxlIGFu ZCBkb2VzICpub3QqIG1lYW4gdGhhdCB0aGUgcmVxdWVzdCB3ZQotCQkgKiBoYXZlIGlzIHRoZSBz YW1lIGFzIHRoZSBvbmUgYmVpbmcgdHJhY2tlZCBieSB0aGUgb2JqZWN0LgotCQkgKgotCQkgKiBD b25zaWRlciB0aGF0IHdlIGxvb2t1cCB0aGUgcmVxdWVzdCBqdXN0IGFzIGl0IGlzIGJlaW5nCi0J CSAqIHJldGlyZWQgYW5kIGZyZWVkLiBXZSB0YWtlIGEgbG9jYWwgY29weSBvZiB0aGUgcG9pbnRl ciwKLQkJICogYnV0IGJlZm9yZSB3ZSBhZGQgaXRzIGVuZ2luZSBpbnRvIHRoZSBidXN5IHNldCwg dGhlIG90aGVyCi0JCSAqIHRocmVhZCByZWFsbG9jYXRlcyBpdCBhbmQgYXNzaWducyBpdCB0byBh IHRhc2sgb24gYW5vdGhlcgotCQkgKiBlbmdpbmUgd2l0aCBhIGZyZXNoIGFuZCBpbmNvbXBsZXRl IHNlcW5vLiBHdWFyZGluZyBhZ2FpbnN0Ci0JCSAqIHRoYXQgcmVxdWlyZXMgY2FyZWZ1bCBzZXJp YWxpc2F0aW9uIGFuZCByZWZlcmVuY2UgY291bnRpbmcsCi0JCSAqIGkuZS4gdXNpbmcgX19pOTE1 X2dlbV9hY3RpdmVfZ2V0X3JlcXVlc3RfcmN1KCkuIFdlIGRvbid0LAotCQkgKiBpbnN0ZWFkIHdl IGV4cGVjdCB0aGF0IGlmIHRoZSByZXN1bHQgaXMgYnVzeSwgd2hpY2ggZW5naW5lcwotCQkgKiBh cmUgYnVzeSBpcyBub3QgY29tcGxldGVseSByZWxpYWJsZSAtIHdlIG9ubHkgZ3VhcmFudGVlCi0J CSAqIHRoYXQgdGhlIG9iamVjdCB3YXMgYnVzeS4KLQkJICovCi0JCXJjdV9yZWFkX2xvY2soKTsK LQotCQlmb3JfZWFjaF9hY3RpdmUoYWN0aXZlLCBpZHgpCi0JCQlhcmdzLT5idXN5IHw9IGJ1c3lf Y2hlY2tfcmVhZGVyKCZvYmotPmxhc3RfcmVhZFtpZHhdKTsKLQotCQkvKiBGb3IgQUJJIHNhbml0 eSwgd2Ugb25seSBjYXJlIHRoYXQgdGhlIHdyaXRlIGVuZ2luZSBpcyBpbgotCQkgKiB0aGUgc2V0 IG9mIHJlYWQgZW5naW5lcy4gVGhpcyBzaG91bGQgYmUgZW5zdXJlZCBieSB0aGUKLQkJICogb3Jk ZXJpbmcgb2Ygc2V0dGluZyBsYXN0X3JlYWQvbGFzdF93cml0ZSBpbgotCQkgKiBpOTE1X3ZtYV9t b3ZlX3RvX2FjdGl2ZSgpLCBhbmQgdGhlbiBpbiByZXZlcnNlIGluIHJldGlyZS4KLQkJICogSG93 ZXZlciwgZm9yIGdvb2QgbWVhc3VyZSwgd2UgYWx3YXlzIHJlcG9ydCB0aGUgbGFzdF93cml0ZQot CQkgKiByZXF1ZXN0IGFzIGEgYnVzeSByZWFkIGFzIHdlbGwgYXMgYmVpbmcgYSBidXN5IHdyaXRl LgotCQkgKgotCQkgKiBXZSBkb24ndCBjYXJlIHRoYXQgdGhlIHNldCBvZiBhY3RpdmUgcmVhZC93 cml0ZSBlbmdpbmVzCi0JCSAqIG1heSBjaGFuZ2UgZHVyaW5nIGNvbnN0cnVjdGlvbiBvZiB0aGUg cmVzdWx0LCBhcyBpdCBpcwotCQkgKiBlcXVhbGx5IGxpYWJsZSB0byBjaGFuZ2UgYmVmb3JlIHVz ZXJzcGFjZSBjYW4gaW5zcGVjdAotCQkgKiB0aGUgcmVzdWx0LgotCQkgKi8KLQkJYXJncy0+YnVz eSB8PSBidXN5X2NoZWNrX3dyaXRlcigmb2JqLT5sYXN0X3dyaXRlKTsKLQotCQlyY3VfcmVhZF91 bmxvY2soKTsKLQl9CisJYXJncy0+YnVzeSA9ICFyZXNlcnZhdGlvbl9vYmplY3RfdGVzdF9zaWdu YWxlZF9yY3Uob2JqLT5yZXN2LCB0cnVlKTsKIAogCWk5MTVfZ2VtX29iamVjdF9wdXRfdW5sb2Nr ZWQob2JqKTsKIAlyZXR1cm4gMDsKQEAgLTQxODksMjAgKzM5NzksMTYgQEAgdW5sb2NrOgogdm9p ZCBpOTE1X2dlbV9vYmplY3RfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAog CQkJICBjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdF9vcHMgKm9wcykKIHsKLQlpbnQg aTsKLQogCUlOSVRfTElTVF9IRUFEKCZvYmotPmdsb2JhbF9saXN0KTsKLQlmb3IgKGkgPSAwOyBp IDwgSTkxNV9OVU1fRU5HSU5FUzsgaSsrKQotCQlpbml0X3JlcXVlc3RfYWN0aXZlKCZvYmotPmxh c3RfcmVhZFtpXSwKLQkJCQkgICAgaTkxNV9nZW1fb2JqZWN0X3JldGlyZV9fcmVhZCk7Ci0JaW5p dF9yZXF1ZXN0X2FjdGl2ZSgmb2JqLT5sYXN0X3dyaXRlLAotCQkJICAgIGk5MTVfZ2VtX29iamVj dF9yZXRpcmVfX3dyaXRlKTsKIAlJTklUX0xJU1RfSEVBRCgmb2JqLT5vYmpfZXhlY19saW5rKTsK IAlJTklUX0xJU1RfSEVBRCgmb2JqLT52bWFfbGlzdCk7CiAJSU5JVF9MSVNUX0hFQUQoJm9iai0+ YmF0Y2hfcG9vbF9saW5rKTsKIAogCW9iai0+b3BzID0gb3BzOwogCisJcmVzZXJ2YXRpb25fb2Jq ZWN0X2luaXQoJm9iai0+X19idWlsdGluX3Jlc3YpOworCW9iai0+cmVzdiA9ICZvYmotPl9fYnVp bHRpbl9yZXN2OworCiAJb2JqLT5mcm9udGJ1ZmZlcl9nZ3R0X29yaWdpbiA9IE9SSUdJTl9HVFQ7 CiAJb2JqLT5tYWR2ID0gSTkxNV9NQURWX1dJTExORUVEOwogCkBAIC00MzQ5LDYgKzQxMzUsOCBA QCB2b2lkIGk5MTVfZ2VtX2ZyZWVfb2JqZWN0KHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqZ2VtX29i aikKIAlpZiAob2JqLT5vcHMtPnJlbGVhc2UpCiAJCW9iai0+b3BzLT5yZWxlYXNlKG9iaik7CiAK KwlyZXNlcnZhdGlvbl9vYmplY3RfZmluaSgmb2JqLT5fX2J1aWx0aW5fcmVzdik7CisKIAlkcm1f Z2VtX29iamVjdF9yZWxlYXNlKCZvYmotPmJhc2UpOwogCWk5MTVfZ2VtX2luZm9fcmVtb3ZlX29i aihkZXZfcHJpdiwgb2JqLT5iYXNlLnNpemUpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dlbV9iYXRjaF9wb29sLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbV9iYXRjaF9wb29sLmMKaW5kZXggZWQ5ODk1OTZkOWEzLi5iYmZlYTk2NWM1OTMgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2JhdGNoX3Bvb2wuYworKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9iYXRjaF9wb29sLmMKQEAgLTExNCw4ICsxMTQs NyBAQCBpOTE1X2dlbV9iYXRjaF9wb29sX2dldChzdHJ1Y3QgaTkxNV9nZW1fYmF0Y2hfcG9vbCAq cG9vbCwKIAogCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZSh0bXAsIG5leHQsIGxpc3QsIGJhdGNo X3Bvb2xfbGluaykgewogCQkvKiBUaGUgYmF0Y2hlcyBhcmUgc3RyaWN0bHkgTFJVIG9yZGVyZWQg Ki8KLQkJaWYgKCFpOTE1X2dlbV9hY3RpdmVfaXNfaWRsZSgmdG1wLT5sYXN0X3JlYWRbcG9vbC0+ ZW5naW5lLT5pZF0sCi0JCQkJCSAgICAgJnRtcC0+YmFzZS5kZXYtPnN0cnVjdF9tdXRleCkpCisJ CWlmIChpOTE1X2dlbV9vYmplY3RfaXNfYWN0aXZlKHRtcCkpCiAJCQlicmVhazsKIAogCQkvKiBX aGlsZSB3ZSdyZSBsb29waW5nLCBkbyBzb21lIGNsZWFuIHVwICovCmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9kbWFidWYuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtX2RtYWJ1Zi5jCmluZGV4IDEwMjY1YmIzNTYwNC4uYjBhNDI5YWVhZmQ5IDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9kbWFidWYuYworKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9kbWFidWYuYwpAQCAtMjIyLDQ5ICsyMjIsNiBAQCBz dGF0aWMgY29uc3Qgc3RydWN0IGRtYV9idWZfb3BzIGk5MTVfZG1hYnVmX29wcyA9ICB7CiAJLmVu ZF9jcHVfYWNjZXNzID0gaTkxNV9nZW1fZW5kX2NwdV9hY2Nlc3MsCiB9OwogCi1zdGF0aWMgdm9p ZCBleHBvcnRfZmVuY2VzKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCi0JCQkgIHN0 cnVjdCBkbWFfYnVmICpkbWFfYnVmKQotewotCXN0cnVjdCByZXNlcnZhdGlvbl9vYmplY3QgKnJl c3YgPSBkbWFfYnVmLT5yZXN2OwotCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxOwot CXVuc2lnbmVkIGxvbmcgYWN0aXZlOwotCWludCBpZHg7Ci0KLQlhY3RpdmUgPSBfX0k5MTVfQk9f QUNUSVZFKG9iaik7Ci0JaWYgKCFhY3RpdmUpCi0JCXJldHVybjsKLQotCS8qIFNlcmlhbGlzZSB3 aXRoIGV4ZWNidWYgdG8gcHJldmVudCBjb25jdXJyZW50IGZlbmNlLWxvb3BzICovCi0JbXV0ZXhf bG9jaygmb2JqLT5iYXNlLmRldi0+c3RydWN0X211dGV4KTsKLQotCS8qIE1hcmsgdGhlIG9iamVj dCBmb3IgZnV0dXJlIGZlbmNlcyBiZWZvcmUgcmFjaWx5IGFkZGluZyBvbGQgZmVuY2VzICovCi0J b2JqLT5iYXNlLmRtYV9idWYgPSBkbWFfYnVmOwotCi0Jd3dfbXV0ZXhfbG9jaygmcmVzdi0+bG9j aywgTlVMTCk7Ci0KLQlmb3JfZWFjaF9hY3RpdmUoYWN0aXZlLCBpZHgpIHsKLQkJcmVxID0gaTkx NV9nZW1fYWN0aXZlX2dldCgmb2JqLT5sYXN0X3JlYWRbaWR4XSwKLQkJCQkJICAmb2JqLT5iYXNl LmRldi0+c3RydWN0X211dGV4KTsKLQkJaWYgKCFyZXEpCi0JCQljb250aW51ZTsKLQotCQlpZiAo cmVzZXJ2YXRpb25fb2JqZWN0X3Jlc2VydmVfc2hhcmVkKHJlc3YpID09IDApCi0JCQlyZXNlcnZh dGlvbl9vYmplY3RfYWRkX3NoYXJlZF9mZW5jZShyZXN2LCAmcmVxLT5mZW5jZSk7Ci0KLQkJaTkx NV9nZW1fcmVxdWVzdF9wdXQocmVxKTsKLQl9Ci0KLQlyZXEgPSBpOTE1X2dlbV9hY3RpdmVfZ2V0 KCZvYmotPmxhc3Rfd3JpdGUsCi0JCQkJICAmb2JqLT5iYXNlLmRldi0+c3RydWN0X211dGV4KTsK LQlpZiAocmVxKSB7Ci0JCXJlc2VydmF0aW9uX29iamVjdF9hZGRfZXhjbF9mZW5jZShyZXN2LCAm cmVxLT5mZW5jZSk7Ci0JCWk5MTVfZ2VtX3JlcXVlc3RfcHV0KHJlcSk7Ci0JfQotCi0Jd3dfbXV0 ZXhfdW5sb2NrKCZyZXN2LT5sb2NrKTsKLQltdXRleF91bmxvY2soJm9iai0+YmFzZS5kZXYtPnN0 cnVjdF9tdXRleCk7Ci19Ci0KIHN0cnVjdCBkbWFfYnVmICppOTE1X2dlbV9wcmltZV9leHBvcnQo c3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkJCQkgICAgICBzdHJ1Y3QgZHJtX2dlbV9vYmplY3Qg KmdlbV9vYmosIGludCBmbGFncykKIHsKQEAgLTI3Niw2ICsyMzMsNyBAQCBzdHJ1Y3QgZG1hX2J1 ZiAqaTkxNV9nZW1fcHJpbWVfZXhwb3J0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJZXhwX2lu Zm8uc2l6ZSA9IGdlbV9vYmotPnNpemU7CiAJZXhwX2luZm8uZmxhZ3MgPSBmbGFnczsKIAlleHBf aW5mby5wcml2ID0gZ2VtX29iajsKKwlleHBfaW5mby5yZXN2ID0gb2JqLT5yZXN2OwogCiAJaWYg KG9iai0+b3BzLT5kbWFidWZfZXhwb3J0KSB7CiAJCWludCByZXQgPSBvYmotPm9wcy0+ZG1hYnVm X2V4cG9ydChvYmopOwpAQCAtMjg3LDcgKzI0NSw2IEBAIHN0cnVjdCBkbWFfYnVmICppOTE1X2dl bV9wcmltZV9leHBvcnQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAlpZiAoSVNfRVJSKGRtYV9i dWYpKQogCQlyZXR1cm4gZG1hX2J1ZjsKIAotCWV4cG9ydF9mZW5jZXMob2JqLCBkbWFfYnVmKTsK IAlyZXR1cm4gZG1hX2J1ZjsKIH0KIApAQCAtMzUwLDYgKzMwNyw3IEBAIHN0cnVjdCBkcm1fZ2Vt X29iamVjdCAqaTkxNV9nZW1fcHJpbWVfaW1wb3J0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJ ZHJtX2dlbV9wcml2YXRlX29iamVjdF9pbml0KGRldiwgJm9iai0+YmFzZSwgZG1hX2J1Zi0+c2l6 ZSk7CiAJaTkxNV9nZW1fb2JqZWN0X2luaXQob2JqLCAmaTkxNV9nZW1fb2JqZWN0X2RtYWJ1Zl9v cHMpOwogCW9iai0+YmFzZS5pbXBvcnRfYXR0YWNoID0gYXR0YWNoOworCW9iai0+cmVzdiA9IGRt YV9idWYtPnJlc3Y7CiAKIAkvKiBXZSB1c2UgR1RUIGFzIHNob3J0aGFuZCBmb3IgYSBjb2hlcmVu dCBkb21haW4sIG9uZSB0aGF0IGlzCiAJICogbmVpdGhlciBpbiB0aGUgR1BVIGNhY2hlIG5vciBp biB0aGUgQ1BVIGNhY2hlLCB3aGVyZSBhbGwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtX2RtYWJ1Zi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZG1h YnVmLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkxMzE1NTU3ZTQyMS4uMDAwMDAw MDAwMDAwCi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2RtYWJ1Zi5oCisrKyAv ZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAyMDE2IEludGVsIENv cnBvcmF0aW9uCi0gKgotICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBj aGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKLSAqIGNvcHkgb2YgdGhpcyBzb2Z0d2Fy ZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCi0g KiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcg d2l0aG91dCBsaW1pdGF0aW9uCi0gKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBt ZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKLSAqIGFuZC9vciBzZWxsIGNv cGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQot ICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dp bmcgY29uZGl0aW9uczoKLSAqCi0gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhp cyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0Ci0gKiBwYXJhZ3JhcGgpIHNo YWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2Yg dGhlCi0gKiBTb2Z0d2FyZS4KLSAqCi0gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElT IiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgotICogSU1QTElFRCwg SU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC SUxJVFksCi0gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklO R0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKLSAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBI T0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCi0gKiBMSUFC SUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lT RSwgQVJJU0lORwotICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09G VFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUgotICogREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgot ICoKLSAqLwotCi0jaWZuZGVmIF9JOTE1X0dFTV9ETUFCVUZfSF8KLSNkZWZpbmUgX0k5MTVfR0VN X0RNQUJVRl9IXwotCi0jaW5jbHVkZSA8bGludXgvZG1hLWJ1Zi5oPgotCi1zdGF0aWMgaW5saW5l IHN0cnVjdCByZXNlcnZhdGlvbl9vYmplY3QgKgotaTkxNV9nZW1fb2JqZWN0X2dldF9kbWFidWZf cmVzdihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQotewotCXN0cnVjdCBkbWFfYnVm ICpkbWFfYnVmOwotCi0JaWYgKG9iai0+YmFzZS5kbWFfYnVmKQotCQlkbWFfYnVmID0gb2JqLT5i YXNlLmRtYV9idWY7Ci0JZWxzZSBpZiAob2JqLT5iYXNlLmltcG9ydF9hdHRhY2gpCi0JCWRtYV9i dWYgPSBvYmotPmJhc2UuaW1wb3J0X2F0dGFjaC0+ZG1hYnVmOwotCWVsc2UKLQkJcmV0dXJuIE5V TEw7Ci0KLQlyZXR1cm4gZG1hX2J1Zi0+cmVzdjsKLX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9leGVjYnVmZmVyLmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dlbV9leGVjYnVmZmVyLmMKaW5kZXggMzNjODUyMjc2NDNkLi42YjUxNzVl ZTgyNGMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZm ZXIuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9leGVjYnVmZmVyLmMKQEAg LTM0LDcgKzM0LDYgQEAKICNpbmNsdWRlIDxkcm0vaTkxNV9kcm0uaD4KIAogI2luY2x1ZGUgImk5 MTVfZHJ2LmgiCi0jaW5jbHVkZSAiaTkxNV9nZW1fZG1hYnVmLmgiCiAjaW5jbHVkZSAiaTkxNV90 cmFjZS5oIgogI2luY2x1ZGUgImludGVsX2Rydi5oIgogI2luY2x1ZGUgImludGVsX2Zyb250YnVm ZmVyLmgiCkBAIC01NTIsMjAgKzU1MSw2IEBAIHJlcGVhdDoKIAlyZXR1cm4gMDsKIH0KIAotc3Rh dGljIGJvb2wgb2JqZWN0X2lzX2lkbGUoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikK LXsKLQl1bnNpZ25lZCBsb25nIGFjdGl2ZSA9IGk5MTVfZ2VtX29iamVjdF9nZXRfYWN0aXZlKG9i aik7Ci0JaW50IGlkeDsKLQotCWZvcl9lYWNoX2FjdGl2ZShhY3RpdmUsIGlkeCkgewotCQlpZiAo IWk5MTVfZ2VtX2FjdGl2ZV9pc19pZGxlKCZvYmotPmxhc3RfcmVhZFtpZHhdLAotCQkJCQkgICAg ICZvYmotPmJhc2UuZGV2LT5zdHJ1Y3RfbXV0ZXgpKQotCQkJcmV0dXJuIGZhbHNlOwotCX0KLQot CXJldHVybiB0cnVlOwotfQotCiBzdGF0aWMgaW50CiBpOTE1X2dlbV9leGVjYnVmZmVyX3JlbG9j YXRlX2VudHJ5KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCiAJCQkJICAgc3RydWN0 IGViX3ZtYXMgKmViLApAQCAtNjUwLDcgKzYzNSw4IEBAIGk5MTVfZ2VtX2V4ZWNidWZmZXJfcmVs b2NhdGVfZW50cnkoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKIAl9CiAKIAkvKiBX ZSBjYW4ndCB3YWl0IGZvciByZW5kZXJpbmcgd2l0aCBwYWdlZmF1bHRzIGRpc2FibGVkICovCi0J aWYgKHBhZ2VmYXVsdF9kaXNhYmxlZCgpICYmICFvYmplY3RfaXNfaWRsZShvYmopKQorCWlmIChw YWdlZmF1bHRfZGlzYWJsZWQoKSAmJgorCSAgICAhcmVzZXJ2YXRpb25fb2JqZWN0X3Rlc3Rfc2ln bmFsZWRfcmN1KG9iai0+cmVzdiwgdHJ1ZSkpCiAJCXJldHVybiAtRUZBVUxUOwogCiAJcmV0ID0g cmVsb2NhdGVfZW50cnkob2JqLCByZWxvYywgY2FjaGUsIHRhcmdldF9vZmZzZXQpOwpAQCAtMTEx MSw0NCArMTA5NywyMCBAQCBlcnI6CiAJcmV0dXJuIHJldDsKIH0KIAotc3RhdGljIHVuc2lnbmVk IGludCBlYl9vdGhlcl9lbmdpbmVzKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKQot ewotCXVuc2lnbmVkIGludCBtYXNrOwotCi0JbWFzayA9IH5pbnRlbF9lbmdpbmVfZmxhZyhyZXEt PmVuZ2luZSkgJiBJOTE1X0JPX0FDVElWRV9NQVNLOwotCW1hc2sgPDw9IEk5MTVfQk9fQUNUSVZF X1NISUZUOwotCi0JcmV0dXJuIG1hc2s7Ci19Ci0KIHN0YXRpYyBpbnQKIGk5MTVfZ2VtX2V4ZWNi dWZmZXJfbW92ZV90b19ncHUoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCiAJCQkJ c3RydWN0IGxpc3RfaGVhZCAqdm1hcykKIHsKLQljb25zdCB1bnNpZ25lZCBpbnQgb3RoZXJfcmlu Z3MgPSBlYl9vdGhlcl9lbmdpbmVzKHJlcSk7CiAJc3RydWN0IGk5MTVfdm1hICp2bWE7CiAJaW50 IHJldDsKIAogCWxpc3RfZm9yX2VhY2hfZW50cnkodm1hLCB2bWFzLCBleGVjX2xpc3QpIHsKIAkJ c3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiA9IHZtYS0+b2JqOwotCQlzdHJ1Y3QgcmVz ZXJ2YXRpb25fb2JqZWN0ICpyZXN2OwotCi0JCWlmIChvYmotPmZsYWdzICYgb3RoZXJfcmluZ3Mp IHsKLQkJCXJldCA9IGk5MTVfZ2VtX3JlcXVlc3RfYXdhaXRfb2JqZWN0Ci0JCQkJKHJlcSwgb2Jq LCBvYmotPmJhc2UucGVuZGluZ193cml0ZV9kb21haW4pOwotCQkJaWYgKHJldCkKLQkJCQlyZXR1 cm4gcmV0OwotCQl9CiAKLQkJcmVzdiA9IGk5MTVfZ2VtX29iamVjdF9nZXRfZG1hYnVmX3Jlc3Yo b2JqKTsKLQkJaWYgKHJlc3YpIHsKLQkJCXJldCA9IGk5MTVfc3dfZmVuY2VfYXdhaXRfcmVzZXJ2 YXRpb24KLQkJCQkoJnJlcS0+c3VibWl0LCByZXN2LCAmaTkxNV9mZW5jZV9vcHMsCi0JCQkJIG9i ai0+YmFzZS5wZW5kaW5nX3dyaXRlX2RvbWFpbiwgMTAqSFosCi0JCQkJIEdGUF9LRVJORUwgfCBf X0dGUF9OT1dBUk4pOwotCQkJaWYgKHJldCA8IDApCi0JCQkJcmV0dXJuIHJldDsKLQkJfQorCQly ZXQgPSBpOTE1X2dlbV9yZXF1ZXN0X2F3YWl0X29iamVjdAorCQkJKHJlcSwgb2JqLCBvYmotPmJh c2UucGVuZGluZ193cml0ZV9kb21haW4pOworCQlpZiAocmV0KQorCQkJcmV0dXJuIHJldDsKIAog CQlpZiAob2JqLT5iYXNlLndyaXRlX2RvbWFpbiAmIEk5MTVfR0VNX0RPTUFJTl9DUFUpCiAJCQlp OTE1X2dlbV9jbGZsdXNoX29iamVjdChvYmosIGZhbHNlKTsKQEAgLTEyOTAsOCArMTI1Miw2IEBA IHZvaWQgaTkxNV92bWFfbW92ZV90b19hY3RpdmUoc3RydWN0IGk5MTVfdm1hICp2bWEsCiAKIAlH RU1fQlVHX09OKCFkcm1fbW1fbm9kZV9hbGxvY2F0ZWQoJnZtYS0+bm9kZSkpOwogCi0Jb2JqLT5k aXJ0eSA9IDE7IC8qIGJlIHBhcmFub2lkICAqLwotCiAJLyogQWRkIGEgcmVmZXJlbmNlIGlmIHdl J3JlIG5ld2x5IGVudGVyaW5nIHRoZSBhY3RpdmUgbGlzdC4KIAkgKiBUaGUgb3JkZXIgaW4gd2hp Y2ggd2UgYWRkIG9wZXJhdGlvbnMgdG8gdGhlIHJldGlyZW1lbnQgcXVldWUgaXMKIAkgKiB2aXRh bCBoZXJlOiBtYXJrX2FjdGl2ZSBhZGRzIHRvIHRoZSBzdGFydCBvZiB0aGUgY2FsbGJhY2sgbGlz dCwKQEAgLTEyOTksMTMgKzEyNTksMTQgQEAgdm9pZCBpOTE1X3ZtYV9tb3ZlX3RvX2FjdGl2ZShz dHJ1Y3QgaTkxNV92bWEgKnZtYSwKIAkgKiBhZGQgdGhlIGFjdGl2ZSByZWZlcmVuY2UgZmlyc3Qg YW5kIHF1ZXVlIGZvciBpdCB0byBiZSBkcm9wcGVkCiAJICogKmxhc3QqLgogCSAqLwotCWlmICgh aTkxNV9nZW1fb2JqZWN0X2lzX2FjdGl2ZShvYmopKQorCWlmICghaTkxNV92bWFfaXNfYWN0aXZl KHZtYSkgJiYgIW9iai0+YWN0aXZlX2NvdW50KyspCiAJCWk5MTVfZ2VtX29iamVjdF9nZXQob2Jq KTsKLQlpOTE1X2dlbV9vYmplY3Rfc2V0X2FjdGl2ZShvYmosIGlkeCk7Ci0JaTkxNV9nZW1fYWN0 aXZlX3NldCgmb2JqLT5sYXN0X3JlYWRbaWR4XSwgcmVxKTsKKwlpOTE1X3ZtYV9zZXRfYWN0aXZl KHZtYSwgaWR4KTsKKwlpOTE1X2dlbV9hY3RpdmVfc2V0KCZ2bWEtPmxhc3RfcmVhZFtpZHhdLCBy ZXEpOworCWxpc3RfbW92ZV90YWlsKCZ2bWEtPnZtX2xpbmssICZ2bWEtPnZtLT5hY3RpdmVfbGlz dCk7CiAKIAlpZiAoZmxhZ3MgJiBFWEVDX09CSkVDVF9XUklURSkgewotCQlpOTE1X2dlbV9hY3Rp dmVfc2V0KCZvYmotPmxhc3Rfd3JpdGUsIHJlcSk7CisJCWk5MTVfZ2VtX2FjdGl2ZV9zZXQoJnZt YS0+bGFzdF93cml0ZSwgcmVxKTsKIAogCQlpbnRlbF9mYl9vYmpfaW52YWxpZGF0ZShvYmosIE9S SUdJTl9DUyk7CiAKQEAgLTEzMTUsMjEgKzEyNzYsMTMgQEAgdm9pZCBpOTE1X3ZtYV9tb3ZlX3Rv X2FjdGl2ZShzdHJ1Y3QgaTkxNV92bWEgKnZtYSwKIAogCWlmIChmbGFncyAmIEVYRUNfT0JKRUNU X05FRURTX0ZFTkNFKQogCQlpOTE1X2dlbV9hY3RpdmVfc2V0KCZ2bWEtPmxhc3RfZmVuY2UsIHJl cSk7Ci0KLQlpOTE1X3ZtYV9zZXRfYWN0aXZlKHZtYSwgaWR4KTsKLQlpOTE1X2dlbV9hY3RpdmVf c2V0KCZ2bWEtPmxhc3RfcmVhZFtpZHhdLCByZXEpOwotCWxpc3RfbW92ZV90YWlsKCZ2bWEtPnZt X2xpbmssICZ2bWEtPnZtLT5hY3RpdmVfbGlzdCk7CiB9CiAKIHN0YXRpYyB2b2lkIGViX2V4cG9y dF9mZW5jZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAogCQkJICAgIHN0cnVjdCBk cm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAogCQkJICAgIHVuc2lnbmVkIGludCBmbGFncykKIHsK LQlzdHJ1Y3QgcmVzZXJ2YXRpb25fb2JqZWN0ICpyZXN2OwotCi0JcmVzdiA9IGk5MTVfZ2VtX29i amVjdF9nZXRfZG1hYnVmX3Jlc3Yob2JqKTsKLQlpZiAoIXJlc3YpCi0JCXJldHVybjsKKwlzdHJ1 Y3QgcmVzZXJ2YXRpb25fb2JqZWN0ICpyZXN2ID0gb2JqLT5yZXN2OwogCiAJLyogSWdub3JlIGVy cm9ycyBmcm9tIGZhaWxpbmcgdG8gYWxsb2NhdGUgdGhlIG5ldyBmZW5jZSwgd2UgY2FuJ3QKIAkg KiBoYW5kbGUgYW4gZXJyb3IgcmlnaHQgbm93LiBXb3JzdCBjYXNlIHNob3VsZCBiZSBtaXNzZWQK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMKaW5kZXggMGJiNDIzMmY2NmJjLi45MmIzNmFi Nzk3NzEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jCkBAIC0zMSw2ICszMSw3IEBA CiAjaW5jbHVkZSAiaTkxNV92Z3B1LmgiCiAjaW5jbHVkZSAiaTkxNV90cmFjZS5oIgogI2luY2x1 ZGUgImludGVsX2Rydi5oIgorI2luY2x1ZGUgImludGVsX2Zyb250YnVmZmVyLmgiCiAKICNkZWZp bmUgSTkxNV9HRlBfRE1BIChHRlBfS0VSTkVMIHwgX19HRlBfSElHSE1FTSkKIApAQCAtMzMwMyw2 ICszMzA0LDcgQEAgaTkxNV92bWFfcmV0aXJlKHN0cnVjdCBpOTE1X2dlbV9hY3RpdmUgKmFjdGl2 ZSwKIAljb25zdCB1bnNpZ25lZCBpbnQgaWR4ID0gcnEtPmVuZ2luZS0+aWQ7CiAJc3RydWN0IGk5 MTVfdm1hICp2bWEgPQogCQljb250YWluZXJfb2YoYWN0aXZlLCBzdHJ1Y3QgaTkxNV92bWEsIGxh c3RfcmVhZFtpZHhdKTsKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqID0gdm1hLT5v Ymo7CiAKIAlHRU1fQlVHX09OKCFpOTE1X3ZtYV9oYXNfYWN0aXZlX2VuZ2luZSh2bWEsIGlkeCkp OwogCkBAIC0zMzEzLDYgKzMzMTUsMzEgQEAgaTkxNV92bWFfcmV0aXJlKHN0cnVjdCBpOTE1X2dl bV9hY3RpdmUgKmFjdGl2ZSwKIAlsaXN0X21vdmVfdGFpbCgmdm1hLT52bV9saW5rLCAmdm1hLT52 bS0+aW5hY3RpdmVfbGlzdCk7CiAJaWYgKHVubGlrZWx5KGk5MTVfdm1hX2lzX2Nsb3NlZCh2bWEp ICYmICFpOTE1X3ZtYV9pc19waW5uZWQodm1hKSkpCiAJCVdBUk5fT04oaTkxNV92bWFfdW5iaW5k KHZtYSkpOworCisJR0VNX0JVR19PTighaTkxNV9nZW1fb2JqZWN0X2lzX2FjdGl2ZShvYmopKTsK KwlpZiAoLS1vYmotPmFjdGl2ZV9jb3VudCkKKwkJcmV0dXJuOworCisJLyogQnVtcCBvdXIgcGxh Y2Ugb24gdGhlIGJvdW5kIGxpc3QgdG8ga2VlcCBpdCByb3VnaGx5IGluIExSVSBvcmRlcgorCSAq IHNvIHRoYXQgd2UgZG9uJ3Qgc3RlYWwgZnJvbSByZWNlbnRseSB1c2VkIGJ1dCBpbmFjdGl2ZSBv YmplY3RzCisJICogKHVubGVzcyB3ZSBhcmUgZm9yY2VkIHRvIG9mYyEpCisJICovCisJaWYgKG9i ai0+YmluZF9jb3VudCkKKwkJbGlzdF9tb3ZlX3RhaWwoJm9iai0+Z2xvYmFsX2xpc3QsICZycS0+ aTkxNS0+bW0uYm91bmRfbGlzdCk7CisKKwlvYmotPmRpcnR5ID0gMTsgLyogYmUgcGFyYW5vaWQg ICovCisKKwlpOTE1X2dlbV9vYmplY3RfcHV0KG9iaik7Cit9CisKK3N0YXRpYyB2b2lkCitpOTE1 X2dndHRfcmV0aXJlX193cml0ZShzdHJ1Y3QgaTkxNV9nZW1fYWN0aXZlICphY3RpdmUsCisJCQlz dHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3QpCit7CisJc3RydWN0IGk5MTVfdm1h ICp2bWEgPQorCQljb250YWluZXJfb2YoYWN0aXZlLCBzdHJ1Y3QgaTkxNV92bWEsIGxhc3Rfd3Jp dGUpOworCisJaW50ZWxfZmJfb2JqX2ZsdXNoKHZtYS0+b2JqLCB0cnVlLCBPUklHSU5fQ1MpOwog fQogCiB2b2lkIGk5MTVfdm1hX2Rlc3Ryb3koc3RydWN0IGk5MTVfdm1hICp2bWEpCkBAIC0zMzU2 LDYgKzMzODMsOCBAQCBfX2k5MTVfdm1hX2NyZWF0ZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVj dCAqb2JqLAogCUlOSVRfTElTVF9IRUFEKCZ2bWEtPmV4ZWNfbGlzdCk7CiAJZm9yIChpID0gMDsg aSA8IEFSUkFZX1NJWkUodm1hLT5sYXN0X3JlYWQpOyBpKyspCiAJCWluaXRfcmVxdWVzdF9hY3Rp dmUoJnZtYS0+bGFzdF9yZWFkW2ldLCBpOTE1X3ZtYV9yZXRpcmUpOworCWluaXRfcmVxdWVzdF9h Y3RpdmUoJnZtYS0+bGFzdF93cml0ZSwKKwkJCSAgICBpOTE1X2lzX2dndHQodm0pID8gaTkxNV9n Z3R0X3JldGlyZV9fd3JpdGUgOiBOVUxMKTsKIAlpbml0X3JlcXVlc3RfYWN0aXZlKCZ2bWEtPmxh c3RfZmVuY2UsIE5VTEwpOwogCWxpc3RfYWRkKCZ2bWEtPnZtX2xpbmssICZ2bS0+dW5ib3VuZF9s aXN0KTsKIAl2bWEtPnZtID0gdm07CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV9ndHQuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5oCmluZGV4 IGVjNzhiZTJmOGM3Ny4uMjFmNWQ5NjU3MjcxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbV9ndHQuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9n dHQuaApAQCAtMjExLDYgKzIxMSw3IEBAIHN0cnVjdCBpOTE1X3ZtYSB7CiAKIAl1bnNpZ25lZCBp bnQgYWN0aXZlOwogCXN0cnVjdCBpOTE1X2dlbV9hY3RpdmUgbGFzdF9yZWFkW0k5MTVfTlVNX0VO R0lORVNdOworCXN0cnVjdCBpOTE1X2dlbV9hY3RpdmUgbGFzdF93cml0ZTsKIAlzdHJ1Y3QgaTkx NV9nZW1fYWN0aXZlIGxhc3RfZmVuY2U7CiAKIAkvKioKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ2VtX3JlcXVlc3QuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtX3JlcXVlc3QuYwppbmRleCA2ODc1MzdkOTFiZTguLmJjMjdjODBiZTFlNCAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fcmVxdWVzdC5jCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlcXVlc3QuYwpAQCAtMTkzLDYgKzE5Myw4IEBAIHN0YXRp YyB2b2lkIGk5MTVfZ2VtX3JlcXVlc3RfcmV0aXJlKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVz dCAqcmVxdWVzdCkKIAl9CiAKIAlpOTE1X2dlbV9jb250ZXh0X3B1dChyZXF1ZXN0LT5jdHgpOwor CisJZmVuY2Vfc2lnbmFsKCZyZXF1ZXN0LT5mZW5jZSk7CiAJaTkxNV9nZW1fcmVxdWVzdF9wdXQo cmVxdWVzdCk7CiB9CiAKQEAgLTUzOCwzMyArNTQwLDQxIEBAIGk5MTVfZ2VtX3JlcXVlc3RfYXdh aXRfb2JqZWN0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqdG8sCiAJCQkgICAgICBzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAogCQkJICAgICAgYm9vbCB3cml0ZSkKIHsKLQlz dHJ1Y3QgaTkxNV9nZW1fYWN0aXZlICphY3RpdmU7Ci0JdW5zaWduZWQgbG9uZyBhY3RpdmVfbWFz azsKLQlpbnQgaWR4OworCXN0cnVjdCBmZW5jZSAqZXhjbDsKKwlpbnQgcmV0ID0gMDsKIAogCWlm ICh3cml0ZSkgewotCQlhY3RpdmVfbWFzayA9IGk5MTVfZ2VtX29iamVjdF9nZXRfYWN0aXZlKG9i aik7Ci0JCWFjdGl2ZSA9IG9iai0+bGFzdF9yZWFkOworCQlzdHJ1Y3QgZmVuY2UgKipzaGFyZWQ7 CisJCXVuc2lnbmVkIGludCBjb3VudCwgaTsKKworCQlyZXQgPSByZXNlcnZhdGlvbl9vYmplY3Rf Z2V0X2ZlbmNlc19yY3Uob2JqLT5yZXN2LAorCQkJCQkJCSZleGNsLCAmY291bnQsICZzaGFyZWQp OworCQlpZiAocmV0KQorCQkJcmV0dXJuIHJldDsKKworCQlmb3IgKGkgPSAwOyBpIDwgY291bnQ7 IGkrKykgeworCQkJcmV0ID0gaTkxNV9nZW1fcmVxdWVzdF9hd2FpdF9mZW5jZSh0bywgc2hhcmVk W2ldKTsKKwkJCWlmIChyZXQpCisJCQkJYnJlYWs7CisKKwkJCWZlbmNlX3B1dChzaGFyZWRbaV0p OworCQl9CisKKwkJZm9yICg7IGkgPCBjb3VudDsgaSsrKQorCQkJZmVuY2VfcHV0KHNoYXJlZFtp XSk7CisJCWtmcmVlKHNoYXJlZCk7CiAJfSBlbHNlIHsKLQkJYWN0aXZlX21hc2sgPSAxOwotCQlh Y3RpdmUgPSAmb2JqLT5sYXN0X3dyaXRlOworCQlleGNsID0gcmVzZXJ2YXRpb25fb2JqZWN0X2dl dF9leGNsX3JjdShvYmotPnJlc3YpOwogCX0KIAotCWZvcl9lYWNoX2FjdGl2ZShhY3RpdmVfbWFz aywgaWR4KSB7Ci0JCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdDsKLQkJaW50 IHJldDsKLQotCQlyZXF1ZXN0ID0gaTkxNV9nZW1fYWN0aXZlX3BlZWsoJmFjdGl2ZVtpZHhdLAot CQkJCQkgICAgICAgJm9iai0+YmFzZS5kZXYtPnN0cnVjdF9tdXRleCk7Ci0JCWlmICghcmVxdWVz dCkKLQkJCWNvbnRpbnVlOworCWlmIChleGNsKSB7CisJCWlmIChyZXQgPT0gMCkKKwkJCXJldCA9 IGk5MTVfZ2VtX3JlcXVlc3RfYXdhaXRfZmVuY2UodG8sIGV4Y2wpOwogCi0JCXJldCA9IGk5MTVf Z2VtX3JlcXVlc3RfYXdhaXRfcmVxdWVzdCh0bywgcmVxdWVzdCk7Ci0JCWlmIChyZXQpCi0JCQly ZXR1cm4gcmV0OworCQlmZW5jZV9wdXQoZXhjbCk7CiAJfQogCi0JcmV0dXJuIDA7CisJcmV0dXJu IHJldDsKIH0KIAogc3RhdGljIHZvaWQgaTkxNV9nZW1fbWFya19idXN5KGNvbnN0IHN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtX3JlcXVlc3QuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlcXVl c3QuaAppbmRleCA0NTk5OGVlZGRhMmMuLmZlNzUwMjZjNjBlMCAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fcmVxdWVzdC5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtX3JlcXVlc3QuaApAQCAtNTU0LDIyICs1NTQsNyBAQCBpOTE1X2dlbV9hY3Rp dmVfaXNzZXQoY29uc3Qgc3RydWN0IGk5MTVfZ2VtX2FjdGl2ZSAqYWN0aXZlKQogfQogCiAvKioK LSAqIGk5MTVfZ2VtX2FjdGl2ZV9pc19pZGxlIC0gcmVwb3J0IHdoZXRoZXIgdGhlIGFjdGl2ZSB0 cmFja2VyIGlzIGlkbGUKLSAqIEBhY3RpdmUgLSB0aGUgYWN0aXZlIHRyYWNrZXIKLSAqCi0gKiBp OTE1X2dlbV9hY3RpdmVfaXNfaWRsZSgpIHJldHVybnMgdHJ1ZSBpZiB0aGUgYWN0aXZlIHRyYWNr ZXIgaXMgY3VycmVudGx5Ci0gKiB1bmFzc2lnbmVkIG9yIGlmIHRoZSByZXF1ZXN0IGlzIGNvbXBs ZXRlIChidXQgbm90IHlldCByZXRpcmVkKS4gUmVxdWlyZXMKLSAqIHRoZSBjYWxsZXIgdG8gaG9s ZCBzdHJ1Y3RfbXV0ZXggKGJ1dCB0aGF0IGNhbiBiZSByZWxheGVkIGlmIGRlc2lyZWQpLgotICov Ci1zdGF0aWMgaW5saW5lIGJvb2wKLWk5MTVfZ2VtX2FjdGl2ZV9pc19pZGxlKGNvbnN0IHN0cnVj dCBpOTE1X2dlbV9hY3RpdmUgKmFjdGl2ZSwKLQkJCXN0cnVjdCBtdXRleCAqbXV0ZXgpCi17Ci0J cmV0dXJuICFpOTE1X2dlbV9hY3RpdmVfcGVlayhhY3RpdmUsIG11dGV4KTsKLX0KLQotLyoqCi0g KiBpOTE1X2dlbV9hY3RpdmVfd2FpdC0gd2FpdHMgdW50aWwgdGhlIHJlcXVlc3QgaXMgY29tcGxl dGVkCisgKiBpOTE1X2dlbV9hY3RpdmVfd2FpdCAtIHdhaXRzIHVudGlsIHRoZSByZXF1ZXN0IGlz IGNvbXBsZXRlZAogICogQGFjdGl2ZSAtIHRoZSBhY3RpdmUgcmVxdWVzdCBvbiB3aGljaCB0byB3 YWl0CiAgKiBAZmxhZ3MgLSBob3cgdG8gd2FpdAogICogQHRpbWVvdXQgLSBob3cgbG9uZyB0byB3 YWl0IGF0IG1vc3QKQEAgLTYzOSwyNCArNjI0LDYgQEAgaTkxNV9nZW1fYWN0aXZlX3JldGlyZShz dHJ1Y3QgaTkxNV9nZW1fYWN0aXZlICphY3RpdmUsCiAJcmV0dXJuIDA7CiB9CiAKLS8qIENvbnZl bmllbmNlIGZ1bmN0aW9ucyBmb3IgcGVla2luZyBhdCBzdGF0ZSBpbnNpZGUgYWN0aXZlJ3MgcmVx dWVzdCB3aGlsc3QKLSAqIGd1YXJkZWQgYnkgdGhlIHN0cnVjdF9tdXRleC4KLSAqLwotCi1zdGF0 aWMgaW5saW5lIHVpbnQzMl90Ci1pOTE1X2dlbV9hY3RpdmVfZ2V0X3NlcW5vKGNvbnN0IHN0cnVj dCBpOTE1X2dlbV9hY3RpdmUgKmFjdGl2ZSwKLQkJCSAgc3RydWN0IG11dGV4ICptdXRleCkKLXsK LQlyZXR1cm4gaTkxNV9nZW1fcmVxdWVzdF9nZXRfc2Vxbm8oaTkxNV9nZW1fYWN0aXZlX3BlZWso YWN0aXZlLCBtdXRleCkpOwotfQotCi1zdGF0aWMgaW5saW5lIHN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKgotaTkxNV9nZW1fYWN0aXZlX2dldF9lbmdpbmUoY29uc3Qgc3RydWN0IGk5MTVfZ2VtX2Fj dGl2ZSAqYWN0aXZlLAotCQkJICAgc3RydWN0IG11dGV4ICptdXRleCkKLXsKLQlyZXR1cm4gaTkx NV9nZW1fcmVxdWVzdF9nZXRfZW5naW5lKGk5MTVfZ2VtX2FjdGl2ZV9wZWVrKGFjdGl2ZSwgbXV0 ZXgpKTsKLX0KLQogI2RlZmluZSBmb3JfZWFjaF9hY3RpdmUobWFzaywgaWR4KSBcCiAJZm9yICg7 IG1hc2sgPyBpZHggPSBmZnMobWFzaykgLSAxLCAxIDogMDsgbWFzayAmPSB+QklUKGlkeCkpCiAK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5jCmluZGV4IDMzNGYxNWRmN2M4ZC4uM2Qz ZjQxMGQ5YWE5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJv ci5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMKQEAgLTc5NSw5 ICs3OTUsOSBAQCBzdGF0aWMgdm9pZCBjYXB0dXJlX2JvKHN0cnVjdCBkcm1faTkxNV9lcnJvcl9i dWZmZXIgKmVyciwKIAllcnItPm5hbWUgPSBvYmotPmJhc2UubmFtZTsKIAogCWZvciAoaSA9IDA7 IGkgPCBJOTE1X05VTV9FTkdJTkVTOyBpKyspCi0JCWVyci0+cnNlcW5vW2ldID0gX19hY3RpdmVf Z2V0X3NlcW5vKCZvYmotPmxhc3RfcmVhZFtpXSk7Ci0JZXJyLT53c2Vxbm8gPSBfX2FjdGl2ZV9n ZXRfc2Vxbm8oJm9iai0+bGFzdF93cml0ZSk7Ci0JZXJyLT5lbmdpbmUgPSBfX2FjdGl2ZV9nZXRf ZW5naW5lX2lkKCZvYmotPmxhc3Rfd3JpdGUpOworCQllcnItPnJzZXFub1tpXSA9IF9fYWN0aXZl X2dldF9zZXFubygmdm1hLT5sYXN0X3JlYWRbaV0pOworCWVyci0+d3NlcW5vID0gX19hY3RpdmVf Z2V0X3NlcW5vKCZ2bWEtPmxhc3Rfd3JpdGUpOworCWVyci0+ZW5naW5lID0gX19hY3RpdmVfZ2V0 X2VuZ2luZV9pZCgmdm1hLT5sYXN0X3dyaXRlKTsKIAogCWVyci0+Z3R0X29mZnNldCA9IHZtYS0+ bm9kZS5zdGFydDsKIAllcnItPnJlYWRfZG9tYWlucyA9IG9iai0+YmFzZS5yZWFkX2RvbWFpbnM7 CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdG9taWNfcGxhbmUuYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F0b21pY19wbGFuZS5jCmluZGV4IGI4MmRlMzA3 MmQ0Zi4uYTg5Mjc5MjljNzQwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9hdG9taWNfcGxhbmUuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdG9taWNf cGxhbmUuYwpAQCAtODQsNyArODQsNiBAQCBpbnRlbF9wbGFuZV9kdXBsaWNhdGVfc3RhdGUoc3Ry dWN0IGRybV9wbGFuZSAqcGxhbmUpCiAJc3RhdGUgPSAmaW50ZWxfc3RhdGUtPmJhc2U7CiAKIAlf X2RybV9hdG9taWNfaGVscGVyX3BsYW5lX2R1cGxpY2F0ZV9zdGF0ZShwbGFuZSwgc3RhdGUpOwot CWludGVsX3N0YXRlLT53YWl0X3JlcSA9IE5VTEw7CiAKIAlyZXR1cm4gc3RhdGU7CiB9CkBAIC0x MDEsNyArMTAwLDYgQEAgdm9pZAogaW50ZWxfcGxhbmVfZGVzdHJveV9zdGF0ZShzdHJ1Y3QgZHJt X3BsYW5lICpwbGFuZSwKIAkJCSAgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqc3RhdGUpCiB7Ci0J V0FSTl9PTihzdGF0ZSAmJiB0b19pbnRlbF9wbGFuZV9zdGF0ZShzdGF0ZSktPndhaXRfcmVxKTsK IAlkcm1fYXRvbWljX2hlbHBlcl9wbGFuZV9kZXN0cm95X3N0YXRlKHBsYW5lLCBzdGF0ZSk7CiB9 CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwppbmRleCBhNWQ2MWYwZWVhMWQuLmEz ZGJlYjUwYzQxZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxh eS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwpAQCAtMzcsNyAr MzcsNiBAQAogI2luY2x1ZGUgImludGVsX2Zyb250YnVmZmVyLmgiCiAjaW5jbHVkZSA8ZHJtL2k5 MTVfZHJtLmg+CiAjaW5jbHVkZSAiaTkxNV9kcnYuaCIKLSNpbmNsdWRlICJpOTE1X2dlbV9kbWFi dWYuaCIKICNpbmNsdWRlICJpbnRlbF9kc2kuaCIKICNpbmNsdWRlICJpOTE1X3RyYWNlLmgiCiAj aW5jbHVkZSA8ZHJtL2RybV9hdG9taWMuaD4KQEAgLTExOTE3LDggKzExOTE2LDYgQEAgc3RhdGlj IGludCBpbnRlbF9nZW43X3F1ZXVlX2ZsaXAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIHN0YXRp YyBib29sIHVzZV9tbWlvX2ZsaXAoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAogCQkJ ICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQogewotCXN0cnVjdCByZXNlcnZhdGlv bl9vYmplY3QgKnJlc3Y7Ci0KIAkvKgogCSAqIFRoaXMgaXMgbm90IGJlaW5nIHVzZWQgZm9yIG9s ZGVyIHBsYXRmb3JtcywgYmVjYXVzZQogCSAqIG5vbi1hdmFpbGFiaWxpdHkgb2YgZmxpcCBkb25l IGludGVycnVwdCBmb3JjZXMgdXMgdG8gdXNlCkBAIC0xMTkzNSwxNyArMTE5MzIsOCBAQCBzdGF0 aWMgYm9vbCB1c2VfbW1pb19mbGlwKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKIAog CWlmIChpOTE1LnVzZV9tbWlvX2ZsaXAgPCAwKQogCQlyZXR1cm4gZmFsc2U7Ci0JZWxzZSBpZiAo aTkxNS51c2VfbW1pb19mbGlwID4gMCkKLQkJcmV0dXJuIHRydWU7Ci0JZWxzZSBpZiAoaTkxNS5l bmFibGVfZXhlY2xpc3RzKQotCQlyZXR1cm4gdHJ1ZTsKIAotCXJlc3YgPSBpOTE1X2dlbV9vYmpl Y3RfZ2V0X2RtYWJ1Zl9yZXN2KG9iaik7Ci0JaWYgKHJlc3YgJiYgIXJlc2VydmF0aW9uX29iamVj dF90ZXN0X3NpZ25hbGVkX3JjdShyZXN2LCBmYWxzZSkpCi0JCXJldHVybiB0cnVlOwotCi0JcmV0 dXJuIGVuZ2luZSAhPSBpOTE1X2dlbV9hY3RpdmVfZ2V0X2VuZ2luZSgmb2JqLT5sYXN0X3dyaXRl LAotCQkJCQkJICAgICZvYmotPmJhc2UuZGV2LT5zdHJ1Y3RfbXV0ZXgpOworCXJldHVybiB0cnVl OwogfQogCiBzdGF0aWMgdm9pZCBza2xfZG9fbW1pb19mbGlwKHN0cnVjdCBpbnRlbF9jcnRjICpp bnRlbF9jcnRjLApAQCAtMTIwMTgsMTcgKzEyMDA2LDggQEAgc3RhdGljIHZvaWQgaW50ZWxfbW1p b19mbGlwX3dvcmtfZnVuYyhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKncpCiAJc3RydWN0IGludGVsX2Zy YW1lYnVmZmVyICppbnRlbF9mYiA9CiAJCXRvX2ludGVsX2ZyYW1lYnVmZmVyKGNydGMtPmJhc2Uu cHJpbWFyeS0+ZmIpOwogCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmogPSBpbnRlbF9m Yi0+b2JqOwotCXN0cnVjdCByZXNlcnZhdGlvbl9vYmplY3QgKnJlc3Y7CiAKLQlpZiAod29yay0+ ZmxpcF9xdWV1ZWRfcmVxKQotCQlXQVJOX09OKGk5MTVfd2FpdF9yZXF1ZXN0KHdvcmstPmZsaXBf cXVldWVkX3JlcSwKLQkJCQkJICAwLCBNQVhfU0NIRURVTEVfVElNRU9VVCkgPCAwKTsKLQotCS8q IEZvciBmcmFtZWJ1ZmZlciBiYWNrZWQgYnkgZG1hYnVmLCB3YWl0IGZvciBmZW5jZSAqLwotCXJl c3YgPSBpOTE1X2dlbV9vYmplY3RfZ2V0X2RtYWJ1Zl9yZXN2KG9iaik7Ci0JaWYgKHJlc3YpCi0J CVdBUk5fT04ocmVzZXJ2YXRpb25fb2JqZWN0X3dhaXRfdGltZW91dF9yY3UocmVzdiwgZmFsc2Us IGZhbHNlLAotCQkJCQkJCSAgICBNQVhfU0NIRURVTEVfVElNRU9VVCkgPCAwKTsKKwlXQVJOX09O KGk5MTVfZ2VtX29iamVjdF93YWl0KG9iaiwgMCwgTUFYX1NDSEVEVUxFX1RJTUVPVVQsIE5VTEwp IDwgMCk7CiAKIAlpbnRlbF9waXBlX3VwZGF0ZV9zdGFydChjcnRjKTsKIApAQCAtMTIyMjYsMTMg KzEyMjA1LDggQEAgc3RhdGljIGludCBpbnRlbF9jcnRjX3BhZ2VfZmxpcChzdHJ1Y3QgZHJtX2Ny dGMgKmNydGMsCiAJCWlmIChmYi0+bW9kaWZpZXJbMF0gIT0gb2xkX2ZiLT5tb2RpZmllclswXSkK IAkJCS8qIHZsdjogRElTUExBWV9GTElQIGZhaWxzIHRvIGNoYW5nZSB0aWxpbmcgKi8KIAkJCWVu Z2luZSA9IE5VTEw7Ci0JfSBlbHNlIGlmIChJU19JVllCUklER0UoZGV2KSB8fCBJU19IQVNXRUxM KGRldikpIHsKLQkJZW5naW5lID0gJmRldl9wcml2LT5lbmdpbmVbQkNTXTsKIAl9IGVsc2UgaWYg KElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDcpIHsKLQkJZW5naW5lID0gaTkxNV9nZW1fYWN0aXZl X2dldF9lbmdpbmUoJm9iai0+bGFzdF93cml0ZSwKLQkJCQkJCSAgICAmb2JqLT5iYXNlLmRldi0+ c3RydWN0X211dGV4KTsKLQkJaWYgKGVuZ2luZSA9PSBOVUxMIHx8IGVuZ2luZS0+aWQgIT0gUkNT KQotCQkJZW5naW5lID0gJmRldl9wcml2LT5lbmdpbmVbQkNTXTsKKwkJZW5naW5lID0gJmRldl9w cml2LT5lbmdpbmVbQkNTXTsKIAl9IGVsc2UgewogCQllbmdpbmUgPSAmZGV2X3ByaXYtPmVuZ2lu ZVtSQ1NdOwogCX0KQEAgLTEyMjYyLDkgKzEyMjM2LDYgQEAgc3RhdGljIGludCBpbnRlbF9jcnRj X3BhZ2VfZmxpcChzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAKIAlpZiAobW1pb19mbGlwKSB7CiAJ CUlOSVRfV09SSygmd29yay0+bW1pb193b3JrLCBpbnRlbF9tbWlvX2ZsaXBfd29ya19mdW5jKTsK LQotCQl3b3JrLT5mbGlwX3F1ZXVlZF9yZXEgPSBpOTE1X2dlbV9hY3RpdmVfZ2V0KCZvYmotPmxh c3Rfd3JpdGUsCi0JCQkJCQkJICAgICZvYmotPmJhc2UuZGV2LT5zdHJ1Y3RfbXV0ZXgpOwogCQlz Y2hlZHVsZV93b3JrKCZ3b3JrLT5tbWlvX3dvcmspOwogCX0gZWxzZSB7CiAJCXJlcXVlc3QgPSBp OTE1X2dlbV9yZXF1ZXN0X2FsbG9jKGVuZ2luZSwgZW5naW5lLT5sYXN0X2NvbnRleHQpOwpAQCAt MTQwMzYsMTMgKzE0MDA3LDEwIEBAIHN0YXRpYyBpbnQgaW50ZWxfYXRvbWljX2NoZWNrKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsCiB9CiAKIHN0YXRpYyBpbnQgaW50ZWxfYXRvbWljX3ByZXBhcmVf Y29tbWl0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCi0JCQkJICAgICAgIHN0cnVjdCBkcm1fYXRv bWljX3N0YXRlICpzdGF0ZSwKLQkJCQkgICAgICAgYm9vbCBub25ibG9jaykKKwkJCQkgICAgICAg c3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKLQlzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpw bGFuZV9zdGF0ZTsKIAlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNydGNfc3RhdGU7Ci0Jc3RydWN0 IGRybV9wbGFuZSAqcGxhbmU7CiAJc3RydWN0IGRybV9jcnRjICpjcnRjOwogCWludCBpLCByZXQ7 CiAKQEAgLTE0MDY1LDMwICsxNDAzMyw2IEBAIHN0YXRpYyBpbnQgaW50ZWxfYXRvbWljX3ByZXBh cmVfY29tbWl0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJcmV0ID0gZHJtX2F0b21pY19oZWxw ZXJfcHJlcGFyZV9wbGFuZXMoZGV2LCBzdGF0ZSk7CiAJbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVj dF9tdXRleCk7CiAKLQlpZiAoIXJldCAmJiAhbm9uYmxvY2spIHsKLQkJZm9yX2VhY2hfcGxhbmVf aW5fc3RhdGUoc3RhdGUsIHBsYW5lLCBwbGFuZV9zdGF0ZSwgaSkgewotCQkJc3RydWN0IGludGVs X3BsYW5lX3N0YXRlICppbnRlbF9wbGFuZV9zdGF0ZSA9Ci0JCQkJdG9faW50ZWxfcGxhbmVfc3Rh dGUocGxhbmVfc3RhdGUpOwotCQkJbG9uZyB0aW1lb3V0OwotCi0JCQlpZiAoIWludGVsX3BsYW5l X3N0YXRlLT53YWl0X3JlcSkKLQkJCQljb250aW51ZTsKLQotCQkJdGltZW91dCA9IGk5MTVfd2Fp dF9yZXF1ZXN0KGludGVsX3BsYW5lX3N0YXRlLT53YWl0X3JlcSwKLQkJCQkJCSAgICBJOTE1X1dB SVRfSU5URVJSVVBUSUJMRSwKLQkJCQkJCSAgICBNQVhfU0NIRURVTEVfVElNRU9VVCk7Ci0JCQlp ZiAodGltZW91dCA8IDApIHsKLQkJCQkvKiBBbnkgaGFuZyBzaG91bGQgYmUgc3dhbGxvd2VkIGJ5 IHRoZSB3YWl0ICovCi0JCQkJV0FSTl9PTih0aW1lb3V0ID09IC1FSU8pOwotCQkJCW11dGV4X2xv Y2soJmRldi0+c3RydWN0X211dGV4KTsKLQkJCQlkcm1fYXRvbWljX2hlbHBlcl9jbGVhbnVwX3Bs YW5lcyhkZXYsIHN0YXRlKTsKLQkJCQltdXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsK LQkJCQlyZXQgPSB0aW1lb3V0OwotCQkJCWJyZWFrOwotCQkJfQotCQl9Ci0JfQotCiAJcmV0dXJu IHJldDsKIH0KIApAQCAtMTQyODAsMjYgKzE0MjI0LDExIEBAIHN0YXRpYyB2b2lkIGludGVsX2F0 b21pY19jb21taXRfdGFpbChzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCiAJc3RydWN0 IGRybV9jcnRjX3N0YXRlICpvbGRfY3J0Y19zdGF0ZTsKIAlzdHJ1Y3QgZHJtX2NydGMgKmNydGM7 CiAJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmludGVsX2NzdGF0ZTsKLQlzdHJ1Y3QgZHJtX3Bs YW5lICpwbGFuZTsKLQlzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZTsKIAlib29s IGh3X2NoZWNrID0gaW50ZWxfc3RhdGUtPm1vZGVzZXQ7CiAJdW5zaWduZWQgbG9uZyBwdXRfZG9t YWluc1tJOTE1X01BWF9QSVBFU10gPSB7fTsKIAl1bnNpZ25lZCBjcnRjX3ZibGFua19tYXNrID0g MDsKIAlpbnQgaTsKIAotCWZvcl9lYWNoX3BsYW5lX2luX3N0YXRlKHN0YXRlLCBwbGFuZSwgcGxh bmVfc3RhdGUsIGkpIHsKLQkJc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICppbnRlbF9wbGFuZV9z dGF0ZSA9Ci0JCQl0b19pbnRlbF9wbGFuZV9zdGF0ZShwbGFuZV9zdGF0ZSk7Ci0KLQkJaWYgKCFp bnRlbF9wbGFuZV9zdGF0ZS0+d2FpdF9yZXEpCi0JCQljb250aW51ZTsKLQotCQkvKiBFSU8gc2hv dWxkIGJlIGVhdGVuLCBhbmQgd2UgY2FuJ3QgZ2V0IGludGVycnVwdGVkIGluIHRoZQotCQkgKiB3 b3JrZXIsIGFuZCBibG9ja2luZyBjb21taXRzIGhhdmUgd2FpdGVkIGFscmVhZHkuICovCi0JCVdB Uk5fT04oaTkxNV93YWl0X3JlcXVlc3QoaW50ZWxfcGxhbmVfc3RhdGUtPndhaXRfcmVxLAotCQkJ CQkgIDAsIE1BWF9TQ0hFRFVMRV9USU1FT1VUKSA8IDApOwotCX0KLQogCWRybV9hdG9taWNfaGVs cGVyX3dhaXRfZm9yX2RlcGVuZGVuY2llcyhzdGF0ZSk7CiAKIAlpZiAoaW50ZWxfc3RhdGUtPm1v ZGVzZXQpIHsKQEAgLTE0NTA3LDcgKzE0NDM2LDcgQEAgc3RhdGljIGludCBpbnRlbF9hdG9taWNf Y29tbWl0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAKIAlJTklUX1dPUksoJnN0YXRlLT5jb21t aXRfd29yaywgaW50ZWxfYXRvbWljX2NvbW1pdF93b3JrKTsKIAotCXJldCA9IGludGVsX2F0b21p Y19wcmVwYXJlX2NvbW1pdChkZXYsIHN0YXRlLCBub25ibG9jayk7CisJcmV0ID0gaW50ZWxfYXRv bWljX3ByZXBhcmVfY29tbWl0KGRldiwgc3RhdGUpOwogCWlmIChyZXQpIHsKIAkJRFJNX0RFQlVH X0FUT01JQygiUHJlcGFyaW5nIHN0YXRlIGZhaWxlZCB3aXRoICVpXG4iLCByZXQpOwogCQlyZXR1 cm4gcmV0OwpAQCAtMTQ2MzksNyArMTQ1NjgsNyBAQCBpbnRlbF9wcmVwYXJlX3BsYW5lX2ZiKHN0 cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAogCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gbmV3 X3N0YXRlLT5mYjsKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqID0gaW50ZWxfZmJf b2JqKGZiKTsKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2xkX29iaiA9IGludGVsX2Zi X29iaihwbGFuZS0+c3RhdGUtPmZiKTsKLQlzdHJ1Y3QgcmVzZXJ2YXRpb25fb2JqZWN0ICpyZXN2 OworCWxvbmcgbHJldDsKIAlpbnQgcmV0ID0gMDsKIAogCWlmICghb2JqICYmICFvbGRfb2JqKQpA QCAtMTQ2NzgsMzkgKzE0NjA3LDM0IEBAIGludGVsX3ByZXBhcmVfcGxhbmVfZmIoc3RydWN0IGRy bV9wbGFuZSAqcGxhbmUsCiAJCXJldHVybiAwOwogCiAJLyogRm9yIGZyYW1lYnVmZmVyIGJhY2tl ZCBieSBkbWFidWYsIHdhaXQgZm9yIGZlbmNlICovCi0JcmVzdiA9IGk5MTVfZ2VtX29iamVjdF9n ZXRfZG1hYnVmX3Jlc3Yob2JqKTsKLQlpZiAocmVzdikgewotCQlsb25nIGxyZXQ7Ci0KLQkJbHJl dCA9IHJlc2VydmF0aW9uX29iamVjdF93YWl0X3RpbWVvdXRfcmN1KHJlc3YsIGZhbHNlLCB0cnVl LAotCQkJCQkJCSAgIE1BWF9TQ0hFRFVMRV9USU1FT1VUKTsKLQkJaWYgKGxyZXQgPT0gLUVSRVNU QVJUU1lTKQotCQkJcmV0dXJuIGxyZXQ7CisJbHJldCA9IGk5MTVfZ2VtX29iamVjdF93YWl0KG9i aiwKKwkJCQkgICAgSTkxNV9XQUlUX0lOVEVSUlVQVElCTEUgfCBJOTE1X1dBSVRfTE9DS0VELAor CQkJCSAgICBNQVhfU0NIRURVTEVfVElNRU9VVCwKKwkJCQkgICAgTlVMTCk7CisJaWYgKGxyZXQg PT0gLUVSRVNUQVJUU1lTKQorCQlyZXR1cm4gbHJldDsKIAotCQlXQVJOKGxyZXQgPCAwLCAid2Fp dGluZyByZXR1cm5zICVsaVxuIiwgbHJldCk7Ci0JfQorCVdBUk4obHJldCA8IDAsICJ3YWl0aW5n IHJldHVybnMgJWxpXG4iLCBscmV0KTsKIAogCWlmIChwbGFuZS0+dHlwZSA9PSBEUk1fUExBTkVf VFlQRV9DVVJTT1IgJiYKIAkgICAgSU5URUxfSU5GTyhkZXYpLT5jdXJzb3JfbmVlZHNfcGh5c2lj YWwpIHsKIAkJaW50IGFsaWduID0gSVNfSTgzMChkZXYpID8gMTYgKiAxMDI0IDogMjU2OwogCQly ZXQgPSBpOTE1X2dlbV9vYmplY3RfYXR0YWNoX3BoeXMob2JqLCBhbGlnbik7Ci0JCWlmIChyZXQp CisJCWlmIChyZXQpIHsKIAkJCURSTV9ERUJVR19LTVMoImZhaWxlZCB0byBhdHRhY2ggcGh5cyBv YmplY3RcbiIpOworCQkJcmV0dXJuIHJldDsKKwkJfQogCX0gZWxzZSB7CiAJCXN0cnVjdCBpOTE1 X3ZtYSAqdm1hOwogCiAJCXZtYSA9IGludGVsX3Bpbl9hbmRfZmVuY2VfZmJfb2JqKGZiLCBuZXdf c3RhdGUtPnJvdGF0aW9uKTsKLQkJaWYgKElTX0VSUih2bWEpKQotCQkJcmV0ID0gUFRSX0VSUih2 bWEpOwotCX0KLQotCWlmIChyZXQgPT0gMCkgewotCQl0b19pbnRlbF9wbGFuZV9zdGF0ZShuZXdf c3RhdGUpLT53YWl0X3JlcSA9Ci0JCQlpOTE1X2dlbV9hY3RpdmVfZ2V0KCZvYmotPmxhc3Rfd3Jp dGUsCi0JCQkJCSAgICAmb2JqLT5iYXNlLmRldi0+c3RydWN0X211dGV4KTsKKwkJaWYgKElTX0VS Uih2bWEpKSB7CisJCQlEUk1fREVCVUdfS01TKCJmYWlsZWQgdG8gcGluIG9iamVjdFxuIik7CisJ CQlyZXR1cm4gUFRSX0VSUih2bWEpOworCQl9CiAJfQogCi0JcmV0dXJuIHJldDsKKwlyZXR1cm4g MDsKIH0KIAogLyoqCkBAIC0xNDcyOCw3ICsxNDY1Miw2IEBAIGludGVsX2NsZWFudXBfcGxhbmVf ZmIoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCiB7CiAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9 IHBsYW5lLT5kZXY7CiAJc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpvbGRfaW50ZWxfc3RhdGU7 Ci0Jc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICppbnRlbF9zdGF0ZSA9IHRvX2ludGVsX3BsYW5l X3N0YXRlKHBsYW5lLT5zdGF0ZSk7CiAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9sZF9v YmogPSBpbnRlbF9mYl9vYmoob2xkX3N0YXRlLT5mYik7CiAJc3RydWN0IGRybV9pOTE1X2dlbV9v YmplY3QgKm9iaiA9IGludGVsX2ZiX29iaihwbGFuZS0+c3RhdGUtPmZiKTsKIApAQCAtMTQ3NDAs OSArMTQ2NjMsNiBAQCBpbnRlbF9jbGVhbnVwX3BsYW5lX2ZiKHN0cnVjdCBkcm1fcGxhbmUgKnBs YW5lLAogCWlmIChvbGRfb2JqICYmIChwbGFuZS0+dHlwZSAhPSBEUk1fUExBTkVfVFlQRV9DVVJT T1IgfHwKIAkgICAgIUlOVEVMX0lORk8oZGV2KS0+Y3Vyc29yX25lZWRzX3BoeXNpY2FsKSkKIAkJ aW50ZWxfdW5waW5fZmJfb2JqKG9sZF9zdGF0ZS0+ZmIsIG9sZF9zdGF0ZS0+cm90YXRpb24pOwot Ci0JaTkxNV9nZW1fcmVxdWVzdF9hc3NpZ24oJmludGVsX3N0YXRlLT53YWl0X3JlcSwgTlVMTCk7 Ci0JaTkxNV9nZW1fcmVxdWVzdF9hc3NpZ24oJm9sZF9pbnRlbF9zdGF0ZS0+d2FpdF9yZXEsIE5V TEwpOwogfQogCiBpbnQKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Ry di5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKaW5kZXggYWJlN2E0ZGYyZTQz Li4xNWUzMDUwZWRlYjkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Ry di5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCkBAIC0zOTMsOSArMzkz LDYgQEAgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlIHsKIAlpbnQgc2NhbGVyX2lkOwogCiAJc3Ry dWN0IGRybV9pbnRlbF9zcHJpdGVfY29sb3JrZXkgY2tleTsKLQotCS8qIGFzeW5jIGZsaXAgcmVs YXRlZCBzdHJ1Y3R1cmVzICovCi0Jc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICp3YWl0X3Jl cTsKIH07CiAKIHN0cnVjdCBpbnRlbF9pbml0aWFsX3BsYW5lX2NvbmZpZyB7CmRpZmYgLS1naXQg YS9pbmNsdWRlL3VhcGkvZHJtL2k5MTVfZHJtLmggYi9pbmNsdWRlL3VhcGkvZHJtL2k5MTVfZHJt LmgKaW5kZXggMDM3MjVmZTg5ODU5Li45M2FkNmY5ZDI0OTYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUv dWFwaS9kcm0vaTkxNV9kcm0uaAorKysgYi9pbmNsdWRlL3VhcGkvZHJtL2k5MTVfZHJtLmgKQEAg LTg2MCwzOSArODYwLDYgQEAgc3RydWN0IGRybV9pOTE1X2dlbV9idXN5IHsKIAkgKiBsb25nIGFz IG5vIG5ldyBHUFUgY29tbWFuZHMgYXJlIGV4ZWN1dGVkIHVwb24gaXQpLiBEdWUgdG8gdGhlCiAJ ICogYXN5bmNocm9ub3VzIG5hdHVyZSBvZiB0aGUgaGFyZHdhcmUsIGFuIG9iamVjdCByZXBvcnRl ZAogCSAqIGFzIGJ1c3kgbWF5IGJlY29tZSBpZGxlIGJlZm9yZSB0aGUgaW9jdGwgaXMgY29tcGxl dGVkLgotCSAqCi0JICogRnVydGhlcm1vcmUsIGlmIHRoZSBvYmplY3QgaXMgYnVzeSwgd2hpY2gg ZW5naW5lIGlzIGJ1c3kgaXMgb25seQotCSAqIHByb3ZpZGVkIGFzIGEgZ3VpZGUuIFRoZXJlIGFy ZSByYWNlIGNvbmRpdGlvbnMgd2hpY2ggcHJldmVudCB0aGUKLQkgKiByZXBvcnQgb2Ygd2hpY2gg ZW5naW5lcyBhcmUgYnVzeSBmcm9tIGJlaW5nIGFsd2F5cyBhY2N1cmF0ZS4KLQkgKiBIb3dldmVy LCB0aGUgY29udmVyc2UgaXMgbm90IHRydWUuIElmIHRoZSBvYmplY3QgaXMgaWRsZSwgdGhlCi0J ICogcmVzdWx0IG9mIHRoZSBpb2N0bCwgdGhhdCBhbGwgZW5naW5lcyBhcmUgaWRsZSwgaXMgYWNj dXJhdGUuCi0JICoKLQkgKiBUaGUgcmV0dXJuZWQgZHdvcmQgaXMgc3BsaXQgaW50byB0d28gZmll bGRzIHRvIGluZGljYXRlIGJvdGgKLQkgKiB0aGUgZW5naW5lcyBvbiB3aGljaCB0aGUgb2JqZWN0 IGlzIGJlaW5nIHJlYWQsIGFuZCB0aGUKLQkgKiBlbmdpbmUgb24gd2hpY2ggaXQgaXMgY3VycmVu dGx5IGJlaW5nIHdyaXR0ZW4gKGlmIGFueSkuCi0JICoKLQkgKiBUaGUgbG93IHdvcmQgKGJpdHMg MDoxNSkgaW5kaWNhdGUgaWYgdGhlIG9iamVjdCBpcyBiZWluZyB3cml0dGVuCi0JICogdG8gYnkg YW55IGVuZ2luZSAodGhlcmUgY2FuIG9ubHkgYmUgb25lLCBhcyB0aGUgR0VNIGltcGxpY2l0Ci0J ICogc3luY2hyb25pc2F0aW9uIHJ1bGVzIGZvcmNlIHdyaXRlcyB0byBiZSBzZXJpYWxpc2VkKS4g T25seSB0aGUKLQkgKiBlbmdpbmUgZm9yIHRoZSBsYXN0IHdyaXRlIGlzIHJlcG9ydGVkLgotCSAq Ci0JICogVGhlIGhpZ2ggd29yZCAoYml0cyAxNjozMSkgYXJlIGEgYml0bWFzayBvZiB3aGljaCBl bmdpbmVzIGFyZQotCSAqIGN1cnJlbnRseSByZWFkaW5nIGZyb20gdGhlIG9iamVjdC4gTXVsdGlw bGUgZW5naW5lcyBtYXkgYmUKLQkgKiByZWFkaW5nIGZyb20gdGhlIG9iamVjdCBzaW11bHRhbmVv dXNseS4KLQkgKgotCSAqIFRoZSB2YWx1ZSBvZiBlYWNoIGVuZ2luZSBpcyB0aGUgc2FtZSBhcyBz cGVjaWZpZWQgaW4gdGhlCi0JICogRVhFQ0JVRkZFUjIgaW9jdGwsIGkuZS4gSTkxNV9FWEVDX1JF TkRFUiwgSTkxNV9FWEVDX0JTRCBldGMuCi0JICogTm90ZSBJOTE1X0VYRUNfREVGQVVMVCBpcyBh IHN5bWJvbGljIHZhbHVlIGFuZCBpcyBtYXBwZWQgdG8KLQkgKiB0aGUgSTkxNV9FWEVDX1JFTkRF UiBlbmdpbmUgZm9yIGV4ZWN1dGlvbiwgYW5kIHNvIGl0IGlzIG5ldmVyCi0JICogcmVwb3J0ZWQg YXMgYWN0aXZlIGl0c2VsZi4gU29tZSBoYXJkd2FyZSBtYXkgaGF2ZSBwYXJhbGxlbAotCSAqIGV4 ZWN1dGlvbiBlbmdpbmVzLCBlLmcuIG11bHRpcGxlIG1lZGlhIGVuZ2luZXMsIHdoaWNoIGFyZQot CSAqIG1hcHBlZCB0byB0aGUgc2FtZSBpZGVudGlmaWVyIGluIHRoZSBFWEVDQlVGRkVSMiBpb2N0 bCBhbmQKLQkgKiBzbyBhcmUgbm90IHNlcGFyYXRlbHkgcmVwb3J0ZWQgZm9yIGJ1c3luZXNzLgot CSAqCi0JICogQ2F2ZWF0IGVtcHRvcjoKLQkgKiBPbmx5IHRoZSBib29sZWFuIHJlc3VsdCBvZiB0 aGlzIHF1ZXJ5IGlzIHJlbGlhYmxlOyB0aGF0IGlzIHdoZXRoZXIKLQkgKiB0aGUgb2JqZWN0IGlz IGlkbGUgb3IgYnVzeS4gVGhlIHJlcG9ydCBvZiB3aGljaCBlbmdpbmVzIGFyZSBidXN5Ci0JICog c2hvdWxkIGJlIG9ubHkgdXNlZCBhcyBhIGhldXJpc3RpYy4KIAkgKi8KIAlfX3UzMiBidXN5Owog fTsKLS0gCjIuOS4zCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5v cmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1n ZngK