linux-yocto/drivers/fpga
Marco Pagani b7c0e1ecee
fpga: region: add owner module and take its refcount
The current implementation of the fpga region assumes that the low-level
module registers a driver for the parent device and uses its owner pointer
to take the module's refcount. This approach is problematic since it can
lead to a null pointer dereference while attempting to get the region
during programming if the parent device does not have a driver.

To address this problem, add a module owner pointer to the fpga_region
struct and use it to take the module's refcount. Modify the functions for
registering a region to take an additional owner module parameter and
rename them to avoid conflicts. Use the old function names for helper
macros that automatically set the module that registers the region as the
owner. This ensures compatibility with existing low-level control modules
and reduces the chances of registering a region without setting the owner.

Also, update the documentation to keep it consistent with the new interface
for registering an fpga region.

Fixes: 0fa20cdfcc ("fpga: fpga-region: device tree control for FPGA")
Suggested-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Suggested-by: Xu Yilun <yilun.xu@intel.com>
Reviewed-by: Russ Weight <russ.weight@linux.dev>
Signed-off-by: Marco Pagani <marpagan@redhat.com>
Acked-by: Xu Yilun <yilun.xu@intel.com>
Link: https://lore.kernel.org/r/20240419083601.77403-1-marpagan@redhat.com
Signed-off-by: Xu Yilun <yilun.xu@linux.intel.com>
2024-04-23 15:37:20 +08:00
..
tests fpga: tests: use KUnit devices instead of platform devices 2024-04-09 12:13:15 +08:00
altera-cvp.c fpga: altera-cvp: Remove an unused field in struct altera_cvp_conf 2024-04-02 14:31:08 +08:00
altera-fpga2sdram.c fpga: altera-fpga2sdram: Convert to platform remove callback returning void 2023-12-21 22:30:42 +08:00
altera-freeze-bridge.c fpga: altera-freeze-bridge: Convert to platform remove callback returning void 2023-12-21 22:31:40 +08:00
altera-hps2fpga.c fpga: altera-hps2fpga: Convert to platform remove callback returning void 2023-12-21 22:31:53 +08:00
altera-pr-ip-core-plat.c fpga: Explicitly include correct DT includes 2023-07-17 09:23:04 +08:00
altera-pr-ip-core.c fpga: altera-pr-ip: fix unsigned comparison with less than zero 2022-06-10 15:48:23 +08:00
altera-ps-spi.c fpga: altera: drop driver owner assignment 2024-04-01 16:39:57 +08:00
dfl-afu-dma-region.c fpga: dfl: afu: convert get_user_pages() --> pin_user_pages() 2020-06-18 18:12:06 -07:00
dfl-afu-error.c fpga: dfl: afu: harden port enable logic 2021-03-24 11:15:04 -07:00
dfl-afu-main.c fpga: dfl: remove unused member pdata from struct dfl_{afu,fme} 2024-04-23 15:36:33 +08:00
dfl-afu-region.c fpga: dfl: more kernel-doc corrections 2023-01-28 23:33:43 +08:00
dfl-afu.h fpga: dfl: remove unused member pdata from struct dfl_{afu,fme} 2024-04-23 15:36:33 +08:00
dfl-fme-br.c fpga: dfl-fme-br: Convert to platform remove callback returning void 2023-12-21 22:32:19 +08:00
dfl-fme-error.c fpga: dfl: fme: add interrupt support for global error reporting 2020-07-06 21:35:42 -07:00
dfl-fme-main.c fpga: dfl: remove unused member pdata from struct dfl_{afu,fme} 2024-04-23 15:36:33 +08:00
dfl-fme-mgr.c fpga: dfl-fme-mgr: Convert to devm_platform_ioremap_resource() 2023-07-10 16:41:44 +08:00
dfl-fme-perf.c fpga: dfl: more kernel-doc corrections 2023-01-28 23:33:43 +08:00
dfl-fme-pr.c fpga: dfl: kernel-doc corrections 2023-01-28 23:33:05 +08:00
dfl-fme-pr.h fpga: dfl: more kernel-doc corrections 2023-01-28 23:33:43 +08:00
dfl-fme-region.c fpga: dfl-fme-region: Convert to platform remove callback returning void 2023-12-21 22:32:40 +08:00
dfl-fme.h fpga: dfl: remove unused member pdata from struct dfl_{afu,fme} 2024-04-23 15:36:33 +08:00
dfl-n3000-nios.c fpga: fix spelling mistakes 2021-07-21 19:54:21 -07:00
dfl-pci.c fpga: dfl-pci: Use pci_find_vsec_capability() to simplify the code 2023-08-07 18:21:40 +08:00
dfl.c fpga: dfl: make dfl_bus_type const 2024-02-18 18:07:05 +08:00
dfl.h fpga: dfl: remove unused function is_dfl_feature_present() 2024-04-23 15:36:33 +08:00
fpga-bridge.c fpga: bridge: add owner module and take its refcount 2024-03-31 21:54:44 +08:00
fpga-mgr.c fpga: manager: add owner module and take its refcount 2024-03-31 21:50:39 +08:00
fpga-region.c fpga: region: add owner module and take its refcount 2024-04-23 15:37:20 +08:00
ice40-spi.c fpga: ice40-spi: Don't use "proxy" headers 2024-04-23 15:36:32 +08:00
intel-m10-bmc-sec-update.c fpga: intel-m10-bmc-sec-update: Convert to platform remove callback returning void 2023-12-21 22:32:54 +08:00
Kconfig fpga: xilinx-selectmap: add new driver 2024-03-31 22:44:21 +08:00
lattice-sysconfig-spi.c fpga: lattice-sysconfig-spi: Add explicit include for of.h 2023-04-06 20:36:27 +02:00
lattice-sysconfig.c fpga: lattice-sysconfig-spi: add Lattice sysCONFIG FPGA manager 2022-10-25 14:44:03 +08:00
lattice-sysconfig.h fpga: lattice-sysconfig-spi: add Lattice sysCONFIG FPGA manager 2022-10-25 14:44:03 +08:00
machxo2-spi.c fpga: mgr: Use standard dev_release for class driver 2021-11-28 13:59:13 -08:00
Makefile fpga: xilinx-selectmap: add new driver 2024-03-31 22:44:21 +08:00
microchip-spi.c fpga: Explicitly include correct DT includes 2023-07-17 09:23:04 +08:00
of-fpga-region.c fpga: of-fpga-region: Convert to platform remove callback returning void 2023-12-21 22:33:04 +08:00
socfpga-a10.c fpga: socfpga-a10: Convert to platform remove callback returning void 2023-12-21 22:33:15 +08:00
socfpga.c fpga: fpga-mgr: socfpga: Convert to devm_platform_ioremap_resource() 2023-07-10 16:48:04 +08:00
stratix10-soc.c fpga: stratix10-soc: Convert to platform remove callback returning void 2023-12-21 22:33:25 +08:00
ts73xx-fpga.c fpga: fpga-mgr: ts73xx: Convert to devm_platform_ioremap_resource() 2023-07-10 16:52:58 +08:00
versal-fpga.c fpga: versal: Add support for 44-bit DMA operations 2023-10-16 10:32:00 +08:00
xilinx-core.c fpga: xilinx-core: add new gpio names for prog and init 2024-03-31 22:48:13 +08:00
xilinx-core.h fpga: xilinx-spi: extract a common driver core 2024-03-31 22:41:26 +08:00
xilinx-pr-decoupler.c fpga: xilinx-pr-decoupler: Convert to platform remove callback returning void 2023-12-21 22:33:35 +08:00
xilinx-selectmap.c fpga: xilinx-selectmap: add new driver 2024-03-31 22:44:21 +08:00
xilinx-spi.c fpga: xilinx-spi: extract a common driver core 2024-03-31 22:41:26 +08:00
zynq-fpga.c fpga: zynq-fpga: Convert to platform remove callback returning void 2023-12-21 22:33:46 +08:00
zynqmp-fpga.c fpga: zynqmp-fpga: Adds status interface 2023-03-09 17:33:19 +01:00