lkml.org 
[lkml]   [2015]   [Dec]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Subject[PATCH 1/3] Documentation-getdelays: Fix a check for container file usage in main()
    From
    Date
    From: Markus Elfring <elfring@users.sourceforge.net>
    Date: Thu, 24 Dec 2015 11:00:54 +0100

    The close() function could be called by the main() function even if
    the passed variable "cfd" was assigned a negative value.

    * Corresponding implementation details could be improved by adjustments
    for jump targets according to the Linux coding style convention.

    * Fix the affected condition check.

    Signed-off-by: Markus Elfring <elfring@users.sourceforge.net>
    ---
    Documentation/accounting/getdelays.c | 21 ++++++++++++---------
    1 file changed, 12 insertions(+), 9 deletions(-)

    diff --git a/Documentation/accounting/getdelays.c b/Documentation/accounting/getdelays.c
    index f405780..6656c0c 100644
    --- a/Documentation/accounting/getdelays.c
    +++ b/Documentation/accounting/getdelays.c
    @@ -383,7 +383,7 @@ int main(int argc, char *argv[])
    id = get_family_id(nl_sd);
    if (!id) {
    fprintf(stderr, "Error getting family id, errno %d\n", errno);
    - goto err;
    + goto close_socket;
    }
    PRINTF("family id %d\n", id);

    @@ -394,13 +394,13 @@ int main(int argc, char *argv[])
    PRINTF("Sent register cpumask, retval %d\n", rc);
    if (rc < 0) {
    fprintf(stderr, "error sending register cpumask\n");
    - goto err;
    + goto close_socket;
    }
    }

    if (tid && containerset) {
    fprintf(stderr, "Select either -t or -C, not both\n");
    - goto err;
    + goto close_socket;
    }

    /*
    @@ -426,18 +426,18 @@ int main(int argc, char *argv[])
    cfd = open(containerpath, O_RDONLY);
    if (cfd < 0) {
    perror("error opening container file");
    - goto err;
    + goto close_socket;
    }
    rc = send_cmd(nl_sd, id, mypid, CGROUPSTATS_CMD_GET,
    CGROUPSTATS_CMD_ATTR_FD, &cfd, sizeof(__u32));
    if (rc < 0) {
    perror("error sending cgroupstats command");
    - goto err;
    + goto close_container;
    }
    }
    if (!maskset && !tid && !containerset) {
    usage();
    - goto err;
    + goto check_container;
    }

    do {
    @@ -536,11 +536,14 @@ done:
    if (rc < 0)
    err(rc, "error sending deregister cpumask\n");
    }
    -err:
    +check_container:
    + if (cfd >= 0) {
    +close_container:
    + close(cfd);
    + }
    +close_socket:
    close(nl_sd);
    if (fd)
    close(fd);
    - if (cfd)
    - close(cfd);
    return 0;
    }
    --
    2.6.3


    \
     
     \ /
      Last update: 2015-12-24 14:01    [W:4.907 / U:0.132 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site