History

Merge branch 'tracing-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip

* 'tracing-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: ftrace: Fix unmatched locking in ftrace_regex_write() ring-buffer: Synchronize resizing buffer with reader lock

Linus Torvalds committed 17 years ago

Commit 72cc1292 parents 411094a ed146b22 files · +5 −3Browse files

Unified · Split

2 files
  1. kernel/trace/ftrace.c +3 −3
  2. kernel/trace/ring_buffer.c +2 −0
kernel/trace/ftrace.c+3−3
@@ -2222,15 +2222,15 @@ ftrace_regex_write(struct file *file, const char __user *ubuf, · 2221 unmodified lines
22222222 ret = ftrace_process_regex(parser->buffer,
22232223 parser->idx, enable);
22242224 if (ret)
2225− goto out;
2225+ goto out_unlock;
22262226
22272227 trace_parser_clear(parser);
22282228 }
22292229
22302230 ret = read;
2231−
2231+out_unlock:
22322232 mutex_unlock(&ftrace_regex_lock);
2233−out:
2233+
22342234 return ret;
22352235 }
22362236
kernel/trace/ring_buffer.c+2−0
@@ -1193,6 +1193,7 @@ rb_remove_pages(struct ring_buffer_per_cpu *cpu_buffer, unsigned nr_pages) · 1192 unmodified lines
11931193 atomic_inc(&cpu_buffer->record_disabled);
11941194 synchronize_sched();
11951195
1196+ spin_lock_irq(&cpu_buffer->reader_lock);
11961197 rb_head_page_deactivate(cpu_buffer);
11971198
11981199 for (i = 0; i < nr_pages; i++) {
@@ -1207,6 +1208,7 @@ rb_remove_pages(struct ring_buffer_per_cpu *cpu_buffer, unsigned nr_pages) · 8 unmodified lines
12071208 return;
12081209
12091210 rb_reset_cpu(cpu_buffer);
1211+ spin_unlock_irq(&cpu_buffer->reader_lock);
12101212
12111213 rb_check_pages(cpu_buffer);
12121214