Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8f5cd76c authored by Hugh Dickins's avatar Hugh Dickins Committed by Linus Torvalds
Browse files

[PATCH] mm: uml pte atomicity



There's usually a good reason when a pte is examined without the lock; but it
makes me nervous when the pointer is dereferenced more than once.

Signed-off-by: default avatarHugh Dickins <hugh@veritas.com>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent a7e4705b
Loading
Loading
Loading
Loading
+5 −3
Original line number Diff line number Diff line
@@ -222,6 +222,7 @@ void *um_virt_to_phys(struct task_struct *task, unsigned long addr,
	pud_t *pud;
	pmd_t *pmd;
	pte_t *pte;
	pte_t ptent;

	if(task->mm == NULL) 
		return(ERR_PTR(-EINVAL));
@@ -238,12 +239,13 @@ void *um_virt_to_phys(struct task_struct *task, unsigned long addr,
		return(ERR_PTR(-EINVAL));

	pte = pte_offset_kernel(pmd, addr);
	if(!pte_present(*pte)) 
	ptent = *pte;
	if(!pte_present(ptent))
		return(ERR_PTR(-EINVAL));

	if(pte_out != NULL)
		*pte_out = *pte;
	return((void *) (pte_val(*pte) & PAGE_MASK) + (addr & ~PAGE_MASK));
		*pte_out = ptent;
	return((void *) (pte_val(ptent) & PAGE_MASK) + (addr & ~PAGE_MASK));
}

char *current_cmd(void)