diff options
author | akpm <akpm@linux-foundation.org> | 2022-06-27 10:31:44 -0700 |
---|---|---|
committer | akpm <akpm@linux-foundation.org> | 2022-06-27 10:31:44 -0700 |
commit | ee56c3e8eec166f4e4a2ca842b7804d14f3a0208 (patch) | |
tree | 3bcee4a6090d681b7bbb49d1946c95798f166159 /kernel/trace/rethook.c | |
parent | 00c9d5632277b21ba8802e26c27254cd9d0dfa13 (diff) | |
parent | 03c765b0e3b4cb5063276b086c76f7a612856a9a (diff) | |
download | lwn-ee56c3e8eec166f4e4a2ca842b7804d14f3a0208.tar.gz lwn-ee56c3e8eec166f4e4a2ca842b7804d14f3a0208.zip |
Merge branch 'master' into mm-nonmm-stable
Diffstat (limited to 'kernel/trace/rethook.c')
-rw-r--r-- | kernel/trace/rethook.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/kernel/trace/rethook.c b/kernel/trace/rethook.c index b56833700d23..c69d82273ce7 100644 --- a/kernel/trace/rethook.c +++ b/kernel/trace/rethook.c @@ -154,6 +154,15 @@ struct rethook_node *rethook_try_get(struct rethook *rh) if (unlikely(!handler)) return NULL; + /* + * This expects the caller will set up a rethook on a function entry. + * When the function returns, the rethook will eventually be reclaimed + * or released in the rethook_recycle() with call_rcu(). + * This means the caller must be run in the RCU-availabe context. + */ + if (unlikely(!rcu_is_watching())) + return NULL; + fn = freelist_try_get(&rh->pool); if (!fn) return NULL; |