lkml.org 
[lkml]   [2018]   [May]   [28]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 3.18 008/185] xen-swiotlb: fix the check condition for xen_swiotlb_free_coherent
    Date
    3.18-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Joe Jin <joe.jin@oracle.com>

    commit 4855c92dbb7b3b85c23e88ab7ca04f99b9677b41 upstream.

    When run raidconfig from Dom0 we found that the Xen DMA heap is reduced,
    but Dom Heap is increased by the same size. Tracing raidconfig we found
    that the related ioctl() in megaraid_sas will call dma_alloc_coherent()
    to apply memory. If the memory allocated by Dom0 is not in the DMA area,
    it will exchange memory with Xen to meet the requiment. Later drivers
    call dma_free_coherent() to free the memory, on xen_swiotlb_free_coherent()
    the check condition (dev_addr + size - 1 <= dma_mask) is always false,
    it prevents calling xen_destroy_contiguous_region() to return the memory
    to the Xen DMA heap.

    This issue introduced by commit 6810df88dcfc2 "xen-swiotlb: When doing
    coherent alloc/dealloc check before swizzling the MFNs.".

    Signed-off-by: Joe Jin <joe.jin@oracle.com>
    Tested-by: John Sobecki <john.sobecki@oracle.com>
    Reviewed-by: Rzeszutek Wilk <konrad.wilk@oracle.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    drivers/xen/swiotlb-xen.c | 2 +-
    1 file changed, 1 insertion(+), 1 deletion(-)

    --- a/drivers/xen/swiotlb-xen.c
    +++ b/drivers/xen/swiotlb-xen.c
    @@ -366,7 +366,7 @@ xen_swiotlb_free_coherent(struct device
    * physical address */
    phys = xen_bus_to_phys(dev_addr);

    - if (((dev_addr + size - 1 > dma_mask)) ||
    + if (((dev_addr + size - 1 <= dma_mask)) ||
    range_straddles_page_boundary(phys, size))
    xen_destroy_contiguous_region(phys, order);


    \
     
     \ /
      Last update: 2018-05-28 18:46    [W:2.326 / U:0.172 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site