summaryrefslogtreecommitdiff
path: root/usr/src/cmd/lofiadm
diff options
context:
space:
mode:
authorToomas Soome <tsoome@me.com>2018-03-24 18:13:39 +0200
committerDan McDonald <danmcd@joyent.com>2018-05-14 13:45:20 -0400
commit35f80dcb41f3a97bbb452a00537b4a72e7dc9996 (patch)
tree544059a21d795874765894dcb1223f0101da6706 /usr/src/cmd/lofiadm
parent3e8bfa75f73c9b5453b9ac29c9febcf211f061be (diff)
downloadillumos-joyent-35f80dcb41f3a97bbb452a00537b4a72e7dc9996.tar.gz
7941 cannot use crypto lofi on a block/character device
Reviewed by: Andy Fiddaman <omnios@citrus-it.co.uk> Approved by: Dan McDonald <danmcd@joyent.com>
Diffstat (limited to 'usr/src/cmd/lofiadm')
-rw-r--r--usr/src/cmd/lofiadm/main.c17
1 files changed, 16 insertions, 1 deletions
diff --git a/usr/src/cmd/lofiadm/main.c b/usr/src/cmd/lofiadm/main.c
index 5c95f69b8c..4a4ee348c0 100644
--- a/usr/src/cmd/lofiadm/main.c
+++ b/usr/src/cmd/lofiadm/main.c
@@ -40,6 +40,7 @@
#include <sys/lofi.h>
#include <sys/stat.h>
#include <sys/sysmacros.h>
+#include <sys/modctl.h>
#include <netinet/in.h>
#include <stdio.h>
#include <fcntl.h>
@@ -302,8 +303,22 @@ name_to_minor(const char *devicename)
return (0);
}
+ /*
+ * For disk devices we use modctl(MODGETNAME) to read driver name
+ * for major device.
+ */
if (st.st_mode & S_IFCHR || st.st_mode & S_IFBLK) {
- return (LOFI_MINOR2ID(minor(st.st_rdev)));
+ major_t maj;
+ char mname[MODMAXNAMELEN];
+
+ maj = major(st.st_rdev);
+
+ if (modctl(MODGETNAME, mname, MODMAXNAMELEN, &maj) == 0) {
+ if (strncmp(mname, LOFI_DRIVER_NAME,
+ sizeof (LOFI_DRIVER_NAME)) == 0) {
+ return (LOFI_MINOR2ID(minor(st.st_rdev)));
+ }
+ }
}
return (0);