diff options
author | Alexey Dobriyan <adobriyan@gmail.com> | 2019-03-05 18:50:42 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2019-03-06 00:07:22 -0500 |
commit | 332e0e804d64894cf32db363e7f14c64a6ce8061 (patch) | |
tree | 396234b31d22420606065efe3c5d7877ca9bcc44 | |
parent | e483b0208784146864a2c195e316230647e9d297 (diff) |
proc: more robust bulk read test
/proc may not be mounted and test will exit successfully.
Ensure proc is mounted at /proc.
Link: http://lkml.kernel.org/r/20190209105613.GA10384@avx2
Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r-- | tools/testing/selftests/proc/read.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/tools/testing/selftests/proc/read.c b/tools/testing/selftests/proc/read.c index b2bd8da58efe..b3ef9e14d6cc 100644 --- a/tools/testing/selftests/proc/read.c +++ b/tools/testing/selftests/proc/read.c | |||
@@ -26,8 +26,10 @@ | |||
26 | #include <dirent.h> | 26 | #include <dirent.h> |
27 | #include <stdbool.h> | 27 | #include <stdbool.h> |
28 | #include <stdlib.h> | 28 | #include <stdlib.h> |
29 | #include <stdio.h> | ||
29 | #include <string.h> | 30 | #include <string.h> |
30 | #include <sys/stat.h> | 31 | #include <sys/stat.h> |
32 | #include <sys/vfs.h> | ||
31 | #include <fcntl.h> | 33 | #include <fcntl.h> |
32 | #include <unistd.h> | 34 | #include <unistd.h> |
33 | 35 | ||
@@ -123,10 +125,22 @@ static void f(DIR *d, unsigned int level) | |||
123 | int main(void) | 125 | int main(void) |
124 | { | 126 | { |
125 | DIR *d; | 127 | DIR *d; |
128 | struct statfs sfs; | ||
126 | 129 | ||
127 | d = opendir("/proc"); | 130 | d = opendir("/proc"); |
128 | if (!d) | 131 | if (!d) |
129 | return 4; | 132 | return 4; |
133 | |||
134 | /* Ensure /proc is proc. */ | ||
135 | if (fstatfs(dirfd(d), &sfs) == -1) { | ||
136 | return 1; | ||
137 | } | ||
138 | if (sfs.f_type != 0x9fa0) { | ||
139 | fprintf(stderr, "error: unexpected f_type %lx\n", (long)sfs.f_type); | ||
140 | return 2; | ||
141 | } | ||
142 | |||
130 | f(d, 0); | 143 | f(d, 0); |
144 | |||
131 | return 0; | 145 | return 0; |
132 | } | 146 | } |