From: Bjorn Andersson <bjorn.andersson@linaro.org>
To: Deepak Kumar Singh <quic_deesin@quicinc.com>
Cc: swboyd@chromium.org, quic_clew@quicinc.com,
mathieu.poirier@linaro.org, linux-kernel@vger.kernel.org,
linux-arm-msm@vger.kernel.org, linux-remoteproc@vger.kernel.org,
Ohad Ben-Cohen <ohad@wizery.com>
Subject: Re: [PATCH V1 2/3] rpmsg: glink: Add lock to avoid race when rpmsg device is released
Date: Fri, 11 Mar 2022 14:52:45 -0600 [thread overview]
Message-ID: <Yiu2nawUPxWYaIY3@builder.lan> (raw)
In-Reply-To: <1643223886-28170-3-git-send-email-quic_deesin@quicinc.com>
On Wed 26 Jan 13:04 CST 2022, Deepak Kumar Singh wrote:
> When remote host goes down glink char device channel is freed,
> At the same time user space apps can still try to open rpmsg_char
> device which will result in calling rpmsg_create_ept. This may cause
> reference to already freed context of glink chardev channel.
>
Hi Deepak,
Could you please be a little bit more specific on the details of where
you're seeing this race? Perhaps I'm just missing something obvious?
> Use per ept lock to avoid race between rpmsg_destroy_ept and
> rpmsg_destory_ept.
I presume one of these should say rpmsg_eptdev_open().
Regards,
Bjorn
> ---
> drivers/rpmsg/rpmsg_char.c | 12 ++++++++++++
> 1 file changed, 12 insertions(+)
>
> diff --git a/drivers/rpmsg/rpmsg_char.c b/drivers/rpmsg/rpmsg_char.c
> index 72ee101..2108ef8 100644
> --- a/drivers/rpmsg/rpmsg_char.c
> +++ b/drivers/rpmsg/rpmsg_char.c
> @@ -85,6 +85,7 @@ static int rpmsg_eptdev_destroy(struct device *dev, void *data)
> struct rpmsg_eptdev *eptdev = dev_to_eptdev(dev);
>
> mutex_lock(&eptdev->ept_lock);
> + eptdev->rpdev = NULL;
> if (eptdev->ept) {
> rpmsg_destroy_ept(eptdev->ept);
> eptdev->ept = NULL;
> @@ -145,15 +146,24 @@ static int rpmsg_eptdev_open(struct inode *inode, struct file *filp)
>
> get_device(dev);
>
> + mutex_lock(&eptdev->ept_lock);
> + if (!eptdev->rpdev) {
> + put_device(dev);
> + mutex_unlock(&eptdev->ept_lock);
> + return -ENETRESET;
> + }
> +
> ept = rpmsg_create_ept(rpdev, rpmsg_ept_cb, eptdev, eptdev->chinfo);
> if (!ept) {
> dev_err(dev, "failed to open %s\n", eptdev->chinfo.name);
> + mutex_unlock(&eptdev->ept_lock);
> put_device(dev);
> return -EINVAL;
> }
>
> ept->sig_cb = rpmsg_sigs_cb;
> eptdev->ept = ept;
> + mutex_unlock(&eptdev->ept_lock);
> filp->private_data = eptdev;
>
> return 0;
> @@ -285,7 +295,9 @@ static __poll_t rpmsg_eptdev_poll(struct file *filp, poll_table *wait)
> if (eptdev->sig_pending)
> mask |= EPOLLPRI;
>
> + mutex_lock(&eptdev->ept_lock);
> mask |= rpmsg_poll(eptdev->ept, filp, wait);
> + mutex_unlock(&eptdev->ept_lock);
>
> return mask;
> }
> --
> 2.7.4
>
next prev parent reply other threads:[~2022-03-11 20:53 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-01-26 19:04 [PATCH V1 0/3] rpmsg char fixes for race conditions in device reboot Deepak Kumar Singh
2022-01-26 19:04 ` [PATCH V1 1/3] rpmsg: glink: Free device context only when cdev not in use Deepak Kumar Singh
2022-02-03 17:35 ` Mathieu Poirier
2022-02-14 15:02 ` Deepak Kumar Singh
2022-01-26 19:04 ` [PATCH V1 2/3] rpmsg: glink: Add lock to avoid race when rpmsg device is released Deepak Kumar Singh
2022-03-11 20:52 ` Bjorn Andersson [this message]
2022-04-07 16:58 ` Deepak Kumar Singh
2022-01-26 19:04 ` [PATCH V1 3/3] rpmsg: glink: Add lock for ctrl device Deepak Kumar Singh
2022-03-11 20:54 ` Bjorn Andersson
2022-04-06 11:38 ` Deepak Kumar Singh
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=Yiu2nawUPxWYaIY3@builder.lan \
--to=bjorn.andersson@linaro.org \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-remoteproc@vger.kernel.org \
--cc=mathieu.poirier@linaro.org \
--cc=ohad@wizery.com \
--cc=quic_clew@quicinc.com \
--cc=quic_deesin@quicinc.com \
--cc=swboyd@chromium.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.