|
@@ -2916,6 +2916,8 @@ static int trace_set_options(char *option)
|
|
|
cmp += 2;
|
|
|
}
|
|
|
|
|
|
+ mutex_lock(&trace_types_lock);
|
|
|
+
|
|
|
for (i = 0; trace_options[i]; i++) {
|
|
|
if (strcmp(cmp, trace_options[i]) == 0) {
|
|
|
set_tracer_flags(1 << i, !neg);
|
|
@@ -2924,11 +2926,10 @@ static int trace_set_options(char *option)
|
|
|
}
|
|
|
|
|
|
/* If no option could be set, test the specific tracer options */
|
|
|
- if (!trace_options[i]) {
|
|
|
- mutex_lock(&trace_types_lock);
|
|
|
+ if (!trace_options[i])
|
|
|
ret = set_tracer_option(current_trace, cmp, neg);
|
|
|
- mutex_unlock(&trace_types_lock);
|
|
|
- }
|
|
|
+
|
|
|
+ mutex_unlock(&trace_types_lock);
|
|
|
|
|
|
return ret;
|
|
|
}
|
|
@@ -4781,7 +4782,10 @@ trace_options_core_write(struct file *filp, const char __user *ubuf, size_t cnt,
|
|
|
|
|
|
if (val != 0 && val != 1)
|
|
|
return -EINVAL;
|
|
|
+
|
|
|
+ mutex_lock(&trace_types_lock);
|
|
|
set_tracer_flags(1 << index, val);
|
|
|
+ mutex_unlock(&trace_types_lock);
|
|
|
|
|
|
*ppos += cnt;
|
|
|
|