diff options
author | Dave Airlie <airlied@redhat.com> | 2012-03-15 06:24:32 -0400 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2012-03-15 06:24:32 -0400 |
commit | 8229c885fe361e521ac64de36b16011e54a30de0 (patch) | |
tree | 572e5d34b16713ddef9e803308c6f72014aff01b /drivers/gpu/drm/radeon/radeon_display.c | |
parent | c3c50e8b651887bcefcc13beb3739c00b2379b5c (diff) | |
parent | fde7d9049e55ab85a390be7f415d74c9f62dd0f9 (diff) |
drm: Merge tag 'v3.3-rc7' into drm-core-next
Merge the fixes so far into core-next, needed to test
intel driver.
Conflicts:
drivers/gpu/drm/i915/intel_ringbuffer.c
Diffstat (limited to 'drivers/gpu/drm/radeon/radeon_display.c')
-rw-r--r-- | drivers/gpu/drm/radeon/radeon_display.c | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/drivers/gpu/drm/radeon/radeon_display.c b/drivers/gpu/drm/radeon/radeon_display.c index 1f98e5fbc733..b25bb2a55814 100644 --- a/drivers/gpu/drm/radeon/radeon_display.c +++ b/drivers/gpu/drm/radeon/radeon_display.c | |||
@@ -1087,15 +1087,21 @@ static const struct drm_framebuffer_funcs radeon_fb_funcs = { | |||
1087 | .create_handle = radeon_user_framebuffer_create_handle, | 1087 | .create_handle = radeon_user_framebuffer_create_handle, |
1088 | }; | 1088 | }; |
1089 | 1089 | ||
1090 | void | 1090 | int |
1091 | radeon_framebuffer_init(struct drm_device *dev, | 1091 | radeon_framebuffer_init(struct drm_device *dev, |
1092 | struct radeon_framebuffer *rfb, | 1092 | struct radeon_framebuffer *rfb, |
1093 | struct drm_mode_fb_cmd2 *mode_cmd, | 1093 | struct drm_mode_fb_cmd2 *mode_cmd, |
1094 | struct drm_gem_object *obj) | 1094 | struct drm_gem_object *obj) |
1095 | { | 1095 | { |
1096 | int ret; | ||
1096 | rfb->obj = obj; | 1097 | rfb->obj = obj; |
1097 | drm_framebuffer_init(dev, &rfb->base, &radeon_fb_funcs); | 1098 | ret = drm_framebuffer_init(dev, &rfb->base, &radeon_fb_funcs); |
1099 | if (ret) { | ||
1100 | rfb->obj = NULL; | ||
1101 | return ret; | ||
1102 | } | ||
1098 | drm_helper_mode_fill_fb_struct(&rfb->base, mode_cmd); | 1103 | drm_helper_mode_fill_fb_struct(&rfb->base, mode_cmd); |
1104 | return 0; | ||
1099 | } | 1105 | } |
1100 | 1106 | ||
1101 | static struct drm_framebuffer * | 1107 | static struct drm_framebuffer * |
@@ -1105,6 +1111,7 @@ radeon_user_framebuffer_create(struct drm_device *dev, | |||
1105 | { | 1111 | { |
1106 | struct drm_gem_object *obj; | 1112 | struct drm_gem_object *obj; |
1107 | struct radeon_framebuffer *radeon_fb; | 1113 | struct radeon_framebuffer *radeon_fb; |
1114 | int ret; | ||
1108 | 1115 | ||
1109 | obj = drm_gem_object_lookup(dev, file_priv, mode_cmd->handles[0]); | 1116 | obj = drm_gem_object_lookup(dev, file_priv, mode_cmd->handles[0]); |
1110 | if (obj == NULL) { | 1117 | if (obj == NULL) { |
@@ -1117,7 +1124,12 @@ radeon_user_framebuffer_create(struct drm_device *dev, | |||
1117 | if (radeon_fb == NULL) | 1124 | if (radeon_fb == NULL) |
1118 | return ERR_PTR(-ENOMEM); | 1125 | return ERR_PTR(-ENOMEM); |
1119 | 1126 | ||
1120 | radeon_framebuffer_init(dev, radeon_fb, mode_cmd, obj); | 1127 | ret = radeon_framebuffer_init(dev, radeon_fb, mode_cmd, obj); |
1128 | if (ret) { | ||
1129 | kfree(radeon_fb); | ||
1130 | drm_gem_object_unreference_unlocked(obj); | ||
1131 | return NULL; | ||
1132 | } | ||
1121 | 1133 | ||
1122 | return &radeon_fb->base; | 1134 | return &radeon_fb->base; |
1123 | } | 1135 | } |