2022-03-04 00:09:29

by Tom Rix

[permalink] [raw]
Subject: [PATCH] drm/bridge: anx7625: check the return on anx7625_aux_trans

From: Tom Rix <[email protected]>

Clang static analysis reports this issue
anx7625.c:876:13: warning: The left operand of '&' is
a garbage value
if (!(bcap & 0xOA01)) {
~~~~ ^

bcap is only set by a successful call to
anx7625_aux_trans(). So check.

Fixes: cd1637c7e480 ("drm/bridge: anx7625: add HDCP support")
Signed-off-by: Tom Rix <[email protected]>
---
drivers/gpu/drm/bridge/analogix/anx7625.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/bridge/analogix/anx7625.c b/drivers/gpu/drm/bridge/analogix/anx7625.c
index 633618bafd75d..f02ac079ed2ec 100644
--- a/drivers/gpu/drm/bridge/analogix/anx7625.c
+++ b/drivers/gpu/drm/bridge/analogix/anx7625.c
@@ -872,7 +872,10 @@ static int anx7625_hdcp_enable(struct anx7625_data *ctx)
}

/* Read downstream capability */
- anx7625_aux_trans(ctx, DP_AUX_NATIVE_READ, 0x68028, 1, &bcap);
+ ret = anx7625_aux_trans(ctx, DP_AUX_NATIVE_READ, 0x68028, 1, &bcap);
+ if (ret < 0)
+ return ret;
+
if (!(bcap & 0x01)) {
pr_warn("downstream not support HDCP 1.4, cap(%x).\n", bcap);
return 0;
--
2.26.3


2022-03-09 00:09:46

by Nick Desaulniers

[permalink] [raw]
Subject: Re: [PATCH] drm/bridge: anx7625: check the return on anx7625_aux_trans

On Thu, Mar 3, 2022 at 12:19 PM <[email protected]> wrote:
>
> From: Tom Rix <[email protected]>
>
> Clang static analysis reports this issue
> anx7625.c:876:13: warning: The left operand of '&' is
> a garbage value
> if (!(bcap & 0xOA01)) {
> ~~~~ ^
>
> bcap is only set by a successful call to
> anx7625_aux_trans(). So check.
>
> Fixes: cd1637c7e480 ("drm/bridge: anx7625: add HDCP support")

Is this the correct Fixes tag?

I think it should be

Fixes: adca62ec370c ("drm/bridge: anx7625: Support reading edid
through aux channel")

instead.

> Signed-off-by: Tom Rix <[email protected]>
> ---
> drivers/gpu/drm/bridge/analogix/anx7625.c | 5 ++++-
> 1 file changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/bridge/analogix/anx7625.c b/drivers/gpu/drm/bridge/analogix/anx7625.c
> index 633618bafd75d..f02ac079ed2ec 100644
> --- a/drivers/gpu/drm/bridge/analogix/anx7625.c
> +++ b/drivers/gpu/drm/bridge/analogix/anx7625.c
> @@ -872,7 +872,10 @@ static int anx7625_hdcp_enable(struct anx7625_data *ctx)
> }
>
> /* Read downstream capability */
> - anx7625_aux_trans(ctx, DP_AUX_NATIVE_READ, 0x68028, 1, &bcap);
> + ret = anx7625_aux_trans(ctx, DP_AUX_NATIVE_READ, 0x68028, 1, &bcap);
> + if (ret < 0)
> + return ret;
> +
> if (!(bcap & 0x01)) {
> pr_warn("downstream not support HDCP 1.4, cap(%x).\n", bcap);
> return 0;
> --
> 2.26.3
>


--
Thanks,
~Nick Desaulniers

2022-03-09 02:34:04

by Tom Rix

[permalink] [raw]
Subject: Re: [PATCH] drm/bridge: anx7625: check the return on anx7625_aux_trans


On 3/8/22 2:57 PM, Nick Desaulniers wrote:
> On Thu, Mar 3, 2022 at 12:19 PM <[email protected]> wrote:
>> From: Tom Rix <[email protected]>
>>
>> Clang static analysis reports this issue
>> anx7625.c:876:13: warning: The left operand of '&' is
>> a garbage value
>> if (!(bcap & 0xOA01)) {
>> ~~~~ ^
>>
>> bcap is only set by a successful call to
>> anx7625_aux_trans(). So check.
>>
>> Fixes: cd1637c7e480 ("drm/bridge: anx7625: add HDCP support")
> Is this the correct Fixes tag?
yes
> I think it should be
>
> Fixes: adca62ec370c ("drm/bridge: anx7625: Support reading edid
> through aux channel")

This one changes the name of the function

-       anx7625_aux_dpcd_trans(ctx, DP_AUX_NATIVE_READ, 0x68028, 1, &bcap);
+       anx7625_aux_trans(ctx, DP_AUX_NATIVE_READ, 0x68028, 1, &bcap);

A return check from the earlier commit, when this block of code came
into existence, is when it was first needed.

Tom

>
> instead.
>
>> Signed-off-by: Tom Rix <[email protected]>
>> ---
>> drivers/gpu/drm/bridge/analogix/anx7625.c | 5 ++++-
>> 1 file changed, 4 insertions(+), 1 deletion(-)
>>
>> diff --git a/drivers/gpu/drm/bridge/analogix/anx7625.c b/drivers/gpu/drm/bridge/analogix/anx7625.c
>> index 633618bafd75d..f02ac079ed2ec 100644
>> --- a/drivers/gpu/drm/bridge/analogix/anx7625.c
>> +++ b/drivers/gpu/drm/bridge/analogix/anx7625.c
>> @@ -872,7 +872,10 @@ static int anx7625_hdcp_enable(struct anx7625_data *ctx)
>> }
>>
>> /* Read downstream capability */
>> - anx7625_aux_trans(ctx, DP_AUX_NATIVE_READ, 0x68028, 1, &bcap);
>> + ret = anx7625_aux_trans(ctx, DP_AUX_NATIVE_READ, 0x68028, 1, &bcap);
>> + if (ret < 0)
>> + return ret;
>> +
>> if (!(bcap & 0x01)) {
>> pr_warn("downstream not support HDCP 1.4, cap(%x).\n", bcap);
>> return 0;
>> --
>> 2.26.3
>>
>

2022-03-09 15:48:02

by Robert Foss

[permalink] [raw]
Subject: Re: [PATCH] drm/bridge: anx7625: check the return on anx7625_aux_trans

On Wed, 9 Mar 2022 at 02:45, Tom Rix <[email protected]> wrote:
>
>
> On 3/8/22 2:57 PM, Nick Desaulniers wrote:
> > On Thu, Mar 3, 2022 at 12:19 PM <[email protected]> wrote:
> >> From: Tom Rix <[email protected]>
> >>
> >> Clang static analysis reports this issue
> >> anx7625.c:876:13: warning: The left operand of '&' is
> >> a garbage value
> >> if (!(bcap & 0xOA01)) {
> >> ~~~~ ^
> >>
> >> bcap is only set by a successful call to
> >> anx7625_aux_trans(). So check.
> >>
> >> Fixes: cd1637c7e480 ("drm/bridge: anx7625: add HDCP support")
> > Is this the correct Fixes tag?
> yes
> > I think it should be
> >
> > Fixes: adca62ec370c ("drm/bridge: anx7625: Support reading edid
> > through aux channel")
>
> This one changes the name of the function
>
> - anx7625_aux_dpcd_trans(ctx, DP_AUX_NATIVE_READ, 0x68028, 1, &bcap);
> + anx7625_aux_trans(ctx, DP_AUX_NATIVE_READ, 0x68028, 1, &bcap);
>
> A return check from the earlier commit, when this block of code came
> into existence, is when it was first needed.
>
> Tom
>
> >
> > instead.
> >
> >> Signed-off-by: Tom Rix <[email protected]>
> >> ---
> >> drivers/gpu/drm/bridge/analogix/anx7625.c | 5 ++++-
> >> 1 file changed, 4 insertions(+), 1 deletion(-)
> >>
> >> diff --git a/drivers/gpu/drm/bridge/analogix/anx7625.c b/drivers/gpu/drm/bridge/analogix/anx7625.c
> >> index 633618bafd75d..f02ac079ed2ec 100644
> >> --- a/drivers/gpu/drm/bridge/analogix/anx7625.c
> >> +++ b/drivers/gpu/drm/bridge/analogix/anx7625.c
> >> @@ -872,7 +872,10 @@ static int anx7625_hdcp_enable(struct anx7625_data *ctx)
> >> }
> >>
> >> /* Read downstream capability */
> >> - anx7625_aux_trans(ctx, DP_AUX_NATIVE_READ, 0x68028, 1, &bcap);
> >> + ret = anx7625_aux_trans(ctx, DP_AUX_NATIVE_READ, 0x68028, 1, &bcap);
> >> + if (ret < 0)
> >> + return ret;
> >> +
> >> if (!(bcap & 0x01)) {
> >> pr_warn("downstream not support HDCP 1.4, cap(%x).\n", bcap);
> >> return 0;
> >> --
> >> 2.26.3
> >>
> >
>

Reviewed-by: Robert Foss <[email protected]>

Applied to drm-misc-next.