From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id ; Fri, 22 Nov 2002 02:58:56 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id ; Fri, 22 Nov 2002 02:58:56 -0500 Received: from postoffice.millenniumit.com ([203.115.28.196]:36527 "EHLO postoffice.millenniumit.com") by vger.kernel.org with ESMTP id ; Fri, 22 Nov 2002 02:58:48 -0500 Message-ID: <3DDDE5C1.4080608@millenniumit.com> Date: Fri, 22 Nov 2002 14:07:29 +0600 From: "Dhammika Pathirana" User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:0.9.9) Gecko/20020408 X-Accept-Language: en-us, en MIME-Version: 1.0 To: linux-kernel@vger.kernel.org Subject: [PATCH] misc_register failure 2.5.48 Content-Type: multipart/mixed; boundary="------------080806000408020906060803" Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org This is a multi-part message in MIME format. --------------080806000408020906060803 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit I've been looking at misc_register call across the kernel. This patch is to handle misc_register() failure. dhammika --------------080806000408020906060803 Content-Type: application/x-java-vm; name="patch_misc_register" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="patch_misc_register" ZGlmZiAtcnVOIGxpbnV4LTIuNS40OC9hcmNoL2kzODYva2VybmVsL2FwbS5jIGxpbnV4L2Fy Y2gvaTM4Ni9rZXJuZWwvYXBtLmMKLS0tIGxpbnV4LTIuNS40OC9hcmNoL2kzODYva2VybmVs L2FwbS5jCU1vbiBOb3YgMTggMTA6Mjk6MjEgMjAwMgorKysgbGludXgvYXJjaC9pMzg2L2tl cm5lbC9hcG0uYwlGcmkgTm92IDIyIDEwOjU1OjQ4IDIwMDIKQEAgLTE5NjksNiArMTk2OSwx MSBAQAogCQlyZXR1cm4gLUVOT0RFVjsKIAl9CiAKKwlpZihtaXNjX3JlZ2lzdGVyKCZhcG1f ZGV2aWNlKSl7CisJCXByaW50ayhLRVJOX0VSUiAiYXBtOiBjYW5ubm90IHJlZ2lzdGVyIGRl dmljZVxuIik7CQorCQlyZXR1cm4gLUVCVVNZOworCX0KKwogCWlmIChhbGxvd19pbnRzKQog CQlhcG1faW5mby5hbGxvd19pbnRzID0gMTsKIAlpZiAoYnJva2VuX3BzcikKQEAgLTIwNzcs OCArMjA4Miw2IEBACiAJCXJldHVybiAwOwogCX0KIAotCW1pc2NfcmVnaXN0ZXIoJmFwbV9k ZXZpY2UpOwotCiAJaWYgKEhaICE9IDEwMCkKIAkJaWRsZV9wZXJpb2QgPSAoaWRsZV9wZXJp b2QgKiBIWikgLyAxMDA7CiAJaWYgKGlkbGVfdGhyZXNob2xkIDwgMTAwKSB7CmRpZmYgLXJ1 TiBsaW51eC0yLjUuNDgvYXJjaC9tNjhrL2J2bWU2MDAwL3J0Yy5jIGxpbnV4L2FyY2gvbTY4 ay9idm1lNjAwMC9ydGMuYwotLS0gbGludXgtMi41LjQ4L2FyY2gvbTY4ay9idm1lNjAwMC9y dGMuYwlNb24gTm92IDE4IDEwOjI5OjQ3IDIwMDIKKysrIGxpbnV4L2FyY2gvbTY4ay9idm1l NjAwMC9ydGMuYwlGcmkgTm92IDIyIDEwOjA2OjMzIDIwMDIKQEAgLTE3OSw3ICsxNzksMTAg QEAKIAkJcmV0dXJuIC1FTk9ERVY7CiAKIAlwcmludGsoS0VSTl9JTkZPICJEUDg1NzBBIFJl YWwgVGltZSBDbG9jayBEcml2ZXIgdiVzXG4iLCBSVENfVkVSU0lPTik7Ci0JbWlzY19yZWdp c3RlcigmcnRjX2Rldik7CisJaWYobWlzY19yZWdpc3RlcigmcnRjX2RldikpeworCQlwcmlu dGYoS0VSTl9FUlIgInJ0YzogY2Fubm90IHJlZ2lzdGVyIGRldmljZVxuIik7CisJCXJldHVy biAtRUJVU1k7CisJfQogCXJldHVybiAwOwogfQogCmRpZmYgLXJ1TiBsaW51eC0yLjUuNDgv YXJjaC9tNjhrL212bWUxNngvcnRjLmMgbGludXgvYXJjaC9tNjhrL212bWUxNngvcnRjLmMK LS0tIGxpbnV4LTIuNS40OC9hcmNoL202OGsvbXZtZTE2eC9ydGMuYwlNb24gTm92IDE4IDEw OjI5OjU5IDIwMDIKKysrIGxpbnV4L2FyY2gvbTY4ay9tdm1lMTZ4L3J0Yy5jCUZyaSBOb3Yg MjIgMTA6MDY6MzMgMjAwMgpAQCAtMTY4LDcgKzE2OCwxMCBAQAogCQlyZXR1cm4gLUVOT0RF VjsKIAogCXByaW50ayhLRVJOX0lORk8gIk1LNDhUMDggUmVhbCBUaW1lIENsb2NrIERyaXZl ciB2JXNcbiIsIFJUQ19WRVJTSU9OKTsKLQltaXNjX3JlZ2lzdGVyKCZydGNfZGV2KTsKKwlp ZihtaXNjX3JlZ2lzdGVyKCZydGNfZGV2KSl7CisJCXByaW50ZihLRVJOX0VSUiAicnRjOiBj YW5ub3QgcmVnaXN0ZXIgZGV2aWNlXG4iKTsKKwkJcmV0dXJuIC1FQlVTWTsKKwl9CiAJcmV0 dXJuIDA7CiB9CiAKZGlmZiAtcnVOIGxpbnV4LTIuNS40OC9hcmNoL21pcHM2NC9zZ2ktaXAy Ny9pcDI3LXJ0Yy5jIGxpbnV4L2FyY2gvbWlwczY0L3NnaS1pcDI3L2lwMjctcnRjLmMKLS0t IGxpbnV4LTIuNS40OC9hcmNoL21pcHM2NC9zZ2ktaXAyNy9pcDI3LXJ0Yy5jCU1vbiBOb3Yg MTggMTA6Mjk6NDUgMjAwMgorKysgbGludXgvYXJjaC9taXBzNjQvc2dpLWlwMjcvaXAyNy1y dGMuYwlGcmkgTm92IDIyIDEwOjA2OjMzIDIwMDIKQEAgLTIwMSw4ICsyMDEsMTAgQEAKIAkg ICAgS0xfQ09ORklHX0NIX0NPTlNfSU5GTyhuaWQpLT5tZW1vcnlfYmFzZSArIElPQzNfQllU RUJVU19ERVYwOwogCiAJcHJpbnRrKEtFUk5fSU5GTyAiUmVhbCBUaW1lIENsb2NrIERyaXZl ciB2JXNcbiIsIFJUQ19WRVJTSU9OKTsKLQlpZiAobWlzY19yZWdpc3RlcigmcnRjX2Rldikp CisJaWYgKG1pc2NfcmVnaXN0ZXIoJnJ0Y19kZXYpKXsKKwkJcHJpbnRmKEtFUk5fRVJSICJy dGM6IGNhbm5ub3QgcmVnaXN0ZXIgZGV2aWNlXG4iKTsKIAkJcmV0dXJuIC1FTk9ERVY7CisJ fQkKIAljcmVhdGVfcHJvY19yZWFkX2VudHJ5ICgicnRjIiwgMCwgTlVMTCwgcnRjX3JlYWRf cHJvYywgTlVMTCk7CiAKIAlzYXZlX2ZsYWdzKGZsYWdzKTsKZGlmZiAtcnVOIGxpbnV4LTIu NS40OC9hcmNoL3BhcmlzYy9rZXJuZWwvcGVyZi5jIGxpbnV4L2FyY2gvcGFyaXNjL2tlcm5l bC9wZXJmLmMKLS0tIGxpbnV4LTIuNS40OC9hcmNoL3BhcmlzYy9rZXJuZWwvcGVyZi5jCU1v biBOb3YgMTggMTA6Mjk6MzEgMjAwMgorKysgbGludXgvYXJjaC9wYXJpc2Mva2VybmVsL3Bl cmYuYwlGcmkgTm92IDIyIDEwOjA2OjMzIDIwMDIKQEAgLTUxOCwxMSArNTE4LDE1IEBACiAJ CXJldHVybiAtRU5PREVWOwogCX0KIAorCWlmKG1pc2NfcmVnaXN0ZXIoJnBlcmZfZGV2KSl7 CisJCXByaW50ZihLRVJOX0VSUiAicGVyZl9vZmY6IGNhbm5vdCByZWdpc3RlciBkZXZpY2Vc biIpOworCQlyZXR1cm4gLUVCVVNZOworCX0KKwkKIAkvKiBQYXRjaCB0aGUgaW1hZ2VzIHRv IG1hdGNoIHRoZSBzeXN0ZW0gKi8KICAgICAJcGVyZl9wYXRjaF9pbWFnZXMoKTsKIAogCXNw aW5fbG9ja19pbml0KCZwZXJmX2xvY2spOwotCW1pc2NfcmVnaXN0ZXIoJnBlcmZfZGV2KTsK IAogCS8qIFRPRE86IHRoaXMgb25seSBsZXRzIHVzIGFjY2VzcyB0aGUgZmlyc3QgY3B1Li4g d2hhdCB0byBkbyBmb3IgU01QPyAqLwogCWNwdV9kZXZpY2UgPSBjcHVfZGF0YVswXS5kZXY7 CmRpZmYgLXJ1TiBsaW51eC0yLjUuNDgvYXJjaC9wcGMvaVNlcmllcy9ydGMuYyBsaW51eC9h cmNoL3BwYy9pU2VyaWVzL3J0Yy5jCi0tLSBsaW51eC0yLjUuNDgvYXJjaC9wcGMvaVNlcmll cy9ydGMuYwlNb24gTm92IDE4IDEwOjI5OjQ2IDIwMDIKKysrIGxpbnV4L2FyY2gvcHBjL2lT ZXJpZXMvcnRjLmMJRnJpIE5vdiAyMiAxMDowNjozMyAyMDAyCkBAIC0xOTIsOCArMTkyLDEw IEBACiAKIHN0YXRpYyBpbnQgX19pbml0IHJ0Y19pbml0KHZvaWQpCiB7Ci0JaWYgKG1pc2Nf cmVnaXN0ZXIoJnJ0Y19kZXYpKQorCWlmIChtaXNjX3JlZ2lzdGVyKCZydGNfZGV2KSl7CisJ CXByaW50ZihLRVJOX0VSUiAicnRjOiBjYW5ub3QgcmVnaXN0ZXIgZGV2aWNlXG4iKTsKIAkJ cmV0dXJuIC1FTk9ERVY7CisJfQkKIAljcmVhdGVfcHJvY19yZWFkX2VudHJ5ICgiZHJpdmVy L3J0YyIsIDAsIDAsIHJ0Y19yZWFkX3Byb2MsIE5VTEwpOwogCiAJcHJpbnRrKEtFUk5fSU5G TyAiaVNlcmllcyBSZWFsIFRpbWUgQ2xvY2sgRHJpdmVyIHYiIFJUQ19WRVJTSU9OICJcbiIp OwpkaWZmIC1ydU4gbGludXgtMi41LjQ4L2FyY2gvcHBjNjQva2VybmVsL252cmFtLmMgbGlu dXgvYXJjaC9wcGM2NC9rZXJuZWwvbnZyYW0uYwotLS0gbGludXgtMi41LjQ4L2FyY2gvcHBj NjQva2VybmVsL252cmFtLmMJTW9uIE5vdiAxOCAxMDoyOToyMSAyMDAyCisrKyBsaW51eC9h cmNoL3BwYzY0L2tlcm5lbC9udnJhbS5jCUZyaSBOb3YgMjIgMTA6MDY6MzMgMjAwMgpAQCAt MTE2LDYgKzExNiwxMiBAQAogewogCXN0cnVjdCBkZXZpY2Vfbm9kZSAqbnZyYW07CiAJdW5z aWduZWQgaW50ICpuYnl0ZXNfcCwgcHJvcGxlbjsKKworCWlmKG1pc2NfcmVnaXN0ZXIoJm52 cmFtX2RldikpeworCQlwcmludGYoS0VSTl9FUlIgIm52cmFtOiBjYW5ub3QgcmVnaXN0ZXIg ZGV2aWNlXG4iKTsKKwkJcmV0dXJuIC1FQlVTWTsKKwl9CisJCiAJaWYgKChudnJhbSA9IGZp bmRfdHlwZV9kZXZpY2VzKCJudnJhbSIpKSAhPSBOVUxMKSB7CiAJCW5ieXRlc19wID0gKHVu c2lnbmVkIGludCAqKWdldF9wcm9wZXJ0eShudnJhbSwgIiNieXRlcyIsICZwcm9wbGVuKTsK IAkJaWYgKG5ieXRlc19wICYmIHByb3BsZW4gPT0gc2l6ZW9mKHVuc2lnbmVkIGludCkpIHsK QEAgLTEyNSw4ICsxMzEsNyBAQAogCW52cmFtX2ZldGNoID0gcnRhc190b2tlbigibnZyYW0t ZmV0Y2giKTsKIAludnJhbV9zdG9yZSA9IHJ0YXNfdG9rZW4oIm52cmFtLXN0b3JlIik7CiAJ cHJpbnRrKEtFUk5fSU5GTyAiUFBDNjQgbnZyYW0gY29udGFpbnMgJWQgYnl0ZXNcbiIsIHJ0 YXNfbnZyYW1fc2l6ZSk7Ci0KLQlyZXR1cm4gbWlzY19yZWdpc3RlcigmbnZyYW1fZGV2KTsK KwlyZXR1cm4gMDsKIH0KIAogdm9pZCBfX2V4aXQgbnZyYW1fY2xlYW51cCh2b2lkKQpkaWZm IC1ydU4gbGludXgtMi41LjQ4L2FyY2gvcHBjNjQva2VybmVsL3J0Yy5jIGxpbnV4L2FyY2gv cHBjNjQva2VybmVsL3J0Yy5jCi0tLSBsaW51eC0yLjUuNDgvYXJjaC9wcGM2NC9rZXJuZWwv cnRjLmMJTW9uIE5vdiAxOCAxMDoyOTo0NyAyMDAyCisrKyBsaW51eC9hcmNoL3BwYzY0L2tl cm5lbC9ydGMuYwlGcmkgTm92IDIyIDEwOjA2OjMzIDIwMDIKQEAgLTE5NSw3ICsxOTUsMTEg QEAKIAogc3RhdGljIGludCBfX2luaXQgcnRjX2luaXQodm9pZCkKIHsKLQltaXNjX3JlZ2lz dGVyKCZydGNfZGV2KTsKKwlpZihtaXNjX3JlZ2lzdGVyKCZydGNfZGV2KSl7CisJCXByaW50 ZihLRVJOX0VSUiAicnRjOiBjYW5ub3QgcmVnaXN0ZXIgZGV2aWNlXG4iKTsKKwkJcmV0dXJu IC1FQlVTWTsKKwl9CisKIAljcmVhdGVfcHJvY19yZWFkX2VudHJ5ICgiZHJpdmVyL3J0YyIs IDAsIDAsIHJ0Y19yZWFkX3Byb2MsIE5VTEwpOwogCiAJcHJpbnRrKEtFUk5fSU5GTyAiaS9w U2VyaWVzIFJlYWwgVGltZSBDbG9jayBEcml2ZXIgdiIgUlRDX1ZFUlNJT04gIlxuIik7CmRp ZmYgLXJ1TiBsaW51eC0yLjUuNDgvYXJjaC91bS9kcml2ZXJzL2hhcmRkb2dfa2Vybi5jIGxp bnV4L2FyY2gvdW0vZHJpdmVycy9oYXJkZG9nX2tlcm4uYwotLS0gbGludXgtMi41LjQ4L2Fy Y2gvdW0vZHJpdmVycy9oYXJkZG9nX2tlcm4uYwlNb24gTm92IDE4IDEwOjI5OjQ4IDIwMDIK KysrIGxpbnV4L2FyY2gvdW0vZHJpdmVycy9oYXJkZG9nX2tlcm4uYwlGcmkgTm92IDIyIDEw OjA2OjMzIDIwMDIKQEAgLTE2Niw4ICsxNjYsMTAgQEAKIAogCXJldCA9IG1pc2NfcmVnaXN0 ZXIoJmhhcmRkb2dfbWlzY2Rldik7CiAKLQlpZiAocmV0KQorCWlmIChyZXQpeworCQlwcmlu dGYoS0VSTl9FUlIgIndhdGNoZG9nOiBjYW5ub3QgcmVnaXN0ZXIgZGV2aWNlXG4iKTsKIAkJ cmV0dXJuIHJldDsKKwl9CiAKIAlwcmludGsoYmFubmVyKTsKIApkaWZmIC1ydU4gbGludXgt Mi41LjQ4L2FyY2gvdjg1MC9rZXJuZWwvcnRlX2NiX2xlZHMuYyBsaW51eC9hcmNoL3Y4NTAv a2VybmVsL3J0ZV9jYl9sZWRzLmMKLS0tIGxpbnV4LTIuNS40OC9hcmNoL3Y4NTAva2VybmVs L3J0ZV9jYl9sZWRzLmMJTW9uIE5vdiAxOCAxMDoyOToyMyAyMDAyCisrKyBsaW51eC9hcmNo L3Y4NTAva2VybmVsL3J0ZV9jYl9sZWRzLmMJRnJpIE5vdiAyMiAxMDowNjozMyAyMDAyCkBA IC0xMjksNyArMTI5LDExIEBACiAKIGludCBfX2luaXQgbGVkc19kZXZfaW5pdCAodm9pZCkK IHsKLQlyZXR1cm4gbWlzY19yZWdpc3RlciAoJmxlZHNfbWlzY2Rldik7CisJaWYoIG1pc2Nf cmVnaXN0ZXIgKCZsZWRzX21pc2NkZXYpKXsKKwkJcHJpbnRmKEtFUk5fRVJSICJsZWRzOiBj YW5ubm90IHJlZ2lzdGVyIGRldmljZVxuIik7CisJCXJldHVybiAtRUJVU1k7CisJfQorCXJl dHVybiAwOwogfQogCiBfX2luaXRjYWxsIChsZWRzX2Rldl9pbml0KTsKZGlmZiAtcnVOIGxp bnV4LTIuNS40OC9kcml2ZXJzL2Fjb3JuL2NoYXIvaTJjLmMgbGludXgvZHJpdmVycy9hY29y bi9jaGFyL2kyYy5jCi0tLSBsaW51eC0yLjUuNDgvZHJpdmVycy9hY29ybi9jaGFyL2kyYy5j CU1vbiBOb3YgMTggMTA6Mjk6NTggMjAwMgorKysgbGludXgvZHJpdmVycy9hY29ybi9jaGFy L2kyYy5jCUZyaSBOb3YgMjIgMTA6MDY6MzMgMjAwMgpAQCAtMzE5LDcgKzMxOSwxMCBAQAog CXJldCA9IGkyY19iaXRfYWRkX2J1cygmaW9jX29wcyk7CiAKIAlpZiAocmV0ID49IDApCi0J CW1pc2NfcmVnaXN0ZXIoJnJ0Y19kZXYpOworCQlpZihtaXNjX3JlZ2lzdGVyKCZydGNfZGV2 KSl7CisJCQlwcmludGYoS0VSTl9FUlIgIklPQy9JT01EOiBjYW5ub3QgcmVnaXN0ZXIgZGV2 aWNlXG4iKTsKKwkJCXJldHVybiAtRUJVU1k7CisJCX0KIAogCXJldHVybiByZXQ7CiB9CmRp ZmYgLXJ1TiBsaW51eC0yLjUuNDgvZHJpdmVycy9hY29ybi9jaGFyL21vdXNlX3BzMi5jIGxp bnV4L2RyaXZlcnMvYWNvcm4vY2hhci9tb3VzZV9wczIuYwotLS0gbGludXgtMi41LjQ4L2Ry aXZlcnMvYWNvcm4vY2hhci9tb3VzZV9wczIuYwlNb24gTm92IDE4IDEwOjI5OjUxIDIwMDIK KysrIGxpbnV4L2RyaXZlcnMvYWNvcm4vY2hhci9tb3VzZV9wczIuYwlGcmkgTm92IDIyIDEw OjA2OjMzIDIwMDIKQEAgLTI3Nyw2ICsyNzcsNyBAQAogCiAJaWYgKG1pc2NfcmVnaXN0ZXIo JnBzYXV4X21vdXNlKSkgewogCQlrZnJlZShxdWV1ZSk7CisJCXByaW50ZihLRVJOX0VSUiAi cHNhdXg6IGNhbm5vdCByZWdpc3RlciBkZXZpY2VcbiIpOwogCQlyZXR1cm4gLUVOT0RFVjsK IAl9CiAKZGlmZiAtcnVOIGxpbnV4LTIuNS40OC9kcml2ZXJzL2NoYXIvYWNxdWlyZXdkdC5j IGxpbnV4L2RyaXZlcnMvY2hhci9hY3F1aXJld2R0LmMKLS0tIGxpbnV4LTIuNS40OC9kcml2 ZXJzL2NoYXIvYWNxdWlyZXdkdC5jCU1vbiBOb3YgMTggMTA6Mjk6NDggMjAwMgorKysgbGlu dXgvZHJpdmVycy9jaGFyL2FjcXVpcmV3ZHQuYwlGcmkgTm92IDIyIDEwOjA2OjM0IDIwMDIK QEAgLTIxOSw4ICsyMTksMTAgQEAKIAlwcmludGsoIldEVCBkcml2ZXIgZm9yIEFjcXVpcmUg c2luZ2xlIGJvYXJkIGNvbXB1dGVyIGluaXRpYWxpc2luZy5cbiIpOwogCiAJc3Bpbl9sb2Nr X2luaXQoJmFjcV9sb2NrKTsKLQlpZiAobWlzY19yZWdpc3RlcigmYWNxX21pc2NkZXYpKQor CWlmIChtaXNjX3JlZ2lzdGVyKCZhY3FfbWlzY2RldikpeworCQlwcmludGYoS0VSTl9FUlIg IndhdGNoZG9nOiBjYW5ub3QgcmVnaXN0ZXIgbWlzYyBkZXZpY2VcbiIpOwogCQlyZXR1cm4g LUVOT0RFVjsKKwl9CQogCWlmICghcmVxdWVzdF9yZWdpb24oV0RUX1NUT1AsIDEsICJBY3F1 aXJlIFdEVCIpKQogCQl7CiAJCW1pc2NfZGVyZWdpc3RlcigmYWNxX21pc2NkZXYpOwpkaWZm IC1ydU4gbGludXgtMi41LjQ4L2RyaXZlcnMvY2hhci9hZHZhbnRlY2h3ZHQuYyBsaW51eC9k cml2ZXJzL2NoYXIvYWR2YW50ZWNod2R0LmMKLS0tIGxpbnV4LTIuNS40OC9kcml2ZXJzL2No YXIvYWR2YW50ZWNod2R0LmMJTW9uIE5vdiAxOCAxMDoyOTozMSAyMDAyCisrKyBsaW51eC9k cml2ZXJzL2NoYXIvYWR2YW50ZWNod2R0LmMJRnJpIE5vdiAyMiAxMDowNjozNCAyMDAyCkBA IC0yNDEsOCArMjQxLDEwIEBACiAKIAlhZHZ3ZHRfdmFsaWRhdGVfdGltZW91dCgpOwogCXNw aW5fbG9ja19pbml0KCZhZHZ3ZHRfbG9jayk7Ci0JaWYgKG1pc2NfcmVnaXN0ZXIoJmFkdndk dF9taXNjZGV2KSkKKwlpZiAobWlzY19yZWdpc3RlcigmYWR2d2R0X21pc2NkZXYpKXsKKwkJ cHJpbnRmKEtFUk5fRVJSICJhZHZhbnRlY2h3ZHQ6IGNhbm5vdCByZWdpc3RlciBtaXNjIGRl dmljZSBvbiBtaW5vclxuIik7CiAJCXJldHVybiAtRU5PREVWOworCX0JCiAjaWYgV0RUX1NU QVJUICE9IFdEVF9TVE9QCiAJaWYgKCFyZXF1ZXN0X3JlZ2lvbihXRFRfU1RPUCwgMSwgIkFk dmFudGVjaCBXRFQiKSkgewogCQltaXNjX2RlcmVnaXN0ZXIoJmFkdndkdF9taXNjZGV2KTsK ZGlmZiAtcnVOIGxpbnV4LTIuNS40OC9kcml2ZXJzL2NoYXIvYWdwL2Zyb250ZW5kLmMgbGlu dXgvZHJpdmVycy9jaGFyL2FncC9mcm9udGVuZC5jCi0tLSBsaW51eC0yLjUuNDgvZHJpdmVy cy9jaGFyL2FncC9mcm9udGVuZC5jCU1vbiBOb3YgMTggMTA6Mjk6MjUgMjAwMgorKysgbGlu dXgvZHJpdmVycy9jaGFyL2FncC9mcm9udGVuZC5jCUZyaSBOb3YgMjIgMTA6MDY6MzQgMjAw MgpAQCAtMTA3Myw3ICsxMDczLDcgQEAKIAlBR1BfTE9DS19JTklUKCk7CiAKIAlpZiAobWlz Y19yZWdpc3RlcigmYWdwX21pc2NkZXYpKSB7Ci0JCXByaW50ayhLRVJOX0VSUiBQRlggInVu YWJsZSB0byBnZXQgbWlub3I6ICVkXG4iLCBBR1BHQVJUX01JTk9SKTsKKwkJcHJpbnRrKEtF Uk5fRVJSIFBGWCAidW5hYmxlIHRvIHJlZ2lzdGVyIG1pc2MgZGV2aWNlOiAlZFxuIiwgQUdQ R0FSVF9NSU5PUik7CiAJCXJldHVybiAtRUlPOwogCX0KIAlyZXR1cm4gMDsKZGlmZiAtcnVO IGxpbnV4LTIuNS40OC9kcml2ZXJzL2NoYXIvYXBwbGljb20uYyBsaW51eC9kcml2ZXJzL2No YXIvYXBwbGljb20uYwotLS0gbGludXgtMi41LjQ4L2RyaXZlcnMvY2hhci9hcHBsaWNvbS5j CU1vbiBOb3YgMTggMTA6Mjk6NTYgMjAwMgorKysgbGludXgvZHJpdmVycy9jaGFyL2FwcGxp Y29tLmMJRnJpIE5vdiAyMiAxMDowNjozNCAyMDAyCkBAIC0zMTQsNyArMzE0LDEwIEBACiAJ RGV2aWNlRXJyb3JDb3VudCA9IDA7CiAKIAlpZiAobnVtYm9hcmRzKSB7Ci0JCW1pc2NfcmVn aXN0ZXIoJmFjX21pc2NkZXYpOworCQlpZihtaXNjX3JlZ2lzdGVyKCZhY19taXNjZGV2KSl7 CisJCQlwcmludGYoS0VSTl9FUlIgImFjLm86IENhbm5vdCByZWdpc3RlciBkZXZpY2VcbiIg KTsKKwkJCXJldHVybiAtRUJVU1k7CisJCX0JCQogCQlmb3IgKGkgPSAwOyBpIDwgTUFYX0JP QVJEOyBpKyspIHsKIAkJCWludCBzZXJpYWw7CiAJCQljaGFyIGJvYXJkbmFtZVsoU0VSSUFM X05VTUJFUiAtIFRZUEVfQ0FSRCkgKyAxXTsKZGlmZiAtcnVOIGxpbnV4LTIuNS40OC9kcml2 ZXJzL2NoYXIvYnVzbW91c2UuYyBsaW51eC9kcml2ZXJzL2NoYXIvYnVzbW91c2UuYwotLS0g bGludXgtMi41LjQ4L2RyaXZlcnMvY2hhci9idXNtb3VzZS5jCU1vbiBOb3YgMTggMTA6Mjk6 NTIgMjAwMgorKysgbGludXgvZHJpdmVycy9jaGFyL2J1c21vdXNlLmMJRnJpIE5vdiAyMiAx MDowNjozNCAyMDAyCkBAIC0zOTAsOCArMzkwLDEzIEBACiAJYnVzbW91c2VfZGF0YVttc2Vk ZXZdID0gbXNlOwogCiAJcmV0ID0gbWlzY19yZWdpc3RlcigmbXNlLT5taXNjZGV2KTsKLQlp ZiAoIXJldCkKLQkJcmV0ID0gbXNlZGV2OworCWlmKHJldCl7CisJCXVwKCZtb3VzZV9zZW0p OworCQlwcmludGYoS0VSTl9FUlIgImJ1c21vdXNlOiBjYW5ub3QgcmVnaXN0ZXIgbWlzYyBk ZXZpY2VcbiIpOworCQlyZXR1cm4gLUVCVVNZOworCX0JCQorCQorCXJldCA9IG1zZWRldjsJ CiAJdXAoJm1vdXNlX3NlbSk7CiAJCiAJcmV0dXJuIHJldDsKZGlmZiAtcnVOIGxpbnV4LTIu NS40OC9kcml2ZXJzL2NoYXIvZHMxNjIwLmMgbGludXgvZHJpdmVycy9jaGFyL2RzMTYyMC5j Ci0tLSBsaW51eC0yLjUuNDgvZHJpdmVycy9jaGFyL2RzMTYyMC5jCU1vbiBOb3YgMTggMTA6 Mjk6MjIgMjAwMgorKysgbGludXgvZHJpdmVycy9jaGFyL2RzMTYyMC5jCUZyaSBOb3YgMjIg MTA6MDY6MzQgMjAwMgpAQCAtMzc1LDkgKzM3NSwxMCBAQAogCiAJZHMxNjIwX3dyaXRlX3N0 YXRlKCZ0aCk7CiAKLQlyZXQgPSBtaXNjX3JlZ2lzdGVyKCZkczE2MjBfbWlzY2Rldik7Ci0J aWYgKHJldCA8IDApCi0JCXJldHVybiByZXQ7CisJaWYobWlzY19yZWdpc3RlcigmZHMxNjIw X21pc2NkZXYpKXsKKwkJcHJpbnRmKEtFUk5fRVJSICJ0aGVybTogY2Fubm90IHJlZ2lzdGVy IG1pc2MgZGV2aWNlXG4iKTsKKwkJcmV0dXJuIC1FQlVTWTsKKwl9CiAKICNpZmRlZiBUSEVS TV9VU0VfUFJPQwogCXByb2NfdGhlcm1fZHMxNjIwID0gY3JlYXRlX3Byb2NfZW50cnkoInRo ZXJtIiwgMCwgMCk7CmRpZmYgLXJ1TiBsaW51eC0yLjUuNDgvZHJpdmVycy9jaGFyL2dlbnJ0 Yy5jIGxpbnV4L2RyaXZlcnMvY2hhci9nZW5ydGMuYwotLS0gbGludXgtMi41LjQ4L2RyaXZl cnMvY2hhci9nZW5ydGMuYwlNb24gTm92IDE4IDEwOjI5OjU1IDIwMDIKKysrIGxpbnV4L2Ry aXZlcnMvY2hhci9nZW5ydGMuYwlGcmkgTm92IDIyIDEwOjA2OjM0IDIwMDIKQEAgLTQwNyw3 ICs0MDcsMTAgQEAKIAogCQlwcmludGsoS0VSTl9JTkZPICJHZW5lcmljIFJUQyBEcml2ZXIg diVzXG4iLCBSVENfVkVSU0lPTik7CiAKLQltaXNjX3JlZ2lzdGVyKCZydGNfZ2VuX2Rldik7 CisJaWYobWlzY19yZWdpc3RlcigmcnRjX2dlbl9kZXYpKXsKKwkJcHJpbnRmKEtFUk5fRVJS ICJkcml2ZXIvcnRjOiBjYW5ub3QgcmVnaXN0ZXIgZGV2aWNlXG4iKTsKKwkJcmV0dXJuIC1F QlVTWTsKKwl9CiAJY3JlYXRlX3Byb2NfcmVhZF9lbnRyeSAoImRyaXZlci9ydGMiLCAwLCAw LCBnZW5fcnRjX3JlYWRfcHJvYywgTlVMTCk7CiAKIAlyZXR1cm4gMDsKZGlmZiAtcnVOIGxp bnV4LTIuNS40OC9kcml2ZXJzL2NoYXIvaHBfcHNhdXguYyBsaW51eC9kcml2ZXJzL2NoYXIv aHBfcHNhdXguYwotLS0gbGludXgtMi41LjQ4L2RyaXZlcnMvY2hhci9ocF9wc2F1eC5jCU1v biBOb3YgMTggMTA6Mjk6NTYgMjAwMgorKysgbGludXgvZHJpdmVycy9jaGFyL2hwX3BzYXV4 LmMJRnJpIE5vdiAyMiAxMDowNjozNCAyMDAyCkBAIC01MTMsNyArNTEzLDExIEBACiAJCXF1 ZXVlLT5oZWFkID0gcXVldWUtPnRhaWwgPSAwOwogCQlpbml0X3dhaXRxdWV1ZV9oZWFkKCZx dWV1ZS0+cHJvY19saXN0KTsKIAkJCi0JCW1pc2NfcmVnaXN0ZXIoJnBzYXV4X21vdXNlKTsK KwkJaWYobWlzY19yZWdpc3RlcigmcHNhdXhfbW91c2UpKXsKKwkJCWtmcmVlKHF1ZXVlKTsK KwkJCXByaW50ZihLRVJOX0VSUiAicHNhdXg6IGNhbm5vdCByZWdpc3RlciBkZXZjaWVcbiIp OworCQkJcmV0dXJuIC1FQlVTWTsKKwkJfQogCiAJCWF1eF93cml0ZV9hY2soQVVYX0VOQUJM RV9ERVYpOwogCQkvKiB0cnkgaXQgYSBzZWNvbmQgdGltZSwgdGhpcyB3aWxsIGdpdmUgc3Rh dHVzIGlmIHRoZSBkZXZpY2UgaXMKZGlmZiAtcnVOIGxpbnV4LTIuNS40OC9kcml2ZXJzL2No YXIvaTgxMC10Y28uYyBsaW51eC9kcml2ZXJzL2NoYXIvaTgxMC10Y28uYwotLS0gbGludXgt Mi41LjQ4L2RyaXZlcnMvY2hhci9pODEwLXRjby5jCU1vbiBOb3YgMTggMTA6Mjk6MjEgMjAw MgorKysgbGludXgvZHJpdmVycy9jaGFyL2k4MTAtdGNvLmMJRnJpIE5vdiAyMiAxMDowNjoz NCAyMDAyCkBAIC0zOTgsNyArMzk4LDcgQEAKIAlpZiAobWlzY19yZWdpc3RlciAoJmk4MTB0 Y29fbWlzY2RldikgIT0gMCkgewogCQlyZWxlYXNlX3JlZ2lvbiAoVENPQkFTRSwgMHgxMCk7 CiAJCXByaW50ayAoS0VSTl9FUlIgVENPX01PRFVMRV9OQU1FICI6IGNhbm5vdCByZWdpc3Rl ciBtaXNjZGV2XG4iKTsKLQkJcmV0dXJuIC1FSU87CisJCXJldHVybiAtRUJVU1k7CiAJfQog CXRjb190aW1lcl9zZXR0aW1lciAoKHVuc2lnbmVkIGNoYXIpIGk4MTBfbWFyZ2luKTsKIAl0 Y29fdGltZXJfcmVsb2FkICgpOwpkaWZmIC1ydU4gbGludXgtMi41LjQ4L2RyaXZlcnMvY2hh ci9pYjcwMHdkdC5jIGxpbnV4L2RyaXZlcnMvY2hhci9pYjcwMHdkdC5jCi0tLSBsaW51eC0y LjUuNDgvZHJpdmVycy9jaGFyL2liNzAwd2R0LmMJTW9uIE5vdiAxOCAxMDoyOTo1NCAyMDAy CisrKyBsaW51eC9kcml2ZXJzL2NoYXIvaWI3MDB3ZHQuYwlGcmkgTm92IDIyIDEwOjA2OjM0 IDIwMDIKQEAgLTI3MSw4ICsyNzEsMTAgQEAKIAogCWlid2R0X3ZhbGlkYXRlX3RpbWVvdXQo KTsKIAlzcGluX2xvY2tfaW5pdCgmaWJ3ZHRfbG9jayk7Ci0JaWYgKG1pc2NfcmVnaXN0ZXIo Jmlid2R0X21pc2NkZXYpKQorCWlmIChtaXNjX3JlZ2lzdGVyKCZpYndkdF9taXNjZGV2KSl7 CisJCXByaW50ZihLRVJOX0VSUiAid2F0Y2hkb2c6IGNhbm5vdCByZWdpc3RlciBkZXZpY2Vc biIpOwogCQlyZXR1cm4gLUVOT0RFVjsKKwl9CQogI2lmIFdEVF9TVEFSVCAhPSBXRFRfU1RP UAogCWlmICghcmVxdWVzdF9yZWdpb24oV0RUX1NUT1AsIDEsICJJQjcwMCBXRFQiKSkgewog CQltaXNjX2RlcmVnaXN0ZXIoJmlid2R0X21pc2NkZXYpOwpkaWZmIC1ydU4gbGludXgtMi41 LjQ4L2RyaXZlcnMvY2hhci9taXhjb213ZC5jIGxpbnV4L2RyaXZlcnMvY2hhci9taXhjb213 ZC5jCi0tLSBsaW51eC0yLjUuNDgvZHJpdmVycy9jaGFyL21peGNvbXdkLmMJTW9uIE5vdiAx OCAxMDoyOToyOSAyMDAyCisrKyBsaW51eC9kcml2ZXJzL2NoYXIvbWl4Y29td2QuYwlGcmkg Tm92IDIyIDEwOjA2OjM0IDIwMDIKQEAgLTI1Myw2ICsyNTMsNyBAQAogCXJldCA9IG1pc2Nf cmVnaXN0ZXIoJm1peGNvbXdkX21pc2NkZXYpOwogCWlmIChyZXQpCiAJeworCQlwcmludGYo S0VSTl9FUlIgIm1peGNvbXdkOiBDYW5ub3QgcmVnaXN0ZXIgbWlzYyBkZXZpY2Ugb24gbWlu b3IgJWRcbiIsIFdBVENIRE9HX01JTk9SKTsKIAkJcmVsZWFzZV9yZWdpb24od2F0Y2hkb2df cG9ydCwgMSk7CiAJCXJldHVybiByZXQ7CiAJfQpkaWZmIC1ydU4gbGludXgtMi41LjQ4L2Ry aXZlcnMvY2hhci9ud2ZsYXNoLmMgbGludXgvZHJpdmVycy9jaGFyL253Zmxhc2guYwotLS0g bGludXgtMi41LjQ4L2RyaXZlcnMvY2hhci9ud2ZsYXNoLmMJTW9uIE5vdiAxOCAxMDoyOTo1 OCAyMDAyCisrKyBsaW51eC9kcml2ZXJzL2NoYXIvbndmbGFzaC5jCUZyaSBOb3YgMjIgMTA6 MDY6MzQgMjAwMgpAQCAtNjg4LDcgKzY4OCwxMCBAQAogCQlwcmludGsoIkZsYXNoIFJPTSBk cml2ZXIgdi4lcywgZmxhc2ggZGV2aWNlIElEIDB4JTA0WCwgc2l6ZSAlZCBNYi5cbiIsCiAJ CSAgICAgICBOV0ZMQVNIX1ZFUlNJT04sIGlkLCBnYkZsYXNoU2l6ZSAvICgxMDI0ICogMTAy NCkpOwogCi0JCW1pc2NfcmVnaXN0ZXIoJmZsYXNoX21pc2NkZXYpOworCQlpZihtaXNjX3Jl Z2lzdGVyKCZmbGFzaF9taXNjZGV2KSl7CisJCQlwcmludGYoS0VSTl9FUlIgIkZsYXNoOiBj YW5ub3QgcmVnaXN0ZXIgZGV2aWNlXG4iKTsKKwkJCXJldHVybiAtRUJVU1k7CisJCX0KIAog CQlyZXQgPSAwOwogCX0KZGlmZiAtcnVOIGxpbnV4LTIuNS40OC9kcml2ZXJzL2NoYXIvcGN3 ZC5jIGxpbnV4L2RyaXZlcnMvY2hhci9wY3dkLmMKLS0tIGxpbnV4LTIuNS40OC9kcml2ZXJz L2NoYXIvcGN3ZC5jCU1vbiBOb3YgMTggMTA6Mjk6MjIgMjAwMgorKysgbGludXgvZHJpdmVy cy9jaGFyL3Bjd2QuYwlGcmkgTm92IDIyIDEwOjA2OjM0IDIwMDIKQEAgLTYyMiwxMSArNjIy LDE0IEBACiAJCW91dGJfcCgweEE1LCBjdXJyZW50X3JlYWRwb3J0ICsgMyk7CiAJfQogCi0J aWYgKG1pc2NfcmVnaXN0ZXIoJnBjd2RfbWlzY2RldikpCisJaWYgKG1pc2NfcmVnaXN0ZXIo JnBjd2RfbWlzY2RldikpewkJCisJCXByaW50ZihLRVJOX0VSUiAicGN3ZDogQ2Fubm90IHJl Z2lzdGVyIG1pc2MgZGV2aWNlXG4iKTsKIAkJcmV0dXJuIC1FTk9ERVY7CisJfQkKIAkKIAlp ZiAoc3VwcG9ydHNfdGVtcCkKIAkJaWYgKG1pc2NfcmVnaXN0ZXIoJnRlbXBfbWlzY2Rldikp IHsKKwkJCXByaW50ZihLRVJOX0VSUiAicGN3ZDogQ2Fubm90IHJlZ2lzdGVyIG1pc2MgZGV2 aWNlXG4iKTsKIAkJCW1pc2NfZGVyZWdpc3RlcigmcGN3ZF9taXNjZGV2KTsKIAkJCXJldHVy biAtRU5PREVWOwkJCiAJCX0KZGlmZiAtcnVOIGxpbnV4LTIuNS40OC9kcml2ZXJzL2NoYXIv cXRyb25peC5jIGxpbnV4L2RyaXZlcnMvY2hhci9xdHJvbml4LmMKLS0tIGxpbnV4LTIuNS40 OC9kcml2ZXJzL2NoYXIvcXRyb25peC5jCU1vbiBOb3YgMTggMTA6Mjk6MzEgMjAwMgorKysg bGludXgvZHJpdmVycy9jaGFyL3F0cm9uaXguYwlGcmkgTm92IDIyIDEwOjA2OjM0IDIwMDIK QEAgLTU4NSw3ICs1ODUsMTAgQEAKIAogc3RhdGljIGludCBfX2luaXQgcHNhdXhfaW5pdCh2 b2lkKQogewotCW1pc2NfcmVnaXN0ZXIoJnBzYXV4X21vdXNlKTsKKwlpZihtaXNjX3JlZ2lz dGVyKCZwc2F1eF9tb3VzZSkpeworCQlwcmludGYoS0VSTl9FUlIgInBzYXV4OiBDYW5ub3Qg cmVnaXN0ZXIgbWlzYyBkZXZpY2Ugb24gbWlub3JcbiIpOworCQlyZXR1cm4gLUVCVVNZOwor CX0KIAlxdWV1ZSA9IChzdHJ1Y3QgYXV4X3F1ZXVlICopIGttYWxsb2Moc2l6ZW9mKCpxdWV1 ZSksIEdGUF9LRVJORUwpOwogCW1lbXNldChxdWV1ZSwgMCwgc2l6ZW9mKCpxdWV1ZSkpOwog CXF1ZXVlLT5oZWFkID0gcXVldWUtPnRhaWwgPSAwOwpkaWZmIC1ydU4gbGludXgtMi41LjQ4 L2RyaXZlcnMvY2hhci9yaW8vcmlvX2xpbnV4LmMgbGludXgvZHJpdmVycy9jaGFyL3Jpby9y aW9fbGludXguYwotLS0gbGludXgtMi41LjQ4L2RyaXZlcnMvY2hhci9yaW8vcmlvX2xpbnV4 LmMJTW9uIE5vdiAxOCAxMDoyOTo0OCAyMDAyCisrKyBsaW51eC9kcml2ZXJzL2NoYXIvcmlv L3Jpb19saW51eC5jCUZyaSBOb3YgMjIgMTA6MDY6MzQgMjAwMgpAQCAtMTQwNSw4ICsxNDA1 LDggQEAKICAgICByaW9fZHByaW50ayAoUklPX0RFQlVHX0lOSVQsICJyaW86IHRvdGFsIG9m ICVkIGJvYXJkcyBkZXRlY3RlZC5cbiIsIGZvdW5kKTsKIAogICAgIGlmIChtaXNjX3JlZ2lz dGVyKCZyaW9fZndfZGV2aWNlKSA8IDApIHsKLSAgICAgIHByaW50ayhLRVJOX0VSUiAiUklP OiBVbmFibGUgdG8gcmVnaXN0ZXIgZmlybXdhcmUgbG9hZGVyIGRyaXZlci5cbiIpOwotICAg ICAgcmV0dXJuIC1FSU87CisgICAgICBwcmludGsoS0VSTl9FUlIgIlJJTzogQ2FuJ3QgcmVn aXN0ZXIgbWlzYyBkZXZpY2UuXG4iKTsKKyAgICAgIHJldHVybiAtRUJVU1k7CiAgICAgfQog ICAgIHJpb19pbml0X2RyaXZlcnMgKCk7CiAgIH0KZGlmZiAtcnVOIGxpbnV4LTIuNS40OC9k cml2ZXJzL2NoYXIvcnRjLmMgbGludXgvZHJpdmVycy9jaGFyL3J0Yy5jCi0tLSBsaW51eC0y LjUuNDgvZHJpdmVycy9jaGFyL3J0Yy5jCU1vbiBOb3YgMTggMTA6Mjk6MzIgMjAwMgorKysg bGludXgvZHJpdmVycy9jaGFyL3J0Yy5jCUZyaSBOb3YgMjIgMTA6NTY6MzYgMjAwMgpAQCAt ODc2LDEzICs4NzYsMTQgQEAKICNlbmRpZiAvKiBfX3NwYXJjX18gdnMuIG90aGVycyAqLwog CiAJaWYgKG1pc2NfcmVnaXN0ZXIoJnJ0Y19kZXYpKQotCQl7CisJewogI2lmIFJUQ19JUlEK IAkJZnJlZV9pcnEoUlRDX0lSUSwgTlVMTCk7CiAjZW5kaWYKIAkJcmVsZWFzZV9yZWdpb24o UlRDX1BPUlQoMCksIFJUQ19JT19FWFRFTlQpOworCQlwcmludGsoS0VSTl9FUlIgInJ0Yzog Y2Fubm90IHJlZ2lzdGVyIG1pc2MgZGV2aWNlXG4iKTsKIAkJcmV0dXJuIC1FTk9ERVY7Ci0J CX0KKwl9CiAJY3JlYXRlX3Byb2NfcmVhZF9lbnRyeSAoImRyaXZlci9ydGMiLCAwLCAwLCBy dGNfcmVhZF9wcm9jLCBOVUxMKTsKIAogI2lmIGRlZmluZWQoX19hbHBoYV9fKSB8fCBkZWZp bmVkKF9fbWlwc19fKQpkaWZmIC1ydU4gbGludXgtMi41LjQ4L2RyaXZlcnMvY2hhci9zY3gy MDBfd2R0LmMgbGludXgvZHJpdmVycy9jaGFyL3NjeDIwMF93ZHQuYwotLS0gbGludXgtMi41 LjQ4L2RyaXZlcnMvY2hhci9zY3gyMDBfd2R0LmMJTW9uIE5vdiAxOCAxMDoyOTo0OSAyMDAy CisrKyBsaW51eC9kcml2ZXJzL2NoYXIvc2N4MjAwX3dkdC5jCUZyaSBOb3YgMjIgMTA6MDY6 MzQgMjAwMgpAQCAtMjQ1LDggKzI0NSwxMCBAQAogCXNlbWFfaW5pdCgmb3Blbl9zZW1hcGhv cmUsIDEpOwogCiAJciA9IG1pc2NfcmVnaXN0ZXIoJnNjeDIwMF93ZHRfbWlzY2Rldik7Ci0J aWYgKHIpCisJaWYgKHIpeworCQlwcmludGYoS0VSTl9FUlIgTkFNRSAiOiBjYW5ub3QgcmVn aXN0ZXIgZGV2aWNlXG4iKTsKIAkJcmV0dXJuIHI7CisJfQogCiAJciA9IHJlZ2lzdGVyX3Jl Ym9vdF9ub3RpZmllcigmc2N4MjAwX3dkdF9ub3RpZmllcik7CiAgICAgICAgIGlmIChyKSB7 CmRpZmYgLXJ1TiBsaW51eC0yLjUuNDgvZHJpdmVycy9jaGFyL3NvZnRkb2cuYyBsaW51eC9k cml2ZXJzL2NoYXIvc29mdGRvZy5jCi0tLSBsaW51eC0yLjUuNDgvZHJpdmVycy9jaGFyL3Nv ZnRkb2cuYwlNb24gTm92IDE4IDEwOjI5OjMyIDIwMDIKKysrIGxpbnV4L2RyaXZlcnMvY2hh ci9zb2Z0ZG9nLmMJRnJpIE5vdiAyMiAxMDowNjozNCAyMDAyCkBAIC0xNzcsMTAgKzE3Nywx MCBAQAogewogCWludCByZXQ7CiAKLQlyZXQgPSBtaXNjX3JlZ2lzdGVyKCZzb2Z0ZG9nX21p c2NkZXYpOwotCi0JaWYgKHJldCkKLQkJcmV0dXJuIHJldDsKKwlpZihtaXNjX3JlZ2lzdGVy KCZzb2Z0ZG9nX21pc2NkZXYpKXsKKwkJcHJpbmYoS0VSTl9FUlIgIndhdGNoZG9nOiBjYW5u b3QgcmVnaXN0ZXIgbWlzYyBkZXZpY2VcbiIpOworCQlyZXR1cm4gLUVCVVNZOworCX0KIAog CXByaW50ayhiYW5uZXIsIHNvZnRfbWFyZ2luLCBub3dheW91dCk7CiAKZGlmZiAtcnVOIGxp bnV4LTIuNS40OC9kcml2ZXJzL2NoYXIvdG9zaGliYS5jIGxpbnV4L2RyaXZlcnMvY2hhci90 b3NoaWJhLmMKLS0tIGxpbnV4LTIuNS40OC9kcml2ZXJzL2NoYXIvdG9zaGliYS5jCU1vbiBO b3YgMTggMTA6Mjk6NTYgMjAwMgorKysgbGludXgvZHJpdmVycy9jaGFyL3Rvc2hpYmEuYwlG cmkgTm92IDIyIDEwOjA2OjM0IDIwMDIKQEAgLTQ4OSw3ICs0ODksMTAgQEAKIAogCS8qIHJl Z2lzdGVyIHRoZSBkZXZpY2UgZmlsZSAqLwogCi0JbWlzY19yZWdpc3RlcigmdG9zaF9kZXZp Y2UpOworCWlmKG1pc2NfcmVnaXN0ZXIoJnRvc2hfZGV2aWNlKSl7CisJCXByaW50ZihLRVJO X0VSUiAidG9zaGliYTogY2Fubm90IHJlZ2lzdGVyIGRldmljZVxuIik7CisJCXJldHVybiAt RUJVU1k7CisJfQogCiAJLyogcmVnaXN0ZXIgdGhlIHByb2MgZW50cnkgKi8KIApkaWZmIC1y dU4gbGludXgtMi41LjQ4L2RyaXZlcnMvY2hhci93ODM4NzdmX3dkdC5jIGxpbnV4L2RyaXZl cnMvY2hhci93ODM4NzdmX3dkdC5jCi0tLSBsaW51eC0yLjUuNDgvZHJpdmVycy9jaGFyL3c4 Mzg3N2Zfd2R0LmMJTW9uIE5vdiAxOCAxMDoyOTo0OCAyMDAyCisrKyBsaW51eC9kcml2ZXJz L2NoYXIvdzgzODc3Zl93ZHQuYwlGcmkgTm92IDIyIDEwOjA2OjM0IDIwMDIKQEAgLTMzNiw4 ICszMzYsMTAgQEAKIAl0aW1lci5kYXRhID0gMDsKIAogCXJjID0gbWlzY19yZWdpc3Rlcigm d2R0X21pc2NkZXYpOwotCWlmIChyYykKKwlpZiAocmMpeworCQlwcmludGYoS0VSTl9FUlIg IndhdGNoZG9nOiBjYW5ub3QgcmVnaXN0ZXIgbWlzayBkZXZpY2VcbiIpOwogCQlnb3RvIGVy cl9vdXRfcmVnaW9uMjsKKwl9CiAKIAlyYyA9IHJlZ2lzdGVyX3JlYm9vdF9ub3RpZmllcigm d2R0X25vdGlmaWVyKTsKIAlpZiAocmMpCmRpZmYgLXJ1TiBsaW51eC0yLjUuNDgvZHJpdmVy cy9jaGFyL3dkdDI4NS5jIGxpbnV4L2RyaXZlcnMvY2hhci93ZHQyODUuYwotLS0gbGludXgt Mi41LjQ4L2RyaXZlcnMvY2hhci93ZHQyODUuYwlNb24gTm92IDE4IDEwOjI5OjI4IDIwMDIK KysrIGxpbnV4L2RyaXZlcnMvY2hhci93ZHQyODUuYwlGcmkgTm92IDIyIDEwOjA2OjM0IDIw MDIKQEAgLTE2OSw3ICsxNjksMTAgQEAKIAlpZiAobWFjaGluZV9pc19uZXR3aW5kZXIoKSkK IAkJcmV0dXJuIC1FTk9ERVY7CiAKLQltaXNjX3JlZ2lzdGVyKCZ3YXRjaGRvZ19taXNjZGV2 KTsKKwlpZihtaXNjX3JlZ2lzdGVyKCZ3YXRjaGRvZ19taXNjZGV2KSl7CisJCXByaW50ZihL RVJOX0VSUiAiRm9vdGJyaWRnZSBXYXRjaGRvZyBUaW1lcjogY2Fubm90IHJlZ2lzdGVyIG1p c2MgZGV2aWNlIG9uIG1pbm9yICVkXG4iLCBXQVRDSERPR19NSU5PUik7CisJCXJldHVybiAt RUJVU1k7CisJfQogCXByaW50aygiRm9vdGJyaWRnZSBXYXRjaGRvZyBUaW1lcjogMC4wMSwg dGltZXIgbWFyZ2luOiAlZCBzZWNcbiIsIAogCSAgICAgICBzb2Z0X21hcmdpbik7CiAJaWYg KG1hY2hpbmVfaXNfY2F0cygpKQpkaWZmIC1ydU4gbGludXgtMi41LjQ4L2RyaXZlcnMvY2hh ci93ZHQ5NzcuYyBsaW51eC9kcml2ZXJzL2NoYXIvd2R0OTc3LmMKLS0tIGxpbnV4LTIuNS40 OC9kcml2ZXJzL2NoYXIvd2R0OTc3LmMJTW9uIE5vdiAxOCAxMDoyOTo1MiAyMDAyCisrKyBs aW51eC9kcml2ZXJzL2NoYXIvd2R0OTc3LmMJRnJpIE5vdiAyMiAxMDowNjozNCAyMDAyCkBA IC0zMzAsNyArMzMwLDEwIEBACiAJaWYgKCFtYWNoaW5lX2lzX25ldHdpbmRlcigpKQogCQly ZXR1cm4gLUVOT0RFVjsKIAotCW1pc2NfcmVnaXN0ZXIoJndkdDk3N19taXNjZGV2KTsKKwlp ZihtaXNjX3JlZ2lzdGVyKCZ3ZHQ5NzdfbWlzY2RldikpeworCQlwcmludGYoS0VSTl9FUlIg IndhdGNoZG9nOiBjYW5ub3QgcmVnaXN0ZXIgZGV2aWNlXG4iKTsKKwkJcmV0dXJuIC1FQlVT WTsKKwl9CiAJcHJpbnRrKEtFUk5fSU5GTyAiV2R0OTc3IFdhdGNoZG9nIHNsZWVwaW5nLlxu Iik7CiAJcmV0dXJuIDA7CiB9CmRpZmYgLXJ1TiBsaW51eC0yLjUuNDgvZHJpdmVycy9pbnB1 dC9taXNjL3VpbnB1dC5jIGxpbnV4L2RyaXZlcnMvaW5wdXQvbWlzYy91aW5wdXQuYwotLS0g bGludXgtMi41LjQ4L2RyaXZlcnMvaW5wdXQvbWlzYy91aW5wdXQuYwlNb24gTm92IDE4IDEw OjI5OjUyIDIwMDIKKysrIGxpbnV4L2RyaXZlcnMvaW5wdXQvbWlzYy91aW5wdXQuYwlGcmkg Tm92IDIyIDEwOjA2OjM0IDIwMDIKQEAgLTM3Myw3ICszNzMsMTEgQEAKIAogc3RhdGljIGlu dCBfX2luaXQgdWlucHV0X2luaXQodm9pZCkKIHsKLQlyZXR1cm4gbWlzY19yZWdpc3Rlcigm dWlucHV0X21pc2MpOworCWlmKG1pc2NfcmVnaXN0ZXIoJnVpbnB1dF9taXNjKSl7CisJCXBy aW50ZihLRVJOX0VSUiAiJXM6IGNhbm5vdCByZWdpc3RlciBkZXZpY2VcbiIsIFVJTlBVVF9O QU1FKTsKKwkJcmV0dXJuIC0gRUJVU1k7CisJfWVsc2UKKwkJcmV0dXJuIDA7CiB9CiAKIHN0 YXRpYyB2b2lkIF9fZXhpdCB1aW5wdXRfZXhpdCh2b2lkKQpkaWZmIC1ydU4gbGludXgtMi41 LjQ4L2RyaXZlcnMvbWFjaW50b3NoL2Fucy1sY2QuYyBsaW51eC9kcml2ZXJzL21hY2ludG9z aC9hbnMtbGNkLmMKLS0tIGxpbnV4LTIuNS40OC9kcml2ZXJzL21hY2ludG9zaC9hbnMtbGNk LmMJTW9uIE5vdiAxOCAxMDoyOTo1NyAyMDAyCisrKyBsaW51eC9kcml2ZXJzL21hY2ludG9z aC9hbnMtbGNkLmMJRnJpIE5vdiAyMiAxMDowNjozNCAyMDAyCkBAIC0xNDgsMTAgKzE0OCwx MyBAQAogCWlmIChzdHJjbXAobm9kZS0+cGFyZW50LT5uYW1lLCAiZ2MiKSkKIAkJcmV0dXJu IC1FTk9ERVY7CiAKKwlpZihtaXNjX3JlZ2lzdGVyKCZhbnNsY2RfZGV2KSl7CisJCXByaW50 ZihLRVJOX0VSUiAiTENEOiBjYW5ub3QgcmVnaXN0ZXIgZGV2aWNlXG4iKTsKKwkJcmV0dXJu IC1FQlVTWTsKKwl9CisJCiAJYW5zbGNkX3B0ciA9ICh2b2xhdGlsZSB1bnNpZ25lZCBjaGFy Kilpb3JlbWFwKEFOU0xDRF9BRERSLCAweDIwKTsKIAkKLQltaXNjX3JlZ2lzdGVyKCZhbnNs Y2RfZGV2KTsKLQogI2lmZGVmIERFQlVHCiAJcHJpbnRrKEtFUk5fREVCVUcgIkxDRDogaW5p dFxuIik7CiAjZW5kaWYKZGlmZiAtcnVOIGxpbnV4LTIuNS40OC9kcml2ZXJzL21hY2ludG9z aC9hcG1fZW11LmMgbGludXgvZHJpdmVycy9tYWNpbnRvc2gvYXBtX2VtdS5jCi0tLSBsaW51 eC0yLjUuNDgvZHJpdmVycy9tYWNpbnRvc2gvYXBtX2VtdS5jCU1vbiBOb3YgMTggMTA6Mjk6 NTYgMjAwMgorKysgbGludXgvZHJpdmVycy9tYWNpbnRvc2gvYXBtX2VtdS5jCUZyaSBOb3Yg MjIgMTA6MDY6MzQgMjAwMgpAQCAtNTI2LDcgKzUyNiwxMSBAQAogCWlmIChhcG1fcHJvYykK IAkJU0VUX01PRFVMRV9PV05FUihhcG1fcHJvYyk7CiAKLQltaXNjX3JlZ2lzdGVyKCZhcG1f ZGV2aWNlKTsKKwlpZihtaXNjX3JlZ2lzdGVyKCZhcG1fZGV2aWNlKSl7CisJCXJlbW92ZV9w cm9jX2VudHJ5KCJhcG0iLCBOVUxMKTsKKwkJcHJpbnRmKEtFUk5fRVJSICJhcG1fZW11OiBj YW5ub3QgcmVnaXNldCBkZXZpY2VcbiIpOworCQlyZXR1cm4gLUVCVVNZOworCX0KIAogCXBt dV9yZWdpc3Rlcl9zbGVlcF9ub3RpZmllcigmYXBtX3NsZWVwX25vdGlmaWVyKTsKIApkaWZm IC1ydU4gbGludXgtMi41LjQ4L2RyaXZlcnMvbWFjaW50b3NoL252cmFtLmMgbGludXgvZHJp dmVycy9tYWNpbnRvc2gvbnZyYW0uYwotLS0gbGludXgtMi41LjQ4L2RyaXZlcnMvbWFjaW50 b3NoL252cmFtLmMJTW9uIE5vdiAxOCAxMDoyOToyMiAyMDAyCisrKyBsaW51eC9kcml2ZXJz L21hY2ludG9zaC9udnJhbS5jCUZyaSBOb3YgMjIgMTA6MDY6MzQgMjAwMgpAQCAtMTE4LDcg KzExOCwxMCBAQAogewogCXByaW50ayhLRVJOX0lORk8gIk1hY2ludG9zaCBub24tdm9sYXRp bGUgbWVtb3J5IGRyaXZlciB2JXNcbiIsCiAJCU5WUkFNX1ZFUlNJT04pOwotCW1pc2NfcmVn aXN0ZXIoJm52cmFtX2Rldik7CisJaWYobWlzY19yZWdpc3RlcigmbnZyYW1fZGV2KSl7CisJ CXByaW50ZihLRVJOX0VSUiAibnZyYW06IGNhbm5vdCByZWdpc3RlciBkZXZpY2VcbiIpOwor CQlyZXR1cm4gLUVCVVNZOworCX0KIAlyZXR1cm4gMDsKIH0KIApkaWZmIC1ydU4gbGludXgt Mi41LjQ4L2RyaXZlcnMvbWFjaW50b3NoL3ZpYS1wbXU2OGsuYyBsaW51eC9kcml2ZXJzL21h Y2ludG9zaC92aWEtcG11NjhrLmMKLS0tIGxpbnV4LTIuNS40OC9kcml2ZXJzL21hY2ludG9z aC92aWEtcG11NjhrLmMJTW9uIE5vdiAxOCAxMDoyOToyNCAyMDAyCisrKyBsaW51eC9kcml2 ZXJzL21hY2ludG9zaC92aWEtcG11NjhrLmMJRnJpIE5vdiAyMiAxMDowNjozNCAyMDAyCkBA IC0xMDUzLDcgKzEwNTMsOCBAQAogdm9pZCBwbXVfZGV2aWNlX2luaXQodm9pZCkKIHsKIAlp ZiAodmlhKQotCQltaXNjX3JlZ2lzdGVyKCZwbXVfZGV2aWNlKTsKKwkJaWYobWlzY19yZWdp c3RlcigmcG11X2RldmljZSkpCisJCQlwcmludGYoTEVSTl9FUlIgInBtdTogY2Fubm90IHJl Z2lzdGVyIGRldmllXG4iKTsKIH0KICNlbmRpZiAvKiBDT05GSUdfUE1BQ19QQk9PSyAqLwog CmRpZmYgLXJ1TiBsaW51eC0yLjUuNDgvZHJpdmVycy9tZXNzYWdlL2Z1c2lvbi9tcHRjdGwu YyBsaW51eC9kcml2ZXJzL21lc3NhZ2UvZnVzaW9uL21wdGN0bC5jCi0tLSBsaW51eC0yLjUu NDgvZHJpdmVycy9tZXNzYWdlL2Z1c2lvbi9tcHRjdGwuYwlNb24gTm92IDE4IDEwOjI5OjIx IDIwMDIKKysrIGxpbnV4L2RyaXZlcnMvbWVzc2FnZS9mdXNpb24vbXB0Y3RsLmMJRnJpIE5v diAyMiAxMDowNjozNCAyMDAyCkBAIC0zMTkwLDcgKzMxOTAsNyBAQAogI2VuZGlmCQkvKn0g c3BhcmMgKi8KIAogCS8qIFJlZ2lzdGVyIHRoaXMgZGV2aWNlICovCi0JaWYgKG1pc2NfcmVn aXN0ZXIoJm1wdGN0bF9taXNjZGV2KSA9PSAtMSkgeworCWlmIChtaXNjX3JlZ2lzdGVyKCZt cHRjdGxfbWlzY2RldikpIHsKIAkJcHJpbnRrKEtFUk5fRVJSIE1ZTkFNICI6IENhbid0IHJl Z2lzdGVyIG1pc2MgZGV2aWNlIFttaW5vcj0lZF0uXG4iLCBNUFRfTUlOT1IpOwogCQllcnIg PSAtRUJVU1k7CiAJCWdvdG8gb3V0X2ZhaWw7CmRpZmYgLXJ1TiBsaW51eC0yLjUuNDgvZHJp dmVycy9tZXNzYWdlL2kyby9pMm9fY29uZmlnLmMgbGludXgvZHJpdmVycy9tZXNzYWdlL2ky by9pMm9fY29uZmlnLmMKLS0tIGxpbnV4LTIuNS40OC9kcml2ZXJzL21lc3NhZ2UvaTJvL2ky b19jb25maWcuYwlNb24gTm92IDE4IDEwOjI5OjU0IDIwMDIKKysrIGxpbnV4L2RyaXZlcnMv bWVzc2FnZS9pMm8vaTJvX2NvbmZpZy5jCUZyaSBOb3YgMjIgMTA6MDY6MzQgMjAwMgpAQCAt OTMwLDcgKzkzMCw3IEBACiAJCXByaW50ayhLRVJOX0VSUiAiaTJvX2NvbmZpZzogbm8gbWVt b3J5IGZvciBwYWdlIGJ1ZmZlci5cbiIpOwogCQlyZXR1cm4gLUVOT0JVRlM7CiAJfQotCWlm KG1pc2NfcmVnaXN0ZXIoJmkyb19taXNjZGV2KT09LTEpCisJaWYobWlzY19yZWdpc3Rlcigm aTJvX21pc2NkZXYpKQogCXsKIAkJcHJpbnRrKEtFUk5fRVJSICJpMm9fY29uZmlnOiBjYW4n dCByZWdpc3RlciBkZXZpY2UuXG4iKTsKIAkJa2ZyZWUocGFnZV9idWYpOwpkaWZmIC1ydU4g bGludXgtMi41LjQ4L2RyaXZlcnMvbmV0L3R1bi5jIGxpbnV4L2RyaXZlcnMvbmV0L3R1bi5j Ci0tLSBsaW51eC0yLjUuNDgvZHJpdmVycy9uZXQvdHVuLmMJTW9uIE5vdiAxOCAxMDoyOTo0 NCAyMDAyCisrKyBsaW51eC9kcml2ZXJzL25ldC90dW4uYwlGcmkgTm92IDIyIDEwOjA2OjM0 IDIwMDIKQEAgLTU4NiwxMiArNTg2LDEzIEBACiAKIGludCBfX2luaXQgdHVuX2luaXQodm9p ZCkKIHsKKwkJCiAJcHJpbnRrKEtFUk5fSU5GTyAiVW5pdmVyc2FsIFRVTi9UQVAgZGV2aWNl IGRyaXZlciAlcyAiIAogCSAgICAgICAiKEMpMTk5OS0yMDAyIE1heGltIEtyYXNueWFuc2t5 XG4iLCBUVU5fVkVSKTsKIAogCWlmIChtaXNjX3JlZ2lzdGVyKCZ0dW5fbWlzY2RldikpIHsK IAkJcHJpbnRrKEtFUk5fRVJSICJ0dW46IENhbid0IHJlZ2lzdGVyIG1pc2MgZGV2aWNlICVk XG4iLCBUVU5fTUlOT1IpOwotCQlyZXR1cm4gLUVJTzsKKwkJcmV0dXJuIC1FQlVTWTsKIAl9 CiAKIAlyZXR1cm4gMDsKZGlmZiAtcnVOIGxpbnV4LTIuNS40OC9kcml2ZXJzL3BhcmlzYy9l aXNhX2VlcHJvbS5jIGxpbnV4L2RyaXZlcnMvcGFyaXNjL2Vpc2FfZWVwcm9tLmMKLS0tIGxp bnV4LTIuNS40OC9kcml2ZXJzL3BhcmlzYy9laXNhX2VlcHJvbS5jCU1vbiBOb3YgMTggMTA6 Mjk6NTMgMjAwMgorKysgbGludXgvZHJpdmVycy9wYXJpc2MvZWlzYV9lZXByb20uYwlGcmkg Tm92IDIyIDEwOjA2OjM0IDIwMDIKQEAgLTk4LDcgKzk4LDEwIEBACiB7CiAJaWYgKGFkZHIp IHsKIAkJZWVwcm9tX2FkZHIgPSBhZGRyOwotCQltaXNjX3JlZ2lzdGVyKCZlaXNhX2VlcHJv bV9kZXYpOworCQlJZihtaXNjX3JlZ2lzdGVyKCZlaXNhX2VlcHJvbV9kZXYpKXsKKwkJCXBy aW50ZihLRVJOX0VSUiAiZWlzYSBlZXByb206IGNhbm5vdCByZWdpc3RlciBkZXZpY2VcbiIp OworCQkJcmV0dXJuIC1FQlVTWTsKKwkJfQogCQlwcmludGsoS0VSTl9JTkZPICJFSVNBIEVF UFJPTSBhdCAweCVseFxuIiwgZWVwcm9tX2FkZHIpOwogCX0KIAlyZXR1cm4gMDsKZGlmZiAt cnVOIGxpbnV4LTIuNS40OC9kcml2ZXJzL3NidXMvY2hhci9jcHdhdGNoZG9nLmMgbGludXgv ZHJpdmVycy9zYnVzL2NoYXIvY3B3YXRjaGRvZy5jCi0tLSBsaW51eC0yLjUuNDgvZHJpdmVy cy9zYnVzL2NoYXIvY3B3YXRjaGRvZy5jCU1vbiBOb3YgMTggMTA6Mjk6NTUgMjAwMgorKysg bGludXgvZHJpdmVycy9zYnVzL2NoYXIvY3B3YXRjaGRvZy5jCUZyaSBOb3YgMjIgMTA6MDY6 MzQgMjAwMgpAQCAtNjQxLDYgKzY0MSw3IEBACiAJfQogCWlmKDAgIT0gbWlzY19yZWdpc3Rl cih3aGljaG1pc2MpKQogCXsKKwkJcHJpbnRmKEtFUk5fRVJSICIlczogY2Fubm90IHJlZ2lz dGVyIGRldmljZVxuIiwgV0RfT0JQTkFNRSk7CiAJCXJldHVybigxKTsKIAl9CiAJd2RfZGV2 LndhdGNoZG9nW3doaWNoZG9nXS5yZWdzCQkJPSB3aGljaHJlZ3M7CmRpZmYgLXJ1TiBsaW51 eC0yLjUuNDgvZHJpdmVycy9zYnVzL2NoYXIvZW52Y3RybC5jIGxpbnV4L2RyaXZlcnMvc2J1 cy9jaGFyL2VudmN0cmwuYwotLS0gbGludXgtMi41LjQ4L2RyaXZlcnMvc2J1cy9jaGFyL2Vu dmN0cmwuYwlNb24gTm92IDE4IDEwOjI5OjI1IDIwMDIKKysrIGxpbnV4L2RyaXZlcnMvc2J1 cy9jaGFyL2VudmN0cmwuYwlGcmkgTm92IDIyIDEwOjA2OjM0IDIwMDIKQEAgLTExMDYsOCAr MTEwNiw3IEBACiAKIAkvKiBSZWdpc3RlciB0aGUgZGV2aWNlIGFzIGEgbWlub3IgbWlzY2Vs bGFuZW91cyBkZXZpY2UuICovCiAJaWYgKG1pc2NfcmVnaXN0ZXIoJmVudmN0cmxfZGV2KSkg ewotCQlwcmludGsoImVudmN0cmw6IFVuYWJsZSB0byBnZXQgbWlzYyBtaW5vciAlZFxuIiwK LQkJICAgICAgIGVudmN0cmxfZGV2Lm1pbm9yKTsKKwkJcHJpbnRrKCJlbnZjdHJsOiBVbmFi bGUgdG8gZ2V0IG1pc2MgbWlub3IgJWRcbiIsIGVudmN0cmxfZGV2Lm1pbm9yKTsKIAl9CiAK IAkvKiBOb3RlIGFib3ZlIHRyYXZlcnNhbCByb3V0aW5lIHBvc3QtaW5jcmVtZW50ZWQgJ2kn IHRvIGFjY29tb2RhdGUgCmRpZmYgLXJ1TiBsaW51eC0yLjUuNDgvZHJpdmVycy9zZ2kvY2hh ci9kczEyODYuYyBsaW51eC9kcml2ZXJzL3NnaS9jaGFyL2RzMTI4Ni5jCi0tLSBsaW51eC0y LjUuNDgvZHJpdmVycy9zZ2kvY2hhci9kczEyODYuYwlNb24gTm92IDE4IDEwOjI5OjMwIDIw MDIKKysrIGxpbnV4L2RyaXZlcnMvc2dpL2NoYXIvZHMxMjg2LmMJRnJpIE5vdiAyMiAxMDow NjozNCAyMDAyCkBAIC0zNDksNyArMzQ5LDEwIEBACiBpbnQgX19pbml0IGRzMTI4Nl9pbml0 KHZvaWQpCiB7CiAJcHJpbnRrKEtFUk5fSU5GTyAiRFMxMjg2IFJlYWwgVGltZSBDbG9jayBE cml2ZXIgdiVzXG4iLCBEUzEyODZfVkVSU0lPTik7Ci0JbWlzY19yZWdpc3RlcigmZHMxMjg2 X2Rldik7CisJaWYobWlzY19yZWdpc3RlcigmZHMxMjg2X2RldikpeworCQlwcmludGYoS0VS Tl9FUlIgInJ0YzogY2Fubm9yIHJlZ2lzdGVyIGRldmljZVxuIik7CisJCXJldHVybiAtRUJV U1k7CisJfQogCiAJcmV0dXJuIDA7CiB9CmRpZmYgLXJ1TiBsaW51eC0yLjUuNDgvZHJpdmVy cy9zZ2kvY2hhci9ncmFwaGljcy5jIGxpbnV4L2RyaXZlcnMvc2dpL2NoYXIvZ3JhcGhpY3Mu YwotLS0gbGludXgtMi41LjQ4L2RyaXZlcnMvc2dpL2NoYXIvZ3JhcGhpY3MuYwlNb24gTm92 IDE4IDEwOjI5OjQ2IDIwMDIKKysrIGxpbnV4L2RyaXZlcnMvc2dpL2NoYXIvZ3JhcGhpY3Mu YwlGcmkgTm92IDIyIDEwOjA2OjM0IDIwMDIKQEAgLTMxMSw4ICszMTEsMTMgQEAKIC8qIFRo aXMgaXMgY2FsbGVkIGxhdGVyIGZyb20gdGhlIG1pc2MtaW5pdCByb3V0aW5lICovCiB2b2lk IF9faW5pdCBnZnhfcmVnaXN0ZXIgKHZvaWQpCiB7Ci0JbWlzY19yZWdpc3RlciAoJmRldl9n cmFwaGljcyk7Ci0JbWlzY19yZWdpc3RlciAoJmRldl9vcGVuZ2wpOworCWlmKG1pc2NfcmVn aXN0ZXIgKCZkZXZfZ3JhcGhpY3MpKXsKKwkJcHJpbnRmKEtFUk5fRVJST1IgInNnaS1ncmFw aGljczogY2Fubm90IHJlZ2lzdGVyIGRldmljZVxuIik7CisJfQorCWlmKG1pc2NfcmVnaXN0 ZXIgKCZkZXZfb3BlbmdsKSl7CisJCW1pc2NfZGVyZWdpc3RlcihkZXZfZ3JhcGhpY3MpOwor CQlwcmludGYoS0VSTl9FUlJPUiAic2dpLWdyYXBoaWNzOiBjYW5ub3QgcmVnaXN0ZXIgZGV2 aWNlXG4iKTsKKwl9CiB9CiAKIHZvaWQgX19pbml0IGdmeF9pbml0IChjb25zdCBjaGFyICoq bmFtZSkKQEAgLTM2Miw4ICszNjcsMTUgQEAKIAogCXByaW50aygiQm9hcmRzOiAlZFxuIiwg Ym9hcmRzKTsKIAotCW1pc2NfcmVnaXN0ZXIgKCZkZXZfZ3JhcGhpY3MpOwotCW1pc2NfcmVn aXN0ZXIgKCZkZXZfb3BlbmdsKTsKKwlpZihtaXNjX3JlZ2lzdGVyICgmZGV2X2dyYXBoaWNz KSl7CisJCXByaW50ZihLRVJOX0VSUiAic2dpLWdyYXBoaWNzOiBjYW5ub3QgcmVnaXN0ZXIg ZGV2aWNlXG4iKTsKKwkJcmV0dXJuIC1FQlVTWTsKKwl9CisJaWYobWlzY19yZWdpc3RlciAo JmRldl9vcGVuZ2wpKXsKKwkJbWlzY19kZXJlZ2lzdGVyKGRldl9ncmFwaGljcyk7CisJCXBy aW50ZihLRVJOX0VSUiAic2dpLWdyYXBoaWNzOiBjYW5ub3QgcmVnaXN0ZXIgZGV2aWRlXG4i KTsKKwkJcmV0dXJuIC1FQlVTWTsKKwl9CiAKIAlyZXR1cm4gMDsKIH0KZGlmZiAtcnVOIGxp bnV4LTIuNS40OC9kcml2ZXJzL3NnaS9jaGFyL3N0cmVhbWFibGUuYyBsaW51eC9kcml2ZXJz L3NnaS9jaGFyL3N0cmVhbWFibGUuYwotLS0gbGludXgtMi41LjQ4L2RyaXZlcnMvc2dpL2No YXIvc3RyZWFtYWJsZS5jCU1vbiBOb3YgMTggMTA6Mjk6MjMgMjAwMgorKysgbGludXgvZHJp dmVycy9zZ2kvY2hhci9zdHJlYW1hYmxlLmMJRnJpIE5vdiAyMiAxMDowNjozNCAyMDAyCkBA IC0zMTIsNyArMzEyLDE5IEBACiAJcHJpbnRrICgic3RyZWFtYWJsZSBtaXNjIGRldmljZXMg cmVnaXN0ZXJlZCAoa2V5YjolZCwgZ2Z4OiVkKVxuIiwKIAkJU0dJX1NUUkVBTVNfS0VZQk9B UkQsIFNHSV9HRlhfTUlOT1IpOwogCQotCW1pc2NfcmVnaXN0ZXIgKCZkZXZfZ2Z4KTsKLQlt aXNjX3JlZ2lzdGVyICgmZGV2X2lucHV0X2tleWJvYXJkKTsKLQltaXNjX3JlZ2lzdGVyICgm ZGV2X2lucHV0X21vdXNlKTsKKwlpZihtaXNjX3JlZ2lzdGVyICgmZGV2X2dmeCkpeworCQlw cmluZihLRVJOX0VSUiAic3RyZWFtcy1tb3VzZTogY2Fubm90IHJlZ2lzdGVyIGRldmljZVxu Iik7CisJCXJldHVybiAtRUJVU1k7CisJfQorCWlmKG1pc2NfcmVnaXN0ZXIgKCZkZXZfaW5w dXRfa2V5Ym9hcmQpKXsKKwkJbWlzY19kZXJlZ2lzdGVyKCZkZXZfZ2Z4KTsKKwkJcHJpbmYo S0VSTl9FUlIgInN0cmVhbXMtbW91c2U6IGNhbm5vdCByZWdpc3RlciBkZXZpY2VcbiIpOwor CQlyZXR1cm4gLUVCVVNZOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgCQkKKwl9CisJaWYobWlzY19yZWdpc3RlciAoJmRldl9pbnB1dF9tb3VzZSkpewor CQltaXNjX2RlcmVnaXN0ZXIoJmRldl9nZngpOworCQltaXNjX2RlcmVnaXN0ZXIoJmRldl9r ZXlib2FyZCk7CisJCXByaW5mKEtFUk5fRVJSICJzdHJlYW1zLW1vdXNlOiBjYW5ub3QgcmVn aXN0ZXIgZGV2aWNlXG4iKTsKKwkJcmV0dXJuIC1FQlVTWTsKKwl9CiB9CmRpZmYgLXJ1TiBs aW51eC0yLjUuNDgvZHJpdmVycy9zZ2kvY2hhci91c2VtYS5jIGxpbnV4L2RyaXZlcnMvc2dp L2NoYXIvdXNlbWEuYwotLS0gbGludXgtMi41LjQ4L2RyaXZlcnMvc2dpL2NoYXIvdXNlbWEu YwlNb24gTm92IDE4IDEwOjI5OjMyIDIwMDIKKysrIGxpbnV4L2RyaXZlcnMvc2dpL2NoYXIv dXNlbWEuYwlGcmkgTm92IDIyIDEwOjA2OjM0IDIwMDIKQEAgLTE3OCw3ICsxNzgsMTAgQEAK IHsKIAlwcmludGsoInVzZW1hY2xvbmUgbWlzYyBkZXZpY2UgcmVnaXN0ZXJlZCAobWlub3I6 ICVkKVxuIiwKIAkgICAgICAgU0dJX1VTRU1BQ0xPTkUpOwotCW1pc2NfcmVnaXN0ZXIoJmRl dl91c2VtYWNsb25lKTsKKwlpZihtaXNjX3JlZ2lzdGVyKCZkZXZfdXNlbWFjbG9uZSkpewor CQlwcmludGYoS0VSTl9FUlIgInVzZW1hY2xvbmU6IGNhbm5vdCByZWdpc3RlciBkZXZpY2Vc biIpOworCQlyZXR1cm4gLUVCVVNZOworCX0KIH0KIAogRVhQT1JUX1NZTUJPTCh1c2VtYV9p bml0KTsKZGlmZiAtcnVOIGxpbnV4LTIuNS40OC9uZXQvaXJkYS9pcm5ldC9pcm5ldF9wcHAu YyBsaW51eC9uZXQvaXJkYS9pcm5ldC9pcm5ldF9wcHAuYwotLS0gbGludXgtMi41LjQ4L25l dC9pcmRhL2lybmV0L2lybmV0X3BwcC5jCU1vbiBOb3YgMTggMTA6Mjk6NTEgMjAwMgorKysg bGludXgvbmV0L2lyZGEvaXJuZXQvaXJuZXRfcHBwLmMJRnJpIE5vdiAyMiAxMDowNjozNCAy MDAyCkBAIC0xMDQ5LDcgKzEwNDksOSBAQAogCiAgIC8qIEFsbG9jYXRlIG91cnNlbHZlcyBh cyBhIG1pbm9yIGluIHRoZSBtaXNjIHJhbmdlICovCiAgIGVyciA9IG1pc2NfcmVnaXN0ZXIo JmlybmV0X21pc2NfZGV2aWNlKTsKLQorICBpZihlcnIpCisgIAlwcmludGYoS0VSTl9FUlIg ImlybmV0OiBjYW5ub3QgcmVnaXN0ZXIgZGV2aWNlXG4iKTsKKyAgCiAgIERFWElUKE1PRFVM RV9UUkFDRSwgIlxuIik7CiAgIHJldHVybiBlcnI7CiB9Cg== --------------080806000408020906060803 Content-Type: text/plain;charset=us-ascii; name="Disclaimer_Message.txt" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="Disclaimer_Message.txt" ----------------------------------------- (on postoffice) The information contained in this email is confidential and is meant to be read only by the person to whom it is addressed.Please visit http://www.millenniumit.com/legal/email.htm to read the entire confidentiality clause. --------------------------------------------------------- --------------080806000408020906060803--