Comment 25 for bug 16137

Revision history for this message
Debian Bug Importer (debzilla) wrote :

Message-ID: <email address hidden>
Date: Fri, 28 Jan 2005 14:00:37 +0100 (MET)
From: "Wilfried Weissmann" <email address hidden>
To: <email address hidden>, <email address hidden>, <email address hidden>,
 <email address hidden>
Subject: multiple neighbour cache tables for AF_INET

--========GMXBoundary249391106917237
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit

Hi,

The kernels 2.4.28+ and 2.6.9+ with IPv4 and ATM-CLIP enabled have bugs in
the neighbour cache code. neigh_delete() and neigh_add() only work properly
if one cache table per address family exist. After ATM-CLIP installed a
second cache table for AF_INET, neigh_delete() and neigh_add() only examine
the first table (the ATM-CLIP table if IPv4 and ATM-CLIP are compiled into
the kernel). neigh_dump_info() is also affected if the neigh_dump_table()
call fails.

This bug causes "ip neigh flush dev <some ethernet device>" to run into an
infinite loop when the arp cache is already populated (debian bug #282492).
"ip neigh delete ..." commands for non ATM-CLIP entries fail with an EINVAL.
This is because of the IPv4 neighbour table that is installed in arp.c is
never examined when sending delete commands.

I have attached a minimally tested patch for 2.4.28 that fixes this problem.

Greetings,
Wilfried

--
10 GB Mailbox, 100 FreeSMS http://www.gmx.net/de/go/topmail
+++ GMX - die erste Adresse f�l, Message, More +++
--========GMXBoundary249391106917237
Content-Type: text/x-diff; name="neighbour.patch"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="neighbour.patch"

LS0tIGxpbnV4LTIuNC4yOC9uZXQvY29yZS9uZWlnaGJvdXIuYwlGcmkgSmFuIDI4IDE0OjI2OjU5
IDIwMDUKKysrIGxpbnV4LTIuNC4yOGZpeC9uZXQvY29yZS9uZWlnaGJvdXIuYwlGcmkgSmFuIDI4
IDEzOjIyOjA2IDIwMDUKQEAgLTEzNTEsNyArMTM1MSw2IEBAIGludCBuZWlnaF9kZWxldGUoc3Ry
dWN0IHNrX2J1ZmYgKnNrYiwgc3QKIAogCQlpZiAodGJsLT5mYW1pbHkgIT0gbmRtLT5uZG1fZmFt
aWx5KQogCQkJY29udGludWU7Ci0JCXJlYWRfdW5sb2NrKCZuZWlnaF90YmxfbG9jayk7CiAKIAkJ
ZXJyID0gLUVJTlZBTDsKIAkJaWYgKG5kYVtOREFfRFNULTFdID09IE5VTEwgfHwKQEAgLTEzNjAs
MTggKzEzNTksMjggQEAgaW50IG5laWdoX2RlbGV0ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdAog
CiAJCWlmIChuZG0tPm5kbV9mbGFncyZOVEZfUFJPWFkpIHsKIAkJCWVyciA9IHBuZWlnaF9kZWxl
dGUodGJsLCBSVEFfREFUQShuZGFbTkRBX0RTVC0xXSksIGRldik7Ci0JCQlnb3RvIG91dDsKKwkJ
CWlmKGVycikgeworCQkJCWNvbnRpbnVlOwkvKiBtYXliZSBpbiBhbm90aGVyIHRhYmxlICovCisJ
CQl9CisJCQllbHNlIHsKKwkJCQlnb3RvIG91dDsKKwkJCX0KIAkJfQogCi0JCWlmIChkZXYgPT0g
TlVMTCkKLQkJCXJldHVybiAtRUlOVkFMOworCQlpZiAoZGV2ID09IE5VTEwpIHsKKwkJCWdvdG8g
b3V0OworCQl9CiAKIAkJbiA9IG5laWdoX2xvb2t1cCh0YmwsIFJUQV9EQVRBKG5kYVtOREFfRFNU
LTFdKSwgZGV2KTsKIAkJaWYgKG4pIHsKIAkJCWVyciA9IG5laWdoX3VwZGF0ZShuLCBOVUxMLCBO
VURfRkFJTEVELCAxLCAwKTsKIAkJCW5laWdoX3JlbGVhc2Uobik7CiAJCX0KKwkJZWxzZSB7CisJ
CQljb250aW51ZTsJLyogbWF5YmUgaW4gYW5vdGhlciB0YWJsZSAqLworCQl9CiBvdXQ6CisJCXJl
YWRfdW5sb2NrKCZuZWlnaF90YmxfbG9jayk7CiAJCWlmIChkZXYpCiAJCQlkZXZfcHV0KGRldik7
CiAJCXJldHVybiBlcnI7CkBAIC0xMzkwLDYgKzEzOTksOCBAQCBpbnQgbmVpZ2hfYWRkKHN0cnVj
dCBza19idWZmICpza2IsIHN0cnVjCiAJc3RydWN0IHJ0YXR0ciAqKm5kYSA9IGFyZzsKIAlzdHJ1
Y3QgbmVpZ2hfdGFibGUgKnRibDsKIAlzdHJ1Y3QgbmV0X2RldmljZSAqZGV2ID0gTlVMTDsKKwlp
bnQgZXJyID0gLUVBRERSTk9UQVZBSUw7CisJaW50IG9sZGVycjsKIAogCWlmIChuZG0tPm5kbV9p
ZmluZGV4KSB7CiAJCWlmICgoZGV2ID0gZGV2X2dldF9ieV9pbmRleChuZG0tPm5kbV9pZmluZGV4
KSkgPT0gTlVMTCkKQEAgLTEzOTgsMzUgKzE0MDksNDcgQEAgaW50IG5laWdoX2FkZChzdHJ1Y3Qg
c2tfYnVmZiAqc2tiLCBzdHJ1YwogCiAJcmVhZF9sb2NrKCZuZWlnaF90YmxfbG9jayk7CiAJZm9y
ICh0Ymw9bmVpZ2hfdGFibGVzOyB0Ymw7IHRibCA9IHRibC0+bmV4dCkgewotCQlpbnQgZXJyID0g
MDsKIAkJaW50IG92ZXJyaWRlID0gMTsKIAkJc3RydWN0IG5laWdoYm91ciAqbjsKIAogCQlpZiAo
dGJsLT5mYW1pbHkgIT0gbmRtLT5uZG1fZmFtaWx5KQogCQkJY29udGludWU7Ci0JCXJlYWRfdW5s
b2NrKCZuZWlnaF90YmxfbG9jayk7CiAKLQkJZXJyID0gLUVJTlZBTDsKIAkJaWYgKG5kYVtOREFf
RFNULTFdID09IE5VTEwgfHwKLQkJICAgIG5kYVtOREFfRFNULTFdLT5ydGFfbGVuICE9IFJUQV9M
RU5HVEgodGJsLT5rZXlfbGVuKSkKKwkJICAgIG5kYVtOREFfRFNULTFdLT5ydGFfbGVuICE9IFJU
QV9MRU5HVEgodGJsLT5rZXlfbGVuKSkgeworCQkJZXJyID0gLUVJTlZBTDsKIAkJCWdvdG8gb3V0
OworCQl9CisKIAkJaWYgKG5kbS0+bmRtX2ZsYWdzJk5URl9QUk9YWSkgewogCQkJZXJyID0gLUVO
T0JVRlM7Ci0JCQlpZiAocG5laWdoX2xvb2t1cCh0YmwsIFJUQV9EQVRBKG5kYVtOREFfRFNULTFd
KSwgZGV2LCAxKSkKKwkJCWlmIChwbmVpZ2hfbG9va3VwKHRibCwgUlRBX0RBVEEobmRhW05EQV9E
U1QtMV0pLCBkZXYsIDEpKSB7CiAJCQkJZXJyID0gMDsKKwkJCQlnb3RvIG91dDsKKwkJCX0KKwkJ
CWVsc2UgeworCQkJCWNvbnRpbnVlOwkvKiBtYXliZSBpbiBhbm90aGVyIHRhYmxlICovCisJCQl9
CisJCX0KKwkJaWYgKGRldiA9PSBOVUxMKSB7CisJCQllcnIgPSAtRUlOVkFMOwogCQkJZ290byBv
dXQ7CiAJCX0KLQkJaWYgKGRldiA9PSBOVUxMKQotCQkJcmV0dXJuIC1FSU5WQUw7Ci0JCWVyciA9
IC1FSU5WQUw7CisKIAkJaWYgKG5kYVtOREFfTExBRERSLTFdICE9IE5VTEwgJiYKLQkJICAgIG5k
YVtOREFfTExBRERSLTFdLT5ydGFfbGVuICE9IFJUQV9MRU5HVEgoZGV2LT5hZGRyX2xlbikpCisJ
CSAgICBuZGFbTkRBX0xMQUREUi0xXS0+cnRhX2xlbiAhPSBSVEFfTEVOR1RIKGRldi0+YWRkcl9s
ZW4pKSB7CisJCQllcnIgPSAtRUlOVkFMOwogCQkJZ290byBvdXQ7CisJCX0KKworCQlvbGRlcnI9
ZXJyOwogCQllcnIgPSAwOwogCQluID0gbmVpZ2hfbG9va3VwKHRibCwgUlRBX0RBVEEobmRhW05E
QV9EU1QtMV0pLCBkZXYpOwogCQlpZiAobikgewotCQkJaWYgKG5saC0+bmxtc2dfZmxhZ3MmTkxN
X0ZfRVhDTCkKKwkJCWlmIChubGgtPm5sbXNnX2ZsYWdzJk5MTV9GX0VYQ0wpIHsKIAkJCQllcnIg
PSAtRUVYSVNUOworCQkJCWdvdG8gb3V0bmVpZ2g7CisJCQl9CiAJCQlvdmVycmlkZSA9IG5saC0+
bmxtc2dfZmxhZ3MmTkxNX0ZfUkVQTEFDRTsKIAkJfSBlbHNlIGlmICghKG5saC0+bmxtc2dfZmxh
Z3MmTkxNX0ZfQ1JFQVRFKSkKIAkJCWVyciA9IC1FTk9FTlQ7CkBAIC0xNDQyLDkgKzE0NjUsMTYg
QEAgaW50IG5laWdoX2FkZChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1YwogCQkJCQkgICBuZG0t
Pm5kbV9zdGF0ZSwKIAkJCQkJICAgb3ZlcnJpZGUsIDApOwogCQl9CisJCWVsc2UgeworCQkJZXJy
PW9sZGVycjsKKwkJCWNvbnRpbnVlOwkvKiBtYXliZSBpbiBhbm90aGVyIHRhYmxlICovCisJCX0K
Kworb3V0bmVpZ2g6CiAJCWlmIChuKQogCQkJbmVpZ2hfcmVsZWFzZShuKTsKIG91dDoKKwkJcmVh
ZF91bmxvY2soJm5laWdoX3RibF9sb2NrKTsKIAkJaWYgKGRldikKIAkJCWRldl9wdXQoZGV2KTsK
IAkJcmV0dXJuIGVycjsKQEAgLTE0NTMsNyArMTQ4Myw3IEBAIG91dDoKIAogCWlmIChkZXYpCiAJ
CWRldl9wdXQoZGV2KTsKLQlyZXR1cm4gLUVBRERSTk9UQVZBSUw7CisJcmV0dXJuIGVycjsKIH0K
IAogCkBAIC0xNTQ3LDggKzE1NzcsNyBAQCBpbnQgbmVpZ2hfZHVtcF9pbmZvKHN0cnVjdCBza19i
dWZmICpza2IsCiAJCQljb250aW51ZTsKIAkJaWYgKHQgPiBzX3QpCiAJCQltZW1zZXQoJmNiLT5h
cmdzWzFdLCAwLCBzaXplb2YoY2ItPmFyZ3MpLXNpemVvZihjYi0+YXJnc1swXSkpOwotCQlpZiAo
bmVpZ2hfZHVtcF90YWJsZSh0YmwsIHNrYiwgY2IpIDwgMCkgCi0JCQlicmVhazsKKwkJbmVpZ2hf
ZHVtcF90YWJsZSh0YmwsIHNrYiwgY2IpOwogCX0KIAlyZWFkX3VubG9jaygmbmVpZ2hfdGJsX2xv
Y2spOwogCg==
--========GMXBoundary249391106917237--