Fixes for the ide-tape driver

Alan Stern (stern@rowland.harvard.edu)
Sat, 2 Nov 2002 13:16:25 -0500 (EST)


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.

---2084555674-1231429211-1036260985=:1124
Content-Type: TEXT/PLAIN; charset=US-ASCII

Alan Cox and lkml:

I have accumulated a series of changes for the ide-tape driver. They
address a number of problems, but primarily they fix the use of DMA (which
did not work at all previously) and the handling of filemarks. These
changes are essential for use of my Seagate TapeStor 20GB ATAPI drive.

There doesn't seem to be an official maintainer for the ide-tape driver,
although Willem Riede handles the OnStream maintenance. I have sent my
changes to him for testing, and he has said that they work properly on his
system. Therefore I am sending my patches to the list for any additional
testing and to you for inclusion in the official kernel source.

Thank you.

Alan Stern

---2084555674-1231429211-1036260985=:1124
Content-Type: TEXT/PLAIN; charset=US-ASCII; name="ide-tape.c.patch-2.4.19"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.LNX.4.33L2.0211021316250.1124@ida.rowland.org>
Content-Description: ide-tape patch for Linux 2.4.19
Content-Disposition: attachment; filename="ide-tape.c.patch-2.4.19"

LS0tIGxpbnV4L2RyaXZlcnMvaWRlL2lkZS10YXBlLmMub3JpZwlXZWQgT2N0
IDE2IDExOjQ3OjM2IDIwMDINCisrKyBsaW51eC9kcml2ZXJzL2lkZS9pZGUt
dGFwZS5jCVRodSBPY3QgMTcgMTU6MTI6MjggMjAwMg0KQEAgLTEsNSArMSw1
IEBADQogLyoNCi0gKiBsaW51eC9kcml2ZXJzL2lkZS9pZGUtdGFwZS5jCQlW
ZXJzaW9uIDEuMTdhCUphbiwgMjAwMQ0KKyAqIGxpbnV4L2RyaXZlcnMvaWRl
L2lkZS10YXBlLmMJCVZlcnNpb24gMS4xN2IJT2N0LCAyMDAyDQogICoNCiAg
KiBDb3B5cmlnaHQgKEMpIDE5OTUgLSAxOTk5IEdhZGkgT3htYW4gPGdhZGlv
QG5ldHZpc2lvbi5uZXQuaWw+DQogICoNCkBAIC0yOTEsNiArMjkxLDI4IEBA
DQogICogVmVyIDEuMTdhIEFwciAyMDAxIFdpbGxlbSBSaWVkZSBvc3N0QHJp
ZWRlLm9yZw0KICAqIAkJCS0gR2V0IGRyaXZlJ3MgYWN0dWFsIGJsb2NrIHNp
emUgZnJvbSBtb2RlIHNlbnNlIGJsb2NrIGRlc2NyaXB0b3INCiAgKiAJCQkt
IExpbWl0IHNpemUgb2YgcGlwZWxpbmUNCisgKiBWZXIgMS4xN2IgT2N0IDIw
MDIgICBBbGFuIFN0ZXJuIDxzdGVybkByb3dsYW5kLmhhcnZhcmQuZWR1Pg0K
KyAqCQkJQ2hhbmdlZCBJREVUQVBFX01JTl9QSVBFTElORV9TVEFHRVMgdG8g
MSBhbmQgYWN0dWFsbHkgdXNlZA0KKyAqCQkJIGl0IGluIHRoZSBjb2RlIQ0K
KyAqCQkJQWN0dWFsbHkgcmVtb3ZlZCBhYm9ydGVkIHN0YWdlcyBpbiBpZGV0
YXBlX2Fib3J0X3BpcGVsaW5lDQorICoJCQkgaW5zdGVhZCBvZiBqdXN0IGNo
YW5naW5nIHRoZSBjb21tYW5kIGNvZGUuDQorICoJCQlNYWRlIHRoZSB0cmFu
c2ZlciBieXRlIGNvdW50IGZvciBSZXF1ZXN0IFNlbnNlIGVxdWFsIHRvIHRo
ZQ0KKyAqCQkJIGFjdHVhbCBsZW5ndGggb2YgdGhlIGRhdGEgdHJhbnNmZXIu
DQorICoJCQlDaGFuZ2VkIGhhbmRsaW5nIG9mIHBhcnRpYWwgZGF0YSB0cmFu
c2ZlcnM6IHRoZXkgZG8gbm90DQorICoJCQkgY2F1c2UgRE1BIGVycm9ycy4N
CisgKgkJCU1vdmVkIGluaXRpYXRpb24gb2YgRE1BIHRyYW5zZmVycyB0byB0
aGUgY29ycmVjdCBwbGFjZS4NCisgKgkJCVJlbW92ZWQgcmVmZXJlbmNlIHRv
IHVuYWxsb2NhdGVkIG1lbW9yeS4NCisgKgkJCU1hZGUgX19pZGV0YXBlX2Rp
c2NhcmRfcmVhZF9waXBlbGluZSByZXR1cm4gdGhlIG51bWJlciBvZg0KKyAq
CQkJIHNlY3RvcnMgc2tpcHBlZCwgbm90IHRoZSBudW1iZXIgb2Ygc3RhZ2Vz
Lg0KKyAqCQkJUmVwbGFjZWQgZXJyYW50IGtmcmVlKCkgY2FsbHMgd2l0aCBf
X2lkZXRhcGVfa2ZyZWVfc3RhZ2UoKS4NCisgKgkJCUZpeGVkIG9mZi1ieS1v
bmUgZXJyb3IgaW4gdGVzdGluZyB0aGUgcGlwZWxpbmUgbGVuZ3RoLg0KKyAq
CQkJRml4ZWQgaGFuZGxpbmcgb2YgZmlsZW1hcmtzIGluIHRoZSByZWFkIHBp
cGVsaW5lLg0KKyAqCQkJU21hbGwgY29kZSBvcHRpbWl6YXRpb24gZm9yIE1U
QlNGIGFuZCBNVEJTRk0gaW9jdGxzLg0KKyAqCQkJRG9uJ3QgdHJ5IHRvIHVu
bG9jayB0aGUgZG9vciBkdXJpbmcgZGV2aWNlIGNsb3NlIGlmIGlzDQorICoJ
CQkgYWxyZWFkeSB1bmxvY2tlZCENCisgKgkJCUNvc21ldGljIGZpeGVzIHRv
IG1pc2NlbGxhbmVvdXMgZGVidWdnaW5nIG91dHB1dCBtZXNzYWdlcy4NCisg
KgkJCVNldCB0aGUgbWluaW11bSAvcHJvYy9pZGUvaGQ/L3NldHRpbmdzIHZh
bHVlcyBmb3IgInBpcGVsaW5lIiwNCisgKgkJCSAicGlwZWxpbmVfbWluIiwg
YW5kICJwaXBlbGluZV9tYXgiIHRvIDEuDQogICoNCiAgKiBIZXJlIGFyZSBz
b21lIHdvcmRzIGZyb20gdGhlIGZpcnN0IHJlbGVhc2VzIG9mIGhkLmMsIHdo
aWNoIGFyZSBxdW90ZWQNCiAgKiBpbiBpZGUuYyBhbmQgYXBwbHkgaGVyZSBh
cyB3ZWxsOg0KQEAgLTQwMCw3ICs0MjIsNyBAQA0KICAqCQlzaGFyaW5nIGEg
KGZhc3QpIEFUQS0yIGRpc2sgd2l0aCBhbnkgKHNsb3cpIG5ldyBBVEFQSSBk
ZXZpY2UuDQogICovDQogDQotI2RlZmluZSBJREVUQVBFX1ZFUlNJT04gIjEu
MTdhIg0KKyNkZWZpbmUgSURFVEFQRV9WRVJTSU9OICIxLjE3YiINCiANCiAj
aW5jbHVkZSA8bGludXgvY29uZmlnLmg+DQogI2luY2x1ZGUgPGxpbnV4L21v
ZHVsZS5oPg0KQEAgLTU3Nyw5ICs1OTksMTAgQEANCiAgKgl3aGVuZXZlciB3
ZSBzZW5zZSB0aGF0IHRoZSBwaXBlbGluZSBpcyBlbXB0eSwgdW50aWwgd2Ug
cmVhY2gNCiAgKgl0aGUgb3B0aW11bSB2YWx1ZSBvciB1bnRpbCB3ZSByZWFj
aCBNQVguDQogICoNCi0gKglTZXR0aW5nIHRoZSBmb2xsb3dpbmcgcGFyYW1l
dGVyIHRvIDAgd2lsbCBkaXNhYmxlIHRoZSBwaXBlbGluZWQgbW9kZS4NCisg
KglTZXR0aW5nIHRoZSBmb2xsb3dpbmcgcGFyYW1ldGVyIHRvIDAgaXMgaWxs
ZWdhbDogdGhlIHBpcGVsaW5lZCBtb2RlDQorICoJY2Fubm90IGJlIGRpc2Fi
bGVkIChjYWxjdWxhdGVfc3BlZWRzKCkgZGl2aWRlcyBieSB0YXBlLT5tYXhf
c3RhZ2VzLikNCiAgKi8NCi0jZGVmaW5lIElERVRBUEVfTUlOX1BJUEVMSU5F
X1NUQUdFUwkyMDANCisjZGVmaW5lIElERVRBUEVfTUlOX1BJUEVMSU5FX1NU
QUdFUwkgIDENCiAjZGVmaW5lIElERVRBUEVfTUFYX1BJUEVMSU5FX1NUQUdF
Uwk0MDANCiAjZGVmaW5lIElERVRBUEVfSU5DUkVBU0VfU1RBR0VTX1JBVEUJ
IDIwDQogDQpAQCAtNjAxLDggKzYyNCw4IEBADQogICoJaXMgdmVyaWZpZWQg
dG8gYmUgc3RhYmxlIGVub3VnaC4gVGhpcyB3aWxsIG1ha2UgaXQgbXVjaCBt
b3JlDQogICoJZXN0aGV0aWMuDQogICovDQotI2RlZmluZSBJREVUQVBFX0RF
QlVHX0lORk8JCTENCi0jZGVmaW5lIElERVRBUEVfREVCVUdfTE9HCQkxDQor
I2RlZmluZSBJREVUQVBFX0RFQlVHX0lORk8JCTANCisjZGVmaW5lIElERVRB
UEVfREVCVUdfTE9HCQkwDQogI2RlZmluZSBJREVUQVBFX0RFQlVHX0xPR19W
RVJCT1NFCTANCiAjZGVmaW5lIElERVRBUEVfREVCVUdfQlVHUwkJMQ0KIA0K
QEAgLTE2OTYsMjQgKzE3MTksNiBAQA0KIAl9DQogfQ0KIA0KLXN0YXRpYyB2
b2lkIGlkZXRhcGVfYWJvcnRfcGlwZWxpbmUgKGlkZV9kcml2ZV90ICpkcml2
ZSkNCi17DQotCWlkZXRhcGVfdGFwZV90ICp0YXBlID0gZHJpdmUtPmRyaXZl
cl9kYXRhOw0KLQlpZGV0YXBlX3N0YWdlX3QgKnN0YWdlID0gdGFwZS0+bmV4
dF9zdGFnZTsNCi0NCi0jaWYgSURFVEFQRV9ERUJVR19MT0cNCi0JaWYgKHRh
cGUtPmRlYnVnX2xldmVsID49IDQpDQotCQlwcmludGsoS0VSTl9JTkZPICJp
ZGUtdGFwZTogJXM6IGlkZXRhcGVfYWJvcnRfcGlwZWxpbmUgY2FsbGVkXG4i
LCB0YXBlLT5uYW1lKTsNCi0jZW5kaWYNCi0Jd2hpbGUgKHN0YWdlKSB7DQot
CQlpZiAoc3RhZ2UtPnJxLmNtZCA9PSBJREVUQVBFX1dSSVRFX1JRKQ0KLQkJ
CXN0YWdlLT5ycS5jbWQgPSBJREVUQVBFX0FCT1JURURfV1JJVEVfUlE7DQot
CQllbHNlIGlmIChzdGFnZS0+cnEuY21kID09IElERVRBUEVfUkVBRF9SUSkN
Ci0JCQlzdGFnZS0+cnEuY21kID0gSURFVEFQRV9BQk9SVEVEX1JFQURfUlE7
DQotCQlzdGFnZSA9IHN0YWdlLT5uZXh0Ow0KLQl9DQotfQ0KLQ0KIC8qDQog
ICoJaWRldGFwZV9hY3RpdmVfbmV4dF9zdGFnZSB3aWxsIGRlY2xhcmUgdGhl
IG5leHQgc3RhZ2UgYXMgImFjdGl2ZSIuDQogICovDQpAQCAtMTc1OCw3ICsx
NzYzLDcgQEANCiAJCXByaW50ayAoS0VSTl9JTkZPICJpZGUtdGFwZTogUmVh
Y2hlZCBpZGV0YXBlX2luY3JlYXNlX21heF9waXBlbGluZV9zdGFnZXNcbiIp
Ow0KICNlbmRpZiAvKiBJREVUQVBFX0RFQlVHX0xPRyAqLw0KIA0KLQl0YXBl
LT5tYXhfc3RhZ2VzICs9IGluY3JlYXNlOw0KKwl0YXBlLT5tYXhfc3RhZ2Vz
ICs9IElERV9NQVgoaW5jcmVhc2UsIDEpOw0KIAl0YXBlLT5tYXhfc3RhZ2Vz
ID0gSURFX01BWCh0YXBlLT5tYXhfc3RhZ2VzLCB0YXBlLT5taW5fcGlwZWxp
bmUpOw0KIAl0YXBlLT5tYXhfc3RhZ2VzID0gSURFX01JTih0YXBlLT5tYXhf
c3RhZ2VzLCB0YXBlLT5tYXhfcGlwZWxpbmUpOw0KIH0NCkBAIC0xODMxLDYg
KzE4MzYsMjkgQEANCiAJfQ0KIH0NCiANCitzdGF0aWMgdm9pZCBpZGV0YXBl
X2Fib3J0X3BpcGVsaW5lIChpZGVfZHJpdmVfdCAqZHJpdmUsIGlkZXRhcGVf
c3RhZ2VfdCAqbGFzdF9zdGFnZSkNCit7DQorCWlkZXRhcGVfdGFwZV90ICp0
YXBlID0gZHJpdmUtPmRyaXZlcl9kYXRhOw0KKwlpZGV0YXBlX3N0YWdlX3Qg
KnN0YWdlID0gdGFwZS0+bmV4dF9zdGFnZTsNCisJaWRldGFwZV9zdGFnZV90
ICpuc3RhZ2U7DQorDQorI2lmIElERVRBUEVfREVCVUdfTE9HDQorCWlmICh0
YXBlLT5kZWJ1Z19sZXZlbCA+PSA0KQ0KKwkJcHJpbnRrKEtFUk5fSU5GTyAi
aWRlLXRhcGU6ICVzOiBpZGV0YXBlX2Fib3J0X3BpcGVsaW5lIGNhbGxlZFxu
IiwgdGFwZS0+bmFtZSk7DQorI2VuZGlmDQorCXdoaWxlIChzdGFnZSkgew0K
KwkJbnN0YWdlID0gc3RhZ2UtPm5leHQ7DQorCQlpZGV0YXBlX2tmcmVlX3N0
YWdlKHRhcGUsIHN0YWdlKTsNCisJCS0tdGFwZS0+bnJfc3RhZ2VzOw0KKwkJ
LS10YXBlLT5ucl9wZW5kaW5nX3N0YWdlczsNCisJCXN0YWdlID0gbnN0YWdl
Ow0KKwl9DQorCXRhcGUtPmxhc3Rfc3RhZ2UgPSBsYXN0X3N0YWdlOw0KKwlp
ZiAobGFzdF9zdGFnZSkNCisJCWxhc3Rfc3RhZ2UtPm5leHQgPSBOVUxMOw0K
Kwl0YXBlLT5uZXh0X3N0YWdlID0gTlVMTDsNCit9DQorDQogLyoNCiAgKglp
ZGV0YXBlX2VuZF9yZXF1ZXN0IGlzIHVzZWQgdG8gZmluaXNoIHNlcnZpY2lu
ZyBhIHJlcXVlc3QsIGFuZCB0bw0KICAqCWluc2VydCBhIHBlbmRpbmcgcGlw
ZWxpbmUgcmVxdWVzdCBpbnRvIHRoZSBtYWluIGRldmljZSBxdWV1ZS4NCkBA
IC0xODQzLDYgKzE4NzEsNyBAQA0KIAl1bnNpZ25lZCBsb25nIGZsYWdzOw0K
IAlpbnQgZXJyb3I7DQogCWludCByZW1vdmVfc3RhZ2UgPSAwOw0KKwlpZGV0
YXBlX3N0YWdlX3QgKmFjdGl2ZV9zdGFnZTsNCiAjaWYgT05TVFJFQU1fREVC
VUcNCiAJaWRldGFwZV9zdGFnZV90ICpzdGFnZTsNCiAJb3NfYXV4X3QgKmF1
eDsNCkBAIC0xODY1LDYgKzE4OTQsNyBAQA0KIA0KIAlzcGluX2xvY2tfaXJx
c2F2ZSgmdGFwZS0+c3BpbmxvY2ssIGZsYWdzKTsNCiAJaWYgKHRhcGUtPmFj
dGl2ZV9kYXRhX3JlcXVlc3QgPT0gcnEpIHsJCS8qIFRoZSByZXF1ZXN0IHdh
cyBhIHBpcGVsaW5lZCBkYXRhIHRyYW5zZmVyIHJlcXVlc3QgKi8NCisJCWFj
dGl2ZV9zdGFnZSA9IHRhcGUtPmFjdGl2ZV9zdGFnZTsNCiAJCXRhcGUtPmFj
dGl2ZV9zdGFnZSA9IE5VTEw7DQogCQl0YXBlLT5hY3RpdmVfZGF0YV9yZXF1
ZXN0ID0gTlVMTDsNCiAJCXRhcGUtPm5yX3BlbmRpbmdfc3RhZ2VzLS07DQpA
QCAtMTg4NywxNSArMTkxNywxNyBAQA0KIAkJCQkJCXByaW50aygiaWRlLXRh
cGU6ICVzOiBza2lwcGluZyBvdmVyIGNvbmZpZyBwYXJpdGlvbi4uXG4iLCB0
YXBlLT5uYW1lKTsNCiAjZW5kaWYNCiAJCQkJCXRhcGUtPm9uc3RyZWFtX3dy
aXRlX2Vycm9yID0gT1NfUEFSVF9FUlJPUjsNCi0JCQkJCWlmICh0YXBlLT53
YWl0aW5nKQ0KKwkJCQkJaWYgKHRhcGUtPndhaXRpbmcpIHsNCisJCQkJCQly
cS0+d2FpdGluZyA9IE5VTEw7DQogCQkJCQkJY29tcGxldGUodGFwZS0+d2Fp
dGluZyk7DQorCQkJCQl9DQogCQkJCX0NCiAJCQl9DQogCQkJcmVtb3ZlX3N0
YWdlID0gMTsNCiAJCQlpZiAoZXJyb3IpIHsNCiAJCQkJc2V0X2JpdCAoSURF
VEFQRV9QSVBFTElORV9FUlJPUiwgJnRhcGUtPmZsYWdzKTsNCiAJCQkJaWYg
KGVycm9yID09IElERVRBUEVfRVJST1JfRU9EKQ0KLQkJCQkJaWRldGFwZV9h
Ym9ydF9waXBlbGluZSAoZHJpdmUpOw0KKwkJCQkJaWRldGFwZV9hYm9ydF9w
aXBlbGluZShkcml2ZSwgYWN0aXZlX3N0YWdlKTsNCiAJCQkJaWYgKHRhcGUt
Pm9uc3RyZWFtICYmICF0YXBlLT5yYXcgJiYgZXJyb3IgPT0gSURFVEFQRV9F
UlJPUl9HRU5FUkFMICYmIHRhcGUtPnNlbnNlLnNlbnNlX2tleSA9PSAzKSB7
DQogCQkJCQljbGVhcl9iaXQgKElERVRBUEVfUElQRUxJTkVfRVJST1IsICZ0
YXBlLT5mbGFncyk7DQogCQkJCQlwcmludGsoS0VSTl9FUlIgImlkZS10YXBl
OiAlczogd3JpdGUgZXJyb3IsIGVuYWJsaW5nIGVycm9yIHJlY292ZXJ5XG4i
LCB0YXBlLT5uYW1lKTsNCkBAIC0xOTA0LDE0ICsxOTM2LDE2IEBADQogCQkJ
CQl0YXBlLT5ucl9wZW5kaW5nX3N0YWdlcysrOw0KIAkJCQkJdGFwZS0+bmV4
dF9zdGFnZSA9IHRhcGUtPmZpcnN0X3N0YWdlOw0KIAkJCQkJcnEtPmN1cnJl
bnRfbnJfc2VjdG9ycyA9IHJxLT5ucl9zZWN0b3JzOw0KLQkJCQkJaWYgKHRh
cGUtPndhaXRpbmcpDQorCQkJCQlpZiAodGFwZS0+d2FpdGluZykgew0KKwkJ
CQkJCXJxLT53YWl0aW5nID0gTlVMTDsNCiAJCQkJCQljb21wbGV0ZSh0YXBl
LT53YWl0aW5nKTsNCisJCQkJCX0NCiAJCQkJfQ0KIAkJCX0NCiAJCX0gZWxz
ZSBpZiAocnEtPmNtZCA9PSBJREVUQVBFX1JFQURfUlEpIHsNCiAJCQlpZiAo
ZXJyb3IgPT0gSURFVEFQRV9FUlJPUl9FT0QpIHsNCiAJCQkJc2V0X2JpdCAo
SURFVEFQRV9QSVBFTElORV9FUlJPUiwgJnRhcGUtPmZsYWdzKTsNCi0JCQkJ
aWRldGFwZV9hYm9ydF9waXBlbGluZShkcml2ZSk7DQorCQkJCWlkZXRhcGVf
YWJvcnRfcGlwZWxpbmUoZHJpdmUsIGFjdGl2ZV9zdGFnZSk7DQogCQkJfQ0K
IAkJfQ0KIAkJaWYgKHRhcGUtPm5leHRfc3RhZ2UgIT0gTlVMTCAmJiAhdGFw
ZS0+b25zdHJlYW1fd3JpdGVfZXJyb3IpIHsNCkBAIC0xOTU3LDcgKzE5OTEs
NyBAQA0KIAlpZGV0YXBlX2luaXRfcGMgKHBjKTsJDQogCXBjLT5jWzBdID0g
SURFVEFQRV9SRVFVRVNUX1NFTlNFX0NNRDsNCiAJcGMtPmNbNF0gPSAyMDsN
Ci0JcGMtPnJlcXVlc3RfdHJhbnNmZXIgPSAxODsNCisJcGMtPnJlcXVlc3Rf
dHJhbnNmZXIgPSAyMDsNCiAJcGMtPmNhbGxiYWNrID0gJmlkZXRhcGVfcmVx
dWVzdF9zZW5zZV9jYWxsYmFjazsNCiB9DQogDQpAQCAtMjA1Nyw3ICsyMDkx
LDcgQEANCiANCiAjaWZkZWYgQ09ORklHX0JMS19ERVZfSURFRE1BDQogCWlm
ICh0ZXN0X2JpdCAoUENfRE1BX0lOX1BST0dSRVNTLCAmcGMtPmZsYWdzKSkg
ew0KLQkJaWYgKEhXSUYoZHJpdmUpLT5kbWFwcm9jKGlkZV9kbWFfZW5kLCBk
cml2ZSkpIHsNCisJCWlmIChIV0lGKGRyaXZlKS0+ZG1hcHJvYyhpZGVfZG1h
X2VuZCwgZHJpdmUpIHx8IHN0YXR1cy5iLmNoZWNrKSB7DQogCQkJLyoNCiAJ
CQkgKiBBIERNQSBlcnJvciBpcyBzb21ldGltZXMgZXhwZWN0ZWQuIEZvciBl
eGFtcGxlLA0KIAkJCSAqIGlmIHRoZSB0YXBlIGlzIGNyb3NzaW5nIGEgZmls
ZW1hcmsgZHVyaW5nIGENCkBAIC0yMDY5LDggKzIxMDMsMTggQEANCiAJCQkg
KiBhY3R1YWxseSB0cmFuc2ZlcnJlZCAod2UgY2FuJ3QgcmVjZWl2ZSB0aGF0
DQogCQkJICogaW5mb3JtYXRpb24gZnJvbSB0aGUgRE1BIGVuZ2luZSBvbiBt
b3N0IGNoaXBzZXRzKS4NCiAJCQkgKi8NCisNCisJCQkvKg0KKwkJCSAqIE9u
IHRoZSBjb250cmFyeSwgYSBETUEgZXJyb3IgaXMgbmV2ZXIgZXhwZWN0ZWQ7
DQorCQkJICogaXQgdXN1YWxseSBpbmRpY2F0ZXMgYSBoYXJkd2FyZSBlcnJv
ciBvciBhYm9ydC4NCisJCQkgKiBJZiB0aGUgdGFwZSBjcm9zc2VzIGEgZmls
ZW1hcmsgZHVyaW5nIGEgUkVBRA0KKwkJCSAqIGNvbW1hbmQsIGl0IHdpbGwg
aXNzdWUgYW4gaXJxIGFuZCBwb3NpdGlvbiBpdHNlbGYNCisJCQkgKiBhZnRl
ciB0aGUgZmlsZW1hcmsgKG5vdCBiZWZvcmUpLiBPbmx5IGEgcGFydGlhbA0K
KwkJCSAqIGRhdGEgdHJhbnNmZXIgd2lsbCBvY2N1ciwgYnV0IG5vIERNQSBl
cnJvci4NCisJCQkgKiAoQVMsIDE5IEFwciAyMDAxKQ0KKwkJCSAqLw0KIAkJ
CXNldF9iaXQgKFBDX0RNQV9FUlJPUiwgJnBjLT5mbGFncyk7DQotCQl9IGVs
c2UgaWYgKCFzdGF0dXMuYi5jaGVjaykgew0KKwkJfSBlbHNlIHsNCiAJCQlw
Yy0+YWN0dWFsbHlfdHJhbnNmZXJyZWQgPSBwYy0+cmVxdWVzdF90cmFuc2Zl
cjsNCiAJCQlpZGV0YXBlX3VwZGF0ZV9idWZmZXJzIChwYyk7DQogCQl9DQpA
QCAtMjEwMyw3ICsyMTQ3LDcgQEANCiAJCWlmIChzdGF0dXMuYi5jaGVjayB8
fCB0ZXN0X2JpdCAoUENfRE1BX0VSUk9SLCAmcGMtPmZsYWdzKSkgewkvKiBF
cnJvciBkZXRlY3RlZCAqLw0KICNpZiBJREVUQVBFX0RFQlVHX0xPRw0KIAkJ
CWlmICh0YXBlLT5kZWJ1Z19sZXZlbCA+PSAxKQ0KLQkJCQlwcmludGsgKEtF
Uk5fSU5GTyAiaWRlLXRhcGU6ICVzOiBJL08gZXJyb3IsICIsdGFwZS0+bmFt
ZSk7DQorCQkJCXByaW50ayhLRVJOX0lORk8gImlkZS10YXBlOiAlczogSS9P
IGVycm9yXG4iLHRhcGUtPm5hbWUpOw0KICNlbmRpZiAvKiBJREVUQVBFX0RF
QlVHX0xPRyAqLw0KIAkJCWlmIChwYy0+Y1swXSA9PSBJREVUQVBFX1JFUVVF
U1RfU0VOU0VfQ01EKSB7DQogCQkJCXByaW50ayAoS0VSTl9FUlIgImlkZS10
YXBlOiBJL08gZXJyb3IgaW4gcmVxdWVzdCBzZW5zZSBjb21tYW5kXG4iKTsN
CkBAIC0yMjU1LDYgKzIyOTksMTAgQEANCiAJfQ0KIAl0YXBlLT5jbWRfc3Rh
cnRfdGltZSA9IGppZmZpZXM7DQogCWlkZV9zZXRfaGFuZGxlcihkcml2ZSwg
JmlkZXRhcGVfcGNfaW50ciwgSURFVEFQRV9XQUlUX0NNRCwgTlVMTCk7CS8q
IFNldCB0aGUgaW50ZXJydXB0IHJvdXRpbmUgKi8NCisjaWZkZWYgQ09ORklH
X0JMS19ERVZfSURFRE1BDQorCWlmICh0ZXN0X2JpdChQQ19ETUFfSU5fUFJP
R1JFU1MsICZwYy0+ZmxhZ3MpKQkJLyogQmVnaW4gRE1BLCBpZiBuZWNlc3Nh
cnkgKi8NCisJCSh2b2lkKSAoSFdJRihkcml2ZSktPmRtYXByb2MoaWRlX2Rt
YV9iZWdpbiwgZHJpdmUpKTsNCisjZW5kaWYNCiAJYXRhcGlfb3V0cHV0X2J5
dGVzIChkcml2ZSxwYy0+YywxMik7CQkJLyogU2VuZCB0aGUgYWN0dWFsIHBh
Y2tldCAqLw0KIAlyZXR1cm4gaWRlX3N0YXJ0ZWQ7DQogfQ0KQEAgLTIyNzks
OCArMjMyNyw3IEBADQogCQkvKg0KIAkJICoJV2Ugd2lsbCAiYWJvcnQiIHJl
dHJ5aW5nIGEgcGFja2V0IGNvbW1hbmQgaW4gY2FzZQ0KIAkJICoJYSBsZWdp
dGltYXRlIGVycm9yIGNvZGUgd2FzIHJlY2VpdmVkIChjcm9zc2luZyBhDQot
CQkgKglmaWxlbWFyaywgb3IgRE1BIGVycm9yIGluIHRoZSBlbmQgb2YgbWVk
aWEsIGZvcg0KLQkJICoJZXhhbXBsZSkuDQorCQkgKglmaWxlbWFyaywgb3Ig
ZW5kIG9mIHRoZSBtZWRpYSwgZm9yIGV4YW1wbGUpLg0KIAkJICovDQogCQlp
ZiAoIXRlc3RfYml0IChQQ19BQk9SVCwgJnBjLT5mbGFncykpIHsNCiAJCQlp
ZiAoIShwYy0+Y1swXSA9PSBJREVUQVBFX1RFU1RfVU5JVF9SRUFEWV9DTUQg
JiYgdGFwZS0+c2Vuc2Vfa2V5ID09IDIgJiYNCkBAIC0yMjk3LDcgKzIzNDQs
NyBAQA0KIAl9DQogI2lmIElERVRBUEVfREVCVUdfTE9HDQogCWlmICh0YXBl
LT5kZWJ1Z19sZXZlbCA+PSAyKQ0KLQkJcHJpbnRrIChLRVJOX0lORk8gImlk
ZS10YXBlOiBSZXRyeSBudW1iZXIgLSAlZFxuIiwgcGMtPnJldHJpZXMpOw0K
KwkJcHJpbnRrKEtFUk5fSU5GTyAiaWRlLXRhcGU6IFJldHJ5IG51bWJlciAt
ICVkLCBjbWQgPSAlMDJYXG4iLCBwYy0+cmV0cmllcywgcGMtPmNbMF0pOw0K
ICNlbmRpZiAvKiBJREVUQVBFX0RFQlVHX0xPRyAqLw0KIA0KIAlwYy0+cmV0
cmllcysrOw0KQEAgLTIzMjEsOSArMjM2OCw4IEBADQogCU9VVF9CWVRFIChi
Y291bnQuYi5sb3csICAgICAgSURFX0JDT1VOVExfUkVHKTsNCiAJT1VUX0JZ
VEUgKGRyaXZlLT5zZWxlY3QuYWxsLCBJREVfU0VMRUNUX1JFRyk7DQogI2lm
ZGVmIENPTkZJR19CTEtfREVWX0lERURNQQ0KLQlpZiAoZG1hX29rKSB7CQkJ
CQkJLyogQmVnaW4gRE1BLCBpZiBuZWNlc3NhcnkgKi8NCisJaWYgKGRtYV9v
aykgewkJCS8qIFdpbGwgYmVnaW4gRE1BIGxhdGVyICovDQogCQlzZXRfYml0
IChQQ19ETUFfSU5fUFJPR1JFU1MsICZwYy0+ZmxhZ3MpOw0KLQkJKHZvaWQp
IChIV0lGKGRyaXZlKS0+ZG1hcHJvYyhpZGVfZG1hX2JlZ2luLCBkcml2ZSkp
Ow0KIAl9DQogI2VuZGlmIC8qIENPTkZJR19CTEtfREVWX0lERURNQSAqLw0K
IAlpZiAodGVzdF9iaXQoSURFVEFQRV9EUlFfSU5URVJSVVBULCAmdGFwZS0+
ZmxhZ3MpKSB7DQpAQCAtMzA4Niw3ICszMTMyLDcgQEANCiAJdGFwZS0+d2Fp
dGluZyA9ICZ3YWl0Ow0KIAlzcGluX3VubG9jaygmdGFwZS0+c3BpbmxvY2sp
Ow0KIAl3YWl0X2Zvcl9jb21wbGV0aW9uKCZ3YWl0KTsNCi0JcnEtPndhaXRp
bmcgPSBOVUxMOw0KKwkvKiBUaGUgc3RhZ2UgYW5kIGl0cyBzdHJ1Y3QgcmVx
dWVzdCBoYXZlIGJlZW4gZGVhbGxvY2F0ZWQgKi8NCiAJdGFwZS0+d2FpdGlu
ZyA9IE5VTEw7DQogCXNwaW5fbG9ja19pcnEoJnRhcGUtPnNwaW5sb2NrKTsN
CiB9DQpAQCAtMzM0NSwxMSArMzM5MSwxNSBAQA0KIA0KIAlpZiAodGFwZS0+
Y2hyZGV2X2RpcmVjdGlvbiAhPSBpZGV0YXBlX2RpcmVjdGlvbl9yZWFkKQ0K
IAkJcmV0dXJuIDA7DQorCWNudCA9IHRhcGUtPm1lcmdlX3N0YWdlX3NpemUg
LyB0YXBlLT50YXBlX2Jsb2NrX3NpemU7DQorCWlmICh0ZXN0X2FuZF9jbGVh
cl9iaXQoSURFVEFQRV9GSUxFTUFSSywgJnRhcGUtPmZsYWdzKSkNCisJCSsr
Y250OwkJLyogRmlsZW1hcmtzIGNvdW50IGFzIDEgc2VjdG9yICovDQogCXRh
cGUtPm1lcmdlX3N0YWdlX3NpemUgPSAwOw0KIAlpZiAodGFwZS0+bWVyZ2Vf
c3RhZ2UgIT0gTlVMTCkgew0KIAkJX19pZGV0YXBlX2tmcmVlX3N0YWdlICh0
YXBlLT5tZXJnZV9zdGFnZSk7DQogCQl0YXBlLT5tZXJnZV9zdGFnZSA9IE5V
TEw7DQogCX0NCisJY2xlYXJfYml0KElERVRBUEVfUElQRUxJTkVfRVJST1Is
ICZ0YXBlLT5mbGFncyk7DQogCXRhcGUtPmNocmRldl9kaXJlY3Rpb24gPSBp
ZGV0YXBlX2RpcmVjdGlvbl9ub25lOw0KIAkNCiAJaWYgKHRhcGUtPmZpcnN0
X3N0YWdlID09IE5VTEwpDQpAQCAtMzM2MSw5ICszNDExLDE0IEBADQogCQlp
ZGV0YXBlX3dhaXRfZm9yX3JlcXVlc3QoZHJpdmUsIHRhcGUtPmFjdGl2ZV9k
YXRhX3JlcXVlc3QpOw0KIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZ0YXBl
LT5zcGlubG9jaywgZmxhZ3MpOw0KIA0KLQljbnQgPSB0YXBlLT5ucl9zdGFn
ZXMgLSB0YXBlLT5ucl9wZW5kaW5nX3N0YWdlczsNCi0Jd2hpbGUgKHRhcGUt
PmZpcnN0X3N0YWdlICE9IE5VTEwpDQotCQlpZGV0YXBlX3JlbW92ZV9zdGFn
ZV9oZWFkIChkcml2ZSk7DQorCXdoaWxlICh0YXBlLT5maXJzdF9zdGFnZSAh
PSBOVUxMKSB7DQorCQlzdHJ1Y3QgcmVxdWVzdCAqcnFfcHRyID0gJnRhcGUt
PmZpcnN0X3N0YWdlLT5ycTsNCisNCisJCWNudCArPSBycV9wdHItPm5yX3Nl
Y3RvcnMgLSBycV9wdHItPmN1cnJlbnRfbnJfc2VjdG9yczsgDQorCQlpZiAo
cnFfcHRyLT5lcnJvcnMgPT0gSURFVEFQRV9FUlJPUl9GSUxFTUFSSykNCisJ
CQkrK2NudDsNCisJCWlkZXRhcGVfcmVtb3ZlX3N0YWdlX2hlYWQoZHJpdmUp
Ow0KKwl9DQogCXRhcGUtPm5yX3BlbmRpbmdfc3RhZ2VzID0gMDsNCiAJdGFw
ZS0+bWF4X3N0YWdlcyA9IHRhcGUtPm1pbl9waXBlbGluZTsNCiAJcmV0dXJu
IGNudDsNCkBAIC0zOTUxLDcgKzQwMDYsNyBAQA0KIAkJICovDQogCQlieXRl
c19yZWFkID0gaWRldGFwZV9xdWV1ZV9yd190YWlsIChkcml2ZSwgSURFVEFQ
RV9SRUFEX1JRLCAwLCB0YXBlLT5tZXJnZV9zdGFnZS0+YmgpOw0KIAkJaWYg
KGJ5dGVzX3JlYWQgPCAwKSB7DQotCQkJa2ZyZWUgKHRhcGUtPm1lcmdlX3N0
YWdlKTsNCisJCQlfX2lkZXRhcGVfa2ZyZWVfc3RhZ2UodGFwZS0+bWVyZ2Vf
c3RhZ2UpOw0KIAkJCXRhcGUtPm1lcmdlX3N0YWdlID0gTlVMTDsNCiAJCQl0
YXBlLT5jaHJkZXZfZGlyZWN0aW9uID0gaWRldGFwZV9kaXJlY3Rpb25fbm9u
ZTsNCiAJCQlyZXR1cm4gYnl0ZXNfcmVhZDsNCkBAIC0zOTYzLDcgKzQwMTgs
NyBAQA0KIAlycS5jbWQgPSBJREVUQVBFX1JFQURfUlE7DQogCXJxLnNlY3Rv
ciA9IHRhcGUtPmZpcnN0X2ZyYW1lX3Bvc2l0aW9uOw0KIAlycS5ucl9zZWN0
b3JzID0gcnEuY3VycmVudF9ucl9zZWN0b3JzID0gYmxvY2tzOw0KLQlpZiAo
IXRlc3RfYml0KElERVRBUEVfUElQRUxJTkVfRVJST1IsICZ0YXBlLT5mbGFn
cykgJiYgdGFwZS0+bnJfc3RhZ2VzIDw9IG1heF9zdGFnZXMpIHsNCisJaWYg
KCF0ZXN0X2JpdChJREVUQVBFX1BJUEVMSU5FX0VSUk9SLCAmdGFwZS0+Zmxh
Z3MpICYmIHRhcGUtPm5yX3N0YWdlcyA8IG1heF9zdGFnZXMpIHsNCiAJCW5l
d19zdGFnZSA9IGlkZXRhcGVfa21hbGxvY19zdGFnZSAodGFwZSk7DQogCQl3
aGlsZSAobmV3X3N0YWdlICE9IE5VTEwpIHsNCiAJCQluZXdfc3RhZ2UtPnJx
ID0gcnE7DQpAQCAtNDA3Myw2ICs0MTI4LDEyIEBADQogI2VuZGlmIC8qIElE
RVRBUEVfREVCVUdfTE9HICovDQogDQogCS8qDQorCSAqIElmIHdlIGFyZSBh
dCBhIGZpbGVtYXJrLCByZXR1cm4gYSByZWFkIGxlbmd0aCBvZiAwDQorCSAq
Lw0KKwlpZiAodGVzdF9iaXQoSURFVEFQRV9GSUxFTUFSSywgJnRhcGUtPmZs
YWdzKSkNCisJCXJldHVybiAwOw0KKw0KKwkvKg0KIAkgKiBXYWl0IGZvciB0
aGUgbmV4dCBsb2dpY2FsIGJsb2NrIHRvIGJlIGF2YWlsYWJsZSBhdCB0aGUg
aGVhZA0KIAkgKiBvZiB0aGUgcGlwZWxpbmUNCiAJICovDQpAQCAtNDA5OSwx
NCArNDE2MCw3IEBADQogCX0NCiAJaWYgKHJxX3B0ci0+ZXJyb3JzID09IElE
RVRBUEVfRVJST1JfRU9EKQ0KIAkJcmV0dXJuIDA7DQotCWlmIChycV9wdHIt
PmVycm9ycyA9PSBJREVUQVBFX0VSUk9SX0ZJTEVNQVJLKSB7DQotCQlpZGV0
YXBlX3N3aXRjaF9idWZmZXJzICh0YXBlLCB0YXBlLT5maXJzdF9zdGFnZSk7
DQotCQlzZXRfYml0IChJREVUQVBFX0ZJTEVNQVJLLCAmdGFwZS0+ZmxhZ3Mp
Ow0KLSNpZiBVU0VfSU9UUkFDRQ0KLQkJSU9fdHJhY2UoSU9fSURFVEFQRV9G
SUZPLCB0YXBlLT5waXBlbGluZV9oZWFkLCB0YXBlLT5idWZmZXJfaGVhZCwg
dGFwZS0+dGFwZV9oZWFkLCB0YXBlLT5taW5vcik7DQotI2VuZGlmDQotCQlj
YWxjdWxhdGVfc3BlZWRzKGRyaXZlKTsNCi0JfSBlbHNlIHsNCisJZWxzZSB7
DQogCQlpZGV0YXBlX3N3aXRjaF9idWZmZXJzICh0YXBlLCB0YXBlLT5maXJz
dF9zdGFnZSk7DQogCQlpZiAocnFfcHRyLT5lcnJvcnMgPT0gSURFVEFQRV9F
UlJPUl9HRU5FUkFMKSB7DQogI2lmIE9OU1RSRUFNX0RFQlVHDQpAQCAtNDEx
NCw3ICs0MTY4LDggQEANCiAJCQkJcHJpbnRrKEtFUk5fSU5GTyAiaWRlLXRh
cGU6IGVycm9yIGRldGVjdGVkLCBieXRlc19yZWFkICVkXG4iLCBieXRlc19y
ZWFkKTsNCiAjZW5kaWYNCiAJCX0NCi0JCWNsZWFyX2JpdCAoSURFVEFQRV9G
SUxFTUFSSywgJnRhcGUtPmZsYWdzKTsNCisJCWlmIChycV9wdHItPmVycm9y
cyA9PSBJREVUQVBFX0VSUk9SX0ZJTEVNQVJLKQ0KKwkJCXNldF9iaXQoSURF
VEFQRV9GSUxFTUFSSywgJnRhcGUtPmZsYWdzKTsNCiAJCXNwaW5fbG9ja19p
cnFzYXZlKCZ0YXBlLT5zcGlubG9jaywgZmxhZ3MpOw0KIAkJaWRldGFwZV9y
ZW1vdmVfc3RhZ2VfaGVhZCAoZHJpdmUpOw0KIAkJc3Bpbl91bmxvY2tfaXJx
cmVzdG9yZSgmdGFwZS0+c3BpbmxvY2ssIGZsYWdzKTsNCkBAIC00NDc4LDYg
KzQ1MzMsMTQgQEANCiAJCXRhcGUtPnJlc3RhcnRfc3BlZWRfY29udHJvbF9y
ZXEgPSAxOw0KIAkJcmV0dXJuIHJldHZhbDsNCiAJfQ0KKyANCisJaWYgKG10
X2NvdW50ID09IDApDQorCQlyZXR1cm4gMDsNCisJaWYgKE1UQlNGID09IG10
X29wIHx8IE1UQlNGTSA9PSBtdF9vcCkgew0KKwkJaWYgKCF0YXBlLT5jYXBh
YmlsaXRpZXMuc3ByZXYpDQorCQkJcmV0dXJuIC1FSU87DQorCQltdF9jb3Vu
dCA9IC0gbXRfY291bnQ7DQorCX0NCiANCiAJaWYgKHRhcGUtPmNocmRldl9k
aXJlY3Rpb24gPT0gaWRldGFwZV9kaXJlY3Rpb25fcmVhZCkgew0KIAkJLyoN
CkBAIC00NDg1LDI4ICs0NTQ4LDM2IEBADQogCQkgKglmaWxlbWFya3MuDQog
CQkgKi8NCiAJCXRhcGUtPm1lcmdlX3N0YWdlX3NpemUgPSAwOw0KLQkJY2xl
YXJfYml0IChJREVUQVBFX0ZJTEVNQVJLLCAmdGFwZS0+ZmxhZ3MpOw0KKwkJ
aWYgKHRlc3RfYW5kX2NsZWFyX2JpdChJREVUQVBFX0ZJTEVNQVJLLCAmdGFw
ZS0+ZmxhZ3MpKQ0KKwkJCSsrY291bnQ7DQogCQl3aGlsZSAodGFwZS0+Zmly
c3Rfc3RhZ2UgIT0gTlVMTCkgew0KLQkJCWlkZXRhcGVfd2FpdF9maXJzdF9z
dGFnZShkcml2ZSk7DQotCQkJaWYgKHRhcGUtPmZpcnN0X3N0YWdlLT5ycS5l
cnJvcnMgPT0gSURFVEFQRV9FUlJPUl9GSUxFTUFSSykNCi0JCQkJY291bnQr
KzsNCiAJCQlpZiAoY291bnQgPT0gbXRfY291bnQpIHsNCi0JCQkJc3dpdGNo
IChtdF9vcCkgew0KLQkJCQkJY2FzZSBNVEZTRjoNCi0JCQkJCQlzcGluX2xv
Y2tfaXJxc2F2ZSgmdGFwZS0+c3BpbmxvY2ssIGZsYWdzKTsNCi0JCQkJCQlp
ZGV0YXBlX3JlbW92ZV9zdGFnZV9oZWFkIChkcml2ZSk7DQotCQkJCQkJc3Bp
bl91bmxvY2tfaXJxcmVzdG9yZSgmdGFwZS0+c3BpbmxvY2ssIGZsYWdzKTsN
Ci0JCQkJCWNhc2UgTVRGU0ZNOg0KLQkJCQkJCXJldHVybiAoMCk7DQotCQkJ
CQlkZWZhdWx0Og0KLQkJCQkJCWJyZWFrOw0KLQkJCQl9DQorCQkJCWlmICht
dF9vcCA9PSBNVEZTRk0pDQorCQkJCQlzZXRfYml0KElERVRBUEVfRklMRU1B
UkssICZ0YXBlLT5mbGFncyk7DQorCQkJCXJldHVybiAwOw0KIAkJCX0NCiAJ
CQlzcGluX2xvY2tfaXJxc2F2ZSgmdGFwZS0+c3BpbmxvY2ssIGZsYWdzKTsN
CisJCQlpZiAodGFwZS0+Zmlyc3Rfc3RhZ2UgPT0gdGFwZS0+YWN0aXZlX3N0
YWdlKSB7DQorCQkJCS8qDQorCQkJCSAqCVdlIGhhdmUgcmVhY2hlZCB0aGUg
YWN0aXZlIHN0YWdlIGluIHRoZSByZWFkIHBpcGVsaW5lLg0KKwkJCQkgKglU
aGVyZSBpcyBubyBwb2ludCBpbiBhbGxvd2luZyB0aGUgZHJpdmUgdG8gY29u
dGludWUNCisJCQkJICoJcmVhZGluZyBhbnkgZmFydGhlciwgc28gd2Ugc3Rv
cCB0aGUgcGlwZWxpbmUuDQorCQkJCSAqDQorCQkJCSAqCVRoaXMgc2VjdGlv
biBzaG91bGQgYmUgbW92ZWQgdG8gYSBzZXBhcmF0ZSBzdWJyb3V0aW5lLA0K
KwkJCQkgKgliZWNhdXNlIGEgc2ltaWxhciBmdW5jdGlvbiBpcyBwZXJmb3Jt
ZWQgaW4NCisJCQkJICoJX19pZGV0YXBlX2Rpc2NhcmRfcmVhZF9waXBlbGlu
ZSgpLCBmb3IgZXhhbXBsZS4NCisJCQkJICovDQorCQkJCXRhcGUtPm5leHRf
c3RhZ2UgPSBOVUxMOw0KKwkJCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZ0
YXBlLT5zcGlubG9jaywgZmxhZ3MpOw0KKwkJCQlpZGV0YXBlX3dhaXRfZmly
c3Rfc3RhZ2UoZHJpdmUpOw0KKwkJCQl0YXBlLT5uZXh0X3N0YWdlID0gdGFw
ZS0+Zmlyc3Rfc3RhZ2UtPm5leHQ7DQorCQkJfSBlbHNlDQorCQkJCXNwaW5f
dW5sb2NrX2lycXJlc3RvcmUoJnRhcGUtPnNwaW5sb2NrLCBmbGFncyk7DQor
CQkJaWYgKHRhcGUtPmZpcnN0X3N0YWdlLT5ycS5lcnJvcnMgPT0gSURFVEFQ
RV9FUlJPUl9GSUxFTUFSSykNCisJCQkJKytjb3VudDsNCiAJCQlpZGV0YXBl
X3JlbW92ZV9zdGFnZV9oZWFkIChkcml2ZSk7DQotCQkJc3Bpbl91bmxvY2tf
aXJxcmVzdG9yZSgmdGFwZS0+c3BpbmxvY2ssIGZsYWdzKTsNCiAJCX0NCi0J
CWlkZXRhcGVfZGlzY2FyZF9yZWFkX3BpcGVsaW5lIChkcml2ZSwgMSk7DQor
CQlpZGV0YXBlX2Rpc2NhcmRfcmVhZF9waXBlbGluZShkcml2ZSwgMCk7DQog
CX0NCiANCiAJLyoNCkBAIC00NTE1LDI1ICs0NTg2LDE3IEBADQogCSAqLw0K
IAlzd2l0Y2ggKG10X29wKSB7DQogCQljYXNlIE1URlNGOg0KKwkJY2FzZSBN
VEJTRjoNCiAJCQlpZGV0YXBlX2NyZWF0ZV9zcGFjZV9jbWQgKCZwYyxtdF9j
b3VudC1jb3VudCxJREVUQVBFX1NQQUNFX09WRVJfRklMRU1BUkspOw0KIAkJ
CXJldHVybiAoaWRldGFwZV9xdWV1ZV9wY190YWlsIChkcml2ZSwgJnBjKSk7
DQogCQljYXNlIE1URlNGTToNCi0JCQlpZiAoIXRhcGUtPmNhcGFiaWxpdGll
cy5zcHJldikNCi0JCQkJcmV0dXJuICgtRUlPKTsNCi0JCQlyZXR2YWwgPSBp
ZGV0YXBlX3NwYWNlX292ZXJfZmlsZW1hcmtzIChkcml2ZSwgTVRGU0YsIG10
X2NvdW50LWNvdW50KTsNCi0JCQlpZiAocmV0dmFsKSByZXR1cm4gKHJldHZh
bCk7DQotCQkJcmV0dXJuIChpZGV0YXBlX3NwYWNlX292ZXJfZmlsZW1hcmtz
IChkcml2ZSwgTVRCU0YsIDEpKTsNCi0JCWNhc2UgTVRCU0Y6DQotCQkJaWYg
KCF0YXBlLT5jYXBhYmlsaXRpZXMuc3ByZXYpDQotCQkJCXJldHVybiAoLUVJ
Tyk7DQotCQkJaWRldGFwZV9jcmVhdGVfc3BhY2VfY21kICgmcGMsLShtdF9j
b3VudCtjb3VudCksSURFVEFQRV9TUEFDRV9PVkVSX0ZJTEVNQVJLKTsNCi0J
CQlyZXR1cm4gKGlkZXRhcGVfcXVldWVfcGNfdGFpbCAoZHJpdmUsICZwYykp
Ow0KIAkJY2FzZSBNVEJTRk06DQogCQkJaWYgKCF0YXBlLT5jYXBhYmlsaXRp
ZXMuc3ByZXYpDQogCQkJCXJldHVybiAoLUVJTyk7DQotCQkJcmV0dmFsID0g
aWRldGFwZV9zcGFjZV9vdmVyX2ZpbGVtYXJrcyAoZHJpdmUsIE1UQlNGLCBt
dF9jb3VudCtjb3VudCk7DQorCQkJcmV0dmFsID0gaWRldGFwZV9zcGFjZV9v
dmVyX2ZpbGVtYXJrcyhkcml2ZSwgTVRGU0YsIG10X2NvdW50LWNvdW50KTsN
CiAJCQlpZiAocmV0dmFsKSByZXR1cm4gKHJldHZhbCk7DQotCQkJcmV0dXJu
IChpZGV0YXBlX3NwYWNlX292ZXJfZmlsZW1hcmtzIChkcml2ZSwgTVRGU0Ys
IDEpKTsNCisJCQljb3VudCA9IChNVEJTRk0gPT0gbXRfb3AgPyAxIDogLTEp
Ow0KKwkJCXJldHVybiAoaWRldGFwZV9zcGFjZV9vdmVyX2ZpbGVtYXJrcyhk
cml2ZSwgTVRGU0YsIGNvdW50KSk7DQogCQlkZWZhdWx0Og0KIAkJCXByaW50
ayAoS0VSTl9FUlIgImlkZS10YXBlOiBNVElPIG9wZXJhdGlvbiAlZCBub3Qg
c3VwcG9ydGVkXG4iLG10X29wKTsNCiAJCQlyZXR1cm4gKC1FSU8pOw0KQEAg
LTQ4NjIsNyArNDkyNSw3IEBADQogCQkgKi8NCiAJCXJldHZhbCA9IGlkZXRh
cGVfcXVldWVfcndfdGFpbCAoZHJpdmUsIElERVRBUEVfV1JJVEVfUlEsIDAs
IHRhcGUtPm1lcmdlX3N0YWdlLT5iaCk7DQogCQlpZiAocmV0dmFsIDwgMCkg
ew0KLQkJCWtmcmVlICh0YXBlLT5tZXJnZV9zdGFnZSk7DQorCQkJX19pZGV0
YXBlX2tmcmVlX3N0YWdlKHRhcGUtPm1lcmdlX3N0YWdlKTsNCiAJCQl0YXBl
LT5tZXJnZV9zdGFnZSA9IE5VTEw7DQogCQkJdGFwZS0+Y2hyZGV2X2RpcmVj
dGlvbiA9IGlkZXRhcGVfZGlyZWN0aW9uX25vbmU7DQogCQkJcmV0dXJuIHJl
dHZhbDsNCkBAIC01NDM2LDkgKzU0OTksMTEgQEANCiAJCU1PRF9ERUNfVVNF
X0NPVU5UOw0KIAkJcmV0dXJuIC1FQlVTWTsNCiAJfQ0KLQlpZGV0YXBlX3Jl
YWRfcG9zaXRpb24oZHJpdmUpOw0KKwlpZiAodGFwZS0+b25zdHJlYW0pDQor
CQlpZGV0YXBlX3JlYWRfcG9zaXRpb24oZHJpdmUpOw0KIAlNT0RfREVDX1VT
RV9DT1VOVDsNCi0JY2xlYXJfYml0IChJREVUQVBFX1BJUEVMSU5FX0VSUk9S
LCAmdGFwZS0+ZmxhZ3MpOw0KKwlpZiAodGFwZS0+Y2hyZGV2X2RpcmVjdGlv
biAhPSBpZGV0YXBlX2RpcmVjdGlvbl9yZWFkKQ0KKwkJY2xlYXJfYml0KElE
RVRBUEVfUElQRUxJTkVfRVJST1IsICZ0YXBlLT5mbGFncyk7DQogDQogCWlm
ICh0YXBlLT5jaHJkZXZfZGlyZWN0aW9uID09IGlkZXRhcGVfZGlyZWN0aW9u
X25vbmUpIHsNCiAJCU1PRF9JTkNfVVNFX0NPVU5UOw0KQEAgLTU1MTEsMTAg
KzU1NzYsMTEgQEANCiAJaWYgKG1pbm9yIDwgMTI4KQ0KIAkJKHZvaWQpIGlk
ZXRhcGVfcmV3aW5kX3RhcGUgKGRyaXZlKTsNCiAJaWYgKHRhcGUtPmNocmRl
dl9kaXJlY3Rpb24gPT0gaWRldGFwZV9kaXJlY3Rpb25fbm9uZSkgew0KLQkJ
aWYgKHRhcGUtPmRvb3JfbG9ja2VkICE9IERPT1JfRVhQTElDSVRMWV9MT0NL
RUQpIHsNCi0JCQlpZiAoaWRldGFwZV9jcmVhdGVfcHJldmVudF9jbWQoZHJp
dmUsICZwYywgMCkpDQorCQlpZiAodGFwZS0+ZG9vcl9sb2NrZWQgPT0gRE9P
Ul9MT0NLRUQpIHsNCisJCQlpZiAoaWRldGFwZV9jcmVhdGVfcHJldmVudF9j
bWQoZHJpdmUsICZwYywgMCkpIHsNCiAJCQkJaWYgKCFpZGV0YXBlX3F1ZXVl
X3BjX3RhaWwgKGRyaXZlLCAmcGMpKQ0KIAkJCQkJdGFwZS0+ZG9vcl9sb2Nr
ZWQgPSBET09SX1VOTE9DS0VEOw0KKwkJCX0NCiAJCX0NCiAJCU1PRF9ERUNf
VVNFX0NPVU5UOw0KIAl9DQpAQCAtNTU0OCwzNCArNTYxNCwzNCBAQA0KIAlw
cmludGsgKEtFUk5fSU5GTyAiaWRlLXRhcGU6IER1bXBpbmcgQVRBUEkgSWRl
bnRpZnkgRGV2aWNlIHRhcGUgcGFyYW1ldGVyc1xuIik7DQogCXByaW50ayAo
S0VSTl9JTkZPICJpZGUtdGFwZTogUHJvdG9jb2wgVHlwZTogIik7DQogCXN3
aXRjaCAoZ2N3LnByb3RvY29sKSB7DQotCQljYXNlIDA6IGNhc2UgMTogcHJp
bnRrIChLRVJOX0lORk8gIkFUQVxuIik7YnJlYWs7DQotCQljYXNlIDI6CXBy
aW50ayAoS0VSTl9JTkZPICJBVEFQSVxuIik7YnJlYWs7DQotCQljYXNlIDM6
IHByaW50ayAoS0VSTl9JTkZPICJSZXNlcnZlZCAoVW5rbm93biB0byBpZGUt
dGFwZSlcbiIpO2JyZWFrOw0KKwkJY2FzZSAwOiBjYXNlIDE6IHByaW50ayAo
IkFUQVxuIik7YnJlYWs7DQorCQljYXNlIDI6CXByaW50ayAoIkFUQVBJXG4i
KTticmVhazsNCisJCWNhc2UgMzogcHJpbnRrICgiUmVzZXJ2ZWQgKFVua25v
d24gdG8gaWRlLXRhcGUpXG4iKTticmVhazsNCiAJfQ0KIAlwcmludGsgKEtF
Uk5fSU5GTyAiaWRlLXRhcGU6IERldmljZSBUeXBlOiAleCAtICIsZ2N3LmRl
dmljZV90eXBlKTsJDQogCXN3aXRjaCAoZ2N3LmRldmljZV90eXBlKSB7DQot
CQljYXNlIDA6IHByaW50ayAoS0VSTl9JTkZPICJEaXJlY3QtYWNjZXNzIERl
dmljZVxuIik7YnJlYWs7DQotCQljYXNlIDE6IHByaW50ayAoS0VSTl9JTkZP
ICJTdHJlYW1pbmcgVGFwZSBEZXZpY2VcbiIpO2JyZWFrOw0KLQkJY2FzZSAy
OiBjYXNlIDM6IGNhc2UgNDogcHJpbnRrIChLRVJOX0lORk8gIlJlc2VydmVk
XG4iKTticmVhazsNCi0JCWNhc2UgNTogcHJpbnRrIChLRVJOX0lORk8gIkNE
LVJPTSBEZXZpY2VcbiIpO2JyZWFrOw0KLQkJY2FzZSA2OiBwcmludGsgKEtF
Uk5fSU5GTyAiUmVzZXJ2ZWRcbiIpOw0KLQkJY2FzZSA3OiBwcmludGsgKEtF
Uk5fSU5GTyAiT3B0aWNhbCBtZW1vcnkgRGV2aWNlXG4iKTticmVhazsNCi0J
CWNhc2UgMHgxZjogcHJpbnRrIChLRVJOX0lORk8gIlVua25vd24gb3Igbm8g
RGV2aWNlIHR5cGVcbiIpO2JyZWFrOw0KLQkJZGVmYXVsdDogcHJpbnRrIChL
RVJOX0lORk8gIlJlc2VydmVkXG4iKTsNCisJCWNhc2UgMDogcHJpbnRrICgi
RGlyZWN0LWFjY2VzcyBEZXZpY2VcbiIpO2JyZWFrOw0KKwkJY2FzZSAxOiBw
cmludGsgKCJTdHJlYW1pbmcgVGFwZSBEZXZpY2VcbiIpO2JyZWFrOw0KKwkJ
Y2FzZSAyOiBjYXNlIDM6IGNhc2UgNDogcHJpbnRrICgiUmVzZXJ2ZWRcbiIp
O2JyZWFrOw0KKwkJY2FzZSA1OiBwcmludGsgKCJDRC1ST00gRGV2aWNlXG4i
KTticmVhazsNCisJCWNhc2UgNjogcHJpbnRrICgiUmVzZXJ2ZWRcbiIpOw0K
KwkJY2FzZSA3OiBwcmludGsgKCJPcHRpY2FsIG1lbW9yeSBEZXZpY2VcbiIp
O2JyZWFrOw0KKwkJY2FzZSAweDFmOiBwcmludGsgKCJVbmtub3duIG9yIG5v
IERldmljZSB0eXBlXG4iKTticmVhazsNCisJCWRlZmF1bHQ6IHByaW50ayAo
IlJlc2VydmVkXG4iKTsNCiAJfQ0KIAlwcmludGsgKEtFUk5fSU5GTyAiaWRl
LXRhcGU6IFJlbW92YWJsZTogJXMiLGdjdy5yZW1vdmFibGUgPyAiWWVzXG4i
OiJOb1xuIik7CQ0KIAlwcmludGsgKEtFUk5fSU5GTyAiaWRlLXRhcGU6IENv
bW1hbmQgUGFja2V0IERSUSBUeXBlOiAiKTsNCiAJc3dpdGNoIChnY3cuZHJx
X3R5cGUpIHsNCi0JCWNhc2UgMDogcHJpbnRrIChLRVJOX0lORk8gIk1pY3Jv
cHJvY2Vzc29yIERSUVxuIik7YnJlYWs7DQotCQljYXNlIDE6IHByaW50ayAo
S0VSTl9JTkZPICJJbnRlcnJ1cHQgRFJRXG4iKTticmVhazsNCi0JCWNhc2Ug
MjogcHJpbnRrIChLRVJOX0lORk8gIkFjY2VsZXJhdGVkIERSUVxuIik7YnJl
YWs7DQotCQljYXNlIDM6IHByaW50ayAoS0VSTl9JTkZPICJSZXNlcnZlZFxu
Iik7YnJlYWs7DQorCQljYXNlIDA6IHByaW50ayAoIk1pY3JvcHJvY2Vzc29y
IERSUVxuIik7YnJlYWs7DQorCQljYXNlIDE6IHByaW50ayAoIkludGVycnVw
dCBEUlFcbiIpO2JyZWFrOw0KKwkJY2FzZSAyOiBwcmludGsgKCJBY2NlbGVy
YXRlZCBEUlFcbiIpO2JyZWFrOw0KKwkJY2FzZSAzOiBwcmludGsgKCJSZXNl
cnZlZFxuIik7YnJlYWs7DQogCX0NCiAJcHJpbnRrIChLRVJOX0lORk8gImlk
ZS10YXBlOiBDb21tYW5kIFBhY2tldCBTaXplOiAiKTsNCiAJc3dpdGNoIChn
Y3cucGFja2V0X3NpemUpIHsNCi0JCWNhc2UgMDogcHJpbnRrIChLRVJOX0lO
Rk8gIjEyIGJ5dGVzXG4iKTticmVhazsNCi0JCWNhc2UgMTogcHJpbnRrIChL
RVJOX0lORk8gIjE2IGJ5dGVzXG4iKTticmVhazsNCi0JCWRlZmF1bHQ6IHBy
aW50ayAoS0VSTl9JTkZPICJSZXNlcnZlZFxuIik7YnJlYWs7DQorCQljYXNl
IDA6IHByaW50ayAoIjEyIGJ5dGVzXG4iKTticmVhazsNCisJCWNhc2UgMTog
cHJpbnRrICgiMTYgYnl0ZXNcbiIpO2JyZWFrOw0KKwkJZGVmYXVsdDogcHJp
bnRrICgiUmVzZXJ2ZWRcbiIpO2JyZWFrOw0KIAl9DQogCXByaW50ayAoS0VS
Tl9JTkZPICJpZGUtdGFwZTogTW9kZWw6ICUuNDBzXG4iLGlkLT5tb2RlbCk7
DQogCXByaW50ayAoS0VSTl9JTkZPICJpZGUtdGFwZTogRmlybXdhcmUgUmV2
aXNpb246ICUuOHNcbiIsaWQtPmZ3X3Jldik7DQpAQCAtNTU5MSw0NCArNTY1
Nyw0NCBAQA0KIAlwcmludGsgKEtFUk5fSU5GTyAiaWRlLXRhcGU6IFNpbmds
ZSBXb3JkIERNQSBzdXBwb3J0ZWQgbW9kZXM6ICIpOw0KIAlmb3IgKGk9MCxt
YXNrPTE7aTw4O2krKyxtYXNrPW1hc2sgPDwgMSkgew0KIAkJaWYgKGlkLT5k
bWFfMXdvcmQgJiBtYXNrKQ0KLQkJCXByaW50ayAoS0VSTl9JTkZPICIlZCAi
LGkpOw0KKwkJCXByaW50ayAoIiVkICIsaSk7DQogCQlpZiAoaWQtPmRtYV8x
d29yZCAmIChtYXNrIDw8IDgpKQ0KLQkJCXByaW50ayAoS0VSTl9JTkZPICIo
YWN0aXZlKSAiKTsNCisJCQlwcmludGsgKCIoYWN0aXZlKSAiKTsNCiAJfQ0K
LQlwcmludGsgKEtFUk5fSU5GTyAiXG4iKTsNCisJcHJpbnRrICgiXG4iKTsN
CiAJcHJpbnRrIChLRVJOX0lORk8gImlkZS10YXBlOiBNdWx0aSBXb3JkIERN
QSBzdXBwb3J0ZWQgbW9kZXM6ICIpOw0KIAlmb3IgKGk9MCxtYXNrPTE7aTw4
O2krKyxtYXNrPW1hc2sgPDwgMSkgew0KIAkJaWYgKGlkLT5kbWFfbXdvcmQg
JiBtYXNrKQ0KLQkJCXByaW50ayAoS0VSTl9JTkZPICIlZCAiLGkpOw0KKwkJ
CXByaW50ayAoIiVkICIsaSk7DQogCQlpZiAoaWQtPmRtYV9td29yZCAmICht
YXNrIDw8IDgpKQ0KLQkJCXByaW50ayAoS0VSTl9JTkZPICIoYWN0aXZlKSAi
KTsNCisJCQlwcmludGsgKCIoYWN0aXZlKSAiKTsNCiAJfQ0KLQlwcmludGsg
KEtFUk5fSU5GTyAiXG4iKTsNCisJcHJpbnRrICgiXG4iKTsNCiAJaWYgKGlk
LT5maWVsZF92YWxpZCAmIDB4MDAwMikgew0KIAkJcHJpbnRrIChLRVJOX0lO
Rk8gImlkZS10YXBlOiBFbmhhbmNlZCBQSU8gTW9kZXM6ICVzXG4iLGlkLT5l
aWRlX3Bpb19tb2RlcyAmIDEgPyAiTW9kZSAzIjoiTm9uZSIpOw0KIAkJcHJp
bnRrIChLRVJOX0lORk8gImlkZS10YXBlOiBNaW5pbXVtIE11bHRpLXdvcmQg
RE1BIGN5Y2xlIHBlciB3b3JkOiAiKTsNCiAJCWlmIChpZC0+ZWlkZV9kbWFf
bWluID09IDApDQotCQkJcHJpbnRrIChLRVJOX0lORk8gIk5vdCBzdXBwb3J0
ZWRcbiIpOw0KKwkJCXByaW50ayAoIk5vdCBzdXBwb3J0ZWRcbiIpOw0KIAkJ
ZWxzZQ0KLQkJCXByaW50ayAoS0VSTl9JTkZPICIlZCBuc1xuIixpZC0+ZWlk
ZV9kbWFfbWluKTsNCisJCQlwcmludGsgKCIlZCBuc1xuIixpZC0+ZWlkZV9k
bWFfbWluKTsNCiANCiAJCXByaW50ayAoS0VSTl9JTkZPICJpZGUtdGFwZTog
TWFudWZhY3R1cmVyXCdzIFJlY29tbWVuZGVkIE11bHRpLXdvcmQgY3ljbGU6
ICIpOw0KIAkJaWYgKGlkLT5laWRlX2RtYV90aW1lID09IDApDQotCQkJcHJp
bnRrIChLRVJOX0lORk8gIk5vdCBzdXBwb3J0ZWRcbiIpOw0KKwkJCXByaW50
ayAoIk5vdCBzdXBwb3J0ZWRcbiIpOw0KIAkJZWxzZQ0KLQkJCXByaW50ayAo
S0VSTl9JTkZPICIlZCBuc1xuIixpZC0+ZWlkZV9kbWFfdGltZSk7DQorCQkJ
cHJpbnRrICgiJWQgbnNcbiIsaWQtPmVpZGVfZG1hX3RpbWUpOw0KIA0KIAkJ
cHJpbnRrIChLRVJOX0lORk8gImlkZS10YXBlOiBNaW5pbXVtIFBJTyBjeWNs
ZSB3aXRob3V0IElPUkRZOiAiKTsNCiAJCWlmIChpZC0+ZWlkZV9waW8gPT0g
MCkNCi0JCQlwcmludGsgKEtFUk5fSU5GTyAiTm90IHN1cHBvcnRlZFxuIik7
DQorCQkJcHJpbnRrICgiTm90IHN1cHBvcnRlZFxuIik7DQogCQllbHNlDQot
CQkJcHJpbnRrIChLRVJOX0lORk8gIiVkIG5zXG4iLGlkLT5laWRlX3Bpbyk7
DQorCQkJcHJpbnRrICgiJWQgbnNcbiIsaWQtPmVpZGVfcGlvKTsNCiANCiAJ
CXByaW50ayAoS0VSTl9JTkZPICJpZGUtdGFwZTogTWluaW11bSBQSU8gY3lj
bGUgd2l0aCBJT1JEWTogIik7DQogCQlpZiAoaWQtPmVpZGVfcGlvX2lvcmR5
ID09IDApDQotCQkJcHJpbnRrIChLRVJOX0lORk8gIk5vdCBzdXBwb3J0ZWRc
biIpOw0KKwkJCXByaW50ayAoIk5vdCBzdXBwb3J0ZWRcbiIpOw0KIAkJZWxz
ZQ0KLQkJCXByaW50ayAoS0VSTl9JTkZPICIlZCBuc1xuIixpZC0+ZWlkZV9w
aW9faW9yZHkpOw0KKwkJCXByaW50ayAoIiVkIG5zXG4iLGlkLT5laWRlX3Bp
b19pb3JkeSk7DQogCQkNCiAJfSBlbHNlDQogCQlwcmludGsgKEtFUk5fSU5G
TyAiaWRlLXRhcGU6IEFjY29yZGluZyB0byB0aGUgZGV2aWNlLCBmaWVsZHMg
NjQtNzAgYXJlIG5vdCB2YWxpZC5cbiIpOw0KQEAgLTU5MzcsOSArNjAwMyw5
IEBADQogICoJCQlkcml2ZQlzZXR0aW5nIG5hbWUJcmVhZC93cml0ZQlpb2N0
bAlpb2N0bAkJZGF0YSB0eXBlCW1pbgkJCW1heAkJCW11bF9mYWN0b3IJCQlk
aXZfZmFjdG9yCQkJZGF0YSBwb2ludGVyCQkJCXNldCBmdW5jdGlvbg0KICAq
Lw0KIAlpZGVfYWRkX3NldHRpbmcoZHJpdmUsCSJidWZmZXIiLAlTRVRUSU5H
X1JFQUQsCS0xLAktMSwJCVRZUEVfU0hPUlQsCTAsCQkJMHhmZmZmLAkJCTEs
CQkJCTIsCQkJCSZ0YXBlLT5jYXBhYmlsaXRpZXMuYnVmZmVyX3NpemUsCU5V
TEwpOw0KLQlpZGVfYWRkX3NldHRpbmcoZHJpdmUsCSJwaXBlbGluZV9taW4i
LAlTRVRUSU5HX1JXLAktMSwJLTEsCQlUWVBFX0lOVCwJMiwJCQkweGZmZmYs
CQkJdGFwZS0+c3RhZ2Vfc2l6ZSAvIDEwMjQsCTEsCQkJCSZ0YXBlLT5taW5f
cGlwZWxpbmUsCQkJTlVMTCk7DQotCWlkZV9hZGRfc2V0dGluZyhkcml2ZSwJ
InBpcGVsaW5lIiwJU0VUVElOR19SVywJLTEsCS0xLAkJVFlQRV9JTlQsCTIs
CQkJMHhmZmZmLAkJCXRhcGUtPnN0YWdlX3NpemUgLyAxMDI0LAkxLAkJCQkm
dGFwZS0+bWF4X3N0YWdlcywJCQlOVUxMKTsNCi0JaWRlX2FkZF9zZXR0aW5n
KGRyaXZlLAkicGlwZWxpbmVfbWF4IiwJU0VUVElOR19SVywJLTEsCS0xLAkJ
VFlQRV9JTlQsCTIsCQkJMHhmZmZmLAkJCXRhcGUtPnN0YWdlX3NpemUgLyAx
MDI0LAkxLAkJCQkmdGFwZS0+bWF4X3BpcGVsaW5lLAkJCU5VTEwpOw0KKwlp
ZGVfYWRkX3NldHRpbmcoZHJpdmUsCSJwaXBlbGluZV9taW4iLAlTRVRUSU5H
X1JXLAktMSwJLTEsCQlUWVBFX0lOVCwJMSwJCQkweGZmZmYsCQkJdGFwZS0+
c3RhZ2Vfc2l6ZSAvIDEwMjQsCTEsCQkJCSZ0YXBlLT5taW5fcGlwZWxpbmUs
CQkJTlVMTCk7DQorCWlkZV9hZGRfc2V0dGluZyhkcml2ZSwJInBpcGVsaW5l
IiwJU0VUVElOR19SVywJLTEsCS0xLAkJVFlQRV9JTlQsCTEsCQkJMHhmZmZm
LAkJCXRhcGUtPnN0YWdlX3NpemUgLyAxMDI0LAkxLAkJCQkmdGFwZS0+bWF4
X3N0YWdlcywJCQlOVUxMKTsNCisJaWRlX2FkZF9zZXR0aW5nKGRyaXZlLAki
cGlwZWxpbmVfbWF4IiwJU0VUVElOR19SVywJLTEsCS0xLAkJVFlQRV9JTlQs
CTEsCQkJMHhmZmZmLAkJCXRhcGUtPnN0YWdlX3NpemUgLyAxMDI0LAkxLAkJ
CQkmdGFwZS0+bWF4X3BpcGVsaW5lLAkJCU5VTEwpOw0KIAlpZGVfYWRkX3Nl
dHRpbmcoZHJpdmUsCSJwaXBlbGluZV91c2VkIixTRVRUSU5HX1JFQUQsCS0x
LAktMSwJCVRZUEVfSU5ULAkwLAkJCTB4ZmZmZiwJCQl0YXBlLT5zdGFnZV9z
aXplIC8gMTAyNCwJMSwJCQkJJnRhcGUtPm5yX3N0YWdlcywJCQlOVUxMKTsN
CiAJaWRlX2FkZF9zZXR0aW5nKGRyaXZlLAkicGlwZWxpbmVfcGVuZGluZyIs
U0VUVElOR19SRUFELC0xLAktMSwJCVRZUEVfSU5ULAkwLAkJCTB4ZmZmZiwJ
CQl0YXBlLT5zdGFnZV9zaXplIC8gMTAyNCwJMSwJCQkJJnRhcGUtPm5yX3Bl
bmRpbmdfc3RhZ2VzLAkJTlVMTCk7DQogCWlkZV9hZGRfc2V0dGluZyhkcml2
ZSwJInNwZWVkIiwJU0VUVElOR19SRUFELAktMSwJLTEsCQlUWVBFX1NIT1JU
LAkwLAkJCTB4ZmZmZiwJCQkxLAkJCQkxLAkJCQkmdGFwZS0+Y2FwYWJpbGl0
aWVzLnNwZWVkLAkJTlVMTCk7DQpAQCAtNjA1NCw4ICs2MTIwLDExIEBADQog
CXNpX21lbWluZm8oJnNpKTsNCiAJaWYgKCB0YXBlLT5tYXhfc3RhZ2VzICog
dGFwZS0+c3RhZ2Vfc2l6ZSA+IHNpLnRvdGFscmFtICogc2kubWVtX3VuaXQg
LyAxMCkNCiAJCXRhcGUtPm1heF9zdGFnZXMgPSBzaS50b3RhbHJhbSAqIHNp
Lm1lbV91bml0IC8gKDEwICogdGFwZS0+c3RhZ2Vfc2l6ZSk7DQotCXRhcGUt
Pm1pbl9waXBlbGluZSA9IHRhcGUtPm1heF9zdGFnZXM7DQotCXRhcGUtPm1h
eF9waXBlbGluZSA9IHRhcGUtPm1heF9zdGFnZXMgKiAyOw0KKwl0YXBlLT5t
YXhfc3RhZ2VzICAgPSBJREVfTUlOKHRhcGUtPm1heF9zdGFnZXMsIElERVRB
UEVfTUFYX1BJUEVMSU5FX1NUQUdFUyk7DQorCXRhcGUtPm1pbl9waXBlbGlu
ZSA9IElERV9NSU4odGFwZS0+bWF4X3N0YWdlcywgSURFVEFQRV9NSU5fUElQ
RUxJTkVfU1RBR0VTKTsNCisJdGFwZS0+bWF4X3BpcGVsaW5lID0gSURFX01J
Tih0YXBlLT5tYXhfc3RhZ2VzICogMiwgSURFVEFQRV9NQVhfUElQRUxJTkVf
U1RBR0VTKTsNCisJaWYgKHRhcGUtPm1heF9zdGFnZXMgPT0gMCkNCisJCXRh
cGUtPm1heF9zdGFnZXMgPSB0YXBlLT5taW5fcGlwZWxpbmUgPSB0YXBlLT5t
YXhfcGlwZWxpbmUgPSAxOw0KIA0KIAl0MSA9ICh0YXBlLT5zdGFnZV9zaXpl
ICogSFopIC8gKHNwZWVkICogMTAwMCk7DQogCXRtaWQgPSAodGFwZS0+Y2Fw
YWJpbGl0aWVzLmJ1ZmZlcl9zaXplICogMzIgKiBIWikgLyAoc3BlZWQgKiAx
MjUpOw0K
---2084555674-1231429211-1036260985=:1124
Content-Type: TEXT/PLAIN; charset=US-ASCII; name="ide-tape.c.patch-2.5.44"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.LNX.4.33L2.0211021316251.1124@ida.rowland.org>
Content-Description: ide-tape patch for Linux 2.5.44
Content-Disposition: attachment; filename="ide-tape.c.patch-2.5.44"

LS0tIGxpbnV4L2RyaXZlcnMvaWRlL2lkZS10YXBlLmMub3JpZwlUaHUgT2N0
IDE3IDE1OjE0OjUwIDIwMDINCisrKyBsaW51eC9kcml2ZXJzL2lkZS9pZGUt
dGFwZS5jCVRodSBPY3QgMTcgMTU6MTU6NDEgMjAwMg0KQEAgLTEsNSArMSw1
IEBADQogLyoNCi0gKiBsaW51eC9kcml2ZXJzL2lkZS9pZGUtdGFwZS5jCQlW
ZXJzaW9uIDEuMTdhCUphbiwgMjAwMQ0KKyAqIGxpbnV4L2RyaXZlcnMvaWRl
L2lkZS10YXBlLmMJCVZlcnNpb24gMS4xN2IJT2N0LCAyMDAyDQogICoNCiAg
KiBDb3B5cmlnaHQgKEMpIDE5OTUgLSAxOTk5IEdhZGkgT3htYW4gPGdhZGlv
QG5ldHZpc2lvbi5uZXQuaWw+DQogICoNCkBAIC0yOTEsNiArMjkxLDI4IEBA
DQogICogVmVyIDEuMTdhIEFwciAyMDAxIFdpbGxlbSBSaWVkZSBvc3N0QHJp
ZWRlLm9yZw0KICAqIAkJCS0gR2V0IGRyaXZlJ3MgYWN0dWFsIGJsb2NrIHNp
emUgZnJvbSBtb2RlIHNlbnNlIGJsb2NrIGRlc2NyaXB0b3INCiAgKiAJCQkt
IExpbWl0IHNpemUgb2YgcGlwZWxpbmUNCisgKiBWZXIgMS4xN2IgT2N0IDIw
MDIgICBBbGFuIFN0ZXJuIDxzdGVybkByb3dsYW5kLmhhcnZhcmQuZWR1Pg0K
KyAqCQkJQ2hhbmdlZCBJREVUQVBFX01JTl9QSVBFTElORV9TVEFHRVMgdG8g
MSBhbmQgYWN0dWFsbHkgdXNlZA0KKyAqCQkJIGl0IGluIHRoZSBjb2RlIQ0K
KyAqCQkJQWN0dWFsbHkgcmVtb3ZlZCBhYm9ydGVkIHN0YWdlcyBpbiBpZGV0
YXBlX2Fib3J0X3BpcGVsaW5lDQorICoJCQkgaW5zdGVhZCBvZiBqdXN0IGNo
YW5naW5nIHRoZSBjb21tYW5kIGNvZGUuDQorICoJCQlNYWRlIHRoZSB0cmFu
c2ZlciBieXRlIGNvdW50IGZvciBSZXF1ZXN0IFNlbnNlIGVxdWFsIHRvIHRo
ZQ0KKyAqCQkJIGFjdHVhbCBsZW5ndGggb2YgdGhlIGRhdGEgdHJhbnNmZXIu
DQorICoJCQlDaGFuZ2VkIGhhbmRsaW5nIG9mIHBhcnRpYWwgZGF0YSB0cmFu
c2ZlcnM6IHRoZXkgZG8gbm90DQorICoJCQkgY2F1c2UgRE1BIGVycm9ycy4N
CisgKgkJCU1vdmVkIGluaXRpYXRpb24gb2YgRE1BIHRyYW5zZmVycyB0byB0
aGUgY29ycmVjdCBwbGFjZS4NCisgKgkJCVJlbW92ZWQgcmVmZXJlbmNlIHRv
IHVuYWxsb2NhdGVkIG1lbW9yeS4NCisgKgkJCU1hZGUgX19pZGV0YXBlX2Rp
c2NhcmRfcmVhZF9waXBlbGluZSByZXR1cm4gdGhlIG51bWJlciBvZg0KKyAq
CQkJIHNlY3RvcnMgc2tpcHBlZCwgbm90IHRoZSBudW1iZXIgb2Ygc3RhZ2Vz
Lg0KKyAqCQkJUmVwbGFjZWQgZXJyYW50IGtmcmVlKCkgY2FsbHMgd2l0aCBf
X2lkZXRhcGVfa2ZyZWVfc3RhZ2UoKS4NCisgKgkJCUZpeGVkIG9mZi1ieS1v
bmUgZXJyb3IgaW4gdGVzdGluZyB0aGUgcGlwZWxpbmUgbGVuZ3RoLg0KKyAq
CQkJRml4ZWQgaGFuZGxpbmcgb2YgZmlsZW1hcmtzIGluIHRoZSByZWFkIHBp
cGVsaW5lLg0KKyAqCQkJU21hbGwgY29kZSBvcHRpbWl6YXRpb24gZm9yIE1U
QlNGIGFuZCBNVEJTRk0gaW9jdGxzLg0KKyAqCQkJRG9uJ3QgdHJ5IHRvIHVu
bG9jayB0aGUgZG9vciBkdXJpbmcgZGV2aWNlIGNsb3NlIGlmIGlzDQorICoJ
CQkgYWxyZWFkeSB1bmxvY2tlZCENCisgKgkJCUNvc21ldGljIGZpeGVzIHRv
IG1pc2NlbGxhbmVvdXMgZGVidWdnaW5nIG91dHB1dCBtZXNzYWdlcy4NCisg
KgkJCVNldCB0aGUgbWluaW11bSAvcHJvYy9pZGUvaGQ/L3NldHRpbmdzIHZh
bHVlcyBmb3IgInBpcGVsaW5lIiwNCisgKgkJCSAicGlwZWxpbmVfbWluIiwg
YW5kICJwaXBlbGluZV9tYXgiIHRvIDEuDQogICoNCiAgKiBIZXJlIGFyZSBz
b21lIHdvcmRzIGZyb20gdGhlIGZpcnN0IHJlbGVhc2VzIG9mIGhkLmMsIHdo
aWNoIGFyZSBxdW90ZWQNCiAgKiBpbiBpZGUuYyBhbmQgYXBwbHkgaGVyZSBh
cyB3ZWxsOg0KQEAgLTQwMCw3ICs0MjIsNyBAQA0KICAqCQlzaGFyaW5nIGEg
KGZhc3QpIEFUQS0yIGRpc2sgd2l0aCBhbnkgKHNsb3cpIG5ldyBBVEFQSSBk
ZXZpY2UuDQogICovDQogDQotI2RlZmluZSBJREVUQVBFX1ZFUlNJT04gIjEu
MTdhIg0KKyNkZWZpbmUgSURFVEFQRV9WRVJTSU9OICIxLjE3YiINCiANCiAj
aW5jbHVkZSA8bGludXgvY29uZmlnLmg+DQogI2luY2x1ZGUgPGxpbnV4L21v
ZHVsZS5oPg0KQEAgLTU3Nyw5ICs1OTksMTAgQEANCiAgKgl3aGVuZXZlciB3
ZSBzZW5zZSB0aGF0IHRoZSBwaXBlbGluZSBpcyBlbXB0eSwgdW50aWwgd2Ug
cmVhY2gNCiAgKgl0aGUgb3B0aW11bSB2YWx1ZSBvciB1bnRpbCB3ZSByZWFj
aCBNQVguDQogICoNCi0gKglTZXR0aW5nIHRoZSBmb2xsb3dpbmcgcGFyYW1l
dGVyIHRvIDAgd2lsbCBkaXNhYmxlIHRoZSBwaXBlbGluZWQgbW9kZS4NCisg
KglTZXR0aW5nIHRoZSBmb2xsb3dpbmcgcGFyYW1ldGVyIHRvIDAgaXMgaWxs
ZWdhbDogdGhlIHBpcGVsaW5lZCBtb2RlDQorICoJY2Fubm90IGJlIGRpc2Fi
bGVkIChjYWxjdWxhdGVfc3BlZWRzKCkgZGl2aWRlcyBieSB0YXBlLT5tYXhf
c3RhZ2VzLikNCiAgKi8NCi0jZGVmaW5lIElERVRBUEVfTUlOX1BJUEVMSU5F
X1NUQUdFUwkyMDANCisjZGVmaW5lIElERVRBUEVfTUlOX1BJUEVMSU5FX1NU
QUdFUwkgIDENCiAjZGVmaW5lIElERVRBUEVfTUFYX1BJUEVMSU5FX1NUQUdF
Uwk0MDANCiAjZGVmaW5lIElERVRBUEVfSU5DUkVBU0VfU1RBR0VTX1JBVEUJ
IDIwDQogDQpAQCAtNjAxLDggKzYyNCw4IEBADQogICoJaXMgdmVyaWZpZWQg
dG8gYmUgc3RhYmxlIGVub3VnaC4gVGhpcyB3aWxsIG1ha2UgaXQgbXVjaCBt
b3JlDQogICoJZXN0aGV0aWMuDQogICovDQotI2RlZmluZSBJREVUQVBFX0RF
QlVHX0lORk8JCTENCi0jZGVmaW5lIElERVRBUEVfREVCVUdfTE9HCQkxDQor
I2RlZmluZSBJREVUQVBFX0RFQlVHX0lORk8JCTANCisjZGVmaW5lIElERVRB
UEVfREVCVUdfTE9HCQkwDQogI2RlZmluZSBJREVUQVBFX0RFQlVHX0xPR19W
RVJCT1NFCTANCiAjZGVmaW5lIElERVRBUEVfREVCVUdfQlVHUwkJMQ0KIA0K
QEAgLTE2MTMsMjQgKzE2MzYsNiBAQA0KIAl9DQogfQ0KIA0KLXN0YXRpYyB2
b2lkIGlkZXRhcGVfYWJvcnRfcGlwZWxpbmUgKGlkZV9kcml2ZV90ICpkcml2
ZSkNCi17DQotCWlkZXRhcGVfdGFwZV90ICp0YXBlID0gZHJpdmUtPmRyaXZl
cl9kYXRhOw0KLQlpZGV0YXBlX3N0YWdlX3QgKnN0YWdlID0gdGFwZS0+bmV4
dF9zdGFnZTsNCi0NCi0jaWYgSURFVEFQRV9ERUJVR19MT0cNCi0JaWYgKHRh
cGUtPmRlYnVnX2xldmVsID49IDQpDQotCQlwcmludGsoS0VSTl9JTkZPICJp
ZGUtdGFwZTogJXM6IGlkZXRhcGVfYWJvcnRfcGlwZWxpbmUgY2FsbGVkXG4i
LCB0YXBlLT5uYW1lKTsNCi0jZW5kaWYNCi0Jd2hpbGUgKHN0YWdlKSB7DQot
CQlpZiAoc3RhZ2UtPnJxLmZsYWdzID09IElERVRBUEVfV1JJVEVfUlEpDQot
CQkJc3RhZ2UtPnJxLmZsYWdzID0gSURFVEFQRV9BQk9SVEVEX1dSSVRFX1JR
Ow0KLQkJZWxzZSBpZiAoc3RhZ2UtPnJxLmZsYWdzID09IElERVRBUEVfUkVB
RF9SUSkNCi0JCQlzdGFnZS0+cnEuZmxhZ3MgPSBJREVUQVBFX0FCT1JURURf
UkVBRF9SUTsNCi0JCXN0YWdlID0gc3RhZ2UtPm5leHQ7DQotCX0NCi19DQot
DQogLyoNCiAgKiBpZGV0YXBlX2FjdGl2ZV9uZXh0X3N0YWdlIHdpbGwgZGVj
bGFyZSB0aGUgbmV4dCBzdGFnZSBhcyAiYWN0aXZlIi4NCiAgKi8NCkBAIC0x
Njc1LDcgKzE2ODAsNyBAQA0KIAkJcHJpbnRrIChLRVJOX0lORk8gImlkZS10
YXBlOiBSZWFjaGVkIGlkZXRhcGVfaW5jcmVhc2VfbWF4X3BpcGVsaW5lX3N0
YWdlc1xuIik7DQogI2VuZGlmIC8qIElERVRBUEVfREVCVUdfTE9HICovDQog
DQotCXRhcGUtPm1heF9zdGFnZXMgKz0gaW5jcmVhc2U7DQorCXRhcGUtPm1h
eF9zdGFnZXMgKz0gbWF4KGluY3JlYXNlLCAxKTsNCiAJdGFwZS0+bWF4X3N0
YWdlcyA9IG1heCh0YXBlLT5tYXhfc3RhZ2VzLCB0YXBlLT5taW5fcGlwZWxp
bmUpOw0KIAl0YXBlLT5tYXhfc3RhZ2VzID0gbWluKHRhcGUtPm1heF9zdGFn
ZXMsIHRhcGUtPm1heF9waXBlbGluZSk7DQogfQ0KQEAgLTE3NDgsNiArMTc1
MywyOSBAQA0KIAl9DQogfQ0KIA0KK3N0YXRpYyB2b2lkIGlkZXRhcGVfYWJv
cnRfcGlwZWxpbmUgKGlkZV9kcml2ZV90ICpkcml2ZSwgaWRldGFwZV9zdGFn
ZV90ICpsYXN0X3N0YWdlKQ0KK3sNCisJaWRldGFwZV90YXBlX3QgKnRhcGUg
PSBkcml2ZS0+ZHJpdmVyX2RhdGE7DQorCWlkZXRhcGVfc3RhZ2VfdCAqc3Rh
Z2UgPSB0YXBlLT5uZXh0X3N0YWdlOw0KKwlpZGV0YXBlX3N0YWdlX3QgKm5z
dGFnZTsNCisNCisjaWYgSURFVEFQRV9ERUJVR19MT0cNCisJaWYgKHRhcGUt
PmRlYnVnX2xldmVsID49IDQpDQorCQlwcmludGsoS0VSTl9JTkZPICJpZGUt
dGFwZTogJXM6IGlkZXRhcGVfYWJvcnRfcGlwZWxpbmUgY2FsbGVkXG4iLCB0
YXBlLT5uYW1lKTsNCisjZW5kaWYNCisJd2hpbGUgKHN0YWdlKSB7DQorCQlu
c3RhZ2UgPSBzdGFnZS0+bmV4dDsNCisJCWlkZXRhcGVfa2ZyZWVfc3RhZ2Uo
dGFwZSwgc3RhZ2UpOw0KKwkJLS10YXBlLT5ucl9zdGFnZXM7DQorCQktLXRh
cGUtPm5yX3BlbmRpbmdfc3RhZ2VzOw0KKwkJc3RhZ2UgPSBuc3RhZ2U7DQor
CX0NCisJdGFwZS0+bGFzdF9zdGFnZSA9IGxhc3Rfc3RhZ2U7DQorCWlmIChs
YXN0X3N0YWdlKQ0KKwkJbGFzdF9zdGFnZS0+bmV4dCA9IE5VTEw7DQorCXRh
cGUtPm5leHRfc3RhZ2UgPSBOVUxMOw0KK30NCisNCiAvKg0KICAqCWlkZXRh
cGVfZW5kX3JlcXVlc3QgaXMgdXNlZCB0byBmaW5pc2ggc2VydmljaW5nIGEg
cmVxdWVzdCwgYW5kIHRvDQogICoJaW5zZXJ0IGEgcGVuZGluZyBwaXBlbGlu
ZSByZXF1ZXN0IGludG8gdGhlIG1haW4gZGV2aWNlIHF1ZXVlLg0KQEAgLTE3
NTksNiArMTc4Nyw3IEBADQogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7DQogCWlu
dCBlcnJvcjsNCiAJaW50IHJlbW92ZV9zdGFnZSA9IDA7DQorCWlkZXRhcGVf
c3RhZ2VfdCAqYWN0aXZlX3N0YWdlOw0KICNpZiBPTlNUUkVBTV9ERUJVRw0K
IAlpZGV0YXBlX3N0YWdlX3QgKnN0YWdlOw0KIAlvc19hdXhfdCAqYXV4Ow0K
QEAgLTE3ODMsNiArMTgxMiw3IEBADQogDQogCS8qIFRoZSByZXF1ZXN0IHdh
cyBhIHBpcGVsaW5lZCBkYXRhIHRyYW5zZmVyIHJlcXVlc3QgKi8NCiAJaWYg
KHRhcGUtPmFjdGl2ZV9kYXRhX3JlcXVlc3QgPT0gcnEpIHsNCisJCWFjdGl2
ZV9zdGFnZSA9IHRhcGUtPmFjdGl2ZV9zdGFnZTsNCiAJCXRhcGUtPmFjdGl2
ZV9zdGFnZSA9IE5VTEw7DQogCQl0YXBlLT5hY3RpdmVfZGF0YV9yZXF1ZXN0
ID0gTlVMTDsNCiAJCXRhcGUtPm5yX3BlbmRpbmdfc3RhZ2VzLS07DQpAQCAt
MTgwNSwxNSArMTgzNSwxNyBAQA0KIAkJCQkJCXByaW50aygiaWRlLXRhcGU6
ICVzOiBza2lwcGluZyBvdmVyIGNvbmZpZyBwYXJpdGlvbi4uXG4iLCB0YXBl
LT5uYW1lKTsNCiAjZW5kaWYNCiAJCQkJCXRhcGUtPm9uc3RyZWFtX3dyaXRl
X2Vycm9yID0gT1NfUEFSVF9FUlJPUjsNCi0JCQkJCWlmICh0YXBlLT53YWl0
aW5nKQ0KKwkJCQkJaWYgKHRhcGUtPndhaXRpbmcpIHsNCisJCQkJCQlycS0+
d2FpdGluZyA9IE5VTEw7DQogCQkJCQkJY29tcGxldGUodGFwZS0+d2FpdGlu
Zyk7DQorCQkJCQl9DQogCQkJCX0NCiAJCQl9DQogCQkJcmVtb3ZlX3N0YWdl
ID0gMTsNCiAJCQlpZiAoZXJyb3IpIHsNCiAJCQkJc2V0X2JpdChJREVUQVBF
X1BJUEVMSU5FX0VSUk9SLCAmdGFwZS0+ZmxhZ3MpOw0KIAkJCQlpZiAoZXJy
b3IgPT0gSURFVEFQRV9FUlJPUl9FT0QpDQotCQkJCQlpZGV0YXBlX2Fib3J0
X3BpcGVsaW5lKGRyaXZlKTsNCisJCQkJCWlkZXRhcGVfYWJvcnRfcGlwZWxp
bmUoZHJpdmUsIGFjdGl2ZV9zdGFnZSk7DQogCQkJCWlmICh0YXBlLT5vbnN0
cmVhbSAmJiAhdGFwZS0+cmF3ICYmDQogCQkJCSAgICBlcnJvciA9PSBJREVU
QVBFX0VSUk9SX0dFTkVSQUwgJiYNCiAJCQkJICAgIHRhcGUtPnNlbnNlLnNl
bnNlX2tleSA9PSAzKSB7DQpAQCAtMTgyNCwxNCArMTg1NiwxNiBAQA0KIAkJ
CQkJdGFwZS0+bnJfcGVuZGluZ19zdGFnZXMrKzsNCiAJCQkJCXRhcGUtPm5l
eHRfc3RhZ2UgPSB0YXBlLT5maXJzdF9zdGFnZTsNCiAJCQkJCXJxLT5jdXJy
ZW50X25yX3NlY3RvcnMgPSBycS0+bnJfc2VjdG9yczsNCi0JCQkJCWlmICh0
YXBlLT53YWl0aW5nKQ0KKwkJCQkJaWYgKHRhcGUtPndhaXRpbmcpIHsNCisJ
CQkJCQlycS0+d2FpdGluZyA9IE5VTEw7DQogCQkJCQkJY29tcGxldGUodGFw
ZS0+d2FpdGluZyk7DQorCQkJCQl9DQogCQkJCX0NCiAJCQl9DQogCQl9IGVs
c2UgaWYgKHJxLT5mbGFncyA9PSBJREVUQVBFX1JFQURfUlEpIHsNCiAJCQlp
ZiAoZXJyb3IgPT0gSURFVEFQRV9FUlJPUl9FT0QpIHsNCiAJCQkJc2V0X2Jp
dChJREVUQVBFX1BJUEVMSU5FX0VSUk9SLCAmdGFwZS0+ZmxhZ3MpOw0KLQkJ
CQlpZGV0YXBlX2Fib3J0X3BpcGVsaW5lKGRyaXZlKTsNCisJCQkJaWRldGFw
ZV9hYm9ydF9waXBlbGluZShkcml2ZSwgYWN0aXZlX3N0YWdlKTsNCiAJCQl9
DQogCQl9DQogCQlpZiAodGFwZS0+bmV4dF9zdGFnZSAhPSBOVUxMICYmICF0
YXBlLT5vbnN0cmVhbV93cml0ZV9lcnJvcikgew0KQEAgLTE4ODIsNyArMTkx
Niw3IEBADQogCWlkZXRhcGVfaW5pdF9wYyhwYyk7CQ0KIAlwYy0+Y1swXSA9
IElERVRBUEVfUkVRVUVTVF9TRU5TRV9DTUQ7DQogCXBjLT5jWzRdID0gMjA7
DQotCXBjLT5yZXF1ZXN0X3RyYW5zZmVyID0gMTg7DQorCXBjLT5yZXF1ZXN0
X3RyYW5zZmVyID0gMjA7DQogCXBjLT5jYWxsYmFjayA9ICZpZGV0YXBlX3Jl
cXVlc3Rfc2Vuc2VfY2FsbGJhY2s7DQogfQ0KIA0KQEAgLTE5ODQsNyArMjAx
OCw3IEBADQogDQogI2lmZGVmIENPTkZJR19CTEtfREVWX0lERURNQQ0KIAlp
ZiAodGVzdF9iaXQoUENfRE1BX0lOX1BST0dSRVNTLCAmcGMtPmZsYWdzKSkg
ew0KLQkJaWYgKEhXSUYoZHJpdmUpLT5pZGVfZG1hX2VuZChkcml2ZSkpIHsN
CisJCWlmIChIV0lGKGRyaXZlKS0+aWRlX2RtYV9lbmQoZHJpdmUpIHx8IHN0
YXR1cy5iLmNoZWNrKSB7DQogCQkJLyoNCiAJCQkgKiBBIERNQSBlcnJvciBp
cyBzb21ldGltZXMgZXhwZWN0ZWQuIEZvciBleGFtcGxlLA0KIAkJCSAqIGlm
IHRoZSB0YXBlIGlzIGNyb3NzaW5nIGEgZmlsZW1hcmsgZHVyaW5nIGENCkBA
IC0xOTk2LDggKzIwMzAsMTggQEANCiAJCQkgKiBhY3R1YWxseSB0cmFuc2Zl
cnJlZCAod2UgY2FuJ3QgcmVjZWl2ZSB0aGF0DQogCQkJICogaW5mb3JtYXRp
b24gZnJvbSB0aGUgRE1BIGVuZ2luZSBvbiBtb3N0IGNoaXBzZXRzKS4NCiAJ
CQkgKi8NCisNCisJCQkvKg0KKwkJCSAqIE9uIHRoZSBjb250cmFyeSwgYSBE
TUEgZXJyb3IgaXMgbmV2ZXIgZXhwZWN0ZWQ7DQorCQkJICogaXQgdXN1YWxs
eSBpbmRpY2F0ZXMgYSBoYXJkd2FyZSBlcnJvciBvciBhYm9ydC4NCisJCQkg
KiBJZiB0aGUgdGFwZSBjcm9zc2VzIGEgZmlsZW1hcmsgZHVyaW5nIGEgUkVB
RA0KKwkJCSAqIGNvbW1hbmQsIGl0IHdpbGwgaXNzdWUgYW4gaXJxIGFuZCBw
b3NpdGlvbiBpdHNlbGYNCisJCQkgKiBhZnRlciB0aGUgZmlsZW1hcmsgKG5v
dCBiZWZvcmUpLiBPbmx5IGEgcGFydGlhbA0KKwkJCSAqIGRhdGEgdHJhbnNm
ZXIgd2lsbCBvY2N1ciwgYnV0IG5vIERNQSBlcnJvci4NCisJCQkgKiAoQVMs
IDE5IEFwciAyMDAxKQ0KKwkJCSAqLw0KIAkJCXNldF9iaXQoUENfRE1BX0VS
Uk9SLCAmcGMtPmZsYWdzKTsNCi0JCX0gZWxzZSBpZiAoIXN0YXR1cy5iLmNo
ZWNrKSB7DQorCQl9IGVsc2Ugew0KIAkJCXBjLT5hY3R1YWxseV90cmFuc2Zl
cnJlZCA9IHBjLT5yZXF1ZXN0X3RyYW5zZmVyOw0KIAkJCWlkZXRhcGVfdXBk
YXRlX2J1ZmZlcnMocGMpOw0KIAkJfQ0KQEAgLTIwMzQsNyArMjA3OCw3IEBA
DQogCQlpZiAoc3RhdHVzLmIuY2hlY2sgfHwgdGVzdF9iaXQoUENfRE1BX0VS
Uk9SLCAmcGMtPmZsYWdzKSkgewkvKiBFcnJvciBkZXRlY3RlZCAqLw0KICNp
ZiBJREVUQVBFX0RFQlVHX0xPRw0KIAkJCWlmICh0YXBlLT5kZWJ1Z19sZXZl
bCA+PSAxKQ0KLQkJCQlwcmludGsoS0VSTl9JTkZPICJpZGUtdGFwZTogJXM6
IEkvTyBlcnJvciwgIiwNCisJCQkJcHJpbnRrKEtFUk5fSU5GTyAiaWRlLXRh
cGU6ICVzOiBJL08gZXJyb3JcbiIsDQogCQkJCQl0YXBlLT5uYW1lKTsNCiAj
ZW5kaWYgLyogSURFVEFQRV9ERUJVR19MT0cgKi8NCiAJCQlpZiAocGMtPmNb
MF0gPT0gSURFVEFQRV9SRVFVRVNUX1NFTlNFX0NNRCkgew0KQEAgLTIyMDIs
NiArMjI0NiwxMCBAQA0KIAkJQlVHKCk7DQogCS8qIFNldCB0aGUgaW50ZXJy
dXB0IHJvdXRpbmUgKi8NCiAJaWRlX3NldF9oYW5kbGVyKGRyaXZlLCAmaWRl
dGFwZV9wY19pbnRyLCBJREVUQVBFX1dBSVRfQ01ELCBOVUxMKTsNCisjaWZk
ZWYgQ09ORklHX0JMS19ERVZfSURFRE1BDQorCWlmICh0ZXN0X2JpdChQQ19E
TUFfSU5fUFJPR1JFU1MsICZwYy0+ZmxhZ3MpKQkJLyogQmVnaW4gRE1BLCBp
ZiBuZWNlc3NhcnkgKi8NCisJCSh2b2lkKSAoSFdJRihkcml2ZSktPmlkZV9k
bWFfYmVnaW4oZHJpdmUpKTsNCisjZW5kaWYNCiAJLyogU2VuZCB0aGUgYWN0
dWFsIHBhY2tldCAqLw0KIAlIV0lGKGRyaXZlKS0+YXRhcGlfb3V0cHV0X2J5
dGVzKGRyaXZlLCBwYy0+YywgMTIpOw0KIAlyZXR1cm4gaWRlX3N0YXJ0ZWQ7
DQpAQCAtMjIzMCw4ICsyMjc4LDcgQEANCiAJCS8qDQogCQkgKglXZSB3aWxs
ICJhYm9ydCIgcmV0cnlpbmcgYSBwYWNrZXQgY29tbWFuZCBpbiBjYXNlDQog
CQkgKglhIGxlZ2l0aW1hdGUgZXJyb3IgY29kZSB3YXMgcmVjZWl2ZWQgKGNy
b3NzaW5nIGENCi0JCSAqCWZpbGVtYXJrLCBvciBETUEgZXJyb3IgaW4gdGhl
IGVuZCBvZiBtZWRpYSwgZm9yDQotCQkgKglleGFtcGxlKS4NCisJCSAqCWZp
bGVtYXJrLCBvciBlbmQgb2YgdGhlIG1lZGlhLCBmb3IgZXhhbXBsZSkuDQog
CQkgKi8NCiAJCWlmICghdGVzdF9iaXQoUENfQUJPUlQsICZwYy0+ZmxhZ3Mp
KSB7DQogCQkJaWYgKCEocGMtPmNbMF0gPT0gSURFVEFQRV9URVNUX1VOSVRf
UkVBRFlfQ01EICYmDQpAQCAtMjI1Niw3ICsyMzAzLDcgQEANCiAJfQ0KICNp
ZiBJREVUQVBFX0RFQlVHX0xPRw0KIAlpZiAodGFwZS0+ZGVidWdfbGV2ZWwg
Pj0gMikNCi0JCXByaW50ayhLRVJOX0lORk8gImlkZS10YXBlOiBSZXRyeSBu
dW1iZXIgLSAlZFxuIiwgcGMtPnJldHJpZXMpOw0KKwkJcHJpbnRrKEtFUk5f
SU5GTyAiaWRlLXRhcGU6IFJldHJ5IG51bWJlciAtICVkLCBjbWQgPSAlMDJY
XG4iLCBwYy0+cmV0cmllcywgcGMtPmNbMF0pOw0KICNlbmRpZiAvKiBJREVU
QVBFX0RFQlVHX0xPRyAqLw0KIA0KIAlwYy0+cmV0cmllcysrOw0KQEAgLTIy
ODUsOSArMjMzMiw4IEBADQogCU9VVF9CWVRFKGJjb3VudC5iLmxvdywgICAg
ICBJREVfQkNPVU5UTF9SRUcpOw0KIAlPVVRfQllURShkcml2ZS0+c2VsZWN0
LmFsbCwgSURFX1NFTEVDVF9SRUcpOw0KICNpZmRlZiBDT05GSUdfQkxLX0RF
Vl9JREVETUENCi0JaWYgKGRtYV9vaykgewkJCS8qIEJlZ2luIERNQSwgaWYg
bmVjZXNzYXJ5ICovDQorCWlmIChkbWFfb2spIHsJCQkvKiBXaWxsIGJlZ2lu
IERNQSBsYXRlciAqLw0KIAkJc2V0X2JpdChQQ19ETUFfSU5fUFJPR1JFU1Ms
ICZwYy0+ZmxhZ3MpOw0KLQkJKHZvaWQpIChIV0lGKGRyaXZlKS0+aWRlX2Rt
YV9iZWdpbihkcml2ZSkpOw0KIAl9DQogI2VuZGlmIC8qIENPTkZJR19CTEtf
REVWX0lERURNQSAqLw0KIAlpZiAodGVzdF9iaXQoSURFVEFQRV9EUlFfSU5U
RVJSVVBULCAmdGFwZS0+ZmxhZ3MpKSB7DQpAQCAtMzA4MCw3ICszMTI2LDcg
QEANCiAJdGFwZS0+d2FpdGluZyA9ICZ3YWl0Ow0KIAlzcGluX3VubG9jaygm
dGFwZS0+c3BpbmxvY2spOw0KIAl3YWl0X2Zvcl9jb21wbGV0aW9uKCZ3YWl0
KTsNCi0JcnEtPndhaXRpbmcgPSBOVUxMOw0KKwkvKiBUaGUgc3RhZ2UgYW5k
IGl0cyBzdHJ1Y3QgcmVxdWVzdCBoYXZlIGJlZW4gZGVhbGxvY2F0ZWQgKi8N
CiAJdGFwZS0+d2FpdGluZyA9IE5VTEw7DQogCXNwaW5fbG9ja19pcnEoJnRh
cGUtPnNwaW5sb2NrKTsNCiB9DQpAQCAtMzM0NCwxMSArMzM5MCwxNSBAQA0K
IA0KIAlpZiAodGFwZS0+Y2hyZGV2X2RpcmVjdGlvbiAhPSBpZGV0YXBlX2Rp
cmVjdGlvbl9yZWFkKQ0KIAkJcmV0dXJuIDA7DQorCWNudCA9IHRhcGUtPm1l
cmdlX3N0YWdlX3NpemUgLyB0YXBlLT50YXBlX2Jsb2NrX3NpemU7DQorCWlm
ICh0ZXN0X2FuZF9jbGVhcl9iaXQoSURFVEFQRV9GSUxFTUFSSywgJnRhcGUt
PmZsYWdzKSkNCisJCSsrY250OwkJLyogRmlsZW1hcmtzIGNvdW50IGFzIDEg
c2VjdG9yICovDQogCXRhcGUtPm1lcmdlX3N0YWdlX3NpemUgPSAwOw0KIAlp
ZiAodGFwZS0+bWVyZ2Vfc3RhZ2UgIT0gTlVMTCkgew0KIAkJX19pZGV0YXBl
X2tmcmVlX3N0YWdlKHRhcGUtPm1lcmdlX3N0YWdlKTsNCiAJCXRhcGUtPm1l
cmdlX3N0YWdlID0gTlVMTDsNCiAJfQ0KKwljbGVhcl9iaXQoSURFVEFQRV9Q
SVBFTElORV9FUlJPUiwgJnRhcGUtPmZsYWdzKTsNCiAJdGFwZS0+Y2hyZGV2
X2RpcmVjdGlvbiA9IGlkZXRhcGVfZGlyZWN0aW9uX25vbmU7DQogCQ0KIAlp
ZiAodGFwZS0+Zmlyc3Rfc3RhZ2UgPT0gTlVMTCkNCkBAIC0zMzYwLDkgKzM0
MTAsMTQgQEANCiAJCWlkZXRhcGVfd2FpdF9mb3JfcmVxdWVzdChkcml2ZSwg
dGFwZS0+YWN0aXZlX2RhdGFfcmVxdWVzdCk7DQogCXNwaW5fdW5sb2NrX2ly
cXJlc3RvcmUoJnRhcGUtPnNwaW5sb2NrLCBmbGFncyk7DQogDQotCWNudCA9
IHRhcGUtPm5yX3N0YWdlcyAtIHRhcGUtPm5yX3BlbmRpbmdfc3RhZ2VzOw0K
LQl3aGlsZSAodGFwZS0+Zmlyc3Rfc3RhZ2UgIT0gTlVMTCkNCisJd2hpbGUg
KHRhcGUtPmZpcnN0X3N0YWdlICE9IE5VTEwpIHsNCisJCXN0cnVjdCByZXF1
ZXN0ICpycV9wdHIgPSAmdGFwZS0+Zmlyc3Rfc3RhZ2UtPnJxOw0KKw0KKwkJ
Y250ICs9IHJxX3B0ci0+bnJfc2VjdG9ycyAtIHJxX3B0ci0+Y3VycmVudF9u
cl9zZWN0b3JzOyANCisJCWlmIChycV9wdHItPmVycm9ycyA9PSBJREVUQVBF
X0VSUk9SX0ZJTEVNQVJLKQ0KKwkJCSsrY250Ow0KIAkJaWRldGFwZV9yZW1v
dmVfc3RhZ2VfaGVhZChkcml2ZSk7DQorCX0NCiAJdGFwZS0+bnJfcGVuZGlu
Z19zdGFnZXMgPSAwOw0KIAl0YXBlLT5tYXhfc3RhZ2VzID0gdGFwZS0+bWlu
X3BpcGVsaW5lOw0KIAlyZXR1cm4gY250Ow0KQEAgLTM5NTcsNyArNDAxMiw3
IEBADQogCQkgKi8NCiAJCWJ5dGVzX3JlYWQgPSBpZGV0YXBlX3F1ZXVlX3J3
X3RhaWwoZHJpdmUsIElERVRBUEVfUkVBRF9SUSwgMCwgdGFwZS0+bWVyZ2Vf
c3RhZ2UtPmJpbyk7DQogCQlpZiAoYnl0ZXNfcmVhZCA8IDApIHsNCi0JCQlr
ZnJlZSh0YXBlLT5tZXJnZV9zdGFnZSk7DQorCQkJX19pZGV0YXBlX2tmcmVl
X3N0YWdlKHRhcGUtPm1lcmdlX3N0YWdlKTsNCiAJCQl0YXBlLT5tZXJnZV9z
dGFnZSA9IE5VTEw7DQogCQkJdGFwZS0+Y2hyZGV2X2RpcmVjdGlvbiA9IGlk
ZXRhcGVfZGlyZWN0aW9uX25vbmU7DQogCQkJcmV0dXJuIGJ5dGVzX3JlYWQ7
DQpAQCAtMzk3MCw3ICs0MDI1LDcgQEANCiAJcnEuc2VjdG9yID0gdGFwZS0+
Zmlyc3RfZnJhbWVfcG9zaXRpb247DQogCXJxLm5yX3NlY3RvcnMgPSBycS5j
dXJyZW50X25yX3NlY3RvcnMgPSBibG9ja3M7DQogCWlmICghdGVzdF9iaXQo
SURFVEFQRV9QSVBFTElORV9FUlJPUiwgJnRhcGUtPmZsYWdzKSAmJg0KLQkg
ICAgdGFwZS0+bnJfc3RhZ2VzIDw9IG1heF9zdGFnZXMpIHsNCisJICAgIHRh
cGUtPm5yX3N0YWdlcyA8IG1heF9zdGFnZXMpIHsNCiAJCW5ld19zdGFnZSA9
IGlkZXRhcGVfa21hbGxvY19zdGFnZSh0YXBlKTsNCiAJCXdoaWxlIChuZXdf
c3RhZ2UgIT0gTlVMTCkgew0KIAkJCW5ld19zdGFnZS0+cnEgPSBycTsNCkBA
IC00MDgwLDYgKzQxMzUsMTIgQEANCiAjZW5kaWYgLyogSURFVEFQRV9ERUJV
R19MT0cgKi8NCiANCiAJLyoNCisJICogSWYgd2UgYXJlIGF0IGEgZmlsZW1h
cmssIHJldHVybiBhIHJlYWQgbGVuZ3RoIG9mIDANCisJICovDQorCWlmICh0
ZXN0X2JpdChJREVUQVBFX0ZJTEVNQVJLLCAmdGFwZS0+ZmxhZ3MpKQ0KKwkJ
cmV0dXJuIDA7DQorDQorCS8qDQogCSAqIFdhaXQgZm9yIHRoZSBuZXh0IGxv
Z2ljYWwgYmxvY2sgdG8gYmUgYXZhaWxhYmxlIGF0IHRoZSBoZWFkDQogCSAq
IG9mIHRoZSBwaXBlbGluZQ0KIAkgKi8NCkBAIC00MTA4LDE0ICs0MTY5LDcg
QEANCiAJfQ0KIAlpZiAocnFfcHRyLT5lcnJvcnMgPT0gSURFVEFQRV9FUlJP
Ul9FT0QpDQogCQlyZXR1cm4gMDsNCi0JaWYgKHJxX3B0ci0+ZXJyb3JzID09
IElERVRBUEVfRVJST1JfRklMRU1BUkspIHsNCi0JCWlkZXRhcGVfc3dpdGNo
X2J1ZmZlcnModGFwZSwgdGFwZS0+Zmlyc3Rfc3RhZ2UpOw0KLQkJc2V0X2Jp
dChJREVUQVBFX0ZJTEVNQVJLLCAmdGFwZS0+ZmxhZ3MpOw0KLSNpZiBVU0Vf
SU9UUkFDRQ0KLQkJSU9fdHJhY2UoSU9fSURFVEFQRV9GSUZPLCB0YXBlLT5w
aXBlbGluZV9oZWFkLCB0YXBlLT5idWZmZXJfaGVhZCwgdGFwZS0+dGFwZV9o
ZWFkLCB0YXBlLT5taW5vcik7DQotI2VuZGlmDQotCQljYWxjdWxhdGVfc3Bl
ZWRzKGRyaXZlKTsNCi0JfSBlbHNlIHsNCisJZWxzZSB7DQogCQlpZGV0YXBl
X3N3aXRjaF9idWZmZXJzKHRhcGUsIHRhcGUtPmZpcnN0X3N0YWdlKTsNCiAJ
CWlmIChycV9wdHItPmVycm9ycyA9PSBJREVUQVBFX0VSUk9SX0dFTkVSQUwp
IHsNCiAjaWYgT05TVFJFQU1fREVCVUcNCkBAIC00MTIzLDcgKzQxNzcsOCBA
QA0KIAkJCQlwcmludGsoS0VSTl9JTkZPICJpZGUtdGFwZTogZXJyb3IgZGV0
ZWN0ZWQsIGJ5dGVzX3JlYWQgJWRcbiIsIGJ5dGVzX3JlYWQpOw0KICNlbmRp
Zg0KIAkJfQ0KLQkJY2xlYXJfYml0KElERVRBUEVfRklMRU1BUkssICZ0YXBl
LT5mbGFncyk7DQorCQlpZiAocnFfcHRyLT5lcnJvcnMgPT0gSURFVEFQRV9F
UlJPUl9GSUxFTUFSSykNCisJCQlzZXRfYml0KElERVRBUEVfRklMRU1BUkss
ICZ0YXBlLT5mbGFncyk7DQogCQlzcGluX2xvY2tfaXJxc2F2ZSgmdGFwZS0+
c3BpbmxvY2ssIGZsYWdzKTsNCiAJCWlkZXRhcGVfcmVtb3ZlX3N0YWdlX2hl
YWQoZHJpdmUpOw0KIAkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmdGFwZS0+
c3BpbmxvY2ssIGZsYWdzKTsNCkBAIC00NDg4LDYgKzQ1NDMsMTQgQEANCiAJ
CXRhcGUtPnJlc3RhcnRfc3BlZWRfY29udHJvbF9yZXEgPSAxOw0KIAkJcmV0
dXJuIHJldHZhbDsNCiAJfQ0KKyANCisJaWYgKG10X2NvdW50ID09IDApDQor
CQlyZXR1cm4gMDsNCisJaWYgKE1UQlNGID09IG10X29wIHx8IE1UQlNGTSA9
PSBtdF9vcCkgew0KKwkJaWYgKCF0YXBlLT5jYXBhYmlsaXRpZXMuc3ByZXYp
DQorCQkJcmV0dXJuIC1FSU87DQorCQltdF9jb3VudCA9IC0gbXRfY291bnQ7
DQorCX0NCiANCiAJaWYgKHRhcGUtPmNocmRldl9kaXJlY3Rpb24gPT0gaWRl
dGFwZV9kaXJlY3Rpb25fcmVhZCkgew0KIAkJLyoNCkBAIC00NDk1LDI4ICs0
NTU4LDM2IEBADQogCQkgKglmaWxlbWFya3MuDQogCQkgKi8NCiAJCXRhcGUt
Pm1lcmdlX3N0YWdlX3NpemUgPSAwOw0KLQkJY2xlYXJfYml0KElERVRBUEVf
RklMRU1BUkssICZ0YXBlLT5mbGFncyk7DQorCQlpZiAodGVzdF9hbmRfY2xl
YXJfYml0KElERVRBUEVfRklMRU1BUkssICZ0YXBlLT5mbGFncykpDQorCQkJ
Kytjb3VudDsNCiAJCXdoaWxlICh0YXBlLT5maXJzdF9zdGFnZSAhPSBOVUxM
KSB7DQotCQkJaWRldGFwZV93YWl0X2ZpcnN0X3N0YWdlKGRyaXZlKTsNCi0J
CQlpZiAodGFwZS0+Zmlyc3Rfc3RhZ2UtPnJxLmVycm9ycyA9PSBJREVUQVBF
X0VSUk9SX0ZJTEVNQVJLKQ0KLQkJCQljb3VudCsrOw0KIAkJCWlmIChjb3Vu
dCA9PSBtdF9jb3VudCkgew0KLQkJCQlzd2l0Y2ggKG10X29wKSB7DQotCQkJ
CQljYXNlIE1URlNGOg0KLQkJCQkJCXNwaW5fbG9ja19pcnFzYXZlKCZ0YXBl
LT5zcGlubG9jaywgZmxhZ3MpOw0KLQkJCQkJCWlkZXRhcGVfcmVtb3ZlX3N0
YWdlX2hlYWQoZHJpdmUpOw0KLQkJCQkJCXNwaW5fdW5sb2NrX2lycXJlc3Rv
cmUoJnRhcGUtPnNwaW5sb2NrLCBmbGFncyk7DQotCQkJCQljYXNlIE1URlNG
TToNCi0JCQkJCQlyZXR1cm4gKDApOw0KLQkJCQkJZGVmYXVsdDoNCi0JCQkJ
CQlicmVhazsNCi0JCQkJfQ0KKwkJCQlpZiAobXRfb3AgPT0gTVRGU0ZNKQ0K
KwkJCQkJc2V0X2JpdChJREVUQVBFX0ZJTEVNQVJLLCAmdGFwZS0+ZmxhZ3Mp
Ow0KKwkJCQlyZXR1cm4gMDsNCiAJCQl9DQogCQkJc3Bpbl9sb2NrX2lycXNh
dmUoJnRhcGUtPnNwaW5sb2NrLCBmbGFncyk7DQorCQkJaWYgKHRhcGUtPmZp
cnN0X3N0YWdlID09IHRhcGUtPmFjdGl2ZV9zdGFnZSkgew0KKwkJCQkvKg0K
KwkJCQkgKglXZSBoYXZlIHJlYWNoZWQgdGhlIGFjdGl2ZSBzdGFnZSBpbiB0
aGUgcmVhZCBwaXBlbGluZS4NCisJCQkJICoJVGhlcmUgaXMgbm8gcG9pbnQg
aW4gYWxsb3dpbmcgdGhlIGRyaXZlIHRvIGNvbnRpbnVlDQorCQkJCSAqCXJl
YWRpbmcgYW55IGZhcnRoZXIsIHNvIHdlIHN0b3AgdGhlIHBpcGVsaW5lLg0K
KwkJCQkgKg0KKwkJCQkgKglUaGlzIHNlY3Rpb24gc2hvdWxkIGJlIG1vdmVk
IHRvIGEgc2VwYXJhdGUgc3Vicm91dGluZSwNCisJCQkJICoJYmVjYXVzZSBh
IHNpbWlsYXIgZnVuY3Rpb24gaXMgcGVyZm9ybWVkIGluDQorCQkJCSAqCV9f
aWRldGFwZV9kaXNjYXJkX3JlYWRfcGlwZWxpbmUoKSwgZm9yIGV4YW1wbGUu
DQorCQkJCSAqLw0KKwkJCQl0YXBlLT5uZXh0X3N0YWdlID0gTlVMTDsNCisJ
CQkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmdGFwZS0+c3BpbmxvY2ssIGZs
YWdzKTsNCisJCQkJaWRldGFwZV93YWl0X2ZpcnN0X3N0YWdlKGRyaXZlKTsN
CisJCQkJdGFwZS0+bmV4dF9zdGFnZSA9IHRhcGUtPmZpcnN0X3N0YWdlLT5u
ZXh0Ow0KKwkJCX0gZWxzZQ0KKwkJCQlzcGluX3VubG9ja19pcnFyZXN0b3Jl
KCZ0YXBlLT5zcGlubG9jaywgZmxhZ3MpOw0KKwkJCWlmICh0YXBlLT5maXJz
dF9zdGFnZS0+cnEuZXJyb3JzID09IElERVRBUEVfRVJST1JfRklMRU1BUksp
DQorCQkJCSsrY291bnQ7DQogCQkJaWRldGFwZV9yZW1vdmVfc3RhZ2VfaGVh
ZChkcml2ZSk7DQotCQkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmdGFwZS0+
c3BpbmxvY2ssIGZsYWdzKTsNCiAJCX0NCi0JCWlkZXRhcGVfZGlzY2FyZF9y
ZWFkX3BpcGVsaW5lKGRyaXZlLCAxKTsNCisJCWlkZXRhcGVfZGlzY2FyZF9y
ZWFkX3BpcGVsaW5lKGRyaXZlLCAwKTsNCiAJfQ0KIA0KIAkvKg0KQEAgLTQ1
MjUsMjUgKzQ1OTYsMTcgQEANCiAJICovDQogCXN3aXRjaCAobXRfb3ApIHsN
CiAJCWNhc2UgTVRGU0Y6DQorCQljYXNlIE1UQlNGOg0KIAkJCWlkZXRhcGVf
Y3JlYXRlX3NwYWNlX2NtZCgmcGMsbXRfY291bnQtY291bnQsSURFVEFQRV9T
UEFDRV9PVkVSX0ZJTEVNQVJLKTsNCiAJCQlyZXR1cm4gKGlkZXRhcGVfcXVl
dWVfcGNfdGFpbChkcml2ZSwgJnBjKSk7DQogCQljYXNlIE1URlNGTToNCi0J
CQlpZiAoIXRhcGUtPmNhcGFiaWxpdGllcy5zcHJldikNCi0JCQkJcmV0dXJu
ICgtRUlPKTsNCi0JCQlyZXR2YWwgPSBpZGV0YXBlX3NwYWNlX292ZXJfZmls
ZW1hcmtzKGRyaXZlLCBNVEZTRiwgbXRfY291bnQtY291bnQpOw0KLQkJCWlm
IChyZXR2YWwpIHJldHVybiAocmV0dmFsKTsNCi0JCQlyZXR1cm4gKGlkZXRh
cGVfc3BhY2Vfb3Zlcl9maWxlbWFya3MoZHJpdmUsIE1UQlNGLCAxKSk7DQot
CQljYXNlIE1UQlNGOg0KLQkJCWlmICghdGFwZS0+Y2FwYWJpbGl0aWVzLnNw
cmV2KQ0KLQkJCQlyZXR1cm4gKC1FSU8pOw0KLQkJCWlkZXRhcGVfY3JlYXRl
X3NwYWNlX2NtZCgmcGMsLShtdF9jb3VudCtjb3VudCksSURFVEFQRV9TUEFD
RV9PVkVSX0ZJTEVNQVJLKTsNCi0JCQlyZXR1cm4gKGlkZXRhcGVfcXVldWVf
cGNfdGFpbChkcml2ZSwgJnBjKSk7DQogCQljYXNlIE1UQlNGTToNCiAJCQlp
ZiAoIXRhcGUtPmNhcGFiaWxpdGllcy5zcHJldikNCiAJCQkJcmV0dXJuICgt
RUlPKTsNCi0JCQlyZXR2YWwgPSBpZGV0YXBlX3NwYWNlX292ZXJfZmlsZW1h
cmtzKGRyaXZlLCBNVEJTRiwgbXRfY291bnQrY291bnQpOw0KKwkJCXJldHZh
bCA9IGlkZXRhcGVfc3BhY2Vfb3Zlcl9maWxlbWFya3MoZHJpdmUsIE1URlNG
LCBtdF9jb3VudC1jb3VudCk7DQogCQkJaWYgKHJldHZhbCkgcmV0dXJuIChy
ZXR2YWwpOw0KLQkJCXJldHVybiAoaWRldGFwZV9zcGFjZV9vdmVyX2ZpbGVt
YXJrcyhkcml2ZSwgTVRGU0YsIDEpKTsNCisJCQljb3VudCA9IChNVEJTRk0g
PT0gbXRfb3AgPyAxIDogLTEpOw0KKwkJCXJldHVybiAoaWRldGFwZV9zcGFj
ZV9vdmVyX2ZpbGVtYXJrcyhkcml2ZSwgTVRGU0YsIGNvdW50KSk7DQogCQlk
ZWZhdWx0Og0KIAkJCXByaW50ayhLRVJOX0VSUiAiaWRlLXRhcGU6IE1USU8g
b3BlcmF0aW9uICVkIG5vdCBzdXBwb3J0ZWRcbiIsbXRfb3ApOw0KIAkJCXJl
dHVybiAoLUVJTyk7DQpAQCAtNDg5NCw3ICs0OTU3LDcgQEANCiAJCSAqLw0K
IAkJcmV0dmFsID0gaWRldGFwZV9xdWV1ZV9yd190YWlsKGRyaXZlLCBJREVU
QVBFX1dSSVRFX1JRLCAwLCB0YXBlLT5tZXJnZV9zdGFnZS0+YmlvKTsNCiAJ
CWlmIChyZXR2YWwgPCAwKSB7DQotCQkJa2ZyZWUodGFwZS0+bWVyZ2Vfc3Rh
Z2UpOw0KKwkJCV9faWRldGFwZV9rZnJlZV9zdGFnZSh0YXBlLT5tZXJnZV9z
dGFnZSk7DQogCQkJdGFwZS0+bWVyZ2Vfc3RhZ2UgPSBOVUxMOw0KIAkJCXRh
cGUtPmNocmRldl9kaXJlY3Rpb24gPSBpZGV0YXBlX2RpcmVjdGlvbl9ub25l
Ow0KIAkJCXJldHVybiByZXR2YWw7DQpAQCAtNTQ4Miw5ICs1NTQ1LDExIEBA
DQogCQlNT0RfREVDX1VTRV9DT1VOVDsNCiAJCXJldHVybiAtRUJVU1k7DQog
CX0NCi0JaWRldGFwZV9yZWFkX3Bvc2l0aW9uKGRyaXZlKTsNCisJaWYgKHRh
cGUtPm9uc3RyZWFtKQ0KKwkJaWRldGFwZV9yZWFkX3Bvc2l0aW9uKGRyaXZl
KTsNCiAJTU9EX0RFQ19VU0VfQ09VTlQ7DQotCWNsZWFyX2JpdChJREVUQVBF
X1BJUEVMSU5FX0VSUk9SLCAmdGFwZS0+ZmxhZ3MpOw0KKwlpZiAodGFwZS0+
Y2hyZGV2X2RpcmVjdGlvbiAhPSBpZGV0YXBlX2RpcmVjdGlvbl9yZWFkKQ0K
KwkJY2xlYXJfYml0KElERVRBUEVfUElQRUxJTkVfRVJST1IsICZ0YXBlLT5m
bGFncyk7DQogDQogCWlmICh0YXBlLT5jaHJkZXZfZGlyZWN0aW9uID09IGlk
ZXRhcGVfZGlyZWN0aW9uX25vbmUpIHsNCiAJCU1PRF9JTkNfVVNFX0NPVU5U
Ow0KQEAgLTU1NTcsMTAgKzU2MjIsMTEgQEANCiAJaWYgKG1pbm9yIDwgMTI4
KQ0KIAkJKHZvaWQpIGlkZXRhcGVfcmV3aW5kX3RhcGUoZHJpdmUpOw0KIAlp
ZiAodGFwZS0+Y2hyZGV2X2RpcmVjdGlvbiA9PSBpZGV0YXBlX2RpcmVjdGlv
bl9ub25lKSB7DQotCQlpZiAodGFwZS0+ZG9vcl9sb2NrZWQgIT0gRE9PUl9F
WFBMSUNJVExZX0xPQ0tFRCkgew0KLQkJCWlmIChpZGV0YXBlX2NyZWF0ZV9w
cmV2ZW50X2NtZChkcml2ZSwgJnBjLCAwKSkNCisJCWlmICh0YXBlLT5kb29y
X2xvY2tlZCA9PSBET09SX0xPQ0tFRCkgew0KKwkJCWlmIChpZGV0YXBlX2Ny
ZWF0ZV9wcmV2ZW50X2NtZChkcml2ZSwgJnBjLCAwKSkgew0KIAkJCQlpZiAo
IWlkZXRhcGVfcXVldWVfcGNfdGFpbChkcml2ZSwgJnBjKSkNCiAJCQkJCXRh
cGUtPmRvb3JfbG9ja2VkID0gRE9PUl9VTkxPQ0tFRDsNCisJCQl9DQogCQl9
DQogCQlNT0RfREVDX1VTRV9DT1VOVDsNCiAJfQ0KQEAgLTU1OTQsMzQgKzU2
NjAsMzQgQEANCiAJcHJpbnRrKEtFUk5fSU5GTyAiaWRlLXRhcGU6IER1bXBp
bmcgQVRBUEkgSWRlbnRpZnkgRGV2aWNlIHRhcGUgcGFyYW1ldGVyc1xuIik7
DQogCXByaW50ayhLRVJOX0lORk8gImlkZS10YXBlOiBQcm90b2NvbCBUeXBl
OiAiKTsNCiAJc3dpdGNoIChnY3cucHJvdG9jb2wpIHsNCi0JCWNhc2UgMDog
Y2FzZSAxOiBwcmludGsoS0VSTl9JTkZPICJBVEFcbiIpO2JyZWFrOw0KLQkJ
Y2FzZSAyOglwcmludGsoS0VSTl9JTkZPICJBVEFQSVxuIik7YnJlYWs7DQot
CQljYXNlIDM6IHByaW50ayhLRVJOX0lORk8gIlJlc2VydmVkIChVbmtub3du
IHRvIGlkZS10YXBlKVxuIik7YnJlYWs7DQorCQljYXNlIDA6IGNhc2UgMTog
cHJpbnRrKCJBVEFcbiIpO2JyZWFrOw0KKwkJY2FzZSAyOglwcmludGsoIkFU
QVBJXG4iKTticmVhazsNCisJCWNhc2UgMzogcHJpbnRrKCJSZXNlcnZlZCAo
VW5rbm93biB0byBpZGUtdGFwZSlcbiIpO2JyZWFrOw0KIAl9DQogCXByaW50
ayhLRVJOX0lORk8gImlkZS10YXBlOiBEZXZpY2UgVHlwZTogJXggLSAiLGdj
dy5kZXZpY2VfdHlwZSk7CQ0KIAlzd2l0Y2ggKGdjdy5kZXZpY2VfdHlwZSkg
ew0KLQkJY2FzZSAwOiBwcmludGsoS0VSTl9JTkZPICJEaXJlY3QtYWNjZXNz
IERldmljZVxuIik7YnJlYWs7DQotCQljYXNlIDE6IHByaW50ayhLRVJOX0lO
Rk8gIlN0cmVhbWluZyBUYXBlIERldmljZVxuIik7YnJlYWs7DQotCQljYXNl
IDI6IGNhc2UgMzogY2FzZSA0OiBwcmludGsoS0VSTl9JTkZPICJSZXNlcnZl
ZFxuIik7YnJlYWs7DQotCQljYXNlIDU6IHByaW50ayhLRVJOX0lORk8gIkNE
LVJPTSBEZXZpY2VcbiIpO2JyZWFrOw0KLQkJY2FzZSA2OiBwcmludGsoS0VS
Tl9JTkZPICJSZXNlcnZlZFxuIik7DQotCQljYXNlIDc6IHByaW50ayhLRVJO
X0lORk8gIk9wdGljYWwgbWVtb3J5IERldmljZVxuIik7YnJlYWs7DQotCQlj
YXNlIDB4MWY6IHByaW50ayhLRVJOX0lORk8gIlVua25vd24gb3Igbm8gRGV2
aWNlIHR5cGVcbiIpO2JyZWFrOw0KLQkJZGVmYXVsdDogcHJpbnRrKEtFUk5f
SU5GTyAiUmVzZXJ2ZWRcbiIpOw0KKwkJY2FzZSAwOiBwcmludGsoIkRpcmVj
dC1hY2Nlc3MgRGV2aWNlXG4iKTticmVhazsNCisJCWNhc2UgMTogcHJpbnRr
KCJTdHJlYW1pbmcgVGFwZSBEZXZpY2VcbiIpO2JyZWFrOw0KKwkJY2FzZSAy
OiBjYXNlIDM6IGNhc2UgNDogcHJpbnRrKCJSZXNlcnZlZFxuIik7YnJlYWs7
DQorCQljYXNlIDU6IHByaW50aygiQ0QtUk9NIERldmljZVxuIik7YnJlYWs7
DQorCQljYXNlIDY6IHByaW50aygiUmVzZXJ2ZWRcbiIpOw0KKwkJY2FzZSA3
OiBwcmludGsoIk9wdGljYWwgbWVtb3J5IERldmljZVxuIik7YnJlYWs7DQor
CQljYXNlIDB4MWY6IHByaW50aygiVW5rbm93biBvciBubyBEZXZpY2UgdHlw
ZVxuIik7YnJlYWs7DQorCQlkZWZhdWx0OiBwcmludGsoIlJlc2VydmVkXG4i
KTsNCiAJfQ0KIAlwcmludGsoS0VSTl9JTkZPICJpZGUtdGFwZTogUmVtb3Zh
YmxlOiAlcyIsZ2N3LnJlbW92YWJsZSA/ICJZZXNcbiI6Ik5vXG4iKTsJDQog
CXByaW50ayhLRVJOX0lORk8gImlkZS10YXBlOiBDb21tYW5kIFBhY2tldCBE
UlEgVHlwZTogIik7DQogCXN3aXRjaCAoZ2N3LmRycV90eXBlKSB7DQotCQlj
YXNlIDA6IHByaW50ayhLRVJOX0lORk8gIk1pY3JvcHJvY2Vzc29yIERSUVxu
Iik7YnJlYWs7DQotCQljYXNlIDE6IHByaW50ayhLRVJOX0lORk8gIkludGVy
cnVwdCBEUlFcbiIpO2JyZWFrOw0KLQkJY2FzZSAyOiBwcmludGsoS0VSTl9J
TkZPICJBY2NlbGVyYXRlZCBEUlFcbiIpO2JyZWFrOw0KLQkJY2FzZSAzOiBw
cmludGsoS0VSTl9JTkZPICJSZXNlcnZlZFxuIik7YnJlYWs7DQorCQljYXNl
IDA6IHByaW50aygiTWljcm9wcm9jZXNzb3IgRFJRXG4iKTticmVhazsNCisJ
CWNhc2UgMTogcHJpbnRrKCJJbnRlcnJ1cHQgRFJRXG4iKTticmVhazsNCisJ
CWNhc2UgMjogcHJpbnRrKCJBY2NlbGVyYXRlZCBEUlFcbiIpO2JyZWFrOw0K
KwkJY2FzZSAzOiBwcmludGsoIlJlc2VydmVkXG4iKTticmVhazsNCiAJfQ0K
IAlwcmludGsoS0VSTl9JTkZPICJpZGUtdGFwZTogQ29tbWFuZCBQYWNrZXQg
U2l6ZTogIik7DQogCXN3aXRjaCAoZ2N3LnBhY2tldF9zaXplKSB7DQotCQlj
YXNlIDA6IHByaW50ayhLRVJOX0lORk8gIjEyIGJ5dGVzXG4iKTticmVhazsN
Ci0JCWNhc2UgMTogcHJpbnRrKEtFUk5fSU5GTyAiMTYgYnl0ZXNcbiIpO2Jy
ZWFrOw0KLQkJZGVmYXVsdDogcHJpbnRrKEtFUk5fSU5GTyAiUmVzZXJ2ZWRc
biIpO2JyZWFrOw0KKwkJY2FzZSAwOiBwcmludGsoIjEyIGJ5dGVzXG4iKTti
cmVhazsNCisJCWNhc2UgMTogcHJpbnRrKCIxNiBieXRlc1xuIik7YnJlYWs7
DQorCQlkZWZhdWx0OiBwcmludGsoIlJlc2VydmVkXG4iKTticmVhazsNCiAJ
fQ0KIAlwcmludGsoS0VSTl9JTkZPICJpZGUtdGFwZTogTW9kZWw6ICUuNDBz
XG4iLGlkLT5tb2RlbCk7DQogCXByaW50ayhLRVJOX0lORk8gImlkZS10YXBl
OiBGaXJtd2FyZSBSZXZpc2lvbjogJS44c1xuIixpZC0+ZndfcmV2KTsNCkBA
IC01NjM3LDQ1ICs1NzAzLDQ1IEBADQogCXByaW50ayhLRVJOX0lORk8gImlk
ZS10YXBlOiBTaW5nbGUgV29yZCBETUEgc3VwcG9ydGVkIG1vZGVzOiAiKTsN
CiAJZm9yIChpPTAsbWFzaz0xO2k8ODtpKyssbWFzaz1tYXNrIDw8IDEpIHsN
CiAJCWlmIChpZC0+ZG1hXzF3b3JkICYgbWFzaykNCi0JCQlwcmludGsoS0VS
Tl9JTkZPICIlZCAiLGkpOw0KKwkJCXByaW50aygiJWQgIixpKTsNCiAJCWlm
IChpZC0+ZG1hXzF3b3JkICYgKG1hc2sgPDwgOCkpDQotCQkJcHJpbnRrKEtF
Uk5fSU5GTyAiKGFjdGl2ZSkgIik7DQorCQkJcHJpbnRrKCIoYWN0aXZlKSAi
KTsNCiAJfQ0KLQlwcmludGsoS0VSTl9JTkZPICJcbiIpOw0KKwlwcmludGso
IlxuIik7DQogCXByaW50ayhLRVJOX0lORk8gImlkZS10YXBlOiBNdWx0aSBX
b3JkIERNQSBzdXBwb3J0ZWQgbW9kZXM6ICIpOw0KIAlmb3IgKGk9MCxtYXNr
PTE7aTw4O2krKyxtYXNrPW1hc2sgPDwgMSkgew0KIAkJaWYgKGlkLT5kbWFf
bXdvcmQgJiBtYXNrKQ0KLQkJCXByaW50ayhLRVJOX0lORk8gIiVkICIsaSk7
DQorCQkJcHJpbnRrKCIlZCAiLGkpOw0KIAkJaWYgKGlkLT5kbWFfbXdvcmQg
JiAobWFzayA8PCA4KSkNCi0JCQlwcmludGsoS0VSTl9JTkZPICIoYWN0aXZl
KSAiKTsNCisJCQlwcmludGsoIihhY3RpdmUpICIpOw0KIAl9DQotCXByaW50
ayhLRVJOX0lORk8gIlxuIik7DQorCXByaW50aygiXG4iKTsNCiAJaWYgKGlk
LT5maWVsZF92YWxpZCAmIDB4MDAwMikgew0KIAkJcHJpbnRrKEtFUk5fSU5G
TyAiaWRlLXRhcGU6IEVuaGFuY2VkIFBJTyBNb2RlczogJXNcbiIsDQogCQkJ
aWQtPmVpZGVfcGlvX21vZGVzICYgMSA/ICJNb2RlIDMiOiJOb25lIik7DQog
CQlwcmludGsoS0VSTl9JTkZPICJpZGUtdGFwZTogTWluaW11bSBNdWx0aS13
b3JkIERNQSBjeWNsZSBwZXIgd29yZDogIik7DQogCQlpZiAoaWQtPmVpZGVf
ZG1hX21pbiA9PSAwKQ0KLQkJCXByaW50ayhLRVJOX0lORk8gIk5vdCBzdXBw
b3J0ZWRcbiIpOw0KKwkJCXByaW50aygiTm90IHN1cHBvcnRlZFxuIik7DQog
CQllbHNlDQotCQkJcHJpbnRrKEtFUk5fSU5GTyAiJWQgbnNcbiIsaWQtPmVp
ZGVfZG1hX21pbik7DQorCQkJcHJpbnRrKCIlZCBuc1xuIixpZC0+ZWlkZV9k
bWFfbWluKTsNCiANCiAJCXByaW50ayhLRVJOX0lORk8gImlkZS10YXBlOiBN
YW51ZmFjdHVyZXJcJ3MgUmVjb21tZW5kZWQgTXVsdGktd29yZCBjeWNsZTog
Iik7DQogCQlpZiAoaWQtPmVpZGVfZG1hX3RpbWUgPT0gMCkNCi0JCQlwcmlu
dGsoS0VSTl9JTkZPICJOb3Qgc3VwcG9ydGVkXG4iKTsNCisJCQlwcmludGso
Ik5vdCBzdXBwb3J0ZWRcbiIpOw0KIAkJZWxzZQ0KLQkJCXByaW50ayhLRVJO
X0lORk8gIiVkIG5zXG4iLGlkLT5laWRlX2RtYV90aW1lKTsNCisJCQlwcmlu
dGsoIiVkIG5zXG4iLGlkLT5laWRlX2RtYV90aW1lKTsNCiANCiAJCXByaW50
ayhLRVJOX0lORk8gImlkZS10YXBlOiBNaW5pbXVtIFBJTyBjeWNsZSB3aXRo
b3V0IElPUkRZOiAiKTsNCiAJCWlmIChpZC0+ZWlkZV9waW8gPT0gMCkNCi0J
CQlwcmludGsoS0VSTl9JTkZPICJOb3Qgc3VwcG9ydGVkXG4iKTsNCisJCQlw
cmludGsoIk5vdCBzdXBwb3J0ZWRcbiIpOw0KIAkJZWxzZQ0KLQkJCXByaW50
ayhLRVJOX0lORk8gIiVkIG5zXG4iLGlkLT5laWRlX3Bpbyk7DQorCQkJcHJp
bnRrKCIlZCBuc1xuIixpZC0+ZWlkZV9waW8pOw0KIA0KIAkJcHJpbnRrKEtF
Uk5fSU5GTyAiaWRlLXRhcGU6IE1pbmltdW0gUElPIGN5Y2xlIHdpdGggSU9S
RFk6ICIpOw0KIAkJaWYgKGlkLT5laWRlX3Bpb19pb3JkeSA9PSAwKQ0KLQkJ
CXByaW50ayhLRVJOX0lORk8gIk5vdCBzdXBwb3J0ZWRcbiIpOw0KKwkJCXBy
aW50aygiTm90IHN1cHBvcnRlZFxuIik7DQogCQllbHNlDQotCQkJcHJpbnRr
KEtFUk5fSU5GTyAiJWQgbnNcbiIsaWQtPmVpZGVfcGlvX2lvcmR5KTsNCisJ
CQlwcmludGsoIiVkIG5zXG4iLGlkLT5laWRlX3Bpb19pb3JkeSk7DQogCQkN
CiAJfSBlbHNlDQogCQlwcmludGsoS0VSTl9JTkZPICJpZGUtdGFwZTogQWNj
b3JkaW5nIHRvIHRoZSBkZXZpY2UsIGZpZWxkcyA2NC03MCBhcmUgbm90IHZh
bGlkLlxuIik7DQpAQCAtNTk4NCw5ICs2MDUwLDkgQEANCiAgKgkJCWRyaXZl
CXNldHRpbmcgbmFtZQlyZWFkL3dyaXRlCWlvY3RsCWlvY3RsCQlkYXRhIHR5
cGUJbWluCQkJbWF4CQkJbXVsX2ZhY3RvcgkJCWRpdl9mYWN0b3IJCQlkYXRh
IHBvaW50ZXIJCQkJc2V0IGZ1bmN0aW9uDQogICovDQogCWlkZV9hZGRfc2V0
dGluZyhkcml2ZSwJImJ1ZmZlciIsCVNFVFRJTkdfUkVBRCwJLTEsCS0xLAkJ
VFlQRV9TSE9SVCwJMCwJCQkweGZmZmYsCQkJMSwJCQkJMiwJCQkJJnRhcGUt
PmNhcGFiaWxpdGllcy5idWZmZXJfc2l6ZSwJTlVMTCk7DQotCWlkZV9hZGRf
c2V0dGluZyhkcml2ZSwJInBpcGVsaW5lX21pbiIsCVNFVFRJTkdfUlcsCS0x
LAktMSwJCVRZUEVfSU5ULAkyLAkJCTB4ZmZmZiwJCQl0YXBlLT5zdGFnZV9z
aXplIC8gMTAyNCwJMSwJCQkJJnRhcGUtPm1pbl9waXBlbGluZSwJCQlOVUxM
KTsNCi0JaWRlX2FkZF9zZXR0aW5nKGRyaXZlLAkicGlwZWxpbmUiLAlTRVRU
SU5HX1JXLAktMSwJLTEsCQlUWVBFX0lOVCwJMiwJCQkweGZmZmYsCQkJdGFw
ZS0+c3RhZ2Vfc2l6ZSAvIDEwMjQsCTEsCQkJCSZ0YXBlLT5tYXhfc3RhZ2Vz
LAkJCU5VTEwpOw0KLQlpZGVfYWRkX3NldHRpbmcoZHJpdmUsCSJwaXBlbGlu
ZV9tYXgiLAlTRVRUSU5HX1JXLAktMSwJLTEsCQlUWVBFX0lOVCwJMiwJCQkw
eGZmZmYsCQkJdGFwZS0+c3RhZ2Vfc2l6ZSAvIDEwMjQsCTEsCQkJCSZ0YXBl
LT5tYXhfcGlwZWxpbmUsCQkJTlVMTCk7DQorCWlkZV9hZGRfc2V0dGluZyhk
cml2ZSwJInBpcGVsaW5lX21pbiIsCVNFVFRJTkdfUlcsCS0xLAktMSwJCVRZ
UEVfSU5ULAkxLAkJCTB4ZmZmZiwJCQl0YXBlLT5zdGFnZV9zaXplIC8gMTAy
NCwJMSwJCQkJJnRhcGUtPm1pbl9waXBlbGluZSwJCQlOVUxMKTsNCisJaWRl
X2FkZF9zZXR0aW5nKGRyaXZlLAkicGlwZWxpbmUiLAlTRVRUSU5HX1JXLAkt
MSwJLTEsCQlUWVBFX0lOVCwJMSwJCQkweGZmZmYsCQkJdGFwZS0+c3RhZ2Vf
c2l6ZSAvIDEwMjQsCTEsCQkJCSZ0YXBlLT5tYXhfc3RhZ2VzLAkJCU5VTEwp
Ow0KKwlpZGVfYWRkX3NldHRpbmcoZHJpdmUsCSJwaXBlbGluZV9tYXgiLAlT
RVRUSU5HX1JXLAktMSwJLTEsCQlUWVBFX0lOVCwJMSwJCQkweGZmZmYsCQkJ
dGFwZS0+c3RhZ2Vfc2l6ZSAvIDEwMjQsCTEsCQkJCSZ0YXBlLT5tYXhfcGlw
ZWxpbmUsCQkJTlVMTCk7DQogCWlkZV9hZGRfc2V0dGluZyhkcml2ZSwJInBp
cGVsaW5lX3VzZWQiLFNFVFRJTkdfUkVBRCwJLTEsCS0xLAkJVFlQRV9JTlQs
CTAsCQkJMHhmZmZmLAkJCXRhcGUtPnN0YWdlX3NpemUgLyAxMDI0LAkxLAkJ
CQkmdGFwZS0+bnJfc3RhZ2VzLAkJCU5VTEwpOw0KIAlpZGVfYWRkX3NldHRp
bmcoZHJpdmUsCSJwaXBlbGluZV9wZW5kaW5nIixTRVRUSU5HX1JFQUQsLTEs
CS0xLAkJVFlQRV9JTlQsCTAsCQkJMHhmZmZmLAkJCXRhcGUtPnN0YWdlX3Np
emUgLyAxMDI0LAkxLAkJCQkmdGFwZS0+bnJfcGVuZGluZ19zdGFnZXMsCQlO
VUxMKTsNCiAJaWRlX2FkZF9zZXR0aW5nKGRyaXZlLAkic3BlZWQiLAlTRVRU
SU5HX1JFQUQsCS0xLAktMSwJCVRZUEVfU0hPUlQsCTAsCQkJMHhmZmZmLAkJ
CTEsCQkJCTEsCQkJCSZ0YXBlLT5jYXBhYmlsaXRpZXMuc3BlZWQsCQlOVUxM
KTsNCkBAIC02MTAxLDggKzYxNjcsMTEgQEANCiAJc2lfbWVtaW5mbygmc2kp
Ow0KIAlpZiAodGFwZS0+bWF4X3N0YWdlcyAqIHRhcGUtPnN0YWdlX3NpemUg
PiBzaS50b3RhbHJhbSAqIHNpLm1lbV91bml0IC8gMTApDQogCQl0YXBlLT5t
YXhfc3RhZ2VzID0gc2kudG90YWxyYW0gKiBzaS5tZW1fdW5pdCAvICgxMCAq
IHRhcGUtPnN0YWdlX3NpemUpOw0KLQl0YXBlLT5taW5fcGlwZWxpbmUgPSB0
YXBlLT5tYXhfc3RhZ2VzOw0KLQl0YXBlLT5tYXhfcGlwZWxpbmUgPSB0YXBl
LT5tYXhfc3RhZ2VzICogMjsNCisJdGFwZS0+bWF4X3N0YWdlcyAgID0gbWlu
KHRhcGUtPm1heF9zdGFnZXMsIElERVRBUEVfTUFYX1BJUEVMSU5FX1NUQUdF
Uyk7DQorCXRhcGUtPm1pbl9waXBlbGluZSA9IG1pbih0YXBlLT5tYXhfc3Rh
Z2VzLCBJREVUQVBFX01JTl9QSVBFTElORV9TVEFHRVMpOw0KKwl0YXBlLT5t
YXhfcGlwZWxpbmUgPSBtaW4odGFwZS0+bWF4X3N0YWdlcyAqIDIsIElERVRB
UEVfTUFYX1BJUEVMSU5FX1NUQUdFUyk7DQorCWlmICh0YXBlLT5tYXhfc3Rh
Z2VzID09IDApDQorCQl0YXBlLT5tYXhfc3RhZ2VzID0gdGFwZS0+bWluX3Bp
cGVsaW5lID0gdGFwZS0+bWF4X3BpcGVsaW5lID0gMTsNCiANCiAJdDEgPSAo
dGFwZS0+c3RhZ2Vfc2l6ZSAqIEhaKSAvIChzcGVlZCAqIDEwMDApOw0KIAl0
bWlkID0gKHRhcGUtPmNhcGFiaWxpdGllcy5idWZmZXJfc2l6ZSAqIDMyICog
SFopIC8gKHNwZWVkICogMTI1KTsNCg==
---2084555674-1231429211-1036260985=:1124--
-
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/