On Thu, 2019-04-04 at 20:06 -0700, Ranjani Sridharan wrote: > Setting the module_get_upon_open field for component driver > prevents the module refcount from being incremented during > component probe(). This could lead to the module being > allowed to be unloaded when a pcm stream is open. So, > if this field is set, the module's refcount should be > incremented during pcm open to prevent module removal > when the component is in use. And, the refcount should > be decremented upon pcm close. > > Signed-off-by: Ranjani Sridharan <ranjani.sridharan@xxxxxxxxxxxxxxx> > --- > sound/soc/soc-pcm.c | 8 ++++++++ > 1 file changed, 8 insertions(+) > > diff --git a/sound/soc/soc-pcm.c b/sound/soc/soc-pcm.c > index 7fe5321000e8..d84a9a5b14c0 100644 > --- a/sound/soc/soc-pcm.c > +++ b/sound/soc/soc-pcm.c > @@ -15,6 +15,7 @@ > #include <linux/delay.h> > #include <linux/pinctrl/consumer.h> > #include <linux/pm_runtime.h> > +#include <linux/module.h> > #include <linux/slab.h> > #include <linux/workqueue.h> > #include <linux/export.h> > @@ -463,6 +464,9 @@ static int soc_pcm_components_close(struct > snd_pcm_substream *substream, > continue; > > component->driver->ops->close(substream); > + > + if (component->driver->module_get_upon_open) > + module_put(component->dev->driver->owner); I made a minor fix to align the code similar to the one in soc-core. I've sent a V2 version of the patch set with the fix. Sorry about the noise. Thanks, Ranjani > } > > return 0; > @@ -513,6 +517,10 @@ static int soc_pcm_open(struct snd_pcm_substream > *substream) > !component->driver->ops->open) > continue; > > + if (component->driver->module_get_upon_open) > + if (!try_module_get(component->dev->driver- > >owner)) > + return -ENODEV; > + > ret = component->driver->ops->open(substream); > if (ret < 0) { > dev_err(component->dev, _______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxx https://mailman.alsa-project.org/mailman/listinfo/alsa-devel