The following pull request was submitted through Github.
It can be accessed and reviewed at: https://github.com/lxc/lxcfs/pull/379

This e-mail was sent by the LXC bot, direct replies will not reach the author
unless they happen to be subscribed to this list.

=== Description (from pull-request) ===
Signed-off-by: Christian Brauner <christian.brau...@ubuntu.com>
From 2a5d697d25393c01a86550095a272b98a6d024fa Mon Sep 17 00:00:00 2001
From: Christian Brauner <christian.brau...@ubuntu.com>
Date: Tue, 17 Mar 2020 10:05:53 +0100
Subject: [PATCH 1/2] tree-wide: remove is_relative() and use
 must_make_path_relative()

Signed-off-by: Christian Brauner <christian.brau...@ubuntu.com>
---
 src/cgroups/cgroup_utils.h |  5 -----
 src/proc_loadavg.c         | 20 ++++++--------------
 2 files changed, 6 insertions(+), 19 deletions(-)

diff --git a/src/cgroups/cgroup_utils.h b/src/cgroups/cgroup_utils.h
index e626e3f..3b9d971 100644
--- a/src/cgroups/cgroup_utils.h
+++ b/src/cgroups/cgroup_utils.h
@@ -102,11 +102,6 @@ static inline const char *dot_or_empty(const char *s)
        return (*s == '/') ? dot : empty;
 }
 
-static inline bool is_relative(const char *s)
-{
-       return s && *s != '/';
-}
-
 #define must_make_path_relative(__first__, ...)                                
\
        ({                                                                     \
                char *__ptr__;                                                 \
diff --git a/src/proc_loadavg.c b/src/proc_loadavg.c
index cb8a738..a8c01d0 100644
--- a/src/proc_loadavg.c
+++ b/src/proc_loadavg.c
@@ -499,9 +499,8 @@ static struct load_node *del_node(struct load_node *n, int 
locate)
 static void *load_begin(void *arg)
 {
 
-       int sum, length, ret;
+       int first_node, sum;
        struct load_node *f;
-       int first_node;
        clock_t time1, time2;
 
        for (;;) {
@@ -521,22 +520,14 @@ static void *load_begin(void *arg)
                        while (f) {
                                __do_free char *path = NULL;
 
-                               length = strlen(f->cg) + 2;
-                                       /* strlen(f->cg) + '.' or '' + \0 */
-                               path = malloc(length);
-                               if  (!path)
-                                       goto out;
-
-                               ret = snprintf(path, length, "%s%s", 
!is_relative(f->cg) ? "." : "", f->cg);
-                               /* Ignore the node if snprintf fails.*/
-                               if (ret < 0 || ret > length - 1)
-                                       log_error(goto out, "Refresh node %s 
failed for snprintf()", f->cg);
+                               path = must_make_path_relative(f->cg, NULL);
 
                                sum = refresh_load(f, path);
                                if (sum == 0)
                                        f = del_node(f, i);
                                else
-out:                                   f = f->next;
+                                       f = f->next;
+
                                /* load_hash[i].lock locks only on the first 
node.*/
                                if (first_node == 1) {
                                        first_node = 0;
@@ -549,7 +540,8 @@ out:                                        f = f->next;
                        return NULL;
 
                time2 = clock();
-               usleep(FLUSH_TIME * 1000000 - (int)((time2 - time1) * 1000000 / 
CLOCKS_PER_SEC));
+               usleep(FLUSH_TIME * 1000000 -
+                      (int)((time2 - time1) * 1000000 / CLOCKS_PER_SEC));
        }
 }
 

From 3c5e82301c70f1fb2feaa26058a34cbbe7299dab Mon Sep 17 00:00:00 2001
From: Christian Brauner <christian.brau...@ubuntu.com>
Date: Tue, 17 Mar 2020 10:08:21 +0100
Subject: [PATCH 2/2] cgroup_fuse: rework is_child_cgroup()

Signed-off-by: Christian Brauner <christian.brau...@ubuntu.com>
---
 src/cgroup_fuse.c | 21 ++++++---------------
 1 file changed, 6 insertions(+), 15 deletions(-)

diff --git a/src/cgroup_fuse.c b/src/cgroup_fuse.c
index 2e4aa2c..a93614b 100644
--- a/src/cgroup_fuse.c
+++ b/src/cgroup_fuse.c
@@ -162,28 +162,19 @@ static void get_cgdir_and_path(const char *cg, char 
**dir, char **last)
        *p = '\0';
 }
 
-static bool is_child_cgroup(const char *controller, const char *cgroup, const 
char *f)
+static bool is_child_cgroup(const char *controller, const char *cgroup,
+                           const char *file)
 {
-       int cfd;
-       size_t len;
-       char *fnam;
-       int ret;
+       __do_free char *path = NULL;
+       int cfd, ret;
        struct stat sb;
 
        cfd = get_cgroup_fd_handle_named(controller);
        if (cfd < 0)
                return false;
 
-       /* Make sure we pass a relative path to *at() family of functions.
-        * . + /cgroup + / + f + \0
-        */
-       len = strlen(cgroup) + strlen(f) + 3;
-       fnam = alloca(len);
-       ret = snprintf(fnam, len, "%s%s/%s", dot_or_empty(cgroup), cgroup, f);
-       if (ret < 0 || (size_t)ret >= len)
-               return false;
-
-       ret = fstatat(cfd, fnam, &sb, 0);
+       path = must_make_path_relative(cgroup, file, NULL);
+       ret = fstatat(cfd, path, &sb, 0);
        if (ret < 0 || !S_ISDIR(sb.st_mode))
                return false;
 
_______________________________________________
lxc-devel mailing list
lxc-devel@lists.linuxcontainers.org
http://lists.linuxcontainers.org/listinfo/lxc-devel

Reply via email to