Skip to contentSkip to conversation

ipv6: fib: fix fib dump restart

PATCH In review Chris Mason 3 participants 6 messages Apr 24, 2014

Subsystems (3)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 ipv6: fib: fix fib dump restart

From: Kumar Sundararajan <[email protected]>

When the ipv6 fib changes during a table dump, the walk is restarted and the number of nodes dumped are skipped. But the existing code doesn't advance to the next node after a node is skipped. This can cause the dump to loop or produce lots of duplicates when the fib is modified during the dump.

This change advances the walk to the next node if the current node is skipped after a restart.

---
 net/ipv6/ip6_fib.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
net/ipv6/ip6_fib.c +2 -1
index 34e0ded..87891f5 100644
@@ -1459,7 +1459,7 @@ static int fib6_walk_continue(struct fib6_walker_t *w)
 
 				if (w->skip) {
 					w->skip--;
-					continue;
+					goto skip;
 				}
 
 				err = w->func(w);
@@ -1469,6 +1469,7 @@ static int fib6_walk_continue(struct fib6_walker_t *w)
 				w->count++;
 				continue;
 			}
+skip:
 			w->state = FWS_U;
 		case FWS_U:
 			if (fn == w->root)
Signature · 1 line
1.8.1
#1 lore raw
Quoted 8 lines · Chris Mason

From: Kumar Sundararajan <[email protected]>

When the ipv6 fib changes during a table dump, the walk is restarted and the number of nodes dumped are skipped. But the existing code doesn't advance to the next node after a node is skipped. This can cause the dump to loop or produce lots of duplicates when the fib is modified during the dump.

Quoted 7 lines

This change advances the walk to the next node if the current node is skipped after a restart.

---
 net/ipv6/ip6_fib.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

Hi Chris

Who wrote the patch exactly ?

If Kumar did, you need to put the
"Signed-off-by: Kumar Sundararajan <[email protected]>" before your own

#2 lore raw
Quoted 17 lines · Eric Dumazet
Quoted 8 lines · Chris Mason

From: Kumar Sundararajan <[email protected]>

When the ipv6 fib changes during a table dump, the walk is restarted and the number of nodes dumped are skipped. But the existing code doesn't advance to the next node after a node is skipped. This can cause the dump to loop or produce lots of duplicates when the fib is modified during the dump.

Quoted 7 lines

This change advances the walk to the next node if the current node is skipped after a restart.

---
  net/ipv6/ip6_fib.c | 3 ++-
  1 file changed, 2 insertions(+), 1 deletion(-)
Quoted 6 lines

Hi Chris

Who wrote the patch exactly ?

If Kumar did, you need to put the
"Signed-off-by: Kumar Sundararajan <[email protected]>" before your own

Kumar did write it, I'll grab a sob from him.

-chris

#3 lore raw
In reply to Chris Mason
Quoted 12 lines · Chris Mason

From: Kumar Sundararajan <[email protected]>

When the ipv6 fib changes during a table dump, the walk is restarted and the number of nodes dumped are skipped. But the existing code doesn't advance to the next node after a node is skipped. This can cause the dump to loop or produce lots of duplicates when the fib is modified during the dump.

This change advances the walk to the next node if the current node is skipped after a restart.

Not sure if patchwork will do the right thing, but adding Kumar's signed-off-by:

-chris

maintainer
#4 lore raw

From: Chris Mason <[email protected]>
Date: Thu, 24 Apr 2014 16:26:12 -0400

Quoted 11 lines · Chris Mason
Quoted 10 lines

From: Kumar Sundararajan <[email protected]>

When the ipv6 fib changes during a table dump, the walk is restarted and the number of nodes dumped are skipped. But the existing code doesn't advance to the next node after a node is skipped. This can
cause the dump to loop or produce lots of duplicates when the fib is modified during the dump.

Quoted 6 lines
Quoted 3 lines

This change advances the walk to the next node if the current node is skipped after a restart.

Not sure if patchwork will do the right thing, but adding Kumar's signed-off-by:

I just checked, it does do the right thing, just FYI.

maintainer
#5 lore raw
In reply to Chris Mason

From: Chris Mason <[email protected]>
Date: Thu, 24 Apr 2014 09:48:53 -0400

Quoted 9 lines

From: Kumar Sundararajan <[email protected]>

When the ipv6 fib changes during a table dump, the walk is restarted and the number of nodes dumped are skipped. But the existing code doesn't advance to the next node after a node is skipped. This can cause the dump to loop or produce lots of duplicates when the fib is modified during the dump.

Quoted 4 lines

This change advances the walk to the next node if the current node is skipped after a restart.

Applied and queue up for -stable, thanks.