Re: fpga: fpga_mgr_free usage
- Date: Wed, 11 Jul 2018 10:59:01 -0500
- From: Alan Tull <atull@xxxxxxxxxx>
- Subject: Re: fpga: fpga_mgr_free usage
On Wed, Jul 11, 2018 at 7:38 AM, Federico Vaga <federico.vaga@xxxxxxx> wrote:
> Hi Alan,
> I have another point that I would like to discuss. It is about the
> usage of 'fpga_mgr_free()' which does not look like consistent.
> This function, according to the current implementation, can be used by
> an FPGA manager user and it is used by the FPGA manager itself on
> device release. This means that the user can only use this function if
> fpga_mgr_register() fails (to clean up), otherwise the user must NOT
> use this function, otherwise we most likely get an oops (NULL or
> invalid pointer). The example here is correct, this is what we should
> But I suggest to document it better or prevent this type of mistakes
> from happening. Following a couple of proposals
> Document it better. This is easy, in the fpga_mgr_free() kernel-doc
> comment we explain that the use of this function must be limited to
> clean up the memory on a registration failure. If an FPGA manager has
> been successfully registered then it will be freed by the framework
> But still, this does not prevent an oops from happening.
> Remove the fpga_mgr_free() from fpga_mgr_dev_release() and ask the
> user to free the manager when necessary.
> This makes the usage consistent: the user creates and destroy its own
> objects. This is also consistent with our other discussion where we
> said, among the other things, that the module that uses the FPGA
> manager can the owner of the fpga_manager data structure.
You're not the first to complain about this. I think I'll err on the
side of consistency and implement your option 2 here.