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 | } |
