aboutsummaryrefslogtreecommitdiff
path: root/drivers/acpi/scan.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2008-03-27 08:03:22 -0700
committerLinus Torvalds <torvalds@linux-foundation.org>2008-03-27 08:03:22 -0700
commitc94b4321ebde51a80a805f7a5e102ac083ae2ac9 (patch)
treeac6e0f251436d7e800ba12e783126a6d572b4623 /drivers/acpi/scan.c
parentf6d107fb10def502522b10bfb7af9533afbb8274 (diff)
parent1192aeb957402b45f311895f124e4ca41206843c (diff)
Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6
* 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6: ACPI: drivers/acpi: elide a non-zero test on a result that is never 0 pnpacpi: reduce printk severity for "pnpacpi: exceeded the max number of ..." cpuidle: fix 100% C0 statistics regression cpuidle: fix cpuidle time and usage overflow ACPI: fix mis-merge -- invoke acpi_unlazy_tlb() only on C3 entry ACPI: fix a regression of ACPI device driver autoloading ACPI: SBS: remove typo from sbchc.c
Diffstat (limited to 'drivers/acpi/scan.c')
-rw-r--r--drivers/acpi/scan.c18
1 files changed, 12 insertions, 6 deletions
diff --git a/drivers/acpi/scan.c b/drivers/acpi/scan.c
index 57570ac4780..e6ce262b5d4 100644
--- a/drivers/acpi/scan.c
+++ b/drivers/acpi/scan.c
@@ -39,20 +39,26 @@ static int create_modalias(struct acpi_device *acpi_dev, char *modalias,
int size)
{
int len;
+ int count;
- if (!acpi_dev->flags.hardware_id)
+ if (!acpi_dev->flags.hardware_id && !acpi_dev->flags.compatible_ids)
return -ENODEV;
- len = snprintf(modalias, size, "acpi:%s:",
- acpi_dev->pnp.hardware_id);
- if (len < 0 || len >= size)
- return -EINVAL;
+ len = snprintf(modalias, size, "acpi:");
size -= len;
+ if (acpi_dev->flags.hardware_id) {
+ count = snprintf(&modalias[len], size, "%s:",
+ acpi_dev->pnp.hardware_id);
+ if (count < 0 || count >= size)
+ return -EINVAL;
+ len += count;
+ size -= count;
+ }
+
if (acpi_dev->flags.compatible_ids) {
struct acpi_compatible_id_list *cid_list;
int i;
- int count;
cid_list = acpi_dev->pnp.cid_list;
for (i = 0; i < cid_list->count; i++) {