diff options
author | Eric Engestrom <eric@engestrom.ch> | 2016-08-14 20:02:38 -0400 |
---|---|---|
committer | Daniel Vetter <daniel.vetter@ffwll.ch> | 2016-08-15 03:25:12 -0400 |
commit | 90844f00049e9f42573fd31d7c32e8fd31d3fd07 (patch) | |
tree | 60303fd6ee2cb480548f847790090e786f5f70fd /drivers/gpu/drm/drm_crtc.c | |
parent | fc93ff608b15ae32cde3006b7af860b59cac20ec (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.c | 21 |
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, | |||
3279 | static int format_check(const struct drm_mode_fb_cmd2 *r) | 3281 | static 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 | ||