Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7e8531e8 authored by Vivek Pernamitta's avatar Vivek Pernamitta
Browse files

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: default avatarVivek Pernamitta <vpernami@codeaurora.org>
parent f4e98f0c
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -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);