X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;f=libust%2Fbuffers.c;h=c2928c03092fa77417d33e8368ebd5306f56a36d;hb=f2496f58dc9c11b7e142b7cf393a9306a6318381;hp=f3331d0899f523677be93f7c5e17b84007d9ee38;hpb=b5b073e22d34bec71259d39b8946354f170f01a9;p=lttng-ust.git diff --git a/libust/buffers.c b/libust/buffers.c index f3331d08..c2928c03 100644 --- a/libust/buffers.c +++ b/libust/buffers.c @@ -250,13 +250,13 @@ void *ltt_buffers_offset_address(struct ust_buffer *buf, size_t offset) /* FIXME: does this test work properly? */ #if (BITS_PER_LONG == 32) -static inline void save_last_tsc(struct ltt_channel_buf_struct *ltt_buf, +static inline void save_last_tsc(struct ust_buffer *ltt_buf, u64 tsc) { ltt_buf->last_tsc = (unsigned long)(tsc >> LTT_TSC_BITS); } -static inline int last_tsc_overflow(struct ltt_channel_buf_struct *ltt_buf, +static inline int last_tsc_overflow(struct ust_buffer *ltt_buf, u64 tsc) { unsigned long tsc_shifted = (unsigned long)(tsc >> LTT_TSC_BITS); @@ -482,6 +482,13 @@ static void ltt_relay_print_errors(struct ltt_trace_struct *trace, struct ust_buffer *ltt_buf = channel->buf; long cons_off; + /* + * Can be called in the error path of allocation when + * trans_channel_data is not yet set. + */ + if (!channel) + return; + for (cons_off = atomic_long_read(<t_buf->consumed); (SUBBUF_TRUNC(local_read(<t_buf->offset), channel)