[PATCH] 2.5.24 IDE 95

Bartlomiej Zolnierkiewicz (B.Zolnierkiewicz@elka.pw.edu.pl)
Thu, 27 Jun 2002 14:00:03 +0200 (MET DST)


This message is in MIME format. The first part should be readable text,
while the remaining parts are likely unreadable without MIME-aware tools.
Send mail to mime@docserver.cac.washington.edu for more info.

---559023410-851401618-1025179203=:14825
Content-Type: TEXT/PLAIN; charset=US-ASCII

I have Martin's permission to push some ide-clean patches, so here we go.

I'm running fine SMP kernel with spinlocks debugging enabled on UP.
Note that this patch brokes ide-cd/tape/floppy/scsi locking...

This patch is mainly for developers to have something to sync with... ;-)

still TODO:
- remove ide_wait commands from interrupt paths
- move locking/completion upwards from ide_do_drive_cmd()
- fix ide device setup/tear down locking
- locking of ioctls
- tape->spinlock is probably obsolete now

Thu Jun 27 13:32:35 CEST 2002 ide-clean-95

It is a merge of patches by Alexander Atanasov and Zwane Mwaikambo
(big thanks guys!) plus some corrections by me...

- Remove locking from IRQ handlers (*_intr etc.) and ata_ops->do_reqeuest(),
ata_ops->end_request().

- Add non-locking __blk_get_request() and __blk_attempt_remege() helpers
to block layer (ll_rw_blk.c).

- Move locking up to the entry points.

- Move ata_expiry_t functions to the ide_startstop_t interface
(need to call ata_error, and its return is idestartstop_t, not wait time).

- Kill ata_end_request() and restart_request() (they were locking variants).

- Disable some ide__sti() for now.

- Misc fixes.

---559023410-851401618-1025179203=:14825
Content-Type: TEXT/PLAIN; charset=US-ASCII; name="ide-clean-95.diff"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.SOL.4.30.0206271400030.14825@mion.elka.pw.edu.pl>
Content-Description:
Content-Disposition: attachment; filename="ide-clean-95.diff"

