Google luky.org euqset.org

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: [PATCH] fix cciss DMA unmap brokenness


Alex wrote:
> 
>    The CCISS driver seems to loose track of DMA mappings 
> created by it's
> fill_cmd() routine.  Neither callers of this routine are 
> extracting the DMA address created in order to do the unmap.  
> Instead, they simply try to unmap 0x0.  It's easy to see this 
> problem on an x86_64 system when using the "swiotlb=force" 
> boot option.  In this case, the driver is leaking resources 
> of the swiotlb and not causing a sync of the bounce buffer.  Thanks
> 
> Signed-off-by: Alex Williamson <alex.williamson@xxxxxx>

Acked-by: Mike Miller <mike.miller@xxxxxx>

> 
> diff -r b9c8e9fdd6b2 drivers/block/cciss.c
> --- a/drivers/block/cciss.c	Wed Aug 17 04:06:25 2005
> +++ b/drivers/block/cciss.c	Wed Aug 17 12:53:40 2005
> @@ -1420,8 +1420,10 @@
>  		}
>  	}	
>  	/* unlock the buffers from DMA */
> +	buff_dma_handle.val32.lower = c->SG[0].Addr.lower;
> +	buff_dma_handle.val32.upper = c->SG[0].Addr.upper;
>  	pci_unmap_single( h->pdev, (dma_addr_t) buff_dma_handle.val,
> -			size, PCI_DMA_BIDIRECTIONAL);
> +			c->SG[0].Len, PCI_DMA_BIDIRECTIONAL);
>  	cmd_free(h, c, 0);
>          return(return_status);
>  
> @@ -1860,8 +1862,10 @@
>  		
>  cleanup1:	
>  	/* unlock the data buffer from DMA */
> +	buff_dma_handle.val32.lower = c->SG[0].Addr.lower;
> +	buff_dma_handle.val32.upper = c->SG[0].Addr.upper;
>  	pci_unmap_single(info_p->pdev, (dma_addr_t) buff_dma_handle.val,
> -				size, PCI_DMA_BIDIRECTIONAL);
> +				c->SG[0].Len, PCI_DMA_BIDIRECTIONAL);
>  	cmd_free(info_p, c, 1);
>  	return (status);
>  } 
> 
> 
> 
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


$B$3$N>pJs$,$"$J$?$NC5$7$F$$?$b$N$+$I$&$+A*Br$7$F$/$@$5$!#(B
yes/$B$^$5$K$3$l$@!*(B   no/$B0c$&$J$!(B   part/$B0lIt8+$D$+$C$?(B   try/$B$3$l$G;n$7$F$_$k(B

$B$"$J$?$,C5$7$F$$?>pJs$O$I$N$h$&$J$3$H$+!"$4<+M3$K5-F~2<$5$!#FC$K!V$^$5$K$3$l$@!*!W$H8@$&>l9g$O5-F~$r$*4j$$7$^$9!#(B
$BNc(B:$B!VJ#?t$N%^%7%s$+$i(BCATV$B7PM3$G(Bipmasquerade$B$rMxMQ$7$F(BWeb$B$r;2>H$7$?$>l9g$N@_Dj$K$D$$F!W(B