diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c index 794b556cfd7f..6ebc82a0ff43 100644 --- a/drivers/android/vendor_hooks.c +++ b/drivers/android/vendor_hooks.c @@ -91,6 +91,8 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_prepare_prio_fork); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_finish_prio_fork); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_set_user_nice); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_setscheduler); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_sk_alloc); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_sk_free); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_nf_conn_alloc); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_nf_conn_free); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_arch_set_freq_scale); diff --git a/include/trace/hooks/net.h b/include/trace/hooks/net.h index b2f68a1d8987..6715aa4eb668 100644 --- a/include/trace/hooks/net.h +++ b/include/trace/hooks/net.h @@ -19,10 +19,15 @@ DECLARE_HOOK(android_vh_kfree_skb, TP_PROTO(struct sk_buff *skb), TP_ARGS(skb)); struct nf_conn; +struct sock; DECLARE_RESTRICTED_HOOK(android_rvh_nf_conn_alloc, TP_PROTO(struct nf_conn *nf_conn), TP_ARGS(nf_conn), 1); DECLARE_RESTRICTED_HOOK(android_rvh_nf_conn_free, TP_PROTO(struct nf_conn *nf_conn), TP_ARGS(nf_conn), 1); +DECLARE_RESTRICTED_HOOK(android_rvh_sk_alloc, + TP_PROTO(struct sock *sock), TP_ARGS(sock), 1); +DECLARE_RESTRICTED_HOOK(android_rvh_sk_free, + TP_PROTO(struct sock *sock), TP_ARGS(sock), 1); /* macro versions of hooks are no longer required */ diff --git a/net/core/sock.c b/net/core/sock.c index e640a68f34ba..ffc1e1e8ec73 100644 --- a/net/core/sock.c +++ b/net/core/sock.c @@ -136,6 +136,7 @@ #include #include +#include #include #include @@ -1678,6 +1679,8 @@ static struct sock *sk_prot_alloc(struct proto *prot, gfp_t priority, if (security_sk_alloc(sk, family, priority)) goto out_free; + trace_android_rvh_sk_alloc(sk); + if (!try_module_get(prot->owner)) goto out_free_sec; sk_tx_queue_clear(sk); @@ -1687,6 +1690,7 @@ static struct sock *sk_prot_alloc(struct proto *prot, gfp_t priority, out_free_sec: security_sk_free(sk); + trace_android_rvh_sk_free(sk); out_free: if (slab != NULL) kmem_cache_free(slab, sk); @@ -1706,6 +1710,7 @@ static void sk_prot_free(struct proto *prot, struct sock *sk) cgroup_sk_free(&sk->sk_cgrp_data); mem_cgroup_sk_free(sk); security_sk_free(sk); + trace_android_rvh_sk_free(sk); if (slab != NULL) kmem_cache_free(slab, sk); else