]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
xscore: add dma address check
authorZhu Yanjun <yanjun.zhu@oracle.com>
Mon, 23 Oct 2017 06:50:22 +0000 (02:50 -0400)
committerDhaval Giani <dhaval.giani@oracle.com>
Tue, 7 Nov 2017 05:27:43 +0000 (00:27 -0500)
When "swiotlb buffer is full" error occurs, the DMA allocation
will fail. The data conn and control conn are disconnected. Then
xscore will make error handling. In this error handling, the
unallocated DMA address is unmapped. This will result in the crash.
To avoid crash, the dma address check is added.

Orabug: 27074085

Signed-off-by: Zhu Yanjun <yanjun.zhu@oracle.com>
Reviewed-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Signed-off-by: Dhaval Giani <dhaval.giani@oracle.com>
drivers/infiniband/ulp/xsigo/xscore/xscore_api.c

index 524922010f2d5f088de8071bbdf8648f6c9e200f..1cb4d6593fee5f21eb35d53d20dc78a2f72ebfca 100644 (file)
@@ -1282,7 +1282,8 @@ static void xscore_reclaim_recv_buffers(struct xscore_conn_ctx *ctx)
                                                          desc->sg_mapping[j],
                                                          PAGE_SIZE,
                                                          DMA_FROM_DEVICE);
-                       } else if (desc->skb || desc->vaddr) {
+                       } else if ((desc->skb || desc->vaddr) &&
+                               (desc->sg_mapping[0])) {
                                ib_dma_unmap_single(ca, desc->sg_mapping[0],
                                                    desc->size,
                                                    DMA_FROM_DEVICE);