Re: addrconf: refcnt with IPV6_PRIVACY enabled

Eric Dumazet
2010-11-23T15:09:04Z

Le mardi 23 novembre 2010 à 16:53 +0200, Sergey Senozhatsky a écrit :
>
> > ipv6_regen_rndid() is the timer handler function, it must call
> > in6_dev_put() at the end, unless we rearm the timer.
> >
> > So this code is correct.
> >
> >
> > if (!mod_timer(&idev->regen_timer, expires))
> > in6_dev_hold(idev);
> > ...
> > in6_dev_put(idev);
> >
>
> Even if in6_dev_hold hasn't been called from ipv6_regen_rndid?
>

Yes.

Rules are :

in6_dev_hold() when arming timer, so that device doesnt disappear while
timer handler might run and need it.

in6_dev_put() when timer handler finishes