|
@@ -615,6 +615,18 @@ int cpuidle_add_sysfs(struct cpuidle_device *dev)
|
|
|
struct device *cpu_dev = get_cpu_device((unsigned long)dev->cpu);
|
|
|
int error;
|
|
|
|
|
|
+ /*
|
|
|
+ * Return if cpu_device is not setup for this CPU.
|
|
|
+ *
|
|
|
+ * This could happen if the arch did not set up cpu_device
|
|
|
+ * since this CPU is not in cpu_present mask and the
|
|
|
+ * driver did not send a correct CPU mask during registration.
|
|
|
+ * Without this check we would end up passing bogus
|
|
|
+ * value for &cpu_dev->kobj in kobject_init_and_add()
|
|
|
+ */
|
|
|
+ if (!cpu_dev)
|
|
|
+ return -ENODEV;
|
|
|
+
|
|
|
kdev = kzalloc(sizeof(*kdev), GFP_KERNEL);
|
|
|
if (!kdev)
|
|
|
return -ENOMEM;
|