Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

PCI: dwc: Fix setting error return on MSI DMA mapping failure

When dma_mapping_error() returns error because of no enough memory,
but dw_pcie_host_init() returns success, which will mislead the callers.

Link: https://lore.kernel.org/r/30170911-0e2f-98ce-9266-70465b9073e5@huawei.com
Fixes: 07940c369a6b ("PCI: dwc: Fix MSI page leakage in suspend/resume")
Signed-off-by: Jianrong Zhang <zhangjianrong5@huawei.com>
Signed-off-by: Jiantao Zhang <water.zhangjiantao@huawei.com>
Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Reviewed-by: Rob Herring <robh@kernel.org>

authored by

Jiantao Zhang and committed by
Lorenzo Pieralisi
88557685 31231092

+2 -1
+2 -1
drivers/pci/controller/dwc/pcie-designware-host.c
··· 396 396 sizeof(pp->msi_msg), 397 397 DMA_FROM_DEVICE, 398 398 DMA_ATTR_SKIP_CPU_SYNC); 399 - if (dma_mapping_error(pci->dev, pp->msi_data)) { 399 + ret = dma_mapping_error(pci->dev, pp->msi_data); 400 + if (ret) { 400 401 dev_err(pci->dev, "Failed to map MSI data\n"); 401 402 pp->msi_data = 0; 402 403 goto err_free_msi;