[libcamera-devel] [PATCH v2 1/2] libcamera: ipa_manager: Only parse IPA modules

Kieran Bingham kieran.bingham at ideasonboard.com
Mon Aug 28 14:28:37 CEST 2023


Quoting Kieran Bingham (2023-05-04 20:03:56)
> On 04/05/2023 16:10, Laurent Pinchart wrote:
> > Hi Kieran,
> > 
> > Thank you for the patch.
> > 
> > On Thu, May 04, 2023 at 03:48:00PM +0100, Kieran Bingham via libcamera-devel wrote:
> >> Ensure that when we iterate the libcamera libdir we only select shared
> >> objects which are expected to be IPA modules, with an ipa_ prefix.
> >>
> >> Any shared object not matching this filter is ignored and not processed
> >> by the IPA Manager.
> >>
> >> Reviewed-by: Javier Martinez Canillas <javierm at redhat.com>
> >> Signed-off-by: Kieran Bingham <kieran.bingham at ideasonboard.com>
> > 
> > I wonder what this protects against, as there shouldn't be other files
> > in this directory, especially if we move IPA modules to an ipa/
> > subdirectory. I don't mind much, as this isn't a hot path, so I have no
> > objection if you want to merge this, but is it useful ?
> 
> Only that it prevents us trying to load any files that might be there 
> otherwise.
> 
> 
> 
> [76:32:31.897778214] [2776180] ERROR IPAModule ipa_module.cpp:286 
> fake.so: IPA module is not an ELF file
> [76:32:31.899112311] [2776180] ERROR IPAModule ipa_module.cpp:172 Symbol 
> ipaModuleInfo not found
> [76:32:31.899119975] [2776180] ERROR IPAModule ipa_module.cpp:292 
> v4l2-compat.so: IPA module has no valid info
> 
> 
> We already filter on .so objects, and we do other checks so it's not 
> crucial, and it's not going to prevent any attempt to get 
> 'non-libcamera' code parsed as anyone dropping a file here could equally 
> call it 'ipa_fake.so' ... so no not really.
> 
> I'll drop this and collect 2/2

I've started seeing various logs that report similar to:
```
$ wireplumber 
[12:34:30.015061894] [206341] ERROR IPAModule ipa_module.cpp:172 Symbol ipaModuleInfo not found
[12:34:30.015085339] [206341] ERROR IPAModule ipa_module.cpp:292 v4l2-compat.so: IPA module has no valid info
[12:34:30.015125806] [206341]  INFO Camera camera_manager.cpp:284 libcamera v0.1.0
```

I believe this is because some distributions are probably overriding the
installation path of the v4l2-compat.so.

Anyway, that makes me think that we /should/ ignore files that are not
prefixed by ipa_ ...


--
Kieran


> 
> --
> Kieran
> 
> 
> 
> > 
> >> ---
> >>   src/libcamera/ipa_manager.cpp | 4 ++++
> >>   1 file changed, 4 insertions(+)
> >>
> >> diff --git a/src/libcamera/ipa_manager.cpp b/src/libcamera/ipa_manager.cpp
> >> index 030ef43fb994..c0c2f027e902 100644
> >> --- a/src/libcamera/ipa_manager.cpp
> >> +++ b/src/libcamera/ipa_manager.cpp
> >> @@ -206,6 +206,10 @@ void IPAManager::parseDir(const char *libDir, unsigned int maxDepth,
> >>              if (strcmp(&ent->d_name[offset], ".so"))
> >>                      continue;
> >>   
> >> +            /* Ignore any modules which are not IPAs. */
> >> +            if (strncmp(ent->d_name, "ipa_", 4) != 0)
> >> +                    continue;
> >> +
> >>              files.push_back(std::string(libDir) + "/" + ent->d_name);
> >>      }
> >>   
> >


More information about the libcamera-devel mailing list