dri-devel.lists.freedesktop.org archive mirror
 help / color / mirror / Atom feed
From: SF Markus Elfring <elfring@users.sourceforge.net>
To: dri-devel@lists.freedesktop.org, David Airlie <airlied@linux.ie>,
	Jyri Sarha <jsarha@ti.com>,
	Tomi Valkeinen <tomi.valkeinen@ti.com>
Cc: LKML <linux-kernel@vger.kernel.org>,
	kernel-janitors@vger.kernel.org,
	Julia Lawall <julia.lawall@lip6.fr>
Subject: [PATCH 3/4] GPU-DRM-TILCDC: Less function calls in tilcdc_convert_slave_node() after error detection
Date: Thu, 22 Sep 2016 10:33:29 +0200	[thread overview]
Message-ID: <0be7fee0-64f7-fa02-0337-51376677343e@users.sourceforge.net> (raw)
In-Reply-To: <2f3f7ad7-16a0-1dfb-d073-0d993cd767ee@users.sourceforge.net>

From: Markus Elfring <elfring@users.sourceforge.net>
Date: Thu, 22 Sep 2016 10:06:50 +0200

The of_node_put() function was called in some cases
by the tilcdc_convert_slave_node() function during error handling
even if the passed variable contained a null pointer.

* Adjust jump targets according to the Linux coding style convention.

* Split a condition check for resource detection failures so that
  each pointer from these function calls will be checked immediately.

  See also background information:
  Topic "CWE-754: Improper check for unusual or exceptional conditions"
  Link: https://cwe.mitre.org/data/definitions/754.html

Signed-off-by: Markus Elfring <elfring@users.sourceforge.net>
---
 drivers/gpu/drm/tilcdc/tilcdc_slave_compat.c | 28 +++++++++++++++++-----------
 1 file changed, 17 insertions(+), 11 deletions(-)

diff --git a/drivers/gpu/drm/tilcdc/tilcdc_slave_compat.c b/drivers/gpu/drm/tilcdc/tilcdc_slave_compat.c
index 6204405..6ee5865 100644
--- a/drivers/gpu/drm/tilcdc/tilcdc_slave_compat.c
+++ b/drivers/gpu/drm/tilcdc/tilcdc_slave_compat.c
@@ -209,25 +209,27 @@ void __init tilcdc_convert_slave_node(void)
 		return;
 
 	lcdc = of_find_matching_node(NULL, tilcdc_of_match);
-	slave = of_find_matching_node(NULL, tilcdc_slave_of_match);
+	if (!of_device_is_available(lcdc))
+		goto free_table;
 
-	if (!slave || !of_device_is_available(lcdc))
-		goto out;
+	slave = of_find_matching_node(NULL, tilcdc_slave_of_match);
+	if (!slave)
+		goto put_node_lcdc;
 
 	i2c = of_parse_phandle(slave, "i2c", 0);
 	if (!i2c) {
 		pr_err("%s: Can't find i2c node trough phandle\n", __func__);
-		goto out;
+		goto put_node_slave;
 	}
 
 	overlay = tilcdc_get_overlay(&kft);
 	if (!overlay)
-		goto out;
+		goto put_node_i2c;
 
 	encoder = of_find_matching_node(overlay, tilcdc_tda998x_of_match);
 	if (!encoder) {
 		pr_err("%s: Failed to find tda998x node\n", __func__);
-		goto out;
+		goto put_node_i2c;
 	}
 
 	tilcdc_copy_props(slave, encoder, tilcdc_slave_props, &kft);
@@ -238,10 +240,10 @@ void __init tilcdc_convert_slave_node(void)
 			continue;
 		if (!strncmp("i2c", (char *)prop->value, prop->length))
 			if (tilcdc_prop_str_update(prop, i2c->full_name, &kft))
-				goto out;
+				goto put_node_fragment;
 		if (!strncmp("lcdc", (char *)prop->value, prop->length))
 			if (tilcdc_prop_str_update(prop, lcdc->full_name, &kft))
-				goto out;
+				goto put_node_fragment;
 	}
 
 	tilcdc_node_disable(slave);
@@ -252,12 +254,16 @@ void __init tilcdc_convert_slave_node(void)
 	else
 		pr_info("%s: ti,tilcdc,slave node successfully converted\n",
 			__func__);
-out:
-	kfree_table_free(&kft);
+ put_node_fragment:
+	of_node_put(fragment);
+ put_node_i2c:
 	of_node_put(i2c);
