Blame SOURCES/0023-Check-major-number-of-block-device-when-querying-md-.patch

59ea72
From 27e39ad31cbdfe516f9f390cc860a4f681750ef0 Mon Sep 17 00:00:00 2001
59ea72
From: Xiao Ni <xni@redhat.com>
59ea72
Date: Wed, 30 May 2018 13:49:41 +0800
59ea72
Subject: [RHEL7.5 PATCH 23/26] Check major number of block device when
59ea72
 querying md device
59ea72
59ea72
It give error message when query a non md device.
59ea72
mdadm /dev/null
59ea72
/dev/null: is an md device, but gives "Inappropriate ioctl for device" when queried
59ea72
59ea72
It's introduced by commit 5cb8599 and 8d0cd09
59ea72
At first it checks whether a block is md device by function md_get_version.
59ea72
In this function it does mainly two jobs:
59ea72
1. send request by ioctl. (now it can be replace by argument ioctlerr)
59ea72
2. check the block device major number which we don't do this.
59ea72
59ea72
We add the second judgement in this patch.
59ea72
59ea72
Fixes: 5cb8599 and 8d0cd09
59ea72
Reported-by: Karsten Weiss <karsten.weiss@atos.net>
59ea72
Signed-off-by: Xiao Ni <xni@redhat.com>
59ea72
Signed-off-by: Jes Sorensen <jsorensen@fb.com>
59ea72
---
59ea72
 Query.c | 5 ++---
59ea72
 1 file changed, 2 insertions(+), 3 deletions(-)
59ea72
59ea72
diff --git a/Query.c b/Query.c
59ea72
index 2bd0e2a..23fbf8a 100644
59ea72
--- a/Query.c
59ea72
+++ b/Query.c
59ea72
@@ -85,12 +85,11 @@ int Query(char *dev)
59ea72
 
59ea72
 	if (ioctlerr == ENODEV)
59ea72
 		printf("%s: is an md device which is not active\n", dev);
59ea72
+	else if (ioctlerr && major(stb.st_rdev) != MD_MAJOR)
59ea72
+		printf("%s: is not an md array\n", dev);
59ea72
 	else if (ioctlerr)
59ea72
 		printf("%s: is an md device, but gives \"%s\" when queried\n",
59ea72
 		       dev, strerror(ioctlerr));
59ea72
-	else if (staterr)
59ea72
-		printf("%s: is not a valid md device, returning %s\n",
59ea72
-		       dev, strerror(ioctlerr));
59ea72
 	else {
59ea72
 		printf("%s: %s %s %d devices, %d spare%s. Use mdadm --detail for more detail.\n",
59ea72
 		       dev, human_size_brief(larray_size,IEC),
59ea72
-- 
59ea72
2.7.4
59ea72