Subject: Re: Some LFS troubles
To: Thor Lancelot Simon <tls@rek.tjls.com>
From: Konrad Schroder <perseant@hhhh.org>
List: tech-kern
Date: 03/14/1999 17:12:12
  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.

--0-1015932993-921459531=:16062
Content-Type: TEXT/PLAIN; CHARSET=US-ASCII
Content-ID: <Pine.NEB.4.02.9903141659551.16062@inle.hhhh.org>

On Thu, 11 Mar 1999, Thor Lancelot Simon wrote:

>        I made the LFS smaller -- a little under 4GB.  That seemed to work OK,
> so I used rsync to copy a system to it from another local machine.  After
> about an hour, it printed out the diagnostic from lfs_vnops.c (dirvcount=33)
> and the process writing to the LFS hung irretrievably.  Looks like a wakeup()
> is missing somewhere...

Please try the attached patch...this should take care of this problem (and
another problem, wherein zero-link inodes involved in dirops never get
freed).

If you (or anyone) finds any other problems --- especially panics! ---
please let me know.

I've also added a CHANGES file that should explain the nature of the
various changes, in and out of the kernel.
						Konrad Schroder
						perseant@hhhh.org

--0-1015932993-921459531=:16062
Content-Type: TEXT/PLAIN; CHARSET=US-ASCII; NAME="lfs.ks.diff"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.NEB.4.02.9903141658510.16062@inle.hhhh.org>
Content-Description: Lockup patch
Content-Disposition: ATTACHMENT; FILENAME="lfs.ks.diff"

