diff --git a/kernel/power/main.c b/kernel/power/main.c
index ee371f50ccaae6fc183f988ff92215df87a03064..a6d9ef46009ebdcb37f5b8fc4287d81f02dd089a 100644
--- a/kernel/power/main.c
+++ b/kernel/power/main.c
@@ -272,7 +272,7 @@ static ssize_t state_store(struct subsystem * subsys, const char * buf, size_t n
 		if (*s && !strncmp(buf, *s, len))
 			break;
 	}
-	if (*s)
+	if (state < PM_SUSPEND_MAX && *s)
 		error = enter_state(state);
 	else
 		error = -EINVAL;