On Wed, Oct 9, 2013 at 11:07 PM, Pravin Shelar <pshe...@nicira.com> wrote: > On Wed, Oct 9, 2013 at 9:11 PM, Alexei Starovoitov <a...@plumgrid.com> wrote: >> On Wed, Oct 9, 2013 at 8:02 PM, Pravin Shelar <pshe...@nicira.com> wrote: >>> On Tue, Oct 8, 2013 at 8:07 PM, Alexei Starovoitov <a...@plumgrid.com> >>> wrote: >>>> The combination of two commits >>>> >>>> commit 8e4e1713e4 >>>> ("openvswitch: Simplify datapath locking.") >>>> >>>> and >>>> >>>> commit 2537b4dd0a >>>> ("openvswitch:: link upper device for port devices") >>>> >>>> introduced a bug where upper_dev wasn't unlinked upon >>>> netdev_unregister notification >>>> >>>> The following steps: >>>> >>>> modprobe openvswitch >>>> ovs-dpctl add-dp test >>>> ip tuntap add dev tap1 mode tap >>>> ovs-dpctl add-if test tap1 >>>> ip tuntap del dev tap1 mode tap >>>> >>>> are causing multiple warnings: >>>> diff --git a/net/openvswitch/dp_notify.c b/net/openvswitch/dp_notify.c >>>> index c323567..e9380bd 100644 >>>> --- a/net/openvswitch/dp_notify.c >>>> +++ b/net/openvswitch/dp_notify.c >>>> @@ -88,6 +88,11 @@ static int dp_device_event(struct notifier_block >>>> *unused, unsigned long event, >>>> return NOTIFY_DONE; >>>> >>>> if (event == NETDEV_UNREGISTER) { >>>> + /* rx_handler_unregister and upper_dev_unlink immediately >>>> */ >>>> + if (dev->reg_state == NETREG_UNREGISTERING) >>>> + ovs_netdev_unlink_dev(vport); >>>> + >>> >>> Rather than doing vport destroy here, we can just unlink upper device >>> and let workq do rest of work. >> >> isn't it what it's doing? > > I meant just call netdev_upper_dev_unlink() here in event handler and > rest of vport destroy can be done in workq.
netdev_upper_dev_unlink() without netdev_rx_handler_unregister() ?! that's dangerous. If that is acceptable, then there was no reason to link them in the first place. notifier asks to unregister. imo the only acceptable deferred task here is to delay dev_put, since ovs structures are still referring to it. _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev