Re: dcache questions

Gordon Chaffee (chaffee@CS.Berkeley.EDU)
Tue, 13 Jan 1998 19:39:18 -0800 (PST)


--wTPdvTsWwn
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

> Anyway, I just wanted to tell people that I didn't remove the
> inode->dentry list because I disliked the concept, but because I disliked
> the code that used it. So, Gordon, if you decide that it would help your
> job enourmously, then I just wanted to let you know that I won't fight the
> issue..

It certainly does help my job greatly. I removed the horribly ugly code
I was adding to vfat, and I instead put back the inode->dentry code.
Because the fat/vfat code was broken in 2.1.79, I'm including two patches.
The first just adds back the inode->dentry link. The second is patch
has all the fixes (compile, dentry, and disassociated longname handling bug)
to vfat and fat against a clean 2.1.79. Some of these fixes may already
have been applied in your tree from other bugfixes.

- Gordon

--wTPdvTsWwn
Content-Type: application/octet-stream
Content-Description: dcache-2.1.79.patch
Content-Disposition: attachment;
filename="dcache-2.1.79.patch"
Content-Transfer-Encoding: base64

ZGlmZiAtdXJOIGxpbnV4LTIuMS43OS1jbGVhbi9mcy9kY2FjaGUuYyBsaW51eC9mcy9kY2Fj
aGUuYwotLS0gbGludXgtMi4xLjc5LWNsZWFuL2ZzL2RjYWNoZS5jCVR1ZSBKYW4gMTMgMTQ6
NTU6MzIgMTk5OAorKysgbGludXgvZnMvZGNhY2hlLmMJVHVlIEphbiAxMyAxNDo1MzoyNyAx
OTk4CkBAIC02Nyw2ICs2Nyw3IEBACiAJc3RydWN0IGlub2RlICppbm9kZSA9IGRlbnRyeS0+
ZF9pbm9kZTsKIAlpZiAoaW5vZGUpIHsKIAkJZGVudHJ5LT5kX2lub2RlID0gTlVMTDsKKwkJ
bGlzdF9kZWwoJmRlbnRyeS0+ZF9hbGlhcyk7CiAJCWlmIChkZW50cnktPmRfb3AgJiYgZGVu
dHJ5LT5kX29wLT5kX2lwdXQpCiAJCQlkZW50cnktPmRfb3AtPmRfaXB1dChkZW50cnksIGlu
b2RlKTsKIAkJZWxzZQpAQCAtNTA4LDYgKzUwOSw3IEBACiAJSU5JVF9MSVNUX0hFQUQoJmRl
bnRyeS0+ZF9oYXNoKTsKIAlJTklUX0xJU1RfSEVBRCgmZGVudHJ5LT5kX2xydSk7CiAJSU5J
VF9MSVNUX0hFQUQoJmRlbnRyeS0+ZF9zdWJkaXJzKTsKKwlJTklUX0xJU1RfSEVBRCgmZGVu
dHJ5LT5kX2FsaWFzKTsKIAogCWRlbnRyeS0+ZF9uYW1lLm5hbWUgPSBzdHI7CiAJZGVudHJ5
LT5kX25hbWUubGVuID0gbmFtZS0+bGVuOwpAQCAtNTI5LDYgKzUzMSw4IEBACiAgKi8KIHZv
aWQgZF9pbnN0YW50aWF0ZShzdHJ1Y3QgZGVudHJ5ICplbnRyeSwgc3RydWN0IGlub2RlICog
aW5vZGUpCiB7CisJaWYgKGlub2RlKQorCQlsaXN0X2FkZCgmZW50cnktPmRfYWxpYXMsICZp
bm9kZS0+aV9kZW50cnkpOwogCWVudHJ5LT5kX2lub2RlID0gaW5vZGU7CiB9CiAKZGlmZiAt
dXJOIGxpbnV4LTIuMS43OS1jbGVhbi9mcy9pbm9kZS5jIGxpbnV4L2ZzL2lub2RlLmMKLS0t
IGxpbnV4LTIuMS43OS1jbGVhbi9mcy9pbm9kZS5jCVN1biBKYW4gIDQgMTA6NTI6NDIgMTk5
OAorKysgbGludXgvZnMvaW5vZGUuYwlUdWUgSmFuIDEzIDE0OjM0OjUwIDE5OTgKQEAgLTEy
Nyw2ICsxMjcsNyBAQAogCW1lbXNldChpbm9kZSwgMCwgc2l6ZW9mKCppbm9kZSkpOwogCWlu
aXRfd2FpdHF1ZXVlKCZpbm9kZS0+aV93YWl0KTsKIAlJTklUX0xJU1RfSEVBRCgmaW5vZGUt
PmlfaGFzaCk7CisJSU5JVF9MSVNUX0hFQUQoJmlub2RlLT5pX2RlbnRyeSk7CiAJc2VtYV9p
bml0KCZpbm9kZS0+aV9zZW0sIDEpOwogfQogCmRpZmYgLXVyTiBsaW51eC0yLjEuNzktY2xl
YW4vaW5jbHVkZS9saW51eC9kY2FjaGUuaCBsaW51eC9pbmNsdWRlL2xpbnV4L2RjYWNoZS5o
Ci0tLSBsaW51eC0yLjEuNzktY2xlYW4vaW5jbHVkZS9saW51eC9kY2FjaGUuaAlUdWUgSmFu
IDEzIDE0OjU1OjM5IDE5OTgKKysrIGxpbnV4L2luY2x1ZGUvbGludXgvZGNhY2hlLmgJVHVl
IEphbiAxMyAxODozOTowNiAxOTk4CkBAIC02MSw2ICs2MSw3IEBACiAJc3RydWN0IGxpc3Rf
aGVhZCBkX2xydTsJCS8qIGRfY291bnQgPSAwIExSVSBsaXN0ICovCiAJc3RydWN0IGxpc3Rf
aGVhZCBkX2NoaWxkOwkvKiBjaGlsZCBvZiBwYXJlbnQgbGlzdCAqLwogCXN0cnVjdCBsaXN0
X2hlYWQgZF9zdWJkaXJzOwkvKiBvdXIgY2hpbGRyZW4gKi8KKwlzdHJ1Y3QgbGlzdF9oZWFk
IGRfYWxpYXM7CS8qIGlub2RlIGFsaWFzIGxpc3QgKi8KIAlzdHJ1Y3QgcXN0ciBkX25hbWU7
CiAJdW5zaWduZWQgbG9uZyBkX3RpbWU7CQkvKiB1c2VkIGJ5IGRfcmV2YWxpZGF0ZSAqLwog
CXN0cnVjdCBkZW50cnlfb3BlcmF0aW9ucyAgKmRfb3A7CmRpZmYgLXVyTiBsaW51eC0yLjEu
NzktY2xlYW4vaW5jbHVkZS9saW51eC9mcy5oIGxpbnV4L2luY2x1ZGUvbGludXgvZnMuaAot
LS0gbGludXgtMi4xLjc5LWNsZWFuL2luY2x1ZGUvbGludXgvZnMuaAlNb24gSmFuICA1IDE2
OjA5OjM3IDE5OTgKKysrIGxpbnV4L2luY2x1ZGUvbGludXgvZnMuaAlUdWUgSmFuIDEzIDE4
OjQ0OjQwIDE5OTgKQEAgLTMxOCw2ICszMTgsNyBAQAogc3RydWN0IGlub2RlIHsKIAlzdHJ1
Y3QgbGlzdF9oZWFkCWlfaGFzaDsKIAlzdHJ1Y3QgbGlzdF9oZWFkCWlfbGlzdDsKKwlzdHJ1
Y3QgbGlzdF9oZWFkCWlfZGVudHJ5OwogCiAJdW5zaWduZWQgbG9uZwkJaV9pbm87CiAJa2Rl
dl90CQkJaV9kZXY7Cg==

--wTPdvTsWwn
Content-Type: application/octet-stream
Content-Description: vfat_fat-2.1.79.patch
Content-Disposition: attachment;
filename="fat-2.1.79.patch"
Content-Transfer-Encoding: base64

ZGlmZiAtdXJOIGxpbnV4LTIuMS43OS1jbGVhbi9mcy9mYXQvY2FjaGUuYyBsaW51eC9mcy9m
YXQvY2FjaGUuYwotLS0gbGludXgtMi4xLjc5LWNsZWFuL2ZzL2ZhdC9jYWNoZS5jCVR1ZSBK
YW4gMTMgMTQ6NTU6MzIgMTk5OAorKysgbGludXgvZnMvZmF0L2NhY2hlLmMJVHVlIEphbiAx
MyAxMjo1MjoyNyAxOTk4CkBAIC0xMjIsNyArMTIyLDcgQEAKIH0KIAogCi12b2lkIGNhY2hl
X2luaXQodm9pZCkKK3ZvaWQgZmF0X2NhY2hlX2luaXQodm9pZCkKIHsKIAlzdGF0aWMgaW50
IGluaXRpYWxpemVkID0gMDsKIAlpbnQgY291bnQ7CkBAIC0xMzgsNyArMTM4LDcgQEAKIH0K
IAogCi12b2lkIGNhY2hlX2xvb2t1cChzdHJ1Y3QgaW5vZGUgKmlub2RlLGludCBjbHVzdGVy
LGludCAqZl9jbHUsaW50ICpkX2NsdSkKK3ZvaWQgZmF0X2NhY2hlX2xvb2t1cChzdHJ1Y3Qg
aW5vZGUgKmlub2RlLGludCBjbHVzdGVyLGludCAqZl9jbHUsaW50ICpkX2NsdSkKIHsKIAlz
dHJ1Y3QgZmF0X2NhY2hlICp3YWxrOwogCkBAIC0xNzksNyArMTc5LDcgQEAKICNlbmRpZgog
CiAKLXZvaWQgY2FjaGVfYWRkKHN0cnVjdCBpbm9kZSAqaW5vZGUsaW50IGZfY2x1LGludCBk
X2NsdSkKK3ZvaWQgZmF0X2NhY2hlX2FkZChzdHJ1Y3QgaW5vZGUgKmlub2RlLGludCBmX2Ns
dSxpbnQgZF9jbHUpCiB7CiAJc3RydWN0IGZhdF9jYWNoZSAqd2FsaywqbGFzdDsKIApAQCAt
MjUyLDEyICsyNTIsMTIgQEAKIAlpZiAoIShuciA9IE1TRE9TX0koaW5vZGUpLT5pX3N0YXJ0
KSkgcmV0dXJuIDA7CiAJaWYgKCFjbHVzdGVyKSByZXR1cm4gbnI7CiAJY291bnQgPSAwOwot
CWZvciAoY2FjaGVfbG9va3VwKGlub2RlLGNsdXN0ZXIsJmNvdW50LCZucik7IGNvdW50IDwg
Y2x1c3RlcjsKKwlmb3IgKGZhdF9jYWNoZV9sb29rdXAoaW5vZGUsY2x1c3RlciwmY291bnQs
Jm5yKTsgY291bnQgPCBjbHVzdGVyOwogCSAgICBjb3VudCsrKSB7CiAJCWlmICgobnIgPSBm
YXRfYWNjZXNzKGlub2RlLT5pX3NiLG5yLC0xKSkgPT0gLTEpIHJldHVybiAwOwogCQlpZiAo
IW5yKSByZXR1cm4gMDsKIAl9Ci0JY2FjaGVfYWRkKGlub2RlLGNsdXN0ZXIsbnIpOworCWZh
dF9jYWNoZV9hZGQoaW5vZGUsY2x1c3Rlcixucik7CiAJcmV0dXJuIG5yOwogfQogCmRpZmYg
LXVyTiBsaW51eC0yLjEuNzktY2xlYW4vZnMvZmF0L2Rpci5jIGxpbnV4L2ZzL2ZhdC9kaXIu
YwotLS0gbGludXgtMi4xLjc5LWNsZWFuL2ZzL2ZhdC9kaXIuYwlUdWUgSmFuIDEzIDE0OjU1
OjMyIDE5OTgKKysrIGxpbnV4L2ZzL2ZhdC9kaXIuYwlUdWUgSmFuIDEzIDE3OjQyOjQxIDE5
OTgKQEAgLTIzNyw2ICsyMzcsNyBAQAogCQkJY2hhciBidWZuYW1lWzE0XTsKIAkJCWNoYXIg
KnB0bmFtZSA9IGJ1Zm5hbWU7CiAJCQlpbnQgZG90b2Zmc2V0ID0gMDsKKwkJCWludCB3YXNf
bG9uZyA9IGlzX2xvbmc7CiAKIAkJCWlmIChpc19sb25nKSB7CiAJCQkJdW5zaWduZWQgY2hh
ciBzdW07CkBAIC0yNDcsNiArMjQ4LDcgQEAKIAkJCQlpZiAoc3VtICE9IGFsaWFzX2NoZWNr
c3VtKSB7CiAJCQkJCVBSSU5USygoIkNoZWNrc3VtcyBkb24ndCBtYXRjaCAlZCAhPSAlZFxu
Iiwgc3VtLCBhbGlhc19jaGVja3N1bSkpOwogCQkJCQlpc19sb25nID0gMDsKKwkJCQkJbG9u
Z19zbG90cyA9IDA7CiAJCQkJfQogCQkJCWlmICh1dGY4KSB7CiAJCQkJCWxvbmdfbGVuID0g
dXRmOF93Y3N0b21icyhsb25nbmFtZSwgKF9fdTE2ICopIHVuaWNvZGUsIHNpemVvZihsb25n
bmFtZSkpOwpAQCAtMjkwLDcgKzI5Miw3IEBACiAJCQkJCWlmIChib3RoKQogCQkJCQkJYnVm
bmFtZVtpK2RvdG9mZnNldF0gPSAnXDAnOwogCQkJCQlzcG9zID0gb2xkcG9zOwotCQkJCQlp
ZiAoaXNfbG9uZykgeworCQkJCQlpZiAod2FzX2xvbmcpIHsKIAkJCQkJCXNwb3MgPSBmaWxw
LT5mX3BvcyAtIHNpemVvZihzdHJ1Y3QgbXNkb3NfZGlyX2VudHJ5KTsKIAkJCQkJfSBlbHNl
IHsKIAkJCQkJCWxvbmdfc2xvdHMgPSAwOwpkaWZmIC11ck4gbGludXgtMi4xLjc5LWNsZWFu
L2ZzL2ZhdC9pbm9kZS5jIGxpbnV4L2ZzL2ZhdC9pbm9kZS5jCi0tLSBsaW51eC0yLjEuNzkt
Y2xlYW4vZnMvZmF0L2lub2RlLmMJVHVlIEphbiAxMyAxNDo1NTozMiAxOTk4CisrKyBsaW51
eC9mcy9mYXQvaW5vZGUuYwlUdWUgSmFuIDEzIDEyOjUyOjQ3IDE5OTgKQEAgLTM3Nyw3ICsz
NzcsNyBAQAogCS8qIE4uQi4gd2Ugc2hvdWxkIHBhcnNlIGRpcmVjdGx5IGludG8gdGhlIHNi
IHN0cnVjdHVyZSAqLwogCW1lbWNweSgmKE1TRE9TX1NCKHNiKS0+b3B0aW9ucyksICZvcHRz
LCBzaXplb2Yoc3RydWN0IGZhdF9tb3VudF9vcHRpb25zKSk7CiAKLQljYWNoZV9pbml0KCk7
CisJZmF0X2NhY2hlX2luaXQoKTsKIAlsb2NrX3N1cGVyKHNiKTsKIAlpZiggYmxrc2l6ZSA+
IDEwMjQgKQogCSAgewpkaWZmIC11ck4gbGludXgtMi4xLjc5LWNsZWFuL2ZzL2ZhdC9taXNj
LmMgbGludXgvZnMvZmF0L21pc2MuYwotLS0gbGludXgtMi4xLjc5LWNsZWFuL2ZzL2ZhdC9t
aXNjLmMJVHVlIEphbiAxMyAxNDo1NTozMiAxOTk4CisrKyBsaW51eC9mcy9mYXQvbWlzYy5j
CVR1ZSBKYW4gMTMgMTI6NTM6MDcgMTk5OApAQCAtMTk0LDcgKzE5NCw3IEBACiAJKi8KIAlm
aWxlX2NsdXN0ZXIgPSAwOwogCWlmICgoY3VyciA9IE1TRE9TX0koaW5vZGUpLT5pX3N0YXJ0
KSAhPSAwKSB7Ci0JCWNhY2hlX2xvb2t1cChpbm9kZSxJTlRfTUFYLCZsYXN0LCZjdXJyKTsK
KwkJZmF0X2NhY2hlX2xvb2t1cChpbm9kZSxJTlRfTUFYLCZsYXN0LCZjdXJyKTsKIAkJZmls
ZV9jbHVzdGVyID0gbGFzdDsKIAkJd2hpbGUgKGN1cnIgJiYgY3VyciAhPSAtMSl7CiAJCQlQ
UklOVEsgKCgiLiIpKTsKQEAgLTI0Miw3ICsyNDIsNyBAQAogCQlwcmludGsgKCJmaWxlX2Ns
dXN0ZXIgYmFkbHkgY29tcHV0ZWQhISEgJWQgPD4gJWxkXG4iCiAJCQksZmlsZV9jbHVzdGVy
LGlub2RlLT5pX2Jsb2Nrcy9jbHVzdGVyX3NpemUpOwogCX1lbHNlewotCQljYWNoZV9hZGQo
aW5vZGUsZmlsZV9jbHVzdGVyLG5yKTsKKwkJZmF0X2NhY2hlX2FkZChpbm9kZSxmaWxlX2Ns
dXN0ZXIsbnIpOwogCX0KIAlpbm9kZS0+aV9ibG9ja3MgKz0gY2x1c3Rlcl9zaXplOwogCWlm
IChTX0lTRElSKGlub2RlLT5pX21vZGUpKSB7CmRpZmYgLXVyTiBsaW51eC0yLjEuNzktY2xl
YW4vZnMvZmF0L21tYXAuYyBsaW51eC9mcy9mYXQvbW1hcC5jCi0tLSBsaW51eC0yLjEuNzkt
Y2xlYW4vZnMvZmF0L21tYXAuYwlUdWUgSmFuIDEzIDE0OjU1OjMyIDE5OTgKKysrIGxpbnV4
L2ZzL2ZhdC9tbWFwLmMJVHVlIEphbiAxMyAxMjo0OTo1OSAxOTk4CkBAIC0xMTgsMTEgKzEx
OCwxMyBAQAogfQogCiAKLWludCBmYXRfcmVhZHBhZ2Uoc3RydWN0IGlub2RlICogaW5vZGUs
IHN0cnVjdCBwYWdlICogcGFnZSkKK2ludCBmYXRfcmVhZHBhZ2Uoc3RydWN0IGRlbnRyeSAq
IGRlbnRyeSwgc3RydWN0IHBhZ2UgKiBwYWdlKQogeworCXN0cnVjdCBpbm9kZSAqIGlub2Rl
ID0gZGVudHJ5LT5kX2lub2RlOwogCWlmKE1TRE9TX1NCKGlub2RlLT5pX3NiKS0+Y3ZmX2Zv
cm1hdCkKLQkgIGlmKE1TRE9TX1NCKGlub2RlLT5pX3NiKS0+Y3ZmX2Zvcm1hdC0+Y3ZmX3Jl
YWRwYWdlKQotCSAgICByZXR1cm4gTVNET1NfU0IoaW5vZGUtPmlfc2IpLT5jdmZfZm9ybWF0
LT5jdmZfcmVhZHBhZ2UoaW5vZGUscGFnZSk7CisJCWlmKE1TRE9TX1NCKGlub2RlLT5pX3Ni
KS0+Y3ZmX2Zvcm1hdC0+Y3ZmX3JlYWRwYWdlKQorCQkJcmV0dXJuIE1TRE9TX1NCKGlub2Rl
LT5pX3NiKS0+Y3ZmX2Zvcm1hdAorCQkJCS0+Y3ZmX3JlYWRwYWdlKGlub2RlLHBhZ2UpOwog
CSAgICAKIAlwcmludGsoImZhdF9yZWFkcGFnZSBjYWxsZWQgd2l0aCBubyBoYW5kbGVyIChz
aG91bGRuJ3QgaGFwcGVuKVxuIik7CiAJcmV0dXJuIC0xOwpkaWZmIC11ck4gbGludXgtMi4x
Ljc5LWNsZWFuL2ZzL3ZmYXQvbmFtZWkuYyBsaW51eC9mcy92ZmF0L25hbWVpLmMKLS0tIGxp
bnV4LTIuMS43OS1jbGVhbi9mcy92ZmF0L25hbWVpLmMJTW9uIERlYyAyOSAwODo0NToyNyAx
OTk3CisrKyBsaW51eC9mcy92ZmF0L25hbWVpLmMJVHVlIEphbiAxMyAxODozNzozMyAxOTk4
CkBAIC01Nyw2ICs1NywzOCBAQAogc3RhdGljIGludCB2ZmF0X3ZhbGlkX3Nob3J0bmFtZShj
b25zdCBjaGFyICosaW50LCBpbnQsIGludCk7CiBzdGF0aWMgaW50IHZmYXRfZm9ybWF0X25h
bWUoY29uc3QgY2hhciAqLCBpbnQsIGNoYXIgKiwgaW50LCBpbnQpOwogc3RhdGljIGludCB2
ZmF0X3ZhbGlkX2xvbmduYW1lKGNvbnN0IGNoYXIgKiwgaW50LCBpbnQsIGludCk7CitzdGF0
aWMgaW50IHZmYXRfaGFzaGkoc3RydWN0IGRlbnRyeSAqcGFyZW50LCBzdHJ1Y3QgcXN0ciAq
cXN0cik7CitzdGF0aWMgaW50IHZmYXRfaGFzaChzdHJ1Y3QgZGVudHJ5ICpwYXJlbnQsIHN0
cnVjdCBxc3RyICpxc3RyKTsKK3N0YXRpYyBpbnQgdmZhdF9jbXBpKHN0cnVjdCBkZW50cnkg
KmRlbnRyeSwgc3RydWN0IHFzdHIgKmEsIHN0cnVjdCBxc3RyICpiKTsKK3N0YXRpYyBpbnQg
dmZhdF9jbXAoc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBzdHJ1Y3QgcXN0ciAqYSwgc3RydWN0
IHFzdHIgKmIpOworc3RhdGljIGludCB2ZmF0X3JldmFsaWRhdGUoc3RydWN0IGRlbnRyeSAq
ZGVudHJ5KTsKKworc3RhdGljIHN0cnVjdCBkZW50cnlfb3BlcmF0aW9ucyB2ZmF0X2RlbnRy
eV9vcHNbNF0gPSB7CisJeworCQlOVUxMLAkJCS8qIGRfcmV2YWxpZGF0ZSAqLworCQl2ZmF0
X2hhc2hpLAorCQl2ZmF0X2NtcGksCisJCU5VTEwJCQkvKiBkX2RlbGV0ZSAqLworCX0sCisJ
eworCQl2ZmF0X3JldmFsaWRhdGUsCisJCXZmYXRfaGFzaGksCisJCXZmYXRfY21waSwKKwkJ
TlVMTAkJCS8qIGRfZGVsZXRlICovCisJfSwKKwl7CisJCU5VTEwsIAkJCS8qIGRfcmV2YWxp
ZGF0ZSAqLworCQl2ZmF0X2hhc2gsCisJCXZmYXRfY21wLAorCQlOVUxMCQkJLyogZF9kZWxl
dGUgKi8KKwl9LAorCXsKKwkJdmZhdF9yZXZhbGlkYXRlLAorCQl2ZmF0X2hhc2gsCisJCXZm
YXRfY21wLAorCQlOVUxMCQkJLyogZF9kZWxldGUgKi8KKwl9Cit9OwogCiBzdGF0aWMgaW50
IHN0cm5pY21wKGNvbnN0IGNoYXIgKnMxLCBjb25zdCBjaGFyICpzMiwgaW50IGxlbikKIHsK
QEAgLTgwLDYgKzExMiwxMyBAQAogCU1PRF9ERUNfVVNFX0NPVU5UOwogfQogCitzdGF0aWMg
aW50IHZmYXRfcmV2YWxpZGF0ZShzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpCit7CisJaWYgKGRl
bnRyeS0+ZF90aW1lID09IGRlbnRyeS0+ZF9wYXJlbnQtPmRfaW5vZGUtPmlfdmVyc2lvbikg
eworCQlyZXR1cm4gMTsKKwl9CisJcmV0dXJuIDA7Cit9CiAKIHN0YXRpYyBzdHJ1Y3Qgc3Vw
ZXJfb3BlcmF0aW9ucyB2ZmF0X3NvcHMgPSB7IAogCXZmYXRfcmVhZF9pbm9kZSwKQEAgLTE2
OCw2ICsyMDcsMjcgQEAKIHsKIAljb25zdCBjaGFyICpuYW1lOwogCWludCBsZW47CisKKwls
ZW4gPSBxc3RyLT5sZW47CisJbmFtZSA9IHFzdHItPm5hbWU7CisJd2hpbGUgKGxlbiAmJiBu
YW1lW2xlbi0xXSA9PSAnLicpCisJCWxlbi0tOworCisJcXN0ci0+aGFzaCA9IGZ1bGxfbmFt
ZV9oYXNoKG5hbWUsIGxlbik7CisKKwlyZXR1cm4gMDsKK30KKworLyoKKyAqIENvbXB1dGUg
dGhlIGhhc2ggZm9yIHRoZSB2ZmF0IG5hbWUgY29ycmVzcG9uZGluZyB0byB0aGUgZGVudHJ5
LgorICogTm90ZTogaWYgdGhlIG5hbWUgaXMgaW52YWxpZCwgd2UgbGVhdmUgdGhlIGhhc2gg
Y29kZSB1bmNoYW5nZWQgc28KKyAqIHRoYXQgdGhlIGV4aXN0aW5nIGRlbnRyeSBjYW4gYmUg
dXNlZC4gVGhlIHZmYXQgZnMgcm91dGluZXMgd2lsbAorICogcmV0dXJuIEVOT0VOVCBvciBF
SU5WQUwgYXMgYXBwcm9wcmlhdGUuCisgKi8KK3N0YXRpYyBpbnQgdmZhdF9oYXNoaShzdHJ1
Y3QgZGVudHJ5ICpkZW50cnksIHN0cnVjdCBxc3RyICpxc3RyKQoreworCWNvbnN0IGNoYXIg
Km5hbWU7CisJaW50IGxlbjsKIAljaGFyIGM7CiAJdW5zaWduZWQgbG9uZyBoYXNoOwogCkBA
IC0xODcsOSArMjQ3LDkgQEAKIH0KIAogLyoKLSAqIENvbXBhcmUgdHdvIHZmYXQgbmFtZXMu
CisgKiBDYXNlIGluc2Vuc2l0aXZlIGNvbXBhcmUgb2YgdHdvIHZmYXQgbmFtZXMuCiAgKi8K
LXN0YXRpYyBpbnQgdmZhdF9jbXAoc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBzdHJ1Y3QgcXN0
ciAqYSwgc3RydWN0IHFzdHIgKmIpCitzdGF0aWMgaW50IHZmYXRfY21waShzdHJ1Y3QgZGVu
dHJ5ICpkZW50cnksIHN0cnVjdCBxc3RyICphLCBzdHJ1Y3QgcXN0ciAqYikKIHsKIAlpbnQg
YWxlbiwgYmxlbjsKIApAQCAtMjAwLDE4ICsyNjAsMzMgQEAKIAkJYWxlbi0tOwogCXdoaWxl
IChibGVuICYmIGItPm5hbWVbYmxlbi0xXSA9PSAnLicpCiAJCWJsZW4tLTsKLQlpZiAoYWxl
biAhPSBibGVuKQotCQlyZXR1cm4gMTsKLQotCXJldHVybiBzdHJuaWNtcChhLT5uYW1lLCBi
LT5uYW1lLCBhbGVuKTsKKwlpZiAoYWxlbiA9PSBibGVuKSB7CisJCWlmIChzdHJuaWNtcChh
LT5uYW1lLCBiLT5uYW1lLCBhbGVuKSA9PSAwKQorCQkJcmV0dXJuIDA7CisJfQorCXJldHVy
biAxOwogfQogCi1zdGF0aWMgc3RydWN0IGRlbnRyeV9vcGVyYXRpb25zIHZmYXRfZGVudHJ5
X29wZXJhdGlvbnMgPSB7Ci0JTlVMTCwgCQkvKiBkX3JldmFsaWRhdGUgKi8KLQl2ZmF0X2hh
c2gsCi0JdmZhdF9jbXAsCi0JTlVMTAkJLyogZF9kZWxldGUgKi8KLX07CisvKgorICogQ2Fz
ZSBzZW5zaXRpdmUgY29tcGFyZSBvZiB0d28gdmZhdCBuYW1lcy4KKyAqLworc3RhdGljIGlu
dCB2ZmF0X2NtcChzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIHN0cnVjdCBxc3RyICphLCBzdHJ1
Y3QgcXN0ciAqYikKK3sKKwlpbnQgYWxlbiwgYmxlbjsKKworCS8qIEEgZmlsZW5hbWUgY2Fu
bm90IGVuZCBpbiAnLicgb3Igd2UgdHJlYXQgaXQgbGlrZSBpdCBoYXMgbm9uZSAqLworCWFs
ZW4gPSBhLT5sZW47CisJYmxlbiA9IGItPmxlbjsKKwl3aGlsZSAoYWxlbiAmJiBhLT5uYW1l
W2FsZW4tMV0gPT0gJy4nKQorCQlhbGVuLS07CisJd2hpbGUgKGJsZW4gJiYgYi0+bmFtZVti
bGVuLTFdID09ICcuJykKKwkJYmxlbi0tOworCWlmIChhbGVuID09IGJsZW4pIHsKKwkJaWYg
KHN0cm5jbXAoYS0+bmFtZSwgYi0+bmFtZSwgYWxlbikgPT0gMCkKKwkJCXJldHVybiAwOwor
CX0KKwlyZXR1cm4gMTsKK30KIAogc3RydWN0IHN1cGVyX2Jsb2NrICp2ZmF0X3JlYWRfc3Vw
ZXIoc3RydWN0IHN1cGVyX2Jsb2NrICpzYix2b2lkICpkYXRhLAogCQkJCSAgICBpbnQgc2ls
ZW50KQpAQCAtMjM1LDcgKzMxMCw5IEBACiAJfSBlbHNlIHsKIAkJTVNET1NfU0Ioc2IpLT5v
cHRpb25zLmRvdHNPSyA9IDA7CiAJCWlmIChNU0RPU19TQihzYiktPm9wdGlvbnMubmFtZV9j
aGVjayAhPSAncycpIHsKLQkJCXNiLT5zX3Jvb3QtPmRfb3AgPSAmdmZhdF9kZW50cnlfb3Bl
cmF0aW9uczsKKwkJCXNiLT5zX3Jvb3QtPmRfb3AgPSAmdmZhdF9kZW50cnlfb3BzWzBdOwor
CQl9IGVsc2UgeworCQkJc2ItPnNfcm9vdC0+ZF9vcCA9ICZ2ZmF0X2RlbnRyeV9vcHNbMl07
CiAJCX0KIAl9CiAKQEAgLTMyMSw3ICszOTgsNyBAQAogCiBzdGF0aWMgaW50IHZmYXRfZmlu
ZChzdHJ1Y3QgaW5vZGUgKmRpcixzdHJ1Y3QgcXN0ciogbmFtZSwKIAkJICAgICAgaW50IGZp
bmRfbG9uZyxpbnQgbmV3X2ZpbGVuYW1lLGludCBpc19kaXIsCi0JCSAgICAgIHN0cnVjdCBz
bG90X2luZm8gKnNpbmZvX291dCk7CisJCSAgICAgIHN0cnVjdCB2ZmF0X3Nsb3RfaW5mbyAq
c2luZm9fb3V0KTsKIAogLyogQ2hlY2tzIHRoZSB2YWxpZGl0eSBvZiBhIGxvbmcgTVMtRE9T
IGZpbGVuYW1lICovCiAvKiBSZXR1cm5zIG5lZ2F0aXZlIG51bWJlciBvbiBlcnJvciwgMCBm
b3IgYSBub3JtYWwKQEAgLTUxOSw3ICs1OTYsNyBAQAogCWludCByZXM7CiAJaW50IHNwYWNl
czsKIAljaGFyIGJ1Zls4XTsKLQlzdHJ1Y3Qgc2xvdF9pbmZvIHNpbmZvOworCXN0cnVjdCB2
ZmF0X3Nsb3RfaW5mbyBzaW5mbzsKIAljb25zdCBjaGFyICpuYW1lX3N0YXJ0OwogCXN0cnVj
dCBxc3RyIHFuYW1lOwogCkBAIC03NzgsNyArODU1LDYgQEAKIAkJCWxlbi0tOwogCQlvcCA9
IG91dG5hbWU7CiAJCWlmIChubHMpIHsKLQkJCS8qIFhYWDogaSBpcyBpbmNvcnJlY3RseSBj
b21wdXRlZC4gKi8KIAkJCWZvciAoaSA9IDAsIGlwID0gbmFtZSwgb3AgPSBvdXRuYW1lLCAq
b3V0bGVuID0gMDsKIAkJCSAgICAgaSA8IGxlbiAmJiAqb3V0bGVuIDw9IDI2MDsgaSsrLCAq
b3V0bGVuICs9IDEpCiAJCQl7CkBAIC05OTIsNyArMTA2OCw3IEBACiB9CiAKIHN0YXRpYyBp
bnQgdmZhdF9maW5kKHN0cnVjdCBpbm9kZSAqZGlyLHN0cnVjdCBxc3RyKiBxbmFtZSwKLSAg
ICBpbnQgZmluZF9sb25nLCBpbnQgbmV3X2ZpbGVuYW1lLGludCBpc19kaXIsc3RydWN0IHNs
b3RfaW5mbyAqc2luZm9fb3V0KQorICAgIGludCBmaW5kX2xvbmcsIGludCBuZXdfZmlsZW5h
bWUsaW50IGlzX2RpcixzdHJ1Y3QgdmZhdF9zbG90X2luZm8gKnNpbmZvX291dCkKIHsKIAlz
dHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiID0gZGlyLT5pX3NiOwogCXN0cnVjdCB2ZmF0X2ZpbmRf
aW5mbyB2ZjsKQEAgLTExMTgsMzcgKzExOTQsMzYgQEAKIGludCB2ZmF0X2xvb2t1cChzdHJ1
Y3QgaW5vZGUgKmRpcixzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpCiB7CiAJaW50IHJlczsKLQlz
dHJ1Y3Qgc2xvdF9pbmZvIHNpbmZvOworCXN0cnVjdCB2ZmF0X3Nsb3RfaW5mbyBzaW5mbzsK
IAlzdHJ1Y3QgaW5vZGUgKnJlc3VsdDsKKwlpbnQgdGFibGU7CiAJCiAJUFJJTlRLICgoInZm
YXRfbG9va3VwOiBuYW1lPSVzLCBsZW49JWRcbiIsIAogCQkgZGVudHJ5LT5kX25hbWUubmFt
ZSwgZGVudHJ5LT5kX25hbWUubGVuKSk7CiAKLQlpZiAoTVNET1NfU0IoZGlyLT5pX3NiKS0+
b3B0aW9ucy5uYW1lX2NoZWNrICE9ICdzJykgewotCQlkZW50cnktPmRfb3AgPSAmdmZhdF9k
ZW50cnlfb3BlcmF0aW9uczsKLQl9CisJdGFibGUgPSAoTVNET1NfU0IoZGlyLT5pX3NiKS0+
b3B0aW9ucy5uYW1lX2NoZWNrID09ICdzJykgPyAyIDogMDsKKwlkZW50cnktPmRfb3AgPSAm
dmZhdF9kZW50cnlfb3BzW3RhYmxlXTsKIAogCXJlc3VsdCA9IE5VTEw7CiAJaWYgKChyZXMg
PSB2ZmF0X2ZpbmQoZGlyLCZkZW50cnktPmRfbmFtZSwxLDAsMCwmc2luZm8pKSA8IDApIHsK
LQkJZF9hZGQoZGVudHJ5LE5VTEwpOwotCQlyZXR1cm4gMDsKKwkJcmVzdWx0ID0gTlVMTDsK
KwkJdGFibGUrKzsKKwkJZ290byBlcnJvcjsKIAl9CiAJUFJJTlRLICgoInZmYXRfbG9va3Vw
IDQuNVxuIikpOwogCWlmICghKHJlc3VsdCA9IGlnZXQoZGlyLT5pX3NiLHNpbmZvLmlubykp
KQogCQlyZXR1cm4gLUVBQ0NFUzsKIAlQUklOVEsgKCgidmZhdF9sb29rdXAgNVxuIikpOwot
CWlmICghcmVzdWx0LT5pX3NiIHx8Ci0JICAgIChyZXN1bHQtPmlfc2ItPnNfbWFnaWMgIT0g
TVNET1NfU1VQRVJfTUFHSUMpKSB7Ci0JCS8qIGNyb3NzZWQgYSBtb3VudCBwb2ludCBpbnRv
IGEgbm9uLW1zZG9zIGZzICovCi0JCWRfYWRkKGRlbnRyeSxOVUxMKTsKLQkJcmV0dXJuIDA7
Ci0JfQogCWlmIChNU0RPU19JKHJlc3VsdCktPmlfYnVzeSkgeyAvKiBta2RpciBpbiBwcm9n
cmVzcyAqLwogCQlpcHV0KHJlc3VsdCk7Ci0JCWRfYWRkKGRlbnRyeSxOVUxMKTsKLQkJcmV0
dXJuIDA7CisJCXJlc3VsdCA9IE5VTEw7CisJCXRhYmxlKys7CisJCWdvdG8gZXJyb3I7CiAJ
fQogCVBSSU5USyAoKCJ2ZmF0X2xvb2t1cCA2XG4iKSk7CitlcnJvcjoKKwlkZW50cnktPmRf
b3AgPSAmdmZhdF9kZW50cnlfb3BzW3RhYmxlXTsKKwlkZW50cnktPmRfdGltZSA9IGRlbnRy
eS0+ZF9wYXJlbnQtPmRfaW5vZGUtPmlfdmVyc2lvbjsKIAlkX2FkZChkZW50cnkscmVzdWx0
KTsKIAlyZXR1cm4gMDsKIH0KQEAgLTExNjIsNyArMTIzNyw3IEBACiAJbG9mZl90IG9mZnNl
dDsKIAlzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoOwogCXN0cnVjdCBtc2Rvc19kaXJfZW50cnkg
KmRlOwotCXN0cnVjdCBzbG90X2luZm8gc2luZm87CisJc3RydWN0IHZmYXRfc2xvdF9pbmZv
IHNpbmZvOwogCiAJKnJlc3VsdD0wOwogCVBSSU5USygoInZmYXRfY3JlYXRlX2VudHJ5IDFc
biIpKTsKQEAgLTEyMTAsNiArMTI4NSw3IEBACiAJaWYgKHJlcyA8IDApIHsKIAkJUFJJTlRL
KCgidmZhdF9jcmVhdGU6IHVuYWJsZSB0byBnZXQgbmV3IGVudHJ5XG4iKSk7CiAJfSBlbHNl
IHsKKwkJZGVudHJ5LT5kX3RpbWUgPSBkZW50cnktPmRfcGFyZW50LT5kX2lub2RlLT5pX3Zl
cnNpb247CiAJCWRfaW5zdGFudGlhdGUoZGVudHJ5LHJlc3VsdCk7CiAJfQogCXJldHVybiBy
ZXM7CkBAIC0xMzg4LDcgKzE0NjQsNyBAQAogCXJldHVybiAwOwogfQogCi1zdGF0aWMgaW50
IHZmYXRfcmVtb3ZlX2VudHJ5KHN0cnVjdCBpbm9kZSAqZGlyLHN0cnVjdCBzbG90X2luZm8g
KnNpbmZvLAorc3RhdGljIGludCB2ZmF0X3JlbW92ZV9lbnRyeShzdHJ1Y3QgaW5vZGUgKmRp
cixzdHJ1Y3QgdmZhdF9zbG90X2luZm8gKnNpbmZvLAogICAgICBzdHJ1Y3QgYnVmZmVyX2hl
YWQgKipiaCxzdHJ1Y3QgZGVudHJ5KiBkZW50cnksCiAgICAgIGludCBpc19kaXIsaW50IG5v
c3BjKQogewpAQCAtMTQyMiwxMyArMTQ5OCwzMSBAQAogCXJldHVybiAwOwogfQogCitzdGF0
aWMgdm9pZCB2ZmF0X2RlbGV0ZV9kZW50cmllcyhzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpCit7
CisJc3RydWN0IGxpc3RfaGVhZCAqaGVhZCwgKm5leHQsICp0bXA7CisJc3RydWN0IGRlbnRy
eSAqYWxpYXM7CisKKwloZWFkID0gJmRlbnRyeS0+ZF9pbm9kZS0+aV9kZW50cnk7CisJaWYg
KGRlbnRyeS0+ZF9pbm9kZSkgeworCQluZXh0ID0gZGVudHJ5LT5kX2lub2RlLT5pX2RlbnRy
eS5uZXh0OworCQl3aGlsZSAobmV4dCAhPSBoZWFkKSB7CisJCQl0bXAgPSBuZXh0OworCQkJ
bmV4dCA9IHRtcC0+bmV4dDsKKwkJCWFsaWFzID0gbGlzdF9lbnRyeSh0bXAsIHN0cnVjdCBk
ZW50cnksIGRfYWxpYXMpOworCQkJZF9kZWxldGUoYWxpYXMpOworCQl9CisJfSBlbHNlIHsK
KwkJZF9kZWxldGUoZGVudHJ5KTsKKwl9Cit9CiAKIHN0YXRpYyBpbnQgdmZhdF9ybWRpcngo
c3RydWN0IGlub2RlICpkaXIsc3RydWN0IGRlbnRyeSogZGVudHJ5KQogewogCXN0cnVjdCBz
dXBlcl9ibG9jayAqc2IgPSBkaXItPmlfc2I7CiAJaW50IHJlczsKIAlzdHJ1Y3QgYnVmZmVy
X2hlYWQgKmJoOwotCXN0cnVjdCBzbG90X2luZm8gc2luZm87CisJc3RydWN0IHZmYXRfc2xv
dF9pbmZvIHNpbmZvOwogCiAJcmVzID0gdmZhdF9maW5kKGRpciwmZGVudHJ5LT5kX25hbWUs
MSwwLDAsJnNpbmZvKTsKIApAQCAtMTQ1MCw3ICsxNTQ0LDcgQEAKIAlpbnQgcmVzOwogCXJl
cyA9IHZmYXRfcm1kaXJ4KGRpciwgZGVudHJ5KTsKIAlpZiAocmVzID49IDApIHsKLQkJZF9k
ZWxldGUoZGVudHJ5KTsKKwkJdmZhdF9kZWxldGVfZGVudHJpZXMoZGVudHJ5KTsKIAl9CiAJ
cmV0dXJuIHJlczsKIH0KQEAgLTE0NjMsNyArMTU1Nyw3IEBACiAJc3RydWN0IHN1cGVyX2Js
b2NrICpzYiA9IGRpci0+aV9zYjsKIAlpbnQgcmVzOwogCXN0cnVjdCBidWZmZXJfaGVhZCAq
Ymg7Ci0Jc3RydWN0IHNsb3RfaW5mbyBzaW5mbzsKKwlzdHJ1Y3QgdmZhdF9zbG90X2luZm8g
c2luZm87CiAKIAliaCA9IE5VTEw7CiAJcmVzID0gdmZhdF9maW5kKGRpciwmZGVudHJ5LT5k
X25hbWUsMSwwLDAsJnNpbmZvKTsKQEAgLTE0OTgsNiArMTU5Miw3IEBACiAJcmVzID0gdmZh
dF9jcmVhdGVfZG90ZGlycyhpbm9kZSwgZGlyKTsKIAlmYXRfdW5sb2NrX2NyZWF0aW9uKCk7
CiAJTVNET1NfSShpbm9kZSktPmlfYnVzeSA9IDA7CisJZGVudHJ5LT5kX3RpbWUgPSBkZW50
cnktPmRfcGFyZW50LT5kX2lub2RlLT5pX3ZlcnNpb247CiAJZF9pbnN0YW50aWF0ZShkZW50
cnksaW5vZGUpOwogCWlmIChyZXMgPCAwKSB7CiAJCWlmICh2ZmF0X3JtZGlyKGRpcixkZW50
cnkpIDwgMCkKQEAgLTE1MTMsNyArMTYwOCw3IEBACiAKIAlyZXMgPSB2ZmF0X3VubGlua3gg
KGRpcixkZW50cnksMSk7CiAJaWYgKHJlcyA+PSAwKSB7Ci0JCWRfZGVsZXRlKGRlbnRyeSk7
CisJCXZmYXRfZGVsZXRlX2RlbnRyaWVzKGRlbnRyeSk7CiAJfQogCXJldHVybiByZXM7CiB9
CkBAIC0xNTQwLDcgKzE2MzUsNyBAQAogCXN0cnVjdCBkZW50cnkgKndhbGs7CiAJaW50IHJl
cywgaXNfZGlyLCBpOwogCWludCBsb2NrZWQgPSAwOwotCXN0cnVjdCBzbG90X2luZm8gc2lu
Zm87CisJc3RydWN0IHZmYXRfc2xvdF9pbmZvIHNpbmZvOwogCiAJUFJJTlRLKCgidmZhdF9y
ZW5hbWUgMVxuIikpOwogCWlmIChvbGRfZGlyID09IG5ld19kaXIgJiYgCmRpZmYgLXVyTiBs
aW51eC0yLjEuNzktY2xlYW4vaW5jbHVkZS9saW51eC9tc2Rvc19mcy5oIGxpbnV4L2luY2x1
ZGUvbGludXgvbXNkb3NfZnMuaAotLS0gbGludXgtMi4xLjc5LWNsZWFuL2luY2x1ZGUvbGlu
dXgvbXNkb3NfZnMuaAlUdWUgSmFuIDEzIDE0OjU1OjM5IDE5OTgKKysrIGxpbnV4L2luY2x1
ZGUvbGludXgvbXNkb3NfZnMuaAlUdWUgSmFuIDEzIDE4OjUxOjUwIDE5OTgKQEAgLTE2Myw3
ICsxNjMsNiBAQAogCiBzdHJ1Y3QgdmZhdF9zbG90X2luZm8gewogCWludCBpc19sb25nOwkJ
ICAgICAgIC8qIHdhcyB0aGUgZm91bmQgZW50cnkgbG9uZyAqLwotCWludCBpc19hbGlhczsJ
CSAgICAgICAvKiB3YXMgdGhlIGZvdW5kIGVudHJ5IGFuIGFsaWFzICovCiAJaW50IGxvbmdf
c2xvdHM7CQkgICAgICAgLyogbnVtYmVyIG9mIGxvbmcgc2xvdHMgaW4gZmlsZW5hbWUgKi8K
IAlpbnQgdG90YWxfc2xvdHM7CSAgICAgICAvKiB0b3RhbCBzbG90cyAobG9uZyBhbmQgc2hv
cnQpICovCiAJbG9mZl90IGxvbmduYW1lX29mZnNldDsJICAgICAgIC8qIGRpciBvZmZzZXQg
Zm9yIGxvbmduYW1lIHN0YXJ0ICovCkBAIC0yMTksMTAgKzIxOCwxMCBAQAogZXh0ZXJuIGlu
dCBmYXRfZnJlZShzdHJ1Y3QgaW5vZGUgKmlub2RlLGludCBza2lwKTsKIHZvaWQgZmF0X2Nh
Y2hlX2ludmFsX2lub2RlKHN0cnVjdCBpbm9kZSAqaW5vZGUpOwogdm9pZCBmYXRfY2FjaGVf
aW52YWxfZGV2KGtkZXZfdCBkZXZpY2UpOwotZXh0ZXJuIHZvaWQgY2FjaGVfaW5pdCh2b2lk
KTsKLXZvaWQgY2FjaGVfbG9va3VwKHN0cnVjdCBpbm9kZSAqaW5vZGUsaW50IGNsdXN0ZXIs
aW50ICpmX2NsdSxpbnQgKmRfY2x1KTsKLXZvaWQgY2FjaGVfYWRkKHN0cnVjdCBpbm9kZSAq
aW5vZGUsaW50IGZfY2x1LGludCBkX2NsdSk7Ci1pbnQgZ2V0X2NsdXN0ZXIoc3RydWN0IGlu
b2RlICppbm9kZSxpbnQgY2x1c3Rlcik7CitleHRlcm4gdm9pZCBmYXRfY2FjaGVfaW5pdCh2
b2lkKTsKK3ZvaWQgZmF0X2NhY2hlX2xvb2t1cChzdHJ1Y3QgaW5vZGUgKmlub2RlLGludCBj
bHVzdGVyLGludCAqZl9jbHUsaW50ICpkX2NsdSk7Cit2b2lkIGZhdF9jYWNoZV9hZGQoc3Ry
dWN0IGlub2RlICppbm9kZSxpbnQgZl9jbHUsaW50IGRfY2x1KTsKK2ludCBmYXRfZ2V0X2Ns
dXN0ZXIoc3RydWN0IGlub2RlICppbm9kZSxpbnQgY2x1c3Rlcik7CiAKIC8qIGlub2RlLmMg
Ki8KIGV4dGVybiBpbnQgZmF0X2JtYXAoc3RydWN0IGlub2RlICppbm9kZSxpbnQgYmxvY2sp
OwpAQCAtMjU2LDcgKzI1NSw3IEBACiAKIC8qIG1tYXAuYyAqLwogZXh0ZXJuIGludCBmYXRf
bW1hcChzdHJ1Y3QgZmlsZSAqLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKik7Ci1leHRlcm4g
aW50IGZhdF9yZWFkcGFnZShzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IHBhZ2UgKik7CitleHRl
cm4gaW50IGZhdF9yZWFkcGFnZShzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCBwYWdlICopOwog
CiAKIC8qIHZmYXQuYyAqLwo=

--wTPdvTsWwn--