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 <vpernami@codeaurora.org>
This commit is contained in:
Vivek Pernamitta 2020-12-15 16:27:15 +05:30
commit 7e8531e86b

View file

@ -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);