mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 10:40:15 +02:00 
			
		
		
		
	ring-buffer: Update write stamp with the correct ts
The write stamp, used to calculate deltas between events, was updated with
the stale "ts" value in the "info" structure, and not with the updated "ts"
variable. This caused the deltas between events to be inaccurate, and when
crossing into a new sub buffer, had time go backwards.
Link: https://lkml.kernel.org/r/20201124223917.795844-1-elavila@google.com
Cc: stable@vger.kernel.org
Fixes: a389d86f7f ("ring-buffer: Have nested events still record running time stamp")
Reported-by: "J. Avila" <elavila@google.com>
Tested-by: Daniel Mentz <danielmentz@google.com>
Tested-by: Will McVicker <willmcvicker@google.com>
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
			
			
This commit is contained in:
		
							parent
							
								
									fbc6e1c6e0
								
							
						
					
					
						commit
						55ea4cf403
					
				
					 1 changed files with 1 additions and 1 deletions
				
			
		| 
						 | 
					@ -3291,7 +3291,7 @@ __rb_reserve_next(struct ring_buffer_per_cpu *cpu_buffer,
 | 
				
			||||||
			/* Nothing came after this event between C and E */
 | 
								/* Nothing came after this event between C and E */
 | 
				
			||||||
			info->delta = ts - info->after;
 | 
								info->delta = ts - info->after;
 | 
				
			||||||
			(void)rb_time_cmpxchg(&cpu_buffer->write_stamp,
 | 
								(void)rb_time_cmpxchg(&cpu_buffer->write_stamp,
 | 
				
			||||||
					      info->after, info->ts);
 | 
										      info->after, ts);
 | 
				
			||||||
			info->ts = ts;
 | 
								info->ts = ts;
 | 
				
			||||||
		} else {
 | 
							} else {
 | 
				
			||||||
			/*
 | 
								/*
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue