On Fri, 23 Mar 2018 19:30:34 -0700 Alexei Starovoitov <ast@xxxxxx> wrote: > +static void *for_each_tracepoint_range(struct tracepoint * const *begin, > + struct tracepoint * const *end, > + void *(*fct)(struct tracepoint *tp, void *priv), > + void *priv) > { > struct tracepoint * const *iter; > + void *ret; > > if (!begin) > - return; > - for (iter = begin; iter < end; iter++) > - fct(*iter, priv); > + return NULL; > + for (iter = begin; iter < end; iter++) { > + ret = fct(*iter, priv); > + if (ret) > + return ret; So you just stopped the loop here. You have an inconsistent state. What about the functions that were called before. How do you undo them? Or what about the rest that haven't been touched. This function gives no feedback to the caller. -- Steve > + } > + return NULL; > } -- To unsubscribe from this list: send the line "unsubscribe linux-api" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html