From: Eric Engestrom <eric.engestrom@imgtec.com>
To: Tom Gundersen <teg@jklm.no>
Cc: dri-devel@lists.freedesktop.org
Subject: Re: [PATCH 2/2] drm: Don't swallow error codes in drm_dev_alloc()
Date: Thu, 22 Sep 2016 10:47:14 +0100 [thread overview]
Message-ID: <20160922094714.GA12201@imgtec.com> (raw)
In-Reply-To: <20160921145919.13754-2-teg@jklm.no>
On Wed, Sep 21, 2016 at 04:59:19PM +0200, Tom Gundersen wrote:
> There are many reasons other than ENOMEM that drm_dev_init() can
> fail. Return ERR_PTR rather than NULL to be able to distinguish
> these in the caller.
>
> Signed-off-by: Tom Gundersen <teg@jklm.no>
Looks good to me :)
Assuming you fixed all the drm_dev_alloc() calls, which a quick grep
seems to confirm, this series is:
Reviewed-by: Eric Engestrom <eric.engestrom@imgtec.com>
BTW, this looks like a task for coccinelle; is that what you used?
If so, you could include your .cocci patch in the commit msg?
Cheers,
Eric
> ---
> drivers/gpu/drm/arc/arcpgu_drv.c | 4 ++--
> drivers/gpu/drm/arm/hdlcd_drv.c | 4 ++--
> drivers/gpu/drm/arm/malidp_drv.c | 4 ++--
> drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c | 4 ++--
> drivers/gpu/drm/drm_drv.c | 6 +++---
> drivers/gpu/drm/drm_pci.c | 4 ++--
> drivers/gpu/drm/drm_platform.c | 4 ++--
> drivers/gpu/drm/etnaviv/etnaviv_drv.c | 4 ++--
> drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c | 4 ++--
> drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c | 4 ++--
> drivers/gpu/drm/mediatek/mtk_drm_drv.c | 4 ++--
> drivers/gpu/drm/msm/msm_drv.c | 4 ++--
> drivers/gpu/drm/nouveau/nouveau_drm.c | 4 ++--
> drivers/gpu/drm/rcar-du/rcar_du_drv.c | 4 ++--
> drivers/gpu/drm/rockchip/rockchip_drm_drv.c | 4 ++--
> drivers/gpu/drm/sti/sti_drv.c | 4 ++--
> drivers/gpu/drm/sun4i/sun4i_drv.c | 4 ++--
> drivers/gpu/drm/tegra/drm.c | 4 ++--
> drivers/gpu/drm/udl/udl_drv.c | 4 ++--
> drivers/gpu/drm/vc4/vc4_drv.c | 4 ++--
> drivers/gpu/drm/vgem/vgem_drv.c | 4 ++--
> drivers/gpu/drm/virtio/virtgpu_drm_bus.c | 4 ++--
> 22 files changed, 45 insertions(+), 45 deletions(-)
>
> diff --git a/drivers/gpu/drm/arc/arcpgu_drv.c b/drivers/gpu/drm/arc/arcpgu_drv.c
> index 6d4ff34..28e6471 100644
> --- a/drivers/gpu/drm/arc/arcpgu_drv.c
> +++ b/drivers/gpu/drm/arc/arcpgu_drv.c
> @@ -198,8 +198,8 @@ static int arcpgu_probe(struct platform_device *pdev)
> int ret;
>
> drm = drm_dev_alloc(&arcpgu_drm_driver, &pdev->dev);
> - if (!drm)
> - return -ENOMEM;
> + if (IS_ERR(drm))
> + return PTR_ERR(drm);
>
> ret = arcpgu_load(drm);
> if (ret)
> diff --git a/drivers/gpu/drm/arm/hdlcd_drv.c b/drivers/gpu/drm/arm/hdlcd_drv.c
> index d83b46a..fb6a418 100644
> --- a/drivers/gpu/drm/arm/hdlcd_drv.c
> +++ b/drivers/gpu/drm/arm/hdlcd_drv.c
> @@ -326,8 +326,8 @@ static int hdlcd_drm_bind(struct device *dev)
> return -ENOMEM;
>
> drm = drm_dev_alloc(&hdlcd_driver, dev);
> - if (!drm)
> - return -ENOMEM;
> + if (IS_ERR(drm))
> + return PTR_ERR(drm);
>
> drm->dev_private = hdlcd;
> dev_set_drvdata(dev, drm);
> diff --git a/drivers/gpu/drm/arm/malidp_drv.c b/drivers/gpu/drm/arm/malidp_drv.c
> index c383d72..9280358 100644
> --- a/drivers/gpu/drm/arm/malidp_drv.c
> +++ b/drivers/gpu/drm/arm/malidp_drv.c
> @@ -311,8 +311,8 @@ static int malidp_bind(struct device *dev)
> return ret;
>
> drm = drm_dev_alloc(&malidp_driver, dev);
> - if (!drm) {
> - ret = -ENOMEM;
> + if (IS_ERR(drm)) {
> + ret = PTR_ERR(drm);
> goto alloc_fail;
> }
>
> diff --git a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
> index 8e7483d..5f48431 100644
> --- a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
> +++ b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
> @@ -797,8 +797,8 @@ static int atmel_hlcdc_dc_drm_probe(struct platform_device *pdev)
> int ret;
>
> ddev = drm_dev_alloc(&atmel_hlcdc_dc_driver, &pdev->dev);
> - if (!ddev)
> - return -ENOMEM;
> + if (IS_ERR(ddev))
> + return PTR_ERR(ddev);
>
> ret = atmel_hlcdc_dc_load(ddev);
> if (ret)
> diff --git a/drivers/gpu/drm/drm_drv.c b/drivers/gpu/drm/drm_drv.c
> index 99e6751..80c7f25 100644
> --- a/drivers/gpu/drm/drm_drv.c
> +++ b/drivers/gpu/drm/drm_drv.c
> @@ -591,7 +591,7 @@ EXPORT_SYMBOL(drm_dev_init);
> * own struct should look at using drm_dev_init() instead.
> *
> * RETURNS:
> - * Pointer to new DRM device, or NULL if out of memory.
> + * Pointer to new DRM device, or ERR_PTR on failure.
> */
> struct drm_device *drm_dev_alloc(struct drm_driver *driver,
> struct device *parent)
> @@ -601,12 +601,12 @@ struct drm_device *drm_dev_alloc(struct drm_driver *driver,
>
> dev = kzalloc(sizeof(*dev), GFP_KERNEL);
> if (!dev)
> - return NULL;
> + return ERR_PTR(-ENOMEM);
>
> ret = drm_dev_init(dev, driver, parent);
> if (ret) {
> kfree(dev);
> - return NULL;
> + return ERR_PTR(ret);
> }
>
> return dev;
> diff --git a/drivers/gpu/drm/drm_pci.c b/drivers/gpu/drm/drm_pci.c
> index d86362f..3ceea9c 100644
> --- a/drivers/gpu/drm/drm_pci.c
> +++ b/drivers/gpu/drm/drm_pci.c
> @@ -236,8 +236,8 @@ int drm_get_pci_dev(struct pci_dev *pdev, const struct pci_device_id *ent,
> DRM_DEBUG("\n");
>
> dev = drm_dev_alloc(driver, &pdev->dev);
> - if (!dev)
> - return -ENOMEM;
> + if (IS_ERR(dev))
> + return PTR_ERR(dev);
>
> ret = pci_enable_device(pdev);
> if (ret)
> diff --git a/drivers/gpu/drm/drm_platform.c b/drivers/gpu/drm/drm_platform.c
> index 2c819ef..0262698 100644
> --- a/drivers/gpu/drm/drm_platform.c
> +++ b/drivers/gpu/drm/drm_platform.c
> @@ -48,8 +48,8 @@ static int drm_get_platform_dev(struct platform_device *platdev,
> DRM_DEBUG("\n");
>
> dev = drm_dev_alloc(driver, &platdev->dev);
> - if (!dev)
> - return -ENOMEM;
> + if (IS_ERR(dev))
> + return PTR_ERR(dev);
>
> dev->platformdev = platdev;
>
> diff --git a/drivers/gpu/drm/etnaviv/etnaviv_drv.c b/drivers/gpu/drm/etnaviv/etnaviv_drv.c
> index e3164d9..aa68766 100644
> --- a/drivers/gpu/drm/etnaviv/etnaviv_drv.c
> +++ b/drivers/gpu/drm/etnaviv/etnaviv_drv.c
> @@ -529,8 +529,8 @@ static int etnaviv_bind(struct device *dev)
> int ret;
>
> drm = drm_dev_alloc(&etnaviv_drm_driver, dev);
> - if (!drm)
> - return -ENOMEM;
> + if (IS_ERR(drm))
> + return PTR_ERR(drm);
>
> priv = kzalloc(sizeof(*priv), GFP_KERNEL);
> if (!priv) {
> diff --git a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
> index 7882387..0d2ae94 100644
> --- a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
> +++ b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
> @@ -402,8 +402,8 @@ static int fsl_dcu_drm_probe(struct platform_device *pdev)
> fsl_dev->tcon = fsl_tcon_init(dev);
>
> drm = drm_dev_alloc(driver, dev);
> - if (!drm) {
> - ret = -ENOMEM;
> + if (IS_ERR(drm)) {
> + ret = PTR_ERR(drm);
> goto disable_pix_clk;
> }
>
> diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c
> index 1fc2f50..90377a6 100644
> --- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c
> +++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c
> @@ -207,8 +207,8 @@ static int kirin_drm_bind(struct device *dev)
> int ret;
>
> drm_dev = drm_dev_alloc(driver, dev);
> - if (!drm_dev)
> - return -ENOMEM;
> + if (IS_ERR(drm_dev))
> + return PTR_ERR(drm_dev);
>
> drm_dev->platformdev = to_platform_device(dev);
>
> diff --git a/drivers/gpu/drm/mediatek/mtk_drm_drv.c b/drivers/gpu/drm/mediatek/mtk_drm_drv.c
> index 72c1ae4..cf83f65 100644
> --- a/drivers/gpu/drm/mediatek/mtk_drm_drv.c
> +++ b/drivers/gpu/drm/mediatek/mtk_drm_drv.c
> @@ -294,8 +294,8 @@ static int mtk_drm_bind(struct device *dev)
> int ret;
>
> drm = drm_dev_alloc(&mtk_drm_driver, dev);
> - if (!drm)
> - return -ENOMEM;
> + if (IS_ERR(drm))
> + return PTR_ERR(drm);
>
> drm->dev_private = private;
> private->drm = drm;
> diff --git a/drivers/gpu/drm/msm/msm_drv.c b/drivers/gpu/drm/msm/msm_drv.c
> index 8a02370..042bde4 100644
> --- a/drivers/gpu/drm/msm/msm_drv.c
> +++ b/drivers/gpu/drm/msm/msm_drv.c
> @@ -347,9 +347,9 @@ static int msm_drm_init(struct device *dev, struct drm_driver *drv)
> int ret;
>
> ddev = drm_dev_alloc(drv, dev);
> - if (!ddev) {
> + if (IS_ERR(ddev)) {
> dev_err(dev, "failed to allocate drm_device\n");
> - return -ENOMEM;
> + return PTR_ERR(ddev);
> }
>
> platform_set_drvdata(pdev, ddev);
> diff --git a/drivers/gpu/drm/nouveau/nouveau_drm.c b/drivers/gpu/drm/nouveau/nouveau_drm.c
> index 652ab11..3100fd88 100644
> --- a/drivers/gpu/drm/nouveau/nouveau_drm.c
> +++ b/drivers/gpu/drm/nouveau/nouveau_drm.c
> @@ -1067,8 +1067,8 @@ nouveau_platform_device_create(const struct nvkm_device_tegra_func *func,
> goto err_free;
>
> drm = drm_dev_alloc(&driver_platform, &pdev->dev);
> - if (!drm) {
> - err = -ENOMEM;
> + if (IS_ERR(drm)) {
> + err = PTR_ERR(drm);
> goto err_free;
> }
>
> diff --git a/drivers/gpu/drm/rcar-du/rcar_du_drv.c b/drivers/gpu/drm/rcar-du/rcar_du_drv.c
> index 899ef7a..73c971e 100644
> --- a/drivers/gpu/drm/rcar-du/rcar_du_drv.c
> +++ b/drivers/gpu/drm/rcar-du/rcar_du_drv.c
> @@ -316,8 +316,8 @@ static int rcar_du_probe(struct platform_device *pdev)
> rcdu->info = of_match_device(rcar_du_of_table, rcdu->dev)->data;
>
> ddev = drm_dev_alloc(&rcar_du_driver, &pdev->dev);
> - if (!ddev)
> - return -ENOMEM;
> + if (IS_ERR(ddev))
> + return PTR_ERR(ddev);
>
> rcdu->ddev = ddev;
> ddev->dev_private = rcdu;
> diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
> index 76eaf1d..446b5d7 100644
> --- a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
> +++ b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
> @@ -143,8 +143,8 @@ static int rockchip_drm_bind(struct device *dev)
> int ret;
>
> drm_dev = drm_dev_alloc(&rockchip_drm_driver, dev);
> - if (!drm_dev)
> - return -ENOMEM;
> + if (IS_ERR(drm_dev))
> + return PTR_ERR(drm_dev);
>
> dev_set_drvdata(dev, drm_dev);
>
> diff --git a/drivers/gpu/drm/sti/sti_drv.c b/drivers/gpu/drm/sti/sti_drv.c
> index 7cd3804..49ed3c4 100644
> --- a/drivers/gpu/drm/sti/sti_drv.c
> +++ b/drivers/gpu/drm/sti/sti_drv.c
> @@ -365,8 +365,8 @@ static int sti_bind(struct device *dev)
> int ret;
>
> ddev = drm_dev_alloc(&sti_driver, dev);
> - if (!ddev)
> - return -ENOMEM;
> + if (IS_ERR(ddev))
> + return PTR_ERR(ddev);
>
> ddev->platformdev = to_platform_device(dev);
>
> diff --git a/drivers/gpu/drm/sun4i/sun4i_drv.c b/drivers/gpu/drm/sun4i/sun4i_drv.c
> index 9059e3e..0da9862 100644
> --- a/drivers/gpu/drm/sun4i/sun4i_drv.c
> +++ b/drivers/gpu/drm/sun4i/sun4i_drv.c
> @@ -121,8 +121,8 @@ static int sun4i_drv_bind(struct device *dev)
> int ret;
>
> drm = drm_dev_alloc(&sun4i_drv_driver, dev);
> - if (!drm)
> - return -ENOMEM;
> + if (IS_ERR(drm))
> + return PTR_ERR(drm);
>
> drv = devm_kzalloc(dev, sizeof(*drv), GFP_KERNEL);
> if (!drv) {
> diff --git a/drivers/gpu/drm/tegra/drm.c b/drivers/gpu/drm/tegra/drm.c
> index 4b9f1c7..8ab47b5 100644
> --- a/drivers/gpu/drm/tegra/drm.c
> +++ b/drivers/gpu/drm/tegra/drm.c
> @@ -983,8 +983,8 @@ static int host1x_drm_probe(struct host1x_device *dev)
> int err;
>
> drm = drm_dev_alloc(driver, &dev->dev);
> - if (!drm)
> - return -ENOMEM;
> + if (IS_ERR(drm))
> + return PTR_ERR(drm);
>
> dev_set_drvdata(&dev->dev, drm);
>
> diff --git a/drivers/gpu/drm/udl/udl_drv.c b/drivers/gpu/drm/udl/udl_drv.c
> index f0851db..cc45d98 100644
> --- a/drivers/gpu/drm/udl/udl_drv.c
> +++ b/drivers/gpu/drm/udl/udl_drv.c
> @@ -86,8 +86,8 @@ static int udl_usb_probe(struct usb_interface *interface,
> int r;
>
> dev = drm_dev_alloc(&driver, &interface->dev);
> - if (!dev)
> - return -ENOMEM;
> + if (IS_ERR(dev))
> + return PTR_ERR(dev);
>
> r = drm_dev_register(dev, (unsigned long)udev);
> if (r)
> diff --git a/drivers/gpu/drm/vc4/vc4_drv.c b/drivers/gpu/drm/vc4/vc4_drv.c
> index deec535..3c9e7f6 100644
> --- a/drivers/gpu/drm/vc4/vc4_drv.c
> +++ b/drivers/gpu/drm/vc4/vc4_drv.c
> @@ -233,8 +233,8 @@ static int vc4_drm_bind(struct device *dev)
> return -ENOMEM;
>
> drm = drm_dev_alloc(&vc4_drm_driver, dev);
> - if (!drm)
> - return -ENOMEM;
> + if (IS_ERR(drm))
> + return PTR_ERR(drm);
> platform_set_drvdata(pdev, drm);
> vc4->dev = drm;
> drm->dev_private = vc4;
> diff --git a/drivers/gpu/drm/vgem/vgem_drv.c b/drivers/gpu/drm/vgem/vgem_drv.c
> index c15bafb..f36c147 100644
> --- a/drivers/gpu/drm/vgem/vgem_drv.c
> +++ b/drivers/gpu/drm/vgem/vgem_drv.c
> @@ -334,8 +334,8 @@ static int __init vgem_init(void)
> int ret;
>
> vgem_device = drm_dev_alloc(&vgem_driver, NULL);
> - if (!vgem_device) {
> - ret = -ENOMEM;
> + if (IS_ERR(vgem_device)) {
> + ret = PTR_ERR(vgem_device);
> goto out;
> }
>
> diff --git a/drivers/gpu/drm/virtio/virtgpu_drm_bus.c b/drivers/gpu/drm/virtio/virtgpu_drm_bus.c
> index a59d0e3..26197dd 100644
> --- a/drivers/gpu/drm/virtio/virtgpu_drm_bus.c
> +++ b/drivers/gpu/drm/virtio/virtgpu_drm_bus.c
> @@ -54,8 +54,8 @@ int drm_virtio_init(struct drm_driver *driver, struct virtio_device *vdev)
> int ret;
>
> dev = drm_dev_alloc(driver, &vdev->dev);
> - if (!dev)
> - return -ENOMEM;
> + if (IS_ERR(dev))
> + return PTR_ERR(dev);
> dev->virtdev = vdev;
> vdev->priv = dev;
>
> --
> 2.9.3
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
next prev parent reply other threads:[~2016-09-22 13:33 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-09-21 14:59 [PATCH 1/2] drm: Distinguish no name from ENOMEM in set_unique() Tom Gundersen
2016-09-21 14:59 ` [PATCH 2/2] drm: Don't swallow error codes in drm_dev_alloc() Tom Gundersen
2016-09-22 6:25 ` Daniel Vetter
2016-09-22 7:31 ` David Herrmann
2016-09-22 9:47 ` Eric Engestrom [this message]
2016-09-22 10:17 ` Tom Gundersen
2016-09-22 12:07 ` Sean Paul
2016-09-22 6:08 ` [PATCH 1/2] drm: Distinguish no name from ENOMEM in set_unique() Daniel Vetter
2016-09-22 6:28 ` Emil Velikov
2016-09-22 10:13 ` Tom Gundersen
2016-09-22 12:07 ` Sean Paul
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=20160922094714.GA12201@imgtec.com \
--to=eric.engestrom@imgtec.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=teg@jklm.no \
/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.