summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>2024-07-31 02:09:44 +0300
committerLaurent Pinchart <laurent.pinchart@ideasonboard.com>2024-08-01 01:22:14 +0300
commitefc7a85bc00a767427c219a43d0bb420dfc6361b (patch)
tree7a4efcd5d0da89a4febe098b8b0f811402648f26 /src
parent93d975194522450894a6fe7554b28a14fbfe7214 (diff)
libcamera: shared_mem_object: Prevent memfd from shrinking or growing
The memfd underlying the SharedMem object must not shrink, or memory corruption will happen. Prevent this by setting the shrink seal on the file. As there's no valid use case for growing the memory either, set the grow seal as well. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Milan Zamazal <mzamazal@redhat.com> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com> Tested-by: Milan Zamazal <mzamazal@redhat.com> Tested-by: Hans de Goede <hdegoede@redhat.com> Reviewed-by: Hans de Goede <hdegoede@redhat.com>
Diffstat (limited to 'src')
-rw-r--r--src/libcamera/shared_mem_object.cpp3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/libcamera/shared_mem_object.cpp b/src/libcamera/shared_mem_object.cpp
index 022645e7..d4c7991a 100644
--- a/src/libcamera/shared_mem_object.cpp
+++ b/src/libcamera/shared_mem_object.cpp
@@ -58,7 +58,8 @@ SharedMem::SharedMem() = default;
*/
SharedMem::SharedMem(const std::string &name, std::size_t size)
{
- UniqueFD memfd = MemFd::create(name.c_str(), size);
+ UniqueFD memfd = MemFd::create(name.c_str(), size, MemFd::Seal::Shrink |
+ MemFd::Seal::Grow);
if (!memfd.isValid())
return;