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'
[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 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 > > Subject: random-fix-debug-format-strings-fix > > > > s/%zd/%zu/ for unsigned `size_t' > > > > Cc: Jiri Kosina > > Cc: Theodore Ts'o > > Signed-off-by: Andrew Morton > > --- > > > > 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(>lock, flags); > > > >
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'
[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...@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 a...@linux-foundation.org Subject: random-fix-debug-format-strings-fix s/%zd/%zu/ for unsigned `size_t' Cc: Jiri Kosina jkos...@suse.cz Cc: Theodore Ts'o ty...@mit.edu Signed-off-by: Andrew Morton a...@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, +