Skip to contentSkip to conversation

acpi: Fix warning: 'num_cpus' may be used uninitialized in this function

PATCH In review Jean Sacren 2 participants 5 messages Sep 11, 2010 – Sep 13, 2010 ACPI

lore
Share & tools
lore
#0 lore raw

cover acpi: Fix warning: 'num_cpus' may be used uninitialized in this function

Hi,

Self-explanatory warning message.

Jean Sacren (1):
acpi: Fix warning: 'num_cpus' may be used uninitialized in this
function

 drivers/acpi/acpi_pad.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)
Signature · 2 lines
Jean Sacren
Bring LAMP To People
#1 lore raw

PATCH 1/1 acpi: Fix warning: 'num_cpus' may be used uninitialized in this function

warning: 'num_cpus' may be used uninitialized in this function

Initialize 'num_cpus' variable to zero so that gcc doesn't complain.

---
 drivers/acpi/acpi_pad.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)
drivers/acpi/acpi_pad.c +1 -1
index b76848c..6154f2b 100644
@@ -429,7 +429,7 @@ static void acpi_pad_ost(acpi_handle handle, int stat,
 
 static void acpi_pad_handle_notify(acpi_handle handle)
 {
-	int num_cpus;
+	int num_cpus = 0;
 	uint32_t idle_cpus;
 
 	mutex_lock(&isolated_cpus_lock);
Signature · 1 line
1.7.1
#2 lore raw
Quoted 3 lines · Jean Sacren

warning: 'num_cpus' may be used uninitialized in this function

Initialize 'num_cpus' variable to zero so that gcc doesn't complain.

acpi_pad_pur() is referenced only once, so it should end up inlined, at which point gcc really has no excuse to not determine with perfect confidence whether num_cpus is being used unitialized or not.

Looking at the code, it realy does look like a false positive.

Are you using a recent gcc?

Signature · 4 lines
  "One disk to rule them all, One disk to find them. One disk to bring
  them all and in the darkness grind them. In the Land of Redmond
  where the shadows lie." -- The Silicon Valley Tarot
  Henrique Holschuh
#3 lore raw
Quoted 9 lines · Henrique de Moraes Holschuh
Quoted 3 lines · Jean Sacren

warning: 'num_cpus' may be used uninitialized in this function

Initialize 'num_cpus' variable to zero so that gcc doesn't complain.

acpi_pad_pur() is referenced only once, so it should end up inlined, at which point gcc really has no excuse to not determine with perfect confidence whether num_cpus is being used unitialized or not.

If acpi_pad_pur() is called and returns with non-zero value, acpi_pad_handle_notify() happily returns, but num_cpus is referenced by address without being initialized, so gcc gives the warning.

Quoted 3 lines

Looking at the code, it realy does look like a false positive.

Unfortunately it is _not_ a false positive. Here gcc does what it's supposed to do. Therefore, the patch is correct.

Signature · 2 lines
Jean Sacren
Bring LAMP To People
#4 lore raw
Quoted 10 lines · Jean Sacren
Quoted 9 lines · Henrique de Moraes Holschuh
Quoted 3 lines · Jean Sacren

warning: 'num_cpus' may be used uninitialized in this function

Initialize 'num_cpus' variable to zero so that gcc doesn't complain.

acpi_pad_pur() is referenced only once, so it should end up inlined, at which point gcc really has no excuse to not determine with perfect confidence whether num_cpus is being used unitialized or not.

Quoted 8 lines

If acpi_pad_pur() is called and returns with non-zero value, acpi_pad_handle_notify() happily returns, but num_cpus is referenced by address without being initialized, so gcc gives the warning.

Quoted 3 lines

Looking at the code, it realy does look like a false positive.

Unfortunately it is _not_ a false positive. Here gcc does what it's supposed to do. Therefore, the patch is correct.

It will be a false positive if the variable is NOT used unitialized. Passing a reference does not access the object, and acpi_pad_pur() is not a black box to the optimizer (all static, all in the same file, and it is being inlined even...)

I don't think num_cpus is being used unitialized, so, as far as I can tell, it is a false positive. gcc should not have issued that warning.

I don't object to the patch, btw.

Signature · 4 lines
  "One disk to rule them all, One disk to find them. One disk to bring
  them all and in the darkness grind them. In the Land of Redmond
  where the shadows lie." -- The Silicon Valley Tarot
  Henrique Holschuh