msm: pcie: Adding check before accessing src_virt_addr

The Pointer 'src_vir_addr' is returned from call to function 'ioremap'.
'src_vir_addr' may be NULL & can be passed to 'get_random_bytes' api
causing NULL pointer dereference issue. Hence, adding a check before
accessing the 'src_vir_addr'.

Change-Id: I9911f2f5f52a1bd53f6e53271ca740584538f3a1
Signed-off-by: Naga Rashmi Ayiluri <quic_nayiluri@quicinc.com>
This commit is contained in:
Naga Rashmi Ayiluri 2023-03-01 16:44:47 +05:30 committed by Prudhvi Yarlagadda
parent eb85447897
commit 49db5e565e

View File

@ -1714,7 +1714,7 @@ static void msm_pcie_loopback(struct msm_pcie_dev_t *dev, bool local)
/* PCIe DBI base + 8MB as initial PCIe address to be translated to target address */
phys_addr_t loopback_lbar_phy =
dev->res[MSM_PCIE_RES_DM_CORE].resource->start + SZ_8M;
u8 *src_vir_addr = (u8 *) ioremap(loopback_lbar_phy, SZ_4K);
u8 *src_vir_addr;
void __iomem *iatu_base_vir;
u32 dbi_base_addr = dev->res[MSM_PCIE_RES_DM_CORE].resource->start;
u32 iatu_base_phy, iatu_ctrl1_offset, iatu_ctrl2_offset, iatu_lbar_offset, iatu_ubar_offset,
@ -1728,6 +1728,12 @@ static void msm_pcie_loopback(struct msm_pcie_dev_t *dev, bool local)
bool loopback_test_fail = false;
int i = 0;
src_vir_addr = (u8 *)ioremap(loopback_lbar_phy, SZ_4K);
if (!src_vir_addr) {
PCIE_ERR(dev, "PCIe: RC%d: ioremap fails for loopback_lbar_phy\n", dev->rc_idx);
return;
}
/*
* Use platform dev to get buffer. Doing so will
* require change in PCIe platform devicetree to have SMMU/IOMMU tied to