RE: drm/bridge: it6505: fix HDCP CTS compare V matching

From: Hermes.Wu
Date: Tue Jan 07 2025 - 04:49:25 EST


Hi

>-----Original Message-----
>From: Colin King (gmail) <colin.i.king@xxxxxxxxx>
>Sent: Tuesday, January 7, 2025 5:31 PM
>To: Hermes Wu (吳佳宏) <Hermes.Wu@xxxxxxxxxx>
>Cc: Andrzej Hajda <andrzej.hajda@xxxxxxxxx>; Neil Armstrong <neil.armstrong@xxxxxxxxxx>; Robert Foss <rfoss@xxxxxxxxxx>; Laurent Pinchart <Laurent.pinchart@xxxxxxxxxxxxxxxx>; Jonas Karlman <jonas@xxxxxxxxx>; Jernej Skrabec <jernej.skrabec@xxxxxxxxx>; dri-devel@xxxxxxxxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx
>Subject: re: drm/bridge: it6505: fix HDCP CTS compare V matching
>
>Hi,
>
>static analysis on Linux-next has found a potential issue with the following commit:
>
>commit 0989c02c7a5c887c70deafen80c64d0291624e1a7
>Author: Hermes Wu <hermes.wu@xxxxxxxxxx>
>Date: Mon Dec 30 18:51:26 2024 +0800
>
> drm/bridge: it6505: fix HDCP CTS compare V matching
>
>
>The issue is as follows:
>
>Source: drivers/gpu/drm/bridge/ite-it6505.c, function:
>it6505_hdcp_part2_ksvlist_check:
>
> for (i = 0; i < 5; i++) {
> if (bv[i][3] != av[i][0] || bv[i][2] != av[i][1] ||
> av[i][1] != av[i][2] || bv[i][0] != av[i][3])
> break;
>
> DRM_DEV_DEBUG_DRIVER(dev, "V' all match!! %d, %d", retry, i);
> return true;
> }

It should check if the for loop reach i == 4 before return true.

I will fix it,

thanks

>
>in the above for-loop, only iteration with i = 0 is performed, either
>the if statement breaks out of the loop if the condition is true or
>we reach the return true statement. Both conditions means the loop is
>never iterated, yet the loop is expected to iterate for 5 times. This
>looks incorrect.
>
>Colin
>

>
>