You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
72 lines
1.7 KiB
72 lines
1.7 KiB
From 8d0cd09d73a9a9d57ee73b7a79114e881dad1507 Mon Sep 17 00:00:00 2001 |
|
From: Jes Sorensen <jsorensen@fb.com> |
|
Date: Thu, 13 Apr 2017 11:53:21 -0400 |
|
Subject: [RHEL7.5 PATCH 079/169] Query: Handle error returned by fstat() |
|
|
|
We shouldn't ignore any error returned by fstat() even if open() didn't |
|
fail. |
|
|
|
Signed-off-by: Jes Sorensen <jsorensen@fb.com> |
|
--- |
|
Query.c | 19 ++++++++++++------- |
|
1 file changed, 12 insertions(+), 7 deletions(-) |
|
|
|
diff --git a/Query.c b/Query.c |
|
index bea273f..0d18da4 100644 |
|
--- a/Query.c |
|
+++ b/Query.c |
|
@@ -32,22 +32,21 @@ int Query(char *dev) |
|
* whether it is an md device and whether it has |
|
* a superblock |
|
*/ |
|
- int fd = open(dev, O_RDONLY); |
|
- int ioctlerr; |
|
+ int fd; |
|
+ int ioctlerr, staterr; |
|
int superror; |
|
struct mdinfo info; |
|
mdu_array_info_t array; |
|
struct supertype *st = NULL; |
|
- |
|
unsigned long long larray_size; |
|
struct stat stb; |
|
char *mddev; |
|
mdu_disk_info_t disc; |
|
char *activity; |
|
|
|
+ fd = open(dev, O_RDONLY); |
|
if (fd < 0){ |
|
- pr_err("cannot open %s: %s\n", |
|
- dev, strerror(errno)); |
|
+ pr_err("cannot open %s: %s\n", dev, strerror(errno)); |
|
return 1; |
|
} |
|
|
|
@@ -56,9 +55,12 @@ int Query(char *dev) |
|
else |
|
ioctlerr = 0; |
|
|
|
- fstat(fd, &stb); |
|
+ if (fstat(fd, &stb) < 0) |
|
+ staterr = errno; |
|
+ else |
|
+ staterr = 0; |
|
|
|
- if (!ioctlerr) { |
|
+ if (!ioctlerr && !staterr) { |
|
if (!get_dev_size(fd, NULL, &larray_size)) |
|
larray_size = 0; |
|
} |
|
@@ -68,6 +70,9 @@ int Query(char *dev) |
|
else if (ioctlerr) |
|
printf("%s: is an md device, but gives \"%s\" when queried\n", |
|
dev, strerror(ioctlerr)); |
|
+ else if (staterr) |
|
+ printf("%s: is not a valid md device, returning %s\n", |
|
+ dev, strerror(ioctlerr)); |
|
else { |
|
printf("%s: %s %s %d devices, %d spare%s. Use mdadm --detail for more detail.\n", |
|
dev, |
|
-- |
|
2.7.4 |
|
|
|
|