remoteproc: Refactor function rproc_cdev_release()

Refactor function rproc_cdev_release() to take into account the
current state of the remote processor when choosing the state to
transition to.

Signed-off-by: Mathieu Poirier <mathieu.poirier@linaro.org>
Link: https://lore.kernel.org/r/20210312162453.1234145-18-mathieu.poirier@linaro.org
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
This commit is contained in:
Mathieu Poirier 2021-03-12 09:24:53 -07:00 committed by Bjorn Andersson
parent 5daaeb5f07
commit 6e71d2b2a2

View File

@ -86,11 +86,17 @@ static long rproc_device_ioctl(struct file *filp, unsigned int ioctl, unsigned l
static int rproc_cdev_release(struct inode *inode, struct file *filp)
{
struct rproc *rproc = container_of(inode->i_cdev, struct rproc, cdev);
int ret = 0;
if (rproc->cdev_put_on_release && rproc->state == RPROC_RUNNING)
if (!rproc->cdev_put_on_release)
return 0;
if (rproc->state == RPROC_RUNNING)
rproc_shutdown(rproc);
else if (rproc->state == RPROC_ATTACHED)
ret = rproc_detach(rproc);
return 0;
return ret;
}
static const struct file_operations rproc_fops = {