aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorColin Ian King <colin.king@canonical.com>2017-02-03 14:56:24 -0500
committerEric Anholt <eric@anholt.net>2017-02-07 18:27:25 -0500
commitfce6a7bc22114c69b071bcf6fbfea2d07de6273c (patch)
tree8ae9ca94c7cbb9d6f76c9315a782ea9198bc9b18
parent64b0e1d6c6a14dcbf0bde8b98207fc6b3569ce50 (diff)
drm/vc4: simplify exit path of a failed allocation of dsi_connector
If dsi_connector fails to allocate, the exit path via label 'fail' checks if connector is null, which it always is, so the cleanup that destroys connector is never going to be called. Hence the failure path can be more optimally performed by removing this and just returning ERR_PTR(-ENOMEM). This also removes the need to initialize connector to NULL, and we can also remove ret too. Detected by CoverityScan, CID#1399504 ("Logicall Dead Code") Signed-off-by: Colin Ian King <colin.king@canonical.com> Reviewed-by: Eric Anholt <eric@anholt.net> Reviewed-by: Gustavo Padovan <gustavo.padovan@collabora.com> Link: http://patchwork.freedesktop.org/patch/msgid/20170203195624.7189-1-colin.king@canonical.com
-rw-r--r--drivers/gpu/drm/vc4/vc4_dsi.c16
1 files changed, 4 insertions, 12 deletions
diff --git a/drivers/gpu/drm/vc4/vc4_dsi.c b/drivers/gpu/drm/vc4/vc4_dsi.c
index 2736b0331beb..e328cb86469c 100644
--- a/drivers/gpu/drm/vc4/vc4_dsi.c
+++ b/drivers/gpu/drm/vc4/vc4_dsi.c
@@ -771,16 +771,14 @@ static const struct drm_connector_helper_funcs vc4_dsi_connector_helper_funcs =
771static struct drm_connector *vc4_dsi_connector_init(struct drm_device *dev, 771static struct drm_connector *vc4_dsi_connector_init(struct drm_device *dev,
772 struct vc4_dsi *dsi) 772 struct vc4_dsi *dsi)
773{ 773{
774 struct drm_connector *connector = NULL; 774 struct drm_connector *connector;
775 struct vc4_dsi_connector *dsi_connector; 775 struct vc4_dsi_connector *dsi_connector;
776 int ret = 0;
777 776
778 dsi_connector = devm_kzalloc(dev->dev, sizeof(*dsi_connector), 777 dsi_connector = devm_kzalloc(dev->dev, sizeof(*dsi_connector),
779 GFP_KERNEL); 778 GFP_KERNEL);
780 if (!dsi_connector) { 779 if (!dsi_connector)
781 ret = -ENOMEM; 780 return ERR_PTR(-ENOMEM);
782 goto fail; 781
783 }
784 connector = &dsi_connector->base; 782 connector = &dsi_connector->base;
785 783
786 dsi_connector->dsi = dsi; 784 dsi_connector->dsi = dsi;
@@ -796,12 +794,6 @@ static struct drm_connector *vc4_dsi_connector_init(struct drm_device *dev,
796 drm_mode_connector_attach_encoder(connector, dsi->encoder); 794 drm_mode_connector_attach_encoder(connector, dsi->encoder);
797 795
798 return connector; 796 return connector;
799
800fail:
801 if (connector)
802 vc4_dsi_connector_destroy(connector);
803
804 return ERR_PTR(ret);
805} 797}
806 798
807static void vc4_dsi_encoder_destroy(struct drm_encoder *encoder) 799static void vc4_dsi_encoder_destroy(struct drm_encoder *encoder)