Skip to content

Commit

Permalink
Revert "dyndbg: accept query terms like file=bar and module=foo"
Browse files Browse the repository at this point in the history
This reverts commit 14775b0 as there
were still some parsing problems with it, and the follow-on patch for
it.

Let's revisit it later, just drop it for now.

Cc: <[email protected]>
Cc: Jim Cromie <[email protected]>
Reported-by: Naresh Kamboju <[email protected]>
Cc: Stephen Rothwell <[email protected]>
Fixes: 14775b0 ("dyndbg: accept query terms like file=bar and module=foo")
Signed-off-by: Greg Kroah-Hartman <[email protected]>
  • Loading branch information
gregkh committed Sep 10, 2020
1 parent 7f6e1f3 commit 952e934
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 34 deletions.
1 change: 0 additions & 1 deletion Documentation/admin-guide/dynamic-debug-howto.rst
Original file line number Diff line number Diff line change
Expand Up @@ -156,7 +156,6 @@ against. Possible keywords are:::
``line-range`` cannot contain space, e.g.
"1-30" is valid range but "1 - 30" is not.

``module=foo`` combined keyword=value form is interchangably accepted

The meanings of each keyword are:

Expand Down
53 changes: 20 additions & 33 deletions lib/dynamic_debug.c
Original file line number Diff line number Diff line change
Expand Up @@ -353,8 +353,7 @@ static int check_set(const char **dest, char *src, char *name)

/*
* Parse words[] as a ddebug query specification, which is a series
* of (keyword, value) pairs or combined keyword=value terms,
* chosen from these possibilities:
* of (keyword, value) pairs chosen from these possibilities:
*
* func <function-name>
* file <full-pathname>
Expand All @@ -373,34 +372,22 @@ static int ddebug_parse_query(char *words[], int nwords,
unsigned int i;
int rc = 0;
char *fline;
char *keyword, *arg;

/* check we have an even number of words */
if (nwords % 2 != 0) {
pr_err("expecting pairs of match-spec <value>\n");
return -EINVAL;
}

if (modname)
/* support $modname.dyndbg=<multiple queries> */
query->module = modname;

for (i = 0; i < nwords; i++) {
/* accept keyword=arg */
vpr_info("%d w:%s\n", i, words[i]);

keyword = words[i];
arg = strchr(keyword, '=');
if (arg) {
*arg++ = '\0';
} else {
i++; /* next word is arg */
if (!(i < nwords)) {
pr_err("missing arg to keyword: %s\n", keyword);
return -EINVAL;
}
arg = words[i];
}
vpr_info("%d key:%s arg:%s\n", i, keyword, arg);

if (!strcmp(keyword, "func")) {
rc = check_set(&query->function, arg, "func");
} else if (!strcmp(keyword, "file")) {
if (check_set(&query->filename, arg, "file"))
for (i = 0; i < nwords; i += 2) {
if (!strcmp(words[i], "func")) {
rc = check_set(&query->function, words[i+1], "func");
} else if (!strcmp(words[i], "file")) {
if (check_set(&query->filename, words[i+1], "file"))
return -EINVAL;

/* tail :$info is function or line-range */
Expand All @@ -416,18 +403,18 @@ static int ddebug_parse_query(char *words[], int nwords,
if (parse_linerange(query, fline))
return -EINVAL;
}
} else if (!strcmp(keyword, "module")) {
rc = check_set(&query->module, arg, "module");
} else if (!strcmp(keyword, "format")) {
string_unescape_inplace(arg, UNESCAPE_SPACE |
} else if (!strcmp(words[i], "module")) {
rc = check_set(&query->module, words[i+1], "module");
} else if (!strcmp(words[i], "format")) {
string_unescape_inplace(words[i+1], UNESCAPE_SPACE |
UNESCAPE_OCTAL |
UNESCAPE_SPECIAL);
rc = check_set(&query->format, arg, "format");
} else if (!strcmp(keyword, "line")) {
if (parse_linerange(query, arg))
rc = check_set(&query->format, words[i+1], "format");
} else if (!strcmp(words[i], "line")) {
if (parse_linerange(query, words[i+1]))
return -EINVAL;
} else {
pr_err("unknown keyword \"%s\"\n", keyword);
pr_err("unknown keyword \"%s\"\n", words[i]);
return -EINVAL;
}
if (rc)
Expand Down

0 comments on commit 952e934

Please sign in to comment.