]> asedeno.scripts.mit.edu Git - linux.git/blobdiff - kernel/trace/trace_probe.c
Merge tag 'armsoc-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc
[linux.git] / kernel / trace / trace_probe.c
index baf58a3612c070c682dca25e9aafbc3a75c74a13..905b10af5d5c5470b0b317aadc03937eb76f48ab 100644 (file)
@@ -178,6 +178,16 @@ void __trace_probe_log_err(int offset, int err_type)
        if (!command)
                return;
 
+       if (trace_probe_log.index >= trace_probe_log.argc) {
+               /**
+                * Set the error position is next to the last arg + space.
+                * Note that len includes the terminal null and the cursor
+                * appaers at pos + 1.
+                */
+               pos = len;
+               offset = 0;
+       }
+
        /* And make a command string from argv array */
        p = command;
        for (i = 0; i < trace_probe_log.argc; i++) {
@@ -1084,6 +1094,12 @@ int trace_probe_compare_arg_type(struct trace_probe *a, struct trace_probe *b)
 {
        int i;
 
+       /* In case of more arguments */
+       if (a->nr_args < b->nr_args)
+               return a->nr_args + 1;
+       if (a->nr_args > b->nr_args)
+               return b->nr_args + 1;
+
        for (i = 0; i < a->nr_args; i++) {
                if ((b->nr_args <= i) ||
                    ((a->args[i].type != b->args[i].type) ||