diff options
| author | Ingo Molnar <mingo@elte.hu> | 2011-01-05 08:14:42 -0500 |
|---|---|---|
| committer | Ingo Molnar <mingo@elte.hu> | 2011-01-05 08:14:46 -0500 |
| commit | 27066fd484a32c80630136aa2b91c980f3198f9d (patch) | |
| tree | 78ddabdedbfd7525d13ecd62a745525843f1d0e8 /kernel/trace | |
| parent | 101e5f77bf35679809586e250b6c62193d2ed179 (diff) | |
| parent | 3c0eee3fe6a3a1c745379547c7e7c904aa64f6d5 (diff) | |
Merge commit 'v2.6.37' into sched/core
Merge reason: Merge the final .37 tree.
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'kernel/trace')
| -rw-r--r-- | kernel/trace/ring_buffer.c | 9 | ||||
| -rw-r--r-- | kernel/trace/trace.c | 10 |
2 files changed, 17 insertions, 2 deletions
diff --git a/kernel/trace/ring_buffer.c b/kernel/trace/ring_buffer.c index 9ed509a015d..bd1c35a4fbc 100644 --- a/kernel/trace/ring_buffer.c +++ b/kernel/trace/ring_buffer.c | |||
| @@ -3853,6 +3853,13 @@ int ring_buffer_read_page(struct ring_buffer *buffer, | |||
| 3853 | 3853 | ||
| 3854 | /* Need to copy one event at a time */ | 3854 | /* Need to copy one event at a time */ |
| 3855 | do { | 3855 | do { |
| 3856 | /* We need the size of one event, because | ||
| 3857 | * rb_advance_reader only advances by one event, | ||
| 3858 | * whereas rb_event_ts_length may include the size of | ||
| 3859 | * one or two events. | ||
| 3860 | * We have already ensured there's enough space if this | ||
| 3861 | * is a time extend. */ | ||
| 3862 | size = rb_event_length(event); | ||
| 3856 | memcpy(bpage->data + pos, rpage->data + rpos, size); | 3863 | memcpy(bpage->data + pos, rpage->data + rpos, size); |
| 3857 | 3864 | ||
| 3858 | len -= size; | 3865 | len -= size; |
| @@ -3867,7 +3874,7 @@ int ring_buffer_read_page(struct ring_buffer *buffer, | |||
| 3867 | event = rb_reader_event(cpu_buffer); | 3874 | event = rb_reader_event(cpu_buffer); |
| 3868 | /* Always keep the time extend and data together */ | 3875 | /* Always keep the time extend and data together */ |
| 3869 | size = rb_event_ts_length(event); | 3876 | size = rb_event_ts_length(event); |
| 3870 | } while (len > size); | 3877 | } while (len >= size); |
| 3871 | 3878 | ||
| 3872 | /* update bpage */ | 3879 | /* update bpage */ |
| 3873 | local_set(&bpage->commit, pos); | 3880 | local_set(&bpage->commit, pos); |
diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c index c380612273b..f8cf959bad4 100644 --- a/kernel/trace/trace.c +++ b/kernel/trace/trace.c | |||
| @@ -2338,11 +2338,19 @@ tracing_write_stub(struct file *filp, const char __user *ubuf, | |||
| 2338 | return count; | 2338 | return count; |
| 2339 | } | 2339 | } |
| 2340 | 2340 | ||
| 2341 | static loff_t tracing_seek(struct file *file, loff_t offset, int origin) | ||
| 2342 | { | ||
| 2343 | if (file->f_mode & FMODE_READ) | ||
| 2344 | return seq_lseek(file, offset, origin); | ||
| 2345 | else | ||
| 2346 | return 0; | ||
| 2347 | } | ||
| 2348 | |||
| 2341 | static const struct file_operations tracing_fops = { | 2349 | static const struct file_operations tracing_fops = { |
| 2342 | .open = tracing_open, | 2350 | .open = tracing_open, |
| 2343 | .read = seq_read, | 2351 | .read = seq_read, |
| 2344 | .write = tracing_write_stub, | 2352 | .write = tracing_write_stub, |
| 2345 | .llseek = seq_lseek, | 2353 | .llseek = tracing_seek, |
| 2346 | .release = tracing_release, | 2354 | .release = tracing_release, |
| 2347 | }; | 2355 | }; |
| 2348 | 2356 | ||
