RE: [PATCH] fix cciss DMA unmap brokenness

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

 



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 <[email protected]>

Acked-by: Mike Miller <[email protected]>

> 
> 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 [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]
  Powered by Linux