Clean up AMD64 memory management code, remove dependency on pd.lock
This commit is contained in:
@@ -24,18 +24,18 @@
|
||||
|
||||
static void* sys_get_user_buffer (struct proc* proc, uintptr_t uvaddr, size_t size) {
|
||||
struct limine_hhdm_response* hhdm = limine_hhdm_request.response;
|
||||
spin_lock_ctx_t ctxprpd;
|
||||
spin_lock_ctx_t ctxpg;
|
||||
|
||||
spin_lock (&proc->procgroup->pd.lock, &ctxprpd);
|
||||
spin_lock (&proc->procgroup->lock, &ctxpg);
|
||||
|
||||
if (!mm_validate_buffer (&proc->procgroup->pd, (uintptr_t)uvaddr, size, 0)) {
|
||||
spin_unlock (&proc->procgroup->pd.lock, &ctxprpd);
|
||||
if (!mm_validate_buffer (&proc->procgroup->pd, (uintptr_t)uvaddr, size)) {
|
||||
spin_unlock (&proc->procgroup->lock, &ctxpg);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
uintptr_t out_paddr = mm_v2p (&proc->procgroup->pd, uvaddr, 0);
|
||||
uintptr_t out_paddr = mm_v2p (&proc->procgroup->pd, uvaddr);
|
||||
|
||||
spin_unlock (&proc->procgroup->pd.lock, &ctxprpd);
|
||||
spin_unlock (&proc->procgroup->lock, &ctxpg);
|
||||
|
||||
uintptr_t out_kvaddr = (uintptr_t)hhdm->offset + out_paddr;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user