On Tue, 10 Sep 2019 08:33:23 +0800 Changbin Du <changbin...@gmail.com> wrote:
> > > > bool ftrace_lookup_ip(struct ftrace_hash *hash, unsigned long ip, bool > > empty_result) > > { > > if (ftrace_hash_empty(hash)) > > return empty_result; > > > > return __ftrace_lookup_ip(hash, ip); > > } > > > We must add another similar function since ftrace_lookup_ip() returns a > pointer. > > bool ftrace_contains_ip(struct ftrace_hash *hash, unsigned long ip, > bool empty_result) > { > if (ftrace_hash_empty(hash)) > return empty_result; > > return !!__ftrace_lookup_ip(hash, ip); > } > > But after this, it's a little overkill I think. It is not much simpler than > before. > Do you still want this then? > > Or... static struct ftrace_func_entry empty_func_entry; #define EMPTY_FUNC_ENTRY = &empty_func_entry; [..] * @empty_result: return NULL if false or EMPTY_FUNC_ENTRY on true [..] * @empty_result should be false, unless this is used for testing if the ip * exists in the hash, and an empty hash should be considered true. * This is useful when the empty hash is considered to contain all addresses. [..] struct ftrace_func_entry * ftrace_lookup_ip(struct ftrace_hash *hash, unsigned long ip, bool empty_result) { if (ftrace_hash_empty(hash)) return empty_result ? EMPTY_FUNC_ENTRY : NULL; return __ftrace_lookup_ip(hash, ip); } But looking at this more, I'm going back to not touching the code in this location, because __ftrace_lookup_ip() is static, where as ftrace_lookup_ip() is not, and this is in a very fast path, and I rather keep it open coded. Lets just drop the first hunk of your patch. The second hunk is fine. -- Steve