ZGlmZiAtWCBkb250ZGlmZiAtdXIgbGludXgtMi41LjI0L2RyaXZlcnMvYmxv
Y2svbGxfcndfYmxrLmMgbGludXgvZHJpdmVycy9ibG9jay9sbF9yd19ibGsu
Yw0KLS0tIGxpbnV4LTIuNS4yNC9kcml2ZXJzL2Jsb2NrL2xsX3J3X2Jsay5j
CU1vbiBKdW4gMjQgMjI6MjA6NTMgMjAwMg0KKysrIGxpbnV4L2RyaXZlcnMv
YmxvY2svbGxfcndfYmxrLmMJV2VkIEp1biAyNiAxOTo1Njo1MyAyMDAyDQpA
QCAtMTIwMyw2ICsxMjAzLDI2IEBADQogCXJldHVybiBycTsNCiB9DQogDQor
LyoNCisgKiBOb24tbG9ja2luZyBibGtfZ2V0X3JlcXVlc3QgdmFyaWFudCwg
Zm9yIHNwZWNpYWwgcmVxdWVzdHMgZnJvbSBkcml2ZXJzLg0KKyAqLw0KK3N0
cnVjdCByZXF1ZXN0ICpfX2Jsa19nZXRfcmVxdWVzdChyZXF1ZXN0X3F1ZXVl
X3QgKnEsIGludCBydykNCit7DQorCXN0cnVjdCByZXF1ZXN0ICpycTsNCisN
CisJQlVHX09OKHJ3ICE9IFJFQUQgJiYgcncgIT0gV1JJVEUpOw0KKw0KKwly
cSA9IGdldF9yZXF1ZXN0KHEsIHJ3KTsNCisNCisJaWYgKHJxKSB7DQorCQly
cS0+ZmxhZ3MgPSAwOw0KKwkJcnEtPmJ1ZmZlciA9IE5VTEw7DQorCQlycS0+
YmlvID0gcnEtPmJpb3RhaWwgPSBOVUxMOw0KKwkJcnEtPndhaXRpbmcgPSBO
VUxMOw0KKwl9DQorCXJldHVybiBycTsNCit9DQorDQogdm9pZCBibGtfcHV0
X3JlcXVlc3Qoc3RydWN0IHJlcXVlc3QgKnJxKQ0KIHsNCiAJYmxrZGV2X3Jl
bGVhc2VfcmVxdWVzdChycSk7DQpAQCAtMTM4NCw2ICsxNDA0LDE0IEBADQog
CXNwaW5fdW5sb2NrX2lycXJlc3RvcmUocS0+cXVldWVfbG9jaywgZmxhZ3Mp
Ow0KIH0NCiANCisvKg0KKyAqIE5vbi1sb2NraW5nIGJsa19hdHRlbXB0X3Jl
bWVyZ2UgdmFyaWFudC4NCisgKi8NCit2b2lkIF9fYmxrX2F0dGVtcHRfcmVt
ZXJnZShyZXF1ZXN0X3F1ZXVlX3QgKnEsIHN0cnVjdCByZXF1ZXN0ICpycSkN
Cit7DQorCWF0dGVtcHRfYmFja19tZXJnZShxLCBycSk7DQorfQ0KKw0KIHN0
YXRpYyBpbnQgX19tYWtlX3JlcXVlc3QocmVxdWVzdF9xdWV1ZV90ICpxLCBz
dHJ1Y3QgYmlvICpiaW8pDQogew0KIAlzdHJ1Y3QgcmVxdWVzdCAqcmVxLCAq
ZnJlZXJlcSA9IE5VTEw7DQpAQCAtMjA0Miw2ICsyMDcwLDcgQEANCiBFWFBP
UlRfU1lNQk9MKGJsa19wbHVnX2RldmljZSk7DQogRVhQT1JUX1NZTUJPTChi
bGtfcmVtb3ZlX3BsdWcpOw0KIEVYUE9SVF9TWU1CT0woYmxrX2F0dGVtcHRf
cmVtZXJnZSk7DQorRVhQT1JUX1NZTUJPTChfX2Jsa19hdHRlbXB0X3JlbWVy
Z2UpOw0KIEVYUE9SVF9TWU1CT0woYmxrX21heF9sb3dfcGZuKTsNCiBFWFBP
UlRfU1lNQk9MKGJsa19tYXhfcGZuKTsNCiBFWFBPUlRfU1lNQk9MKGJsa19x
dWV1ZV9tYXhfc2VjdG9ycyk7DQpAQCAtMjA1OCw2ICsyMDg3LDcgQEANCiBF
WFBPUlRfU1lNQk9MKGJsa19waHlzX2NvbnRpZ19zZWdtZW50KTsNCiBFWFBP
UlRfU1lNQk9MKGJsa19od19jb250aWdfc2VnbWVudCk7DQogRVhQT1JUX1NZ
TUJPTChibGtfZ2V0X3JlcXVlc3QpOw0KK0VYUE9SVF9TWU1CT0woX19ibGtf
Z2V0X3JlcXVlc3QpOw0KIEVYUE9SVF9TWU1CT0woYmxrX3B1dF9yZXF1ZXN0
KTsNCiANCiBFWFBPUlRfU1lNQk9MKGJsa19xdWV1ZV9wcmVwX3JxKTsNCmRp
ZmYgLVggZG9udGRpZmYgLXVyIGxpbnV4LTIuNS4yNC9kcml2ZXJzL2lkZS9p
ZGUtY2QuYyBsaW51eC9kcml2ZXJzL2lkZS9pZGUtY2QuYw0KLS0tIGxpbnV4
LTIuNS4yNC9kcml2ZXJzL2lkZS9pZGUtY2QuYwlUdWUgSnVuIDE4IDAwOjI5
OjAyIDIwMDINCisrKyBsaW51eC9kcml2ZXJzL2lkZS9pZGUtY2QuYwlUaHUg
SnVuIDI3IDAxOjM2OjA4IDIwMDINCkBAIC01NTYsNyArNTU2LDcgQEANCiAJ
aWYgKChycS0+ZmxhZ3MgJiBSRVFfQ01EKSAmJiAhcnEtPmN1cnJlbnRfbnJf
c2VjdG9ycykNCiAJCXVwdG9kYXRlID0gMTsNCiANCi0JYXRhX2VuZF9yZXF1
ZXN0KGRyaXZlLCBycSwgdXB0b2RhdGUpOw0KKwlfX2F0YV9lbmRfcmVxdWVz
dChkcml2ZSwgcnEsIHVwdG9kYXRlLCAwKTsNCiB9DQogDQogDQpAQCAtNjky
LDEwICs2OTIsOCBAQA0KIAlyZXR1cm4gMTsNCiB9DQogDQotc3RhdGljIGlu
dCBjZHJvbV90aW1lcl9leHBpcnkoc3RydWN0IGF0YV9kZXZpY2UgKmRyaXZl
LCBzdHJ1Y3QgcmVxdWVzdCAqcnEpDQorc3RhdGljIGlkZV9zdGFydHN0b3Bf
dCBjZHJvbV90aW1lcl9leHBpcnkoc3RydWN0IGF0YV9kZXZpY2UgKmRyaXZl
LCBzdHJ1Y3QgcmVxdWVzdCAqcnEsIHVuc2lnbmVkIGxvbmcgKndhaXQpDQog
ew0KLQl1bnNpZ25lZCBsb25nIHdhaXQgPSAwOw0KLQ0KIAkvKg0KIAkgKiBT
b21lIGNvbW1hbmRzIGFyZSAqc2xvdyogYW5kIG5vcm1hbGx5IHRha2UgYSBs
b25nIHRpbWUgdG8NCiAJICogY29tcGxldGUuIFVzdWFsbHkgd2UgY2FuIHVz
ZSB0aGUgQVRBUEkgImRpc2Nvbm5lY3QiIHRvIGJ5cGFzcw0KQEAgLTcwNiwx
NCArNzA0LDE0IEBADQogCQljYXNlIEdQQ01EX0JMQU5LOg0KIAkJY2FzZSBH
UENNRF9GT1JNQVRfVU5JVDoNCiAJCWNhc2UgR1BDTURfUkVTRVJWRV9SWk9O
RV9UUkFDSzoNCi0JCQl3YWl0ID0gV0FJVF9DTUQ7DQotCQkJYnJlYWs7DQor
CQkJKndhaXQgPSBXQUlUX0NNRDsNCisJCQlyZXR1cm4gaWRlX3N0YXJ0ZWQ7
DQogCQlkZWZhdWx0Og0KLQkJCXdhaXQgPSAwOw0KKwkJCSp3YWl0ID0gMDsN
CiAJCQlicmVhazsNCiAJfQ0KIA0KLQlyZXR1cm4gd2FpdDsNCisJcmV0dXJu
IGlkZV9zdG9wcGVkOw0KIH0NCiANCiAvKiBTZXQgdXAgdGhlIGRldmljZSBy
ZWdpc3RlcnMgZm9yIHRyYW5zZmVycmluZyBhIHBhY2tldCBjb21tYW5kIG9u
IERFViwNCkBAIC03MjgsMTMgKzcyNiwxMCBAQA0KIAkJCQkJCSAgaW50IHhm
ZXJsZW4sDQogCQkJCQkJICBhdGFfaGFuZGxlcl90IGhhbmRsZXIpDQogew0K
LQl1bnNpZ25lZCBsb25nIGZsYWdzOw0KLQlzdHJ1Y3QgYXRhX2NoYW5uZWwg
KmNoID0gZHJpdmUtPmNoYW5uZWw7DQogCWlkZV9zdGFydHN0b3BfdCBzdGFy
dHN0b3A7DQogCXN0cnVjdCBjZHJvbV9pbmZvICppbmZvID0gZHJpdmUtPmRy
aXZlcl9kYXRhOw0KIAlpbnQgcmV0Ow0KIA0KLQlzcGluX2xvY2tfaXJxc2F2
ZShjaC0+bG9jaywgZmxhZ3MpOw0KIAkvKiBXYWl0IGZvciB0aGUgY29udHJv
bGxlciB0byBiZSBpZGxlLiAqLw0KIAlpZiAoYXRhX3N0YXR1c19wb2xsKGRy
aXZlLCAwLCBCVVNZX1NUQVQsIFdBSVRfUkVBRFksIHJxLCAmc3RhcnRzdG9w
KSkNCiAJCXJldCA9IHN0YXJ0c3RvcDsNCkBAIC03NjQsMTUgKzc1OSw5IEBA
DQogCQl9IGVsc2Ugew0KIAkJCU9VVF9CWVRFIChXSU5fUEFDS0VUQ01ELCBJ
REVfQ09NTUFORF9SRUcpOyAvKiBwYWNrZXQgY29tbWFuZCAqLw0KIA0KLQkJ
CS8qIEZJWE1FOiBPaiBrdXJ3YSEgV2UgaGF2ZSB0byB1bmdyYWIgdGhlIGxv
Y2sgYmVmb3JlDQotCQkJICogdGhlIElSUSBoYW5kbGVyIGdldHMgY2FsbGVk
Lg0KLQkJCSAqLw0KLQkJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoY2gtPmxv
Y2ssIGZsYWdzKTsNCiAJCQlyZXQgPSBoYW5kbGVyKGRyaXZlLCBycSk7DQot
CQkJc3Bpbl9sb2NrX2lycXNhdmUoY2gtPmxvY2ssIGZsYWdzKTsNCiAJCX0N
CiAJfQ0KLQlzcGluX3VubG9ja19pcnFyZXN0b3JlKGNoLT5sb2NrLCBmbGFn
cyk7DQogDQogCXJldHVybiByZXQ7DQogfQ0KQEAgLTc4Nyw4ICs3NzYsNiBA
QA0KIAkJdW5zaWduZWQgY2hhciAqY21kLCB1bnNpZ25lZCBsb25nIHRpbWVv
dXQsDQogCQlhdGFfaGFuZGxlcl90IGhhbmRsZXIpDQogew0KLQl1bnNpZ25l
ZCBsb25nIGZsYWdzOw0KLQlzdHJ1Y3QgYXRhX2NoYW5uZWwgKmNoID0gZHJp
dmUtPmNoYW5uZWw7DQogCWlkZV9zdGFydHN0b3BfdCBzdGFydHN0b3A7DQog
DQogCWlmIChDRFJPTV9DT05GSUdfRkxBR1MgKGRyaXZlKS0+ZHJxX2ludGVy
cnVwdCkgew0KQEAgLTgwMCwyNCArNzg3LDE1IEBADQogCQlpZiAoY2Ryb21f
ZGVjb2RlX3N0YXR1cygmc3RhcnRzdG9wLCBkcml2ZSwgcnEsIERSUV9TVEFU
LCAmc3RhdF9kdW0pKQ0KIAkJCXJldHVybiBzdGFydHN0b3A7DQogCX0gZWxz
ZSB7DQotCQkvKiBGSVhNRTogbWFrZSB0aGlzIGxvY2tpbmcgZ28gYXdheSAq
Lw0KLQkJc3Bpbl9sb2NrX2lycXNhdmUoY2gtPmxvY2ssIGZsYWdzKTsNCiAJ
CS8qIE90aGVyd2lzZSwgd2UgbXVzdCB3YWl0IGZvciBEUlEgdG8gZ2V0IHNl
dC4gKi8NCiAJCWlmIChhdGFfc3RhdHVzX3BvbGwoZHJpdmUsIERSUV9TVEFU
LCBCVVNZX1NUQVQsDQotCQkJCQlXQUlUX1JFQURZLCBycSwgJnN0YXJ0c3Rv
cCkpIHsNCi0JCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKGNoLT5sb2NrLCBm
bGFncyk7DQotDQorCQkJCQlXQUlUX1JFQURZLCBycSwgJnN0YXJ0c3RvcCkp
DQogCQkJcmV0dXJuIHN0YXJ0c3RvcDsNCi0JCX0NCi0JCXNwaW5fdW5sb2Nr
X2lycXJlc3RvcmUoY2gtPmxvY2ssIGZsYWdzKTsNCiAJfQ0KIA0KIAkvKiBB
cm0gdGhlIGludGVycnVwdCBoYW5kbGVyIGFuZCBzZW5kIHRoZSBjb21tYW5k
IHRvIHRoZSBkZXZpY2UuICovDQotCS8qIEZJWE1FOiBtYWtlIHRoaXMgbG9j
a2luZyBnbyBhd2F5ICovDQotCXNwaW5fbG9ja19pcnFzYXZlKGNoLT5sb2Nr
LCBmbGFncyk7DQogCWF0YV9zZXRfaGFuZGxlcihkcml2ZSwgaGFuZGxlciwg
dGltZW91dCwgY2Ryb21fdGltZXJfZXhwaXJ5KTsNCiAJYXRhcGlfd3JpdGUo
ZHJpdmUsIGNtZCwgQ0RST01fUEFDS0VUX1NJWkUpOw0KLQlzcGluX3VubG9j
a19pcnFyZXN0b3JlKGNoLT5sb2NrLCBmbGFncyk7DQogDQogCXJldHVybiBp
ZGVfc3RhcnRlZDsNCiB9DQpAQCAtOTE3LDggKzg5NSw2IEBADQogICovDQog
c3RhdGljIGlkZV9zdGFydHN0b3BfdCBjZHJvbV9yZWFkX2ludHIoc3RydWN0
IGF0YV9kZXZpY2UgKmRyaXZlLCBzdHJ1Y3QgcmVxdWVzdCAqcnEpDQogew0K
LQl1bnNpZ25lZCBsb25nIGZsYWdzOw0KLQlzdHJ1Y3QgYXRhX2NoYW5uZWwg
KmNoID0gZHJpdmUtPmNoYW5uZWw7DQogCWludCBzdGF0Ow0KIAlpbnQgaXJl
YXNvbiwgbGVuLCBzZWN0b3JzX3RvX3RyYW5zZmVyLCBuc2tpcDsNCiAJc3Ry
dWN0IGNkcm9tX2luZm8gKmluZm8gPSBkcml2ZS0+ZHJpdmVyX2RhdGE7DQpA
QCAtOTM3LDEzICs5MTMsNyBAQA0KIA0KIAlpZiAoZG1hKSB7DQogCQlpZiAo
IWRtYV9lcnJvcikgew0KLQkJCS8qIEZJWE1FOiB0aGlzIGxvY2tpbmcgc2hv
dWxkIGVuY29tcGFzcyB0aGUgYWJvdmUgcmVnaXN0ZXINCi0JCQkgKiBmaWxl
IGFjY2VzcyB0b28uDQotCQkJICovDQotDQotCQkJc3Bpbl9sb2NrX2lycXNh
dmUoY2gtPmxvY2ssIGZsYWdzKTsNCiAJCQlfX2F0YV9lbmRfcmVxdWVzdChk
cml2ZSwgcnEsIDEsIHJxLT5ucl9zZWN0b3JzKTsNCi0JCQlzcGluX3VubG9j
a19pcnFyZXN0b3JlKGNoLT5sb2NrLCBmbGFncyk7DQogDQogCQkJcmV0dXJu
IGlkZV9zdG9wcGVkOw0KIAkJfSBlbHNlDQpAQCAtMTA0MCw5ICsxMDEwLDcg
QEANCiAJfQ0KIA0KIAkvKiBEb25lIG1vdmluZyBkYXRhISBXYWl0IGZvciBh
bm90aGVyIGludGVycnVwdC4gKi8NCi0Jc3Bpbl9sb2NrX2lycXNhdmUoY2gt
PmxvY2ssIGZsYWdzKTsNCiAJYXRhX3NldF9oYW5kbGVyKGRyaXZlLCBjZHJv
bV9yZWFkX2ludHIsIFdBSVRfQ01ELCBOVUxMKTsNCi0Jc3Bpbl91bmxvY2tf
aXJxcmVzdG9yZShjaC0+bG9jaywgZmxhZ3MpOw0KIA0KIAlyZXR1cm4gaWRl
X3N0YXJ0ZWQ7DQogfQ0KQEAgLTEyNDUsNyArMTIxMyw3IEBADQogCWlmIChj
ZHJvbV9yZWFkX2Zyb21fYnVmZmVyKGRyaXZlLCBycSkpDQogCQlyZXR1cm4g
aWRlX3N0b3BwZWQ7DQogDQotCWJsa19hdHRlbXB0X3JlbWVyZ2UoJmRyaXZl
LT5xdWV1ZSwgcnEpOw0KKwlfX2Jsa19hdHRlbXB0X3JlbWVyZ2UoJmRyaXZl
LT5xdWV1ZSwgcnEpOw0KIA0KIAkvKiBDbGVhciB0aGUgbG9jYWwgc2VjdG9y
IGJ1ZmZlci4gKi8NCiAJaW5mby0+bnNlY3RvcnNfYnVmZmVyZWQgPSAwOw0K
QEAgLTEyNjksOCArMTIzNyw2IEBADQogLyogSW50ZXJydXB0IHJvdXRpbmUg
Zm9yIHBhY2tldCBjb21tYW5kIGNvbXBsZXRpb24uICovDQogc3RhdGljIGlk
ZV9zdGFydHN0b3BfdCBjZHJvbV9wY19pbnRyKHN0cnVjdCBhdGFfZGV2aWNl
ICpkcml2ZSwgc3RydWN0IHJlcXVlc3QgKnJxKQ0KIHsNCi0JdW5zaWduZWQg
bG9uZyBmbGFnczsNCi0Jc3RydWN0IGF0YV9jaGFubmVsICpjaCA9IGRyaXZl
LT5jaGFubmVsOw0KIAlpbnQgaXJlYXNvbiwgbGVuLCBzdGF0LCB0aGlzbGVu
Ow0KIA0KIAkvKiBGSVhNRSAtLW1kY2tpICovDQpAQCAtMTM2Myw5ICsxMzI5
LDcgQEANCiAJfQ0KIA0KIAkvKiBOb3cgd2Ugd2FpdCBmb3IgYW5vdGhlciBp
bnRlcnJ1cHQuICovDQotCXNwaW5fbG9ja19pcnFzYXZlKGNoLT5sb2NrLCBm
bGFncyk7DQogCWF0YV9zZXRfaGFuZGxlcihkcml2ZSwgY2Ryb21fcGNfaW50
ciwgV0FJVF9DTUQsIGNkcm9tX3RpbWVyX2V4cGlyeSk7DQotCXNwaW5fdW5s
b2NrX2lycXJlc3RvcmUoY2gtPmxvY2ssIGZsYWdzKTsNCiANCiAJcmV0dXJu
IGlkZV9zdGFydGVkOw0KIH0NCkBAIC0xNTA4LDggKzE0NzIsNiBAQA0KIA0K
IHN0YXRpYyBpZGVfc3RhcnRzdG9wX3QgY2Ryb21fd3JpdGVfaW50cihzdHJ1
Y3QgYXRhX2RldmljZSAqZHJpdmUsIHN0cnVjdCByZXF1ZXN0ICpycSkNCiB7
DQotCXVuc2lnbmVkIGxvbmcgZmxhZ3M7DQotCXN0cnVjdCBhdGFfY2hhbm5l
bCAqY2ggPSBkcml2ZS0+Y2hhbm5lbDsNCiAJaW50IHN0YXQsIGlyZWFzb24s
IGxlbiwgc2VjdG9yc190b190cmFuc2ZlciwgdXB0b2RhdGU7DQogCXN0cnVj
dCBjZHJvbV9pbmZvICppbmZvID0gZHJpdmUtPmRyaXZlcl9kYXRhOw0KIAlp
bnQgZG1hX2Vycm9yID0gMCwgZG1hID0gaW5mby0+ZG1hOw0KQEAgLTE1MzYs
MTMgKzE0OTgsNyBAQA0KIAkJaWYgKGRtYV9lcnJvcikNCiAJCQlyZXR1cm4g
YXRhX2Vycm9yKGRyaXZlLCBycSwgImRtYSBlcnJvciIpOw0KIA0KLQkJLyog
RklYTUU6IHRoaXMgbG9ja2luZyBzaG91bGQgZW5jb21wYXNzIHRoZSBhYm92
ZSByZWdpc3Rlcg0KLQkJICogZmlsZSBhY2Nlc3MgdG9vLg0KLQkJICovDQot
DQotCQlzcGluX2xvY2tfaXJxc2F2ZShjaC0+bG9jaywgZmxhZ3MpOw0KIAkJ
X19hdGFfZW5kX3JlcXVlc3QoZHJpdmUsIHJxLCAxLCBycS0+bnJfc2VjdG9y
cyk7DQotCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKGNoLT5sb2NrLCBmbGFn
cyk7DQogDQogCQlyZXR1cm4gaWRlX3N0b3BwZWQ7DQogCX0NCkBAIC0xNjA3
LDkgKzE1NjMsNyBAQA0KIAl9DQogDQogCS8qIHJlLWFybSBoYW5kbGVyICov
DQotCXNwaW5fbG9ja19pcnFzYXZlKGNoLT5sb2NrLCBmbGFncyk7DQogCWF0
YV9zZXRfaGFuZGxlcihkcml2ZSwgY2Ryb21fd3JpdGVfaW50ciwgNSAqIFdB
SVRfQ01ELCBOVUxMKTsNCi0Jc3Bpbl91bmxvY2tfaXJxcmVzdG9yZShjaC0+
bG9jaywgZmxhZ3MpOw0KIA0KIAlyZXR1cm4gaWRlX3N0YXJ0ZWQ7DQogfQ0K
QEAgLTE2MzcsNyArMTU5MSw3IEBADQogCSAqIHJlbWVyZ2UgcmVxdWVzdHMs
IG9mdGVuIHRoZSBwbHVnZ2luZyB3aWxsIG5vdCBoYXZlIGhhZCB0aW1lDQog
CSAqIHRvIGRvIHRoaXMgcHJvcGVybHkNCiAJICovDQotCWJsa19hdHRlbXB0
X3JlbWVyZ2UoJmRyaXZlLT5xdWV1ZSwgcnEpOw0KKwlfX2Jsa19hdHRlbXB0
X3JlbWVyZ2UoJmRyaXZlLT5xdWV1ZSwgcnEpOw0KIA0KIAlpbmZvLT5uc2Vj
dG9yc19idWZmZXJlZCA9IDA7DQogDQpAQCAtMTY1OCw3ICsxNjEyLDYgQEAN
CiBzdGF0aWMgaWRlX3N0YXJ0c3RvcF90DQogaWRlX2Nkcm9tX2RvX3JlcXVl
c3Qoc3RydWN0IGF0YV9kZXZpY2UgKmRyaXZlLCBzdHJ1Y3QgcmVxdWVzdCAq
cnEsIHNlY3Rvcl90IGJsb2NrKQ0KIHsNCi0Jc3RydWN0IGF0YV9jaGFubmVs
ICpjaCA9IGRyaXZlLT5jaGFubmVsOw0KIAlpbnQgcmV0Ow0KIAlzdHJ1Y3Qg
Y2Ryb21faW5mbyAqaW5mbyA9IGRyaXZlLT5kcml2ZXJfZGF0YTsNCiANCkBA
IC0xNjc1LDggKzE2MjgsNiBAQA0KIAkJCX0NCiAJCQlDRFJPTV9DT05GSUdf
RkxBR1MoZHJpdmUpLT5zZWVraW5nID0gMDsNCiAJCX0NCi0JCS8qIEZJWE1F
OiBtYWtlIHRoaXMgdW5sb2NraW5nIGdvIGF3YXkqLw0KLQkJc3Bpbl91bmxv
Y2tfaXJxKGNoLT5sb2NrKTsNCiAJCWlmIChJREVfTEFSR0VfU0VFSyhpbmZv
LT5sYXN0X2Jsb2NrLCBibG9jaywgSURFQ0RfU0VFS19USFJFU0hPTEQpICYm
IGRyaXZlLT5kc2Nfb3ZlcmxhcCkgew0KIAkJCXJldCA9IGNkcm9tX3N0YXJ0
X3NlZWsoZHJpdmUsIHJxLCBibG9jayk7DQogCQl9IGVsc2Ugew0KQEAgLTE2
ODYsMTMgKzE2MzcsOSBAQA0KIAkJCQlyZXQgPSBjZHJvbV9zdGFydF93cml0
ZShkcml2ZSwgcnEpOw0KIAkJfQ0KIAkJaW5mby0+bGFzdF9ibG9jayA9IGJs
b2NrOw0KLQkJc3Bpbl9sb2NrX2lycShjaC0+bG9jayk7DQogCQlyZXR1cm4g
cmV0Ow0KIAl9IGVsc2UgaWYgKHJxLT5mbGFncyAmIChSRVFfUEMgfCBSRVFf
U0VOU0UpKSB7DQotCQkvKiBGSVhNRTogbWFrZSB0aGlzIHVubG9ja2luZyBn
byBhd2F5Ki8NCi0JCXNwaW5fdW5sb2NrX2lycShjaC0+bG9jayk7DQogCQly
ZXQgPSBjZHJvbV9kb19wYWNrZXRfY29tbWFuZChkcml2ZSwgcnEpOw0KLQkJ
c3Bpbl9sb2NrX2lycShjaC0+bG9jayk7DQogDQogCQlyZXR1cm4gcmV0Ow0K
IAl9IGVsc2UgaWYgKHJxLT5mbGFncyAmIFJFUV9TUEVDSUFMKSB7DQpAQCAt
MTcwMywxMCArMTY1MCw3IEBADQogCQkgKiByaWdodCBub3cgdGhpcyBjYW4g
b25seSBiZSBhIHJlc2V0Li4uDQogCQkgKi8NCiANCi0JICAgICAgICAvKiBG
SVhNRTogbWFrZSB0aGlzIHVubG9ja2luZyBnbyBhd2F5Ki8NCi0JCXNwaW5f
dW5sb2NrX2lycShjaC0+bG9jayk7DQogCQljZHJvbV9lbmRfcmVxdWVzdChk
cml2ZSwgcnEsIDEpOw0KLQkJc3Bpbl9sb2NrX2lycShjaC0+bG9jayk7DQog
DQogCQlyZXR1cm4gaWRlX3N0b3BwZWQ7DQogCX0gZWxzZSBpZiAocnEtPmZs
YWdzICYgUkVRX0JMT0NLX1BDKSB7DQpAQCAtMTcyMCwxMCArMTY2NCw3IEBA
DQogCQkvKiBGSVhNRSAtLW1kY2tpICovDQogCQlycS0+c3BlY2lhbCA9IChj
aGFyICopICZwYzsNCiANCi0JCS8qIEZJWE1FOiBtYWtlIHRoaXMgdW5sb2Nr
aW5nIGdvIGF3YXkqLw0KLQkJc3Bpbl91bmxvY2tfaXJxKGNoLT5sb2NrKTsN
CiAJCXN0YXJ0c3RvcCA9IGNkcm9tX2RvX3BhY2tldF9jb21tYW5kKGRyaXZl
LCBycSk7DQotCQlzcGluX2xvY2tfaXJxKGNoLT5sb2NrKTsNCiANCiAJCWlm
IChwYy5zdGF0KQ0KIAkJCSsrcnEtPmVycm9yczsNCkBAIC0xNzMyLDEwICsx
NjczLDggQEANCiAJfQ0KIA0KIAlibGtfZHVtcF9ycV9mbGFncyhycSwgImlk
ZS1jZCBiYWQgZmxhZ3MiKTsNCi0JLyogRklYTUU6IG1ha2UgdGhpcyB1bmxv
Y2tpbmcgZ28gYXdheSovDQotCXNwaW5fdW5sb2NrX2lycShjaC0+bG9jayk7
DQorDQogCWNkcm9tX2VuZF9yZXF1ZXN0KGRyaXZlLCBycSwgMCk7DQotCXNw
aW5fbG9ja19pcnEoY2gtPmxvY2spOw0KIA0KIAlyZXR1cm4gaWRlX3N0b3Bw
ZWQ7DQogfQ0KZGlmZiAtWCBkb250ZGlmZiAtdXIgbGludXgtMi41LjI0L2Ry
aXZlcnMvaWRlL2lkZS1kaXNrLmMgbGludXgvZHJpdmVycy9pZGUvaWRlLWRp
c2suYw0KLS0tIGxpbnV4LTIuNS4yNC9kcml2ZXJzL2lkZS9pZGUtZGlzay5j
CVdlZCBKdW4gMjYgMDA6MDI6NTMgMjAwMg0KKysrIGxpbnV4L2RyaXZlcnMv
aWRlL2lkZS1kaXNrLmMJV2VkIEp1biAyNiAyMjoxNzoxMSAyMDAyDQpAQCAt
MTA3LDIyICsxMDcsMjAgQEANCiB9DQogDQogLyoNCisgKiBUaGUgZm9sbG93
aW5nIElSUSBoYW5kbGVycyAoKl9pbnRyKSBzaG91bGQgYmUgY2FsbGVkDQor
ICogd2l0aCB0aGUgY2hhbm5lbCBsb2NrIGhlbGQgYW5kIGludGVycnVwdHMg
ZGlzYWJsZWQuDQorICovDQorDQorLyoNCiAgKiBIYW5kbGVyIGZvciBjb21t
YW5kIHdpdGggUElPIGRhdGEtaW4gcGhhc2UuDQogICovDQogc3RhdGljIGlk
ZV9zdGFydHN0b3BfdCB0YXNrX2luX2ludHIoc3RydWN0IGF0YV9kZXZpY2Ug
KmRyaXZlLCBzdHJ1Y3QgcmVxdWVzdCAqcnEpDQogew0KLQl1bnNpZ25lZCBs
b25nIGZsYWdzOw0KLQlzdHJ1Y3QgYXRhX2NoYW5uZWwgKmNoID0gZHJpdmUt
PmNoYW5uZWw7DQogCWludCByZXQ7DQogDQotCXNwaW5fbG9ja19pcnFzYXZl
KGNoLT5sb2NrLCBmbGFncyk7DQotDQogCWlmICghYXRhX3N0YXR1cyhkcml2
ZSwgREFUQV9SRUFEWSwgQkFEX1JfU1RBVCkpIHsNCi0JCWlmIChkcml2ZS0+
c3RhdHVzICYgKEVSUl9TVEFUIHwgRFJRX1NUQVQpKSB7DQotCQkJc3Bpbl91
bmxvY2tfaXJxcmVzdG9yZShjaC0+bG9jaywgZmxhZ3MpOw0KLQ0KKwkJaWYg
KGRyaXZlLT5zdGF0dXMgJiAoRVJSX1NUQVQgfCBEUlFfU1RBVCkpDQogCQkJ
cmV0dXJuIGF0YV9lcnJvcihkcml2ZSwgcnEsIF9fRlVOQ1RJT05fXyk7DQot
CQl9DQogDQogCQkvKiBubyBkYXRhIHlldCwgc28gd2FpdCBmb3IgYW5vdGhl
ciBpbnRlcnJ1cHQgKi8NCiAJCWF0YV9zZXRfaGFuZGxlcihkcml2ZSwgdGFz
a19pbl9pbnRyLCBXQUlUX0NNRCwgTlVMTCk7DQpAQCAtMTQ5LDcgKzE0Nyw2
IEBADQogCQlpZiAocnEtPmN1cnJlbnRfbnJfc2VjdG9ycyA8PSAwKSB7DQog
CQkJaWYgKCFfX2F0YV9lbmRfcmVxdWVzdChkcml2ZSwgcnEsIDEsIDApKSB7
DQogCQkJLy8JCXByaW50aygiUmVxdWVzdCBFbmRlZCBzdGF0OiAlMDJ4XG4i
LCBkcml2ZS0+c3RhdHVzKTsNCi0JCQkJc3Bpbl91bmxvY2tfaXJxcmVzdG9y
ZShjaC0+bG9jaywgZmxhZ3MpOw0KIA0KIAkJCQlyZXR1cm4gaWRlX3N0b3Bw
ZWQ7DQogCQkJfQ0KQEAgLTE2MCw3ICsxNTcsNiBAQA0KIA0KIAkJcmV0ID0g
aWRlX3N0YXJ0ZWQ7DQogCX0NCi0Jc3Bpbl91bmxvY2tfaXJxcmVzdG9yZShj
aC0+bG9jaywgZmxhZ3MpOw0KIA0KIAlyZXR1cm4gcmV0Ow0KIH0NCkBAIC0x
NzAsMTYgKzE2NiwxMCBAQA0KICAqLw0KIHN0YXRpYyBpZGVfc3RhcnRzdG9w
X3QgdGFza19vdXRfaW50cihzdHJ1Y3QgYXRhX2RldmljZSAqZHJpdmUsIHN0
cnVjdCByZXF1ZXN0ICpycSkNCiB7DQotCXVuc2lnbmVkIGxvbmcgZmxhZ3M7
DQotCXN0cnVjdCBhdGFfY2hhbm5lbCAqY2ggPSBkcml2ZS0+Y2hhbm5lbDsN
CiAJaW50IHJldDsNCiANCi0Jc3Bpbl9sb2NrX2lycXNhdmUoY2gtPmxvY2ss
IGZsYWdzKTsNCi0JaWYgKCFhdGFfc3RhdHVzKGRyaXZlLCBEUklWRV9SRUFE
WSwgZHJpdmUtPmJhZF93c3RhdCkpIHsNCi0JCXNwaW5fdW5sb2NrX2lycXJl
c3RvcmUoY2gtPmxvY2ssIGZsYWdzKTsNCi0NCisJaWYgKCFhdGFfc3RhdHVz
KGRyaXZlLCBEUklWRV9SRUFEWSwgZHJpdmUtPmJhZF93c3RhdCkpDQogCQly
ZXR1cm4gYXRhX2Vycm9yKGRyaXZlLCBycSwgX19GVU5DVElPTl9fKTsNCi0J
fQ0KIA0KIAlpZiAoIXJxLT5jdXJyZW50X25yX3NlY3RvcnMgJiYgIV9fYXRh
X2VuZF9yZXF1ZXN0KGRyaXZlLCBycSwgMSwgMCkpIHsNCiAJCXJldCA9IGlk
ZV9zdG9wcGVkOw0KQEAgLTIwMCw3ICsxOTAsNiBAQA0KIA0KIAkJcmV0ID0g
aWRlX3N0YXJ0ZWQ7DQogCX0NCi0Jc3Bpbl91bmxvY2tfaXJxcmVzdG9yZShj
aC0+bG9jaywgZmxhZ3MpOw0KIA0KIAlyZXR1cm4gcmV0Ow0KIH0NCkBAIC0y
MTAsMTcgKzE5OSwxMSBAQA0KICAqLw0KIHN0YXRpYyBpZGVfc3RhcnRzdG9w
X3QgdGFza19tdWxpbl9pbnRyKHN0cnVjdCBhdGFfZGV2aWNlICpkcml2ZSwg
c3RydWN0IHJlcXVlc3QgKnJxKQ0KIHsNCi0JdW5zaWduZWQgbG9uZyBmbGFn
czsNCi0Jc3RydWN0IGF0YV9jaGFubmVsICpjaCA9IGRyaXZlLT5jaGFubmVs
Ow0KIAlpbnQgcmV0Ow0KIA0KLQlzcGluX2xvY2tfaXJxc2F2ZShjaC0+bG9j
aywgZmxhZ3MpOw0KIAlpZiAoIWF0YV9zdGF0dXMoZHJpdmUsIERBVEFfUkVB
RFksIEJBRF9SX1NUQVQpKSB7DQotCQlpZiAoZHJpdmUtPnN0YXR1cyAmIChF
UlJfU1RBVCB8IERSUV9TVEFUKSkgew0KLQkJCXNwaW5fdW5sb2NrX2lycXJl
c3RvcmUoY2gtPmxvY2ssIGZsYWdzKTsNCi0NCisJCWlmIChkcml2ZS0+c3Rh
dHVzICYgKEVSUl9TVEFUIHwgRFJRX1NUQVQpKQ0KIAkJCXJldHVybiBhdGFf
ZXJyb3IoZHJpdmUsIHJxLCBfX0ZVTkNUSU9OX18pOw0KLQkJfQ0KIA0KIAkJ
Lyogbm8gZGF0YSB5ZXQsIHNvIHdhaXQgZm9yIGFub3RoZXIgaW50ZXJydXB0
ICovDQogCQlhdGFfc2V0X2hhbmRsZXIoZHJpdmUsIHRhc2tfbXVsaW5faW50
ciwgV0FJVF9DTUQsIE5VTEwpOw0KQEAgLTI1NywxMSArMjQwLDggQEANCiAN
CiAJCQkvKiBGSVhNRTogdGhpcyBzZWVtcyBidWdneSAqLw0KIAkJCWlmIChy
cS0+Y3VycmVudF9ucl9zZWN0b3JzIDw9IDApIHsNCi0JCQkJaWYgKCFfX2F0
YV9lbmRfcmVxdWVzdChkcml2ZSwgcnEsIDEsIDApKSB7DQotCQkJCQlzcGlu
X3VubG9ja19pcnFyZXN0b3JlKGNoLT5sb2NrLCBmbGFncyk7DQotDQorCQkJ
CWlmICghX19hdGFfZW5kX3JlcXVlc3QoZHJpdmUsIHJxLCAxLCAwKSkNCiAJ
CQkJCXJldHVybiBpZGVfc3RvcHBlZDsNCi0JCQkJfQ0KIAkJCX0NCiAJCQlt
c2VjdCAtPSBuc2VjdDsNCiAJCX0gd2hpbGUgKG1zZWN0KTsNCkBAIC0yNzEs
MjAgKzI1MSwxNiBAQA0KIA0KIAkJcmV0ID0gaWRlX3N0YXJ0ZWQ7DQogCX0N
Ci0Jc3Bpbl91bmxvY2tfaXJxcmVzdG9yZShjaC0+bG9jaywgZmxhZ3MpOw0K
IA0KIAlyZXR1cm4gcmV0Ow0KIH0NCiANCiBzdGF0aWMgaWRlX3N0YXJ0c3Rv
cF90IHRhc2tfbXVsb3V0X2ludHIoc3RydWN0IGF0YV9kZXZpY2UgKmRyaXZl
LCBzdHJ1Y3QgcmVxdWVzdCAqcnEpDQogew0KLQl1bnNpZ25lZCBsb25nIGZs
YWdzOw0KIAlzdHJ1Y3QgYXRhX2NoYW5uZWwgKmNoID0gZHJpdmUtPmNoYW5u
ZWw7DQogCWludCBvazsNCiAJaW50IHJldDsNCiANCi0Jc3Bpbl9sb2NrX2ly
cXNhdmUoY2gtPmxvY2ssIGZsYWdzKTsNCi0NCiAJLyoNCiAJICogRklYTUU6
IHRoZSBkcml2ZS0+c3RhdHVzIGNoZWNrcyBoZXJlIHNlZW0gdG8gYmUgbWVz
c3kuDQogCSAqDQpAQCAtMjk1LDExICsyNzEsOCBAQA0KIAlvayA9IGF0YV9z
dGF0dXMoZHJpdmUsIERBVEFfUkVBRFksIEJBRF9SX1NUQVQpOw0KIA0KIAlp
ZiAoIW9rIHx8ICFycS0+bnJfc2VjdG9ycykgew0KLQkJaWYgKGRyaXZlLT5z
dGF0dXMgJiAoRVJSX1NUQVQgfCBEUlFfU1RBVCkpIHsNCi0JCQlzcGluX3Vu
bG9ja19pcnFyZXN0b3JlKGNoLT5sb2NrLCBmbGFncyk7DQotDQorCQlpZiAo
ZHJpdmUtPnN0YXR1cyAmIChFUlJfU1RBVCB8IERSUV9TVEFUKSkNCiAJCQly
ZXR1cm4gYXRhX2Vycm9yKGRyaXZlLCBycSwgX19GVU5DVElPTl9fKTsNCi0J
CX0NCiAJfQ0KIAlpZiAoIXJxLT5ucl9zZWN0b3JzKSB7DQogCQlfX2F0YV9l
bmRfcmVxdWVzdChkcml2ZSwgcnEsIDEsIHJxLT5oYXJkX25yX3NlY3RvcnMp
Ow0KQEAgLTMwNyw2ICsyODAsNyBAQA0KIAkJcmV0ID0gaWRlX3N0b3BwZWQ7
DQogCX0gZWxzZSBpZiAoIW9rKSB7DQogCQkvKiBubyBkYXRhIHlldCwgc28g
d2FpdCBmb3IgYW5vdGhlciBpbnRlcnJ1cHQgKi8NCisJCS8qIEZJWE1FOiAg
LS1iem9sbmllciAqLw0KIAkJaWYgKCFjaC0+aGFuZGxlcikNCiAJCQlhdGFf
c2V0X2hhbmRsZXIoZHJpdmUsIHRhc2tfbXVsb3V0X2ludHIsIFdBSVRfQ01E
LCBOVUxMKTsNCiAJCXJldCA9IGlkZV9zdGFydGVkOw0KQEAgLTM1MSwxNCAr
MzI1LDE0IEBADQogDQogCQlycS0+ZXJyb3JzID0gMDsNCiANCisJCS8qIEZJ
WE1FOiAgLS1iem9sbmllciAqLw0KIAkJaWYgKCFjaC0+aGFuZGxlcikNCiAJ
CQlhdGFfc2V0X2hhbmRsZXIoZHJpdmUsIHRhc2tfbXVsb3V0X2ludHIsIFdB
SVRfQ01ELCBOVUxMKTsNCiANCiAJCXJldCA9IGlkZV9zdGFydGVkOw0KIAl9
DQotCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoY2gtPmxvY2ssIGZsYWdzKTsN
CiANCi0JcmV0dXJuIGlkZV9zdGFydGVkOw0KKwlyZXR1cm4gcmV0Ow0KIH0N
CiANCiAvKg0KQEAgLTUwOCw4ICs0ODIsNyBAQA0KIAkJCQl9IGVsc2UgaWYg
KGRyaXZlLT51c2luZ19kbWEpIHsNCiAJCQkJCWNtZCA9IFdJTl9SRUFERE1B
Ow0KIAkJCQl9IGVsc2UgaWYgKGRyaXZlLT5tdWx0X2NvdW50KSB7DQotCQkJ
CQkvKiBGSVhNRSA6IFNob3VsZG4ndCB0aGlzIGJlIHRhc2tfbXVsaW5faW50
cj8hICovDQotCQkJCQlhcmdzLlhYWF9oYW5kbGVyID0gdGFza19pbl9pbnRy
Ow0KKwkJCQkJYXJncy5YWFhfaGFuZGxlciA9IHRhc2tfbXVsaW5faW50cjsN
CiAJCQkJCWNtZCA9IFdJTl9NVUxUUkVBRDsNCiAJCQkJfSBlbHNlIHsNCiAJ
CQkJCWFyZ3MuWFhYX2hhbmRsZXIgPSB0YXNrX2luX2ludHI7DQpAQCAtNTc5
LDcgKzU1Miw2IEBADQogCS8qIEZJWE1FOiB0aGlzIGlzIGFjdHVhbGx5IGRp
c3Rpbmd1c2hpbmcgYmV0d2VlbiBQSU8gYW5kIERNQSByZXF1ZXN0cy4NCiAJ
ICovDQogCWlmIChhci0+WFhYX2hhbmRsZXIpIHsNCi0JCXN0cnVjdCBhdGFf
Y2hhbm5lbCAqY2ggPSBkcml2ZS0+Y2hhbm5lbDsNCiANCiAJCWF0YV9zZXRf
aGFuZGxlcihkcml2ZSwgYXItPlhYWF9oYW5kbGVyLCBXQUlUX0NNRCwgTlVM
TCk7DQogCQlPVVRfQllURShjbWQsIElERV9DT01NQU5EX1JFRyk7DQpAQCAt
NjI4LDcgKzYwMCw2IEBADQogCQkJCXJldHVybiBpZGVfc3RhcnRlZDsNCiAJ
CQl9IGVsc2Ugew0KIAkJCQlpbnQgaTsNCi0JCQkJaW50IHJldDsNCiANCiAJ
CQkJLyogUG9sbGluZyB3YWl0IHVudGlsIHRoZSBkcml2ZSBpcyByZWFkeS4N
CiAJCQkJICoNCkBAIC02NDksMTIgKzYyMCw4IEBADQogCQkJCQkgKi8NCiAJ
CQkJCXByaW50ayhLRVJOX0VSUiAiRElTQVNURVIgV0FJVElORyBUTyBIQVBQ
RU4hXG4iKTsNCiAJCQkJfQ0KLQkJCQkvKiBGSVhNRTogbWFrZSB0aGlzIHVu
bG9ja2luZyBnbyBhd2F5Ki8NCi0JCQkJc3Bpbl91bmxvY2tfaXJxKGNoLT5s
b2NrKTsNCi0JCQkJcmV0ID0gIGFyLT5YWFhfaGFuZGxlcihkcml2ZSwgcnEp
Ow0KLQkJCQlzcGluX2xvY2tfaXJxKGNoLT5sb2NrKTsNCiANCi0JCQkJcmV0
dXJuIHJldDsNCisJCQkJcmV0dXJuIGFyLT5YWFhfaGFuZGxlcihkcml2ZSwg
cnEpOw0KIAkJCX0NCiAJCX0NCiAJfSBlbHNlIHsNCmRpZmYgLVggZG9udGRp
ZmYgLXVyIGxpbnV4LTIuNS4yNC9kcml2ZXJzL2lkZS9pZGUtZmxvcHB5LmMg
bGludXgvZHJpdmVycy9pZGUvaWRlLWZsb3BweS5jDQotLS0gbGludXgtMi41
LjI0L2RyaXZlcnMvaWRlL2lkZS1mbG9wcHkuYwlXZWQgSnVuIDI2IDAwOjAy
OjUzIDIwMDINCisrKyBsaW51eC9kcml2ZXJzL2lkZS9pZGUtZmxvcHB5LmMJ
VGh1IEp1biAyNyAxMjozNzo1MyAyMDAyDQpAQCAtMzY1LDcgKzM2NSw3IEBA
DQogCQlyZXR1cm4gMDsNCiANCiAJaWYgKCEocnEtPmZsYWdzICYgUkVRX1NQ
RUNJQUwpKSB7DQotCQlhdGFfZW5kX3JlcXVlc3QoZHJpdmUsIHJxLCB1cHRv
ZGF0ZSk7DQorCQlfX2F0YV9lbmRfcmVxdWVzdChkcml2ZSwgcnEsIHVwdG9k
YXRlLCAwKTsNCiAJCXJldHVybiAwOw0KIAl9DQogDQpAQCAtNTU0LDggKzU1
NCw2IEBADQogICovDQogc3RhdGljIGlkZV9zdGFydHN0b3BfdCBpZGVmbG9w
cHlfcGNfaW50cihzdHJ1Y3QgYXRhX2RldmljZSAqZHJpdmUsIHN0cnVjdCBy
ZXF1ZXN0ICpycSkNCiB7DQotCXVuc2lnbmVkIGxvbmcgZmxhZ3M7DQotCXN0
cnVjdCBhdGFfY2hhbm5lbCAqY2ggPSBkcml2ZS0+Y2hhbm5lbDsNCiAJaWRl
ZmxvcHB5X2Zsb3BweV90ICpmbG9wcHkgPSBkcml2ZS0+ZHJpdmVyX2RhdGE7
DQogCWF0YXBpX3N0YXR1c19yZWdfdCBzdGF0dXM7DQogCWF0YXBpX2Jjb3Vu
dF9yZWdfdCBiY291bnQ7DQpAQCAtNjE4LDI2ICs2MTYsMjAgQEANCiAJCXJl
dHVybiBpZGVfc3RvcHBlZDsNCiAJfQ0KICNlbmRpZg0KLQkvKiBGSVhNRTog
dGhpcyBsb2NraW5nIHNob3VsZCBlbmNvbXBhc3MgdGhlIGFib3ZlIHJlZ2lz
dGVyDQotCSAqIGZpbGUgYWNjZXNzIHRvby4NCi0JICovDQogDQotCXNwaW5f
bG9ja19pcnFzYXZlKGNoLT5sb2NrLCBmbGFncyk7DQogCWJjb3VudC5iLmhp
Z2g9SU5fQllURSAoSURFX0JDT1VOVEhfUkVHKTsJCQkvKiBHZXQgdGhlIG51
bWJlciBvZiBieXRlcyB0byB0cmFuc2ZlciAqLw0KIAliY291bnQuYi5sb3c9
SU5fQllURSAoSURFX0JDT1VOVExfUkVHKTsJCQkvKiBvbiB0aGlzIGludGVy
cnVwdCAqLw0KIAlpcmVhc29uLmFsbD1JTl9CWVRFIChJREVfSVJFQVNPTl9S
RUcpOw0KIA0KIAlpZiAoaXJlYXNvbi5iLmNvZCkgew0KLQkJc3Bpbl91bmxv
Y2tfaXJxcmVzdG9yZShjaC0+bG9jaywgZmxhZ3MpOw0KLQ0KIAkJcHJpbnRr
IChLRVJOX0VSUiAiaWRlLWZsb3BweTogQ29EICE9IDAgaW4gaWRlZmxvcHB5
X3BjX2ludHJcbiIpOw0KKw0KIAkJcmV0dXJuIGlkZV9zdG9wcGVkOw0KIAl9
DQogCWlmIChpcmVhc29uLmIuaW8gPT0gdGVzdF9iaXQoUENfV1JJVElORywg
JnBjLT5mbGFncykpIHsJLyogSG9wZWZ1bGx5LCB3ZSB3aWxsIG5ldmVyIGdl
dCBoZXJlICovDQotCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKGNoLT5sb2Nr
LCBmbGFncyk7DQotDQogCQlwcmludGsgKEtFUk5fRVJSICJpZGUtZmxvcHB5
OiBXZSB3YW50ZWQgdG8gJXMsICIsIGlyZWFzb24uYi5pbyA/ICJXcml0ZSI6
IlJlYWQiKTsNCiAJCXByaW50ayAoS0VSTl9FUlIgImJ1dCB0aGUgZmxvcHB5
IHdhbnRzIHVzIHRvICVzICFcbiIsaXJlYXNvbi5iLmlvID8gIlJlYWQiOiJX
cml0ZSIpOw0KKw0KIAkJcmV0dXJuIGlkZV9zdG9wcGVkOw0KIAl9DQogCWlm
ICghdGVzdF9iaXQoUENfV1JJVElORywgJnBjLT5mbGFncykpIHsJCQkvKiBS
ZWFkaW5nIC0gQ2hlY2sgdGhhdCB3ZSBoYXZlIGVub3VnaCBzcGFjZSAqLw0K
QEAgLTY0OCw3ICs2NDAsNiBAQA0KIA0KIAkJCQlhdGFwaV9kaXNjYXJkX2Rh
dGEgKGRyaXZlLGJjb3VudC5hbGwpOw0KIAkJCQlhdGFfc2V0X2hhbmRsZXIo
ZHJpdmUsIGlkZWZsb3BweV9wY19pbnRyLElERUZMT1BQWV9XQUlUX0NNRCwg
TlVMTCk7DQotCQkJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoY2gtPmxvY2ss
IGZsYWdzKTsNCiANCiAJCQkJcmV0dXJuIGlkZV9zdGFydGVkOw0KIAkJCX0N
CkBAIC02NzIsNyArNjYzLDYgQEANCiAJcGMtPmN1cnJlbnRfcG9zaXRpb24r
PWJjb3VudC5hbGw7DQogDQogCWF0YV9zZXRfaGFuZGxlcihkcml2ZSwgaWRl
ZmxvcHB5X3BjX2ludHIsIElERUZMT1BQWV9XQUlUX0NNRCwgTlVMTCk7CQkv
KiBBbmQgc2V0IHRoZSBpbnRlcnJ1cHQgaGFuZGxlciBhZ2FpbiAqLw0KLQlz
cGluX3VubG9ja19pcnFyZXN0b3JlKGNoLT5sb2NrLCBmbGFncyk7DQogDQog
CXJldHVybiBpZGVfc3RhcnRlZDsNCiB9DQpAQCAtNjg0LDE2ICs2NzQsMTEg
QEANCiAgKi8NCiBzdGF0aWMgaWRlX3N0YXJ0c3RvcF90IGlkZWZsb3BweV90
cmFuc2Zlcl9wYyhzdHJ1Y3QgYXRhX2RldmljZSAqZHJpdmUsIHN0cnVjdCBy
ZXF1ZXN0ICpycSkNCiB7DQotCXVuc2lnbmVkIGxvbmcgZmxhZ3M7DQotCXN0
cnVjdCBhdGFfY2hhbm5lbCAqY2ggPSBkcml2ZS0+Y2hhbm5lbDsNCiAJaWRl
X3N0YXJ0c3RvcF90IHN0YXJ0c3RvcDsNCiAJaWRlZmxvcHB5X2Zsb3BweV90
ICpmbG9wcHkgPSBkcml2ZS0+ZHJpdmVyX2RhdGE7DQogCWF0YXBpX2lyZWFz
b25fcmVnX3QgaXJlYXNvbjsNCiAJaW50IHJldDsNCiANCi0JLyogRklYTUU6
IE1vdmUgdGhpcyBsb2NrIHVwd2FyZHMuDQotCSAqLw0KLQlzcGluX2xvY2tf
aXJxc2F2ZShjaC0+bG9jaywgZmxhZ3MpOw0KIAlpZiAoYXRhX3N0YXR1c19w
b2xsKGRyaXZlLCBEUlFfU1RBVCwgQlVTWV9TVEFULA0KIAkJCQlXQUlUX1JF
QURZLCBycSwgJnN0YXJ0c3RvcCkpIHsNCiAJCXByaW50ayAoS0VSTl9FUlIg
ImlkZS1mbG9wcHk6IFN0cmFuZ2UsIHBhY2tldCBjb21tYW5kIGluaXRpYXRl
ZCB5ZXQgRFJRIGlzbid0IGFzc2VydGVkXG4iKTsNCkBAIC03MTEsNyArNjk2
LDYgQEANCiAJCQlyZXQgPSBpZGVfc3RhcnRlZDsNCiAJCX0NCiAJfQ0KLQlz
cGluX3VubG9ja19pcnFyZXN0b3JlKGNoLT5sb2NrLCBmbGFncyk7DQogDQog
CXJldHVybiByZXQ7DQogfQ0KQEAgLTcyOSwxOCArNzEzLDE4IEBADQogICog
cGFja2V0LCB3ZSBzY2hlZHVsZSB0aGUgcGFja2V0IHRyYW5zZmVyIHRvIG9j
Y3VyIGFib3V0IDItMyB0aWNrcw0KICAqIGxhdGVyIGluIHRyYW5zZmVyX3Bj
Mi4NCiAgKi8NCi1zdGF0aWMgaW50IGlkZWZsb3BweV90cmFuc2Zlcl9wYzIo
c3RydWN0IGF0YV9kZXZpY2UgKmRyaXZlLCBzdHJ1Y3QgcmVxdWVzdCAqX19y
cSkNCitzdGF0aWMgaWRlX3N0YXJ0c3RvcF90IGlkZWZsb3BweV90cmFuc2Zl
cl9wYzIoc3RydWN0IGF0YV9kZXZpY2UgKmRyaXZlLCBzdHJ1Y3QgcmVxdWVz
dCAqX19ycSwgdW5zaWduZWQgbG9uZyAqd2FpdCkNCiB7DQogCWlkZWZsb3Bw
eV9mbG9wcHlfdCAqZmxvcHB5ID0gZHJpdmUtPmRyaXZlcl9kYXRhOw0KIA0K
IAlhdGFwaV93cml0ZShkcml2ZSwgZmxvcHB5LT5wYy0+YywgMTIpOyAvKiBT
ZW5kIHRoZSBhY3R1YWwgcGFja2V0ICovDQotCXJldHVybiBJREVGTE9QUFlf
V0FJVF9DTUQ7CQkvKiBUaW1lb3V0IGZvciB0aGUgcGFja2V0IGNvbW1hbmQg
Ki8NCisJKndhaXQgPSBJREVGTE9QUFlfV0FJVF9DTUQ7CS8qIFRpbWVvdXQg
Zm9yIHRoZSBwYWNrZXQgY29tbWFuZCAqLw0KKw0KKwlyZXR1cm4gaWRlX3N0
YXJ0ZWQ7DQogfQ0KIA0KIHN0YXRpYyBpZGVfc3RhcnRzdG9wX3QgaWRlZmxv
cHB5X3RyYW5zZmVyX3BjMShzdHJ1Y3QgYXRhX2RldmljZSAqZHJpdmUsIHN0
cnVjdCByZXF1ZXN0ICpycSkNCiB7DQotCXVuc2lnbmVkIGxvbmcgZmxhZ3M7
DQotCXN0cnVjdCBhdGFfY2hhbm5lbCAqY2ggPSBkcml2ZS0+Y2hhbm5lbDsN
CiAJaWRlZmxvcHB5X2Zsb3BweV90ICpmbG9wcHkgPSBkcml2ZS0+ZHJpdmVy
X2RhdGE7DQogCWlkZV9zdGFydHN0b3BfdCBzdGFydHN0b3A7DQogCWF0YXBp
X2lyZWFzb25fcmVnX3QgaXJlYXNvbjsNCkBAIC03NTMsMTEgKzczNyw2IEBA
DQogCQlyZXR1cm4gc3RhcnRzdG9wOw0KIAl9DQogDQotCS8qIEZJWE1FOiB0
aGlzIGxvY2tpbmcgc2hvdWxkIGVuY29tcGFzcyB0aGUgYWJvdmUgcmVnaXN0
ZXINCi0JICogZmlsZSBhY2Nlc3MgdG9vLg0KLQkgKi8NCi0NCi0Jc3Bpbl9s
b2NrX2lycXNhdmUoY2gtPmxvY2ssIGZsYWdzKTsNCiAJaXJlYXNvbi5hbGw9
SU5fQllURShJREVfSVJFQVNPTl9SRUcpOw0KIAlpZiAoIWlyZWFzb24uYi5j
b2QgfHwgaXJlYXNvbi5iLmlvKSB7DQogCQlwcmludGsgKEtFUk5fRVJSICJp
ZGUtZmxvcHB5OiAoSU8sQ29EKSAhPSAoMCwxKSB3aGlsZSBpc3N1aW5nIGEg
cGFja2V0IGNvbW1hbmRcbiIpOw0KQEAgLTc3OCw3ICs3NTcsNiBAQA0KIAkJ
CQlpZGVmbG9wcHlfdHJhbnNmZXJfcGMyKTsJLyogZmFpbCA9PSB0cmFuc2Zl
cl9wYzIgKi8NCiAJCXJldCA9IGlkZV9zdGFydGVkOw0KIAl9DQotCXNwaW5f
dW5sb2NrX2lycXJlc3RvcmUoY2gtPmxvY2ssIGZsYWdzKTsNCiANCiAJcmV0
dXJuIHJldDsNCiB9DQpAQCAtODU5LDE3ICs4MzcsOCBAQA0KIAl9DQogDQog
CWlmICh0ZXN0X2JpdChJREVGTE9QUFlfRFJRX0lOVEVSUlVQVCwgJmZsb3Bw
eS0+ZmxhZ3MpKSB7DQotCQl1bnNpZ25lZCBsb25nIGZsYWdzOw0KLQkJc3Ry
dWN0IGF0YV9jaGFubmVsICpjaCA9IGRyaXZlLT5jaGFubmVsOw0KLQ0KLQkJ
LyogRklYTUU6IHRoaXMgbG9ja2luZyBzaG91bGQgZW5jb21wYXNzIHRoZSBh
Ym92ZSByZWdpc3Rlcg0KLQkJICogZmlsZSBhY2Nlc3MgdG9vLg0KLQkJICov
DQotDQotCQlzcGluX2xvY2tfaXJxc2F2ZShjaC0+bG9jaywgZmxhZ3MpOw0K
IAkJYXRhX3NldF9oYW5kbGVyKGRyaXZlLCBwa3RfeGZlcl9yb3V0aW5lLCBJ
REVGTE9QUFlfV0FJVF9DTUQsIE5VTEwpOw0KIAkJT1VUX0JZVEUgKFdJTl9Q
QUNLRVRDTUQsIElERV9DT01NQU5EX1JFRyk7CQkvKiBJc3N1ZSB0aGUgcGFj
a2V0IGNvbW1hbmQgKi8NCi0JCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoY2gt
PmxvY2ssIGZsYWdzKTsNCiANCiAJCXJldHVybiBpZGVfc3RhcnRlZDsNCiAJ
fSBlbHNlIHsNCkBAIC0xMDEwLDEwICs5NzksOCBAQA0KICAqLw0KIHN0YXRp
YyBpZGVfc3RhcnRzdG9wX3QgaWRlZmxvcHB5X2RvX3JlcXVlc3Qoc3RydWN0
IGF0YV9kZXZpY2UgKmRyaXZlLCBzdHJ1Y3QgcmVxdWVzdCAqcnEsIHNlY3Rv
cl90IGJsb2NrKQ0KIHsNCi0Jc3RydWN0IGF0YV9jaGFubmVsICpjaCA9IGRy
aXZlLT5jaGFubmVsOw0KIAlpZGVmbG9wcHlfZmxvcHB5X3QgKmZsb3BweSA9
IGRyaXZlLT5kcml2ZXJfZGF0YTsNCiAJc3RydWN0IGF0YXBpX3BhY2tldF9j
b21tYW5kICpwYzsNCi0JaW50IHJldDsNCiANCiAjaWYgSURFRkxPUFBZX0RF
QlVHX0xPRw0KIAlwcmludGsgKEtFUk5fSU5GTyAicnFfc3RhdHVzOiAlZCwg
cnFfZGV2OiAldSwgZmxhZ3M6ICVseCwgZXJyb3JzOiAlZFxuIixycS0+cnFf
c3RhdHVzLCh1bnNpZ25lZCBpbnQpIHJxLT5ycV9kZXYscnEtPmZsYWdzLHJx
LT5lcnJvcnMpOw0KQEAgLTEwMjcsMjAgKzk5NCwxNSBAQA0KIAkJZWxzZQ0K
IAkJCXByaW50ayAoS0VSTl9FUlIgImlkZS1mbG9wcHk6ICVzOiBJL08gZXJy
b3JcbiIsIGRyaXZlLT5uYW1lKTsNCiANCi0JCS8qIEZJWE1FOiBtYWtlIHRo
aXMgdW5sb2NraW5nIGdvIGF3YXkqLw0KLQkJc3Bpbl91bmxvY2tfaXJxKGNo
LT5sb2NrKTsNCiAJCWlkZWZsb3BweV9lbmRfcmVxdWVzdChkcml2ZSwgcnEs
IDApOw0KLQkJc3Bpbl9sb2NrX2lycShjaC0+bG9jayk7DQogDQogCQlyZXR1
cm4gaWRlX3N0b3BwZWQ7DQogCX0NCiAJaWYgKHJxLT5mbGFncyAmIFJFUV9D
TUQpIHsNCiAJCWlmIChycS0+c2VjdG9yICUgZmxvcHB5LT5ic19mYWN0b3Ig
fHwgcnEtPm5yX3NlY3RvcnMgJSBmbG9wcHktPmJzX2ZhY3Rvcikgew0KIAkJ
CXByaW50ayAoIiVzOiB1bnN1cHBvcnRlZCByL3cgcmVxdWVzdCBzaXplXG4i
LCBkcml2ZS0+bmFtZSk7DQotCQkJLyogRklYTUU6IG1ha2UgdGhpcyB1bmxv
Y2tpbmcgZ28gYXdheSovDQotCQkJc3Bpbl91bmxvY2tfaXJxKGNoLT5sb2Nr
KTsNCisNCiAJCQlpZGVmbG9wcHlfZW5kX3JlcXVlc3QoZHJpdmUsIHJxLCAw
KTsNCi0JCQlzcGluX2xvY2tfaXJxKGNoLT5sb2NrKTsNCiANCiAJCQlyZXR1
cm4gaWRlX3N0b3BwZWQ7DQogCQl9DQpAQCAtMTA1MSwyMCArMTAxMywxMyBA
QA0KIAkJcGMgPSAoc3RydWN0IGF0YXBpX3BhY2tldF9jb21tYW5kICopIHJx
LT5idWZmZXI7DQogCX0gZWxzZSB7DQogCQlibGtfZHVtcF9ycV9mbGFncyhy
cSwgImlkZS1mbG9wcHk6IHVuc3VwcG9ydGVkIGNvbW1hbmQgaW4gcXVldWUi
KTsNCi0JCS8qIEZJWE1FOiBtYWtlIHRoaXMgdW5sb2NraW5nIGdvIGF3YXkq
Lw0KLQkJc3Bpbl91bmxvY2tfaXJxKGNoLT5sb2NrKTsNCisNCiAJCWlkZWZs
b3BweV9lbmRfcmVxdWVzdChkcml2ZSwgcnEsIDApOw0KLQkJc3Bpbl9sb2Nr
X2lycShjaC0+bG9jayk7DQogDQogCQlyZXR1cm4gaWRlX3N0b3BwZWQ7DQog
CX0NCiANCi0JLyogRklYTUU6IG1ha2UgdGhpcyB1bmxvY2tpbmcgZ28gYXdh
eSovDQotCXNwaW5fdW5sb2NrX2lycShjaC0+bG9jayk7DQotCXJldCA9IGlk
ZWZsb3BweV9pc3N1ZV9wYyhkcml2ZSwgcnEsIHBjKTsNCi0Jc3Bpbl9sb2Nr
X2lycShjaC0+bG9jayk7DQotDQotCXJldHVybiByZXQ7DQorCXJldHVybiBp
ZGVmbG9wcHlfaXNzdWVfcGMoZHJpdmUsIHJxLCBwYyk7DQogfQ0KIA0KIC8q
DQpkaWZmIC1YIGRvbnRkaWZmIC11ciBsaW51eC0yLjUuMjQvZHJpdmVycy9p
ZGUvaWRlLXRhcGUuYyBsaW51eC9kcml2ZXJzL2lkZS9pZGUtdGFwZS5jDQot
LS0gbGludXgtMi41LjI0L2RyaXZlcnMvaWRlL2lkZS10YXBlLmMJV2VkIEp1
biAyNiAwMDowMjo1MyAyMDAyDQorKysgbGludXgvZHJpdmVycy9pZGUvaWRl
LXRhcGUuYwlXZWQgSnVuIDI2IDE3OjU0OjExIDIwMDINCkBAIC0xMCw2ICsx
MCwxMCBAQA0KICAqLw0KIA0KIC8qDQorICogQklHIEZBVCBGSVhNRTogY2xl
YW4gdGFwZS0+c3BpbmxvY2sgbG9ja2luZyAgLS1iem9sbmllcg0KKyAqLw0K
Kw0KKy8qDQogICogSURFIEFUQVBJIHN0cmVhbWluZyB0YXBlIGRyaXZlci4N
CiAgKg0KICAqIFRoaXMgZHJpdmVyIGlzIGEgcGFydCBvZiB0aGUgTGludXgg
aWRlIGRyaXZlciBhbmQgd29ya3MgaW4gY28tb3BlcmF0aW9uDQpAQCAtMTgx
OCw4ICsxODIyLDYgQEANCiAgKi8NCiBzdGF0aWMgaWRlX3N0YXJ0c3RvcF90
IGlkZXRhcGVfcGNfaW50cihzdHJ1Y3QgYXRhX2RldmljZSAqZHJpdmUsIHN0
cnVjdCByZXF1ZXN0ICpycSkNCiB7DQotCXVuc2lnbmVkIGxvbmcgZmxhZ3M7
DQotCXN0cnVjdCBhdGFfY2hhbm5lbCAqY2ggPSBkcml2ZS0+Y2hhbm5lbDsN
CiAJaWRldGFwZV90YXBlX3QgKnRhcGUgPSBkcml2ZS0+ZHJpdmVyX2RhdGE7
DQogCWF0YXBpX3N0YXR1c19yZWdfdCBzdGF0dXM7DQogCWF0YXBpX2Jjb3Vu
dF9yZWdfdCBiY291bnQ7DQpAQCAtMTkxNSwxNyArMTkxNywxMSBAQA0KIAkJ
cGMtPmNhbGxiYWNrKGRyaXZlLCBycSk7CS8qIENvbW1hbmQgZmluaXNoZWQg
LSBDYWxsIHRoZSBjYWxsYmFjayBmdW5jdGlvbiAqLw0KIAkJcmV0dXJuIGlk
ZV9zdG9wcGVkOw0KIAl9DQotCS8qIEZJWE1FOiB0aGlzIGxvY2tpbmcgc2hv
dWxkIGVuY29tcGFzcyB0aGUgYWJvdmUgcmVnaXN0ZXINCi0JICogZmlsZSBh
Y2Nlc3MgdG9vLg0KLQkgKi8NCi0NCi0Jc3Bpbl9sb2NrX2lycXNhdmUoY2gt
PmxvY2ssIGZsYWdzKTsNCiAjaWZkZWYgQ09ORklHX0JMS19ERVZfSURFRE1B
DQogCWlmICh0ZXN0X2FuZF9jbGVhcl9iaXQgKFBDX0RNQV9JTl9QUk9HUkVT
UywgJnBjLT5mbGFncykpIHsNCiAJCXByaW50ayAoS0VSTl9FUlIgImlkZS10
YXBlOiBUaGUgdGFwZSB3YW50cyB0byBpc3N1ZSBtb3JlIGludGVycnVwdHMg
aW4gRE1BIG1vZGVcbiIpOw0KIAkJcHJpbnRrIChLRVJOX0VSUiAiaWRlLXRh
cGU6IERNQSBkaXNhYmxlZCwgcmV2ZXJ0aW5nIHRvIFBJT1xuIik7DQogCQl1
ZG1hX2VuYWJsZShkcml2ZSwgMCwgMSk7DQotCQlzcGluX3VubG9ja19pcnFy
ZXN0b3JlKGNoLT5sb2NrLCBmbGFncyk7DQogDQogCQlyZXR1cm4gaWRlX3N0
b3BwZWQ7DQogCX0NCkBAIC0xOTM2LDE2ICsxOTMyLDE0IEBADQogCWlyZWFz
b24uYWxsICAgPSBJTl9CWVRFIChJREVfSVJFQVNPTl9SRUcpOw0KIA0KIAlp
ZiAoaXJlYXNvbi5iLmNvZCkgew0KLQkJc3Bpbl91bmxvY2tfaXJxcmVzdG9y
ZShjaC0+bG9jaywgZmxhZ3MpOw0KLQ0KIAkJcHJpbnRrIChLRVJOX0VSUiAi
aWRlLXRhcGU6IENvRCAhPSAwIGluIGlkZXRhcGVfcGNfaW50clxuIik7DQor
DQogCQlyZXR1cm4gaWRlX3N0b3BwZWQ7DQogCX0NCiAJaWYgKGlyZWFzb24u
Yi5pbyA9PSB0ZXN0X2JpdCAoUENfV1JJVElORywgJnBjLT5mbGFncykpIHsJ
LyogSG9wZWZ1bGx5LCB3ZSB3aWxsIG5ldmVyIGdldCBoZXJlICovDQotCQlz
cGluX3VubG9ja19pcnFyZXN0b3JlKGNoLT5sb2NrLCBmbGFncyk7DQotDQog
CQlwcmludGsgKEtFUk5fRVJSICJpZGUtdGFwZTogV2Ugd2FudGVkIHRvICVz
LCAiLCBpcmVhc29uLmIuaW8gPyAiV3JpdGUiOiJSZWFkIik7DQogCQlwcmlu
dGsgKEtFUk5fRVJSICJpZGUtdGFwZTogYnV0IHRoZSB0YXBlIHdhbnRzIHVz
IHRvICVzICFcbiIsaXJlYXNvbi5iLmlvID8gIlJlYWQiOiJXcml0ZSIpOw0K
Kw0KIAkJcmV0dXJuIGlkZV9zdG9wcGVkOw0KIAl9DQogCWlmICghdGVzdF9i
aXQgKFBDX1dSSVRJTkcsICZwYy0+ZmxhZ3MpKSB7CQkJLyogUmVhZGluZyAt
IENoZWNrIHRoYXQgd2UgaGF2ZSBlbm91Z2ggc3BhY2UgKi8NCkBAIC0xOTU1
LDcgKzE5NDksNiBAQA0KIAkJCQlwcmludGsgKEtFUk5fRVJSICJpZGUtdGFw
ZTogVGhlIHRhcGUgd2FudHMgdG8gc2VuZCB1cyBtb3JlIGRhdGEgdGhhbiBl
eHBlY3RlZCAtIGRpc2NhcmRpbmcgZGF0YVxuIik7DQogCQkJCWF0YXBpX2Rp
c2NhcmRfZGF0YSAoZHJpdmUsIGJjb3VudC5hbGwpOw0KIAkJCQlhdGFfc2V0
X2hhbmRsZXIoZHJpdmUsIGlkZXRhcGVfcGNfaW50ciwgSURFVEFQRV9XQUlU
X0NNRCwgTlVMTCk7DQotCQkJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoY2gt
PmxvY2ssIGZsYWdzKTsNCiANCiAJCQkJcmV0dXJuIGlkZV9zdGFydGVkOw0K
IAkJCX0NCkBAIC0xOTgzLDcgKzE5NzYsNiBAQA0KIAkJcHJpbnRrKEtFUk5f
SU5GTyAiaWRlLXRhcGU6IFtjbWQgJXhdIHRyYW5zZmVycmVkICVkIGJ5dGVz
IG9uIHRoYXQgaW50ZXJydXB0XG4iLCBwYy0+Y1swXSwgYmNvdW50LmFsbCk7
DQogI2VuZGlmDQogCWF0YV9zZXRfaGFuZGxlcihkcml2ZSwgaWRldGFwZV9w
Y19pbnRyLCBJREVUQVBFX1dBSVRfQ01ELCBOVUxMKTsJLyogQW5kIHNldCB0
aGUgaW50ZXJydXB0IGhhbmRsZXIgYWdhaW4gKi8NCi0Jc3Bpbl91bmxvY2tf
aXJxcmVzdG9yZShjaC0+bG9jaywgZmxhZ3MpOw0KIA0KIAlyZXR1cm4gaWRl
X3N0YXJ0ZWQ7DQogfQ0KQEAgLTIwMzIsOCArMjAyNCw2IEBADQogICovDQog
c3RhdGljIGlkZV9zdGFydHN0b3BfdCBpZGV0YXBlX3RyYW5zZmVyX3BjKHN0
cnVjdCBhdGFfZGV2aWNlICpkcml2ZSwgc3RydWN0IHJlcXVlc3QgKnJxKQ0K
IHsNCi0JdW5zaWduZWQgbG9uZyBmbGFnczsNCi0Jc3RydWN0IGF0YV9jaGFu
bmVsICpjaCA9IGRyaXZlLT5jaGFubmVsOw0KIAlpZGV0YXBlX3RhcGVfdCAq
dGFwZSA9IGRyaXZlLT5kcml2ZXJfZGF0YTsNCiAJc3RydWN0IGF0YXBpX3Bh
Y2tldF9jb21tYW5kICpwYyA9IHRhcGUtPnBjOw0KIAlhdGFwaV9pcmVhc29u
X3JlZ190IGlyZWFzb247DQpAQCAtMjA0MSw5ICsyMDMxLDYgQEANCiAJaWRl
X3N0YXJ0c3RvcF90IHN0YXJ0c3RvcDsNCiAJaW50IHJldDsNCiANCi0JLyog
RklYTUU6IE1vdmUgdGhpcyBsb2NrIHVwd2FyZHMuDQotCSAqLw0KLQlzcGlu
X2xvY2tfaXJxc2F2ZShjaC0+bG9jaywgZmxhZ3MpOw0KIAlpZiAoYXRhX3N0
YXR1c19wb2xsKGRyaXZlLCBEUlFfU1RBVCwgQlVTWV9TVEFULA0KIAkJCQlX
QUlUX1JFQURZLCBycSwgJnN0YXJ0c3RvcCkpIHsNCiAJCXByaW50ayAoS0VS
Tl9FUlIgImlkZS10YXBlOiBTdHJhbmdlLCBwYWNrZXQgY29tbWFuZCBpbml0
aWF0ZWQgeWV0IERSUSBpc24ndCBhc3NlcnRlZFxuIik7DQpAQCAtMjA3MSw3
ICsyMDU4LDYgQEANCiAJCQlyZXQgPSBpZGVfc3RhcnRlZDsNCiAJCX0NCiAJ
fQ0KLQlzcGluX3VubG9ja19pcnFyZXN0b3JlKGNoLT5sb2NrLCBmbGFncyk7
DQogDQogCXJldHVybiByZXQ7DQogfQ0KQEAgLTIxNDUsMTcgKzIxMzEsOCBA
QA0KIAl9DQogI2VuZGlmDQogCWlmICh0ZXN0X2JpdChJREVUQVBFX0RSUV9J
TlRFUlJVUFQsICZ0YXBlLT5mbGFncykpIHsNCi0JCXVuc2lnbmVkIGxvbmcg
ZmxhZ3M7DQotCQlzdHJ1Y3QgYXRhX2NoYW5uZWwgKmNoID0gZHJpdmUtPmNo
YW5uZWw7DQotDQotCQkvKiBGSVhNRTogdGhpcyBsb2NraW5nIHNob3VsZCBl
bmNvbXBhc3MgdGhlIGFib3ZlIHJlZ2lzdGVyDQotCQkgKiBmaWxlIGFjY2Vz
cyB0b28uDQotCQkgKi8NCi0NCi0JCXNwaW5fbG9ja19pcnFzYXZlKGNoLT5s
b2NrLCBmbGFncyk7DQogCQlhdGFfc2V0X2hhbmRsZXIoZHJpdmUsIGlkZXRh
cGVfdHJhbnNmZXJfcGMsIElERVRBUEVfV0FJVF9DTUQsIE5VTEwpOw0KIAkJ
T1VUX0JZVEUoV0lOX1BBQ0tFVENNRCwgSURFX0NPTU1BTkRfUkVHKTsNCi0J
CXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoY2gtPmxvY2ssIGZsYWdzKTsNCiAN
CiAJCXJldHVybiBpZGVfc3RhcnRlZDsNCiAJfSBlbHNlIHsNCkBAIC0yNDQ1
LDEyICsyNDIyLDEwIEBADQogICovDQogc3RhdGljIGlkZV9zdGFydHN0b3Bf
dCBpZGV0YXBlX2RvX3JlcXVlc3Qoc3RydWN0IGF0YV9kZXZpY2UgKmRyaXZl
LCBzdHJ1Y3QgcmVxdWVzdCAqcnEsIHNlY3Rvcl90IGJsb2NrKQ0KIHsNCi0J
c3RydWN0IGF0YV9jaGFubmVsICpjaCA9IGRyaXZlLT5jaGFubmVsOw0KIAlp
ZGV0YXBlX3RhcGVfdCAqdGFwZSA9IGRyaXZlLT5kcml2ZXJfZGF0YTsNCiAJ
c3RydWN0IGF0YXBpX3BhY2tldF9jb21tYW5kICpwYzsNCiAJc3RydWN0IHJl
cXVlc3QgKnBvc3Rwb25lZF9ycSA9IHRhcGUtPnBvc3Rwb25lZF9ycTsNCiAJ
YXRhcGlfc3RhdHVzX3JlZ190IHN0YXR1czsNCi0JaW50IHJldDsNCiANCiAj
aWYgSURFVEFQRV9ERUJVR19MT0cNCiAvKglpZiAodGFwZS0+ZGVidWdfbGV2
ZWwgPj0gNSkNCkBAIC0yNDcyLDIzICsyNDQ3LDE1IEBADQogCSAqCVJldHJ5
IGEgZmFpbGVkIHBhY2tldCBjb21tYW5kDQogCSAqLw0KIAlpZiAodGFwZS0+
ZmFpbGVkX3BjICE9IE5VTEwgJiYgdGFwZS0+cGMtPmNbMF0gPT0gSURFVEFQ
RV9SRVFVRVNUX1NFTlNFX0NNRCkgew0KLQkJaW50IHJldDsNCiANCi0JCS8q
IEZJWE1FOiBtYWtlIHRoaXMgdW5sb2NraW5nIGdvIGF3YXkqLw0KLQkJc3Bp
bl91bmxvY2tfaXJxKGNoLT5sb2NrKTsNCi0JCXJldCA9IGlkZXRhcGVfaXNz
dWVfcGFja2V0X2NvbW1hbmQoZHJpdmUsIHJxLCB0YXBlLT5mYWlsZWRfcGMp
Ow0KLQkJc3Bpbl9sb2NrX2lycShjaC0+bG9jayk7DQotDQotCQlyZXR1cm4g
cmV0Ow0KKwkJcmV0dXJuIGlkZXRhcGVfaXNzdWVfcGFja2V0X2NvbW1hbmQo
ZHJpdmUsIHJxLCB0YXBlLT5mYWlsZWRfcGMpOw0KIAl9DQogI2lmIElERVRB
UEVfREVCVUdfQlVHUw0KIAlpZiAocG9zdHBvbmVkX3JxICE9IE5VTEwpDQog
CQlpZiAocnEgIT0gcG9zdHBvbmVkX3JxKSB7DQogCQkJcHJpbnRrIChLRVJO
X0VSUiAiaWRlLXRhcGU6IGlkZS10YXBlLmMgYnVnIC0gVHdvIERTQyByZXF1
ZXN0cyB3ZXJlIHF1ZXVlZFxuIik7DQotCQkJLyogRklYTUU6IG1ha2UgdGhp
cyB1bmxvY2tpbmcgZ28gYXdheSovDQotCQkJc3Bpbl91bmxvY2tfaXJxKGNo
LT5sb2NrKTsNCisNCiAJCQlpZGV0YXBlX2VuZF9yZXF1ZXN0KGRyaXZlLCBy
cSwgMCk7DQotCQkJc3Bpbl9sb2NrX2lycShjaC0+bG9jayk7DQogDQogCQkJ
cmV0dXJuIGlkZV9zdG9wcGVkOw0KIAkJfQ0KQEAgLTI1NjYsMTUgKzI1MzMs
MTEgQEANCiAJCQl0YXBlLT5kc2NfdGltZW91dCA9IGppZmZpZXMgKyBJREVU
QVBFX0RTQ19SV19USU1FT1VUOw0KIAkJfSBlbHNlIGlmICgoc2lnbmVkIGxv
bmcpIChqaWZmaWVzIC0gdGFwZS0+ZHNjX3RpbWVvdXQpID4gMCkgew0KIAkJ
CXByaW50ayAoS0VSTl9FUlIgImlkZS10YXBlOiAlczogRFNDIHRpbWVvdXRc
biIsIHRhcGUtPm5hbWUpOw0KLQkJCWlmIChycS0+ZmxhZ3MgPT0gSURFVEFQ
RV9QQ19SUTIpIHsNCi0JCQkJLyogRklYTUU6IG1ha2UgdGhpcyB1bmxvY2tp
bmcgZ28gYXdheSovDQotCQkJCXNwaW5fdW5sb2NrX2lycShjaC0+bG9jayk7
DQorDQorCQkJaWYgKHJxLT5mbGFncyA9PSBJREVUQVBFX1BDX1JRMikNCiAJ
CQkJaWRldGFwZV9tZWRpYV9hY2Nlc3NfZmluaXNoZWQoZHJpdmUsIHJxKTsN
Ci0JCQkJc3Bpbl9sb2NrX2lycShjaC0+bG9jayk7DQotCQkJCXJldHVybiBp
ZGVfc3RvcHBlZDsNCi0JCQl9IGVsc2Ugew0KLQkJCQlyZXR1cm4gaWRlX3N0
b3BwZWQ7DQotCQkJfQ0KKw0KKwkJCXJldHVybiBpZGVfc3RvcHBlZDsNCiAJ
CX0gZWxzZSBpZiAoamlmZmllcyAtIHRhcGUtPmRzY19wb2xsaW5nX3N0YXJ0
ID4gSURFVEFQRV9EU0NfTUFfVEhSRVNIT0xEKQ0KIAkJCXRhcGUtPmRzY19w
b2xsaW5nX2ZyZXF1ZW5jeSA9IElERVRBUEVfRFNDX01BX1NMT1c7DQogCQlp
ZGV0YXBlX3Bvc3Rwb25lX3JlcXVlc3QoZHJpdmUsIHJxKTsNCkBAIC0yNjM4
LDI1ICsyNjAxLDE4IEBADQogCQkJcnEtPmZsYWdzID0gSURFVEFQRV9QQ19S
UTI7DQogCQkJYnJlYWs7DQogCQljYXNlIElERVRBUEVfUENfUlEyOg0KLQkJ
CS8qIEZJWE1FOiBtYWtlIHRoaXMgdW5sb2NraW5nIGdvIGF3YXkqLw0KLQkJ
CXNwaW5fdW5sb2NrX2lycShjaC0+bG9jayk7DQogCQkJaWRldGFwZV9tZWRp
YV9hY2Nlc3NfZmluaXNoZWQoZHJpdmUsIHJxKTsNCi0JCQlzcGluX2xvY2tf
aXJxKGNoLT5sb2NrKTsNCisNCiAJCQlyZXR1cm4gaWRlX3N0b3BwZWQ7DQog
CQlkZWZhdWx0Og0KIAkJCXByaW50ayAoS0VSTl9FUlIgImlkZS10YXBlOiBi
dWcgaW4gSURFVEFQRV9SUV9DTUQgbWFjcm9cbiIpOw0KLQkJCS8qIEZJWE1F
OiBtYWtlIHRoaXMgdW5sb2NraW5nIGdvIGF3YXkqLw0KLQkJCXNwaW5fdW5s
b2NrX2lycShjaC0+bG9jayk7DQorDQogCQkJaWRldGFwZV9lbmRfcmVxdWVz
dChkcml2ZSwgcnEsIDApOw0KLQkJCXNwaW5fbG9ja19pcnEoY2gtPmxvY2sp
Ow0KKw0KIAkJCXJldHVybiBpZGVfc3RvcHBlZDsNCiAJfQ0KLQkvKiBGSVhN
RTogbWFrZSB0aGlzIHVubG9ja2luZyBnbyBhd2F5Ki8NCi0Jc3Bpbl91bmxv
Y2tfaXJxKGNoLT5sb2NrKTsNCi0JcmV0ID0gaWRldGFwZV9pc3N1ZV9wYWNr
ZXRfY29tbWFuZChkcml2ZSwgcnEsIHBjKTsNCi0Jc3Bpbl9sb2NrX2lycShj
aC0+bG9jayk7DQogDQotCXJldHVybiByZXQ7DQorCXJldHVybiBpZGV0YXBl
X2lzc3VlX3BhY2tldF9jb21tYW5kKGRyaXZlLCBycSwgcGMpOw0KIH0NCiAN
CiAvKg0KZGlmZiAtWCBkb250ZGlmZiAtdXIgbGludXgtMi41LjI0L2RyaXZl
cnMvaWRlL2lkZS10YXNrZmlsZS5jIGxpbnV4L2RyaXZlcnMvaWRlL2lkZS10
YXNrZmlsZS5jDQotLS0gbGludXgtMi41LjI0L2RyaXZlcnMvaWRlL2lkZS10
YXNrZmlsZS5jCVdlZCBKdW4gMjYgMDA6MDI6NTMgMjAwMg0KKysrIGxpbnV4
L2RyaXZlcnMvaWRlL2lkZS10YXNrZmlsZS5jCVRodSBKdW4gMjcgMDE6MzQ6
NDQgMjAwMg0KQEAgLTI0MiwxNiArMjQyLDE4IEBADQogLyoNCiAgKiBJbnZv
a2VkIG9uIGNvbXBsZXRpb24gb2YgYSBzcGVjaWFsIFJFUV9TUEVDSUFMIGNv
bW1hbmQuDQogICovDQorLyoNCisgKiBDaGFubmVsIGxvY2sgc2hvdWxkIGJl
IGhlbGQuDQorICovDQogc3RhdGljIGlkZV9zdGFydHN0b3BfdCBzcGVjaWFs
X2ludHIoc3RydWN0IGF0YV9kZXZpY2UgKmRyaXZlLCBzdHJ1Y3QNCiAJCXJl
cXVlc3QgKnJxKSB7DQogDQogCXN0cnVjdCBhdGFfdGFza2ZpbGUgKmFyID0g
cnEtPnNwZWNpYWw7DQogCWlkZV9zdGFydHN0b3BfdCByZXQgPSBpZGVfc3Rv
cHBlZDsNCi0JdW5zaWduZWQgbG9uZyBmbGFnczsNCiANCi0JaWRlX19zdGko
KTsJLyogbG9jYWwgQ1BVIG9ubHkgKi8NCi0NCi0Jc3Bpbl9sb2NrX2lycXNh
dmUoZHJpdmUtPmNoYW5uZWwtPmxvY2ssIGZsYWdzKTsNCisJLyogRklYTUU6
ICAtLWJ6b2xuaWVyDQorCWlkZV9fc3RpKCk7DQorCSovDQogDQogCWlmIChy
cS0+YnVmZmVyICYmIGFyLT50YXNrZmlsZS5zZWN0b3JfbnVtYmVyKSB7DQog
CQlpZiAoIWF0YV9zdGF0dXMoZHJpdmUsIDAsIERSUV9TVEFUKSAmJiBhci0+
dGFza2ZpbGUuc2VjdG9yX251bWJlcikgew0KQEAgLTI4Nyw4ICsyODksNiBA
QA0KIAlkcml2ZS0+cnEgPSBOVUxMOw0KIAllbmRfdGhhdF9yZXF1ZXN0X2xh
c3QocnEpOw0KIA0KLQlzcGluX3VubG9ja19pcnFyZXN0b3JlKGRyaXZlLT5j
aGFubmVsLT5sb2NrLCBmbGFncyk7DQotDQogCXJldHVybiByZXQ7DQogfQ0K
IA0KZGlmZiAtWCBkb250ZGlmZiAtdXIgbGludXgtMi41LjI0L2RyaXZlcnMv
aWRlL2lkZS5jIGxpbnV4L2RyaXZlcnMvaWRlL2lkZS5jDQotLS0gbGludXgt
Mi41LjI0L2RyaXZlcnMvaWRlL2lkZS5jCVdlZCBKdW4gMjYgMDA6MDI6NTMg
MjAwMg0KKysrIGxpbnV4L2RyaXZlcnMvaWRlL2lkZS5jCVRodSBKdW4gMjcg
MDI6MDM6MzAgMjAwMg0KQEAgLTE0OCwyMiArMTQ4LDYgQEANCiB9DQogDQog
LyoNCi0gKiBUaGlzIGlzIHRoZSBkZWZhdWx0IGVuZCByZXF1ZXN0IGZ1bmN0
aW9uIGFzIHdlbGwNCi0gKi8NCi1pbnQgYXRhX2VuZF9yZXF1ZXN0KHN0cnVj
dCBhdGFfZGV2aWNlICpkcml2ZSwgc3RydWN0IHJlcXVlc3QgKnJxLCBpbnQg
dXB0b2RhdGUpDQotew0KLQl1bnNpZ25lZCBsb25nIGZsYWdzOw0KLQlzdHJ1
Y3QgYXRhX2NoYW5uZWwgKmNoID0gZHJpdmUtPmNoYW5uZWw7DQotCWludCBy
ZXQ7DQotDQotCXNwaW5fbG9ja19pcnFzYXZlKGNoLT5sb2NrLCBmbGFncyk7
DQotCXJldCA9IF9fYXRhX2VuZF9yZXF1ZXN0KGRyaXZlLCBycSwgdXB0b2Rh
dGUsIDApOw0KLQlzcGluX3VubG9ja19pcnFyZXN0b3JlKGRyaXZlLT5jaGFu
bmVsLT5sb2NrLCBmbGFncyk7DQotDQotCXJldHVybiByZXQ7DQotfQ0KLQ0K
LS8qDQogICogVGhpcyBzaG91bGQgZ2V0IGludm9rZWQgYW55IHRpbWUgd2Ug
ZXhpdCB0aGUgZHJpdmVyIHRvDQogICogd2FpdCBmb3IgYW4gaW50ZXJydXB0
IHJlc3BvbnNlIGZyb20gYSBkcml2ZS4gIGhhbmRsZXIoKSBwb2ludHMNCiAg
KiBhdCB0aGUgYXBwcm9wcmlhdGUgY29kZSB0byBoYW5kbGUgdGhlIG5leHQg
aW50ZXJydXB0LCBhbmQgYQ0KQEAgLTM0Nyw3ICszMzEsNyBAQA0KIAl9DQog
CWNoLT5wb2xsX3RpbWVvdXQgPSAwOwkvKiBkb25lIHBvbGxpbmcgKi8NCiAN
Ci0JcmV0dXJuIGlkZV9zdG9wcGVkOw0KKwlyZXR1cm4gcmV0Ow0KIH0NCiAN
CiAvKg0KQEAgLTM3NCw2ICszNTgsNyBAQA0KIAl1bnNpZ25lZCBsb25nIGZs
YWdzOw0KIAlzdHJ1Y3QgYXRhX2NoYW5uZWwgKmNoID0gZHJpdmUtPmNoYW5u
ZWw7DQogDQorCS8qIEZJWE1FOiAgLS1iem9sbmllciAqLw0KIAlfX3NhdmVf
ZmxhZ3MoZmxhZ3MpOwkvKiBsb2NhbCBDUFUgb25seSAqLw0KIAlfX2NsaSgp
OwkJLyogbG9jYWwgQ1BVIG9ubHkgKi8NCiANCkBAIC00NjcsNiArNDUyLDcg
QEANCiAJdW5zaWduZWQgbG9uZyBmbGFnczsNCiAJdTggZXJyID0gMDsNCiAN
CisJLyogRklYTUU6ICAtLWJ6b2xuaWVyICovDQogCV9fc2F2ZV9mbGFncyAo
ZmxhZ3MpOwkvKiBsb2NhbCBDUFUgb25seSAqLw0KIAlpZGVfX3N0aSgpOwkJ
LyogbG9jYWwgQ1BVIG9ubHkgKi8NCiANCkBAIC01NzMsNyArNTU5LDcgQEAN
CiAvKg0KICAqIFRha2UgYWN0aW9uIGJhc2VkIG9uIHRoZSBlcnJvciByZXR1
cm5lZCBieSB0aGUgZHJpdmUuDQogICoNCi0gKiBGSVhNRTogQ2hhbm5lbCBs
b2NrIHNob3VsZCBiZSBoZWxkLg0KKyAqIENoYW5uZWwgbG9jayBzaG91bGQg
YmUgaGVsZC4NCiAgKi8NCiBpZGVfc3RhcnRzdG9wX3QgYXRhX2Vycm9yKHN0
cnVjdCBhdGFfZGV2aWNlICpkcml2ZSwgc3RydWN0IHJlcXVlc3QgKnJxLAlj
b25zdCBjaGFyICptc2cpDQogew0KQEAgLTYxNyw3ICs2MDMsNiBAQA0KIA0K
IAlpZiAocnEtPmVycm9ycyA+PSBFUlJPUl9NQVgpIHsNCiAJCXByaW50ayhL
RVJOX0VSUiAiJXM6IG1heCBudW1iZXIgb2YgcmV0cmllcyBleGNlZWRlZCFc
biIsIGRyaXZlLT5uYW1lKTsNCi0JCS8qIEZJWE1FOiBtYWtlIHN1cmUgYWxs
IGVuZF9yZXF1ZXN0IGltcGxlbWVudGF0aW9ucyBhcmUgbG9jayBmcmVlICov
DQogCQlpZiAoYXRhX29wcyhkcml2ZSkgJiYgYXRhX29wcyhkcml2ZSktPmVu
ZF9yZXF1ZXN0KQ0KIAkJCWF0YV9vcHMoZHJpdmUpLT5lbmRfcmVxdWVzdChk
cml2ZSwgcnEsIDApOw0KIAkJZWxzZQ0KQEAgLTYyNyw2ICs2MTIsNyBAQA0K
IAkJaWYgKChycS0+ZXJyb3JzICYgRVJST1JfUkVTRVQpID09IEVSUk9SX1JF
U0VUKQ0KIAkJCXJldHVybiBkb19yZXNldDEoZHJpdmUsIDEpOw0KIAkJaWYg
KChycS0+ZXJyb3JzICYgRVJST1JfUkVDQUwpID09IEVSUk9SX1JFQ0FMKQ0K
KwkJCS8qIEZJWE1FOiB0cmllcyB0byBhY3F1aXJlIHRoZSBjaGFubmVsIGxv
Y2sgLVp3YW5lICovDQogCQkJcmV0dXJuIGRvX3JlY2FsaWJyYXRlKGRyaXZl
KTsNCiAJfQ0KIA0KQEAgLTcwMCwzNSArNjg2LDE0IEBADQogCXJldHVybiBy
ZXQ7DQogDQoga2lsbF9ycToNCi0JaWYgKGF0YV9vcHMoZHJpdmUpKSB7DQot
CQlpZiAoYXRhX29wcyhkcml2ZSktPmVuZF9yZXF1ZXN0KSB7DQotCQkJc3Bp
bl91bmxvY2tfaXJxKGNoLT5sb2NrKTsNCi0JCQlhdGFfb3BzKGRyaXZlKS0+
ZW5kX3JlcXVlc3QoZHJpdmUsIHJxLCAwKTsNCi0JCQlzcGluX2xvY2tfaXJx
KGNoLT5sb2NrKTsNCi0JCX0gZWxzZQ0KLQkJCV9fYXRhX2VuZF9yZXF1ZXN0
KGRyaXZlLCBycSwgMCwgMCk7DQotCX0gZWxzZQ0KKwlpZiAoYXRhX29wcyhk
cml2ZSkgJiYgYXRhX29wcyhkcml2ZSktPmVuZF9yZXF1ZXN0KQ0KKwkJYXRh
X29wcyhkcml2ZSktPmVuZF9yZXF1ZXN0KGRyaXZlLCBycSwgMCk7DQorCWVs
c2UNCiAJCV9fYXRhX2VuZF9yZXF1ZXN0KGRyaXZlLCBycSwgMCwgMCk7DQog
DQogCXJldHVybiBpZGVfc3RvcHBlZDsNCiB9DQogDQotaWRlX3N0YXJ0c3Rv
cF90IHJlc3RhcnRfcmVxdWVzdChzdHJ1Y3QgYXRhX2RldmljZSAqZHJpdmUp
DQotew0KLQlzdHJ1Y3QgYXRhX2NoYW5uZWwgKmNoID0gZHJpdmUtPmNoYW5u
ZWw7DQotCXVuc2lnbmVkIGxvbmcgZmxhZ3M7DQotCWludCByZXQ7DQotDQot
CXNwaW5fbG9ja19pcnFzYXZlKGNoLT5sb2NrLCBmbGFncyk7DQotDQotCWNo
LT5oYW5kbGVyID0gTlVMTDsNCi0JZGVsX3RpbWVyKCZjaC0+dGltZXIpOw0K
LQlyZXQgPSBzdGFydF9yZXF1ZXN0KGRyaXZlLCBkcml2ZS0+cnEpOw0KLQlz
cGluX3VubG9ja19pcnFyZXN0b3JlKGNoLT5sb2NrLCBmbGFncyk7DQotDQot
CXJldHVybiByZXQ7DQotfQ0KLQ0KIC8qDQogICogVGhpcyBpcyB1c2VkIGJ5
IGEgZHJpdmUgdG8gZ2l2ZSBleGNlc3MgYmFuZHdpZHRoIGJhY2sgYnkgc2xl
ZXBpbmcgZm9yDQogICogdGltZW91dCBqaWZmaWVzLg0KQEAgLTk5MywxMCAr
OTU4LDEzIEBADQogCQkJdW5zaWduZWQgbG9uZyB3YWl0Ow0KIA0KIAkJCS8q
IGNvbnRpbnVlICovDQotCQkJaWYgKCh3YWl0ID0gY2gtPmV4cGlyeShkcml2
ZSwgZHJpdmUtPnJxKSkgIT0gMCkgew0KKwkJCXJldCA9IGNoLT5leHBpcnko
ZHJpdmUsIGRyaXZlLT5ycSwgJndhaXQpOw0KKwkJCWlmIChyZXQgPT0gaWRl
X3N0YXJ0ZWQpIHsNCiAJCQkJLyogcmVlbmdhZ2UgdGltZXIgKi8NCi0JCQkJ
Y2gtPnRpbWVyLmV4cGlyZXMgID0gamlmZmllcyArIHdhaXQ7DQotCQkJCWFk
ZF90aW1lcigmY2gtPnRpbWVyKTsNCisJCQkJaWYgKHdhaXQpIHsNCisJCQkJ
CWNoLT50aW1lci5leHBpcmVzICA9IGppZmZpZXMgKyB3YWl0Ow0KKwkJCQkJ
YWRkX3RpbWVyKCZjaC0+dGltZXIpOw0KKwkJCQl9DQogDQogCQkJCXNwaW5f
dW5sb2NrX2lycXJlc3RvcmUoY2gtPmxvY2ssIGZsYWdzKTsNCiANCkBAIC0x
MDEyLDcgKzk4MCw2IEBADQogDQogCQloYW5kbGVyID0gY2gtPmhhbmRsZXI7
DQogCQljaC0+aGFuZGxlciA9IE5VTEw7DQotCQlzcGluX3VubG9jayhjaC0+
bG9jayk7DQogDQogCQljaCA9IGRyaXZlLT5jaGFubmVsOw0KICNpZiBESVNB
QkxFX0lSUV9OT1NZTkMNCkBAIC0xMDY5LDEyICsxMDM2LDkgQEANCiANCiAJ
CWVuYWJsZV9pcnEoY2gtPmlycSk7DQogDQotCQlzcGluX2xvY2tfaXJxKGNo
LT5sb2NrKTsNCi0NCiAJCWlmIChyZXQgPT0gaWRlX3N0b3BwZWQpDQogCQkJ
Y2xlYXJfYml0KElERV9CVVNZLCBjaC0+YWN0aXZlKTsNCiANCi0NCiAJCS8q
IFJlZW50ZXIgdGhlIHJlcXVlc3QgaGFuZGxpbmcgZW5naW5lICovDQogCQlk
b19yZXF1ZXN0KGNoKTsNCiAJfQ0KQEAgLTEyMDIsMTQgKzExNjYsMTQgQEAN
CiAJY2gtPmhhbmRsZXIgPSBOVUxMOw0KIAlkZWxfdGltZXIoJmNoLT50aW1l
cik7DQogDQotCXNwaW5fdW5sb2NrKGNoLT5sb2NrKTsNCi0NCi0JaWYgKGNo
LT51bm1hc2spDQotCQlpZGVfX3N0aSgpOwkvKiBsb2NhbCBDUFUgb25seSAq
Lw0KKwlpZiAoY2gtPnVubWFzaykgew0KKwkJLyogRklYTUU6IHBlcmhhcHMg
ZGlzYWJsZV9pcnEoaXJxKTsgX19zdGkoKTsgPyAtWndhbmUNCisJCWlkZV9f
c3RpKCk7DQorCQkqLw0KKwl9DQogDQogCS8qIHNlcnZpY2UgdGhpcyBpbnRl
cnJ1cHQsIG1heSBzZXQgaGFuZGxlciBmb3IgbmV4dCBpbnRlcnJ1cHQgKi8N
CiAJc3RhcnRzdG9wID0gaGFuZGxlcihkcml2ZSwgZHJpdmUtPnJxKTsNCi0J
c3Bpbl9sb2NrX2lycShjaC0+bG9jayk7DQogDQogCS8qDQogCSAqIE5vdGUg
dGhhdCBoYW5kbGVyKCkgbWF5IGhhdmUgc2V0IHRoaW5ncyB1cCBmb3IgYW5v
dGhlcg0KQEAgLTEzNzYsOSArMTM0MCw2IEBADQogRVhQT1JUX1NZTUJPTChh
dGFfZHVtcCk7DQogRVhQT1JUX1NZTUJPTChhdGFfZXJyb3IpOw0KIA0KLS8q
IEZJWE1FOiB0aGlzIGlzIGEgdHJ1bGx5IGJhZCBuYW1lICovDQotRVhQT1JU
X1NZTUJPTChyZXN0YXJ0X3JlcXVlc3QpOw0KLUVYUE9SVF9TWU1CT0woYXRh
X2VuZF9yZXF1ZXN0KTsNCiBFWFBPUlRfU1lNQk9MKF9fYXRhX2VuZF9yZXF1
ZXN0KTsNCiBFWFBPUlRfU1lNQk9MKGlkZV9zdGFsbF9xdWV1ZSk7DQogDQpk
aWZmIC1YIGRvbnRkaWZmIC11ciBsaW51eC0yLjUuMjQvZHJpdmVycy9pZGUv
cGNpZG1hLmMgbGludXgvZHJpdmVycy9pZGUvcGNpZG1hLmMNCi0tLSBsaW51
eC0yLjUuMjQvZHJpdmVycy9pZGUvcGNpZG1hLmMJVHVlIEp1biAyNSAyMjo0
NjozNiAyMDAyDQorKysgbGludXgvZHJpdmVycy9pZGUvcGNpZG1hLmMJV2Vk
IEp1biAyNiAxNzo0Njo1MCAyMDAyDQpAQCAtMzYsNiArMzYsOCBAQA0KIA0K
IC8qDQogICogVGhpcyBpcyB0aGUgaGFuZGxlciBmb3IgZGlzayByZWFkL3dy
aXRlIERNQSBpbnRlcnJ1cHRzLg0KKyAqDQorICogQ2hhbm5lbCBsb2NrIHNo
b3VsZCBiZSBoZWxkLg0KICAqLw0KIGlkZV9zdGFydHN0b3BfdCBpZGVfZG1h
X2ludHIoc3RydWN0IGF0YV9kZXZpY2UgKmRyaXZlLCBzdHJ1Y3QgcmVxdWVz
dCAqcnEpDQogew0KQEAgLTQ0LDE2ICs0Niw3IEBADQogDQogCWlmIChhdGFf
c3RhdHVzKGRyaXZlLCBEUklWRV9SRUFEWSwgZHJpdmUtPmJhZF93c3RhdCB8
IERSUV9TVEFUKSkgew0KIAkJaWYgKCFkbWFfc3RhdCkgew0KLQkJCXVuc2ln
bmVkIGxvbmcgZmxhZ3M7DQotCQkJc3RydWN0IGF0YV9jaGFubmVsICpjaCA9
IGRyaXZlLT5jaGFubmVsOw0KLQ0KLQkJCS8qIEZJWE1FOiB0aGlzIGxvY2tp
bmcgc2hvdWxkIGVuY29tcGFzcyB0aGUgYWJvdmUgcmVnaXN0ZXINCi0JCQkg
KiBmaWxlIGFjY2VzcyB0b28uDQotCQkJICovDQotDQotCQkJc3Bpbl9sb2Nr
X2lycXNhdmUoY2gtPmxvY2ssIGZsYWdzKTsNCiAJCQlfX2F0YV9lbmRfcmVx
dWVzdChkcml2ZSwgcnEsIDEsIHJxLT5ucl9zZWN0b3JzKTsNCi0JCQlzcGlu
X3VubG9ja19pcnFyZXN0b3JlKGNoLT5sb2NrLCBmbGFncyk7DQogDQogCQkJ
cmV0dXJuIGlkZV9zdG9wcGVkOw0KIAkJfQ0KQEAgLTEyOCw3ICsxMjEsNyBA
QA0KIC8qDQogICogMSBkbWEtaW5nLCAyIGVycm9yLCA0IGludHINCiAgKi8N
Ci1zdGF0aWMgaW50IGRtYV90aW1lcl9leHBpcnkoc3RydWN0IGF0YV9kZXZp
Y2UgKmRyaXZlLCBzdHJ1Y3QgcmVxdWVzdCAqcnEpDQorc3RhdGljIGlkZV9z
dGFydHN0b3BfdCBkbWFfdGltZXJfZXhwaXJ5KHN0cnVjdCBhdGFfZGV2aWNl
ICpkcml2ZSwgc3RydWN0IHJlcXVlc3QgKnJxLCB1bnNpZ25lZCBsb25nICp3
YWl0KQ0KIHsNCiAJLyogRklYTUU6IFdoYXQncyB0aGF0PyAqLw0KIAl1OCBk
bWFfc3RhdCA9IGluYihkcml2ZS0+Y2hhbm5lbC0+ZG1hX2Jhc2UgKyAyKTsN
CkBAIC0xNDAsMTUgKzEzMywxNyBAQA0KICNpZiAwDQogCWRyaXZlLT5leHBp
cnkgPSBOVUxMOwkvKiBvbmUgZnJlZSByaWRlIGZvciBub3cgKi8NCiAjZW5k
aWYNCi0NCisJKndhaXQgPSAwOw0KIAlpZiAoZG1hX3N0YXQgJiAyKSB7CS8q
IEVSUk9SICovDQogCQlhdGFfc3RhdHVzKGRyaXZlLCAwLCAwKTsNCiAJCXJl
dHVybiBhdGFfZXJyb3IoZHJpdmUsIHJxLCBfX0ZVTkNUSU9OX18pOw0KIAl9
DQotCWlmIChkbWFfc3RhdCAmIDEpCS8qIERNQWluZyAqLw0KLQkJcmV0dXJu
IFdBSVRfQ01EOw0KKwlpZiAoZG1hX3N0YXQgJiAxKSB7CS8qIERNQWluZyAq
Lw0KKwkJKndhaXQgPSBXQUlUX0NNRDsNCisJCXJldHVybiBpZGVfc3RhcnRl
ZDsNCisJfQ0KIA0KLQlyZXR1cm4gMDsNCisJcmV0dXJuIGlkZV9zdG9wcGVk
Ow0KIH0NCiANCiBpbnQgYXRhX3N0YXJ0X2RtYShzdHJ1Y3QgYXRhX2Rldmlj
ZSAqZHJpdmUsIHN0cnVjdCByZXF1ZXN0ICpycSkNCmRpZmYgLVggZG9udGRp
ZmYgLXVyIGxpbnV4LTIuNS4yNC9kcml2ZXJzL2lkZS9wZGM0MDMwLmMgbGlu
dXgvZHJpdmVycy9pZGUvcGRjNDAzMC5jDQotLS0gbGludXgtMi41LjI0L2Ry
aXZlcnMvaWRlL3BkYzQwMzAuYwlUdWUgSnVuIDE4IDAwOjI5OjAyIDIwMDIN
CisrKyBsaW51eC9kcml2ZXJzL2lkZS9wZGM0MDMwLmMJV2VkIEp1biAyNiAx
NjozNDo1MiAyMDAyDQpAQCAtNDE0LDEwICs0MTQsOCBAQA0KIAlycS0+ZXJy
b3JzID0gMDsNCiAJcnEtPm5yX3NlY3RvcnMgLT0gbnNlY3Q7DQogCXRvdGFs
X3JlbWFpbmluZyA9IHJxLT5ucl9zZWN0b3JzOw0KLQlpZiAoKHJxLT5jdXJy
ZW50X25yX3NlY3RvcnMgLT0gbnNlY3QpIDw9IDApIHsNCi0JCS8qIEZJWE1F
OiBubyBxdWV1ZSBsb2NraW5nIGFib3ZlISAqLw0KLQkJYXRhX2VuZF9yZXF1
ZXN0KGRyaXZlLCBycSwgMSk7DQotCX0NCisJaWYgKChycS0+Y3VycmVudF9u
cl9zZWN0b3JzIC09IG5zZWN0KSA8PSAwKQ0KKwkJX19hdGFfZW5kX3JlcXVl
c3QoZHJpdmUsIHJxLCAxLCAwKTsNCiANCiAJLyoNCiAJICogTm93IHRoZSBk
YXRhIGhhcyBiZWVuIHJlYWQgaW4sIGRvIHRoZSBmb2xsb3dpbmc6DQpAQCAt
NDM3LDE2ICs0MzUsNyBAQA0KIAkJaWYgKGRyaXZlLT5zdGF0dXMgJiBEUlFf
U1RBVCkNCiAJCQlnb3RvIHJlYWRfYWdhaW47DQogCQlpZiAoZHJpdmUtPnN0
YXR1cyAmIEJVU1lfU1RBVCkgew0KLQkJCXVuc2lnbmVkIGxvbmcgZmxhZ3M7
DQotCQkJc3RydWN0IGF0YV9jaGFubmVsICpjaCA9IGRyaXZlLT5jaGFubmVs
Ow0KLQ0KLQkJCS8qIEZJWE1FOiB0aGlzIGxvY2tpbmcgc2hvdWxkIGVuY29t
cGFzcyB0aGUgYWJvdmUgcmVnaXN0ZXINCi0JCQkgKiBmaWxlIGFjY2VzcyB0
b28uDQotCQkJICovDQotDQotCQkJc3Bpbl9sb2NrX2lycXNhdmUoY2gtPmxv
Y2ssIGZsYWdzKTsNCiAJCQlhdGFfc2V0X2hhbmRsZXIoZHJpdmUsIHByb21p
c2VfcmVhZF9pbnRyLCBXQUlUX0NNRCwgTlVMTCk7DQotCQkJc3Bpbl91bmxv
Y2tfaXJxcmVzdG9yZShjaC0+bG9jaywgZmxhZ3MpOw0KICNpZmRlZiBERUJV
R19SRUFEDQogCQkJcHJpbnRrKEtFUk5fREVCVUcgIiVzOiBwcm9taXNlX3Jl
YWQ6IHdhaXRpbmcgZm9yIg0KIAkJCSAgICAgICAiaW50ZXJydXB0XG4iLCBk
cml2ZS0+bmFtZSk7DQpAQCAtNDcwLDE4ICs0NTksMTEgQEANCiAgKi8NCiBz
dGF0aWMgaWRlX3N0YXJ0c3RvcF90IHByb21pc2VfY29tcGxldGVfcG9sbGZ1
bmMoc3RydWN0IGF0YV9kZXZpY2UgKmRyaXZlLCBzdHJ1Y3QgcmVxdWVzdCAq
cnEpDQogew0KLQl1bnNpZ25lZCBsb25nIGZsYWdzOw0KIAlzdHJ1Y3QgYXRh
X2NoYW5uZWwgKmNoID0gZHJpdmUtPmNoYW5uZWw7DQogDQogCWlmICghYXRh
X3N0YXR1cyhkcml2ZSwgMCwgQlVTWV9TVEFUKSkgew0KIAkJaWYgKHRpbWVf
YmVmb3JlKGppZmZpZXMsIGNoLT5wb2xsX3RpbWVvdXQpKSB7DQotCQkJLyog
RklYTUU6IHRoaXMgbG9ja2luZyBzaG91bGQgZW5jb21wYXNzIHRoZSBhYm92
ZQ0KLQkJCSAqIHJlZ2lzdGVyIGZpbGUgYWNjZXNzIHRvby4NCi0JCQkgKi8N
Ci0NCi0JCQlzcGluX2xvY2tfaXJxc2F2ZShjaC0+bG9jaywgZmxhZ3MpOw0K
IAkJCWF0YV9zZXRfaGFuZGxlcihkcml2ZSwgcHJvbWlzZV9jb21wbGV0ZV9w
b2xsZnVuYywgSFovMTAwLCBOVUxMKTsNCi0JCQlzcGluX3VubG9ja19pcnFy
ZXN0b3JlKGNoLT5sb2NrLCBmbGFncyk7DQogDQogCQkJcmV0dXJuIGlkZV9z
dGFydGVkOyAvKiBjb250aW51ZSBwb2xsaW5nLi4uICovDQogCQl9DQpAQCAt
NDk1LDEzICs0NzcsNyBAQA0KICNpZmRlZiBERUJVR19XUklURQ0KIAlwcmlu
dGsoS0VSTl9ERUJVRyAiJXM6IFdyaXRlIGNvbXBsZXRlIC0gZW5kX3JlcXVl
c3RcbiIsIGRyaXZlLT5uYW1lKTsNCiAjZW5kaWYNCi0JLyogRklYTUU6IHRo
aXMgbG9ja2luZyBzaG91bGQgZW5jb21wYXNzIHRoZSBhYm92ZQ0KLQkgKiBy
ZWdpc3RlciBmaWxlIGFjY2VzcyB0b28uDQotCSAqLw0KLQ0KLQlzcGluX2xv
Y2tfaXJxc2F2ZShjaC0+bG9jaywgZmxhZ3MpOw0KIAlfX2F0YV9lbmRfcmVx
dWVzdChkcml2ZSwgcnEsIDEsIHJxLT5ucl9zZWN0b3JzKTsNCi0Jc3Bpbl91
bmxvY2tfaXJxcmVzdG9yZShjaC0+bG9jaywgZmxhZ3MpOw0KIA0KIAlyZXR1
cm4gaWRlX3N0b3BwZWQ7DQogfQ0KQEAgLTU2MywyMSArNTM5LDE3IEBADQog
ICovDQogc3RhdGljIGlkZV9zdGFydHN0b3BfdCBwcm9taXNlX3dyaXRlX3Bv
bGxmdW5jKHN0cnVjdCBhdGFfZGV2aWNlICpkcml2ZSwgc3RydWN0IHJlcXVl
c3QgKnJxKQ0KIHsNCi0JdW5zaWduZWQgbG9uZyBmbGFnczsNCiAJc3RydWN0
IGF0YV9jaGFubmVsICpjaCA9IGRyaXZlLT5jaGFubmVsOw0KIA0KLQlzcGlu
X2xvY2tfaXJxc2F2ZShjaC0+bG9jaywgZmxhZ3MpOw0KIAlpZiAoaW5iKElE
RV9OU0VDVE9SX1JFRykgIT0gMCkgew0KIAkJaWYgKHRpbWVfYmVmb3JlKGpp
ZmZpZXMsIGNoLT5wb2xsX3RpbWVvdXQpKSB7DQogCQkJYXRhX3NldF9oYW5k
bGVyKGRyaXZlLCBwcm9taXNlX3dyaXRlX3BvbGxmdW5jLCBIWi8xMDAsIE5V
TEwpOw0KLQkJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoY2gtPmxvY2ssIGZs
YWdzKTsNCiANCiAJCQlyZXR1cm4gaWRlX3N0YXJ0ZWQ7IC8qIGNvbnRpbnVl
IHBvbGxpbmcuLi4gKi8NCiAJCX0NCiAJCWNoLT5wb2xsX3RpbWVvdXQgPSAw
Ow0KIAkJcHJpbnRrKEtFUk5fRVJSICIlczogd3JpdGUgdGltZWQgb3V0IVxu
IiwgZHJpdmUtPm5hbWUpOw0KIAkJYXRhX3N0YXR1cyhkcml2ZSwgMCwgMCk7
DQotCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKGNoLT5sb2NrLCBmbGFncyk7
DQogDQogCQlyZXR1cm4gYXRhX2Vycm9yKGRyaXZlLCBycSwgIndyaXRlIHRp
bWVvdXQiKTsNCiAJfQ0KQEAgLTU5Miw3ICs1NjQsNyBAQA0KIAlwcmludGso
S0VSTl9ERUJVRyAiJXM6IERvbmUgbGFzdCA0IHNlY3RvcnMgLSBzdGF0dXMg
PSAlMDJ4XG4iLA0KIAkJZHJpdmUtPm5hbWUsIGRyaXZlLT5zdGF0dXMpOw0K
ICNlbmRpZg0KLQlzcGluX3VubG9ja19pcnFyZXN0b3JlKGNoLT5sb2NrLCBm
bGFncyk7DQorDQogCXJldHVybiBpZGVfc3RhcnRlZDsNCiB9DQogDQpAQCAt
NjA1LDcgKzU3Nyw2IEBADQogICovDQogc3RhdGljIGlkZV9zdGFydHN0b3Bf
dCBwcm9taXNlX2RvX3dyaXRlKHN0cnVjdCBhdGFfZGV2aWNlICpkcml2ZSwg
c3RydWN0IHJlcXVlc3QgKnJxKQ0KIHsNCi0JdW5zaWduZWQgbG9uZyBmbGFn
czsNCiAJc3RydWN0IGF0YV9jaGFubmVsICpjaCA9IGRyaXZlLT5jaGFubmVs
Ow0KIA0KICNpZmRlZiBERUJVR19XUklURQ0KQEAgLTYxMywyMyArNTg0LDE3
IEBADQogCSAgICAgICAiYnVmZmVyPSVwXG4iLCBkcml2ZS0+bmFtZSwgcnEt
PnNlY3RvciwNCiAJICAgICAgIHJxLT5zZWN0b3IgKyBycS0+bnJfc2VjdG9y
cyAtIDEsIHJxLT5idWZmZXIpOw0KICNlbmRpZg0KLQkvKiBGSVhNRTogdGhp
cyBsb2NraW5nIHNob3VsZCBlbmNvbXBhc3MgdGhlIGFib3ZlIHJlZ2lzdGVy
DQotCSAqIGZpbGUgYWNjZXNzIHRvby4NCi0JICovDQotDQotCXNwaW5fbG9j
a19pcnFzYXZlKGNoLT5sb2NrLCBmbGFncyk7DQogCS8qDQogCSAqIElmIHRo
ZXJlIGFyZSBtb3JlIHRoYW4gNCBzZWN0b3JzIHRvIHRyYW5zZmVyLCBkbyBu
LTQgdGhlbiBnbyBpbnRvDQogCSAqIHRoZSBwb2xsaW5nIHN0cmF0ZWd5IGFz
IGRlZmluZWQgYWJvdmUuDQogCSAqLw0KIAlpZiAocnEtPm5yX3NlY3RvcnMg
PiA0KSB7DQogCQlpZiAocHJvbWlzZV9tdWx0d3JpdGUoZHJpdmUsIHJxLCBy
cS0+bnJfc2VjdG9ycyAtIDQpKSB7DQotCQkJc3Bpbl91bmxvY2tfaXJxcmVz
dG9yZShjaC0+bG9jaywgZmxhZ3MpOw0KKw0KIAkJCXJldHVybiBpZGVfc3Rv
cHBlZDsNCiAJCX0NCiAJCWNoLT5wb2xsX3RpbWVvdXQgPSBqaWZmaWVzICsg
V0FJVF9XT1JTVENBU0U7DQogCQlhdGFfc2V0X2hhbmRsZXIoZHJpdmUsIHBy
b21pc2Vfd3JpdGVfcG9sbGZ1bmMsIEhaLzEwMCwgTlVMTCk7DQotCQlzcGlu
X3VubG9ja19pcnFyZXN0b3JlKGNoLT5sb2NrLCBmbGFncyk7DQogDQogCQly
ZXR1cm4gaWRlX3N0YXJ0ZWQ7DQogCX0gZWxzZSB7DQpAQCAtNjM3LDEzICs2
MDIsMTEgQEANCiAJICogVGhlcmUgYXJlIDQgb3IgZmV3ZXIgc2VjdG9ycyB0
byB0cmFuc2ZlciwgZG8gdGhlbSBhbGwgaW4gb25lIGdvDQogCSAqIGFuZCB3
YWl0IGZvciBOT1QgQlVTWS4NCiAJICovDQotCQlpZiAocHJvbWlzZV9tdWx0
d3JpdGUoZHJpdmUsIHJxLCBycS0+bnJfc2VjdG9ycykpIHsNCi0JCQlzcGlu
X3VubG9ja19pcnFyZXN0b3JlKGNoLT5sb2NrLCBmbGFncyk7DQorCQlpZiAo
cHJvbWlzZV9tdWx0d3JpdGUoZHJpdmUsIHJxLCBycS0+bnJfc2VjdG9ycykp
DQogCQkJcmV0dXJuIGlkZV9zdG9wcGVkOw0KLQkJfQ0KKw0KIAkJY2gtPnBv
bGxfdGltZW91dCA9IGppZmZpZXMgKyBXQUlUX1dPUlNUQ0FTRTsNCiAJCWF0
YV9zZXRfaGFuZGxlcihkcml2ZSwgcHJvbWlzZV9jb21wbGV0ZV9wb2xsZnVu
YywgSFovMTAwLCBOVUxMKTsNCi0JCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUo
Y2gtPmxvY2ssIGZsYWdzKTsNCiANCiAjaWZkZWYgREVCVUdfV1JJVEUNCiAJ
CXByaW50ayhLRVJOX0RFQlVHICIlczogcHJvbWlzZV93cml0ZTogPD0gNCBz
ZWN0b3JzLCAiDQpAQCAtNjY2LDcgKzYyOSw3IEBADQogCS8qIENoZWNrIHRo
YXQgaXQncyBhIHJlZ3VsYXIgY29tbWFuZC4gSWYgbm90LCBib21iIG91dCBl
YXJseS4gKi8NCiAJaWYgKCEocnEtPmZsYWdzICYgUkVRX0NNRCkpIHsNCiAJ
CWJsa19kdW1wX3JxX2ZsYWdzKHJxLCAicGRjNDAzMCBiYWQgZmxhZ3MiKTsN
Ci0JCWF0YV9lbmRfcmVxdWVzdChkcml2ZSwgcnEsIDApOw0KKwkJX19hdGFf
ZW5kX3JlcXVlc3QoZHJpdmUsIHJxLCAwLCAwKTsNCiANCiAJCXJldHVybiBp
ZGVfc3RvcHBlZDsNCiAJfQ0KQEAgLTcwMSwyMCArNjY0LDExIEBADQogCQkJ
CXJldHVybiBwcm9taXNlX3JlYWRfaW50cihkcml2ZSwgcnEpOw0KIAkJCX0N
CiAJCQlpZiAoaW5iKElERV9TRUxFQ1RfUkVHKSAmIDB4MDEpIHsNCi0JCQkJ
dW5zaWduZWQgbG9uZyBmbGFnczsNCi0JCQkJc3RydWN0IGF0YV9jaGFubmVs
ICpjaCA9IGRyaXZlLT5jaGFubmVsOw0KLQ0KLQkJCQkvKiBGSVhNRTogdGhp
cyBsb2NraW5nIHNob3VsZCBlbmNvbXBhc3MgdGhlIGFib3ZlIHJlZ2lzdGVy
DQotCQkJCSAqIGZpbGUgYWNjZXNzIHRvby4NCi0JCQkJICovDQotDQotCQkJ
CXNwaW5fbG9ja19pcnFzYXZlKGNoLT5sb2NrLCBmbGFncyk7DQogI2lmZGVm
IERFQlVHX1JFQUQNCiAJCQkJcHJpbnRrKEtFUk5fREVCVUcgIiVzOiByZWFk
OiB3YWl0aW5nIGZvciAiDQogCQkJCSAgICAgICAgICAgICAgICAgICJpbnRl
cnJ1cHRcbiIsIGRyaXZlLT5uYW1lKTsNCiAjZW5kaWYNCiAJCQkJYXRhX3Nl
dF9oYW5kbGVyKGRyaXZlLCBwcm9taXNlX3JlYWRfaW50ciwgV0FJVF9DTUQs
IE5VTEwpOw0KLQkJCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKGNoLT5sb2Nr
LCBmbGFncyk7DQogDQogCQkJCXJldHVybiBpZGVfc3RhcnRlZDsNCiAJCQl9
DQpAQCAtNzI3LDggKzY4MSw2IEBADQogDQogCWNhc2UgV1JJVEU6IHsNCiAJ
CWlkZV9zdGFydHN0b3BfdCBzdGFydHN0b3A7DQotCQl1bnNpZ25lZCBsb25n
IGZsYWdzOw0KLQkJc3RydWN0IGF0YV9jaGFubmVsICpjaCA9IGRyaXZlLT5j
aGFubmVsOw0KIA0KIAkJLyoNCiAJCSAqIFN0cmF0ZWd5IG9uIHdyaXRlIGlz
OiBsb29rIGZvciB0aGUgRFJRIHRoYXQgc2hvdWxkIGhhdmUgYmVlbg0KQEAg
LTc0MCwyOCArNjkyLDIzIEBADQogCQkgKiBjb21wbGV0aW9uIG11c3QgYmUg
cG9sbGVkDQogCQkgKi8NCiANCi0JCS8qIEZJWE1FOiBNb3ZlIHRoaXMgbG9j
ayB1cHdhcmRzLg0KLQkJICovDQotCQlzcGluX2xvY2tfaXJxc2F2ZShjaC0+
bG9jaywgZmxhZ3MpOw0KIAkJaWYgKGF0YV9zdGF0dXNfcG9sbChkcml2ZSwg
REFUQV9SRUFEWSwgZHJpdmUtPmJhZF93c3RhdCwNCiAJCQkJCVdBSVRfRFJR
LCBycSwgJnN0YXJ0c3RvcCApKSB7DQogCQkJcHJpbnRrKEtFUk5fRVJSICIl
czogbm8gRFJRIGFmdGVyIGlzc3VpbmcgIg0KIAkJCSAgICAgICAiUFJPTUlT
RV9XUklURVxuIiwgZHJpdmUtPm5hbWUpOw0KLQkJCXNwaW5fdW5sb2NrX2ly
cXJlc3RvcmUoY2gtPmxvY2ssIGZsYWdzKTsNCiANCiAJCQlyZXR1cm4gc3Rh
cnRzdG9wOw0KIAkJfQ0KIAkJaWYgKCFkcml2ZS0+Y2hhbm5lbC0+dW5tYXNr
KQ0KIAkJCV9fY2xpKCk7CS8qIGxvY2FsIENQVSBvbmx5ICovDQotCQlzcGlu
X3VubG9ja19pcnFyZXN0b3JlKGNoLT5sb2NrLCBmbGFncyk7DQogDQogCQly
ZXR1cm4gcHJvbWlzZV9kb193cml0ZShkcml2ZSwgcnEpOw0KIAl9DQogDQog
CWRlZmF1bHQ6DQogCQlwcmludGsoS0VSTl9FUlIgInBkYzQwMzA6IGNvbW1h
bmQgbm90IFJFQUQgb3IgV1JJVEUhIEh1aD9cbiIpOw0KLQkJLyogRklYTUU6
IFRoaXMgc2hvdWxkIGFscmVhZHkgcnVuIHVuZGVyIHRoZSBsb2NrLiAqLw0K
LQkJYXRhX2VuZF9yZXF1ZXN0KGRyaXZlLCBycSwgMCk7DQorDQorCQlfX2F0
YV9lbmRfcmVxdWVzdChkcml2ZSwgcnEsIDAsIDApOw0KIAkJcmV0dXJuIGlk
ZV9zdG9wcGVkOw0KIAl9DQogfQ0KZGlmZiAtWCBkb250ZGlmZiAtdXIgbGlu
dXgtMi41LjI0L2RyaXZlcnMvaWRlL3RjcS5jIGxpbnV4L2RyaXZlcnMvaWRl
L3RjcS5jDQotLS0gbGludXgtMi41LjI0L2RyaXZlcnMvaWRlL3RjcS5jCVdl
ZCBKdW4gMjYgMDA6MDI6NTMgMjAwMg0KKysrIGxpbnV4L2RyaXZlcnMvaWRl
L3RjcS5jCVdlZCBKdW4gMjYgMTk6NTM6MTQgMjAwMg0KQEAgLTU4LDE4ICs1
OCwxNSBAQA0KIHN0YXRpYyBpZGVfc3RhcnRzdG9wX3QgdGNxX25vcF9oYW5k
bGVyKHN0cnVjdCBhdGFfZGV2aWNlICpkcml2ZSwgc3RydWN0IHJlcXVlc3Qg
KnJxKQ0KIHsNCiAJc3RydWN0IGF0YV90YXNrZmlsZSAqYXJncyA9IHJxLT5z
cGVjaWFsOw0KLQl1bnNpZ25lZCBsb25nIGZsYWdzOw0KIA0KKwkvKiBGSVhN
RTogIC0tYnpvbG5pZXINCiAJaWRlX19zdGkoKTsNCi0NCi0Jc3Bpbl9sb2Nr
X2lycXNhdmUoZHJpdmUtPmNoYW5uZWwtPmxvY2ssIGZsYWdzKTsNCisJKi8N
CiANCiAJYmxrZGV2X2RlcXVldWVfcmVxdWVzdChycSk7DQogCWRyaXZlLT5y
cSA9IE5VTEw7DQogCWVuZF90aGF0X3JlcXVlc3RfbGFzdChycSk7DQogDQot
CXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoZHJpdmUtPmNoYW5uZWwtPmxvY2ss
IGZsYWdzKTsNCi0NCiAJa2ZyZWUoYXJncyk7DQogDQogCXJldHVybiBpZGVf
c3RvcHBlZDsNCkBAIC04NiwxMiArODMsOSBAQA0KIAlyZXF1ZXN0X3F1ZXVl
X3QgKnEgPSAmZHJpdmUtPnF1ZXVlOw0KIAlzdHJ1Y3QgYXRhX3Rhc2tmaWxl
ICphcjsNCiAJc3RydWN0IHJlcXVlc3QgKnJxOw0KLQl1bnNpZ25lZCBsb25n
IGZsYWdzOw0KIA0KIAlwcmludGsoS0VSTl9JTkZPICJBVEE6ICVzOiBpbnZh
bGlkYXRpbmcgcGVuZGluZyBxdWV1ZSAoJWQpXG4iLCBkcml2ZS0+bmFtZSwg
YXRhX3BlbmRpbmdfY29tbWFuZHMoZHJpdmUpKTsNCiANCi0Jc3Bpbl9sb2Nr
X2lycXNhdmUoY2gtPmxvY2ssIGZsYWdzKTsNCi0NCiAJZGVsX3RpbWVyKCZj
aC0+dGltZXIpOw0KIA0KIAlpZiAodGVzdF9iaXQoSURFX0RNQSwgY2gtPmFj
dGl2ZSkpDQpAQCAtMTE2LDkgKzExMCw5IEBADQogCQlnb3RvIG91dDsNCiAJ
fQ0KIA0KLQlycSA9IGJsa19nZXRfcmVxdWVzdCgmZHJpdmUtPnF1ZXVlLCBS
RUFELCBHRlBfQVRPTUlDKTsNCisJcnEgPSBfX2Jsa19nZXRfcmVxdWVzdCgm
ZHJpdmUtPnF1ZXVlLCBSRUFEKTsNCiAJaWYgKCFycSkNCi0JCXJxID0gYmxr
X2dldF9yZXF1ZXN0KCZkcml2ZS0+cXVldWUsIFdSSVRFLCBHRlBfQVRPTUlD
KTsNCisJCXJxID0gX19ibGtfZ2V0X3JlcXVlc3QoJmRyaXZlLT5xdWV1ZSwg
V1JJVEUpOw0KIA0KIAkvKg0KIAkgKiBibGtfcXVldWVfaW52YWxpZGF0ZV90
YWdzKCkganVzdCBhZGRlZCBiYWNrIGF0IGxlYXN0IG9uZSBjb21tYW5kDQpA
QCAtMTQzLDcgKzEzNyw3IEBADQogCSAqIHN0YXJ0IGRvaW5nIHN0dWZmIGFn
YWluDQogCSAqLw0KIAlxLT5yZXF1ZXN0X2ZuKHEpOw0KLQlzcGluX3VubG9j
a19pcnFyZXN0b3JlKGNoLT5sb2NrLCBmbGFncyk7DQorDQogCXByaW50ayhL
RVJOX0RFQlVHICJBVEE6IHRjcV9pbnZhbGlkYXRlX3F1ZXVlOiBkb25lXG4i
KTsNCiB9DQogDQpAQCAtMTYyLDE3ICsxNTYsMjAgQEANCiAJaWYgKCFjaC0+
aGFuZGxlcikNCiAJCXByaW50ayhLRVJOX0VSUiAiQVRBOiAlczogbWlzc2lu
ZyBJU1IhXG4iLCBfX0ZVTkNUSU9OX18pOw0KIA0KLQlzcGluX3VubG9ja19p
cnFyZXN0b3JlKGNoLT5sb2NrLCBmbGFncyk7DQotDQogCS8qDQogCSAqIGlm
IHBlbmRpbmcgY29tbWFuZHMsIHRyeSBzZXJ2aWNlIGJlZm9yZSBnaXZpbmcg
dXANCiAJICovDQogCWlmIChhdGFfcGVuZGluZ19jb21tYW5kcyhkcml2ZSkg
JiYgIWF0YV9zdGF0dXMoZHJpdmUsIDAsIFNFUlZJQ0VfU1RBVCkpDQotCQlp
ZiAoc2VydmljZShkcml2ZSwgZHJpdmUtPnJxKSA9PSBpZGVfc3RhcnRlZCkN
CisJCWlmIChzZXJ2aWNlKGRyaXZlLCBkcml2ZS0+cnEpID09IGlkZV9zdGFy
dGVkKSB7DQorCQkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZShjaC0+bG9jaywg
ZmxhZ3MpOw0KKw0KIAkJCXJldHVybjsNCisJCX0NCiANCiAJaWYgKGRyaXZl
KQ0KIAkJdGNxX2ludmFsaWRhdGVfcXVldWUoZHJpdmUpOw0KKw0KKwlzcGlu
X3VubG9ja19pcnFyZXN0b3JlKGNoLT5sb2NrLCBmbGFncyk7DQogfQ0KIA0K
IHN0YXRpYyB2b2lkIF9fc2V0X2lycShzdHJ1Y3QgYXRhX2NoYW5uZWwgKmNo
LCBhdGFfaGFuZGxlcl90ICpoYW5kbGVyKQ0KQEAgLTE5MSwxNiArMTg4LDYg
QEANCiAJY2gtPmhhbmRsZXIgPSBoYW5kbGVyOw0KIH0NCiANCi1zdGF0aWMg
dm9pZCBzZXRfaXJxKHN0cnVjdCBhdGFfZGV2aWNlICpkcml2ZSwgYXRhX2hh
bmRsZXJfdCAqaGFuZGxlcikNCi17DQotCXN0cnVjdCBhdGFfY2hhbm5lbCAq
Y2ggPSBkcml2ZS0+Y2hhbm5lbDsNCi0JdW5zaWduZWQgbG9uZyBmbGFnczsN
Ci0NCi0Jc3Bpbl9sb2NrX2lycXNhdmUoY2gtPmxvY2ssIGZsYWdzKTsNCi0J
X19zZXRfaXJxKGNoLCBoYW5kbGVyKTsNCi0Jc3Bpbl91bmxvY2tfaXJxcmVz
dG9yZShjaC0+bG9jaywgZmxhZ3MpOw0KLX0NCi0NCiAvKg0KICAqIHdhaXQg
NDAwbnMsIHRoZW4gcG9sbCBmb3IgYnVzeV9tYXNrIHRvIGNsZWFyIGZyb20g
YWx0IHN0YXR1cw0KICAqLw0KQEAgLTIzMyw5ICsyMjAsNiBAQA0KICAqLw0K
IHN0YXRpYyBpZGVfc3RhcnRzdG9wX3Qgc2VydmljZShzdHJ1Y3QgYXRhX2Rl
dmljZSAqZHJpdmUsIHN0cnVjdCByZXF1ZXN0ICpycSkNCiB7DQotCXN0cnVj
dCBhdGFfY2hhbm5lbCAqY2ggPSBkcml2ZS0+Y2hhbm5lbDsNCi0JaWRlX3N0
YXJ0c3RvcF90IHJldDsNCi0JdW5zaWduZWQgbG9uZyBmbGFnczsNCiAJdTgg
ZmVhdCwgc3RhdDsNCiAJaW50IHRhZzsNCiANCkBAIC0yOTYsMTIgKzI4MCwx
MCBAQA0KIA0KIAlUQ1FfUFJJTlRLKCIlczogc3RhdCAleCwgZmVhdCAleFxu
IiwgX19GVU5DVElPTl9fLCBzdGF0LCBmZWF0KTsNCiANCi0Jc3Bpbl9sb2Nr
X2lycXNhdmUoY2gtPmxvY2ssIGZsYWdzKTsNCi0NCiAJcnEgPSBibGtfcXVl
dWVfZmluZF90YWcoJmRyaXZlLT5xdWV1ZSwgdGFnKTsNCiAJaWYgKCFycSkg
ew0KIAkJcHJpbnRrKEtFUk5fRVJSIiVzOiBtaXNzaW5nIHJlcXVlc3QgZm9y
IHRhZyAlZFxuIiwgX19GVU5DVElPTl9fLCB0YWcpOw0KLQkJc3Bpbl91bmxv
Y2tfaXJxcmVzdG9yZShjaC0+bG9jaywgZmxhZ3MpOw0KKw0KIAkJcmV0dXJu
IGlkZV9zdG9wcGVkOw0KIAl9DQogDQpAQCAtMzEzLDkgKzI5NSw3IEBADQog
CSAqLw0KIAlUQ1FfUFJJTlRLKCIlczogc3RhcnRpbmcgY29tbWFuZCAleFxu
IiwgX19GVU5DVElPTl9fLCBzdGF0KTsNCiANCi0JcmV0ID0gdWRtYV90Y3Ff
c3RhcnQoZHJpdmUsIHJxKTsNCi0Jc3Bpbl91bmxvY2tfaXJxcmVzdG9yZShj
aC0+bG9jaywgZmxhZ3MpOw0KLQlyZXR1cm4gcmV0Ow0KKwlyZXR1cm4gdWRt
YV90Y3Ffc3RhcnQoZHJpdmUsIHJxKTsNCiB9DQogDQogc3RhdGljIGlkZV9z
dGFydHN0b3BfdCBjaGVja19zZXJ2aWNlKHN0cnVjdCBhdGFfZGV2aWNlICpk
cml2ZSwgc3RydWN0IHJlcXVlc3QgKnJxKQ0KQEAgLTMzMSwxNSArMzExLDEz
IEBADQogCS8qDQogCSAqIHdlIGhhdmUgcGVuZGluZyBjb21tYW5kcywgd2Fp
dCBmb3IgaW50ZXJydXB0DQogCSAqLw0KLQlzZXRfaXJxKGRyaXZlLCBpZGVf
ZG1hcV9pbnRyKTsNCisJX19zZXRfaXJxKGRyaXZlLCBpZGVfZG1hcV9pbnRy
KTsNCiANCiAJcmV0dXJuIGlkZV9zdGFydGVkOw0KIH0NCiANCiBzdGF0aWMg
aWRlX3N0YXJ0c3RvcF90IGRtYXFfY29tcGxldGUoc3RydWN0IGF0YV9kZXZp
Y2UgKmRyaXZlLCBzdHJ1Y3QgcmVxdWVzdCAqcnEpDQogew0KLQl1bnNpZ25l
ZCBsb25nIGZsYWdzOw0KLQlzdHJ1Y3QgYXRhX2NoYW5uZWwgKmNoID0gZHJp
dmUtPmNoYW5uZWw7DQogCXU4IGRtYV9zdGF0Ow0KIA0KIAkvKg0KQEAgLTM2
MiwxMyArMzQwLDcgQEANCiANCiAJVENRX1BSSU5USygiJXM6IGVuZGluZyAl
cCwgdGFnICVkXG4iLCBfX0ZVTkNUSU9OX18sIHJxLCBycS0+dGFnKTsNCiAN
Ci0JLyogRklYTUU6IHRoaXMgbG9ja2luZyBzaG91bGQgZW5jb21wYXNzIHRo
ZSBhYm92ZSByZWdpc3Rlcg0KLQkgKiBmaWxlIGFjY2VzcyB0b28uDQotCSAq
Lw0KLQ0KLQlzcGluX2xvY2tfaXJxc2F2ZShjaC0+bG9jaywgZmxhZ3MpOw0K
IAlfX2F0YV9lbmRfcmVxdWVzdChkcml2ZSwgcnEsICFkbWFfc3RhdCwgcnEt
Pm5yX3NlY3RvcnMpOw0KLQlzcGluX3VubG9ja19pcnFyZXN0b3JlKGNoLT5s
b2NrLCBmbGFncyk7DQogDQogCS8qDQogCSAqIHdlIGNvbXBsZXRlZCB0aGlz
IGNvbW1hbmQsIGNoZWNrIGlmIHdlIGNhbiBzZXJ2aWNlIGEgbmV3IGNvbW1h
bmQNCmRpZmYgLVggZG9udGRpZmYgLXVyIGxpbnV4LTIuNS4yNC9kcml2ZXJz
L3Njc2kvaWRlLXNjc2kuYyBsaW51eC9kcml2ZXJzL3Njc2kvaWRlLXNjc2ku
Yw0KLS0tIGxpbnV4LTIuNS4yNC9kcml2ZXJzL3Njc2kvaWRlLXNjc2kuYwlU
dWUgSnVuIDE4IDAwOjI5OjAzIDIwMDINCisrKyBsaW51eC9kcml2ZXJzL3Nj
c2kvaWRlLXNjc2kuYwlUaHUgSnVuIDI3IDAyOjE4OjE5IDIwMDINCkBAIC0y
NDEsMTAgKzI0MSw5IEBADQogCXN0cnVjdCBhdGFwaV9wYWNrZXRfY29tbWFu
ZCAqcGMgPSAoc3RydWN0IGF0YXBpX3BhY2tldF9jb21tYW5kICopIHJxLT5z
cGVjaWFsOw0KIAlpbnQgbG9nID0gdGVzdF9iaXQoSURFU0NTSV9MT0dfQ01E
LCAmc2NzaS0+bG9nKTsNCiAJdTggKnNjc2lfYnVmOw0KLQl1bnNpZ25lZCBs
b25nIGZsYWdzOw0KIA0KIAlpZiAoIShycS0+ZmxhZ3MgJiBSRVFfUEMpKSB7
DQotCQlhdGFfZW5kX3JlcXVlc3QoZHJpdmUsIHJxLCB1cHRvZGF0ZSk7DQor
CQlfX2F0YV9lbmRfcmVxdWVzdChkcml2ZSwgcnEsIHVwdG9kYXRlLCAwKTsN
CiAJCXJldHVybiAwOw0KIAl9DQogDQpAQCAtMjczLDkgKzI3Miw3IEBADQog
CQl9DQogCX0NCiAJaG9zdCA9IHBjLT5zLnNjc2lfY21kLT5ob3N0Ow0KLQlz
cGluX2xvY2tfaXJxc2F2ZShob3N0LT5ob3N0X2xvY2ssIGZsYWdzKTsNCiAJ
cGMtPnMuZG9uZShwYy0+cy5zY3NpX2NtZCk7DQotCXNwaW5fdW5sb2NrX2ly
cXJlc3RvcmUoaG9zdC0+aG9zdF9sb2NrLCBmbGFncyk7DQogCWlkZXNjc2lf
ZnJlZV9iaW8ocnEtPmJpbyk7DQogCWtmcmVlKHBjKTsga2ZyZWUocnEpOw0K
IAlzY3NpLT5wYyA9IE5VTEw7DQpAQCAtMjkzLDggKzI5MCw2IEBADQogICov
DQogc3RhdGljIGlkZV9zdGFydHN0b3BfdCBpZGVzY3NpX3BjX2ludHIoc3Ry
dWN0IGF0YV9kZXZpY2UgKmRyaXZlLCBzdHJ1Y3QgcmVxdWVzdCAqcnEpDQog
ew0KLQl1bnNpZ25lZCBsb25nIGZsYWdzOw0KLQlzdHJ1Y3QgYXRhX2NoYW5u
ZWwgKmNoID0gZHJpdmUtPmNoYW5uZWw7DQogCXN0cnVjdCBTY3NpX0hvc3Qg
Kmhvc3QgPSBkcml2ZS0+ZHJpdmVyX2RhdGE7DQogCWlkZXNjc2lfc2NzaV90
ICpzY3NpID0gaWRlc2NzaV9wcml2YXRlKGhvc3QpOw0KIAl1OCBpcmVhc29u
Ow0KQEAgLTMzNSw4ICszMzAsNiBAQA0KIAkJdGVtcCA9IHBjLT5hY3R1YWxs
eV90cmFuc2ZlcnJlZCArIGJjb3VudDsNCiAJCWlmICggdGVtcCA+IHBjLT5y
ZXF1ZXN0X3RyYW5zZmVyKSB7DQogCQkJaWYgKHRlbXAgPiBwYy0+YnVmZmVy
X3NpemUpIHsNCi0JCQkJdW5zaWduZWQgbG9uZyBmbGFnczsNCi0JCQkJc3Ry
dWN0IGF0YV9jaGFubmVsICpjaCA9IGRyaXZlLT5jaGFubmVsOw0KIAkJCQlw
cmludGsgKEtFUk5fRVJSICJpZGUtc2NzaTogVGhlIHNjc2kgd2FudHMgdG8g
c2VuZCB1cyBtb3JlIGRhdGEgdGhhbiBleHBlY3RlZCAtIGRpc2NhcmRpbmcg
ZGF0YVxuIik7DQogCQkJCXRlbXAgPSBwYy0+YnVmZmVyX3NpemUgLSBwYy0+
YWN0dWFsbHlfdHJhbnNmZXJyZWQ7DQogCQkJCWlmICh0ZW1wKSB7DQpAQCAt
MzUwLDEzICszNDMsOCBAQA0KIAkJCQlwYy0+YWN0dWFsbHlfdHJhbnNmZXJy
ZWQgKz0gdGVtcDsNCiAJCQkJcGMtPmN1cnJlbnRfcG9zaXRpb24gKz0gdGVt
cDsNCiAJCQkJYXRhcGlfZGlzY2FyZF9kYXRhKGRyaXZlLGJjb3VudCAtIHRl
bXApOw0KLQkJCQkvKiBGSVhNRTogdGhpcyBsb2NraW5nIHNob3VsZCBlbmNv
bXBhc3MgdGhlIGFib3ZlIHJlZ2lzdGVyDQotCQkJCSAqIGZpbGUgYWNjZXNz
IHRvby4NCi0JCQkJICovDQogDQotCQkJCXNwaW5fbG9ja19pcnFzYXZlKGNo
LT5sb2NrLCBmbGFncyk7DQogCQkJCWF0YV9zZXRfaGFuZGxlcihkcml2ZSwg
aWRlc2NzaV9wY19pbnRyLCBnZXRfdGltZW91dChwYyksIE5VTEwpOw0KLQkJ
CQlzcGluX3VubG9ja19pcnFyZXN0b3JlKGNoLT5sb2NrLCBmbGFncyk7DQog
DQogCQkJCXJldHVybiBpZGVfc3RhcnRlZDsNCiAJCQl9DQpAQCAtMzgxLDIx
ICszNjksMTQgQEANCiAJcGMtPmFjdHVhbGx5X3RyYW5zZmVycmVkKz1iY291
bnQ7CQkJCS8qIFVwZGF0ZSB0aGUgY3VycmVudCBwb3NpdGlvbiAqLw0KIAlw
Yy0+Y3VycmVudF9wb3NpdGlvbis9YmNvdW50Ow0KIA0KLQkvKiBGSVhNRTog
dGhpcyBsb2NraW5nIHNob3VsZCBlbmNvbXBhc3MgdGhlIGFib3ZlIHJlZ2lz
dGVyDQotCSAqIGZpbGUgYWNjZXNzIHRvby4NCi0JICovDQotDQotCXNwaW5f
bG9ja19pcnFzYXZlKGNoLT5sb2NrLCBmbGFncyk7DQotCWF0YV9zZXRfaGFu
ZGxlcihkcml2ZSwgaWRlc2NzaV9wY19pbnRyLCBnZXRfdGltZW91dChwYyks
IE5VTEwpOwkvKiBBbmQgc2V0IHRoZSBpbnRlcnJ1cHQgaGFuZGxlciBhZ2Fp
biAqLw0KLQlzcGluX3VubG9ja19pcnFyZXN0b3JlKGNoLT5sb2NrLCBmbGFn
cyk7DQorCS8qIEFuZCBzZXQgdGhlIGludGVycnVwdCBoYW5kbGVyIGFnYWlu
ICovDQorCWF0YV9zZXRfaGFuZGxlcihkcml2ZSwgaWRlc2NzaV9wY19pbnRy
LCBnZXRfdGltZW91dChwYyksIE5VTEwpOw0KIA0KIAlyZXR1cm4gaWRlX3N0
YXJ0ZWQ7DQogfQ0KIA0KIHN0YXRpYyBpZGVfc3RhcnRzdG9wX3QgaWRlc2Nz
aV90cmFuc2Zlcl9wYyhzdHJ1Y3QgYXRhX2RldmljZSAqZHJpdmUsIHN0cnVj
dCByZXF1ZXN0ICpycSkNCiB7DQotCXVuc2lnbmVkIGxvbmcgZmxhZ3M7DQot
CXN0cnVjdCBhdGFfY2hhbm5lbCAqY2ggPSBkcml2ZS0+Y2hhbm5lbDsNCiAJ
c3RydWN0IFNjc2lfSG9zdCAqaG9zdCA9IGRyaXZlLT5kcml2ZXJfZGF0YTsN
CiAJaWRlc2NzaV9zY3NpX3QgKnNjc2kgPSBpZGVzY3NpX3ByaXZhdGUoaG9z
dCk7DQogCXN0cnVjdCBhdGFwaV9wYWNrZXRfY29tbWFuZCAqcGMgPSBzY3Np
LT5wYzsNCkBAIC00MDMsOSArMzg0LDYgQEANCiAJaWRlX3N0YXJ0c3RvcF90
IHN0YXJ0c3RvcDsNCiAJaW50IHJldDsNCiANCi0JLyogRklYTUU6IE1vdmUg
dGhpcyBsb2NrIHVwd2FyZHMuDQotCSAqLw0KLQlzcGluX2xvY2tfaXJxc2F2
ZShjaC0+bG9jaywgZmxhZ3MpOw0KIAlpZiAoYXRhX3N0YXR1c19wb2xsKGRy
aXZlLCBEUlFfU1RBVCwgQlVTWV9TVEFULA0KIAkJCQlXQUlUX1JFQURZLCBy
cSwgJnN0YXJ0c3RvcCkpIHsNCiAJCXByaW50ayAoS0VSTl9FUlIgImlkZS1z
Y3NpOiBTdHJhbmdlLCBwYWNrZXQgY29tbWFuZCBpbml0aWF0ZWQgeWV0IERS
USBpc24ndCBhc3NlcnRlZFxuIik7DQpAQCAtNDIyLDcgKzQwMCw2IEBADQog
CQkJcmV0ID0gaWRlX3N0YXJ0ZWQ7DQogCQl9DQogCX0NCi0Jc3Bpbl91bmxv
Y2tfaXJxcmVzdG9yZShjaC0+bG9jaywgZmxhZ3MpOw0KIA0KIAlyZXR1cm4g
cmV0Ow0KIH0NCkBAIC00NTcsMTggKzQzNCw5IEBADQogCQl1ZG1hX3N0YXJ0
KGRyaXZlLCBycSk7DQogCX0NCiAJaWYgKHRlc3RfYml0KElERVNDU0lfRFJR
X0lOVEVSUlVQVCwgJnNjc2ktPmZsYWdzKSkgew0KLQkJdW5zaWduZWQgbG9u
ZyBmbGFnczsNCi0JCXN0cnVjdCBhdGFfY2hhbm5lbCAqY2ggPSBkcml2ZS0+
Y2hhbm5lbDsNCi0NCi0JCS8qIEZJWE1FOiB0aGlzIGxvY2tpbmcgc2hvdWxk
IGVuY29tcGFzcyB0aGUgYWJvdmUgcmVnaXN0ZXINCi0JCSAqIGZpbGUgYWNj
ZXNzIHRvby4NCi0JCSAqLw0KLQ0KLQkJc3Bpbl9sb2NrX2lycXNhdmUoY2gt
PmxvY2ssIGZsYWdzKTsNCiAJCWF0YV9zZXRfaGFuZGxlcihkcml2ZSwgaWRl
c2NzaV90cmFuc2Zlcl9wYywgZ2V0X3RpbWVvdXQocGMpLCBOVUxMKTsNCi0J
CXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoY2gtPmxvY2ssIGZsYWdzKTsNCiAN
Ci0JCU9VVF9CWVRFIChXSU5fUEFDS0VUQ01ELCBJREVfQ09NTUFORF9SRUcp
OwkJLyogSXNzdWUgdGhlIHBhY2tldCBjb21tYW5kICovDQorCQlPVVRfQllU
RSAoV0lOX1BBQ0tFVENNRCwgSURFX0NPTU1BTkRfUkVHKTsNCiAJCXJldHVy
biBpZGVfc3RhcnRlZDsNCiAJfSBlbHNlIHsNCiAJCU9VVF9CWVRFIChXSU5f
UEFDS0VUQ01ELCBJREVfQ09NTUFORF9SRUcpOw0KQEAgLTQ4MSw3ICs0NDks
NiBAQA0KICAqLw0KIHN0YXRpYyBpZGVfc3RhcnRzdG9wX3QgaWRlc2NzaV9k
b19yZXF1ZXN0KHN0cnVjdCBhdGFfZGV2aWNlICpkcml2ZSwgc3RydWN0IHJl
cXVlc3QgKnJxLCBzZWN0b3JfdCBibG9jaykNCiB7DQotCXN0cnVjdCBhdGFf
Y2hhbm5lbCAqY2ggPSBkcml2ZS0+Y2hhbm5lbDsNCiAJaW50IHJldDsNCiAN
CiAjaWZkZWYgREVCVUcNCkBAIC00OTYsOCArNDYzLDYgQEANCiAJCQlycS0+
Y3VycmVudF9ucl9zZWN0b3JzKTsNCiAjZW5kaWYNCiANCi0JLyogRklYTUU6
IG1ha2UgdGhpcyB1bmxvY2tpbmcgZ28gYXdheSovDQotCXNwaW5fdW5sb2Nr
X2lycShjaC0+bG9jayk7DQogCWlmIChycS0+ZmxhZ3MgJiBSRVFfUEMpIHsN
CiAJCXJldCA9IGlkZXNjc2lfaXNzdWVfcGMoZHJpdmUsIHJxLCAoc3RydWN0
IGF0YXBpX3BhY2tldF9jb21tYW5kICopIHJxLT5zcGVjaWFsKTsNCiAJfSBl
bHNlIHsNCkBAIC01MDUsNyArNDcwLDYgQEANCiAJICAgIGlkZXNjc2lfZW5k
X3JlcXVlc3QoZHJpdmUsIHJxLCAwKTsNCiAJICAgIHJldCA9IGlkZV9zdG9w
cGVkOw0KIAl9DQotCXNwaW5fbG9ja19pcnEoY2gtPmxvY2spOw0KIA0KIAly
ZXR1cm4gcmV0Ow0KIH0NCkBAIC03MjAsOSArNjg0LDcgQEANCiAJcnEtPmZs
YWdzID0gUkVRX1BDOw0KIAlycS0+c3BlY2lhbCA9IChjaGFyICopIHBjOw0K
IAlycS0+YmlvID0gaWRlc2NzaV9kbWFfYmlvIChkcml2ZSwgcGMpOw0KLQlz
cGluX3VubG9ja19pcnEoY21kLT5ob3N0LT5ob3N0X2xvY2spOw0KLQlpZGVf
ZG9fZHJpdmVfY21kIChkcml2ZSwgcnEsIGlkZV9lbmQpOw0KLQlzcGluX2xv
Y2tfaXJxKGNtZC0+aG9zdC0+aG9zdF9sb2NrKTsNCisJaWRlX2RvX2RyaXZl
X2NtZChkcml2ZSwgcnEsIGlkZV9lbmQpOw0KIA0KIAlyZXR1cm4gMDsNCiBh
Ym9ydDoNCmRpZmYgLVggZG9udGRpZmYgLXVyIGxpbnV4LTIuNS4yNC9pbmNs
dWRlL2xpbnV4L2Jsa2Rldi5oIGxpbnV4L2luY2x1ZGUvbGludXgvYmxrZGV2
LmgNCi0tLSBsaW51eC0yLjUuMjQvaW5jbHVkZS9saW51eC9ibGtkZXYuaAlN
b24gSnVuIDI0IDIyOjIwOjU0IDIwMDINCisrKyBsaW51eC9pbmNsdWRlL2xp
bnV4L2Jsa2Rldi5oCVdlZCBKdW4gMjYgMTc6MjE6NDEgMjAwMg0KQEAgLTI4
Myw3ICsyODMsOSBAQA0KIGV4dGVybiBpbmxpbmUgcmVxdWVzdF9xdWV1ZV90
ICpiZGV2X2dldF9xdWV1ZShzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2KTsN
CiBleHRlcm4gdm9pZCBibGtkZXZfcmVsZWFzZV9yZXF1ZXN0KHN0cnVjdCBy
ZXF1ZXN0ICopOw0KIGV4dGVybiB2b2lkIGJsa19hdHRlbXB0X3JlbWVyZ2Uo
cmVxdWVzdF9xdWV1ZV90ICosIHN0cnVjdCByZXF1ZXN0ICopOw0KK2V4dGVy
biB2b2lkIF9fYmxrX2F0dGVtcHRfcmVtZXJnZShyZXF1ZXN0X3F1ZXVlX3Qg
Kiwgc3RydWN0IHJlcXVlc3QgKik7DQogZXh0ZXJuIHN0cnVjdCByZXF1ZXN0
ICpibGtfZ2V0X3JlcXVlc3QocmVxdWVzdF9xdWV1ZV90ICosIGludCwgaW50
KTsNCitleHRlcm4gc3RydWN0IHJlcXVlc3QgKl9fYmxrX2dldF9yZXF1ZXN0
KHJlcXVlc3RfcXVldWVfdCAqLCBpbnQpOw0KIGV4dGVybiB2b2lkIGJsa19w
dXRfcmVxdWVzdChzdHJ1Y3QgcmVxdWVzdCAqKTsNCiBleHRlcm4gdm9pZCBi
bGtfcGx1Z19kZXZpY2UocmVxdWVzdF9xdWV1ZV90ICopOw0KIGV4dGVybiBp
bnQgYmxrX3JlbW92ZV9wbHVnKHJlcXVlc3RfcXVldWVfdCAqKTsNCmRpZmYg
LVggZG9udGRpZmYgLXVyIGxpbnV4LTIuNS4yNC9pbmNsdWRlL2xpbnV4L2lk
ZS5oIGxpbnV4L2luY2x1ZGUvbGludXgvaWRlLmgNCi0tLSBsaW51eC0yLjUu
MjQvaW5jbHVkZS9saW51eC9pZGUuaAlXZWQgSnVuIDI2IDAwOjAyOjUzIDIw
MDINCisrKyBsaW51eC9pbmNsdWRlL2xpbnV4L2lkZS5oCVRodSBKdW4gMjcg
MDE6Mzk6MzcgMjAwMg0KQEAgLTM4MSw3ICszODEsNyBAQA0KICAqICBJbnRl
cnJ1cHQgYW5kIHRpbWVvdXQgaGFuZGxlciB0eXBlLg0KICAqLw0KIHR5cGVk
ZWYgaWRlX3N0YXJ0c3RvcF90IChhdGFfaGFuZGxlcl90KShzdHJ1Y3QgYXRh
X2RldmljZSAqLCBzdHJ1Y3QgcmVxdWVzdCAqKTsNCi10eXBlZGVmIGludCAo
YXRhX2V4cGlyeV90KShzdHJ1Y3QgYXRhX2RldmljZSAqLCBzdHJ1Y3QgcmVx
dWVzdCAqKTsNCit0eXBlZGVmIGlkZV9zdGFydHN0b3BfdCAoYXRhX2V4cGly
eV90KShzdHJ1Y3QgYXRhX2RldmljZSAqLCBzdHJ1Y3QgcmVxdWVzdCAqLCB1
bnNpZ25lZCBsb25nICopOw0KIA0KIGVudW0gew0KIAlBVEFfUFJJTUFSWQk9
IDAsDQpAQCAtNDA2LDcgKzQwNiw3IEBADQogDQogCWlkZV9zdGFydHN0b3Bf
dCAoKmhhbmRsZXIpKHN0cnVjdCBhdGFfZGV2aWNlICosIHN0cnVjdCByZXF1
ZXN0ICopOwkvKiBpcnEgaGFuZGxlciwgaWYgYWN0aXZlICovDQogCXN0cnVj
dCB0aW1lcl9saXN0IHRpbWVyOwkJCQkvKiBmYWlsc2FmZSB0aW1lciAqLw0K
LQlpbnQgKCpleHBpcnkpKHN0cnVjdCBhdGFfZGV2aWNlICosIHN0cnVjdCBy
ZXF1ZXN0ICopOwkvKiBpcnEgaGFuZGxlciwgaWYgYWN0aXZlICovDQorCWlk
ZV9zdGFydHN0b3BfdCAoKmV4cGlyeSkoc3RydWN0IGF0YV9kZXZpY2UgKiwg
c3RydWN0IHJlcXVlc3QgKiwgdW5zaWduZWQgbG9uZyAqKTsJLyogaXJxIGhh
bmRsZXIsIGlmIGFjdGl2ZSAqLw0KIAl1bnNpZ25lZCBsb25nIHBvbGxfdGlt
ZW91dDsJCQkJLyogdGltZW91dCB2YWx1ZSBkdXJpbmcgcG9sbGVkIG9wZXJh
dGlvbnMgKi8NCiAJc3RydWN0IGF0YV9kZXZpY2UgKmRyaXZlOwkJCQkvKiBs
YXN0IHNlcnZpY2VkIGRyaXZlICovDQogDQpAQCAtNjAyLDkgKzYwMiw3IEBA
DQogI2RlZmluZSBERVZJQ0VfTlIoZGV2aWNlKQkobWlub3IoZGV2aWNlKSA+
PiBQQVJUTl9CSVRTKQ0KICNpbmNsdWRlIDxsaW51eC9ibGsuaD4NCiANCi0v
KiBOb3QgbG9ja2luZyBhbmQgbG9ja2luZyB2YXJpYW50OiAqLw0KIGV4dGVy
biBpbnQgX19hdGFfZW5kX3JlcXVlc3Qoc3RydWN0IGF0YV9kZXZpY2UgKiwg
c3RydWN0IHJlcXVlc3QgKiwgaW50LCB1bnNpZ25lZCBpbnQpOw0KLWV4dGVy
biBpbnQgYXRhX2VuZF9yZXF1ZXN0KHN0cnVjdCBhdGFfZGV2aWNlICpkcml2
ZSwgc3RydWN0IHJlcXVlc3QgKiwgaW50KTsNCiANCiBleHRlcm4gdm9pZCBh
dGFfc2V0X2hhbmRsZXIoc3RydWN0IGF0YV9kZXZpY2UgKmRyaXZlLCBhdGFf
aGFuZGxlcl90IGhhbmRsZXIsDQogCQl1bnNpZ25lZCBsb25nIHRpbWVvdXQs
IGF0YV9leHBpcnlfdCBleHBpcnkpOw0KQEAgLTYyNiwxMiArNjI0LDYgQEAN
CiBzdHJ1Y3QgYXRhX2RldmljZSAqZ2V0X2luZm9fcHRyKGtkZXZfdCBpX3Jk
ZXYpOw0KIA0KIC8qDQotICogUmUtU3RhcnQgYW4gb3BlcmF0aW9uIGZvciBh
biBJREUgaW50ZXJmYWNlLg0KLSAqIFRoZSBjYWxsZXIgc2hvdWxkIHJldHVy
biBpbW1lZGlhdGVseSBhZnRlciBpbnZva2luZyB0aGlzLg0KLSAqLw0KLWlk
ZV9zdGFydHN0b3BfdCByZXN0YXJ0X3JlcXVlc3Qoc3RydWN0IGF0YV9kZXZp
Y2UgKik7DQotDQotLyoNCiAgKiAiYWN0aW9uIiBwYXJhbWV0ZXIgdHlwZSBm
b3IgaWRlX2RvX2RyaXZlX2NtZCgpIGJlbG93Lg0KICAqLw0KIHR5cGVkZWYg
ZW51bSB7DQo=
---559023410-851401618-1025179203=:14825--
-
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/