diff options
Diffstat (limited to 'kernel')
-rw-r--r-- | kernel/trace/trace_events_filter.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/kernel/trace/trace_events_filter.c b/kernel/trace/trace_events_filter.c index b9aae72d13db..1c80ef702b83 100644 --- a/kernel/trace/trace_events_filter.c +++ b/kernel/trace/trace_events_filter.c | |||
@@ -176,11 +176,13 @@ static int filter_pred_string(struct filter_pred *pred, void *event, | |||
176 | static int filter_pred_strloc(struct filter_pred *pred, void *event, | 176 | static int filter_pred_strloc(struct filter_pred *pred, void *event, |
177 | int val1, int val2) | 177 | int val1, int val2) |
178 | { | 178 | { |
179 | unsigned short str_loc = *(unsigned short *)(event + pred->offset); | 179 | u32 str_item = *(u32 *)(event + pred->offset); |
180 | int str_loc = str_item & 0xffff; | ||
181 | int str_len = str_item >> 16; | ||
180 | char *addr = (char *)(event + str_loc); | 182 | char *addr = (char *)(event + str_loc); |
181 | int cmp, match; | 183 | int cmp, match; |
182 | 184 | ||
183 | cmp = strncmp(addr, pred->str_val, pred->str_len); | 185 | cmp = strncmp(addr, pred->str_val, str_len); |
184 | 186 | ||
185 | match = (!cmp) ^ pred->not; | 187 | match = (!cmp) ^ pred->not; |
186 | 188 | ||