Defined in 1 files as a function:

Referenced in 7 files:

Smatch caller information:

net/sched/sch_generic.c __ptr_ring_swap_queue() -> __ptr_ring_consume()

Type Parameter Key Value
DATA_SOURCE 0 r $0
TASK_NOT_RUNNING
LOCK2 bh
LOCK2 global &rtnl_mutex

net/sched/sch_generic.c __ptr_ring_swap_queue() -> __ptr_ring_consume()

Type Parameter Key Value
PARAM_VALUE 0 r 4096-ptr_max
PARAM_VALUE 0 r->consumer_head s32min-2147483646
PARAM_VALUE 0 r->size s32min-(-1),1-s32max
PARAM_VALUE 0 *r->queue 0
CAPPED_DATA 0 r->batch 1
CAPPED_DATA 0 r->size 1
DATA_SOURCE 0 r $0
TASK_NOT_RUNNING
LOCK2 bh
LOCK2 global &rtnl_mutex

net/sched/sch_generic.c __skb_array_consume() -> __ptr_ring_consume()

Type Parameter Key Value
PARAM_VALUE 0 r 4096-ptr_max
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 bh

net/sched/sch_generic.c ptr_ring_consume() -> __ptr_ring_consume()

Type Parameter Key Value
PARAM_VALUE 0 r 4096-ptr_max
PARAM_VALUE 0 r->queue 1-u64max
DATA_SOURCE 0 r $0
PREEMPT_ADD <- disables preempt
RX_PATH
TASK_NOT_RUNNING
LOCK2 0 &r->consumer_lock
HALF_LOCKED2 global &rtnl_mutex
TYPE_LOCK (struct ptr_ring)->consumer_lock

net/core/page_pool.c page_pool_refill_alloc_cache() -> __ptr_ring_consume()

Type Parameter Key Value
PARAM_VALUE 0 r 4096-ptr_max
PARAM_VALUE 0 r->size s32min-(-1),1-s32max
BUF_SIZE 0 r 320
CAPPED_DATA 0 r->size 1
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 rcu_read

net/core/page_pool.c ptr_ring_consume() -> __ptr_ring_consume()

Type Parameter Key Value
PARAM_VALUE 0 r 4096-ptr_max
DATA_SOURCE 0 r $0
PREEMPT_ADD <- disables preempt
RX_PATH
TASK_NOT_RUNNING
NO_OVERFLOW_SIMPLE 0 r->size
LOCK2 0 &r->consumer_lock
TYPE_LOCK (struct ptr_ring)->consumer_lock

net/core/page_pool.c ptr_ring_consume_bh() -> __ptr_ring_consume()

Type Parameter Key Value
PARAM_VALUE 0 r 4096-ptr_max
DATA_SOURCE 0 r $0
PREEMPT_ADD <- disables preempt
RX_PATH
TASK_NOT_RUNNING
NO_OVERFLOW_SIMPLE 0 r->size
LOCK2 bh
LOCK2 0 &r->consumer_lock
HALF_LOCKED2 &pool->lock
TYPE_LOCK (struct ptr_ring)->consumer_lock

drivers/net/wireguard/queueing.c ptr_ring_consume() -> __ptr_ring_consume()

Type Parameter Key Value
PARAM_VALUE 0 r 4096-ptr_max
DATA_SOURCE 0 r $0
PREEMPT_ADD <- disables preempt
RX_PATH
TASK_NOT_RUNNING
NO_OVERFLOW_SIMPLE 0 r->size
LOCK2 0 &r->consumer_lock
HALF_LOCKED2 &wg->device_update_lock
HALF_LOCKED2 global &rtnl_mutex
TYPE_LOCK (struct ptr_ring)->consumer_lock

kernel/bpf/cpumap.c __ptr_ring_consume_batched() -> __ptr_ring_consume()

Type Parameter Key Value
PARAM_VALUE 0 r 4096-ptr_max
DATA_SOURCE 0 r $0

kernel/bpf/cpumap.c ptr_ring_consume() -> __ptr_ring_consume()

Type Parameter Key Value
PARAM_VALUE 0 r 4096-ptr_max
DATA_SOURCE 0 r $0
PREEMPT_ADD <- disables preempt
NO_OVERFLOW_SIMPLE 0 r->size
LOCK2 0 &r->consumer_lock
TYPE_LOCK (struct ptr_ring)->consumer_lock

drivers/net/wireguard/send.c ptr_ring_consume_bh() -> __ptr_ring_consume()

Type Parameter Key Value
PARAM_VALUE 0 r 4096-ptr_max
DATA_SOURCE 0 r $0
PREEMPT_ADD <- disables preempt
LOCK2 bh
LOCK2 0 &r->consumer_lock
TYPE_LOCK (struct ptr_ring)->consumer_lock

drivers/vhost/net.c __ptr_ring_consume_batched() -> __ptr_ring_consume()

Type Parameter Key Value
PARAM_VALUE 0 r 4096-ptr_max
DATA_SOURCE 0 r $0
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
LOCK2 &vq->mutex
LOCK2 0 &r->consumer_lock
TYPE_LOCK (struct ptr_ring)->consumer_lock
TYPE_LOCK (struct vhost_virtqueue)->mutex

drivers/net/wireguard/receive.c ptr_ring_consume_bh() -> __ptr_ring_consume()

Type Parameter Key Value
PARAM_VALUE 0 r 4096-ptr_max
DATA_SOURCE 0 r $0
PREEMPT_ADD <- disables preempt
LOCK2 bh
LOCK2 0 &r->consumer_lock
TYPE_LOCK (struct ptr_ring)->consumer_lock

drivers/net/veth.c ptr_ring_consume() -> __ptr_ring_consume()

Type Parameter Key Value
PARAM_VALUE 0 r 4096-ptr_max
DATA_SOURCE 0 r $0
PREEMPT_ADD <- disables preempt
RX_PATH
TASK_NOT_RUNNING
LOCK2 0 &r->consumer_lock
TYPE_LOCK (struct ptr_ring)->consumer_lock

drivers/net/veth.c veth_xdp_rcv() -> __ptr_ring_consume()

Type Parameter Key Value
PARAM_VALUE 0 r 4096-ptr_max
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &ni->dev_lock
HALF_LOCKED2 bh
HALF_LOCKED2 rcu_read

drivers/net/tap.c __ptr_ring_swap_queue() -> __ptr_ring_consume()

Type Parameter Key Value
DATA_SOURCE 0 r $0
LOCK2 bh

drivers/net/tap.c __ptr_ring_swap_queue() -> __ptr_ring_consume()

Type Parameter Key Value
PARAM_VALUE 0 r 4096-ptr_max
PARAM_VALUE 0 r->consumer_head s32min-2147483646
PARAM_VALUE 0 r->size s32min-(-1),1-s32max
PARAM_VALUE 0 *r->queue 0
CAPPED_DATA 0 r->batch 1
CAPPED_DATA 0 r->size 1
DATA_SOURCE 0 r $0
LOCK2 bh

drivers/net/tap.c ptr_ring_consume() -> __ptr_ring_consume()

Type Parameter Key Value
PARAM_VALUE 0 r 4096-ptr_max
DATA_SOURCE 0 r $0
PREEMPT_ADD <- disables preempt
RX_PATH
TASK_NOT_RUNNING
LOCK2 0 &r->consumer_lock
TYPE_LOCK (struct ptr_ring)->consumer_lock

drivers/net/wireguard/device.c ptr_ring_consume() -> __ptr_ring_consume()

Type Parameter Key Value
PARAM_VALUE 0 r 4096-ptr_max
DATA_SOURCE 0 r $0
PREEMPT_ADD <- disables preempt
RX_PATH
TASK_NOT_RUNNING
LOCK2 0 &r->consumer_lock
HALF_LOCKED2 &dev->lock
HALF_LOCKED2 &rdev->wiphy.mtx
HALF_LOCKED2 global &rtnl_mutex
TYPE_LOCK (struct ptr_ring)->consumer_lock

drivers/net/tun.c __ptr_ring_swap_queue() -> __ptr_ring_consume()

Type Parameter Key Value
DATA_SOURCE 0 r $0
HALF_LOCKED2 bh
HALF_LOCKED2 flags
HALF_LOCKED2 0 &r->consumer_lock
HALF_LOCKED2 0 &r->producer_lock

drivers/net/tun.c __ptr_ring_swap_queue() -> __ptr_ring_consume()

Type Parameter Key Value
PARAM_VALUE 0 r 4096-ptr_max
PARAM_VALUE 0 r->consumer_head s32min-2147483646
PARAM_VALUE 0 r->size s32min-(-1),1-s32max
PARAM_VALUE 0 *r->queue 0
CAPPED_DATA 0 r->batch 1
CAPPED_DATA 0 r->size 1
DATA_SOURCE 0 r $0
HALF_LOCKED2 bh
HALF_LOCKED2 flags
HALF_LOCKED2 0 &r->consumer_lock
HALF_LOCKED2 0 &r->producer_lock

drivers/net/tun.c ptr_ring_consume() -> __ptr_ring_consume()

Type Parameter Key Value
PARAM_VALUE 0 r 4096-ptr_max
DATA_SOURCE 0 r $0
PREEMPT_ADD <- disables preempt
RX_PATH
TASK_NOT_RUNNING
LOCK2 0 &r->consumer_lock
HALF_LOCKED2 global &rtnl_mutex
TYPE_LOCK (struct ptr_ring)->consumer_lock

drivers/net/tun.c tun_ring_consume() -> __ptr_ring_consume()

Type Parameter Key Value
PARAM_VALUE 0 r 4096-ptr_max
PREEMPT_ADD <- disables preempt
RX_PATH
TASK_NOT_RUNNING
LOCK2 &tfile->tx_ring.consumer_lock
TYPE_LOCK (struct ptr_ring)->consumer_lock

drivers/gpu/drm/xe/xe_gt_sriov_pf_migration.c ptr_ring_consume() -> __ptr_ring_consume()

Type Parameter Key Value
PARAM_VALUE 0 r 4096-ptr_max
DATA_SOURCE 0 r $0
PREEMPT_ADD <- disables preempt
RX_PATH
TASK_NOT_RUNNING
LOCK2 0 &r->consumer_lock
HALF_LOCKED2 &pool->lock
TYPE_LOCK (struct ptr_ring)->consumer_lock