On Thu, 29 Aug 2019, Jernej Škrabec <jernej.skrabec@xxxxxxxxx> wrote: > Hi! > > Dne torek, 27. avgust 2019 ob 13:58:49 CEST je Maxime Ripard napisal(a): >> From: Maxime Ripard <maxime.ripard@xxxxxxxxxxx> >> >> 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@xxxxxxxxxxx> >> --- >> 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@xxxxxxxx> > > 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@xxxxxxxxxxxxxxxxxxxxx > https://lists.freedesktop.org/mailman/listinfo/dri-devel -- Jani Nikula, Intel Open Source Graphics Center _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel