lkml.org 
[lkml]   [2014]   [Jun]   [17]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 3.13 025/212] ipv6: fib: fix fib dump restart
    Date
    3.13.11.4 -stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Kumar Sundararajan <kumar@fb.com>

    [ Upstream commit 1c2658545816088477e91860c3a645053719cb54 ]

    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.

    Signed-off-by: Kumar Sundararajan <kumar@fb.com>
    Signed-off-by: Chris Mason <clm@fb.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Kamal Mostafa <kamal@canonical.com>
    ---
    net/ipv6/ip6_fib.c | 3 ++-
    1 file changed, 2 insertions(+), 1 deletion(-)

    diff --git a/net/ipv6/ip6_fib.c b/net/ipv6/ip6_fib.c
    index 5550a81..804ba68 100644
    --- a/net/ipv6/ip6_fib.c
    +++ b/net/ipv6/ip6_fib.c
    @@ -1418,7 +1418,7 @@ static int fib6_walk_continue(struct fib6_walker_t *w)

    if (w->skip) {
    w->skip--;
    - continue;
    + goto skip;
    }

    err = w->func(w);
    @@ -1428,6 +1428,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)
    --
    1.9.1


    \
     
     \ /
      Last update: 2014-06-18 01:01    [W:2.882 / U:0.884 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site