lkml.org 
[lkml]   [1998]   [Dec]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
From
Subjectlarge message queue patches
Date
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/

\
 
 \ /
  Last update: 2005-03-22 13:46    [W:0.056 / U:0.056 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site