From 7f27ac3bbfc8d82e9456281764dbbf375a1fa5b1 Mon Sep 17 00:00:00 2001 From: "Rajanikanth H.V" Date: Thu, 15 Sep 2011 15:36:50 +0530 Subject: mbox: fix mbox crash added the missing mutex lock Change-Id: Ieab65c85408b783f029e04155be32fdc2299fa7e Signed-off-by: Rajanikanth H.V --- drivers/misc/mbox_channels-db5500.c | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/drivers/misc/mbox_channels-db5500.c b/drivers/misc/mbox_channels-db5500.c index 6bd4afa5fe2..a0b72d4d97a 100644 --- a/drivers/misc/mbox_channels-db5500.c +++ b/drivers/misc/mbox_channels-db5500.c @@ -282,7 +282,6 @@ static int send_pdu(struct channel_status *chan_status, int command, struct mbox *mbox; u32 header = 0; int ret = 0; - /* SEND PDU is not supported */ if (command == MBOX_SEND) { dev_err(&channels.pdev->dev, "SEND command not implemented\n"); @@ -387,8 +386,10 @@ void mbox_handle_open_msg(struct work_struct *work) /* Change channel state to OPEN */ tx_chan->state = MBOX_OPEN; /* If pending list not empty, start sending data */ + mutex_lock(&tx_chan->lock); if (!list_empty(&tx_chan->tx.pending)) send_pdu(tx_chan, MBOX_CAST, tx_chan->channel); + mutex_unlock(&tx_chan->lock); } void mbox_handle_cast_msg(struct work_struct *work) @@ -528,8 +529,6 @@ static void mbox_cb(u32 mbox_msg, void *priv) struct channel_status *rx_chan = NULL; bool is_Payload = 0; - dev_dbg(&channels.pdev->dev, "%s type %d\t, mbox_msg %x\n", - __func__, type, mbox_msg); /* Get RX channels list for given mbox unit */ rx_list = get_rx_list(mbox_id); if (rx_list == NULL) { @@ -607,7 +606,6 @@ int mbox_channel_register(u16 channel, mbox_channel_cb_t *cb, void *priv) int res = 0; struct mbox_unit_status *mbox_unit; - dev_dbg(&channels.pdev->dev, " %s channel = %d\n", __func__, channel); /* Check for callback fcn */ if (cb == NULL) { dev_err(&channels.pdev->dev, @@ -983,7 +981,6 @@ static void mboxtest_receive_cb(u32 *data, u32 len, void *arg) printk(KERN_INFO "receive_cb.. data.= 0x%X, len = %d\n", *data, len); - for (i = 0; i < len; i++) *(mboxtest->rx_pointer++) = *(data++); -- cgit v1.2.3