Commit 3f3e7ce4ff87c8ea69acaa7700699fb26baa2914

Authored by Jiri Pirko
Committed by David S. Miller
1 parent 6d7581e62f

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) {