From mboxrd@z Thu Jan 1 00:00:00 1970 From: "David S. Miller" Subject: Re: [6/6]: jenkins hash for neigh Date: Sat, 25 Sep 2004 00:56:23 -0700 Sender: netdev-bounce@oss.sgi.com Message-ID: <20040925005623.2faf8faf.davem@davemloft.net> References: <20040923225158.23c2d502.davem@davemloft.net> <20040924085234.GE3236@sunbeam.de.gnumonks.org> <20040924142702.62a2b23d.davem@davemloft.net> <20040925064406.GL3236@sunbeam.de.gnumonks.org> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="Multipart=_Sat__25_Sep_2004_00_56_23_-0700_uLfCl5pSLzMLSXzU" Cc: netdev@oss.sgi.com Return-path: To: Harald Welte In-Reply-To: <20040925064406.GL3236@sunbeam.de.gnumonks.org> Errors-to: netdev-bounce@oss.sgi.com List-Id: netdev.vger.kernel.org This is a multi-part message in MIME format. --Multipart=_Sat__25_Sep_2004_00_56_23_-0700_uLfCl5pSLzMLSXzU Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit On Sat, 25 Sep 2004 08:44:06 +0200 Harald Welte wrote: > I'll inclue it in my next round of kernel builds and give it > some testing. Thanks. > Do you still want to push this for 2.6.9? > > I think I'll defer the 2.4.x backport until we've sorted out the one > remaining 'starvation due to incomplete' issue. Yes, and I'll defer the push to 2.6.9 until we conquer that too. So let's start! :-) Attached are 4 patches, the first 3 I'm happy with the last is a major RFC. Here's the breakdown: 1) Remove unnecessary next = NULL assignment noticed earlier today. 2) Tim Gardner's change to smooth out periodic neighbour GC. 3) Fix locking and GFP_* bugs. 4) The controversial/RFC patch, dorking with neigh_forced_gc() So let's discuss #4. It is the first idea I had to combat the "problem", but honestly right now I am beginning to think that the real solution is to simply remove the INCOMPLETE checks altogether. Neighbours are a sub-cache of the routing cache. Therefore when a neigh entry has a singular refcount, no routing cache entry points to it. No routing cache entry, we're not sending packets to that neighbour any time soon, so there is no reason (especially during strong pressure) to hold onto such entries. Agree or disagree? Regardless, I'd be interested how effective your stress case is with patch #4 and my new suggestion which is just to remove the: (n->nud_state != NUD_INCOMPLETE || time_after(jiffies, n->used + n->parms->retrans_time) from the neigh_forced_gc() code. Have at it :-) --Multipart=_Sat__25_Sep_2004_00_56_23_-0700_uLfCl5pSLzMLSXzU Content-Type: application/octet-stream; name="diff1" Content-Disposition: attachment; filename="diff1" Content-Transfer-Encoding: base64 IyBUaGlzIGlzIGEgQml0S2VlcGVyIGdlbmVyYXRlZCBkaWZmIC1OcnUgc3R5bGUgcGF0Y2guCiMK IyBDaGFuZ2VTZXQKIyAgIDIwMDQvMDkvMjQgMTM6MDk6NTAtMDc6MDAga3VtYXJrckB1cy5pYm0u Y29tIAojICAgW05FVF06IFJlbW92ZSB1bm5lY2Vzc2FyeSBsb2NhbCB2YXIgaW5pdGlhbGl6YXRp b24uCiMgICAKIyAgIFNpZ25lZC1vZmYtYnk6IERhdmlkIFMuIE1pbGxlciA8ZGF2ZW1AZGF2ZW1s b2Z0Lm5ldD4KIyAKIyBuZXQvY29yZS9uZWlnaGJvdXIuYwojICAgMjAwNC8wOS8yNCAxMzowOTow MC0wNzowMCBrdW1hcmtyQHVzLmlibS5jb20gKzAgLTEKIyAgIFtORVRdOiBSZW1vdmUgdW5uZWNl c3NhcnkgbG9jYWwgdmFyIGluaXRpYWxpemF0aW9uLgojIApkaWZmIC1OcnUgYS9uZXQvY29yZS9u ZWlnaGJvdXIuYyBiL25ldC9jb3JlL25laWdoYm91ci5jCi0tLSBhL25ldC9jb3JlL25laWdoYm91 ci5jCTIwMDQtMDktMjUgMDA6MzA6MTMgLTA3OjAwCisrKyBiL25ldC9jb3JlL25laWdoYm91ci5j CTIwMDQtMDktMjUgMDA6MzA6MTMgLTA3OjAwCkBAIC0zMzQsNyArMzM0LDYgQEAKIAlmb3IgKGkg PSAwOyBpIDwgb2xkX2VudHJpZXM7IGkrKykgewogCQlzdHJ1Y3QgbmVpZ2hib3VyICpuLCAqbmV4 dDsKIAotCQluZXh0ID0gTlVMTDsKIAkJZm9yIChuID0gb2xkX2hhc2hbaV07IG47IG4gPSBuZXh0 KSB7CiAJCQl1bnNpZ25lZCBpbnQgaGFzaF92YWwgPSB0YmwtPmhhc2gobi0+cHJpbWFyeV9rZXks IG4tPmRldik7CiAK --Multipart=_Sat__25_Sep_2004_00_56_23_-0700_uLfCl5pSLzMLSXzU Content-Type: application/octet-stream; name="diff2" Content-Disposition: attachment; filename="diff2" Content-Transfer-Encoding: base64 IyBUaGlzIGlzIGEgQml0S2VlcGVyIGdlbmVyYXRlZCBkaWZmIC1OcnUgc3R5bGUgcGF0Y2guCiMK IyBDaGFuZ2VTZXQKIyAgIDIwMDQvMDkvMjQgMTY6MDU6MTQtMDc6MDAgZGF2ZW1AbnV0cy5kYXZl bWxvZnQubmV0IAojICAgW05FVF06IFNtb290aCBvdXQgcGVyaW9kaWMgbmVpZ2hib3VyIEdDLgoj ICAgCiMgICBCYXNlZCBhbG1vc3QgZW50aXJlbHkgdXBvbiB3b3JrIGJ5IFRpbSBHYXJkbmVyCiMg ICAodGltZ0B0cGkuY29tKSBhbmQgSGFyYWxkIFdlbHRlIChsYWZvcmdlQGdudW1vbmtzLm9yZykK IyAgIAojICAgU2lnbmVkLW9mZi1ieTogRGF2aWQgUy4gTWlsbGVyIDxkYXZlbUBkYXZlbWxvZnQu bmV0PgojIAojIG5ldC9jb3JlL25laWdoYm91ci5jCiMgICAyMDA0LzA5LzI0IDE2OjA0OjQ0LTA3 OjAwIGRhdmVtQG51dHMuZGF2ZW1sb2Z0Lm5ldCArMzggLTMyCiMgICBbTkVUXTogU21vb3RoIG91 dCBwZXJpb2RpYyBuZWlnaGJvdXIgR0MuCiMgICAKIyAgIEJhc2VkIGFsbW9zdCBlbnRpcmVseSB1 cG9uIHdvcmsgYnkgVGltIEdhcmRuZXIKIyAgICh0aW1nQHRwaS5jb20pIGFuZCBIYXJhbGQgV2Vs dGUgKGxhZm9yZ2VAZ251bW9ua3Mub3JnKQojICAgCiMgICBTaWduZWQtb2ZmLWJ5OiBEYXZpZCBT LiBNaWxsZXIgPGRhdmVtQGRhdmVtbG9mdC5uZXQ+CiMgCiMgaW5jbHVkZS9uZXQvbmVpZ2hib3Vy LmgKIyAgIDIwMDQvMDkvMjQgMTY6MDQ6NDQtMDc6MDAgZGF2ZW1AbnV0cy5kYXZlbWxvZnQubmV0 ICsxIC0wCiMgICBbTkVUXTogU21vb3RoIG91dCBwZXJpb2RpYyBuZWlnaGJvdXIgR0MuCiMgICAK IyAgIEJhc2VkIGFsbW9zdCBlbnRpcmVseSB1cG9uIHdvcmsgYnkgVGltIEdhcmRuZXIKIyAgICh0 aW1nQHRwaS5jb20pIGFuZCBIYXJhbGQgV2VsdGUgKGxhZm9yZ2VAZ251bW9ua3Mub3JnKQojICAg CiMgICBTaWduZWQtb2ZmLWJ5OiBEYXZpZCBTLiBNaWxsZXIgPGRhdmVtQGRhdmVtbG9mdC5uZXQ+ CiMgCmRpZmYgLU5ydSBhL2luY2x1ZGUvbmV0L25laWdoYm91ci5oIGIvaW5jbHVkZS9uZXQvbmVp Z2hib3VyLmgKLS0tIGEvaW5jbHVkZS9uZXQvbmVpZ2hib3VyLmgJMjAwNC0wOS0yNSAwMDozMDoy NyAtMDc6MDAKKysrIGIvaW5jbHVkZS9uZXQvbmVpZ2hib3VyLmgJMjAwNC0wOS0yNSAwMDozMDoy NyAtMDc6MDAKQEAgLTE3Niw2ICsxNzYsNyBAQAogCXN0cnVjdCBuZWlnaGJvdXIJKipoYXNoX2J1 Y2tldHM7CiAJdW5zaWduZWQgaW50CQloYXNoX21hc2s7CiAJX191MzIJCQloYXNoX3JuZDsKKwl1 bnNpZ25lZCBpbnQJCWhhc2hfY2hhaW5fZ2M7CiAJc3RydWN0IHBuZWlnaF9lbnRyeQkqKnBoYXNo X2J1Y2tldHM7CiB9OwogCmRpZmYgLU5ydSBhL25ldC9jb3JlL25laWdoYm91ci5jIGIvbmV0L2Nv cmUvbmVpZ2hib3VyLmMKLS0tIGEvbmV0L2NvcmUvbmVpZ2hib3VyLmMJMjAwNC0wOS0yNSAwMDoz MDoyNyAtMDc6MDAKKysrIGIvbmV0L2NvcmUvbmVpZ2hib3VyLmMJMjAwNC0wOS0yNSAwMDozMDoy NyAtMDc6MDAKQEAgLTYzMSw5ICs2MzEsOCBAQAogc3RhdGljIHZvaWQgbmVpZ2hfcGVyaW9kaWNf dGltZXIodW5zaWduZWQgbG9uZyBhcmcpCiB7CiAJc3RydWN0IG5laWdoX3RhYmxlICp0YmwgPSAo c3RydWN0IG5laWdoX3RhYmxlICopYXJnOwotCXVuc2lnbmVkIGxvbmcgbm93ID0gamlmZmllczsK LQlpbnQgaTsKLQorCXN0cnVjdCBuZWlnaGJvdXIgKm4sICoqbnA7CisJdW5zaWduZWQgbG9uZyBl eHBpcmUsIG5vdyA9IGppZmZpZXM7CiAKIAl3cml0ZV9sb2NrKCZ0YmwtPmxvY2spOwogCkBAIC02 NDksNDEgKzY0OCw0OSBAQAogCQkJCW5laWdoX3JhbmRfcmVhY2hfdGltZShwLT5iYXNlX3JlYWNo YWJsZV90aW1lKTsKIAl9CiAKLQlmb3IgKGkgPSAwOyBpIDw9IHRibC0+aGFzaF9tYXNrOyBpKysp IHsKLQkJc3RydWN0IG5laWdoYm91ciAqbiwgKipucDsKKwlucCA9ICZ0YmwtPmhhc2hfYnVja2V0 c1t0YmwtPmhhc2hfY2hhaW5fZ2NdOworCXRibC0+aGFzaF9jaGFpbl9nYyA9ICgodGJsLT5oYXNo X2NoYWluX2djICsgMSkgJiB0YmwtPmhhc2hfbWFzayk7CiAKLQkJbnAgPSAmdGJsLT5oYXNoX2J1 Y2tldHNbaV07Ci0JCXdoaWxlICgobiA9ICpucCkgIT0gTlVMTCkgewotCQkJdW5zaWduZWQgc3Rh dGU7Ci0KLQkJCXdyaXRlX2xvY2soJm4tPmxvY2spOwotCi0JCQlzdGF0ZSA9IG4tPm51ZF9zdGF0 ZTsKLQkJCWlmIChzdGF0ZSAmIChOVURfUEVSTUFORU5UIHwgTlVEX0lOX1RJTUVSKSkgewotCQkJ CXdyaXRlX3VubG9jaygmbi0+bG9jayk7Ci0JCQkJZ290byBuZXh0X2VsdDsKLQkJCX0KKwl3aGls ZSAoKG4gPSAqbnApICE9IE5VTEwpIHsKKwkJdW5zaWduZWQgaW50IHN0YXRlOwogCi0JCQlpZiAo dGltZV9iZWZvcmUobi0+dXNlZCwgbi0+Y29uZmlybWVkKSkKLQkJCQluLT51c2VkID0gbi0+Y29u ZmlybWVkOworCQl3cml0ZV9sb2NrKCZuLT5sb2NrKTsKIAotCQkJaWYgKGF0b21pY19yZWFkKCZu LT5yZWZjbnQpID09IDEgJiYKLQkJCSAgICAoc3RhdGUgPT0gTlVEX0ZBSUxFRCB8fAotCQkJICAg ICB0aW1lX2FmdGVyKG5vdywgbi0+dXNlZCArIG4tPnBhcm1zLT5nY19zdGFsZXRpbWUpKSkgewot CQkJCSpucCA9IG4tPm5leHQ7Ci0JCQkJbi0+ZGVhZCA9IDE7Ci0JCQkJd3JpdGVfdW5sb2NrKCZu LT5sb2NrKTsKLQkJCQluZWlnaF9yZWxlYXNlKG4pOwotCQkJCWNvbnRpbnVlOwotCQkJfQorCQlz dGF0ZSA9IG4tPm51ZF9zdGF0ZTsKKwkJaWYgKHN0YXRlICYgKE5VRF9QRVJNQU5FTlQgfCBOVURf SU5fVElNRVIpKSB7CiAJCQl3cml0ZV91bmxvY2soJm4tPmxvY2spOworCQkJZ290byBuZXh0X2Vs dDsKKwkJfQogCi1uZXh0X2VsdDoKLQkJCW5wID0gJm4tPm5leHQ7CisJCWlmICh0aW1lX2JlZm9y ZShuLT51c2VkLCBuLT5jb25maXJtZWQpKQorCQkJbi0+dXNlZCA9IG4tPmNvbmZpcm1lZDsKKwor CQlpZiAoYXRvbWljX3JlYWQoJm4tPnJlZmNudCkgPT0gMSAmJgorCQkgICAgKHN0YXRlID09IE5V RF9GQUlMRUQgfHwKKwkJICAgICB0aW1lX2FmdGVyKG5vdywgbi0+dXNlZCArIG4tPnBhcm1zLT5n Y19zdGFsZXRpbWUpKSkgeworCQkJKm5wID0gbi0+bmV4dDsKKwkJCW4tPmRlYWQgPSAxOworCQkJ d3JpdGVfdW5sb2NrKCZuLT5sb2NrKTsKKwkJCW5laWdoX3JlbGVhc2Uobik7CisJCQljb250aW51 ZTsKIAkJfQorCQl3cml0ZV91bmxvY2soJm4tPmxvY2spOworCituZXh0X2VsdDoKKwkJbnAgPSAm bi0+bmV4dDsKIAl9CiAKLQltb2RfdGltZXIoJnRibC0+Z2NfdGltZXIsIG5vdyArIHRibC0+Z2Nf aW50ZXJ2YWwpOworIAkvKiBDeWNsZSB0aHJvdWdoIGFsbCBoYXNoIGJ1Y2tldHMgZXZlcnkgYmFz ZV9yZWFjaGFibGVfdGltZS8yIHRpY2tzLgorIAkgKiBBUlAgZW50cnkgdGltZW91dHMgcmFuZ2Ug ZnJvbSAxLzIgYmFzZV9yZWFjaGFibGVfdGltZSB0byAzLzIKKyAJICogYmFzZV9yZWFjaGFibGVf dGltZS4KKwkgKi8KKwlleHBpcmUgPSB0YmwtPnBhcm1zLmJhc2VfcmVhY2hhYmxlX3RpbWUgPj4g MTsKKwlleHBpcmUgLz0gKHRibC0+aGFzaF9tYXNrICsgMSk7CisJaWYgKCFleHBpcmUpCisJCWV4 cGlyZSA9IDE7CisKKyAJbW9kX3RpbWVyKCZ0YmwtPmdjX3RpbWVyLCBub3cgKyBleHBpcmUpOwor CiAJd3JpdGVfdW5sb2NrKCZ0YmwtPmxvY2spOwogfQogCkBAIC0xMzI0LDggKzEzMzEsNyBAQAog CWluaXRfdGltZXIoJnRibC0+Z2NfdGltZXIpOwogCXRibC0+Z2NfdGltZXIuZGF0YSAgICAgPSAo dW5zaWduZWQgbG9uZyl0Ymw7CiAJdGJsLT5nY190aW1lci5mdW5jdGlvbiA9IG5laWdoX3Blcmlv ZGljX3RpbWVyOwotCXRibC0+Z2NfdGltZXIuZXhwaXJlcyAgPSBub3cgKyB0YmwtPmdjX2ludGVy dmFsICsKLQkJCQkgdGJsLT5wYXJtcy5yZWFjaGFibGVfdGltZTsKKwl0YmwtPmdjX3RpbWVyLmV4 cGlyZXMgID0gbm93ICsgMTsKIAlhZGRfdGltZXIoJnRibC0+Z2NfdGltZXIpOwogCiAJaW5pdF90 aW1lcigmdGJsLT5wcm94eV90aW1lcik7Cg== --Multipart=_Sat__25_Sep_2004_00_56_23_-0700_uLfCl5pSLzMLSXzU Content-Type: application/octet-stream; name="diff3" Content-Disposition: attachment; filename="diff3" Content-Transfer-Encoding: base64 IyBUaGlzIGlzIGEgQml0S2VlcGVyIGdlbmVyYXRlZCBkaWZmIC1OcnUgc3R5bGUgcGF0Y2guCiMK IyBDaGFuZ2VTZXQKIyAgIDIwMDQvMDkvMjQgMTY6MjI6MTQtMDc6MDAgZGF2ZW1AbnV0cy5kYXZl bWxvZnQubmV0IAojICAgW05FVF06IEZpeCBzb21lIG5laWdoIHRhYmxlIGxvY2tpbmcgZXJyb3Jz LgojICAgCiMgICBBbHNvLCBtYWtlIG5laWdoX2hhc2hfYWxsb2MoKSB1c2UgR0ZQX0FUT01JQy4K IyAgIAojICAgU2lnbmVkLW9mZi1ieTogRGF2aWQgUy4gTWlsbGVyIDxkYXZlbUBkYXZlbWxvZnQu bmV0PgojIAojIG5ldC9jb3JlL25laWdoYm91ci5jCiMgICAyMDA0LzA5LzI0IDE2OjIxOjQ5LTA3 OjAwIGRhdmVtQG51dHMuZGF2ZW1sb2Z0Lm5ldCArMTQgLTkKIyAgIFtORVRdOiBGaXggc29tZSBu ZWlnaCB0YWJsZSBsb2NraW5nIGVycm9ycy4KIyAgIAojICAgQWxzbywgbWFrZSBuZWlnaF9oYXNo X2FsbG9jKCkgdXNlIEdGUF9BVE9NSUMuCiMgICAKIyAgIFNpZ25lZC1vZmYtYnk6IERhdmlkIFMu IE1pbGxlciA8ZGF2ZW1AZGF2ZW1sb2Z0Lm5ldD4KIyAKZGlmZiAtTnJ1IGEvbmV0L2NvcmUvbmVp Z2hib3VyLmMgYi9uZXQvY29yZS9uZWlnaGJvdXIuYwotLS0gYS9uZXQvY29yZS9uZWlnaGJvdXIu YwkyMDA0LTA5LTI1IDAwOjMwOjQwIC0wNzowMAorKysgYi9uZXQvY29yZS9uZWlnaGJvdXIuYwky MDA0LTA5LTI1IDAwOjMwOjQwIC0wNzowMApAQCAtMTE2LDExICsxMTYsMTEgQEAKIAlpbnQgc2hy dW5rID0gMDsKIAlpbnQgaTsKIAorCXdyaXRlX2xvY2tfYmgoJnRibC0+bG9jayk7CiAJZm9yIChp ID0gMDsgaSA8PSB0YmwtPmhhc2hfbWFzazsgaSsrKSB7CiAJCXN0cnVjdCBuZWlnaGJvdXIgKm4s ICoqbnA7CiAKIAkJbnAgPSAmdGJsLT5oYXNoX2J1Y2tldHNbaV07Ci0JCXdyaXRlX2xvY2tfYmgo JnRibC0+bG9jayk7CiAJCXdoaWxlICgobiA9ICpucCkgIT0gTlVMTCkgewogCQkJLyogTmVpZ2hi b3VyIHJlY29yZCBtYXkgYmUgZGlzY2FyZGVkIGlmOgogCQkJICAgLSBub2JvZHkgcmVmZXJzIHRv IGl0LgpAQCAtMTQ3LDEwICsxNDcsMTIgQEAKIAkJCXdyaXRlX3VubG9jaygmbi0+bG9jayk7CiAJ CQlucCA9ICZuLT5uZXh0OwogCQl9Ci0JCXdyaXRlX3VubG9ja19iaCgmdGJsLT5sb2NrKTsKIAl9 CiAKIAl0YmwtPmxhc3RfZmx1c2ggPSBqaWZmaWVzOworCisJd3JpdGVfdW5sb2NrX2JoKCZ0Ymwt PmxvY2spOworCiAJcmV0dXJuIHNocnVuazsKIH0KIApAQCAtMjk1LDEwICsyOTcsMTAgQEAKIAlz dHJ1Y3QgbmVpZ2hib3VyICoqcmV0OwogCiAJaWYgKHNpemUgPD0gUEFHRV9TSVpFKSB7Ci0JCXJl dCA9IGttYWxsb2Moc2l6ZSwgR0ZQX0tFUk5FTCk7CisJCXJldCA9IGttYWxsb2Moc2l6ZSwgR0ZQ X0FUT01JQyk7CiAJfSBlbHNlIHsKIAkJcmV0ID0gKHN0cnVjdCBuZWlnaGJvdXIgKiopCi0JCQlf X2dldF9mcmVlX3BhZ2VzKEdGUF9LRVJORUwsIGdldF9vcmRlcihzaXplKSk7CisJCQlfX2dldF9m cmVlX3BhZ2VzKEdGUF9BVE9NSUMsIGdldF9vcmRlcihzaXplKSk7CiAJfQogCWlmIChyZXQpCiAJ CW1lbXNldChyZXQsIDAsIHNpemUpOwpAQCAtMzMwLDcgKzMzMiw2IEBACiAJbmV3X2hhc2hfbWFz ayA9IG5ld19lbnRyaWVzIC0gMTsKIAlvbGRfaGFzaCA9IHRibC0+aGFzaF9idWNrZXRzOwogCi0J d3JpdGVfbG9ja19iaCgmdGJsLT5sb2NrKTsKIAlnZXRfcmFuZG9tX2J5dGVzKCZ0YmwtPmhhc2hf cm5kLCBzaXplb2YodGJsLT5oYXNoX3JuZCkpOwogCWZvciAoaSA9IDA7IGkgPCBvbGRfZW50cmll czsgaSsrKSB7CiAJCXN0cnVjdCBuZWlnaGJvdXIgKm4sICpuZXh0OwpAQCAtMzQ3LDcgKzM0OCw2 IEBACiAJfQogCXRibC0+aGFzaF9idWNrZXRzID0gbmV3X2hhc2g7CiAJdGJsLT5oYXNoX21hc2sg PSBuZXdfaGFzaF9tYXNrOwotCXdyaXRlX3VubG9ja19iaCgmdGJsLT5sb2NrKTsKIAogCW5laWdo X2hhc2hfZnJlZShvbGRfaGFzaCwgb2xkX2VudHJpZXMpOwogfQpAQCAtNDAwLDggKzQwMCwxMSBA QAogCQlnb3RvIG91dDsKIAl9CiAKLQlpZiAodGJsLT5lbnRyaWVzID4gKHRibC0+aGFzaF9tYXNr ICsgMSkpCisJaWYgKHRibC0+ZW50cmllcyA+ICh0YmwtPmhhc2hfbWFzayArIDEpKSB7CisJCXdy aXRlX2xvY2tfYmgoJnRibC0+bG9jayk7CiAJCW5laWdoX2hhc2hfZ3Jvdyh0YmwsICh0YmwtPmhh c2hfbWFzayArIDEpIDw8IDEpOworCQl3cml0ZV91bmxvY2tfYmgoJnRibC0+bG9jayk7CisJfQog CiAJbWVtY3B5KG4tPnByaW1hcnlfa2V5LCBwa2V5LCBrZXlfbGVuKTsKIAluLT5kZXYgPSBkZXY7 CkBAIC00MjIsOSArNDI1LDEwIEBACiAKIAluLT5jb25maXJtZWQgPSBqaWZmaWVzIC0gKG4tPnBh cm1zLT5iYXNlX3JlYWNoYWJsZV90aW1lIDw8IDEpOwogCisJd3JpdGVfbG9ja19iaCgmdGJsLT5s b2NrKTsKKwogCWhhc2hfdmFsID0gdGJsLT5oYXNoKHBrZXksIGRldikgJiB0YmwtPmhhc2hfbWFz azsKIAotCXdyaXRlX2xvY2tfYmgoJnRibC0+bG9jayk7CiAJaWYgKG4tPnBhcm1zLT5kZWFkKSB7 CiAJCXJjID0gRVJSX1BUUigtRUlOVkFMKTsKIAkJZ290byBvdXRfdGJsX3VubG9jazsKQEAgLTUx NCwxMCArNTE4LDEwIEBACiAJaGFzaF92YWwgXj0gaGFzaF92YWwgPj4gNDsKIAloYXNoX3ZhbCAm PSBQTkVJR0hfSEFTSE1BU0s7CiAKKwl3cml0ZV9sb2NrX2JoKCZ0YmwtPmxvY2spOwogCWZvciAo bnAgPSAmdGJsLT5waGFzaF9idWNrZXRzW2hhc2hfdmFsXTsgKG4gPSAqbnApICE9IE5VTEw7CiAJ ICAgICBucCA9ICZuLT5uZXh0KSB7CiAJCWlmICghbWVtY21wKG4tPmtleSwgcGtleSwga2V5X2xl bikgJiYgbi0+ZGV2ID09IGRldikgewotCQkJd3JpdGVfbG9ja19iaCgmdGJsLT5sb2NrKTsKIAkJ CSpucCA9IG4tPm5leHQ7CiAJCQl3cml0ZV91bmxvY2tfYmgoJnRibC0+bG9jayk7CiAJCQlpZiAo dGJsLT5wZGVzdHJ1Y3RvcikKQEAgLTUyNiw2ICs1MzAsNyBAQAogCQkJcmV0dXJuIDA7CiAJCX0K IAl9CisJd3JpdGVfdW5sb2NrX2JoKCZ0YmwtPmxvY2spOwogCXJldHVybiAtRU5PRU5UOwogfQog Cg== --Multipart=_Sat__25_Sep_2004_00_56_23_-0700_uLfCl5pSLzMLSXzU Content-Type: application/octet-stream; name="diff4" Content-Disposition: attachment; filename="diff4" Content-Transfer-Encoding: base64 PT09PT0gbmV0L2NvcmUvbmVpZ2hib3VyLmMgMS40NyB2cyBlZGl0ZWQgPT09PT0KLS0tIDEuNDcv bmV0L2NvcmUvbmVpZ2hib3VyLmMJMjAwNC0wOS0yNCAxNjoyMTo0OSAtMDc6MDAKKysrIGVkaXRl ZC9uZXQvY29yZS9uZWlnaGJvdXIuYwkyMDA0LTA5LTI0IDE2OjM4OjU4IC0wNzowMApAQCAtMTEw LDEzICsxMTAsMTMgQEAKIAlyZXR1cm4gKG5ldF9yYW5kb20oKSAlIGJhc2UpICsgKGJhc2UgPj4g MSk7CiB9CiAKLQotc3RhdGljIGludCBuZWlnaF9mb3JjZWRfZ2Moc3RydWN0IG5laWdoX3RhYmxl ICp0YmwpCitzdGF0aWMgaW50IG5laWdoX2ZvcmNlZF9nYyhzdHJ1Y3QgbmVpZ2hfdGFibGUgKnRi bCwgaW50IGdvYWwpCiB7Ci0JaW50IHNocnVuayA9IDA7CisJaW50IHNocnVuayA9IDAsIG51bV9p bmNvbXBsZXRlID0gMCwgcmVhcF9pbmNvbXBsZXRlID0gMDsKIAlpbnQgaTsKIAogCXdyaXRlX2xv Y2tfYmgoJnRibC0+bG9jayk7CityZXNjYW46CiAJZm9yIChpID0gMDsgaSA8PSB0YmwtPmhhc2hf bWFzazsgaSsrKSB7CiAJCXN0cnVjdCBuZWlnaGJvdXIgKm4sICoqbnA7CiAKQEAgLTEyNSwzMCAr MTI1LDQ2IEBACiAJCQkvKiBOZWlnaGJvdXIgcmVjb3JkIG1heSBiZSBkaXNjYXJkZWQgaWY6CiAJ CQkgICAtIG5vYm9keSByZWZlcnMgdG8gaXQuCiAJCQkgICAtIGl0IGlzIG5vdCBwZXJtYW5lbnQK LQkJCSAgIC0gKE5FVyBhbmQgcHJvYmFibHkgd3JvbmcpCisJCQkgICAtIE9uIHRoZSBmaXJzdCBw YXNzIG9mIHRoaXMgc2NhbiwKIAkJCSAgICAgSU5DT01QTEVURSBlbnRyaWVzIGFyZSBrZXB0IGF0 IGxlYXN0IGZvcgogCQkJICAgICBuLT5wYXJtcy0+cmV0cmFuc190aW1lLCBvdGhlcndpc2Ugd2Ug Y291bGQKIAkJCSAgICAgZmxvb2QgbmV0d29yayB3aXRoIHJlc29sdXRpb24gcmVxdWVzdHMuCi0J CQkgICAgIEl0IGlzIG5vdCBjbGVhciwgd2hhdCBpcyBiZXR0ZXIgdGFibGUgb3ZlcmZsb3cKLQkJ CSAgICAgb3IgZmxvb2RpbmcuCiAJCQkgKi8KIAkJCXdyaXRlX2xvY2soJm4tPmxvY2spOwotCQkJ aWYgKGF0b21pY19yZWFkKCZuLT5yZWZjbnQpID09IDEgJiYKLQkJCSAgICAhKG4tPm51ZF9zdGF0 ZSAmIE5VRF9QRVJNQU5FTlQpICYmCi0JCQkgICAgKG4tPm51ZF9zdGF0ZSAhPSBOVURfSU5DT01Q TEVURSB8fAotCQkJICAgICB0aW1lX2FmdGVyKGppZmZpZXMsIG4tPnVzZWQgKyBuLT5wYXJtcy0+ cmV0cmFuc190aW1lKSkpIHsKLQkJCQkqbnAJPSBuLT5uZXh0OwotCQkJCW4tPmRlYWQgPSAxOwot CQkJCXNocnVuawk9IDE7Ci0JCQkJd3JpdGVfdW5sb2NrKCZuLT5sb2NrKTsKLQkJCQluZWlnaF9y ZWxlYXNlKG4pOwotCQkJCWNvbnRpbnVlOworCQkJaWYgKGF0b21pY19yZWFkKCZuLT5yZWZjbnQp ICE9IDEpCisJCQkJZ290byBuZXh0X2VudDsKKworCQkJaWYgKG4tPm51ZF9zdGF0ZSAmIE5VRF9Q RVJNQU5FTlQpCisJCQkJZ290byBuZXh0X2VudDsKKworCQkJaWYgKG4tPm51ZF9zdGF0ZSAtPSBO VURfSU5DT01QTEVURSAmJgorCQkJICAgIHJlYXBfaW5jb21wbGV0ZSA9PSAwICYmCisJCQkgICAg dGltZV9hZnRlcihqaWZmaWVzLAorCQkJCSAgICAgICBuLT51c2VkICsgbi0+cGFybXMtPnJldHJh bnNfdGltZSkpIHsKKwkJCQludW1faW5jb21wbGV0ZSsrOworCQkJCWdvdG8gbmV4dF9lbnQ7CiAJ CQl9CisKKwkJCSpucAk9IG4tPm5leHQ7CisJCQluLT5kZWFkID0gMTsKKwkJCXNocnVuaysrOwor CQkJd3JpdGVfdW5sb2NrKCZuLT5sb2NrKTsKKwkJCW5laWdoX3JlbGVhc2Uobik7CisJCQljb250 aW51ZTsKKworCQluZXh0X2VudDoKIAkJCXdyaXRlX3VubG9jaygmbi0+bG9jayk7CiAJCQlucCA9 ICZuLT5uZXh0OwogCQl9CiAJfQogCisJaWYgKHJlYXBfaW5jb21wbGV0ZSA9PSAwICYmCisJICAg IHNocnVuayA8IGdvYWwgJiYKKwkgICAgKHNocnVuayArIG51bV9pbmNvbXBsZXRlKSA+PSBnb2Fs KSB7CisJCXJlYXBfaW5jb21wbGV0ZSA9IDE7CisJCWdvdG8gcmVzY2FuOworCX0KKwogCXRibC0+ bGFzdF9mbHVzaCA9IGppZmZpZXM7CiAKIAl3cml0ZV91bmxvY2tfYmgoJnRibC0+bG9jayk7CkBA IC0yNjEsNyArMjc3LDkgQEAKIAlpZiAodGJsLT5lbnRyaWVzID4gdGJsLT5nY190aHJlc2gzIHx8 CiAJICAgICh0YmwtPmVudHJpZXMgPiB0YmwtPmdjX3RocmVzaDIgJiYKIAkgICAgIHRpbWVfYWZ0 ZXIobm93LCB0YmwtPmxhc3RfZmx1c2ggKyA1ICogSFopKSkgewotCQlpZiAoIW5laWdoX2ZvcmNl ZF9nYyh0YmwpICYmCisJCWludCBnb2FsID0gdGJsLT5lbnRyaWVzIC0gdGJsLT5nY190aHJlc2gz OworCisJCWlmICghbmVpZ2hfZm9yY2VkX2djKHRibCwgZ29hbCkgJiYKIAkJICAgIHRibC0+ZW50 cmllcyA+IHRibC0+Z2NfdGhyZXNoMykKIAkJCWdvdG8gb3V0OwogCX0K --Multipart=_Sat__25_Sep_2004_00_56_23_-0700_uLfCl5pSLzMLSXzU--