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>
This commit is contained in:

committed by
Daniel Vetter

parent
fc93ff608b
commit
90844f0004
@@ -2592,8 +2592,9 @@ static int __setplane_internal(struct drm_plane *plane,
|
||||
/* Check whether this plane supports the fb pixel format. */
|
||||
ret = drm_plane_check_pixel_format(plane, fb->pixel_format);
|
||||
if (ret) {
|
||||
DRM_DEBUG_KMS("Invalid pixel format %s\n",
|
||||
drm_get_format_name(fb->pixel_format));
|
||||
const char *format_name = drm_get_format_name(fb->pixel_format);
|
||||
DRM_DEBUG_KMS("Invalid pixel format %s\n", format_name);
|
||||
kfree(format_name);
|
||||
goto out;
|
||||
}
|
||||
|
||||
@@ -2902,8 +2903,9 @@ int drm_mode_setcrtc(struct drm_device *dev, void *data,
|
||||
ret = drm_plane_check_pixel_format(crtc->primary,
|
||||
fb->pixel_format);
|
||||
if (ret) {
|
||||
DRM_DEBUG_KMS("Invalid pixel format %s\n",
|
||||
drm_get_format_name(fb->pixel_format));
|
||||
const char *format_name = drm_get_format_name(fb->pixel_format);
|
||||
DRM_DEBUG_KMS("Invalid pixel format %s\n", format_name);
|
||||
kfree(format_name);
|
||||
goto out;
|
||||
}
|
||||
}
|
||||
@@ -3279,6 +3281,7 @@ int drm_mode_addfb(struct drm_device *dev,
|
||||
static int format_check(const struct drm_mode_fb_cmd2 *r)
|
||||
{
|
||||
uint32_t format = r->pixel_format & ~DRM_FORMAT_BIG_ENDIAN;
|
||||
const char *format_name;
|
||||
|
||||
switch (format) {
|
||||
case DRM_FORMAT_C8:
|
||||
@@ -3343,8 +3346,9 @@ static int format_check(const struct drm_mode_fb_cmd2 *r)
|
||||
case DRM_FORMAT_YVU444:
|
||||
return 0;
|
||||
default:
|
||||
DRM_DEBUG_KMS("invalid pixel format %s\n",
|
||||
drm_get_format_name(r->pixel_format));
|
||||
format_name = drm_get_format_name(r->pixel_format);
|
||||
DRM_DEBUG_KMS("invalid pixel format %s\n", format_name);
|
||||
kfree(format_name);
|
||||
return -EINVAL;
|
||||
}
|
||||
}
|
||||
@@ -3355,8 +3359,9 @@ static int framebuffer_check(const struct drm_mode_fb_cmd2 *r)
|
||||
|
||||
ret = format_check(r);
|
||||
if (ret) {
|
||||
DRM_DEBUG_KMS("bad framebuffer format %s\n",
|
||||
drm_get_format_name(r->pixel_format));
|
||||
const char *format_name = drm_get_format_name(r->pixel_format);
|
||||
DRM_DEBUG_KMS("bad framebuffer format %s\n", format_name);
|
||||
kfree(format_name);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user