On 10/06/2015 01:11 AM, Russell King - ARM Linux wrote:
On Mon, Sep 07, 2015 at 03:44:43PM +0200, Hans Verkuil wrote:
- cec->adap = cec_create_adapter(&s5p_cec_adap_ops, cec,
CEC_NAME, CEC_CAP_STATE |
CEC_CAP_PHYS_ADDR | CEC_CAP_LOG_ADDRS | CEC_CAP_IO |
CEC_CAP_IS_SOURCE,
0, THIS_MODULE, &pdev->dev);
- ret = PTR_ERR_OR_ZERO(cec->adap);
- if (ret)
return ret;
- cec->adap->available_log_addrs = 1;
- platform_set_drvdata(pdev, cec);
- pm_runtime_enable(dev);
This is really not a good interface.
"cec_create_adapter" creates and registers the adapter, at which point it becomes available to userspace. However, you haven't finished setting it up, so it's possible to nip in here and start using it before the setup has completed. This needs fixing.
Good point, I'll split off the registration part into a separate function.
Regards,
Hans