summaryrefslogtreecommitdiff
path: root/usr.sbin/bhyveload/bhyveload.c
diff options
context:
space:
mode:
authorDimitry Andric <dim@FreeBSD.org>2017-06-27 06:44:32 +0000
committerDimitry Andric <dim@FreeBSD.org>2017-06-27 06:44:32 +0000
commita3604b95ed1b025e84c6b948b9939cf63fc9f9ce (patch)
tree6998e1bc3c80f5ac90fcd7497da4a1d547a8452e /usr.sbin/bhyveload/bhyveload.c
parentedd7eaddc8e5730ca33436568f6fcb8409984d13 (diff)
parentf21680fd983784341c88dbe1015548f65c79868d (diff)
Notes
Diffstat (limited to 'usr.sbin/bhyveload/bhyveload.c')
-rw-r--r--usr.sbin/bhyveload/bhyveload.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/usr.sbin/bhyveload/bhyveload.c b/usr.sbin/bhyveload/bhyveload.c
index c67a2f698936..55de2eceb0b2 100644
--- a/usr.sbin/bhyveload/bhyveload.c
+++ b/usr.sbin/bhyveload/bhyveload.c
@@ -311,10 +311,12 @@ cb_diskioctl(void *arg, int unit, u_long cmd, void *data)
*(u_int *)data = 512;
break;
case DIOCGMEDIASIZE:
- if (fstat(disk_fd[unit], &sb) == 0)
- *(off_t *)data = sb.st_size;
- else
+ if (fstat(disk_fd[unit], &sb) != 0)
return (ENOTTY);
+ if (S_ISCHR(sb.st_mode) &&
+ ioctl(disk_fd[unit], DIOCGMEDIASIZE, &sb.st_size) != 0)
+ return (ENOTTY);
+ *(off_t *)data = sb.st_size;
break;
default:
return (ENOTTY);