diff options
Diffstat (limited to 'kernel/trace/trace.c')
-rw-r--r-- | kernel/trace/trace.c | 24 |
1 files changed, 19 insertions, 5 deletions
diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c index 83e08b78dbee..c3aabb576fe5 100644 --- a/kernel/trace/trace.c +++ b/kernel/trace/trace.c | |||
@@ -6719,11 +6719,13 @@ tracing_snapshot_write(struct file *filp, const char __user *ubuf, size_t cnt, | |||
6719 | break; | 6719 | break; |
6720 | } | 6720 | } |
6721 | #endif | 6721 | #endif |
6722 | if (!tr->allocated_snapshot) { | 6722 | if (tr->allocated_snapshot) |
6723 | ret = resize_buffer_duplicate_size(&tr->max_buffer, | ||
6724 | &tr->trace_buffer, iter->cpu_file); | ||
6725 | else | ||
6723 | ret = tracing_alloc_snapshot_instance(tr); | 6726 | ret = tracing_alloc_snapshot_instance(tr); |
6724 | if (ret < 0) | 6727 | if (ret < 0) |
6725 | break; | 6728 | break; |
6726 | } | ||
6727 | local_irq_disable(); | 6729 | local_irq_disable(); |
6728 | /* Now, we're going to swap */ | 6730 | /* Now, we're going to swap */ |
6729 | if (iter->cpu_file == RING_BUFFER_ALL_CPUS) | 6731 | if (iter->cpu_file == RING_BUFFER_ALL_CPUS) |
@@ -7126,12 +7128,24 @@ static ssize_t tracing_err_log_write(struct file *file, | |||
7126 | return count; | 7128 | return count; |
7127 | } | 7129 | } |
7128 | 7130 | ||
7131 | static int tracing_err_log_release(struct inode *inode, struct file *file) | ||
7132 | { | ||
7133 | struct trace_array *tr = inode->i_private; | ||
7134 | |||
7135 | trace_array_put(tr); | ||
7136 | |||
7137 | if (file->f_mode & FMODE_READ) | ||
7138 | seq_release(inode, file); | ||
7139 | |||
7140 | return 0; | ||
7141 | } | ||
7142 | |||
7129 | static const struct file_operations tracing_err_log_fops = { | 7143 | static const struct file_operations tracing_err_log_fops = { |
7130 | .open = tracing_err_log_open, | 7144 | .open = tracing_err_log_open, |
7131 | .write = tracing_err_log_write, | 7145 | .write = tracing_err_log_write, |
7132 | .read = seq_read, | 7146 | .read = seq_read, |
7133 | .llseek = seq_lseek, | 7147 | .llseek = seq_lseek, |
7134 | .release = tracing_release_generic_tr, | 7148 | .release = tracing_err_log_release, |
7135 | }; | 7149 | }; |
7136 | 7150 | ||
7137 | static int tracing_buffers_open(struct inode *inode, struct file *filp) | 7151 | static int tracing_buffers_open(struct inode *inode, struct file *filp) |