[PATCH 15/17] drm/tegra: Fix potential bug on driver unload
Thierry Reding
thierry.reding at gmail.com
Tue Nov 4 04:30:34 PST 2014
On Tue, Nov 04, 2014 at 11:59:46AM +0100, Andrzej Hajda wrote:
> Hi Thierry,
>
> Just passing by.
>
> On 11/03/2014 10:27 AM, Thierry Reding wrote:
> > From: Thierry Reding <treding at nvidia.com>
> >
> > The HDMI hotplug signal may toggle after the DRM driver has been
> > unloaded. Make sure not to call into DRM if that's the case.
> >
> > Signed-off-by: Thierry Reding <treding at nvidia.com>
> > ---
> > drivers/gpu/drm/tegra/output.c | 3 ++-
> > 1 file changed, 2 insertions(+), 1 deletion(-)
> >
> > diff --git a/drivers/gpu/drm/tegra/output.c b/drivers/gpu/drm/tegra/output.c
> > index 6b393cfbb5e7..def74914dd72 100644
> > --- a/drivers/gpu/drm/tegra/output.c
> > +++ b/drivers/gpu/drm/tegra/output.c
> > @@ -181,7 +181,8 @@ static irqreturn_t hpd_irq(int irq, void *data)
> > {
> > struct tegra_output *output = data;
> >
> > - drm_helper_hpd_irq_event(output->connector.dev);
> > + if (output->connector.dev)
> > + drm_helper_hpd_irq_event(output->connector.dev);
> >
> > return IRQ_HANDLED;
> > }
> >
>
> Since output->connector.dev is not synchronized between irq and other
> code this patch do not solves the issue, it just decreases chances of
> the disaster.
You're right. I guess in addition to this we could call enable_irq()
when the connector is bound to the DRM device and disable_irq() when it
is unbound. Actually, that should even allow drm_helper_hpd_irq_event()
to be called unconditionally because .dev could not be NULL in that
case.
Upon closer inspection it seems like the majority of drivers would fall
prey to this particular race.
Thierry
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://lists.freedesktop.org/archives/dri-devel/attachments/20141104/e82f6373/attachment-0001.sig>
More information about the dri-devel
mailing list