Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 1 Sep 2007 21:53:08 +0800
From:      "Tz-Huan Huang" <tzhuan@csie.org>
To:        "Bruce Evans" <brde@optusnet.com.au>
Cc:        Kostik Belousov <kostikbel@gmail.com>, bugs@freebsd.org, fs@freebsd.org
Subject:   Re: msdosfs not MPSAFE
Message-ID:  <6a7033710709010653i2e43f517y953885b67160c1cd@mail.gmail.com>
In-Reply-To: <20070831092907.K8647@besplex.bde.org>
References:  <20070712084115.GA2200@deviant.kiev.zoral.com.ua> <20070721233613.Q3366@besplex.bde.org> <20070804075730.GP2738@deviant.kiev.zoral.com.ua> <20070808004001.O926@besplex.bde.org> <20070807170259.GJ2738@deviant.kiev.zoral.com.ua> <20070810133946.H769@besplex.bde.org> <20070810124153.GW2738@deviant.kiev.zoral.com.ua> <20070814154812.J24186@besplex.bde.org> <6a7033710708300835n5ac95063o6331ede5fcc80662@mail.gmail.com> <20070831092907.K8647@besplex.bde.org>

next in thread | previous in thread | raw e-mail | index | archive | help
------=_Part_864_14572580.1188654788867
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

2007/8/31, Bruce Evans <brde@optusnet.com.au>:
> This is too late.  I just got approval to commit my version mailed
> here on 10 Aug, and will commit it today.  That version also removes
> the globals, but doesn't change the algorithm so much.  Your version
> seems to be simpler but has too many style bugs for me.  If you want
> to do more work on this, please adjust your patch to apply to the
> version that I will commit and clean it up.

(sorry that I forgot to replay to all in the previous mail)

Ok, the attachment is the new version.
I think it's worth committing because it doesn't only solve the global
variables problem but also solve the kiconv problem. In original
interface the win2unixchr() return a 2-byte int thus it's impossible to
convert from UTF-16BE to UTF-8 because the size of a character in
UTF-8 may be from 1 byte to 6 bytes.

Tz-Huan Huang

------=_Part_864_14572580.1188654788867
Content-Type: application/octet-stream; name=msdosfs.diff
Content-Transfer-Encoding: base64
X-Attachment-Id: f_f626ch0u
Content-Disposition: attachment; filename="msdosfs.diff"

