[v2,2/2] drm/rockchip: fix error check when getting irq
diff mbox

Message ID 3764323.LdZbgzYxeM@diego
State New, archived
Headers show

Commit Message

Heiko Stübner April 19, 2015, 11 p.m. UTC
platform_get_irq() can return negative error values and we already test for
these. Therefore the variable holding this value should be signed to not
loose possible error values.

Reported-by: David Binderman <dcb314@hotmail.com>
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
Reviewed-By: Daniel Kurtz <djkurtz@chromium.org>
---
changed since v1:
- instead of making irq in struct vop signed use a
  separate local irq int in vop_bind as suggested by Daniel Kurtz

 drivers/gpu/drm/rockchip/rockchip_drm_vop.c | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

Comments

yao mark April 20, 2015, 1:33 a.m. UTC | #1
On 2015?04?20? 07:00, Heiko Stübner wrote:
> platform_get_irq() can return negative error values and we already test for
> these. Therefore the variable holding this value should be signed to not
> loose possible error values.
>
> Reported-by: David Binderman <dcb314@hotmail.com>
> Signed-off-by: Heiko Stuebner <heiko@sntech.de>
> Reviewed-By: Daniel Kurtz <djkurtz@chromium.org>
> ---
> changed since v1:
> - instead of making irq in struct vop signed use a
>    separate local irq int in vop_bind as suggested by Daniel Kurtz
>
>   drivers/gpu/drm/rockchip/rockchip_drm_vop.c | 9 +++++----
>   1 file changed, 5 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c
> index ccb0ce0..0e539d8 100644
> --- a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c
> +++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c
> @@ -1409,7 +1409,7 @@ static int vop_bind(struct device *dev, struct device *master, void *data)
>   	struct vop *vop;
>   	struct resource *res;
>   	size_t alloc_size;
> -	int ret;
> +	int ret, irq;
>   
>   	of_id = of_match_device(vop_driver_dt_match, dev);
>   	vop_data = of_id->data;
> @@ -1445,11 +1445,12 @@ static int vop_bind(struct device *dev, struct device *master, void *data)
>   		return ret;
>   	}
>   
> -	vop->irq = platform_get_irq(pdev, 0);
> -	if (vop->irq < 0) {
> + 	irq = platform_get_irq(pdev, 0);
> +	if (irq < 0) {
>   		dev_err(dev, "cannot find irq for vop\n");
> -		return vop->irq;
> +		return irq;
>   	}
> +	vop->irq = (unsigned int)irq;
>   
>   	spin_lock_init(&vop->reg_lock);
>   	spin_lock_init(&vop->irq_lock);
Thanks for fix, I have sent the Pull request.:-)

Patch
diff mbox

diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c
index ccb0ce0..0e539d8 100644
--- a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c
+++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c
@@ -1409,7 +1409,7 @@  static int vop_bind(struct device *dev, struct device *master, void *data)
 	struct vop *vop;
 	struct resource *res;
 	size_t alloc_size;
-	int ret;
+	int ret, irq;
 
 	of_id = of_match_device(vop_driver_dt_match, dev);
 	vop_data = of_id->data;
@@ -1445,11 +1445,12 @@  static int vop_bind(struct device *dev, struct device *master, void *data)
 		return ret;
 	}
 
-	vop->irq = platform_get_irq(pdev, 0);
-	if (vop->irq < 0) {
+ 	irq = platform_get_irq(pdev, 0);
+	if (irq < 0) {
 		dev_err(dev, "cannot find irq for vop\n");
-		return vop->irq;
+		return irq;
 	}
+	vop->irq = (unsigned int)irq;
 
 	spin_lock_init(&vop->reg_lock);
 	spin_lock_init(&vop->irq_lock);