|
@@ -3384,6 +3384,12 @@ ftrace_match_addr(struct ftrace_hash *hash, unsigned long ip, int remove)
|
|
|
return add_hash_entry(hash, ip);
|
|
|
}
|
|
|
|
|
|
+static void ftrace_ops_update_code(struct ftrace_ops *ops)
|
|
|
+{
|
|
|
+ if (ops->flags & FTRACE_OPS_FL_ENABLED && ftrace_enabled)
|
|
|
+ ftrace_run_update_code(FTRACE_UPDATE_CALLS);
|
|
|
+}
|
|
|
+
|
|
|
static int
|
|
|
ftrace_set_hash(struct ftrace_ops *ops, unsigned char *buf, int len,
|
|
|
unsigned long ip, int remove, int reset, int enable)
|
|
@@ -3426,9 +3432,8 @@ ftrace_set_hash(struct ftrace_ops *ops, unsigned char *buf, int len,
|
|
|
|
|
|
mutex_lock(&ftrace_lock);
|
|
|
ret = ftrace_hash_move(ops, enable, orig_hash, hash);
|
|
|
- if (!ret && ops->flags & FTRACE_OPS_FL_ENABLED
|
|
|
- && ftrace_enabled)
|
|
|
- ftrace_run_update_code(FTRACE_UPDATE_CALLS);
|
|
|
+ if (!ret)
|
|
|
+ ftrace_ops_update_code(ops);
|
|
|
|
|
|
mutex_unlock(&ftrace_lock);
|
|
|
|
|
@@ -3655,9 +3660,8 @@ int ftrace_regex_release(struct inode *inode, struct file *file)
|
|
|
mutex_lock(&ftrace_lock);
|
|
|
ret = ftrace_hash_move(iter->ops, filter_hash,
|
|
|
orig_hash, iter->hash);
|
|
|
- if (!ret && (iter->ops->flags & FTRACE_OPS_FL_ENABLED)
|
|
|
- && ftrace_enabled)
|
|
|
- ftrace_run_update_code(FTRACE_UPDATE_CALLS);
|
|
|
+ if (!ret)
|
|
|
+ ftrace_ops_update_code(iter->ops);
|
|
|
|
|
|
mutex_unlock(&ftrace_lock);
|
|
|
}
|