From owner-freebsd-current Sat Aug 26 6:22:41 2000 Delivered-To: freebsd-current@freebsd.org Received: from relay.butya.kz (butya-gw.butya.kz [212.154.129.94]) by hub.freebsd.org (Postfix) with ESMTP id 9842137B424; Sat, 26 Aug 2000 06:22:10 -0700 (PDT) Received: by relay.butya.kz (Postfix, from userid 1000) id EECAB28C43; Sat, 26 Aug 2000 20:22:02 +0700 (ALMST) Received: from localhost (localhost [127.0.0.1]) by relay.butya.kz (Postfix) with ESMTP id CD18D28703; Sat, 26 Aug 2000 20:22:02 +0700 (ALMST) Date: Sat, 26 Aug 2000 20:22:02 +0700 (ALMST) From: Boris Popov To: Poul-Henning Kamp Cc: freebsd-current@freebsd.org Subject: devfs patch for review Message-ID: MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="0-814033623-967296122=:97704" Sender: owner-freebsd-current@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG 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: 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