From d23cacb3acdba8c0253c70df71b9663becad229e Mon Sep 17 00:00:00 2001 From: Amir Samuelov Date: Sun, 28 May 2017 16:11:37 +0300 Subject: [PATCH] spcom: open channel return EBUSY when channel in use The char device /dev/sp_kernel is used for loading SP application and creating new channel char device, therefore might be temporary busy. Return EBUSY error to user system call open() so it can retry. Change-Id: I230577fe6b03ac7afd7175f72f9a3fa80db5a524 Signed-off-by: Amir Samuelov --- drivers/soc/qcom/spcom.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/drivers/soc/qcom/spcom.c b/drivers/soc/qcom/spcom.c index 0e1e4ae975b0..d1f300e6afb7 100644 --- a/drivers/soc/qcom/spcom.c +++ b/drivers/soc/qcom/spcom.c @@ -718,8 +718,10 @@ static int spcom_open(struct spcom_channel *ch, unsigned int timeout_msec) /* only one client/server may use the channel */ if (ch->ref_count) { - pr_err("channel [%s] already in use.\n", name); - goto exit_err; + pr_err("channel [%s] is BUSY, already in use by pid [%d].\n", + name, ch->pid); + mutex_unlock(&ch->lock); + return -EBUSY; } pr_debug("ch [%s] opened by PID [%d], count [%d]\n",