From 2f55d5cbe232170c7807465caf6617eca8980bd6 Mon Sep 17 00:00:00 2001 From: Liujie Xie Date: Fri, 6 May 2022 14:04:56 +0800 Subject: [PATCH] ANDROID: vendor_hooks: Add hooks for mutex Current might be preempt after spin_unlock(&lock->wait_lock), we want to add a hook after wake_up_q(&wake_q) in which to disable owner's privilege in scheduler. Bug: 231647361 Change-Id: I3016da2fd31b8bdc8435df4e800f91381a64af4f Signed-off-by: Liujie Xie --- drivers/android/vendor_hooks.c | 1 + include/trace/hooks/dtask.h | 3 +++ kernel/locking/mutex.c | 1 + 3 files changed, 5 insertions(+) diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c index de3a032822f5..eb50db428e8c 100644 --- a/drivers/android/vendor_hooks.c +++ b/drivers/android/vendor_hooks.c @@ -241,6 +241,7 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_sync_txn_recvd); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_build_sched_domains); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_alter_mutex_list_add); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mutex_unlock_slowpath); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mutex_unlock_slowpath_end); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_rwsem_wake_finish); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_do_undefinstr); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_do_ptrauth_fault); diff --git a/include/trace/hooks/dtask.h b/include/trace/hooks/dtask.h index 3c49af0e6560..675634238fbd 100644 --- a/include/trace/hooks/dtask.h +++ b/include/trace/hooks/dtask.h @@ -54,6 +54,9 @@ DECLARE_HOOK(android_vh_alter_mutex_list_add, DECLARE_HOOK(android_vh_mutex_unlock_slowpath, TP_PROTO(struct mutex *lock), TP_ARGS(lock)); +DECLARE_HOOK(android_vh_mutex_unlock_slowpath_end, + TP_PROTO(struct mutex *lock, struct task_struct *next), + TP_ARGS(lock, next)); /* macro versions of hooks are no longer required */ diff --git a/kernel/locking/mutex.c b/kernel/locking/mutex.c index 016f40c76a83..fac88b1e134e 100644 --- a/kernel/locking/mutex.c +++ b/kernel/locking/mutex.c @@ -1293,6 +1293,7 @@ static noinline void __sched __mutex_unlock_slowpath(struct mutex *lock, unsigne spin_unlock(&lock->wait_lock); wake_up_q(&wake_q); + trace_android_vh_mutex_unlock_slowpath_end(lock, next); } #ifndef CONFIG_DEBUG_LOCK_ALLOC