All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] selftests: cgroup: fix cleanup path in test_memcg_subtree_control()
@ 2019-04-08 21:45 ` Roman Gushchin
  0 siblings, 0 replies; 8+ messages in thread
From: guro @ 2019-04-08 21:45 UTC (permalink / raw)


Dan reported, that cleanup path in test_memcg_subtree_control()
triggers a static checker warning:
  ./tools/testing/selftests/cgroup/test_memcontrol.c:76 \
  test_memcg_subtree_control()
  error: uninitialized symbol 'child2'.

Fix this by initializing child2 and parent2 variables and
split the cleanup path into few stages.

Signed-off-by: Roman Gushchin <guro at fb.com>
Fixes: 84092dbcf901 ("selftests: cgroup: add memory controller self-tests")
Reported-by: Dan Carpenter <dan.carpenter at oracle.com>
Cc: Dan Carpenter <dan.carpenter at oracle.com>
Cc: Shuah Khan (Samsung OSG) <shuah at kernel.org>
Cc: Mike Rapoport <rppt at linux.vnet.ibm.com>
---
 .../selftests/cgroup/test_memcontrol.c        | 38 ++++++++++---------
 1 file changed, 21 insertions(+), 17 deletions(-)

diff --git a/tools/testing/selftests/cgroup/test_memcontrol.c b/tools/testing/selftests/cgroup/test_memcontrol.c
index 28d321ba311b..6f339882a6ca 100644
--- a/tools/testing/selftests/cgroup/test_memcontrol.c
+++ b/tools/testing/selftests/cgroup/test_memcontrol.c
@@ -26,7 +26,7 @@
  */
 static int test_memcg_subtree_control(const char *root)
 {
-	char *parent, *child, *parent2, *child2;
+	char *parent, *child, *parent2 = NULL, *child2 = NULL;
 	int ret = KSFT_FAIL;
 	char buf[PAGE_SIZE];
 
@@ -34,50 +34,54 @@ static int test_memcg_subtree_control(const char *root)
 	parent = cg_name(root, "memcg_test_0");
 	child = cg_name(root, "memcg_test_0/memcg_test_1");
 	if (!parent || !child)
-		goto cleanup;
+		goto cleanup_free;
 
 	if (cg_create(parent))
-		goto cleanup;
+		goto cleanup_free;
 
 	if (cg_write(parent, "cgroup.subtree_control", "+memory"))
-		goto cleanup;
+		goto cleanup_parent;
 
 	if (cg_create(child))
-		goto cleanup;
+		goto cleanup_parent;
 
 	if (cg_read_strstr(child, "cgroup.controllers", "memory"))
-		goto cleanup;
+		goto cleanup_child;
 
 	/* Create two nested cgroups without enabling memory controller */
 	parent2 = cg_name(root, "memcg_test_1");
 	child2 = cg_name(root, "memcg_test_1/memcg_test_1");
 	if (!parent2 || !child2)
-		goto cleanup;
+		goto cleanup_free2;
 
 	if (cg_create(parent2))
-		goto cleanup;
+		goto cleanup_free2;
 
 	if (cg_create(child2))
-		goto cleanup;
+		goto cleanup_parent2;
 
 	if (cg_read(child2, "cgroup.controllers", buf, sizeof(buf)))
-		goto cleanup;
+		goto cleanup_all;
 
 	if (!cg_read_strstr(child2, "cgroup.controllers", "memory"))
-		goto cleanup;
+		goto cleanup_all;
 
 	ret = KSFT_PASS;
 
-cleanup:
-	cg_destroy(child);
-	cg_destroy(parent);
-	free(parent);
-	free(child);
-
+cleanup_all:
 	cg_destroy(child2);
+cleanup_parent2:
 	cg_destroy(parent2);
+cleanup_free2:
 	free(parent2);
 	free(child2);
+cleanup_child:
+	cg_destroy(child);
+cleanup_parent:
+	cg_destroy(parent);
+cleanup_free:
+	free(parent);
+	free(child);
 
 	return ret;
 }
-- 
2.17.2

^ permalink raw reply related	[flat|nested] 8+ messages in thread
* [bug report] selftests: cgroup: add memory controller self-tests
@ 2018-06-26  9:03 dan.carpenter
  2018-06-26 17:14   ` Roman Gushchin
  0 siblings, 1 reply; 8+ messages in thread
From: dan.carpenter @ 2018-06-26  9:03 UTC (permalink / raw)


Hello Roman Gushchin,

The patch 84092dbcf901: "selftests: cgroup: add memory controller
self-tests" from May 11, 2018, leads to the following static checker
warning:

	./tools/testing/selftests/cgroup/test_memcontrol.c:76 test_memcg_subtree_control()
	error: uninitialized symbol 'child2'.

./tools/testing/selftests/cgroup/test_memcontrol.c
    69  
    70  cleanup:
    71          cg_destroy(child);
    72          cg_destroy(parent);
    73          free(parent);
    74          free(child);
    75  
    76          cg_destroy(child2);

The problem with using one error label to handle all possible returns
is that some stuff hasn't been initialized yet.

    77          cg_destroy(parent2);
    78          free(parent2);
    79          free(child2);
    80  
    81          return ret;
    82  }

regards,
dan carpenter
--
To unsubscribe from this list: send the line "unsubscribe linux-kselftest" in
the body of a message to majordomo at vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2019-04-08 22:14 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-04-08 21:45 [PATCH] selftests: cgroup: fix cleanup path in test_memcg_subtree_control() guro
2019-04-08 21:45 ` Roman Gushchin
2019-04-08 21:45 ` Roman Gushchin
2019-04-08 22:13 ` guro
2019-04-08 22:13   ` Roman Gushchin
2019-04-08 22:13   ` Roman Gushchin
  -- strict thread matches above, loose matches on Subject: below --
2018-06-26  9:03 [bug report] selftests: cgroup: add memory controller self-tests dan.carpenter
2018-06-26 17:14 ` [PATCH] selftests: cgroup: fix cleanup path in test_memcg_subtree_control() guro
2018-06-26 17:14   ` Roman Gushchin

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.