Hi Ramon, On 25 May 2018 at 04:41, Ramon Fried <ramon.fr...@gmail.com> wrote: > When the buffer is full, there supposed to be no more > writes, the code however misses the else statement and > subsequently writes to arbitrary pointer location and increases > the offset.
I don't think so. It writes to a local variable in this case. The point of this is to detect how much space would be needed to hold the I/O trace. Unless the pointer is incremented, there is no way to know. Perhaps instead, iotrace_get_buffer() should be updated to also return the number of valid records, as well as the pointer value? > This patch fixes that by returning immediately. > > Signed-off-by: Ramon Fried <ramon.fr...@gmail.com> > --- > common/iotrace.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/common/iotrace.c b/common/iotrace.c > index 74408a5dbb..5f06d2b250 100644 > --- a/common/iotrace.c > +++ b/common/iotrace.c > @@ -55,6 +55,8 @@ static void add_record(int flags, const void *ptr, ulong > value) > rec = (struct iotrace_record *)map_sysmem( > iotrace.start + iotrace.offset, > sizeof(value)); > + } else { > + return; > } > > rec->timestamp = get_ticks(); > -- > 2.17.0 > Regards, Simon _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot