diff options
Diffstat (limited to 'net/core/sock.c')
-rw-r--r-- | net/core/sock.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/net/core/sock.c b/net/core/sock.c index 6e819780c232..bc745d00ea4d 100644 --- a/net/core/sock.c +++ b/net/core/sock.c | |||
@@ -128,6 +128,8 @@ | |||
128 | 128 | ||
129 | #include <linux/filter.h> | 129 | #include <linux/filter.h> |
130 | 130 | ||
131 | #include <trace/events/sock.h> | ||
132 | |||
131 | #ifdef CONFIG_INET | 133 | #ifdef CONFIG_INET |
132 | #include <net/tcp.h> | 134 | #include <net/tcp.h> |
133 | #endif | 135 | #endif |
@@ -158,7 +160,7 @@ static const char *const af_family_key_strings[AF_MAX+1] = { | |||
158 | "sk_lock-AF_TIPC" , "sk_lock-AF_BLUETOOTH", "sk_lock-IUCV" , | 160 | "sk_lock-AF_TIPC" , "sk_lock-AF_BLUETOOTH", "sk_lock-IUCV" , |
159 | "sk_lock-AF_RXRPC" , "sk_lock-AF_ISDN" , "sk_lock-AF_PHONET" , | 161 | "sk_lock-AF_RXRPC" , "sk_lock-AF_ISDN" , "sk_lock-AF_PHONET" , |
160 | "sk_lock-AF_IEEE802154", "sk_lock-AF_CAIF" , "sk_lock-AF_ALG" , | 162 | "sk_lock-AF_IEEE802154", "sk_lock-AF_CAIF" , "sk_lock-AF_ALG" , |
161 | "sk_lock-AF_MAX" | 163 | "sk_lock-AF_NFC" , "sk_lock-AF_MAX" |
162 | }; | 164 | }; |
163 | static const char *const af_family_slock_key_strings[AF_MAX+1] = { | 165 | static const char *const af_family_slock_key_strings[AF_MAX+1] = { |
164 | "slock-AF_UNSPEC", "slock-AF_UNIX" , "slock-AF_INET" , | 166 | "slock-AF_UNSPEC", "slock-AF_UNIX" , "slock-AF_INET" , |
@@ -174,7 +176,7 @@ static const char *const af_family_slock_key_strings[AF_MAX+1] = { | |||
174 | "slock-AF_TIPC" , "slock-AF_BLUETOOTH", "slock-AF_IUCV" , | 176 | "slock-AF_TIPC" , "slock-AF_BLUETOOTH", "slock-AF_IUCV" , |
175 | "slock-AF_RXRPC" , "slock-AF_ISDN" , "slock-AF_PHONET" , | 177 | "slock-AF_RXRPC" , "slock-AF_ISDN" , "slock-AF_PHONET" , |
176 | "slock-AF_IEEE802154", "slock-AF_CAIF" , "slock-AF_ALG" , | 178 | "slock-AF_IEEE802154", "slock-AF_CAIF" , "slock-AF_ALG" , |
177 | "slock-AF_MAX" | 179 | "slock-AF_NFC" , "slock-AF_MAX" |
178 | }; | 180 | }; |
179 | static const char *const af_family_clock_key_strings[AF_MAX+1] = { | 181 | static const char *const af_family_clock_key_strings[AF_MAX+1] = { |
180 | "clock-AF_UNSPEC", "clock-AF_UNIX" , "clock-AF_INET" , | 182 | "clock-AF_UNSPEC", "clock-AF_UNIX" , "clock-AF_INET" , |
@@ -190,7 +192,7 @@ static const char *const af_family_clock_key_strings[AF_MAX+1] = { | |||
190 | "clock-AF_TIPC" , "clock-AF_BLUETOOTH", "clock-AF_IUCV" , | 192 | "clock-AF_TIPC" , "clock-AF_BLUETOOTH", "clock-AF_IUCV" , |
191 | "clock-AF_RXRPC" , "clock-AF_ISDN" , "clock-AF_PHONET" , | 193 | "clock-AF_RXRPC" , "clock-AF_ISDN" , "clock-AF_PHONET" , |
192 | "clock-AF_IEEE802154", "clock-AF_CAIF" , "clock-AF_ALG" , | 194 | "clock-AF_IEEE802154", "clock-AF_CAIF" , "clock-AF_ALG" , |
193 | "clock-AF_MAX" | 195 | "clock-AF_NFC" , "clock-AF_MAX" |
194 | }; | 196 | }; |
195 | 197 | ||
196 | /* | 198 | /* |
@@ -292,6 +294,7 @@ int sock_queue_rcv_skb(struct sock *sk, struct sk_buff *skb) | |||
292 | if (atomic_read(&sk->sk_rmem_alloc) + skb->truesize >= | 294 | if (atomic_read(&sk->sk_rmem_alloc) + skb->truesize >= |
293 | (unsigned)sk->sk_rcvbuf) { | 295 | (unsigned)sk->sk_rcvbuf) { |
294 | atomic_inc(&sk->sk_drops); | 296 | atomic_inc(&sk->sk_drops); |
297 | trace_sock_rcvqueue_full(sk, skb); | ||
295 | return -ENOMEM; | 298 | return -ENOMEM; |
296 | } | 299 | } |
297 | 300 | ||
@@ -1736,6 +1739,8 @@ suppress_allocation: | |||
1736 | return 1; | 1739 | return 1; |
1737 | } | 1740 | } |
1738 | 1741 | ||
1742 | trace_sock_exceed_buf_limit(sk, prot, allocated); | ||
1743 | |||
1739 | /* Alas. Undo changes. */ | 1744 | /* Alas. Undo changes. */ |
1740 | sk->sk_forward_alloc -= amt * SK_MEM_QUANTUM; | 1745 | sk->sk_forward_alloc -= amt * SK_MEM_QUANTUM; |
1741 | atomic_long_sub(amt, prot->memory_allocated); | 1746 | atomic_long_sub(amt, prot->memory_allocated); |