@ -308,6 +308,7 @@ static int execute(void)
} system_info ;
} system_info ;
efi_uintn_t buf_size ;
efi_uintn_t buf_size ;
char buf [ 16 ] __aligned ( ARCH_DMA_MINALIGN ) ;
char buf [ 16 ] __aligned ( ARCH_DMA_MINALIGN ) ;
u64 pos ;
/* Connect controller to virtual disk */
/* Connect controller to virtual disk */
ret = boottime - > connect_controller ( disk_handle , NULL , NULL , 1 ) ;
ret = boottime - > connect_controller ( disk_handle , NULL , NULL , 1 ) ;
@ -392,21 +393,36 @@ static int execute(void)
efi_st_error ( " Failed to open file \n " ) ;
efi_st_error ( " Failed to open file \n " ) ;
return EFI_ST_FAILURE ;
return EFI_ST_FAILURE ;
}
}
ret = file - > setpos ( file , 1 ) ;
if ( ret ! = EFI_SUCCESS ) {
efi_st_error ( " SetPosition failed \n " ) ;
return EFI_ST_FAILURE ;
}
buf_size = sizeof ( buf ) - 1 ;
buf_size = sizeof ( buf ) - 1 ;
ret = file - > read ( file , & buf_size , buf ) ;
ret = file - > read ( file , & buf_size , buf ) ;
if ( ret ! = EFI_SUCCESS ) {
if ( ret ! = EFI_SUCCESS ) {
efi_st_error ( " Failed to read file \n " ) ;
efi_st_error ( " Failed to read file \n " ) ;
return EFI_ST_FAILURE ;
return EFI_ST_FAILURE ;
}
}
if ( buf_size ! = 13 ) {
if ( buf_size ! = 12 ) {
efi_st_error ( " Wrong number of bytes read: %u \n " ,
efi_st_error ( " Wrong number of bytes read: %u \n " ,
( unsigned int ) buf_size ) ;
( unsigned int ) buf_size ) ;
return EFI_ST_FAILURE ;
return EFI_ST_FAILURE ;
}
}
if ( efi_st_memcmp ( buf , " H ello world!" , 12 ) ) {
if ( efi_st_memcmp ( buf , " ello world! " , 11 ) ) {
efi_st_error ( " Unexpected file content \n " ) ;
efi_st_error ( " Unexpected file content \n " ) ;
return EFI_ST_FAILURE ;
return EFI_ST_FAILURE ;
}
}
ret = file - > getpos ( file , & pos ) ;
if ( ret ! = EFI_SUCCESS ) {
efi_st_error ( " GetPosition failed \n " ) ;
return EFI_ST_FAILURE ;
}
if ( pos ! = 13 ) {
efi_st_error ( " GetPosition returned %u, expected 13 \n " ,
( unsigned int ) pos ) ;
return EFI_ST_FAILURE ;
}
ret = file - > close ( file ) ;
ret = file - > close ( file ) ;
if ( ret ! = EFI_SUCCESS ) {
if ( ret ! = EFI_SUCCESS ) {
efi_st_error ( " Failed to close file \n " ) ;
efi_st_error ( " Failed to close file \n " ) ;
@ -434,6 +450,16 @@ static int execute(void)
efi_st_error ( " Failed to close file \n " ) ;
efi_st_error ( " Failed to close file \n " ) ;
return EFI_ST_FAILURE ;
return EFI_ST_FAILURE ;
}
}
ret = file - > getpos ( file , & pos ) ;
if ( ret ! = EFI_SUCCESS ) {
efi_st_error ( " GetPosition failed \n " ) ;
return EFI_ST_FAILURE ;
}
if ( pos ! = 7 ) {
efi_st_error ( " GetPosition returned %u, expected 7 \n " ,
( unsigned int ) pos ) ;
return EFI_ST_FAILURE ;
}
/* Verify file */
/* Verify file */
boottime - > set_mem ( buf , sizeof ( buf ) , 0 ) ;
boottime - > set_mem ( buf , sizeof ( buf ) , 0 ) ;