| From 5b7efd2fa0c75164373d6faf28fec4b89065d39c Mon Sep 17 00:00:00 2001 |
| From: Hans de Goede <hdegoede@redhat.com> |
| Date: Mon, 18 Nov 2019 16:51:28 +0100 |
| Subject: [PATCH] drm/modes: parse_cmdline: Set bpp/refresh_specified |
| after successful parsing |
| |
| Commit 6a2d163756545aa3180d7851d5f8322b865e72be upstream. |
| |
| drm_connector_get_cmdline_mode() calls |
| drm_mode_parse_command_line_for_connector() with &connector->cmdline_mode |
| as mode argument, so anything which we store in the mode arguments gets |
| kept even if we return false. |
| |
| Avoid storing a possibly false-postive bpp/refresh_specified setting |
| in connector->cmdline_mode by moving the setting of these to after |
| successful parsing of the bpp/refresh parts of the video= argument. |
| |
| Acked-by: Maxime Ripard <mripard@kernel.org> |
| Signed-off-by: Hans de Goede <hdegoede@redhat.com> |
| Link: https://patchwork.freedesktop.org/patch/msgid/20191118155134.30468-7-hdegoede@redhat.com |
| --- |
| drivers/gpu/drm/drm_modes.c | 9 +++++---- |
| 1 file changed, 5 insertions(+), 4 deletions(-) |
| |
| --- a/drivers/gpu/drm/drm_modes.c |
| +++ b/drivers/gpu/drm/drm_modes.c |
| @@ -1778,10 +1778,8 @@ bool drm_mode_parse_command_line_for_con |
| |
| /* Try to locate the bpp and refresh specifiers, if any */ |
| bpp_ptr = strchr(name, '-'); |
| - if (bpp_ptr) { |
| + if (bpp_ptr) |
| bpp_off = bpp_ptr - name; |
| - mode->bpp_specified = true; |
| - } |
| |
| refresh_ptr = strchr(name, '@'); |
| if (refresh_ptr) { |
| @@ -1789,7 +1787,6 @@ bool drm_mode_parse_command_line_for_con |
| return false; |
| |
| refresh_off = refresh_ptr - name; |
| - mode->refresh_specified = true; |
| } |
| |
| /* Locate the start of named options */ |
| @@ -1832,6 +1829,8 @@ bool drm_mode_parse_command_line_for_con |
| ret = drm_mode_parse_cmdline_bpp(bpp_ptr, &bpp_end_ptr, mode); |
| if (ret) |
| return false; |
| + |
| + mode->bpp_specified = true; |
| } |
| |
| if (refresh_ptr) { |
| @@ -1839,6 +1838,8 @@ bool drm_mode_parse_command_line_for_con |
| &refresh_end_ptr, mode); |
| if (ret) |
| return false; |
| + |
| + mode->refresh_specified = true; |
| } |
| |
| /* |