From: Richard Palethorpe <rpalethorpe@suse.de>
To: Yang Xu <xuyang2018.jy@fujitsu.com>
Cc: ltp@lists.linux.it
Subject: Re: [LTP] [PATCH v1 2/3] tst_cgroup: Add safe_cg_open and safe_cg_fchown functions
Date: Thu, 04 Aug 2022 11:24:08 +0100 [thread overview]
Message-ID: <87zggks3pe.fsf@suse.de> (raw)
In-Reply-To: <1659521981-2241-2-git-send-email-xuyang2018.jy@fujitsu.com>
Hello,
Yang Xu <xuyang2018.jy@fujitsu.com> writes:
> safe_cg_open is used to open the sub control's file ie cgroup.procs
> and returns the fd.
>
> safe_cg_fchown is used to use fchownat to change file's uid and gid.
>
> Signed-off-by: Yang Xu <xuyang2018.jy@fujitsu.com>
> ---
> include/tst_cgroup.h | 15 +++++++++++++++
> lib/tst_cgroup.c | 39 +++++++++++++++++++++++++++++++++++++++
> 2 files changed, 54 insertions(+)
>
> diff --git a/include/tst_cgroup.h b/include/tst_cgroup.h
> index d06847cc6..292c9baa4 100644
> --- a/include/tst_cgroup.h
> +++ b/include/tst_cgroup.h
> @@ -188,6 +188,21 @@ ssize_t safe_cg_read(const char *const file, const int lineno,
> char *const out, const size_t len)
> __attribute__ ((nonnull));
>
> +#define SAFE_CG_OPEN(cg, file_name, flags) \
> + safe_cg_open(__FILE__, __LINE__, (cg), (file_name), (flags))
> +
> +int safe_cg_open(const char *const file, const int lineno,
> + const struct tst_cg_group *const cg,
> + const char *const file_name, int flags);
> +
> +#define SAFE_CG_FCHOWN(cg, file_name, owner, group) \
> + safe_cg_fchown(__FILE__, __LINE__, \
> + (cg), (file_name), (owner), (group))
> +
> +void safe_cg_fchown(const char *const file, const int lineno,
> + const struct tst_cg_group *const cg,
> + const char *const file_name, uid_t owner, gid_t group);
> +
> #define SAFE_CG_PRINTF(cg, file_name, fmt, ...) \
> safe_cg_printf(__FILE__, __LINE__, \
> (cg), (file_name), (fmt), __VA_ARGS__)
> diff --git a/lib/tst_cgroup.c b/lib/tst_cgroup.c
> index 1cfd79243..dedc0f65b 100644
> --- a/lib/tst_cgroup.c
> +++ b/lib/tst_cgroup.c
> @@ -1297,6 +1297,45 @@ ssize_t safe_cg_read(const char *const file, const int lineno,
> return read_ret;
> }
>
> +int safe_cg_open(const char *const file, const int lineno,
> + const struct tst_cg_group *cg,
> + const char *const file_name, int flags)
> +{
> + const struct cgroup_file *const cfile =
> + cgroup_file_find(file, lineno, file_name);
> + struct cgroup_dir *const *dir;
> + const char *alias;
> + int fd;
> +
> + for_each_dir(cg, cfile->ctrl_indx, dir) {
> + alias = cgroup_file_alias(cfile, *dir);
> + if (!alias)
> + continue;
> +
> + fd = safe_openat(file, lineno, (*dir)->dir_fd, alias,
> flags);
This will only return the last fd that gets opened. That's OK if the
file only exists on a single V1 controller, but if it exists on multiple
controllers (e.g. any cgroup.* file) then we will open multiple files
and only return the fd for the last of them.
--
Thank you,
Richard.
--
Mailing list info: https://lists.linux.it/listinfo/ltp
next prev parent reply other threads:[~2022-08-04 10:28 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-08-03 10:19 [LTP] [PATCH v1 1/3] tst_safe_file_at: Add SAFE_FCHOWNAT macro Yang Xu
2022-08-03 10:19 ` [LTP] [PATCH v1 2/3] tst_cgroup: Add safe_cg_open and safe_cg_fchown functions Yang Xu
2022-08-04 10:24 ` Richard Palethorpe [this message]
2022-08-16 6:19 ` xuyang2018.jy
2022-08-16 8:18 ` Richard Palethorpe
2022-08-18 8:05 ` xuyang2018.jy
2022-08-18 9:03 ` Richard Palethorpe
2022-08-23 7:10 ` xuyang2018.jy
2022-08-23 9:55 ` xuyang2018.jy
2022-08-18 9:00 ` [LTP] [RFC v2 1/3] tst_safe_file_at: Add SAFE_FCHOWNAT macro Yang Xu
2022-08-18 9:00 ` [LTP] [RFC v2 2/3] tst_cgroup: Add safe_cg_open and safe_cg_fchown functions Yang Xu
2022-08-18 9:00 ` [LTP] [RFC v2 3/3] memcontrol05: copy from kernel selftest test_cgcore_lesser_euid_open Yang Xu
2022-08-23 11:01 ` [LTP] [PATCH v3 1/3] tst_safe_file_at: Add SAFE_FCHOWNAT macro Yang Xu
2022-08-23 11:01 ` [LTP] [PATCH v3 2/3] tst_cgroup: Add safe_cg_open and safe_cg_fchown functions Yang Xu
2022-08-25 14:57 ` Richard Palethorpe
2022-08-25 16:08 ` Richard Palethorpe
2022-08-26 2:04 ` xuyang2018.jy
2022-08-26 3:59 ` [LTP] [PATCH v4 1/3] tst_safe_file_at: Add SAFE_FCHOWNAT macro Yang Xu
2022-08-26 3:59 ` [LTP] [PATCH v4 2/3] tst_cgroup: Add safe_cg_open and safe_cg_fchown functions Yang Xu
2022-08-26 5:54 ` Richard Palethorpe
2022-08-26 6:33 ` xuyang2018.jy
2022-08-26 3:59 ` [LTP] [PATCH v4 3/3] cgroup_core01: copy from kernel selftest test_cgcore_lesser_euid_open Yang Xu
2022-08-23 11:01 ` [LTP] [PATCH v3 3/3] core01: " Yang Xu
2022-08-03 10:19 ` [LTP] [PATCH v1 3/3] memcontrol05: " Yang Xu
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87zggks3pe.fsf@suse.de \
--to=rpalethorpe@suse.de \
--cc=ltp@lists.linux.it \
--cc=xuyang2018.jy@fujitsu.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.