libfs: improve cleanup of shared file mappings

This commit is contained in:
2026-05-30 10:08:07 +01:00
parent aaea926f4d
commit 651ddf7827
3 changed files with 30 additions and 4 deletions
+9 -2
View File
@@ -8,6 +8,7 @@
#include <magenta/handle.h>
#include <magenta/log.h>
#include <magenta/vm.h>
#include <stdio.h>
#include <sys/mman.h>
static int create_file_mapping(
@@ -57,6 +58,7 @@ static int create_file_mapping(
return __errno_from_kern_status(status);
}
mapping->m_ref = 1;
mapping->m_file = f;
mapping->m_vmo = vmo;
@@ -102,14 +104,19 @@ extern kern_status_t fs_msg_map(
(flags & MAP_SHARED) ? "shared" : "private",
mapping->m_vmo);
kern_handle_t vmo;
kern_handle_transfer(
kern_handle_t vmo = KERN_HANDLE_INVALID;
kern_status_t status = kern_handle_transfer(
KERN_HANDLE_INVALID,
mapping->m_vmo,
KERN_HANDLE_INVALID,
KERN_HANDLE_INVALID,
HANDLE_TRANSFER_COPY,
&vmo);
if (status != KERN_OK) {
kern_tracef("kern_handle_transfer failed %d", status);
return status;
}
f->f_ref++;
*out_err = SUCCESS;