ipv6: properly check return value in inet6_dump_all()
Make sure we call fib6_dump_end() if it happens that skb->len is zero. rtnl_dump_all() can reset cb->args on the next loop iteration there. Fixes:08e814c9e8
("net/ipv6: Bail early if user only wants cloned entries") Fixes:ae677bbb44
("net: Don't return invalid table id error when dumping all families") Signed-off-by: Alexey Kodanev <alexey.kodanev@oracle.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
5e1acb4afa
commit
e22d0bfa09
|
@ -591,7 +591,7 @@ static int inet6_dump_fib(struct sk_buff *skb, struct netlink_callback *cb)
|
|||
|
||||
/* fib entries are never clones */
|
||||
if (arg.filter.flags & RTM_F_CLONED)
|
||||
return skb->len;
|
||||
goto out;
|
||||
|
||||
w = (void *)cb->args[2];
|
||||
if (!w) {
|
||||
|
@ -621,7 +621,7 @@ static int inet6_dump_fib(struct sk_buff *skb, struct netlink_callback *cb)
|
|||
tb = fib6_get_table(net, arg.filter.table_id);
|
||||
if (!tb) {
|
||||
if (arg.filter.dump_all_families)
|
||||
return skb->len;
|
||||
goto out;
|
||||
|
||||
NL_SET_ERR_MSG_MOD(cb->extack, "FIB table does not exist");
|
||||
return -ENOENT;
|
||||
|
|
Loading…
Reference in New Issue