summaryrefslogtreecommitdiffstats
path: root/sys-utils/zramctl.c
diff options
context:
space:
mode:
authorKarel Zak2017-03-30 12:10:01 +0200
committerKarel Zak2017-03-30 12:10:01 +0200
commit2546d54bd8b0ceac75d6d7e6c483479022d97509 (patch)
tree4a7813ccc9f9e512c985018a9b5a696193b12953 /sys-utils/zramctl.c
parentagetty: fix typo (diff)
downloadkernel-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.c8
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);