[ovs-dev] [PATCH 1/2] ofproto: fix the crash of process ovs-vswitchd

Binbin Xu xu.binbin1 at zte.com.cn
Tue Sep 20 19:54:05 UTC 2016


topology:
                      +----------------+
            +-------->| SDN Controller |<--------------+
            |         +----------------+               |
            |	                                       |
+-----------|-----+			   +-----------|-----+
| +-----+   |     |                        | +-----+   |     |
| | VM1 |   |     |                        | | VM2 |   |     |
| +-----+   |     |                        | +-----+   |     |
|    ^      V     |                        |    ^      V     |
|    |   +-----+  |                        |    |   +-----+  |
|    +-> | OVS |  |                        |    +-> | OVS |  |
|        +-----+  |                        |        +-----+  |
|           ^     |                        |           ^     |
+-----------|-----+                        +-----------|-----+
	    | Nic                                   Nic|
            +------------------------------------------+

We start the communication between VM1 and VM2, for example, ICMP.
At the meantime, disconnect OVS and SDN controller, and reconnect
them again, the process ovs-vswitchd crashes.

backtrace:
0  0x00007f658082ffe4 in cls_rule_make_invisible_in_version ()
1  0x00007f65807f6bb3 in delete_flows_start__ ()
2  0x00007f65807f7ee9 in ofproto_group_mod_start ()
3  0x00007f65807fa07b in handle_openflow ()
4  0x00007f658082119b in connmgr_run ()
5  0x00007f65807f3ba6 in ofproto_run ()
6  0x00007f65807e101c in bridge_run__ ()
7  0x00007f65807e715d in bridge_run ()
8  0x00007f658065784d in main ()

Signed-off-by: Binbin Xu <xu.binbin1 at zte.com.cn>
---
 ofproto/ofproto.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
 mode change 100644 => 100755 ofproto/ofproto.c

diff --git a/ofproto/ofproto.c b/ofproto/ofproto.c
old mode 100644
new mode 100755
index 9d62b72..93e268d
--- a/ofproto/ofproto.c
+++ b/ofproto/ofproto.c
@@ -8124,7 +8124,7 @@ ofproto_rule_remove__(struct ofproto *ofproto, struct rule *rule)
     if (actions->has_groups) {
         const struct ofpact_group *a;
 
-        OFPACT_FOR_EACH_TYPE (a, GROUP, actions->ofpacts,
+        OFPACT_FOR_EACH_TYPE_FLATTENED(a, GROUP, actions->ofpacts,
                                         actions->ofpacts_len) {
             struct ofgroup *group;
 
-- 
2.9.3




More information about the dev mailing list