[alsa-devel] [PATCH][RFC] ASoC: soc-pcm: fixup try_module_get() calling timing
Kuninori Morimoto
kuninori.morimoto.gx at renesas.com
Mon May 20 03:01:18 CEST 2019
Hi Pierre-Louis
Thank you for your feedback
> >>> => (A)
> >>> if (!component->driver->ops ||
> >>> !component->driver->ops->open)
> >>> continue;
> >>> => (B)
> >>> if (component->driver->module_get_upon_open &&
> >>> !try_module_get(component->dev->driver->owner)) {
> >>> ...
> >>> }
(snip)
> >> The try_module_get()/module_put() mechanism is based on the
> >> assumption
> >> that the .open and .close callbacks are both mandatory.
> > Hi Pierre,
> > But is this enforced? We could end up doing a try_module_get() without
> > checking if there is a close callback in which case we'd never do the
> > module_put(), isnt it?
>
>
> My initial feedback was that changing the open case only wouldn't work.
>
> We need to enforce that both the open/close callbacks are required and
> leave the code as is, or we apply both of Morimoto-san's patches
> (which unfortunately have the same subject to cover the two cases) and
> both open and close are optional - though I am having a hard time
> figuring out case where we we'd use one and the other.
If my understanding is correct, the reason why we need to call
try_module_get()/module_put() is to checking used component.
The component will be used anyway even though it doesn't have
.open, I think.
So, we need to call these anyway.
But yes it should change both .open/.close in the same patch.
Then, .open/.close is just optional.
I will repost patch.
Thank you for your help !!
Best regards
---
Kuninori Morimoto
More information about the Alsa-devel
mailing list