]> Gitweb @ Texas Instruments - Open Source Git Repositories - git.TI.com/gitweb - rpmsg/rpmsg.git/commit
remoteproc: Fix unbalanced boot with sysfs for no auto-boot rprocs
authorSuman Anna <s-anna@ti.com>
Fri, 14 Jul 2017 22:39:08 +0000 (17:39 -0500)
committerSuman Anna <s-anna@ti.com>
Sun, 24 Feb 2019 01:20:47 +0000 (19:20 -0600)
commit6f4eac2f8710adc703e854f63992c3b6291ca273
tree7308843c68ebae340ff11b5f8a72b446cb5f0b41
parent8541b4dfdfbac7fbdf6d4190ec9e94328dd96593
remoteproc: Fix unbalanced boot with sysfs for no auto-boot rprocs

The remoteproc core performs automatic boot and shutdown of a remote
processor during rproc_add() and rproc_del() for remote processors
supporting 'auto-boot'. The remoteproc devices not using 'auto-boot'
require either a remoteproc client driver or a userspace client to
use the sysfs 'state' variable to perform the boot and shutdown. The
in-kernel client drivers hold the corresponding remoteproc driver
module's reference count when they acquire a rproc handle through
the rproc_get_by_phandle() API, but there is no such support for
userspace applications performing the boot through sysfs interface.

The shutdown of a remoteproc upon removing a remoteproc platform
driver is automatic only with 'auto-boot' and this can cause a
remoteproc with no auto-boot to stay powered on and never freed
up if booted using the sysfs interface without a matching stop,
and when the remoteproc driver module is removed or unbound from
the device. This will result in a memory leak as well as the
corresponding remoteproc ida being never deallocated. Fix this
by holding a module reference count for the remoteproc's driver
during a sysfs 'start' and releasing it during the sysfs 'stop'
operation.

Signed-off-by: Suman Anna <s-anna@ti.com>
drivers/remoteproc/remoteproc_sysfs.c