ac973e1d4e72405c8677da4893056daa7c810b00
[oweals/openwrt.git] /
1 From 5b7efd2fa0c75164373d6faf28fec4b89065d39c Mon Sep 17 00:00:00 2001
2 From: Hans de Goede <hdegoede@redhat.com>
3 Date: Mon, 18 Nov 2019 16:51:28 +0100
4 Subject: [PATCH] drm/modes: parse_cmdline: Set bpp/refresh_specified
5  after successful parsing
6
7 Commit 6a2d163756545aa3180d7851d5f8322b865e72be upstream.
8
9 drm_connector_get_cmdline_mode() calls
10 drm_mode_parse_command_line_for_connector() with &connector->cmdline_mode
11 as mode argument, so anything which we store in the mode arguments gets
12 kept even if we return false.
13
14 Avoid storing a possibly false-postive bpp/refresh_specified setting
15 in connector->cmdline_mode by moving the setting of these to after
16 successful parsing of the bpp/refresh parts of the video= argument.
17
18 Acked-by: Maxime Ripard <mripard@kernel.org>
19 Signed-off-by: Hans de Goede <hdegoede@redhat.com>
20 Link: https://patchwork.freedesktop.org/patch/msgid/20191118155134.30468-7-hdegoede@redhat.com
21 ---
22  drivers/gpu/drm/drm_modes.c | 9 +++++----
23  1 file changed, 5 insertions(+), 4 deletions(-)
24
25 --- a/drivers/gpu/drm/drm_modes.c
26 +++ b/drivers/gpu/drm/drm_modes.c
27 @@ -1778,10 +1778,8 @@ bool drm_mode_parse_command_line_for_con
28  
29         /* Try to locate the bpp and refresh specifiers, if any */
30         bpp_ptr = strchr(name, '-');
31 -       if (bpp_ptr) {
32 +       if (bpp_ptr)
33                 bpp_off = bpp_ptr - name;
34 -               mode->bpp_specified = true;
35 -       }
36  
37         refresh_ptr = strchr(name, '@');
38         if (refresh_ptr) {
39 @@ -1789,7 +1787,6 @@ bool drm_mode_parse_command_line_for_con
40                         return false;
41  
42                 refresh_off = refresh_ptr - name;
43 -               mode->refresh_specified = true;
44         }
45  
46         /* Locate the start of named options */
47 @@ -1832,6 +1829,8 @@ bool drm_mode_parse_command_line_for_con
48                 ret = drm_mode_parse_cmdline_bpp(bpp_ptr, &bpp_end_ptr, mode);
49                 if (ret)
50                         return false;
51 +
52 +               mode->bpp_specified = true;
53         }
54  
55         if (refresh_ptr) {
56 @@ -1839,6 +1838,8 @@ bool drm_mode_parse_command_line_for_con
57                                                      &refresh_end_ptr, mode);
58                 if (ret)
59                         return false;
60 +
61 +               mode->refresh_specified = true;
62         }
63  
64         /*