Commit 3bea21b6 authored by Clemens Ladisch's avatar Clemens Ladisch Committed by Dave Airlie

drm/kms: allocate framebuffer cmap

Without an allocated colormap, FBIOGETCMAP fails.  This would make
programs restore an all-black colormap ("links -g") or fail to work
altogether ("mplayer -vo fbdev2").
Signed-off-by: default avatarClemens Ladisch <clemens@ladisch.de>
Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
parent 7a654158
...@@ -908,8 +908,13 @@ int drm_fb_helper_single_fb_probe(struct drm_device *dev, ...@@ -908,8 +908,13 @@ int drm_fb_helper_single_fb_probe(struct drm_device *dev,
if (new_fb) { if (new_fb) {
info->var.pixclock = 0; info->var.pixclock = 0;
if (register_framebuffer(info) < 0) ret = fb_alloc_cmap(&info->cmap, crtc->gamma_size, 0);
if (ret)
return ret;
if (register_framebuffer(info) < 0) {
fb_dealloc_cmap(&info->cmap);
return -EINVAL; return -EINVAL;
}
} else { } else {
drm_fb_helper_set_par(info); drm_fb_helper_set_par(info);
} }
...@@ -939,6 +944,7 @@ void drm_fb_helper_free(struct drm_fb_helper *helper) ...@@ -939,6 +944,7 @@ void drm_fb_helper_free(struct drm_fb_helper *helper)
unregister_sysrq_key('v', &sysrq_drm_fb_helper_restore_op); unregister_sysrq_key('v', &sysrq_drm_fb_helper_restore_op);
} }
drm_fb_helper_crtc_free(helper); drm_fb_helper_crtc_free(helper);
fb_dealloc_cmap(&helper->fb->fbdev->cmap);
} }
EXPORT_SYMBOL(drm_fb_helper_free); EXPORT_SYMBOL(drm_fb_helper_free);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment