Re: [PATCH 0/9] net: bridge: reduce multicast checks in fast path
Nikolay Aleksandrov <[email protected]>
| Newsgroups | gmane.linux.network.bridge,gmane.linux.network,gmane.linux.kernel |
|---|---|
| Message-ID | <[email protected]> |
On 9/3/25 02:00, Linus Lüssing wrote: > On Tue, Sep 02, 2025 at 10:16:04PM +0200, Linus Lüssing wrote: >> On the other hand, moving the spinlock out of / around >> __br_multicast_stop() would lead to a sleeping-while-atomic bug >> when calling timer_delete_sync() in there. And if I were to change >> these to a timer_delete() I guess there is no way to do the sync >> part after unlocking? There is no equivalent to something like the >> flush_workqueue() / drain_workqueue() for workqueues, but for >> simple timers instead, right? > > I'm wondering if it would be sufficient to use timer_del() on > .ndo_stop->br_dev_stop()->br_multicast_stop(). > > And use timer_del_sync() only on > .ndo_uninit->br_dev_uninit()-> br_multicast_dev_del()-> > br_multicast_ctx_deinit() and > br_vlan_put_master()->br_multicast_ctx_deinit(). > > > So basically only sync / wait for timer callbacks to finish if > their context is about to be free'd, on bridge or VLAN destruction? You should make sure the state is sane if the callbacks can be executed after br_multicast_stop(). There are many timers that can affect different aspects, it might be doable but needs careful inspection and code ordering.