Defined in 2 files as a function:

Referenced in 2 files:

Smatch caller information:

drivers/infiniband/hw/mlx4/mcg.c join_group() -> adjust_membership()

Type Parameter Key Value
PARAM_VALUE 0 group 4096-ptr_max
PARAM_VALUE 1 join_state 0-15
PARAM_VALUE 2 inc 1
CAPPED_DATA 1 join_state 1
DATA_SOURCE 0 group $0
NOCHECK_CALL
LOCK2 0 &group->lock
HALF_LOCKED2 &pool->lock
TYPE_LOCK (struct mcast_group)->lock

drivers/infiniband/hw/mlx4/mcg.c leave_group() -> adjust_membership()

Type Parameter Key Value
PARAM_VALUE 0 group 4096-ptr_max
PARAM_VALUE 1 join_state 1-255
PARAM_VALUE 2 inc (-1)
DATA_SOURCE 0 group $0
DATA_SOURCE 1 join_state $2
NOCHECK_CALL
LOCK2 0 &group->lock
HALF_LOCKED2 &pool->lock
TYPE_LOCK (struct mcast_group)->lock

drivers/infiniband/core/multicast.c ib_sa_free_multicast() -> adjust_membership()

Type Parameter Key Value
PARAM_VALUE 0 group 4096-ptr_max
PARAM_VALUE 2 inc (-1)
PREEMPT_ADD <- disables preempt
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
LOCK2 irq
LOCK2 0 &group->lock
TYPE_LOCK (struct mcast_group)->lock

drivers/infiniband/core/multicast.c join_group() -> adjust_membership()

Type Parameter Key Value
PARAM_VALUE 0 group 4096-ptr_max
PARAM_VALUE 2 inc 1
CAPPED_DATA 1 join_state 1
DATA_SOURCE 0 group $0
DATA_SOURCE 1 join_state $2
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
LOCK2 irq
LOCK2 0 &group->lock
TYPE_LOCK (struct mcast_group)->lock

drivers/infiniband/core/multicast.c process_group_error() -> adjust_membership()

Type Parameter Key Value
PARAM_VALUE 0 group 4096-ptr_max
PARAM_VALUE 2 inc (-1)
CAPPED_DATA 0 &group->active_list 1
DATA_SOURCE 0 group $0
PARAM_COMPARE 0 &group->active_list != $0->active_list.next
PREEMPT_ADD <- disables preempt
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
LOCK2 irq
LOCK2 0 &group->lock
TYPE_LOCK (struct mcast_group)->lock