Skip to content

Commit

Permalink
staging: tidspbridge: add pud code
Browse files Browse the repository at this point in the history
And fix the following warning for passing an incorrect
variable type.

../tiomap3430.c: In function 'user_va2_pa':
../tiomap3430.c:1555:
    warning: passing argument 1 of 'pmd_offset' from
    incompatible pointer type
arch/arm/include/asm/pgtable-2level.h:156:
    note: expected 'struct pud_t *' but argument is of
    type 'pmdval_t (*)[2]'

While at it, eliminate 'if' nesting to increase readability.

Signed-off-by: Omar Ramirez Luna <omar.ramirez@copitl.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  • Loading branch information
Omar Ramirez Luna authored and Greg Kroah-Hartman committed Jul 6, 2012
1 parent 0e7e10f commit a454ad1
Showing 1 changed file with 17 additions and 10 deletions.
27 changes: 17 additions & 10 deletions drivers/staging/tidspbridge/core/tiomap3430.c
Original file line number Diff line number Diff line change
Expand Up @@ -1547,20 +1547,27 @@ static int bridge_brd_mem_un_map(struct bridge_dev_context *dev_ctxt,
static u32 user_va2_pa(struct mm_struct *mm, u32 address)
{
pgd_t *pgd;
pud_t *pud;
pmd_t *pmd;
pte_t *ptep, pte;

pgd = pgd_offset(mm, address);
if (!(pgd_none(*pgd) || pgd_bad(*pgd))) {
pmd = pmd_offset(pgd, address);
if (!(pmd_none(*pmd) || pmd_bad(*pmd))) {
ptep = pte_offset_map(pmd, address);
if (ptep) {
pte = *ptep;
if (pte_present(pte))
return pte & PAGE_MASK;
}
}
if (pgd_none(*pgd) || pgd_bad(*pgd))
return 0;

pud = pud_offset(pgd, address);
if (pud_none(*pud) || pud_bad(*pud))
return 0;

pmd = pmd_offset(pud, address);
if (pmd_none(*pmd) || pmd_bad(*pmd))
return 0;

ptep = pte_offset_map(pmd, address);
if (ptep) {
pte = *ptep;
if (pte_present(pte))
return pte & PAGE_MASK;
}

return 0;
Expand Down

0 comments on commit a454ad1

Please sign in to comment.