Commit 3f3e7ce4ff87c8ea69acaa7700699fb26baa2914
Committed by
David S. Miller
1 parent
6d7581e62f
Exists in
smarc-l5.0.0_1.0.0-ga
and in
5 other branches
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 d90f889e9c (team: handle sending port list in the same way option list is sent) Signed-off-by: Jiri Pirko <jiri@resnulli.us> Signed-off-by: David S. Miller <davem@davemloft.net>
Showing 1 changed file with 4 additions and 3 deletions Side-by-side Diff
drivers/net/team/team.c
... | ... | @@ -2374,7 +2374,8 @@ |
2374 | 2374 | bool incomplete; |
2375 | 2375 | int i; |
2376 | 2376 | |
2377 | - port = list_first_entry(&team->port_list, struct team_port, list); | |
2377 | + port = list_first_entry_or_null(&team->port_list, | |
2378 | + struct team_port, list); | |
2378 | 2379 | |
2379 | 2380 | start_again: |
2380 | 2381 | err = __send_and_alloc_skb(&skb, team, portid, send_func); |
... | ... | @@ -2402,8 +2403,8 @@ |
2402 | 2403 | err = team_nl_fill_one_port_get(skb, one_port); |
2403 | 2404 | if (err) |
2404 | 2405 | goto errout; |
2405 | - } else { | |
2406 | - list_for_each_entry(port, &team->port_list, list) { | |
2406 | + } else if (port) { | |
2407 | + list_for_each_entry_from(port, &team->port_list, list) { | |
2407 | 2408 | err = team_nl_fill_one_port_get(skb, port); |
2408 | 2409 | if (err) { |
2409 | 2410 | if (err == -EMSGSIZE) { |