Message ID | 20191205160712.32245-1-hslester96@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [v2] video: fbdev: vesafb: add missed release_region | expand |
On 12/5/19 5:07 PM, Chuhong Yuan wrote: > The driver forgets to free the requested irq in remove and probe > failure. This is I/O region not IRQ. > Add the missed calls to fix it. > > Signed-off-by: Chuhong Yuan <hslester96@gmail.com> > --- > Changes in v2: > - Modify commit message. > > drivers/video/fbdev/vesafb.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/drivers/video/fbdev/vesafb.c b/drivers/video/fbdev/vesafb.c > index d9c08f6c2155..fbb196a8bbf6 100644 > --- a/drivers/video/fbdev/vesafb.c > +++ b/drivers/video/fbdev/vesafb.c > @@ -468,6 +468,7 @@ static int vesafb_probe(struct platform_device *dev) > fb_info(info, "%s frame buffer device\n", info->fix.id); > return 0; > err: > + release_region(0x3c0, 32); There is one 'goto err;' instance before request_region() which needs to be taken care of first. > arch_phys_wc_del(par->wc_cookie); > if (info->screen_base) > iounmap(info->screen_base); > @@ -480,6 +481,7 @@ static int vesafb_remove(struct platform_device *pdev) > { > struct fb_info *info = platform_get_drvdata(pdev); > > + release_region(0x3c0, 32); > unregister_framebuffer(info); The order of operations on remove should be the reverse of order of operations on probe. [ We cannot release I/O region while framebuffer is active. ] > framebuffer_release(info); Please fix the patch and re-submit. Best regards, -- Bartlomiej Zolnierkiewicz Samsung R&D Institute Poland Samsung Electronics
diff --git a/drivers/video/fbdev/vesafb.c b/drivers/video/fbdev/vesafb.c index d9c08f6c2155..fbb196a8bbf6 100644 --- a/drivers/video/fbdev/vesafb.c +++ b/drivers/video/fbdev/vesafb.c @@ -468,6 +468,7 @@ static int vesafb_probe(struct platform_device *dev) fb_info(info, "%s frame buffer device\n", info->fix.id); return 0; err: + release_region(0x3c0, 32); arch_phys_wc_del(par->wc_cookie); if (info->screen_base) iounmap(info->screen_base); @@ -480,6 +481,7 @@ static int vesafb_remove(struct platform_device *pdev) { struct fb_info *info = platform_get_drvdata(pdev); + release_region(0x3c0, 32); unregister_framebuffer(info); framebuffer_release(info);
The driver forgets to free the requested irq in remove and probe failure. Add the missed calls to fix it. Signed-off-by: Chuhong Yuan <hslester96@gmail.com> --- Changes in v2: - Modify commit message. drivers/video/fbdev/vesafb.c | 2 ++ 1 file changed, 2 insertions(+)