[PATCH v13 4/6] remoteproc: pru: Make sysfs entries read-only for PRU client driven boots

From: MD Danish Anwar
Date: Thu Jan 05 2023 - 04:22:35 EST


From: Suman Anna <s-anna@xxxxxx>

The PRU remoteproc driver is not configured for 'auto-boot' by default,
and allows to be booted either by in-kernel PRU client drivers or by
userspace using the generic remoteproc sysfs interfaces. The sysfs
interfaces should not be permitted to change the remoteproc firmwares
or states when a PRU is being managed by an in-kernel client driver.
Use the newly introduced remoteproc generic 'sysfs_read_only' flag to
provide these restrictions by setting and clearing it appropriately
during the PRU acquire and release steps.

Signed-off-by: Suman Anna <s-anna@xxxxxx>
Signed-off-by: Grzegorz Jaszczyk <grzegorz.jaszczyk@xxxxxxxxxx>
Signed-off-by: MD Danish Anwar <danishanwar@xxxxxx>
Reviewed-by: Roger Quadros <rogerq@xxxxxxxxxx>
---
drivers/remoteproc/pru_rproc.c | 2 ++
1 file changed, 2 insertions(+)

diff --git a/drivers/remoteproc/pru_rproc.c b/drivers/remoteproc/pru_rproc.c
index fe4ca1584e91..8e2fbe392ef3 100644
--- a/drivers/remoteproc/pru_rproc.c
+++ b/drivers/remoteproc/pru_rproc.c
@@ -223,6 +223,7 @@ struct rproc *pru_rproc_get(struct device_node *np, int index,
}

pru->client_np = np;
+ rproc->sysfs_read_only = true;

mutex_unlock(&pru->lock);

@@ -261,6 +262,7 @@ void pru_rproc_put(struct rproc *rproc)
}

pru->client_np = NULL;
+ rproc->sysfs_read_only = false;
mutex_unlock(&pru->lock);

rproc_put(rproc);
--
2.25.1