From 7e8531e86b27e3c2d42ad196d02b77e10fb33177 Mon Sep 17 00:00:00 2001 From: Vivek Pernamitta Date: Tue, 15 Dec 2020 16:27:15 +0530 Subject: [PATCH] msm: pci: use local pointer for rpmsg_device while sending rpmsg Use local pointer for struct rpdev_device while sending rpmsg to avoid crash if ADSP SSR triggered while handling msm_pcie_drv_send_rpmsg(). Change-Id: Id0533611b629359142e54db428918cbce702ee44 Signed-off-by: Vivek Pernamitta --- drivers/pci/controller/pci-msm.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/pci/controller/pci-msm.c b/drivers/pci/controller/pci-msm.c index 674ade11c1f8..e1be078cd79d 100644 --- a/drivers/pci/controller/pci-msm.c +++ b/drivers/pci/controller/pci-msm.c @@ -6675,8 +6675,10 @@ static int msm_pcie_drv_send_rpmsg(struct msm_pcie_dev_t *pcie_dev, { struct msm_pcie_drv_info *drv_info = pcie_dev->drv_info; int ret; + struct rpmsg_device *rpdev; mutex_lock(&pcie_drv.rpmsg_lock); + rpdev = pcie_drv.rpdev; if (!pcie_drv.rpdev) { mutex_unlock(&pcie_drv.rpmsg_lock); return -EIO; @@ -6693,7 +6695,7 @@ static int msm_pcie_drv_send_rpmsg(struct msm_pcie_dev_t *pcie_dev, PCIE_DBG(pcie_dev, "PCIe: RC%d: DRV: sending rpmsg: command: 0x%x\n", pcie_dev->rc_idx, msg->pkt.dword[0]); - ret = rpmsg_trysend(pcie_drv.rpdev->ept, msg, sizeof(*msg)); + ret = rpmsg_trysend(rpdev->ept, msg, sizeof(*msg)); if (ret) { PCIE_ERR(pcie_dev, "PCIe: RC%d: DRV: failed to send rpmsg\n", pcie_dev->rc_idx);