skbuff.c (987db9f7cd1e77e611b770a569068c43949aa6fd) | skbuff.c (d0d5c0cd1e711c98703f3544c1e6fc1372898de5) |
---|---|
1// SPDX-License-Identifier: GPL-2.0-or-later 2/* ar-skbuff.c: socket buffer destruction handling 3 * 4 * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved. 5 * Written by David Howells (dhowells@redhat.com) 6 */ 7 8#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt --- 10 unchanged lines hidden (view full) --- 19 20/* 21 * Note the allocation or reception of a socket buffer. 22 */ 23void rxrpc_new_skb(struct sk_buff *skb, enum rxrpc_skb_trace op) 24{ 25 const void *here = __builtin_return_address(0); 26 int n = atomic_inc_return(select_skb_count(skb)); | 1// SPDX-License-Identifier: GPL-2.0-or-later 2/* ar-skbuff.c: socket buffer destruction handling 3 * 4 * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved. 5 * Written by David Howells (dhowells@redhat.com) 6 */ 7 8#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt --- 10 unchanged lines hidden (view full) --- 19 20/* 21 * Note the allocation or reception of a socket buffer. 22 */ 23void rxrpc_new_skb(struct sk_buff *skb, enum rxrpc_skb_trace op) 24{ 25 const void *here = __builtin_return_address(0); 26 int n = atomic_inc_return(select_skb_count(skb)); |
27 trace_rxrpc_skb(skb, op, refcount_read(&skb->users), n, here); | 27 trace_rxrpc_skb(skb, op, refcount_read(&skb->users), n, 28 rxrpc_skb(skb)->rx_flags, here); |
28} 29 30/* 31 * Note the re-emergence of a socket buffer from a queue or buffer. 32 */ 33void rxrpc_see_skb(struct sk_buff *skb, enum rxrpc_skb_trace op) 34{ 35 const void *here = __builtin_return_address(0); 36 if (skb) { 37 int n = atomic_read(select_skb_count(skb)); | 29} 30 31/* 32 * Note the re-emergence of a socket buffer from a queue or buffer. 33 */ 34void rxrpc_see_skb(struct sk_buff *skb, enum rxrpc_skb_trace op) 35{ 36 const void *here = __builtin_return_address(0); 37 if (skb) { 38 int n = atomic_read(select_skb_count(skb)); |
38 trace_rxrpc_skb(skb, op, refcount_read(&skb->users), n, here); | 39 trace_rxrpc_skb(skb, op, refcount_read(&skb->users), n, 40 rxrpc_skb(skb)->rx_flags, here); |
39 } 40} 41 42/* 43 * Note the addition of a ref on a socket buffer. 44 */ 45void rxrpc_get_skb(struct sk_buff *skb, enum rxrpc_skb_trace op) 46{ 47 const void *here = __builtin_return_address(0); 48 int n = atomic_inc_return(select_skb_count(skb)); | 41 } 42} 43 44/* 45 * Note the addition of a ref on a socket buffer. 46 */ 47void rxrpc_get_skb(struct sk_buff *skb, enum rxrpc_skb_trace op) 48{ 49 const void *here = __builtin_return_address(0); 50 int n = atomic_inc_return(select_skb_count(skb)); |
49 trace_rxrpc_skb(skb, op, refcount_read(&skb->users), n, here); | 51 trace_rxrpc_skb(skb, op, refcount_read(&skb->users), n, 52 rxrpc_skb(skb)->rx_flags, here); |
50 skb_get(skb); 51} 52 53/* | 53 skb_get(skb); 54} 55 56/* |
57 * Note the dropping of a ref on a socket buffer by the core. 58 */ 59void rxrpc_eaten_skb(struct sk_buff *skb, enum rxrpc_skb_trace op) 60{ 61 const void *here = __builtin_return_address(0); 62 int n = atomic_inc_return(&rxrpc_n_rx_skbs); 63 trace_rxrpc_skb(skb, op, 0, n, 0, here); 64} 65 66/* |
|
54 * Note the destruction of a socket buffer. 55 */ 56void rxrpc_free_skb(struct sk_buff *skb, enum rxrpc_skb_trace op) 57{ 58 const void *here = __builtin_return_address(0); 59 if (skb) { 60 int n; 61 CHECK_SLAB_OKAY(&skb->users); 62 n = atomic_dec_return(select_skb_count(skb)); | 67 * Note the destruction of a socket buffer. 68 */ 69void rxrpc_free_skb(struct sk_buff *skb, enum rxrpc_skb_trace op) 70{ 71 const void *here = __builtin_return_address(0); 72 if (skb) { 73 int n; 74 CHECK_SLAB_OKAY(&skb->users); 75 n = atomic_dec_return(select_skb_count(skb)); |
63 trace_rxrpc_skb(skb, op, refcount_read(&skb->users), n, here); | 76 trace_rxrpc_skb(skb, op, refcount_read(&skb->users), n, 77 rxrpc_skb(skb)->rx_flags, here); |
64 kfree_skb(skb); 65 } 66} 67 68/* 69 * Clear a queue of socket buffers. 70 */ 71void rxrpc_purge_queue(struct sk_buff_head *list) 72{ 73 const void *here = __builtin_return_address(0); 74 struct sk_buff *skb; 75 while ((skb = skb_dequeue((list))) != NULL) { 76 int n = atomic_dec_return(select_skb_count(skb)); 77 trace_rxrpc_skb(skb, rxrpc_skb_purged, | 78 kfree_skb(skb); 79 } 80} 81 82/* 83 * Clear a queue of socket buffers. 84 */ 85void rxrpc_purge_queue(struct sk_buff_head *list) 86{ 87 const void *here = __builtin_return_address(0); 88 struct sk_buff *skb; 89 while ((skb = skb_dequeue((list))) != NULL) { 90 int n = atomic_dec_return(select_skb_count(skb)); 91 trace_rxrpc_skb(skb, rxrpc_skb_purged, |
78 refcount_read(&skb->users), n, here); | 92 refcount_read(&skb->users), n, 93 rxrpc_skb(skb)->rx_flags, here); |
79 kfree_skb(skb); 80 } 81} | 94 kfree_skb(skb); 95 } 96} |