@@ -748,7 +748,6 @@ static bool qemu_vfio_water_mark_reached(QEMUVFIOState *s, size_t size,
748
748
int qemu_vfio_dma_map (QEMUVFIOState * s , void * host , size_t size ,
749
749
bool temporary , uint64_t * iova , Error * * errp )
750
750
{
751
- int ret = 0 ;
752
751
int index ;
753
752
IOVAMapping * mapping ;
754
753
uint64_t iova0 ;
@@ -761,41 +760,39 @@ int qemu_vfio_dma_map(QEMUVFIOState *s, void *host, size_t size,
761
760
if (mapping ) {
762
761
iova0 = mapping -> iova + ((uint8_t * )host - (uint8_t * )mapping -> host );
763
762
} else {
763
+ int ret ;
764
+
764
765
if (qemu_vfio_water_mark_reached (s , size , errp )) {
765
- ret = - ENOMEM ;
766
- goto out ;
766
+ return - ENOMEM ;
767
767
}
768
768
if (!temporary ) {
769
769
if (!qemu_vfio_find_fixed_iova (s , size , & iova0 , errp )) {
770
- ret = - ENOMEM ;
771
- goto out ;
770
+ return - ENOMEM ;
772
771
}
773
772
774
773
mapping = qemu_vfio_add_mapping (s , host , size , index + 1 , iova0 );
775
774
assert (qemu_vfio_verify_mappings (s ));
776
775
ret = qemu_vfio_do_mapping (s , host , size , iova0 );
777
- if (ret ) {
776
+ if (ret < 0 ) {
778
777
qemu_vfio_undo_mapping (s , mapping , NULL );
779
- goto out ;
778
+ return ret ;
780
779
}
781
780
qemu_vfio_dump_mappings (s );
782
781
} else {
783
782
if (!qemu_vfio_find_temp_iova (s , size , & iova0 , errp )) {
784
- ret = - ENOMEM ;
785
- goto out ;
783
+ return - ENOMEM ;
786
784
}
787
785
ret = qemu_vfio_do_mapping (s , host , size , iova0 );
788
- if (ret ) {
789
- goto out ;
786
+ if (ret < 0 ) {
787
+ return ret ;
790
788
}
791
789
}
792
790
}
793
791
trace_qemu_vfio_dma_mapped (s , host , iova0 , size );
794
792
if (iova ) {
795
793
* iova = iova0 ;
796
794
}
797
- out :
798
- return ret ;
795
+ return 0 ;
799
796
}
800
797
801
798
/* Reset the high watermark and free all "temporary" mappings. */
0 commit comments