Re: Multithreaded coredump patch where?

mgross (mgross@unix-os.sc.intel.com)
Mon, 16 Dec 2002 13:21:20 -0800


--------------Boundary-00=_KZD84E63IU9F96N98QU4
Content-Type: text/plain;
charset="iso-8859-1"
Content-Transfer-Encoding: 8bit

I haven't rebased the patches I posted back in June for a while now.

Attached is the patch I posted for the 2.4.18 vanilla kernel. Its a bit
controversial, but it seems to work for a number of folks. Let me know if
you have any troubles re-basing it.

I don't know if there is any plan to back port Ingo's version of this feature
to 2.4.x

--mgross

On Monday 16 December 2002 09:28 am, Roberto Fichera wrote:
> Does anyone point me where can I download a stable
> multithread coredump patch for the 2.4.19/20 kernel ?
>
> Thanks in advance,
>
> Roberto Fichera.
>
>
> ______________________________________
> E-mail protetta dal servizio antivirus di IsolaWeb Agency & ISP
> http://wwww.isolaweb.it
> -
> 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/

--------------Boundary-00=_KZD84E63IU9F96N98QU4
Content-Type: text/x-diff;
charset="iso-8859-1";
name="tcore-2418-061802.pat"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="tcore-2418-061802.pat"

