aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMaxime Ripard <maxime.ripard@free-electrons.com>2016-09-19 16:17:51 -0400
committerMaxime Ripard <maxime.ripard@free-electrons.com>2016-09-22 03:13:08 -0400
commite4192089fe5320537fd88aa29721277efef64af4 (patch)
treed4b88d9c1104621d815bb6725c150974668d3b10
parentc222f399045de480d4af0b9e4cdfff1a083e3e1d (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.c8
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);