From: Cyril Hrubis <chrubis@suse.cz>
To: ltp@lists.linux.it
Subject: [LTP] [PATCH v3 1/5] safe_macros: add safe_setxattr(),
Date: Wed, 2 Nov 2016 16:37:44 +0100 [thread overview]
Message-ID: <20161102153744.GD28344@rei.lan> (raw)
In-Reply-To: <1478084391-30192-2-git-send-email-dejan.jovicevic@rt-rk.com>
Hi!
> +#define SAFE_SETXATTR(path, name, value, size, flags) \
> + safe_setxattr(__FILE__, __LINE__, NULL, (path), (name), (value), (size), \
> + (flags))
> +
> +#define SAFE_LSETXATTR(path, name, value, size, flags) \
> + safe_lsetxattr(__FILE__, __LINE__, NULL, (path), (name), (value), (size), \
> + (flags))
> +
> +#define SAFE_FSETXATTR(fd, name, value, size, flags) \
> + safe_fsetxattr(__FILE__, __LINE__, NULL, (fd), (name), (value), (size), \
> + (flags))
You are missing the function prototype for the safe_*setxattr()
functions. And since these functions will not be exported to the old
library you should add them here instead of the safe_macros_fn.h header.
And, for the same reason, you don't have to pass NULL as a cleanup
callback to these functions. You can just pass NULL to the tst_brkm() in
the safe_macros.c.
> #endif /* SAFE_MACROS_H__ */
> diff --git a/lib/safe_macros.c b/lib/safe_macros.c
> index 5a05c84..e1d01b9 100644
> --- a/lib/safe_macros.c
> +++ b/lib/safe_macros.c
> @@ -794,3 +794,69 @@ struct dirent *safe_readdir(const char *file, const int lineno, void (cleanup_fn
> errno = err;
> return rval;
> }
> +
> +int safe_setxattr(const char *file, const int lineno, void (cleanup_fn)(void),
> + const char *path, const char *name, const void *value,
> + size_t size, int flags)
> +{
> + int rval;
> +
> + rval = setxattr(path, name, value, size, flags);
> +
> + if (rval) {
> + if (errno == ENOTSUP) {
> + tst_brkm(TCONF, cleanup_fn,
> + "%s:%d: no xattr support in fs or mounted "
> + "without user_xattr option", file, lineno);
> + }
> +
> + tst_brkm(TBROK | TERRNO, cleanup_fn, "%s:%d: setxattr() failed",
> + file, lineno);
> + }
> +
> + return rval;
> +}
> +
> +int safe_lsetxattr(const char *file, const int lineno, void (cleanup_fn)(void),
> + const char *path, const char *name, const void *value,
> + size_t size, int flags)
> +{
> + int rval;
> +
> + rval = lsetxattr(path, name, value, size, flags);
> +
> + if (rval) {
> + if (errno == ENOTSUP) {
> + tst_brkm(TCONF, cleanup_fn,
> + "%s:%d: no xattr support in fs or mounted "
> + "without user_xattr option", file, lineno);
> + }
> +
> + tst_brkm(TBROK | TERRNO, cleanup_fn, "%s:%d: lsetxattr() failed",
> + file, lineno);
> + }
> +
> + return rval;
> +}
> +
> +int safe_fsetxattr(const char *file, const int lineno, void (cleanup_fn)(void),
> + int fd, const char *name, const void *value, size_t size,
> + int flags)
> +{
> + int rval;
> +
> + rval = fsetxattr(fd, name, value, size, flags);
> +
> + if (rval) {
> + if (errno == ENOTSUP) {
> + tst_brkm(TCONF, cleanup_fn,
> + "%s:%d: no xattr support in fs or mounted "
> + "without user_xattr option", file, lineno);
> + }
> +
> + tst_brkm(TBROK | TERRNO, cleanup_fn, "%s:%d: fsetxattr() failed",
> + file, lineno);
> + }
> +
> + return rval;
> +}
Otherwise these safe macros looks like a good idea to me.
--
Cyril Hrubis
chrubis@suse.cz
next prev parent reply other threads:[~2016-11-02 15:37 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-11-02 10:59 [LTP] [PATCH v3 0/5] Listxattr related calls: new tests and testcase Dejan Jovicevic
2016-11-02 10:59 ` [LTP] [PATCH v3 1/5] safe_macros: add safe_setxattr(), Dejan Jovicevic
2016-11-02 15:37 ` Cyril Hrubis [this message]
2016-11-02 10:59 ` [LTP] [PATCH v3 2/5] llistxattr: moved to using safe macros Dejan Jovicevic
2016-11-02 15:38 ` Cyril Hrubis
2016-11-02 10:59 ` [LTP] [PATCH v3 3/5] llistxattr: improved code readability and Dejan Jovicevic
2016-11-02 15:44 ` Cyril Hrubis
2016-11-02 10:59 ` [LTP] [PATCH v3 4/5] llistxattr: new testcase for long path name Dejan Jovicevic
2016-11-02 15:47 ` Cyril Hrubis
2016-11-02 10:59 ` [LTP] [PATCH v3 5/5] flistxattr and listxattr: added tests Dejan Jovicevic
2016-11-02 16:13 ` Cyril Hrubis
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=20161102153744.GD28344@rei.lan \
--to=chrubis@suse.cz \
--cc=ltp@lists.linux.it \
/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.