drm/framebuffer: Use actual bpp for DRM_IOCTL_MODE_GETFB
authorGeert Uytterhoeven <geert@linux-m68k.org>
Fri, 8 Jul 2022 18:20:49 +0000 (20:20 +0200)
committerSam Ravnborg <sam@ravnborg.org>
Sat, 9 Jul 2022 13:01:20 +0000 (15:01 +0200)
When userspace queries the properties of a frame buffer, the number of
bits per pixel is derived from the deprecated drm_format_info.cpp[]
field, which does not take into account block sizes.

Fix this by using the actual number of bits per pixel instead.

Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
Reviewed-by: Javier Martinez Canillas <javierm@redhat.com>
Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
Link: https://patchwork.freedesktop.org/patch/msgid/b612780feef200b7f914a674db28ed227e7cdc64.1657294931.git.geert@linux-m68k.org
drivers/gpu/drm/drm_framebuffer.c

index 4562a8b..9899bf1 100644 (file)
@@ -530,7 +530,7 @@ int drm_mode_getfb(struct drm_device *dev,
        r->height = fb->height;
        r->width = fb->width;
        r->depth = fb->format->depth;
-       r->bpp = fb->format->cpp[0] * 8;
+       r->bpp = drm_format_info_bpp(fb->format, 0);
        r->pitch = fb->pitches[0];
 
        /* GET_FB() is an unprivileged ioctl so we must not return a