Re: [PATCH v7 1/6] media: uvcvideo: Fix underflow addressing on hw timestamp

From: Sergey Senozhatsky
Date: Fri Mar 10 2023 - 07:18:58 EST


On (23/03/10 10:01), Ricardo Ribalda wrote:
> If head is 0, we will be addressing clock->samples[-1], which will
> result in undefined behaviour.

[..]

> first = &clock->samples[clock->head];
> - last = &clock->samples[(clock->head - 1) % clock->size];
> + last = &clock->samples[(clock->head - 1 + clock->size) % clock->size];

Just for visibility:

Per offline discussion with Ricardo, this should not cause a samples[-1]
access, as all arithmetic operations there `unsigned`

75ef: 41 8d 46 ff lea -0x1(%r14),%eax
75f3: 31 d2 xor %edx,%edx
75f5: f7 f1 div %ecx
75f7: 41 89 d5 mov %edx,%r13d

Regardless of that, Ricardo still has a point, there is a bug in the code.