* re: drm/i2c: tda998x: use irq for connection status and EDID read
@ 2014-07-07 14:22 Dan Carpenter
2014-07-07 15:54 ` Jean-Francois Moine
0 siblings, 1 reply; 2+ messages in thread
From: Dan Carpenter @ 2014-07-07 14:22 UTC (permalink / raw)
To: moinejf; +Cc: dri-devel
Hello Jean-Francois Moine,
The patch 12473b7d8e60: "drm/i2c: tda998x: use irq for connection
status and EDID read" from Jan 25, 2014, leads to the following
static checker warning:
drivers/gpu/drm/i2c/tda998x_drv.c:1199 tda998x_encoder_destroy()
warn: variable dereferenced before check 'priv->cec' (see line 1194)
drivers/gpu/drm/i2c/tda998x_drv.c
1188 static void
1189 tda998x_encoder_destroy(struct drm_encoder *encoder)
1190 {
1191 struct tda998x_priv *priv = to_tda998x_priv(encoder);
1192
1193 /* disable all IRQs and free the IRQ handler */
1194 cec_write(priv, REG_CEC_RXSHPDINTENA, 0);
^^^^^^^^^^^^^^
We dereference priv->cec inside the call to cec_write().
1195 reg_clear(priv, REG_INT_FLAGS_2, INT_FLAGS_2_EDID_BLK_RD);
1196 if (priv->hdmi->irq)
1197 free_irq(priv->hdmi->irq, priv);
1198
1199 if (priv->cec)
^^^^^^^^^
But later in the function we assume that ->cec can be NULL.
1200 i2c_unregister_device(priv->cec);
1201 drm_i2c_encoder_destroy(encoder);
1202 kfree(priv);
1203 }
regards,
dan carpenter
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: drm/i2c: tda998x: use irq for connection status and EDID read
2014-07-07 14:22 drm/i2c: tda998x: use irq for connection status and EDID read Dan Carpenter
@ 2014-07-07 15:54 ` Jean-Francois Moine
0 siblings, 0 replies; 2+ messages in thread
From: Jean-Francois Moine @ 2014-07-07 15:54 UTC (permalink / raw)
To: Dan Carpenter; +Cc: dri-devel
On Mon, 7 Jul 2014 17:22:03 +0300
Dan Carpenter <dan.carpenter@oracle.com> wrote:
> The patch 12473b7d8e60: "drm/i2c: tda998x: use irq for connection
> status and EDID read" from Jan 25, 2014, leads to the following
> static checker warning:
>
> drivers/gpu/drm/i2c/tda998x_drv.c:1199 tda998x_encoder_destroy()
> warn: variable dereferenced before check 'priv->cec' (see line 1194)
>
> drivers/gpu/drm/i2c/tda998x_drv.c
> 1188 static void
> 1189 tda998x_encoder_destroy(struct drm_encoder *encoder)
> 1190 {
> 1191 struct tda998x_priv *priv = to_tda998x_priv(encoder);
> 1192
> 1193 /* disable all IRQs and free the IRQ handler */
> 1194 cec_write(priv, REG_CEC_RXSHPDINTENA, 0);
> ^^^^^^^^^^^^^^
> We dereference priv->cec inside the call to cec_write().
>
> 1195 reg_clear(priv, REG_INT_FLAGS_2, INT_FLAGS_2_EDID_BLK_RD);
> 1196 if (priv->hdmi->irq)
> 1197 free_irq(priv->hdmi->irq, priv);
> 1198
> 1199 if (priv->cec)
> ^^^^^^^^^
> But later in the function we assume that ->cec can be NULL.
>
> 1200 i2c_unregister_device(priv->cec);
> 1201 drm_i2c_encoder_destroy(encoder);
> 1202 kfree(priv);
> 1203 }
Yes, priv->cec is never NULL.
Thanks.
--
Ken ar c'hentañ | ** Breizh ha Linux atav! **
Jef | http://moinejf.free.fr/
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2014-07-07 15:52 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-07-07 14:22 drm/i2c: tda998x: use irq for connection status and EDID read Dan Carpenter
2014-07-07 15:54 ` Jean-Francois Moine
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.