All of lore.kernel.org
 help / color / mirror / Atom feed
From: Carsten Haitzler <carsten.haitzler@foss.arm.com>
To: dri-devel@lists.freedesktop.org
Subject: Re: [PATCH] drm/plane: Move range check for format_count earlier
Date: Fri, 3 Dec 2021 16:33:13 +0000	[thread overview]
Message-ID: <f8803e4d-afc1-c3c6-39f4-14bea52f003f@foss.arm.com> (raw)
In-Reply-To: <YaoWxOk0hCuVZpoz@e110455-lin.cambridge.arm.com>

On 12/3/21 13:08, Liviu Dudau wrote:
> On Fri, Dec 03, 2021 at 10:28:15AM +0000, Steven Price wrote:
>> While the check for format_count > 64 in __drm_universal_plane_init()
>> shouldn't be hit (it's a WARN_ON), in its current position it will then
>> leak the plane->format_types array and fail to call
>> drm_mode_object_unregister() leaking the modeset identifier. Move it to
>> the start of the function to avoid allocating those resources in the
>> first place.
>>
>> Signed-off-by: Steven Price <steven.price@arm.com>
> 
> Well spotted!
> 
> Reviewed-by: Liviu Dudau <liviu.dudau@arm.com>
> 
> I'm going to wait to see if anyone else has any comments before I'll merge this into
> drm-misc-fixes (or should it be drm-misc-next-fixes?)

This definitely looks to fix an ugly I spotted too while looking at your 
prior patch thinking it might be wrong so a +1 from me.

> Best regards,
> Liviu
> 
>> ---
>>   drivers/gpu/drm/drm_plane.c | 14 +++++++-------
>>   1 file changed, 7 insertions(+), 7 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/drm_plane.c b/drivers/gpu/drm/drm_plane.c
>> index 82afb854141b..fd0bf90fb4c2 100644
>> --- a/drivers/gpu/drm/drm_plane.c
>> +++ b/drivers/gpu/drm/drm_plane.c
>> @@ -249,6 +249,13 @@ static int __drm_universal_plane_init(struct drm_device *dev,
>>   	if (WARN_ON(config->num_total_plane >= 32))
>>   		return -EINVAL;
>>   
>> +	/*
>> +	 * First driver to need more than 64 formats needs to fix this. Each
>> +	 * format is encoded as a bit and the current code only supports a u64.
>> +	 */
>> +	if (WARN_ON(format_count > 64))
>> +		return -EINVAL;
>> +
>>   	WARN_ON(drm_drv_uses_atomic_modeset(dev) &&
>>   		(!funcs->atomic_destroy_state ||
>>   		 !funcs->atomic_duplicate_state));
>> @@ -270,13 +277,6 @@ static int __drm_universal_plane_init(struct drm_device *dev,
>>   		return -ENOMEM;
>>   	}
>>   
>> -	/*
>> -	 * First driver to need more than 64 formats needs to fix this. Each
>> -	 * format is encoded as a bit and the current code only supports a u64.
>> -	 */
>> -	if (WARN_ON(format_count > 64))
>> -		return -EINVAL;
>> -
>>   	if (format_modifiers) {
>>   		const uint64_t *temp_modifiers = format_modifiers;
>>   
>> -- 
>> 2.25.1
>>
> 


  reply	other threads:[~2021-12-03 16:33 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-12-03 10:28 [PATCH] drm/plane: Move range check for format_count earlier Steven Price
2021-12-03 10:28 ` Steven Price
2021-12-03 13:08 ` Liviu Dudau
2021-12-03 13:08   ` Liviu Dudau
2021-12-03 16:33   ` Carsten Haitzler [this message]
2022-04-28 11:57   ` Steven Price
2022-04-28 11:57     ` Steven Price
2022-04-28 15:00     ` Liviu Dudau
2022-04-28 15:00       ` Liviu Dudau

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=f8803e4d-afc1-c3c6-39f4-14bea52f003f@foss.arm.com \
    --to=carsten.haitzler@foss.arm.com \
    --cc=dri-devel@lists.freedesktop.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.