lkml.org 
[lkml]   [2019]   [May]   [30]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.1 221/405] selftests: cgroup: fix cleanup path in test_memcg_subtree_control()
    Date
    [ Upstream commit e14d314c7a489f060d6d691866fef5f131281718 ]

    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@fb.com>
    Fixes: 84092dbcf901 ("selftests: cgroup: add memory controller self-tests")
    Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
    Cc: Dan Carpenter <dan.carpenter@oracle.com>
    Cc: Shuah Khan (Samsung OSG) <shuah@kernel.org>
    Cc: Mike Rapoport <rppt@linux.vnet.ibm.com>
    Signed-off-by: Shuah Khan <shuah@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    .../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 28d321ba311b4..6f339882a6ca1 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.20.1


    \
     
     \ /
      Last update: 2019-05-30 06:49    [W:4.036 / U:0.168 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site