Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 30 Aug 2007 23:35:59 +0800
From:      "Tz-Huan Huang" <tzhuan@csie.org>
To:        "Bruce Evans" <brde@optusnet.com.au>
Cc:        bugs@freebsd.org, fs@freebsd.org
Subject:   Re: msdosfs not MPSAFE
Message-ID:  <6a7033710708300835n5ac95063o6331ede5fcc80662@mail.gmail.com>
In-Reply-To: <20070814154812.J24186@besplex.bde.org>
References:  <20070712084115.GA2200@deviant.kiev.zoral.com.ua> <20070716195556.P12807@besplex.bde.org> <20070721063434.GI2200@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>

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

hi,

I have a patch that remove the global variables nambuf_ptr, nambuf_len and
nambuf_last_id entirely. It should be applied on recent 7-current. Please give
it a try, thanks a lot.

http://w.csie.org/~tzhuan/freebsd/msdosfs.diff

Tz-Huan

2007/8/14, Bruce Evans <brde@optusnet.com.au>:
> On Fri, 10 Aug 2007, Kostik Belousov wrote:
>
> > On Fri, Aug 10, 2007 at 01:54:48PM +1000, Bruce Evans wrote:
> >> I wrote yet another patch, with allocation on the stack so that no locking
> >> is required.  This is simpler and doesn't require any new functions.
> >> Unfortunately, it is larger because it changes the interfaces for most
> >> functions.  The interface changes are routine, so this is probably better.
> >> Note that 'struct dirent's are already allocated on the stack.  This
> >> patch adds allocation of 'struct mbnambuf's which are slightly smaller
> >> (~256 bytes).  I think this is just small enough for stack allocation.
> >
> > I agree that this is the best approach. The size of the on-stack
> > structure still make me worry, although ~270 bytes seems to be not too
> > large for 3-pages stack.
>
> Stack growth seems to be nowhere near a problem.  With the extra ~270
> bytes.  ls -lR on i386 uses less than a 1-page stack (about 3.5K,
> including 0x270 bytes for the pcb).  I think the maximum stack depth
> is attained when a debugger trap traps a fast interrupt interrupting
> a page fault in an i/o routine called from msdosfs_readdir().  Unlike
> in RELENG_4, nested interrupts can't occur, so a 1-page stack should
> be enough for everything on i386 (but of course isn't quite enough).
> I didn't try hard to attain the maximum depth, and just looked at where
> the stack got to after running a large ls -lR for a while.  msdosfs_readdir()
> now allocates 0x2b0 bytes on the stack using "subl $0x2b0,%esp" and
> that is now the largest single allocation.  This is without INVARIANTS
> etc.
>
> Bruce
> _______________________________________________
> freebsd-fs@freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-fs
> To unsubscribe, send any mail to "freebsd-fs-unsubscribe@freebsd.org"
>

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

ZGlmZiAtcnVOIG1zZG9zZnMub3JpZy9kaXJlbnRyeS5oIG1zZG9zZnMvZGlyZW50cnkuaAotLS0g
bXNkb3Nmcy5vcmlnL2RpcmVudHJ5LmgJMjAwNi0xMC0yNCAxOToxNDowNS4wMDAwMDAwMDAgKzA4
MDAKKysrIG1zZG9zZnMvZGlyZW50cnkuaAkyMDA3LTA4LTMwIDE1OjE0OjA0LjAwMDAwMDAwMCAr
MDgwMApAQCAtMTM2LDE4ICsxMzYsMTUgQEAKIHN0cnVjdCBkaXJlbnQ7CiBzdHJ1Y3QgbXNkb3Nm
c21vdW50OwogCi1jaGFyCSptYm5hbWJ1Zl9mbHVzaChzdHJ1Y3QgZGlyZW50ICpkcCk7Ci12b2lk
CW1ibmFtYnVmX2luaXQodm9pZCk7Ci12b2lkCW1ibmFtYnVmX3dyaXRlKGNoYXIgKm5hbWUsIGlu
dCBpZCk7CiBpbnQJZG9zMnVuaXhmbih1X2NoYXIgZG5bMTFdLCB1X2NoYXIgKnVuLCBpbnQgbG93
ZXIsCiAJICAgIHN0cnVjdCBtc2Rvc2ZzbW91bnQgKnBtcCk7CiBpbnQJdW5peDJkb3Nmbihjb25z
dCB1X2NoYXIgKnVuLCB1X2NoYXIgZG5bMTJdLCBzaXplX3QgdW5sZW4sIHVfaW50IGdlbiwKIAkg
ICAgc3RydWN0IG1zZG9zZnNtb3VudCAqcG1wKTsKIGludAl1bml4MndpbmZuKGNvbnN0IHVfY2hh
ciAqdW4sIHNpemVfdCB1bmxlbiwgc3RydWN0IHdpbmVudHJ5ICp3ZXAsIGludCBjbnQsCiAJICAg
IGludCBjaGtzdW0sIHN0cnVjdCBtc2Rvc2ZzbW91bnQgKnBtcCk7Ci1pbnQJd2luQ2hrTmFtZShj
b25zdCB1X2NoYXIgKnVuLCBzaXplX3QgdW5sZW4sIGludCBjaGtzdW0sCitpbnQJd2luQ2hrTmFt
ZShjb25zdCB1X2NoYXIgKnVuLCBzaXplX3QgdW5sZW4sIHN0cnVjdCBkaXJlbnQgKmRpcmJ1ZnB0
ciwgaW50IGNoa3N1bSwKIAkgICAgc3RydWN0IG1zZG9zZnNtb3VudCAqcG1wKTsKLWludAl3aW4y
dW5peGZuKHN0cnVjdCB3aW5lbnRyeSAqd2VwLCBpbnQgY2hrc3VtLCBzdHJ1Y3QgbXNkb3Nmc21v
dW50ICpwbXApOworaW50CXdpbjJ1bml4Zm4oc3RydWN0IHdpbmVudHJ5ICp3ZXAsIHN0cnVjdCBk
aXJlbnQgKmRpcmJ1ZnB0ciwgaW50IGNoa3N1bSwgc3RydWN0IG1zZG9zZnNtb3VudCAqcG1wKTsK
IHVfaW50OF90IHdpbkNoa3N1bShzdHJ1Y3QgZGlyZW50cnkgKmRlcCk7CiBpbnQJd2luU2xvdENu
dChjb25zdCB1X2NoYXIgKnVuLCBzaXplX3QgdW5sZW4sIHN0cnVjdCBtc2Rvc2ZzbW91bnQgKnBt
cCk7CiBzaXplX3QJd2luTGVuRml4dXAoY29uc3QgdV9jaGFyICp1biwgc2l6ZV90IHVubGVuKTsK
ZGlmZiAtcnVOIG1zZG9zZnMub3JpZy9tc2Rvc2ZzX2NvbnYuYyBtc2Rvc2ZzL21zZG9zZnNfY29u
di5jCi0tLSBtc2Rvc2ZzLm9yaWcvbXNkb3Nmc19jb252LmMJMjAwNy0wOC0zMCAxMTozMzoyMi4w
MDAwMDAwMDAgKzA4MDAKKysrIG1zZG9zZnMvbXNkb3Nmc19jb252LmMJMjAwNy0wOC0zMCAxNjo1
NzoxNS4wMDAwMDAwMDAgKzA4MDAKQEAgLTY0LDEzICs2NCw5IEBACiBzdGF0aWMgaW50IG1ic2Fk
anBvcyhjb25zdCBjaGFyICoqLCBzaXplX3QsIHNpemVfdCwgaW50LCBpbnQsIHZvaWQgKmhhbmRs
ZSk7CiBzdGF0aWMgdV9pbnQxNl90IGRvczJ1bml4Y2hyKGNvbnN0IHVfY2hhciAqKiwgc2l6ZV90
ICosIGludCwgc3RydWN0IG1zZG9zZnNtb3VudCAqKTsKIHN0YXRpYyB1X2ludDE2X3QgdW5peDJk
b3NjaHIoY29uc3QgdV9jaGFyICoqLCBzaXplX3QgKiwgc3RydWN0IG1zZG9zZnNtb3VudCAqKTsK
LXN0YXRpYyB1X2ludDE2X3Qgd2luMnVuaXhjaHIodV9pbnQxNl90LCBzdHJ1Y3QgbXNkb3Nmc21v
dW50ICopOworc3RhdGljIHNpemVfdCB3aW4ydW5peGNocih1X2ludDE2X3Qgd2MsIHN0cnVjdCBk
aXJlbnQgKmRpcmJ1ZnB0ciwgc3RydWN0IG1zZG9zZnNtb3VudCAqcG1wKTsKIHN0YXRpYyB1X2lu
dDE2X3QgdW5peDJ3aW5jaHIoY29uc3QgdV9jaGFyICoqLCBzaXplX3QgKiwgaW50LCBzdHJ1Y3Qg
bXNkb3Nmc21vdW50ICopOwogCi1zdGF0aWMgY2hhcgkqbmFtYnVmX3B0cjsKLXN0YXRpYyBzaXpl
X3QJbmFtYnVmX2xlbjsKLXN0YXRpYyBpbnQJbmFtYnVmX2xhc3RfaWQ7Ci0KIC8qCiAgKiAwIC0g
Y2hhcmFjdGVyIGRpc2FsbG93ZWQgaW4gbG9uZyBmaWxlIG5hbWUuCiAgKiAxIC0gY2hhcmFjdGVy
IHNob3VsZCBiZSByZXBsYWNlZCBieSAnXycgaW4gRE9TIGZpbGUgbmFtZSwgCkBAIC0yNDksNiAr
MjQ1LDExIEBACiAJaW50IHRoaXNsb25nID0gMDsKIAl1X2ludDE2X3QgYzsKIAorI2lmZGVmIE1T
RE9TRlNfREVCVUcKKwl1X2NoYXIgKnVuX3B0ciA9IHVuOworCXByaW50ZigiZG9zMnVuaXhmbigp
OiBkbiAlcyIsIGRuKTsKKyNlbmRpZiAKKwogCS8qCiAJICogSWYgZmlyc3QgY2hhciBvZiB0aGUg
ZmlsZW5hbWUgaXMgU0xPVF9FNSAoMHgwNSksIHRoZW4gdGhlIHJlYWwKIAkgKiBmaXJzdCBjaGFy
IG9mIHRoZSBmaWxlbmFtZSBzaG91bGQgYmUgMHhlNS4gQnV0LCB0aGV5IGNvdWxkbid0CkBAIC0y
OTMsNiArMjk0LDEwIEBACiAJfQogCSp1bisrID0gMDsKIAorI2lmZGVmIE1TRE9TRlNfREVCVUcK
KwlwcmludGYoIiAtPiB1biAlcywgc2l6ZSAlZFxuIiwgdW5fcHRyLCB0aGlzbG9uZyk7CisjZW5k
aWYgCisKIAlyZXR1cm4gKHRoaXNsb25nKTsKIH0KIApAQCAtNjAxLDM3ICs2MDYsMzggQEAKICAq
IFJldHVybnMgdGhlIGNoZWNrc3VtIG9yIC0xIGlmIG5vIG1hdGNoCiAgKi8KIGludAotd2luQ2hr
TmFtZSh1biwgdW5sZW4sIGNoa3N1bSwgcG1wKQord2luQ2hrTmFtZSh1biwgdW5sZW4sIGRpcmJ1
ZnB0ciwgY2hrc3VtLCBwbXApCiAJY29uc3QgdV9jaGFyICp1bjsKIAlzaXplX3QgdW5sZW47CisJ
c3RydWN0IGRpcmVudCAqZGlyYnVmcHRyOwogCWludCBjaGtzdW07CiAJc3RydWN0IG1zZG9zZnNt
b3VudCAqcG1wOwogewogCXNpemVfdCBsZW47CiAJdV9pbnQxNl90IGMxLCBjMjsKIAl1X2NoYXIg
Km5wOwotCXN0cnVjdCBkaXJlbnQgZGlyYnVmOwogCi0JLyoKLQkgKiBXZSBhbHJlYWQgaGF2ZSB3
aW5lbnRyeSBpbiBtYm5hbWJ1ZgotCSAqLwotCWlmICghbWJuYW1idWZfZmx1c2goJmRpcmJ1Zikg
fHwgIWRpcmJ1Zi5kX25hbWxlbikKKwlpZiAoIWRpcmJ1ZnB0ci0+ZF9uYW1sZW4pCiAJCXJldHVy
biAtMTsKIAogI2lmZGVmIE1TRE9TRlNfREVCVUcKLQlwcmludGYoIndpbkNoa05hbWUoKTogdW49
JXM6JWQsZF9uYW1lPSVzOiVkXG4iLCB1biwgdW5sZW4sCi0JCQkJCQkJZGlyYnVmLmRfbmFtZSwK
LQkJCQkJCQlkaXJidWYuZF9uYW1sZW4pOworCXByaW50Zigid2luQ2hrTmFtZSgpOiB1bj0weCIp
OworCWZvciAoY29uc3QgdV9jaGFyICpjID0gdW47ICpjOyArK2MpCisJCXByaW50ZigiJTAyeCIs
ICh1bnNpZ25lZCBjaGFyKSpjKTsKKwlwcmludGYoIjolZCwgZF9uYW1lPTB4IiwgdW5sZW4pOwor
CWZvciAoY2hhciAqYyA9IGRpcmJ1ZnB0ci0+ZF9uYW1lOyAqYzsgKytjKQorCQlwcmludGYoIiUw
MngiLCAodW5zaWduZWQgY2hhcikqYyk7CisJcHJpbnRmKCI6JWRcbiIsIGRpcmJ1ZnB0ci0+ZF9u
YW1sZW4pOwogI2VuZGlmCiAKIAkvKgogCSAqIENvbXBhcmUgdGhlIG5hbWUgcGFydHMKIAkgKi8K
LQlsZW4gPSBkaXJidWYuZF9uYW1sZW47CisJbGVuID0gZGlyYnVmcHRyLT5kX25hbWxlbjsKIAlp
ZiAodW5sZW4gIT0gbGVuKQogCQlyZXR1cm4gLTI7CiAKLQlmb3IgKG5wID0gZGlyYnVmLmRfbmFt
ZTsgdW5sZW4gPiAwICYmIGxlbiA+IDA7KSB7CisJZm9yIChucCA9IGRpcmJ1ZnB0ci0+ZF9uYW1l
OyB1bmxlbiA+IDAgJiYgbGVuID4gMDspIHsKIAkJLyoKIAkJICogQ29tcGFyaXNvbiBtdXN0IGJl
IGNhc2UgaW5zZW5zaXRpdmUsIGJlY2F1c2UgRkFUIGRpc2FsbG93cwogCQkgKiB0byBsb29rIHVw
IG9yIGNyZWF0ZSBmaWxlcyBpbiBjYXNlIHNlbnNpdGl2ZSBldmVuIHdoZW4KQEAgLTY0NiwxOSAr
NjUyLDM2IEBACiB9CiAKIC8qCi0gKiBDb252ZXJ0IFdpbjk1IGZpbGVuYW1lIHRvIGRpcmJ1Zi4K
KyAqIFJldmVyc2UgQy1TdHJpbmcKKyAqIGZvciBleGFtcGxlLCAxMjM0NSAtPiA1NDMyMQorICov
CitzdGF0aWMgdm9pZAorc3RycmV2ZXJzZShjaGFyICpzdHIsIHNpemVfdCBuKQoreworCWNoYXIg
YzsKKwlzaXplX3QgaTsKKwlmb3IgKGkgPSAwOyBpIDwgbi8yOyArK2kpIHsKKwkJYyA9IHN0cltp
XTsKKwkJc3RyW2ldID0gc3RyW24taS0xXTsKKwkJc3RyW24taS0xXSA9IGM7CisJfQorfQorCisv
KgorICogQ29udmVydCBXaW45NSBmaWxlbmFtZSB0byBkaXJidWYgKCpkaXJidWZwdHIpLgogICog
UmV0dXJucyB0aGUgY2hlY2tzdW0gb3IgLTEgaWYgaW1wb3NzaWJsZQogICovCiBpbnQKLXdpbjJ1
bml4Zm4od2VwLCBjaGtzdW0sIHBtcCkKK3dpbjJ1bml4Zm4od2VwLCBkaXJidWZwdHIsIGNoa3N1
bSwgcG1wKQogCXN0cnVjdCB3aW5lbnRyeSAqd2VwOworCXN0cnVjdCBkaXJlbnQgKmRpcmJ1ZnB0
cjsKIAlpbnQgY2hrc3VtOwogCXN0cnVjdCBtc2Rvc2ZzbW91bnQgKnBtcDsKIHsKIAl1X2ludDhf
dCAqY3A7Ci0JdV9pbnQ4X3QgKm5wLCBuYW1lW1dJTl9DSEFSUyAqIDIgKyAxXTsKIAl1X2ludDE2
X3QgY29kZTsKIAlpbnQgaTsKKwljb25zdCBzaXplX3QgZF9uYW1sZW4gPSBkaXJidWZwdHItPmRf
bmFtbGVuOyAvKiBzYXZlIGZvciByZXZlcnNlICovCiAKIAlpZiAoKHdlcC0+d2VDbnQmV0lOX0NO
VCkgPiBob3dtYW55KFdJTl9NQVhMRU4sIFdJTl9DSEFSUykKIAkgICAgfHwgISh3ZXAtPndlQ250
JldJTl9DTlQpKQpAQCAtNjc3LDIyICs3MDAsMTggQEAKIAkvKgogCSAqIENvbnZlcnQgdGhlIG5h
bWUgcGFydHMKIAkgKi8KLQlucCA9IG5hbWU7CiAJZm9yIChjcCA9IHdlcC0+d2VQYXJ0MSwgaSA9
IHNpemVvZih3ZXAtPndlUGFydDEpLzI7IC0taSA+PSAwOykgewogCQljb2RlID0gKGNwWzFdIDw8
IDgpIHwgY3BbMF07CiAJCXN3aXRjaCAoY29kZSkgewogCQljYXNlIDA6Ci0JCQkqbnAgPSAnXDAn
OwotCQkJbWJuYW1idWZfd3JpdGUobmFtZSwgKHdlcC0+d2VDbnQgJiBXSU5fQ05UKSAtIDEpOwor
CQkJZGlyYnVmcHRyLT5kX25hbWVbZGlyYnVmcHRyLT5kX25hbWxlbl0gPSAnXDAnOwogCQkJcmV0
dXJuIGNoa3N1bTsKIAkJY2FzZSAnLyc6Ci0JCQkqbnAgPSAnXDAnOworCQkJZGlyYnVmcHRyLT5k
X25hbWVbZGlyYnVmcHRyLT5kX25hbWxlbl0gPSAnXDAnOwogCQkJcmV0dXJuIC0xOwogCQlkZWZh
dWx0OgotCQkJY29kZSA9IHdpbjJ1bml4Y2hyKGNvZGUsIHBtcCk7Ci0JCQlpZiAoY29kZSAmIDB4
ZmYwMCkKLQkJCQkqbnArKyA9IGNvZGUgPj4gODsKLQkJCSpucCsrID0gY29kZTsKKwkJCWNvZGUg
PSB3aW4ydW5peGNocihjb2RlLCBkaXJidWZwdHIsIHBtcCk7CisJCQlpZiAoY29kZSkgcmV0dXJu
IC0xOwogCQkJYnJlYWs7CiAJCX0KIAkJY3AgKz0gMjsKQEAgLTcwMSwxNyArNzIwLDE0IEBACiAJ
CWNvZGUgPSAoY3BbMV0gPDwgOCkgfCBjcFswXTsKIAkJc3dpdGNoIChjb2RlKSB7CiAJCWNhc2Ug
MDoKLQkJCSpucCA9ICdcMCc7Ci0JCQltYm5hbWJ1Zl93cml0ZShuYW1lLCAod2VwLT53ZUNudCAm
IFdJTl9DTlQpIC0gMSk7CisJCQlkaXJidWZwdHItPmRfbmFtZVtkaXJidWZwdHItPmRfbmFtbGVu
XSA9ICdcMCc7CiAJCQlyZXR1cm4gY2hrc3VtOwogCQljYXNlICcvJzoKLQkJCSpucCA9ICdcMCc7
CisJCQlkaXJidWZwdHItPmRfbmFtZVtkaXJidWZwdHItPmRfbmFtbGVuXSA9ICdcMCc7CiAJCQly
ZXR1cm4gLTE7CiAJCWRlZmF1bHQ6Ci0JCQljb2RlID0gd2luMnVuaXhjaHIoY29kZSwgcG1wKTsK
LQkJCWlmIChjb2RlICYgMHhmZjAwKQotCQkJCSpucCsrID0gY29kZSA+PiA4OwotCQkJKm5wKysg
PSBjb2RlOworCQkJY29kZSA9IHdpbjJ1bml4Y2hyKGNvZGUsIGRpcmJ1ZnB0ciwgcG1wKTsKKwkJ
CWlmIChjb2RlKSByZXR1cm4gLTE7CiAJCQlicmVhazsKIAkJfQogCQljcCArPSAyOwpAQCAtNzIw
LDIzICs3MzYsMjUgQEAKIAkJY29kZSA9IChjcFsxXSA8PCA4KSB8IGNwWzBdOwogCQlzd2l0Y2gg
KGNvZGUpIHsKIAkJY2FzZSAwOgotCQkJKm5wID0gJ1wwJzsKLQkJCW1ibmFtYnVmX3dyaXRlKG5h
bWUsICh3ZXAtPndlQ250ICYgV0lOX0NOVCkgLSAxKTsKKwkJCWRpcmJ1ZnB0ci0+ZF9uYW1lW2Rp
cmJ1ZnB0ci0+ZF9uYW1sZW5dID0gJ1wwJzsKIAkJCXJldHVybiBjaGtzdW07CiAJCWNhc2UgJy8n
OgotCQkJKm5wID0gJ1wwJzsKKwkJCWRpcmJ1ZnB0ci0+ZF9uYW1lW2RpcmJ1ZnB0ci0+ZF9uYW1s
ZW5dID0gJ1wwJzsKIAkJCXJldHVybiAtMTsKIAkJZGVmYXVsdDoKLQkJCWNvZGUgPSB3aW4ydW5p
eGNocihjb2RlLCBwbXApOwotCQkJaWYgKGNvZGUgJiAweGZmMDApCi0JCQkJKm5wKysgPSBjb2Rl
ID4+IDg7Ci0JCQkqbnArKyA9IGNvZGU7CisJCQljb2RlID0gd2luMnVuaXhjaHIoY29kZSwgZGly
YnVmcHRyLCBwbXApOworCQkJaWYgKGNvZGUpIHJldHVybiAtMTsKIAkJCWJyZWFrOwogCQl9CiAJ
CWNwICs9IDI7CiAJfQotCSpucCA9ICdcMCc7Ci0JbWJuYW1idWZfd3JpdGUobmFtZSwgKHdlcC0+
d2VDbnQgJiBXSU5fQ05UKSAtIDEpOworCWRpcmJ1ZnB0ci0+ZF9uYW1lW2RpcmJ1ZnB0ci0+ZF9u
YW1sZW5dID0gJ1wwJzsKKworCS8qIHN3YXAgdGhlIGRpcmJ1ZnB0ci0+ZF9uYW1lICovCisJc3Ry
cmV2ZXJzZShkaXJidWZwdHItPmRfbmFtZSwgZGlyYnVmcHRyLT5kX25hbWxlbik7CisJc3RycmV2
ZXJzZShkaXJidWZwdHItPmRfbmFtZSwgZGlyYnVmcHRyLT5kX25hbWxlbiAtIGRfbmFtbGVuKTsK
KwlzdHJyZXZlcnNlKGRpcmJ1ZnB0ci0+ZF9uYW1lICsgZGlyYnVmcHRyLT5kX25hbWxlbiAtIGRf
bmFtbGVuLCBkX25hbWxlbik7CisKIAlyZXR1cm4gY2hrc3VtOwogfQogCkBAIC05NTIsMTAgKzk3
MCwxMCBAQAogLyoKICAqIENvbnZlcnQgV2luZG93cyBjaGFyIHRvIExvY2FsIGNoYXIKICAqLwot
c3RhdGljIHVfaW50MTZfdAotd2luMnVuaXhjaHIodV9pbnQxNl90IHdjLCBzdHJ1Y3QgbXNkb3Nm
c21vdW50ICpwbXApCitzdGF0aWMgc2l6ZV90Cit3aW4ydW5peGNocih1X2ludDE2X3Qgd2MsIHN0
cnVjdCBkaXJlbnQgKmRpcmJ1ZnB0ciwgc3RydWN0IG1zZG9zZnNtb3VudCAqcG1wKQogewotCXVf
Y2hhciAqaW5wLCAqb3V0cCwgaW5idWZbM10sIG91dGJ1ZlszXTsKKwl1X2NoYXIgKmlucCwgKm91
dHAsIGluYnVmWzNdOwogCXNpemVfdCBpbGVuLCBvbGVuLCBsZW47CiAKIAlpZiAod2MgPT0gMCkK
QEAgLTk2NiwzMSArOTg0LDQ5IEBACiAJCWluYnVmWzFdID0gKHVfY2hhcil3YzsKIAkJaW5idWZb
Ml0gPSAnXDAnOwogCi0JCWlsZW4gPSBvbGVuID0gbGVuID0gMjsKKwkJaWxlbiA9IDI7CisJCW9s
ZW4gPSBsZW4gPSBzaXplb2YoZGlyYnVmcHRyLT5kX25hbWUpIC0gZGlyYnVmcHRyLT5kX25hbWxl
biAtIDE7CiAJCWlucCA9IGluYnVmOwotCQlvdXRwID0gb3V0YnVmOworCQlvdXRwID0gZGlyYnVm
cHRyLT5kX25hbWUgKyBkaXJidWZwdHItPmRfbmFtbGVuOworCiAJCW1zZG9zZnNfaWNvbnYtPmNv
bnZjaHIocG1wLT5wbV93MnUsIChjb25zdCBjaGFyICoqKSZpbnAsICZpbGVuLAogCQkJCSAgICAg
KGNoYXIgKiopJm91dHAsICZvbGVuKTsKLQkJbGVuIC09IG9sZW47CiAKLQkJLyoKLQkJICogcmV0
dXJuICc/JyBpZiBmYWlsZWQgdG8gY29udmVydAotCQkgKi8KLQkJaWYgKGxlbiA9PSAwKSB7Ci0J
CQl3YyA9ICc/JzsKLQkJCXJldHVybiAod2MpOwotCQl9CisJCWRpcmJ1ZnB0ci0+ZF9uYW1sZW4g
Kz0gbGVuIC0gb2xlbjsKIAotCQl3YyA9IDA7Ci0JCXdoaWxlKGxlbi0tKQotCQkJd2MgfD0gKCoo
b3V0cCAtIGxlbiAtIDEpICYgMHhmZikgPDwgKGxlbiA8PCAzKTsKLQkJcmV0dXJuICh3Yyk7CisJ
CWlmIChpbGVuICE9IDApIHsgCisJCQkvKiBmYWlsZWQgdG8gY29udmVydCAqLworCQkJaWYgKG9s
ZW4gPT0gMCkgeyAKKwkJCQkvKiBmaWxlbmFtZSBsb25nZXIgdGhlbiBNQVhOQU1MRU4gKi8KKwkJ
CQlnb3RvIHRvb19sb25nOworCQkJfSBlbHNlIHsgCisJCQkJLyogc29tZSBjaGFyYWN0ZXIgY2Fu
bm90IGJlIGNvbnZlcnRlZCAqLworCQkJCWdvdG8gZmFpbGVkOworCQkJfQorCQl9IAorCisJCWdv
dG8gb2s7CiAJfQogCi0JaWYgKHdjICYgMHhmZjAwKQotCQl3YyA9ICc/JzsKKwlpZiAoc2l6ZW9m
KGRpcmJ1ZnB0ci0+ZF9uYW1lKSA8PSBkaXJidWZwdHItPmRfbmFtbGVuICsgMikgeworCQkvKiBm
aWxlbmFtZSBsb25nZXIgdGhlbiBNQVhOQU1MRU4gKi8KKwkJZ290byB0b29fbG9uZzsKKwl9IGVs
c2UgaWYgKHdjICYgMHhmZjAwKSB7CisJCWdvdG8gZmFpbGVkOworCX0KKwlkaXJidWZwdHItPmRf
bmFtZVtkaXJidWZwdHItPmRfbmFtbGVuKytdID0gKHVfY2hhcikod2M+PjgpOworCWRpcmJ1ZnB0
ci0+ZF9uYW1lW2RpcmJ1ZnB0ci0+ZF9uYW1sZW4rK10gPSAodV9jaGFyKXdjOworCWdvdG8gb2s7
CiAKLQlyZXR1cm4gKHdjKTsKK29rOgorCXJldHVybiAwOworCit0b29fbG9uZzoKKwlyZXR1cm4g
MTsKKworZmFpbGVkOgorCWRpcmJ1ZnB0ci0+ZF9uYW1lW2RpcmJ1ZnB0ci0+ZF9uYW1sZW4rK10g
PSAnPyc7CisJcmV0dXJuIDI7CiB9CiAKIC8qCkBAIC0xMDM1LDc4ICsxMDcxLDMgQEAKIAkoKmlu
c3RyKSsrOwogCXJldHVybiAod2MpOwogfQotCi0vKgotICogSW5pdGlhbGl6ZSB0aGUgdGVtcG9y
YXJ5IGNvbmNhdGVuYXRpb24gYnVmZmVyIChvbmNlKSBhbmQgbWFyayBpdCBhcwotICogZW1wdHkg
b24gc3Vic2VxdWVudCBjYWxscy4KLSAqLwotdm9pZAotbWJuYW1idWZfaW5pdCh2b2lkKQotewot
Ci0gICAgICAgIGlmIChuYW1idWZfcHRyID09IE5VTEwpIHsgCi0JCW5hbWJ1Zl9wdHIgPSBtYWxs
b2MoTUFYTkFNTEVOICsgMSwgTV9NU0RPU0ZTTU5ULCBNX1dBSVRPSyk7Ci0JCW5hbWJ1Zl9wdHJb
TUFYTkFNTEVOXSA9ICdcMCc7Ci0JfQotCW5hbWJ1Zl9sZW4gPSAwOwotCW5hbWJ1Zl9sYXN0X2lk
ID0gLTE7Ci19Ci0KLS8qCi0gKiBGaWxsIG91dCBvdXIgY29uY2F0ZW5hdGlvbiBidWZmZXIgd2l0
aCB0aGUgZ2l2ZW4gc3Vic3RyaW5nLCBhdCB0aGUgb2Zmc2V0Ci0gKiBzcGVjaWZpZWQgYnkgaXRz
IGlkLiAgU2luY2UgdGhpcyBmdW5jdGlvbiBtdXN0IGJlIGNhbGxlZCB3aXRoIGlkcyBpbgotICog
ZGVzY2VuZGluZyBvcmRlciwgd2UgdGFrZSBhZHZhbnRhZ2Ugb2YgdGhlIGZhY3QgdGhhdCBBU0NJ
SSBzdWJzdHJpbmdzIGFyZQotICogZXhhY3RseSBXSU5fQ0hBUlMgaW4gbGVuZ3RoLiAgRm9yIG5v
bi1BU0NJSSBzdWJzdHJpbmdzLCB3ZSBzaGlmdCBhbGwKLSAqIHByZXZpb3VzIChpLmUuIGhpZ2hl
ciBpZCkgc3Vic3RyaW5ncyB1cHdhcmRzIHRvIG1ha2Ugcm9vbSBmb3IgdGhpcyBvbmUuCi0gKiBU
aGlzIG9ubHkgcGVuYWxpemVzIHBvcnRpb25zIG9mIHN1YnN0cmluZ3MgdGhhdCBjb250YWluIG1v
cmUgdGhhbgotICogV0lOX0NIQVJTIGJ5dGVzIHdoZW4gdGhleSBhcmUgZmlyc3QgZW5jb3VudGVy
ZWQuCi0gKi8KLXZvaWQKLW1ibmFtYnVmX3dyaXRlKGNoYXIgKm5hbWUsIGludCBpZCkKLXsKLQlz
aXplX3QgY291bnQ7Ci0JY2hhciAqc2xvdDsKLQotCUtBU1NFUlQobmFtYnVmX2xlbiA9PSAwIHx8
IGlkID09IG5hbWJ1Zl9sYXN0X2lkIC0gMSwKLQkgICAgKCJub24tZGVjcmVhc2luZyBpZCwgaWQg
JWQgbGFzdCBpZCAlZCIsIGlkLCBuYW1idWZfbGFzdF9pZCkpOwotCi0JLyogU3RvcmUgdGhpcyBz
dWJzdHJpbmcgaW4gYSBXSU5fQ0hBUi1hbGlnbmVkIHNsb3QuICovCi0Jc2xvdCA9IG5hbWJ1Zl9w
dHIgKyAoaWQgKiBXSU5fQ0hBUlMpOwotCWNvdW50ID0gc3RybGVuKG5hbWUpOwotCWlmIChuYW1i
dWZfbGVuICsgY291bnQgPiBNQVhOQU1MRU4pIHsKLQkJcHJpbnRmKCJtc2Rvc2ZzOiBmaWxlIG5h
bWUgJXp1IHRvbyBsb25nXG4iLCBuYW1idWZfbGVuICsgY291bnQpOwotCQlyZXR1cm47Ci0JfQot
Ci0JLyogU2hpZnQgc3VmZml4IHVwd2FyZHMgYnkgdGhlIGFtb3VudCBsZW5ndGggZXhjZWVkcyBX
SU5fQ0hBUlMuICovCi0JaWYgKGNvdW50ID4gV0lOX0NIQVJTICYmIG5hbWJ1Zl9sZW4gIT0gMCkK
LQkJYmNvcHkoc2xvdCArIFdJTl9DSEFSUywgc2xvdCArIGNvdW50LCBuYW1idWZfbGVuKTsKLQot
CS8qIENvcHkgaW4gdGhlIHN1YnN0cmluZyB0byBpdHMgc2xvdCBhbmQgdXBkYXRlIGxlbmd0aCBz
byBmYXIuICovCi0JYmNvcHkobmFtZSwgc2xvdCwgY291bnQpOwotCW5hbWJ1Zl9sZW4gKz0gY291
bnQ7Ci0JbmFtYnVmX2xhc3RfaWQgPSBpZDsKLX0KLQotLyoKLSAqIFRha2UgdGhlIGNvbXBsZXRl
ZCBzdHJpbmcgYW5kIHVzZSBpdCB0byBzZXR1cCB0aGUgc3RydWN0IGRpcmVudC4KLSAqIEJlIHN1
cmUgdG8gYWx3YXlzIG51bC10ZXJtaW5hdGUgdGhlIGRfbmFtZSBhbmQgdGhlbiBjb3B5IHRoZSBz
dHJpbmcKLSAqIGZyb20gb3VyIGJ1ZmZlci4gIE5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uIGFzc3Vt
ZXMgdGhlIGZ1bGwgc3RyaW5nIGhhcwotICogYmVlbiByZWFzc2VtYmxlZCBpbiB0aGUgYnVmZmVy
LiAgSWYgaXQncyBjYWxsZWQgYmVmb3JlIGFsbCBzdWJzdHJpbmdzCi0gKiBoYXZlIGJlZW4gd3Jp
dHRlbiB2aWEgbWJuYW1idWZfd3JpdGUoKSwgdGhlIHJlc3VsdCB3aWxsIGJlIGluY29ycmVjdC4K
LSAqLwotY2hhciAqCi1tYm5hbWJ1Zl9mbHVzaChzdHJ1Y3QgZGlyZW50ICpkcCkKLXsKLQotCWlm
IChuYW1idWZfbGVuID4gc2l6ZW9mKGRwLT5kX25hbWUpIC0gMSkgewotCQltYm5hbWJ1Zl9pbml0
KCk7Ci0JCXJldHVybiAoTlVMTCk7Ci0JfQotCWJjb3B5KG5hbWJ1Zl9wdHIsIGRwLT5kX25hbWUs
IG5hbWJ1Zl9sZW4pOwotCWRwLT5kX25hbWVbbmFtYnVmX2xlbl0gPSAnXDAnOwotCWRwLT5kX25h
bWxlbiA9IG5hbWJ1Zl9sZW47Ci0KLQltYm5hbWJ1Zl9pbml0KCk7Ci0JcmV0dXJuIChkcC0+ZF9u
YW1lKTsKLX0KZGlmZiAtcnVOIG1zZG9zZnMub3JpZy9tc2Rvc2ZzX2xvb2t1cC5jIG1zZG9zZnMv
bXNkb3Nmc19sb29rdXAuYwotLS0gbXNkb3Nmcy5vcmlnL21zZG9zZnNfbG9va3VwLmMJMjAwNy0w
OC0wNyAxMDoyNTo1Ni4wMDAwMDAwMDAgKzA4MDAKKysrIG1zZG9zZnMvbXNkb3Nmc19sb29rdXAu
YwkyMDA3LTA4LTMwIDE2OjQ0OjUwLjAwMDAwMDAwMCArMDgwMApAQCAtNTQsNiArNTQsNyBAQAog
I2luY2x1ZGUgPHN5cy9tb3VudC5oPgogI2luY2x1ZGUgPHN5cy9uYW1laS5oPgogI2luY2x1ZGUg
PHN5cy92bm9kZS5oPgorI2luY2x1ZGUgPHN5cy9kaXJlbnQuaD4KIAogI2luY2x1ZGUgPGZzL21z
ZG9zZnMvYnBiLmg+CiAjaW5jbHVkZSA8ZnMvbXNkb3Nmcy9kaXJlbnRyeS5oPgpAQCAtMTE1LDcg
KzExNiwxMCBAQAogCWludCBvbGRkb3MgPSAxOwogCiAjaWZkZWYgTVNET1NGU19ERUJVRwotCXBy
aW50ZigibXNkb3Nmc19sb29rdXAoKTogbG9va2luZyBmb3IgJXNcbiIsIGNucC0+Y25fbmFtZXB0
cik7CisJcHJpbnRmKCJtc2Rvc2ZzX2xvb2t1cCgpOiBsb29raW5nIGZvciAweCIpOworCWZvciAo
Y2hhciAqYyA9IGNucC0+Y25fbmFtZXB0cjsgKmM7ICsrYykKKwkJcHJpbnRmKCIlMDJ4IiwgKHVu
c2lnbmVkIGNoYXIpKmMpOworCXByaW50ZigiXG4iKTsKICNlbmRpZgogCWRwID0gVlRPREUodmRw
KTsKIAlwbXAgPSBkcC0+ZGVfcG1wOwpAQCAtMTc3LDE1ICsxODEsMTggQEAKIAkJc2xvdGNvdW50
ID0gMDsKIAogI2lmZGVmIE1TRE9TRlNfREVCVUcKLQlwcmludGYoIm1zZG9zZnNfbG9va3VwKCk6
IGRvcyB2ZXJzaW9uIG9mIGZpbGVuYW1lICVzLCBsZW5ndGggJWxkXG4iLAotCSAgICBkb3NmaWxl
bmFtZSwgY25wLT5jbl9uYW1lbGVuKTsKKwlwcmludGYoIm1zZG9zZnNfbG9va3VwKCk6IGRvcyB2
ZXJzaW9uIG9mIGZpbGVuYW1lIDB4Iik7CisJZm9yIChjaGFyICpjID0gZG9zZmlsZW5hbWU7ICpj
OyArK2MpCisJCXByaW50ZigiJTAyeCIsICh1bnNpZ25lZCBjaGFyKSpjKTsKKwlwcmludGYoIiAs
IGxlbmd0aCAlbGRcbiIsIGNucC0+Y25fbmFtZWxlbik7CiAjZW5kaWYKIAkvKgogCSAqIFNlYXJj
aCB0aGUgZGlyZWN0b3J5IHBvaW50ZWQgYXQgYnkgdmRwIGZvciB0aGUgbmFtZSBwb2ludGVkIGF0
CiAJICogYnkgY25wLT5jbl9uYW1lcHRyLgogCSAqLwogCXRkcCA9IE5VTEw7Ci0JbWJuYW1idWZf
aW5pdCgpOworCXN0cnVjdCBkaXJlbnQgbmFtZWJ1ZjsKKwluYW1lYnVmLmRfbmFtbGVuID0gMDsK
IAkvKgogCSAqIFRoZSBvdXRlciBsb29wIHJhbmdlcyBvdmVyIHRoZSBjbHVzdGVycyB0aGF0IG1h
a2UgdXAgdGhlCiAJICogZGlyZWN0b3J5LiAgTm90ZSB0aGF0IHRoZSByb290IGRpcmVjdG9yeSBp
cyBkaWZmZXJlbnQgZnJvbSBhbGwKQEAgLTIyNSw3ICsyMzIsNyBAQAogCQkJCSAqIERyb3AgbWVt
b3J5IG9mIHByZXZpb3VzIGxvbmcgbWF0Y2hlcwogCQkJCSAqLwogCQkJCWNoa3N1bSA9IC0xOwot
CQkJCW1ibmFtYnVmX2luaXQoKTsKKwkJCQluYW1lYnVmLmRfbmFtbGVuID0gMDsKIAogCQkJCWlm
IChzbG90Y291bnQgPCB3aW5jbnQpIHsKIAkJCQkJc2xvdGNvdW50Kys7CkBAIC0yNTEsNiArMjU4
LDcgQEAKIAkJCQkJCWNvbnRpbnVlOwogCiAJCQkJCWNoa3N1bSA9IHdpbjJ1bml4Zm4oKHN0cnVj
dCB3aW5lbnRyeSAqKWRlcCwKKwkJCQkJCQkJJm5hbWVidWYsCiAJCQkJCQkJICAgIGNoa3N1bSwK
IAkJCQkJCQkgICAgcG1wKTsKIAkJCQkJY29udGludWU7CkBAIC0yNTgsOSArMjY2LDExIEBACiAK
IAkJCQljaGtzdW0gPSB3aW5DaGtOYW1lKChjb25zdCB1X2NoYXIgKiljbnAtPmNuX25hbWVwdHIs
CiAJCQkJCQkgICAgdW5sZW4sCisJCQkJCQkJJm5hbWVidWYsCiAJCQkJCQkgICAgY2hrc3VtLAog
CQkJCQkJICAgIHBtcCk7CiAJCQkJaWYgKGNoa3N1bSA9PSAtMikgeworCQkJCQluYW1lYnVmLmRf
bmFtbGVuID0gMDsKIAkJCQkJY2hrc3VtID0gLTE7CiAJCQkJCWNvbnRpbnVlOwogCQkJCX0KZGlm
ZiAtcnVOIG1zZG9zZnMub3JpZy9tc2Rvc2ZzX3Zub3BzLmMgbXNkb3Nmcy9tc2Rvc2ZzX3Zub3Bz
LmMKLS0tIG1zZG9zZnMub3JpZy9tc2Rvc2ZzX3Zub3BzLmMJMjAwNy0wOC0wNyAxODozNToyNy4w
MDAwMDAwMDAgKzA4MDAKKysrIG1zZG9zZnMvbXNkb3Nmc192bm9wcy5jCTIwMDctMDgtMzAgMTU6
MTU6NDUuMDAwMDAwMDAwICswODAwCkBAIC0xNjI5LDcgKzE2MjksOCBAQAogCQl9CiAJfQogCi0J
bWJuYW1idWZfaW5pdCgpOworCWRpcmJ1Zi5kX25hbWxlbiA9IDA7CisKIAlvZmYgPSBvZmZzZXQ7
CiAJd2hpbGUgKHVpby0+dWlvX3Jlc2lkID4gMCkgewogCQlsYm4gPSBkZV9jbHVzdGVyKHBtcCwg
b2Zmc2V0IC0gYmlhcyk7CkBAIC0xNjc2LDcgKzE2NzcsNyBAQAogCQkJICovCiAJCQlpZiAoZGVu
dHAtPmRlTmFtZVswXSA9PSBTTE9UX0RFTEVURUQpIHsKIAkJCQljaGtzdW0gPSAtMTsKLQkJCQlt
Ym5hbWJ1Zl9pbml0KCk7CisJCQkJZGlyYnVmLmRfbmFtbGVuID0gMDsKIAkJCQljb250aW51ZTsK
IAkJCX0KIApAQCAtMTY4Niw3ICsxNjg3LDcgQEAKIAkJCWlmIChkZW50cC0+ZGVBdHRyaWJ1dGVz
ID09IEFUVFJfV0lOOTUpIHsKIAkJCQlpZiAocG1wLT5wbV9mbGFncyAmIE1TRE9TRlNNTlRfU0hP
UlROQU1FKQogCQkJCQljb250aW51ZTsKLQkJCQljaGtzdW0gPSB3aW4ydW5peGZuKChzdHJ1Y3Qg
d2luZW50cnkgKilkZW50cCwKKwkJCQljaGtzdW0gPSB3aW4ydW5peGZuKChzdHJ1Y3Qgd2luZW50
cnkgKilkZW50cCwgJmRpcmJ1ZiwKIAkJCQkJY2hrc3VtLCBwbXApOwogCQkJCWNvbnRpbnVlOwog
CQkJfQpAQCAtMTY5Niw3ICsxNjk3LDcgQEAKIAkJCSAqLwogCQkJaWYgKGRlbnRwLT5kZUF0dHJp
YnV0ZXMgJiBBVFRSX1ZPTFVNRSkgewogCQkJCWNoa3N1bSA9IC0xOwotCQkJCW1ibmFtYnVmX2lu
aXQoKTsKKwkJCQlkaXJidWYuZF9uYW1sZW4gPSAwOwogCQkJCWNvbnRpbnVlOwogCQkJfQogCQkJ
LyoKQEAgLTE3MzgsOSArMTczOSw4IEBACiAJCQkJCSgocG1wLT5wbV9mbGFncyAmIE1TRE9TRlNN
TlRfU0hPUlROQU1FKSA/CiAJCQkJCShMQ0FTRV9CQVNFIHwgTENBU0VfRVhUKSA6IDApLAogCQkJ
CSAgICBwbXApOwotCQkJCW1ibmFtYnVmX2luaXQoKTsKLQkJCX0gZWxzZQotCQkJCW1ibmFtYnVm
X2ZsdXNoKCZkaXJidWYpOworCQkJfSAKKwogCQkJY2hrc3VtID0gLTE7CiAJCQlkaXJidWYuZF9y
ZWNsZW4gPSBHRU5FUklDX0RJUlNJWigmZGlyYnVmKTsKIAkJCWlmICh1aW8tPnVpb19yZXNpZCA8
IGRpcmJ1Zi5kX3JlY2xlbikgewpAQCAtMTc2MCw2ICsxNzYwLDggQEAKIAkJCQl9CiAJCQl9CiAJ
CQlvZmYgPSBvZmZzZXQgKyBzaXplb2Yoc3RydWN0IGRpcmVudHJ5KTsKKworCQkJZGlyYnVmLmRf
bmFtbGVuID0gMDsKIAkJfQogCQlicmVsc2UoYnApOwogCX0K
------=_Part_1837_22684143.1188488159514--



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