Page MenuHomeFreeBSD

Enter epoch when addding IPv4 multicast forwarding cache entry
ClosedPublic

Authored by karels on Mar 21 2022, 3:07 PM.
Tags
None
Referenced Files
F160511915: D34624.diff
Thu, Jun 25, 6:09 AM
F160478988: D34624.id104068.diff
Wed, Jun 24, 10:47 PM
Unknown Object (File)
Wed, Jun 24, 10:53 AM
Unknown Object (File)
Tue, Jun 23, 9:36 PM
Unknown Object (File)
Mon, Jun 22, 2:01 AM
Unknown Object (File)
Tue, Jun 16, 5:40 AM
Unknown Object (File)
Thu, Jun 11, 7:27 AM
Unknown Object (File)
Wed, Jun 10, 1:45 AM

Details

Summary

The code path from the IPv4 multicast setsockopt could call ip_output()
without entering an epoch. Specifically, the MRT_ADD_MFC setbsocopt
would call add_mfc(), which in turn called ip_mdq() to send queued
packets. This resulted in an epoch assert failure in ip_output().
Enter an epoch in add_mfc(), and add some epoch asserts to check
for similar failures.

Test Plan

tested with mrouted and rwhod -m

Diff Detail

Repository
rS FreeBSD src repository - subversion
Lint
Lint Passed
Unit
No Test Coverage
Build Status
Buildable 44845
Build 41733: arc lint + arc unit

Event Timeline

bz added a subscriber: bz.

Sounds reasonable to me and I like the extra asserts for documentation purposes; I always wonder if the entire ioctl paths should just acquire/release epoch but that's a totally different can of worms.

This revision is now accepted and ready to land.Mar 21 2022, 3:24 PM
cy added a subscriber: cy.