X-Git-Url: http://git.samba.org/samba.git/?p=sfrench%2Fcifs-2.6.git;a=blobdiff_plain;f=drivers%2Facpi%2Fasus_acpi.c;h=90eb3c5a15cae8eae0d0d0acd296a39a838844ca;hp=1a545489e8597b13890a407f923141cc98b1917e;hb=69cd291c6bbc6647fe3783257c5a2e076e808f71;hpb=35a5d9ed9fedb74c22cb19ff7d749289473144e0 diff --git a/drivers/acpi/asus_acpi.c b/drivers/acpi/asus_acpi.c index 1a545489e859..90eb3c5a15ca 100644 --- a/drivers/acpi/asus_acpi.c +++ b/drivers/acpi/asus_acpi.c @@ -1119,6 +1119,8 @@ static int asus_hotk_check(void) return result; } +static int asus_hotk_found; + static int asus_hotk_add(struct acpi_device *device) { acpi_status status = AE_OK; @@ -1180,6 +1182,8 @@ static int asus_hotk_add(struct acpi_device *device) } } + asus_hotk_found = 1; + end: if (result) { kfree(hotk); @@ -1226,7 +1230,19 @@ static int __init asus_acpi_init(void) asus_proc_dir->owner = THIS_MODULE; result = acpi_bus_register_driver(&asus_hotk_driver); - if (result < 1) { + if (result < 0) { + remove_proc_entry(PROC_ASUS, acpi_root_dir); + return -ENODEV; + } + + /* + * This is a bit of a kludge. We only want this module loaded + * for ASUS systems, but there's currently no way to probe the + * ACPI namespace for ASUS HIDs. So we just return failure if + * we didn't find one, which will cause the module to be + * unloaded. + */ + if (!asus_hotk_found) { acpi_bus_unregister_driver(&asus_hotk_driver); remove_proc_entry(PROC_ASUS, acpi_root_dir); return -ENODEV;