• Stephen Warren's avatar
    net/mlx4: Get rid of page operation after dma_alloc_coherent · f65e192a
    Stephen Warren authored
    This patch solves a crash at the time of mlx4 driver unload or system
    shutdown. The crash occurs because dma_alloc_coherent() returns one
    value in mlx4_alloc_icm_coherent(), but a different value is passed to
    dma_free_coherent() in mlx4_free_icm_coherent(). In turn this is because
    when allocated, that pointer is passed to sg_set_buf() to record it,
    then when freed it is re-calculated by calling
    lowmem_page_address(sg_page()) which returns a different value. Solve
    this by recording the value that dma_alloc_coherent() returns, and
    passing this to dma_free_coherent().
    
    This patch is roughly equivalent to commit 378efe79 ("RDMA/hns: Get
    rid of page operation after dma_alloc_coherent").
    
    Based-on-code-from: Christoph Hellwig <hch@lst.de>
    Signed-off-by: default avatarStephen Warren <swarren@nvidia.com>
    Reviewed-by: default avatarTariq Toukan <tariqt@mellanox.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    f65e192a
icm.h 4.34 KB