On Sun, 9 Aug 2020 21:49:24 +0800 Hillf Danton <hdan...@sina.com> wrote:
> + > +static void br_workfn(struct work_struct *w) > +{ > + struct br_work *brw = container_of(w, struct br_work, work); > + > + rtnl_lock(); > + brw->err = brw->set(brw->br, brw->val); > + if (!brw->err) > + netdev_state_change(brw->br->dev); > + rtnl_unlock(); > + > + brw->done = true; > + wake_up(&brw->waitq); > +} Sorry, this is unsafe. This has the potential of running when bridge itself has been deleted.