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