Revision db8894f2

b/trace/simple.c
269 269

  
270 270
void trace_record_finish(TraceBufferRecord *rec)
271 271
{
272
    uint8_t temp_rec[sizeof(TraceRecord)];
273
    TraceRecord *record = (TraceRecord *) temp_rec;
274
    read_from_buffer(rec->tbuf_idx, temp_rec, sizeof(TraceRecord));
272
    TraceRecord record;
273
    read_from_buffer(rec->tbuf_idx, &record, sizeof(TraceRecord));
275 274
    smp_wmb(); /* write barrier before marking as valid */
276
    record->event |= TRACE_RECORD_VALID;
277
    write_to_buffer(rec->tbuf_idx, temp_rec, sizeof(TraceRecord));
275
    record.event |= TRACE_RECORD_VALID;
276
    write_to_buffer(rec->tbuf_idx, &record, sizeof(TraceRecord));
278 277

  
279 278
    if ((trace_idx - writeout_idx) > TRACE_BUF_FLUSH_THRESHOLD) {
280 279
        flush_trace_file(false);

Also available in: Unified diff