Page MenuHomeFreeBSD

Fix sleepq_add panic happening with too wide net epoch.
ClosedPublic

Authored by melifaro on Oct 17 2020, 11:28 AM.
Tags
None
Referenced Files
Unknown Object (File)
Thu, Oct 9, 10:59 PM
Unknown Object (File)
Wed, Oct 1, 2:06 PM
Unknown Object (File)
Mon, Sep 29, 2:39 PM
Unknown Object (File)
Fri, Sep 26, 5:25 PM
Unknown Object (File)
Thu, Sep 25, 10:22 PM
Unknown Object (File)
Tue, Sep 23, 4:42 PM
Unknown Object (File)
Fri, Sep 19, 12:11 AM
Unknown Object (File)
Sep 15 2025, 4:55 AM

Details

Summary

Fix panic described in kern/250413 introduced by D25445.

Diff Detail

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

Event Timeline

melifaro added a reviewer: network.
melifaro added a subscriber: kib.

It seems the only solution here is taking ifnet reference. I'm not sure about PCB, probably it can not disappear here.

sys/netinet/in_mcast.c
2087 ↗(On Diff #78344)

IN_MULTI_LOCK() is sx lock, so you still can sleep while in epoch.

This revision is now accepted and ready to land.Oct 17 2020, 5:01 PM
head/sys/netinet/in_mcast.c
2085

I believe it would be not too hard to move this EXIT to before corresponding breaks inside switch. Current structure where ENTER is done inside switch, and you expect all cases escape with epoch entered, is too weird/fragile.