libcamera: ipa_module: Relax ipaModuleInfo symbol size check
When an IPA module is loaded, the loadIPAModuleInfo() function validates the ipaModuleInfo structure. As part of that process, it checks that the ipaModuleInfo symbol size matches the expected structure size. This check breaks with clang and ASan, as the LLVM's address sanitizer implementation includes the redzone after the structure in the symbol size, currently growing it by 156 bytes (on x86-64). This causes all IPA modules to fail to load. Fix the problem by relaxing the size check to only ensure that the symbol is large enough to contain the structure. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
This commit is contained in:
parent
20e33bc0df
commit
d81505b834
1 changed files with 2 additions and 2 deletions
|
@ -288,12 +288,12 @@ int IPAModule::loadIPAModuleInfo()
|
|||
}
|
||||
|
||||
Span<const uint8_t> info = elfLoadSymbol(data, "ipaModuleInfo");
|
||||
if (info.size() != sizeof(info_)) {
|
||||
if (info.size() < sizeof(info_)) {
|
||||
LOG(IPAModule, Error) << "IPA module has no valid info";
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
memcpy(&info_, info.data(), info.size());
|
||||
memcpy(&info_, info.data(), sizeof(info_));
|
||||
|
||||
if (info_.moduleAPIVersion != IPA_MODULE_API_VERSION) {
|
||||
LOG(IPAModule, Error) << "IPA module API version mismatch";
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue