lkml.org 
[lkml]   [2005]   [Jan]   [13]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    SubjectRe: 2.4.28(+?): Strange ARP problem
    On Fri, Jan 14, 2005 at 08:01:42AM +1100, Herbert Xu wrote:
    > On Thu, Jan 13, 2005 at 10:09:00AM -0200, Marcelo Tosatti wrote:
    > >
    > > Maybe you can try earlier v2.4.28's (-rc1 for one) to check where
    > > the problem starts to happen?
    >
    > The symptom sounds like the bug in the 2.4 backport of the neighbour
    > hash updates. In neigh_create, hash_val needs to be computed inside
    > the lock (and after the growing), not outside.
    >
    > Someone even posted a patch for it. I'll dig it up tonight if it
    > doesn't show up by then.

    I just built a patch from your description -- it's attached.

    -Scott
    --- linux-2.4.29-rc2/net/core/neighbour.c 2005/01/13 21:55:06 1.1
    +++ linux-2.4.29-rc2/net/core/neighbour.c 2005/01/13 21:56:32
    @@ -427,11 +427,12 @@

    n->confirmed = jiffies - (n->parms->base_reachable_time<<1);

    - hash_val = tbl->hash(pkey, dev) & tbl->hash_mask;
    -
    write_lock_bh(&tbl->lock);
    if (atomic_read(&tbl->entries) > (tbl->hash_mask + 1))
    neigh_hash_grow(tbl, (tbl->hash_mask + 1) << 1);
    +
    + hash_val = tbl->hash(pkey, dev) & tbl->hash_mask;
    +
    for (n1 = tbl->hash_buckets[hash_val]; n1; n1 = n1->next) {
    if (dev == n1->dev &&
    memcmp(n1->primary_key, pkey, key_len) == 0) {
    \
     
     \ /
      Last update: 2005-03-22 14:09    [W:4.551 / U:0.008 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site