]> git.baikalelectronics.ru Git - kernel.git/commit
perf evlist: Enforce ring buffer reading
authorWang Nan <wangnan0@huawei.com>
Tue, 26 Apr 2016 02:28:54 +0000 (02:28 +0000)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Tue, 26 Apr 2016 13:56:08 +0000 (10:56 -0300)
commit11196880bed69bcbe4cb572d15d563fed0e0f231
tree94ceaf2de5da1dda1cf8ee386472ffca76c0c78b
parent06482ab53f223c2f802e31a8e5f8328e63aee538
perf evlist: Enforce ring buffer reading

Don't read broken data after 'head' pointer.

Following commits will feed perf_evlist__mmap_read() with some 'head'
pointers not maintained by kernel. If 'head' pointer breaks an event, we
should avoid reading from the broken event. This can happen in backward
ring buffer.

For example:

                              old     head
                                |     |
                                V     V
     +---+------+----------+----+-----+--+
     |..E|D....D|C........C|B..B|A....|E.|
     +---+------+----------+----+-----+--+

'old' pointer points to the beginning of 'A' and trying read from it,
but 'A' has been overwritten. In this case, don't try to read from 'A',
simply return NULL.

Signed-off-by: Wang Nan <wangnan0@huawei.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Zefan Li <lizefan@huawei.com>
Cc: pi3orama@163.com
Link: http://lkml.kernel.org/r/1461637738-62722-2-git-send-email-wangnan0@huawei.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/util/evlist.c