Merge tag 'trace-v5.0-pre' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt...
authorLinus Torvalds <torvalds@linux-foundation.org>
Thu, 7 Mar 2019 17:55:56 +0000 (09:55 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Thu, 7 Mar 2019 17:55:56 +0000 (09:55 -0800)
Pull tracing fix/cleanup from Steven Rostedt:
 "This is a "pre-pull". It's only one small fix and one small clean up.
  I'm testing a few small patches for my real pull request which will
  come at a later time. The second patch depends on your tree anyway so
  I included it along with the urgent fix.

  A small fix Pavel sent me back in august was accidentally lost due to
  it being placed with some other patches that failed some tests, and
  was rebased out of my local tree. Which was a regression that caused
  event filters not to handle negative numbers.

  The clean up is from Masami that realized that the code in kprobes
  that calls probe_mem_read() wrapper, which is to be used in code used
  by both kprobes and uprobes, was only in code for kprobes. It should
  not use the wrapper there, but instead call probe_kernel_read()
  directly"

* tag 'trace-v5.0-pre' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace:
  tracing/kprobes: Use probe_kernel_read instead of probe_mem_read
  tracing: Fix event filters and triggers to handle negative numbers

kernel/trace/trace_events_filter.c
kernel/trace/trace_kprobe.c

index 27821480105e6fc86ef3d75a4d4abaf7a1fa0e69..217ef481fbbb68261fab5468c63a5bba4faee099 100644 (file)
@@ -1301,7 +1301,7 @@ static int parse_pred(const char *str, void *data,
                /* go past the last quote */
                i++;
 
-       } else if (isdigit(str[i])) {
+       } else if (isdigit(str[i]) || str[i] == '-') {
 
                /* Make sure the field is not a string */
                if (is_string_field(field)) {
@@ -1314,6 +1314,9 @@ static int parse_pred(const char *str, void *data,
                        goto err_free;
                }
 
+               if (str[i] == '-')
+                       i++;
+
                /* We allow 0xDEADBEEF */
                while (isalnum(str[i]))
                        i++;
index 9eaf07f99212f797df29fb5f0b93f475c48f441f..99592c27465e1156a0dce1dd2d953aef9ef3e8c8 100644 (file)
@@ -865,7 +865,7 @@ fetch_store_strlen(unsigned long addr)
        u8 c;
 
        do {
-               ret = probe_mem_read(&c, (u8 *)addr + len, 1);
+               ret = probe_kernel_read(&c, (u8 *)addr + len, 1);
                len++;
        } while (c && ret == 0 && len < MAX_STRING_SIZE);