[PATCH] misc_register failure 2.5.48

Dhammika Pathirana (dhammikap@millenniumit.com)
Fri, 22 Nov 2002 14:07:29 +0600


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--
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/