提交 3f3e7ce4 编写于 作者: J Jiri Pirko 提交者: David S. Miller

team: fix port list dump for big number of ports

In case the port list dump does not fit into one skb currently the
dump would start over again. Fix this by continue from the last dumped
port.

Introduced by commit d90f889e (team: handle sending port list in the
same way option list is sent)
Signed-off-by: NJiri Pirko <jiri@resnulli.us>
Signed-off-by: NDavid S. Miller <davem@davemloft.net>
上级 6d7581e6
......@@ -2374,7 +2374,8 @@ static int team_nl_send_port_list_get(struct team *team, u32 portid, u32 seq,
bool incomplete;
int i;
port = list_first_entry(&team->port_list, struct team_port, list);
port = list_first_entry_or_null(&team->port_list,
struct team_port, list);
start_again:
err = __send_and_alloc_skb(&skb, team, portid, send_func);
......@@ -2402,8 +2403,8 @@ static int team_nl_send_port_list_get(struct team *team, u32 portid, u32 seq,
err = team_nl_fill_one_port_get(skb, one_port);
if (err)
goto errout;
} else {
list_for_each_entry(port, &team->port_list, list) {
} else if (port) {
list_for_each_entry_from(port, &team->port_list, list) {
err = team_nl_fill_one_port_get(skb, port);
if (err) {
if (err == -EMSGSIZE) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册