Date: Thu, 26 Aug 2010 17:57:55 +0200 (CEST) From: Ingo Flaschberger <if@xip.at> To: "Li, Qing" <qing.li@bluecoat.com> Cc: Qing Li <qingli@freebsd.org>, net@freebsd.org Subject: RE: funny ECMP Message-ID: <alpine.LFD.2.00.1008261754140.15491@filebunker.xip.at> In-Reply-To: <B583FBF374231F4A89607B4D08578A4307F20038@bcs-mail03.internal.cacheflow.com> References: <alpine.LFD.2.00.1008230154280.29368@filebunker.xip.at> <alpine.LFD.2.00.1008240144350.12708@filebunker.xip.at> <B583FBF374231F4A89607B4D08578A4307F1FC70@bcs-mail03.internal.cacheflow.com> <alpine.LFD.2.00.1008240223240.12708@filebunker.xip.at> <alpine.LFD.2.00.1008242005160.12708@filebunker.xip.at> <B583FBF374231F4A89607B4D08578A4307F1FF22@bcs-mail03.internal.cacheflow.com> <alpine.LFD.2.00.1008242027390.12708@filebunker.xip.at> <B583FBF374231F4A89607B4D08578A4307F1FF79@bcs-mail03.internal.cacheflow.com> <alpine.LFD.2.00.1008242102410.12708@filebunker.xip.at> <B583FBF374231F4A89607B4D08578A4307F20002@bcs-mail03.internal.cacheflow.com> <alpine.LFD.2.00.1008242227350.12708@filebunker.xip.at> <B583FBF374231F4A89607B4D08578A4307F20038@bcs-mail03.internal.cacheflow.com>
next in thread | previous 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. --168430090-1080199184-1282838276=:15491 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed Hi, with the help from OpenBSD I was able to get working code. Patch attached; applies fo Freebsd 8.1 Stable I was not able to implement all OpenBSD code in function rn_delete from sys/net/radix.c Currently I also see this (non critical) warnings: rn_delete: inconsistent annotation ifaddr cache = 0xffffff0032721e00 is deleted I will go on with testing when I'm back from holiday in 1 week. Kind regards, Ingo Flaschberger --168430090-1080199184-1282838276=:15491 Content-Type: TEXT/plain; name=mpath_patch_if_v1.txt Content-Transfer-Encoding: BASE64 Content-ID: <alpine.LFD.2.00.1008261757550.15491@filebunker.xip.at> Content-Description: Content-Disposition: attachment; filename=mpath_patch_if_v1.txt ZGlmZiAtciAtdSAvdXNyL3NyYy9zeXMvYW1kNjQvY29uZi9HRU5FUklDIC9y b3V0ZXIvdXNyL3NyYy9zeXMvYW1kNjQvY29uZi9HRU5FUklDDQotLS0gL3Vz ci9zcmMvc3lzL2FtZDY0L2NvbmYvR0VORVJJQwkyMDEwLTA4LTIzIDAwOjUz OjQ1LjAwMDAwMDAwMCArMDAwMA0KKysrIC9yb3V0ZXIvdXNyL3NyYy9zeXMv YW1kNjQvY29uZi9HRU5FUklDCTIwMTAtMDgtMTEgMDc6MTE6MjAuMDAwMDAw MDAwICswMDAwDQpAQCAtMzIzLDUgKzMyMywzIEBADQogZGV2aWNlCQlmd2lw CQkjIElQIG92ZXIgRmlyZVdpcmUgKFJGQyAyNzM0LDMxNDYpDQogZGV2aWNl CQlkY29ucwkJIyBEdW1iIGNvbnNvbGUgZHJpdmVyDQogZGV2aWNlCQlkY29u c19jcm9tCSMgQ29uZmlndXJhdGlvbiBST00gZm9yIGRjb25zDQotDQotb3B0 aW9uIFJBRElYX01QQVRIDQpkaWZmIC1yIC11IC91c3Ivc3JjL3N5cy9jb250 cmliL2lwZmlsdGVyL25ldGluZXQvaXBfcG9vbC5jIC9yb3V0ZXIvdXNyL3Ny Yy9zeXMvY29udHJpYi9pcGZpbHRlci9uZXRpbmV0L2lwX3Bvb2wuYw0KLS0t IC91c3Ivc3JjL3N5cy9jb250cmliL2lwZmlsdGVyL25ldGluZXQvaXBfcG9v bC5jCTIwMDctMTAtMTggMjE6NDI6MzguMDAwMDAwMDAwICswMDAwDQorKysg L3JvdXRlci91c3Ivc3JjL3N5cy9jb250cmliL2lwZmlsdGVyL25ldGluZXQv aXBfcG9vbC5jCTIwMTAtMDgtMjYgMTE6NTI6MjEuMDAwMDAwMDAwICswMDAw DQpAQCAtNjIwLDcgKzYyMCw3IEBADQogDQogCVJBRElYX05PREVfSEVBRF9M T0NLKGlwby0+aXBvX2hlYWQpOw0KIAlpcG8tPmlwb19oZWFkLT5ybmhfZGVs YWRkcigmaXBlLT5pcG5fYWRkciwgJmlwZS0+aXBuX21hc2ssDQotCQkJCSAg IGlwby0+aXBvX2hlYWQpOw0KKwkJCQkgICBpcG8tPmlwb19oZWFkLCBOVUxM KTsNCiAJUkFESVhfTk9ERV9IRUFEX1VOTE9DSyhpcG8tPmlwb19oZWFkKTsN CiANCiAJaXBfcG9vbF9ub2RlX2RlcmVmKGlwZSk7DQpAQCAtNzUxLDcgKzc1 MSw3IEBADQogCVJBRElYX05PREVfSEVBRF9MT0NLKGlwby0+aXBvX2hlYWQp Ow0KIAl3aGlsZSAoKG4gPSBpcG8tPmlwb19saXN0KSAhPSBOVUxMKSB7DQog CQlpcG8tPmlwb19oZWFkLT5ybmhfZGVsYWRkcigmbi0+aXBuX2FkZHIsICZu LT5pcG5fbWFzaywNCi0JCQkJCSAgIGlwby0+aXBvX2hlYWQpOw0KKwkJCQkJ ICAgaXBvLT5pcG9faGVhZCwgTlVMTCk7DQogDQogCQkqbi0+aXBuX3BuZXh0 ID0gbi0+aXBuX25leHQ7DQogCQlpZiAobi0+aXBuX25leHQpDQpAQCAtOTYz LDcgKzk2Myw3IEBADQogCXN0cnVjdCByYWRpeF9ub2RlX2hlYWQgKnJuaCA9 IHA7DQogCXN0cnVjdCByYWRpeF9ub2RlICpkOw0KIA0KLQlkID0gcm5oLT5y bmhfZGVsYWRkcihuLT5ybl9rZXksIE5VTEwsIHJuaCk7DQorCWQgPSBybmgt PnJuaF9kZWxhZGRyKG4tPnJuX2tleSwgTlVMTCwgcm5oLCBOVUxMKTsNCiAJ aWYgKGQgIT0gTlVMTCkgew0KIAkJRnJlZVMoZCwgbWF4X2tleWxlbiArIDIg KiBzaXplb2YgKCpkKSk7DQogCX0NCmRpZmYgLXIgLXUgL3Vzci9zcmMvc3lz L2NvbnRyaWIvcGYvbmV0L3BmLmMgL3JvdXRlci91c3Ivc3JjL3N5cy9jb250 cmliL3BmL25ldC9wZi5jDQotLS0gL3Vzci9zcmMvc3lzL2NvbnRyaWIvcGYv bmV0L3BmLmMJMjAxMC0wMS0yMyAwMDozMjoxOS4wMDAwMDAwMDAgKzAwMDAN CisrKyAvcm91dGVyL3Vzci9zcmMvc3lzL2NvbnRyaWIvcGYvbmV0L3BmLmMJ MjAxMC0wOC0yNiAxNToxMjoxMi4wMDAwMDAwMDAgKzAwMDANCkBAIC05OSw5 ICs5OSw3IEBADQogI2luY2x1ZGUgPG5ldC9pZl90eXBlcy5oPg0KICNpbmNs dWRlIDxuZXQvYnBmLmg+DQogI2luY2x1ZGUgPG5ldC9yb3V0ZS5oPg0KLSNp Zm5kZWYgX19GcmVlQlNEX18NCiAjaW5jbHVkZSA8bmV0L3JhZGl4X21wYXRo Lmg+DQotI2VuZGlmDQogDQogI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4NCiAj aW5jbHVkZSA8bmV0aW5ldC9pbl92YXIuaD4NCkBAIC02MTY2LDkgKzYxNjQs OSBAQA0KIAkJCWlmIChraWYtPnBmaWtfaWZwID09IGlmcCkNCiAJCQkJcmV0 ID0gMTsNCiAjaWZkZWYgX19GcmVlQlNEX18gLyogTVVMVElQQVRIX1JPVVRJ TkcgKi8NCi0JCQlybiA9IE5VTEw7DQorCQkJcm4gPSBybl9tcGF0aF9uZXh0 KHJuKTsgLyogWFhYIHdhcyBiZWZvcmU6IHJuID0gTlVMTDsgKi8NCiAjZWxz ZQ0KLQkJCXJuID0gcm5fbXBhdGhfbmV4dChybik7DQorCQkJcm4gPSBybl9t cGF0aF9uZXh0KHJuLCAwKTsNCiAjZW5kaWYNCiAJCX0gd2hpbGUgKGNoZWNr X21wYXRoID09IDEgJiYgcm4gIT0gTlVMTCAmJiByZXQgPT0gMCk7DQogCX0g ZWxzZQ0KZGlmZiAtciAtdSAvdXNyL3NyYy9zeXMvY29udHJpYi9wZi9uZXQv cGZfdGFibGUuYyAvcm91dGVyL3Vzci9zcmMvc3lzL2NvbnRyaWIvcGYvbmV0 L3BmX3RhYmxlLmMNCi0tLSAvdXNyL3NyYy9zeXMvY29udHJpYi9wZi9uZXQv cGZfdGFibGUuYwkyMDA5LTA4LTAzIDA4OjEzOjA2LjAwMDAwMDAwMCArMDAw MA0KKysrIC9yb3V0ZXIvdXNyL3NyYy9zeXMvY29udHJpYi9wZi9uZXQvcGZf dGFibGUuYwkyMDEwLTA4LTI2IDExOjUwOjMxLjAwMDAwMDAwMCArMDAwMA0K QEAgLTExMTQsMTcgKzExMTQsOSBAQA0KICNlbmRpZg0KIAlpZiAoS0VOVFJZ X05FVFdPUksoa2UpKSB7DQogCQlwZnJfcHJlcGFyZV9uZXR3b3JrKCZtYXNr LCBrZS0+cGZya2VfYWYsIGtlLT5wZnJrZV9uZXQpOw0KLSNpZmRlZiBfX0Zy ZWVCU0RfXw0KLQkJcm4gPSBybl9kZWxldGUoJmtlLT5wZnJrZV9zYSwgJm1h c2ssIGhlYWQpOw0KLSNlbHNlDQogCQlybiA9IHJuX2RlbGV0ZSgma2UtPnBm cmtlX3NhLCAmbWFzaywgaGVhZCwgTlVMTCk7DQotI2VuZGlmDQogCX0gZWxz ZQ0KLSNpZmRlZiBfX0ZyZWVCU0RfXw0KLQkJcm4gPSBybl9kZWxldGUoJmtl LT5wZnJrZV9zYSwgTlVMTCwgaGVhZCk7DQotI2Vsc2UNCiAJCXJuID0gcm5f ZGVsZXRlKCZrZS0+cGZya2Vfc2EsIE5VTEwsIGhlYWQsIE5VTEwpOw0KLSNl bmRpZg0KIAlzcGx4KHMpOw0KIA0KIAlpZiAocm4gPT0gTlVMTCkgew0KZGlm ZiAtciAtdSAvdXNyL3NyYy9zeXMva2Vybi92ZnNfZXhwb3J0LmMgL3JvdXRl ci91c3Ivc3JjL3N5cy9rZXJuL3Zmc19leHBvcnQuYw0KLS0tIC91c3Ivc3Jj L3N5cy9rZXJuL3Zmc19leHBvcnQuYwkyMDA5LTEwLTAxIDEzOjExOjQ1LjAw MDAwMDAwMCArMDAwMA0KKysrIC9yb3V0ZXIvdXNyL3NyYy9zeXMva2Vybi92 ZnNfZXhwb3J0LmMJMjAxMC0wOC0yNiAxMTo1Mjo0Ny4wMDAwMDAwMDAgKzAw MDANCkBAIC0yMjgsNyArMjI4LDcgQEANCiAJc3RydWN0IHJhZGl4X25vZGVf aGVhZCAqcm5oID0gKHN0cnVjdCByYWRpeF9ub2RlX2hlYWQgKikgdzsNCiAJ c3RydWN0IHVjcmVkICpjcmVkOw0KIA0KLQkoKnJuaC0+cm5oX2RlbGFkZHIp IChybi0+cm5fa2V5LCBybi0+cm5fbWFzaywgcm5oKTsNCisJKCpybmgtPnJu aF9kZWxhZGRyKSAocm4tPnJuX2tleSwgcm4tPnJuX21hc2ssIHJuaCwgTlVM TCk7DQogCWNyZWQgPSAoKHN0cnVjdCBuZXRjcmVkICopcm4pLT5uZXRjX2Fu b247DQogCWlmIChjcmVkICE9IE5VTEwpDQogCQljcmZyZWUoY3JlZCk7DQpk aWZmIC1yIC11IC91c3Ivc3JjL3N5cy9uZXQvcmFkaXguYyAvcm91dGVyL3Vz ci9zcmMvc3lzL25ldC9yYWRpeC5jDQotLS0gL3Vzci9zcmMvc3lzL25ldC9y YWRpeC5jCTIwMTAtMDQtMDIgMDU6MDI6NTAuMDAwMDAwMDAwICswMDAwDQor KysgL3JvdXRlci91c3Ivc3JjL3N5cy9uZXQvcmFkaXguYwkyMDEwLTA4LTI2 IDE1OjIzOjI0LjAwMDAwMDAwMCArMDAwMA0KQEAgLTYxNCw3ICs2MTQsNyBA QA0KIAlzdHJ1Y3QgcmFkaXhfbm9kZSB0cmVlbm9kZXNbMl07DQogew0KIAlj YWRkcl90IHYgPSAoY2FkZHJfdCl2X2FyZywgbmV0bWFzayA9IChjYWRkcl90 KW5fYXJnOw0KLQlyZWdpc3RlciBzdHJ1Y3QgcmFkaXhfbm9kZSAqdCwgKngg PSAwLCAqdHQ7DQorCXJlZ2lzdGVyIHN0cnVjdCByYWRpeF9ub2RlICp0LCAq eCA9IDAsICp4eCA9IDAsICp0dDsNCiAJc3RydWN0IHJhZGl4X25vZGUgKnNh dmVkX3R0LCAqdG9wID0gaGVhZC0+cm5oX3RyZWV0b3A7DQogCXNob3J0IGIg PSAwLCBiX2xlYWYgPSAwOw0KIAlpbnQga2V5ZHVwbGljYXRlZDsNCkBAIC03 MjMsMTIgKzcyMywxOSBAQA0KIAkJeCA9IHQtPnJuX3JpZ2h0Ow0KIAkvKiBQ cm9tb3RlIGdlbmVyYWwgcm91dGVzIGZyb20gYmVsb3cgKi8NCiAJaWYgKHgt PnJuX2JpdCA8IDApIHsNCi0JICAgIGZvciAobXAgPSAmdC0+cm5fbWtsaXN0 OyB4OyB4ID0geC0+cm5fZHVwZWRrZXkpDQorCSAgICBmb3IgKG1wID0gJnQt PnJuX21rbGlzdDsgeDsgeHggPSB4LCB4ID0geC0+cm5fZHVwZWRrZXkpIHsN CisJCWlmICh4eCAmJiB4eC0+cm5fbWtsaXN0ICYmIHh4LT5ybl9tYXNrID09 IHgtPnJuX21hc2sgJiYNCisJCQkJeC0+cm5fbWtsaXN0ID09IDApIHsNCisJ CQkvKiBtdWx0aXBhdGggcm91dGUsIGJ1bXAgcmVmY291bnQgb24gZmlyc3Qg bWtsaXN0ICovDQorCQkJeC0+cm5fbWtsaXN0ID0geHgtPnJuX21rbGlzdDsN CisJCQl4LT5ybl9ta2xpc3QtPnJtX3JlZnMrKzsNCisJCX0NCiAJCWlmICh4 LT5ybl9tYXNrICYmICh4LT5ybl9iaXQgPj0gYl9sZWFmKSAmJiB4LT5ybl9t a2xpc3QgPT0gMCkgew0KIAkJCSptcCA9IG0gPSBybl9uZXdfcmFkaXhfbWFz ayh4LCAwKTsNCiAJCQlpZiAobSkNCiAJCQkJbXAgPSAmbS0+cm1fbWtsaXN0 Ow0KIAkJfQ0KKwkgICAgfQ0KIAl9IGVsc2UgaWYgKHgtPnJuX21rbGlzdCkg ew0KIAkJLyoNCiAJCSAqIFNraXAgb3ZlciBtYXNrcyB3aG9zZSBpbmRleCBp cyA+IHRoYXQgb2YgbmV3IG5vZGUNCkBAIC03ODMsOSArNzkwLDEwIEBADQog fQ0KIA0KIHN0cnVjdCByYWRpeF9ub2RlICoNCi1ybl9kZWxldGUodl9hcmcs IG5ldG1hc2tfYXJnLCBoZWFkKQ0KK3JuX2RlbGV0ZSh2X2FyZywgbmV0bWFz a19hcmcsIGhlYWQsIHJuKQ0KIAl2b2lkICp2X2FyZywgKm5ldG1hc2tfYXJn Ow0KIAlzdHJ1Y3QgcmFkaXhfbm9kZV9oZWFkICpoZWFkOw0KKwlzdHJ1Y3Qg cmFkaXhfbm9kZSAqcm47DQogew0KIAlyZWdpc3RlciBzdHJ1Y3QgcmFkaXhf bm9kZSAqdCwgKnAsICp4LCAqdHQ7DQogCXN0cnVjdCByYWRpeF9tYXNrICpt LCAqc2F2ZWRfbSwgKiptcDsNCkBAIC04MTUsNiArODIzLDE0IEBADQogCQkJ aWYgKCh0dCA9IHR0LT5ybl9kdXBlZGtleSkgPT0gMCkNCiAJCQkJcmV0dXJu ICgwKTsNCiAJfQ0KKyNpZmRlZiBSQURJWF9NUEFUSA0KKwlpZiAocm4pIHsN CisJCXdoaWxlICh0dCAhPSBybikNCisJCQlpZiAoKHR0ID0gdHQtPnJuX2R1 cGVka2V5KSA9PSAwKQ0KKwkJCQlyZXR1cm4gKDApOw0KKwl9DQorI2VuZGlm DQorCQ0KIAlpZiAodHQtPnJuX21hc2sgPT0gMCB8fCAoc2F2ZWRfbSA9IG0g PSB0dC0+cm5fbWtsaXN0KSA9PSAwKQ0KIAkJZ290byBvbjE7DQogCWlmICh0 dC0+cm5fZmxhZ3MgJiBSTkZfTk9STUFMKSB7DQpAQCAtODIyLDYgKzgzOCwy MyBAQA0KIAkJCWxvZyhMT0dfRVJSLCAicm5fZGVsZXRlOiBpbmNvbnNpc3Rl bnQgYW5ub3RhdGlvblxuIik7DQogCQkJcmV0dXJuIDA7ICAvKiBkYW5nbGlu ZyByZWYgY291bGQgY2F1c2UgZGlzYXN0ZXIgKi8NCiAJCX0NCisJCWlmICht LT5ybV9sZWFmICE9IHR0KSB7DQorCQkJaWYgKC0tbS0+cm1fcmVmcyA+PSAw KQ0KKwkJCQlnb3RvIG9uMTsNCisgICAgICAgICAgICAgICAgfQ0KKwkJLyog dHQgaXMgY3VycmVudGx5IHRoZSBoZWFkIG9mIHRoZSBwb3NzaWJsZSBtdWx0 aXBhdGggY2hhaW4gKi8NCisJCWlmIChtLT5ybV9yZWZzID4gMCkgew0KKwkJ CWlmICh0dC0+cm5fZHVwZWRrZXkgPT0gTlVMTCB8fA0KKwkJCSAgICB0dC0+ cm5fZHVwZWRrZXktPnJuX21rbGlzdCAhPSBtKSB7DQorCQkJCWxvZyhMT0df RVJSLCAicm5fZGVsZXRlOiBpbmNvbnNpc3RlbnQgIg0KKwkJCQkgICAgImR1 cGVka2V5IGxpc3RcbiIpOw0KKwkJCQlyZXR1cm4gKDApOw0KKwkJCX0NCisJ CQltLT5ybV9sZWFmID0gdHQtPnJuX2R1cGVka2V5Ow0KKwkJCS0tbS0+cm1f cmVmczsNCisJCQlnb3RvIG9uMTsNCisJCX0NCisJCS8qIGVsc2UgdHQgaXMg bGFzdCBhbmQgb25seSByb3V0ZSAqLw0KIAl9IGVsc2Ugew0KIAkJaWYgKG0t PnJtX21hc2sgIT0gdHQtPnJuX21hc2spIHsNCiAJCQlsb2coTE9HX0VSUiwg InJuX2RlbGV0ZTogaW5jb25zaXN0ZW50IGFubm90YXRpb25cbiIpOw0KQEAg LTg2OSwyMSArOTAyLDE3IEBADQogCQkgKi8NCiAJCWlmICh0dCA9PSBzYXZl ZF90dCkgew0KIAkJCS8qIHJlbW92ZSBmcm9tIGhlYWQgb2YgY2hhaW4gKi8N Ci0JCQl4ID0gZHVwZWRrZXk7IHgtPnJuX3BhcmVudCA9IHQ7DQorCQkJeCA9 IGR1cGVka2V5OyANCisJCQl4LT5ybl9wYXJlbnQgPSB0Ow0KIAkJCWlmICh0 LT5ybl9sZWZ0ID09IHR0KQ0KIAkJCQl0LT5ybl9sZWZ0ID0geDsNCiAJCQll bHNlDQogCQkJCXQtPnJuX3JpZ2h0ID0geDsNCiAJCX0gZWxzZSB7DQotCQkJ LyogZmluZCBub2RlIGluIGZyb250IG9mIHR0IG9uIHRoZSBjaGFpbiAqLw0K LQkJCWZvciAoeCA9IHAgPSBzYXZlZF90dDsgcCAmJiBwLT5ybl9kdXBlZGtl eSAhPSB0dDspDQotCQkJCXAgPSBwLT5ybl9kdXBlZGtleTsNCi0JCQlpZiAo cCkgew0KLQkJCQlwLT5ybl9kdXBlZGtleSA9IHR0LT5ybl9kdXBlZGtleTsN Ci0JCQkJaWYgKHR0LT5ybl9kdXBlZGtleSkJCS8qIHBhcmVudCAqLw0KLQkJ CQkJdHQtPnJuX2R1cGVka2V5LT5ybl9wYXJlbnQgPSBwOw0KLQkJCQkJCQkJ LyogcGFyZW50ICovDQotCQkJfSBlbHNlIGxvZyhMT0dfRVJSLCAicm5fZGVs ZXRlOiBjb3VsZG4ndCBmaW5kIHVzXG4iKTsNCisJCQl4ID0gc2F2ZWRfdHQ7 DQorCQkJdC0+cm5fZHVwZWRrZXkgPSB0dC0+cm5fZHVwZWRrZXk7DQorCQkJ aWYgKHR0LT5ybl9kdXBlZGtleSkNCisJCQkJdHQtPnJuX2R1cGVka2V5LT5y bl9wYXJlbnQgPSB0Ow0KIAkJfQ0KIAkJdCA9IHR0ICsgMTsNCiAJCWlmICAo dC0+cm5fZmxhZ3MgJiBSTkZfQUNUSVZFKSB7DQpAQCAtOTMxLDE0ICs5NjAs MjEgQEANCiAJCQkJaWYgKG0gPT0geC0+cm5fbWtsaXN0KSB7DQogCQkJCQlz dHJ1Y3QgcmFkaXhfbWFzayAqbW0gPSBtLT5ybV9ta2xpc3Q7DQogCQkJCQl4 LT5ybl9ta2xpc3QgPSAwOw0KLQkJCQkJaWYgKC0tKG0tPnJtX3JlZnMpIDwg MCkNCisJCQkJCWlmICgtLShtLT5ybV9yZWZzKSA8IDApIHsNCiAJCQkJCQlN S0ZyZWUobSk7DQorCQkJCQl9IGVsc2UgaWYgKG0tPnJtX2ZsYWdzICYgUk5G X05PUk1BTCkgew0KKwkJCQkJCS8qDQorCQkJCQkJICogZG9uJ3QgcHJvZ3Jl c3MgYmVjYXVzZSB0aGlzDQorCQkJCQkJICogYSBtdWx0aXBhdGggcm91dGUu IE5leHQNCisJCQkJCQkgKiByb3V0ZSB3aWxsIHVzZSB0aGUgc2FtZSBtLg0K KwkJCQkJCSAqLw0KKwkJCQkJCW1tID0gbTsNCisJCQkJCX0NCiAJCQkJCW0g PSBtbTsNCiAJCQkJfQ0KIAkJCWlmIChtKQ0KIAkJCQlsb2coTE9HX0VSUiwN Ci0JCQkJICAgICJybl9kZWxldGU6IE9ycGhhbmVkIE1hc2sgJXAgYXQgJXBc biIsDQotCQkJCSAgICBtLCB4KTsNCisJCQkJICAgICJybl9kZWxldGU6IE9y cGhhbmVkIE1hc2sgJXAgYXQgJXBcbiIsIG0sIHgpOw0KIAkJfQ0KIAl9DQog CS8qDQpAQCAtOTkwLDExICsxMDI2LDggQEANCiAJICogcm5fc2VhcmNoX20g aXMgc29ydC1vZi1vcGVuLWNvZGVkIGhlcmUuIFdlIGNhbm5vdCB1c2UgdGhl DQogCSAqIGZ1bmN0aW9uIGJlY2F1c2Ugd2UgbmVlZCB0byBrZWVwIHRyYWNr IG9mIHRoZSBsYXN0IG5vZGUgc2Vlbi4NCiAJICovDQotCS8qIHByaW50Zigi YWJvdXQgdG8gc2VhcmNoXG4iKTsgKi8NCiAJZm9yIChybiA9IGgtPnJuaF90 cmVldG9wOyBybi0+cm5fYml0ID49IDA7ICkgew0KIAkJbGFzdCA9IHJuOw0K LQkJLyogcHJpbnRmKCJybl9iaXQgJWQsIHJuX2JtYXNrICV4LCB4bVtybl9v ZmZzZXRdICV4XG4iLA0KLQkJICAgICAgIHJuLT5ybl9iaXQsIHJuLT5ybl9i bWFzaywgeG1bcm4tPnJuX29mZnNldF0pOyAqLw0KIAkJaWYgKCEocm4tPnJu X2JtYXNrICYgeG1bcm4tPnJuX29mZnNldF0pKSB7DQogCQkJYnJlYWs7DQog CQl9DQpAQCAtMTAwNCw3ICsxMDM3LDYgQEANCiAJCQlybiA9IHJuLT5ybl9s ZWZ0Ow0KIAkJfQ0KIAl9DQotCS8qIHByaW50ZigiZG9uZSBzZWFyY2hpbmdc biIpOyAqLw0KIA0KIAkvKg0KIAkgKiBUd28gY2FzZXM6IGVpdGhlciB3ZSBz dGVwcGVkIG9mZiB0aGUgZW5kIG9mIG91ciBtYXNrLA0KQEAgLTEwMTUsOCAr MTA0Nyw2IEBADQogCXJuID0gbGFzdDsNCiAJbGFzdGIgPSBybi0+cm5fYml0 Ow0KIA0KLQkvKiBwcmludGYoInJuICVwLCBsYXN0YiAlZFxuIiwgcm4sIGxh c3RiKTsqLw0KLQ0KIAkvKg0KIAkgKiBUaGlzIGdldHMgY29tcGxpY2F0ZWQg YmVjYXVzZSB3ZSBtYXkgZGVsZXRlIHRoZSBub2RlDQogCSAqIHdoaWxlIGFw cGx5aW5nIHRoZSBmdW5jdGlvbiBmIHRvIGl0LCBzbyB3ZSBuZWVkIHRvIGNh bGN1bGF0ZQ0KQEAgLTEwMjYsNyArMTA1Niw2IEBADQogCQlybiA9IHJuLT5y bl9sZWZ0Ow0KIA0KIAl3aGlsZSAoIXN0b3BwaW5nKSB7DQotCQkvKiBwcmlu dGYoIm5vZGUgJXAgKCVkKVxuIiwgcm4sIHJuLT5ybl9iaXQpOyAqLw0KIAkJ YmFzZSA9IHJuOw0KIAkJLyogSWYgYXQgcmlnaHQgY2hpbGQgZ28gYmFjayB1 cCwgb3RoZXJ3aXNlLCBnbyByaWdodCAqLw0KIAkJd2hpbGUgKHJuLT5ybl9w YXJlbnQtPnJuX3JpZ2h0ID09IHJuDQpAQCAtMTAzNiw3ICsxMDY1LDYgQEAN CiAJCQkvKiBpZiB3ZW50IHVwIGJleW9uZCBsYXN0LCBzdG9wICovDQogCQkJ aWYgKHJuLT5ybl9iaXQgPD0gbGFzdGIpIHsNCiAJCQkJc3RvcHBpbmcgPSAx Ow0KLQkJCQkvKiBwcmludGYoInVwIHRvbyBmYXJcbiIpOyAqLw0KIAkJCQkv Kg0KIAkJCQkgKiBYWFggd2Ugc2hvdWxkIGp1bXAgdG8gdGhlICdQcm9jZXNz IGxlYXZlcycNCiAJCQkJICogcGFydCwgYmVjYXVzZSB0aGUgdmFsdWVzIG9m ICdybicgYW5kICduZXh0Jw0KQEAgLTEwNjIsNyArMTA5MCw2IEBADQogCQkv KiBQcm9jZXNzIGxlYXZlcyAqLw0KIAkJd2hpbGUgKChybiA9IGJhc2UpICE9 IDApIHsNCiAJCQliYXNlID0gcm4tPnJuX2R1cGVka2V5Ow0KLQkJCS8qIHBy aW50ZigibGVhZiAlcFxuIiwgcm4pOyAqLw0KIAkJCWlmICghKHJuLT5ybl9m bGFncyAmIFJORl9ST09UKQ0KIAkJCSAgICAmJiAoZXJyb3IgPSAoKmYpKHJu LCB3KSkpDQogCQkJCXJldHVybiAoZXJyb3IpOw0KQEAgLTEwNzAsNyArMTA5 Nyw2IEBADQogCQlybiA9IG5leHQ7DQogDQogCQlpZiAocm4tPnJuX2ZsYWdz ICYgUk5GX1JPT1QpIHsNCi0JCQkvKiBwcmludGYoInJvb3QsIHN0b3BwaW5n Iik7ICovDQogCQkJc3RvcHBpbmcgPSAxOw0KIAkJfQ0KIA0KZGlmZiAtciAt dSAvdXNyL3NyYy9zeXMvbmV0L3JhZGl4LmggL3JvdXRlci91c3Ivc3JjL3N5 cy9uZXQvcmFkaXguaA0KLS0tIC91c3Ivc3JjL3N5cy9uZXQvcmFkaXguaAky MDEwLTAzLTIzIDA5OjU4OjU5LjAwMDAwMDAwMCArMDAwMA0KKysrIC9yb3V0 ZXIvdXNyL3NyYy9zeXMvbmV0L3JhZGl4LmgJMjAxMC0wOC0yNiAxMjowMjo1 Mi4wMDAwMDAwMDAgKzAwMDANCkBAIC0xMTQsNyArMTE0LDcgQEANCiAJCSh2 b2lkICp2LCB2b2lkICptYXNrLA0KIAkJICAgICBzdHJ1Y3QgcmFkaXhfbm9k ZV9oZWFkICpoZWFkLCBzdHJ1Y3QgcmFkaXhfbm9kZSBub2Rlc1tdKTsNCiAJ c3RydWN0CXJhZGl4X25vZGUgKigqcm5oX2RlbGFkZHIpCS8qIHJlbW92ZSBi YXNlZCBvbiBzb2NrYWRkciAqLw0KLQkJKHZvaWQgKnYsIHZvaWQgKm1hc2ss IHN0cnVjdCByYWRpeF9ub2RlX2hlYWQgKmhlYWQpOw0KKwkJKHZvaWQgKnYs IHZvaWQgKm1hc2ssIHN0cnVjdCByYWRpeF9ub2RlX2hlYWQgKmhlYWQsIHN0 cnVjdCByYWRpeF9ub2RlICpybik7DQogCXN0cnVjdAlyYWRpeF9ub2RlICoo KnJuaF9kZWxwa3QpCS8qIHJlbW92ZSBiYXNlZCBvbiBwYWNrZXQgaGRyICov DQogCQkodm9pZCAqdiwgdm9pZCAqbWFzaywgc3RydWN0IHJhZGl4X25vZGVf aGVhZCAqaGVhZCk7DQogCXN0cnVjdAlyYWRpeF9ub2RlICooKnJuaF9tYXRj aGFkZHIpCS8qIGxvY2F0ZSBiYXNlZCBvbiBzb2NrYWRkciAqLw0KQEAgLTE2 OCw3ICsxNjgsNyBAQA0KIAkgKnJuX2FkZG1hc2sodm9pZCAqLCBpbnQsIGlu dCksDQogCSAqcm5fYWRkcm91dGUgKHZvaWQgKiwgdm9pZCAqLCBzdHJ1Y3Qg cmFkaXhfbm9kZV9oZWFkICosDQogCQkJc3RydWN0IHJhZGl4X25vZGUgWzJd KSwNCi0JICpybl9kZWxldGUodm9pZCAqLCB2b2lkICosIHN0cnVjdCByYWRp eF9ub2RlX2hlYWQgKiksDQorCSAqcm5fZGVsZXRlKHZvaWQgKiwgdm9pZCAq LCBzdHJ1Y3QgcmFkaXhfbm9kZV9oZWFkICosIHN0cnVjdCByYWRpeF9ub2Rl ICopLA0KIAkgKnJuX2xvb2t1cCAodm9pZCAqdl9hcmcsIHZvaWQgKm1fYXJn LA0KIAkJICAgICAgICBzdHJ1Y3QgcmFkaXhfbm9kZV9oZWFkICpoZWFkKSwN CiAJICpybl9tYXRjaCh2b2lkICosIHN0cnVjdCByYWRpeF9ub2RlX2hlYWQg Kik7DQpkaWZmIC1yIC11IC91c3Ivc3JjL3N5cy9uZXQvcmFkaXhfbXBhdGgu YyAvcm91dGVyL3Vzci9zcmMvc3lzL25ldC9yYWRpeF9tcGF0aC5jDQotLS0g L3Vzci9zcmMvc3lzL25ldC9yYWRpeF9tcGF0aC5jCTIwMTAtMDgtMjYgMTQ6 MjY6MzkuMDAwMDAwMDAwICswMDAwDQorKysgL3JvdXRlci91c3Ivc3JjL3N5 cy9uZXQvcmFkaXhfbXBhdGguYwkyMDEwLTA4LTI2IDE0OjMwOjI1LjAwMDAw MDAwMCArMDAwMA0KQEAgLTEyNSwzMyArMTI1LDYgQEANCiAJcmV0dXJuIChz dHJ1Y3QgcnRlbnRyeSAqKXJuOw0KIH0NCiANCi0vKiANCi0gKiBnbyB0aHJv dWdoIHRoZSBjaGFpbiBhbmQgdW5saW5rICJydCIgZnJvbSB0aGUgbGlzdA0K LSAqIHRoZSBjYWxsZXIgd2lsbCBmcmVlICJydCINCi0gKi8NCi1pbnQNCi1y dF9tcGF0aF9kZWxkdXAoc3RydWN0IHJ0ZW50cnkgKmhlYWRydCwgc3RydWN0 IHJ0ZW50cnkgKnJ0KQ0KLXsNCi0gICAgICAgIHN0cnVjdCByYWRpeF9ub2Rl ICp0LCAqdHQ7DQotDQotICAgICAgICBpZiAoIWhlYWRydCB8fCAhcnQpDQot ICAgICAgICAgICAgcmV0dXJuICgwKTsNCi0gICAgICAgIHQgPSAoc3RydWN0 IHJhZGl4X25vZGUgKiloZWFkcnQ7DQotICAgICAgICB0dCA9IHJuX21wYXRo X25leHQodCk7DQotICAgICAgICB3aGlsZSAodHQpIHsNCi0gICAgICAgICAg ICBpZiAodHQgPT0gKHN0cnVjdCByYWRpeF9ub2RlICopcnQpIHsNCi0gICAg ICAgICAgICAgICAgdC0+cm5fZHVwZWRrZXkgPSB0dC0+cm5fZHVwZWRrZXk7 DQotICAgICAgICAgICAgICAgIHR0LT5ybl9kdXBlZGtleSA9IE5VTEw7DQot ICAgIAkgICAgICAgIHR0LT5ybl9mbGFncyAmPSB+Uk5GX0FDVElWRTsNCi0J ICAgICAgICB0dFsxXS5ybl9mbGFncyAmPSB+Uk5GX0FDVElWRTsNCi0gICAg ICAgICAgICAgICAgcmV0dXJuICgxKTsNCi0gICAgICAgICAgICB9DQotICAg ICAgICAgICAgdCA9IHR0Ow0KLSAgICAgICAgICAgIHR0ID0gcm5fbXBhdGhf bmV4dCgoc3RydWN0IHJhZGl4X25vZGUgKil0KTsNCi0gICAgICAgIH0NCi0g ICAgICAgIHJldHVybiAoMCk7DQotfQ0KLQ0KIC8qDQogICogY2hlY2sgaWYg d2UgaGF2ZSB0aGUgc2FtZSBrZXkvbWFzay9nYXRld2F5IG9uIHRoZSB0YWJs ZSBhbHJlYWR5Lg0KICAqLw0KQEAgLTI2Miw5ICsyMzUsMTAgQEANCiBydGFs bG9jX21wYXRoX2ZpYihzdHJ1Y3Qgcm91dGUgKnJvLCB1aW50MzJfdCBoYXNo LCB1X2ludCBmaWJudW0pDQogew0KIAlzdHJ1Y3QgcmFkaXhfbm9kZSAqcm4w LCAqcm47DQotCXVfaW50MzJfdCBuOw0KKwl1X2ludDMyX3QgbiA9IDA7DQog CXN0cnVjdCBydGVudHJ5ICpydDsNCiAJaW50NjRfdCB3ZWlnaHQ7DQorCWlu dDY0X3QgbG93ZXN0X3dlaWdodDsNCiANCiAJLyoNCiAJICogWFhYIHdlIGRv bid0IGF0dGVtcHQgdG8gbG9va3VwIGNhY2hlZCByb3V0ZSBhZ2Fpbjsgd2hh dCBzaG91bGQNCkBAIC0yODUsMjMgKzI1OSwzNCBAQA0KIA0KIAkvKiBiZXlv bmQgaGVyZSwgd2UgdXNlIHJuIGFzIHRoZSBtYXN0ZXIgY29weSAqLw0KIAly bjAgPSBybiA9IChzdHJ1Y3QgcmFkaXhfbm9kZSAqKXJvLT5yb19ydDsNCi0J biA9IHJuX21wYXRoX2NvdW50KHJuMCk7DQotDQorCQ0KKwkvKiBmaW5kIGxv d2VzdCB3ZWlnaHQgcm91dGUgKi8NCisJZm9yICggcnQgPSAoc3RydWN0IHJ0 ZW50cnkgKilybiwgd2VpZ2h0ID0gcnQtPnJ0X3JteC5ybXhfd2VpZ2h0OyBy biAhPSBOVUxMOyBybiA9IHJuX21wYXRoX25leHQoIHJuKSkgew0KKwkJLyog WFhYIGNoZWNrIGlmIHJvdXRlIGlzIHVwPyAqLw0KKwkJcnQgPSAoc3RydWN0 IHJ0ZW50cnkgKilybjsNCisJCWlmKHJ0LT5ydF9mbGFncyAmIFJURl9VUCkg eyANCisJCQlpZiAod2VpZ2h0ID4gcnQtPnJ0X3JteC5ybXhfd2VpZ2h0KSB7 DQorCQkJCXdlaWdodCA9IHJ0LT5ydF9ybXgucm14X3dlaWdodDsNCisJCQkJ biA9IDE7DQorCQkJfSBlbHNlIGlmICh3ZWlnaHQgPT0gcnQtPnJ0X3JteC5y bXhfd2VpZ2h0KQ0KKwkJCQluKys7DQorCQl9DQorCX0NCisJbG93ZXN0X3dl aWdodCA9IHdlaWdodDsNCisJDQorCS8qIHNlbGVjdCBub3cgb25lIG9mIHRo ZSBsb3dlc3Qgd2VpZ2h0IHJvdXRlcyAqLw0KIAkvKiBndyBzZWxlY3Rpb24g YnkgTW9kdWxvLU4gSGFzaCAoUkZDMjk5MSkgWFhYIG5lZWQgaW1wcm92ZW1l bnQ/ICovDQogCWhhc2ggKz0gaGFzaGppdHRlcjsNCiAJaGFzaCAlPSBuOw0K LQlmb3IgKHdlaWdodCA9IGFicygoaW50MzJfdCloYXNoKSwgcnQgPSByby0+ cm9fcnQ7DQotCSAgICAgd2VpZ2h0ID49IHJ0LT5ydF9ybXgucm14X3dlaWdo dCAmJiBybjsgDQotCSAgICAgd2VpZ2h0IC09IHJ0LT5ydF9ybXgucm14X3dl aWdodCkgew0KLQkJDQotCQkvKiBjaGVjayBpZiBuZXh0IGtleSBleGlzdHMg Ki8NCi0JCWlmIChybi0+cm5fZHVwZWRrZXkgPT0gTlVMTCkNCi0JCQlicmVh azsNCi0JCS8qIHN0YXkgd2l0aGluIHRoZSBtdWx0aXBhdGggcm91dGVzICov DQotCQlpZiAocm4tPnJuX2R1cGVka2V5ICYmIHJuLT5ybl9tYXNrICE9IHJu LT5ybl9kdXBlZGtleS0+cm5fbWFzaykNCi0JCQlicmVhazsNCi0JCXJuID0g cm4tPnJuX2R1cGVka2V5Ow0KKwlmb3IgKCBybiA9IHJuMCwgbiA9IDA7IHJu ICE9IE5VTEw7IHJuID0gcm5fbXBhdGhfbmV4dCggcm4pKSB7DQogCQlydCA9 IChzdHJ1Y3QgcnRlbnRyeSAqKXJuOw0KKwkJaWYocnQtPnJ0X2ZsYWdzICYg UlRGX1VQKSB7IA0KKwkJCWlmICggcnQtPnJ0X3JteC5ybXhfd2VpZ2h0ID09 IGxvd2VzdF93ZWlnaHQpIHsNCisJCQkJaWYgKG4gPT0gaGFzaCkNCisJCQkJ CWJyZWFrOw0KKwkJCQluKys7DQorCQkJfQ0KKwkJfQ0KIAl9DQogCS8qIFhY WCB0cnkgZmlsbGluZyBydF9nd3JvdXRlIGFuZCBhdm9pZCB1bnJlYWNoYWJs ZSBndyAgKi8NCiANCmRpZmYgLXIgLXUgL3Vzci9zcmMvc3lzL25ldC9yb3V0 ZS5jIC9yb3V0ZXIvdXNyL3NyYy9zeXMvbmV0L3JvdXRlLmMNCi0tLSAvdXNy L3NyYy9zeXMvbmV0L3JvdXRlLmMJMjAxMC0wNi0xOCAwMzozMTozMy4wMDAw MDAwMDAgKzAwMDANCisrKyAvcm91dGVyL3Vzci9zcmMvc3lzL25ldC9yb3V0 ZS5jCTIwMTAtMDgtMjYgMTQ6NDI6MTMuMDAwMDAwMDAwICswMDAwDQpAQCAt ODc1LDcgKzg3NSw3IEBADQogCSAqIFJlbW92ZSB0aGUgaXRlbSBmcm9tIHRo ZSB0cmVlOyBpdCBzaG91bGQgYmUgdGhlcmUsDQogCSAqIGJ1dCB3aGVuIGNh bGxlcnMgaW52b2tlIHVzIGJsaW5kbHkgaXQgbWF5IG5vdCAoc2lnaCkuDQog CSAqLw0KLQlybiA9IHJuaC0+cm5oX2RlbGFkZHIocnRfa2V5KHJ0KSwgcnRf bWFzayhydCksIHJuaCk7DQorCXJuID0gcm5oLT5ybmhfZGVsYWRkcihydF9r ZXkocnQpLCBydF9tYXNrKHJ0KSwgcm5oLCBOVUxMKTsNCiAJaWYgKHJuID09 IE5VTEwpIHsNCiAJCWVycm9yID0gRVNSQ0g7DQogCQlnb3RvIGJhZDsNCkBA IC05MTMsMTEyICs5MTMsNiBAQA0KIAlyZXR1cm4gKGVycm9yKTsNCiB9DQog DQotI2lmZGVmIFJBRElYX01QQVRIDQotc3RhdGljIGludA0KLXJuX21wYXRo X3VwZGF0ZShpbnQgcmVxLCBzdHJ1Y3QgcnRfYWRkcmluZm8gKmluZm8sDQot ICAgIHN0cnVjdCByYWRpeF9ub2RlX2hlYWQgKnJuaCwgc3RydWN0IHJ0ZW50 cnkgKipyZXRfbnJ0KQ0KLXsNCi0JLyoNCi0JICogaWYgd2UgZ290IG11bHRp cGF0aCByb3V0ZXMsIHdlIHJlcXVpcmUgdXNlcnMgdG8gc3BlY2lmeQ0KLQkg KiBhIG1hdGNoaW5nIFJUQVhfR0FURVdBWS4NCi0JICovDQotCXN0cnVjdCBy dGVudHJ5ICpydCwgKnJ0byA9IE5VTEw7DQotCXJlZ2lzdGVyIHN0cnVjdCBy YWRpeF9ub2RlICpybjsNCi0JaW50IGVycm9yID0gMDsNCi0NCi0Jcm4gPSBy bmgtPnJuaF9tYXRjaGFkZHIoZHN0LCBybmgpOw0KLQlpZiAocm4gPT0gTlVM TCkNCi0JCXJldHVybiAoRVNSQ0gpOw0KLQlydG8gPSBydCA9IFJOVE9SVChy bik7DQotCXJ0ID0gcnRfbXBhdGhfbWF0Y2hnYXRlKHJ0LCBnYXRld2F5KTsN Ci0JaWYgKHJ0ID09IE5VTEwpDQotCQlyZXR1cm4gKEVTUkNIKTsNCi0JLyoN Ci0JICogdGhpcyBpcyB0aGUgZmlyc3QgZW50cnkgaW4gdGhlIGNoYWluDQot CSAqLw0KLQlpZiAocnRvID09IHJ0KSB7DQotCQlybiA9IHJuX21wYXRoX25l eHQoKHN0cnVjdCByYWRpeF9ub2RlICopcnQpOw0KLQkJLyoNCi0JCSAqIHRo ZXJlIGlzIGFub3RoZXIgZW50cnksIG5vdyBpdCdzIGFjdGl2ZQ0KLQkJICov DQotCQlpZiAocm4pIHsNCi0JCQlydG8gPSBSTlRPUlQocm4pOw0KLQkJCVJU X0xPQ0socnRvKTsNCi0JCQlydG8tPnJ0X2ZsYWdzIHw9IFJURl9VUDsNCi0J CQlSVF9VTkxPQ0socnRvKTsNCi0JCX0gZWxzZSBpZiAocnQtPnJ0X2ZsYWdz ICYgUlRGX0dBVEVXQVkpIHsNCi0JCQkvKg0KLQkJCSAqIEZvciBnYXRld2F5 IHJvdXRlcywgd2UgbmVlZCB0byANCi0JCQkgKiBtYWtlIHN1cmUgdGhhdCB3 ZSB3ZSBhcmUgZGVsZXRpbmcNCi0JCQkgKiB0aGUgY29ycmVjdCBnYXRld2F5 LiANCi0JCQkgKiBydF9tcGF0aF9tYXRjaGdhdGUoKSBkb2VzIG5vdCANCi0J CQkgKiBjaGVjayB0aGUgY2FzZSB3aGVuIHRoZXJlIGlzIG9ubHkNCi0JCQkg KiBvbmUgcm91dGUgaW4gdGhlIGNoYWluLiAgDQotCQkJICovDQotCQkJaWYg KGdhdGV3YXkgJiYNCi0JCQkgICAgKHJ0LT5ydF9nYXRld2F5LT5zYV9sZW4g IT0gZ2F0ZXdheS0+c2FfbGVuIHx8DQotCQkJCW1lbWNtcChydC0+cnRfZ2F0 ZXdheSwgZ2F0ZXdheSwgZ2F0ZXdheS0+c2FfbGVuKSkpDQotCQkJCWVycm9y ID0gRVNSQ0g7DQotCQkJZWxzZSB7DQotCQkJCS8qDQotCQkJCSAqIHJlbW92 ZSBmcm9tIHRyZWUgYmVmb3JlIHJldHVybmluZyBpdA0KLQkJCQkgKiB0byB0 aGUgY2FsbGVyDQotCQkJCSAqLw0KLQkJCQlybiA9IHJuaC0+cm5oX2RlbGFk ZHIoZHN0LCBuZXRtYXNrLCBybmgpOw0KLQkJCQlLQVNTRVJUKHJ0ID09IFJO VE9SVChybiksICgicmFkaXggbm9kZSBkaXNhcHBlYXJlZCIpKTsNCi0JCQkJ Z290byBnd2RlbGV0ZTsNCi0JCQl9DQotCQkJDQotCQl9DQotCQkvKg0KLQkJ ICogdXNlIHRoZSBub3JtYWwgZGVsZXRlIGNvZGUgdG8gcmVtb3ZlDQotCQkg KiB0aGUgZmlyc3QgZW50cnkNCi0JCSAqLw0KLQkJaWYgKHJlcSAhPSBSVE1f REVMRVRFKSANCi0JCQlnb3RvIG5vbmRlbGV0ZTsNCi0NCi0JCWVycm9yID0g RU5PRU5UOw0KLQkJZ290byBkb25lOw0KLQl9DQotCQkNCi0JLyoNCi0JICog aWYgdGhlIGVudHJ5IGlzIDJuZCBhbmQgb24gdXANCi0JICovDQotCWlmICgo cmVxID09IFJUTV9ERUxFVEUpICYmICFydF9tcGF0aF9kZWxkdXAocnRvLCBy dCkpDQotCQlwYW5pYyAoInJ0cmVxdWVzdDE6IHJ0X21wYXRoX2RlbGR1cCIp Ow0KLWd3ZGVsZXRlOg0KLQlSVF9MT0NLKHJ0KTsNCi0JUlRfQUREUkVGKHJ0 KTsNCi0JaWYgKHJlcSA9PSBSVE1fREVMRVRFKSB7DQotCQlydC0+cnRfZmxh Z3MgJj0gflJURl9VUDsNCi0JCS8qDQotCQkgKiBPbmUgbW9yZSBydGVudHJ5 IGZsb2F0aW5nIGFyb3VuZCB0aGF0IGlzIG5vdA0KLQkJICogbGlua2VkIHRv IHRoZSByb3V0aW5nIHRhYmxlLiBydHRyYXNoIHdpbGwgYmUgZGVjcmVtZW50 ZWQNCi0JCSAqIHdoZW4gUlRGUkVFKHJ0KSBpcyBldmVudHVhbGx5IGNhbGxl ZC4NCi0JCSAqLw0KLQkJVl9ydHRyYXNoKys7DQotCX0NCi0JDQotbm9uZGVs ZXRlOg0KLQlpZiAocmVxICE9IFJUTV9ERUxFVEUpDQotCQlwYW5pYygidW5y ZWNvZ25pemVkIHJlcXVlc3QgJWQiLCByZXEpOw0KLQkNCi0NCi0JLyoNCi0J ICogSWYgdGhlIGNhbGxlciB3YW50cyBpdCwgdGhlbiBpdCBjYW4gaGF2ZSBp dCwNCi0JICogYnV0IGl0J3MgdXAgdG8gaXQgdG8gZnJlZSB0aGUgcnRlbnRy eSBhcyB3ZSB3b24ndCBiZQ0KLQkgKiBkb2luZyBpdC4NCi0JICovDQotCWlm IChyZXRfbnJ0KSB7DQotCQkqcmV0X25ydCA9IHJ0Ow0KLQkJUlRfVU5MT0NL KHJ0KTsNCi0JfSBlbHNlDQotCQlSVEZSRUVfTE9DS0VEKHJ0KTsNCi1kb25l Og0KLQlyZXR1cm4gKGVycm9yKTsNCi19DQotI2VuZGlmDQotDQogaW50DQog cnRyZXF1ZXN0MV9maWIoaW50IHJlcSwgc3RydWN0IHJ0X2FkZHJpbmZvICpp bmZvLCBzdHJ1Y3QgcnRlbnRyeSAqKnJldF9ucnQsDQogCQkJCXVfaW50IGZp Ym51bSkNCkBAIC0xMDU4LDI4ICs5NTIsMzAgQEANCiANCiAJc3dpdGNoIChy ZXEpIHsNCiAJY2FzZSBSVE1fREVMRVRFOg0KKwkgICAgICAgIGlmICgocm4g PSBybmgtPnJuaF9sb29rdXAoZHN0LCBuZXRtYXNrLCBybmgpKSA9PSBOVUxM KQ0KKwkgICAgICAgICAgICAgICAgc2VuZGVycihFU1JDSCk7DQorCQlydCA9 IFJOVE9SVChybik7DQogI2lmZGVmIFJBRElYX01QQVRIDQotCQlpZiAocm5f bXBhdGhfY2FwYWJsZShybmgpKSB7DQotCQkJZXJyb3IgPSBybl9tcGF0aF91 cGRhdGUocmVxLCBpbmZvLCBybmgsIHJldF9ucnQpOw0KLQkJCS8qDQotCQkJ ICogImJhZCIgaG9sZHMgdHJ1ZSBmb3IgdGhlIHN1Y2Nlc3MgY2FzZQ0KLQkJ CSAqIGFzIHdlbGwNCi0JCQkgKi8NCi0JCQlpZiAoZXJyb3IgIT0gRU5PRU5U KQ0KLQkJCQlnb3RvIGJhZDsNCi0JCQllcnJvciA9IDA7DQotCQl9DQorICAg ICAgICAgICAgICAgIC8qDQorICAgICAgICAgICAgICAgICAqIGlmIHdlIGdv dCBtdWx0aXBhdGggcm91dGVzLCB3ZSByZXF1aXJlIHVzZXJzIHRvIHNwZWNp ZnkNCisgICAgICAgICAgICAgICAgICogYSBtYXRjaGluZyBSVEFYX0dBVEVX QVkuDQorICAgICAgICAgICAgICAgICAqLw0KKyAgICAgICAgICAgICAgICBp ZiAocm5fbXBhdGhfY2FwYWJsZShybmgpKSB7DQorICAgICAgICAgICAgICAg ICAgICAgICAgcnQgPSBydF9tcGF0aF9tYXRjaGdhdGUoIHJ0LCBnYXRld2F5 KTsNCisgICAgICAgICAgICAgICAgICAgICAgICBybiA9IChzdHJ1Y3QgcmFk aXhfbm9kZSAqKXJ0Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICgh cnQpDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZW5kZXJy KEVTUkNIKTsNCisgICAgICAgICAgICAgICAgfQ0KICNlbmRpZg0KIAkJLyoN CiAJCSAqIFJlbW92ZSB0aGUgaXRlbSBmcm9tIHRoZSB0cmVlIGFuZCByZXR1 cm4gaXQuDQogCQkgKiBDb21wbGFpbiBpZiBpdCBpcyBub3QgdGhlcmUgYW5k IGRvIG5vIG1vcmUgcHJvY2Vzc2luZy4NCiAJCSAqLw0KLQkJcm4gPSBybmgt PnJuaF9kZWxhZGRyKGRzdCwgbmV0bWFzaywgcm5oKTsNCisJCXJuID0gcm5o LT5ybmhfZGVsYWRkcihkc3QsIG5ldG1hc2ssIHJuaCwgcm4pOw0KIAkJaWYg KHJuID09IE5VTEwpDQogCQkJc2VuZGVycihFU1JDSCk7DQogCQlpZiAocm4t PnJuX2ZsYWdzICYgKFJORl9BQ1RJVkUgfCBSTkZfUk9PVCkpDQogCQkJcGFu aWMgKCJydHJlcXVlc3QgZGVsZXRlIik7DQotCQlydCA9IFJOVE9SVChybik7 DQogCQlSVF9MT0NLKHJ0KTsNCiAJCVJUX0FERFJFRihydCk7DQogCQlydC0+ cnRfZmxhZ3MgJj0gflJURl9VUDsNCkBAIC0xNDc0LDEwICsxMzcwLDkgQEAN CiAJCQkgICAgUk5UT1JUKHJuKS0+cnRfaWZhICE9IGlmYSB8fA0KIAkJCSAg ICAhc2FfZXF1YWwoKHN0cnVjdCBzb2NrYWRkciAqKXJuLT5ybl9rZXksIGRz dCkpOw0KIAkJCVJBRElYX05PREVfSEVBRF9VTkxPQ0socm5oKTsNCi0JCQlp ZiAoZXJyb3IpIHsNCisJCQlpZiAoZXJyb3IpDQogCQkJCS8qIHRoaXMgaXMg b25seSBhbiBlcnJvciBpZiBiYWQgb24gQUxMIHRhYmxlcyAqLw0KIAkJCQlj b250aW51ZTsNCi0JCQl9DQogCQl9DQogCQkvKg0KIAkJICogRG8gdGhlIGFj dHVhbCByZXF1ZXN0DQpkaWZmIC1yIC11IC91c3Ivc3JjL3N5cy9uZXRpbmV0 L2luLmMgL3JvdXRlci91c3Ivc3JjL3N5cy9uZXRpbmV0L2luLmMNCi0tLSAv dXNyL3NyYy9zeXMvbmV0aW5ldC9pbi5jCTIwMTAtMDgtMjYgMTQ6NTc6NTcu MDAwMDAwMDAwICswMDAwDQorKysgL3JvdXRlci91c3Ivc3JjL3N5cy9uZXRp bmV0L2luLmMJMjAxMC0wOC0yNiAxNDo1ODo0MC4wMDAwMDAwMDAgKzAwMDAN CkBAIC0xMzczLDEyICsxMzczLDQ1IEBADQogaW5fbGx0YWJsZV9ydGNoZWNr KHN0cnVjdCBpZm5ldCAqaWZwLCB1X2ludCBmbGFncywgY29uc3Qgc3RydWN0 IHNvY2thZGRyICpsM2FkZHIpDQogew0KIAlzdHJ1Y3QgcnRlbnRyeSAqcnQ7 DQorI2lmZGVmIFJBRElYX01QQVRIDQorCWludDY0X3Qgd2VpZ2h0Ow0KKwlz dHJ1Y3QgcnRlbnRyeSAqcnQwOw0KKwlpbnQzMl90IGZvdW5kID0gMDsNCisj ZW5kaWYNCiANCiAJS0FTU0VSVChsM2FkZHItPnNhX2ZhbWlseSA9PSBBRl9J TkVULA0KIAkgICAgKCJzaW5fZmFtaWx5ICVkIiwgbDNhZGRyLT5zYV9mYW1p bHkpKTsNCiANCiAJLyogWFhYIHJ0YWxsb2MxIHNob3VsZCB0YWtlIGEgY29u c3QgcGFyYW0gKi8NCiAJcnQgPSBydGFsbG9jMShfX0RFQ09OU1Qoc3RydWN0 IHNvY2thZGRyICosIGwzYWRkciksIDAsIDApOw0KKw0KKyNpZmRlZiBSQURJ WF9NUEFUSA0KKwlydDAgPSBydDsNCisgICAgICAgIGlmICgocnQgIT0gTlVM TCkgJiYgKCBybl9tcGF0aF9uZXh0KChzdHJ1Y3QgcmFkaXhfbm9kZSAqKXJ0 KSAhPSBOVUxMKSkgew0KKwkJLyogY2hlY2sgaWYgdGhlcmUgYXJlIG90aGVy LCBtYXRjaGluZyByb3V0ZXMgKi8NCisJCS8qIGZpbmQgbG93ZXN0IHdlaWdo dCByb3V0ZSAqLw0KKwkJZm9yICggd2VpZ2h0ID0gcnQtPnJ0X3JteC5ybXhf d2VpZ2h0OyBydCAhPSBOVUxMOyBydCA9IChzdHJ1Y3QgcnRlbnRyeSAqKXJu X21wYXRoX25leHQoIChzdHJ1Y3QgcmFkaXhfbm9kZSAqKXJ0KSkgew0KKwkJ CWlmKHJ0LT5ydF9mbGFncyAmIFJURl9VUCkgew0KKwkJCQlpZiAod2VpZ2h0 ID4gcnQtPnJ0X3JteC5ybXhfd2VpZ2h0KQ0KKwkJCQkJd2VpZ2h0ID0gcnQt PnJ0X3JteC5ybXhfd2VpZ2h0Ow0KKwkJCX0NCisJCX0NCisNCisJCS8qIGZp bmQgbm93IG9uZSBub24gZ2F0ZXdheSByb3V0ZSB3aXRoIGxvd2VzdCB3ZWln aHQgKi8NCisJCWZvciAoIHJ0ID0gcnQwOyBydCAhPSBOVUxMOyBydCA9IChz dHJ1Y3QgcnRlbnRyeSAqKXJuX21wYXRoX25leHQoIChzdHJ1Y3QgcmFkaXhf bm9kZSAqKXJ0KSkgew0KKwkJCWlmKHJ0LT5ydF9mbGFncyAmIFJURl9VUCkg ew0KKwkJCQlpZiAoKHdlaWdodCA9PSBydC0+cnRfcm14LnJteF93ZWlnaHQp ICYmICEocnQtPnJ0X2ZsYWdzICYgUlRGX0dBVEVXQVkpKSB7DQorCQkJCQlm b3VuZCA9IDE7DQorCQkJCQlicmVhazsNCisJCQkJfQ0KKwkJCX0NCisJCX0N CisJCWlmIChmb3VuZCA9PSAwKQ0KKwkJCXJ0ID0gTlVMTDsNCisJfQ0KKwkN CisjZW5kaWYJDQorDQogCWlmIChydCA9PSBOVUxMIHx8ICghKGZsYWdzICYg TExFX1BVQikgJiYNCiAJCQkgICAoKHJ0LT5ydF9mbGFncyAmIFJURl9HQVRF V0FZKSB8fCANCiAJCQkgICAgKHJ0LT5ydF9pZnAgIT0gaWZwKSkpKSB7DQpA QCAtMTM4NiwxMSArMTQxOSwyMSBAQA0KIAkJbG9nKExPR19JTkZPLCAiSVB2 NCBhZGRyZXNzOiBcIiVzXCIgaXMgbm90IG9uIHRoZSBuZXR3b3JrXG4iLA0K IAkJICAgIGluZXRfbnRvYSgoKGNvbnN0IHN0cnVjdCBzb2NrYWRkcl9pbiAq KWwzYWRkciktPnNpbl9hZGRyKSk7DQogI2VuZGlmDQorI2lmZGVmIFJBRElY X01QQVRIDQorCQlpZiAocnQwICE9IE5VTEwpDQorCQkJUlRGUkVFX0xPQ0tF RChydDApOw0KKyNlbHNlDQogCQlpZiAocnQgIT0gTlVMTCkNCiAJCQlSVEZS RUVfTE9DS0VEKHJ0KTsNCisjZW5kaWYNCiAJCXJldHVybiAoRUlOVkFMKTsN CiAJfQ0KKyNpZmRlZiBSQURJWF9NUEFUSA0KKwlSVEZSRUVfTE9DS0VEKHJ0 MCk7DQorI2Vsc2UNCiAJUlRGUkVFX0xPQ0tFRChydCk7DQorI2VuZGlmDQor DQogCXJldHVybiAwOw0KIH0NCiANCmRpZmYgLXIgLXUgL3Vzci9zcmMvc3lz L25ldGluZXQvaXBmdy9pcF9md190YWJsZS5jIC9yb3V0ZXIvdXNyL3NyYy9z eXMvbmV0aW5ldC9pcGZ3L2lwX2Z3X3RhYmxlLmMNCi0tLSAvdXNyL3NyYy9z eXMvbmV0aW5ldC9pcGZ3L2lwX2Z3X3RhYmxlLmMJMjAxMC0wMy0yMyAwOTo1 ODo1OS4wMDAwMDAwMDAgKzAwMDANCisrKyAvcm91dGVyL3Vzci9zcmMvc3lz L25ldGluZXQvaXBmdy9pcF9md190YWJsZS5jCTIwMTAtMDgtMjYgMTI6NDc6 MjcuMDAwMDAwMDAwICswMDAwDQpAQCAtMTM3LDcgKzEzNyw3IEBADQogCW1h c2suc2luX2FkZHIuc19hZGRyID0gaHRvbmwobWxlbiA/IH4oKDEgPDwgKDMy IC0gbWxlbikpIC0gMSkgOiAwKTsNCiAJc2Euc2luX2FkZHIuc19hZGRyID0g YWRkciAmIG1hc2suc2luX2FkZHIuc19hZGRyOw0KIAlJUEZXX1dMT0NLKGNo KTsNCi0JZW50ID0gKHN0cnVjdCB0YWJsZV9lbnRyeSAqKXJuaC0+cm5oX2Rl bGFkZHIoJnNhLCAmbWFzaywgcm5oKTsNCisJZW50ID0gKHN0cnVjdCB0YWJs ZV9lbnRyeSAqKXJuaC0+cm5oX2RlbGFkZHIoJnNhLCAmbWFzaywgcm5oLCBO VUxMKTsNCiAJaWYgKGVudCA9PSBOVUxMKSB7DQogCQlJUEZXX1dVTkxPQ0so Y2gpOw0KIAkJcmV0dXJuIChFU1JDSCk7DQpAQCAtMTU0LDcgKzE1NCw3IEBA DQogCXN0cnVjdCB0YWJsZV9lbnRyeSAqZW50Ow0KIA0KIAllbnQgPSAoc3Ry dWN0IHRhYmxlX2VudHJ5ICopDQotCSAgICBybmgtPnJuaF9kZWxhZGRyKHJu LT5ybl9rZXksIHJuLT5ybl9tYXNrLCBybmgpOw0KKwkgICAgcm5oLT5ybmhf ZGVsYWRkcihybi0+cm5fa2V5LCBybi0+cm5fbWFzaywgcm5oLCBOVUxMKTsN CiAJaWYgKGVudCAhPSBOVUxMKQ0KIAkJZnJlZShlbnQsIE1fSVBGV19UQkwp Ow0KIAlyZXR1cm4gKDApOw0K --168430090-1080199184-1282838276=:15491--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?alpine.LFD.2.00.1008261754140.15491>