diff options
Diffstat (limited to 'kernel/trace/bpf_trace.c')
-rw-r--r-- | kernel/trace/bpf_trace.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/kernel/trace/bpf_trace.c b/kernel/trace/bpf_trace.c index 08fcfe440c63..9864a35c8bb5 100644 --- a/kernel/trace/bpf_trace.c +++ b/kernel/trace/bpf_trace.c | |||
@@ -196,11 +196,13 @@ BPF_CALL_5(bpf_trace_printk, char *, fmt, u32, fmt_size, u64, arg1, | |||
196 | i++; | 196 | i++; |
197 | } else if (fmt[i] == 'p' || fmt[i] == 's') { | 197 | } else if (fmt[i] == 'p' || fmt[i] == 's') { |
198 | mod[fmt_cnt]++; | 198 | mod[fmt_cnt]++; |
199 | i++; | 199 | /* disallow any further format extensions */ |
200 | if (!isspace(fmt[i]) && !ispunct(fmt[i]) && fmt[i] != 0) | 200 | if (fmt[i + 1] != 0 && |
201 | !isspace(fmt[i + 1]) && | ||
202 | !ispunct(fmt[i + 1])) | ||
201 | return -EINVAL; | 203 | return -EINVAL; |
202 | fmt_cnt++; | 204 | fmt_cnt++; |
203 | if (fmt[i - 1] == 's') { | 205 | if (fmt[i] == 's') { |
204 | if (str_seen) | 206 | if (str_seen) |
205 | /* allow only one '%s' per fmt string */ | 207 | /* allow only one '%s' per fmt string */ |
206 | return -EINVAL; | 208 | return -EINVAL; |