diff options
| author | Andrey Ryabinin <a.ryabinin@samsung.com> | 2014-01-27 20:06:58 -0500 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2014-01-28 00:02:39 -0500 |
| commit | 3ace678fd1b246b75e01eeac0554de35656136a4 (patch) | |
| tree | 81db6091116b988123782988a37f8eadb4b4c55c /lib | |
| parent | d9e133e6f05fbb39e2ecf7bc1edca299729a8595 (diff) | |
dynamic_debug: fix ddebug_parse_query()
This fixes following scenario:
$ echo 'file dynamic_debug.c line 1-123 +p' > /sys/kernel/debug/dynamic_debug/control
-bash: echo: write error: Invalid argument
$ dmesg | grep dynamic_debug
dynamic_debug:ddebug_parse_query: last-line:123 < 1st-line:1
dynamic_debug:ddebug_parse_query: query parse failed
Signed-off-by: Andrey Ryabinin <a.ryabinin@samsung.com>
Cc: Jason Baron <jbaron@akamai.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/dynamic_debug.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/lib/dynamic_debug.c b/lib/dynamic_debug.c index f959c39cc007..e488d9a03adc 100644 --- a/lib/dynamic_debug.c +++ b/lib/dynamic_debug.c | |||
| @@ -352,8 +352,10 @@ static int ddebug_parse_query(char *words[], int nwords, | |||
| 352 | return -EINVAL; | 352 | return -EINVAL; |
| 353 | if (last) { | 353 | if (last) { |
| 354 | /* range <first>-<last> */ | 354 | /* range <first>-<last> */ |
| 355 | if (parse_lineno(last, &query->last_lineno) | 355 | if (parse_lineno(last, &query->last_lineno) < 0) |
| 356 | < query->first_lineno) { | 356 | return -EINVAL; |
| 357 | |||
| 358 | if (query->last_lineno < query->first_lineno) { | ||
| 357 | pr_err("last-line:%d < 1st-line:%d\n", | 359 | pr_err("last-line:%d < 1st-line:%d\n", |
| 358 | query->last_lineno, | 360 | query->last_lineno, |
| 359 | query->first_lineno); | 361 | query->first_lineno); |
