summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorXiao Ni <xni@redhat.com>2018-05-30 07:49:41 +0200
committerJes Sorensen <jsorensen@fb.com>2018-06-01 18:45:10 +0200
commit27e39ad31cbdfe516f9f390cc860a4f681750ef0 (patch)
tree061d446b9e71b468f0f3074c42e2e27b3137a9ab
parentsuper-ddf: Fix gcc-8.1 overflow warnings (diff)
downloadmdadm-27e39ad31cbdfe516f9f390cc860a4f681750ef0.tar.xz
mdadm-27e39ad31cbdfe516f9f390cc860a4f681750ef0.zip
Check major number of block device when querying md device
It give error message when query a non md device. mdadm /dev/null /dev/null: is an md device, but gives "Inappropriate ioctl for device" when queried It's introduced by commit 5cb8599 and 8d0cd09 At first it checks whether a block is md device by function md_get_version. In this function it does mainly two jobs: 1. send request by ioctl. (now it can be replace by argument ioctlerr) 2. check the block device major number which we don't do this. We add the second judgement in this patch. Fixes: 5cb8599 and 8d0cd09 Reported-by: Karsten Weiss <karsten.weiss@atos.net> Signed-off-by: Xiao Ni <xni@redhat.com> Signed-off-by: Jes Sorensen <jsorensen@fb.com>
-rw-r--r--Query.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/Query.c b/Query.c
index 2bd0e2a0..23fbf8aa 100644
--- a/Query.c
+++ b/Query.c
@@ -85,12 +85,11 @@ int Query(char *dev)
if (ioctlerr == ENODEV)
printf("%s: is an md device which is not active\n", dev);
+ else if (ioctlerr && major(stb.st_rdev) != MD_MAJOR)
+ printf("%s: is not an md array\n", 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, human_size_brief(larray_size,IEC),