Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 26 Aug 2000 20:22:02 +0700 (ALMST)
From:      Boris Popov <bp@butya.kz>
To:        Poul-Henning Kamp <phk@freebsd.org>
Cc:        freebsd-current@freebsd.org
Subject:   devfs patch for review 
Message-ID:  <Pine.BSF.4.10.10008262000300.97704-200000@lion.butya.kz>

next in thread | raw e-mail | index | archive | help
  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-814033623-967296122=:97704
Content-Type: TEXT/PLAIN; charset=US-ASCII

	Hello,

	I've made some fixes in the fs layer of new devfs. First version
of this patch was passed via Poul and new version includes parts of his
suggestions.

	Here is a brief decription of the patch:

Rename de_dir to de_parent with appropritate code changes.
Implement proper logic and locking in the devfs_lookup().
Fix behaviour for '.' and '..' directories with corresponding changes
in the devfs_readdir().
Implement devfs_read() operation for directories.
Return proper mount owner in the devfs_statfs().
Fix panic related to the incorrect handling of root vnode.
Few cosmetic changes as well.

	Code is still not SMP safe.

--
Boris Popov
http://www.butya.kz/~bp/

--0-814033623-967296122=:97704
Content-Type: TEXT/PLAIN; charset=US-ASCII; name="devfs5.diff"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.BSF.4.10.10008262022020.97704@lion.butya.kz>
Content-Description: 
Content-Disposition: attachment; filename="devfs5.diff"

