diff options
author | Maxime Ripard <maxime.ripard@free-electrons.com> | 2016-09-19 16:17:51 -0400 |
---|---|---|
committer | Maxime Ripard <maxime.ripard@free-electrons.com> | 2016-09-22 03:13:08 -0400 |
commit | e4192089fe5320537fd88aa29721277efef64af4 (patch) | |
tree | d4b88d9c1104621d815bb6725c150974668d3b10 | |
parent | c222f399045de480d4af0b9e4cdfff1a083e3e1d (diff) |
drm/sun4i: tv: Check mode pointer
The drm_mode_create call might return NULL in case of a failure, and the
current code doesn't check for that. Make sure it does.
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
-rw-r--r-- | drivers/gpu/drm/sun4i/sun4i_tv.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/drivers/gpu/drm/sun4i/sun4i_tv.c b/drivers/gpu/drm/sun4i/sun4i_tv.c index 3d69bd34f36c..1dd3d9eabf2e 100644 --- a/drivers/gpu/drm/sun4i/sun4i_tv.c +++ b/drivers/gpu/drm/sun4i/sun4i_tv.c | |||
@@ -507,9 +507,15 @@ static int sun4i_tv_comp_get_modes(struct drm_connector *connector) | |||
507 | int i; | 507 | int i; |
508 | 508 | ||
509 | for (i = 0; i < ARRAY_SIZE(tv_modes); i++) { | 509 | for (i = 0; i < ARRAY_SIZE(tv_modes); i++) { |
510 | struct drm_display_mode *mode = drm_mode_create(connector->dev); | 510 | struct drm_display_mode *mode; |
511 | const struct tv_mode *tv_mode = &tv_modes[i]; | 511 | const struct tv_mode *tv_mode = &tv_modes[i]; |
512 | 512 | ||
513 | mode = drm_mode_create(connector->dev); | ||
514 | if (!mode) { | ||
515 | DRM_ERROR("Failed to create a new display mode\n"); | ||
516 | return 0; | ||
517 | } | ||
518 | |||
513 | strcpy(mode->name, tv_mode->name); | 519 | strcpy(mode->name, tv_mode->name); |
514 | 520 | ||
515 | sun4i_tv_mode_to_drm_mode(tv_mode, mode); | 521 | sun4i_tv_mode_to_drm_mode(tv_mode, mode); |