teamd: tdport has to exist if item->per_port is set in __find_by_item_path

The issue can be reproduced by:

  # teamd -c '{"device":"team0", "runner":{"name":"lacp"}}' &
  # teamdctl team0 state item set runner.aggregator.selected true

teamd process will abort in lacp_port_state_aggregator_selected_set()
as gsc->info.tdport was set to NULL in teamd_state_item_value_set()

The item 'runner.aggregator.selected' is of per_port = true, and it
shouldn't allow to call its setter/getter().

This patch is to add the check for it in __find_by_item_path() called
by teamd_state_item_value_get/set().

Fixes: 6c00aaf02553 ("teamd: add support for state item write operation")
Signed-off-by: Xin Long <>
Signed-off-by: Jiri Pirko <>
1 file changed