On 10/08/2018 09:08 PM, Hans Verkuil wrote:
> When the OSD is on (i.e. vivid displays text on top of the test pattern), and
> you enable hflip, then the driver crashes.
>
> The cause turned out to be a division of a negative number by an unsigned
> value.
> You expect that -8 / 2 would be -4, but in reality it is 2147483644 :-(
>
> Signed-off-by: Hans Verkuil <[email protected]>
> Reported-by: Mauro Carvalho Chehab <[email protected]>
> ---
> diff --git a/drivers/media/common/v4l2-tpg/v4l2-tpg-core.c
> b/drivers/media/common/v4l2-tpg/v4l2-tpg-core.c
> index f3d9c1140ffa..e76f87dc4368 100644
> --- a/drivers/media/common/v4l2-tpg/v4l2-tpg-core.c
> +++ b/drivers/media/common/v4l2-tpg/v4l2-tpg-core.c
> @@ -1773,7 +1773,7 @@ typedef struct { u16 __; u8 _; } __packed x24;
> pos[7] = (chr & (0x01 << 0) ? fg : bg); \
> } \
> \
> - pos += (tpg->hflip ? -8 : 8) / hdiv; \
> + pos += (tpg->hflip ? -8 : 8) / (int)hdiv; \
> } \
> } \
> } while (0)
>
This can be CC-ed to stable for 4.7 and up.
It actually broke in 4.1, but it was called vivid-tpg.c at that time.
Regards,
Hans