Patchwork libata: Shut up annoying native_sectors warning

login
register
mail settings
Submitter Borislav Petkov
Date Dec. 20, 2012, 12:25 p.m.
Message ID <1356006355-6819-1-git-send-email-bp@alien8.de>
Download mbox | patch
Permalink /patch/207654/
State Not Applicable
Delegated to: David Miller
Headers show

Comments

Borislav Petkov - Dec. 20, 2012, 12:25 p.m.
I'm getting this

drivers/ata/libata-core.c: In function ‘ata_hpa_resize’:
drivers/ata/libata-core.c:1397:3: warning: ‘native_sectors’ may be used uninitialized in this function [-Wmaybe-uninitialized]

for a couple of kernel releases now with gcc (Debian 4.7.2-4) 4.7.2.

And the warning is bogus because ata_read_native_max_address either
returns a sensible max_sectors aka native_sectors through its second
arg pointer or an error value which is properly handled in its caller
ata_hpa_resize().

So shut up gcc already.

Cc: Jeff Garzik <jgarzik@pobox.com>
Cc: linux-ide@vger.kernel.org
Signed-off-by: Borislav Petkov <bp@alien8.de>
---
 drivers/ata/libata-core.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
Alan Cox - Dec. 20, 2012, 1:01 p.m.
On Thu, 20 Dec 2012 13:25:55 +0100
Borislav Petkov <bp@alien8.de> wrote:

> I'm getting this
> 
> drivers/ata/libata-core.c: In function ‘ata_hpa_resize’:
> drivers/ata/libata-core.c:1397:3: warning: ‘native_sectors’ may be used uninitialized in this function [-Wmaybe-uninitialized]
> 
> for a couple of kernel releases now with gcc (Debian 4.7.2-4) 4.7.2.
> 
> And the warning is bogus because ata_read_native_max_address either
> returns a sensible max_sectors aka native_sectors through its second
> arg pointer or an error value which is properly handled in its caller
> ata_hpa_resize().
> 
> So shut up gcc already.

And ensure it won't be noticed if a real problem is found. So we go from
warning for a few people who ignore it, to silence for everyone if a real
bug appears

Net lose IMHO - better to file a gcc bug report

Alan

--
To unsubscribe from this list: send the line "unsubscribe linux-ide" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Borislav Petkov - Dec. 20, 2012, 3:04 p.m.
On Thu, Dec 20, 2012 at 01:01:59PM +0000, Alan Cox wrote:
> Net lose IMHO - better to file a gcc bug report

Ok, I'll try that. Want on CC?

The good thing is, it is a new issue in 4.7 since it doesn't trigger
with 4.6:

$  make CC=gcc-4.6 drivers/ata/libata-core.o
make[1]: Nothing to be done for `all'.
make[1]: Nothing to be done for `relocs'.
  CHK     include/generated/uapi/linux/version.h
  CHK     include/generated/utsrelease.h
  CALL    scripts/checksyscalls.sh
  CC      drivers/ata/libata-core.o

vs

$  make CC=gcc-4.7 drivers/ata/libata-core.o
make[1]: Nothing to be done for `all'.
make[1]: Nothing to be done for `relocs'.
  CHK     include/generated/uapi/linux/version.h
  CHK     include/generated/utsrelease.h
  CC      kernel/bounds.s
  GEN     include/generated/bounds.h
  CC      arch/x86/kernel/asm-offsets.s
  GEN     include/generated/asm-offsets.h
  CALL    scripts/checksyscalls.sh
  CC      scripts/mod/empty.o
  MKELF   scripts/mod/elfconfig.h
  HOSTCC  scripts/mod/file2alias.o
  HOSTCC  scripts/mod/modpost.o
  HOSTCC  scripts/mod/sumversion.o
  HOSTLD  scripts/mod/modpost
  CC      drivers/ata/libata-core.o
drivers/ata/libata-core.c: In function ‘ata_hpa_resize’:
drivers/ata/libata-core.c:1397:3: warning: ‘native_sectors’ may be used uninitialized in this function [-Wmaybe-uninitialized]
Borislav Petkov - Dec. 20, 2012, 3:37 p.m.
On Thu, Dec 20, 2012 at 04:04:23PM +0100, Borislav Petkov wrote:
> On Thu, Dec 20, 2012 at 01:01:59PM +0000, Alan Cox wrote:
> > Net lose IMHO - better to file a gcc bug report
> Ok, I'll try that. Want on CC?

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55759

Patch

diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c
index 9e8b99af400d..3860f6be8c19 100644
--- a/drivers/ata/libata-core.c
+++ b/drivers/ata/libata-core.c
@@ -1324,7 +1324,7 @@  static int ata_hpa_resize(struct ata_device *dev)
 	int print_info = ehc->i.flags & ATA_EHI_PRINTINFO;
 	bool unlock_hpa = ata_ignore_hpa || dev->flags & ATA_DFLAG_UNLOCK_HPA;
 	u64 sectors = ata_id_n_sectors(dev->id);
-	u64 native_sectors;
+	u64 native_sectors = 0;
 	int rc;
 
 	/* do we need to do it? */