/* * put a packet up for transport-level abort */ void rxrpc_reject_packet(struct rxrpc_local *local, struct sk_buff *skb) { CHECK_SLAB_OKAY(&local->usage); skb_queue_tail(&local->reject_queue, skb); rxrpc_queue_work(&local->processor); }
/* * Note the injected loss of a socket buffer. */ void rxrpc_lose_skb(struct sk_buff *skb, enum rxrpc_skb_trace op) { const void *here = __builtin_return_address(0); if (skb) { int n; CHECK_SLAB_OKAY(&skb->users); n = atomic_dec_return(select_skb_count(op)); trace_rxrpc_skb(skb, op, refcount_read(&skb->users), n, here); kfree_skb(skb); } }
void rxrpc_reject_packet(struct rxrpc_local *local, struct sk_buff *skb) { CHECK_SLAB_OKAY(&local->usage); if (!atomic_inc_not_zero(&local->usage)) { printk("resurrected on reject\n"); BUG(); } skb_queue_tail(&local->reject_queue, skb); rxrpc_queue_work(&local->rejecter); }