large message queue patches

Alan Cox (peeter_joot@VNET.IBM.COM)
Tue, 22 Dec 1998 23:15:16 -0500 (EST)


Hi Linus,

I noticed that you have picked up part of the message queue modifications
in pre-2.1.132 from Alan's patch set.

Andi (Kleen?) had pointed out that as well as the 16 bit limitations in the
msqid_ds structure, there was the __kernel_ipc_pid_t (16 bit in some places)
that is used for the msg_l[rs]pid members. Apparently somebody has a set
of patches ready that remove other 16 bit userid limitations in the kernel,
but this was still a problem area.

Also, in the msgctl changes in the ac patches was a bit of a hack used to
allow the new (32 bit) msg_qbytes field to be used instead of the old 16
bit one -- this hack was (in user space) setting the __old_msg_qbytes
field to zero (since this wouldn't be a valid value for IPC_SET)
as a way to tell the kernel to get the value from the new msg_qbytes offset.

Ulrich Drepper thought it would be cleaner to just add a new switch for
the ipc multiplexer instead of this bit of magic. I have made the
changes for this as well as handling the short ipc_pid_t problem, and have
appended the patch below (this would be in addition to the message queue
changes in 2.1.131-ac*).

The msg_first and msg_last parameters in the user space msqid_ds are used
to pass back 32 bit clean msg_l[rs]pid fields, in a similar fashion to how
the wwait and rwait fields were used for 32 bit msg_[cq]bytes fields.
It also adds the msgctl switch so that the kernel doesn't have to
depend on user space magic in a msgctl(,IPC_SET,) call.

A new msgctl syscall is added for alpha since the ipc multiplexing
isn't done there.

This fully separates the kernel msqid_ds and userspace msqid_ds structures,
and undoes many of the trivial changes in ipc/msg.c that were there because
the first part of the msqid_ds was put into a common structure. If nothing
else this makes it easier to see what the real changes needed to allow
large messages were (not really too much).

Peeter

--
Peeter Joot                                          peeterj@ca.ibm.com

Message-ID: <1252.914383618@peeterj.torolab.ibm.com> Mime-Version: 1.0 Subject: remove 16 bit pid limitations in msqid_ds Content-Type: multipart/mixed; boundary="-"

This is a MIME encoded message. Decode it with "munpack" or any other MIME reading software. Mpack/munpack is available via anonymous FTP in ftp.andrew.cmu.edu:pub/mpack/

---
Content-Type: application/octet-stream; name="patch.ipc_extra-2.1.131-ac9"
Content-Transfer-Encoding: base64
Content-Disposition: inline; filename="patch.ipc_extra-2.1.131-ac9"
Content-MD5: tYGl1/C5OJYFg9IvF5XfsA==

ZGlmZiAtdXIgbGludXgtMi4xLjEzMS1hYzkvYXJjaC9hbHBoYS9rZXJuZWwvZW50cnkuUyBs aW51eC9hcmNoL2FscGhhL2tlcm5lbC9lbnRyeS5TCi0tLSBsaW51eC0yLjEuMTMxLWFjOS9h cmNoL2FscGhhL2tlcm5lbC9lbnRyeS5TCVNhdCBEZWMgIDUgMDE6MzM6MjQgMTk5OAorKysg bGludXgvYXJjaC9hbHBoYS9rZXJuZWwvZW50cnkuUwlTdW4gRGVjIDIwIDAwOjMxOjMyIDE5 OTgKQEAgLTEwLDcgKzEwLDcgQEAKICNkZWZpbmUgcnRpCS5sb25nIFBBTF9ydGkKICNkZWZp bmUgU0lHQ0hMRAkyMAogCi0jZGVmaW5lIE5SX1NZU0NBTExTIDM3MAorI2RlZmluZSBOUl9T WVNDQUxMUyAzNzEKICNkZWZpbmUgb3NmX3Zmb3JrIHN5c19mb3JrCiAKIC8qCmRpZmYgLXVy IGxpbnV4LTIuMS4xMzEtYWM5L2FyY2gvYXJtL2tlcm5lbC9zeXNfYXJtLmMgbGludXgvYXJj aC9hcm0va2VybmVsL3N5c19hcm0uYwotLS0gbGludXgtMi4xLjEzMS1hYzkvYXJjaC9hcm0v a2VybmVsL3N5c19hcm0uYwlTYXQgRGVjIDEyIDIzOjI4OjI0IDE5OTgKKysrIGxpbnV4L2Fy Y2gvYXJtL2tlcm5lbC9zeXNfYXJtLmMJU3VuIERlYyAyMCAwMDozMTozMiAxOTk4CkBAIC0x NDMsNyArMTQzLDcgQEAKIAkJCXJldCA9IC1FSU5WQUw7CiAJCQlnb3RvIG91dDsKIAkJfQot CWlmIChjYWxsIDw9IE1TR0NUTCkgCisJaWYgKGNhbGwgPD0gTVNHQ1RMMzIpIAogCQlzd2l0 Y2ggKGNhbGwpIHsKIAkJY2FzZSBNU0dTTkQ6CiAJCQlyZXQgPSBzeXNfbXNnc25kIChmaXJz dCwgKHN0cnVjdCBtc2didWYgKikgcHRyLCAKQEAgLTE3Miw2ICsxNzIsOSBAQAogCQkJZ290 byBvdXQ7CiAJCWNhc2UgTVNHQ1RMOgogCQkJcmV0ID0gc3lzX21zZ2N0bCAoZmlyc3QsIHNl Y29uZCwgKHN0cnVjdCBtc3FpZF9kcyAqKSBwdHIpOworCQkJZ290byBvdXQ7CisJCWNhc2Ug TVNHQ1RMMzI6CisJCQlyZXQgPSBzeXNfbXNnY3RsMzIgKGZpcnN0LCBzZWNvbmQsIChzdHJ1 Y3QgbXNxaWRfZHMgKikgcHRyKTsKIAkJCWdvdG8gb3V0OwogCQlkZWZhdWx0OgogCQkJcmV0 ID0gLUVJTlZBTDsKZGlmZiAtdXIgbGludXgtMi4xLjEzMS1hYzkvYXJjaC9pMzg2L2tlcm5l bC9zeXNfaTM4Ni5jIGxpbnV4L2FyY2gvaTM4Ni9rZXJuZWwvc3lzX2kzODYuYwotLS0gbGlu dXgtMi4xLjEzMS1hYzkvYXJjaC9pMzg2L2tlcm5lbC9zeXNfaTM4Ni5jCVNhdCBEZWMgMTIg MjM6Mjg6MjUgMTk5OAorKysgbGludXgvYXJjaC9pMzg2L2tlcm5lbC9zeXNfaTM4Ni5jCVN1 biBEZWMgMjAgMDA6MzE6MzIgMTk5OApAQCAtMTM0LDcgKzEzNCw3IEBACiAJCX0KIAogCXZl cnNpb24gPSBjYWxsID4+IDE2OyAvKiBoYWNrIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5 ICAgICAgKi8KLQlpZiAoY2FsbCA8PSBNU0dDVEwpIAorCWlmIChjYWxsIDw9IE1TR0NUTDMy KSAKIAkJc3dpdGNoIChjYWxsKSB7CiAJCWNhc2UgTVNHU05EOgogCQkJcmV0dXJuIHN5c19t c2dzbmQgKGZpcnN0LCAoc3RydWN0IG1zZ2J1ZiAqKSBwdHIsIApAQCAtMTYyLDYgKzE2Miw5 IEBACiAJCQlyZXR1cm4gc3lzX21zZ2dldCAoKGtleV90KSBmaXJzdCwgc2Vjb25kKTsKIAkJ Y2FzZSBNU0dDVEw6CiAJCQlyZXR1cm4gc3lzX21zZ2N0bCAoZmlyc3QsIHNlY29uZCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RydWN0IG1zcWlk X2RzICopIHB0cik7CisJCWNhc2UgTVNHQ1RMMzI6CisJCQlyZXR1cm4gc3lzX21zZ2N0bDMy IChmaXJzdCwgc2Vjb25kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChzdHJ1Y3QgbXNxaWRfZHMgKikgcHRyKTsKIAkJZGVmYXVsdDoKIAkJCXJldHVy biAtRUlOVkFMOwpkaWZmIC11ciBsaW51eC0yLjEuMTMxLWFjOS9hcmNoL202OGsva2VybmVs L3N5c19tNjhrLmMgbGludXgvYXJjaC9tNjhrL2tlcm5lbC9zeXNfbTY4ay5jCi0tLSBsaW51 eC0yLjEuMTMxLWFjOS9hcmNoL202OGsva2VybmVsL3N5c19tNjhrLmMJTW9uIEF1ZyAxMCAx NDowMjoyNCAxOTk4CisrKyBsaW51eC9hcmNoL202OGsva2VybmVsL3N5c19tNjhrLmMJU3Vu IERlYyAyMCAwMDozMTozMiAxOTk4CkBAIC0xNDEsNyArMTQxLDcgQEAKIAkJCXJldCA9IC1F SU5WQUw7CiAJCQlnb3RvIG91dDsKIAkJfQotCWlmIChjYWxsIDw9IE1TR0NUTCkgCisJaWYg KGNhbGwgPD0gTVNHQ1RMMzIpIAogCQlzd2l0Y2ggKGNhbGwpIHsKIAkJY2FzZSBNU0dTTkQ6 CiAJCQlyZXQgPSBzeXNfbXNnc25kIChmaXJzdCwgKHN0cnVjdCBtc2didWYgKikgcHRyLCAK QEAgLTE2OSw2ICsxNjksOSBAQAogCQkJZ290byBvdXQ7CiAJCWNhc2UgTVNHQ1RMOgogCQkJ cmV0ID0gc3lzX21zZ2N0bCAoZmlyc3QsIHNlY29uZCwgKHN0cnVjdCBtc3FpZF9kcyAqKSBw dHIpOworCQkJZ290byBvdXQ7CisJCWNhc2UgTVNHQ1RMMzI6CisJCQlyZXQgPSBzeXNfbXNn Y3RsMzIgKGZpcnN0LCBzZWNvbmQsIChzdHJ1Y3QgbXNxaWRfZHMgKikgcHRyKTsKIAkJCWdv dG8gb3V0OwogCQlkZWZhdWx0OgogCQkJcmV0ID0gLUVJTlZBTDsKZGlmZiAtdXIgbGludXgt Mi4xLjEzMS1hYzkvYXJjaC9taXBzL2tlcm5lbC9pcGMuYyBsaW51eC9hcmNoL21pcHMva2Vy bmVsL2lwYy5jCi0tLSBsaW51eC0yLjEuMTMxLWFjOS9hcmNoL21pcHMva2VybmVsL2lwYy5j CUZyaSBNYXkgIDggMDM6MTM6MjMgMTk5OAorKysgbGludXgvYXJjaC9taXBzL2tlcm5lbC9p cGMuYwlTdW4gRGVjIDIwIDAwOjMxOjMyIDE5OTgKQEAgLTUzLDcgKzUzLDcgQEAKIAkJCXJl dCA9IC1FSU5WQUw7CiAJCQlnb3RvIG91dDsKIAkJfQotCWlmIChjYWxsIDw9IE1TR0NUTCkg CisJaWYgKGNhbGwgPD0gTVNHQ1RMMzIpIAogCQlzd2l0Y2ggKGNhbGwpIHsKIAkJY2FzZSBN U0dTTkQ6CiAJCQlyZXQgPSBzeXNfbXNnc25kIChmaXJzdCwgKHN0cnVjdCBtc2didWYgKikg cHRyLCAKQEAgLTgyLDYgKzgyLDkgQEAKIAkJCWdvdG8gb3V0OwogCQljYXNlIE1TR0NUTDoK IAkJCXJldCA9IHN5c19tc2djdGwgKGZpcnN0LCBzZWNvbmQsIChzdHJ1Y3QgbXNxaWRfZHMg KikgcHRyKTsKKwkJCWdvdG8gb3V0OworCQljYXNlIE1TR0NUTDMyOgorCQkJcmV0ID0gc3lz X21zZ2N0bDMyIChmaXJzdCwgc2Vjb25kLCAoc3RydWN0IG1zcWlkX2RzICopIHB0cik7CiAJ CQlnb3RvIG91dDsKIAkJZGVmYXVsdDoKIAkJCXJldCA9IC1FSU5WQUw7CmRpZmYgLXVyIGxp bnV4LTIuMS4xMzEtYWM5L2FyY2gvcHBjL2tlcm5lbC9zeXNjYWxscy5jIGxpbnV4L2FyY2gv cHBjL2tlcm5lbC9zeXNjYWxscy5jCi0tLSBsaW51eC0yLjEuMTMxLWFjOS9hcmNoL3BwYy9r ZXJuZWwvc3lzY2FsbHMuYwlTYXQgRGVjIDEyIDIzOjI4OjI1IDE5OTgKKysrIGxpbnV4L2Fy Y2gvcHBjL2tlcm5lbC9zeXNjYWxscy5jCVN1biBEZWMgMjAgMDA6MzE6MzIgMTk5OApAQCAt MTM2LDYgKzEzNiw5IEBACiAJY2FzZSBNU0dDVEw6CiAJCXJldCA9IHN5c19tc2djdGwgKGZp cnN0LCBzZWNvbmQsIChzdHJ1Y3QgbXNxaWRfZHMgKikgcHRyKTsKIAkJYnJlYWs7CisJY2Fz ZSBNU0dDVEwzMjoKKwkJcmV0ID0gc3lzX21zZ2N0bDMyIChmaXJzdCwgc2Vjb25kLCAoc3Ry dWN0IG1zcWlkX2RzICopIHB0cik7CisJCWJyZWFrOwogCWNhc2UgU0hNQVQ6CiAJCXN3aXRj aCAodmVyc2lvbikgewogCQlkZWZhdWx0OiB7CmRpZmYgLXVyIGxpbnV4LTIuMS4xMzEtYWM5 L2FyY2gvc3BhcmMva2VybmVsL3N5c19zcGFyYy5jIGxpbnV4L2FyY2gvc3BhcmMva2VybmVs L3N5c19zcGFyYy5jCi0tLSBsaW51eC0yLjEuMTMxLWFjOS9hcmNoL3NwYXJjL2tlcm5lbC9z eXNfc3BhcmMuYwlTYXQgRGVjICA1IDAxOjMzOjQ4IDE5OTgKKysrIGxpbnV4L2FyY2gvc3Bh cmMva2VybmVsL3N5c19zcGFyYy5jCVN1biBEZWMgMjAgMDA6MzE6MzIgMTk5OApAQCAtMTAx LDcgKzEwMSw3IEBACiAJCQllcnIgPSAtRUlOVkFMOwogCQkJZ290byBvdXQ7CiAJCX0KLQlp ZiAoY2FsbCA8PSBNU0dDVEwpIAorCWlmIChjYWxsIDw9IE1TR0NUTDMyKSAKIAkJc3dpdGNo IChjYWxsKSB7CiAJCWNhc2UgTVNHU05EOgogCQkJZXJyID0gc3lzX21zZ3NuZCAoZmlyc3Qs IChzdHJ1Y3QgbXNnYnVmICopIHB0ciwgCkBAIC0xMjksNiArMTI5LDkgQEAKIAkJCWdvdG8g b3V0OwogCQljYXNlIE1TR0NUTDoKIAkJCWVyciA9IHN5c19tc2djdGwgKGZpcnN0LCBzZWNv bmQsIChzdHJ1Y3QgbXNxaWRfZHMgKikgcHRyKTsKKwkJCWdvdG8gb3V0OworCQljYXNlIE1T R0NUTDMyOgorCQkJZXJyID0gc3lzX21zZ2N0bDMyIChmaXJzdCwgc2Vjb25kLCAoc3RydWN0 IG1zcWlkX2RzICopIHB0cik7CiAJCQlnb3RvIG91dDsKIAkJZGVmYXVsdDoKIAkJCWVyciA9 IC1FSU5WQUw7CmRpZmYgLXVyIGxpbnV4LTIuMS4xMzEtYWM5L2FyY2gvc3BhcmM2NC9rZXJu ZWwvc3lzX3NwYXJjLmMgbGludXgvYXJjaC9zcGFyYzY0L2tlcm5lbC9zeXNfc3BhcmMuYwot LS0gbGludXgtMi4xLjEzMS1hYzkvYXJjaC9zcGFyYzY0L2tlcm5lbC9zeXNfc3BhcmMuYwlT YXQgRGVjICA1IDAxOjMzOjQ4IDE5OTgKKysrIGxpbnV4L2FyY2gvc3BhcmM2NC9rZXJuZWwv c3lzX3NwYXJjLmMJU3VuIERlYyAyMCAwMDozMTozMiAxOTk4CkBAIC0xMDAsNyArMTAwLDcg QEAKIAkJCWVyciA9IC1FSU5WQUw7CiAJCQlnb3RvIG91dDsKIAkJfQotCWlmIChjYWxsIDw9 IE1TR0NUTCkgCisJaWYgKGNhbGwgPD0gTVNHQ1RMMzIpIAogCQlzd2l0Y2ggKGNhbGwpIHsK IAkJY2FzZSBNU0dTTkQ6CiAJCQllcnIgPSBzeXNfbXNnc25kIChmaXJzdCwgKHN0cnVjdCBt c2didWYgKikgcHRyLCAKQEAgLTExNCw2ICsxMTQsOSBAQAogCQkJZ290byBvdXQ7CiAJCWNh c2UgTVNHQ1RMOgogCQkJZXJyID0gc3lzX21zZ2N0bCAoZmlyc3QsIHNlY29uZCwgKHN0cnVj dCBtc3FpZF9kcyAqKSBwdHIpOworCQkJZ290byBvdXQ7CisJCWNhc2UgTVNHQ1RMMzI6CisJ CQllcnIgPSBzeXNfbXNnY3RsMzIgKGZpcnN0LCBzZWNvbmQsIChzdHJ1Y3QgbXNxaWRfZHMg KikgcHRyKTsKIAkJCWdvdG8gb3V0OwogCQlkZWZhdWx0OgogCQkJZXJyID0gLUVJTlZBTDsK ZGlmZiAtdXIgbGludXgtMi4xLjEzMS1hYzkvYXJjaC9zcGFyYzY0L2tlcm5lbC9zeXNfc3Bh cmMzMi5jIGxpbnV4L2FyY2gvc3BhcmM2NC9rZXJuZWwvc3lzX3NwYXJjMzIuYwotLS0gbGlu dXgtMi4xLjEzMS1hYzkvYXJjaC9zcGFyYzY0L2tlcm5lbC9zeXNfc3BhcmMzMi5jCVNhdCBE ZWMgIDUgMDE6MzQ6MjYgMTk5OAorKysgbGludXgvYXJjaC9zcGFyYzY0L2tlcm5lbC9zeXNf c3BhcmMzMi5jCVN1biBEZWMgMjAgMDA6MzE6MzIgMTk5OApAQCAtMjAxLDE4ICsyMDEsMTgg QEAKIHN0cnVjdCBtc3FpZF9kczMyCiB7CiAgICAgICAgIHN0cnVjdCBpcGNfcGVybTMyIG1z Z19wZXJtOwotICAgICAgICB1MzIgbXNnX2ZpcnN0OwotICAgICAgICB1MzIgbXNnX2xhc3Q7 CisgICAgICAgIF9fa2VybmVsX3BpZF90MzIgbXNnX2xzcGlkOworICAgICAgICBfX2tlcm5l bF9waWRfdDMyIG1zZ19scnBpZDsKICAgICAgICAgX19rZXJuZWxfdGltZV90MzIgbXNnX3N0 aW1lOwogICAgICAgICBfX2tlcm5lbF90aW1lX3QzMiBtc2dfcnRpbWU7CiAgICAgICAgIF9f a2VybmVsX3RpbWVfdDMyIG1zZ19jdGltZTsKLSAgICAgICAgdTMyIHd3YWl0OwotICAgICAg ICB1MzIgcndhaXQ7CiAgICAgICAgIHVuc2lnbmVkIHNob3J0IG1zZ19jYnl0ZXM7Ci0gICAg ICAgIHVuc2lnbmVkIHNob3J0IG1zZ19xbnVtOyAgCiAgICAgICAgIHVuc2lnbmVkIHNob3J0 IG1zZ19xYnl0ZXM7Ci0gICAgICAgIF9fa2VybmVsX2lwY19waWRfdDMyIG1zZ19sc3BpZDsK LSAgICAgICAgX19rZXJuZWxfaXBjX3BpZF90MzIgbXNnX2xycGlkOworICAgICAgICB1bnNp Z25lZCBzaG9ydCBvbGRfbXNnX2NieXRlczsKKyAgICAgICAgdW5zaWduZWQgc2hvcnQgbXNn X3FudW07ICAKKyAgICAgICAgdW5zaWduZWQgc2hvcnQgb2xkX21zZ19xYnl0ZXM7CisgICAg ICAgIF9fa2VybmVsX2lwY19waWRfdDMyIG9sZF9tc2dfbHNwaWQ7CisgICAgICAgIF9fa2Vy bmVsX2lwY19waWRfdDMyIG9sZF9tc2dfbHJwaWQ7CiB9OwogCiBzdHJ1Y3Qgc2htaWRfZHMz MiB7CkBAIC0zNTMsNyArMzUzLDcgQEAKIAlyZXR1cm4gZXJyOwogfQogCi1zdGF0aWMgaW50 IGRvX3N5czMyX21zZ2N0bCAoaW50IGZpcnN0LCBpbnQgc2Vjb25kLCB2b2lkICp1cHRyKQor c3RhdGljIGludCBkb19zeXMzMl9tc2djdGwgKGludCBmaXJzdCwgaW50IHNlY29uZCwgdm9p ZCAqdXB0ciwgaW50IG1zZ2N0bDMyKQogewogCWludCBlcnI7CiAKQEAgLTM3MCw3ICszNzAs MTMgQEAKIAkJCWVyciA9IGdldF91c2VyIChtLm1zZ19wZXJtLnVpZCwgJnVwLT5tc2dfcGVy bS51aWQpOwogCQkJZXJyIHw9IF9fZ2V0X3VzZXIgKG0ubXNnX3Blcm0uZ2lkLCAmdXAtPm1z Z19wZXJtLmdpZCk7CiAJCQllcnIgfD0gX19nZXRfdXNlciAobS5tc2dfcGVybS5tb2RlLCAm dXAtPm1zZ19wZXJtLm1vZGUpOwotCQkJZXJyIHw9IF9fZ2V0X3VzZXIgKG0ubXNnX3FieXRl cywgJnVwLT5tc2dfcWJ5dGVzKTsKKwkJCWlmIChtc2djdGwzMikKKwkJCQllcnIgfD0gX19n ZXRfdXNlciAobS5tc2dfcWJ5dGVzLCAmdXAtPm1zZ19xYnl0ZXMpOworCQkJZWxzZSB7CisJ CQkJdW5zaWduZWQgc2hvcnQgdG1wOworCQkJCWVyciB8PSBfX2dldF91c2VyICh0bXAsICZ1 cC0+b2xkX21zZ19xYnl0ZXMpOworCQkJCW0ubXNnX3FieXRlcyA9IHRtcDsKKwkJCX0KIAkJ CWlmIChlcnIpCiAJCQkJZ290byBvdXQ7CiAJCX0KQEAgLTM4MCw2ICszODYsNyBAQAogCQlz ZXRfZnMgKG9sZF9mcyk7CiAJCWlmIChJUENPUF9NQVNLIChzZWNvbmQpICYKIAkJICAgIChJ UENPUF9NQVNLIChNU0dfU1RBVCkgfCBJUENPUF9NQVNLIChJUENfU1RBVCkpKSB7CisJCQl1 bnNpZ25lZCBzaG9ydCB0bXBzaG9ydDsKIAkJCWludCBlcnIyID0gcHV0X3VzZXIgKG0ubXNn X3Blcm0ua2V5LCAmdXAtPm1zZ19wZXJtLmtleSk7CiAJCQllcnIyIHw9IF9fcHV0X3VzZXIg KG0ubXNnX3Blcm0udWlkLCAmdXAtPm1zZ19wZXJtLnVpZCk7CiAJCQllcnIyIHw9IF9fcHV0 X3VzZXIgKG0ubXNnX3Blcm0uZ2lkLCAmdXAtPm1zZ19wZXJtLmdpZCk7CkBAIC0zODcsMTQg KzM5NCwyMiBAQAogCQkJZXJyMiB8PSBfX3B1dF91c2VyIChtLm1zZ19wZXJtLmNnaWQsICZ1 cC0+bXNnX3Blcm0uY2dpZCk7CiAJCQllcnIyIHw9IF9fcHV0X3VzZXIgKG0ubXNnX3Blcm0u bW9kZSwgJnVwLT5tc2dfcGVybS5tb2RlKTsKIAkJCWVycjIgfD0gX19wdXRfdXNlciAobS5t c2dfcGVybS5zZXEsICZ1cC0+bXNnX3Blcm0uc2VxKTsKKwkJCWVycjIgfD0gX19wdXRfdXNl ciAobS5tc2dfbHNwaWQsICZ1cC0+bXNnX2xzcGlkKTsKKwkJCWVycjIgfD0gX19wdXRfdXNl ciAobS5tc2dfbHJwaWQsICZ1cC0+bXNnX2xycGlkKTsKIAkJCWVycjIgfD0gX19wdXRfdXNl ciAobS5tc2dfc3RpbWUsICZ1cC0+bXNnX3N0aW1lKTsKIAkJCWVycjIgfD0gX19wdXRfdXNl ciAobS5tc2dfcnRpbWUsICZ1cC0+bXNnX3J0aW1lKTsKIAkJCWVycjIgfD0gX19wdXRfdXNl ciAobS5tc2dfY3RpbWUsICZ1cC0+bXNnX2N0aW1lKTsKIAkJCWVycjIgfD0gX19wdXRfdXNl ciAobS5tc2dfY2J5dGVzLCAmdXAtPm1zZ19jYnl0ZXMpOwotCQkJZXJyMiB8PSBfX3B1dF91 c2VyIChtLm1zZ19xbnVtLCAmdXAtPm1zZ19xbnVtKTsKIAkJCWVycjIgfD0gX19wdXRfdXNl ciAobS5tc2dfcWJ5dGVzLCAmdXAtPm1zZ19xYnl0ZXMpOwotCQkJZXJyMiB8PSBfX3B1dF91 c2VyIChtLm1zZ19sc3BpZCwgJnVwLT5tc2dfbHNwaWQpOwotCQkJZXJyMiB8PSBfX3B1dF91 c2VyIChtLm1zZ19scnBpZCwgJnVwLT5tc2dfbHJwaWQpOworCQkJdG1wc2hvcnQgPSAodW5z aWduZWQgc2hvcnQpbS5tc2dfY2J5dGVzOworCQkJZXJyMiB8PSBfX3B1dF91c2VyICh0bXBz aG9ydCwgJnVwLT5vbGRfbXNnX2NieXRlcyk7CisJCQllcnIyIHw9IF9fcHV0X3VzZXIgKG0u bXNnX3FudW0sICZ1cC0+bXNnX3FudW0pOworCQkJdG1wc2hvcnQgPSAodW5zaWduZWQgc2hv cnQpbS5tc2dfcWJ5dGVzOworCQkJZXJyMiB8PSBfX3B1dF91c2VyICh0bXBzaG9ydCwgJnVw LT5vbGRfbXNnX3FieXRlcyk7CisJCQl0bXBzaG9ydCA9ICh1bnNpZ25lZCBzaG9ydCltLm1z Z19sc3BpZDsKKwkJCWVycjIgfD0gX19wdXRfdXNlciAodG1wc2hvcnQsICZ1cC0+b2xkX21z Z19sc3BpZCk7CisJCQl0bXBzaG9ydCA9ICh1bnNpZ25lZCBzaG9ydCltLm1zZ19scnBpZDsK KwkJCWVycjIgfD0gX19wdXRfdXNlciAodG1wc2hvcnQsICZ1cC0+b2xkX21zZ19scnBpZCk7 CiAJCQlpZiAoZXJyMikKIAkJCQllcnIgPSAtRUZBVUxUOwogCQl9CkBAIC01MTEsNyArNTI2 LDcgQEAKIAkJCWVyciA9IC1FSU5WQUw7CiAJCQlnb3RvIG91dDsKIAkJfTsKLQlpZiAoY2Fs bCA8PSBNU0dDVEwpIAorCWlmIChjYWxsIDw9IE1TR0NUTDMyKSAKIAkJc3dpdGNoIChjYWxs KSB7CiAJCWNhc2UgTVNHU05EOgogCQkJZXJyID0gZG9fc3lzMzJfbXNnc25kIChmaXJzdCwg c2Vjb25kLCB0aGlyZCwgKHZvaWQgKilBQShwdHIpKTsKQEAgLTUyNCw3ICs1MzksMTAgQEAK IAkJCWVyciA9IHN5c19tc2dnZXQgKChrZXlfdCkgZmlyc3QsIHNlY29uZCk7CiAJCQlnb3Rv IG91dDsKIAkJY2FzZSBNU0dDVEw6Ci0JCQllcnIgPSBkb19zeXMzMl9tc2djdGwgKGZpcnN0 LCBzZWNvbmQsICh2b2lkICopQUEocHRyKSk7CisJCQllcnIgPSBkb19zeXMzMl9tc2djdGwg KGZpcnN0LCBzZWNvbmQsICh2b2lkICopQUEocHRyKSwgMCk7CisJCQlnb3RvIG91dDsKKwkJ Y2FzZSBNU0dDVEwzMjoKKwkJCWVyciA9IGRvX3N5czMyX21zZ2N0bCAoZmlyc3QsIHNlY29u ZCwgKHZvaWQgKilBQShwdHIpLCAxKTsKIAkJCWdvdG8gb3V0OwogCQlkZWZhdWx0OgogCQkJ ZXJyID0gLUVJTlZBTDsKZGlmZiAtdXIgbGludXgtMi4xLjEzMS1hYzkvaW5jbHVkZS9hc20t YWxwaGEvdW5pc3RkLmggbGludXgvaW5jbHVkZS9hc20tYWxwaGEvdW5pc3RkLmgKLS0tIGxp bnV4LTIuMS4xMzEtYWM5L2luY2x1ZGUvYXNtLWFscGhhL3VuaXN0ZC5oCVN1biBTZXAgIDYg MTY6MDY6MDQgMTk5OAorKysgbGludXgvaW5jbHVkZS9hc20tYWxwaGEvdW5pc3RkLmgJU3Vu IERlYyAyMCAwMDozMTozMiAxOTk4CkBAIC0zMDcsNiArMzA3LDcgQEAKICNkZWZpbmUgX19O Ul9nZXRjd2QJCQkzNjcKICNkZWZpbmUgX19OUl9jYXBnZXQJCQkzNjgKICNkZWZpbmUgX19O Ul9jYXBzZXQJCQkzNjkKKyNkZWZpbmUgX19OUl9tc2djdGwzMgkJCTM3MAogCiAjaWYgZGVm aW5lZChfX0xJQlJBUllfXykgJiYgZGVmaW5lZChfX0dOVUNfXykKIApkaWZmIC11ciBsaW51 eC0yLjEuMTMxLWFjOS9pbmNsdWRlL2FzbS1hcm0vaXBjLmggbGludXgvaW5jbHVkZS9hc20t YXJtL2lwYy5oCi0tLSBsaW51eC0yLjEuMTMxLWFjOS9pbmNsdWRlL2FzbS1hcm0vaXBjLmgJ VHVlIEphbiAyMCAxOTozOTo0MiAxOTk4CisrKyBsaW51eC9pbmNsdWRlL2FzbS1hcm0vaXBj LmgJU3VuIERlYyAyMCAwMDozMTozMiAxOTk4CkBAIC0xOCw2ICsxOCw3IEBACiAjZGVmaW5l IE1TR1JDVgkJMTIKICNkZWZpbmUgTVNHR0VUCQkxMwogI2RlZmluZSBNU0dDVEwJCTE0Cisj ZGVmaW5lIE1TR0NUTDMyCTE1CiAjZGVmaW5lIFNITUFUCQkyMQogI2RlZmluZSBTSE1EVAkJ MjIKICNkZWZpbmUgU0hNR0VUCQkyMwpkaWZmIC11ciBsaW51eC0yLjEuMTMxLWFjOS9pbmNs dWRlL2FzbS1pMzg2L2lwYy5oIGxpbnV4L2luY2x1ZGUvYXNtLWkzODYvaXBjLmgKLS0tIGxp bnV4LTIuMS4xMzEtYWM5L2luY2x1ZGUvYXNtLWkzODYvaXBjLmgJU2F0IERlYyAxMiAyMzoy ODo0MSAxOTk4CisrKyBsaW51eC9pbmNsdWRlL2FzbS1pMzg2L2lwYy5oCVN1biBEZWMgMjAg MDA6MzE6MzIgMTk5OApAQCAtMTgsNiArMTgsNyBAQAogI2RlZmluZSBNU0dSQ1YJCTEyCiAj ZGVmaW5lIE1TR0dFVAkJMTMKICNkZWZpbmUgTVNHQ1RMCQkxNAorI2RlZmluZSBNU0dDVEwz MgkxNQogI2RlZmluZSBTSE1BVAkJMjEKICNkZWZpbmUgU0hNRFQJCTIyCiAjZGVmaW5lIFNI TUdFVAkJMjMKZGlmZiAtdXIgbGludXgtMi4xLjEzMS1hYzkvaW5jbHVkZS9hc20tbTY4ay9p cGMuaCBsaW51eC9pbmNsdWRlL2FzbS1tNjhrL2lwYy5oCi0tLSBsaW51eC0yLjEuMTMxLWFj OS9pbmNsdWRlL2FzbS1tNjhrL2lwYy5oCVNhdCBEZWMgMTIgMjM6Mjg6NDEgMTk5OAorKysg bGludXgvaW5jbHVkZS9hc20tbTY4ay9pcGMuaAlTdW4gRGVjIDIwIDAwOjMxOjMyIDE5OTgK QEAgLTE4LDYgKzE4LDcgQEAKICNkZWZpbmUgTVNHUkNWCQkxMgogI2RlZmluZSBNU0dHRVQJ CTEzCiAjZGVmaW5lIE1TR0NUTAkJMTQKKyNkZWZpbmUgTVNHQ1RMMzIJMTUKICNkZWZpbmUg U0hNQVQJCTIxCiAjZGVmaW5lIFNITURUCQkyMgogI2RlZmluZSBTSE1HRVQJCTIzCmRpZmYg LXVyIGxpbnV4LTIuMS4xMzEtYWM5L2luY2x1ZGUvYXNtLW1pcHMvaXBjLmggbGludXgvaW5j bHVkZS9hc20tbWlwcy9pcGMuaAotLS0gbGludXgtMi4xLjEzMS1hYzkvaW5jbHVkZS9hc20t bWlwcy9pcGMuaAlUaHUgSnVuIDI2IDE1OjMzOjM5IDE5OTcKKysrIGxpbnV4L2luY2x1ZGUv YXNtLW1pcHMvaXBjLmgJU3VuIERlYyAyMCAwMDozMTozMiAxOTk4CkBAIC0xOSw2ICsxOSw3 IEBACiAjZGVmaW5lIE1TR1JDVgkJMTIKICNkZWZpbmUgTVNHR0VUCQkxMwogI2RlZmluZSBN U0dDVEwJCTE0CisjZGVmaW5lIE1TR0NUTDMyCTE1CiAjZGVmaW5lIFNITUFUCQkyMQogI2Rl ZmluZSBTSE1EVAkJMjIKICNkZWZpbmUgU0hNR0VUCQkyMwpkaWZmIC11ciBsaW51eC0yLjEu MTMxLWFjOS9pbmNsdWRlL2FzbS1wcGMvaXBjLmggbGludXgvaW5jbHVkZS9hc20tcHBjL2lw Yy5oCi0tLSBsaW51eC0yLjEuMTMxLWFjOS9pbmNsdWRlL2FzbS1wcGMvaXBjLmgJU2F0IEF1 ZyAxNiAxMjo1MTowOSAxOTk3CisrKyBsaW51eC9pbmNsdWRlL2FzbS1wcGMvaXBjLmgJU3Vu IERlYyAyMCAwMDozMTozMiAxOTk4CkBAIC0xOCw2ICsxOCw3IEBACiAjZGVmaW5lIE1TR1JD VgkJMTIKICNkZWZpbmUgTVNHR0VUCQkxMwogI2RlZmluZSBNU0dDVEwJCTE0CisjZGVmaW5l IE1TR0NUTDMyCTE1CiAjZGVmaW5lIFNITUFUCQkyMQogI2RlZmluZSBTSE1EVAkJMjIKICNk ZWZpbmUgU0hNR0VUCQkyMwpkaWZmIC11ciBsaW51eC0yLjEuMTMxLWFjOS9pbmNsdWRlL2Fz bS1zcGFyYy9pcGMuaCBsaW51eC9pbmNsdWRlL2FzbS1zcGFyYy9pcGMuaAotLS0gbGludXgt Mi4xLjEzMS1hYzkvaW5jbHVkZS9hc20tc3BhcmMvaXBjLmgJVGh1IERlYyAxOSAwNDowMzoz NyAxOTk2CisrKyBsaW51eC9pbmNsdWRlL2FzbS1zcGFyYy9pcGMuaAlTdW4gRGVjIDIwIDAw OjMxOjMyIDE5OTgKQEAgLTE4LDYgKzE4LDcgQEAKICNkZWZpbmUgTVNHUkNWCQkxMgogI2Rl ZmluZSBNU0dHRVQJCTEzCiAjZGVmaW5lIE1TR0NUTAkJMTQKKyNkZWZpbmUgTVNHQ1RMMzIJ MTUKICNkZWZpbmUgU0hNQVQJCTIxCiAjZGVmaW5lIFNITURUCQkyMgogI2RlZmluZSBTSE1H RVQJCTIzCmRpZmYgLXVyIGxpbnV4LTIuMS4xMzEtYWM5L2luY2x1ZGUvYXNtLXNwYXJjNjQv aXBjLmggbGludXgvaW5jbHVkZS9hc20tc3BhcmM2NC9pcGMuaAotLS0gbGludXgtMi4xLjEz MS1hYzkvaW5jbHVkZS9hc20tc3BhcmM2NC9pcGMuaAlXZWQgQXByIDIzIDIyOjAxOjI4IDE5 OTcKKysrIGxpbnV4L2luY2x1ZGUvYXNtLXNwYXJjNjQvaXBjLmgJU3VuIERlYyAyMCAwMDoz MTozMiAxOTk4CkBAIC0xOCw2ICsxOCw3IEBACiAjZGVmaW5lIE1TR1JDVgkJMTIKICNkZWZp bmUgTVNHR0VUCQkxMwogI2RlZmluZSBNU0dDVEwJCTE0CisjZGVmaW5lIE1TR0NUTDMyCTE1 CiAjZGVmaW5lIFNITUFUCQkyMQogI2RlZmluZSBTSE1EVAkJMjIKICNkZWZpbmUgU0hNR0VU CQkyMwpkaWZmIC11ciBsaW51eC0yLjEuMTMxLWFjOS9pbmNsdWRlL2xpbnV4L21zZy5oIGxp bnV4L2luY2x1ZGUvbGludXgvbXNnLmgKLS0tIGxpbnV4LTIuMS4xMzEtYWM5L2luY2x1ZGUv bGludXgvbXNnLmgJU3VuIERlYyAxMyAwMDoyOToxMiAxOTk4CisrKyBsaW51eC9pbmNsdWRl L2xpbnV4L21zZy5oCVN1biBEZWMgMjAgMDA6MzE6MzIgMTk5OApAQCAtMTIsNDAgKzEyLDM3 IEBACiAjZGVmaW5lIE1TR19FWENFUFQgICAgICAwMjAwMDAgIC8qIHJlY3YgYW55IG1zZyBl eGNlcHQgb2Ygc3BlY2lmaWVkIHR5cGUuKi8KIAogLyogb25lIG1zcWlkIHN0cnVjdHVyZSBm b3IgZWFjaCBxdWV1ZSBvbiB0aGUgc3lzdGVtICovCi1zdHJ1Y3QgbXNxaWRfZHNfYmFzZSB7 CitzdHJ1Y3QgbXNxaWRfZHNfa2VybmVsIHsKIAlzdHJ1Y3QgaXBjX3Blcm0gbXNnX3Blcm07 CiAJc3RydWN0IG1zZyAqbXNnX2ZpcnN0OwkJLyogZmlyc3QgbWVzc2FnZSBvbiBxdWV1ZSAq LwogCXN0cnVjdCBtc2cgKm1zZ19sYXN0OwkJLyogbGFzdCBtZXNzYWdlIGluIHF1ZXVlICov CiAJX19rZXJuZWxfdGltZV90IG1zZ19zdGltZTsJLyogbGFzdCBtc2dzbmQgdGltZSAqLwog CV9fa2VybmVsX3RpbWVfdCBtc2dfcnRpbWU7CS8qIGxhc3QgbXNncmN2IHRpbWUgKi8KIAlf X2tlcm5lbF90aW1lX3QgbXNnX2N0aW1lOwkvKiBsYXN0IGNoYW5nZSB0aW1lICovCi19Owot Ci0jaWZkZWYgX19LRVJORUxfXwotCi1zdHJ1Y3QgbXNxaWRfZHNfa2VybmVsIHsKLQlzdHJ1 Y3QgbXNxaWRfZHNfYmFzZSB1OwogCXN0cnVjdCB3YWl0X3F1ZXVlICp3d2FpdDsKIAlzdHJ1 Y3Qgd2FpdF9xdWV1ZSAqcndhaXQ7CiAJdW5zaWduZWQgaW50IG1zZ19jYnl0ZXM7CS8qIGN1 cnJlbnQgbnVtYmVyIG9mIGJ5dGVzIG9uIHF1ZXVlICovCiAJdW5zaWduZWQgc2hvcnQgbXNn X3FudW07CS8qIG51bWJlciBvZiBtZXNzYWdlcyBpbiBxdWV1ZSAqLwogCXVuc2lnbmVkIGlu dCBtc2dfcWJ5dGVzOwkvKiBtYXggbnVtYmVyIG9mIGJ5dGVzIG9uIHF1ZXVlICovCi0JX19r ZXJuZWxfaXBjX3BpZF90IG1zZ19sc3BpZDsJLyogcGlkIG9mIGxhc3QgbXNnc25kICovCi0J X19rZXJuZWxfaXBjX3BpZF90IG1zZ19scnBpZDsJLyogbGFzdCByZWNlaXZlIHBpZCAqLwor CV9fa2VybmVsX3BpZF90IG1zZ19sc3BpZDsJLyogcGlkIG9mIGxhc3QgbXNnc25kICovCisJ X19rZXJuZWxfcGlkX3QgbXNnX2xycGlkOwkvKiBsYXN0IHJlY2VpdmUgcGlkICovCiB9Owog Ci0jZW5kaWYKLQorLyogdW5pb25zIHVzZWQgdG8gbWFpbnRhaW4gc2l6ZSBvbiA2NCBiaXQg cGxhdGZvcm1zICovCiBzdHJ1Y3QgbXNxaWRfZHMgewotCXN0cnVjdCBtc3FpZF9kc19iYXNl IHU7Ci0JLyogdW5pb25zIHVzZWQgdG8gbWFpbnRhaW4gc2l6ZSBvbiA2NCBiaXQgcGxhdGZv cm1zICovCisJc3RydWN0IGlwY19wZXJtIG1zZ19wZXJtOworCXVuaW9uIHsgdm9pZCAqIF9f bXNnX2ZpcnN0IDsgX19rZXJuZWxfcGlkX3QgbXNnX2xzcGlkOyB9IHM7CisJdW5pb24geyB2 b2lkICogX19tc2dfbGFzdCAgOyBfX2tlcm5lbF9waWRfdCBtc2dfbHJwaWQ7IH0gcjsKKwlf X2tlcm5lbF90aW1lX3QgbXNnX3N0aW1lOwkvKiBsYXN0IG1zZ3NuZCB0aW1lICovCisJX19r ZXJuZWxfdGltZV90IG1zZ19ydGltZTsJLyogbGFzdCBtc2dyY3YgdGltZSAqLworCV9fa2Vy bmVsX3RpbWVfdCBtc2dfY3RpbWU7CS8qIGxhc3QgY2hhbmdlIHRpbWUgKi8KIAl1bmlvbiB7 IHZvaWQgKiBfX3d3YWl0IDsgdW5zaWduZWQgaW50IG1zZ19jYnl0ZXM7IH0gYzsKIAl1bmlv biB7IHZvaWQgKiBfX3J3YWl0IDsgdW5zaWduZWQgaW50IG1zZ19xYnl0ZXM7IH0gcTsKIAl1 bnNpZ25lZCBzaG9ydCBvbGRfbXNnX2NieXRlczsJLyogY3VycmVudCBudW1iZXIgb2YgYnl0 ZXMgb24gcXVldWUgKi8KIAl1bnNpZ25lZCBzaG9ydCBtc2dfcW51bTsJLyogbnVtYmVyIG9m IG1lc3NhZ2VzIGluIHF1ZXVlICovCiAJdW5zaWduZWQgc2hvcnQgb2xkX21zZ19xYnl0ZXM7 CS8qIG1heCBudW1iZXIgb2YgYnl0ZXMgb24gcXVldWUgKi8KLQlfX2tlcm5lbF9pcGNfcGlk X3QgbXNnX2xzcGlkOwkvKiBwaWQgb2YgbGFzdCBtc2dzbmQgKi8KLQlfX2tlcm5lbF9pcGNf cGlkX3QgbXNnX2xycGlkOwkvKiBsYXN0IHJlY2VpdmUgcGlkICovCisJX19rZXJuZWxfaXBj X3BpZF90IG9sZF9tc2dfbHNwaWQ7CS8qIHBpZCBvZiBsYXN0IG1zZ3NuZCAqLworCV9fa2Vy bmVsX2lwY19waWRfdCBvbGRfbXNnX2xycGlkOwkvKiBsYXN0IHJlY2VpdmUgcGlkICovCiB9 OwogCiAvKgpAQCAtNTYsMTIgKzUzLDEwIEBACiAvKiBnbGliYyA8IDIgZG9lc24ndCBoYXZl IHN5cy9tc2cuaCAtLSBkbyB3ZSBzdXBwb3J0IHRoZSB1c2Ugb2YgMi4xIGtlcm5lbCAKICAq IGhlYWRlcnMgb24gb2xkZXIgc3lzdGVtcz8KICAqLwotI2RlZmluZSBtc2dfcGVybSB1Lm1z Z19wZXJtCi0jZGVmaW5lIG1zZ19zdGltZSB1Lm1zZ19zdGltZQotI2RlZmluZSBtc2dfcnRp bWUgdS5tc2dfcnRpbWUKLSNkZWZpbmUgbXNnX2N0aW1lIHUubXNnX2N0aW1lCi0jZGVmaW5l IG1zZ19jYnl0ZXMgYy5tc2dfY2J5dGVzCi0jZGVmaW5lIG1zZ19xYnl0ZXMgcS5tc2dfcWJ5 dGVzCisjZGVmaW5lIG1zZ19sc3BpZCBvbGRfbXNnX2xzcGlkCisjZGVmaW5lIG1zZ19sc3Bp ZCBvbGRfbXNnX2xzcGlkCisjZGVmaW5lIG1zZ19jYnl0ZXMgb2xkX21zZ19jYnl0ZXMKKyNk ZWZpbmUgbXNnX3FieXRlcyBvbGRfbXNnX3FieXRlcwogI2VuZGlmCiAKIC8qIG1lc3NhZ2Ug YnVmZmVyIGZvciBtc2dzbmQgYW5kIG1zZ3JjdiBjYWxscyAqLwpkaWZmIC11ciBsaW51eC0y LjEuMTMxLWFjOS9pcGMvbXNnLmMgbGludXgvaXBjL21zZy5jCi0tLSBsaW51eC0yLjEuMTMx LWFjOS9pcGMvbXNnLmMJU2F0IERlYyAxMiAyMzoyODo0MiAxOTk4CisrKyBsaW51eC9pcGMv bXNnLmMJU3VuIERlYyAyMCAwMDozMTozMiAxOTk4CkBAIC02NywxMCArNjcsMTAgQEAKIAlt c3EgPSBtc2dxdWUgW2lkXTsKIAlpZiAobXNxID09IElQQ19VTlVTRUQgfHwgbXNxID09IElQ Q19OT0lEKQogCQlyZXR1cm4gLUVJTlZBTDsKLQlpcGNwID0gJm1zcS0+dS5tc2dfcGVybTsg CisJaXBjcCA9ICZtc3EtPm1zZ19wZXJtOyAKIAogIHNsZXB0OgotCWlmIChtc3EtPnUubXNn X3Blcm0uc2VxICE9ICh1bnNpZ25lZCBpbnQpIG1zcWlkIC8gTVNHTU5JKSAKKwlpZiAobXNx LT5tc2dfcGVybS5zZXEgIT0gKHVuc2lnbmVkIGludCkgbXNxaWQgLyBNU0dNTkkpIAogCQly ZXR1cm4gLUVJRFJNOwogCiAJaWYgKGlwY3Blcm1zKGlwY3AsIFNfSVdVR08pKSAKQEAgLTEx Miw3ICsxMTIsNyBAQAogCX0KIAkKIAlpZiAobXNncXVlW2lkXSA9PSBJUENfVU5VU0VEIHx8 IG1zZ3F1ZVtpZF0gPT0gSVBDX05PSUQKLQkJfHwgbXNxLT51Lm1zZ19wZXJtLnNlcSAhPSAo dW5zaWduZWQgaW50KSBtc3FpZCAvIE1TR01OSSkgeworCQl8fCBtc3EtPm1zZ19wZXJtLnNl cSAhPSAodW5zaWduZWQgaW50KSBtc3FpZCAvIE1TR01OSSkgewogCQllcnJvciA9IC1FSURS TTsKIAkJZ290byBmcmVlX2J1ZjsKIAl9CkBAIC0xMjIsMTggKzEyMiwxOCBAQAogCW1zZ2gt Pm1zZ190eXBlID0gbXR5cGU7CiAJbXNnaC0+bXNnX3N0aW1lID0gQ1VSUkVOVF9USU1FOwog Ci0JaWYgKCFtc3EtPnUubXNnX2ZpcnN0KQotCQltc3EtPnUubXNnX2ZpcnN0ID0gbXNxLT51 Lm1zZ19sYXN0ID0gbXNnaDsKKwlpZiAoIW1zcS0+bXNnX2ZpcnN0KQorCQltc3EtPm1zZ19m aXJzdCA9IG1zcS0+bXNnX2xhc3QgPSBtc2doOwogCWVsc2UgewotCQltc3EtPnUubXNnX2xh c3QtPm1zZ19uZXh0ID0gbXNnaDsKLQkJbXNxLT51Lm1zZ19sYXN0ID0gbXNnaDsKKwkJbXNx LT5tc2dfbGFzdC0+bXNnX25leHQgPSBtc2doOworCQltc3EtPm1zZ19sYXN0ID0gbXNnaDsK IAl9CiAJbXNxLT5tc2dfY2J5dGVzICs9IG1zZ3N6OwogCW1zZ2J5dGVzICs9IG1zZ3N6Owog CW1zZ2hkcnMrKzsKIAltc3EtPm1zZ19xbnVtKys7CiAJbXNxLT5tc2dfbHNwaWQgPSBjdXJy ZW50LT5waWQ7Ci0JbXNxLT51Lm1zZ19zdGltZSA9IENVUlJFTlRfVElNRTsKKwltc3EtPm1z Z19zdGltZSA9IENVUlJFTlRfVElNRTsKIAl3YWtlX3VwICgmbXNxLT5yd2FpdCk7CiAJcmV0 dXJuIDA7CiAKQEAgLTE1OSw3ICsxNTksNyBAQAogCW1zcSA9IG1zZ3F1ZSBbaWRdOwogCWlm IChtc3EgPT0gSVBDX05PSUQgfHwgbXNxID09IElQQ19VTlVTRUQpCiAJCXJldHVybiAtRUlO VkFMOwotCWlwY3AgPSAmbXNxLT51Lm1zZ19wZXJtOyAKKwlpcGNwID0gJm1zcS0+bXNnX3Bl cm07IAogCiAJLyogCiAJICogIGZpbmQgbWVzc2FnZSBvZiBjb3JyZWN0IHR5cGUuCkBAIC0x NjgsNyArMTY4LDcgQEAKIAkgKiAgbXNndHlwIDwgMCA9PiBnZXQgbWVzc2FnZSB3aXRoIGxl YXN0IHR5cGUgbXVzdCBiZSA8IGFicyhtc2d0eXBlKS4gIAogCSAqLwogCXdoaWxlICghbm1z ZykgewotCQlpZiAobXNxLT51Lm1zZ19wZXJtLnNlcSAhPSAodW5zaWduZWQgaW50KSBtc3Fp ZCAvIE1TR01OSSkgeworCQlpZiAobXNxLT5tc2dfcGVybS5zZXEgIT0gKHVuc2lnbmVkIGlu dCkgbXNxaWQgLyBNU0dNTkkpIHsKIAkJCXJldHVybiAtRUlEUk07CiAJCX0KIAkJaWYgKGlw Y3Blcm1zIChpcGNwLCBTX0lSVUdPKSkgewpAQCAtMTc2LDIzICsxNzYsMjMgQEAKIAkJfQog CiAJCWlmIChtc2d0eXAgPT0gMCkgCi0JCQlubXNnID0gbXNxLT51Lm1zZ19maXJzdDsKKwkJ CW5tc2cgPSBtc3EtPm1zZ19maXJzdDsKIAkJZWxzZSBpZiAobXNndHlwID4gMCkgewogCQkJ aWYgKG1zZ2ZsZyAmIE1TR19FWENFUFQpIHsgCi0JCQkJZm9yICh0bXNnID0gbXNxLT51Lm1z Z19maXJzdDsgdG1zZzsgCisJCQkJZm9yICh0bXNnID0gbXNxLT5tc2dfZmlyc3Q7IHRtc2c7 IAogCQkJCSAgICAgdG1zZyA9IHRtc2ctPm1zZ19uZXh0KQogCQkJCQlpZiAodG1zZy0+bXNn X3R5cGUgIT0gbXNndHlwKQogCQkJCQkJYnJlYWs7CiAJCQkJbm1zZyA9IHRtc2c7CiAJCQl9 IGVsc2UgewotCQkJCWZvciAodG1zZyA9IG1zcS0+dS5tc2dfZmlyc3Q7IHRtc2c7IAorCQkJ CWZvciAodG1zZyA9IG1zcS0+bXNnX2ZpcnN0OyB0bXNnOyAKIAkJCQkgICAgIHRtc2cgPSB0 bXNnLT5tc2dfbmV4dCkKIAkJCQkJaWYgKHRtc2ctPm1zZ190eXBlID09IG1zZ3R5cCkKIAkJ CQkJCWJyZWFrOwogCQkJCW5tc2cgPSB0bXNnOwogCQkJfQogCQl9IGVsc2UgewotCQkJZm9y IChsZWFzdHAgPSB0bXNnID0gbXNxLT51Lm1zZ19maXJzdDsgdG1zZzsgCisJCQlmb3IgKGxl YXN0cCA9IHRtc2cgPSBtc3EtPm1zZ19maXJzdDsgdG1zZzsgCiAJCQkgICAgIHRtc2cgPSB0 bXNnLT5tc2dfbmV4dCkgCiAJCQkJaWYgKHRtc2ctPm1zZ190eXBlIDwgbGVhc3RwLT5tc2df dHlwZSkgCiAJCQkJCWxlYXN0cCA9IHRtc2c7CkBAIC0yMDUsMjEgKzIwNSwyMSBAQAogCQkJ CXJldHVybiAtRTJCSUc7CiAJCQl9CiAJCQltc2dzeiA9IChtc2dzeiA+IG5tc2ctPm1zZ190 cyk/IG5tc2ctPm1zZ190cyA6IG1zZ3N6OwotCQkJaWYgKG5tc2cgPT0gIG1zcS0+dS5tc2df Zmlyc3QpCi0JCQkJbXNxLT51Lm1zZ19maXJzdCA9IG5tc2ctPm1zZ19uZXh0OworCQkJaWYg KG5tc2cgPT0gIG1zcS0+bXNnX2ZpcnN0KQorCQkJCW1zcS0+bXNnX2ZpcnN0ID0gbm1zZy0+ bXNnX25leHQ7CiAJCQllbHNlIHsKLQkJCQlmb3IgKHRtc2cgPSBtc3EtPnUubXNnX2ZpcnN0 OyB0bXNnOyAKKwkJCQlmb3IgKHRtc2cgPSBtc3EtPm1zZ19maXJzdDsgdG1zZzsgCiAJCQkJ ICAgICB0bXNnID0gdG1zZy0+bXNnX25leHQpCiAJCQkJCWlmICh0bXNnLT5tc2dfbmV4dCA9 PSBubXNnKSAKIAkJCQkJCWJyZWFrOwogCQkJCXRtc2ctPm1zZ19uZXh0ID0gbm1zZy0+bXNn X25leHQ7Ci0JCQkJaWYgKG5tc2cgPT0gbXNxLT51Lm1zZ19sYXN0KQotCQkJCQltc3EtPnUu bXNnX2xhc3QgPSB0bXNnOworCQkJCWlmIChubXNnID09IG1zcS0+bXNnX2xhc3QpCisJCQkJ CW1zcS0+bXNnX2xhc3QgPSB0bXNnOwogCQkJfQogCQkJaWYgKCEoLS1tc3EtPm1zZ19xbnVt KSkKLQkJCQltc3EtPnUubXNnX2xhc3QgPSBtc3EtPnUubXNnX2ZpcnN0ID0gTlVMTDsKKwkJ CQltc3EtPm1zZ19sYXN0ID0gbXNxLT5tc2dfZmlyc3QgPSBOVUxMOwogCQkJCi0JCQltc3Et PnUubXNnX3J0aW1lID0gQ1VSUkVOVF9USU1FOworCQkJbXNxLT5tc2dfcnRpbWUgPSBDVVJS RU5UX1RJTUU7CiAJCQltc3EtPm1zZ19scnBpZCA9IGN1cnJlbnQtPnBpZDsKIAkJCW1zZ2J5 dGVzIC09IG5tc2ctPm1zZ190czsgCiAJCQltc2doZHJzLS07IApAQCAtMjc2LDcgKzI3Niw3 IEBACiAJCQlpbnRlcnJ1cHRpYmxlX3NsZWVwX29uICgmbXNnX2xvY2spOwogCQlpZiAobXNx ID09IElQQ19VTlVTRUQpCiAJCQljb250aW51ZTsKLQkJaWYgKGtleSA9PSBtc3EtPnUubXNn X3Blcm0ua2V5KQorCQlpZiAoa2V5ID09IG1zcS0+bXNnX3Blcm0ua2V5KQogCQkJcmV0dXJu IGlkOwogCX0KIAlyZXR1cm4gLTE7CkBAIC0zMDIsMjUgKzMwMiwyNSBAQAogCQl3YWtlX3Vw ICgmbXNnX2xvY2spOwogCQlyZXR1cm4gLUVOT01FTTsKIAl9Ci0JaXBjcCA9ICZtc3EtPnUu bXNnX3Blcm07CisJaXBjcCA9ICZtc3EtPm1zZ19wZXJtOwogCWlwY3AtPm1vZGUgPSAobXNn ZmxnICYgU19JUldYVUdPKTsKIAlpcGNwLT5rZXkgPSBrZXk7CiAJaXBjcC0+Y3VpZCA9IGlw Y3AtPnVpZCA9IGN1cnJlbnQtPmV1aWQ7CiAJaXBjcC0+Z2lkID0gaXBjcC0+Y2dpZCA9IGN1 cnJlbnQtPmVnaWQ7Ci0JbXNxLT51Lm1zZ19wZXJtLnNlcSA9IG1zZ19zZXE7Ci0JbXNxLT51 Lm1zZ19maXJzdCA9IG1zcS0+dS5tc2dfbGFzdCA9IE5VTEw7CisJbXNxLT5tc2dfcGVybS5z ZXEgPSBtc2dfc2VxOworCW1zcS0+bXNnX2ZpcnN0ID0gbXNxLT5tc2dfbGFzdCA9IE5VTEw7 CiAJbXNxLT5yd2FpdCA9IG1zcS0+d3dhaXQgPSBOVUxMOwogCW1zcS0+bXNnX2NieXRlcyA9 IG1zcS0+bXNnX3FudW0gPSAwOwogCW1zcS0+bXNnX2xzcGlkID0gbXNxLT5tc2dfbHJwaWQg PSAwOwotCW1zcS0+dS5tc2dfc3RpbWUgPSBtc3EtPnUubXNnX3J0aW1lID0gMDsKKwltc3Et Pm1zZ19zdGltZSA9IG1zcS0+bXNnX3J0aW1lID0gMDsKIAltc3EtPm1zZ19xYnl0ZXMgPSBt c2dtbmI7Ci0JbXNxLT51Lm1zZ19jdGltZSA9IENVUlJFTlRfVElNRTsKKwltc3EtPm1zZ19j dGltZSA9IENVUlJFTlRfVElNRTsKIAlpZiAoaWQgPiBtYXhfbXNxaWQpCiAJCW1heF9tc3Fp ZCA9IGlkOwogCW1zZ3F1ZVtpZF0gPSBtc3E7CiAJdXNlZF9xdWV1ZXMrKzsKIAl3YWtlX3Vw ICgmbXNnX2xvY2spOwotCXJldHVybiAodW5zaWduZWQgaW50KSBtc3EtPnUubXNnX3Blcm0u c2VxICogTVNHTU5JICsgaWQ7CisJcmV0dXJuICh1bnNpZ25lZCBpbnQpIG1zcS0+bXNnX3Bl cm0uc2VxICogTVNHTU5JICsgaWQ7CiB9CiAKIGFzbWxpbmthZ2UgaW50IHN5c19tc2dnZXQg KGtleV90IGtleSwgaW50IG1zZ2ZsZykKQEAgLTM0MiwxMCArMzQyLDEwIEBACiAJCW1zcSA9 IG1zZ3F1ZVtpZF07CiAJCWlmIChtc3EgPT0gSVBDX1VOVVNFRCB8fCBtc3EgPT0gSVBDX05P SUQpCiAJCQlyZXQgPSAtRUlEUk07Ci0JCWVsc2UgaWYgKGlwY3Blcm1zKCZtc3EtPnUubXNn X3Blcm0sIG1zZ2ZsZykpCisJCWVsc2UgaWYgKGlwY3Blcm1zKCZtc3EtPm1zZ19wZXJtLCBt c2dmbGcpKQogCQkJcmV0ID0gLUVBQ0NFUzsKIAkJZWxzZQotCQkJcmV0ID0gKHVuc2lnbmVk IGludCkgbXNxLT51Lm1zZ19wZXJtLnNlcSAqIE1TR01OSSArIGlkOworCQkJcmV0ID0gKHVu c2lnbmVkIGludCkgbXNxLT5tc2dfcGVybS5zZXEgKiBNU0dNTkkgKyBpZDsKIAl9CiAJdW5s b2NrX2tlcm5lbCgpOwogCXJldHVybiByZXQ7CkBAIC0zNTYsNyArMzU2LDcgQEAKIAlzdHJ1 Y3QgbXNxaWRfZHNfa2VybmVsICptc3EgPSBtc2dxdWVbaWRdOwogCXN0cnVjdCBtc2cgKm1z Z3AsICptc2doOwogCi0JbXNxLT51Lm1zZ19wZXJtLnNlcSsrOworCW1zcS0+bXNnX3Blcm0u c2VxKys7CiAJbXNnX3NlcSA9IChtc2dfc2VxKzEpICUgKCh1bnNpZ25lZCkoMTw8MzEpL01T R01OSSk7IC8qIGluY3JlbWVudCwgYnV0IGF2b2lkIG92ZXJmbG93ICovCiAJbXNnYnl0ZXMg LT0gbXNxLT5tc2dfY2J5dGVzOwogCWlmIChpZCA9PSBtYXhfbXNxaWQpCkBAIC0zNjgsNyAr MzY4LDcgQEAKIAkJd2FrZV91cCAoJm1zcS0+d3dhaXQpOwogCQlzY2hlZHVsZSgpOyAKIAl9 Ci0JZm9yIChtc2dwID0gbXNxLT51Lm1zZ19maXJzdDsgbXNncDsgbXNncCA9IG1zZ2ggKSB7 CisJZm9yIChtc2dwID0gbXNxLT5tc2dfZmlyc3Q7IG1zZ3A7IG1zZ3AgPSBtc2doICkgewog CQltc2doID0gbXNncC0+bXNnX25leHQ7CiAJCW1zZ2hkcnMtLTsKIAkJaWYgKG1zZ3AtPm1z Z190cyA+PSBNU0dNQVgpCkBAIC0zNzgsNyArMzc4LDcgQEAKIAlrZnJlZShtc3EpOwogfQog Ci1hc21saW5rYWdlIGludCBzeXNfbXNnY3RsIChpbnQgbXNxaWQsIGludCBjbWQsIHN0cnVj dCBtc3FpZF9kcyAqYnVmKQorc3RhdGljIGludCByZWFsX21zZ2N0bCAoaW50IG1zcWlkLCBp bnQgY21kLCBzdHJ1Y3QgbXNxaWRfZHMgKmJ1ZiwgaW50IG1zZ2N0bDMyKQogewogCWludCBp ZCwgZXJyID0gLUVJTlZBTDsKIAlzdHJ1Y3QgbXNxaWRfZHNfa2VybmVsICptc3E7CkBAIC00 MzAsMjAgKzQzMCwyMiBAQAogCQlpZiAobXNxID09IElQQ19VTlVTRUQgfHwgbXNxID09IElQ Q19OT0lEKQogCQkJZ290byBvdXQ7CiAJCWVyciA9IC1FQUNDRVM7Ci0JCWlmIChpcGNwZXJt cyAoJm1zcS0+dS5tc2dfcGVybSwgU19JUlVHTykpCisJCWlmIChpcGNwZXJtcyAoJm1zcS0+ bXNnX3Blcm0sIFNfSVJVR08pKQogCQkJZ290byBvdXQ7Ci0JCWlkID0gKHVuc2lnbmVkIGlu dCkgbXNxLT51Lm1zZ19wZXJtLnNlcSAqIE1TR01OSSArIG1zcWlkOwotCQl0YnVmLnUubXNn X3Blcm0gICA9IG1zcS0+dS5tc2dfcGVybTsKLQkJdGJ1Zi51Lm1zZ19zdGltZSAgPSBtc3Et PnUubXNnX3N0aW1lOwotCQl0YnVmLnUubXNnX3J0aW1lICA9IG1zcS0+dS5tc2dfcnRpbWU7 Ci0JCXRidWYudS5tc2dfY3RpbWUgID0gbXNxLT51Lm1zZ19jdGltZTsKKwkJaWQgPSAodW5z aWduZWQgaW50KSBtc3EtPm1zZ19wZXJtLnNlcSAqIE1TR01OSSArIG1zcWlkOworCQl0YnVm Lm1zZ19wZXJtICAgPSBtc3EtPm1zZ19wZXJtOworCQl0YnVmLm1zZ19zdGltZSAgPSBtc3Et Pm1zZ19zdGltZTsKKwkJdGJ1Zi5tc2dfcnRpbWUgID0gbXNxLT5tc2dfcnRpbWU7CisJCXRi dWYubXNnX2N0aW1lICA9IG1zcS0+bXNnX2N0aW1lOwogCQl0YnVmLmMubXNnX2NieXRlcyA9 IG1zcS0+bXNnX2NieXRlczsKIAkJdGJ1Zi5xLm1zZ19xYnl0ZXMgPSBtc3EtPm1zZ19xYnl0 ZXM7CiAJCXRidWYub2xkX21zZ19jYnl0ZXMgPSAodW5zaWduZWQgc2hvcnQpbXNxLT5tc2df Y2J5dGVzOwogCQl0YnVmLm1zZ19xbnVtICAgPSBtc3EtPm1zZ19xbnVtOwogCQl0YnVmLm9s ZF9tc2dfcWJ5dGVzID0gKHVuc2lnbmVkIHNob3J0KW1zcS0+bXNnX3FieXRlczsKLQkJdGJ1 Zi5tc2dfbHNwaWQgID0gbXNxLT5tc2dfbHNwaWQ7Ci0JCXRidWYubXNnX2xycGlkICA9IG1z cS0+bXNnX2xycGlkOworCQl0YnVmLnMubXNnX2xzcGlkICA9IG1zcS0+bXNnX2xzcGlkOwor CQl0YnVmLnIubXNnX2xycGlkICA9IG1zcS0+bXNnX2xycGlkOworCQl0YnVmLm9sZF9tc2df bHNwaWQgID0gKF9fa2VybmVsX2lwY19waWRfdCltc3EtPm1zZ19sc3BpZDsKKwkJdGJ1Zi5v bGRfbXNnX2xycGlkICA9IChfX2tlcm5lbF9pcGNfcGlkX3QpbXNxLT5tc2dfbHJwaWQ7CiAJ CWVyciA9IC1FRkFVTFQ7CiAJCWlmIChjb3B5X3RvX3VzZXIgKGJ1ZiwgJnRidWYsIHNpemVv ZigqYnVmKSkpCiAJCQlnb3RvIG91dDsgCkBAIC00NjgsMjYgKzQ3MCwyOCBAQAogCWlmICht c3EgPT0gSVBDX1VOVVNFRCB8fCBtc3EgPT0gSVBDX05PSUQpCiAJCWdvdG8gb3V0OwogCWVy ciA9IC1FSURSTTsKLQlpZiAobXNxLT51Lm1zZ19wZXJtLnNlcSAhPSAodW5zaWduZWQgaW50 KSBtc3FpZCAvIE1TR01OSSkKKwlpZiAobXNxLT5tc2dfcGVybS5zZXEgIT0gKHVuc2lnbmVk IGludCkgbXNxaWQgLyBNU0dNTkkpCiAJCWdvdG8gb3V0OwotCWlwY3AgPSAmbXNxLT51Lm1z Z19wZXJtOworCWlwY3AgPSAmbXNxLT5tc2dfcGVybTsKIAogCXN3aXRjaCAoY21kKSB7CiAJ Y2FzZSBJUENfU1RBVDoKIAkJZXJyID0gLUVBQ0NFUzsKIAkJaWYgKGlwY3Blcm1zIChpcGNw LCBTX0lSVUdPKSkKIAkJCWdvdG8gb3V0OwotCQl0YnVmLnUubXNnX3Blcm0gICA9IG1zcS0+ dS5tc2dfcGVybTsKLQkJdGJ1Zi51Lm1zZ19zdGltZSAgPSBtc3EtPnUubXNnX3N0aW1lOwot CQl0YnVmLnUubXNnX3J0aW1lICA9IG1zcS0+dS5tc2dfcnRpbWU7Ci0JCXRidWYudS5tc2df Y3RpbWUgID0gbXNxLT51Lm1zZ19jdGltZTsKKwkJdGJ1Zi5tc2dfcGVybSAgID0gbXNxLT5t c2dfcGVybTsKKwkJdGJ1Zi5tc2dfc3RpbWUgID0gbXNxLT5tc2dfc3RpbWU7CisJCXRidWYu bXNnX3J0aW1lICA9IG1zcS0+bXNnX3J0aW1lOworCQl0YnVmLm1zZ19jdGltZSAgPSBtc3Et Pm1zZ19jdGltZTsKIAkJdGJ1Zi5jLm1zZ19jYnl0ZXMgPSBtc3EtPm1zZ19jYnl0ZXM7CiAJ CXRidWYucS5tc2dfcWJ5dGVzID0gbXNxLT5tc2dfcWJ5dGVzOwogCQl0YnVmLm9sZF9tc2df Y2J5dGVzID0gKHVuc2lnbmVkIHNob3J0KW1zcS0+bXNnX2NieXRlczsKIAkJdGJ1Zi5tc2df cW51bSAgID0gbXNxLT5tc2dfcW51bTsKIAkJdGJ1Zi5vbGRfbXNnX3FieXRlcyA9ICh1bnNp Z25lZCBzaG9ydCltc3EtPm1zZ19xYnl0ZXM7Ci0JCXRidWYubXNnX2xzcGlkICA9IG1zcS0+ bXNnX2xzcGlkOwotCQl0YnVmLm1zZ19scnBpZCAgPSBtc3EtPm1zZ19scnBpZDsKKwkJdGJ1 Zi5zLm1zZ19sc3BpZCAgPSBtc3EtPm1zZ19sc3BpZDsKKwkJdGJ1Zi5yLm1zZ19scnBpZCAg PSBtc3EtPm1zZ19scnBpZDsKKwkJdGJ1Zi5vbGRfbXNnX2xzcGlkICA9IChfX2tlcm5lbF9p cGNfcGlkX3QpbXNxLT5tc2dfbHNwaWQ7CisJCXRidWYub2xkX21zZ19scnBpZCAgPSAoX19r ZXJuZWxfaXBjX3BpZF90KW1zcS0+bXNnX2xycGlkOwogCQllcnIgPSAtRUZBVUxUOwogCQlp ZiAoIWNvcHlfdG9fdXNlciAoYnVmLCAmdGJ1Ziwgc2l6ZW9mICgqYnVmKSkpCiAJCQllcnIg PSAwOwpAQCAtNDk4LDE4ICs1MDIsMTggQEAKIAkJICAgIGN1cnJlbnQtPmV1aWQgIT0gaXBj cC0+dWlkICYmICFjYXBhYmxlKENBUF9TWVNfQURNSU4pKQogCQkgICAgLyogV2UgX2NvdWxk XyBjaGVjayBmb3IgQ0FQX0NIT1dOIGFib3ZlLCBidXQgd2UgZG9uJ3QgKi8KIAkJCWdvdG8g b3V0OwotCQlpZiAodGJ1Zi5vbGRfbXNnX3FieXRlcyA9PSAwKQorCQlpZiAobXNnY3RsMzIp CiAJCQltc2dfcWJ5dGVzID0gdGJ1Zi5xLm1zZ19xYnl0ZXM7CiAJCWVsc2UKIAkJCW1zZ19x Ynl0ZXMgPSB0YnVmLm9sZF9tc2dfcWJ5dGVzOwogCQlpZiAobXNnX3FieXRlcyA+IG1zZ21u YiAmJiAhY2FwYWJsZShDQVBfU1lTX1JFU09VUkNFKSkKIAkJCWdvdG8gb3V0OwogCQltc3Et Pm1zZ19xYnl0ZXMgPSBtc2dfcWJ5dGVzOwotCQlpcGNwLT51aWQgPSB0YnVmLnUubXNnX3Bl cm0udWlkOwotCQlpcGNwLT5naWQgPSB0YnVmLnUubXNnX3Blcm0uZ2lkOworCQlpcGNwLT51 aWQgPSB0YnVmLm1zZ19wZXJtLnVpZDsKKwkJaXBjcC0+Z2lkID0gdGJ1Zi5tc2dfcGVybS5n aWQ7CiAJCWlwY3AtPm1vZGUgPSAoaXBjcC0+bW9kZSAmIH5TX0lSV1hVR08pIHwgCi0JCQko U19JUldYVUdPICYgdGJ1Zi51Lm1zZ19wZXJtLm1vZGUpOwotCQltc3EtPnUubXNnX2N0aW1l ID0gQ1VSUkVOVF9USU1FOworCQkJKFNfSVJXWFVHTyAmIHRidWYubXNnX3Blcm0ubW9kZSk7 CisJCW1zcS0+bXNnX2N0aW1lID0gQ1VSUkVOVF9USU1FOwogCQllcnIgPSAwOwogCQlnb3Rv IG91dDsKIAljYXNlIElQQ19STUlEOgpAQCAtNTMwLDMgKzUzNCwxMiBAQAogCXJldHVybiBl cnI7CiB9CiAKK2FzbWxpbmthZ2UgaW50IHN5c19tc2djdGwgKGludCBtc3FpZCwgaW50IGNt ZCwgc3RydWN0IG1zcWlkX2RzICpidWYpCit7CisJcmV0dXJuIHJlYWxfbXNnY3RsIChtc3Fp ZCwgY21kLCBidWYsIDApOworfQorCithc21saW5rYWdlIGludCBzeXNfbXNnY3RsMzIgKGlu dCBtc3FpZCwgaW50IGNtZCwgc3RydWN0IG1zcWlkX2RzICpidWYpCit7CisJcmV0dXJuIHJl YWxfbXNnY3RsIChtc3FpZCwgY21kLCBidWYsIDEpOworfQo=

-----

- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.tux.org/lkml/