lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [day] [month] [year] [list]
Date:	Wed, 24 Oct 2012 09:30:47 +0800
From:	Fengguang Wu <fengguang.wu@...el.com>
To:	Andrew Morton <akpm@...ux-foundation.org>
Cc:	Jiri Kosina <jkosina@...e.cz>,
	Yuanhan Liu <yuanhan.liu@...ux.intel.com>,
	LKML <linux-kernel@...r.kernel.org>,
	linux-cris-kernel <linux-cris-kernel@...s.com>,
	linux-am33-list@...hat.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'

[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@...el.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@...ux-foundation.org>
> > Subject: random-fix-debug-format-strings-fix
> > 
> > s/%zd/%zu/ for unsigned `size_t'
> > 
> > Cc: Jiri Kosina <jkosina@...e.cz>
> > Cc: Theodore Ts'o <tytso@....edu>
> > Signed-off-by: Andrew Morton <akpm@...ux-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;
> >  
> > _
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