ring-buffer: Have rb_time_cmpxchg() set the msb counter too
Subsystems (2)
Steven Rostedt
maintainerPATCH 1/1 ring-buffer: Have rb_time_cmpxchg() set the msb counter too
From: "Steven Rostedt (Google)" <[email protected]>
The rb_time_cmpxchg() on 32-bit architectures requires setting three 32-bit words to represent the 64-bit timestamp, with some salt for synchronization. Those are: msb, top, and bottom
The issue is, the rb_time_cmpxchg() did not properly salt the msb portion, and the msb that was written was stale.
Fixes f03f2abce4f39 ("ring-buffer: Have 32 bit time stamps use all 64 bits")
Signed-off-by Steven Rostedt (Google) <[email protected]>
--- kernel/trace/ring_buffer.c | 2 ++ 1 file changed, 2 insertions(+)
kernel/trace/ring_buffer.c +2 -0
@@ -722,10 +722,12 @@ static bool rb_time_cmpxchg(rb_time_t *t, u64 expect, u64 set) cnt2 = cnt +1 ;rb_time_split (val, &top, &bottom, &msb); + msb =rb_time_val_cnt (msb, cnt); top =rb_time_val_cnt (top, cnt); bottom =rb_time_val_cnt (bottom, cnt);rb_time_split (set, &top2, &bottom2, &msb2); + msb2 =rb_time_val_cnt (msb2, cnt); top2 =rb_time_val_cnt (top2, cnt2); bottom2 =rb_time_val_cnt (bottom2, cnt2);
Signature · 1 line
2.42.0