From: Fengguang Wu <fengguang.wu@intel.com>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: Jiri Kosina <jkosina@suse.cz>,
Yuanhan Liu <yuanhan.liu@linux.intel.com>,
LKML <linux-kernel@vger.kernel.org>,
linux-cris-kernel <linux-cris-kernel@axis.com>,
linux-am33-list@redhat.com
Subject: Re: [next:akpm 155/157] drivers/char/random.c:827:3: warning: format '%zd' expects argument of type 'signed size_t', but argument 7 has type 'size_t'
Date: Wed, 24 Oct 2012 09:30:47 +0800 [thread overview]
Message-ID: <20121024013047.GA11093@localhost> (raw)
In-Reply-To: <20121024005612.GA4028@localhost>
[add CC to mn10300/cris arch lists]
On Wed, Oct 24, 2012 at 08:56:12AM +0800, Fengguang Wu wrote:
> On Tue, Oct 23, 2012 at 02:53:58PM -0700, Andrew Morton wrote:
> > On Tue, 23 Oct 2012 18:16:58 +0800
> > Fengguang Wu <fengguang.wu@intel.com> wrote:
> >
> > > Hi Jiri,
> > >
> > > FYI, there are new compile warnings show up in
> > >
> > > tree: git://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git akpm
> > > head: dbfe0815b4af06cc4ca6cd12b17e2d13ffaaf991
> > > commit: 0b1f5a647784c406ee33a6ddd3bb6382a2278111 [155/157] random: fix debug format strings
> > > config: mn10300-asb2364_defconfig # make ARCH=mn10300 asb2364_defconfig
> > >
> > > All warnings:
> > >
> > > drivers/char/random.c: In function 'xfer_secondary_pool':
> > > drivers/char/random.c:827:3: warning: format '%zd' expects argument of type 'signed size_t', but argument 7 has type 'size_t' [-Wformat]
> > > drivers/char/random.c: In function 'account':
> > > drivers/char/random.c:859:2: warning: format '%zd' expects argument of type 'signed size_t', but argument 5 has type 'size_t' [-Wformat]
> > > drivers/char/random.c:881:2: warning: format '%zd' expects argument of type 'signed size_t', but argument 5 has type 'size_t' [-Wformat]
> > > drivers/char/random.c: In function 'random_read':
> > > drivers/char/random.c:1141:3: warning: format '%zd' expects argument of type 'signed size_t', but argument 5 has type 'int' [-Wformat]
> > > drivers/char/random.c:1145:3: warning: format '%zd' expects argument of type 'signed size_t', but argument 5 has type 'int' [-Wformat]
> > > drivers/char/random.c:1145:3: warning: format '%zd' expects argument of type 'signed size_t', but argument 6 has type 'size_t' [-Wformat]
> > > drivers/char/random.c: In function 'write_pool':
> > > drivers/char/random.c:1213:11: warning: comparison of distinct pointer types lacks a cast [enabled by default]
> > >
> >
> > Ah, I get it. %zd vs %zu. This?
>
> With the patch, there are still errors (below). I think the reason of the
> warnings is, (size_t * 8) makes it an (int) because the constant 8 is (int).
Sorry (size_t * 8) becomes (unsigned int) because (size_t) is (unsigned int).
And the problem is specific to mn10300/cris: (size_t * 8) is no longer (size_t),
which triggers the gcc warnings discussed here.
Thanks,
Fengguang
> CC drivers/char/random.o
> /c/wfg/linux/drivers/char/random.c: In function 'xfer_secondary_pool':
> /c/wfg/linux/drivers/char/random.c:827:3: warning: format '%zu' expects argument of type 'size_t', but argument 7 has type 'unsigned int' [-Wformat]
> /c/wfg/linux/drivers/char/random.c: In function 'account':
> /c/wfg/linux/drivers/char/random.c:859:2: warning: format '%zu' expects argument of type 'size_t', but argument 5 has type 'unsigned int' [-Wformat]
> /c/wfg/linux/drivers/char/random.c:881:2: warning: format '%zu' expects argument of type 'size_t', but argument 5 has type 'unsigned int' [-Wformat]
> /c/wfg/linux/drivers/char/random.c: In function 'random_read':
> /c/wfg/linux/drivers/char/random.c:1141:3: warning: format '%zu' expects argument of type 'size_t', but argument 5 has type 'int' [-Wformat]
> /c/wfg/linux/drivers/char/random.c:1145:3: warning: format '%zu' expects argument of type 'size_t', but argument 5 has type 'int' [-Wformat]
> /c/wfg/linux/drivers/char/random.c:1145:3: warning: format '%zu' expects argument of type 'size_t', but argument 6 has type 'unsigned int' [-Wformat]
>
> And that behavior is depending on arch. Changing %zu to %u will make
> mn10300/parisc/i386 etc. archs compile cleanly, however x86_64 goes
> wrong like this:
>
> /c/wfg/linux/drivers/char/random.c:827:3: warning: format ‘%u’ expects argument of type ‘unsigned int’, but argument 7 has type ‘size_t’ [-Wformat]
>
> So in x86_64, (size_t * 8) is still of type size_t.
>
> Thanks,
> Fengguang
> ---
> >
> > From: Andrew Morton <akpm@linux-foundation.org>
> > Subject: random-fix-debug-format-strings-fix
> >
> > s/%zd/%zu/ for unsigned `size_t'
> >
> > Cc: Jiri Kosina <jkosina@suse.cz>
> > Cc: Theodore Ts'o <tytso@mit.edu>
> > Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
> > ---
> >
> > drivers/char/random.c | 12 ++++++------
> > 1 file changed, 6 insertions(+), 6 deletions(-)
> >
> > diff -puN drivers/char/random.c~random-fix-debug-format-strings-fix drivers/char/random.c
> > --- a/drivers/char/random.c~random-fix-debug-format-strings-fix
> > +++ a/drivers/char/random.c
> > @@ -825,7 +825,7 @@ static void xfer_secondary_pool(struct e
> > bytes = min_t(int, bytes, sizeof(tmp));
> >
> > DEBUG_ENT("going to reseed %s with %d bits "
> > - "(%zd of %d requested)\n",
> > + "(%zu of %d requested)\n",
> > r->name, bytes * 8, nbytes * 8, r->entropy_count);
> >
> > bytes = extract_entropy(r->pull, tmp, bytes,
> > @@ -856,7 +856,7 @@ static size_t account(struct entropy_sto
> > spin_lock_irqsave(&r->lock, flags);
> >
> > BUG_ON(r->entropy_count > r->poolinfo->POOLBITS);
> > - DEBUG_ENT("trying to extract %zd bits from %s\n",
> > + DEBUG_ENT("trying to extract %zu bits from %s\n",
> > nbytes * 8, r->name);
> >
> > /* Can we pull enough? */
> > @@ -878,7 +878,7 @@ static size_t account(struct entropy_sto
> > }
> > }
> >
> > - DEBUG_ENT("debiting %zd entropy credits from %s%s\n",
> > + DEBUG_ENT("debiting %zu entropy credits from %s%s\n",
> > nbytes * 8, r->name, r->limit ? "" : " (unlimited)");
> >
> > spin_unlock_irqrestore(&r->lock, flags);
> > @@ -1138,11 +1138,11 @@ random_read(struct file *file, char __us
> > if (n > SEC_XFER_SIZE)
> > n = SEC_XFER_SIZE;
> >
> > - DEBUG_ENT("reading %zd bits\n", n*8);
> > + DEBUG_ENT("reading %zu bits\n", n*8);
> >
> > n = extract_entropy_user(&blocking_pool, buf, n);
> >
> > - DEBUG_ENT("read got %zd bits (%zd still needed)\n",
> > + DEBUG_ENT("read got %zu bits (%zu still needed)\n",
> > n*8, (nbytes-n)*8);
> >
> > if (n == 0) {
> > @@ -1210,7 +1210,7 @@ write_pool(struct entropy_store *r, cons
> > const char __user *p = buffer;
> >
> > while (count > 0) {
> > - bytes = min(count, sizeof(buf));
> > + bytes = min_t(size_t, count, sizeof(buf));
> > if (copy_from_user(&buf, p, bytes))
> > return -EFAULT;
> >
> > _
parent reply other threads:[~2012-10-24 1:31 UTC|newest]
Thread overview: expand[flat|nested] mbox.gz Atom feed
[parent not found: <20121024005612.GA4028@localhost>]
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=20121024013047.GA11093@localhost \
--to=fengguang.wu@intel.com \
--cc=akpm@linux-foundation.org \
--cc=jkosina@suse.cz \
--cc=linux-am33-list@redhat.com \
--cc=linux-cris-kernel@axis.com \
--cc=linux-kernel@vger.kernel.org \
--cc=yuanhan.liu@linux.intel.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.