Re: [Patch 2/3] ksym_tracer: Allow bulk removal using empty or wildcard string input

K.Prasad
2009-06-20T13:38:17Z

On Sat, Jun 20, 2009 at 01:16:41AM +0200, Frederic Weisbecker wrote:
> On Fri, Jun 19, 2009 at 10:55:12PM +0530, K.Prasad wrote:
> > Accept an empty string or wildcard input (of the form *:---) as input for
> > ksym_trace_filter to perform bulk removal of all monitored entries.
> >
> > Signed-off-by: K.Prasad <prasad@linux.vnet.ibm.com>
> > ---
> > kernel/trace/trace_ksym.c | 75 +++++++++++++++++++++++++---------------------
> > 1 file changed, 42 insertions(+), 33 deletions(-)
> >
<snipped>
> > /*
> > * There can be several possible malformed requests and we attempt to capture
> > * all of them. We enumerate some of the rules
> > @@ -163,7 +191,7 @@ static int parse_ksym_trace_str(char *in
> > /* Check for malformed request: (2), (1) and (5) */
> > if ((!input_string) ||
> > (strlen(input_string) != (KSYM_TRACER_OP_LEN + 1)) ||
> > - (*addr == 0))
> > + ((*addr == 0) && strncmp(*ksymname, "*", strlen("*"))))
>
>
> I guess you can just use strcmp() here, no? As in other use
> of this same strncmp() in this patch.
>

I see both functions being used in the kernel at random (what happened
to all the buffer-overflow scare?)! Isn't an strncmp() preferred over
the plain strcmp() (atleast it cannot be the other way round)?

> > @@ -251,9 +280,11 @@ static ssize_t ksym_trace_filter_write(s
> > unsigned long ksym_addr = 0;
> > int ret, op, changed = 0;
> >
> > - /* Ignore echo "" > ksym_trace_filter */
> > - if (count == 0)
> > - return 0;
> > + /* Clear all breakpoint requests if echo "" > ksym_trace_filter */
> > + if (count == 1) {
> > + ksym_trace_reset(NULL);
> > + return count;
> > + }
>
>
> And then if I do:
>
> echo -n 1 > ksym_trace_filter
>
> That would also clean these breakpoints?
>
> Frederic.
>

No, I did not think about this scenario and I am changing the patch to
handle such a case. Also, the value of 'count' cannot be '0' as such
inputs are ignored (e.g. echo -n "" > ksym_trace_filter is simply
ignored) and so I'm removing the check for the same.

Please find a new version of the patch sent here:
http://lkml.org/lkml/2009/6/20/73.

Thanks,
K.Prasad