From: Karel Zak Date: Tue, 13 Oct 2009 13:52:59 +0000 (+0000) Subject: libext2fs: handle <=linux-2.6.19 bug in /proc/swaps X-Git-Tag: v1.41.10~26 X-Git-Url: https://git.whamcloud.com/?a=commitdiff_plain;h=5f91561ae7e08d79b6a5feca167259fd7634713f;p=tools%2Fe2fsprogs.git libext2fs: handle <=linux-2.6.19 bug in /proc/swaps Linux <= 2.6.19 contained a bug in the /proc/swaps code where the header would not be displayed (the first line). This issue has been reported by Mike Frysinger for swapon(8). Signed-off-by: Karel Zak Signed-off-by: Theodore Ts'o --- diff --git a/lib/ext2fs/ismounted.c b/lib/ext2fs/ismounted.c index 5682a8b..d28b6ad 100644 --- a/lib/ext2fs/ismounted.c +++ b/lib/ext2fs/ismounted.c @@ -253,8 +253,16 @@ static int is_swap_device(const char *file) if (!(f = fopen("/proc/swaps", "r"))) return 0; /* Skip the first line */ - if (fgets(buf, sizeof(buf), f)) + if (!fgets(buf, sizeof(buf), f)) + goto leave; + if (*buf && strncmp(buf, "Filename\t", 9)) + /* Linux <=2.6.19 contained a bug in the /proc/swaps + * code where the header would not be displayed + */ + goto valid_first_line; + while (fgets(buf, sizeof(buf), f)) { +valid_first_line: if ((cp = strchr(buf, ' ')) != NULL) *cp = 0; if ((cp = strchr(buf, '\t')) != NULL) @@ -272,6 +280,8 @@ static int is_swap_device(const char *file) } #endif /* __GNU__ */ } + +leave: fclose(f); return ret; }