The ND6 code was written pre-SMP, and the use of Giant here is vestigal.
Nothing in the ND6 code depends on it.
Also enter the net epoch in in6_tmpaddrtimer(). It needs to do so to
iterate over the ifnet list safely. This callout runs very
infrequently, so it's not likely to be a problem, but it probably
should also be synchronizing with in6_tmpifadd().
I did not (yet) mark the DAD callout as MPSAFE, it requires further
fixes (but also does not depend on Giant).