Documented in 1 files:

Defined in 1 files as a prototype:

Defined in 1 files as a function:

Referenced in 2 files:

Smatch caller information:

drivers/net/bonding/bond_3ad.c __get_first_agg() -> netdev_lower_get_first_private_rcu()

Type Parameter Key Value
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
UNITS 0 dev unit_byte
LOCK2 bh
LOCK2 rcu_read
HALF_LOCKED2 &bond->mode_lock
HALF_LOCKED2 &slave->bond->mode_lock
TYPE_LOCK (struct bonding)->mode_lock

drivers/net/bonding/bond_3ad.c bond_3ad_set_carrier() -> netdev_lower_get_first_private_rcu()

Type Parameter Key Value
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
UNITS 0 dev unit_byte
LOCK2 rcu_read
HALF_LOCKED2 &bond->mode_lock
HALF_LOCKED2 &bond->mode_lock
HALF_LOCKED2 bh

drivers/net/bonding/bond_3ad.c bond_3ad_state_machine_handler() -> netdev_lower_get_first_private_rcu()

Type Parameter Key Value
CAPPED_DATA 0 &dev->adj_list.lower 1
PARAM_COMPARE 0 &dev->adj_list.lower != $0->adj_list.lower.next
PREEMPT_ADD <- disables preempt
UNITS 0 dev unit_byte
LOCK2 &bond->mode_lock
LOCK2 bh
LOCK2 rcu_read
HALF_LOCKED2 &pool->lock
TYPE_LOCK (struct bonding)->mode_lock

drivers/net/bonding/bond_procfs.c bond_info_seq_next() -> netdev_lower_get_first_private_rcu()

Type Parameter Key Value
RX_PATH
TASK_NOT_RUNNING
UNITS 0 dev unit_byte
LOCK2 &seq->lock
TYPE_LOCK (struct seq_file)->lock

drivers/net/bonding/bond_main.c bond_ab_arp_probe() -> netdev_lower_get_first_private_rcu()

Type Parameter Key Value
UNITS 0 dev unit_byte
LOCK2 rcu_read
HALF_LOCKED2 &pool->lock

drivers/net/bonding/bond_main.c bond_neigh_init() -> netdev_lower_get_first_private_rcu()

Type Parameter Key Value
RX_PATH
TASK_NOT_RUNNING
UNITS 0 dev unit_byte
LOCK2 rcu_read