r272211 introduced a LOR in lagg_get_counter by acquiring the lagg softc
lock after previously acquiring the if_addr lock in sysctl_iflist. My
solution is to opportunistically acquire the lagg softc. If it can't be
locked, then return an old copy of the counters. The user will see what
looks like a lull in traffic, but it will "catch up" the next time that
he checks.
Details
Details
Diff Detail
Diff Detail
- Repository
- rS FreeBSD src repository - subversion
- Lint
Lint Passed - Unit
No Test Coverage - Build Status
Buildable 5670 Build 5955: CI src build Jenkins Build 5954: arc lint + arc unit
Event Timeline
Comment Actions
This is not the correct fix. The bug lies in a higher layer; the stack must never call into the ifnet layer with the if_addr_lock already held. I see how to fix the upper layer, so I'll take that.