mirror of
https://github.com/libgit2/libgit2.git
synced 2026-06-22 06:26:26 +00:00
Remove broken support for write in emulated mmap
* Emulated mmap based write without pagefault handling is not
possible since IO happens outside of call to mmap and data is
written to mapped memory
* Potential emulation using userfaultfd() might be possible
This commit is contained in:
committed by
Edward Thomson
parent
c0e16a467d
commit
d77c073f09
11
src/posix.c
11
src/posix.c
@@ -239,14 +239,15 @@ int p_mmap(git_map *out, size_t len, int prot, int flags, int fd, off64_t offset
|
||||
{
|
||||
GIT_MMAP_VALIDATE(out, len, prot, flags);
|
||||
|
||||
out->data = NULL;
|
||||
out->len = 0;
|
||||
|
||||
if ((prot & GIT_PROT_WRITE) && ((flags & GIT_MAP_TYPE) == GIT_MAP_SHARED)) {
|
||||
git_error_set(GIT_ERROR_OS, "trying to map shared-writeable");
|
||||
/* writes cannot be emulated without handling pagefaults since write happens by
|
||||
* writing to mapped memory */
|
||||
if (prot & GIT_PROT_WRITE) {
|
||||
git_error_set(GIT_ERROR_OS, "trying to map %s-writeable",
|
||||
((flags & GIT_MAP_TYPE) == GIT_MAP_SHARED) ? "shared": "private");
|
||||
return -1;
|
||||
}
|
||||
|
||||
out->len = 0;
|
||||
out->data = git__malloc(len);
|
||||
GIT_ERROR_CHECK_ALLOC(out->data);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user