ZGlmZiAtdXJOIG1zZG9zZnMub3JpZy9kaXJlbnRyeS5oIG1zZG9zZnMvZGlyZW50cnkuaAotLS0g
bXNkb3Nmcy5vcmlnL2RpcmVudHJ5LmgJMjAwNy0wOS0wMSAwNjoyOTo1NS4wMDAwMDAwMDAgKzA4
MDAKKysrIG1zZG9zZnMvZGlyZW50cnkuaAkyMDA3LTA5LTAxIDIxOjE3OjI1LjAwMDAwMDAwMCAr
MDgwMApAQCAtMTMzLDI3ICsxMzMsMTggQEAKICNkZWZpbmUgRERfWUVBUl9TSElGVAkJOQogCiAj
aWZkZWYgX0tFUk5FTAotc3RydWN0IG1ibmFtYnVmIHsKLQlzaXplX3QJbmJfbGVuOwotCWludAlu
Yl9sYXN0X2lkOwotCWNoYXIJbmJfYnVmW1dJTl9NQVhMRU4gKyAxXTsKLX07Ci0KIHN0cnVjdCBk
aXJlbnQ7CiBzdHJ1Y3QgbXNkb3Nmc21vdW50OwogCi1jaGFyCSptYm5hbWJ1Zl9mbHVzaChzdHJ1
Y3QgbWJuYW1idWYgKm5icCwgc3RydWN0IGRpcmVudCAqZHApOwotdm9pZAltYm5hbWJ1Zl9pbml0
KHN0cnVjdCBtYm5hbWJ1ZiAqbmJwKTsKLXZvaWQJbWJuYW1idWZfd3JpdGUoc3RydWN0IG1ibmFt
YnVmICpuYnAsIGNoYXIgKm5hbWUsIGludCBpZCk7CiBpbnQJZG9zMnVuaXhmbih1X2NoYXIgZG5b
MTFdLCB1X2NoYXIgKnVuLCBpbnQgbG93ZXIsCiAJICAgIHN0cnVjdCBtc2Rvc2ZzbW91bnQgKnBt
cCk7CiBpbnQJdW5peDJkb3Nmbihjb25zdCB1X2NoYXIgKnVuLCB1X2NoYXIgZG5bMTJdLCBzaXpl
X3QgdW5sZW4sIHVfaW50IGdlbiwKIAkgICAgc3RydWN0IG1zZG9zZnNtb3VudCAqcG1wKTsKLWlu
dAl1bml4MndpbmZuKGNvbnN0IHVfY2hhciAqdW4sIHNpemVfdCB1bmxlbiwgc3RydWN0IHdpbmVu
dHJ5ICp3ZXAsIGludCBjbnQsCi0JICAgIGludCBjaGtzdW0sIHN0cnVjdCBtc2Rvc2ZzbW91bnQg
KnBtcCk7Ci1pbnQJd2luQ2hrTmFtZShzdHJ1Y3QgbWJuYW1idWYgKm5icCwgY29uc3QgdV9jaGFy
ICp1biwgc2l6ZV90IHVubGVuLAoraW50CXVuaXgyd2luZm4oY29uc3QgdV9jaGFyICp1biwgc2l6
ZV90IHVubGVuLCBzdHJ1Y3Qgd2luZW50cnkgKndlcCwgCisJICAgIGludCBjbnQsIGludCBjaGtz
dW0sIHN0cnVjdCBtc2Rvc2ZzbW91bnQgKnBtcCk7CitpbnQJd2luQ2hrTmFtZShjb25zdCB1X2No
YXIgKnVuLCBzaXplX3QgdW5sZW4sIHN0cnVjdCBkaXJlbnQgKmRpcmJ1ZnB0ciwKIAkgICAgaW50
IGNoa3N1bSwgc3RydWN0IG1zZG9zZnNtb3VudCAqcG1wKTsKLWludAl3aW4ydW5peGZuKHN0cnVj
dCBtYm5hbWJ1ZiAqbmJwLCBzdHJ1Y3Qgd2luZW50cnkgKndlcCwgaW50IGNoa3N1bSwKK2ludAl3
aW4ydW5peGZuKHN0cnVjdCB3aW5lbnRyeSAqd2VwLCBzdHJ1Y3QgZGlyZW50ICpkaXJidWZwdHIs
IGludCBjaGtzdW0sIAogCSAgICBzdHJ1Y3QgbXNkb3Nmc21vdW50ICpwbXApOwogdV9pbnQ4X3Qg
d2luQ2hrc3VtKHN0cnVjdCBkaXJlbnRyeSAqZGVwKTsKIGludAl3aW5TbG90Q250KGNvbnN0IHVf
Y2hhciAqdW4sIHNpemVfdCB1bmxlbiwgc3RydWN0IG1zZG9zZnNtb3VudCAqcG1wKTsKZGlmZiAt
dXJOIG1zZG9zZnMub3JpZy9tc2Rvc2ZzX2NvbnYuYyBtc2Rvc2ZzL21zZG9zZnNfY29udi5jCi0t
LSBtc2Rvc2ZzLm9yaWcvbXNkb3Nmc19jb252LmMJMjAwNy0wOS0wMSAwNjoyOTo1NS4wMDAwMDAw
MDAgKzA4MDAKKysrIG1zZG9zZnMvbXNkb3Nmc19jb252LmMJMjAwNy0wOS0wMSAyMTozNDoxMS4w
MDAwMDAwMDAgKzA4MDAKQEAgLTUyLDYgKzUyLDcgQEAKICNpbmNsdWRlIDxzeXMvc3lzdG0uaD4K
ICNpbmNsdWRlIDxzeXMvZGlyZW50Lmg+CiAjaW5jbHVkZSA8c3lzL2ljb252Lmg+CisjaW5jbHVk
ZSA8c3lzL21hbGxvYy5oPgogI2luY2x1ZGUgPHN5cy9tb3VudC5oPgogCiAjaW5jbHVkZSA8ZnMv
bXNkb3Nmcy9icGIuaD4KQEAgLTYxLDEwICs2MiwxNCBAQAogZXh0ZXJuIHN0cnVjdCBpY29udl9m
dW5jdGlvbnMgKm1zZG9zZnNfaWNvbnY7CiAKIHN0YXRpYyBpbnQgbWJzYWRqcG9zKGNvbnN0IGNo
YXIgKiosIHNpemVfdCwgc2l6ZV90LCBpbnQsIGludCwgdm9pZCAqaGFuZGxlKTsKLXN0YXRpYyB1
X2ludDE2X3QgZG9zMnVuaXhjaHIoY29uc3QgdV9jaGFyICoqLCBzaXplX3QgKiwgaW50LCBzdHJ1
Y3QgbXNkb3Nmc21vdW50ICopOworc3RhdGljIHVfaW50MTZfdCBkb3MydW5peGNocihjb25zdCB1
X2NoYXIgKiosIHNpemVfdCAqLCBpbnQsIAorCSAgICBzdHJ1Y3QgbXNkb3Nmc21vdW50ICopOwog
c3RhdGljIHVfaW50MTZfdCB1bml4MmRvc2Nocihjb25zdCB1X2NoYXIgKiosIHNpemVfdCAqLCBz
dHJ1Y3QgbXNkb3Nmc21vdW50ICopOwotc3RhdGljIHVfaW50MTZfdCB3aW4ydW5peGNocih1X2lu
dDE2X3QsIHN0cnVjdCBtc2Rvc2ZzbW91bnQgKik7Ci1zdGF0aWMgdV9pbnQxNl90IHVuaXgyd2lu
Y2hyKGNvbnN0IHVfY2hhciAqKiwgc2l6ZV90ICosIGludCwgc3RydWN0IG1zZG9zZnNtb3VudCAq
KTsKK3N0YXRpYyBzaXplX3Qgd2luMnVuaXhjaHIodV9pbnQxNl90IHdjLCBzdHJ1Y3QgZGlyZW50
ICpkaXJidWZwdHIsIAorCSAgICBzdHJ1Y3QgbXNkb3Nmc21vdW50ICpwbXApOworc3RhdGljIHVf
aW50MTZfdCB1bml4MndpbmNocihjb25zdCB1X2NoYXIgKiosIHNpemVfdCAqLCBpbnQsCisJICAg
IHN0cnVjdCBtc2Rvc2ZzbW91bnQgKik7CitzdGF0aWMgdm9pZCBzdHJyZXZlcnNlKGNoYXIgKiwg
c2l6ZV90KTsKIAogLyoKICAqIDAgLSBjaGFyYWN0ZXIgZGlzYWxsb3dlZCBpbiBsb25nIGZpbGUg
bmFtZS4KQEAgLTU5NiwzOCArNjAxLDMzIEBACiAgKiBSZXR1cm5zIHRoZSBjaGVja3N1bSBvciAt
MSBpZiBubyBtYXRjaAogICovCiBpbnQKLXdpbkNoa05hbWUobmJwLCB1biwgdW5sZW4sIGNoa3N1
bSwgcG1wKQotCXN0cnVjdCBtYm5hbWJ1ZiAqbmJwOword2luQ2hrTmFtZSh1biwgdW5sZW4sIGRp
cmJ1ZnB0ciwgY2hrc3VtLCBwbXApCiAJY29uc3QgdV9jaGFyICp1bjsKIAlzaXplX3QgdW5sZW47
CisJc3RydWN0IGRpcmVudCAqZGlyYnVmcHRyOwogCWludCBjaGtzdW07CiAJc3RydWN0IG1zZG9z
ZnNtb3VudCAqcG1wOwogewogCXNpemVfdCBsZW47CiAJdV9pbnQxNl90IGMxLCBjMjsKIAl1X2No
YXIgKm5wOwotCXN0cnVjdCBkaXJlbnQgZGlyYnVmOwogCi0JLyoKLQkgKiBXZSBhbHJlYWR5IGhh
dmUgd2luZW50cnkgaW4gKm5icC4KLQkgKi8KLQlpZiAoIW1ibmFtYnVmX2ZsdXNoKG5icCwgJmRp
cmJ1ZikgfHwgZGlyYnVmLmRfbmFtbGVuID09IDApCi0JCXJldHVybiAtMTsKKwlpZiAoZGlyYnVm
cHRyLT5kX25hbWxlbiA9PSAwKQorCQlyZXR1cm4gKC0xKTsKIAogI2lmZGVmIE1TRE9TRlNfREVC
VUcKLQlwcmludGYoIndpbkNoa05hbWUoKTogdW49JXM6JWQsZF9uYW1lPSVzOiVkXG4iLCB1biwg
dW5sZW4sCi0JCQkJCQkJZGlyYnVmLmRfbmFtZSwKLQkJCQkJCQlkaXJidWYuZF9uYW1sZW4pOwor
CXByaW50Zigid2luQ2hrTmFtZSgpOiB1bj0lczolZCxkX25hbWU9JXM6JWRcbiIsIHVuLCB1bmxl
biwgCisJICAgIGRpcmJ1ZnB0ci0+ZF9uYW1lLCBkaXJidWZwdHItPmRfbmFtbGVuKTsKICNlbmRp
ZgogCiAJLyoKIAkgKiBDb21wYXJlIHRoZSBuYW1lIHBhcnRzCiAJICovCi0JbGVuID0gZGlyYnVm
LmRfbmFtbGVuOworCWxlbiA9IGRpcmJ1ZnB0ci0+ZF9uYW1sZW47CiAJaWYgKHVubGVuICE9IGxl
bikKLQkJcmV0dXJuIC0yOworCQlyZXR1cm4gKC0yKTsKIAotCWZvciAobnAgPSBkaXJidWYuZF9u
YW1lOyB1bmxlbiA+IDAgJiYgbGVuID4gMDspIHsKKwlmb3IgKG5wID0gZGlyYnVmcHRyLT5kX25h
bWU7IHVubGVuID4gMCAmJiBsZW4gPiAwOykgewogCQkvKgogCQkgKiBDb21wYXJpc29uIG11c3Qg
YmUgY2FzZSBpbnNlbnNpdGl2ZSwgYmVjYXVzZSBGQVQgZGlzYWxsb3dzCiAJCSAqIHRvIGxvb2sg
dXAgb3IgY3JlYXRlIGZpbGVzIGluIGNhc2Ugc2Vuc2l0aXZlIGV2ZW4gd2hlbgpAQCAtNjM2LDI0
ICs2MzYsMjQgQEAKIAkJYzEgPSB1bml4MndpbmNocigoY29uc3QgdV9jaGFyICoqKSZucCwgJmxl
biwgTENBU0VfQkFTRSwgcG1wKTsKIAkJYzIgPSB1bml4MndpbmNocigmdW4sICZ1bmxlbiwgTENB
U0VfQkFTRSwgcG1wKTsKIAkJaWYgKGMxICE9IGMyKQotCQkJcmV0dXJuIC0yOworCQkJcmV0dXJu
ICgtMik7CiAJfQotCXJldHVybiBjaGtzdW07CisJcmV0dXJuIChjaGtzdW0pOwogfQogCiAvKgot
ICogQ29udmVydCBXaW45NSBmaWxlbmFtZSB0byBkaXJidWYuCisgKiBDb252ZXJ0IFdpbjk1IGZp
bGVuYW1lIHRvIGRpcmJ1ZnB0ci0+ZF9uYW1lLgogICogUmV0dXJucyB0aGUgY2hlY2tzdW0gb3Ig
LTEgaWYgaW1wb3NzaWJsZQogICovCiBpbnQKLXdpbjJ1bml4Zm4obmJwLCB3ZXAsIGNoa3N1bSwg
cG1wKQotCXN0cnVjdCBtYm5hbWJ1ZiAqbmJwOword2luMnVuaXhmbih3ZXAsIGRpcmJ1ZnB0ciwg
Y2hrc3VtLCBwbXApCiAJc3RydWN0IHdpbmVudHJ5ICp3ZXA7CisJc3RydWN0IGRpcmVudCAqZGly
YnVmcHRyOwogCWludCBjaGtzdW07CiAJc3RydWN0IG1zZG9zZnNtb3VudCAqcG1wOwogeworCWNv
bnN0IHNpemVfdCBkX25hbWxlbiA9IGRpcmJ1ZnB0ci0+ZF9uYW1sZW47IC8qIHNhdmUgZm9yIHJl
dmVyc2UgKi8KIAl1X2ludDhfdCAqY3A7Ci0JdV9pbnQ4X3QgKm5wLCBuYW1lW1dJTl9DSEFSUyAq
IDIgKyAxXTsKIAl1X2ludDE2X3QgY29kZTsKIAlpbnQgaTsKIApAQCAtNjc0LDIyICs2NzQsMTkg
QEAKIAkvKgogCSAqIENvbnZlcnQgdGhlIG5hbWUgcGFydHMKIAkgKi8KLQlucCA9IG5hbWU7CiAJ
Zm9yIChjcCA9IHdlcC0+d2VQYXJ0MSwgaSA9IHNpemVvZih3ZXAtPndlUGFydDEpLzI7IC0taSA+
PSAwOykgewogCQljb2RlID0gKGNwWzFdIDw8IDgpIHwgY3BbMF07CiAJCXN3aXRjaCAoY29kZSkg
ewogCQljYXNlIDA6Ci0JCQkqbnAgPSAnXDAnOwotCQkJbWJuYW1idWZfd3JpdGUobmJwLCBuYW1l
LCAod2VwLT53ZUNudCAmIFdJTl9DTlQpIC0gMSk7Ci0JCQlyZXR1cm4gY2hrc3VtOworCQkJZGly
YnVmcHRyLT5kX25hbWVbZGlyYnVmcHRyLT5kX25hbWxlbl0gPSAnXDAnOworCQkJcmV0dXJuIChj
aGtzdW0pOwogCQljYXNlICcvJzoKLQkJCSpucCA9ICdcMCc7Ci0JCQlyZXR1cm4gLTE7CisJCQlk
aXJidWZwdHItPmRfbmFtZVtkaXJidWZwdHItPmRfbmFtbGVuXSA9ICdcMCc7CisJCQlyZXR1cm4g
KC0xKTsKIAkJZGVmYXVsdDoKLQkJCWNvZGUgPSB3aW4ydW5peGNocihjb2RlLCBwbXApOwotCQkJ
aWYgKGNvZGUgJiAweGZmMDApCi0JCQkJKm5wKysgPSBjb2RlID4+IDg7Ci0JCQkqbnArKyA9IGNv
ZGU7CisJCQljb2RlID0gd2luMnVuaXhjaHIoY29kZSwgZGlyYnVmcHRyLCBwbXApOworCQkJaWYg
KGNvZGUgIT0gMCkKKwkJCQlyZXR1cm4gKC0xKTsKIAkJCWJyZWFrOwogCQl9CiAJCWNwICs9IDI7
CkBAIC02OTgsMTcgKzY5NSwxNSBAQAogCQljb2RlID0gKGNwWzFdIDw8IDgpIHwgY3BbMF07CiAJ
CXN3aXRjaCAoY29kZSkgewogCQljYXNlIDA6Ci0JCQkqbnAgPSAnXDAnOwotCQkJbWJuYW1idWZf
d3JpdGUobmJwLCBuYW1lLCAod2VwLT53ZUNudCAmIFdJTl9DTlQpIC0gMSk7Ci0JCQlyZXR1cm4g
Y2hrc3VtOworCQkJZGlyYnVmcHRyLT5kX25hbWVbZGlyYnVmcHRyLT5kX25hbWxlbl0gPSAnXDAn
OworCQkJcmV0dXJuIChjaGtzdW0pOwogCQljYXNlICcvJzoKLQkJCSpucCA9ICdcMCc7Ci0JCQly
ZXR1cm4gLTE7CisJCQlkaXJidWZwdHItPmRfbmFtZVtkaXJidWZwdHItPmRfbmFtbGVuXSA9ICdc
MCc7CisJCQlyZXR1cm4gKC0xKTsKIAkJZGVmYXVsdDoKLQkJCWNvZGUgPSB3aW4ydW5peGNocihj
b2RlLCBwbXApOwotCQkJaWYgKGNvZGUgJiAweGZmMDApCi0JCQkJKm5wKysgPSBjb2RlID4+IDg7
Ci0JCQkqbnArKyA9IGNvZGU7CisJCQljb2RlID0gd2luMnVuaXhjaHIoY29kZSwgZGlyYnVmcHRy
LCBwbXApOworCQkJaWYgKGNvZGUgIT0gMCkKKwkJCQlyZXR1cm4gKC0xKTsKIAkJCWJyZWFrOwog
CQl9CiAJCWNwICs9IDI7CkBAIC03MTcsMjQgKzcxMiwyOCBAQAogCQljb2RlID0gKGNwWzFdIDw8
IDgpIHwgY3BbMF07CiAJCXN3aXRjaCAoY29kZSkgewogCQljYXNlIDA6Ci0JCQkqbnAgPSAnXDAn
OwotCQkJbWJuYW1idWZfd3JpdGUobmJwLCBuYW1lLCAod2VwLT53ZUNudCAmIFdJTl9DTlQpIC0g
MSk7Ci0JCQlyZXR1cm4gY2hrc3VtOworCQkJZGlyYnVmcHRyLT5kX25hbWVbZGlyYnVmcHRyLT5k
X25hbWxlbl0gPSAnXDAnOworCQkJcmV0dXJuIChjaGtzdW0pOwogCQljYXNlICcvJzoKLQkJCSpu
cCA9ICdcMCc7Ci0JCQlyZXR1cm4gLTE7CisJCQlkaXJidWZwdHItPmRfbmFtZVtkaXJidWZwdHIt
PmRfbmFtbGVuXSA9ICdcMCc7CisJCQlyZXR1cm4gKC0xKTsKIAkJZGVmYXVsdDoKLQkJCWNvZGUg
PSB3aW4ydW5peGNocihjb2RlLCBwbXApOwotCQkJaWYgKGNvZGUgJiAweGZmMDApCi0JCQkJKm5w
KysgPSBjb2RlID4+IDg7Ci0JCQkqbnArKyA9IGNvZGU7CisJCQljb2RlID0gd2luMnVuaXhjaHIo
Y29kZSwgZGlyYnVmcHRyLCBwbXApOworCQkJaWYgKGNvZGUgIT0gMCkKKwkJCQlyZXR1cm4gKC0x
KTsKIAkJCWJyZWFrOwogCQl9CiAJCWNwICs9IDI7CiAJfQotCSpucCA9ICdcMCc7Ci0JbWJuYW1i
dWZfd3JpdGUobmJwLCBuYW1lLCAod2VwLT53ZUNudCAmIFdJTl9DTlQpIC0gMSk7Ci0JcmV0dXJu
IGNoa3N1bTsKKwlkaXJidWZwdHItPmRfbmFtZVtkaXJidWZwdHItPmRfbmFtbGVuXSA9ICdcMCc7
CisKKwkvKiBzd2FwIHRoZSBkaXJidWZwdHItPmRfbmFtZSAqLworCXN0cnJldmVyc2UoZGlyYnVm
cHRyLT5kX25hbWUsIGRpcmJ1ZnB0ci0+ZF9uYW1sZW4pOworCXN0cnJldmVyc2UoZGlyYnVmcHRy
LT5kX25hbWUsIGRpcmJ1ZnB0ci0+ZF9uYW1sZW4gLSBkX25hbWxlbik7CisJc3RycmV2ZXJzZShk
aXJidWZwdHItPmRfbmFtZSArIGRpcmJ1ZnB0ci0+ZF9uYW1sZW4gLSBkX25hbWxlbiwKKwkgICAg
ZF9uYW1sZW4pOworCisJcmV0dXJuIChjaGtzdW0pOwogfQogCiAvKgpAQCAtOTQ5LDEwICs5NDgs
MTAgQEAKIC8qCiAgKiBDb252ZXJ0IFdpbmRvd3MgY2hhciB0byBMb2NhbCBjaGFyCiAgKi8KLXN0
YXRpYyB1X2ludDE2X3QKLXdpbjJ1bml4Y2hyKHVfaW50MTZfdCB3Yywgc3RydWN0IG1zZG9zZnNt
b3VudCAqcG1wKQorc3RhdGljIHNpemVfdAord2luMnVuaXhjaHIodV9pbnQxNl90IHdjLCBzdHJ1
Y3QgZGlyZW50ICpkaXJidWZwdHIsIHN0cnVjdCBtc2Rvc2ZzbW91bnQgKnBtcCkKIHsKLQl1X2No
YXIgKmlucCwgKm91dHAsIGluYnVmWzNdLCBvdXRidWZbM107CisJdV9jaGFyICppbnAsICpvdXRw
LCBpbmJ1ZlszXTsKIAlzaXplX3QgaWxlbiwgb2xlbiwgbGVuOwogCiAJaWYgKHdjID09IDApCkBA
IC05NjMsMzEgKzk2Miw0NCBAQAogCQlpbmJ1ZlsxXSA9ICh1X2NoYXIpd2M7CiAJCWluYnVmWzJd
ID0gJ1wwJzsKIAotCQlpbGVuID0gb2xlbiA9IGxlbiA9IDI7CisJCWlsZW4gPSAyOworCQlvbGVu
ID0gbGVuID0gc2l6ZW9mKGRpcmJ1ZnB0ci0+ZF9uYW1lKSAtIGRpcmJ1ZnB0ci0+ZF9uYW1sZW4g
LSAxOwogCQlpbnAgPSBpbmJ1ZjsKLQkJb3V0cCA9IG91dGJ1ZjsKKwkJb3V0cCA9IGRpcmJ1ZnB0
ci0+ZF9uYW1lICsgZGlyYnVmcHRyLT5kX25hbWxlbjsKKwogCQltc2Rvc2ZzX2ljb252LT5jb252
Y2hyKHBtcC0+cG1fdzJ1LCAoY29uc3QgY2hhciAqKikmaW5wLCAmaWxlbiwKLQkJCQkgICAgIChj
aGFyICoqKSZvdXRwLCAmb2xlbik7Ci0JCWxlbiAtPSBvbGVuOworCQkgICAgKGNoYXIgKiopJm91
dHAsICZvbGVuKTsKIAotCQkvKgotCQkgKiByZXR1cm4gJz8nIGlmIGZhaWxlZCB0byBjb252ZXJ0
Ci0JCSAqLwotCQlpZiAobGVuID09IDApIHsKLQkJCXdjID0gJz8nOwotCQkJcmV0dXJuICh3Yyk7
Ci0JCX0KKwkJZGlyYnVmcHRyLT5kX25hbWxlbiArPSBsZW4gLSBvbGVuOwogCi0JCXdjID0gMDsK
LQkJd2hpbGUobGVuLS0pCi0JCQl3YyB8PSAoKihvdXRwIC0gbGVuIC0gMSkgJiAweGZmKSA8PCAo
bGVuIDw8IDMpOwotCQlyZXR1cm4gKHdjKTsKKwkJaWYgKGlsZW4gIT0gMCkgeworCQkJaWYgKG9s
ZW4gPT0gMCkKKwkJCQlnb3RvIHRvb19sb25nOwkvKiBsb25nZXIgdGhhbiBNQVhOQU1MRU4gKi8K
KwkJCWVsc2UKKwkJCQlnb3RvIGZhaWxlZDsJLyogY29udmVydCBmYWlsZWQgKi8KKwkJfSAKKwor
CQlnb3RvIG9rOwogCX0KIAotCWlmICh3YyAmIDB4ZmYwMCkKLQkJd2MgPSAnPyc7CisJaWYgKHNp
emVvZihkaXJidWZwdHItPmRfbmFtZSkgPD0gZGlyYnVmcHRyLT5kX25hbWxlbiArIDIpCisJCWdv
dG8gdG9vX2xvbmc7CS8qIGxvbmdlciB0aGVuIE1BWE5BTUxFTiAqLworCWVsc2UgaWYgKHdjICYg
MHhmZjAwKQorCQlnb3RvIGZhaWxlZDsJLyogaWxsZWdhbCBjaGFyYWN0ZXI/ICovCiAKLQlyZXR1
cm4gKHdjKTsKKwlkaXJidWZwdHItPmRfbmFtZVtkaXJidWZwdHItPmRfbmFtbGVuKytdID0gKHVf
Y2hhcikod2M+PjgpOworCWRpcmJ1ZnB0ci0+ZF9uYW1lW2RpcmJ1ZnB0ci0+ZF9uYW1sZW4rK10g
PSAodV9jaGFyKXdjOworCWdvdG8gb2s7CisKK29rOgorCXJldHVybiAoMCk7CisKK3Rvb19sb25n
OgorCXJldHVybiAoMSk7CisKK2ZhaWxlZDoKKwlkaXJidWZwdHItPmRfbmFtZVtkaXJidWZwdHIt
PmRfbmFtbGVuKytdID0gJz8nOworCXJldHVybiAoMik7CiB9CiAKIC8qCkBAIC0xMDM0LDczICsx
MDQ2LDE3IEBACiB9CiAKIC8qCi0gKiBJbml0aWFsaXplIHRoZSB0ZW1wb3JhcnkgY29uY2F0ZW5h
dGlvbiBidWZmZXIuCi0gKi8KLXZvaWQKLW1ibmFtYnVmX2luaXQoc3RydWN0IG1ibmFtYnVmICpu
YnApCi17Ci0KLQluYnAtPm5iX2xlbiA9IDA7Ci0JbmJwLT5uYl9sYXN0X2lkID0gLTE7Ci0JbmJw
LT5uYl9idWZbc2l6ZW9mKG5icC0+bmJfYnVmKSAtIDFdID0gJ1wwJzsKLX0KLQotLyoKLSAqIEZp
bGwgb3V0IG91ciBjb25jYXRlbmF0aW9uIGJ1ZmZlciB3aXRoIHRoZSBnaXZlbiBzdWJzdHJpbmcs
IGF0IHRoZSBvZmZzZXQKLSAqIHNwZWNpZmllZCBieSBpdHMgaWQuICBTaW5jZSB0aGlzIGZ1bmN0
aW9uIG11c3QgYmUgY2FsbGVkIHdpdGggaWRzIGluCi0gKiBkZXNjZW5kaW5nIG9yZGVyLCB3ZSB0
YWtlIGFkdmFudGFnZSBvZiB0aGUgZmFjdCB0aGF0IEFTQ0lJIHN1YnN0cmluZ3MgYXJlCi0gKiBl
eGFjdGx5IFdJTl9DSEFSUyBpbiBsZW5ndGguICBGb3Igbm9uLUFTQ0lJIHN1YnN0cmluZ3MsIHdl
IHNoaWZ0IGFsbAotICogcHJldmlvdXMgKGkuZS4gaGlnaGVyIGlkKSBzdWJzdHJpbmdzIHVwd2Fy
ZHMgdG8gbWFrZSByb29tIGZvciB0aGlzIG9uZS4KLSAqIFRoaXMgb25seSBwZW5hbGl6ZXMgcG9y
dGlvbnMgb2Ygc3Vic3RyaW5ncyB0aGF0IGNvbnRhaW4gbW9yZSB0aGFuCi0gKiBXSU5fQ0hBUlMg
Ynl0ZXMgd2hlbiB0aGV5IGFyZSBmaXJzdCBlbmNvdW50ZXJlZC4KKyAqIFJldmVyc2UgYy1zdHJp
bmcgaW4gbGVuZ3RoIG4sIGZvciBleGFtcGxlLCAiMTIzNDUiIC0+ICI1NDMyMSIuCiAgKi8KLXZv
aWQKLW1ibmFtYnVmX3dyaXRlKHN0cnVjdCBtYm5hbWJ1ZiAqbmJwLCBjaGFyICpuYW1lLCBpbnQg
aWQpCitzdGF0aWMgdm9pZAorc3RycmV2ZXJzZShjaGFyICpzdHIsIHNpemVfdCBuKQogewotCWNo
YXIgKnNsb3Q7Ci0Jc2l6ZV90IGNvdW50LCBuZXdsZW47Ci0KLQlLQVNTRVJUKG5icC0+bmJfbGVu
ID09IDAgfHwgaWQgPT0gbmJwLT5uYl9sYXN0X2lkIC0gMSwKLQkgICAgKCJub24tZGVjcmVhc2lu
ZyBpZDogaWQgJWQsIGxhc3QgaWQgJWQiLCBpZCwgbmJwLT5uYl9sYXN0X2lkKSk7Ci0KLQkvKiBX
aWxsIHN0b3JlIHRoaXMgc3Vic3RyaW5nIGluIGEgV0lOX0NIQVJTLWFsaWduZWQgc2xvdC4gKi8K
LQlzbG90ID0gJm5icC0+bmJfYnVmW2lkICogV0lOX0NIQVJTXTsKLQljb3VudCA9IHN0cmxlbihu
YW1lKTsKLQluZXdsZW4gPSBuYnAtPm5iX2xlbiArIGNvdW50OwotCWlmIChuZXdsZW4gPiBXSU5f
TUFYTEVOIHx8IG5ld2xlbiA+IE1BWE5BTUxFTikgewotCQlwcmludGYoIm1zZG9zZnM6IGZpbGUg
bmFtZSBsZW5ndGggJXp1IHRvbyBsYXJnZVxuIiwgbmV3bGVuKTsKLQkJcmV0dXJuOwotCX0KLQot
CS8qIFNoaWZ0IHN1ZmZpeCB1cHdhcmRzIGJ5IHRoZSBhbW91bnQgbGVuZ3RoIGV4Y2VlZHMgV0lO
X0NIQVJTLiAqLwotCWlmIChjb3VudCA+IFdJTl9DSEFSUyAmJiBuYnAtPm5iX2xlbiAhPSAwKQot
CQliY29weShzbG90ICsgV0lOX0NIQVJTLCBzbG90ICsgY291bnQsIG5icC0+bmJfbGVuKTsKLQot
CS8qIENvcHkgaW4gdGhlIHN1YnN0cmluZyB0byBpdHMgc2xvdCBhbmQgdXBkYXRlIGxlbmd0aCBz
byBmYXIuICovCi0JYmNvcHkobmFtZSwgc2xvdCwgY291bnQpOwotCW5icC0+bmJfbGVuID0gbmV3
bGVuOwotCW5icC0+bmJfbGFzdF9pZCA9IGlkOwotfQotCi0vKgotICogVGFrZSB0aGUgY29tcGxl
dGVkIHN0cmluZyBhbmQgdXNlIGl0IHRvIHNldHVwIHRoZSBzdHJ1Y3QgZGlyZW50LgotICogQmUg
c3VyZSB0byBhbHdheXMgbnVsLXRlcm1pbmF0ZSB0aGUgZF9uYW1lIGFuZCB0aGVuIGNvcHkgdGhl
IHN0cmluZwotICogZnJvbSBvdXIgYnVmZmVyLiAgTm90ZSB0aGF0IHRoaXMgZnVuY3Rpb24gYXNz
dW1lcyB0aGUgZnVsbCBzdHJpbmcgaGFzCi0gKiBiZWVuIHJlYXNzZW1ibGVkIGluIHRoZSBidWZm
ZXIuICBJZiBpdCdzIGNhbGxlZCBiZWZvcmUgYWxsIHN1YnN0cmluZ3MKLSAqIGhhdmUgYmVlbiB3
cml0dGVuIHZpYSBtYm5hbWJ1Zl93cml0ZSgpLCB0aGUgcmVzdWx0IHdpbGwgYmUgaW5jb3JyZWN0
LgotICovCi1jaGFyICoKLW1ibmFtYnVmX2ZsdXNoKHN0cnVjdCBtYm5hbWJ1ZiAqbmJwLCBzdHJ1
Y3QgZGlyZW50ICpkcCkKLXsKLQotCWlmIChuYnAtPm5iX2xlbiA+IHNpemVvZihkcC0+ZF9uYW1l
KSAtIDEpIHsKLQkJbWJuYW1idWZfaW5pdChuYnApOwotCQlyZXR1cm4gKE5VTEwpOwotCX0KLQli
Y29weSgmbmJwLT5uYl9idWZbMF0sIGRwLT5kX25hbWUsIG5icC0+bmJfbGVuKTsKLQlkcC0+ZF9u
YW1lW25icC0+bmJfbGVuXSA9ICdcMCc7Ci0JZHAtPmRfbmFtbGVuID0gbmJwLT5uYl9sZW47CisJ
c2l6ZV90IGk7CisJY2hhciBjOwogCi0JbWJuYW1idWZfaW5pdChuYnApOwotCXJldHVybiAoZHAt
PmRfbmFtZSk7CisJZm9yIChpID0gMDsgaSA8IG4vMjsgKytpKSB7CisJCWMgPSBzdHJbaV07CisJ
CXN0cltpXSA9IHN0cltuIC0gaSAtIDFdOworCQlzdHJbbiAtIGkgLSAxXSA9IGM7CisJfQogfQpk
aWZmIC11ck4gbXNkb3Nmcy5vcmlnL21zZG9zZnNfbG9va3VwLmMgbXNkb3Nmcy9tc2Rvc2ZzX2xv
b2t1cC5jCi0tLSBtc2Rvc2ZzLm9yaWcvbXNkb3Nmc19sb29rdXAuYwkyMDA3LTA5LTAxIDA2OjI5
OjU1LjAwMDAwMDAwMCArMDgwMAorKysgbXNkb3Nmcy9tc2Rvc2ZzX2xvb2t1cC5jCTIwMDctMDkt
MDEgMjE6MzU6MDAuMDAwMDAwMDAwICswODAwCkBAIC01NCw2ICs1NCw3IEBACiAjaW5jbHVkZSA8
c3lzL21vdW50Lmg+CiAjaW5jbHVkZSA8c3lzL25hbWVpLmg+CiAjaW5jbHVkZSA8c3lzL3Zub2Rl
Lmg+CisjaW5jbHVkZSA8c3lzL2RpcmVudC5oPgogCiAjaW5jbHVkZSA8ZnMvbXNkb3Nmcy9icGIu
aD4KICNpbmNsdWRlIDxmcy9tc2Rvc2ZzL2RpcmVudHJ5Lmg+CkBAIC04NCw3ICs4NSw2IEBACiAJ
CXN0cnVjdCBjb21wb25lbnRuYW1lICphX2NucDsKIAl9ICovICphcDsKIHsKLQlzdHJ1Y3QgbWJu
YW1idWYgbmI7CiAJc3RydWN0IHZub2RlICp2ZHAgPSBhcC0+YV9kdnA7CiAJc3RydWN0IHZub2Rl
ICoqdnBwID0gYXAtPmFfdnBwOwogCXN0cnVjdCBjb21wb25lbnRuYW1lICpjbnAgPSBhcC0+YV9j
bnA7CkBAIC0xMDQsNiArMTA0LDcgQEAKIAlzdHJ1Y3QgZGVub2RlICp0ZHA7CiAJc3RydWN0IG1z
ZG9zZnNtb3VudCAqcG1wOwogCXN0cnVjdCBidWYgKmJwID0gMDsKKwlzdHJ1Y3QgZGlyZW50IG5h
bWVidWY7CiAJc3RydWN0IGRpcmVudHJ5ICpkZXAgPSBOVUxMOwogCXVfY2hhciBkb3NmaWxlbmFt
ZVsxMl07CiAJaW50IGZsYWdzID0gY25wLT5jbl9mbGFnczsKQEAgLTE4Niw3ICsxODcsNyBAQAog
CSAqIGJ5IGNucC0+Y25fbmFtZXB0ci4KIAkgKi8KIAl0ZHAgPSBOVUxMOwotCW1ibmFtYnVmX2lu
aXQoJm5iKTsKKwluYW1lYnVmLmRfbmFtbGVuID0gMDsKIAkvKgogCSAqIFRoZSBvdXRlciBsb29w
IHJhbmdlcyBvdmVyIHRoZSBjbHVzdGVycyB0aGF0IG1ha2UgdXAgdGhlCiAJICogZGlyZWN0b3J5
LiAgTm90ZSB0aGF0IHRoZSByb290IGRpcmVjdG9yeSBpcyBkaWZmZXJlbnQgZnJvbSBhbGwKQEAg
LTIyNiw3ICsyMjcsNyBAQAogCQkJCSAqIERyb3AgbWVtb3J5IG9mIHByZXZpb3VzIGxvbmcgbWF0
Y2hlcwogCQkJCSAqLwogCQkJCWNoa3N1bSA9IC0xOwotCQkJCW1ibmFtYnVmX2luaXQoJm5iKTsK
KwkJCQluYW1lYnVmLmRfbmFtbGVuID0gMDsKIAogCQkJCWlmIChzbG90Y291bnQgPCB3aW5jbnQp
IHsKIAkJCQkJc2xvdGNvdW50Kys7CkBAIC0yNTEsMTYgKzI1MiwxNyBAQAogCQkJCQlpZiAocG1w
LT5wbV9mbGFncyAmIE1TRE9TRlNNTlRfU0hPUlROQU1FKQogCQkJCQkJY29udGludWU7CiAKLQkJ
CQkJY2hrc3VtID0gd2luMnVuaXhmbigmbmIsCi0JCQkJCSAgICAoc3RydWN0IHdpbmVudHJ5ICop
ZGVwLCBjaGtzdW0sCi0JCQkJCSAgICBwbXApOworCQkJCQljaGtzdW0gPSB3aW4ydW5peGZuKAor
CQkJCQkgICAgKHN0cnVjdCB3aW5lbnRyeSAqKWRlcCwgJm5hbWVidWYsCisJCQkJCSAgICBjaGtz
dW0sIHBtcCk7CiAJCQkJCWNvbnRpbnVlOwogCQkJCX0KIAotCQkJCWNoa3N1bSA9IHdpbkNoa05h
bWUoJm5iLAorCQkJCWNoa3N1bSA9IHdpbkNoa05hbWUoCiAJCQkJICAgIChjb25zdCB1X2NoYXIg
KiljbnAtPmNuX25hbWVwdHIsIHVubGVuLAotCQkJCSAgICBjaGtzdW0sIHBtcCk7CisJCQkJICAg
ICZuYW1lYnVmLCBjaGtzdW0sIHBtcCk7CiAJCQkJaWYgKGNoa3N1bSA9PSAtMikgeworCQkJCQlu
YW1lYnVmLmRfbmFtbGVuID0gMDsKIAkJCQkJY2hrc3VtID0gLTE7CiAJCQkJCWNvbnRpbnVlOwog
CQkJCX0KZGlmZiAtdXJOIG1zZG9zZnMub3JpZy9tc2Rvc2ZzX3Zub3BzLmMgbXNkb3Nmcy9tc2Rv
c2ZzX3Zub3BzLmMKLS0tIG1zZG9zZnMub3JpZy9tc2Rvc2ZzX3Zub3BzLmMJMjAwNy0wOS0wMSAw
NjoyOTo1NS4wMDAwMDAwMDAgKzA4MDAKKysrIG1zZG9zZnMvbXNkb3Nmc192bm9wcy5jCTIwMDct
MDktMDEgMjE6MzA6NDAuMDAwMDAwMDAwICswODAwCkBAIC0xNTEwLDcgKzE1MTAsNiBAQAogCQl1
X2xvbmcgKiphX2Nvb2tpZXM7CiAJfSAqLyAqYXA7CiB7Ci0Jc3RydWN0IG1ibmFtYnVmIG5iOwog
CWludCBlcnJvciA9IDA7CiAJaW50IGRpZmY7CiAJbG9uZyBuOwpAQCAtMTU0OSw2ICsxNTQ4LDcg
QEAKIAkvKgogCSAqIFRvIGJlIHNhZmUsIGluaXRpYWxpemUgZGlyYnVmCiAJICovCisJZGlyYnVm
LmRfbmFtbGVuID0gMDsKIAliemVybyhkaXJidWYuZF9uYW1lLCBzaXplb2YoZGlyYnVmLmRfbmFt
ZSkpOwogCiAJLyoKQEAgLTE2MzAsNyArMTYzMCw3IEBACiAJCX0KIAl9CiAKLQltYm5hbWJ1Zl9p
bml0KCZuYik7CisJZGlyYnVmLmRfbmFtbGVuID0gMDsKIAlvZmYgPSBvZmZzZXQ7CiAJd2hpbGUg
KHVpby0+dWlvX3Jlc2lkID4gMCkgewogCQlsYm4gPSBkZV9jbHVzdGVyKHBtcCwgb2Zmc2V0IC0g
Ymlhcyk7CkBAIC0xNjc3LDcgKzE2NzcsNyBAQAogCQkJICovCiAJCQlpZiAoZGVudHAtPmRlTmFt
ZVswXSA9PSBTTE9UX0RFTEVURUQpIHsKIAkJCQljaGtzdW0gPSAtMTsKLQkJCQltYm5hbWJ1Zl9p
bml0KCZuYik7CisJCQkJZGlyYnVmLmRfbmFtbGVuID0gMDsKIAkJCQljb250aW51ZTsKIAkJCX0K
IApAQCAtMTY4Nyw4ICsxNjg3LDggQEAKIAkJCWlmIChkZW50cC0+ZGVBdHRyaWJ1dGVzID09IEFU
VFJfV0lOOTUpIHsKIAkJCQlpZiAocG1wLT5wbV9mbGFncyAmIE1TRE9TRlNNTlRfU0hPUlROQU1F
KQogCQkJCQljb250aW51ZTsKLQkJCQljaGtzdW0gPSB3aW4ydW5peGZuKCZuYiwKLQkJCQkgICAg
KHN0cnVjdCB3aW5lbnRyeSAqKWRlbnRwLCBjaGtzdW0sIHBtcCk7CisJCQkJY2hrc3VtID0gd2lu
MnVuaXhmbigoc3RydWN0IHdpbmVudHJ5ICopZGVudHAsCisJCQkJICAgICZkaXJidWYsIGNoa3N1
bSwgcG1wKTsKIAkJCQljb250aW51ZTsKIAkJCX0KIApAQCAtMTY5Nyw3ICsxNjk3LDcgQEAKIAkJ
CSAqLwogCQkJaWYgKGRlbnRwLT5kZUF0dHJpYnV0ZXMgJiBBVFRSX1ZPTFVNRSkgewogCQkJCWNo
a3N1bSA9IC0xOwotCQkJCW1ibmFtYnVmX2luaXQoJm5iKTsKKwkJCQlkaXJidWYuZF9uYW1sZW4g
PSAwOwogCQkJCWNvbnRpbnVlOwogCQkJfQogCQkJLyoKQEAgLTE3MzksOSArMTczOSw4IEBACiAJ
CQkJCSgocG1wLT5wbV9mbGFncyAmIE1TRE9TRlNNTlRfU0hPUlROQU1FKSA/CiAJCQkJCShMQ0FT
RV9CQVNFIHwgTENBU0VfRVhUKSA6IDApLAogCQkJCSAgICBwbXApOwotCQkJCW1ibmFtYnVmX2lu
aXQoJm5iKTsKLQkJCX0gZWxzZQotCQkJCW1ibmFtYnVmX2ZsdXNoKCZuYiwgJmRpcmJ1Zik7CisJ
CQl9IAorCiAJCQljaGtzdW0gPSAtMTsKIAkJCWRpcmJ1Zi5kX3JlY2xlbiA9IEdFTkVSSUNfRElS
U0laKCZkaXJidWYpOwogCQkJaWYgKHVpby0+dWlvX3Jlc2lkIDwgZGlyYnVmLmRfcmVjbGVuKSB7
CkBAIC0xNzYxLDYgKzE3NjAsNyBAQAogCQkJCX0KIAkJCX0KIAkJCW9mZiA9IG9mZnNldCArIHNp
emVvZihzdHJ1Y3QgZGlyZW50cnkpOworCQkJZGlyYnVmLmRfbmFtbGVuID0gMDsKIAkJfQogCQli
cmVsc2UoYnApOwogCX0K
------=_Part_864_14572580.1188654788867--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?6a7033710709010653i2e43f517y953885b67160c1cd>