aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/drm_crtc.c
diff options
context:
space:
mode:
authorEric Engestrom <eric@engestrom.ch>2016-08-14 20:02:38 -0400
committerDaniel Vetter <daniel.vetter@ffwll.ch>2016-08-15 03:25:12 -0400
commit90844f00049e9f42573fd31d7c32e8fd31d3fd07 (patch)
tree60303fd6ee2cb480548f847790090e786f5f70fd /drivers/gpu/drm/drm_crtc.c
parentfc93ff608b15ae32cde3006b7af860b59cac20ec (diff)
drm: make drm_get_format_name thread-safe
Signed-off-by: Eric Engestrom <eric@engestrom.ch> [danvet: Clarify that the returned pointer must be freed with kfree().] Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Diffstat (limited to 'drivers/gpu/drm/drm_crtc.c')
-rw-r--r--drivers/gpu/drm/drm_crtc.c21
1 files changed, 13 insertions, 8 deletions
diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c
index e92bb9d3f90f..f4e3ebebe79a 100644
--- a/drivers/gpu/drm/drm_crtc.c
+++ b/drivers/gpu/drm/drm_crtc.c
@@ -2592,8 +2592,9 @@ static int __setplane_internal(struct drm_plane *plane,
2592 /* Check whether this plane supports the fb pixel format. */ 2592 /* Check whether this plane supports the fb pixel format. */
2593 ret = drm_plane_check_pixel_format(plane, fb->pixel_format); 2593 ret = drm_plane_check_pixel_format(plane, fb->pixel_format);
2594 if (ret) { 2594 if (ret) {
2595 DRM_DEBUG_KMS("Invalid pixel format %s\n", 2595 const char *format_name = drm_get_format_name(fb->pixel_format);
2596 drm_get_format_name(fb->pixel_format)); 2596 DRM_DEBUG_KMS("Invalid pixel format %s\n", format_name);
2597 kfree(format_name);
2597 goto out; 2598 goto out;
2598 } 2599 }
2599 2600
@@ -2902,8 +2903,9 @@ int drm_mode_setcrtc(struct drm_device *dev, void *data,
2902 ret = drm_plane_check_pixel_format(crtc->primary, 2903 ret = drm_plane_check_pixel_format(crtc->primary,
2903 fb->pixel_format); 2904 fb->pixel_format);
2904 if (ret) { 2905 if (ret) {
2905 DRM_DEBUG_KMS("Invalid pixel format %s\n", 2906 const char *format_name = drm_get_format_name(fb->pixel_format);
2906 drm_get_format_name(fb->pixel_format)); 2907 DRM_DEBUG_KMS("Invalid pixel format %s\n", format_name);
2908 kfree(format_name);
2907 goto out; 2909 goto out;
2908 } 2910 }
2909 } 2911 }
@@ -3279,6 +3281,7 @@ int drm_mode_addfb(struct drm_device *dev,
3279static int format_check(const struct drm_mode_fb_cmd2 *r) 3281static int format_check(const struct drm_mode_fb_cmd2 *r)
3280{ 3282{
3281 uint32_t format = r->pixel_format & ~DRM_FORMAT_BIG_ENDIAN; 3283 uint32_t format = r->pixel_format & ~DRM_FORMAT_BIG_ENDIAN;
3284 const char *format_name;
3282 3285
3283 switch (format) { 3286 switch (format) {
3284 case DRM_FORMAT_C8: 3287 case DRM_FORMAT_C8:
@@ -3343,8 +3346,9 @@ static int format_check(const struct drm_mode_fb_cmd2 *r)
3343 case DRM_FORMAT_YVU444: 3346 case DRM_FORMAT_YVU444:
3344 return 0; 3347 return 0;
3345 default: 3348 default:
3346 DRM_DEBUG_KMS("invalid pixel format %s\n", 3349 format_name = drm_get_format_name(r->pixel_format);
3347 drm_get_format_name(r->pixel_format)); 3350 DRM_DEBUG_KMS("invalid pixel format %s\n", format_name);
3351 kfree(format_name);
3348 return -EINVAL; 3352 return -EINVAL;
3349 } 3353 }
3350} 3354}
@@ -3355,8 +3359,9 @@ static int framebuffer_check(const struct drm_mode_fb_cmd2 *r)
3355 3359
3356 ret = format_check(r); 3360 ret = format_check(r);
3357 if (ret) { 3361 if (ret) {
3358 DRM_DEBUG_KMS("bad framebuffer format %s\n", 3362 const char *format_name = drm_get_format_name(r->pixel_format);
3359 drm_get_format_name(r->pixel_format)); 3363 DRM_DEBUG_KMS("bad framebuffer format %s\n", format_name);
3364 kfree(format_name);
3360 return ret; 3365 return ret;
3361 } 3366 }
3362 3367