diff options
-rw-r--r-- | drivers/gpu/drm/drm_fb_helper.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/drivers/gpu/drm/drm_fb_helper.c b/drivers/gpu/drm/drm_fb_helper.c index e812babe2122..515b838006d2 100644 --- a/drivers/gpu/drm/drm_fb_helper.c +++ b/drivers/gpu/drm/drm_fb_helper.c | |||
@@ -908,8 +908,13 @@ int drm_fb_helper_single_fb_probe(struct drm_device *dev, | |||
908 | 908 | ||
909 | if (new_fb) { | 909 | if (new_fb) { |
910 | info->var.pixclock = 0; | 910 | info->var.pixclock = 0; |
911 | if (register_framebuffer(info) < 0) | 911 | ret = fb_alloc_cmap(&info->cmap, crtc->gamma_size, 0); |
912 | if (ret) | ||
913 | return ret; | ||
914 | if (register_framebuffer(info) < 0) { | ||
915 | fb_dealloc_cmap(&info->cmap); | ||
912 | return -EINVAL; | 916 | return -EINVAL; |
917 | } | ||
913 | } else { | 918 | } else { |
914 | drm_fb_helper_set_par(info); | 919 | drm_fb_helper_set_par(info); |
915 | } | 920 | } |
@@ -939,6 +944,7 @@ void drm_fb_helper_free(struct drm_fb_helper *helper) | |||
939 | unregister_sysrq_key('v', &sysrq_drm_fb_helper_restore_op); | 944 | unregister_sysrq_key('v', &sysrq_drm_fb_helper_restore_op); |
940 | } | 945 | } |
941 | drm_fb_helper_crtc_free(helper); | 946 | drm_fb_helper_crtc_free(helper); |
947 | fb_dealloc_cmap(&helper->fb->fbdev->cmap); | ||
942 | } | 948 | } |
943 | EXPORT_SYMBOL(drm_fb_helper_free); | 949 | EXPORT_SYMBOL(drm_fb_helper_free); |
944 | 950 | ||