Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 83183
b: refs/heads/master
c: 9157f90
h: refs/heads/master
i:
  83181: 2c8d51c
  83179: eab79f2
  83175: cb19e7e
  83167: b54e5e8
v: v3
  • Loading branch information
Jeff Dike authored and Linus Torvalds committed Feb 5, 2008
1 parent 44ac22b commit bd36881
Show file tree
Hide file tree
Showing 5 changed files with 33 additions and 50 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: b8bec829c90d45a2d115a52f3a928ce841afc3d4
refs/heads/master: 9157f90f08f7db3188cd06971f41cb2ba5646e57
1 change: 0 additions & 1 deletion trunk/arch/um/kernel/ksyms.c
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@ EXPORT_SYMBOL(get_kmem_end);

EXPORT_SYMBOL(high_physmem);
EXPORT_SYMBOL(empty_zero_page);
EXPORT_SYMBOL(um_virt_to_phys);
EXPORT_SYMBOL(handle_page_fault);
EXPORT_SYMBOL(find_iomem);

Expand Down
43 changes: 0 additions & 43 deletions trunk/arch/um/kernel/process.c
Original file line number Diff line number Diff line change
Expand Up @@ -255,49 +255,6 @@ void cpu_idle(void)
default_idle();
}

void *um_virt_to_phys(struct task_struct *task, unsigned long addr,
pte_t *pte_out)
{
pgd_t *pgd;
pud_t *pud;
pmd_t *pmd;
pte_t *pte;
pte_t ptent;

if (task->mm == NULL)
return ERR_PTR(-EINVAL);
pgd = pgd_offset(task->mm, addr);
if (!pgd_present(*pgd))
return ERR_PTR(-EINVAL);

pud = pud_offset(pgd, addr);
if (!pud_present(*pud))
return ERR_PTR(-EINVAL);

pmd = pmd_offset(pud, addr);
if (!pmd_present(*pmd))
return ERR_PTR(-EINVAL);

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

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

char *current_cmd(void)
{
#if defined(CONFIG_SMP) || defined(CONFIG_HIGHMEM)
return "(Unknown)";
#else
void *addr = um_virt_to_phys(current, current->mm->arg_start, NULL);
return IS_ERR(addr) ? "(Unknown)": __va((unsigned long) addr);
#endif
}

void dump_thread(struct pt_regs *regs, struct user *u)
{
}
Expand Down
34 changes: 32 additions & 2 deletions trunk/arch/um/kernel/skas/uaccess.c
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,38 @@
#include "kern_util.h"
#include "os.h"

extern void *um_virt_to_phys(struct task_struct *task, unsigned long addr,
pte_t *pte_out);
static void *um_virt_to_phys(struct task_struct *task, unsigned long addr,
pte_t *pte_out)
{
pgd_t *pgd;
pud_t *pud;
pmd_t *pmd;
pte_t *pte;
pte_t ptent;

if (task->mm == NULL)
return ERR_PTR(-EINVAL);
pgd = pgd_offset(task->mm, addr);
if (!pgd_present(*pgd))
return ERR_PTR(-EINVAL);

pud = pud_offset(pgd, addr);
if (!pud_present(*pud))
return ERR_PTR(-EINVAL);

pmd = pmd_offset(pud, addr);
if (!pmd_present(*pmd))
return ERR_PTR(-EINVAL);

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

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

static unsigned long maybe_map(unsigned long virt, int is_write)
{
Expand Down
3 changes: 0 additions & 3 deletions trunk/include/asm-um/pgtable.h
Original file line number Diff line number Diff line change
Expand Up @@ -31,9 +31,6 @@

extern pgd_t swapper_pg_dir[PTRS_PER_PGD];

extern void *um_virt_to_phys(struct task_struct *task, unsigned long virt,
pte_t *pte_out);

/* zero page used for uninitialized stuff */
extern unsigned long *empty_zero_page;

Expand Down

0 comments on commit bd36881

Please sign in to comment.