aboutsummaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
authorDavid Ahern <dsahern@gmail.com>2019-05-02 15:14:15 -0700
committerDavid S. Miller <davem@davemloft.net>2019-05-04 01:38:15 -0400
commit7fcd1e033dacedd520abebc943c960dcf5add3ae (patch)
treeec3bfdbecfae2dba28ba400d99de094bdf25db6a /net
parentcls_matchall: avoid panic when receiving a packet before filter set (diff)
downloadlinux-dev-7fcd1e033dacedd520abebc943c960dcf5add3ae.tar.xz
linux-dev-7fcd1e033dacedd520abebc943c960dcf5add3ae.zip
ipmr_base: Do not reset index in mr_table_dump
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>
Diffstat (limited to 'net')
-rw-r--r--net/ipv4/ipmr_base.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/net/ipv4/ipmr_base.c b/net/ipv4/ipmr_base.c
index 3e614cc824f7..3a1af50bd0a5 100644
--- a/net/ipv4/ipmr_base.c
+++ b/net/ipv4/ipmr_base.c
@@ -335,8 +335,6 @@ next_entry2:
}
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++;
}