diff options
author | Karel Zak | 2017-03-30 12:10:01 +0200 |
---|---|---|
committer | Karel Zak | 2017-03-30 12:10:01 +0200 |
commit | 2546d54bd8b0ceac75d6d7e6c483479022d97509 (patch) | |
tree | 4a7813ccc9f9e512c985018a9b5a696193b12953 /sys-utils/zramctl.c | |
parent | agetty: fix typo (diff) | |
download | kernel-qcow2-util-linux-2546d54bd8b0ceac75d6d7e6c483479022d97509.tar.gz kernel-qcow2-util-linux-2546d54bd8b0ceac75d6d7e6c483479022d97509.tar.xz kernel-qcow2-util-linux-2546d54bd8b0ceac75d6d7e6c483479022d97509.zip |
zramctl: make mm_stat parser more robust
Let's fallback to attribute files if mm_stat file is incomplete. It
should not happen, but I have seen RHEL7 kernel where is no
num_migrated/pages_compacted attribute...
Signed-off-by: Karel Zak <kzak@redhat.com>
Diffstat (limited to 'sys-utils/zramctl.c')
-rw-r--r-- | sys-utils/zramctl.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/sys-utils/zramctl.c b/sys-utils/zramctl.c index 29bdb8518..b5fc08edf 100644 --- a/sys-utils/zramctl.c +++ b/sys-utils/zramctl.c @@ -359,8 +359,12 @@ static char *get_mm_stat(struct zram *z, size_t idx, int bytes) str = sysfs_strdup(sysfs, "mm_stat"); if (str) { z->mm_stat = strv_split(str, " "); - if (strv_length(z->mm_stat) < ARRAY_SIZE(mm_stat_names)) - errx(EXIT_FAILURE, _("Failed to parse mm_stat")); + + /* make sure kernel provides mm_stat as expected */ + if (strv_length(z->mm_stat) < ARRAY_SIZE(mm_stat_names)) { + strv_free(z->mm_stat); + z->mm_stat = NULL; + } } z->mm_stat_probed = 1; free(str); |