summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authorDimitri Staessens <dimitri@ouroboros.rocks>2026-01-18 14:35:50 +0100
committerSander Vrijders <sander@ouroboros.rocks>2026-01-19 08:31:30 +0100
commitc51611c27f766bb4f413485bf8a12bca02e98669 (patch)
tree61fe6a862d550aa1cbd6c9d7c964f171ebe84afa /src/lib
parent60b04305d70614580b4f883c0a147507edef3779 (diff)
downloadouroboros-c51611c27f766bb4f413485bf8a12bca02e98669.tar.gz
ouroboros-c51611c27f766bb4f413485bf8a12bca02e98669.zip
lib: Call mlock() on the shared memory buffers
This prevents them from swapping to disk and killing performance. It also enhances security a little bit by reducing the risk of sensitive (even encrypted) data being paged out and captured. Signed-off-by: Dimitri Staessens <dimitri@ouroboros.rocks> Signed-off-by: Sander Vrijders <sander@ouroboros.rocks>
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/shm_rbuff.c7
-rw-r--r--src/lib/shm_rdrbuff.c7
2 files changed, 14 insertions, 0 deletions
diff --git a/src/lib/shm_rbuff.c b/src/lib/shm_rbuff.c
index ec3bd152..ce432efb 100644
--- a/src/lib/shm_rbuff.c
+++ b/src/lib/shm_rbuff.c
@@ -455,3 +455,10 @@ size_t shm_rbuff_queued(struct shm_rbuff * rb)
return ret;
}
+
+int shm_rbuff_mlock(struct shm_rbuff * rb)
+{
+ assert(rb != NULL);
+
+ return mlock(rb->shm_base, SHM_RBUFF_FILESIZE);
+}
diff --git a/src/lib/shm_rdrbuff.c b/src/lib/shm_rdrbuff.c
index 7ad1bd2e..5cdeba9e 100644
--- a/src/lib/shm_rdrbuff.c
+++ b/src/lib/shm_rdrbuff.c
@@ -278,6 +278,13 @@ void shm_rdrbuff_purge(void)
free(shm_rdrb_fn);
}
+int shm_rdrbuff_mlock(struct shm_rdrbuff * rdrb)
+{
+ assert(rdrb != NULL);
+
+ return mlock(rdrb->shm_base, SHM_FILE_SIZE);
+}
+
ssize_t shm_rdrbuff_alloc(struct shm_rdrbuff * rdrb,
size_t len,
uint8_t ** ptr,