Skip site navigation (1)Skip section navigation (2)
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>