+ put_node_slave:
 	of_node_put(slave);
+ put_node_lcdc:
 	of_node_put(lcdc);
-	of_node_put(fragment);
+ free_table:
+	kfree_table_free(&kft);
 }
 
 int __init tilcdc_slave_compat_init(void)
-- 
2.10.0

  parent reply	other threads:[~2016-09-22  8:33 UTC|newest]

Thread overview: 107+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <566ABCD9.1060404@users.sourceforge.net>
2016-08-18 19:42 ` [PATCH 0/2] GPU-DRM-Savage: Fine-tuning for savage_bci_cmdbuf() SF Markus Elfring
2016-08-18 19:45   ` [PATCH 1/2] GPU-DRM-Savage: Use memdup_user() rather than duplicating SF Markus Elfring
2016-08-18 19:48   ` [PATCH 2/2] GPU-DRM-Savage: Less function calls in savage_bci_cmdbuf() after error detection SF Markus Elfring
2016-08-19  7:50     ` Daniel Vetter
2016-10-12 12:04       ` SF Markus Elfring
2016-08-19  7:41   ` [PATCH 0/2] GPU-DRM-Savage: Fine-tuning for savage_bci_cmdbuf() Daniel Vetter
2016-09-18 16:48 ` [PATCH 0/5] drm/amdgpu: Fine-tuning for several function implementations SF Markus Elfring
2016-09-18 16:50   ` [PATCH 1/5] drm/amdgpu: Use kmalloc_array() in amdgpu_debugfs_gca_config_read() SF Markus Elfring
2016-09-19 17:25     ` Alex Deucher
2016-09-18 16:51   ` [PATCH 2/5] drm/amdgpu: Improve determination of sizes in two functions SF Markus Elfring
2016-09-18 16:52   ` [PATCH 3/5] drm/amdgpu: Rename a jump label in amdgpu_debugfs_regs_read() SF Markus Elfring
2016-09-18 16:53   ` [PATCH 4/5] drm/amdgpu: Rename a jump label in amdgpu_device_init() SF Markus Elfring
2016-09-19 13:56     ` Deucher, Alexander
2016-09-18 16:54   ` [PATCH 5/5] drm/amdgpu: Adjust checks for null pointers in nine functions SF Markus Elfring
2024-01-05 18:15   ` [PATCH 0/5] drm/amdgpu: Fine-tuning for several function implementations Markus Elfring
2024-01-05 18:29     ` Alex Deucher
2016-09-19 15:51 ` [PATCH 0/5] GPU-DRM: Fine-tuning for four " SF Markus Elfring
2016-09-19 15:53   ` [PATCH 1/5] GPU-DRM: Use kmalloc_array() in drm_legacy_addbufs_pci() SF Markus Elfring
2016-09-19 15:54   ` [PATCH 2/5] GPU-DRM: Replace two kzalloc() calls by kcalloc() " SF Markus Elfring
2016-09-19 15:55   ` [PATCH 3/5] GPU-DRM: Replace a kzalloc() call by kcalloc() in drm_legacy_addbufs_agp() SF Markus Elfring
2016-09-19 15:56   ` [PATCH 4/5] GPU-DRM: Replace a kzalloc() call by kcalloc() in drm_legacy_addbufs_sg() SF Markus Elfring
2016-09-21 11:22     ` Daniel Vetter
2016-09-19 15:58   ` [PATCH 5/5] GPU-DRM: Rename a jump label in drm_legacy_mapbufs() SF Markus Elfring
2016-09-20  8:54 ` [PATCH 0/6] GPU-DRM-GMA500: Fine-tuning for two function implementations SF Markus Elfring
2016-09-20  8:55   ` [PATCH 1/6] GPU-DRM-GMA500: Use kmalloc_array() in mid_get_vbt_data_r10() SF Markus Elfring
2016-09-20 10:06     ` Jani Nikula
2016-09-20 10:30       ` SF Markus Elfring
2016-09-20  8:57   ` [PATCH 2/6] GPU-DRM-GMA500: Rename a jump label " SF Markus Elfring
2016-09-20 10:05     ` Jani Nikula
2016-09-20  8:58   ` [PATCH 3/6] GPU-DRM-GMA500: Move a variable assignment " SF Markus Elfring
2016-09-20  8:59   ` [PATCH 4/6] GPU-DRM-GMA500: Fix indentation for a function call parameter " SF Markus Elfring
2016-09-20  9:00   ` [PATCH 5/6] GPU-DRM-GMA500: One error message less for a GCT revision mismatch in mid_get_vbt_data() SF Markus Elfring
2016-09-20 10:07     ` Jani Nikula
2016-09-20 10:32       ` SF Markus Elfring
2016-09-20 10:48       ` [PATCH 5/6] " Dan Carpenter
2016-09-20 11:03         ` SF Markus Elfring
2016-09-20 11:17           ` Dan Carpenter
2016-09-20 11:30             ` SF Markus Elfring
2016-09-20 12:08         ` [PATCH 5/6] " Jani Nikula
2016-09-20 20:23           ` Patrik Jakobsson
2016-09-20  9:01   ` [PATCH 6/6] GPU-DRM-GMA500: Rename a jump label " SF Markus Elfring
2016-09-20 10:08     ` Jani Nikula
2016-09-20 12:40       ` Dan Carpenter
2016-09-21 16:35 ` [PATCH 00/14] GPU-DRM-OMAP: Fine-tuning for several function implementations SF Markus Elfring
2016-09-21 16:38   ` [PATCH 01/14] GPU-DRM-OMAP: Use kmalloc_array() in tiler_map_show() SF Markus Elfring
2016-09-21 16:39   ` [PATCH 02/14] GPU-DRM-OMAP: Replace another kmalloc() call by " SF Markus Elfring
2016-09-21 16:40   ` [PATCH 03/14] GPU-DRM-OMAP: Less function calls in tiler_map_show() after error detection SF Markus Elfring
2016-09-21 16:41   ` [PATCH 04/14] GPU-DRM-OMAP: Delete an unnecessary variable initialisation in tiler_map_show() Markus Elfring
2016-09-21 16:45   ` SF Markus Elfring
2016-09-21 16:46   ` [PATCH 05/14] GPU-DRM-OMAP: Improve a size determination in dmm_txn_append() SF Markus Elfring
2016-09-21 16:47   ` [PATCH 06/14] GPU-DRM-OMAP: Improve a size determination in omap_dmm_probe() SF Markus Elfring
2016-09-21 16:48   ` [PATCH 07/14] GPU-DRM-OMAP: Rename a jump label " SF Markus Elfring
2016-09-21 16:49   ` [PATCH 08/14] GPU-DRM-OMAP: Rename a jump label in dmm_txn_commit() SF Markus Elfring
2016-09-21 16:50   ` [PATCH 09/14] GPU-DRM-OMAP: Delete an unnecessary variable initialisation " SF Markus Elfring
2016-09-21 16:52   ` [PATCH 10/14] GPU-DRM-OMAP: Use kmalloc_array() in omap_gem_attach_pages() SF Markus Elfring
2016-09-21 16:53   ` [PATCH 11/14] GPU-DRM-OMAP: Replace a kzalloc() call by kcalloc() " SF Markus Elfring
2016-09-21 16:54   ` [PATCH 12/14] GPU-DRM-OMAP: Move a variable assignment " SF Markus Elfring
2016-09-21 16:55   ` [PATCH 13/14] GPU-DRM-OMAP: Rename a jump label in omap_gem_new_dmabuf() SF Markus Elfring
2016-09-21 16:56   ` [PATCH 14/14] GPU-DRM-OMAP: Rename a jump label in four functions SF Markus Elfring
2016-09-22  6:45   ` [PATCH 00/14] GPU-DRM-OMAP: Fine-tuning for several function implementations Daniel Vetter
2016-09-22  6:54     ` Laurent Pinchart
2016-09-22  9:11       ` SF Markus Elfring
2016-09-22  8:30 ` [PATCH 0/4] GPU-DRM-TILCDC: Fine-tuning for two " SF Markus Elfring
2016-09-22  8:31   ` [PATCH 1/4] GPU-DRM-TILCDC: Use kmalloc_array() in kfree_table_init() SF Markus Elfring
2016-09-22 16:55     ` Jyri Sarha
2016-09-22  8:32   ` [PATCH 2/4] GPU-DRM-TILCDC: Return directly after a failed kfree_table_init() in tilcdc_convert_slave_node() SF Markus Elfring
2016-09-22 10:58     ` Dan Carpenter
2016-09-22 16:57     ` Jyri Sarha
2016-09-22 18:17       ` SF Markus Elfring
2016-09-22  8:33   ` SF Markus Elfring [this message]
2016-09-22 17:04     ` [PATCH 3/4] GPU-DRM-TILCDC: Less function calls in tilcdc_convert_slave_node() after error detection Jyri Sarha
2016-09-22 18:38       ` SF Markus Elfring
2016-09-22 20:22         ` Jyri Sarha
2016-09-23  7:36           ` SF Markus Elfring
2016-09-23 10:37             ` Jyri Sarha
2016-09-23 10:55               ` SF Markus Elfring
2016-09-23 10:58         ` Rob Clark
2016-09-23 11:19           ` SF Markus Elfring
2016-09-23 11:31             ` Rob Clark
2016-09-23 12:17               ` SF Markus Elfring
2016-09-23 13:04                 ` Rob Clark
2016-09-22  8:34   ` [PATCH 4/4] GPU-DRM-TILCDC: Delete unnecessary variable initialisations in tilcdc_convert_slave_node() SF Markus Elfring
2016-09-22 17:32 ` [PATCH 00/14] GPU-DRM-TTM: Fine-tuning for several function implementations SF Markus Elfring
2016-09-22 17:33   ` [PATCH 01/14] GPU-DRM-TTM: Use kmalloc_array() in two functions SF Markus Elfring
2016-09-22 17:34   ` [PATCH 02/14] GPU-DRM-TTM: Rename a jump label in ttm_alloc_new_pages() SF Markus Elfring
2016-09-22 17:35   ` [PATCH 03/14] GPU-DRM-TTM: Rename jump labels in ttm_page_pool_free() SF Markus Elfring
2016-09-22 17:36   ` [PATCH 04/14] GPU-DRM-TTM: Rename a jump label in ttm_page_pool_get_pages() SF Markus Elfring
2016-09-22 17:37   ` [PATCH 05/14] GPU-DRM-TTM: Use kmalloc_array() in two more functions SF Markus Elfring
2016-09-22 17:38   ` [PATCH 06/14] GPU-DRM-TTM: Rename a jump label in ttm_dma_pool_alloc_new_pages() SF Markus Elfring
2016-09-22 17:39   ` [PATCH 07/14] GPU-DRM-TTM: Rename jump labels in ttm_dma_page_pool_free() SF Markus Elfring
2016-09-22 17:40   ` [PATCH 08/14] GPU-DRM-TTM: Rename a jump label in ttm_dma_pool_shrink_scan() SF Markus Elfring
2016-09-22 17:41   ` [PATCH 09/14] GPU-DRM-TTM: Return directly after a failed kzalloc() in ttm_dma_page_alloc_init() SF Markus Elfring
2016-09-22 17:42   ` [PATCH 10/14] GPU-DRM-TTM: Return directly after a failed kobject_init_and_add() " SF Markus Elfring
2016-09-22 17:43   ` [PATCH 11/14] GPU-DRM-TTM: Return an error code only as a constant in ttm_dma_pool_init() SF Markus Elfring
2016-09-22 17:44   ` [PATCH 12/14] GPU-DRM-TTM: Less function calls in ttm_dma_pool_init() after error detection SF Markus Elfring
2016-09-22 17:45   ` [PATCH 13/14] GPU-DRM-TTM: Delete unnecessary variable initialisations in ttm_dma_pool_init() SF Markus Elfring
2016-09-22 17:46   ` [PATCH 14/14] GPU-DRM-TTM: Mark an array of text strings as "const" " SF Markus Elfring
2016-09-22 18:49     ` Joe Perches
2016-09-23  9:44   ` [PATCH 00/14] GPU-DRM-TTM: Fine-tuning for several function implementations Christian König
2016-09-23 10:20     ` SF Markus Elfring
2016-09-23 10:38       ` Christian König
2016-09-23 11:07         ` SF Markus Elfring
2016-09-23 11:17           ` Christian König
2016-09-23 11:49             ` SF Markus Elfring
2016-09-23 13:06               ` Christian König
2016-09-23 12:55       ` Dan Carpenter
2016-09-23 13:46         ` SF Markus Elfring

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=0be7fee0-64f7-fa02-0337-51376677343e@users.sourceforge.net \
    --to=elfring@users.sourceforge.net \
    --cc=airlied@linux.ie \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=jsarha@ti.com \
    --cc=julia.lawall@lip6.fr \
    --cc=kernel-janitors@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=tomi.valkeinen@ti.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).