Page MenuHomeFreeBSD

acquire inp lock around ip6_pcbopt to fix IPV6_TCLASS panic
ClosedPublic

Authored by jason_eggnet.com on Jul 9 2018, 7:47 PM.
Tags
None
Referenced Files
F161536294: D16201.id.diff
Sat, Jul 4, 3:30 PM
F161447944: D16201.diff
Fri, Jul 3, 9:27 PM
Unknown Object (File)
Wed, Jul 1, 7:15 AM
Unknown Object (File)
Fri, Jun 26, 12:19 AM
Unknown Object (File)
Thu, Jun 18, 5:16 PM
Unknown Object (File)
Thu, Jun 18, 1:41 PM
Unknown Object (File)
Wed, Jun 10, 7:39 AM
Unknown Object (File)
Tue, Jun 9, 2:41 PM
Subscribers

Details

Summary

Hopefully simple fix to address panics relating to setting IPV6_TCLASS with setsockopt().

The premise of this fix is that it is ok to call malloc with M_NOWAIT while holding a lock on the in6p.

If it is not ok, then major surgery will be required, as ip6_setpktopt() will have to be fixed (as it also calls malloc with M_NOWAIT) which pulls in the ip6_pcbopts(), ip6_setpktopts(), ip6_setpktopt() call chain. The other call chain does have to be fixed but it can be done in a different review (and with relative ease) if this strategy works out.

Diff Detail

Repository
rS FreeBSD src repository - subversion
Lint
Lint Not Applicable
Unit
Tests Not Applicable

Event Timeline

This revision is now accepted and ready to land.Jul 10 2018, 11:24 PM
This revision was automatically updated to reflect the committed changes.