drm/modes: Skip invalid cmdline mode
The named mode could be invalid and then cmdline parser misses to validate
mode's dimensions, happily adding 0x0 mode as a valid mode. One case where
this happens is NVIDIA Tegra devices that are using downstream bootloader
which adds "video=tegrafb" to the kernel's cmdline and thus upstream Tegra
DRM driver fails to probe because of the invalid mode.
Fixes: 3aeeb13d89
("drm/modes: Support modes names on the command line")
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Dmitry Osipenko <digetx@gmail.com>
Signed-off-by: Maxime Ripard <maxime.ripard@bootlin.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20190709145151.23086-1-digetx@gmail.com
This commit is contained in:
Родитель
990dee3aa4
Коммит
7f3bbc0b81
|
@ -180,6 +180,7 @@ again:
|
|||
|
||||
create_mode:
|
||||
mode = drm_mode_create_from_cmdline_mode(connector->dev, cmdline_mode);
|
||||
if (mode)
|
||||
list_add(&mode->head, &connector->modes);
|
||||
|
||||
return mode;
|
||||
|
|
|
@ -158,6 +158,9 @@ struct drm_display_mode *drm_cvt_mode(struct drm_device *dev, int hdisplay,
|
|||
int interlace;
|
||||
u64 tmp;
|
||||
|
||||
if (!hdisplay || !vdisplay)
|
||||
return NULL;
|
||||
|
||||
/* allocate the drm_display_mode structure. If failure, we will
|
||||
* return directly
|
||||
*/
|
||||
|
@ -392,6 +395,9 @@ drm_gtf_mode_complex(struct drm_device *dev, int hdisplay, int vdisplay,
|
|||
int hsync, hfront_porch, vodd_front_porch_lines;
|
||||
unsigned int tmp1, tmp2;
|
||||
|
||||
if (!hdisplay || !vdisplay)
|
||||
return NULL;
|
||||
|
||||
drm_mode = drm_mode_create(dev);
|
||||
if (!drm_mode)
|
||||
return NULL;
|
||||
|
|
Загрузка…
Ссылка в новой задаче