Defined in 1 files as a function:

Referenced in 8 files:

Smatch caller information:

net/sched/sch_generic.c ptr_ring_produce() -> __ptr_ring_produce()

Type Parameter Key Value
PARAM_VALUE 0 r 4096-ptr_max
PARAM_VALUE 1 ptr 4096-ptr_max
BUF_SIZE 1 ptr (-1)-s32max
BUF_SIZE 1 ptr (-1)-s32max
DATA_SOURCE 0 r $0
DATA_SOURCE 1 ptr $1
PREEMPT_ADD <- disables preempt
RX_PATH
TASK_NOT_RUNNING
LOCK2 0 &r->producer_lock
HALF_LOCKED2 rcu_read
TYPE_LOCK (struct ptr_ring)->producer_lock

net/core/page_pool.c page_pool_recycle_in_ring() -> __ptr_ring_produce()

Type Parameter Key Value
PARAM_VALUE 0 r 4096-ptr_max
PARAM_VALUE 1 ptr 1-u64max
DATA_SOURCE 1 ptr $1
PREEMPT_ADD <- disables preempt
RX_PATH
TASK_NOT_RUNNING
UNITS 1 ptr unit_byte
LOCK2 &pool->ring.producer_lock
HALF_LOCKED2 &q->lock
HALF_LOCKED2 bh
HALF_LOCKED2 rcu_read
TYPE_LOCK (struct ptr_ring)->producer_lock

net/core/page_pool.c page_pool_recycle_ring_bulk() -> __ptr_ring_produce()

Type Parameter Key Value
PARAM_VALUE 0 r 4096-ptr_max
PREEMPT_ADD <- disables preempt
RX_PATH
TASK_NOT_RUNNING
LOCK2 &pool->ring.producer_lock
HALF_LOCKED2 &dring->lock
HALF_LOCKED2 &lan966x->tx_lock
HALF_LOCKED2 bh
HALF_LOCKED2 flags
HALF_LOCKED2 rcu_read
TYPE_LOCK (struct ptr_ring)->producer_lock

kernel/bpf/cpumap.c bq_flush_to_queue() -> __ptr_ring_produce()

Type Parameter Key Value
PARAM_VALUE 0 r 4096-ptr_max
BUF_SIZE 1 ptr 1-s32max
PREEMPT_ADD <- disables preempt
RX_PATH
TASK_NOT_RUNNING
LOCK2 0 &r->producer_lock
HALF_LOCKED2 bh
TYPE_LOCK (struct ptr_ring)->producer_lock

kernel/bpf/cpumap.c ptr_ring_produce() -> __ptr_ring_produce()

Type Parameter Key Value
PARAM_VALUE 0 r 4096-ptr_max
PARAM_VALUE 1 ptr 4096-ptr_max
DATA_SOURCE 0 r $0
DATA_SOURCE 1 ptr $1
PREEMPT_ADD <- disables preempt
RX_PATH
TASK_NOT_RUNNING
LOCK2 0 &r->producer_lock
HALF_LOCKED2 bh
HALF_LOCKED2 rcu_read
TYPE_LOCK (struct ptr_ring)->producer_lock

drivers/net/wireguard/send.c ptr_ring_produce_bh() -> __ptr_ring_produce()

Type Parameter Key Value
PARAM_VALUE 0 r 4096-ptr_max
PARAM_VALUE 1 ptr 4096-8628176513917739007,8628176513917739009-ptr_max
DATA_SOURCE 0 r $0
DATA_SOURCE 1 ptr $1
PREEMPT_ADD <- disables preempt
RX_PATH
TASK_NOT_RUNNING
UNITS 1 ptr unit_byte
LOCK2 bh
LOCK2 rcu_read
LOCK2 0 &r->producer_lock
HALF_LOCKED2 &wg->device_update_lock
HALF_LOCKED2 &wg->static_identity.lock
HALF_LOCKED2 global &rtnl_mutex
TYPE_LOCK (struct ptr_ring)->producer_lock

drivers/net/wireguard/receive.c ptr_ring_produce_bh() -> __ptr_ring_produce()

Type Parameter Key Value
PARAM_VALUE 0 r 4096-ptr_max
PARAM_VALUE 1 ptr 4096-ptr_max
BUF_SIZE 1 ptr (-1)-s32max
BUF_SIZE 1 ptr (-1)-s32max
DATA_SOURCE 0 r $0
DATA_SOURCE 1 ptr $1
PREEMPT_ADD <- disables preempt
RX_PATH
TASK_NOT_RUNNING
UNITS 1 ptr unit_byte
LOCK2 bh
LOCK2 0 &r->producer_lock
HALF_LOCKED2 rcu_read
TYPE_LOCK (struct ptr_ring)->producer_lock

drivers/net/wireguard/receive.c wg_packet_receive() -> __ptr_ring_produce()

Type Parameter Key Value
PARAM_VALUE 0 r 4096-ptr_max
PARAM_VALUE 1 ptr 4096-ptr_max
BUF_SIZE 1 ptr (-1)-s32max
DATA_SOURCE 1 ptr $1
RX_PATH
TASK_NOT_RUNNING
UNITS 1 ptr unit_byte
LOCK2 &wg->handshake_queue.ring.producer_lock
LOCK2 bh
TYPE_LOCK (struct ptr_ring)->producer_lock

drivers/net/veth.c ptr_ring_produce() -> __ptr_ring_produce()

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

drivers/net/veth.c veth_xdp_xmit() -> __ptr_ring_produce()

Type Parameter Key Value
PARAM_VALUE 0 r 4096-ptr_max
DATA_SOURCE 1 ptr r veth_xdp_to_ptr
PREEMPT_ADD <- disables preempt
RX_PATH
TASK_NOT_RUNNING
LOCK2 &rq->xdp_ring.producer_lock
LOCK2 rcu_read
TYPE_LOCK (struct ptr_ring)->producer_lock

drivers/net/tap.c ptr_ring_produce() -> __ptr_ring_produce()

Type Parameter Key Value
PARAM_VALUE 0 r 4096-ptr_max
PARAM_VALUE 1 ptr 4096-ptr_max
DATA_SOURCE 0 r $0
DATA_SOURCE 1 ptr $1
PREEMPT_ADD <- disables preempt
RX_PATH
TASK_NOT_RUNNING
UNITS 1 ptr unit_byte
LOCK2 rcu_read
LOCK2 0 &r->producer_lock
HALF_LOCKED2 bh
TYPE_LOCK (struct ptr_ring)->producer_lock

drivers/net/tun.c tun_net_xmit() -> __ptr_ring_produce()

Type Parameter Key Value
PARAM_VALUE 0 r 4096-ptr_max
PARAM_VALUE 1 ptr 4096-ptr_max
BUF_SIZE 1 ptr (-1)-s32max
DATA_SOURCE 1 ptr $0
PREEMPT_ADD <- disables preempt
RX_PATH
TASK_NOT_RUNNING
LOCK2 &tfile->tx_ring.producer_lock
LOCK2 rcu_read
HALF_LOCKED2 &dev->tx_global_lock
HALF_LOCKED2 &txq->_xmit_lock
HALF_LOCKED2 bh
HALF_LOCKED2 flags
TYPE_LOCK (struct ptr_ring)->producer_lock

drivers/net/tun.c tun_xdp_xmit() -> __ptr_ring_produce()

Type Parameter Key Value
PARAM_VALUE 0 r 4096-ptr_max
DATA_SOURCE 1 ptr r tun_xdp_to_ptr
PREEMPT_ADD <- disables preempt
RX_PATH
TASK_NOT_RUNNING
LOCK2 &tfile->tx_ring.producer_lock
LOCK2 rcu_read
HALF_LOCKED2 bh
TYPE_LOCK (struct ptr_ring)->producer_lock

drivers/gpu/drm/xe/xe_gt_sriov_pf_migration.c ptr_ring_produce() -> __ptr_ring_produce()

Type Parameter Key Value
PARAM_VALUE 0 r 4096-ptr_max
PARAM_VALUE 1 ptr 4096-ptr_max
BUF_SIZE 1 ptr (-1),64
BUF_SIZE 1 ptr (-1),64
DATA_SOURCE 0 r $0
DATA_SOURCE 1 ptr $1
PREEMPT_ADD <- disables preempt
LOCK2 0 &r->producer_lock
TYPE_LOCK (struct ptr_ring)->producer_lock