diff options
| author | Toomas Soome <tsoome@me.com> | 2018-03-24 18:13:39 +0200 |
|---|---|---|
| committer | Dan McDonald <danmcd@joyent.com> | 2018-05-14 13:45:20 -0400 |
| commit | 35f80dcb41f3a97bbb452a00537b4a72e7dc9996 (patch) | |
| tree | 544059a21d795874765894dcb1223f0101da6706 /usr/src/cmd/lofiadm | |
| parent | 3e8bfa75f73c9b5453b9ac29c9febcf211f061be (diff) | |
| download | illumos-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.c | 17 |
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); |
