From 7c54a1801d33eaec463372c8115feacec546508b Mon Sep 17 00:00:00 2001 From: Xiaoyu Ye Date: Thu, 22 Mar 2018 11:55:06 -0700 Subject: [PATCH] ipc: wcd-dsp-glink: prevent potential NULL pointer dereference The current logic that checks pointer "rpdev" for NULL is not correct. Fix it to prevent potential NULL pointer dereference. Change-Id: Ieaad98396ff43b66b0dd41efbfbf9f6ae923a2bb Signed-off-by: Xiaoyu Ye --- ipc/wcd-dsp-glink.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/ipc/wcd-dsp-glink.c b/ipc/wcd-dsp-glink.c index 8e1d8a2757..21da65aae0 100644 --- a/ipc/wcd-dsp-glink.c +++ b/ipc/wcd-dsp-glink.c @@ -266,7 +266,7 @@ static void wdsp_tx_buf_work(struct work_struct *work) spin_lock(&ch->ch_lock); rpdev = ch->handle; - if (rpdev || ch->ch_state == WDSP_CH_CONNECTED) { + if (rpdev && ch->ch_state == WDSP_CH_CONNECTED) { spin_unlock(&ch->ch_lock); ret = rpmsg_send(rpdev->ept, cpkt->payload, cpkt->payload_size); @@ -275,8 +275,11 @@ static void wdsp_tx_buf_work(struct work_struct *work) __func__, ret); } else { spin_unlock(&ch->ch_lock); - dev_err(wpriv->dev, "%s: channel %s is not in connected state\n", - __func__, ch->ch_name); + if (rpdev) + dev_err(wpriv->dev, "%s: channel %s is not in connected state\n", + __func__, ch->ch_name); + else + dev_err(wpriv->dev, "%s: rpdev is NULL\n", __func__); } vfree(tx_buf); }