struct lttng_ust_shm_handle *handle)
{
unsigned long offset, idx, commit_count;
- struct commit_counters_hot *cc_hot = shmp_index(handle, buf->commit_hot, idx);
+ struct commit_counters_hot *cc_hot;
CHAN_WARN_ON(chan, config->alloc != RING_BUFFER_ALLOC_PER_CPU);
CHAN_WARN_ON(chan, config->sync != RING_BUFFER_SYNC_PER_CPU);
- if (caa_unlikely(!cc_hot))
- return 0;
-
/*
* Read offset and commit count in a loop so they are both read
* atomically wrt interrupts. By deal with interrupt concurrency by
do {
offset = v_read(config, &buf->offset);
idx = subbuf_index(offset, chan);
+ cc_hot = shmp_index(handle, buf->commit_hot, idx);
+ if (caa_unlikely(!cc_hot))
+ return 0;
commit_count = v_read(config, &cc_hot->cc);
} while (offset != v_read(config, &buf->offset));