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

Kieran Bingham kieran.bingham at ideasonboard.com
Thu May 4 21:03:56 CEST 2023


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

--
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