aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/power/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/power/main.c')
-rw-r--r--kernel/power/main.c31
1 files changed, 13 insertions, 18 deletions
diff --git a/kernel/power/main.c b/kernel/power/main.c
index 573410d6647e..9a59d042ea84 100644
--- a/kernel/power/main.c
+++ b/kernel/power/main.c
@@ -296,25 +296,22 @@ static ssize_t state_show(struct kobject *kobj, struct kobj_attribute *attr,
296 suspend_state_t i; 296 suspend_state_t i;
297 297
298 for (i = PM_SUSPEND_MIN; i < PM_SUSPEND_MAX; i++) 298 for (i = PM_SUSPEND_MIN; i < PM_SUSPEND_MAX; i++)
299 if (pm_states[i].state) 299 if (pm_states[i])
300 s += sprintf(s,"%s ", pm_states[i].label); 300 s += sprintf(s,"%s ", pm_states[i]);
301 301
302#endif 302#endif
303#ifdef CONFIG_HIBERNATION 303 if (hibernation_available())
304 s += sprintf(s, "%s\n", "disk"); 304 s += sprintf(s, "disk ");
305#else
306 if (s != buf) 305 if (s != buf)
307 /* convert the last space to a newline */ 306 /* convert the last space to a newline */
308 *(s-1) = '\n'; 307 *(s-1) = '\n';
309#endif
310 return (s - buf); 308 return (s - buf);
311} 309}
312 310
313static suspend_state_t decode_state(const char *buf, size_t n) 311static suspend_state_t decode_state(const char *buf, size_t n)
314{ 312{
315#ifdef CONFIG_SUSPEND 313#ifdef CONFIG_SUSPEND
316 suspend_state_t state = PM_SUSPEND_MIN; 314 suspend_state_t state;
317 struct pm_sleep_state *s;
318#endif 315#endif
319 char *p; 316 char *p;
320 int len; 317 int len;
@@ -327,10 +324,12 @@ static suspend_state_t decode_state(const char *buf, size_t n)
327 return PM_SUSPEND_MAX; 324 return PM_SUSPEND_MAX;
328 325
329#ifdef CONFIG_SUSPEND 326#ifdef CONFIG_SUSPEND
330 for (s = &pm_states[state]; state < PM_SUSPEND_MAX; s++, state++) 327 for (state = PM_SUSPEND_MIN; state < PM_SUSPEND_MAX; state++) {
331 if (s->state && len == strlen(s->label) 328 const char *label = pm_states[state];
332 && !strncmp(buf, s->label, len)) 329
333 return s->state; 330 if (label && len == strlen(label) && !strncmp(buf, label, len))
331 return state;
332 }
334#endif 333#endif
335 334
336 return PM_SUSPEND_ON; 335 return PM_SUSPEND_ON;
@@ -448,8 +447,8 @@ static ssize_t autosleep_show(struct kobject *kobj,
448 447
449#ifdef CONFIG_SUSPEND 448#ifdef CONFIG_SUSPEND
450 if (state < PM_SUSPEND_MAX) 449 if (state < PM_SUSPEND_MAX)
451 return sprintf(buf, "%s\n", pm_states[state].state ? 450 return sprintf(buf, "%s\n", pm_states[state] ?
452 pm_states[state].label : "error"); 451 pm_states[state] : "error");
453#endif 452#endif
454#ifdef CONFIG_HIBERNATION 453#ifdef CONFIG_HIBERNATION
455 return sprintf(buf, "disk\n"); 454 return sprintf(buf, "disk\n");
@@ -617,7 +616,6 @@ static struct attribute_group attr_group = {
617 .attrs = g, 616 .attrs = g,
618}; 617};
619 618
620#ifdef CONFIG_PM_RUNTIME
621struct workqueue_struct *pm_wq; 619struct workqueue_struct *pm_wq;
622EXPORT_SYMBOL_GPL(pm_wq); 620EXPORT_SYMBOL_GPL(pm_wq);
623 621
@@ -627,9 +625,6 @@ static int __init pm_start_workqueue(void)
627 625
628 return pm_wq ? 0 : -ENOMEM; 626 return pm_wq ? 0 : -ENOMEM;
629} 627}
630#else
631static inline int pm_start_workqueue(void) { return 0; }
632#endif
633 628
634static int __init pm_init(void) 629static int __init pm_init(void)
635{ 630{