ZGlmZiAtdXJOIC1YIGRvbnRkaWZmIGxpbnV4LTIuNC4xOC9hcmNoL2kzODYva2VybmVsL2kzODcu
YyBsaW51eDI0MTgudGNvcmUvYXJjaC9pMzg2L2tlcm5lbC9pMzg3LmMKLS0tIGxpbnV4LTIuNC4x
OC9hcmNoL2kzODYva2VybmVsL2kzODcuYwlGcmkgRmViIDIzIDEzOjA5OjA4IDIwMDEKKysrIGxp
bnV4MjQxOC50Y29yZS9hcmNoL2kzODYva2VybmVsL2kzODcuYwlUaHUgSnVuIDEzIDEwOjAwOjQ4
IDIwMDIKQEAgLTUyMCwzICs1MjAsNDQgQEAKIAogCXJldHVybiBmcHZhbGlkOwogfQorCitpbnQg
ZHVtcF90YXNrX2ZwdSggc3RydWN0IHRhc2tfc3RydWN0ICp0c2ssIHN0cnVjdCB1c2VyX2kzODdf
c3RydWN0ICpmcHUgKQoreworCWludCBmcHZhbGlkOworCisJZnB2YWxpZCA9IHRzay0+dXNlZF9t
YXRoOworCWlmICggZnB2YWxpZCApIHsKKwkJaWYgKHRzayA9PSBjdXJyZW50KSB1bmxhenlfZnB1
KCB0c2sgKTsKKwkJaWYgKCBjcHVfaGFzX2Z4c3IgKSB7CisJCQljb3B5X2ZwdV9meHNhdmUoIHRz
aywgZnB1ICk7CisJCX0gZWxzZSB7CisJCQljb3B5X2ZwdV9mc2F2ZSggdHNrLCBmcHUgKTsKKwkJ
fQorCX0KKworCXJldHVybiBmcHZhbGlkOworfQorCitpbnQgZHVtcF90YXNrX2V4dGVuZGVkX2Zw
dSggc3RydWN0IHRhc2tfc3RydWN0ICp0c2ssIHN0cnVjdCB1c2VyX2Z4c3Jfc3RydWN0ICpmcHUg
KQoreworCWludCBmcHZhbGlkOworCQorCWZwdmFsaWQgPSB0c2stPnVzZWRfbWF0aCAmJiBjcHVf
aGFzX2Z4c3I7CisJaWYgKCBmcHZhbGlkICkgeworCQlpZiAodHNrID09IGN1cnJlbnQpIHVubGF6
eV9mcHUoIHRzayApOworCQltZW1jcHkoIGZwdSwgJnRzay0+dGhyZWFkLmkzODcuZnhzYXZlLAor
CQlzaXplb2Yoc3RydWN0IHVzZXJfZnhzcl9zdHJ1Y3QpICk7CisJfQorCQorCXJldHVybiBmcHZh
bGlkOworfQorCisKKyNpZmRlZiBDT05GSUdfU01QCit2b2lkIGR1bXBfc21wX3VubGF6eV9mcHUo
dm9pZCkKK3sKKwl1bmxhenlfZnB1KGN1cnJlbnQpOworCXJldHVybjsKK30KKyNlbmRpZgorCmRp
ZmYgLXVyTiAtWCBkb250ZGlmZiBsaW51eC0yLjQuMTgvYXJjaC9pMzg2L2tlcm5lbC9wcm9jZXNz
LmMgbGludXgyNDE4LnRjb3JlL2FyY2gvaTM4Ni9rZXJuZWwvcHJvY2Vzcy5jCi0tLSBsaW51eC0y
LjQuMTgvYXJjaC9pMzg2L2tlcm5lbC9wcm9jZXNzLmMJTW9uIEZlYiAyNSAxNDozNzo1MyAyMDAy
CisrKyBsaW51eDI0MTgudGNvcmUvYXJjaC9pMzg2L2tlcm5lbC9wcm9jZXNzLmMJVGh1IEp1biAx
MyAxMDowMDo0OCAyMDAyCkBAIC02NDQsNiArNjQ0LDI0IEBACiAKIAlkdW1wLT51X2ZwdmFsaWQg
PSBkdW1wX2ZwdSAocmVncywgJmR1bXAtPmkzODcpOwogfQorLyogCisgKiBDYXB0dXJlIHRoZSB1
c2VyIHNwYWNlIHJlZ2lzdGVycyBpZiB0aGUgdGFzayBpcyBub3QgcnVubmluZyAoaW4gdXNlciBz
cGFjZSkKKyAqLworI2luY2x1ZGUgPGxpbnV4L2VsZmNvcmUuaD4KK2ludCBkdW1wX3Rhc2tfcmVn
cyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaywgIGVsZl9ncmVnc2V0X3QgKnJlZ3MpCit7CisJc3Ry
dWN0IHB0X3JlZ3MgcHRyZWdzOworCQorCXB0cmVncyA9ICooc3RydWN0IHB0X3JlZ3MgKikoKHVu
c2lnbmVkIGxvbmcpdHNrICsgVEhSRUFEX1NJWkUgLSBzaXplb2Yoc3RydWN0IHB0X3JlZ3MpKTsK
KwlwdHJlZ3MueGNzICY9IDB4ZmZmZjsKKwlwdHJlZ3MueGRzICY9IDB4ZmZmZjsKKwlwdHJlZ3Mu
eGVzICY9IDB4ZmZmZjsKKwlwdHJlZ3MueHNzICY9IDB4ZmZmZjsKKworCWVsZl9jb3JlX2NvcHlf
cmVncyhyZWdzLCAmcHRyZWdzKTsKKworCXJldHVybiAxOworfQogCiAvKgogICogVGhpcyBzcGVj
aWFsIG1hY3JvIGNhbiBiZSB1c2VkIHRvIGxvYWQgYSBkZWJ1Z2dpbmcgcmVnaXN0ZXIKZGlmZiAt
dXJOIC1YIGRvbnRkaWZmIGxpbnV4LTIuNC4xOC9hcmNoL2lhNjQva2VybmVsL3Byb2Nlc3MuYyBs
aW51eDI0MTgudGNvcmUvYXJjaC9pYTY0L2tlcm5lbC9wcm9jZXNzLmMKLS0tIGxpbnV4LTIuNC4x
OC9hcmNoL2lhNjQva2VybmVsL3Byb2Nlc3MuYwlGcmkgTm92ICA5IDE3OjI2OjE3IDIwMDEKKysr
IGxpbnV4MjQxOC50Y29yZS9hcmNoL2lhNjQva2VybmVsL3Byb2Nlc3MuYwlUaHUgSnVuIDEzIDEw
OjAwOjQ4IDIwMDIKQEAgLTI5OCw2ICsyOTgsMzEgQEAKIHZvaWQKIGRvX2NvcHlfcmVncyAoc3Ry
dWN0IHVud19mcmFtZV9pbmZvICppbmZvLCB2b2lkICphcmcpCiB7CisJZG9fY29weV90YXNrX3Jl
Z3MoY3VycmVudCwgaW5mbywgYXJnKTsKK30KKwordm9pZAorZG9fZHVtcF9mcHUgKHN0cnVjdCB1
bndfZnJhbWVfaW5mbyAqaW5mbywgdm9pZCAqYXJnKQoreworCWRvX2R1bXBfdGFza19mcHUoY3Vy
cmVudCwgaW5mbywgYXJnKTsKK30KKwordm9pZAoraWE2NF9lbGZfY29yZV9jb3B5X3JlZ3MgKHN0
cnVjdCBwdF9yZWdzICpwdCwgZWxmX2dyZWdzZXRfdCBkc3QpCit7CisJdW53X2luaXRfcnVubmlu
Zyhkb19jb3B5X3JlZ3MsIGRzdCk7Cit9CisKK2ludAorZHVtcF9mcHUgKHN0cnVjdCBwdF9yZWdz
ICpwdCwgZWxmX2ZwcmVnc2V0X3QgZHN0KQoreworCXVud19pbml0X3J1bm5pbmcoZG9fZHVtcF9m
cHUsIGRzdCk7CisJcmV0dXJuIDE7CS8qIGYwLWYzMSBhcmUgYWx3YXlzIHZhbGlkIHNvIHdlIGFs
d2F5cyByZXR1cm4gMSAqLworfQorCitzdGF0aWMgdm9pZAorZG9fY29weV90YXNrX3JlZ3MgKHN0
cnVjdCB0YXNrX3N0cnVjdCAqdGFzaywgc3RydWN0IHVud19mcmFtZV9pbmZvICppbmZvLCB2b2lk
ICphcmcpCit7CiAJdW5zaWduZWQgbG9uZyBtYXNrLCBzcCwgbmF0X2JpdHMgPSAwLCBpcCwgYXJf
cm5hdCwgdXJic19lbmQsIGNmbTsKIAllbGZfZ3JlZ190ICpkc3QgPSBhcmc7CiAJc3RydWN0IHB0
X3JlZ3MgKnB0OwpAQCAtMzEyLDEyICszMzcsMTIgQEAKIAl1bndfZ2V0X3NwKGluZm8sICZzcCk7
CiAJcHQgPSAoc3RydWN0IHB0X3JlZ3MgKikgKHNwICsgMTYpOwogCi0JdXJic19lbmQgPSBpYTY0
X2dldF91c2VyX3Jic19lbmQoY3VycmVudCwgcHQsICZjZm0pOworCXVyYnNfZW5kID0gaWE2NF9n
ZXRfdXNlcl9yYnNfZW5kKHRhc2ssIHB0LCAmY2ZtKTsKIAotCWlmIChpYTY0X3N5bmNfdXNlcl9y
YnMoY3VycmVudCwgaW5mby0+c3csIHB0LT5hcl9ic3BzdG9yZSwgdXJic19lbmQpIDwgMCkKKwlp
ZiAoaWE2NF9zeW5jX3VzZXJfcmJzKHRhc2ssIGluZm8tPnN3LCBwdC0+YXJfYnNwc3RvcmUsIHVy
YnNfZW5kKSA8IDApCiAJCXJldHVybjsKIAotCWlhNjRfcGVlayhjdXJyZW50LCBpbmZvLT5zdywg
dXJic19lbmQsIChsb25nKSBpYTY0X3JzZV9ybmF0X2FkZHIoKGxvbmcgKikgdXJic19lbmQpLAor
CWlhNjRfcGVlayh0YXNrLCBpbmZvLT5zdywgdXJic19lbmQsIChsb25nKSBpYTY0X3JzZV9ybmF0
X2FkZHIoKGxvbmcgKikgdXJic19lbmQpLAogCQkgICZhcl9ybmF0KTsKIAogCS8qCkBAIC0zNjYs
NyArMzkxLDcgQEAKIH0KIAogdm9pZAotZG9fZHVtcF9mcHUgKHN0cnVjdCB1bndfZnJhbWVfaW5m
byAqaW5mbywgdm9pZCAqYXJnKQorZG9fZHVtcF90YXNrX2ZwdSAoc3RydWN0IHRhc2tfc3RydWN0
ICp0YXNrLCBzdHJ1Y3QgdW53X2ZyYW1lX2luZm8gKmluZm8sIHZvaWQgKmFyZykKIHsKIAllbGZf
ZnByZWdfdCAqZHN0ID0gYXJnOwogCWludCBpOwpAQCAtMzgxLDIyICs0MDYsNDEgQEAKIAlmb3Ig
KGkgPSAyOyBpIDwgMzI7ICsraSkKIAkJdW53X2dldF9mcihpbmZvLCBpLCBkc3QgKyBpKTsKIAot
CWlhNjRfZmx1c2hfZnBoKGN1cnJlbnQpOwotCWlmICgoY3VycmVudC0+dGhyZWFkLmZsYWdzICYg
SUE2NF9USFJFQURfRlBIX1ZBTElEKSAhPSAwKQotCQltZW1jcHkoZHN0ICsgMzIsIGN1cnJlbnQt
PnRocmVhZC5mcGgsIDk2KjE2KTsKKwlpYTY0X2ZsdXNoX2ZwaCh0YXNrKTsKKwlpZiAoKHRhc2st
PnRocmVhZC5mbGFncyAmIElBNjRfVEhSRUFEX0ZQSF9WQUxJRCkgIT0gMCkKKwkJbWVtY3B5KGRz
dCArIDMyLCB0YXNrLT50aHJlYWQuZnBoLCA5NioxNik7CiB9CiAKLXZvaWQKLWlhNjRfZWxmX2Nv
cmVfY29weV9yZWdzIChzdHJ1Y3QgcHRfcmVncyAqcHQsIGVsZl9ncmVnc2V0X3QgZHN0KQoraW50
IGR1bXBfdGFza19yZWdzKHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzaywgZWxmX2dyZWdzZXRfdCAq
cmVncykKIHsKLQl1bndfaW5pdF9ydW5uaW5nKGRvX2NvcHlfcmVncywgZHN0KTsKKwlzdHJ1Y3Qg
dW53X2ZyYW1lX2luZm8gdGNvcmVfaW5mbzsKKworCWlmKGN1cnJlbnQgPT0gdGFzaykgeworCQl1
bndfaW5pdF9ydW5uaW5nKGRvX2NvcHlfcmVncywgcmVncyk7CisJfQorCWVsc2UgeworCQltZW1z
ZXQoJnRjb3JlX2luZm8sIDAsIHNpemVvZih0Y29yZV9pbmZvKSk7CQorCQl1bndfaW5pdF9mcm9t
X2Jsb2NrZWRfdGFzaygmdGNvcmVfaW5mbywgdGFzayk7CisJCWRvX2NvcHlfdGFza19yZWdzKHRh
c2ssICZ0Y29yZV9pbmZvLCByZWdzKTsKKwl9CisKKwlyZXR1cm4gMTsKIH0KIAotaW50Ci1kdW1w
X2ZwdSAoc3RydWN0IHB0X3JlZ3MgKnB0LCBlbGZfZnByZWdzZXRfdCBkc3QpCitpbnQgZHVtcF90
YXNrX2ZwdSAoc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrLCBlbGZfZnByZWdzZXRfdCAqZHN0KQog
ewotCXVud19pbml0X3J1bm5pbmcoZG9fZHVtcF9mcHUsIGRzdCk7Ci0JcmV0dXJuIDE7CS8qIGYw
LWYzMSBhcmUgYWx3YXlzIHZhbGlkIHNvIHdlIGFsd2F5cyByZXR1cm4gMSAqLworCXN0cnVjdCB1
bndfZnJhbWVfaW5mbyB0Y29yZV9pbmZvOworCisJaWYoY3VycmVudCA9PSB0YXNrKSB7CisJCXVu
d19pbml0X3J1bm5pbmcoZG9fZHVtcF9mcHUsIGRzdCk7CisJfQorCWVsc2UgeworCQltZW1zZXQo
JnRjb3JlX2luZm8sIDAsIHNpemVvZih0Y29yZV9pbmZvKSk7CQorCQl1bndfaW5pdF9mcm9tX2Js
b2NrZWRfdGFzaygmdGNvcmVfaW5mbywgdGFzayk7CisJCWRvX2R1bXBfdGFza19mcHUodGFzaywg
JnRjb3JlX2luZm8sIGRzdCk7CisJfQorCisJcmV0dXJuIDE7IAogfQogCiBhc21saW5rYWdlIGxv
bmcKQmluYXJ5IGZpbGVzIGxpbnV4LTIuNC4xOC9jb3JlIGFuZCBsaW51eDI0MTgudGNvcmUvY29y
ZSBkaWZmZXIKZGlmZiAtdXJOIC1YIGRvbnRkaWZmIGxpbnV4LTIuNC4xOC9mcy9iaW5mbXRfZWxm
LmMgbGludXgyNDE4LnRjb3JlL2ZzL2JpbmZtdF9lbGYuYwotLS0gbGludXgtMi40LjE4L2ZzL2Jp
bmZtdF9lbGYuYwlNb24gRmViIDI1IDE0OjM4OjA4IDIwMDIKKysrIGxpbnV4MjQxOC50Y29yZS9m
cy9iaW5mbXRfZWxmLmMJVHVlIEp1biAxOCAxMDowMDoxMyAyMDAyCkBAIC0zMCw2ICszMCw3IEBA
CiAjaW5jbHVkZSA8bGludXgvZWxmY29yZS5oPgogI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KICNp
bmNsdWRlIDxsaW51eC9oaWdodWlkLmg+CisjaW5jbHVkZSA8bGludXgvc21wLmg+CiAjaW5jbHVk
ZSA8bGludXgvc21wX2xvY2suaD4KICNpbmNsdWRlIDxsaW51eC9jb21waWxlci5oPgogI2luY2x1
ZGUgPGxpbnV4L2hpZ2htZW0uaD4KQEAgLTk1Miw3ICs5NTMsNyBAQAogLyogI2RlZmluZSBERUJV
RyAqLwogCiAjaWZkZWYgREVCVUcKLXN0YXRpYyB2b2lkIGR1bXBfcmVncyhjb25zdCBjaGFyICpz
dHIsIGVsZl9ncmVnX3QgKnIpCitzdGF0aWMgdm9pZCBkdW1wX3JlZ3MoY29uc3QgY2hhciAqc3Ry
LCBlbGZfZ3JlZ3NldF90ICpyKQogewogCWludCBpOwogCXN0YXRpYyBjb25zdCBjaGFyICpyZWdz
W10gPSB7ICJlYngiLCAiZWN4IiwgImVkeCIsICJlc2kiLCAiZWRpIiwgImVicCIsCkBAIC0xMDAw
LDYgKzEwMDEsMTU2IEBACiAjZGVmaW5lIERVTVBfU0VFSyhvZmYpCVwKIAlpZiAoIWR1bXBfc2Vl
ayhmaWxlLCAob2ZmKSkpIFwKIAkJZ290byBlbmRfY29yZWR1bXA7CisKK3N0YXRpYyBpbmxpbmUg
dm9pZCBmaWxsX2VsZl9oZWFkZXIoc3RydWN0IGVsZmhkciAqZWxmLCBpbnQgc2VncykKK3sKKwlt
ZW1jcHkoZWxmLT5lX2lkZW50LCBFTEZNQUcsIFNFTEZNQUcpOworCWVsZi0+ZV9pZGVudFtFSV9D
TEFTU10gPSBFTEZfQ0xBU1M7CisJZWxmLT5lX2lkZW50W0VJX0RBVEFdID0gRUxGX0RBVEE7CisJ
ZWxmLT5lX2lkZW50W0VJX1ZFUlNJT05dID0gRVZfQ1VSUkVOVDsKKwltZW1zZXQoZWxmLT5lX2lk
ZW50K0VJX1BBRCwgMCwgRUlfTklERU5ULUVJX1BBRCk7CisKKwllbGYtPmVfdHlwZSA9IEVUX0NP
UkU7CisJZWxmLT5lX21hY2hpbmUgPSBFTEZfQVJDSDsKKwllbGYtPmVfdmVyc2lvbiA9IEVWX0NV
UlJFTlQ7CisJZWxmLT5lX2VudHJ5ID0gMDsKKwllbGYtPmVfcGhvZmYgPSBzaXplb2Yoc3RydWN0
IGVsZmhkcik7CisJZWxmLT5lX3Nob2ZmID0gMDsKKwllbGYtPmVfZmxhZ3MgPSAwOworCWVsZi0+
ZV9laHNpemUgPSBzaXplb2Yoc3RydWN0IGVsZmhkcik7CisJZWxmLT5lX3BoZW50c2l6ZSA9IHNp
emVvZihzdHJ1Y3QgZWxmX3BoZHIpOworCWVsZi0+ZV9waG51bSA9IHNlZ3M7CisJZWxmLT5lX3No
ZW50c2l6ZSA9IDA7CisJZWxmLT5lX3NobnVtID0gMDsKKwllbGYtPmVfc2hzdHJuZHggPSAwOwor
CXJldHVybjsKK30KKworc3RhdGljIGlubGluZSB2b2lkIGZpbGxfZWxmX25vdGVfcGhkcihzdHJ1
Y3QgZWxmX3BoZHIgKnBoZHIsIGludCBzeiwgb2ZmX3Qgb2Zmc2V0KQoreworCXBoZHItPnBfdHlw
ZSA9IFBUX05PVEU7CisJcGhkci0+cF9vZmZzZXQgPSBvZmZzZXQ7CisJcGhkci0+cF92YWRkciA9
IDA7CisJcGhkci0+cF9wYWRkciA9IDA7CisJcGhkci0+cF9maWxlc3ogPSBzejsKKwlwaGRyLT5w
X21lbXN6ID0gMDsKKwlwaGRyLT5wX2ZsYWdzID0gMDsKKwlwaGRyLT5wX2FsaWduID0gMDsKKwly
ZXR1cm47Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBmaWxsX25vdGUoc3RydWN0IG1lbWVsZm5v
dGUgKm5vdGUsIGNvbnN0IGNoYXIgKm5hbWUsIGludCB0eXBlLCAKKwkJdW5zaWduZWQgaW50IHN6
LCB2b2lkICpkYXRhKQoreworCW5vdGUtPm5hbWUgPSBuYW1lOworCW5vdGUtPnR5cGUgPSB0eXBl
OworCW5vdGUtPmRhdGFzeiA9IHN6OworCW5vdGUtPmRhdGEgPSBkYXRhOworCXJldHVybjsKK30K
KworLyoKKyAqIGZpbGwgdXAgYWxsIHRoZSBmaWVsZHMgaW4gcHJzdGF0dXMgZnJvbSB0aGUgZ2l2
ZW4gdGFzayBzdHJ1Y3QsIGV4Y2VwdCByZWdpc3RlcnMKKyAqIHdoaWNoIG5lZWQgdG8gYmUgZmls
bGVkIHVwIHNlcGVyYXRlbHkuCisgKi8KK3N0YXRpYyBpbmxpbmUgdm9pZCBmaWxsX3Byc3RhdHVz
KHN0cnVjdCBlbGZfcHJzdGF0dXMgKnByc3RhdHVzLCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnAsIGxv
bmcgc2lnbnIpIAoreworCXByc3RhdHVzLT5wcl9pbmZvLnNpX3NpZ25vID0gcHJzdGF0dXMtPnBy
X2N1cnNpZyA9IHNpZ25yOworCXByc3RhdHVzLT5wcl9zaWdwZW5kID0gcC0+cGVuZGluZy5zaWdu
YWwuc2lnWzBdOworCXByc3RhdHVzLT5wcl9zaWdob2xkID0gcC0+YmxvY2tlZC5zaWdbMF07CisJ
cHJzdGF0dXMtPnByX3BpZCA9IHAtPnBpZDsKKwlwcnN0YXR1cy0+cHJfcHBpZCA9IHAtPnBfcHB0
ci0+cGlkOworCXByc3RhdHVzLT5wcl9wZ3JwID0gcC0+cGdycDsKKwlwcnN0YXR1cy0+cHJfc2lk
ID0gcC0+c2Vzc2lvbjsKKwlwcnN0YXR1cy0+cHJfdXRpbWUudHZfc2VjID0gQ1RfVE9fU0VDUyhw
LT50aW1lcy50bXNfdXRpbWUpOworCXByc3RhdHVzLT5wcl91dGltZS50dl91c2VjID0gQ1RfVE9f
VVNFQ1MocC0+dGltZXMudG1zX3V0aW1lKTsKKwlwcnN0YXR1cy0+cHJfc3RpbWUudHZfc2VjID0g
Q1RfVE9fU0VDUyhwLT50aW1lcy50bXNfc3RpbWUpOworCXByc3RhdHVzLT5wcl9zdGltZS50dl91
c2VjID0gQ1RfVE9fVVNFQ1MocC0+dGltZXMudG1zX3N0aW1lKTsKKwlwcnN0YXR1cy0+cHJfY3V0
aW1lLnR2X3NlYyA9IENUX1RPX1NFQ1MocC0+dGltZXMudG1zX2N1dGltZSk7CisJcHJzdGF0dXMt
PnByX2N1dGltZS50dl91c2VjID0gQ1RfVE9fVVNFQ1MocC0+dGltZXMudG1zX2N1dGltZSk7CisJ
cHJzdGF0dXMtPnByX2NzdGltZS50dl9zZWMgPSBDVF9UT19TRUNTKHAtPnRpbWVzLnRtc19jc3Rp
bWUpOworCXByc3RhdHVzLT5wcl9jc3RpbWUudHZfdXNlYyA9IENUX1RPX1VTRUNTKHAtPnRpbWVz
LnRtc19jc3RpbWUpOworCXJldHVybjsKK30KKworc3RhdGljIGlubGluZSB2b2lkIGZpbGxfcHNp
bmZvKHN0cnVjdCBlbGZfcHJwc2luZm8gKnBzaW5mbywgc3RydWN0IHRhc2tfc3RydWN0ICpwKQor
eworCWludCBpOworCQorCXBzaW5mby0+cHJfcGlkID0gcC0+cGlkOworCXBzaW5mby0+cHJfcHBp
ZCA9IHAtPnBfcHB0ci0+cGlkOworCXBzaW5mby0+cHJfcGdycCA9IHAtPnBncnA7CisJcHNpbmZv
LT5wcl9zaWQgPSBwLT5zZXNzaW9uOworCisJaSA9IHAtPnN0YXRlID8gZmZ6KH5wLT5zdGF0ZSkg
KyAxIDogMDsKKwlwc2luZm8tPnByX3N0YXRlID0gaTsKKwlwc2luZm8tPnByX3NuYW1lID0gKGkg
PCAwIHx8IGkgPiA1KSA/ICcuJyA6ICJSU0RaVEQiW2ldOworCXBzaW5mby0+cHJfem9tYiA9IHBz
aW5mby0+cHJfc25hbWUgPT0gJ1onOworCXBzaW5mby0+cHJfbmljZSA9ICBwLT5uaWNlOworCXBz
aW5mby0+cHJfZmxhZyA9IHAtPmZsYWdzOworCXBzaW5mby0+cHJfdWlkID0gTkVXX1RPX09MRF9V
SUQocC0+dWlkKTsKKwlwc2luZm8tPnByX2dpZCA9IE5FV19UT19PTERfR0lEKHAtPmdpZCk7CisJ
c3RybmNweShwc2luZm8tPnByX2ZuYW1lLCBwLT5jb21tLCBzaXplb2YocHNpbmZvLT5wcl9mbmFt
ZSkpOworCXJldHVybjsKK30KKworLyogSGVyZSBpcyB0aGUgc3RydWN0dXJlIGluIHdoaWNoIHN0
YXR1cyBvZiBlYWNoIHRocmVhZCBpcyBjYXB0dXJlZC4gKi8KK3N0cnVjdCBlbGZfdGhyZWFkX3N0
YXR1cworeworCXN0cnVjdCBsaXN0X2hlYWQgbGlzdDsKKwlzdHJ1Y3QgZWxmX3Byc3RhdHVzIHBy
c3RhdHVzOwkvKiBOVF9QUlNUQVRVUyAqLworCWVsZl9mcHJlZ3NldF90IGZwdTsJCS8qIE5UX1BS
RlBSRUcgKi8KKyNpZmRlZiBFTEZfQ09SRV9DT1BZX1hGUFJFR1MKKwllbGZfZnB4cmVnc2V0X3Qg
eGZwdTsJCS8qIE5UX1BSWEZQUkVHICovCisjZW5kaWYKKwlzdHJ1Y3QgbWVtZWxmbm90ZSBub3Rl
c1szXTsKKwlpbnQgbnVtX25vdGVzOworfTsKKworLyoKKyAqIEluIG9yZGVyIHRvIGFkZCB0aGUg
c3BlY2lmaWMgdGhyZWFkIGluZm9ybWF0aW9uIGZvciB0aGUgZWxmIGZpbGUgZm9ybWF0LAorICog
d2UgbmVlZCB0byBrZWVwIGEgbGlua2VkIGxpc3Qgb2YgZXZlcnkgdGhyZWFkcyBwcl9zdGF0dXMg
YW5kIHRoZW4KKyAqIGNyZWF0ZSBhIHNpbmdsZSBzZWN0aW9uIGZvciB0aGVtIGluIHRoZSBmaW5h
bCBjb3JlIGZpbGUuCisgKi8KK3N0YXRpYyBpbnQgZWxmX2R1bXBfdGhyZWFkX3N0YXR1cyhsb25n
IHNpZ25yLCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKiBwLCBzdHJ1Y3QgbGlzdF9oZWFkICogdGhyZWFk
X2xpc3QpCit7CisKKwlzdHJ1Y3QgZWxmX3RocmVhZF9zdGF0dXMgKnQ7CisJaW50IHN6ID0gMDsK
KworCXQgPSBrbWFsbG9jKHNpemVvZigqdCksIEdGUF9LRVJORUwpOworCWlmICghdCkgeworCQlw
cmludGsoS0VSTl9XQVJOSU5HICJDYW5ub3QgYWxsb2NhdGUgbWVtb3J5IGZvciB0aHJlYWQgc3Rh
dHVzLlxuIik7CisJCXJldHVybiAwOworCX0KKworCUlOSVRfTElTVF9IRUFEKCZ0LT5saXN0KTsK
Kwl0LT5udW1fbm90ZXMgPSAwOworCisJZmlsbF9wcnN0YXR1cygmdC0+cHJzdGF0dXMsIHAsIHNp
Z25yKTsKKwllbGZfY29yZV9jb3B5X3Rhc2tfcmVncyhwLCAmdC0+cHJzdGF0dXMucHJfcmVnKTsJ
CisJCisJZmlsbF9ub3RlKCZ0LT5ub3Rlc1swXSwgIkNPUkUiLCBOVF9QUlNUQVRVUywgc2l6ZW9m
KHQtPnByc3RhdHVzKSwgJih0LT5wcnN0YXR1cykpOworCXQtPm51bV9ub3RlcysrOworCXN6ICs9
IG5vdGVzaXplKCZ0LT5ub3Rlc1swXSk7CisKKwlpZiAoKHQtPnByc3RhdHVzLnByX2ZwdmFsaWQg
PSBlbGZfY29yZV9jb3B5X3Rhc2tfZnByZWdzKHAsICZ0LT5mcHUpKSkgeworCQlmaWxsX25vdGUo
JnQtPm5vdGVzWzFdLCAiQ09SRSIsIE5UX1BSRlBSRUcsIHNpemVvZih0LT5mcHUpLCAmKHQtPmZw
dSkpOworCQl0LT5udW1fbm90ZXMrKzsKKwkJc3ogKz0gbm90ZXNpemUoJnQtPm5vdGVzWzFdKTsK
Kwl9CisKKyNpZmRlZiBFTEZfQ09SRV9DT1BZX1hGUFJFR1MKKwlpZiAoZWxmX2NvcmVfY29weV90
YXNrX3hmcHJlZ3MocCwgJnQtPnhmcHUpKSB7CisJCWZpbGxfbm90ZSgmdC0+bm90ZXNbMl0sICJM
SU5VWCIsIE5UX1BSWEZQUkVHLCBzaXplb2YodC0+eGZwdSksICYodC0+eGZwdSkpOworCQl0LT5u
dW1fbm90ZXMrKzsKKwkJc3ogKz0gbm90ZXNpemUoJnQtPm5vdGVzWzJdKTsKKwl9CisjZW5kaWYJ
CisJbGlzdF9hZGQoJnQtPmxpc3QsIHRocmVhZF9saXN0KTsKKwlyZXR1cm4gc3o7Cit9CisKIC8q
CiAgKiBBY3R1YWwgZHVtcGVyCiAgKgpAQCAtMTAxOCwxMiArMTE2OSwyMyBAQAogCXN0cnVjdCBl
bGZoZHIgZWxmOwogCW9mZl90IG9mZnNldCA9IDAsIGRhdGFvZmY7CiAJdW5zaWduZWQgbG9uZyBs
aW1pdCA9IGN1cnJlbnQtPnJsaW1bUkxJTUlUX0NPUkVdLnJsaW1fY3VyOwotCWludCBudW1ub3Rl
ID0gNDsKLQlzdHJ1Y3QgbWVtZWxmbm90ZSBub3Rlc1s0XTsKKwlpbnQgbnVtbm90ZSA9IDU7CisJ
c3RydWN0IG1lbWVsZm5vdGUgbm90ZXNbNV07CiAJc3RydWN0IGVsZl9wcnN0YXR1cyBwcnN0YXR1
czsJLyogTlRfUFJTVEFUVVMgKi8KLQllbGZfZnByZWdzZXRfdCBmcHU7CQkvKiBOVF9QUkZQUkVH
ICovCiAJc3RydWN0IGVsZl9wcnBzaW5mbyBwc2luZm87CS8qIE5UX1BSUFNJTkZPICovCisgCXN0
cnVjdCB0YXNrX3N0cnVjdCAqcDsKKyAJTElTVF9IRUFEKHRocmVhZF9saXN0KTsKKyAJc3RydWN0
IGxpc3RfaGVhZCAqdDsKKwllbGZfZnByZWdzZXRfdCBmcHU7CisjaWZkZWYgRUxGX0NPUkVfQ09Q
WV9YRlBSRUdTCisJZWxmX2ZweHJlZ3NldF90IHhmcHU7CisjZW5kaWYKKwlpbnQgdGhyZWFkX3N0
YXR1c19zaXplID0gMDsKKwkKIAorCS8qIEZpcnN0IHBhdXNlIGFsbCByZWxhdGVkIHRocmVhZGVk
IHByb2Nlc3NlcyAqLworCXRjb3JlX3N1c3BlbmRfdGhyZWFkcygpOworCQogCS8qIGZpcnN0IGNv
cHkgdGhlIHBhcmFtZXRlcnMgZnJvbSB1c2VyIHNwYWNlICovCiAJbWVtc2V0KCZwc2luZm8sIDAs
IHNpemVvZihwc2luZm8pKTsKIAl7CkBAIC0xMDQxLDUxICsxMjAzLDUwIEBACiAKIAl9CiAKLQlt
ZW1zZXQoJnByc3RhdHVzLCAwLCBzaXplb2YocHJzdGF0dXMpKTsKLQkvKgotCSAqIFRoaXMgdHJh
bnNmZXJzIHRoZSByZWdpc3RlcnMgZnJvbSByZWdzIGludG8gdGhlIHN0YW5kYXJkCi0JICogY29y
ZWR1bXAgYXJyYW5nZW1lbnQsIHdoYXRldmVyIHRoYXQgaXMuCi0JICovCi0jaWZkZWYgRUxGX0NP
UkVfQ09QWV9SRUdTCi0JRUxGX0NPUkVfQ09QWV9SRUdTKHByc3RhdHVzLnByX3JlZywgcmVncykK
LSNlbHNlCi0JaWYgKHNpemVvZihlbGZfZ3JlZ3NldF90KSAhPSBzaXplb2Yoc3RydWN0IHB0X3Jl
Z3MpKQotCXsKLQkJcHJpbnRrKCJzaXplb2YoZWxmX2dyZWdzZXRfdCkgKCVsZCkgIT0gc2l6ZW9m
KHN0cnVjdCBwdF9yZWdzKSAoJWxkKVxuIiwKLQkJCShsb25nKXNpemVvZihlbGZfZ3JlZ3NldF90
KSwgKGxvbmcpc2l6ZW9mKHN0cnVjdCBwdF9yZWdzKSk7CisJIC8qIGNhcHR1cmUgdGhlIHN0YXR1
cyBvZiBhbGwgb3RoZXIgdGhyZWFkcyAqLworCWlmIChzaWducikgeworCQlyZWFkX2xvY2soJnRh
c2tsaXN0X2xvY2spOworCQlmb3JfZWFjaF90YXNrKHApCisJCQlpZiAoY3VycmVudC0+bW0gPT0g
cC0+bW0gJiYgY3VycmVudCAhPSBwKSB7CisJCQkJaW50IHN6ID0gZWxmX2R1bXBfdGhyZWFkX3N0
YXR1cyhzaWduciwgcCwgJnRocmVhZF9saXN0KTsKKwkJCQlpZiAoIXN6KSB7CisJCQkJCXJlYWRf
dW5sb2NrKCZ0YXNrbGlzdF9sb2NrKTsKKwkJCQkJZ290byBjbGVhbnVwOworCQkJCX0KKwkJCQll
bHNlCisJCQkJCXRocmVhZF9zdGF0dXNfc2l6ZSArPSBzejsKKwkJCX0KKwkJcmVhZF91bmxvY2so
JnRhc2tsaXN0X2xvY2spOwogCX0KLQllbHNlCi0JCSooc3RydWN0IHB0X3JlZ3MgKikmcHJzdGF0
dXMucHJfcmVnID0gKnJlZ3M7Ci0jZW5kaWYKIAotCS8qIG5vdyBzdG9wIGFsbCB2bSBvcGVyYXRp
b25zICovCi0JZG93bl93cml0ZSgmY3VycmVudC0+bW0tPm1tYXBfc2VtKTsKLQlzZWdzID0gY3Vy
cmVudC0+bW0tPm1hcF9jb3VudDsKKwkvKiBub3cgY2FwdHVyZSBjdXJyZW50J3MgdGhyZWFkIHN0
YXRlICovCisJbWVtc2V0KCZwcnN0YXR1cywgMCwgc2l6ZW9mKHByc3RhdHVzKSk7CisJZmlsbF9w
cnN0YXR1cygmcHJzdGF0dXMsIGN1cnJlbnQsIHNpZ25yKTsKKwllbGZfY29yZV9jb3B5X3JlZ3Mo
JnByc3RhdHVzLnByX3JlZywgcmVncyk7CisJCisJLyogV2Ugbm8gbG9uZ2VyIHN0b3AgYWxsIHZt
IG9wZXJhdGlvbnMgKi8KKyAgCisJLyogVGhpcyBiZWNhdXNlIHRob3NlIHByb2Nlc2VzIHRoYXQg
Y291bGQgcG9zc2libHkgCisJICogY2hhbmdlIG1hcF9jb3VudCBvciB0aGUgbW1hcCAvIHZtYSBw
YWdlcyBhcmUgbm93IHN1c3BlbmRlZC4KKwkgKgorCSAqIE9ubHkgcHRyYWNlIGNhbiB0b3VjaCB0
aGVzZSBtZW1vcnkgYWRkcmVzcywgYnV0IGl0IGNhbm5vdCBjaGFuZ2UKKwkgKiB0aGUgbWFwX2Nv
dW50IG9yIHRoZSBwYWdlcy4gIFNvIG5vIHBvc3NpYmlsaXR5IG9mIGNyYXNoaW5nIGV4aXN0cyB3
aGlsZSBkdW1waW5nCisJICogdGhlIG1tLT52bV9uZXh0IGFyZWFzIHRvIHRoZSBjb3JlIGZpbGUu
CisJICoKKwkgKiBHcmFiYmluZyBtbWFwX3NlbSBpbiB0aGlzIGZ1bmN0aW9uIGlzIHJpc2t5IFdS
VCB0aGUgdXNlIG9mIHN1c3BlbmRfdGhyZWFkcy4KKwkgKiBBbHRob3VnaCBubyBsb2NrcyB1cHMg
aGF2ZSBiZWVuIGluZHVjZWQsIGlmIG9uZSBvZiB0aGUgc3VzcGVuZGVkIHRocmVhZHMgd2FzIAor
CSAqIGluIGxpbmUgZm9yIHRoZSBjdXJyZW50LT5tbWFwX3NlbSBhbmQgaWYgZ2V0cyBpdCB3aGls
ZSBvbiB0aGUgUGhhbnRvbSBydW5xdWUsCisJICogdGhlbiB3ZSB3b3VsZCBkZWFkIGxvY2sgaW4g
dGhpcyBmdW5jdGlvbiBpZiB3ZSBjb250aW51ZSB0byBhdHRlbXB0IHRvIGRvd25fd3JpdGUKKwkg
KiBpbiB0aGlzIGZ1bmN0aW9uLgorCSAqLworICAJc2VncyA9IGN1cnJlbnQtPm1tLT5tYXBfY291
bnQ7CiAKICNpZmRlZiBERUJVRwogCXByaW50aygiZWxmX2NvcmVfZHVtcDogJWQgc2VncyAlbHUg
bGltaXRcbiIsIHNlZ3MsIGxpbWl0KTsKICNlbmRpZgogCiAJLyogU2V0IHVwIGhlYWRlciAqLwot
CW1lbWNweShlbGYuZV9pZGVudCwgRUxGTUFHLCBTRUxGTUFHKTsKLQllbGYuZV9pZGVudFtFSV9D
TEFTU10gPSBFTEZfQ0xBU1M7Ci0JZWxmLmVfaWRlbnRbRUlfREFUQV0gPSBFTEZfREFUQTsKLQll
bGYuZV9pZGVudFtFSV9WRVJTSU9OXSA9IEVWX0NVUlJFTlQ7Ci0JbWVtc2V0KGVsZi5lX2lkZW50
K0VJX1BBRCwgMCwgRUlfTklERU5ULUVJX1BBRCk7Ci0KLQllbGYuZV90eXBlID0gRVRfQ09SRTsK
LQllbGYuZV9tYWNoaW5lID0gRUxGX0FSQ0g7Ci0JZWxmLmVfdmVyc2lvbiA9IEVWX0NVUlJFTlQ7
Ci0JZWxmLmVfZW50cnkgPSAwOwotCWVsZi5lX3Bob2ZmID0gc2l6ZW9mKGVsZik7Ci0JZWxmLmVf
c2hvZmYgPSAwOwotCWVsZi5lX2ZsYWdzID0gMDsKLQllbGYuZV9laHNpemUgPSBzaXplb2YoZWxm
KTsKLQllbGYuZV9waGVudHNpemUgPSBzaXplb2Yoc3RydWN0IGVsZl9waGRyKTsKLQllbGYuZV9w
aG51bSA9IHNlZ3MrMTsJCS8qIEluY2x1ZGUgbm90ZXMgKi8KLQllbGYuZV9zaGVudHNpemUgPSAw
OwotCWVsZi5lX3NobnVtID0gMDsKLQllbGYuZV9zaHN0cm5keCA9IDA7CisJZmlsbF9lbGZfaGVh
ZGVyKCZlbGYsIHNlZ3MrMSk7IC8qIGluY2x1ZGluZyBub3RlcyBzZWN0aW9uKi8KIAogCWZzID0g
Z2V0X2ZzKCk7CiAJc2V0X2ZzKEtFUk5FTF9EUyk7CkBAIC0xMTAyLDY0ICsxMjYzLDM0IEBACiAJ
ICogd2l0aCBpbmZvIGZyb20gdGhlaXIgL3Byb2MuCiAJICovCiAKLQlub3Rlc1swXS5uYW1lID0g
IkNPUkUiOwotCW5vdGVzWzBdLnR5cGUgPSBOVF9QUlNUQVRVUzsKLQlub3Rlc1swXS5kYXRhc3og
PSBzaXplb2YocHJzdGF0dXMpOwotCW5vdGVzWzBdLmRhdGEgPSAmcHJzdGF0dXM7Ci0JcHJzdGF0
dXMucHJfaW5mby5zaV9zaWdubyA9IHByc3RhdHVzLnByX2N1cnNpZyA9IHNpZ25yOwotCXByc3Rh
dHVzLnByX3NpZ3BlbmQgPSBjdXJyZW50LT5wZW5kaW5nLnNpZ25hbC5zaWdbMF07Ci0JcHJzdGF0
dXMucHJfc2lnaG9sZCA9IGN1cnJlbnQtPmJsb2NrZWQuc2lnWzBdOwotCXBzaW5mby5wcl9waWQg
PSBwcnN0YXR1cy5wcl9waWQgPSBjdXJyZW50LT5waWQ7Ci0JcHNpbmZvLnByX3BwaWQgPSBwcnN0
YXR1cy5wcl9wcGlkID0gY3VycmVudC0+cF9wcHRyLT5waWQ7Ci0JcHNpbmZvLnByX3BncnAgPSBw
cnN0YXR1cy5wcl9wZ3JwID0gY3VycmVudC0+cGdycDsKLQlwc2luZm8ucHJfc2lkID0gcHJzdGF0
dXMucHJfc2lkID0gY3VycmVudC0+c2Vzc2lvbjsKLQlwcnN0YXR1cy5wcl91dGltZS50dl9zZWMg
PSBDVF9UT19TRUNTKGN1cnJlbnQtPnRpbWVzLnRtc191dGltZSk7Ci0JcHJzdGF0dXMucHJfdXRp
bWUudHZfdXNlYyA9IENUX1RPX1VTRUNTKGN1cnJlbnQtPnRpbWVzLnRtc191dGltZSk7Ci0JcHJz
dGF0dXMucHJfc3RpbWUudHZfc2VjID0gQ1RfVE9fU0VDUyhjdXJyZW50LT50aW1lcy50bXNfc3Rp
bWUpOwotCXByc3RhdHVzLnByX3N0aW1lLnR2X3VzZWMgPSBDVF9UT19VU0VDUyhjdXJyZW50LT50
aW1lcy50bXNfc3RpbWUpOwotCXByc3RhdHVzLnByX2N1dGltZS50dl9zZWMgPSBDVF9UT19TRUNT
KGN1cnJlbnQtPnRpbWVzLnRtc19jdXRpbWUpOwotCXByc3RhdHVzLnByX2N1dGltZS50dl91c2Vj
ID0gQ1RfVE9fVVNFQ1MoY3VycmVudC0+dGltZXMudG1zX2N1dGltZSk7Ci0JcHJzdGF0dXMucHJf
Y3N0aW1lLnR2X3NlYyA9IENUX1RPX1NFQ1MoY3VycmVudC0+dGltZXMudG1zX2NzdGltZSk7Ci0J
cHJzdGF0dXMucHJfY3N0aW1lLnR2X3VzZWMgPSBDVF9UT19VU0VDUyhjdXJyZW50LT50aW1lcy50
bXNfY3N0aW1lKTsKLQogI2lmZGVmIERFQlVHCiAJZHVtcF9yZWdzKCJQYXNzZWQgaW4gcmVncyIs
IChlbGZfZ3JlZ190ICopcmVncyk7CiAJZHVtcF9yZWdzKCJwcnN0YXR1cyByZWdzIiwgKGVsZl9n
cmVnX3QgKikmcHJzdGF0dXMucHJfcmVnKTsKICNlbmRpZgogCi0Jbm90ZXNbMV0ubmFtZSA9ICJD
T1JFIjsKLQlub3Rlc1sxXS50eXBlID0gTlRfUFJQU0lORk87Ci0Jbm90ZXNbMV0uZGF0YXN6ID0g
c2l6ZW9mKHBzaW5mbyk7Ci0Jbm90ZXNbMV0uZGF0YSA9ICZwc2luZm87Ci0JaSA9IGN1cnJlbnQt
PnN0YXRlID8gZmZ6KH5jdXJyZW50LT5zdGF0ZSkgKyAxIDogMDsKLQlwc2luZm8ucHJfc3RhdGUg
PSBpOwotCXBzaW5mby5wcl9zbmFtZSA9IChpIDwgMCB8fCBpID4gNSkgPyAnLicgOiAiUlNEWlRE
IltpXTsKLQlwc2luZm8ucHJfem9tYiA9IHBzaW5mby5wcl9zbmFtZSA9PSAnWic7Ci0JcHNpbmZv
LnByX25pY2UgPSBjdXJyZW50LT5uaWNlOwotCXBzaW5mby5wcl9mbGFnID0gY3VycmVudC0+Zmxh
Z3M7Ci0JcHNpbmZvLnByX3VpZCA9IE5FV19UT19PTERfVUlEKGN1cnJlbnQtPnVpZCk7Ci0JcHNp
bmZvLnByX2dpZCA9IE5FV19UT19PTERfR0lEKGN1cnJlbnQtPmdpZCk7Ci0Jc3RybmNweShwc2lu
Zm8ucHJfZm5hbWUsIGN1cnJlbnQtPmNvbW0sIHNpemVvZihwc2luZm8ucHJfZm5hbWUpKTsKLQot
CW5vdGVzWzJdLm5hbWUgPSAiQ09SRSI7Ci0Jbm90ZXNbMl0udHlwZSA9IE5UX1RBU0tTVFJVQ1Q7
Ci0Jbm90ZXNbMl0uZGF0YXN6ID0gc2l6ZW9mKCpjdXJyZW50KTsKLQlub3Rlc1syXS5kYXRhID0g
Y3VycmVudDsKLQotCS8qIFRyeSB0byBkdW1wIHRoZSBGUFUuICovCi0JcHJzdGF0dXMucHJfZnB2
YWxpZCA9IGR1bXBfZnB1IChyZWdzLCAmZnB1KTsKLQlpZiAoIXByc3RhdHVzLnByX2ZwdmFsaWQp
Ci0JewotCQludW1ub3RlLS07Ci0JfQotCWVsc2UKLQl7Ci0JCW5vdGVzWzNdLm5hbWUgPSAiQ09S
RSI7Ci0JCW5vdGVzWzNdLnR5cGUgPSBOVF9QUkZQUkVHOwotCQlub3Rlc1szXS5kYXRhc3ogPSBz
aXplb2YoZnB1KTsKLQkJbm90ZXNbM10uZGF0YSA9ICZmcHU7Ci0JfQorCWZpbGxfbm90ZSgmbm90
ZXNbMF0sICJDT1JFIiwgTlRfUFJTVEFUVVMsIHNpemVvZihwcnN0YXR1cyksICZwcnN0YXR1cyk7
CiAJCisJZmlsbF9wc2luZm8oJnBzaW5mbywgY3VycmVudCk7CisJZmlsbF9ub3RlKCZub3Rlc1sx
XSwgIkNPUkUiLCBOVF9QUlBTSU5GTywgc2l6ZW9mKHBzaW5mbyksICZwc2luZm8pOworCQorCWZp
bGxfbm90ZSgmbm90ZXNbMl0sICJDT1JFIiwgTlRfVEFTS1NUUlVDVCwgc2l6ZW9mKCpjdXJyZW50
KSwgY3VycmVudCk7CisgIAorICAJLyogVHJ5IHRvIGR1bXAgdGhlIEZQVS4gKi8KKwlpZiAoKHBy
c3RhdHVzLnByX2ZwdmFsaWQgPSBlbGZfY29yZV9jb3B5X3Rhc2tfZnByZWdzKGN1cnJlbnQsICZm
cHUpKSkgeworCQlmaWxsX25vdGUoJm5vdGVzWzNdLCAiQ09SRSIsIE5UX1BSRlBSRUcsIHNpemVv
ZihmcHUpLCAmZnB1KTsKKwl9IGVsc2UgeworCQktLW51bW5vdGU7CisgCX0KKyNpZmRlZiBFTEZf
Q09SRV9DT1BZX1hGUFJFR1MKKwlpZiAoZWxmX2NvcmVfY29weV90YXNrX3hmcHJlZ3MoY3VycmVu
dCwgJnhmcHUpKSB7CisJCWZpbGxfbm90ZSgmbm90ZXNbNF0sICJMSU5VWCIsIE5UX1BSWEZQUkVH
LCBzaXplb2YoeGZwdSksICZ4ZnB1KTsKKwl9IGVsc2UgeworCQktLW51bW5vdGU7CisJfQorI2Vs
c2UKKwludW1ub3RlIC0tOworI2VuZGlmCQorICAKIAkvKiBXcml0ZSBub3RlcyBwaGRyIGVudHJ5
ICovCiAJewogCQlzdHJ1Y3QgZWxmX3BoZHIgcGhkcjsKQEAgLTExNjcsMTcgKzEyOTgsMTEgQEAK
IAogCQlmb3IoaSA9IDA7IGkgPCBudW1ub3RlOyBpKyspCiAJCQlzeiArPSBub3Rlc2l6ZSgmbm90
ZXNbaV0pOworCQkKKwkJc3ogKz0gdGhyZWFkX3N0YXR1c19zaXplOwogCi0JCXBoZHIucF90eXBl
ID0gUFRfTk9URTsKLQkJcGhkci5wX29mZnNldCA9IG9mZnNldDsKLQkJcGhkci5wX3ZhZGRyID0g
MDsKLQkJcGhkci5wX3BhZGRyID0gMDsKLQkJcGhkci5wX2ZpbGVzeiA9IHN6OwotCQlwaGRyLnBf
bWVtc3ogPSAwOwotCQlwaGRyLnBfZmxhZ3MgPSAwOwotCQlwaGRyLnBfYWxpZ24gPSAwOwotCi0J
CW9mZnNldCArPSBwaGRyLnBfZmlsZXN6OworCQlmaWxsX2VsZl9ub3RlX3BoZHIoJnBoZHIsIHN6
LCBvZmZzZXQpOworCQlvZmZzZXQgKz0gc3o7CiAJCURVTVBfV1JJVEUoJnBoZHIsIHNpemVvZihw
aGRyKSk7CiAJfQogCkBAIC0xMjA2LDEwICsxMzMxLDE5IEBACiAJCURVTVBfV1JJVEUoJnBoZHIs
IHNpemVvZihwaGRyKSk7CiAJfQogCisgCS8qIHdyaXRlIG91dCB0aGUgbm90ZXMgc2VjdGlvbiAq
LwogCWZvcihpID0gMDsgaSA8IG51bW5vdGU7IGkrKykKIAkJaWYgKCF3cml0ZW5vdGUoJm5vdGVz
W2ldLCBmaWxlKSkKIAkJCWdvdG8gZW5kX2NvcmVkdW1wOwogCisJLyogd3JpdGUgb3V0IHRoZSB0
aHJlYWQgc3RhdHVzIG5vdGVzIHNlY3Rpb24gKi8KKwlsaXN0X2Zvcl9lYWNoKHQsICZ0aHJlYWRf
bGlzdCkgeworCQlzdHJ1Y3QgZWxmX3RocmVhZF9zdGF0dXMgKnRtcCA9IGxpc3RfZW50cnkodCwg
c3RydWN0IGVsZl90aHJlYWRfc3RhdHVzLCBsaXN0KTsKKwkJZm9yIChpID0gMDsgaSA8IHRtcC0+
bnVtX25vdGVzOyBpKyspCisJCQlpZiAoIXdyaXRlbm90ZSgmdG1wLT5ub3Rlc1tpXSwgZmlsZSkp
CisJCQkJZ290byBlbmRfY29yZWR1bXA7CisJfQorIAogCURVTVBfU0VFSyhkYXRhb2ZmKTsKIAog
CWZvcih2bWEgPSBjdXJyZW50LT5tbS0+bW1hcDsgdm1hICE9IE5VTEw7IHZtYSA9IHZtYS0+dm1f
bmV4dCkgewpAQCAtMTI1MywxMSArMTM4NywyMSBAQAogCQkgICAgICAgKG9mZl90KSBmaWxlLT5m
X3Bvcywgb2Zmc2V0KTsKIAl9CiAKLSBlbmRfY29yZWR1bXA6CitlbmRfY29yZWR1bXA6CiAJc2V0
X2ZzKGZzKTsKLQl1cF93cml0ZSgmY3VycmVudC0+bW0tPm1tYXBfc2VtKTsKKworY2xlYW51cDoK
Kwl3aGlsZSghbGlzdF9lbXB0eSgmdGhyZWFkX2xpc3QpKSB7CisJCXN0cnVjdCBsaXN0X2hlYWQg
KnRtcCA9IHRocmVhZF9saXN0Lm5leHQ7CisJCWxpc3RfZGVsKHRtcCk7CisJCWtmcmVlKGxpc3Rf
ZW50cnkodG1wLCBzdHJ1Y3QgZWxmX3RocmVhZF9zdGF0dXMsIGxpc3QpKTsKKwl9CisKKwl0Y29y
ZV9yZXN1bWVfdGhyZWFkcygpOworCiAJcmV0dXJuIGhhc19kdW1wZWQ7CiB9CisKICNlbmRpZgkJ
LyogVVNFX0VMRl9DT1JFX0RVTVAgKi8KIAogc3RhdGljIGludCBfX2luaXQgaW5pdF9lbGZfYmlu
Zm10KHZvaWQpCmRpZmYgLXVyTiAtWCBkb250ZGlmZiBsaW51eC0yLjQuMTgvaW5jbHVkZS9hc20t
aTM4Ni9lbGYuaCBsaW51eDI0MTgudGNvcmUvaW5jbHVkZS9hc20taTM4Ni9lbGYuaAotLS0gbGlu
dXgtMi40LjE4L2luY2x1ZGUvYXNtLWkzODYvZWxmLmgJVGh1IE5vdiAyMiAxNDo0ODoyOSAyMDAx
CisrKyBsaW51eDI0MTgudGNvcmUvaW5jbHVkZS9hc20taTM4Ni9lbGYuaAlUaHUgSnVuIDEzIDEx
OjE5OjExIDIwMDIKQEAgLTk5LDYgKzk5LDIxIEBACiAKICNpZmRlZiBfX0tFUk5FTF9fCiAjZGVm
aW5lIFNFVF9QRVJTT05BTElUWShleCwgaWJjczIpIHNldF9wZXJzb25hbGl0eSgoaWJjczIpP1BF
Ul9TVlI0OlBFUl9MSU5VWCkKKworCitleHRlcm4gaW50IGR1bXBfdGFza19yZWdzIChzdHJ1Y3Qg
dGFza19zdHJ1Y3QgKiwgZWxmX2dyZWdzZXRfdCAqKTsKK2V4dGVybiBpbnQgZHVtcF90YXNrX2Zw
dSAoc3RydWN0IHRhc2tfc3RydWN0ICosIGVsZl9mcHJlZ3NldF90ICopOworZXh0ZXJuIGludCBk
dW1wX3Rhc2tfZXh0ZW5kZWRfZnB1IChzdHJ1Y3QgdGFza19zdHJ1Y3QgKiwgc3RydWN0IHVzZXJf
Znhzcl9zdHJ1Y3QgKik7CisKKyNkZWZpbmUgRUxGX0NPUkVfQ09QWV9UQVNLX1JFR1ModHNrLCBl
bGZfcmVncykgZHVtcF90YXNrX3JlZ3ModHNrLCBlbGZfcmVncykKKyNkZWZpbmUgRUxGX0NPUkVf
Q09QWV9GUFJFR1ModHNrLCBlbGZfZnByZWdzKSBkdW1wX3Rhc2tfZnB1KHRzaywgZWxmX2ZwcmVn
cykKKyNkZWZpbmUgRUxGX0NPUkVfQ09QWV9YRlBSRUdTKHRzaywgZWxmX3hmcHJlZ3MpIGR1bXBf
dGFza19leHRlbmRlZF9mcHUodHNrLCBlbGZfeGZwcmVncykKKworI2lmZGVmIENPTkZJR19TTVAK
K2V4dGVybiB2b2lkIGR1bXBfc21wX3VubGF6eV9mcHUodm9pZCk7CisjZGVmaW5lIEVMRl9DT1JF
X1NZTkMgZHVtcF9zbXBfdW5sYXp5X2ZwdQorI2VuZGlmCisKICNlbmRpZgogCiAjZW5kaWYKZGlm
ZiAtdXJOIC1YIGRvbnRkaWZmIGxpbnV4LTIuNC4xOC9pbmNsdWRlL2FzbS1pYTY0L2VsZi5oIGxp
bnV4MjQxOC50Y29yZS9pbmNsdWRlL2FzbS1pYTY0L2VsZi5oCi0tLSBsaW51eC0yLjQuMTgvaW5j
bHVkZS9hc20taWE2NC9lbGYuaAlUdWUgSnVsIDExIDE4OjQzOjQ1IDIwMDAKKysrIGxpbnV4MjQx
OC50Y29yZS9pbmNsdWRlL2FzbS1pYTY0L2VsZi5oCVRodSBKdW4gMTMgMTA6MDA6NDggMjAwMgpA
QCAtNjIsMTIgKzYyLDE2IEBACiAjZGVmaW5lIEVMRl9OR1JFRwkxMjgJLyogd2UgcmVhbGx5IG5l
ZWQganVzdCA3MiBidXQgbGV0J3MgbGVhdmUgc29tZSBoZWFkcm9vbS4uLiAqLwogI2RlZmluZSBF
TEZfTkZQUkVHCTEyOAkvKiBmMCBhbmQgZjEgY291bGQgYmUgb21pdHRlZCwgYnV0IHNvIHdoYXQu
Li4gKi8KIAordHlwZWRlZiB1bnNpZ25lZCBsb25nIGVsZl9mcHhyZWdzZXRfdDsKKwogdHlwZWRl
ZiB1bnNpZ25lZCBsb25nIGVsZl9ncmVnX3Q7CiB0eXBlZGVmIGVsZl9ncmVnX3QgZWxmX2dyZWdz
ZXRfdFtFTEZfTkdSRUddOwogCiB0eXBlZGVmIHN0cnVjdCBpYTY0X2ZwcmVnIGVsZl9mcHJlZ190
OwogdHlwZWRlZiBlbGZfZnByZWdfdCBlbGZfZnByZWdzZXRfdFtFTEZfTkZQUkVHXTsKIAorCisK
IHN0cnVjdCBwdF9yZWdzOwkvKiBmb3J3YXJkIGRlY2xhcmF0aW9uLi4uICovCiBleHRlcm4gdm9p
ZCBpYTY0X2VsZl9jb3JlX2NvcHlfcmVncyAoc3RydWN0IHB0X3JlZ3MgKnNyYywgZWxmX2dyZWdz
ZXRfdCBkc3QpOwogI2RlZmluZSBFTEZfQ09SRV9DT1BZX1JFR1MoX2Rlc3QsX3JlZ3MpCWlhNjRf
ZWxmX2NvcmVfY29weV9yZWdzKF9yZWdzLCBfZGVzdCk7CkBAIC04Myw2ICs4NywxMiBAQAogCiAj
aWZkZWYgX19LRVJORUxfXwogI2RlZmluZSBTRVRfUEVSU09OQUxJVFkoZXgsIGliY3MyKSBzZXRf
cGVyc29uYWxpdHkoKGliY3MyKT9QRVJfU1ZSNDpQRVJfTElOVVgpCitleHRlcm4gaW50IGR1bXBf
dGFza19yZWdzKHN0cnVjdCB0YXNrX3N0cnVjdCAqLCBlbGZfZ3JlZ3NldF90ICopOworZXh0ZXJu
IGludCBkdW1wX3Rhc2tfZnB1IChzdHJ1Y3QgdGFza19zdHJ1Y3QgKiwgZWxmX2ZwcmVnc2V0X3Qg
Kik7CisKKyNkZWZpbmUgRUxGX0NPUkVfQ09QWV9UQVNLX1JFR1ModHNrLCBlbGZfZ3JlZ3MpIGR1
bXBfdGFza19yZWdzKHRzaywgZWxmX2dyZWdzKQorI2RlZmluZSBFTEZfQ09SRV9DT1BZX0ZQUkVH
Uyh0c2ssIGVsZl9mcHJlZ3MpIGR1bXBfdGFza19mcHUodHNrLCBlbGZfZnByZWdzKQorCiAjZW5k
aWYKIAogI2VuZGlmIC8qIF9BU01fSUE2NF9FTEZfSCAqLwpkaWZmIC11ck4gLVggZG9udGRpZmYg
bGludXgtMi40LjE4L2luY2x1ZGUvbGludXgvZWxmLmggbGludXgyNDE4LnRjb3JlL2luY2x1ZGUv
bGludXgvZWxmLmgKLS0tIGxpbnV4LTIuNC4xOC9pbmNsdWRlL2xpbnV4L2VsZi5oCVRodSBOb3Yg
MjIgMTQ6NDg6MjkgMjAwMQorKysgbGludXgyNDE4LnRjb3JlL2luY2x1ZGUvbGludXgvZWxmLmgJ
VGh1IEp1biAxMyAxMToyMDo0MyAyMDAyCkBAIC01NzYsNiArNTc2LDkgQEAKICNkZWZpbmUgTlRf
UFJQU0lORk8JMwogI2RlZmluZSBOVF9UQVNLU1RSVUNUCTQKICNkZWZpbmUgTlRfUFJGUFhSRUcJ
MjAKKyNkZWZpbmUgTlRfUFJYRlBSRUcgICAgIDB4NDZlNjJiN2YJLyogbm90ZSBuYW1lIG11c3Qg
YmUgIkxJTlVYIiBhcyBwZXIgR0RCICovCisJCQkJCS8qIGZyb20gZ2RiNS4xL2luY2x1ZGUvZWxm
L2NvbW1vbi5oICovCisKIAogLyogTm90ZSBoZWFkZXIgaW4gYSBQVF9OT1RFIHNlY3Rpb24gKi8K
IHR5cGVkZWYgc3RydWN0IGVsZjMyX25vdGUgewpAQCAtNjA2LDYgKzYwOSw1IEBACiAjZGVmaW5l
IGVsZl9ub3RlCWVsZjY0X25vdGUKIAogI2VuZGlmCi0KIAogI2VuZGlmIC8qIF9MSU5VWF9FTEZf
SCAqLwpkaWZmIC11ck4gLVggZG9udGRpZmYgbGludXgtMi40LjE4L2luY2x1ZGUvbGludXgvZWxm
Y29yZS5oIGxpbnV4MjQxOC50Y29yZS9pbmNsdWRlL2xpbnV4L2VsZmNvcmUuaAotLS0gbGludXgt
Mi40LjE4L2luY2x1ZGUvbGludXgvZWxmY29yZS5oCVRodSBOb3YgMjIgMTQ6NDk6MDIgMjAwMQor
KysgbGludXgyNDE4LnRjb3JlL2luY2x1ZGUvbGludXgvZWxmY29yZS5oCVRodSBKdW4gMTMgMTE6
MTk6MTEgMjAwMgpAQCAtODYsNCArODYsNjYgQEAKICNkZWZpbmUgUFJBUkdTWiBFTEZfUFJBUkdT
WiAKICNlbmRpZgogCisjaWZkZWYgX19LRVJORUxfXworc3RhdGljIGlubGluZSB2b2lkIGVsZl9j
b3JlX2NvcHlfcmVncyhlbGZfZ3JlZ3NldF90ICplbGZyZWdzLCBzdHJ1Y3QgcHRfcmVncyAqcmVn
cykKK3sKKyNpZmRlZiBFTEZfQ09SRV9DT1BZX1JFR1MKKwlFTEZfQ09SRV9DT1BZX1JFR1MoKCpl
bGZyZWdzKSwgcmVncykKKyNlbHNlCisJaWYgKHNpemVvZihlbGZfZ3JlZ3NldF90KSAhPSBzaXpl
b2Yoc3RydWN0IHB0X3JlZ3MpKSB7CisJCXByaW50aygic2l6ZW9mKGVsZl9ncmVnc2V0X3QpICgl
bGQpICE9IHNpemVvZihzdHJ1Y3QgcHRfcmVncykgKCVsZClcbiIsCisJCQkobG9uZylzaXplb2Yo
ZWxmX2dyZWdzZXRfdCksIChsb25nKXNpemVvZihzdHJ1Y3QgcHRfcmVncykpOworCX0gZWxzZQor
CQkqKHN0cnVjdCBwdF9yZWdzICopZWxmcmVncyA9ICpyZWdzOworI2VuZGlmCit9CisKK3N0YXRp
YyBpbmxpbmUgaW50IGVsZl9jb3JlX2NvcHlfdGFza19yZWdzKHN0cnVjdCB0YXNrX3N0cnVjdCAq
dCwgZWxmX2dyZWdzZXRfdCogZWxmcmVncykKK3sKKyNpZmRlZiBFTEZfQ09SRV9DT1BZX1RBU0tf
UkVHUworCQorCXJldHVybiBFTEZfQ09SRV9DT1BZX1RBU0tfUkVHUyh0LCBlbGZyZWdzKTsKKyNl
bmRpZgorCXJldHVybiAwOworfQorCitleHRlcm4gaW50IGR1bXBfZnB1IChzdHJ1Y3QgcHRfcmVn
cyAqLCBlbGZfZnByZWdzZXRfdCAqKTsKKworc3RhdGljIGlubGluZSBpbnQgZWxmX2NvcmVfY29w
eV90YXNrX2ZwcmVncyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnQsIGVsZl9mcHJlZ3NldF90ICpmcHUp
Cit7CisjaWZkZWYgRUxGX0NPUkVfQ09QWV9GUFJFR1MKKwlyZXR1cm4gRUxGX0NPUkVfQ09QWV9G
UFJFR1ModCwgZnB1KTsKKyNlbHNlCisJcmV0dXJuIGR1bXBfZnB1KE5VTEwsIGZwdSk7CisjZW5k
aWYKK30KKworI2lmZGVmIEVMRl9DT1JFX0NPUFlfWEZQUkVHUworc3RhdGljIGlubGluZSBpbnQg
ZWxmX2NvcmVfY29weV90YXNrX3hmcHJlZ3Moc3RydWN0IHRhc2tfc3RydWN0ICp0LCBlbGZfZnB4
cmVnc2V0X3QgKnhmcHUpCit7CisJcmV0dXJuIEVMRl9DT1JFX0NPUFlfWEZQUkVHUyh0LCB4ZnB1
KTsKK30KKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX1NNUAorLyoKKyAqIHRyaXZpYWwgZnVuY3Rp
b24gdXNlZCBmb3IgU01QIENQVSBzeW5jaHJvbml6YXRpb24uCisgKiBJdCBkb2Vzbid0IGRvIGFu
eXRoaW5nLgorICovCitzdGF0aWMgdm9pZCB0Y29yZV9kb19ub3RoaW5nKHZvaWQgKnZhcikKK3sK
KworI2lmZGVmIEVMRl9DT1JFX1NZTkMKKwlFTEZfQ09SRV9TWU5DKCk7CisjZW5kaWYKKworCXJl
dHVybjsKK30KKworI2VuZGlmCisKKworI2VuZGlmIC8qIF9fS0VSTkVMX18gKi8KKworCiAjZW5k
aWYgLyogX0xJTlVYX0VMRkNPUkVfSCAqLwpkaWZmIC11ck4gLVggZG9udGRpZmYgbGludXgtMi40
LjE4L2luY2x1ZGUvbGludXgvc2NoZWQuaCBsaW51eDI0MTgudGNvcmUvaW5jbHVkZS9saW51eC9z
Y2hlZC5oCi0tLSBsaW51eC0yLjQuMTgvaW5jbHVkZS9saW51eC9zY2hlZC5oCUZyaSBEZWMgMjEg
MTI6NDI6MDMgMjAwMQorKysgbGludXgyNDE4LnRjb3JlL2luY2x1ZGUvbGludXgvc2NoZWQuaAlU
aHUgSnVuIDEzIDExOjE5OjExIDIwMDIKQEAgLTEzMiw2ICsxMzIsMTQgQEAKIAogI2luY2x1ZGUg
PGxpbnV4L3NwaW5sb2NrLmg+CiAKKworLyogZnVuY3Rpb25zIGZvciBwYXVzaW5nIGFuZCByZXN1
bW1pbmcgZnVuY3Rpb25zIAorICogY29tbW9uIG1tJ3Mgd2l0aG91dCB1c2luZyBzaWduYWxzLiAg
VGhlc2UgYXJlIHVzZWQKKyAqIGJ5IHRoZSBtdWx0aXRocmVhZGVkIGVsZiBjb3JlIGR1bXAgY29k
ZSBpbiBiaW5mbXRfZWxmLmMqLworZXh0ZXJuIHZvaWQgdGNvcmVfc3VzcGVuZF90aHJlYWRzKCB2
b2lkICk7CitleHRlcm4gdm9pZCB0Y29yZV9yZXN1bWVfdGhyZWFkcyggdm9pZCApOworCisKIC8q
CiAgKiBUaGlzIHNlcmlhbGl6ZXMgInNjaGVkdWxlKCkiIGFuZCBhbHNvIHByb3RlY3RzCiAgKiB0
aGUgcnVuLXF1ZXVlIGZyb20gZGVsZXRpb25zL21vZGlmaWNhdGlvbnMgKGJ1dApkaWZmIC11ck4g
LVggZG9udGRpZmYgbGludXgtMi40LjE4L2tlcm5lbC9zY2hlZC5jIGxpbnV4MjQxOC50Y29yZS9r
ZXJuZWwvc2NoZWQuYwotLS0gbGludXgtMi40LjE4L2tlcm5lbC9zY2hlZC5jCUZyaSBEZWMgMjEg
MTI6NDI6MDQgMjAwMQorKysgbGludXgyNDE4LnRjb3JlL2tlcm5lbC9zY2hlZC5jCVRodSBKdW4g
MTMgMTA6MDA6NDggMjAwMgpAQCAtMzMsNiArMzMsOCBAQAogI2luY2x1ZGUgPGFzbS91YWNjZXNz
Lmg+CiAjaW5jbHVkZSA8YXNtL21tdV9jb250ZXh0Lmg+CiAKKyNpbmNsdWRlIDxsaW51eC9lbGZj
b3JlLmg+CisKIGV4dGVybiB2b2lkIHRpbWVyX2JoKHZvaWQpOwogZXh0ZXJuIHZvaWQgdHF1ZXVl
X2JoKHZvaWQpOwogZXh0ZXJuIHZvaWQgaW1tZWRpYXRlX2JoKHZvaWQpOwpAQCAtMTIxLDcgKzEy
Myw3IEBACiAjZWxzZQogCiAjZGVmaW5lIGlkbGVfdGFzayhjcHUpICgmaW5pdF90YXNrKQotI2Rl
ZmluZSBjYW5fc2NoZWR1bGUocCxjcHUpICgxKQorI2RlZmluZSBjYW5fc2NoZWR1bGUocCxjcHUp
ICgocCktPmNwdXNfYWxsb3dlZCAmICgxIDw8IGNwdSkpCiAKICNlbmRpZgogCkBAIC04NTEsNiAr
ODUzLDEwOCBAQAogfQogCiB2b2lkIHNjaGVkdWxpbmdfZnVuY3Rpb25zX2VuZF9oZXJlKHZvaWQp
IHsgfQorICAKKy8qCisgKiBuZWVkZWQgZm9yIGFjY3VyYXRlIGNvcmUgZHVtcHMgb2YgbXVsdGkt
dGhyZWFkZWQgYXBwbGljYXRpb25zLgorICogc2VlIGJpbmZtdF9lbGYuYyBmb3IgbW9yZSBpbmZv
cm1hdGlvbi4KKyAqLworc3RhdGljIHZvaWQgcmVzY2hlZHVsZV9vdGhlcl9jcHVzKHZvaWQpCit7
CisjaWZkZWYgQ09ORklHX1NNUAorCWludCBpLCBjcHU7CisJc3RydWN0IHRhc2tfc3RydWN0ICpw
OworCisJZm9yKGk9MDsgaTwgc21wX251bV9jcHVzOyBpKyspIHsKKwkJY3B1ID0gY3B1X2xvZ2lj
YWxfbWFwKGkpOworCQlwID0gY3B1X2N1cnIoY3B1KTsKKwkJaWYgKHAtPnByb2Nlc3NvciAhPSBz
bXBfcHJvY2Vzc29yX2lkKCkpIHsKKwkJCXAtPm5lZWRfcmVzY2hlZCA9IDE7CisJCQlzbXBfc2Vu
ZF9yZXNjaGVkdWxlKHAtPnByb2Nlc3Nvcik7CisJCX0KKyAJfQorI2VuZGlmCQorCXJldHVybjsK
K30KKworLyogZnVuY3Rpb25zIGZvciBwYXVzaW5nIGFuZCByZXN1bW1pbmcgZnVuY3Rpb25zIHdp
dGggb3V0IHVzaW5nIHNpZ25hbHMgKi8KK3ZvaWQgdGNvcmVfc3VzcGVuZF90aHJlYWRzKHZvaWQp
Cit7CisJc3RydWN0IHRhc2tfc3RydWN0ICpwOworCisvLworLy8gZ3JhYiBhbGwgdGhlIHJxX2xv
Y2tzLgorLy8gY3VycmVudCBpcyB0aGUgcHJvY2VzcyBkdW1waW5nIGNvcmUKKy8vICAKKworCWRv
d25fd3JpdGUoJmN1cnJlbnQtPm1tLT5tbWFwX3NlbSk7CisJLy8gYXZvaWQgcG90ZW50aWFsIHJh
Y2Ugb24gPjIgd2F5IFNNUCBpZiAzIG9yIG1vcmUgdGhyZWFkIHByb2NzCisJLy8gZHVtcCBjb3Jl
IGF0IHRoZSBzYW1lIHRpbWUuCisJCisKKwkvKgorCSAqIGJydXRlIGZvcmNlIG1ldGhvZCB1c2Vz
IHRoZSBydW5xdWV1ZV9sb2NrIGNvbnRlbnRpb24uICBHcmFiIHRoaXMgbG9jaywgYW5kCisJICog
Zm9yY2UgYSBzY2hlZHVsZSBjYWxsIG9uIGFsbCB0aGUgb3RoZXIgQ1BVJ3MgdG8gZ2V0IHRoZW0g
c3Bpbm5pbmcuCisJICogc3Bpbl9sb2NrX3ByZWZldGNoKCZydW5xdWV1ZV9sb2NrKSA8LS0gaXMg
dGhpcyBuZWVkZWQ/CisJICovCisJcmVhZF9sb2NrKCZ0YXNrbGlzdF9sb2NrKTsKKwlzcGluX2xv
Y2tfaXJxKCZydW5xdWV1ZV9sb2NrKTsKKworCXRhc2tfbG9jayhjdXJyZW50KTsKKwljdXJyZW50
LT5jcHVzX2FsbG93ZWQgPSAxVUwgPDwgY3VycmVudC0+cHJvY2Vzc29yOworCS8vIHByZXZlbnQg
bWlncmFpb24gb2YgZHVtcGluZyBwcm9jZXNzIG1ha2luZyBsaWZlIGNvbXBsaWNhdGVkLgorCXRh
c2tfdW5sb2NrKGN1cnJlbnQpOworCQkJCisJcmVzY2hlZHVsZV9vdGhlcl9jcHVzKCk7CisJLy8g
dGhpcyBpcyBhbiBvcHRpb25hbCBJUEksIGJ1dCBpdCBtYWtlcyBmb3IgdGhlIG1vc3QgYWNjdXJh
dGUgY29yZSBmaWxlcyBwb3NzaWJsZS4KKwkJCisJZm9yX2VhY2hfdGFzayhwKQorCQlpZiAoY3Vy
cmVudC0+bW0gPT0gcC0+bW0gJiYgY3VycmVudCAhPSBwKSB7CisJCQl0YXNrX2xvY2socCk7CisJ
CQlwLT5jcHVzX2FsbG93ZWQgPSAwVUw7CisJCQl0YXNrX3VubG9jayhwKTsKKwkJCS8qIAorCQkJ
ICogZm9yY2VzIHllaWxkIGFuZCBrZWVwcyB3YWtpbmcgcHJvY2VzcyBmcm9tIGdldHRpbmcgc2No
ZWR1bGVkCisJCQkgKiBpbi4gVGhpcyB3aWxsIHJlc3VsdCBpbiB0aGVzZSBwcm9jZXNzZXMgZ2V0
dGluZyBzd2FwcGVkIG91dCBhbmQKKwkJCSAqIG5vdCBzd2FwcGVkIGluIGJ5IHRoZSBzY2hlZHVs
ZXIgaWYgdGhleSBoYXZlIGJlZW4gc2xlZXBpbmcuCisJCQkgKi8KKwkJfQorCQkKKwlzcGluX3Vu
bG9ja19pcnEoJnJ1bnF1ZXVlX2xvY2spOworCQorCS8qIGxldCB0aGVtIGFsbCBydW4gYWdhaW4u
LiAqLworCXJlYWRfdW5sb2NrKCZ0YXNrbGlzdF9sb2NrKTsKKworCXVwX3dyaXRlKCZjdXJyZW50
LT5tbS0+bW1hcF9zZW0pOworCQorI2lmZGVmIENPTkZJR19TTVAKKwkvKiAKKwkgKiBub3cgd2Ug
c3luY3Jvbml6ZSBvbiBhbGwgdGhlIENQVSdzIHRvIG1ha2Ugc3VyZQorCSAqIG5vbmUgb2YgdGhl
IG90aGVyIHRocmVhZCBwcm9jZXNzZXMgYXJlIHJ1bm5pbmcgaW4gCisJICogYW5kIGFueSBsYXp5
IGZwdSByZWdpc3RlciBkYXRhIGhhcyBiZWVuIGNhcHR1cmVkIAorCSAqIGZyb20gdXNlciBzcGFj
ZSBiZWZvcmUgd2UgcHJvY2VlZC4KKwkgKi8KKwlzbXBfY2FsbF9mdW5jdGlvbih0Y29yZV9kb19u
b3RoaW5nLCBOVUxMLCAxLDEpOworI2VuZGlmCisJCityZXR1cm47Cit9CisKK3ZvaWQgdGNvcmVf
cmVzdW1lX3RocmVhZHModm9pZCkKK3sKKwlzdHJ1Y3QgdGFza19zdHJ1Y3QgKnA7CisKKwlyZWFk
X2xvY2soJnRhc2tsaXN0X2xvY2spOworCWZvcl9lYWNoX3Rhc2socCkKKwkJaWYgKGN1cnJlbnQt
Pm1tID09IHAtPm1tICYmIGN1cnJlbnQgIT0gcCl7IAorCQkJdGFza19sb2NrKHApOworCQkJcC0+
Y3B1c19hbGxvd2VkID0gMVVMIDw8IGN1cnJlbnQtPnByb2Nlc3NvcjsKKwkJCXRhc2tfdW5sb2Nr
KHApOworCQl9CisJcmVhZF91bmxvY2soJnRhc2tsaXN0X2xvY2spOworCisJcmV0dXJuOworfQor
CiAKICNpZm5kZWYgX19hbHBoYV9fCiAK

--------------Boundary-00=_KZD84E63IU9F96N98QU4--
-
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/