On Thu, 29 Aug 2019, Jernej Škrabec jernej.skrabec@gmail.com wrote:
Hi!
Dne torek, 27. avgust 2019 ob 13:58:49 CEST je Maxime Ripard napisal(a):
From: Maxime Ripard maxime.ripard@bootlin.com
The named modes support has introduced a number of glitches that were in part due to the fact that the parser will take any string as a named mode.
Since we shouldn't have a lot of options there (and they should be pretty standard), let's introduce a whitelist of the available named modes so that the kernel can differentiate between a poorly formed command line and a named mode.
Signed-off-by: Maxime Ripard maxime.ripard@bootlin.com
drivers/gpu/drm/drm_modes.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+)
diff --git a/drivers/gpu/drm/drm_modes.c b/drivers/gpu/drm/drm_modes.c index ea7e6c8c8318..988797d8080a 100644 --- a/drivers/gpu/drm/drm_modes.c +++ b/drivers/gpu/drm/drm_modes.c @@ -1677,6 +1677,22 @@ static int drm_mode_parse_cmdline_options(char *str, size_t len, return 0; }
+const char *drm_named_modes_whitelist[] = {
- "NTSC",
- "PAL",
+};
That array should be static. With that fixed:
And add more const for good measure:
static const char * const drm_named_modes_whitelist[] = {
BR, Jani.
Reviewed-by: Jernej Skrabec jernej.skrabec@siol.net
Best regards, Jernej
+static bool drm_named_mode_is_in_whitelist(const char *mode, unsigned int size) +{
- int i;
- for (i = 0; i < ARRAY_SIZE(drm_named_modes_whitelist); i++)
if (!strncmp(mode, drm_named_modes_whitelist[i], size))
return true;
- return false;
+}
/**
- drm_mode_parse_command_line_for_connector - parse command line modeline
for connector * @mode_option: optional per connector mode option @@ -1794,6 +1810,10 @@ bool drm_mode_parse_command_line_for_connector(const char *mode_option, if (named_mode) { if (mode_end + 1 > DRM_DISPLAY_MODE_LEN) return false;
if (!drm_named_mode_is_in_whitelist(name, mode_end))
return false;
- strscpy(mode->name, name, mode_end + 1); } else { ret = drm_mode_parse_cmdline_res_mode(name, mode_end,
dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel