On 11/16/19 4:44 PM, Chuhong Yuan wrote: > The driver forgets to free irq in remove which is requested in > probe. > Add the missed call to fix it. > > Signed-off-by: Chuhong Yuan <hslester96@xxxxxxxxx> > --- > drivers/video/fbdev/arcfb.c | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/drivers/video/fbdev/arcfb.c b/drivers/video/fbdev/arcfb.c > index a48741aab240..7aed01f001a4 100644 > --- a/drivers/video/fbdev/arcfb.c > +++ b/drivers/video/fbdev/arcfb.c > @@ -590,8 +590,11 @@ static int arcfb_probe(struct platform_device *dev) > static int arcfb_remove(struct platform_device *dev) > { > struct fb_info *info = platform_get_drvdata(dev); > + struct arcfb_par *par = info->par; > > if (info) { > + if (irq) > + free_irq(par->irq, info); > unregister_framebuffer(info); We cannot free IRQ while framebuffer is registered (as we can deadlock in arcfb_ioctl()). Also it seems that ordering in the probe function is wrong (it should not request IRQ or initialize the hardware after registering framebuffer). > vfree((void __force *)info->screen_base); > framebuffer_release(info); Best regards, -- Bartlomiej Zolnierkiewicz Samsung R&D Institute Poland Samsung Electronics _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel