From: Stephen Warren <swarren@xxxxxxxxxxxxx> Date: Thu, 3 Jan 2019 10:23:23 -0700 > From: Stephen Warren <swarren@xxxxxxxxxx> > > 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 378efe798ecf ("RDMA/hns: Get > rid of page operation after dma_alloc_coherent"). > > Based-on-code-from: Christoph Hellwig <hch@xxxxxx> > Signed-off-by: Stephen Warren <swarren@xxxxxxxxxx> Applied.