From: Nicolas Iooss <nicolas.iooss_linux@m4x.org>
To: viro@zeniv.linux.org.uk
Cc: linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] coredump: fix cn_printf formatting warnings
Date: Mon, 16 Mar 2015 20:23:49 +0800 [thread overview]
Message-ID: <5506CB55.3000200@m4x.org> (raw)
In-Reply-To: <1425646817-20100-1-git-send-email-nicolas.iooss_linux@m4x.org>
Ping? Comments (or NACK or ACK) would be greatly appreciated on this
patch. Of course, if you prefer to use init_user_ns instead of
cred->user_ns, I can send an other patch.
Nicolas
On 03/06/2015 09:00 PM, Nicolas Iooss wrote:
> Add __printf attributes to cn_*printf functions. With these, gcc says:
>
> fs/coredump.c:213:5: warning: format '%d' expects argument of type
> 'int', but argument 3 has type 'kuid_t' [-Wformat=]
> err = cn_printf(cn, "%d", cred->uid);
> ^
> fs/coredump.c:217:5: warning: format '%d' expects argument of type
> 'int', but argument 3 has type 'kgid_t' [-Wformat=]
> err = cn_printf(cn, "%d", cred->gid);
> ^
> fs/coredump.c:225:5: warning: format '%ld' expects argument of type
> 'long int', but argument 3 has type 'int' [-Wformat=]
> err = cn_printf(cn, "%ld", cprm->siginfo->si_signo);
> ^
>
> The third warning is easily fixed as si_signo is always an int.
>
> For the two others, cred->uid and cred->gid need to be converted to
> either a user-namespace UID/GID or to init_user_ns UID/GID. As
> Documentation/sysctl/kernel.txt does not specify which user namespace is
> used to translate %u and %g in core_pattern, but lowercase %p and %i are
> used to format pid/tid in current process namespace, it seems intuitive
> that lowercase %u and %g use the current user namespace. So implement
> this.
>
> Signed-off-by: Nicolas Iooss <nicolas.iooss_linux@m4x.org>
> ---
> fs/coredump.c | 18 ++++++++++++------
> 1 file changed, 12 insertions(+), 6 deletions(-)
>
> diff --git a/fs/coredump.c b/fs/coredump.c
> index f319926ddf8c..762d827825a8 100644
> --- a/fs/coredump.c
> +++ b/fs/coredump.c
> @@ -70,7 +70,8 @@ static int expand_corename(struct core_name *cn, int size)
> return 0;
> }
>
> -static int cn_vprintf(struct core_name *cn, const char *fmt, va_list arg)
> +static __printf(2, 0) int cn_vprintf(struct core_name *cn, const char *fmt,
> + va_list arg)
> {
> int free, need;
> va_list arg_copy;
> @@ -93,7 +94,7 @@ again:
> return -ENOMEM;
> }
>
> -static int cn_printf(struct core_name *cn, const char *fmt, ...)
> +static __printf(2, 3) int cn_printf(struct core_name *cn, const char *fmt, ...)
> {
> va_list arg;
> int ret;
> @@ -105,7 +106,8 @@ static int cn_printf(struct core_name *cn, const char *fmt, ...)
> return ret;
> }
>
> -static int cn_esc_printf(struct core_name *cn, const char *fmt, ...)
> +static __printf(2, 3)
> +int cn_esc_printf(struct core_name *cn, const char *fmt, ...)
> {
> int cur = cn->used;
> va_list arg;
> @@ -209,11 +211,15 @@ static int format_corename(struct core_name *cn, struct coredump_params *cprm)
> break;
> /* uid */
> case 'u':
> - err = cn_printf(cn, "%d", cred->uid);
> + err = cn_printf(cn, "%d",
> + from_kuid_munged(cred->user_ns,
> + cred->uid));
> break;
> /* gid */
> case 'g':
> - err = cn_printf(cn, "%d", cred->gid);
> + err = cn_printf(cn, "%d",
> + from_kgid_munged(cred->user_ns,
> + cred->gid));
> break;
> case 'd':
> err = cn_printf(cn, "%d",
> @@ -221,7 +227,7 @@ static int format_corename(struct core_name *cn, struct coredump_params *cprm)
> break;
> /* signal that caused the coredump */
> case 's':
> - err = cn_printf(cn, "%ld", cprm->siginfo->si_signo);
> + err = cn_printf(cn, "%d", cprm->siginfo->si_signo);
> break;
> /* UNIX time of coredump */
> case 't': {
>
prev parent reply other threads:[~2015-03-16 12:23 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-03-06 13:00 [PATCH] coredump: fix cn_printf formatting warnings Nicolas Iooss
2015-03-16 12:23 ` Nicolas Iooss [this message]
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=5506CB55.3000200@m4x.org \
--to=nicolas.iooss_linux@m4x.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=viro@zeniv.linux.org.uk \
/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.