diff options
Diffstat (limited to 'drivers/cpuidle/sysfs.c')
-rw-r--r-- | drivers/cpuidle/sysfs.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/drivers/cpuidle/sysfs.c b/drivers/cpuidle/sysfs.c index c5adc8c9ac43..ae948b1da93a 100644 --- a/drivers/cpuidle/sysfs.c +++ b/drivers/cpuidle/sysfs.c | |||
@@ -615,6 +615,18 @@ int cpuidle_add_sysfs(struct cpuidle_device *dev) | |||
615 | struct device *cpu_dev = get_cpu_device((unsigned long)dev->cpu); | 615 | struct device *cpu_dev = get_cpu_device((unsigned long)dev->cpu); |
616 | int error; | 616 | int error; |
617 | 617 | ||
618 | /* | ||
619 | * Return if cpu_device is not setup for this CPU. | ||
620 | * | ||
621 | * This could happen if the arch did not set up cpu_device | ||
622 | * since this CPU is not in cpu_present mask and the | ||
623 | * driver did not send a correct CPU mask during registration. | ||
624 | * Without this check we would end up passing bogus | ||
625 | * value for &cpu_dev->kobj in kobject_init_and_add() | ||
626 | */ | ||
627 | if (!cpu_dev) | ||
628 | return -ENODEV; | ||
629 | |||
618 | kdev = kzalloc(sizeof(*kdev), GFP_KERNEL); | 630 | kdev = kzalloc(sizeof(*kdev), GFP_KERNEL); |
619 | if (!kdev) | 631 | if (!kdev) |
620 | return -ENOMEM; | 632 | return -ENOMEM; |