Defined in 1 files as a function:

Referenced in 2 files:

Smatch caller information:

net/ipv6/ip6_fib.c fib6_add_rt2node() -> rt6_qualify_for_ecmp()

Type Parameter Key Value
PARAM_VALUE 0 f6i 4096-ptr_max
PARAM_VALUE 0 f6i->fib6_nh->nh_common.nhc_gw_family 0-255
PARAM_VALUE 0 f6i->nh 0,4096-ptr_max
BUF_SIZE 0 f6i (-1),200,304
BUF_SIZE 0 f6i (-1),200,304
CAPPED_DATA 0 f6i->fib6_dst.plen 1
CAPPED_DATA 0 f6i->fib6_src.plen 1
DATA_SOURCE 0 f6i $1
NOSPEC 0 f6i->fib6_dst.plen
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
USER_DATA 0 f6i->fib6_dst.plen 0-128[c]
USER_DATA 0 f6i->fib6_flags 0-u32max[c]
LOCK2 &table->tb6_lock
LOCK2 bh
HALF_LOCKED2 0 &f6i->nh->lock
TYPE_LOCK (struct fib6_table)->tb6_lock

net/ipv6/ip6_fib.c fib6_add_rt2node() -> rt6_qualify_for_ecmp()

Type Parameter Key Value
PARAM_VALUE 0 f6i 4096-ptr_max
CAPPED_DATA 0 f6i->fib6_metric 1
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
LOCK2 &table->tb6_lock
LOCK2 bh
HALF_LOCKED2 &rt->nh->lock
TYPE_LOCK (struct fib6_table)->tb6_lock

net/ipv6/ip6_fib.c fib6_add_rt2node() -> rt6_qualify_for_ecmp()

Type Parameter Key Value
PARAM_VALUE 0 f6i 4096-ptr_max
CAPPED_DATA 0 f6i->fib6_metric 1
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
LOCK2 &table->tb6_lock
LOCK2 bh
TYPE_LOCK (struct fib6_table)->tb6_lock

net/ipv6/ip6_fib.c fib6_add_rt2node() -> rt6_qualify_for_ecmp()

Type Parameter Key Value
PARAM_VALUE 0 f6i 4096-ptr_max
CAPPED_DATA 0 f6i->fib6_metric 1
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
LOCK2 &table->tb6_lock
LOCK2 bh
HALF_LOCKED2 &rt->nh->lock
TYPE_LOCK (struct fib6_table)->tb6_lock

net/ipv6/ip6_fib.c fib6_add_rt2node() -> rt6_qualify_for_ecmp()

Type Parameter Key Value
PARAM_VALUE 0 f6i 4096-ptr_max
CAPPED_DATA 0 f6i->fib6_metric 1
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
LOCK2 &table->tb6_lock
LOCK2 bh
HALF_LOCKED2 &rt->nh->lock
TYPE_LOCK (struct fib6_table)->tb6_lock

net/ipv6/ip6_fib.c fib6_del_route() -> rt6_qualify_for_ecmp()

Type Parameter Key Value
PARAM_VALUE 0 f6i 4096-ptr_max
CAPPED_DATA 0 f6i->fib6_metric 1

net/ipv6/route.c ip6_route_mpath_should_notify() -> rt6_qualify_for_ecmp()

Type Parameter Key Value
PARAM_VALUE 0 f6i 0,4096-ptr_max
DATA_SOURCE 0 f6i $0
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &net->xfrm.xfrm_cfg_mutex
HALF_LOCKED2 &pool->lock
HALF_LOCKED2 global &audit_cmd_mutex.lock
HALF_LOCKED2 global &cb_lock
HALF_LOCKED2 global &crypto_cfg_mutex
HALF_LOCKED2 global &hwsim_phys_lock
HALF_LOCKED2 global &rtnl_mutex
HALF_LOCKED2 global &rx_queue_mutex

net/ipv6/route.c ip6_route_mpath_should_notify() -> rt6_qualify_for_ecmp()

Type Parameter Key Value
PARAM_VALUE 0 f6i 4096-ptr_max
CAPPED_DATA 0 f6i->fib6_metric 1
RX_PATH
TASK_NOT_RUNNING
LOCK2 rcu_read
HALF_LOCKED2 &net->xfrm.xfrm_cfg_mutex
HALF_LOCKED2 &pool->lock
HALF_LOCKED2 global &audit_cmd_mutex.lock
HALF_LOCKED2 global &cb_lock
HALF_LOCKED2 global &crypto_cfg_mutex
HALF_LOCKED2 global &hwsim_phys_lock
HALF_LOCKED2 global &rtnl_mutex
HALF_LOCKED2 global &rx_queue_mutex

net/ipv6/route.c rt6_multipath_first_sibling() -> rt6_qualify_for_ecmp()

Type Parameter Key Value
PARAM_VALUE 0 f6i 4096-ptr_max
CAPPED_DATA 0 f6i->fib6_metric 1
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
LOCK2 bh
HALF_LOCKED2 &table->tb6_lock
HALF_LOCKED2 rcu_read
TYPE_LOCK (struct fib6_table)->tb6_lock

net/ipv6/route.c rt6_multipath_first_sibling_rcu() -> rt6_qualify_for_ecmp()

Type Parameter Key Value
PARAM_VALUE 0 f6i 4096-ptr_max
CAPPED_DATA 0 f6i->fib6_metric 1
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 rcu_read