media: ipu-bridge: Serialise calls to IPU bridge init
authorSakari Ailus <sakari.ailus@linux.intel.com>
Tue, 13 Feb 2024 09:42:30 +0000 (11:42 +0200)
committerHans Verkuil <hverkuil-cisco@xs4all.nl>
Fri, 23 Feb 2024 13:33:32 +0000 (14:33 +0100)
The IPU bridge initialisation will be called from multiple locations in
the future. Serialise the access to devices' fwnodes in this context.

Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
drivers/media/pci/intel/ipu-bridge.c

index 735c62c37c22d9fdccb9da5d1dee3d59f4ace754..e994db4f4d91443e3a3717802143774cb33fa33a 100644 (file)
@@ -766,6 +766,8 @@ static int ipu_bridge_check_fwnode_graph(struct fwnode_handle *fwnode)
        return ipu_bridge_check_fwnode_graph(fwnode->secondary);
 }
 
+static DEFINE_MUTEX(ipu_bridge_mutex);
+
 int ipu_bridge_init(struct device *dev,
                    ipu_parse_sensor_fwnode_t parse_sensor_fwnode)
 {
@@ -774,6 +776,8 @@ int ipu_bridge_init(struct device *dev,
        unsigned int i;
        int ret;
 
+       guard(mutex)(&ipu_bridge_mutex);
+
        if (!ipu_bridge_check_fwnode_graph(dev_fwnode(dev)))
                return 0;