Commit d1e9b11d authored by Cyrill Gorcunov's avatar Cyrill Gorcunov Committed by Pavel Emelyanov

seize: get_freezer_state -- Relax stack

For historical reason we allocate the complete PATH_MAX
here just to fetch a word of freezer state. Lets relax
the stack pressue and rename @path to @state. Same time
make states @frozen, @freezing, @thawed being static,
we don't export them.
Signed-off-by: 's avatarCyrill Gorcunov <gorcunov@openvz.org>
Acked-by: 's avatarAndrew Vagin <avagin@virtuozzo.com>
Signed-off-by: 's avatarPavel Emelyanov <xemul@parallels.com>
parent b6d9bcd1
...@@ -20,35 +20,39 @@ ...@@ -20,35 +20,39 @@
#define NR_ATTEMPTS 5 #define NR_ATTEMPTS 5
const char frozen[] = "FROZEN"; static const char frozen[] = "FROZEN";
const char freezing[] = "FREEZING"; static const char freezing[] = "FREEZING";
const char thawed[] = "THAWED"; static const char thawed[] = "THAWED";
static const char *get_freezer_state(int fd) static const char *get_freezer_state(int fd)
{ {
char state[32];
int ret; int ret;
char path[PATH_MAX];
BUILD_BUG_ON((sizeof(state) < sizeof(frozen)) ||
(sizeof(state) < sizeof(freezing)) ||
(sizeof(state) < sizeof(thawed)));
lseek(fd, 0, SEEK_SET); lseek(fd, 0, SEEK_SET);
ret = read(fd, path, sizeof(path) - 1); ret = read(fd, state, sizeof(state) - 1);
if (ret <= 0) { if (ret <= 0) {
pr_perror("Unable to get a current state"); pr_perror("Unable to get a current state");
goto err; goto err;
} }
if (path[ret - 1] == '\n') if (state[ret - 1] == '\n')
path[ret - 1] = 0; state[ret - 1] = 0;
else else
path[ret] = 0; state[ret] = 0;
pr_debug("freezer.state=%s\n", path); pr_debug("freezer.state=%s\n", state);
if (strcmp(path, frozen) == 0) if (strcmp(state, frozen) == 0)
return frozen; return frozen;
if (strcmp(path, freezing) == 0) else if (strcmp(state, freezing) == 0)
return freezing; return freezing;
if (strcmp(path, thawed) == 0) else if (strcmp(state, thawed) == 0)
return thawed; return thawed;
pr_err("Unknown freezer state: %s\n", path); pr_err("Unknown freezer state: %s\n", state);
err: err:
return NULL; return NULL;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment