[RFC][PATCH] rename() on braindead filesystems

Alexander Viro (viro@math.psu.edu)
Wed, 26 May 1999 00:42:48 -0400 (EDT)


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

---559023410-1956884037-927693768=:1768
Content-Type: TEXT/PLAIN; charset=US-ASCII

Folks, I've produced something that pretends to fix the problems
with case-preserving & case-insensitive filesystems. In some respects it's
a gross hack. It seems to work and I'ld *really* like to hear some
feedback on the thing.
Nature of the problem: on case-insensitive but case-preserving
filesystems target of rename() should be treated in a special way.
Normally such filesystems treat names different only in capitalization as
synonims. Except for rename() target. We are using the same lookup() for
all cases and as the result lookups in rename("Foo","fOO"); bring us the
same dentry for source and target. With the obvious results. Another
related problem being that touch bar;mv foo Bar; is likely to rename foo
into bar. There is no really clean way to deal with that lossage -
semantics of rename() is incompatible with the case-braindamage exhibited
by those filesystems. Some approximation can be achieved in the following
way:
a) we are introducing new lookup flag: LOOKUP_TARGET (right thing
to do for completely unrelated reasons).
b) ->lookup() and ->d_compare() are getting the flags argument
(ditto). LOOKUP_TARGET reaches methods only on the last step of path.
c) filesystem may choose to implement stricter comparison in
d_compare() if LOOKUP_TARGET is passed.
d) in that case lookup() may do the following:
1) if we don't have a dentry for this object yet (even with the
different capitalization) - act as usual.
2) if we do - mark ->d_flags with DCACHE_VMS_LOSSAGE (sorry for
that name - AFAIK braindamage in question appeared in Vogon Made System),
set ->d_fsdata pointing to the existing alias, leave dentry unhashed and
return NULL.
e) for such filesystems ->rename() may get a dentry marked in
aforementioned way as a target. In that case we are guaranteed that it
bears the exact name we were asked for and ->d_fsdata points to the
normal dentry of the target (with a different capitalization).

I did ->lookup() and ->d_compare() type changes + required VFS
support + all changes needed to make it work in case of VFAT. Attached
patch is against the 2.2.9 + FAT patch (same as in 2.3.[23]). FAT patch
can be found on ftp.math.psu.edu/pub/firo/fat-patch-20.gz.

Why 2.2.9? Because for 2.3 I have a cleaner variant, but it
requires major dcache changes (needed for lots of other things anyway).
I'ld like to hear comments on the thing. I hate the idea of interface
changes in 2.2, but I *really* see no other way. If somebody have a
reasonable suggestion - you are more than welcome. I don't like the
proposed solution. Frankly, I'm sorely tempted to leave all this
case-perverted mess as is and to hell with mv Foo fOO; & Co. *If* it is
considered critical - well, solution is here.

Linus, decision belongs to you. Main changes are in fs/namei.c
(+ stuff in fs/vfat/namei.c, indeed). It's ugly, but I'm afraid that any
other fix will be even worse. Please, look it through.

Waiting for comments,
Al

---559023410-1956884037-927693768=:1768
Content-Type: TEXT/PLAIN; charset=US-ASCII; name=VMS-LOSSAGE-PATCH-2
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.GSO.4.10.9905260042480.1768@weyl.math.psu.edu>
Content-Description:
Content-Disposition: attachment; filename=VMS-LOSSAGE-PATCH-2

ZGlmZiAtdXJOIGxpbnV4LWJpcmQuRkFUL2ZzL2FkZnMvbmFtZWkuYyBsaW51
eC1iaXJkLkJMRVRDSC9mcy9hZGZzL25hbWVpLmMNCi0tLSBsaW51eC1iaXJk
LkZBVC9mcy9hZGZzL25hbWVpLmMJVGh1IE1heSAxMyAwNzowMjo1NSAxOTk5
DQorKysgbGludXgtYmlyZC5CTEVUQ0gvZnMvYWRmcy9uYW1laS5jCVR1ZSBN
YXkgMjUgMDc6NTM6NDIgMTk5OQ0KQEAgLTk4LDcgKzk4LDcgQEANCiAJcmV0
dXJuIDA7DQogfQ0KIA0KLXN0cnVjdCBkZW50cnkgKmFkZnNfbG9va3VwIChz
dHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5KQ0KK3N0
cnVjdCBkZW50cnkgKmFkZnNfbG9va3VwIChzdHJ1Y3QgaW5vZGUgKmRpciwg
c3RydWN0IGRlbnRyeSAqZGVudHJ5LCBpbnQgZmxhZ3MpDQogew0KIAlzdHJ1
Y3QgaW5vZGUgKmlub2RlID0gTlVMTDsNCiAJc3RydWN0IGFkZnNfaWRpcl9l
bnRyeSBkZTsNCmRpZmYgLXVyTiBsaW51eC1iaXJkLkZBVC9mcy9hZmZzL25h
bWVpLmMgbGludXgtYmlyZC5CTEVUQ0gvZnMvYWZmcy9uYW1laS5jDQotLS0g
bGludXgtYmlyZC5GQVQvZnMvYWZmcy9uYW1laS5jCVRodSBNYXkgMTMgMDc6
MDI6NTUgMTk5OQ0KKysrIGxpbnV4LWJpcmQuQkxFVENIL2ZzL2FmZnMvbmFt
ZWkuYwlUdWUgTWF5IDI1IDA5OjQ3OjI0IDE5OTkNCkBAIC00MCw3ICs0MCw3
IEBADQogfQ0KIA0KIHN0YXRpYyBpbnQJIGFmZnNfaGFzaF9kZW50cnkoc3Ry
dWN0IGRlbnRyeSAqLCBzdHJ1Y3QgcXN0ciAqKTsNCi1zdGF0aWMgaW50ICAg
ICAgIGFmZnNfY29tcGFyZV9kZW50cnkoc3RydWN0IGRlbnRyeSAqLCBzdHJ1
Y3QgcXN0ciAqLCBzdHJ1Y3QgcXN0ciAqKTsNCitzdGF0aWMgaW50ICAgICAg
IGFmZnNfY29tcGFyZV9kZW50cnkoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3Qg
cXN0ciAqLCBzdHJ1Y3QgcXN0ciAqLCBpbnQpOw0KIHN0cnVjdCBkZW50cnlf
b3BlcmF0aW9ucyBhZmZzX2RlbnRyeV9vcGVyYXRpb25zID0gew0KIAlOVUxM
LAkJCS8qIGRfdmFsaWRhdGUJKi8NCiAJYWZmc19oYXNoX2RlbnRyeSwJLyog
ZF9oYXNoCSovDQpAQCAtNzMsNyArNzMsNyBAQA0KIH0NCiANCiBzdGF0aWMg
aW50DQotYWZmc19jb21wYXJlX2RlbnRyeShzdHJ1Y3QgZGVudHJ5ICpkZW50
cnksIHN0cnVjdCBxc3RyICphLCBzdHJ1Y3QgcXN0ciAqYikNCithZmZzX2Nv
bXBhcmVfZGVudHJ5KHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgc3RydWN0IHFz
dHIgKmEsIHN0cnVjdCBxc3RyICpiLCBpbnQgZmxhZ3MpDQogew0KIAl1bnNp
Z25lZCBpbnQgKCp0b3VwcGVyKSh1bnNpZ25lZCBpbnQpID0gYWZmc190b3Vw
cGVyOw0KIAlpbnQJIGFsZW4gPSBhLT5sZW47DQpAQCAtMjAyLDcgKzIwMiw3
IEBADQogfQ0KIA0KIHN0cnVjdCBkZW50cnkgKg0KLWFmZnNfbG9va3VwKHN0
cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpDQorYWZm
c19sb29rdXAoc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBkZW50cnkgKmRl
bnRyeSwgaW50IGZsYWdzKQ0KIHsNCiAJdW5zaWduZWQgbG9uZwkJIGlubzsN
CiAJc3RydWN0IGJ1ZmZlcl9oZWFkCSpiaDsNCmRpZmYgLXVyTiBsaW51eC1i
aXJkLkZBVC9mcy9hdXRvZnMvZGlyLmMgbGludXgtYmlyZC5CTEVUQ0gvZnMv
YXV0b2ZzL2Rpci5jDQotLS0gbGludXgtYmlyZC5GQVQvZnMvYXV0b2ZzL2Rp
ci5jCVRodSBNYXkgMTMgMDc6MDI6NTYgMTk5OQ0KKysrIGxpbnV4LWJpcmQu
QkxFVENIL2ZzL2F1dG9mcy9kaXIuYwlUdWUgTWF5IDI1IDA3OjU0OjM3IDE5
OTkNCkBAIC0zOCw3ICszOCw4IEBADQogLyoNCiAgKiBObyBlbnRyaWVzIGV4
Y2VwdCBmb3IgIi4iIGFuZCAiLi4iLCBib3RoIG9mIHdoaWNoIGFyZSBoYW5k
bGVkIGJ5IHRoZSBWRlMgbGF5ZXINCiAgKi8NCi1zdGF0aWMgc3RydWN0IGRl
bnRyeSAqYXV0b2ZzX2Rpcl9sb29rdXAoc3RydWN0IGlub2RlICpkaXIsc3Ry
dWN0IGRlbnRyeSAqZGVudHJ5KQ0KK3N0YXRpYyBzdHJ1Y3QgZGVudHJ5ICph
dXRvZnNfZGlyX2xvb2t1cChzdHJ1Y3QgaW5vZGUgKmRpcixzdHJ1Y3QgZGVu
dHJ5ICpkZW50cnksDQoraW50IGZsYWdzKQ0KIHsNCiAJZF9hZGQoZGVudHJ5
LCBOVUxMKTsNCiAJcmV0dXJuIE5VTEw7DQpkaWZmIC11ck4gbGludXgtYmly
ZC5GQVQvZnMvYXV0b2ZzL3Jvb3QuYyBsaW51eC1iaXJkLkJMRVRDSC9mcy9h
dXRvZnMvcm9vdC5jDQotLS0gbGludXgtYmlyZC5GQVQvZnMvYXV0b2ZzL3Jv
b3QuYwlUaHUgTWF5IDEzIDA3OjAyOjU2IDE5OTkNCisrKyBsaW51eC1iaXJk
LkJMRVRDSC9mcy9hdXRvZnMvcm9vdC5jCVR1ZSBNYXkgMjUgMDc6NTU6MTIg
MTk5OQ0KQEAgLTE2LDcgKzE2LDcgQEANCiAjaW5jbHVkZSAiYXV0b2ZzX2ku
aCINCiANCiBzdGF0aWMgaW50IGF1dG9mc19yb290X3JlYWRkaXIoc3RydWN0
IGZpbGUgKix2b2lkICosZmlsbGRpcl90KTsNCi1zdGF0aWMgc3RydWN0IGRl
bnRyeSAqYXV0b2ZzX3Jvb3RfbG9va3VwKHN0cnVjdCBpbm9kZSAqLHN0cnVj
dCBkZW50cnkgKik7DQorc3RhdGljIHN0cnVjdCBkZW50cnkgKmF1dG9mc19y
b290X2xvb2t1cChzdHJ1Y3QgaW5vZGUgKixzdHJ1Y3QgZGVudHJ5ICosaW50
KTsNCiBzdGF0aWMgaW50IGF1dG9mc19yb290X3N5bWxpbmsoc3RydWN0IGlu
b2RlICosc3RydWN0IGRlbnRyeSAqLGNvbnN0IGNoYXIgKik7DQogc3RhdGlj
IGludCBhdXRvZnNfcm9vdF91bmxpbmsoc3RydWN0IGlub2RlICosc3RydWN0
IGRlbnRyeSAqKTsNCiBzdGF0aWMgaW50IGF1dG9mc19yb290X3JtZGlyKHN0
cnVjdCBpbm9kZSAqLHN0cnVjdCBkZW50cnkgKik7DQpAQCAtMjA5LDcgKzIw
OSw3IEBADQogCU5VTEwsCQkJLyogZF9jb21wYXJlICovDQogfTsNCiANCi1z
dGF0aWMgc3RydWN0IGRlbnRyeSAqYXV0b2ZzX3Jvb3RfbG9va3VwKHN0cnVj
dCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpDQorc3RhdGlj
IHN0cnVjdCBkZW50cnkgKmF1dG9mc19yb290X2xvb2t1cChzdHJ1Y3QgaW5v
ZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5LGludCBmbGFncykNCiB7
DQogCXN0cnVjdCBhdXRvZnNfc2JfaW5mbyAqc2JpOw0KIAlpbnQgb3pfbW9k
ZTsNCmRpZmYgLXVyTiBsaW51eC1iaXJkLkZBVC9mcy9jb2RhL2Rpci5jIGxp
bnV4LWJpcmQuQkxFVENIL2ZzL2NvZGEvZGlyLmMNCi0tLSBsaW51eC1iaXJk
LkZBVC9mcy9jb2RhL2Rpci5jCVRodSBNYXkgMTMgMDc6MDI6NTYgMTk5OQ0K
KysrIGxpbnV4LWJpcmQuQkxFVENIL2ZzL2NvZGEvZGlyLmMJVHVlIE1heSAy
NSAwNzo1Njo0NCAxOTk5DQpAQCAtMjksNyArMjksOCBAQA0KIC8qIGRpciBp
bm9kZS1vcHMgKi8NCiBzdGF0aWMgaW50IGNvZGFfY3JlYXRlKHN0cnVjdCBp
bm9kZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5ICpuZXcsIGludCBtb2RlKTsNCiBz
dGF0aWMgaW50IGNvZGFfbWtub2Qoc3RydWN0IGlub2RlICpkaXIsIHN0cnVj
dCBkZW50cnkgKm5ldywgaW50IG1vZGUsIGludCByZGV2KTsNCi1zdGF0aWMg
c3RydWN0IGRlbnRyeSAqY29kYV9sb29rdXAoc3RydWN0IGlub2RlICpkaXIs
IHN0cnVjdCBkZW50cnkgKnRhcmdldCk7DQorc3RhdGljIHN0cnVjdCBkZW50
cnkgKmNvZGFfbG9va3VwKHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZGVu
dHJ5ICp0YXJnZXQsDQorCQkJCSAgaW50IGZsYWdzKTsNCiBzdGF0aWMgaW50
IGNvZGFfbGluayhzdHJ1Y3QgZGVudHJ5ICpvbGRfZGVudHJ5LCBzdHJ1Y3Qg
aW5vZGUgKmRpcl9pbm9kZSwgDQogCQkgICAgIHN0cnVjdCBkZW50cnkgKmVu
dHJ5KTsNCiBzdGF0aWMgaW50IGNvZGFfdW5saW5rKHN0cnVjdCBpbm9kZSAq
ZGlyX2lub2RlLCBzdHJ1Y3QgZGVudHJ5ICplbnRyeSk7DQpAQCAtMTA3LDcg
KzEwOCw4IEBADQogDQogLyogaW5vZGUgb3BlcmF0aW9ucyBmb3IgZGlyZWN0
b3JpZXMgKi8NCiAvKiBhY2NlcyByb3V0aW5lczogbG9va3VwLCByZWFkbGlu
aywgcGVybWlzc2lvbiAqLw0KLXN0YXRpYyBzdHJ1Y3QgZGVudHJ5ICpjb2Rh
X2xvb2t1cChzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZW50
cnkpDQorc3RhdGljIHN0cnVjdCBkZW50cnkgKmNvZGFfbG9va3VwKHN0cnVj
dCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5ICplbnRyeSwNCisJaW50IGZs
YWdzKQ0KIHsNCiAgICAgICAgIHN0cnVjdCBjb2RhX2lub2RlX2luZm8gKmRp
cmNucDsNCiAJc3RydWN0IGlub2RlICpyZXNfaW5vZGUgPSBOVUxMOw0KZGlm
ZiAtdXJOIGxpbnV4LWJpcmQuRkFUL2ZzL2RjYWNoZS5jIGxpbnV4LWJpcmQu
QkxFVENIL2ZzL2RjYWNoZS5jDQotLS0gbGludXgtYmlyZC5GQVQvZnMvZGNh
Y2hlLmMJVGh1IE1heSAxMyAwNzowMjo1NCAxOTk5DQorKysgbGludXgtYmly
ZC5CTEVUQ0gvZnMvZGNhY2hlLmMJVHVlIE1heSAyNSAwNjozOTo0OCAxOTk5
DQpAQCAtNTY4LDcgKzU2OCw3IEBADQogCXJldHVybiBkZW50cnlfaGFzaHRh
YmxlICsgKGhhc2ggJiBEX0hBU0hNQVNLKTsNCiB9DQogDQotc3RydWN0IGRl
bnRyeSAqIGRfbG9va3VwKHN0cnVjdCBkZW50cnkgKiBwYXJlbnQsIHN0cnVj
dCBxc3RyICogbmFtZSkNCitzdHJ1Y3QgZGVudHJ5ICogZF9sb29rdXAoc3Ry
dWN0IGRlbnRyeSAqIHBhcmVudCwgc3RydWN0IHFzdHIgKiBuYW1lLCBpbnQg
ZmxhZ3MpDQogew0KIAl1bnNpZ25lZCBpbnQgbGVuID0gbmFtZS0+bGVuOw0K
IAl1bnNpZ25lZCBpbnQgaGFzaCA9IG5hbWUtPmhhc2g7DQpAQCAtNTg2LDcg
KzU4Niw4IEBADQogCQlpZiAoZGVudHJ5LT5kX3BhcmVudCAhPSBwYXJlbnQp
DQogCQkJY29udGludWU7DQogCQlpZiAocGFyZW50LT5kX29wICYmIHBhcmVu
dC0+ZF9vcC0+ZF9jb21wYXJlKSB7DQotCQkJaWYgKHBhcmVudC0+ZF9vcC0+
ZF9jb21wYXJlKHBhcmVudCwgJmRlbnRyeS0+ZF9uYW1lLCBuYW1lKSkNCisJ
CQlpZiAocGFyZW50LT5kX29wLT5kX2NvbXBhcmUocGFyZW50LCAmZGVudHJ5
LT5kX25hbWUsDQorCQkJCW5hbWUsIGZsYWdzKSkNCiAJCQkJY29udGludWU7
DQogCQl9IGVsc2Ugew0KIAkJCWlmIChkZW50cnktPmRfbmFtZS5sZW4gIT0g
bGVuKQ0KQEAgLTg4OSw3ICs4OTAsNyBAQA0KIAkJCWdvdG8gb3V0Ow0KIAl9
DQogDQotCWRlbnRyeSA9IGRfbG9va3VwKGRpciwgbmFtZSk7DQorCWRlbnRy
eSA9IGRfbG9va3VwKGRpciwgbmFtZSwgMCk7DQogCWlmIChkZW50cnkpDQog
CXsNCiAJCWlmIChkZW50cnktPmRfaW5vZGUpDQpkaWZmIC11ck4gbGludXgt
YmlyZC5GQVQvZnMvZGV2cHRzL3Jvb3QuYyBsaW51eC1iaXJkLkJMRVRDSC9m
cy9kZXZwdHMvcm9vdC5jDQotLS0gbGludXgtYmlyZC5GQVQvZnMvZGV2cHRz
L3Jvb3QuYwlUaHUgTWF5IDEzIDA3OjAyOjU2IDE5OTkNCisrKyBsaW51eC1i
aXJkLkJMRVRDSC9mcy9kZXZwdHMvcm9vdC5jCVR1ZSBNYXkgMjUgMDc6NTc6
MjMgMTk5OQ0KQEAgLTE3LDcgKzE3LDcgQEANCiAjaW5jbHVkZSAiZGV2cHRz
X2kuaCINCiANCiBzdGF0aWMgaW50IGRldnB0c19yb290X3JlYWRkaXIoc3Ry
dWN0IGZpbGUgKix2b2lkICosZmlsbGRpcl90KTsNCi1zdGF0aWMgc3RydWN0
IGRlbnRyeSAqZGV2cHRzX3Jvb3RfbG9va3VwKHN0cnVjdCBpbm9kZSAqLHN0
cnVjdCBkZW50cnkgKik7DQorc3RhdGljIHN0cnVjdCBkZW50cnkgKmRldnB0
c19yb290X2xvb2t1cChzdHJ1Y3QgaW5vZGUgKixzdHJ1Y3QgZGVudHJ5ICos
aW50KTsNCiBzdGF0aWMgaW50IGRldnB0c19yZXZhbGlkYXRlKHN0cnVjdCBk
ZW50cnkgKiwgaW50KTsNCiANCiBzdGF0aWMgc3RydWN0IGZpbGVfb3BlcmF0
aW9ucyBkZXZwdHNfcm9vdF9vcGVyYXRpb25zID0gew0KQEAgLTEyOCw3ICsx
MjgsOCBAQA0KIAlyZXR1cm4gKCBzYmktPmlub2Rlc1tkZW50cnktPmRfaW5v
ZGUtPmlfaW5vIC0gMl0gPT0gZGVudHJ5LT5kX2lub2RlICk7DQogfQ0KIA0K
LXN0YXRpYyBzdHJ1Y3QgZGVudHJ5ICpkZXZwdHNfcm9vdF9sb29rdXAoc3Ry
dWN0IGlub2RlICogZGlyLCBzdHJ1Y3QgZGVudHJ5ICogZGVudHJ5KQ0KK3N0
YXRpYyBzdHJ1Y3QgZGVudHJ5ICpkZXZwdHNfcm9vdF9sb29rdXAoc3RydWN0
IGlub2RlICogZGlyLA0KKwlzdHJ1Y3QgZGVudHJ5ICogZGVudHJ5LCBpbnQg
ZmxhZ3MpDQogew0KIAlzdHJ1Y3QgZGV2cHRzX3NiX2luZm8gKnNiaSA9IFNC
SShkaXItPmlfc2IpOw0KIAl1bnNpZ25lZCBpbnQgZW50cnk7DQpkaWZmIC11
ck4gbGludXgtYmlyZC5GQVQvZnMvZXh0Mi9uYW1laS5jIGxpbnV4LWJpcmQu
QkxFVENIL2ZzL2V4dDIvbmFtZWkuYw0KLS0tIGxpbnV4LWJpcmQuRkFUL2Zz
L2V4dDIvbmFtZWkuYwlUaHUgTWF5IDEzIDA3OjAyOjU2IDE5OTkNCisrKyBs
aW51eC1iaXJkLkJMRVRDSC9mcy9leHQyL25hbWVpLmMJVHVlIE1heSAyNSAw
Nzo1Nzo1NCAxOTk5DQpAQCAtMTY2LDcgKzE2Niw3IEBADQogCXJldHVybiBO
VUxMOw0KIH0NCiANCi1zdHJ1Y3QgZGVudHJ5ICpleHQyX2xvb2t1cChzdHJ1
Y3QgaW5vZGUgKiBkaXIsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSkNCitzdHJ1
Y3QgZGVudHJ5ICpleHQyX2xvb2t1cChzdHJ1Y3QgaW5vZGUgKiBkaXIsIHN0
cnVjdCBkZW50cnkgKmRlbnRyeSwgaW50IGZsYWdzKQ0KIHsNCiAJc3RydWN0
IGlub2RlICogaW5vZGU7DQogCXN0cnVjdCBleHQyX2Rpcl9lbnRyeV8yICog
ZGU7DQpkaWZmIC11ck4gbGludXgtYmlyZC5GQVQvZnMvaGZzL2Rpcl9jYXAu
YyBsaW51eC1iaXJkLkJMRVRDSC9mcy9oZnMvZGlyX2NhcC5jDQotLS0gbGlu
dXgtYmlyZC5GQVQvZnMvaGZzL2Rpcl9jYXAuYwlUaHUgTWF5IDEzIDA3OjAy
OjU4IDE5OTkNCisrKyBsaW51eC1iaXJkLkJMRVRDSC9mcy9oZnMvZGlyX2Nh
cC5jCVR1ZSBNYXkgMjUgMTA6MjM6MzMgMTk5OQ0KQEAgLTI3LDcgKzI3LDcg
QEANCiANCiAvKj09PT09PT09PT09PT09PT0gRm9yd2FyZCBkZWNsYXJhdGlv
bnMgPT09PT09PT09PT09PT09PSovDQogDQotc3RhdGljIHN0cnVjdCBkZW50
cnkgKmNhcF9sb29rdXAoc3RydWN0IGlub2RlICosIHN0cnVjdCBkZW50cnkg
Kik7DQorc3RhdGljIHN0cnVjdCBkZW50cnkgKmNhcF9sb29rdXAoc3RydWN0
IGlub2RlICosIHN0cnVjdCBkZW50cnkgKiwgaW50KTsNCiBzdGF0aWMgaW50
IGNhcF9yZWFkZGlyKHN0cnVjdCBmaWxlICosIHZvaWQgKiwgZmlsbGRpcl90
KTsNCiANCiAvKj09PT09PT09PT09PT09PT0gR2xvYmFsIHZhcmlhYmxlcyA9
PT09PT09PT09PT09PT09Ki8NCkBAIC0xNDcsNyArMTQ3LDggQEANCiAgKiBp
bm9kZSBjb3JyZXNwb25kaW5nIHRvIGFuIGVudHJ5IGluIGEgZGlyZWN0b3J5
LCBnaXZlbiB0aGUgaW5vZGUgZm9yDQogICogdGhlIGRpcmVjdG9yeSBhbmQg
dGhlIG5hbWUgKGFuZCBpdHMgbGVuZ3RoKSBvZiB0aGUgZW50cnkuDQogICov
DQotc3RhdGljIHN0cnVjdCBkZW50cnkgKmNhcF9sb29rdXAoc3RydWN0IGlu
b2RlICogZGlyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpDQorc3RhdGljIHN0
cnVjdCBkZW50cnkgKmNhcF9sb29rdXAoc3RydWN0IGlub2RlICogZGlyLCBz
dHJ1Y3QgZGVudHJ5ICpkZW50cnksDQorCWludCBmbGFncykNCiB7DQogCWlu
b190IGR0eXBlOw0KIAlzdHJ1Y3QgaGZzX25hbWUgY25hbWU7DQpkaWZmIC11
ck4gbGludXgtYmlyZC5GQVQvZnMvaGZzL2Rpcl9kYmwuYyBsaW51eC1iaXJk
LkJMRVRDSC9mcy9oZnMvZGlyX2RibC5jDQotLS0gbGludXgtYmlyZC5GQVQv
ZnMvaGZzL2Rpcl9kYmwuYwlUaHUgTWF5IDEzIDA3OjAyOjU4IDE5OTkNCisr
KyBsaW51eC1iaXJkLkJMRVRDSC9mcy9oZnMvZGlyX2RibC5jCVR1ZSBNYXkg
MjUgMTM6Mzg6MDYgMTk5OQ0KQEAgLTIzLDcgKzIzLDcgQEANCiANCiAvKj09
PT09PT09PT09PT09PT0gRm9yd2FyZCBkZWNsYXJhdGlvbnMgPT09PT09PT09
PT09PT09PSovDQogDQotc3RhdGljIHN0cnVjdCBkZW50cnkgKmRibF9sb29r
dXAoc3RydWN0IGlub2RlICosIHN0cnVjdCBkZW50cnkgKik7DQorc3RhdGlj
IHN0cnVjdCBkZW50cnkgKmRibF9sb29rdXAoc3RydWN0IGlub2RlICosIHN0
cnVjdCBkZW50cnkgKiwgaW50KTsNCiBzdGF0aWMgaW50IGRibF9yZWFkZGly
KHN0cnVjdCBmaWxlICosIHZvaWQgKiwgZmlsbGRpcl90KTsNCiBzdGF0aWMg
aW50IGRibF9jcmVhdGUoc3RydWN0IGlub2RlICosIHN0cnVjdCBkZW50cnkg
KiwgaW50KTsNCiBzdGF0aWMgaW50IGRibF9ta2RpcihzdHJ1Y3QgaW5vZGUg
Kiwgc3RydWN0IGRlbnRyeSAqLCBpbnQpOw0KQEAgLTEzMCw3ICsxMzAsOCBA
QA0KICAqIHRoZSBpbm9kZSBmb3IgdGhlIGRpcmVjdG9yeSBhbmQgdGhlIG5h
bWUgKGFuZCBpdHMgbGVuZ3RoKSBvZiB0aGUNCiAgKiBlbnRyeS4NCiAgKi8N
Ci1zdGF0aWMgc3RydWN0IGRlbnRyeSAqZGJsX2xvb2t1cChzdHJ1Y3QgaW5v
ZGUgKiBkaXIsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSkNCitzdGF0aWMgc3Ry
dWN0IGRlbnRyeSAqZGJsX2xvb2t1cChzdHJ1Y3QgaW5vZGUgKiBkaXIsIHN0
cnVjdCBkZW50cnkgKmRlbnRyeSwNCisJaW50IGZsYWdzKQ0KIHsNCiAJc3Ry
dWN0IGhmc19uYW1lIGNuYW1lOw0KIAlzdHJ1Y3QgaGZzX2NhdF9lbnRyeSAq
ZW50cnk7DQpkaWZmIC11ck4gbGludXgtYmlyZC5GQVQvZnMvaGZzL2Rpcl9u
YXQuYyBsaW51eC1iaXJkLkJMRVRDSC9mcy9oZnMvZGlyX25hdC5jDQotLS0g
bGludXgtYmlyZC5GQVQvZnMvaGZzL2Rpcl9uYXQuYwlUaHUgTWF5IDEzIDA3
OjAyOjU4IDE5OTkNCisrKyBsaW51eC1iaXJkLkJMRVRDSC9mcy9oZnMvZGly
X25hdC5jCVR1ZSBNYXkgMjUgMTA6MjQ6MzAgMTk5OQ0KQEAgLTI5LDcgKzI5
LDcgQEANCiANCiAvKj09PT09PT09PT09PT09PT0gRm9yd2FyZCBkZWNsYXJh
dGlvbnMgPT09PT09PT09PT09PT09PSovDQogDQotc3RhdGljIHN0cnVjdCBk
ZW50cnkgKm5hdF9sb29rdXAoc3RydWN0IGlub2RlICosIHN0cnVjdCBkZW50
cnkgKik7DQorc3RhdGljIHN0cnVjdCBkZW50cnkgKm5hdF9sb29rdXAoc3Ry
dWN0IGlub2RlICosIHN0cnVjdCBkZW50cnkgKiwgaW50KTsNCiBzdGF0aWMg
aW50IG5hdF9yZWFkZGlyKHN0cnVjdCBmaWxlICosIHZvaWQgKiwgZmlsbGRp
cl90KTsNCiBzdGF0aWMgaW50IG5hdF9ybWRpcihzdHJ1Y3QgaW5vZGUgKiwg
c3RydWN0IGRlbnRyeSAqKTsNCiBzdGF0aWMgaW50IG5hdF9oZHJfdW5saW5r
KHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZGVudHJ5ICopOw0KQEAgLTEzNiw3
ICsxMzYsOCBAQA0KICAqIHRoZSBpbm9kZSBjb3JyZXNwb25kaW5nIHRvIGFu
IGVudHJ5IGluIGEgZGlyZWN0b3J5LCBnaXZlbiB0aGUgaW5vZGUNCiAgKiBm
b3IgdGhlIGRpcmVjdG9yeSBhbmQgdGhlIG5hbWUgKGFuZCBpdHMgbGVuZ3Ro
KSBvZiB0aGUgZW50cnkuDQogICovDQotc3RhdGljIHN0cnVjdCBkZW50cnkg
Km5hdF9sb29rdXAoc3RydWN0IGlub2RlICogZGlyLCBzdHJ1Y3QgZGVudHJ5
ICpkZW50cnkpDQorc3RhdGljIHN0cnVjdCBkZW50cnkgKm5hdF9sb29rdXAo
c3RydWN0IGlub2RlICogZGlyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnksDQor
CWludCBmbGFncykNCiB7DQogCWlub190IGR0eXBlOw0KIAlzdHJ1Y3QgaGZz
X25hbWUgY25hbWU7DQpkaWZmIC11ck4gbGludXgtYmlyZC5GQVQvZnMvaGZz
L2hmcy5oIGxpbnV4LWJpcmQuQkxFVENIL2ZzL2hmcy9oZnMuaA0KLS0tIGxp
bnV4LWJpcmQuRkFUL2ZzL2hmcy9oZnMuaAlUaHUgTWF5IDEzIDIyOjE2OjEz
IDE5OTkNCisrKyBsaW51eC1iaXJkLkJMRVRDSC9mcy9oZnMvaGZzLmgJVHVl
IE1heSAyNSAxMDowMDoyOCAxOTk5DQpAQCAtNTE5LDcgKzUxOSw3IEBADQog
ICB0aGlzLmxlbiA9IGxlbjsNCiAgIHRoaXMuaGFzaCA9IGhmc19zdHJoYXNo
KG5hbWUsIGxlbik7DQogDQotICByZXR1cm4gZF9sb29rdXAoYmFzZSwgJnRo
aXMpOw0KKyAgcmV0dXJuIGRfbG9va3VwKGJhc2UsICZ0aGlzLCAwKTsNCiB9
DQogDQogLyogZHJvcCBhIGRlbnRyeSBmb3Igb25lIG9mIHRoZSBzcGVjaWFs
IGRpcmVjdG9yaWVzLg0KZGlmZiAtdXJOIGxpbnV4LWJpcmQuRkFUL2ZzL2hm
cy9zeXNkZXAuYyBsaW51eC1iaXJkLkJMRVRDSC9mcy9oZnMvc3lzZGVwLmMN
Ci0tLSBsaW51eC1iaXJkLkZBVC9mcy9oZnMvc3lzZGVwLmMJVGh1IE1heSAx
MyAwNzowMjo1OCAxOTk5DQorKysgbGludXgtYmlyZC5CTEVUQ0gvZnMvaGZz
L3N5c2RlcC5jCVR1ZSBNYXkgMjUgMTA6MjU6MjcgMTk5OQ0KQEAgLTIwLDcg
KzIwLDcgQEANCiANCiBzdGF0aWMgaW50IGhmc19yZXZhbGlkYXRlX2RlbnRy
eShzdHJ1Y3QgZGVudHJ5ICosIGludCk7DQogc3RhdGljIGludCBoZnNfaGFz
aF9kZW50cnkoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgcXN0ciAqKTsNCi1z
dGF0aWMgaW50IGhmc19jb21wYXJlX2RlbnRyeShzdHJ1Y3QgZGVudHJ5ICos
IHN0cnVjdCBxc3RyICosIHN0cnVjdCBxc3RyICopOw0KK3N0YXRpYyBpbnQg
aGZzX2NvbXBhcmVfZGVudHJ5KHN0cnVjdCBkZW50cnkqLCBzdHJ1Y3QgcXN0
ciosIHN0cnVjdCBxc3RyICosIGludCk7DQogc3RhdGljIHZvaWQgaGZzX2Rl
bnRyeV9pcHV0KHN0cnVjdCBkZW50cnkgKiwgc3RydWN0IGlub2RlICopOw0K
IHN0cnVjdCBkZW50cnlfb3BlcmF0aW9ucyBoZnNfZGVudHJ5X29wZXJhdGlv
bnMgPQ0KIHsNCkBAIC03MSw3ICs3MSw3IEBADQogDQogLyogcmV0dXJuIDEg
b24gZmFpbHVyZSBhbmQgMCBvbiBzdWNjZXNzICovDQogc3RhdGljIGludCBo
ZnNfY29tcGFyZV9kZW50cnkoc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBzdHJ1
Y3QgcXN0ciAqYSwgDQotCQkJICAgICAgc3RydWN0IHFzdHIgKmIpDQorCQkJ
ICAgICAgc3RydWN0IHFzdHIgKmIsIGludCBmbGFncykNCiB7DQogCWlmIChh
LT5sZW4gIT0gYi0+bGVuKSByZXR1cm4gMTsNCiANCmRpZmYgLXVyTiBsaW51
eC1iaXJkLkZBVC9mcy9ocGZzL2hwZnNfZnMuYyBsaW51eC1iaXJkLkJMRVRD
SC9mcy9ocGZzL2hwZnNfZnMuYw0KLS0tIGxpbnV4LWJpcmQuRkFUL2ZzL2hw
ZnMvaHBmc19mcy5jCVRodSBNYXkgMTMgMDc6MDI6NTggMTk5OQ0KKysrIGxp
bnV4LWJpcmQuQkxFVENIL2ZzL2hwZnMvaHBmc19mcy5jCVR1ZSBNYXkgMjUg
MDk6NDQ6NTYgMTk5OQ0KQEAgLTE5Miw3ICsxOTIsNyBAQA0KIAkJCSAgICAg
c2l6ZV90IGNvdW50LCBsb2ZmX3QgKnBwb3MpOw0KIHN0YXRpYyBpbnQgaHBm
c19yZWFkZGlyKHN0cnVjdCBmaWxlICpmaWxwLA0KIAkJCXZvaWQgKmRpcmVu
dCwgZmlsbGRpcl90IGZpbGxkaXIpOw0KLXN0YXRpYyBzdHJ1Y3QgZGVudHJ5
ICpocGZzX2xvb2t1cChzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGRlbnRyeSAq
KTsNCitzdGF0aWMgc3RydWN0IGRlbnRyeSAqaHBmc19sb29rdXAoc3RydWN0
IGlub2RlICosIHN0cnVjdCBkZW50cnkgKiwgaW50KTsNCiANCiBzdGF0aWMg
Y29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBocGZzX2Rpcl9vcHMgPQ0K
IHsNCkBAIC0xMTE5LDcgKzExMTksOCBAQA0KICAqIHRoZSBib29uZG9ja3Mu
KQ0KICAqLw0KIA0KLXN0YXRpYyBzdHJ1Y3QgZGVudHJ5ICpocGZzX2xvb2t1
cChzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5KQ0K
K3N0YXRpYyBzdHJ1Y3QgZGVudHJ5ICpocGZzX2xvb2t1cChzdHJ1Y3QgaW5v
ZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5LA0KKwlpbnQgZmxhZ3Mp
DQogew0KIAljb25zdCBjaGFyICpuYW1lID0gZGVudHJ5LT5kX25hbWUubmFt
ZTsNCiAJaW50IGxlbiA9IGRlbnRyeS0+ZF9uYW1lLmxlbjsNCmRpZmYgLXVy
TiBsaW51eC1iaXJkLkZBVC9mcy9pc29mcy9pbm9kZS5jIGxpbnV4LWJpcmQu
QkxFVENIL2ZzL2lzb2ZzL2lub2RlLmMNCi0tLSBsaW51eC1iaXJkLkZBVC9m
cy9pc29mcy9pbm9kZS5jCVRodSBNYXkgMTMgMDc6MDI6NTggMTk5OQ0KKysr
IGxpbnV4LWJpcmQuQkxFVENIL2ZzL2lzb2ZzL2lub2RlLmMJVHVlIE1heSAy
NSAwODo1NTozMiAxOTk5DQpAQCAtNDQsMTQgKzQ0LDE0IEBADQogDQogc3Rh
dGljIGludCBpc29mc19oYXNoaShzdHJ1Y3QgZGVudHJ5ICpwYXJlbnQsIHN0
cnVjdCBxc3RyICpxc3RyKTsNCiBzdGF0aWMgaW50IGlzb2ZzX2hhc2goc3Ry
dWN0IGRlbnRyeSAqcGFyZW50LCBzdHJ1Y3QgcXN0ciAqcXN0cik7DQotc3Rh
dGljIGludCBpc29mc19jbXBpKHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgc3Ry
dWN0IHFzdHIgKmEsIHN0cnVjdCBxc3RyICpiKTsNCi1zdGF0aWMgaW50IGlz
b2ZzX2NtcChzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIHN0cnVjdCBxc3RyICph
LCBzdHJ1Y3QgcXN0ciAqYik7DQorc3RhdGljIGludCBpc29mc19jbXBpKHN0
cnVjdCBkZW50cnkgKiwgc3RydWN0IHFzdHIgKiwgc3RydWN0IHFzdHIgKixp
bnQpOw0KK3N0YXRpYyBpbnQgaXNvZnNfY21wKHN0cnVjdCBkZW50cnkgKiwg
c3RydWN0IHFzdHIgKiwgc3RydWN0IHFzdHIgKixpbnQpOw0KIA0KICNpZmRl
ZiBDT05GSUdfSk9MSUVUDQogc3RhdGljIGludCBpc29mc19oYXNoaV9tcyhz
dHJ1Y3QgZGVudHJ5ICpwYXJlbnQsIHN0cnVjdCBxc3RyICpxc3RyKTsNCiBz
dGF0aWMgaW50IGlzb2ZzX2hhc2hfbXMoc3RydWN0IGRlbnRyeSAqcGFyZW50
LCBzdHJ1Y3QgcXN0ciAqcXN0cik7DQotc3RhdGljIGludCBpc29mc19jbXBp
X21zKHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgc3RydWN0IHFzdHIgKmEsIHN0
cnVjdCBxc3RyICpiKTsNCi1zdGF0aWMgaW50IGlzb2ZzX2NtcF9tcyhzdHJ1
Y3QgZGVudHJ5ICpkZW50cnksIHN0cnVjdCBxc3RyICphLCBzdHJ1Y3QgcXN0
ciAqYik7DQorc3RhdGljIGludCBpc29mc19jbXBpX21zKHN0cnVjdCBkZW50
cnkgKiwgc3RydWN0IHFzdHIgKiwgc3RydWN0IHFzdHIgKixpbnQpOw0KK3N0
YXRpYyBpbnQgaXNvZnNfY21wX21zKHN0cnVjdCBkZW50cnkgKiwgc3RydWN0
IHFzdHIgKiwgc3RydWN0IHFzdHIgKixpbnQpOw0KICNlbmRpZg0KIA0KIHZv
aWQgaXNvZnNfcHV0X3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpDQpA
QCAtMjM4LDEzICsyMzgsMTMgQEANCiB9DQogDQogc3RhdGljIGludA0KLWlz
b2ZzX2NtcChzdHJ1Y3QgZGVudHJ5ICpkZW50cnksc3RydWN0IHFzdHIgKmEs
c3RydWN0IHFzdHIgKmIpDQoraXNvZnNfY21wKHN0cnVjdCBkZW50cnkgKmRl
bnRyeSxzdHJ1Y3QgcXN0ciAqYSxzdHJ1Y3QgcXN0ciAqYixpbnQgZmxhZ3Mp
DQogew0KIAlyZXR1cm4gaXNvZnNfY21wX2NvbW1vbihkZW50cnksIGEsIGIs
IDApOw0KIH0NCiANCiBzdGF0aWMgaW50DQotaXNvZnNfY21waShzdHJ1Y3Qg
ZGVudHJ5ICpkZW50cnksc3RydWN0IHFzdHIgKmEsc3RydWN0IHFzdHIgKmIp
DQoraXNvZnNfY21waShzdHJ1Y3QgZGVudHJ5ICpkZW50cnksc3RydWN0IHFz
dHIgKmEsc3RydWN0IHFzdHIgKmIsaW50IGZsYWdzKQ0KIHsNCiAJcmV0dXJu
IGlzb2ZzX2NtcGlfY29tbW9uKGRlbnRyeSwgYSwgYiwgMCk7DQogfQ0KQEAg
LTI2MywxMyArMjYzLDEzIEBADQogfQ0KIA0KIHN0YXRpYyBpbnQNCi1pc29m
c19jbXBfbXMoc3RydWN0IGRlbnRyeSAqZGVudHJ5LHN0cnVjdCBxc3RyICph
LHN0cnVjdCBxc3RyICpiKQ0KK2lzb2ZzX2NtcF9tcyhzdHJ1Y3QgZGVudHJ5
ICpkZW50cnksc3RydWN0IHFzdHIgKmEsc3RydWN0IHFzdHIgKmIsIGludCBm
bGFncykNCiB7DQogCXJldHVybiBpc29mc19jbXBfY29tbW9uKGRlbnRyeSwg
YSwgYiwgMSk7DQogfQ0KIA0KIHN0YXRpYyBpbnQNCi1pc29mc19jbXBpX21z
KHN0cnVjdCBkZW50cnkgKmRlbnRyeSxzdHJ1Y3QgcXN0ciAqYSxzdHJ1Y3Qg
cXN0ciAqYikNCitpc29mc19jbXBpX21zKHN0cnVjdCBkZW50cnkgKmRlbnRy
eSxzdHJ1Y3QgcXN0ciAqYSxzdHJ1Y3QgcXN0ciAqYiwgaW50IGZsYWdzKQ0K
IHsNCiAJcmV0dXJuIGlzb2ZzX2NtcGlfY29tbW9uKGRlbnRyeSwgYSwgYiwg
MSk7DQogfQ0KZGlmZiAtdXJOIGxpbnV4LWJpcmQuRkFUL2ZzL2lzb2ZzL25h
bWVpLmMgbGludXgtYmlyZC5CTEVUQ0gvZnMvaXNvZnMvbmFtZWkuYw0KLS0t
IGxpbnV4LWJpcmQuRkFUL2ZzL2lzb2ZzL25hbWVpLmMJVGh1IE1heSAxMyAw
NzowMjo1OSAxOTk5DQorKysgbGludXgtYmlyZC5CTEVUQ0gvZnMvaXNvZnMv
bmFtZWkuYwlUdWUgTWF5IDI1IDA2OjUwOjIwIDE5OTkNCkBAIC00Niw3ICs0
Niw3IEBADQogDQogCXFzdHIubmFtZSA9IGNvbXBhcmU7DQogCXFzdHIubGVu
ID0gZGxlbjsNCi0JcmV0dXJuIGRlbnRyeS0+ZF9vcC0+ZF9jb21wYXJlKGRl
bnRyeSwgJmRlbnRyeS0+ZF9uYW1lLCAmcXN0cik7DQorCXJldHVybiBkZW50
cnktPmRfb3AtPmRfY29tcGFyZShkZW50cnksICZkZW50cnktPmRfbmFtZSwg
JnFzdHIsIDApOw0KIH0NCiANCiAvKg0KQEAgLTIyNyw3ICsyMjcsNyBAQA0K
IAlyZXR1cm4gcmV0dmFsOw0KIH0NCiANCi1zdHJ1Y3QgZGVudHJ5ICppc29m
c19sb29rdXAoc3RydWN0IGlub2RlICogZGlyLCBzdHJ1Y3QgZGVudHJ5ICog
ZGVudHJ5KQ0KK3N0cnVjdCBkZW50cnkgKmlzb2ZzX2xvb2t1cChzdHJ1Y3Qg
aW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBpbnQgZmxhZ3Mp
DQogew0KIAl1bnNpZ25lZCBsb25nIGlubzsNCiAJc3RydWN0IGJ1ZmZlcl9o
ZWFkICogYmg7DQpkaWZmIC11ck4gbGludXgtYmlyZC5GQVQvZnMvbWluaXgv
bmFtZWkuYyBsaW51eC1iaXJkLkJMRVRDSC9mcy9taW5peC9uYW1laS5jDQot
LS0gbGludXgtYmlyZC5GQVQvZnMvbWluaXgvbmFtZWkuYwlUaHUgTWF5IDEz
IDA3OjAzOjAwIDE5OTkNCisrKyBsaW51eC1iaXJkLkJMRVRDSC9mcy9taW5p
eC9uYW1laS5jCVR1ZSBNYXkgMjUgMDg6MjA6MzggMTk5OQ0KQEAgLTExNiw3
ICsxMTYsNyBAQA0KIAkwCQkvKiBjb21wYXJlICovDQogfTsNCiANCi1zdHJ1
Y3QgZGVudHJ5ICptaW5peF9sb29rdXAoc3RydWN0IGlub2RlICogZGlyLCBz
dHJ1Y3QgZGVudHJ5ICpkZW50cnkpDQorc3RydWN0IGRlbnRyeSAqbWluaXhf
bG9va3VwKHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50
cnksIGludCBmbGFncykNCiB7DQogCXN0cnVjdCBpbm9kZSAqIGlub2RlID0g
TlVMTDsNCiAJc3RydWN0IG1pbml4X2Rpcl9lbnRyeSAqIGRlOw0KZGlmZiAt
dXJOIGxpbnV4LWJpcmQuRkFUL2ZzL21zZG9zL25hbWVpLmMgbGludXgtYmly
ZC5CTEVUQ0gvZnMvbXNkb3MvbmFtZWkuYw0KLS0tIGxpbnV4LWJpcmQuRkFU
L2ZzL21zZG9zL25hbWVpLmMJVHVlIE1heSAyNSAyMjo0Nzo0NCAxOTk5DQor
KysgbGludXgtYmlyZC5CTEVUQ0gvZnMvbXNkb3MvbmFtZWkuYwlUdWUgTWF5
IDI1IDA4OjUyOjE2IDE5OTkNCkBAIC0xNzQsNyArMTc0LDggQEANCiAgKiBD
b21wYXJlIHR3byBtc2RvcyBuYW1lcy4gSWYgZWl0aGVyIG9mIHRoZSBuYW1l
cyBhcmUgaW52YWxpZCwNCiAgKiB3ZSBmYWxsIGJhY2sgdG8gZG9pbmcgdGhl
IHN0YW5kYXJkIG5hbWUgY29tcGFyaXNvbi4NCiAgKi8NCi1zdGF0aWMgaW50
IG1zZG9zX2NtcChzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIHN0cnVjdCBxc3Ry
ICphLCBzdHJ1Y3QgcXN0ciAqYikNCitzdGF0aWMgaW50IG1zZG9zX2NtcChz
dHJ1Y3QgZGVudHJ5ICpkZW50cnksIHN0cnVjdCBxc3RyICphLCBzdHJ1Y3Qg
cXN0ciAqYiwNCisJCSAgICAgaW50IGZsYWcpDQogew0KIAlzdHJ1Y3QgZmF0
X21vdW50X29wdGlvbnMgKm9wdGlvbnMgPSAmIChNU0RPU19TQihkZW50cnkt
PmRfc2IpLT5vcHRpb25zKTsNCiAJaW50IGVycm9yOw0KQEAgLTIxNCw3ICsy
MTUsNyBAQA0KICAqLw0KIA0KIC8qKioqKiBHZXQgaW5vZGUgdXNpbmcgZGly
ZWN0b3J5IGFuZCBuYW1lICovDQotc3RydWN0IGRlbnRyeSAqbXNkb3NfbG9v
a3VwKHN0cnVjdCBpbm9kZSAqZGlyLHN0cnVjdCBkZW50cnkgKmRlbnRyeSkN
CitzdHJ1Y3QgZGVudHJ5ICptc2Rvc19sb29rdXAoc3RydWN0IGlub2RlICpk
aXIsc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBpbnQgZmxhZ3MpDQogew0KIAlz
dHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiID0gZGlyLT5pX3NiOw0KIAlzdHJ1Y3Qg
aW5vZGUgKmlub2RlID0gTlVMTDsNCmRpZmYgLXVyTiBsaW51eC1iaXJkLkZB
VC9mcy9uYW1laS5jIGxpbnV4LWJpcmQuQkxFVENIL2ZzL25hbWVpLmMNCi0t
LSBsaW51eC1iaXJkLkZBVC9mcy9uYW1laS5jCVRodSBNYXkgMTMgMDc6MDI6
NTUgMTk5OQ0KKysrIGxpbnV4LWJpcmQuQkxFVENIL2ZzL25hbWVpLmMJVHVl
IE1heSAyNSAyMjozMjoxNyAxOTk5DQpAQCAtMjE1LDcgKzIxNSw3IEBADQog
ICovDQogc3RhdGljIHN0cnVjdCBkZW50cnkgKiBjYWNoZWRfbG9va3VwKHN0
cnVjdCBkZW50cnkgKiBwYXJlbnQsIHN0cnVjdCBxc3RyICogbmFtZSwgaW50
IGZsYWdzKQ0KIHsNCi0Jc3RydWN0IGRlbnRyeSAqIGRlbnRyeSA9IGRfbG9v
a3VwKHBhcmVudCwgbmFtZSk7DQorCXN0cnVjdCBkZW50cnkgKiBkZW50cnkg
PSBkX2xvb2t1cChwYXJlbnQsIG5hbWUsIGZsYWdzKTsNCiANCiAJaWYgKGRl
bnRyeSAmJiBkZW50cnktPmRfb3AgJiYgZGVudHJ5LT5kX29wLT5kX3JldmFs
aWRhdGUpIHsNCiAJCWlmICghZGVudHJ5LT5kX29wLT5kX3JldmFsaWRhdGUo
ZGVudHJ5LCBmbGFncykgJiYgIWRfaW52YWxpZGF0ZShkZW50cnkpKSB7DQpA
QCAtMjUxLDcgKzI1MSw3IEBADQogCQlzdHJ1Y3QgZGVudHJ5ICogZGVudHJ5
ID0gZF9hbGxvYyhwYXJlbnQsIG5hbWUpOw0KIAkJcmVzdWx0ID0gRVJSX1BU
UigtRU5PTUVNKTsNCiAJCWlmIChkZW50cnkpIHsNCi0JCQlyZXN1bHQgPSBk
aXItPmlfb3AtPmxvb2t1cChkaXIsIGRlbnRyeSk7DQorCQkJcmVzdWx0ID0g
ZGlyLT5pX29wLT5sb29rdXAoZGlyLCBkZW50cnksIGZsYWdzKTsNCiAJCQlp
ZiAocmVzdWx0KQ0KIAkJCQlkcHV0KGRlbnRyeSk7DQogCQkJZWxzZQ0KQEAg
LTMyNCw3ICszMjQsOCBAQA0KIAkJZ290byByZXR1cm5fYmFzZTsNCiANCiAJ
aW5vZGUgPSBiYXNlLT5kX2lub2RlOw0KLQlsb29rdXBfZmxhZ3MgJj0gTE9P
S1VQX0ZPTExPVyB8IExPT0tVUF9ESVJFQ1RPUlkgfCBMT09LVVBfU0xBU0hP
SzsNCisJbG9va3VwX2ZsYWdzICY9IExPT0tVUF9GT0xMT1cgfCBMT09LVVBf
RElSRUNUT1JZIHwgTE9PS1VQX1NMQVNIT0sgfA0KKwkJCUxPT0tVUF9UQVJH
RVQ7DQogDQogCS8qIEF0IHRoaXMgcG9pbnQgd2Uga25vdyB3ZSBoYXZlIGEg
cmVhbCBwYXRoIGNvbXBvbmVudC4gKi8NCiAJZm9yKDs7KSB7DQpAQCAtMzYw
LDggKzM2MSwxMCBAQA0KIAkJCWRvIHsNCiAJCQkJdG1wID0gKisrbmFtZTsN
CiAJCQl9IHdoaWxlICh0bXAgPT0gJy8nKTsNCi0JCQlpZiAodG1wKQ0KKwkJ
CWlmICh0bXApIHsNCiAJCQkJZmxhZ3MgfD0gTE9PS1VQX0NPTlRJTlVFOw0K
KwkJCQlmbGFncyAmPSB+TE9PS1VQX1RBUkdFVDsNCisJCQl9DQogCQl9DQog
DQogCQkvKg0KQEAgLTEyMTcsOCArMTIyMCwxMyBAQA0KIHsNCiAJaW50IGVy
cm9yOw0KIAlpbnQgbmVlZF9yZWhhc2ggPSAwOw0KKwlpbnQgbm9ybV9jb3Vu
dCA9IDE7DQorCXN0cnVjdCBkZW50cnkgKnNoYWRvd2VkID0gbmV3X2RlbnRy
eTsNCiANCi0JaWYgKG9sZF9kZW50cnktPmRfaW5vZGUgPT0gbmV3X2RlbnRy
eS0+ZF9pbm9kZSkNCisJaWYgKG5ld19kZW50cnktPmRfZmxhZ3MgJiBEQ0FD
SEVfVk1TX0xPU1NBR0UpIHsNCisJCXNoYWRvd2VkID0gKHN0cnVjdCBkZW50
cnkqKW5ld19kZW50cnktPmRfZnNkYXRhOw0KKwkJbm9ybV9jb3VudCsrOw0K
Kwl9IGVsc2UgaWYgKG9sZF9kZW50cnktPmRfaW5vZGUgPT0gbmV3X2RlbnRy
eS0+ZF9pbm9kZSkNCiAJCXJldHVybiAwOw0KIA0KIAllcnJvciA9IG1heV9k
ZWxldGUob2xkX2Rpciwgb2xkX2RlbnRyeSwgMSk7DQpAQCAtMTIyOCwxMCAr
MTIzNiwxMCBAQA0KIAlpZiAobmV3X2Rpci0+aV9kZXYgIT0gb2xkX2Rpci0+
aV9kZXYpDQogCQlyZXR1cm4gLUVYREVWOw0KIA0KLQlpZiAoIW5ld19kZW50
cnktPmRfaW5vZGUpDQotCQllcnJvciA9IG1heV9jcmVhdGUobmV3X2Rpciwg
bmV3X2RlbnRyeSk7DQorCWlmICghc2hhZG93ZWQtPmRfaW5vZGUpDQorCQll
cnJvciA9IG1heV9jcmVhdGUobmV3X2Rpciwgc2hhZG93ZWQpOw0KIAllbHNl
DQotCQllcnJvciA9IG1heV9kZWxldGUobmV3X2RpciwgbmV3X2RlbnRyeSwg
MSk7DQorCQllcnJvciA9IG1heV9kZWxldGUobmV3X2Rpciwgc2hhZG93ZWQs
IDEpOw0KIAlpZiAoZXJyb3IpDQogCQlyZXR1cm4gZXJyb3I7DQogDQpAQCAt
MTI1NCwxNyArMTI2MiwyMSBAQA0KIAllcnJvciA9IC1FSU5WQUw7DQogCWlm
IChpc19zdWJkaXIobmV3X2RlbnRyeSwgb2xkX2RlbnRyeSkpDQogCQlnb3Rv
IG91dF91bmxvY2s7DQotCWlmIChuZXdfZGVudHJ5LT5kX2lub2RlKSB7DQor
CWlmIChzaGFkb3dlZC0+ZF9pbm9kZSAmJiBzaGFkb3dlZCE9b2xkX2RlbnRy
eSkgew0KIAkJZXJyb3IgPSAtRUJVU1k7DQotCQlpZiAoZF9pbnZhbGlkYXRl
KG5ld19kZW50cnkpPDApDQotCQkJZ290byBvdXRfdW5sb2NrOw0KKwkJaWYg
KHNoYWRvd2VkLT5kX2NvdW50IT1ub3JtX2NvdW50KSB7DQorCQkJc2hyaW5r
X2RjYWNoZV9wYXJlbnQoc2hhZG93ZWQpOw0KKwkJCWlmIChzaGFkb3dlZC0+
ZF9jb3VudCE9bm9ybV9jb3VudCkNCisJCQkJZ290byBvdXRfdW5sb2NrOw0K
KwkJfQ0KKwkJZF9kcm9wKHNoYWRvd2VkKTsNCiAJCW5lZWRfcmVoYXNoID0g
MTsNCiAJfQ0KIAllcnJvciA9IG9sZF9kaXItPmlfb3AtPnJlbmFtZShvbGRf
ZGlyLCBvbGRfZGVudHJ5LCBuZXdfZGlyLCBuZXdfZGVudHJ5KTsNCiAJaWYg
KG5lZWRfcmVoYXNoKQ0KLQkJZF9yZWhhc2gobmV3X2RlbnRyeSk7DQotCWlm
ICghZXJyb3IpDQotCQlkX21vdmUob2xkX2RlbnRyeSxuZXdfZGVudHJ5KTsN
CisJCWRfcmVoYXNoKHNoYWRvd2VkKTsNCisJaWYgKCFlcnJvciAmJiBvbGRf
ZGVudHJ5IT1zaGFkb3dlZCkNCisJCWRfbW92ZShvbGRfZGVudHJ5LHNoYWRv
d2VkKTsNCiBvdXRfdW5sb2NrOg0KIAl1cCgmb2xkX2Rpci0+aV9zYi0+c192
ZnNfcmVuYW1lX3NlbSk7DQogCXJldHVybiBlcnJvcjsNCkBAIC0xMjc0LDgg
KzEyODYsMTEgQEANCiAJICAgICAgIHN0cnVjdCBpbm9kZSAqbmV3X2Rpciwg
c3RydWN0IGRlbnRyeSAqbmV3X2RlbnRyeSkNCiB7DQogCWludCBlcnJvcjsN
CisJc3RydWN0IGRlbnRyeSAqc2hhZG93ZWQgPSBuZXdfZGVudHJ5Ow0KIA0K
LQlpZiAob2xkX2RlbnRyeS0+ZF9pbm9kZSA9PSBuZXdfZGVudHJ5LT5kX2lu
b2RlKQ0KKwlpZiAobmV3X2RlbnRyeS0+ZF9mbGFncyAmIERDQUNIRV9WTVNf
TE9TU0FHRSkNCisJCXNoYWRvd2VkID0gKHN0cnVjdCBkZW50cnkqKW5ld19k
ZW50cnktPmRfZnNkYXRhOw0KKwllbHNlIGlmIChvbGRfZGVudHJ5LT5kX2lu
b2RlID09IG5ld19kZW50cnktPmRfaW5vZGUpDQogCQlyZXR1cm4gMDsNCiAN
CiAJZXJyb3IgPSBtYXlfZGVsZXRlKG9sZF9kaXIsIG9sZF9kZW50cnksIDAp
Ow0KQEAgLTEyODUsMTAgKzEzMDAsMTAgQEANCiAJaWYgKG5ld19kaXItPmlf
ZGV2ICE9IG9sZF9kaXItPmlfZGV2KQ0KIAkJcmV0dXJuIC1FWERFVjsNCiAN
Ci0JaWYgKCFuZXdfZGVudHJ5LT5kX2lub2RlKQ0KLQkJZXJyb3IgPSBtYXlf
Y3JlYXRlKG5ld19kaXIsIG5ld19kZW50cnkpOw0KKwlpZiAoIXNoYWRvd2Vk
LT5kX2lub2RlKQ0KKwkJZXJyb3IgPSBtYXlfY3JlYXRlKG5ld19kaXIsIHNo
YWRvd2VkKTsNCiAJZWxzZQ0KLQkJZXJyb3IgPSBtYXlfZGVsZXRlKG5ld19k
aXIsIG5ld19kZW50cnksIDApOw0KKwkJZXJyb3IgPSBtYXlfZGVsZXRlKG5l
d19kaXIsIHNoYWRvd2VkLCAwKTsNCiAJaWYgKGVycm9yKQ0KIAkJcmV0dXJu
IGVycm9yOw0KIA0KQEAgLTEzMDIsNyArMTMxNyw4IEBADQogCQlyZXR1cm4g
ZXJyb3I7DQogCS8qIFRoZSBmb2xsb3dpbmcgZF9tb3ZlKCkgc2hvdWxkIGJl
Y29tZSB1bmNvbmRpdGlvbmFsICovDQogCWlmICghKG9sZF9kaXItPmlfc2It
PnNfZmxhZ3MgJiBNU19PRERfUkVOQU1FKSkgew0KLQkJZF9tb3ZlKG9sZF9k
ZW50cnksIG5ld19kZW50cnkpOw0KKwkJaWYgKG9sZF9kZW50cnkhPXNoYWRv
d2VkKQ0KKwkJCWRfbW92ZShvbGRfZGVudHJ5LCBzaGFkb3dlZCk7DQogCX0N
CiAJcmV0dXJuIDA7DQogfQ0KQEAgLTEzMjAsNyArMTMzNiw3IEBADQogew0K
IAlpbnQgZXJyb3I7DQogCXN0cnVjdCBkZW50cnkgKiBvbGRfZGlyLCAqIG5l
d19kaXI7DQotCXN0cnVjdCBkZW50cnkgKiBvbGRfZGVudHJ5LCAqbmV3X2Rl
bnRyeTsNCisJc3RydWN0IGRlbnRyeSAqIG9sZF9kZW50cnksICpuZXdfZGVu
dHJ5LCAqc2hhZG93ZWQgPSBOVUxMOw0KIA0KIAlvbGRfZGVudHJ5ID0gbG9v
a3VwX2RlbnRyeShvbGRuYW1lLCBOVUxMLCAwKTsNCiANCkBAIC0xMzMzLDkg
KzEzNDksOSBAQA0KIAkJZ290byBleGl0X29sZDsNCiANCiAJew0KLQkJdW5z
aWduZWQgaW50IGZsYWdzID0gMDsNCisJCXVuc2lnbmVkIGludCBmbGFncyA9
IExPT0tVUF9UQVJHRVQ7DQogCQlpZiAoU19JU0RJUihvbGRfZGVudHJ5LT5k
X2lub2RlLT5pX21vZGUpKQ0KLQkJCWZsYWdzID0gTE9PS1VQX1NMQVNIT0s7
DQorCQkJZmxhZ3MgPSBMT09LVVBfU0xBU0hPSyB8IExPT0tVUF9UQVJHRVQ7
DQogCQluZXdfZGVudHJ5ID0gbG9va3VwX2RlbnRyeShuZXduYW1lLCBOVUxM
LCBmbGFncyk7DQogCX0NCiANCkBAIC0xMzQ1LDE2ICsxMzYxLDIxIEBADQog
DQogCW5ld19kaXIgPSBnZXRfcGFyZW50KG5ld19kZW50cnkpOw0KIAlvbGRf
ZGlyID0gZ2V0X3BhcmVudChvbGRfZGVudHJ5KTsNCisJaWYgKG5ld19kZW50
cnktPmRfZmxhZ3MgJiBEQ0FDSEVfVk1TX0xPU1NBR0UpDQorCQlzaGFkb3dl
ZCA9IChzdHJ1Y3QgZGVudHJ5KiluZXdfZGVudHJ5LT5kX2ZzZGF0YTsNCiAN
CiAJZG91YmxlX2xvY2sobmV3X2Rpciwgb2xkX2Rpcik7DQogDQogCWVycm9y
ID0gLUVOT0VOVDsNCi0JaWYgKGNoZWNrX3BhcmVudChvbGRfZGlyLCBvbGRf
ZGVudHJ5KSAmJiBjaGVja19wYXJlbnQobmV3X2RpciwgbmV3X2RlbnRyeSkp
DQorCWlmIChjaGVja19wYXJlbnQob2xkX2Rpciwgb2xkX2RlbnRyeSkgJiYg
DQorCSAgICBjaGVja19wYXJlbnQobmV3X2RpciwgKHNoYWRvd2VkID8gc2hh
ZG93ZWQgOiBuZXdfZGVudHJ5KSkpDQogCQllcnJvciA9IHZmc19yZW5hbWUo
b2xkX2Rpci0+ZF9pbm9kZSwgb2xkX2RlbnRyeSwNCiAJCQkJICAgbmV3X2Rp
ci0+ZF9pbm9kZSwgbmV3X2RlbnRyeSk7DQogDQogCWRvdWJsZV91bmxvY2so
bmV3X2Rpciwgb2xkX2Rpcik7DQogCWRwdXQobmV3X2RlbnRyeSk7DQorCWlm
IChzaGFkb3dlZCkNCisJCWRwdXQoc2hhZG93ZWQpOw0KIGV4aXRfb2xkOg0K
IAlkcHV0KG9sZF9kZW50cnkpOw0KIGV4aXQ6DQpkaWZmIC11ck4gbGludXgt
YmlyZC5GQVQvZnMvbmNwZnMvZGlyLmMgbGludXgtYmlyZC5CTEVUQ0gvZnMv
bmNwZnMvZGlyLmMNCi0tLSBsaW51eC1iaXJkLkZBVC9mcy9uY3Bmcy9kaXIu
YwlUaHUgTWF5IDEzIDA3OjAzOjAxIDE5OTkNCisrKyBsaW51eC1iaXJkLkJM
RVRDSC9mcy9uY3Bmcy9kaXIuYwlUdWUgTWF5IDI1IDA5OjQzOjU3IDE5OTkN
CkBAIC01MCw3ICs1MCw3IEBADQogc3RhdGljIGludCBuY3BfcmVhZGRpcihz
dHJ1Y3QgZmlsZSAqLCB2b2lkICosIGZpbGxkaXJfdCk7DQogDQogc3RhdGlj
IGludCBuY3BfY3JlYXRlKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZGVudHJ5
ICosIGludCk7DQotc3RhdGljIHN0cnVjdCBkZW50cnkgKm5jcF9sb29rdXAo
c3RydWN0IGlub2RlICosIHN0cnVjdCBkZW50cnkgKik7DQorc3RhdGljIHN0
cnVjdCBkZW50cnkgKm5jcF9sb29rdXAoc3RydWN0IGlub2RlICosIHN0cnVj
dCBkZW50cnkgKiwgaW50KTsNCiBzdGF0aWMgaW50IG5jcF91bmxpbmsoc3Ry
dWN0IGlub2RlICosIHN0cnVjdCBkZW50cnkgKik7DQogc3RhdGljIGludCBu
Y3BfbWtkaXIoc3RydWN0IGlub2RlICosIHN0cnVjdCBkZW50cnkgKiwgaW50
KTsNCiBzdGF0aWMgaW50IG5jcF9ybWRpcihzdHJ1Y3QgaW5vZGUgKiwgc3Ry
dWN0IGRlbnRyeSAqKTsNCkBAIC0xMTQsNyArMTE0LDcgQEANCiAgKi8NCiBz
dGF0aWMgaW50IG5jcF9sb29rdXBfdmFsaWRhdGUoc3RydWN0IGRlbnRyeSAq
LCBpbnQpOw0KIHN0YXRpYyBpbnQgbmNwX2hhc2hfZGVudHJ5KHN0cnVjdCBk
ZW50cnkgKiwgc3RydWN0IHFzdHIgKik7DQotc3RhdGljIGludCBuY3BfY29t
cGFyZV9kZW50cnkgKHN0cnVjdCBkZW50cnkgKiwgc3RydWN0IHFzdHIgKiwg
c3RydWN0IHFzdHIgKik7DQorc3RhdGljIGludCBuY3BfY29tcGFyZV9kZW50
cnkoc3RydWN0IGRlbnRyeSAqLHN0cnVjdCBxc3RyICosc3RydWN0IHFzdHIg
KixpbnQpOw0KIHN0YXRpYyB2b2lkIG5jcF9kZWxldGVfZGVudHJ5KHN0cnVj
dCBkZW50cnkgKik7DQogDQogc3RydWN0IGRlbnRyeV9vcGVyYXRpb25zIG5j
cF9kZW50cnlfb3BlcmF0aW9ucyA9DQpAQCAtMTUyLDcgKzE1Miw4IEBADQog
fQ0KIA0KIHN0YXRpYyBpbnQNCi1uY3BfY29tcGFyZV9kZW50cnkoc3RydWN0
IGRlbnRyeSAqZGVudHJ5LCBzdHJ1Y3QgcXN0ciAqYSwgc3RydWN0IHFzdHIg
KmIpDQorbmNwX2NvbXBhcmVfZGVudHJ5KHN0cnVjdCBkZW50cnkgKmRlbnRy
eSwgc3RydWN0IHFzdHIgKmEsIHN0cnVjdCBxc3RyICpiLA0KKwlpbnQgZmxh
Z3MpDQogew0KIAlpbnQgaTsNCiANCkBAIC03MzksNyArNzQwLDggQEANCiAJ
cmV0dXJuIHJlc3VsdDsNCiB9DQogDQotc3RhdGljIHN0cnVjdCBkZW50cnkg
Km5jcF9sb29rdXAoc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBkZW50cnkg
KmRlbnRyeSkNCitzdGF0aWMgc3RydWN0IGRlbnRyeSAqbmNwX2xvb2t1cChz
dHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5LA0KKwlp
bnQgZmxhZ3MpDQogew0KIAlzdHJ1Y3QgbmNwX3NlcnZlciAqc2VydmVyOw0K
IAlzdHJ1Y3QgaW5vZGUgKmlub2RlID0gTlVMTDsNCmRpZmYgLXVyTiBsaW51
eC1iaXJkLkZBVC9mcy9uZnMvZGlyLmMgbGludXgtYmlyZC5CTEVUQ0gvZnMv
bmZzL2Rpci5jDQotLS0gbGludXgtYmlyZC5GQVQvZnMvbmZzL2Rpci5jCVRo
dSBNYXkgMTMgMDc6MDM6MDEgMTk5OQ0KKysrIGxpbnV4LWJpcmQuQkxFVENI
L2ZzL25mcy9kaXIuYwlUdWUgTWF5IDI1IDA4OjU2OjQyIDE5OTkNCkBAIC01
Myw3ICs1Myw3IEBADQogDQogc3RhdGljIHNzaXplX3QgbmZzX2Rpcl9yZWFk
KHN0cnVjdCBmaWxlICosIGNoYXIgKiwgc2l6ZV90LCBsb2ZmX3QgKik7DQog
c3RhdGljIGludCBuZnNfcmVhZGRpcihzdHJ1Y3QgZmlsZSAqLCB2b2lkICos
IGZpbGxkaXJfdCk7DQotc3RhdGljIHN0cnVjdCBkZW50cnkgKm5mc19sb29r
dXAoc3RydWN0IGlub2RlICosIHN0cnVjdCBkZW50cnkgKik7DQorc3RhdGlj
IHN0cnVjdCBkZW50cnkgKm5mc19sb29rdXAoc3RydWN0IGlub2RlICosIHN0
cnVjdCBkZW50cnkgKiwgaW50KTsNCiBzdGF0aWMgaW50IG5mc19jcmVhdGUo
c3RydWN0IGlub2RlICosIHN0cnVjdCBkZW50cnkgKiwgaW50KTsNCiBzdGF0
aWMgaW50IG5mc19ta2RpcihzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGRlbnRy
eSAqLCBpbnQpOw0KIHN0YXRpYyBpbnQgbmZzX3JtZGlyKHN0cnVjdCBpbm9k
ZSAqLCBzdHJ1Y3QgZGVudHJ5ICopOw0KQEAgLTU2Miw3ICs1NjIsOCBAQA0K
IH0NCiAjZW5kaWYNCiANCi1zdGF0aWMgc3RydWN0IGRlbnRyeSAqbmZzX2xv
b2t1cChzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqIGRlbnRy
eSkNCitzdGF0aWMgc3RydWN0IGRlbnRyeSAqbmZzX2xvb2t1cChzdHJ1Y3Qg
aW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqIGRlbnRyeSwNCisJaW50IGZs
YWdzKQ0KIHsNCiAJc3RydWN0IGlub2RlICppbm9kZTsNCiAJaW50IGVycm9y
Ow0KQEAgLTc5OCwxMiArNzk5LDEyIEBADQogCXNxc3RyLm5hbWUgPSBzaWxs
eTsNCiAJc3FzdHIubGVuICA9IHNsZW47DQogCXNxc3RyLmhhc2ggPSBmdWxs
X25hbWVfaGFzaChzaWxseSwgc2xlbik7DQotCXNkZW50cnkgPSBkX2xvb2t1
cChwYXJlbnQsICZzcXN0cik7DQorCXNkZW50cnkgPSBkX2xvb2t1cChwYXJl
bnQsICZzcXN0ciwgMCk7DQogCWlmICghc2RlbnRyeSkgew0KIAkJc2RlbnRy
eSA9IGRfYWxsb2MocGFyZW50LCAmc3FzdHIpOw0KIAkJaWYgKHNkZW50cnkg
PT0gTlVMTCkNCiAJCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsNCi0JCXJl
cyA9IG5mc19sb29rdXAocGFyZW50LT5kX2lub2RlLCBzZGVudHJ5KTsNCisJ
CXJlcyA9IG5mc19sb29rdXAocGFyZW50LT5kX2lub2RlLCBzZGVudHJ5LCAw
KTsNCiAJCWlmIChyZXMpIHsNCiAJCQlkcHV0KHNkZW50cnkpOw0KIAkJCXJl
dHVybiByZXM7DQpkaWZmIC11ck4gbGludXgtYmlyZC5GQVQvZnMvbnRmcy9m
cy5jIGxpbnV4LWJpcmQuQkxFVENIL2ZzL250ZnMvZnMuYw0KLS0tIGxpbnV4
LWJpcmQuRkFUL2ZzL250ZnMvZnMuYwlUaHUgTWF5IDEzIDA3OjAzOjAzIDE5
OTkNCisrKyBsaW51eC1iaXJkLkJMRVRDSC9mcy9udGZzL2ZzLmMJVHVlIE1h
eSAyNSAwOTo0NToyNSAxOTk5DQpAQCAtMzcyLDcgKzM3Miw3IEBADQogCXJl
dHVybiAwOw0KIH0NCiAJCQkNCi1zdGF0aWMgc3RydWN0IGRlbnRyeSAqbnRm
c19sb29rdXAoc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBkZW50cnkgKmQp
DQorc3RhdGljIHN0cnVjdCBkZW50cnkgKm50ZnNfbG9va3VwKHN0cnVjdCBp
bm9kZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5ICpkLGludCBmbGFncykNCiB7DQog
CXN0cnVjdCBpbm9kZSAqcmVzPTA7DQogCWNoYXIgKml0ZW09MDsNCmRpZmYg
LXVyTiBsaW51eC1iaXJkLkZBVC9mcy9wcm9jL2ZkLmMgbGludXgtYmlyZC5C
TEVUQ0gvZnMvcHJvYy9mZC5jDQotLS0gbGludXgtYmlyZC5GQVQvZnMvcHJv
Yy9mZC5jCVRodSBNYXkgMTMgMDc6MDM6MDMgMTk5OQ0KKysrIGxpbnV4LWJp
cmQuQkxFVENIL2ZzL3Byb2MvZmQuYwlUdWUgTWF5IDI1IDA4OjUzOjE3IDE5
OTkNCkBAIC0xOSw3ICsxOSw3IEBADQogI2luY2x1ZGUgPGFzbS91YWNjZXNz
Lmg+DQogDQogc3RhdGljIGludCBwcm9jX3JlYWRmZChzdHJ1Y3QgZmlsZSAq
LCB2b2lkICosIGZpbGxkaXJfdCk7DQotc3RhdGljIHN0cnVjdCBkZW50cnkg
KnByb2NfbG9va3VwZmQoc3RydWN0IGlub2RlICosIHN0cnVjdCBkZW50cnkg
Kik7DQorc3RhdGljIHN0cnVjdCBkZW50cnkgKnByb2NfbG9va3VwZmQoc3Ry
dWN0IGlub2RlICosIHN0cnVjdCBkZW50cnkgKiwgaW50KTsNCiANCiBzdGF0
aWMgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBwcm9jX2ZkX29wZXJhdGlvbnMg
PSB7DQogCU5VTEwsCQkJLyogbHNlZWsgLSBkZWZhdWx0ICovDQpAQCAtNjcs
NyArNjcsOCBAQA0KICAqDQogICogVGh1cyBqdXN0IHJldHVybiAtRU5PRU5U
IGluc3RlYWQuDQogICovDQotc3RhdGljIHN0cnVjdCBkZW50cnkgKnByb2Nf
bG9va3VwZmQoc3RydWN0IGlub2RlICogZGlyLCBzdHJ1Y3QgZGVudHJ5ICog
ZGVudHJ5KQ0KK3N0YXRpYyBzdHJ1Y3QgZGVudHJ5ICpwcm9jX2xvb2t1cGZk
KHN0cnVjdCBpbm9kZSAqIGRpciwgc3RydWN0IGRlbnRyeSAqIGRlbnRyeSwN
CisJaW50IGZsYWdzKQ0KIHsNCiAJdW5zaWduZWQgaW50IGlubywgcGlkLCBm
ZCwgYzsNCiAJc3RydWN0IHRhc2tfc3RydWN0ICogcDsNCmRpZmYgLXVyTiBs
aW51eC1iaXJkLkZBVC9mcy9wcm9jL3Jvb3QuYyBsaW51eC1iaXJkLkJMRVRD
SC9mcy9wcm9jL3Jvb3QuYw0KLS0tIGxpbnV4LWJpcmQuRkFUL2ZzL3Byb2Mv
cm9vdC5jCVRodSBNYXkgMTMgMDc6MDM6MDQgMTk5OQ0KKysrIGxpbnV4LWJp
cmQuQkxFVENIL2ZzL3Byb2Mvcm9vdC5jCVR1ZSBNYXkgMjUgMDg6MzA6NDMg
MTk5OQ0KQEAgLTI4LDcgKzI4LDcgQEANCiAjZGVmaW5lIEZJUlNUX1BST0NF
U1NfRU5UUlkgMjU2DQogDQogc3RhdGljIGludCBwcm9jX3Jvb3RfcmVhZGRp
cihzdHJ1Y3QgZmlsZSAqLCB2b2lkICosIGZpbGxkaXJfdCk7DQotc3RhdGlj
IHN0cnVjdCBkZW50cnkgKnByb2Nfcm9vdF9sb29rdXAoc3RydWN0IGlub2Rl
ICosc3RydWN0IGRlbnRyeSAqKTsNCitzdGF0aWMgc3RydWN0IGRlbnRyeSAq
cHJvY19yb290X2xvb2t1cChzdHJ1Y3QgaW5vZGUgKixzdHJ1Y3QgZGVudHJ5
ICosaW50KTsNCiBzdGF0aWMgaW50IHByb2NfdW5saW5rKHN0cnVjdCBpbm9k
ZSAqLCBzdHJ1Y3QgZGVudHJ5ICopOw0KIA0KIHN0YXRpYyB1bnNpZ25lZCBj
aGFyIHByb2NfYWxsb2NfbWFwW1BST0NfTkRZTkFNSUMgLyA4XSA9IHswfTsN
CkBAIC03NjksNyArNzY5LDcgQEANCiAgKiBEb24ndCBjcmVhdGUgbmVnYXRp
dmUgZGVudHJpZXMgaGVyZSwgcmV0dXJuIC1FTk9FTlQgYnkgaGFuZA0KICAq
IGluc3RlYWQuDQogICovDQotc3RydWN0IGRlbnRyeSAqcHJvY19sb29rdXAo
c3RydWN0IGlub2RlICogZGlyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpDQor
c3RydWN0IGRlbnRyeSAqcHJvY19sb29rdXAoc3RydWN0IGlub2RlICogZGly
LCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIGludCBmbGFncykNCiB7DQogCXN0
cnVjdCBpbm9kZSAqaW5vZGU7DQogCXN0cnVjdCBwcm9jX2Rpcl9lbnRyeSAq
IGRlOw0KQEAgLTgwMSw3ICs4MDEsOCBAQA0KIAlyZXR1cm4gRVJSX1BUUihl
cnJvcik7DQogfQ0KIA0KLXN0YXRpYyBzdHJ1Y3QgZGVudHJ5ICpwcm9jX3Jv
b3RfbG9va3VwKHN0cnVjdCBpbm9kZSAqIGRpciwgc3RydWN0IGRlbnRyeSAq
IGRlbnRyeSkNCitzdGF0aWMgc3RydWN0IGRlbnRyeSAqcHJvY19yb290X2xv
b2t1cChzdHJ1Y3QgaW5vZGUgKiBkaXIsDQorCQkJCSAgICAgICBzdHJ1Y3Qg
ZGVudHJ5ICogZGVudHJ5LCBpbnQgZmxhZ3MpDQogew0KIAl1bnNpZ25lZCBp
bnQgcGlkLCBjOw0KIAlzdHJ1Y3QgdGFza19zdHJ1Y3QgKnA7DQpAQCAtODIw
LDcgKzgyMSw3IEBADQogCQlyZWFkX3VubG9jaygmdGFza2xpc3RfbG9jayk7
DQogCX0NCiANCi0JaWYgKCFwcm9jX2xvb2t1cChkaXIsIGRlbnRyeSkpDQor
CWlmICghcHJvY19sb29rdXAoZGlyLCBkZW50cnksIGZsYWdzKSkNCiAJCXJl
dHVybiBOVUxMOw0KIAkNCiAJcGlkID0gMDsNCmRpZmYgLXVyTiBsaW51eC1i
aXJkLkZBVC9mcy9xbng0L25hbWVpLmMgbGludXgtYmlyZC5CTEVUQ0gvZnMv
cW54NC9uYW1laS5jDQotLS0gbGludXgtYmlyZC5GQVQvZnMvcW54NC9uYW1l
aS5jCVRodSBNYXkgMTMgMDc6MDM6MDQgMTk5OQ0KKysrIGxpbnV4LWJpcmQu
QkxFVENIL2ZzL3FueDQvbmFtZWkuYwlUdWUgTWF5IDI1IDA5OjQ4OjE4IDE5
OTkNCkBAIC0xMDQsNyArMTA0LDcgQEANCiAJcmV0dXJuIE5VTEw7DQogfQ0K
IA0KLXN0cnVjdCBkZW50cnkgKiBxbng0X2xvb2t1cChzdHJ1Y3QgaW5vZGUg
KmRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5KQ0KK3N0cnVjdCBkZW50cnkg
KiBxbng0X2xvb2t1cChzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRy
eSAqZGVudHJ5LCBpbnQgZmxhZ3MpDQogew0KIAlpbnQgaW5vOw0KIAlzdHJ1
Y3QgcW54NF9pbm9kZV9lbnRyeSAqZGU7DQpkaWZmIC11ck4gbGludXgtYmly
ZC5GQVQvZnMvcm9tZnMvaW5vZGUuYyBsaW51eC1iaXJkLkJMRVRDSC9mcy9y
b21mcy9pbm9kZS5jDQotLS0gbGludXgtYmlyZC5GQVQvZnMvcm9tZnMvaW5v
ZGUuYwlUaHUgTWF5IDEzIDA3OjAzOjA0IDE5OTkNCisrKyBsaW51eC1iaXJk
LkJMRVRDSC9mcy9yb21mcy9pbm9kZS5jCVR1ZSBNYXkgMjUgMDk6NDc6NTYg
MTk5OQ0KQEAgLTMxMCw3ICszMTAsNyBAQA0KIH0NCiANCiBzdGF0aWMgc3Ry
dWN0IGRlbnRyeSAqDQotcm9tZnNfbG9va3VwKHN0cnVjdCBpbm9kZSAqZGly
LCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpDQorcm9tZnNfbG9va3VwKHN0cnVj
dCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIGludCBmbGFn
cykNCiB7DQogCXVuc2lnbmVkIGxvbmcgb2Zmc2V0LCBtYXhvZmY7DQogCWlu
dCBmc2xlbiwgcmVzOw0KZGlmZiAtdXJOIGxpbnV4LWJpcmQuRkFUL2ZzL3Nt
YmZzL2Rpci5jIGxpbnV4LWJpcmQuQkxFVENIL2ZzL3NtYmZzL2Rpci5jDQot
LS0gbGludXgtYmlyZC5GQVQvZnMvc21iZnMvZGlyLmMJVGh1IE1heSAxMyAw
NzowMzowNCAxOTk5DQorKysgbGludXgtYmlyZC5CTEVUQ0gvZnMvc21iZnMv
ZGlyLmMJVHVlIE1heSAyNSAwOTo0MTo0NCAxOTk5DQpAQCAtMjIsNyArMjIs
NyBAQA0KIHN0YXRpYyBpbnQgc21iX3JlYWRkaXIoc3RydWN0IGZpbGUgKiwg
dm9pZCAqLCBmaWxsZGlyX3QpOw0KIHN0YXRpYyBpbnQgc21iX2Rpcl9vcGVu
KHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZmlsZSAqKTsNCiANCi1zdGF0aWMg
c3RydWN0IGRlbnRyeSAqc21iX2xvb2t1cChzdHJ1Y3QgaW5vZGUgKiwgc3Ry
dWN0IGRlbnRyeSAqKTsNCitzdGF0aWMgc3RydWN0IGRlbnRyeSAqc21iX2xv
b2t1cChzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGRlbnRyeSAqLCBpbnQpOw0K
IHN0YXRpYyBpbnQgc21iX2NyZWF0ZShzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0
IGRlbnRyeSAqLCBpbnQpOw0KIHN0YXRpYyBpbnQgc21iX21rZGlyKHN0cnVj
dCBpbm9kZSAqLCBzdHJ1Y3QgZGVudHJ5ICosIGludCk7DQogc3RhdGljIGlu
dCBzbWJfcm1kaXIoc3RydWN0IGlub2RlICosIHN0cnVjdCBkZW50cnkgKik7
DQpAQCAtMTkzLDcgKzE5Myw3IEBADQogICovDQogc3RhdGljIGludCBzbWJf
bG9va3VwX3ZhbGlkYXRlKHN0cnVjdCBkZW50cnkgKiwgaW50KTsNCiBzdGF0
aWMgaW50IHNtYl9oYXNoX2RlbnRyeShzdHJ1Y3QgZGVudHJ5ICosIHN0cnVj
dCBxc3RyICopOw0KLXN0YXRpYyBpbnQgc21iX2NvbXBhcmVfZGVudHJ5KHN0
cnVjdCBkZW50cnkgKiwgc3RydWN0IHFzdHIgKiwgc3RydWN0IHFzdHIgKik7
DQorc3RhdGljIGludCBzbWJfY29tcGFyZV9kZW50cnkoc3RydWN0IGRlbnRy
eSAqLHN0cnVjdCBxc3RyICosc3RydWN0IHFzdHIgKixpbnQpOw0KIHN0YXRp
YyB2b2lkIHNtYl9kZWxldGVfZGVudHJ5KHN0cnVjdCBkZW50cnkgKik7DQog
DQogc3RhdGljIHN0cnVjdCBkZW50cnlfb3BlcmF0aW9ucyBzbWJmc19kZW50
cnlfb3BlcmF0aW9ucyA9DQpAQCAtMjY3LDcgKzI2Nyw3IEBADQogfQ0KIA0K
IHN0YXRpYyBpbnQNCi1zbWJfY29tcGFyZV9kZW50cnkoc3RydWN0IGRlbnRy
eSAqZGlyLCBzdHJ1Y3QgcXN0ciAqYSwgc3RydWN0IHFzdHIgKmIpDQorc21i
X2NvbXBhcmVfZGVudHJ5KHN0cnVjdCBkZW50cnkgKmRpciwgc3RydWN0IHFz
dHIgKmEsIHN0cnVjdCBxc3RyICpiLGludCBmbGFncykNCiB7DQogCWludCBp
LCByZXN1bHQgPSAxOw0KIA0KQEAgLTMyNSw3ICszMjUsNyBAQA0KIH0NCiAN
CiBzdGF0aWMgc3RydWN0IGRlbnRyeSAqDQotc21iX2xvb2t1cChzdHJ1Y3Qg
aW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5KQ0KK3NtYl9sb29r
dXAoc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSwg
aW50IGZsYWdzKQ0KIHsNCiAJc3RydWN0IHNtYl9mYXR0ciBmaW5mbzsNCiAJ
c3RydWN0IGlub2RlICppbm9kZTsNCmRpZmYgLXVyTiBsaW51eC1iaXJkLkZB
VC9mcy9zeXN2L25hbWVpLmMgbGludXgtYmlyZC5CTEVUQ0gvZnMvc3lzdi9u
YW1laS5jDQotLS0gbGludXgtYmlyZC5GQVQvZnMvc3lzdi9uYW1laS5jCVRo
dSBNYXkgMTMgMDc6MDM6MDUgMTk5OQ0KKysrIGxpbnV4LWJpcmQuQkxFVENI
L2ZzL3N5c3YvbmFtZWkuYwlUdWUgTWF5IDI1IDA5OjM5OjM1IDE5OTkNCkBA
IC0xMDEsNyArMTAxLDcgQEANCiAJcmV0dXJuIE5VTEw7DQogfQ0KIA0KLXN0
cnVjdCBkZW50cnkgKnN5c3ZfbG9va3VwKHN0cnVjdCBpbm9kZSAqIGRpciwg
c3RydWN0IGRlbnRyeSAqIGRlbnRyeSkNCitzdHJ1Y3QgZGVudHJ5ICpzeXN2
X2xvb2t1cChzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVu
dHJ5LCBpbnQgZmxhZ3MpDQogew0KIAlzdHJ1Y3QgaW5vZGUgKiBpbm9kZSA9
IE5VTEw7DQogCXN0cnVjdCBzeXN2X2Rpcl9lbnRyeSAqIGRlOw0KZGlmZiAt
dXJOIGxpbnV4LWJpcmQuRkFUL2ZzL3Vmcy9uYW1laS5jIGxpbnV4LWJpcmQu
QkxFVENIL2ZzL3Vmcy9uYW1laS5jDQotLS0gbGludXgtYmlyZC5GQVQvZnMv
dWZzL25hbWVpLmMJVGh1IE1heSAxMyAwNzowMzowNSAxOTk5DQorKysgbGlu
dXgtYmlyZC5CTEVUQ0gvZnMvdWZzL25hbWVpLmMJVHVlIE1heSAyNSAwOTo0
NTo1NSAxOTk5DQpAQCAtMTgzLDcgKzE4Myw3IEBADQogCXJldHVybiBOVUxM
Ow0KIH0NCiANCi1zdHJ1Y3QgZGVudHJ5ICp1ZnNfbG9va3VwKHN0cnVjdCBp
bm9kZSAqIGRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5KQ0KK3N0cnVjdCBk
ZW50cnkgKnVmc19sb29rdXAoc3RydWN0IGlub2RlICogZGlyLCBzdHJ1Y3Qg
ZGVudHJ5ICpkZW50cnksIGludCBmbGFncykNCiB7DQogCXN0cnVjdCBzdXBl
cl9ibG9jayAqIHNiOw0KIAlzdHJ1Y3QgaW5vZGUgKiBpbm9kZTsNCmRpZmYg
LXVyTiBsaW51eC1iaXJkLkZBVC9mcy91bXNkb3MvZGlyLmMgbGludXgtYmly
ZC5CTEVUQ0gvZnMvdW1zZG9zL2Rpci5jDQotLS0gbGludXgtYmlyZC5GQVQv
ZnMvdW1zZG9zL2Rpci5jCVR1ZSBNYXkgMjUgMjI6NDc6NDQgMTk5OQ0KKysr
IGxpbnV4LWJpcmQuQkxFVENIL2ZzL3Vtc2Rvcy9kaXIuYwlUdWUgTWF5IDI1
IDA5OjE2OjIzIDE5OTkNCkBAIC01ODAsNyArNTgwLDcgQEANCiAgKiBDYWxs
ZWQgYnkgVkZTOyBzaG91bGQgZmlsbCBkZW50cnktPmRfaW5vZGUgdmlhIGRf
YWRkLg0KICAqLw0KIA0KLXN0cnVjdCBkZW50cnkgKlVNU0RPU19sb29rdXAg
KHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpDQor
c3RydWN0IGRlbnRyeSAqVU1TRE9TX2xvb2t1cCAoc3RydWN0IGlub2RlICpk
aXIsc3RydWN0IGRlbnRyeSAqZGVudHJ5LGludCBmbGFncykNCiB7DQogCXN0
cnVjdCBkZW50cnkgKnJldDsNCiANCkBAIC02MDksNyArNjA5LDcgQEANCiAJ
ZGVudHJ5ID0gZF9hbGxvYyhwYXJlbnQsICZxc3RyKTsNCiAJaWYgKGRlbnRy
eSkgew0KIAkJLyogWFhYWFhYWFhYWFhYWFhYWFhYWCBSYWNlIGFsZXJ0ISAq
Lw0KLQkJcmVzdWx0ID0gVU1TRE9TX3Jsb29rdXAocGFyZW50LT5kX2lub2Rl
LCBkZW50cnkpOw0KKwkJcmVzdWx0ID0gVU1TRE9TX3Jsb29rdXAocGFyZW50
LT5kX2lub2RlLCBkZW50cnksIDApOw0KIAkJZF9kcm9wKGRlbnRyeSk7DQog
CQlpZiAocmVzdWx0KQ0KIAkJCWdvdG8gb3V0X2ZhaWw7DQpAQCAtNjM4LDE0
ICs2MzgsMTQgQEANCiAJcXN0ci5uYW1lID0gbmFtZTsNCiAJcXN0ci5sZW4g
ID0gbGVuOw0KIAlxc3RyLmhhc2ggPSBmdWxsX25hbWVfaGFzaChuYW1lLCBs
ZW4pOw0KLQlyZXN1bHQgPSBkX2xvb2t1cChwYXJlbnQsICZxc3RyKTsNCisJ
cmVzdWx0ID0gZF9sb29rdXAocGFyZW50LCAmcXN0ciwgMCk7DQogCWlmICgh
cmVzdWx0KSB7DQogCQlyZXN1bHQgPSBFUlJfUFRSKC1FTk9NRU0pOw0KIAkJ
ZGVudHJ5ID0gZF9hbGxvYyhwYXJlbnQsICZxc3RyKTsNCiAJCWlmIChkZW50
cnkpIHsNCiAJCQlyZXN1bHQgPSByZWFsID8NCi0JCQkJVU1TRE9TX3Jsb29r
dXAocGFyZW50LT5kX2lub2RlLCBkZW50cnkpIDoNCi0JCQkJVU1TRE9TX2xv
b2t1cChwYXJlbnQtPmRfaW5vZGUsIGRlbnRyeSk7DQorCQkJCVVNU0RPU19y
bG9va3VwKHBhcmVudC0+ZF9pbm9kZSwgZGVudHJ5LCAwKSA6DQorCQkJCVVN
U0RPU19sb29rdXAocGFyZW50LT5kX2lub2RlLCBkZW50cnksIDApOw0KIAkJ
CWlmIChyZXN1bHQpDQogCQkJCWdvdG8gb3V0X2ZhaWw7DQogCQkJcmV0dXJu
IGRlbnRyeTsNCmRpZmYgLXVyTiBsaW51eC1iaXJkLkZBVC9mcy91bXNkb3Mv
cmRpci5jIGxpbnV4LWJpcmQuQkxFVENIL2ZzL3Vtc2Rvcy9yZGlyLmMNCi0t
LSBsaW51eC1iaXJkLkZBVC9mcy91bXNkb3MvcmRpci5jCVRodSBNYXkgMTMg
MDc6MDM6MDYgMTk5OQ0KKysrIGxpbnV4LWJpcmQuQkxFVENIL2ZzL3Vtc2Rv
cy9yZGlyLmMJVHVlIE1heSAyNSAwODo1ODo1NyAxOTk5DQpAQCAtOTUsNyAr
OTUsNyBAQA0KIAkJZ290byBvdXQ7DQogCX0NCiANCi0JcmV0ID0gbXNkb3Nf
bG9va3VwIChkaXIsIGRlbnRyeSk7DQorCXJldCA9IG1zZG9zX2xvb2t1cCAo
ZGlyLCBkZW50cnksIDApOw0KIAlpZiAocmV0KSB7DQogCQlwcmludGsoS0VS
Tl9XQVJOSU5HDQogCQkJInVtc2Rvc19ybG9va3VwX3g6ICVzLyVzIGZhaWxl
ZCwgcmV0PSVsZFxuIiwNCkBAIC0xMjAsNyArMTIwLDcgQEANCiB9DQogDQog
DQotc3RydWN0IGRlbnRyeSAqVU1TRE9TX3Jsb29rdXAgKCBzdHJ1Y3QgaW5v
ZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5KQ0KK3N0cnVjdCBkZW50
cnkgKlVNU0RPU19ybG9va3VwKHN0cnVjdCBpbm9kZSAqZGlyLHN0cnVjdCBk
ZW50cnkgKmRlbnRyeSxpbnQgZmxhZ3MpDQogew0KIAlyZXR1cm4gdW1zZG9z
X3Jsb29rdXBfeCAoZGlyLCBkZW50cnksIDApOw0KIH0NCmRpZmYgLXVyTiBs
aW51eC1iaXJkLkZBVC9mcy92ZmF0L25hbWVpLmMgbGludXgtYmlyZC5CTEVU
Q0gvZnMvdmZhdC9uYW1laS5jDQotLS0gbGludXgtYmlyZC5GQVQvZnMvdmZh
dC9uYW1laS5jCVR1ZSBNYXkgMjUgMjI6NDc6NDQgMTk5OQ0KKysrIGxpbnV4
LWJpcmQuQkxFVENIL2ZzL3ZmYXQvbmFtZWkuYwlUdWUgTWF5IDI1IDIyOjM2
OjIwIDE5OTkNCkBAIC01MSw4ICs1MSw4IEBADQogDQogc3RhdGljIGludCB2
ZmF0X2hhc2hpKHN0cnVjdCBkZW50cnkgKnBhcmVudCwgc3RydWN0IHFzdHIg
KnFzdHIpOw0KIHN0YXRpYyBpbnQgdmZhdF9oYXNoKHN0cnVjdCBkZW50cnkg
KnBhcmVudCwgc3RydWN0IHFzdHIgKnFzdHIpOw0KLXN0YXRpYyBpbnQgdmZh
dF9jbXBpKHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgc3RydWN0IHFzdHIgKmEs
IHN0cnVjdCBxc3RyICpiKTsNCi1zdGF0aWMgaW50IHZmYXRfY21wKHN0cnVj
dCBkZW50cnkgKmRlbnRyeSwgc3RydWN0IHFzdHIgKmEsIHN0cnVjdCBxc3Ry
ICpiKTsNCitzdGF0aWMgaW50IHZmYXRfY21waShzdHJ1Y3QgZGVudHJ5Kiwg
c3RydWN0IHFzdHIqLCBzdHJ1Y3QgcXN0ciosaW50KTsNCitzdGF0aWMgaW50
IHZmYXRfY21wKHN0cnVjdCBkZW50cnkqLCBzdHJ1Y3QgcXN0ciosIHN0cnVj
dCBxc3RyKixpbnQpOw0KIHN0YXRpYyBpbnQgdmZhdF9yZXZhbGlkYXRlKHN0
cnVjdCBkZW50cnkgKmRlbnRyeSwgaW50KTsNCiANCiBzdGF0aWMgc3RydWN0
IGRlbnRyeV9vcGVyYXRpb25zIHZmYXRfZGVudHJ5X29wc1s0XSA9IHsNCkBA
IC0yMTMsNyArMjEzLDggQEANCiAvKg0KICAqIENhc2UgaW5zZW5zaXRpdmUg
Y29tcGFyZSBvZiB0d28gdmZhdCBuYW1lcy4NCiAgKi8NCi1zdGF0aWMgaW50
IHZmYXRfY21waShzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIHN0cnVjdCBxc3Ry
ICphLCBzdHJ1Y3QgcXN0ciAqYikNCitzdGF0aWMgaW50IHZmYXRfY21waShz
dHJ1Y3QgZGVudHJ5ICpkZW50cnksIHN0cnVjdCBxc3RyICphLCBzdHJ1Y3Qg
cXN0ciAqYiwNCisJCQlpbnQgZmxhZ3MpDQogew0KIAlpbnQgYWxlbiwgYmxl
bjsNCiANCkBAIC0yMjUsNyArMjI2LDEwIEBADQogCXdoaWxlIChibGVuICYm
IGItPm5hbWVbYmxlbi0xXSA9PSAnLicpDQogCQlibGVuLS07DQogCWlmIChh
bGVuID09IGJsZW4pIHsNCi0JCWlmIChzdHJuaWNtcChhLT5uYW1lLCBiLT5u
YW1lLCBhbGVuKSA9PSAwKQ0KKwkJaWYgKGZsYWdzICYgTE9PS1VQX1RBUkdF
VCkgew0KKwkJCWlmIChzdHJuY21wKGEtPm5hbWUsIGItPm5hbWUsIGFsZW4p
ID09IDApDQorCQkJCXJldHVybiAwOw0KKwkJfSBlbHNlIAlpZiAoc3Rybmlj
bXAoYS0+bmFtZSwgYi0+bmFtZSwgYWxlbikgPT0gMCkNCiAJCQlyZXR1cm4g
MDsNCiAJfQ0KIAlyZXR1cm4gMTsNCkBAIC0yMzQsNyArMjM4LDggQEANCiAv
Kg0KICAqIENhc2Ugc2Vuc2l0aXZlIGNvbXBhcmUgb2YgdHdvIHZmYXQgbmFt
ZXMuDQogICovDQotc3RhdGljIGludCB2ZmF0X2NtcChzdHJ1Y3QgZGVudHJ5
ICpkZW50cnksIHN0cnVjdCBxc3RyICphLCBzdHJ1Y3QgcXN0ciAqYikNCitz
dGF0aWMgaW50IHZmYXRfY21wKHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgc3Ry
dWN0IHFzdHIgKmEsIHN0cnVjdCBxc3RyICpiLA0KKwkJICAgIGludCBmbGFn
cykNCiB7DQogCWludCBhbGVuLCBibGVuOw0KIA0KQEAgLTkxNCw3ICs5MTks
NyBAQA0KIAlyZXR1cm4gTlVMTDsNCiB9DQogDQotc3RydWN0IGRlbnRyeSAq
dmZhdF9sb29rdXAoc3RydWN0IGlub2RlICpkaXIsc3RydWN0IGRlbnRyeSAq
ZGVudHJ5KQ0KK3N0cnVjdCBkZW50cnkgKnZmYXRfbG9va3VwKHN0cnVjdCBp
bm9kZSAqZGlyLHN0cnVjdCBkZW50cnkgKmRlbnRyeSxpbnQgZmxhZ3MpDQog
ew0KIAlpbnQgcmVzOw0KIAlzdHJ1Y3QgdmZhdF9zbG90X2luZm8gc2luZm87
DQpAQCAtOTQyLDYgKzk0NywxOSBAQA0KIAkJcmV0dXJuIEVSUl9QVFIocmVz
KTsNCiAJYWxpYXMgPSBmaW5kX2FsaWFzKGlub2RlKTsNCiAJaWYgKGFsaWFz
KSB7DQorCQkvKg0KKwkJICogSGVyZSB0aGUgYnJhaW5kYW1hZ2UgcmFpc2Vz
IGl0cyB1Z2x5IGhlYWQuDQorCQkgKiBXaGF0IGEgYmxvb2R5IHBlcnZlcnQg
aW52ZW50ZWQgY2FzZS1pbnNlbnNpdGl2ZSANCisJCSAqIGJ1dCBjYXNlLXBy
ZXNlcnZpbmcgZmlsZXN5c3RlbXM/IE1heSBoZSByZXdyaXRlDQorCQkgKiBW
TVMgaW4gSkNMLiBJbnR1aXRpdmUsIG15IGFzcy4uLiBDT0JPTCBpcyBtb3Jl
DQorCQkgKiBpbnR1aXRpdmUgdGhhbiB0aGlzIG1pc2JlZ290dGVuIGxvc3Nh
Z2UuDQorCQkgKi8NCisJCWlmIChmbGFncyAmIExPT0tVUF9UQVJHRVQpIHsN
CisJCQlkZW50cnktPmRfZmxhZ3MgPSBEQ0FDSEVfVk1TX0xPU1NBR0U7DQor
CQkJZGVudHJ5LT5kX2ZzZGF0YSA9ICh2b2lkKilhbGlhczsNCisJCQlpcHV0
KGlub2RlKTsNCisJCQlyZXR1cm4gTlVMTDsNCisJCX0NCiAJCWlmIChkX2lu
dmFsaWRhdGUoYWxpYXMpPT0wKQ0KIAkJCWRwdXQoYWxpYXMpOw0KIAkJZWxz
ZSB7DQpAQCAtMTE0MywxMCArMTE2MSwxOSBAQA0KIAlzdHJ1Y3QgaW5vZGUg
Km9sZF9pbm9kZSwgKm5ld19pbm9kZTsNCiAJaW50IHJlcywgaXNfZGlyOw0K
IAlzdHJ1Y3QgdmZhdF9zbG90X2luZm8gb2xkX3NpbmZvLHNpbmZvOw0KKwlp
bnQgaW5fc2l0dSA9IDA7DQogDQogCW9sZF9iaCA9IG5ld19iaCA9IGRvdGRv
dF9iaCA9IE5VTEw7DQogCW9sZF9pbm9kZSA9IG9sZF9kZW50cnktPmRfaW5v
ZGU7DQotCW5ld19pbm9kZSA9IG5ld19kZW50cnktPmRfaW5vZGU7DQorDQor
CWlmIChuZXdfZGVudHJ5LT5kX2ZsYWdzICYgRENBQ0hFX1ZNU19MT1NTQUdF
KSB7DQorCQlzdHJ1Y3QgZGVudHJ5ICpzaGFkb3dlZCA9IChzdHJ1Y3QgZGVu
dHJ5KiluZXdfZGVudHJ5LT5kX2ZzZGF0YTsNCisJCWlmIChzaGFkb3dlZCA9
PSBvbGRfZGVudHJ5KQ0KKwkJCWluX3NpdHUgPSAxOw0KKwkJbmV3X2lub2Rl
ID0gc2hhZG93ZWQtPmRfaW5vZGU7DQorCX0gZWxzZQ0KKwkJbmV3X2lub2Rl
ID0gbmV3X2RlbnRyeS0+ZF9pbm9kZTsNCisNCiAJcmVzID0gdmZhdF9maW5k
KG9sZF9kaXIsJm9sZF9kZW50cnktPmRfbmFtZSwmb2xkX3NpbmZvLCZvbGRf
YmgsJm9sZF9kZSk7DQogCVBSSU5USzMoKCJ2ZmF0X3JlbmFtZSAyXG4iKSk7
DQogCWlmIChyZXMgPCAwKSBnb3RvIHJlbmFtZV9kb25lOw0KQEAgLTExNTcs
NyArMTE4NCw3IEBADQogCQkJCSZkb3Rkb3RfZGUsJmRvdGRvdF9pbm8pKSA8
IDApDQogCQlnb3RvIHJlbmFtZV9kb25lOw0KIA0KLQlpZiAobmV3X2RlbnRy
eS0+ZF9pbm9kZSkgew0KKwlpZiAobmV3X2lub2RlKSB7DQogCQlyZXMgPSB2
ZmF0X2ZpbmQobmV3X2RpciwmbmV3X2RlbnRyeS0+ZF9uYW1lLCZzaW5mbywm
bmV3X2JoLA0KIAkJCQkmbmV3X2RlKTsNCiAJCWlmIChyZXMgPCAwIHx8IE1T
RE9TX0kobmV3X2lub2RlKS0+aV9sb2NhdGlvbiAhPSBzaW5mby5pbm8pIHsN
CkBAIC0xMTY2LDMxICsxMTkzLDQ0IEBADQogCQkJZ290byByZW5hbWVfZG9u
ZTsNCiAJCX0NCiANCi0JCWlmIChpc19kaXIpIHsNCisJCWlmIChpc19kaXIg
JiYgIWluX3NpdHUpIHsNCiAJCQlyZXMgPSBmYXRfZGlyX2VtcHR5KG5ld19p
bm9kZSk7DQogCQkJaWYgKHJlcykNCiAJCQkJZ290byByZW5hbWVfZG9uZTsN
CiAJCX0NCiAJCWZhdF9kZXRhY2gobmV3X2lub2RlKTsNCisJCXZmYXRfcmVt
b3ZlX2VudHJ5KG5ld19kaXIsJnNpbmZvLG5ld19iaCxuZXdfZGUpOw0KKwkJ
cmVzID0gdmZhdF9hZGRfZW50cnkobmV3X2RpciwmbmV3X2RlbnRyeS0+ZF9u
YW1lLGlzX2RpciwNCisJCQkJCSZzaW5mbywmbmV3X2JoLCZuZXdfZGUpOw0K
KwkJaWYgKHJlcyA8IDApIHsNCisJCQkvKg0KKwkJCSAqIFdlIGFyZSAqZGVl
cCogaW4gaXQuIFRoYW5rIHlvdSwgdXNlci1mcmllbmRsaW5lc3MNCisJCQkg
KiB0aGVvcmlzdHMuDQorCQkJICovDQorCQkJbmV3X2lub2RlLT5pX25saW5r
LS07DQorCQkJZ290byByZW5hbWVfZG9uZTsNCisJCX0NCiAJfSBlbHNlIHsN
Ci0JCXJlcyA9IHZmYXRfYWRkX2VudHJ5KG5ld19kaXIsJm5ld19kZW50cnkt
PmRfbmFtZSxpc19kaXIsJnNpbmZvLA0KLQkJCQkJJm5ld19iaCwmbmV3X2Rl
KTsNCisJCXJlcyA9IHZmYXRfYWRkX2VudHJ5KG5ld19kaXIsJm5ld19kZW50
cnktPmRfbmFtZSxpc19kaXIsDQorCQkJCQkmc2luZm8sJm5ld19iaCwmbmV3
X2RlKTsNCiAJCWlmIChyZXMgPCAwKSBnb3RvIHJlbmFtZV9kb25lOw0KIAl9
DQogDQogCW5ld19kaXItPmlfdmVyc2lvbiA9ICsrZXZlbnQ7DQogDQotCS8q
IHJlbGVhc2VzIG9sZF9iaCAqLw0KLQl2ZmF0X3JlbW92ZV9lbnRyeShvbGRf
ZGlyLCZvbGRfc2luZm8sb2xkX2JoLG9sZF9kZSk7DQotCW9sZF9iaD1OVUxM
Ow0KLQlmYXRfZGV0YWNoKG9sZF9pbm9kZSk7DQorCWlmICghaW5fc2l0dSkg
ew0KKwkJLyogcmVsZWFzZXMgb2xkX2JoICovDQorCQl2ZmF0X3JlbW92ZV9l
bnRyeShvbGRfZGlyLCZvbGRfc2luZm8sb2xkX2JoLG9sZF9kZSk7DQorCQlv
bGRfYmg9TlVMTDsNCisJCWZhdF9kZXRhY2gob2xkX2lub2RlKTsNCisJfQ0K
IAlmYXRfYXR0YWNoKG9sZF9pbm9kZSwgc2luZm8uaW5vKTsNCiAJbWFya19p
bm9kZV9kaXJ0eShvbGRfaW5vZGUpOw0KIA0KIAlvbGRfZGlyLT5pX3ZlcnNp
b24gPSArK2V2ZW50Ow0KIAlvbGRfZGlyLT5pX2N0aW1lID0gb2xkX2Rpci0+
aV9tdGltZSA9IENVUlJFTlRfVElNRTsNCiAJbWFya19pbm9kZV9kaXJ0eShv
bGRfZGlyKTsNCi0JaWYgKG5ld19pbm9kZSkgew0KKwlpZiAobmV3X2lub2Rl
ICYmICFpbl9zaXR1KSB7DQogCQluZXdfaW5vZGUtPmlfbmxpbmstLTsNCiAJ
CW5ld19pbm9kZS0+aV9jdGltZT1DVVJSRU5UX1RJTUU7DQogCX0NCkBAIC0x
MjAyLDcgKzEyNDIsNyBAQA0KIAkJZmF0X21hcmtfYnVmZmVyX2RpcnR5KHNi
LCBkb3Rkb3RfYmgsIDEpOw0KIAkJb2xkX2Rpci0+aV9ubGluay0tOw0KIAkJ
aWYgKG5ld19pbm9kZSkgew0KLQkJCW5ld19pbm9kZS0+aV9ubGluay0tOw0K
KwkJCWlmICghaW5fc2l0dSkgbmV3X2lub2RlLT5pX25saW5rLS07DQogCQl9
IGVsc2Ugew0KIAkJCW5ld19kaXItPmlfbmxpbmsrKzsNCiAJCQltYXJrX2lu
b2RlX2RpcnR5KG5ld19kaXIpOw0KZGlmZiAtdXJOIGxpbnV4LWJpcmQuRkFU
L2luY2x1ZGUvbGludXgvYWRmc19mcy5oIGxpbnV4LWJpcmQuQkxFVENIL2lu
Y2x1ZGUvbGludXgvYWRmc19mcy5oDQotLS0gbGludXgtYmlyZC5GQVQvaW5j
bHVkZS9saW51eC9hZGZzX2ZzLmgJVGh1IE1heSAxMyAwNzowMzoyMSAxOTk5
DQorKysgbGludXgtYmlyZC5CTEVUQ0gvaW5jbHVkZS9saW51eC9hZGZzX2Zz
LmgJVHVlIE1heSAyNSAwOTozODo0NCAxOTk5DQpAQCAtMTU1LDcgKzE1NSw3
IEBADQogZXh0ZXJuIGludCBhZGZzX21hcF9sb29rdXAgKHN0cnVjdCBzdXBl
cl9ibG9jayAqc2IsIGludCBmcmFnX2lkLCBpbnQgb2Zmc2V0KTsNCiANCiAv
KiBuYW1laS5jICovDQotZXh0ZXJuIHN0cnVjdCBkZW50cnkgKmFkZnNfbG9v
a3VwIChzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5
KTsNCitleHRlcm4gc3RydWN0IGRlbnRyeSAqYWRmc19sb29rdXAgKHN0cnVj
dCBpbm9kZSAqZGlyLHN0cnVjdCBkZW50cnkgKmRlbnRyeSxpbnQpOw0KIA0K
IC8qIHN1cGVyLmMgKi8NCiBleHRlcm4gaW50IGluaXRfYWRmc19mcyAodm9p
ZCk7DQpkaWZmIC11ck4gbGludXgtYmlyZC5GQVQvaW5jbHVkZS9saW51eC9h
ZmZzX2ZzLmggbGludXgtYmlyZC5CTEVUQ0gvaW5jbHVkZS9saW51eC9hZmZz
X2ZzLmgNCi0tLSBsaW51eC1iaXJkLkZBVC9pbmNsdWRlL2xpbnV4L2FmZnNf
ZnMuaAlUaHUgTWF5IDEzIDA3OjAzOjIxIDE5OTkNCisrKyBsaW51eC1iaXJk
LkJMRVRDSC9pbmNsdWRlL2xpbnV4L2FmZnNfZnMuaAlUdWUgTWF5IDI1IDA4
OjMyOjM0IDE5OTkNCkBAIC02MCw3ICs2MCw3IEBADQogLyogbmFtZWkuYyAq
Lw0KIA0KIGV4dGVybiBpbnQJYWZmc19oYXNoX25hbWUoY29uc3QgdW5zaWdu
ZWQgY2hhciAqbmFtZSwgaW50IGxlbiwgaW50IGludGwsIGludCBoYXNoc2l6
ZSk7DQotZXh0ZXJuIHN0cnVjdCBkZW50cnkgKmFmZnNfbG9va3VwKHN0cnVj
dCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpOw0KK2V4dGVy
biBzdHJ1Y3QgZGVudHJ5ICphZmZzX2xvb2t1cChzdHJ1Y3QgaW5vZGUgKmRp
ciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5LGludCk7DQogZXh0ZXJuIGludAlh
ZmZzX3VubGluayhzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAq
ZGVudHJ5KTsNCiBleHRlcm4gaW50CWFmZnNfY3JlYXRlKHN0cnVjdCBpbm9k
ZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIGludCBtb2RlKTsNCiBl
eHRlcm4gaW50CWFmZnNfbWtkaXIoc3RydWN0IGlub2RlICpkaXIsIHN0cnVj
dCBkZW50cnkgKmRlbnRyeSwgaW50IG1vZGUpOw0KZGlmZiAtdXJOIGxpbnV4
LWJpcmQuRkFUL2luY2x1ZGUvbGludXgvZGNhY2hlLmggbGludXgtYmlyZC5C
TEVUQ0gvaW5jbHVkZS9saW51eC9kY2FjaGUuaA0KLS0tIGxpbnV4LWJpcmQu
RkFUL2luY2x1ZGUvbGludXgvZGNhY2hlLmgJVGh1IE1heSAxMyAwNzowMzoy
MSAxOTk5DQorKysgbGludXgtYmlyZC5CTEVUQ0gvaW5jbHVkZS9saW51eC9k
Y2FjaGUuaAlUdWUgTWF5IDI1IDA2OjM2OjQ4IDE5OTkNCkBAIC03OSw3ICs3
OSw3IEBADQogc3RydWN0IGRlbnRyeV9vcGVyYXRpb25zIHsNCiAJaW50ICgq
ZF9yZXZhbGlkYXRlKShzdHJ1Y3QgZGVudHJ5ICosIGludCk7DQogCWludCAo
KmRfaGFzaCkgKHN0cnVjdCBkZW50cnkgKiwgc3RydWN0IHFzdHIgKik7DQot
CWludCAoKmRfY29tcGFyZSkgKHN0cnVjdCBkZW50cnkgKiwgc3RydWN0IHFz
dHIgKiwgc3RydWN0IHFzdHIgKik7DQorCWludCAoKmRfY29tcGFyZSkgKHN0
cnVjdCBkZW50cnkgKiwgc3RydWN0IHFzdHIgKiwgc3RydWN0IHFzdHIgKixp
bnQpOw0KIAl2b2lkICgqZF9kZWxldGUpKHN0cnVjdCBkZW50cnkgKik7DQog
CXZvaWQgKCpkX3JlbGVhc2UpKHN0cnVjdCBkZW50cnkgKik7DQogCXZvaWQg
KCpkX2lwdXQpKHN0cnVjdCBkZW50cnkgKiwgc3RydWN0IGlub2RlICopOw0K
QEAgLTEwMCw2ICsxMDAsMTQgQEANCiAJCQkJCSAqIHJlbmFtZWQiIGFuZCBo
YXMgdG8gYmUNCiAJCQkJCSAqIGRlbGV0ZWQgb24gdGhlIGxhc3QgZHB1dCgp
DQogCQkJCQkgKi8NCisjZGVmaW5lIERDQUNIRV9WTVNfTE9TU0FHRSAgICAw
eDAwMDQgICAgLyogQ2FzZS1wcmVzZXJ2aW5nIGFuZCBjYXNlLWluc2Vuc2l0
aXZlDQorCQkJCQkgKiBpcyBhIGJyYWluLWNoaWxkIG9mIFZvZ29ucy4NCisJ
CQkJCSAqIFJlbmFtZSBoYW5kbGluZyBiZWNvbWVzIGVzcGVjaWFsbHkNCisJ
CQkJCSAqIGludGVyZXN0aW5nLiBUaGlzIGRlbnRyeSBpcyByZW5hbWUNCisJ
CQkJCSAqIHRhcmdldCB0aGF0IHdhbnRzIHRvIGNoYW5nZQ0KKwkJCQkJICog
Y2FwaXRhbGl6YXRpb24gb24gYSBzdWNreQ0KKwkJCQkJICogZmlsZXN5c3Rl
bS4NCisJCQkJCSAqLw0KIA0KIC8qDQogICogZF9kcm9wKCkgdW5oYXNoZXMg
dGhlIGVudHJ5IGZyb20gdGhlIHBhcmVudA0KQEAgLTE3MCw3ICsxNzgsNyBA
QA0KIGV4dGVybiB2b2lkIGRfbW92ZShzdHJ1Y3QgZGVudHJ5ICogZW50cnks
IHN0cnVjdCBkZW50cnkgKiBuZXdkZW50cnkpOw0KIA0KIC8qIGFwcGVuZGl4
IG1heSBlaXRoZXIgYmUgTlVMTCBvciBiZSB1c2VkIGZvciB0cmFuc25hbWUg
c3VmZml4ZXMgKi8NCi1leHRlcm4gc3RydWN0IGRlbnRyeSAqIGRfbG9va3Vw
KHN0cnVjdCBkZW50cnkgKiBkaXIsIHN0cnVjdCBxc3RyICogbmFtZSk7DQor
ZXh0ZXJuIHN0cnVjdCBkZW50cnkgKiBkX2xvb2t1cChzdHJ1Y3QgZGVudHJ5
ICpkaXIsc3RydWN0IHFzdHIgKm5hbWUsaW50IGZsYWdzKTsNCiANCiAvKiB2
YWxpZGF0ZSAiaW5zZWN1cmUiIGRlbnRyeSBwb2ludGVyICovDQogZXh0ZXJu
IGludCBkX3ZhbGlkYXRlKHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgc3RydWN0
IGRlbnRyeSAqZHBhcmVudCwNCmRpZmYgLXVyTiBsaW51eC1iaXJkLkZBVC9p
bmNsdWRlL2xpbnV4L2V4dDJfZnMuaCBsaW51eC1iaXJkLkJMRVRDSC9pbmNs
dWRlL2xpbnV4L2V4dDJfZnMuaA0KLS0tIGxpbnV4LWJpcmQuRkFUL2luY2x1
ZGUvbGludXgvZXh0Ml9mcy5oCVRodSBNYXkgMTMgMDc6MDM6MjIgMTk5OQ0K
KysrIGxpbnV4LWJpcmQuQkxFVENIL2luY2x1ZGUvbGludXgvZXh0Ml9mcy5o
CVR1ZSBNYXkgMjUgMDc6NTg6MjcgMTk5OQ0KQEAgLTU3Miw3ICs1NzIsNyBA
QA0KIA0KIC8qIG5hbWVpLmMgKi8NCiBleHRlcm4gdm9pZCBleHQyX3JlbGVh
c2UgKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZmlsZSAqKTsNCi1leHRlcm4g
c3RydWN0IGRlbnRyeSAqZXh0Ml9sb29rdXAgKHN0cnVjdCBpbm9kZSAqLCBz
dHJ1Y3QgZGVudHJ5ICopOw0KK2V4dGVybiBzdHJ1Y3QgZGVudHJ5ICpleHQy
X2xvb2t1cCAoc3RydWN0IGlub2RlICosIHN0cnVjdCBkZW50cnkgKixpbnQp
Ow0KIGV4dGVybiBpbnQgZXh0Ml9jcmVhdGUgKHN0cnVjdCBpbm9kZSAqLHN0
cnVjdCBkZW50cnkgKixpbnQpOw0KIGV4dGVybiBpbnQgZXh0Ml9ta2RpciAo
c3RydWN0IGlub2RlICosc3RydWN0IGRlbnRyeSAqLGludCk7DQogZXh0ZXJu
IGludCBleHQyX3JtZGlyIChzdHJ1Y3QgaW5vZGUgKixzdHJ1Y3QgZGVudHJ5
ICopOw0KZGlmZiAtdXJOIGxpbnV4LWJpcmQuRkFUL2luY2x1ZGUvbGludXgv
ZnMuaCBsaW51eC1iaXJkLkJMRVRDSC9pbmNsdWRlL2xpbnV4L2ZzLmgNCi0t
LSBsaW51eC1iaXJkLkZBVC9pbmNsdWRlL2xpbnV4L2ZzLmgJVHVlIE1heSAy
NSAyMjo0Nzo0NCAxOTk5DQorKysgbGludXgtYmlyZC5CTEVUQ0gvaW5jbHVk
ZS9saW51eC9mcy5oCVR1ZSBNYXkgMjUgMTQ6NTM6MzUgMTk5OQ0KQEAgLTU5
Nyw3ICs1OTcsNyBAQA0KIHN0cnVjdCBpbm9kZV9vcGVyYXRpb25zIHsNCiAJ
c3RydWN0IGZpbGVfb3BlcmF0aW9ucyAqIGRlZmF1bHRfZmlsZV9vcHM7DQog
CWludCAoKmNyZWF0ZSkgKHN0cnVjdCBpbm9kZSAqLHN0cnVjdCBkZW50cnkg
KixpbnQpOw0KLQlzdHJ1Y3QgZGVudHJ5ICogKCpsb29rdXApIChzdHJ1Y3Qg
aW5vZGUgKixzdHJ1Y3QgZGVudHJ5ICopOw0KKwlzdHJ1Y3QgZGVudHJ5ICog
KCpsb29rdXApIChzdHJ1Y3QgaW5vZGUgKixzdHJ1Y3QgZGVudHJ5ICosaW50
KTsNCiAJaW50ICgqbGluaykgKHN0cnVjdCBkZW50cnkgKixzdHJ1Y3QgaW5v
ZGUgKixzdHJ1Y3QgZGVudHJ5ICopOw0KIAlpbnQgKCp1bmxpbmspIChzdHJ1
Y3QgaW5vZGUgKixzdHJ1Y3QgZGVudHJ5ICopOw0KIAlpbnQgKCpzeW1saW5r
KSAoc3RydWN0IGlub2RlICosc3RydWN0IGRlbnRyeSAqLGNvbnN0IGNoYXIg
Kik7DQpAQCAtODIxLDYgKzgyMSw3IEBADQogI2RlZmluZSBMT09LVVBfRElS
RUNUT1JZCSgyKQ0KICNkZWZpbmUgTE9PS1VQX1NMQVNIT0sJCSg0KQ0KICNk
ZWZpbmUgTE9PS1VQX0NPTlRJTlVFCQkoOCkNCisjZGVmaW5lIExPT0tVUF9U
QVJHRVQJCSgxNikNCiANCiBleHRlcm4gc3RydWN0IGRlbnRyeSAqIGxvb2t1
cF9kZW50cnkoY29uc3QgY2hhciAqLCBzdHJ1Y3QgZGVudHJ5ICosIHVuc2ln
bmVkIGludCk7DQogZXh0ZXJuIHN0cnVjdCBkZW50cnkgKiBfX25hbWVpKGNv
bnN0IGNoYXIgKiwgdW5zaWduZWQgaW50KTsNCmRpZmYgLXVyTiBsaW51eC1i
aXJkLkZBVC9pbmNsdWRlL2xpbnV4L2lzb19mcy5oIGxpbnV4LWJpcmQuQkxF
VENIL2luY2x1ZGUvbGludXgvaXNvX2ZzLmgNCi0tLSBsaW51eC1iaXJkLkZB
VC9pbmNsdWRlL2xpbnV4L2lzb19mcy5oCVRodSBNYXkgMTMgMDc6MDM6MjMg
MTk5OQ0KKysrIGxpbnV4LWJpcmQuQkxFVENIL2luY2x1ZGUvbGludXgvaXNv
X2ZzLmgJVHVlIE1heSAyNSAwNzoyMDo0NiAxOTk5DQpAQCAtMTg5LDcgKzE4
OSw3IEBADQogDQogZXh0ZXJuIGludCBpc29mc19vcGVuKHN0cnVjdCBpbm9k
ZSAqIGlub2RlLCBzdHJ1Y3QgZmlsZSAqIGZpbHApOw0KIGV4dGVybiB2b2lk
IGlzb2ZzX3JlbGVhc2Uoc3RydWN0IGlub2RlICogaW5vZGUsIHN0cnVjdCBm
aWxlICogZmlscCk7DQotZXh0ZXJuIHN0cnVjdCBkZW50cnkgKmlzb2ZzX2xv
b2t1cChzdHJ1Y3QgaW5vZGUgKiBkaXIsIHN0cnVjdCBkZW50cnkgKik7DQor
ZXh0ZXJuIHN0cnVjdCBkZW50cnkgKmlzb2ZzX2xvb2t1cChzdHJ1Y3QgaW5v
ZGUgKiBkaXIsIHN0cnVjdCBkZW50cnkgKiwgaW50KTsNCiBleHRlcm4gdW5z
aWduZWQgbG9uZyBpc29mc19jb3VudF9mcmVlX2lub2RlcyhzdHJ1Y3Qgc3Vw
ZXJfYmxvY2sgKnNiKTsNCiBleHRlcm4gaW50IGlzb2ZzX25ld19ibG9jayhp
bnQgZGV2KTsNCiBleHRlcm4gaW50IGlzb2ZzX2ZyZWVfYmxvY2soaW50IGRl
diwgaW50IGJsb2NrKTsNCmRpZmYgLXVyTiBsaW51eC1iaXJkLkZBVC9pbmNs
dWRlL2xpbnV4L21pbml4X2ZzLmggbGludXgtYmlyZC5CTEVUQ0gvaW5jbHVk
ZS9saW51eC9taW5peF9mcy5oDQotLS0gbGludXgtYmlyZC5GQVQvaW5jbHVk
ZS9saW51eC9taW5peF9mcy5oCVRodSBNYXkgMTMgMDc6MDM6MjMgMTk5OQ0K
KysrIGxpbnV4LWJpcmQuQkxFVENIL2luY2x1ZGUvbGludXgvbWluaXhfZnMu
aAlUdWUgTWF5IDI1IDA4OjIyOjA5IDE5OTkNCkBAIC04OSw3ICs4OSw3IEBA
DQogDQogI2lmZGVmIF9fS0VSTkVMX18NCiANCi1leHRlcm4gc3RydWN0IGRl
bnRyeSAqbWluaXhfbG9va3VwKHN0cnVjdCBpbm9kZSAqIGRpciwgc3RydWN0
IGRlbnRyeSAqZGVudHJ5KTsNCitleHRlcm4gc3RydWN0IGRlbnRyeSAqbWlu
aXhfbG9va3VwKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZGVudHJ5ICosaW50
KTsNCiBleHRlcm4gaW50IG1pbml4X2NyZWF0ZShzdHJ1Y3QgaW5vZGUgKiBk
aXIsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgaW50IG1vZGUpOw0KIGV4dGVy
biBpbnQgbWluaXhfbWtkaXIoc3RydWN0IGlub2RlICogZGlyLCBzdHJ1Y3Qg
ZGVudHJ5ICpkZW50cnksIGludCBtb2RlKTsNCiBleHRlcm4gaW50IG1pbml4
X3JtZGlyKHN0cnVjdCBpbm9kZSAqIGRpciwgc3RydWN0IGRlbnRyeSAqZGVu
dHJ5KTsNCmRpZmYgLXVyTiBsaW51eC1iaXJkLkZBVC9pbmNsdWRlL2xpbnV4
L21zZG9zX2ZzLmggbGludXgtYmlyZC5CTEVUQ0gvaW5jbHVkZS9saW51eC9t
c2Rvc19mcy5oDQotLS0gbGludXgtYmlyZC5GQVQvaW5jbHVkZS9saW51eC9t
c2Rvc19mcy5oCVR1ZSBNYXkgMjUgMjI6NDc6NDQgMTk5OQ0KKysrIGxpbnV4
LWJpcmQuQkxFVENIL2luY2x1ZGUvbGludXgvbXNkb3NfZnMuaAlUdWUgTWF5
IDI1IDE1OjAwOjQ1IDE5OTkNCkBAIC0yODgsNyArMjg4LDcgQEANCiANCiAv
KiBtc2Rvcy5jIC0gdGhlc2UgYXJlIGZvciBVbXNkb3MgKi8NCiBleHRlcm4g
dm9pZCBtc2Rvc19yZWFkX2lub2RlKHN0cnVjdCBpbm9kZSAqaW5vZGUpOw0K
LWV4dGVybiBzdHJ1Y3QgZGVudHJ5ICptc2Rvc19sb29rdXAoc3RydWN0IGlu
b2RlICpkaXIsc3RydWN0IGRlbnRyeSAqKTsNCitleHRlcm4gc3RydWN0IGRl
bnRyeSAqbXNkb3NfbG9va3VwKHN0cnVjdCBpbm9kZSAqZGlyLHN0cnVjdCBk
ZW50cnkgKixpbnQpOw0KIGV4dGVybiBpbnQgbXNkb3NfY3JlYXRlKHN0cnVj
dCBpbm9kZSAqZGlyLHN0cnVjdCBkZW50cnkgKmRlbnRyeSxpbnQgbW9kZSk7
DQogZXh0ZXJuIGludCBtc2Rvc19ybWRpcihzdHJ1Y3QgaW5vZGUgKmRpcixz
dHJ1Y3QgZGVudHJ5ICpkZW50cnkpOw0KIGV4dGVybiBpbnQgbXNkb3NfbWtk
aXIoc3RydWN0IGlub2RlICpkaXIsc3RydWN0IGRlbnRyeSAqZGVudHJ5LGlu
dCBtb2RlKTsNCkBAIC0zMjYsNyArMzI2LDcgQEANCiBleHRlcm4gc3RydWN0
IHN1cGVyX2Jsb2NrICp2ZmF0X3JlYWRfc3VwZXIoc3RydWN0IHN1cGVyX2Js
b2NrICpzYix2b2lkICpkYXRhLA0KIAkJCQkJICAgaW50IHNpbGVudCk7DQog
ZXh0ZXJuIHZvaWQgdmZhdF9yZWFkX2lub2RlKHN0cnVjdCBpbm9kZSAqaW5v
ZGUpOw0KLWV4dGVybiBzdHJ1Y3QgZGVudHJ5ICp2ZmF0X2xvb2t1cChzdHJ1
Y3QgaW5vZGUgKmRpcixzdHJ1Y3QgZGVudHJ5ICopOw0KK2V4dGVybiBzdHJ1
Y3QgZGVudHJ5ICp2ZmF0X2xvb2t1cChzdHJ1Y3QgaW5vZGUgKmRpcixzdHJ1
Y3QgZGVudHJ5ICosaW50KTsNCiANCiAvKiB2ZmF0L3ZmYXRmc19zeW1zLmMg
Ki8NCiBleHRlcm4gc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgdmZhdF9mc190
eXBlOw0KZGlmZiAtdXJOIGxpbnV4LWJpcmQuRkFUL2luY2x1ZGUvbGludXgv
cHJvY19mcy5oIGxpbnV4LWJpcmQuQkxFVENIL2luY2x1ZGUvbGludXgvcHJv
Y19mcy5oDQotLS0gbGludXgtYmlyZC5GQVQvaW5jbHVkZS9saW51eC9wcm9j
X2ZzLmgJVGh1IE1heSAxMyAwNzowMzoyNCAxOTk5DQorKysgbGludXgtYmly
ZC5CTEVUQ0gvaW5jbHVkZS9saW51eC9wcm9jX2ZzLmgJVHVlIE1heSAyNSAx
NDo1Mzo0OSAxOTk5DQpAQCAtMzgyLDcgKzM4Miw3IEBADQogICogb2YgdGhl
IC9wcm9jLzxwaWQ+IHN1YmRpcmVjdG9yaWVzLg0KICAqLw0KIGV4dGVybiBp
bnQgcHJvY19yZWFkZGlyKHN0cnVjdCBmaWxlICosIHZvaWQgKiwgZmlsbGRp
cl90KTsNCi1leHRlcm4gc3RydWN0IGRlbnRyeSAqcHJvY19sb29rdXAoc3Ry
dWN0IGlub2RlICosIHN0cnVjdCBkZW50cnkgKik7DQorZXh0ZXJuIHN0cnVj
dCBkZW50cnkgKnByb2NfbG9va3VwKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3Qg
ZGVudHJ5ICosaW50KTsNCiANCiBzdHJ1Y3Qgb3BlbnByb21mc19kZXYgew0K
ICAJc3RydWN0IG9wZW5wcm9tZnNfZGV2ICpuZXh0Ow0KQEAgLTM5NCw5ICsz
OTQsOSBAQA0KIH07DQogZXh0ZXJuIHN0cnVjdCBpbm9kZV9vcGVyYXRpb25z
ICoNCiBwcm9jX29wZW5wcm9tX3JlZ2lzdGVyKGludCAoKnJlYWRkaXIpKHN0
cnVjdCBmaWxlICosIHZvaWQgKiwgZmlsbGRpcl90KSwNCi0JCSAgICAgICBz
dHJ1Y3QgZGVudHJ5ICogKCpsb29rdXApKHN0cnVjdCBpbm9kZSAqLCBzdHJ1
Y3QgZGVudHJ5ICopLA0KLQkJICAgICAgIHZvaWQgKCp1c2UpKHN0cnVjdCBp
bm9kZSAqLCBpbnQpLA0KLQkJICAgICAgIHN0cnVjdCBvcGVucHJvbWZzX2Rl
diAqKiopOw0KKwkgICAgICAgc3RydWN0IGRlbnRyeSAqICgqbG9va3VwKShz
dHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGRlbnRyeSAqLGludCksDQorCSAgICAg
ICB2b2lkICgqdXNlKShzdHJ1Y3QgaW5vZGUgKiwgaW50KSwNCisJICAgICAg
IHN0cnVjdCBvcGVucHJvbWZzX2RldiAqKiopOw0KIGV4dGVybiB2b2lkIHBy
b2Nfb3BlbnByb21fZGVyZWdpc3Rlcih2b2lkKTsNCiBleHRlcm4gdm9pZCAo
KnByb2Nfb3BlbnByb21fdXNlKShzdHJ1Y3QgaW5vZGUgKixpbnQpOw0KIGV4
dGVybiBpbnQgcHJvY19vcGVucHJvbV9yZWdkZXYoc3RydWN0IG9wZW5wcm9t
ZnNfZGV2ICopOw0KZGlmZiAtdXJOIGxpbnV4LWJpcmQuRkFUL2luY2x1ZGUv
bGludXgvcW54NF9mcy5oIGxpbnV4LWJpcmQuQkxFVENIL2luY2x1ZGUvbGlu
dXgvcW54NF9mcy5oDQotLS0gbGludXgtYmlyZC5GQVQvaW5jbHVkZS9saW51
eC9xbng0X2ZzLmgJVGh1IE1heSAxMyAwNzowMzoyNCAxOTk5DQorKysgbGlu
dXgtYmlyZC5CTEVUQ0gvaW5jbHVkZS9saW51eC9xbng0X2ZzLmgJVHVlIE1h
eSAyNSAwOTo0ODo0NiAxOTk5DQpAQCAtOTUsNyArOTUsNyBAQA0KICNkZWZp
bmUgUU5YNERFQlVHKFgpICh2b2lkKSAwDQogI2VuZGlmDQogDQotZXh0ZXJu
IHN0cnVjdCBkZW50cnkgKnFueDRfbG9va3VwKHN0cnVjdCBpbm9kZSAqZGly
LCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpOw0KK2V4dGVybiBzdHJ1Y3QgZGVu
dHJ5ICpxbng0X2xvb2t1cChzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGRlbnRy
eSAqLCBpbnQpOw0KIGV4dGVybiB1bnNpZ25lZCBsb25nIHFueDRfY291bnRf
ZnJlZV9pbm9kZXMoc3RydWN0IHN1cGVyX2Jsb2NrICpzYik7DQogZXh0ZXJu
IHVuc2lnbmVkIGxvbmcgcW54NF9jb3VudF9mcmVlX2Jsb2NrcyhzdHJ1Y3Qg
c3VwZXJfYmxvY2sgKnNiKTsNCiANCmRpZmYgLXVyTiBsaW51eC1iaXJkLkZB
VC9pbmNsdWRlL2xpbnV4L3N5c3ZfZnMuaCBsaW51eC1iaXJkLkJMRVRDSC9p
bmNsdWRlL2xpbnV4L3N5c3ZfZnMuaA0KLS0tIGxpbnV4LWJpcmQuRkFUL2lu
Y2x1ZGUvbGludXgvc3lzdl9mcy5oCVRodSBNYXkgMTMgMDc6MDM6MjUgMTk5
OQ0KKysrIGxpbnV4LWJpcmQuQkxFVENIL2luY2x1ZGUvbGludXgvc3lzdl9m
cy5oCVR1ZSBNYXkgMjUgMTU6MTA6MjQgMTk5OQ0KQEAgLTM2Nyw3ICszNjcs
NyBAQA0KICAqIEZ1bmN0aW9uIHByb3RvdHlwZXMNCiAgKi8NCiANCi1leHRl
cm4gc3RydWN0IGRlbnRyeSAqc3lzdl9sb29rdXAoc3RydWN0IGlub2RlICog
ZGlyLCBzdHJ1Y3QgZGVudHJ5ICogZGVudHJ5KTsNCitleHRlcm4gc3RydWN0
IGRlbnRyeSAqc3lzdl9sb29rdXAoc3RydWN0IGlub2RlICosIHN0cnVjdCBk
ZW50cnkgKiwgaW50KTsNCiBleHRlcm4gaW50IHN5c3ZfY3JlYXRlKHN0cnVj
dCBpbm9kZSAqIGRpciwgc3RydWN0IGRlbnRyeSAqIGRlbnRyeSwgaW50IG1v
ZGUpOw0KIGV4dGVybiBpbnQgc3lzdl9ta2RpcihzdHJ1Y3QgaW5vZGUgKiBk
aXIsIHN0cnVjdCBkZW50cnkgKiBkZW50cnksIGludCBtb2RlKTsNCiBleHRl
cm4gaW50IHN5c3Zfcm1kaXIoc3RydWN0IGlub2RlICogZGlyLCBzdHJ1Y3Qg
ZGVudHJ5ICogZGVudHJ5KTsNCmRpZmYgLXVyTiBsaW51eC1iaXJkLkZBVC9p
bmNsdWRlL2xpbnV4L3Vmc19mcy5oIGxpbnV4LWJpcmQuQkxFVENIL2luY2x1
ZGUvbGludXgvdWZzX2ZzLmgNCi0tLSBsaW51eC1iaXJkLkZBVC9pbmNsdWRl
L2xpbnV4L3Vmc19mcy5oCVRodSBNYXkgMTMgMDc6MDM6MjYgMTk5OQ0KKysr
IGxpbnV4LWJpcmQuQkxFVENIL2luY2x1ZGUvbGludXgvdWZzX2ZzLmgJVHVl
IE1heSAyNSAwOTo0NjoxMCAxOTk5DQpAQCAtNTQwLDcgKzU0MCw3IEBADQog
ZXh0ZXJuIHN0cnVjdCBidWZmZXJfaGVhZCAqIHVmc19icmVhZCAoc3RydWN0
IGlub2RlICosIHVuc2lnbmVkLCBpbnQsIGludCAqKTsNCiANCiAvKiBuYW1l
aS5jICovDQotZXh0ZXJuIHN0cnVjdCBkZW50cnkgKnVmc19sb29rdXAgKHN0
cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZGVudHJ5ICopOw0KK2V4dGVybiBzdHJ1
Y3QgZGVudHJ5ICp1ZnNfbG9va3VwIChzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0
IGRlbnRyeSAqLCBpbnQpOw0KIGV4dGVybiBpbnQgdWZzX21rZGlyKHN0cnVj
dCBpbm9kZSAqLCBzdHJ1Y3QgZGVudHJ5ICosIGludCk7DQogZXh0ZXJuIGlu
dCB1ZnNfcm1kaXIgKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZGVudHJ5ICop
Ow0KIGV4dGVybiBpbnQgdWZzX3VubGluayAoc3RydWN0IGlub2RlICosIHN0
cnVjdCBkZW50cnkgKik7DQpkaWZmIC11ck4gbGludXgtYmlyZC5GQVQvaW5j
bHVkZS9saW51eC91bXNkb3NfZnMucCBsaW51eC1iaXJkLkJMRVRDSC9pbmNs
dWRlL2xpbnV4L3Vtc2Rvc19mcy5wDQotLS0gbGludXgtYmlyZC5GQVQvaW5j
bHVkZS9saW51eC91bXNkb3NfZnMucAlUaHUgTWF5IDEzIDA3OjAzOjI2IDE5
OTkNCisrKyBsaW51eC1iaXJkLkJMRVRDSC9pbmNsdWRlL2xpbnV4L3Vtc2Rv
c19mcy5wCVR1ZSBNYXkgMjUgMDg6NTk6NDEgMTk5OQ0KQEAgLTEwLDcgKzEw
LDcgQEANCiB2b2lkIHVtc2Rvc19sb29rdXBfcGF0Y2hfbmV3KHN0cnVjdCBk
ZW50cnkgKiwgc3RydWN0IHVtc2Rvc19pbmZvICopOw0KIGludCB1bXNkb3Nf
aXNfcHNldWRvZG9zIChzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRy
eSAqZGVudHJ5KTsNCiBzdHJ1Y3QgZGVudHJ5ICp1bXNkb3NfbG9va3VwX3gg
KCBzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBp
bnQgbm9wc2V1ZG8pOw0KLXN0cnVjdCBkZW50cnkgKlVNU0RPU19sb29rdXAo
c3RydWN0IGlub2RlICosIHN0cnVjdCBkZW50cnkgKik7DQorc3RydWN0IGRl
bnRyeSAqVU1TRE9TX2xvb2t1cChzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGRl
bnRyeSAqLCBpbnQpOw0KIHN0cnVjdCBkZW50cnkgKnVtc2Rvc19sb29rdXBf
ZGVudHJ5KHN0cnVjdCBkZW50cnkgKiwgY2hhciAqLCBpbnQsIGludCk7DQog
c3RydWN0IGRlbnRyeSAqdW1zZG9zX2NvdmVyZWQoc3RydWN0IGRlbnRyeSAq
LCBjaGFyICosIGludCk7DQogDQpAQCAtMTA3LDcgKzEwNyw3IEBADQogDQog
LyogcmRpci5jIDIyLzAzLzk1IDAzLjMxLjQyICovDQogc3RydWN0IGRlbnRy
eSAqdW1zZG9zX3Jsb29rdXBfeCAoc3RydWN0IGlub2RlICpkaXIsIHN0cnVj
dCBkZW50cnkgKmRlbnRyeSwgaW50IG5vcHNldWRvKTsNCi1zdHJ1Y3QgZGVu
dHJ5ICpVTVNET1Nfcmxvb2t1cCAoc3RydWN0IGlub2RlICpkaXIsIHN0cnVj
dCBkZW50cnkgKmRlbnRyeSk7DQorc3RydWN0IGRlbnRyeSAqVU1TRE9TX3Js
b29rdXAgKHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50
cnksIGludCk7DQogDQogLyogc3ltbGluay5jIDIzLzAxLzk1IDAzLjM4LjMw
ICovDQogDQo=
---559023410-1956884037-927693768=:1768--

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/