Browse Source

Kernel: Make Process::m_master_tls_region a WeakPtr

Let's not keep raw Region* variables around like that when it's so easy
to avoid it.
Andreas Kling 5 năm trước cách đây
mục cha
commit
5af95139fa
2 tập tin đã thay đổi với 3 bổ sung3 xóa
  1. 2 2
      Kernel/Process.cpp
  2. 1 1
      Kernel/Process.h

+ 2 - 2
Kernel/Process.cpp

@@ -721,7 +721,7 @@ pid_t Process::sys$fork(RegisterState& regs)
         child_region.map(child->page_directory());
 
         if (&region == m_master_tls_region)
-            child->m_master_tls_region = &child_region;
+            child->m_master_tls_region = child_region.make_weak_ptr();
     }
 
     child->m_extra_gids = m_extra_gids;
@@ -963,7 +963,7 @@ int Process::do_exec(NonnullRefPtr<FileDescription> main_program_description, Ve
     m_unveiled_paths.clear();
 
     // Copy of the master TLS region that we will clone for new threads
-    m_master_tls_region = master_tls_region;
+    m_master_tls_region = master_tls_region->make_weak_ptr();
 
     auto main_program_metadata = main_program_description->metadata();
 

+ 1 - 1
Kernel/Process.h

@@ -498,7 +498,7 @@ private:
     RefPtr<ProcessTracer> m_tracer;
     OwnPtr<ELFLoader> m_elf_loader;
 
-    Region* m_master_tls_region { nullptr };
+    WeakPtr<Region> m_master_tls_region;
     size_t m_master_tls_size { 0 };
     size_t m_master_tls_alignment { 0 };