<div dir="ltr"><div dir="ltr"><div class="gmail_default" style="font-size:small"><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Feb 3, 2022 at 4:20 PM Richard Palethorpe via ltp <<a href="mailto:ltp@lists.linux.it" target="_blank">ltp@lists.linux.it</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Allows the name to be formatted which is trivial because we already<br>
copy it into a buffer. Also this removes the init function which is<br>
now just unnecessary verbiage.<br>
<br>
Signed-off-by: Richard Palethorpe <<a href="mailto:rpalethorpe@suse.com" target="_blank">rpalethorpe@suse.com</a>><br>
Suggested-by: Cyril Hrubis <<a href="mailto:chrubis@suse.cz" target="_blank">chrubis@suse.cz</a>><br>
---<br>
 include/tst_cgroup.h |  5 +++--<br>
 lib/tst_cgroup.c     | 29 ++++++++++++-----------------<br>
 2 files changed, 15 insertions(+), 19 deletions(-)<br>
<br>
diff --git a/include/tst_cgroup.h b/include/tst_cgroup.h<br>
index 17adefd2b..d7a3433fa 100644<br>
--- a/include/tst_cgroup.h<br>
+++ b/include/tst_cgroup.h<br>
@@ -126,8 +126,9 @@ void tst_cgroup_init(void);<br>
 /* Create a descendant CGroup */<br>
 struct tst_cgroup_group *<br>
 tst_cgroup_group_mk(const struct tst_cgroup_group *const parent,<br>
-                   const char *const group_name)<br>
-                   __attribute__ ((nonnull, warn_unused_result));<br>
+                   const char *const group_name_fmt, ...)<br>
+           __attribute__ ((nonnull, warn_unused_result, format (printf, 2, 3)));<br></blockquote><div><br></div><div class="gmail_default" style="font-size:small">Seems this is too strict for some compiling.  e.g.</div><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small">cfs_bandwidth01.c: In function ‘mk_cpu_cgroup’:<br>cfs_bandwidth01.c:64:9: error: format not a string literal and no format arguments [-Werror=format-security]<br>   64 |         *cg = tst_cgroup_group_mk(cg_parent, cg_child_name);<br>      |         ^<br>cc1: some warnings being treated as errors<br>make: *** [../../../../include/mk/<a href="http://rules.mk:37" target="_blank">rules.mk:37</a>: cfs_bandwidth01] Error 1<br></div><div class="gmail_default" style="font-size:small"></div><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small"><div class="gmail_default">gcc version 11.2.1 20211203 (Red Hat 11.2.1-7) (GCC)</div><div class="gmail_default"><br></div></div><div class="gmail_default" style="font-size:small"> <br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
+<br>
 const char *<br>
 tst_cgroup_group_name(const struct tst_cgroup_group *const cg)<br>
                      __attribute__ ((nonnull, warn_unused_result));<br>
diff --git a/lib/tst_cgroup.c b/lib/tst_cgroup.c<br>
index d9cd6aa8e..66f17575e 100644<br>
--- a/lib/tst_cgroup.c<br>
+++ b/lib/tst_cgroup.c<br>
@@ -840,21 +840,6 @@ clear_data:<br>
        memset(roots, 0, sizeof(roots));<br>
 }<br>
<br>
-__attribute__((nonnull(1)))<br>
-static void cgroup_group_init(struct tst_cgroup_group *const cg,<br>
-                             const char *const group_name)<br>
-{<br>
-       memset(cg, 0, sizeof(*cg));<br>
-<br>
-       if (!group_name)<br>
-               return;<br>
-<br>
-       if (strlen(group_name) > NAME_MAX)<br>
-               tst_brk(TBROK, "Group name is too long");<br>
-<br>
-       strcpy(cg->group_name, group_name);<br>
-}<br>
-<br>
 __attribute__((nonnull(2, 3)))<br>
 static void cgroup_group_add_dir(const struct tst_cgroup_group *const parent,<br>
                                 struct tst_cgroup_group *const cg,<br>
@@ -886,14 +871,24 @@ static void cgroup_group_add_dir(const struct tst_cgroup_group *const parent,<br>
<br>
 struct tst_cgroup_group *<br>
 tst_cgroup_group_mk(const struct tst_cgroup_group *const parent,<br>
-                   const char *const group_name)<br>
+                   const char *const group_name_fmt, ...)<br>
 {<br>
        struct tst_cgroup_group *cg;<br>
        struct cgroup_dir *const *dir;<br>
        struct cgroup_dir *new_dir;<br>
+       va_list ap;<br>
+       size_t name_len;<br>
<br>
        cg = SAFE_MALLOC(sizeof(*cg));<br>
-       cgroup_group_init(cg, group_name);<br>
+       memset(cg, 0, sizeof(*cg));<br>
+<br>
+       va_start(ap, group_name_fmt);<br>
+       name_len = vsnprintf(cg->group_name, NAME_MAX,<br>
+                            group_name_fmt, ap);<br>
+       va_end(ap);<br>
+<br>
+       if (name_len >= NAME_MAX)<br>
+               tst_brk(TBROK, "CGroup name is too long");<br>
<br>
        for_each_dir(parent, 0, dir) {<br>
                new_dir = SAFE_MALLOC(sizeof(*new_dir));<br>
-- <br>
2.34.1<br>
<br>
<br>
-- <br>
Mailing list info: <a href="https://lists.linux.it/listinfo/ltp" rel="noreferrer" target="_blank">https://lists.linux.it/listinfo/ltp</a><br>
<br>
</blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr"><div dir="ltr"><div>Regards,<br></div><div>Li Wang<br></div></div></div></div>