@@ -711,11 +711,9 @@ static int dmatest_func(void *data)
711
711
srcs [i ] = um -> addr [i ] + src_off ;
712
712
ret = dma_mapping_error (dev -> dev , um -> addr [i ]);
713
713
if (ret ) {
714
- dmaengine_unmap_put (um );
715
714
result ("src mapping error" , total_tests ,
716
715
src_off , dst_off , len , ret );
717
- failed_tests ++ ;
718
- continue ;
716
+ goto error_unmap_continue ;
719
717
}
720
718
um -> to_cnt ++ ;
721
719
}
@@ -730,11 +728,9 @@ static int dmatest_func(void *data)
730
728
DMA_BIDIRECTIONAL );
731
729
ret = dma_mapping_error (dev -> dev , dsts [i ]);
732
730
if (ret ) {
733
- dmaengine_unmap_put (um );
734
731
result ("dst mapping error" , total_tests ,
735
732
src_off , dst_off , len , ret );
736
- failed_tests ++ ;
737
- continue ;
733
+ goto error_unmap_continue ;
738
734
}
739
735
um -> bidi_cnt ++ ;
740
736
}
@@ -762,12 +758,10 @@ static int dmatest_func(void *data)
762
758
}
763
759
764
760
if (!tx ) {
765
- dmaengine_unmap_put (um );
766
761
result ("prep error" , total_tests , src_off ,
767
762
dst_off , len , ret );
768
763
msleep (100 );
769
- failed_tests ++ ;
770
- continue ;
764
+ goto error_unmap_continue ;
771
765
}
772
766
773
767
done -> done = false;
@@ -776,12 +770,10 @@ static int dmatest_func(void *data)
776
770
cookie = tx -> tx_submit (tx );
777
771
778
772
if (dma_submit_error (cookie )) {
779
- dmaengine_unmap_put (um );
780
773
result ("submit error" , total_tests , src_off ,
781
774
dst_off , len , ret );
782
775
msleep (100 );
783
- failed_tests ++ ;
784
- continue ;
776
+ goto error_unmap_continue ;
785
777
}
786
778
dma_async_issue_pending (chan );
787
779
@@ -790,22 +782,20 @@ static int dmatest_func(void *data)
790
782
791
783
status = dma_async_is_tx_complete (chan , cookie , NULL , NULL );
792
784
793
- dmaengine_unmap_put (um );
794
-
795
785
if (!done -> done ) {
796
786
result ("test timed out" , total_tests , src_off , dst_off ,
797
787
len , 0 );
798
- failed_tests ++ ;
799
- continue ;
788
+ goto error_unmap_continue ;
800
789
} else if (status != DMA_COMPLETE ) {
801
790
result (status == DMA_ERROR ?
802
791
"completion error status" :
803
792
"completion busy status" , total_tests , src_off ,
804
793
dst_off , len , ret );
805
- failed_tests ++ ;
806
- continue ;
794
+ goto error_unmap_continue ;
807
795
}
808
796
797
+ dmaengine_unmap_put (um );
798
+
809
799
if (params -> noverify ) {
810
800
verbose_result ("test passed" , total_tests , src_off ,
811
801
dst_off , len , 0 );
@@ -846,6 +836,12 @@ static int dmatest_func(void *data)
846
836
verbose_result ("test passed" , total_tests , src_off ,
847
837
dst_off , len , 0 );
848
838
}
839
+
840
+ continue ;
841
+
842
+ error_unmap_continue :
843
+ dmaengine_unmap_put (um );
844
+ failed_tests ++ ;
849
845
}
850
846
ktime = ktime_sub (ktime_get (), ktime );
851
847
ktime = ktime_sub (ktime , comparetime );
0 commit comments