From owner-freebsd-stable Wed Jun 6 2:41:37 2001 Delivered-To: freebsd-stable@freebsd.org Received: from relay.butya.kz (butya-gw.butya.kz [212.154.129.94]) by hub.freebsd.org (Postfix) with ESMTP id ACD1237B405; Wed, 6 Jun 2001 02:40:45 -0700 (PDT) (envelope-from bp@butya.kz) Received: by relay.butya.kz (Postfix, from userid 1000) id 7A72628B1B; Wed, 6 Jun 2001 16:40:41 +0700 (ALMST) Received: from localhost (localhost [127.0.0.1]) by relay.butya.kz (Postfix) with ESMTP id 552612883F; Wed, 6 Jun 2001 16:40:41 +0700 (ALMST) Date: Wed, 6 Jun 2001 16:40:41 +0700 (ALMST) From: Boris Popov To: stable@freebsd.org Cc: fs@freebsd.org Subject: CFR: Fixes for nullfs in -stable Message-ID: MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="0-248198860-991820441=:61571" Sender: owner-freebsd-stable@FreeBSD.ORG Precedence: bulk List-ID: List-Archive: (Web Archive) List-Help: (List Instructions) List-Subscribe: List-Unsubscribe: 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-248198860-991820441=:61571 Content-Type: TEXT/PLAIN; charset=US-ASCII Hello, I've mostly merged improvements done to nullfs in the -current to RELENG_4 branch. Operations on mmaped files were fixed before and this patch focused on the proper vnode locking. Unfortunately, this code require changes in the layout of vnode structure. It is possible to not break binary compatibility by changing behavior of vop_sharedlock() function and using v_vnlock field as this is done in -current. This requires changes only to nfs code by including lock structure in the nfsnode structure (in the original code it was allocated separately for each nfsnode). Size and layout of vnode structure left unchanged. I hope this will not break any 3rd party file system because all new fs'es should use vop_std*lock() VOPs or roll their own. Patch against recent RELENG_4 is attached. And if there is no serious objections I'm plan to commit it on the next week. -- Boris Popov http://www.butya.kz/~bp/ --0-248198860-991820441=:61571 Content-Type: TEXT/PLAIN; charset=US-ASCII; name="nullfs4.diff" Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename="nullfs4.diff" SW5kZXg6IGtlcm4vdmZzX2RlZmF1bHQuYw0KPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQ0KUkNTIGZpbGU6IC9ob21lL25jdnMvc3JjL3N5cy9rZXJuL3Zmc19k ZWZhdWx0LmMsdg0KcmV0cmlldmluZyByZXZpc2lvbiAxLjI4LjIuMQ0KZGlm ZiAtdSAtcjEuMjguMi4xIHZmc19kZWZhdWx0LmMNCi0tLSBrZXJuL3Zmc19k ZWZhdWx0LmMJMjAwMS8wNS8xOCAwOTo1ODo0MwkxLjI4LjIuMQ0KKysrIGtl cm4vdmZzX2RlZmF1bHQuYwkyMDAxLzA2LzA2IDA4OjUzOjQ5DQpAQCAtMzYw LDE0ICszNjAsMTMgQEANCiAJICogdG8gYmUgaGFuZGxlZCBpbiBpbnRlcm1l ZGlhdGUgbGF5ZXJzLg0KIAkgKi8NCiAJc3RydWN0IHZub2RlICp2cCA9IGFw LT5hX3ZwOw0KKwlzdHJ1Y3QgbG9jayAqbCA9IChzdHJ1Y3QgbG9jayAqKXZw LT52X2RhdGE7DQogCWludCB2bmZsYWdzLCBmbGFncyA9IGFwLT5hX2ZsYWdz Ow0KIA0KLQlpZiAodnAtPnZfdm5sb2NrID09IE5VTEwpIHsNCi0JCWlmICgo ZmxhZ3MgJiBMS19UWVBFX01BU0spID09IExLX0RSQUlOKQ0KLQkJCXJldHVy biAoMCk7DQotCQlNQUxMT0ModnAtPnZfdm5sb2NrLCBzdHJ1Y3QgbG9jayAq LCBzaXplb2Yoc3RydWN0IGxvY2spLA0KLQkJICAgIE1fVk5PREUsIE1fV0FJ VE9LKTsNCi0JCWxvY2tpbml0KHZwLT52X3ZubG9jaywgUFZGUywgInZubG9j ayIsIDAsIExLX05PUEFVU0UpOw0KKwlpZiAobCA9PSBOVUxMKSB7DQorCQlp ZiAoYXAtPmFfZmxhZ3MgJiBMS19JTlRFUkxPQ0spDQorCQkJc2ltcGxlX3Vu bG9jaygmYXAtPmFfdnAtPnZfaW50ZXJsb2NrKTsNCisJCXJldHVybiAwOw0K IAl9DQogCXN3aXRjaCAoZmxhZ3MgJiBMS19UWVBFX01BU0spIHsNCiAJY2Fz ZSBMS19EUkFJTjoNCkBAIC0zOTYsOSArMzk1LDkgQEANCiAJaWYgKGZsYWdz ICYgTEtfSU5URVJMT0NLKQ0KIAkJdm5mbGFncyB8PSBMS19JTlRFUkxPQ0s7 DQogI2lmbmRlZglERUJVR19MT0NLUw0KLQlyZXR1cm4gKGxvY2ttZ3IodnAt PnZfdm5sb2NrLCB2bmZsYWdzLCAmdnAtPnZfaW50ZXJsb2NrLCBhcC0+YV9w KSk7DQorCXJldHVybiAobG9ja21ncihsLCB2bmZsYWdzLCAmdnAtPnZfaW50 ZXJsb2NrLCBhcC0+YV9wKSk7DQogI2Vsc2UNCi0JcmV0dXJuIChkZWJ1Z2xv Y2ttZ3IodnAtPnZfdm5sb2NrLCB2bmZsYWdzLCAmdnAtPnZfaW50ZXJsb2Nr LCBhcC0+YV9wLA0KKwlyZXR1cm4gKGRlYnVnbG9ja21ncihsLCB2bmZsYWdz LCAmdnAtPnZfaW50ZXJsb2NrLCBhcC0+YV9wLA0KIAkgICAgInZvcF9zaGFy ZWRsb2NrIiwgdnAtPmZpbGVuYW1lLCB2cC0+bGluZSkpOw0KICNlbmRpZg0K IH0NCkBAIC00MzUsMTMgKzQzNCw2IEBADQogCXN0cnVjdCB2bm9kZSAqdnAg PSBhcC0+YV92cDsNCiAJaW50IHZuZmxhZ3MsIGZsYWdzID0gYXAtPmFfZmxh Z3M7DQogDQotCWlmICh2cC0+dl92bmxvY2sgPT0gTlVMTCkgew0KLQkJaWYg KChmbGFncyAmIExLX1RZUEVfTUFTSykgPT0gTEtfRFJBSU4pDQotCQkJcmV0 dXJuICgwKTsNCi0JCU1BTExPQyh2cC0+dl92bmxvY2ssIHN0cnVjdCBsb2Nr ICosIHNpemVvZihzdHJ1Y3QgbG9jayksDQotCQkgICAgTV9WTk9ERSwgTV9X QUlUT0spOw0KLQkJbG9ja2luaXQodnAtPnZfdm5sb2NrLCBQVkZTLCAidm5s b2NrIiwgMCwgTEtfTk9QQVVTRSk7DQotCX0NCiAJc3dpdGNoIChmbGFncyAm IExLX1RZUEVfTUFTSykgew0KIAljYXNlIExLX0RSQUlOOg0KIAkJdm5mbGFn cyA9IExLX0RSQUlOOw0KQEAgLTQ4NSwxMyArNDc3LDkgQEANCiB7DQogCXN0 cnVjdCB2bm9kZSAqdnAgPSBhcC0+YV92cDsNCiANCi0JaWYgKHZwLT52X3Zu bG9jayA9PSBOVUxMKSB7DQotCQlpZiAoYXAtPmFfZmxhZ3MgJiBMS19JTlRF UkxPQ0spDQotCQkJc2ltcGxlX3VubG9jaygmYXAtPmFfdnAtPnZfaW50ZXJs b2NrKTsNCi0JCXJldHVybiAoMCk7DQotCX0NCi0JcmV0dXJuIChsb2NrbWdy KHZwLT52X3ZubG9jaywgTEtfUkVMRUFTRSB8IGFwLT5hX2ZsYWdzLA0KLQkJ JmFwLT5hX3ZwLT52X2ludGVybG9jaywgYXAtPmFfcCkpOw0KKwlpZiAoYXAt PmFfZmxhZ3MgJiBMS19JTlRFUkxPQ0spDQorCQlzaW1wbGVfdW5sb2NrKCZ2 cC0+dl9pbnRlcmxvY2spOw0KKwlyZXR1cm4gKDApOw0KIH0NCiANCiAvKg0K QEAgLTUwNSwxMCArNDkzLDExIEBADQogCX0gKi8gKmFwOw0KIHsNCiAJc3Ry dWN0IHZub2RlICp2cCA9IGFwLT5hX3ZwOw0KKwlzdHJ1Y3QgbG9jayAqbCA9 IChzdHJ1Y3QgbG9jayAqKXZwLT52X2RhdGE7DQogDQotCWlmICh2cC0+dl92 bmxvY2sgPT0gTlVMTCkNCisJaWYgKGwgPT0gTlVMTCkNCiAJCXJldHVybiAo MCk7DQotCXJldHVybiAobG9ja3N0YXR1cyh2cC0+dl92bmxvY2ssIGFwLT5h X3ApKTsNCisJcmV0dXJuIChsb2Nrc3RhdHVzKGwsIGFwLT5hX3ApKTsNCiB9 DQogDQogaW50DQpJbmRleDoga2Vybi92ZnNfc3Vici5jDQo9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09DQpSQ1MgZmlsZTogL2hvbWUvbmN2cy9zcmMvc3lzL2tl cm4vdmZzX3N1YnIuYyx2DQpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMjQ5LjIu OA0KZGlmZiAtdSAtcjEuMjQ5LjIuOCB2ZnNfc3Vici5jDQotLS0ga2Vybi92 ZnNfc3Vici5jCTIwMDEvMDUvMTggMDk6NTg6NDMJMS4yNDkuMi44DQorKysg a2Vybi92ZnNfc3Vici5jCTIwMDEvMDYvMDYgMDg6NTM6NDkNCkBAIC0xNzA3 LDEwICsxNzA3LDcgQEANCiAJfQ0KIA0KIAljYWNoZV9wdXJnZSh2cCk7DQot CWlmICh2cC0+dl92bmxvY2spIHsNCi0JCUZSRUUodnAtPnZfdm5sb2NrLCBN X1ZOT0RFKTsNCi0JCXZwLT52X3ZubG9jayA9IE5VTEw7DQotCX0NCisJdnAt PnZfdm5sb2NrID0gTlVMTDsNCiANCiAJaWYgKFZTSE9VTERGUkVFKHZwKSkN CiAJCXZmcmVlKHZwKTsNCkluZGV4OiBuZnMvbmZzX25vZGUuYw0KPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQ0KUkNTIGZpbGU6IC9ob21lL25jdnMvc3JjL3N5 cy9uZnMvbmZzX25vZGUuYyx2DQpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMzYu Mi4xDQpkaWZmIC11IC1yMS4zNi4yLjEgbmZzX25vZGUuYw0KLS0tIG5mcy9u ZnNfbm9kZS5jCTIwMDEvMDMvMjEgMTA6NTA6NTkJMS4zNi4yLjENCisrKyBu ZnMvbmZzX25vZGUuYwkyMDAxLzA2LzA2IDA4OjUzOjQ5DQpAQCAtMTc1LDYg KzE3NSw3IEBADQogCWJjb3B5KChjYWRkcl90KWZocCwgKGNhZGRyX3QpbnAt Pm5fZmhwLCBmaHNpemUpOw0KIAlucC0+bl9maHNpemUgPSBmaHNpemU7DQog CWxvY2tpbml0KCZucC0+bl9yc2xvY2ssIFBWRlMgfCByc2ZsYWdzLCAibmZy c2xrIiwgMCwgTEtfTk9QQVVTRSk7DQorCWxvY2tpbml0KCZucC0+bl9sb2Nr LCBQVkZTLCAibmZzbmxrIiwgMCwgTEtfTk9QQVVTRSk7DQogCSpucHAgPSBu cDsNCiANCiAJaWYgKG5mc19ub2RlX2hhc2hfbG9jayA8IDApDQpJbmRleDog bmZzL25mc192bm9wcy5jDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpSQ1Mg ZmlsZTogL2hvbWUvbmN2cy9zcmMvc3lzL25mcy9uZnNfdm5vcHMuYyx2DQpy ZXRyaWV2aW5nIHJldmlzaW9uIDEuMTUwLjIuMg0KZGlmZiAtdSAtcjEuMTUw LjIuMiBuZnNfdm5vcHMuYw0KLS0tIG5mcy9uZnNfdm5vcHMuYwkyMDAxLzAz LzAyIDE2OjQ1OjEyCTEuMTUwLjIuMg0KKysrIG5mcy9uZnNfdm5vcHMuYwky MDAxLzA2LzA2IDA4OjUzOjQ5DQpAQCAtMTQ5LDYgKzE0OSw3IEBADQogCXsg JnZvcF9nZXRwYWdlc19kZXNjLAkJKHZvcF90ICopIG5mc19nZXRwYWdlcyB9 LA0KIAl7ICZ2b3BfcHV0cGFnZXNfZGVzYywJCSh2b3BfdCAqKSBuZnNfcHV0 cGFnZXMgfSwNCiAJeyAmdm9wX2luYWN0aXZlX2Rlc2MsCQkodm9wX3QgKikg bmZzX2luYWN0aXZlIH0sDQorCXsgJnZvcF9pc2xvY2tlZF9kZXNjLAkJKHZv cF90ICopIHZvcF9zdGRpc2xvY2tlZCB9LA0KIAl7ICZ2b3BfbGVhc2VfZGVz YywJCSh2b3BfdCAqKSB2b3BfbnVsbCB9LA0KIAl7ICZ2b3BfbGlua19kZXNj LAkJKHZvcF90ICopIG5mc19saW5rIH0sDQogCXsgJnZvcF9sb2NrX2Rlc2Ms CQkodm9wX3QgKikgdm9wX3NoYXJlZGxvY2sgfSwNCkBAIC0xNjksNiArMTcw LDcgQEANCiAJeyAmdm9wX3NldGF0dHJfZGVzYywJCSh2b3BfdCAqKSBuZnNf c2V0YXR0ciB9LA0KIAl7ICZ2b3Bfc3RyYXRlZ3lfZGVzYywJCSh2b3BfdCAq KSBuZnNfc3RyYXRlZ3kgfSwNCiAJeyAmdm9wX3N5bWxpbmtfZGVzYywJCSh2 b3BfdCAqKSBuZnNfc3ltbGluayB9LA0KKwl7ICZ2b3BfdW5sb2NrX2Rlc2Ms CQkodm9wX3QgKikgdm9wX3N0ZHVubG9jayB9LA0KIAl7ICZ2b3Bfd3JpdGVf ZGVzYywJCSh2b3BfdCAqKSBuZnNfd3JpdGUgfSwNCiAJeyBOVUxMLCBOVUxM IH0NCiB9Ow0KQEAgLTE4NywxMSArMTg5LDEzIEBADQogCXsgJnZvcF9mc3lu Y19kZXNjLAkJKHZvcF90ICopIG5mc19mc3luYyB9LA0KIAl7ICZ2b3BfZ2V0 YXR0cl9kZXNjLAkJKHZvcF90ICopIG5mc19nZXRhdHRyIH0sDQogCXsgJnZv cF9pbmFjdGl2ZV9kZXNjLAkJKHZvcF90ICopIG5mc19pbmFjdGl2ZSB9LA0K Kwl7ICZ2b3BfaXNsb2NrZWRfZGVzYywJCSh2b3BfdCAqKSB2b3Bfc3RkaXNs b2NrZWQgfSwNCiAJeyAmdm9wX2xvY2tfZGVzYywJCSh2b3BfdCAqKSB2b3Bf c2hhcmVkbG9jayB9LA0KIAl7ICZ2b3BfcHJpbnRfZGVzYywJCSh2b3BfdCAq KSBuZnNfcHJpbnQgfSwNCiAJeyAmdm9wX3JlYWRfZGVzYywJCSh2b3BfdCAq KSBuZnNzcGVjX3JlYWQgfSwNCiAJeyAmdm9wX3JlY2xhaW1fZGVzYywJCSh2 b3BfdCAqKSBuZnNfcmVjbGFpbSB9LA0KIAl7ICZ2b3Bfc2V0YXR0cl9kZXNj LAkJKHZvcF90ICopIG5mc19zZXRhdHRyIH0sDQorCXsgJnZvcF91bmxvY2tf ZGVzYywJCSh2b3BfdCAqKSB2b3Bfc3RkdW5sb2NrIH0sDQogCXsgJnZvcF93 cml0ZV9kZXNjLAkJKHZvcF90ICopIG5mc3NwZWNfd3JpdGUgfSwNCiAJeyBO VUxMLCBOVUxMIH0NCiB9Ow0KQEAgLTIwNywxMSArMjExLDEzIEBADQogCXsg JnZvcF9mc3luY19kZXNjLAkJKHZvcF90ICopIG5mc19mc3luYyB9LA0KIAl7 ICZ2b3BfZ2V0YXR0cl9kZXNjLAkJKHZvcF90ICopIG5mc19nZXRhdHRyIH0s DQogCXsgJnZvcF9pbmFjdGl2ZV9kZXNjLAkJKHZvcF90ICopIG5mc19pbmFj dGl2ZSB9LA0KKwl7ICZ2b3BfaXNsb2NrZWRfZGVzYywJCSh2b3BfdCAqKSB2 b3Bfc3RkaXNsb2NrZWQgfSwNCiAJeyAmdm9wX2xvY2tfZGVzYywJCSh2b3Bf dCAqKSB2b3Bfc2hhcmVkbG9jayB9LA0KIAl7ICZ2b3BfcHJpbnRfZGVzYywJ CSh2b3BfdCAqKSBuZnNfcHJpbnQgfSwNCiAJeyAmdm9wX3JlYWRfZGVzYywJ CSh2b3BfdCAqKSBuZnNmaWZvX3JlYWQgfSwNCiAJeyAmdm9wX3JlY2xhaW1f ZGVzYywJCSh2b3BfdCAqKSBuZnNfcmVjbGFpbSB9LA0KIAl7ICZ2b3Bfc2V0 YXR0cl9kZXNjLAkJKHZvcF90ICopIG5mc19zZXRhdHRyIH0sDQorCXsgJnZv cF91bmxvY2tfZGVzYywJCSh2b3BfdCAqKSB2b3Bfc3RkdW5sb2NrIH0sDQog CXsgJnZvcF93cml0ZV9kZXNjLAkJKHZvcF90ICopIG5mc2ZpZm9fd3JpdGUg fSwNCiAJeyBOVUxMLCBOVUxMIH0NCiB9Ow0KSW5kZXg6IG5mcy9uZnNub2Rl LmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0NClJDUyBmaWxlOiAvaG9tZS9u Y3ZzL3NyYy9zeXMvbmZzL25mc25vZGUuaCx2DQpyZXRyaWV2aW5nIHJldmlz aW9uIDEuMzINCmRpZmYgLXUgLXIxLjMyIG5mc25vZGUuaA0KLS0tIG5mcy9u ZnNub2RlLmgJMTk5OS8xMi8yOSAwNDo1NDo1NQkxLjMyDQorKysgbmZzL25m c25vZGUuaAkyMDAxLzA2LzA2IDA4OjUzOjQ5DQpAQCAtODYsNiArODYsNyBA QA0KICAqICAgICBiZSB3ZWxsIGFsaWduZWQgYW5kLCB0aGVyZWZvcmUsIHRp Z2h0bHkgcGFja2VkLg0KICAqLw0KIHN0cnVjdCBuZnNub2RlIHsNCisJc3Ry dWN0IGxvY2sJCW5fbG9jazsNCiAJTElTVF9FTlRSWShuZnNub2RlKQluX2hh c2g7CQkvKiBIYXNoIGNoYWluICovDQogCUNJUkNMRVFfRU5UUlkobmZzbm9k ZSkJbl90aW1lcjsJLyogTnFuZnMgdGltZXIgY2hhaW4gKi8NCiAJdV9xdWFk X3QJCW5fc2l6ZTsJCS8qIEN1cnJlbnQgc2l6ZSBvZiBmaWxlICovDQpJbmRl eDogbWlzY2ZzL251bGxmcy9udWxsLmgNCj09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0NClJDUyBmaWxlOiAvaG9tZS9uY3ZzL3NyYy9zeXMvbWlzY2ZzL251bGxm cy9BdHRpYy9udWxsLmgsdg0KcmV0cmlldmluZyByZXZpc2lvbiAxLjExLjIu Mg0KZGlmZiAtdSAtcjEuMTEuMi4yIG51bGwuaA0KLS0tIG1pc2Nmcy9udWxs ZnMvbnVsbC5oCTIwMDAvMTAvMjUgMDQ6MjY6MzAJMS4xMS4yLjINCisrKyBt aXNjZnMvbnVsbGZzL251bGwuaAkyMDAxLzA2LzA2IDA4OjUzOjQ5DQpAQCAt NTIsNiArNTIsOCBAQA0KICAqIEEgY2FjaGUgb2Ygdm5vZGUgcmVmZXJlbmNl cw0KICAqLw0KIHN0cnVjdCBudWxsX25vZGUgew0KKwlzdHJ1Y3QgbG9jawkJ bnVsbF9sb2NrOwkvKiBMb2NrIGZvciB0aGlzIHZub2RlLiBNQkYgKi8NCisJ c3RydWN0IGxvY2sJCSpudWxsX3ZubG9jazsJLyogbG9jayBvZiBsb3dlciB2 bm9kZSBpbiB0aGUgc3RhY2sgKi8NCiAJTElTVF9FTlRSWShudWxsX25vZGUp CW51bGxfaGFzaDsJLyogSGFzaCBsaXN0ICovDQogCXN0cnVjdCB2bm9kZQkg ICAgICAgICpudWxsX2xvd2VydnA7CS8qIFZSRUZlZCBvbmNlICovDQogCXN0 cnVjdCB2bm9kZQkJKm51bGxfdm5vZGU7CS8qIEJhY2sgcG9pbnRlciAqLw0K SW5kZXg6IG1pc2Nmcy9udWxsZnMvbnVsbF9zdWJyLmMNCj09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0NClJDUyBmaWxlOiAvaG9tZS9uY3ZzL3NyYy9zeXMvbWlz Y2ZzL251bGxmcy9BdHRpYy9udWxsX3N1YnIuYyx2DQpyZXRyaWV2aW5nIHJl dmlzaW9uIDEuMjEuMi4zDQpkaWZmIC11IC1yMS4yMS4yLjMgbnVsbF9zdWJy LmMNCi0tLSBtaXNjZnMvbnVsbGZzL251bGxfc3Vici5jCTIwMDEvMDUvMzAg MDk6NDc6MDIJMS4yMS4yLjMNCisrKyBtaXNjZnMvbnVsbGZzL251bGxfc3Vi ci5jCTIwMDEvMDYvMDYgMDg6NTM6NDkNCkBAIC0xMzAsMTAgKzEzMCwxMSBA QA0KIAkJCSAqIHN0dWZmLCBidXQgd2UgZG9uJ3Qgd2FudCB0byBsb2NrDQog CQkJICogdGhlIGxvd2VyIG5vZGUuDQogCQkJICovDQotCQkJaWYgKHZnZXQo dnAsIDAsIHApKSB7DQorCQkJaWYgKHZnZXQodnAsIExLX0VYQ0xVU0lWRSB8 IExLX0NBTlJFQ1VSU0UsIHApKSB7DQogCQkJCXByaW50ZiAoIm51bGxfbm9k ZV9maW5kOiB2Z2V0IGZhaWxlZC5cbiIpOw0KIAkJCQlnb3RvIGxvb3A7DQot CQkJfTsNCisJCQl9DQorCQkJVk9QX1VOTE9DSyhsb3dlcnZwLCAwLCBwKTsN CiAJCQlyZXR1cm4gKHZwKTsNCiAJCX0NCiAJfQ0KQEAgLTE3Niw2ICsxNzcs NyBAQA0KIAl2cCA9ICp2cHA7DQogDQogCXZwLT52X3R5cGUgPSBsb3dlcnZw LT52X3R5cGU7DQorCWxvY2tpbml0KCZ4cC0+bnVsbF9sb2NrLCBQSU5PRCwg Im51bGxub2RlIiwgMCwgTEtfQ0FOUkVDVVJTRSk7DQogCXhwLT5udWxsX3Zu b2RlID0gdnA7DQogCXZwLT52X2RhdGEgPSB4cDsNCiAJeHAtPm51bGxfbG93 ZXJ2cCA9IGxvd2VydnA7DQpAQCAtMTkyLDkgKzE5NCwyNCBAQA0KIAkJdnJl bGUodnApOw0KIAkJKnZwcCA9IG90aGVydnA7DQogCQlyZXR1cm4gMDsNCi0J fTsNCi0JVlJFRihsb3dlcnZwKTsgICAvKiBFeHRyYSBWUkVGIHdpbGwgYmUg dnJlbGUnZCBpbiBudWxsX25vZGVfY3JlYXRlICovDQorCX0NCisNCisJLyoN CisJICogRnJvbSBOZXRCU0Q6DQorCSAqIE5vdyBsb2NrIHRoZSBuZXcgbm9k ZS4gV2UgcmVseSBvbiB0aGUgZmFjdCB0aGF0IHdlIHdlcmUgcGFzc2VkDQor CSAqIGEgbG9ja2VkIHZub2RlLiBJZiB0aGUgbG93ZXIgbm9kZSBpcyBleHBv cnRpbmcgYSBzdHJ1Y3QgbG9jaw0KKwkgKiAodl92bmxvY2sgIT0gTlVMTCkg dGhlbiB3ZSBqdXN0IHNldCB0aGUgdXBwZXIgdl92bmxvY2sgdG8gdGhlDQor CSAqIGxvd2VyIG9uZSwgYW5kIGJvdGggYXJlIG5vdyBsb2NrZWQuIElmIHRo ZSBsb3dlciBub2RlIGlzIGV4cG9ydGluZw0KKwkgKiBOVUxMLCB0aGVuIHdl IGNvcHkgdGhhdCB1cCBhbmQgbWFudWFsbHkgbG9jayB0aGUgbmV3IHZub2Rl Lg0KKwkgKi8NCisNCiAJbG9ja21ncigmbnVsbF9oYXNobG9jaywgTEtfRVhD TFVTSVZFLCBOVUxMLCBwKTsNCisJdnAtPnZfdm5sb2NrID0gbG93ZXJ2cC0+ dl92bmxvY2s7DQorCWVycm9yID0gVk9QX0xPQ0sodnAsIExLX0VYQ0xVU0lW RSB8IExLX1RISVNMQVlFUiwgcCk7DQorCWlmIChlcnJvcikNCisJCXBhbmlj KCJudWxsX25vZGVfYWxsb2M6IGNhbid0IGxvY2sgbmV3IHZub2RlXG4iKTsN CisNCisJVlJFRihsb3dlcnZwKTsNCiAJaGQgPSBOVUxMX05IQVNIKGxvd2Vy dnApOw0KIAlMSVNUX0lOU0VSVF9IRUFEKGhkLCB4cCwgbnVsbF9oYXNoKTsN CiAJbG9ja21ncigmbnVsbF9oYXNobG9jaywgTEtfUkVMRUFTRSwgTlVMTCwg cCk7DQpAQCAtMjIxLDEwICsyMzgsMTAgQEANCiAJCSAqIG51bGxfbm9kZV9m aW5kIGhhcyB0YWtlbiBhbm90aGVyIHJlZmVyZW5jZQ0KIAkJICogdG8gdGhl IGFsaWFzIHZub2RlLg0KIAkJICovDQorCQl2cmVsZShsb3dlcnZwKTsNCiAj aWZkZWYgTlVMTEZTX0RFQlVHDQogCQl2cHJpbnQoIm51bGxfbm9kZV9jcmVh dGU6IGV4aXN0cyIsIGFsaWFzdnApOw0KICNlbmRpZg0KLQkJLyogVlJFRihh bGlhc3ZwKTsgLS0tIGRvbmUgaW4gbnVsbF9ub2RlX2ZpbmQgKi8NCiAJfSBl bHNlIHsNCiAJCWludCBlcnJvcjsNCiANCkBAIC0yNDQsOCArMjYxLDYgQEAN CiAJCSAqIGFsaWFzdnAgaXMgYWxyZWFkeSBWUkVGJ2QgYnkgZ2V0bmV3dm5v ZGUoKQ0KIAkJICovDQogCX0NCi0NCi0JdnJlbGUobG93ZXJ2cCk7DQogDQog I2lmZGVmIERJQUdOT1NUSUMNCiAJaWYgKGxvd2VydnAtPnZfdXNlY291bnQg PCAxKSB7DQpJbmRleDogbWlzY2ZzL251bGxmcy9udWxsX3Zub3BzLmMNCj09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0NClJDUyBmaWxlOiAvaG9tZS9uY3ZzL3Ny Yy9zeXMvbWlzY2ZzL251bGxmcy9BdHRpYy9udWxsX3Zub3BzLmMsdg0KcmV0 cmlldmluZyByZXZpc2lvbiAxLjM4LjIuNA0KZGlmZiAtdSAtcjEuMzguMi40 IG51bGxfdm5vcHMuYw0KLS0tIG1pc2Nmcy9udWxsZnMvbnVsbF92bm9wcy5j CTIwMDEvMDUvMzAgMDk6NDc6MDIJMS4zOC4yLjQNCisrKyBtaXNjZnMvbnVs bGZzL251bGxfdm5vcHMuYwkyMDAxLzA2LzA2IDA4OjUzOjQ5DQpAQCAtMTk1 LDYgKzE5NSw3IEBADQogc3RhdGljIGludAludWxsX2dldGF0dHIoc3RydWN0 IHZvcF9nZXRhdHRyX2FyZ3MgKmFwKTsNCiBzdGF0aWMgaW50CW51bGxfZ2V0 dm9iamVjdChzdHJ1Y3Qgdm9wX2dldHZvYmplY3RfYXJncyAqYXApOw0KIHN0 YXRpYyBpbnQJbnVsbF9pbmFjdGl2ZShzdHJ1Y3Qgdm9wX2luYWN0aXZlX2Fy Z3MgKmFwKTsNCitzdGF0aWMgaW50CW51bGxfaXNsb2NrZWQoc3RydWN0IHZv cF9pc2xvY2tlZF9hcmdzICphcCk7DQogc3RhdGljIGludAludWxsX2xvY2so c3RydWN0IHZvcF9sb2NrX2FyZ3MgKmFwKTsNCiBzdGF0aWMgaW50CW51bGxf bG9va3VwKHN0cnVjdCB2b3BfbG9va3VwX2FyZ3MgKmFwKTsNCiBzdGF0aWMg aW50CW51bGxfb3BlbihzdHJ1Y3Qgdm9wX29wZW5fYXJncyAqYXApOw0KQEAg LTM1OSw0NCArMzYwLDQzIEBADQogCX0gKi8gKmFwOw0KIHsNCiAJc3RydWN0 IGNvbXBvbmVudG5hbWUgKmNucCA9IGFwLT5hX2NucDsNCisJc3RydWN0IHZu b2RlICpkdnAgPSBhcC0+YV9kdnA7DQogCXN0cnVjdCBwcm9jICpwID0gY25w LT5jbl9wcm9jOw0KIAlpbnQgZmxhZ3MgPSBjbnAtPmNuX2ZsYWdzOw0KLQlz dHJ1Y3Qgdm9wX2xvY2tfYXJncyBsb2NrYXJnczsNCi0Jc3RydWN0IHZvcF91 bmxvY2tfYXJncyB1bmxvY2thcmdzOw0KLQlzdHJ1Y3Qgdm5vZGUgKmR2cCwg KnZwOw0KKwlzdHJ1Y3Qgdm5vZGUgKnZwLCAqbGR2cCwgKmx2cDsNCiAJaW50 IGVycm9yOw0KIA0KLQlpZiAoKGZsYWdzICYgSVNMQVNUQ04pICYmIChhcC0+ YV9kdnAtPnZfbW91bnQtPm1udF9mbGFnICYgTU5UX1JET05MWSkgJiYNCisJ aWYgKChmbGFncyAmIElTTEFTVENOKSAmJiAoZHZwLT52X21vdW50LT5tbnRf ZmxhZyAmIE1OVF9SRE9OTFkpICYmDQogCSAgICAoY25wLT5jbl9uYW1laW9w ID09IERFTEVURSB8fCBjbnAtPmNuX25hbWVpb3AgPT0gUkVOQU1FKSkNCiAJ CXJldHVybiAoRVJPRlMpOw0KLQllcnJvciA9IG51bGxfYnlwYXNzKChzdHJ1 Y3Qgdm9wX2dlbmVyaWNfYXJncyAqKWFwKTsNCisJLyoNCisJICogQWx0aG91 Z2ggaXQgaXMgcG9zc2libGUgdG8gY2FsbCBudWxsX2J5cGFzcygpLCB3ZSds bCBkbw0KKwkgKiBhIGRpcmVjdCBjYWxsIHRvIHJlZHVjZSBvdmVyaGVhZA0K KwkgKi8NCisJbGR2cCA9IE5VTExWUFRPTE9XRVJWUChkdnApOw0KKwl2cCA9 IGx2cCA9IE5VTEw7DQorCWVycm9yID0gVk9QX0xPT0tVUChsZHZwLCAmbHZw LCBjbnApOw0KIAlpZiAoZXJyb3IgPT0gRUpVU1RSRVRVUk4gJiYgKGZsYWdz ICYgSVNMQVNUQ04pICYmDQotCSAgICAoYXAtPmFfZHZwLT52X21vdW50LT5t bnRfZmxhZyAmIE1OVF9SRE9OTFkpICYmDQorCSAgICAoZHZwLT52X21vdW50 LT5tbnRfZmxhZyAmIE1OVF9SRE9OTFkpICYmDQogCSAgICAoY25wLT5jbl9u YW1laW9wID09IENSRUFURSB8fCBjbnAtPmNuX25hbWVpb3AgPT0gUkVOQU1F KSkNCiAJCWVycm9yID0gRVJPRlM7DQorDQogCS8qDQotCSAqIFdlIG11c3Qg ZG8gdGhlIHNhbWUgbG9ja2luZyBhbmQgdW5sb2NraW5nIGF0IHRoaXMgbGF5 ZXIgYXMgDQotCSAqIGlzIGRvbmUgaW4gdGhlIGxheWVycyBiZWxvdyB1cy4g V2UgY291bGQgZmlndXJlIHRoaXMgb3V0IA0KLQkgKiBiYXNlZCBvbiB0aGUg ZXJyb3IgcmV0dXJuIGFuZCB0aGUgTEFTVENOLCBMT0NLUEFSRU5ULCBhbmQN Ci0JICogTE9DS0xFQUYgZmxhZ3MuIEhvd2V2ZXIsIGl0IGlzIG1vcmUgZXhw aWRpZW50IHRvIGp1c3QgZmluZCANCi0JICogb3V0IHRoZSBzdGF0ZSBvZiB0 aGUgbG93ZXIgbGV2ZWwgdm5vZGVzIGFuZCBzZXQgb3VycyB0byB0aGUNCi0J ICogc2FtZSBzdGF0ZS4NCisJICogUmVseSBvbmx5IG9uIHRoZSBQRElSVU5M T0NLIGZsYWcgd2hpY2ggc2hvdWxkIGJlIGNhcmVmdWxseQ0KKwkgKiB0cmFj a2VkIGJ5IHVuZGVybHlpbmcgZmlsZXN5c3RlbS4NCiAJICovDQotCWR2cCA9 IGFwLT5hX2R2cDsNCi0JdnAgPSAqYXAtPmFfdnBwOw0KLQlpZiAoZHZwID09 IHZwKQ0KLQkJcmV0dXJuIChlcnJvcik7DQotCWlmICghVk9QX0lTTE9DS0VE KGR2cCwgTlVMTCkpIHsNCi0JCXVubG9ja2FyZ3MuYV92cCA9IGR2cDsNCi0J CXVubG9ja2FyZ3MuYV9mbGFncyA9IDA7DQotCQl1bmxvY2thcmdzLmFfcCA9 IHA7DQotCQl2b3Bfbm91bmxvY2soJnVubG9ja2FyZ3MpOw0KLQl9DQotCWlm ICh2cCAhPSBOVUxMVlAgJiYgVk9QX0lTTE9DS0VEKHZwLCBOVUxMKSkgew0K LQkJbG9ja2FyZ3MuYV92cCA9IHZwOw0KLQkJbG9ja2FyZ3MuYV9mbGFncyA9 IExLX1NIQVJFRDsNCi0JCWxvY2thcmdzLmFfcCA9IHA7DQotCQl2b3Bfbm9s b2NrKCZsb2NrYXJncyk7DQorCWlmIChjbnAtPmNuX2ZsYWdzICYgUERJUlVO TE9DSykNCisJCVZPUF9VTkxPQ0soZHZwLCBMS19USElTTEFZRVIsIHApOw0K KwlpZiAoKGVycm9yID09IDAgfHwgZXJyb3IgPT0gRUpVU1RSRVRVUk4pICYm IGx2cCAhPSBOVUxMKSB7DQorCQlpZiAobGR2cCA9PSBsdnApIHsNCisJCQkq YXAtPmFfdnBwID0gZHZwOw0KKwkJCVZSRUYoZHZwKTsNCisJCQl2cmVsZShs dnApOw0KKwkJfSBlbHNlIHsNCisJCQllcnJvciA9IG51bGxfbm9kZV9jcmVh dGUoZHZwLT52X21vdW50LCBsdnAsICZ2cCk7DQorCQkJaWYgKGVycm9yID09 IDApDQorCQkJCSphcC0+YV92cHAgPSB2cDsNCisJCX0NCiAJfQ0KIAlyZXR1 cm4gKGVycm9yKTsNCiB9DQpAQCAtNDY0LDYgKzQ2NCw4IEBADQogDQogCWlm ICgoZXJyb3IgPSBudWxsX2J5cGFzcygoc3RydWN0IHZvcF9nZW5lcmljX2Fy Z3MgKilhcCkpICE9IDApDQogCQlyZXR1cm4gKGVycm9yKTsNCisNCisJYXAt PmFfdmFwLT52YV9mc2lkID0gYXAtPmFfdnAtPnZfbW91bnQtPm1udF9zdGF0 LmZfZnNpZC52YWxbMF07DQogCXJldHVybiAoMCk7DQogfQ0KIA0KQEAgLTU3 NSwxMiArNTc3LDY0IEBADQogCQlzdHJ1Y3QgcHJvYyAqYV9wOw0KIAl9ICov ICphcDsNCiB7DQorCXN0cnVjdCB2bm9kZSAqdnAgPSBhcC0+YV92cDsNCisJ aW50IGZsYWdzID0gYXAtPmFfZmxhZ3M7DQorCXN0cnVjdCBwcm9jICpwID0g YXAtPmFfcDsNCisJc3RydWN0IG51bGxfbm9kZSAqbnAgPSBWVE9OVUxMKHZw KTsNCisJc3RydWN0IHZub2RlICpsdnA7DQorCWludCBlcnJvcjsNCiANCi0J dm9wX25vbG9jayhhcCk7DQotCWlmICgoYXAtPmFfZmxhZ3MgJiBMS19UWVBF X01BU0spID09IExLX0RSQUlOKQ0KLQkJcmV0dXJuICgwKTsNCi0JYXAtPmFf ZmxhZ3MgJj0gfkxLX0lOVEVSTE9DSzsNCi0JcmV0dXJuIChudWxsX2J5cGFz cygoc3RydWN0IHZvcF9nZW5lcmljX2FyZ3MgKilhcCkpOw0KKwlpZiAoZmxh Z3MgJiBMS19USElTTEFZRVIpIHsNCisJCWlmICh2cC0+dl92bmxvY2sgIT0g TlVMTCkNCisJCQlyZXR1cm4gMDsJLyogbG9jayBpcyBzaGFyZWQgYWNyb3Nz IGxheWVycyAqLw0KKwkJZXJyb3IgPSBsb2NrbWdyKCZucC0+bnVsbF9sb2Nr LCBmbGFncyAmIH5MS19USElTTEFZRVIsDQorCQkgICAgJnZwLT52X2ludGVy bG9jaywgcCk7DQorCQlyZXR1cm4gKGVycm9yKTsNCisJfQ0KKw0KKwlpZiAo dnAtPnZfdm5sb2NrICE9IE5VTEwpIHsNCisJCS8qDQorCQkgKiBUaGUgbG93 ZXIgbGV2ZWwgaGFzIGV4cG9ydGVkIGEgc3RydWN0IGxvY2sgdG8gdXMuIFVz ZQ0KKwkJICogaXQgc28gdGhhdCBhbGwgdm5vZGVzIGluIHRoZSBzdGFjayBs b2NrIGFuZCB1bmxvY2sNCisJCSAqIHNpbXVsdGFuZW91c2x5LiBOb3RlOiB3 ZSBkb24ndCBEUkFJTiB0aGUgbG9jayBhcyBEUkFJTg0KKwkJICogZGVjb21t aXNzaW9ucyB0aGUgbG9jayAtIGp1c3QgYmVjYXVzZSBvdXIgdm5vZGUgaXMN CisJCSAqIGdvaW5nIGF3YXkgZG9lc24ndCBtZWFuIHRoZSBzdHJ1Y3QgbG9j ayBiZWxvdyB1cyBpcy4NCisJCSAqIExLX0VYQ0xVU0lWRSBpcyBmaW5lLg0K KwkJICovDQorCQlpZiAoKGZsYWdzICYgTEtfVFlQRV9NQVNLKSA9PSBMS19E UkFJTikgew0KKwkJCU5VTExGU0RFQlVHKCJudWxsX2xvY2s6IGF2b2lkaW5n IExLX0RSQUlOXG4iKTsNCisJCQlyZXR1cm4obG9ja21ncih2cC0+dl92bmxv Y2ssDQorCQkJCShmbGFncyAmIH5MS19UWVBFX01BU0spIHwgTEtfRVhDTFVT SVZFLA0KKwkJCQkmdnAtPnZfaW50ZXJsb2NrLCBwKSk7DQorCQl9DQorCQly ZXR1cm4obG9ja21ncih2cC0+dl92bmxvY2ssIGZsYWdzLCAmdnAtPnZfaW50 ZXJsb2NrLCBwKSk7DQorCX0NCisJLyoNCisJICogVG8gcHJldmVudCByYWNl IGNvbmRpdGlvbnMgaW52b2x2aW5nIGRvaW5nIGEgbG9va3VwDQorCSAqIG9u ICIuLiIsIHdlIGhhdmUgdG8gbG9jayB0aGUgbG93ZXIgbm9kZSwgdGhlbiBs b2NrIG91cg0KKwkgKiBub2RlLiBNb3N0IG9mIHRoZSB0aW1lIGl0IHdvbid0 IG1hdHRlciB0aGF0IHdlIGxvY2sgb3VyDQorCSAqIG5vZGUgKGFzIGFueSBs b2NraW5nIHdvdWxkIG5lZWQgdGhlIGxvd2VyIG9uZSBsb2NrZWQNCisJICog Zmlyc3QpLiBCdXQgd2UgY2FuIExLX0RSQUlOIHRoZSB1cHBlciBsb2NrIGFz IGEgc3RlcA0KKwkgKiB0b3dhcmRzIGRlY29taXNzaW9uaW5nIGl0Lg0KKwkg Ki8NCisJbHZwID0gTlVMTFZQVE9MT1dFUlZQKHZwKTsNCisJaWYgKGx2cCA9 PSBOVUxMKQ0KKwkJcmV0dXJuIChsb2NrbWdyKCZucC0+bnVsbF9sb2NrLCBm bGFncywgJnZwLT52X2ludGVybG9jaywgcCkpOw0KKwlpZiAoZmxhZ3MgJiBM S19JTlRFUkxPQ0spIHsNCisJCVZJX1VOTE9DSyh2cCk7DQorCQlmbGFncyAm PSB+TEtfSU5URVJMT0NLOw0KKwl9DQorCWlmICgoZmxhZ3MgJiBMS19UWVBF X01BU0spID09IExLX0RSQUlOKSB7DQorCQllcnJvciA9IFZPUF9MT0NLKGx2 cCwNCisJCQkoZmxhZ3MgJiB+TEtfVFlQRV9NQVNLKSB8IExLX0VYQ0xVU0lW RSwgcCk7DQorCX0gZWxzZQ0KKwkJZXJyb3IgPSBWT1BfTE9DSyhsdnAsIGZs YWdzLCBwKTsNCisJaWYgKGVycm9yKQ0KKwkJcmV0dXJuIChlcnJvcik7DQor CWVycm9yID0gbG9ja21ncigmbnAtPm51bGxfbG9jaywgZmxhZ3MsICZ2cC0+ dl9pbnRlcmxvY2ssIHApOw0KKwlpZiAoZXJyb3IpDQorCQlWT1BfVU5MT0NL KGx2cCwgMCwgcCk7DQorCXJldHVybiAoZXJyb3IpOw0KIH0NCiANCiAvKg0K QEAgLTU5NiwxMiArNjUwLDU2IEBADQogCQlzdHJ1Y3QgcHJvYyAqYV9wOw0K IAl9ICovICphcDsNCiB7DQotCXZvcF9ub3VubG9jayhhcCk7DQotCWFwLT5h X2ZsYWdzICY9IH5MS19JTlRFUkxPQ0s7DQotCXJldHVybiAobnVsbF9ieXBh c3MoKHN0cnVjdCB2b3BfZ2VuZXJpY19hcmdzICopYXApKTsNCisJc3RydWN0 IHZub2RlICp2cCA9IGFwLT5hX3ZwOw0KKwlpbnQgZmxhZ3MgPSBhcC0+YV9m bGFnczsNCisJc3RydWN0IHByb2MgKnAgPSBhcC0+YV9wOw0KKwlzdHJ1Y3Qg bnVsbF9ub2RlICpucCA9IFZUT05VTEwodnApOw0KKwlzdHJ1Y3Qgdm5vZGUg Kmx2cDsNCisNCisJaWYgKHZwLT52X3ZubG9jayAhPSBOVUxMKSB7DQorCQlp ZiAoZmxhZ3MgJiBMS19USElTTEFZRVIpDQorCQkJcmV0dXJuIDA7CS8qIHRo ZSBsb2NrIGlzIHNoYXJlZCBhY3Jvc3MgbGF5ZXJzICovDQorCQlmbGFncyAm PSB+TEtfVEhJU0xBWUVSOw0KKwkJcmV0dXJuIChsb2NrbWdyKHZwLT52X3Zu bG9jaywgZmxhZ3MgfCBMS19SRUxFQVNFLA0KKwkJCSZ2cC0+dl9pbnRlcmxv Y2ssIHApKTsNCisJfQ0KKwlsdnAgPSBOVUxMVlBUT0xPV0VSVlAodnApOw0K KwlpZiAobHZwID09IE5VTEwpDQorCQlyZXR1cm4gKGxvY2ttZ3IoJm5wLT5u dWxsX2xvY2ssIGZsYWdzIHwgTEtfUkVMRUFTRSwgJnZwLT52X2ludGVybG9j aywgcCkpOw0KKwlpZiAoKGZsYWdzICYgTEtfVEhJU0xBWUVSKSA9PSAwKSB7 DQorCQlpZiAoZmxhZ3MgJiBMS19JTlRFUkxPQ0spIHsNCisJCQlWSV9VTkxP Q0sodnApOw0KKwkJCWZsYWdzICY9IH5MS19JTlRFUkxPQ0s7DQorCQl9DQor CQlWT1BfVU5MT0NLKGx2cCwgZmxhZ3MsIHApOw0KKwl9IGVsc2UNCisJCWZs YWdzICY9IH5MS19USElTTEFZRVI7DQorCWFwLT5hX2ZsYWdzID0gZmxhZ3M7 DQorCXJldHVybiAobG9ja21ncigmbnAtPm51bGxfbG9jaywgZmxhZ3MgfCBM S19SRUxFQVNFLCAmdnAtPnZfaW50ZXJsb2NrLCBwKSk7DQogfQ0KIA0KIHN0 YXRpYyBpbnQNCitudWxsX2lzbG9ja2VkKGFwKQ0KKwlzdHJ1Y3Qgdm9wX2lz bG9ja2VkX2FyZ3MgLyogew0KKwkJc3RydWN0IHZub2RlICphX3ZwOw0KKwkJ c3RydWN0IHByb2MgKmFfcDsNCisJfSAqLyAqYXA7DQorew0KKwlzdHJ1Y3Qg dm5vZGUgKnZwID0gYXAtPmFfdnA7DQorCXN0cnVjdCBwcm9jICpwID0gYXAt PmFfcDsNCisNCisJaWYgKHZwLT52X3ZubG9jayAhPSBOVUxMKQ0KKwkJcmV0 dXJuIChsb2Nrc3RhdHVzKHZwLT52X3ZubG9jaywgcCkpOw0KKwlyZXR1cm4g KGxvY2tzdGF0dXMoJlZUT05VTEwodnApLT5udWxsX2xvY2ssIHApKTsNCit9 DQorDQorDQorLyoNCisgKiBUaGVyZSBpcyBubyB3YXkgdG8gdGVsbCB0aGF0 IHNvbWVvbmUgaXNzdWVkIHJlbW92ZS9ybWRpciBvcGVyYXRpb24NCisgKiBv biB0aGUgdW5kZXJseWluZyBmaWxlc3lzdGVtLiBGb3Igbm93IHdlIGp1c3Qg aGF2ZSB0byByZWxlYXNlIGxvd2V2cnANCisgKiBhcyBzb29uIGFzIHBvc3Np YmxlLg0KKyAqLw0KK3N0YXRpYyBpbnQNCiBudWxsX2luYWN0aXZlKGFwKQ0K IAlzdHJ1Y3Qgdm9wX2luYWN0aXZlX2FyZ3MgLyogew0KIAkJc3RydWN0IHZu b2RlICphX3ZwOw0KQEAgLTYwOSwyNyArNzA3LDM0IEBADQogCX0gKi8gKmFw Ow0KIHsNCiAJc3RydWN0IHZub2RlICp2cCA9IGFwLT5hX3ZwOw0KKwlzdHJ1 Y3QgcHJvYyAqcCA9IGFwLT5hX3A7DQogCXN0cnVjdCBudWxsX25vZGUgKnhw ID0gVlRPTlVMTCh2cCk7DQogCXN0cnVjdCB2bm9kZSAqbG93ZXJ2cCA9IHhw LT5udWxsX2xvd2VydnA7DQorDQorCWxvY2ttZ3IoJm51bGxfaGFzaGxvY2ss IExLX0VYQ0xVU0lWRSwgTlVMTCwgcCk7DQorCUxJU1RfUkVNT1ZFKHhwLCBu dWxsX2hhc2gpOw0KKwlsb2NrbWdyKCZudWxsX2hhc2hsb2NrLCBMS19SRUxF QVNFLCBOVUxMLCBwKTsNCisNCisJeHAtPm51bGxfbG93ZXJ2cCA9IE5VTExW UDsNCisJaWYgKHZwLT52X3ZubG9jayAhPSBOVUxMKSB7DQorCQl2cC0+dl92 bmxvY2sgPSAmeHAtPm51bGxfbG9jazsJLyogd2Ugbm8gbG9uZ2VyIHNoYXJl IHRoZSBsb2NrICovDQorCX0gZWxzZQ0KKwkJVk9QX1VOTE9DSyh2cCwgTEtf VEhJU0xBWUVSLCBwKTsNCisNCisJdnB1dChsb3dlcnZwKTsNCiAJLyoNCi0J ICogRG8gbm90aGluZyAoYW5kIF9kb24ndF8gYnlwYXNzKS4NCi0JICogV2Fp dCB0byB2cmVsZSBsb3dlcnZwIHVudGlsIHJlY2xhaW0sDQotCSAqIHNvIHRo YXQgdW50aWwgdGhlbiBvdXIgbnVsbF9ub2RlIGlzIGluIHRoZQ0KLQkgKiBj YWNoZSBhbmQgcmV1c2FibGUuDQotCSAqIFdlIHN0aWxsIGhhdmUgdG8gdGVs bCB0aGUgbG93ZXIgbGF5ZXIgdGhlIHZub2RlDQotCSAqIGlzIG5vdyBpbmFj dGl2ZSB0aG91Z2guDQotCSAqDQotCSAqIE5FRURTV09SSzogU29tZWRheSwg Y29uc2lkZXIgaW5hY3RpdmUnaW5nDQotCSAqIHRoZSBsb3dlcnZwIGFuZCB0 aGVuIHRyeWluZyB0byByZWFjdGl2YXRlIGl0DQotCSAqIHdpdGggY2FwYWJp bGl0aWVzICh2X2lkKQ0KLQkgKiBsaWtlIHRoZXkgZG8gaW4gdGhlIG5hbWUg bG9va3VwIGNhY2hlIGNvZGUuDQotCSAqIFRoYXQncyB0b28gbXVjaCB3b3Jr IGZvciBub3cuDQorCSAqIE5vdyBpdCBpcyBzYWZlIHRvIGRyb3AgcmVmZXJl bmNlcyB0byB0aGUgbG93ZXIgdm5vZGUuDQorCSAqIFZPUF9JTkFDVElWRSgp IHdpbGwgYmUgY2FsbGVkIGJ5IHZyZWxlKCkgaWYgbmVjZXNzYXJ5Lg0KIAkg Ki8NCi0JVk9QX0lOQUNUSVZFKGxvd2VydnAsIGFwLT5hX3ApOw0KLQlWT1Bf VU5MT0NLKGFwLT5hX3ZwLCAwLCBhcC0+YV9wKTsNCisJdnJlbGUgKGxvd2Vy dnApOw0KKw0KIAlyZXR1cm4gKDApOw0KIH0NCiANCisvKg0KKyAqIFdlIGNh biBmcmVlIG1lbW9yeSBpbiBudWxsX2luYWN0aXZlLCBidXQgd2UgZG8gdGhp cw0KKyAqIGhlcmUuIChQb3NzaWJsZSB0byBndWFyZCB2cC0+dl9kYXRhIHRv IHBvaW50IHNvbWV3aGVyZSkNCisgKi8NCiBzdGF0aWMgaW50DQogbnVsbF9y ZWNsYWltKGFwKQ0KIAlzdHJ1Y3Qgdm9wX3JlY2xhaW1fYXJncyAvKiB7DQpA QCAtNjM4LDIyICs3NDMsMTEgQEANCiAJfSAqLyAqYXA7DQogew0KIAlzdHJ1 Y3Qgdm5vZGUgKnZwID0gYXAtPmFfdnA7DQotCXN0cnVjdCBwcm9jICpwID0g YXAtPmFfcDsNCi0Jc3RydWN0IG51bGxfbm9kZSAqeHAgPSBWVE9OVUxMKHZw KTsNCi0Jc3RydWN0IHZub2RlICpsb3dlcnZwID0geHAtPm51bGxfbG93ZXJ2 cDsNCisJdm9pZCAqdmRhdGEgPSB2cC0+dl9kYXRhOw0KIA0KLQkvKg0KLQkg KiBOb3RlOiBpbiB2b3BfcmVjbGFpbSwgdnAtPnZfb3AgPT0gZGVhZF92bm9k ZW9wX3AsDQotCSAqIHNvIHdlIGNhbid0IGNhbGwgVk9QcyBvbiBvdXJzZWxm Lg0KLQkgKi8NCi0JLyogQWZ0ZXIgdGhpcyBhc3NpZ25tZW50LCB0aGlzIG5v ZGUgd2lsbCBub3QgYmUgcmUtdXNlZC4gKi8NCi0JeHAtPm51bGxfbG93ZXJ2 cCA9IE5VTExWUDsNCi0JbG9ja21ncigmbnVsbF9oYXNobG9jaywgTEtfRVhD TFVTSVZFLCBOVUxMLCBwKTsNCi0JTElTVF9SRU1PVkUoeHAsIG51bGxfaGFz aCk7DQotCWxvY2ttZ3IoJm51bGxfaGFzaGxvY2ssIExLX1JFTEVBU0UsIE5V TEwsIHApOw0KIAl2cC0+dl9kYXRhID0gTlVMTDsNCi0JRlJFRSh4cCwgTV9O VUxMRlNOT0RFKTsNCi0JdnJlbGUgKGxvd2VydnApOw0KKwlGUkVFKHZkYXRh LCBNX05VTExGU05PREUpOw0KKw0KIAlyZXR1cm4gKDApOw0KIH0NCiANCkBA IC03MzMsNiArODI3LDcgQEANCiAJeyAmdm9wX2dldGF0dHJfZGVzYywJCSh2 b3BfdCAqKSBudWxsX2dldGF0dHIgfSwNCiAJeyAmdm9wX2dldHZvYmplY3Rf ZGVzYywJCSh2b3BfdCAqKSBudWxsX2dldHZvYmplY3QgfSwNCiAJeyAmdm9w X2luYWN0aXZlX2Rlc2MsCQkodm9wX3QgKikgbnVsbF9pbmFjdGl2ZSB9LA0K Kwl7ICZ2b3BfaXNsb2NrZWRfZGVzYywJCSh2b3BfdCAqKSBudWxsX2lzbG9j a2VkIH0sDQogCXsgJnZvcF9sb2NrX2Rlc2MsCQkodm9wX3QgKikgbnVsbF9s b2NrIH0sDQogCXsgJnZvcF9sb29rdXBfZGVzYywJCSh2b3BfdCAqKSBudWxs X2xvb2t1cCB9LA0KIAl7ICZ2b3Bfb3Blbl9kZXNjLAkJKHZvcF90ICopIG51 bGxfb3BlbiB9LA0KSW5kZXg6IHN5cy9sb2NrLmgNCj09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0NClJDUyBmaWxlOiAvaG9tZS9uY3ZzL3NyYy9zeXMvc3lzL2xv Y2suaCx2DQpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMTcuMi4xDQpkaWZmIC11 IC1yMS4xNy4yLjEgbG9jay5oDQotLS0gc3lzL2xvY2suaAkyMDAwLzA5LzMw IDAyOjQ5OjM3CTEuMTcuMi4xDQorKysgc3lzL2xvY2suaAkyMDAxLzA2LzA2 IDA4OjUzOjQ5DQpAQCAtMTQxLDYgKzE0MSw3IEBADQogCQkJCSAgIGdldHRp bmcgbGtfaW50ZXJsb2NrICovDQogI2RlZmluZSBMS19SRVRSWQkweDAwMDIw MDAwIC8qIHZuX2xvY2s6IHJldHJ5IHVudGlsIGxvY2tlZCAqLw0KICNkZWZp bmUJTEtfTk9PQkoJMHgwMDA0MDAwMCAvKiB2Z2V0OiBkb24ndCBjcmVhdGUg b2JqZWN0ICovDQorI2RlZmluZQlMS19USElTTEFZRVIJMHgwMDA4MDAwMCAv KiB2bl9sb2NrOiBsb2NrL3VubG9jayBvbmx5IGN1cnJlbnQgbGF5ZXIgKi8N CiANCiAvKg0KICAqIEludGVybmFsIHN0YXRlIGZsYWdzIGNvcnJlc3BvbmRp bmcgdG8gbGtfc2hhcmVjb3VudCwgYW5kIGxrX3dhaXRjb3VudA0K --0-248198860-991820441=:61571-- To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-stable" in the body of the message