• D
    ring-buffer: Wrap a list.next reference with rb_list_head() · 5ded3dc6
    David Sharp 提交于
    This reference at the end of rb_get_reader_page() was causing off-by-one
    writes to the prev pointer of the page after the reader page when that
    page is the head page, and therefore the reader page has the RB_PAGE_HEAD
    flag in its list.next pointer. This eventually results in a GPF in a
    subsequent call to rb_set_head_page() (usually from rb_get_reader_page())
    when that prev pointer is dereferenced. The dereferenced register would
    characteristically have an address that appears shifted left by one byte
    (eg, ffxxxxxxxxxxxxyy instead of ffffxxxxxxxxxxxx) due to being written at
    an address one byte too high.
    Signed-off-by: NDavid Sharp <dhsharp@google.com>
    LKML-Reference: <1262826727-9090-1-git-send-email-dhsharp@google.com>
    Signed-off-by: NSteven Rostedt <rostedt@goodmis.org>
    5ded3dc6
ring_buffer.c 96.0 KB