David S. Miller wrote:
From: Ben Greear <[EMAIL PROTECTED]>
Date: Tue, 06 Sep 2005 16:03:36 -0700


At any rate, I'll be happy to see this fix go in unless someone
finds a problem with it!


As Yoshifuji showed, NUD_INCOMPLETE is a part of the
bitmask NUD_IN_TIMER, as is NUD_DELAY and a few others.

So it is actually an error to force all of those bits to
get set, and there is no bug being fixed by your change
since one of the NUD_IN_TIMER is known to be set at all
of those add_timer() call sites.

Bugger...

How about this call site?  The check is for new & NUD_IN_TIMER,
but there is no guarantee (that I can see) that neigh->nud_timer
has any of the NUD_IN_TIMER bits set.  The one place earlier
that sets neigh->nud_timer to new uses goto to exit the
method...

        if (new != old) {
                neigh_del_timer(neigh);
                if (new & NUD_IN_TIMER) {
                        neigh_hold(neigh);
                        neigh->timer.expires = jiffies +
                                                ((new & NUD_REACHABLE) ?
                                                 neigh->parms->reachable_time : 
0);
                        // BEN HACK
                        // neigh->nud_state |= NUD_IN_TIMER;

                        add_timer(&neigh->timer);
                }
                neigh->nud_state = new;
        }


--
Ben Greear <[EMAIL PROTECTED]>
Candela Technologies Inc  http://www.candelatech.com

-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to