[ovs-git] Open vSwitch: netdev: Fix deadlock when netdev_dump_queues() callback calls into netdev. (master)
dev at openvswitch.org
dev at openvswitch.org
Wed Aug 28 04:54:51 UTC 2013
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "Open vSwitch".
The branch, master has been updated
via 89454bf477d1dc95357792677ccbd4d483ab42d8 (commit)
from 8037acb42c04aa50011a2b34d1fe4a715c73a4b7 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 89454bf477d1dc95357792677ccbd4d483ab42d8
Diffs: http://openvswitch.org/cgi-bin/gitweb.cgi?p=openvswitch;a=commitdiff;h=89454bf477d1dc95357792677ccbd4d483ab42d8
Author: Ben Pfaff <blp at nicira.com>
netdev: Fix deadlock when netdev_dump_queues() callback calls into netdev.
We have a call chain like this:
iface_configure_qos() calls
netdev_dump_queues(), which calls
netdev_linux_dump_queues(), which calls back through 'cb' to
qos_unixctl_show_cb(), which calls
netdev_delete_queue(), which calls
netdev_linux_delete_queue().
Both netdev_dump_queues() and netdev_linux_delete_queue() take the same
mutex in the same netdev, which deadlocks.
This commit fixes the problem by getting rid of the callback.
netdev_linux_dump_queue_stats() would benefit from the same treatment but
it's less urgent because I don't see any callbacks from that function that
call back into a netdev function.
Bug #19319.
Reported-by: Scott Hendricks <shendricks at vmware.com>
Signed-off-by: Ben Pfaff <blp at nicira.com>
-----------------------------------------------------------------------
Summary of changes:
lib/netdev-dummy.c | 4 ++-
lib/netdev-linux.c | 79 +++++++++++++++++++++++++++++++++------------
lib/netdev-provider.h | 49 +++++++++++++++++++---------
lib/netdev-vport.c | 4 ++-
lib/netdev.c | 86 ++++++++++++++++++++++++++++++++++++++-----------
lib/netdev.h | 41 ++++++++++++++++++++---
vswitchd/bridge.c | 62 +++++++++++++++--------------------
7 files changed, 226 insertions(+), 99 deletions(-)
hooks/post-receive
--
Open vSwitch
More information about the git
mailing list