diff options
| author | Linux Build Service Account <lnxbuild@localhost> | 2019-11-16 10:11:56 -0800 |
|---|---|---|
| committer | Linux Build Service Account <lnxbuild@localhost> | 2019-11-16 10:11:56 -0800 |
| commit | feb565e67fc2b2f2a95890577120141be5886594 (patch) | |
| tree | b9057c7253ca0180b12d885d5a5140d5f90eb927 /kernel/trace | |
| parent | 6ed4c5de4bb191a209c629463678e34f076fb417 (diff) | |
| parent | 739a986440ba67d48277fd553a5fe32ab008666d (diff) | |
Merge 739a986440ba67d48277fd553a5fe32ab008666d on remote branch
Change-Id: Idd84f971e07f65aa635d7d499dde696b84b217b6
Diffstat (limited to 'kernel/trace')
| -rw-r--r-- | kernel/trace/trace.c | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c index 12f8bf9bf85d..913f190579e8 100644 --- a/kernel/trace/trace.c +++ b/kernel/trace/trace.c @@ -3448,9 +3448,14 @@ static int show_traces_open(struct inode *inode, struct file *file) if (tracing_disabled) return -ENODEV; + if (trace_array_get(tr) < 0) + return -ENODEV; + ret = seq_open(file, &show_traces_seq_ops); - if (ret) + if (ret) { + trace_array_put(tr); return ret; + } m = file->private_data; m->private = tr; @@ -3458,6 +3463,14 @@ static int show_traces_open(struct inode *inode, struct file *file) return 0; } +static int show_traces_release(struct inode *inode, struct file *file) +{ + struct trace_array *tr = inode->i_private; + + trace_array_put(tr); + return seq_release(inode, file); +} + static ssize_t tracing_write_stub(struct file *filp, const char __user *ubuf, size_t count, loff_t *ppos) @@ -3488,8 +3501,8 @@ static const struct file_operations tracing_fops = { static const struct file_operations show_traces_fops = { .open = show_traces_open, .read = seq_read, - .release = seq_release, .llseek = seq_lseek, + .release = show_traces_release, }; static ssize_t |
