@@ -2117,6 +2117,7 @@ static void intel_user_framebuffer_destroy(struct drm_framebuffer *fb)
21172117
21182118 intel_frontbuffer_put (intel_fb -> frontbuffer );
21192119
2120+ kfree (intel_fb -> panic );
21202121 kfree (intel_fb );
21212122}
21222123
@@ -2215,16 +2216,22 @@ int intel_framebuffer_init(struct intel_framebuffer *intel_fb,
22152216 struct intel_display * display = to_intel_display (obj -> dev );
22162217 struct drm_framebuffer * fb = & intel_fb -> base ;
22172218 u32 max_stride ;
2218- int ret = - EINVAL ;
2219+ int ret ;
22192220 int i ;
22202221
2222+ intel_fb -> panic = intel_panic_alloc ();
2223+ if (!intel_fb -> panic )
2224+ return - ENOMEM ;
2225+
22212226 /*
22222227 * intel_frontbuffer_get() must be done before
22232228 * intel_fb_bo_framebuffer_init() to avoid set_tiling vs. addfb race.
22242229 */
22252230 intel_fb -> frontbuffer = intel_frontbuffer_get (obj );
2226- if (!intel_fb -> frontbuffer )
2227- return - ENOMEM ;
2231+ if (!intel_fb -> frontbuffer ) {
2232+ ret = - ENOMEM ;
2233+ goto err_free_panic ;
2234+ }
22282235
22292236 ret = intel_fb_bo_framebuffer_init (fb , obj , mode_cmd );
22302237 if (ret )
@@ -2323,6 +2330,9 @@ int intel_framebuffer_init(struct intel_framebuffer *intel_fb,
23232330 intel_fb_bo_framebuffer_fini (obj );
23242331err_frontbuffer_put :
23252332 intel_frontbuffer_put (intel_fb -> frontbuffer );
2333+ err_free_panic :
2334+ kfree (intel_fb -> panic );
2335+
23262336 return ret ;
23272337}
23282338
@@ -2349,20 +2359,11 @@ intel_user_framebuffer_create(struct drm_device *dev,
23492359struct intel_framebuffer * intel_framebuffer_alloc (void )
23502360{
23512361 struct intel_framebuffer * intel_fb ;
2352- struct intel_panic * panic ;
23532362
23542363 intel_fb = kzalloc (sizeof (* intel_fb ), GFP_KERNEL );
23552364 if (!intel_fb )
23562365 return NULL ;
23572366
2358- panic = intel_panic_alloc ();
2359- if (!panic ) {
2360- kfree (intel_fb );
2361- return NULL ;
2362- }
2363-
2364- intel_fb -> panic = panic ;
2365-
23662367 return intel_fb ;
23672368}
23682369
0 commit comments