* '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
Showing the changes to kernel (2 of 2 files). Show all
Unified · Split
| @@ -2222,15 +2222,15 @@ ftrace_regex_write(struct file *file, const char __user *ubuf, · 2221 unmodified lines | ||
| 2222 | 2222 | ret = ftrace_process_regex(parser->buffer, |
| 2223 | 2223 | parser->idx, enable); |
| 2224 | 2224 | if (ret) |
| 2225 | − goto out; | |
| 2225 | + goto out_unlock; | |
| 2226 | 2226 | |
| 2227 | 2227 | trace_parser_clear(parser); |
| 2228 | 2228 | } |
| 2229 | 2229 | |
| 2230 | 2230 | ret = read; |
| 2231 | − | |
| 2231 | +out_unlock: | |
| 2232 | 2232 | mutex_unlock(&ftrace_regex_lock); |
| 2233 | −out: | |
| 2233 | + | |
| 2234 | 2234 | return ret; |
| 2235 | 2235 | } |
| 2236 | 2236 | |
| @@ -1193,6 +1193,7 @@ rb_remove_pages(struct ring_buffer_per_cpu *cpu_buffer, unsigned nr_pages) · 1192 unmodified lines | ||
| 1193 | 1193 | atomic_inc(&cpu_buffer->record_disabled); |
| 1194 | 1194 | synchronize_sched(); |
| 1195 | 1195 | |
| 1196 | + spin_lock_irq(&cpu_buffer->reader_lock); | |
| 1196 | 1197 | rb_head_page_deactivate(cpu_buffer); |
| 1197 | 1198 | |
| 1198 | 1199 | 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 | ||
| 1207 | 1208 | return; |
| 1208 | 1209 | |
| 1209 | 1210 | rb_reset_cpu(cpu_buffer); |
| 1211 | + spin_unlock_irq(&cpu_buffer->reader_lock); | |
| 1210 | 1212 | |
| 1211 | 1213 | rb_check_pages(cpu_buffer); |
| 1212 | 1214 | |