Commit c3900f10 authored by Elliot Berman's avatar Elliot Berman Committed by Zhongyuan Zhou
Browse files

mailbox: omap: Use mbox_bind_client

mainline inclusion
from mainline-v6.4-rc1
commit f11ff34d
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I9S5DK
CVE: NA

Reference: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/?id=f11ff34d883a26f4f13c307aeb556f2b076a5066



--------------------------------

Use generic mbox_bind_client() to bind omap mailbox channel to a client.

mbox_bind_client is identical to the replaced lines, except that it:
 - Does the operation under con_mutex which prevents possible races in
   removal path
 - Sets TXDONE_BY_ACK if omap uses TXDONE_BY_POLL. omap uses
   TXDONE_BY_IRQ, so this check is not applicable.
 - Calls chan->mbox->ops->startup, if available. omap doesn't have, so
   this is not applicable.

Signed-off-by: default avatarElliot Berman <quic_eberman@quicinc.com>
Signed-off-by: default avatarJassi Brar <jaswinder.singh@linaro.org>
parent 991e5781
Loading
Loading
Loading
Loading
+4 −18
Original line number Diff line number Diff line
@@ -417,8 +417,6 @@ struct mbox_chan *omap_mbox_request_channel(struct mbox_client *cl,
	struct device *dev = cl->dev;
	struct omap_mbox *mbox = NULL;
	struct omap_mbox_device *mdev;
	struct mbox_chan *chan;
	unsigned long flags;
	int ret;

	if (!dev)
@@ -441,23 +439,11 @@ struct mbox_chan *omap_mbox_request_channel(struct mbox_client *cl,
	if (!mbox || !mbox->chan)
		return ERR_PTR(-ENOENT);

	chan = mbox->chan;
	spin_lock_irqsave(&chan->lock, flags);
	chan->msg_free = 0;
	chan->msg_count = 0;
	chan->active_req = NULL;
	chan->cl = cl;
	init_completion(&chan->tx_complete);
	spin_unlock_irqrestore(&chan->lock, flags);

	ret = chan->mbox->ops->startup(chan);
	if (ret) {
		pr_err("Unable to startup the chan (%d)\n", ret);
		mbox_free_channel(chan);
		chan = ERR_PTR(ret);
	}
	ret = mbox_bind_client(mbox->chan, cl);
	if (ret)
		return ERR_PTR(ret);

	return chan;
	return mbox->chan;
}
EXPORT_SYMBOL(omap_mbox_request_channel);