1
0
mirror of https://github.com/systemd/systemd.git synced 2024-10-28 11:55:44 +03:00

memfd: map unsealed files as MAP_SHARED

We need to map sealed files as MAP_PRIVATE so far as the kernel treats
MAP_SHARED as writable mapping (you can run mprotect(PROT_WRITE) at any
time on those). However, unsealed files must be mapped as MAP_SHARED.
Otherwise, we never end up writing to the real file.
This commit is contained in:
David Herrmann 2014-08-18 13:05:48 +02:00
parent c7dab73a5f
commit 23972f4244

View File

@ -176,7 +176,11 @@ int sd_memfd_map(sd_memfd *m, uint64_t offset, size_t size, void **p) {
if (sealed < 0)
return sealed;
q = mmap(NULL, size, sealed ? PROT_READ : PROT_READ|PROT_WRITE, MAP_PRIVATE, m->fd, offset);
if (sealed)
q = mmap(NULL, size, PROT_READ, MAP_PRIVATE, m->fd, offset);
else
q = mmap(NULL, size, PROT_READ | PROT_WRITE, MAP_SHARED, m->fd, offset);
if (q == MAP_FAILED)
return -errno;