diff mbox

acpi: remove unused LIST_HEAD(acpi_device_list) && more static analysis

Message ID CAH5vBdLJqoB7x_r-8USiduK1tYPrfrXzqhtzGmg8U9VdQHEnEg@mail.gmail.com (mailing list archive)
State New, archived
Headers show

Commit Message

Cheng Renquan July 10, 2012, 7 a.m. UTC
I just came across this file and found this LIST_HEAD(acpi_device_list)
was referred in early days before 2.6.11 but not in use nowadays,
^1da177e drivers/acpi/scan.c (Linus Torvalds          2005-04-16
15:20:36 -0700   31) static LIST_HEAD(acpi_device_list);

it is expanded to this line of referring itself form so gcc won't emit
a warning,
static struct list_head acpi_device_list = { &(acpi_device_list),
&(acpi_device_list) };

If change to this line of just declaration then it could really cause
a gcc warning:
+static struct list_head acpi_device_list;
drivers/acpi/scan.c:31:25: warning: ‘acpi_device_list’ defined but not
used [-Wunused-variable]

Now I'm guessing the kernel code may have more such dead variables,
at least we could do a globally search to see there are more LIST_HEAD
declaration without a 2nd reference; but does anyone have done this before
or know any existing tools / such static analysis approaches?

Thanks,

Comments

Cheng Renquan July 10, 2012, 7:40 a.m. UTC | #1
On Tue, Jul 10, 2012 at 12:00 AM, cheng renquan <crquan@gmail.com> wrote:
> $ git diff HEAD -- drivers/acpi/scan.c
> diff --git a/drivers/acpi/scan.c b/drivers/acpi/scan.c
> index 85cbfdc..7d26ae0 100644
> --- a/drivers/acpi/scan.c
> +++ b/drivers/acpi/scan.c
> @@ -28,7 +28,7 @@ extern struct acpi_device *acpi_root;
>
>  static const char *dummy_hid = "device";
>
> -static LIST_HEAD(acpi_device_list);
>  static LIST_HEAD(acpi_bus_id_list);
>  DEFINE_MUTEX(acpi_device_lock);
>  LIST_HEAD(acpi_wakeup_device_list);

fortunately a later step of gcc optimization deleted that variable
so it doesn't consume space in the final vmlinux, only the really in-use
variable like the next acpi_bus_id_list consumed space;

$ eu-readelf -s drivers/acpi/scan.o |egrep '(acpi_device_list|acpi_bus_id_list)'
   35: 00000000000000b0     16 OBJECT  LOCAL  DEFAULT        3 acpi_bus_id_list

$ eu-readelf -s vmlinux |egrep '(acpi_device_list|acpi_bus_id_list)'
24029: ffffffff81a62bc0     16 OBJECT  LOCAL  DEFAULT       15 acpi_bus_id_list


anyway, we'd better to delete the acpi_device_list from the source;
--
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

===

$ git diff HEAD -- drivers/acpi/scan.c
diff --git a/drivers/acpi/scan.c b/drivers/acpi/scan.c
index 85cbfdc..7d26ae0 100644
--- a/drivers/acpi/scan.c
+++ b/drivers/acpi/scan.c
@@ -28,7 +28,7 @@  extern struct acpi_device *acpi_root;

 static const char *dummy_hid = "device";

-static LIST_HEAD(acpi_device_list);
 static LIST_HEAD(acpi_bus_id_list);
 DEFINE_MUTEX(acpi_device_lock);
 LIST_HEAD(acpi_wakeup_device_list);