SW5kZXg6IGRldmZzLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NClJDUyBm
aWxlOiAvaG9tZS9uY3ZzL3NyYy9zeXMvZnMvZGV2ZnMvZGV2ZnMuaCx2DQpy
ZXRyaWV2aW5nIHJldmlzaW9uIDEuMg0KZGlmZiAtdSAtcjEuMiBkZXZmcy5o
DQotLS0gZGV2ZnMuaAkyMDAwLzA4LzI0IDE1OjM2OjQ3CTEuMg0KKysrIGRl
dmZzLmgJMjAwMC8wOC8yNiAxMjoyODo1Mg0KQEAgLTQ4LDEwICs0OCwxMiBA
QA0KICNkZWZpbmUJREVfT1JQSEFOCTB4MQ0KICNkZWZpbmUJREVfRE9UCQkw
eDINCiAjZGVmaW5lCURFX0RPVERPVAkweDQNCi0Jc3RydWN0IGRpcmVudCAq
ZGVfZGlyZW50Ow0KKwlpbnQJZGVfdHlwZTsNCisJY2hhciAqCWRlX25hbWU7
DQorCWludAlkZV9uYW1lbGVuOw0KIAlUQUlMUV9FTlRSWShkZXZmc19kaXJl
bnQpIGRlX2xpc3Q7DQogCVRBSUxRX0hFQUQoLCBkZXZmc19kaXJlbnQpIGRl
X2RsaXN0Ow0KLQlzdHJ1Y3QgZGV2ZnNfZGlyZW50ICpkZV9kaXI7DQorCXN0
cnVjdCBkZXZmc19kaXJlbnQgKmRlX3BhcmVudDsNCiAJaW50CWRlX2xpbmtz
Ow0KIAltb2RlX3QJZGVfbW9kZTsNCiAJdWlkX3QJZGVfdWlkOw0KQEAgLTY4
LDcgKzcwLDYgQEANCiB9Ow0KIA0KIHN0cnVjdCBkZXZmc19tb3VudCB7DQot
CXN0cnVjdCB2bm9kZQkqZG1fcm9vdDsJLyogUm9vdCBub2RlICovDQogCXN0
cnVjdCBkZXZmc19kaXJlbnQgKmRtX3Jvb3RkaXI7DQogCXN0cnVjdCBkZXZm
c19kaXJlbnQgKmRtX2Jhc2VkaXI7DQogCXVuc2lnbmVkCWRtX2dlbmVyYXRp
b247DQpAQCAtODQsNiArODUsNyBAQA0KIA0KIA0KICNkZWZpbmUgVkZTVE9E
RVZGUyhtcCkJKChzdHJ1Y3QgZGV2ZnNfbW91bnQgKikoKG1wKS0+bW50X2Rh
dGEpKQ0KKyNkZWZpbmUgVk5UT0RFVkZTKHZwKQkoKHN0cnVjdCBkZXZmc19k
aXJlbnQgKikodnApLT52X2RhdGEpDQogDQogZXh0ZXJuIHZvcF90ICoqZGV2
ZnNfdm5vZGVvcF9wOw0KIGV4dGVybiB2b3BfdCAqKmRldmZzX3NwZWNvcF9w
Ow0KQEAgLTkzLDYgKzk1LDkgQEANCiB2b2lkIGRldmZzX3B1cmdlIF9fUCgo
c3RydWN0IGRldmZzX2RpcmVudCAqZGQpKTsNCiBzdHJ1Y3QgZGV2ZnNfZGly
ZW50ICogZGV2ZnNfdm1rZGlyIF9fUCgoY2hhciAqbmFtZSwgaW50IG5hbWVs
ZW4sDQogICAgIHN0cnVjdCBkZXZmc19kaXJlbnQgKmRvdGRvdCkpOw0KK2lu
dCBkZXZmc19hbGxvY3Yoc3RydWN0IGRldmZzX2RpcmVudCAqZGUsIHN0cnVj
dCBtb3VudCAqbXAsIHN0cnVjdCB2bm9kZSAqKnZwcCwNCisJc3RydWN0IHBy
b2MgKnByb2MpOw0KKw0KICNlbmRpZiAvKiBERVZGU19JTlRFUk4gKi8NCiAN
CiB0eXBlZGVmIHZvaWQgKCpkZXZmc19jbG9uZV9mbikgX19QKCh2b2lkICph
cmcsIGNoYXIgKm5hbWUsIGludCBuYW1lbGVuLCBkZXZfdCAqcmVzdWx0KSk7
DQpJbmRleDogZGV2ZnNfZGV2cy5jDQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
DQpSQ1MgZmlsZTogL2hvbWUvbmN2cy9zcmMvc3lzL2ZzL2RldmZzL2RldmZz
X2RldnMuYyx2DQpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMw0KZGlmZiAtdSAt
cjEuMyBkZXZmc19kZXZzLmMNCi0tLSBkZXZmc19kZXZzLmMJMjAwMC8wOC8y
NCAxNTozNjo0NwkxLjMNCisrKyBkZXZmc19kZXZzLmMJMjAwMC8wOC8yNiAx
MTo0OTo0OQ0KQEAgLTQ2LDE2ICs0NiwxMyBAQA0KIHsNCiAJaW50IGk7DQog
CXN0cnVjdCBkZXZmc19kaXJlbnQgKmRlOw0KLQlzdHJ1Y3QgZGlyZW50IGQ7
DQogDQotCWQuZF9uYW1sZW4gPSBuYW1lbGVuOw0KLQlpID0gc2l6ZW9mICgq
ZGUpICsgR0VORVJJQ19ESVJTSVooJmQpOw0KKwlpID0gc2l6ZW9mICgqZGUp
ICsgbmFtZWxlbiArIDE7DQogCU1BTExPQyhkZSwgc3RydWN0IGRldmZzX2Rp
cmVudCAqLCBpLCBNX0RFVkZTLCBNX1dBSVRPSyk7DQogCWJ6ZXJvKGRlLCBp
KTsNCi0JZGUtPmRlX2RpcmVudCA9IChzdHJ1Y3QgZGlyZW50ICopKGRlICsg
MSk7DQotCWRlLT5kZV9kaXJlbnQtPmRfbmFtbGVuID0gbmFtZWxlbjsNCi0J
ZGUtPmRlX2RpcmVudC0+ZF9yZWNsZW4gPSBHRU5FUklDX0RJUlNJWigmZCk7
DQotCWJjb3B5KG5hbWUsIGRlLT5kZV9kaXJlbnQtPmRfbmFtZSwgbmFtZWxl
biArIDEpOw0KKwlkZS0+ZGVfbmFtZSA9IChjaGFyICopKGRlICsgMSk7DQor
CWRlLT5kZV9uYW1lbGVuID0gbmFtZWxlbjsNCisJYmNvcHkobmFtZSwgZGUt
PmRlX25hbWUsIG5hbWVsZW4pOw0KIAluYW5vdGltZSgmZGUtPmRlX2N0aW1l
KTsNCiAJZGUtPmRlX210aW1lID0gZGUtPmRlX2F0aW1lID0gZGUtPmRlX2N0
aW1lOw0KIAlkZS0+ZGVfbGlua3MgPSAxOw0KQEAgLTYzLDM2ICs2MCwyMyBA
QA0KIH0NCiANCiBzdHJ1Y3QgZGV2ZnNfZGlyZW50ICoNCi1kZXZmc192bWtk
aXIoY2hhciAqbmFtZSwgaW50IG5hbWVsZW4sIHN0cnVjdCBkZXZmc19kaXJl
bnQgKmRvdGRvdCkNCitkZXZmc192bWtkaXIoY2hhciAqbmFtZSwgaW50IG5h
bWVsZW4sIHN0cnVjdCBkZXZmc19kaXJlbnQgKnBhcmVudCkNCiB7DQotCXN0
cnVjdCBkZXZmc19kaXJlbnQgKmRkOw0KIAlzdHJ1Y3QgZGV2ZnNfZGlyZW50
ICpkZTsNCiANCi0JZGQgPSBkZXZmc19uZXdkaXJlbnQobmFtZSwgbmFtZWxl
bik7DQorCWRlID0gZGV2ZnNfbmV3ZGlyZW50KG5hbWUsIG5hbWVsZW4pOw0K
IA0KLQlUQUlMUV9JTklUKCZkZC0+ZGVfZGxpc3QpOw0KKwlUQUlMUV9JTklU
KCZkZS0+ZGVfZGxpc3QpOw0KIA0KLQlkZC0+ZGVfZGlyZW50LT5kX3R5cGUg
PSBEVF9ESVI7DQotCWRkLT5kZV9tb2RlID0gMDc1NTsNCi0JZGQtPmRlX2xp
bmtzID0gMjsNCi0JZGQtPmRlX2RpciA9IGRkOw0KLQ0KLQlkZSA9IGRldmZz
X25ld2RpcmVudCgiLiIsIDEpOw0KLQlkZS0+ZGVfZGlyZW50LT5kX3R5cGUg
PSBEVF9ESVI7DQotCWRlLT5kZV9kaXIgPSBkZDsNCi0JZGUtPmRlX2ZsYWdz
IHw9IERFX0RPVDsNCi0JVEFJTFFfSU5TRVJUX1RBSUwoJmRkLT5kZV9kbGlz
dCwgZGUsIGRlX2xpc3QpOw0KLQ0KLQlkZSA9IGRldmZzX25ld2RpcmVudCgi
Li4iLCAyKTsNCi0JZGUtPmRlX2RpcmVudC0+ZF90eXBlID0gRFRfRElSOw0K
LQlpZiAoZG90ZG90ID09IE5VTEwpDQotCQlkZS0+ZGVfZGlyID0gZGQ7DQot
CWVsc2UNCi0JCWRlLT5kZV9kaXIgPSBkb3Rkb3Q7DQotCWRlLT5kZV9mbGFn
cyB8PSBERV9ET1RET1Q7DQotCVRBSUxRX0lOU0VSVF9UQUlMKCZkZC0+ZGVf
ZGxpc3QsIGRlLCBkZV9saXN0KTsNCisJZGUtPmRlX3R5cGUgPSBEVF9ESVI7
DQorCWRlLT5kZV9tb2RlID0gMDc1NTsNCisJZGUtPmRlX2xpbmtzID0gMjsN
CiANCi0JcmV0dXJuIChkZCk7DQorCWlmIChwYXJlbnQpIHsNCisJCWRlLT5k
ZV9wYXJlbnQgPSBwYXJlbnQ7DQorCQlUQUlMUV9JTlNFUlRfVEFJTCgmcGFy
ZW50LT5kZV9kbGlzdCwgZGUsIGRlX2xpc3QpOw0KKwl9DQorCXJldHVybiAo
ZGUpOw0KIH0NCiANCiBzdGF0aWMgdm9pZA0KQEAgLTEyNSw3ICsxMDksNiBA
QA0KIAlGUkVFKGRkLCBNX0RFVkZTKTsNCiB9DQogDQotDQogaW50DQogZGV2
ZnNfcG9wdWxhdGUoc3RydWN0IGRldmZzX21vdW50ICpkbSkNCiB7DQpAQCAt
MTQ1LDcgKzEyOCw3IEBADQogCQkJCWNvbnRpbnVlOw0KIAkJCX0NCiAJCQlp
ZiAoZGV2ID09IE5VTEwgJiYgZGUgIT0gTlVMTCkgew0KLQkJCQlkZCA9IGRl
LT5kZV9kaXI7DQorCQkJCWRkID0gZGUtPmRlX3BhcmVudDsNCiAJCQkJZG0t
PmRtX2RpcmVudFtpXSA9IE5VTEw7DQogCQkJCVRBSUxRX1JFTU9WRSgmZGQt
PmRlX2RsaXN0LCBkZSwgZGVfbGlzdCk7DQogCQkJCWlmIChkZS0+ZGVfdm5v
ZGUpIHsNCkBAIC0xNjYsOSArMTQ5LDkgQEANCiAJCQkJY29udGludWU7DQog
CQkJaWYgKCpxID09ICcvJykgew0KIAkJCQlUQUlMUV9GT1JFQUNIKGRlLCAm
ZGQtPmRlX2RsaXN0LCBkZV9saXN0KSB7DQotCQkJCQlpZiAoZGUtPmRlX2Rp
cmVudC0+ZF9uYW1sZW4gIT0gcSAtIHMpDQorCQkJCQlpZiAoZGUtPmRlX25h
bWVsZW4gIT0gcSAtIHMpDQogCQkJCQkJY29udGludWU7DQotCQkJCQlpZiAo
YmNtcChkZS0+ZGVfZGlyZW50LT5kX25hbWUsIHMsIHEgLSBzKSkNCisJCQkJ
CWlmIChiY21wKGRlLT5kZV9uYW1lLCBzLCBxIC0gcykpDQogCQkJCQkJY29u
dGludWU7DQogCQkJCQlnb3RvIGZkaXI7DQogCQkJCX0NCkBAIC0xODcsNyAr
MTcwLDcgQEANCiAJCQkJZGUtPmRlX3VpZCA9IDA7DQogCQkJCWRlLT5kZV9n
aWQgPSAwOw0KIAkJCQlkZS0+ZGVfbW9kZSA9IDA2NjY7DQotCQkJCWRlLT5k
ZV9kaXJlbnQtPmRfdHlwZSA9IERUX0xOSzsNCisJCQkJZGUtPmRlX3R5cGUg
PSBEVF9MTks7DQogCQkJCXBkZXYgPSBkZXYtPnNpX2RydjE7DQogCQkJCWog
PSBzdHJsZW4ocGRldi0+c2lfbmFtZSkgKyAxOw0KIAkJCQlNQUxMT0MoZGUt
PmRlX3N5bWxpbmssIGNoYXIgKiwgaiwgTV9ERVZGUywgTV9XQUlUT0spOw0K
QEAgLTE5Nyw3ICsxODAsNyBAQA0KIAkJCQlkZS0+ZGVfdWlkID0gZGV2LT5z
aV91aWQ7DQogCQkJCWRlLT5kZV9naWQgPSBkZXYtPnNpX2dpZDsNCiAJCQkJ
ZGUtPmRlX21vZGUgPSBkZXYtPnNpX21vZGU7DQotCQkJCWRlLT5kZV9kaXJl
bnQtPmRfdHlwZSA9IERUX0NIUjsNCisJCQkJZGUtPmRlX3R5cGUgPSBEVF9D
SFI7DQogCQkJfQ0KIAkJCWRtLT5kbV9kaXJlbnRbaV0gPSBkZTsNCiAJCQlU
QUlMUV9JTlNFUlRfVEFJTCgmZGQtPmRlX2RsaXN0LCBkZSwgZGVfbGlzdCk7
DQpJbmRleDogZGV2ZnNfdmZzb3BzLmMNCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0NClJDUyBmaWxlOiAvaG9tZS9uY3ZzL3NyYy9zeXMvZnMvZGV2ZnMvZGV2
ZnNfdmZzb3BzLmMsdg0KcmV0cmlldmluZyByZXZpc2lvbiAxLjMNCmRpZmYg
LXUgLXIxLjMgZGV2ZnNfdmZzb3BzLmMNCi0tLSBkZXZmc192ZnNvcHMuYwky
MDAwLzA4LzI0IDE1OjM2OjQ3CTEuMw0KKysrIGRldmZzX3Zmc29wcy5jCTIw
MDAvMDgvMjYgMTE6NDk6NDkNCkBAIC03OSwzMCArNzksMjMgQEANCiAJCXJl
dHVybiAoRU9QTk9UU1VQUCk7DQogDQogCU1BTExPQyhmbXAsIHN0cnVjdCBk
ZXZmc19tb3VudCAqLCBzaXplb2Yoc3RydWN0IGRldmZzX21vdW50KSwgTV9E
RVZGUywgTV9XQUlUT0spOw0KLQ0KIAliemVybyhmbXAsIHNpemVvZigqZm1w
KSk7DQogDQotCWVycm9yID0gZ2V0bmV3dm5vZGUoVlRfREVWRlMsIG1wLCBk
ZXZmc192bm9kZW9wX3AsICZydnApOw0KLQlpZiAoZXJyb3IpIHsNCi0JCUZS
RUUoZm1wLCBNX0RFVkZTKTsNCi0JCXJldHVybiAoZXJyb3IpOw0KLQl9DQot
DQotCXZob2xkKHJ2cCk7DQotCXJ2cC0+dl90eXBlID0gVkRJUjsNCi0JcnZw
LT52X2ZsYWcgfD0gVlJPT1Q7DQogCW1wLT5tbnRfZmxhZyB8PSBNTlRfTE9D
QUw7DQogCW1wLT5tbnRfZGF0YSA9IChxYWRkcl90KSBmbXA7DQogCXZmc19n
ZXRuZXdmc2lkKG1wKTsNCiANCiAJZm1wLT5kbV9pbm9kZSA9IE5ERVZJTk87
DQotCWZtcC0+ZG1fcm9vdCA9IHJ2cDsNCiANCiAJZm1wLT5kbV9yb290ZGly
ID0gZGV2ZnNfdm1rZGlyKCIocm9vdCkiLCA2LCBOVUxMKTsNCiAJZm1wLT5k
bV9yb290ZGlyLT5kZV9pbm9kZSA9IDI7DQotCXJ2cC0+dl9kYXRhID0gZm1w
LT5kbV9yb290ZGlyOw0KLQ0KIAlmbXAtPmRtX2Jhc2VkaXIgPSBmbXAtPmRt
X3Jvb3RkaXI7DQorCWVycm9yID0gZGV2ZnNfcm9vdChtcCwgJnJ2cCk7DQor
CWlmIChlcnJvcikgew0KKwkJRlJFRShmbXAsIE1fREVWRlMpOw0KKwkJcmV0
dXJuIGVycm9yOw0KKwl9DQorCVZPUF9VTkxPQ0socnZwLCAwLCBwKTsNCiAN
CiAJaWYgKHBhdGggIT0gTlVMTCkgew0KIAkJKHZvaWQpIGNvcHlpbnN0cihw
YXRoLCBtcC0+bW50X3N0YXQuZl9tbnRvbm5hbWUsIE1OQU1FTEVOIC0gMSwg
JnNpemUpOw0KQEAgLTEyNywxMyArMTIwLDE1IEBADQogew0KIAlpbnQgZXJy
b3I7DQogCWludCBmbGFncyA9IDA7DQotCXN0cnVjdCB2bm9kZSAqcm9vdHZw
ID0gVkZTVE9ERVZGUyhtcCktPmRtX3Jvb3Q7DQotCXN0cnVjdCBkZXZmc19t
b3VudCAqZm1wOw0KKwlzdHJ1Y3QgZGV2ZnNfbW91bnQgKmZtcCA9IFZGU1RP
REVWRlMobXApOw0KKwlzdHJ1Y3Qgdm5vZGUgKnJvb3R2cDsNCiANCi0JZm1w
ID0gKHN0cnVjdCBkZXZmc19tb3VudCopIG1wLT5tbnRfZGF0YTsNCiAJaWYg
KG1udGZsYWdzICYgTU5UX0ZPUkNFKQ0KIAkJZmxhZ3MgfD0gRk9SQ0VDTE9T
RTsNCiANCisJZXJyb3IgPSBWRlNfUk9PVChtcCwgJnJvb3R2cCk7DQorCWlm
IChlcnJvcikNCisJCXJldHVybiAoZXJyb3IpOw0KIAkvKg0KIAkgKiBDbGVh
ciBvdXQgYnVmZmVyIGNhY2hlLiAgSSBkb24ndCB0aGluayB3ZQ0KIAkgKiBl
dmVyIGdldCBhbnl0aGluZyBjYWNoZWQgYXQgdGhpcyBsZXZlbCBhdCB0aGUN
CkBAIC0xNDYsNiArMTQxLDcgQEANCiAJaWYgKGVycm9yKQ0KIAkJcmV0dXJu
IChlcnJvcik7DQogDQorCXZwdXQocm9vdHZwKTsNCiAJLyoNCiAJICogUmVs
ZWFzZSByZWZlcmVuY2Ugb24gdW5kZXJseWluZyByb290IHZub2RlDQogCSAq
Lw0KQEAgLTE1Nyw4ICsxNTMsOCBAQA0KIAkvKg0KIAkgKiBGaW5hbGx5LCB0
aHJvdyBhd2F5IHRoZSBkZXZmc19tb3VudCBzdHJ1Y3R1cmUNCiAJICovDQot
CWZyZWUobXAtPm1udF9kYXRhLCBNX0RFVkZTKTsNCi0JbXAtPm1udF9kYXRh
ID0gMDsNCisJbXAtPm1udF9kYXRhID0gKHFhZGRyX3QpMDsNCisJZnJlZShm
bXAsIE1fREVWRlMpOw0KIAlyZXR1cm4gMDsNCiB9DQogDQpAQCAtMTY3LDE1
ICsxNjMsMTggQEANCiAJc3RydWN0IG1vdW50ICptcDsNCiAJc3RydWN0IHZu
b2RlICoqdnBwOw0KIHsNCisJc3RydWN0IGRldmZzX21vdW50ICpkbXAgPSBW
RlNUT0RFVkZTKG1wKTsNCiAJc3RydWN0IHByb2MgKnAgPSBjdXJwcm9jOwkv
KiBYWFggKi8NCiAJc3RydWN0IHZub2RlICp2cDsNCisJaW50IGVycm9yOw0K
IA0KIAkvKg0KIAkgKiBSZXR1cm4gbG9ja2VkIHJlZmVyZW5jZSB0byByb290
Lg0KIAkgKi8NCi0JdnAgPSBWRlNUT0RFVkZTKG1wKS0+ZG1fcm9vdDsNCi0J
VlJFRih2cCk7DQotCXZuX2xvY2sodnAsIExLX0VYQ0xVU0lWRSB8IExLX1JF
VFJZLCBwKTsNCisJZXJyb3IgPSBkZXZmc19hbGxvY3YoZG1wLT5kbV9yb290
ZGlyLCBtcCwgJnZwLCBwKTsNCisJaWYgKGVycm9yKQ0KKwkJcmV0dXJuIGVy
cm9yOw0KKwl2cC0+dl9mbGFnIHw9IFZST09UOw0KIAkqdnBwID0gdnA7DQog
CXJldHVybiAoMCk7DQogfQ0KQEAgLTE5Nyw2ICsxOTYsNyBAQA0KIAlzYnAt
PmZfZmZyZWUgPSAwOw0KIAlpZiAoc2JwICE9ICZtcC0+bW50X3N0YXQpIHsN
CiAJCXNicC0+Zl90eXBlID0gbXAtPm1udF92ZmMtPnZmY190eXBlbnVtOw0K
KwkJc2JwLT5mX293bmVyID0gbXAtPm1udF9zdGF0LmZfb3duZXI7CS8qIHVz
ZXIgdGhhdCBtb3VudGVkIHRoZSBmaWxlc3lzdGVtICovDQogCQliY29weSgm
bXAtPm1udF9zdGF0LmZfZnNpZCwgJnNicC0+Zl9mc2lkLCBzaXplb2Yoc2Jw
LT5mX2ZzaWQpKTsNCiAJCWJjb3B5KG1wLT5tbnRfc3RhdC5mX21udG9ubmFt
ZSwgc2JwLT5mX21udG9ubmFtZSwgTU5BTUVMRU4pOw0KIAkJYmNvcHkobXAt
Pm1udF9zdGF0LmZfbW50ZnJvbW5hbWUsIHNicC0+Zl9tbnRmcm9tbmFtZSwg
TU5BTUVMRU4pOw0KSW5kZXg6IGRldmZzX3Zub3BzLmMNCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0NClJDUyBmaWxlOiAvaG9tZS9uY3ZzL3NyYy9zeXMvZnMv
ZGV2ZnMvZGV2ZnNfdm5vcHMuYyx2DQpyZXRyaWV2aW5nIHJldmlzaW9uIDEu
Mw0KZGlmZiAtdSAtcjEuMyBkZXZmc192bm9wcy5jDQotLS0gZGV2ZnNfdm5v
cHMuYwkyMDAwLzA4LzI0IDE1OjM2OjQ3CTEuMw0KKysrIGRldmZzX3Zub3Bz
LmMJMjAwMC8wOC8yNiAxMjoyOToyMg0KQEAgLTUzLDcgKzUzLDcgQEANCiAj
aW5jbHVkZSA8ZnMvZGV2ZnMvZGV2ZnMuaD4NCiANCiAjZGVmaW5lIEtTVFJJ
TkcJMjU2CQkvKiBMYXJnZXN0IEkvTyBhdmFpbGFibGUgdmlhIHRoaXMgZmls
ZXN5c3RlbSAqLw0KLSNkZWZpbmUJVUlPX01YIDMyDQorI2RlZmluZQlERV9T
SVpFCShzaXplb2Yoc3RydWN0IGRpcmVudCkpDQogDQogc3RhdGljIGludAlk
ZXZmc19hY2Nlc3MgX19QKChzdHJ1Y3Qgdm9wX2FjY2Vzc19hcmdzICphcCkp
Ow0KIHN0YXRpYyBpbnQJZGV2ZnNfYmFkb3AgX19QKCh2b2lkKSk7DQpAQCAt
NjksMTYgKzY5LDE4IEBADQogc3RhdGljIGludAlkZXZmc19zeW1saW5rIF9f
UCgoc3RydWN0IHZvcF9zeW1saW5rX2FyZ3MgKmFwKSk7DQogDQogDQotc3Rh
dGljIGludA0KLWRldmZzX2FsbG9jdihzdHJ1Y3QgZGV2ZnNfZGlyZW50ICpk
ZSwgc3RydWN0IG1vdW50ICptcCwgc3RydWN0IHZub2RlICoqdnBwLCBzdHJ1
Y3QgcHJvYyAqcCkNCitpbnQNCitkZXZmc19hbGxvY3Yoc3RydWN0IGRldmZz
X2RpcmVudCAqZGUsIHN0cnVjdCBtb3VudCAqbXAsIHN0cnVjdCB2bm9kZSAq
KnZwcCwNCisJc3RydWN0IHByb2MgKnByb2MpDQogew0KLQlpbnQgZXJyb3I7
DQorCXN0cnVjdCBwcm9jICpwID0gcHJvYyA/IHByb2MgOiBjdXJwcm9jOwkv
KiBYWFggKi8NCiAJc3RydWN0IHZub2RlICp2cDsNCisJaW50IGVycm9yOw0K
IA0KIGxvb3A6DQogCXZwID0gZGUtPmRlX3Zub2RlOw0KIAlpZiAodnAgIT0g
TlVMTCkgew0KLQkJaWYgKHZnZXQodnAsIDAsIHAgPyBwIDogY3VycHJvYykp
DQorCQlpZiAodmdldCh2cCwgTEtfRVhDTFVTSVZFLCBwKSkNCiAJCQlnb3Rv
IGxvb3A7DQogCQkqdnBwID0gdnA7DQogCQlyZXR1cm4gKDApOw0KQEAgLTg5
LDEzICs5MSwxMyBAQA0KIAkJcmV0dXJuIChlcnJvcik7DQogCX0NCiANCi0J
aWYgKGRlLT5kZV9kaXJlbnQtPmRfdHlwZSA9PSBEVF9DSFIpIHsNCisJaWYg
KGRlLT5kZV90eXBlID09IERUX0NIUikgew0KIAkJdnAtPnZfdHlwZSA9IFZD
SFI7DQogCQl2cCA9IGFkZGFsaWFzdSh2cCwgZGV2ZnNfaW5vdFtkZS0+ZGVf
aW5vZGVdLT5zaV91ZGV2KTsNCiAJCXZwLT52X29wID0gZGV2ZnNfc3BlY29w
X3A7DQotCX0gZWxzZSBpZiAoZGUtPmRlX2RpcmVudC0+ZF90eXBlID09IERU
X0RJUikgew0KKwl9IGVsc2UgaWYgKGRlLT5kZV90eXBlID09IERUX0RJUikg
ew0KIAkJdnAtPnZfdHlwZSA9IFZESVI7DQotCX0gZWxzZSBpZiAoZGUtPmRl
X2RpcmVudC0+ZF90eXBlID09IERUX0xOSykgew0KKwl9IGVsc2UgaWYgKGRl
LT5kZV90eXBlID09IERUX0xOSykgew0KIAkJdnAtPnZfdHlwZSA9IFZMTks7
DQogCX0gZWxzZSB7DQogCQl2cC0+dl90eXBlID0gVkJBRDsNCkBAIC0xMDMs
OSArMTA1LDI5IEBADQogCXZwLT52X2RhdGEgPSBkZTsNCiAJZGUtPmRlX3Zu
b2RlID0gdnA7DQogCXZob2xkKHZwKTsNCisJdm5fbG9jayh2cCwgTEtfRVhD
TFVTSVZFIHwgTEtfUkVUUlksIHApOw0KIAkqdnBwID0gdnA7DQogCXJldHVy
biAoMCk7DQogfQ0KKw0KK3N0YXRpYyBpbnQNCitkZXZmc19kZV9sb29rdXAo
c3RydWN0IHZub2RlICpkdnAsIGNvbnN0IGNoYXIgKm5hbWUsIGludCBuYW1l
bGVuLA0KKwlzdHJ1Y3QgZGV2ZnNfZGlyZW50ICoqZGVwcCkNCit7DQorCXN0
cnVjdCBkZXZmc19kaXJlbnQgKmRkLCAqZGU7DQorDQorCWRldmZzX3BvcHVs
YXRlKFZGU1RPREVWRlMoZHZwLT52X21vdW50KSk7DQorCWRkID0gVk5UT0RF
VkZTKGR2cCk7DQorCVRBSUxRX0ZPUkVBQ0goZGUsICZkZC0+ZGVfZGxpc3Qs
IGRlX2xpc3QpIHsNCisJCWlmIChuYW1lbGVuICE9IGRlLT5kZV9uYW1lbGVu
IHx8DQorCQkgICAgYmNtcChuYW1lLCBkZS0+ZGVfbmFtZSwgbmFtZWxlbikg
IT0gMCkNCisJCQljb250aW51ZTsNCisJCSpkZXBwID0gZGU7DQorCQlyZXR1
cm4gMDsNCisJfQ0KKwlyZXR1cm4gRU5PRU5UOw0KK30NCisNCiAvKg0KICAq
IHZwIGlzIHRoZSBjdXJyZW50IG5hbWVpIGRpcmVjdG9yeQ0KICAqIG5kcCBp
cyB0aGUgbmFtZSB0byBsb2NhdGUgaW4gdGhhdCBkaXJlY3RvcnkuLi4NCkBA
IC0xMjEsNDcgKzE0Myw2NyBAQA0KIAlzdHJ1Y3QgY29tcG9uZW50bmFtZSAq
Y25wID0gYXAtPmFfY25wOw0KIAlzdHJ1Y3Qgdm5vZGUgKip2cHAgPSBhcC0+
YV92cHA7DQogCXN0cnVjdCB2bm9kZSAqZHZwID0gYXAtPmFfZHZwOw0KLQlj
aGFyICpwbmFtZSA9IGNucC0+Y25fbmFtZXB0cjsNCisJY2hhciAqbmFtZSA9
IGNucC0+Y25fbmFtZXB0cjsNCiAJc3RydWN0IHByb2MgKnAgPSBjbnAtPmNu
X3Byb2M7DQogCXN0cnVjdCBkZXZmc19kaXJlbnQgKmRkOw0KIAlzdHJ1Y3Qg
ZGV2ZnNfZGlyZW50ICpkZTsNCiAJc3RydWN0IGRldmZzX21vdW50ICpkbXA7
DQogCWRldl90IGNkZXY7DQotCWludCBlcnJvciwgY2xvbmVkLCBpOw0KIAlj
aGFyIHNwZWNuYW1lW1NQRUNOQU1FTEVOICsgMV07DQorCWludCBmbGFncyA9
IGNucC0+Y25fZmxhZ3M7DQorCWludCBpc2RvdGRvdCA9IGZsYWdzICYgSVNE
T1RET1Q7DQorCWludCBuYW1lbGVuID0gY25wLT5jbl9uYW1lbGVuOw0KKwlp
bnQgbmFtZWlvcCA9IGNucC0+Y25fbmFtZWlvcDsNCisJaW50IGxvY2twYXJl
bnQsIHdhbnRwYXJlbnQsIGVycm9yLCBpc2xhc3RjbiwgaTsNCiANCiAJKnZw
cCA9IE5VTExWUDsNCiANCi0jaWYgMA0KLQllcnJvciA9IFZPUF9BQ0NFU1Mo
ZHZwLCBWRVhFQywgY3JlZCwgY25wLT5jbl9wcm9jKTsNCisJaWYgKGR2cC0+
dl90eXBlICE9IFZESVIpDQorCQlyZXR1cm4gRU5PVERJUjsNCisNCisJaWYg
KGlzZG90ZG90ICYmIChkdnAtPnZfZmxhZyAmIFZST09UKSkNCisJCXJldHVy
biBFSU87DQorDQorCWVycm9yID0gVk9QX0FDQ0VTUyhkdnAsIFZFWEVDLCBj
bnAtPmNuX2NyZWQsIGNucC0+Y25fcHJvYyk7DQogCWlmIChlcnJvcikNCiAJ
CXJldHVybiAoZXJyb3IpOw0KLSNlbmRpZg0KKw0KKwlpZiAobmFtZWlvcCA9
PSBSRU5BTUUpDQorCQlyZXR1cm4gRU9QTk9UU1VQUDsNCiANCi0JVk9QX1VO
TE9DSyhkdnAsIDAsIHApOw0KLQlpZiAoY25wLT5jbl9uYW1lbGVuID09IDEg
JiYgKnBuYW1lID09ICcuJykgew0KKwlpZiAobmFtZWxlbiA9PSAxICYmIG5h
bWVbMF0gPT0gJy4nKSB7DQorCQlpZiAobmFtZWlvcCAhPSBMT09LVVApDQor
CQkJcmV0dXJuIEVJTlZBTDsNCiAJCSp2cHAgPSBkdnA7DQogCQlWUkVGKGR2
cCk7DQotCQl2bl9sb2NrKGR2cCwgTEtfU0hBUkVEIHwgTEtfUkVUUlksIHAp
Ow0KIAkJcmV0dXJuICgwKTsNCiAJfQ0KLQ0KLQljbG9uZWQgPSAwOw0KLQ0K
LQlkbXAgPSBWRlNUT0RFVkZTKGR2cC0+dl9tb3VudCk7DQotYWdhaW46DQot
DQotCWRldmZzX3BvcHVsYXRlKGRtcCk7DQotCWRkID0gZHZwLT52X2RhdGE7
DQotCVRBSUxRX0ZPUkVBQ0goZGUsICZkZC0+ZGVfZGxpc3QsIGRlX2xpc3Qp
IHsNCi0JCWlmIChjbnAtPmNuX25hbWVsZW4gIT0gZGUtPmRlX2RpcmVudC0+
ZF9uYW1sZW4pDQotCQkJY29udGludWU7DQotCQlpZiAoYmNtcChjbnAtPmNu
X25hbWVwdHIsIGRlLT5kZV9kaXJlbnQtPmRfbmFtZSwgZGUtPmRlX2RpcmVu
dC0+ZF9uYW1sZW4pICE9IDApDQotCQkJY29udGludWU7DQotCQlnb3RvIGZv
dW5kOw0KKwlkZCA9IFZOVE9ERVZGUyhkdnApOw0KKwlpc2xhc3RjbiA9IGZs
YWdzICYgSVNMQVNUQ047DQorCWxvY2twYXJlbnQgPSBmbGFncyAmIExPQ0tQ
QVJFTlQ7DQorCXdhbnRwYXJlbnQgPSBmbGFncyAmIChMT0NLUEFSRU5UIHwg
V0FOVFBBUkVOVCk7DQorDQorCWlmIChpc2RvdGRvdCkgew0KKwkJaWYgKG5h
bWVpb3AgIT0gTE9PS1VQKQ0KKwkJCXJldHVybiBFSU5WQUw7DQorCQlWT1Bf
VU5MT0NLKGR2cCwgMCwgcCk7DQorCQlkZSA9IGRkLT5kZV9wYXJlbnQ7DQor
CQllcnJvciA9IGRldmZzX2FsbG9jdihkZSwgZHZwLT52X21vdW50LCB2cHAs
IHApOw0KKwkJaWYgKGVycm9yKSB7DQorCQkJdm5fbG9jayhkdnAsIExLX0VY
Q0xVU0lWRSB8IExLX1JFVFJZLCBwKTsNCisJCQlyZXR1cm4gZXJyb3I7DQor
CQl9DQorCQlpZiAobG9ja3BhcmVudCAmJiBpc2xhc3RjbiAmJg0KKwkJICAg
IChlcnJvciA9IHZuX2xvY2soZHZwLCBMS19FWENMVVNJVkUsIHApKSkgew0K
KwkJICAgIAl2cHV0KCp2cHApOw0KKwkJCXJldHVybiBlcnJvcjsNCisJCX0N
CisJCXJldHVybiAwOw0KIAl9DQogDQotCWlmICghY2xvbmVkKSB7DQorCWRt
cCA9IFZGU1RPREVWRlMoZHZwLT52X21vdW50KTsNCisJZXJyb3IgPSBkZXZm
c19kZV9sb29rdXAoZHZwLCBuYW1lLCBuYW1lbGVuLCAmZGUpOw0KKwlpZiAo
ZXJyb3IpIHsNCiAJCS8qDQogCQkgKiBPSywgd2UgZGlkbid0IGhhdmUgYW4g
ZW50cnkgZm9yIHRoZSBuYW1lIHdlIHdlcmUgYXNrZWQgZm9yDQogCQkgKiBz
byB3ZSB0cnkgdG8gc2VlIGlmIGFueWJvZHkgY2FuIGNyZWF0ZSBpdCBvbiBk
ZW1hbmQuDQpAQCAtMTcxLDI0ICsyMTMsMjEgQEANCiAJCSAqLw0KIAkJaSA9
IFNQRUNOQU1FTEVOOw0KIAkJc3BlY25hbWVbaV0gPSAnXDAnOw0KLQkJaSAt
PSBjbnAtPmNuX25hbWVsZW47DQorCQlpIC09IG5hbWVsZW47DQogCQlpZiAo
aSA8IDApDQogCQkJIGdvdG8gbm9jbG9uZTsNCi0JCWJjb3B5KGNucC0+Y25f
bmFtZXB0ciwgc3BlY25hbWUgKyBpLCBjbnAtPmNuX25hbWVsZW4pOw0KKwkJ
YmNvcHkobmFtZSwgc3BlY25hbWUgKyBpLCBuYW1lbGVuKTsNCiAJCWRlID0g
ZGQ7DQotCQl3aGlsZSAoZGUgIT0gZG1wLT5kbV9iYXNlZGlyKSB7DQorCQl3
aGlsZSAoZGUtPmRlX3BhcmVudCkgew0KIAkJCWktLTsNCiAJCQlpZiAoaSA8
IDApDQogCQkJCSBnb3RvIG5vY2xvbmU7DQogCQkJc3BlY25hbWVbaV0gPSAn
Lyc7DQotCQkJaSAtPSBkZS0+ZGVfZGlyZW50LT5kX25hbWxlbjsNCisJCQlp
IC09IGRlLT5kZV9uYW1lbGVuOw0KIAkJCWlmIChpIDwgMCkNCiAJCQkJIGdv
dG8gbm9jbG9uZTsNCi0JCQliY29weShkZS0+ZGVfZGlyZW50LT5kX25hbWUs
IHNwZWNuYW1lICsgaSwNCi0JCQkgICAgZGUtPmRlX2RpcmVudC0+ZF9uYW1s
ZW4pOw0KLQkJCWRlID0gVEFJTFFfRklSU1QoJmRlLT5kZV9kbGlzdCk7CS8q
ICIuIiAqLw0KLQkJCWRlID0gVEFJTFFfTkVYVChkZSwgZGVfbGlzdCk7CQkv
KiAiLi4iICovDQotCQkJZGUgPSBkZS0+ZGVfZGlyOw0KKwkJCWJjb3B5KGRl
LT5kZV9uYW1lLCBzcGVjbmFtZSArIGksIGRlLT5kZV9uYW1lbGVuKTsNCisJ
CQlkZSA9IGRlLT5kZV9wYXJlbnQ7DQogCQl9DQogDQogI2lmIDANCkBAIC0y
MDEsNDcgKzI0MCw0NCBAQA0KIAkJcHJpbnRmKCJjbG9uZWQgJXMgLT4gJXAg
JXNcbiIsIHNwZWNuYW1lICsgaSwgY2RldiwNCiAJCSAgICBjZGV2ID09IE5P
REVWID8gIk5PREVWIiA6IGNkZXYtPnNpX25hbWUpOw0KICNlbmRpZg0KLQkJ
aWYgKGNkZXYgIT0gTk9ERVYpIHsNCi0JCQljbG9uZWQgPSAxOw0KLQkJCWdv
dG8gYWdhaW47DQotCQl9DQorCQlpZiAoY2RldiAhPSBOT0RFVikNCisJCQll
cnJvciA9IGRldmZzX2RlX2xvb2t1cChkdnAsIG5hbWUsIG5hbWVsZW4sICZk
ZSk7DQogCX0NCi0NCiBub2Nsb25lOg0KLQkvKiBObyBsdWNrLCB0b28gYmFk
LiAqLw0KLQ0KLQlpZiAoKGNucC0+Y25fbmFtZWlvcCA9PSBDUkVBVEUgfHwg
Y25wLT5jbl9uYW1laW9wID09IFJFTkFNRSkgJiYNCi0JICAgIChjbnAtPmNu
X2ZsYWdzICYgSVNMQVNUQ04pKSB7DQotCQljbnAtPmNuX2ZsYWdzIHw9IFNB
VkVOQU1FOw0KLQkJaWYgKCEoY25wLT5jbl9mbGFncyAmIExPQ0tQQVJFTlQp
KQ0KLQkJCVZPUF9VTkxPQ0soZHZwLCAwLCBwKTsNCi0JCXJldHVybiAoRUpV
U1RSRVRVUk4pOw0KLQl9IGVsc2Ugew0KLQkJdm5fbG9jayhkdnAsIExLX1NI
QVJFRCB8IExLX1JFVFJZLCBwKTsNCisJaWYgKGVycm9yKSB7DQorCQkvKg0K
KwkJICogTm8gdmFsaWQgZW50cnkgd2FzIGZvdW5kDQorCQkgKi8NCisJCWlm
ICgobmFtZWlvcCA9PSBDUkVBVEUgfHwgbmFtZWlvcCA9PSBSRU5BTUUpICYm
DQorCQkgICAgd2FudHBhcmVudCAmJiBpc2xhc3Rjbikgew0KKwkJCWNucC0+
Y25fZmxhZ3MgfD0gU0FWRU5BTUU7DQorCQkJaWYgKCFsb2NrcGFyZW50KQ0K
KwkJCQlWT1BfVU5MT0NLKGR2cCwgMCwgcCk7DQorCQkJcmV0dXJuIChFSlVT
VFJFVFVSTik7DQorCQl9DQogCQlyZXR1cm4gKEVOT0VOVCk7DQogCX0NCi0N
CiANCi1mb3VuZDoNCi0NCi0JZXJyb3IgPSBkZXZmc19hbGxvY3YoZGUsIGR2
cC0+dl9tb3VudCwgdnBwLCBwKTsNCi0JaWYgKGVycm9yICE9IDApIHsNCi0J
CXZuX2xvY2soZHZwLCBMS19TSEFSRUQgfCBMS19SRVRSWSwgcCk7DQotCQly
ZXR1cm4gKGVycm9yKTsNCi0JfQ0KLQlpZiAoKGNucC0+Y25fbmFtZWlvcCA9
PSBERUxFVEUpICYmIChjbnAtPmNuX2ZsYWdzICYgSVNMQVNUQ04pKSB7DQor
CWlmIChuYW1laW9wID09IERFTEVURSAmJiBpc2xhc3Rjbikgew0KKwkJZXJy
b3IgPSBWT1BfQUNDRVNTKGR2cCwgVldSSVRFLCBjbnAtPmNuX2NyZWQsIHAp
Ow0KKwkJaWYgKGVycm9yKQ0KKwkJCXJldHVybiAoZXJyb3IpOw0KIAkJaWYg
KCp2cHAgPT0gZHZwKSB7DQogCQkJVlJFRihkdnApOw0KIAkJCSp2cHAgPSBk
dnA7DQogCQkJcmV0dXJuICgwKTsNCiAJCX0NCi0JCVZSRUYoKnZwcCk7DQot
CQlpZiAoIShjbnAtPmNuX2ZsYWdzICYgTE9DS1BBUkVOVCkpDQorCQllcnJv
ciA9IGRldmZzX2FsbG9jdihkZSwgZHZwLT52X21vdW50LCB2cHAsIHApOw0K
KwkJaWYgKGVycm9yKQ0KKwkJCXJldHVybiAoZXJyb3IpOw0KKwkJaWYgKCFs
b2NrcGFyZW50KQ0KIAkJCVZPUF9VTkxPQ0soZHZwLCAwLCBwKTsNCiAJCXJl
dHVybiAoMCk7DQogCX0NCi0Jdm5fbG9jaygqdnBwLCBMS19TSEFSRUQgfCBM
S19SRVRSWSwgcCk7DQotCWlmICghKGNucC0+Y25fZmxhZ3MgJiBMT0NLUEFS
RU5UKSkNCisJZXJyb3IgPSBkZXZmc19hbGxvY3YoZGUsIGR2cC0+dl9tb3Vu
dCwgdnBwLCBwKTsNCisJaWYgKGVycm9yKQ0KKwkJcmV0dXJuIGVycm9yOw0K
KwlpZiAoIWxvY2twYXJlbnQgfHwgIWlzbGFzdGNuKQ0KIAkJVk9QX1VOTE9D
SyhkdnAsIDAsIHApOw0KIAlyZXR1cm4gKDApOw0KIH0NCkBAIC0yNTYsMTEg
KzI5Miw3IEBADQogCX0gKi8gKmFwOw0KIHsNCiAJc3RydWN0IHZub2RlICp2
cCA9IGFwLT5hX3ZwOw0KLQlzdHJ1Y3QgZGV2ZnNfZGlyZW50ICpkZTsNCi0N
Ci0JZGUgPSB2cC0+dl9kYXRhOw0KLQlpZiAodnAtPnZfdHlwZSA9PSBWRElS
KQ0KLQkJZGUgPSBkZS0+ZGVfZGlyOw0KKwlzdHJ1Y3QgZGV2ZnNfZGlyZW50
ICpkZSA9IFZOVE9ERVZGUyh2cCk7DQogDQogCXJldHVybiAodmFjY2Vzcyh2
cC0+dl90eXBlLCBkZS0+ZGVfbW9kZSwgZGUtPmRlX3VpZCwgZGUtPmRlX2dp
ZCwNCiAJICAgIGFwLT5hX21vZGUsIGFwLT5hX2NyZWQpKTsNCkBAIC0yNzcs
MTMgKzMwOSwxMCBAQA0KIHsNCiAJc3RydWN0IHZub2RlICp2cCA9IGFwLT5h
X3ZwOw0KIAlzdHJ1Y3QgdmF0dHIgKnZhcCA9IGFwLT5hX3ZhcDsNCisJc3Ry
dWN0IGRldmZzX2RpcmVudCAqZGUgPSBWTlRPREVWRlModnApOw0KIAlpbnQg
ZXJyb3IgPSAwOw0KLQlzdHJ1Y3QgZGV2ZnNfZGlyZW50ICpkZTsNCiAJZGV2
X3QgZGV2Ow0KIA0KLQlkZSA9IHZwLT52X2RhdGE7DQotCWlmICh2cC0+dl90
eXBlID09IFZESVIpIA0KLQkJZGUgPSBkZS0+ZGVfZGlyOw0KIAliemVybygo
Y2FkZHJfdCkgdmFwLCBzaXplb2YoKnZhcCkpOw0KIAl2YXR0cl9udWxsKHZh
cCk7DQogCXZhcC0+dmFfdWlkID0gZGUtPmRlX3VpZDsNCkBAIC0zMDgsMTEg
KzMzNywxMiBAQA0KIAl2YXAtPnZhX25saW5rID0gZGUtPmRlX2xpbmtzOw0K
IAl2YXAtPnZhX2ZpbGVpZCA9IGRlLT5kZV9pbm9kZTsNCiANCi0JaWYgKGRl
LT5kZV9kaXJlbnQtPmRfdHlwZSA9PSBEVF9ESVIpIHsNCisJaWYgKGRlLT5k
ZV90eXBlID09IERUX0RJUikgew0KIAkJdmFwLT52YV90eXBlID0gVkRJUjsN
Ci0JfSBlbHNlIGlmIChkZS0+ZGVfZGlyZW50LT5kX3R5cGUgPT0gRFRfTE5L
KSB7DQorCQl2YXAtPnZhX3NpemUgPSA1MTI7CQkvKiBhbnkgbm9uLXplcm8g
dmFsdWUgKi8NCisJfSBlbHNlIGlmIChkZS0+ZGVfdHlwZSA9PSBEVF9MTksp
IHsNCiAJCXZhcC0+dmFfdHlwZSA9IFZMTks7DQotCX0gZWxzZSBpZiAoZGUt
PmRlX2RpcmVudC0+ZF90eXBlID09IERUX0NIUikgew0KKwl9IGVsc2UgaWYg
KGRlLT5kZV90eXBlID09IERUX0NIUikgew0KIAkJdmFwLT52YV90eXBlID0g
VkNIUjsNCiAJCXZhcC0+dmFfcmRldiA9IGRldmZzX2lub3RbZGUtPmRlX2lu
b2RlXS0+c2lfdWRldjsNCiAJfQ0KQEAgLTMzNCwzMSArMzY0LDMwIEBADQog
CX0gKi8gKmFwOw0KIHsNCiAJc3RydWN0IGRldmZzX2RpcmVudCAqZGU7DQor
CXN0cnVjdCB2YXR0ciAqdmFwID0gYXAtPmFfdmFwOw0KIAlpbnQgYzsNCiAN
Ci0JZGUgPSBhcC0+YV92cC0+dl9kYXRhOw0KLQlpZiAoYXAtPmFfdnAtPnZf
dHlwZSA9PSBWRElSKSANCi0JCWRlID0gZGUtPmRlX2RpcjsNCisJZGUgPSBW
TlRPREVWRlMoYXAtPmFfdnApOw0KIA0KIAljID0gMDsNCi0JaWYgKGFwLT5h
X3ZhcC0+dmFfZmxhZ3MgIT0gVk5PVkFMKQ0KKwlpZiAodmFwLT52YV9mbGFn
cyAhPSBWTk9WQUwpDQogCQlyZXR1cm4gKEVPUE5PVFNVUFApOw0KLQlpZiAo
YXAtPmFfdmFwLT52YV91aWQgIT0gKHVpZF90KVZOT1ZBTCkgew0KLQkJZGUt
PmRlX3VpZCA9IGFwLT5hX3ZhcC0+dmFfdWlkOw0KKwlpZiAodmFwLT52YV91
aWQgIT0gKHVpZF90KVZOT1ZBTCkgew0KKwkJZGUtPmRlX3VpZCA9IHZhcC0+
dmFfdWlkOw0KIAkJYyA9IDE7DQogCX0NCi0JaWYgKGFwLT5hX3ZhcC0+dmFf
Z2lkICE9IChnaWRfdClWTk9WQUwpIHsNCi0JCWRlLT5kZV9naWQgPSBhcC0+
YV92YXAtPnZhX2dpZDsNCisJaWYgKHZhcC0+dmFfZ2lkICE9IChnaWRfdClW
Tk9WQUwpIHsNCisJCWRlLT5kZV9naWQgPSB2YXAtPnZhX2dpZDsNCiAJCWMg
PSAxOw0KIAl9DQotCWlmIChhcC0+YV92YXAtPnZhX21vZGUgIT0gKG1vZGVf
dClWTk9WQUwpIHsNCi0JCWRlLT5kZV9tb2RlID0gYXAtPmFfdmFwLT52YV9t
b2RlOw0KKwlpZiAodmFwLT52YV9tb2RlICE9IChtb2RlX3QpVk5PVkFMKSB7
DQorCQlkZS0+ZGVfbW9kZSA9IHZhcC0+dmFfbW9kZTsNCiAJCWMgPSAxOw0K
IAl9DQotCWlmIChhcC0+YV92YXAtPnZhX2F0aW1lLnR2X3NlYyAhPSBWTk9W
QUwpDQotCQlkZS0+ZGVfYXRpbWUgPSBhcC0+YV92YXAtPnZhX2F0aW1lOw0K
LQlpZiAoYXAtPmFfdmFwLT52YV9tdGltZS50dl9zZWMgIT0gVk5PVkFMKQ0K
LQkJZGUtPmRlX210aW1lID0gYXAtPmFfdmFwLT52YV9tdGltZTsNCisJaWYg
KHZhcC0+dmFfYXRpbWUudHZfc2VjICE9IFZOT1ZBTCkNCisJCWRlLT5kZV9h
dGltZSA9IHZhcC0+dmFfYXRpbWU7DQorCWlmICh2YXAtPnZhX210aW1lLnR2
X3NlYyAhPSBWTk9WQUwpDQorCQlkZS0+ZGVfbXRpbWUgPSB2YXAtPnZhX210
aW1lOw0KIA0KIAlpZiAoYykNCiAJCWdldG5hbm90aW1lKCZkZS0+ZGVfY3Rp
bWUpOw0KQEAgLTM2Niw2ICszOTUsMjIgQEANCiB9DQogDQogc3RhdGljIGlu
dA0KK2RldmZzX3JlYWQoc3RydWN0IHZvcF9yZWFkX2FyZ3MgKmFwKQ0KKyAg
ICAgICAgLypzdHJ1Y3Qgdm9wX3JlYWRfYXJncyB7DQorICAgICAgICAgICAg
ICAgIHN0cnVjdCB2bm9kZSAqYV92cDsNCisgICAgICAgICAgICAgICAgc3Ry
dWN0IHVpbyAqYV91aW87DQorICAgICAgICAgICAgICAgIGludCAgYV9pb2Zs
YWc7DQorICAgICAgICAgICAgICAgIHN0cnVjdCB1Y3JlZCAqYV9jcmVkOw0K
KyAgICAgICAgfSAqLw0KK3sNCisJc3RydWN0IHZub2RlICp2cCA9IGFwLT5h
X3ZwOw0KKw0KKwlpZiAodnAtPnZfdHlwZSAhPSBWRElSKQ0KKwkJcmV0dXJu
IChFSU5WQUwpOw0KKwlyZXR1cm4gKFZPUF9SRUFERElSKHZwLCBhcC0+YV91
aW8sIGFwLT5hX2NyZWQsIE5VTEwsIE5VTEwsIE5VTEwpKTsNCit9DQorDQor
c3RhdGljIGludA0KIGRldmZzX3JlYWRkaXIoYXApDQogCXN0cnVjdCB2b3Bf
cmVhZGRpcl9hcmdzIC8qIHsNCiAJCXN0cnVjdCB2bm9kZSAqYV92cDsNCkBA
IC0zNzYsNDAgKzQyMSw2NCBAQA0KIAkJdV9sb25nICoqYV9jb29raWVzOw0K
IAl9ICovICphcDsNCiB7DQotCWludCBlcnJvciwgaTsNCisJc3RydWN0IHZu
b2RlICp2cCA9IGFwLT5hX3ZwOw0KIAlzdHJ1Y3QgdWlvICp1aW8gPSBhcC0+
YV91aW87DQotCXN0cnVjdCBkaXJlbnQgKmRwOw0KLQlzdHJ1Y3QgZGV2ZnNf
ZGlyZW50ICpkZDsNCi0Jc3RydWN0IGRldmZzX2RpcmVudCAqZGU7DQorCXN0
cnVjdCBkaXJlbnQgKmRwLCBkaXJlbnQ7DQorCXN0cnVjdCBkZXZmc19kaXJl
bnQgKmRkLCAqZGU7DQogCXN0cnVjdCBkZXZmc19tb3VudCAqZG1wOw0KIAlv
ZmZfdCBvZmY7DQorCWludCBlcnJvciwgZW50cnlpZCwgaTsNCiANCiAJaWYg
KGFwLT5hX3ZwLT52X3R5cGUgIT0gVkRJUikNCiAJCXJldHVybiAoRU5PVERJ
Uik7DQorDQorCWlmIChhcC0+YV9uY29va2llcykgew0KKwkJcHJpbnRmKCJk
ZXZmc19yZWFkZGlyOiBjb29raWVzIG5vdCBzdXBwb3J0ZWRcbiIpOw0KKwkJ
cmV0dXJuIEVPUE5PVFNVUFA7DQorCX0NCiANCi0JZG1wID0gVkZTVE9ERVZG
UyhhcC0+YV92cC0+dl9tb3VudCk7DQorCWlmICh1aW8tPnVpb19yZXNpZCA8
IERFX1NJWkUgfHwgdWlvLT51aW9fb2Zmc2V0IDwgMCkNCisJCXJldHVybiBF
SU5WQUw7DQorDQorCWRtcCA9IFZGU1RPREVWRlModnAtPnZfbW91bnQpOw0K
IAlkZXZmc19wb3B1bGF0ZShkbXApOw0KLQlpID0gKHVfaW50KW9mZiAvIFVJ
T19NWDsNCisNCisJb2ZmID0gdWlvLT51aW9fb2Zmc2V0Ow0KKwllbnRyeWlk
ID0gb2ZmIC8gREVfU0laRTsNCiAJZXJyb3IgPSAwOw0KLQlkZSA9IGFwLT5h
X3ZwLT52X2RhdGE7DQotCWRkID0gVEFJTFFfRklSU1QoJmRlLT5kZV9kbGlz
dCk7DQotCW9mZiA9IDA7DQotCXdoaWxlICh1aW8tPnVpb19yZXNpZCA+PSBV
SU9fTVggJiYgZGQgIT0gTlVMTCkgew0KLQkJaWYgKGRkLT5kZV9kaXJlbnQt
PmRfdHlwZSA9PSBEVF9ESVIpIA0KLQkJCWRlID0gZGQtPmRlX2RpcjsNCi0J
CWVsc2UNCi0JCQlkZSA9IGRkOw0KLQkJZHAgPSBkZC0+ZGVfZGlyZW50Ow0K
LQkJZHAtPmRfZmlsZW5vID0gZGUtPmRlX2lub2RlOw0KLQkJaWYgKG9mZiA+
PSB1aW8tPnVpb19vZmZzZXQpDQotCQkJaWYgKChlcnJvciA9IHVpb21vdmUo
KGNhZGRyX3QpZHAsIGRwLT5kX3JlY2xlbiwgdWlvKSkgIT0gMCkNCi0JCQkJ
YnJlYWs7DQorCWRkID0gVk5UT0RFVkZTKHZwKTsNCisNCisJZGUgPSBUQUlM
UV9GSVJTVCgmZGQtPmRlX2RsaXN0KTsNCisJZm9yIChpID0gZW50cnlpZCAt
IDI7IGRlICYmIGkgPiAwOyBpLS0pDQorCQlkZSA9IFRBSUxRX05FWFQoZGUs
IGRlX2xpc3QpOw0KKw0KKwlkcCA9ICZkaXJlbnQ7DQorCXdoaWxlICh1aW8t
PnVpb19yZXNpZCA+PSBERV9TSVpFICYmIGRlICE9IE5VTEwpIHsNCisJCWJ6
ZXJvKGRwLCBERV9TSVpFKTsNCisJCWRwLT5kX3JlY2xlbiA9IERFX1NJWkU7
DQorCQlzd2l0Y2ggKGVudHJ5aWQpIHsNCisJCSAgICBjYXNlIDA6DQorCQkg
ICAgY2FzZSAxOg0KKwkJCWRwLT5kX25hbWVbMF0gPSBkcC0+ZF9uYW1lWzFd
ID0gJy4nOw0KKwkJCWRwLT5kX2ZpbGVubyA9IChlbnRyeWlkID09IDApID8g
ZGQtPmRlX2lub2RlIDoNCisJCQkgICAgKGRkLT5kZV9wYXJlbnQgPyBkZC0+
ZGVfcGFyZW50LT5kZV9pbm9kZSA6IDEpOw0KKwkJCWRwLT5kX25hbWxlbiA9
IGVudHJ5aWQgKyAxOw0KKwkJCWRwLT5kX25hbWVbZW50cnlpZCArIDFdID0g
J1wwJzsNCisJCQlkcC0+ZF90eXBlID0gRFRfRElSOw0KKwkJCWJyZWFrOw0K
KwkJICAgIGRlZmF1bHQ6DQorCQkJZHAtPmRfZmlsZW5vID0gZGUtPmRlX2lu
b2RlOw0KKwkJCWRwLT5kX25hbWxlbiA9IGRlLT5kZV9uYW1lbGVuOw0KKwkJ
CWRwLT5kX3R5cGUgPSBkZS0+ZGVfdHlwZTsNCisJCQliY29weShkZS0+ZGVf
bmFtZSwgZHAtPmRfbmFtZSwgZGUtPmRlX25hbWVsZW4gKyAxKTsNCisJCQlk
ZSA9IFRBSUxRX05FWFQoZGUsIGRlX2xpc3QpOw0KKwkJfQ0KKwkJaWYgKChl
cnJvciA9IHVpb21vdmUoKGNhZGRyX3QpZHAsIGRwLT5kX3JlY2xlbiwgdWlv
KSkgIT0gMCkNCisJCQlicmVhazsNCiAJCW9mZiArPSBkcC0+ZF9yZWNsZW47
DQotCQlkZCA9IFRBSUxRX05FWFQoZGQsIGRlX2xpc3QpOw0KKwkJZW50cnlp
ZCsrOw0KIAl9DQotDQogCXVpby0+dWlvX29mZnNldCA9IG9mZjsNCi0NCiAJ
cmV0dXJuIChlcnJvcik7DQogfQ0KIA0KQEAgLTQyNCw3ICs0OTMsNyBAQA0K
IAlpbnQgZXJyb3I7DQogCXN0cnVjdCBkZXZmc19kaXJlbnQgKmRlOw0KIA0K
LQlkZSA9IGFwLT5hX3ZwLT52X2RhdGE7DQorCWRlID0gVk5UT0RFVkZTKGFw
LT5hX3ZwKTsNCiAJZXJyb3IgPSB1aW9tb3ZlKGRlLT5kZV9zeW1saW5rLCBz
dHJsZW4oZGUtPmRlX3N5bWxpbmspICsgMSwgYXAtPmFfdWlvKTsNCiAJcmV0
dXJuIChlcnJvcik7DQogfQ0KQEAgLTUwNCwyNiArNTczLDI0IEBADQogCQlj
aGFyICphX3RhcmdldDsNCiAJfSAqLyAqYXA7DQogew0KLQlpbnQgaTsNCi0J
c3RydWN0IGRldmZzX2RpcmVudCAqZGQ7DQorCXN0cnVjdCB2bm9kZSAqZHZw
ID0gYXAtPmFfZHZwOw0KKwlzdHJ1Y3QgZGV2ZnNfbW91bnQgKmRtcCA9IFZG
U1RPREVWRlMoZHZwLT52X21vdW50KTsNCisJc3RydWN0IGRldmZzX2RpcmVu
dCAqZGQgPSBWTlRPREVWRlMoZHZwKTsNCiAJc3RydWN0IGRldmZzX2RpcmVu
dCAqZGU7DQotCXN0cnVjdCBkZXZmc19tb3VudCAqZG1wOw0KKwljaGFyICp0
YXJnZXQgPSBhcC0+YV90YXJnZXQ7DQorCWludCBpOw0KIA0KLQlkbXAgPSAo
c3RydWN0IGRldmZzX21vdW50ICopYXAtPmFfZHZwLT52X21vdW50LT5tbnRf
ZGF0YTsNCi0JZGQgPSBhcC0+YV9kdnAtPnZfZGF0YTsNCiAJZGUgPSBkZXZm
c19uZXdkaXJlbnQoYXAtPmFfY25wLT5jbl9uYW1lcHRyLCBhcC0+YV9jbnAt
PmNuX25hbWVsZW4pOw0KIAlkZS0+ZGVfdWlkID0gMDsNCiAJZGUtPmRlX2dp
ZCA9IDA7DQogCWRlLT5kZV9tb2RlID0gMDY0MjsNCiAJZGUtPmRlX2lub2Rl
ID0gZG1wLT5kbV9pbm9kZSsrOw0KLQlkZS0+ZGVfZGlyZW50LT5kX3R5cGUg
PSBEVF9MTks7DQotCWkgPSBzdHJsZW4oYXAtPmFfdGFyZ2V0KSArIDE7DQor
CWRlLT5kZV90eXBlID0gRFRfTE5LOw0KKwlpID0gc3RybGVuKHRhcmdldCkg
KyAxOw0KIAlNQUxMT0MoZGUtPmRlX3N5bWxpbmssIGNoYXIgKiwgaSwgTV9E
RVZGUywgTV9XQUlUT0spOw0KLQliY29weShhcC0+YV90YXJnZXQsIGRlLT5k
ZV9zeW1saW5rLCBpKTsNCisJYmNvcHkodGFyZ2V0LCBkZS0+ZGVfc3ltbGlu
aywgaSk7DQogCVRBSUxRX0lOU0VSVF9UQUlMKCZkZC0+ZGVfZGxpc3QsIGRl
LCBkZV9saXN0KTsNCi0JZGV2ZnNfYWxsb2N2KGRlLCBhcC0+YV9kdnAtPnZf
bW91bnQsIGFwLT5hX3ZwcCwgMCk7DQotCVZSRUYoKihhcC0+YV92cHApKTsN
Ci0JcmV0dXJuICgwKTsNCisJcmV0dXJuIGRldmZzX2FsbG9jdihkZSwgZHZw
LT52X21vdW50LCBhcC0+YV92cHAsIDApOw0KIH0NCiANCiAvKg0KQEAgLTU0
Miw3ICs2MDksNyBAQA0KIH0NCiANCiAvKg0KLSAqIEtlcm5mcyAic2hvdWxk
IG5ldmVyIGdldCBoZXJlIiBvcGVyYXRpb24NCisgKiBkZXZmcyAic2hvdWxk
IG5ldmVyIGdldCBoZXJlIiBvcGVyYXRpb24NCiAgKi8NCiBzdGF0aWMgaW50
DQogZGV2ZnNfYmFkb3AoKQ0KQEAgLTU1OSw2ICs2MjYsNyBAQA0KIAl7ICZ2
b3BfbG9va3VwX2Rlc2MsCQkodm9wX3QgKikgZGV2ZnNfbG9va3VwIH0sDQog
CXsgJnZvcF9wYXRoY29uZl9kZXNjLAkJKHZvcF90ICopIHZvcF9zdGRwYXRo
Y29uZiB9LA0KIAl7ICZ2b3BfcHJpbnRfZGVzYywJCSh2b3BfdCAqKSBkZXZm
c19wcmludCB9LA0KKwl7ICZ2b3BfcmVhZF9kZXNjLAkJKHZvcF90ICopIGRl
dmZzX3JlYWQgfSwNCiAJeyAmdm9wX3JlYWRkaXJfZGVzYywJCSh2b3BfdCAq
KSBkZXZmc19yZWFkZGlyIH0sDQogCXsgJnZvcF9yZWFkbGlua19kZXNjLAkJ
KHZvcF90ICopIGRldmZzX3JlYWRsaW5rIH0sDQogCXsgJnZvcF9yZWNsYWlt
X2Rlc2MsCQkodm9wX3QgKikgZGV2ZnNfcmVjbGFpbSB9LA0K
--0-814033623-967296122=:97704--


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.4.10.10008262000300.97704-200000>