[bug report] drm/prime: replace NULL with error value in drm_prime_pages_to_sg

YoungJun Cho yj44.cho at gmail.com
Fri Jun 15 03:22:08 UTC 2018


Dear Dan,

Your mail flashes back to my memory 5 years ago.
Back then, I had cleaned up the exynos driver.

And the replacement IS_ERR was one of items.

IMHO it is still better to modify those two functions,
drm_gem_cma_prime_get_sg_table and xen_drm_front_gem_get_sg_table.

Thank you.
Best regards YJ


On Thu, 14 Jun 2018, 23:42 Dan Carpenter, <dan.carpenter at oracle.com> wrote:

> Hello YoungJun Cho,
>
> The patch 7e3d88f9cce3: "drm/prime: replace NULL with error value in
> drm_prime_pages_to_sg" from Jun 24, 2013, leads to the following
> static checker warning:
>
>         drivers/gpu/drm/drm_prime.c:317 drm_gem_map_dma_buf()
>         warn: 'sgt' can also be NULL
>
> drivers/gpu/drm/drm_prime.c
>    307          /*
>    308           * two mappings with different directions for the same
> attachment are
>    309           * not allowed
>    310           */
>    311          if (WARN_ON(prime_attach->dir != DMA_NONE))
>    312                  return ERR_PTR(-EBUSY);
>    313
>    314          sgt = obj->dev->driver->gem_prime_get_sg_table(obj);
>
> The problematic functions here are drm_gem_cma_prime_get_sg_table() and
> xen_drm_front_gem_get_sg_table().  My preference would be to update
> those functions to return error pointers, but I'm not familiar with the
> code or able to test it.
>
> But this static checker test seems pretty good so I'm likely to publish
> it soon and then this sort of bug will normally be caught quickly.
>
>    315
>    316          if (!IS_ERR(sgt)) {
>    317                  if (!dma_map_sg_attrs(attach->dev, sgt->sgl,
> sgt->nents, dir,
>    318                                        DMA_ATTR_SKIP_CPU_SYNC)) {
>    319                          sg_free_table(sgt);
>    320                          kfree(sgt);
>    321                          sgt = ERR_PTR(-ENOMEM);
>    322                  } else {
>    323                          prime_attach->sgt = sgt;
>    324                          prime_attach->dir = dir;
>    325                  }
>    326          }
>    327
>    328          return sgt;
>
> regards,
> dan carpenter
> _______________________________________________
> dri-devel mailing list
> dri-devel at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/dri-devel/attachments/20180615/52b3d34b/attachment.html>


More information about the dri-devel mailing list