staging: omapdrm: fix crash when freeing bad fb
During unload, don't cleanup the framebuffer if it is not valid. Signed-off-by: Andy Gross <andy.gross@ti.com> Reviewed-by: Rob Clark <rob.clark@linaro.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>hifive-unleashed-5.1
parent
279bf2e57c
commit
afb6a6a01b
|
@ -208,7 +208,8 @@ static int omap_fbdev_create(struct drm_fb_helper *helper,
|
||||||
*/
|
*/
|
||||||
ret = omap_gem_get_paddr(fbdev->bo, &paddr, true);
|
ret = omap_gem_get_paddr(fbdev->bo, &paddr, true);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
dev_err(dev->dev, "could not map (paddr)!\n");
|
dev_err(dev->dev,
|
||||||
|
"could not map (paddr)! Skipping framebuffer alloc\n");
|
||||||
ret = -ENOMEM;
|
ret = -ENOMEM;
|
||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
|
@ -388,8 +389,11 @@ void omap_fbdev_free(struct drm_device *dev)
|
||||||
|
|
||||||
fbi = helper->fbdev;
|
fbi = helper->fbdev;
|
||||||
|
|
||||||
unregister_framebuffer(fbi);
|
/* only cleanup framebuffer if it is present */
|
||||||
framebuffer_release(fbi);
|
if (fbi) {
|
||||||
|
unregister_framebuffer(fbi);
|
||||||
|
framebuffer_release(fbi);
|
||||||
|
}
|
||||||
|
|
||||||
drm_fb_helper_fini(helper);
|
drm_fb_helper_fini(helper);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue