Page MenuHomeFreeBSD

nd6: Mark several global callouts MPSAFE
ClosedPublic

Authored by markj on Aug 9 2021, 12:43 AM.
Tags
None
Referenced Files
F133097188: D31470.diff
Wed, Oct 22, 11:02 PM
Unknown Object (File)
Tue, Oct 14, 3:05 PM
Unknown Object (File)
Mon, Oct 13, 8:07 AM
Unknown Object (File)
Sun, Sep 28, 2:35 AM
Unknown Object (File)
Aug 15 2025, 1:12 AM
Unknown Object (File)
Aug 14 2025, 11:28 AM
Unknown Object (File)
Jul 26 2025, 6:58 PM
Unknown Object (File)
Jul 5 2025, 3:07 AM

Details

Summary

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).

Diff Detail

Repository
rG FreeBSD src repository
Lint
Lint Not Applicable
Unit
Tests Not Applicable

Event Timeline

markj requested review of this revision.Aug 9 2021, 12:43 AM

I always wished the argument was a bool or a '''#define''' with a name rather than 1 but that's unrelated to here.
Looks okay to me.

This revision is now accepted and ready to land.Aug 9 2021, 10:18 AM