diff mbox

[ovs-dev] tnl-port: Fix list iteration.

Message ID 1442079656-1343-1-git-send-email-pshelar@nicira.com
State Accepted
Headers show

Commit Message

Pravin B Shelar Sept. 12, 2015, 5:40 p.m. UTC
Fixes Segmentation fault in
tnl_port_map_run () at lib/tnl-ports.c:403

Reported-by: Jesse Gross <jesse@nicira.com>
Signed-off-by: Pravin B Shelar <pshelar@nicira.com>
---
 lib/tnl-ports.c |    8 ++++----
 1 files changed, 4 insertions(+), 4 deletions(-)

Comments

Jesse Gross Sept. 13, 2015, 3:43 p.m. UTC | #1
On Sat, Sep 12, 2015 at 10:40 AM, Pravin B Shelar <pshelar@nicira.com> wrote:
> Fixes Segmentation fault in
> tnl_port_map_run () at lib/tnl-ports.c:403
>
> Reported-by: Jesse Gross <jesse@nicira.com>
> Signed-off-by: Pravin B Shelar <pshelar@nicira.com>

Thanks, that fixes the problem for me.

Acked-by: Jesse Gross <jesse@nicira.com>
Pravin B Shelar Sept. 14, 2015, 5:46 p.m. UTC | #2
On Sun, Sep 13, 2015 at 8:43 AM, Jesse Gross <jesse@nicira.com> wrote:
> On Sat, Sep 12, 2015 at 10:40 AM, Pravin B Shelar <pshelar@nicira.com> wrote:
>> Fixes Segmentation fault in
>> tnl_port_map_run () at lib/tnl-ports.c:403
>>
>> Reported-by: Jesse Gross <jesse@nicira.com>
>> Signed-off-by: Pravin B Shelar <pshelar@nicira.com>
>
> Thanks, that fixes the problem for me.
>
> Acked-by: Jesse Gross <jesse@nicira.com>

Thanks. I pushed the patch to master.
diff mbox

Patch

diff --git a/lib/tnl-ports.c b/lib/tnl-ports.c
index f510f1e..59d5354 100644
--- a/lib/tnl-ports.c
+++ b/lib/tnl-ports.c
@@ -357,11 +357,11 @@  delete_ipdev(struct ip_device *ip_dev)
 void
 tnl_port_map_insert_ipdev(const char dev_name[])
 {
-    struct ip_device *ip_dev;
+    struct ip_device *ip_dev, *next;
 
     ovs_mutex_lock(&mutex);
 
-    LIST_FOR_EACH(ip_dev, node, &addr_list) {
+    LIST_FOR_EACH_SAFE(ip_dev, next, node, &addr_list) {
         if (!strcmp(netdev_get_name(ip_dev->dev), dev_name)) {
             if (ip_dev->change_seq == netdev_get_change_seq(ip_dev->dev)) {
                 goto out;
@@ -394,10 +394,10 @@  tnl_port_map_delete_ipdev(const char dev_name[])
 void
 tnl_port_map_run(void)
 {
-    struct ip_device *ip_dev;
+    struct ip_device *ip_dev, *next;
 
     ovs_mutex_lock(&mutex);
-    LIST_FOR_EACH(ip_dev, node, &addr_list) {
+    LIST_FOR_EACH_SAFE(ip_dev, next, node, &addr_list) {
         char dev_name[IFNAMSIZ];
 
         if (ip_dev->change_seq == netdev_get_change_seq(ip_dev->dev)) {