Re: [RFC PATCH v6 6/9] media: tegra: Add Tegra210 Video input driver

From: Dmitry Osipenko
Date: Mon Apr 06 2020 - 12:11:38 EST


06.04.2020 18:41, Sowjanya Komatineni ÐÐÑÐÑ:
>
> On 4/5/20 2:11 PM, Dmitry Osipenko wrote:
>> External email: Use caution opening links or attachments
>>
>>
>> 04.04.2020 04:25, Sowjanya Komatineni ÐÐÑÐÑ:
>> ...
>>> +static int tegra_vi_tpg_channels_alloc(struct tegra_vi *vi)
>>> +{
>>> +ÂÂÂÂ struct tegra_vi_channel *chan, *tmp;
>>> +ÂÂÂÂ unsigned int port_num;
>>> +ÂÂÂÂ unsigned int nchannels = vi->soc->vi_max_channels;
>>> +ÂÂÂÂ int ret = 0;
>>> +
>>> +ÂÂÂÂ for (port_num = 0; port_num < nchannels; port_num++) {
>>> +ÂÂÂÂÂÂÂÂÂÂÂÂ /*
>>> +ÂÂÂÂÂÂÂÂÂÂÂÂÂ * Do not use devm_kzalloc as memory is freed immediately
>>> +ÂÂÂÂÂÂÂÂÂÂÂÂÂ * when device instance is unbound but application
>>> might still
>>> +ÂÂÂÂÂÂÂÂÂÂÂÂÂ * be holding the device node open. Channel memory
>>> allocated
>>> +ÂÂÂÂÂÂÂÂÂÂÂÂÂ * with kzalloc is freed during video device release
>>> callback.
>>> +ÂÂÂÂÂÂÂÂÂÂÂÂÂ */
>>> +ÂÂÂÂÂÂÂÂÂÂÂÂ chan = kzalloc(sizeof(*chan), GFP_KERNEL);
>> Why anyone would want to unbind this driver in practice?
>>
>> I think it should make more sense to set suppress_bind_attrs=true.
>
> From the previous feedback of patch series, we need to support
> unbind/bind and looks like this driver should also support to built as a
> module.

If module unloading is also affected, then perhaps you should use
get/put_device() to not allow freeing the resources until they're still
in-use.

I suppose that it should be up to the V4L core to keep the device alive
while needed, rather than to put the burden to the individual drivers.