ZGlmZiAtciAtdSBsZnMvbGZzX2lub2RlLmMgL2hvbWUvcGVyc2VhbnQvc3Jj
L3N5cy91ZnMvbGZzL2xmc19pbm9kZS5jDQotLS0gbGZzL2xmc19pbm9kZS5j
CVR1ZSBNYXIgIDkgMTY6MzQ6MTkgMTk5OQ0KKysrIC9ob21lL3BlcnNlYW50
L3NyYy9zeXMvdWZzL2xmcy9sZnNfaW5vZGUuYwlGcmkgTWFyIDEyIDEzOjM0
OjI5IDE5OTkNCkBAIC0xLDQgKzEsNCBAQA0KLS8qCSROZXRCU0Q6IGxmc19p
bm9kZS5jLHYgMS4xOCAxOTk5LzAzLzEwIDAwOjIwOjAwIHBlcnNlYW50IEV4
cCAkCSovDQorLyoJJE5ldEJTRDogbGZzX2lub2RlLmMsdiAxLjE0IDE5OTgv
MDYvMDkgMDc6NDY6MzMgc2NvdHRyIEV4cCAkCSovDQogDQogLyotDQogICog
Q29weXJpZ2h0IChjKSAxOTk5IFRoZSBOZXRCU0QgRm91bmRhdGlvbiwgSW5j
Lg0KQEAgLTI0MSwxMCArMjQxLDE0IEBADQogCQlyZXR1cm4gKFZPUF9VUERB
VEUodnAsIE5VTEwsIE5VTEwsIDApKTsNCiAJfQ0KIA0KLSNpZiAwDQorI2lm
bmRlZiBXUklURVZOT0RFU19JTkFDVElWRQ0KIAkvKg0KLQkgKiBNYWtlIHN1
cmUgbm8gd3JpdGVzIGhhcHBlbiB3aGlsZSB3ZSdyZSB0cnVuY2F0aW5nDQot
CSAqIFhYWCBLUyAtIEkgZG9uJ3QgcmVtZW1iZXIgd2h5Li4uLg0KKwkgKiBN
YWtlIHN1cmUgbm8gd3JpdGVzIGhhcHBlbiB3aGlsZSB3ZSdyZSB0cnVuY2F0
aW5nLg0KKwkgKiBPdGhlcndpc2UsIGJsb2NrcyB3aGljaCBhcmUgYWNjb3Vu
dGVkIGZvciBvbiB0aGUgaW5vZGUNCisJICogKmFuZCogd2hpY2ggaGF2ZSBi
ZWVuIGNyZWF0ZWQgZm9yIGNsZWFuaW5nIGNhbiBjb2V4aXN0LA0KKwkgKiBh
bmQgY2F1c2UgdXMgdG8gb3ZlcmNvdW50LCBhbmQgcGFuaWMgYmVsb3cuDQor
CSAqDQorCSAqIFhYWCB0b28gcmVzdHJpY3RpdmU/ICBNYXliZSBvbmx5IHdo
ZW4gY2xlYW5pbmc/DQogCSAqLw0KIAl3aGlsZShmcy0+bGZzX3NlZ2xvY2sp
IHsNCiAJCXRzbGVlcCgmZnMtPmxmc19zZWdsb2NrLCAoUFJJQklPKzEpLCAi
bGZzX3RydW5jYXRlIiwgMCk7DQpkaWZmIC1yIC11IGxmcy9sZnNfc2VnbWVu
dC5jIC9ob21lL3BlcnNlYW50L3NyYy9zeXMvdWZzL2xmcy9sZnNfc2VnbWVu
dC5jDQotLS0gbGZzL2xmc19zZWdtZW50LmMJVHVlIE1hciAgOSAxNjozNDox
OSAxOTk5DQorKysgL2hvbWUvcGVyc2VhbnQvc3JjL3N5cy91ZnMvbGZzL2xm
c19zZWdtZW50LmMJRnJpIE1hciAxMiAxNjo1MTowNyAxOTk5DQpAQCAtMSw0
ICsxLDQgQEANCi0vKgkkTmV0QlNEOiBsZnNfc2VnbWVudC5jLHYgMS4xNSAx
OTk5LzAzLzEwIDAwOjIwOjAwIHBlcnNlYW50IEV4cCAkCSovDQorLyoJJE5l
dEJTRDogbGZzX3NlZ21lbnQuYyx2IDEuMTIgMTk5OC8wOS8xMSAyMToyNzox
MiBwayBFeHAgJAkqLw0KIA0KIC8qLQ0KICAqIENvcHlyaWdodCAoYykgMTk5
OSBUaGUgTmV0QlNEIEZvdW5kYXRpb24sIEluYy4NCkBAIC0yNjEsNiArMjYx
LDcgQEANCiB9DQogDQogI2RlZmluZSB2bmRlYnVnKHZwLHN0cikgaWYoVlRP
SSh2cCktPmlfZmxhZyAmIElOX0NMRUFOSU5HKSBwcmludGYoIm5vdCB3cml0
aW5nIGlubyAlZCBiZWNhdXNlICVzXG4iLFZUT0kodnApLT5pX251bWJlciwo
c3RyKSkNCisjZGVmaW5lIGl2bmRlYnVnKHZwLHN0cikgcHJpbnRmKCJpbm8g
JWQ6ICVzXG4iLFZUT0kodnApLT5pX251bWJlciwoc3RyKSkNCiANCiAvKiBY
WFggS1MgLSBUaGlzIGlzIHVnbHkgKi8NCiAjZGVmaW5lIEJZVEVfQk9SUk9X
KEZTLFNQLFNaKSBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgXA0KQEAg
LTM0MCwxNiArMzQxLDIxIEBADQogCQl9DQogDQogI2lmZGVmIExGU19VU0VE
SVJPUA0KKyNpZmRlZiBXUklURVZOT0RFU19JTkFDVElWRQ0KIAkJLyoNCiAJ
CSAqIEEgcmVtb3ZlZCBJbm9kZSBmcm9tIGEgZGlyb3Agd2UncmUgd3JpdGlu
Zw0KIAkJICovDQogCQlpZigodnAtPnZfZmxhZyAmIFZESVJPUCkNCiAJCSAg
ICYmICFXUklURUlOUFJPRyh2cCkNCi0JCSAgICYmIHZwLT52X3VzZWNvdW50
PDMNCi0JCSAgICYmIGlwLT5pX2Zmc19ubGluayA9PSAwDQorCQkgICAmJiB2
cC0+dl91c2Vjb3VudCA8PSAyICAvKiBubyBvdGhlciByZWZzICovDQorCQkg
ICAmJiBpcC0+aV9mZnNfbmxpbmsgPT0gMCAvKiBpbmFjdGl2ZSAqLw0KKwkJ
ICAgJiYgaXAtPmlfZmZzX21vZGUgIT0gMCAgLyogbm90IGluYWN0aXZhdGVk
IHlldCAqLw0KKyNpZmRlZiBESVJPUF9UUlVOQw0KKwkJICAgJiYgaXAtPmlf
ZmZzX3NpemUgPT0gMCAgLyogYWxyZWFkeSB0cnVuY2F0ZWQgKi8NCisjZW5k
aWYNCiAJCSAgICYmICFWT1BfSVNMT0NLRUQodnApKQ0KIAkJew0KLQkJCXZu
ZGVidWcodnAsInZpbmFjdGl2ZSIpOw0KKwkJCWl2bmRlYnVnKHZwLCJ2aW5h
Y3RpdmUiKTsNCiAJCQktLWZzLT5sZnNfZGlydmNvdW50Ow0KIAkJCXZwLT52
X2ZsYWcgJj0gflZESVJPUDsNCiAJCQl3YWtldXAoJmZzLT5sZnNfZGlydmNv
dW50KTsNCkBAIC0zNjAsMTAgKzM2NiwxMCBAQA0KIAkJCSAqLw0KIAkJCWlm
KHZwLT52X3VzZWNvdW50PT0yKQ0KIAkJCQlsZnNfdnVucmVmKHZwKTsNCi0J
CQlWT1BfTE9DSyh2cCxMS19FWENMVVNJVkUpOw0KLQkJCXZwdXQodnApOw0K
KwkJCXZyZWxlKHZwKTsNCiAJCQljb250aW51ZTsgLyogRG9uJ3QgbGZzX3Z1
bnJlZiBhZ2FpbiAqLw0KIAkJfQ0KKyNlbmRpZiAvKiBXUklURVZOT0RFU19J
TkFDVElWRSAqLw0KICNlbmRpZiAvKiBMRlNfVVNFRElST1AgKi8NCiANCiAJ
CS8qDQpAQCAtOTM3LDYgKzk0Myw5IEBADQogCQlsYm4gPSAqc3AtPnN0YXJ0
X2xicCsrOw0KIA0KIAkJKCpzcC0+c3RhcnRfYnBwKS0+Yl9ibGtubyA9IG9m
ZiA9IGZzLT5sZnNfb2Zmc2V0Ow0KKwkJaWYoKCpzcC0+c3RhcnRfYnBwKS0+
Yl9ibGtubyA9PSAoKnNwLT5zdGFydF9icHApLT5iX2xibGtubykgew0KKwkJ
CXByaW50ZigibGZzX3VwZGF0ZW1ldGE6IGlubyAlZCBibGsgJWQgaGFzIHNh
bWUgbGJuIGFuZCBkYWRkclxuIiwgVlRPSSh2cCktPmlfbnVtYmVyLCBvZmYp
Ow0KKwkJfQ0KIAkJZnMtPmxmc19vZmZzZXQgKz0NCiAJCQlmcmFnc3RvZGIo
ZnMsIG51bWZyYWdzKGZzLCAoKnNwLT5zdGFydF9icHApLT5iX2Jjb3VudCkp
Ow0KIA0KQEAgLTEyODcsNiArMTI5Niw4IEBADQogCQkJCWJwLT5iX2ZsYWdz
ICY9IH5CX05FRURDT01NSVQ7DQogCQkJCXdha2V1cChicCk7DQogCQkJfQ0K
KwkJCS8qIGlmKHZuLT52X2RpcnR5YmxraGQubGhfZmlyc3QgPT0gTlVMTCkg
Ki8NCisJCQkJd2FrZXVwKHZuKTsNCiAJCQlicHArKzsNCiAJCX0NCiAJCSsr
Y2JwLT5iX3ZwLT52X251bW91dHB1dDsNCk9ubHkgaW4gbGZzOiBsZnNfc2Vn
bWVudC5jfg0KZGlmZiAtciAtdSBsZnMvbGZzX3N1YnIuYyAvaG9tZS9wZXJz
ZWFudC9zcmMvc3lzL3Vmcy9sZnMvbGZzX3N1YnIuYw0KLS0tIGxmcy9sZnNf
c3Vici5jCVR1ZSBNYXIgIDkgMTY6MzQ6MTkgMTk5OQ0KKysrIC9ob21lL3Bl
cnNlYW50L3NyYy9zeXMvdWZzL2xmcy9sZnNfc3Vici5jCVR1ZSBNYXIgIDkg
MTU6NTQ6MTcgMTk5OQ0KQEAgLTEsNCArMSw0IEBADQotLyoJJE5ldEJTRDog
bGZzX3N1YnIuYyx2IDEuOCAxOTk5LzAzLzEwIDAwOjIwOjAwIHBlcnNlYW50
IEV4cCAkCSovDQorLyoJJE5ldEJTRDogbGZzX3N1YnIuYyx2IDEuNyAxOTk4
LzA4LzI1IDA0OjUyOjM4IHRob3JwZWogRXhwICQJKi8NCiANCiAvKi0NCiAg
KiBDb3B5cmlnaHQgKGMpIDE5OTkgVGhlIE5ldEJTRCBGb3VuZGF0aW9uLCBJ
bmMuDQpkaWZmIC1yIC11IGxmcy9sZnNfc3lzY2FsbHMuYyAvaG9tZS9wZXJz
ZWFudC9zcmMvc3lzL3Vmcy9sZnMvbGZzX3N5c2NhbGxzLmMNCi0tLSBsZnMv
bGZzX3N5c2NhbGxzLmMJVHVlIE1hciAgOSAxNjozNDoyMCAxOTk5DQorKysg
L2hvbWUvcGVyc2VhbnQvc3JjL3N5cy91ZnMvbGZzL2xmc19zeXNjYWxscy5j
CVRodSBNYXIgMTEgMTM6MTc6NDIgMTk5OQ0KQEAgLTEsNCArMSw0IEBADQot
LyoJJE5ldEJTRDogbGZzX3N5c2NhbGxzLmMsdiAxLjIyIDE5OTkvMDMvMTAg
MDA6MjA6MDAgcGVyc2VhbnQgRXhwICQJKi8NCisvKgkkTmV0QlNEOiBsZnNf
c3lzY2FsbHMuYyx2IDEuMTkgMTk5OC8wOS8xNSAxMDo1MzoyMiBwayBFeHAg
JAkqLw0KIA0KIC8qLQ0KICAqIENvcHlyaWdodCAoYykgMTk5OSBUaGUgTmV0
QlNEIEZvdW5kYXRpb24sIEluYy4NCkBAIC0xMjEsNiArMTIxLDMzIEBADQog
DQogI2RlZmluZSBMRlNfVlJFRl9USFJFU0hPTEQgMTI4DQogDQorI2lmZGVm
IERFQlVHX0xGUw0KK3ZvaWQgbGZzX2NoZWNrX2hlbGRfbG9ja3Moc3RydWN0
IG1vdW50ICptbnRwLCBjaGFyICpmaWxlLCBpbnQgbGluZSkNCit7DQorCXN0
cnVjdCB2bm9kZSAqdnA7DQorCXN0cnVjdCBpbm9kZSAqaXA7DQorDQorIGxv
b3A6DQorCWZvciAodnAgPSBtbnRwLT5tbnRfdm5vZGVsaXN0LmxoX2ZpcnN0
Ow0KKwkgICAgIHZwICE9IE5VTEw7DQorCSAgICAgdnAgPSB2cC0+dl9tbnR2
bm9kZXMubGVfbmV4dCkNCisJew0KKwkJaWYgKHZwLT52X21vdW50ICE9IG1u
dHApDQorCQkJZ290byBsb29wOw0KKwkJaWYobGZzX3ZyZWYodnApKQ0KKwkJ
CWNvbnRpbnVlOw0KKwkJaXAgPSBWVE9JKHZwKTsNCisjaWZkZWYgRERCDQor
CQlpZihWT1BfSVNMT0NLRUQodnApICYmIGlwLT5pX2xvY2subGtfbG9ja2hv
bGRlcj09Y3VycHJvYy0+cF9waWQpDQorCQkJcHJpbnRmKCIlczolZDogaW5v
ICVkIGlzIGxvY2tlZCBieSB1cyFcbiIsIGZpbGUsIGxpbmUsDQorCQkJICAg
ICAgIGlwLT5pX251bWJlcik7DQorCQkJRGVidWdnZXIoKTsNCisjZW5kaWYN
CisJCWxmc192dW5yZWYodnApOw0KKwl9DQorfQ0KKyNlbmRpZg0KKw0KIC8q
DQogICogbGZzX21hcmt2Og0KICAqDQpAQCAtMTc5LDYgKzIwNiwxMCBAQA0K
IAlpZiAoKG1udHAgPSB2ZnNfZ2V0dmZzKCZmc2lkKSkgPT0gTlVMTCkNCiAJ
CXJldHVybiAoRUlOVkFMKTsNCiANCisjaWZkZWYgREVCVUdfTEZTDQorCWxm
c19jaGVja19oZWxkX2xvY2tzKG1udHAsX19GSUxFX18sX19MSU5FX18pOw0K
KyNlbmRpZg0KKw0KIAlmcyA9IFZGU1RPVUZTKG1udHApLT51bV9sZnM7DQog
DQogCWlmICgoZXJyb3IgPSBzdXNlcihwLT5wX3VjcmVkLCAmcC0+cF9hY2Zs
YWcpKSAhPSAwKQ0KQEAgLTQ0Miw4ICs0NzMsMTEgQEANCiAJCQkJCWJsa3At
PmJpX3NpemUgPSBicC0+Yl9iY291bnQ7DQogCQkJCX0NCiAJCQkJYnAgPSBn
ZXRibGsodnAsIGJsa3AtPmJpX2xibiwgYmxrcC0+Ymlfc2l6ZSwgMCwgMCk7
DQotCQkJfSBlbHNlDQorCQkJfSBlbHNlIHsNCiAJCQkJYnAgPSBsZnNfZmFr
ZWJ1Zih2cCwgYmxrcC0+YmlfbGJuLCBibGtwLT5iaV9zaXplLCBibGtwLT5i
aV9icCk7DQorCQkJCS8qIFByZXRlbmQgd2UgdXNlZCBicmVhZCgpIHRvIGdl
dCBpdCAqLw0KKwkJCQlicC0+Yl9ibGtubyA9IGJsa3AtPmJpX2RhZGRyOw0K
KwkJCX0NCiAJCX0gZWxzZSB7CS8qIEluZGlyZWN0IGJsb2NrICovDQogCQkJ
YnAgPSBnZXRibGsodnAsIGJsa3AtPmJpX2xibiwgYmxrcC0+Ymlfc2l6ZSwg
MCwgMCk7DQogCQkJaWYgKCEoYnAtPmJfZmxhZ3MgJiAoQl9ET05FfEJfREVM
V1JJKSkpIHsgLyogQl9DQUNIRSAqLw0KQEAgLTU0OSw2ICs1ODMsOSBAQA0K
IAl9DQogI2VuZGlmIC8qIExGU19TVElOR1lfQ0xFQU4gKi8NCiAJDQorI2lm
ZGVmIERFQlVHX0xGUw0KKwlsZnNfY2hlY2tfaGVsZF9sb2NrcyhtbnRwLF9f
RklMRV9fLF9fTElORV9fKTsNCisjZW5kaWYNCiAJbGZzX3NlZ3VubG9jayhm
cyk7DQogDQogI2lmZGVmIERFQlVHX0xGUw0KQEAgLTY0NCw2ICs2ODEsMTAg
QEANCiAJaWYgKChtbnRwID0gdmZzX2dldHZmcygmZnNpZCkpID09IE5VTEwp
DQogCQlyZXR1cm4gKEVJTlZBTCk7DQogCQ0KKyNpZmRlZiBERUJVR19MRlMN
CisJbGZzX2NoZWNrX2hlbGRfbG9ja3MobW50cCxfX0ZJTEVfXyxfX0xJTkVf
Xyk7DQorI2VuZGlmDQorDQogCXVtcCA9IFZGU1RPVUZTKG1udHApOw0KIAkN
CiAJb3JpZ2NudCA9IGNudCA9IFNDQVJHKHVhcCwgYmxrY250KTsNCkBAIC04
MDgsNiArODQ5LDEwIEBADQogCWNvcHlvdXQoc3RhcnQsIFNDQVJHKHVhcCwg
YmxraW92KSwgb3JpZ2NudCAqIHNpemVvZihCTE9DS19JTkZPKSk7DQogCWZy
ZWUoc3RhcnQsIE1fU0VHTUVOVCk7DQogCQ0KKyNpZmRlZiBERUJVR19MRlMN
CisJbGZzX2NoZWNrX2hlbGRfbG9ja3MobW50cCxfX0ZJTEVfXyxfX0xJTkVf
Xyk7DQorI2VuZGlmDQorDQogCXJldHVybiAwOw0KIH0NCiANCmRpZmYgLXIg
LXUgbGZzL2xmc192ZnNvcHMuYyAvaG9tZS9wZXJzZWFudC9zcmMvc3lzL3Vm
cy9sZnMvbGZzX3Zmc29wcy5jDQotLS0gbGZzL2xmc192ZnNvcHMuYwlUdWUg
TWFyICA5IDE2OjM0OjIwIDE5OTkNCisrKyAvaG9tZS9wZXJzZWFudC9zcmMv
c3lzL3Vmcy9sZnMvbGZzX3Zmc29wcy5jCVR1ZSBNYXIgIDkgMTU6NTQ6MTcg
MTk5OQ0KQEAgLTEsNCArMSw0IEBADQotLyoJJE5ldEJTRDogbGZzX3Zmc29w
cy5jLHYgMS4yNiAxOTk5LzAzLzEwIDAwOjIwOjAwIHBlcnNlYW50IEV4cCAk
CSovDQorLyoJJE5ldEJTRDogbGZzX3Zmc29wcy5jLHYgMS4yNCAxOTk4LzA5
LzExIDIxOjI3OjEzIHBrIEV4cCAkCSovDQogDQogLyotDQogICogQ29weXJp
Z2h0IChjKSAxOTk5IFRoZSBOZXRCU0QgRm91bmRhdGlvbiwgSW5jLg0KZGlm
ZiAtciAtdSBsZnMvbGZzX3Zub3BzLmMgL2hvbWUvcGVyc2VhbnQvc3JjL3N5
cy91ZnMvbGZzL2xmc192bm9wcy5jDQotLS0gbGZzL2xmc192bm9wcy5jCVR1
ZSBNYXIgIDkgMTY6MzQ6MjAgMTk5OQ0KKysrIC9ob21lL3BlcnNlYW50L3Ny
Yy9zeXMvdWZzL2xmcy9sZnNfdm5vcHMuYwlGcmkgTWFyIDEyIDEyOjQxOjI1
IDE5OTkNCkBAIC0xLDQgKzEsNCBAQA0KLS8qCSROZXRCU0Q6IGxmc192bm9w
cy5jLHYgMS4yMiAxOTk5LzAzLzEwIDAwOjIwOjAwIHBlcnNlYW50IEV4cCAk
CSovDQorLyoJJE5ldEJTRDogbGZzX3Zub3BzLmMsdiAxLjE5IDE5OTgvMDkv
MDEgMDM6MjY6MDUgdGhvcnBlaiBFeHAgJAkqLw0KIA0KIC8qLQ0KICAqIENv
cHlyaWdodCAoYykgMTk5OSBUaGUgTmV0QlNEIEZvdW5kYXRpb24sIEluYy4N
CkBAIC0zMTcsMTIgKzMxNyw0NCBAQA0KIAkoZnMpLT5sZnNfZG9pZmlsZSA9
IDE7CQkJCQkJXA0KIH0NCiANCitzdGF0aWMgdm9pZCBtYXliZV9pbmFjdGl2
ZV9hbGwoc3RydWN0IGxmcyAqZnMpDQorew0KKwlzdHJ1Y3Qgdm5vZGUgKnZw
Ow0KKwlzdHJ1Y3QgbW91bnQgKm1wOw0KKwlzdHJ1Y3QgaW5vZGUgKmlwOw0K
Kw0KKwltcCA9IGZzLT5sZnNfaXZub2RlLT52X21vdW50Ow0KKyBsb29wOg0K
Kwlmb3IodnAgPSBtcC0+bW50X3Zub2RlbGlzdC5saF9maXJzdDsgdnA7IHZw
PXZwLT52X21udHZub2Rlcy5sZV9uZXh0KSB7DQorCQlpZih2cC0+dl9tb3Vu
dCAhPSBtcCkNCisJCQlnb3RvIGxvb3A7DQorCQlpcCA9IFZUT0kodnApOw0K
KwkJaWYoKHZwLT52X2ZsYWcgJiBWRElST1ApDQorCQkgICAmJiAhV1JJVEVJ
TlBST0codnApDQorCQkgICAmJiB2cC0+dl91c2Vjb3VudD09MQ0KKwkJICAg
JiYgaXAtPmlfZmZzX25saW5rPT0wDQorCQkgICAmJiBpcC0+aV9mZnNfbW9k
ZSE9MCkNCisJCXsNCisJCQlpZiAodm5fbG9jaygodnApLCBMS19FWENMVVNJ
VkUgfCBMS19JTlRFUkxPQ0spID09IDApIHsNCisJCQkJVk9QX0lOQUNUSVZF
KCh2cCksY3VycHJvYyk7DQorCQkJfSBlbHNlIHsNCisJCQkJcHJpbnRmKCJt
YXliZV9pbmFjdGl2ZV9hbGw6IGNhbid0IGxvY2sgXCJ1bnJlZmVyZW5jZWRc
IiBpbm8gJWQiLA0KKwkJCQkgICAgICAgaXAtPmlfbnVtYmVyKTsNCisJCQl9
DQorCQl9DQorCX0NCit9DQorDQogI2RlZmluZQlTRVRfRU5ET1AoZnMpIHsJ
CQkJCQkJXA0KIAktLShmcyktPmxmc19kaXJvcHM7CQkJCQkJXA0KIAlpZiAo
IShmcyktPmxmc19kaXJvcHMpIHsJCQkJCVwNCisJCW1heWJlX2luYWN0aXZl
X2FsbCgoZnMpKTsJCQkJXA0KIAkJd2FrZXVwKCYoZnMpLT5sZnNfd3JpdGVy
KTsJCQkJXA0KLQkJaWYgKChmcyktPmxmc19kaXJ2Y291bnQgPiBMRlNfTUFY
RElST1ApCQkJXA0KLQkJCWxmc19mbHVzaCgoZnMpLDApOwkJCQlcDQorCQlp
ZiAoKGZzKS0+bGZzX2RpcnZjb3VudCA+IExGU19NQVhESVJPUCkJewkJXA0K
KwkJCSsrKGZzKS0+bGZzX3dyaXRlcjsJCQkJXA0KKwkJCWxmc19mbHVzaCgo
ZnMpLDApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCisJCQkt
LShmcyktPmxmc193cml0ZXI7CQkJCVwNCisJCX0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KIAl9
CQkJCQkJCQlcDQogfQ0KIA0KQEAgLTMzNCw2ICszNjYsMTYgQEANCiAgICAg
ICAgIChkdnApLT52X2ZsYWcgfD0gVkRJUk9QOwkJCQkJXA0KIH0gd2hpbGUo
MCkNCiANCisjZGVmaW5lIE1BWUJFX0lOQUNUSVZFKGZzLHZwKSBkbyB7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCisgICAg
ICAgIGlmKCh2cCkgJiYgKHZwKS0+dl91c2Vjb3VudCA9PSAxICYmIFZUT0ko
dnApICYmIFZUT0kodnApLT5pX2Zmc19ubGluayA9PSAwKSB7ICBcDQorCQlp
ZihWT1BfSVNMT0NLRUQodnApKSB7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXA0KKwkJCXByaW50ZigiSG0sIHZub2RlIGlzIGxvY2tl
ZD9cbiIpOyAgICAgICAgICAgICAgICAgXA0KKwkJfSBlbHNlIGlmICh2bl9s
b2NrKCh2cCksIExLX0VYQ0xVU0lWRSB8IExLX0lOVEVSTE9DSykgPT0gMCkg
eyBcDQorICAgICAgICAgICAgICAgICAgICAgICAgVk9QX0lOQUNUSVZFKCh2
cCksY3VycHJvYyk7ICAgICAgICAgICAgICAgICAgICAgICBcDQorCQl9ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXA0KKyAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0K
K30gd2hpbGUoMCkNCisNCiBpbnQNCiBsZnNfc3ltbGluayh2KQ0KIAl2b2lk
ICp2Ow0KQEAgLTQyNSw2ICs0NjcsOCBAQA0KIAlTRVRfRElST1AoVlRPSShh
cC0+YV9kdnApLT5pX2xmcyk7DQogCU1BUktfVk5PREUoYXAtPmFfZHZwKTsN
CiAJcmV0ID0gdWZzX21rZGlyKGFwKTsNCisJTUFSS19WTk9ERSgqKGFwLT5h
X3ZwcCkpOyAvKiBYWFggS1MgKi8NCisJTUFZQkVfSU5BQ1RJVkUoVlRPSShh
cC0+YV9kdnApLT5pX2xmcywqKGFwLT5hX3ZwcCkpOw0KIAlTRVRfRU5ET1Ao
VlRPSShhcC0+YV9kdnApLT5pX2xmcyk7DQogCXJldHVybiAocmV0KTsNCiB9
DQpAQCAtNDM5LDEyICs0ODMsMTIgQEANCiAJCXN0cnVjdCBjb21wb25lbnRu
YW1lICphX2NucDsNCiAJfSAqLyAqYXAgPSB2Ow0KIAlpbnQgcmV0Ow0KLQ0K
IAlTRVRfRElST1AoVlRPSShhcC0+YV9kdnApLT5pX2xmcyk7DQogCU1BUktf
Vk5PREUoYXAtPmFfZHZwKTsNCiAJTUFSS19WTk9ERShhcC0+YV92cCk7DQog
CXJldCA9IHVmc19yZW1vdmUoYXApOw0KIAlTRVRfRU5ET1AoVlRPSShhcC0+
YV9kdnApLT5pX2xmcyk7DQorCU1BWUJFX0lOQUNUSVZFKFZUT0koYXAtPmFf
ZHZwKS0+aV9sZnMsYXAtPmFfdnApOw0KIAlyZXR1cm4gKHJldCk7DQogfQ0K
IA0KQEAgLTQ2NSw2ICs1MDksNyBAQA0KIAlNQVJLX1ZOT0RFKGFwLT5hX3Zw
KTsNCiAJcmV0ID0gdWZzX3JtZGlyKGFwKTsNCiAJU0VUX0VORE9QKFZUT0ko
YXAtPmFfZHZwKS0+aV9sZnMpOw0KKwlNQVlCRV9JTkFDVElWRShWVE9JKGFw
LT5hX2R2cCktPmlfbGZzLGFwLT5hX3ZwKTsNCiAJcmV0dXJuIChyZXQpOw0K
IH0NCiANCkBAIC01MDUsNiArNTUwLDggQEANCiAJTUFSS19WTk9ERShhcC0+
YV90ZHZwKTsNCiAJcmV0ID0gdWZzX3JlbmFtZShhcCk7DQogCVNFVF9FTkRP
UChWVE9JKGFwLT5hX2ZkdnApLT5pX2xmcyk7DQorCU1BWUJFX0lOQUNUSVZF
KFZUT0koYXAtPmFfZHZwKS0+aV9sZnMsYXAtPmFfZnZwKTsNCisJTUFZQkVf
SU5BQ1RJVkUoVlRPSShhcC0+YV9kdnApLT5pX2xmcyxhcC0+YV90dnApOw0K
IAlyZXR1cm4gKHJldCk7DQogfQ0KICNlbmRpZiAvKiBMRlNfVVNFRElST1Ag
Ki8NCg==
--0-1015932993-921459531=:16062--