File tree Expand file tree Collapse file tree 1 file changed +5
-6
lines changed Expand file tree Collapse file tree 1 file changed +5
-6
lines changed Original file line number Diff line number Diff line change @@ -445,6 +445,10 @@ uint32_t *virtio_blk_init(virtio_blk_state_t *vblk,
445
445
/* Get the disk size */
446
446
uint64_t disk_size ;
447
447
if (!strcmp (disk_file_dirname , "/dev" )) { /* from /dev/, leverage ioctl */
448
+ if ((st .st_mode & S_IFMT ) != S_IFBLK ) {
449
+ rv_log_error ("%s is not block device" , disk_file );
450
+ goto fail ;
451
+ }
448
452
#if !defined(__EMSCRIPTEN__ )
449
453
#if defined(__APPLE__ )
450
454
uint32_t block_size ;
@@ -465,12 +469,7 @@ uint32_t *virtio_blk_init(virtio_blk_state_t *vblk,
465
469
}
466
470
#endif
467
471
#endif /* !defined(__EMSCRIPTEN__) */
468
- } else { /* other path, stat it as normal file */
469
- struct stat st ;
470
- if (fstat (disk_fd , & st ) == -1 ) {
471
- rv_log_error ("fstat failed" );
472
- goto disk_size_fail ;
473
- }
472
+ } else { /* other path, get the size of block device via stat buffer */
474
473
disk_size = st .st_size ;
475
474
}
476
475
VBLK_PRIV (vblk )-> disk_size = disk_size ;
You can’t perform that action at this time.
0 commit comments