]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
ipmr_base: Do not reset index in mr_table_dump
authorDavid Ahern <dsahern@gmail.com>
Thu, 2 May 2019 22:14:15 +0000 (15:14 -0700)
committerDavid S. Miller <davem@davemloft.net>
Sat, 4 May 2019 05:38:15 +0000 (01:38 -0400)
e is the counter used to save the location of a dump when an
skb is filled. Once the walk of the table is complete, mr_table_dump
needs to return without resetting that index to 0. Dump of a specific
table is looping because of the reset because there is no way to
indicate the walk of the table is done.

Move the reset to the caller so the dump of each table starts at 0,
but the loop counter is maintained if a dump fills an skb.

Fixes: e1cedae1ba6b0 ("ipmr: Refactor mr_rtm_dumproute")
Signed-off-by: David Ahern <dsahern@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv4/ipmr_base.c

index 3e614cc824f77948493a7867009591b3b09a0179..3a1af50bd0a5dc3c5199e85aae8d73b535cb5f99 100644 (file)
@@ -335,8 +335,6 @@ int mr_table_dump(struct mr_table *mrt, struct sk_buff *skb,
        }
        spin_unlock_bh(lock);
        err = 0;
-       e = 0;
-
 out:
        cb->args[1] = e;
        return err;
@@ -374,6 +372,7 @@ int mr_rtm_dumproute(struct sk_buff *skb, struct netlink_callback *cb,
                err = mr_table_dump(mrt, skb, cb, fill, lock, filter);
                if (err < 0)
                        break;
+               cb->args[1] = 0;
 next_table:
                t++;
        }