2017-08-17 22:03:29

by Colin King

[permalink] [raw]
Subject: [PATCH][V2] drm/nouveau: perform null check on msto[i] rathern than msto

From: Colin Ian King <[email protected]>

The null check on the array msto is incorrect since msto is never
null. The null check should be instead on msto[i] since this is
being dereferenced in the call to drm_mode_connector_attach_encoder.

Thanks to Emil Velikov for pointing out the mistake in my original
fix and for suggesting the correct fix.

Detected by CoverityScan, CID#1375915 ("Array compared against 0")

Fixes: f479c0ba4a17 ("drm/nouveau/kms/nv50: initial support for DP 1.2 multi-stream")
Signed-off-by: Colin Ian King <[email protected]>
---
drivers/gpu/drm/nouveau/nv50_display.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/nouveau/nv50_display.c b/drivers/gpu/drm/nouveau/nv50_display.c
index f7b4326a4641..ed444ecd9e85 100644
--- a/drivers/gpu/drm/nouveau/nv50_display.c
+++ b/drivers/gpu/drm/nouveau/nv50_display.c
@@ -3141,7 +3141,7 @@ nv50_mstc_new(struct nv50_mstm *mstm, struct drm_dp_mst_port *port,
mstc->connector.funcs->reset(&mstc->connector);
nouveau_conn_attach_properties(&mstc->connector);

- for (i = 0; i < ARRAY_SIZE(mstm->msto) && mstm->msto; i++)
+ for (i = 0; i < ARRAY_SIZE(mstm->msto) && mstm->msto[i]; i++)
drm_mode_connector_attach_encoder(&mstc->connector, &mstm->msto[i]->encoder);

drm_object_attach_property(&mstc->connector.base, dev->mode_config.path_property, 0);
--
2.11.0


2017-08-17 22:07:14

by Ilia Mirkin

[permalink] [raw]
Subject: Re: [PATCH][V2] drm/nouveau: perform null check on msto[i] rathern than msto

On Thu, Aug 17, 2017 at 6:03 PM, Colin King <[email protected]> wrote:
> From: Colin Ian King <[email protected]>
>
> The null check on the array msto is incorrect since msto is never
> null. The null check should be instead on msto[i] since this is
> being dereferenced in the call to drm_mode_connector_attach_encoder.
>
> Thanks to Emil Velikov for pointing out the mistake in my original
> fix and for suggesting the correct fix.
>
> Detected by CoverityScan, CID#1375915 ("Array compared against 0")
>
> Fixes: f479c0ba4a17 ("drm/nouveau/kms/nv50: initial support for DP 1.2 multi-stream")
> Signed-off-by: Colin Ian King <[email protected]>
> ---
> drivers/gpu/drm/nouveau/nv50_display.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/nouveau/nv50_display.c b/drivers/gpu/drm/nouveau/nv50_display.c
> index f7b4326a4641..ed444ecd9e85 100644
> --- a/drivers/gpu/drm/nouveau/nv50_display.c
> +++ b/drivers/gpu/drm/nouveau/nv50_display.c
> @@ -3141,7 +3141,7 @@ nv50_mstc_new(struct nv50_mstm *mstm, struct drm_dp_mst_port *port,
> mstc->connector.funcs->reset(&mstc->connector);
> nouveau_conn_attach_properties(&mstc->connector);
>
> - for (i = 0; i < ARRAY_SIZE(mstm->msto) && mstm->msto; i++)
> + for (i = 0; i < ARRAY_SIZE(mstm->msto) && mstm->msto[i]; i++)

Ben will have to rule on which way is correct, but another
interpretation is that it should be

for (...; i < ARRAY_SIZE; i++)
if (mstm->msto[i])
do_stuff()

I haven't the faintest clue whether the msto array can have "holes" or not.

> drm_mode_connector_attach_encoder(&mstc->connector, &mstm->msto[i]->encoder);
>
> drm_object_attach_property(&mstc->connector.base, dev->mode_config.path_property, 0);
> --
> 2.11.0
>

2017-08-17 22:16:50

by Colin King

[permalink] [raw]
Subject: Re: [PATCH][V2] drm/nouveau: perform null check on msto[i] rathern than msto

On 17/08/17 23:07, Ilia Mirkin wrote:
> On Thu, Aug 17, 2017 at 6:03 PM, Colin King <[email protected]> wrote:
>> From: Colin Ian King <[email protected]>
>>
>> The null check on the array msto is incorrect since msto is never
>> null. The null check should be instead on msto[i] since this is
>> being dereferenced in the call to drm_mode_connector_attach_encoder.
>>
>> Thanks to Emil Velikov for pointing out the mistake in my original
>> fix and for suggesting the correct fix.
>>
>> Detected by CoverityScan, CID#1375915 ("Array compared against 0")
>>
>> Fixes: f479c0ba4a17 ("drm/nouveau/kms/nv50: initial support for DP 1.2 multi-stream")
>> Signed-off-by: Colin Ian King <[email protected]>
>> ---
>> drivers/gpu/drm/nouveau/nv50_display.c | 2 +-
>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/drivers/gpu/drm/nouveau/nv50_display.c b/drivers/gpu/drm/nouveau/nv50_display.c
>> index f7b4326a4641..ed444ecd9e85 100644
>> --- a/drivers/gpu/drm/nouveau/nv50_display.c
>> +++ b/drivers/gpu/drm/nouveau/nv50_display.c
>> @@ -3141,7 +3141,7 @@ nv50_mstc_new(struct nv50_mstm *mstm, struct drm_dp_mst_port *port,
>> mstc->connector.funcs->reset(&mstc->connector);
>> nouveau_conn_attach_properties(&mstc->connector);
>>
>> - for (i = 0; i < ARRAY_SIZE(mstm->msto) && mstm->msto; i++)
>> + for (i = 0; i < ARRAY_SIZE(mstm->msto) && mstm->msto[i]; i++)
>
> Ben will have to rule on which way is correct, but another
> interpretation is that it should be
>
> for (...; i < ARRAY_SIZE; i++)
> if (mstm->msto[i])
> do_stuff()

Yes, I suspect that is a better generic solution top cope with potential
"holes".
>
> I haven't the faintest clue whether the msto array can have "holes" or not.

Indeed. Let's see what Ben says.


>
>> drm_mode_connector_attach_encoder(&mstc->connector, &mstm->msto[i]->encoder);
>>
>> drm_object_attach_property(&mstc->connector.base, dev->mode_config.path_property, 0);
>> --
>> 2.11.0
>>
> --
> To unsubscribe from this list: send the line "unsubscribe kernel-janitors" in
> the body of a message to [email protected]
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>

2017-08-17 22:20:51

by Ben Skeggs

[permalink] [raw]
Subject: Re: [Nouveau] [PATCH][V2] drm/nouveau: perform null check on msto[i] rathern than msto

On 08/18/2017 08:16 AM, Colin Ian King wrote:
> On 17/08/17 23:07, Ilia Mirkin wrote:
>> On Thu, Aug 17, 2017 at 6:03 PM, Colin King <[email protected]> wrote:
>>> From: Colin Ian King <[email protected]>
>>>
>>> The null check on the array msto is incorrect since msto is never
>>> null. The null check should be instead on msto[i] since this is
>>> being dereferenced in the call to drm_mode_connector_attach_encoder.
>>>
>>> Thanks to Emil Velikov for pointing out the mistake in my original
>>> fix and for suggesting the correct fix.
>>>
>>> Detected by CoverityScan, CID#1375915 ("Array compared against 0")
>>>
>>> Fixes: f479c0ba4a17 ("drm/nouveau/kms/nv50: initial support for DP 1.2 multi-stream")
>>> Signed-off-by: Colin Ian King <[email protected]>
>>> ---
>>> drivers/gpu/drm/nouveau/nv50_display.c | 2 +-
>>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>>
>>> diff --git a/drivers/gpu/drm/nouveau/nv50_display.c b/drivers/gpu/drm/nouveau/nv50_display.c
>>> index f7b4326a4641..ed444ecd9e85 100644
>>> --- a/drivers/gpu/drm/nouveau/nv50_display.c
>>> +++ b/drivers/gpu/drm/nouveau/nv50_display.c
>>> @@ -3141,7 +3141,7 @@ nv50_mstc_new(struct nv50_mstm *mstm, struct drm_dp_mst_port *port,
>>> mstc->connector.funcs->reset(&mstc->connector);
>>> nouveau_conn_attach_properties(&mstc->connector);
>>>
>>> - for (i = 0; i < ARRAY_SIZE(mstm->msto) && mstm->msto; i++)
>>> + for (i = 0; i < ARRAY_SIZE(mstm->msto) && mstm->msto[i]; i++)
>>
>> Ben will have to rule on which way is correct, but another
>> interpretation is that it should be
>>
>> for (...; i < ARRAY_SIZE; i++)
>> if (mstm->msto[i])
>> do_stuff()
>
> Yes, I suspect that is a better generic solution top cope with potential
> "holes".
>>
>> I haven't the faintest clue whether the msto array can have "holes" or not.
>
> Indeed. Let's see what Ben says.
No, there can't be holes here. I believe the V2 patch to be correct.

Ben.
>
>
>>
>>> drm_mode_connector_attach_encoder(&mstc->connector, &mstm->msto[i]->encoder);
>>>
>>> drm_object_attach_property(&mstc->connector.base, dev->mode_config.path_property, 0);
>>> --
>>> 2.11.0
>>>
>> --
>> To unsubscribe from this list: send the line "unsubscribe kernel-janitors" in
>> the body of a message to [email protected]
>> More majordomo info at http://vger.kernel.org/majordomo-info.html
>>
>
> _______________________________________________
> Nouveau mailing list
> [email protected]
> https://lists.freedesktop.org/mailman/listinfo/nouveau
>


Attachments:
signature.asc (833.00 B)
OpenPGP digital signature

2017-08-17 22:23:55

by Ben Skeggs

[permalink] [raw]
Subject: Re: [Nouveau] [PATCH][V2] drm/nouveau: perform null check on msto[i] rathern than msto

On 08/18/2017 08:20 AM, Ben Skeggs wrote:
> On 08/18/2017 08:16 AM, Colin Ian King wrote:
>> On 17/08/17 23:07, Ilia Mirkin wrote:
>>> On Thu, Aug 17, 2017 at 6:03 PM, Colin King <[email protected]> wrote:
>>>> From: Colin Ian King <[email protected]>
>>>>
>>>> The null check on the array msto is incorrect since msto is never
>>>> null. The null check should be instead on msto[i] since this is
>>>> being dereferenced in the call to drm_mode_connector_attach_encoder.
>>>>
>>>> Thanks to Emil Velikov for pointing out the mistake in my original
>>>> fix and for suggesting the correct fix.
>>>>
>>>> Detected by CoverityScan, CID#1375915 ("Array compared against 0")
>>>>
>>>> Fixes: f479c0ba4a17 ("drm/nouveau/kms/nv50: initial support for DP 1.2 multi-stream")
>>>> Signed-off-by: Colin Ian King <[email protected]>
>>>> ---
>>>> drivers/gpu/drm/nouveau/nv50_display.c | 2 +-
>>>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>>>
>>>> diff --git a/drivers/gpu/drm/nouveau/nv50_display.c b/drivers/gpu/drm/nouveau/nv50_display.c
>>>> index f7b4326a4641..ed444ecd9e85 100644
>>>> --- a/drivers/gpu/drm/nouveau/nv50_display.c
>>>> +++ b/drivers/gpu/drm/nouveau/nv50_display.c
>>>> @@ -3141,7 +3141,7 @@ nv50_mstc_new(struct nv50_mstm *mstm, struct drm_dp_mst_port *port,
>>>> mstc->connector.funcs->reset(&mstc->connector);
>>>> nouveau_conn_attach_properties(&mstc->connector);
>>>>
>>>> - for (i = 0; i < ARRAY_SIZE(mstm->msto) && mstm->msto; i++)
>>>> + for (i = 0; i < ARRAY_SIZE(mstm->msto) && mstm->msto[i]; i++)
>>>
>>> Ben will have to rule on which way is correct, but another
>>> interpretation is that it should be
>>>
>>> for (...; i < ARRAY_SIZE; i++)
>>> if (mstm->msto[i])
>>> do_stuff()
>>
>> Yes, I suspect that is a better generic solution top cope with potential
>> "holes".
>>>
>>> I haven't the faintest clue whether the msto array can have "holes" or not.
>>
>> Indeed. Let's see what Ben says.
> No, there can't be holes here. I believe the V2 patch to be correct.
Also, I've taken the patch in my tree, and will get it to Dave at some
point.

Thank you!
Ben.

>
> Ben.
>>
>>
>>>
>>>> drm_mode_connector_attach_encoder(&mstc->connector, &mstm->msto[i]->encoder);
>>>>
>>>> drm_object_attach_property(&mstc->connector.base, dev->mode_config.path_property, 0);
>>>> --
>>>> 2.11.0
>>>>
>>> --
>>> To unsubscribe from this list: send the line "unsubscribe kernel-janitors" in
>>> the body of a message to [email protected]
>>> More majordomo info at http://vger.kernel.org/majordomo-info.html
>>>
>>
>> _______________________________________________
>> Nouveau mailing list
>> [email protected]
>> https://lists.freedesktop.org/mailman/listinfo/nouveau
>>
>


Attachments:
signature.asc (833.00 B)
OpenPGP digital signature