[PATCH] i386 extended ptrace

Frank Cornelis (fcorneli@elis.rug.ac.be)
Sat, 29 Dec 2001 11:31:46 +0100 (CET)


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.

---1046675133-182848616-1009621906=:20673
Content-Type: TEXT/PLAIN; charset=US-ASCII

Hey,

This patch extends the ptrace system call by providing new requests
to trace memory differences made by system calls in a much cleaner way
than just to scan the entire user process memory area.
I think it's safe to merge with 2.4.17 because, when you don't enable it
in the config it won't compile into the kernel image. It would save me a
lot of time not to continually have to patch it against the latest
kernel my own; I've got other things to do.

Feedback is very welcome,
Frank.

---1046675133-182848616-1009621906=:20673
Content-Type: TEXT/PLAIN; charset=US-ASCII; name="exptrace-0.1.16-2.4.17.patch"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.LNX.4.33.0112291131460.20673@trappist.elis.rug.ac.be>
Content-Description:
Content-Disposition: attachment; filename="exptrace-0.1.16-2.4.17.patch"

ZGlmZiAtTnVyIGxpbnV4LTIuNC4xNy9hcmNoL2kzODYvY29uZmlnLmluIGxp
bnV4L2FyY2gvaTM4Ni9jb25maWcuaW4NCi0tLSBsaW51eC0yLjQuMTcvYXJj
aC9pMzg2L2NvbmZpZy5pbglTYXQgRGVjIDIyIDA5OjM1OjM5IDIwMDENCisr
KyBsaW51eC9hcmNoL2kzODYvY29uZmlnLmluCVR1ZSBEZWMgMjUgMTg6MzY6
MjUgMjAwMQ0KQEAgLTI1NCw2ICsyNTQsOSBAQA0KIAkiRUxGCQlDT05GSUdf
S0NPUkVfRUxGCVwNCiAJIEEuT1VUCQlDT05GSUdfS0NPUkVfQU9VVCIgRUxG
DQogZmkNCitpZiBbICIkQ09ORklHX0VYUEVSSU1FTlRBTCIgPSAieSIgXTsg
dGhlbg0KKyAgIGJvb2wgJ0V4dGVuZGVkIHB0cmFjZSBzdXBwb3J0IChFWFBF
UklNRU5UQUwpJyBDT05GSUdfRVhQVFJBQ0UNCitmaQ0KIHRyaXN0YXRlICdL
ZXJuZWwgc3VwcG9ydCBmb3IgYS5vdXQgYmluYXJpZXMnIENPTkZJR19CSU5G
TVRfQU9VVA0KIHRyaXN0YXRlICdLZXJuZWwgc3VwcG9ydCBmb3IgRUxGIGJp
bmFyaWVzJyBDT05GSUdfQklORk1UX0VMRg0KIHRyaXN0YXRlICdLZXJuZWwg
c3VwcG9ydCBmb3IgTUlTQyBiaW5hcmllcycgQ09ORklHX0JJTkZNVF9NSVND
DQpkaWZmIC1OdXIgbGludXgtMi40LjE3L0RvY3VtZW50YXRpb24vQ29uZmln
dXJlLmhlbHAgbGludXgvRG9jdW1lbnRhdGlvbi9Db25maWd1cmUuaGVscA0K
LS0tIGxpbnV4LTIuNC4xNy9Eb2N1bWVudGF0aW9uL0NvbmZpZ3VyZS5oZWxw
CVNhdCBEZWMgMjIgMDk6MzU6NTYgMjAwMQ0KKysrIGxpbnV4L0RvY3VtZW50
YXRpb24vQ29uZmlndXJlLmhlbHAJVHVlIERlYyAyNSAxODozNjoyNSAyMDAx
DQpAQCAtMzY2OCw2ICszNjY4LDE4IEBADQogICBOb3QgbmVjZXNzYXJ5IHVu
bGVzcyB5b3UncmUgdXNpbmcgYSB2ZXJ5IG91dC1vZi1kYXRlIGJpbnV0aWxz
DQogICB2ZXJzaW9uLiAgWW91IHByb2JhYmx5IHdhbnQgS0NPUkVfRUxGLg0K
IA0KK0V4dGVuZGVkIHB0cmFjZSBzdXBwb3J0DQorQ09ORklHX0VYUFRSQUNF
DQorICBUaGlzIGFkZHMgZXh0cmEgZnVuY3Rpb25hbGl0eSB0byB0aGUgcHRy
YWNlIHN5c3RlbSBjYWxsIGluIG9yZGVyDQorICB0byBiZSBhYmxlIHRvIHRy
YWNlIG1lbW9yeSBkaWZmZXJlbmNlcyBjYXVzZWQgYnkgc3lzdGVtIGNhbGxz
DQorICBtdWNoIGJldHRlci4gKGkzODYgYXJjaGl0ZWN0dXJlIG9ubHkpDQor
ICBUaGlzIGNhdXNlcyBsaXR0bGUgb3ZlcmhlYWQgb24gd3JpdGUgYWNjZXNz
ZXMgdG8gdGhlIHVzZXIgbWVtb3J5DQorICBzcGFjZSBzaW5jZSByZWNvcmRp
bmcgb25seSB0YWtlcyBwbGFjZSB3aGVuIHRyYWNpbmcgYSBwcm9jZXNzLg0K
KyAgTm90ZSB0aGF0IGVuYWJsaW5nIHRoaXMgb3B0aW9uIHdpbGwgZW5sYXJn
ZSB0aGUga2VybmVsIGltYWdlDQorICB3aXRoIGFib3V0IDEwIEtCLg0KKw0K
KyAgSWYgaW4gZG91YnQsIHNheSBOLg0KKw0KIEtlcm5lbCBzdXBwb3J0IGZv
ciBFTEYgYmluYXJpZXMNCiBDT05GSUdfQklORk1UX0VMRg0KICAgRUxGIChF
eGVjdXRhYmxlIGFuZCBMaW5rYWJsZSBGb3JtYXQpIGlzIGEgZm9ybWF0IGZv
ciBsaWJyYXJpZXMgYW5kDQpkaWZmIC1OdXIgbGludXgtMi40LjE3L2luY2x1
ZGUvYXNtLWkzODYvcHJvY2Vzc29yLmggbGludXgvaW5jbHVkZS9hc20taTM4
Ni9wcm9jZXNzb3IuaA0KLS0tIGxpbnV4LTIuNC4xNy9pbmNsdWRlL2FzbS1p
Mzg2L3Byb2Nlc3Nvci5oCVNhdCBEZWMgMjIgMDk6MzU6MTcgMjAwMQ0KKysr
IGxpbnV4L2luY2x1ZGUvYXNtLWkzODYvcHJvY2Vzc29yLmgJVHVlIERlYyAy
NSAxOToxNTowMiAyMDAxDQpAQCAtMzYyLDYgKzM2MiwxNiBAQA0KIAl1bnNp
Z25lZCBsb25nIF9fY2FjaGVsaW5lX2ZpbGxlcls1XTsNCiB9Ow0KIA0KKy8q
IA0KKyAqIFdlIGhhdmUgdG8gZGVjbGFyZSBsaXN0X2hlYWQgaGVyZSAoYWdh
aW4pIGJlY2F1c2UgR0NDIA0KKyAqIG9ubHkgYWxsb3dzIHVzIHRvIHVzZSBh
IHBvaW50ZXIgdG8gbGlzdF9oZWFkIGhlcmUgJ2NhdXNlDQorICogb2YgY3Jv
c3MtY29tcGlsYXRpb24gYmV0d2VlbiBsaXN0LmggYW5kIHByb2Nlc3Nvci5o
LCBhbmQNCisgKiBJIHJlYWxseSB3YW50IGEgbGlzdF9oZWFkIHN0cnVjdCwg
bm90IGEgcG9pbnRlciB0byBvbmUuDQorICovDQorc3RydWN0IF9saXN0X2hl
YWQgew0KKwlzdHJ1Y3QgbGlzdF9oZWFkICpuZXh0LCAqcHJldjsNCit9Ow0K
Kw0KIHN0cnVjdCB0aHJlYWRfc3RydWN0IHsNCiAJdW5zaWduZWQgbG9uZwll
c3AwOw0KIAl1bnNpZ25lZCBsb25nCWVpcDsNCkBAIC0zODEsNiArMzkxLDEy
IEBADQogLyogSU8gcGVybWlzc2lvbnMgKi8NCiAJaW50CQlpb3Blcm07DQog
CXVuc2lnbmVkIGxvbmcJaW9fYml0bWFwW0lPX0JJVE1BUF9TSVpFKzFdOw0K
Ky8qIGV4dGVuZGVkIHB0cmFjZSBtZW1kaWZmIGRhdGEgKi8NCisjaWYgZGVm
aW5lZChDT05GSUdfRVhQVFJBQ0UpDQorCXN0cnVjdCBfbGlzdF9oZWFkIG1l
bWRpZmZfbGlzdDsNCisJc3RydWN0IG1lbWRpZmZfc3RydWN0ICptZW1kaWZm
X25saXN0Ow0KKwlpbnQgbWVtZGlmZl9lcnJvcjsNCisjZW5kaWYNCiB9Ow0K
IA0KICNkZWZpbmUgSU5JVF9USFJFQUQgIHsJCQkJCQlcDQpkaWZmIC1OdXIg
bGludXgtMi40LjE3L2luY2x1ZGUvYXNtLWkzODYvcHRyYWNlLmggbGludXgv
aW5jbHVkZS9hc20taTM4Ni9wdHJhY2UuaA0KLS0tIGxpbnV4LTIuNC4xNy9p
bmNsdWRlL2FzbS1pMzg2L3B0cmFjZS5oCVNhdCBEZWMgMjIgMDk6MzU6MTcg
MjAwMQ0KKysrIGxpbnV4L2luY2x1ZGUvYXNtLWkzODYvcHRyYWNlLmgJVHVl
IERlYyAyNSAyMzo1MjozNCAyMDAxDQpAQCAtMSw2ICsxLDggQEANCiAjaWZu
ZGVmIF9JMzg2X1BUUkFDRV9IDQogI2RlZmluZSBfSTM4Nl9QVFJBQ0VfSA0K
IA0KKyNpbmNsdWRlIDxsaW51eC9jb25maWcuaD4NCisNCiAjZGVmaW5lIEVC
WCAwDQogI2RlZmluZSBFQ1ggMQ0KICNkZWZpbmUgRURYIDINCkBAIC01MSwx
MyArNTMsNTQgQEANCiANCiAjZGVmaW5lIFBUUkFDRV9TRVRPUFRJT05TICAg
ICAgICAgMjENCiANCisjZGVmaW5lIFBUUkFDRV9SQVdNRU1ESUZGICAgICAg
ICAgNTANCisjZGVmaW5lIFBUUkFDRV9ESUZGTUVNICAgICAgICAgICAgNTEN
CisjZGVmaW5lIFBUUkFDRV9QQVRDSE1FTSAgICAgICAgICAgNTINCisNCiAv
KiBvcHRpb25zIHNldCB1c2luZyBQVFJBQ0VfU0VUT1BUSU9OUyAqLw0KICNk
ZWZpbmUgUFRSQUNFX09fVFJBQ0VTWVNHT09EICAgICAweDAwMDAwMDAxDQog
DQorI2RlZmluZSBNRU1ESUZGX0lEX19BTk9OWU1PVVMJCTANCisjZGVmaW5l
IE1FTURJRkZfSURfX1BVVF9VU0VSX1U2NAkxDQorI2RlZmluZSBNRU1ESUZG
X0lEX19QVVRfVVNFUl9BU00JMg0KKyNkZWZpbmUgTUVNRElGRl9JRF9fQ09Q
WV9VU0VSCQkzDQorI2RlZmluZSBNRU1ESUZGX0lEX19DT05TVEFOVF9DT1BZ
X1VTRVIJNA0KKyNkZWZpbmUgTUVNRElGRl9JRF9fRE9fQ0xFQVJfVVNFUgk1
DQorDQorI2lmIGRlZmluZWQoQ09ORklHX0VYUFRSQUNFKQkJCQkJICAgICAg
IA0KK2V4dGVybiB2b2lkIF9fcmVjb3JkX21lbWRpZmYodm9pZCAqcHRyLCB1
bnNpZ25lZCBsb25nIHNpemUsDQorCQkJICAgICB1bnNpZ25lZCBsb25nIGlk
KTsNCisjZGVmaW5lIHJlY29yZF9tZW1kaWZmKHB0ciwgc2l6ZSwgaWQpCQkJ
XA0KK2RvIHsJCQkJCQkJXA0KKyAgICAgICAgaWYgKGN1cnJlbnQtPnB0cmFj
ZSAmIFBUX1BUUkFDRUQpCQlcDQorICAgICAgICAgICAgICAgIF9fcmVjb3Jk
X21lbWRpZmYoKHB0ciksIChzaXplKSwgKGlkKSk7CVwNCit9IHdoaWxlICgw
KQkNCisjZWxzZQkJCQkJCQkJCQ0KKyNkZWZpbmUgcmVjb3JkX21lbWRpZmYo
cHRyLCBzaXplLCBpZCkgZG8geyB9IHdoaWxlICgwKQkJDQorI2VuZGlmDQor
DQogI2lmZGVmIF9fS0VSTkVMX18NCiAjZGVmaW5lIHVzZXJfbW9kZShyZWdz
KSAoKFZNX01BU0sgJiAocmVncyktPmVmbGFncykgfHwgKDMgJiAocmVncykt
PnhjcykpDQogI2RlZmluZSBpbnN0cnVjdGlvbl9wb2ludGVyKHJlZ3MpICgo
cmVncyktPmVpcCkNCiBleHRlcm4gdm9pZCBzaG93X3JlZ3Moc3RydWN0IHB0
X3JlZ3MgKik7DQotI2VuZGlmDQorDQorI2luY2x1ZGUgPGxpbnV4L2xpc3Qu
aD4NCisNCitzdHJ1Y3QgbWVtZGlmZl9zdHJ1Y3Qgew0KKwlzdHJ1Y3QgbGlz
dF9oZWFkIGxpc3Q7DQorCXVuc2lnbmVkIGxvbmcgYmVnaW5fYWRkcjsNCisJ
dW5zaWduZWQgbG9uZyBzaXplOw0KKwl1bnNpZ25lZCBsb25nIGlkOw0KK307
DQorDQorI2lmIGRlZmluZWQoQ09ORklHX0VYUFRSQUNFKQ0KK3ZvaWQgaW5p
dF9tZW1kaWZmX2xpc3RzKHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzayk7DQor
dm9pZCBjbGVhcl9tZW1kaWZmX2xpc3RzKHN0cnVjdCB0YXNrX3N0cnVjdCAq
dGFzayk7DQorI2Vsc2UNCisjZGVmaW5lIGluaXRfbWVtZGlmZl9saXN0cyh0
YXNrKSBkbyB7IH0gd2hpbGUgKDApDQorI2RlZmluZSBjbGVhcl9tZW1kaWZm
X2xpc3RzKHRhc2spIGRvIHsgfSB3aGlsZSAoMCkNCisjZW5kaWYgLyogQ09O
RklHX0VYUFRSQUNFICovDQorDQorI2VuZGlmIC8qIF9fS0VSTkVMX18gKi8N
CiANCiAjZW5kaWYNCmRpZmYgLU51ciBsaW51eC0yLjQuMTcvYXJjaC9pMzg2
L2tlcm5lbC9wdHJhY2UuYyBsaW51eC9hcmNoL2kzODYva2VybmVsL3B0cmFj
ZS5jDQotLS0gbGludXgtMi40LjE3L2FyY2gvaTM4Ni9rZXJuZWwvcHRyYWNl
LmMJU2F0IERlYyAyMiAwOTozNTo0MCAyMDAxDQorKysgbGludXgvYXJjaC9p
Mzg2L2tlcm5lbC9wdHJhY2UuYwlXZWQgRGVjIDI2IDIwOjQ5OjE0IDIwMDEN
CkBAIC0zLDYgKzMsOCBAQA0KIC8qDQogICogUGVudGl1bSBJSUkgRlhTUiwg
U1NFIHN1cHBvcnQNCiAgKglHYXJldGggSHVnaGVzIDxnYXJldGhAdmFsaW51
eC5jb20+LCBNYXkgMjAwMA0KKyAqIEV4dGVuZGVkIHB0cmFjZSBzdXBwb3J0
DQorICogICAgICBGcmFuayBDb3JuZWxpcyA8RnJhbmsuQ29ybmVsaXNAZWxp
cy5ydWcuYWMuYmU+LCBEZWNlbWJlciAyMDAxDQogICovDQogDQogI2luY2x1
ZGUgPGxpbnV4L2tlcm5lbC5oPg0KQEAgLTEzLDYgKzE1LDggQEANCiAjaW5j
bHVkZSA8bGludXgvZXJybm8uaD4NCiAjaW5jbHVkZSA8bGludXgvcHRyYWNl
Lmg+DQogI2luY2x1ZGUgPGxpbnV4L3VzZXIuaD4NCisjaW5jbHVkZSA8bGlu
dXgvc2xhYi5oPg0KKyNpbmNsdWRlIDxsaW51eC9jb25maWcuaD4NCiANCiAj
aW5jbHVkZSA8YXNtL3VhY2Nlc3MuaD4NCiAjaW5jbHVkZSA8YXNtL3BndGFi
bGUuaD4NCkBAIC0yMSw2ICsyNSwxOCBAQA0KICNpbmNsdWRlIDxhc20vaTM4
Ny5oPg0KICNpbmNsdWRlIDxhc20vZGVidWdyZWcuaD4NCiANCisjdW5kZWYg
UFRSQUNFX0RFQlVHDQorDQorI2lmZGVmIFBUUkFDRV9ERUJVRw0KKyNkZWZp
bmUgREVCVUcoc3R1ZmYuLi4pIGRvIHsJCQkJCQlcDQorcHJpbnRrKEtFUk5f
REVCVUcgInB0cmFjZV9kZWJ1ZzogY3VycmVudC0+cGlkID0gJWQgKCVzKVxu
IiwgCQlcDQorICAgICAgIGN1cnJlbnQtPnBpZCwgY3VycmVudC0+Y29tbSk7
CQkJCQlcDQorcHJpbnRrKEtFUk5fREVCVUcgc3R1ZmYpOwkJCQkJCVwNCit9
IHdoaWxlICgwKQ0KKyNlbHNlDQorI2RlZmluZSBERUJVRyhzdHVmZi4uLikg
ZG8geyB9IHdoaWxlICgwKQ0KKyNlbmRpZg0KKw0KIC8qDQogICogZG9lcyBu
b3QgeWV0IGNhdGNoIHNpZ25hbHMgc2VudCB3aGVuIHRoZSBjaGlsZCBkaWVz
Lg0KICAqIGluIGV4aXQuYyBvciBpbiBzaWduYWwuYy4NCkBAIC0zOCw2ICs1
NCwyNTEgQEANCiAgKi8NCiAjZGVmaW5lIEVGTF9PRkZTRVQgKChFRkwtMikq
NC1zaXplb2Yoc3RydWN0IHB0X3JlZ3MpKQ0KIA0KKyNpZiBkZWZpbmVkKENP
TkZJR19FWFBUUkFDRSkNCitzdGF0aWMga21lbV9jYWNoZV90ICptZW1kaWZm
X2NhY2hlcDsNCisNCitzdGF0aWMgaW50IF9faW5pdCBtZW1kaWZmX2NhY2hl
X2luaXQodm9pZCkNCit7DQorCW1lbWRpZmZfY2FjaGVwID0ga21lbV9jYWNo
ZV9jcmVhdGUoIm1lbWRpZmZfY2FjaGUiLA0KKwkJCQkJICAgc2l6ZW9mKHN0
cnVjdCBtZW1kaWZmX3N0cnVjdCksDQorCQkJCQkgICAwLCBTTEFCX0hXQ0FD
SEVfQUxJR04sDQorCQkJCQkgICBOVUxMLCBOVUxMKTsNCisJaWYgKCFtZW1k
aWZmX2NhY2hlcCkNCisJCXBhbmljKCJtZW1kaWZmX2NhY2hlOiBDb3VsZG4n
dCBhbGxvYyBtZW1vcnkuIik7DQorCXJldHVybiAwOw0KK30NCitfX2luaXRj
YWxsKG1lbWRpZmZfY2FjaGVfaW5pdCk7DQorDQorc3RhdGljIGlubGluZSBz
dHJ1Y3QgbWVtZGlmZl9zdHJ1Y3QgKm1lbWRpZmZfYWxsb2Moc3RydWN0IHRh
c2tfc3RydWN0ICp0YXNrKQ0KK3sNCisJc3RydWN0IG1lbWRpZmZfc3RydWN0
ICptZW1kaWZmOw0KKwltZW1kaWZmID0ga21lbV9jYWNoZV9hbGxvYyhtZW1k
aWZmX2NhY2hlcCwgU0xBQl9LRVJORUwpOw0KKwlpZiAoIW1lbWRpZmYpIHsN
CisJCXByaW50ayhLRVJOX0NSSVQgIm1lbWRpZmZfY2FjaGU6IG91dCBvZiBt
ZW1vcnlcbiIpOw0KKwkJdGFzay0+dGhyZWFkLm1lbWRpZmZfZXJyb3IgPSAt
RU5PTUVNOw0KKwl9DQorCXJldHVybiBtZW1kaWZmOw0KK30NCisNCitzdGF0
aWMgaW5saW5lIHZvaWQgY29weV9tZW1kaWZmX3JlY29yZChzdHJ1Y3QgbWVt
ZGlmZl9zdHJ1Y3QgKmRlc3QsDQorCQkJCSAgICAgICBzdHJ1Y3QgbWVtZGlm
Zl9zdHJ1Y3QgKnNyYykNCit7DQorCWlmICghZGVzdCB8fCAhc3JjKQ0KKwkJ
cmV0dXJuOw0KKwlkZXN0LT5iZWdpbl9hZGRyID0gc3JjLT5iZWdpbl9hZGRy
Ow0KKwlkZXN0LT5zaXplID0gc3JjLT5zaXplOw0KKwlkZXN0LT5pZCA9IHNy
Yy0+aWQ7DQorfQ0KKw0KKy8qDQorICogQnVpbGRzIHRoZSBtZW1kaWZmIHJl
Y29yZCBhbmQgYWRkcyBpdCB0byB0aGUgbWVtZGlmZl9saXN0IG9mDQorICog
dGhlIGN1cnJlbnQgcHJvY2Vzcy4NCisgKi8NCit2b2lkIF9fcmVjb3JkX21l
bWRpZmYodm9pZCAqcHRyLCB1bnNpZ25lZCBsb25nIHNpemUsDQorCQkgICAg
ICB1bnNpZ25lZCBsb25nIGlkKQ0KK3sNCisJc3RydWN0IG1lbWRpZmZfc3Ry
dWN0ICptZW1kaWZmOwkJCQkNCisJbWVtZGlmZiA9IG1lbWRpZmZfYWxsb2Mo
Y3VycmVudCk7DQorCWlmICghbWVtZGlmZikJCQkJDQorCQlyZXR1cm47CQkJ
CQkJDQorCW1lbWRpZmYtPmJlZ2luX2FkZHIgPSAodW5zaWduZWQgbG9uZylw
dHI7CQkNCisJbWVtZGlmZi0+c2l6ZSA9IHNpemU7DQorCW1lbWRpZmYtPmlk
ID0gaWQ7DQorCWxpc3RfYWRkX3RhaWwoJm1lbWRpZmYtPmxpc3QsIA0KKwkJ
ICAgICAgKHN0cnVjdCBsaXN0X2hlYWQgKikmY3VycmVudC0+dGhyZWFkLm1l
bWRpZmZfbGlzdCk7DQorfQ0KKw0KKy8qDQorICogTmV4dCBjb2RlIGFsc28g
Z2V0cyBpbnZva2VkIGJ5IHByb2Nlc3MuYzpjb3B5X3RocmVhZA0KKyAqLw0K
K3ZvaWQgaW5pdF9tZW1kaWZmX2xpc3RzKHN0cnVjdCB0YXNrX3N0cnVjdCAq
dGFzaykNCit7DQorCURFQlVHKCJpbml0X21lbWRpZmZfbGlzdHMgY2FsbGVk
XG4iKTsNCisJSU5JVF9MSVNUX0hFQUQoKHN0cnVjdCBsaXN0X2hlYWQgKikm
dGFzay0+dGhyZWFkLm1lbWRpZmZfbGlzdCk7DQorCXRhc2stPnRocmVhZC5t
ZW1kaWZmX25saXN0ID0gTlVMTDsNCisJdGFzay0+dGhyZWFkLm1lbWRpZmZf
ZXJyb3IgPSAwOw0KK30NCisNCisvKg0KKyAqIENsZWFycyB0aGUgbWVtZGlm
ZiBsaXN0cyAodGhlIHJhdyBhbmQgbm9ybWFsaXplZCBvbmUpIG9mIHRoZQ0K
KyAqIGdpdmVuIHByb2Nlc3MuDQorICogTmV4dCBjb2RlIGFsc28gZ2V0cyBp
bnZva2VkIGJ5IHByb2Nlc3MuYzpleGl0X3RocmVhZA0KKyAqLw0KK3ZvaWQg
Y2xlYXJfbWVtZGlmZl9saXN0cyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2sp
DQorew0KKwlzdHJ1Y3QgbGlzdF9oZWFkICpjYWNoZV9vYmosICpoZWFkOw0K
KwkvKiBjbGVhciB0aGUgcmF3IG1lbWRpZmYgbGlzdCAqLw0KKwloZWFkID0g
KHN0cnVjdCBsaXN0X2hlYWQgKikmdGFzay0+dGhyZWFkLm1lbWRpZmZfbGlz
dDsNCisJY2FjaGVfb2JqID0gaGVhZC0+bmV4dDsNCisJd2hpbGUgKGNhY2hl
X29iaiAhPSBoZWFkKSB7DQorCQlzdHJ1Y3QgbGlzdF9oZWFkICpraWxsX21l
Ow0KKwkJa2lsbF9tZSA9IGNhY2hlX29iajsNCisJCWNhY2hlX29iaiA9IGNh
Y2hlX29iai0+bmV4dDsNCisJCWttZW1fY2FjaGVfZnJlZShtZW1kaWZmX2Nh
Y2hlcCwga2lsbF9tZSk7DQorCX0NCisJLyogY2xlYXIgdGhlIChkb3VibGUg
bGlua2VkKSBub3JtYWxpemVkIG1lbWRpZmYgbGlzdCAqLw0KKwloZWFkID0g
JnRhc2stPnRocmVhZC5tZW1kaWZmX25saXN0LT5saXN0Ow0KKwlpZiAoaGVh
ZCkNCisJCWNhY2hlX29iaiA9IGhlYWQtPm5leHQ7DQorCWVsc2UNCisJCWNh
Y2hlX29iaiA9IE5VTEw7DQorCXdoaWxlIChjYWNoZV9vYmogIT0gaGVhZCkg
ew0KKwkJc3RydWN0IGxpc3RfaGVhZCAqa2lsbF9tZTsNCisJCWtpbGxfbWUg
PSBjYWNoZV9vYmo7DQorCQljYWNoZV9vYmogPSBjYWNoZV9vYmotPm5leHQ7
DQorCQlrbWVtX2NhY2hlX2ZyZWUobWVtZGlmZl9jYWNoZXAsIGtpbGxfbWUp
Ow0KKwl9DQorCWlmIChoZWFkKQ0KKwkJa21lbV9jYWNoZV9mcmVlKG1lbWRp
ZmZfY2FjaGVwLCBoZWFkKTsNCisJaW5pdF9tZW1kaWZmX2xpc3RzKHRhc2sp
Ow0KK30NCisNCisvKiANCisgKiBOZXh0IGZ1bmN0aW9uIGNvbnN0cnVjdHMg
dGhlIG5vcm1hbGl6ZWQgbWVtZGlmZiBsaXN0DQorICogdXNpbmcgdGhlIGlu
Zm9ybWF0aW9uIGZyb20gdGhlIHJhdyBtZW1kaWZmIGxpc3QuDQorICovDQor
c3RhdGljIHZvaWQgbm9ybWFsaXplKHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFz
aykNCit7DQorCXN0cnVjdCBtZW1kaWZmX3N0cnVjdCAqbmxpc3QsICpjdXJy
X2VudHJ5LCAqbmV4dF9lbnRyeTsNCisJc3RydWN0IGxpc3RfaGVhZCAqdG1w
LCAqY3VyciwgKm5leHQ7DQorCWlmICh0YXNrLT50aHJlYWQubWVtZGlmZl9u
bGlzdCkNCisJCXJldHVybjsgLyogYWxyZWFkeSBub3JtYWxpemVkICovDQor
CWlmICghKG5saXN0ID0gbWVtZGlmZl9hbGxvYyh0YXNrKSkpDQorCQlyZXR1
cm47DQorCS8qIGZpcnN0ICdpbnNlcnRpb24gc29ydCcgdGhlIHJhdyBtZW1k
aWZmcyBpbnRvIHRoZSBub3JtYWxpemVkIGxpc3QgKi8NCisJSU5JVF9MSVNU
X0hFQUQoJm5saXN0LT5saXN0KTsNCisJbGlzdF9mb3JfZWFjaCh0bXAsIChz
dHJ1Y3QgbGlzdF9oZWFkICopJnRhc2stPnRocmVhZC5tZW1kaWZmX2xpc3Qp
IHsNCisJCXN0cnVjdCBtZW1kaWZmX3N0cnVjdCAqcmF3X2VudHJ5Ow0KKwkJ
c3RydWN0IGxpc3RfaGVhZCAqbnRtcDsNCisJCXJhd19lbnRyeSA9IGxpc3Rf
ZW50cnkodG1wLCBzdHJ1Y3QgbWVtZGlmZl9zdHJ1Y3QsIGxpc3QpOw0KKwkJ
bGlzdF9mb3JfZWFjaF9wcmV2KG50bXAsICZubGlzdC0+bGlzdCkgew0KKwkJ
CXN0cnVjdCBtZW1kaWZmX3N0cnVjdCAqbl9lbnRyeTsNCisJCQluX2VudHJ5
ID0gbGlzdF9lbnRyeShudG1wLCBzdHJ1Y3QgbWVtZGlmZl9zdHJ1Y3QsIGxp
c3QpOw0KKwkJCWlmIChuX2VudHJ5LT5iZWdpbl9hZGRyIDwgcmF3X2VudHJ5
LT5iZWdpbl9hZGRyKSB7DQorCQkJCXN0cnVjdCBtZW1kaWZmX3N0cnVjdCAq
bmV3Ow0KKwkJCQlpZiAoIShuZXcgPSBtZW1kaWZmX2FsbG9jKHRhc2spKSkN
CisJCQkJCXJldHVybjsNCisJCQkJY29weV9tZW1kaWZmX3JlY29yZChuZXcs
IHJhd19lbnRyeSk7DQorCQkJCXJhd19lbnRyeSA9IE5VTEw7DQorCQkJCWxp
c3RfYWRkKCZuZXctPmxpc3QsICZuX2VudHJ5LT5saXN0KTsNCisJCQkJYnJl
YWs7DQorCQkJfQ0KKwkJfQ0KKwkJaWYgKHJhd19lbnRyeSkgew0KKwkJCXN0
cnVjdCBtZW1kaWZmX3N0cnVjdCAqbmV3Ow0KKwkJCWlmICghKG5ldyA9IG1l
bWRpZmZfYWxsb2ModGFzaykpKQ0KKwkJCQlyZXR1cm47DQorCQkJY29weV9t
ZW1kaWZmX3JlY29yZChuZXcsIHJhd19lbnRyeSk7DQorCQkJbGlzdF9hZGQo
Jm5ldy0+bGlzdCwgJm5saXN0LT5saXN0KTsNCisJCX0NCisJfQ0KKwkvKiBu
b3cgbm9ybWFsaXplIHRoZSBhbHJlYWR5IHNvcnRlZCBubGlzdCAqLw0KKwlj
dXJyID0gbmxpc3QtPmxpc3QubmV4dDsNCisJbmV4dCA9IGN1cnItPm5leHQ7
DQorCXdoaWxlIChuZXh0ICE9ICZubGlzdC0+bGlzdCkgew0KKwkJY3Vycl9l
bnRyeSA9IGxpc3RfZW50cnkoY3Vyciwgc3RydWN0IG1lbWRpZmZfc3RydWN0
LCBsaXN0KTsNCisJCW5leHRfZW50cnkgPSBsaXN0X2VudHJ5KG5leHQsIHN0
cnVjdCBtZW1kaWZmX3N0cnVjdCwgbGlzdCk7DQorCQlpZiAoY3Vycl9lbnRy
eS0+YmVnaW5fYWRkciArIGN1cnJfZW50cnktPnNpemUgPj0gbmV4dF9lbnRy
eS0+YmVnaW5fYWRkcikgew0KKwkJCWN1cnJfZW50cnktPnNpemUgPSBuZXh0
X2VudHJ5LT5iZWdpbl9hZGRyICsgbmV4dF9lbnRyeS0+c2l6ZQ0KKwkJCQkt
IGN1cnJfZW50cnktPmJlZ2luX2FkZHI7DQorCQkJbGlzdF9kZWwobmV4dCk7
DQorCQkJa21lbV9jYWNoZV9mcmVlKG1lbWRpZmZfY2FjaGVwLCBuZXh0KTsN
CisJCQluZXh0ID0gY3Vyci0+bmV4dDsgDQorCQkJY29udGludWU7DQorCQl9
DQorCQljdXJyID0gY3Vyci0+bmV4dDsNCisJCW5leHQgPSBjdXJyLT5uZXh0
Ow0KKwl9DQorICAgICAgICB0YXNrLT50aHJlYWQubWVtZGlmZl9ubGlzdCA9
IG5saXN0Ow0KK30NCisNCitzdGF0aWMgaW5saW5lIGludCBjb3VudF9tZW1k
aWZmcyhzdHJ1Y3QgbGlzdF9oZWFkICpsaXN0KQ0KK3sNCisJaW50IGNvdW50
ID0gMDsNCisJc3RydWN0IGxpc3RfaGVhZCAqdG1wOw0KKwlsaXN0X2Zvcl9l
YWNoKHRtcCwgbGlzdCkNCisJCWNvdW50Kys7DQorCXJldHVybiBjb3VudDsN
Cit9DQorDQorc3RhdGljIGludCBjb3VudF9yYXdfd3JpdGVzKHN0cnVjdCB0
YXNrX3N0cnVjdCAqdGFzaykNCit7DQorCXJldHVybiBjb3VudF9tZW1kaWZm
cygoc3RydWN0IGxpc3RfaGVhZCAqKSZ0YXNrLT50aHJlYWQubWVtZGlmZl9s
aXN0KTsNCit9DQorDQorc3RhdGljIGludCBjb3VudF9ub3JtYWxpemVkX3dy
aXRlcyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2spDQorew0KKwlpZiAoIXRh
c2stPnRocmVhZC5tZW1kaWZmX25saXN0KQ0KKwkJcmV0dXJuIDA7DQorCXJl
dHVybiBjb3VudF9tZW1kaWZmcygoc3RydWN0IGxpc3RfaGVhZCAqKSZ0YXNr
LT50aHJlYWQubWVtZGlmZl9ubGlzdC0+bGlzdCk7DQorfQ0KKw0KK3N0YXRp
YyB1bnNpZ25lZCBsb25nIGdldF9yYXdfcmVjb3JkX3NpemUoc3RydWN0IHRh
c2tfc3RydWN0ICp0YXNrKQ0KK3sNCisJdW5zaWduZWQgbG9uZyBzaXplID0g
MDsNCisJc3RydWN0IGxpc3RfaGVhZCAqbGlzdCwgKnRtcDsNCisJbGlzdCA9
IChzdHJ1Y3QgbGlzdF9oZWFkICopJnRhc2stPnRocmVhZC5tZW1kaWZmX2xp
c3Q7DQorCXNpemUgKz0gc2l6ZW9mKHVuc2lnbmVkIGxvbmcpOw0KKwlsaXN0
X2Zvcl9lYWNoKHRtcCwgbGlzdCkgew0KKwkJc2l6ZSArPSAzICogc2l6ZW9m
KHVuc2lnbmVkIGxvbmcpOw0KKwkJc2l6ZSArPSBsaXN0X2VudHJ5KHRtcCwg
c3RydWN0IG1lbWRpZmZfc3RydWN0LCBsaXN0KS0+c2l6ZTsNCisJfQ0KKwly
ZXR1cm4gc2l6ZTsNCit9DQorDQorc3RhdGljIHZvaWQgd3JpdGVfcmF3X3Jl
Y29yZChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2ssIGxvbmcgcHRyKQ0KK3sN
CisJc3RydWN0IGxpc3RfaGVhZCAqbGlzdCwgKnRtcDsNCisJX19wdXRfdXNl
cihjb3VudF9yYXdfd3JpdGVzKHRhc2spLCAoKHVuc2lnbmVkIGxvbmcgKilw
dHIpKyspOw0KKwlsaXN0ID0gKHN0cnVjdCBsaXN0X2hlYWQgKikmdGFzay0+
dGhyZWFkLm1lbWRpZmZfbGlzdDsNCisJbGlzdF9mb3JfZWFjaCh0bXAsIGxp
c3QpIHsNCisJCXN0cnVjdCBtZW1kaWZmX3N0cnVjdCAqbWVtZGlmZjsNCisJ
CW1lbWRpZmYgPSBsaXN0X2VudHJ5KHRtcCwgc3RydWN0IG1lbWRpZmZfc3Ry
dWN0LCBsaXN0KTsNCisJCV9fcHV0X3VzZXIobWVtZGlmZi0+YmVnaW5fYWRk
ciwgKCh1bnNpZ25lZCBsb25nICopcHRyKSsrKTsNCisJCV9fcHV0X3VzZXIo
bWVtZGlmZi0+aWQsICgodW5zaWduZWQgbG9uZyAqKXB0cikrKyk7DQorCQlf
X3B1dF91c2VyKG1lbWRpZmYtPnNpemUsICgodW5zaWduZWQgbG9uZyAqKXB0
cikrKyk7DQorCQlpZiAocHRyYWNlX3JlYWRkYXRhKHRhc2ssIG1lbWRpZmYt
PmJlZ2luX2FkZHIsIA0KKwkJCQkgICAgKGNoYXIgKilwdHIsIG1lbWRpZmYt
PnNpemUpIDwgMCkNCisJCQlwcmludGsoS0VSTl9DUklUICJ3cml0ZV9yYXdf
cmVjb3JkOiByZWFkZGF0YSBlcnJvclxuIik7DQorCQlwdHIgKz0gbWVtZGlm
Zi0+c2l6ZTsNCisJfQ0KK30NCisNCitzdGF0aWMgdW5zaWduZWQgbG9uZyBn
ZXRfbm9ybWFsaXplZF9yZWNvcmRfc2l6ZShzdHJ1Y3QgdGFza19zdHJ1Y3Qg
KnRhc2spDQorew0KKwl1bnNpZ25lZCBsb25nIHNpemUgPSAwOw0KKwlzdHJ1
Y3QgbGlzdF9oZWFkICpsaXN0LCAqdG1wOw0KKwlpZiAoIXRhc2stPnRocmVh
ZC5tZW1kaWZmX25saXN0KQ0KKwkJcmV0dXJuIDA7DQorCWxpc3QgPSAoc3Ry
dWN0IGxpc3RfaGVhZCAqKSZ0YXNrLT50aHJlYWQubWVtZGlmZl9ubGlzdC0+
bGlzdDsNCisJc2l6ZSArPSBzaXplb2YodW5zaWduZWQgbG9uZyk7DQorCWxp
c3RfZm9yX2VhY2godG1wLCBsaXN0KSB7DQorCQlzaXplICs9IDIgKiBzaXpl
b2YodW5zaWduZWQgbG9uZyk7DQorCQlzaXplICs9IGxpc3RfZW50cnkodG1w
LCBzdHJ1Y3QgbWVtZGlmZl9zdHJ1Y3QsIGxpc3QpLT5zaXplOw0KKwl9DQor
CXJldHVybiBzaXplOw0KK30NCisNCitzdGF0aWMgdm9pZCB3cml0ZV9ub3Jt
YWxpemVkX3JlY29yZChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2ssIGxvbmcg
cHRyKQ0KK3sNCisJc3RydWN0IGxpc3RfaGVhZCAqbGlzdCwgKnRtcDsNCisJ
X19wdXRfdXNlcihjb3VudF9ub3JtYWxpemVkX3dyaXRlcyh0YXNrKSwgKCh1
bnNpZ25lZCBsb25nICopcHRyKSsrKTsNCisJaWYgKCF0YXNrLT50aHJlYWQu
bWVtZGlmZl9ubGlzdCkNCisJCXJldHVybjsNCisJbGlzdCA9IChzdHJ1Y3Qg
bGlzdF9oZWFkICopJnRhc2stPnRocmVhZC5tZW1kaWZmX25saXN0LT5saXN0
Ow0KKwlsaXN0X2Zvcl9lYWNoKHRtcCwgbGlzdCkgew0KKwkJc3RydWN0IG1l
bWRpZmZfc3RydWN0ICptZW1kaWZmOw0KKwkJbWVtZGlmZiA9IGxpc3RfZW50
cnkodG1wLCBzdHJ1Y3QgbWVtZGlmZl9zdHJ1Y3QsIGxpc3QpOw0KKwkJX19w
dXRfdXNlcihtZW1kaWZmLT5iZWdpbl9hZGRyLCAoKHVuc2lnbmVkIGxvbmcg
KilwdHIpKyspOw0KKwkJX19wdXRfdXNlcihtZW1kaWZmLT5zaXplLCAoKHVu
c2lnbmVkIGxvbmcgKilwdHIpKyspOw0KKwkJaWYgKHB0cmFjZV9yZWFkZGF0
YSh0YXNrLCBtZW1kaWZmLT5iZWdpbl9hZGRyLA0KKwkJCQkgICAgKGNoYXIg
KilwdHIsIG1lbWRpZmYtPnNpemUpIDwgMCkNCisJCQlwcmludGsoS0VSTl9D
UklUICJ3cml0ZV9ub3JtYWxpemVkX3JlY29yZDogcmVhZGRhdGEgZXJyb3Jc
biIpOw0KKwkJcHRyICs9IG1lbWRpZmYtPnNpemU7DQorCX0NCit9DQorI2Vu
ZGlmIC8qIENPTkZJR19FWFBUUkFDRSAqLw0KKw0KIC8qDQogICogdGhpcyBy
b3V0aW5lIHdpbGwgZ2V0IGEgd29yZCBvZmYgb2YgdGhlIHByb2Nlc3NlcyBw
cml2aWxlZ2VkIHN0YWNrLiANCiAgKiB0aGUgb2Zmc2V0IGlzIGhvdyBmYXIg
ZnJvbSB0aGUgYmFzZSBhZGRyIGFzIHN0b3JlZCBpbiB0aGUgVFNTLiAgDQpA
QCAtMTYxLDYgKzQyMiw3IEBADQogCQkJZ290byBvdXQ7DQogCQkvKiBzZXQg
dGhlIHB0cmFjZSBiaXQgaW4gdGhlIHByb2Nlc3MgZmxhZ3MuICovDQogCQlj
dXJyZW50LT5wdHJhY2UgfD0gUFRfUFRSQUNFRDsNCisJCWNsZWFyX21lbWRp
ZmZfbGlzdHMoY3VycmVudCk7DQogCQlyZXQgPSAwOw0KIAkJZ290byBvdXQ7
DQogCX0NCkBAIC0xNzksNiArNDQxLDcgQEANCiANCiAJaWYgKHJlcXVlc3Qg
PT0gUFRSQUNFX0FUVEFDSCkgew0KIAkJcmV0ID0gcHRyYWNlX2F0dGFjaChj
aGlsZCk7DQorCQljbGVhcl9tZW1kaWZmX2xpc3RzKGNoaWxkKTsNCiAJCWdv
dG8gb3V0X3RzazsNCiAJfQ0KIA0KQEAgLTI4Miw3ICs1NDUsOCBAQA0KIAkJ
ZWxzZQ0KIAkJCWNoaWxkLT5wdHJhY2UgJj0gflBUX1RSQUNFU1lTOw0KIAkJ
Y2hpbGQtPmV4aXRfY29kZSA9IGRhdGE7DQotCS8qIG1ha2Ugc3VyZSB0aGUg
c2luZ2xlIHN0ZXAgYml0IGlzIG5vdCBzZXQuICovDQorCQljbGVhcl9tZW1k
aWZmX2xpc3RzKGNoaWxkKTsNCisJCS8qIG1ha2Ugc3VyZSB0aGUgc2luZ2xl
IHN0ZXAgYml0IGlzIG5vdCBzZXQuICovDQogCQl0bXAgPSBnZXRfc3RhY2tf
bG9uZyhjaGlsZCwgRUZMX09GRlNFVCkgJiB+VFJBUF9GTEFHOw0KIAkJcHV0
X3N0YWNrX2xvbmcoY2hpbGQsIEVGTF9PRkZTRVQsdG1wKTsNCiAJCXdha2Vf
dXBfcHJvY2VzcyhjaGlsZCk7DQpAQCAtMzA1LDYgKzU2OSw3IEBADQogCQkv
KiBtYWtlIHN1cmUgdGhlIHNpbmdsZSBzdGVwIGJpdCBpcyBub3Qgc2V0LiAq
Lw0KIAkJdG1wID0gZ2V0X3N0YWNrX2xvbmcoY2hpbGQsIEVGTF9PRkZTRVQp
ICYgflRSQVBfRkxBRzsNCiAJCXB1dF9zdGFja19sb25nKGNoaWxkLCBFRkxf
T0ZGU0VULCB0bXApOw0KKwkJY2xlYXJfbWVtZGlmZl9saXN0cyhjaGlsZCk7
DQogCQl3YWtlX3VwX3Byb2Nlc3MoY2hpbGQpOw0KIAkJYnJlYWs7DQogCX0N
CkBAIC0zMjMsNiArNTg4LDcgQEANCiAJCXRtcCA9IGdldF9zdGFja19sb25n
KGNoaWxkLCBFRkxfT0ZGU0VUKSB8IFRSQVBfRkxBRzsNCiAJCXB1dF9zdGFj
a19sb25nKGNoaWxkLCBFRkxfT0ZGU0VULCB0bXApOw0KIAkJY2hpbGQtPmV4
aXRfY29kZSA9IGRhdGE7DQorCQljbGVhcl9tZW1kaWZmX2xpc3RzKGNoaWxk
KTsNCiAJCS8qIGdpdmUgaXQgYSBjaGFuY2UgdG8gcnVuLiAqLw0KIAkJd2Fr
ZV91cF9wcm9jZXNzKGNoaWxkKTsNCiAJCXJldCA9IDA7DQpAQCAtMzMxLDYg
KzU5Nyw3IEBADQogDQogCWNhc2UgUFRSQUNFX0RFVEFDSDoNCiAJCS8qIGRl
dGFjaCBhIHByb2Nlc3MgdGhhdCB3YXMgYXR0YWNoZWQuICovDQorCSAgICAg
ICAgY2xlYXJfbWVtZGlmZl9saXN0cyhjaGlsZCk7DQogCQlyZXQgPSBwdHJh
Y2VfZGV0YWNoKGNoaWxkLCBkYXRhKTsNCiAJCWJyZWFrOw0KIA0KQEAgLTQy
OCw2ICs2OTUsOTEgQEANCiAJCWJyZWFrOw0KIAl9DQogDQorI2lmIGRlZmlu
ZWQoQ09ORklHX0VYUFRSQUNFKQ0KKwkvKg0KKwkgKiBSQVdNRU1ESUZGOiBS
ZXR1cm5zIHRoZSBudW1iZXIgb2YgcmF3IHdyaXRlcy4NCisJICogV2hlbiBh
ZGRyIT1OVUxMIGl0IHdyaXRlcyB0aGUgc2l6ZSBvZiB0aGUNCisJICogcmF3
IG1lbWRpZmYgcmVjb3JkIHRvIGFkZHIuDQorCSAqIFdoZW4gZGF0YSE9TlVM
TCBpdCB3cml0ZXMgdGhlIHJhdyBtZW1kaWZmDQorCSAqIHJlY29yZCB0byBk
YXRhLg0KKwkgKi8NCisJY2FzZSBQVFJBQ0VfUkFXTUVNRElGRjogew0KKwkJ
dW5zaWduZWQgbG9uZyByZWNvcmRfc2l6ZTsNCisJCXJldCA9IC1FSU87DQor
CQlpZiAoY2hpbGQtPnRocmVhZC5tZW1kaWZmX2Vycm9yKQ0KKwkJCWJyZWFr
Ow0KKwkJaWYgKGFkZHIgJiYgIWFjY2Vzc19vayhWRVJJRllfV1JJVEUsICh1
bnNpZ25lZCAqKWFkZHIsIHNpemVvZih1bnNpZ25lZCBsb25nKSkpDQorCQkJ
YnJlYWs7DQorCQlyZWNvcmRfc2l6ZSA9IGdldF9yYXdfcmVjb3JkX3NpemUo
Y2hpbGQpOw0KKwkJaWYgKGRhdGEgJiYgIWFjY2Vzc19vayhWRVJJRllfV1JJ
VEUsICh1bnNpZ25lZCAqKWRhdGEsIHJlY29yZF9zaXplKSkNCisJCQlicmVh
azsNCisJCWlmIChhZGRyKQ0KKwkJCV9fcHV0X3VzZXIocmVjb3JkX3NpemUs
ICh1bnNpZ25lZCBsb25nICopYWRkcik7DQorCQlpZiAoZGF0YSkNCisJCQl3
cml0ZV9yYXdfcmVjb3JkKGNoaWxkLCBkYXRhKTsNCisJCXJldCA9IGNvdW50
X3Jhd193cml0ZXMoY2hpbGQpOw0KKwkJYnJlYWs7DQorCX0NCisJDQorCS8q
DQorCSAqIERJRkZNRU06IFJldHVybnMgdGhlIG51bWJlciBvZiBub3JtYWxp
emVkIHdyaXRlcy4NCisJICogV2hlbiBhZGRyIT1OVUxMIGl0IHdyaXRlcyB0
aGUgc2l6ZSBvZiB0aGUgbm9ybWFsaXplZA0KKwkgKiBtZW1kaWZmIHJlY29y
ZCB0byBhZGRyLg0KKwkgKiBXaGVuIGRhdGEhPU5VTEwgaXQgd3JpdGVzIHRo
ZSBub3JtYWxpemVkIG1lbWRpZmYNCisJICogcmVjb3JkIHRvIGRhdGEuDQor
CSAqLw0KKwljYXNlIFBUUkFDRV9ESUZGTUVNOiB7DQorCQl1bnNpZ25lZCBs
b25nIHJlY29yZF9zaXplOw0KKwkJcmV0ID0gLUVJTzsNCisJCW5vcm1hbGl6
ZShjaGlsZCk7DQorCQlpZiAoY2hpbGQtPnRocmVhZC5tZW1kaWZmX2Vycm9y
KQ0KKwkJCWJyZWFrOw0KKwkJaWYgKGFkZHIgJiYgIWFjY2Vzc19vayhWRVJJ
RllfV1JJVEUsICh1bnNpZ25lZCAqKWFkZHIsIHNpemVvZih1bnNpZ25lZCBs
b25nKSkpDQorCQkJYnJlYWs7DQorCQlyZWNvcmRfc2l6ZSA9IGdldF9ub3Jt
YWxpemVkX3JlY29yZF9zaXplKGNoaWxkKTsNCisJCWlmIChkYXRhICYmICFh
Y2Nlc3Nfb2soVkVSSUZZX1dSSVRFLCAodW5zaWduZWQgKilkYXRhLCByZWNv
cmRfc2l6ZSkpDQorCQkJYnJlYWs7DQorCQlpZiAoYWRkcikNCisJCQlfX3B1
dF91c2VyKHJlY29yZF9zaXplLCAodW5zaWduZWQgbG9uZyAqKWFkZHIpOw0K
KwkJaWYgKGRhdGEpDQorCQkJd3JpdGVfbm9ybWFsaXplZF9yZWNvcmQoY2hp
bGQsIGRhdGEpOw0KKwkJcmV0ID0gY291bnRfbm9ybWFsaXplZF93cml0ZXMo
Y2hpbGQpOw0KKwkJYnJlYWs7DQorCX0NCisJDQorCS8qDQorCSAqIFBBVENI
TUVNOiBBcHBsaWVzIGEgKG5vcm1hbGl6ZWQpIG1lbWRpZmYgcmVjb3JkDQor
CSAqIGdpdmVuIGJ5IGFkZHIgdG8gdGhlIGNoaWxkIG1lbW9yeSBzcGFjZS4N
CisJICogUmV0dXJuIHRoZSBudW1iZXIgb2YgYnl0ZXMgd3JpdHRlbiB0byB0
aGUgY2hpbGQNCisJICogbWVtb3J5Lg0KKwkgKi8NCisJY2FzZSBQVFJBQ0Vf
UEFUQ0hNRU06IHsNCisJCXVuc2lnbmVkIGxvbmcgbnJlY29yZHMsIG53cml0
dGVuID0gMDsNCisJCXJldCA9IC1FSU87DQorCQlpZiAoIWFkZHIpDQorCQkJ
YnJlYWs7DQorCQlpZiAoIWFjY2Vzc19vayhWRVJJRllfUkVBRCwgKHVuc2ln
bmVkICopYWRkciwgc2l6ZW9mKHVuc2lnbmVkIGxvbmcpKSkNCisJCQlicmVh
azsNCisJCV9fZ2V0X3VzZXIobnJlY29yZHMsICgodW5zaWduZWQgbG9uZyAq
KWFkZHIpKyspOw0KKwkJd2hpbGUgKG5yZWNvcmRzKSB7DQorCQkJdW5zaWdu
ZWQgbG9uZyBiZWdpbl9hZGRyLCBzaXplOw0KKwkJCWlmICghYWNjZXNzX29r
KFZFUklGWV9SRUFELCBhZGRyLCAyICogc2l6ZW9mKHVuc2lnbmVkIGxvbmcp
KSkNCisJCQkJZ290byBvdXRfdHNrOw0KKwkJCV9fZ2V0X3VzZXIoYmVnaW5f
YWRkciwgKCh1bnNpZ25lZCBsb25nICopYWRkcikrKyk7DQorCQkJX19nZXRf
dXNlcihzaXplLCAoKHVuc2lnbmVkIGxvbmcgKilhZGRyKSsrKTsNCisJCQlp
ZiAoIWFjY2Vzc19vayhWRVJJRllfUkVBRCwgYWRkciwgc2l6ZSkpDQorCQkJ
CWdvdG8gb3V0X3RzazsNCisJCQlpZiAocHRyYWNlX3dyaXRlZGF0YShjaGls
ZCwgKGNoYXIgKilhZGRyLCBiZWdpbl9hZGRyLCBzaXplKSA8IDApDQorCQkJ
CWdvdG8gb3V0X3RzazsNCisJCQlud3JpdHRlbiArPSBzaXplOw0KKwkJCWFk
ZHIgKz0gc2l6ZTsNCisJCQlucmVjb3Jkcy0tOw0KKwkJfQ0KKwkJcmV0ID0g
bndyaXR0ZW47DQorCQlicmVhazsNCisJfQ0KKyNlbmRpZiAvKiBDT05GSUdf
RVhQVFJBQ0UgKi8NCisNCiAJZGVmYXVsdDoNCiAJCXJldCA9IC1FSU87DQog
CQlicmVhazsNCmRpZmYgLU51ciBsaW51eC0yLjQuMTcvYXJjaC9pMzg2L2tl
cm5lbC9wcm9jZXNzLmMgbGludXgvYXJjaC9pMzg2L2tlcm5lbC9wcm9jZXNz
LmMNCi0tLSBsaW51eC0yLjQuMTcvYXJjaC9pMzg2L2tlcm5lbC9wcm9jZXNz
LmMJU2F0IERlYyAyMiAwOTozNTo0MCAyMDAxDQorKysgbGludXgvYXJjaC9p
Mzg2L2tlcm5lbC9wcm9jZXNzLmMJV2VkIERlYyAyNiAyMDo1NTowMSAyMDAx
DQpAQCAtNTE1LDcgKzUxNSw3IEBADQogICovDQogdm9pZCBleGl0X3RocmVh
ZCh2b2lkKQ0KIHsNCi0JLyogbm90aGluZyB0byBkbyAuLi4gKi8NCisJY2xl
YXJfbWVtZGlmZl9saXN0cyhjdXJyZW50KTsNCiB9DQogDQogdm9pZCBmbHVz
aF90aHJlYWQodm9pZCkNCkBAIC01OTcsNiArNTk3LDggQEANCiAJdW5sYXp5
X2ZwdShjdXJyZW50KTsNCiAJc3RydWN0X2NweSgmcC0+dGhyZWFkLmkzODcs
ICZjdXJyZW50LT50aHJlYWQuaTM4Nyk7DQogDQorCWluaXRfbWVtZGlmZl9s
aXN0cyhwKTsNCisNCiAJcmV0dXJuIDA7DQogfQ0KIA0KZGlmZiAtTnVyIGxp
bnV4LTIuNC4xNy9pbmNsdWRlL2FzbS1pMzg2L3VhY2Nlc3MuaCBsaW51eC9p
bmNsdWRlL2FzbS1pMzg2L3VhY2Nlc3MuaA0KLS0tIGxpbnV4LTIuNC4xNy9p
bmNsdWRlL2FzbS1pMzg2L3VhY2Nlc3MuaAlTYXQgRGVjIDIyIDA5OjM1OjE3
IDIwMDENCisrKyBsaW51eC9pbmNsdWRlL2FzbS1pMzg2L3VhY2Nlc3MuaAlX
ZWQgRGVjIDI2IDIwOjUzOjIzIDIwMDENCkBAIC04LDYgKzgsNyBAQA0KICNp
bmNsdWRlIDxsaW51eC9zY2hlZC5oPg0KICNpbmNsdWRlIDxsaW51eC9wcmVm
ZXRjaC5oPg0KICNpbmNsdWRlIDxhc20vcGFnZS5oPg0KKyNpbmNsdWRlIDxh
c20vcHRyYWNlLmg+DQogDQogI2RlZmluZSBWRVJJRllfUkVBRCAwDQogI2Rl
ZmluZSBWRVJJRllfV1JJVEUgMQ0KQEAgLTE1Nyw2ICsxNTgsMTAgQEANCiB9
KQkJCQkJCQkNCiANCiAjZGVmaW5lIF9fcHV0X3VzZXJfdTY0KHgsIGFkZHIs
IGVycikJCQkJXA0KK2RvIHsJCQkJCQkJCVwNCisJX190eXBlb2ZfXygqKGFk
ZHIpKSAqX19wdXU2NF9hZGRyID0gKGFkZHIpOwkJXA0KKwlyZWNvcmRfbWVt
ZGlmZihfX3B1dTY0X2FkZHIsIDgsIAkJCVwNCisJCU1FTURJRkZfSURfX1BV
VF9VU0VSX1U2NCk7CQkJXA0KIAlfX2FzbV9fIF9fdm9sYXRpbGVfXygJCQkJ
CVwNCiAJCSIxOgltb3ZsICUlZWF4LDAoJTIpXG4iCQkJXA0KIAkJIjI6CW1v
dmwgJSVlZHgsNCglMilcbiIJCQlcDQpAQCAtMTcxLDcgKzE3Niw4IEBADQog
CQkiCS5sb25nIDJiLDRiXG4iCQkJCVwNCiAJCSIucHJldmlvdXMiCQkJCQlc
DQogCQk6ICI9ciIoZXJyKQkJCQkJXA0KLQkJOiAiQSIgKHgpLCAiciIgKGFk
ZHIpLCAiaSIoLUVGQVVMVCksICIwIihlcnIpKQ0KKwkJOiAiQSIgKHgpLCAi
ciIgKF9fcHV1NjRfYWRkciksICJpIigtRUZBVUxUKSwgIjAiKGVycikpOwlc
DQorfSB3aGlsZSAoMCkNCiANCiAjZGVmaW5lIF9fcHV0X3VzZXJfc2l6ZSh4
LHB0cixzaXplLHJldHZhbCkJCQkJXA0KIGRvIHsJCQkJCQkJCQlcDQpAQCAt
MTk0LDYgKzIwMCwxMCBAQA0KICAqIGFsaWFzaW5nIGlzc3Vlcy4NCiAgKi8N
CiAjZGVmaW5lIF9fcHV0X3VzZXJfYXNtKHgsIGFkZHIsIGVyciwgaXR5cGUs
IHJ0eXBlLCBsdHlwZSkJXA0KK2RvIHsJCQkJCQkJCVwNCisJX190eXBlb2Zf
XygqKGFkZHIpKSAqX19wdWFfYWRkciA9IChhZGRyKTsJCVwNCisJcmVjb3Jk
X21lbWRpZmYoX19wdWFfYWRkciwgc2l6ZW9mKCpfX3B1YV9hZGRyKSwgCVwN
CisJCU1FTURJRkZfSURfX1BVVF9VU0VSX0FTTSk7CQkJXA0KIAlfX2FzbV9f
IF9fdm9sYXRpbGVfXygJCQkJCVwNCiAJCSIxOgltb3YiaXR5cGUiICUicnR5
cGUiMSwlMlxuIgkJXA0KIAkJIjI6XG4iCQkJCQkJXA0KQEAgLTIwNiw3ICsy
MTYsOCBAQA0KIAkJIgkubG9uZyAxYiwzYlxuIgkJCQlcDQogCQkiLnByZXZp
b3VzIgkJCQkJXA0KIAkJOiAiPXIiKGVycikJCQkJCVwNCi0JCTogbHR5cGUg
KHgpLCAibSIoX19tKGFkZHIpKSwgImkiKC1FRkFVTFQpLCAiMCIoZXJyKSkN
CisJCTogbHR5cGUgKHgpLCAibSIoX19tKF9fcHVhX2FkZHIpKSwgImkiKC1F
RkFVTFQpLCAiMCIoZXJyKSk7IFwNCit9IHdoaWxlICgwKQ0KIA0KIA0KICNk
ZWZpbmUgX19nZXRfdXNlcl9ub2NoZWNrKHgscHRyLHNpemUpCQkJCVwNCkBA
IC0yNTUsNiArMjY2LDcgQEANCiAjZGVmaW5lIF9fY29weV91c2VyKHRvLGZy
b20sc2l6ZSkJCQkJCVwNCiBkbyB7CQkJCQkJCQkJXA0KIAlpbnQgX19kMCwg
X19kMTsJCQkJCQkJXA0KKwlyZWNvcmRfbWVtZGlmZigodG8pLCAoc2l6ZSks
IE1FTURJRkZfSURfX0NPUFlfVVNFUik7CQlcDQogCV9fYXNtX18gX192b2xh
dGlsZV9fKAkJCQkJCVwNCiAJCSIwOglyZXA7IG1vdnNsXG4iCQkJCQlcDQog
CQkiCW1vdmwgJTMsJTBcbiIJCQkJCVwNCkBAIC0zMjQsNiArMzM2LDggQEAN
CiAjZGVmaW5lIF9fY29uc3RhbnRfY29weV91c2VyKHRvLCBmcm9tLCBzaXpl
KQkJCVwNCiBkbyB7CQkJCQkJCQlcDQogCWludCBfX2QwLCBfX2QxOwkJCQkJ
CVwNCisJcmVjb3JkX21lbWRpZmYoKHRvKSwgKHNpemUpLAkJCQlcDQorCQlN
RU1ESUZGX0lEX19DT05TVEFOVF9DT1BZX1VTRVIpOyAJCVwNCiAJc3dpdGNo
IChzaXplICYgMykgewkJCQkJXA0KIAlkZWZhdWx0OgkJCQkJCVwNCiAJCV9f
YXNtX18gX192b2xhdGlsZV9fKAkJCQlcDQpkaWZmIC1OdXIgbGludXgtMi40
LjE3L2FyY2gvaTM4Ni9saWIvdXNlcmNvcHkuYyBsaW51eC9hcmNoL2kzODYv
bGliL3VzZXJjb3B5LmMNCi0tLSBsaW51eC0yLjQuMTcvYXJjaC9pMzg2L2xp
Yi91c2VyY29weS5jCVNhdCBEZWMgMjIgMDk6MzU6NDAgMjAwMQ0KKysrIGxp
bnV4L2FyY2gvaTM4Ni9saWIvdXNlcmNvcHkuYwlUdWUgRGVjIDI1IDE4OjM2
OjI1IDIwMDENCkBAIC04LDYgKzgsNyBAQA0KICNpbmNsdWRlIDxsaW51eC9j
b25maWcuaD4NCiAjaW5jbHVkZSA8YXNtL3VhY2Nlc3MuaD4NCiAjaW5jbHVk
ZSA8YXNtL21teC5oPg0KKyNpbmNsdWRlIDxhc20vcHRyYWNlLmg+DQogDQog
I2lmZGVmIENPTkZJR19YODZfVVNFXzNETk9XX0FORF9XT1JLUw0KIA0KQEAg
LTEyMCw2ICsxMjEsNyBAQA0KICNkZWZpbmUgX19kb19jbGVhcl91c2VyKGFk
ZHIsc2l6ZSkJCQkJCVwNCiBkbyB7CQkJCQkJCQkJXA0KIAlpbnQgX19kMDsJ
CQkJCQkJXA0KKwlyZWNvcmRfbWVtZGlmZigoYWRkciksIChzaXplKSwgTUVN
RElGRl9JRF9fRE9fQ0xFQVJfVVNFUik7CVwNCiAgIAlfX2FzbV9fIF9fdm9s
YXRpbGVfXygJCQkJCQlcDQogCQkiMDoJcmVwOyBzdG9zbFxuIgkJCQkJXA0K
IAkJIgltb3ZsICUyLCUwXG4iCQkJCQlcDQpkaWZmIC1OdXIgbGludXgtMi40
LjE3L2FyY2gvaTM4Ni9rZXJuZWwvaTM4Nl9rc3ltcy5jIGxpbnV4L2FyY2gv
aTM4Ni9rZXJuZWwvaTM4Nl9rc3ltcy5jDQotLS0gbGludXgtMi40LjE3L2Fy
Y2gvaTM4Ni9rZXJuZWwvaTM4Nl9rc3ltcy5jCVNhdCBEZWMgMjIgMDk6MzU6
NDAgMjAwMQ0KKysrIGxpbnV4L2FyY2gvaTM4Ni9rZXJuZWwvaTM4Nl9rc3lt
cy5jCVR1ZSBEZWMgMjUgMTg6MzY6MjUgMjAwMQ0KQEAgLTI4LDYgKzI4LDcg
QEANCiAjaW5jbHVkZSA8YXNtL2Rlc2MuaD4NCiAjaW5jbHVkZSA8YXNtL3Bn
dGFibGUuaD4NCiAjaW5jbHVkZSA8YXNtL3BnYWxsb2MuaD4NCisjaW5jbHVk
ZSA8YXNtL3B0cmFjZS5oPg0KIA0KIGV4dGVybiB2b2lkIGR1bXBfdGhyZWFk
KHN0cnVjdCBwdF9yZWdzICosIHN0cnVjdCB1c2VyICopOw0KIGV4dGVybiBz
cGlubG9ja190IHJ0Y19sb2NrOw0KQEAgLTE3MywzICsxNzQsNyBAQA0KIA0K
IGV4dGVybiBpbnQgaXNfc29ueV92YWlvX2xhcHRvcDsNCiBFWFBPUlRfU1lN
Qk9MKGlzX3NvbnlfdmFpb19sYXB0b3ApOw0KKw0KKyNpZiBkZWZpbmVkKENP
TkZJR19FWFBUUkFDRSkNCitFWFBPUlRfU1lNQk9MX05PVkVSUyhfX3JlY29y
ZF9tZW1kaWZmKTsNCisjZW5kaWYNCg==
---1046675133-182848616-1009621906=:20673--
-
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/