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:35:51 +0000 (18:35 -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 2258400ee9c5c92f6048f53a79df6bd9d90bdceb..df8ddf7f01c6f26be5e011b11372f95bf535e0da 100644 (file)
@@ -823,7 +823,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;
@@ -832,7 +832,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.026001 seconds and 4 git commands to generate.