1
0
mirror of https://github.com/systemd/systemd.git synced 2024-11-02 19:21:53 +03:00

bus: map sealed memfds as MAP_PRIVATE

Mapping files as MAP_SHARED is handled by the kernel as 'writable'
mapping. Always! Even with PROT_READ. Reason for that is,
mprotect(PROT_WRITE) could change the mapping underneath and currently
there is no kernel infrastructure to add protection there. This might
change in the future, but until then, map sealed files as MAP_PRIVATE so
we don't get EPERM.
This commit is contained in:
David Herrmann 2014-08-18 23:54:10 +02:00
parent 9da465df2a
commit 1ac36c67dd

View File

@ -2840,7 +2840,7 @@ int bus_body_part_map(struct bus_body_part *part) {
psz = PAGE_ALIGN(part->size);
if (part->memfd >= 0)
p = mmap(NULL, psz, PROT_READ, MAP_SHARED, part->memfd, 0);
p = mmap(NULL, psz, PROT_READ, MAP_PRIVATE, part->memfd, 0);
else if (part->is_zero)
p = mmap(NULL, psz, PROT_READ, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0);
else