diff --git a/android/abi_gki_aarch64.xml b/android/abi_gki_aarch64.xml
index 24fb6b9a3465..aa802204073f 100644
--- a/android/abi_gki_aarch64.xml
+++ b/android/abi_gki_aarch64.xml
@@ -3716,6 +3716,8 @@
+
+
@@ -4222,14 +4224,6 @@
-
-
-
-
-
-
-
-
@@ -8888,7 +8882,7 @@
-
+
@@ -12473,6 +12467,7 @@
+
@@ -13014,7 +13009,29 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -15068,6 +15085,7 @@
+
@@ -26209,7 +26227,7 @@
-
+
@@ -29784,6 +29802,7 @@
+
@@ -45473,6 +45492,7 @@
+
@@ -49601,32 +49621,7 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
@@ -72008,36 +72003,36 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -72048,7 +72043,7 @@
-
+
@@ -72072,96 +72067,96 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -73495,7 +73490,26 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -76800,7 +76814,7 @@
-
+
@@ -99577,7 +99591,7 @@
-
+
@@ -99594,7 +99608,7 @@
-
+
@@ -99602,7 +99616,7 @@
-
+
@@ -99610,12 +99624,12 @@
-
+
-
+
@@ -99623,7 +99637,7 @@
-
+
@@ -99631,7 +99645,7 @@
-
+
@@ -99648,12 +99662,12 @@
-
+
-
+
@@ -99679,7 +99693,7 @@
-
+
@@ -99690,7 +99704,7 @@
-
+
@@ -99710,7 +99724,7 @@
-
+
@@ -99733,7 +99747,7 @@
-
+
@@ -99747,12 +99761,12 @@
-
+
-
+
@@ -99763,7 +99777,7 @@
-
+
@@ -99777,7 +99791,7 @@
-
+
@@ -99788,7 +99802,7 @@
-
+
@@ -99802,7 +99816,7 @@
-
+
@@ -99816,12 +99830,12 @@
-
+
-
+
@@ -99829,7 +99843,7 @@
-
+
@@ -99843,7 +99857,7 @@
-
+
@@ -99851,7 +99865,7 @@
-
+
@@ -99862,7 +99876,7 @@
-
+
@@ -99879,7 +99893,7 @@
-
+
@@ -99899,7 +99913,7 @@
-
+
@@ -99916,7 +99930,7 @@
-
+
@@ -99927,7 +99941,7 @@
-
+
@@ -99935,7 +99949,7 @@
-
+
@@ -99943,7 +99957,7 @@
-
+
@@ -99951,7 +99965,7 @@
-
+
@@ -99965,7 +99979,7 @@
-
+
@@ -99973,7 +99987,7 @@
-
+
@@ -99984,7 +99998,7 @@
-
+
@@ -100001,7 +100015,7 @@
-
+
@@ -107680,7 +107694,7 @@
-
+
@@ -109402,6 +109416,8 @@
+
+
diff --git a/android/abi_gki_aarch64_type_visibility b/android/abi_gki_aarch64_type_visibility
index 4f826b7b1f87..8a98e59ea81b 100644
--- a/android/abi_gki_aarch64_type_visibility
+++ b/android/abi_gki_aarch64_type_visibility
@@ -2,3 +2,4 @@
# for type visibility
GKI_struct_blk_mq_alloc_data
+ GKI_struct_cgroup_taskset
diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c
index d313d85eb576..7966f96c1834 100644
--- a/drivers/android/vendor_hooks.c
+++ b/drivers/android/vendor_hooks.c
@@ -62,7 +62,9 @@
#include
#include
#include
+#ifdef __GENKSYMS__
#include
+#endif
#include
#include
#include
@@ -104,7 +106,6 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_select_task_rq_fair);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_select_task_rq_rt);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_select_task_rq_dl);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_select_fallback_rq);
-EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_refrigerator);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_scheduler_tick);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_enqueue_task);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_dequeue_task);
@@ -249,8 +250,6 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_uclamp_eff_get);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_uclamp_task_util);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_uclamp_rq_util_with);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_cpufreq_transition);
-EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_cgroup_set_task);
-EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_cgroup_force_kthread_migration);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_syscall_prctl_finished);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_create_worker);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_check_preempt_tick);
@@ -315,7 +314,6 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_tune_swappiness);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_shrink_slab_bypass);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_psi_event);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_psi_group);
-EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_cpuset_fork);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_set_cpus_allowed_comm);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_sched_setaffinity_early);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_free_task);
@@ -333,7 +331,6 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_selinux_is_initialized);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_tune_inactive_ratio);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_update_topology_flags_workfn);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_of_i2c_get_board_info);
-EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_cgroup_attach);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mm_dirty_limits);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_oom_check_panic);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_check_uninterruptible_tasks);
diff --git a/kernel/cgroup/Makefile b/kernel/cgroup/Makefile
index 5d7a76bfbbb7..c8bc5cbe1d45 100644
--- a/kernel/cgroup/Makefile
+++ b/kernel/cgroup/Makefile
@@ -6,3 +6,4 @@ obj-$(CONFIG_CGROUP_PIDS) += pids.o
obj-$(CONFIG_CGROUP_RDMA) += rdma.o
obj-$(CONFIG_CPUSETS) += cpuset.o
obj-$(CONFIG_CGROUP_DEBUG) += debug.o
+obj-$(CONFIG_ANDROID_VENDOR_HOOKS) += vendor_hooks.o
diff --git a/kernel/cgroup/vendor_hooks.c b/kernel/cgroup/vendor_hooks.c
new file mode 100644
index 000000000000..95f7e3410d7d
--- /dev/null
+++ b/kernel/cgroup/vendor_hooks.c
@@ -0,0 +1,37 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/* vendor_hook.c
+ *
+ * Android Vendor Hook Support
+ *
+ * Copyright 2022 Google LLC
+ */
+#ifndef __GENKSYMS__
+#include "cgroup-internal.h"
+#else
+/*
+ * Needed to preserve CRC for cgroup-related hooks
+ */
+#include
+#include <../drivers/gpio/gpiolib.h>
+#endif
+
+#define CREATE_TRACE_POINTS
+#include
+#include
+#include
+
+/*
+ * Export tracepoints that act as a bare tracehook (ie: have no trace event
+ * associated with them) to allow external modules to probe them.
+ */
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_cgroup_set_task);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_cpuset_fork);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_cgroup_force_kthread_migration);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_refrigerator);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_cgroup_attach);
+
+/*
+ * For type visibility
+ */
+const struct cgroup_taskset *GKI_struct_cgroup_taskset;
+EXPORT_SYMBOL_GPL(GKI_struct_cgroup_taskset);