Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

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

* 'perf-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
ring_buffer: Off-by-one and duplicate events in ring_buffer_read_page

+8 -1
+8 -1
kernel/trace/ring_buffer.c
··· 3853 3853 3854 3854 /* Need to copy one event at a time */ 3855 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 3863 memcpy(bpage->data + pos, rpage->data + rpos, size); 3857 3864 3858 3865 len -= size; ··· 3874 3867 event = rb_reader_event(cpu_buffer); 3875 3868 /* Always keep the time extend and data together */ 3876 3869 size = rb_event_ts_length(event); 3877 - } while (len > size); 3870 + } while (len >= size); 3878 3871 3879 3872 /* update bpage */ 3880 3873 local_set(&bpage->commit, pos);