hc
2024-12-19 9370bb92b2d16684ee45cf24e879c93c509162da
kernel/kernel/trace/trace_events.c
....@@ -371,7 +371,6 @@
371371 {
372372 struct trace_event_call *call = file->event_call;
373373 struct trace_array *tr = file->tr;
374
- unsigned long file_flags = file->flags;
375374 int ret = 0;
376375 int disable;
377376
....@@ -395,6 +394,8 @@
395394 break;
396395 disable = file->flags & EVENT_FILE_FL_SOFT_DISABLED;
397396 clear_bit(EVENT_FILE_FL_SOFT_MODE_BIT, &file->flags);
397
+ /* Disable use of trace_buffered_event */
398
+ trace_buffered_event_disable();
398399 } else
399400 disable = !(file->flags & EVENT_FILE_FL_SOFT_MODE);
400401
....@@ -433,6 +434,8 @@
433434 if (atomic_inc_return(&file->sm_ref) > 1)
434435 break;
435436 set_bit(EVENT_FILE_FL_SOFT_MODE_BIT, &file->flags);
437
+ /* Enable use of trace_buffered_event */
438
+ trace_buffered_event_enable();
436439 }
437440
438441 if (!(file->flags & EVENT_FILE_FL_ENABLED)) {
....@@ -470,15 +473,6 @@
470473 set_bit(EVENT_FILE_FL_WAS_ENABLED_BIT, &file->flags);
471474 }
472475 break;
473
- }
474
-
475
- /* Enable or disable use of trace_buffered_event */
476
- if ((file_flags & EVENT_FILE_FL_SOFT_DISABLED) !=
477
- (file->flags & EVENT_FILE_FL_SOFT_DISABLED)) {
478
- if (file->flags & EVENT_FILE_FL_SOFT_DISABLED)
479
- trace_buffered_event_enable();
480
- else
481
- trace_buffered_event_disable();
482476 }
483477
484478 return ret;
....@@ -1861,9 +1855,10 @@
18611855 };
18621856
18631857 static const struct file_operations ftrace_enable_fops = {
1864
- .open = tracing_open_generic,
1858
+ .open = tracing_open_file_tr,
18651859 .read = event_enable_read,
18661860 .write = event_enable_write,
1861
+ .release = tracing_release_file_tr,
18671862 .llseek = default_llseek,
18681863 };
18691864
....@@ -1880,9 +1875,10 @@
18801875 };
18811876
18821877 static const struct file_operations ftrace_event_filter_fops = {
1883
- .open = tracing_open_generic,
1878
+ .open = tracing_open_file_tr,
18841879 .read = event_filter_read,
18851880 .write = event_filter_write,
1881
+ .release = tracing_release_file_tr,
18861882 .llseek = default_llseek,
18871883 };
18881884
....@@ -2661,7 +2657,7 @@
26612657 * over from this module may be passed to the new module events and
26622658 * unexpected results may occur.
26632659 */
2664
- tracing_reset_all_online_cpus();
2660
+ tracing_reset_all_online_cpus_unlocked();
26652661 }
26662662
26672663 static int trace_module_notify(struct notifier_block *self,