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:
parent
c7dab73a5f
commit
23972f4244
@ -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;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user