[PATCH] scsi uodate to remove io_request_lock

Evgeniy Polyakov (johnpol@2ka.mipt.ru)
Mon, 28 Jan 2002 07:33:57 +0300


This is a multi-part message in MIME format.

--Multipart_Mon__28_Jan_2002_07:33:57_+0300_082a52f8
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit

Hello, Jens Axboe, Linus Torvalds and other linux kernel hackers.

Here is patch against 2.5.3-pre5 which removes io_request_lock.
But unfortunnually here is 1 file (drivers/scsi/3w-xxxx.c),
which still use spinning locks with io_request_lock because of detect()
method, in which we cann't send Scsi_Host pointer. So this file must be
corrected in some other way.

Also ./drivers/mtd/mtdblock_ro.c file still use this lock.

So, please check and apply.

Thanks in advance for answers and suggestions.

Evgeniy Polyakov ( s0mbre ).

--Multipart_Mon__28_Jan_2002_07:33:57_+0300_082a52f8
Content-Type: application/octet-stream;
name="scsi.diff"
Content-Disposition: attachment;
filename="scsi.diff"
Content-Transfer-Encoding: base64

T25seSBpbiAuL2xpbnV4L2RyaXZlcnMvc2NzaS86IC5kZXBlbmQKZGlmZiAtdXIgLi9saW51eC5v
cmlnL2RyaXZlcnMvc2NzaS8zdy14eHh4LmMgLi9saW51eC9kcml2ZXJzL3Njc2kvM3cteHh4eC5j
Ci0tLSAuL2xpbnV4Lm9yaWcvZHJpdmVycy9zY3NpLzN3LXh4eHguYwlTYXQgTm92IDEwIDAxOjA1
OjAyIDIwMDEKKysrIC4vbGludXgvZHJpdmVycy9zY3NpLzN3LXh4eHguYwlNb24gSmFuIDI4IDA2
OjQzOjMwIDIwMDIKQEAgLTEzMjYsNyArMTMyNiw3IEBACiAJVFdfQ29tbWFuZCAqY29tbWFuZF9w
YWNrZXQ7CiAJaWYgKHRlc3RfYW5kX3NldF9iaXQoVFdfSU5fSU5UUiwgJnR3X2Rldi0+ZmxhZ3Mp
KQogCQlyZXR1cm47Ci0Jc3Bpbl9sb2NrX2lycXNhdmUoJmlvX3JlcXVlc3RfbG9jaywgZmxhZ3Mp
OworCXNwaW5fbG9ja19pcnFzYXZlKCZ0d19kZXYtPmhvc3QtPmhvc3RfbG9jaywgZmxhZ3MpOwog
CiAJaWYgKHR3X2Rldi0+dHdfcGNpX2Rldi0+aXJxID09IGlycSkgewogCQlzcGluX2xvY2soJnR3
X2Rldi0+dHdfbG9jayk7CkBAIC0xNDc1LDcgKzE0NzUsNyBAQAogCQl9CiAJCXNwaW5fdW5sb2Nr
KCZ0d19kZXYtPnR3X2xvY2spOwogCX0KLQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZpb19yZXF1
ZXN0X2xvY2ssIGZsYWdzKTsKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZ0d19kZXYtPmhvc3Qt
Pmhvc3RfbG9jaywgZmxhZ3MpOwogCWNsZWFyX2JpdChUV19JTl9JTlRSLCAmdHdfZGV2LT5mbGFn
cyk7CiB9CS8qIEVuZCB0d19pbnRlcnJ1cHQoKSAqLwogCkBAIC0xOTI5LDkgKzE5MjksOSBAQAog
CX0KIAogCS8qIFdlIGhhdmUgdG8gbGV0IEFFTiByZXF1ZXN0cyB0aHJvdWdoIGJlZm9yZSB0aGUg
cmVzZXQgKi8KLQlzcGluX3VubG9ja19pcnEoJmlvX3JlcXVlc3RfbG9jayk7CisJc3Bpbl91bmxv
Y2tfaXJxKCZ0d19kZXYtPmhvc3QtPmhvc3RfbG9jayk7CiAJbWRlbGF5KFRXX0FFTl9XQUlUX1RJ
TUUpOwotCXNwaW5fbG9ja19pcnEoJmlvX3JlcXVlc3RfbG9jayk7CisJc3Bpbl9sb2NrX2lycSgm
dHdfZGV2LT5ob3N0LT5ob3N0X2xvY2spOwogCiAJc3Bpbl9sb2NrKCZ0d19kZXYtPnR3X2xvY2sp
OwogCXR3X2Rldi0+bnVtX2Fib3J0cysrOwpAQCAtMTk5Myw5ICsxOTkzLDkgQEAKIAl9CiAKIAkv
KiBXZSBoYXZlIHRvIGxldCBBRU4gcmVxdWVzdHMgdGhyb3VnaCBiZWZvcmUgdGhlIHJlc2V0ICov
Ci0Jc3Bpbl91bmxvY2tfaXJxKCZpb19yZXF1ZXN0X2xvY2spOworCXNwaW5fdW5sb2NrX2lycSgm
dHdfZGV2LT5ob3N0LT5ob3N0X2xvY2spOwogCW1kZWxheShUV19BRU5fV0FJVF9USU1FKTsKLQlz
cGluX2xvY2tfaXJxKCZpb19yZXF1ZXN0X2xvY2spOworCXNwaW5fbG9ja19pcnEoJnR3X2Rldi0+
aG9zdC0+aG9zdF9sb2NrKTsKIAogCXNwaW5fbG9jaygmdHdfZGV2LT50d19sb2NrKTsKIAl0d19k
ZXYtPm51bV9yZXNldHMrKzsKT25seSBpbiAuL2xpbnV4L2RyaXZlcnMvc2NzaS86IDN3LXh4eHgu
Y34KZGlmZiAtdXIgLi9saW51eC5vcmlnL2RyaXZlcnMvc2NzaS81M2M3LDh4eC5jIC4vbGludXgv
ZHJpdmVycy9zY3NpLzUzYzcsOHh4LmMKLS0tIC4vbGludXgub3JpZy9kcml2ZXJzL3Njc2kvNTNj
Nyw4eHguYwlUdWUgTm92IDI3IDAxOjIzOjU4IDIwMDEKKysrIC4vbGludXgvZHJpdmVycy9zY3Np
LzUzYzcsOHh4LmMJTW9uIEphbiAyOCAwNTo0MTo1NyAyMDAyCkBAIC0xMTA4LDkgKzExMDgsOSBA
QAogCiAgICAgaWYgKCFzZWFyY2gpIHsKICNpZmRlZiBfX3Bvd2VycGNfXwotCWlmIChyZXF1ZXN0
X2lycShob3N0LT5pcnEsIGRvX05DUjUzYzd4MF9pbnRyLCBTQV9TSElSUSwgIjUzYzcsOHh4Iiwg
TlVMTCkpIAorCWlmIChyZXF1ZXN0X2lycShob3N0LT5pcnEsIGRvX05DUjUzYzd4MF9pbnRyLCBT
QV9TSElSUSwgIjUzYzcsOHh4IiwgaG9zdCkpIAogI2Vsc2UKLQlpZiAocmVxdWVzdF9pcnEoaG9z
dC0+aXJxLCBkb19OQ1I1M2M3eDBfaW50ciwgU0FfSU5URVJSVVBULCAiNTNjNyw4eHgiLCBOVUxM
KSkKKwlpZiAocmVxdWVzdF9pcnEoaG9zdC0+aXJxLCBkb19OQ1I1M2M3eDBfaW50ciwgU0FfSU5U
RVJSVVBULCAiNTNjNyw4eHgiLCBob3N0KSkKICNlbmRpZgogCSAgewogCSAgCkBAIC00MzYwLDkg
KzQzNjAsMTEgQEAKIGRvX05DUjUzYzd4MF9pbnRyKGludCBpcnEsIHZvaWQgKmRldl9pZCwgc3Ry
dWN0IHB0X3JlZ3MgKiByZWdzKSB7CiAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKIAotICAgIHNw
aW5fbG9ja19pcnFzYXZlKCZpb19yZXF1ZXN0X2xvY2ssIGZsYWdzKTsKKyAgICBzdHJ1Y3QgU2Nz
aV9Ib3N0ICpkZXYgPSBkZXZfaWQ7CisgICAgCisgICAgc3Bpbl9sb2NrX2lycXNhdmUoJmRldi0+
aG9zdF9sb2NrLCBmbGFncyk7CiAgICAgTkNSNTNjN3gwX2ludHIoaXJxLCBkZXZfaWQsIHJlZ3Mp
OwotICAgIHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmlvX3JlcXVlc3RfbG9jaywgZmxhZ3MpOwor
ICAgIHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmRldi0+aG9zdF9sb2NrLCBmbGFncyk7CiB9CiAK
IC8qCk9ubHkgaW4gLi9saW51eC9kcml2ZXJzL3Njc2kvOiA1M2M3LDh4eC5jfgpkaWZmIC11ciAu
L2xpbnV4Lm9yaWcvZHJpdmVycy9zY3NpLzUzYzcwMC5jIC4vbGludXgvZHJpdmVycy9zY3NpLzUz
YzcwMC5jCi0tLSAuL2xpbnV4Lm9yaWcvZHJpdmVycy9zY3NpLzUzYzcwMC5jCVdlZCBOb3YgMjgg
MjE6MjI6MjcgMjAwMQorKysgLi9saW51eC9kcml2ZXJzL3Njc2kvNTNjNzAwLmMJTW9uIEphbiAy
OCAwNjo0NzowNiAyMDAyCkBAIC0xNTA4LDE4ICsxNTA4LDcgQEAKIAlfX3U4IHB1biA9IDB4ZmYs
IGx1biA9IDB4ZmY7CiAJdW5zaWduZWQgbG9uZyBmbGFnczsKIAotCS8qIFVuZm9ydHVuYXRlbHks
IHdlIGhhdmUgdG8gdGFrZSB0aGUgaW9fcmVxdWVzdF9sb2NrIGhlcmUKLQkgKiByYXRoZXIgdGhh
biB0aGUgaG9zdCBsb2NrIGhvc3RkYXRhLT5sb2NrIGJlY2F1c2Ugd2UncmUKLQkgKiBsb29raW5n
IHRvIGV4Y2x1ZGUgcXVldWVjb21tYW5kIGZyb20gbWVzc2luZyB3aXRoIHRoZQotCSAqIHJlZ2lz
dGVycyB3aGlsZSB3ZSdyZSBwcm9jZXNzaW5nIHRoZSBpbnRlcnJ1cHQuICBTaW5jZQotCSAqIHF1
ZXVlY29tbWFuZCBpcyBjYWxsZWQgaG9sZGluZyBpb19yZXF1ZXN0X2xvY2ssIGFuZCB3ZSBoYXZl
Ci0JICogdG8gdGFrZSBpb19yZXF1ZXN0X2xvY2sgYmVmb3JlIHdlIGNhbGwgdGhlIGNvbW1hbmQK
LQkgKiBzY3NpX2RvbmUsIHdlIHdvdWxkIGdldCBhIGRlYWRsb2NrIGlmIHdlIHRvb2sKLQkgKiBo
b3N0ZGF0YS0+bG9jayBoZXJlIGFuZCBpbiBxdWV1ZWNvbW1hbmQgKGJlY2F1c2UgdGhlIG9yZGVy
Ci0JICogb2YgbG9ja2luZyBpbiBxdWV1ZWNvbW1hbmQ6IDEpIGlvX3JlcXVlc3RfbG9jayB0aGVu
IDIpCi0JICogaG9zdGRhdGEtPmxvY2sgd291bGQgYmUgdGhlIHJldmVyc2Ugb2YgdGFraW5nIGl0
IGluIHRoaXMKLQkgKiByb3V0aW5lICovCi0Jc3Bpbl9sb2NrX2lycXNhdmUoJmlvX3JlcXVlc3Rf
bG9jaywgZmxhZ3MpOworCXNwaW5fbG9ja19pcnFzYXZlKCZob3N0LT5ob3N0X2xvY2ssIGZsYWdz
KTsKIAlpZigoaXN0YXQgPSBOQ1JfNzAwX3JlYWRiKGhvc3QsIElTVEFUX1JFRykpCiAJICAgICAg
JiAoU0NTSV9JTlRfUEVORElORyB8IERNQV9JTlRfUEVORElORykpIHsKIAkJX191MzIgZHNwczsK
QEAgLTE3NjQsNyArMTc1Myw3IEBACiAJCX0KIAl9CiAgb3V0X3VubG9jazoKLQlzcGluX3VubG9j
a19pcnFyZXN0b3JlKCZpb19yZXF1ZXN0X2xvY2ssIGZsYWdzKTsKKwlzcGluX3VubG9ja19pcnFy
ZXN0b3JlKCZob3N0LT5ob3N0X2xvY2ssIGZsYWdzKTsKIH0KIAogLyogRklYTUU6IE5lZWQgdG8g
cHV0IHNvbWUgcHJvYyBpbmZvcm1hdGlvbiBpbiBhbmQgcGx1bWIgaXQKT25seSBpbiAuL2xpbnV4
L2RyaXZlcnMvc2NzaS86IDUzYzcwMC5jfgpkaWZmIC11ciAuL2xpbnV4Lm9yaWcvZHJpdmVycy9z
Y3NpL0FNNTNDOTc0LmMgLi9saW51eC9kcml2ZXJzL3Njc2kvQU01M0M5NzQuYwotLS0gLi9saW51
eC5vcmlnL2RyaXZlcnMvc2NzaS9BTTUzQzk3NC5jCVN1biBTZXAgMzAgMjM6MjY6MDcgMjAwMQor
KysgLi9saW51eC9kcml2ZXJzL3Njc2kvQU01M0M5NzQuYwlNb24gSmFuIDI4IDA1OjU0OjA4IDIw
MDIKQEAgLTEwMjEsMTAgKzEwMjEsMTEgQEAKIHN0YXRpYyB2b2lkIGRvX0FNNTNDOTc0X2ludHIo
aW50IGlycSwgdm9pZCAqZGV2X2lkLCBzdHJ1Y3QgcHRfcmVncyAqcmVncykKIHsKIAl1bnNpZ25l
ZCBsb25nIGZsYWdzOwotCi0Jc3Bpbl9sb2NrX2lycXNhdmUoJmlvX3JlcXVlc3RfbG9jaywgZmxh
Z3MpOworCXN0cnVjdCBTY3NpX0hvc3QgKmRldiA9IGRldl9pZDsKKwkKKwlzcGluX2xvY2tfaXJx
c2F2ZSgmZGV2LT5ocHN0X2xvY2ssIGZsYWdzKTsKIAlBTTUzQzk3NF9pbnRyKGlycSwgZGV2X2lk
LCByZWdzKTsKLQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZpb19yZXF1ZXN0X2xvY2ssIGZsYWdz
KTsKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZkZXYtPmhvc3RfbG9jaywgZmxhZ3MpOwogfQog
CiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqCk9ubHkgaW4gLi9saW51eC9kcml2ZXJzL3Njc2kvOiBBTTUzQzk3
NC5jfgpkaWZmIC11ciAuL2xpbnV4Lm9yaWcvZHJpdmVycy9zY3NpL05DUjUzODAuYyAuL2xpbnV4
L2RyaXZlcnMvc2NzaS9OQ1I1MzgwLmMKLS0tIC4vbGludXgub3JpZy9kcml2ZXJzL3Njc2kvTkNS
NTM4MC5jCVNhdCBGZWIgMTcgMDM6MDI6MzYgMjAwMQorKysgLi9saW51eC9kcml2ZXJzL3Njc2kv
TkNSNTM4MC5jCU1vbiBKYW4gMjggMDU6MjU6MzYgMjAwMgpAQCAtNjkyLDkgKzY5Miw5IEBACiAJ
fQogCXJlc3RvcmVfZmxhZ3MoZmxhZ3MpOwogCi0Jc3Bpbl9sb2NrX2lycXNhdmUoJmlvX3JlcXVl
c3RfbG9jaywgZmxhZ3MpOworCXNwaW5fbG9ja19pcnFzYXZlKCZpbnN0YW5jZS0+aG9zdF9sb2Nr
LCBmbGFncyk7CiAJcnVuX21haW4oKTsKLQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZpb19yZXF1
ZXN0X2xvY2ssIGZsYWdzKTsKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZpbnN0YW5jZS0+aG9z
dF9sb2NrLCBmbGFncyk7CiB9CiAjZW5kaWYJCQkJLyogZGVmIFVTTEVFUCAqLwogCkBAIC03NDUs
NyArNzQ1LDcgQEAKIAlOQ1I1MzgwX3NldHVwKGluc3RhbmNlKTsKIAogCWZvciAodHJ5aW5nX2ly
cXMgPSBpID0gMCwgbWFzayA9IDE7IGkgPCAxNjsgKytpLCBtYXNrIDw8PSAxKQotCQlpZiAoKG1h
c2sgJiBwb3NzaWJsZSkgJiYgKHJlcXVlc3RfaXJxKGksICZwcm9iZV9pbnRyLCBTQV9JTlRFUlJV
UFQsICJOQ1ItcHJvYmUiLCBOVUxMKQorCQlpZiAoKG1hc2sgJiBwb3NzaWJsZSkgJiYgKHJlcXVl
c3RfaXJxKGksICZwcm9iZV9pbnRyLCBTQV9JTlRFUlJVUFQsICJOQ1ItcHJvYmUiLCBpbnN0YW5j
ZSkKIAkJCQkJICA9PSAwKSkKIAkJCXRyeWluZ19pcnFzIHw9IG1hc2s7CiAKQEAgLTEyNzEsNyAr
MTI3MSw3IEBACiAJICogdGhpcyBzaG91bGQgcHJldmVudCBhbnkgcmFjZSBjb25kaXRpb25zLgog
CSAqLwogCi0Jc3Bpbl91bmxvY2tfaXJxKCZpb19yZXF1ZXN0X2xvY2spOworCXNwaW5fdW5sb2Nr
X2lycSgmaW5zdGFuY2UtPmhvc3RfbG9jayk7CiAJCiAJc2F2ZV9mbGFncyhmbGFncyk7CiAJCkBA
IC0xNDI0LDcgKzE0MjQsNyBAQAogCQkJCWJyZWFrOwogCQl9CQkvKiBmb3IgaW5zdGFuY2UgKi8K
IAl9IHdoaWxlICghZG9uZSk7Ci0Jc3Bpbl9sb2NrX2lycSgmaW9fcmVxdWVzdF9sb2NrKTsKKwlz
cGluX2xvY2tfaXJxKCZpbnN0YW5jZS0+aG9zdF9sb2NrKTsKICAgLyogCWNsaSgpOyovCiAJbWFp
bl9ydW5uaW5nID0gMDsKIH0KQEAgLTE1MjEsMTAgKzE1MjEsMTAgQEAKIAkJCQkJCQl7CiAJCQkJ
CQkJCXVuc2lnbmVkIGxvbmcgdGltZW91dCA9IGppZmZpZXMgKyBOQ1JfVElNRU9VVDsKIAotCQkJ
CQkJCQlzcGluX3VubG9ja19pcnEoJmlvX3JlcXVlc3RfbG9jayk7CisJCQkJCQkJCXNwaW5fdW5s
b2NrX2lycSgmaW5zdGFuY2UtPmhvc3RfbG9jayk7CiAJCQkJCQkJCXdoaWxlIChOQ1I1MzgwX3Jl
YWQoQlVTX0FORF9TVEFUVVNfUkVHKSAmIEJBU1JfQUNLCiAJCQkJCQkJCSAgICAgICAmJiB0aW1l
X2JlZm9yZShqaWZmaWVzLCB0aW1lb3V0KSk7Ci0JCQkJCQkJCXNwaW5fbG9ja19pcnEoJmlvX3Jl
cXVlc3RfbG9jayk7CisJCQkJCQkJCXNwaW5fbG9ja19pcnEoJmluc3RhbmNlLT5ob3N0X2xvY2sp
OwogCQkJCQkJCQkKIAkJCQkJCQkJaWYgKHRpbWVfYWZ0ZXJfZXEoamlmZmllcywgdGltZW91dCkg
KQogCQkJCQkJCQkJcHJpbnRrKCJzY3NpJWQ6IHRpbWVvdXQgYXQgTkNSNTM4MC5jOiVkXG4iLApA
QCAtMTU1NCwxMCArMTU1NCwxMiBAQAogCiBzdGF0aWMgdm9pZCBkb19OQ1I1MzgwX2ludHIoaW50
IGlycSwgdm9pZCAqZGV2X2lkLCBzdHJ1Y3QgcHRfcmVncyAqcmVncykgewogCXVuc2lnbmVkIGxv
bmcgZmxhZ3M7Ci0KLQkgc3Bpbl9sb2NrX2lycXNhdmUoJmlvX3JlcXVlc3RfbG9jaywgZmxhZ3Mp
OworCSAKKwkgc3RydWN0IFNjc2lfSG9zdCAqZGV2ID0gZGV2X2lkOworCQorCSBzcGluX2xvY2tf
aXJxc2F2ZSgmZGV2LT5ob3N0X2xvY2ssIGZsYWdzKTsKIAkgTkNSNTM4MF9pbnRyKGlycSwgZGV2
X2lkLCByZWdzKTsKLQkgc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmaW9fcmVxdWVzdF9sb2NrLCBm
bGFncyk7CisJIHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmRldi0+aG9zdF9sb2NrLCBmbGFncyk7
CiB9CiAKICNlbmRpZgpAQCAtMTY2OSwxMiArMTY3MSwxMiBAQAogCXsKIAkJdW5zaWduZWQgbG9u
ZyB0aW1lb3V0ID0gamlmZmllcyArIDIgKiBOQ1JfVElNRU9VVDsKIAotCQlzcGluX3VubG9ja19p
cnEoJmlvX3JlcXVlc3RfbG9jayk7CisJCXNwaW5fdW5sb2NrX2lycSgmaW5zdGFuY2UtPmhvc3Rf
bG9jayk7CiAKIAkJd2hpbGUgKCEoTkNSNTM4MF9yZWFkKElOSVRJQVRPUl9DT01NQU5EX1JFRykg
JiBJQ1JfQVJCSVRSQVRJT05fUFJPR1JFU1MpCiAJCSAgICAgICAmJiB0aW1lX2JlZm9yZShqaWZm
aWVzLHRpbWVvdXQpKTsKIAotCQlzcGluX2xvY2tfaXJxKCZpb19yZXF1ZXN0X2xvY2spOworCQlz
cGluX2xvY2tfaXJxKCZpbnN0YW5jZS0+aG9zdF9sb2NrKTsKIAkJICAgICAgIAogCQlpZiAodGlt
ZV9hZnRlcl9lcShqaWZmaWVzLHRpbWVvdXQpKSB7CiAJCQlwcmludGsoInNjc2k6IGFyYml0cmF0
aW9uIHRpbWVvdXQgYXQgJWRcbiIsIF9fTElORV9fKTsKQEAgLTE4MzQsMTAgKzE4MzYsMTAgQEAK
IAlob3N0ZGF0YS0+c2VsZWN0aW5nID0gMDsgLyogY2xlYXIgdGhpcyBwb2ludGVyLCBiZWNhdXNl
IHdlIHBhc3NlZCB0aGUKIAkJCQl3YWl0aW5nIHBlcmlvZCAqLwogI2Vsc2UKLQlzcGluX3VubG9j
a19pcnEoJmlvX3JlcXVlc3RfbG9jayk7CisJc3Bpbl91bmxvY2tfaXJxKCZpbnN0YW5jZS0+aG9z
dF9sb2NrKTsKIAl3aGlsZSAodGltZV9iZWZvcmUoamlmZmllcywgdGltZW91dCkgJiYgIShOQ1I1
MzgwX3JlYWQoU1RBVFVTX1JFRykgJgogCQkJCQkoU1JfQlNZIHwgU1JfSU8pKSk7Ci0Jc3Bpbl9s
b2NrX2lycSgmaW9fcmVxdWVzdF9sb2NrKTsKKwlzcGluX2xvY2tfaXJxKCZpbnN0YW5jZS0+aG9z
dF9sb2NrKTsKICNlbmRpZgogCWlmICgoTkNSNTM4MF9yZWFkKFNUQVRVU19SRUcpICYgKFNSX1NF
TCB8IFNSX0lPKSkgPT0KIAkgICAgKFNSX1NFTCB8IFNSX0lPKSkgewpAQCAtMTkwNSw5ICsxOTA3
LDkgQEAKIAl7CiAJCXVuc2lnbmVkIGxvbmcgdGltZW91dCA9IGppZmZpZXMgKyBOQ1JfVElNRU9V
VDsKIAotCQlzcGluX3VubG9ja19pcnEoJmlvX3JlcXVlc3RfbG9jayk7CisJCXNwaW5fdW5sb2Nr
X2lycSgmaW5zdGFuY2UtPmhvc3RfbG9jayk7CiAJCXdoaWxlICghKE5DUjUzODBfcmVhZChTVEFU
VVNfUkVHKSAmIFNSX1JFUSkgJiYgdGltZV9iZWZvcmUoamlmZmllcywgdGltZW91dCkpOwotCQlz
cGluX2xvY2tfaXJxKCZpb19yZXF1ZXN0X2xvY2spOworCQlzcGluX2xvY2tfaXJxKCZpbnN0YW5j
ZS0+aG9zdF9sb2NrKTsKIAkJCiAJCWlmICh0aW1lX2FmdGVyX2VxKGppZmZpZXMsIHRpbWVvdXQp
KSB7CiAJCQlwcmludGsoInNjc2klZDogdGltZW91dCBhdCBOQ1I1MzgwLmM6JWRcbiIsIGluc3Rh
bmNlLT5ob3N0X25vLCBfX0xJTkVfXyk7Ck9ubHkgaW4gLi9saW51eC9kcml2ZXJzL3Njc2kvOiBO
Q1I1MzgwLmN+CmRpZmYgLXVyIC4vbGludXgub3JpZy9kcml2ZXJzL3Njc2kvTkNSNTNDOXguYyAu
L2xpbnV4L2RyaXZlcnMvc2NzaS9OQ1I1M0M5eC5jCi0tLSAuL2xpbnV4Lm9yaWcvZHJpdmVycy9z
Y3NpL05DUjUzQzl4LmMJU3VuIFNlcCAzMCAyMzoyNjowNyAyMDAxCisrKyAuL2xpbnV4L2RyaXZl
cnMvc2NzaS9OQ1I1M0M5eC5jCU1vbiBKYW4gMjggMDY6MzA6NDQgMjAwMgpAQCAtMzU0Niw5ICsz
NTQ2LDEwIEBACiAJc3RydWN0IE5DUl9FU1AgKmVzcDsKIAl1bnNpZ25lZCBsb25nIGZsYWdzOwog
CWludCBhZ2FpbjsKKwlzdHJ1Y3QgU2NzaV9Ib3N0ICpkZXYgPSBkZXZfaWQ7CiAKIAkvKiBIYW5k
bGUgYWxsIEVTUCBpbnRlcnJ1cHRzIHNob3dpbmcgYXQgdGhpcyBJUlEgbGV2ZWwuICovCi0Jc3Bp
bl9sb2NrX2lycXNhdmUoJmlvX3JlcXVlc3RfbG9jaywgZmxhZ3MpOworCXNwaW5fbG9ja19pcnFz
YXZlKCZkZXYtPmhvc3RfbG9jaywgZmxhZ3MpOwogcmVwZWF0OgogCWFnYWluID0gMDsKIAlmb3Jf
ZWFjaF9lc3AoZXNwKSB7CkBAIC0zNTcyLDcgKzM1NzMsNyBAQAogCX0KIAlpZihhZ2FpbikKIAkJ
Z290byByZXBlYXQ7Ci0Jc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmaW9fcmVxdWVzdF9sb2NrLCBm
bGFncyk7CisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZGV2LT5ob3N0X2xvY2ssIGZsYWdzKTsK
IH0KICNlbHNlCiAvKiBGb3IgU01QIHdlIG9ubHkgc2VydmljZSBvbmUgRVNQIG9uIHRoZSBsaXN0
IGxpc3QgYXQgb3VyIElSUSBsZXZlbCEgKi8KQEAgLTM1ODAsOSArMzU4MSwxMCBAQAogewogCXN0
cnVjdCBOQ1JfRVNQICplc3A7CiAJdW5zaWduZWQgbG9uZyBmbGFnczsKLQorCXN0cnVjdCBTY3Np
X0hvc3QgKmRldiA9IGRldl9pZDsKKwkKIAkvKiBIYW5kbGUgYWxsIEVTUCBpbnRlcnJ1cHRzIHNo
b3dpbmcgYXQgdGhpcyBJUlEgbGV2ZWwuICovCi0Jc3Bpbl9sb2NrX2lycXNhdmUoJmlvX3JlcXVl
c3RfbG9jaywgZmxhZ3MpOworCXNwaW5fbG9ja19pcnFzYXZlKCZkZXYtPmhvc3RfbG9jaywgZmxh
Z3MpOwogCWZvcl9lYWNoX2VzcChlc3ApIHsKIAkJaWYoKChlc3ApLT5pcnEgJiAweGYpID09IGly
cSkgewogCQkJaWYoZXNwLT5kbWFfaXJxX3AoZXNwKSkgewpAQCAtMzU5OSw3ICszNjAxLDcgQEAK
IAkJfQogCX0KIG91dDoKLQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZpb19yZXF1ZXN0X2xvY2ss
IGZsYWdzKTsKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZkZXYtPmhvc3RfbG9jaywgZmxhZ3Mp
OwogfQogI2VuZGlmCiAKT25seSBpbiAuL2xpbnV4L2RyaXZlcnMvc2NzaS86IE5DUjUzQzl4LmN+
CmRpZmYgLXVyIC4vbGludXgub3JpZy9kcml2ZXJzL3Njc2kvTkNSNTNjNDA2YS5jIC4vbGludXgv
ZHJpdmVycy9zY3NpL05DUjUzYzQwNmEuYwotLS0gLi9saW51eC5vcmlnL2RyaXZlcnMvc2NzaS9O
Q1I1M2M0MDZhLmMJU3VuIFNlcCAzMCAyMzoyNjowNyAyMDAxCisrKyAuL2xpbnV4L2RyaXZlcnMv
c2NzaS9OQ1I1M2M0MDZhLmMJTW9uIEphbiAyOCAwNDo1MToyNiAyMDAyCkBAIC01MzcsNyArNTM3
LDcgQEAKICAgICBERUIocHJpbnRrKCJOQ1I1M2M0MDZhOiB1c2luZyBwb3J0X2Jhc2UgJXhcbiIs
IHBvcnRfYmFzZSkpOwogICAgIAogICAgIGlmKGlycV9sZXZlbCA+IDApIHsKLSAgICAgICAgaWYo
cmVxdWVzdF9pcnEoaXJxX2xldmVsLCBkb19OQ1I1M2M0MDZhX2ludHIsIDAsICJOQ1I1M2M0MDZh
IiwgTlVMTCkpeworICAgICAgICBpZihyZXF1ZXN0X2lycShpcnFfbGV2ZWwsIGRvX05DUjUzYzQw
NmFfaW50ciwgMCwgIk5DUjUzYzQwNmEiLCBzaHBudCkpewogICAgICAgICAgICAgcHJpbnRrKCJO
Q1I1M2M0MDZhOiB1bmFibGUgdG8gYWxsb2NhdGUgSVJRICVkXG4iLCBpcnFfbGV2ZWwpOwogICAg
ICAgICAgICAgZ290byBlcnJfcmVsZWFzZTsKICAgICAgICAgfQpAQCAtNzgwLDEwICs3ODAsMTEg
QEAKICAgICAgc3RhdGljIHZvaWQKIGRvX05DUjUzYzQwNmFfaW50cihpbnQgdW51c2VkLCB2b2lk
ICpkZXZfaWQsIHN0cnVjdCBwdF9yZWdzICpyZWdzKXsKICAgICB1bnNpZ25lZCBsb25nIGZsYWdz
OwotCi0gICAgc3Bpbl9sb2NrX2lycXNhdmUoJmlvX3JlcXVlc3RfbG9jaywgZmxhZ3MpOworICAg
IHN0cnVjdCBTY3NpX0hvc3QgKiBkZXYgPSBkZXZfaWQ7CisgICAgCisgICAgc3Bpbl9sb2NrX2ly
cXNhdmUoJmRldi0+aG9zdF9sb2NrLCBmbGFncyk7CiAgICAgTkNSNTNjNDA2YV9pbnRyKDAsIGRl
dl9pZCwgcmVncyk7Ci0gICAgc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmaW9fcmVxdWVzdF9sb2Nr
LCBmbGFncyk7CisgICAgc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZGV2LT5ob3N0X2xvY2ssIGZs
YWdzKTsKIH0KIAogICAgICBzdGF0aWMgdm9pZApPbmx5IGluIC4vbGludXgvZHJpdmVycy9zY3Np
LzogTkNSNTNjNDA2YS5jfgpkaWZmIC11ciAuL2xpbnV4Lm9yaWcvZHJpdmVycy9zY3NpL2EyMDkx
LmMgLi9saW51eC9kcml2ZXJzL3Njc2kvYTIwOTEuYwotLS0gLi9saW51eC5vcmlnL2RyaXZlcnMv
c2NzaS9hMjA5MS5jCUZyaSBPY3QgMjYgMDA6NTM6NDggMjAwMQorKysgLi9saW51eC9kcml2ZXJz
L3Njc2kvYTIwOTEuYwlNb24gSmFuIDI4IDA1OjU3OjI0IDIwMDIKQEAgLTQwLDkgKzQwLDkgQEAK
IAkJY29udGludWU7CiAKIAlpZiAoc3RhdHVzICYgSVNUUl9JTlRTKSB7Ci0JCXNwaW5fbG9ja19p
cnFzYXZlKCZpb19yZXF1ZXN0X2xvY2ssIGZsYWdzKTsKKwkJc3Bpbl9sb2NrX2lycXNhdmUoJmlu
c3RhbmNlLT5ob3N0X2xvY2ssIGZsYWdzKTsKIAkJd2QzM2M5M19pbnRyIChpbnN0YW5jZSk7Ci0J
CXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmlvX3JlcXVlc3RfbG9jaywgZmxhZ3MpOworCQlzcGlu
X3VubG9ja19pcnFyZXN0b3JlKCZpbnN0YW5jZS0+aG9zdF9sb2NrLCBmbGFncyk7CiAJfQogICAg
IH0KIH0KT25seSBpbiAuL2xpbnV4L2RyaXZlcnMvc2NzaS86IGEyMDkxLmN+CmRpZmYgLXVyIC4v
bGludXgub3JpZy9kcml2ZXJzL3Njc2kvYTMwMDAuYyAuL2xpbnV4L2RyaXZlcnMvc2NzaS9hMzAw
MC5jCi0tLSAuL2xpbnV4Lm9yaWcvZHJpdmVycy9zY3NpL2EzMDAwLmMJRnJpIE9jdCAyNiAwMDo1
Mzo0OCAyMDAxCisrKyAuL2xpbnV4L2RyaXZlcnMvc2NzaS9hMzAwMC5jCU1vbiBKYW4gMjggMDU6
NTg6NTcgMjAwMgpAQCAtMzAsMTQgKzMwLDE1IEBACiB7CiAJdW5zaWduZWQgbG9uZyBmbGFnczsK
IAl1bnNpZ25lZCBpbnQgc3RhdHVzID0gRE1BKGEzMDAwX2hvc3QpLT5JU1RSOwotCisJc3RydWN0
IFNjc2lfSG9zdCAqZGV2ID0gZHVtbXk7CisJCiAJaWYgKCEoc3RhdHVzICYgSVNUUl9JTlRfUCkp
CiAJCXJldHVybjsKIAlpZiAoc3RhdHVzICYgSVNUUl9JTlRTKQogCXsKLQkJc3Bpbl9sb2NrX2ly
cXNhdmUoJmlvX3JlcXVlc3RfbG9jaywgZmxhZ3MpOworCQlzcGluX2xvY2tfaXJxc2F2ZSgmZGV2
LT5ob3N0X2xvY2ssIGZsYWdzKTsKIAkJd2QzM2M5M19pbnRyIChhMzAwMF9ob3N0KTsKLQkJc3Bp
bl91bmxvY2tfaXJxcmVzdG9yZSgmaW9fcmVxdWVzdF9sb2NrLCBmbGFncyk7CisJCXNwaW5fdW5s
b2NrX2lycXJlc3RvcmUoJmRldi0+aG9zdF9sb2NrLCBmbGFncyk7CiAJfSBlbHNlCiAJCXByaW50
aygiTm9uLXNlcnZpY2VkIEEzMDAwIFNDU0ktaW50ZXJydXB0PyBJU1RSID0gJTAyeFxuIiwKIAkJ
ICAgICAgIHN0YXR1cyk7Ck9ubHkgaW4gLi9saW51eC9kcml2ZXJzL3Njc2kvOiBhMzAwMC5jfgpP
bmx5IGluIC4vbGludXgvZHJpdmVycy9zY3NpL2FpYzd4eHg6IC5kZXBlbmQKZGlmZiAtdXIgLi9s
aW51eC5vcmlnL2RyaXZlcnMvc2NzaS9hdHA4NzB1LmMgLi9saW51eC9kcml2ZXJzL3Njc2kvYXRw
ODcwdS5jCi0tLSAuL2xpbnV4Lm9yaWcvZHJpdmVycy9zY3NpL2F0cDg3MHUuYwlTdW4gU2VwIDMw
IDIzOjI2OjA3IDIwMDEKKysrIC4vbGludXgvZHJpdmVycy9zY3NpL2F0cDg3MHUuYwlNb24gSmFu
IDI4IDA2OjM2OjA4IDIwMDIKQEAgLTQzMyw3ICs0MzMsNyBAQAogCQkJLyoKIAkJCSAqCUNvbXBs
ZXRlIHRoZSBjb21tYW5kCiAJCQkgKi8KLQkJCXNwaW5fbG9ja19pcnFzYXZlKCZpb19yZXF1ZXN0
X2xvY2ssIGZsYWdzKTsKKwkJCXNwaW5fbG9ja19pcnFzYXZlKCZ3b3JrcmVxdS0+aG9zdC0+aG9z
dF9sb2NrLCBmbGFncyk7CiAJCQkoKndvcmtyZXF1LT5zY3NpX2RvbmUpICh3b3JrcmVxdSk7CiAK
IAkJCS8qCkBAIC00NDEsNyArNDQxLDcgQEAKIAkJCSAqLwogCQkJZGV2LT5pZFt0YXJnZXRfaWRd
LmN1cnJfcmVxID0gMDsKIAkJCWRldi0+d29ya2luZy0tOwotCQkJc3Bpbl91bmxvY2tfaXJxcmVz
dG9yZSgmaW9fcmVxdWVzdF9sb2NrLCBmbGFncyk7CisJCQlzcGluX3VubG9ja19pcnFyZXN0b3Jl
KCZ3b3JrcmVxdS0+aG9zdC0+aG9zdF9sb2NrLCBmbGFncyk7CiAJCQkvKgogCQkJICoJVGFrZSBp
dCBiYWNrIHdpZGUKIAkJCSAqLwpPbmx5IGluIC4vbGludXgvZHJpdmVycy9zY3NpLzogYXRwODcw
dS5jfgpkaWZmIC11ciAuL2xpbnV4Lm9yaWcvZHJpdmVycy9zY3NpL2JsejEyMzAuYyAuL2xpbnV4
L2RyaXZlcnMvc2NzaS9ibHoxMjMwLmMKLS0tIC4vbGludXgub3JpZy9kcml2ZXJzL3Njc2kvYmx6
MTIzMC5jCUZyaSBPY3QgMjYgMDA6NTM6NDkgMjAwMQorKysgLi9saW51eC9kcml2ZXJzL3Njc2kv
Ymx6MTIzMC5jCU1vbiBKYW4gMjggMDY6Mjg6NDYgMjAwMgpAQCAtMTM3LDcgKzEzNyw3IEBACiAJ
CWVzcC0+aXJxID0gSVJRX0FNSUdBX1BPUlRTOwogCQllc3AtPnNsb3QgPSBib2FyZCtSRUFMX0JM
WjEyMzBfRVNQX0FERFI7CiAJCWlmIChyZXF1ZXN0X2lycShJUlFfQU1JR0FfUE9SVFMsIGVzcF9p
bnRyLCBTQV9TSElSUSwKLQkJCQkgIkJsaXp6YXJkIDEyMzAgU0NTSSBJViIsIGVzcF9pbnRyKSkK
KwkJCQkgIkJsaXp6YXJkIDEyMzAgU0NTSSBJViIsIGVzcC0+ZWhvc3QpKQogCQkJZ290byBlcnJf
b3V0OwogCiAJCS8qIEZpZ3VyZSBvdXQgb3VyIHNjc2kgSUQgb24gdGhlIGJ1cyAqLwpPbmx5IGlu
IC4vbGludXgvZHJpdmVycy9zY3NpLzogYmx6MTIzMC5jfgpkaWZmIC11ciAuL2xpbnV4Lm9yaWcv
ZHJpdmVycy9zY3NpL2JsejIwNjAuYyAuL2xpbnV4L2RyaXZlcnMvc2NzaS9ibHoyMDYwLmMKLS0t
IC4vbGludXgub3JpZy9kcml2ZXJzL3Njc2kvYmx6MjA2MC5jCUZyaSBPY3QgMjYgMDA6NTM6NDkg
MjAwMQorKysgLi9saW51eC9kcml2ZXJzL3Njc2kvYmx6MjA2MC5jCU1vbiBKYW4gMjggMDY6Mjc6
NTcgMjAwMgpAQCAtMTE1LDcgKzExNSw3IEBACiAKIAkJZXNwLT5pcnEgPSBJUlFfQU1JR0FfUE9S
VFM7CiAJCXJlcXVlc3RfaXJxKElSUV9BTUlHQV9QT1JUUywgZXNwX2ludHIsIFNBX1NISVJRLAot
CQkJICAgICJCbGl6emFyZCAyMDYwIFNDU0kiLCBlc3BfaW50cik7CisJCQkgICAgIkJsaXp6YXJk
IDIwNjAgU0NTSSIsIGVzcC0+ZWhvc3QpOwogCiAJCS8qIEZpZ3VyZSBvdXQgb3VyIHNjc2kgSUQg
b24gdGhlIGJ1cyAqLwogCQllc3AtPnNjc2lfaWQgPSA3OwpPbmx5IGluIC4vbGludXgvZHJpdmVy
cy9zY3NpLzogYmx6MjA2MC5jfgpkaWZmIC11ciAuL2xpbnV4Lm9yaWcvZHJpdmVycy9zY3NpL2N5
YmVyc3Rvcm0uYyAuL2xpbnV4L2RyaXZlcnMvc2NzaS9jeWJlcnN0b3JtLmMKLS0tIC4vbGludXgu
b3JpZy9kcml2ZXJzL3Njc2kvY3liZXJzdG9ybS5jCUZyaSBPY3QgMjYgMDA6NTM6NTAgMjAwMQor
KysgLi9saW51eC9kcml2ZXJzL3Njc2kvY3liZXJzdG9ybS5jCU1vbiBKYW4gMjggMDY6Mjc6MzQg
MjAwMgpAQCAtMTM2LDcgKzEzNiw3IEBACiAKIAkJZXNwLT5pcnEgPSBJUlFfQU1JR0FfUE9SVFM7
CiAJCXJlcXVlc3RfaXJxKElSUV9BTUlHQV9QT1JUUywgZXNwX2ludHIsIFNBX1NISVJRLAotCQkJ
ICAgICJDeWJlclN0b3JtIFNDU0kiLCBlc3BfaW50cik7CisJCQkgICAgIkN5YmVyU3Rvcm0gU0NT
SSIsIGVzcC0+ZWhvc3QpOwogCQkvKiBGaWd1cmUgb3V0IG91ciBzY3NpIElEIG9uIHRoZSBidXMg
Ki8KIAkJLyogVGhlIERNQSBjb25kIGZsYWcgY29udGFpbnMgYSBoYXJkY29kZWQganVtcGVyIGJp
dAogCQkgKiB3aGljaCBjYW4gYmUgdXNlZCB0byBzZWxlY3QgaG9zdCBudW1iZXIgNiBvciA3LgpP
bmx5IGluIC4vbGludXgvZHJpdmVycy9zY3NpLzogY3liZXJzdG9ybS5jfgpkaWZmIC11ciAuL2xp
bnV4Lm9yaWcvZHJpdmVycy9zY3NpL2N5YmVyc3Rvcm1JSS5jIC4vbGludXgvZHJpdmVycy9zY3Np
L2N5YmVyc3Rvcm1JSS5jCi0tLSAuL2xpbnV4Lm9yaWcvZHJpdmVycy9zY3NpL2N5YmVyc3Rvcm1J
SS5jCUZyaSBPY3QgMjYgMDA6NTM6NTAgMjAwMQorKysgLi9saW51eC9kcml2ZXJzL3Njc2kvY3li
ZXJzdG9ybUlJLmMJTW9uIEphbiAyOCAwNjoyNzoxMSAyMDAyCkBAIC0xMzAsNyArMTMwLDcgQEAK
IAogCQllc3AtPmlycSA9IElSUV9BTUlHQV9QT1JUUzsKIAkJcmVxdWVzdF9pcnEoSVJRX0FNSUdB
X1BPUlRTLCBlc3BfaW50ciwgU0FfU0hJUlEsCi0JCQkgICAgIkN5YmVyU3Rvcm0gU0NTSSBNayBJ
SSIsIGVzcF9pbnRyKTsKKwkJCSAgICAiQ3liZXJTdG9ybSBTQ1NJIE1rIElJIiwgZXNwLT5laG9z
dCk7CiAKIAkJLyogRmlndXJlIG91dCBvdXIgc2NzaSBJRCBvbiB0aGUgYnVzICovCiAJCWVzcC0+
c2NzaV9pZCA9IDc7Ck9ubHkgaW4gLi9saW51eC9kcml2ZXJzL3Njc2kvOiBjeWJlcnN0b3JtSUku
Y34KZGlmZiAtdXIgLi9saW51eC5vcmlnL2RyaXZlcnMvc2NzaS9kZWNfZXNwLmMgLi9saW51eC9k
cml2ZXJzL3Njc2kvZGVjX2VzcC5jCi0tLSAuL2xpbnV4Lm9yaWcvZHJpdmVycy9zY3NpL2RlY19l
c3AuYwlTdW4gU2VwICA5IDIxOjUyOjM1IDIwMDEKKysrIC4vbGludXgvZHJpdmVycy9zY3NpL2Rl
Y19lc3AuYwlNb24gSmFuIDI4IDA2OjIyOjU4IDIwMDIKQEAgLTE4OSwxMCArMTg5LDEwIEBACiAJ
CWVzcF9pbml0aWFsaXplKGVzcCk7CiAKIAkJaWYgKHJlcXVlc3RfaXJxKGVzcC0+aXJxLCBlc3Bf
aW50ciwgU0FfSU5URVJSVVBULCAKLQkJCQkiTkNSIDUzQzk0IFNDU0kiLCBOVUxMKSkKKwkJCQki
TkNSIDUzQzk0IFNDU0kiLCBlc3AtPmVob3N0KSkKIAkJCWdvdG8gZXJyX2RlYWxsb2M7CiAJCWlm
IChyZXF1ZXN0X2lycShTQ1NJX0RNQV9JTlQsIHNjc2lfZG1hX2ludCwgU0FfSU5URVJSVVBULCAK
LQkJCQkiSlVOS0lPIFNDU0kgRE1BIiwgTlVMTCkpCisJCQkJIkpVTktJTyBTQ1NJIERNQSIsIGVz
cC0+ZWhvc3QpKQogCQkJZ290byBlcnJfZnJlZV9pcnE7CiAgCQkJCiAJfQpAQCAtMjUzLDcgKzI1
Myw3IEBACiAJCQllc3AtPmRtYV9hZHZhbmNlX3NnID0gMDsKIAogIAkJCWlmIChyZXF1ZXN0X2ly
cShlc3AtPmlycSwgZXNwX2ludHIsIFNBX0lOVEVSUlVQVCwgCi0gCQkJCQkgIlBNQVpfQUEiLCBO
VUxMKSkgeworIAkJCQkJICJQTUFaX0FBIiwgZXNwLT5laG9zdCkpIHsKICAJCQkJZXNwX2RlYWxs
b2NhdGUoZXNwKTsKICAJCQkJcmVsZWFzZV90Y19jYXJkKHNsb3QpOwogIAkJCQljb250aW51ZTsK
T25seSBpbiAuL2xpbnV4L2RyaXZlcnMvc2NzaS86IGRlY19lc3AuY34KZGlmZiAtdXIgLi9saW51
eC5vcmlnL2RyaXZlcnMvc2NzaS9kdGMuYyAuL2xpbnV4L2RyaXZlcnMvc2NzaS9kdGMuYwotLS0g
Li9saW51eC5vcmlnL2RyaXZlcnMvc2NzaS9kdGMuYwlTdW4gU2VwIDMwIDIzOjI2OjA3IDIwMDEK
KysrIC4vbGludXgvZHJpdmVycy9zY3NpL2R0Yy5jCU1vbiBKYW4gMjggMDU6Mjk6MTMgMjAwMgpA
QCAtMjU5LDcgKzI1OSw3IEBACiAvKiBXaXRoIGludGVycnVwdHMgZW5hYmxlZCwgaXQgd2lsbCBz
b21ldGltZXMgaGFuZyB3aGVuIGRvaW5nIGhlYXZ5CiAgKiByZWFkcy4gU28gYmV0dGVyIG5vdCBl
bmFibGUgdGhlbSB1bnRpbCBJIGZpbmdlciBpdCBvdXQuICovCiAgICAgICBpZiAoaW5zdGFuY2Ut
PmlycSAhPSBJUlFfTk9ORSkKLQkgaWYgKHJlcXVlc3RfaXJxKGluc3RhbmNlLT5pcnEsIGRvX2R0
Y19pbnRyLCBTQV9JTlRFUlJVUFQsICJkdGMiKSkgeworCSBpZiAocmVxdWVzdF9pcnEoaW5zdGFu
Y2UtPmlycSwgZG9fZHRjX2ludHIsIFNBX0lOVEVSUlVQVCwgImR0YyIsIGluc3RhbmNlKSkgewog
CSBwcmludGsoInNjc2klZCA6IElSUSVkIG5vdCBmcmVlLCBpbnRlcnJ1cHRzIGRpc2FibGVkXG4i
LAogCSAgICAgIGluc3RhbmNlLT5ob3N0X25vLCBpbnN0YW5jZS0+aXJxKTsKIAkgaW5zdGFuY2Ut
PmlycSA9IElSUV9OT05FOwpPbmx5IGluIC4vbGludXgvZHJpdmVycy9zY3NpLzogZHRjLmN+CmRp
ZmYgLXVyIC4vbGludXgub3JpZy9kcml2ZXJzL3Njc2kvZWF0YV9kbWEuYyAuL2xpbnV4L2RyaXZl
cnMvc2NzaS9lYXRhX2RtYS5jCi0tLSAuL2xpbnV4Lm9yaWcvZHJpdmVycy9zY3NpL2VhdGFfZG1h
LmMJU3VuIFNlcCAzMCAyMzoyNjowNyAyMDAxCisrKyAuL2xpbnV4L2RyaXZlcnMvc2NzaS9lYXRh
X2RtYS5jCU1vbiBKYW4gMjggMDU6NDQ6NDEgMjAwMgpAQCAtMjI5LDEwICsyMjksMTEgQEAKIHZv
aWQgZG9fZWF0YV9pbnRfaGFuZGxlcihpbnQgaXJxLCB2b2lkICpkZXZfaWQsIHN0cnVjdCBwdF9y
ZWdzICogcmVncykKIHsKICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwotCi0gICAgc3Bpbl9sb2Nr
X2lycXNhdmUoJmlvX3JlcXVlc3RfbG9jaywgZmxhZ3MpOworICAgIHN0cnVjdCBTY3NpX0hvc3Qg
KmRldiA9IGRldl9pZDsKKyAgICAKKyAgICBzcGluX2xvY2tfaXJxc2F2ZSgmZGV2LT5ob3N0X2xv
Y2ssIGZsYWdzKTsKICAgICBlYXRhX2ludF9oYW5kbGVyKGlycSwgZGV2X2lkLCByZWdzKTsKLSAg
ICBzcGluX3VubG9ja19pcnFyZXN0b3JlKCZpb19yZXF1ZXN0X2xvY2ssIGZsYWdzKTsKKyAgICBz
cGluX3VubG9ja19pcnFyZXN0b3JlKCZkZXYtPmhvc3RfbG9jaywgZmxhZ3MpOwogfQogCiB2b2lk
IGVhdGFfaW50X2hhbmRsZXIoaW50IGlycSwgdm9pZCAqZGV2X2lkLCBzdHJ1Y3QgcHRfcmVncyAq
IHJlZ3MpCkBAIC0xNTAzLDcgKzE1MDQsNyBAQAogCWlmIChyZWdfSVJRW2ldID49IDEpeyAgICAg
ICAvKiBleGNoYW5nZSB0aGUgaW50ZXJydXB0IGhhbmRsZXIgd2hpY2ggICovCiAJICAgIGZyZWVf
aXJxKGksIE5VTEwpOyAgICAgIC8qIHdlIHVzZWQgZm9yIHByb2Jpbmcgd2l0aCB0aGUgcmVhbCBv
bmUgKi8KIAkgICAgcmVxdWVzdF9pcnEoaSwgKHZvaWQgKikoZG9fZWF0YV9pbnRfaGFuZGxlciks
IFNBX0lOVEVSUlVQVHxTQV9TSElSUSwgCi0JCQkiZWF0YV9kbWEiLCBOVUxMKTsKKwkJCSJlYXRh
X2RtYSIsIGZpcnN0X0hCQSk7IC8qIENoZWNrIGl0ICovCiAJfQogICAgIH0KIApPbmx5IGluIC4v
bGludXgvZHJpdmVycy9zY3NpLzogZWF0YV9kbWEuY34KZGlmZiAtdXIgLi9saW51eC5vcmlnL2Ry
aXZlcnMvc2NzaS9lYXRhX3Bpby5jIC4vbGludXgvZHJpdmVycy9zY3NpL2VhdGFfcGlvLmMKLS0t
IC4vbGludXgub3JpZy9kcml2ZXJzL3Njc2kvZWF0YV9waW8uYwlTdW4gU2VwIDMwIDIzOjI2OjA3
IDIwMDEKKysrIC4vbGludXgvZHJpdmVycy9zY3NpL2VhdGFfcGlvLmMJTW9uIEphbiAyOCAwNTo1
MzowOCAyMDAyCkBAIC0xMTAsMTAgKzExMCwxMSBAQAogdm9pZCBkb19lYXRhX3Bpb19pbnRfaGFu
ZGxlcihpbnQgaXJxLCB2b2lkICpkZXZfaWQsIHN0cnVjdCBwdF9yZWdzICogcmVncykKIHsKICAg
ICB1bnNpZ25lZCBsb25nIGZsYWdzOwotCi0gICAgc3Bpbl9sb2NrX2lycXNhdmUoJmlvX3JlcXVl
c3RfbG9jaywgZmxhZ3MpOworICAgIHN0cnVjdCBTY3NpX0hvc3QgKmRldiA9IGRldl9pZDsKKyAg
ICAKKyAgICBzcGluX2xvY2tfaXJxc2F2ZSgmZGV2LT5ob3N0X2xvY2ssIGZsYWdzKTsKICAgICBl
YXRhX3Bpb19pbnRfaGFuZGxlcihpcnEsIGRldl9pZCwgcmVncyk7Ci0gICAgc3Bpbl91bmxvY2tf
aXJxcmVzdG9yZSgmaW9fcmVxdWVzdF9sb2NrLCBmbGFncyk7CisgICAgc3Bpbl91bmxvY2tfaXJx
cmVzdG9yZSgmZGV2LT5ob3N0X2xvY2ssIGZsYWdzKTsKIH0KIAogdm9pZCBlYXRhX3Bpb19pbnRf
aGFuZGxlcihpbnQgaXJxLCB2b2lkICpkZXZfaWQsIHN0cnVjdCBwdF9yZWdzICogcmVncykKQEAg
LTcwNCwzNCArNzA1LDM2IEBACiAJcmV0dXJuIChGQUxTRSk7CiAgICAgfQogICAgIAorICAgIHJl
cXVlc3RfcmVnaW9uKGJhc2UsIDgsICJlYXRhX3BpbyIpOworICAgIAorICAgIHNpemUgPSBzaXpl
b2YoaG9zdGRhdGEpICsgKHNpemVvZihzdHJ1Y3QgZWF0YV9jY2IpICogbnRvaHMoZ2MtPnF1ZXVl
c2l6KSk7CisgICAgCisgICAgc2ggPSBzY3NpX3JlZ2lzdGVyKHRwbnQsIHNpemUpOworICAgIGlm
KHNoID09IE5VTEwpCisgICAgeworICAgIAlyZWxlYXNlX3JlZ2lvbihiYXNlLCA4KTsKKyAgICAJ
cmV0dXJuIEZBTFNFOworICAgIH0KKyAgICAKICAgICBpZiAoIXJlZ19JUlFbZ2MtPklSUV0pIHsg
ICAgLyogSW50ZXJydXB0IGFscmVhZHkgcmVnaXN0ZXJlZCA/ICovCiAJaWYgKCFyZXF1ZXN0X2ly
cShnYy0+SVJRLCBkb19lYXRhX3Bpb19pbnRfaGFuZGxlciwgU0FfSU5URVJSVVBULCAKLQkJCSAi
RUFUQS1QSU8iLCBOVUxMKSl7CisJCQkgIkVBVEEtUElPIiwgc2gpKXsKIAkgICAgcmVnX0lSUVtn
Yy0+SVJRXSsrOwogCSAgICBpZiAoIWdjLT5JUlFfVFIpCiAJCXJlZ19JUlFMW2djLT5JUlFdID0g
VFJVRTsgICAvKiBJUlEgaXMgZWRnZSB0cmlnZ2VyZWQgKi8KIAl9IGVsc2UgewogCSAgICBwcmlu
dGsoIkNvdWxkbid0IGFsbG9jYXRlIElSUSAlZCwgU29ycnkuXG4iLCBnYy0+SVJRKTsKKwkgICAg
cmVsZWFzZV9yZWdpb24oYmFzZSwgOCk7CiAJICAgIHJldHVybiAoRkFMU0UpOwogCX0KICAgICB9
IGVsc2UgeyAgICAgICAgICAgIC8qIE1vcmUgdGhhbiBvbmUgSEJBIG9uIHRoaXMgSVJRICovCiAJ
aWYgKHJlZ19JUlFMW2djLT5JUlFdID09IFRSVUUpIHsKIAkgICAgcHJpbnRrKCJDYW4ndCBzdXBw
b3J0IG1vcmUgdGhhbiBvbmUgSEJBIG9uIHRoaXMgSVJRLFxuIgogCQkgICAiICBpZiB0aGUgSVJR
IGlzIGVkZ2UgdHJpZ2dlcmVkLiBTb3JyeS5cbiIpOworCSAgICByZWxlYXNlX3JlZ2lvbihiYXNl
LCA4KTsKIAkgICAgcmV0dXJuIChGQUxTRSk7CiAJfSBlbHNlCiAJICAgIHJlZ19JUlFbZ2MtPklS
UV0rKzsKLSAgICB9Ci0gICAgCi0gICAgcmVxdWVzdF9yZWdpb24oYmFzZSwgOCwgImVhdGFfcGlv
Iik7Ci0gICAgCi0gICAgc2l6ZSA9IHNpemVvZihob3N0ZGF0YSkgKyAoc2l6ZW9mKHN0cnVjdCBl
YXRhX2NjYikgKiBudG9ocyhnYy0+cXVldWVzaXopKTsKLSAgICAKLSAgICBzaCA9IHNjc2lfcmVn
aXN0ZXIodHBudCwgc2l6ZSk7Ci0gICAgaWYoc2ggPT0gTlVMTCkKLSAgICB7Ci0gICAgCXJlbGVh
c2VfcmVnaW9uKGJhc2UsIDgpOwotICAgIAlyZXR1cm4gRkFMU0U7CiAgICAgfQogICAgIAogICAg
IGhkID0gU0Qoc2gpOyAgICAgICAgICAgICAgICAgICAKT25seSBpbiAuL2xpbnV4L2RyaXZlcnMv
c2NzaS86IGVhdGFfcGlvLmN+CmRpZmYgLXVyIC4vbGludXgub3JpZy9kcml2ZXJzL3Njc2kvZXNw
LmMgLi9saW51eC9kcml2ZXJzL3Njc2kvZXNwLmMKLS0tIC4vbGludXgub3JpZy9kcml2ZXJzL3Nj
c2kvZXNwLmMJTW9uIEphbiAyOCAwNjo1NToxNiAyMDAyCisrKyAuL2xpbnV4L2RyaXZlcnMvc2Nz
aS9lc3AuYwlNb24gSmFuIDI4IDA2OjI5OjI3IDIwMDIKQEAgLTgxMyw3ICs4MTMsNyBAQAogCSAq
IHNhbmVseSBtYWludGFpbi4KIAkgKi8KIAlpZiAocmVxdWVzdF9pcnEoZXNwLT5laG9zdC0+aXJx
LCBlc3BfaW50ciwKLQkJCVNBX1NISVJRLCAiRVNQIFNDU0kiLCBlc3ApKSB7CisJCQlTQV9TSElS
USwgIkVTUCBTQ1NJIiwgZXNwLT5laG9zdCkpIHsKIAkJcHJpbnRrKCJlc3AlZDogQ2Fubm90IGFj
cXVpcmUgaXJxIGxpbmVcbiIsCiAJCSAgICAgICBlc3AtPmVzcF9pZCk7CiAJCXJldHVybiAtMTsK
T25seSBpbiAuL2xpbnV4L2RyaXZlcnMvc2NzaS86IGVzcC5jfgpkaWZmIC11ciAuL2xpbnV4Lm9y
aWcvZHJpdmVycy9zY3NpL2Zhc3RsYW5lLmMgLi9saW51eC9kcml2ZXJzL3Njc2kvZmFzdGxhbmUu
YwotLS0gLi9saW51eC5vcmlnL2RyaXZlcnMvc2NzaS9mYXN0bGFuZS5jCUZyaSBPY3QgMjYgMDA6
NTM6NTEgMjAwMQorKysgLi9saW51eC9kcml2ZXJzL3Njc2kvZmFzdGxhbmUuYwlNb24gSmFuIDI4
IDA2OjI4OjE1IDIwMDIKQEAgLTE2Nyw3ICsxNjcsNyBAQAogCQllc3AtPmlycSA9IElSUV9BTUlH
QV9QT1JUUzsKIAkJZXNwLT5zbG90ID0gYm9hcmQrRkFTVExBTkVfRVNQX0FERFI7CiAJCWlmIChy
ZXF1ZXN0X2lycShJUlFfQU1JR0FfUE9SVFMsIGVzcF9pbnRyLCBTQV9TSElSUSwKLQkJCQkiRmFz
dGxhbmUgU0NTSSIsIGVzcF9pbnRyKSkgeworCQkJCSJGYXN0bGFuZSBTQ1NJIiwgZXNwLT5laG9z
dCkpIHsKIAkJCXByaW50ayhLRVJOX1dBUk5JTkcgIkZhc3RsYW5lOiBDb3VsZCBub3QgZ2V0IElS
USVkLCBhYm9ydGluZy5cbiIsIElSUV9BTUlHQV9QT1JUUyk7CiAJCQlnb3RvIGVycl91bm1hcDsK
IAkJfQkJCQpPbmx5IGluIC4vbGludXgvZHJpdmVycy9zY3NpLzogZmFzdGxhbmUuY34KZGlmZiAt
dXIgLi9saW51eC5vcmlnL2RyaXZlcnMvc2NzaS9mZF9tY3MuYyAuL2xpbnV4L2RyaXZlcnMvc2Nz
aS9mZF9tY3MuYwotLS0gLi9saW51eC5vcmlnL2RyaXZlcnMvc2NzaS9mZF9tY3MuYwlTdW4gU2Vw
IDMwIDIzOjI2OjA3IDIwMDEKKysrIC4vbGludXgvZHJpdmVycy9zY3NpL2ZkX21jcy5jCU1vbiBK
YW4gMjggMDY6MzM6NDggMjAwMgpAQCAtNzQwLDkgKzc0MCw5IEBACiAjaWYgRVZFUllfQUNDRVNT
CiAgICAgICBwcmludGsoICIgQUZBSUwgIiApOwogI2VuZGlmCi0gICAgICBzcGluX2xvY2tfaXJx
c2F2ZSgmaW9fcmVxdWVzdF9sb2NrLCBmbGFncyk7CisgICAgICBzcGluX2xvY2tfaXJxc2F2ZSgm
c2hwbnQtPmhvc3RfbG9jaywgZmxhZ3MpOwogICAgICAgbXlfZG9uZSggc2hwbnQsIERJRF9CVVNf
QlVTWSA8PCAxNiApOwotICAgICAgc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmaW9fcmVxdWVzdF9s
b2NrLCBmbGFncyk7CisgICAgICBzcGluX3VubG9ja19pcnFyZXN0b3JlKCZzaHBudC0+aG9zdF9s
b2NrLCBmbGFncyk7CiAgICAgICByZXR1cm47CiAgICAgfQogICAgIGN1cnJlbnRfU0MtPlNDcC5w
aGFzZSA9IGluX3NlbGVjdGlvbjsKQEAgLTc2Niw5ICs3NjYsOSBAQAogI2lmIEVWRVJZX0FDQ0VT
UwogCXByaW50ayggIiBTRkFJTCAiICk7CiAjZW5kaWYKLQlzcGluX2xvY2tfaXJxc2F2ZSgmaW9f
cmVxdWVzdF9sb2NrLCBmbGFncyk7CisJc3Bpbl9sb2NrX2lycXNhdmUoJnNocG50LT5ob3N0X2xv
Y2ssIGZsYWdzKTsKIAlteV9kb25lKCBzaHBudCwgRElEX05PX0NPTk5FQ1QgPDwgMTYgKTsKLQlz
cGluX3VubG9ja19pcnFyZXN0b3JlKCZpb19yZXF1ZXN0X2xvY2ssIGZsYWdzKTsKKwlzcGluX3Vu
bG9ja19pcnFyZXN0b3JlKCZzaHBudC0+aG9zdF9sb2NrLCBmbGFncyk7CiAJcmV0dXJuOwogICAg
ICAgfSBlbHNlIHsKICNpZiBFVkVSWV9BQ0NFU1MKQEAgLTExMTcsMTEgKzExMTcsMTEgQEAKICNp
ZiBFVkVSWV9BQ0NFU1MKICAgICBwcmludGsoICJCRUZPUkUgTVlfRE9ORS4gLiAuIiApOwogI2Vu
ZGlmCi0gICAgc3Bpbl9sb2NrX2lycXNhdmUoJmlvX3JlcXVlc3RfbG9jaywgZmxhZ3MpOworICAg
IHNwaW5fbG9ja19pcnFzYXZlKCZzaHBudC0+aG9zdF9sb2NrLCBmbGFncyk7CiAgICAgbXlfZG9u
ZSggc2hwbnQsCiAJICAgICAoY3VycmVudF9TQy0+U0NwLlN0YXR1cyAmIDB4ZmYpCiAJICAgICB8
ICgoY3VycmVudF9TQy0+U0NwLk1lc3NhZ2UgJiAweGZmKSA8PCA4KSB8IChESURfT0sgPDwgMTYp
ICk7Ci0gICAgc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmaW9fcmVxdWVzdF9sb2NrLCBmbGFncyk7
CisgICAgc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmc2hwbnQtPmhvc3RfbG9jaywgZmxhZ3MpOwog
I2lmIEVWRVJZX0FDQ0VTUwogICAgIHByaW50ayggIlJFVFVSTklORy5cbiIgKTsKICNlbmRpZgpA
QCAtMTM0Miw5ICsxMzQyLDkgQEAKICAgcmVzdG9yZV9mbGFncyggZmxhZ3MgKTsKICAgIAogICAv
KiBBYm9ydHMgYXJlIG5vdCBkb25lIHdlbGwuIC4gLiAqLwotICBzcGluX2xvY2tfaXJxc2F2ZSgm
aW9fcmVxdWVzdF9sb2NrLCBmbGFncyk7CisgIHNwaW5fbG9ja19pcnFzYXZlKCZzaHBudC0+aG9z
dF9sb2NrLCBmbGFncyk7CiAgIG15X2RvbmUoIHNocG50LCBESURfQUJPUlQgPDwgMTYgKTsKLSAg
c3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmaW9fcmVxdWVzdF9sb2NrLCBmbGFncyk7CisgIHNwaW5f
dW5sb2NrX2lycXJlc3RvcmUoJnNocG50LT5ob3N0X2xvY2ssIGZsYWdzKTsKIAogICByZXR1cm4g
U0NTSV9BQk9SVF9TVUNDRVNTOwogfQpPbmx5IGluIC4vbGludXgvZHJpdmVycy9zY3NpLzogZmRf
bWNzLmN+CmRpZmYgLXVyIC4vbGludXgub3JpZy9kcml2ZXJzL3Njc2kvZ2R0aC5jIC4vbGludXgv
ZHJpdmVycy9zY3NpL2dkdGguYwotLS0gLi9saW51eC5vcmlnL2RyaXZlcnMvc2NzaS9nZHRoLmMJ
U2F0IE5vdiAxMCAwMTowNTowNiAyMDAxCisrKyAuL2xpbnV4L2RyaXZlcnMvc2NzaS9nZHRoLmMJ
TW9uIEphbiAyOCAwNToxOTowNyAyMDAyCkBAIC02MjksMTkgKzYyOSwxOSBAQAogI2RlZmluZSBH
RFRIX0xPQ0tfSEEoaGEsZmxhZ3MpICAgICAgICAgIHNwaW5fbG9ja19pcnFzYXZlKCYoaGEpLT5z
bXBfbG9jayxmbGFncykKICNkZWZpbmUgR0RUSF9VTkxPQ0tfSEEoaGEsZmxhZ3MpICAgICAgICBz
cGluX3VubG9ja19pcnFyZXN0b3JlKCYoaGEpLT5zbXBfbG9jayxmbGFncykKIAotI2RlZmluZSBH
RFRIX0xPQ0tfU0NTSV9ET05FKGZsYWdzKSAgICAgIHNwaW5fbG9ja19pcnFzYXZlKCZpb19yZXF1
ZXN0X2xvY2ssZmxhZ3MpCi0jZGVmaW5lIEdEVEhfVU5MT0NLX1NDU0lfRE9ORShmbGFncykgICAg
c3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmaW9fcmVxdWVzdF9sb2NrLGZsYWdzKQotI2RlZmluZSBH
RFRIX0xPQ0tfU0NTSV9ET0NNRCgpICAgICAgICAgIHNwaW5fbG9ja19pcnEoJmlvX3JlcXVlc3Rf
bG9jaykKLSNkZWZpbmUgR0RUSF9VTkxPQ0tfU0NTSV9ET0NNRCgpICAgICAgICBzcGluX3VubG9j
a19pcnEoJmlvX3JlcXVlc3RfbG9jaykKKyNkZWZpbmUgR0RUSF9MT0NLX1NDU0lfRE9ORShkZXYs
IGZsYWdzKSAgICAgIHNwaW5fbG9ja19pcnFzYXZlKCYoKHN0cnVjdCBTY3NpX0hvc3QgKilkZXYp
LT5ob3N0X2xvY2ssZmxhZ3MpCisjZGVmaW5lIEdEVEhfVU5MT0NLX1NDU0lfRE9ORShmbGFncykg
ICAgc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmKChzdHJ1Y3QgU2NzaV9Ib3N0ICopZGV2KS0+aG9z
dF9sb2NrLGZsYWdzKQorI2RlZmluZSBHRFRIX0xPQ0tfU0NTSV9ET0NNRChkZXYpICAgICAgICAg
IHNwaW5fbG9ja19pcnEoJigoc3RydWN0IFNjc2lfSG9zdCAqKWRldiktPmhvc3RfbG9jaykKKyNk
ZWZpbmUgR0RUSF9VTkxPQ0tfU0NTSV9ET0NNRChkZXYpICAgICAgICBzcGluX3VubG9ja19pcnEo
Jigoc3RydWN0IFNjc2lfSG9zdCAqKWRldiktPmhvc3RfbG9jaykKICNlbHNlCiAjZGVmaW5lIEdE
VEhfSU5JVF9MT0NLX0hBKGhhKSAgICAgICAgICAgZG8ge30gd2hpbGUgKDApCiAjZGVmaW5lIEdE
VEhfTE9DS19IQShoYSxmbGFncykgICAgICAgICAgZG8ge3NhdmVfZmxhZ3MoZmxhZ3MpOyBjbGko
KTt9IHdoaWxlICgwKQogI2RlZmluZSBHRFRIX1VOTE9DS19IQShoYSxmbGFncykgICAgICAgIGRv
IHtyZXN0b3JlX2ZsYWdzKGZsYWdzKTt9IHdoaWxlICgwKQogCi0jZGVmaW5lIEdEVEhfTE9DS19T
Q1NJX0RPTkUoZmxhZ3MpICAgICAgZG8ge30gd2hpbGUgKDApCi0jZGVmaW5lIEdEVEhfVU5MT0NL
X1NDU0lfRE9ORShmbGFncykgICAgZG8ge30gd2hpbGUgKDApCi0jZGVmaW5lIEdEVEhfTE9DS19T
Q1NJX0RPQ01EKCkgICAgICAgICAgZG8ge30gd2hpbGUgKDApCi0jZGVmaW5lIEdEVEhfVU5MT0NL
X1NDU0lfRE9DTUQoKSAgICAgICAgZG8ge30gd2hpbGUgKDApCisjZGVmaW5lIEdEVEhfTE9DS19T
Q1NJX0RPTkUoZGV2LCBmbGFncykgICAgICBkbyB7fSB3aGlsZSAoMCkKKyNkZWZpbmUgR0RUSF9V
TkxPQ0tfU0NTSV9ET05FKGRldiwgZmxhZ3MpICAgIGRvIHt9IHdoaWxlICgwKQorI2RlZmluZSBH
RFRIX0xPQ0tfU0NTSV9ET0NNRChkZXYpICAgICAgICAgIGRvIHt9IHdoaWxlICgwKQorI2RlZmlu
ZSBHRFRIX1VOTE9DS19TQ1NJX0RPQ01EKGRldikgICAgICAgIGRvIHt9IHdoaWxlICgwKQogI2Vu
ZGlmCiAKIC8qIExJTE8gYW5kIG1vZHByb2JlL2luc21vZCBwYXJhbWV0ZXJzICovCkBAIC0zMzM5
LDkgKzMzMzksOSBAQAogICAgIGlmIChydmFsID09IDIpIHsKICAgICAgICAgZ2R0aF9wdXRxKGhh
bnVtLHNjcCxzY3AtPlNDcC50aGlzX3Jlc2lkdWFsKTsKICAgICB9IGVsc2UgaWYgKHJ2YWwgPT0g
MSkgewotICAgICAgICBHRFRIX0xPQ0tfU0NTSV9ET05FKGZsYWdzKTsKKyAgICAgICAgR0RUSF9M
T0NLX1NDU0lfRE9ORShzY3AtPmhvc3QsIGZsYWdzKTsKICAgICAgICAgc2NwLT5zY3NpX2RvbmUo
c2NwKTsKLSAgICAgICAgR0RUSF9VTkxPQ0tfU0NTSV9ET05FKGZsYWdzKTsKKyAgICAgICAgR0RU
SF9VTkxPQ0tfU0NTSV9ET05FKHNjcC0+aG9zdCxmbGFncyk7CiAgICAgfQogICAgIGdkdGhfbmV4
dChoYW51bSk7CiB9Ck9ubHkgaW4gLi9saW51eC9kcml2ZXJzL3Njc2kvOiBnZHRoLmN+CmRpZmYg
LXVyIC4vbGludXgub3JpZy9kcml2ZXJzL3Njc2kvZ3ZwMTEuYyAuL2xpbnV4L2RyaXZlcnMvc2Nz
aS9ndnAxMS5jCi0tLSAuL2xpbnV4Lm9yaWcvZHJpdmVycy9zY3NpL2d2cDExLmMJRnJpIE9jdCAy
NiAwMDo1Mzo1MSAyMDAxCisrKyAuL2xpbnV4L2RyaXZlcnMvc2NzaS9ndnAxMS5jCU1vbiBKYW4g
MjggMDU6NTk6MjggMjAwMgpAQCAtNDAsOSArNDAsOSBAQAogCWlmICghKHN0YXR1cyAmIEdWUDEx
X0RNQUNfSU5UX1BFTkRJTkcpKQogCSAgICBjb250aW51ZTsKIAotCXNwaW5fbG9ja19pcnFzYXZl
KCZpb19yZXF1ZXN0X2xvY2ssIGZsYWdzKTsKKwlzcGluX2xvY2tfaXJxc2F2ZSgmaW5zdGFuY2Ut
Pmhvc3RfbG9jaywgZmxhZ3MpOwogCXdkMzNjOTNfaW50ciAoaW5zdGFuY2UpOwotCXNwaW5fdW5s
b2NrX2lycXJlc3RvcmUoJmlvX3JlcXVlc3RfbG9jaywgZmxhZ3MpOworCXNwaW5fdW5sb2NrX2ly
cXJlc3RvcmUoJmluc3RhbmNlLT5ob3N0X2xvY2ssIGZsYWdzKTsKICAgICB9CiB9CiAKT25seSBp
biAuL2xpbnV4L2RyaXZlcnMvc2NzaS86IGd2cDExLmN+CmRpZmYgLXVyIC4vbGludXgub3JpZy9k
cml2ZXJzL3Njc2kvaWJtbWNhLmMgLi9saW51eC9kcml2ZXJzL3Njc2kvaWJtbWNhLmMKLS0tIC4v
bGludXgub3JpZy9kcml2ZXJzL3Njc2kvaWJtbWNhLmMJV2VkIE1heSAgMiAwMzowNTowMCAyMDAx
CisrKyAuL2xpbnV4L2RyaXZlcnMvc2NzaS9pYm1tY2EuYwlNb24gSmFuIDI4IDA1OjQwOjA4IDIw
MDIKQEAgLTQxLDggKzQxLDggQEAKIC8qIGN1cnJlbnQgdmVyc2lvbiBvZiB0aGlzIGRyaXZlci1z
b3VyY2U6ICovCiAjZGVmaW5lIElCTU1DQV9TQ1NJX0RSSVZFUl9WRVJTSU9OICI0LjBiIgogCi0j
ZGVmaW5lIElCTUxPQ0sgc3Bpbl9sb2NrX2lycXNhdmUoJmlvX3JlcXVlc3RfbG9jaywgZmxhZ3Mp
OwotI2RlZmluZSBJQk1VTkxPQ0sgc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmaW9fcmVxdWVzdF9s
b2NrLCBmbGFncyk7CisjZGVmaW5lIElCTUxPQ0soZGV2KSBzcGluX2xvY2tfaXJxc2F2ZSgmKChz
dHJ1Y3QgU2NzaV9Ib3N0ICopZGV2KS0+aG9zdF9sb2NrLCBmbGFncyk7CisjZGVmaW5lIElCTVVO
TE9DSyhkZXYpIHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJigoc3RydWN0IFNjc2lfSG9zdCAqKWRl
diktPmhvc3RfbG9jaywgZmxhZ3MpOwogCiAvKiBkcml2ZXIgY29uZmlndXJhdGlvbiAqLwogI2Rl
ZmluZSBJTV9NQVhfSE9TVFMgICAgIDggLyogbWF4aW11bSBudW1iZXIgb2YgaG9zdCBhZGFwdGVy
cyAqLwpAQCAtNTA1LDE0ICs1MDUsMTQgQEAKICAgIFNjc2lfQ21uZCAqY21kOwogICAgaW50IGxh
c3RTQ1NJOwogCi0gICBJQk1MT0NLCisgICBJQk1MT0NLKGRldl9pZCkKICAgIC8qIHNlYXJjaCBm
b3Igb25lIGFkYXB0ZXItcmVzcG9uc2Ugb24gc2hhcmVkIGludGVycnVwdCAqLwogICAgZm9yICho
b3N0X2luZGV4PTA7CiAJaG9zdHNbaG9zdF9pbmRleF0gJiYgIShpbmIoSU1fU1RBVF9SRUcoaG9z
dF9pbmRleCkpICYgSU1fSU5UUl9SRVFVRVNUKTsKIAlob3N0X2luZGV4KyspOwogICAgLyogcmV0
dXJuIGlmIHNvbWUgb3RoZXIgZGV2aWNlIG9uIHRoaXMgSVJRIGNhdXNlZCB0aGUgaW50ZXJydXB0
ICovCiAgICBpZiAoIWhvc3RzW2hvc3RfaW5kZXhdKSB7Ci0gICAgICBJQk1VTkxPQ0sKKyAgICAg
IElCTVVOTE9DSyhkZXZfaWQpCiAgICAgICByZXR1cm47CiAgICB9CiAKQEAgLTUyMSwxNSArNTIx
LDE1IEBACiAgICBpZiAoKHJlc2V0X3N0YXR1cyhob3N0X2luZGV4KSA9PSBJTV9SRVNFVF9OT1Rf
SU5fUFJPR1JFU1NfTk9fSU5UKXx8CiAgICAgICAgKHJlc2V0X3N0YXR1cyhob3N0X2luZGV4KSA9
PSBJTV9SRVNFVF9GSU5JU0hFRF9PS19OT19JTlQpKSB7CiAgICAgICByZXNldF9zdGF0dXMoaG9z
dF9pbmRleCkgPSBJTV9SRVNFVF9OT1RfSU5fUFJPR1JFU1M7Ci0gICAgICBJQk1VTkxPQ0sKKyAg
ICAgIElCTVVOTE9DSyhkZXZfaWQpCiAgICAgICByZXR1cm47CiAgICB9CiAKICAgIC8qbXVzdCB3
YWl0IGZvciBhdHRlbnRpb24gcmVnIG5vdCBidXN5LCB0aGVuIHNlbmQgRU9JIHRvIHN1YnN5c3Rl
bSAqLwogICAgd2hpbGUgKDEpIHsKICAgICAgIGlmICghKGluYiAoSU1fU1RBVF9SRUcoaG9zdF9p
bmRleCkpICYgSU1fQlVTWSkpIGJyZWFrOwotICAgICAgSUJNVU5MT0NLIC8qIGN5Y2xlIGludGVy
cnVwdCAqLwotICAgICAgSUJNTE9DSworICAgICAgSUJNVU5MT0NLKGRldl9pZCkgLyogY3ljbGUg
aW50ZXJydXB0ICovCisgICAgICBJQk1MT0NLKGRldl9pZCkKICAgIH0KICAgIGlob3N0X2luZGV4
PWhvc3RfaW5kZXg7CiAgICAvKmdldCBjb21tYW5kIHJlc3VsdCBhbmQgbG9naWNhbCBkZXZpY2Ug
Ki8KQEAgLTUzOSw3ICs1MzksNyBAQAogICAgLyogZ2V0IHRoZSBsYXN0X3Njc2lfY29tbWFuZCBo
ZXJlICovCiAgICBsYXN0U0NTSSA9IGxhc3Rfc2NzaV9jb21tYW5kKGlob3N0X2luZGV4KVtsZG5d
OwogICAgb3V0YiAoSU1fRU9JIHwgbGRuLCBJTV9BVFROX1JFRyhpaG9zdF9pbmRleCkpOwotICAg
SUJNVU5MT0NLCisgICBJQk1VTkxPQ0soZGV2X2lkKQogICAgLyp0aGVzZSBzaG91bGQgbmV2ZXIg
aGFwcGVuIChodyBmYWlscywgb3IgYSBsb2NhbCBwcm9ncmFtbWluZyBidWcpICovCiAgICBpZiAo
IWdsb2JhbF9jb21tYW5kX2Vycm9yX2V4Y3VzZSkgewogICAgICAgc3dpdGNoIChjbWRfcmVzdWx0
KSB7CkBAIC03MzEsMTQgKzczMSwxNCBAQAogICAgdW5zaWduZWQgbG9uZyBmbGFnczsKICAgIC8q
IG11c3Qgd2FpdCBmb3IgYXR0ZW50aW9uIHJlZyBub3QgYnVzeSAqLwogICAgd2hpbGUgKDEpIHsK
LSAgICAgIElCTUxPQ0sKKyAgICAgIElCTUxPQ0soaG9zdHNbaG9zdF9pbmRleF0pCiAgICAgICBp
ZiAoIShpbmIoSU1fU1RBVF9SRUcoaG9zdF9pbmRleCkpICYgSU1fQlVTWSkpIGJyZWFrOwotICAg
ICAgSUJNVU5MT0NLCisgICAgICBJQk1VTkxPQ0soaG9zdHNbaG9zdF9pbmRleF0pCiAgICB9CiAg
ICAvKiB3cml0ZSByZWdpc3RlcnMgYW5kIGVuYWJsZSBzeXN0ZW0gaW50ZXJydXB0cyAqLwogICAg
b3V0bCAoY21kX3JlZywgSU1fQ01EX1JFRyhob3N0X2luZGV4KSk7CiAgICBvdXRiIChhdHRuX3Jl
ZywgSU1fQVRUTl9SRUcoaG9zdF9pbmRleCkpOwotICAgSUJNVU5MT0NLCisgICBJQk1VTkxPQ0so
aG9zdHNbaG9zdF9pbmRleF0pCiAgICByZXR1cm47CiB9CiAKQEAgLTE0NDIsNyArMTQ0Miw3IEBA
CiAgICB1bnNpZ25lZCBpbnQgcG9zWzhdOwogICAgdW5zaWduZWQgbG9uZyBmbGFnczsKIAotICAg
SUJNTE9DSworICAgSUJNTE9DSyhkZXYpCiAgICBzaHBudCA9IGRldjsgLyogYXNzaWduIGhvc3Qt
c3RydWN0dXJlIHRvIGxvY2FsIHBvaW50ZXIgKi8KICAgIGxlbiA9IDA7IC8qIHNldCBmaWxsZWQg
dGV4dC1idWZmZXIgaW5kZXggdG8gMCAqLwogICAgLyogZ2V0IHRoZSBfc3BlY2lhbCBjb250ZW50
cyBvZiB0aGUgaG9zdGRhdGEgc3RydWN0dXJlICovCkBAIC0xNDk2LDcgKzE0OTYsNyBAQAogICAg
d2hpbGUgKCBsZW4gJSBzaXplb2YoIGludCApICE9ICggc2l6ZW9mICggaW50ICkgLSAxICkgKQog
ICAgICBsZW4gKz0gc3ByaW50ZiAoYnVmK2xlbiwgIiAiKTsKICAgIGxlbiArPSBzcHJpbnRmIChi
dWYrbGVuLCAiXG4iKTsKLSAgIElCTVVOTE9DSworICAgSUJNVU5MT0NLKHNocG50KQogICAgcmV0
dXJuIGxlbjsKIH0KIApAQCAtMjE5Miw3ICsyMTkyLDcgQEAKICNpZmRlZiBJTV9ERUJVR19QUk9C
RQogICAgcHJpbnRrKCJJQk0gTUNBIFNDU0k6IEFib3J0IHN1YnJvdXRpbmUgY2FsbGVkLi4uXG4i
KTsKICNlbmRpZgotICAgSUJNTE9DSworICAgSUJNTE9DSyhjbWQtPmhvc3QpCiAgICBzaHBudCA9
IGNtZC0+aG9zdDsKICAgIC8qIHNlYXJjaCBmb3IgdGhlIHJpZ2h0IGhvc3RhZGFwdGVyICovCiAg
ICBmb3IgKGhvc3RfaW5kZXggPSAwOyBob3N0c1tob3N0X2luZGV4XSAmJiBob3N0c1tob3N0X2lu
ZGV4XS0+aG9zdF9ubyAhPSBzaHBudC0+aG9zdF9ubzsgaG9zdF9pbmRleCsrKTsKQEAgLTIyMDEs
NyArMjIwMSw3IEBACiAgICAgICBjbWQtPnJlc3VsdCA9IERJRF9OT19DT05ORUNUIDw8IDE2Owog
ICAgICAgaWYgKGNtZC0+c2NzaV9kb25lKSAoY21kLT5zY3NpX2RvbmUpIChjbWQpOwogICAgICAg
c2hwbnQgPSBjbWQtPmhvc3Q7Ci0gICAgICBJQk1VTkxPQ0sKKyAgICAgIElCTVVOTE9DSyhzaHBu
dCkKICNpZmRlZiBJTV9ERUJVR19QUk9CRQogICAgICAgcHJpbnRrKCJJQk0gTUNBIFNDU0k6IEFi
b3J0IGFkYXB0ZXIgc2VsZWN0aW9uIGZhaWxlZCFcbiIpOwogI2VuZGlmCkBAIC0yMjI0LDcgKzIy
MjQsNyBAQAogCiAgICAvKmlmIGNtZCBmb3IgdGhpcyBsZG4gaGFzIGFscmVhZHkgZmluaXNoZWQs
IG5vIG5lZWQgdG8gYWJvcnQgKi8KICAgIGlmICghbGQoaG9zdF9pbmRleClbbGRuXS5jbWQpIHsK
LSAgICAgIElCTVVOTE9DSworICAgICAgSUJNVU5MT0NLKHNocG50KQogICAgICAgcmV0dXJuIFND
U0lfQUJPUlRfTk9UX1JVTk5JTkc7CiAgICB9CiAKQEAgLTIyNDQsMTMgKzIyNDQsMTMgQEAKICAg
IHdoaWxlICgxKSB7CiAgICAgICBpZiAoIShpbmIgKElNX1NUQVRfUkVHKGhvc3RfaW5kZXgpKSAm
IElNX0JVU1kpKQogCWJyZWFrOwotICAgICAgSUJNVU5MT0NLCi0gICAgICBJQk1MT0NLCisgICAg
ICBJQk1VTkxPQ0soc2hwbnQpCisgICAgICBJQk1MT0NLKHNocG50KQogICAgfQogICAgLyogd3Jp
dGUgcmVnaXN0ZXJzIGFuZCBlbmFibGUgc3lzdGVtIGludGVycnVwdHMgKi8KICAgIG91dGwgKGlt
bV9jb21tYW5kLCBJTV9DTURfUkVHKGhvc3RfaW5kZXgpKTsKICAgIG91dGIgKElNX0lNTV9DTUQg
fCBsZG4sIElNX0FUVE5fUkVHKGhvc3RfaW5kZXgpKTsKLSAgIElCTVVOTE9DSworICAgSUJNVU5M
T0NLKHNocG50KQogI2lmZGVmIElNX0RFQlVHX1BST0JFCiAgICBwcmludGsoIklCTSBNQ0EgU0NT
STogQWJvcnQgcXVldWVkIHRvIGFkYXB0ZXIuLi5cbiIpOwogI2VuZGlmCkBAIC0yMjYyLDIxICsy
MjYyLDIxIEBACiAKICAgIC8qaWYgYWJvcnQgd2VudCB3ZWxsLCBjYWxsIHNhdmVkIGRvbmUsIHRo
ZW4gcmV0dXJuIHN1Y2Nlc3Mgb3IgZXJyb3IgKi8KICAgIGlmIChjbWQtPnJlc3VsdCA9PSAoRElE
X0FCT1JUIDw8IDE2KSkgewotICAgICAgSUJNTE9DSworICAgICAgSUJNTE9DSyhzaHBudCkKICAg
ICAgIGNtZC0+cmVzdWx0IHw9IERJRF9BQk9SVCA8PCAxNjsKICAgICAgIGlmIChjbWQtPnNjc2lf
ZG9uZSkgKGNtZC0+c2NzaV9kb25lKSAoY21kKTsKICAgICAgIGxkKGhvc3RfaW5kZXgpW2xkbl0u
Y21kID0gTlVMTDsKLSAgICAgIElCTVVOTE9DSworICAgICAgSUJNVU5MT0NLKHNocG50KQogI2lm
ZGVmIElNX0RFQlVHX1BST0JFCiAgICAgICBwcmludGsoIklCTSBNQ0EgU0NTSTogQWJvcnQgZmlu
aXNoZWQgd2l0aCBzdWNjZXNzLlxuIik7CiAjZW5kaWYKICAgICAgIHJldHVybiBTQ1NJX0FCT1JU
X1NVQ0NFU1M7CiAgICB9IGVsc2UgewotICAgICAgSUJNTE9DSworICAgICAgSUJNTE9DSyhzaHBu
dCkKICAgICAgIGNtZC0+cmVzdWx0IHw9IERJRF9OT19DT05ORUNUIDw8IDE2OwogICAgICAgaWYg
KGNtZC0+c2NzaV9kb25lKSAoY21kLT5zY3NpX2RvbmUpIChjbWQpOwogICAgICAgbGQoaG9zdF9p
bmRleClbbGRuXS5jbWQgPSBOVUxMOwotICAgICAgSUJNVU5MT0NLCisgICAgICBJQk1VTkxPQ0so
c2hwbnQpCiAjaWZkZWYgSU1fREVCVUdfUFJPQkUKICAgICAgIHByaW50aygiSUJNIE1DQSBTQ1NJ
OiBBYm9ydCBmYWlsZWQuXG4iKTsKICNlbmRpZgpAQCAtMjI5Nyw3ICsyMjk3LDcgQEAKICAgICAg
IHByaW50aygiSUJNIE1DQSBTQ1NJOiBSZXNldCBjYWxsZWQgd2l0aCBOVUxMLWNvbW1hbmQhXG4i
KTsKICAgICAgIHJldHVybihTQ1NJX1JFU0VUX1NOT09aRSk7CiAgICB9Ci0gICBJQk1MT0NLCisg
ICBJQk1MT0NLKGNtZC0+aG9zdCkKICAgIHRpY2tzID0gSU1fUkVTRVRfREVMQVkqSFo7CiAgICBz
aHBudCA9IGNtZC0+aG9zdDsKICAgIC8qIHNlYXJjaCBmb3IgdGhlIHJpZ2h0IGhvc3RhZGFwdGVy
ICovCkBAIC0yMzA4LDcgKzIzMDgsNyBAQAogCiAgICBpZiAobG9jYWxfY2hlY2tpbmdfcGhhc2Vf
ZmxhZyhob3N0X2luZGV4KSkgewogICAgICAgcHJpbnRrKCJJQk0gTUNBIFNDU0k6IHVuYWJsZSB0
byByZXNldCB3aGlsZSBjaGVja2luZyBkZXZpY2VzLlxuIik7Ci0gICAgICBJQk1VTkxPQ0sKKyAg
ICAgIElCTVVOTE9DSyhzaHBudCkKICAgICAgIHJldHVybiBTQ1NJX1JFU0VUX1NOT09aRTsKICAg
IH0KIApAQCAtMjMyNCw4ICsyMzI0LDggQEAKICAgIHdoaWxlICgxKSB7CiAgICAgICBpZiAoIShp
bmIgKElNX1NUQVRfUkVHKGhvc3RfaW5kZXgpKSAmIElNX0JVU1kpKQogCWJyZWFrOwotICAgICAg
SUJNVU5MT0NLCi0gICAgICBJQk1MT0NLCisgICAgICBJQk1VTkxPQ0soc2hwbnQpCisgICAgICBJ
Qk1MT0NLKHNocG50KQogICAgfQogICAgLyp3cml0ZSByZWdpc3RlcnMgYW5kIGVuYWJsZSBzeXN0
ZW0gaW50ZXJydXB0cyAqLwogICAgb3V0bCAoaW1tX2NvbW1hbmQsIElNX0NNRF9SRUcoaG9zdF9p
bmRleCkpOwpAQCAtMjM0Miw3ICsyMzQyLDcgQEAKICAgICAgIHByaW50aygiSUJNIE1DQSBTQ1NJ
OiByZXNldCBkaWQgbm90IGNvbXBsZXRlIHdpdGhpbiAlZCBzZWNvbmRzLlxuIiwKIAkgICAgIElN
X1JFU0VUX0RFTEFZKTsKICAgICAgIHJlc2V0X3N0YXR1cyhob3N0X2luZGV4KSA9IElNX1JFU0VU
X0ZJTklTSEVEX0ZBSUw7Ci0gICAgICBJQk1VTkxPQ0sKKyAgICAgIElCTVVOTE9DSyhzaHBudCkK
ICAgICAgIHJldHVybiBTQ1NJX1JFU0VUX0VSUk9SOwogICAgfQogCkBAIC0yMzYwLDEzICsyMzYw
LDEzIEBACiAgICAvKiBpZiByZXNldCBmYWlsZWQsIGp1c3QgcmV0dXJuIGFuIGVycm9yICovCiAg
ICBpZiAocmVzZXRfc3RhdHVzKGhvc3RfaW5kZXgpID09IElNX1JFU0VUX0ZJTklTSEVEX0ZBSUwp
IHsKICAgICAgIHByaW50aygiSUJNIE1DQSBTQ1NJOiByZXNldCBmYWlsZWQuXG4iKTsKLSAgICAg
IElCTVVOTE9DSworICAgICAgSUJNVU5MT0NLKHNocG50KQogICAgICAgcmV0dXJuIFNDU0lfUkVT
RVRfRVJST1I7CiAgICB9CiAKICAgIC8qIHNvIHJlc2V0IGZpbmlzaGVkIG9rIC0gY2FsbCBvdXRz
dGFuZGluZyBkb25lJ3MsIGFuZCByZXR1cm4gc3VjY2VzcyAqLwogICAgcHJpbnRrICgiSUJNIE1D
QSBTQ1NJOiBSZXNldCBzdWNjZXNzZnVsbHkgY29tcGxldGVkLlxuIik7Ci0gICBJQk1VTkxPQ0sK
KyAgIElCTVVOTE9DSyhzaHBudCkKICAgIGZvciAoaSA9IDA7IGkgPCBNQVhfTE9HX0RFVjsgaSsr
KSB7CiAgICAgICBjbWRfYWlkID0gbGQoaG9zdF9pbmRleClbaV0uY21kOwogICAgICAgaWYgKGNt
ZF9haWQgJiYgY21kX2FpZC0+c2NzaV9kb25lKSB7CkBAIC0yNDU0LDggKzI0NTQsOCBAQAogICAg
dW5zaWduZWQgbG9uZyBmbGFnczsKICAgIGludCBtYXhfcHVuOwogCi0gICBJQk1MT0NLCiAgICBm
b3IgKGkgPSAwOyBob3N0c1tpXSAmJiBob3N0c1tpXS0+aG9zdF9ubyAhPSBob3N0bm87IGkrKyk7
CisgICBJQk1MT0NLKGhvc3RzW2ldKSAvKiBDaGVjayBpdCAqLwogICAgc2hwbnQgPSBob3N0c1tp
XTsKICAgIGhvc3RfaW5kZXggPSBpOwogICAgaWYgKCFzaHBudCkgewpAQCAtMjUzNyw3ICsyNTM3
LDcgQEAKICAgICpzdGFydCA9IGJ1ZmZlciArIG9mZnNldDsKICAgIGxlbiAtPSBvZmZzZXQ7CiAg
ICBpZiAobGVuID4gbGVuZ3RoKSBsZW4gPSBsZW5ndGg7Ci0gICBJQk1VTkxPQ0sKKyAgIElCTVVO
TE9DSyhzaHBudCkKICAgIHJldHVybiBsZW47CiB9CiAKT25seSBpbiAuL2xpbnV4L2RyaXZlcnMv
c2NzaS86IGlibW1jYS5jfgpkaWZmIC11ciAuL2xpbnV4Lm9yaWcvZHJpdmVycy9zY3NpL2luaTkx
MDB1LmMgLi9saW51eC9kcml2ZXJzL3Njc2kvaW5pOTEwMHUuYwotLS0gLi9saW51eC5vcmlnL2Ry
aXZlcnMvc2NzaS9pbmk5MTAwdS5jCVN1biBTZXAgMzAgMjM6MjY6MDcgMjAwMQorKysgLi9saW51
eC9kcml2ZXJzL3Njc2kvaW5pOTEwMHUuYwlNb24gSmFuIDI4IDA2OjM4OjUxIDIwMDIKQEAgLTY5
OSwxMTMgKzY5OSwxMjEgQEAKIHN0YXRpYyB2b2lkIGk5MXVfaW50cjAoaW50IGlycW5vLCB2b2lk
ICpkZXZfaWQsIHN0cnVjdCBwdF9yZWdzICpyZWdzKQogewogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7
Ci0KKwlzdHJ1Y3QgU2NzaV9Ib3N0ICpkZXYgPSBkZXZfaWQ7CisJCiAJaWYgKHR1bF9oY3NbMF0u
SENTX0ludHIgIT0gaXJxbm8pCiAJCXJldHVybjsKIAotCXNwaW5fbG9ja19pcnFzYXZlKCZpb19y
ZXF1ZXN0X2xvY2ssIGZsYWdzKTsKKwlzcGluX2xvY2tfaXJxc2F2ZSgmZGV2LT5ob3N0X2xvY2ss
IGZsYWdzKTsKIAogCXR1bF9pc3IoJnR1bF9oY3NbMF0pOwogCi0Jc3Bpbl91bmxvY2tfaXJxcmVz
dG9yZSgmaW9fcmVxdWVzdF9sb2NrLCBmbGFncyk7CisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgm
ZGV2LT5ob3N0X2xvY2ssIGZsYWdzKTsKIH0KIAogc3RhdGljIHZvaWQgaTkxdV9pbnRyMShpbnQg
aXJxbm8sIHZvaWQgKmRldl9pZCwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MpCiB7CiAJdW5zaWduZWQg
bG9uZyBmbGFnczsKLQorCXN0cnVjdCBTY3NpX0hvc3QgKmRldiA9IGRldl9pZDsKKwkKIAlpZiAo
dHVsX2hjc1sxXS5IQ1NfSW50ciAhPSBpcnFubykKIAkJcmV0dXJuOwogCi0Jc3Bpbl9sb2NrX2ly
cXNhdmUoJmlvX3JlcXVlc3RfbG9jaywgZmxhZ3MpOworCXNwaW5fbG9ja19pcnFzYXZlKCZkZXYt
Pmhvc3RfbG9jaywgZmxhZ3MpOwogCiAJdHVsX2lzcigmdHVsX2hjc1sxXSk7CiAKLQlzcGluX3Vu
bG9ja19pcnFyZXN0b3JlKCZpb19yZXF1ZXN0X2xvY2ssIGZsYWdzKTsKKwlzcGluX3VubG9ja19p
cnFyZXN0b3JlKCZkZXYtPmhvc3RfbG9jaywgZmxhZ3MpOwogfQogCiBzdGF0aWMgdm9pZCBpOTF1
X2ludHIyKGludCBpcnFubywgdm9pZCAqZGV2X2lkLCBzdHJ1Y3QgcHRfcmVncyAqcmVncykKIHsK
IAl1bnNpZ25lZCBsb25nIGZsYWdzOwotCisJc3RydWN0IFNjc2lfSG9zdCAqZGV2ID0gZGV2X2lk
OworCQogCWlmICh0dWxfaGNzWzJdLkhDU19JbnRyICE9IGlycW5vKQogCQlyZXR1cm47CiAKLQlz
cGluX2xvY2tfaXJxc2F2ZSgmaW9fcmVxdWVzdF9sb2NrLCBmbGFncyk7CisJc3Bpbl9sb2NrX2ly
cXNhdmUoJmRldi0+aG9zdF9sb2NrLCBmbGFncyk7CiAKIAl0dWxfaXNyKCZ0dWxfaGNzWzJdKTsK
IAotCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmlvX3JlcXVlc3RfbG9jaywgZmxhZ3MpOworCXNw
aW5fdW5sb2NrX2lycXJlc3RvcmUoJmRldi0+aG9zdF9sb2NrLCBmbGFncyk7CiB9CiAKIHN0YXRp
YyB2b2lkIGk5MXVfaW50cjMoaW50IGlycW5vLCB2b2lkICpkZXZfaWQsIHN0cnVjdCBwdF9yZWdz
ICpyZWdzKQogewogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7Ci0KKwlzdHJ1Y3QgU2NzaV9Ib3N0ICpk
ZXYgPSBkZXZfaWQ7CisJCiAJaWYgKHR1bF9oY3NbM10uSENTX0ludHIgIT0gaXJxbm8pCiAJCXJl
dHVybjsKIAotCXNwaW5fbG9ja19pcnFzYXZlKCZpb19yZXF1ZXN0X2xvY2ssIGZsYWdzKTsKKwlz
cGluX2xvY2tfaXJxc2F2ZSgmZGV2LT5ob3N0X2xvY2ssIGZsYWdzKTsKIAogCXR1bF9pc3IoJnR1
bF9oY3NbM10pOwogCi0Jc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmaW9fcmVxdWVzdF9sb2NrLCBm
bGFncyk7CisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZGV2LT5ob3N0X2xvY2ssIGZsYWdzKTsK
IH0KIAogc3RhdGljIHZvaWQgaTkxdV9pbnRyNChpbnQgaXJxbm8sIHZvaWQgKmRldl9pZCwgc3Ry
dWN0IHB0X3JlZ3MgKnJlZ3MpCiB7CiAJdW5zaWduZWQgbG9uZyBmbGFnczsKLQorCXN0cnVjdCBT
Y3NpX0hvc3QgKmRldiA9IGRldl9pZDsKKwkKIAlpZiAodHVsX2hjc1s0XS5IQ1NfSW50ciAhPSBp
cnFubykKIAkJcmV0dXJuOwogCi0Jc3Bpbl9sb2NrX2lycXNhdmUoJmlvX3JlcXVlc3RfbG9jaywg
ZmxhZ3MpOworCXNwaW5fbG9ja19pcnFzYXZlKCZkZXYtPmhvc3RfbG9jaywgZmxhZ3MpOwogCiAJ
dHVsX2lzcigmdHVsX2hjc1s0XSk7CiAKLQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZpb19yZXF1
ZXN0X2xvY2ssIGZsYWdzKTsKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZkZXYtPmhvc3RfbG9j
aywgZmxhZ3MpOwogfQogCiBzdGF0aWMgdm9pZCBpOTF1X2ludHI1KGludCBpcnFubywgdm9pZCAq
ZGV2X2lkLCBzdHJ1Y3QgcHRfcmVncyAqcmVncykKIHsKIAl1bnNpZ25lZCBsb25nIGZsYWdzOwot
CisJc3RydWN0IFNjc2lfSG9zdCAqZGV2ID0gZGV2X2lkOworCQogCWlmICh0dWxfaGNzWzVdLkhD
U19JbnRyICE9IGlycW5vKQogCQlyZXR1cm47CiAKLQlzcGluX2xvY2tfaXJxc2F2ZSgmaW9fcmVx
dWVzdF9sb2NrLCBmbGFncyk7CisJc3Bpbl9sb2NrX2lycXNhdmUoJmRldi0+aG9zdF9sb2NrLCBm
bGFncyk7CiAKIAl0dWxfaXNyKCZ0dWxfaGNzWzVdKTsKIAotCXNwaW5fdW5sb2NrX2lycXJlc3Rv
cmUoJmlvX3JlcXVlc3RfbG9jaywgZmxhZ3MpOworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmRl
di0+aG9zdF9sb2NrLCBmbGFncyk7CiB9CiAKIHN0YXRpYyB2b2lkIGk5MXVfaW50cjYoaW50IGly
cW5vLCB2b2lkICpkZXZfaWQsIHN0cnVjdCBwdF9yZWdzICpyZWdzKQogewogCXVuc2lnbmVkIGxv
bmcgZmxhZ3M7Ci0KKwlzdHJ1Y3QgU2NzaV9Ib3N0ICpkZXYgPSBkZXZfaWQ7CisJCiAJaWYgKHR1
bF9oY3NbNl0uSENTX0ludHIgIT0gaXJxbm8pCiAJCXJldHVybjsKIAotCXNwaW5fbG9ja19pcnFz
YXZlKCZpb19yZXF1ZXN0X2xvY2ssIGZsYWdzKTsKKwlzcGluX2xvY2tfaXJxc2F2ZSgmZGV2LT5o
b3N0X2xvY2ssIGZsYWdzKTsKIAogCXR1bF9pc3IoJnR1bF9oY3NbNl0pOwogCi0Jc3Bpbl91bmxv
Y2tfaXJxcmVzdG9yZSgmaW9fcmVxdWVzdF9sb2NrLCBmbGFncyk7CisJc3Bpbl91bmxvY2tfaXJx
cmVzdG9yZSgmZGV2LT5ob3N0X2xvY2ssIGZsYWdzKTsKIH0KIAogc3RhdGljIHZvaWQgaTkxdV9p
bnRyNyhpbnQgaXJxbm8sIHZvaWQgKmRldl9pZCwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MpCiB7CiAJ
dW5zaWduZWQgbG9uZyBmbGFnczsKLQorCXN0cnVjdCBTY3NpX0hvc3QgKmRldiA9IGRldl9pZDsK
KwkKIAlpZiAodHVsX2hjc1s3XS5IQ1NfSW50ciAhPSBpcnFubykKIAkJcmV0dXJuOwogCi0Jc3Bp
bl9sb2NrX2lycXNhdmUoJmlvX3JlcXVlc3RfbG9jaywgZmxhZ3MpOworCXNwaW5fbG9ja19pcnFz
YXZlKCZkZXYtPmhvc3RfbG9jaywgZmxhZ3MpOwogCiAJdHVsX2lzcigmdHVsX2hjc1s3XSk7CiAK
LQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZpb19yZXF1ZXN0X2xvY2ssIGZsYWdzKTsKKwlzcGlu
X3VubG9ja19pcnFyZXN0b3JlKCZkZXYtPmhvc3RfbG9jaywgZmxhZ3MpOwogfQogCiAvKiAKT25s
eSBpbiAuL2xpbnV4L2RyaXZlcnMvc2NzaS86IGluaTkxMDB1LmN+CmRpZmYgLXVyIC4vbGludXgu
b3JpZy9kcml2ZXJzL3Njc2kvaW5pYTEwMC5jIC4vbGludXgvZHJpdmVycy9zY3NpL2luaWExMDAu
YwotLS0gLi9saW51eC5vcmlnL2RyaXZlcnMvc2NzaS9pbmlhMTAwLmMJU3VuIFNlcCAzMCAyMzoy
NjowNyAyMDAxCisrKyAuL2xpbnV4L2RyaXZlcnMvc2NzaS9pbmlhMTAwLmMJTW9uIEphbiAyOCAw
NTowMDozMyAyMDAyCkBAIC03MTcsMTkgKzcxNywxOSBAQAogfQogCiAKLXN0YXRpYyB2b2lkIHN1
YkludHIoT1JDX0hDUyAqIHBIQ0IsIGludCBpcnFubykKK3N0YXRpYyB2b2lkIHN1YkludHIoT1JD
X0hDUyAqIHBIQ0IsIGludCBpcnFubywgc3RydWN0IFNjc2lfSG9zdCAqZGV2KQogewogCXVuc2ln
bmVkIGxvbmcgZmxhZ3M7CiAKLQlzcGluX2xvY2tfaXJxc2F2ZSgmaW9fcmVxdWVzdF9sb2NrLCBm
bGFncyk7CisJc3Bpbl9sb2NrX2lycXNhdmUoJmRldi0+aG9zdF9sb2NrLCBmbGFncyk7CiAKIAlp
ZiAocEhDQi0+SENTX0ludHIgIT0gaXJxbm8pIHsKLQkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgm
aW9fcmVxdWVzdF9sb2NrLCBmbGFncyk7CisJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmRldi0+
aG9zdF9sb2NrLCBmbGFncyk7CiAJCXJldHVybjsKIAl9CiAJb3JjX2ludGVycnVwdChwSENCKTsK
IAotCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmlvX3JlcXVlc3RfbG9jaywgZmxhZ3MpOworCXNw
aW5fdW5sb2NrX2lycXJlc3RvcmUoJmRldi0+aG9zdF9sb2NrLCBmbGFncyk7CiB9CiAKIC8qCkBA
IC03MzcsNDIgKzczNyw0MiBAQAogICovCiBzdGF0aWMgdm9pZCBpbmlhMTAwX2ludHIwKGludCBp
cnFubywgdm9pZCAqZGV2X2lkLCBzdHJ1Y3QgcHRfcmVncyAqcmVncykKIHsKLQlzdWJJbnRyKCZv
cmNfaGNzWzBdLCBpcnFubyk7CisJc3ViSW50cigmb3JjX2hjc1swXSwgaXJxbm8sIGRldl9pZCk7
CiB9CiAKIHN0YXRpYyB2b2lkIGluaWExMDBfaW50cjEoaW50IGlycW5vLCB2b2lkICpkZXZfaWQs
IHN0cnVjdCBwdF9yZWdzICpyZWdzKQogewotCXN1YkludHIoJm9yY19oY3NbMV0sIGlycW5vKTsK
KwlzdWJJbnRyKCZvcmNfaGNzWzFdLCBpcnFubywgZGV2X2lkKTsKIH0KIAogc3RhdGljIHZvaWQg
aW5pYTEwMF9pbnRyMihpbnQgaXJxbm8sIHZvaWQgKmRldl9pZCwgc3RydWN0IHB0X3JlZ3MgKnJl
Z3MpCiB7Ci0Jc3ViSW50cigmb3JjX2hjc1syXSwgaXJxbm8pOworCXN1YkludHIoJm9yY19oY3Nb
Ml0sIGlycW5vLCBkZXZfaWQpOwogfQogCiBzdGF0aWMgdm9pZCBpbmlhMTAwX2ludHIzKGludCBp
cnFubywgdm9pZCAqZGV2X2lkLCBzdHJ1Y3QgcHRfcmVncyAqcmVncykKIHsKLQlzdWJJbnRyKCZv
cmNfaGNzWzNdLCBpcnFubyk7CisJc3ViSW50cigmb3JjX2hjc1szXSwgaXJxbm8sIGRldl9pZCk7
CiB9CiAKIHN0YXRpYyB2b2lkIGluaWExMDBfaW50cjQoaW50IGlycW5vLCB2b2lkICpkZXZfaWQs
IHN0cnVjdCBwdF9yZWdzICpyZWdzKQogewotCXN1YkludHIoJm9yY19oY3NbNF0sIGlycW5vKTsK
KwlzdWJJbnRyKCZvcmNfaGNzWzRdLCBpcnFubywgZGV2X2lkKTsKIH0KIAogc3RhdGljIHZvaWQg
aW5pYTEwMF9pbnRyNShpbnQgaXJxbm8sIHZvaWQgKmRldl9pZCwgc3RydWN0IHB0X3JlZ3MgKnJl
Z3MpCiB7Ci0Jc3ViSW50cigmb3JjX2hjc1s1XSwgaXJxbm8pOworCXN1YkludHIoJm9yY19oY3Nb
NV0sIGlycW5vLCBkZXZfaWQpOwogfQogCiBzdGF0aWMgdm9pZCBpbmlhMTAwX2ludHI2KGludCBp
cnFubywgdm9pZCAqZGV2X2lkLCBzdHJ1Y3QgcHRfcmVncyAqcmVncykKIHsKLQlzdWJJbnRyKCZv
cmNfaGNzWzZdLCBpcnFubyk7CisJc3ViSW50cigmb3JjX2hjc1s2XSwgaXJxbm8sIGRldl9pZCk7
CiB9CiAKIHN0YXRpYyB2b2lkIGluaWExMDBfaW50cjcoaW50IGlycW5vLCB2b2lkICpkZXZfaWQs
IHN0cnVjdCBwdF9yZWdzICpyZWdzKQogewotCXN1YkludHIoJm9yY19oY3NbN10sIGlycW5vKTsK
KwlzdWJJbnRyKCZvcmNfaGNzWzddLCBpcnFubywgZGV2X2lkKTsKIH0KIAogLyogCk9ubHkgaW4g
Li9saW51eC9kcml2ZXJzL3Njc2kvOiBpbmlhMTAwLmN+CmRpZmYgLXVyIC4vbGludXgub3JpZy9k
cml2ZXJzL3Njc2kvamF6el9lc3AuYyAuL2xpbnV4L2RyaXZlcnMvc2NzaS9qYXp6X2VzcC5jCi0t
LSAuL2xpbnV4Lm9yaWcvZHJpdmVycy9zY3NpL2phenpfZXNwLmMJRnJpIE9jdCAyNiAwMDo1Mzo1
MSAyMDAxCisrKyAuL2xpbnV4L2RyaXZlcnMvc2NzaS9qYXp6X2VzcC5jCU1vbiBKYW4gMjggMDY6
MjY6NTIgMjAwMgpAQCAtMTIwLDcgKzEyMCw3IEBACiAJCiAJZXNwLT5pcnEgPSBKQVpaX1NDU0lf
SVJROwogCXJlcXVlc3RfaXJxKEpBWlpfU0NTSV9JUlEsIGVzcF9pbnRyLCBTQV9JTlRFUlJVUFQs
ICJKQVpaIFNDU0kiLAotCSAgICAgICAgICAgIE5VTEwpOworCSAgICAgICAgICAgIGVzcC0+ZWhv
c3QpOwogCiAJLyoKIAkgKiBGSVhNRSwgbG9vayBpZiB0aGUgc2NzaSBpZCBpcyBhdmFpbGFiZSBm
cm9tIE5WUkFNCk9ubHkgaW4gLi9saW51eC9kcml2ZXJzL3Njc2kvOiBqYXp6X2VzcC5jfgpkaWZm
IC11ciAuL2xpbnV4Lm9yaWcvZHJpdmVycy9zY3NpL21hYzUzYzk0LmMgLi9saW51eC9kcml2ZXJz
L3Njc2kvbWFjNTNjOTQuYwotLS0gLi9saW51eC5vcmlnL2RyaXZlcnMvc2NzaS9tYWM1M2M5NC5j
CUZyaSBGZWIgIDkgMjI6MzA6MjMgMjAwMQorKysgLi9saW51eC9kcml2ZXJzL3Njc2kvbWFjNTNj
OTQuYwlNb24gSmFuIDI4IDA2OjE4OjIwIDIwMDIKQEAgLTI5MiwxMCArMjkyLDExIEBACiBkb19t
YWM1M2M5NF9pbnRlcnJ1cHQoaW50IGlycSwgdm9pZCAqZGV2X2lkLCBzdHJ1Y3QgcHRfcmVncyAq
cHRyZWdzKQogewogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7Ci0KLQlzcGluX2xvY2tfaXJxc2F2ZSgm
aW9fcmVxdWVzdF9sb2NrLCBmbGFncyk7CisJc3RydWN0IFNjc2lfSG9zdCAqZGV2ID0gKChzdHJ1
Y3QgZnNjX3N0YXRlICopIGRldl9pZCktPmN1cnJlbnRfcmVxLT5ob3N0OworCQorCXNwaW5fbG9j
a19pcnFzYXZlKCZkZXYtPmhvc3RfbG9jaywgZmxhZ3MpOwogCW1hYzUzYzk0X2ludGVycnVwdChp
cnEsIGRldl9pZCwgcHRyZWdzKTsKLQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZpb19yZXF1ZXN0
X2xvY2ssIGZsYWdzKTsKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZkZXYtPmhvc3RfbG9jaywg
ZmxhZ3MpOwogfQogCiBzdGF0aWMgdm9pZApPbmx5IGluIC4vbGludXgvZHJpdmVycy9zY3NpLzog
bWFjNTNjOTQuY34KZGlmZiAtdXIgLi9saW51eC5vcmlnL2RyaXZlcnMvc2NzaS9tYWNfZXNwLmMg
Li9saW51eC9kcml2ZXJzL3Njc2kvbWFjX2VzcC5jCi0tLSAuL2xpbnV4Lm9yaWcvZHJpdmVycy9z
Y3NpL21hY19lc3AuYwlGcmkgT2N0IDI2IDAwOjUzOjUxIDIwMDEKKysrIC4vbGludXgvZHJpdmVy
cy9zY3NpL21hY19lc3AuYwlNb24gSmFuIDI4IDA2OjI1OjU3IDIwMDIKQEAgLTQxNyw5ICs0MTcs
OSBAQAogCiAJCQllc3AtPmlycSA9IElSUV9NQUNfU0NTSTsKIAotCQkJcmVxdWVzdF9pcnEoSVJR
X01BQ19TQ1NJLCBlc3BfaW50ciwgMCwgIk1hYyBFU1AgU0NTSSIsIGVzcCk7CisJCQlyZXF1ZXN0
X2lycShJUlFfTUFDX1NDU0ksIGVzcF9pbnRyLCAwLCAiTWFjIEVTUCBTQ1NJIiwgZXNwLT5laG9z
dCk7CiAjaWYgMAkvKiBjb25mbGljdHMgd2l0aCBJT1AgQURCICovCi0JCQlyZXF1ZXN0X2lycShJ
UlFfTUFDX1NDU0lEUlEsIGZha2VfZHJxLCAwLCAiTWFjIEVTUCBEUlEiLCBlc3ApOworCQkJcmVx
dWVzdF9pcnEoSVJRX01BQ19TQ1NJRFJRLCBmYWtlX2RycSwgMCwgIk1hYyBFU1AgRFJRIiwgZXNw
LT5laG9zdCk7CiAjZW5kaWYKIAogCQkJaWYgKG1hY2ludG9zaF9jb25maWctPnNjc2lfdHlwZSA9
PSBNQUNfU0NTSV9RVUFEUkEpIHsKQEAgLTQzMyw3ICs0MzMsNyBAQAogCiAJCQllc3AtPmlycSA9
IElSUV9NQUNfU0NTSURSUTsKICNpZiAwCS8qIGNvbmZsaWN0cyB3aXRoIElPUCBBREIgKi8KLQkJ
CXJlcXVlc3RfaXJxKElSUV9NQUNfU0NTSURSUSwgZXNwX2ludHIsIDAsICJNYWMgRVNQIFNDU0kg
MiIsIGVzcCk7CisJCQlyZXF1ZXN0X2lycShJUlFfTUFDX1NDU0lEUlEsIGVzcF9pbnRyLCAwLCAi
TWFjIEVTUCBTQ1NJIDIiLCBlc3AtPmVob3N0KTsKICNlbmRpZgogCiAJCQllc3AtPmNmcmVxID0g
MjUwMDAwMDA7Ck9ubHkgaW4gLi9saW51eC9kcml2ZXJzL3Njc2kvOiBtYWNfZXNwLmN+CmRpZmYg
LXVyIC4vbGludXgub3JpZy9kcml2ZXJzL3Njc2kvbWNhXzUzYzl4LmMgLi9saW51eC9kcml2ZXJz
L3Njc2kvbWNhXzUzYzl4LmMKLS0tIC4vbGludXgub3JpZy9kcml2ZXJzL3Njc2kvbWNhXzUzYzl4
LmMJRnJpIE9jdCAyNiAwMDo1Mzo1MSAyMDAxCisrKyAuL2xpbnV4L2RyaXZlcnMvc2NzaS9tY2Ff
NTNjOXguYwlNb24gSmFuIDI4IDA2OjI2OjMwIDIwMDIKQEAgLTE1Myw3ICsxNTMsNyBAQAogCQkJ
ZXNwLT5zbG90ID0gc2xvdDsKIAogCQkJaWYgKHJlcXVlc3RfaXJxKGVzcC0+aXJxLCBlc3BfaW50
ciwgMCwKLQkJCSAiTkNSIDUzYzl4IFNDU0kiLCBlc3BfaW50cikpCisJCQkgIk5DUiA1M2M5eCBT
Q1NJIiwgZXNwLT5laG9zdCkpCiAJCQl7CiAJCQkJcHJpbnRrKCJVbmFibGUgdG8gcmVxdWVzdCBJ
UlEgJWQuXG4iLCBlc3AtPmlycSk7CiAJCQkJZXNwX2RlYWxsb2NhdGUoZXNwKTsKT25seSBpbiAu
L2xpbnV4L2RyaXZlcnMvc2NzaS86IG1jYV81M2M5eC5jfgpkaWZmIC11ciAuL2xpbnV4Lm9yaWcv
ZHJpdmVycy9zY3NpL21lZ2FyYWlkLmMgLi9saW51eC9kcml2ZXJzL3Njc2kvbWVnYXJhaWQuYwot
LS0gLi9saW51eC5vcmlnL2RyaXZlcnMvc2NzaS9tZWdhcmFpZC5jCVRodSBEZWMgMjcgMTk6MTc6
NDMgMjAwMQorKysgLi9saW51eC9kcml2ZXJzL3Njc2kvbWVnYXJhaWQuYwlNb24gSmFuIDI4IDA1
OjU1OjU2IDIwMDIKQEAgLTYxNCw4ICs2MTQsOCBAQAogI2RlZmluZSBEUklWRVJfTE9DSyhwKQog
I2RlZmluZSBEUklWRVJfVU5MT0NLKHApCiAjZGVmaW5lIElPX0xPQ0tfVCB1bnNpZ25lZCBsb25n
IGlvX2ZsYWdzID0gMAotI2RlZmluZSBJT19MT0NLKGhvc3QpIHNwaW5fbG9ja19pcnFzYXZlKCZp
b19yZXF1ZXN0X2xvY2ssaW9fZmxhZ3MpOwotI2RlZmluZSBJT19VTkxPQ0soaG9zdCkgc3Bpbl91
bmxvY2tfaXJxcmVzdG9yZSgmaW9fcmVxdWVzdF9sb2NrLGlvX2ZsYWdzKTsKKyNkZWZpbmUgSU9f
TE9DSyhob3N0KSBzcGluX2xvY2tfaXJxc2F2ZSgmaG9zdC0+aG9zdF9sb2NrLGlvX2ZsYWdzKTsK
KyNkZWZpbmUgSU9fVU5MT0NLKGhvc3QpIHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmhvc3QtPmhv
c3RfbG9jayxpb19mbGFncyk7CiAKICNkZWZpbmUgcGNpX2ZyZWVfY29uc2lzdGVudChhLGIsYyxk
KQogI2RlZmluZSBwY2lfdW5tYXBfc2luZ2xlKGEsYixjLGQpCk9ubHkgaW4gLi9saW51eC9kcml2
ZXJzL3Njc2kvOiBtZWdhcmFpZC5jfgpkaWZmIC11ciAuL2xpbnV4Lm9yaWcvZHJpdmVycy9zY3Np
L21lc2guYyAuL2xpbnV4L2RyaXZlcnMvc2NzaS9tZXNoLmMKLS0tIC4vbGludXgub3JpZy9kcml2
ZXJzL3Njc2kvbWVzaC5jCVdlZCBTZXAgMTkgMDE6MjM6MTQgMjAwMQorKysgLi9saW51eC9kcml2
ZXJzL3Njc2kvbWVzaC5jCU1vbiBKYW4gMjggMDY6MTk6MjUgMjAwMgpAQCAtNzk1LDE1ICs3OTUs
MTUgQEAKIAl1bnNpZ25lZCBsb25nIGZsYWdzOwogCiAJZm9yICg7OykgewotCQlzcGluX2xvY2tf
aXJxc2F2ZSgmaW9fcmVxdWVzdF9sb2NrLCBmbGFncyk7CisJCXNwaW5fbG9ja19pcnFzYXZlKCZt
cy0+aG9zdC0+aG9zdF9sb2NrLCBmbGFncyk7CiAJCWNtZCA9IG1zLT5jb21wbGV0ZWRfcTsKIAkJ
aWYgKGNtZCA9PSBOVUxMKSB7Ci0JCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZpb19yZXF1ZXN0
X2xvY2ssIGZsYWdzKTsKKwkJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJm1zLT5ob3N0LT5ob3N0
X2xvY2ssIGZsYWdzKTsKIAkJCWJyZWFrOwogCQl9CiAJCW1zLT5jb21wbGV0ZWRfcSA9IChTY3Np
X0NtbmQgKikgY21kLT5ob3N0X3NjcmliYmxlOwogCQkoKmNtZC0+c2NzaV9kb25lKShjbWQpOwot
CQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZpb19yZXF1ZXN0X2xvY2ssIGZsYWdzKTsKKwkJc3Bp
bl91bmxvY2tfaXJxcmVzdG9yZSgmbXMtPmhvc3QtPmhvc3RfbG9jaywgZmxhZ3MpOwogCX0KIH0K
ICNlbmRpZiAvKiBNRVNIX05FV19TVFlMRV9FSCAqLwpAQCAtMTQ1OCwxMCArMTQ1OCwxMSBAQAog
ZG9fbWVzaF9pbnRlcnJ1cHQoaW50IGlycSwgdm9pZCAqZGV2X2lkLCBzdHJ1Y3QgcHRfcmVncyAq
cHRyZWdzKQogewogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7Ci0KLQlzcGluX2xvY2tfaXJxc2F2ZSgm
aW9fcmVxdWVzdF9sb2NrLCBmbGFncyk7CisJc3RydWN0IFNjc2lfSG9zdCAqZGV2ID0gKChzdHJ1
Y3QgbWVjaF9zdGF0ZSAqKWRldl9pZCktPmhvc3Q7CisJCisJc3Bpbl9sb2NrX2lycXNhdmUoJmRl
di0+aG9zdF9sb2NrLCBmbGFncyk7CiAJbWVzaF9pbnRlcnJ1cHQoaXJxLCBkZXZfaWQsIHB0cmVn
cyk7Ci0Jc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmaW9fcmVxdWVzdF9sb2NrLCBmbGFncyk7CisJ
c3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZGV2LT5ob3N0X2xvY2ssIGZsYWdzKTsKIH0KIAogc3Rh
dGljIHZvaWQgaGFuZGxlX2Vycm9yKHN0cnVjdCBtZXNoX3N0YXRlICptcykKT25seSBpbiAuL2xp
bnV4L2RyaXZlcnMvc2NzaS86IG1lc2guY34KZGlmZiAtdXIgLi9saW51eC5vcmlnL2RyaXZlcnMv
c2NzaS9va3RhZ29uX2VzcC5jIC4vbGludXgvZHJpdmVycy9zY3NpL29rdGFnb25fZXNwLmMKLS0t
IC4vbGludXgub3JpZy9kcml2ZXJzL3Njc2kvb2t0YWdvbl9lc3AuYwlGcmkgT2N0IDI2IDAwOjUz
OjUxIDIwMDEKKysrIC4vbGludXgvZHJpdmVycy9zY3NpL29rdGFnb25fZXNwLmMJTW9uIEphbiAy
OCAwNjoyNTowOSAyMDAyCkBAIC0xOTgsNyArMTk4LDcgQEAKIAogCQllc3AtPmlycSA9IElSUV9B
TUlHQV9QT1JUUzsKIAkJcmVxdWVzdF9pcnEoSVJRX0FNSUdBX1BPUlRTLCBlc3BfaW50ciwgU0Ff
U0hJUlEsCi0JCQkgICAgIkJTQyBPa3RhZ29uIFNDU0kiLCBlc3BfaW50cik7CisJCQkgICAgIkJT
QyBPa3RhZ29uIFNDU0kiLCBlc3AtPmVob3N0KTsKIAogCQkvKiBGaWd1cmUgb3V0IG91ciBzY3Np
IElEIG9uIHRoZSBidXMgKi8KIAkJZXNwLT5zY3NpX2lkID0gNzsKT25seSBpbiAuL2xpbnV4L2Ry
aXZlcnMvc2NzaS86IG9rdGFnb25fZXNwLmN+CmRpZmYgLXVyIC4vbGludXgub3JpZy9kcml2ZXJz
L3Njc2kvcGFzMTYuYyAuL2xpbnV4L2RyaXZlcnMvc2NzaS9wYXMxNi5jCi0tLSAuL2xpbnV4Lm9y
aWcvZHJpdmVycy9zY3NpL3BhczE2LmMJU3VuIFNlcCAzMCAyMzoyNjowNyAyMDAxCisrKyAuL2xp
bnV4L2RyaXZlcnMvc2NzaS9wYXMxNi5jCU1vbiBKYW4gMjggMDU6Mjc6MzQgMjAwMgpAQCAtNDUx
LDcgKzQ1MSw3IEBACiAJICAgIGluc3RhbmNlLT5pcnEgPSBOQ1I1MzgwX3Byb2JlX2lycShpbnN0
YW5jZSwgUEFTMTZfSVJRUyk7CiAKIAlpZiAoaW5zdGFuY2UtPmlycSAhPSBJUlFfTk9ORSkgCi0J
ICAgIGlmIChyZXF1ZXN0X2lycShpbnN0YW5jZS0+aXJxLCBkb19wYXMxNl9pbnRyLCBTQV9JTlRF
UlJVUFQsICJwYXMxNiIsIE5VTEwpKSB7CisJICAgIGlmIChyZXF1ZXN0X2lycShpbnN0YW5jZS0+
aXJxLCBkb19wYXMxNl9pbnRyLCBTQV9JTlRFUlJVUFQsICJwYXMxNiIsIGluc3RhbmNlKSkgewog
CQlwcmludGsoInNjc2klZCA6IElSUSVkIG5vdCBmcmVlLCBpbnRlcnJ1cHRzIGRpc2FibGVkXG4i
LCAKIAkJICAgIGluc3RhbmNlLT5ob3N0X25vLCBpbnN0YW5jZS0+aXJxKTsKIAkJaW5zdGFuY2Ut
PmlycSA9IElSUV9OT05FOwpPbmx5IGluIC4vbGludXgvZHJpdmVycy9zY3NpLzogcGFzMTYuY34K
T25seSBpbiAuL2xpbnV4L2RyaXZlcnMvc2NzaS9wY21jaWE6IC5kZXBlbmQKZGlmZiAtdXIgLi9s
aW51eC5vcmlnL2RyaXZlcnMvc2NzaS9wcGEuYyAuL2xpbnV4L2RyaXZlcnMvc2NzaS9wcGEuYwot
LS0gLi9saW51eC5vcmlnL2RyaXZlcnMvc2NzaS9wcGEuYwlTdW4gU2VwIDMwIDIzOjI2OjA3IDIw
MDEKKysrIC4vbGludXgvZHJpdmVycy9zY3NpL3BwYS5jCU1vbiBKYW4gMjggMDU6NDk6NDIgMjAw
MgpAQCAtMTE5LDcgKzExOSw2IEBACiAgICAgICogdW5sb2NrIHRvIGFsbG93IHRoZSBsb3dsZXZl
bCBwYXJwb3J0IGRyaXZlciB0byBwcm9iZQogICAgICAqIHRoZSBpcnFzCiAgICAgICovCi0gICAg
c3Bpbl91bmxvY2tfaXJxKCZpb19yZXF1ZXN0X2xvY2spOwogICAgIHBiID0gcGFycG9ydF9lbnVt
ZXJhdGUoKTsKIAogICAgIHByaW50aygicHBhOiBWZXJzaW9uICVzXG4iLCBQUEFfVkVSU0lPTik7
CkBAIC0xMjgsNyArMTI3LDYgQEAKIAogICAgIGlmICghcGIpIHsKIAlwcmludGsoInBwYTogcGFy
cG9ydCByZXBvcnRzIG5vIGRldmljZXMuXG4iKTsKLQlzcGluX2xvY2tfaXJxKCZpb19yZXF1ZXN0
X2xvY2spOwogCXJldHVybiAwOwogICAgIH0KICAgcmV0cnlfZW50cnk6CkBAIC0xNTQsNyArMTUy
LDcgQEAKIAkJICAgICAgInBhcmRldmljZSBpcyBvd25pbmcgdGhlIHBvcnQgZm9yIHRvbyBsb25n
dGltZSFcbiIsCiAJCQkgICBpKTsKIAkJICAgIHBhcnBvcnRfdW5yZWdpc3Rlcl9kZXZpY2UocHBh
X2hvc3RzW2ldLmRldik7Ci0JCSAgICBzcGluX2xvY2tfaXJxKCZpb19yZXF1ZXN0X2xvY2spOwor
CQkgICAgc3Bpbl9sb2NrX2lycSgmcHBhX2hvc3RzW2ldLmN1cl9jbWQtPmhvc3QtPmhvc3RfbG9j
ayk7CiAJCSAgICByZXR1cm4gMDsKIAkJfQogCSAgICB9CkBAIC0yMjMsMTMgKzIyMSwxMyBAQAog
CSAgICBwcmludGsoIiAgc3VwcG9ydGVkIGJ5IHRoZSBpbW0gKFpJUCBQbHVzKSBkcml2ZXIuIElm
IHRoZVxuIik7CiAJICAgIHByaW50aygiICBjYWJsZSBpcyBtYXJrZWQgd2l0aCBcIkF1dG9EZXRl
Y3RcIiwgdGhpcyBpcyB3aGF0IGhhc1xuIik7CiAJICAgIHByaW50aygiICBoYXBwZW5lZC5cbiIp
OwotCSAgICBzcGluX2xvY2tfaXJxKCZpb19yZXF1ZXN0X2xvY2spOworCSAgICBzcGluX2xvY2tf
aXJxKCZocmVnLT5ob3N0X2xvY2spOwogCSAgICByZXR1cm4gMDsKIAl9CiAJdHJ5X2FnYWluID0g
MTsKIAlnb3RvIHJldHJ5X2VudHJ5OwogICAgIH0gZWxzZSB7Ci0Jc3Bpbl9sb2NrX2lycSgmaW9f
cmVxdWVzdF9sb2NrKTsKKwlzcGluX2xvY2tfaXJxKCZocmVnLT5ob3N0X2xvY2spOwogCXJldHVy
biAxOwkJLyogcmV0dXJuIG51bWJlciBvZiBob3N0cyBkZXRlY3RlZCAqLwogICAgIH0KIH0KQEAg
LTg0Nyw5ICs4NDUsOSBAQAogCiAgICAgdG1wLT5jdXJfY21kID0gMDsKICAgICAKLSAgICBzcGlu
X2xvY2tfaXJxc2F2ZSgmaW9fcmVxdWVzdF9sb2NrLCBmbGFncyk7CisgICAgc3Bpbl9sb2NrX2ly
cXNhdmUoJmNtZC0+aG9zdC0+aG9zdF9sb2NrLCBmbGFncyk7CiAgICAgY21kLT5zY3NpX2RvbmUo
Y21kKTsKLSAgICBzcGluX3VubG9ja19pcnFyZXN0b3JlKCZpb19yZXF1ZXN0X2xvY2ssIGZsYWdz
KTsKKyAgICBzcGluX3VubG9ja19pcnFyZXN0b3JlKCZjbWQtPmhvc3QtPmhvc3RfbG9jaywgZmxh
Z3MpOwogICAgIHJldHVybjsKIH0KIApPbmx5IGluIC4vbGludXgvZHJpdmVycy9zY3NpLzogcHBh
LmN+CmRpZmYgLXVyIC4vbGludXgub3JpZy9kcml2ZXJzL3Njc2kvcHNpMjQwaS5jIC4vbGludXgv
ZHJpdmVycy9zY3NpL3BzaTI0MGkuYwotLS0gLi9saW51eC5vcmlnL2RyaXZlcnMvc2NzaS9wc2ky
NDBpLmMJU3VuIFNlcCAzMCAyMzoyNjowNyAyMDAxCisrKyAuL2xpbnV4L2RyaXZlcnMvc2NzaS9w
c2kyNDBpLmMJTW9uIEphbiAyOCAwNjoxMjo0NyAyMDAyCkBAIC0zNzAsMTAgKzM3MCwxMSBAQAog
c3RhdGljIHZvaWQgZG9fSXJxX0hhbmRsZXIgKGludCBpcnEsIHZvaWQgKmRldl9pZCwgc3RydWN0
IHB0X3JlZ3MgKnJlZ3MpCiAJewogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7Ci0KLQlzcGluX2xvY2tf
aXJxc2F2ZSgmaW9fcmVxdWVzdF9sb2NrLCBmbGFncyk7CisJc3RydWN0IFNjc2lfSG9zdCAqZGV2
ID0gZGV2X2lkOworCQorCXNwaW5fbG9ja19pcnFzYXZlKCZkZXYtPmhvc3RfbG9jaywgZmxhZ3Mp
OwogCUlycV9IYW5kbGVyKGlycSwgZGV2X2lkLCByZWdzKTsKLQlzcGluX3VubG9ja19pcnFyZXN0
b3JlKCZpb19yZXF1ZXN0X2xvY2ssIGZsYWdzKTsKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZk
ZXYtPmhvc3RfbG9jaywgZmxhZ3MpOwogCX0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKglOYW1lOglQc2kyNDBpX1F1
ZXVlQ29tbWFuZApAQCAtNjAyLDcgKzYwMyw3IEBACiAKIAkJc2F2ZV9mbGFncyAoZmxhZ3MpOwog
CQljbGkgKCk7Ci0JCWlmICggcmVxdWVzdF9pcnEgKGNoaXBDb25maWcuaXJxLCBkb19JcnFfSGFu
ZGxlciwgMCwgInBzaTI0MGkiLCBOVUxMKSApCisJCWlmICggcmVxdWVzdF9pcnEgKGNoaXBDb25m
aWcuaXJxLCBkb19JcnFfSGFuZGxlciwgMCwgInBzaTI0MGkiLCBwc2hvc3QpICkKIAkJCXsKIAkJ
CXByaW50ayAoIlVuYWJsZSB0byBhbGxvY2F0ZSBJUlEgZm9yIFBTSS0yNDBJIGNvbnRyb2xsZXIu
XG4iKTsKIAkJCXJlc3RvcmVfZmxhZ3MgKGZsYWdzKTsKT25seSBpbiAuL2xpbnV4L2RyaXZlcnMv
c2NzaS86IHBzaTI0MGkuY34KZGlmZiAtdXIgLi9saW51eC5vcmlnL2RyaXZlcnMvc2NzaS9xbGEx
MjgwLmMgLi9saW51eC9kcml2ZXJzL3Njc2kvcWxhMTI4MC5jCi0tLSAuL2xpbnV4Lm9yaWcvZHJp
dmVycy9zY3NpL3FsYTEyODAuYwlTdW4gRGVjIDMwIDIxOjMxOjUxIDIwMDEKKysrIC4vbGludXgv
ZHJpdmVycy9zY3NpL3FsYTEyODAuYwlNb24gSmFuIDI4IDA2OjQxOjAyIDIwMDIKQEAgLTE1MjMs
MTEgKzE1MjMsMTEgQEAKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNpZiBMSU5VWF9WRVJTSU9O
X0NPREUgPj0gS0VSTkVMX1ZFUlNJT04oMiwxLDk1KQotICAgIHNwaW5fbG9ja19pcnFzYXZlKCZp
b19yZXF1ZXN0X2xvY2ssIGNwdV9mbGFncyk7CisgICAgc3Bpbl9sb2NrX2lycXNhdmUoJmhhLT5o
b3N0LT5ob3N0X2xvY2ssIGNwdV9mbGFncyk7CiAgICAgaWYodGVzdF9hbmRfc2V0X2JpdChRTEEx
MjgwX0lOX0lTUl9CSVQsICZoYS0+ZmxhZ3MpKQogICAgIHsKICAgICAgICAgQ09NVFJBQ0UoJ1gn
KQotICAgICAgICBzcGluX3VubG9ja19pcnFyZXN0b3JlKCZpb19yZXF1ZXN0X2xvY2ssIGNwdV9m
bGFncyk7CisgICAgICAgIHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmhhLT5ob3N0LT5ob3N0X2xv
Y2ssIGNwdV9mbGFncyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaGEtPmlzcl9jb3Vu
dCsrOwpAQCAtMTU0OCw3ICsxNTQ4LDcgQEAKICAgICAgICAgcWxhMTI4MF9kb25lKGhhLCAoc3Ji
X3QgKiopJmhhLT5kb25lX3FfZmlyc3QsIChzcmJfdCAqKikmaGEtPmRvbmVfcV9sYXN0KTsKIAog
ICAgIGNsZWFyX2JpdChRTEExMjgwX0lOX0lTUl9CSVQsICZoYS0+ZmxhZ3MpOwotICAgIHNwaW5f
dW5sb2NrX2lycXJlc3RvcmUoJmlvX3JlcXVlc3RfbG9jaywgY3B1X2ZsYWdzKTsKKyAgICBzcGlu
X3VubG9ja19pcnFyZXN0b3JlKCZoYS0+aG9zdC0+aG9zdF9sb2NrLCBjcHVfZmxhZ3MpOwogI2Vs
c2UgIC8qIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDIsMSw5NSkgKi8KIAog
ICAgIGlmKCB0ZXN0X2JpdChRTEExMjgwX0lOX0lTUl9CSVQsIChpbnQgKikmaGEtPmZsYWdzKSAp
CkBAIC0xNjE5LDcgKzE2MTksNyBAQAogCiAgICAgQ09NVFJBQ0UoJ3AnKSAgCiAjaWYgTElOVVhf
VkVSU0lPTl9DT0RFID4gS0VSTkVMX1ZFUlNJT04oMiwxLDk1KQotICAgIHNwaW5fbG9ja19pcnFz
YXZlKCZpb19yZXF1ZXN0X2xvY2ssIGNwdV9mbGFncyk7CisgICAgc3Bpbl9sb2NrX2lycXNhdmUo
JmhhLT5ob3N0LT5ob3N0X2xvY2ssIGNwdV9mbGFncyk7CiAjZW5kaWYKICAgICBpZiAoaGEtPmZs
YWdzLmlzcF9hYm9ydF9uZWVkZWQpCiAgICAgICAgIHFsYTEyODBfYWJvcnRfaXNwKGhhKTsKQEAg
LTE2MzEsNyArMTYzMSw3IEBACiAgICAgICAgIHFsYTEyODBfZG9uZShoYSwgKHNyYl90ICoqKSZo
YS0+ZG9uZV9xX2ZpcnN0LCAoc3JiX3QgKiopJmhhLT5kb25lX3FfbGFzdCk7CiAgICAgaGEtPmZs
YWdzLmRwY19zY2hlZCA9IEZBTFNFOwogI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA+IEtFUk5FTF9W
RVJTSU9OKDIsMSw5NSkKLSAgICBzcGluX3VubG9ja19pcnFyZXN0b3JlKCZpb19yZXF1ZXN0X2xv
Y2ssIGNwdV9mbGFncyk7CisgICAgc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmaGEtPmhvc3QtPmhv
c3RfbG9jaywgY3B1X2ZsYWdzKTsKICNlbmRpZgogfQogCk9ubHkgaW4gLi9saW51eC9kcml2ZXJz
L3Njc2kvOiBxbGExMjgwLmN+CmRpZmYgLXVyIC4vbGludXgub3JpZy9kcml2ZXJzL3Njc2kvc2Vh
Z2F0ZS5jIC4vbGludXgvZHJpdmVycy9zY3NpL3NlYWdhdGUuYwotLS0gLi9saW51eC5vcmlnL2Ry
aXZlcnMvc2NzaS9zZWFnYXRlLmMJU3VuIFNlcCAzMCAyMzoyNjowNyAyMDAxCisrKyAuL2xpbnV4
L2RyaXZlcnMvc2NzaS9zZWFnYXRlLmMJTW9uIEphbiAyOCAwNjowMDo0NyAyMDAyCkBAIC01MDMs
NyArNTAzLDcgQEAKIAlob3N0bm8gPSBpbnN0YW5jZS0+aG9zdF9ubzsKIAlpZiAocmVxdWVzdF9p
cnEgKGlycSwgZG9fc2VhZ2F0ZV9yZWNvbm5lY3RfaW50ciwgU0FfSU5URVJSVVBULAogCQkJIChj
b250cm9sbGVyX3R5cGUgPT0gU0VBR0FURSkgPyAic2VhZ2F0ZSIgOiAidG1jLTh4eCIsCi0JCQkg
TlVMTCkpIHsKKwkJCSBpbnN0YW5jZSkpIHsKIAkJcHJpbnRrICgic2NzaSVkIDogdW5hYmxlIHRv
IGFsbG9jYXRlIElSUSVkXG4iLCBob3N0bm8sIGlycSk7CiAJCXJldHVybiAwOwogCX0KQEAgLTYy
OSwxMCArNjI5LDExIEBACiBzdGF0aWMgdm9pZCBkb19zZWFnYXRlX3JlY29ubmVjdF9pbnRyIChp
bnQgaXJxLCB2b2lkICpkZXZfaWQsIHN0cnVjdCBwdF9yZWdzICpyZWdzKQogewogCXVuc2lnbmVk
IGxvbmcgZmxhZ3M7Ci0KLQlzcGluX2xvY2tfaXJxc2F2ZSAoJmlvX3JlcXVlc3RfbG9jaywgZmxh
Z3MpOworCXN0cnVjdCBTY3NpX0hvc3QgKmRldiA9IGRldl9pZDsKKwkKKwlzcGluX2xvY2tfaXJx
c2F2ZSAoJmRldi0+aG9zdF9sb2NrLCBmbGFncyk7CiAJc2VhZ2F0ZV9yZWNvbm5lY3RfaW50ciAo
aXJxLCBkZXZfaWQsIHJlZ3MpOwotCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUgKCZpb19yZXF1ZXN0
X2xvY2ssIGZsYWdzKTsKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlICgmZGV2LT5ob3N0X2xvY2ss
IGZsYWdzKTsKIH0KIAogc3RhdGljIHZvaWQgc2VhZ2F0ZV9yZWNvbm5lY3RfaW50ciAoaW50IGly
cSwgdm9pZCAqZGV2X2lkLCBzdHJ1Y3QgcHRfcmVncyAqcmVncykKT25seSBpbiAuL2xpbnV4L2Ry
aXZlcnMvc2NzaS86IHNlYWdhdGUuY34KZGlmZiAtdXIgLi9saW51eC5vcmlnL2RyaXZlcnMvc2Nz
aS9zZ2l3ZDkzLmMgLi9saW51eC9kcml2ZXJzL3Njc2kvc2dpd2Q5My5jCi0tLSAuL2xpbnV4Lm9y
aWcvZHJpdmVycy9zY3NpL3NnaXdkOTMuYwlTdW4gU2VwICA5IDIxOjUyOjM1IDIwMDEKKysrIC4v
bGludXgvZHJpdmVycy9zY3NpL3NnaXdkOTMuYwlNb24gSmFuIDI4IDA2OjMxOjUyIDIwMDIKQEAg
LTY2LDEwICs2NiwxMSBAQAogc3RhdGljIHZvaWQgc2dpd2Q5M19pbnRyKGludCBpcnEsIHZvaWQg
KmRldl9pZCwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MpCiB7CiAJdW5zaWduZWQgbG9uZyBmbGFnczsK
LQotCXNwaW5fbG9ja19pcnFzYXZlKCZpb19yZXF1ZXN0X2xvY2ssIGZsYWdzKTsKKwlzdHJ1Y3Qg
U2NzaV9Ib3N0ICpkZXYgPSBkZXZfaWQ7CisJCisJc3Bpbl9sb2NrX2lycXNhdmUoJmRldi0+aG9z
dF9sb2NrLCBmbGFncyk7CiAJd2QzM2M5M19pbnRyKChzdHJ1Y3QgU2NzaV9Ib3N0ICopIGRldl9p
ZCk7Ci0Jc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmaW9fcmVxdWVzdF9sb2NrLCBmbGFncyk7CisJ
c3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZGV2LT5ob3N0X2xvY2ssIGZsYWdzKTsKIH0KIAogI3Vu
ZGVmIERFQlVHX0RNQQpPbmx5IGluIC4vbGludXgvZHJpdmVycy9zY3NpLzogc2dpd2Q5My5jfgpk
aWZmIC11ciAuL2xpbnV4Lm9yaWcvZHJpdmVycy9zY3NpL3N1bjN4X2VzcC5jIC4vbGludXgvZHJp
dmVycy9zY3NpL3N1bjN4X2VzcC5jCi0tLSAuL2xpbnV4Lm9yaWcvZHJpdmVycy9zY3NpL3N1bjN4
X2VzcC5jCUZyaSBPY3QgMjYgMDA6NTM6NTEgMjAwMQorKysgLi9saW51eC9kcml2ZXJzL3Njc2kv
c3VuM3hfZXNwLmMJTW9uIEphbiAyOCAwNjoyMzo0MCAyMDAyCkBAIC0xMTIsNyArMTEyLDcgQEAK
IAogCWVzcC0+aXJxID0gMjsKIAlpZiAocmVxdWVzdF9pcnEoZXNwLT5pcnEsIGVzcF9pbnRyLCBT
QV9JTlRFUlJVUFQsIAotCQkJIlNVTjNYIFNDU0kiLCBOVUxMKSkgeworCQkJIlNVTjNYIFNDU0ki
LCBlc3AtPmVob3N0KSkgewogCQllc3BfZGVhbGxvY2F0ZShlc3ApOwogCQlyZXR1cm4gMDsKIAl9
Ck9ubHkgaW4gLi9saW51eC9kcml2ZXJzL3Njc2kvOiBzdW4zeF9lc3AuY34KZGlmZiAtdXIgLi9s
aW51eC5vcmlnL2RyaXZlcnMvc2NzaS9zeW01M2M0MTYuYyAuL2xpbnV4L2RyaXZlcnMvc2NzaS9z
eW01M2M0MTYuYwotLS0gLi9saW51eC5vcmlnL2RyaXZlcnMvc2NzaS9zeW01M2M0MTYuYwlTdW4g
U2VwIDMwIDIzOjI2OjA3IDIwMDEKKysrIC4vbGludXgvZHJpdmVycy9zY3NpL3N5bTUzYzQxNi5j
CU1vbiBKYW4gMjggMDQ6MjY6NDggMjAwMgpAQCAtMzM3LDYgKzMzNyw3IEBACiAKIHN0YXRpYyB2
b2lkIHN5bTUzYzQxNl9pbnRyX2hhbmRsZShpbnQgaXJxLCB2b2lkICpkZXZfaWQsIHN0cnVjdCBw
dF9yZWdzICpyZWdzKQogeworCXN0cnVjdCBTY3NpX0hvc3QgKmRldiA9IGRldl9pZDsKIAlpbnQg
YmFzZSA9IDA7CiAJaW50IGk7CiAJdW5zaWduZWQgbG9uZyBmbGFncyA9IDA7CkBAIC0zNTksMTEg
KzM2MCwxMSBAQAogCX0KIAkvKiBOb3cgd2UgaGF2ZSB0aGUgYmFzZSBhZGRyZXNzIGFuZCB3ZSBj
YW4gc3RhcnQgaGFuZGxpbmcgdGhlIGludGVycnVwdCAqLwogCi0Jc3Bpbl9sb2NrX2lycXNhdmUo
JmlvX3JlcXVlc3RfbG9jayxmbGFncyk7CisJc3Bpbl9sb2NrX2lycXNhdmUoJmRldi0+aG9zdF9s
b2NrLGZsYWdzKTsKIAlzdGF0dXNfcmVnID0gaW5iKGJhc2UgKyBTVEFUVVNfUkVHKTsKIAlwaW9f
aW50X3JlZyA9IGluYihiYXNlICsgUElPX0lOVF9SRUcpOwogCWludF9yZWcgPSBpbmIoYmFzZSAr
IElOVF9SRUcpOwotCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmlvX3JlcXVlc3RfbG9jaywgZmxh
Z3MpOworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmRldi0+aG9zdF9sb2NrLCBmbGFncyk7CiAK
IAkvKiBGaXJzdCwgd2UgaGFuZGxlIGVycm9yIGNvbmRpdGlvbnMgKi8KIAlpZihpbnRfcmVnICYg
U0NJKSAgICAgICAgIC8qIFNDU0kgUmVzZXQgKi8KQEAgLTM3MSw5ICszNzIsOSBAQAogCQlwcmlu
dGsoS0VSTl9ERUJVRyAic3ltNTNjNDE2OiBSZXNldCByZWNlaXZlZFxuIik7CiAJCWN1cnJlbnRf
Y29tbWFuZC0+U0NwLnBoYXNlID0gaWRsZTsKIAkJY3VycmVudF9jb21tYW5kLT5yZXN1bHQgPSBE
SURfUkVTRVQgPDwgMTY7Ci0JCXNwaW5fbG9ja19pcnFzYXZlKCZpb19yZXF1ZXN0X2xvY2ssIGZs
YWdzKTsKKwkJc3Bpbl9sb2NrX2lycXNhdmUoJmRldi0+aG9zdF9sb2NrLCBmbGFncyk7CiAJCWN1
cnJlbnRfY29tbWFuZC0+c2NzaV9kb25lKGN1cnJlbnRfY29tbWFuZCk7Ci0JCXNwaW5fdW5sb2Nr
X2lycXJlc3RvcmUoJmlvX3JlcXVlc3RfbG9jaywgZmxhZ3MpOworCQlzcGluX3VubG9ja19pcnFy
ZXN0b3JlKCZkZXYtPmhvc3RfbG9jaywgZmxhZ3MpOwogCQlyZXR1cm47CiAJfQogCWlmKGludF9y
ZWcgJiBJTENNRCkgICAgICAgLyogSWxsZWdhbCBDb21tYW5kICovCkBAIC0zODEsOSArMzgyLDkg
QEAKIAkJcHJpbnRrKEtFUk5fV0FSTklORyAic3ltNTNjNDE2OiBJbGxlZ2FsIENvbW1hbmQ6IDB4
JTAyeC5cbiIsIGluYihiYXNlICsgQ09NTUFORF9SRUcpKTsKIAkJY3VycmVudF9jb21tYW5kLT5T
Q3AucGhhc2UgPSBpZGxlOwogCQljdXJyZW50X2NvbW1hbmQtPnJlc3VsdCA9IERJRF9FUlJPUiA8
PCAxNjsKLQkJc3Bpbl9sb2NrX2lycXNhdmUoJmlvX3JlcXVlc3RfbG9jaywgZmxhZ3MpOworCQlz
cGluX2xvY2tfaXJxc2F2ZSgmZGV2LT5ob3N0X2xvY2ssIGZsYWdzKTsKIAkJY3VycmVudF9jb21t
YW5kLT5zY3NpX2RvbmUoY3VycmVudF9jb21tYW5kKTsKLQkJc3Bpbl91bmxvY2tfaXJxcmVzdG9y
ZSgmaW9fcmVxdWVzdF9sb2NrLCBmbGFncyk7CisJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmRl
di0+aG9zdF9sb2NrLCBmbGFncyk7CiAJCXJldHVybjsKIAl9CiAJaWYoc3RhdHVzX3JlZyAmIEdF
KSAgICAgICAgIC8qIEdyb3NzIEVycm9yICovCkBAIC0zOTEsOSArMzkyLDkgQEAKIAkJcHJpbnRr
KEtFUk5fV0FSTklORyAic3ltNTNjNDE2OiBDb250cm9sbGVyIHJlcG9ydHMgZ3Jvc3MgZXJyb3Iu
XG4iKTsKIAkJY3VycmVudF9jb21tYW5kLT5TQ3AucGhhc2UgPSBpZGxlOwogCQljdXJyZW50X2Nv
bW1hbmQtPnJlc3VsdCA9IERJRF9FUlJPUiA8PCAxNjsKLQkJc3Bpbl9sb2NrX2lycXNhdmUoJmlv
X3JlcXVlc3RfbG9jaywgZmxhZ3MpOworCQlzcGluX2xvY2tfaXJxc2F2ZSgmZGV2LT5ob3N0X2xv
Y2ssIGZsYWdzKTsKIAkJY3VycmVudF9jb21tYW5kLT5zY3NpX2RvbmUoY3VycmVudF9jb21tYW5k
KTsKLQkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmaW9fcmVxdWVzdF9sb2NrLCBmbGFncyk7CisJ
CXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmRldi0+aG9zdF9sb2NrLCBmbGFncyk7CiAJCXJldHVy
bjsKIAl9CiAJaWYoc3RhdHVzX3JlZyAmIFBFKSAgICAgICAgIC8qIFBhcml0eSBFcnJvciAqLwpA
QCAtNDAxLDkgKzQwMiw5IEBACiAJCXByaW50ayhLRVJOX1dBUk5JTkcgInN5bTUzYzQxNjpTQ1NJ
IHBhcml0eSBlcnJvci5cbiIpOwogCQljdXJyZW50X2NvbW1hbmQtPlNDcC5waGFzZSA9IGlkbGU7
CiAJCWN1cnJlbnRfY29tbWFuZC0+cmVzdWx0ID0gRElEX1BBUklUWSA8PCAxNjsKLQkJc3Bpbl9s
b2NrX2lycXNhdmUoJmlvX3JlcXVlc3RfbG9jaywgZmxhZ3MpOworCQlzcGluX2xvY2tfaXJxc2F2
ZSgmZGV2LT5ob3N0X2xvY2ssIGZsYWdzKTsKIAkJY3VycmVudF9jb21tYW5kLT5zY3NpX2RvbmUo
Y3VycmVudF9jb21tYW5kKTsKLQkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmaW9fcmVxdWVzdF9s
b2NrLCBmbGFncyk7CisJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmRldi0+aG9zdF9sb2NrLCBm
bGFncyk7CiAJCXJldHVybjsKIAl9CiAJaWYocGlvX2ludF9yZWcgJiAoQ0UgfCBPVUUpKQpAQCAt
NDExLDkgKzQxMiw5IEBACiAJCXByaW50ayhLRVJOX1dBUk5JTkcgInN5bTUzYzQxNjogUElPIGlu
dGVycnVwdCBlcnJvci5cbiIpOwogCQljdXJyZW50X2NvbW1hbmQtPlNDcC5waGFzZSA9IGlkbGU7
CiAJCWN1cnJlbnRfY29tbWFuZC0+cmVzdWx0ID0gRElEX0VSUk9SIDw8IDE2OwotCQlzcGluX2xv
Y2tfaXJxc2F2ZSgmaW9fcmVxdWVzdF9sb2NrLCBmbGFncyk7CisJCXNwaW5fbG9ja19pcnFzYXZl
KCZkZXYtPmhvc3RfbG9jaywgZmxhZ3MpOwogCQljdXJyZW50X2NvbW1hbmQtPnNjc2lfZG9uZShj
dXJyZW50X2NvbW1hbmQpOwotCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZpb19yZXF1ZXN0X2xv
Y2ssIGZsYWdzKTsKKwkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZGV2LT5ob3N0X2xvY2ssIGZs
YWdzKTsKIAkJcmV0dXJuOwogCX0KIAlpZihpbnRfcmVnICYgRElTKSAgICAgICAgICAgLyogRGlz
Y29ubmVjdCAqLwpAQCAtNDIzLDkgKzQyNCw5IEBACiAJCWVsc2UKIAkJCWN1cnJlbnRfY29tbWFu
ZC0+cmVzdWx0ID0gKGN1cnJlbnRfY29tbWFuZC0+U0NwLlN0YXR1cyAmIDB4RkYpIHwgKChjdXJy
ZW50X2NvbW1hbmQtPlNDcC5NZXNzYWdlICYgMHhGRikgPDwgOCkgfCAoRElEX09LIDw8IDE2KTsK
IAkJY3VycmVudF9jb21tYW5kLT5TQ3AucGhhc2UgPSBpZGxlOwotCQlzcGluX2xvY2tfaXJxc2F2
ZSgmaW9fcmVxdWVzdF9sb2NrLCBmbGFncyk7CisJCXNwaW5fbG9ja19pcnFzYXZlKCZkZXYtPmhv
c3RfbG9jaywgZmxhZ3MpOwogCQljdXJyZW50X2NvbW1hbmQtPnNjc2lfZG9uZShjdXJyZW50X2Nv
bW1hbmQpOwotCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZpb19yZXF1ZXN0X2xvY2ssIGZsYWdz
KTsKKwkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZGV2LT5ob3N0X2xvY2ssIGZsYWdzKTsKIAkJ
cmV0dXJuOwogCX0KIAkvKiBOb3cgd2UgaGFuZGxlIFNDU0kgcGhhc2VzICAgICAgICAgKi8KQEAg
LTcxOSw3ICs3MjAsNyBAQAogCQkJCWNsaSgpOwogCQkJCS8qIEZJWE1FOiBSZXF1ZXN0X2lycSB3
aXRoIENMSSBpcyBub3Qgc2FmZSAqLwogCQkJCS8qIFJlcXVlc3QgZm9yIHNwZWNpZmllZCBJUlEg
Ki8KLQkJCQlpZihyZXF1ZXN0X2lycShob3N0c1tpXS5pcnEsIHN5bTUzYzQxNl9pbnRyX2hhbmRs
ZSwgMCwgSUQsIE5VTEwpKQorCQkJCWlmKHJlcXVlc3RfaXJxKGhvc3RzW2ldLmlycSwgc3ltNTNj
NDE2X2ludHJfaGFuZGxlLCAwLCBJRCwgc2hwbnQpKQogCQkJCXsKIAkJCQkJcmVzdG9yZV9mbGFn
cyhmbGFncyk7CiAJCQkJCXByaW50ayhLRVJOX0VSUiAic3ltNTNjNDE2OiBVbmFibGUgdG8gYXNz
aWduIElSUSAlZFxuIiwgaG9zdHNbaV0uaXJxKTsKT25seSBpbiAuL2xpbnV4L2RyaXZlcnMvc2Nz
aS86IHN5bTUzYzQxNi5jfgpPbmx5IGluIC4vbGludXgvZHJpdmVycy9zY3NpL3N5bTUzYzh4eF8y
OiAuZGVwZW5kCmRpZmYgLXVyIC4vbGludXgub3JpZy9kcml2ZXJzL3Njc2kvdDEyOC5jIC4vbGlu
dXgvZHJpdmVycy9zY3NpL3QxMjguYwotLS0gLi9saW51eC5vcmlnL2RyaXZlcnMvc2NzaS90MTI4
LmMJU3VuIFNlcCAzMCAyMzoyNjowOCAyMDAxCisrKyAuL2xpbnV4L2RyaXZlcnMvc2NzaS90MTI4
LmMJTW9uIEphbiAyOCAwNToyODoxMCAyMDAyCkBAIC0yNDgsNyArMjQ4LDcgQEAKIAkgICAgaW5z
dGFuY2UtPmlycSA9IE5DUjUzODBfcHJvYmVfaXJxKGluc3RhbmNlLCBUMTI4X0lSUVMpOwogCiAJ
aWYgKGluc3RhbmNlLT5pcnEgIT0gSVJRX05PTkUpIAotCSAgICBpZiAocmVxdWVzdF9pcnEoaW5z
dGFuY2UtPmlycSwgZG9fdDEyOF9pbnRyLCBTQV9JTlRFUlJVUFQsICJ0MTI4IiwgTlVMTCkpIHsK
KwkgICAgaWYgKHJlcXVlc3RfaXJxKGluc3RhbmNlLT5pcnEsIGRvX3QxMjhfaW50ciwgU0FfSU5U
RVJSVVBULCAidDEyOCIsIGluc3RhbmNlKSkgewogCQlwcmludGsoInNjc2klZCA6IElSUSVkIG5v
dCBmcmVlLCBpbnRlcnJ1cHRzIGRpc2FibGVkXG4iLCAKIAkJICAgIGluc3RhbmNlLT5ob3N0X25v
LCBpbnN0YW5jZS0+aXJxKTsKIAkJaW5zdGFuY2UtPmlycSA9IElSUV9OT05FOwpPbmx5IGluIC4v
bGludXgvZHJpdmVycy9zY3NpLzogdDEyOC5jfgpkaWZmIC11ciAuL2xpbnV4Lm9yaWcvZHJpdmVy
cy9zY3NpL3Rtc2NzaW0uYyAuL2xpbnV4L2RyaXZlcnMvc2NzaS90bXNjc2ltLmMKLS0tIC4vbGlu
dXgub3JpZy9kcml2ZXJzL3Njc2kvdG1zY3NpbS5jCVRodSBEZWMgMjcgMTk6MTc6NDMgMjAwMQor
KysgLi9saW51eC9kcml2ZXJzL3Njc2kvdG1zY3NpbS5jCU1vbiBKYW4gMjggMDY6MDk6MDcgMjAw
MgpAQCAtMzA0LDggKzMwNCw4IEBACiAjICBkZWZpbmUgREMzOTBfSUZMQUdTIHVuc2lnbmVkIGxv
bmcgaWZsYWdzOwogIyAgZGVmaW5lIERDMzkwX0RGTEFHUyB1bnNpZ25lZCBsb25nIGRmbGFnczsg
CiAKLSMgIGRlZmluZSBEQzM5MF9MT0NLX0lPIHNwaW5fbG9ja19pcnFzYXZlICgmaW9fcmVxdWVz
dF9sb2NrLCBpZmxhZ3MpCi0jICBkZWZpbmUgREMzOTBfVU5MT0NLX0lPIHNwaW5fdW5sb2NrX2ly
cXJlc3RvcmUgKCZpb19yZXF1ZXN0X2xvY2ssIGlmbGFncykKKyMgIGRlZmluZSBEQzM5MF9MT0NL
X0lPIHNwaW5fbG9ja19pcnFzYXZlICgmKChzdHJ1Y3QgU2NzaV9Ib3N0ICopZGV2KS0+aG9zdF9s
b2NrLCBpZmxhZ3MpCisjICBkZWZpbmUgREMzOTBfVU5MT0NLX0lPIHNwaW5fdW5sb2NrX2lycXJl
c3RvcmUgKCYoKHN0cnVjdCBTY3NpX0hvc3QgKilkZXYpLT5ob3N0X2xvY2ssIGlmbGFncykKIAog
IyAgZGVmaW5lIERDMzkwX0xPQ0tfRFJWIHNwaW5fbG9ja19pcnFzYXZlICgmZGMzOTBfZHJ2bG9j
aywgZGZsYWdzKQogIyAgZGVmaW5lIERDMzkwX1VOTE9DS19EUlYgc3Bpbl91bmxvY2tfaXJxcmVz
dG9yZSAoJmRjMzkwX2RydmxvY2ssIGRmbGFncykKQEAgLTMzMSw4ICszMzEsOCBAQAogIyAgIGRl
ZmluZSBEQzM5MF9BRkxBR1MgdW5zaWduZWQgbG9uZyBhZmxhZ3M7CiAjICAgZGVmaW5lIERDMzkw
X0lGTEFHUyAKICMgIGRlZmluZSBEQzM5MF9ERkxBR1MgdW5zaWduZWQgbG9uZyBkZmxhZ3M7IAot
IyAgIGRlZmluZSBEQzM5MF9MT0NLX0lPIC8qIHNwaW5fbG9ja19pcnFzYXZlICgmaW9fcmVxdWVz
dF9sb2NrLCBpZmxhZ3MpICovCi0jICAgZGVmaW5lIERDMzkwX1VOTE9DS19JTyAvKiBzcGluX3Vu
bG9ja19pcnFyZXN0b3JlICgmaW9fcmVxdWVzdF9sb2NrLCBpZmxhZ3MpICovCisjICAgZGVmaW5l
IERDMzkwX0xPQ0tfSU8oZGV2KSAvKiBzcGluX2xvY2tfaXJxc2F2ZSAoJmlvX3JlcXVlc3RfbG9j
aywgaWZsYWdzKSAqLworIyAgIGRlZmluZSBEQzM5MF9VTkxPQ0tfSU8oZGV2KSAvKiBzcGluX3Vu
bG9ja19pcnFyZXN0b3JlICgmaW9fcmVxdWVzdF9sb2NrLCBpZmxhZ3MpICovCiAjICAgZGVmaW5l
IERDMzkwX0xPQ0tfRFJWIHNwaW5fbG9ja19pcnFzYXZlICgmZGMzOTBfZHJ2bG9jaywgZGZsYWdz
KQogIyAgIGRlZmluZSBEQzM5MF9VTkxPQ0tfRFJWIHNwaW5fdW5sb2NrX2lycXJlc3RvcmUgKCZk
YzM5MF9kcnZsb2NrLCBkZmxhZ3MpCiAjICAgZGVmaW5lIERDMzkwX0xPQ0tfRFJWX05JIHNwaW5f
bG9jayAoJmRjMzkwX2RydmxvY2spCkBAIC0zNDksOCArMzQ5LDggQEAKICMgICBkZWZpbmUgREMz
OTBfSUZMQUdTIHVuc2lnbmVkIGxvbmcgaWZsYWdzOwogIyAgIGRlZmluZSBEQzM5MF9ERkxBR1Mg
dW5zaWduZWQgbG9uZyBkZmxhZ3M7IAogICAgIHNwaW5sb2NrX3QgZGMzOTBfZHJ2bG9jayA9IFNQ
SU5fTE9DS19VTkxPQ0tFRDsKLSMgICBkZWZpbmUgREMzOTBfTE9DS19JTyBzcGluX2xvY2tfaXJx
c2F2ZSAoJmlvX3JlcXVlc3RfbG9jaywgaWZsYWdzKQotIyAgIGRlZmluZSBEQzM5MF9VTkxPQ0tf
SU8gc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSAoJmlvX3JlcXVlc3RfbG9jaywgaWZsYWdzKQorIyAg
IGRlZmluZSBEQzM5MF9MT0NLX0lPKGRldikgc3Bpbl9sb2NrX2lycXNhdmUgKCYoKHN0cnVjdCBT
Y3NpX0hvc3QgKilkZXYpLT5ob3N0X2xvY2ssIGlmbGFncykKKyMgICBkZWZpbmUgREMzOTBfVU5M
T0NLX0lPKGRldikgc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSAoJigoc3RydWN0IFNjc2lfSG9zdCAq
KWRldiktPmhvc3RfbG9jaywgaWZsYWdzKQogIyAgIGRlZmluZSBEQzM5MF9MT0NLX0RSViBzcGlu
X2xvY2tfaXJxc2F2ZSAoJmRjMzkwX2RydmxvY2ssIGRmbGFncykKICMgICBkZWZpbmUgREMzOTBf
VU5MT0NLX0RSViBzcGluX3VubG9ja19pcnFyZXN0b3JlICgmZGMzOTBfZHJ2bG9jaywgZGZsYWdz
KQogIyAgIGRlZmluZSBEQzM5MF9MT0NLX0RSVl9OSSBzcGluX2xvY2sgKCZkYzM5MF9kcnZsb2Nr
KQpAQCAtMTA3NCwxMSArMTA3NCwxMSBAQAogCURDMzkwX0lGTEFHUwogCURDMzkwX0FGTEFHUwog
CURFQlVHMChwcmludGsgKCJEQzM5MDogRGVidWc6IFdhaXRpbmcgcXVldWUgd29rZW4gdXAgYnkg
dGltZXIhXG4iKTspCi0JREMzOTBfTE9DS19JTzsKKwlEQzM5MF9MT0NLX0lPKHBBQ0IucFNjc2lI
b3N0KTsKIAlEQzM5MF9MT0NLX0FDQjsKIAlkYzM5MF9XYWl0aW5nX3Byb2Nlc3MgKHBBQ0IpOwog
CURDMzkwX1VOTE9DS19BQ0I7Ci0JREMzOTBfVU5MT0NLX0lPOworCURDMzkwX1VOTE9DS19JTyhw
QUNCLnBTY3NpSG9zdCk7CiB9CiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgpAQCAtMjU1OCw3ICsyNTU4LDcg
QEAKICAgREMzOTBfQUZMQUdTIAogICBwb3NbbGVuZ3RoXSA9IDA7CiAKLSAgREMzOTBfTE9DS19J
TzsKKyAgREMzOTBfTE9DS19JTyhwQUNCLnBTY3NpSG9zdCk7CiAgIERDMzkwX0xPQ0tfQUNCOwog
ICAvKiBVUFBFUkNBU0UgKi8gCiAgIC8qIERvbid0IHVzZSBrZXJuZWwgdG91cHBlciwgYmVjYXVz
ZSBvZiAyLjAueCBidWc6IGN0bXAgdW5leHBvcnRlZCAqLwpAQCAtMjcyNiw3ICsyNzI2LDcgQEAK
ICAgREMzOTBfVU5MT0NLX0FDQjsKICAgaWYgKG5lZWRzX2lucXVpcnkpIAogICAgICB7IGRjMzkw
X3VwZGF0ZURDQiAocEFDQiwgcERDQik7IGRjMzkwX2lucXVpcnkgKHBBQ0IsIHBEQ0IpOyB9Owot
ICBEQzM5MF9VTkxPQ0tfSU87CisgIERDMzkwX1VOTE9DS19JTyhwQUNCLnBTY3NpSG9zdCk7CiAg
IHJldHVybiAobGVuZ3RoKTsKIAogIGVpbnYyOgpAQCAtMjczNCw3ICsyNzM0LDcgQEAKICBlaW52
OgogICAvKiBzcGluX3VubG9jayAoc3RydG9rX2xvY2spOyAqLwogICBEQzM5MF9VTkxPQ0tfQUNC
OwotICBEQzM5MF9VTkxPQ0tfSU87CisgIERDMzkwX1VOTE9DS19JTyhwQUNCLnBTY3NpSG9zdCk7
CiAgIHByaW50ayAoS0VSTl9XQVJOSU5HICJEQzM5MDogcGFyc2UgZXJyb3IgbmVhciBcIiVzXCJc
biIsIChwb3M/IHBvczogIk5VTEwiKSk7CiAgIHJldHVybiAoLUVJTlZBTCk7CiAgICAKQEAgLTI3
NDQsNyArMjc0NCw3IEBACiAJcHJpbnRrIChLRVJOX1dBUk5JTkcgIkRDMzkwOiBEcml2ZXIgcmVz
ZXQgcmVxdWVzdGVkIVxuIik7CiAJREMzOTBfVU5MT0NLX0FDQjsKIAlEQzM5MF9yZXNldCAoJmNt
ZCwgMCk7Ci0JREMzOTBfVU5MT0NLX0lPOworCURDMzkwX1VOTE9DS19JTyhwQUNCLnBTY3NpSG9z
dCk7CiAgICAgIH07CiAgIHJldHVybiAobGVuZ3RoKTsKIApAQCAtMjc1Miw3ICsyNzUyLDcgQEAK
ICAgICAgewogCWRjMzkwX2R1bXBpbmZvIChwQUNCLCAwLCAwKTsKIAlEQzM5MF9VTkxPQ0tfQUNC
OwotCURDMzkwX1VOTE9DS19JTzsgICAgICAgCisJREMzOTBfVU5MT0NLX0lPKHBBQ0IucFNjc2lI
b3N0KTsgICAgICAgCiAgICAgIH0KICAgcmV0dXJuIChsZW5ndGgpOwogCQpAQCAtMjc2Niw3ICsy
NzY2LDcgQEAKIAkJZGV2LCBwRENCLT5UYXJnZXRJRCwgcERDQi0+VGFyZ2V0TFVOKTsKIAlEQzM5
MF9VTkxPQ0tfQUNCOwogCWRjMzkwX2lucXVpcnkgKHBBQ0IsIHBEQ0IpOwotCURDMzkwX1VOTE9D
S19JTzsKKwlEQzM5MF9VTkxPQ0tfSU8ocEFDQi5wU2NzaUhvc3QpOwogICAgICB9OwogICAgcmV0
dXJuIChsZW5ndGgpOwogCkBAIC0yNzgxLDcgKzI3ODEsNyBAQAogCS8qIFRPIERPOiBXZSBzaG91
bGQgbWFrZSBzdXJlIG5vIHBlbmRpbmcgY29tbWFuZHMgYXJlIGxlZnQgKi8KIAlkYzM5MF9yZW1v
dmVfZGV2IChwQUNCLCBwRENCKTsKIAlEQzM5MF9VTkxPQ0tfQUNCOwotCURDMzkwX1VOTE9DS19J
TzsKKwlEQzM5MF9VTkxPQ0tfSU8ocEFDQi5wU2NzaUhvc3QpOwogICAgICB9OwogICAgcmV0dXJu
IChsZW5ndGgpOwogCkBAIC0yNzk2LDcgKzI3OTYsNyBAQAogCWRjMzkwX2luaXREQ0IgKHBBQ0Is
ICZwRENCLCBpZCwgbHVuKTsKIAlEQzM5MF9VTkxPQ0tfQUNCOwogCWRjMzkwX2lucXVpcnkgKHBB
Q0IsIHBEQ0IpOwotCURDMzkwX1VOTE9DS19JTzsKKwlEQzM5MF9VTkxPQ0tfSU8ocEFDQi5wU2Nz
aUhvc3QpOwogICAgICB9OwogICAgcmV0dXJuIChsZW5ndGgpOwogCkBAIC0yODEyLDcgKzI4MTIs
NyBAQAogCURDMzkwX1VOTE9DS19BQ0I7CiAJZGMzOTBfc2VuZHN0YXJ0IChwQUNCLCBwRENCKTsK
IAlkYzM5MF9pbnF1aXJ5IChwQUNCLCBwRENCKTsKLQlEQzM5MF9VTkxPQ0tfSU87CisJREMzOTBf
VU5MT0NLX0lPKHBBQ0IucFNjc2lIb3N0KTsKICAgICAgfTsKICAgIHJldHVybiAobGVuZ3RoKTsK
IApAQCAtMjgyMCw3ICsyODIwLDcgQEAKICAgIHByaW50ayAoS0VSTl9XQVJOSU5HICJEQzM5MDog
SWdub3JlIGNtbmQgdG8gaWxsZWdhbCBEZXYoSWR4KSAlaS4gVmFsaWQgcmFuZ2U6IDAgLSAlaS5c
biIsIAogCSAgIGRldiwgcEFDQi0+RENCQ250IC0gMSk7CiAgICBEQzM5MF9VTkxPQ0tfQUNCOwot
ICAgREMzOTBfVU5MT0NLX0lPOworICAgREMzOTBfVU5MT0NLX0lPKHBBQ0IucFNjc2lIb3N0KTsK
ICAgIHJldHVybiAoLUVJTlZBTCk7CiAJICAgICAKIAkgICAgIApAQCAtMzA0MSw3ICszMDQxLDcg
QEAKICAgICBEQzM5MF9BRkxBR1MgREMzOTBfSUZMQUdTCiAgICAgUEFDQiBwQUNCID0gKFBBQ0Ip
KGhvc3QtPmhvc3RkYXRhKTsKIAotICAgIERDMzkwX0xPQ0tfSU87CisgICAgREMzOTBfTE9DS19J
Tyhob3N0KTsKICAgICBEQzM5MF9MT0NLX0FDQjsKIAogICAgIC8qIFRPIERPOiBXZSBzaG91bGQg
Y2hlY2sgZm9yIG91dHN0YW5kaW5nIGNvbW1hbmRzIGZpcnN0LiAqLwpAQCAtMzA1Niw3ICszMDU2
LDcgQEAKICAgICByZWxlYXNlX3JlZ2lvbihob3N0LT5pb19wb3J0LGhvc3QtPm5faW9fcG9ydCk7
CiAgICAgZGMzOTBfZnJlZURDQnMgKGhvc3QpOwogICAgIERDMzkwX1VOTE9DS19BQ0I7Ci0gICAg
REMzOTBfVU5MT0NLX0lPOworICAgIERDMzkwX1VOTE9DS19JTyhob3N0KTsKICAgICByZXR1cm4o
IDEgKTsKIH0KICNlbmRpZiAvKiBkZWYgTU9EVUxFICovCi0tLSAuL2RyaXZlcnMvc2NzaS91bHRy
YXN0b3IuY34JU3VuIFNlcCAzMCAyMzoyNjowOCAyMDAxCisrKyAuL2RyaXZlcnMvc2NzaS91bHRy
YXN0b3IuYwlNb24gSmFuIDI4IDA3OjMwOjMzIDIwMDIKQEAgLTUwMCw3ICs1MDAsMTEgQEAKICAg
ICBjb25maWcubXNjcF9mcmVlID0gfjA7CiAjZW5kaWYKIAotICAgIGlmIChyZXF1ZXN0X2lycShj
b25maWcuaW50ZXJydXB0LCBkb191bHRyYXN0b3JfaW50ZXJydXB0LCAwLCAiVWx0cmFzdG9yIiwg
TlVMTCkpIHsKKyAgICAvKgorICAgICAqIEJycnIsICZjb25maWcubXNjcFswXS5TQ2ludC0+aG9z
dCkgaXQgaXMgc29tZXRoaW5nIG1hZ2ljYWwuLi4uCisgICAgICogWFhYIGFuZCBGSVhNRQorICAg
ICAqLworICAgIGlmIChyZXF1ZXN0X2lycShjb25maWcuaW50ZXJydXB0LCBkb191bHRyYXN0b3Jf
aW50ZXJydXB0LCAwLCAiVWx0cmFzdG9yIiwgJmNvbmZpZy5tc2NwWzBdLlNDaW50LT5ob3N0KSkg
ewogCXByaW50aygiVW5hYmxlIHRvIGFsbG9jYXRlIElSUSV1IGZvciBVbHRyYVN0b3IgY29udHJv
bGxlci5cbiIsCiAJICAgICAgIGNvbmZpZy5pbnRlcnJ1cHQpOwogCXJldHVybiBGQUxTRTsKQEAg
LTU3MCwxMiArNTc0LDcgQEAKIAkgIHByaW50aygiVTI0RjogaW52YWxpZCBJUlFcbiIpOwogCSAg
cmV0dXJuIEZBTFNFOwogCX0KLSAgICAgIGlmIChyZXF1ZXN0X2lycShjb25maWcuaW50ZXJydXB0
LCBkb191bHRyYXN0b3JfaW50ZXJydXB0LCAwLCAiVWx0cmFzdG9yIiwgTlVMTCkpCi0JewotCSAg
cHJpbnRrKCJVbmFibGUgdG8gYWxsb2NhdGUgSVJRJXUgZm9yIFVsdHJhU3RvciBjb250cm9sbGVy
LlxuIiwKLQkJIGNvbmZpZy5pbnRlcnJ1cHQpOwotCSAgcmV0dXJuIEZBTFNFOwotCX0KKwogICAg
ICAgLyogQklPUyBhZGRyIHNldCAqLwogICAgICAgLyogYmFzZSBwb3J0IHNldCAqLwogICAgICAg
Y29uZmlnLnBvcnRfYWRkcmVzcyA9IGFkZHI7CkBAIC02MDUsNiArNjA0LDEzIEBACiAgICAgICAg
ICAgICAgZnJlZV9pcnEoY29uZmlnLmludGVycnVwdCwgZG9fdWx0cmFzdG9yX2ludGVycnVwdCk7
CiAgICAgICAgICAgICAgcmV0dXJuIEZBTFNFOwogICAgICAgfQorICAgICAgCisgICAgICBpZiAo
cmVxdWVzdF9pcnEoY29uZmlnLmludGVycnVwdCwgZG9fdWx0cmFzdG9yX2ludGVycnVwdCwgMCwg
IlVsdHJhc3RvciIsIHNocG50KSkKKwl7CisJICBwcmludGsoIlVuYWJsZSB0byBhbGxvY2F0ZSBJ
UlEldSBmb3IgVWx0cmFTdG9yIGNvbnRyb2xsZXIuXG4iLAorCQkgY29uZmlnLmludGVycnVwdCk7
CisJICByZXR1cm4gRkFMU0U7CisJfQogCiAgICAgICBzaHBudC0+aXJxID0gY29uZmlnLmludGVy
cnVwdDsKICAgICAgIHNocG50LT5kbWFfY2hhbm5lbCA9IGNvbmZpZy5kbWFfY2hhbm5lbDsKQEAg
LTExNTksMTAgKzExNjUsMTEgQEAKIHN0YXRpYyB2b2lkIGRvX3VsdHJhc3Rvcl9pbnRlcnJ1cHQo
aW50IGlycSwgdm9pZCAqZGV2X2lkLCBzdHJ1Y3QgcHRfcmVncyAqcmVncykKIHsKICAgICB1bnNp
Z25lZCBsb25nIGZsYWdzOwotCi0gICAgc3Bpbl9sb2NrX2lycXNhdmUoJmlvX3JlcXVlc3RfbG9j
aywgZmxhZ3MpOworICAgIHN0cnVjdCBTY3NpX0hvc3QgKmRldiA9IGRldl9pZDsKKyAgICAKKyAg
ICBzcGluX2xvY2tfaXJxc2F2ZSgmZGV2LT5ob3N0X2xvY2ssIGZsYWdzKTsKICAgICB1bHRyYXN0
b3JfaW50ZXJydXB0KGlycSwgZGV2X2lkLCByZWdzKTsKLSAgICBzcGluX3VubG9ja19pcnFyZXN0
b3JlKCZpb19yZXF1ZXN0X2xvY2ssIGZsYWdzKTsKKyAgICBzcGluX3VubG9ja19pcnFyZXN0b3Jl
KCZkZXYtPmhvc3RfbG9jaywgZmxhZ3MpOwogfQogCiBNT0RVTEVfTElDRU5TRSgiR1BMIik7Cg==

--Multipart_Mon__28_Jan_2002_07:33:57_+0300_082a52f8--
-
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/