netdev
[Top] [All Lists]

[PATCH 6/6] PKT_SCHED: break is not enough to stop walking

To: "David S. Miller" <davem@xxxxxxxxxxxxx>
Subject: [PATCH 6/6] PKT_SCHED: break is not enough to stop walking
From: Thomas Graf <tgraf@xxxxxxx>
Date: Fri, 29 Oct 2004 02:26:28 +0200
Cc: netdev@xxxxxxxxxxx, hadi@xxxxxxxxxx
In-reply-to: <20041029002113.GY12289@xxxxxxxxxxxxxx>
References: <20041029002113.GY12289@xxxxxxxxxxxxxx>
Sender: netdev-bounce@xxxxxxxxxxx
break is not enough to escape from the walking loops, since
multiple encapsulated loops are used to traverse the hash tables.

Signed-off-by: Thomas Graf <tgraf@xxxxxxx>

diff -Nru linux-2.6.10-rc1-bk7.orig/net/sched/cls_fw.c 
linux-2.6.10-rc1-bk7/net/sched/cls_fw.c
--- linux-2.6.10-rc1-bk7.orig/net/sched/cls_fw.c        2004-10-29 
00:43:38.000000000 +0200
+++ linux-2.6.10-rc1-bk7/net/sched/cls_fw.c     2004-10-29 00:50:29.000000000 
+0200
@@ -338,7 +338,7 @@
                        }
                        if (arg->fn(tp, (unsigned long)f, arg) < 0) {
                                arg->stop = 1;
-                               break;
+                               return;
                        }
                        arg->count++;
                }
diff -Nru linux-2.6.10-rc1-bk7.orig/net/sched/cls_route.c 
linux-2.6.10-rc1-bk7/net/sched/cls_route.c
--- linux-2.6.10-rc1-bk7.orig/net/sched/cls_route.c     2004-10-28 
22:03:29.000000000 +0200
+++ linux-2.6.10-rc1-bk7/net/sched/cls_route.c  2004-10-29 01:31:12.000000000 
+0200
@@ -538,7 +538,7 @@
                                        }
                                        if (arg->fn(tp, (unsigned long)f, arg) 
< 0) {
                                                arg->stop = 1;
-                                               break;
+                                               return;
                                        }
                                        arg->count++;
                                }
diff -Nru linux-2.6.10-rc1-bk7.orig/net/sched/cls_rsvp.h 
linux-2.6.10-rc1-bk7/net/sched/cls_rsvp.h
--- linux-2.6.10-rc1-bk7.orig/net/sched/cls_rsvp.h      2004-10-28 
22:03:29.000000000 +0200
+++ linux-2.6.10-rc1-bk7/net/sched/cls_rsvp.h   2004-10-29 01:31:49.000000000 
+0200
@@ -601,7 +601,7 @@
                                        }
                                        if (arg->fn(tp, (unsigned long)f, arg) 
< 0) {
                                                arg->stop = 1;
-                                               break;
+                                               return;
                                        }
                                        arg->count++;
                                }

<Prev in Thread] Current Thread [Next in Thread>