All of lore.kernel.org
 help / color / mirror / Atom feed
From: Boris Brezillon <boris.brezillon@collabora.com>
To: Harshit Mogalapalli <harshit.m.mogalapalli@oracle.com>
Cc: Steven Price <steven.price@arm.com>,
	Liviu Dudau <liviu.dudau@arm.com>,
	Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
	Maxime Ripard <mripard@kernel.org>,
	Thomas Zimmermann <tzimmermann@suse.de>,
	David Airlie <airlied@gmail.com>, Daniel Vetter <daniel@ffwll.ch>,
	Heiko Stuebner <heiko@sntech.de>,
	dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org,
	dan.carpenter@linaro.org, kernel-janitors@vger.kernel.org,
	error27@gmail.com
Subject: Re: [PATCH] drm/panthor: Fix NULL vs IS_ERR() bug in panthor_ioctl_tiler_heap_destroy()
Date: Tue, 2 Apr 2024 15:25:19 +0200	[thread overview]
Message-ID: <20240402152519.48857445@collabora.com> (raw)
In-Reply-To: <99b0bc65-a3ce-4522-a1dd-a304498fc453@oracle.com>

On Tue, 2 Apr 2024 18:52:12 +0530
Harshit Mogalapalli <harshit.m.mogalapalli@oracle.com> wrote:

> Hello Boris,
> 
> On 02/04/24 18:03, Boris Brezillon wrote:
> > Hello Harshit,
> > 
> > On Tue,  2 Apr 2024 03:33:58 -0700
> > Harshit Mogalapalli <harshit.m.mogalapalli@oracle.com> wrote:
> >   
> >> panthor_vm_get_heap_pool() returns ERR_PTR on failure.
> >>
> >> Fixes: 4bdca1150792 ("drm/panthor: Add the driver frontend block")
> >> Signed-off-by: Harshit Mogalapalli <harshit.m.mogalapalli@oracle.com>
> >> ---
> >> This is spotted by smatch and the patch is only compile tested
> >> ---
> >>   drivers/gpu/drm/panthor/panthor_drv.c | 4 ++--
> >>   1 file changed, 2 insertions(+), 2 deletions(-)
> >>
> >> diff --git a/drivers/gpu/drm/panthor/panthor_drv.c b/drivers/gpu/drm/panthor/panthor_drv.c
> >> index 11b3ccd58f85..050b905b0453 100644
> >> --- a/drivers/gpu/drm/panthor/panthor_drv.c
> >> +++ b/drivers/gpu/drm/panthor/panthor_drv.c
> >> @@ -1090,8 +1090,8 @@ static int panthor_ioctl_tiler_heap_destroy(struct drm_device *ddev, void *data,
> >>   		return -EINVAL;
> >>   
> >>   	pool = panthor_vm_get_heap_pool(vm, false);
> >> -	if (!pool) {
> >> -		ret = -EINVAL;
> >> +	if (IS_ERR(pool)) {
> >> +		ret = PTR_ERR(pool);  
> > 
> > Actually, panthor_vm_get_heap_pool() will return NULL if there's no
> > heap pool attached to this VM and create=false, so this was correct.
> > This being said, I'm fine making that consistent by returning
> > ERR_PTR(-ENOENT) instead of NULL in that case. This way we don't have
> > two different semantics based on the 'create' value.
> >   
> 
> Thanks for explaining. I missed the case where create is false and there 
> is no heap pool attached, so panthor_vm_get_heap_pool() can return NULL.
> 
> 1878  *
> 1879  * Return: A valid pointer on success, an ERR_PTR() otherwise.
> 1880  */
> 1881 struct panthor_heap_pool *panthor_vm_get_heap_pool(struct 
> panthor_vm *vm, bool create)
> 
> The documentation says it returns ERR_PTR() on failure, so is it worth 
> doing something like:
> 
> diff --git a/drivers/gpu/drm/panthor/panthor_mmu.c 
> b/drivers/gpu/drm/panthor/panthor_mmu.c
> index fdd35249169f..e1285cdb09ff 100644
> --- a/drivers/gpu/drm/panthor/panthor_mmu.c
> +++ b/drivers/gpu/drm/panthor/panthor_mmu.c
> @@ -1893,6 +1893,8 @@ struct panthor_heap_pool 
> *panthor_vm_get_heap_pool(struct panthor_vm *vm, bool c
>                          vm->heaps.pool = panthor_heap_pool_get(pool);
>          } else {
>                  pool = panthor_heap_pool_get(vm->heaps.pool);
> +               if (!pool)
> +                       pool = ERR_PTR(-ENOENT);
>          }
>          mutex_unlock(&vm->heaps.lock);
> 
> 
> and change all callers of panthor_vm_get_heap_pool() to only check for 
> IS_ERR() ?

Yep, that's what I had in mind.

> 
> 
> > Oh, and please merge everything into a single patch instead of one patch
> > per call-site.
> >   
> 
> Sure, I noticed one after the other. I will fix them together in v2.

Great!

Thanks,

Boris

      reply	other threads:[~2024-04-02 13:25 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-04-02 10:33 [PATCH] drm/panthor: Fix NULL vs IS_ERR() bug in panthor_ioctl_tiler_heap_destroy() Harshit Mogalapalli
2024-04-02 12:33 ` Boris Brezillon
2024-04-02 13:22   ` Harshit Mogalapalli
2024-04-02 13:25     ` Boris Brezillon [this message]

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=20240402152519.48857445@collabora.com \
    --to=boris.brezillon@collabora.com \
    --cc=airlied@gmail.com \
    --cc=dan.carpenter@linaro.org \
    --cc=daniel@ffwll.ch \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=error27@gmail.com \
    --cc=harshit.m.mogalapalli@oracle.com \
    --cc=heiko@sntech.de \
    --cc=kernel-janitors@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=liviu.dudau@arm.com \
    --cc=maarten.lankhorst@linux.intel.com \
    --cc=mripard@kernel.org \
    --cc=steven.price@arm.com \
    --cc=tzimmermann@suse.de \
    /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.