Просмотр исходного кода

UserspaceEmulator: Mark mmap and shbuf regions as initialized up front

A lot of software relies on the fact that mmap and shbuf memory is
zeroed out by the kernel, so we should consider it initialized from the
shadow bit perspective as well.
Andreas Kling 5 лет назад
Родитель
Сommit
2a2e76c802

+ 3 - 1
DevTools/UserspaceEmulator/MmapRegion.cpp

@@ -26,6 +26,7 @@
 
 #include "MmapRegion.h"
 #include "Emulator.h"
+#include <string.h>
 #include <sys/mman.h>
 
 namespace UserspaceEmulator {
@@ -51,7 +52,8 @@ MmapRegion::MmapRegion(u32 base, u32 size, int prot)
     : Region(base, size)
     , m_prot(prot)
 {
-    m_shadow_data = (u8*)calloc(1, size);
+    m_shadow_data = (u8*)malloc(size);
+    memset(m_shadow_data, 1, size);
 }
 
 MmapRegion::~MmapRegion()

+ 3 - 1
DevTools/UserspaceEmulator/SharedBufferRegion.cpp

@@ -28,6 +28,7 @@
 #include "Emulator.h"
 #include <Kernel/API/Syscall.h>
 #include <serenity.h>
+#include <string.h>
 #include <sys/mman.h>
 
 namespace UserspaceEmulator {
@@ -42,7 +43,8 @@ SharedBufferRegion::SharedBufferRegion(u32 base, u32 size, int shbuf_id, u8* hos
     , m_data(host_data)
     , m_shbuf_id(shbuf_id)
 {
-    m_shadow_data = (u8*)calloc(1, size);
+    m_shadow_data = (u8*)malloc(size);
+    memset(m_shadow_data, 1, size);
 }
 
 SharedBufferRegion::~SharedBufferRegion()