File tree Expand file tree Collapse file tree 1 file changed +13
-0
lines changed Expand file tree Collapse file tree 1 file changed +13
-0
lines changed Original file line number Diff line number Diff line change @@ -711,6 +711,9 @@ static int nbpf_desc_page_alloc(struct nbpf_channel *chan)
711
711
list_add_tail (& ldesc -> node , & lhead );
712
712
ldesc -> hwdesc_dma_addr = dma_map_single (dchan -> device -> dev ,
713
713
hwdesc , sizeof (* hwdesc ), DMA_TO_DEVICE );
714
+ if (dma_mapping_error (dchan -> device -> dev ,
715
+ ldesc -> hwdesc_dma_addr ))
716
+ goto unmap_error ;
714
717
715
718
dev_dbg (dev , "%s(): mapped 0x%p to %pad\n" , __func__ ,
716
719
hwdesc , & ldesc -> hwdesc_dma_addr );
@@ -737,6 +740,16 @@ static int nbpf_desc_page_alloc(struct nbpf_channel *chan)
737
740
spin_unlock_irq (& chan -> lock );
738
741
739
742
return ARRAY_SIZE (dpage -> desc );
743
+
744
+ unmap_error :
745
+ while (i -- ) {
746
+ ldesc -- ; hwdesc -- ;
747
+
748
+ dma_unmap_single (dchan -> device -> dev , ldesc -> hwdesc_dma_addr ,
749
+ sizeof (hwdesc ), DMA_TO_DEVICE );
750
+ }
751
+
752
+ return - ENOMEM ;
740
753
}
741
754
742
755
static void nbpf_desc_put (struct nbpf_desc * desc )
You can’t perform that action at this time.
0 commit comments