diff options
| -rw-r--r-- | include/trace/events/skb.h | 20 | ||||
| -rw-r--r-- | net/core/datagram.c | 3 |
2 files changed, 23 insertions, 0 deletions
diff --git a/include/trace/events/skb.h b/include/trace/events/skb.h index e499863b966..4b2be6dc76f 100644 --- a/include/trace/events/skb.h +++ b/include/trace/events/skb.h | |||
| @@ -5,6 +5,7 @@ | |||
| 5 | #define _TRACE_SKB_H | 5 | #define _TRACE_SKB_H |
| 6 | 6 | ||
| 7 | #include <linux/skbuff.h> | 7 | #include <linux/skbuff.h> |
| 8 | #include <linux/netdevice.h> | ||
| 8 | #include <linux/tracepoint.h> | 9 | #include <linux/tracepoint.h> |
| 9 | 10 | ||
| 10 | /* | 11 | /* |
| @@ -34,6 +35,25 @@ TRACE_EVENT(kfree_skb, | |||
| 34 | __entry->skbaddr, __entry->protocol, __entry->location) | 35 | __entry->skbaddr, __entry->protocol, __entry->location) |
| 35 | ); | 36 | ); |
| 36 | 37 | ||
| 38 | TRACE_EVENT(skb_copy_datagram_iovec, | ||
| 39 | |||
| 40 | TP_PROTO(const struct sk_buff *skb, int len), | ||
| 41 | |||
| 42 | TP_ARGS(skb, len), | ||
| 43 | |||
| 44 | TP_STRUCT__entry( | ||
| 45 | __field( const void *, skbaddr ) | ||
| 46 | __field( int, len ) | ||
| 47 | ), | ||
| 48 | |||
| 49 | TP_fast_assign( | ||
| 50 | __entry->skbaddr = skb; | ||
| 51 | __entry->len = len; | ||
| 52 | ), | ||
| 53 | |||
| 54 | TP_printk("skbaddr=%p len=%d", __entry->skbaddr, __entry->len) | ||
| 55 | ); | ||
| 56 | |||
| 37 | #endif /* _TRACE_SKB_H */ | 57 | #endif /* _TRACE_SKB_H */ |
| 38 | 58 | ||
| 39 | /* This part must be outside protection */ | 59 | /* This part must be outside protection */ |
diff --git a/net/core/datagram.c b/net/core/datagram.c index b0fe69211ee..1c6cf3a1a4f 100644 --- a/net/core/datagram.c +++ b/net/core/datagram.c | |||
| @@ -55,6 +55,7 @@ | |||
| 55 | #include <net/checksum.h> | 55 | #include <net/checksum.h> |
| 56 | #include <net/sock.h> | 56 | #include <net/sock.h> |
| 57 | #include <net/tcp_states.h> | 57 | #include <net/tcp_states.h> |
| 58 | #include <trace/events/skb.h> | ||
| 58 | 59 | ||
| 59 | /* | 60 | /* |
| 60 | * Is a socket 'connection oriented' ? | 61 | * Is a socket 'connection oriented' ? |
| @@ -284,6 +285,8 @@ int skb_copy_datagram_iovec(const struct sk_buff *skb, int offset, | |||
| 284 | int i, copy = start - offset; | 285 | int i, copy = start - offset; |
| 285 | struct sk_buff *frag_iter; | 286 | struct sk_buff *frag_iter; |
| 286 | 287 | ||
| 288 | trace_skb_copy_datagram_iovec(skb, len); | ||
| 289 | |||
| 287 | /* Copy header. */ | 290 | /* Copy header. */ |
| 288 | if (copy > 0) { | 291 | if (copy > 0) { |
| 289 | if (copy > len) | 292 | if (copy > len) |
