Fix: ring buffer: get_subbuf() checks should be performed on "consumed" parameter
authorMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Wed, 3 Jul 2013 22:33:37 +0000 (18:33 -0400)
committerMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Wed, 3 Jul 2013 22:33:37 +0000 (18:33 -0400)
This triggers lots of false-positive -EAGAIN errors in flight recorder
snapshots.

Reported-by: Julien Desfossez <jdesfossez@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
libringbuffer/ring_buffer_frontend.c

index 2bce0d1d94c7b244ce94039df7e8729ce6c72045..e99ba8a5942a77084b740f75ef80fc0781b89ed3 100644 (file)
@@ -1107,7 +1107,7 @@ retry:
         */
        if (((commit_count - chan->backend.subbuf_size)
             & chan->commit_count_mask)
-           - (buf_trunc(consumed_cur, chan)
+           - (buf_trunc(consumed, chan)
               >> chan->backend.num_subbuf_order)
            != 0)
                goto nodata;
@@ -1116,7 +1116,7 @@ retry:
         * Check that we are not about to read the same subbuffer in
         * which the writer head is.
         */
-       if (subbuf_trunc(write_offset, chan) - subbuf_trunc(consumed_cur, chan)
+       if (subbuf_trunc(write_offset, chan) - subbuf_trunc(consumed, chan)
            == 0)
                goto nodata;
 
This page took 0.026248 seconds and 4 git commands to generate.