All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/2] drm: Distinguish no name from ENOMEM in set_unique()
@ 2016-09-21 14:59 Tom Gundersen
  2016-09-21 14:59 ` [PATCH 2/2] drm: Don't swallow error codes in drm_dev_alloc() Tom Gundersen
                   ` (3 more replies)
  0 siblings, 4 replies; 11+ messages in thread
From: Tom Gundersen @ 2016-09-21 14:59 UTC (permalink / raw)
  To: dri-devel

If passing name == NULL to drm_drv_set_unique() we now get -ENOMEM
as kstrdup() returns NULL. Instead check for this explicitly and
return -EINVAL if no name is provided.

Signed-off-by: Tom Gundersen <teg@jklm.no>
---
 drivers/gpu/drm/drm_drv.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/gpu/drm/drm_drv.c b/drivers/gpu/drm/drm_drv.c
index f2f6429..99e6751 100644
--- a/drivers/gpu/drm/drm_drv.c
+++ b/drivers/gpu/drm/drm_drv.c
@@ -338,6 +338,9 @@ void drm_minor_release(struct drm_minor *minor)
 
 static int drm_dev_set_unique(struct drm_device *dev, const char *name)
 {
+	if (!name)
+		return -EINVAL;
+
 	kfree(dev->unique);
 	dev->unique = kstrdup(name, GFP_KERNEL);
 
-- 
2.9.3

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [PATCH 2/2] drm: Don't swallow error codes in drm_dev_alloc()
  2016-09-21 14:59 [PATCH 1/2] drm: Distinguish no name from ENOMEM in set_unique() Tom Gundersen
@ 2016-09-21 14:59 ` Tom Gundersen
  2016-09-22  6:25   ` Daniel Vetter
                     ` (3 more replies)
  2016-09-22  6:08 ` [PATCH 1/2] drm: Distinguish no name from ENOMEM in set_unique() Daniel Vetter
                   ` (2 subsequent siblings)
  3 siblings, 4 replies; 11+ messages in thread
From: Tom Gundersen @ 2016-09-21 14:59 UTC (permalink / raw)
  To: dri-devel

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>
---
 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

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* Re: [PATCH 1/2] drm: Distinguish no name from ENOMEM in set_unique()
  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:08 ` Daniel Vetter
  2016-09-22  6:28 ` Emil Velikov
  2016-09-22 12:07 ` Sean Paul
  3 siblings, 0 replies; 11+ messages in thread
From: Daniel Vetter @ 2016-09-22  6:08 UTC (permalink / raw)
  To: Tom Gundersen; +Cc: dri-devel

On Wed, Sep 21, 2016 at 04:59:18PM +0200, Tom Gundersen wrote:
> If passing name == NULL to drm_drv_set_unique() we now get -ENOMEM
> as kstrdup() returns NULL. Instead check for this explicitly and
> return -EINVAL if no name is provided.
> 
> Signed-off-by: Tom Gundersen <teg@jklm.no>

Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>

> ---
>  drivers/gpu/drm/drm_drv.c | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/drivers/gpu/drm/drm_drv.c b/drivers/gpu/drm/drm_drv.c
> index f2f6429..99e6751 100644
> --- a/drivers/gpu/drm/drm_drv.c
> +++ b/drivers/gpu/drm/drm_drv.c
> @@ -338,6 +338,9 @@ void drm_minor_release(struct drm_minor *minor)
>  
>  static int drm_dev_set_unique(struct drm_device *dev, const char *name)
>  {
> +	if (!name)
> +		return -EINVAL;
> +
>  	kfree(dev->unique);
>  	dev->unique = kstrdup(name, GFP_KERNEL);
>  
> -- 
> 2.9.3
> 
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel

-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH 2/2] drm: Don't swallow error codes in drm_dev_alloc()
  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
                     ` (2 subsequent siblings)
  3 siblings, 0 replies; 11+ messages in thread
From: Daniel Vetter @ 2016-09-22  6:25 UTC (permalink / raw)
  To: Tom Gundersen; +Cc: dri-devel

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>

Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>

> ---
>  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

-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH 1/2] drm: Distinguish no name from ENOMEM in set_unique()
  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: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
  3 siblings, 1 reply; 11+ messages in thread
From: Emil Velikov @ 2016-09-22  6:28 UTC (permalink / raw)
  To: Tom Gundersen; +Cc: ML dri-devel

On 21 September 2016 at 15:59, Tom Gundersen <teg@jklm.no> wrote:
> If passing name == NULL to drm_drv_set_unique() we now get -ENOMEM
> as kstrdup() returns NULL. Instead check for this explicitly and
> return -EINVAL if no name is provided.
>
> Signed-off-by: Tom Gundersen <teg@jklm.no>
> ---
>  drivers/gpu/drm/drm_drv.c | 3 +++
>  1 file changed, 3 insertions(+)
>
> diff --git a/drivers/gpu/drm/drm_drv.c b/drivers/gpu/drm/drm_drv.c
> index f2f6429..99e6751 100644
> --- a/drivers/gpu/drm/drm_drv.c
> +++ b/drivers/gpu/drm/drm_drv.c
> @@ -338,6 +338,9 @@ void drm_minor_release(struct drm_minor *minor)
>
>  static int drm_dev_set_unique(struct drm_device *dev, const char *name)
>  {
> +       if (!name)
> +               return -EINVAL;
> +
From memory there should be no open-source drivers where this happens
today. Either way, having a big WARN/OOPS would be better, imho, since
it will point to the driver bug/issue (?).

Regards,
Emil
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH 2/2] drm: Don't swallow error codes in drm_dev_alloc()
  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
  2016-09-22 12:07   ` Sean Paul
  3 siblings, 0 replies; 11+ messages in thread
From: David Herrmann @ 2016-09-22  7:31 UTC (permalink / raw)
  To: Tom Gundersen; +Cc: Daniel Vetter, dri-devel

Hey

On Wed, Sep 21, 2016 at 4:59 PM, Tom Gundersen <teg@jklm.no> 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>
> ---

Reviewed-by: David Herrmann <dh.herrmann@gmail.com>

Thanks
David

>  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
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH 2/2] drm: Don't swallow error codes in drm_dev_alloc()
  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
  2016-09-22 10:17     ` Tom Gundersen
  2016-09-22 12:07   ` Sean Paul
  3 siblings, 1 reply; 11+ messages in thread
From: Eric Engestrom @ 2016-09-22  9:47 UTC (permalink / raw)
  To: Tom Gundersen; +Cc: dri-devel

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

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH 1/2] drm: Distinguish no name from ENOMEM in set_unique()
  2016-09-22  6:28 ` Emil Velikov
@ 2016-09-22 10:13   ` Tom Gundersen
  0 siblings, 0 replies; 11+ messages in thread
From: Tom Gundersen @ 2016-09-22 10:13 UTC (permalink / raw)
  To: Emil Velikov; +Cc: ML dri-devel

On Thu, Sep 22, 2016 at 8:28 AM, Emil Velikov <emil.l.velikov@gmail.com> wrote:
> On 21 September 2016 at 15:59, Tom Gundersen <teg@jklm.no> wrote:
>> If passing name == NULL to drm_drv_set_unique() we now get -ENOMEM
>> as kstrdup() returns NULL. Instead check for this explicitly and
>> return -EINVAL if no name is provided.
>>
>> Signed-off-by: Tom Gundersen <teg@jklm.no>
>> ---
>>  drivers/gpu/drm/drm_drv.c | 3 +++
>>  1 file changed, 3 insertions(+)
>>
>> diff --git a/drivers/gpu/drm/drm_drv.c b/drivers/gpu/drm/drm_drv.c
>> index f2f6429..99e6751 100644
>> --- a/drivers/gpu/drm/drm_drv.c
>> +++ b/drivers/gpu/drm/drm_drv.c
>> @@ -338,6 +338,9 @@ void drm_minor_release(struct drm_minor *minor)
>>
>>  static int drm_dev_set_unique(struct drm_device *dev, const char *name)
>>  {
>> +       if (!name)
>> +               return -EINVAL;
>> +
> From memory there should be no open-source drivers where this happens
> today. Either way, having a big WARN/OOPS would be better, imho, since
> it will point to the driver bug/issue (?).

Yeah, I only hit this during development, should not happen with any
upstream drivers afaik. Feel free to drop this patch for now.

Cheers,

Tom
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH 2/2] drm: Don't swallow error codes in drm_dev_alloc()
  2016-09-22  9:47   ` Eric Engestrom
@ 2016-09-22 10:17     ` Tom Gundersen
  0 siblings, 0 replies; 11+ messages in thread
From: Tom Gundersen @ 2016-09-22 10:17 UTC (permalink / raw)
  To: Eric Engestrom; +Cc: dri-devel

On Thu, Sep 22, 2016 at 11:47 AM, Eric Engestrom
<eric.engestrom@imgtec.com> wrote:
> 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>

Thanks.

> 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?

Probably could have used coccinelle, though I just did git grep and
fixed it up manually.

Cheers,

Tom

> 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

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH 1/2] drm: Distinguish no name from ENOMEM in set_unique()
  2016-09-21 14:59 [PATCH 1/2] drm: Distinguish no name from ENOMEM in set_unique() Tom Gundersen
                   ` (2 preceding siblings ...)
  2016-09-22  6:28 ` Emil Velikov
@ 2016-09-22 12:07 ` Sean Paul
  3 siblings, 0 replies; 11+ messages in thread
From: Sean Paul @ 2016-09-22 12:07 UTC (permalink / raw)
  To: Tom Gundersen; +Cc: dri-devel

On Wed, Sep 21, 2016 at 7:59 AM, Tom Gundersen <teg@jklm.no> wrote:
> If passing name == NULL to drm_drv_set_unique() we now get -ENOMEM
> as kstrdup() returns NULL. Instead check for this explicitly and
> return -EINVAL if no name is provided.
>
> Signed-off-by: Tom Gundersen <teg@jklm.no>


Thanks, applied to -misc

Sean

> ---
>  drivers/gpu/drm/drm_drv.c | 3 +++
>  1 file changed, 3 insertions(+)
>
> diff --git a/drivers/gpu/drm/drm_drv.c b/drivers/gpu/drm/drm_drv.c
> index f2f6429..99e6751 100644
> --- a/drivers/gpu/drm/drm_drv.c
> +++ b/drivers/gpu/drm/drm_drv.c
> @@ -338,6 +338,9 @@ void drm_minor_release(struct drm_minor *minor)
>
>  static int drm_dev_set_unique(struct drm_device *dev, const char *name)
>  {
> +       if (!name)
> +               return -EINVAL;
> +
>         kfree(dev->unique);
>         dev->unique = kstrdup(name, GFP_KERNEL);
>
> --
> 2.9.3
>
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH 2/2] drm: Don't swallow error codes in drm_dev_alloc()
  2016-09-21 14:59 ` [PATCH 2/2] drm: Don't swallow error codes in drm_dev_alloc() Tom Gundersen
                     ` (2 preceding siblings ...)
  2016-09-22  9:47   ` Eric Engestrom
@ 2016-09-22 12:07   ` Sean Paul
  3 siblings, 0 replies; 11+ messages in thread
From: Sean Paul @ 2016-09-22 12:07 UTC (permalink / raw)
  To: Tom Gundersen; +Cc: dri-devel

On Wed, Sep 21, 2016 at 7:59 AM, Tom Gundersen <teg@jklm.no> 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>


Thanks, applied to -misc

Sean

> ---
>  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
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2016-09-22 15:03 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
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
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

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.